From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 17025 invoked from network); 19 Mar 2022 20:12:59 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 19 Mar 2022 20:12:59 -0000 Content-Type: multipart/mixed; boundary="===============6256699368890913463==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_Llvm13?= To: ml@inbox.vuxu.org From: motorto Reply-to: ml@inbox.vuxu.org Message-ID: Date: Sat, 19 Mar 2022 21:12:58 +0100 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============6256699368890913463== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IG1vdG9ydG8gYWdhaW5zdCBtYXN0ZXIgb24g dGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL21vdG9ydG8v dm9pZC1wYWNrYWdlcyBsbHZtMTMKaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1w YWNrYWdlcy9wdWxsLzM2MjI5CgpMbHZtMTMKVGhpcyBhZGRzIExMVk0gMTMgYW5kIHVwZGF0ZXMg ZnJvbSBMTFZNIDEyLg0KDQpXb3JrLWluLXByb2dyZXNzDQoNClRoZSBmb2xsb3dpbmcgcGFja2Fn ZXMgd2VyZSByZW1vdmVkOg0KICogYmVpZ25ldCAtLSB1cHN0cmVhbSBpcyBkZWFkDQogKiBydW5k aXJkIC0tICBoYXMgYmVlbiBkZXByZWNhdGVkIGJ5IHVwc3RyZWFtIHdoaWNoIHJlY29tbWVuZHMg dXNpbmcgZHVtYl9ydW50aW1lX2Rpcg0KDQpUaGUgZm9sbG93aW5nIHBhY2thZ2VzIHdlcmUgdXBk YXRlZCBvciBwYXRjaGVkOg0KICogaXNwYw0KICogcXRjcmVhdG9yDQogKiByaXZlcg0KICogemln DQoNClJlYnVpbHQgcGFja2FnZXM6DQoNCihyZWJ1aWx0IGJhc2VkIG9uIG91dHB1dCBvZjogIGB4 cmV2c2hsaWIgbGlibGx2bXsxMiwxM31gICkNCg0KDQoqIFNQSVJWLUxMVk0tVHJhbnNsYXRvcg0K KiBiY2MNCiogYnBmdHJhY2UgDQoqIGNjbHMgDQoqIGNsYXp5IA0KKiBjb2RlbGl0ZSANCiogZ2hk bA0KKiBnbm9tZS1idWlsZGVyDQoqIGluY2x1ZGUtd2hhdC15b3UtdXNlIA0KKiBqdUNpKysgDQoq IGtkZXZlbG9wIA0KKiBsZGMNCiogbWVzYSANCiogcXQ1IA0KKiBydGFncyANCiogcnVzdA0KKiBz aGlib2tlbjIgDQoqIHRpbGl4DQoNClVwZGF0ZWQgVGVtcGxhdGVzOg0KDQoqIENocm9taXVtDQoN CihJIGFtIHByb2JhYmx5IG1pc3Npbmcgc29tZSBwYWNrYWdlcykNCg0KDQpUaGFua3MgQERCTG91 aXMgZm9yIHlvdXIgaGFyZCB3b3JrISANCg0KIFtjaSBza2lwXQ0KIA0KIEkgbnVrZWQgdGhlICMz NTg5NQoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9p ZC1wYWNrYWdlcy9wdWxsLzM2MjI5LnBhdGNoIGlzIGF0dGFjaGVk --===============6256699368890913463== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-llvm13-36229.patch" RnJvbSAyNjc0YzljYWRkZThhNzU4YmMxODJiNTdhYjhiYzEwOTc0Mzg3YzQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9u aT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRlOiBGcmksIDMxIERlYyAy MDIxIDE2OjIxOjMwICswMjAwClN1YmplY3Q6IFtQQVRDSCAwMS8zMF0gTmV3IHBhY2thZ2U6IGxs 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 IDgzYjU3ODNjYjAyNi4uMWE1ZWI1NzNhZWZiIDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisr KyBiL2NvbW1vbi9zaGxpYnMKQEAgLTk3MywxMSArOTczLDEyIEBAIGxpYnVjaGFyZGV0LnNvLjAg dWNoYXJkZXQtMC4wLjZfMQogbGliZ3Rrc291cmNldmlld21tLTMuMC5zby4wIGd0a3NvdXJjZXZp ZXdtbS0zLjIuMF8xCiBsaWJ5YWpsLnNvLjIgeWFqbC0yLjAuMV8xCiBsaWJjb25mdXNlLnNvLjIg Y29uZnVzZS0zLjIuMV8xCi1saWJsbGRiLnNvLjEyIGxsZGItMTIuMC4wXzEKLWxpYmNsYW5nLnNv LjEyIGxpYmNsYW5nLTEyLjAuMF8xCi1saWJjbGFuZy1jcHAuc28uMTIgbGliY2xhbmctY3BwLTEy LjAuMF8xCitsaWJsbGRiLnNvLjEzIGxsZGItMTMuMC4wXzEKK2xpYmNsYW5nLnNvLjEzIGxpYmNs YW5nLTEzLjAuMF8xCitsaWJjbGFuZy1jcHAuc28uMTMgbGliY2xhbmctY3BwLTEzLjAuMF8xCiBs aWJMTFZNLTExLnNvIGxpYmxsdm0xMS0xMS4wLjBfMQogbGliTExWTS0xMi5zbyBsaWJsbHZtMTIt MTIuMC4wXzEKK2xpYkxMVk0tMTMuc28gbGlibGx2bTEzLTEzLjAuMF8xCiBsaWJpc29mcy5zby42 IGxpYmlzb2ZzLTAuNi4yNF8xCiBsaWJtcGFjay5zby4wIGxpYm1wYWNrLTEuMC41XzEKIGxpYkdl b0lQLnNvLjEgbGliZ2VvaXAtMS40LjhfMQpAQCAtNDE0MiwzICs0MTQzLDEyIEBAIGxpYnJ6X3V0 aWwuc28uMC4zLjQgcml6aW4tMC4zLjRfMQogbGlicnpfbGFuZy5zby4wLjMuNCByaXppbi0wLjMu NF8xCiBsaWJyel9zZWFyY2guc28uMC4zLjQgcml6aW4tMC4zLjRfMQogbGlicnpfYmluLnNvLjAu My40IHJpemluLTAuMy40XzEKK2xpYm9tcC5zbyBsaWJvbXAtMTMuMC4wXzEKK2xpYm9tcHRhcmdl dC5ydGwuYW1kZ3B1LnNvIGxpYm9tcC0xMy4wLjBfMQorbGlib21wdGFyZ2V0LnJ0bC5jdWRhLnNv IGxpYm9tcC0xMy4wLjBfMQorbGlib21wdGFyZ2V0LnJ0bC54ODZfNjQuc28gbGlib21wLTEzLjAu MF8xCitsaWJhcmNoZXIuc28gbGlib21wLTEzLjAuMF8xCitsaWJvbXB0YXJnZXQuc28gbGlib21w LTEzLjAuMF8xCitsaWJsbGRiSW50ZWxGZWF0dXJlcy5zby4xMyBsbGRiLTEzLjAuMF8xCitsaWJM VE8uc28uMTMgbGx2bTEzLTEzLjAuMF8xCitsaWJSZW1hcmtzLnNvLjEzIGxsdm0xMy0xMy4wLjBf MQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jbGFuZyBiL3NyY3BrZ3MvY2xhbmcKaW5kZXggY2Q2MGZk N2E5ODFiLi5kNjM2NmQ3ZDNiOTUgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvY2xhbmcKKysrIGIvc3Jj cGtncy9jbGFuZwpAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQorbGx2bTEzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9jbGFuZy1hbmFseXplciBiL3NyY3BrZ3MvY2xhbmctYW5hbHl6ZXIKaW5kZXggY2Q2MGZkN2E5 ODFiLi5kNjM2NmQ3ZDNiOTUgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvY2xhbmctYW5hbHl6ZXIKKysr IGIvc3JjcGtncy9jbGFuZy1hbmFseXplcgpAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQorbGx2bTEzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvc3JjcGtncy9jbGFuZy10b29scy1leHRyYSBiL3NyY3BrZ3MvY2xhbmctdG9vbHMt ZXh0cmEKaW5kZXggY2Q2MGZkN2E5ODFiLi5kNjM2NmQ3ZDNiOTUgMTIwMDAwCi0tLSBhL3NyY3Br Z3MvY2xhbmctdG9vbHMtZXh0cmEKKysrIGIvc3JjcGtncy9jbGFuZy10b29scy1leHRyYQpAQCAt MSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTEzClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJjbGFuZyBiL3Ny Y3BrZ3MvbGliY2xhbmcKaW5kZXggY2Q2MGZkN2E5ODFiLi5kNjM2NmQ3ZDNiOTUgMTIwMDAwCi0t LSBhL3NyY3BrZ3MvbGliY2xhbmcKKysrIGIvc3JjcGtncy9saWJjbGFuZwpAQCAtMSArMSBAQAot bGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTEzClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJjbGFuZy1jcHAgYi9zcmNwa2dz L2xpYmNsYW5nLWNwcAppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0t IGEvc3JjcGtncy9saWJjbGFuZy1jcHAKKysrIGIvc3JjcGtncy9saWJjbGFuZy1jcHAKQEAgLTEg KzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliY3h4IGIvc3JjcGtn cy9saWJjeHgKaW5kZXggY2Q2MGZkN2E5ODFiLi5kNjM2NmQ3ZDNiOTUgMTIwMDAwCi0tLSBhL3Ny Y3BrZ3MvbGliY3h4CisrKyBiL3NyY3BrZ3MvbGliY3h4CkBAIC0xICsxIEBACi1sbHZtMTIKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmN4eC1kZXZlbCBiL3NyY3BrZ3MvbGliY3h4LWRl dmVsCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1IDEyMDAwMAotLS0gYS9zcmNwa2dz L2xpYmN4eC1kZXZlbAorKysgYi9zcmNwa2dzL2xpYmN4eC1kZXZlbApAQCAtMSArMSBAQAotbGx2 bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTEzClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJjeHhhYmkgYi9zcmNwa2dzL2xpYmN4 eGFiaQppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtn cy9saWJjeHhhYmkKKysrIGIvc3JjcGtncy9saWJjeHhhYmkKQEAgLTEgKzEgQEAKLWxsdm0xMgpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliY3h4YWJpLWRldmVsIGIvc3JjcGtncy9saWJj eHhhYmktZGV2ZWwKaW5kZXggY2Q2MGZkN2E5ODFiLi5kNjM2NmQ3ZDNiOTUgMTIwMDAwCi0tLSBh L3NyY3BrZ3MvbGliY3h4YWJpLWRldmVsCisrKyBiL3NyY3BrZ3MvbGliY3h4YWJpLWRldmVsCkBA IC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTMKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmxsdm0xMyBi L3NyY3BrZ3MvbGlibGx2bTEzCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAw MC4uZDYzNjZkN2QzYjk1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJsbHZtMTMKQEAg LTAsMCArMSBAQAorbGx2bTEzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9saWJvbXAgYi9zcmNwa2dzL2xpYm9tcAppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2 MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJvbXAKKysrIGIvc3JjcGtncy9saWJv bXAKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0x MwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlib21w LWRldmVsIGIvc3JjcGtncy9saWJvbXAtZGV2ZWwKaW5kZXggY2Q2MGZkN2E5ODFiLi5kNjM2NmQ3 ZDNiOTUgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGlib21wLWRldmVsCisrKyBiL3NyY3BrZ3MvbGli b21wLWRldmVsCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dz L2xsZCBiL3NyY3BrZ3MvbGxkCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1IDEyMDAw MAotLS0gYS9zcmNwa2dzL2xsZAorKysgYi9zcmNwa2dzL2xsZApAQCAtMSArMSBAQAotbGx2bTEy ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTEzClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbGQtZGV2ZWwgYi9zcmNwa2dzL2xsZC1kZXZl bAppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9s bGQtZGV2ZWwKKysrIGIvc3JjcGtncy9sbGQtZGV2ZWwKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGxkYiBiL3NyY3BrZ3MvbGxkYgppbmRleCBjZDYwZmQ3 YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9sbGRiCisrKyBiL3NyY3Br Z3MvbGxkYgpAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor bGx2bTEzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9s bGRiLWRldmVsIGIvc3JjcGtncy9sbGRiLWRldmVsCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZk N2QzYjk1IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xsZGItZGV2ZWwKKysrIGIvc3JjcGtncy9sbGRi LWRldmVsCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCits bHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xs dm0tbGlidW53aW5kIGIvc3JjcGtncy9sbHZtLWxpYnVud2luZAppbmRleCBjZDYwZmQ3YTk4MWIu LmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9sbHZtLWxpYnVud2luZAorKysgYi9z cmNwa2dzL2xsdm0tbGlidW53aW5kCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xsdm0tbGlidW53aW5kLWRldmVsIGIvc3JjcGtncy9sbHZtLWxpYnVud2lu ZC1kZXZlbAppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3Jj cGtncy9sbHZtLWxpYnVud2luZC1kZXZlbAorKysgYi9zcmNwa2dzL2xsdm0tbGlidW53aW5kLWRl dmVsCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZt MTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0x My9maWxlcy9sbHZtLUNvbmZpZy1sbHZtLWNvbmZpZy5oIGIvc3JjcGtncy9sbHZtMTMvZmlsZXMv bGx2bS1Db25maWctbGx2bS1jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjJmYTA4YzliZTY5NgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEz L2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmlnLmgKQEAgLTAsMCArMSw5IEBACisjaW5jbHVk ZSA8Yml0cy93b3Jkc2l6ZS5oPgorCisjaWYgX19XT1JEU0laRSA9PSAzMgorI2luY2x1ZGUgImxs dm0tY29uZmlnLTMyLmgiCisjZWxpZiBfX1dPUkRTSVpFID09IDY0CisjaW5jbHVkZSAibGx2bS1j b25maWctNjQuaCIKKyNlbHNlCisjZXJyb3IgIlVua25vd24gd29yZCBzaXplIgorI2VuZGlmCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwMS1maXgtdW53aW5kLWNo YWluLWluY2x1c2lvbi5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDAxLWZp eC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uZTRlYWE3NzgzZTdhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9s bHZtMTMvcGF0Y2hlcy9jbGFuZy0wMDEtZml4LXVud2luZC1jaGFpbi1pbmNsdXNpb24ucGF0Y2gK QEAgLTAsMCArMSw0NCBAQAorRnJvbSAzNTI5NzQxNjlmMGQyYjVkYTNkNTMyMWY1ODhmNWUzYjU5 NDEzMzBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhIEJyYW5jYWxlb25p IDxtaXdheGVAZ21haWwuY29tPgorRGF0ZTogVHVlLCA4IFNlcCAyMDE1IDIyOjE0OjU3ICswMjAw CitTdWJqZWN0OiBbUEFUQ0ggMi83XSBmaXggdW53aW5kIGNoYWluIGluY2x1c2lvbgorCistLS0K KyBsaWIvSGVhZGVycy91bndpbmQuaCB8IDkgKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUg aW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9IZWFkZXJz L3Vud2luZC5oIGIvbGliL0hlYWRlcnMvdW53aW5kLmgKK2luZGV4IDMwM2Q3OTIuLjQ0ZTEwY2Mg MTAwNjQ0CistLS0gYS9jbGFuZy9saWIvSGVhZGVycy91bndpbmQuaAorKysrIGIvY2xhbmcvbGli L0hlYWRlcnMvdW53aW5kLmgKK0BAIC05LDkgKzksNiBAQAorIAorIC8qIFNlZSAiRGF0YSBEZWZp bml0aW9ucyBmb3IgbGliZ2NjX3MiIGluIHRoZSBMaW51eCBTdGFuZGFyZCBCYXNlLiovCisgCist I2lmbmRlZiBfX0NMQU5HX1VOV0lORF9ICistI2RlZmluZSBfX0NMQU5HX1VOV0lORF9ICistCisg I2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBfX2hhc19pbmNsdWRlX25leHQoPHVud2luZC5oPikK KyAvKiBEYXJ3aW4gKGZyb20gMTEueCBvbikgcHJvdmlkZSBhbiB1bndpbmQuaC4gSWYgdGhhdCdz IGF2YWlsYWJsZSwKKyAgKiB1c2UgaXQuIGxpYnVud2luZCB3cmFwcyBzb21lIG9mIGl0cyBkZWZp bml0aW9ucyBpbiAjaWZkZWYgX0dOVV9TT1VSQ0UsCitAQCAtMzksNiArMzYsOSBAQAorICMgZW5k aWYKKyAjZWxzZQorIAorKyNpZm5kZWYgX19DTEFOR19VTldJTkRfSAorKyNkZWZpbmUgX19DTEFO R19VTldJTkRfSAorKworICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAKKyAjaWZkZWYgX19jcGx1c3Bs dXMKK0BAIC0zMjIsNiArMzIyLDcgQEAgX1Vud2luZF9QdHIgX1Vud2luZF9HZXRUZXh0UmVsQmFz ZShzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICopOworIH0KKyAjZW5kaWYKKyAKKysjZW5kaWYgLyog X19DTEFOR19VTldJTkRfSCAqLworKworICNlbmRpZgorIAorLSNlbmRpZiAvKiBfX0NMQU5HX1VO V0lORF9IICovCistLSAKKzIuNS4xCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRjaGVz L2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hl cy9jbGFuZy0wMDItYWRkLW11c2wtdHJpcGxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjI1Njg4ZDQwZGJjMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDAyLWFkZC1tdXNsLXRyaXBsZXMucGF0Y2gKQEAgLTAs MCArMSwxMTAgQEAKKy0tLSBhL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9HbnUuY3BwCisr KysgYi9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvR251LmNwcAorQEAgLTIwODYsNyArMjA4 Niw4IEBAIHZvaWQgR2VuZXJpY19HQ0M6OkdDQ0luc3RhbGxhdGlvbkRldGVjdG9yOjpBZGREZWZh dWx0R0NDUHJlZml4ZXMoCisgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQVJNSEZUcmlwbGVz W10gPSB7ImFybS1saW51eC1nbnVlYWJpaGYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJhcm12N2hsLXJlZGhhdC1saW51eC1nbnVlYWJpIiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJtdjZobC1zdXNlLWxp bnV4LWdudWVhYmkiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJhcm12N2hsLXN1c2UtbGludXgtZ251ZWFiaSJ9OworKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJhcm12N2hsLXN1c2UtbGludXgtZ251ZWFiaSIsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3bC1saW51 eC1nbnVlYWJpaGYifTsKKyAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBBUk1lYkxpYkRpcnNb XSA9IHsiL2xpYiJ9OworICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFSTWViVHJpcGxlc1td ID0geyJhcm1lYi1saW51eC1nbnVlYWJpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiYXJtZWItbGludXgtYW5kcm9pZGVhYmkifTsKK0BAIC0yMTUzLDgg KzIxNTQsNyBAQCB2b2lkIEdlbmVyaWNfR0NDOjpHQ0NJbnN0YWxsYXRpb25EZXRlY3Rvcjo6QWRk RGVmYXVsdEdDQ1ByZWZpeGVzKAorICAgICAgICJwb3dlcnBjNjQtc3VzZS1saW51eCIsICJwb3dl cnBjLW1vbnRhdmlzdGEtbGludXhzcGUifTsKKyAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBQ UENMRUxpYkRpcnNbXSA9IHsiL2xpYjMyIiwgIi9saWIifTsKKyAgIHN0YXRpYyBjb25zdCBjaGFy ICpjb25zdCBQUENMRVRyaXBsZXNbXSA9IHsicG93ZXJwY2xlLWxpbnV4LWdudSIsCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGNsZS11bmtub3du LWxpbnV4LWdudSIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgInBvd2VycGNsZS1saW51eC1tdXNsIn07CisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgInBvd2VycGNsZS11bmtub3duLWxpbnV4LWdudSJ9OworIAorICAg c3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQzY0TGliRGlyc1tdID0geyIvbGliNjQiLCAiL2xp YiJ9OworICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQzY0VHJpcGxlc1tdID0geworQEAg LTIyMzUsNiArMjIzNSw4NyBAQCB2b2lkIEdlbmVyaWNfR0NDOjpHQ0NJbnN0YWxsYXRpb25EZXRl Y3Rvcjo6QWRkRGVmYXVsdEdDQ1ByZWZpeGVzKAorICAgICByZXR1cm47CisgICB9CisgCisrICBp ZiAoVGFyZ2V0VHJpcGxlLmlzTXVzbCgpKSB7CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25z dCBBQXJjaDY0TXVzbFRyaXBsZXNbXSA9IHsiYWFyY2g2NC1saW51eC1tdXNsIn07CisrICAgIHN0 YXRpYyBjb25zdCBjaGFyICpjb25zdCBBUk1IRk11c2xUcmlwbGVzW10gPSB7CisrICAgICAgICAi YXJtLWxpbnV4LW11c2xlYWJpaGYiLCAiYXJtdjdsLWxpbnV4LW11c2xlYWJpaGYiCisrICAgIH07 CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBBUk1NdXNsVHJpcGxlc1tdID0geyJhcm0t bGludXgtbXVzbGVhYmkifTsKKysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFg4Nl82NE11 c2xUcmlwbGVzW10gPSB7Ing4Nl82NC1saW51eC1tdXNsIn07CisrICAgIHN0YXRpYyBjb25zdCBj aGFyICpjb25zdCBYODZNdXNsVHJpcGxlc1tdID0geyJpNjg2LWxpbnV4LW11c2wifTsKKysgICAg c3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IE1JUFNNdXNsVHJpcGxlc1tdID0geworKyAgICAgICAg Im1pcHMtbGludXgtbXVzbCIsICJtaXBzZWwtbGludXgtbXVzbCIsCisrICAgICAgICAibWlwc2Vs LWxpbnV4LW11c2xoZiIsICJtaXBzLWxpbnV4LW11c2xoZiIKKysgICAgfTsKKysgICAgc3RhdGlj IGNvbnN0IGNoYXIgKmNvbnN0IFBQQ011c2xUcmlwbGVzW10gPSB7InBvd2VycGMtbGludXgtbXVz bCJ9OworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDTEVNdXNsVHJpcGxlc1tdID0g eyJwb3dlcnBjbGUtbGludXgtbXVzbCJ9OworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qg UFBDNjRNdXNsVHJpcGxlc1tdID0geyJwb3dlcnBjNjQtbGludXgtbXVzbCJ9OworKyAgICBzdGF0 aWMgY29uc3QgY2hhciAqY29uc3QgUFBDNjRMRU11c2xUcmlwbGVzW10gPSB7InBvd2VycGM2NGxl LWxpbnV4LW11c2wifTsKKysKKysgICAgc3dpdGNoIChUYXJnZXRUcmlwbGUuZ2V0QXJjaCgpKSB7 CisrICAgIGNhc2UgbGx2bTo6VHJpcGxlOjphYXJjaDY0OgorKyAgICAgIExpYkRpcnMuYXBwZW5k KGJlZ2luKEFBcmNoNjRMaWJEaXJzKSwgZW5kKEFBcmNoNjRMaWJEaXJzKSk7CisrICAgICAgVHJp cGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oQUFyY2g2NE11c2xUcmlwbGVzKSwgZW5kKEFBcmNoNjRN dXNsVHJpcGxlcykpOworKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKEFBcmNoNjRM aWJEaXJzKSwgZW5kKEFBcmNoNjRMaWJEaXJzKSk7CisrICAgICAgQmlhcmNoVHJpcGxlQWxpYXNl cy5hcHBlbmQoYmVnaW4oQUFyY2g2NE11c2xUcmlwbGVzKSwgZW5kKEFBcmNoNjRNdXNsVHJpcGxl cykpOworKyAgICAgIGJyZWFrOworKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6YXJtOgorKyAgICAg IExpYkRpcnMuYXBwZW5kKGJlZ2luKEFSTUxpYkRpcnMpLCBlbmQoQVJNTGliRGlycykpOworKyAg ICAgIGlmIChUYXJnZXRUcmlwbGUuZ2V0RW52aXJvbm1lbnQoKSA9PSBsbHZtOjpUcmlwbGU6Ok11 c2xFQUJJSEYpIHsKKysgICAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKEFSTUhGTXVz bFRyaXBsZXMpLCBlbmQoQVJNSEZNdXNsVHJpcGxlcykpOworKyAgICAgIH0gZWxzZSB7CisrICAg ICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBUk1NdXNsVHJpcGxlcyksIGVuZChBUk1N dXNsVHJpcGxlcykpOworKyAgICAgIH0KKysgICAgICBicmVhazsKKysgICAgY2FzZSBsbHZtOjpU cmlwbGU6Ong4Nl82NDoKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihYODZfNjRMaWJEaXJz KSwgZW5kKFg4Nl82NExpYkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdp bihYODZfNjRNdXNsVHJpcGxlcyksIGVuZChYODZfNjRNdXNsVHJpcGxlcykpOworKyAgICAgIEJp YXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFg4NkxpYkRpcnMpLCBlbmQoWDg2TGliRGlycykpOwor KyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nk11c2xUcmlwbGVzKSwg ZW5kKFg4Nk11c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7CisrICAgIGNhc2UgbGx2bTo6VHJp cGxlOjp4ODY6CisrICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2TGliRGlycyksIGVuZChY ODZMaWJEaXJzKSk7CisrICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oWDg2TXVzbFRy aXBsZXMpLCBlbmQoWDg2TXVzbFRyaXBsZXMpKTsKKysgICAgICBCaWFyY2hMaWJEaXJzLmFwcGVu ZChiZWdpbihYODZfNjRMaWJEaXJzKSwgZW5kKFg4Nl82NExpYkRpcnMpKTsKKysgICAgICBCaWFy Y2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihYODZfNjRNdXNsVHJpcGxlcyksIGVuZChYODZf NjRNdXNsVHJpcGxlcykpOworKyAgICAgIGJyZWFrOworKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6 bWlwczoKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihNSVBTTGliRGlycyksIGVuZChNSVBT TGliRGlycykpOworKyAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKE1JUFNNdXNsVHJp cGxlcyksIGVuZChNSVBTTXVzbFRyaXBsZXMpKTsKKysgICAgICBicmVhazsKKysgICAgY2FzZSBs bHZtOjpUcmlwbGU6OnBwYzoKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihQUENMaWJEaXJz KSwgZW5kKFBQQ0xpYkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQ UENNdXNsVHJpcGxlcyksIGVuZChQUENNdXNsVHJpcGxlcykpOworKyAgICAgIEJpYXJjaExpYkRp cnMuYXBwZW5kKGJlZ2luKFBQQzY0TGliRGlycyksIGVuZChQUEM2NExpYkRpcnMpKTsKKysgICAg ICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUEM2NE11c2xUcmlwbGVzKSwgZW5k KFBQQzY0TXVzbFRyaXBsZXMpKTsKKysgICAgICBicmVhazsKKysgICAgY2FzZSBsbHZtOjpUcmlw bGU6OnBwY2xlOgorKyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQ0xFTGliRGlycyksIGVu ZChQUENMRUxpYkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUENM RU11c2xUcmlwbGVzKSwgZW5kKFBQQ0xFTXVzbFRyaXBsZXMpKTsKKysgICAgICBCaWFyY2hMaWJE aXJzLmFwcGVuZChiZWdpbihQUEM2NExFTGliRGlycyksIGVuZChQUEM2NExFTGliRGlycykpOwor KyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQzY0TEVNdXNsVHJpcGxl cyksIGVuZChQUEM2NExFTXVzbFRyaXBsZXMpKTsKKysgICAgICBicmVhazsKKysgICAgY2FzZSBs bHZtOjpUcmlwbGU6OnBwYzY0OgorKyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQzY0TGli RGlycyksIGVuZChQUEM2NExpYkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChi ZWdpbihQUEM2NE11c2xUcmlwbGVzKSwgZW5kKFBQQzY0TXVzbFRyaXBsZXMpKTsKKysgICAgICBC aWFyY2hMaWJEaXJzLmFwcGVuZChiZWdpbihQUENMaWJEaXJzKSwgZW5kKFBQQ0xpYkRpcnMpKTsK KysgICAgICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUENNdXNsVHJpcGxlcyks IGVuZChQUENNdXNsVHJpcGxlcykpOworKyAgICAgIGJyZWFrOworKyAgICBjYXNlIGxsdm06OlRy aXBsZTo6cHBjNjRsZToKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihQUEM2NExFTGliRGly cyksIGVuZChQUEM2NExFTGliRGlycykpOworKyAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJl Z2luKFBQQzY0TEVNdXNsVHJpcGxlcyksIGVuZChQUEM2NExFTXVzbFRyaXBsZXMpKTsKKysgICAg ICBCaWFyY2hMaWJEaXJzLmFwcGVuZChiZWdpbihQUENMRUxpYkRpcnMpLCBlbmQoUFBDTEVMaWJE aXJzKSk7CisrICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTEVNdXNs VHJpcGxlcyksIGVuZChQUENMRU11c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7CisrICAgIGRl ZmF1bHQ6CisrICAgICAgYnJlYWs7CisrICAgIH0KKysgICAgVHJpcGxlQWxpYXNlcy5wdXNoX2Jh Y2soVGFyZ2V0VHJpcGxlLnN0cigpKTsKKysgICAgaWYgKFRhcmdldFRyaXBsZS5zdHIoKSAhPSBC aWFyY2hUcmlwbGUuc3RyKCkpCisrICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5wdXNoX2JhY2so QmlhcmNoVHJpcGxlLnN0cigpKTsKKysgICAgcmV0dXJuOworKyAgfQorKworICAgLy8gQW5kcm9p ZCB0YXJnZXRzIHNob3VsZCBub3QgdXNlIEdOVS9MaW51eCB0b29scyBvciBsaWJyYXJpZXMuCisg ICBpZiAoVGFyZ2V0VHJpcGxlLmlzQW5kcm9pZCgpKSB7CisgICAgIHN0YXRpYyBjb25zdCBjaGFy ICpjb25zdCBBQXJjaDY0QW5kcm9pZFRyaXBsZXNbXSA9IHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bGx2bTEzL3BhdGNoZXMvY2xhbmctMDAzLXBwYzY0LWR5bmFtaWMtbGlua2VyLXBhdGgucGF0Y2gg Yi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1w YXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGFkNjQx MmQxZTZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jbGFuZy0w MDMtcHBjNjQtZHluYW1pYy1saW5rZXItcGF0aC5wYXRjaApAQCAtMCwwICsxLDEzIEBACistLS0g YS9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvTGludXguY3BwCisrKysgYi9jbGFuZy9saWIv RHJpdmVyL1Rvb2xDaGFpbnMvTGludXguY3BwCitAQCAtNTA0LDEwICs1MDQsNiBAQCBzdGQ6OnN0 cmluZyBMaW51eDo6Z2V0RHluYW1pY0xpbmtlcihjb25zdCBBcmdMaXN0ICZBcmdzKSBjb25zdCB7 CisgICAgIExvYWRlciA9ICJsZC5zby4xIjsKKyAgICAgYnJlYWs7CisgICBjYXNlIGxsdm06OlRy aXBsZTo6cHBjNjQ6CistICAgIExpYkRpciA9ICJsaWI2NCI7CistICAgIExvYWRlciA9CistICAg ICAgICAodG9vbHM6OnBwYzo6aGFzUFBDQWJpQXJnKEFyZ3MsICJlbGZ2MiIpKSA/ICJsZDY0LnNv LjIiIDogImxkNjQuc28uMSI7CistICAgIGJyZWFrOworICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBw YzY0bGU6CisgICAgIExpYkRpciA9ICJsaWI2NCI7CisgICAgIExvYWRlciA9CmRpZmYgLS1naXQg YS9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNo IGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jbGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjIxZmM4MDAzYzVmMQot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDA0LXBwYzY0 LW11c2wtZWxmdjIucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorLS0tIGEvY2xhbmcvbGliL0Jhc2lj L1RhcmdldHMvUFBDLmgKKysrKyBiL2NsYW5nL2xpYi9CYXNpYy9UYXJnZXRzL1BQQy5oCitAQCAt NDE1LDExICs0MTUsMTAgQEAgcHVibGljOgorICAgICAgIExvbmdEb3VibGVGb3JtYXQgPSAmbGx2 bTo6QVBGbG9hdDo6SUVFRWRvdWJsZSgpOworICAgICB9IGVsc2UgaWYgKChUcmlwbGUuZ2V0QXJj aCgpID09IGxsdm06OlRyaXBsZTo6cHBjNjRsZSkpIHsKKyAgICAgICBEYXRhTGF5b3V0ID0gImUt bTplLWk2NDo2NC1uMzI6NjQiOworLSAgICAgIEFCSSA9ICJlbGZ2MiI7CisgICAgIH0gZWxzZSB7 CisgICAgICAgRGF0YUxheW91dCA9ICJFLW06ZS1pNjQ6NjQtbjMyOjY0IjsKKy0gICAgICBBQkkg PSAiZWxmdjEiOworICAgICB9CisrICAgIEFCSSA9ICJlbGZ2MiI7CisgCisgICAgIGlmIChUcmlw bGUuaXNPU0ZyZWVCU0QoKSB8fCBUcmlwbGUuaXNPU09wZW5CU0QoKSB8fCBUcmlwbGUuaXNNdXNs KCkpIHsKKyAgICAgICBMb25nRG91YmxlV2lkdGggPSBMb25nRG91YmxlQWxpZ24gPSA2NDsKKy0t LSBhL2NsYW5nL2xpYi9Db2RlR2VuL1RhcmdldEluZm8uY3BwCisrKysgYi9jbGFuZy9saWIvQ29k ZUdlbi9UYXJnZXRJbmZvLmNwcAorQEAgLTEwOTI3LDkgKzEwOTI3LDkgQEAgY29uc3QgVGFyZ2V0 Q29kZUdlbkluZm8gJkNvZGVHZW5Nb2R1bGU6OmdldFRhcmdldENvZGVHZW5JbmZvKCkgeworICAg ICAgIHJldHVybiBTZXRDR0luZm8obmV3IEFJWFRhcmdldENvZGVHZW5JbmZvKFR5cGVzLCAvKklz NjRCaXQqLyB0cnVlKSk7CisgCisgICAgIGlmIChUcmlwbGUuaXNPU0JpbkZvcm1hdEVMRigpKSB7 CistICAgICAgUFBDNjRfU1ZSNF9BQklJbmZvOjpBQklLaW5kIEtpbmQgPSBQUEM2NF9TVlI0X0FC SUluZm86OkVMRnYxOworLSAgICAgIGlmIChnZXRUYXJnZXQoKS5nZXRBQkkoKSA9PSAiZWxmdjIi KQorLSAgICAgICAgS2luZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjI7CisrICAgICAgUFBD NjRfU1ZSNF9BQklJbmZvOjpBQklLaW5kIEtpbmQgPSBQUEM2NF9TVlI0X0FCSUluZm86OkVMRnYy OworKyAgICAgIGlmIChnZXRUYXJnZXQoKS5nZXRBQkkoKSA9PSAiZWxmdjEiKQorKyAgICAgICAg S2luZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjE7CisgICAgICAgYm9vbCBJc1NvZnRGbG9h dCA9IENvZGVHZW5PcHRzLkZsb2F0QUJJID09ICJzb2Z0IjsKKyAKKyAgICAgICByZXR1cm4gU2V0 Q0dJbmZvKAorLS0tIGEvY2xhbmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0NsYW5nLmNwcAorKysr IGIvY2xhbmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0NsYW5nLmNwcAorQEAgLTE5MjAsMTQgKzE5 MjAsNyBAQCB2b2lkIENsYW5nOjpBZGRQUENUYXJnZXRBcmdzKGNvbnN0IEFyZ0xpc3QgJkFyZ3Ms CisgICBjb25zdCBsbHZtOjpUcmlwbGUgJlQgPSBnZXRUb29sQ2hhaW4oKS5nZXRUcmlwbGUoKTsK KyAgIGlmIChULmlzT1NCaW5Gb3JtYXRFTEYoKSkgeworICAgICBzd2l0Y2ggKGdldFRvb2xDaGFp bigpLmdldEFyY2goKSkgeworLSAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjQ6IHsKKy0gICAg ICBpZiAoKFQuaXNPU0ZyZWVCU0QoKSAmJiBULmdldE9TTWFqb3JWZXJzaW9uKCkgPj0gMTMpIHx8 CistICAgICAgICAgIFQuaXNPU09wZW5CU0QoKSB8fCBULmlzTXVzbCgpKQorLSAgICAgICAgQUJJ TmFtZSA9ICJlbGZ2MiI7CistICAgICAgZWxzZQorLSAgICAgICAgQUJJTmFtZSA9ICJlbGZ2MSI7 CistICAgICAgYnJlYWs7CistICAgIH0KKysgICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0Ogor ICAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjRsZToKKyAgICAgICBBQklOYW1lID0gImVsZnYy IjsKKyAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY29t cGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMv Y29tcGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjg5M2MwNTlkN2I4ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvbGx2bTEzL3BhdGNoZXMvY29tcGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaApAQCAt MCwwICsxLDExIEBACistLS0gYS9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5p dGl6ZXJfbGludXguY3BwLm9yaWcKKysrKyBiL2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJfY29t bW9uL3Nhbml0aXplcl9saW51eC5jcHAKK0BAIC0xNzk5LDcgKzE3OTksNyBAQAorIAorIHN0YXRp YyBib29sIEFhcmNoNjRHZXRFU1IodWNvbnRleHRfdCAqdWNvbnRleHQsIHU2NCAqZXNyKSB7Cisg ICBzdGF0aWMgY29uc3QgdTMyIGtFc3JNYWdpYyA9IDB4NDU1MzUyMDE7CistICB1OCAqYXV4ID0g dWNvbnRleHQtPnVjX21jb250ZXh0Ll9fcmVzZXJ2ZWQ7CisrICB1OCAqYXV4ID0gcmVpbnRlcnBy ZXRfY2FzdDx1OCAqPih1Y29udGV4dC0+dWNfbWNvbnRleHQuX19yZXNlcnZlZCk7CisgICB3aGls ZSAodHJ1ZSkgeworICAgICBfYWFyY2g2NF9jdHggKmN0eCA9IChfYWFyY2g2NF9jdHggKilhdXg7 CisgICAgIGlmIChjdHgtPnNpemUgPT0gMCkgYnJlYWs7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNhbml0aXplci1wcGM2NC1tdXNsLnBhdGNoIGIvc3Jj cGtncy9sbHZtMTMvcGF0Y2hlcy9jb21waWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjM1ZjE2ZDI0ZjM0MAot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY29tcGlsZXItcnQtc2Fu aXRpemVyLXBwYzY0LW11c2wucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorLS0tIGEvY29tcGlsZXIt cnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNwcAorKysrIGIvY29tcGls ZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNwcAorQEAgLTc0LDYg Kzc0LDEwIEBACisgI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisgI2VuZGlmCisgCisrI2lmIFNB TklUSVpFUl9MSU5VWCAmJiBkZWZpbmVkKF9fcG93ZXJwY19fKQorKyNpbmNsdWRlIDxhc20vcHRy YWNlLmg+CisrI2VuZGlmCisrCisgI2lmIFNBTklUSVpFUl9MSU5VWCAmJiAhU0FOSVRJWkVSX0FO RFJPSUQKKyAjaW5jbHVkZSA8c3lzL3BlcnNvbmFsaXR5Lmg+CisgI2VuZGlmCistLS0gYS9jb21w aWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfcGxhdGZvcm1fbGltaXRzX3Bv c2l4LmNwcAorKysrIGIvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVy X3BsYXRmb3JtX2xpbWl0c19wb3NpeC5jcHAKK0BAIC05Miw3ICs5Miw3IEBACisgIyBpbmNsdWRl IDx1dGltZS5oPgorICMgaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgorICNpZiBkZWZpbmVkKF9fbWlw czY0KSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0g ICAgU0FOSVRJWkVSX1JJU0NWNjQKKysgICAgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgU0FOSVRJ WkVSX1JJU0NWNjQKKyAjICBpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisgIyAgaWZkZWYgX19hcm1f XworIHR5cGVkZWYgc3RydWN0IHVzZXJfZnByZWdzIGVsZl9mcHJlZ3NldF90OworLS0tIGEvY29t cGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX3N0b3B0aGV3b3JsZF9saW51 eF9saWJjZGVwLmNwcAorKysrIGIvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2Fu aXRpemVyX3N0b3B0aGV3b3JsZF9saW51eF9saWJjZGVwLmNwcAorQEAgLTMxLDcgKzMxLDcgQEAK KyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+IC8vIGZvciBwaWRfdAorICNpbmNsdWRlIDxzeXMvdWlv Lmg+IC8vIGZvciBpb3ZlYworICNpbmNsdWRlIDxlbGYuaD4gLy8gZm9yIE5UX1BSU1RBVFVTCist I2lmIChkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBTQU5JVElaRVJfUklTQ1Y2NCkgJiYgIVNBTklU SVpFUl9BTkRST0lECisrI2lmIChkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93 ZXJwY19fKSB8fCBTQU5JVElaRVJfUklTQ1Y2NCkgJiYgIVNBTklUSVpFUl9BTkRST0lECisgLy8g R0xJQkMgMi4yMCsgc3lzL3VzZXIgZG9lcyBub3QgaW5jbHVkZSBhc20vcHRyYWNlLmgKKyAjIGlu Y2x1ZGUgPGFzbS9wdHJhY2UuaD4KKyAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEz L3BhdGNoZXMvY29tcGlsZXItcnQteHJheS1wcGM2NC1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZt MTMvcGF0Y2hlcy9jb21waWxlci1ydC14cmF5LXBwYzY0LW11c2wucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kMGI2MWM4MGM4OTcKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NvbXBpbGVyLXJ0LXhyYXktcHBjNjQtbXVzbC5w YXRjaApAQCAtMCwwICsxLDYyIEBACistLS0gYS9jb21waWxlci1ydC9saWIveHJheS94cmF5X3Bv d2VycGM2NC5pbmMKKysrKyBiL2NvbXBpbGVyLXJ0L2xpYi94cmF5L3hyYXlfcG93ZXJwYzY0Lmlu YworQEAgLTEyLDcgKzEyLDEzIEBACisgCisgI2luY2x1ZGUgPGNzdGRpbnQ+CisgI2luY2x1ZGUg PG11dGV4PgorKyNpZmRlZiBfX0dMSUJDX18KKyAjaW5jbHVkZSA8c3lzL3BsYXRmb3JtL3BwYy5o PgorKyNlbHNlCisrI2luY2x1ZGUgPGNjdHlwZT4KKysjaW5jbHVkZSA8Y3N0cmluZz4KKysjaW5j bHVkZSA8Y3N0ZGxpYj4KKysjZW5kaWYKKyAKKyAjaW5jbHVkZSAieHJheV9kZWZzLmgiCisgCitA QCAtMjAsMTMgKzI2LDQ1IEBAIG5hbWVzcGFjZSBfX3hyYXkgeworIAorIEFMV0FZU19JTkxJTkUg dWludDY0X3QgcmVhZFRTQyh1aW50OF90ICZDUFUpIFhSQVlfTkVWRVJfSU5TVFJVTUVOVCB7Cisg ICBDUFUgPSAwOworKyNpZmRlZiBfX0dMSUJDX18KKyAgIHJldHVybiBfX3BwY19nZXRfdGltZWJh c2UoKTsKKysjZWxzZQorKyAgcmV0dXJuIF9fYnVpbHRpbl9wcGNfZ2V0X3RpbWViYXNlKCk7Cisr I2VuZGlmCisgfQorIAorIGlubGluZSB1aW50NjRfdCBnZXRUU0NGcmVxdWVuY3koKSBYUkFZX05F VkVSX0lOU1RSVU1FTlQgeworICAgc3RhdGljIHN0ZDo6bXV0ZXggTTsKKyAgIHN0ZDo6bG9ja19n dWFyZDxzdGQ6Om11dGV4PiBHdWFyZChNKTsKKysjaWZkZWYgX19HTElCQ19fCisgICByZXR1cm4g X19wcGNfZ2V0X3RpbWViYXNlX2ZyZXEoKTsKKysjZWxzZQorKyAgLyogRklYTUU6IGEgbGVzcyBk aXJ0eSBpbXBsZW1lbnRhdGlvbj8gKi8KKysgIHN0YXRpYyB1aW50NjRfdCBiYXNlOworKyAgaWYg KCFiYXNlKSB7CisrICAgIEZJTEUgKmYgPSBmb3BlbigiL3Byb2MvY3B1aW5mbyIsICJyYiIpOwor KyAgICBpZiAoZikgeworKyAgICAgIHNzaXplX3QgbnI7CisrICAgICAgLyogdmlydHVhbGx5IGFs d2F5cyBiaWcgZW5vdWdoIHRvIGhvbGQgdGhlIGxpbmUgKi8KKysgICAgICBjaGFyIGJ1Zls1MTJd OworKyAgICAgIHdoaWxlIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmKSkgeworKyAgICAgICAg Y2hhciAqcmV0ID0gc3Ryc3RyKGJ1ZiwgInRpbWViYXNlIik7CisrICAgICAgICBpZiAoIXJldCkg eworKyAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysgICAgICAgIHJldCArPSBzaXpl b2YoInRpbWViYXNlIikgLSAxOworKyAgICAgICAgcmV0ID0gc3RyY2hyKHJldCwgJzonKTsKKysg ICAgICAgIGlmICghcmV0KSB7CisrICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgfQorKyAg ICAgICAgYmFzZSA9IHN0cnRvdWwocmV0ICsgMSwgbnVsbHB0ciwgMTApOworKyAgICAgICAgYnJl YWs7CisrICAgICAgfQorKyAgICAgIGZjbG9zZShmKTsKKysgICAgfQorKyAgfQorKyAgcmV0dXJu IGJhc2U7CisrI2VuZGlmCisgfQorIAorIGlubGluZSBib29sIHByb2JlUmVxdWlyZWRDUFVGZWF0 dXJlcygpIFhSQVlfTkVWRVJfSU5TVFJVTUVOVCB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0x My9wYXRjaGVzL2xpYmN4eC1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9saWJj eHgtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJi ZDMxZmZjMmNiMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGli Y3h4LW11c2wucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorLS0tIGEvbGliY3h4L2luY2x1ZGUvbG9j YWxlCisrKysgYi9saWJjeHgvaW5jbHVkZS9sb2NhbGUKK0BAIC03NDIsNyArNzQyLDExIEBAIF9f bnVtX2dldF9zaWduZWRfaW50ZWdyYWwoY29uc3QgY2hhciogX19hLCBjb25zdCBjaGFyKiBfX2Ff ZW5kLAorICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJubyk+ Ojp0eXBlIF9fc2F2ZV9lcnJubyA9IGVycm5vOworICAgICAgICAgZXJybm8gPSAwOworICAgICAg ICAgY2hhciAqX19wMjsKKysjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fR0xJ QkNfXykKKysgICAgICAgIGxvbmcgbG9uZyBfX2xsID0gc3RydG9sbChfX2EsICZfX3AyLCBfX2Jh c2UpOworKyNlbHNlCisgICAgICAgICBsb25nIGxvbmcgX19sbCA9IHN0cnRvbGxfbChfX2EsICZf X3AyLCBfX2Jhc2UsIF9MSUJDUFBfR0VUX0NfTE9DQUxFKTsKKysjZW5kaWYKKyAgICAgICAgIHR5 cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlwZSBfX2N1cnJlbnRf ZXJybm8gPSBlcnJubzsKKyAgICAgICAgIGlmIChfX2N1cnJlbnRfZXJybm8gPT0gMCkKKyAgICAg ICAgICAgICBlcnJubyA9IF9fc2F2ZV9lcnJubzsKK0BAIC03ODIsNyArNzg2LDExIEBAIF9fbnVt X2dldF91bnNpZ25lZF9pbnRlZ3JhbChjb25zdCBjaGFyKiBfX2EsIGNvbnN0IGNoYXIqIF9fYV9l bmQsCisgICAgICAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGVycm5vKT46 OnR5cGUgX19zYXZlX2Vycm5vID0gZXJybm87CisgICAgICAgICBlcnJubyA9IDA7CisgICAgICAg ICBjaGFyICpfX3AyOworKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgIWRlZmluZWQoX19HTElC Q19fKQorKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fbGwgPSBzdHJ0b3VsbChfX2EsICZf X3AyLCBfX2Jhc2UpOworKyNlbHNlCisgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19sbCA9 IHN0cnRvdWxsX2woX19hLCAmX19wMiwgX19iYXNlLCBfTElCQ1BQX0dFVF9DX0xPQ0FMRSk7Cisr I2VuZGlmCisgICAgICAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGVycm5v KT46OnR5cGUgX19jdXJyZW50X2Vycm5vID0gZXJybm87CisgICAgICAgICBpZiAoX19jdXJyZW50 X2Vycm5vID09IDApCisgICAgICAgICAgICAgZXJybm8gPSBfX3NhdmVfZXJybm87CmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2ggYi9zcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi43YTkyZjgwMDRlMWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2gKQEAgLTAsMCArMSwyMiBAQAorVGhpcyBlbnN1 cmVzIGBpc19pZWM1NTlgIGlzIGRlZmluZWQgY29ycmVjdGx5IHVuZGVyIGFsbCBsb25nIGRvdWJs ZSBBQklzLAoraW5jbHVkaW5nIG11c2wgYW5kIGl0cyA2NC1iaXQgbG9uZyBkb3VibGUuIEFsc28s IGBfX3BwY19fYCBvciBgX19wcGM2NF9fYAoraXMgbm90IGRlZmluZWQgb24gZ2NjLgorCistLS0g YS9saWJjeHgvaW5jbHVkZS9saW1pdHMKKysrKyBiL2xpYmN4eC9pbmNsdWRlL2xpbWl0cworQEAg LTQyNiw4ICs0MjYsMTQgQEAgcHJvdGVjdGVkOgorICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklM SVRZIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiB0eXBlIHNpZ25hbGluZ19OYU4oKSBfTk9FWENF UFQge3JldHVybiBfX2J1aWx0aW5fbmFuc2woIiIpO30KKyAgICAgX0xJQkNQUF9JTkxJTkVfVklT SUJJTElUWSBzdGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgdHlwZSBkZW5vcm1fbWluKCkgX05PRVhD RVBUIHtyZXR1cm4gX19MREJMX0RFTk9STV9NSU5fXzt9CisgCistI2lmIChkZWZpbmVkKF9fcHBj X18pIHx8IGRlZmluZWQoX19wcGM2NF9fKSkKKysjaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyNpZiAoX19MREJMX01BWF9FWFBfXyA+IF9fREJMX01B WF9FWFBfXykgfHwgKF9fTERCTF9NQU5UX0RJR19fID09IF9fREJMX01BTlRfRElHX18pCisrICAg IC8qIElFRUUgNzU0IHF1YWRydXBsZSBvciBkb3VibGUgcHJlY2lzaW9uICovCisrICAgIHN0YXRp YyBfTElCQ1BQX0NPTlNURVhQUiBjb25zdCBib29sIGlzX2llYzU1OSA9IHRydWU7CisrI2Vsc2UK KysgICAgLyogMTI4LWJpdCBJQk0gZG91YmxlLWRvdWJsZSAqLworICAgICBzdGF0aWMgX0xJQkNQ UF9DT05TVEVYUFIgY29uc3QgYm9vbCBpc19pZWM1NTkgPSBmYWxzZTsKKysjZW5kaWYKKyAjZWxz ZQorICAgICBzdGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgY29uc3QgYm9vbCBpc19pZWM1NTkgPSB0 cnVlOworICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9saWJjeHgt c3NwLW5vbnNoYXJlZC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4LXNzcC1u b25zaGFyZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43 MDI5MmJlYjJmY2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xp YmN4eC1zc3Atbm9uc2hhcmVkLnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0tLSBhL2xpYmN4eC9D TWFrZUxpc3RzLnR4dAorKysrIGIvbGliY3h4L0NNYWtlTGlzdHMudHh0CitAQCAtNzY5LDYgKzc2 OSw4IEBAIGZ1bmN0aW9uKGN4eF9saW5rX3N5c3RlbV9saWJyYXJpZXMgdGFyZ2V0KQorICAgICB0 YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgYXRvbWljKQorICAgZW5kaWYo KQorIAorKyNzc3AgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFURSBzc3Bf bm9uc2hhcmVkKQorKworICAgaWYgKE1JTkdXKQorICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMo JHt0YXJnZXR9IFBSSVZBVEUgIiR7TUlOR1dfTElCUkFSSUVTfSIpCisgICBlbmRpZigpCmRpZmYg LS1naXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYmN4eGFiaS1kbC5wYXRjaCBiL3NyY3Br Z3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4YWJpLWRsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uM2ExNWY5ZGI4Yzk4Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9sbHZtMTMvcGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAor QWxzbyBsaW5rIHRvIC1sZGwgdG8gcHJldmVudCB1bmRlZmluZWQgcmVmZXJlbmNlcy4KKworLS0t IGEvbGliY3h4YWJpL3NyYy9DTWFrZUxpc3RzLnR4dAorKysrIGIvbGliY3h4YWJpL3NyYy9DTWFr ZUxpc3RzLnR4dAorQEAgLTczLDYgKzczLDcgQEAKKyAgIGVuZGlmKCkKKyAKKyAgIGFkZF9saWJy YXJ5X2ZsYWdzX2lmKExJQkNYWEFCSV9IQVNfQ19MSUIgYykKKysgIGFkZF9saWJyYXJ5X2ZsYWdz X2lmKExJQkNYWEFCSV9IQVNfQ19MSUIgZGwpCisgZW5kaWYoKQorIAorIGlmIChMSUJDWFhBQklf VVNFX0xMVk1fVU5XSU5ERVIpCistLS0gYS9saWJjeHgvQ01ha2VMaXN0cy50eHQKKysrKyBiL2xp YmN4eC9DTWFrZUxpc3RzLnR4dAorQEAgLTc0NSw2ICs3NDUsMTAgQEAKKyAgICAgdGFyZ2V0X2xp bmtfbGlicmFyaWVzKCR7dGFyZ2V0fSBQUklWQVRFIG0pCisgICBlbmRpZigpCisgCisrICBpZiAo TElCQ1hYX0hBU19DX0xJQikKKysgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGFyZ2V0fSBQ UklWQVRFIGRsKQorKyAgZW5kaWYoKQorKworICAgaWYgKExJQkNYWF9IQVNfUlRfTElCKQorICAg ICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgcnQpCisgICBlbmRpZigp CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYnVud2luZC1wcGMzMi5wYXRj aCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGlidW53aW5kLXBwYzMyLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzRhYTc1NzZlY2Y5Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9saWJ1bndpbmQtcHBjMzIucGF0Y2gKQEAg LTAsMCArMSw2MyBAQAorVGhpcyBmaXhlcyBidWlsZCBhdCBsZWFzdCB3aXRoIGdjYzkgd2hpY2gg ZG9lcyBub3QgZGVmaW5lIGBfX3BwY19fYC4KKworLS0tIGEvbGlidW53aW5kL2luY2x1ZGUvX19s aWJ1bndpbmRfY29uZmlnLmgKKysrKyBiL2xpYnVud2luZC9pbmNsdWRlL19fbGlidW53aW5kX2Nv bmZpZy5oCitAQCAtNDksNyArNDksNyBAQAorICMgIGRlZmluZSBfTElCVU5XSU5EX0NPTlRFWFRf U0laRSAxNjcKKyAjICBkZWZpbmUgX0xJQlVOV0lORF9DVVJTT1JfU0laRSAxNzkKKyAjICBkZWZp bmUgX0xJQlVOV0lORF9ISUdIRVNUX0RXQVJGX1JFR0lTVEVSIF9MSUJVTldJTkRfSElHSEVTVF9E V0FSRl9SRUdJU1RFUl9QUEM2NAorLSMgZWxpZiBkZWZpbmVkKF9fcHBjX18pCisrIyBlbGlmIGRl ZmluZWQoX19wb3dlcnBjX18pCisgIyAgZGVmaW5lIF9MSUJVTldJTkRfVEFSR0VUX1BQQyAxCisg IyAgZGVmaW5lIF9MSUJVTldJTkRfQ09OVEVYVF9TSVpFIDExNworICMgIGRlZmluZSBfTElCVU5X SU5EX0NVUlNPUl9TSVpFIDEyNAorLS0tIGEvbGlidW53aW5kL3NyYy9VbndpbmRSZWdpc3RlcnNS ZXN0b3JlLlMKKysrKyBiL2xpYnVud2luZC9zcmMvVW53aW5kUmVnaXN0ZXJzUmVzdG9yZS5TCitA QCAtMzkyLDcgKzM5Miw3IEBAIExub3ZlYzoKKyAgIFBQQzY0X0xSKDMpCisgICBiY3RyCisgCist I2VsaWYgZGVmaW5lZChfX3BwY19fKQorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCisgCisg REVGSU5FX0xJQlVOV0lORF9GVU5DVElPTihfWk45bGlidW53aW5kMTNSZWdpc3RlcnNfcHBjNmp1 bXB0b0V2KQorIC8vCistLS0gYS9saWJ1bndpbmQvc3JjL1Vud2luZFJlZ2lzdGVyc1NhdmUuUwor KysrIGIvbGlidW53aW5kL3NyYy9VbndpbmRSZWdpc3RlcnNTYXZlLlMKK0BAIC01NTQsNyArNTU0 LDcgQEAgREVGSU5FX0xJQlVOV0lORF9GVU5DVElPTihfX3Vud19nZXRjb250ZXh0KQorICAgYmxy CisgCisgCistI2VsaWYgZGVmaW5lZChfX3BwY19fKQorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBj X18pCisgCisgLy8KKyAvLyBleHRlcm4gaW50IHVud19nZXRjb250ZXh0KHVud19jb250ZXh0X3Qq IHRocmVhZF9zdGF0ZSkKKy0tLSBhL2xpYnVud2luZC9zcmMvY29uZmlnLmgKKysrKyBiL2xpYnVu d2luZC9zcmMvY29uZmlnLmgKK0BAIC05NSwxMiArOTUsMTIgQEAKKyAjZGVmaW5lIF9MSUJVTldJ TkRfQlVJTERfU0pMSl9BUElTCisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fcHBj NjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8 fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQo X19wb3dlcnBjNjRfXykKKyAjZGVmaW5lIF9MSUJVTldJTkRfU1VQUE9SVF9GUkFNRV9BUElTCisg I2VuZGlmCisgCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykg fHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgZGVmaW5lZChfX3BwY19f KSB8fCBkZWZpbmVkKF9fcHBjNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSB8fCAgICAg ICAgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18p IHx8ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICghZGVmaW5lZChfX0FQUExFX18p ICYmIGRlZmluZWQoX19hcm1fXykpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgICAgKGRlZmluZWQoX19hcm02NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSkgfHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBkZWZpbmVkKF9fbWlwc19fKQorLS0tIGEv bGlidW53aW5kL3NyYy9saWJ1bndpbmQuY3BwCisrKysgYi9saWJ1bndpbmQvc3JjL2xpYnVud2lu ZC5jcHAKK0BAIC00Miw3ICs0Miw3IEBAIF9MSUJVTldJTkRfSElEREVOIGludCBfX3Vud19pbml0 X2xvY2FsKHVud19jdXJzb3JfdCAqY3Vyc29yLAorICMgZGVmaW5lIFJFR0lTVEVSX0tJTkQgUmVn aXN0ZXJzX3g4Nl82NAorICNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAjIGRlZmluZSBS RUdJU1RFUl9LSU5EIFJlZ2lzdGVyc19wcGM2NAorLSNlbGlmIGRlZmluZWQoX19wcGNfXykKKysj ZWxpZiBkZWZpbmVkKF9fcG93ZXJwY19fKQorICMgZGVmaW5lIFJFR0lTVEVSX0tJTkQgUmVnaXN0 ZXJzX3BwYworICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCisgIyBkZWZpbmUgUkVHSVNURVJf S0lORCBSZWdpc3RlcnNfYXJtNjQKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMv bGxkYi1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbGRiLW11c2wucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42MDFjMGQxMzg1MjMKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsZGItbXVzbC5wYXRjaApA QCAtMCwwICsxLDMxIEBACistLS0gYS9sbGRiL3NvdXJjZS9QbHVnaW5zL1Byb2Nlc3MvTGludXgv UHJvY2ZzLmgKKysrKyBiL2xsZGIvc291cmNlL1BsdWdpbnMvUHJvY2Vzcy9MaW51eC9Qcm9jZnMu aAorQEAgLTEwLDIxICsxMCwxMiBAQAorIC8vIHN5cy9wcm9jZnMuaCBvbiBBbmRyb2lkL0xpbnV4 IGZvciBhbGwgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMuCisgCisgI2luY2x1ZGUgPHN5cy9wdHJh Y2UuaD4KKysjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorIAorLSNpZmRlZiBfX0FORFJPSURfXwor LSNpZiBkZWZpbmVkKF9fYXJtNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKKy10eXBlZGVm IHVuc2lnbmVkIGxvbmcgZWxmX2dyZWdfdDsKKy10eXBlZGVmIGVsZl9ncmVnX3QKKy0gICAgZWxm X2dyZWdzZXRfdFsoc2l6ZW9mKHN0cnVjdCB1c2VyX3B0X3JlZ3MpIC8gc2l6ZW9mKGVsZl9ncmVn X3QpKV07CistdHlwZWRlZiBzdHJ1Y3QgdXNlcl9mcHNpbWRfc3RhdGUgZWxmX2ZwcmVnc2V0X3Q7 CistI2lmbmRlZiBOVF9GUFJFR1NFVAorLSNkZWZpbmUgTlRfRlBSRUdTRVQgTlRfUFJGUFJFRwor LSNlbmRpZiAvLyBOVF9GUFJFR1NFVAorLSNlbGlmIGRlZmluZWQoX19taXBzX18pCistI2lmbmRl ZiBOVF9GUFJFR1NFVAorLSNkZWZpbmUgTlRfRlBSRUdTRVQgTlRfUFJGUFJFRworLSNlbmRpZiAv LyBOVF9GUFJFR1NFVAorLSNlbmRpZgorLSNlbHNlIC8vIF9fQU5EUk9JRF9fCisrI2lmICFkZWZp bmVkKF9fR0xJQkNfXykgJiYgZGVmaW5lZChfX3Bvd2VycGNfXykKKysjZGVmaW5lIHB0X3JlZ3Mg bXVzbF9wdF9yZWdzCisrI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KKysjdW5kZWYgcHRfcmVncwor KyNlbHNlCisgI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KKy0jZW5kaWYgLy8gX19BTkRST0lEX18K KysjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDEtbXVz bC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDEtbXVzbC5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYyYTNmOGQ2MjgxMwotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDEtbXVzbC5wYXRjaApA QCAtMCwwICsxLDU3IEBACitGcm9tIGZhY2EzZmJkMTVkMGMzMTA4NDkzYzNjNTRjZDkzMTM4ZTA0 OWFjNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWEgQnJhbmNhbGVvbmkg PG1pd2F4ZUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDggU2VwIDIwMTUgMjI6MDM6MDIgKzAyMDAK K1N1YmplY3Q6IFtQQVRDSCAzLzNdIG11c2wKKworLS0tCisgaW5jbHVkZS9sbHZtL0FuYWx5c2lz L1RhcmdldExpYnJhcnlJbmZvLmggfCA5ICsrKysrKysrKworIGxpYi9TdXBwb3J0L0R5bmFtaWNM aWJyYXJ5LmNwcCAgICAgICAgICAgIHwgMiArLQorIGxpYi9TdXBwb3J0L1VuaXgvU2lnbmFscy5p bmMgICAgICAgICAgICAgIHwgNiArKystLS0KKyB1dGlscy91bml0dGVzdC9nb29nbGV0ZXN0L3Ny Yy9ndGVzdC5jYyAgICB8IDEgKworIDUgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwg NiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJn ZXRMaWJyYXJ5SW5mby5oIGIvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZv LmgKK2luZGV4IDM0YThhMWUzLi4xMjE0ZWNlNSAxMDA2NDQKKy0tLSBhL2xsdm0vaW5jbHVkZS9s bHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmgKKysrKyBiL2xsdm0vaW5jbHVkZS9sbHZt L0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmgKK0BAIC0xOCw2ICsxOCwxNSBAQAorICNpbmNs dWRlICJsbHZtL0lSL1Bhc3NNYW5hZ2VyLmgiCisgI2luY2x1ZGUgImxsdm0vUGFzcy5oIgorIAor KyN1bmRlZiBmb3BlbjY0CisrI3VuZGVmIGZzZWVrbzY0CisrI3VuZGVmIGZzdGF0NjQKKysjdW5k ZWYgZnN0YXR2ZnM2NAorKyN1bmRlZiBmdGVsbG82NAorKyN1bmRlZiBsc3RhdDY0CisrI3VuZGVm IHN0YXQ2NAorKyN1bmRlZiB0bXBmaWxlNjQKKysKKyBuYW1lc3BhY2UgbGx2bSB7CisgdGVtcGxh dGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEFycmF5UmVmOworIGNsYXNzIFRyaXBsZTsKK2RpZmYgLS1n aXQgYS9saWIvU3VwcG9ydC9Vbml4L0R5bmFtaWNMaWJyYXJ5LmluYyBiL2xpYi9TdXBwb3J0L1Vu aXgvRHluYW1pY0xpYnJhcnkuaW5jCitpbmRleCBhMmEzNzk5Ni4uMmY4NmM0NzAgMTAwNjQ0Cist LS0gYS9sbHZtL2xpYi9TdXBwb3J0L1VuaXgvRHluYW1pY0xpYnJhcnkuaW5jCisrKysgYi9sbHZt L2xpYi9TdXBwb3J0L1VuaXgvRHluYW1pY0xpYnJhcnkuaW5jCitAQCAtMTAyLDcgKzEwMiw3IEBA IHN0YXRpYyB2b2lkICpEb1NlYXJjaChjb25zdCBjaGFyKiBTeW1ib2xOYW1lKSB7CisgCisgLy8g VGhpcyBtYWNybyByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIGEgd2VsbC1rbm93biwgZXhwbGljaXQg c3ltYm9sCisgI2RlZmluZSBFWFBMSUNJVF9TWU1CT0woU1lNKSBcCistICAgaWYgKCFzdHJjbXAo U3ltYm9sTmFtZSwgI1NZTSkpIHJldHVybiAmU1lNCisrICAgaWYgKCFzdHJjbXAoU3ltYm9sTmFt ZSwgI1NZTSkpIHJldHVybiAodm9pZCAqKSZTWU0KKyAKKyAvLyBVbmRlciBnbGliYyB3ZSBoYXZl IGEgd2VpcmQgc2l0dWF0aW9uLiBUaGUgc3RkZXJyL291dC9pbiBzeW1ib2xzIGFyZSBib3RoCisg Ly8gbWFjcm9zIGFuZCBnbG9iYWwgdmFyaWFibGVzIGJlY2F1c2Ugb2Ygc3RhbmRhcmRzIHJlcXVp cmVtZW50cy4gU28sIHdlCitkaWZmIC0tZ2l0IGEvdXRpbHMvdW5pdHRlc3QvZ29vZ2xldGVzdC9z cmMvZ3Rlc3QuY2MgYi91dGlscy91bml0dGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC5jYworaW5k ZXggZDg4MmFiMmUuLmYxZmIxMmQwIDEwMDY0NAorLS0tIGEvbGx2bS91dGlscy91bml0dGVzdC9n b29nbGV0ZXN0L3NyYy9ndGVzdC5jYworKysrIGIvbGx2bS91dGlscy91bml0dGVzdC9nb29nbGV0 ZXN0L3NyYy9ndGVzdC5jYworQEAgLTEyOCw2ICsxMjgsNyBAQAorIAorICNpZiBHVEVTVF9DQU5f U1RSRUFNX1JFU1VMVFNfCisgIyBpbmNsdWRlIDxhcnBhL2luZXQuaD4gIC8vIE5PTElOVAorKyMg aW5jbHVkZSA8c3lzL3NvY2tldC5oPiAgLy8gTk9MSU5UCisgIyBpbmNsdWRlIDxuZXRkYi5oPiAg Ly8gTk9MSU5UCisgIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+ICAvLyBOT0xJTlQKKyAjIGluY2x1 ZGUgPHN5cy90eXBlcy5oPiAgLy8gTk9MSU5UCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy9w YXRjaGVzL2xsdm0tMDAyLW11c2wtcHBjNjQtZWxmdjIucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9w YXRjaGVzL2xsdm0tMDAyLW11c2wtcHBjNjQtZWxmdjIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wMDcxZDk2NGJkMzcKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDAyLW11c2wtcHBjNjQtZWxmdjIucGF0Y2gKQEAg LTAsMCArMSwzMCBAQAorVGhpcyBwYXRjaGVzIExMVk0gdG8gdXNlIEVMRnYyIG9uIHBwYzY0IHVu Y29uZGl0aW9uYWxseSB1bmxlc3Mgb3ZlcnJpZGRlbi4gV2UKK25lZWQgdGhpcyBiZWNhdXNlIHVu bGlrZSBtb3N0IGRpc3Ryb3Mgd2UgdXNlIEVMRnYyIGZvciBib3RoIGdsaWJjIGFuZCBtdXNsCitv biBiaWcgZW5kaWFuIHBwYzY0LgorCitkaWZmIC0tZ2l0IGEvbGliL1RhcmdldC9Qb3dlclBDL1BQ Q1RhcmdldE1hY2hpbmUuY3BwIGIvbGliL1RhcmdldC9Qb3dlclBDL1BQQ1RhcmdldE1hY2hpbmUu Y3BwCitpbmRleCAwNjM0ODMzZS4uYjdjYmMyZTcgMTAwNjQ0CistLS0gYS9sbHZtL2xpYi9UYXJn ZXQvUG93ZXJQQy9QUENUYXJnZXRNYWNoaW5lLmNwcAorKysrIGIvbGx2bS9saWIvVGFyZ2V0L1Bv d2VyUEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAKK0BAIC0yMjIsOSArMjIyLDggQEAgc3RhdGljIFBQ Q1RhcmdldE1hY2hpbmU6OlBQQ0FCSSBjb21wdXRlVGFyZ2V0QUJJKGNvbnN0IFRyaXBsZSAmVFQs CisgCisgICBzd2l0Y2ggKFRULmdldEFyY2goKSkgeworICAgY2FzZSBUcmlwbGU6OnBwYzY0bGU6 CistICAgIHJldHVybiBQUENUYXJnZXRNYWNoaW5lOjpQUENfQUJJX0VMRnYyOworICAgY2FzZSBU cmlwbGU6OnBwYzY0OgorLSAgICByZXR1cm4gUFBDVGFyZ2V0TWFjaGluZTo6UFBDX0FCSV9FTEZ2 MTsKKysgICAgcmV0dXJuIFBQQ1RhcmdldE1hY2hpbmU6OlBQQ19BQklfRUxGdjI7CisgICBkZWZh dWx0OgorICAgICByZXR1cm4gUFBDVGFyZ2V0TWFjaGluZTo6UFBDX0FCSV9VTktOT1dOOworICAg fQorZGlmZiAtLWdpdCBhL3Rlc3QvQ29kZUdlbi9Qb3dlclBDL3BwYzY0LWVsZi1hYmkubGwgYi90 ZXN0L0NvZGVHZW4vUG93ZXJQQy9wcGM2NC1lbGYtYWJpLmxsCitpbmRleCA4YjFjZjZiNS4uMjk2 YTJhZmEgMTAwNjQ0CistLS0gYS9sbHZtL3Rlc3QvQ29kZUdlbi9Qb3dlclBDL3BwYzY0LWVsZi1h YmkubGwKKysrKyBiL2xsdm0vdGVzdC9Db2RlR2VuL1Bvd2VyUEMvcHBjNjQtZWxmLWFiaS5sbAor QEAgLTEsNCArMSw1IEBACistOyBSVU46IGxsYyAtdmVyaWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlw bGU9cG93ZXJwYzY0LXVua25vd24tbGludXgtZ251IDwgJXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNr LXByZWZpeD1DSEVDSy1FTEZ2MQorKzsgUlVOOiBsbGMgLXZlcmlmeS1tYWNoaW5laW5zdHJzIC1t dHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudSA8ICVzIHwgRmlsZUNoZWNrICVzIC1j aGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIKKys7IFJVTjogbGxjIC12ZXJpZnktbWFjaGluZWluc3Ry cyAtbXRyaXBsZT1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1tdXNsIDwgJXMgfCBGaWxlQ2hlY2sg JXMgLWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2MgorIDsgUlVOOiBsbGMgLXZlcmlmeS1tYWNoaW5l aW5zdHJzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudSAtdGFyZ2V0LWFiaSBl bGZ2MSA8ICVzIHwgRmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjEKKyA7IFJV TjogbGxjIC12ZXJpZnktbWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjQtdW5rbm93bi1s aW51eC1nbnUgLXRhcmdldC1hYmkgZWxmdjIgPCAlcyB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJl Zml4PUNIRUNLLUVMRnYyCisgOyBSVU46IGxsYyAtdmVyaWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlw bGU9cG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1nbnUgPCAlcyB8IEZpbGVDaGVjayAlcyAtY2hl Y2stcHJlZml4PUNIRUNLLUVMRnYyCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRjaGVz L2xsdm0tMDAzLXBwYy1zZWN1cmVwbHQucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xs dm0tMDAzLXBwYy1zZWN1cmVwbHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi5iNWQxNTk3NDM3NWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0x My9wYXRjaGVzL2xsdm0tMDAzLXBwYy1zZWN1cmVwbHQucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAor LS0tIGEvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDU3VidGFyZ2V0LmNwcAorKysrIGIvbGx2 bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDU3VidGFyZ2V0LmNwcAorQEAgLTE2NSw3ICsxNjUsNyBA QCB2b2lkIFBQQ1N1YnRhcmdldDo6aW5pdFN1YnRhcmdldEZlYXR1cmVzKFN0cmluZ1JlZiBDUFUs IFN0cmluZ1JlZiBGUykgeworIAorICAgaWYgKChUYXJnZXRUcmlwbGUuaXNPU0ZyZWVCU0QoKSAm JiBUYXJnZXRUcmlwbGUuZ2V0T1NNYWpvclZlcnNpb24oKSA+PSAxMykgfHwKKyAgICAgICBUYXJn ZXRUcmlwbGUuaXNPU05ldEJTRCgpIHx8IFRhcmdldFRyaXBsZS5pc09TT3BlbkJTRCgpIHx8Cist ICAgICAgVGFyZ2V0VHJpcGxlLmlzTXVzbCgpKQorKyAgICAgIGlzVGFyZ2V0TGludXgoKSkKKyAg ICAgU2VjdXJlUGx0ID0gdHJ1ZTsKKyAKKyAgIGlmIChIYXNTUEUgJiYgSXNQUEM2NCkKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDQtb3ZlcnJpZGUtb3B0LnBhdGNo IGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAwNC1vdmVycmlkZS1vcHQucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41MWQwZTRiMzFiMzIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDA0LW92ZXJyaWRlLW9w dC5wYXRjaApAQCAtMCwwICsxLDE4IEBACitUaGlzIGFsbG93cyB1cyB0byBvdmVycmlkZSB0aGUg b3B0aW1pemF0aW9uIGxldmVsIGFzIG5vdCBhbGwgcGxhdGZvcm1zIGNhbgorZGVhbCB3aXRoIC1P My4KKworLS0tIGEvbGx2bS9DTWFrZUxpc3RzLnR4dAorKysrIGIvbGx2bS9DTWFrZUxpc3RzLnR4 dAorQEAgLTkxOCw2ICs5MTgsMTIgQEAgaWYoIE1JTkdXIEFORCBOT1QgIiR7Q01BS0VfQ1hYX0NP TVBJTEVSX0lEfSIgTUFUQ0hFUyAiQ2xhbmciICkKKyAgIGxsdm1fcmVwbGFjZV9jb21waWxlcl9v cHRpb24oQ01BS0VfQ1hYX0ZMQUdTX1JFTEVBU0UgIi1PMyIgIi1PMiIpCisgZW5kaWYoKQorIAor K3NldChWT0lEX0NYWF9PUFRfRkxBR1MgIiIgQ0FDSEUgU1RSSU5HICJPcHRpbWl6YXRpb24gbGV2 ZWwgdG8gdXNlIikKKysKKytpZiAoTk9UIFZPSURfQ1hYX09QVF9GTEFHUyBTVFJFUVVBTCAiIikK KysgICAgbGx2bV9yZXBsYWNlX2NvbXBpbGVyX29wdGlvbihDTUFLRV9DWFhfRkxBR1NfUkVMRUFT RSAiLU8zIiAiJHtWT0lEX0NYWF9PUFRfRkxBR1N9IikKKytlbmRpZigpCisrCisgIyBQdXQgdGhp cyBiZWZvcmUgdGJsZ2VuLiBFbHNlIHdlIGhhdmUgYSBjaXJjdWxhciBkZXBlbmRlbmNlLgorIGFk ZF9zdWJkaXJlY3RvcnkobGliL0RlbWFuZ2xlKQorIGFkZF9zdWJkaXJlY3RvcnkobGliL1N1cHBv cnQpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDA1LXBwYy1iaWdw aWMucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDA1LXBwYy1iaWdwaWMucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kMzMyNjg3YjlkOTIK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDA1LXBwYy1i aWdwaWMucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSBmM2RiZGQ0OWMwNmJmYWZjMWQ2MTM4 MDk0Y2Y0Mjg4OWMxNGQzOGI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2FtdWVs IEhvbGxhbmQgPHNhbXVlbEBzaG9sbGFuZC5vcmc+CitEYXRlOiBTdW4sIDMgTm92IDIwMTkgMTA6 NTc6MjcgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gW0xMVk1dW1Bvd2VyUENdIEFzc3VtZSBCaWdQ SUMgaWYgbm8gUElDIGxldmVsIGlzIHNwZWNpZmllZAorCistLS0KKyBsbHZtL2xpYi9UYXJnZXQv UG93ZXJQQy9QUENBc21QcmludGVyLmNwcCAgfCAyICstCisgbGx2bS9saWIvVGFyZ2V0L1Bvd2Vy UEMvUFBDTUNJbnN0TG93ZXIuY3BwIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRp b25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL1RhcmdldC9Qb3dlclBD L1BQQ0FzbVByaW50ZXIuY3BwIGIvbGliL1RhcmdldC9Qb3dlclBDL1BQQ0FzbVByaW50ZXIuY3Bw CitpbmRleCBjY2UyMWYzMi4uODdjYTVmOWIgMTAwNjQ0CistLS0gYS9sbHZtL2xpYi9UYXJnZXQv UG93ZXJQQy9QUENBc21QcmludGVyLmNwcAorKysrIGIvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMv UFBDQXNtUHJpbnRlci5jcHAKK0BAIC01MjAsNyArNTIwLDcgQEAgdm9pZCBQUENBc21QcmludGVy OjpFbWl0VGxzQ2FsbChjb25zdCBNYWNoaW5lSW5zdHIgKk1JLAorIAorICAgLy8gQWRkIDMyNzY4 IG9mZnNldCB0byB0aGUgc3ltYm9sIHNvIHdlIGZvbGxvdyB1cCB0aGUgbGF0ZXN0IEdPVC9QTFQg QUJJLgorICAgaWYgKEtpbmQgPT0gTUNTeW1ib2xSZWZFeHByOjpWS19QTFQgJiYgU3VidGFyZ2V0 LT5pc1NlY3VyZVBsdCgpICYmCistICAgICAgTS0+Z2V0UElDTGV2ZWwoKSA9PSBQSUNMZXZlbDo6 QmlnUElDKQorKyAgICAgIE0tPmdldFBJQ0xldmVsKCkgIT0gUElDTGV2ZWw6OlNtYWxsUElDKQor ICAgICBUbHNSZWYgPSBNQ0JpbmFyeUV4cHI6OmNyZWF0ZUFkZCgKKyAgICAgICAgIFRsc1JlZiwg TUNDb25zdGFudEV4cHI6OmNyZWF0ZSgzMjc2OCwgT3V0Q29udGV4dCksIE91dENvbnRleHQpOwor ICAgY29uc3QgTWFjaGluZU9wZXJhbmQgJk1PID0gTUktPmdldE9wZXJhbmQoMik7CitkaWZmIC0t Z2l0IGEvbGliL1RhcmdldC9Qb3dlclBDL1BQQ01DSW5zdExvd2VyLmNwcCBiL2xpYi9UYXJnZXQv UG93ZXJQQy9QUENNQ0luc3RMb3dlci5jcHAKK2luZGV4IDVjYzE4MGQ3Li5hNWIwMjU2NSAxMDA2 NDQKKy0tLSBhL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ01DSW5zdExvd2VyLmNwcAorKysr IGIvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDTUNJbnN0TG93ZXIuY3BwCitAQCAtMTE3LDcg KzExNyw3IEBAIHN0YXRpYyBNQ09wZXJhbmQgR2V0U3ltYm9sUmVmKGNvbnN0IE1hY2hpbmVPcGVy YW5kICZNTywgY29uc3QgTUNTeW1ib2wgKlN5bWJvbCwKKyAgIGNvbnN0IE1DRXhwciAqRXhwciA9 IE1DU3ltYm9sUmVmRXhwcjo6Y3JlYXRlKFN5bWJvbCwgUmVmS2luZCwgQ3R4KTsKKyAgIC8vIElm IC1tc2VjdXJlLXBsdCAtZlBJQywgYWRkIDMyNzY4IHRvIHN5bWJvbC4KKyAgIGlmIChTdWJ0YXJn ZXQtPmlzU2VjdXJlUGx0KCkgJiYgVE0uaXNQb3NpdGlvbkluZGVwZW5kZW50KCkgJiYKKy0gICAg ICBNLT5nZXRQSUNMZXZlbCgpID09IFBJQ0xldmVsOjpCaWdQSUMgJiYKKysgICAgICBNLT5nZXRQ SUNMZXZlbCgpICE9IFBJQ0xldmVsOjpTbWFsbFBJQyAmJgorICAgICAgIE1PLmdldFRhcmdldEZs YWdzKCkgPT0gUFBDSUk6Ok1PX1BMVCkKKyAgICAgRXhwciA9CisgICAgICAgICBNQ0JpbmFyeUV4 cHI6OmNyZWF0ZUFkZChFeHByLCBNQ0NvbnN0YW50RXhwcjo6Y3JlYXRlKDMyNzY4LCBDdHgpLCBD dHgpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAwNi1hYXJjaDY0 LW1mX2V4ZWMucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDA2LWFhcmNoNjQt bWZfZXhlYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmEw MGFiZDIxNjY2NQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2 bS0wMDYtYWFyY2g2NC1tZl9leGVjLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0ZpeCBmYWlsdXJl cyBpbiBBbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC4qIG9uIGFhcmNoNjQ6CisKKyAg ICBGYWlsaW5nIFRlc3RzICg4KToKKyAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBw b3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuQWxsb2NBbmRSZWxlYXNl LzMKKyAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlv blRlc3RzL01hcHBlZE1lbW9yeVRlc3QuRHVwbGljYXRlTmVhci8zCisgICAgICAgIExMVk0tVW5p dCA6OiBTdXBwb3J0Ly4vU3VwcG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlU ZXN0LkVuYWJsZWRXcml0ZS8zCisgICAgICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3VwcG9y dFRlc3RzL0FsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0Lk11bHRpcGxlQWxsb2NBbmRS ZWxlYXNlLzMKKyAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxs b2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuU3VjY2Vzc2l2ZU5lYXIvMworICAgICAgICBM TFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVk TWVtb3J5VGVzdC5VbmFsaWduZWROZWFyLzMKKyAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQv Li9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuWmVyb05lYXIv MworICAgICAgICBMTFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9u VGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5aZXJvU2l6ZU5lYXIvMworCitVcHN0cmVhbS1Jc3N1ZTog aHR0cHM6Ly9idWdzLmxsdm0ub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3OCNjMTAKKworLS0tIGEv bGx2bS9saWIvU3VwcG9ydC9Vbml4L01lbW9yeS5pbmMKKysrKyBiL2xsdm0vbGliL1N1cHBvcnQv VW5peC9NZW1vcnkuaW5jCitAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgaW50IGdldFBvc2l4UHJv dGVjdGlvbkZsYWdzKHVuc2lnbmVkIEZsYWdzKSB7CisgICAgIHJldHVybiBQUk9UX1JFQUQgfCBQ Uk9UX1dSSVRFIHwgUFJPVF9FWEVDOworICAgY2FzZSBsbHZtOjpzeXM6Ok1lbW9yeTo6TUZfRVhF QzoKKyAjaWYgKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19QT1dFUlBDX18pIHx8 IGRlZmluZWQgKF9fcHBjX18pIHx8IFwKKy0gICAgIGRlZmluZWQoX1BPV0VSKSB8fCBkZWZpbmVk KF9BUkNIX1BQQykpCisrICAgICBkZWZpbmVkKF9QT1dFUikgfHwgZGVmaW5lZChfQVJDSF9QUEMp IHx8IChkZWZpbmVkKF9fbGludXhfXykgJiYgZGVmaW5lZChfX2FhcmNoNjRfXykpKQorICAgICAv LyBPbiBQb3dlclBDLCBoYXZpbmcgYW4gZXhlY3V0YWJsZSBwYWdlIHRoYXQgaGFzIG5vIHJlYWQg cGVybWlzc2lvbgorICAgICAvLyBjYW4gaGF2ZSB1bmludGVuZGVkIGNvbnNlcXVlbmNlcy4gIFRo ZSBmdW5jdGlvbiBJbnZhbGlkYXRlSW5zdHJ1Y3Rpb24tCisgICAgIC8vIENhY2hlIHVzZXMgaW5z dHJ1Y3Rpb25zIGRjYmYgYW5kIGljYmksIGJvdGggb2Ygd2hpY2ggYXJlIHRyZWF0ZWQgYnkKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvcHBjMzItY29tcGlsZXItcnQucGF0Y2gg Yi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL3BwYzMyLWNvbXBpbGVyLXJ0LnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGUwYTlhNzc5ZDFiCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9wcGMzMi1jb21waWxlci1ydC5wYXRjaApA QCAtMCwwICsxLDIxIEBACitjb21taXQgYmE0ZWRlNTk1ZmY5NTk5MjMyZjVkZDJiNDM4NGMyNDMx MzdiNTNmYworQXV0aG9yOiBEYW5pZWwgS29sZXNhIDxkYW5pZWxAb2N0YWZvcmdlLm9yZz4KK0Rh dGU6ICAgVHVlIEp1biAyMiAyMzo0MDo1NCAyMDIxICswMjAwCisKKyAgICBlbmFibGUgY29tcGls ZXItcnQgc3VwcG9ydCBmb3IgcHBjMzIKKworZGlmZiAtLWdpdCBhL2NvbXBpbGVyLXJ0L2NtYWtl L2Jhc2UtY29uZmlnLWl4LmNtYWtlIGIvY29tcGlsZXItcnQvY21ha2UvYmFzZS1jb25maWctaXgu Y21ha2UKK2luZGV4IDFlZGFiNDMuLjVjMGM4YTIgMTAwNjQ0CistLS0gYS9jb21waWxlci1ydC9j bWFrZS9iYXNlLWNvbmZpZy1peC5jbWFrZQorKysrIGIvY29tcGlsZXItcnQvY21ha2UvYmFzZS1j b25maWctaXguY21ha2UKK0BAIC0xODIsOSArMTgyLDcgQEAgbWFjcm8odGVzdF90YXJnZXRzKQor ICAgICBlbHNlaWYoIiR7Q09NUElMRVJfUlRfREVGQVVMVF9UQVJHRVRfQVJDSH0iIE1BVENIRVMg InBvd2VycGM2NGxlIikKKyAgICAgICB0ZXN0X3RhcmdldF9hcmNoKHBvd2VycGM2NGxlICIiICIt bTY0IikKKyAgICAgZWxzZWlmKCIke0NPTVBJTEVSX1JUX0RFRkFVTFRfVEFSR0VUX0FSQ0h9IiBN QVRDSEVTICJwb3dlcnBjIikKKy0gICAgICBpZihDTUFLRV9TWVNURU1fTkFNRSBNQVRDSEVTICJB SVgiKQorLSAgICAgICAgdGVzdF90YXJnZXRfYXJjaChwb3dlcnBjICIiICItbTMyIikKKy0gICAg ICBlbmRpZigpCisrICAgICAgdGVzdF90YXJnZXRfYXJjaChwb3dlcnBjICIiICItbTMyIikKKyAg ICAgICB0ZXN0X3RhcmdldF9hcmNoKHBvd2VycGM2NCAiIiAiLW02NCIpCisgICAgIGVsc2VpZigi JHtDT01QSUxFUl9SVF9ERUZBVUxUX1RBUkdFVF9BUkNIfSIgTUFUQ0hFUyAiczM5MHgiKQorICAg ICAgIHRlc3RfdGFyZ2V0X2FyY2goczM5MHggIiIgIiIpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xs dm0xMy90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGx2bTEzL3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDhkODQ3NDcyNTI1Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9sbHZtMTMvdGVtcGxhdGUKQEAgLTAsMCArMSw0MjMgQEAKKyMgVGVtcGxhdGUgZmls ZSBmb3IgJ2xsdm0xMycKK3BrZ25hbWU9bGx2bTEzCit2ZXJzaW9uPTEzLjAuMAorcmV2aXNpb249 MQord3Jrc3JjPSJsbHZtLXByb2plY3QtJHt2ZXJzaW9ufS5zcmMiCitidWlsZF93cmtzcmM9bGx2 bQorYnVpbGRfc3R5bGU9Y21ha2UKK2NvbmZpZ3VyZV9hcmdzPSIKKyAtRENNQUtFX0JVSUxEX1RZ UEU9UmVsZWFzZSAtV25vLWRldgorIC1ERU5BQkxFX0xJTktFUl9CVUlMRF9JRD1ZRVMKKyAtRExM REJfVVNFX1NZU1RFTV9TSVg9WUVTCisgLURMSUJDWFhfQ1hYX0FCST1saWJjeHhhYmkKKyAtRExJ QkNYWF9FTkFCTEVfU1RBVElDX0FCSV9MSUJSQVJZPVlFUworIC1ETElCQ1hYQUJJX1VTRV9MTFZN X1VOV0lOREVSPVlFUworIC1ETElCQ1hYQUJJX0VOQUJMRV9TVEFUSUNfVU5XSU5ERVI9WUVTCisg LURMSUJPTVBfRU5BQkxFX1NIQVJFRD1ZRVMKKyAtRExJQk9NUF9JTlNUQUxMX0FMSUFTRVM9Tk8K KyAtRExMVk1fSU5DTFVERV9ET0NTPVlFUworIC1ETExWTV9CVUlMRF9ET0NTPVlFUworIC1ETExW TV9FTkFCTEVfU1BISU5YPVlFUworIC1EU1BISU5YX1dBUk5JTkdTX0FTX0VSUk9SUz1OTworIC1E TExWTV9JTlNUQUxMX1VUSUxTPVlFUworIC1ETExWTV9CVUlMRF9MTFZNX0RZTElCPVlFUworIC1E TExWTV9MSU5LX0xMVk1fRFlMSUI9WUVTCisgLURMTFZNX0VOQUJMRV9SVFRJPVlFUworIC1ETExW TV9FTkFCTEVfRkZJPVlFUworIC1ETExWTV9CSU5VVElMU19JTkNESVI9L3Vzci9pbmNsdWRlIgor aG9zdG1ha2VkZXBlbmRzPSJwZXJsIHB5dGhvbjMgemxpYi1kZXZlbCBsaWJmZmktZGV2ZWwgc3dp ZyBweXRob24zLVNwaGlueAorIHB5dGhvbjMtcmVjb21tb25tYXJrIHB5dGhvbjMtc3BoaW54LWF1 dG9tb2RhcGkiCittYWtlZGVwZW5kcz0icHl0aG9uMy1kZXZlbCB6bGliLWRldmVsIGVsZnV0aWxz LWRldmVsIGxpYmZmaS1kZXZlbCBsaWJlZGl0LWRldmVsCisgbGlieG1sMi1kZXZlbCBiaW51dGls cy1kZXZlbCBsaWJhdG9taWMtZGV2ZWwiCitkZXBlbmRzPSJsaWJsbHZtMTM+PSR7dmVyc2lvbn1f JHtyZXZpc2lvbn0iCitzaG9ydF9kZXNjPSJMb3cgTGV2ZWwgVmlydHVhbCBNYWNoaW5lIgorbWFp bnRhaW5lcj0icTY2IDxkYW5pZWxAb2N0YWZvcmdlLm9yZz4iCitsaWNlbnNlPSJBcGFjaGUtMi4w IgoraG9tZXBhZ2U9Imh0dHBzOi8vd3d3Lmxsdm0ub3JnIgorZGlzdGZpbGVzPSJodHRwczovL2dp dGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvcmVsZWFzZXMvZG93bmxvYWQvbGx2bW9yZy0ke3Zl cnNpb259L2xsdm0tcHJvamVjdC0ke3ZlcnNpb259LnNyYy50YXIueHoiCitjaGVja3N1bT02MDc1 YWQzMGYxYWMwZTE1ZjA3YzFiZjA2MmMxZTEyNjhjMjQxZDY3NGYxMWJkMzJjZGYwZTA0MGM3MWYy YmYzCitsaWIzMmRpc2FibGVkPXllcworcHl0aG9uX3ZlcnNpb249MworCitpZiBbICIkWEJQU19U QVJHRVRfTElCQyIgPSAibXVzbCIgXTsgdGhlbgorCWNvbmZpZ3VyZV9hcmdzKz0iIC1ETElCQ1hY X0hBU19NVVNMX0xJQkM9WUVTIgorCW1ha2VkZXBlbmRzKz0iIGxpYmV4ZWNpbmZvLWRldmVsIgor CWRlcGVuZHMrPSIgbGliZXhlY2luZm8tZGV2ZWwiCitmaQorCisjICJvcGVyYW5kIG91dCBvZiBy YW5nZSIgYXNzZW1ibGVyIGZhaWx1cmVzCitjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4K KwlwcGM2NCopIDs7CisJcHBjKikgY29uZmlndXJlX2FyZ3MrPSIgLURDTEFOR19FTkFCTEVfQ0xB TkdEPU9GRiIgOzsKK2VzYWMKKworX2VuYWJsZWRfcHJvamVjdHM9ImNsYW5nO2NsYW5nLXRvb2xz LWV4dHJhO2NvbXBpbGVyLXJ0O2xpYmN4eDtsaWJjeHhhYmk7bGlidW53aW5kO2xsZCIKKworX2xs ZGJfZW5hYmxlPXllcworX2xpYm9tcF9lbmFibGU9bm8KKworY2FzZSAiJFhCUFNfVEFSR0VUX01B Q0hJTkUiIGluCisJcHBjNjRsZSopIDs7CisJcHBjKnxpNjg2KikgX2xsZGJfZW5hYmxlPW5vIDs7 Citlc2FjCisKK2Nhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCXg4Nl82NCp8YWFyY2g2 NCp8cHBjNjQqKSBfbGlib21wX2VuYWJsZT15ZXM7OworZXNhYworCitzdWJwYWNrYWdlcz0iY2xh bmctdG9vbHMtZXh0cmEiCisKKyMgbXVzdCBnbyBiZWZvcmUgY2xhbmcKK2lmIFsgIiRfbGlib21w X2VuYWJsZSIgPSAieWVzIiBdOyB0aGVuCisJX2VuYWJsZWRfcHJvamVjdHMrPSI7b3Blbm1wIgor CXN1YnBhY2thZ2VzKz0iIGxpYm9tcCBsaWJvbXAtZGV2ZWwiCisJIyBiZWNhdXNlIG9mIGNtYWtl IG5vbnNlbnNlIHJlZmVyZW5jaW5nIGxpYm9tcHRhcmdldC5zby4qCisJZGVwZW5kcys9IiBsaWJv bXA+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCitmaQorCitzdWJwYWNrYWdlcys9IiBjbGFuZyBj bGFuZy1hbmFseXplciBsaWJjbGFuZyBsaWJjbGFuZy1jcHAKKyBsbHZtLWxpYnVud2luZCBsbHZt LWxpYnVud2luZC1kZXZlbCBsaWJjeHggbGliY3h4LWRldmVsCisgbGliY3h4YWJpIGxpYmN4eGFi aS1kZXZlbCBsaWJsbHZtMTMiCisKK2lmIFsgIiRfbGxkYl9lbmFibGUiID0gInllcyIgXTsgdGhl bgorCSMgWFhYIGZhaWxzIHRvIGNyb3NzIGNvbXBpbGUgZHVlIHRvIHB5dGhvbgorCV9lbmFibGVk X3Byb2plY3RzKz0iO2xsZGIiCisJc3VicGFja2FnZXMrPSIgbGxkYiBsbGRiLWRldmVsIgorZmkK Kworc3VicGFja2FnZXMrPSIgbGxkIGxsZC1kZXZlbCIKKworY29uZmlndXJlX2FyZ3MrPSIgLURM TFZNX0VOQUJMRV9QUk9KRUNUUz0ke19lbmFibGVkX3Byb2plY3RzfSIKKworcG9zdF9wYXRjaCgp IHsKKwlpZiBbICIkX2xsZGJfZW5hYmxlIiA9ICJ5ZXMiIF07IHRoZW4KKwkJaWYgWyAiJFhCUFNf VEFSR0VUX0xJQkMiID0gIm11c2wiIF07IHRoZW4KKwkJCXZzZWQgLWkgJ3N8X19wdHJhY2VfcmVx dWVzdHxpbnR8ZycgXAorCQkJCSR7d3Jrc3JjfS9sbGRiL3NvdXJjZS9QbHVnaW5zL1Byb2Nlc3Mv TGludXgvTmF0aXZlUHJvY2Vzc0xpbnV4LmNwcAorCQlmaQorCQkjIGRpc2FibGUgZG9jcyBmb3Ig bGxkYiBhcyB0aGV5IGZhaWwgdG8gZ2VuZXJhdGUKKwkJdnNlZCAtaSAnL2FkZF9zdWJkaXJlY3Rv cnkoZG9jcykvZCcgXAorCQkJJHt3cmtzcmN9L2xsZGIvQ01ha2VMaXN0cy50eHQKKwlmaQorCisJ IyB1cGRhdGUgY29uZmlnLmd1ZXNzIGZvciBiZXR0ZXIgcGxhdGZvcm0gZGV0ZWN0aW9uCisJY3Ag JFhCUFNfQ09NTU9ORElSL2Vudmlyb25tZW50L2NvbmZpZ3VyZS9hdXRvbWFrZS9jb25maWcuZ3Vl c3MgXAorCQkke3dya3NyY30vbGx2bS9jbWFrZQorCisJIyBmaXggbGlua2VyIGZhaWx1cmVzIG9u IHNvbWUgYXJjaHMKKwl2c2VkIC1pICdzLGNoZWNrX2xpYnJhcnlfZXhpc3RzKGdjY19zIC4qLHNl dChMSUJDWFhBQklfSEFTX0dDQ19TX0xJQiBPTiksJyBcCisJCSR7d3Jrc3JjfS9saWJjeHhhYmkv Y21ha2UvY29uZmlnLWl4LmNtYWtlCisJdnNlZCAtaSAncyxjaGVja19saWJyYXJ5X2V4aXN0cyhn Y2MgLiosc2V0KExJQkNYWEFCSV9IQVNfR0NDX0xJQiBPTiksJyBcCisJCSR7d3Jrc3JjfS9saWJj eHhhYmkvY21ha2UvY29uZmlnLWl4LmNtYWtlCisKKwkjIG5lZWQgbGlic3NwX25vbnNoYXJlZCBv biBzb21lIG11c2wgcGxhdGZvcm1zIChiZWNhdXNlIG9mIG5vZGVmYXVsdGxpYnMpCisJY2FzZSAi JFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCXBwYzY0KikgOzsKKwkJcHBjKi1tdXNsfGk2ODYt bXVzbHxtaXBzKi1tdXNsKQorCQkJdnNlZCAtaSAncyxeIyBTZXR1cCBmbGFncy4kLGFkZF9saWJy YXJ5X2ZsYWdzKHNzcF9ub25zaGFyZWQpLCcgXAorCQkJCSR7d3Jrc3JjfS9saWJ1bndpbmQvc3Jj L0NNYWtlTGlzdHMudHh0CisJCQl2c2VkIC1pICdzLF4jIFNldHVwIGZsYWdzLiQsYWRkX2xpYnJh cnlfZmxhZ3Moc3NwX25vbnNoYXJlZCksJyBcCisJCQkJJHt3cmtzcmN9L2xpYmN4eGFiaS9zcmMv Q01ha2VMaXN0cy50eHQKKwkJCXZzZWQgLWkgJ3MsI3NzcCwsJyAke3dya3NyY30vbGliY3h4L0NN YWtlTGlzdHMudHh0CisJCQk7OworCWVzYWMKKworCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5F IiBpbgorCQl4ODZfNjQtbXVzbCkgIyBzb21lIHNhbml0aXplciBjdXJyZW50bHkgb25seSBvbiB4 ODZfNjQgc3R1ZmYgbmVlZHMgYmFja3RyYWNlCisJCQl2c2VkIC1pICdzLCMgU2V0IGNvbW1vbiBs aW5rIGZsYWdzLixsaXN0KEFQUEVORCBTQU5JVElaRVJfQ09NTU9OX0xJTktfTElCUyBleGVjaW5m byksJyBcCisJCQkJJHt3cmtzcmN9L2NvbXBpbGVyLXJ0L0NNYWtlTGlzdHMudHh0CisJCQk7Owor CQlhcm0qLW11c2x8aTY4Ni1tdXNsKSAjIHNhbml0aXplciBjb2RlIGlzIGJyb2tlbiBzaW5jZSBp dCBkdXBsaWNhdGVzIHNvbWUgbGliYyBiaXRzCisJCQl2c2VkIC1pICdzL3NldChDT01QSUxFUl9S VF9IQVNfU0FOSVRJWkVSX0NPTU1PTiBUUlVFKS9zZXQoQ09NUElMRVJfUlRfSEFTX1NBTklUSVpF Ul9DT01NT04gRkFMU0UpLycgXAorCQkJCSR7d3Jrc3JjfS9jb21waWxlci1ydC9jbWFrZS9jb25m aWctaXguY21ha2UKKwkJCTs7CisJZXNhYworfQorCitwcmVfY29uZmlndXJlKCkgeworCWxvY2Fs IHRyaXBsZXQKKworCSMgVmFzdGx5IHJlZHVjZSBzaXplIG9mIGRlYnVnZ2luZyBzeW1ib2xzOgor CUNGTEFHUz0ke0NGTEFHUy8gLWcvIC1nMX0KKwlDWFhGTEFHUz0ke0NYWEZMQUdTLyAtZy8gLWcx fQorCisJIyBzaW5jZSBnY2M5LCB0aGUgYnVpbGQgbGlrZXMgdG8gYmxvdyB1cCBmb3IgcHBjMzIg YXBwYXJlbnRseSBiZWNhdXNlCisJIyBvZiBjbGFuZyBiZWluZyB0b28gbGFyZ2UgZm9yIGEgMjQt Yml0IHJlbGF0aXZlIGNhbGwgdG8gdGhlIFBMVCwgc28KKwkjIG9wdGltaXplIGZvciBzaXplIGlu c3RlYWQKKwljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJcHBjNjQqKSA7OworCQlt aXBzKi1tdXNsfHBwYyopIGNvbmZpZ3VyZV9hcmdzKz0iIC1EVk9JRF9DWFhfT1BUX0ZMQUdTPS1P cyIgOzsKKwllc2FjCisKKwlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KKwkJbXNnX25vcm1h bCAiQnVpbGRpbmcgaG9zdCB0YmxnZW5cbiIKKwkJbWtkaXIgLXAgYnVpbGQvSE9TVAorCQljZCBi dWlsZC9IT1NUCisJCUNDPSIkQlVJTERfQ0MiIENYWD0iJEJVSUxEX0NYWCIgQ0ZMQUdTPSIkQlVJ TERfQ0ZMQUdTIiBcCisJCQlDWFhGTEFHUz0iJEJVSUxEX0NYWEZMQUdTIiBMREZMQUdTPSIkQlVJ TERfTERGTEFHUyIgXAorCQkJY21ha2UgLi4vLi4gLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2Ug XAorCQkJLURMTFZNX0VOQUJMRV9QUk9KRUNUUz0ke19lbmFibGVkX3Byb2plY3RzfQorCQltYWtl ICR7bWFrZWpvYnN9IC1DIHV0aWxzL1RhYmxlR2VuCisJCW1ha2UgJHttYWtlam9ic30gLUMgdG9v bHMvY2xhbmcvdXRpbHMvVGFibGVHZW4KKwkJWyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBdICYm IG1ha2UgJHttYWtlam9ic30gLUMgdG9vbHMvbGxkYi91dGlscy9UYWJsZUdlbgorCQljb25maWd1 cmVfYXJncys9IiAtRExMVk1fVEFCTEVHRU49JHt3cmtzcmN9L2xsdm0vYnVpbGQvSE9TVC9iaW4v bGx2bS10YmxnZW4iCisJCWNvbmZpZ3VyZV9hcmdzKz0iIC1EQ0xBTkdfVEFCTEVHRU49JHt3cmtz cmN9L2xsdm0vYnVpbGQvSE9TVC9iaW4vY2xhbmctdGJsZ2VuIgorCQlbICIkX2xsZGJfZW5hYmxl IiA9ICJ5ZXMiIF0gJiYgY29uZmlndXJlX2FyZ3MrPSIgLURMTERCX1RBQkxFR0VOPSR7d3Jrc3Jj fS9sbHZtL2J1aWxkL0hPU1QvYmluL2xsZGItdGJsZ2VuIgorCQljZCAuLi8uLgorCWZpCisKKwlj YXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJaTY4NiopIF9hcmNoPSJYODYiOzsKKwkJ eDg2XzY0KikgX2FyY2g9Ilg4NiI7OworCQlhcm12NSopIF9hcmNoPSJBcm12NXRlIjs7CisJCWFy bXY2KikgX2FyY2g9IkFybXY2Ijs7CisJCWFybXY3KikgX2FyY2g9IkFybXY3Ijs7CisJCWFhcmNo NjQqKSBfYXJjaD0iQUFyY2g2NCI7OworCQltaXBzKikgX2FyY2g9Ik1pcHMiOzsKKwkJcHBjKikg X2FyY2g9IlBvd2VyUEMiOzsKKwkJcmlzY3Y2NCopIF9hcmNoPSJSSVNDVjY0Ijs7CisJZXNhYwor CisJdHJpcGxldD0ke1hCUFNfQ1JPU1NfVFJJUExFVDotJFhCUFNfVFJJUExFVH0KKworCWNvbmZp Z3VyZV9hcmdzKz0iIC1ETExWTV9UQVJHRVRfQVJDSD0ke19hcmNofSIKKwljb25maWd1cmVfYXJn cys9IiAtRExMVk1fSE9TVF9UUklQTEU9JHt0cmlwbGV0fSIKKwljb25maWd1cmVfYXJncys9IiAt RExMVk1fREVGQVVMVF9UQVJHRVRfVFJJUExFPSR7dHJpcGxldH0iCit9CisKK2RvX2luc3RhbGwo KSB7CisJY2QgYnVpbGQKKwljbWFrZSAtRENNQUtFX0lOU1RBTExfUFJFRklYPSR7REVTVERJUn0v dXNyIC1QIGNtYWtlX2luc3RhbGwuY21ha2UKKworCSMgUmVxdWlyZWQgZm9yIG11bHRpbGliLgor CWlmIFsgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiA9ICJ4ODZfNjQiIF07IHRoZW4KKwkJZm9yIF9o ZWFkZXIgaW4gbGx2bS1jb25maWc7IGRvCisJCQltdiAke0RFU1RESVJ9L3Vzci9pbmNsdWRlL2xs dm0vQ29uZmlnLyR7X2hlYWRlcn17LC02NH0uaAorCQkJdmluc3RhbGwgJHtGSUxFU0RJUn0vbGx2 bS1Db25maWctJHtfaGVhZGVyfS5oIDY0NCBcCisJCQkJdXNyL2luY2x1ZGUvbGx2bS9Db25maWcg JHtfaGVhZGVyfS5oCisJCWRvbmUKKwlmaQorCisJIyBSZW1vdmUgbGx2bS1jb25maWctaG9zdCBp biBjcm9zcyBidWlsZHMuCisJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCisJCXJtIC1mICR7 REVTVERJUn0vdXNyL2Jpbi9sbHZtLWNvbmZpZy1ob3N0CisJZmkKKworCSMgSW5zdGFsbCBsaWJj eHhhYmkgaGVhZGVycworCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJjeHhhYmkvaW5jbHVkZS9fX2N4 eGFiaV9jb25maWcuaCA2NDQgdXNyL2luY2x1ZGUKKwl2aW5zdGFsbCAke3dya3NyY30vbGliY3h4 YWJpL2luY2x1ZGUvY3h4YWJpLmggNjQ0IHVzci9pbmNsdWRlCisKKwkjIEluc3RhbGwgbGlidW53 aW5kIGhlYWRlcnMKKwl2aW5zdGFsbCAke3dya3NyY30vbGlidW53aW5kL2luY2x1ZGUvX19saWJ1 bndpbmRfY29uZmlnLmggNjQ0IHVzci9pbmNsdWRlCisJdmluc3RhbGwgJHt3cmtzcmN9L2xpYnVu d2luZC9pbmNsdWRlL2xpYnVud2luZC5oIDY0NCB1c3IvaW5jbHVkZQorCXZpbnN0YWxsICR7d3Jr c3JjfS9saWJ1bndpbmQvaW5jbHVkZS91bndpbmQuaCA2NDQgdXNyL2luY2x1ZGUKKwl2aW5zdGFs bCAke3dya3NyY30vbGlidW53aW5kL2luY2x1ZGUvbWFjaC1vL2NvbXBhY3RfdW53aW5kX2VuY29k aW5nLmggXAorCQk2NDQgdXNyL2luY2x1ZGUvbWFjaC1vCit9CisKK2NsYW5nLWFuYWx5emVyX3Bh Y2thZ2UoKSB7CisJcHljb21waWxlX2RpcnM9InVzci9zaGFyZS9zY2FuLXZpZXciCisJZGVwZW5k cz0iY2xhbmctJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSBweXRob24zIHBlcmwiCisJc2hvcnRfZGVz Yys9IiAtIEEgc291cmNlIGNvZGUgYW5hbHlzaXMgZnJhbWV3b3JrIgorCWhvbWVwYWdlPSJodHRw czovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnLyIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUg dXNyL3NoYXJlL21hbi9tYW4xL3NjYW4tYnVpbGQuMQorCQl2bW92ZSAiL3Vzci9iaW4vc2Nhbi0q IgorCQl2bW92ZSAiL3Vzci9zaGFyZS9zY2FuLSoiCisJCXZtb3ZlICIvdXNyL2xpYmV4ZWMvKmFu YWx5emVyIgorCX0KK30KKworY2xhbmctdG9vbHMtZXh0cmFfcGFja2FnZSgpIHsKKwlsaWIzMmRp c2FibGVkPXllcworCWRlcGVuZHM9ImNsYW5nLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0gcHl0aG9u MyIKKwlzaG9ydF9kZXNjKz0iIC0gRXh0cmEgQ2xhbmcgdG9vbHMiCisJaG9tZXBhZ2U9Imh0dHBz Oi8vY2xhbmcubGx2bS5vcmcvZXh0cmEvIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3Iv aW5jbHVkZS9jbGFuZy10aWR5CisJCXZtb3ZlIHVzci9iaW4vY2xhbmctYXBwbHktcmVwbGFjZW1l bnRzCisJCXZtb3ZlIHVzci9iaW4vY2xhbmctcXVlcnkKKwkJdm1vdmUgdXNyL2Jpbi9jbGFuZy1y ZW5hbWUKKwkJdm1vdmUgdXNyL2Jpbi9jbGFuZy10aWR5CisJCXZtb3ZlIHVzci9iaW4vZGlhZ3Rv b2wKKwkJdm1vdmUgdXNyL2Jpbi9maW5kLWFsbC1zeW1ib2xzCisJCXZtb3ZlIHVzci9iaW4vaG1h cHRvb2wKKwkJdm1vdmUgdXNyL2Jpbi9tb2R1bGFyaXplCisJCXZtb3ZlIHVzci9iaW4vcHAtdHJh Y2UKKwkJdm1vdmUgdXNyL2Jpbi9zYW5jb3YKKwkJdm1vdmUgInVzci9saWIvbGliY2xhbmdBcHBs eVJlcGxhY2VtZW50cyoiCisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nUXVlcnkqIgorCQl2bW92 ZSAidXNyL2xpYi9saWJjbGFuZ1RpZHkqIgorCQl2bW92ZSAidXNyL3NoYXJlL2NsYW5nLyp0aWR5 KiIKKwkJdm1vdmUgdXNyL3NoYXJlL2RvYy9jbGFuZy10b29scworCQl2bW92ZSB1c3Ivc2hhcmUv bWFuL21hbjEvZXh0cmFjbGFuZ3Rvb2xzLjEKKwkJdm1vdmUgdXNyL3NoYXJlL21hbi9tYW4xL2Rp YWd0b29sLjEKKwl9Cit9CisKK2NsYW5nX3BhY2thZ2UoKSB7CisJbGliMzJkaXNhYmxlZD15ZXMK KwlkZXBlbmRzPSJsaWJzdGRjKystZGV2ZWwgbGliZ2NjLWRldmVsICBiaW51dGlscyAke1hCUFNf VEFSR0VUX0xJQkN9LWRldmVsCisJIGxpYmNsYW5nLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJ c2hvcnRfZGVzYys9IiAtIEMgbGFuZ3VhZ2UgZmFtaWx5IGZyb250ZW5kIgorCWhvbWVwYWdlPSJo dHRwczovL2NsYW5nLmxsdm0ub3JnLyIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2lu Y2x1ZGUvY2xhbmcKKwkJdm1vdmUgdXNyL2luY2x1ZGUvY2xhbmctYworCQl2bW92ZSAidXNyL2Jp bi8qY2xhbmcqIgorCQl2bW92ZSB1c3IvYmluL2MtaW5kZXgtdGVzdAorCQl2bW92ZSB1c3IvbGli L2NsYW5nCisJCXZtb3ZlIHVzci9saWIvY21ha2UvY2xhbmcKKwkJdm1vdmUgInVzci9saWIvbGli Y2xhbmcqLmEiCisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nKi5zbyIKKwkJdm1vdmUgdXNyL3No YXJlL2NsYW5nCisJCXZtb3ZlIHVzci9zaGFyZS9kb2MvY2xhbmcKKwkJdm1vdmUgdXNyL3NoYXJl L21hbi9tYW4xL2NsYW5nLjEKKwl9Cit9CisKK2xpYmNsYW5nX3BhY2thZ2UoKSB7CisJc2hvcnRf ZGVzYys9IiAtIEMgZnJvbnRlbmQgcnVudGltZSBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgewor CQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZy5zby4qIgorCX0KK30KKworbGliY2xhbmctY3BwX3Bh Y2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIEMgZnJvbnRlbmQgcnVudGltZSBsaWJyYXJ5IChD KysgaW50ZXJmYWNlKSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliY2xh bmctY3BwLnNvLioiCisJfQorfQorCitsbGRfcGFja2FnZSgpIHsKKwlsaWIzMmRpc2FibGVkPXll cworCXNob3J0X2Rlc2MrPSIgLSBsaW5rZXIiCisJaG9tZXBhZ2U9Imh0dHBzOi8vbGxkLmxsdm0u b3JnIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvYmluL2xsZCoKKwkJdm1vdmUgdXNy L2Jpbi93YXNtLWxkCisJCXZtb3ZlIHVzci9iaW4vbGQubGxkKgorCQl2bW92ZSB1c3IvYmluL2xk NjQubGxkKgorCQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2xsZAorCX0KK30KKworbGxkLWRldmVsX3Bh Y2thZ2UoKSB7CisJbGliMzJkaXNhYmxlZD15ZXMKKwlzaG9ydF9kZXNjKz0iIC0gbGlua2VyIC0g ZGV2ZWxvcG1lbnQgZmlsZXMiCisJaG9tZXBhZ2U9Imh0dHBzOi8vbGxkLmxsdm0ub3JnIgorCWRl cGVuZHM9ImxsZD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJ dm1vdmUgdXNyL2luY2x1ZGUvbGxkCisJCXZtb3ZlIHVzci9saWIvY21ha2UvbGxkCisJCXZtb3Zl ICJ1c3IvbGliL2xpYmxsZCphIgorCX0KK30KKworbGxkYl9wYWNrYWdlKCkgeworCWxpYjMyZGlz YWJsZWQ9eWVzCisJZGVwZW5kcys9IiBweXRob24zLXNpeCIKKwlzaG9ydF9kZXNjKz0iIC0gTExE QiBkZWJ1Z2dlciIKKwlob21lcGFnZT0iaHR0cHM6Ly9sbGRiLmxsdm0ub3JnLyIKKwlwa2dfaW5z dGFsbCgpIHsKKwkJdm1vdmUgdXNyL2Jpbi8qbGxkYioKKwkJdm1vdmUgdXNyL2xpYi9saWJsbGRi KnNvLioKKwkJdm1vdmUgL3Vzci9saWIvcHl0aG9uKgorCX0KK30KKworbGxkYi1kZXZlbF9wYWNr YWdlKCkgeworCWxpYjMyZGlzYWJsZWQ9eWVzCisJZGVwZW5kcz0ibGxkYj49JHt2ZXJzaW9ufV8k e3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gTExEQiBkZWJ1Z2dlciAtIGRldmVsb3BtZW50 IGZpbGVzIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZS9sbGRiCisJCXZt b3ZlICJ1c3IvbGliL2xpYmxsZGIqLnNvIgorCX0KK30KKworbGx2bS1saWJ1bndpbmRfcGFja2Fn ZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gbGlidW53aW5kIgorCXBrZ19pbnN0YWxsKCkgeworCQl2 bW92ZSAidXNyL2xpYi9saWJ1bndpbmQuc28uKiIKKwl9Cit9CisKK2xsdm0tbGlidW53aW5kLWRl dmVsX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIGxpYnVud2luZCAtIGRldmVsb3BtZW50 IGZpbGVzIgorCWRlcGVuZHM9Imxsdm0tbGlidW53aW5kPj0ke3ZlcnNpb259XyR7cmV2aXNpb259 IgorCWNvbmZsaWN0cz0ibGlidW53aW5kLWRldmVsPj0wIgorCXBrZ19pbnN0YWxsKCkgeworCQl2 bW92ZSB1c3IvbGliL2xpYnVud2luZC5zbworCQl2bW92ZSB1c3IvbGliL2xpYnVud2luZC5hCisJ CXZtb3ZlICJ1c3IvaW5jbHVkZS8qdW53aW5kKiIKKwkJdm1vdmUgdXNyL2luY2x1ZGUvbWFjaC1v CisJCXZtb3ZlIHVzci9zaGFyZS9kb2MvbGlidW53aW5kCisJfQorfQorCitsaWJjeHhhYmlfcGFj a2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gbG93IGxldmVsIHN1cHBvcnQgZm9yIGxpYmMrKyIK Kwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYysrYWJpLnNvLioiCisJfQor fQorCitsaWJjeHhhYmktZGV2ZWxfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gbG93IGxl dmVsIHN1cHBvcnQgZm9yIGxpYmMrKyAtIGRldmVsb3BtZW50IGZpbGVzIgorCWRlcGVuZHM9Imxp YmN4eGFiaT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1v dmUgdXNyL2xpYi9saWJjKythYmkuc28KKwkJdm1vdmUgdXNyL2xpYi9saWJjKythYmkuYQorCQl2 bW92ZSAidXNyL2luY2x1ZGUvKmN4eGFiaSoiCisJfQorfQorCitsaWJjeHhfcGFja2FnZSgpIHsK KwlzaG9ydF9kZXNjKz0iIC0gQysrIHN0YW5kYXJkIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7 CisJCXZtb3ZlICJ1c3IvbGliL2xpYmMrKy5zby4qIgorCX0KK30KKworbGliY3h4LWRldmVsX3Bh Y2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIEMrKyBzdGFuZGFyZCBsaWJyYXJ5IC0gZGV2ZWxv cG1lbnQgZmlsZXMiCisJZGVwZW5kcz0ibGliY3h4Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259Igor CXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvbGliL2xpYmMrKy5zbworCQl2bW92ZSB1c3Iv bGliL2xpYmMrKy5hCisJCXZtb3ZlIHVzci9saWIvbGliYysrZXhwZXJpbWVudGFsLmEKKwkJdm1v dmUgdXNyL2luY2x1ZGUvYysrCisJCXZtb3ZlIHVzci9zaGFyZS9kb2MvbGliY3h4CisJfQorfQor CitsaWJvbXBfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQ2xhbmcgT3Blbk1QIHN1cHBv cnQgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2xpYi9saWJvbXAuc28K KwkJdm1vdmUgInVzci9saWIvbGlib21wdGFyZ2V0LnJ0bC4qLnNvIgorCQl2bW92ZSB1c3IvbGli L2xpYmFyY2hlci5zbworCX0KK30KKworbGlib21wLWRldmVsX3BhY2thZ2UoKSB7CisJc2hvcnRf ZGVzYys9IiAtIENsYW5nIE9wZW5NUCBzdXBwb3J0IGxpYnJhcnkgLSBkZXZlbG9wbWVudCBmaWxl cyIKKwlkZXBlbmRzPSJsaWJvbXA+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJcGtnX2luc3Rh bGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYm9tcCouc28iCisJCXZtb3ZlICJ1c3IvbGliL2xp YmFyY2hlcioiCisJCXZtb3ZlICJ1c3IvaW5jbHVkZS9vbXAqLmgiCisJCXZtb3ZlICJ1c3IvbGli L2NsYW5nLyR7dmVyc2lvbn0vaW5jbHVkZS9vbXAqLmgiCisJCXZtb3ZlIHVzci9zaGFyZS9tYW4v bWFuMS9sbHZtb3Blbm1wLjEKKwkJdm1vdmUgdXNyL3NoYXJlL2RvYy9vcGVubXAKKwl9Cit9CisK K2xpYmxsdm0xM19wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBydW50aW1lIGxpYnJhcnki CisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYkxMVk0tKi5zbyoiCisJfQor fQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMvdXBkYXRlIGIvc3JjcGtncy9sbHZtMTMvdXBk YXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTk1Y2YyNmIzNTg2 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvdXBkYXRlCkBAIC0wLDAgKzEsMyBA QAorc2l0ZT0iaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L3JlbGVhc2VzIgor cGF0dGVybj0ibGx2bW9yZy1cSyhcZCsuKXsyfVxkKygtcmNcZCspPyIKK2lnbm9yZT0iKi1yYyoi CgpGcm9tIGQ5YjhkZTJkMjJkYzM4NTQwMGRiYjJiNzIyZjQ3NDczNDA4MzAwOWUgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0 b25pPz0KIDxsb3Vpc2RiQGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+CkRhdGU6IEZyaSwgMzEgRGVj IDIwMjEgMTY6MjM6MTcgKzAyMDAKU3ViamVjdDogW1BBVENIIDAyLzMwXSBsbHZtOiB1cGRhdGUg dG8gMTMuMC4wCgotLS0KIHNyY3BrZ3MvbGx2bS90ZW1wbGF0ZSB8IDYgKysrLS0tCiAxIGZpbGUg Y2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvbGx2bS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGx2bS90ZW1wbGF0ZQppbmRleCBhOTJkYjZm OTRmOWYuLmJjZmVlODIwOThmZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9sbHZtL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvbGx2bS90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnbGx2bScKIHBrZ25hbWU9bGx2bQotdmVyc2lvbj0xMi4wLjAKK3ZlcnNpb249MTMu MC4wCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXRhCi1kZXBlbmRzPSJsbHZtMTIiCi1yZXBs YWNlcz0ibGx2bTExPj0wIGxsdm0xMD49MCBsbHZtOT49MCBsbHZtOD49MCBsbHZtNz49MCBsbHZt Ni4wPj0wIGxsdm0zLjk+PTAiCitkZXBlbmRzPSJsbHZtMTMiCityZXBsYWNlcz0ibGx2bTEyPj0w IGxsdm0xMT49MCBsbHZtMTA+PTAgbGx2bTk+PTAgbGx2bTg+PTAgbGx2bTc+PTAgbGx2bTYuMD49 MCBsbHZtMy45Pj0wIgogc2hvcnRfZGVzYz0iTExWTSBtZXRhIHBhY2thZ2UiCiBtYWludGFpbmVy PSJFbm5vIEJvbGFuZCA8Z290dG94QHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iUHVibGljIERv bWFpbiIKCkZyb20gYmQ0ZmFjYzNmNzU1YjcxYTdkZTFjMzZiNTZjY2NlZmZiODc2YTllMSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0xvdWlzPTIwRHVwcj1DMz1BOT0y MEJlcnRvbmk/PQogPGxvdWlzZGJAbGVzcGV0aXRzcGVkZXN0cmVzLm9yZz4KRGF0ZTogRnJpLCAz MSBEZWMgMjAyMSAxNjo0Mzo1NiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDMvMzBdIGxsdm0xMjog cmVtb3ZlIGNsYW5nIHBhcnRzCgotLS0KIC4uLmNsYW5nLTAwMS1maXgtdW53aW5kLWNoYWluLWlu Y2x1c2lvbi5wYXRjaCB8ICA0NCAtLS0KIC4uLi9wYXRjaGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10 cmlwbGVzLnBhdGNoICB8IDExMCAtLS0tLS0tCiAuLi4vY2xhbmctMDAzLXBwYzY0LWR5bmFtaWMt bGlua2VyLXBhdGgucGF0Y2ggfCAgMTMgLQogLi4uL3BhdGNoZXMvY2xhbmctMDA0LXBwYzY0LW11 c2wtZWxmdjIucGF0Y2ggIHwgIDQ4IC0tLQogLi4uL2NvbXBpbGVyLXJ0LWFhcmNoNjQtdWNvbnRl eHQucGF0Y2ggICAgICAgIHwgIDExIC0KIC4uLi9jb21waWxlci1ydC1zYW5pdGl6ZXItcHBjNjQt bXVzbC5wYXRjaCAgICB8ICAzNSAtLQogLi4uL2xsdm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNp emVfdC5wYXRjaCAgIHwgIDEwIC0KIC4uLi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXhyYXktcHBjNjQt bXVzbC5wYXRjaCB8ICA2MiAtLS0tCiBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1tdXNs LnBhdGNoICAgICAgfCAgMjYgLS0KIHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4LXBwYy5w YXRjaCAgICAgICB8ICAyMiAtLQogLi4uL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hh cmVkLnBhdGNoIHwgIDExIC0KIHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4YWJpLWRsLnBh dGNoICAgICB8ICAyNSAtLQogc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJ1bndpbmQtcHBjMzIu cGF0Y2ggIHwgIDYzIC0tLS0KIHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGxkYi1tdXNsLnBhdGNo ICAgICAgICB8ICAzMSAtLQogLi4uL2xsdm0xMi9wYXRjaGVzL3BwYzMyLWNvbXBpbGVyLXJ0LnBh dGNoICAgIHwgIDIxIC0tCiBzcmNwa2dzL2xsdm0xMi90ZW1wbGF0ZSAgICAgICAgICAgICAgICAg ICAgICAgfCAzMDEgKy0tLS0tLS0tLS0tLS0tLS0tCiAxNiBmaWxlcyBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgODMyIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2 bTEyL3BhdGNoZXMvY2xhbmctMDAxLWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNoCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDItYWRkLW11 c2wtdHJpcGxlcy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNo ZXMvY2xhbmctMDAzLXBwYzY0LWR5bmFtaWMtbGlua2VyLXBhdGgucGF0Y2gKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYy LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jb21waWxl ci1ydC1hYXJjaDY0LXVjb250ZXh0LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9jb21waWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5wYXRjaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXItcnQtc2l6ZV90 LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jb21waWxl ci1ydC14cmF5LXBwYzY0LW11c2wucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xs dm0xMi9wYXRjaGVzL2xpYmN4eC1tdXNsLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtc3NwLW5vbnNoYXJlZC5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4YWJpLWRsLnBhdGNoCiBkZWxl dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJ1bndpbmQtcHBjMzIucGF0 Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsZGItbXVzbC5w YXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvcHBjMzItY29t cGlsZXItcnQucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5n LTAwMS1maXgtdW53aW5kLWNoYWluLWluY2x1c2lvbi5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3Bh dGNoZXMvY2xhbmctMDAxLWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNGVhYTc3ODNlN2EuLjAwMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwMS1maXgtdW53aW5kLWNoYWluLWluY2x1c2lv bi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gMzUyOTc0MTY5ZjBk MmI1ZGEzZDUzMjFmNTg4ZjVlM2I1OTQxMzMwZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZy b206IEFuZHJlYSBCcmFuY2FsZW9uaSA8bWl3YXhlQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgOCBT ZXAgMjAxNSAyMjoxNDo1NyArMDIwMAotU3ViamVjdDogW1BBVENIIDIvN10gZml4IHVud2luZCBj aGFpbiBpbmNsdXNpb24KLQotLS0tCi0gbGliL0hlYWRlcnMvdW53aW5kLmggfCA5ICsrKysrLS0t LQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRp ZmYgLS1naXQgYS9saWIvSGVhZGVycy91bndpbmQuaCBiL2xpYi9IZWFkZXJzL3Vud2luZC5oCi1p bmRleCAzMDNkNzkyLi40NGUxMGNjIDEwMDY0NAotLS0tIGEvY2xhbmcvbGliL0hlYWRlcnMvdW53 aW5kLmgKLSsrKyBiL2NsYW5nL2xpYi9IZWFkZXJzL3Vud2luZC5oCi1AQCAtOSw5ICs5LDYgQEAK LSAKLSAvKiBTZWUgIkRhdGEgRGVmaW5pdGlvbnMgZm9yIGxpYmdjY19zIiBpbiB0aGUgTGludXgg U3RhbmRhcmQgQmFzZS4qLwotIAotLSNpZm5kZWYgX19DTEFOR19VTldJTkRfSAotLSNkZWZpbmUg X19DTEFOR19VTldJTkRfSAotLQotICNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgX19oYXNfaW5j bHVkZV9uZXh0KDx1bndpbmQuaD4pCi0gLyogRGFyd2luIChmcm9tIDExLnggb24pIHByb3ZpZGUg YW4gdW53aW5kLmguIElmIHRoYXQncyBhdmFpbGFibGUsCi0gICogdXNlIGl0LiBsaWJ1bndpbmQg d3JhcHMgc29tZSBvZiBpdHMgZGVmaW5pdGlvbnMgaW4gI2lmZGVmIF9HTlVfU09VUkNFLAotQEAg LTM5LDYgKzM2LDkgQEAKLSAjIGVuZGlmCi0gI2Vsc2UKLSAKLSsjaWZuZGVmIF9fQ0xBTkdfVU5X SU5EX0gKLSsjZGVmaW5lIF9fQ0xBTkdfVU5XSU5EX0gKLSsKLSAjaW5jbHVkZSA8c3RkaW50Lmg+ Ci0gCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi1AQCAtMzIyLDYgKzMyMiw3IEBAIF9VbndpbmRfUHRy IF9VbndpbmRfR2V0VGV4dFJlbEJhc2Uoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqKTsKLSB9Ci0g I2VuZGlmCi0gCi0rI2VuZGlmIC8qIF9fQ0xBTkdfVU5XSU5EX0ggKi8KLSsKLSAjZW5kaWYKLSAK LS0jZW5kaWYgLyogX19DTEFOR19VTldJTkRfSCAqLwotLS0gCi0yLjUuMQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDItYWRkLW11c2wtdHJpcGxlcy5wYXRjaCBi L3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAyLWFkZC1tdXNsLXRyaXBsZXMucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1Njg4ZDQwZGJjMi4uMDAwMDAwMDAwMDAw Ci0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAyLWFkZC1tdXNsLXRyaXBsZXMu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLS0tIGEvY2xhbmcvbGliL0Ry aXZlci9Ub29sQ2hhaW5zL0dudS5jcHAKLSsrKyBiL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlu cy9HbnUuY3BwCi1AQCAtMjA4Niw3ICsyMDg2LDggQEAgdm9pZCBHZW5lcmljX0dDQzo6R0NDSW5z dGFsbGF0aW9uRGV0ZWN0b3I6OkFkZERlZmF1bHRHQ0NQcmVmaXhlcygKLSAgIHN0YXRpYyBjb25z dCBjaGFyICpjb25zdCBBUk1IRlRyaXBsZXNbXSA9IHsiYXJtLWxpbnV4LWdudWVhYmloZiIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtcmVk aGF0LWxpbnV4LWdudWVhYmkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJhcm12NmhsLXN1c2UtbGludXgtZ251ZWFiaSIsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtc3VzZS1saW51eC1nbnVlYWJp In07Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3 aGwtc3VzZS1saW51eC1nbnVlYWJpIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiYXJtdjdsLWxpbnV4LWdudWVhYmloZiJ9OwotICAgc3RhdGljIGNvbnN0 IGNoYXIgKmNvbnN0IEFSTWViTGliRGlyc1tdID0geyIvbGliIn07Ci0gICBzdGF0aWMgY29uc3Qg Y2hhciAqY29uc3QgQVJNZWJUcmlwbGVzW10gPSB7ImFybWViLWxpbnV4LWdudWVhYmkiLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYi1saW51eC1h bmRyb2lkZWFiaSJ9OwotQEAgLTIxNTMsOCArMjE1NCw3IEBAIHZvaWQgR2VuZXJpY19HQ0M6OkdD Q0luc3RhbGxhdGlvbkRldGVjdG9yOjpBZGREZWZhdWx0R0NDUHJlZml4ZXMoCi0gICAgICAgInBv d2VycGM2NC1zdXNlLWxpbnV4IiwgInBvd2VycGMtbW9udGF2aXN0YS1saW51eHNwZSJ9OwotICAg c3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQ0xFTGliRGlyc1tdID0geyIvbGliMzIiLCAiL2xp YiJ9OwotICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQ0xFVHJpcGxlc1tdID0geyJwb3dl cnBjbGUtbGludXgtZ251IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAicG93ZXJwY2xlLXVua25vd24tbGludXgtZ251IiwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwY2xlLWxpbnV4LW11c2wifTsKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwY2xlLXVu a25vd24tbGludXgtZ251In07Ci0gCi0gICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDNjRM aWJEaXJzW10gPSB7Ii9saWI2NCIsICIvbGliIn07Ci0gICBzdGF0aWMgY29uc3QgY2hhciAqY29u c3QgUFBDNjRUcmlwbGVzW10gPSB7Ci1AQCAtMjIzNSw2ICsyMjM1LDg3IEBAIHZvaWQgR2VuZXJp Y19HQ0M6OkdDQ0luc3RhbGxhdGlvbkRldGVjdG9yOjpBZGREZWZhdWx0R0NDUHJlZml4ZXMoCi0g ICAgIHJldHVybjsKLSAgIH0KLSAKLSsgIGlmIChUYXJnZXRUcmlwbGUuaXNNdXNsKCkpIHsKLSsg ICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFBcmNoNjRNdXNsVHJpcGxlc1tdID0geyJhYXJj aDY0LWxpbnV4LW11c2wifTsKLSsgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFSTUhGTXVz bFRyaXBsZXNbXSA9IHsKLSsgICAgICAgICJhcm0tbGludXgtbXVzbGVhYmloZiIsICJhcm12N2wt bGludXgtbXVzbGVhYmloZiIKLSsgICAgfTsKLSsgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0 IEFSTU11c2xUcmlwbGVzW10gPSB7ImFybS1saW51eC1tdXNsZWFiaSJ9OwotKyAgICBzdGF0aWMg Y29uc3QgY2hhciAqY29uc3QgWDg2XzY0TXVzbFRyaXBsZXNbXSA9IHsieDg2XzY0LWxpbnV4LW11 c2wifTsKLSsgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFg4Nk11c2xUcmlwbGVzW10gPSB7 Imk2ODYtbGludXgtbXVzbCJ9OwotKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgTUlQU011 c2xUcmlwbGVzW10gPSB7Ci0rICAgICAgICAibWlwcy1saW51eC1tdXNsIiwgIm1pcHNlbC1saW51 eC1tdXNsIiwKLSsgICAgICAgICJtaXBzZWwtbGludXgtbXVzbGhmIiwgIm1pcHMtbGludXgtbXVz bGhmIgotKyAgICB9OwotKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDTXVzbFRyaXBs ZXNbXSA9IHsicG93ZXJwYy1saW51eC1tdXNsIn07Ci0rICAgIHN0YXRpYyBjb25zdCBjaGFyICpj b25zdCBQUENMRU11c2xUcmlwbGVzW10gPSB7InBvd2VycGNsZS1saW51eC1tdXNsIn07Ci0rICAg IHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUEM2NE11c2xUcmlwbGVzW10gPSB7InBvd2VycGM2 NC1saW51eC1tdXNsIn07Ci0rICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUEM2NExFTXVz bFRyaXBsZXNbXSA9IHsicG93ZXJwYzY0bGUtbGludXgtbXVzbCJ9OwotKwotKyAgICBzd2l0Y2gg KFRhcmdldFRyaXBsZS5nZXRBcmNoKCkpIHsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6OmFhcmNo NjQ6Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oQUFyY2g2NExpYkRpcnMpLCBlbmQoQUFy Y2g2NExpYkRpcnMpKTsKLSsgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBQXJjaDY0 TXVzbFRyaXBsZXMpLCBlbmQoQUFyY2g2NE11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGli RGlycy5hcHBlbmQoYmVnaW4oQUFyY2g2NExpYkRpcnMpLCBlbmQoQUFyY2g2NExpYkRpcnMpKTsK LSsgICAgICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBQXJjaDY0TXVzbFRyaXBs ZXMpLCBlbmQoQUFyY2g2NE11c2xUcmlwbGVzKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2Ug bGx2bTo6VHJpcGxlOjphcm06Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oQVJNTGliRGly cyksIGVuZChBUk1MaWJEaXJzKSk7Ci0rICAgICAgaWYgKFRhcmdldFRyaXBsZS5nZXRFbnZpcm9u bWVudCgpID09IGxsdm06OlRyaXBsZTo6TXVzbEVBQklIRikgewotKyAgICAgICAgVHJpcGxlQWxp YXNlcy5hcHBlbmQoYmVnaW4oQVJNSEZNdXNsVHJpcGxlcyksIGVuZChBUk1IRk11c2xUcmlwbGVz KSk7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2lu KEFSTU11c2xUcmlwbGVzKSwgZW5kKEFSTU11c2xUcmlwbGVzKSk7Ci0rICAgICAgfQotKyAgICAg IGJyZWFrOwotKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6eDg2XzY0OgotKyAgICAgIExpYkRpcnMu YXBwZW5kKGJlZ2luKFg4Nl82NExpYkRpcnMpLCBlbmQoWDg2XzY0TGliRGlycykpOwotKyAgICAg IFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nl82NE11c2xUcmlwbGVzKSwgZW5kKFg4Nl82 NE11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2TGli RGlycyksIGVuZChYODZMaWJEaXJzKSk7Ci0rICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBl bmQoYmVnaW4oWDg2TXVzbFRyaXBsZXMpLCBlbmQoWDg2TXVzbFRyaXBsZXMpKTsKLSsgICAgICBi cmVhazsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6Ong4NjoKLSsgICAgICBMaWJEaXJzLmFwcGVu ZChiZWdpbihYODZMaWJEaXJzKSwgZW5kKFg4NkxpYkRpcnMpKTsKLSsgICAgICBUcmlwbGVBbGlh c2VzLmFwcGVuZChiZWdpbihYODZNdXNsVHJpcGxlcyksIGVuZChYODZNdXNsVHJpcGxlcykpOwot KyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFg4Nl82NExpYkRpcnMpLCBlbmQoWDg2 XzY0TGliRGlycykpOwotKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4 Nl82NE11c2xUcmlwbGVzKSwgZW5kKFg4Nl82NE11c2xUcmlwbGVzKSk7Ci0rICAgICAgYnJlYWs7 Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxlOjptaXBzOgotKyAgICAgIExpYkRpcnMuYXBwZW5kKGJl Z2luKE1JUFNMaWJEaXJzKSwgZW5kKE1JUFNMaWJEaXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNl cy5hcHBlbmQoYmVnaW4oTUlQU011c2xUcmlwbGVzKSwgZW5kKE1JUFNNdXNsVHJpcGxlcykpOwot KyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjOgotKyAgICAgIExpYkRp cnMuYXBwZW5kKGJlZ2luKFBQQ0xpYkRpcnMpLCBlbmQoUFBDTGliRGlycykpOwotKyAgICAgIFRy aXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQ011c2xUcmlwbGVzKSwgZW5kKFBQQ011c2xUcmlw bGVzKSk7Ci0rICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDNjRMaWJEaXJzKSwg ZW5kKFBQQzY0TGliRGlycykpOwotKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJl Z2luKFBQQzY0TXVzbFRyaXBsZXMpLCBlbmQoUFBDNjRNdXNsVHJpcGxlcykpOwotKyAgICAgIGJy ZWFrOwotKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjbGU6Ci0rICAgICAgTGliRGlycy5hcHBl bmQoYmVnaW4oUFBDTEVMaWJEaXJzKSwgZW5kKFBQQ0xFTGliRGlycykpOwotKyAgICAgIFRyaXBs ZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQ0xFTXVzbFRyaXBsZXMpLCBlbmQoUFBDTEVNdXNsVHJp cGxlcykpOwotKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQzY0TEVMaWJEaXJz KSwgZW5kKFBQQzY0TEVMaWJEaXJzKSk7Ci0rICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBl bmQoYmVnaW4oUFBDNjRMRU11c2xUcmlwbGVzKSwgZW5kKFBQQzY0TEVNdXNsVHJpcGxlcykpOwot KyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjQ6Ci0rICAgICAgTGli RGlycy5hcHBlbmQoYmVnaW4oUFBDNjRMaWJEaXJzKSwgZW5kKFBQQzY0TGliRGlycykpOwotKyAg ICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQzY0TXVzbFRyaXBsZXMpLCBlbmQoUFBD NjRNdXNsVHJpcGxlcykpOwotKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQ0xp YkRpcnMpLCBlbmQoUFBDTGliRGlycykpOwotKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBw ZW5kKGJlZ2luKFBQQ011c2xUcmlwbGVzKSwgZW5kKFBQQ011c2xUcmlwbGVzKSk7Ci0rICAgICAg YnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NGxlOgotKyAgICAgIExpYkRpcnMu YXBwZW5kKGJlZ2luKFBQQzY0TEVMaWJEaXJzKSwgZW5kKFBQQzY0TEVMaWJEaXJzKSk7Ci0rICAg ICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDNjRMRU11c2xUcmlwbGVzKSwgZW5kKFBQ QzY0TEVNdXNsVHJpcGxlcykpOwotKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQ Q0xFTGliRGlycyksIGVuZChQUENMRUxpYkRpcnMpKTsKLSsgICAgICBCaWFyY2hUcmlwbGVBbGlh c2VzLmFwcGVuZChiZWdpbihQUENMRU11c2xUcmlwbGVzKSwgZW5kKFBQQ0xFTXVzbFRyaXBsZXMp KTsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsKLSsgICAgfQot KyAgICBUcmlwbGVBbGlhc2VzLnB1c2hfYmFjayhUYXJnZXRUcmlwbGUuc3RyKCkpOwotKyAgICBp ZiAoVGFyZ2V0VHJpcGxlLnN0cigpICE9IEJpYXJjaFRyaXBsZS5zdHIoKSkKLSsgICAgICBCaWFy Y2hUcmlwbGVBbGlhc2VzLnB1c2hfYmFjayhCaWFyY2hUcmlwbGUuc3RyKCkpOwotKyAgICByZXR1 cm47Ci0rICB9Ci0rCi0gICAvLyBBbmRyb2lkIHRhcmdldHMgc2hvdWxkIG5vdCB1c2UgR05VL0xp bnV4IHRvb2xzIG9yIGxpYnJhcmllcy4KLSAgIGlmIChUYXJnZXRUcmlwbGUuaXNBbmRyb2lkKCkp IHsKLSAgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFBcmNoNjRBbmRyb2lkVHJpcGxlc1td ID0gewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQt ZHluYW1pYy1saW5rZXItcGF0aC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmct MDAzLXBwYzY0LWR5bmFtaWMtbGlua2VyLXBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDRhZDY0MTJkMWU2Yy4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvY2xhbmctMDAzLXBwYzY0LWR5bmFtaWMtbGlua2VyLXBhdGgucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0tLS0gYS9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFp bnMvTGludXguY3BwCi0rKysgYi9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvTGludXguY3Bw Ci1AQCAtNTA0LDEwICs1MDQsNiBAQCBzdGQ6OnN0cmluZyBMaW51eDo6Z2V0RHluYW1pY0xpbmtl cihjb25zdCBBcmdMaXN0ICZBcmdzKSBjb25zdCB7Ci0gICAgIExvYWRlciA9ICJsZC5zby4xIjsK LSAgICAgYnJlYWs7Ci0gICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjQ6Ci0tICAgIExpYkRpciA9 ICJsaWI2NCI7Ci0tICAgIExvYWRlciA9Ci0tICAgICAgICAodG9vbHM6OnBwYzo6aGFzUFBDQWJp QXJnKEFyZ3MsICJlbGZ2MiIpKSA/ICJsZDY0LnNvLjIiIDogImxkNjQuc28uMSI7Ci0tICAgIGJy ZWFrOwotICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0bGU6Ci0gICAgIExpYkRpciA9ICJsaWI2 NCI7Ci0gICAgIExvYWRlciA9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2Ns YW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9j bGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMjFmYzgwMDNjNWYxLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9jbGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDQ4ICswLDAgQEAKLS0tLSBhL2NsYW5nL2xpYi9CYXNpYy9UYXJnZXRzL1BQQy5oCi0rKysgYi9j bGFuZy9saWIvQmFzaWMvVGFyZ2V0cy9QUEMuaAotQEAgLTQxNSwxMSArNDE1LDEwIEBAIHB1Ymxp YzoKLSAgICAgICBMb25nRG91YmxlRm9ybWF0ID0gJmxsdm06OkFQRmxvYXQ6OklFRUVkb3VibGUo KTsKLSAgICAgfSBlbHNlIGlmICgoVHJpcGxlLmdldEFyY2goKSA9PSBsbHZtOjpUcmlwbGU6OnBw YzY0bGUpKSB7Ci0gICAgICAgRGF0YUxheW91dCA9ICJlLW06ZS1pNjQ6NjQtbjMyOjY0IjsKLS0g ICAgICBBQkkgPSAiZWxmdjIiOwotICAgICB9IGVsc2UgewotICAgICAgIERhdGFMYXlvdXQgPSAi RS1tOmUtaTY0OjY0LW4zMjo2NCI7Ci0tICAgICAgQUJJID0gImVsZnYxIjsKLSAgICAgfQotKyAg ICBBQkkgPSAiZWxmdjIiOwotIAotICAgICBpZiAoVHJpcGxlLmlzT1NGcmVlQlNEKCkgfHwgVHJp cGxlLmlzT1NPcGVuQlNEKCkgfHwgVHJpcGxlLmlzTXVzbCgpKSB7Ci0gICAgICAgTG9uZ0RvdWJs ZVdpZHRoID0gTG9uZ0RvdWJsZUFsaWduID0gNjQ7Ci0tLS0gYS9jbGFuZy9saWIvQ29kZUdlbi9U YXJnZXRJbmZvLmNwcAotKysrIGIvY2xhbmcvbGliL0NvZGVHZW4vVGFyZ2V0SW5mby5jcHAKLUBA IC0xMDkyNyw5ICsxMDkyNyw5IEBAIGNvbnN0IFRhcmdldENvZGVHZW5JbmZvICZDb2RlR2VuTW9k dWxlOjpnZXRUYXJnZXRDb2RlR2VuSW5mbygpIHsKLSAgICAgICByZXR1cm4gU2V0Q0dJbmZvKG5l dyBBSVhUYXJnZXRDb2RlR2VuSW5mbyhUeXBlcywgLypJczY0Qml0Ki8gdHJ1ZSkpOwotIAotICAg ICBpZiAoVHJpcGxlLmlzT1NCaW5Gb3JtYXRFTEYoKSkgewotLSAgICAgIFBQQzY0X1NWUjRfQUJJ SW5mbzo6QUJJS2luZCBLaW5kID0gUFBDNjRfU1ZSNF9BQklJbmZvOjpFTEZ2MTsKLS0gICAgICBp ZiAoZ2V0VGFyZ2V0KCkuZ2V0QUJJKCkgPT0gImVsZnYyIikKLS0gICAgICAgIEtpbmQgPSBQUEM2 NF9TVlI0X0FCSUluZm86OkVMRnYyOwotKyAgICAgIFBQQzY0X1NWUjRfQUJJSW5mbzo6QUJJS2lu ZCBLaW5kID0gUFBDNjRfU1ZSNF9BQklJbmZvOjpFTEZ2MjsKLSsgICAgICBpZiAoZ2V0VGFyZ2V0 KCkuZ2V0QUJJKCkgPT0gImVsZnYxIikKLSsgICAgICAgIEtpbmQgPSBQUEM2NF9TVlI0X0FCSUlu Zm86OkVMRnYxOwotICAgICAgIGJvb2wgSXNTb2Z0RmxvYXQgPSBDb2RlR2VuT3B0cy5GbG9hdEFC SSA9PSAic29mdCI7Ci0gCi0gICAgICAgcmV0dXJuIFNldENHSW5mbygKLS0tLSBhL2NsYW5nL2xp Yi9Ecml2ZXIvVG9vbENoYWlucy9DbGFuZy5jcHAKLSsrKyBiL2NsYW5nL2xpYi9Ecml2ZXIvVG9v bENoYWlucy9DbGFuZy5jcHAKLUBAIC0xOTIwLDE0ICsxOTIwLDcgQEAgdm9pZCBDbGFuZzo6QWRk UFBDVGFyZ2V0QXJncyhjb25zdCBBcmdMaXN0ICZBcmdzLAotICAgY29uc3QgbGx2bTo6VHJpcGxl ICZUID0gZ2V0VG9vbENoYWluKCkuZ2V0VHJpcGxlKCk7Ci0gICBpZiAoVC5pc09TQmluRm9ybWF0 RUxGKCkpIHsKLSAgICAgc3dpdGNoIChnZXRUb29sQ2hhaW4oKS5nZXRBcmNoKCkpIHsKLS0gICAg Y2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0OiB7Ci0tICAgICAgaWYgKChULmlzT1NGcmVlQlNEKCkg JiYgVC5nZXRPU01ham9yVmVyc2lvbigpID49IDEzKSB8fAotLSAgICAgICAgICBULmlzT1NPcGVu QlNEKCkgfHwgVC5pc011c2woKSkKLS0gICAgICAgIEFCSU5hbWUgPSAiZWxmdjIiOwotLSAgICAg IGVsc2UKLS0gICAgICAgIEFCSU5hbWUgPSAiZWxmdjEiOwotLSAgICAgIGJyZWFrOwotLSAgICB9 Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NDoKLSAgICAgY2FzZSBsbHZtOjpUcmlwbGU6 OnBwYzY0bGU6Ci0gICAgICAgQUJJTmFtZSA9ICJlbGZ2MiI7Ci0gICAgICAgYnJlYWs7CmRpZmYg LS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LWFhcmNoNjQtdWNvbnRl eHQucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LWFhcmNoNjQtdWNv bnRleHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5M2MwNTlkN2I4ZC4u MDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXItcnQtYWFy Y2g2NC11Y29udGV4dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLS0tLSBh L2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9saW51eC5jcHAub3Jp ZwotKysrIGIvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4 LmNwcAotQEAgLTE3OTksNyArMTc5OSw3IEBACi0gCi0gc3RhdGljIGJvb2wgQWFyY2g2NEdldEVT Uih1Y29udGV4dF90ICp1Y29udGV4dCwgdTY0ICplc3IpIHsKLSAgIHN0YXRpYyBjb25zdCB1MzIg a0Vzck1hZ2ljID0gMHg0NTUzNTIwMTsKLS0gIHU4ICphdXggPSB1Y29udGV4dC0+dWNfbWNvbnRl eHQuX19yZXNlcnZlZDsKLSsgIHU4ICphdXggPSByZWludGVycHJldF9jYXN0PHU4ICo+KHVjb250 ZXh0LT51Y19tY29udGV4dC5fX3Jlc2VydmVkKTsKLSAgIHdoaWxlICh0cnVlKSB7Ci0gICAgIF9h YXJjaDY0X2N0eCAqY3R4ID0gKF9hYXJjaDY0X2N0eCAqKWF1eDsKLSAgICAgaWYgKGN0eC0+c2l6 ZSA9PSAwKSBicmVhazsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGls ZXItcnQtc2FuaXRpemVyLXBwYzY0LW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVz L2NvbXBpbGVyLXJ0LXNhbml0aXplci1wcGM2NC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAzNWYxNmQyNGYzNDAuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xs dm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNhbml0aXplci1wcGM2NC1tdXNsLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLS0tIGEvY29tcGlsZXItcnQvbGliL3Nhbml0aXpl cl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNwcAotKysrIGIvY29tcGlsZXItcnQvbGliL3Nhbml0 aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNwcAotQEAgLTc0LDYgKzc0LDEwIEBACi0gI2lu Y2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0gI2VuZGlmCi0gCi0rI2lmIFNBTklUSVpFUl9MSU5VWCAm JiBkZWZpbmVkKF9fcG93ZXJwY19fKQotKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0rI2VuZGlm Ci0rCi0gI2lmIFNBTklUSVpFUl9MSU5VWCAmJiAhU0FOSVRJWkVSX0FORFJPSUQKLSAjaW5jbHVk ZSA8c3lzL3BlcnNvbmFsaXR5Lmg+Ci0gI2VuZGlmCi0tLS0gYS9jb21waWxlci1ydC9saWIvc2Fu aXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfcGxhdGZvcm1fbGltaXRzX3Bvc2l4LmNwcAotKysrIGIv Y29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX3BsYXRmb3JtX2xpbWl0 c19wb3NpeC5jcHAKLUBAIC05Miw3ICs5Miw3IEBACi0gIyBpbmNsdWRlIDx1dGltZS5oPgotICMg aW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotICNpZiBkZWZpbmVkKF9fbWlwczY0KSB8fCBkZWZpbmVk KF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLS0gICAgU0FOSVRJWkVSX1JJ U0NWNjQKLSsgICAgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgU0FOSVRJWkVSX1JJU0NWNjQKLSAj ICBpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0gIyAgaWZkZWYgX19hcm1fXwotIHR5cGVkZWYgc3Ry dWN0IHVzZXJfZnByZWdzIGVsZl9mcHJlZ3NldF90OwotLS0tIGEvY29tcGlsZXItcnQvbGliL3Nh bml0aXplcl9jb21tb24vc2FuaXRpemVyX3N0b3B0aGV3b3JsZF9saW51eF9saWJjZGVwLmNwcAot KysrIGIvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX3N0b3B0aGV3 b3JsZF9saW51eF9saWJjZGVwLmNwcAotQEAgLTMxLDcgKzMxLDcgQEAKLSAjaW5jbHVkZSA8c3lz L3R5cGVzLmg+IC8vIGZvciBwaWRfdAotICNpbmNsdWRlIDxzeXMvdWlvLmg+IC8vIGZvciBpb3Zl YwotICNpbmNsdWRlIDxlbGYuaD4gLy8gZm9yIE5UX1BSU1RBVFVTCi0tI2lmIChkZWZpbmVkKF9f YWFyY2g2NF9fKSB8fCBTQU5JVElaRVJfUklTQ1Y2NCkgJiYgIVNBTklUSVpFUl9BTkRST0lECi0r I2lmIChkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBTQU5J VElaRVJfUklTQ1Y2NCkgJiYgIVNBTklUSVpFUl9BTkRST0lECi0gLy8gR0xJQkMgMi4yMCsgc3lz L3VzZXIgZG9lcyBub3QgaW5jbHVkZSBhc20vcHRyYWNlLmgKLSAjIGluY2x1ZGUgPGFzbS9wdHJh Y2UuaD4KLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGls ZXItcnQtc2l6ZV90LnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jb21waWxlci1ydC1z aXplX3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjNjMwNjNhNWU5ZS4u MDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXItcnQtc2l6 ZV90LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLS0tIGEvY29tcGlsZXIt cnQvbGliL2Z1enplci9GdXp6ZXJJbnRlcmNlcHRvcnMuY3BwLm9yaWcKLSsrKyBiL2NvbXBpbGVy LXJ0L2xpYi9mdXp6ZXIvRnV6emVySW50ZXJjZXB0b3JzLmNwcAotQEAgLTI1LDYgKzI1LDcgQEAK LSAgIH0KLSAKLSAjaW5jbHVkZSA8Y2Fzc2VydD4KLSsjaW5jbHVkZSA8Y3N0ZGRlZj4KLSAjaW5j bHVkZSA8Y3N0ZGludD4KLSAjaW5jbHVkZSA8ZGxmY24uaD4gLy8gZm9yIGRsc3ltKCkKLSAKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXItcnQteHJheS1wcGM2NC1t dXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jb21waWxlci1ydC14cmF5LXBwYzY0 LW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwYjYxYzgwYzg5Ny4u MDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXItcnQteHJh eS1wcGM2NC1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLS0tIGEv Y29tcGlsZXItcnQvbGliL3hyYXkveHJheV9wb3dlcnBjNjQuaW5jCi0rKysgYi9jb21waWxlci1y dC9saWIveHJheS94cmF5X3Bvd2VycGM2NC5pbmMKLUBAIC0xMiw3ICsxMiwxMyBAQAotIAotICNp bmNsdWRlIDxjc3RkaW50PgotICNpbmNsdWRlIDxtdXRleD4KLSsjaWZkZWYgX19HTElCQ19fCi0g I2luY2x1ZGUgPHN5cy9wbGF0Zm9ybS9wcGMuaD4KLSsjZWxzZQotKyNpbmNsdWRlIDxjY3R5cGU+ Ci0rI2luY2x1ZGUgPGNzdHJpbmc+Ci0rI2luY2x1ZGUgPGNzdGRsaWI+Ci0rI2VuZGlmCi0gCi0g I2luY2x1ZGUgInhyYXlfZGVmcy5oIgotIAotQEAgLTIwLDEzICsyNiw0NSBAQCBuYW1lc3BhY2Ug X194cmF5IHsKLSAKLSBBTFdBWVNfSU5MSU5FIHVpbnQ2NF90IHJlYWRUU0ModWludDhfdCAmQ1BV KSBYUkFZX05FVkVSX0lOU1RSVU1FTlQgewotICAgQ1BVID0gMDsKLSsjaWZkZWYgX19HTElCQ19f Ci0gICByZXR1cm4gX19wcGNfZ2V0X3RpbWViYXNlKCk7Ci0rI2Vsc2UKLSsgIHJldHVybiBfX2J1 aWx0aW5fcHBjX2dldF90aW1lYmFzZSgpOwotKyNlbmRpZgotIH0KLSAKLSBpbmxpbmUgdWludDY0 X3QgZ2V0VFNDRnJlcXVlbmN5KCkgWFJBWV9ORVZFUl9JTlNUUlVNRU5UIHsKLSAgIHN0YXRpYyBz dGQ6Om11dGV4IE07Ci0gICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gR3VhcmQoTSk7Ci0r I2lmZGVmIF9fR0xJQkNfXwotICAgcmV0dXJuIF9fcHBjX2dldF90aW1lYmFzZV9mcmVxKCk7Ci0r I2Vsc2UKLSsgIC8qIEZJWE1FOiBhIGxlc3MgZGlydHkgaW1wbGVtZW50YXRpb24/ICovCi0rICBz dGF0aWMgdWludDY0X3QgYmFzZTsKLSsgIGlmICghYmFzZSkgewotKyAgICBGSUxFICpmID0gZm9w ZW4oIi9wcm9jL2NwdWluZm8iLCAicmIiKTsKLSsgICAgaWYgKGYpIHsKLSsgICAgICBzc2l6ZV90 IG5yOwotKyAgICAgIC8qIHZpcnR1YWxseSBhbHdheXMgYmlnIGVub3VnaCB0byBob2xkIHRoZSBs aW5lICovCi0rICAgICAgY2hhciBidWZbNTEyXTsKLSsgICAgICB3aGlsZSAoZmdldHMoYnVmLCBz aXplb2YoYnVmKSwgZikpIHsKLSsgICAgICAgIGNoYXIgKnJldCA9IHN0cnN0cihidWYsICJ0aW1l YmFzZSIpOwotKyAgICAgICAgaWYgKCFyZXQpIHsKLSsgICAgICAgICAgY29udGludWU7Ci0rICAg ICAgICB9Ci0rICAgICAgICByZXQgKz0gc2l6ZW9mKCJ0aW1lYmFzZSIpIC0gMTsKLSsgICAgICAg IHJldCA9IHN0cmNocihyZXQsICc6Jyk7Ci0rICAgICAgICBpZiAoIXJldCkgewotKyAgICAgICAg ICBjb250aW51ZTsKLSsgICAgICAgIH0KLSsgICAgICAgIGJhc2UgPSBzdHJ0b3VsKHJldCArIDEs IG51bGxwdHIsIDEwKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgICBmY2xvc2Uo Zik7Ci0rICAgIH0KLSsgIH0KLSsgIHJldHVybiBiYXNlOwotKyNlbmRpZgotIH0KLSAKLSBpbmxp bmUgYm9vbCBwcm9iZVJlcXVpcmVkQ1BVRmVhdHVyZXMoKSBYUkFZX05FVkVSX0lOU1RSVU1FTlQg ewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRjaCBi L3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGJiZDMxZmZjMmNiMS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3Mv bGx2bTEyL3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiAr MCwwIEBACi0tLS0gYS9saWJjeHgvaW5jbHVkZS9sb2NhbGUKLSsrKyBiL2xpYmN4eC9pbmNsdWRl L2xvY2FsZQotQEAgLTc0Miw3ICs3NDIsMTEgQEAgX19udW1fZ2V0X3NpZ25lZF9pbnRlZ3JhbChj b25zdCBjaGFyKiBfX2EsIGNvbnN0IGNoYXIqIF9fYV9lbmQsCi0gICAgICAgICB0eXBlbmFtZSBy ZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGVycm5vKT46OnR5cGUgX19zYXZlX2Vycm5vID0gZXJy bm87Ci0gICAgICAgICBlcnJubyA9IDA7Ci0gICAgICAgICBjaGFyICpfX3AyOwotKyNpZiBkZWZp bmVkKF9fbGludXhfXykgJiYgIWRlZmluZWQoX19HTElCQ19fKQotKyAgICAgICAgbG9uZyBsb25n IF9fbGwgPSBzdHJ0b2xsKF9fYSwgJl9fcDIsIF9fYmFzZSk7Ci0rI2Vsc2UKLSAgICAgICAgIGxv bmcgbG9uZyBfX2xsID0gc3RydG9sbF9sKF9fYSwgJl9fcDIsIF9fYmFzZSwgX0xJQkNQUF9HRVRf Q19MT0NBTEUpOwotKyNlbmRpZgotICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxk ZWNsdHlwZShlcnJubyk+Ojp0eXBlIF9fY3VycmVudF9lcnJubyA9IGVycm5vOwotICAgICAgICAg aWYgKF9fY3VycmVudF9lcnJubyA9PSAwKQotICAgICAgICAgICAgIGVycm5vID0gX19zYXZlX2Vy cm5vOwotQEAgLTc4Miw3ICs3ODYsMTEgQEAgX19udW1fZ2V0X3Vuc2lnbmVkX2ludGVncmFsKGNv bnN0IGNoYXIqIF9fYSwgY29uc3QgY2hhciogX19hX2VuZCwKLSAgICAgICAgIHR5cGVuYW1lIHJl bW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlwZSBfX3NhdmVfZXJybm8gPSBlcnJu bzsKLSAgICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgIGNoYXIgKl9fcDI7Ci0rI2lmIGRlZmlu ZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX0dMSUJDX18pCi0rICAgICAgICB1bnNpZ25lZCBs b25nIGxvbmcgX19sbCA9IHN0cnRvdWxsKF9fYSwgJl9fcDIsIF9fYmFzZSk7Ci0rI2Vsc2UKLSAg ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2xsID0gc3RydG91bGxfbChfX2EsICZfX3AyLCBf X2Jhc2UsIF9MSUJDUFBfR0VUX0NfTE9DQUxFKTsKLSsjZW5kaWYKLSAgICAgICAgIHR5cGVuYW1l IHJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlwZSBfX2N1cnJlbnRfZXJybm8g PSBlcnJubzsKLSAgICAgICAgIGlmIChfX2N1cnJlbnRfZXJybm8gPT0gMCkKLSAgICAgICAgICAg ICBlcnJubyA9IF9fc2F2ZV9lcnJubzsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNo ZXMvbGliY3h4LXBwYy5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4LXBwYy5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E5MmY4MDA0ZTFjLi4wMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhpcyBlbnN1cmVzIGBpc19pZWM1NTlgIGlzIGRl ZmluZWQgY29ycmVjdGx5IHVuZGVyIGFsbCBsb25nIGRvdWJsZSBBQklzLAotaW5jbHVkaW5nIG11 c2wgYW5kIGl0cyA2NC1iaXQgbG9uZyBkb3VibGUuIEFsc28sIGBfX3BwY19fYCBvciBgX19wcGM2 NF9fYAotaXMgbm90IGRlZmluZWQgb24gZ2NjLgotCi0tLS0gYS9saWJjeHgvaW5jbHVkZS9saW1p dHMKLSsrKyBiL2xpYmN4eC9pbmNsdWRlL2xpbWl0cwotQEAgLTQyNiw4ICs0MjYsMTQgQEAgcHJv dGVjdGVkOgotICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHN0YXRpYyBfTElCQ1BQX0NP TlNURVhQUiB0eXBlIHNpZ25hbGluZ19OYU4oKSBfTk9FWENFUFQge3JldHVybiBfX2J1aWx0aW5f bmFuc2woIiIpO30KLSAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBzdGF0aWMgX0xJQkNQ UF9DT05TVEVYUFIgdHlwZSBkZW5vcm1fbWluKCkgX05PRVhDRVBUIHtyZXR1cm4gX19MREJMX0RF Tk9STV9NSU5fXzt9Ci0gCi0tI2lmIChkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19wcGM2 NF9fKSkKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotKyNpZiAoX19MREJMX01BWF9FWFBfXyA+IF9fREJMX01BWF9FWFBfXykgfHwgKF9fTERCTF9N QU5UX0RJR19fID09IF9fREJMX01BTlRfRElHX18pCi0rICAgIC8qIElFRUUgNzU0IHF1YWRydXBs ZSBvciBkb3VibGUgcHJlY2lzaW9uICovCi0rICAgIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiBj b25zdCBib29sIGlzX2llYzU1OSA9IHRydWU7Ci0rI2Vsc2UKLSsgICAgLyogMTI4LWJpdCBJQk0g ZG91YmxlLWRvdWJsZSAqLwotICAgICBzdGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgY29uc3QgYm9v bCBpc19pZWM1NTkgPSBmYWxzZTsKLSsjZW5kaWYKLSAjZWxzZQotICAgICBzdGF0aWMgX0xJQkNQ UF9DT05TVEVYUFIgY29uc3QgYm9vbCBpc19pZWM1NTkgPSB0cnVlOwotICNlbmRpZgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtc3NwLW5vbnNoYXJlZC5wYXRjaCBi L3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4LXNzcC1ub25zaGFyZWQucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMjkyYmViMmZjZC4uMDAwMDAwMDAwMDAwCi0tLSBh L3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4LXNzcC1ub25zaGFyZWQucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gYS9saWJjeHgvQ01ha2VMaXN0cy50eHQKLSsr KyBiL2xpYmN4eC9DTWFrZUxpc3RzLnR4dAotQEAgLTc2OSw2ICs3NjksOCBAQCBmdW5jdGlvbihj eHhfbGlua19zeXN0ZW1fbGlicmFyaWVzIHRhcmdldCkKLSAgICAgdGFyZ2V0X2xpbmtfbGlicmFy aWVzKCR7dGFyZ2V0fSBQUklWQVRFIGF0b21pYykKLSAgIGVuZGlmKCkKLSAKLSsjc3NwICB0YXJn ZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgc3NwX25vbnNoYXJlZCkKLSsKLSAg IGlmIChNSU5HVykKLSAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGFyZ2V0fSBQUklWQVRF ICIke01JTkdXX0xJQlJBUklFU30iKQotICAgZW5kaWYoKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVz L2xpYmN4eGFiaS1kbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ExNWY5 ZGI4Yzk4Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHhh YmktZGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1BbHNvIGxpbmsgdG8g LWxkbCB0byBwcmV2ZW50IHVuZGVmaW5lZCByZWZlcmVuY2VzLgotCi0tLS0gYS9saWJjeHhhYmkv c3JjL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9saWJjeHhhYmkvc3JjL0NNYWtlTGlzdHMudHh0Ci1A QCAtNzMsNiArNzMsNyBAQAotICAgZW5kaWYoKQotIAotICAgYWRkX2xpYnJhcnlfZmxhZ3NfaWYo TElCQ1hYQUJJX0hBU19DX0xJQiBjKQotKyAgYWRkX2xpYnJhcnlfZmxhZ3NfaWYoTElCQ1hYQUJJ X0hBU19DX0xJQiBkbCkKLSBlbmRpZigpCi0gCi0gaWYgKExJQkNYWEFCSV9VU0VfTExWTV9VTldJ TkRFUikKLS0tLSBhL2xpYmN4eC9DTWFrZUxpc3RzLnR4dAotKysrIGIvbGliY3h4L0NNYWtlTGlz dHMudHh0Ci1AQCAtNzQ1LDYgKzc0NSwxMCBAQAotICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMo JHt0YXJnZXR9IFBSSVZBVEUgbSkKLSAgIGVuZGlmKCkKLSAKLSsgIGlmIChMSUJDWFhfSEFTX0Nf TElCKQotKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgZGwpCi0r ICBlbmRpZigpCi0rCi0gICBpZiAoTElCQ1hYX0hBU19SVF9MSUIpCi0gICAgIHRhcmdldF9saW5r X2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFURSBydCkKLSAgIGVuZGlmKCkKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGlidW53aW5kLXBwYzMyLnBhdGNoIGIvc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9saWJ1bndpbmQtcHBjMzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDc0YWE3NTc2ZWNmOS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvbGlidW53aW5kLXBwYzMyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAs MCBAQAotVGhpcyBmaXhlcyBidWlsZCBhdCBsZWFzdCB3aXRoIGdjYzkgd2hpY2ggZG9lcyBub3Qg ZGVmaW5lIGBfX3BwY19fYC4KLQotLS0tIGEvbGlidW53aW5kL2luY2x1ZGUvX19saWJ1bndpbmRf Y29uZmlnLmgKLSsrKyBiL2xpYnVud2luZC9pbmNsdWRlL19fbGlidW53aW5kX2NvbmZpZy5oCi1A QCAtNDksNyArNDksNyBAQAotICMgIGRlZmluZSBfTElCVU5XSU5EX0NPTlRFWFRfU0laRSAxNjcK LSAjICBkZWZpbmUgX0xJQlVOV0lORF9DVVJTT1JfU0laRSAxNzkKLSAjICBkZWZpbmUgX0xJQlVO V0lORF9ISUdIRVNUX0RXQVJGX1JFR0lTVEVSIF9MSUJVTldJTkRfSElHSEVTVF9EV0FSRl9SRUdJ U1RFUl9QUEM2NAotLSMgZWxpZiBkZWZpbmVkKF9fcHBjX18pCi0rIyBlbGlmIGRlZmluZWQoX19w b3dlcnBjX18pCi0gIyAgZGVmaW5lIF9MSUJVTldJTkRfVEFSR0VUX1BQQyAxCi0gIyAgZGVmaW5l IF9MSUJVTldJTkRfQ09OVEVYVF9TSVpFIDExNwotICMgIGRlZmluZSBfTElCVU5XSU5EX0NVUlNP Ul9TSVpFIDEyNAotLS0tIGEvbGlidW53aW5kL3NyYy9VbndpbmRSZWdpc3RlcnNSZXN0b3JlLlMK LSsrKyBiL2xpYnVud2luZC9zcmMvVW53aW5kUmVnaXN0ZXJzUmVzdG9yZS5TCi1AQCAtMzkyLDcg KzM5Miw3IEBAIExub3ZlYzoKLSAgIFBQQzY0X0xSKDMpCi0gICBiY3RyCi0gCi0tI2VsaWYgZGVm aW5lZChfX3BwY19fKQotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCi0gCi0gREVGSU5FX0xJ QlVOV0lORF9GVU5DVElPTihfWk45bGlidW53aW5kMTNSZWdpc3RlcnNfcHBjNmp1bXB0b0V2KQot IC8vCi0tLS0gYS9saWJ1bndpbmQvc3JjL1Vud2luZFJlZ2lzdGVyc1NhdmUuUwotKysrIGIvbGli dW53aW5kL3NyYy9VbndpbmRSZWdpc3RlcnNTYXZlLlMKLUBAIC01NTQsNyArNTU0LDcgQEAgREVG SU5FX0xJQlVOV0lORF9GVU5DVElPTihfX3Vud19nZXRjb250ZXh0KQotICAgYmxyCi0gCi0gCi0t I2VsaWYgZGVmaW5lZChfX3BwY19fKQotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCi0gCi0g Ly8KLSAvLyBleHRlcm4gaW50IHVud19nZXRjb250ZXh0KHVud19jb250ZXh0X3QqIHRocmVhZF9z dGF0ZSkKLS0tLSBhL2xpYnVud2luZC9zcmMvY29uZmlnLmgKLSsrKyBiL2xpYnVud2luZC9zcmMv Y29uZmlnLmgKLUBAIC05NSwxMiArOTUsMTIgQEAKLSAjZGVmaW5lIF9MSUJVTldJTkRfQlVJTERf U0pMSl9BUElTCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X194ODZfNjRfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fcHBjNjRfXykgfHwg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSAjZGVmaW5lIF9MSUJVTldJTkRfU1VQUE9SVF9GUkFNRV9BUElTCi0gI2VuZGlmCi0g Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZp bmVkKF9fcHBjNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSB8fCAgICAgICAgXAotKyAg ICBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pIHx8ICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICghZGVmaW5lZChfX0FQUExFX18pICYmIGRlZmlu ZWQoX19hcm1fXykpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgKGRl ZmluZWQoX19hcm02NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSkgfHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotICAgICBkZWZpbmVkKF9fbWlwc19fKQotLS0tIGEvbGlidW53aW5k L3NyYy9saWJ1bndpbmQuY3BwCi0rKysgYi9saWJ1bndpbmQvc3JjL2xpYnVud2luZC5jcHAKLUBA IC00Miw3ICs0Miw3IEBAIF9MSUJVTldJTkRfSElEREVOIGludCBfX3Vud19pbml0X2xvY2FsKHVu d19jdXJzb3JfdCAqY3Vyc29yLAotICMgZGVmaW5lIFJFR0lTVEVSX0tJTkQgUmVnaXN0ZXJzX3g4 Nl82NAotICNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAjIGRlZmluZSBSRUdJU1RFUl9L SU5EIFJlZ2lzdGVyc19wcGM2NAotLSNlbGlmIGRlZmluZWQoX19wcGNfXykKLSsjZWxpZiBkZWZp bmVkKF9fcG93ZXJwY19fKQotICMgZGVmaW5lIFJFR0lTVEVSX0tJTkQgUmVnaXN0ZXJzX3BwYwot ICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCi0gIyBkZWZpbmUgUkVHSVNURVJfS0lORCBSZWdp c3RlcnNfYXJtNjQKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGxkYi1tdXNs LnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbGRiLW11c2wucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMWMwZDEzODUyMy4uMDAwMDAwMDAwMDAwCi0tLSBhL3Ny Y3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGxkYi1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MzEgKzAsMCBAQAotLS0tIGEvbGxkYi9zb3VyY2UvUGx1Z2lucy9Qcm9jZXNzL0xpbnV4L1Byb2Nm cy5oCi0rKysgYi9sbGRiL3NvdXJjZS9QbHVnaW5zL1Byb2Nlc3MvTGludXgvUHJvY2ZzLmgKLUBA IC0xMCwyMSArMTAsMTIgQEAKLSAvLyBzeXMvcHJvY2ZzLmggb24gQW5kcm9pZC9MaW51eCBmb3Ig YWxsIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzLgotIAotICNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+ Ci0rI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSAKLS0jaWZkZWYgX19BTkRST0lEX18KLS0jaWYg ZGVmaW5lZChfX2FybTY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pCi0tdHlwZWRlZiB1bnNp Z25lZCBsb25nIGVsZl9ncmVnX3Q7Ci0tdHlwZWRlZiBlbGZfZ3JlZ190Ci0tICAgIGVsZl9ncmVn c2V0X3RbKHNpemVvZihzdHJ1Y3QgdXNlcl9wdF9yZWdzKSAvIHNpemVvZihlbGZfZ3JlZ190KSld OwotLXR5cGVkZWYgc3RydWN0IHVzZXJfZnBzaW1kX3N0YXRlIGVsZl9mcHJlZ3NldF90OwotLSNp Zm5kZWYgTlRfRlBSRUdTRVQKLS0jZGVmaW5lIE5UX0ZQUkVHU0VUIE5UX1BSRlBSRUcKLS0jZW5k aWYgLy8gTlRfRlBSRUdTRVQKLS0jZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotLSNpZm5kZWYgTlRf RlBSRUdTRVQKLS0jZGVmaW5lIE5UX0ZQUkVHU0VUIE5UX1BSRlBSRUcKLS0jZW5kaWYgLy8gTlRf RlBSRUdTRVQKLS0jZW5kaWYKLS0jZWxzZSAvLyBfX0FORFJPSURfXwotKyNpZiAhZGVmaW5lZChf X0dMSUJDX18pICYmIGRlZmluZWQoX19wb3dlcnBjX18pCi0rI2RlZmluZSBwdF9yZWdzIG11c2xf cHRfcmVncwotKyNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+Ci0rI3VuZGVmIHB0X3JlZ3MKLSsjZWxz ZQotICNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+Ci0tI2VuZGlmIC8vIF9fQU5EUk9JRF9fCi0rI2Vu ZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL3BwYzMyLWNvbXBpbGVyLXJ0 LnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9wcGMzMi1jb21waWxlci1ydC5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUwYTlhNzc5ZDFiLi4wMDAwMDAwMDAwMDAK LS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9wcGMzMi1jb21waWxlci1ydC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLWNvbW1pdCBiYTRlZGU1OTVmZjk1OTkyMzJmNWRk MmI0Mzg0YzI0MzEzN2I1M2ZjCi1BdXRob3I6IERhbmllbCBLb2xlc2EgPGRhbmllbEBvY3RhZm9y Z2Uub3JnPgotRGF0ZTogICBUdWUgSnVuIDIyIDIzOjQwOjU0IDIwMjEgKzAyMDAKLQotICAgIGVu YWJsZSBjb21waWxlci1ydCBzdXBwb3J0IGZvciBwcGMzMgotCi1kaWZmIC0tZ2l0IGEvY29tcGls ZXItcnQvY21ha2UvYmFzZS1jb25maWctaXguY21ha2UgYi9jb21waWxlci1ydC9jbWFrZS9iYXNl LWNvbmZpZy1peC5jbWFrZQotaW5kZXggMWVkYWI0My4uNWMwYzhhMiAxMDA2NDQKLS0tLSBhL2Nv bXBpbGVyLXJ0L2NtYWtlL2Jhc2UtY29uZmlnLWl4LmNtYWtlCi0rKysgYi9jb21waWxlci1ydC9j bWFrZS9iYXNlLWNvbmZpZy1peC5jbWFrZQotQEAgLTE4Miw5ICsxODIsNyBAQCBtYWNybyh0ZXN0 X3RhcmdldHMpCi0gICAgIGVsc2VpZigiJHtDT01QSUxFUl9SVF9ERUZBVUxUX1RBUkdFVF9BUkNI fSIgTUFUQ0hFUyAicG93ZXJwYzY0bGUiKQotICAgICAgIHRlc3RfdGFyZ2V0X2FyY2gocG93ZXJw YzY0bGUgIiIgIi1tNjQiKQotICAgICBlbHNlaWYoIiR7Q09NUElMRVJfUlRfREVGQVVMVF9UQVJH RVRfQVJDSH0iIE1BVENIRVMgInBvd2VycGMiKQotLSAgICAgIGlmKENNQUtFX1NZU1RFTV9OQU1F IE1BVENIRVMgIkFJWCIpCi0tICAgICAgICB0ZXN0X3RhcmdldF9hcmNoKHBvd2VycGMgIiIgIi1t MzIiKQotLSAgICAgIGVuZGlmKCkKLSsgICAgICB0ZXN0X3RhcmdldF9hcmNoKHBvd2VycGMgIiIg Ii1tMzIiKQotICAgICAgIHRlc3RfdGFyZ2V0X2FyY2gocG93ZXJwYzY0ICIiICItbTY0IikKLSAg ICAgZWxzZWlmKCIke0NPTVBJTEVSX1JUX0RFRkFVTFRfVEFSR0VUX0FSQ0h9IiBNQVRDSEVTICJz MzkweCIpCi0gICAgICAgdGVzdF90YXJnZXRfYXJjaChzMzkweCAiIiAiIikKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbGx2bTEyL3RlbXBsYXRlIGIvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUKaW5kZXgg N2NlMTgwMjhlNGEzLi43YjM2MWJiYmY1YmMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGx2bTEyL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvbGx2bTEyL3RlbXBsYXRlCkBAIC0xLDI1ICsxLDE3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdsbHZtMTInCiBwa2duYW1lPWxsdm0xMgogdmVyc2lvbj0xMi4w LjEKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIHdya3NyYz0ibGx2bS1wcm9qZWN0LSR7dmVyc2lv bn0uc3JjIgogYnVpbGRfd3Jrc3JjPWxsdm0KIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVf YXJncz0iCiAgLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgLVduby1kZXYKICAtREVOQUJMRV9M SU5LRVJfQlVJTERfSUQ9WUVTCi0gLURMTERCX1VTRV9TWVNURU1fU0lYPVlFUwotIC1ETElCQ1hY X0NYWF9BQkk9bGliY3h4YWJpCi0gLURMSUJDWFhfRU5BQkxFX1NUQVRJQ19BQklfTElCUkFSWT1Z RVMKLSAtRExJQkNYWEFCSV9VU0VfTExWTV9VTldJTkRFUj1ZRVMKLSAtRExJQkNYWEFCSV9FTkFC TEVfU1RBVElDX1VOV0lOREVSPVlFUwotIC1ETElCT01QX0VOQUJMRV9TSEFSRUQ9WUVTCi0gLURM SUJPTVBfSU5TVEFMTF9BTElBU0VTPU5PCiAgLURMTFZNX0lOQ0xVREVfRE9DUz1ZRVMKICAtRExM Vk1fQlVJTERfRE9DUz1ZRVMKICAtRExMVk1fRU5BQkxFX1NQSElOWD1ZRVMKICAtRFNQSElOWF9X QVJOSU5HU19BU19FUlJPUlM9Tk8KLSAtRExMVk1fSU5TVEFMTF9VVElMUz1ZRVMKICAtRExMVk1f QlVJTERfTExWTV9EWUxJQj1ZRVMKICAtRExMVk1fTElOS19MTFZNX0RZTElCPVlFUwogIC1ETExW TV9FTkFCTEVfUlRUST1ZRVMKQEAgLTUxLDg3ICs0MywxMCBAQCBjYXNlICIkWEJQU19UQVJHRVRf TUFDSElORSIgaW4KIAlwcGMqKSBjb25maWd1cmVfYXJncys9IiAtRENMQU5HX0VOQUJMRV9DTEFO R0Q9T0ZGIiA7OwogZXNhYwogCi1fZW5hYmxlZF9wcm9qZWN0cz0iY2xhbmc7Y2xhbmctdG9vbHMt ZXh0cmE7Y29tcGlsZXItcnQ7bGliY3h4O2xpYmN4eGFiaTtsaWJ1bndpbmQ7bGxkIgotCi1fbGxk Yl9lbmFibGU9eWVzCi1fbGlib21wX2VuYWJsZT1ubwotCi1jYXNlICIkWEJQU19UQVJHRVRfTUFD SElORSIgaW4KLQlwcGM2NGxlKikgOzsKLQlwcGMqfGk2ODYqKSBfbGxkYl9lbmFibGU9bm8gOzsK LWVzYWMKLQotY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCi0JeDg2XzY0KnxhYXJjaDY0 KnxwcGM2NCopIF9saWJvbXBfZW5hYmxlPXllczs7Ci1lc2FjCi0KLXN1YnBhY2thZ2VzPSJjbGFu Zy10b29scy1leHRyYSIKLQotIyBtdXN0IGdvIGJlZm9yZSBjbGFuZwotaWYgWyAiJF9saWJvbXBf ZW5hYmxlIiA9ICJ5ZXMiIF07IHRoZW4KLQlfZW5hYmxlZF9wcm9qZWN0cys9IjtvcGVubXAiCi0J c3VicGFja2FnZXMrPSIgbGlib21wIGxpYm9tcC1kZXZlbCIKLQkjIGJlY2F1c2Ugb2YgY21ha2Ug bm9uc2Vuc2UgcmVmZXJlbmNpbmcgbGlib21wdGFyZ2V0LnNvLioKLQlkZXBlbmRzKz0iIGxpYm9t cD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLWZpCi0KLXN1YnBhY2thZ2VzKz0iIGNsYW5nIGNs YW5nLWFuYWx5emVyIGxpYmNsYW5nIGxpYmNsYW5nLWNwcAotIGxsdm0tbGlidW53aW5kIGxsdm0t bGlidW53aW5kLWRldmVsIGxpYmN4eCBsaWJjeHgtZGV2ZWwKLSBsaWJjeHhhYmkgbGliY3h4YWJp LWRldmVsIGxpYmxsdm0xMiIKLQotaWYgWyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBdOyB0aGVu Ci0JIyBYWFggZmFpbHMgdG8gY3Jvc3MgY29tcGlsZSBkdWUgdG8gcHl0aG9uCi0JX2VuYWJsZWRf cHJvamVjdHMrPSI7bGxkYiIKLQlzdWJwYWNrYWdlcys9IiBsbGRiIGxsZGItZGV2ZWwiCi1maQot Ci1zdWJwYWNrYWdlcys9IiBsbGQgbGxkLWRldmVsIgotCi1jb25maWd1cmVfYXJncys9IiAtRExM Vk1fRU5BQkxFX1BST0pFQ1RTPSR7X2VuYWJsZWRfcHJvamVjdHN9IgotCiBwb3N0X3BhdGNoKCkg ewotCWlmIFsgIiRfbGxkYl9lbmFibGUiID0gInllcyIgXTsgdGhlbgotCQlpZiBbICIkWEJQU19U QVJHRVRfTElCQyIgPSAibXVzbCIgXTsgdGhlbgotCQkJdnNlZCAtaSAnc3xfX3B0cmFjZV9yZXF1 ZXN0fGludHxnJyBcCi0JCQkJJHt3cmtzcmN9L2xsZGIvc291cmNlL1BsdWdpbnMvUHJvY2Vzcy9M aW51eC9OYXRpdmVQcm9jZXNzTGludXguY3BwCi0JCWZpCi0JCSMgZGlzYWJsZSBkb2NzIGZvciBs bGRiIGFzIHRoZXkgZmFpbCB0byBnZW5lcmF0ZQotCQl2c2VkIC1pICcvYWRkX3N1YmRpcmVjdG9y eShkb2NzKS9kJyBcCi0JCQkke3dya3NyY30vbGxkYi9DTWFrZUxpc3RzLnR4dAotCWZpCi0KIAkj IHVwZGF0ZSBjb25maWcuZ3Vlc3MgZm9yIGJldHRlciBwbGF0Zm9ybSBkZXRlY3Rpb24KIAljcCAk WEJQU19DT01NT05ESVIvZW52aXJvbm1lbnQvY29uZmlndXJlL2F1dG9tYWtlL2NvbmZpZy5ndWVz cyBcCiAJCSR7d3Jrc3JjfS9sbHZtL2NtYWtlCi0KLQkjIGZpeCBsaW5rZXIgZmFpbHVyZXMgb24g c29tZSBhcmNocwotCXZzZWQgLWkgJ3MsY2hlY2tfbGlicmFyeV9leGlzdHMoZ2NjX3MgLiosc2V0 KExJQkNYWEFCSV9IQVNfR0NDX1NfTElCIE9OKSwnIFwKLQkJJHt3cmtzcmN9L2xpYmN4eGFiaS9j bWFrZS9jb25maWctaXguY21ha2UKLQl2c2VkIC1pICdzLGNoZWNrX2xpYnJhcnlfZXhpc3RzKGdj YyAuKixzZXQoTElCQ1hYQUJJX0hBU19HQ0NfTElCIE9OKSwnIFwKLQkJJHt3cmtzcmN9L2xpYmN4 eGFiaS9jbWFrZS9jb25maWctaXguY21ha2UKLQotCSMgbmVlZCBsaWJzc3Bfbm9uc2hhcmVkIG9u IHNvbWUgbXVzbCBwbGF0Zm9ybXMgKGJlY2F1c2Ugb2Ygbm9kZWZhdWx0bGlicykKLQljYXNlICIk WEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQkJcHBjNjQqKSA7OwotCQlwcGMqLW11c2x8aTY4Ni1t dXNsfG1pcHMqLW11c2wpCi0JCQl2c2VkIC1pICdzLF4jIFNldHVwIGZsYWdzLiQsYWRkX2xpYnJh cnlfZmxhZ3Moc3NwX25vbnNoYXJlZCksJyBcCi0JCQkJJHt3cmtzcmN9L2xpYnVud2luZC9zcmMv Q01ha2VMaXN0cy50eHQKLQkJCXZzZWQgLWkgJ3MsXiMgU2V0dXAgZmxhZ3MuJCxhZGRfbGlicmFy eV9mbGFncyhzc3Bfbm9uc2hhcmVkKSwnIFwKLQkJCQkke3dya3NyY30vbGliY3h4YWJpL3NyYy9D TWFrZUxpc3RzLnR4dAotCQkJdnNlZCAtaSAncywjc3NwLCwnICR7d3Jrc3JjfS9saWJjeHgvQ01h a2VMaXN0cy50eHQKLQkJCTs7Ci0JZXNhYwotCi0JY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUi IGluCi0JCXg4Nl82NC1tdXNsKSAjIHNvbWUgc2FuaXRpemVyIGN1cnJlbnRseSBvbmx5IG9uIHg4 Nl82NCBzdHVmZiBuZWVkcyBiYWNrdHJhY2UKLQkJCXZzZWQgLWkgJ3MsIyBTZXQgY29tbW9uIGxp bmsgZmxhZ3MuLGxpc3QoQVBQRU5EIFNBTklUSVpFUl9DT01NT05fTElOS19MSUJTIGV4ZWNpbmZv KSwnIFwKLQkJCQkke3dya3NyY30vY29tcGlsZXItcnQvQ01ha2VMaXN0cy50eHQKLQkJCTs7Ci0J CWFybSotbXVzbHxpNjg2LW11c2wpICMgc2FuaXRpemVyIGNvZGUgaXMgYnJva2VuIHNpbmNlIGl0 IGR1cGxpY2F0ZXMgc29tZSBsaWJjIGJpdHMKLQkJCXZzZWQgLWkgJ3Mvc2V0KENPTVBJTEVSX1JU X0hBU19TQU5JVElaRVJfQ09NTU9OIFRSVUUpL3NldChDT01QSUxFUl9SVF9IQVNfU0FOSVRJWkVS X0NPTU1PTiBGQUxTRSkvJyBcCi0JCQkJJHt3cmtzcmN9L2NvbXBpbGVyLXJ0L2NtYWtlL2NvbmZp Zy1peC5jbWFrZQotCQkJOzsKLQllc2FjCiB9CiAKIHByZV9jb25maWd1cmUoKSB7CkBAIC0xNTgs MTAgKzczLDggQEAgcHJlX2NvbmZpZ3VyZSgpIHsKIAkJCWNtYWtlIC4uLy4uIC1EQ01BS0VfQlVJ TERfVFlQRT1SZWxlYXNlIFwKIAkJCS1ETExWTV9FTkFCTEVfUFJPSkVDVFM9JHtfZW5hYmxlZF9w cm9qZWN0c30KIAkJbWFrZSAke21ha2Vqb2JzfSAtQyB1dGlscy9UYWJsZUdlbgotCQltYWtlICR7 bWFrZWpvYnN9IC1DIHRvb2xzL2NsYW5nL3V0aWxzL1RhYmxlR2VuCiAJCVsgIiRfbGxkYl9lbmFi bGUiID0gInllcyIgXSAmJiBtYWtlICR7bWFrZWpvYnN9IC1DIHRvb2xzL2xsZGIvdXRpbHMvVGFi bGVHZW4KIAkJY29uZmlndXJlX2FyZ3MrPSIgLURMTFZNX1RBQkxFR0VOPSR7d3Jrc3JjfS9sbHZt L2J1aWxkL0hPU1QvYmluL2xsdm0tdGJsZ2VuIgotCQljb25maWd1cmVfYXJncys9IiAtRENMQU5H X1RBQkxFR0VOPSR7d3Jrc3JjfS9sbHZtL2J1aWxkL0hPU1QvYmluL2NsYW5nLXRibGdlbiIKIAkJ WyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBdICYmIGNvbmZpZ3VyZV9hcmdzKz0iIC1ETExEQl9U QUJMRUdFTj0ke3dya3NyY30vbGx2bS9idWlsZC9IT1NUL2Jpbi9sbGRiLXRibGdlbiIKIAkJY2Qg Li4vLi4KIAlmaQpAQCAtMjAyLDIxOCArMTE1LDYgQEAgZG9faW5zdGFsbCgpIHsKIAlpZiBbICIk Q1JPU1NfQlVJTEQiIF07IHRoZW4KIAkJcm0gLWYgJHtERVNURElSfS91c3IvYmluL2xsdm0tY29u ZmlnLWhvc3QKIAlmaQotCi0JIyBJbnN0YWxsIGxpYmN4eGFiaSBoZWFkZXJzCi0Jdmluc3RhbGwg JHt3cmtzcmN9L2xpYmN4eGFiaS9pbmNsdWRlL19fY3h4YWJpX2NvbmZpZy5oIDY0NCB1c3IvaW5j bHVkZQotCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJjeHhhYmkvaW5jbHVkZS9jeHhhYmkuaCA2NDQg dXNyL2luY2x1ZGUKLQotCSMgSW5zdGFsbCBsaWJ1bndpbmQgaGVhZGVycwotCXZpbnN0YWxsICR7 d3Jrc3JjfS9saWJ1bndpbmQvaW5jbHVkZS9fX2xpYnVud2luZF9jb25maWcuaCA2NDQgdXNyL2lu Y2x1ZGUKLQl2aW5zdGFsbCAke3dya3NyY30vbGlidW53aW5kL2luY2x1ZGUvbGlidW53aW5kLmgg NjQ0IHVzci9pbmNsdWRlCi0Jdmluc3RhbGwgJHt3cmtzcmN9L2xpYnVud2luZC9pbmNsdWRlL3Vu d2luZC5oIDY0NCB1c3IvaW5jbHVkZQotCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJ1bndpbmQvaW5j bHVkZS9tYWNoLW8vY29tcGFjdF91bndpbmRfZW5jb2RpbmcuaCBcCi0JCTY0NCB1c3IvaW5jbHVk ZS9tYWNoLW8KLX0KLQotY2xhbmctYW5hbHl6ZXJfcGFja2FnZSgpIHsKLQlweWNvbXBpbGVfZGly cz0idXNyL3NoYXJlL3NjYW4tdmlldyIKLQlkZXBlbmRzPSJjbGFuZy0ke3ZlcnNpb259XyR7cmV2 aXNpb259IHB5dGhvbjMgcGVybCIKLQlzaG9ydF9kZXNjKz0iIC0gQSBzb3VyY2UgY29kZSBhbmFs eXNpcyBmcmFtZXdvcmsiCi0JaG9tZXBhZ2U9Imh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5v cmcvIgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjEvc2Nhbi1i dWlsZC4xCi0JCXZtb3ZlICIvdXNyL2Jpbi9zY2FuLSoiCi0JCXZtb3ZlICIvdXNyL3NoYXJlL3Nj YW4tKiIKLQkJdm1vdmUgIi91c3IvbGliZXhlYy8qYW5hbHl6ZXIiCi0JfQotfQotCi1jbGFuZy10 b29scy1leHRyYV9wYWNrYWdlKCkgewotCWxpYjMyZGlzYWJsZWQ9eWVzCi0JZGVwZW5kcz0iY2xh bmctJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSBweXRob24zIgotCXNob3J0X2Rlc2MrPSIgLSBFeHRy YSBDbGFuZyB0b29scyIKLQlob21lcGFnZT0iaHR0cHM6Ly9jbGFuZy5sbHZtLm9yZy9leHRyYS8i Ci0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9pbmNsdWRlL2NsYW5nLXRpZHkKLQkJdm1v dmUgdXNyL2Jpbi9jbGFuZy1hcHBseS1yZXBsYWNlbWVudHMKLQkJdm1vdmUgdXNyL2Jpbi9jbGFu Zy1xdWVyeQotCQl2bW92ZSB1c3IvYmluL2NsYW5nLXJlbmFtZQotCQl2bW92ZSB1c3IvYmluL2Ns YW5nLXRpZHkKLQkJdm1vdmUgdXNyL2Jpbi9kaWFndG9vbAotCQl2bW92ZSB1c3IvYmluL2ZpbmQt YWxsLXN5bWJvbHMKLQkJdm1vdmUgdXNyL2Jpbi9obWFwdG9vbAotCQl2bW92ZSB1c3IvYmluL21v ZHVsYXJpemUKLQkJdm1vdmUgdXNyL2Jpbi9wcC10cmFjZQotCQl2bW92ZSB1c3IvYmluL3NhbmNv dgotCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZ0FwcGx5UmVwbGFjZW1lbnRzKiIKLQkJdm1vdmUg InVzci9saWIvbGliY2xhbmdRdWVyeSoiCi0JCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nVGlkeSoi Ci0JCXZtb3ZlICJ1c3Ivc2hhcmUvY2xhbmcvKnRpZHkqIgotCQl2bW92ZSB1c3Ivc2hhcmUvZG9j L2NsYW5nLXRvb2xzCi0JCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMS9leHRyYWNsYW5ndG9vbHMu MQotCQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjEvZGlhZ3Rvb2wuMQotCX0KLX0KLQotY2xhbmdf cGFja2FnZSgpIHsKLQlsaWIzMmRpc2FibGVkPXllcwotCWRlcGVuZHM9ImxpYnN0ZGMrKy1kZXZl bCBsaWJnY2MtZGV2ZWwgIGJpbnV0aWxzICR7WEJQU19UQVJHRVRfTElCQ30tZGV2ZWwKLQkgbGli Y2xhbmctJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLQlzaG9ydF9kZXNjKz0iIC0gQyBsYW5ndWFn ZSBmYW1pbHkgZnJvbnRlbmQiCi0JaG9tZXBhZ2U9Imh0dHBzOi8vY2xhbmcubGx2bS5vcmcvIgot CXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSB1c3IvaW5jbHVkZS9jbGFuZwotCQl2bW92ZSB1c3Iv aW5jbHVkZS9jbGFuZy1jCi0JCXZtb3ZlICJ1c3IvYmluLypjbGFuZyoiCi0JCXZtb3ZlIHVzci9i aW4vYy1pbmRleC10ZXN0Ci0JCXZtb3ZlIHVzci9saWIvY2xhbmcKLQkJdm1vdmUgdXNyL2xpYi9j bWFrZS9jbGFuZwotCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZyouYSIKLQkJdm1vdmUgInVzci9s aWIvbGliY2xhbmcqLnNvIgotCQl2bW92ZSB1c3Ivc2hhcmUvY2xhbmcKLQkJdm1vdmUgdXNyL3No YXJlL2RvYy9jbGFuZwotCQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjEvY2xhbmcuMQotCX0KLX0K LQotbGliY2xhbmdfcGFja2FnZSgpIHsKLQlzaG9ydF9kZXNjKz0iIC0gQyBmcm9udGVuZCBydW50 aW1lIGxpYnJhcnkiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5n LnNvLioiCi0JfQotfQotCi1saWJjbGFuZy1jcHBfcGFja2FnZSgpIHsKLQlzaG9ydF9kZXNjKz0i IC0gQyBmcm9udGVuZCBydW50aW1lIGxpYnJhcnkgKEMrKyBpbnRlcmZhY2UpIgotCXBrZ19pbnN0 YWxsKCkgewotCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZy1jcHAuc28uKiIKLQl9Ci19Ci0KLWxs ZF9wYWNrYWdlKCkgewotCWxpYjMyZGlzYWJsZWQ9eWVzCi0Jc2hvcnRfZGVzYys9IiAtIGxpbmtl ciIKLQlob21lcGFnZT0iaHR0cHM6Ly9sbGQubGx2bS5vcmciCi0JcGtnX2luc3RhbGwoKSB7Ci0J CXZtb3ZlIHVzci9iaW4vbGxkKgotCQl2bW92ZSB1c3IvYmluL3dhc20tbGQKLQkJdm1vdmUgdXNy L2Jpbi9sZC5sbGQqCi0JCXZtb3ZlIHVzci9iaW4vbGQ2NC5sbGQqCi0JCXZtb3ZlIHVzci9zaGFy ZS9kb2MvbGxkCi0JfQotfQotCi1sbGQtZGV2ZWxfcGFja2FnZSgpIHsKLQlsaWIzMmRpc2FibGVk PXllcwotCXNob3J0X2Rlc2MrPSIgLSBsaW5rZXIgLSBkZXZlbG9wbWVudCBmaWxlcyIKLQlob21l cGFnZT0iaHR0cHM6Ly9sbGQubGx2bS5vcmciCi0JZGVwZW5kcz0ibGxkPj0ke3ZlcnNpb259XyR7 cmV2aXNpb259IgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSB1c3IvaW5jbHVkZS9sbGQKLQkJ dm1vdmUgdXNyL2xpYi9jbWFrZS9sbGQKLQkJdm1vdmUgInVzci9saWIvbGlibGxkKmEiCi0JfQot fQotCi1sbGRiX3BhY2thZ2UoKSB7Ci0JbGliMzJkaXNhYmxlZD15ZXMKLQlkZXBlbmRzKz0iIHB5 dGhvbjMtc2l4IgotCXNob3J0X2Rlc2MrPSIgLSBMTERCIGRlYnVnZ2VyIgotCWhvbWVwYWdlPSJo dHRwczovL2xsZGIubGx2bS5vcmcvIgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSB1c3IvYmlu LypsbGRiKgotCQl2bW92ZSB1c3IvbGliL2xpYmxsZGIqc28uKgotCQl2bW92ZSAvdXNyL2xpYi9w eXRob24qCi0JfQotfQotCi1sbGRiLWRldmVsX3BhY2thZ2UoKSB7Ci0JbGliMzJkaXNhYmxlZD15 ZXMKLQlkZXBlbmRzPSJsbGRiPj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgotCXNob3J0X2Rlc2Mr PSIgLSBMTERCIGRlYnVnZ2VyIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCi0JcGtnX2luc3RhbGwoKSB7 Ci0JCXZtb3ZlIHVzci9pbmNsdWRlL2xsZGIKLQkJdm1vdmUgInVzci9saWIvbGlibGxkYiouc28i Ci0JfQotfQotCi1sbHZtLWxpYnVud2luZF9wYWNrYWdlKCkgewotCXNob3J0X2Rlc2MrPSIgLSBs aWJ1bndpbmQiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYnVud2luZC5z by4qIgotCX0KLX0KLQotbGx2bS1saWJ1bndpbmQtZGV2ZWxfcGFja2FnZSgpIHsKLQlzaG9ydF9k ZXNjKz0iIC0gbGlidW53aW5kIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCi0JZGVwZW5kcz0ibGx2bS1s aWJ1bndpbmQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi0JY29uZmxpY3RzPSJsaWJ1bndpbmQt ZGV2ZWw+PTAiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9saWIvbGlidW53aW5kLnNv Ci0JCXZtb3ZlIHVzci9saWIvbGlidW53aW5kLmEKLQkJdm1vdmUgInVzci9pbmNsdWRlLyp1bndp bmQqIgotCQl2bW92ZSB1c3IvaW5jbHVkZS9tYWNoLW8KLQkJdm1vdmUgdXNyL3NoYXJlL2RvYy9s aWJ1bndpbmQKLQl9Ci19Ci0KLWxpYmN4eGFiaV9wYWNrYWdlKCkgewotCXNob3J0X2Rlc2MrPSIg LSBsb3cgbGV2ZWwgc3VwcG9ydCBmb3IgbGliYysrIgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92 ZSAidXNyL2xpYi9saWJjKythYmkuc28uKiIKLQl9Ci19Ci0KLWxpYmN4eGFiaS1kZXZlbF9wYWNr YWdlKCkgewotCXNob3J0X2Rlc2MrPSIgLSBsb3cgbGV2ZWwgc3VwcG9ydCBmb3IgbGliYysrIC0g ZGV2ZWxvcG1lbnQgZmlsZXMiCi0JZGVwZW5kcz0ibGliY3h4YWJpPj0ke3ZlcnNpb259XyR7cmV2 aXNpb259IgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSB1c3IvbGliL2xpYmMrK2FiaS5zbwot CQl2bW92ZSB1c3IvbGliL2xpYmMrK2FiaS5hCi0JCXZtb3ZlICJ1c3IvaW5jbHVkZS8qY3h4YWJp KiIKLQl9Ci19Ci0KLWxpYmN4eF9wYWNrYWdlKCkgewotCXNob3J0X2Rlc2MrPSIgLSBDKysgc3Rh bmRhcmQgbGlicmFyeSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgInVzci9saWIvbGliYysr LnNvLioiCi0JfQotfQotCi1saWJjeHgtZGV2ZWxfcGFja2FnZSgpIHsKLQlzaG9ydF9kZXNjKz0i IC0gQysrIHN0YW5kYXJkIGxpYnJhcnkgLSBkZXZlbG9wbWVudCBmaWxlcyIKLQlkZXBlbmRzPSJs aWJjeHg+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3Zl IHVzci9saWIvbGliYysrLnNvCi0JCXZtb3ZlIHVzci9saWIvbGliYysrLmEKLQkJdm1vdmUgdXNy L2xpYi9saWJjKytleHBlcmltZW50YWwuYQotCQl2bW92ZSB1c3IvaW5jbHVkZS9jKysKLQkJdm1v dmUgdXNyL3NoYXJlL2RvYy9saWJjeHgKLQl9Ci19Ci0KLWxpYm9tcF9wYWNrYWdlKCkgewotCXNo b3J0X2Rlc2MrPSIgLSBDbGFuZyBPcGVuTVAgc3VwcG9ydCBsaWJyYXJ5IgotCXBrZ19pbnN0YWxs KCkgewotCQl2bW92ZSB1c3IvbGliL2xpYm9tcC5zbwotCQl2bW92ZSAidXNyL2xpYi9saWJvbXB0 YXJnZXQucnRsLiouc28iCi0JCXZtb3ZlIHVzci9saWIvbGliYXJjaGVyLnNvCi0JCXZtb3ZlICJ1 c3IvbGliL2xpYm9tcCouc28uKiIKLQl9Ci19Ci0KLWxpYm9tcC1kZXZlbF9wYWNrYWdlKCkgewot CXNob3J0X2Rlc2MrPSIgLSBDbGFuZyBPcGVuTVAgc3VwcG9ydCBsaWJyYXJ5IC0gZGV2ZWxvcG1l bnQgZmlsZXMiCi0JZGVwZW5kcz0ibGlib21wPj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgotCXBr Z19pbnN0YWxsKCkgewotCQl2bW92ZSAidXNyL2xpYi9saWJvbXAqLnNvIgotCQl2bW92ZSAidXNy L2xpYi9saWJhcmNoZXIqIgotCQl2bW92ZSAidXNyL2luY2x1ZGUvb21wKi5oIgotCQl2bW92ZSAi dXNyL2xpYi9jbGFuZy8ke3ZlcnNpb259L2luY2x1ZGUvb21wKi5oIgotCQl2bW92ZSB1c3Ivc2hh cmUvbWFuL21hbjEvbGx2bW9wZW5tcC4xCi0JCXZtb3ZlIHVzci9zaGFyZS9kb2Mvb3Blbm1wCi0J fQogfQogCiBsaWJsbHZtMTJfcGFja2FnZSgpIHsKCkZyb20gMTU1ZGM4YzgxMTVmYzE2OGMxY2Rh ZjNhY2M2MGI5MGU0ODQxMTNmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYt OD9xP0xvdWlzPTIwRHVwcj1DMz1BOT0yMEJlcnRvbmk/PQogPGxvdWlzZGJAbGVzcGV0aXRzcGVk ZXN0cmVzLm9yZz4KRGF0ZTogU2F0LCAxIEphbiAyMDIyIDE1OjU3OjU5ICswMjAwClN1YmplY3Q6 IFtQQVRDSCAwNC8zMF0gcnRhZ3M6IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0tCiBzcmNwa2dzL3J0 YWdzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ydGFncy90ZW1wbGF0ZSBiL3NyY3BrZ3Mv cnRhZ3MvdGVtcGxhdGUKaW5kZXggYjQ5NmExYjBlNzIxLi45YjE2MWU2OTBkNzYgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvcnRhZ3MvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9ydGFncy90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3J0YWdzJwogcGtnbmFtZT1ydGFn cwogdmVyc2lvbj0yLjM4Ci1yZXZpc2lvbj01CityZXZpc2lvbj02CiBidWlsZF9zdHlsZT1jbWFr ZQogIyBEb24ndCBydW4gdGVzdHMgaW4gZG9faW5zdGFsbCwgcGxlYXNlLgogY29uZmlndXJlX2Fy Z3M9Ii1EU0tJUF9DVEVTVD1UUlVFIgoKRnJvbSA0ZGVkMjMwYWU4NWFhZmNjMjZhMjIxNTE3Yjk5 Njc3MDYyNmNlODcxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91 aXM9MjBEdXByPUMzPUE5PTIwQmVydG9uaT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMu b3JnPgpEYXRlOiBTYXQsIDEgSmFuIDIwMjIgMTU6NTg6MjcgKzAyMDAKU3ViamVjdDogW1BBVENI IDA1LzMwXSBicGZ0cmFjZTogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3MvYnBmdHJh Y2UvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JwZnRyYWNlL3RlbXBsYXRlIGIvc3JjcGtn cy9icGZ0cmFjZS90ZW1wbGF0ZQppbmRleCAyOGFiM2M2MjYzOTkuLmViMjQ4MGQyMjMwZSAxMDA2 NDQKLS0tIGEvc3JjcGtncy9icGZ0cmFjZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2JwZnRyYWNl L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYnBmdHJhY2Un CiBwa2duYW1lPWJwZnRyYWNlCiB2ZXJzaW9uPTAuMTQuMQotcmV2aXNpb249MQorcmV2aXNpb249 MgogYXJjaHM9Ing4Nl82NCogYWFyY2g2NCogcHBjNjQqIgogYnVpbGRfc3R5bGU9Y21ha2UKIGNv bmZpZ3VyZV9hcmdzPSItREJVSUxEX1RFU1RJTkc9T0ZGIiAgIyBuZWVkcyByb290IHRvIHJ1bgoK RnJvbSAzMzFkZDU0MTZhYmY2ZTRkYmIzOWQ1YWRmNDM3MmY2N2I5MWNmMWU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9u aT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRlOiBTYXQsIDEgSmFuIDIw MjIgMTU6NTg6MzggKzAyMDAKU3ViamVjdDogW1BBVENIIDA2LzMwXSBjbGF6eTogcmVidWlsZCBm b3IgbGx2bTEzCgotLS0KIHNyY3BrZ3MvY2xhenkvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2NsYXp5L3RlbXBsYXRlIGIvc3JjcGtncy9jbGF6eS90ZW1wbGF0ZQppbmRleCAxMWYzYmFiNTVh ZWYuLmY4MWRlMDhhYjgzNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9jbGF6eS90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL2NsYXp5L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnY2xhenknCiBwa2duYW1lPWNsYXp5CiB2ZXJzaW9uPTEuMTEKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBidWlsZF9oZWxwZXI9cWVtdQogaG9zdG1ha2Vk ZXBlbmRzPSJsbHZtIgoKRnJvbSBmNTkxYTBlMjRhMmZjYzUzNjY3MDlhZTI5NWI5YzZhNjg5MzVj ODFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXBy PUMzPUE5PTIwQmVydG9uaT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRl OiBTYXQsIDEgSmFuIDIwMjIgMTU6NTg6NDkgKzAyMDAKU3ViamVjdDogW1BBVENIIDA3LzMwXSBj Y2xzOiByZWJ1aWxkIGZvciBsbHZtMTMKCi0tLQogc3JjcGtncy9jY2xzL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9jY2xzL3RlbXBsYXRlIGIvc3JjcGtncy9jY2xzL3RlbXBsYXRlCmluZGV4 IGZiYjdjNjg0N2JjMS4uNDBhYmEzYjU1YmZlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2NjbHMvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9jY2xzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnY2NscycKIHBrZ25hbWU9Y2NscwogdmVyc2lvbj0wLjIwMjEwMzMwCi1y ZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRz PSJjbGFuZy10b29scy1leHRyYSIKIG1ha2VkZXBlbmRzPSJsbHZtIG5jdXJzZXMtZGV2ZWwgcmFw aWRqc29uIHpsaWItZGV2ZWwgY2xhbmctdG9vbHMtZXh0cmEiCgpGcm9tIDliZjBhNDVkYmE1ZDBk ODFkZThjZTZhYzVjZjFmMzFlNjk0MGQ4MjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 ID0/VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2RiQGxlc3Bl dGl0c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFNhdCwgMSBKYW4gMjAyMiAxNTo1OTozNSArMDIwMApT dWJqZWN0OiBbUEFUQ0ggMDgvMzBdIGluY2x1ZGUtd2hhdC15b3UtdXNlOiByZWJ1aWxkIGZvciBs bHZtMTMKCi0tLQogc3JjcGtncy9pbmNsdWRlLXdoYXQteW91LXVzZS90ZW1wbGF0ZSB8IDQgKyst LQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2luY2x1ZGUtd2hhdC15b3UtdXNlL3RlbXBsYXRlIGIvc3JjcGtncy9p bmNsdWRlLXdoYXQteW91LXVzZS90ZW1wbGF0ZQppbmRleCBiMTNiYjdlZTU2YWYuLmI0YjE2NzQw MWViZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9pbmNsdWRlLXdoYXQteW91LXVzZS90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2luY2x1ZGUtd2hhdC15b3UtdXNlL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnaW5jbHVkZS13aGF0LXlvdS11c2UnCiBwa2duYW1lPWlu Y2x1ZGUtd2hhdC15b3UtdXNlCi12ZXJzaW9uPTAuMTYKK3ZlcnNpb249MC4xNwogcmV2aXNpb249 MQogd3Jrc3JjPSIke3BrZ25hbWV9IgogYnVpbGRfc3R5bGU9Y21ha2UKQEAgLTEyLDcgKzEyLDcg QEAgbWFpbnRhaW5lcj0iTGVhaCBOZXVraXJjaGVuIDxsZWFoQHZ1eHUub3JnPiIKIGxpY2Vuc2U9 Ik5DU0EiCiBob21lcGFnZT0iaHR0cHM6Ly9pbmNsdWRlLXdoYXQteW91LXVzZS5vcmcvIgogZGlz dGZpbGVzPSJodHRwczovL2luY2x1ZGUtd2hhdC15b3UtdXNlLm9yZy9kb3dubG9hZHMvJHtwa2du YW1lfS0ke3ZlcnNpb259LnNyYy50YXIuZ3oiCi1jaGVja3N1bT04ZDZmYzliMjU1MzQzYmMxZTVl YzQ1OWUzOTUxMmRmMWQ1MWM2MGUwMzU2Mjk4NWUwMDc2MDM2MTE5ZmY1YTFjCitjaGVja3N1bT1l Y2E3YzA0ZjhiNDE2YjYzODVlZDAwZTMzNjY5YTdmYTQ2OTNjZDI2Y2I3MmI1MjJjZGU1NTg4Mjhl YjBjNjY1CiBweXRob25fdmVyc2lvbj0zCiAKIHBvc3RfaW5zdGFsbCgpIHsKCkZyb20gYWUwNWVl ZDk0ODFjMWRkY2Y1MWFjZGE2N2YxNjA5ZWQzYjA5ZTY1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogPT9VVEYtOD9xP0xvdWlzPTIwRHVwcj1DMz1BOT0yMEJlcnRvbmk/PQogPGxvdWlz ZGJAbGVzcGV0aXRzcGVkZXN0cmVzLm9yZz4KRGF0ZTogU2F0LCAxIEphbiAyMDIyIDE2OjAxOjIx ICswMjAwClN1YmplY3Q6IFtQQVRDSCAwOS8zMF0gY29kZWxpdGU6IHJlYnVpbGQgZm9yIGxsdm0x MwoKLS0tCiBzcmNwa2dzL2NvZGVsaXRlL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jb2Rl bGl0ZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvY29kZWxpdGUvdGVtcGxhdGUKaW5kZXggM2E5OTNhMmMw Y2ZiLi4yNGUyYzg3OWRkNDUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY29kZWxpdGUvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9jb2RlbGl0ZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ2NvZGVsaXRlJwogcGtnbmFtZT1jb2RlbGl0ZQogdmVyc2lvbj0xNS4wLjYK LXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBidWlsZF9oZWxwZXI9 Y21ha2Utd3hXaWRnZXRzLWd0azMKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfUENIPTAgLURXSVRI X1dYX0NPTkZJRz13eC1jb25maWctZ3RrMwoKRnJvbSAyOTZkN2VkZGMxNTgzOWEzNmY4Mzg1YmYx OGVkODcyZTNhYTlkOGE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/ TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9uaT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3Ry ZXMub3JnPgpEYXRlOiBTYXQsIDEgSmFuIDIwMjIgMTY6MjI6NDggKzAyMDAKU3ViamVjdDogW1BB VENIIDEwLzMwXSBrZGV2ZWxvcDogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3Mva2Rl dmVsb3AvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tkZXZlbG9wL3RlbXBsYXRlIGIvc3Jj cGtncy9rZGV2ZWxvcC90ZW1wbGF0ZQppbmRleCAwMTAxODU4NDlkODAuLmFiZjA4YzMxMzA3MSAx MDA2NDQKLS0tIGEvc3JjcGtncy9rZGV2ZWxvcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tkZXZl bG9wL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna2RldmVs b3AnCiBwa2duYW1lPWtkZXZlbG9wCiB2ZXJzaW9uPTIxLjEyLjMKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURCVUlMRF9URVNUSU5H PU9GRiIKIGhvc3RtYWtlZGVwZW5kcz0iZXh0cmEtY21ha2UtbW9kdWxlcyBxdDUtcW1ha2UgcXQ1 LWhvc3QtdG9vbHMgcXQ1LXRvb2xzCgpGcm9tIGJkOTAyODc1NWY4M2FjNzg4ODlhYzVkNDQwZWUx NDk3ZmM1YjAyMjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vp cz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2RiQGxlc3BldGl0c3BlZGVzdHJlcy5v cmc+CkRhdGU6IFNhdCwgMSBKYW4gMjAyMiAxNjoyMzowNyArMDIwMApTdWJqZWN0OiBbUEFUQ0gg MTEvMzBdIGp1Q2krKzogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3MvanVDaSsrL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9qdUNpKysvdGVtcGxhdGUgYi9zcmNwa2dzL2p1Q2kr Ky90ZW1wbGF0ZQppbmRleCAxYTc2MDRiNDRhMDAuLjUxMDMzMjRkZWMyMCAxMDA2NDQKLS0tIGEv c3JjcGtncy9qdUNpKysvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9qdUNpKysvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdqdUNpKysnCiBwa2duYW1lPWp1Q2kr KwogdmVyc2lvbj0xLjYuMgotcmV2aXNpb249MgorcmV2aXNpb249MwogX2xpYmNsYW5nbW1fY29t bWl0PSJiMzQyZjRkZDZkZTRmZTUwOWE2OTJhNGI0ZmNmYzdlMjRhYWU5NTkwIgogX3RpbnlfY29t bWl0PSJjOWM4YmY4MTBkZGFkOGNkMTc4ODJiOWE5ZWU2MjhhNjkwZTc3OWY1Igogd3Jrc3JjPSJq dWNpcHAtdiR7dmVyc2lvbn0iCgpGcm9tIGIwOWY2NjBiYjE3NDQxOWJkOGMyNWYxZjc5ZjFhZDcz Yjc4MTE0ZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0y MER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2RiQGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+ CkRhdGU6IFNhdCwgMSBKYW4gMjAyMiAxODozMDowMSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTIv MzBdIGxsdm0xMzogZml4IGxpYm9tcCogcGFja2FnZXMKCi0tLQogc3JjcGtncy9sbHZtMTMvdGVt cGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMvdGVtcGxhdGUgYi9zcmNwa2dzL2xs dm0xMy90ZW1wbGF0ZQppbmRleCAwOGQ4NDc0NzI1MjUuLmJmYzkxMDU2ZDI3NyAxMDA2NDQKLS0t IGEvc3JjcGtncy9sbHZtMTMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9sbHZtMTMvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsbHZtMTMnCiBwa2duYW1lPWxs dm0xMwogdmVyc2lvbj0xMy4wLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIHdya3NyYz0ibGx2 bS1wcm9qZWN0LSR7dmVyc2lvbn0uc3JjIgogYnVpbGRfd3Jrc3JjPWxsdm0KIGJ1aWxkX3N0eWxl PWNtYWtlCkBAIC0zOTcsNiArMzk3LDcgQEAgbGlib21wX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVz Yys9IiAtIENsYW5nIE9wZW5NUCBzdXBwb3J0IGxpYnJhcnkiCiAJcGtnX2luc3RhbGwoKSB7CiAJ CXZtb3ZlIHVzci9saWIvbGlib21wLnNvCisJCXZtb3ZlIHVzci9saWIvbGlib21wdGFyZ2V0LnNv CiAJCXZtb3ZlICJ1c3IvbGliL2xpYm9tcHRhcmdldC5ydGwuKi5zbyIKIAkJdm1vdmUgdXNyL2xp Yi9saWJhcmNoZXIuc28KIAl9CkBAIC00MDYsNyArNDA3LDYgQEAgbGlib21wLWRldmVsX3BhY2th Z2UoKSB7CiAJc2hvcnRfZGVzYys9IiAtIENsYW5nIE9wZW5NUCBzdXBwb3J0IGxpYnJhcnkgLSBk ZXZlbG9wbWVudCBmaWxlcyIKIAlkZXBlbmRzPSJsaWJvbXA+PSR7dmVyc2lvbn1fJHtyZXZpc2lv bn0iCiAJcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYm9tcCouc28iCiAJCXZt b3ZlICJ1c3IvbGliL2xpYmFyY2hlcioiCiAJCXZtb3ZlICJ1c3IvaW5jbHVkZS9vbXAqLmgiCiAJ CXZtb3ZlICJ1c3IvbGliL2NsYW5nLyR7dmVyc2lvbn0vaW5jbHVkZS9vbXAqLmgiCgpGcm9tIGQ5 YTlmZjRiODVmNDU1ZDE1MmM1YTQwMzk2OTAxYzEwNmIyYjhhNzMgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxs b3Vpc2RiQGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFN1biwgMTYgSmFuIDIwMjIgMTQ6 MzM6NTYgKzAyMDAKU3ViamVjdDogW1BBVENIIDEzLzMwXSBjaHJvbWl1bTogcmVidWlsZCBmb3Ig bGx2bTEzCgotLS0KIHNyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUgfCA4ICstLS0tLS0tCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZSBiL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKaW5k ZXggMjcwODc0NzA0NmQ3Li43MjE2N2Y3M2I4YTUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2hyb21p dW0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZQpAQCAtMjAsNyArMjAs NyBAQCBkZXNjX29wdGlvbl9kZWJ1Zz0iQnVpbGQgd2l0aCBkZWJ1ZyBzeW1ib2xzIgogZGVzY19v cHRpb25fanNfb3B0aW1pemU9Ik9wdGltaXplIHRoZSBKUyB1c2VkIGZvciBDaHJvbWl1bSdzIFVJ IgogZGVzY19vcHRpb25fcGlwZXdpcmU9IkVuYWJsZSBzdXBwb3J0IGZvciBzY3JlZW4gc2hhcmlu ZyBmb3IgV2ViUlRDIHZpYSBQaXBlV2lyZSIKIAotaG9zdG1ha2VkZXBlbmRzPSIkKHZvcHRfaWYg Y2xhbmcgImNsYW5nIGxsZCBsbHZtMTIiKSBweXRob24gcHl0aG9uMyBwa2djb25mIHBlcmwgZ3Bl cmYgYmlzb24gbmluamEgbm9kZWpzIGh3aWRzCitob3N0bWFrZWRlcGVuZHM9IiQodm9wdF9pZiBj bGFuZyAiY2xhbmcgbGxkIGxsdm0xMyIpIHB5dGhvbiBweXRob24zIHBrZ2NvbmYgcGVybCBncGVy ZiBiaXNvbiBuaW5qYSBub2RlanMgaHdpZHMKICBsaWJhdG9taWMtZGV2ZWwgbGliZXZlbnQtZGV2 ZWwgbGliZ2xpYi1kZXZlbCAkKHZvcHRfaWYganNfb3B0aW1pemUgb3Blbmpkaykgd2F5bGFuZC1k ZXZlbCBsaWJlcG94eS1kZXZlbCIKIG1ha2VkZXBlbmRzPSJsaWJwbmctZGV2ZWwgZ3RrKy1kZXZl bCBndGsrMy1kZXZlbCBuc3MtZGV2ZWwgcGNpdXRpbHMtZGV2ZWwKICBsaWJYaS1kZXZlbCBsaWJn Y3J5cHQtZGV2ZWwgbGliZ25vbWUta2V5cmluZy1kZXZlbCBjdXBzLWRldmVsIGVsZnV0aWxzLWRl dmVsCkBAIC0yNjYsMTIgKzI2Niw2IEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkJJ2Rpc2FibGVfZmll bGR0cmlhbF90ZXN0aW5nX2NvbmZpZz10cnVlJwogCiAJCSdpc19vZmZpY2lhbF9idWlsZD10cnVl JwotCi0JCSMgc2VnZmF1bHRzIHdpdGggbGx2bS0xMi4wLjEKLQkJJ2lzX2NmaT1mYWxzZScKLQkJ J3VzZV90aGluX2x0bz1mYWxzZScKLQkJJ3VzZV9jZmlfaWNhbGw9ZmFsc2UnCi0JCSdjaHJvbWVf cGdvX3BoYXNlPTAnCiAJKQogCiAJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCgpGcm9tIGNk NTE4ZDU3YjUzODc1YzZlODkxZDIzNDA4M2YzNjI5MjY0NGE0NDUgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxs b3Vpc2RiQGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFN1biwgMTYgSmFuIDIwMjIgMTQ6 Mzk6MDQgKzAyMDAKU3ViamVjdDogW1BBVENIIDE0LzMwXSBsbHZtMTI6IHJlbW92ZQoKLS0tCiBz cmNwa2dzL2xsdm0xMi9JTlNUQUxMLm1zZyAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4u L2xsdm0xMi9maWxlcy9sbHZtLUNvbmZpZy1sbHZtLWNvbmZpZy5oICAgIHwgICA5IC0tCiBzcmNw a2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDAxLW11c2wucGF0Y2ggICAgfCAgNTcgLS0tLS0tLS0t CiAuLi4vcGF0Y2hlcy9sbHZtLTAwMi1tdXNsLXBwYzY0LWVsZnYyLnBhdGNoICAgfCAgMzAgLS0t LS0KIC4uLi9wYXRjaGVzL2xsdm0tMDAzLXBwYy1zZWN1cmVwbHQucGF0Y2ggICAgICB8ICAxMSAt LQogLi4uL3BhdGNoZXMvbGx2bS0wMDQtb3ZlcnJpZGUtb3B0LnBhdGNoICAgICAgIHwgIDE4IC0t LQogLi4uL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDA1LXBwYy1iaWdwaWMucGF0Y2ggIHwgIDM2IC0t LS0tLQogLi4uL3BhdGNoZXMvbGx2bS0wMDYtYWFyY2g2NC1tZl9leGVjLnBhdGNoICAgIHwgIDI1 IC0tLS0KIHNyY3BrZ3MvbGx2bTEyL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICB8IDEy MCArLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvbGx2bTEyL3VwZGF0ZSAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMyAtCiAxMCBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMw NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9JTlNUQUxM Lm1zZwogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL2ZpbGVzL2xsdm0tQ29uZmln LWxsdm0tY29uZmlnLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVz L2xsdm0tMDAxLW11c2wucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9w YXRjaGVzL2xsdm0tMDAyLW11c2wtcHBjNjQtZWxmdjIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDAzLXBwYy1zZWN1cmVwbHQucGF0Y2gKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDA0LW92ZXJyaWRl LW9wdC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2 bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvbGx2bS0wMDYtYWFyY2g2NC1tZl9leGVjLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9sbHZtMTIvdXBkYXRlCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvSU5T VEFMTC5tc2cgYi9zcmNwa2dzL2xsdm0xMi9JTlNUQUxMLm1zZwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjAwNGFjZjdiNTMwYwotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvbGx2bTEyL0lOU1RBTEwubXNnCkBAIC0wLDAgKzEgQEAKK2xsdm0xMiBpcyBubyBsb25n ZXIgcHJvdmlkZWQgYnkgVm9pZCBMaW51eApkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvZmls ZXMvbGx2bS1Db25maWctbGx2bS1jb25maWcuaCBiL3NyY3BrZ3MvbGx2bTEyL2ZpbGVzL2xsdm0t Q29uZmlnLWxsdm0tY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmYTA4 YzliZTY5Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL2ZpbGVzL2xsdm0tQ29u ZmlnLWxsdm0tY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLSNpbmNsdWRl IDxiaXRzL3dvcmRzaXplLmg+Ci0KLSNpZiBfX1dPUkRTSVpFID09IDMyCi0jaW5jbHVkZSAibGx2 bS1jb25maWctMzIuaCIKLSNlbGlmIF9fV09SRFNJWkUgPT0gNjQKLSNpbmNsdWRlICJsbHZtLWNv bmZpZy02NC5oIgotI2Vsc2UKLSNlcnJvciAiVW5rbm93biB3b3JkIHNpemUiCi0jZW5kaWYKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDEtbXVzbC5wYXRjaCBiL3Ny Y3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDEtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggZjJhM2Y4ZDYyODEzLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9sbHZtLTAwMS1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcg KzAsMCBAQAotRnJvbSBmYWNhM2ZiZDE1ZDBjMzEwODQ5M2MzYzU0Y2Q5MzEzOGUwNDlhYzQzIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhIEJyYW5jYWxlb25pIDxtaXdheGVA Z21haWwuY29tPgotRGF0ZTogVHVlLCA4IFNlcCAyMDE1IDIyOjAzOjAyICswMjAwCi1TdWJqZWN0 OiBbUEFUQ0ggMy8zXSBtdXNsCi0KLS0tLQotIGluY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRM aWJyYXJ5SW5mby5oIHwgOSArKysrKysrKysKLSBsaWIvU3VwcG9ydC9EeW5hbWljTGlicmFyeS5j cHAgICAgICAgICAgICB8IDIgKy0KLSBsaWIvU3VwcG9ydC9Vbml4L1NpZ25hbHMuaW5jICAgICAg ICAgICAgICB8IDYgKysrLS0tCi0gdXRpbHMvdW5pdHRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3Qu Y2MgICAgfCAxICsKLSA1IGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDYgZGVsZXRp b25zKC0pCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFy eUluZm8uaCBiL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5oCi1pbmRl eCAzNGE4YTFlMy4uMTIxNGVjZTUgMTAwNjQ0Ci0tLS0gYS9sbHZtL2luY2x1ZGUvbGx2bS9BbmFs eXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5oCi0rKysgYi9sbHZtL2luY2x1ZGUvbGx2bS9BbmFseXNp cy9UYXJnZXRMaWJyYXJ5SW5mby5oCi1AQCAtMTgsNiArMTgsMTUgQEAKLSAjaW5jbHVkZSAibGx2 bS9JUi9QYXNzTWFuYWdlci5oIgotICNpbmNsdWRlICJsbHZtL1Bhc3MuaCIKLSAKLSsjdW5kZWYg Zm9wZW42NAotKyN1bmRlZiBmc2Vla282NAotKyN1bmRlZiBmc3RhdDY0Ci0rI3VuZGVmIGZzdGF0 dmZzNjQKLSsjdW5kZWYgZnRlbGxvNjQKLSsjdW5kZWYgbHN0YXQ2NAotKyN1bmRlZiBzdGF0NjQK LSsjdW5kZWYgdG1wZmlsZTY0Ci0rCi0gbmFtZXNwYWNlIGxsdm0gewotIHRlbXBsYXRlIDx0eXBl bmFtZSBUPiBjbGFzcyBBcnJheVJlZjsKLSBjbGFzcyBUcmlwbGU7Ci1kaWZmIC0tZ2l0IGEvbGli L1N1cHBvcnQvVW5peC9EeW5hbWljTGlicmFyeS5pbmMgYi9saWIvU3VwcG9ydC9Vbml4L0R5bmFt aWNMaWJyYXJ5LmluYwotaW5kZXggYTJhMzc5OTYuLjJmODZjNDcwIDEwMDY0NAotLS0tIGEvbGx2 bS9saWIvU3VwcG9ydC9Vbml4L0R5bmFtaWNMaWJyYXJ5LmluYwotKysrIGIvbGx2bS9saWIvU3Vw cG9ydC9Vbml4L0R5bmFtaWNMaWJyYXJ5LmluYwotQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMg dm9pZCAqRG9TZWFyY2goY29uc3QgY2hhciogU3ltYm9sTmFtZSkgewotIAotIC8vIFRoaXMgbWFj cm8gcmV0dXJucyB0aGUgYWRkcmVzcyBvZiBhIHdlbGwta25vd24sIGV4cGxpY2l0IHN5bWJvbAot ICNkZWZpbmUgRVhQTElDSVRfU1lNQk9MKFNZTSkgXAotLSAgIGlmICghc3RyY21wKFN5bWJvbE5h bWUsICNTWU0pKSByZXR1cm4gJlNZTQotKyAgIGlmICghc3RyY21wKFN5bWJvbE5hbWUsICNTWU0p KSByZXR1cm4gKHZvaWQgKikmU1lNCi0gCi0gLy8gVW5kZXIgZ2xpYmMgd2UgaGF2ZSBhIHdlaXJk IHNpdHVhdGlvbi4gVGhlIHN0ZGVyci9vdXQvaW4gc3ltYm9scyBhcmUgYm90aAotIC8vIG1hY3Jv cyBhbmQgZ2xvYmFsIHZhcmlhYmxlcyBiZWNhdXNlIG9mIHN0YW5kYXJkcyByZXF1aXJlbWVudHMu IFNvLCB3ZQotZGlmZiAtLWdpdCBhL3V0aWxzL3VuaXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0 LmNjIGIvdXRpbHMvdW5pdHRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MKLWluZGV4IGQ4ODJh YjJlLi5mMWZiMTJkMCAxMDA2NDQKLS0tLSBhL2xsdm0vdXRpbHMvdW5pdHRlc3QvZ29vZ2xldGVz dC9zcmMvZ3Rlc3QuY2MKLSsrKyBiL2xsdm0vdXRpbHMvdW5pdHRlc3QvZ29vZ2xldGVzdC9zcmMv Z3Rlc3QuY2MKLUBAIC0xMjgsNiArMTI4LDcgQEAKLSAKLSAjaWYgR1RFU1RfQ0FOX1NUUkVBTV9S RVNVTFRTXwotICMgaW5jbHVkZSA8YXJwYS9pbmV0Lmg+ICAvLyBOT0xJTlQKLSsjIGluY2x1ZGUg PHN5cy9zb2NrZXQuaD4gIC8vIE5PTElOVAotICMgaW5jbHVkZSA8bmV0ZGIuaD4gIC8vIE5PTElO VAotICMgaW5jbHVkZSA8c3lzL3NvY2tldC5oPiAgLy8gTk9MSU5UCi0gIyBpbmNsdWRlIDxzeXMv dHlwZXMuaD4gIC8vIE5PTElOVApkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9s bHZtLTAwMi1tdXNsLXBwYzY0LWVsZnYyLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9s bHZtLTAwMi1tdXNsLXBwYzY0LWVsZnYyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDcxZDk2NGJkMzcuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2xsdm0tMDAyLW11c2wtcHBjNjQtZWxmdjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwz MCArMCwwIEBACi1UaGlzIHBhdGNoZXMgTExWTSB0byB1c2UgRUxGdjIgb24gcHBjNjQgdW5jb25k aXRpb25hbGx5IHVubGVzcyBvdmVycmlkZGVuLiBXZQotbmVlZCB0aGlzIGJlY2F1c2UgdW5saWtl IG1vc3QgZGlzdHJvcyB3ZSB1c2UgRUxGdjIgZm9yIGJvdGggZ2xpYmMgYW5kIG11c2wKLW9uIGJp ZyBlbmRpYW4gcHBjNjQuCi0KLWRpZmYgLS1naXQgYS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDVGFy Z2V0TWFjaGluZS5jcHAgYi9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAK LWluZGV4IDA2MzQ4MzNlLi5iN2NiYzJlNyAxMDA2NDQKLS0tLSBhL2xsdm0vbGliL1RhcmdldC9Q b3dlclBDL1BQQ1RhcmdldE1hY2hpbmUuY3BwCi0rKysgYi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQ Qy9QUENUYXJnZXRNYWNoaW5lLmNwcAotQEAgLTIyMiw5ICsyMjIsOCBAQCBzdGF0aWMgUFBDVGFy Z2V0TWFjaGluZTo6UFBDQUJJIGNvbXB1dGVUYXJnZXRBQkkoY29uc3QgVHJpcGxlICZUVCwKLSAK LSAgIHN3aXRjaCAoVFQuZ2V0QXJjaCgpKSB7Ci0gICBjYXNlIFRyaXBsZTo6cHBjNjRsZToKLS0g ICAgcmV0dXJuIFBQQ1RhcmdldE1hY2hpbmU6OlBQQ19BQklfRUxGdjI7Ci0gICBjYXNlIFRyaXBs ZTo6cHBjNjQ6Ci0tICAgIHJldHVybiBQUENUYXJnZXRNYWNoaW5lOjpQUENfQUJJX0VMRnYxOwot KyAgICByZXR1cm4gUFBDVGFyZ2V0TWFjaGluZTo6UFBDX0FCSV9FTEZ2MjsKLSAgIGRlZmF1bHQ6 Ci0gICAgIHJldHVybiBQUENUYXJnZXRNYWNoaW5lOjpQUENfQUJJX1VOS05PV047Ci0gICB9Ci1k aWZmIC0tZ2l0IGEvdGVzdC9Db2RlR2VuL1Bvd2VyUEMvcHBjNjQtZWxmLWFiaS5sbCBiL3Rlc3Qv Q29kZUdlbi9Qb3dlclBDL3BwYzY0LWVsZi1hYmkubGwKLWluZGV4IDhiMWNmNmI1Li4yOTZhMmFm YSAxMDA2NDQKLS0tLSBhL2xsdm0vdGVzdC9Db2RlR2VuL1Bvd2VyUEMvcHBjNjQtZWxmLWFiaS5s bAotKysrIGIvbGx2bS90ZXN0L0NvZGVHZW4vUG93ZXJQQy9wcGM2NC1lbGYtYWJpLmxsCi1AQCAt MSw0ICsxLDUgQEAKLS07IFJVTjogbGxjIC12ZXJpZnktbWFjaGluZWluc3RycyAtbXRyaXBsZT1w b3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUgPCAlcyB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJl Zml4PUNIRUNLLUVMRnYxCi0rOyBSVU46IGxsYyAtdmVyaWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlw bGU9cG93ZXJwYzY0LXVua25vd24tbGludXgtZ251IDwgJXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNr LXByZWZpeD1DSEVDSy1FTEZ2MgotKzsgUlVOOiBsbGMgLXZlcmlmeS1tYWNoaW5laW5zdHJzIC1t dHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxpbnV4LW11c2wgPCAlcyB8IEZpbGVDaGVjayAlcyAt Y2hlY2stcHJlZml4PUNIRUNLLUVMRnYyCi0gOyBSVU46IGxsYyAtdmVyaWZ5LW1hY2hpbmVpbnN0 cnMgLW10cmlwbGU9cG93ZXJwYzY0LXVua25vd24tbGludXgtZ251IC10YXJnZXQtYWJpIGVsZnYx IDwgJXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2MQotIDsgUlVOOiBs bGMgLXZlcmlmeS1tYWNoaW5laW5zdHJzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxpbnV4 LWdudSAtdGFyZ2V0LWFiaSBlbGZ2MiA8ICVzIHwgRmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9 Q0hFQ0stRUxGdjIKLSA7IFJVTjogbGxjIC12ZXJpZnktbWFjaGluZWluc3RycyAtbXRyaXBsZT1w b3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudSA8ICVzIHwgRmlsZUNoZWNrICVzIC1jaGVjay1w cmVmaXg9Q0hFQ0stRUxGdjIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2 bS0wMDMtcHBjLXNlY3VyZXBsdC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0w MDMtcHBjLXNlY3VyZXBsdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVk MTU5NzQzNzVkLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZt LTAwMy1wcGMtc2VjdXJlcGx0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAot LS0tIGEvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDU3VidGFyZ2V0LmNwcAotKysrIGIvbGx2 bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDU3VidGFyZ2V0LmNwcAotQEAgLTE2NSw3ICsxNjUsNyBA QCB2b2lkIFBQQ1N1YnRhcmdldDo6aW5pdFN1YnRhcmdldEZlYXR1cmVzKFN0cmluZ1JlZiBDUFUs IFN0cmluZ1JlZiBGUykgewotIAotICAgaWYgKChUYXJnZXRUcmlwbGUuaXNPU0ZyZWVCU0QoKSAm JiBUYXJnZXRUcmlwbGUuZ2V0T1NNYWpvclZlcnNpb24oKSA+PSAxMykgfHwKLSAgICAgICBUYXJn ZXRUcmlwbGUuaXNPU05ldEJTRCgpIHx8IFRhcmdldFRyaXBsZS5pc09TT3BlbkJTRCgpIHx8Ci0t ICAgICAgVGFyZ2V0VHJpcGxlLmlzTXVzbCgpKQotKyAgICAgIGlzVGFyZ2V0TGludXgoKSkKLSAg ICAgU2VjdXJlUGx0ID0gdHJ1ZTsKLSAKLSAgIGlmIChIYXNTUEUgJiYgSXNQUEM2NCkKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDQtb3ZlcnJpZGUtb3B0LnBhdGNo IGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwNC1vdmVycmlkZS1vcHQucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxZDBlNGIzMWIzMi4uMDAwMDAwMDAwMDAwCi0t LSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDQtb3ZlcnJpZGUtb3B0LnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhpcyBhbGxvd3MgdXMgdG8gb3ZlcnJpZGUg dGhlIG9wdGltaXphdGlvbiBsZXZlbCBhcyBub3QgYWxsIHBsYXRmb3JtcyBjYW4KLWRlYWwgd2l0 aCAtTzMuCi0KLS0tLSBhL2xsdm0vQ01ha2VMaXN0cy50eHQKLSsrKyBiL2xsdm0vQ01ha2VMaXN0 cy50eHQKLUBAIC05MTgsNiArOTE4LDEyIEBAIGlmKCBNSU5HVyBBTkQgTk9UICIke0NNQUtFX0NY WF9DT01QSUxFUl9JRH0iIE1BVENIRVMgIkNsYW5nIiApCi0gICBsbHZtX3JlcGxhY2VfY29tcGls ZXJfb3B0aW9uKENNQUtFX0NYWF9GTEFHU19SRUxFQVNFICItTzMiICItTzIiKQotIGVuZGlmKCkK LSAKLStzZXQoVk9JRF9DWFhfT1BUX0ZMQUdTICIiIENBQ0hFIFNUUklORyAiT3B0aW1pemF0aW9u IGxldmVsIHRvIHVzZSIpCi0rCi0raWYgKE5PVCBWT0lEX0NYWF9PUFRfRkxBR1MgU1RSRVFVQUwg IiIpCi0rICAgIGxsdm1fcmVwbGFjZV9jb21waWxlcl9vcHRpb24oQ01BS0VfQ1hYX0ZMQUdTX1JF TEVBU0UgIi1PMyIgIiR7Vk9JRF9DWFhfT1BUX0ZMQUdTfSIpCi0rZW5kaWYoKQotKwotICMgUHV0 IHRoaXMgYmVmb3JlIHRibGdlbi4gRWxzZSB3ZSBoYXZlIGEgY2lyY3VsYXIgZGVwZW5kZW5jZS4K LSBhZGRfc3ViZGlyZWN0b3J5KGxpYi9EZW1hbmdsZSkKLSBhZGRfc3ViZGlyZWN0b3J5KGxpYi9T dXBwb3J0KQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwNS1wcGMt YmlncGljLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwNS1wcGMtYmlncGlj LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzMyNjg3YjlkOTIuLjAwMDAw MDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDA1LXBwYy1iaWdwaWMu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIGYzZGJkZDQ5YzA2YmZh ZmMxZDYxMzgwOTRjZjQyODg5YzE0ZDM4YjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBTYW11ZWwgSG9sbGFuZCA8c2FtdWVsQHNob2xsYW5kLm9yZz4KLURhdGU6IFN1biwgMyBOb3Yg MjAxOSAxMDo1NzoyNyAtMDYwMAotU3ViamVjdDogW1BBVENIXSBbTExWTV1bUG93ZXJQQ10gQXNz dW1lIEJpZ1BJQyBpZiBubyBQSUMgbGV2ZWwgaXMgc3BlY2lmaWVkCi0KLS0tLQotIGxsdm0vbGli L1RhcmdldC9Qb3dlclBDL1BQQ0FzbVByaW50ZXIuY3BwICB8IDIgKy0KLSBsbHZtL2xpYi9UYXJn ZXQvUG93ZXJQQy9QUENNQ0luc3RMb3dlci5jcHAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAy IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvVGFyZ2V0 L1Bvd2VyUEMvUFBDQXNtUHJpbnRlci5jcHAgYi9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDQXNtUHJp bnRlci5jcHAKLWluZGV4IGNjZTIxZjMyLi44N2NhNWY5YiAxMDA2NDQKLS0tLSBhL2xsdm0vbGli L1RhcmdldC9Qb3dlclBDL1BQQ0FzbVByaW50ZXIuY3BwCi0rKysgYi9sbHZtL2xpYi9UYXJnZXQv UG93ZXJQQy9QUENBc21QcmludGVyLmNwcAotQEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIFBQQ0Fz bVByaW50ZXI6OkVtaXRUbHNDYWxsKGNvbnN0IE1hY2hpbmVJbnN0ciAqTUksCi0gCi0gICAvLyBB ZGQgMzI3Njggb2Zmc2V0IHRvIHRoZSBzeW1ib2wgc28gd2UgZm9sbG93IHVwIHRoZSBsYXRlc3Qg R09UL1BMVCBBQkkuCi0gICBpZiAoS2luZCA9PSBNQ1N5bWJvbFJlZkV4cHI6OlZLX1BMVCAmJiBT dWJ0YXJnZXQtPmlzU2VjdXJlUGx0KCkgJiYKLS0gICAgICBNLT5nZXRQSUNMZXZlbCgpID09IFBJ Q0xldmVsOjpCaWdQSUMpCi0rICAgICAgTS0+Z2V0UElDTGV2ZWwoKSAhPSBQSUNMZXZlbDo6U21h bGxQSUMpCi0gICAgIFRsc1JlZiA9IE1DQmluYXJ5RXhwcjo6Y3JlYXRlQWRkKAotICAgICAgICAg VGxzUmVmLCBNQ0NvbnN0YW50RXhwcjo6Y3JlYXRlKDMyNzY4LCBPdXRDb250ZXh0KSwgT3V0Q29u dGV4dCk7Ci0gICBjb25zdCBNYWNoaW5lT3BlcmFuZCAmTU8gPSBNSS0+Z2V0T3BlcmFuZCgyKTsK LWRpZmYgLS1naXQgYS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDTUNJbnN0TG93ZXIuY3BwIGIvbGli L1RhcmdldC9Qb3dlclBDL1BQQ01DSW5zdExvd2VyLmNwcAotaW5kZXggNWNjMTgwZDcuLmE1YjAy NTY1IDEwMDY0NAotLS0tIGEvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDTUNJbnN0TG93ZXIu Y3BwCi0rKysgYi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENNQ0luc3RMb3dlci5jcHAKLUBA IC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIE1DT3BlcmFuZCBHZXRTeW1ib2xSZWYoY29uc3QgTWFj aGluZU9wZXJhbmQgJk1PLCBjb25zdCBNQ1N5bWJvbCAqU3ltYm9sLAotICAgY29uc3QgTUNFeHBy ICpFeHByID0gTUNTeW1ib2xSZWZFeHByOjpjcmVhdGUoU3ltYm9sLCBSZWZLaW5kLCBDdHgpOwot ICAgLy8gSWYgLW1zZWN1cmUtcGx0IC1mUElDLCBhZGQgMzI3NjggdG8gc3ltYm9sLgotICAgaWYg KFN1YnRhcmdldC0+aXNTZWN1cmVQbHQoKSAmJiBUTS5pc1Bvc2l0aW9uSW5kZXBlbmRlbnQoKSAm JgotLSAgICAgIE0tPmdldFBJQ0xldmVsKCkgPT0gUElDTGV2ZWw6OkJpZ1BJQyAmJgotKyAgICAg IE0tPmdldFBJQ0xldmVsKCkgIT0gUElDTGV2ZWw6OlNtYWxsUElDICYmCi0gICAgICAgTU8uZ2V0 VGFyZ2V0RmxhZ3MoKSA9PSBQUENJSTo6TU9fUExUKQotICAgICBFeHByID0KLSAgICAgICAgIE1D QmluYXJ5RXhwcjo6Y3JlYXRlQWRkKEV4cHIsIE1DQ29uc3RhbnRFeHByOjpjcmVhdGUoMzI3Njgs IEN0eCksIEN0eCk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDA2 LWFhcmNoNjQtbWZfZXhlYy5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDYt YWFyY2g2NC1tZl9leGVjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDBh YmQyMTY2NjUuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0t MDA2LWFhcmNoNjQtbWZfZXhlYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAK LUZpeCBmYWlsdXJlcyBpbiBBbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC4qIG9uIGFh cmNoNjQ6Ci0KLSAgICBGYWlsaW5nIFRlc3RzICg4KToKLSAgICAgICAgTExWTS1Vbml0IDo6IFN1 cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuQWxs b2NBbmRSZWxlYXNlLzMKLSAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVz dHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuRHVwbGljYXRlTmVhci8zCi0gICAg ICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3VwcG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9N YXBwZWRNZW1vcnlUZXN0LkVuYWJsZWRXcml0ZS8zCi0gICAgICAgIExMVk0tVW5pdCA6OiBTdXBw b3J0Ly4vU3VwcG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0Lk11bHRp cGxlQWxsb2NBbmRSZWxlYXNlLzMKLSAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBw b3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuU3VjY2Vzc2l2ZU5lYXIv MwotICAgICAgICBMTFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9u VGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5VbmFsaWduZWROZWFyLzMKLSAgICAgICAgTExWTS1Vbml0 IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRl c3QuWmVyb05lYXIvMwotICAgICAgICBMTFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0 cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5aZXJvU2l6ZU5lYXIvMwotCi1VcHN0 cmVhbS1Jc3N1ZTogaHR0cHM6Ly9idWdzLmxsdm0ub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3OCNj MTAKLQotLS0tIGEvbGx2bS9saWIvU3VwcG9ydC9Vbml4L01lbW9yeS5pbmMKLSsrKyBiL2xsdm0v bGliL1N1cHBvcnQvVW5peC9NZW1vcnkuaW5jCi1AQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgaW50 IGdldFBvc2l4UHJvdGVjdGlvbkZsYWdzKHVuc2lnbmVkIEZsYWdzKSB7Ci0gICAgIHJldHVybiBQ Uk9UX1JFQUQgfCBQUk9UX1dSSVRFIHwgUFJPVF9FWEVDOwotICAgY2FzZSBsbHZtOjpzeXM6Ok1l bW9yeTo6TUZfRVhFQzoKLSAjaWYgKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19Q T1dFUlBDX18pIHx8IGRlZmluZWQgKF9fcHBjX18pIHx8IFwKLS0gICAgIGRlZmluZWQoX1BPV0VS KSB8fCBkZWZpbmVkKF9BUkNIX1BQQykpCi0rICAgICBkZWZpbmVkKF9QT1dFUikgfHwgZGVmaW5l ZChfQVJDSF9QUEMpIHx8IChkZWZpbmVkKF9fbGludXhfXykgJiYgZGVmaW5lZChfX2FhcmNoNjRf XykpKQotICAgICAvLyBPbiBQb3dlclBDLCBoYXZpbmcgYW4gZXhlY3V0YWJsZSBwYWdlIHRoYXQg aGFzIG5vIHJlYWQgcGVybWlzc2lvbgotICAgICAvLyBjYW4gaGF2ZSB1bmludGVuZGVkIGNvbnNl cXVlbmNlcy4gIFRoZSBmdW5jdGlvbiBJbnZhbGlkYXRlSW5zdHJ1Y3Rpb24tCi0gICAgIC8vIENh Y2hlIHVzZXMgaW5zdHJ1Y3Rpb25zIGRjYmYgYW5kIGljYmksIGJvdGggb2Ygd2hpY2ggYXJlIHRy ZWF0ZWQgYnkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3RlbXBsYXRlIGIvc3JjcGtncy9s bHZtMTIvdGVtcGxhdGUKaW5kZXggN2IzNjFiYmJmNWJjLi5lN2U0MGNhZTQxM2UgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvbGx2bTEyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGx2bTEyL3RlbXBsYXRl CkBAIC0xLDEyNSArMSwxMyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGx2bTEyJwogcGtnbmFt ZT1sbHZtMTIKIHZlcnNpb249MTIuMC4xCi1yZXZpc2lvbj0zCi13cmtzcmM9Imxsdm0tcHJvamVj dC0ke3ZlcnNpb259LnNyYyIKLWJ1aWxkX3dya3NyYz1sbHZtCi1idWlsZF9zdHlsZT1jbWFrZQot Y29uZmlndXJlX2FyZ3M9IgotIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIC1Xbm8tZGV2Ci0g LURFTkFCTEVfTElOS0VSX0JVSUxEX0lEPVlFUwotIC1ETExWTV9JTkNMVURFX0RPQ1M9WUVTCi0g LURMTFZNX0JVSUxEX0RPQ1M9WUVTCi0gLURMTFZNX0VOQUJMRV9TUEhJTlg9WUVTCi0gLURTUEhJ TlhfV0FSTklOR1NfQVNfRVJST1JTPU5PCi0gLURMTFZNX0JVSUxEX0xMVk1fRFlMSUI9WUVTCi0g LURMTFZNX0xJTktfTExWTV9EWUxJQj1ZRVMKLSAtRExMVk1fRU5BQkxFX1JUVEk9WUVTCi0gLURM TFZNX0VOQUJMRV9GRkk9WUVTCi0gLURMTFZNX0JJTlVUSUxTX0lOQ0RJUj0vdXNyL2luY2x1ZGUi Ci1ob3N0bWFrZWRlcGVuZHM9InBlcmwgcHl0aG9uMyB6bGliLWRldmVsIGxpYmZmaS1kZXZlbCBz d2lnIHB5dGhvbjMtU3BoaW54Ci0gcHl0aG9uMy1yZWNvbW1vbm1hcmsgcHl0aG9uMy1zcGhpbngt YXV0b21vZGFwaSIKLW1ha2VkZXBlbmRzPSJweXRob24zLWRldmVsIHpsaWItZGV2ZWwgZWxmdXRp bHMtZGV2ZWwgbGliZmZpLWRldmVsIGxpYmVkaXQtZGV2ZWwKLSBsaWJ4bWwyLWRldmVsIGJpbnV0 aWxzLWRldmVsIGxpYmF0b21pYy1kZXZlbCIKLWRlcGVuZHM9ImxpYmxsdm0xMj49JHt2ZXJzaW9u fV8ke3JldmlzaW9ufSIKLXNob3J0X2Rlc2M9IkxvdyBMZXZlbCBWaXJ0dWFsIE1hY2hpbmUiCity ZXZpc2lvbj00CitidWlsZF9zdHlsZT1tZXRhCitzaG9ydF9kZXNjPSJMb3cgTGV2ZWwgVmlydHVh bCBNYWNoaW5lIChyZW1vdmVkIHBhY2thZ2UpIgogbWFpbnRhaW5lcj0icTY2IDxkYW5pZWxAb2N0 YWZvcmdlLm9yZz4iCi1saWNlbnNlPSJBcGFjaGUtMi4wIgorbGljZW5zZT0ibWV0YXBhY2thZ2Ui CiBob21lcGFnZT0iaHR0cHM6Ly93d3cubGx2bS5vcmciCi1kaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0 aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9yZWxlYXNlcy9kb3dubG9hZC9sbHZtb3JnLSR7dmVy c2lvbn0vbGx2bS1wcm9qZWN0LSR7dmVyc2lvbn0uc3JjLnRhci54eiIKLWNoZWNrc3VtPTEyOWNi MjVjZDEzNjc3YWFkOTUxY2U1YzJkZWIwZmU0YWZjMWU5ZDk4OTUwZjUzYjUxYmRjZmI1YTczYWZh MGUKLWxpYjMyZGlzYWJsZWQ9eWVzCi1weXRob25fdmVyc2lvbj0zCi0KLWlmIFsgIiRYQlBTX1RB UkdFVF9MSUJDIiA9ICJtdXNsIiBdOyB0aGVuCi0JY29uZmlndXJlX2FyZ3MrPSIgLURMSUJDWFhf SEFTX01VU0xfTElCQz1ZRVMiCi0JbWFrZWRlcGVuZHMrPSIgbGliZXhlY2luZm8tZGV2ZWwiCi0J ZGVwZW5kcys9IiBsaWJleGVjaW5mby1kZXZlbCIKLWZpCi0KLSMgIm9wZXJhbmQgb3V0IG9mIHJh bmdlIiBhc3NlbWJsZXIgZmFpbHVyZXMKLWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgot CXBwYzY0KikgOzsKLQlwcGMqKSBjb25maWd1cmVfYXJncys9IiAtRENMQU5HX0VOQUJMRV9DTEFO R0Q9T0ZGIiA7OwotZXNhYwotCi1wb3N0X3BhdGNoKCkgewotCSMgdXBkYXRlIGNvbmZpZy5ndWVz cyBmb3IgYmV0dGVyIHBsYXRmb3JtIGRldGVjdGlvbgotCWNwICRYQlBTX0NPTU1PTkRJUi9lbnZp cm9ubWVudC9jb25maWd1cmUvYXV0b21ha2UvY29uZmlnLmd1ZXNzIFwKLQkJJHt3cmtzcmN9L2xs dm0vY21ha2UKLX0KLQotcHJlX2NvbmZpZ3VyZSgpIHsKLQlsb2NhbCB0cmlwbGV0Ci0KLQkjIFZh c3RseSByZWR1Y2Ugc2l6ZSBvZiBkZWJ1Z2dpbmcgc3ltYm9sczoKLQlDRkxBR1M9JHtDRkxBR1Mv IC1nLyAtZzF9Ci0JQ1hYRkxBR1M9JHtDWFhGTEFHUy8gLWcvIC1nMX0KLQotCSMgc2luY2UgZ2Nj OSwgdGhlIGJ1aWxkIGxpa2VzIHRvIGJsb3cgdXAgZm9yIHBwYzMyIGFwcGFyZW50bHkgYmVjYXVz ZQotCSMgb2YgY2xhbmcgYmVpbmcgdG9vIGxhcmdlIGZvciBhIDI0LWJpdCByZWxhdGl2ZSBjYWxs IHRvIHRoZSBQTFQsIHNvCi0JIyBvcHRpbWl6ZSBmb3Igc2l6ZSBpbnN0ZWFkCi0JY2FzZSAiJFhC UFNfVEFSR0VUX01BQ0hJTkUiIGluCi0JCXBwYzY0KikgOzsKLQkJbWlwcyotbXVzbHxwcGMqKSBj b25maWd1cmVfYXJncys9IiAtRFZPSURfQ1hYX09QVF9GTEFHUz0tT3MiIDs7Ci0JZXNhYwotCi0J aWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCi0JCW1zZ19ub3JtYWwgIkJ1aWxkaW5nIGhvc3Qg dGJsZ2VuXG4iCi0JCW1rZGlyIC1wIGJ1aWxkL0hPU1QKLQkJY2QgYnVpbGQvSE9TVAotCQlDQz0i JEJVSUxEX0NDIiBDWFg9IiRCVUlMRF9DWFgiIENGTEFHUz0iJEJVSUxEX0NGTEFHUyIgXAotCQkJ Q1hYRkxBR1M9IiRCVUlMRF9DWFhGTEFHUyIgTERGTEFHUz0iJEJVSUxEX0xERkxBR1MiIFwKLQkJ CWNtYWtlIC4uLy4uIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIFwKLQkJCS1ETExWTV9FTkFC TEVfUFJPSkVDVFM9JHtfZW5hYmxlZF9wcm9qZWN0c30KLQkJbWFrZSAke21ha2Vqb2JzfSAtQyB1 dGlscy9UYWJsZUdlbgotCQlbICIkX2xsZGJfZW5hYmxlIiA9ICJ5ZXMiIF0gJiYgbWFrZSAke21h a2Vqb2JzfSAtQyB0b29scy9sbGRiL3V0aWxzL1RhYmxlR2VuCi0JCWNvbmZpZ3VyZV9hcmdzKz0i IC1ETExWTV9UQUJMRUdFTj0ke3dya3NyY30vbGx2bS9idWlsZC9IT1NUL2Jpbi9sbHZtLXRibGdl biIKLQkJWyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBdICYmIGNvbmZpZ3VyZV9hcmdzKz0iIC1E TExEQl9UQUJMRUdFTj0ke3dya3NyY30vbGx2bS9idWlsZC9IT1NUL2Jpbi9sbGRiLXRibGdlbiIK LQkJY2QgLi4vLi4KLQlmaQotCi0JY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCi0JCWk2 ODYqKSBfYXJjaD0iWDg2Ijs7Ci0JCXg4Nl82NCopIF9hcmNoPSJYODYiOzsKLQkJYXJtdjUqKSBf YXJjaD0iQXJtdjV0ZSI7OwotCQlhcm12NiopIF9hcmNoPSJBcm12NiI7OwotCQlhcm12NyopIF9h cmNoPSJBcm12NyI7OwotCQlhYXJjaDY0KikgX2FyY2g9IkFBcmNoNjQiOzsKLQkJbWlwcyopIF9h cmNoPSJNaXBzIjs7Ci0JCXBwYyopIF9hcmNoPSJQb3dlclBDIjs7Ci0JCXJpc2N2NjQqKSBfYXJj aD0iUklTQ1Y2NCI7OwotCWVzYWMKLQotCXRyaXBsZXQ9JHtYQlBTX0NST1NTX1RSSVBMRVQ6LSRY QlBTX1RSSVBMRVR9Ci0KLQljb25maWd1cmVfYXJncys9IiAtRExMVk1fVEFSR0VUX0FSQ0g9JHtf YXJjaH0iCi0JY29uZmlndXJlX2FyZ3MrPSIgLURMTFZNX0hPU1RfVFJJUExFPSR7dHJpcGxldH0i Ci0JY29uZmlndXJlX2FyZ3MrPSIgLURMTFZNX0RFRkFVTFRfVEFSR0VUX1RSSVBMRT0ke3RyaXBs ZXR9IgotfQotCi1kb19pbnN0YWxsKCkgewotCWNkIGJ1aWxkCi0JY21ha2UgLURDTUFLRV9JTlNU QUxMX1BSRUZJWD0ke0RFU1RESVJ9L3VzciAtUCBjbWFrZV9pbnN0YWxsLmNtYWtlCi0KLQkjIFJl cXVpcmVkIGZvciBtdWx0aWxpYi4KLQlpZiBbICIkWEJQU19UQVJHRVRfTUFDSElORSIgPSAieDg2 XzY0IiBdOyB0aGVuCi0JCWZvciBfaGVhZGVyIGluIGxsdm0tY29uZmlnOyBkbwotCQkJbXYgJHtE RVNURElSfS91c3IvaW5jbHVkZS9sbHZtL0NvbmZpZy8ke19oZWFkZXJ9eywtNjR9LmgKLQkJCXZp bnN0YWxsICR7RklMRVNESVJ9L2xsdm0tQ29uZmlnLSR7X2hlYWRlcn0uaCA2NDQgXAotCQkJCXVz ci9pbmNsdWRlL2xsdm0vQ29uZmlnICR7X2hlYWRlcn0uaAotCQlkb25lCi0JZmkKLQotCSMgUmVt b3ZlIGxsdm0tY29uZmlnLWhvc3QgaW4gY3Jvc3MgYnVpbGRzLgotCWlmIFsgIiRDUk9TU19CVUlM RCIgXTsgdGhlbgotCQlybSAtZiAke0RFU1RESVJ9L3Vzci9iaW4vbGx2bS1jb25maWctaG9zdAot CWZpCi19CiAKIGxpYmxsdm0xMl9wYWNrYWdlKCkgewogCXNob3J0X2Rlc2MrPSIgLSBydW50aW1l IGxpYnJhcnkiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYkxMVk0tKi5z byoiCi0JfQogfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvdXBkYXRlIGIvc3JjcGtncy9s bHZtMTIvdXBkYXRlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTVjZjI2YjM1ODYu LjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi91cGRhdGUKKysrIC9kZXYvbnVsbApA QCAtMSwzICswLDAgQEAKLXNpdGU9Imh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVj dC9yZWxlYXNlcyIKLXBhdHRlcm49Imxsdm1vcmctXEsoXGQrLil7Mn1cZCsoLXJjXGQrKT8iCi1p Z25vcmU9IiotcmMqIgoKRnJvbSA4MTllMzIyMmEwNjA2OWE2OGNhZTEzNTUyMDg2MzhlZjlmYWM0 N2U5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0y MENlcnF1ZWlyYT89IDxhY2VycXVlaXJhMDIxQGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAyOCBGZWIg MjAyMiAyMTo0Mjo1NSArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMTUvMzBdIG1lc2E6IHJlYnVpbGQg Zm9yIGxsdm0xMwoKLS0tCiBzcmNwa2dzL21lc2EvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L21lc2EvdGVtcGxhdGUgYi9zcmNwa2dzL21lc2EvdGVtcGxhdGUKaW5kZXggYzkwNTAwZGU3NDE2 Li44ZjA4MjYyZmIxMzUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWVzYS90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL21lc2EvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdtZXNhJwogcGtnbmFtZT1tZXNhCiB2ZXJzaW9uPTIxLjMuNwotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRGdsdm5kPXRydWUgLURz aGFyZWQtZ2xhcGk9ZW5hYmxlZCAtRGdibT1lbmFibGVkIC1EZWdsPWVuYWJsZWQKICAtRG9zbWVz YT10cnVlIC1EZ2xlczE9ZW5hYmxlZCAtRGdsZXMyPWVuYWJsZWQgLURnbHg9ZHJpIC1EZHJpMz1l bmFibGVkCgpGcm9tIGJmMzU1N2RkYTE3MDUwMTU4ZDYxZjQ4NGI1MzAwMzMwYmY4M2Y0YTcgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwQ2VycXVl aXJhPz0gPGFjZXJxdWVpcmEwMjFAZ21haWwuY29tPgpEYXRlOiBNb24sIDI4IEZlYiAyMDIyIDIx OjQzOjU2ICswMDAwClN1YmplY3Q6IFtQQVRDSCAxNi8zMF0gcXRjcmVhdG9yOiB1cGRhdGUgdG8g Ni4wLjIuCgotLS0KIHNyY3BrZ3MvcXRjcmVhdG9yL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9xdGNyZWF0b3IvdGVtcGxhdGUgYi9zcmNwa2dzL3F0Y3JlYXRvci90ZW1wbGF0ZQppbmRleCA5 ODg0OTFlYzY0OTYuLmIxNjZjYzA1YTk5OSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdGNyZWF0b3Iv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdGNyZWF0b3IvdGVtcGxhdGUKQEAgLTUsNyArNSw3IEBA IHJldmlzaW9uPTEKIHdya3NyYz0icXQtY3JlYXRvci1vcGVuc291cmNlLXNyYy0ke3ZlcnNpb259 IgogYnVpbGRfc3R5bGU9cW1ha2UKIG1ha2VfaW5zdGFsbF9hcmdzPSJJTlNUQUxMX1JPT1Q9XCR7 REVTVERJUn0vdXNyIgotaG9zdG1ha2VkZXBlbmRzPSJjbGFuZyBsbHZtIHBlcmwgcGtnLWNvbmZp ZyBweXRob24zIHdoaWNoIHF0NS1xbWFrZQoraG9zdG1ha2VkZXBlbmRzPSJsbHZtMTMgcGVybCBw a2ctY29uZmlnIHB5dGhvbjMgd2hpY2ggcXQ1LXFtYWtlCiAgcXQ1LWhvc3QtdG9vbHMiCiBtYWtl ZGVwZW5kcz0icXQ1LWRlY2xhcmF0aXZlLWRldmVsIHF0NS1zY3JpcHQtZGV2ZWwgcXQ1LXRvb2xz LWRldmVsCiAgcXQ1LXF1aWNrY29udHJvbHMgcXQ1LXN2Zy1kZXZlbCBjbGFuZyBsbHZtIgoKRnJv bSBiMjU2ZDg4ODIzNWUyY2RhNjdhMjMxZGIzNzQ0OGMxZmY2YjhjNTVjIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMENlcnF1ZWlyYT89IDxhY2Vy cXVlaXJhMDIxQGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAyOCBGZWIgMjAyMiAyMTo0Njo0OCArMDAw MApTdWJqZWN0OiBbUEFUQ0ggMTcvMzBdIGlzcGM6IHVwZGF0ZSB0byAxLjE3LjAuCgotLS0KIC4u Li9pc3BjL3BhdGNoZXMvY21ha2UtYnVpbGQtdHlwZS1ub25lLnBhdGNoICB8ICAgMTggLQogc3Jj cGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwMS5wYXRjaCAgICAgICAgIHwgICA1NyAtCiBzcmNw a2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAyLnBhdGNoICAgICAgICAgfCAgOTIzIC0tLS0tLS0t CiBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAzLnBhdGNoICAgICAgICAgfCAxNTA0IC0t LS0tLS0tLS0tLQogc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNC5wYXRjaCAgICAgICAg IHwgICAzNCAtCiBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA1LnBhdGNoICAgICAgICAg fCAgMzcyIC0tLQogc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNi5wYXRjaCAgICAgICAg IHwgIDEyNiAtCiBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA3LnBhdGNoICAgICAgICAg fCAgMTYwIC0tCiBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA4LnBhdGNoICAgICAgICAg fCAgMTQ5IC0tCiBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA5LnBhdGNoICAgICAgICAg fCAyMTA5IC0tLS0tLS0tLS0tLS0tLS0tCiBzcmNwa2dzL2lzcGMvdGVtcGxhdGUgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICA4ICstCiAxMSBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMo KyksIDU0NTYgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pc3BjL3Bh dGNoZXMvY21ha2UtYnVpbGQtdHlwZS1ub25lLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwMS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAzLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA2LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNy5wYXRjaAogZGVsZXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDgucGF0Y2gKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA5LnBhdGNoCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9pc3BjL3BhdGNoZXMvY21ha2UtYnVpbGQtdHlwZS1ub25lLnBhdGNoIGIvc3JjcGtn cy9pc3BjL3BhdGNoZXMvY21ha2UtYnVpbGQtdHlwZS1ub25lLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA0MTFlMzUzYzczMTQuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L2lzcGMvcGF0Y2hlcy9jbWFrZS1idWlsZC10eXBlLW5vbmUucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxOCArMCwwIEBACi1JbmRleDogaXNwYy0xLjE1LjAvQ01ha2VMaXN0cy50eHQKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBpc3BjLTEuMTUuMC5vcmlnL0NNYWtlTGlzdHMudHh0Ci0rKysgaXNwYy0xLjE1 LjAvQ01ha2VMaXN0cy50eHQKLUBAIC0xNTcsMTMgKzE1Nyw2IEBAIHNldChPVVRQVVRfUkVMRUFT RSBSZWxlYXNlL2JpbikKLSBzZXQoQ01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICR7Q01B S0VfQ1VSUkVOVF9CSU5BUllfRElSfS9iaW4gKQotIAotIGlmKENNQUtFX0JVSUxEX1RZUEUpCi0t ICAgICMgVmFsaWRhdGUgYnVpbGQgdHlwZQotLSAgICBzZXQoQ09ORklHVVJBVElPTl9UWVBFUyAi RGVidWc7UmVsZWFzZTtSZWxXaXRoRGViSW5mbyIpCi0tCi0tICAgIHN0cmluZyhGSU5EICIke0NP TkZJR1VSQVRJT05fVFlQRVN9IiAiJHtDTUFLRV9CVUlMRF9UWVBFfSIgTUFUQ0hFRF9DT05GSUcp Ci0tICAgIGlmICgke01BVENIRURfQ09ORklHfSBFUVVBTCAtMSkKLS0gICAgICAgICBtZXNzYWdl KEZBVEFMX0VSUk9SICJDTUFLRV9CVUlMRF9UWVBFICgke0NNQUtFX0JVSUxEX1RZUEV9KSBhbGxv d3Mgb25seSB0aGUgZm9sbG93aW5nIHZhbHVlczogJHtDT05GSUdVUkFUSU9OX1RZUEVTfSIpCi0t ICAgIGVuZGlmKCkKLSBlbHNlKE5PVCBDTUFLRV9CVUlMRF9UWVBFKQotICAgICBzZXQoQ01BS0Vf QlVJTERfVFlQRSAiUmVsZWFzZSIpCi0gICAgIG1lc3NhZ2UoU1RBVFVTICJCdWlsZCB0eXBlIG5v dCBzcGVjaWZpZWQ6IFVzZSBSZWxlYXNlIGJ5IGRlZmF1bHQuIikKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDEucGF0Y2ggYi9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9s bHZtMTItMDAxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjJkM2Y1YTQw OWUuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAxLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRnJvbSAxYzBmODlkY2NiNzc0ZjIx NmM3ZjZlNzZhOTllZTkwN2ExZTY0MWNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTog RG1pdHJ5IEJhYm9raW4gPGRtaXRyeS55LmJhYm9raW5AaW50ZWwuY29tPgotRGF0ZTogVHVlLCAy MiBEZWMgMjAyMCAxNzowMzo1OSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggdG8gd29yayB3 aXRoIExMVk0gdHJ1bmsgYWZ0ZXIgbGx2bS9sbHZtLXByb2plY3RANDFjM2IyNzEzCi0KLS0tLQot IHNyYy9jdHguY3BwIHwgMTggKysrKysrKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEy IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNw cCBiL3NyYy9jdHguY3BwCi1pbmRleCA2ZmJiOGI5Y2YuLjk3N2U5ZDIyMiAxMDA2NDQKLS0tLSBh L3NyYy9jdHguY3BwCi0rKysgYi9zcmMvY3R4LmNwcAotQEAgLTE0NzMsMTEgKzE0NzMsMTUgQEAg dm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpBZGREZWJ1Z1BvcyhsbHZtOjpWYWx1ZSAqdmFsdWUs IGNvbnN0IFNvdXJjZVBvcyAqcG9zLAotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IGxs dm06OmR5bl9jYXN0PGxsdm06Okluc3RydWN0aW9uPih2YWx1ZSk7Ci0gICAgIGlmIChpbnN0ICE9 IE5VTEwgJiYgbS0+ZGlCdWlsZGVyKSB7Ci0gICAgICAgICBTb3VyY2VQb3MgcCA9IHBvcyA/ICpw b3MgOiBjdXJyZW50UG9zOwotLSAgICAgICAgaWYgKHAuZmlyc3RfbGluZSAhPSAwKQotKyAgICAg ICAgaWYgKHAuZmlyc3RfbGluZSAhPSAwKSB7Ci0gICAgICAgICAgICAgLy8gSWYgZmlyc3RfbGlu ZSA9PSAwLCB0aGVuIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2Ygc2V0dGluZyB1cAotICAgICAgICAg ICAgIC8vIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG9yIHRoZSBsaWtlOyBkb24ndCBhZGQgZGVidWcg cG9zaXRpb25zCi0gICAgICAgICAgICAgLy8gZm9yIHRob3NlIGZ1bmN0aW9ucwotLSAgICAgICAg ICAgIGluc3QtPnNldERlYnVnTG9jKGxsdm06OkRlYnVnTG9jOjpnZXQocC5maXJzdF9saW5lLCBw LmZpcnN0X2NvbHVtbiwgc2NvcGUgPyBzY29wZSA6IEdldERJU2NvcGUoKSkpOwotKyAgICAgICAg ICAgIHNjb3BlID0gc2NvcGUgPyBzY29wZSA6IEdldERJU2NvcGUoKTsKLSsgICAgICAgICAgICBs bHZtOjpEZWJ1Z0xvYyBkaUxvYyA9Ci0rICAgICAgICAgICAgICAgIGxsdm06OkRJTG9jYXRpb246 OmdldChzY29wZS0+Z2V0Q29udGV4dCgpLCBwLmZpcnN0X2xpbmUsIHAuZmlyc3RfY29sdW1uLCBz Y29wZSwgbnVsbHB0ciwgZmFsc2UpOwotKyAgICAgICAgICAgIGluc3QtPnNldERlYnVnTG9jKGRp TG9jKTsKLSsgICAgICAgIH0KLSAgICAgfQotIH0KLSAKLUBAIC0xNTE4LDkgKzE1MjIsMTAgQEAg dm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpFbWl0VmFyaWFibGVEZWJ1Z0luZm8oU3ltYm9sICpz eW0pIHsKLSAgICAgbGx2bTo6RElMb2NhbFZhcmlhYmxlICp2YXIgPSBtLT5kaUJ1aWxkZXItPmNy ZWF0ZUF1dG9WYXJpYWJsZSgKLSAgICAgICAgIHNjb3BlLCBzeW0tPm5hbWUsIHN5bS0+cG9zLkdl dERJRmlsZSgpLCBzeW0tPnBvcy5maXJzdF9saW5lLCBkaVR5cGUsIHRydWUgLyogcHJlc2VydmUg dGhyb3VnaCBvcHRzICovKTsKLSAKLSsgICAgbGx2bTo6RGVidWdMb2MgZGlMb2MgPQotKyAgICAg ICAgbGx2bTo6RElMb2NhdGlvbjo6Z2V0KHNjb3BlLT5nZXRDb250ZXh0KCksIHN5bS0+cG9zLmZp cnN0X2xpbmUsIHN5bS0+cG9zLmZpcnN0X2NvbHVtbiwgc2NvcGUsIG51bGxwdHIsIGZhbHNlKTsK LSAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmRlY2xhcmVJbnN0ID0KLS0gICAgICAgIG0tPmRpQnVp bGRlci0+aW5zZXJ0RGVjbGFyZShzeW0tPnN0b3JhZ2VQdHIsIHZhciwgbS0+ZGlCdWlsZGVyLT5j cmVhdGVFeHByZXNzaW9uKCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGx2bTo6RGVidWdMb2M6OmdldChzeW0tPnBvcy5maXJzdF9saW5lLCBzeW0tPnBvcy5maXJzdF9j b2x1bW4sIHNjb3BlKSwgYmJsb2NrKTsKLSsgICAgICAgIG0tPmRpQnVpbGRlci0+aW5zZXJ0RGVj bGFyZShzeW0tPnN0b3JhZ2VQdHIsIHZhciwgbS0+ZGlCdWlsZGVyLT5jcmVhdGVFeHByZXNzaW9u KCksIGRpTG9jLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhkZWNsYXJlSW5zdCwgJnN5bS0+ cG9zLCBzY29wZSk7Ci0gfQotIAotQEAgLTE1MzUsOSArMTU0MCwxMCBAQCB2b2lkIEZ1bmN0aW9u RW1pdENvbnRleHQ6OkVtaXRGdW5jdGlvblBhcmFtZXRlckRlYnVnSW5mbyhTeW1ib2wgKnN5bSwg aW50IGFyZ051bQotICAgICAgICAgbS0+ZGlCdWlsZGVyLT5jcmVhdGVQYXJhbWV0ZXJWYXJpYWJs ZShzY29wZSwgc3ltLT5uYW1lLCBhcmdOdW0gKyAxLCBzeW0tPnBvcy5HZXRESUZpbGUoKSwgc3lt LT5wb3MuZmlyc3RfbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGlUeXBlLCB0cnVlIC8qIHByZXNlcnZlIHRocm91Z2ggb3B0cyAqLywgZmxhZ3Mp OwotIAotKyAgICBsbHZtOjpEZWJ1Z0xvYyBkaUxvYyA9Ci0rICAgICAgICBsbHZtOjpESUxvY2F0 aW9uOjpnZXQoc2NvcGUtPmdldENvbnRleHQoKSwgc3ltLT5wb3MuZmlyc3RfbGluZSwgc3ltLT5w b3MuZmlyc3RfY29sdW1uLCBzY29wZSwgbnVsbHB0ciwgZmFsc2UpOwotICAgICBsbHZtOjpJbnN0 cnVjdGlvbiAqZGVjbGFyZUluc3QgPQotLSAgICAgICAgbS0+ZGlCdWlsZGVyLT5pbnNlcnREZWNs YXJlKHN5bS0+c3RvcmFnZVB0ciwgdmFyLCBtLT5kaUJ1aWxkZXItPmNyZWF0ZUV4cHJlc3Npb24o KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpEZWJ1Z0xvYzo6 Z2V0KHN5bS0+cG9zLmZpcnN0X2xpbmUsIHN5bS0+cG9zLmZpcnN0X2NvbHVtbiwgc2NvcGUpLCBi YmxvY2spOwotKyAgICAgICAgbS0+ZGlCdWlsZGVyLT5pbnNlcnREZWNsYXJlKHN5bS0+c3RvcmFn ZVB0ciwgdmFyLCBtLT5kaUJ1aWxkZXItPmNyZWF0ZUV4cHJlc3Npb24oKSwgZGlMb2MsIGJibG9j ayk7Ci0gICAgIEFkZERlYnVnUG9zKGRlY2xhcmVJbnN0LCAmc3ltLT5wb3MsIHNjb3BlKTsKLSB9 Ci0gCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAyLnBhdGNoIGIv c3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDkwM2YzMGRhMTBkLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9pc3Bj L3BhdGNoZXMvbGx2bTEyLTAwMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkyMyArMCwwIEBA Ci1Gcm9tIDA1OTdhNzlkMDg0YzAxNDc4MDEzNmRhOTA2YWZlMjFkMTVlOTgyY2IgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZWVwYWtSYWplbmRyYWt1bWFyYW4gPGRlZXBhay5yYWpl bmRyYWt1bWFyYW5AaW50ZWwuY29tPgotRGF0ZTogVHVlLCA1IEphbiAyMDIxIDEzOjUzOjMwIC0w ODAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBMTFZNIDguMCBhbmQgTExWTSA5LjAuICgjMTk2 NikKLQotLS0tCi0gLmFwcHZleW9yLnltbCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgLS0K LSAudHJhdmlzLnltbCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNyAtLS0KLSBDTWFrZUxp c3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICAgfCAxMiArKy0tLS0KLSBzcmMvYXN0LmNwcCAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCAtLQotIHNyYy9jdHguY3BwICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDMwIC0tLS0tLS0tLS0tLS0KLSBzcmMvZ2VuL0dsb2JhbHNMb2NhbGl6 YXRpb24uY3BwICAgICAgfCAgNCAtLQotIHNyYy9pc3BjLmNwcCAgICAgICAgICAgICAgICAgICAg ICAgICB8IDIwIC0tLS0tLS0tLQotIHNyYy9pc3BjLmggICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAzICstCi0gc3JjL2lzcGNfdmVyc2lvbi5oICAgICAgICAgICAgICAgICAgIHwgIDQgKy0K LSBzcmMvbWFpbi5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMyAtLS0tLS0KLSBzcmMv bW9kdWxlLmNwcCAgICAgICAgICAgICAgICAgICAgICAgfCAyNyAtLS0tLS0tLS0tLS0KLSBzcmMv bW9kdWxlLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiAtCi0gc3JjL29wdC5jcHAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgNjQgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot IHNyYy90eXBlLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwICsrLS0tCi0gdGVzdHMv bGl0LXRlc3RzLzE3NzEuaXNwYyAgICAgICAgICAgIHwgIDEgLQotIHRlc3RzL2xpdC10ZXN0cy8x ODQ0LmlzcGMgICAgICAgICAgICB8ICAzIC0tCi0gdGVzdHMvbGl0LXRlc3RzLzE5MjYuaXNwYyAg ICAgICAgICAgIHwgIDIgLQotIHRlc3RzL2xpdC10ZXN0cy9jcHVzX3g4Ni5pc3BjICAgICAgICB8 ICAyICsKLSB0ZXN0cy9saXQtdGVzdHMvY3B1c194ODZfbGx2bTEwLmlzcGMgfCAxMSAtLS0tLQot IHRlc3RzL2xpdC10ZXN0cy9saXQuY2ZnICAgICAgICAgICAgICB8ICA1IC0tLQotIDIwIGZpbGVz IGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDIxMyBkZWxldGlvbnMoLSkKLSBkZWxldGUgbW9k ZSAxMDA2NDQgdGVzdHMvbGl0LXRlc3RzL2NwdXNfeDg2X2xsdm0xMC5pc3BjCi0KLWRpZmYgLS1n aXQgYS8uYXBwdmV5b3IueW1sIGIvLmFwcHZleW9yLnltbAotaW5kZXggNDUxYTdiM2UwLi43OTQ1 Y2NhMmEgMTAwNjQ0Ci0tLS0gYS8uYXBwdmV5b3IueW1sCi0rKysgYi8uYXBwdmV5b3IueW1sCi1A QCAtNDEsOCArNDEsNiBAQCBlbnZpcm9ubWVudDoKLSAgICAgICBMTFZNX1ZFUlNJT046IGxhdGVz dAotICAgICAtIEFQUFZFWU9SX0JVSUxEX1dPUktFUl9JTUFHRTogVmlzdWFsIFN0dWRpbyAyMDE5 Ci0gICAgICAgTExWTV9WRVJTSU9OOiAxMC4wCi0tICAgIC0gQVBQVkVZT1JfQlVJTERfV09SS0VS X0lNQUdFOiBWaXN1YWwgU3R1ZGlvIDIwMTkKLS0gICAgICBMTFZNX1ZFUlNJT046IDkuMAotIAot IGZvcjoKLSAtCi1AQCAtNjIsNyArNjAsNiBAQCBmb3I6Ci0gICAgICAgICBpZiAiJUFQUFZFWU9S X0JVSUxEX1dPUktFUl9JTUFHRSUiPT0iVmlzdWFsIFN0dWRpbyAyMDE5IiAoIChzZXQgZ2VuZXJh dG9yPSJWaXN1YWwgU3R1ZGlvIDE2IikgJiAoc2V0IHZzdmVyc2lvbj0yMDE5KSkKLSAgICAgICAg IHNldCBMTFZNX1RBUj1sbHZtLTExLjAuMC13aW4udnMyMDE5LVJlbGVhc2UrQXNzZXJ0cy14ODYu YXJtLndhc20uN3oKLSAgICAgICAgIGlmICIlTExWTV9WRVJTSU9OJSI9PSIxMC4wIiAoc2V0IExM Vk1fVEFSPWxsdm0tMTAuMC4xLXdpbi52czIwMTktUmVsZWFzZStBc3NlcnRzLXg4Ni5hcm0ud2Fz bS56aXApCi0tICAgICAgICBpZiAiJUxMVk1fVkVSU0lPTiUiPT0iOS4wIiAoc2V0IExMVk1fVEFS PWxsdm0tOS4wLjEtd2luLnZzMjAxNy1SZWxlYXNlK0Fzc2VydHMteDg2LmFybS53YXNtLnppcCkK LSAgIGluc3RhbGw6Ci0gICAgIC0gcHM6IGNob2NvIGluc3RhbGwgLS1uby1wcm9ncmVzcyB3aW5m bGV4Ymlzb24zIHdnZXQgN3ppcAotICAgICAtIGNtZDogfC0KLWRpZmYgLS1naXQgYS8udHJhdmlz LnltbCBiLy50cmF2aXMueW1sCi1pbmRleCAyZTk2MDE3YTYuLjNhNmI4NTI2NCAxMDA2NDQKLS0t LSBhLy50cmF2aXMueW1sCi0rKysgYi8udHJhdmlzLnltbAotQEAgLTEwOCwxMyArMTA4LDYgQEAg am9iczoKLSAgICAgICAgIC0gTExWTV9UQVI9bGx2bS0xMC4wLjEtdWJ1bnR1MTYuMDQtUmVsZWFz ZStBc3NlcnRzLXg4Ni5hcm0ud2FzbS50YXIueHoKLSAgICAgICAgIC0gTExWTV9SRVBPPWh0dHBz Oi8vZ2l0aHViLmNvbS9kYmFib2tpbi9sbHZtLXByb2plY3QKLSAgICAgICAgIC0gSVNQQ19IT01F PSRUUkFWSVNfQlVJTERfRElSCi0tICAgICMgTExWTSA5LjAgKyBVYnVudHUgMTYuMDQ6IGJ1aWxk LCBsaXQgdGVzdHMsIGV4YW1wbGVzIChidWlsZCArIHJ1biksIGJlbmNobWFya3MgKGJ1aWxkICsg dHJpYWwgcnVuKQotLSAgICAtIDw8OiAqbXlfdGFnCi0tICAgICAgZW52OgotLSAgICAgICAgLSBM TFZNX1ZFUlNJT049OS4wIE9TPVVidW50dTE2LjA0Ci0tICAgICAgICAtIExMVk1fVEFSPWxsdm0t OS4wLjEtdWJ1bnR1MTYuMDQtUmVsZWFzZStBc3NlcnRzLXg4Ni5hcm0ud2FzbS50YXIueHoKLS0g ICAgICAgIC0gTExWTV9SRVBPPWh0dHBzOi8vZ2l0aHViLmNvbS9kYmFib2tpbi9sbHZtLXByb2pl Y3QKLS0gICAgICAgIC0gSVNQQ19IT01FPSRUUkFWSVNfQlVJTERfRElSCi0gICAgICMgV0FTTSBl bmFibGVkIGJ1aWxkCi0gICAgICMgTExWTSAxMS4wICsgVWJ1bnR1IDE2LjA0OiBidWlsZCwgbGl0 IHRlc3RzLCBleGFtcGxlcyAoYnVpbGQpLCBiZW5jaG1hcmtzIChidWlsZCArIHRyaWFsIHJ1bikK LSAgICAgLSA8PDogKm15X3RhZwotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VM aXN0cy50eHQKLWluZGV4IDVmYTg2M2ZjZi4uYTZiM2VkMjUxIDEwMDY0NAotLS0tIGEvQ01ha2VM aXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMjQxLDEwICsyNDEsOCBAQCBpZiAo WDg2X0VOQUJMRUQpCi0gICAgICAgICBhdngyLWk4eDMyIGF2eDItaTE2eDE2Ci0gICAgICAgICBh dngyLWkzMng0IGF2eDItaTMyeDggYXZ4Mi1pMzJ4MTYgYXZ4Mi1pNjR4NAotICAgICAgICAgYXZ4 NTEya25sLWkzMngxNgotLSAgICAgICAgYXZ4NTEyc2t4LWkzMngxNiBhdng1MTJza3gtaTMyeDgp Ci0tICAgIGlmICgke0xMVk1fVkVSU0lPTl9OVU1CRVJ9IFZFUlNJT05fR1JFQVRFUl9FUVVBTCAi MTAuMC4wIikKLS0gICAgICAgIGxpc3QoQVBQRU5EIElTUENfVEFSR0VUUyBhdng1MTJza3gtaTh4 NjQgYXZ4NTEyc2t4LWkxNngzMikKLS0gICAgZW5kaWYoKQotKyAgICAgICAgYXZ4NTEyc2t4LWkz MngxNiBhdng1MTJza3gtaTMyeDgKLSsgICAgICAgIGF2eDUxMnNreC1pOHg2NCBhdng1MTJza3gt aTE2eDMyKQotIGVuZGlmKCkKLSBpZiAoQVJNX0VOQUJMRUQpCi0gICAgIGxpc3QoQVBQRU5EIElT UENfVEFSR0VUUyBuZW9uLWk4eDE2IG5lb24taTE2eDggbmVvbi1pMzJ4NCBuZW9uLWkzMng4KQot QEAgLTI1OSwxMSArMjU3LDcgQEAgaWYgKFdBU01fRU5BQkxFRCkKLSBlbmRpZigpCi0gCi0gc2V0 KENMQU5HX0xJQlJBUllfTElTVCBjbGFuZ0Zyb250ZW5kIGNsYW5nRHJpdmVyIGNsYW5nU2VyaWFs aXphdGlvbiBjbGFuZ1BhcnNlIGNsYW5nU2VtYSBjbGFuZ0FuYWx5c2lzIGNsYW5nQVNUIGNsYW5n QmFzaWMgY2xhbmdFZGl0IGNsYW5nTGV4KQotLXNldChMTFZNX0NPTVBPTkVOVFMgZW5naW5lIGlw byBiaXRyZWFkZXIgYml0d3JpdGVyIGluc3RydW1lbnRhdGlvbiBsaW5rZXIgb3B0aW9uKQotLQot LWlmICgke0xMVk1fVkVSU0lPTl9OVU1CRVJ9IFZFUlNJT05fR1JFQVRFUl9FUVVBTCAiMTAuMC4w IikKLS0gICAgbGlzdChBUFBFTkQgTExWTV9DT01QT05FTlRTIGZyb250ZW5kb3Blbm1wKQotLWVu ZGlmKCkKLStzZXQoTExWTV9DT01QT05FTlRTIGVuZ2luZSBpcG8gYml0cmVhZGVyIGJpdHdyaXRl ciBpbnN0cnVtZW50YXRpb24gbGlua2VyIG9wdGlvbiBmcm9udGVuZG9wZW5tcCkKLSAKLSBpZiAo WDg2X0VOQUJMRUQpCi0gICAgIGxpc3QoQVBQRU5EIExMVk1fQ09NUE9ORU5UUyB4ODYpCi1kaWZm IC0tZ2l0IGEvc3JjL2FzdC5jcHAgYi9zcmMvYXN0LmNwcAotaW5kZXggMjBmNzVhMjljLi41YTQz YzQ4NTQgMTAwNjQ0Ci0tLS0gYS9zcmMvYXN0LmNwcAotKysrIGIvc3JjL2FzdC5jcHAKLUBAIC00 NCw5ICs0NCw3IEBACi0gI2luY2x1ZGUgInN5bS5oIgotICNpbmNsdWRlICJ1dGlsLmgiCi0gCi0t I2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gI2luY2x1ZGUgPGxsdm0v U3VwcG9ydC9UaW1lUHJvZmlsZXIuaD4KLS0jZW5kaWYKLSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAv LyBBU1ROb2RlCi0gCi1AQCAtNjIsOSArNjAsNyBAQCB2b2lkIEFTVDo6QWRkRnVuY3Rpb24oU3lt Ym9sICpzeW0sIFN0bXQgKmNvZGUpIHsKLSB9Ci0gCi0gdm9pZCBBU1Q6OkdlbmVyYXRlSVIoKSB7 Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRp bWVUcmFjZVNjb3BlIFRpbWVTY29wZSgiR2VuZXJhdGVJUiIpOwotLSNlbmRpZgotICAgICBmb3Ig KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZ1bmN0aW9ucy5zaXplKCk7ICsraSkKLSAgICAgICAg IGZ1bmN0aW9uc1tpXS0+R2VuZXJhdGVJUigpOwotIH0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNw cCBiL3NyYy9jdHguY3BwCi1pbmRleCA5NzdlOWQyMjIuLjQyYzRlYTA5ZCAxMDA2NDQKLS0tLSBh L3NyYy9jdHguY3BwCi0rKysgYi9zcmMvY3R4LmNwcAotQEAgLTMwOSwyMSArMzA5LDEzIEBAIEZ1 bmN0aW9uRW1pdENvbnRleHQ6OkZ1bmN0aW9uRW1pdENvbnRleHQoRnVuY3Rpb24gKmZ1bmMsIFN5 bWJvbCAqZnVuU3ltLCBsbHZtOjpGCi0gICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKLSAgICAg ICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiX19vZmZfYWxsX29uX21hc2tfJXMi LCBnLT50YXJnZXQtPkdldElTQVN0cmluZygpKTsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04g PD0gSVNQQ19MTFZNXzhfMAotLSAgICAgICAgICAgIGxsdm06OkNvbnN0YW50ICpvZmZGdW5jID0g bS0+bW9kdWxlLT5nZXRPckluc2VydEZ1bmN0aW9uKGJ1ZiwgTExWTVR5cGVzOjpWb2lkVHlwZSk7 Ci0tI2Vsc2UgLy8gTExWTSA5LjArCi0gICAgICAgICAgICAgbGx2bTo6RnVuY3Rpb25DYWxsZWUg b2ZmRnVuY0NhbGxlZSA9IG0tPm1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbihidWYsIExMVk1U eXBlczo6Vm9pZFR5cGUpOwotICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50ICpvZmZGdW5jID0g bGx2bTo6Y2FzdDxsbHZtOjpDb25zdGFudD4ob2ZmRnVuY0NhbGxlZS5nZXRDYWxsZWUoKSk7Ci0t I2VuZGlmCi0gICAgICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIGxsdm06OmlzYTxsbHZt OjpGdW5jdGlvbj4ob2ZmRnVuYykpOwotICAgICAgICAgICAgIGxsdm06OkJhc2ljQmxvY2sgKm9m ZkJCID0gbGx2bTo6QmFzaWNCbG9jazo6Q3JlYXRlKCpnLT5jdHgsICJlbnRyeSIsIChsbHZtOjpG dW5jdGlvbiAqKW9mZkZ1bmMsIDApOwotICAgICAgICAgICAgIGxsdm06OlN0b3JlSW5zdCAqaW5z dCA9IG5ldyBsbHZtOjpTdG9yZUluc3QoTExWTU1hc2tBbGxPZmYsIGdsb2JhbEFsbE9uTWFza1B0 ciwgb2ZmQkIpOwotICAgICAgICAgICAgIGlmIChnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5KSB7 Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgICAgICAgICAg ICAgaW5zdC0+c2V0QWxpZ25tZW50KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50 KCkpOwotLSNlbHNlIC8vIExMVk0gMTAuMCsKLSAgICAgICAgICAgICAgICAgaW5zdC0+c2V0QWxp Z25tZW50KGxsdm06Ok1heWJlQWxpZ24oZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1l bnQoKSkudmFsdWVPck9uZSgpKTsKLS0jZW5kaWYKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICAgbGx2bTo6UmV0dXJuSW5zdDo6Q3JlYXRlKCpnLT5jdHgsIG9mZkJCKTsKLSAgICAgICAgIH0K LUBAIC0yMjg4LDExICsyMjgwLDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6 OkxvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFR5cGUgKnR5cGUsIGMKLSAjZW5kaWYK LSAKLSAgICAgaWYgKGctPm9wdC5mb3JjZUFsaWduZWRNZW1vcnkgJiYgbGx2bTo6ZHluX2Nhc3Q8 bGx2bTo6VmVjdG9yVHlwZT4ocHQtPmdldEVsZW1lbnRUeXBlKCkpKSB7Ci0tI2lmIElTUENfTExW TV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgICAgIGluc3QtPnNldEFsaWdubWVudChn LT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpKTsKLS0jZWxzZSAvLyBMTFZNIDEw LjArCi0gICAgICAgICBpbnN0LT5zZXRBbGlnbm1lbnQobGx2bTo6TWF5YmVBbGlnbihnLT50YXJn ZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpKS52YWx1ZU9yT25lKCkpOwotLSNlbmRpZgot ICAgICB9Ci0gCi0gICAgIEFkZERlYnVnUG9zKGluc3QpOwotQEAgLTI0MzEsMTEgKzI0MTksNyBA QCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFsdWUg KnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssCi0gICAgICAgICAgICAgICAgIC8vIHZzIHRoZSBwcm9w ZXIgYWxpZ25tZW50IGluIHByYWN0aWNlLikKLSAgICAgICAgICAgICAgICAgaW50IGFsaWduID0g MTsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAg ICAgICAgICBpbnN0LT5zZXRBbGlnbm1lbnQoYWxpZ24pOwotLSNlbHNlIC8vIExMVk0gMTAuMCsK LSAgICAgICAgICAgICAgICAgaW5zdC0+c2V0QWxpZ25tZW50KGxsdm06Ok1heWJlQWxpZ24oYWxp Z24pLnZhbHVlT3JPbmUoKSk7Ci0tI2VuZGlmCi0gICAgICAgICAgICAgfQotIAotICAgICAgICAg ICAgIEFkZERlYnVnUG9zKGluc3QpOwotQEAgLTI2NDksMTEgKzI2MzMsNyBAQCBsbHZtOjpWYWx1 ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QWxsb2NhSW5zdChsbHZtOjpUeXBlICpsbHZtVHlwZSwg Y29uc3QgY2hhciAqbgotICAgICAgICAgYWxpZ24gPSBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3Rv ckFsaWdubWVudCgpOwotIAotICAgICBpZiAoYWxpZ24gIT0gMCkgewotLSNpZiBJU1BDX0xMVk1f VkVSU0lPTiA8PSBJU1BDX0xMVk1fOV8wCi0tICAgICAgICBpbnN0LT5zZXRBbGlnbm1lbnQoYWxp Z24pOwotLSNlbHNlIC8vIExMVk0gMTAuMCsKLSAgICAgICAgIGluc3QtPnNldEFsaWdubWVudChs bHZtOjpNYXliZUFsaWduKGFsaWduKS52YWx1ZU9yT25lKCkpOwotLSNlbmRpZgotICAgICB9Ci0g ICAgIC8vIERvbid0IGFkZCBkZWJ1Z2dpbmcgaW5mbyB0byBhbGxvY2EgaW5zdHJ1Y3Rpb25zCi0g ICAgIHJldHVybiBpbnN0OwotQEAgLTI5MjYsMTEgKzI5MDYsNyBAQCB2b2lkIEZ1bmN0aW9uRW1p dENvbnRleHQ6OlN0b3JlSW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlZhbHVlICpwdHIs IGNvbnN0Ci0gICAgIGxsdm06OlN0b3JlSW5zdCAqaW5zdCA9IG5ldyBsbHZtOjpTdG9yZUluc3Qo dmFsdWUsIHB0ciwgYmJsb2NrKTsKLSAKLSAgICAgaWYgKGctPm9wdC5mb3JjZUFsaWduZWRNZW1v cnkgJiYgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4ocHQtPmdldEVsZW1lbnRUeXBl KCkpKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgICAg IGluc3QtPnNldEFsaWdubWVudChnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgp KTsKLS0jZWxzZSAvLyBMTFZNIDEwLjArCi0gICAgICAgICBpbnN0LT5zZXRBbGlnbm1lbnQobGx2 bTo6TWF5YmVBbGlnbihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpKS52YWx1 ZU9yT25lKCkpOwotLSNlbmRpZgotICAgICB9Ci0gCi0gI2lmZGVmIElTUENfR0VOWF9FTkFCTEVE Ci1AQCAtMzAyNSwxNiArMzAwMSwxMCBAQCB2b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6Ok1lbWNw eUluc3QobGx2bTo6VmFsdWUgKmRlc3QsIGxsdm06OlZhbHVlICpzcmMsIGxsdm06OgotICAgICB9 Ci0gICAgIGlmIChhbGlnbiA9PSBOVUxMKQotICAgICAgICAgYWxpZ24gPSBMTFZNSW50MzIoMSk7 Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV84XzAKLS0gICAgbGx2bTo6Q29u c3RhbnQgKm1jRnVuYyA9Ci0tICAgICAgICBtLT5tb2R1bGUtPmdldE9ySW5zZXJ0RnVuY3Rpb24o Imxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQiLCBMTFZNVHlwZXM6OlZvaWRUeXBlLCBMTFZNVHlw ZXM6OlZvaWRQb2ludGVyVHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMTFZNVHlwZXM6OlZvaWRQb2ludGVyVHlwZSwgTExWTVR5cGVzOjpJbnQ2NFR5cGUsIExM Vk1UeXBlczo6Qm9vbFR5cGUpOwotLSNlbHNlIC8vIExMVk0gOS4wKwotICAgICBsbHZtOjpGdW5j dGlvbkNhbGxlZSBtY0Z1bmNDYWxsZWUgPQotICAgICAgICAgbS0+bW9kdWxlLT5nZXRPckluc2Vy dEZ1bmN0aW9uKCJsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0IiwgTExWTVR5cGVzOjpWb2lkVHlw ZSwgTExWTVR5cGVzOjpWb2lkUG9pbnRlclR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTExWTVR5cGVzOjpWb2lkUG9pbnRlclR5cGUsIExMVk1UeXBlczo6SW50 NjRUeXBlLCBMTFZNVHlwZXM6OkJvb2xUeXBlKTsKLSAgICAgbGx2bTo6Q29uc3RhbnQgKm1jRnVu YyA9IGxsdm06OmNhc3Q8bGx2bTo6Q29uc3RhbnQ+KG1jRnVuY0NhbGxlZS5nZXRDYWxsZWUoKSk7 Ci0tI2VuZGlmCi0gICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtY0Z1bmMgIT0gTlVMTCk7Ci0g ICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBsbHZtOjppc2E8bGx2bTo6RnVuY3Rpb24+KG1jRnVu YykpOwotIAotZGlmZiAtLWdpdCBhL3NyYy9nZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAgYi9z cmMvZ2VuL0dsb2JhbHNMb2NhbGl6YXRpb24uY3BwCi1pbmRleCAxOTNhNjYyODkuLmExNzZlOTQ2 MiAxMDA2NDQKLS0tLSBhL3NyYy9nZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAKLSsrKyBiL3Ny Yy9nZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAKLUBAIC00NzAsMTEgKzQ3MCw3IEBAIHZvaWQg R2xvYmFsc0xvY2FsaXphdGlvbjo6TG9jYWxpemVHbG9iYWxzKExvY2FsaXphdGlvbkluZm8gJkxJ KSB7Ci0gICAgICAgICBJbnN0cnVjdGlvbiAmRmlyc3RJID0gKkZuLT5nZXRFbnRyeUJsb2NrKCku YmVnaW4oKTsKLSAgICAgICAgIFR5cGUgKkVsZW1UeSA9IEdWLT5nZXRUeXBlKCktPmdldEVsZW1l bnRUeXBlKCk7Ci0gICAgICAgICBBbGxvY2FJbnN0ICpBbGxvY2EgPSBuZXcgQWxsb2NhSW5zdChF bGVtVHksIDAsIEdWLT5nZXROYW1lKCkgKyAiLmxvY2FsIiwgJkZpcnN0SSk7Ci0tI2lmIElTUENf TExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgICAgIEFsbG9jYS0+c2V0QWxpZ25t ZW50KEdWLT5nZXRBbGlnbm1lbnQoKSk7Ci0tI2Vsc2UgLy8gTExWTSAxMC4wKwotICAgICAgICAg QWxsb2NhLT5zZXRBbGlnbm1lbnQobGx2bTo6TWF5YmVBbGlnbihHVi0+Z2V0QWxpZ25tZW50KCkp KTsKLS0jZW5kaWYKLSAgICAgICAgIGlmICghaXNhPFVuZGVmVmFsdWU+KEdWLT5nZXRJbml0aWFs aXplcigpKSkKLSAgICAgICAgICAgICBuZXcgU3RvcmVJbnN0KEdWLT5nZXRJbml0aWFsaXplcigp LCBBbGxvY2EsICZGaXJzdEkpOwotIAotZGlmZiAtLWdpdCBhL3NyYy9pc3BjLmNwcCBiL3NyYy9p c3BjLmNwcAotaW5kZXggZTJkMGYyMDZlLi5mYWM1MjMzZjcgMTAwNjQ0Ci0tLS0gYS9zcmMvaXNw Yy5jcHAKLSsrKyBiL3NyYy9pc3BjLmNwcAotQEAgLTI3Miw5ICsyNzIsNyBAQCB0eXBlZGVmIGVu dW0gewotICAgICBDUFVfU2lsdmVybW9udCwKLSAKLSAgICAgQ1BVX0lDWCwKLS0jaWYgSVNQQ19M TFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgQ1BVX1RHTCwKLS0jZW5kaWYKLSAj aWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEyXzAKLSAgICAgQ1BVX0FETCwKLSAg ICAgQ1BVX1NQUiwKLUBAIC0zNjUsMTAgKzM2Myw4IEBAIGNsYXNzIEFsbENQVXMgewotIAotICAg ICAgICAgbmFtZXNbQ1BVX0lDWF0ucHVzaF9iYWNrKCJpY2VsYWtlLXNlcnZlciIpOwotICAgICAg ICAgbmFtZXNbQ1BVX0lDWF0ucHVzaF9iYWNrKCJpY3giKTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgIG5hbWVzW0NQVV9UR0xdLnB1c2hfYmFjaygi dGlnZXJsYWtlIik7Ci0gICAgICAgICBuYW1lc1tDUFVfVEdMXS5wdXNoX2JhY2soInRnbCIpOwot LSNlbmRpZgotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTJfMAotICAgICAg ICAgbmFtZXNbQ1BVX0FETF0ucHVzaF9iYWNrKCJhbGRlcmxha2UiKTsKLSAgICAgICAgIG5hbWVz W0NQVV9BRExdLnB1c2hfYmFjaygiYWRsIik7Ci1AQCAtNDExLDExICs0MDcsOSBAQCBjbGFzcyBB bGxDUFVzIHsKLSAgICAgICAgIGNvbXBhdFtDUFVfQURMXSA9IFNldChDUFVfQURMLCBDUFVfeDg2 XzY0LCBDUFVfQm9ubmVsbCwgQ1BVX1BlbnJ5biwgQ1BVX0NvcmUyLCBDUFVfTmVoYWxlbSwgQ1BV X1NpbHZlcm1vbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVX1NhbmR5QnJp ZGdlLCBDUFVfSXZ5QnJpZGdlLCBDUFVfSGFzd2VsbCwgQ1BVX0Jyb2Fkd2VsbCwgQ1BVX05vbmUp OwotICNlbmRpZgotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAg ICAgICAgY29tcGF0W0NQVV9UR0xdID0KLSAgICAgICAgICAgICBTZXQoQ1BVX1RHTCwgQ1BVX3g4 Nl82NCwgQ1BVX0Jvbm5lbGwsIENQVV9QZW5yeW4sIENQVV9Db3JlMiwgQ1BVX05laGFsZW0sIENQ VV9TaWx2ZXJtb250LCBDUFVfU2FuZHlCcmlkZ2UsCi0gICAgICAgICAgICAgICAgIENQVV9JdnlC cmlkZ2UsIENQVV9IYXN3ZWxsLCBDUFVfQnJvYWR3ZWxsLCBDUFVfU0tYLCBDUFVfSUNMLCBDUFVf SUNYLCBDUFVfTm9uZSk7Ci0tI2VuZGlmCi0gICAgICAgICBjb21wYXRbQ1BVX0lDWF0gPSBTZXQo Q1BVX0lDWCwgQ1BVX3g4Nl82NCwgQ1BVX0Jvbm5lbGwsIENQVV9QZW5yeW4sIENQVV9Db3JlMiwg Q1BVX05laGFsZW0sIENQVV9TaWx2ZXJtb250LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIENQVV9TYW5keUJyaWRnZSwgQ1BVX0l2eUJyaWRnZSwgQ1BVX0hhc3dlbGwsIENQVV9Ccm9h ZHdlbGwsIENQVV9TS1gsIENQVV9JQ0wsIENQVV9Ob25lKTsKLSAKLUBAIC01NTYsOSArNTUwLDcg QEAgVGFyZ2V0OjpUYXJnZXQoQXJjaCBhcmNoLCBjb25zdCBjaGFyICpjcHUsIElTUENUYXJnZXQg aXNwY190YXJnZXQsIGJvb2wgcGljLCBib28KLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQ Q19MTFZNXzEyXzAKLSAgICAgICAgIGNhc2UgQ1BVX1NQUjoKLSAjZW5kaWYKLS0jaWYgSVNQQ19M TFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgIGNhc2UgQ1BVX1RHTDoKLS0j ZW5kaWYKLSAgICAgICAgIGNhc2UgQ1BVX0lDWDoKLSAgICAgICAgIGNhc2UgQ1BVX0lDTDoKLSAg ICAgICAgIGNhc2UgQ1BVX1NLWDoKLUBAIC05MTYsNyArOTA4LDYgQEAgVGFyZ2V0OjpUYXJnZXQo QXJjaCBhcmNoLCBjb25zdCBjaGFyICpjcHUsIElTUENUYXJnZXQgaXNwY190YXJnZXQsIGJvb2wg cGljLCBib28KLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIElTUENUYXJn ZXQ6OmF2eDUxMnNreF9pOHg2NDoKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZN XzEwXzAgLy8gTExWTSAxMC4wKwotICAgICAgICAgLy8gVGhpcyB0YXJnZXQgaXMgZW5hYmxlZCBv bmx5IGZvciBMTFZNIDEwLjAgYW5kIGxhdGVyCi0gICAgICAgICAvLyBiZWNhdXNlIExMVk0gcmVx dWlyZXMgYSBudW1iZXIgb2YgZml4ZXMsIHdoaWNoIGFyZQotICAgICAgICAgLy8gY29tbWl0dGVk IHRvIExMVk0gMTEuMCBhbmQgY2FuIGJlIGFwcGxpZWQgdG8gMTAuMCwgYnV0IG5vdAotQEAgLTkz NywxMiArOTI4LDcgQEAgVGFyZ2V0OjpUYXJnZXQoQXJjaCBhcmNoLCBjb25zdCBjaGFyICpjcHUs IElTUENUYXJnZXQgaXNwY190YXJnZXQsIGJvb2wgcGljLCBib28KLSAgICAgICAgIHRoaXMtPm1f aGFzVmVjUHJlZmV0Y2ggPSBmYWxzZTsKLSAgICAgICAgIENQVWZyb21JU0EgPSBDUFVfU0tYOwot ICAgICAgICAgYnJlYWs7Ci0tI2Vsc2UKLS0gICAgICAgIHVuc3VwcG9ydGVkX3RhcmdldCA9IHRy dWU7Ci0tICAgICAgICBicmVhazsKLS0jZW5kaWYKLSAgICAgY2FzZSBJU1BDVGFyZ2V0Ojphdng1 MTJza3hfaTE2eDMyOgotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMCAv LyBMTFZNIDEwLjArCi0gICAgICAgICAvLyBUaGlzIHRhcmdldCBpcyBlbmFibGVkIG9ubHkgZm9y IExMVk0gMTAuMCBhbmQgbGF0ZXIKLSAgICAgICAgIC8vIGJlY2F1c2UgTExWTSByZXF1aXJlcyBh IG51bWJlciBvZiBmaXhlcywgd2hpY2ggYXJlCi0gICAgICAgICAvLyBjb21taXR0ZWQgdG8gTExW TSAxMS4wIGFuZCBjYW4gYmUgYXBwbGllZCB0byAxMC4wLCBidXQgbm90Ci1AQCAtOTYzLDEwICs5 NDksNiBAQCBUYXJnZXQ6OlRhcmdldChBcmNoIGFyY2gsIGNvbnN0IGNoYXIgKmNwdSwgSVNQQ1Rh cmdldCBpc3BjX3RhcmdldCwgYm9vbCBwaWMsIGJvbwotICAgICAgICAgdGhpcy0+bV9oYXNWZWNQ cmVmZXRjaCA9IGZhbHNlOwotICAgICAgICAgQ1BVZnJvbUlTQSA9IENQVV9TS1g7Ci0gICAgICAg ICBicmVhazsKLS0jZWxzZQotLSAgICAgICAgdW5zdXBwb3J0ZWRfdGFyZ2V0ID0gdHJ1ZTsKLS0g ICAgICAgIGJyZWFrOwotLSNlbmRpZgotICNpZmRlZiBJU1BDX0FSTV9FTkFCTEVECi0gICAgIGNh c2UgSVNQQ1RhcmdldDo6bmVvbl9pOHgxNjoKLSAgICAgICAgIHRoaXMtPm1faXNhID0gVGFyZ2V0 OjpORU9OOwotQEAgLTE2NjIsMTEgKzE2NDQsOSBAQCBHbG9iYWxzOjpHbG9iYWxzKCkgewotICAg ICBpc011bHRpVGFyZ2V0Q29tcGlsYXRpb24gPSBmYWxzZTsKLSAgICAgZXJyb3JMaW1pdCA9IC0x OwotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBlbmFi bGVUaW1lVHJhY2UgPSBmYWxzZTsKLSAgICAgLy8gc2V0IGRlZmF1bHQgZ3JhbnVsYXJpdHkgdG8g NTAwLgotICAgICB0aW1lVHJhY2VHcmFudWxhcml0eSA9IDUwMDsKLS0jZW5kaWYKLSAgICAgdGFy Z2V0ID0gTlVMTDsKLSAgICAgY3R4ID0gbmV3IGxsdm06OkxMVk1Db250ZXh0OwotIAotZGlmZiAt LWdpdCBhL3NyYy9pc3BjLmggYi9zcmMvaXNwYy5oCi1pbmRleCBlMjVkODgzMGUuLmRlMzU3YTIx YyAxMDA2NDQKLS0tLSBhL3NyYy9pc3BjLmgKLSsrKyBiL3NyYy9pc3BjLmgKLUBAIC02OTUsMTMg KzY5NSwxMiBAQCBzdHJ1Y3QgR2xvYmFscyB7Ci0gCi0gICAgIC8qIE51bWJlciBvZiBlcnJvcnMg dG8gc2hvdyBpbiBJU1BDLiAqLwotICAgICBpbnQgZXJyb3JMaW1pdDsKLS0jaWYgSVNQQ19MTFZN X1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSsKLSAgICAgLyogV2hlbiB0cnVlLCBlbmFibGUg Y29tcGlsZSB0aW1lIHRyYWNpbmcuICovCi0gICAgIGJvb2wgZW5hYmxlVGltZVRyYWNlOwotIAot ICAgICAvKiBXaGVuIGNvbXBpbGUgdGltZSB0cmFjaW5nIGlzIGVuYWJsZWQsIHNldCB0aW1lIGdy YW51bGFyaXR5LiAqLwotICAgICBpbnQgdGltZVRyYWNlR3JhbnVsYXJpdHk7Ci0tI2VuZGlmCi0g fTsKLSAKLSBlbnVtIHsKLWRpZmYgLS1naXQgYS9zcmMvaXNwY192ZXJzaW9uLmggYi9zcmMvaXNw Y192ZXJzaW9uLmgKLWluZGV4IGQ3ODEzNDdmZC4uNDM0YjJkNjc4IDEwMDY0NAotLS0tIGEvc3Jj L2lzcGNfdmVyc2lvbi5oCi0rKysgYi9zcmMvaXNwY192ZXJzaW9uLmgKLUBAIC00NCwxMyArNDQs MTEgQEAKLSAKLSAjZGVmaW5lIElTUENfTExWTV9WRVJTSU9OIChMTFZNX1ZFUlNJT05fTUFKT1Ig KiAxMDAwMCArIExMVk1fVkVSU0lPTl9NSU5PUiAqIDEwMCkKLSAKLS0jZGVmaW5lIElTUENfTExW TV84XzAgODAwMDAKLS0jZGVmaW5lIElTUENfTExWTV85XzAgOTAwMDAKLSAjZGVmaW5lIElTUENf TExWTV8xMF8wIDEwMDAwMAotICNkZWZpbmUgSVNQQ19MTFZNXzExXzAgMTEwMDAwCi0gI2RlZmlu ZSBJU1BDX0xMVk1fMTJfMCAxMjAwMDAKLSAKLS0jZGVmaW5lIE9MREVTVF9TVVBQT1JURURfTExW TSBJU1BDX0xMVk1fOF8wCi0rI2RlZmluZSBPTERFU1RfU1VQUE9SVEVEX0xMVk0gSVNQQ19MTFZN XzEwXzAKLSAjZGVmaW5lIExBVEVTVF9TVVBQT1JURURfTExWTSBJU1BDX0xMVk1fMTJfMAotIAot ICNpZmRlZiBfX2lzcGNfX3hzdHIKLWRpZmYgLS1naXQgYS9zcmMvbWFpbi5jcHAgYi9zcmMvbWFp bi5jcHAKLWluZGV4IDhmNjQzMzBjYy4uNWM5MjBlYWJjIDEwMDY0NAotLS0tIGEvc3JjL21haW4u Y3BwCi0rKysgYi9zcmMvbWFpbi5jcHAKLUBAIC01NSw5ICs1NSw3IEBACi0gI2luY2x1ZGUgPGxs dm0vU3VwcG9ydC9TaWduYWxzLmg+Ci0gI2luY2x1ZGUgPGxsdm0vU3VwcG9ydC9UYXJnZXRSZWdp c3RyeS5oPgotICNpbmNsdWRlIDxsbHZtL1N1cHBvcnQvVGFyZ2V0U2VsZWN0Lmg+Ci0tI2lmIElT UENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gI2luY2x1ZGUgPGxsdm0vU3VwcG9y dC9Ub29sT3V0cHV0RmlsZS5oPgotLSNlbmRpZgotIAotICNpZmRlZiBJU1BDX0hPU1RfSVNfV0lO RE9XUwotICNkZWZpbmUgc3RyY2FzZWNtcCBzdHJpY21wCi1AQCAtMTgxLDExICsxNzksOSBAQCBz dGF0aWMgdm9pZCBsUHJpbnRWZXJzaW9uKCkgewotICAgICBzbnByaW50Zih0YXJnZXRIZWxwLCBz aXplb2YodGFyZ2V0SGVscCksICJbLS10YXJnZXQtb3M9PG9zPl1cdFx0XHRTZWxlY3QgdGFyZ2V0 IE9TLiAgPG9zPj17JXN9IiwKLSAgICAgICAgICAgICAgZy0+dGFyZ2V0X3JlZ2lzdHJ5LT5nZXRT dXBwb3J0ZWRPU2VzKCkuY19zdHIoKSk7Ci0gICAgIFByaW50V2l0aFdvcmRCcmVha3ModGFyZ2V0 SGVscCwgMjQsIFRlcm1pbmFsV2lkdGgoKSwgc3Rkb3V0KTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgcHJpbnRmKCIgICAgWy0tdGltZS10cmFjZV1cdFx0 XHRUdXJuIG9uIHRpbWUgcHJvZmlsZXIuIEdlbmVyYXRlcyBKU09OIGZpbGUgYmFzZWQgb24gb3V0 cHV0IGZpbGVuYW1lLlxuIik7Ci0gICAgIHByaW50ZigiICAgIFstLXRpbWUtdHJhY2UtZ3JhbnVs YXJpdHk9PHZhbHVlPlx0TWluaW11bSB0aW1lIGdyYW51bGFyaXR5IChpbiBtaWNyb3NlY29uZHMp IHRyYWNlZCBieSB0aW1lICIKLSAgICAgICAgICAgICJwcm9maWxlci5cbiIpOwotLSNlbmRpZgot ICAgICBwcmludGYoIiAgICBbLS12ZXJzaW9uXVx0XHRcdFx0UHJpbnQgaXNwYyB2ZXJzaW9uXG4i KTsKLSAjaWZkZWYgSVNQQ19HRU5YX0VOQUJMRUQKLSAgICAgcHJpbnRmKCIgICAgWy0tdmMtb3B0 aW9ucz08XCItb3B0aW9uMSAtb3B0aW9uMi4uLlwiPl1cdFx0XHRcdFBhc3MgYWRkaXRpb25hbCBv cHRpb25zIHRvIFZlY3RvciBDb21waWxlciBiYWNrZW5kXG4iKTsKLUBAIC00NjIsNyArNDU4LDYg QEAgc3RhdGljIHZvaWQgc2V0Q2FsbGluZ0NvbnYoVmVjdG9yQ2FsbFN0YXR1cyB2ZWN0b3JDYWxs LCBBcmNoIGFyY2gpIHsKLSAgICAgfQotIH0KLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0g SVNQQ19MTFZNXzEwXzAKLSBzdGF0aWMgdm9pZCB3cml0ZUNvbXBpbGVUaW1lRmlsZShjb25zdCBj aGFyICpvdXRGaWxlTmFtZSkgewotICAgICBsbHZtOjpTbWFsbFN0cmluZzwxMjg+IGpzb25GaWxl TmFtZShvdXRGaWxlTmFtZSk7Ci0gICAgIGpzb25GaWxlTmFtZS5hcHBlbmQoIi5qc29uIik7Ci1A QCAtNDc5LDcgKzQ3NCw2IEBAIHN0YXRpYyB2b2lkIHdyaXRlQ29tcGlsZVRpbWVGaWxlKGNvbnN0 IGNoYXIgKm91dEZpbGVOYW1lKSB7Ci0gICAgIG9mLT5rZWVwKCk7Ci0gICAgIHJldHVybjsKLSB9 Ci0tI2VuZGlmCi0gCi0gc3RhdGljIHN0ZDo6c2V0PGludD4gUGFyc2luZ1BoYXNlcyhjaGFyICpz dGFnZXMsIEFyZ0Vycm9ycyAmZXJyb3JIYW5kbGVyKSB7Ci0gICAgIGNvbnN0ZXhwciBpbnQgcGFy c2luZ19saW1pdCA9IDEwMDsKLUBAIC03OTEsMTIgKzc4NSwxMCBAQCBpbnQgbWFpbihpbnQgQXJn YywgY2hhciAqQXJndltdKSB7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfSBlbHNlIGlmICgh c3RybmNtcChhcmd2W2ldLCAiLS1mb3JjZS1hbGlnbm1lbnQ9IiwgMTgpKSB7Ci0gICAgICAgICAg ICAgZy0+Zm9yY2VBbGlnbm1lbnQgPSBhdG9pKGFyZ3ZbaV0gKyAxOCk7Ci0tI2lmIElTUENfTExW TV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAo YXJndltpXSwgIi0tdGltZS10cmFjZSIpKSB7Ci0gICAgICAgICAgICAgZy0+ZW5hYmxlVGltZVRy YWNlID0gdHJ1ZTsKLSAgICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jbXAoYXJndltpXSwgIi0tdGlt ZS10cmFjZS1ncmFudWxhcml0eT0iLCAyNSkpIHsKLSAgICAgICAgICAgICBnLT50aW1lVHJhY2VH cmFudWxhcml0eSA9IGF0b2koYXJndltpXSArIDI1KTsKLS0jZW5kaWYKLSAgICAgICAgIH0gZWxz ZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS13b2ZmIikgfHwgIXN0cmNtcChhcmd2W2ldLCAiLXdv ZmYiKSkgewotICAgICAgICAgICAgIGctPmRpc2FibGVXYXJuaW5ncyA9IHRydWU7Ci0gICAgICAg ICAgICAgZy0+ZW1pdFBlcmZXYXJuaW5ncyA9IGZhbHNlOwotQEAgLTEwNTksNyArMTA1MSw2IEBA IGludCBtYWluKGludCBBcmdjLCBjaGFyICpBcmd2W10pIHsKLSAKLSAgICAgLy8gVGhpcyBuZWVk cyB0byBoYXBwZW4gYWZ0ZXIgdGhlIFRhcmdldE9TIGlzIGRlY2lkZWQuCi0gICAgIHNldENhbGxp bmdDb252KHZlY3RvckNhbGwsIGFyY2gpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BD X0xMVk1fMTBfMAotICAgICBpZiAoZy0+ZW5hYmxlVGltZVRyYWNlKSB7Ci0gICAgICAgICBsbHZt Ojp0aW1lVHJhY2VQcm9maWxlckluaXRpYWxpemUoZy0+dGltZVRyYWNlR3JhbnVsYXJpdHksICJp c3BjIik7Ci0gICAgIH0KLUBAIC0xMDc3LDkgKzEwNjgsNSBAQCBpbnQgbWFpbihpbnQgQXJnYywg Y2hhciAqQXJndltdKSB7Ci0gICAgICAgICB9Ci0gICAgICAgICBsbHZtOjp0aW1lVHJhY2VQcm9m aWxlckNsZWFudXAoKTsKLSAgICAgfQotLSNlbHNlCi0tICAgIGludCByZXQgPSBNb2R1bGU6OkNv bXBpbGVBbmRPdXRwdXQoZmlsZSwgYXJjaCwgY3B1LCB0YXJnZXRzLCBmbGFncywgb3QsIG91dEZp bGVOYW1lLCBoZWFkZXJGaWxlTmFtZSwgZGVwc0ZpbGVOYW1lLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRlcHNUYXJnZXROYW1lLCBob3N0U3R1YkZpbGVOYW1lLCBk ZXZTdHViRmlsZU5hbWUpOwotLSNlbmRpZgotICAgICByZXR1cm4gcmV0OwotIH0KLWRpZmYgLS1n aXQgYS9zcmMvbW9kdWxlLmNwcCBiL3NyYy9tb2R1bGUuY3BwCi1pbmRleCBmZTc0NTJkZjEuLmE4 NWZlYzc3YSAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGUuY3BwCi0rKysgYi9zcmMvbW9kdWxlLmNw cAotQEAgLTE3MCw5ICsxNzAsNyBAQCBNb2R1bGU6Ok1vZHVsZShjb25zdCBjaGFyICpmbikgewot ICAgICBtb2R1bGUtPnNldERhdGFMYXlvdXQoZy0+dGFyZ2V0LT5nZXREYXRhTGF5b3V0KCktPmdl dFN0cmluZ1JlcHJlc2VudGF0aW9uKCkpOwotIAotICAgICBpZiAoZy0+Z2VuZXJhdGVEZWJ1Z2dp bmdTeW1ib2xzKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0g ICAgICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBUaW1lU2NvcGUoIkNyZWF0ZSBEZWJ1ZyBEYXRh Iik7Ci0tI2VuZGlmCi0gICAgICAgICAvLyBUbyBlbmFibGUgZGVidWcgaW5mb3JtYXRpb24gb24g V2luZG93cywgd2UgaGF2ZSB0byBsZXQgbGx2bSBrbm93LCB0aGF0Ci0gICAgICAgICAvLyBkZWJ1 ZyBpbmZvcm1hdGlvbiBzaG91bGQgYmUgZW1pdHRlZCBpbiBDb2RlVmlldyBmb3JtYXQuCi0gICAg ICAgICBpZiAoZy0+dGFyZ2V0X29zID09IFRhcmdldE9TOjp3aW5kb3dzKSB7Ci1AQCAtMjI2LDEw ICsyMjQsOCBAQCBleHRlcm4gWVlfQlVGRkVSX1NUQVRFIHl5X2NyZWF0ZV9idWZmZXIoRklMRSAq LCBpbnQpOwotIGV4dGVybiB2b2lkIHl5X2RlbGV0ZV9idWZmZXIoWVlfQlVGRkVSX1NUQVRFKTsK LSAKLSBpbnQgTW9kdWxlOjpDb21waWxlRmlsZSgpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04g Pj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgQ29tcGlsZUZpbGVU aW1lU2NvcGUoCi0gICAgICAgICAiQ29tcGlsZUZpbGUiLCBsbHZtOjpTdHJpbmdSZWYoZmlsZW5h bWUgKyAoIl8iICsgc3RkOjpzdHJpbmcoZy0+dGFyZ2V0LT5HZXRJU0FTdHJpbmcoKSkpKSk7Ci0t I2VuZGlmCi0gICAgIGV4dGVybiB2b2lkIFBhcnNlckluaXQoKTsKLSAgICAgUGFyc2VySW5pdCgp OwotIAotQEAgLTIzOCwxOCArMjM0LDE0IEBAIGludCBNb2R1bGU6OkNvbXBpbGVGaWxlKCkgewot ICAgICAvLyB2YXJpYWJsZSAnbScgdG8gYmUgaW5pdGlhbGl6ZWQgYW5kIGF2YWlsYWJsZSAod2hp Y2ggaXQgaXNuJ3QgdW50aWwKLSAgICAgLy8gdGhlIE1vZHVsZSBjb25zdHJ1Y3RvciByZXR1cm5z Li4uKQotICAgICB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0g ICAgICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBUaW1lU2NvcGUoIkRlZmluZVN0ZGxpYiIpOwot LSNlbmRpZgotICAgICAgICAgRGVmaW5lU3RkbGliKHN5bWJvbFRhYmxlLCBnLT5jdHgsIG1vZHVs ZSwgZy0+aW5jbHVkZVN0ZGxpYik7Ci0gICAgIH0KLSAKLSAgICAgYm9vbCBydW5QcmVwcm9jZXNz b3IgPSBnLT5ydW5DUFA7Ci0gCi0gICAgIGlmIChydW5QcmVwcm9jZXNzb3IpIHsKLS0jaWYgSVNQ Q19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgIGxsdm06OlRpbWVUcmFj ZVNjb3BlIFRpbWVTY29wZSgiRnJvbnRlbmQgcGFyc2VyIik7Ci0tI2VuZGlmCi0gICAgICAgICBp ZiAoIUlzU3RkaW4oZmlsZW5hbWUpKSB7Ci0gICAgICAgICAgICAgLy8gVHJ5IHRvIG9wZW4gdGhl IGZpbGUgZmlyc3QsIHNpbmNlIG90aGVyd2lzZSB3ZSBjcmFzaCBpbiB0aGUKLSAgICAgICAgICAg ICAvLyBwcmVwcm9jZXNzb3IgaWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdC4KLUBAIC0yNjgsOSAr MjYwLDcgQEAgaW50IE1vZHVsZTo6Q29tcGlsZUZpbGUoKSB7Ci0gICAgICAgICB5eXBhcnNlKCk7 Ci0gICAgICAgICB5eV9kZWxldGVfYnVmZmVyKHN0cmJ1Zik7Ci0gICAgIH0gZWxzZSB7Ci0tI2lm IElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgICAgICBsbHZtOjpUaW1l VHJhY2VTY29wZSBUaW1lU2NvcGUoIkZyb250ZW5kIHBhcnNlciIpOwotLSNlbmRpZgotICAgICAg ICAgLy8gTm8gcHJlcHJvY2Vzc29yLCBqdXN0IG9wZW4gdXAgdGhlIGZpbGUgaWYgaXQncyBub3Qg c3RkaW4uLgotICAgICAgICAgRklMRSAqZiA9IE5VTEw7Ci0gICAgICAgICBpZiAoSXNTdGRpbihm aWxlbmFtZSkpIHsKLUBAIC0yOTcsOSArMjg3LDcgQEAgaW50IE1vZHVsZTo6Q29tcGlsZUZpbGUo KSB7Ci0gCi0gICAgIGlmIChkaUJ1aWxkZXIpCi0gICAgICAgICBkaUJ1aWxkZXItPmZpbmFsaXpl KCk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06 OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29wZSgiT3B0aW1pemUiKTsKLS0jZW5kaWYKLSAgICAgaWYg KGVycm9yQ291bnQgPT0gMCkKLSAgICAgICAgIE9wdGltaXplKG1vZHVsZSwgZy0+b3B0LmxldmVs KTsKLSAKLUBAIC0xMjQzLDE1ICsxMjMxLDggQEAgYm9vbCBNb2R1bGU6OndyaXRlT2JqZWN0Rmls ZU9yQXNzZW1ibHkobGx2bTo6VGFyZ2V0TWFjaGluZSAqdGFyZ2V0TWFjaGluZSwgbGx2bToKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpvdXRGaWxl TmFtZSkgewotICAgICAvLyBGaWd1cmUgb3V0IGlmIHdlJ3JlIGdlbmVyYXRpbmcgb2JqZWN0IGZp bGUgb3IgYXNzZW1ibHkgb3V0cHV0LCBhbmQKLSAgICAgLy8gc2V0IGJpbmFyeSBvdXRwdXQgZm9y IG9iamVjdCBmaWxlcwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BDX0xMVk1fOV8wCi0t ICAgIEFzc2VydCghZy0+dGFyZ2V0LT5pc0dlblhUYXJnZXQoKSk7Ci0tICAgIGxsdm06OlRhcmdl dE1hY2hpbmU6OkNvZGVHZW5GaWxlVHlwZSBmaWxlVHlwZSA9Ci0tICAgICAgICAob3V0cHV0VHlw ZSA9PSBPYmplY3QpID8gbGx2bTo6VGFyZ2V0TWFjaGluZTo6Q0dGVF9PYmplY3RGaWxlIDogbGx2 bTo6VGFyZ2V0TWFjaGluZTo6Q0dGVF9Bc3NlbWJseUZpbGU7Ci0tICAgIGJvb2wgYmluYXJ5ID0g KGZpbGVUeXBlID09IGxsdm06OlRhcmdldE1hY2hpbmU6OkNHRlRfT2JqZWN0RmlsZSk7Ci0tI2Vs c2UgLy8gTExWTSAxMC4wKwotICAgICBsbHZtOjpDb2RlR2VuRmlsZVR5cGUgZmlsZVR5cGUgPSAo b3V0cHV0VHlwZSA9PSBPYmplY3QpID8gbGx2bTo6Q0dGVF9PYmplY3RGaWxlIDogbGx2bTo6Q0dG VF9Bc3NlbWJseUZpbGU7Ci0gICAgIGJvb2wgYmluYXJ5ID0gKGZpbGVUeXBlID09IGxsdm06OkNH RlRfT2JqZWN0RmlsZSk7Ci0tI2VuZGlmCi0gCi0gICAgIGxsdm06OnN5czo6ZnM6Ok9wZW5GbGFn cyBmbGFncyA9IGJpbmFyeSA/IGxsdm06OnN5czo6ZnM6OkZfTm9uZSA6IGxsdm06OnN5czo6ZnM6 OkZfVGV4dDsKLSAKLUBAIC0yMjE5LDExICsyMjAwLDcgQEAgdm9pZCBNb2R1bGU6OmV4ZWNQcmVw cm9jZXNzb3IoY29uc3QgY2hhciAqaW5maWxlbmFtZSwgbGx2bTo6cmF3X3N0cmluZ19vc3RyZWFt ICoKLSAgICAgaW5zdC5zZXRUYXJnZXQodGFyZ2V0KTsKLSAgICAgaW5zdC5jcmVhdGVTb3VyY2VN YW5hZ2VyKGluc3QuZ2V0RmlsZU1hbmFnZXIoKSk7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9O IDw9IElTUENfTExWTV85XzAKLS0gICAgY2xhbmc6OkZyb250ZW5kSW5wdXRGaWxlIGlucHV0Rmls ZShpbmZpbGVuYW1lLCBjbGFuZzo6SW5wdXRLaW5kOjpVbmtub3duKTsKLS0jZWxzZSAvLyBMTFZN IDEwLjArCi0gICAgIGNsYW5nOjpGcm9udGVuZElucHV0RmlsZSBpbnB1dEZpbGUoaW5maWxlbmFt ZSwgY2xhbmc6OklucHV0S2luZCgpKTsKLS0jZW5kaWYKLSAKLSAgICAgaW5zdC5Jbml0aWFsaXpl U291cmNlTWFuYWdlcihpbnB1dEZpbGUpOwotIAotQEAgLTI3MjIsOSArMjY5OSw3IEBAIGludCBN b2R1bGU6OkNvbXBpbGVBbmRPdXRwdXQoY29uc3QgY2hhciAqc3JjRmlsZSwgQXJjaCBhcmNoLCBj b25zdCBjaGFyICpjcHUsIHN0Ci0gCi0gICAgICAgICBtID0gbmV3IE1vZHVsZShzcmNGaWxlKTsK LSAgICAgICAgIGlmIChtLT5Db21waWxlRmlsZSgpID09IDApIHsKLS0jaWYgSVNQQ19MTFZNX1ZF UlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgICAgICBsbHZtOjpUaW1lVHJhY2VTY29w ZSBUaW1lU2NvcGUoIkJhY2tlbmQiKTsKLS0jZW5kaWYKLSAjaWZkZWYgSVNQQ19HRU5YX0VOQUJM RUQKLSAgICAgICAgICAgICBpZiAob3V0cHV0VHlwZSA9PSBBc20gfHwgb3V0cHV0VHlwZSA9PSBP YmplY3QpIHsKLSAgICAgICAgICAgICAgICAgaWYgKGctPnRhcmdldC0+aXNHZW5YVGFyZ2V0KCkp IHsKLUBAIC0yODU1LDkgKzI4MzAsNyBAQCBpbnQgTW9kdWxlOjpDb21waWxlQW5kT3V0cHV0KGNv bnN0IGNoYXIgKnNyY0ZpbGUsIEFyY2ggYXJjaCwgY29uc3QgY2hhciAqY3B1LCBzdAotIAotICAg ICAgICAgICAgIG0gPSBuZXcgTW9kdWxlKHNyY0ZpbGUpOwotICAgICAgICAgICAgIGludCBjb21w aWxlRmlsZUVycm9yID0gbS0+Q29tcGlsZUZpbGUoKTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04g Pj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBUaW1l U2NvcGUoIkJhY2tlbmQiKTsKLS0jZW5kaWYKLSAgICAgICAgICAgICBpZiAoY29tcGlsZUZpbGVF cnJvciA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgZGlzcGF0Y2ggbW9k dWxlLCB1bmxlc3MgYWxyZWFkeSBjcmVhdGVkOwotICAgICAgICAgICAgICAgICAvLyBpbiB0aGUg bGF0dGVyIGNhc2UsIGp1c3QgZG8gdGhlIGNoZWNraW5nCi1kaWZmIC0tZ2l0IGEvc3JjL21vZHVs ZS5oIGIvc3JjL21vZHVsZS5oCi1pbmRleCA2MWQzY2ZlYTAuLjYwMzEyNGQ1MCAxMDA2NDQKLS0t LSBhL3NyYy9tb2R1bGUuaAotKysrIGIvc3JjL21vZHVsZS5oCi1AQCAtNDMsOSArNDMsNyBAQAot IAotICNpbmNsdWRlIDxsbHZtL0lSL0RlYnVnSW5mby5oPgotIAotLSNpZiBJU1BDX0xMVk1fVkVS U0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICNpbmNsdWRlIDxsbHZtL1N1cHBvcnQvVGltZVByb2Zp bGVyLmg+Ci0tI2VuZGlmCi0gCi0gI2lmZGVmIElTUENfR0VOWF9FTkFCTEVECi0gI2luY2x1ZGUg Im9jbF9pZ2NfaW50ZXJmYWNlL2lnY19vY2xfZGV2aWNlX2N0eC5oIgotZGlmZiAtLWdpdCBhL3Ny Yy9vcHQuY3BwIGIvc3JjL29wdC5jcHAKLWluZGV4IGE2NTVhODM0NC4uNWIxYWM3YjYzIDEwMDY0 NAotLS0tIGEvc3JjL29wdC5jcHAKLSsrKyBiL3NyYy9vcHQuY3BwCi1AQCAtNjYsNiArNjYsNyBA QAotICNpbmNsdWRlIDxsbHZtL0lSL0luc3RydWN0aW9ucy5oPgotICNpbmNsdWRlIDxsbHZtL0lS L0ludHJpbnNpY0luc3QuaD4KLSAjaW5jbHVkZSA8bGx2bS9JUi9JbnRyaW5zaWNzLmg+Ci0rI2lu Y2x1ZGUgPGxsdm0vSVIvSW50cmluc2ljc1g4Ni5oPgotICNpbmNsdWRlIDxsbHZtL0lSL0xlZ2Fj eVBhc3NNYW5hZ2VyLmg+Ci0gI2luY2x1ZGUgPGxsdm0vSVIvTW9kdWxlLmg+Ci0gI2luY2x1ZGUg PGxsdm0vSVIvUGF0dGVybk1hdGNoLmg+Ci1AQCAtODUsOSArODYsNiBAQAotICNpbmNsdWRlIDxs bHZtL1RyYW5zZm9ybXMvU2NhbGFyL0luc3RTaW1wbGlmeVBhc3MuaD4KLSAjaW5jbHVkZSA8bGx2 bS9UcmFuc2Zvcm1zL1V0aWxzLmg+Ci0gI2luY2x1ZGUgPGxsdm0vVHJhbnNmb3Jtcy9VdGlscy9C YXNpY0Jsb2NrVXRpbHMuaD4KLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEw XzAKLS0jaW5jbHVkZSA8bGx2bS9JUi9JbnRyaW5zaWNzWDg2Lmg+Ci0tI2VuZGlmCi0gCi0gI2lm ZGVmIElTUENfSE9TVF9JU19MSU5VWAotICNpbmNsdWRlIDxhbGxvY2EuaD4KLUBAIC0xMDAzLDEw ICsxMDAxLDcgQEAgYm9vbCBJbnRyaW5zaWNzT3B0OjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFz aWNCbG9jayAmYmIpIHsKLSAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg ICAgYWxpZ24gPSBjYWxsSW5zdC0+Z2V0Q2FsbGVkRnVuY3Rpb24oKSA9PSBhdnhNYXNrZWRMb2Fk MzIgPyA0IDogODsKLSAgICAgICAgICAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKGNhbGxJbnN0 LT5nZXRBcmdPcGVyYW5kKDApLCAiX2xvYWQiKTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0g SVNQQ19MTFZNXzlfMAotLSAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqbG9hZElu c3QgPQotLSAgICAgICAgICAgICAgICAgICAgbmV3IGxsdm06OkxvYWRJbnN0KGNhc3RQdHIsIG5h bWUsIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgYWxpZ24sIChsbHZtOjpJbnN0cnVjdGlvbiAq KU5VTEwpOwotLSNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMF8wCi0rI2lm IElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMF8wCi0gICAgICAgICAgICAgICAgIGxs dm06Okluc3RydWN0aW9uICpsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChjYXN0UHRyLCBu YW1lLCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWdu KGFsaWduKSwgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0gI2Vsc2UKLUBAIC0xMDQzLDEz ICsxMDM4LDggQEAgYm9vbCBJbnRyaW5zaWNzT3B0OjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFz aWNCbG9jayAmYmIpIHsKLSAgICAgICAgICAgICAgICAgICAgIGFsaWduID0gZy0+dGFyZ2V0LT5n ZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKTsKLSAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg ICAgICAgICAgICAgICAgYWxpZ24gPSBjYWxsSW5zdC0+Z2V0Q2FsbGVkRnVuY3Rpb24oKSA9PSBh dnhNYXNrZWRTdG9yZTMyID8gNCA6IDg7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENf TExWTV85XzAKLS0gICAgICAgICAgICAgICAgbGx2bTo6U3RvcmVJbnN0ICpzdG9yZUluc3QgPSBu ZXcgbGx2bTo6U3RvcmVJbnN0KHJ2YWx1ZSwgY2FzdFB0ciwgKGxsdm06Okluc3RydWN0aW9uICop TlVMTCk7Ci0tICAgICAgICAgICAgICAgIHN0b3JlSW5zdC0+c2V0QWxpZ25tZW50KGFsaWduKTsK LS0jZWxzZQotICAgICAgICAgICAgICAgICBsbHZtOjpTdG9yZUluc3QgKnN0b3JlSW5zdCA9IG5l dyBsbHZtOjpTdG9yZUluc3QocnZhbHVlLCBjYXN0UHRyLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilO VUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGx2bTo6TWF5YmVBbGlnbihhbGlnbikudmFsdWVPck9uZSgpKTsKLS0j ZW5kaWYKLSAgICAgICAgICAgICAgICAgbENvcHlNZXRhZGF0YShzdG9yZUluc3QsIGNhbGxJbnN0 KTsKLSAgICAgICAgICAgICAgICAgbGx2bTo6UmVwbGFjZUluc3RXaXRoSW5zdChjYWxsSW5zdCwg c3RvcmVJbnN0KTsKLSAKLUBAIC0xMDY2LDkgKzEwNTYsNyBAQCBib29sIEludHJpbnNpY3NPcHQ6 OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJvb2wgSW50cmlu c2ljc09wdDo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAmRikgewotIAotLSNpZiBJU1BD X0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29w ZSBGdW5jU2NvcGUoIkludHJpbnNpY3NPcHQ6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7 Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZt OjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFz aWNCbG9jayhCQik7Ci1AQCAtMTIzOSw5ICsxMjI3LDcgQEAgYm9vbCBJbnN0cnVjdGlvblNpbXBs aWZ5UGFzczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9v bCBJbnN0cnVjdGlvblNpbXBsaWZ5UGFzczo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAm RikgewotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBs bHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIkluc3RydWN0aW9uU2ltcGxpZnlQYXNzOjpy dW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVk QW55ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAg ICAgICBtb2RpZmllZEFueSB8PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTI5NzQsMTYgKzI5 NjAsMTAgQEAgc3RhdGljIGJvb2wgbEltcHJvdmVNYXNrZWRTdG9yZShsbHZtOjpDYWxsSW5zdCAq Y2FsbEluc3QpIHsKLSAKLSAgICAgICAgICAgICBsdmFsdWUgPSBuZXcgbGx2bTo6Qml0Q2FzdElu c3QobHZhbHVlLCBwdHJUeXBlLCAibHZhbHVlX3RvX3B0cl90eXBlIiwgY2FsbEluc3QpOwotICAg ICAgICAgICAgIGxDb3B5TWV0YWRhdGEobHZhbHVlLCBjYWxsSW5zdCk7Ci0tI2lmIElTUENfTExW TV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgICAgICAgICBzdG9yZSA9Ci0tICAgICAg ICAgICAgICAgIG5ldyBsbHZtOjpTdG9yZUluc3QocnZhbHVlLCBsdmFsdWUsIGZhbHNlIC8qIG5v dCB2b2xhdGlsZSAqLywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLT5v cHQuZm9yY2VBbGlnbmVkTWVtb3J5ID8gZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1l bnQoKSA6IGluZm8tPmFsaWduKTsKLS0jZWxzZQotICAgICAgICAgICAgIHN0b3JlID0gbmV3IGxs dm06OlN0b3JlSW5zdCgKLSAgICAgICAgICAgICAgICAgcnZhbHVlLCBsdmFsdWUsIGZhbHNlIC8q IG5vdCB2b2xhdGlsZSAqLywKLSAgICAgICAgICAgICAgICAgbGx2bTo6TWF5YmVBbGlnbihnLT5v cHQuZm9yY2VBbGlnbmVkTWVtb3J5ID8gZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1l bnQoKSA6IGluZm8tPmFsaWduKQotICAgICAgICAgICAgICAgICAgICAgLnZhbHVlT3JPbmUoKSk7 Ci0tI2VuZGlmCi0gICAgICAgICB9Ci0gICAgICAgICBpZiAoc3RvcmUgIT0gTlVMTCkgewotICAg ICAgICAgICAgIGxDb3B5TWV0YWRhdGEoc3RvcmUsIGNhbGxJbnN0KTsKLUBAIC0zMDU5LDExICsz MDM5LDcgQEAgc3RhdGljIGJvb2wgbEltcHJvdmVNYXNrZWRMb2FkKGxsdm06OkNhbGxJbnN0ICpj YWxsSW5zdCwgbGx2bTo6QmFzaWNCbG9jazo6aXRlcmEKLSAgICAgICAgIHsKLSAgICAgICAgICAg ICBsbHZtOjpUeXBlICpwdHJUeXBlID0gbGx2bTo6UG9pbnRlclR5cGU6OmdldChjYWxsSW5zdC0+ Z2V0VHlwZSgpLCAwKTsKLSAgICAgICAgICAgICBwdHIgPSBuZXcgbGx2bTo6Qml0Q2FzdEluc3Qo cHRyLCBwdHJUeXBlLCAicHRyX2Nhc3RfZm9yX2xvYWQiLCBjYWxsSW5zdCk7Ci0tI2lmIElTUENf TExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgICAgICAgICBsb2FkID0gbmV3IGxs dm06OkxvYWRJbnN0KHB0ciwgY2FsbEluc3QtPmdldE5hbWUoKSwgZmFsc2UgLyogbm90IHZvbGF0 aWxlICovLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZy0+b3B0LmZv cmNlQWxpZ25lZE1lbW9yeSA/IGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkg OiBpbmZvLT5hbGlnbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs bHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotLSNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElT UENfTExWTV8xMF8wCi0rI2lmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMF8wCi0g ICAgICAgICAgICAgbG9hZCA9IG5ldyBsbHZtOjpMb2FkSW5zdCgKLSAgICAgICAgICAgICAgICAg cHRyLCBjYWxsSW5zdC0+Z2V0TmFtZSgpLCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sCi0gICAg ICAgICAgICAgICAgIGxsdm06Ok1heWJlQWxpZ24oZy0+b3B0LmZvcmNlQWxpZ25lZE1lbW9yeSA/ IGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkgOiBpbmZvLT5hbGlnbikKLUBA IC0zMTI5LDkgKzMxMDUsNyBAQCBib29sIEltcHJvdmVNZW1vcnlPcHNQYXNzOjpydW5PbkJhc2lj QmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAKLSBib29sIEltcHJvdmVNZW1vcnlPcHNQ YXNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExW TV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1 bmNTY29wZSgiSW1wcm92ZU1lbW9yeU9wc1Bhc3M6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUo KSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChs bHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9u QmFzaWNCbG9jayhCQik7Ci1AQCAtMzQyNCw5ICszMzk4LDcgQEAgbGx2bTo6VmFsdWUgKmxHRVBB bmRMb2FkKGxsdm06OlZhbHVlICpiYXNlUHRyLCBpbnQ2NF90IG9mZnNldCwgaW50IGFsaWduLCBs bHZtOjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHlwZSAqdHlwZSkgewotICAg ICBsbHZtOjpWYWx1ZSAqcHRyID0gbEdFUEluc3QoYmFzZVB0ciwgTExWTUludDY0KG9mZnNldCks ICJuZXdfYmFzZSIsIGluc2VydEJlZm9yZSk7Ci0gICAgIHB0ciA9IG5ldyBsbHZtOjpCaXRDYXN0 SW5zdChwdHIsIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQodHlwZSwgMCksICJwdHJfY2FzdCIsIGlu c2VydEJlZm9yZSk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0g ICAgcmV0dXJuIG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsICJnYXRoZXJfbG9hZCIsIGZhbHNlIC8q IG5vdCB2b2xhdGlsZSAqLywgYWxpZ24sIGluc2VydEJlZm9yZSk7Ci0tI2VsaWYgSVNQQ19MTFZN X1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQ Q19MTFZNXzEwXzAKLSAgICAgcmV0dXJuIG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsICJnYXRoZXJf bG9hZCIsIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgbGx2bTo6TWF5YmVBbGlnbihhbGlnbiks IGluc2VydEJlZm9yZSk7Ci0gI2Vsc2UgLy8gTExWTSAxMS4wKwotICAgICByZXR1cm4gbmV3IGxs dm06OkxvYWRJbnN0KGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihwdHItPmdldFR5 cGUoKSktPmdldFBvaW50ZXJFbGVtZW50VHlwZSgpLCBwdHIsCi1AQCAtNDEzNSw5ICs0MTA3LDcg QEAgYm9vbCBHYXRoZXJDb2FsZXNjZVBhc3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Js b2NrICZiYikgewotIAotIGJvb2wgR2F0aGVyQ29hbGVzY2VQYXNzOjpydW5PbkZ1bmN0aW9uKGxs dm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExW TV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiR2F0aGVyQ29hbGVz Y2VQYXNzOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29s IG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBG KSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTQ0 NjcsOSArNDQzNyw3IEBAIGJvb2wgUmVwbGFjZVBzZXVkb01lbW9yeU9wc1Bhc3M6OnJ1bk9uQmFz aWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJvb2wgUmVwbGFjZVBzZXVkb01l bW9yeU9wc1Bhc3M6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLSAKLS0jaWYg SVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNl U2NvcGUgRnVuY1Njb3BlKCJSZXBsYWNlUHNldWRvTWVtb3J5T3BzUGFzczo6cnVuT25GdW5jdGlv biIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNl OwotICAgICBmb3IgKGxsdm06OkJhc2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZp ZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJCKTsKLUBAIC00NTczLDkgKzQ1NDEsNyBAQCBib29s IElzQ29tcGlsZVRpbWVDb25zdGFudFBhc3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Js b2NrICZiYikgewotIAotIGJvb2wgSXNDb21waWxlVGltZUNvbnN0YW50UGFzczo6cnVuT25GdW5j dGlvbihsbHZtOjpGdW5jdGlvbiAmRikgewotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJ U1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIklzQ29t cGlsZVRpbWVDb25zdGFudFBhc3M6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2Vu ZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNp Y0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9j ayhCQik7Ci1AQCAtNTIwMSw5ICs1MTY3LDcgQEAgYm9vbCBQZWVwaG9sZVBhc3M6OnJ1bk9uQmFz aWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJvb2wgUGVlcGhvbGVQYXNzOjpy dW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJT SU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29w ZSgiUGVlcGhvbGVQYXNzOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkpOwotLSNlbmRpZgot ICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2bTo6QmFzaWNCbG9j ayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBydW5PbkJhc2ljQmxvY2soQkIp OwotQEAgLTUyOTksOSArNTI2Myw3IEBAIGJvb2wgUmVwbGFjZVN0ZGxpYlNoaWZ0UGFzczo6cnVu T25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBSZXBsYWNlU3Rk bGliU2hpZnRQYXNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lm IElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFj ZVNjb3BlIEZ1bmNTY29wZSgiUmVwbGFjZVN0ZGxpYlNoaWZ0UGFzczo6cnVuT25GdW5jdGlvbiIs IEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwot ICAgICBmb3IgKGxsdm06OkJhc2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRB bnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJCKTsKLUBAIC01Mzk5LDkgKzUzNjEsNyBAQCBsbHZtOjpJ bnN0cnVjdGlvbiAqRml4Qm9vbGVhblNlbGVjdFBhc3M6OmZpeFNlbGVjdChsbHZtOjpTZWxlY3RJ bnN0ICpzZWwsIGxsdm06OgotIH0KLSAKLSBib29sIEZpeEJvb2xlYW5TZWxlY3RQYXNzOjpydW5P bkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49 IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiRml4 Qm9vbGVhblNlbGVjdFBhc3M6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlm Ci0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAKLSAgICAgcmV0dXJuIG1vZGlmaWVk QW55OwotQEAgLTU5NjQsOSArNTkyNCw3IEBAIGJvb2wgR2VuWEdhdGhlckNvYWxlc2Npbmc6OnJ1 bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIH0KLSAKLSBib29sIEdlblhH YXRoZXJDb2FsZXNjaW5nOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0tI2lm IElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFj ZVNjb3BlIEZ1bmNTY29wZSgiR2VuWEdhdGhlckNvYWxlc2Npbmc6OnJ1bk9uRnVuY3Rpb24iLCBG LmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAg ICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55 IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtNjExMyw5ICs2MDcxLDcgQEAgYm9vbCBQcm9t b3RlVG9Qcml2YXRlTWVtb3J5UGFzczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sg JmJiKSB7Ci0gCi0gYm9vbCBQcm9tb3RlVG9Qcml2YXRlTWVtb3J5UGFzczo6cnVuT25GdW5jdGlv bihsbHZtOjpGdW5jdGlvbiAmRikgewotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BD X0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIlByb21vdGVU b1ByaXZhdGVNZW1vcnlQYXNzOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkpOwotLSNlbmRp ZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2bTo6QmFzaWNC bG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBydW5PbkJhc2ljQmxvY2so QkIpOwotQEAgLTYxODEsOSArNjEzNyw3IEBAIGJvb2wgUmVwbGFjZUxMVk1JbnRyaW5zaWNzOjpy dW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAKLSBib29sIFJlcGxhY2VM TFZNSW50cmluc2ljczo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAmRikgewotIAotLSNp ZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJh Y2VTY29wZSBGdW5jU2NvcGUoIlJlcGxhY2VMTFZNSW50cmluc2ljczo6cnVuT25GdW5jdGlvbiIs IEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwot ICAgICBmb3IgKGxsdm06OkJhc2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRB bnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJCKTsKLUBAIC02Mjc4LDkgKzYyMzIsNyBAQCBib29sIFJl cGxhY2VVbnN1cHBvcnRlZEluc3RzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAm YmIpIHsKLSAKLSBib29sIFJlcGxhY2VVbnN1cHBvcnRlZEluc3RzOjpydW5PbkZ1bmN0aW9uKGxs dm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExW TV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiUmVwbGFjZVVuc3Vw cG9ydGVkSW5zdHM6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAg IGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZC QiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1A QCAtNjM2OSw5ICs2MzIxLDcgQEAgYm9vbCBDaGVja1Vuc3VwcG9ydGVkSW5zdHM6OnJ1bk9uQmFz aWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIH0KLSAKLSBib29sIENoZWNrVW5zdXBw b3J0ZWRJbnN0czo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAmRikgewotLSNpZiBJU1BD X0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29w ZSBGdW5jU2NvcGUoIkNoZWNrVW5zdXBwb3J0ZWRJbnN0czo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0 TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBm b3IgKGxsdm06OkJhc2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0g cnVuT25CYXNpY0Jsb2NrKEJCKTsKLUBAIC02NDQwLDkgKzYzOTAsNyBAQCBib29sIE1hbmdsZU9w ZW5DTEJ1aWx0aW5zOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSB9 Ci0gCi0gYm9vbCBNYW5nbGVPcGVuQ0xCdWlsdGluczo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5j dGlvbiAmRikgewotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAg ICBsbHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIk1hbmdsZU9wZW5DTEJ1aWx0aW5zOjpy dW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVk QW55ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAg ICAgICBtb2RpZmllZEFueSB8PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTY4MjgsOSArNjc3 Niw3IEBAIGJvb2wgRml4QWRkcmVzc1NwYWNlOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9u ICZGKSB7Ci0gICAgIC8vIFRyYW5zZm9ybWF0aW9ucyBhcmUgY29ycmVjdCB3aGVuIHRoZSBmdW5j dGlvbiBpcyBub3QgaW50ZXJuYWwuCi0gICAgIC8vIFRoaXMgaXMgZHVlIHRvIGFkZHJlc3Mgc3Bh Y2UgY2FsY3VsYXRpb24gYWxnb3JpdGhtLgotICAgICAvLyBUT0RPOiBwcm9ibGVtcyBjYW4gYmUg bWV0IGluIGNhc2Ugb2YgU3RhY2sgQ2FsbHMKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQ Q19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJGaXhBZGRy ZXNzU3BhY2U6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGlm IChGLmdldExpbmthZ2UoKSA9PSBsbHZtOjpHbG9iYWxWYWx1ZTo6TGlua2FnZVR5cGVzOjpJbnRl cm5hbExpbmthZ2UpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gCi1AQCAtNjg1NCw5ICs2ODAw LDcgQEAgY2xhc3MgRGVtb3RlUEhJcyA6IHB1YmxpYyBsbHZtOjpGdW5jdGlvblBhc3MgewotIGNo YXIgRGVtb3RlUEhJczo6SUQgPSAwOwotIAotIGJvb2wgRGVtb3RlUEhJczo6cnVuT25GdW5jdGlv bihsbHZtOjpGdW5jdGlvbiAmRikgewotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xM Vk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIkRlbW90ZVBISXM6 OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGlmIChGLmlzRGVj bGFyYXRpb24oKSB8fCBza2lwRnVuY3Rpb24oRikpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0g ICAgIHN0ZDo6dmVjdG9yPGxsdm06Okluc3RydWN0aW9uICo+IFdvcmtMaXN0OwotZGlmZiAtLWdp dCBhL3NyYy90eXBlLmNwcCBiL3NyYy90eXBlLmNwcAotaW5kZXggNjg4YTRlODc0Li5mYTBjYjA0 ZGIgMTAwNjQ0Ci0tLS0gYS9zcmMvdHlwZS5jcHAKLSsrKyBiL3NyYy90eXBlLmNwcAotQEAgLTE4 MjIsMTQgKzE4MjIsMTAgQEAgbGx2bTo6RElUeXBlICpTdHJ1Y3RUeXBlOjpHZXRESVR5cGUobGx2 bTo6RElTY29wZSAqc2NvcGUpIGNvbnN0IHsKLSAgICAgbGx2bTo6RElGaWxlICpkaUZpbGUgPSBw b3MuR2V0RElGaWxlKCk7Ci0gICAgIGxsdm06OkRJTmFtZXNwYWNlICpkaVNwYWNlID0gcG9zLkdl dERJTmFtZXNwYWNlKCk7Ci0gICAgIHJldHVybiBtLT5kaUJ1aWxkZXItPmNyZWF0ZVN0cnVjdFR5 cGUoZGlTcGFjZSwgR2V0U3RyaW5nKCksIGRpRmlsZSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwb3MuZmlyc3RfbGluZSwgICAgICAgICAgLy8gTGluZSBudW1i ZXIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQtPmdl dFNpemVJbkJpdHMoKSwgLy8gU2l6ZSBpbiBiaXRzCi0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9 IElTUENfTExWTV85XzAKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsYXlvdXQtPmdldEFsaWdubWVudCgpICogOCwgLy8gQWxpZ25tZW50IGluIGJpdHMKLS0jZWxz ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLy8gTExWTSAxMC4wKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBvcy5maXJzdF9saW5lLCAgICAgICAgICAgICAgICAgICAgIC8vIExpbmUgbnVt YmVyCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0LT5n ZXRTaXplSW5CaXRzKCksICAgICAgICAgICAgLy8gU2l6ZSBpbiBiaXRzCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0LT5nZXRBbGlnbm1lbnQoKS52YWx1 ZSgpICogOCwgLy8gQWxpZ25tZW50IGluIGJpdHMKLS0jZW5kaWYKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpESU5vZGU6OkZsYWdaZXJvLCAvLyBGbGFn cwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkRJTm9k ZTo6RmxhZ1plcm8sICAgICAgICAgICAgIC8vIEZsYWdzCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTlVMTCwgZWxlbWVudHMpOwotIH0KLSAKLWRpZmYgLS1naXQg YS90ZXN0cy9saXQtdGVzdHMvMTc3MS5pc3BjIGIvdGVzdHMvbGl0LXRlc3RzLzE3NzEuaXNwYwot aW5kZXggOTgwNjRkODRkLi40ZmViNzNkZDcgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9saXQtdGVzdHMv MTc3MS5pc3BjCi0rKysgYi90ZXN0cy9saXQtdGVzdHMvMTc3MS5pc3BjCi1AQCAtNSw3ICs1LDYg QEAKLSAvLyBSVU46ICV7aXNwY30gJXMgLS10YXJnZXQ9c3NlNC1pMTZ4OCAtLWVtaXQtYXNtIC1v IC0gfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDS1NTRTRfSTE2WDgKLSAvLyBSVU46 ICV7aXNwY30gJXMgLS10YXJnZXQ9c3NlNC1pOHgxNiAtLWVtaXQtYXNtIC1vIC0gfCBGaWxlQ2hl Y2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDS1NTRTRfSThYMTYKLSAKLS0vLyBSRVFVSVJFUzogTExW TV8xMF8wKwotIC8vIFJFUVVJUkVTOiBYODZfRU5BQkxFRAotIAotIC8vIENIRUNLQVZYMl9JMzJY ODoge3tbYS16XSp4b3JbYS16XSp9fSAgJXhtbTAsICV4bW0wLCAleG1tMAotZGlmZiAtLWdpdCBh L3Rlc3RzL2xpdC10ZXN0cy8xODQ0LmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvMTg0NC5pc3BjCi1p bmRleCA3OTNhODg2NmMuLjE4OWVkZjRjMyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xpdC10ZXN0cy8x ODQ0LmlzcGMKLSsrKyBiL3Rlc3RzL2xpdC10ZXN0cy8xODQ0LmlzcGMKLUBAIC02LDkgKzYsNiBA QAotIAotIC8vIFJFUVVJUkVTOiBYODZfRU5BQkxFRAotIAotLS8vIEl0IGRvZXNuJ3Qgd29yayBm b3IgYW55dGhpbmcgZWFybGllciB0aGFuIDEwLjAsIGJ1dCBpdCB3aWxsIG5vdCBiZSBmaXhlZCwg c28gZG9uJ3QgcnVuLgotLS8vIFJFUVVJUkVTOiBMTFZNXzEwXzArCi0tCi0gZXh0ZXJuIHVuaWZv cm0gdW5zaWduZWQgaW50NjQgdmFyXzY7Ci0gZXh0ZXJuIHVuaWZvcm0gdW5zaWduZWQgaW50MTYg dmFyXzExOwotIGV4dGVybiB1bmlmb3JtIGJvb2wgYXJyXzIwMSBbMV0gWzE1XSBbMjBdOwotZGlm ZiAtLWdpdCBhL3Rlc3RzL2xpdC10ZXN0cy8xOTI2LmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvMTky Ni5pc3BjCi1pbmRleCA3MGY3Y2MzYzIuLjc5MjFjOTFhNiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xp dC10ZXN0cy8xOTI2LmlzcGMKLSsrKyBiL3Rlc3RzL2xpdC10ZXN0cy8xOTI2LmlzcGMKLUBAIC0y LDggKzIsNiBAQAotIC8vIFJVTjogY2F0ICVULzE5MjYuby5qc29uIFwKLSAvLyBSVU46ICAgfCBG aWxlQ2hlY2sgJXMKLSAKLS0vLyBSRVFVSVJFUzogTExWTV8xMF8wKwotLQotIC8vIENIRUNLOiAi dHJhY2VFdmVudHMiCi0gLy8gQ0hFQ0s6ICJkZXRhaWwiCi0gZXhwb3J0IHVuaWZvcm0gaW50IGZv byh1bmlmb3JtIGludCBhW10sIHVuaWZvcm0gaW50IGNvdW50KSB7Ci1kaWZmIC0tZ2l0IGEvdGVz dHMvbGl0LXRlc3RzL2NwdXNfeDg2LmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvY3B1c194ODYuaXNw YwotaW5kZXggNTE2ZWZkZDRjLi40ZDYwMTg2ZjYgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9saXQtdGVz dHMvY3B1c194ODYuaXNwYwotKysrIGIvdGVzdHMvbGl0LXRlc3RzL2NwdXNfeDg2LmlzcGMKLUBA IC0yNCw2ICsyNCw4IEBACi0gLy87IFJVTjogJXtpc3BjfSAlcyAtbyAldC5vIC0tbm9zdGRsaWIg LS10YXJnZXQ9c3NlMi1pMzJ4NCAtLWNwdT1pY2wKLSAvLzsgUlVOOiAle2lzcGN9ICVzIC1vICV0 Lm8gLS1ub3N0ZGxpYiAtLXRhcmdldD1zc2UyLWkzMng0IC0tY3B1PWljZWxha2Utc2VydmVyCi0g Ly87IFJVTjogJXtpc3BjfSAlcyAtbyAldC5vIC0tbm9zdGRsaWIgLS10YXJnZXQ9c3NlMi1pMzJ4 NCAtLWNwdT1pY3gKLSsvLzsgUlVOOiAle2lzcGN9ICVzIC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRh cmdldD1zc2UyLWkzMng0IC0tY3B1PXRpZ2VybGFrZQotKy8vOyBSVU46ICV7aXNwY30gJXMgLW8g JXQubyAtLW5vc3RkbGliIC0tdGFyZ2V0PXNzZTItaTMyeDQgLS1jcHU9dGdsCi0gCi0gLy8gUkVR VUlSRVM6IFg4Nl9FTkFCTEVECi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvbGl0LXRlc3RzL2NwdXNf eDg2X2xsdm0xMC5pc3BjIGIvdGVzdHMvbGl0LXRlc3RzL2NwdXNfeDg2X2xsdm0xMC5pc3BjCi1k ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGVmMDAwMDBlNS4uMDAwMDAwMDAwCi0tLS0g YS90ZXN0cy9saXQtdGVzdHMvY3B1c194ODZfbGx2bTEwLmlzcGMKLSsrKyAvZGV2L251bGwKLUBA IC0xLDExICswLDAgQEAKLS0vLyBUaGUgdGVzdCBjaGVja3MgdGhhdCBjcHUgZGVmaW5pdGlvbnMg KGluY2x1ZGluZyBhbGwgc3lub255bXMpIGFyZSBzdWNjZXNzZnVsbHkgY29uc3VtZWQgYnkgY29t cGlsZXIuCi0tCi0tLy87IFJVTjogJXtpc3BjfSAlcyAtbyAldC5vIC0tbm9zdGRsaWIgLS10YXJn ZXQ9c3NlMi1pMzJ4NCAtLWNwdT10aWdlcmxha2UKLS0vLzsgUlVOOiAle2lzcGN9ICVzIC1vICV0 Lm8gLS1ub3N0ZGxpYiAtLXRhcmdldD1zc2UyLWkzMng0IC0tY3B1PXRnbAotLQotLS8vIFJFUVVJ UkVTOiBYODZfRU5BQkxFRAotLS8vIFJFUVVJUkVTOiBMTFZNXzEwXzArCi0tCi0tdW5pZm9ybSBp bnQgaTsKLS0KLS12b2lkIGZvbygpIHt9Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvbGl0LXRlc3RzL2xp dC5jZmcgYi90ZXN0cy9saXQtdGVzdHMvbGl0LmNmZwotaW5kZXggMTcwMTY1NzlkLi4wNDVlNjk0 MzcgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9saXQtdGVzdHMvbGl0LmNmZwotKysrIGIvdGVzdHMvbGl0 LXRlc3RzL2xpdC5jZmcKLUBAIC0zMCwxMSArMzAsNiBAQCBwcmludCgiQ29uZmlnOiIpCi0gCi0g IyBMTFZNIHZlcnNpb24KLSBsbHZtX3ZlcnNpb24gPSBMb29zZVZlcnNpb24oaXNwY19sbHZtX3Zl cnNpb25fbnVtYmVyKQotLWlmIGxsdm1fdmVyc2lvbiA+PSBMb29zZVZlcnNpb24oIjEwLjAuMCIp OgotLSAgICBwcmludCgiTExWTV8xMF8wKzogWUVTIikKLS0gICAgY29uZmlnLmF2YWlsYWJsZV9m ZWF0dXJlcy5hZGQoIkxMVk1fMTBfMCsiKQotLWVsc2U6Ci0tICAgIHByaW50KCJMTFZNXzEwXzAr OiBOTyIpCi0gCi0gaWYgbGx2bV92ZXJzaW9uID49IExvb3NlVmVyc2lvbigiMTIuMC4wIik6Ci0g ICAgIHByaW50KCJMTFZNXzEyXzArOiBZRVMiKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3Bh dGNoZXMvbGx2bTEyLTAwMy5wYXRjaCBiL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDMu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0MjNhZmM5ZTNmOS4uMDAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDMucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwxNTA0ICswLDAgQEAKLUZyb20gMTg1MWQxOGIyMTNkYmFkMTY5OTM3MDc2 MTc2YjJkNTUwOTczM2M3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlZXBhayBS YWplbmRyYWt1bWFyYW4gPGRlZXBhay5yYWplbmRyYWt1bWFyYW5AaW50ZWwuY29tPgotRGF0ZTog VHVlLCAxMiBKYW4gMjAyMSAyMjoxNToxMiAtMDgwMAotU3ViamVjdDogW1BBVENIXSBmaXhlcyAj MTgyMSAtIFJlbW92aW5nIExMVk1HZXROYW1lKCkgYW5kIHN3aXRjaGluZyB0bwotIExMVk06OlR3 aW5lLgotCi0tLS0KLSBzcmMvY3R4LmNwcCAgICAgIHwgMzA0ICsrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL2N0eC5oICAgICAgICB8ICA3MiArKysr Ky0tLS0tLQotIHNyYy9leHByLmNwcCAgICAgfCAgMzYgKysrLS0tCi0gc3JjL2xsdm11dGlsLmNw cCB8ICAxNyAtLS0KLSBzcmMvbGx2bXV0aWwuaCAgIHwgICA1IC0KLSBzcmMvb3B0LmNwcCAgICAg IHwgMTAzICsrKysrKysrKy0tLS0tLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDI1NSBpbnNlcnRpb25z KCspLCAyODIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBiL3NyYy9j dHguY3BwCi1pbmRleCA0MmM0ZWEwOWQuLmRlZDUyNGI3MSAxMDA2NDQKLS0tLSBhL3NyYy9jdHgu Y3BwCi0rKysgYi9zcmMvY3R4LmNwcAotQEAgLTEwMjAsOCArMTAyMCw4IEBAIHZvaWQgRnVuY3Rp b25FbWl0Q29udGV4dDo6RW1pdENhc2VMYWJlbChpbnQgdmFsdWUsIGJvb2wgY2hlY2tNYXNrLCBT b3VyY2VQb3MgcG9zCi0gICAgIGxsdm06OkJhc2ljQmxvY2sgKmJiQ2FzZUltcGwgPSBOVUxMOwot ICAgICBpZiAoZW1pdEdlblhIYXJkd2FyZU1hc2soKSkgewotICAgICAgICAgLy8gQ3JlYXRlIGJh c2ljIGJsb2NrIHdpdGggYWN0dWFsIGNhc2UgaW1wbGVtZW50YXRpb24KLS0gICAgICAgIHN0ZDo6 c3RyaW5nIGJiTmFtZSA9IGJiQ2FzZS0+Z2V0TmFtZSgpLnN0cigpICsgIl9pbXBsIjsKLS0gICAg ICAgIGJiQ2FzZUltcGwgPSBDcmVhdGVCYXNpY0Jsb2NrKGJiTmFtZS5jX3N0cigpLCBiYkNhc2Up OwotKyAgICAgICAgbGx2bTo6VHdpbmUgYmJOYW1lID0gbGx2bTo6VHdpbmUoYmJDYXNlLT5nZXRO YW1lKCkpICsgIl9pbXBsIjsKLSsgICAgICAgIGJiQ2FzZUltcGwgPSBDcmVhdGVCYXNpY0Jsb2Nr KGJiTmFtZSwgYmJDYXNlKTsKLSAgICAgfQotICNlbmRpZgotIAotQEAgLTExODUsNyArMTE4NSw3 IEBAIGJvb2wgRnVuY3Rpb25FbWl0Q29udGV4dDo6aW5pdExhYmVsQkJsb2NrcyhBU1ROb2RlICpu b2RlLCB2b2lkICpkYXRhKSB7Ci0gICAgIGlmIChjdHgtPmxhYmVsTWFwLmZpbmQobHMtPm5hbWUp ICE9IGN0eC0+bGFiZWxNYXAuZW5kKCkpCi0gICAgICAgICBFcnJvcihscy0+cG9zLCAiTXVsdGlw bGUgbGFiZWxzIG5hbWVkIFwiJXNcIiBpbiBmdW5jdGlvbi4iLCBscy0+bmFtZS5jX3N0cigpKTsK LSAgICAgZWxzZSB7Ci0tICAgICAgICBsbHZtOjpCYXNpY0Jsb2NrICpiYiA9IGN0eC0+Q3JlYXRl QmFzaWNCbG9jayhscy0+bmFtZS5jX3N0cigpKTsKLSsgICAgICAgIGxsdm06OkJhc2ljQmxvY2sg KmJiID0gY3R4LT5DcmVhdGVCYXNpY0Jsb2NrKGxzLT5uYW1lKTsKLSAgICAgICAgIGN0eC0+bGFi ZWxNYXBbbHMtPm5hbWVdID0gYmI7Ci0gICAgIH0KLSAgICAgcmV0dXJuIHRydWU7Ci1AQCAtMTI5 OSw3ICsxMjk5LDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFueShsbHZt OjpWYWx1ZSAqbWFzaykgewotICAgICAvLyBXZSBjYW4gYWN0dWFsbHkgY2FsbCBlaXRoZXIgb25l LCBzaW5jZSBib3RoIGFyZSBpMzJzIGFzIGZhciBhcwotICAgICAvLyBMTFZNJ3MgdHlwZSBzeXN0 ZW0gaXMgY29uY2VybmVkLi4uCi0gICAgIGxsdm06OkZ1bmN0aW9uICpmbW0gPSBtbVswXS0+ZnVu Y3Rpb247Ci0tICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIG1hc2ssIExMVk1HZXROYW1l KG1hc2ssICJfYW55IikpOwotKyAgICByZXR1cm4gQ2FsbEluc3QoZm1tLCBOVUxMLCBtYXNrLCBs bHZtOjpUd2luZShtYXNrLT5nZXROYW1lKCkpICsgIl9hbnkiKTsKLSB9Ci0gCi0gbGx2bTo6VmFs dWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbChsbHZtOjpWYWx1ZSAqbWFzaykgewotQEAgLTEz MTUsNyArMTMxNSw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBbGwobGx2 bTo6VmFsdWUgKm1hc2spIHsKLSAgICAgLy8gV2UgY2FuIGFjdHVhbGx5IGNhbGwgZWl0aGVyIG9u ZSwgc2luY2UgYm90aCBhcmUgaTMycyBhcyBmYXIgYXMKLSAgICAgLy8gTExWTSdzIHR5cGUgc3lz dGVtIGlzIGNvbmNlcm5lZC4uLgotICAgICBsbHZtOjpGdW5jdGlvbiAqZm1tID0gbW1bMF0tPmZ1 bmN0aW9uOwotLSAgICByZXR1cm4gQ2FsbEluc3QoZm1tLCBOVUxMLCBtYXNrLCBMTFZNR2V0TmFt ZShtYXNrLCAiX2FsbCIpKTsKLSsgICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwgbWFzaywg bGx2bTo6VHdpbmUobWFzay0+Z2V0TmFtZSgpKSArICJfYWxsIik7Ci0gfQotIAotIGxsdm06OlZh bHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpOb25lKGxsdm06OlZhbHVlICptYXNrKSB7Ci1AQCAt MTMzMSw3ICsxMzMxLDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Ok5vbmUo bGx2bTo6VmFsdWUgKm1hc2spIHsKLSAgICAgLy8gV2UgY2FuIGFjdHVhbGx5IGNhbGwgZWl0aGVy IG9uZSwgc2luY2UgYm90aCBhcmUgaTMycyBhcyBmYXIgYXMKLSAgICAgLy8gTExWTSdzIHR5cGUg c3lzdGVtIGlzIGNvbmNlcm5lZC4uLgotICAgICBsbHZtOjpGdW5jdGlvbiAqZm1tID0gbW1bMF0t PmZ1bmN0aW9uOwotLSAgICByZXR1cm4gQ2FsbEluc3QoZm1tLCBOVUxMLCBtYXNrLCBMTFZNR2V0 TmFtZShtYXNrLCAiX25vbmUiKSk7Ci0rICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIG1h c2ssIGxsdm06OlR3aW5lKG1hc2stPmdldE5hbWUoKSkgKyAiX25vbmUiKTsKLSB9Ci0gCi0gbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkxhbmVNYXNrKGxsdm06OlZhbHVlICp2KSB7 Ci1AQCAtMTM0OSw3ICsxMzQ5LDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6 OkxhbmVNYXNrKGxsdm06OlZhbHVlICp2KSB7Ci0gICAgIC8vIFdlIGNhbiBhY3R1YWxseSBjYWxs IGVpdGhlciBvbmUsIHNpbmNlIGJvdGggYXJlIGkzMnMgYXMgZmFyIGFzCi0gICAgIC8vIExMVk0n cyB0eXBlIHN5c3RlbSBpcyBjb25jZXJuZWQuLi4KLSAgICAgbGx2bTo6RnVuY3Rpb24gKmZtbSA9 IG1tWzBdLT5mdW5jdGlvbjsKLS0gICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwgdiwgTExW TUdldE5hbWUodiwgIl9tb3Ztc2siKSk7Ci0rICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEws IHYsIGxsdm06OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAiX21vdm1zayIpOwotIH0KLSAKLSBsbHZt OjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TWFza3NBbGxFcXVhbChsbHZtOjpWYWx1ZSAq djEsIGxsdm06OlZhbHVlICp2MikgewotQEAgLTEzNjQsMTEgKzEzNjQsMTIgQEAgbGx2bTo6VmFs dWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Ok1hc2tzQWxsRXF1YWwobGx2bTo6VmFsdWUgKnYxLCBs bHZtOjpWYWx1ZSAqdjIKLSAjZWxzZQotICAgICBpZiAoZy0+dGFyZ2V0LT5nZXRBcmNoKCkgPT0g QXJjaDo6d2FzbTMyKSB7Ci0gICAgICAgICBsbHZtOjpGdW5jdGlvbiAqZm1tID0gbS0+bW9kdWxl LT5nZXRGdW5jdGlvbigiX193YXNtX2NtcF9tc2tfZXEiKTsKLS0gICAgICAgIHJldHVybiBDYWxs SW5zdChmbW0sIE5VTEwsIHt2MSwgdjJ9LCBMTFZNR2V0TmFtZSgid2FzbV9jbXBfbXNrX2VxIiwg djEsIHYyKSk7Ci0rICAgICAgICByZXR1cm4gQ2FsbEluc3QoZm1tLCBOVUxMLCB7djEsIHYyfSwg KChsbHZtOjpUd2luZSgid2FzbV9jbXBfbXNrX2VxXyIpICsgdjEtPmdldE5hbWUoKSkgKyAiXyIp ICsgdjItPmdldE5hbWUoKSk7Ci0gICAgIH0KLSAgICAgbGx2bTo6VmFsdWUgKm1tMSA9IExhbmVN YXNrKHYxKTsKLSAgICAgbGx2bTo6VmFsdWUgKm1tMiA9IExhbmVNYXNrKHYyKTsKLS0gICAgcmV0 dXJuIENtcEluc3QobGx2bTo6SW5zdHJ1Y3Rpb246OklDbXAsIGxsdm06OkNtcEluc3Q6OklDTVBf RVEsIG1tMSwgbW0yLCBMTFZNR2V0TmFtZSgiZXF1YWwiLCB2MSwgdjIpKTsKLSsgICAgcmV0dXJu IENtcEluc3QobGx2bTo6SW5zdHJ1Y3Rpb246OklDbXAsIGxsdm06OkNtcEluc3Q6OklDTVBfRVEs IG1tMSwgbW0yLAotKyAgICAgICAgICAgICAgICAgICAoKGxsdm06OlR3aW5lKCJlcXVhbF8iKSAr IHYxLT5nZXROYW1lKCkpICsgIl8iKSArIHYyLT5nZXROYW1lKCkpOwotICNlbmRpZgotIH0KLSAK LUBAIC0xMzkyLDcgKzEzOTMsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6 R2V0U3RyaW5nUHRyKGNvbnN0IHN0ZDo6c3RyaW5nICZzdHIpIHsKLSAgICAgcmV0dXJuIG5ldyBs bHZtOjpCaXRDYXN0SW5zdChsc3RyUHRyLCBMTFZNVHlwZXM6OlZvaWRQb2ludGVyVHlwZSwgInN0 cl92b2lkX3B0ciIsIGJibG9jayk7Ci0gfQotIAotLWxsdm06OkJhc2ljQmxvY2sgKkZ1bmN0aW9u RW1pdENvbnRleHQ6OkNyZWF0ZUJhc2ljQmxvY2soY29uc3QgY2hhciAqbmFtZSwgbGx2bTo6QmFz aWNCbG9jayAqaW5zZXJ0QWZ0ZXIpIHsKLStsbHZtOjpCYXNpY0Jsb2NrICpGdW5jdGlvbkVtaXRD b250ZXh0OjpDcmVhdGVCYXNpY0Jsb2NrKGNvbnN0IGxsdm06OlR3aW5lICZuYW1lLCBsbHZtOjpC YXNpY0Jsb2NrICppbnNlcnRBZnRlcikgewotICAgICBsbHZtOjpCYXNpY0Jsb2NrICpuZXdCQiA9 IGxsdm06OkJhc2ljQmxvY2s6OkNyZWF0ZSgqZy0+Y3R4LCBuYW1lLCBsbHZtRnVuY3Rpb24pOwot ICAgICBpZiAoaW5zZXJ0QWZ0ZXIpCi0gICAgICAgICBuZXdCQi0+bW92ZUFmdGVyKGluc2VydEFm dGVyKTsKLUBAIC0xNDE2LDE0ICsxNDE3LDE1IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRD b250ZXh0OjpJMVZlY1RvQm9vbFZlYyhsbHZtOjpWYWx1ZSAqYikgewotIAotICAgICAgICAgZm9y ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBhdC0+Z2V0TnVtRWxlbWVudHMoKTsgKytpKSB7Ci0g ICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmVsdCA9IEV4dHJhY3RJbnN0KGIsIGkpOwotLSAgICAg ICAgICAgIGxsdm06OlZhbHVlICpzZXh0ID0gU3dpdGNoQm9vbFNpemUoZWx0LCBMTFZNVHlwZXM6 OkJvb2xWZWN0b3JTdG9yYWdlVHlwZSwgTExWTUdldE5hbWUoZWx0LCAiX3RvX2Jvb2x2ZWMiKSk7 Ci0rICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnNleHQgPQotKyAgICAgICAgICAgICAgICBTd2l0 Y2hCb29sU2l6ZShlbHQsIExMVk1UeXBlczo6Qm9vbFZlY3RvclN0b3JhZ2VUeXBlLCBsbHZtOjpU d2luZShlbHQtPmdldE5hbWUoKSkgKyAiX3RvX2Jvb2x2ZWMiKTsKLSAgICAgICAgICAgICByZXQg PSBJbnNlcnRJbnN0KHJldCwgc2V4dCwgaSk7Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm4g cmV0OwotICAgICB9IGVsc2UgewotICAgICAgICAgLy8gRm9yIG5vbi1hcnJheSB0eXBlcywgY29u dmVydCB0byAnTExWTVR5cGVzOjpCb29sVmVjdG9yVHlwZScgaWYKLSAgICAgICAgIC8vIG5lY2Vz c2FyeS4KLS0gICAgICAgIHJldHVybiBTd2l0Y2hCb29sU2l6ZShiLCBMTFZNVHlwZXM6OkJvb2xW ZWN0b3JUeXBlLCBMTFZNR2V0TmFtZShiLCAiX3RvX2Jvb2x2ZWMiKSk7Ci0rICAgICAgICByZXR1 cm4gU3dpdGNoQm9vbFNpemUoYiwgTExWTVR5cGVzOjpCb29sVmVjdG9yVHlwZSwgbGx2bTo6VHdp bmUoYi0+Z2V0TmFtZSgpKSArICJfdG9fYm9vbHZlYyIpOwotICAgICB9Ci0gfQotIAotQEAgLTE1 NjMsNyArMTU2NSw3IEBAIHN0YXRpYyBpbnQgbEFycmF5VmVjdG9yV2lkdGgobGx2bTo6VHlwZSAq dCkgewotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QmluYXJ5T3Bl cmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkJpbmFyeU9wcyBpbnN0LCBsbHZtOjpWYWx1ZSAqdjAs IGxsdm06OlZhbHVlICp2MSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAg ICBpZiAodjAgPT0gTlVMTCB8fCB2MSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3Vy cmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAt MTU3Myw3ICsxNTc1LDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkJpbmFy eU9wZXJhdG9yKGxsdm06Okluc3RydWN0aW9uOjpCaW5hcnlPcHMgaW4KLSAgICAgbGx2bTo6VHlw ZSAqdHlwZSA9IHYwLT5nZXRUeXBlKCk7Ci0gICAgIGludCBhcnJheVNpemUgPSBsQXJyYXlWZWN0 b3JXaWR0aCh0eXBlKTsKLSAgICAgaWYgKGFycmF5U2l6ZSA9PSAwKSB7Ci0tICAgICAgICBsbHZt OjpJbnN0cnVjdGlvbiAqYm9wID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShpbnN0LCB2 MCwgdjEsIG5hbWUgPyBuYW1lIDogIiIsIGJibG9jayk7Ci0rICAgICAgICBsbHZtOjpJbnN0cnVj dGlvbiAqYm9wID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShpbnN0LCB2MCwgdjEsIG5h bWUsIGJibG9jayk7Ci0gICAgICAgICBBZGREZWJ1Z1Bvcyhib3ApOwotICAgICAgICAgcmV0dXJu IGJvcDsKLSAgICAgfSBlbHNlIHsKLUBAIC0xNTkxLDcgKzE1OTMsNyBAQCBsbHZtOjpWYWx1ZSAq RnVuY3Rpb25FbWl0Q29udGV4dDo6QmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkJp bmFyeU9wcyBpbgotICAgICB9Ci0gfQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250 ZXh0OjpOb3RPcGVyYXRvcihsbHZtOjpWYWx1ZSAqdiwgY29uc3QgY2hhciAqbmFtZSkgewotK2xs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpOb3RPcGVyYXRvcihsbHZtOjpWYWx1ZSAq diwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHYgPT0gTlVMTCkgewotICAg ICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAg IHJldHVybiBOVUxMOwotQEAgLTE2MDMsMTQgKzE2MDUsMTQgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0 aW9uRW1pdENvbnRleHQ6Ok5vdE9wZXJhdG9yKGxsdm06OlZhbHVlICp2LCBjb25zdCBjaGFyICpu YW1lKQotICAgICBsbHZtOjpUeXBlICp0eXBlID0gdi0+Z2V0VHlwZSgpOwotICAgICBpbnQgYXJy YXlTaXplID0gbEFycmF5VmVjdG9yV2lkdGgodHlwZSk7Ci0gICAgIGlmIChhcnJheVNpemUgPT0g MCkgewotLSAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmJpbnN0ID0gbGx2bTo6QmluYXJ5T3Bl cmF0b3I6OkNyZWF0ZU5vdCh2LCBuYW1lID8gbmFtZSA6ICJub3QiLCBiYmxvY2spOwotKyAgICAg ICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmJpbnN0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0 ZU5vdCh2LCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICJub3QiIDogbmFtZSwgYmJsb2NrKTsK LSAgICAgICAgIEFkZERlYnVnUG9zKGJpbnN0KTsKLSAgICAgICAgIHJldHVybiBiaW5zdDsKLSAg ICAgfSBlbHNlIHsKLSAgICAgICAgIGxsdm06OlZhbHVlICpyZXQgPSBsbHZtOjpVbmRlZlZhbHVl OjpnZXQodHlwZSk7Ci0gICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytp KSB7Ci0gICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmEgPSBFeHRyYWN0SW5zdCh2LCBpKTsKLS0g ICAgICAgICAgICBsbHZtOjpWYWx1ZSAqb3AgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRl Tm90KGEsIG5hbWUgPyBuYW1lIDogIm5vdCIsIGJibG9jayk7Ci0rICAgICAgICAgICAgbGx2bTo6 VmFsdWUgKm9wID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZU5vdChhLCBuYW1lLmlzVHJp dmlhbGx5RW1wdHkoKSA/ICJub3QiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgICAgICAgICBBZGRE ZWJ1Z1BvcyhvcCk7Ci0gICAgICAgICAgICAgcmV0ID0gSW5zZXJ0SW5zdChyZXQsIG9wLCBpKTsK LSAgICAgICAgIH0KLUBAIC0xNjM4LDcgKzE2NDAsNyBAQCBzdGF0aWMgbGx2bTo6VHlwZSAqbEdl dE1hdGNoaW5nQm9vbFZlY3RvclR5cGUobGx2bTo6VHlwZSAqdHlwZSkgewotIH0KLSAKLSBsbHZt OjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Q21wSW5zdChsbHZtOjpJbnN0cnVjdGlvbjo6 T3RoZXJPcHMgaW5zdCwgbGx2bTo6Q21wSW5zdDo6UHJlZGljYXRlIHByZWQsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnYwLCBsbHZtOjpW YWx1ZSAqdjEsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqdjAsIGxsdm06OlZhbHVlICp2MSwgY29uc3Qg bGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHYwID09IE5VTEwgfHwgdjEgPT0gTlVMTCkg ewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAg ICAgICAgIHJldHVybiBOVUxMOwotQEAgLTE2NDgsNyArMTY1MCw4IEBAIGxsdm06OlZhbHVlICpG dW5jdGlvbkVtaXRDb250ZXh0OjpDbXBJbnN0KGxsdm06Okluc3RydWN0aW9uOjpPdGhlck9wcyBp bnN0LCBsbHZtCi0gICAgIGxsdm06OlR5cGUgKnR5cGUgPSB2MC0+Z2V0VHlwZSgpOwotICAgICBp bnQgYXJyYXlTaXplID0gbEFycmF5VmVjdG9yV2lkdGgodHlwZSk7Ci0gICAgIGlmIChhcnJheVNp emUgPT0gMCkgewotLSAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmNpID0gbGx2bTo6Q21wSW5z dDo6Q3JlYXRlKGluc3QsIHByZWQsIHYwLCB2MSwgbmFtZSA/IG5hbWUgOiAiY21wIiwgYmJsb2Nr KTsKLSsgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpjaSA9Ci0rICAgICAgICAgICAgbGx2bTo6 Q21wSW5zdDo6Q3JlYXRlKGluc3QsIHByZWQsIHYwLCB2MSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5 KCkgPyAiY21wIiA6IG5hbWUsIGJibG9jayk7Ci0gICAgICAgICBBZGREZWJ1Z1BvcyhjaSk7Ci0g ICAgICAgICByZXR1cm4gY2k7Ci0gICAgIH0gZWxzZSB7Ci1AQCAtMTY1NywxNCArMTY2MCwxNCBA QCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Q21wSW5zdChsbHZtOjpJbnN0cnVj dGlvbjo6T3RoZXJPcHMgaW5zdCwgbGx2bQotICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBh cnJheVNpemU7ICsraSkgewotICAgICAgICAgICAgIGxsdm06OlZhbHVlICphID0gRXh0cmFjdElu c3QodjAsIGkpOwotICAgICAgICAgICAgIGxsdm06OlZhbHVlICpiID0gRXh0cmFjdEluc3QodjEs IGkpOwotLSAgICAgICAgICAgIGxsdm06OlZhbHVlICpvcCA9IENtcEluc3QoaW5zdCwgcHJlZCwg YSwgYiwgbmFtZSk7Ci0rICAgICAgICAgICAgbGx2bTo6VmFsdWUgKm9wID0gQ21wSW5zdChpbnN0 LCBwcmVkLCBhLCBiLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICJjbXAiIDogbmFtZSk7Ci0g ICAgICAgICAgICAgcmV0ID0gSW5zZXJ0SW5zdChyZXQsIG9wLCBpKTsKLSAgICAgICAgIH0KLSAg ICAgICAgIHJldHVybiByZXQ7Ci0gICAgIH0KLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9u RW1pdENvbnRleHQ6OlNtZWFyVW5pZm9ybShsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0IGNoYXIg Km5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U21lYXJVbmlmb3Jt KGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYg KHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJv ckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0xNzA0LDIxICsxNzA3LDE5 IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpTbWVhclVuaWZvcm0obGx2bTo6 VmFsdWUgKnZhbHVlLCBjb25zdCBjaGFyICpuCi0gICAgIHJldHVybiByZXQ7Ci0gfQotIAotLWxs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCaXRDYXN0SW5zdChsbHZtOjpWYWx1ZSAq dmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1 ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Qml0Q2FzdEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBs bHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodmFs dWUgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291 bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1l ID09IE5VTEwpCi0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfYml0Y2FzdCIp OwotLQotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpCaXRDYXN0SW5z dCh2YWx1ZSwgdHlwZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmlu c3QgPSBuZXcgbGx2bTo6Qml0Q2FzdEluc3QoCi0rICAgICAgICB2YWx1ZSwgdHlwZSwgbmFtZS5p c1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfYml0 Y2FzdCIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0 dXJuIGluc3Q7Ci0gfQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpQdHJU b0ludEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlB0clRvSW50SW5zdChsbHZtOjpWYWx1ZSAqdmFs dWUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7 Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAg ICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMTcyOCwyMyArMTcyOSwxOSBAQCBsbHZtOjpWYWx1ZSAq RnVuY3Rpb25FbWl0Q29udGV4dDo6UHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgY29u c3QgY2hhciAqbgotICAgICAgICAgLy8gbm8tb3AgZm9yIHZhcnlpbmcgcG9pbnRlcnM7IHRoZXkn cmUgYWxyZWFkeSB2ZWN0b3JzIG9mIGludHMKLSAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAKLS0g ICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwg Il9wdHIyaW50Iik7Ci0gICAgIGxsdm06OlR5cGUgKnR5cGUgPSBMTFZNVHlwZXM6OlBvaW50ZXJJ bnRUeXBlOwotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpQdHJUb0lu dEluc3QodmFsdWUsIHR5cGUsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9u ICppbnN0ID0gbmV3IGxsdm06OlB0clRvSW50SW5zdCgKLSsgICAgICAgIHZhbHVlLCB0eXBlLCBu YW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsg Il9wdHIyaW50IiA6IG5hbWUsIGJibG9jayk7Ci0gICAgIEFkZERlYnVnUG9zKGluc3QpOwotICAg ICByZXR1cm4gaW5zdDsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6 OlB0clRvSW50SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29u c3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpQdHJU b0ludEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0b1R5cGUsIGNvbnN0IGxs dm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICBB c3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJu IE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUg PSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9wdHIyaW50Iik7Ci0tCi0gICAgIGxsdm06OlR5cGUgKmZy b21UeXBlID0gdmFsdWUtPmdldFR5cGUoKTsKLSAgICAgaWYgKGxsdm06OmlzYTxsbHZtOjpWZWN0 b3JUeXBlPihmcm9tVHlwZSkpIHsKLSAgICAgICAgIC8vIHZhcnlpbmcgcG9pbnRlcgotQEAgLTE3 NTIsMjcgKzE3NDksMjYgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlB0clRv SW50SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnQKLSAgICAgICAgICAgICAv LyBhbHJlYWR5IHRoZSByaWdodCB0eXBlLS1kb25lCi0gICAgICAgICAgICAgcmV0dXJuIHZhbHVl OwotICAgICAgICAgZWxzZSBpZiAoZnJvbVR5cGUtPmdldFNjYWxhclNpemVJbkJpdHMoKSA+IHRv VHlwZS0+Z2V0U2NhbGFyU2l6ZUluQml0cygpKQotLSAgICAgICAgICAgIHJldHVybiBUcnVuY0lu c3QodmFsdWUsIHRvVHlwZSwgbmFtZSk7Ci0rICAgICAgICAgICAgcmV0dXJuIFRydW5jSW5zdCh2 YWx1ZSwgdG9UeXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5pc1RyaXZp YWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfcHRyMmludCIg OiBuYW1lKTsKLSAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50 UG9zLCBmcm9tVHlwZS0+Z2V0U2NhbGFyU2l6ZUluQml0cygpIDwgdG9UeXBlLT5nZXRTY2FsYXJT aXplSW5CaXRzKCkpOwotLSAgICAgICAgICAgIHJldHVybiBaRXh0SW5zdCh2YWx1ZSwgdG9UeXBl LCBuYW1lKTsKLSsgICAgICAgICAgICByZXR1cm4gWkV4dEluc3QodmFsdWUsIHRvVHlwZSwgbmFt ZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJf cHRyMmludCIgOiBuYW1lKTsKLSAgICAgICAgIH0KLSAgICAgfQotIAotLSAgICBsbHZtOjpJbnN0 cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpQdHJUb0ludEluc3QodmFsdWUsIHRvVHlwZSwgbmFt ZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6UHRy VG9JbnRJbnN0KAotKyAgICAgICAgdmFsdWUsIHRvVHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5 KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfcHRyMmludCIgOiBuYW1lLCBi YmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQot IAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpJbnRUb1B0ckluc3QobGx2bTo6 VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0b1R5cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLSts bHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6SW50VG9QdHJJbnN0KGxsdm06OlZhbHVl ICp2YWx1ZSwgbGx2bTo6VHlwZSAqdG9UeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewot ICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3Ms IG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0t ICAgIGlmIChuYW1lID09IE5VTEwpCi0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodmFsdWUs ICJfaW50MnB0ciIpOwotLQotICAgICBsbHZtOjpUeXBlICpmcm9tVHlwZSA9IHZhbHVlLT5nZXRU eXBlKCk7Ci0gICAgIGlmIChsbHZtOjppc2E8bGx2bTo6VmVjdG9yVHlwZT4oZnJvbVR5cGUpKSB7 Ci0gICAgICAgICAvLyB2YXJ5aW5nIHBvaW50ZXIKLUBAIC0xNzgwLDk1ICsxNzc2LDg3IEBAIGxs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpJbnRUb1B0ckluc3QobGx2bTo6VmFsdWUg KnZhbHVlLCBsbHZtOjpUeXBlICp0Ci0gICAgICAgICAgICAgLy8gZG9uZQotICAgICAgICAgICAg IHJldHVybiB2YWx1ZTsKLSAgICAgICAgIGVsc2UgaWYgKGZyb21UeXBlLT5nZXRTY2FsYXJTaXpl SW5CaXRzKCkgPiB0b1R5cGUtPmdldFNjYWxhclNpemVJbkJpdHMoKSkKLS0gICAgICAgICAgICBy ZXR1cm4gVHJ1bmNJbnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUpOwotKyAgICAgICAgICAgIHJldHVy biBUcnVuY0luc3QodmFsdWUsIHRvVHlwZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkg KyAiX2ludDJwdHIiIDogbmFtZSk7Ci0gICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICBBc3Nl cnRQb3MoY3VycmVudFBvcywgZnJvbVR5cGUtPmdldFNjYWxhclNpemVJbkJpdHMoKSA8IHRvVHlw ZS0+Z2V0U2NhbGFyU2l6ZUluQml0cygpKTsKLS0gICAgICAgICAgICByZXR1cm4gWkV4dEluc3Qo dmFsdWUsIHRvVHlwZSwgbmFtZSk7Ci0rICAgICAgICAgICAgcmV0dXJuIFpFeHRJbnN0KHZhbHVl LCB0b1R5cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdl dE5hbWUoKSkgKyAiX2ludDJwdHIiIDogbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgIH0KLSAKLS0g ICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6SW50VG9QdHJJbnN0KHZhbHVl LCB0b1R5cGUsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0g bmV3IGxsdm06OkludFRvUHRySW5zdCgKLSsgICAgICAgIHZhbHVlLCB0b1R5cGUsIG5hbWUuaXNU cml2aWFsbHlFbXB0eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX2ludDJw dHIiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgIHJldHVy biBpbnN0OwotIH0KLSAKLS1sbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29udGV4dDo6 VHJ1bmNJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hh ciAqbmFtZSkgewotK2xsdm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpUcnVu Y0luc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpU d2luZSAmbmFtZSkgewotICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0 UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxM OwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpCi0tICAgICAgICBuYW1lID0gTExW TUdldE5hbWUodmFsdWUsICJfdHJ1bmMiKTsKLS0KLSAgICAgLy8gVE9ETzogd2Ugc2hvdWxkIHBy b2JhYmx5IGhhbmRsZSB0aGUgYXJyYXkgY2FzZSBhcyBpbgotICAgICAvLyBlLmcuIEJpdENhc3RJ bnN0KCksIGJ1dCB3ZSBkb24ndCBjdXJyZW50bHkgbmVlZCB0aGF0IGZ1bmN0aW9uYWxpdHkKLS0g ICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6VHJ1bmNJbnN0KHZhbHVlLCB0 eXBlLCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBs bHZtOjpUcnVuY0luc3QoCi0rICAgICAgICB2YWx1ZSwgdHlwZSwgbmFtZS5pc1RyaXZpYWxseUVt cHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfdHJ1bmMiIDogbmFtZSwg YmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgIHJldHVybiBpbnN0OwotIH0K LSAKLSBsbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Q2FzdEluc3QobGx2 bTo6SW5zdHJ1Y3Rpb246OkNhc3RPcHMgb3AsIGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlw ZSAqdHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodmFs dWUgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291 bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1l ID09IE5VTEwpCi0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfY2FzdCIpOwot LQotICAgICAvLyBUT0RPOiB3ZSBzaG91bGQgcHJvYmFibHkgaGFuZGxlIHRoZSBhcnJheSBjYXNl IGFzIGluCi0gICAgIC8vIGUuZy4gQml0Q2FzdEluc3QoKSwgYnV0IHdlIGRvbid0IGN1cnJlbnRs eSBuZWVkIHRoYXQgZnVuY3Rpb25hbGl0eQotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9 IGxsdm06OkNhc3RJbnN0OjpDcmVhdGUob3AsIHZhbHVlLCB0eXBlLCBuYW1lLCBiYmxvY2spOwot KyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IGxsdm06OkNhc3RJbnN0OjpDcmVhdGUoCi0r ICAgICAgICBvcCwgdmFsdWUsIHR5cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gbGx2bTo6 VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX2Nhc3QiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAg QWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgIHJldHVybiBpbnN0OwotIH0KLSAKLS1sbHZtOjpJbnN0 cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29udGV4dDo6RlBDYXN0SW5zdChsbHZtOjpWYWx1ZSAqdmFs dWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpJbnN0cnVj dGlvbiAqRnVuY3Rpb25FbWl0Q29udGV4dDo6RlBDYXN0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUs IGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2 YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JD b3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYgKG5h bWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9jYXN0Iik7 Ci0tCi0gICAgIC8vIFRPRE86IHdlIHNob3VsZCBwcm9iYWJseSBoYW5kbGUgdGhlIGFycmF5IGNh c2UgYXMgaW4KLSAgICAgLy8gZS5nLiBCaXRDYXN0SW5zdCgpLCBidXQgd2UgZG9uJ3QgY3VycmVu dGx5IG5lZWQgdGhhdCBmdW5jdGlvbmFsaXR5Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0 ID0gbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZUZQQ2FzdCh2YWx1ZSwgdHlwZSwgbmFtZSwgYmJsb2Nr KTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBsbHZtOjpDYXN0SW5zdDo6Q3JlYXRl RlBDYXN0KAotKyAgICAgICAgdmFsdWUsIHR5cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8g bGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX2Nhc3QiIDogbmFtZSwgYmJsb2NrKTsK LSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgIHJldHVybiBpbnN0OwotIH0KLSAKLS1sbHZt OjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U0V4dEluc3QobGx2bTo6VmFsdWUg KnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6SW5z dHJ1Y3Rpb24gKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlNFeHRJbnN0KGxsdm06OlZhbHVlICp2YWx1 ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYg KHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJv ckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgICBpZiAo bmFtZSA9PSBOVUxMKQotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHZhbHVlLCAiX3NleHQi KTsKLS0KLSAgICAgLy8gVE9ETzogd2Ugc2hvdWxkIHByb2JhYmx5IGhhbmRsZSB0aGUgYXJyYXkg Y2FzZSBhcyBpbgotICAgICAvLyBlLmcuIEJpdENhc3RJbnN0KCksIGJ1dCB3ZSBkb24ndCBjdXJy ZW50bHkgbmVlZCB0aGF0IGZ1bmN0aW9uYWxpdHkKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmlu c3QgPSBuZXcgbGx2bTo6U0V4dEluc3QodmFsdWUsIHR5cGUsIG5hbWUsIGJibG9jayk7Ci0rICAg IGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06OlNFeHRJbnN0KAotKyAgICAgICAg dmFsdWUsIHR5cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gbGx2bTo6VHdpbmUodmFsdWUt PmdldE5hbWUoKSkgKyAiX3NleHQiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3Mo aW5zdCk7Ci0gICAgIHJldHVybiBpbnN0OwotIH0KLSAKLS1sbHZtOjpJbnN0cnVjdGlvbiAqRnVu Y3Rpb25FbWl0Q29udGV4dDo6WkV4dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBl ICp0eXBlLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6SW5zdHJ1Y3Rpb24gKkZ1bmN0aW9u RW1pdENvbnRleHQ6OlpFeHRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlw ZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsK LSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAg ICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKQotLSAg ICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHZhbHVlLCAiX3pleHQiKTsKLS0KLSAgICAgLy8gVE9E Tzogd2Ugc2hvdWxkIHByb2JhYmx5IGhhbmRsZSB0aGUgYXJyYXkgY2FzZSBhcyBpbgotICAgICAv LyBlLmcuIEJpdENhc3RJbnN0KCksIGJ1dCB3ZSBkb24ndCBjdXJyZW50bHkgbmVlZCB0aGF0IGZ1 bmN0aW9uYWxpdHkKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6WkV4 dEluc3QodmFsdWUsIHR5cGUsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9u ICppbnN0ID0gbmV3IGxsdm06OlpFeHRJbnN0KAotKyAgICAgICAgdmFsdWUsIHR5cGUsIG5hbWUu aXNUcml2aWFsbHlFbXB0eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX3pl eHQiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgIHJldHVy biBpbnN0OwotIH0KLUBAIC0xOTEzLDE0ICsxOTAxLDE1IEBAIGxsdm06OlZhbHVlICpGdW5jdGlv bkVtaXRDb250ZXh0OjphcHBseVZhcnlpbmdHRVAobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGxsdm06 OlZhCi0gICAgICAgICBzY2FsZSA9IFNtZWFyVW5pZm9ybShzY2FsZSk7Ci0gICAgICAgICBBc3Nl cnQoaW5kZXggIT0gTlVMTCk7Ci0gICAgICAgICAvLyBvZmZzZXQgPSBpbmRleCAqIHNjYWxlCi0t ICAgICAgICBvZmZzZXQgPSBCaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6TXVsLCBz Y2FsZSwgaW5kZXgsIExMVk1HZXROYW1lKCJtdWwiLCBzY2FsZSwgaW5kZXgpKTsKLSsgICAgICAg IG9mZnNldCA9IEJpbmFyeU9wZXJhdG9yKGxsdm06Okluc3RydWN0aW9uOjpNdWwsIHNjYWxlLCBp bmRleCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobGx2bTo6VHdpbmUoIm11 bF8iKSArIHNjYWxlLT5nZXROYW1lKCkpICsgIl8iKSArIGluZGV4LT5nZXROYW1lKCkpOwotICAg ICB9Ci0gCi0gICAgIC8vIEZvciA2NC1iaXQgdGFyZ2V0cywgaWYgd2UndmUgYmVlbiBkb2luZyBv dXIgb2Zmc2V0IGNhbGN1bGF0aW9ucyBpbgotICAgICAvLyAzMiBiaXRzLCB3ZSBzdGlsbCBoYXZl IHRvIGNvbnZlcnQgdG8gYSA2NC1iaXQgdmFsdWUgYmVmb3JlIHdlCi0gICAgIC8vIGFjdHVhbGx5 IGFkZCB0aGUgb2Zmc2V0IHRvIHRoZSBwb2ludGVyLgotICAgICBpZiAoZy0+dGFyZ2V0LT5pczMy Qml0KCkgPT0gZmFsc2UgJiYgZy0+b3B0LmZvcmNlMzJCaXRBZGRyZXNzaW5nID09IHRydWUpCi0t ICAgICAgICBvZmZzZXQgPSBTRXh0SW5zdChvZmZzZXQsIExMVk1UeXBlczo6SW50NjRWZWN0b3JU eXBlLCBMTFZNR2V0TmFtZShvZmZzZXQsICJfdG9fNjQiKSk7Ci0rICAgICAgICBvZmZzZXQgPSBT RXh0SW5zdChvZmZzZXQsIExMVk1UeXBlczo6SW50NjRWZWN0b3JUeXBlLCBsbHZtOjpUd2luZShv ZmZzZXQtPmdldE5hbWUoKSkgKyAiX3RvXzY0Iik7Ci0gCi0gICAgIC8vIFNtZWFyIG91dCB0aGUg cG9pbnRlciB0byBiZSB2YXJ5aW5nOyBlaXRoZXIgdGhlIGJhc2UgcG9pbnRlciBvciB0aGUKLSAg ICAgLy8gaW5kZXggbXVzdCBiZSB2YXJ5aW5nIGZvciB0aGlzIG1ldGhvZCB0byBiZSBjYWxsZWQu Ci1AQCAtMTkyOSw3ICsxOTE4LDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6 OmFwcGx5VmFyeWluZ0dFUChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6VmEKLSAgICAgbGx2 bTo6VmFsdWUgKnZhcnlpbmdQdHIgPSBiYXNlSXNVbmlmb3JtID8gU21lYXJVbmlmb3JtKGJhc2VQ dHIpIDogYmFzZVB0cjsKLSAKLSAgICAgLy8gbmV3UHRyID0gcHRyICsgb2Zmc2V0Ci0tICAgIHJl dHVybiBCaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCB2YXJ5aW5nUHRyLCBv ZmZzZXQsIExMVk1HZXROYW1lKGJhc2VQdHIsICJfb2Zmc2V0IikpOwotKyAgICByZXR1cm4gQmlu YXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkFkZCwgdmFyeWluZ1B0ciwgb2Zmc2V0LCBs bHZtOjpUd2luZShiYXNlUHRyLT5nZXROYW1lKCkpICsgIl9vZmZzZXQiKTsKLSB9Ci0gCi0gdm9p ZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpNYXRjaEludGVnZXJUeXBlcyhsbHZtOjpWYWx1ZSAqKnYw LCBsbHZtOjpWYWx1ZSAqKnYxKSB7Ci1AQCAtMjAwNiwxMyArMTk5NSwxMyBAQCBsbHZtOjpWYWx1 ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TWFrZVNsaWNlUG9pbnRlcihsbHZtOjpWYWx1ZSAqcHRy LCBsbHZtOjpWYWx1ZQotICAgICBsbHZtOjpTdHJ1Y3RUeXBlICpzdCA9IGxsdm06OlN0cnVjdFR5 cGU6OmdldCgqZy0+Y3R4LCBlbHRUeXBlcyk7Ci0gCi0gICAgIGxsdm06OlZhbHVlICpyZXQgPSBs bHZtOjpVbmRlZlZhbHVlOjpnZXQoc3QpOwotLSAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgcHRy LCAwLCBMTFZNR2V0TmFtZShyZXQsICJfc2xpY2VfcHRyIikpOwotLSAgICByZXQgPSBJbnNlcnRJ bnN0KHJldCwgb2Zmc2V0LCAxLCBMTFZNR2V0TmFtZShyZXQsICJfc2xpY2Vfb2Zmc2V0IikpOwot KyAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgcHRyLCAwLCBsbHZtOjpUd2luZShyZXQtPmdldE5h bWUoKSkgKyAiX3NsaWNlX3B0ciIpOwotKyAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgb2Zmc2V0 LCAxLCBsbHZtOjpUd2luZShyZXQtPmdldE5hbWUoKSkgKyAiX3NsaWNlX29mZnNldCIpOwotICAg ICByZXR1cm4gcmV0OwotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6 R2V0RWxlbWVudFB0ckluc3QobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGxsdm06OlZhbHVlICppbmRl eCwgY29uc3QgVHlwZSAqcHRyUmVmVHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkgewotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2lu ZSAmbmFtZSkgewotICAgICBpZiAoYmFzZVB0ciA9PSBOVUxMIHx8IGluZGV4ID09IE5VTEwpIHsK LSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAg ICAgICByZXR1cm4gTlVMTDsKLUBAIC0yMDY1LDggKzIwNTQsOCBAQCBsbHZtOjpWYWx1ZSAqRnVu Y3Rpb25FbWl0Q29udGV4dDo6R2V0RWxlbWVudFB0ckluc3QobGx2bTo6VmFsdWUgKmJhc2VQdHIs IGxsdm06OgotICAgICAgICAgLy8gdW5pZm9ybSwgc28ganVzdCBlbWl0IHRoZSByZWd1bGFyIExM Vk0gR0VQIGluc3RydWN0aW9uCi0gICAgICAgICBsbHZtOjpWYWx1ZSAqaW5kWzFdID0ge2luZGV4 fTsKLSAgICAgICAgIGxsdm06OkFycmF5UmVmPGxsdm06OlZhbHVlICo+IGFycmF5UmVmKCZpbmRb MF0sICZpbmRbMV0pOwotLSAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPQotLSAgICAg ICAgICAgIGxsdm06OkdldEVsZW1lbnRQdHJJbnN0OjpDcmVhdGUoUFRZUEUoYmFzZVB0ciksIGJh c2VQdHIsIGFycmF5UmVmLCBuYW1lID8gbmFtZSA6ICJnZXAiLCBiYmxvY2spOwotKyAgICAgICAg bGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBsbHZtOjpHZXRFbGVtZW50UHRySW5zdDo6Q3JlYXRl KFBUWVBFKGJhc2VQdHIpLCBiYXNlUHRyLCBhcnJheVJlZiwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJp dmlhbGx5RW1wdHkoKSA/ICJnZXAiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgICAgIEFkZERlYnVn UG9zKGluc3QpOwotICAgICAgICAgcmV0dXJuIGluc3Q7Ci0gICAgIH0gZWxzZQotQEAgLTIwNzQs NyArMjA2Myw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRFbGVtZW50 UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6Ci0gfQotIAotIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFz ZVB0ciwgbGx2bTo6VmFsdWUgKmluZGV4MCwgbGx2bTo6VmFsdWUgKmluZGV4MSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHlwZSAq cHRyUmVmVHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUeXBlICpwdHJSZWZUeXBlLCBjb25z dCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAoYmFzZVB0ciA9PSBOVUxMIHx8IGluZGV4 MCA9PSBOVUxMIHx8IGluZGV4MSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVu dFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMjEx NCw4ICsyMTAzLDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEVsZW1l bnRQdHJJbnN0KGxsdm06OlZhbHVlICpiYXNlUHRyLCBsbHZtOjoKLSAgICAgICAgIC8vIHVuaWZv cm0sIHNvIGp1c3QgZW1pdCB0aGUgcmVndWxhciBMTFZNIEdFUCBpbnN0cnVjdGlvbgotICAgICAg ICAgbGx2bTo6VmFsdWUgKmluZGljZXNbMl0gPSB7aW5kZXgwLCBpbmRleDF9OwotICAgICAgICAg bGx2bTo6QXJyYXlSZWY8bGx2bTo6VmFsdWUgKj4gYXJyYXlSZWYoJmluZGljZXNbMF0sICZpbmRp Y2VzWzJdKTsKLS0gICAgICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0KLS0gICAgICAgICAg ICBsbHZtOjpHZXRFbGVtZW50UHRySW5zdDo6Q3JlYXRlKFBUWVBFKGJhc2VQdHIpLCBiYXNlUHRy LCBhcnJheVJlZiwgbmFtZSA/IG5hbWUgOiAiZ2VwIiwgYmJsb2NrKTsKLSsgICAgICAgIGxsdm06 Okluc3RydWN0aW9uICppbnN0ID0gbGx2bTo6R2V0RWxlbWVudFB0ckluc3Q6OkNyZWF0ZShQVFlQ RShiYXNlUHRyKSwgYmFzZVB0ciwgYXJyYXlSZWYsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxs eUVtcHR5KCkgPyAiZ2VwIiA6IG5hbWUsIGJibG9jayk7Ci0gICAgICAgICBBZGREZWJ1Z1Bvcyhp bnN0KTsKLSAgICAgICAgIHJldHVybiBpbnN0OwotICAgICB9IGVsc2UgewotQEAgLTIxMzgsNyAr MjEyNyw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRFbGVtZW50UHRy SW5zdChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6Ci0gfQotIAotIGxsdm06OlZhbHVlICpG dW5jdGlvbkVtaXRDb250ZXh0OjpBZGRFbGVtZW50T2Zmc2V0KGxsdm06OlZhbHVlICpmdWxsQmFz ZVB0ciwgaW50IGVsZW1lbnROdW0sIGNvbnN0IFR5cGUgKnB0clJlZlR5cGUsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFt ZSwgY29uc3QgUG9pbnRlclR5cGUgKipyZXN1bHRQdHJUeXBlKSB7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5h bWUsIGNvbnN0IFBvaW50ZXJUeXBlICoqcmVzdWx0UHRyVHlwZSkgewotICAgICBpZiAocmVzdWx0 UHRyVHlwZSAhPSBOVUxMKQotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIHB0clJlZlR5 cGUgIT0gTlVMTCk7Ci0gCi1AQCAtMjE5NSw4ICsyMTg0LDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0 aW9uRW1pdENvbnRleHQ6OkFkZEVsZW1lbnRPZmZzZXQobGx2bTo6VmFsdWUgKmZ1bGxCYXNlUHRy LCBpbnQKLSAgICAgICAgIC8vIElmIHRoZSBwb2ludGVyIGlzIHVuaWZvcm0sIHdlIGNhbiB1c2Ug dGhlIHJlZ3VsYXIgTExWTSBHRVAuCi0gICAgICAgICBsbHZtOjpWYWx1ZSAqb2Zmc2V0c1syXSA9 IHtMTFZNSW50MzIoMCksIExMVk1JbnQzMihlbGVtZW50TnVtKX07Ci0gICAgICAgICBsbHZtOjpB cnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBhcnJheVJlZigmb2Zmc2V0c1swXSwgJm9mZnNldHNbMl0p OwotLSAgICAgICAgcmVzdWx0UHRyID0KLS0gICAgICAgICAgICBsbHZtOjpHZXRFbGVtZW50UHRy SW5zdDo6Q3JlYXRlKFBUWVBFKGJhc2VQdHIpLCBiYXNlUHRyLCBhcnJheVJlZiwgbmFtZSA/IG5h bWUgOiAic3RydWN0X29mZnNldCIsIGJibG9jayk7Ci0rICAgICAgICByZXN1bHRQdHIgPSBsbHZt OjpHZXRFbGVtZW50UHRySW5zdDo6Q3JlYXRlKFBUWVBFKGJhc2VQdHIpLCBiYXNlUHRyLCBhcnJh eVJlZiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAic3RydWN0X29mZnNldCIgOiBuYW1lLCBiYmxv Y2spOwotICAgICB9IGVsc2UgewotICAgICAgICAgLy8gT3RoZXJ3aXNlIGRvIHRoZSBtYXRoIHRv IGZpbmQgdGhlIG9mZnNldCBhbmQgYWRkIGl0IHRvIHRoZSBnaXZlbgotICAgICAgICAgLy8gdmFy eWluZyBwb2ludGVycwotQEAgLTIyMzcsNyArMjIyNiw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlv bkVtaXRDb250ZXh0OjpBZGRFbGVtZW50T2Zmc2V0KGxsdm06OlZhbHVlICpmdWxsQmFzZVB0ciwg aW50Ci0gICAgICAgICByZXR1cm4gcmVzdWx0UHRyOwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVu Y3Rpb25FbWl0Q29udGV4dDo6U3dpdGNoQm9vbFNpemUobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZt OjpUeXBlICp0b1R5cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6U3dpdGNoQm9vbFNpemUobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpU eXBlICp0b1R5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICgodmFsdWUg PT0gTlVMTCkgfHwgKHRvVHlwZSA9PSBOVUxMKSkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJl bnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotQEAgLTIy NDgsMjAgKzIyMzcsMTggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlN3aXRj aEJvb2xTaXplKGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZQotICAgICBsbHZtOjpWYWx1 ZSAqbmV3Qm9vbCA9IHZhbHVlOwotICAgICBpZiAoZy0+dGFyZ2V0LT5nZXREYXRhTGF5b3V0KCkt PmdldFR5cGVTaXplSW5CaXRzKGZyb21UeXBlKSA+Ci0gICAgICAgICBnLT50YXJnZXQtPmdldERh dGFMYXlvdXQoKS0+Z2V0VHlwZVNpemVJbkJpdHModG9UeXBlKSkgewotLSAgICAgICAgaWYgKG5h bWUgPT0gTlVMTCkKLS0gICAgICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfc3dp dGNoQm9vbCIpOwotLSAgICAgICAgbmV3Qm9vbCA9IFRydW5jSW5zdCh2YWx1ZSwgdG9UeXBlLCBu YW1lKTsKLSsgICAgICAgIG5ld0Jvb2wgPQotKyAgICAgICAgICAgIFRydW5jSW5zdCh2YWx1ZSwg dG9UeXBlLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0 TmFtZSgpKSArICJfc3dpdGNoQm9vbCIpIDogbmFtZSk7Ci0gICAgIH0gZWxzZSBpZiAoZy0+dGFy Z2V0LT5nZXREYXRhTGF5b3V0KCktPmdldFR5cGVTaXplSW5CaXRzKGZyb21UeXBlKSA8Ci0gICAg ICAgICAgICAgICAgZy0+dGFyZ2V0LT5nZXREYXRhTGF5b3V0KCktPmdldFR5cGVTaXplSW5CaXRz KHRvVHlwZSkpIHsKLS0gICAgICAgIGlmIChuYW1lID09IE5VTEwpCi0tICAgICAgICAgICAgbmFt ZSA9IExMVk1HZXROYW1lKHZhbHVlLCAiX3N3aXRjaEJvb2wiKTsKLS0gICAgICAgIG5ld0Jvb2wg PSBTRXh0SW5zdCh2YWx1ZSwgdG9UeXBlLCBuYW1lKTsKLSsgICAgICAgIG5ld0Jvb2wgPQotKyAg ICAgICAgICAgIFNFeHRJbnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgp ID8gKGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl9zd2l0Y2hCb29sIikgOiBuYW1l KTsKLSAgICAgfQotIAotICAgICByZXR1cm4gbmV3Qm9vbDsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUg KkZ1bmN0aW9uRW1pdENvbnRleHQ6OkxvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFR5 cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqdHlwZSwgY29u c3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHB0ciA9PSBOVUxMKSB7Ci0gICAgICAg ICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0 dXJuIE5VTEw7Ci1AQCAtMjI3MCwxMyArMjI1NywxMyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25F bWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqdHlwZSwg YwotICAgICBsbHZtOjpQb2ludGVyVHlwZSAqcHQgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpQb2lu dGVyVHlwZT4ocHRyLT5nZXRUeXBlKCkpOwotICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgcHQg IT0gTlVMTCk7Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpCi0tICAgICAgICBuYW1lID0gTExW TUdldE5hbWUocHRyLCAiX2xvYWQiKTsKLS0KLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQ Q19MTFZNXzExXzAKLS0gICAgbGx2bTo6TG9hZEluc3QgKmluc3QgPSBuZXcgbGx2bTo6TG9hZElu c3QocHQtPmdldFBvaW50ZXJFbGVtZW50VHlwZSgpLCBwdHIsIG5hbWUsIGJibG9jayk7Ci0rICAg IGxsdm06OkxvYWRJbnN0ICppbnN0ID0KLSsgICAgICAgIG5ldyBsbHZtOjpMb2FkSW5zdChwdC0+ Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIHB0ciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChsbHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkg KyAiX2xvYWQiKSA6IG5hbWUsIGJibG9jayk7Ci0gI2Vsc2UKLS0gICAgbGx2bTo6TG9hZEluc3Qg Kmluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3QocHRyLCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZt OjpMb2FkSW5zdCAqaW5zdCA9Ci0rICAgICAgICBuZXcgbGx2bTo6TG9hZEluc3QocHRyLCBuYW1l LmlzVHJpdmlhbGx5RW1wdHkoKSA/IChsbHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkgKyAiX2xv YWQiKSA6IG5hbWUsIGJibG9jayk7Ci0gI2VuZGlmCi0gCi0gICAgIGlmIChnLT5vcHQuZm9yY2VB bGlnbmVkTWVtb3J5ICYmIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHB0LT5nZXRF bGVtZW50VHlwZSgpKSkgewotQEAgLTIzMDcsOCArMjI5NCw4IEBAIGxsdm06OlZhbHVlICpGdW5j dGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBUeXBlICp0 eXBlLCBjCi0gc3RhdGljIGxsdm06OlZhbHVlICpsRmluYWxTbGljZU9mZnNldChGdW5jdGlvbkVt aXRDb250ZXh0ICpjdHgsIGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFBvaW50ZXJUeXBlICoqcHRy VHlwZSkgewotICAgICBBc3NlcnQoQ2FzdFR5cGU8UG9pbnRlclR5cGU+KCpwdHJUeXBlKSAhPSBO VUxMKTsKLSAKLS0gICAgbGx2bTo6VmFsdWUgKnNsaWNlUHRyID0gY3R4LT5FeHRyYWN0SW5zdChw dHIsIDAsIExMVk1HZXROYW1lKHB0ciwgIl9wdHIiKSk7Ci0tICAgIGxsdm06OlZhbHVlICpzbGlj ZU9mZnNldCA9IGN0eC0+RXh0cmFjdEluc3QocHRyLCAxLCBMTFZNR2V0TmFtZShwdHIsICJfb2Zm c2V0IikpOwotKyAgICBsbHZtOjpWYWx1ZSAqc2xpY2VQdHIgPSBjdHgtPkV4dHJhY3RJbnN0KHB0 ciwgMCwgbGx2bTo6VHdpbmUocHRyLT5nZXROYW1lKCkpICsgIl9wdHIiKTsKLSsgICAgbGx2bTo6 VmFsdWUgKnNsaWNlT2Zmc2V0ID0gY3R4LT5FeHRyYWN0SW5zdChwdHIsIDEsIGxsdm06OlR3aW5l KHB0ci0+Z2V0TmFtZSgpKSArICJfb2Zmc2V0Iik7Ci0gCi0gICAgIC8vIHNsaWNlUHRyIHNob3Vs ZCBiZSBhIHBvaW50ZXIgdG8gYW4gc29hLXdpZHRoIHdpZGUgYXJyYXkgb2YgdGhlCi0gICAgIC8v IGZpbmFsIGF0b21pYy9lbnVtL3BvaW50ZXIgdHlwZQotQEAgLTIzMjcsMTQgKzIzMTQsMTQgQEAg c3RhdGljIGxsdm06OlZhbHVlICpsRmluYWxTbGljZU9mZnNldChGdW5jdGlvbkVtaXRDb250ZXh0 ICpjdHgsIGxsdm06OlZhbHVlICpwdHIKLSAgICAgICAgIHNsaWNlUHRyID0gY3R4LT5CaXRDYXN0 SW5zdChzbGljZVB0ciwgKCpwdHJUeXBlKS0+TExWTVR5cGUoZy0+Y3R4KSk7Ci0gCi0gICAgIC8v IEFuZCBmaW5hbGx5IGluZGV4IGJhc2VkIG9uIHRoZSBzbGljZSBvZmZzZXQKLS0gICAgcmV0dXJu IGN0eC0+R2V0RWxlbWVudFB0ckluc3Qoc2xpY2VQdHIsIHNsaWNlT2Zmc2V0LCAqcHRyVHlwZSwg TExWTUdldE5hbWUoc2xpY2VQdHIsICJfZmluYWxfZ2VwIikpOwotKyAgICByZXR1cm4gY3R4LT5H ZXRFbGVtZW50UHRySW5zdChzbGljZVB0ciwgc2xpY2VPZmZzZXQsICpwdHJUeXBlLCBsbHZtOjpU d2luZShzbGljZVB0ci0+Z2V0TmFtZSgpKSArICJfZmluYWxfZ2VwIik7Ci0gfQotIAotIC8qKiBV dGlsaXR5IHJvdXRpbmUgdGhhdCBsb2FkcyBmcm9tIGEgdW5pZm9ybSBwb2ludGVyIHRvIHNvYTw+ IGRhdGEsCi0gICAgIHJldHVybmluZyBhIHJlZ3VsYXIgdW5pZm9ybSAobm9uLVNPQSByZXN1bHQp LgotICAqLwotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0Ojpsb2FkVW5pZm9ybUZy b21TT0EobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IFBvaW50ZXJU eXBlICpwdHJUeXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsK LSAgICAgY29uc3QgVHlwZSAqdW5pZlR5cGUgPSBwdHJUeXBlLT5HZXRCYXNlVHlwZSgpLT5HZXRB c1VuaWZvcm1UeXBlKCk7Ci0gCi0gICAgIGNvbnN0IENvbGxlY3Rpb25UeXBlICpjdCA9IENhc3RU eXBlPENvbGxlY3Rpb25UeXBlPihwdHJUeXBlLT5HZXRCYXNlVHlwZSgpKTsKLUBAIC0yMzYzLDcg KzIzNTAsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6bG9hZFVuaWZvcm1G cm9tU09BKGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlZhbAotIH0KLSAKLSBsbHZtOjpWYWx1ZSAq RnVuY3Rpb25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFs dWUgKm1hc2ssIGNvbnN0IFR5cGUgKnB0clJlZlR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgb25lX2VsZW0pIHsK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6 VHdpbmUgJm5hbWUsIGJvb2wgb25lX2VsZW0pIHsKLSAgICAgaWYgKHB0ciA9PSBOVUxMKSB7Ci0g ICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAg ICAgcmV0dXJuIE5VTEw7Ci1AQCAtMjM3MSw5ICsyMzU4LDYgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0 aW9uRW1pdENvbnRleHQ6OkxvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlZhbHVlICpt YXNrLAotIAotICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgcHRyUmVmVHlwZSAhPSBOVUxMICYm IG1hc2sgIT0gTlVMTCk7Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpCi0tICAgICAgICBuYW1l ID0gTExWTUdldE5hbWUocHRyLCAiX2xvYWQiKTsKLS0KLSAgICAgY29uc3QgUG9pbnRlclR5cGUg KnB0clR5cGU7Ci0gICAgIGNvbnN0IFR5cGUgKmVsVHlwZTsKLSAgICAgaWYgKENhc3RUeXBlPFJl ZmVyZW5jZVR5cGU+KHB0clJlZlR5cGUpICE9IE5VTEwpIHsKLUBAIC0yMzkzLDcgKzIzNzcsOCBA QCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFsdWUg KnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssCi0gCi0gICAgIGlmIChwdHJUeXBlLT5Jc1VuaWZvcm1U eXBlKCkpIHsKLSAgICAgICAgIGlmIChwdHJUeXBlLT5Jc1NsaWNlKCkpIHsKLS0gICAgICAgICAg ICByZXR1cm4gbG9hZFVuaWZvcm1Gcm9tU09BKHB0ciwgbWFzaywgcHRyVHlwZSwgbmFtZSk7Ci0r ICAgICAgICAgICAgcmV0dXJuIGxvYWRVbmlmb3JtRnJvbVNPQShwdHIsIG1hc2ssIHB0clR5cGUs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5 RW1wdHkoKSA/IChsbHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkgKyAiX2xvYWQiKSA6IG5hbWUp OwotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAvLyBGSVhNRTogc2FtZSBpc3N1ZSBh cyBhYm92ZSBsb2FkIGluc3QgcmVnYXJkaW5nIGFsaWdubWVudC4uLgotICAgICAgICAgICAgIC8v Ci1AQCAtMjQwNSwxMSArMjM5MCwxNSBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4 dDo6TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssCi0gICAgICAg ICAgICAgY29uc3QgQXRvbWljVHlwZSAqYXRvbWljVHlwZSA9IENhc3RUeXBlPEF0b21pY1R5cGU+ KHB0clR5cGUtPkdldEJhc2VUeXBlKCkpOwotIAotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8PSBJ U1BDX0xMVk1fMTBfMAotLSAgICAgICAgICAgIGxsdm06OkxvYWRJbnN0ICppbnN0ID0gbmV3IGxs dm06OkxvYWRJbnN0KHB0ciwgbmFtZSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBiYmxvY2sp OwotKyAgICAgICAgICAgIGxsdm06OkxvYWRJbnN0ICppbnN0ID0KLSsgICAgICAgICAgICAgICAg bmV3IGxsdm06OkxvYWRJbnN0KHB0ciwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAobGx2bTo6 VHdpbmUocHRyLT5nZXROYW1lKCkpICsgIl9sb2FkIikgOiBuYW1lLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBiYmxvY2spOwot ICNlbHNlIC8vIExMVk0gMTEuMCsKLSAgICAgICAgICAgICBsbHZtOjpQb2ludGVyVHlwZSAqcHRy X3R5cGUgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpQb2ludGVyVHlwZT4ocHRyLT5nZXRUeXBlKCkp OwotICAgICAgICAgICAgIGxsdm06OkxvYWRJbnN0ICppbnN0ID0KLS0gICAgICAgICAgICAgICAg bmV3IGxsdm06OkxvYWRJbnN0KHB0cl90eXBlLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgcHRy LCBuYW1lLCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sIGJibG9jayk7Ci0rICAgICAgICAgICAg ICAgIG5ldyBsbHZtOjpMb2FkSW5zdChwdHJfdHlwZS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCks IHB0ciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFs bHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbG9hZCIpIDogbmFt ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIG5vdCB2b2xh dGlsZSAqLywgYmJsb2NrKTsKLSAjZW5kaWYKLSAKLSAgICAgICAgICAgICBpZiAoYXRvbWljVHlw ZSAhPSBOVUxMICYmIGF0b21pY1R5cGUtPklzVmFyeWluZ1R5cGUoKSkgewotQEAgLTI0MzMsNyAr MjQyMiw4IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZt OjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywKLSAgICAgfSBlbHNlIHsKLSAgICAgICAg IC8vIE90aGVyd2lzZSB3ZSBzaG91bGQgaGF2ZSBhIHZhcnlpbmcgcHRyIGFuZCBpdCdzIHRpbWUg Zm9yIGEKLSAgICAgICAgIC8vIGdhdGhlci4KLS0gICAgICAgIGxsdm06OlZhbHVlICpnYXRoZXJf cmVzdWx0ID0gZ2F0aGVyKHB0ciwgcHRyVHlwZSwgR2V0RnVsbE1hc2soKSwgbmFtZSk7Ci0rICAg ICAgICBsbHZtOjpWYWx1ZSAqZ2F0aGVyX3Jlc3VsdCA9IGdhdGhlcihwdHIsIHB0clR5cGUsIEdl dEZ1bGxNYXNrKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChsbHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkg KyAiX2xvYWQiKSA6IG5hbWUpOwotICAgICAgICAgaWYgKCFvbmVfZWxlbSkKLSAgICAgICAgICAg ICByZXR1cm4gZ2F0aGVyX3Jlc3VsdDsKLSAKLUBAIC0yNDUzLDE5ICsyNDQzLDE5IEBAIGxsdm06 OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBs bHZtOjpWYWx1ZSAqbWFzaywKLSAgICAgICAgIC8vIFdlIGNhbiBhY3R1YWxseSBjYWxsIGVpdGhl ciBvbmUsIHNpbmNlIGJvdGggYXJlIGkzMnMgYXMgZmFyIGFzCi0gICAgICAgICAvLyBMTFZNJ3Mg dHlwZSBzeXN0ZW0gaXMgY29uY2VybmVkLi4uCi0gICAgICAgICBsbHZtOjpGdW5jdGlvbiAqZm1t ID0gbW1bMF0tPmZ1bmN0aW9uOwotLSAgICAgICAgbGx2bTo6VmFsdWUgKmludF9tYXNrID0gQ2Fs bEluc3QoZm1tLCBOVUxMLCBtYXNrLCBMTFZNR2V0TmFtZShtYXNrLCAiX21vdm1zayIpKTsKLSsg ICAgICAgIGxsdm06OlZhbHVlICppbnRfbWFzayA9IENhbGxJbnN0KGZtbSwgTlVMTCwgbWFzaywg bGx2bTo6VHdpbmUobWFzay0+Z2V0TmFtZSgpKSArICJfbW92bXNrIik7Ci0gICAgICAgICBzdGQ6 OnZlY3RvcjxTeW1ib2wgKj4gbHo7Ci0gICAgICAgICBtLT5zeW1ib2xUYWJsZS0+TG9va3VwRnVu Y3Rpb24oIl9fY291bnRfdHJhaWxpbmdfemVyb3NfaTY0IiwgJmx6KTsKLSAgICAgICAgIGxsdm06 OkZ1bmN0aW9uICpmbHogPSBselswXS0+ZnVuY3Rpb247Ci0tICAgICAgICBsbHZtOjpWYWx1ZSAq ZWxlbV9pZHggPSBDYWxsSW5zdChmbHosIE5VTEwsIGludF9tYXNrLCBMTFZNR2V0TmFtZShtYXNr LCAiX2NseiIpKTsKLS0gICAgICAgIGxsdm06OlZhbHVlICplbGVtID0gbGx2bTo6RXh0cmFjdEVs ZW1lbnRJbnN0OjpDcmVhdGUoZ2F0aGVyX3Jlc3VsdCwgZWxlbV9pZHgsCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1HZXRO YW1lKGdhdGhlcl9yZXN1bHQsICJfdW1hc2tlZF9lbGVtIiksIGJibG9jayk7Ci0rICAgICAgICBs bHZtOjpWYWx1ZSAqZWxlbV9pZHggPSBDYWxsSW5zdChmbHosIE5VTEwsIGludF9tYXNrLCBsbHZt OjpUd2luZShtYXNrLT5nZXROYW1lKCkpICsgIl9jbHoiKTsKLSsgICAgICAgIGxsdm06OlZhbHVl ICplbGVtID0gbGx2bTo6RXh0cmFjdEVsZW1lbnRJbnN0OjpDcmVhdGUoCi0rICAgICAgICAgICAg Z2F0aGVyX3Jlc3VsdCwgZWxlbV9pZHgsIGxsdm06OlR3aW5lKGdhdGhlcl9yZXN1bHQtPmdldE5h bWUoKSkgKyAiX3VtYXNrZWRfZWxlbSIsIGJibG9jayk7Ci0gICAgICAgICByZXR1cm4gZWxlbTsK LSAgICAgfQotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Z2F0aGVy KGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFBvaW50ZXJUeXBlICpwdHJUeXBlLCBsbHZtOjpWYWx1 ZSAqbWFzaywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKm5hbWUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIC8vIFdlIHNob3VsZCBoYXZlIGEgdmFy eWluZyBwb2ludGVyIGlmIHdlIGdldCBoZXJlLi4uCi0gICAgIEFzc2VydFBvcyhjdXJyZW50UG9z LCBwdHJUeXBlLT5Jc1ZhcnlpbmdUeXBlKCkpOwotIAotQEAgLTI2MDIsNyArMjU5Miw4IEBAIHZv aWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6YWRkR1NNZXRhZGF0YShsbHZtOjpWYWx1ZSAqdiwgU291 cmNlUG9zIHBvcykgewotICAgICBpbnN0LT5zZXRNZXRhZGF0YSgibGFzdF9jb2x1bW4iLCBtZCk7 Ci0gfQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBbGxvY2FJbnN0KGxs dm06OlR5cGUgKmxsdm1UeXBlLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgYWxpZ24sIGJvb2wgYXRF bnRyeUJsb2NrKSB7Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbG9jYUlu c3QobGx2bTo6VHlwZSAqbGx2bVR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lLCBpbnQgYWxp Z24sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBh dEVudHJ5QmxvY2spIHsKLSAgICAgaWYgKGxsdm1UeXBlID09IE5VTEwpIHsKLSAgICAgICAgIEFz c2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4g TlVMTDsKLUBAIC0yNjE1LDEyICsyNjA2LDEyIEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRD b250ZXh0OjpBbGxvY2FJbnN0KGxsdm06OlR5cGUgKmxsdm1UeXBlLCBjb25zdCBjaGFyICpuCi0g ICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqcmV0SW5zdCA9IGFsbG9jYUJsb2NrLT5nZXRUZXJt aW5hdG9yKCk7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgcmV0SW5zdCk7Ci0gICAg ICAgICB1bnNpZ25lZCBBUyA9IGxsdm1GdW5jdGlvbi0+Z2V0UGFyZW50KCktPmdldERhdGFMYXlv dXQoKS5nZXRBbGxvY2FBZGRyU3BhY2UoKTsKLS0gICAgICAgIGluc3QgPSBuZXcgbGx2bTo6QWxs b2NhSW5zdChsbHZtVHlwZSwgQVMsIG5hbWUgPyBuYW1lIDogIiIsIHJldEluc3QpOwotKyAgICAg ICAgaW5zdCA9IG5ldyBsbHZtOjpBbGxvY2FJbnN0KGxsdm1UeXBlLCBBUywgbmFtZSwgcmV0SW5z dCk7Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICAvLyBVbmxlc3MgdGhlIGNhbGxlciBvdmVycm9k ZSB0aGUgZGVmYXVsdCBhbmQgd2FudHMgaXQgaW4gdGhlCi0gICAgICAgICAvLyBjdXJyZW50IGJh c2ljIGJsb2NrCi0gICAgICAgICB1bnNpZ25lZCBBUyA9IGxsdm1GdW5jdGlvbi0+Z2V0UGFyZW50 KCktPmdldERhdGFMYXlvdXQoKS5nZXRBbGxvY2FBZGRyU3BhY2UoKTsKLS0gICAgICAgIGluc3Qg PSBuZXcgbGx2bTo6QWxsb2NhSW5zdChsbHZtVHlwZSwgQVMsIG5hbWUgPyBuYW1lIDogIiIsIGJi bG9jayk7Ci0rICAgICAgICBpbnN0ID0gbmV3IGxsdm06OkFsbG9jYUluc3QobGx2bVR5cGUsIEFT LCBuYW1lLCBiYmxvY2spOwotICAgICB9Ci0gCi0gICAgIC8vIElmIG5vIGFsaWdubWVudCB3YXMg c3BlY2lmaWVkIGJ1dCB3ZSBoYXZlIGFuIGFycmF5IG9mIGEgdW5pZm9ybQotQEAgLTI2MzksNyAr MjYzMCw4IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBbGxvY2FJbnN0KGxs dm06OlR5cGUgKmxsdm1UeXBlLCBjb25zdCBjaGFyICpuCi0gICAgIHJldHVybiBpbnN0OwotIH0K LSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QWxsb2NhSW5zdChjb25zdCBU eXBlICpwdHJUeXBlLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgYWxpZ24sIGJvb2wgYXRFbnRyeUJs b2NrKSB7Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbG9jYUluc3QoY29u c3QgVHlwZSAqcHRyVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsIGludCBhbGlnbiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGF0RW50cnlC bG9jaykgewotICAgICBpZiAocHRyVHlwZSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3Mo Y3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1A QCAtMzA3NSw2NiArMzA2Nyw1OSBAQCBsbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29u dGV4dDo6QnJhbmNoSW5zdChsbHZtOjpCYXNpY0Jsb2NrICp0cnVlQmxvY2ssCi0gICAgIHJldHVy biBiOwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6RXh0cmFjdElu c3QobGx2bTo6VmFsdWUgKnYsIGludCBlbHQsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpW YWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6RXh0cmFjdEluc3QobGx2bTo6VmFsdWUgKnYsIGlu dCBlbHQsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2ID09IE5VTEwpIHsK LSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAg ICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKSB7Ci0t ICAgICAgICBjaGFyIGJ1ZlszMl07Ci0tICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYp LCAiX2V4dHJhY3RfJWQiLCBlbHQpOwotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHYsIGJ1 Zik7Ci0tICAgIH0KLSAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmVpID0gTlVMTDsKLSAgICAgaWYg KGxsdm06OmlzYTxsbHZtOjpWZWN0b3JUeXBlPih2LT5nZXRUeXBlKCkpKQotLSAgICAgICAgZWkg PSBsbHZtOjpFeHRyYWN0RWxlbWVudEluc3Q6OkNyZWF0ZSh2LCBMTFZNSW50MzIoZWx0KSwgbmFt ZSwgYmJsb2NrKTsKLSsgICAgICAgIGVpID0gbGx2bTo6RXh0cmFjdEVsZW1lbnRJbnN0OjpDcmVh dGUoCi0rICAgICAgICAgICAgdiwgTExWTUludDMyKGVsdCksCi0rICAgICAgICAgICAgbmFtZS5p c1RyaXZpYWxseUVtcHR5KCkgPyAoKGxsdm06OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAiX2V4dHJh Y3RfIikgKyBsbHZtOjpUd2luZShlbHQpKSA6IG5hbWUsIGJibG9jayk7Ci0gICAgIGVsc2UKLS0g ICAgICAgIGVpID0gbGx2bTo6RXh0cmFjdFZhbHVlSW5zdDo6Q3JlYXRlKHYsIGVsdCwgbmFtZSwg YmJsb2NrKTsKLSsgICAgICAgIGVpID0gbGx2bTo6RXh0cmFjdFZhbHVlSW5zdDo6Q3JlYXRlKAot KyAgICAgICAgICAgIHYsIGVsdCwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAoKGxsdm06OlR3 aW5lKHYtPmdldE5hbWUoKSkgKyAiX2V4dHJhY3RfIikgKyBsbHZtOjpUd2luZShlbHQpKSA6IG5h bWUsCi0rICAgICAgICAgICAgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoZWkpOwotICAgICBy ZXR1cm4gZWk7Ci0gfQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpJbnNl cnRJbnN0KGxsdm06OlZhbHVlICp2LCBsbHZtOjpWYWx1ZSAqZWx0VmFsLCBpbnQgZWx0LCBjb25z dCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Okluc2Vy dEluc3QobGx2bTo6VmFsdWUgKnYsIGxsdm06OlZhbHVlICplbHRWYWwsIGludCBlbHQsIGNvbnN0 IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2ID09IE5VTEwgfHwgZWx0VmFsID09IE5V TEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7 Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxM KSB7Ci0tICAgICAgICBjaGFyIGJ1ZlszMl07Ci0tICAgICAgICBzbnByaW50ZihidWYsIHNpemVv ZihidWYpLCAiX2luc2VydF8lZCIsIGVsdCk7Ci0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUo diwgYnVmKTsKLS0gICAgfQotLQotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaWkgPSBOVUxMOwot ICAgICBpZiAobGx2bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KHYtPmdldFR5cGUoKSkpCi0tICAg ICAgICBpaSA9IGxsdm06Okluc2VydEVsZW1lbnRJbnN0OjpDcmVhdGUodiwgZWx0VmFsLCBMTFZN SW50MzIoZWx0KSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgICAgIGlpID0gbGx2bTo6SW5zZXJ0RWxl bWVudEluc3Q6OkNyZWF0ZSgKLSsgICAgICAgICAgICB2LCBlbHRWYWwsIExMVk1JbnQzMihlbHQp LAotKyAgICAgICAgICAgIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKChsbHZtOjpUd2luZSh2 LT5nZXROYW1lKCkpICsgIl9pbnNlcnRfIikgKyBsbHZtOjpUd2luZShlbHQpKSA6IG5hbWUsIGJi bG9jayk7Ci0gICAgIGVsc2UKLS0gICAgICAgIGlpID0gbGx2bTo6SW5zZXJ0VmFsdWVJbnN0OjpD cmVhdGUodiwgZWx0VmFsLCBlbHQsIG5hbWUsIGJibG9jayk7Ci0rICAgICAgICBpaSA9IGxsdm06 Okluc2VydFZhbHVlSW5zdDo6Q3JlYXRlKAotKyAgICAgICAgICAgIHYsIGVsdFZhbCwgZWx0LAot KyAgICAgICAgICAgIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKChsbHZtOjpUd2luZSh2LT5n ZXROYW1lKCkpICsgIl9pbnNlcnRfIikgKyBsbHZtOjpUd2luZShlbHQpKSA6IG5hbWUsIGJibG9j ayk7Ci0gICAgIEFkZERlYnVnUG9zKGlpKTsKLSAgICAgcmV0dXJuIGlpOwotIH0KLSAKLS1sbHZt OjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U2h1ZmZsZUluc3QobGx2bTo6VmFsdWUgKnYx LCBsbHZtOjpWYWx1ZSAqdjIsIGxsdm06OlZhbHVlICptYXNrLCBjb25zdCBjaGFyICpuYW1lKSB7 Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlNodWZmbGVJbnN0KGxsdm06OlZh bHVlICp2MSwgbGx2bTo6VmFsdWUgKnYyLCBsbHZtOjpWYWx1ZSAqbWFzaywKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5h bWUpIHsKLSAgICAgaWYgKHYxID09IE5VTEwgfHwgdjIgPT0gTlVMTCB8fCBtYXNrID09IE5VTEwp IHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0g ICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKSB7 Ci0tICAgICAgICBjaGFyIGJ1ZlszMl07Ci0tICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihi dWYpLCAiX3NodWZmbGUiKTsKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2MSwgYnVmKTsK LS0gICAgfQotLQotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaWkgPSBuZXcgbGx2bTo6U2h1ZmZs ZVZlY3Rvckluc3QodjEsIHYyLCBtYXNrLCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpJbnN0 cnVjdGlvbiAqaWkgPSBuZXcgbGx2bTo6U2h1ZmZsZVZlY3Rvckluc3QoCi0rICAgICAgICB2MSwg djIsIG1hc2ssIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHYxLT5nZXRO YW1lKCkpICsgIl9zaHVmZmxlIikgOiBuYW1lLCBiYmxvY2spOwotIAotICAgICBBZGREZWJ1Z1Bv cyhpaSk7Ci0gICAgIHJldHVybiBpaTsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1p dENvbnRleHQ6OkJyb2FkY2FzdFZhbHVlKGxsdm06OlZhbHVlICp2LCBsbHZtOjpUeXBlICp2ZWNU eXBlLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRl eHQ6OkJyb2FkY2FzdFZhbHVlKGxsdm06OlZhbHVlICp2LCBsbHZtOjpUeXBlICp2ZWNUeXBlLCBj b25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodiA9PSBOVUxMIHx8IHZlY1R5cGUg PT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQg PiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotQEAgLTMxNDgsMTIgKzMxMzMsNiBAQCBsbHZt OjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QnJvYWRjYXN0VmFsdWUobGx2bTo6VmFsdWUg KnYsIGxsdm06OlR5cGUgKnZlYwotICAgICBBc3NlcnQodHkgJiYgdHktPmdldFZlY3RvckVsZW1l bnRUeXBlKCkgPT0gdi0+Z2V0VHlwZSgpKTsKLSAjZW5kaWYKLSAKLS0gICAgaWYgKG5hbWUgPT0g TlVMTCkgewotLSAgICAgICAgY2hhciBidWZbMzJdOwotLSAgICAgICAgc25wcmludGYoYnVmLCBz aXplb2YoYnVmKSwgIl9icm9hZGNhc3QiKTsKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2 LCBidWYpOwotLSAgICB9Ci0tCi0gICAgIC8vIEdlbmVyYXRlIHRoZSBmb2xsb3dpbmcgc2VxdWVu Y2U6Ci0gICAgIC8vICAgJW5hbWVfaW5pdC5pID0gaW5zZXJ0ZWxlbWVudCA8NCB4IGkzMj4gdW5k ZWYsIGkzMiAldmFsLCBpMzIgMAotICAgICAvLyAgICVuYW1lLmkgPSBzaHVmZmxldmVjdG9yIDw0 IHggaTMyPiAlbmFtZV9pbml0LmksIDw0IHggaTMyPiB1bmRlZiwKLUBAIC0zMTYzLDcgKzMxNDIs NyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QnJvYWRjYXN0VmFsdWUobGx2 bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZlYwotICAgICBsbHZtOjpWYWx1ZSAqdW5kZWYyID0g bGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KHZlY1R5cGUpOwotIAotICAgICAvLyBJbnNlcnRFbGVtZW50 Ci0tICAgIGxsdm06OlR3aW5lIHR3ID0gbGx2bTo6VHdpbmUobmFtZSkgKyBsbHZtOjpUd2luZSgi X2luaXQiKTsKLSsgICAgbGx2bTo6VHdpbmUgdHcgPSBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ IChsbHZtOjpUd2luZSh2LT5nZXROYW1lKCkpICsgIl9icm9hZGNhc3QiKSA6IG5hbWUgKyBsbHZt OjpUd2luZSgiX2luaXQiKTsKLSAgICAgbGx2bTo6VmFsdWUgKmluc2VydCA9IEluc2VydEluc3Qo dW5kZWYxLCB2LCAwLCB0dy5zdHIoKS5jX3N0cigpKTsKLSAKLSAgICAgLy8gU2h1ZmZsZVZlY3Rv cgotQEAgLTMxNzksMjggKzMxNTgsMjcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRl eHQ6OkJyb2FkY2FzdFZhbHVlKGxsdm06OlZhbHVlICp2LCBsbHZtOjpUeXBlICp2ZWMKLSAgICAg ICAgIGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdChsbHZtOjpFbGVtZW50Q291bnQ6Omdl dChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHR5LT5nZXROdW1FbGVtZW50cygpKSwgZmFsc2Up LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50 OjpnZXROdWxsVmFsdWUobGx2bTo6VHlwZTo6Z2V0SW50MzJUeSgqZy0+Y3R4KSkpOwotICNlbmRp ZgotLSAgICBsbHZtOjpWYWx1ZSAqcmV0ID0gU2h1ZmZsZUluc3QoaW5zZXJ0LCB1bmRlZjIsIHpl cm9WZWMsIG5hbWUpOwotKyAgICBsbHZtOjpWYWx1ZSAqcmV0ID0gU2h1ZmZsZUluc3QoaW5zZXJ0 LCB1bmRlZjIsIHplcm9WZWMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu YW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChsbHZtOjpUd2luZSh2LT5nZXROYW1lKCkpICsgIl9i cm9hZGNhc3QiKSA6IG5hbWUpOwotIAotICAgICByZXR1cm4gcmV0OwotIH0KLSAKLS1sbHZtOjpQ SElOb2RlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpQaGlOb2RlKGxsdm06OlR5cGUgKnR5cGUsIGlu dCBjb3VudCwgY29uc3QgY2hhciAqbmFtZSkgewotLSAgICBsbHZtOjpQSElOb2RlICpwbiA9IGxs dm06OlBISU5vZGU6OkNyZWF0ZSh0eXBlLCBjb3VudCwgbmFtZSA/IG5hbWUgOiAicGhpIiwgYmJs b2NrKTsKLStsbHZtOjpQSElOb2RlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpQaGlOb2RlKGxsdm06 OlR5cGUgKnR5cGUsIGludCBjb3VudCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSsgICAg bGx2bTo6UEhJTm9kZSAqcG4gPSBsbHZtOjpQSElOb2RlOjpDcmVhdGUodHlwZSwgY291bnQsIG5h bWUuaXNUcml2aWFsbHlFbXB0eSgpID8gInBoaSIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGRE ZWJ1Z1Bvcyhwbik7Ci0gICAgIHJldHVybiBwbjsKLSB9Ci0gCi0gbGx2bTo6SW5zdHJ1Y3Rpb24g KkZ1bmN0aW9uRW1pdENvbnRleHQ6OlNlbGVjdEluc3QobGx2bTo6VmFsdWUgKnRlc3QsIGxsdm06 OlZhbHVlICp2YWwwLCBsbHZtOjpWYWx1ZSAqdmFsMSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6 VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHRlc3QgPT0gTlVMTCB8fCB2YWwwID09IE5VTEwgfHwg dmFsMSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JD b3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYgKG5h bWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh0ZXN0LCAiX3NlbGVjdCIp OwotLQotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IGxsdm06OlNlbGVjdEluc3Q6OkNy ZWF0ZSh0ZXN0LCB2YWwwLCB2YWwxLCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpJbnN0cnVj dGlvbiAqaW5zdCA9IGxsdm06OlNlbGVjdEluc3Q6OkNyZWF0ZSgKLSsgICAgICAgIHRlc3QsIHZh bDAsIHZhbDEsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHRlc3QtPmdl dE5hbWUoKSkgKyAiX3NlbGVjdCIpIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3Mo aW5zdCk7Ci0gICAgIHJldHVybiBpbnN0OwotIH0KLUBAIC0zMjI2LDcgKzMyMDQsNyBAQCBzdGF0 aWMgdW5zaWduZWQgaW50IGxDYWxsZWVBcmdDb3VudChsbHZtOjpWYWx1ZSAqY2FsbGVlLCBjb25z dCBGdW5jdGlvblR5cGUgKmZ1bgotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29u dGV4dDo6Q2FsbEluc3QobGx2bTo6VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZSAqZnVu Y1R5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0ZDo6dmVjdG9yPGxsdm06OlZhbHVlICo+ICZhcmdzLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVj dG9yPGxsdm06OlZhbHVlICo+ICZhcmdzLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAg ICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMzI1OCw5ICszMjM2 LDkgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkNhbGxJbnN0KGxsdm06OlZh bHVlICpmdW5jLCBjb25zdCBGdW5jdGlvblR5cGUKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0g SVNQQ19MTFZNXzExXzAKLSAgICAgICAgIGxsdm06OlBvaW50ZXJUeXBlICpmdW5jX3B0cl90eXBl ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6UG9pbnRlclR5cGU+KGZ1bmMtPmdldFR5cGUoKSk7Ci0g ICAgICAgICBsbHZtOjpGdW5jdGlvblR5cGUgKmZ1bmNfdHlwZSA9IGxsdm06OmR5bl9jYXN0PGxs dm06OkZ1bmN0aW9uVHlwZT4oZnVuY19wdHJfdHlwZS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCkp OwotLSAgICAgICAgbGx2bTo6Q2FsbEluc3QgKmNhbGxpbnN0ID0gbGx2bTo6Q2FsbEluc3Q6OkNy ZWF0ZShmdW5jX3R5cGUsIGZ1bmMsIGFyZ1ZhbHMsIG5hbWUgPyBuYW1lIDogIiIsIGJibG9jayk7 Ci0rICAgICAgICBsbHZtOjpDYWxsSW5zdCAqY2FsbGluc3QgPSBsbHZtOjpDYWxsSW5zdDo6Q3Jl YXRlKGZ1bmNfdHlwZSwgZnVuYywgYXJnVmFscywgbmFtZSwgYmJsb2NrKTsKLSAjZWxzZQotLSAg ICAgICAgbGx2bTo6Q2FsbEluc3QgKmNhbGxpbnN0ID0gbGx2bTo6Q2FsbEluc3Q6OkNyZWF0ZShm dW5jLCBhcmdWYWxzLCBuYW1lID8gbmFtZSA6ICIiLCBiYmxvY2spOwotKyAgICAgICAgbGx2bTo6 Q2FsbEluc3QgKmNhbGxpbnN0ID0gbGx2bTo6Q2FsbEluc3Q6OkNyZWF0ZShmdW5jLCBhcmdWYWxz LCBuYW1lLCBiYmxvY2spOwotICNlbmRpZgotIAotICAgICAgICAgLy8gV2UgY291bGQgYmUgZGVh bGluZyB3aXRoIGEgZnVuY3Rpb24gcG9pbnRlciBpbiB3aGljaCBjYXNlIHRoaXMgd2lsbCBub3Qg YmUgYSAnbGx2bTo6RnVuY3Rpb24nLgotQEAgLTM0NjQsMTQgKzM0NDIsMTQgQEAgbGx2bTo6VmFs dWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkNhbGxJbnN0KGxsdm06OlZhbHVlICpmdW5jLCBjb25z dCBGdW5jdGlvblR5cGUKLSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6 OkNhbGxJbnN0KGxsdm06OlZhbHVlICpmdW5jLCBjb25zdCBGdW5jdGlvblR5cGUgKmZ1bmNUeXBl LCBsbHZtOjpWYWx1ZSAqYXJnLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIHN0ZDo6dmVj dG9yPGxsdm06OlZhbHVlICo+IGFyZ3M7Ci0gICAgIGFyZ3MucHVzaF9iYWNrKGFyZyk7Ci0gICAg IHJldHVybiBDYWxsSW5zdChmdW5jLCBmdW5jVHlwZSwgYXJncywgbmFtZSk7Ci0gfQotIAotIGxs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpDYWxsSW5zdChsbHZtOjpWYWx1ZSAqZnVu YywgY29uc3QgRnVuY3Rpb25UeXBlICpmdW5jVHlwZSwgbGx2bTo6VmFsdWUgKmFyZzAsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICphcmcx LCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxsdm06OlZhbHVlICphcmcxLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewot ICAgICBzdGQ6OnZlY3RvcjxsbHZtOjpWYWx1ZSAqPiBhcmdzOwotICAgICBhcmdzLnB1c2hfYmFj ayhhcmcwKTsKLSAgICAgYXJncy5wdXNoX2JhY2soYXJnMSk7Ci1kaWZmIC0tZ2l0IGEvc3JjL2N0 eC5oIGIvc3JjL2N0eC5oCi1pbmRleCA2ZTVhZDc0YmEuLjQ4YjNiYjgyNiAxMDA2NDQKLS0tLSBh L3NyYy9jdHguaAotKysrIGIvc3JjL2N0eC5oCi1AQCAtMzAyLDcgKzMwMiw3IEBAIGNsYXNzIEZ1 bmN0aW9uRW1pdENvbnRleHQgewotICAgICBsbHZtOjpWYWx1ZSAqR2V0U3RyaW5nUHRyKGNvbnN0 IHN0ZDo6c3RyaW5nICZzdHIpOwotIAotICAgICAvKiogQ3JlYXRlIGEgbmV3IGJhc2ljIGJsb2Nr IHdpdGggZ2l2ZW4gbmFtZSAqLwotLSAgICBsbHZtOjpCYXNpY0Jsb2NrICpDcmVhdGVCYXNpY0Js b2NrKGNvbnN0IGNoYXIgKm5hbWUsIGxsdm06OkJhc2ljQmxvY2sgKmluc2VydEFmdGVyID0gTlVM TCk7Ci0rICAgIGxsdm06OkJhc2ljQmxvY2sgKkNyZWF0ZUJhc2ljQmxvY2soY29uc3QgbGx2bTo6 VHdpbmUgJm5hbWUsIGxsdm06OkJhc2ljQmxvY2sgKmluc2VydEFmdGVyID0gTlVMTCk7Ci0gCi0g ICAgIC8qKiBHaXZlbiBhIHZlY3RvciB3aXRoIGVsZW1lbnQgdHlwZSBpMSwgcmV0dXJuIGEgdmVj dG9yIG9mIHR5cGUKLSAgICAgICAgIExMVk1UeXBlczo6Qm9vbFZlY3RvclR5cGUuICBUaGlzIG1l dGhvZCBoYW5kbGVzIHRoZSBjb252ZXJzaW9uIGZvcgotQEAgLTM4MCwzMyArMzgwLDMzIEBAIGNs YXNzIEZ1bmN0aW9uRW1pdENvbnRleHQgewotICAgICAgICAgdGhpcyBhbHNvIGhhbmRsZXMgYXBw bHlpbmcgdGhlIGdpdmVuIG9wZXJhdGlvbiB0byB0aGUgdmVjdG9yCi0gICAgICAgICBlbGVtZW50 cy4gKi8KLSAgICAgbGx2bTo6VmFsdWUgKkJpbmFyeU9wZXJhdG9yKGxsdm06Okluc3RydWN0aW9u OjpCaW5hcnlPcHMgaW5zdCwgbGx2bTo6VmFsdWUgKnYwLCBsbHZtOjpWYWx1ZSAqdjEsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9 ICIiKTsKLSAKLSAgICAgLyoqIEVtaXQgdGhlICJub3QiIG9wZXJhdG9yLiAgTGlrZSBCaW5hcnlP cGVyYXRvcigpLCB0aGlzIGFsc28gaGFuZGxlcwotICAgICAgICAgYSBWZWN0b3JUeXBlLWJhc2Vk IG9wZXJhbmQuICovCi0tICAgIGxsdm06OlZhbHVlICpOb3RPcGVyYXRvcihsbHZtOjpWYWx1ZSAq diwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqTm90T3BlcmF0 b3IobGx2bTo6VmFsdWUgKnYsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAg ICAvKiogRW1pdCBhIGNvbXBhcmlzb24gaW5zdHJ1Y3Rpb24uICBJZiB0aGUgb3BlcmFuZHMgYXJl IFZlY3RvclR5cGVzLAotICAgICAgICAgdGhlbiBhIHZhbHVlIGZvciB0aGUgY29ycmVzcG9uZGlu ZyBib29sZWFuIFZlY3RvclR5cGUgaXMKLSAgICAgICAgIHJldHVybmVkLiAqLwotICAgICBsbHZt OjpWYWx1ZSAqQ21wSW5zdChsbHZtOjpJbnN0cnVjdGlvbjo6T3RoZXJPcHMgaW5zdCwgbGx2bTo6 Q21wSW5zdDo6UHJlZGljYXRlIHByZWQsIGxsdm06OlZhbHVlICp2MCwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnYxLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICp2MSwgY29uc3QgbGx2bTo6VHdp bmUgJm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBHaXZlbiBhIHNjYWxhciB2YWx1ZSwgcmV0dXJu IGEgdmVjdG9yIG9mIHRoZSBzYW1lIHR5cGUgKG9yIGFuCi0gICAgICAgICBhcnJheSwgZm9yIHBv aW50ZXIgdHlwZXMpLiAqLwotLSAgICBsbHZtOjpWYWx1ZSAqU21lYXJVbmlmb3JtKGxsdm06OlZh bHVlICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAq U21lYXJVbmlmb3JtKGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUg PSAiIik7Ci0gCi0tICAgIGxsdm06OlZhbHVlICpCaXRDYXN0SW5zdChsbHZtOjpWYWx1ZSAqdmFs dWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLS0gICAgbGx2 bTo6VmFsdWUgKlB0clRvSW50SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0IGNoYXIgKm5h bWUgPSBOVUxMKTsKLS0gICAgbGx2bTo6VmFsdWUgKlB0clRvSW50SW5zdChsbHZtOjpWYWx1ZSAq dmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLS0gICAg bGx2bTo6VmFsdWUgKkludFRvUHRySW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUg KnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgbGx2bTo6VmFsdWUgKkJpdENh c3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6 VHdpbmUgJm5hbWUgPSAiIik7Ci0rICAgIGxsdm06OlZhbHVlICpQdHJUb0ludEluc3QobGx2bTo6 VmFsdWUgKnZhbHVlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSsgICAgbGx2bTo6 VmFsdWUgKlB0clRvSW50SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUs IGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotKyAgICBsbHZtOjpWYWx1ZSAqSW50VG9Q dHJJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6 VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0tICAgIGxsdm06Okluc3RydWN0aW9uICpUcnVuY0luc3Qo bGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBjaGFyICpuYW1lID0g TlVMTCk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICpUcnVuY0luc3QobGx2bTo6VmFsdWUgKnZh bHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAg ICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKkNhc3RJbnN0KGxsdm06Okluc3RydWN0aW9uOjpDYXN0T3Bz IG9wLCBsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0tICAgIGxsdm06 Okluc3RydWN0aW9uICpGUENhc3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAq dHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAq U0V4dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBjaGFy ICpuYW1lID0gTlVMTCk7Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICpaRXh0SW5zdChsbHZtOjpW YWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1l ID0gIiIpOwotKyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqRlBDYXN0SW5zdChsbHZtOjpWYWx1ZSAq dmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwot KyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqU0V4dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZt OjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSsgICAgbGx2bTo6 SW5zdHJ1Y3Rpb24gKlpFeHRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlw ZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBHaXZlbiB0d28g aW50ZWdlci10eXBlZCB2YWx1ZXMgKGJ1dCBwb3NzaWJseSBvbmUgdmVjdG9yIGFuZCB0aGUKLSAg ICAgICAgIG90aGVyIG5vdCwgYW5kIG9yIG9mIHBvc3NpYmx5LWRpZmZlcmVudCBiaXQtd2lkdGhz KSwgdXBkYXRlIHRoZWlyCi1AQCAtNDI2LDkgKzQyNiw5IEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENv bnRleHQgewotICAgICAgICAgcG9pbnRlcnMuICBUaGUgdW5kZXJseWluZyB0eXBlIG9mIHRoZSBi YXNlIHBvaW50ZXIgbXVzdCBiZSBwcm92aWRlZAotICAgICAgICAgdmlhIHRoZSBwdHJUeXBlIHBh cmFtZXRlciAqLwotICAgICBsbHZtOjpWYWx1ZSAqR2V0RWxlbWVudFB0ckluc3QobGx2bTo6VmFs dWUgKmJhc2VQdHIsIGxsdm06OlZhbHVlICppbmRleCwgY29uc3QgVHlwZSAqcHRyVHlwZSwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxM KTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5l ICZuYW1lID0gIiIpOwotICAgICBsbHZtOjpWYWx1ZSAqR2V0RWxlbWVudFB0ckluc3QobGx2bTo6 VmFsdWUgKmJhc2VQdHIsIGxsdm06OlZhbHVlICppbmRleDAsIGxsdm06OlZhbHVlICppbmRleDEs IGNvbnN0IFR5cGUgKnB0clR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIFRoaXMg bWV0aG9kIHJldHVybnMgYSBuZXcgcG9pbnRlciB0aGF0IHJlcHJlc2VudHMgb2Zmc2V0dGluZyB0 aGUKLSAgICAgICAgIGdpdmVuIGJhc2UgcG9pbnRlciB0byBwb2ludCBhdCB0aGUgZ2l2ZW4gZWxl bWVudCBudW1iZXIgb2YgdGhlCi1AQCAtNDM2LDI2ICs0MzYsMjYgQEAgY2xhc3MgRnVuY3Rpb25F bWl0Q29udGV4dCB7Ci0gICAgICAgICBwb2ludGVyIG11c3QgYmUgYSBwb2ludGVyIHRvIGEgc3Ry dWN0dXJlIHR5cGUuICBUaGUgcHRyVHlwZSBnaXZlcwotICAgICAgICAgdGhlIHR5cGUgb2YgdGhl IHBvaW50ZXIsIHRob3VnaCBpdCBtYXkgYmUgTlVMTCBpZiB0aGUgYmFzZSBwb2ludGVyCi0gICAg ICAgICBpcyB1bmlmb3JtLiAqLwotLSAgICBsbHZtOjpWYWx1ZSAqQWRkRWxlbWVudE9mZnNldChs bHZtOjpWYWx1ZSAqYmFzZVB0ciwgaW50IGVsZW1lbnROdW0sIGNvbnN0IFR5cGUgKnB0clR5cGUs IGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBQb2ludGVyVHlwZSAqKnJlc3VsdFB0clR5cGUgPSBOVUxMKTsKLSsgICAgbGx2 bTo6VmFsdWUgKkFkZEVsZW1lbnRPZmZzZXQobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGludCBlbGVt ZW50TnVtLCBjb25zdCBUeXBlICpwdHJUeXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiLCBjb25zdCBQb2ludGVyVHlwZSAq KnJlc3VsdFB0clR5cGUgPSBOVUxMKTsKLSAKLSAgICAgLyoqIEJvb2wgaXMgc3RvcmVkIGFzIGk4 IGFuZCA8V0lEVEggeCBpOD4gYnV0IHJlcHJlc2VudGVkIGluIElSIGFzIGkxIGFuZAotICAgICAg KiA8V0lEVEggeCBNQVNLPi4gVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiB0byBtYXRjaCBib29s IHNpemUgYXQgc3RvcmFnZQotICAgICAgKiBpbnRlcmZhY2UuICovCi0tICAgIGxsdm06OlZhbHVl ICpTd2l0Y2hCb29sU2l6ZShsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwg Y29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqU3dpdGNoQm9vbFNp emUobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0b1R5cGUsIGNvbnN0IGxsdm06OlR3 aW5lICZuYW1lID0gIiIpOwotICAgICAvKiogTG9hZCBmcm9tIHRoZSBtZW1vcnkgbG9jYXRpb24o cykgZ2l2ZW4gYnkgbHZhbHVlLCB1c2luZyB0aGUgZ2l2ZW4KLSAgICAgICAgIG1hc2suICBUaGUg bHZhbHVlIG1heSBiZSB2YXJ5aW5nLCBpbiB3aGljaCBjYXNlIHRoaXMgY29ycmVzcG9uZHMgdG8K LSAgICAgICAgIGEgZ2F0aGVyIGZyb20gdGhlIG11bHRpcGxlIG1lbW9yeSBsb2NhdGlvbnMgZ2l2 ZW4gYnkgdGhlIGFycmF5IG9mCi0gICAgICAgICBwb2ludGVyIHZhbHVlcyBnaXZlbiBieSB0aGUg bHZhbHVlLiAgSWYgdGhlIGx2YWx1ZSBpcyBub3QgdmFyeWluZywKLSAgICAgICAgIHRoZW4gYm90 aCB0aGUgbWFzayBwb2ludGVyIGFuZCB0aGUgdHlwZSBwb2ludGVyIG1heSBiZSBOVUxMLiAqLwot LSAgICBsbHZtOjpWYWx1ZSAqTG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUg Km1hc2ssIGNvbnN0IFR5cGUgKnB0clR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMLAotKyAg ICBsbHZtOjpWYWx1ZSAqTG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1h c2ssIGNvbnN0IFR5cGUgKnB0clR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG9uZV9lbGVtID0gZmFsc2UpOwotIAotICAg ICAvKiBMb2FkIGZyb20gbWVtb3J5IGxvY2F0aW9uKHMpIGdpdmVuLgotICAgICAgKiAndHlwZScg bmVlZHMgdG8gYmUgcHJvdmlkZWQgd2hlbiBzdG9yYWdlIHR5cGUgaXMgZGlmZmVyZW50IGZyb20g SVIgdHlwZS4gRm9yIGV4YW1wbGUsCi0gICAgICAqICd1bmZvcm0gYm9vbCcgaXMgJ2kxJyBpbiBJ UiBidXQgc3RvcmVkIGFzICdpOCcuCi0gICAgICAqIE90aGVyd2lzZSBsZWF2ZSB0aGlzIGFzIE5V TEwuICovCi0tICAgIGxsdm06OlZhbHVlICpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBjb25z dCBUeXBlICp0eXBlID0gTlVMTCwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZt OjpWYWx1ZSAqTG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqdHlwZSA9IE5V TEwsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAvKiogRW1pdHMgYW4g YWxsb2NhIGluc3RydWN0aW9uIHRvIGFsbG9jYXRlIHN0YWNrIHN0b3JhZ2UgZm9yIHRoZSBnaXZl bgotICAgICAgICAgdHlwZS4gIElmIGEgbm9uLXplcm8gYWxpZ25tZW50IGlzIHNwZWNpZmllZCwg dGhlIG9iamVjdCBpcyBhbHNvCi1AQCAtNDYzLDcgKzQ2Myw4IEBAIGNsYXNzIEZ1bmN0aW9uRW1p dENvbnRleHQgewotICAgICAgICAgaW5zdHJ1Y3Rpb24gaXMgYWRkZWQgYXQgdGhlIHN0YXJ0IG9m IHRoZSBmdW5jdGlvbiBpbiB0aGUgZW50cnkKLSAgICAgICAgIGJhc2ljIGJsb2NrOyBpZiBpdCBz aG91bGQgYmUgYWRkZWQgdG8gdGhlIGN1cnJlbnQgYmFzaWMgYmxvY2ssIHRoZW4KLSAgICAgICAg IHRoZSBhdEVudHJ5QmxvY2sgcGFyYW1ldGVyIHNob3VsZCBiZSBmYWxzZS4gKi8KLS0gICAgbGx2 bTo6VmFsdWUgKkFsbG9jYUluc3QobGx2bTo6VHlwZSAqbGx2bVR5cGUsIGNvbnN0IGNoYXIgKm5h bWUgPSBOVUxMLCBpbnQgYWxpZ24gPSAwLCBib29sIGF0RW50cnlCbG9jayA9IHRydWUpOwotKyAg ICBsbHZtOjpWYWx1ZSAqQWxsb2NhSW5zdChsbHZtOjpUeXBlICpsbHZtVHlwZSwgY29uc3QgbGx2 bTo6VHdpbmUgJm5hbWUgPSAiIiwgaW50IGFsaWduID0gMCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYm9vbCBhdEVudHJ5QmxvY2sgPSB0cnVlKTsKLSAKLSAgICAgLyoqIEVtaXRzIGFu IGFsbG9jYSBpbnN0cnVjdGlvbiB0byBhbGxvY2F0ZSBzdGFjayBzdG9yYWdlIGZvciB0aGUgZ2l2 ZW4KLSAgICAgICAgIHR5cGUuICBJZiBhIG5vbi16ZXJvIGFsaWdubWVudCBpcyBzcGVjaWZpZWQs IHRoZSBvYmplY3QgaXMgYWxzbwotQEAgLTQ3NCw3ICs0NzUsNyBAQCBjbGFzcyBGdW5jdGlvbkVt aXRDb250ZXh0IHsKLSAgICAgICAgIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgcHJlZmVycmVkIHdo ZW4gcG9zc2libGUuIEl0IGlzIG5lZWRlZCB3aGVuCi0gICAgICAgICBzdG9yYWdlIHR5cGUgaXMg ZGlmZmVyZW50IGZyb20gSVIgdHlwZS4gRm9yIGV4YW1wbGUsCi0gICAgICAgICAndW5mb3JtIGJv b2wnIGlzICdpMScgaW4gSVIgYnV0IHN0b3JlZCBhcyAnaTgnLiAqLwotLSAgICBsbHZtOjpWYWx1 ZSAqQWxsb2NhSW5zdChjb25zdCBUeXBlICpwdHJUeXBlLCBjb25zdCBjaGFyICpuYW1lID0gTlVM TCwgaW50IGFsaWduID0gMCwgYm9vbCBhdEVudHJ5QmxvY2sgPSB0cnVlKTsKLSsgICAgbGx2bTo6 VmFsdWUgKkFsbG9jYUluc3QoY29uc3QgVHlwZSAqcHRyVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUg Jm5hbWUgPSAiIiwgaW50IGFsaWduID0gMCwgYm9vbCBhdEVudHJ5QmxvY2sgPSB0cnVlKTsKLSAK LSAgICAgLyoqIFN0YW5kYXJkIHN0b3JlIGluc3RydWN0aW9uOyBmb3IgdGhpcyB2YXJpYW50LCB0 aGUgbHZhbHVlIG11c3QgYmUgYQotICAgICAgICAgc2luZ2xlIHBvaW50ZXIsIG5vdCBhIHZhcnlp bmcgbHZhbHVlLgotQEAgLTUwMiwzOSArNTAzLDQxIEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRl eHQgewotICAgICAvKiogVGhpcyBjb252ZW5pZW5jZSBtZXRob2QgbWFwcyB0byBhbiBsbHZtOjpF eHRyYWN0RWxlbWVudEluc3QgaWYgdGhlCi0gICAgICAgICBnaXZlbiB2YWx1ZSBpcyBhIGxsdm06 OlZlY3RvclR5cGUsIGFuZCB0byBhbiBsbHZtOjpFeHRyYWN0VmFsdWVJbnN0Ci0gICAgICAgICBv dGhlcndpc2UuICovCi0tICAgIGxsdm06OlZhbHVlICpFeHRyYWN0SW5zdChsbHZtOjpWYWx1ZSAq diwgaW50IGVsdCwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAq RXh0cmFjdEluc3QobGx2bTo6VmFsdWUgKnYsIGludCBlbHQsIGNvbnN0IGxsdm06OlR3aW5lICZu YW1lID0gIiIpOwotIAotICAgICAvKiogVGhpcyBjb252ZW5pZW5jZSBtZXRob2QgbWFwcyB0byBh biBsbHZtOjpJbnNlcnRFbGVtZW50SW5zdCBpZiB0aGUKLSAgICAgICAgIGdpdmVuIHZhbHVlIGlz IGEgbGx2bTo6VmVjdG9yVHlwZSwgYW5kIHRvIGFuIGxsdm06Okluc2VydFZhbHVlSW5zdAotICAg ICAgICAgb3RoZXJ3aXNlLiAqLwotLSAgICBsbHZtOjpWYWx1ZSAqSW5zZXJ0SW5zdChsbHZtOjpW YWx1ZSAqdiwgbGx2bTo6VmFsdWUgKmVsdFZhbCwgaW50IGVsdCwgY29uc3QgY2hhciAqbmFtZSA9 IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqSW5zZXJ0SW5zdChsbHZtOjpWYWx1ZSAqdiwgbGx2 bTo6VmFsdWUgKmVsdFZhbCwgaW50IGVsdCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7 Ci0gCi0gICAgIC8qKiBUaGlzIGNvbnZlbmllbmNlIG1ldGhvZCBtYXBzIHRvIGFuIGxsdm06OlNo dWZmbGVWZWN0b3JJbnN0LiAqLwotLSAgICBsbHZtOjpWYWx1ZSAqU2h1ZmZsZUluc3QobGx2bTo6 VmFsdWUgKnYxLCBsbHZtOjpWYWx1ZSAqdjIsIGxsdm06OlZhbHVlICptYXNrLCBjb25zdCBjaGFy ICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpTaHVmZmxlSW5zdChsbHZtOjpWYWx1 ZSAqdjEsIGxsdm06OlZhbHVlICp2MiwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IGxsdm06OlR3 aW5lICZuYW1lID0gIiIpOwotIAotICAgICAvKiogVGhpcyBjb252ZW5pZW5jZSBtZXRob2QgdG8g Z2VuZXJhdGUgYnJvYWRjYXN0IHBhdHRlcm4uIEl0IHRha2VzIGEgdmFsdWUKLSAgICAgICAgIGFu ZCBhIHZlY3RvciB0eXBlLiBUeXBlIG9mIHRoZSB2YWx1ZSBtdXN0IG1hdGNoIGVsZW1lbnQgdHlw ZSBvZiB0aGUKLSAgICAgICAgIHZlY3Rvci4gKi8KLS0gICAgbGx2bTo6VmFsdWUgKkJyb2FkY2Fz dFZhbHVlKGxsdm06OlZhbHVlICp2LCBsbHZtOjpUeXBlICp2ZWNUeXBlLCBjb25zdCBjaGFyICpu YW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpCcm9hZGNhc3RWYWx1ZShsbHZtOjpWYWx1 ZSAqdiwgbGx2bTo6VHlwZSAqdmVjVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7 Ci0gCi0tICAgIGxsdm06OlBISU5vZGUgKlBoaU5vZGUobGx2bTo6VHlwZSAqdHlwZSwgaW50IGNv dW50LCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICpT ZWxlY3RJbnN0KGxsdm06OlZhbHVlICp0ZXN0LCBsbHZtOjpWYWx1ZSAqdmFsMCwgbGx2bTo6VmFs dWUgKnZhbDEsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgbGx2bTo6UEhJTm9kZSAq UGhpTm9kZShsbHZtOjpUeXBlICp0eXBlLCBpbnQgY291bnQsIGNvbnN0IGxsdm06OlR3aW5lICZu YW1lID0gIiIpOwotKyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqU2VsZWN0SW5zdChsbHZtOjpWYWx1 ZSAqdGVzdCwgbGx2bTo6VmFsdWUgKnZhbDAsIGxsdm06OlZhbHVlICp2YWwxLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsK LSAKLSAgICAgLyoqIEVtaXRzIElSIHRvIGRvIGEgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBnaXZl biBhcmd1bWVudHMuICBJZiB0aGUKLSAgICAgICAgIGZ1bmN0aW9uIHR5cGUgaXMgYSB2YXJ5aW5n IGZ1bmN0aW9uIHBvaW50ZXIgdHlwZSwgaXRzIGZ1bGwgdHlwZQotICAgICAgICAgbXVzdCBiZSBw cm92aWRlZCBpbiBmdW5jVHlwZS4gIGZ1bmNUeXBlIGNhbiBiZSBOVUxMIGlmIGZ1bmMgaXMgYQot ICAgICAgICAgdW5pZm9ybSBmdW5jdGlvbiBwb2ludGVyLiAqLwotICAgICBsbHZtOjpWYWx1ZSAq Q2FsbEluc3QobGx2bTo6VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZSAqZnVuY1R5cGUs IGNvbnN0IHN0ZDo6dmVjdG9yPGxsdm06OlZhbHVlICo+ICZhcmdzLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBUaGlz IGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIHRoYXQgaXNzdWVzIGEgY2FsbCBpbnN0cnVjdGlvbiB0 byBhCi0gICAgICAgICBmdW5jdGlvbiB0aGF0IHRha2VzIGp1c3QgYSBzaW5nbGUgYXJndW1lbnQu ICovCi0tICAgIGxsdm06OlZhbHVlICpDYWxsSW5zdChsbHZtOjpWYWx1ZSAqZnVuYywgY29uc3Qg RnVuY3Rpb25UeXBlICpmdW5jVHlwZSwgbGx2bTo6VmFsdWUgKmFyZywgY29uc3QgY2hhciAqbmFt ZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqQ2FsbEluc3QobGx2bTo6VmFsdWUgKmZ1bmMs IGNvbnN0IEZ1bmN0aW9uVHlwZSAqZnVuY1R5cGUsIGxsdm06OlZhbHVlICphcmcsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAg ICAgLyoqIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBtZXRob2QgdGhhdCBpc3N1ZXMgYSBjYWxsIGlu c3RydWN0aW9uIHRvIGEKLSAgICAgICAgIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdHdvIGFyZ3VtZW50 cy4gKi8KLSAgICAgbGx2bTo6VmFsdWUgKkNhbGxJbnN0KGxsdm06OlZhbHVlICpmdW5jLCBjb25z dCBGdW5jdGlvblR5cGUgKmZ1bmNUeXBlLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFsdWUg KmFyZzEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVM TCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9 ICIiKTsKLSAKLSAgICAgLyoqIExhdW5jaCBhbiBhc3luY2hyb25vdXMgdGFzayB0byBydW4gdGhl IGdpdmVuIGZ1bmN0aW9uLCBwYXNzaW5nIGl0Ci0gICAgICAgICBoZSBnaXZlbiBhcmd1bWVudCB2 YWx1ZXMuICovCi1AQCAtNzU2LDkgKzc1OSwxMCBAQCBjbGFzcyBGdW5jdGlvbkVtaXRDb250ZXh0 IHsKLSAgICAgdm9pZCBtYXNrZWRTdG9yZShsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlZhbHVl ICpwdHIsIGNvbnN0IFR5cGUgKnB0clR5cGUsIGxsdm06OlZhbHVlICptYXNrKTsKLSAgICAgdm9p ZCBzdG9yZVVuaWZvcm1Ub1NPQShsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlZhbHVlICpwdHIs IGxsdm06OlZhbHVlICptYXNrLCBjb25zdCBUeXBlICp2YWx1ZVR5cGUsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgUG9pbnRlclR5cGUgKnB0clR5cGUpOwotLSAgICBsbHZtOjpW YWx1ZSAqbG9hZFVuaWZvcm1Gcm9tU09BKGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlZhbHVlICpt YXNrLCBjb25zdCBQb2ludGVyVHlwZSAqcHRyVHlwZSwgY29uc3QgY2hhciAqbmFtZSk7Ci0rICAg IGxsdm06OlZhbHVlICpsb2FkVW5pZm9ybUZyb21TT0EobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6 VmFsdWUgKm1hc2ssIGNvbnN0IFBvaW50ZXJUeXBlICpwdHJUeXBlLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAot LSAgICBsbHZtOjpWYWx1ZSAqZ2F0aGVyKGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFBvaW50ZXJU eXBlICpwdHJUeXBlLCBsbHZtOjpWYWx1ZSAqbWFzaywgY29uc3QgY2hhciAqbmFtZSk7Ci0rICAg IGxsdm06OlZhbHVlICpnYXRoZXIobGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgUG9pbnRlclR5cGUg KnB0clR5cGUsIGxsdm06OlZhbHVlICptYXNrLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIi KTsKLSAKLSAgICAgbGx2bTo6VmFsdWUgKmFkZFZhcnlpbmdPZmZzZXRzSWZOZWVkZWQobGx2bTo6 VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqcHRyVHlwZSk7Ci0gfTsKLWRpZmYgLS1naXQgYS9zcmMv ZXhwci5jcHAgYi9zcmMvZXhwci5jcHAKLWluZGV4IDgwY2MzMDIwYS4uNmQzOGQxODg5IDEwMDY0 NAotLS0tIGEvc3JjL2V4cHIuY3BwCi0rKysgYi9zcmMvZXhwci5jcHAKLUBAIC0xMDIxLDExICsx MDIxLDExIEBAIHN0YXRpYyBsbHZtOjpWYWx1ZSAqbEVtaXROZWdhdGUoRXhwciAqYXJnLCBTb3Vy Y2VQb3MgcG9zLCBGdW5jdGlvbkVtaXRDb250ZXh0ICpjCi0gICAgIGN0eC0+U2V0RGVidWdQb3Mo cG9zKTsKLSAgICAgaWYgKHR5cGUtPklzRmxvYXRUeXBlKCkpIHsKLSAgICAgICAgIGxsdm06OlZh bHVlICp6ZXJvID0gbGx2bTo6Q29uc3RhbnRGUDo6Z2V0WmVyb1ZhbHVlRm9yTmVnYXRpb24odHlw ZS0+TExWTVR5cGUoZy0+Y3R4KSk7Ci0tICAgICAgICByZXR1cm4gY3R4LT5CaW5hcnlPcGVyYXRv cihsbHZtOjpJbnN0cnVjdGlvbjo6RlN1YiwgemVybywgYXJnVmFsLCBMTFZNR2V0TmFtZShhcmdW YWwsICJfbmVnYXRlIikpOwotKyAgICAgICAgcmV0dXJuIGN0eC0+QmluYXJ5T3BlcmF0b3IobGx2 bTo6SW5zdHJ1Y3Rpb246OkZTdWIsIHplcm8sIGFyZ1ZhbCwgbGx2bTo6VHdpbmUoYXJnVmFsLT5n ZXROYW1lKCkpICsgIl9uZWdhdGUiKTsKLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIGxsdm06OlZh bHVlICp6ZXJvID0gbExMVk1Db25zdGFudFZhbHVlKHR5cGUsIGctPmN0eCwgMC4pOwotICAgICAg ICAgQXNzZXJ0UG9zKHBvcywgdHlwZS0+SXNJbnRUeXBlKCkpOwotLSAgICAgICAgcmV0dXJuIGN0 eC0+QmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OlN1YiwgemVybywgYXJnVmFsLCBM TFZNR2V0TmFtZShhcmdWYWwsICJfbmVnYXRlIikpOwotKyAgICAgICAgcmV0dXJuIGN0eC0+Qmlu YXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OlN1YiwgemVybywgYXJnVmFsLCBsbHZtOjpU d2luZShhcmdWYWwtPmdldE5hbWUoKSkgKyAiX25lZ2F0ZSIpOwotICAgICB9Ci0gfQotIAotQEAg LTEwNDcsMTEgKzEwNDcsMTEgQEAgbGx2bTo6VmFsdWUgKlVuYXJ5RXhwcjo6R2V0VmFsdWUoRnVu Y3Rpb25FbWl0Q29udGV4dCAqY3R4KSBjb25zdCB7Ci0gICAgICAgICByZXR1cm4gbEVtaXROZWdh dGUoZXhwciwgcG9zLCBjdHgpOwotICAgICBjYXNlIExvZ2ljYWxOb3Q6IHsKLSAgICAgICAgIGxs dm06OlZhbHVlICphcmdWYWwgPSBleHByLT5HZXRWYWx1ZShjdHgpOwotLSAgICAgICAgcmV0dXJu IGN0eC0+Tm90T3BlcmF0b3IoYXJnVmFsLCBMTFZNR2V0TmFtZShhcmdWYWwsICJfbG9naWNhbG5v dCIpKTsKLSsgICAgICAgIHJldHVybiBjdHgtPk5vdE9wZXJhdG9yKGFyZ1ZhbCwgbGx2bTo6VHdp bmUoYXJnVmFsLT5nZXROYW1lKCkpICsgIl9sb2dpY2Fsbm90Iik7Ci0gICAgIH0KLSAgICAgY2Fz ZSBCaXROb3Q6IHsKLSAgICAgICAgIGxsdm06OlZhbHVlICphcmdWYWwgPSBleHByLT5HZXRWYWx1 ZShjdHgpOwotLSAgICAgICAgcmV0dXJuIGN0eC0+Tm90T3BlcmF0b3IoYXJnVmFsLCBMTFZNR2V0 TmFtZShhcmdWYWwsICJfYml0bm90IikpOwotKyAgICAgICAgcmV0dXJuIGN0eC0+Tm90T3BlcmF0 b3IoYXJnVmFsLCBsbHZtOjpUd2luZShhcmdWYWwtPmdldE5hbWUoKSkgKyAiX2JpdG5vdCIpOwot ICAgICB9Ci0gICAgIGRlZmF1bHQ6Ci0gICAgICAgICBGQVRBTCgibG9naWMgZXJyb3IiKTsKLUBA IC0xNTE4LDcgKzE1MTgsOCBAQCBzdGF0aWMgbGx2bTo6VmFsdWUgKmxFbWl0QmluYXJ5QXJpdGgo QmluYXJ5RXhwcjo6T3Agb3AsIGxsdm06OlZhbHVlICp2YWx1ZTAsIGxsdgotICAgICAgICAgICAg IHJldHVybiBOVUxMOwotICAgICAgICAgfQotIAotLSAgICAgICAgcmV0dXJuIGN0eC0+QmluYXJ5 T3BlcmF0b3IoaW5zdCwgdmFsdWUwLCB2YWx1ZTEsIExMVk1HZXROYW1lKG9wTmFtZSwgdmFsdWUw LCB2YWx1ZTEpKTsKLSsgICAgICAgIHJldHVybiBjdHgtPkJpbmFyeU9wZXJhdG9yKGluc3QsIHZh bHVlMCwgdmFsdWUxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgobGx2 bTo6VHdpbmUob3BOYW1lKSArICJfIikgKyB2YWx1ZTAtPmdldE5hbWUoKSkgKyAiXyIpICsgdmFs dWUxLT5nZXROYW1lKCkpOwotICAgICB9Ci0gfQotIAotQEAgLTE1NjMsNyArMTU2NCw3IEBAIHN0 YXRpYyBsbHZtOjpWYWx1ZSAqbEVtaXRCaW5hcnlDbXAoQmluYXJ5RXhwcjo6T3Agb3AsIGxsdm06 OlZhbHVlICplMFZhbCwgbGx2bTo6Ci0gICAgIH0KLSAKLSAgICAgbGx2bTo6VmFsdWUgKmNtcCA9 IGN0eC0+Q21wSW5zdChpc0Zsb2F0T3AgPyBsbHZtOjpJbnN0cnVjdGlvbjo6RkNtcCA6IGxsdm06 Okluc3RydWN0aW9uOjpJQ21wLCBwcmVkLCBlMFZhbCwgZTFWYWwsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTExWTUdldE5hbWUob3BOYW1lLCBlMFZhbCwgZTFWYWwpKTsK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChsbHZtOjpUd2luZShvcE5h bWUpICsgIl8iKSArIGUwVmFsLT5nZXROYW1lKCkpICsgIl8iKSArIGUxVmFsLT5nZXROYW1lKCkp OwotICAgICAvLyBUaGlzIGlzIGEgbGl0dGxlIHVnbHk6IENtcEluc3QgcmV0dXJucyBpMSB2YWx1 ZXMsIGJ1dCB3ZSB1c2UgdmVjdG9ycwotICAgICAvLyBvZiBpMzJzIGZvciB2YXJ5aW5nIGJvb2wg dmFsdWVzOyB0eXBlIGNvbnZlcnQgdGhlIHJlc3VsdCBoZXJlIGlmCi0gICAgIC8vIG5lZWRlZC4K LUBAIC00MTc3LDcgKzQxNzgsNyBAQCBzdGF0aWMgbGx2bTo6VmFsdWUgKmxDb252ZXJ0VG9TbGlj ZVBvaW50ZXIoRnVuY3Rpb25FbWl0Q29udGV4dCAqY3R4LCBsbHZtOjpWYWx1ZQotICAgICAvLyBv ZmZzZXRzCi0gICAgIGxsdm06OlZhbHVlICpyZXN1bHQgPSBsbHZtOjpDb25zdGFudDo6Z2V0TnVs bFZhbHVlKHNsaWNlU3RydWN0VHlwZSk7Ci0gICAgIC8vIEFuZCByZXBsYWNlIHRoZSBwb2ludGVy IGluIHRoZSBzdHJ1Y3Qgd2l0aCB0aGUgZ2l2ZW4gcG9pbnRlcgotLSAgICByZXR1cm4gY3R4LT5J bnNlcnRJbnN0KHJlc3VsdCwgcHRyLCAwLCBMTFZNR2V0TmFtZShwdHIsICJfc2xpY2UiKSk7Ci0r ICAgIHJldHVybiBjdHgtPkluc2VydEluc3QocmVzdWx0LCBwdHIsIDAsIGxsdm06OlR3aW5lKHB0 ci0+Z2V0TmFtZSgpKSArICJfc2xpY2UiKTsKLSB9Ci0gCi0gLyoqIElmIHRoZSBnaXZlbiBhcnJh eSBpbmRleCBpcyBhIGNvbXBpbGUgdGltZSBjb25zdGFudCwgY2hlY2sgdG8gc2VlIGlmIGl0Ci1A QCAtNDI1OCw4ICs0MjU5LDggQEAgbGx2bTo6VmFsdWUgKkluZGV4RXhwcjo6R2V0TFZhbHVlKEZ1 bmN0aW9uRW1pdENvbnRleHQgKmN0eCkgY29uc3QgewotICAgICAgICAgLy8gQ29udmVydCB0byBh IHNsaWNlIHBvaW50ZXIgaWYgd2UncmUgaW5kZXhpbmcgaW50byBTT0EgZGF0YQotICAgICAgICAg YmFzZVB0clZhbHVlID0gbENvbnZlcnRQdHJUb1NsaWNlSWZOZWVkZWQoY3R4LCBiYXNlUHRyVmFs dWUsICZiYXNlRXhwclR5cGUpOwotIAotLSAgICAgICAgbGx2bTo6VmFsdWUgKnB0ciA9Ci0tICAg ICAgICAgICAgY3R4LT5HZXRFbGVtZW50UHRySW5zdChiYXNlUHRyVmFsdWUsIGluZGV4VmFsdWUs IGJhc2VFeHByVHlwZSwgTExWTUdldE5hbWUoYmFzZVB0clZhbHVlLCAiX29mZnNldCIpKTsKLSsg ICAgICAgIGxsdm06OlZhbHVlICpwdHIgPSBjdHgtPkdldEVsZW1lbnRQdHJJbnN0KGJhc2VQdHJW YWx1ZSwgaW5kZXhWYWx1ZSwgYmFzZUV4cHJUeXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHdpbmUoYmFzZVB0clZhbHVlLT5nZXRO YW1lKCkpICsgIl9vZmZzZXQiKTsKLSAgICAgICAgIHJldHVybiBsQWRkVmFyeWluZ09mZnNldHNJ Zk5lZWRlZChjdHgsIHB0ciwgR2V0TFZhbHVlVHlwZSgpKTsKLSAgICAgfQotIAotQEAgLTQyOTAs OCArNDI5MSw4IEBAIGxsdm06OlZhbHVlICpJbmRleEV4cHI6OkdldExWYWx1ZShGdW5jdGlvbkVt aXRDb250ZXh0ICpjdHgpIGNvbnN0IHsKLSAgICAgY3R4LT5TZXREZWJ1Z1Bvcyhwb3MpOwotIAot ICAgICAvLyBBbmQgZG8gdGhlIGFjdHVhbCBpbmRleGluZyBjYWxjdWxhdGlvbi4uCi0tICAgIGxs dm06OlZhbHVlICpwdHIgPQotLSAgICAgICAgY3R4LT5HZXRFbGVtZW50UHRySW5zdChiYXNlUHRy LCBMTFZNSW50MzIoMCksIGluZGV4VmFsdWUsIGJhc2VQdHJUeXBlLCBMTFZNR2V0TmFtZShiYXNl UHRyLCAiX29mZnNldCIpKTsKLSsgICAgbGx2bTo6VmFsdWUgKnB0ciA9IGN0eC0+R2V0RWxlbWVu dFB0ckluc3QoYmFzZVB0ciwgTExWTUludDMyKDApLCBpbmRleFZhbHVlLCBiYXNlUHRyVHlwZSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHdp bmUoYmFzZVB0ci0+Z2V0TmFtZSgpKSArICJfb2Zmc2V0Iik7Ci0gICAgIHJldHVybiBsQWRkVmFy eWluZ09mZnNldHNJZk5lZWRlZChjdHgsIHB0ciwgR2V0TFZhbHVlVHlwZSgpKTsKLSB9Ci0gCi1A QCAtNDc4OCwxNSArNDc4OSwxNCBAQCBsbHZtOjpWYWx1ZSAqVmVjdG9yTWVtYmVyRXhwcjo6R2V0 VmFsdWUoRnVuY3Rpb25FbWl0Q29udGV4dCAqY3R4KSBjb25zdCB7Ci0gICAgICAgICBmb3IgKHNp emVfdCBpID0gMDsgaSA8IGlkZW50aWZpZXIuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICBj aGFyIGlkU3RyWzJdID0ge2lkZW50aWZpZXJbaV0sICdcMCd9OwotICAgICAgICAgICAgIGxsdm06 OlZhbHVlICplbGVtZW50UHRyID0KLS0gICAgICAgICAgICAgICAgY3R4LT5BZGRFbGVtZW50T2Zm c2V0KGJhc2VQdHIsIGluZGljZXNbaV0sIGJhc2VQdHJUeXBlLCBMTFZNR2V0TmFtZShiYXNlUHRy LCBpZFN0cikpOwotKyAgICAgICAgICAgICAgICBjdHgtPkFkZEVsZW1lbnRPZmZzZXQoYmFzZVB0 ciwgaW5kaWNlc1tpXSwgYmFzZVB0clR5cGUsIGxsdm06OlR3aW5lKGJhc2VQdHItPmdldE5hbWUo KSkgKyBpZFN0cik7Ci0gICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmVsZW1lbnRWYWx1ZSA9IGN0 eC0+TG9hZEluc3QoZWxlbWVudFB0ciwgZWxlbWVudE1hc2ssIGVsZW1lbnRQdHJUeXBlKTsKLSAK LS0gICAgICAgICAgICBjb25zdCBjaGFyICpyZXN1bHROYW1lID0gTExWTUdldE5hbWUocmVzdWx0 UHRyLCBpZFN0cik7Ci0tICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnB0bXAgPSBjdHgtPkFkZEVs ZW1lbnRPZmZzZXQocmVzdWx0UHRyLCBpLCBOVUxMLCByZXN1bHROYW1lKTsKLSsgICAgICAgICAg ICBsbHZtOjpWYWx1ZSAqcHRtcCA9IGN0eC0+QWRkRWxlbWVudE9mZnNldChyZXN1bHRQdHIsIGks IE5VTEwsIGxsdm06OlR3aW5lKHJlc3VsdFB0ci0+Z2V0TmFtZSgpKSArIGlkU3RyKTsKLSAgICAg ICAgICAgICBjdHgtPlN0b3JlSW5zdChlbGVtZW50VmFsdWUsIHB0bXAsIGVsZW1lbnRQdHJUeXBl LCBleHByLT5HZXRUeXBlKCktPklzVW5pZm9ybVR5cGUoKSk7Ci0gICAgICAgICB9Ci0gCi0tICAg ICAgICByZXR1cm4gY3R4LT5Mb2FkSW5zdChyZXN1bHRQdHIsIG1lbWJlclR5cGUsIExMVk1HZXRO YW1lKGJhc2VQdHIsICJfc3dpenpsZSIpKTsKLSsgICAgICAgIHJldHVybiBjdHgtPkxvYWRJbnN0 KHJlc3VsdFB0ciwgbWVtYmVyVHlwZSwgbGx2bTo6VHdpbmUoYmFzZVB0ci0+Z2V0TmFtZSgpKSAr ICJfc3dpenpsZSIpOwotICAgICB9Ci0gfQotIAotQEAgLTQ5MzIsNyArNDkzMiw3IEBAIGxsdm06 OlZhbHVlICpNZW1iZXJFeHByOjpHZXRWYWx1ZShGdW5jdGlvbkVtaXRDb250ZXh0ICpjdHgpIGNv bnN0IHsKLSAKLSAgICAgY3R4LT5TZXREZWJ1Z1Bvcyhwb3MpOwotICAgICBzdGQ6OnN0cmluZyBz dWZmaXggPSBzdGQ6OnN0cmluZygiXyIpICsgaWRlbnRpZmllcjsKLS0gICAgcmV0dXJuIGN0eC0+ TG9hZEluc3QobHZhbHVlLCBtYXNrLCBsdmFsdWVUeXBlLCBMTFZNR2V0TmFtZShsdmFsdWUsIHN1 ZmZpeC5jX3N0cigpKSk7Ci0rICAgIHJldHVybiBjdHgtPkxvYWRJbnN0KGx2YWx1ZSwgbWFzaywg bHZhbHVlVHlwZSwgbGx2bTo6VHdpbmUobHZhbHVlLT5nZXROYW1lKCkpICsgc3VmZml4KTsKLSB9 Ci0gCi0gY29uc3QgVHlwZSAqTWVtYmVyRXhwcjo6R2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIE5V TEw7IH0KLUBAIC02NTAyLDcgKzY1MDIsNyBAQCBzdGF0aWMgbGx2bTo6VmFsdWUgKmxUeXBlQ29u dkF0b21pYyhGdW5jdGlvbkVtaXRDb250ZXh0ICpjdHgsIGxsdm06OlZhbHVlICpleHByVgotICAg ICAgICAgICAgICAgICAvLyBkb2VzIGZvciBldmVyeW9uZSBlbHNlLi4uCi0gICAgICAgICAgICAg ICAgIEFzc2VydChjYXN0KTsKLSAgICAgICAgICAgICAgICAgY2FzdCA9IGN0eC0+U3dpdGNoQm9v bFNpemUoY2FzdCwgTExWTVR5cGVzOjpCb29sVmVjdG9yVHlwZS0+Z2V0RWxlbWVudFR5cGUoKSwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTUdldE5hbWUo Y2FzdCwgInRvX2lfYm9vbCIpKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGx2bTo6VHdpbmUoY2FzdC0+Z2V0TmFtZSgpKSArICJ0b19pX2Jvb2wiKTsKLSAg ICAgICAgICAgICB9Ci0gICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgIC8vIGZyb21UeXBl LT5Jc1ZhcnlpbmdUeXBlKCkpCi1AQCAtODI0Niw3ICs4MjQ2LDcgQEAgbGx2bTo6VmFsdWUgKk5l d0V4cHI6OkdldFZhbHVlKEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0eCkgY29uc3QgewotICAgICAg ICAgLy8gcG9pbnRlciBvZiB0aGUgcmV0dXJuIHR5cGUgYW5kIHRvIHJ1biB0aGUgY29kZSBmb3Ig aW5pdGlhbGl6ZXJzLAotICAgICAgICAgLy8gaWYgcHJlc2VudC4KLSAgICAgICAgIGxsdm06OlR5 cGUgKnB0clR5cGUgPSByZXRUeXBlLT5MTFZNVHlwZShnLT5jdHgpOwotLSAgICAgICAgcHRyVmFs dWUgPSBjdHgtPkJpdENhc3RJbnN0KHB0clZhbHVlLCBwdHJUeXBlLCBMTFZNR2V0TmFtZShwdHJW YWx1ZSwgIl9jYXN0X3B0ciIpKTsKLSsgICAgICAgIHB0clZhbHVlID0gY3R4LT5CaXRDYXN0SW5z dChwdHJWYWx1ZSwgcHRyVHlwZSwgbGx2bTo6VHdpbmUocHRyVmFsdWUtPmdldE5hbWUoKSkgKyAi X2Nhc3RfcHRyIik7Ci0gCi0gICAgICAgICBpZiAoaW5pdEV4cHIgIT0gTlVMTCkKLSAgICAgICAg ICAgICBJbml0U3ltYm9sKHB0clZhbHVlLCBhbGxvY1R5cGUsIGluaXRFeHByLCBjdHgsIHBvcyk7 Ci1kaWZmIC0tZ2l0IGEvc3JjL2xsdm11dGlsLmNwcCBiL3NyYy9sbHZtdXRpbC5jcHAKLWluZGV4 IDk3MDE3NWRiZi4uZDBiZWNiOWY1IDEwMDY0NAotLS0tIGEvc3JjL2xsdm11dGlsLmNwcAotKysr IGIvc3JjL2xsdm11dGlsLmNwcAotQEAgLTE2MDUsMjMgKzE2MDUsNiBAQCBsbHZtOjpWYWx1ZSAq TExWTVNodWZmbGVWZWN0b3JzKGxsdm06OlZhbHVlICp2MSwgbGx2bTo6VmFsdWUgKnYyLCBpbnQz Ml90IHNodWZbXQotICAgICByZXR1cm4gbmV3IGxsdm06OlNodWZmbGVWZWN0b3JJbnN0KHYxLCB2 MiwgdmVjLCAic2h1ZmZsZSIsIGluc2VydEJlZm9yZSk7Ci0gfQotIAotLWNvbnN0IGNoYXIgKkxM Vk1HZXROYW1lKGxsdm06OlZhbHVlICp2LCBjb25zdCBjaGFyICpzKSB7Ci0tICAgIGlmICh2ID09 IE5VTEwpCi0tICAgICAgICByZXR1cm4gczsKLS0gICAgc3RkOjpzdHJpbmcgcmV0ID0gc3RkOjpz dHJpbmcodi0+Z2V0TmFtZSgpKTsKLS0gICAgcmV0ICs9IHM7Ci0tICAgIHJldHVybiBzdHJkdXAo cmV0LmNfc3RyKCkpOwotLX0KLS0KLS1jb25zdCBjaGFyICpMTFZNR2V0TmFtZShjb25zdCBjaGFy ICpvcCwgbGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1ZSAqdjIpIHsKLS0gICAgc3RkOjpzdHJp bmcgciA9IG9wOwotLSAgICByICs9ICJfIjsKLS0gICAgciArPSB2MS0+Z2V0TmFtZSgpLnN0cigp OwotLSAgICByICs9ICJfIjsKLS0gICAgciArPSB2Mi0+Z2V0TmFtZSgpLnN0cigpOwotLSAgICBy ZXR1cm4gc3RyZHVwKHIuY19zdHIoKSk7Ci0tfQotLQotICNpZmRlZiBJU1BDX0dFTlhfRU5BQkxF RAotIGJvb2wgbElzU1ZNTG9hZChsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCkgewotICAgICBBc3Nl cnQoaW5zdCk7Ci1kaWZmIC0tZ2l0IGEvc3JjL2xsdm11dGlsLmggYi9zcmMvbGx2bXV0aWwuaAot aW5kZXggNDJjY2U0ZDgzLi4wN2QwODliYjQgMTAwNjQ0Ci0tLS0gYS9zcmMvbGx2bXV0aWwuaAot KysrIGIvc3JjL2xsdm11dGlsLmgKLUBAIC0zMjgsMTEgKzMyOCw2IEBAIGV4dGVybiBsbHZtOjpW YWx1ZSAqTExWTUNvbmNhdFZlY3RvcnMobGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1ZSAqdjIs IGxsdm06OkluCi0gZXh0ZXJuIGxsdm06OlZhbHVlICpMTFZNU2h1ZmZsZVZlY3RvcnMobGx2bTo6 VmFsdWUgKnYxLCBsbHZtOjpWYWx1ZSAqdjIsIGludDMyX3Qgc2h1ZltdLCBpbnQgc2h1ZlNpemUs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rp b24gKmluc2VydEJlZm9yZSk7Ci0gCi0tLyoqIFV0aWxpdHkgcm91dGluZXMgdG8gY29uY2F0IHN0 cmluZ3Mgd2l0aCB0aGUgbmFtZXMgb2YgZXhpc3RpbmcgdmFsdWVzIHRvCi0tICAgIGNyZWF0ZSBt ZWFuaW5nZnVsIG5ldyBuYW1lcyBmb3IgaW5zdHJ1Y3Rpb24gdmFsdWVzLgotLSovCi0tZXh0ZXJu IGNvbnN0IGNoYXIgKkxMVk1HZXROYW1lKGxsdm06OlZhbHVlICp2LCBjb25zdCBjaGFyICopOwot LWV4dGVybiBjb25zdCBjaGFyICpMTFZNR2V0TmFtZShjb25zdCBjaGFyICpvcCwgbGx2bTo6VmFs dWUgKnYxLCBsbHZtOjpWYWx1ZSAqdjIpOwotICNpZmRlZiBJU1BDX0dFTlhfRU5BQkxFRAotIGVu dW0gQWRkcmVzc1NwYWNlIHsgTG9jYWwsIEdsb2JhbCwgRXh0ZXJuYWwgfTsKLSAKLWRpZmYgLS1n aXQgYS9zcmMvb3B0LmNwcCBiL3NyYy9vcHQuY3BwCi1pbmRleCA1YjFhYzdiNjMuLjlkNmNhZTA1 OCAxMDA2NDQKLS0tLSBhL3NyYy9vcHQuY3BwCi0rKysgYi9zcmMvb3B0LmNwcAotQEAgLTI1Nyw3 ICsyNTcsNyBAQCBzdGF0aWMgYm9vbCBsR2V0U291cmNlUG9zRnJvbU1ldGFkYXRhKGNvbnN0IGxs dm06Okluc3RydWN0aW9uICppbnN0LCBTb3VyY2VQb3MgKgotICAgICByZXR1cm4gdHJ1ZTsKLSB9 Ci0gCi0tc3RhdGljIGxsdm06Okluc3RydWN0aW9uICpsQ2FsbEluc3QobGx2bTo6RnVuY3Rpb24g KmZ1bmMsIGxsdm06OlZhbHVlICphcmcwLCBsbHZtOjpWYWx1ZSAqYXJnMSwgY29uc3QgY2hhciAq bmFtZSwKLStzdGF0aWMgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxDYWxsSW5zdChsbHZtOjpGdW5jdGlv biAqZnVuYywgbGx2bTo6VmFsdWUgKmFyZzAsIGxsdm06OlZhbHVlICphcmcxLCBjb25zdCBsbHZt OjpUd2luZSAmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZt OjpJbnN0cnVjdGlvbiAqaW5zZXJ0QmVmb3JlID0gTlVMTCkgewotICAgICBsbHZtOjpWYWx1ZSAq YXJnc1syXSA9IHthcmcwLCBhcmcxfTsKLSAgICAgbGx2bTo6QXJyYXlSZWY8bGx2bTo6VmFsdWUg Kj4gbmV3QXJnQXJyYXkoJmFyZ3NbMF0sICZhcmdzWzJdKTsKLUBAIC0yNjUsMjEgKzI2NSwyMiBA QCBzdGF0aWMgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxDYWxsSW5zdChsbHZtOjpGdW5jdGlvbiAqZnVu YywgbGx2bTo6VmFsdWUgKmFyZzAsIGxsdgotIH0KLSAKLSBzdGF0aWMgbGx2bTo6SW5zdHJ1Y3Rp b24gKmxDYWxsSW5zdChsbHZtOjpGdW5jdGlvbiAqZnVuYywgbGx2bTo6VmFsdWUgKmFyZzAsIGxs dm06OlZhbHVlICphcmcxLCBsbHZtOjpWYWx1ZSAqYXJnMiwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCBsbHZtOjpJbnN0cnVjdGlvbiAqaW5z ZXJ0QmVmb3JlID0gTlVMTCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGxsdm06OlR3aW5lICZuYW1lLCBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zZXJ0QmVmb3Jl ID0gTlVMTCkgewotICAgICBsbHZtOjpWYWx1ZSAqYXJnc1szXSA9IHthcmcwLCBhcmcxLCBhcmcy fTsKLSAgICAgbGx2bTo6QXJyYXlSZWY8bGx2bTo6VmFsdWUgKj4gbmV3QXJnQXJyYXkoJmFyZ3Nb MF0sICZhcmdzWzNdKTsKLSAgICAgcmV0dXJuIGxsdm06OkNhbGxJbnN0OjpDcmVhdGUoZnVuYywg bmV3QXJnQXJyYXksIG5hbWUsIGluc2VydEJlZm9yZSk7Ci0gfQotIAotIHN0YXRpYyBsbHZtOjpJ bnN0cnVjdGlvbiAqbENhbGxJbnN0KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAq YXJnMCwgbGx2bTo6VmFsdWUgKmFyZzEsIGxsdm06OlZhbHVlICphcmcyLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICphcmczLCBjb25zdCBjaGFyICpu YW1lLCBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zZXJ0QmVmb3JlID0gTlVMTCkgewotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICphcmczLCBjb25zdCBsbHZt OjpUd2luZSAmbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZt OjpJbnN0cnVjdGlvbiAqaW5zZXJ0QmVmb3JlID0gTlVMTCkgewotICAgICBsbHZtOjpWYWx1ZSAq YXJnc1s0XSA9IHthcmcwLCBhcmcxLCBhcmcyLCBhcmczfTsKLSAgICAgbGx2bTo6QXJyYXlSZWY8 bGx2bTo6VmFsdWUgKj4gbmV3QXJnQXJyYXkoJmFyZ3NbMF0sICZhcmdzWzRdKTsKLSAgICAgcmV0 dXJuIGxsdm06OkNhbGxJbnN0OjpDcmVhdGUoZnVuYywgbmV3QXJnQXJyYXksIG5hbWUsIGluc2Vy dEJlZm9yZSk7Ci0gfQotIAotIHN0YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0KGxs dm06OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFsdWUgKmFyZzEs IGxsdm06OlZhbHVlICphcmcyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxsdm06OlZhbHVlICphcmczLCBsbHZtOjpWYWx1ZSAqYXJnNCwgY29uc3QgY2hhciAqbmFtZSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqYXJnMywg bGx2bTo6VmFsdWUgKmFyZzQsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICppbnNlcnRCZWZvcmUg PSBOVUxMKSB7Ci0gICAgIGxsdm06OlZhbHVlICphcmdzWzVdID0ge2FyZzAsIGFyZzEsIGFyZzIs IGFyZzMsIGFyZzR9OwotICAgICBsbHZtOjpBcnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBuZXdBcmdB cnJheSgmYXJnc1swXSwgJmFyZ3NbNV0pOwotQEAgLTI4Nyw3ICsyODgsNyBAQCBzdGF0aWMgbGx2 bTo6SW5zdHJ1Y3Rpb24gKmxDYWxsSW5zdChsbHZtOjpGdW5jdGlvbiAqZnVuYywgbGx2bTo6VmFs dWUgKmFyZzAsIGxsdgotIH0KLSAKLSBzdGF0aWMgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxDYWxsSW5z dChsbHZtOjpGdW5jdGlvbiAqZnVuYywgbGx2bTo6VmFsdWUgKmFyZzAsIGxsdm06OlZhbHVlICph cmcxLCBsbHZtOjpWYWx1ZSAqYXJnMiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsbHZtOjpWYWx1ZSAqYXJnMywgbGx2bTo6VmFsdWUgKmFyZzQsIGxsdm06OlZhbHVlICph cmc1LCBjb25zdCBjaGFyICpuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxsdm06OlZhbHVlICphcmczLCBsbHZtOjpWYWx1ZSAqYXJnNCwgbGx2bTo6VmFsdWUgKmFy ZzUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0gICAg IGxsdm06OlZhbHVlICphcmdzWzZdID0ge2FyZzAsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFy ZzV9OwotICAgICBsbHZtOjpBcnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBuZXdBcmdBcnJheSgmYXJn c1swXSwgJmFyZ3NbNl0pOwotQEAgLTk5MSwyMyArOTkyLDI0IEBAIGJvb2wgSW50cmluc2ljc09w dDo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gICAgICAgICAgICAg ICAgIGxsdm06OlR5cGUgKnJldHVyblR5cGUgPSBjYWxsSW5zdC0+Z2V0VHlwZSgpOwotICAgICAg ICAgICAgICAgICBBc3NlcnQobGx2bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KHJldHVyblR5cGUp KTsKLSAgICAgICAgICAgICAgICAgLy8gY2FzdCB0aGUgaTggKiB0byB0aGUgYXBwcm9wcmlhdGUg dHlwZQotLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gTExWTUdldE5hbWUoY2Fs bEluc3QtPmdldEFyZ09wZXJhbmQoMCksICJfY2FzdCIpOwotLSAgICAgICAgICAgICAgICBsbHZt OjpWYWx1ZSAqY2FzdFB0ciA9IG5ldyBsbHZtOjpCaXRDYXN0SW5zdChjYWxsSW5zdC0+Z2V0QXJn T3BlcmFuZCgwKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGx2bTo6UG9pbnRlclR5cGU6OmdldChyZXR1cm5UeXBlLCAwKSwg bmFtZSwgY2FsbEluc3QpOwotKyAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqY2FzdFB0ciA9 Ci0rICAgICAgICAgICAgICAgICAgICBuZXcgbGx2bTo6Qml0Q2FzdEluc3QoY2FsbEluc3QtPmdl dEFyZ09wZXJhbmQoMCksIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQocmV0dXJuVHlwZSwgMCksCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHdpbmUoY2Fs bEluc3QtPmdldEFyZ09wZXJhbmQoMCktPmdldE5hbWUoKSkgKyAiX2Nhc3QiLCBjYWxsSW5zdCk7 Ci0gICAgICAgICAgICAgICAgIGxDb3B5TWV0YWRhdGEoY2FzdFB0ciwgY2FsbEluc3QpOwotICAg ICAgICAgICAgICAgICBpbnQgYWxpZ247Ci0gICAgICAgICAgICAgICAgIGlmIChnLT5vcHQuZm9y Y2VBbGlnbmVkTWVtb3J5KQotICAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBnLT50YXJnZXQt PmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpOwotICAgICAgICAgICAgICAgICBlbHNlCi0gICAg ICAgICAgICAgICAgICAgICBhbGlnbiA9IGNhbGxJbnN0LT5nZXRDYWxsZWRGdW5jdGlvbigpID09 IGF2eE1hc2tlZExvYWQzMiA/IDQgOiA4OwotLSAgICAgICAgICAgICAgICBuYW1lID0gTExWTUdl dE5hbWUoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQoMCksICJfbG9hZCIpOwotICNpZiBJU1BDX0xM Vk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTBfMAotLSAgICAgICAgICAgICAgICBsbHZtOjpJbnN0 cnVjdGlvbiAqbG9hZEluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3QoY2FzdFB0ciwgbmFtZSwgZmFs c2UgLyogbm90IHZvbGF0aWxlICovLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6TWF5YmVBbGlnbihhbGlnbiks IChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotKyAgICAgICAgICAgICAgICBsbHZtOjpJbnN0 cnVjdGlvbiAqbG9hZEluc3QgPQotKyAgICAgICAgICAgICAgICAgICAgbmV3IGxsdm06OkxvYWRJ bnN0KGNhc3RQdHIsIGxsdm06OlR3aW5lKGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5kKDApLT5nZXRO YW1lKCkpICsgIl9sb2FkIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sIGxsdm06Ok1heWJlQWxpZ24oYWxpZ24pLCAobGx2 bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSAjZWxzZQotICAgICAgICAgICAgICAgICBsbHZtOjpJ bnN0cnVjdGlvbiAqbG9hZEluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3QoCi0tICAgICAgICAgICAg ICAgICAgICBsbHZtOjpkeW5fY2FzdDxsbHZtOjpQb2ludGVyVHlwZT4oY2FzdFB0ci0+Z2V0VHlw ZSgpKS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIGNhc3RQdHIsIG5hbWUsCi0tICAgICAgICAg ICAgICAgICAgICBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sIGxsdm06Ok1heWJlQWxpZ24oYWxp Z24pLnZhbHVlT3JPbmUoKSwgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0rICAgICAgICAg ICAgICAgICAgICBsbHZtOjpkeW5fY2FzdDxsbHZtOjpQb2ludGVyVHlwZT4oY2FzdFB0ci0+Z2V0 VHlwZSgpKS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIGNhc3RQdHIsCi0rICAgICAgICAgICAg ICAgICAgICBsbHZtOjpUd2luZShjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKS0+Z2V0TmFtZSgp KSArICJfbG9hZCIsIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywKLSsgICAgICAgICAgICAgICAg ICAgIGxsdm06Ok1heWJlQWxpZ24oYWxpZ24pLnZhbHVlT3JPbmUoKSwgKGxsdm06Okluc3RydWN0 aW9uICopTlVMTCk7Ci0gI2VuZGlmCi0gICAgICAgICAgICAgICAgIGxDb3B5TWV0YWRhdGEobG9h ZEluc3QsIGNhbGxJbnN0KTsKLSAgICAgICAgICAgICAgICAgbGx2bTo6UmVwbGFjZUluc3RXaXRo SW5zdChjYWxsSW5zdCwgbG9hZEluc3QpOwotQEAgLTEwMjgsOSArMTAzMCw5IEBAIGJvb2wgSW50 cmluc2ljc09wdDo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gICAg ICAgICAgICAgICAgIC8vIGFsbCBsYW5lcyBzdG9yaW5nLCBzbyByZXBsYWNlIHdpdGggYSByZWd1 bGFyIHN0b3JlCi0gICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICpydmFsdWUgPSBjYWxsSW5z dC0+Z2V0QXJnT3BlcmFuZCgyKTsKLSAgICAgICAgICAgICAgICAgbGx2bTo6VHlwZSAqc3RvcmVU eXBlID0gcnZhbHVlLT5nZXRUeXBlKCk7Ci0tICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5h bWUgPSBMTFZNR2V0TmFtZShjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKSwgIl9wdHJjYXN0Iik7 Ci0tICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICpjYXN0UHRyID0gbmV3IGxsdm06OkJpdENh c3RJbnN0KGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5kKDApLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpQb2ludGVyVHlw ZTo6Z2V0KHN0b3JlVHlwZSwgMCksIG5hbWUsIGNhbGxJbnN0KTsKLSsgICAgICAgICAgICAgICAg bGx2bTo6VmFsdWUgKmNhc3RQdHIgPQotKyAgICAgICAgICAgICAgICAgICAgbmV3IGxsdm06OkJp dENhc3RJbnN0KGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5kKDApLCBsbHZtOjpQb2ludGVyVHlwZTo6 Z2V0KHN0b3JlVHlwZSwgMCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGx2bTo6VHdpbmUoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQoMCktPmdldE5hbWUoKSkg KyAiX3B0cmNhc3QiLCBjYWxsSW5zdCk7Ci0gICAgICAgICAgICAgICAgIGxDb3B5TWV0YWRhdGEo Y2FzdFB0ciwgY2FsbEluc3QpOwotIAotICAgICAgICAgICAgICAgICBpbnQgYWxpZ247Ci1AQCAt MTMzOSw4ICsxMzQxLDggQEAgc3RhdGljIGxsdm06OlZhbHVlICpsR2V0QmFzZVBvaW50ZXIobGx2 bTo6VmFsdWUgKnYsIGxsdm06Okluc3RydWN0aW9uICppbnNlcnRCZWYKLSAgICAgICAgIGlmICh0 ID09IE5VTEwpIHsKLSAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgIH0gZWxzZSB7 Ci0tICAgICAgICAgICAgcmV0dXJuIGxsdm06OkNhc3RJbnN0OjpDcmVhdGUoY2ktPmdldE9wY29k ZSgpLCB0LCBjaS0+Z2V0VHlwZSgpLT5nZXRTY2FsYXJUeXBlKCksIExMVk1HZXROYW1lKHQsICJf Y2FzdCIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2Vy dEJlZm9yZSk7Ci0rICAgICAgICAgICAgcmV0dXJuIGxsdm06OkNhc3RJbnN0OjpDcmVhdGUoY2kt PmdldE9wY29kZSgpLCB0LCBjaS0+Z2V0VHlwZSgpLT5nZXRTY2FsYXJUeXBlKCksCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHdpbmUodC0+Z2V0TmFt ZSgpKSArICJfY2FzdCIsIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICB9Ci0gICAgIH0KLSAKLUBA IC0xNTgzLDEzICsxNTg1LDEzIEBAIHN0YXRpYyB2b2lkIGxFeHRyYWN0Q29uc3RhbnRPZmZzZXQo bGx2bTo6VmFsdWUgKnZlYywgbGx2bTo6VmFsdWUgKipjb25zdE9mZnNldCwKLSAgICAgICAgIGlm IChjbyA9PSBOVUxMKQotICAgICAgICAgICAgICpjb25zdE9mZnNldCA9IE5VTEw7Ci0gICAgICAg ICBlbHNlCi0tICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0KLS0gICAgICAgICAgICAgICAgbGx2 bTo6Q2FzdEluc3Q6OkNyZWF0ZShjYXN0LT5nZXRPcGNvZGUoKSwgY28sIGNhc3QtPmdldFR5cGUo KSwgTExWTUdldE5hbWUoY28sICJfY2FzdCIpLCBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAg ICpjb25zdE9mZnNldCA9IGxsdm06OkNhc3RJbnN0OjpDcmVhdGUoY2FzdC0+Z2V0T3Bjb2RlKCks IGNvLCBjYXN0LT5nZXRUeXBlKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZShjby0+Z2V0TmFtZSgpKSArICJfY2FzdCIsIGlu c2VydEJlZm9yZSk7Ci0gICAgICAgICBpZiAodm8gPT0gTlVMTCkKLSAgICAgICAgICAgICAqdmFy aWFibGVPZmZzZXQgPSBOVUxMOwotICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICp2YXJpYWJs ZU9mZnNldCA9Ci0tICAgICAgICAgICAgICAgIGxsdm06OkNhc3RJbnN0OjpDcmVhdGUoY2FzdC0+ Z2V0T3Bjb2RlKCksIHZvLCBjYXN0LT5nZXRUeXBlKCksIExMVk1HZXROYW1lKHZvLCAiX2Nhc3Qi KSwgaW5zZXJ0QmVmb3JlKTsKLSsgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSBsbHZtOjpD YXN0SW5zdDo6Q3JlYXRlKGNhc3QtPmdldE9wY29kZSgpLCB2bywgY2FzdC0+Z2V0VHlwZSgpLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2 bTo6VHdpbmUodm8tPmdldE5hbWUoKSkgKyAiX2Nhc3QiLCBpbnNlcnRCZWZvcmUpOwotICAgICAg ICAgcmV0dXJuOwotICAgICB9Ci0gCi1AQCAtMTYwOCwxNiArMTYxMCwxOCBAQCBzdGF0aWMgdm9p ZCBsRXh0cmFjdENvbnN0YW50T2Zmc2V0KGxsdm06OlZhbHVlICp2ZWMsIGxsdm06OlZhbHVlICoq Y29uc3RPZmZzZXQsCi0gICAgICAgICAgICAgZWxzZSBpZiAoYzEgPT0gTlVMTCB8fCBsbHZtOjpp c2E8bGx2bTo6Q29uc3RhbnRBZ2dyZWdhdGVaZXJvPihjMSkpCi0gICAgICAgICAgICAgICAgICpj b25zdE9mZnNldCA9IGMwOwotICAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgKmNv bnN0T2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlv bjo6QWRkLCBjMCwgYzEsIExMVk1HZXROYW1lKCJhZGQiLCBjMCwgYzEpLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydEJl Zm9yZSk7Ci0rICAgICAgICAgICAgICAgICpjb25zdE9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJh dG9yOjpDcmVhdGUoCi0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbjo6QWRk LCBjMCwgYzEsICgobGx2bTo6VHdpbmUoImFkZF8iKSArIGMwLT5nZXROYW1lKCkpICsgIl8iKSAr IGMxLT5nZXROYW1lKCksCi0rICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotIAot ICAgICAgICAgICAgIGlmICh2MCA9PSBOVUxMIHx8IGxsdm06OmlzYTxsbHZtOjpDb25zdGFudEFn Z3JlZ2F0ZVplcm8+KHYwKSkKLSAgICAgICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gdjE7 Ci0gICAgICAgICAgICAgZWxzZSBpZiAodjEgPT0gTlVMTCB8fCBsbHZtOjppc2E8bGx2bTo6Q29u c3RhbnRBZ2dyZWdhdGVaZXJvPih2MSkpCi0gICAgICAgICAgICAgICAgICp2YXJpYWJsZU9mZnNl dCA9IHYwOwotICAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgKnZhcmlhYmxlT2Zm c2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6QWRk LCB2MCwgdjEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTExWTUdldE5hbWUoImFkZCIsIHYwLCB2MSksIGluc2VydEJlZm9y ZSk7Ci0rICAgICAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJh dG9yOjpDcmVhdGUoCi0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbjo6QWRk LCB2MCwgdjEsICgobGx2bTo6VHdpbmUoImFkZF8iKSArIHYwLT5nZXROYW1lKCkpICsgIl8iKSAr IHYxLT5nZXROYW1lKCksCi0rICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotICAg ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0gZWxzZSBpZiAoYm9wLT5nZXRPcGNvZGUoKSA9 PSBsbHZtOjpJbnN0cnVjdGlvbjo6U2hsKSB7Ci0gICAgICAgICAgICAgbEV4dHJhY3RDb25zdGFu dE9mZnNldChvcDAsICZjMCwgJnYwLCBpbnNlcnRCZWZvcmUpOwotQEAgLTE2MzMsMTAgKzE2Mzcs MTIgQEAgc3RhdGljIHZvaWQgbEV4dHJhY3RDb25zdGFudE9mZnNldChsbHZtOjpWYWx1ZSAqdmVj LCBsbHZtOjpWYWx1ZSAqKmNvbnN0T2Zmc2V0LAotICAgICAgICAgICAgICAgICAqY29uc3RPZmZz ZXQgPSB2ZWM7Ci0gICAgICAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9IE5VTEw7Ci0gICAg ICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gbGx2bTo6 QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6U2hsLCBjMCwgYzEsIExM Vk1HZXROYW1lKCJzaGwiLCBjMCwgYzEpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0tICAgICAgICAg ICAgICAgICp2YXJpYWJsZU9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2 bTo6SW5zdHJ1Y3Rpb246OlNobCwgdjAsIGMxLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1HZXROYW1lKCJzaGwiLCB2 MCwgYzEpLCBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAgICAgICAqY29uc3RPZmZzZXQgPSBs bHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKAotKyAgICAgICAgICAgICAgICAgICAgbGx2bTo6 SW5zdHJ1Y3Rpb246OlNobCwgYzAsIGMxLCAoKGxsdm06OlR3aW5lKCJzaGxfIikgKyBjMC0+Z2V0 TmFtZSgpKSArICJfIikgKyBjMS0+Z2V0TmFtZSgpLAotKyAgICAgICAgICAgICAgICAgICAgaW5z ZXJ0QmVmb3JlKTsKLSsgICAgICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gbGx2bTo6Qmlu YXJ5T3BlcmF0b3I6OkNyZWF0ZSgKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0 aW9uOjpTaGwsIHYwLCBjMSwgKChsbHZtOjpUd2luZSgic2hsXyIpICsgdjAtPmdldE5hbWUoKSkg KyAiXyIpICsgYzEtPmdldE5hbWUoKSwKLSsgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9y ZSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0gZWxz ZSBpZiAoYm9wLT5nZXRPcGNvZGUoKSA9PSBsbHZtOjpJbnN0cnVjdGlvbjo6TXVsKSB7Ci1AQCAt MTY0OCwyNSArMTY1NCwzMCBAQCBzdGF0aWMgdm9pZCBsRXh0cmFjdENvbnN0YW50T2Zmc2V0KGxs dm06OlZhbHVlICp2ZWMsIGxsdm06OlZhbHVlICoqY29uc3RPZmZzZXQsCi0gICAgICAgICAgICAg Ly8gTm90ZSB0aGF0IHRoZSBmaXJzdCB0ZXJtIGlzIGEgY29uc3RhbnQgYW5kIHRoZSBsYXN0IHRo cmVlIGFyZQotICAgICAgICAgICAgIC8vIHZhcmlhYmxlLgotICAgICAgICAgICAgIGlmIChjMCAh PSBOVUxMICYmIGMxICE9IE5VTEwpCi0tICAgICAgICAgICAgICAgICpjb25zdE9mZnNldCA9IGxs dm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgYzAsIGMx LCBMTFZNR2V0TmFtZSgibXVsIiwgYzAsIGMxKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotKyAgICAg ICAgICAgICAgICAqY29uc3RPZmZzZXQgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKAot KyAgICAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgYzAsIGMxLCAoKGxs dm06OlR3aW5lKCJtdWxfIikgKyBjMC0+Z2V0TmFtZSgpKSArICJfIikgKyBjMS0+Z2V0TmFtZSgp LAotKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgICAgICBlbHNl Ci0gICAgICAgICAgICAgICAgICpjb25zdE9mZnNldCA9IE5VTEw7Ci0gCi0gICAgICAgICAgICAg bGx2bTo6VmFsdWUgKnZhID0gTlVMTCwgKnZiID0gTlVMTCwgKnZjID0gTlVMTDsKLSAgICAgICAg ICAgICBpZiAodjAgIT0gTlVMTCAmJiBjMSAhPSBOVUxMKQotLSAgICAgICAgICAgICAgICB2YSA9 IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgdjAs IGMxLCBMTFZNR2V0TmFtZSgibXVsIiwgdjAsIGMxKSwKLSsgICAgICAgICAgICAgICAgdmEgPSBs bHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpNdWwsIHYwLCBj MSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgo bGx2bTo6VHdpbmUoIm11bF8iKSArIHYwLT5nZXROYW1lKCkpICsgIl8iKSArIGMxLT5nZXROYW1l KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnNlcnRCZWZvcmUpOwotICAgICAgICAgICAgIGlmIChjMCAhPSBOVUxMICYmIHYxICE9IE5VTEwp Ci0tICAgICAgICAgICAgICAgIHZiID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZt OjpJbnN0cnVjdGlvbjo6TXVsLCBjMCwgdjEsIExMVk1HZXROYW1lKCJtdWwiLCBjMCwgdjEpLAot KyAgICAgICAgICAgICAgICB2YiA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6 SW5zdHJ1Y3Rpb246Ok11bCwgYzAsIHYxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKChsbHZtOjpUd2luZSgibXVsXyIpICsgYzAtPmdldE5hbWUo KSkgKyAiXyIpICsgdjEtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICAgICAgaWYgKHYw ICE9IE5VTEwgJiYgdjEgIT0gTlVMTCkKLS0gICAgICAgICAgICAgICAgdmMgPSBsbHZtOjpCaW5h cnlPcGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpNdWwsIHYwLCB2MSwgTExWTUdl dE5hbWUoIm11bCIsIHYwLCB2MSksCi0rICAgICAgICAgICAgICAgIHZjID0gbGx2bTo6QmluYXJ5 T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6TXVsLCB2MCwgdjEsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxsdm06OlR3aW5l KCJtdWxfIikgKyB2MC0+Z2V0TmFtZSgpKSArICJfIikgKyB2MS0+Z2V0TmFtZSgpLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3Jl KTsKLSAKLSAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqdmFiID0gTlVMTDsKLSAgICAgICAgICAg ICBpZiAodmEgIT0gTlVMTCAmJiB2YiAhPSBOVUxMKQotLSAgICAgICAgICAgICAgICB2YWIgPSBs bHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpBZGQsIHZhLCB2 YiwgTExWTUdldE5hbWUoImFkZCIsIHZhLCB2YiksCi0rICAgICAgICAgICAgICAgIHZhYiA9IGxs dm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246OkFkZCwgdmEsIHZi LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgo bGx2bTo6VHdpbmUoImFkZF8iKSArIHZhLT5nZXROYW1lKCkpICsgIl8iKSArIHZiLT5nZXROYW1l KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgICAgICBlbHNlIGlmICh2YSAhPSBOVUxMKQotICAgICAg ICAgICAgICAgICB2YWIgPSB2YTsKLUBAIC0xNjc0LDggKzE2ODUsOSBAQCBzdGF0aWMgdm9pZCBs RXh0cmFjdENvbnN0YW50T2Zmc2V0KGxsdm06OlZhbHVlICp2ZWMsIGxsdm06OlZhbHVlICoqY29u c3RPZmZzZXQsCi0gICAgICAgICAgICAgICAgIHZhYiA9IHZiOwotIAotICAgICAgICAgICAgIGlm ICh2YWIgIT0gTlVMTCAmJiB2YyAhPSBOVUxMKQotLSAgICAgICAgICAgICAgICAqdmFyaWFibGVP ZmZzZXQgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpB ZGQsIHZhYiwgdmMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTExWTUdldE5hbWUoImFkZCIsIHZhYiwgdmMpLCBpbnNlcnRC ZWZvcmUpOwotKyAgICAgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSBsbHZtOjpCaW5hcnlP cGVyYXRvcjo6Q3JlYXRlKAotKyAgICAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb246 OkFkZCwgdmFiLCB2YywgKChsbHZtOjpUd2luZSgiYWRkXyIpICsgdmFiLT5nZXROYW1lKCkpICsg Il8iKSArIHZjLT5nZXROYW1lKCksCi0rICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUp OwotICAgICAgICAgICAgIGVsc2UgaWYgKHZhYiAhPSBOVUxMKQotICAgICAgICAgICAgICAgICAq dmFyaWFibGVPZmZzZXQgPSB2YWI7Ci0gICAgICAgICAgICAgZWxzZQotQEAgLTE5NDMsNyArMTk1 NSw3IEBAIHN0YXRpYyBib29sIGxPZmZzZXRzMzJCaXRTYWZlKGxsdm06OlZhbHVlICoqdmFyaWFi bGVPZmZzZXRQdHIsIGxsdm06OlZhbHVlICoqY29uCi0gICAgICAgICAgICAgLy8gYWxsIHplcm9z IChpLmUuIGEgQ29uc3RhbnRBZ2dyZWdhdGVaZXJvLCBidXQganVzdCBpbiBjYXNlLAotICAgICAg ICAgICAgIC8vIGRvIHRoZSBtb3JlIGdlbmVyYWwgY2hlY2sgd2l0aCBsVmVjdG9ySXMzMkJpdElu dHMoKS4KLSAgICAgICAgICAgICB2YXJpYWJsZU9mZnNldCA9IG5ldyBsbHZtOjpUcnVuY0luc3Qo dmFyaWFibGVPZmZzZXQsIExMVk1UeXBlczo6SW50MzJWZWN0b3JUeXBlLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNR2V0TmFtZSh2YXJpYWJs ZU9mZnNldCwgIl90cnVuYyIpLCBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZSh2YXJpYWJsZU9mZnNldC0+ Z2V0TmFtZSgpKSArICJfdHJ1bmMiLCBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgZWxzZQotICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgfQotQEAgLTE5NTIsNyArMTk2NCw3IEBAIHN0 YXRpYyBib29sIGxPZmZzZXRzMzJCaXRTYWZlKGxsdm06OlZhbHVlICoqdmFyaWFibGVPZmZzZXRQ dHIsIGxsdm06OlZhbHVlICoqY29uCi0gICAgICAgICBpZiAobFZlY3RvcklzMzJCaXRJbnRzKGNv bnN0T2Zmc2V0KSkgewotICAgICAgICAgICAgIC8vIFRydW5jYXRlIHRoZW0gc28gd2UgaGF2ZSBh IDMyLWJpdCB2ZWN0b3IgdHlwZSBmb3IgdGhlbS4KLSAgICAgICAgICAgICBjb25zdE9mZnNldCA9 IG5ldyBsbHZtOjpUcnVuY0luc3QoY29uc3RPZmZzZXQsIExMVk1UeXBlczo6SW50MzJWZWN0b3JU eXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZN R2V0TmFtZShjb25zdE9mZnNldCwgIl90cnVuYyIpLCBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZShjb25zdE9m ZnNldC0+Z2V0TmFtZSgpKSArICJfdHJ1bmMiLCBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgICAvLyBGSVhNRTogb3RoZXJ3aXNlIHdlIGp1c3QgYXNzdW1lIHRo YXQgYWxsIGNvbnN0YW50IG9mZnNldHMKLSAgICAgICAgICAgICAvLyBjYW4gYWN0dWFsbHkgYWx3 YXlzIGZpdCBpbnRvIDMyLWJpdHMuLi4gIChUaGlzIGNvdWxkIGJlCi1AQCAtMTk2Myw3ICsxOTc1 LDcgQEAgc3RhdGljIGJvb2wgbE9mZnNldHMzMkJpdFNhZmUobGx2bTo6VmFsdWUgKip2YXJpYWJs ZU9mZnNldFB0ciwgbGx2bTo6VmFsdWUgKipjb24KLSAgICAgICAgICAgICAvLyBsbHZtOjpDb25z dGFudEZvbGRJbnN0cnVjdGlvbigpIGRvZXNuJ3Qgc2VlbSB0byBiZSBkb2luZwotICAgICAgICAg ICAgIC8vIGVub3VnaCBmb3IgdXMgaW4gc29tZSBjYXNlcyBpZiB3ZSBjYWxsIGl0IGZyb20gaGVy ZS4KLSAgICAgICAgICAgICBjb25zdE9mZnNldCA9IG5ldyBsbHZtOjpUcnVuY0luc3QoY29uc3RP ZmZzZXQsIExMVk1UeXBlczo6SW50MzJWZWN0b3JUeXBlLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNR2V0TmFtZShjb25zdE9mZnNldCwgIl90cnVu YyIpLCBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsbHZtOjpUd2luZShjb25zdE9mZnNldC0+Z2V0TmFtZSgpKSArICJfdHJ1bmMi LCBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgfQotICAgICB9Ci0gCi1AQCAtMjAxMiw4ICsyMDI0 LDggQEAgc3RhdGljIGJvb2wgbE9mZnNldHMzMkJpdFNhZmUobGx2bTo6VmFsdWUgKipvZmZzZXRQ dHIsIGxsdm06Okluc3RydWN0aW9uICppbnNlcnQKLSAKLSAgICAgICAgIC8vIEFsdGVybmF0aXZl bHksIG9mZnNldCBjb3VsZCBiZSBhIHNlcXVlbmNlIG9mIGFkZHMgdGVybWluYXRpbmcKLSAgICAg ICAgIC8vIGluIHNhZmUgY29uc3RhbnQgdmVjdG9ycyBvciBhIFNFeHQuCi0tICAgICAgICAqb2Zm c2V0UHRyID0KLS0gICAgICAgICAgICBuZXcgbGx2bTo6VHJ1bmNJbnN0KG9mZnNldCwgTExWTVR5 cGVzOjpJbnQzMlZlY3RvclR5cGUsIExMVk1HZXROYW1lKG9mZnNldCwgIl90cnVuYyIpLCBpbnNl cnRCZWZvcmUpOwotKyAgICAgICAgKm9mZnNldFB0ciA9IG5ldyBsbHZtOjpUcnVuY0luc3Qob2Zm c2V0LCBMTFZNVHlwZXM6OkludDMyVmVjdG9yVHlwZSwgbGx2bTo6VHdpbmUob2Zmc2V0LT5nZXRO YW1lKCkpICsgIl90cnVuYyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgIH0gZWxzZQot ICAgICAgICAgcmV0dXJuIGZhbHNlOwotQEAgLTIyMjksNyArMjI0MSw4IEBAIHN0YXRpYyBib29s IGxHU1RvR1NCYXNlT2Zmc2V0cyhsbHZtOjpDYWxsSW5zdCAqY2FsbEluc3QpIHsKLSAgICAgfQot ICAgICAvLyBDYXN0IHRoZSBiYXNlIHBvaW50ZXIgdG8gYSB2b2lkICosIHNpbmNlIHRoYXQncyB3 aGF0IHRoZQotICAgICAvLyBfX3BzZXVkb18qX2Jhc2Vfb2Zmc2V0c18qIGZ1bmN0aW9ucyB3YW50 LgotLSAgICBiYXNlUHRyID0gbmV3IGxsdm06OkludFRvUHRySW5zdChiYXNlUHRyLCBMTFZNVHlw ZXM6OlZvaWRQb2ludGVyVHlwZSwgTExWTUdldE5hbWUoYmFzZVB0ciwgIl8ydm9pZCIpLCBjYWxs SW5zdCk7Ci0rICAgIGJhc2VQdHIgPSBuZXcgbGx2bTo6SW50VG9QdHJJbnN0KGJhc2VQdHIsIExM Vk1UeXBlczo6Vm9pZFBvaW50ZXJUeXBlLCBsbHZtOjpUd2luZShiYXNlUHRyLT5nZXROYW1lKCkp ICsgIl8ydm9pZCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxJ bnN0KTsKLSAgICAgbENvcHlNZXRhZGF0YShiYXNlUHRyLCBjYWxsSW5zdCk7Ci0gICAgIGxsdm06 OkZ1bmN0aW9uICpnYXRoZXJTY2F0dGVyRnVuYyA9IGluZm8tPmJhc2VPZmZzZXRzRnVuYzsKLSAK LUBAIC0yODAzLDcgKzI4MTYsNyBAQCBzdGF0aWMgYm9vbCBsR1NUb0xvYWRTdG9yZShsbHZtOjpD YWxsSW5zdCAqY2FsbEluc3QpIHsKLSAgICAgICAgICAgICAgICAgbENvcHlNZXRhZGF0YShwdHIs IGNhbGxJbnN0KTsKLSAgICAgICAgICAgICAgICAgRGVidWcocG9zLCAiVHJhbnNmb3JtZWQgZ2F0 aGVyIHRvIHVuYWxpZ25lZCB2ZWN0b3IgbG9hZCEiKTsKLSAgICAgICAgICAgICAgICAgbGx2bTo6 SW5zdHJ1Y3Rpb24gKm5ld0NhbGwgPQotLSAgICAgICAgICAgICAgICAgICAgbENhbGxJbnN0KGdh dGhlckluZm8tPmxvYWRNYXNrZWRGdW5jLCBwdHIsIG1hc2ssIExMVk1HZXROYW1lKHB0ciwgIl9t YXNrZWRfbG9hZCIpKTsKLSsgICAgICAgICAgICAgICAgICAgIGxDYWxsSW5zdChnYXRoZXJJbmZv LT5sb2FkTWFza2VkRnVuYywgcHRyLCBtYXNrLCBsbHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkg KyAiX21hc2tlZF9sb2FkIik7Ci0gICAgICAgICAgICAgICAgIGxDb3B5TWV0YWRhdGEobmV3Q2Fs bCwgY2FsbEluc3QpOwotICAgICAgICAgICAgICAgICBsbHZtOjpSZXBsYWNlSW5zdFdpdGhJbnN0 KGNhbGxJbnN0LCBuZXdDYWxsKTsKLSAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYg LS1naXQgYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA0LnBhdGNoIGIvc3JjcGtncy9p c3BjL3BhdGNoZXMvbGx2bTEyLTAwNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggM2E5NGQ4NDQzYTVlLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9pc3BjL3BhdGNoZXMv bGx2bTEyLTAwNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gYzAz YTUxNDI0NDQ0NzZhMWNhYTVjMmJhN2ZhMmQ5MmQ3NzkzZDZmMSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKLUZyb206IERlZXBhayBSYWplbmRyYWt1bWFyYW4gPGRlZXBhay5yYWplbmRyYWt1bWFy YW5AaW50ZWwuY29tPgotRGF0ZTogTW9uLCAyNSBKYW4gMjAyMSAwOToyMjo0OSAtMDgwMAotU3Vi amVjdDogW1BBVENIXSBGaXhpbmcgYnVpbGQgb24gbGx2bSB0cnVuay4KLQotLS0tCi0gc3JjL2N0 eC5jcHAgfCA3ICsrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0IGRl bGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2N0eC5jcHAgYi9zcmMvY3R4LmNwcAotaW5k ZXggZGVkNTI0YjcxLi5iNjBlNmZlODQgMTAwNjQ0Ci0tLS0gYS9zcmMvY3R4LmNwcAotKysrIGIv c3JjL2N0eC5jcHAKLUBAIC0xMDIwLDggKzEwMjAsNyBAQCB2b2lkIEZ1bmN0aW9uRW1pdENvbnRl eHQ6OkVtaXRDYXNlTGFiZWwoaW50IHZhbHVlLCBib29sIGNoZWNrTWFzaywgU291cmNlUG9zIHBv cwotICAgICBsbHZtOjpCYXNpY0Jsb2NrICpiYkNhc2VJbXBsID0gTlVMTDsKLSAgICAgaWYgKGVt aXRHZW5YSGFyZHdhcmVNYXNrKCkpIHsKLSAgICAgICAgIC8vIENyZWF0ZSBiYXNpYyBibG9jayB3 aXRoIGFjdHVhbCBjYXNlIGltcGxlbWVudGF0aW9uCi0tICAgICAgICBsbHZtOjpUd2luZSBiYk5h bWUgPSBsbHZtOjpUd2luZShiYkNhc2UtPmdldE5hbWUoKSkgKyAiX2ltcGwiOwotLSAgICAgICAg YmJDYXNlSW1wbCA9IENyZWF0ZUJhc2ljQmxvY2soYmJOYW1lLCBiYkNhc2UpOwotKyAgICAgICAg YmJDYXNlSW1wbCA9IENyZWF0ZUJhc2ljQmxvY2sobGx2bTo6VHdpbmUoYmJDYXNlLT5nZXROYW1l KCkpICsgIl9pbXBsIiwgYmJDYXNlKTsKLSAgICAgfQotICNlbmRpZgotIAotQEAgLTMxNDIsOCAr MzE0MSw4IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCcm9hZGNhc3RWYWx1 ZShsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6VHlwZSAqdmVjCi0gICAgIGxsdm06OlZhbHVlICp1bmRl ZjIgPSBsbHZtOjpVbmRlZlZhbHVlOjpnZXQodmVjVHlwZSk7Ci0gCi0gICAgIC8vIEluc2VydEVs ZW1lbnQKLS0gICAgbGx2bTo6VHdpbmUgdHcgPSBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChs bHZtOjpUd2luZSh2LT5nZXROYW1lKCkpICsgIl9icm9hZGNhc3QiKSA6IG5hbWUgKyBsbHZtOjpU d2luZSgiX2luaXQiKTsKLS0gICAgbGx2bTo6VmFsdWUgKmluc2VydCA9IEluc2VydEluc3QodW5k ZWYxLCB2LCAwLCB0dy5zdHIoKS5jX3N0cigpKTsKLSsgICAgbGx2bTo6VmFsdWUgKmluc2VydCA9 Ci0rICAgICAgICBJbnNlcnRJbnN0KHVuZGVmMSwgdiwgMCwgbmFtZS5pc1RyaXZpYWxseUVtcHR5 KCkgPyAobGx2bTo6VHdpbmUodi0+Z2V0TmFtZSgpKSArICJfYnJvYWRjYXN0IikgOiBuYW1lICsg Il9pbml0Iik7Ci0gCi0gICAgIC8vIFNodWZmbGVWZWN0b3IKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPCBJU1BDX0xMVk1fMTFfMApkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2 bTEyLTAwNS5wYXRjaCBiL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDUucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzZTk2YjAwYWJmYS4uMDAwMDAwMDAwMDAwCi0t LSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDUucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwzNzIgKzAsMCBAQAotRnJvbSBjMWQwYTUxYmY4NDE2ZDQyMTQ0ZGU5ZTJiZGQ1OTgyNWVh ZWZmMWFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQXJpbmEgTmVzaGx5YWV2YSA8 YXJpbmEubmVzaGx5YWV2YUBpbnRlbC5jb20+Ci1EYXRlOiBGcmksIDggSmFuIDIwMjEgMTQ6MTM6 NDkgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gTExWTSAxMSBzdXBwb3J0IGZvciBnZW4gY29kZQot Ci0tLS0KLSBzcmMvY3R4LmNwcCAgICAgICAgICAgICAgICAgICAgIHwgIDEzICsrLQotIHNyYy9n ZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAgfCAgIDkgKy0KLSBzcmMvb3B0LmNwcCAgICAgICAg ICAgICAgICAgICAgIHwgMTQzICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCi0gMyBm aWxlcyBjaGFuZ2VkLCAxMjQgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCi0KLWRpZmYg LS1naXQgYS9zcmMvY3R4LmNwcCBiL3NyYy9jdHguY3BwCi1pbmRleCBiNjBlNmZlODQuLjJhNzJl NjgzNyAxMDA2NDQKLS0tLSBhL3NyYy9jdHguY3BwCi0rKysgYi9zcmMvY3R4LmNwcAotQEAgLTEs NSArMSw1IEBACi0gLyoKLS0gIENvcHlyaWdodCAoYykgMjAxMC0yMDIwLCBJbnRlbCBDb3Jwb3Jh dGlvbgotKyAgQ29weXJpZ2h0IChjKSAyMDEwLTIwMjEsIEludGVsIENvcnBvcmF0aW9uCi0gICBB bGwgcmlnaHRzIHJlc2VydmVkLgotIAotICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1AQCAtMzY4NSw4ICszNjg1LDE3 IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZW5YU2ltZENGUHJlZGljYXRl KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6Ci0gICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBs bHZtOjppc2E8bGx2bTo6VmVjdG9yVHlwZT4odmFsdWUtPmdldFR5cGUoKSkpOwotICAgICBsbHZt OjpWZWN0b3JUeXBlICp2dCA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHZhbHVl LT5nZXRUeXBlKCkpOwotICAgICBpZiAoZGVmYXVsdHMgPT0gTlVMTCkgewotLSAgICAgICAgZGVm YXVsdHMgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQodmFsdWUtPmdldFR5cGUoKS0+ Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xM Vk1fMTFfMAotKyAgICAgICAgZGVmYXVsdHMgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3Bs YXQodnQtPmdldFZlY3Rvck51bUVsZW1lbnRzKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKHZ0 LT5nZXRFbGVtZW50VHlwZSgpKSk7Ci0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19M TFZNXzExXzAKLSsgICAgICAgIGRlZmF1bHRzID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNw bGF0KHtzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHZ0LT5nZXROdW1FbGVtZW50cygpKSwgZmFs c2V9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGx2bTo6Q29uc3RhbnQ6OmdldE51bGxWYWx1ZSh2dC0+Z2V0RWxlbWVudFR5cGUoKSkpOwotKyNl bHNlCi0rICAgICAgICBkZWZhdWx0cyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCgK LSsgICAgICAgICAgICBsbHZtOjpFbGVtZW50Q291bnQ6OmdldChzdGF0aWNfY2FzdDx1bnNpZ25l ZCBpbnQ+KHZ0LT5nZXROdW1FbGVtZW50cygpKSwgZmFsc2UpLAotKyAgICAgICAgICAgIGxsdm06 OkNvbnN0YW50OjpnZXROdWxsVmFsdWUodnQtPmdldEVsZW1lbnRUeXBlKCkpKTsKLSsjZW5kaWYK LSAgICAgfQotIAotICAgICBhdXRvIEZuID0gbGx2bTo6R2VuWEludHJpbnNpYzo6Z2V0R2VuWERl Y2xhcmF0aW9uKG0tPm1vZHVsZSwgbGx2bTo6R2VuWEludHJpbnNpYzo6Z2VueF9zaW1kY2ZfcHJl ZGljYXRlLAotZGlmZiAtLWdpdCBhL3NyYy9nZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAgYi9z cmMvZ2VuL0dsb2JhbHNMb2NhbGl6YXRpb24uY3BwCi1pbmRleCBhMTc2ZTk0NjIuLjQxZjNiMDBl MiAxMDA2NDQKLS0tLSBhL3NyYy9nZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAKLSsrKyBiL3Ny Yy9nZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAKLUBAIC0xLDUgKzEsNSBAQAotIC8qCi0tICBD b3B5cmlnaHQgKGMpIDIwMTQsIDIwMTYtMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24KLSsgIENvcHly aWdodCAoYykgMjAxNCwgMjAxNi0yMDIxLCBJbnRlbCBDb3Jwb3JhdGlvbgotICAgQWxsIHJpZ2h0 cyByZXNlcnZlZC4KLSAKLSAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotQEAgLTUzLDggKzUzLDEwIEBACi0gI2luY2x1 ZGUgPGxsdm0vR2VuWEludHJpbnNpY3MvR2VuWEludHJPcHRzLmg+Ci0gI2luY2x1ZGUgPGxsdm0v R2VuWEludHJpbnNpY3MvR2VuWEludHJpbnNpY3MuaD4KLSAjaW5jbHVkZSA8bGx2bS9HZW5YSW50 cmluc2ljcy9HZW5YTWV0YWRhdGEuaD4KLS0jaW5jbHVkZSA8bGx2bS9JUi9DRkcuaD4KLSsjaWYg SVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICNpbmNsdWRlIDxsbHZtL0lSL0Nh bGxTaXRlLmg+Ci0rI2VuZGlmCi0rI2luY2x1ZGUgPGxsdm0vSVIvQ0ZHLmg+Ci0gI2luY2x1ZGUg PGxsdm0vSVIvRGVidWdJbmZvLmg+Ci0gI2luY2x1ZGUgPGxsdm0vSVIvRG9taW5hdG9ycy5oPgot ICNpbmNsdWRlIDxsbHZtL0lSL0Z1bmN0aW9uLmg+Ci1AQCAtNDcwLDcgKzQ3Miw4IEBAIHZvaWQg R2xvYmFsc0xvY2FsaXphdGlvbjo6TG9jYWxpemVHbG9iYWxzKExvY2FsaXphdGlvbkluZm8gJkxJ KSB7Ci0gICAgICAgICBJbnN0cnVjdGlvbiAmRmlyc3RJID0gKkZuLT5nZXRFbnRyeUJsb2NrKCku YmVnaW4oKTsKLSAgICAgICAgIFR5cGUgKkVsZW1UeSA9IEdWLT5nZXRUeXBlKCktPmdldEVsZW1l bnRUeXBlKCk7Ci0gICAgICAgICBBbGxvY2FJbnN0ICpBbGxvY2EgPSBuZXcgQWxsb2NhSW5zdChF bGVtVHksIDAsIEdWLT5nZXROYW1lKCkgKyAiLmxvY2FsIiwgJkZpcnN0SSk7Ci0tICAgICAgICBB bGxvY2EtPnNldEFsaWdubWVudChsbHZtOjpNYXliZUFsaWduKEdWLT5nZXRBbGlnbm1lbnQoKSkp OwotKyAgICAgICAgQWxsb2NhLT5zZXRBbGlnbm1lbnQobGx2bTo6TWF5YmVBbGlnbihHVi0+Z2V0 QWxpZ25tZW50KCkpLnZhbHVlT3JPbmUoKSk7Ci0rCi0gICAgICAgICBpZiAoIWlzYTxVbmRlZlZh bHVlPihHVi0+Z2V0SW5pdGlhbGl6ZXIoKSkpCi0gICAgICAgICAgICAgbmV3IFN0b3JlSW5zdChH Vi0+Z2V0SW5pdGlhbGl6ZXIoKSwgQWxsb2NhLCAmRmlyc3RJKTsKLSAKLWRpZmYgLS1naXQgYS9z cmMvb3B0LmNwcCBiL3NyYy9vcHQuY3BwCi1pbmRleCBkNThkNzdmNzMuLjE3ODliODQ3NiAxMDA2 NDQKLS0tLSBhL3NyYy9vcHQuY3BwCi0rKysgYi9zcmMvb3B0LmNwcAotQEAgLTI4OTksMTUgKzI4 OTksMTcgQEAgc3RhdGljIGxsdm06OkZ1bmN0aW9uICpsR2VuWE1hc2tlZEludDhJbnN0KGxsdm06 Okluc3RydWN0aW9uICppbnN0LCBib29sIGlzU3RvcmUKLSBzdGF0aWMgbGx2bTo6Q2FsbEluc3Qg KmxHZW5YU3RvcmVJbnN0KGxsdm06OlZhbHVlICp2YWwsIGxsdm06OlZhbHVlICpwdHIsIGxsdm06 Okluc3RydWN0aW9uICppbnN0KSB7Ci0gICAgIEFzc2VydChnLT50YXJnZXQtPmlzR2VuWFRhcmdl dCgpKTsKLSAgICAgQXNzZXJ0KGxsdm06OmlzYTxsbHZtOjpWZWN0b3JUeXBlPih2YWwtPmdldFR5 cGUoKSkpOwotLSAgICBBc3NlcnQobGx2bTo6aXNQb3dlck9mMl8zMih2YWwtPmdldFR5cGUoKS0+ Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSkpOwotLSAgICBBc3NlcnQodmFsLT5nZXRUeXBlKCktPmdl dFByaW1pdGl2ZVNpemVJbkJpdHMoKSAvIDggPD0gOCAqIE9XT1JEKTsKLSsKLSsgICAgbGx2bTo6 VmVjdG9yVHlwZSAqdmFsVmVjVHlwZSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+ KHZhbC0+Z2V0VHlwZSgpKTsKLSsgICAgQXNzZXJ0KGxsdm06OmlzUG93ZXJPZjJfMzIodmFsVmVj VHlwZS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotKyAgICBBc3NlcnQodmFsVmVjVHlwZS0+Z2V0UHJp bWl0aXZlU2l6ZUluQml0cygpIC8gOCA8PSA4ICogT1dPUkQpOwotIAotICAgICAvLyBUaGUgZGF0 YSB3cml0ZSBvZiBzdm0gc3RvcmUgbXVzdCBoYXZlIGEgc2l6ZSB0aGF0IGlzIGEgcG93ZXIgb2Yg dHdvIGZyb20gMTYgdG8gMTI4Ci0gICAgIC8vIGJ5dGVzLiBIb3dldmVyIGZvciBpbnQ4IHR5cGUg YW5kIHNpbWQgd2lkdGggPSA4LCB0aGUgZGF0YSB3cml0ZSBzaXplIGlzIDguCi0gICAgIC8vIFNv IHdlIHVzZSBtYXNrZWQgc3RvcmUgZnVuY3Rpb24gaGVyZSBpbnN0ZWFkIG9mIHN2bSBzdG9yZSB3 aGljaCBwcm9jZXNzIGludDggdHlwZQotICAgICAvLyBjb3JyZWN0bHkuCi0tICAgIGlmICh2YWwt PmdldFR5cGUoKS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpIC8gOCA8IDE2KSB7Ci0tICAgICAg ICBBc3NlcnQodmFsLT5nZXRUeXBlKCktPmdldFNjYWxhclR5cGUoKSA9PSBMTFZNVHlwZXM6Oklu dDhUeXBlKTsKLSsgICAgaWYgKHZhbFZlY1R5cGUtPmdldFByaW1pdGl2ZVNpemVJbkJpdHMoKSAv IDggPCAxNikgewotKyAgICAgICAgQXNzZXJ0KHZhbFZlY1R5cGUtPmdldFNjYWxhclR5cGUoKSA9 PSBMTFZNVHlwZXM6OkludDhUeXBlKTsKLSAgICAgICAgIGlmIChsbHZtOjpGdW5jdGlvbiAqbWFz a2VkRnVuYyA9IGxHZW5YTWFza2VkSW50OEluc3QoaW5zdCwgdHJ1ZSkpCi0gICAgICAgICAgICAg cmV0dXJuIGxsdm06OmR5bl9jYXN0PGxsdm06OkNhbGxJbnN0PihsQ2FsbEluc3QobWFza2VkRnVu YywgcHRyLCB2YWwsIExMVk1NYXNrQWxsT24sICIiKSk7Ci0gICAgICAgICBlbHNlIHsKLUBAIC0y OTIzLDE1ICsyOTI1LDE3IEBAIHN0YXRpYyBsbHZtOjpDYWxsSW5zdCAqbEdlblhTdG9yZUluc3Qo bGx2bTo6VmFsdWUgKnZhbCwgbGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6Ci0gCi0gc3RhdGljIGxs dm06OkNhbGxJbnN0ICpsR2VuWExvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlR5cGUg KnJldFR5cGUsIGxsdm06Okluc3RydWN0aW9uICppbnN0KSB7Ci0gICAgIEFzc2VydChsbHZtOjpp c2E8bGx2bTo6VmVjdG9yVHlwZT4ocmV0VHlwZSkpOwotLSAgICBBc3NlcnQobGx2bTo6aXNQb3dl ck9mMl8zMihyZXRUeXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpKSk7Ci0tICAgIEFzc2VydChy ZXRUeXBlLT5nZXRQcmltaXRpdmVTaXplSW5CaXRzKCkpOwotLSAgICBBc3NlcnQocmV0VHlwZS0+ Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpIC8gOCA8PSA4ICogT1dPUkQpOwotKwotKyAgICBsbHZt OjpWZWN0b3JUeXBlICpyZXRWZWNUeXBlID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlw ZT4ocmV0VHlwZSk7Ci0rICAgIEFzc2VydChsbHZtOjppc1Bvd2VyT2YyXzMyKHJldFZlY1R5cGUt PmdldE51bUVsZW1lbnRzKCkpKTsKLSsgICAgQXNzZXJ0KHJldFZlY1R5cGUtPmdldFByaW1pdGl2 ZVNpemVJbkJpdHMoKSk7Ci0rICAgIEFzc2VydChyZXRWZWNUeXBlLT5nZXRQcmltaXRpdmVTaXpl SW5CaXRzKCkgLyA4IDw9IDggKiBPV09SRCk7Ci0gICAgIC8vIFRoZSBkYXRhIHJlYWQgb2Ygc3Zt IGxvYWQgbXVzdCBoYXZlIGEgc2l6ZSB0aGF0IGlzIGEgcG93ZXIgb2YgdHdvIGZyb20gMTYgdG8g MTI4Ci0gICAgIC8vIGJ5dGVzLiBIb3dldmVyIGZvciBpbnQ4IHR5cGUgYW5kIHNpbWQgd2lkdGgg PSA4LCB0aGUgZGF0YSByZWFkIHNpemUgaXMgOC4KLSAgICAgLy8gU28gd2UgdXNlIG1hc2tlZCBs b2FkIGZ1bmN0aW9uIGhlcmUgaW5zdGVhZCBvZiBzdm0gbG9hZCB3aGljaCBwcm9jZXNzIGludDgg dHlwZQotICAgICAvLyBjb3JyZWN0bHkuCi0tICAgIGlmIChyZXRUeXBlLT5nZXRQcmltaXRpdmVT aXplSW5CaXRzKCkgLyA4IDwgMTYpIHsKLS0gICAgICAgIEFzc2VydChyZXRUeXBlLT5nZXRTY2Fs YXJUeXBlKCkgPT0gTExWTVR5cGVzOjpJbnQ4VHlwZSk7Ci0rICAgIGlmIChyZXRWZWNUeXBlLT5n ZXRQcmltaXRpdmVTaXplSW5CaXRzKCkgLyA4IDwgMTYpIHsKLSsgICAgICAgIEFzc2VydChyZXRW ZWNUeXBlLT5nZXRTY2FsYXJUeXBlKCkgPT0gTExWTVR5cGVzOjpJbnQ4VHlwZSk7Ci0gICAgICAg ICBpZiAobGx2bTo6RnVuY3Rpb24gKm1hc2tlZEZ1bmMgPSBsR2VuWE1hc2tlZEludDhJbnN0KGlu c3QsIGZhbHNlKSkKLSAgICAgICAgICAgICByZXR1cm4gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Q2Fs bEluc3Q+KGxDYWxsSW5zdChtYXNrZWRGdW5jLCBwdHIsIExMVk1NYXNrQWxsT24sICIiKSk7Ci0g ICAgICAgICBlbHNlIHsKLUBAIC01NjIyLDE1ICs1NjI2LDI0IEBAIHN0YXRpYyBib29sIGxWZWN0 b3JpemVHRVBzKGxsdm06OlZhbHVlICpwdHIsIHN0ZDo6dmVjdG9yPFB0clVzZT4gJnB0clVzZXMs IHN0ZDo6Ci0gICAgICAgICBsbHZtOjpQdHJUb0ludEluc3QgKnB0clRvSW50ID0KLSAgICAgICAg ICAgICBuZXcgbGx2bTo6UHRyVG9JbnRJbnN0KHB0ciwgTExWTVR5cGVzOjpJbnQ2NFR5cGUsICJ2 ZWN0b3JpemVkX3B0cnRvaW50IiwgaW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgIGxsdm06Okluc3Ry dWN0aW9uICphZGRyID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZUFkZChwdHJUb0ludCwg b2Zmc2V0LCAidmVjdG9yaXplZF9hZGRyZXNzIiwgaW5zZXJ0QmVmb3JlKTsKLSsjaWYgSVNQQ19M TFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgICAgIGxsdm06OlR5cGUgKnJldFR5 cGUgPSBsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChzY2FsYXJfdHlwZSwgcmVxU2l6ZSAvIHRf c2l6ZSk7Ci0rI2Vsc2UKLSAgICAgICAgIGxsdm06OlR5cGUgKnJldFR5cGUgPSBsbHZtOjpWZWN0 b3JUeXBlOjpnZXQoc2NhbGFyX3R5cGUsIHJlcVNpemUgLyB0X3NpemUpOwotKyNlbmRpZgotICAg ICAgICAgbGx2bTo6RnVuY3Rpb24gKmZuID0gbGx2bTo6R2VuWEludHJpbnNpYzo6Z2V0R2VuWERl Y2xhcmF0aW9uKAotICAgICAgICAgICAgIG0tPm1vZHVsZSwgbGx2bTo6R2VuWEludHJpbnNpYzo6 Z2VueF9zdm1fYmxvY2tfbGRfdW5hbGlnbmVkLCB7cmV0VHlwZSwgYWRkci0+Z2V0VHlwZSgpfSk7 Ci0gICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqbGQgPSBsbHZtOjpDYWxsSW5zdDo6Q3JlYXRl KGZuLCB7YWRkcn0sICJ2ZWN0b3JpemVkX2xkIiwgaW5zZXJ0QmVmb3JlKTsKLSAKLSAgICAgICAg IGlmIChsb2FkaW5nUHRyKSB7Ci0gICAgICAgICAgICAgLy8gQ2FzdCBpbnQgdG8gcHRyIHZpYSBp bnR0b3B0cgotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAg ICAgICAgIGxkID0gbmV3IGxsdm06OkludFRvUHRySW5zdChsZCwgbGx2bTo6Rml4ZWRWZWN0b3JU eXBlOjpnZXQob3JpZ2luYWxUeXBlLCByZXFTaXplIC8gdF9zaXplKSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInZlY3Rvcml6ZWRfaW50dG9wdHIiLCBpbnNlcnRC ZWZvcmUpOwotKyNlbHNlCi0gICAgICAgICAgICAgbGQgPSBuZXcgbGx2bTo6SW50VG9QdHJJbnN0 KGxkLCBsbHZtOjpWZWN0b3JUeXBlOjpnZXQob3JpZ2luYWxUeXBlLCByZXFTaXplIC8gdF9zaXpl KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZlY3Rvcml6ZWRf aW50dG9wdHIiLCBpbnNlcnRCZWZvcmUpOwotKyNlbmRpZgotICAgICAgICAgfQotIAotICAgICAg ICAgLy8gU2NhbGFyIGV4dHJhY3RzIGZvciBhbGwgbG9hZGVkIGVsZW1lbnRzCi1AQCAtNjE2MCwx OSArNjE3MywzNCBAQCBib29sIFJlcGxhY2VMTFZNSW50cmluc2ljczo6cnVuT25CYXNpY0Jsb2Nr KGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5z dCA9ICYqSTsKLSAgICAgICAgIGlmIChsbHZtOjpDYWxsSW5zdCAqY2kgPSBsbHZtOjpkeW5fY2Fz dDxsbHZtOjpDYWxsSW5zdD4oaW5zdCkpIHsKLSAgICAgICAgICAgICBsbHZtOjpGdW5jdGlvbiAq ZnVuYyA9IGNpLT5nZXRDYWxsZWRGdW5jdGlvbigpOwotLSAgICAgICAgICAgIGlmIChmdW5jICYm IGZ1bmMtPmdldE5hbWUoKSA9PSAibGx2bS50cmFwIikgewotKyAgICAgICAgICAgIGlmIChmdW5j ICYmIGZ1bmMtPmdldE5hbWUoKS5lcXVhbHMoImxsdm0udHJhcCIpKSB7Ci0gICAgICAgICAgICAg ICAgIGxsdm06OlR5cGUgKmFyZ1R5cGVzW10gPSB7TExWTVR5cGVzOjpJbnQxVmVjdG9yVHlwZSwg TExWTVR5cGVzOjpJbnQxNlZlY3RvclR5cGV9OwotICAgICAgICAgICAgICAgICAvLyBEZXNjcmlw dGlvbiBvZiBwYXJhbWV0ZXJzIGZvciBnZW54X3Jhd19zZW5kX25vcmVzdWx0IGNhbiBiZSBmb3Vu ZCBpbiB0YXJnZXQtZ2VueC5sbAotICAgICAgICAgICAgICAgICBhdXRvIEZuID0gK2xsdm06Okdl blhJbnRyaW5zaWM6OmdldEdlblhEZWNsYXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgIG0t Pm1vZHVsZSwgbGx2bTo6R2VuWEludHJpbnNpYzo6Z2VueF9yYXdfc2VuZF9ub3Jlc3VsdCwgYXJn VHlwZXMpOwotICAgICAgICAgICAgICAgICBsbHZtOjpTbWFsbFZlY3RvcjxsbHZtOjpWYWx1ZSAq LCA4PiBBcmdzOwotICAgICAgICAgICAgICAgICBBcmdzLnB1c2hfYmFjayhsbHZtOjpDb25zdGFu dEludDo6Z2V0KExMVk1UeXBlczo6SW50MzJUeXBlLCAwKSk7Ci0tICAgICAgICAgICAgICAgIEFy Z3MucHVzaF9iYWNrKGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdChnLT50YXJnZXQtPmdl dE5hdGl2ZVZlY3RvcldpZHRoKCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudEludDo6Z2V0VHJ1ZSgq Zy0+Y3R4KSkpOwotKyAgICAgICAgICAgICAgICBBcmdzLnB1c2hfYmFjayhsbHZtOjpDb25zdGFu dFZlY3Rvcjo6Z2V0U3BsYXQoCi0rI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEx XzAKLSsgICAgICAgICAgICAgICAgICAgIGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgo KSwKLSsjZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAg ICAgICAgICAgICAge3N0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZy0+dGFyZ2V0LT5nZXROYXRp dmVWZWN0b3JXaWR0aCgpKSwgZmFsc2V9LAotKyNlbHNlIC8vIExMVk0gMTIuMCsKLSsgICAgICAg ICAgICAgICAgICAgIGxsdm06OkVsZW1lbnRDb3VudDo6Z2V0KHN0YXRpY19jYXN0PHVuc2lnbmVk IGludD4oZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0aCgpKSwgZmFsc2UpLAotKyNlbmRp ZgotKyAgICAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnRJbnQ6OmdldFRydWUoKmctPmN0 eCkpKTsKLSsKLSAgICAgICAgICAgICAgICAgQXJncy5wdXNoX2JhY2sobGx2bTo6Q29uc3RhbnRJ bnQ6OmdldChMTFZNVHlwZXM6OkludDMyVHlwZSwgMzkpKTsKLSAgICAgICAgICAgICAgICAgQXJn cy5wdXNoX2JhY2sobGx2bTo6Q29uc3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6OkludDMyVHlwZSwg MzM1NTQ0NDgpKTsKLSAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnplcm9NYXNrID0gbGx2 bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KAotLSAgICAgICAgICAgICAgICAgICAgZy0+dGFy Z2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0aCgpLCBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVl KGxsdm06OlR5cGU6OmdldEludDE2VHkoKmctPmN0eCkpKTsKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPCBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgICAgICAgICAgICAgZy0+dGFyZ2V0LT5nZXRO YXRpdmVWZWN0b3JXaWR0aCgpLAotKyNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExW TV8xMV8wCi0rICAgICAgICAgICAgICAgICAgICB7c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihn LT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCkpLCBmYWxzZX0sCi0rI2Vsc2UgLy8gTExW TSAxMi4wKwotKyAgICAgICAgICAgICAgICAgICAgbGx2bTo6RWxlbWVudENvdW50OjpnZXQoc3Rh dGljX2Nhc3Q8dW5zaWduZWQgaW50PihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCkp LCBmYWxzZSksCi0rI2VuZGlmCi0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudDo6 Z2V0TnVsbFZhbHVlKGxsdm06OlR5cGU6OmdldEludDE2VHkoKmctPmN0eCkpKTsKLSAgICAgICAg ICAgICAgICAgQXJncy5wdXNoX2JhY2soemVyb01hc2spOwotIAotICAgICAgICAgICAgICAgICBs bHZtOjpJbnN0cnVjdGlvbiAqbmV3SW5zdCA9IGxsdm06OkNhbGxJbnN0OjpDcmVhdGUoRm4sIEFy Z3MsIGNpLT5nZXROYW1lKCkpOwotQEAgLTYxODEsNyArNjIwOSw3IEBAIGJvb2wgUmVwbGFjZUxM Vk1JbnRyaW5zaWNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAg ICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkQW55ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg ICAgIGdvdG8gcmVzdGFydDsKLSAgICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgIH0gZWxz ZSBpZiAoZnVuYyAmJiBmdW5jLT5nZXROYW1lKCkgPT0gImxsdm0uYXNzdW1lIikgewotKyAgICAg ICAgICAgIH0gZWxzZSBpZiAoZnVuYyAmJiBmdW5jLT5nZXROYW1lKCkuZXF1YWxzKCJsbHZtLmFz c3VtZSIpKSB7Ci0gICAgICAgICAgICAgICAgIGNpLT5lcmFzZUZyb21QYXJlbnQoKTsKLSAgICAg ICAgICAgICAgICAgbW9kaWZpZWRBbnkgPSB0cnVlOwotICAgICAgICAgICAgICAgICBnb3RvIHJl c3RhcnQ7Ci1AQCAtNjMzNSw3ICs2MzYzLDcgQEAgYm9vbCBDaGVja1Vuc3VwcG9ydGVkSW5zdHM6 OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotICAgICAgICAgICAgICAg ICBjb250aW51ZTsKLSAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHVuc3VwcG9ydGVk RnVuY3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgc3RkOjpzbWF0Y2ggbWF0Y2g7 Ci0tICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGZ1bmNOYW1lID0gZnVuYy0+Z2V0TmFtZSgp OwotKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBmdW5jTmFtZSA9IGZ1bmMtPmdldE5hbWUo KS5zdHIoKTsKLSAgICAgICAgICAgICAgICAgaWYgKHN0ZDo6cmVnZXhfbWF0Y2goZnVuY05hbWUs IG1hdGNoLCB1bnN1cHBvcnRlZEZ1bmNzW2ldKSkgewotICAgICAgICAgICAgICAgICAgICAgLy8g V2UgZm91bmQgdW5zdXBwb3J0ZWQgZnVuY3Rpb24uIEdlbmVyYXRlIGVycm9yIGFuZCBzdG9wIGNv bXBpbGF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgU291cmNlUG9zIHBvczsKLUBAIC02NDE4 LDEyICs2NDQ2LDE0IEBAIGJvb2wgTWFuZ2xlT3BlbkNMQnVpbHRpbnM6OnJ1bk9uQmFzaWNCbG9j ayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotICAgICAgICAgICAgIGlmIChmdW5jLT5nZXROYW1l KCkuc3RhcnRzd2l0aCgiX19zcGlydl9vY2wiKSkgewotICAgICAgICAgICAgICAgICBzdGQ6OnN0 cmluZyBtYW5nbGVkTmFtZTsKLSAgICAgICAgICAgICAgICAgbGx2bTo6VHlwZSAqcmV0VHlwZSA9 IGZ1bmMtPmdldFJldHVyblR5cGUoKTsKLS0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZnVu Y05hbWUgPSBmdW5jLT5nZXROYW1lKCk7Ci0rICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGZ1 bmNOYW1lID0gZnVuYy0+Z2V0TmFtZSgpLnN0cigpOwotICAgICAgICAgICAgICAgICBzdGQ6OnZl Y3RvcjxsbHZtOjpUeXBlICo+IEFyZ1R5OwotICAgICAgICAgICAgICAgICAvLyBzcGlydiBPcGVu Q0wgYnVpbHRpbnMgYXJlIHVzZWQgZm9yIGRvdWJsZSB0eXBlcyBvbmx5Ci0tICAgICAgICAgICAg ICAgIEFzc2VydChyZXRUeXBlLT5pc1ZlY3RvclR5KCkgJiYgcmV0VHlwZS0+Z2V0VmVjdG9yRWxl bWVudFR5cGUoKS0+aXNEb3VibGVUeSgpIHx8Ci0rICAgICAgICAgICAgICAgIEFzc2VydChyZXRU eXBlLT5pc1ZlY3RvclR5KCkgJiYKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpk eW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihyZXRUeXBlKS0+Z2V0RWxlbWVudFR5cGUoKS0+aXNE b3VibGVUeSgpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXRUeXBlLT5pc1NpbmdsZVZh bHVlVHlwZSgpICYmIHJldFR5cGUtPmlzRG91YmxlVHkoKSk7Ci0tICAgICAgICAgICAgICAgIGlm IChyZXRUeXBlLT5pc1ZlY3RvclR5KCkgJiYgcmV0VHlwZS0+Z2V0VmVjdG9yRWxlbWVudFR5cGUo KS0+aXNEb3VibGVUeSgpKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChyZXRUeXBlLT5pc1ZlY3Rv clR5KCkgJiYKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3Rv clR5cGU+KHJldFR5cGUpLT5nZXRFbGVtZW50VHlwZSgpLT5pc0RvdWJsZVR5KCkpIHsKLSAgICAg ICAgICAgICAgICAgICAgIEFyZ1R5LnB1c2hfYmFjayhMTFZNVHlwZXM6OkRvdWJsZVZlY3RvclR5 cGUpOwotICAgICAgICAgICAgICAgICAgICAgLy8gX0R2V0lEVEggc3VmZml4IGlzIHVzZWQgaW4g dGFyZ2V0IGZpbGUgdG8gZGlmZmVyZW50aWF0ZSBzY2FsYXIKLSAgICAgICAgICAgICAgICAgICAg IC8vIGFuZCB2ZWN0b3IgdmVyc2lvbnMgb2YgaW50cmluc2ljcy4gSGVyZSB3ZSByZW1vdmUgdGhp cwotQEAgLTY1MTEsOCArNjU0MSwxNSBAQCBsbHZtOjpWYWx1ZSAqRml4QWRkcmVzc1NwYWNlOjpj YWxjdWxhdGVHYXRoZXJTY2F0dGVyQWRkcmVzcyhsbHZtOjpWYWx1ZSAqUHRyLCBsbAotIAotICAg ICAvLyBDYXN0IG9mZnNldHMgdG8gaW50NjQKLSAgICAgT2Zmc2V0cyA9IG5ldyBsbHZtOjpaRXh0 SW5zdCgKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgICAg IE9mZnNldHMsCi0rICAgICAgICBsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6 OkludDY0VHlwZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OmR5 bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KE9mZnNldHMtPmdldFR5cGUoKSktPmdldE51bUVsZW1l bnRzKCkpLAotKyAgICAgICAgInN2bV9vZmZzZXRfemV4dCIsIEluc2VydEJlZm9yZSk7Ci0rI2Vs c2UKLSAgICAgICAgIE9mZnNldHMsIGxsdm06OlZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6Oklu dDY0VHlwZSwgT2Zmc2V0cy0+Z2V0VHlwZSgpLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpKSwKLSAg ICAgICAgICJzdm1fb2Zmc2V0X3pleHQiLCBJbnNlcnRCZWZvcmUpOwotKyNlbmRpZgotIAotICAg ICBpZiAoIWxsdm06OmlzYTxsbHZtOjpDb25zdGFudFBvaW50ZXJOdWxsPihQdHIpKSB7Ci0gICAg ICAgICAvLyBDYXN0IHB0ciB0byBpbnQ2NAotQEAgLTY1MjAsMTMgKzY1NTcsMzEgQEAgbGx2bTo6 VmFsdWUgKkZpeEFkZHJlc3NTcGFjZTo6Y2FsY3VsYXRlR2F0aGVyU2NhdHRlckFkZHJlc3MobGx2 bTo6VmFsdWUgKlB0ciwgbGwKLSAKLSAgICAgICAgIC8vIFZlY3Rvcml6ZSBwdHIKLSAgICAgICAg IGxsdm06OlZhbHVlICp1bmRlZkluc2VydFZhbHVlID0KLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04g Pj0gSVNQQ19MTFZNXzExXzAKLSsgICAgICAgICAgICBsbHZtOjpVbmRlZlZhbHVlOjpnZXQobGx2 bTo6Rml4ZWRWZWN0b3JUeXBlOjpnZXQoCi0rICAgICAgICAgICAgICAgIExMVk1UeXBlczo6SW50 NjRUeXBlLCBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihhZGRyZXNzVHlwZSktPmdl dE51bUVsZW1lbnRzKCkpKTsKLSsjZWxzZQotICAgICAgICAgICAgIGxsdm06OlVuZGVmVmFsdWU6 OmdldChsbHZtOjpWZWN0b3JUeXBlOjpnZXQoTExWTVR5cGVzOjpJbnQ2NFR5cGUsIGFkZHJlc3NU eXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpKSk7Ci0rI2VuZGlmCi0gICAgICAgICBhZGRyZXNz ID0gbGx2bTo6SW5zZXJ0RWxlbWVudEluc3Q6OkNyZWF0ZSh1bmRlZkluc2VydFZhbHVlLCBhZGRy ZXNzLCBMTFZNSW50MzIoMCksICJzdm1fcHRyX2llaSIsIEluc2VydEJlZm9yZSk7Ci0gICAgICAg ICBsbHZtOjpDb25zdGFudCAqemVyb1ZlYyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxh dCgKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgICAg IGFkZHJlc3NUeXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpLAotKyNlbGlmIElTUENfTExWTV9W RVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rICAgICAgICAgICAge2xsdm06OmR5bl9jYXN0PGxs dm06OlZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2V9LAot KyNlbHNlCi0rICAgICAgICBsbHZtOjpFbGVtZW50Q291bnQ6OmdldCgKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4o YWRkcmVzc1R5cGUtPmdldE51bUVsZW1lbnRzKCksIGZhbHNlKSwKLSsjZW5kaWYKLSAgICAgICAg ICAgICBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKGxsdm06OlR5cGU6OmdldEludDMyVHko SW5zZXJ0QmVmb3JlLT5nZXRDb250ZXh0KCkpKSk7Ci0rCi0gICAgICAgICBsbHZtOjpWYWx1ZSAq dW5kZWZTaHVmZmxlVmFsdWUgPQotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1f MTFfMAotKyAgICAgICAgICAgIGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpGaXhlZFZlY3Rv clR5cGU6OmdldCgKLSsgICAgICAgICAgICAgICAgTExWTVR5cGVzOjpJbnQ2NFR5cGUsIGxsdm06 OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMo KSkpOwotKyNlbHNlCi0gICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OlZl Y3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDY0VHlwZSwgYWRkcmVzc1R5cGUtPmdldFZlY3Rv ck51bUVsZW1lbnRzKCkpKTsKLSsjZW5kaWYKLSAgICAgICAgIGFkZHJlc3MgPSBuZXcgbGx2bTo6 U2h1ZmZsZVZlY3Rvckluc3QoYWRkcmVzcywgdW5kZWZTaHVmZmxlVmFsdWUsIHplcm9WZWMsICJz dm1fcHRyX3N2aSIsIEluc2VydEJlZm9yZSk7Ci0gCi0gICAgICAgICAvLyBDYWxjdWxhdGUgYWRk cmVzcwotQEAgLTY1NTMsOSArNjYwOCwxMiBAQCBsbHZtOjpJbnN0cnVjdGlvbiAqRml4QWRkcmVz c1NwYWNlOjpwcm9jZXNzVmVjdG9yTG9hZChsbHZtOjpMb2FkSW5zdCAqTEkpIHsKLSAgICAgaWYg KHJldFR5cGUtPmdldFNjYWxhclR5cGUoKS0+aXNQb2ludGVyVHkoKSkgewotICAgICAgICAgaXNQ dHJMb2FkID0gdHJ1ZTsKLSAgICAgICAgIGF1dG8gc2NhbGFyVHlwZSA9IGctPnRhcmdldC0+aXMz MkJpdCgpID8gTExWTVR5cGVzOjpJbnQzMlR5cGUgOiBMTFZNVHlwZXM6OkludDY0VHlwZTsKLSsj aWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgICAgIHJldFR5cGUg PSBsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChzY2FsYXJUeXBlLCBsbHZtOjpkeW5fY2FzdDxs bHZtOjpWZWN0b3JUeXBlPihyZXRUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSk7Ci0rI2Vsc2UKLSAg ICAgICAgIHJldFR5cGUgPSBsbHZtOjpWZWN0b3JUeXBlOjpnZXQoc2NhbGFyVHlwZSwgcmV0VHlw ZS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSk7Ci0rI2VuZGlmCi0gICAgIH0KLS0KLSAgICAgbGx2 bTo6SW5zdHJ1Y3Rpb24gKnJlcyA9IGxHZW5YTG9hZEluc3QocHRyLCByZXRUeXBlLCBsbHZtOjpk eW5fY2FzdDxsbHZtOjpJbnN0cnVjdGlvbj4oTEkpKTsKLSAgICAgQXNzZXJ0KHJlcyk7Ci0gCi1A QCAtNjU4MCwxMSArNjYzOCwxNiBAQCBsbHZtOjpJbnN0cnVjdGlvbiAqRml4QWRkcmVzc1NwYWNl Ojpwcm9jZXNzU1ZNVmVjdG9yTG9hZChsbHZtOjpJbnN0cnVjdGlvbiAqQ0kpCi0gICAgIHB0ciA9 IG5ldyBsbHZtOjpJbnRUb1B0ckluc3QocHRyLCBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KHJldFR5 cGUsIDApLCBDSS0+Z2V0TmFtZSgpICsgIl9pbnR0b3B0ciIsIENJKTsKLSAgICAgbGx2bTo6SW5z dHJ1Y3Rpb24gKmxvYWRJbnN0ID0gTlVMTDsKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQ Q19MTFZNXzExXzAKLS0gICAgbG9hZEluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3QobGx2bTo6ZHlu X2Nhc3Q8bGx2bTo6UG9pbnRlclR5cGU+KHB0ci0+Z2V0VHlwZSgpKS0+Z2V0UG9pbnRlckVsZW1l bnRUeXBlKCksIGxvYWRJbnN0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD SS0+Z2V0TmFtZSgpLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSsgICAgbG9hZEluc3Qg PSBuZXcgbGx2bTo6TG9hZEluc3QobGx2bTo6ZHluX2Nhc3Q8bGx2bTo6UG9pbnRlclR5cGU+KHB0 ci0+Z2V0VHlwZSgpKS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIHB0ciwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ0ktPmdldE5hbWUoKSwgZmFsc2UgLyogbm90IHZvbGF0 aWxlICovLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFs aWduKGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkpLnZhbHVlT3JPbmUoKSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxsdm06Okluc3RydWN0aW9uICop TlVMTCk7Ci0gI2Vsc2UKLS0gICAgbG9hZEluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3QocHRyLCBD SS0+Z2V0TmFtZSgpLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSsgICAgbG9hZEluc3Qg PSBuZXcgbGx2bTo6TG9hZEluc3QocHRyLCBDSS0+Z2V0TmFtZSgpLCBmYWxzZSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6TWF5YmVBbGlnbihnLT50YXJnZXQtPmdl dE5hdGl2ZVZlY3RvckFsaWdubWVudCgpKS52YWx1ZU9yT25lKCksCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotICNlbmRpZgot KwotICAgICBBc3NlcnQobG9hZEluc3QpOwotICAgICByZXR1cm4gbG9hZEluc3Q7Ci0gfQotQEAg LTY2MDYsNyArNjY2OSwxMSBAQCBsbHZtOjpJbnN0cnVjdGlvbiAqRml4QWRkcmVzc1NwYWNlOjpw cm9jZXNzVmVjdG9yU3RvcmUobGx2bTo6U3RvcmVJbnN0ICpTSSkgewotICAgICAvLyBOb3RlOiBp dCBkb2Vzbid0IGxvb2sgbGlrZSBhIG5vcm1hbCBjYXNlIGZvciBHZW5YIHRhcmdldAotICAgICBp ZiAodmFsVHlwZS0+Z2V0U2NhbGFyVHlwZSgpLT5pc1BvaW50ZXJUeSgpKSB7Ci0gICAgICAgICBh dXRvIHNjYWxhclR5cGUgPSBnLT50YXJnZXQtPmlzMzJCaXQoKSA/IExMVk1UeXBlczo6SW50MzJU eXBlIDogTExWTVR5cGVzOjpJbnQ2NFR5cGU7Ci0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElT UENfTExWTV8xMV8wCi0rICAgICAgICB2YWxUeXBlID0gbGx2bTo6Rml4ZWRWZWN0b3JUeXBlOjpn ZXQoc2NhbGFyVHlwZSwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4odmFsVHlwZSkt PmdldE51bUVsZW1lbnRzKCkpOwotKyNlbHNlCi0gICAgICAgICB2YWxUeXBlID0gbGx2bTo6VmVj dG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIHZhbFR5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCkp OwotKyNlbmRpZgotICAgICAgICAgdmFsID0gbmV3IGxsdm06OlB0clRvSW50SW5zdCh2YWwsIHZh bFR5cGUsICJzdm1fc3RfdmFsX3B0cnRvaW50IiwgU0kpOwotICAgICB9Ci0gCi1AQCAtNjYzMSwx MiArNjY5OCw4IEBAIGxsdm06Okluc3RydWN0aW9uICpGaXhBZGRyZXNzU3BhY2U6OnByb2Nlc3NT Vk1WZWN0b3JTdG9yZShsbHZtOjpJbnN0cnVjdGlvbiAqQ0kpCi0gICAgIHB0ciA9IG5ldyBsbHZt OjpJbnRUb1B0ckluc3QocHRyLCBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KHZhbFR5cGUsIDApLCBD SS0+Z2V0TmFtZSgpICsgIl9pbnR0b3B0ciIsIENJKTsKLSAKLSAgICAgbGx2bTo6SW5zdHJ1Y3Rp b24gKnN0b3JlSW5zdCA9IE5VTEw7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExW TV8xMV8wCi0tICAgIGxvYWRJbnN0ID0gbmV3IGxsdm06OlN0b3JlSW5zdCh2YWwsIGxsdm06OmR5 bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihwdHItPmdldFR5cGUoKSktPmdldFBvaW50ZXJFbGVt ZW50VHlwZSgpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVJbnN0 LCBDSS0+Z2V0TmFtZSgpLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLS0jZWxzZQotLSAg ICBzdG9yZUluc3QgPSBuZXcgbGx2bTo6U3RvcmVJbnN0KHZhbCwgcHRyLCAobGx2bTo6SW5zdHJ1 Y3Rpb24gKilOVUxMKTsKLS0jZW5kaWYKLSsgICAgc3RvcmVJbnN0ID0gbmV3IGxsdm06OlN0b3Jl SW5zdCh2YWwsIHB0ciwgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGctPnRhcmdldC0+Z2V0TmF0 aXZlVmVjdG9yQWxpZ25tZW50KCkpLnZhbHVlT3JPbmUoKSk7Ci0gICAgIEFzc2VydChzdG9yZUlu c3QpOwotICAgICByZXR1cm4gc3RvcmVJbnN0OwotIH0KLUBAIC02NjQ1LDE1ICs2NzA4LDE4IEBA IGxsdm06Okluc3RydWN0aW9uICpGaXhBZGRyZXNzU3BhY2U6OmNyZWF0ZUludDhXclJlZ2lvbihs bHZtOjpWYWx1ZSAqVmFsLCBsbHZtOjpWCi0gICAgIGludCB3aWR0aCA9IGctPnRhcmdldC0+Z2V0 VmVjdG9yV2lkdGgoKTsKLSAKLSAgICAgbGx2bTo6VmFsdWUgKkFyZ3NbOF07Ci0tCi0rI2lmIElT UENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAgIEFyZ3NbMF0gPSBsbHZtOjpV bmRlZlZhbHVlOjpnZXQobGx2bTo6Rml4ZWRWZWN0b3JUeXBlOjpnZXQoTExWTVR5cGVzOjpJbnQ4 VHlwZSwgd2lkdGggKiA0KSk7IC8vIG9sZCB2YWx1ZQotKyNlbHNlCi0gICAgIEFyZ3NbMF0gPSBs bHZtOjpVbmRlZlZhbHVlOjpnZXQobGx2bTo6VmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50 OFR5cGUsIHdpZHRoICogNCkpOyAvLyBvbGQgdmFsdWUKLS0gICAgQXJnc1sxXSA9IFZhbDsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIHZhbHVlIHRvIHN0b3JlCi0tICAgIEFyZ3NbMl0gPSBsbHZtOjpDb25z dGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50MzJUeXBlLCAwKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvLyB2c3RyaWRlCi0tICAgIEFyZ3NbM10gPSBsbHZtOjpDb25zdGFudEludDo6 Z2V0KExMVk1UeXBlczo6SW50MzJUeXBlLCB3aWR0aCk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAvLyB3aWR0aAotLSAgICBBcmdzWzRdID0gbGx2bTo6Q29uc3RhbnRJbnQ6OmdldChMTFZNVHlw ZXM6OkludDMyVHlwZSwgNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RyaWRl Ci0tICAgIEFyZ3NbNV0gPSBsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50MTZU eXBlLCAwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXRzCi0tICAgIEFy Z3NbNl0gPSBsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50MzJUeXBlLCAwKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXJlbnQgd2lkdGggKGlnbm9yZWQpCi0t ICAgIEFyZ3NbN10gPSBNYXNrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXNrCi0rI2VuZGlmCi0rICAg IEFyZ3NbMV0gPSBWYWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIHZhbHVlIHRvIHN0b3JlCi0rICAgIEFyZ3NbMl0gPSBsbHZtOjpDb25zdGFudElu dDo6Z2V0KExMVk1UeXBlczo6SW50MzJUeXBlLCAwKTsgICAgIC8vIHZzdHJpZGUKLSsgICAgQXJn c1szXSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIHdpZHRo KTsgLy8gd2lkdGgKLSsgICAgQXJnc1s0XSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5 cGVzOjpJbnQzMlR5cGUsIDQpOyAgICAgLy8gc3RyaWRlCi0rICAgIEFyZ3NbNV0gPSBsbHZtOjpD b25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50MTZUeXBlLCAwKTsgICAgIC8vIG9mZnNldHMK LSsgICAgQXJnc1s2XSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5 cGUsIDApOyAgICAgLy8gcGFyZW50IHdpZHRoIChpZ25vcmVkKQotKyAgICBBcmdzWzddID0gTWFz azsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXNr Ci0gCi0gICAgIGxsdm06OlR5cGUgKlR5c1s0XTsKLSAKLUBAIC02NzA4LDcgKzY3NzQsMTIgQEAg bGx2bTo6SW5zdHJ1Y3Rpb24gKkZpeEFkZHJlc3NTcGFjZTo6cHJvY2Vzc0dhdGhlclNjYXR0ZXJQ cml2YXRlKGxsdm06OkNhbGxJbnN0ICoKLSAgICAgICAgIHJldHVybiBOVUxMOwotIAotICAgICBs bHZtOjpWYWx1ZSAqYWRkcmVzcyA9IGNhbGN1bGF0ZUdhdGhlclNjYXR0ZXJBZGRyZXNzKHB0ciwg b2Zmc2V0cywgQ0kpOwotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAot KyAgICBsbHZtOjpUeXBlICppOFZlY1R5cGUgPSBsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChM TFZNVHlwZXM6OkludDhUeXBlLCB3aWR0aCAqIDQpOwotKyNlbHNlCi0gICAgIGxsdm06OlR5cGUg Kmk4VmVjVHlwZSA9IGxsdm06OlZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDhUeXBlLCB3 aWR0aCAqIDQpOwotKyNlbmRpZgotKwotICAgICBib29sIGlzSW50OCA9ICh2YWx1ZS0+Z2V0VHlw ZSgpLT5nZXRTY2FsYXJUeXBlKCkgPT0gTExWTVR5cGVzOjpJbnQ4VHlwZSk7Ci0gCi0gICAgIEFz c2VydChhZGRyZXNzICYmICJCYWQgZ2F0aGVyL3NjYXR0ZXIgYWRkcmVzcyEiKTsKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDYucGF0Y2ggYi9zcmNwa2dzL2lzcGMv cGF0Y2hlcy9sbHZtMTItMDA2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh ODI5ZWE0ODM5MWUuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZt MTItMDA2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLUZyb20gYmIzZjQ5 M2QxZmJkNDVjNzllMWQ5ZGVlNjdhMDQzMGJhMzEzZWFhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IEFyaW5hIE5lc2hseWFldmEgPGFyaW5hLm5lc2hseWFldmFAaW50ZWwuY29tPgot RGF0ZTogVHVlLCAxOSBKYW4gMjAyMSAxMTowNzozMyAtMDgwMAotU3ViamVjdDogW1BBVENIXSBG aXhlZCBpZmRlZnMgZm9yIExMVk1fMTEKLQotLS0tCi0gc3JjL2N0eC5jcHAgfCAgNiArKystLS0K LSBzcmMvb3B0LmNwcCB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwg MTIgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY3R4 LmNwcCBiL3NyYy9jdHguY3BwCi1pbmRleCAyYTcyZTY4MzcuLjUyN2EwMmYzMCAxMDA2NDQKLS0t LSBhL3NyYy9jdHguY3BwCi0rKysgYi9zcmMvY3R4LmNwcAotQEAgLTE2OTEsNyArMTY5MSw3IEBA IGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpTbWVhclVuaWZvcm0obGx2bTo6VmFs dWUgKnZhbHVlLCBjb25zdCBsbHZtOjpUCi0gICAgIGlmIChsbHZtOjpDb25zdGFudCAqY29uc3Rf dmFsID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Q29uc3RhbnQ+KHZhbHVlKSkgewotICNpZiBJU1BD X0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgICAgICByZXQgPSBsbHZtOjpDb25z dGFudFZlY3Rvcjo6Z2V0U3BsYXQoZy0+dGFyZ2V0LT5nZXRWZWN0b3JXaWR0aCgpLCBjb25zdF92 YWwpOwotLSNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rI2VsaWYg SVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTJfMAotICAgICAgICAgcmV0ID0KLSAgICAg ICAgICAgICBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoe3N0YXRpY19jYXN0PHVuc2ln bmVkIGludD4oZy0+dGFyZ2V0LT5nZXRWZWN0b3JXaWR0aCgpKSwgZmFsc2V9LCBjb25zdF92YWwp OwotICNlbHNlIC8vIExMVk0gMTIuMCsKLUBAIC0zMTQ4LDcgKzMxNDgsNyBAQCBsbHZtOjpWYWx1 ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QnJvYWRjYXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxs dm06OlR5cGUgKnZlYwotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0g ICAgIGxsdm06OkNvbnN0YW50ICp6ZXJvVmVjID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNw bGF0KAotICAgICAgICAgdmVjVHlwZS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwgbGx2bTo6Q29u c3RhbnQ6OmdldE51bGxWYWx1ZShsbHZtOjpUeXBlOjpnZXRJbnQzMlR5KCpnLT5jdHgpKSk7Ci0t I2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzExXzAKLSsjZWxpZiBJU1BDX0xM Vk1fVkVSU0lPTiA8IElTUENfTExWTV8xMl8wCi0gICAgIGxsdm06OkNvbnN0YW50ICp6ZXJvVmVj ID0KLSAgICAgICAgIGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCh7c3RhdGljX2Nhc3Q8 dW5zaWduZWQgaW50Pih0eS0+Z2V0TnVtRWxlbWVudHMoKSksIGZhbHNlfSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVl KGxsdm06OlR5cGU6OmdldEludDMyVHkoKmctPmN0eCkpKTsKLUBAIC0zNjg4LDcgKzM2ODgsNyBA QCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2VuWFNpbWRDRlByZWRpY2F0ZShs bHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OgotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENf TExWTV8xMV8wCi0gICAgICAgICBkZWZhdWx0cyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRT cGxhdCh2dC0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUo dnQtPmdldEVsZW1lbnRUeXBlKCkpKTsKLS0jZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BD X0xMVk1fMTFfMAotKyNlbGlmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAg ICAgICAgIGRlZmF1bHRzID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KHtzdGF0aWNf Y2FzdDx1bnNpZ25lZCBpbnQ+KHZ0LT5nZXROdW1FbGVtZW50cygpKSwgZmFsc2V9LAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3Rh bnQ6OmdldE51bGxWYWx1ZSh2dC0+Z2V0RWxlbWVudFR5cGUoKSkpOwotICNlbHNlCi1kaWZmIC0t Z2l0IGEvc3JjL29wdC5jcHAgYi9zcmMvb3B0LmNwcAotaW5kZXggMTc4OWI4NDc2Li4zZmYxOTFh MGEgMTAwNjQ0Ci0tLS0gYS9zcmMvb3B0LmNwcAotKysrIGIvc3JjL29wdC5jcHAKLUBAIC0xMDQ1 LDcgKzEwNDUsNyBAQCBib29sIEludHJpbnNpY3NPcHQ6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpC YXNpY0Jsb2NrICZiYikgewotICAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBnLT50YXJnZXQt PmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpOwotICAgICAgICAgICAgICAgICBlbHNlCi0gICAg ICAgICAgICAgICAgICAgICBhbGlnbiA9IGNhbGxJbnN0LT5nZXRDYWxsZWRGdW5jdGlvbigpID09 IGF2eE1hc2tlZExvYWQzMiA/IDQgOiA4OwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BD X0xMVk1fMTBfMAotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAg ICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpsb2FkSW5zdCA9Ci0gICAgICAgICAgICAg ICAgICAgICBuZXcgbGx2bTo6TG9hZEluc3QoY2FzdFB0ciwgbGx2bTo6VHdpbmUoY2FsbEluc3Qt PmdldEFyZ09wZXJhbmQoMCktPmdldE5hbWUoKSkgKyAiX2xvYWQiLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgbGx2bTo6 TWF5YmVBbGlnbihhbGlnbiksIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotQEAgLTE0NzIs NyArMTQ3Miw3IEBAIHN0YXRpYyBsbHZtOjpWYWx1ZSAqbEdldEJhc2VQdHJBbmRPZmZzZXRzKGxs dm06OlZhbHVlICpwdHJzLCBsbHZtOjpWYWx1ZSAqKm9mZnNlCi0gICAgICAgICAgICAgICAgICAg ICBsbHZtOjpWYWx1ZSAqemVyb01hc2sgPQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENf TExWTV8xMV8wCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnRWZWN0b3I6 OmdldFNwbGF0KGN2LT5nZXRUeXBlKCktPmdldFZlY3Rvck51bUVsZW1lbnRzKCksCi0tI2VsaWYg SVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzExXzAKLSsjZWxpZiBJU1BDX0xMVk1fVkVS U0lPTiA8IElTUENfTExWTV8xMl8wCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6Q29u c3RhbnRWZWN0b3I6OmdldFNwbGF0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bGx2 bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4oY3YtPmdldFR5cGUoKSktPmdldE51bUVsZW1l bnRzKCksIGZhbHNlfSwKLSAjZWxzZSAvLyBMTFZNIDEyLjArCi1AQCAtMTQ5NSw3ICsxNDk1LDcg QEAgc3RhdGljIGxsdm06OlZhbHVlICpsR2V0QmFzZVB0ckFuZE9mZnNldHMobGx2bTo6VmFsdWUg KnB0cnMsIGxsdm06OlZhbHVlICoqb2Zmc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZt OjpWYWx1ZSAqemVyb01hc2sgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0gI2lm IElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYm9wX3Zhcl90eXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpLAotLSNlbGlmIElT UENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPCBJU1BDX0xMVk1fMTJfMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bGx2bTo6 ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4oYm9wX3Zhcl90eXBlKS0+Z2V0TnVtRWxlbWVudHMo KSwgZmFsc2V9LAotICNlbHNlIC8vIExMVk0gMTIuMCsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGx2bTo6RWxlbWVudENvdW50OjpnZXQoCi1AQCAtMjgwMyw3ICsyODAzLDcgQEAgc3Rh dGljIGJvb2wgbEdTVG9Mb2FkU3RvcmUobGx2bTo6Q2FsbEluc3QgKmNhbGxJbnN0KSB7Ci0gICAg ICAgICAgICAgbGx2bTo6VmFsdWUgKnplcm9NYXNrID0KLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04g PCBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudFZlY3Rvcjo6 Z2V0U3BsYXQoY2FsbEluc3QtPmdldFR5cGUoKS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwKLS0j ZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElTUENfTExW TV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3Rh bnRWZWN0b3I6OmdldFNwbGF0KAotICAgICAgICAgICAgICAgICAgICAge2xsdm06OmR5bl9jYXN0 PGxsdm06OlZlY3RvclR5cGU+KGNhbGxJbnN0LT5nZXRUeXBlKCkpLT5nZXROdW1FbGVtZW50cygp LCBmYWxzZX0sCi0gCi1AQCAtMzEwMCw3ICszMTAwLDcgQEAgc3RhdGljIGJvb2wgbEltcHJvdmVN YXNrZWRMb2FkKGxsdm06OkNhbGxJbnN0ICpjYWxsSW5zdCwgbGx2bTo6QmFzaWNCbG9jazo6aXRl cmEKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBsbHZtOjpUeXBlICpwdHJUeXBlID0gbGx2bTo6 UG9pbnRlclR5cGU6OmdldChjYWxsSW5zdC0+Z2V0VHlwZSgpLCAwKTsKLSAgICAgICAgICAgICBw dHIgPSBuZXcgbGx2bTo6Qml0Q2FzdEluc3QocHRyLCBwdHJUeXBlLCAicHRyX2Nhc3RfZm9yX2xv YWQiLCBjYWxsSW5zdCk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMF8w Ci0rI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAgICAgICBs b2FkID0gbmV3IGxsdm06OkxvYWRJbnN0KAotICAgICAgICAgICAgICAgICBwdHIsIGNhbGxJbnN0 LT5nZXROYW1lKCksIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywKLSAgICAgICAgICAgICAgICAg bGx2bTo6TWF5YmVBbGlnbihnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5ID8gZy0+dGFyZ2V0LT5n ZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSA6IGluZm8tPmFsaWduKQotQEAgLTM0NTksNyArMzQ1 OSw3IEBAIGxsdm06OlZhbHVlICpsR0VQQW5kTG9hZChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgaW50 NjRfdCBvZmZzZXQsIGludCBhbGlnbiwgbGx2bTo6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg IGxsdm06OlR5cGUgKnR5cGUpIHsKLSAgICAgbGx2bTo6VmFsdWUgKnB0ciA9IGxHRVBJbnN0KGJh c2VQdHIsIExMVk1JbnQ2NChvZmZzZXQpLCAibmV3X2Jhc2UiLCBpbnNlcnRCZWZvcmUpOwotICAg ICBwdHIgPSBuZXcgbGx2bTo6Qml0Q2FzdEluc3QocHRyLCBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0 KHR5cGUsIDApLCAicHRyX2Nhc3QiLCBpbnNlcnRCZWZvcmUpOwotLSNpZiBJU1BDX0xMVk1fVkVS U0lPTiA9PSBJU1BDX0xMVk1fMTBfMAotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExW TV8xMV8wCi0gICAgIHJldHVybiBuZXcgbGx2bTo6TG9hZEluc3QocHRyLCAiZ2F0aGVyX2xvYWQi LCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sIGxsdm06Ok1heWJlQWxpZ24oYWxpZ24pLCBpbnNl cnRCZWZvcmUpOwotICNlbHNlIC8vIExMVk0gMTEuMCsKLSAgICAgcmV0dXJuIG5ldyBsbHZtOjpM b2FkSW5zdChsbHZtOjpkeW5fY2FzdDxsbHZtOjpQb2ludGVyVHlwZT4ocHRyLT5nZXRUeXBlKCkp LT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgcHRyLAotQEAgLTYxODMsNyArNjE4Myw3IEBAIGJv b2wgUmVwbGFjZUxMVk1JbnRyaW5zaWNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9j ayAmYmIpIHsKLSAgICAgICAgICAgICAgICAgQXJncy5wdXNoX2JhY2sobGx2bTo6Q29uc3RhbnRW ZWN0b3I6OmdldFNwbGF0KAotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8w Ci0gICAgICAgICAgICAgICAgICAgICBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCks Ci0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzExXzAKLSsjZWxpZiBJU1BD X0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMl8wCi0gICAgICAgICAgICAgICAgICAgICB7c3Rh dGljX2Nhc3Q8dW5zaWduZWQgaW50PihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCkp LCBmYWxzZX0sCi0gI2Vsc2UgLy8gTExWTSAxMi4wKwotICAgICAgICAgICAgICAgICAgICAgbGx2 bTo6RWxlbWVudENvdW50OjpnZXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihnLT50YXJnZXQt PmdldE5hdGl2ZVZlY3RvcldpZHRoKCkpLCBmYWxzZSksCi1AQCAtNjE5NSw3ICs2MTk1LDcgQEAg Ym9vbCBSZXBsYWNlTExWTUludHJpbnNpY3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Js b2NrICZiYikgewotICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqemVyb01hc2sgPSBsbHZt OjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQ Q19MTFZNXzExXzAKLSAgICAgICAgICAgICAgICAgICAgIGctPnRhcmdldC0+Z2V0TmF0aXZlVmVj dG9yV2lkdGgoKSwKLS0jZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAot KyNlbGlmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAgICAgICAgICAgICAg ICAgICAgIHtzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVj dG9yV2lkdGgoKSksIGZhbHNlfSwKLSAjZWxzZSAvLyBMTFZNIDEyLjArCi0gICAgICAgICAgICAg ICAgICAgICBsbHZtOjpFbGVtZW50Q291bnQ6OmdldChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+ KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSksIGZhbHNlKSwKLUBAIC02NTY3LDcg KzY1NjcsNyBAQCBsbHZtOjpWYWx1ZSAqRml4QWRkcmVzc1NwYWNlOjpjYWxjdWxhdGVHYXRoZXJT Y2F0dGVyQWRkcmVzcyhsbHZtOjpWYWx1ZSAqUHRyLCBsbAotICAgICAgICAgbGx2bTo6Q29uc3Rh bnQgKnplcm9WZWMgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0gI2lmIElTUENf TExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAgICAgICBhZGRyZXNzVHlwZS0+ Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwKLS0jZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BD X0xMVk1fMTFfMAotKyNlbGlmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAg ICAgICAgICAgICB7bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUp LT5nZXROdW1FbGVtZW50cygpLCBmYWxzZX0sCi0gI2Vsc2UKLSAgICAgICAgIGxsdm06OkVsZW1l bnRDb3VudDo6Z2V0KApkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAw Ny5wYXRjaCBiL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDcucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiOTc1Zjg5NmM3ZS4uMDAwMDAwMDAwMDAwCi0tLSBhL3Ny Y3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwx NjAgKzAsMCBAQAotRnJvbSA2MmY1YTZjMzdiZjI2ZmMyNWE3Y2Y4MTg2ODA1MmQzNDcyODc0NjEw IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQXJpbmEgTmVzaGx5YWV2YSA8YXJpbmEu bmVzaGx5YWV2YUBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDIzIE1hciAyMDIxIDIzOjA3OjMwIC0w NzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBnZW5lcmF0ZSBmdW5jdGlvbiBtYXNrIHdoZW4g aXQgaXMgbm90IHJlcXVpcmVkCi0KLS0tLQotIHNyYy9jdHguY3BwICAgICAgICAgICAgICAgICAg ICB8IDM5ICsrKysrKysrKysrKysrLS0tLS0tLQotIHRlc3RzL2xpdC10ZXN0cy9mdWxsX21hc2su aXNwYyB8IDYzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNo YW5nZWQsIDkwIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEw MDY0NCB0ZXN0cy9saXQtdGVzdHMvZnVsbF9tYXNrLmlzcGMKLQotZGlmZiAtLWdpdCBhL3NyYy9j dHguY3BwIGIvc3JjL2N0eC5jcHAKLWluZGV4IDUyN2EwMmYzMC4uOWU3NzVmYzVjIDEwMDY0NAot LS0tIGEvc3JjL2N0eC5jcHAKLSsrKyBiL3NyYy9jdHguY3BwCi1AQCAtMjMxLDEwICsyMzEsMTgg QEAgRnVuY3Rpb25FbWl0Q29udGV4dDo6RnVuY3Rpb25FbWl0Q29udGV4dChGdW5jdGlvbiAqZnVu YywgU3ltYm9sICpmdW5TeW0sIGxsdm06OkYKLSAgICAgaW50ZXJuYWxNYXNrUG9pbnRlciA9IEFs bG9jYUluc3QoTExWTVR5cGVzOjpNYXNrVHlwZSwgImludGVybmFsX21hc2tfbWVtb3J5Iik7Ci0g ICAgIFN0b3JlSW5zdChMTFZNTWFza0FsbE9uLCBpbnRlcm5hbE1hc2tQb2ludGVyKTsKLSAKLS0g ICAgZnVuY3Rpb25NYXNrVmFsdWUgPSBMTFZNTWFza0FsbE9uOwotLQotLSAgICBmdWxsTWFza1Bv aW50ZXIgPSBBbGxvY2FJbnN0KExMVk1UeXBlczo6TWFza1R5cGUsICJmdWxsX21hc2tfbWVtb3J5 Iik7Ci0tICAgIFN0b3JlSW5zdChMTFZNTWFza0FsbE9uLCBmdWxsTWFza1BvaW50ZXIpOwotKyAg ICAvLyBJZiB0aGUgZnVuY3Rpb24gZG9lc24ndCBoYXZlIF9fbWFzayBpbiBwYXJhbWV0ZXJzLCB0 aGVyZSBpcyBubyBuZWVkIHRvCi0rICAgIC8vIGhhdmUgZnVuY3Rpb24gbWFzawotKyAgICBpZiAo KGZ1bmMtPkdldFR5cGUoKS0+aXNFeHBvcnRlZCAmJgotKyAgICAgICAgIChsZi0+Z2V0RnVuY3Rp b25UeXBlKCktPmdldE51bVBhcmFtcygpID09IGZ1bmMtPkdldFR5cGUoKS0+R2V0TnVtUGFyYW1l dGVycygpKSkgfHwKLSsgICAgICAgIChmdW5jLT5HZXRUeXBlKCktPmlzVW5tYXNrZWQpIHx8IChm dW5jLT5HZXRUeXBlKCktPmlzVGFzaykpIHsKLSsgICAgICAgIGZ1bmN0aW9uTWFza1ZhbHVlID0g TlVMTDsKLSsgICAgICAgIGZ1bGxNYXNrUG9pbnRlciA9IE5VTEw7Ci0rICAgIH0gZWxzZSB7Ci0r ICAgICAgICBmdW5jdGlvbk1hc2tWYWx1ZSA9IExMVk1NYXNrQWxsT247Ci0rICAgICAgICBmdWxs TWFza1BvaW50ZXIgPSBBbGxvY2FJbnN0KExMVk1UeXBlczo6TWFza1R5cGUsICJmdWxsX21hc2tf bWVtb3J5Iik7Ci0rICAgICAgICBTdG9yZUluc3QoTExWTU1hc2tBbGxPbiwgZnVsbE1hc2tQb2lu dGVyKTsKLSsgICAgfQotIAotICAgICBibG9ja0VudHJ5TWFzayA9IE5VTEw7Ci0gICAgIGJyZWFr TGFuZXNQdHIgPSBjb250aW51ZUxhbmVzUHRyID0gTlVMTDsKLUBAIC0zODksMjAgKzM5NywyNiBA QCBsbHZtOjpCYXNpY0Jsb2NrICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRDdXJyZW50QmFzaWNC bG9jaygpIHsgcmV0dXJuIGJibG9jazsgfQotIAotIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6 U2V0Q3VycmVudEJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAqYmIpIHsgYmJsb2NrID0gYmI7 IH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0RnVuY3Rpb25NYXNr KCkgeyByZXR1cm4gZnVuY3Rpb25NYXNrVmFsdWU7IH0KLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25F bWl0Q29udGV4dDo6R2V0RnVuY3Rpb25NYXNrKCkgeyByZXR1cm4gZnVsbE1hc2tQb2ludGVyID8g ZnVuY3Rpb25NYXNrVmFsdWUgOiBMTFZNTWFza0FsbE9uOyB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1 bmN0aW9uRW1pdENvbnRleHQ6OkdldEludGVybmFsTWFzaygpIHsgcmV0dXJuIExvYWRJbnN0KGlu dGVybmFsTWFza1BvaW50ZXIsIE5VTEwsICJsb2FkX21hc2siKTsgfQotIAotIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRGdWxsTWFzaygpIHsKLS0gICAgcmV0dXJuIEJpbmFy eU9wZXJhdG9yKGxsdm06Okluc3RydWN0aW9uOjpBbmQsIEdldEludGVybmFsTWFzaygpLCBmdW5j dGlvbk1hc2tWYWx1ZSwgImludGVybmFsX21hc2smZnVuY3Rpb25fbWFzayIpOwotKyAgICByZXR1 cm4gZnVsbE1hc2tQb2ludGVyID8gQmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkFu ZCwgR2V0SW50ZXJuYWxNYXNrKCksIGZ1bmN0aW9uTWFza1ZhbHVlLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVybmFsX21hc2smZnVuY3Rpb25fbWFz ayIpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBHZXRJbnRlcm5hbE1hc2soKTsKLSB9 Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEZ1bGxNYXNrUG9pbnRl cigpIHsgcmV0dXJuIGZ1bGxNYXNrUG9pbnRlcjsgfQotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVt aXRDb250ZXh0OjpHZXRGdWxsTWFza1BvaW50ZXIoKSB7Ci0rICAgIHJldHVybiBmdWxsTWFza1Bv aW50ZXIgPyBmdWxsTWFza1BvaW50ZXIgOiBpbnRlcm5hbE1hc2tQb2ludGVyOwotK30KLSAKLSB2 b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6OlNldEZ1bmN0aW9uTWFzayhsbHZtOjpWYWx1ZSAqdmFs dWUpIHsKLS0gICAgZnVuY3Rpb25NYXNrVmFsdWUgPSB2YWx1ZTsKLS0gICAgaWYgKGJibG9jayAh PSBOVUxMKQotLSAgICAgICAgU3RvcmVJbnN0KEdldEZ1bGxNYXNrKCksIGZ1bGxNYXNrUG9pbnRl cik7Ci0rICAgIGlmIChmdWxsTWFza1BvaW50ZXIgIT0gTlVMTCkgewotKyAgICAgICAgZnVuY3Rp b25NYXNrVmFsdWUgPSB2YWx1ZTsKLSsgICAgICAgIGlmIChiYmxvY2sgIT0gTlVMTCkKLSsgICAg ICAgICAgICBTdG9yZUluc3QoR2V0RnVsbE1hc2soKSwgZnVsbE1hc2tQb2ludGVyKTsKLSsgICAg fQotIH0KLSAKLSB2b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6OlNldEJsb2NrRW50cnlNYXNrKGxs dm06OlZhbHVlICp2YWx1ZSkgeyBibG9ja0VudHJ5TWFzayA9IHZhbHVlOyB9Ci1AQCAtNDEwLDcg KzQyNCw4IEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6U2V0QmxvY2tFbnRyeU1hc2sobGx2 bTo6VmFsdWUgKnZhbHVlKSB7IGJsb2NrRW50cnlNYXNrCi0gdm9pZCBGdW5jdGlvbkVtaXRDb250 ZXh0OjpTZXRJbnRlcm5hbE1hc2sobGx2bTo6VmFsdWUgKnZhbHVlKSB7Ci0gICAgIFN0b3JlSW5z dCh2YWx1ZSwgaW50ZXJuYWxNYXNrUG9pbnRlcik7Ci0gICAgIC8vIGtsdWRnZSBzbyB0aGF0IF9f bWFzayByZXR1cm5zIHRoZSByaWdodCB2YWx1ZSBpbiBpc3BjIGNvZGUuCi0tICAgIFN0b3JlSW5z dChHZXRGdWxsTWFzaygpLCBmdWxsTWFza1BvaW50ZXIpOwotKyAgICBpZiAoZnVsbE1hc2tQb2lu dGVyKQotKyAgICAgICAgU3RvcmVJbnN0KEdldEZ1bGxNYXNrKCksIGZ1bGxNYXNrUG9pbnRlcik7 Ci0gfQotIAotIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6U2V0SW50ZXJuYWxNYXNrQW5kKGxs dm06OlZhbHVlICpvbGRNYXNrLCBsbHZtOjpWYWx1ZSAqdGVzdCkgewotQEAgLTEyNjUsNyArMTI4 MCw3IEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6Q3VycmVudExhbmVzUmV0dXJuZWQoRXhw ciAqZXhwciwgYm9vbCBkb0NvaGVyZW5jZUNoZWNrCi0gICAgICAgICAvLyBsYW5lcyBoYXZlIHJl dHVybmVkCi0gICAgICAgICBpZiAoZG9Db2hlcmVuY2VDaGVjaykgewotICAgICAgICAgICAgIC8v IGlmIG5ld1JldHVybmVkTGFuZXMgPT0gZnVuY3Rpb25NYXNrVmFsdWUsIGdldCBvdXQgb2YgaGVy ZSEKLS0gICAgICAgICAgICBsbHZtOjpWYWx1ZSAqY21wID0gTWFza3NBbGxFcXVhbChmdW5jdGlv bk1hc2tWYWx1ZSwgbmV3UmV0dXJuZWRMYW5lcyk7Ci0rICAgICAgICAgICAgbGx2bTo6VmFsdWUg KmNtcCA9IE1hc2tzQWxsRXF1YWwoR2V0RnVuY3Rpb25NYXNrKCksIG5ld1JldHVybmVkTGFuZXMp OwotICAgICAgICAgICAgIGxsdm06OkJhc2ljQmxvY2sgKmJEb1JldHVybiA9IENyZWF0ZUJhc2lj QmxvY2soImRvX3JldHVybiIpOwotICAgICAgICAgICAgIGxsdm06OkJhc2ljQmxvY2sgKmJOb1Jl dHVybiA9IENyZWF0ZUJhc2ljQmxvY2soIm5vX3JldHVybiIpOwotICAgICAgICAgICAgIEJyYW5j aEluc3QoYkRvUmV0dXJuLCBiTm9SZXR1cm4sIGNtcCk7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvbGl0 LXRlc3RzL2Z1bGxfbWFzay5pc3BjIGIvdGVzdHMvbGl0LXRlc3RzL2Z1bGxfbWFzay5pc3BjCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi5hYzBiMGJjYTMKLS0tLSAvZGV2 L251bGwKLSsrKyBiL3Rlc3RzL2xpdC10ZXN0cy9mdWxsX21hc2suaXNwYwotQEAgLTAsMCArMSw2 MyBAQAotKy8vIFJVTjogJXtpc3BjfSAlcyAtRElTUENfRVhQT1JUIC0tZW1pdC1sbHZtLXRleHQg LU8wIC0tbm93cmFwIC1vICV0LmxsCi0rLy8gUlVOOiBGaWxlQ2hlY2sgLS1pbnB1dC1maWxlPSV0 LmxsIC1jaGVjay1wcmVmaXg9Q0hFQ0tfSVNQQ19FWFBPUlQgJXMKLSsKLSsvLyBSVU46ICV7aXNw Y30gJXMgLURJU1BDX1VOTUFTS0VEIC0tZW1pdC1sbHZtLXRleHQgLU8wIC0tbm93cmFwIC1vICV0 LmxsCi0rLy8gUlVOOiBGaWxlQ2hlY2sgLS1pbnB1dC1maWxlPSV0LmxsIC1jaGVjay1wcmVmaXg9 Q0hFQ0tfSVNQQ19VTk1BU0tFRCAlcwotKwotKy8vIFJVTjogJXtpc3BjfSAlcyAtRElTUENfTk9R VUFMSUYgLS1lbWl0LWxsdm0tdGV4dCAtTzAgLS1ub3dyYXAgLW8gJXQubGwKLSsvLyBSVU46IEZp bGVDaGVjayAtLWlucHV0LWZpbGU9JXQubGwgLWNoZWNrLXByZWZpeD1DSEVDS19JU1BDX05PUVVB TElGICVzCi0rCi0rLy8gUlVOOiAle2lzcGN9ICVzIC1ESVNQQ19UQVNLIC0tZW1pdC1sbHZtLXRl eHQgLU8wIC0tbm93cmFwIC1vICV0LmxsCi0rLy8gUlVOOiBGaWxlQ2hlY2sgLS1pbnB1dC1maWxl PSV0LmxsIC1jaGVjay1wcmVmaXg9Q0hFQ0tfSVNQQ19UQVNLICVzCi0rCi0rc3RydWN0IFBhcmFt ZXRlcnMgewotKyAgICBmbG9hdCAqdm91dDsKLSsgICAgaW50IHBhcmFtOwotK307Ci0rCi0rI2lm ZGVmIElTUENfRVhQT1JUCi0rLy8gQ0hFQ0tfSVNQQ19FWFBPUlQ6IGRlZmluZSB2b2lkIEBzaW1w bGVfZXhwb3J0X19fCi0rLy8gQ0hFQ0tfSVNQQ19FWFBPUlQ6ICVmdWxsX21hc2tfbWVtb3J5ID0g YWxsb2NhCi0rLy8gQ0hFQ0tfSVNQQ19FWFBPUlQ6IGRlZmluZSB2b2lkIEBzaW1wbGVfZXhwb3J0 KAotKy8vIENIRUNLX0lTUENfRVhQT1JULU5PVDogJWZ1bGxfbWFza19tZW1vcnkgPSBhbGxvY2EK LStleHBvcnQgdm9pZCBzaW1wbGVfZXhwb3J0KHZvaWQgKnVuaWZvcm0gX3ApIHsKLSsgICAgUGFy YW1ldGVycyAqdW5pZm9ybSBwID0gKFBhcmFtZXRlcnMgKiB1bmlmb3JtKSBfcDsKLSsgICAgaWYg KHByb2dyYW1JbmRleCA+IHAtPnBhcmFtKQotKyAgICAgICAgcC0+dm91dFtwcm9ncmFtSW5kZXhd ID0gcHJvZ3JhbUNvdW50ICogcHJvZ3JhbUluZGV4OwotK30KLSsjZW5kaWYKLSsjaWZkZWYgSVNQ Q19VTk1BU0tFRAotKy8vIENIRUNLX0lTUENfVU5NQVNLRUQ6IGRlZmluZSB2b2lkIEBzaW1wbGVf dW5tYXNrZWQKLSsvLyBDSEVDS19JU1BDX1VOTUFTS0VELU5PVDogJWZ1bGxfbWFza19tZW1vcnkg PSBhbGxvY2EKLSt1bm1hc2tlZCB2b2lkIHNpbXBsZV91bm1hc2tlZCh2b2lkICp1bmlmb3JtIF9w KSB7Ci0rICAgIFBhcmFtZXRlcnMgKnVuaWZvcm0gcCA9IChQYXJhbWV0ZXJzICogdW5pZm9ybSkg X3A7Ci0rICAgIGlmIChwcm9ncmFtSW5kZXggPiBwLT5wYXJhbSkKLSsgICAgICAgIHAtPnZvdXRb cHJvZ3JhbUluZGV4XSA9IHByb2dyYW1Db3VudCAqIHByb2dyYW1JbmRleDsKLSt9Ci0rI2VuZGlm Ci0rI2lmZGVmIElTUENfTk9RVUFMSUYKLSsvLyBDSEVDS19JU1BDX05PUVVBTElGOiBkZWZpbmUg dm9pZCBAc2ltcGxlCi0rLy8gQ0hFQ0tfSVNQQ19OT1FVQUxJRjogJWZ1bGxfbWFza19tZW1vcnkg PSBhbGxvY2EKLSt2b2lkIHNpbXBsZSh2b2lkICp1bmlmb3JtIF9wKSB7Ci0rICAgIFBhcmFtZXRl cnMgKnVuaWZvcm0gcCA9IChQYXJhbWV0ZXJzICogdW5pZm9ybSkgX3A7Ci0rICAgIGlmIChwcm9n cmFtSW5kZXggPiBwLT5wYXJhbSkKLSsgICAgICAgIHAtPnZvdXRbcHJvZ3JhbUluZGV4XSA9IHBy b2dyYW1Db3VudCAqIHByb2dyYW1JbmRleDsKLSt9Ci0rI2VuZGlmCi0rI2lmZGVmIElTUENfVEFT SwotKwotKy8vIENIRUNLX0lTUENfVEFTSzogZGVmaW5lIHZvaWQgQHNpbXBsZV90YXNrCi0rLy8g Q0hFQ0tfSVNQQ19UQVNLLU5PVDogJWZ1bGxfbWFza19tZW1vcnkgPSBhbGxvY2EKLSsvLyBDSEVD S19JU1BDX1RBU0s6IGRlZmluZSB2b2lkIEBzaW1wbGVfZW50cnlfcG9pbnRfXwotKy8vIENIRUNL X0lTUENfVEFTSzogJWZ1bGxfbWFza19tZW1vcnkgPSBhbGxvY2EKLSsvLyBDSEVDS19JU1BDX1RB U0s6IGRlZmluZSB2b2lkIEBzaW1wbGVfZW50cnlfcG9pbnQoCi0rLy8gQ0hFQ0tfSVNQQ19UQVNL LU5PVDogJWZ1bGxfbWFza19tZW1vcnkgPSBhbGxvY2EKLSt0YXNrIHZvaWQgc2ltcGxlX3Rhc2so dm9pZCAqdW5pZm9ybSBfcCkgewotKyAgICBQYXJhbWV0ZXJzICp1bmlmb3JtIHAgPSAoUGFyYW1l dGVycyAqIHVuaWZvcm0pIF9wOwotKyAgICBpZiAocHJvZ3JhbUluZGV4ID4gcC0+cGFyYW0pCi0r ICAgICAgICBwLT52b3V0W3Byb2dyYW1JbmRleF0gPSBwcm9ncmFtQ291bnQgKiBwcm9ncmFtSW5k ZXg7Ci0rfQotK2V4cG9ydCB2b2lkIHNpbXBsZV9lbnRyeV9wb2ludCh2b2lkICp1bmlmb3JtIHBh cmFtZXRlcnMsIHVuaWZvcm0gaW50IGRpbTAsIHVuaWZvcm0gaW50IGRpbTEsIHVuaWZvcm0gaW50 IGRpbTIpIHsKLSsgICAgbGF1bmNoW2RpbTAsIGRpbTEsIGRpbTJdIHNpbXBsZV90YXNrKHBhcmFt ZXRlcnMpOwotK30KLSsjZW5kaWYKLVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwOC5wYXRjaCBiL3NyY3BrZ3MvaXNw Yy9wYXRjaGVzL2xsdm0xMi0wMDgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGM4NDEzZDhiNzg4Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xs dm0xMi0wMDgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotRnJvbSBhZmFk MTQyMjdkOTIwNGEzYzhhNjI2Y2E2MDhmNWI0M2MzMjE4ZmU5IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogQXJpbmEgTmVzaGx5YWV2YSA8YXJpbmEubmVzaGx5YWV2YUBpbnRlbC5jb20+ Ci1EYXRlOiBUdWUsIDQgTWF5IDIwMjEgMTE6NDM6NTIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0g Rml4ZWQgSVNQQyBnZW4gYnVpbGQgZm9yIExMVk0xMgotCi0tLS0KLSBzcmMvY3R4LmNwcCB8ICA0 ICsrKysKLSBzcmMvb3B0LmNwcCB8IDQzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDE0IGRlbGV0 aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2N0eC5jcHAgYi9zcmMvY3R4LmNwcAotaW5kZXgg MGM3MDUwNTkxLi5mN2RjMDY5MzkgMTAwNjQ0Ci0tLS0gYS9zcmMvY3R4LmNwcAotKysrIGIvc3Jj L2N0eC5jcHAKLUBAIC0zNzM4LDcgKzM3MzgsMTEgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1p dENvbnRleHQ6OkdlblhTaW1kQ0ZBbnkobGx2bTo6VmFsdWUgKnZhbHVlKSB7Ci0gCi0gbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdlblhTaW1kQ0ZQcmVkaWNhdGUobGx2bTo6VmFs dWUgKnZhbHVlLCBsbHZtOjpWYWx1ZSAqZGVmYXVsdHMpIHsKLSAgICAgQXNzZXJ0UG9zKGN1cnJl bnRQb3MsIGxsdm06OmlzYTxsbHZtOjpWZWN0b3JUeXBlPih2YWx1ZS0+Z2V0VHlwZSgpKSk7Ci0r I2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAgIGxsdm06OkZpeGVk VmVjdG9yVHlwZSAqdnQgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KHZh bHVlLT5nZXRUeXBlKCkpOwotKyNlbHNlCi0gICAgIGxsdm06OlZlY3RvclR5cGUgKnZ0ID0gbGx2 bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4odmFsdWUtPmdldFR5cGUoKSk7Ci0rI2VuZGlm Ci0gICAgIGlmIChkZWZhdWx0cyA9PSBOVUxMKSB7Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwg SVNQQ19MTFZNXzExXzAKLSAgICAgICAgIGRlZmF1bHRzID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6 OmdldFNwbGF0KHZ0LT5nZXRWZWN0b3JOdW1FbGVtZW50cygpLAotZGlmZiAtLWdpdCBhL3NyYy9v cHQuY3BwIGIvc3JjL29wdC5jcHAKLWluZGV4IGNlYTRhZmEyMy4uNGUzM2Q2YjFhIDEwMDY0NAot LS0tIGEvc3JjL29wdC5jcHAKLSsrKyBiL3NyYy9vcHQuY3BwCi1AQCAtMjkxNiw5ICsyOTE2LDEz IEBAIHN0YXRpYyBsbHZtOjpGdW5jdGlvbiAqbEdlblhNYXNrZWRJbnQ4SW5zdChsbHZtOjpJbnN0 cnVjdGlvbiAqaW5zdCwgYm9vbCBpc1N0b3JlCi0gCi0gc3RhdGljIGxsdm06OkNhbGxJbnN0ICps R2VuWFN0b3JlSW5zdChsbHZtOjpWYWx1ZSAqdmFsLCBsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpJ bnN0cnVjdGlvbiAqaW5zdCkgewotICAgICBBc3NlcnQoZy0+dGFyZ2V0LT5pc0dlblhUYXJnZXQo KSk7Ci0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAgIEFzc2Vy dChsbHZtOjppc2E8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPih2YWwtPmdldFR5cGUoKSkpOwotKyAg ICBsbHZtOjpGaXhlZFZlY3RvclR5cGUgKnZhbFZlY1R5cGUgPSBsbHZtOjpkeW5fY2FzdDxsbHZt OjpGaXhlZFZlY3RvclR5cGU+KHZhbC0+Z2V0VHlwZSgpKTsKLSsjZWxzZQotICAgICBBc3NlcnQo bGx2bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KHZhbC0+Z2V0VHlwZSgpKSk7Ci0tCi0gICAgIGxs dm06OlZlY3RvclR5cGUgKnZhbFZlY1R5cGUgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JU eXBlPih2YWwtPmdldFR5cGUoKSk7Ci0rI2VuZGlmCi0gICAgIEFzc2VydChsbHZtOjppc1Bvd2Vy T2YyXzMyKHZhbFZlY1R5cGUtPmdldE51bUVsZW1lbnRzKCkpKTsKLSAgICAgQXNzZXJ0KHZhbFZl Y1R5cGUtPmdldFByaW1pdGl2ZVNpemVJbkJpdHMoKSAvIDggPD0gOCAqIE9XT1JEKTsKLSAKLUBA IC0yOTQyLDkgKzI5NDYsMTMgQEAgc3RhdGljIGxsdm06OkNhbGxJbnN0ICpsR2VuWFN0b3JlSW5z dChsbHZtOjpWYWx1ZSAqdmFsLCBsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjoKLSB9Ci0gCi0gc3Rh dGljIGxsdm06OkNhbGxJbnN0ICpsR2VuWExvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGxsdm06 OlR5cGUgKnJldFR5cGUsIGxsdm06Okluc3RydWN0aW9uICppbnN0KSB7Ci0rI2lmIElTUENfTExW TV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAgIEFzc2VydChsbHZtOjppc2E8bGx2bTo6 Rml4ZWRWZWN0b3JUeXBlPihyZXRUeXBlKSk7Ci0rICAgIGxsdm06OkZpeGVkVmVjdG9yVHlwZSAq cmV0VmVjVHlwZSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4ocmV0VHlw ZSk7Ci0rI2Vsc2UKLSAgICAgQXNzZXJ0KGxsdm06OmlzYTxsbHZtOjpWZWN0b3JUeXBlPihyZXRU eXBlKSk7Ci0tCi0gICAgIGxsdm06OlZlY3RvclR5cGUgKnJldFZlY1R5cGUgPSBsbHZtOjpkeW5f Y2FzdDxsbHZtOjpWZWN0b3JUeXBlPihyZXRUeXBlKTsKLSsjZW5kaWYKLSAgICAgQXNzZXJ0KGxs dm06OmlzUG93ZXJPZjJfMzIocmV0VmVjVHlwZS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotICAgICBB c3NlcnQocmV0VmVjVHlwZS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpKTsKLSAgICAgQXNzZXJ0 KHJldFZlY1R5cGUtPmdldFByaW1pdGl2ZVNpemVJbkJpdHMoKSAvIDggPD0gOCAqIE9XT1JEKTsK LUBAIC01NDg1LDggKzU0OTMsMTMgQEAgc3RhdGljIHZvaWQgbENyZWF0ZUJsb2NrTERVc2UobGx2 bTo6SW5zdHJ1Y3Rpb24gKmN1cnJJbnN0LCBzdGQ6OnZlY3RvcjxsbHZtOjpFeHQKLSAgICAgICAg IH0gZWxzZSBpZiAoYXV0byBnYXRoZXIgPSBsR2V0UHNldWRvR2F0aGVyKGxsdm06OmR5bl9jYXN0 PGxsdm06Okluc3RydWN0aW9uPih1aS0+Z2V0VXNlcigpKSkpIHsKLSAgICAgICAgICAgICAvLyBD b2xsZWN0IGlkeHMgZnJvbSBnYXRoZXIgYW5kIGZpeCB1c2VycwotICAgICAgICAgICAgIGxsdm06 OlZhbHVlICpyZXMgPSBsbHZtOjpVbmRlZlZhbHVlOjpnZXQoZ2F0aGVyLT5nZXRUeXBlKCkpOwot LSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGVuZCA9IGxsdm06OmR5bl9jYXN0PGxs dm06OlZlY3RvclR5cGU+KHJlcy0+Z2V0VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMoKTsgaSA8IGVu ZDsKLS0gICAgICAgICAgICAgICAgICsraSkgewotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJ U1BDX0xMVk1fMTFfMAotKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGVuZCA9IGxs dm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4ocmVzLT5nZXRUeXBlKCkpLT5nZXRO dW1FbGVtZW50cygpOyBpIDwgZW5kOwotKyAgICAgICAgICAgICAgICAgKytpKQotKyNlbHNlCi0r ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgZW5kID0gbGx2bTo6ZHluX2Nhc3Q8bGx2 bTo6VmVjdG9yVHlwZT4ocmVzLT5nZXRUeXBlKCkpLT5nZXROdW1FbGVtZW50cygpOyBpIDwgZW5k OyArK2kpCi0rI2VuZGlmCi0rICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvLyBHZXQg ZWxlbWVudCB2aWEgSUVJCi0gICAgICAgICAgICAgICAgIHJlcyA9IGxsdm06Okluc2VydEVsZW1l bnRJbnN0OjpDcmVhdGUocmVzLCBFRUlzW3B0clVzZS5pZHhzW2N1cnJfaWR4KytdXSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpD b25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50MzJUeXBlLCBpKSwKLUBAIC01NTIyLDEwICs1 NTM1LDExIEBAIHN0YXRpYyBib29sIGxWZWN0b3JpemVHRVBzKGxsdm06OlZhbHVlICpwdHIsIHN0 ZDo6dmVjdG9yPFB0clVzZT4gJnB0clVzZXMsIHN0ZDo6Ci0gCi0gICAgIC8vIEFkanVzdCB2YWx1 ZXMgZm9yIHZlY3RvciBsb2FkCi0gI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8x MV8wCi0tICAgIGlmIChhdXRvIHZlY1R5ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0 b3JUeXBlPih0eXBlKSkgewotKyAgICBpZiAoYXV0byB2ZWNUeSA9IGxsdm06OmR5bl9jYXN0PGxs dm06OkZpeGVkVmVjdG9yVHlwZT4odHlwZSkpCi0gI2Vsc2UKLS0gICAgaWYgKGF1dG8gdmVjVHkg PSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPih0eXBlKSkgewotKyAgICBpZiAoYXV0 byB2ZWNUeSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHR5cGUpKQotICNlbmRp ZgotKyAgICB7Ci0gICAgICAgICAvLyBHZXQgc2luZ2xlIGVsZW1lbnQgc2l6ZQotICAgICAgICAg dF9zaXplIC89IHZlY1R5LT5nZXROdW1FbGVtZW50cygpOwotICAgICAgICAgLy8gR2V0IHNpbmds ZSBlbGVtZW50IHR5cGUKLUBAIC02NDc3LDcgKzY0OTEsNyBAQCBsbHZtOjpWYWx1ZSAqRml4QWRk cmVzc1NwYWNlOjpjYWxjdWxhdGVHYXRoZXJTY2F0dGVyQWRkcmVzcyhsbHZtOjpWYWx1ZSAqUHRy LCBsbAotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotICAgICAgICAg T2Zmc2V0cywKLSAgICAgICAgIGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6 SW50NjRUeXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6ZHlu X2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4oT2Zmc2V0cy0+Z2V0VHlwZSgpKS0+Z2V0TnVtRWxlbWVu dHMoKSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpkeW5fY2Fz dDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KE9mZnNldHMtPmdldFR5cGUoKSktPmdldE51bUVsZW1l bnRzKCkpLAotICAgICAgICAgInN2bV9vZmZzZXRfemV4dCIsIEluc2VydEJlZm9yZSk7Ci0gI2Vs c2UKLSAgICAgICAgIE9mZnNldHMsIGxsdm06OlZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6Oklu dDY0VHlwZSwgT2Zmc2V0cy0+Z2V0VHlwZSgpLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpKSwKLUBA IC02NDkyLDcgKzY1MDYsNyBAQCBsbHZtOjpWYWx1ZSAqRml4QWRkcmVzc1NwYWNlOjpjYWxjdWxh dGVHYXRoZXJTY2F0dGVyQWRkcmVzcyhsbHZtOjpWYWx1ZSAqUHRyLCBsbAotICAgICAgICAgbGx2 bTo6VmFsdWUgKnVuZGVmSW5zZXJ0VmFsdWUgPQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJ U1BDX0xMVk1fMTFfMAotICAgICAgICAgICAgIGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpG aXhlZFZlY3RvclR5cGU6OmdldCgKLS0gICAgICAgICAgICAgICAgTExWTVR5cGVzOjpJbnQ2NFR5 cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVt RWxlbWVudHMoKSkpOwotKyAgICAgICAgICAgICAgICBMTFZNVHlwZXM6OkludDY0VHlwZSwgbGx2 bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51bUVs ZW1lbnRzKCkpKTsKLSAjZWxzZQotICAgICAgICAgICAgIGxsdm06OlVuZGVmVmFsdWU6OmdldChs bHZtOjpWZWN0b3JUeXBlOjpnZXQoTExWTVR5cGVzOjpJbnQ2NFR5cGUsIGFkZHJlc3NUeXBlLT5n ZXRWZWN0b3JOdW1FbGVtZW50cygpKSk7Ci0gI2VuZGlmCi1AQCAtNjUwMSwxNyArNjUxNSwxNiBA QCBsbHZtOjpWYWx1ZSAqRml4QWRkcmVzc1NwYWNlOjpjYWxjdWxhdGVHYXRoZXJTY2F0dGVyQWRk cmVzcyhsbHZtOjpWYWx1ZSAqUHRyLCBsbAotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENf TExWTV8xMV8wCi0gICAgICAgICAgICAgYWRkcmVzc1R5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRz KCksCi0gI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTJfMAotLSAgICAgICAg ICAgIHtsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51 bUVsZW1lbnRzKCksIGZhbHNlfSwKLSsgICAgICAgICAgICB7bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6 Rml4ZWRWZWN0b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51bUVsZW1lbnRzKCksIGZhbHNlfSwK LSAjZWxzZQotLSAgICAgICAgbGx2bTo6RWxlbWVudENvdW50OjpnZXQoCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+ KGFkZHJlc3NUeXBlLT5nZXROdW1FbGVtZW50cygpLCBmYWxzZSksCi0rICAgICAgICAgICAgbGx2 bTo6RWxlbWVudENvdW50OjpnZXQobGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBl PihhZGRyZXNzVHlwZSktPmdldE51bUVsZW1lbnRzKCksIGZhbHNlKSwKLSAjZW5kaWYKLSAgICAg ICAgICAgICBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKGxsdm06OlR5cGU6OmdldEludDMy VHkoSW5zZXJ0QmVmb3JlLT5nZXRDb250ZXh0KCkpKSk7Ci0gCi0gICAgICAgICBsbHZtOjpWYWx1 ZSAqdW5kZWZTaHVmZmxlVmFsdWUgPQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xM Vk1fMTFfMAotICAgICAgICAgICAgIGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpGaXhlZFZl Y3RvclR5cGU6OmdldCgKLS0gICAgICAgICAgICAgICAgTExWTVR5cGVzOjpJbnQ2NFR5cGUsIGxs dm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVu dHMoKSkpOwotKyAgICAgICAgICAgICAgICBMTFZNVHlwZXM6OkludDY0VHlwZSwgbGx2bTo6ZHlu X2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51bUVsZW1lbnRz KCkpKTsKLSAjZWxzZQotICAgICAgICAgICAgIGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpW ZWN0b3JUeXBlOjpnZXQoTExWTVR5cGVzOjpJbnQ2NFR5cGUsIGFkZHJlc3NUeXBlLT5nZXRWZWN0 b3JOdW1FbGVtZW50cygpKSk7Ci0gI2VuZGlmCi1AQCAtNjU0Miw3ICs2NTU1LDggQEAgbGx2bTo6 SW5zdHJ1Y3Rpb24gKkZpeEFkZHJlc3NTcGFjZTo6cHJvY2Vzc1ZlY3RvckxvYWQobGx2bTo6TG9h ZEluc3QgKkxJKSB7Ci0gICAgICAgICBpc1B0ckxvYWQgPSB0cnVlOwotICAgICAgICAgYXV0byBz Y2FsYXJUeXBlID0gZy0+dGFyZ2V0LT5pczMyQml0KCkgPyBMTFZNVHlwZXM6OkludDMyVHlwZSA6 IExMVk1UeXBlczo6SW50NjRUeXBlOwotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xM Vk1fMTFfMAotLSAgICAgICAgcmV0VHlwZSA9IGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNj YWxhclR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHJldFR5cGUpLT5nZXRO dW1FbGVtZW50cygpKTsKLSsgICAgICAgIHJldFR5cGUgPQotKyAgICAgICAgICAgIGxsdm06OkZp eGVkVmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVk VmVjdG9yVHlwZT4ocmV0VHlwZSktPmdldE51bUVsZW1lbnRzKCkpOwotICNlbHNlCi0gICAgICAg ICByZXRUeXBlID0gbGx2bTo6VmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIHJldFR5cGUtPmdl dFZlY3Rvck51bUVsZW1lbnRzKCkpOwotICNlbmRpZgotQEAgLTY2MDQsNyArNjYxOCw4IEBAIGxs dm06Okluc3RydWN0aW9uICpGaXhBZGRyZXNzU3BhY2U6OnByb2Nlc3NWZWN0b3JTdG9yZShsbHZt OjpTdG9yZUluc3QgKlNJKSB7Ci0gICAgIGlmICh2YWxUeXBlLT5nZXRTY2FsYXJUeXBlKCktPmlz UG9pbnRlclR5KCkpIHsKLSAgICAgICAgIGF1dG8gc2NhbGFyVHlwZSA9IGctPnRhcmdldC0+aXMz MkJpdCgpID8gTExWTVR5cGVzOjpJbnQzMlR5cGUgOiBMTFZNVHlwZXM6OkludDY0VHlwZTsKLSAj aWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLS0gICAgICAgIHZhbFR5cGUg PSBsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChzY2FsYXJUeXBlLCBsbHZtOjpkeW5fY2FzdDxs bHZtOjpWZWN0b3JUeXBlPih2YWxUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSk7Ci0rICAgICAgICB2 YWxUeXBlID0KLSsgICAgICAgICAgICBsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChzY2FsYXJU eXBlLCBsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KHZhbFR5cGUpLT5nZXRO dW1FbGVtZW50cygpKTsKLSAjZWxzZQotICAgICAgICAgdmFsVHlwZSA9IGxsdm06OlZlY3RvclR5 cGU6OmdldChzY2FsYXJUeXBlLCB2YWxUeXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpKTsKLSAj ZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDkucGF0Y2gg Yi9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBkM2VhNjc4Mjg1ODIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2lz cGMvcGF0Y2hlcy9sbHZtMTItMDA5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEwOSArMCww IEBACi1Gcm9tIDk3YjEzYzMyMTMyZTI3MDRhNWUzZTdiMmVhZTQ5ZDg1NGQwODdlM2UgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBcmluYSBOZXNobHlhZXZhIDxhcmluYS5uZXNobHlh ZXZhQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgNCBNYXkgMjAyMSAxMTozMTo1NSAtMDcwMAotU3Vi amVjdDogW1BBVENIXSBVcGRhdGVkIGJ1aWx0aW5zLWNtKiBmb3Igc3dpdGNoIHRvIExMVk0xMgot Ci0tLS0KLSBidWlsdGlucy9idWlsdGlucy1jbS0zMi5sbCB8IDIzNCArKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tCi0gYnVpbHRpbnMvYnVpbHRpbnMtY20tNjQubGwgfCAyMzIg KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAy MzMgaW5zZXJ0aW9ucygrKSwgMjMzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYnVpbHRp bnMvYnVpbHRpbnMtY20tMzIubGwgYi9idWlsdGlucy9idWlsdGlucy1jbS0zMi5sbAotaW5kZXgg MzJkZWJmMzJlLi40ODFiYmRjNDggMTAwNjQ0Ci0tLS0gYS9idWlsdGlucy9idWlsdGlucy1jbS0z Mi5sbAotKysrIGIvYnVpbHRpbnMvYnVpbHRpbnMtY20tMzIubGwKLUBAIC01NTcsNyArNTU3LDcg QEAgJF9aTjEzVmFyeWluZ1dyaXRlcjEyV3JpdGVWZWNFbGVtSVB2RUV2diA9IGNvbWRhdCBhbnkK LSBALnN0ci4xMCA9IHByaXZhdGUgdW5uYW1lZF9hZGRyIGNvbnN0YW50IFs1IHggaThdIGMiJTA4 WFwwMCIsIGFsaWduIDEKLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2Rp dmNjKGk4IHNpZ25leHQsIGk4IHNpZ25leHQpICMwIHsKLStkZWZpbmUgaW50ZXJuYWwgc2lnbmV4 dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdmNjKGk4IHNpZ25leHQsIGk4IHNpZ25l eHQpICMwIHsKLSAgICUzID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSBpOCwg YWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC02MTgsNyArNjE4 LDcgQEAgZGVmaW5lIGludGVybmFsIDwxIHggaTg+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJl bUlMaTFFRUV1MkNNdmJUX19jUzFfUzFfdTJDTXYKLSBkZWNsYXJlIDwxIHggaTg+IEBsbHZtLmdl bngucmRyZWdpb25pLnYxaTgudjFpOC5pMTYoPDEgeCBpOD4sIGkzMiwgaTMyLCBpMzIsIGkxNiwg aTMyKSAjMgotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFf Y1NfKDwxIHggaTg+LCA8MSB4IGk4PikgIzAgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGk4PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfY1NfKDwxIHggaTg+LCA8MSB4IGk4 PikgIzAgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU0ID0gYWxsb2Nh IDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAg LTYzNCw3ICs2MzQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9jU18oPDEgeCBpOD4sIDwxCi0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGk4PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjJfY1NfKDwyIHggaTg+LCA8MiB4IGk4 PikgIzMgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc2RpdnUyQ012YjJfY1NfKDwyIHggaTg+LCA8MiB4IGk4PikgIzMgewotICAgJTMgPSBhbGxv Y2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0g ICAlNSA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotQEAgLTY4MCw3ICs2ODAsNyBAQCBkZWZp bmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMkVFRXUy Q012YlRfX2NTMV9TMV91MkNNdgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NkaXZ1MkNNdmI0X2NTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICM1IHsKLStkZWZpbmUgaW50 ZXJuYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X2NTXyg8 NCB4IGk4PiwgPDQgeCBpOD4pICM1IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0 Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDQgeCBp OD4sIGFsaWduIDQKLUBAIC04MTgsNyArODE4LDcgQEAgZGVmaW5lIGludGVybmFsIDwxNiB4IGk4 PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkxNkVFRXUyQ012YlRfX2NTMV9TMV91MkMK LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjMyX2NT Xyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzExIHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfY1NfKDwzMiB4IGk4PiwgPDMy IHggaTg+KSAjMTEgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotICAgJTQg PSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDMyIHggaTg+LCBh bGlnbiAzMgotQEAgLTg2NCw3ICs4NjQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBf Wk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTMyRUVFdTJDTXZiVF9fY1MxX1MxX3UyQwotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgc2lnbmV4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbWNjKGk4IHNpZ25leHQs IGk4IHNpZ25leHQpICMwIHsKLStkZWZpbmUgaW50ZXJuYWwgc2lnbmV4dCBpOCBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbWNjKGk4IHNpZ25leHQsIGk4IHNpZ25leHQpICMwIHsKLSAgICUz ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUg PSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC04OTAsNyArODkwLDcgQEAgZGVmaW5lIGRz b19sb2NhbCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtY2MoaTggc2ln bmV4dCwgaTggc2lnbmUKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndp bmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z cmVtdTJDTXZiMV9jU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMCB7Ci0rZGVmaW5lIGludGVybmFs IDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9jU18oPDEgeCBp OD4sIDwxIHggaTg+KSAjMCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAg JTQgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBh bGlnbiAxCi1AQCAtOTA0LDcgKzkwNCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9jU18oPDIgeCBp OD4sIDwyIHggaTg+KSAjMyB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9jU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMyB7Ci0g ICAlMyA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDIgeCBpOD4s IGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi1AQCAtOTE4LDcgKzkx OCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NyZW11MkNNdmIyX2NTXyg8MiB4IGk4PiwgPDIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9jU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjNSB7Ci0r ZGVmaW5lIGludGVybmFsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiNF9jU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjNSB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGk4 PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU1ID0gYWxs b2NhIDw0IHggaTg+LCBhbGlnbiA0Ci1AQCAtOTMyLDcgKzkzMiw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2NTXyg8NCB4 IGk4PiwgPDQKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1k ZWZpbmUgZHNvX2xvY2FsIDw4IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiOF9jU18oPDggeCBpOD4sIDw4IHggaTg+KSAjNyB7Ci0rZGVmaW5lIGludGVybmFsIDw4IHgg aTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9jU18oPDggeCBpOD4sIDw4 IHggaTg+KSAjNyB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24gOAotICAgJTQgPSBh bGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4 Ci1AQCAtOTQ2LDcgKzk0Niw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDggeCBpOD4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X2NTXyg8OCB4IGk4PiwgPDgKLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxNiB4 IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X2NTXyg8MTYgeCBpOD4s IDwxNiB4IGk4PikgIzkgewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9jU18oPDE2IHggaTg+LCA8MTYgeCBpOD4pICM5IHsK LSAgICUzID0gYWxsb2NhIDwxNiB4IGk4PiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDwxNiB4 IGk4PiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDwxNiB4IGk4PiwgYWxpZ24gMTYKLUBAIC05 NjAsNyArOTYwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NyZW11MkNNdmIxNl9jU18oPDE2IHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfY1NfKDwzMiB4IGk4PiwgPDMyIHgg aTg+KSAjMTEgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NyZW11MkNNdmIzMl9jU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxMSB7Ci0gICAl MyA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MzIgeCBpOD4s IGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAtOTc0LDcg Kzk3NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtdTJDTXZiMzJfY1NfKDwzMiB4IGk4PiwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQgaTE2IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2c3MoaTE2IHNpZ25leHQsIGkxNiBzaWduZXh0KSAjMyB7 Ci0rZGVmaW5lIGludGVybmFsIHNpZ25leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z ZGl2c3MoaTE2IHNpZ25leHQsIGkxNiBzaWduZXh0KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSBpMTYs IGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEg eCBpMTY+LCBhbGlnbiAyCi1AQCAtMTA1OCw3ICsxMDU4LDcgQEAgZGVmaW5lIGludGVybmFsIDwx IHggaTE2PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkxRUVFdTJDTXZiVF9fc1MxX1Mx X3UyQ00KLSBkZWNsYXJlIDwxIHggaTE2PiBAbGx2bS5nZW54LnJkcmVnaW9uaS52MWkxNi52MWkx Ni5pMTYoPDEgeCBpMTY+LCBpMzIsIGkzMiwgaTMyLCBpMTYsIGkzMikgIzIKLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8MSB4 IGkxNj4pICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zZGl2dTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMzIHsKLSAgICUz ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDEgeCBpMTY+LCBh bGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0xMDc0LDcgKzEw NzQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc2RpdnUyQ012YjFfc1NfKDwxIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJz OiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMl9zU18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICM1 IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z ZGl2dTJDTXZiMl9zU18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICM1IHsKLSAgICUzID0gYWxsb2Nh IDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0g ICAlNSA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLUBAIC0xMTQzLDcgKzExNDMsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgPDIgeCBpMTY+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTJF RUV1MkNNdmJUX19zUzFfUzFfdTJDTQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zZGl2dTJDTXZiNF9zU18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICM3IHsKLStkZWZp bmUgaW50ZXJuYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZi NF9zU18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICM3IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTE2 PiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNSA9IGFs bG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLUBAIC0xMzUwLDcgKzEzNTAsNyBAQCBkZWZpbmUgaW50 ZXJuYWwgPDE2IHggaTE2PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkxNkVFRXUyQ012 YlRfX3NTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c2RpdnUyQ012YjMyX3NTXyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTMgewotK2RlZmluZSBp bnRlcm5hbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJf c1NfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxMyB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBp MTY+LCBhbGlnbiA2NAotICAgJTQgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU1 ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci1AQCAtMTQxOSw3ICsxNDE5LDcgQEAgZGVm aW5lIGludGVybmFsIDwzMiB4IGkxNj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMzJF RUV1MkNNdmJUX19zUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUg bm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtc3MoaTE2IHNpZ25leHQsIGkxNiBzaWduZXh0KSAjMyB7Ci0rZGVmaW5lIGlu dGVybmFsIHNpZ25leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtc3MoaTE2IHNp Z25leHQsIGkxNiBzaWduZXh0KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAg ICU0ID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGln biAyCi1AQCAtMTQ0NSw3ICsxNDQ1LDcgQEAgZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0IGkxNiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXNzKGkxNiBzaWduZXh0LCBpMTYgc2kKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfc1NfKDwxIHgg aTE2PiwgPDEgeCBpMTY+KSAjMyB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTE2PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfc1NfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAj MyB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwx IHggaTE2PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAt MTQ1OSw3ICsxNDU5LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfc1NfKDwyIHggaTE2PiwgPDIg eCBpMTY+KSAjNSB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjJfc1NfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjNSB7Ci0gICAl MyA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwyIHggaTE2Piwg YWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci1AQCAtMTQ3Myw3ICsx NDczLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmIyX3NTXyg8MiB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTE2PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfc1NfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAj NyB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c3JlbXUyQ012YjRfc1NfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjNyB7Ci0gICAlMyA9IGFsbG9j YSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAot ICAgJTUgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci1AQCAtMTQ4Nyw3ICsxNDg3LDcgQEAg ZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11 MkNNdmI0X3NTXyg8NCB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw4IHggaTE2PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012Yjhfc1NfKDw4IHggaTE2PiwgPDggeCBpMTY+KSAjOSB7Ci0rZGVm aW5lIGludGVybmFsIDw4IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012 Yjhfc1NfKDw4IHggaTE2PiwgPDggeCBpMTY+KSAjOSB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGkx Nj4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci0gICAlNSA9 IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci1AQCAtMTUwMSw3ICsxNTAxLDcgQEAgZGVmaW5l IGRzb19sb2NhbCA8OCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4 X3NTXyg8OCB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91 bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmIxNl9zU18oPDE2IHggaTE2PiwgPDE2IHggaTE2PikgIzExIHsKLStkZWZp bmUgaW50ZXJuYWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012 YjE2X3NTXyg8MTYgeCBpMTY+LCA8MTYgeCBpMTY+KSAjMTEgewotICAgJTMgPSBhbGxvY2EgPDE2 IHggaTE2PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWduIDMyCi0g ICAlNSA9IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgotQEAgLTE1MTUsNyArMTUxNSw3IEBA IGRlZmluZSBkc29fbG9jYWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjE2X3NTXyg8MTYgeCBpMTY+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfc1NfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxMyB7 Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Ny ZW11MkNNdmIzMl9zU18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzEzIHsKLSAgICUzID0gYWxs b2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGln biA2NAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLUBAIC0xNTI5LDcgKzE1 MjksNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmIzMl9zU18oPDMyIHggaTE2PgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJz OiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF9zZGl2aWkoaTMyLCBpMzIpICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIGkzMiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdmlpKGkzMiwgaTMyKSAjMTQgewotICAgJTMgPSBh bGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU1ID0g YWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTE3MzAsNyArMTczMCw3IEBAIGRlZmluZSBp bnRlcm5hbCA8MSB4IGkzMj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMUVFRXUyQ012 YlRfX2lTMV9TMV91MkNNCi0gZGVjbGFyZSA8MSB4IGkzMj4gQGxsdm0uZ2VueC5yZHJlZ2lvbmku djFpMzIudjFpMzIuaTE2KDwxIHggaTMyPiwgaTMyLCBpMzIsIGkzMiwgaTE2LCBpMzIpICMyCi0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfaVNfKDwxIHgg aTMyPiwgPDEgeCBpMzI+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX2lTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikg IzE0IHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2Eg PDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLUBA IC0xNzQ2LDcgKzE3NDYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfaVNfKDwxIHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8 MiB4IGkzMj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc2RpdnUyQ012YjJfaVNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewot ICAgJTMgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkz Mj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotQEAgLTE5MzIs NyArMTkzMiw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aTjdkZXRhaWxzMTNfX2lt cGxfZGl2cmVtSUxpMkVFRXUyQ012YlRfX2lTMV9TMV91MkNNCi0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDw0IHggaTMy PikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zZGl2dTJDTXZiNF9pU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0gICAlMyA9 IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkzMj4sIGFs aWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci1AQCAtMjQ5MCw3ICsy NDkwLDcgQEAgZGVmaW5lIGludGVybmFsIDwxNiB4IGkzMj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxf ZGl2cmVtSUxpMTZFRUV1MkNNdmJUX19pUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9pU18oPDMyIHggaTMyPiwgPDMyIHggaTMy PikgIzE5IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc2RpdnUyQ012YjMyX2lTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotICAg JTMgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBp MzI+LCBhbGlnbiAxMjgKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotQEAg LTI2NzYsNyArMjY3Niw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWk43ZGV0YWls czEzX19pbXBsX2RpdnJlbUlMaTMyRUVFdTJDTXZiVF9faVMxX1MxX3UyCi0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1paShpMzIsIGkzMikgIzE0IHsKLStkZWZpbmUgaW50 ZXJuYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtaWkoaTMyLCBpMzIpICMxNCB7 Ci0gICAlMyA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIGkzMiwgYWxpZ24g NAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtMjcwMiw3ICsyNzAyLDcg QEAgZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1paShp MzIsIGkzMikgIzE0IHsKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndp bmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c3JlbXUyQ012YjFfaVNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQgewotK2RlZmluZSBpbnRl cm5hbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2lTXyg8 MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTMyPiwgYWxp Z24gNAotICAgJTQgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8 MSB4IGkzMj4sIGFsaWduIDQKLUBAIC0yNzE2LDcgKzI3MTYsNyBAQCBkZWZpbmUgZHNvX2xvY2Fs IDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfaVNfKDwxIHgg aTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRl ZmluZSBkc29fbG9jYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiMl9pU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDwy IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfaVNfKDwyIHggaTMy PiwgPDIgeCBpMzI+KSAjMTUgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0g ICAlNCA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDwyIHggaTMy PiwgYWxpZ24gOAotQEAgLTI3MzAsNyArMjczMCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDIgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8 Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2lT Xyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9pU18oPDQgeCBpMzI+LCA8NCB4 IGkzMj4pICMxNiB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNCA9 IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkzMj4sIGFs aWduIDE2Ci1AQCAtMjc0NCw3ICsyNzQ0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDwKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDw4IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfaVNfKDw4 IHggaTMyPiwgPDggeCBpMzI+KSAjMTcgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X2lTXyg8OCB4IGkzMj4sIDw4IHggaTMy PikgIzE3IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTMyPiwgYWxpZ24gMzIKLSAgICU0ID0gYWxs b2NhIDw4IHggaTMyPiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDw4IHggaTMyPiwgYWxpZ24g MzIKLUBAIC0yNzU4LDcgKzI3NTgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTMyPiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfaVNfKDw4IHggaTMyPiwgPAotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDE2IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X2lTXyg8MTYg eCBpMzI+LCA8MTYgeCBpMzI+KSAjMTggewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpMzI+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfaVNfKDwxNiB4IGkzMj4sIDwxNiB4 IGkzMj4pICMxOCB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotICAgJTQg PSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQKLSAgICU1ID0gYWxsb2NhIDwxNiB4IGkzMj4s IGFsaWduIDY0Ci1AQCAtMjc3Miw3ICsyNzcyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfaVNfKDwxNiB4IGkzMj4K LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9p U18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHgg aTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX2lTXyg8MzIgeCBpMzI+ LCA8MzIgeCBpMzI+KSAjMTkgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4 Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU1ID0gYWxsb2NhIDwz MiB4IGkzMj4sIGFsaWduIDEyOAotQEAgLTI3ODYsNyArMjc4Niw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX2lTXyg8 MzIgeCBpMzI+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCB6ZXJvZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2 aGgoaTggemVyb2V4dCwgaTggemVyb2V4dCkgIzIxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdmhoKGk4IHplcm9leHQsIGk4IHplcm9l eHQpICMyMSB7Ci0gICAlMyA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgaTgs IGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtMjg0NCw3ICsy ODQ0LDcgQEAgZGVmaW5lIGludGVybmFsIDwxIHggaTg+IEBfWk43ZGV0YWlsczE0X19pbXBsX3Vk aXZyZW1JTGkxRUVFdTJDTXZiVF9faFMxX1MxX3UyQ00KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9oU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMjEg ewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRp dnUyQ012YjFfaFNfKDwxIHggaTg+LCA8MSB4IGk4PikgIzIxIHsKLSAgICUzID0gYWxsb2NhIDwx IHggaTg+LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTUg PSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC0yODYwLDcgKzI4NjAsNyBAQCBkZWZpbmUg ZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9o U18oPDEgeCBpOD4sIDwxCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dWRpdnUyQ012YjJfaFNfKDwyIHggaTg+LCA8MiB4IGk4PikgIzIyIHsKLStkZWZpbmUgaW50ZXJu YWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX2hTXyg8MiB4 IGk4PiwgPDIgeCBpOD4pICMyMiB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgot ICAgJTQgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwyIHggaTg+ LCBhbGlnbiAyCi1AQCAtMjkwNiw3ICsyOTA2LDcgQEAgZGVmaW5lIGludGVybmFsIDwyIHggaTg+ IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkyRUVFdTJDTXZiVF9faFMxX1MxX3UyQ00K LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF9oU18o PDQgeCBpOD4sIDw0IHggaTg+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGk4PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfaFNfKDw0IHggaTg+LCA8NCB4IGk4Pikg IzE0IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8 NCB4IGk4PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLUBAIC0z MDQ0LDcgKzMwNDQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTg+IEBfWk43ZGV0YWlsczE0 X19pbXBsX3VkaXZyZW1JTGkxNkVFRXUyQ012YlRfX2hTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwgPDMy IHggaTg+KSAjMTcgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VkaXZ1MkNNdmIzMl9oU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxNyB7Ci0g ICAlMyA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MzIgeCBp OD4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAtMzA5 MCw3ICszMDkwLDcgQEAgZGVmaW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1pON2RldGFpbHMxNF9f aW1wbF91ZGl2cmVtSUxpMzJFRUV1MkNNdmJUX19oUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHplcm9leHQgaTgg QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1oaChpOCB6ZXJvZXh0LCBpOCB6ZXJvZXh0KSAj MjEgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtaGgoaTggemVyb2V4dCwgaTggemVyb2V4dCkgIzIxIHsKLSAgICUzID0gYWxsb2NhIGk4 LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEg eCBpOD4sIGFsaWduIDEKLUBAIC0zMTE2LDcgKzMxMTYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIHpl cm9leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1oaChpOCB6ZXJvZXh0LCBpOCB6 ZXJvZQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmlu ZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIx X2hTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMyMSB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTg+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV9oU18oPDEgeCBpOD4sIDwxIHgg aTg+KSAjMjEgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU0ID0gYWxs b2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQot QEAgLTMxMzAsNyArMzEzMCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEKLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHgg aTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl9oU18oPDIgeCBpOD4sIDwy IHggaTg+KSAjMjIgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjJfaFNfKDwyIHggaTg+LCA8MiB4IGk4PikgIzIyIHsKLSAgICUz ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxp Z24gMgotICAgJTUgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLUBAIC0zMTQ0LDcgKzMxNDQs NyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMl9oU18oPDIgeCBpOD4sIDwyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfaFNfKDw0IHggaTg+LCA8NCB4IGk4PikgIzE0IHsKLStk ZWZpbmUgaW50ZXJuYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmI0X2hTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGk4 PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU1ID0gYWxs b2NhIDw0IHggaTg+LCBhbGlnbiA0Ci1AQCAtMzE1OCw3ICszMTU4LDcgQEAgZGVmaW5lIGRzb19s b2NhbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfaFNfKDw0 IHggaTg+LCA8NAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDggeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmI4X2hTXyg8OCB4IGk4PiwgPDggeCBpOD4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDw4 IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF9oU18oPDggeCBpOD4s IDw4IHggaTg+KSAjMTUgewotICAgJTMgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLSAgICU0 ID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8OCB4IGk4PiwgYWxp Z24gOAotQEAgLTMxNzIsNyArMzE3Miw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDggeCBpOD4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2hTXyg8OCB4IGk4PiwgPDgKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2hTXyg8MTYg eCBpOD4sIDwxNiB4IGk4PikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTg+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfaFNfKDwxNiB4IGk4PiwgPDE2IHggaTg+ KSAjMTYgewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxv Y2EgPDE2IHggaTg+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAx NgotQEAgLTMxODYsNyArMzE4Niw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2IHggaTg+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfaFNfKDwxNiB4IGk4PiwKLSB9Ci0gCi0g OyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwz MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX2hTXyg8MzIgeCBp OD4sIDwzMiB4IGk4PikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAj MTcgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2Eg PDMyIHggaTg+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgot QEAgLTMyMDAsNyArMzIwMCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwKLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHplcm9l eHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dHQoaTE2IHplcm9leHQsIGkxNiB6 ZXJvZXh0KSAjMjIgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxNiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdWRpdnR0KGkxNiB6ZXJvZXh0LCBpMTYgemVyb2V4dCkgIzIyIHsKLSAgICUz ID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAl NSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0zMjc4LDcgKzMyNzgsNyBAQCBkZWZp bmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxRUVF dTJDTXZiVF9fdFMxX1MxX3UyQwotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91ZGl2dTJDTXZiMV90U18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMyMiB7Ci0rZGVmaW5l IGludGVybmFsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFf dFNfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMjIgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMTY+ LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU1ID0gYWxs b2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTMyOTQsNyArMzI5NCw3IEBAIGRlZmluZSBkc29f bG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV90U18o PDEgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vk aXZ1MkNNdmIyX3RTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzE0IHsKLStkZWZpbmUgaW50ZXJu YWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMl90U18oPDIg eCBpMTY+LCA8MiB4IGkxNj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWdu IDQKLSAgICU0ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDIg eCBpMTY+LCBhbGlnbiA0Ci1AQCAtMzM2MCw3ICszMzYwLDcgQEAgZGVmaW5lIGludGVybmFsIDwy IHggaTE2PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMkVFRXUyQ012YlRfX3RTMV9T MV91MkMKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012 YjRfdFNfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmI0X3RTXyg8NCB4IGkxNj4s IDw0IHggaTE2PikgIzE1IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAg JTQgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkxNj4s IGFsaWduIDgKLUBAIC0zNTU4LDcgKzM1NTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTE2 PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMTZFRUV1MkNNdmJUX190UzFfUzFfdQot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjMyX3RT Xyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTggewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBp MTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMzJfdFNfKDwzMiB4IGkxNj4s IDwzMiB4IGkxNj4pICMxOCB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAot ICAgJTQgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU1ID0gYWxsb2NhIDwzMiB4 IGkxNj4sIGFsaWduIDY0Ci1AQCAtMzYyNCw3ICszNjI0LDcgQEAgZGVmaW5lIGludGVybmFsIDwz MiB4IGkxNj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTMyRUVFdTJDTXZiVF9fdFMx X1MxX3UKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIHplcm9leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdHQo aTE2IHplcm9leHQsIGkxNiB6ZXJvZXh0KSAjMjIgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXR0KGkxNiB6ZXJvZXh0LCBpMTYgemVy b2V4dCkgIzIyIHsKLSAgICUzID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2Eg aTE2LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0zNjUw LDcgKzM2NTAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIHplcm9leHQgaTE2IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91cmVtdHQoaTE2IHplcm9leHQsIGkxNiB6ZQotIH0KLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV90U18oPDEgeCBpMTY+LCA8MSB4IGkx Nj4pICMyMiB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdXJlbXUyQ012YjFfdFNfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMjIgewotICAgJTMg PSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MSB4IGkxNj4sIGFs aWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTM2NjQsNyArMzY2 NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiMV90U18oPDEgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkxNj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX3RTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzE0 IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMl90U18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICMxNCB7Ci0gICAlMyA9IGFsbG9j YSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAot ICAgJTUgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci1AQCAtMzY3OCw3ICszNjc4LDcgQEAg ZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmIyX3RTXyg8MiB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjRfdFNfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjMTUgewotK2Rl ZmluZSBpbnRlcm5hbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmI0X3RTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzE1IHsKLSAgICUzID0gYWxsb2NhIDw0IHgg aTE2PiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNSA9 IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLUBAIC0zNjkyLDcgKzM2OTIsNyBAQCBkZWZpbmUg ZHNvX2xvY2FsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRf dFNfKDw0IHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiOF90U18oPDggeCBpMTY+LCA8OCB4IGkxNj4pICMxNiB7Ci0rZGVmaW5lIGlu dGVybmFsIDw4IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfdFNf KDw4IHggaTE2PiwgPDggeCBpMTY+KSAjMTYgewotICAgJTMgPSBhbGxvY2EgPDggeCBpMTY+LCBh bGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDggeCBpMTY+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxv Y2EgPDggeCBpMTY+LCBhbGlnbiAxNgotQEAgLTM3MDYsNyArMzcwNiw3IEBAIGRlZmluZSBkc29f bG9jYWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF90U18o PDggeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMTZfdFNfKDwxNiB4IGkxNj4sIDwxNiB4IGkxNj4pICMxNyB7Ci0rZGVmaW5lIGlu dGVybmFsIDwxNiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl90 U18oPDE2IHggaTE2PiwgPDE2IHggaTE2PikgIzE3IHsKLSAgICUzID0gYWxsb2NhIDwxNiB4IGkx Nj4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgotICAgJTUg PSBhbGxvY2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLUBAIC0zNzIwLDcgKzM3MjAsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIDwxNiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmIxNl90U18oPDE2IHggaTE2PgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdXJlbXUyQ012YjMyX3RTXyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTggewotK2Rl ZmluZSBpbnRlcm5hbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJD TXZiMzJfdFNfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxOCB7Ci0gICAlMyA9IGFsbG9jYSA8 MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTQgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQK LSAgICU1ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci1AQCAtMzczNCw3ICszNzM0LDcg QEAgZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMzJfdFNfKDwzMiB4IGkxNj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9p bmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdWRpdmpqKGkzMiwgaTMyKSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCBpMzIgQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VkaXZqaihpMzIsIGkzMikgIzE0IHsKLSAgICUzID0gYWxsb2Nh IGkzMiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9j YSA8MSB4IGkzMj4sIGFsaWduIDQKLUBAIC0zODkyLDcgKzM4OTIsNyBAQCBkZWZpbmUgaW50ZXJu YWwgPDEgeCBpMzI+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxRUVFdTJDTXZiVF9f alMxX1MxX3UyQwotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2 dTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFs IDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfalNfKDwxIHgg aTMyPiwgPDEgeCBpMzI+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0 Ci0gICAlNCA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHgg aTMyPiwgYWxpZ24gNAotQEAgLTM5MDgsNyArMzkwOCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9qU18oPDEgeCBpMzI+ LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIy X2pTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMl9qU18oPDIgeCBpMzI+LCA8 MiB4IGkzMj4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU0 ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMzI+LCBh bGlnbiA4Ci1AQCAtNDA1NCw3ICs0MDU0LDcgQEAgZGVmaW5lIGludGVybmFsIDwyIHggaTMyPiBA X1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMkVFRXUyQ012YlRfX2pTMV9TMV91MkMKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfalNfKDw0 IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmI0X2pTXyg8NCB4IGkzMj4sIDw0IHggaTMy PikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU0ID0gYWxs b2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24g MTYKLUBAIC00NDkyLDcgKzQ0OTIsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTMyPiBAX1pO N2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMTZFRUV1MkNNdmJUX19qUzFfUzFfdQotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjMyX2pTXyg8MzIg eCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMzJfalNfKDwzMiB4IGkzMj4sIDwzMiB4 IGkzMj4pICMxOSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU0 ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTMy PiwgYWxpZ24gMTI4Ci1AQCAtNDYzOCw3ICs0NjM4LDcgQEAgZGVmaW5lIGludGVybmFsIDwzMiB4 IGkzMj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTMyRUVFdTJDTXZiVF9falMxX1Mx X3UKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbWpqKGkzMiwgaTMyKSAj MTQgewotK2RlZmluZSBpbnRlcm5hbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1q aihpMzIsIGkzMikgIzE0IHsKLSAgICUzID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTQgPSBh bGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLUBA IC00NjY0LDcgKzQ2NjQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbWpqKGkzMiwgaTMyKSAjMTQgewotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJz OiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMx NCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dXJlbXUyQ012YjFfalNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQgewotICAgJTMgPSBhbGxv Y2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQK LSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTQ2NzgsNyArNDY3OCw3IEBA IGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VyZW11MkNNdmIyX2pTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLStk ZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJD TXZiMl9qU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4 IGkzMj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTUg PSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci1AQCAtNDY5Miw3ICs0NjkyLDcgQEAgZGVmaW5l IGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIy X2pTXyg8MiB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91 bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdXJlbXUyQ012YjRfalNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotK2RlZmluZSBp bnRlcm5hbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X2pT Xyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTMyPiwg YWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU1ID0gYWxs b2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLUBAIC00NzA2LDcgKzQ3MDYsNyBAQCBkZWZpbmUgZHNv X2xvY2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfalNf KDw0IHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiOF9qU18oPDggeCBpMzI+LCA8OCB4IGkzMj4pICMxNyB7Ci0rZGVmaW5lIGludGVy bmFsIDw4IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfalNfKDw4 IHggaTMyPiwgPDggeCBpMzI+KSAjMTcgewotICAgJTMgPSBhbGxvY2EgPDggeCBpMzI+LCBhbGln biAzMgotICAgJTQgPSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2Eg PDggeCBpMzI+LCBhbGlnbiAzMgotQEAgLTQ3MjAsNyArNDcyMCw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF9qU18oPDgg eCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiMTZfalNfKDwxNiB4IGkzMj4sIDwxNiB4IGkzMj4pICMxOCB7Ci0rZGVmaW5lIGludGVy bmFsIDwxNiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9qU18o PDE2IHggaTMyPiwgPDE2IHggaTMyPikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwxNiB4IGkzMj4s IGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotICAgJTUgPSBh bGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQKLUBAIC00NzM0LDcgKzQ3MzQsNyBAQCBkZWZpbmUg ZHNvX2xvY2FsIDwxNiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIx Nl9qU18oPDE2IHggaTMyPgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdXJlbXUyQ012YjMyX2pTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotK2RlZmlu ZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZi MzJfalNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIg eCBpMzI+LCBhbGlnbiAxMjgKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAot ICAgJTUgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci1AQCAtNDc0OCw3ICs0NzQ4LDcg QEAgZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMzJfalNfKDwzMiB4IGkzMj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9p bmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHZvaWQgQF9fZG9fcHJpbnRfY20oaTgq LCBpOCosIGkzMiwgaTY0LCBpMzIqLCBpMzIsIGkzMikgIzIzICFkYmcgITE1IHsKLStkZWZpbmUg aW50ZXJuYWwgdm9pZCBAX19kb19wcmludF9jbShpOCosIGk4KiwgaTMyLCBpNjQsIGkzMiosIGkz MiwgaTMyKSAjMjMgIWRiZyAhMTUgewotICAgJTggPSBhbGxvY2EgaTgqLCBhbGlnbiA0Ci0gICAl OSA9IGFsbG9jYSBpOCosIGFsaWduIDQKLSAgICUxMCA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLUBA IC00OTg4LDcgKzQ5ODgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgdm9pZCBAX1pON2RldGFpbHMxNl9j bV9wcmludF9mb3JtYXRJTGkxMjhFRUV2MTVjbV9zdXJmYWNlaW5kZXhqdQotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgdm9pZCBA X19kb19wcmludF9seihpMzIsIGk4KiwgaTMyLCBpNjQsIGkzMiosIGkzMiwgaTMyLCBpMzIsIGkz MikgIzI2ICFkYmcgITExNyB7Ci0rZGVmaW5lIGludGVybmFsIHZvaWQgQF9fZG9fcHJpbnRfbHoo aTMyLCBpOCosIGkzMiwgaTY0LCBpMzIqLCBpMzIsIGkzMiwgaTMyLCBpMzIpICMyNiAhZGJnICEx MTcgewotICAgJTEwID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTExID0gYWxsb2NhIGk4Kiwg YWxpZ24gNAotICAgJTEyID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotQEAgLTUwNjksNyArNTA2OSw3 IEBAIGRlZmluZSBkc29fbG9jYWwgdm9pZCBAX19kb19wcmludF9seihpMzIsIGk4KiwgaTMyLCBp NjQsIGkzMiosIGkzMiwgaTMyLCBpMzIsIGkzCi0gICAlNjcgPSBsb2FkIGk2NCwgaTY0KiAlMTMs IGFsaWduIDgsICFkYmcgITE1OSwgIXRiYWEgITE5Ci0gICAlNjggPSBsb2FkIDw1IHggaTMyPiwg PDUgeCBpMzI+KiAlMjEsIGFsaWduIDMyLCAhZGJnICExNjAsICF0YmFhICE3Ci0gICBjYWxsIHZv aWQgQF9aTjEzVmFyeWluZ1dyaXRlckMyRVJqUlBLaml5dTJDTXZiNV9pKCVjbGFzcy5WYXJ5aW5n V3JpdGVyKiAlMjMsIGkzMiogZGVyZWZlcmVuY2VhYmxlKDQpICUxOSwgaTMyKiogZGVyZWZlcmVu Y2VhYmxlKDQpICUxNCwgaTMyICU2NiwgaTY0ICU2NywgPDUgeCBpMzI+ICU2OCksICFkYmcgITE2 MQotLSAgJTY5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGlu Z0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTgg c2lnbmV4dCAlNjIsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMjIsICVj bGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMjMpLCAhZGJnICExNjIKLSsgICU2 OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlm b3JtV3JpdGVyMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQg JTYyLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFs aWduIDMyICUyMiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3Jp dGVyKSBhbGlnbiAzMiAlMjMpLCAhZGJnICExNjIKLSAgIGJyIGxhYmVsICU3MCwgIWRiZyAhMTYz Ci0gCi0gOyA8bGFiZWw+OjcwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 IHByZWRzID0gJTYwCi1AQCAtNTE4Nyw3ICs1MTg3LDcgQEAgZGVmaW5lIGludGVybmFsIDw1IHgg aTMyPiBAX1oxN2dldF9hdXhpbGlhcnlfc3RydigpICMyOCBjb21kYXQgIWRiZyAhMTc4IHsKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQK LS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2Rp bmdJMTNVbmlmb3JtV3JpdGVyMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4 IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJWNsYXNzLlZh cnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE5MSB7Ci0rZGVm aW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8xNHN3aXRjaEVuY29kaW5nSTEz VW5pZm9ybVdyaXRlcjEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWdu ZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFs aWduIDMyLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIp IGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE5MSB7Ci0gICAlNCA9IGFsbG9jYSBpOCwgYWxp Z24gMQotICAgJTUgPSBhbGxvY2EgJWNsYXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAl NiA9IGFsbG9jYSAlY2xhc3MuVmFyeWluZ1dyaXRlciwgYWxpZ24gMzIKLUBAIC01MTk2LDcgKzUx OTYsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNo RW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNWYXJ5aQotICAgJTggPSBiaXRjYXN0ICVjbGFzcy5V bmlmb3JtV3JpdGVyKiAlNSB0byBpOCosICFkYmcgITE5NgotICAgJTkgPSBiaXRjYXN0ICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE5NgotICAgY2FsbCB2b2lkIEBsbHZt Lm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlOCwgaTgqIGFsaWduIDMyICU5LCBp MzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTk2LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTEwID0g Y2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEz VW5pZm9ybVdyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICU3LCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTUpLCAhZGJnICExOTgKLSsgICUxMCA9IGNhbGwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkxM1VuaWZv cm1Xcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCAlNywgJWNsYXNzLlVuaWZvcm1X cml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNSksICFkYmcgITE5 OAotICAgYnIgaTEgJTEwLCBsYWJlbCAlMTYsIGxhYmVsICUxMSwgIWRiZyAhMTk5Ci0gCi0gOyA8 bGFiZWw+OjExOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0g JTMKLUBAIC01MjA0LDcgKzUyMDQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNWYXJ5aQotICAgJTEz ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTYgdG8gaTgqLCAhZGJnICEyMDEKLSAg ICUxNCA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUyIHRvIGk4KiwgIWRiZyAhMjAx Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICUx MywgaTgqIGFsaWduIDMyICUxNCwgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITIwMSwgIXRiYWEu c3RydWN0ICExOTcKLS0gICUxNSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dp dGNoRW5jb2Rpbmc0VmFyeWluZ0kxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTgg c2lnbmV4dCAlMTIsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNiksICFk YmcgITIwMgotKyAgJTE1ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hF bmNvZGluZzRWYXJ5aW5nSTEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWdu ZXh0ICUxMiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVy KSBhbGlnbiAzMiAlNiksICFkYmcgITIwMgotICAgYnIgbGFiZWwgJTE2LCAhZGJnICExOTkKLSAK LSA7IDxsYWJlbD46MTY6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJl ZHMgPSAlMTEsICUzCi1AQCAtNTI3OSw3ICs1Mjc5LDcgQEAgZGVmaW5lIGludGVybmFsIHZvaWQg QF9aTjEzVmFyeWluZ1dyaXRlckMyRVJqUlBLaml5dTJDTXZiNV9pKCVjbGFzcy5WYXJ5aW5nV3Jp dGUKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIGkzMiBAX19udW1fY29yZXMoKSAjMjkgIWRiZyAhMjM2IHsKLStkZWZpbmUgaW50 ZXJuYWwgaTMyIEBfX251bV9jb3JlcygpICMyOSAhZGJnICEyMzYgewotICAgcmV0IGkzMiAtMSwg IWRiZyAhMjM3Ci0gfQotIAotQEAgLTg4NjAsNyArODg2MCw3IEBAIGRlY2xhcmUgZHNvX2xvY2Fs IHZvaWQgQF9aTjdkZXRhaWxzMzdfX2NtX2ludHJpbnNpY19pbXBsX3N2bV9zY2F0dGVyX3dyaXRl SWlMaTFFCi0gZGVjbGFyZSB2b2lkIEBsbHZtLmdlbnguc3ZtLnNjYXR0ZXIudjFpMS52MWk2NC52 MWkzMig8MSB4IGkxPiwgaTMyLCA8MSB4IGk2ND4sIDwxIHggaTMyPikgIzI3Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkx M1VuaWZvcm1Xcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZv cm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE2NDUgewotK2RlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlm b3JtSTEzVW5pZm9ybVdyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xhc3Mu VW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyKSAjMjUg Y29tZGF0ICFkYmcgITE2NDUgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0g YWxsb2NhICVjbGFzcy5Vbmlmb3JtV3JpdGVyLCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiwgYWxpZ24gMQotQEAgLTg4NjksNyAr ODg2OSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0 Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRlCi0gICAlNyA9IGJpdGNhc3QgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqICU0IHRvIGk4KiwgIWRiZyAhMTY0NwotICAgJTggPSBiaXRjYXN0ICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NDcKLSAgIGNhbGwgdm9pZCBA bGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTcsIGk4KiBhbGlnbiAzMiAl OCwgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITE2NDcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAl OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5n STEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVF9U MF8oaTggc2lnbmV4dCAlNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU0 LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICU1 KSwgIWRiZyAhMTY0OAotKyAgJTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1F RUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQgJTYsICVjbGFzcy5Vbmlmb3JtV3JpdGVy KiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTQsICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VW5pZm9ybSIpIGFsaWduIDEgJTUpLCAhZGJnICExNjQ4Ci0gICByZXQgaTEgJTksICFkYmcg ITE2NDkKLSB9Ci0gCi1AQCAtODg3Nyw3ICs4ODc3LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3Jp dGUKLSBkZWNsYXJlIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIG5vY2FwdHVy ZSB3cml0ZW9ubHksIGk4KiBub2NhcHR1cmUgcmVhZG9ubHksIGkzMiwgaTEpICMzMgotIAotIDsg RnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFZhcnlp bmdJMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQsICVjbGFzcy5W YXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMikgIzI1IGNvbWRhdCAhZGJnICExNjUwIHsKLStk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0 VmFyeWluZ0kxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMikg IzI1IGNvbWRhdCAhZGJnICExNjUwIHsKLSAgICUzID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAl NCA9IGFsbG9jYSAlY2xhc3MuVmFyeWluZ1dyaXRlciwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2Nh ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIsIGFsaWduIDEKLUBAIC04ODg2 LDEyICs4ODg2LDEyIEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv MjJzd2l0Y2hFbmNvZGluZzRWYXJ5aW5nSTEzVmFyeWluZ1dyaXRlCi0gICAlNyA9IGJpdGNhc3Qg JWNsYXNzLlZhcnlpbmdXcml0ZXIqICU0IHRvIGk4KiwgIWRiZyAhMTY1MgotICAgJTggPSBiaXRj YXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NTIKLSAgIGNhbGwg dm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTcsIGk4KiBhbGln biAzMiAlOCwgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITE2NTIsICF0YmFhLnN0cnVjdCAhMTk3 Ci0tICAlOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVu Y29kaW5nSTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2Rp bmdFVF9UMF8oaTggc2lnbmV4dCAlNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWdu IDMyICU0LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGln biAxICU1KSwgIWRiZyAhMTY1MwotKyAgJTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZh cnlpbmdFRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQgJTYsICVjbGFzcy5WYXJ5aW5n V3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTQsICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTUpLCAhZGJnICExNjUzCi0gICByZXQgaTEgJTks ICFkYmcgITE2NTQKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGlu ZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5p Zm9ybUVFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2NTUgewotK2RlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlm b3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBz aWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIp IGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCgl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0 ICFkYmcgITE2NTUgewotICAgJTQgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0gYWxsb2Nh ICVjbGFzcy5Vbmlmb3JtV3JpdGVyLCBhbGlnbiAzMgotICAgJTYgPSBhbGxvY2EgJSJzdHJ1Y3Qu UHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiwgYWxpZ24gMQotQEAgLTg5MTQsNyArODkxNCw3 IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dp dGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlMjIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiAlNSB0byBpOCosICFkYmcgITE2NTcKLSAgICUyMyA9IGJpdGNhc3QgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY1NwotICAgY2FsbCB2b2lkIEBsbHZt Lm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlMjIsIGk4KiBhbGlnbiAzMiAlMjMs IGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICExNjU3LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTI0 ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWIxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyMSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFs aWduIDMyICU1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBh bGlnbiAxICU2KSwgIWRiZyAhMTY1OAotKyAgJTI0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1VuaWZvcm1Xcml0ZXJOU18x NkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyMSwg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAz MiAlNSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlNiksICFkYmcgITE2NTgK LSAgIGJyIGkxICUyNCwgbGFiZWwgJTYwLCBsYWJlbCAlMjUsICFkYmcgITE2NTkKLSAKLSA7IDxs YWJlbD46MjU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAl MwotQEAgLTg5MjIsNyArODkyMiw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlMjcg PSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlNyB0byBpOCosICFkYmcgITE2NjEKLSAg ICUyOCA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY2 MQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAl MjcsIGk4KiBhbGlnbiAzMiAlMjgsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICExNjYxLCAhdGJh YS5zdHJ1Y3QgITE5NwotLSAgJTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5n NFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwgJWNsYXNzLlVu aWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICU4KSwgIWRiZyAhMTY2MgotKyAgJTI5ID0gY2Fs bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SWkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQw X1QxXyhpOCBzaWduZXh0ICUyNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5V bmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRV bmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxp Z24gMSAlOCksICFkYmcgITE2NjIKLSAgIGJyIGkxICUyOSwgbGFiZWwgJTYwLCBsYWJlbCAlMzAs ICFkYmcgITE2NjMKLSAKLSA7IDxsYWJlbD46MzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsgcHJlZHMgPSAlMjUKLUBAIC04OTMwLDcgKzg5MzAsNyBAQCBkZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEz VW5pZm9ybVdyaXRlcgotICAgJTMyID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTkg dG8gaTgqLCAhZGJnICExNjY1Ci0gICAlMzMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVy KiAlMSB0byBpOCosICFkYmcgITE2NjUKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5w MGk4LmkzMihpOCogYWxpZ24gMzIgJTMyLCBpOCogYWxpZ24gMzIgJTMzLCBpMzIgNjQsIGkxIGZh bHNlKSwgIWRiZyAhMTY2NSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICUzNCA9IGNhbGwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlm b3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTgg c2lnbmV4dCAlMzEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlOSwgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSAlMTApLCAh ZGJnICExNjY2Ci0rICAlMzQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5p Zm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTMxLCAlY2xhc3MuVW5pZm9y bVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU5LCAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICUxMCksICFkYmcgITE2NjYKLSAgIGJyIGkxICUz NCwgbGFiZWwgJTYwLCBsYWJlbCAlMzUsICFkYmcgITE2NjcKLSAKLSA7IDxsYWJlbD46MzU6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMzAKLUBAIC04OTM4 LDcgKzg5MzgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTM3ID0gYml0Y2FzdCAl Y2xhc3MuVW5pZm9ybVdyaXRlciogJTExIHRvIGk4KiwgIWRiZyAhMTY2OQotICAgJTM4ID0gYml0 Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjY5Ci0gICBjYWxs IHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICUzNywgaTgqIGFs aWduIDMyICUzOCwgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITE2NjksICF0YmFhLnN0cnVjdCAh MTk3Ci0tICAlMzkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJZjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTM2LCAlY2xhc3MuVW5pZm9ybVdyaXRl ciogYnl2YWwgYWxpZ24gMzIgJTExLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCBhbGlnbiAxICUxMiksICFkYmcgITE2NzAKLSsgICUzOSA9IGNhbGwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlm b3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTgg c2lnbmV4dCAlMzYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdy aXRlcikgYWxpZ24gMzIgJTExLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICUx MiksICFkYmcgITE2NzAKLSAgIGJyIGkxICUzOSwgbGFiZWwgJTYwLCBsYWJlbCAlNDAsICFkYmcg ITE2NzEKLSAKLSA7IDxsYWJlbD46NDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDsgcHJlZHMgPSAlMzUKLUBAIC04OTQ2LDcgKzg5NDYsNyBAQCBkZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9y bVdyaXRlcgotICAgJTQyID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEzIHRvIGk4 KiwgIWRiZyAhMTY3MwotICAgJTQzID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEg dG8gaTgqLCAhZGJnICExNjczCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5p MzIoaTgqIGFsaWduIDMyICU0MiwgaTgqIGFsaWduIDMyICU0MywgaTMyIDY0LCBpMSBmYWxzZSks ICFkYmcgITE2NzMsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNDQgPSBjYWxsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVW5pZm9ybVdy aXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25l eHQgJTQxLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTEzLCAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxNCksICFkYmcg ITE2NzQKLSsgICU0NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3Jt RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDEsICVjbGFzcy5Vbmlmb3JtV3Jp dGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICUxNCksICFkYmcgITE2NzQKLSAgIGJyIGkxICU0NCwg bGFiZWwgJTYwLCBsYWJlbCAlNDUsICFkYmcgITE2NzUKLSAKLSA7IDxsYWJlbD46NDU6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNDAKLUBAIC04OTU0LDcg Kzg5NTQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTQ3ID0gYml0Y2FzdCAlY2xh c3MuVW5pZm9ybVdyaXRlciogJTE1IHRvIGk4KiwgIWRiZyAhMTY3NwotICAgJTQ4ID0gYml0Y2Fz dCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjc3Ci0gICBjYWxsIHZv aWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICU0NywgaTgqIGFsaWdu IDMyICU0OCwgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITE2NzcsICF0YmFhLnN0cnVjdCAhMTk3 Ci0tICAlNDkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJeTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTQ2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciog Ynl2YWwgYWxpZ24gMzIgJTE1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCBhbGlnbiAxICUxNiksICFkYmcgITE2NzgKLSsgICU0OSA9IGNhbGwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3Jt V3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2ln bmV4dCAlNDYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRl cikgYWxpZ24gMzIgJTE1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICUxNiks ICFkYmcgITE2NzgKLSAgIGJyIGkxICU0OSwgbGFiZWwgJTYwLCBsYWJlbCAlNTAsICFkYmcgITE2 NzkKLSAKLSA7IDxsYWJlbD46NTA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDsgcHJlZHMgPSAlNDUKLUBAIC04OTYyLDcgKzg5NjIsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdy aXRlcgotICAgJTUyID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTE3IHRvIGk4Kiwg IWRiZyAhMTY4MQotICAgJTUzID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8g aTgqLCAhZGJnICExNjgxCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIo aTgqIGFsaWduIDMyICU1MiwgaTgqIGFsaWduIDMyICU1MywgaTMyIDY0LCBpMSBmYWxzZSksICFk YmcgITE2ODEsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNTQgPSBjYWxsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVW5pZm9ybVdyaXRl ck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQg JTUxLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTE3LCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxOCksICFkYmcgITE2 ODIKLSsgICU1NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNTEsICVjbGFzcy5Vbmlmb3JtV3JpdGVy KiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTE3LCAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFVuaWZvcm0iKSBhbGlnbiAxICUxOCksICFkYmcgITE2ODIKLSAgIGJyIGkxICU1NCwgbGFi ZWwgJTYwLCBsYWJlbCAlNTUsICFkYmcgITE2ODMKLSAKLSA7IDxsYWJlbD46NTU6ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNTAKLUBAIC04OTcwLDcgKzg5 NzAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwx NHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTU3ID0gYml0Y2FzdCAlY2xhc3Mu VW5pZm9ybVdyaXRlciogJTE5IHRvIGk4KiwgIWRiZyAhMTY4NQotICAgJTU4ID0gYml0Y2FzdCAl Y2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjg1Ci0gICBjYWxsIHZvaWQg QGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICU1NywgaTgqIGFsaWduIDMy ICU1OCwgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITE2ODUsICF0YmFhLnN0cnVjdCAhMTk3Ci0t ICAlNTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJUHYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNf OEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1NiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5 dmFsIGFsaWduIDMyICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiog Ynl2YWwgYWxpZ24gMSAlMjApLCAhZGJnICExNjg2Ci0rICAlNTkgPSBjYWxsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1VuaWZvcm1X cml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWdu ZXh0ICU1NiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVy KSBhbGlnbiAzMiAlMTksICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5 dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTIwKSwg IWRiZyAhMTY4NgotICAgYnIgbGFiZWwgJTYwLCAhZGJnICExNjgzCi0gCi0gOyA8bGFiZWw+OjYw OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTU1LCAlNTAs ICU0NSwgJTQwLCAlMzUsICUzMCwgJTI1LCAlMwotQEAgLTg5NzksNyArODk3OSw3IEBAIGRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2Rp bmdJMTNVbmlmb3JtV3JpdGVyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGlu ZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm9ybVdyaXRlck5T XzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNjg4IHsK LStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0liMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5 dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlm b3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNjg4IHsKLSAgICU0ID0gYWxsb2NhIGkx LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4 KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTkwMDUsNyArOTAwNSw3IEBAIGRlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWIxM1VuaWZvCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBp bmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm9ybVdyaXRlck5TXzE2 RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNjk3IHsKLStk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lpMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5T XzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFs KCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3Jt IikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNjk3IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBh bGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAl NSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTkwMzEsNyArOTAzMSw3IEBAIGRlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSWkxM1VuaWZvCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxp bmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVW5pZm9ybVdyaXRlck5TXzE2RW5j b2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5V bmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzA2IHsKLStkZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVj bGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikg YWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzA2IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGln biAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwg YWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTkwNTcsNyArOTA1Nyw3IEBAIGRlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SWoxM1VuaWZvCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVo aW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rp bmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRV bmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzE1IHsKLStkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFz cy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRV bmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxp Z24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzE1IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAx Ci0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxp Z24gMSwgIXRiYWEgITE5MwotQEAgLTkwODMsNyArOTA4Myw3IEBAIGRlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYx M1VuaWZvCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50 IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0 VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3Jt V3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlm b3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzI0IHsKLStkZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNv ZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGlu Z0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5V bmlmb3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlm b3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24g MSkgIzI1IGNvbWRhdCAhZGJnICExNzI0IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0g ICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24g MSwgIXRiYWEgITE5MwotQEAgLTkxMDksNyArOTEwOSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1Vu aWZvCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5v dW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5p Zm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3Jp dGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3Jt IiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzMzIHsKLStkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlm b3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3Jt IiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkg IzI1IGNvbWRhdCAhZGJnICExNzMzIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAl NSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwg IXRiYWEgITE5MwotQEAgLTkxMzUsNyArOTEzNSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1VuaWZv Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53 aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9y bUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVy KiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiog Ynl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzQyIHsKLStkZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lk MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3Jt V3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiog Ynl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1 IGNvbWRhdCAhZGJnICExNzQyIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9 IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRi YWEgITE5MwotQEAgLTkxNjEsNyArOTE2MSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1VuaWZvCi0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5k Ci0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJUHYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1F RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciog Ynl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5 dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMTc1MSB7Ci0rZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYx M1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1X cml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUg Y29tZGF0ICFkYmcgITE3NTEgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0g YWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJh YSAhMTkzCi1AQCAtOTk4NCw3ICs5OTg0LDcgQEAgZGVmaW5lIGludGVybmFsIGkzMiBAX1pON2Rl dGFpbHMxOF9jbV9wcmludF90eXBlX29jbElQdkVFTlNfMThTSEFERVJfUFJJTlRGX1RZUEUKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQK LS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRj aEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5j b2RpbmdFVF9UMF8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWdu IDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAx KSAjMjUgY29tZGF0ICFkYmcgITIwNTUgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyTlNfMTZF bmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIwNTUgewot ICAgJTQgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhICVjbGFzcy5WYXJ5aW5n V3JpdGVyLCBhbGlnbiAzMgotICAgJTYgPSBhbGxvY2EgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIiwgYWxpZ24gMQotQEAgLTEwMDA3LDcgKzEwMDA3LDcgQEAgZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kx M1ZhcnlpbmdXcml0ZXIKLSAgICUyMiA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICU1 IHRvIGk4KiwgIWRiZyAhMjA1NwotICAgJTIzID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRl ciogJTEgdG8gaTgqLCAhZGJnICEyMDU3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgu cDBpOC5pMzIoaTgqIGFsaWduIDMyICUyMiwgaTgqIGFsaWduIDMyICUyMywgaTMyIDY0LCBpMSBm YWxzZSksICFkYmcgITIwNTcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMjQgPSBjYWxsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVmFy eWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQgJTIxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTUsICUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTYpLCAh ZGJnICEyMDU4Ci0rICAlMjQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFy eWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTIxLCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICU1LCAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICU2KSwgIWRiZyAhMjA1OAotICAgYnIgaTEgJTI0 LCBsYWJlbCAlNjAsIGxhYmVsICUyNSwgIWRiZyAhMjA1OQotIAotIDsgPGxhYmVsPjoyNTogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzCi1AQCAtMTAwMTUs NyArMTAwMTUsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTI3ID0gYml0Y2FzdCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogJTcgdG8gaTgqLCAhZGJnICEyMDYxCi0gICAlMjggPSBiaXRj YXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwNjEKLSAgIGNhbGwg dm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTI3LCBpOCogYWxp Z24gMzIgJTI4LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA2MSwgIXRiYWEuc3RydWN0ICEx OTcKLS0gICUyOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0lpMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMjYsICVjbGFzcy5WYXJ5aW5nV3JpdGVy KiBieXZhbCBhbGlnbiAzMiAlNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IiogYnl2YWwgYWxpZ24gMSAlOCksICFkYmcgITIwNjIKLSsgICUyOSA9IGNhbGwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNWYXJ5aW5n V3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2ln bmV4dCAlMjYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRl cikgYWxpZ24gMzIgJTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5 dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTgpLCAh ZGJnICEyMDYyCi0gICBiciBpMSAlMjksIGxhYmVsICU2MCwgbGFiZWwgJTMwLCAhZGJnICEyMDYz Ci0gCi0gOyA8bGFiZWw+OjMwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 IHByZWRzID0gJTI1Ci1AQCAtMTAwMjMsNyArMTAwMjMsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dy aXRlcgotICAgJTMyID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTkgdG8gaTgqLCAh ZGJnICEyMDY1Ci0gICAlMzMgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBp OCosICFkYmcgITIwNjUKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihp OCogYWxpZ24gMzIgJTMyLCBpOCogYWxpZ24gMzIgJTMzLCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRi ZyAhMjA2NSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICUzNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNWYXJ5aW5nV3JpdGVy TlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAl MzEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlOSwgJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlMTApLCAhZGJnICEyMDY2 Ci0rICAlMzQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJajEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTMxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciog Ynl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICU5LCAlInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKSBhbGlnbiAxICUxMCksICFkYmcgITIwNjYKLSAgIGJyIGkxICUzNCwgbGFiZWwg JTYwLCBsYWJlbCAlMzUsICFkYmcgITIwNjcKLSAKLSA7IDxsYWJlbD46MzU6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMzAKLUBAIC0xMDAzMSw3ICsxMDAz MSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0 c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlMzcgPSBiaXRjYXN0ICVjbGFzcy5W YXJ5aW5nV3JpdGVyKiAlMTEgdG8gaTgqLCAhZGJnICEyMDY5Ci0gICAlMzggPSBiaXRjYXN0ICVj bGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwNjkKLSAgIGNhbGwgdm9pZCBA bGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTM3LCBpOCogYWxpZ24gMzIg JTM4LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA2OSwgIXRiYWEuc3RydWN0ICExOTcKLS0g ICUzOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0lmMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZh bCBhbGlnbiAzMiAlMTEsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5 dmFsIGFsaWduIDEgJTEyKSwgIWRiZyAhMjA3MAotKyAgJTM5ID0gY2FsbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1ZhcnlpbmdXcml0 ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 ICUzNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBh bGlnbiAzMiAlMTEsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFs KCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTEyKSwgIWRi ZyAhMjA3MAotICAgYnIgaTEgJTM5LCBsYWJlbCAlNjAsIGxhYmVsICU0MCwgIWRiZyAhMjA3MQot IAotIDsgPGxhYmVsPjo0MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBw cmVkcyA9ICUzNQotQEAgLTEwMDM5LDcgKzEwMDM5LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0 ZXIKLSAgICU0MiA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxMyB0byBpOCosICFk YmcgITIwNzMKLSAgICU0MyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4 KiwgIWRiZyAhMjA3MwotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4 KiBhbGlnbiAzMiAlNDIsIGk4KiBhbGlnbiAzMiAlNDMsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJn ICEyMDczLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTQ0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1ZhcnlpbmdXcml0ZXJO U18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0 MSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUxMywgJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlMTQpLCAhZGJnICEyMDc0 Ci0rICAlNDQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJeDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTQxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciog Ynl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICUxMywgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIikgYWxpZ24gMSAlMTQpLCAhZGJnICEyMDc0Ci0gICBiciBpMSAlNDQsIGxhYmVs ICU2MCwgbGFiZWwgJTQ1LCAhZGJnICEyMDc1Ci0gCi0gOyA8bGFiZWw+OjQ1OiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTQwCi1AQCAtMTAwNDcsNyArMTAw NDcsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwx NHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTQ3ID0gYml0Y2FzdCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogJTE1IHRvIGk4KiwgIWRiZyAhMjA3NwotICAgJTQ4ID0gYml0Y2FzdCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDc3Ci0gICBjYWxsIHZvaWQg QGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICU0NywgaTgqIGFsaWduIDMy ICU0OCwgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITIwNzcsICF0YmFhLnN0cnVjdCAhMTk3Ci0t ICAlNDkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJeTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184 RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTQ2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2 YWwgYWxpZ24gMzIgJTE1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBi eXZhbCBhbGlnbiAxICUxNiksICFkYmcgITIwNzgKLSsgICU0OSA9IGNhbGwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNWYXJ5aW5nV3Jp dGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCAlNDYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikg YWxpZ24gMzIgJTE1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZh bCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICUxNiksICFk YmcgITIwNzgKLSAgIGJyIGkxICU0OSwgbGFiZWwgJTYwLCBsYWJlbCAlNTAsICFkYmcgITIwNzkK LSAKLSA7IDxsYWJlbD46NTA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsg cHJlZHMgPSAlNDUKLUBAIC0xMDA1NSw3ICsxMDA1NSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3Jp dGVyCi0gICAlNTIgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMTcgdG8gaTgqLCAh ZGJnICEyMDgxCi0gICAlNTMgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBp OCosICFkYmcgITIwODEKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihp OCogYWxpZ24gMzIgJTUyLCBpOCogYWxpZ24gMzIgJTUzLCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRi ZyAhMjA4MSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU1NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5aW5nV3JpdGVy TlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAl NTEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTcsICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTE4KSwgIWRiZyAhMjA4 MgotKyAgJTU0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSWQxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1MSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIq IGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlMTcsICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VmFyeWluZyIpIGFsaWduIDEgJTE4KSwgIWRiZyAhMjA4MgotICAgYnIgaTEgJTU0LCBsYWJl bCAlNjAsIGxhYmVsICU1NSwgIWRiZyAhMjA4MwotIAotIDsgPGxhYmVsPjo1NTogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU1MAotQEAgLTEwMDYzLDcgKzEw MDYzLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICU1NyA9IGJpdGNhc3QgJWNsYXNz LlZhcnlpbmdXcml0ZXIqICUxOSB0byBpOCosICFkYmcgITIwODUKLSAgICU1OCA9IGJpdGNhc3Qg JWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA4NQotICAgY2FsbCB2b2lk IEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlNTcsIGk4KiBhbGlnbiAz MiAlNTgsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDg1LCAhdGJhYS5zdHJ1Y3QgITE5Nwot LSAgJTU5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSVB2MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5T XzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNTYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBi eXZhbCBhbGlnbiAzMiAlMTksICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIq IGJ5dmFsIGFsaWduIDEgJTIwKSwgIWRiZyAhMjA4NgotKyAgJTU5ID0gY2FsbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSVB2MTNWYXJ5aW5n V3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2ln bmV4dCAlNTYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRl cikgYWxpZ24gMzIgJTE5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBi eXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICUyMCks ICFkYmcgITIwODYKLSAgIGJyIGxhYmVsICU2MCwgIWRiZyAhMjA4MwotIAotIDsgPGxhYmVsPjo2 MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU1NSwgJTUw LCAlNDUsICU0MCwgJTM1LCAlMzAsICUyNSwgJTMKLUBAIC0xMDA3Miw3ICsxMDA3Miw3IEBAIGRl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5j b2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lu bGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVmFyeWluZ1dyaXRl ck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQs ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMDg4 IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5n RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIq IGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRW YXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMDg4IHsKLSAgICU0ID0gYWxsb2Nh IGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAs IGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTEwMDk4LDcgKzEwMDk4LDcgQEAgZGVm aW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJYjEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5s aW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNWYXJ5aW5nV3JpdGVy TlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwg JWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIwOTcg ewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdF RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciog Ynl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIwOTcgewotICAgJTQgPSBhbGxvY2Eg aTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwg aTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAxMjQsNyArMTAxMjQsNyBAQCBkZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0lpMTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxp bmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1ZhcnlpbmdXcml0ZXJO U18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEwNiB7 Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJajEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBi eXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEwNiB7Ci0gICAlNCA9IGFsbG9jYSBp MSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBp OCogJTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDE1MCw3ICsxMDE1MCw3IEBAIGRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSWoxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGlu ZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVmFyeWluZ1dyaXRlck5T XzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVj bGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTE1IHsK LStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0lmMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5 dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5 aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTE1IHsKLSAgICU0ID0gYWxsb2NhIGkx LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4 KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTEwMTc2LDcgKzEwMTc2LDcgQEAgZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJZjEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5l IGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNWYXJ5aW5nV3JpdGVyTlNf MTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMjQgewot K2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSXgxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2 YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlp bmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMjQgewotICAgJTQgPSBhbGxvY2EgaTEs IGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgq ICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAyMDIsNyArMTAyMDIsNyBAQCBkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0l4MTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUg aW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1ZhcnlpbmdXcml0ZXJOU18x NkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xh c3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEzMyB7Ci0r ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJeTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZh bCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEzMyB7Ci0gICAlNCA9IGFsbG9jYSBpMSwg YWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCog JTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDIyOCw3ICsxMDIyOCw3IEBAIGRlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSXkxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBp bmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVmFyeWluZ1dyaXRlck5TXzE2 RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFz cy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTQyIHsKLStk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lkMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5T XzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFs KCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTQyIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBh bGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAl NSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTEwMjU0LDcgKzEwMjU0LDcgQEAgZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJZDEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlu bGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVmFyeWluZ1dyaXRlck5TXzE2 RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFz cy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTUxIHsKLStk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lQdjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZh bCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjE1MSB7Ci0gICAlNCA9IGFsbG9jYSBpMSwg YWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCog JTUsIGFsaWduIDEsICF0YmFhICExOTMKLWRpZmYgLS1naXQgYS9idWlsdGlucy9idWlsdGlucy1j bS02NC5sbCBiL2J1aWx0aW5zL2J1aWx0aW5zLWNtLTY0LmxsCi1pbmRleCAzOWEyZGQ4YmUuLjM3 NWQwMWJlZCAxMDA2NDQKLS0tLSBhL2J1aWx0aW5zL2J1aWx0aW5zLWNtLTY0LmxsCi0rKysgYi9i dWlsdGlucy9idWlsdGlucy1jbS02NC5sbAotQEAgLTU1Nyw3ICs1NTcsNyBAQCAkX1pOMTNWYXJ5 aW5nV3JpdGVyMTJXcml0ZVZlY0VsZW1JUHZFRXZ2ID0gY29tZGF0IGFueQotIEAuc3RyLjEwID0g cHJpdmF0ZSB1bm5hbWVkX2FkZHIgY29uc3RhbnQgWzggeCBpOF0gYyIlMDE2bGxYXDAwIiwgYWxp Z24gMQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2Y2MoaTggc2ln bmV4dCwgaTggc2lnbmV4dCkgIzAgewotK2RlZmluZSBpbnRlcm5hbCBzaWduZXh0IGk4IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2Y2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAgewot ICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0g ICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTYxOCw3ICs2MTgsNyBAQCBkZWZp bmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMUVFRXUy Q012YlRfX2NTMV9TMV91MkNNdgotIGRlY2xhcmUgPDEgeCBpOD4gQGxsdm0uZ2VueC5yZHJlZ2lv bmkudjFpOC52MWk4LmkxNig8MSB4IGk4PiwgaTMyLCBpMzIsIGkzMiwgaTE2LCBpMzIpICMyCi0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9jU18oPDEgeCBp OD4sIDwxIHggaTg+KSAjMCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTg+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9jU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMCB7Ci0g ICAlMyA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgPDEgeCBpOD4s IGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtNjM0LDcgKzYz NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NkaXZ1MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMl9jU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMyB7Ci0r ZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJD TXZiMl9jU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGk4 PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU1ID0gYWxs b2NhIDwyIHggaTg+LCBhbGlnbiAyCi1AQCAtNjgwLDcgKzY4MCw3IEBAIGRlZmluZSBpbnRlcm5h bCA8MiB4IGk4PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkyRUVFdTJDTXZiVF9fY1Mx X1MxX3UyQ012Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUy Q012YjRfY1NfKDw0IHggaTg+LCA8NCB4IGk4PikgIzUgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4 IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfY1NfKDw0IHggaTg+LCA8 NCB4IGk4PikgIzUgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU0ID0g YWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24g NAotQEAgLTgxOCw3ICs4MTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTg+IEBfWk43ZGV0 YWlsczEzX19pbXBsX2RpdnJlbUlMaTE2RUVFdTJDTXZiVF9fY1MxX1MxX3UyQwotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMy IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfY1NfKDwzMiB4IGk4 PiwgPDMyIHggaTg+KSAjMTEgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9jU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMx MSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8 MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1A QCAtODY0LDcgKzg2NCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aTjdkZXRhaWxz MTNfX2ltcGxfZGl2cmVtSUxpMzJFRUV1MkNNdmJUX19jUzFfUzFfdTJDCi0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0 IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtY2MoaTggc2lnbmV4dCwgaTggc2lnbmV4 dCkgIzAgewotK2RlZmluZSBpbnRlcm5hbCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtY2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAgewotICAgJTMgPSBhbGxvY2Eg aTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8 MSB4IGk4PiwgYWxpZ24gMQotQEAgLTg5MCw3ICs4OTAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIHNp Z25leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1jYyhpOCBzaWduZXh0LCBpOCBz aWduZQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmlu ZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIx X2NTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMwIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEgeCBp OD4pICMwIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9j YSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBA IC05MDQsNyArOTA0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfY1NfKDwxIHggaTg+LCA8MQotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2NTXyg8MiB4IGk4PiwgPDIgeCBp OD4pICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmIyX2NTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMzIHsKLSAgICUzID0gYWxs b2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgot ICAgJTUgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLUBAIC05MTgsNyArOTE4LDcgQEAgZGVm aW5lIGRzb19sb2NhbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012 YjJfY1NfKDwyIHggaTg+LCA8MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmI0X2NTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICM1IHsKLStkZWZpbmUgaW50 ZXJuYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2NTXyg8 NCB4IGk4PiwgPDQgeCBpOD4pICM1IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0 Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDQgeCBp OD4sIGFsaWduIDQKLUBAIC05MzIsNyArOTMyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfY1NfKDw0IHggaTg+LCA8NAot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDggeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X2NTXyg8 OCB4IGk4PiwgPDggeCBpOD4pICM3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X2NTXyg8OCB4IGk4PiwgPDggeCBpOD4pICM3 IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8OCB4 IGk4PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLUBAIC05NDYs NyArOTQ2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc3JlbXUyQ012YjhfY1NfKDw4IHggaTg+LCA8OAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTg+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfY1NfKDwxNiB4IGk4PiwgPDE2IHggaTg+ KSAjOSB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc3JlbXUyQ012YjE2X2NTXyg8MTYgeCBpOD4sIDwxNiB4IGk4PikgIzkgewotICAgJTMgPSBh bGxvY2EgPDE2IHggaTg+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGln biAxNgotICAgJTUgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAxNgotQEAgLTk2MCw3ICs5NjAs NyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c3JlbXUyQ012YjE2X2NTXyg8MTYgeCBpOD4sCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9jU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxMSB7 Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjMyX2NTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzExIHsKLSAgICUzID0gYWxsb2Nh IDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIK LSAgICU1ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLUBAIC05NzQsNyArOTc0LDcgQEAg ZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11 MkNNdmIzMl9jU18oPDMyIHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NkaXZzcyhpMTYgc2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsKLStkZWZpbmUg aW50ZXJuYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZzcyhpMTYg c2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsKLSAgICUzID0gYWxsb2NhIGkxNiwgYWxpZ24gMgot ICAgJTQgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFs aWduIDIKLUBAIC0xMDU4LDcgKzEwNTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBf Wk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTFFRUV1MkNNdmJUX19zUzFfUzFfdTJDTQotIGRl Y2xhcmUgPDEgeCBpMTY+IEBsbHZtLmdlbngucmRyZWdpb25pLnYxaTE2LnYxaTE2LmkxNig8MSB4 IGkxNj4sIGkzMiwgaTMyLCBpMzIsIGkxNiwgaTMyKSAjMgotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzMg ewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Nk aXZ1MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzMgewotICAgJTMgPSBhbGxvY2Eg PDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAg ICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTEwNzQsNyArMTA3NCw3IEBAIGRl ZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJD TXZiMV9zU18oPDEgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5l IG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NkaXZ1MkNNdmIyX3NTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzUgewotK2RlZmlu ZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIy X3NTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzUgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMTY+ LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1ID0gYWxs b2NhIDwyIHggaTE2PiwgYWxpZ24gNAotQEAgLTExNDMsNyArMTE0Myw3IEBAIGRlZmluZSBpbnRl cm5hbCA8MiB4IGkxNj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMkVFRXUyQ012YlRf X3NTMV9TMV91MkNNCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Nk aXZ1MkNNdmI0X3NTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzcgewotK2RlZmluZSBpbnRlcm5h bCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X3NTXyg8NCB4 IGkxNj4sIDw0IHggaTE2PikgIzcgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4 Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0IHgg aTE2PiwgYWxpZ24gOAotQEAgLTEzNTAsNyArMTM1MCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYg eCBpMTY+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTE2RUVFdTJDTXZiVF9fc1MxX1Mx X3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZi MzJfc1NfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxMyB7Ci0rZGVmaW5lIGludGVybmFsIDwz MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9zU18oPDMyIHgg aTE2PiwgPDMyIHggaTE2PikgIzEzIHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWdu IDY0Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2Eg PDMyIHggaTE2PiwgYWxpZ24gNjQKLUBAIC0xNDE5LDcgKzE0MTksNyBAQCBkZWZpbmUgaW50ZXJu YWwgPDMyIHggaTE2PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkzMkVFRXUyQ012YlRf X3NTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Ny ZW1zcyhpMTYgc2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgc2ln bmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1zcyhpMTYgc2lnbmV4dCwgaTE2 IHNpZ25leHQpICMzIHsKLSAgICUzID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTQgPSBhbGxv Y2EgaTE2LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0x NDQ1LDcgKzE0NDUsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQgaTE2IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtc3MoaTE2IHNpZ25leHQsIGkxNiBzaQotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8MSB4 IGkxNj4pICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtdTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMzIHsKLSAgICUz ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDEgeCBpMTY+LCBh bGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0xNDU5LDcgKzE0 NTksNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc3JlbXUyQ012YjFfc1NfKDwxIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJz OiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9zU18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICM1 IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z cmVtdTJDTXZiMl9zU18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICM1IHsKLSAgICUzID0gYWxsb2Nh IDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0g ICAlNSA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLUBAIC0xNDczLDcgKzE0NzMsNyBAQCBk ZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUy Q012YjJfc1NfKDwyIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtdTJDTXZiNF9zU18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICM3IHsKLStkZWZp bmUgaW50ZXJuYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZi NF9zU18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICM3IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTE2 PiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNSA9IGFs bG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLUBAIC0xNDg3LDcgKzE0ODcsNyBAQCBkZWZpbmUgZHNv X2xvY2FsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfc1Nf KDw0IHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z cmVtdTJDTXZiOF9zU18oPDggeCBpMTY+LCA8OCB4IGkxNj4pICM5IHsKLStkZWZpbmUgaW50ZXJu YWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9zU18oPDgg eCBpMTY+LCA8OCB4IGkxNj4pICM5IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24g MTYKLSAgICU0ID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw4 IHggaTE2PiwgYWxpZ24gMTYKLUBAIC0xNTAxLDcgKzE1MDEsNyBAQCBkZWZpbmUgZHNvX2xvY2Fs IDw4IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012Yjhfc1NfKDw4IHgg aTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRl ZmluZSBkc29fbG9jYWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUy Q012YjE2X3NTXyg8MTYgeCBpMTY+LCA8MTYgeCBpMTY+KSAjMTEgewotK2RlZmluZSBpbnRlcm5h bCA8MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfc1NfKDwx NiB4IGkxNj4sIDwxNiB4IGkxNj4pICMxMSB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpMTY+LCBh bGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxs b2NhIDwxNiB4IGkxNj4sIGFsaWduIDMyCi1AQCAtMTUxNSw3ICsxNTE1LDcgQEAgZGVmaW5lIGRz b19sb2NhbCA8MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZf c1NfKDwxNiB4IGkxNj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndp bmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NyZW11MkNNdmIzMl9zU18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzEzIHsKLStkZWZpbmUg aW50ZXJuYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMy X3NTXyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTMgewotICAgJTMgPSBhbGxvY2EgPDMyIHgg aTE2PiwgYWxpZ24gNjQKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAl NSA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotQEAgLTE1MjksNyArMTUyOSw3IEBAIGRl ZmluZSBkc29fbG9jYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUy Q012YjMyX3NTXyg8MzIgeCBpMTY+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5l IG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NkaXZpaShpMzIsIGkzMikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zZGl2aWkoaTMyLCBpMzIpICMxNCB7Ci0gICAlMyA9IGFsbG9jYSBpMzIs IGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEg eCBpMzI+LCBhbGlnbiA0Ci1AQCAtMTczMCw3ICsxNzMwLDcgQEAgZGVmaW5lIGludGVybmFsIDwx IHggaTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkxRUVFdTJDTXZiVF9faVMxX1Mx X3UyQ00KLSBkZWNsYXJlIDwxIHggaTMyPiBAbGx2bS5nZW54LnJkcmVnaW9uaS52MWkzMi52MWkz Mi5pMTYoPDEgeCBpMzI+LCBpMzIsIGkzMiwgaTMyLCBpMTYsIGkzMikgIzIKLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4 IGkzMj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc2RpdnUyQ012YjFfaVNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQgewotICAg JTMgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MSB4IGkzMj4s IGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTE3NDYsNyAr MTc0Niw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zZGl2dTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikg IzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zZGl2dTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0gICAlMyA9IGFs bG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24g OAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci1AQCAtMTkzMiw3ICsxOTMyLDcg QEAgZGVmaW5lIGludGVybmFsIDwyIHggaTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1J TGkyRUVFdTJDTXZiVF9faVMxX1MxX3UyQ00KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9p bmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfaVNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewot K2RlZmluZSBpbnRlcm5hbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1 MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDw0 IHggaTMyPiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAg ICU1ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLUBAIC0yNDkwLDcgKzI0OTAsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgPDE2IHggaTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkx NkVFRXUyQ012YlRfX2lTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc2RpdnUyQ012YjMyX2lTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewot K2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2 dTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0gICAlMyA9IGFsbG9j YSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWdu IDEyOAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci1AQCAtMjY3Niw3ICsy Njc2LDcgQEAgZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxf ZGl2cmVtSUxpMzJFRUV1MkNNdmJUX19pUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc3JlbWlpKGkzMiwgaTMyKSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCBpMzIg QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1paShpMzIsIGkzMikgIzE0IHsKLSAgICUzID0g YWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNSA9 IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLUBAIC0yNzAyLDcgKzI3MDIsNyBAQCBkZWZpbmUg ZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbWlpKGkzMiwgaTMyKSAj MTQgewotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmlu ZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZi MV9pU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHgg aTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfaVNfKDwxIHggaTMyPiwg PDEgeCBpMzI+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAl NCA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwg YWxpZ24gNAotQEAgLTI3MTYsNyArMjcxNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8Ci0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19s b2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2lTXyg8 MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8MiB4IGkz Mj4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU0ID0gYWxs b2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4 Ci1AQCAtMjczMCw3ICsyNzMwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwKLSB9Ci0gCi0g OyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0 IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfaVNfKDw0IHggaTMy PiwgPDQgeCBpMzI+KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkzMj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2 IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw0 IHggaTMyPiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLUBA IC0yNzQ0LDcgKzI3NDQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfaVNfKDw0IHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDggeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9pU18oPDggeCBpMzI+LCA8 OCB4IGkzMj4pICMxNyB7Ci0rZGVmaW5lIGludGVybmFsIDw4IHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfaVNfKDw4IHggaTMyPiwgPDggeCBpMzI+KSAjMTcgewot ICAgJTMgPSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDggeCBp MzI+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgotQEAgLTI3 NTgsNyArMjc1OCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDggeCBpMzI+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9pU18oPDggeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfaVNfKDwxNiB4IGkzMj4sIDwx NiB4IGkzMj4pICMxOCB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4IGkzMj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9pU18oPDE2IHggaTMyPiwgPDE2IHggaTMyPikgIzE4 IHsKLSAgICUzID0gYWxsb2NhIDwxNiB4IGkzMj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8 MTYgeCBpMzI+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQK LUBAIC0yNzcyLDcgKzI3NzIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9pU18oPDE2IHggaTMyPgotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMy IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX2lTXyg8MzIgeCBp MzI+LCA8MzIgeCBpMzI+KSAjMTkgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwzMiB4IGkz Mj4pICMxOSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU0ID0g YWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTMyPiwg YWxpZ24gMTI4Ci1AQCAtMjc4Niw3ICsyNzg2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4K LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIHplcm9leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZoaChpOCB6ZXJv ZXh0LCBpOCB6ZXJvZXh0KSAjMjEgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGk4IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2aGgoaTggemVyb2V4dCwgaTggemVyb2V4dCkgIzIxIHsK LSAgICUzID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQot ICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC0yODQ0LDcgKzI4NDQsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTFF RUV1MkNNdmJUX19oUzFfUzFfdTJDTQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3VkaXZ1MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMyMSB7Ci0rZGVmaW5l IGludGVybmFsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9o U18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMjEgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpOD4sIGFs aWduIDEKLSAgICU0ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8 MSB4IGk4PiwgYWxpZ24gMQotQEAgLTI4NjAsNyArMjg2MCw3IEBAIGRlZmluZSBkc29fbG9jYWwg PDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2hTXyg8MSB4IGk4 PiwgPDEKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZi Ml9oU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMjIgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGk4 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfaFNfKDwyIHggaTg+LCA8MiB4 IGk4PikgIzIyIHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNCA9IGFs bG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIK LUBAIC0yOTA2LDcgKzI5MDYsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aTjdkZXRh aWxzMTRfX2ltcGxfdWRpdnJlbUlMaTJFRUV1MkNNdmJUX19oUzFfUzFfdTJDTQotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQg eCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmI0X2hTXyg8NCB4IGk4Piwg PDQgeCBpOD4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91ZGl2dTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjMTQgewotICAg JTMgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDw0IHggaTg+LCBh bGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotQEAgLTMwNDQsNyArMzA0 NCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpOD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRp dnJlbUlMaTE2RUVFdTJDTXZiVF9faFMxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIzMl9oU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMx NyB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dWRpdnUyQ012YjMyX2hTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzE3IHsKLSAgICUzID0gYWxs b2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24g MzIKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLUBAIC0zMDkwLDcgKzMwOTAs NyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZy ZW1JTGkzMkVFRXUyQ012YlRfX2hTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpOCBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdXJlbWhoKGk4IHplcm9leHQsIGk4IHplcm9leHQpICMyMSB7Ci0rZGVm aW5lIGludGVybmFsIHplcm9leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1oaChp OCB6ZXJvZXh0LCBpOCB6ZXJvZXh0KSAjMjEgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEK LSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxp Z24gMQotQEAgLTMxMTYsNyArMzExNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpOCBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbWhoKGk4IHplcm9leHQsIGk4IHplcm9lCi0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2Nh bCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfaFNfKDwxIHgg aTg+LCA8MSB4IGk4PikgIzIxIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMyMSB7 Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgPDEgeCBp OD4sIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtMzEzMCw3 ICszMTMwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdXJlbXUyQ012YjFfaFNfKDwxIHggaTg+LCA8MQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2hTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMy MiB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMl9oU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMjIgewotICAgJTMgPSBhbGxvY2Eg PDIgeCBpOD4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAl NSA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotQEAgLTMxNDQsNyArMzE0NCw3IEBAIGRlZmlu ZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIy X2hTXyg8MiB4IGk4PiwgPDIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91 bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjMTQgewotK2RlZmluZSBpbnRl cm5hbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfaFNfKDw0 IHggaTg+LCA8NCB4IGk4PikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0 Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDQgeCBp OD4sIGFsaWduIDQKLUBAIC0zMTU4LDcgKzMxNTgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHgg aTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0 Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfaFNf KDw4IHggaTg+LCA8OCB4IGk4PikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpOD4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2hTXyg8OCB4IGk4PiwgPDggeCBpOD4p ICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2Eg PDggeCBpOD4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci1AQCAt MzE3Miw3ICszMTcyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfaFNfKDw4IHggaTg+LCA8OAotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTg+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfaFNfKDwxNiB4IGk4PiwgPDE2 IHggaTg+KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VyZW11MkNNdmIxNl9oU18oPDE2IHggaTg+LCA8MTYgeCBpOD4pICMxNiB7Ci0g ICAlMyA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8MTYgeCBp OD4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci1AQCAtMzE4 Niw3ICszMTg2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VyZW11MkNNdmIxNl9oU18oPDE2IHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwgPDMyIHgg aTg+KSAjMTcgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3VyZW11MkNNdmIzMl9oU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxNyB7Ci0gICAl MyA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MzIgeCBpOD4s IGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAtMzIwMCw3 ICszMjAwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3VyZW11MkNNdmIzMl9oU18oPDMyIHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpMTYgQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ0dChpMTYgemVyb2V4dCwgaTE2IHplcm9leHQpICMy MiB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91ZGl2dHQoaTE2IHplcm9leHQsIGkxNiB6ZXJvZXh0KSAjMjIgewotICAgJTMgPSBhbGxvY2Eg aTE2LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU1ID0gYWxsb2Nh IDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTMyNzgsNyArMzI3OCw3IEBAIGRlZmluZSBpbnRlcm5h bCA8MSB4IGkxNj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTFFRUV1MkNNdmJUX190 UzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1 MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzIyIHsKLStkZWZpbmUgaW50ZXJuYWwg PDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV90U18oPDEgeCBp MTY+LCA8MSB4IGkxNj4pICMyMiB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIK LSAgICU0ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBp MTY+LCBhbGlnbiAyCi1AQCAtMzI5NCw3ICszMjk0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX3RTXyg8MSB4IGkxNj4s IDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJf dFNfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX3RTXyg8MiB4IGkxNj4sIDwy IHggaTE2PikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTQg PSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkxNj4sIGFs aWduIDQKLUBAIC0zMzYwLDcgKzMzNjAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMTY+IEBf Wk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkyRUVFdTJDTXZiVF9fdFMxX1MxX3UyQwotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF90U18oPDQg eCBpMTY+LCA8NCB4IGkxNj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTE2PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfdFNfKDw0IHggaTE2PiwgPDQgeCBpMTY+ KSAjMTUgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9j YSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAot QEAgLTM1NTgsNyArMzU1OCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpMTY+IEBfWk43ZGV0 YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxNkVFRXUyQ012YlRfX3RTMV9TMV91Ci0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIg eCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMzJfdFNfKDwzMiB4IGkx Nj4sIDwzMiB4IGkxNj4pICMxOCB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkxNj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIzMl90U18oPDMyIHggaTE2PiwgPDMyIHggaTE2 PikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNCA9IGFs bG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxp Z24gNjQKLUBAIC0zNjI0LDcgKzM2MjQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBA X1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMzJFRUV1MkNNdmJUX190UzFfUzFfdQotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW10dChpMTYgemVyb2V4 dCwgaTE2IHplcm9leHQpICMyMiB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTE2IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdHQoaTE2IHplcm9leHQsIGkxNiB6ZXJvZXh0KSAjMjIg ewotICAgJTMgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSBpMTYsIGFsaWdu IDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTM2NTAsNyArMzY1MCw3 IEBAIGRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VyZW10dChpMTYgemVyb2V4dCwgaTE2IHplCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzIyIHsK LStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiMV90U18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMyMiB7Ci0gICAlMyA9IGFsbG9jYSA8 MSB4IGkxNj4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAg JTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMzY2NCw3ICszNjY0LDcgQEAgZGVm aW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmIxX3RTXyg8MSB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUg bm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdXJlbXUyQ012YjJfdFNfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjMTQgewotK2RlZmlu ZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIy X3RTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTE2 PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNSA9IGFs bG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLUBAIC0zNjc4LDcgKzM2NzgsNyBAQCBkZWZpbmUgZHNv X2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfdFNf KDwyIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiNF90U18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICMxNSB7Ci0rZGVmaW5lIGludGVy bmFsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfdFNfKDw0 IHggaTE2PiwgPDQgeCBpMTY+KSAjMTUgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGln biA4Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0 IHggaTE2PiwgYWxpZ24gOAotQEAgLTM2OTIsNyArMzY5Miw3IEBAIGRlZmluZSBkc29fbG9jYWwg PDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF90U18oPDQgeCBp MTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8OCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmI4X3RTXyg8OCB4IGkxNj4sIDw4IHggaTE2PikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwgPDgg eCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF90U18oPDggeCBpMTY+ LCA8OCB4IGkxNj4pICMxNiB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci0g ICAlNCA9IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8OCB4IGkx Nj4sIGFsaWduIDE2Ci1AQCAtMzcwNiw3ICszNzA2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X3RTXyg8OCB4IGkxNj4s IDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIDwxNiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIx Nl90U18oPDE2IHggaTE2PiwgPDE2IHggaTE2PikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2 IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X3RTXyg8MTYgeCBp MTY+LCA8MTYgeCBpMTY+KSAjMTcgewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTE2PiwgYWxpZ24g MzIKLSAgICU0ID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8 MTYgeCBpMTY+LCBhbGlnbiAzMgotQEAgLTM3MjAsNyArMzcyMCw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X3RTXyg8 MTYgeCBpMTY+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiMzJfdFNfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxOCB7Ci0rZGVmaW5lIGludGVy bmFsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl90U18o PDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4s IGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBh bGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLUBAIC0zNzM0LDcgKzM3MzQsNyBAQCBkZWZpbmUg ZHNvX2xvY2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIz Ml90U18oPDMyIHggaTE2PgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2 amooaTMyLCBpMzIpICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIGkzMiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdWRpdmpqKGkzMiwgaTMyKSAjMTQgewotICAgJTMgPSBhbGxvY2EgaTMyLCBhbGln biA0Ci0gICAlNCA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMy PiwgYWxpZ24gNAotQEAgLTM4OTIsNyArMzg5Miw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4IGkz Mj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTFFRUV1MkNNdmJUX19qUzFfUzFfdTJD Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2pT Xyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8MSB4 IGkzMj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU0ID0g YWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGln biA0Ci1AQCAtMzkwOCw3ICszOTA4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfalNfKDwyIHgg aTMyPiwgPDIgeCBpMzI+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX2pTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikg IzE1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2Eg PDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLUBA IC00MDU0LDcgKzQwNTQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWk43ZGV0YWls czE0X19pbXBsX3VkaXZyZW1JTGkyRUVFdTJDTXZiVF9falMxX1MxX3UyQwotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8 NCB4IGkzMj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfalNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewot ICAgJTMgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDQgeCBp MzI+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotQEAgLTQ0 OTIsNyArNDQ5Miw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpMzI+IEBfWk43ZGV0YWlsczE0 X19pbXBsX3VkaXZyZW1JTGkxNkVFRXUyQ012YlRfX2pTMV9TMV91Ci0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMzJfalNfKDwzMiB4IGkzMj4sIDwz MiB4IGkzMj4pICMxOSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIzMl9qU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5 IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTQgPSBhbGxvY2Eg PDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAx MjgKLUBAIC00NjM4LDcgKzQ2MzgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBAX1pO N2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMzJFRUV1MkNNdmJUX19qUzFfUzFfdQotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg aTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtamooaTMyLCBpMzIpICMxNCB7Ci0rZGVm aW5lIGludGVybmFsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbWpqKGkzMiwgaTMy KSAjMTQgewotICAgJTMgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSBpMzIs IGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTQ2NjQsNyAr NDY2NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtamooaTMyLCBpMzIpICMxNCB7Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5l IG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3VyZW11MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLStkZWZp bmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZi MV9qU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkz Mj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTUgPSBh bGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtNDY3OCw3ICs0Njc4LDcgQEAgZGVmaW5lIGRz b19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2pT Xyg8MSB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndp bmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dXJlbXUyQ012YjJfalNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewotK2RlZmluZSBpbnRl cm5hbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2pTXyg8 MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTMyPiwgYWxp Z24gOAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8 MiB4IGkzMj4sIGFsaWduIDgKLUBAIC00NjkyLDcgKzQ2OTIsNyBAQCBkZWZpbmUgZHNvX2xvY2Fs IDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfalNfKDwyIHgg aTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRl ZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJD TXZiNF9qU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDw0 IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfalNfKDw0IHggaTMy PiwgPDQgeCBpMzI+KSAjMTYgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgot ICAgJTQgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDQgeCBp MzI+LCBhbGlnbiAxNgotQEAgLTQ3MDYsNyArNDcwNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9qU18oPDQgeCBpMzI+ LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8OCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4 X2pTXyg8OCB4IGkzMj4sIDw4IHggaTMyPikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF9qU18oPDggeCBpMzI+LCA8 OCB4IGkzMj4pICMxNyB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi0gICAl NCA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8OCB4IGkzMj4s IGFsaWduIDMyCi1AQCAtNDcyMCw3ICs0NzIwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkz Mj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2pTXyg8OCB4IGkzMj4sIDwK LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIDwxNiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9q U18oPDE2IHggaTMyPiwgPDE2IHggaTMyPikgIzE4IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHgg aTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2pTXyg8MTYgeCBpMzI+ LCA8MTYgeCBpMzI+KSAjMTggewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQK LSAgICU0ID0gYWxsb2NhIDwxNiB4IGkzMj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MTYg eCBpMzI+LCBhbGlnbiA2NAotQEAgLTQ3MzQsNyArNDczNCw3IEBAIGRlZmluZSBkc29fbG9jYWwg PDE2IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2pTXyg8MTYg eCBpMzI+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJD TXZiMzJfalNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVmaW5lIGludGVybmFs IDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9qU18oPDMy IHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFs aWduIDEyOAotICAgJTQgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNSA9IGFs bG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLUBAIC00NzQ4LDcgKzQ3NDgsNyBAQCBkZWZpbmUg ZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIz Ml9qU18oPDMyIHggaTMyPgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgdm9pZCBAX19kb19wcmludF9jbShpOCosIGk4KiwgaTMy LCBpNjQsIGkzMiosIGkzMiwgaTMyKSAjMjMgIWRiZyAhMTUgewotK2RlZmluZSBpbnRlcm5hbCB2 b2lkIEBfX2RvX3ByaW50X2NtKGk4KiwgaTgqLCBpMzIsIGk2NCwgaTMyKiwgaTMyLCBpMzIpICMy MyAhZGJnICExNSB7Ci0gICAlOCA9IGFsbG9jYSBpOCosIGFsaWduIDgKLSAgICU5ID0gYWxsb2Nh IGk4KiwgYWxpZ24gOAotICAgJTEwID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotQEAgLTUwNzAsNyAr NTA3MCw3IEBAIGRlZmluZSBkc29fbG9jYWwgdm9pZCBAX19kb19wcmludF9seihpMzIsIGk4Kiwg aTMyLCBpNjQsIGkzMiosIGkzMiwgaTMyLCBpMzIsIGkzCi0gICAlNjcgPSBsb2FkIGk2NCwgaTY0 KiAlMTMsIGFsaWduIDgsICFkYmcgITE1OSwgIXRiYWEgITE5Ci0gICAlNjggPSBsb2FkIDw1IHgg aTMyPiwgPDUgeCBpMzI+KiAlMjEsIGFsaWduIDMyLCAhZGJnICExNjAsICF0YmFhICE3Ci0gICBj YWxsIHZvaWQgQF9aTjEzVmFyeWluZ1dyaXRlckMyRVJ5UlBLaml5dTJDTXZiNV9pKCVjbGFzcy5W YXJ5aW5nV3JpdGVyKiAlMjMsIGk2NCogZGVyZWZlcmVuY2VhYmxlKDgpICUxOSwgaTMyKiogZGVy ZWZlcmVuY2VhYmxlKDgpICUxNCwgaTMyICU2NiwgaTY0ICU2NywgPDUgeCBpMzI+ICU2OCksICFk YmcgITE2MQotLSAgJTY5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hF bmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9U MF8oaTggc2lnbmV4dCAlNjIsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAl MjIsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMjMpLCAhZGJnICExNjIK LSsgICU2OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJ MTNVbmlmb3JtV3JpdGVyMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNp Z25leHQgJTYyLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0 ZXIpIGFsaWduIDMyICUyMiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5 aW5nV3JpdGVyKSBhbGlnbiAzMiAlMjMpLCAhZGJnICExNjIKLSAgIGJyIGxhYmVsICU3MCwgIWRi ZyAhMTYzCi0gCi0gOyA8bGFiZWw+OjcwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7IHByZWRzID0gJTYwCi1AQCAtNTE4OCw3ICs1MTg4LDcgQEAgZGVmaW5lIGludGVybmFs IDw1IHggaTMyPiBAX1oxN2dldF9hdXhpbGlhcnlfc3RydigpICMyOCBjb21kYXQgIWRiZyAhMTc4 IHsKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91 bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNo RW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRf VDBfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE5MSB7 Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8xNHN3aXRjaEVuY29k aW5nSTEzVW5pZm9ybVdyaXRlcjEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUX1QwXyhp OCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0 ZXIpIGFsaWduIDMyLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdX cml0ZXIpIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE5MSB7Ci0gICAlNCA9IGFsbG9jYSBp OCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgJWNsYXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMy Ci0gICAlNiA9IGFsbG9jYSAlY2xhc3MuVmFyeWluZ1dyaXRlciwgYWxpZ24gMzIKLUBAIC01MTk3 LDcgKzUxOTcsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0 c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNWYXJ5aQotICAgJTggPSBiaXRjYXN0ICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiAlNSB0byBpOCosICFkYmcgITE5NgotICAgJTkgPSBiaXRjYXN0 ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE5NgotICAgY2FsbCB2b2lk IEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlOCwgaTgqIGFsaWduIDMy ICU5LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTk2LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAg JTEwID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlm b3JtSTEzVW5pZm9ybVdyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICU3LCAlY2xh c3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTUpLCAhZGJnICExOTgKLSsgICUxMCA9 IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkx M1VuaWZvcm1Xcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCAlNywgJWNsYXNzLlVu aWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNSksICFk YmcgITE5OAotICAgYnIgaTEgJTEwLCBsYWJlbCAlMTYsIGxhYmVsICUxMSwgIWRiZyAhMTk5Ci0g Ci0gOyA8bGFiZWw+OjExOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHBy ZWRzID0gJTMKLUBAIC01MjA1LDcgKzUyMDUsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNWYXJ5aQot ICAgJTEzID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTYgdG8gaTgqLCAhZGJnICEy MDEKLSAgICUxNCA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUyIHRvIGk4KiwgIWRi ZyAhMjAxCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWdu IDMyICUxMywgaTgqIGFsaWduIDMyICUxNCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITIwMSwg IXRiYWEuc3RydWN0ICExOTcKLS0gICUxNSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzIyc3dpdGNoRW5jb2Rpbmc0VmFyeWluZ0kxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdF VF8oaTggc2lnbmV4dCAlMTIsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAl NiksICFkYmcgITIwMgotKyAgJTE1ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJz d2l0Y2hFbmNvZGluZzRWYXJ5aW5nSTEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhp OCBzaWduZXh0ICUxMiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5n V3JpdGVyKSBhbGlnbiAzMiAlNiksICFkYmcgITIwMgotICAgYnIgbGFiZWwgJTE2LCAhZGJnICEx OTkKLSAKLSA7IDxsYWJlbD46MTY6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDsgcHJlZHMgPSAlMTEsICUzCi1AQCAtNTI4MCw3ICs1MjgwLDcgQEAgZGVmaW5lIGludGVybmFs IHZvaWQgQF9aTjEzVmFyeWluZ1dyaXRlckMyRVJ5UlBLaml5dTJDTXZiNV9pKCVjbGFzcy5WYXJ5 aW5nV3JpdGUKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1k ZWZpbmUgZHNvX2xvY2FsIGkzMiBAX19udW1fY29yZXMoKSAjMjkgIWRiZyAhMjM2IHsKLStkZWZp bmUgaW50ZXJuYWwgaTMyIEBfX251bV9jb3JlcygpICMyOSAhZGJnICEyMzYgewotICAgcmV0IGkz MiAtMSwgIWRiZyAhMjM3Ci0gfQotIAotQEAgLTg4NzAsNyArODg3MCw3IEBAIGRlY2xhcmUgZHNv X2xvY2FsIHZvaWQgQF9aTjdkZXRhaWxzMzdfX2NtX2ludHJpbnNpY19pbXBsX3N2bV9zY2F0dGVy X3dyaXRlSWlMaTFFCi0gZGVjbGFyZSB2b2lkIEBsbHZtLmdlbnguc3ZtLnNjYXR0ZXIudjFpMS52 MWk2NC52MWkzMig8MSB4IGkxPiwgaTMyLCA8MSB4IGk2ND4sIDwxIHggaTMyPikgIzI3Ci0gCi0g OyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5p Zm9ybUkxM1VuaWZvcm1Xcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE2NDUgewot K2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGlu ZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAl Y2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMy KSAjMjUgY29tZGF0ICFkYmcgITE2NDUgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAg ICU0ID0gYWxsb2NhICVjbGFzcy5Vbmlmb3JtV3JpdGVyLCBhbGlnbiAzMgotICAgJTUgPSBhbGxv Y2EgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiwgYWxpZ24gMQotQEAgLTg4 NzksNyArODg3OSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv MjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRlCi0gICAlNyA9IGJpdGNhc3Qg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqICU0IHRvIGk4KiwgIWRiZyAhMTY0NwotICAgJTggPSBiaXRj YXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NDcKLSAgIGNhbGwg dm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTcsIGk4KiBhbGln biAzMiAlOCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITE2NDcsICF0YmFhLnN0cnVjdCAhMTk3 Ci0tICAlOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVu Y29kaW5nSTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2Rp bmdFVF9UMF8oaTggc2lnbmV4dCAlNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWdu IDMyICU0LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGln biAxICU1KSwgIWRiZyAhMTY0OAotKyAgJTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVu aWZvcm1FRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQgJTYsICVjbGFzcy5Vbmlmb3Jt V3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTQsICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTUpLCAhZGJnICExNjQ4Ci0gICByZXQgaTEgJTks ICFkYmcgITE2NDkKLSB9Ci0gCi1AQCAtODg4Nyw3ICs4ODg3LDcgQEAgZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlm b3JtV3JpdGUKLSBkZWNsYXJlIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIG5v Y2FwdHVyZSB3cml0ZW9ubHksIGk4KiBub2NhcHR1cmUgcmVhZG9ubHksIGk2NCwgaTEpICMzMgot IAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0t ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5n NFZhcnlpbmdJMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQsICVj bGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMikgIzI1IGNvbWRhdCAhZGJnICExNjUw IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5j b2Rpbmc0VmFyeWluZ0kxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4 dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGln biAzMikgIzI1IGNvbWRhdCAhZGJnICExNjUwIHsKLSAgICUzID0gYWxsb2NhIGk4LCBhbGlnbiAx Ci0gICAlNCA9IGFsbG9jYSAlY2xhc3MuVmFyeWluZ1dyaXRlciwgYWxpZ24gMzIKLSAgICU1ID0g YWxsb2NhICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIsIGFsaWduIDEKLUBA IC04ODk2LDEyICs4ODk2LDEyIEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRWYXJ5aW5nSTEzVmFyeWluZ1dyaXRlCi0gICAlNyA9IGJp dGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICU0IHRvIGk4KiwgIWRiZyAhMTY1MgotICAgJTgg PSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NTIKLSAg IGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTcsIGk4 KiBhbGlnbiAzMiAlOCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITE2NTIsICF0YmFhLnN0cnVj dCAhMTk3Ci0tICAlOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3 aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184 RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFs IGFsaWduIDMyICU0LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZh bCBhbGlnbiAxICU1KSwgIWRiZyAhMTY1MwotKyAgJTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29k aW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQgJTYsICVjbGFzcy5W YXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTQsICUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTUpLCAhZGJnICExNjUzCi0gICByZXQg aTEgJTksICFkYmcgITE2NTQKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5l IGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rp bmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZv cm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2NTUgewotK2RlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJ MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUX1Qw XyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1X cml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUg Y29tZGF0ICFkYmcgITE2NTUgewotICAgJTQgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0g YWxsb2NhICVjbGFzcy5Vbmlmb3JtV3JpdGVyLCBhbGlnbiAzMgotICAgJTYgPSBhbGxvY2EgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiwgYWxpZ24gMQotQEAgLTg5MjQsNyAr ODkyNCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlMjIgPSBiaXRjYXN0ICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiAlNSB0byBpOCosICFkYmcgITE2NTcKLSAgICUyMyA9IGJpdGNhc3Qg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY1NwotICAgY2FsbCB2b2lk IEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlMjIsIGk4KiBhbGlnbiAz MiAlMjMsIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJnICExNjU3LCAhdGJhYS5zdHJ1Y3QgITE5Nwot LSAgJTI0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSWIxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNf OEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyMSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5 dmFsIGFsaWduIDMyICU1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCBhbGlnbiAxICU2KSwgIWRiZyAhMTY1OAotKyAgJTI0ID0gY2FsbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1VuaWZvcm1Xcml0 ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 ICUyMSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBh bGlnbiAzMiAlNSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwo JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlNiksICFkYmcg ITE2NTgKLSAgIGJyIGkxICUyNCwgbGFiZWwgJTYwLCBsYWJlbCAlMjUsICFkYmcgITE2NTkKLSAK LSA7IDxsYWJlbD46MjU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJl ZHMgPSAlMwotQEAgLTg5MzIsNyArODkzMiw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0g ICAlMjcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlNyB0byBpOCosICFkYmcgITE2 NjEKLSAgICUyOCA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRi ZyAhMTY2MQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGln biAzMiAlMjcsIGk4KiBhbGlnbiAzMiAlMjgsIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJnICExNjYx LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1VuaWZvcm1Xcml0ZXJOU18xNkVu Y29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwgJWNs YXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICU4KSwgIWRiZyAhMTY2MgotKyAgJTI5 ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVj bGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3Jt IikgYWxpZ24gMSAlOCksICFkYmcgITE2NjIKLSAgIGJyIGkxICUyOSwgbGFiZWwgJTYwLCBsYWJl bCAlMzAsICFkYmcgITE2NjMKLSAKLSA7IDxsYWJlbD46MzA6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMjUKLUBAIC04OTQwLDcgKzg5NDAsNyBAQCBkZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29k aW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTMyID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRl ciogJTkgdG8gaTgqLCAhZGJnICExNjY1Ci0gICAlMzMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3Jt V3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NjUKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHku cDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTMyLCBpOCogYWxpZ24gMzIgJTMzLCBpNjQgNjQs IGkxIGZhbHNlKSwgIWRiZyAhMTY2NSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICUzNCA9IGNhbGwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lq MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAl OSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSAl MTApLCAhZGJnICExNjY2Ci0rICAlMzQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rp bmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTMxLCAlY2xhc3Mu VW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU5LCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICUxMCksICFkYmcgITE2NjYKLSAgIGJy IGkxICUzNCwgbGFiZWwgJTYwLCBsYWJlbCAlMzUsICFkYmcgITE2NjcKLSAKLSA7IDxsYWJlbD46 MzU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMzAKLUBA IC04OTQ4LDcgKzg5NDgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTM3ID0gYml0 Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTExIHRvIGk4KiwgIWRiZyAhMTY2OQotICAgJTM4 ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjY5Ci0g ICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUzNywg aTgqIGFsaWduIDMyICUzOCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITE2NjksICF0YmFhLnN0 cnVjdCAhMTk3Ci0tICAlMzkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5p Zm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTM2LCAlY2xhc3MuVW5pZm9y bVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTExLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxMiksICFkYmcgITE2NzAKLSsgICUzOSA9IGNhbGwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lm MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCAlMzYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5p Zm9ybVdyaXRlcikgYWxpZ24gMzIgJTExLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGln biAxICUxMiksICFkYmcgITE2NzAKLSAgIGJyIGkxICUzOSwgbGFiZWwgJTYwLCBsYWJlbCAlNDAs ICFkYmcgITE2NzEKLSAKLSA7IDxsYWJlbD46NDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsgcHJlZHMgPSAlMzUKLUBAIC04OTU2LDcgKzg5NTYsNyBAQCBkZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEz VW5pZm9ybVdyaXRlcgotICAgJTQyID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEz IHRvIGk4KiwgIWRiZyAhMTY3MwotICAgJTQzID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRl ciogJTEgdG8gaTgqLCAhZGJnICExNjczCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgu cDBpOC5pNjQoaTgqIGFsaWduIDMyICU0MiwgaTgqIGFsaWduIDMyICU0MywgaTY0IDY0LCBpMSBm YWxzZSksICFkYmcgITE2NzMsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNDQgPSBjYWxsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVW5p Zm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQgJTQxLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTEzLCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxNCks ICFkYmcgITE2NzQKLSsgICU0NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRV bmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDEsICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTEzLCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICUxNCksICFkYmcgITE2NzQKLSAgIGJyIGkx ICU0NCwgbGFiZWwgJTYwLCBsYWJlbCAlNDUsICFkYmcgITE2NzUKLSAKLSA7IDxsYWJlbD46NDU6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNDAKLUBAIC04 OTY0LDcgKzg5NjQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTQ3ID0gYml0Y2Fz dCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTE1IHRvIGk4KiwgIWRiZyAhMTY3NwotICAgJTQ4ID0g Yml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjc3Ci0gICBj YWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU0NywgaTgq IGFsaWduIDMyICU0OCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITE2NzcsICF0YmFhLnN0cnVj dCAhMTk3Ci0tICAlNDkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9y bUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTQ2LCAlY2xhc3MuVW5pZm9ybVdy aXRlciogYnl2YWwgYWxpZ24gMzIgJTE1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCBhbGlnbiAxICUxNiksICFkYmcgITE2NzgKLSsgICU0OSA9IGNhbGwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNV bmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8o aTggc2lnbmV4dCAlNDYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9y bVdyaXRlcikgYWxpZ24gMzIgJTE1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAx ICUxNiksICFkYmcgITE2NzgKLSAgIGJyIGkxICU0OSwgbGFiZWwgJTYwLCBsYWJlbCAlNTAsICFk YmcgITE2NzkKLSAKLSA7IDxsYWJlbD46NTA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsgcHJlZHMgPSAlNDUKLUBAIC04OTcyLDcgKzg5NzIsNyBAQCBkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5p Zm9ybVdyaXRlcgotICAgJTUyID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTE3IHRv IGk4KiwgIWRiZyAhMTY4MQotICAgJTUzID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciog JTEgdG8gaTgqLCAhZGJnICExNjgxCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBp OC5pNjQoaTgqIGFsaWduIDMyICU1MiwgaTgqIGFsaWduIDMyICU1MywgaTY0IDY0LCBpMSBmYWxz ZSksICFkYmcgITE2ODEsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNTQgPSBjYWxsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVW5pZm9y bVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNp Z25leHQgJTUxLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTE3LCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxOCksICFk YmcgITE2ODIKLSsgICU1NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlm b3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNTEsICVjbGFzcy5Vbmlmb3Jt V3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTE3LCAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICUxOCksICFkYmcgITE2ODIKLSAgIGJyIGkxICU1 NCwgbGFiZWwgJTYwLCBsYWJlbCAlNTUsICFkYmcgITE2ODMKLSAKLSA7IDxsYWJlbD46NTU6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNTAKLUBAIC04OTgw LDcgKzg5ODAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTU3ID0gYml0Y2FzdCAl Y2xhc3MuVW5pZm9ybVdyaXRlciogJTE5IHRvIGk4KiwgIWRiZyAhMTY4NQotICAgJTU4ID0gYml0 Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjg1Ci0gICBjYWxs IHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU1NywgaTgqIGFs aWduIDMyICU1OCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITE2ODUsICF0YmFhLnN0cnVjdCAh MTk3Ci0tICAlNTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJUHYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1F RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1NiwgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqIGJ5dmFsIGFsaWduIDMyICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlm b3JtIiogYnl2YWwgYWxpZ24gMSAlMjApLCAhZGJnICExNjg2Ci0rICAlNTkgPSBjYWxsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1Vu aWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhp OCBzaWduZXh0ICU1NiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3Jt V3JpdGVyKSBhbGlnbiAzMiAlMTksICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9y bSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEg JTIwKSwgIWRiZyAhMTY4NgotICAgYnIgbGFiZWwgJTYwLCAhZGJnICExNjgzCi0gCi0gOyA8bGFi ZWw+OjYwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTU1 LCAlNTAsICU0NSwgJTQwLCAlMzUsICUzMCwgJTI1LCAlMwotQEAgLTg5ODksNyArODk4OSw3IEBA IGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNo RW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5 c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm9ybVdy aXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25l eHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEx Njg4IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlm b3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNjg4IHsKLSAgICU0ID0gYWxs b2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTgg JTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTkwMTUsNyArOTAxNSw3IEBAIGRl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSWIxM1VuaWZvCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lu bGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm9ybVdyaXRl ck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQs ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNjk3 IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3Jt RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq IGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRV bmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNjk3IHsKLSAgICU0ID0gYWxsb2Nh IGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAs IGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTkwNDEsNyArOTA0MSw3IEBAIGRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSWkxM1VuaWZvCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGlu ZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVW5pZm9ybVdyaXRlck5T XzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzA2IHsK LStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5 dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlm b3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzA2IHsKLSAgICU0ID0gYWxsb2NhIGkx LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4 KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTkwNjcsNyArOTA2Nyw3IEBAIGRlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWoxM1VuaWZvCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBp bmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVW5pZm9ybVdyaXRlck5TXzE2 RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzE1IHsKLStk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5T XzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFs KCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3Jt IikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzE1IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBh bGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAl NSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTkwOTMsNyArOTA5Myw3IEBAIGRlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSWYxM1VuaWZvCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxp bmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVW5pZm9ybVdyaXRlck5TXzE2RW5j b2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5V bmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzI0IHsKLStkZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVj bGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikg YWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzI0IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGln biAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwg YWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTkxMTksNyArOTExOSw3IEBAIGRlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SXgxM1VuaWZvCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVo aW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rp bmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRV bmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzMzIHsKLStkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFz cy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRV bmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxp Z24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzMzIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAx Ci0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxp Z24gMSwgIXRiYWEgITE5MwotQEAgLTkxNDUsNyArOTE0NSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkx M1VuaWZvCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50 IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0 VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3Jt V3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlm b3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzQyIHsKLStkZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNv ZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGlu Z0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5V bmlmb3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlm b3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24g MSkgIzI1IGNvbWRhdCAhZGJnICExNzQyIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0g ICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24g MSwgIXRiYWEgITE5MwotQEAgLTkxNzEsNyArOTE3MSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1Vu aWZvCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5v dW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVu aWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdy aXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9y bSIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMTc1MSB7Ci0rZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJUHYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVu aWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAx KSAjMjUgY29tZGF0ICFkYmcgITE3NTEgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAg ICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAx LCAhdGJhYSAhMTkzCi1AQCAtMTAwMTMsNyArMTAwMTMsNyBAQCBkZWZpbmUgaW50ZXJuYWwgaTMy IEBfWk43ZGV0YWlsczE4X2NtX3ByaW50X3R5cGVfb2NsSVB2RUVOU18xOFNIQURFUl9QUklOVEZf VFlQRQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBu b3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVF Yk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2 YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFs IGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA2MSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0 ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQs ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24g MzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAh MjA2MSB7Ci0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgJWNsYXNz LlZhcnlpbmdXcml0ZXIsIGFsaWduIDMyCi0gICAlNiA9IGFsbG9jYSAlInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciLCBhbGlnbiAxCi1AQCAtMTAwMzYsNyArMTAwMzYsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVu Y29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTIyID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dy aXRlciogJTUgdG8gaTgqLCAhZGJnICEyMDYzCi0gICAlMjMgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5 aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwNjMKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1j cHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTIyLCBpOCogYWxpZ24gMzIgJTIzLCBpNjQg NjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA2MywgIXRiYWEuc3RydWN0ICExOTcKLS0gICUyNCA9IGNh bGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0liMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCAlMjEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAz MiAlNSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24g MSAlNiksICFkYmcgITIwNjQKLSsgICUyNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNv ZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMjEsICVjbGFz cy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTUs ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTYpLCAhZGJnICEyMDY0Ci0gICBi ciBpMSAlMjQsIGxhYmVsICU2MCwgbGFiZWwgJTI1LCAhZGJnICEyMDY1Ci0gCi0gOyA8bGFiZWw+ OjI1OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTMKLUBA IC0xMDA0NCw3ICsxMDA0NCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlMjcgPSBi aXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlNyB0byBpOCosICFkYmcgITIwNjcKLSAgICUy OCA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA2Nwot ICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlMjcs IGk4KiBhbGlnbiAzMiAlMjgsIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDY3LCAhdGJhYS5z dHJ1Y3QgITE5NwotLSAgJTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZh cnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwgJWNsYXNzLlZhcnlp bmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICU4KSwgIWRiZyAhMjA2OAotKyAgJTI5ID0gY2FsbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkx M1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0ICUyNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5 aW5nV3JpdGVyKSBhbGlnbiAzMiAlNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5 aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24g MSAlOCksICFkYmcgITIwNjgKLSAgIGJyIGkxICUyOSwgbGFiZWwgJTYwLCBsYWJlbCAlMzAsICFk YmcgITIwNjkKLSAKLSA7IDxsYWJlbD46MzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsgcHJlZHMgPSAlMjUKLUBAIC0xMDA1Miw3ICsxMDA1Miw3IEBAIGRlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNW YXJ5aW5nV3JpdGVyCi0gICAlMzIgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlOSB0 byBpOCosICFkYmcgITIwNzEKLSAgICUzMyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIq ICUxIHRvIGk4KiwgIWRiZyAhMjA3MQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAw aTguaTY0KGk4KiBhbGlnbiAzMiAlMzIsIGk4KiBhbGlnbiAzMiAlMzMsIGk2NCA2NCwgaTEgZmFs c2UpLCAhZGJnICEyMDcxLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTM0ID0gY2FsbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1Zhcnlp bmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBz aWduZXh0ICUzMSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU5LCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxMCksICFk YmcgITIwNzIKLSsgICUzNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5 aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5WYXJ5aW5n V3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTksICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTEwKSwgIWRiZyAhMjA3MgotICAgYnIgaTEgJTM0 LCBsYWJlbCAlNjAsIGxhYmVsICUzNSwgIWRiZyAhMjA3MwotIAotIDsgPGxhYmVsPjozNTogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzMAotQEAgLTEwMDYw LDcgKzEwMDYwLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICUzNyA9IGJpdGNhc3Qg JWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxMSB0byBpOCosICFkYmcgITIwNzUKLSAgICUzOCA9IGJp dGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA3NQotICAgY2Fs bCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlMzcsIGk4KiBh bGlnbiAzMiAlMzgsIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDc1LCAhdGJhYS5zdHJ1Y3Qg ITE5NwotLSAgJTM5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSWYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdF RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzNiwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsIGFsaWduIDMyICUxMSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5 aW5nIiogYnl2YWwgYWxpZ24gMSAlMTIpLCAhZGJnICEyMDc2Ci0rICAlMzkgPSBjYWxsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVmFy eWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQgJTM2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdX cml0ZXIpIGFsaWduIDMyICUxMSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAl MTIpLCAhZGJnICEyMDc2Ci0gICBiciBpMSAlMzksIGxhYmVsICU2MCwgbGFiZWwgJTQwLCAhZGJn ICEyMDc3Ci0gCi0gOyA8bGFiZWw+OjQwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7IHByZWRzID0gJTM1Ci1AQCAtMTAwNjgsNyArMTAwNjgsNyBAQCBkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFy eWluZ1dyaXRlcgotICAgJTQyID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEzIHRv IGk4KiwgIWRiZyAhMjA3OQotICAgJTQzID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciog JTEgdG8gaTgqLCAhZGJnICEyMDc5Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBp OC5pNjQoaTgqIGFsaWduIDMyICU0MiwgaTgqIGFsaWduIDMyICU0MywgaTY0IDY0LCBpMSBmYWxz ZSksICFkYmcgITIwNzksICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNDQgPSBjYWxsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVmFyeWlu Z1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNp Z25leHQgJTQxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTEzLCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxNCksICFk YmcgITIwODAKLSsgICU0NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5 aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDEsICVjbGFzcy5WYXJ5aW5n V3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTEzLCAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICUxNCksICFkYmcgITIwODAKLSAgIGJyIGkxICU0 NCwgbGFiZWwgJTYwLCBsYWJlbCAlNDUsICFkYmcgITIwODEKLSAKLSA7IDxsYWJlbD46NDU6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNDAKLUBAIC0xMDA3 Niw3ICsxMDA3Niw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlNDcgPSBiaXRjYXN0 ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMTUgdG8gaTgqLCAhZGJnICEyMDgzCi0gICAlNDggPSBi aXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwODMKLSAgIGNh bGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTQ3LCBpOCog YWxpZ24gMzIgJTQ4LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA4MywgIXRiYWEuc3RydWN0 ICExOTcKLS0gICU0OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5n RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDYsICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiBieXZhbCBhbGlnbiAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIqIGJ5dmFsIGFsaWduIDEgJTE2KSwgIWRiZyAhMjA4NAotKyAgJTQ5ID0gY2FsbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1Zh cnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhp OCBzaWduZXh0ICU0NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5n V3JpdGVyKSBhbGlnbiAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEg JTE2KSwgIWRiZyAhMjA4NAotICAgYnIgaTEgJTQ5LCBsYWJlbCAlNjAsIGxhYmVsICU1MCwgIWRi ZyAhMjA4NQotIAotIDsgPGxhYmVsPjo1MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOyBwcmVkcyA9ICU0NQotQEAgLTEwMDg0LDcgKzEwMDg0LDcgQEAgZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1Zh cnlpbmdXcml0ZXIKLSAgICU1MiA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxNyB0 byBpOCosICFkYmcgITIwODcKLSAgICU1MyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIq ICUxIHRvIGk4KiwgIWRiZyAhMjA4NwotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAw aTguaTY0KGk4KiBhbGlnbiAzMiAlNTIsIGk4KiBhbGlnbiAzMiAlNTMsIGk2NCA2NCwgaTEgZmFs c2UpLCAhZGJnICEyMDg3LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTU0ID0gY2FsbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1Zhcnlp bmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBz aWduZXh0ICU1MSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUxNywgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlMTgpLCAh ZGJnICEyMDg4Ci0rICAlNTQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFy eWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTUxLCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICUxNywgJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlMTgpLCAhZGJnICEyMDg4Ci0gICBiciBpMSAl NTQsIGxhYmVsICU2MCwgbGFiZWwgJTU1LCAhZGJnICEyMDg5Ci0gCi0gOyA8bGFiZWw+OjU1OiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTUwCi1AQCAtMTAw OTIsNyArMTAwOTIsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTU3ID0gYml0Y2Fz dCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTE5IHRvIGk4KiwgIWRiZyAhMjA5MQotICAgJTU4ID0g Yml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDkxCi0gICBj YWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU1NywgaTgq IGFsaWduIDMyICU1OCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITIwOTEsICF0YmFhLnN0cnVj dCAhMTk3Ci0tICAlNTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlp bmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1NiwgJWNsYXNzLlZhcnlpbmdX cml0ZXIqIGJ5dmFsIGFsaWduIDMyICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRW YXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlMjApLCAhZGJnICEyMDkyCi0rICAlNTkgPSBjYWxsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYx M1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0ICU1NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5 aW5nV3JpdGVyKSBhbGlnbiAzMiAlMTksICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWdu IDEgJTIwKSwgIWRiZyAhMjA5MgotICAgYnIgbGFiZWwgJTYwLCAhZGJnICEyMDg5Ci0gCi0gOyA8 bGFiZWw+OjYwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0g JTU1LCAlNTAsICU0NSwgJTQwLCAlMzUsICUzMCwgJTI1LCAlMwotQEAgLTEwMTAxLDcgKzEwMTAx LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRz d2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog YWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5 aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTgg c2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFk YmcgITIwOTQgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5n NFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFZhcnlpbmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIwOTQgewotICAgJTQg PSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9y ZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAxMjcsNyArMTAxMjcs NyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBh bHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1Zhcnlp bmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBz aWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRi ZyAhMjEwMyB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0 VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5n V3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEwMyB7Ci0gICAlNCA9 IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3Jl IGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDE1Myw3ICsxMDE1Myw3 IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSWkxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFs d2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVmFyeWlu Z1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNp Z25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJn ICEyMTEyIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRW YXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdX cml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTEyIHsKLSAgICU0ID0g YWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUg aTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTEwMTc5LDcgKzEwMTc5LDcg QEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJajEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3 YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNWYXJ5aW5n V3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2ln bmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcg ITIxMjEgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZh cnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dy aXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFZhcnlpbmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMjEgewotICAgJTQgPSBh bGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBp OCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAyMDUsNyArMTAyMDUsNyBA QCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0lmMTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdh eXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1ZhcnlpbmdX cml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWdu ZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAh MjEzMCB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFy eWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEzMCB7Ci0gICAlNCA9IGFs bG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4 ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDIzMSw3ICsxMDIzMSw3IEBA IGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSXgxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5 c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFyeWluZ1dy aXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25l eHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEy MTM5IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5 aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTM5IHsKLSAgICU0ID0gYWxs b2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTgg JTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTEwMjU3LDcgKzEwMjU3LDcgQEAg ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJeTEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlz aW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5aW5nV3Jp dGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIx NDggewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIx YXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlp bmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRl ciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxNDggewotICAgJTQgPSBhbGxv Y2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAl MCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAyODMsNyArMTAyODMsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lkMTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNp bmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSVB2MTNWYXJ5aW5nV3Jp dGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIx NTcgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIx YXBwbHlJZlByb3BlckVuY29kaW5nSVB2MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5 aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTU3IHsKLSAgICU0ID0gYWxs b2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTgg JTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3Bj L3RlbXBsYXRlIGIvc3JjcGtncy9pc3BjL3RlbXBsYXRlCmluZGV4IDljM2FjYjQyYTljZi4uNjhm ZWQ1YTRjNjU5IDEwMDY0NAotLS0gYS9zcmNwa2dzL2lzcGMvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9pc3BjL3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdp c3BjJwogcGtnbmFtZT1pc3BjCi12ZXJzaW9uPTEuMTUuMAotcmV2aXNpb249MgordmVyc2lvbj0x LjE3LjAKK3JldmlzaW9uPTEKIGFyY2hzPSJ4ODZfNjQqIgogYnVpbGRfc3R5bGU9Y21ha2UKLWNv bmZpZ3VyZV9hcmdzPSItRElTUENfTk9fRFVNUFM9T04gLURBUk1fRU5BQkxFRD1PRkYiCitjb25m aWd1cmVfYXJncz0iLURJU1BDX05PX0RVTVBTPU9OIC1EQVJNX0VOQUJMRUQ9T0ZGIC1EQ01BS0Vf QlVJTERfVFlQRT1SZWxlYXNlIgogaG9zdG1ha2VkZXBlbmRzPSJjbGFuZyBjbGFuZy10b29scy1l eHRyYSBweXRob24zIG00IGJpc29uIGZsZXggbGx2bSIKIG1ha2VkZXBlbmRzPSJuY3Vyc2VzLWRl dmVsIG5jdXJzZXMtbGlidGluZm8tZGV2ZWwgemxpYi1kZXZlbCIKIHNob3J0X2Rlc2M9IkNvbXBp bGVyIGZvciBoaWdoLXBlcmZvcm1hbmNlIFNJTUQgcHJvZ3JhbW1pbmcgb24gdGhlIENQVSIKQEAg LTEyLDcgKzEyLDcgQEAgbWFpbnRhaW5lcj0iQW5kcmVhIEJyYW5jYWxlb25pIDxhYmNAcG9tcGVs Lm1lPiIKIGxpY2Vuc2U9IkJTRC0zLUNsYXVzZSIKIGhvbWVwYWdlPSJodHRwczovL2lzcGMuZ2l0 aHViLmlvIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vaXNwYy9pc3BjL2FyY2hpdmUv diR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09MjY1OGZmMDBkYzA0NWFjOWZjZWZiZjZiZDI2 ZGZmYWY3MjNiMDU5YTk0MmEyN2RmOTFiYmI2MWJjNTAzYTI4NQorY2hlY2tzdW09MzdmYjEwNTVk NmM2YjIzMmUxMTJkOGQ1MDE0NWQ3MjY4MjRlZDRkOGRhOTNhNzM5NjMxNWRjZWJhNmM3NmU2Mgog bm9jcm9zcz15ZXMKIG5vcGllPXllcwogCgpGcm9tIDFiMjkzNzU5ZmM2MzQ4Mzc4MTYwMjBiZjVm M2EzY2M4Mjc3NmQ1YTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9B bmRyPUMzPUE5PTIwQ2VycXVlaXJhPz0gPGFjZXJxdWVpcmEwMjFAZ21haWwuY29tPgpEYXRlOiBN b24sIDI4IEZlYiAyMDIyIDIxOjQ3OjI0ICswMDAwClN1YmplY3Q6IFtQQVRDSCAxOC8zMF0gemln OiB1cGRhdGUgdG8gMC45LjEuCgotLS0KIC4uLi8wMDAxLXN0ZC5idWlsZC1maXgtaGFuZGxpbmct b2YtRGNwdS5wYXRjaCB8IDQ4IC0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvemlnL3RlbXBs YXRlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrLS0KIDIgZmlsZXMgY2hhbmdlZCwg NCBpbnNlcnRpb25zKCspLCA1MiBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL3ppZy9wYXRjaGVzLzAwMDEtc3RkLmJ1aWxkLWZpeC1oYW5kbGluZy1vZi1EY3B1LnBhdGNo CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy96aWcvcGF0Y2hlcy8wMDAxLXN0ZC5idWlsZC1maXgtaGFu ZGxpbmctb2YtRGNwdS5wYXRjaCBiL3NyY3BrZ3MvemlnL3BhdGNoZXMvMDAwMS1zdGQuYnVpbGQt Zml4LWhhbmRsaW5nLW9mLURjcHUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDQxMDFmMjQ0NTliYi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvemlnL3BhdGNoZXMvMDAw MS1zdGQuYnVpbGQtZml4LWhhbmRsaW5nLW9mLURjcHUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw0OCArMCwwIEBACi1Gcm9tIDFlOGNkYWNlN2FkMzI0YTQyMjI4YWViNWNkNmViOGRkMTU0Mjk0 MTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBJc2FhYyBGcmV1bmQgPGlmcmV1bmRA aWZyZXVuZC54eXo+Ci1EYXRlOiBUdWUsIDIxIFNlcCAyMDIxIDIxOjA2OjEwICswMjAwCi1TdWJq ZWN0OiBbUEFUQ0hdIHN0ZC5idWlsZDogZml4IGhhbmRsaW5nIG9mIC1EY3B1Ci0KLUN1cnJlbnRs eSAtRGNwdSBpcyBjb21wbGV0ZWx5IGlnbm9yZWQgaWYgLUR0YXJnZXQgaXNuJ3QgcGFzc2VkIGFz IHdlbGwuCi1GdXJ0aGVyLCAtRGNwdT1iYXNlbGluZSBpcyBpZ25vcmVkIGV2ZW4gaWYgLUR0YXJn ZXQ9bmF0aXZlIGlzIHBhc3NlZC4KLQotVGhpcyBwYXRjaCBmaXhlcyB0aGVzZSAyIGlzc3Vlcywg YWx3YXlzIHJlc3BlY3RpbmcgdGhlIC1EY3B1IG9wdGlvbiBpZgotcHJlc2VudC4KLS0tLQotIGxp Yi9zdGQvYnVpbGQuemlnIHwgMTMgKysrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGlu c2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvc3RkL2J1aWxk LnppZyBiL2xpYi9zdGQvYnVpbGQuemlnCi1pbmRleCA5YjdlYmIxZjQuLmUzOTg1MjlmOSAxMDA2 NDQKLS0tLSBhL2xpYi9zdGQvYnVpbGQuemlnCi0rKysgYi9saWIvc3RkL2J1aWxkLnppZwotQEAg LTY4NSw3ICs2ODUsMTEgQEAgcHViIGNvbnN0IEJ1aWxkZXIgPSBzdHJ1Y3QgewotICAgICAgICAg KTsKLSAgICAgICAgIGNvbnN0IG1jcHUgPSBzZWxmLm9wdGlvbihbXWNvbnN0IHU4LCAiY3B1Iiwg IlRhcmdldCBDUFUiKTsKLSAKLS0gICAgICAgIGNvbnN0IHRyaXBsZSA9IG1heWJlX3RyaXBsZSBv cmVsc2UgcmV0dXJuIGFyZ3MuZGVmYXVsdF90YXJnZXQ7Ci0rICAgICAgICBpZiAobWF5YmVfdHJp cGxlID09IG51bGwgYW5kIG1jcHUgPT0gbnVsbCkgewotKyAgICAgICAgICAgIHJldHVybiBhcmdz LmRlZmF1bHRfdGFyZ2V0OwotKyAgICAgICAgfQotKwotKyAgICAgICAgY29uc3QgdHJpcGxlID0g bWF5YmVfdHJpcGxlIG9yZWxzZSAibmF0aXZlIjsKLSAKLSAgICAgICAgIHZhciBkaWFnczogQ3Jv c3NUYXJnZXQuUGFyc2VPcHRpb25zLkRpYWdub3N0aWNzID0gLnt9OwotICAgICAgICAgY29uc3Qg c2VsZWN0ZWRfdGFyZ2V0ID0gQ3Jvc3NUYXJnZXQucGFyc2UoLnsKLUBAIC0yNDUxLDExICsyNDU1 LDggQEAgcHViIGNvbnN0IExpYkV4ZU9ialN0ZXAgPSBzdHJ1Y3QgewotIAotICAgICAgICAgICAg IGlmIChwb3B1bGF0ZWRfY3B1X2ZlYXR1cmVzLmVxbChjcm9zcy5jcHUuZmVhdHVyZXMpKSB7Ci0g ICAgICAgICAgICAgICAgIC8vIFRoZSBDUFUgbmFtZSBhbG9uZSBpcyBzdWZmaWNpZW50LgotLSAg ICAgICAgICAgICAgICAvLyBJZiBpdCBpcyB0aGUgYmFzZWxpbmUgQ1BVLCBubyBjb21tYW5kIGxp bmUgYXJncyBhcmUgcmVxdWlyZWQuCi0tICAgICAgICAgICAgICAgIGlmIChjcm9zcy5jcHUubW9k ZWwgIT0gc3RkLlRhcmdldC5DcHUuYmFzZWxpbmUoY3Jvc3MuY3B1LmFyY2gpLm1vZGVsKSB7Ci0t ICAgICAgICAgICAgICAgICAgICB0cnkgemlnX2FyZ3MuYXBwZW5kKCItbWNwdSIpOwotLSAgICAg ICAgICAgICAgICAgICAgdHJ5IHppZ19hcmdzLmFwcGVuZChjcm9zcy5jcHUubW9kZWwubmFtZSk7 Ci0tICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgdHJ5IHppZ19hcmdzLmFwcGVu ZCgiLW1jcHUiKTsKLSsgICAgICAgICAgICAgICAgdHJ5IHppZ19hcmdzLmFwcGVuZChjcm9zcy5j cHUubW9kZWwubmFtZSk7Ci0gICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg dmFyIG1jcHVfYnVmZmVyID0gc3RkLkFycmF5TGlzdCh1OCkuaW5pdChidWlsZGVyLmFsbG9jYXRv cik7Ci0gCi0tLSAKLTIuMzMuMQotCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ppZy90ZW1wbGF0ZSBi L3NyY3BrZ3MvemlnL3RlbXBsYXRlCmluZGV4IDcyOGM1YTY0ZTlkZi4uNDgzMmM4OTM4MTYwIDEw MDY0NAotLS0gYS9zcmNwa2dzL3ppZy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3ppZy90ZW1wbGF0 ZQpAQCAtMSwxNyArMSwxNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnemlnJwogcGtnbmFtZT16 aWcKLXZlcnNpb249MC44LjEKLXJldmlzaW9uPTIKK3ZlcnNpb249MC45LjEKK3JldmlzaW9uPTEK IGFyY2hzPSJ4ODZfNjQqIGFhcmNoNjQqIgogYnVpbGRfc3R5bGU9Y21ha2UKIG1ha2VfY21kPW1h a2UKLW1ha2VkZXBlbmRzPSJjbGFuZyBsbHZtMTIgbGxkLWRldmVsIgorbWFrZWRlcGVuZHM9ImNs YW5nIGxsdm0xMyBsbGQtZGV2ZWwiCiBzaG9ydF9kZXNjPSJQcm9ncmFtbWluZyBsYW5ndWFnZSBk ZXNpZ25lZCBmb3Igcm9idXN0bmVzcywgb3B0aW1hbGl0eSwgYW5kIGNsYXJpdHkiCiBtYWludGFp bmVyPSJJc2FhYyBGcmV1bmQgPG1haWxAaXNhYWNmcmV1bmQuY29tPiIKIGxpY2Vuc2U9Ik1JVCIK IGhvbWVwYWdlPSJodHRwczovL3ppZ2xhbmcub3JnIgogZGlzdGZpbGVzPSJodHRwczovL3ppZ2xh bmcub3JnL2Rvd25sb2FkLyR7dmVyc2lvbn0vemlnLSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tz dW09OGM0MjhlMTRhMGE4OWNiN2ExNWE2NzY4NDI0YTM3NDQyMjkyODU4Y2RiNjk1ZTJlYjUwM2Zh M2M3YmY0N2YxYQorY2hlY2tzdW09MzhjZjRlODQ0ODFmNWZhY2M3NjZiYTcyNzgzZTc0NjJlMDhk NmQyOWE1ZDQ3ZTNiNzVjOGVlMzE0MjQ4NTIxMAogbm9waWU9eWVzCiBub2Nyb3NzPXllcwogCgpG cm9tIGQ4NzViYWEyNDljODBiYjFlYzIyNGNhZTNmZmMxZTlmYjk0NjEwNmQgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwQ2VycXVlaXJhPz0gPGFj ZXJxdWVpcmEwMjFAZ21haWwuY29tPgpEYXRlOiBNb24sIDI4IEZlYiAyMDIyIDIxOjUyOjA3ICsw MDAwClN1YmplY3Q6IFtQQVRDSCAxOS8zMF0gYmVpZ25ldDogcmVtb3ZlIHBhY2thZ2UKCi0tLQog c3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvY2xfdWludC5wYXRjaCAgICAgICAgIHwgIDIyIC0KIC4u LjQxOWEwMDA4ZTM4ZWYyZDlkMjU1ZDllOWM3NGU5ZmJhMDg0Yi5wYXRjaCB8IDEzNCAtLS0KIHNy Y3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wNi5wYXRjaCAgICAgICAgICB8ICAzMyAtCiBzcmNw a2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDgucGF0Y2ggICAgICAgICAgfCAgNTYgLS0KIHNyY3Br Z3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOS5wYXRjaCAgICAgICAgICB8IDExMSAtLS0KIHNyY3Br Z3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMC5wYXRjaCAgICAgICAgICB8IDM0NyAtLS0tLS0tCiBz cmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTEucGF0Y2ggICAgICAgICAgfCA5MzcgLS0tLS0t LS0tLS0tLS0tLS0tCiBzcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTIucGF0Y2ggICAgICAg ICAgfCAxMTUgLS0tCiBzcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9tdXNsLnBhdGNoICAgICAgICAg ICAgfCAgMTEgLQogc3JjcGtncy9iZWlnbmV0L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAg IHwgIDIyIC0KIHNyY3BrZ3MvYmVpZ25ldC91cGRhdGUgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMSAtCiBzcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUgICAgICAgICAgICAgfCAg IDEgKwogMTIgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDE3ODkgZGVsZXRpb25zKC0p CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvY2xfdWludC5wYXRj aAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2UxYjI0MTlhMDAw OGUzOGVmMmQ5ZDI1NWQ5ZTljNzRlOWZiYTA4NGIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDYucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDgucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDkucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTAucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTEucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9tdXNsLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9iZWlnbmV0L3RlbXBsYXRlCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iZWlnbmV0 L3VwZGF0ZQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2NsX3VpbnQucGF0 Y2ggYi9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9jbF91aW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA4NmJhMDBmMDRlOTUuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L2JlaWduZXQvcGF0Y2hlcy9jbF91aW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAs MCBAQAotLS0tIGEvc3JjL2NsX2FwaV9rZXJuZWwuYwkyMDE3LTA5LTIyIDEwOjA1OjIyLjAwMDAw MDAwMCArMDIwMAotKysrIGIvc3JjL2NsX2FwaV9rZXJuZWwuYwkyMDIwLTAzLTI0IDE4OjI3OjQw LjE4NjQ4NTg4NyArMDEwMAotQEAgLTE1MSw3ICsxNTEsNyBAQAotICAgICAgICAgZml4ZWRfbG9j YWxfc3pbMF0gPSAxNjsKLSAgICAgICAgIGZpeGVkX2xvY2FsX3N6WzFdID0gMTsKLSAgICAgICB9 IGVsc2UgewotLSAgICAgICAgdWludCBqLCBtYXhEaW1TaXplID0gNjQgLyogZnJvbSA2ND8gKi8s IG1heEdyb3VwU2l6ZSA9IDI1NjsgLy9NQVhfV09SS19HUk9VUF9TSVpFIG1heSB0b28gbGFyZ2UK LSsgICAgICAgIGNsX3VpbnQgaiwgbWF4RGltU2l6ZSA9IDY0IC8qIGZyb20gNjQ/ICovLCBtYXhH cm91cFNpemUgPSAyNTY7IC8vTUFYX1dPUktfR1JPVVBfU0laRSBtYXkgdG9vIGxhcmdlCi0gICAg ICAgICBzaXplX3QgcmVhbEdyb3VwU2l6ZSA9IDE7Ci0gICAgICAgICBmb3IgKGkgPSAwOyBpIDwg d29ya19kaW07IGkrKykgewotICAgICAgICAgICBmb3IgKGogPSBtYXhEaW1TaXplOyBqID4gMTsg ai0tKSB7Ci0tLS0gYS9zcmMvY2xfZW5xdWV1ZS5jCTIwMTctMDktMjIgMTA6MDU6MjIuMDAwMDAw MDAwICswMjAwCi0rKysgYi9zcmMvY2xfZW5xdWV1ZS5jCTIwMjAtMDMtMjQgMTg6MzA6MTIuMDMx NDc5ODMzICswMTAwCi1AQCAtNDk0LDcgKzQ5NCw3IEBACi0gY2xfaW50IGNsX2VucXVldWVfc3Zt X2ZyZWUoZW5xdWV1ZV9kYXRhICpkYXRhLCBjbF9pbnQgc3RhdHVzKSB7Ci0gICBpbnQgaTsKLSAg IHZvaWQgKipwb2ludGVycyA9IGRhdGEtPnBvaW50ZXJzOwotLSAgdWludCBudW1fc3ZtX3B0cnMg PSBkYXRhLT5zaXplOwotKyAgY2xfdWludCBudW1fc3ZtX3B0cnMgPSBkYXRhLT5zaXplOwotICAg Y2xfaW50IGVyciA9IENMX1NVQ0NFU1M7Ci0gCi0gICBpZiAoc3RhdHVzICE9IENMX0NPTVBMRVRF KQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvZTFiMjQxOWEwMDA4ZTM4ZWYy ZDlkMjU1ZDllOWM3NGU5ZmJhMDg0Yi5wYXRjaCBiL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2Ux YjI0MTlhMDAwOGUzOGVmMmQ5ZDI1NWQ5ZTljNzRlOWZiYTA4NGIucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDhkZTllNmUyZjA5My4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3Br Z3MvYmVpZ25ldC9wYXRjaGVzL2UxYjI0MTlhMDAwOGUzOGVmMmQ5ZDI1NWQ5ZTljNzRlOWZiYTA4 NGIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotRnJvbSBlMWIyNDE5YTAw MDhlMzhlZjJkOWQyNTVkOWU5Yzc0ZTlmYmEwODRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot RnJvbTogIlJlYmVjY2EgTi4gUGFsbWVyIiA8cmViZWNjYV9wYWxtZXJAem9oby5jb20+Ci1EYXRl OiBTYXQsIDIxIEp1bCAyMDE4IDIwOjA1OjU0ICswMTAwCi1TdWJqZWN0OiBBZGQgcHJlbGltaW5h cnkgTExWTSA3IHN1cHBvcnQKLQotVGhpcyBpcyBwcmVsaW1pbmFyeSBiZWNhdXNlIExMVk0gNyBo YXMgbm90IGJlZW4gcmVsZWFzZWQgeWV0OgotaXQgd2FzIHRlc3RlZCB3aXRoIHRoZSBzbmFwc2hv dCBmcm9tIERlYmlhbiBleHBlcmltZW50YWwgKHN2bjMzNjg5NCkuCi0KLTEuQ2hhbmdlIGxpbmtp bmcgb3JkZXIsIGFzIGNsYW5nQ29kZUdlbiBub3cgbGlua3MgdG8gY2xhbmdGcm9udGVuZAotMi5Q YXNzIHJlZmVyZW5jZXMgbm90IHBvaW50ZXJzIHRvIFdyaXRlQml0Y29kZVRvRmlsZSBhbmQgQ2xv bmVNb2R1bGUKLTMuQWRkIHRoZSBoZWFkZXJzIHRoYXQgTG9vcFNpbXBsaWZ5SUQsIExDU1NBSUQg YW5kCi1zb21lIGNyZWF0ZSpQYXNzIGhhdmUgbW92ZWQgdG8KLTQuRGVmaW5lIG91ciBERUJVRyB3 aGV0aGVyIG9yIG5vdCB3ZSBqdXN0IHVuZGVmaW5lZCBMTFZNJ3MKLSh0aGVpcnMgaXMgbm93IExM Vk1fREVCVUcsIGJ1dCB3ZSBuZXZlciBhY3R1YWxseSB1c2UgaXQpCi0KLVNpZ25lZC1vZmYtYnk6 IFJlYmVjY2EgTi4gUGFsbWVyIDxyZWJlY2NhX3BhbG1lckB6b2hvLmNvbT4KLVJldmlld2VkLWJ5 OiBZYW5nIFJvbmcgPHJvbmcuci55YW5nQGludGVsLmNvbT4KLS0tLQotIENNYWtlL0ZpbmRMTFZN LmNtYWtlICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gYmFja2VuZC9zcmMvYmFja2VuZC9n ZW5fcHJvZ3JhbS5jcHAgICAgICB8IDggKysrKysrKysKLSBiYWNrZW5kL3NyYy9iYWNrZW5kL3By b2dyYW0uY3BwICAgICAgICAgIHwgNCArKysrCi0gYmFja2VuZC9zcmMvbGx2bS9FeHBhbmRMYXJn ZUludGVnZXJzLmNwcCB8IDIgKy0KLSBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fYml0Y29kZV9saW5r LmNwcCAgIHwgNCArKysrCi0gYmFja2VuZC9zcmMvbGx2bS9sbHZtX2luY2x1ZGVzLmhwcCAgICAg ICB8IDQgKysrKwotIDYgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKLQotZGlmZiAtLWdpdCBhL0NNYWtlL0ZpbmRMTFZNLmNtYWtlIGIvQ01ha2UvRmluZExM Vk0uY21ha2UKLWluZGV4IDU0NTdmMjQuLmY4ODI1ODkgMTAwNjQ0Ci0tLS0gYS9DTWFrZS9GaW5k TExWTS5jbWFrZQotKysrIGIvQ01ha2UvRmluZExMVk0uY21ha2UKLUBAIC0xMTMsMTAgKzExMywx MCBAQCBtYWNybyhhZGRfb25lX2xpYiBuYW1lKQotIGVuZG1hY3JvKCkKLSAKLSAjQXNzdW1lIGNs YW5nIGxpYiBwYXRoIHNhbWUgYXMgbGx2bSBsaWIgcGF0aAotK2FkZF9vbmVfbGliKCJjbGFuZ0Nv ZGVHZW4iKQotIGFkZF9vbmVfbGliKCJjbGFuZ0Zyb250ZW5kIikKLSBhZGRfb25lX2xpYigiY2xh bmdTZXJpYWxpemF0aW9uIikKLSBhZGRfb25lX2xpYigiY2xhbmdEcml2ZXIiKQotLWFkZF9vbmVf bGliKCJjbGFuZ0NvZGVHZW4iKQotIGFkZF9vbmVfbGliKCJjbGFuZ1NlbWEiKQotIGFkZF9vbmVf bGliKCJjbGFuZ1N0YXRpY0FuYWx5emVyRnJvbnRlbmQiKQotIGFkZF9vbmVfbGliKCJjbGFuZ1N0 YXRpY0FuYWx5emVyQ2hlY2tlcnMiKQotZGlmZiAtLWdpdCBhL2JhY2tlbmQvc3JjL2JhY2tlbmQv Z2VuX3Byb2dyYW0uY3BwIGIvYmFja2VuZC9zcmMvYmFja2VuZC9nZW5fcHJvZ3JhbS5jcHAKLWlu ZGV4IDI3NGM5OWMuLjQxNTkyMzQgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9iYWNrZW5kL2dl bl9wcm9ncmFtLmNwcAotKysrIGIvYmFja2VuZC9zcmMvYmFja2VuZC9nZW5fcHJvZ3JhbS5jcHAK LUBAIC00NTQsNyArNDU0LDExIEBAIG5hbWVzcGFjZSBnYmUgewotICNpZmRlZiBHQkVfQ09NUElM RVJfQVZBSUxBQkxFCi0gICAgICAgc3RkOjpzdHJpbmcgc3RyOwotICAgICAgIGxsdm06OnJhd19z dHJpbmdfb3N0cmVhbSBPUyhzdHIpOwotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPj0gNwotKyAg ICAgIGxsdm06OldyaXRlQml0Y29kZVRvRmlsZSgqKChsbHZtOjpNb2R1bGUqKXByb2ctPm1vZHVs ZSksIE9TKTsKLSsjZWxzZQotICAgICAgIGxsdm06OldyaXRlQml0Y29kZVRvRmlsZSgobGx2bTo6 TW9kdWxlKilwcm9nLT5tb2R1bGUsIE9TKTsKLSsjZW5kaWYKLSAgICAgICBzdGQ6OnN0cmluZyYg YmluX3N0ciA9IE9TLnN0cigpOwotICAgICAgIGludCBsbHN6ID0gYmluX3N0ci5zaXplKCk7Ci0g ICAgICAgKmJpbmFyeSA9IChjaGFyICopbWFsbG9jKHNpemVvZihjaGFyKSAqIChsbHN6KzEpICk7 Ci1AQCAtNTQ1LDcgKzU0OSwxMSBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmbW9kUmVmKTsKLSAgICAgICAgIHNyYyA9IGxsdm06OnVud3Jh cChtb2RSZWYpOwotICAgICAgIH0KLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SID49IDcKLSsgICAg ICBsbHZtOjpNb2R1bGUqIGNsb25lID0gbGx2bTo6Q2xvbmVNb2R1bGUoKnNyYykucmVsZWFzZSgp OwotKyNlbHNlCi0gICAgICAgbGx2bTo6TW9kdWxlKiBjbG9uZSA9IGxsdm06OkNsb25lTW9kdWxl KHNyYykucmVsZWFzZSgpOwotKyNlbmRpZgotICAgICAgIGlmIChMTFZNTGlua01vZHVsZXMyKHdy YXAoZHN0KSwgd3JhcChjbG9uZSkpKSB7Ci0gI2VsaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAg KyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzcKLSAgICAgICBpZiAoTExWTUxpbmtNb2R1bGVzKHdy YXAoZHN0KSwgd3JhcChzcmMpLCBMTFZNTGlua2VyUHJlc2VydmVTb3VyY2VfUmVtb3ZlZCwgJmVy ck1zZykpIHsKLWRpZmYgLS1naXQgYS9iYWNrZW5kL3NyYy9iYWNrZW5kL3Byb2dyYW0uY3BwIGIv YmFja2VuZC9zcmMvYmFja2VuZC9wcm9ncmFtLmNwcAotaW5kZXggYzM3YzU5NS4uYjM2ZjdiNCAx MDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAKLSsrKyBiL2JhY2tl bmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAKLUBAIC03OTQsNyArNzk0LDExIEBAIG5hbWVzcGFj ZSBnYmUgewotICAgICAgIGxsdm06OnJhd19mZF9vc3RyZWFtIG9zdHJlYW0gKGR1bXBTUElSQmlu YXJ5TmFtZS5jX3N0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy ciwgbGx2bTo6c3lzOjpmczo6Rl9Ob25lKTsKLSAgICAgICBpZiAoIWVycikKLSsjaWYgTExWTV9W RVJTSU9OX01BSk9SPDcKLSAgICAgICAgIGxsdm06OldyaXRlQml0Y29kZVRvRmlsZSgqb3V0X21v ZHVsZSwgb3N0cmVhbSk7Ci0rI2Vsc2UKLSsgICAgICAgIGxsdm06OldyaXRlQml0Y29kZVRvRmls ZSgqKm91dF9tb2R1bGUsIG9zdHJlYW0pOwotKyNlbmRpZgotICAgICB9Ci0gI2VuZGlmCi0gICAg IHJldHVybiB0cnVlOwotZGlmZiAtLWdpdCBhL2JhY2tlbmQvc3JjL2xsdm0vRXhwYW5kTGFyZ2VJ bnRlZ2Vycy5jcHAgYi9iYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMuY3BwCi1p bmRleCA4NTE1ZGMxLi40YWVjNDRlIDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9FeHBh bmRMYXJnZUludGVnZXJzLmNwcAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9FeHBhbmRMYXJnZUlu dGVnZXJzLmNwcAotQEAgLTk5LDggKzk5LDggQEAgdXNpbmcgbmFtZXNwYWNlIGxsdm07Ci0gCi0g I2lmZGVmIERFQlVHCi0gICAjdW5kZWYgREVCVUcKLS0gICNkZWZpbmUgREVCVUcoLi4uKQotICNl bmRpZgotKyNkZWZpbmUgREVCVUcoLi4uKQotIC8vIEJyZWFrIGluc3RydWN0aW9ucyB1cCBpbnRv IG5vIGxhcmdlciB0aGFuIDY0LWJpdCBjaHVua3MuCi0gc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtD aHVua0JpdHMgPSA2NDsKLSBzdGF0aWMgY29uc3QgdW5zaWduZWQga0NodW5rQnl0ZXMgPSBrQ2h1 bmtCaXRzIC8gQ0hBUl9CSVQ7Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2Jp dGNvZGVfbGluay5jcHAgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fYml0Y29kZV9saW5rLmNwcAot aW5kZXggZWY1NmU0Yy4uNGMzZTIwZSAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2 bV9iaXRjb2RlX2xpbmsuY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fYml0Y29kZV9s aW5rLmNwcAotQEAgLTM0MCw3ICszNDAsMTEgQEAgbmFtZXNwYWNlIGdiZQotICAgICAvKiBXZSB1 c2UgYmVpZ25ldCdzIGJpdGNvZGUgYXMgZHN0IGJlY2F1c2UgaXQgd2lsbCBoYXZlIGEgbG90IG9m Ci0gICAgICAgIGxhenkgZnVuY3Rpb25zIHdoaWNoIHdpbGwgbm90IGJlIGxvYWRlZC4gKi8KLSAj aWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzkKLSsj aWYgTExWTV9WRVJTSU9OX01BSk9SID49IDcKLSsgICAgbGx2bTo6TW9kdWxlICogbGlua2VkX21v ZHVsZSA9IGxsdm06OkNsb25lTW9kdWxlKCoobGx2bTo6TW9kdWxlKiltb2QpLnJlbGVhc2UoKTsK LSsjZWxzZQotICAgICBsbHZtOjpNb2R1bGUgKiBsaW5rZWRfbW9kdWxlID0gbGx2bTo6Q2xvbmVN b2R1bGUoKGxsdm06Ok1vZHVsZSopbW9kKS5yZWxlYXNlKCk7Ci0rI2VuZGlmCi0gICAgIGlmKExM Vk1MaW5rTW9kdWxlczIod3JhcChjbG9uZWRMaWIpLCB3cmFwKGxpbmtlZF9tb2R1bGUpKSkgewot ICNlbHNlCi0gICAgIGNoYXIqIGVycm9yTXNnOwotZGlmZiAtLWdpdCBhL2JhY2tlbmQvc3JjL2xs dm0vbGx2bV9pbmNsdWRlcy5ocHAgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBw Ci1pbmRleCAxODQ1NTNhLi5mZmNjZjAyIDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9s bHZtX2luY2x1ZGVzLmhwcAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2luY2x1ZGVzLmhw cAotQEAgLTg5LDYgKzg5LDEwIEBACi0gI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9JbnRyaW5zaWNM b3dlcmluZy5oIgotIAotICNpbmNsdWRlICJsbHZtL1RyYW5zZm9ybXMvU2NhbGFyLmgiCi0rI2lm IExMVk1fVkVSU0lPTl9NQUpPUiA+PSA3Ci0rI2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9VdGls cy5oIgotKyNpbmNsdWRlICJsbHZtL1RyYW5zZm9ybXMvSW5zdENvbWJpbmUvSW5zdENvbWJpbmUu aCIKLSsjZW5kaWYKLSAjaW5jbHVkZSAibGx2bS9NQy9NQ0FzbUluZm8uaCIKLSAjaW5jbHVkZSAi bGx2bS9NQy9NQ0NvbnRleHQuaCIKLSAjaW5jbHVkZSAibGx2bS9NQy9NQ0luc3RySW5mby5oIgot LS0gCi1jZ2l0IHYxLjEKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2 bTA2LnBhdGNoIGIvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTA2LnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzg5ZTY2YzgyZGYuLjAwMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwz MyArMCwwIEBACi1Tb3VyY2U6IEFyY2ggTGludXgKLVVwc3RyZWFtOiB1bmtub3duCi1SZWFzb246 IGZpeGVzIGxsdm02IGNvbXBpbGF0aW9uCi0KLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV90 b19nZW4uY3BwCTIwMTctMTAtMjQgMDk6MDQ6NDguMDAwMDAwMDAwICswMzAwCi0rKysgYi9iYWNr ZW5kL3NyYy9sbHZtL2xsdm1fdG9fZ2VuLmNwcAkyMDE4LTAzLTE2IDE2OjA4OjU0LjY2OTk2Mzgy NCArMDIwMAotQEAgLTMyMiw3ICszMjIsMTEgQEAgbmFtZXNwYWNlIGdiZQotICAgICBEYXRhTGF5 b3V0IERMKCZtb2QpOwotICAgICAKLSAgICAgZ2JlRGlhZ25vc3RpY0NvbnRleHQgZGM7Ci0rI2lm IExMVk1fVkVSU0lPTl9NQUpPUiA+PSA2Ci0rICAgIG1vZC5nZXRDb250ZXh0KCkuc2V0RGlhZ25v c3RpY0hhbmRsZXJDYWxsQmFjaygmZ2JlRGlhZ25vc3RpY0hhbmRsZXIsJmRjKTsKLSsjZWxzZQot ICAgICBtb2QuZ2V0Q29udGV4dCgpLnNldERpYWdub3N0aWNIYW5kbGVyKCZnYmVEaWFnbm9zdGlj SGFuZGxlciwmZGMpOwotKyNlbmRpZgotIAotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCAr IExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzNwotICAgICBtb2Quc2V0RGF0YUxheW91dChETCk7Ci0t LS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fdW5yb2xsLmNwcAkyMDE3LTEwLTI0IDA5OjA0OjQ4 LjAwMDAwMDAwMCArMDMwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3Vucm9sbC5jcHAJ MjAxOC0wMy0xNiAxNjowOTo0Ny43MzY0MDM1NTcgKzAyMDAKLUBAIC0yMDUsNyArMjA1LDkgQEAg bmFtZXNwYWNlIGdiZSB7Ci0gICAgICAgICAgIGlmIChwYXJlbnRUcmlwQ291bnQgIT0gMCAmJiBj dXJyVHJpcENvdW50ICogcGFyZW50VHJpcENvdW50ID4gMzIpIHsKLSAgICAgICAgICAgICAvL0Rv bid0IGNoYW5nZSB0aGUgdW5yb2xsSUQgaWYgZG9lc24ndCBmb3JjZSB1bnJvbGwuCi0gICAgICAg ICAgICAgLy9zZXRVbnJvbGxJRChwYXJlbnRMLCBmYWxzZSk7Ci0tI2lmIExMVk1fVkVSU0lPTl9N QUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDM4Ci0rI2lmIExMVk1fVkVSU0lPTl9N QUpPUiA+PSA2Ci0rICAgICAgICAgICAgbG9vcEluZm8uZXJhc2UocGFyZW50TCk7Ci0rI2VsaWYg TExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzgKLSAgICAg ICAgICAgICBsb29wSW5mby5tYXJrQXNSZW1vdmVkKHBhcmVudEwpOwotICNlbHNlCi0gICAgICAg ICAgICAgTFBNLmRlbGV0ZUxvb3BGcm9tUXVldWUocGFyZW50TCk7Ci1Pbmx5IGluIEJlaWduZXQt MS4zLjItU291cmNlOiBidWlsZAotCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hl cy9sbHZtMDgucGF0Y2ggYi9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDgucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwYzVlN2E3YzRmNy4uMDAwMDAwMDAwMDAwCi0t LSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOC5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDU2ICswLDAgQEAKLUZyb20gNzVjMTUyNTk5YTdjMTczOWU2ZGFkY2RiOWIzNzdhY2Y3ZTQ0 ZDljZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbiBCZWljaCA8amJlaWNoQEZy ZWVCU0Qub3JnPgotRGF0ZTogV2VkLCAzMCBKYW4gMjAxOSAxMjo0MjozNCArMDAwMAotU3ViamVj dDogW1BBVENIXSBsYW5nL2JlaWduZXQ6IHVuYnJlYWsgd2l0aCBsbHZtODAKLQotUmVncmVzc2Vk IGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9jb21taXQvNzIxZDk1NzEz YTllCi0KLXVuYWJsZSB0byBsb2FkIC91c3IvbG9jYWwvbGliL2JlaWduZXQvL2xpYmdiZWludGVy cC5zbyB3aGljaCBpcyBwYXJ0IG9mIHRoZSBkcml2ZXIsIHBsZWFzZSBjaGVjayEKLWxkLWVsZi5z by4xOiAvdXNyL2xvY2FsL2xpYi9iZWlnbmV0Ly9saWJnYmVpbnRlcnAuc286IFVuZGVmaW5lZCBz eW1ib2wgIl9aTjRsbHZtMjREaXNhYmxlQUJJQnJlYWtpbmdDaGVja3NFIgotCi1SZWdyZXNzZWQg YnkgaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L2NvbW1pdC80YTJkNThlMTZh Y2MKLQotYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcDozMDc2OjU6IGVycm9y OgotICAgICAgdW5rbm93biB0eXBlIG5hbWUgJ1Rlcm1pbmF0b3JJbnN0JwotICAgIFRlcm1pbmF0 b3JJbnN0ICp0ZXJtID0gYmItPmdldFRlcm1pbmF0b3IoKTsKLSAgICBeCi1iYWNrZW5kL3NyYy9s bHZtL2xsdm1fZ2VuX2JhY2tlbmQuY3BwOjMwODM6NTogZXJyb3I6Ci0gICAgICB1bmtub3duIHR5 cGUgbmFtZSAnVGVybWluYXRvckluc3QnCi0gICAgVGVybWluYXRvckluc3QgKnRlcm0gPSBiYi0+ Z2V0VGVybWluYXRvcigpOwotICAgIF4KLQotLS0tIGEvYmFja2VuZC9zcmMvQ01ha2VMaXN0cy50 eHQJMjAxNy0wOS0yMiAwODowNToyMiBVVEMKLSsrKyBiL2JhY2tlbmQvc3JjL0NNYWtlTGlzdHMu dHh0Ci1AQCAtMTY4LDYgKzE2OCw3IEBAIGFkZF9kZXBlbmRlbmNpZXMoZ2JlIGJlaWduZXRfYml0 Y29kZSkKLSBlbmRpZiAoTk9UIChVU0VfU1RBTkRBTE9ORV9HQkVfQ09NUElMRVIgU1RSRVFVQUwg InRydWUiKSkKLSAKLSBhZGRfbGlicmFyeShnYmVpbnRlcnAgU0hBUkVEIGdiZV9iaW5faW50ZXJw cmV0ZXIuY3BwKQotK3RhcmdldF9saW5rX2xpYnJhcmllcyhnYmVpbnRlcnAgJHtMTFZNX01PRFVM RV9MSUJTfSkKLSAKLSBpZiAoTExWTV9WRVJTSU9OX05PRE9UIFZFUlNJT05fRVFVQUwgMzQpCi0g ICBmaW5kX2xpYnJhcnkoVEVSTUlORk8gTkFNRVMgdGluZm8gbmN1cnNlcykKLS0tLSBhL2JhY2tl bmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAJMjAxNy0xMC0yNCAwNjowNDo0OCBVVEMK LSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLUBAIC0zMDczLDE0 ICszMDczLDIyIEBAIG5hbWVzcGFjZSBnYmUKLSAKLSAKLSAgIHN0YXRpYyB1bnNpZ25lZCBnZXRD aGlsZE5vKEJhc2ljQmxvY2sgKmJiKSB7Ci0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA8IDgKLSAg ICAgVGVybWluYXRvckluc3QgKnRlcm0gPSBiYi0+Z2V0VGVybWluYXRvcigpOwotKyNlbHNlCi0r ICAgIEluc3RydWN0aW9uICp0ZXJtID0gYmItPmdldFRlcm1pbmF0b3IoKTsKLSsjZW5kaWYKLSAg ICAgcmV0dXJuIHRlcm0tPmdldE51bVN1Y2Nlc3NvcnMoKTsKLSAgIH0KLSAKLSAgIC8vIHJldHVy biBOVUxMIGlmIGluZGV4IG91dC1yYW5nZSBvZiBjaGlsZHJlbiBudW1iZXIKLSAgIHN0YXRpYyBC YXNpY0Jsb2NrICpnZXRDaGlsZFBvc3NpYmxlKEJhc2ljQmxvY2sgKmJiLCB1bnNpZ25lZCBpbmRl eCkgewotIAotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCA4Ci0gICAgIFRlcm1pbmF0b3JJbnN0 ICp0ZXJtID0gYmItPmdldFRlcm1pbmF0b3IoKTsKLSsjZWxzZQotKyAgICBJbnN0cnVjdGlvbiAq dGVybSA9IGJiLT5nZXRUZXJtaW5hdG9yKCk7Ci0rI2VuZGlmCi0gICAgIHVuc2lnbmVkIGNoaWxk Tm8gPSB0ZXJtLT5nZXROdW1TdWNjZXNzb3JzKCk7Ci0gICAgIEJhc2ljQmxvY2sgKmNoaWxkID0g TlVMTDsKLSAgICAgaWYoaW5kZXggPCBjaGlsZE5vKSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jl aWduZXQvcGF0Y2hlcy9sbHZtMDkucGF0Y2ggYi9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZt MDkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjYWVjZWFiYjZkZC4uMDAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOS5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi1Tb3VyY2U6IEZyZWVCU0QgKyBxNjYKLQotTW9z dGx5IEZyZWVCU0Qgb3RoZXIgdGhhbiBGaW5kTExWTS5jbWFrZSBjaGFuZ2VzLgotTGlua2luZyBh Z2FpbnN0IGNsYW5nLWNwcCBkb2VzIG5vdCB3b3JrIGZvciB1cy4KLQotLS0tIGEvQ01ha2UvRmlu ZExMVk0uY21ha2UKLSsrKyBiL0NNYWtlL0ZpbmRMTFZNLmNtYWtlCi1AQCAtMTQwLDYgKzE0MCw3 IEBAIGFkZF9vbmVfbGliKCJjbGFuZ1N0YXRpY0FuYWx5emVyQ29yZSIpCi0gYWRkX29uZV9saWIo ImNsYW5nQW5hbHlzaXMiKQotIGFkZF9vbmVfbGliKCJjbGFuZ0VkaXQiKQotIGFkZF9vbmVfbGli KCJjbGFuZ0FTVCIpCi0rYWRkX29uZV9saWIoImNsYW5nQVNUTWF0Y2hlcnMiKQotIGFkZF9vbmVf bGliKCJjbGFuZ1BhcnNlIikKLSBhZGRfb25lX2xpYigiY2xhbmdTZW1hIikKLSBhZGRfb25lX2xp YigiY2xhbmdMZXgiKQotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2ludHJpbnNpY19sb3dl cmluZy5jcHAJMjAxNy0xMC0yNCAwNjowNDo0OCBVVEMKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0v bGx2bV9pbnRyaW5zaWNfbG93ZXJpbmcuY3BwCi1AQCAtNzcsNyArNzcsMTEgQEAgbmFtZXNwYWNl IGdiZSB7Ci0gICAgICAgICBzdGQ6OnZlY3RvcjxUeXBlICo+IFBhcmFtVHlzOwotICAgICAgICAg Zm9yIChWYWx1ZSoqIEkgPSBBcmdCZWdpbjsgSSAhPSBBcmdFbmQ7ICsrSSkKLSAgICAgICAgICAg UGFyYW1UeXMucHVzaF9iYWNrKCgqSSktPmdldFR5cGUoKSk7Ci0rI2lmIExMVk1fVkVSU0lPTl9N QUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDkwCi0rICAgICAgICBGdW5jdGlvbkNh bGxlZSBGQ2FjaGUgPSBNLT5nZXRPckluc2VydEZ1bmN0aW9uKE5ld0ZuLAotKyNlbHNlCi0gICAg ICAgICBDb25zdGFudCogRkNhY2hlID0gTS0+Z2V0T3JJbnNlcnRGdW5jdGlvbihOZXdGbiwKLSsj ZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25U eXBlOjpnZXQoUmV0VHksIFBhcmFtVHlzLCBmYWxzZSkpOwotIAotICAgICAgICAgSVJCdWlsZGVy PD4gQnVpbGRlcihDSS0+Z2V0UGFyZW50KCksIEJhc2ljQmxvY2s6Oml0ZXJhdG9yKENJKSk7Ci0t LS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCTIwMTctMTAtMjQgMDY6 MDQ6NDggVVRDCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCi1A QCAtODIsNyArODIsMTEgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpP UiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDQwCi0gICAgICAgICAgIE1vZHVsZSAqTSA9 IEktPmdldFBhcmVudCgpLT5nZXRQYXJlbnQoKS0+Z2V0UGFyZW50KCk7Ci0gI2lmIExMVk1fVkVS U0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDUwCi0rI2lmIExMVk1fVkVS U0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDkwCi0rICAgICAgICAgIEZ1 bmN0aW9uQ2FsbGVlIHNhbXBsZXJDdnQgPSBNLT5nZXRPckluc2VydEZ1bmN0aW9uKCJfX2dlbl9v Y2xfc2FtcGxlcl90b19pbnQiLCBpMzJUeSwgSS0+Z2V0T3BlcmFuZCgwKS0+Z2V0VHlwZSgpKTsK LSsjZWxzZQotICAgICAgICAgICBWYWx1ZSogc2FtcGxlckN2dCA9IE0tPmdldE9ySW5zZXJ0RnVu Y3Rpb24oIl9fZ2VuX29jbF9zYW1wbGVyX3RvX2ludCIsIGkzMlR5LCBJLT5nZXRPcGVyYW5kKDAp LT5nZXRUeXBlKCkpOwotKyNlbmRpZgotICNlbHNlCi0gICAgICAgICAgIFZhbHVlKiBzYW1wbGVy Q3Z0ID0gTS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigiX19nZW5fb2NsX3NhbXBsZXJfdG9faW50Iiwg aTMyVHksIEktPmdldE9wZXJhbmQoMCktPmdldFR5cGUoKSwgbnVsbHB0cik7Ci0gI2VuZGlmCi1A QCAtMTI0LDcgKzEyOCwxMSBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAjaWYgTExWTV9WRVJTSU9OX01B Sk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gNDAKLSAgICAgICAgICAgTW9kdWxlICpN ID0gSS0+Z2V0UGFyZW50KCktPmdldFBhcmVudCgpLT5nZXRQYXJlbnQoKTsKLSAjaWYgTExWTV9W RVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gNTAKLSsjaWYgTExWTV9W RVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gOTAKLSsgICAgICAgICAg RnVuY3Rpb25DYWxsZWUgc2FtcGxlckN2dCA9IE0tPmdldE9ySW5zZXJ0RnVuY3Rpb24oIl9fZ2Vu X29jbF9zYW1wbGVyX3RvX2ludCIsIGkzMlR5LCBJLT5nZXRPcGVyYW5kKDApLT5nZXRUeXBlKCkp OwotKyNlbHNlCi0gICAgICAgICAgIFZhbHVlKiBzYW1wbGVyQ3Z0ID0gTS0+Z2V0T3JJbnNlcnRG dW5jdGlvbigiX19nZW5fb2NsX3NhbXBsZXJfdG9faW50IiwgaTMyVHksIEktPmdldE9wZXJhbmQo MCktPmdldFR5cGUoKSk7Ci0rI2VuZGlmCi0gI2Vsc2UKLSAgICAgICAgICAgVmFsdWUqIHNhbXBs ZXJDdnQgPSBNLT5nZXRPckluc2VydEZ1bmN0aW9uKCJfX2dlbl9vY2xfc2FtcGxlcl90b19pbnQi LCBpMzJUeSwgSS0+Z2V0T3BlcmFuZCgwKS0+Z2V0VHlwZSgpLCBudWxscHRyKTsKLSAjZW5kaWYK LS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcm9maWxpbmcuY3BwCTIwMTctMTAtMjQgMDY6 MDQ6NDggVVRDCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fcHJvZmlsaW5nLmNwcAotQEAg LTE2MywxMCArMTYzLDE4IEBAIG5hbWVzcGFjZSBnYmUKLSAgICAgICAvLyBfX2dlbl9vY2xfc3Rv cmVfdGltZXN0YW1wKGludCBudGgsIGludCB0eXBlKTsKLSAgICAgICBWYWx1ZSAqQXJnc1syXSA9 IHtDb25zdGFudEludDo6Z2V0KGludFR5LCBwb2ludE51bSsrKSwgQ29uc3RhbnRJbnQ6OmdldChp bnRUeSwgcHJvZmlsaW5nVHlwZSl9OwotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExM Vk1fVkVSU0lPTl9NSU5PUiA+PSA1MAotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExM Vk1fVkVSU0lPTl9NSU5PUiA+PSA5MAotKyAgICAgIGJ1aWxkZXItPkNyZWF0ZUNhbGwobW9kdWxl LT5nZXRPckluc2VydEZ1bmN0aW9uKAotKyNlbHNlCi0gICAgICAgYnVpbGRlci0+Q3JlYXRlQ2Fs bChjYXN0PGxsdm06OkZ1bmN0aW9uPihtb2R1bGUtPmdldE9ySW5zZXJ0RnVuY3Rpb24oCi0rI2Vu ZGlmCi0gICAgICAgICAgICAgICAiX19nZW5fb2NsX2NhbGNfdGltZXN0YW1wIiwgVHlwZTo6Z2V0 Vm9pZFR5KG1vZHVsZS0+Z2V0Q29udGV4dCgpKSwKLSAgICAgICAgICAgICAgIEludGVnZXJUeXBl OjpnZXRJbnQzMlR5KG1vZHVsZS0+Z2V0Q29udGV4dCgpKSwKLSsjaWYgTExWTV9WRVJTSU9OX01B Sk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gOTAKLSsgICAgICAgICAgICAgIEludGVn ZXJUeXBlOjpnZXRJbnQzMlR5KG1vZHVsZS0+Z2V0Q29udGV4dCgpKSksCi0rI2Vsc2UKLSAgICAg ICAgICAgICAgIEludGVnZXJUeXBlOjpnZXRJbnQzMlR5KG1vZHVsZS0+Z2V0Q29udGV4dCgpKSkp LAotKyNlbmRpZgotICAgICAgICAgICAgICAgQXJyYXlSZWY8VmFsdWUqPihBcmdzKSk7Ci0gI2Vs c2UKLSAgICAgICBidWlsZGVyLT5DcmVhdGVDYWxsKGNhc3Q8bGx2bTo6RnVuY3Rpb24+KG1vZHVs ZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLUBAIC0xODUsMTAgKzE5MywxOCBAQCBuYW1lc3BhY2Ug Z2JlCi0gICAgIFZhbHVlICpBcmdzMlsyXSA9IHtwcm9maWxpbmdCdWYsIENvbnN0YW50SW50Ojpn ZXQoaW50VHksIHByb2ZpbGluZ1R5cGUpfTsKLSAKLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICog MTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gNTAKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SICog MTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gOTAKLSsgICAgYnVpbGRlci0+Q3JlYXRlQ2FsbCht b2R1bGUtPmdldE9ySW5zZXJ0RnVuY3Rpb24oCi0rI2Vsc2UKLSAgICAgYnVpbGRlci0+Q3JlYXRl Q2FsbChjYXN0PGxsdm06OkZ1bmN0aW9uPihtb2R1bGUtPmdldE9ySW5zZXJ0RnVuY3Rpb24oCi0r I2VuZGlmCi0gICAgICAgICAgICAgIl9fZ2VuX29jbF9zdG9yZV9wcm9maWxpbmciLCBUeXBlOjpn ZXRWb2lkVHkobW9kdWxlLT5nZXRDb250ZXh0KCkpLAotICAgICAgICAgICAgIHB0clR5LAotKyNp ZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA5MAotKyAg ICAgICAgICAgIEludGVnZXJUeXBlOjpnZXRJbnQzMlR5KG1vZHVsZS0+Z2V0Q29udGV4dCgpKSks Ci0rI2Vsc2UKLSAgICAgICAgICAgICBJbnRlZ2VyVHlwZTo6Z2V0SW50MzJUeShtb2R1bGUtPmdl dENvbnRleHQoKSkpKSwKLSsjZW5kaWYKLSAgICAgICAgICAgICBBcnJheVJlZjxWYWx1ZSo+KEFy Z3MyKSk7Ci0gI2Vsc2UKLSAgICAgYnVpbGRlci0+Q3JlYXRlQ2FsbChjYXN0PGxsdm06OkZ1bmN0 aW9uPihtb2R1bGUtPmdldE9ySW5zZXJ0RnVuY3Rpb24oCi0tLS0gYS9iYWNrZW5kL3NyYy9sbHZt L2xsdm1fZGV2aWNlX2VucXVldWUuY3BwCTIwMTctMTAtMjQgMDY6MDQ6NDggVVRDCi0rKysgYi9i YWNrZW5kL3NyYy9sbHZtL2xsdm1fZGV2aWNlX2VucXVldWUuY3BwCi1AQCAtMzk4LDggKzM5OCwx MyBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPFR5cGUgKj4g UGFyYW1UeXM7Ci0gICAgICAgICAgICAgICBmb3IgKFZhbHVlKiogaXRlciA9IGFyZ3MuYmVnaW4o KTsgaXRlciAhPSBhcmdzLmVuZCgpOyArK2l0ZXIpCi0gICAgICAgICAgICAgICAgIFBhcmFtVHlz LnB1c2hfYmFjaygoKml0ZXIpLT5nZXRUeXBlKCkpOwotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1Ig KiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA5MAotKyAgICAgICAgICAgICAgQ2FsbEluc3Qq IG5ld0NJID0gYnVpbGRlci5DcmVhdGVDYWxsKG1vZC0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19nZW5fZW5xdWV1ZV9rZXJuZWxfc2xtIiwg RnVuY3Rpb25UeXBlOjpnZXQoaW50VHksIFBhcmFtVHlzLCBmYWxzZSkpLCBhcmdzKTsKLSsjZWxz ZQotICAgICAgICAgICAgICAgQ2FsbEluc3QqIG5ld0NJID0gYnVpbGRlci5DcmVhdGVDYWxsKGNh c3Q8bGx2bTo6RnVuY3Rpb24+KG1vZC0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiX19nZW5fZW5xdWV1ZV9rZXJuZWxfc2xtIiwgRnVuY3Rpb25U eXBlOjpnZXQoaW50VHksIFBhcmFtVHlzLCBmYWxzZSkpKSwgYXJncyk7Ci0rI2VuZGlmCi0gICAg ICAgICAgICAgICBDSS0+cmVwbGFjZUFsbFVzZXNXaXRoKG5ld0NJKTsKLSAgICAgICAgICAgICAg IGRlYWRJbnNuU2V0Lmluc2VydChDSSk7Ci0gICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTEwLnBhdGNoIGIvc3JjcGtncy9iZWlnbmV0L3BhdGNo ZXMvbGx2bTEwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWFmZTQ4YTI0 MGQuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTAucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNDcgKzAsMCBAQAotZGlmZiAtLWdpdCBDTWFrZS9GaW5k TExWTS5jbWFrZSBDTWFrZS9GaW5kTExWTS5jbWFrZQotaW5kZXggMGE1OWU0Ny4uNmU5MDkyMyAx MDA2NDQKLS0tLSBhL0NNYWtlL0ZpbmRMTFZNLmNtYWtlCi0rKysgYi9DTWFrZS9GaW5kTExWTS5j bWFrZQotQEAgLTEwNCwyOCArMTA0LDE2IEBAIHN0cmluZyhSRUdFWCBSRVBMQUNFICIgKlxuIiAi IiBMTFZNX1NZU1RFTV9MSUJTICR7TExWTV9TWVNURU1fTElCU19PUklHfSkKLSBlbmRpZiAoTExW TV9TWVNURU1fTElCU19PUklHKQotIGVuZGlmIChMTFZNX1ZFUlNJT05fTk9ET1QgVkVSU0lPTl9H UkVBVEVSIDM0KQotIAotKyNzb21ldGhpbmcgaGFybWxlc3MgYmVjYXVzZSB3aGl0ZXNwYWNlIGF0 IHN0YXJ0IGlzIGFuIGVycm9yCi0rc2V0KENMQU5HX0xJQlJBUklFUyAiLWxkbCIpCi0gbWFjcm8o YWRkX29uZV9saWIgbmFtZSkKLSAgIEZJTkRfTElCUkFSWShDTEFOR19MSUIKLSAgICAgTkFNRVMg JHtuYW1lfQotICAgICBQQVRIUyAke0xMVk1fTElCUkFSWV9ESVJ9IE5PX0RFRkFVTFRfUEFUSCkK LS0gIHNldChDTEFOR19MSUJSQVJJRVMgJHtDTEFOR19MSUJSQVJJRVN9ICR7Q0xBTkdfTElCfSkK LSsgIHNldChDTEFOR19MSUJSQVJJRVMgIiR7Q0xBTkdfTElCUkFSSUVTfSAke0NMQU5HX0xJQn0i KQotKyAgbWVzc2FnZShTVEFUVVMgImNsYW5nbGlicyBuYW1lICR7bmFtZX0gdGhpcyAke0NMQU5H X0xJQn0gYWxsICR7Q0xBTkdfTElCUkFSSUVTfSAiKQotIAl1bnNldChDTEFOR19MSUIgQ0FDSEUp Ci0gZW5kbWFjcm8oKQotIAotICNBc3N1bWUgY2xhbmcgbGliIHBhdGggc2FtZSBhcyBsbHZtIGxp YiBwYXRoCi0tYWRkX29uZV9saWIoImNsYW5nQ29kZUdlbiIpCi0tYWRkX29uZV9saWIoImNsYW5n RnJvbnRlbmQiKQotLWFkZF9vbmVfbGliKCJjbGFuZ1NlcmlhbGl6YXRpb24iKQotLWFkZF9vbmVf bGliKCJjbGFuZ0RyaXZlciIpCi0tYWRkX29uZV9saWIoImNsYW5nU2VtYSIpCi0tYWRkX29uZV9s aWIoImNsYW5nU3RhdGljQW5hbHl6ZXJGcm9udGVuZCIpCi0tYWRkX29uZV9saWIoImNsYW5nU3Rh dGljQW5hbHl6ZXJDaGVja2VycyIpCi0tYWRkX29uZV9saWIoImNsYW5nU3RhdGljQW5hbHl6ZXJD b3JlIikKLS1hZGRfb25lX2xpYigiY2xhbmdBbmFseXNpcyIpCi0tYWRkX29uZV9saWIoImNsYW5n RWRpdCIpCi0tYWRkX29uZV9saWIoImNsYW5nQVNUIikKLS1hZGRfb25lX2xpYigiY2xhbmdBU1RN YXRjaGVycyIpCi0tYWRkX29uZV9saWIoImNsYW5nUGFyc2UiKQotLWFkZF9vbmVfbGliKCJjbGFu Z1NlbWEiKQotLWFkZF9vbmVfbGliKCJjbGFuZ0xleCIpCi0tYWRkX29uZV9saWIoImNsYW5nQmFz aWMiKQotK2FkZF9vbmVfbGliKCJjbGFuZy1jcHAiKQotZGlmZiAtLWdpdCBDTWFrZUxpc3RzLnR4 dCBDTWFrZUxpc3RzLnR4dAotaW5kZXggYzExYWNiYi4uMDhmNDI3ZCAxMDA2NDQKLS0tLSBhL0NN YWtlTGlzdHMudHh0Ci0rKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTc5LDcgKzc5LDcgQEAgZWxz ZWlmIChDT01QSUxFUiBTVFJFUVVBTCAiQ0xBTkciKQotIGVsc2VpZiAoQ09NUElMRVIgU1RSRVFV QUwgIklDQyIpCi0gICBzZXQgKENNQUtFX0NfQ1hYX0ZMQUdTICIke0NNQUtFX0NfQ1hYX0ZMQUdT fSAgLXdkMjkyOCAtV2FsbCAtZlBJQyAtZnN0cmljdC1hbGlhc2luZyAtZnAtbW9kZWwgZmFzdCAt bXNzZTQuMSAtV2wsLUUiKQotIGVuZGlmICgpCi0tc2V0IChDTUFLRV9DWFhfRkxBR1MgIiR7Q01B S0VfQ1hYX0ZMQUdTfSAke0NNQUtFX0NfQ1hYX0ZMQUdTfSAtc3RkPWMrKzB4IC1Xbm8taW52YWxp ZC1vZmZzZXRvZiIpCi0rc2V0IChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAk e0NNQUtFX0NfQ1hYX0ZMQUdTfSAtV25vLWludmFsaWQtb2Zmc2V0b2YiKQotIHNldCAoQ01BS0Vf Q19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAke0NNQUtFX0NfQ1hYX0ZMQUdTfSIpCi0gc2V0IChD TUFLRV9DWFhfRkxBR1NfREVCVUcgICAgICAgICAgIi1PMCAtZyAtREdCRV9ERUJVRz0xIikKLSBz ZXQgKENNQUtFX0NYWF9GTEFHU19SRUxXSVRIREVCSU5GTyAiLU8yIC1nIC1ER0JFX0RFQlVHPTEi KQotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9iYWNrZW5kL3Byb2dyYW0uY3BwIGJhY2tlbmQvc3Jj L2JhY2tlbmQvcHJvZ3JhbS5jcHAKLWluZGV4IGIzNmY3YjQuLmU2NjYwMzEgMTAwNjQ0Ci0tLS0g YS9iYWNrZW5kL3NyYy9iYWNrZW5kL3Byb2dyYW0uY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9iYWNr ZW5kL3Byb2dyYW0uY3BwCi1AQCAtNjk0LDkgKzY5NCw5IEBAIG5hbWVzcGFjZSBnYmUgewotICNl bmRpZgotICAgICAgICAgICAgICAgICApOwotIAotKyAgICBsbHZtOjpjbDo6UmVzZXRBbGxPcHRp b25PY2N1cnJlbmNlcygpOwotICAgICBjbGFuZzo6Q29tcGlsZXJJbnZvY2F0aW9uOjpDcmVhdGVG cm9tQXJncygqQ0ksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZhcmdzWzBdLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmYXJnc1swXSArIGFyZ3Muc2l6ZSgpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjbGFuZzo6QXJyYXlSZWY8Y29uc3QgY2hhcio+KGFyZ3MpLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaWFncyk7Ci0g ICAgIC8vIENyZWF0ZSB0aGUgY29tcGlsZXIgaW5zdGFuY2UKLSAgICAgY2xhbmc6OkNvbXBpbGVy SW5zdGFuY2UgQ2xhbmc7Ci1AQCAtMTI0Miw4ICsxMjQyLDcgQEAgRVhURU5EX1FVT1RFOgotICAg ICAgIC8vIENyZWF0ZSB0aGUgY29tcGlsZXIgaW52b2NhdGlvbgotICAgICAgIHN0ZDo6dW5pcXVl X3B0cjxjbGFuZzo6Q29tcGlsZXJJbnZvY2F0aW9uPiBDSShuZXcgY2xhbmc6OkNvbXBpbGVySW52 b2NhdGlvbik7Ci0gICAgICAgcmV0dXJuIGNsYW5nOjpDb21waWxlckludm9jYXRpb246OkNyZWF0 ZUZyb21BcmdzKCpDSSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmFyZ3NbMF0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZhcmdzWzBdICsgYXJncy5zaXplKCksCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYW5nOjpB cnJheVJlZjxjb25zdCBjaGFyKj4oYXJncyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpYWdzKTsKLSAgICAgfQotICNlbmRpZgotZGlm ZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuY3BwIGJhY2tlbmQvc3Jj L2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLWluZGV4IGM2ZmMzMGQuLjgyNDQxZDggMTAwNjQ0 Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuY3BwCi0rKysgYi9iYWNr ZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuY3BwCi1AQCAtNTc1LDEwICs1NzUsMTIgQEAg bmFtZXNwYWNlIGdiZQotICAgICAgICAgaGFzX2Vycm9ycyhmYWxzZSksCi0gICAgICAgICBsZWdh Y3lNb2RlKHRydWUpCi0gICAgIHsKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMTAKLSAjaWYg TExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzcKLSAgICAg ICBpbml0aWFsaXplTG9vcEluZm9XcmFwcGVyUGFzc1Bhc3MoKlBhc3NSZWdpc3RyeTo6Z2V0UGFz c1JlZ2lzdHJ5KCkpOwotICNlbHNlCi0gICAgICAgaW5pdGlhbGl6ZUxvb3BJbmZvUGFzcygqUGFz c1JlZ2lzdHJ5OjpnZXRQYXNzUmVnaXN0cnkoKSk7Ci0rI2VuZGlmCi0gI2VuZGlmCi0gICAgICAg cGFzcyA9IFBBU1NfRU1JVF9SRUdJU1RFUlM7Ci0gICAgIH0KLWRpZmYgLS1naXQgYmFja2VuZC9z cmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmhwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2Jh Y2tlbmQuaHBwCi1pbmRleCBiNDcxNWIxLi44ZTc0ZjdhIDEwMDY0NAotLS0tIGEvYmFja2VuZC9z cmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmhwcAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZt X2dlbl9iYWNrZW5kLmhwcAotQEAgLTEzMCwxMCArMTMwLDEwIEBAIG5hbWVzcGFjZSBnYmUKLSAg IGxsdm06OkZ1bmN0aW9uUGFzcyAqY3JlYXRlR2VuUGFzcyhpcjo6VW5pdCAmdW5pdCk7Ci0gCi0g ICAvKiEgUmVtb3ZlIHRoZSBHRVAgaW5zdHJ1Y3Rpb25zICovCi0tICBsbHZtOjpCYXNpY0Jsb2Nr UGFzcyAqY3JlYXRlUmVtb3ZlR0VQUGFzcyhjb25zdCBpcjo6VW5pdCAmdW5pdCk7Ci0rICBsbHZt OjpGdW5jdGlvblBhc3MgKmNyZWF0ZVJlbW92ZUdFUFBhc3MoY29uc3QgaXI6OlVuaXQgJnVuaXQp OwotIAotICAgLyohIE1lcmdlIGxvYWQvc3RvcmUgaWYgcG9zc2libGUgKi8KLS0gIGxsdm06OkJh c2ljQmxvY2tQYXNzICpjcmVhdGVMb2FkU3RvcmVPcHRpbWl6YXRpb25QYXNzKCk7Ci0rICBsbHZt OjpGdW5jdGlvblBhc3MgKmNyZWF0ZUxvYWRTdG9yZU9wdGltaXphdGlvblBhc3MoKTsKLSAKLSAg IC8qISBTY2FsYXJpemUgYWxsIHZlY3RvciBvcCBpbnN0cnVjdGlvbnMgKi8KLSAgIGxsdm06OkZ1 bmN0aW9uUGFzcyogY3JlYXRlU2NhbGFyaXplUGFzcygpOwotQEAgLTE0MSw3ICsxNDEsNyBAQCBu YW1lc3BhY2UgZ2JlCi0gICBsbHZtOjpNb2R1bGVQYXNzKiBjcmVhdGVCYXJyaWVyTm9kdXBQYXNz KGJvb2wpOwotIAotICAgLyohIENvbnZlcnQgdGhlIEludHJpbnNpYyBjYWxsIHRvIGdlbiBmdW5j dGlvbiAqLwotLSAgbGx2bTo6QmFzaWNCbG9ja1Bhc3MgKmNyZWF0ZUludHJpbnNpY0xvd2VyaW5n UGFzcygpOwotKyAgbGx2bTo6RnVuY3Rpb25QYXNzICpjcmVhdGVJbnRyaW5zaWNMb3dlcmluZ1Bh c3MoKTsKLSAKLSAgIC8qISBQYXNzZXIgdGhlIHByaW50ZiBmdW5jdGlvbiBjYWxsLiAqLwotICAg bGx2bTo6RnVuY3Rpb25QYXNzKiBjcmVhdGVQcmludGZQYXJzZXJQYXNzKGlyOjpVbml0ICZ1bml0 KTsKLWRpZmYgLS1naXQgYmFja2VuZC9zcmMvbGx2bS9sbHZtX2ludHJpbnNpY19sb3dlcmluZy5j cHAgYmFja2VuZC9zcmMvbGx2bS9sbHZtX2ludHJpbnNpY19sb3dlcmluZy5jcHAKLWluZGV4IDk0 ZjBjZTYuLmI1NTM5ZTkgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW50cmlu c2ljX2xvd2VyaW5nLmNwcAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2ludHJpbnNpY19s b3dlcmluZy5jcHAKLUBAIC0yOSwxMiArMjksMTIgQEAKLSB1c2luZyBuYW1lc3BhY2UgbGx2bTsK LSAKLSBuYW1lc3BhY2UgZ2JlIHsKLS0gICAgY2xhc3MgSW5zdHJpbnNpY0xvd2VyaW5nIDogcHVi bGljIEJhc2ljQmxvY2tQYXNzCi0rICAgIGNsYXNzIEluc3RyaW5zaWNMb3dlcmluZyA6IHB1Ymxp YyBGdW5jdGlvblBhc3MKLSAgICAgewotICAgICBwdWJsaWM6Ci0gICAgICAgc3RhdGljIGNoYXIg SUQ7Ci0gICAgICAgSW5zdHJpbnNpY0xvd2VyaW5nKCkgOgotLSAgICAgICAgQmFzaWNCbG9ja1Bh c3MoSUQpIHt9Ci0rICAgICAgICBGdW5jdGlvblBhc3MoSUQpIHt9Ci0gCi0gICAgICAgdm9pZCBn ZXRBbmFseXNpc1VzYWdlKEFuYWx5c2lzVXNhZ2UgJkFVKSBjb25zdCB7Ci0gCi1AQCAtOTMsOSAr OTMsOSBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAgICAgICAgIENJLT5lcmFzZUZyb21QYXJlbnQoKTsK LSAgICAgICAgIHJldHVybiBOZXdDSTsKLSAgICAgICB9Ci0tICAgICAgdmlydHVhbCBib29sIHJ1 bk9uQmFzaWNCbG9jayhCYXNpY0Jsb2NrICZCQikKLSsgICAgICB2aXJ0dWFsIGJvb2wgcnVuT25G dW5jdGlvbihGdW5jdGlvbiAmRikKLSAgICAgICB7Ci0tICAgICAgICBib29sIGNoYW5nZWRCbG9j ayA9IGZhbHNlOwotKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAg IE1vZHVsZSAqTSA9IEJCLmdldFBhcmVudCgpLT5nZXRQYXJlbnQoKTsKLSAKLSAgICAgICAgIERh dGFMYXlvdXQgVEQoTSk7Ci1AQCAtMTU5LDEzICsxNTksMTQgQEAgbmFtZXNwYWNlIGdiZSB7Ci0g ICAgICAgICAgICAgfQotICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0tICAgICAgICByZXR1cm4g Y2hhbmdlZEJsb2NrOwotKyAgICAgICAgfQotKyAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg fQotICAgICB9OwotIAotICAgICBjaGFyIEluc3RyaW5zaWNMb3dlcmluZzo6SUQgPSAwOwotIAot LSAgICBCYXNpY0Jsb2NrUGFzcyAqY3JlYXRlSW50cmluc2ljTG93ZXJpbmdQYXNzKCkgewotKyAg ICBGdW5jdGlvblBhc3MgKmNyZWF0ZUludHJpbnNpY0xvd2VyaW5nUGFzcygpIHsKLSAgICAgICBy ZXR1cm4gbmV3IEluc3RyaW5zaWNMb3dlcmluZygpOwotICAgICB9Ci0gfSAvLyBlbmQgbmFtZXNw YWNlCi1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0 aW9uLmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fbG9hZHN0b3JlX29wdGltaXphdGlvbi5jcHAK LWluZGV4IDVhYTM4YmUuLmUzMTQzMDIgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xs dm1fbG9hZHN0b3JlX29wdGltaXphdGlvbi5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2 bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcAotQEAgLTI2LDEzICsyNiwxMyBAQAotIAotIHVz aW5nIG5hbWVzcGFjZSBsbHZtOwotIG5hbWVzcGFjZSBnYmUgewotLSAgY2xhc3MgR2VuTG9hZFN0 b3JlT3B0aW1pemF0aW9uIDogcHVibGljIEJhc2ljQmxvY2tQYXNzIHsKLSsgIGNsYXNzIEdlbkxv YWRTdG9yZU9wdGltaXphdGlvbiA6IHB1YmxpYyBGdW5jdGlvblBhc3MgewotIAotICAgcHVibGlj OgotICAgICBzdGF0aWMgY2hhciBJRDsKLSAgICAgU2NhbGFyRXZvbHV0aW9uICpTRTsKLSAgICAg Y29uc3QgRGF0YUxheW91dCAqVEQ7Ci0tICAgIEdlbkxvYWRTdG9yZU9wdGltaXphdGlvbigpIDog QmFzaWNCbG9ja1Bhc3MoSUQpIHt9Ci0rICAgIEdlbkxvYWRTdG9yZU9wdGltaXphdGlvbigpIDog RnVuY3Rpb25QYXNzKElEKSB7fQotIAotICAgICB2b2lkIGdldEFuYWx5c2lzVXNhZ2UoQW5hbHlz aXNVc2FnZSAmQVUpIGNvbnN0IHsKLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZN X1ZFUlNJT05fTUlOT1IgPj0gMzgKLUBAIC00NSw3ICs0NSw5IEBAIG5hbWVzcGFjZSBnYmUgewot ICAgICAgIEFVLnNldFByZXNlcnZlc0NGRygpOwotICAgICB9Ci0gCi0tICAgIHZpcnR1YWwgYm9v bCBydW5PbkJhc2ljQmxvY2soQmFzaWNCbG9jayAmQkIpIHsKLSsgICAgdmlydHVhbCBib29sIHJ1 bk9uRnVuY3Rpb24oRnVuY3Rpb24gJkYpIHsKLSsgICAgICAgIGJvb2wgY2hhbmdlZEFueUJsb2Nr ID0gZmFsc2U7Ci0rICAgICAgICBmb3IgKEJhc2ljQmxvY2sgJkJCIDogRikgewotICNpZiBMTFZN X1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzOAotICAgICAgIFNF ID0gJmdldEFuYWx5c2lzPFNjYWxhckV2b2x1dGlvbldyYXBwZXJQYXNzPigpLmdldFNFKCk7Ci0g I2Vsc2UKLUBAIC01OSw3ICs2MSw5IEBAIG5hbWVzcGFjZSBnYmUgewotICAgICAgICNlbHNlCi0g ICAgICAgICBURCA9IGdldEFuYWx5c2lzSWZBdmFpbGFibGU8RGF0YUxheW91dD4oKTsKLSAgICAg ICAjZW5kaWYKLS0gICAgICByZXR1cm4gb3B0aW1pemVMb2FkU3RvcmUoQkIpOwotKyAgICAgICAg ICAgY2hhbmdlZEFueUJsb2NrID0gb3B0aW1pemVMb2FkU3RvcmUoQkIpIHwgY2hhbmdlZEFueUJs b2NrOwotKyAgICAgICAgfQotKyAgICAgICAgcmV0dXJuIGNoYW5nZWRBbnlCbG9jazsKLSAgICAg fQotICAgICBUeXBlICAgICpnZXRWYWx1ZVR5cGUoVmFsdWUgKmluc24pOwotICAgICBWYWx1ZSAg ICpnZXRQb2ludGVyT3BlcmFuZChWYWx1ZSAqSSk7Ci1AQCAtMTQ4LDcgKzE1Miw3IEBAIG5hbWVz cGFjZSBnYmUgewotICAgICAgIHZhbHVlcy5wdXNoX2JhY2sobWVyZ2VkW2ldKTsKLSAgICAgfQot ICAgICBMb2FkSW5zdCAqbGQgPSBjYXN0PExvYWRJbnN0PihtZXJnZWRbMF0pOwotLSAgICB1bnNp Z25lZCBhbGlnbiA9IGxkLT5nZXRBbGlnbm1lbnQoKTsKLSsgICAgTWF5YmVBbGlnbiBhbGlnbiA9 IGxkLT5nZXRBbGlnbigpOwotICAgICB1bnNpZ25lZCBhZGRyU3BhY2UgPSBsZC0+Z2V0UG9pbnRl ckFkZHJlc3NTcGFjZSgpOwotICAgICAvLyBpbnNlcnQgYmVmb3JlIGZpcnN0IGxvYWQKLSAgICAg QnVpbGRlci5TZXRJbnNlcnRQb2ludChsZCk7Ci1AQCAtMjMxLDcgKzIzNSw3IEBAIG5hbWVzcGFj ZSBnYmUgewotIAotICAgICB1bnNpZ25lZCBhZGRyU3BhY2UgPSBzdC0+Z2V0UG9pbnRlckFkZHJl c3NTcGFjZSgpOwotIAotLSAgICB1bnNpZ25lZCBhbGlnbiA9IHN0LT5nZXRBbGlnbm1lbnQoKTsK LSsgICAgTWF5YmVBbGlnbiBhbGlnbiA9IHN0LT5nZXRBbGlnbigpOwotICAgICAvLyBpbnNlcnQg YmVmb3JlIHRoZSBsYXN0IHN0b3JlCi0gICAgIEJ1aWxkZXIuU2V0SW5zZXJ0UG9pbnQobWVyZ2Vk W3NpemUtMV0pOwotIAotQEAgLTMyNSw3ICszMjksNyBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAgICAg cmV0dXJuIGNoYW5nZWQ7Ci0gICB9Ci0gCi0tICBCYXNpY0Jsb2NrUGFzcyAqY3JlYXRlTG9hZFN0 b3JlT3B0aW1pemF0aW9uUGFzcygpIHsKLSsgIEZ1bmN0aW9uUGFzcyAqY3JlYXRlTG9hZFN0b3Jl T3B0aW1pemF0aW9uUGFzcygpIHsKLSAgICAgcmV0dXJuIG5ldyBHZW5Mb2FkU3RvcmVPcHRpbWl6 YXRpb24oKTsKLSAgIH0KLSB9OwotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fcGFz c2VzLmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fcGFzc2VzLmNwcAotaW5kZXggMTA3NTJhMy4u YjhmMjI4MiAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wYXNzZXMuY3BwCi0r KysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fcGFzc2VzLmNwcAotQEAgLTM3LDcgKzM3LDcgQEAK LSAjaW5jbHVkZSAic3lzL21hcC5ocHAiCi0gCi0gdXNpbmcgbmFtZXNwYWNlIGxsdm07Ci0tCi0r dGVtcGxhdGUgY2xhc3MgY2ZnOjpVcGRhdGU8QmFzaWNCbG9jayAqPjsKLSBuYW1lc3BhY2UgZ2Jl Ci0gewotICAgYm9vbCBpc0tlcm5lbEZ1bmN0aW9uKGNvbnN0IGxsdm06OkZ1bmN0aW9uICZGKSB7 Ci1AQCAtMjE5LDEzICsyMTksMTMgQEAgbmFtZXNwYWNlIGdiZQotICAgICByZXR1cm4gb2Zmc2V0 OwotICAgfQotIAotLSAgY2xhc3MgR2VuUmVtb3ZlR0VQUGFzc3MgOiBwdWJsaWMgQmFzaWNCbG9j a1Bhc3MKLSsgIGNsYXNzIEdlblJlbW92ZUdFUFBhc3NzIDogcHVibGljIEZ1bmN0aW9uUGFzcwot ICAgewotIAotICAgIHB1YmxpYzoKLSAgICAgc3RhdGljIGNoYXIgSUQ7Ci0gICAgIEdlblJlbW92 ZUdFUFBhc3NzKGNvbnN0IGlyOjpVbml0ICZ1bml0KSA6Ci0tICAgICAgQmFzaWNCbG9ja1Bhc3Mo SUQpLAotKyAgICAgIEZ1bmN0aW9uUGFzcyhJRCksCi0gICAgICAgdW5pdCh1bml0KSB7fQotICAg ICBjb25zdCBpcjo6VW5pdCAmdW5pdDsKLSAgICAgdm9pZCBnZXRBbmFseXNpc1VzYWdlKEFuYWx5 c2lzVXNhZ2UgJkFVKSBjb25zdCB7Ci1AQCAtMjQyLDE2ICsyNDIsMTggQEAgbmFtZXNwYWNlIGdi ZQotIAotICAgICBib29sIHNpbXBsaWZ5R0VQSW5zdHJ1Y3Rpb25zKEdldEVsZW1lbnRQdHJJbnN0 KiBHRVBJbnN0KTsKLSAKLS0gICAgdmlydHVhbCBib29sIHJ1bk9uQmFzaWNCbG9jayhCYXNpY0Js b2NrICZCQikKLSsgICAgdmlydHVhbCBib29sIHJ1bk9uRnVuY3Rpb24oRnVuY3Rpb24gJkYpCi0g ICAgIHsKLS0gICAgICBib29sIGNoYW5nZWRCbG9jayA9IGZhbHNlOwotKyAgICAgIGJvb2wgY2hh bmdlZEFueUJsb2NrID0gZmFsc2U7Ci0rICAgICAgICBmb3IgKEJhc2ljQmxvY2sgJkJCIDogRikg ewotICAgICAgIGlwbGlzdDxJbnN0cnVjdGlvbj46Oml0ZXJhdG9yIEkgPSBCQi5nZXRJbnN0TGlz dCgpLmJlZ2luKCk7Ci0gICAgICAgZm9yIChhdXRvIG5leHRJID0gSSwgRSA9IC0tQkIuZ2V0SW5z dExpc3QoKS5lbmQoKTsgSSAhPSBFOyBJID0gbmV4dEkpIHsKLSAgICAgICAgIGlwbGlzdDxJbnN0 cnVjdGlvbj46Oml0ZXJhdG9yIEkgPSBuZXh0SSsrOwotICAgICAgICAgaWYoR2V0RWxlbWVudFB0 ckluc3QqIGdlcCA9IGR5bl9jYXN0PEdldEVsZW1lbnRQdHJJbnN0PigmKkkpKQotLSAgICAgICAg ICBjaGFuZ2VkQmxvY2sgPSAoc2ltcGxpZnlHRVBJbnN0cnVjdGlvbnMoZ2VwKSB8fCBjaGFuZ2Vk QmxvY2spOwotKyAgICAgICAgICBjaGFuZ2VkQW55QmxvY2sgPSAoc2ltcGxpZnlHRVBJbnN0cnVj dGlvbnMoZ2VwKSB8IGNoYW5nZWRBbnlCbG9jayk7Ci0gICAgICAgfQotLSAgICAgIHJldHVybiBj aGFuZ2VkQmxvY2s7Ci0rICAgICAgICB9Ci0rICAgICAgcmV0dXJuIGNoYW5nZWRBbnlCbG9jazsK LSAgICAgfQotICAgfTsKLSAKLUBAIC0zNjcsNyArMzY5LDcgQEAgbmFtZXNwYWNlIGdiZQotICAg ICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAKLS0gIEJhc2ljQmxvY2tQYXNzICpjcmVhdGVSZW1vdmVH RVBQYXNzKGNvbnN0IGlyOjpVbml0ICZ1bml0KSB7Ci0rICBGdW5jdGlvblBhc3MgKmNyZWF0ZVJl bW92ZUdFUFBhc3MoY29uc3QgaXI6OlVuaXQgJnVuaXQpIHsKLSAgICAgcmV0dXJuIG5ldyBHZW5S ZW1vdmVHRVBQYXNzcyh1bml0KTsKLSAgIH0KLSB9IC8qIG5hbWVzcGFjZSBnYmUgKi8KLWRpZmYg LS1naXQgYmFja2VuZC9zcmMvbGx2bS9sbHZtX3NhbXBsZXJfZml4LmNwcCBiYWNrZW5kL3NyYy9s bHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCi1pbmRleCAyYTA5N2M4Li44NjNiZTZkIDEwMDY0NAot LS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3NhbXBsZXJfZml4LmNwcAotKysrIGIvYmFja2Vu ZC9zcmMvbGx2bS9sbHZtX3NhbXBsZXJfZml4LmNwcAotQEAgLTMzLDEwICszMywxMiBAQCBuYW1l c3BhY2UgZ2JlIHsKLSAgIGNsYXNzIFNhbXBsZXJGaXggOiBwdWJsaWMgRnVuY3Rpb25QYXNzIHsK LSAgIHB1YmxpYzoKLSAgICAgU2FtcGxlckZpeCgpIDogRnVuY3Rpb25QYXNzKElEKSB7Ci0rI2lm IExMVk1fVkVSU0lPTl9NQUpPUiA8IDEwCi0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsg TExWTV9WRVJTSU9OX01JTk9SID49IDM1Ci0gICAgICAgaW5pdGlhbGl6ZURvbWluYXRvclRyZWVX cmFwcGVyUGFzc1Bhc3MoKlBhc3NSZWdpc3RyeTo6Z2V0UGFzc1JlZ2lzdHJ5KCkpOwotICNlbHNl Ci0gICAgICAgaW5pdGlhbGl6ZURvbWluYXRvclRyZWVQYXNzKCpQYXNzUmVnaXN0cnk6OmdldFBh c3NSZWdpc3RyeSgpKTsKLSsjZW5kaWYKLSAjZW5kaWYKLSAgICAgfQotIAotZGlmZiAtLWdpdCBi YWNrZW5kL3NyYy9sbHZtL2xsdm1fc2NhbGFyaXplLmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1f c2NhbGFyaXplLmNwcAotaW5kZXggZTlhMmE2Ni4uZTlkMmVlNCAxMDA2NDQKLS0tLSBhL2JhY2tl bmQvc3JjL2xsdm0vbGx2bV9zY2FsYXJpemUuY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xs dm1fc2NhbGFyaXplLmNwcAotQEAgLTk2LDEwICs5NiwxMiBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAK LSAgICAgU2NhbGFyaXplKCkgOiBGdW5jdGlvblBhc3MoSUQpCi0gICAgIHsKLSsjaWYgTExWTV9W RVJTSU9OX01BSk9SIDwgMTAKLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZF UlNJT05fTUlOT1IgPj0gMzUKLSAgICAgICBpbml0aWFsaXplRG9taW5hdG9yVHJlZVdyYXBwZXJQ YXNzUGFzcygqUGFzc1JlZ2lzdHJ5OjpnZXRQYXNzUmVnaXN0cnkoKSk7Ci0gI2Vsc2UKLSAgICAg ICBpbml0aWFsaXplRG9taW5hdG9yVHJlZVBhc3MoKlBhc3NSZWdpc3RyeTo6Z2V0UGFzc1JlZ2lz dHJ5KCkpOwotKyNlbmRpZgotICNlbmRpZgotICAgICB9Ci0gCi1kaWZmIC0tZ2l0IHV0ZXN0cy9D TWFrZUxpc3RzLnR4dCB1dGVzdHMvQ01ha2VMaXN0cy50eHQKLWluZGV4IDMwMGQ4N2EuLjY0MTc5 YzcgMTAwNjQ0Ci0tLS0gYS91dGVzdHMvQ01ha2VMaXN0cy50eHQKLSsrKyBiL3V0ZXN0cy9DTWFr ZUxpc3RzLnR4dAotQEAgLTI2LDggKzI2LDggQEAgaWYgKE5PVCBOT1RfQlVJTERfU1RBTkRfQUxP TkVfVVRFU1QpCi0gICAjIFRocmVhZHMKLSAgIEZpbmRfUGFja2FnZShUaHJlYWRzKQotIAotLSAg c2V0IChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAke0NNQUtFX0NfQ1hYX0ZM QUdTfSAtc3RkPWMrKzB4IC1Xbm8taW52YWxpZC1vZmZzZXRvZiIpCi0tICBzZXQgKENNQUtFX0Nf RkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gJHtDTUFLRV9DX0NYWF9GTEFHU30iKQotKyAgc2V0IChD TUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAke0NNQUtFX0NfQ1hYX0ZMQUdTfSAt V25vLWludmFsaWQtb2Zmc2V0b2YgLWZmbG9hdC1zdG9yZSAtZm5vLXN0cmljdC1hbGlhc2luZyIp Ci0rICBzZXQgKENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gJHtDTUFLRV9DX0NYWF9G TEFHU30gLWZmbG9hdC1zdG9yZSAtZm5vLXN0cmljdC1hbGlhc2luZyIpICNjb21waWxlcl97ZGVn cmVlcyxyYWRpYW5zLGZ1bmN0aW9uX2FyZ3VtZW50Mn0gdXNlIGVxdWFsaXR5IGNvbXBhcmlzb24g b2YgZmxvYXRzLCBjb21waWxlcl9sb25nX2JpdGNhc3QgdXNlcyBhbGlhc2luZwotICAgc2V0IChD TUFLRV9DWFhfRkxBR1NfREVCVUcgICAgICAgICAgIi1PMCAtZyAtREdCRV9ERUJVRz0xIikKLSAg IHNldCAoQ01BS0VfQ1hYX0ZMQUdTX1JFTFdJVEhERUJJTkZPICItTzIgLWcgLURHQkVfREVCVUc9 MSIpCi0gICBzZXQgKENNQUtFX0NYWF9GTEFHU19NSU5TSVpFUkVMICAgICAiLU9zIC1ETkRFQlVH IC1ER0JFX0RFQlVHPTAiKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2 bTExLnBhdGNoIGIvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTExLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzNhNDI3ODk0M2MuLjAwMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5 MzcgKzAsMCBAQAotU291cmNlOiBTbmVrdHJvbgotCi1UaGVyZSB3ZXJlIGEgZmV3IGNoYW5nZXMg cmVxdWlyZWQgZm9yIExMVk0gMTE6Ci0qIGxsdm06OlN0cmluZ1JlZiByZXF1aXJlcyAuc3RyKCks IGltcGxpY2l0IGNvbnZlcnNpb24gd2FzIHJlbW92ZWQKLSogbGx2bTo6Q2FsbFNpdGUgd2FzIHJl bW92ZWQsIGJ1dCB0aGUgcmVxdWlyZWQgbWV0aG9kcyBhcmUgYXZhaWxhYmxlIG9uIGxsdm06OkNh bGxJbnN0Ci0qIFZlY3RvclR5SUQgd2FzIHNwbGl0IGludG8gRml4ZWRWZWN0b3JUeUlEIGFuZCBT Y2FsYWJsZVZlY3RvclR5SUQsIEZpeGVkVmVjdG9yVHlJRCB3YXMgdXNlZAotKiBDYWxsSW5zdDo6 Z2V0Q2FsbGVkVmFsdWUoKSB3YXMgcmVuYW1lZCB0byBDYWxsSW5zdDo6Z2V0Q2FsbGVkT3BlcmFu ZCgpCi0qIEltcGxpY2l0IGNvbnZlcnNpb24gZnJvbSBNYXliZUFsaWduIHRvIEFsaWduIHdhcyBy ZW1vdmVkLCBzbyBNYXliZUFsaWduOjp2YWx1ZU9yT25lIHdhcyB1c2VkIGluc3RlYWQuCi0KLS0t LSBhL2JhY2tlbmQvc3JjL2xsdm0vU3RyaXBBdHRyaWJ1dGVzLmNwcAkyMDIwLTExLTA5IDE2OjQ4 OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9TdHJpcEF0dHJpYnV0 ZXMuY3BwCTIwMjAtMTEtMDkgMTk6MDQ6MTkuNjQxODk3MTQxICswMTAwCi1AQCAtMTA3LDkgKzEw Nyw4IEBACi0gICAgICAgIEJCICE9IEU7ICsrQkIpIHsKLSAgICAgZm9yIChCYXNpY0Jsb2NrOjpp dGVyYXRvciBJbnN0ID0gQkItPmJlZ2luKCksIEUgPSBCQi0+ZW5kKCk7Ci0gICAgICAgICAgSW5z dCAhPSBFOyArK0luc3QpIHsKLS0gICAgICBDYWxsU2l0ZSBDYWxsKCYqSW5zdCk7Ci0tICAgICAg aWYgKENhbGwpCi0tICAgICAgICBDYWxsLnNldENhbGxpbmdDb252KENhbGxpbmdDb252OjpDKTsK LSsgICAgICBpZiAoQ2FsbEluc3QqIGNhbGxJbnN0ID0gZHluX2Nhc3Q8Q2FsbEluc3Q+KCYqSW5z dCkpCi0rICAgICAgICBjYWxsSW5zdC0+c2V0Q2FsbGluZ0NvbnYoQ2FsbGluZ0NvbnY6OkMpOwot ICAgICB9Ci0gICB9Ci0KLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9iaXRjb2RlX2xpbmsu Y3BwCTIwMjAtMTEtMDkgMTY6NDg6MjAuODIzODY2MTEyICswMTAwCi0rKysgYi9iYWNrZW5kL3Ny Yy9sbHZtL2xsdm1fYml0Y29kZV9saW5rLmNwcAkyMDIwLTExLTA5IDE3OjA0OjA5LjYzMzc1MzQy OCArMDEwMAotQEAgLTk4LDcgKzk4LDcgQEAKLSAgICAgICAgIGlmIChjYWxsRnVuYyAmJiBjYWxs RnVuYy0+Z2V0SW50cmluc2ljSUQoKSAhPSAwKQotICAgICAgICAgICBjb250aW51ZTsKLQotLSAg ICAgICAgc3RkOjpzdHJpbmcgZm5OYW1lID0gY2FsbC0+Z2V0Q2FsbGVkVmFsdWUoKS0+c3RyaXBQ b2ludGVyQ2FzdHMoKS0+Z2V0TmFtZSgpOwotKyAgICAgICAgc3RkOjpzdHJpbmcgZm5OYW1lID0g Y2FsbC0+Z2V0Q2FsbGVkT3BlcmFuZCgpLT5zdHJpcFBvaW50ZXJDYXN0cygpLT5nZXROYW1lKCku c3RyKCk7Ci0KLSAgICAgICAgIGlmICghTUZTLmluc2VydChmbk5hbWUpLnNlY29uZCkgewotICAg ICAgICAgICBjb250aW51ZTsKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9kZXZpY2VfZW5x dWV1ZS5jcHAJMjAyMC0xMS0wOSAxNjo0ODoyMC44MjM4NjYxMTIgKzAxMDAKLSsrKyBiL2JhY2tl bmQvc3JjL2xsdm0vbGx2bV9kZXZpY2VfZW5xdWV1ZS5jcHAJMjAyMC0xMS0wOSAxOTowMTo0OS4y MDE5MTUwMDggKzAxMDAKLUBAIC00NSw3ICs0NSw3IEBACi0gICAgICAgcmV0dXJuIE5VTEw7Ci0K LSAgICAgLyogVGhpcyBpcyBhIGZha2UsIHRvIGNoZWNrIHRoZSBmdW5jdGlvbiBiaXRjYXN0IGlz IGZvciBibG9jayBvciBub3QgKi8KLS0gICAgc3RkOjpzdHJpbmcgZm5OYW1lID0gRm4tPmdldE5h bWUoKTsKLSsgICAgc3RkOjpzdHJpbmcgZm5OYW1lID0gRm4tPmdldE5hbWUoKS5zdHIoKTsKLSAg ICAgaWYoZm5OYW1lLmZpbmQoIl9pbnZva2UiKSA9PSBzdGQ6OnN0cmluZzo6bnBvcykKLSAgICAg ICByZXR1cm4gTlVMTDsKLQotQEAgLTExOSwxOCArMTE5LDE4IEBACi0gICAgICAgUGFyYW1UeXMu cHVzaF9iYWNrKHR5KTsKLSAgICAgfQotICAgICBGdW5jdGlvblR5cGUqIE5ld0ZUID0gRnVuY3Rp b25UeXBlOjpnZXQoRm4tPmdldFJldHVyblR5cGUoKSwgUGFyYW1UeXMsIGZhbHNlKTsKLS0gICAg RnVuY3Rpb24qIE5ld0ZuID0gRnVuY3Rpb246OkNyZWF0ZShOZXdGVCwgRnVuY3Rpb246OkV4dGVy bmFsTGlua2FnZSwgRm4tPmdldE5hbWUoKSk7Ci0rICAgIEZ1bmN0aW9uKiBOZXdGbiA9IEZ1bmN0 aW9uOjpDcmVhdGUoTmV3RlQsIEZ1bmN0aW9uOjpFeHRlcm5hbExpbmthZ2UsIEZuLT5nZXROYW1l KCkuc3RyKCkpOwotICAgICBTbWFsbFZlY3RvcjxSZXR1cm5JbnN0KiwgOD4gUmV0dXJuczsKLQot ICAgICBGdW5jdGlvbjo6YXJnX2l0ZXJhdG9yIE5ld0ZuQXJnSXQgPSBOZXdGbi0+YXJnX2JlZ2lu KCk7Ci0gICAgIGZvciAoRnVuY3Rpb246OmFyZ19pdGVyYXRvciBJID0gRm4tPmFyZ19iZWdpbigp LCBFID0gRm4tPmFyZ19lbmQoKTsgSSAhPSBFOyArK0kpIHsKLS0gICAgICBzdGQ6OnN0cmluZyBB cmdOYW1lID0gSS0+Z2V0TmFtZSgpOwotKyAgICAgIHN0ZDo6c3RyaW5nIEFyZ05hbWUgPSBJLT5n ZXROYW1lKCkuc3RyKCk7Ci0gICAgICAgTmV3Rm5BcmdJdC0+c2V0TmFtZShBcmdOYW1lKTsKLSAg ICAgICBWTWFwWyYqSV0gPSAmKCpOZXdGbkFyZ0l0KyspOwotICAgICB9Ci0gICAgIENsb25lRnVu Y3Rpb25JbnRvKE5ld0ZuLCBGbiwgVk1hcCwgLypNb2R1bGVMZXZlbENoYW5nZXM9Ki90cnVlLCBS ZXR1cm5zKTsKLQotLSAgICBGbi0+c2V0TmFtZSgiX19kIiArIEZuLT5nZXROYW1lKCkpOwotKyAg ICBGbi0+c2V0TmFtZSgiX19kIiArIEZuLT5nZXROYW1lKCkuc3RyKCkpOwotICAgICBtb2QtPmdl dEZ1bmN0aW9uTGlzdCgpLnB1c2hfYmFjayhOZXdGbik7Ci0gICAgIC8vbW9kLT5nZXRPckluc2Vy dEZ1bmN0aW9uKE5ld0ZuLT5nZXROYW1lKCksIE5ld0ZuLT5nZXRGdW5jdGlvblR5cGUoKSwKLSAg ICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgTmV3Rm4tPmdldEF0dHJpYnV0ZXMoKSk7Ci1A QCAtMTQ3LDcgKzE0Nyw3IEBACi0gICAgICAgYXJnVHlwZU5hbWVzLnB1c2hfYmFjayhsbHZtOjpN RFN0cmluZzo6Z2V0KENvbnRleHQsICJjaGFyKiIpKTsKLSAgICAgICBhcmdCYXNlVHlwZU5hbWVz LnB1c2hfYmFjayhsbHZtOjpNRFN0cmluZzo6Z2V0KENvbnRleHQsICJjaGFyKiIpKTsKLSAgICAg ICBhcmdUeXBlUXVhbHMucHVzaF9iYWNrKGxsdm06Ok1EU3RyaW5nOjpnZXQoQ29udGV4dCwgIiIp KTsKLS0gICAgICBhcmdOYW1lcy5wdXNoX2JhY2sobGx2bTo6TURTdHJpbmc6OmdldChDb250ZXh0 LCBJLT5nZXROYW1lKCkpKTsKLSsgICAgICBhcmdOYW1lcy5wdXNoX2JhY2sobGx2bTo6TURTdHJp bmc6OmdldChDb250ZXh0LCBJLT5nZXROYW1lKCkuc3RyKCkpKTsKLSAgICAgfQotCi0gICAgIC8v SWYgcnVuIHRvIGhlcmUsIGxsdm0gdmVyc2lvbiBhbHdheXMgPiAzLjksIGFkZCB0aGUgdmVyc2lv biBjaGVjayBqdXN0IGZvciBidWlsZC4KLUBAIC0xOTgsNyArMTk4LDcgQEAKLSAgICAgICAgICAg ICogaW52b2tlIHBvaW50ZXIgdG8gc3RvcmUgdGhlIGluZGV4IGluIHRoZSB1bml0J3MgYmxvY2sg ZnVuY3Rpb25zIGluZGV4LiovCi0gICAgICAgICAgIEZ1bmN0aW9uICpGbiA9IGR5bl9jYXN0PEZ1 bmN0aW9uPihidC0+Z2V0T3BlcmFuZCgwKSk7Ci0KLS0gICAgICAgICAgc3RkOjpzdHJpbmcgZm5O YW1lID0gRm4tPmdldE5hbWUoKTsKLSsgICAgICAgICAgc3RkOjpzdHJpbmcgZm5OYW1lID0gRm4t PmdldE5hbWUoKS5zdHIoKTsKLSAgICAgICAgICAgaW50IGluZGV4ID0gLTE7Ci0gICAgICAgICAg IGZvcihzaXplX3QgaT0wOyBpPHVuaXQuYmxvY2tGdW5jcy5zaXplKCk7IGkrKykgewotICAgICAg ICAgICAgIGlmKHVuaXQuYmxvY2tGdW5jc1tpXSA9PSBmbk5hbWUpIHsKLUBAIC0yNDEsNyArMjQx LDcgQEAKLSAgICAgICAgICAgICAvL3VubmFtZWQgY2FsbCBmdW5jdGlvbiwgcGFyc2UgdGhlIHVz ZSB0byBmaW5kIHRoZSBkZWZpbmUgb2YgY2FsbGVkIGZ1bmN0aW9uCi0gICAgICAgICAgICAgU21h bGxWZWN0b3I8VmFsdWUqLCAxNj4gYXJncyhDSS0+b3BfYmVnaW4oKSwgQ0ktPm9wX2VuZCgpLTEp OwotCi0tICAgICAgICAgICAgVmFsdWUgKnYgPSBDSS0+Z2V0Q2FsbGVkVmFsdWUoKTsKLSsgICAg ICAgICAgICBWYWx1ZSAqdiA9IENJLT5nZXRDYWxsZWRPcGVyYW5kKCk7Ci0gICAgICAgICAgICAg Qml0Q2FzdEluc3QqIGJ0ID0gZHluX2Nhc3Q8Qml0Q2FzdEluc3Q+KHYpOwotICAgICAgICAgICAg IGlmKGJ0ID09IE5VTEwpCi0gICAgICAgICAgICAgICBjb250aW51ZTsKLUBAIC0zMTYsNyArMzE2 LDcgQEAKLSAgICAgICAgICAgICAgICAgICBDb25zdGFudEV4cHIgKmV4cHIgPSBkeW5fY2FzdDxD b25zdGFudEV4cHI+KGMtPmdldE9wZXJhbmQoMykpOwotICAgICAgICAgICAgICAgICAgIEJpdENh c3RJbnN0ICpidCA9IGR5bl9jYXN0PEJpdENhc3RJbnN0PihleHByLT5nZXRBc0luc3RydWN0aW9u KCkpOwotICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uKiBmID0gZHluX2Nhc3Q8RnVuY3Rpb24+ KGJ0LT5nZXRPcGVyYW5kKDApKTsKLS0gICAgICAgICAgICAgICAgICBibG9ja3Nbdl0gPSBmLT5n ZXROYW1lKCk7Ci0rICAgICAgICAgICAgICAgICAgYmxvY2tzW3ZdID0gZi0+Z2V0TmFtZSgpLnN0 cigpOwotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICB9Ci0KLUBAIC0zMzIsNyAr MzMyLDcgQEAKLSAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAvL2hhbmRsZSBlbnF1 ZXVlX2tlcm5lbCBmdW5jdGlvbiBjYWxsCi0gICAgICAgICAgICAgRnVuY3Rpb24gKmZuID0gQ0kt PmdldENhbGxlZEZ1bmN0aW9uKCk7Ci0tICAgICAgICAgICAgaWYgKGZuLT5nZXROYW1lKCkuZmlu ZCgiZW5xdWV1ZV9rZXJuZWwiKSA9PSBzdGQ6OnN0cmluZzo6bnBvcykKLSsgICAgICAgICAgICBp ZiAoZm4tPmdldE5hbWUoKS5zdHIoKS5maW5kKCJlbnF1ZXVlX2tlcm5lbCIpID09IHN0ZDo6c3Ry aW5nOjpucG9zKQotICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAvL2Js b2NrIHBhcmFtZXRlcidzIGluZGV4LCAzIG9yIDYKLUBAIC0zNjEsNyArMzYxLDcgQEAKLSAgICAg ICAgICAgICAgICAgICBDb25zdGFudEV4cHIgKmV4cHIgPSBkeW5fY2FzdDxDb25zdGFudEV4cHI+ KGMtPmdldE9wZXJhbmQoMykpOwotICAgICAgICAgICAgICAgICAgIEJpdENhc3RJbnN0ICpidCA9 IGR5bl9jYXN0PEJpdENhc3RJbnN0PihleHByLT5nZXRBc0luc3RydWN0aW9uKCkpOwotICAgICAg ICAgICAgICAgICAgIEZ1bmN0aW9uKiBmID0gZHluX2Nhc3Q8RnVuY3Rpb24+KGJ0LT5nZXRPcGVy YW5kKDApKTsKLS0gICAgICAgICAgICAgICAgICBibG9ja3Nbdl0gPSBmLT5nZXROYW1lKCk7Ci0r ICAgICAgICAgICAgICAgICAgYmxvY2tzW3ZdID0gZi0+Z2V0TmFtZSgpLnN0cigpOwotICAgICAg ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfSBlbHNlIGlmKGlz YTxBbGxvY2FJbnN0PihibG9jaykpIHsKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5f YmFja2VuZC5jcHAJMjAyMC0xMS0wOSAxNjo0ODoyMC44MjM4NjYxMTIgKzAxMDAKLSsrKyBiL2Jh Y2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAJMjAyMC0xMS0wOSAxODozMzo1MC45 MTkxMTQzMjcgKzAxMDAKLUBAIC0zNzYsNyArMzc2LDcgQEAKLSAgICAgICAgICAgR0JFX0FTU0VS VChpbmRleCA9PSAwKTsKLSAgICAgICAgICAgcmV0dXJuIHRoaXMtPl9uZXdTY2FsYXIodmFsdWUs IGtleSwgdHlwZSwgaW5kZXgsIHVuaWZvcm0pOwotICAgICAgICAgICBicmVhazsKLS0gICAgICAg IGNhc2UgVHlwZTo6VmVjdG9yVHlJRDoKLSsgICAgICAgIGNhc2UgVHlwZTo6Rml4ZWRWZWN0b3JU eUlEOgotICAgICAgICAgewotICAgICAgICAgICBhdXRvIHZlY3RvclR5cGUgPSBjYXN0PFZlY3Rv clR5cGU+KHR5cGUpOwotICAgICAgICAgICBhdXRvIGVsZW1lbnRUeXBlID0gdmVjdG9yVHlwZS0+ Z2V0RWxlbWVudFR5cGUoKTsKLUBAIC03NDMsMjAgKzc0MywyMCBAQAotICN1bmRlZiBERUNMX1ZJ U0lUX0ZOCi0KLSAgICAgLy8gRW1pdCByb3VuZGluZyBpbnN0cnVjdGlvbnMgZnJvbSBnZW4gbmF0 aXZlIGZ1bmN0aW9uCi0tICAgIHZvaWQgZW1pdFJvdW5kaW5nQ2FsbEluc3QoQ2FsbEluc3QgJkks IENhbGxTaXRlICZDUywgaXI6Ok9wY29kZSBvcGNvZGUpOwotKyAgICB2b2lkIGVtaXRSb3VuZGlu Z0NhbGxJbnN0KENhbGxJbnN0ICZJLCBpcjo6T3Bjb2RlIG9wY29kZSk7Ci0gICAgIC8vIEVtaXQg dW5hcnkgaW5zdHJ1Y3Rpb25zIGZyb20gZ2VuIG5hdGl2ZSBmdW5jdGlvbgotLSAgICB2b2lkIGVt aXRVbmFyeUNhbGxJbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGlyOjpPcGNvZGUgb3Bj b2RlLCBpcjo6VHlwZSA9IGlyOjpUWVBFX0ZMT0FUKTsKLSsgICAgdm9pZCBlbWl0VW5hcnlDYWxs SW5zdChDYWxsSW5zdCAmSSwgaXI6Ok9wY29kZSBvcGNvZGUsIGlyOjpUeXBlID0gaXI6OlRZUEVf RkxPQVQpOwotICAgICAvLyBFbWl0IHVuYXJ5IGluc3RydWN0aW9ucyBmcm9tIGdlbiBuYXRpdmUg ZnVuY3Rpb24KLS0gICAgdm9pZCBlbWl0QXRvbWljSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUg JkNTLCBpcjo6QXRvbWljT3BzIG9wY29kZSk7Ci0rICAgIHZvaWQgZW1pdEF0b21pY0luc3QoQ2Fs bEluc3QgJkksIGlyOjpBdG9taWNPcHMgb3Bjb2RlKTsKLSAgICAgLy8gRW1pdCB3b3JrZ3JvdXAg aW5zdHJ1Y3Rpb25zCi0tICAgIHZvaWQgZW1pdFdvcmtHcm91cEluc3QoQ2FsbEluc3QgJkksIENh bGxTaXRlICZDUywgaXI6OldvcmtHcm91cE9wcyBvcGNvZGUpOwotKyAgICB2b2lkIGVtaXRXb3Jr R3JvdXBJbnN0KENhbGxJbnN0ICZJLCBpcjo6V29ya0dyb3VwT3BzIG9wY29kZSk7Ci0gICAgIC8v IEVtaXQgc3ViZ3JvdXAgaW5zdHJ1Y3Rpb25zCi0tICAgIHZvaWQgZW1pdFN1Ykdyb3VwSW5zdChD YWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBpcjo6V29ya0dyb3VwT3BzIG9wY29kZSk7Ci0rICAg IHZvaWQgZW1pdFN1Ykdyb3VwSW5zdChDYWxsSW5zdCAmSSwgaXI6OldvcmtHcm91cE9wcyBvcGNv ZGUpOwotICAgICAvLyBFbWl0IHN1Ymdyb3VwIGluc3RydWN0aW9ucwotLSAgICB2b2lkIGVtaXRC bG9ja1JlYWRXcml0ZU1lbUluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgYm9vbCBpc1dy aXRlLCB1aW50OF90IHZlY19zaXplLCBpcjo6VHlwZSA9IGlyOjpUWVBFX1UzMik7Ci0tICAgIHZv aWQgZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1Ms IGJvb2wgaXNXcml0ZSwgdWludDhfdCB2ZWNfc2l6ZSwgaXI6OlR5cGUgPSBpcjo6VFlQRV9VMzIp OwotKyAgICB2b2lkIGVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoQ2FsbEluc3QgJkksIGJvb2wg aXNXcml0ZSwgdWludDhfdCB2ZWNfc2l6ZSwgaXI6OlR5cGUgPSBpcjo6VFlQRV9VMzIpOwotKyAg ICB2b2lkIGVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChDYWxsSW5zdCAmSSwgYm9vbCBpc1dy aXRlLCB1aW50OF90IHZlY19zaXplLCBpcjo6VHlwZSA9IGlyOjpUWVBFX1UzMik7Ci0KLS0gICAg dWludDhfdCBhcHBlbmRTYW1wbGVyKENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUkpOwotKyAgICB1 aW50OF90IGFwcGVuZFNhbXBsZXIoVXNlcjo6b3BfaXRlcmF0b3IgQUkpOwotICAgICB1aW50OF90 IGdldEltYWdlSUQoQ2FsbEluc3QgJkkpOwotCi0gICAgIC8vIFRoZXNlIGluc3RydWN0aW9ucyBh cmUgbm90IHN1cHBvcnRlZCBhdCBhbGwKLUBAIC0xMzIwLDEzICsxMzIwLDEzIEBACi0gI2VuZGlm Ci0KLSAgICAgICBpZih0eXBlTmFtZU5vZGUpIHsKLS0gICAgICAgIGxsdm1JbmZvLnR5cGVOYW1l PSAoY2FzdDxNRFN0cmluZz4odHlwZU5hbWVOb2RlLT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0 cmluZygpOwotKyAgICAgICAgbGx2bUluZm8udHlwZU5hbWU9IChjYXN0PE1EU3RyaW5nPih0eXBl TmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCkuc3RyKCk7Ci0gICAgICAg fQotICAgICAgIGlmKHR5cGVCYXNlTmFtZU5vZGUpIHsKLS0gICAgICAgIGxsdm1JbmZvLnR5cGVC YXNlTmFtZT0gKGNhc3Q8TURTdHJpbmc+KHR5cGVCYXNlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJ RCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAgICBsbHZtSW5mby50eXBlQmFzZU5hbWU9IChjYXN0 PE1EU3RyaW5nPih0eXBlQmFzZU5hbWVOb2RlLT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0cmlu ZygpLnN0cigpOwotICAgICAgIH0KLS0gICAgICBsbHZtSW5mby50eXBlTmFtZT0gKGNhc3Q8TURT dHJpbmc+KHR5cGVOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKTsKLS0g ICAgICBsbHZtSW5mby50eXBlUXVhbCA9IChjYXN0PE1EU3RyaW5nPih0eXBlUXVhbE5vZGUtPmdl dE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAgbGx2bUluZm8udHlwZU5hbWU9 IChjYXN0PE1EU3RyaW5nPih0eXBlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3Ry aW5nKCkuc3RyKCk7Ci0rICAgICAgbGx2bUluZm8udHlwZVF1YWwgPSAoY2FzdDxNRFN0cmluZz4o dHlwZVF1YWxOb2RlLT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0cmluZygpLnN0cigpOwotICAg ICAgIGJvb2wgaXNJbWFnZSA9IGxsdm1JbmZvLmlzSW1hZ2VUeXBlKCk7Ci0gICAgICAgYm9vbCBp c1BpcGUgPSBsbHZtSW5mby5pc1BpcGVUeXBlKCk7Ci0gICAgICAgaWYgKEktPmdldFR5cGUoKS0+ aXNQb2ludGVyVHkoKSB8fCBpc0ltYWdlIHx8IGlzUGlwZSkgewotQEAgLTE1MzEsNyArMTUzMSw3 IEBACi0gICAgICAgICAgICAgRWx0VHkgPSBnZXRFbHRUeXBlKEVsdFR5LCBUeXBlSW5kZXgpOwot ICAgICAgICAgfQotCi0tICAgICAgICBpcjo6Q29uc3RhbnQgY2MgPSB1bml0LmdldENvbnN0YW50 U2V0KCkuZ2V0Q29uc3RhbnQocG9pbnRlci0+Z2V0TmFtZSgpKTsKLSsgICAgICAgIGlyOjpDb25z dGFudCBjYyA9IHVuaXQuZ2V0Q29uc3RhbnRTZXQoKS5nZXRDb25zdGFudChwb2ludGVyLT5nZXRO YW1lKCkuc3RyKCkpOwotICAgICAgICAgdW5zaWduZWQgaW50IGRlZk9mZnNldCA9IGNjLmdldE9m ZnNldCgpOwotICAgICAgICAgcmVsb2NzLnB1c2hfYmFjayhpcjo6UmVsb2NFbnRyeShvZmZzZXQs IGRlZk9mZnNldCArIGNvbnN0YW50T2Zmc2V0KSk7Ci0KLUBAIC0xNTQ2LDcgKzE1NDYsNyBAQAot ICAgICAgIHJldHVybjsKLSAgICAgfQotICAgICBpZiAoaXNhPEdsb2JhbFZhcmlhYmxlPihjKSkg ewotLSAgICAgIGlyOjpDb25zdGFudCBjYyA9IHVuaXQuZ2V0Q29uc3RhbnRTZXQoKS5nZXRDb25z dGFudChjLT5nZXROYW1lKCkpOwotKyAgICAgIGlyOjpDb25zdGFudCBjYyA9IHVuaXQuZ2V0Q29u c3RhbnRTZXQoKS5nZXRDb25zdGFudChjLT5nZXROYW1lKCkuc3RyKCkpOwotICAgICAgIHVuc2ln bmVkIGludCBkZWZPZmZzZXQgPSBjYy5nZXRPZmZzZXQoKTsKLQotICAgICAgIHJlbG9jcy5wdXNo X2JhY2soaXI6OlJlbG9jRW50cnkob2Zmc2V0LCBkZWZPZmZzZXQpKTsKLUBAIC0xNjA5LDcgKzE2 MDksNyBAQAotICAgICAgICAgICB9Ci0gICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotLSAg ICAgIGNhc2UgVHlwZTo6VHlwZUlEOjpWZWN0b3JUeUlEOgotKyAgICAgIGNhc2UgVHlwZTo6VHlw ZUlEOjpGaXhlZFZlY3RvclR5SUQ6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIGNvbnN0IENvbnN0 YW50RGF0YVNlcXVlbnRpYWwgKmNkcyA9IGR5bl9jYXN0PENvbnN0YW50RGF0YVNlcXVlbnRpYWw+ KGMpOwotICAgICAgICAgICBjb25zdCBWZWN0b3JUeXBlICp2ZWNUeSA9IGNhc3Q8VmVjdG9yVHlw ZT4odHlwZSk7Ci1AQCAtMTkzNiw3ICsxOTM2LDcgQEAKLSAgICAgICBjYXNlIFR5cGU6OlBvaW50 ZXJUeUlEOgotICAgICAgICAgcmVnVHJhbnNsYXRvci5uZXdTY2FsYXIodmFsdWUsIGtleSwgMCwg dW5pZm9ybSk7Ci0gICAgICAgICBicmVhazsKLS0gICAgICBjYXNlIFR5cGU6OlZlY3RvclR5SUQ6 Ci0rICAgICAgY2FzZSBUeXBlOjpGaXhlZFZlY3RvclR5SUQ6Ci0gICAgICAgewotICAgICAgICAg YXV0byB2ZWN0b3JUeXBlID0gY2FzdDxWZWN0b3JUeXBlPih0eXBlKTsKLSAgICAgICAgIGNvbnN0 IHVpbnQzMl90IGVsZW1OdW0gPSB2ZWN0b3JUeXBlLT5nZXROdW1FbGVtZW50cygpOwotQEAgLTIz OTUsNyArMjM5NSw3IEBACi0gI2VuZGlmCi0gICAgICAgICB9Ci0gICAgICAgICBpZih0eXBlTmFt ZU5vZGUpIHsKLS0gICAgICAgICAgbGx2bUluZm8udHlwZU5hbWUgPSAoY2FzdDxNRFN0cmluZz4o dHlwZU5hbWVOb2RlLT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0cmluZygpOwotKyAgICAgICAg ICBsbHZtSW5mby50eXBlTmFtZSA9IChjYXN0PE1EU3RyaW5nPih0eXBlTmFtZU5vZGUtPmdldE9w ZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCkuc3RyKCk7Ci0gICAgICAgICAgIC8vTExWTSAzLjkg aW1hZ2UncyB0eXBlIG5hbWUgaW5jbHVkZSBhY2Nlc3MgcXVhbCwgZG9uJ3QgbWF0Y2ggT3BlbkNM IHNwZWMsIGVyYXNlIHRoZW0uCi0gICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBm aWx0ZXJzID0geyJfX3JlYWRfb25seSAiLCAiX193cml0ZV9vbmx5ICJ9OwotICAgICAgICAgICBm b3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgZmlsdGVycy5zaXplKCk7IGkrKykgewotQEAgLTI0MDYs MTYgKzI0MDYsMTYgQEAKLSAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgaWYodHlw ZUJhc2VOYW1lTm9kZSl7Ci0tICAgICAgICAgIGxsdm1JbmZvLnR5cGVCYXNlTmFtZSA9IChjYXN0 PE1EU3RyaW5nPih0eXBlQmFzZU5hbWVOb2RlLT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0cmlu ZygpOwotKyAgICAgICAgICBsbHZtSW5mby50eXBlQmFzZU5hbWUgPSAoY2FzdDxNRFN0cmluZz4o dHlwZUJhc2VOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsK LSAgICAgICAgIH0KLSAgICAgICAgIGlmKGFjY2Vzc1F1YWxOb2RlKSB7Ci0tICAgICAgICAgIGxs dm1JbmZvLmFjY2Vzc1F1YWwgPSAoY2FzdDxNRFN0cmluZz4oYWNjZXNzUXVhbE5vZGUtPmdldE9w ZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAgICAgIGxsdm1JbmZvLmFjY2Vzc1F1 YWwgPSAoY2FzdDxNRFN0cmluZz4oYWNjZXNzUXVhbE5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+ Z2V0U3RyaW5nKCkuc3RyKCk7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZih0eXBlUXVhbE5vZGUp IHsKLS0gICAgICAgICAgbGx2bUluZm8udHlwZVF1YWwgPSAoY2FzdDxNRFN0cmluZz4odHlwZVF1 YWxOb2RlLT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0cmluZygpOwotKyAgICAgICAgICBsbHZt SW5mby50eXBlUXVhbCA9IChjYXN0PE1EU3RyaW5nPih0eXBlUXVhbE5vZGUtPmdldE9wZXJhbmQo b3BJRCkpKS0+Z2V0U3RyaW5nKCkuc3RyKCk7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZihhcmdO YW1lTm9kZSl7Ci0tICAgICAgICAgIGxsdm1JbmZvLmFyZ05hbWUgPSAoY2FzdDxNRFN0cmluZz4o YXJnTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAgICAg IGxsdm1JbmZvLmFyZ05hbWUgPSAoY2FzdDxNRFN0cmluZz4oYXJnTmFtZU5vZGUtPmdldE9wZXJh bmQob3BJRCkpKS0+Z2V0U3RyaW5nKCkuc3RyKCk7Ci0gICAgICAgICB9Ci0KLSAgICAgICAgIC8v IGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgdW5pZm9ybSB2YWx1ZXMuCi1AQCAtMzAxMCw3ICszMDEw LDcgQEAKLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgIHRoaXMtPm5ld1JlZ2lzdGVyKGNv bnN0X2Nhc3Q8R2xvYmFsVmFyaWFibGUqPigmdikpOwotICAgICAgICAgICBpcjo6UmVnaXN0ZXIg cmVnID0gcmVnVHJhbnNsYXRvci5nZXRTY2FsYXIoY29uc3RfY2FzdDxHbG9iYWxWYXJpYWJsZSo+ KCZ2KSwgMCk7Ci0tICAgICAgICAgIGlyOjpDb25zdGFudCAmY29uID0gdW5pdC5nZXRDb25zdGFu dFNldCgpLmdldENvbnN0YW50KHYuZ2V0TmFtZSgpKTsKLSsgICAgICAgICAgaXI6OkNvbnN0YW50 ICZjb24gPSB1bml0LmdldENvbnN0YW50U2V0KCkuZ2V0Q29uc3RhbnQodi5nZXROYW1lKCkuc3Ry KCkpOwotICAgICAgICAgICBpZiAoIWxlZ2FjeU1vZGUpIHsKLSAgICAgICAgICAgICBpcjo6UmVn aXN0ZXIgcmVnbG9hZCA9IGN0eC5yZWcoZ2V0RmFtaWx5KGdldFR5cGUoY3R4LCB2LmdldFR5cGUo KSkpKTsKLSAgICAgICAgICAgICBjdHguTE9BREkoZ2V0VHlwZShjdHgsIHYuZ2V0VHlwZSgpKSwg cmVnbG9hZCwgY3R4Lm5ld0ludGVnZXJJbW1lZGlhdGUoY29uLmdldE9mZnNldCgpLCBnZXRUeXBl KGN0eCwgdi5nZXRUeXBlKCkpKSk7Ci1AQCAtMzIxMiw3ICszMjEyLDcgQEAKLSAgICAgICAgIEdC RV9BU1NFUlRNKGZhbHNlLCAiVW5zdXBwb3J0ZWQgY2FsbGluZyBjb252ZW50aW9uIik7Ci0gICAg IH0KLQotLSAgICBjdHguc3RhcnRGdW5jdGlvbihGLmdldE5hbWUoKSk7Ci0rICAgIGN0eC5zdGFy dEZ1bmN0aW9uKEYuZ2V0TmFtZSgpLnN0cigpKTsKLQotICAgICBpcjo6RnVuY3Rpb24gJmZuID0g Y3R4LmdldEZ1bmN0aW9uKCk7Ci0gICAgIHRoaXMtPnJlZ1RyYW5zbGF0b3IuY2xlYXIoKTsKLUBA IC0zODEwLDkgKzM4MTAsOSBAQAotCi0gICB2b2lkIEdlbldyaXRlcjo6cmVnQWxsb2NhdGVDYWxs SW5zdChDYWxsSW5zdCAmSSkgewotICAgICBWYWx1ZSAqZHN0ID0gJkk7Ci0tICAgIFZhbHVlICpD YWxsZWUgPSBJLmdldENhbGxlZFZhbHVlKCk7Ci0rICAgIFZhbHVlICpDYWxsZWUgPSBJLmdldENh bGxlZE9wZXJhbmQoKTsKLSAgICAgR0JFX0FTU0VSVChjdHguZ2V0RnVuY3Rpb24oKS5nZXRQcm9m aWxlKCkgPT0gaXI6OlBST0ZJTEVfT0NMKTsKLS0gICAgR0JFX0FTU0VSVChpc2E8SW5saW5lQXNt PihJLmdldENhbGxlZFZhbHVlKCkpID09IGZhbHNlKTsKLSsgICAgR0JFX0FTU0VSVChpc2E8SW5s aW5lQXNtPihJLmdldENhbGxlZE9wZXJhbmQoKSkgPT0gZmFsc2UpOwotICAgICBpZihJLmdldE51 bUFyZ09wZXJhbmRzKCkpIEdCRV9BU1NFUlQoSS5oYXNTdHJ1Y3RSZXRBdHRyKCkgPT0gZmFsc2Up OwotCi0gICAgIC8vIFdlIG9ubHkgc3VwcG9ydCBhIHNtYWxsIG51bWJlciBvZiBpbnRyaW5zaWNz IHJpZ2h0IG5vdwotQEAgLTM4NzAsNyArMzg3MCw3IEBACi0gICAgICAgfQotICAgICB9Ci0gICAg IC8vIEdldCB0aGUgbmFtZSBvZiB0aGUgY2FsbGVkIGZ1bmN0aW9uIGFuZCBoYW5kbGUgaXQKLS0g ICAgY29uc3Qgc3RkOjpzdHJpbmcgZm5OYW1lID0gQ2FsbGVlLT5zdHJpcFBvaW50ZXJDYXN0cygp LT5nZXROYW1lKCk7Ci0rICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZuTmFtZSA9IENhbGxlZS0+c3Ry aXBQb2ludGVyQ2FzdHMoKS0+Z2V0TmFtZSgpLnN0cigpOwotICAgICBhdXRvIGdlbkludHJpbnNp Y0lEID0gaW50cmluc2ljTWFwLmZpbmQoZm5OYW1lKTsKLSAgICAgc3dpdGNoIChnZW5JbnRyaW5z aWNJRCkgewotICAgICAgIGNhc2UgR0VOX09DTF9HRVRfR1JPVVBfSUQwOgotQEAgLTQxNjYsNyAr NDE2Niw3IEBACi0gICAgIH07Ci0gICB9Ci0KLS0gIHZvaWQgR2VuV3JpdGVyOjplbWl0Um91bmRp bmdDYWxsSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBpcjo6T3Bjb2RlIG9wY29kZSkg ewotKyAgdm9pZCBHZW5Xcml0ZXI6OmVtaXRSb3VuZGluZ0NhbGxJbnN0KENhbGxJbnN0ICZJLCBp cjo6T3Bjb2RlIG9wY29kZSkgewotICAgICBpZiAoSS5nZXRUeXBlKCktPmlzSGFsZlR5KCkpIHsK LSAgICAgICBjb25zdCBpcjo6UmVnaXN0ZXIgc3JjID0gdGhpcy0+Z2V0UmVnaXN0ZXIoSS5nZXRP cGVyYW5kKDApKTsKLSAgICAgICBjb25zdCBpcjo6UmVnaXN0ZXIgc3JjRmxvYXQgPSBjdHgucmVn KGlyOjpGQU1JTFlfRFdPUkQpOwotQEAgLTQxNzcsMTQgKzQxNzcsMTQgQEAKLSAgICAgICBjdHgu RjMyVE8xNihpcjo6VFlQRV9VMTYsIGlyOjpUWVBFX0ZMT0FULCBkc3QsIGRzdEZsb2F0KTsKLSAg ICAgfSBlbHNlIHsKLSAgICAgICBHQkVfQVNTRVJUKEkuZ2V0VHlwZSgpLT5pc0Zsb2F0VHkoKSk7 Ci0tICAgICAgdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxvcGNvZGUpOwotKyAgICAgIHRo aXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksb3Bjb2RlKTsKLSAgICAgfQotICAgfQotCi0tICB2b2lk IEdlbldyaXRlcjo6ZW1pdFVuYXJ5Q2FsbEluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywg aXI6Ok9wY29kZSBvcGNvZGUsIGlyOjpUeXBlIHR5cGUpIHsKLS0gICAgQ2FsbFNpdGU6OmFyZ19p dGVyYXRvciBBSSA9IENTLmFyZ19iZWdpbigpOwotKyAgdm9pZCBHZW5Xcml0ZXI6OmVtaXRVbmFy eUNhbGxJbnN0KENhbGxJbnN0ICZJLCBpcjo6T3Bjb2RlIG9wY29kZSwgaXI6OlR5cGUgdHlwZSkg ewotKyAgICBVc2VyOjpvcF9pdGVyYXRvciBBSSA9IEkuYXJnX2JlZ2luKCk7Ci0gI2lmIEdCRV9E RUJVRwotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJnX2VuZCgpOwotKyAg ICBVc2VyOjpvcF9pdGVyYXRvciBBRSA9IEkuYXJnX2VuZCgpOwotICNlbmRpZiAvKiBHQkVfREVC VUcgKi8KLSAgICAgR0JFX0FTU0VSVChBSSAhPSBBRSk7Ci0gICAgIGNvbnN0IGlyOjpSZWdpc3Rl ciBzcmMgPSB0aGlzLT5nZXRSZWdpc3RlcigqQUkpOwotQEAgLTQyOTMsOSArNDI5Myw5IEBACi0g ICAgIHRoaXMtPmVtaXRBdG9taWNJbnN0SGVscGVyKG9wY29kZSwgdHlwZSwgZHN0LCBsbHZtUHRy LCBwYXlsb2FkVHVwbGUpOwotICAgfQotCi0tICB2b2lkIEdlbldyaXRlcjo6ZW1pdEF0b21pY0lu c3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgaXI6OkF0b21pY09wcyBvcGNvZGUpIHsKLS0g ICAgQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBBSSA9IENTLmFyZ19iZWdpbigpOwotLSAgICBDYWxs U2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJnX2VuZCgpOwotKyAgdm9pZCBHZW5Xcml0ZXI6 OmVtaXRBdG9taWNJbnN0KENhbGxJbnN0ICZJLCBpcjo6QXRvbWljT3BzIG9wY29kZSkgewotKyAg ICBVc2VyOjpvcF9pdGVyYXRvciBBSSA9IEkuYXJnX2JlZ2luKCk7Ci0rICAgIFVzZXI6Om9wX2l0 ZXJhdG9yIEFFID0gSS5hcmdfZW5kKCk7Ci0gICAgIEdCRV9BU1NFUlQoQUkgIT0gQUUpOwotICAg ICBWYWx1ZSAqbGx2bVB0ciA9ICpBSTsKLSAgICAgaXI6OkFkZHJlc3NTcGFjZSBhZGRyU3BhY2Ug PSBhZGRyZXNzU3BhY2VMTFZNVG9HZW4obGx2bVB0ci0+Z2V0VHlwZSgpLT5nZXRQb2ludGVyQWRk cmVzc1NwYWNlKCkpOwotQEAgLTQzNDgsNyArNDM0OCw3IEBACi0gICAgIH0KLSAgIH0KLQotLSAg dm9pZCBHZW5Xcml0ZXI6OmVtaXRXb3JrR3JvdXBJbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAm Q1MsIGlyOjpXb3JrR3JvdXBPcHMgb3Bjb2RlKSB7Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1pdFdv cmtHcm91cEluc3QoQ2FsbEluc3QgJkksIGlyOjpXb3JrR3JvdXBPcHMgb3Bjb2RlKSB7Ci0gICAg IGlyOjpGdW5jdGlvbiAmZiA9IGN0eC5nZXRGdW5jdGlvbigpOwotCi0gICAgIGlmIChmLmdldHdn QnJvYWRjYXN0U0xNKCkgPCAwICYmIG9wY29kZSA9PSBpcjo6V09SS0dST1VQX09QX0JST0FEQ0FT VCkgewotQEAgLTQzNzgsOCArNDM3OCw4IEBACi0gICAgICAgR0JFX0FTU0VSVChmLmdldHRpZE1h cFNMTSgpID49IDApOwotICAgICB9Ci0KLS0gICAgQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBBSSA9 IENTLmFyZ19iZWdpbigpOwotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJn X2VuZCgpOwotKyAgICBVc2VyOjpvcF9pdGVyYXRvciBBSSA9IEkuYXJnX2JlZ2luKCk7Ci0rICAg IFVzZXI6Om9wX2l0ZXJhdG9yIEFFID0gSS5hcmdfZW5kKCk7Ci0gICAgIEdCRV9BU1NFUlQoQUkg IT0gQUUpOwotCi0gICAgIGlmIChvcGNvZGUgPT0gaXI6OldPUktHUk9VUF9PUF9BTEwgfHwgb3Bj b2RlID09IGlyOjpXT1JLR1JPVVBfT1BfQU5ZKSB7Ci1AQCAtNDM5MSwxNCArNDM5MSwxNCBAQAot ICAgICAgIGNvbnN0IGlyOjpUdXBsZSBzcmNUdXBsZSA9IGN0eC5hcnJheVR1cGxlKCZzcmNbMF0s IDMpOwotICAgICAgIGN0eC5XT1JLR1JPVVAob3Bjb2RlLCAodWludDMyX3QpZi5nZXR0aWRNYXBT TE0oKSwgZ2V0UmVnaXN0ZXIoJkkpLCBzcmNUdXBsZSwgMywgaXI6OlRZUEVfUzMyKTsKLSAgICAg fSBlbHNlIGlmIChvcGNvZGUgPT0gaXI6OldPUktHUk9VUF9PUF9CUk9BRENBU1QpIHsKLS0gICAg ICBpbnQgYXJnTnVtID0gQ1MuYXJnX3NpemUoKTsKLSsgICAgICBpbnQgYXJnTnVtID0gSS5hcmdf c2l6ZSgpOwotICAgICAgIHN0ZDo6dmVjdG9yPGlyOjpSZWdpc3Rlcj4gc3JjKGFyZ051bSk7Ci0g ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdOdW07IGkrKykgewotICAgICAgICAgc3JjW2ld ID0gdGhpcy0+Z2V0UmVnaXN0ZXIoKihBSSsrKSk7Ci0gICAgICAgfQotICAgICAgIGNvbnN0IGly OjpUdXBsZSBzcmNUdXBsZSA9IGN0eC5hcnJheVR1cGxlKCZzcmNbMF0sIGFyZ051bSk7Ci0gICAg ICAgY3R4LldPUktHUk9VUChpcjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCwgKHVpbnQzMl90KWYu Z2V0d2dCcm9hZGNhc3RTTE0oKSwgZ2V0UmVnaXN0ZXIoJkkpLCBzcmNUdXBsZSwgYXJnTnVtLAot LSAgICAgICAgICBnZXRUeXBlKGN0eCwgKCpDUy5hcmdfYmVnaW4oKSktPmdldFR5cGUoKSkpOwot KyAgICAgICAgICBnZXRUeXBlKGN0eCwgKCpJLmFyZ19iZWdpbigpKS0+Z2V0VHlwZSgpKSk7Ci0g ICAgIH0gZWxzZSB7Ci0gICAgICAgQ29uc3RhbnRJbnQgKnNpZ24gPSBkeW5fY2FzdDxDb25zdGFu dEludD4oQUkpOwotICAgICAgIEdCRV9BU1NFUlQoc2lnbik7Ci1AQCAtNDQyMyw5ICs0NDIzLDkg QEAKLSAgICAgR0JFX0FTU0VSVChBSSA9PSBBRSk7Ci0gICB9Ci0KLS0gIHZvaWQgR2VuV3JpdGVy OjplbWl0U3ViR3JvdXBJbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGlyOjpXb3JrR3Jv dXBPcHMgb3Bjb2RlKSB7Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUkgPSBDUy5hcmdf YmVnaW4oKTsKLS0gICAgQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBBRSA9IENTLmFyZ19lbmQoKTsK LSsgIHZvaWQgR2VuV3JpdGVyOjplbWl0U3ViR3JvdXBJbnN0KENhbGxJbnN0ICZJLCBpcjo6V29y a0dyb3VwT3BzIG9wY29kZSkgewotKyAgICBVc2VyOjpvcF9pdGVyYXRvciBBSSA9IEkuYXJnX2Jl Z2luKCk7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFFID0gSS5hcmdfZW5kKCk7Ci0gICAgIEdC RV9BU1NFUlQoQUkgIT0gQUUpOwotCi0gICAgIGlmIChvcGNvZGUgPT0gaXI6OldPUktHUk9VUF9P UF9BTEwgfHwgb3Bjb2RlID09IGlyOjpXT1JLR1JPVVBfT1BfQU5ZKSB7Ci1AQCAtNDQzNSw3ICs0 NDM1LDcgQEAKLSAgICAgICBjb25zdCBpcjo6VHVwbGUgc3JjVHVwbGUgPSBjdHguYXJyYXlUdXBs ZSgmc3JjWzBdLCAxKTsKLSAgICAgICBjdHguU1VCR1JPVVAob3Bjb2RlLCBnZXRSZWdpc3Rlcigm SSksIHNyY1R1cGxlLCAxLCBpcjo6VFlQRV9TMzIpOwotICAgICB9IGVsc2UgaWYgKG9wY29kZSA9 PSBpcjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCkgewotLSAgICAgIGludCBhcmdOdW0gPSBDUy5h cmdfc2l6ZSgpOwotKyAgICAgIGludCBhcmdOdW0gPSBJLmFyZ19zaXplKCk7Ci0gICAgICAgR0JF X0FTU0VSVChhcmdOdW0gPT0gMik7Ci0gICAgICAgc3RkOjp2ZWN0b3I8aXI6OlJlZ2lzdGVyPiBz cmMoYXJnTnVtKTsKLSAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ051bTsgaSsrKSB7Ci1A QCAtNDQ0Myw3ICs0NDQzLDcgQEAKLSAgICAgICB9Ci0gICAgICAgY29uc3QgaXI6OlR1cGxlIHNy Y1R1cGxlID0gY3R4LmFycmF5VHVwbGUoJnNyY1swXSwgYXJnTnVtKTsKLSAgICAgICBjdHguU1VC R1JPVVAoaXI6OldPUktHUk9VUF9PUF9CUk9BRENBU1QsIGdldFJlZ2lzdGVyKCZJKSwgc3JjVHVw bGUsIGFyZ051bSwKLS0gICAgICAgICAgZ2V0VHlwZShjdHgsICgqQ1MuYXJnX2JlZ2luKCkpLT5n ZXRUeXBlKCkpKTsKLSsgICAgICAgICAgZ2V0VHlwZShjdHgsICgqSS5hcmdfYmVnaW4oKSktPmdl dFR5cGUoKSkpOwotICAgICB9IGVsc2UgewotICAgICAgIENvbnN0YW50SW50ICpzaWduID0gZHlu X2Nhc3Q8Q29uc3RhbnRJbnQ+KEFJKTsKLSAgICAgICBHQkVfQVNTRVJUKHNpZ24pOwotQEAgLTQ0 NjYsOSArNDQ2Niw5IEBACi0gICAgIEdCRV9BU1NFUlQoQUkgPT0gQUUpOwotICAgfQotCi0tICB2 b2lkIEdlbldyaXRlcjo6ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChDYWxsSW5zdCAmSSwgQ2Fs bFNpdGUgJkNTLCBib29sIGlzV3JpdGUsIHVpbnQ4X3QgdmVjX3NpemUsIGlyOjpUeXBlIHR5cGUp IHsKLS0gICAgQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBBSSA9IENTLmFyZ19iZWdpbigpOwotLSAg ICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJnX2VuZCgpOwotKyAgdm9pZCBHZW5X cml0ZXI6OmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoQ2FsbEluc3QgJkksIGJvb2wgaXNXcml0 ZSwgdWludDhfdCB2ZWNfc2l6ZSwgaXI6OlR5cGUgdHlwZSkgewotKyAgICBVc2VyOjpvcF9pdGVy YXRvciBBSSA9IEkuYXJnX2JlZ2luKCk7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFFID0gSS5h cmdfZW5kKCk7Ci0gICAgIEdCRV9BU1NFUlQoQUkgIT0gQUUpOwotCi0gICAgIFZhbHVlICpsbHZt UHRyID0gKihBSSsrKTsKLUBAIC00NTIyLDkgKzQ1MjIsOSBAQAotICAgICBHQkVfQVNTRVJUKEFJ ID09IEFFKTsKLSAgIH0KLQotLSAgdm9pZCBHZW5Xcml0ZXI6OmVtaXRCbG9ja1JlYWRXcml0ZUlt YWdlSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBib29sIGlzV3JpdGUsIHVpbnQ4X3Qg dmVjX3NpemUsIGlyOjpUeXBlIHR5cGUpIHsKLS0gICAgQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBB SSA9IENTLmFyZ19iZWdpbigpOwotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1Mu YXJnX2VuZCgpOwotKyAgdm9pZCBHZW5Xcml0ZXI6OmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5z dChDYWxsSW5zdCAmSSwgYm9vbCBpc1dyaXRlLCB1aW50OF90IHZlY19zaXplLCBpcjo6VHlwZSB0 eXBlKSB7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSsgICAg VXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAgICAgR0JFX0FTU0VSVChBSSAh PSBBRSk7Ci0KLSAgICAgY29uc3QgdWludDhfdCBpbWFnZUlEID0gZ2V0SW1hZ2VJRChJKTsKLUBA IC00NTU3LDcgKzQ1NTcsNyBAQAotCi0gICAvKiBhcHBlbmQgYSBuZXcgc2FtcGxlci4gc2hvdWxk IGJlIGNhbGxlZCBiZWZvcmUgYW55IHJlZmVyZW5jZSB0bwotICAgICogYSBzYW1wbGVyX3QgdmFs dWUuICovCi0tICB1aW50OF90IEdlbldyaXRlcjo6YXBwZW5kU2FtcGxlcihDYWxsU2l0ZTo6YXJn X2l0ZXJhdG9yIEFJKSB7Ci0rICB1aW50OF90IEdlbldyaXRlcjo6YXBwZW5kU2FtcGxlcihVc2Vy OjpvcF9pdGVyYXRvciBBSSkgewotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1f VkVSU0lPTl9NSU5PUiA+PSA0MAotICAgICBDYWxsSW5zdCAqVEMgPSBkeW5fY2FzdDxDYWxsSW5z dD4oKkFJKTsKLSAgICAgQ29uc3RhbnQgKkNQViA9IFRDID8gZHluX2Nhc3Q8Q29uc3RhbnQ+KFRD LT5nZXRPcGVyYW5kKDApKSA6IE5VTEw7Ci1AQCAtNDU5NSwxMCArNDU5NSw5IEBACi0gICAgICAg ICBjb25zdCBpcjo6RnVuY3Rpb24gJmZuID0gY3R4LmdldEZ1bmN0aW9uKCk7Ci0KLSAgICAgICAg IC8vIEdldCB0aGUgZnVuY3Rpb24gYXJndW1lbnRzCi0tICAgICAgICBDYWxsU2l0ZSBDUygmSSk7 Ci0tICAgICAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0r ICAgICAgICBVc2VyOjpvcF9pdGVyYXRvciBBSSA9IEkuYXJnX2JlZ2luKCk7Ci0gI2lmIEdCRV9E RUJVRwotLSAgICAgICAgQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBBRSA9IENTLmFyZ19lbmQoKTsK LSsgICAgICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFFID0gSS5hcmdfZW5kKCk7Ci0gI2VuZGlmIC8q IEdCRV9ERUJVRyAqLwotICAgICAgICAgc3dpdGNoIChGLT5nZXRJbnRyaW5zaWNJRCgpKSB7Ci0g ICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpzdGFja3NhdmU6Ci1AQCAtNDc2NCwxNyArNDc2Mywx NyBAQAotICAgICAgICAgICAgIGN0eC5NQUQoc3JjVHlwZSwgZHN0LCBzcmMwLCBzcmMxLCBzcmMy KTsKLSAgICAgICAgICAgfQotICAgICAgICAgICBicmVhazsKLS0gICAgICAgICAgY2FzZSBJbnRy aW5zaWM6OnNxcnQ6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksQ1MsaXI6Ok9QX1NRUik7IGJy ZWFrOwotLSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6Y2VpbDogdGhpcy0+ZW1pdFJvdW5kaW5n Q2FsbEluc3QoSSxDUyxpcjo6T1BfUk5EVSk7IGJyZWFrOwotLSAgICAgICAgICBjYXNlIEludHJp bnNpYzo6dHJ1bmM6IHRoaXMtPmVtaXRSb3VuZGluZ0NhbGxJbnN0KEksQ1MsaXI6Ok9QX1JORFop OyBicmVhazsKLS0gICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OnJpbnQ6IHRoaXMtPmVtaXRSb3Vu ZGluZ0NhbGxJbnN0KEksQ1MsaXI6Ok9QX1JOREUpOyBicmVhazsKLS0gICAgICAgICAgY2FzZSBJ bnRyaW5zaWM6OmZsb29yOiB0aGlzLT5lbWl0Um91bmRpbmdDYWxsSW5zdChJLENTLGlyOjpPUF9S TkREKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpzaW46IHRoaXMtPmVtaXRV bmFyeUNhbGxJbnN0KEksQ1MsaXI6Ok9QX1NJTik7IGJyZWFrOwotLSAgICAgICAgICBjYXNlIElu dHJpbnNpYzo6Y29zOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLENTLGlyOjpPUF9DT1MpOyBi cmVhazsKLS0gICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OmxvZzI6IHRoaXMtPmVtaXRVbmFyeUNh bGxJbnN0KEksQ1MsaXI6Ok9QX0xPRyk7IGJyZWFrOwotLSAgICAgICAgICBjYXNlIEludHJpbnNp Yzo6ZXhwMjogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfRVhQKTsgYnJlYWs7 Ci0rICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpzcXJ0OiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5z dChJLGlyOjpPUF9TUVIpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OmNlaWw6 IHRoaXMtPmVtaXRSb3VuZGluZ0NhbGxJbnN0KEksaXI6Ok9QX1JORFUpOyBicmVhazsKLSsgICAg ICAgICAgY2FzZSBJbnRyaW5zaWM6OnRydW5jOiB0aGlzLT5lbWl0Um91bmRpbmdDYWxsSW5zdChJ LGlyOjpPUF9STkRaKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpyaW50OiB0 aGlzLT5lbWl0Um91bmRpbmdDYWxsSW5zdChJLGlyOjpPUF9STkRFKTsgYnJlYWs7Ci0rICAgICAg ICAgIGNhc2UgSW50cmluc2ljOjpmbG9vcjogdGhpcy0+ZW1pdFJvdW5kaW5nQ2FsbEluc3QoSSxp cjo6T1BfUk5ERCk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEludHJpbnNpYzo6c2luOiB0aGlz LT5lbWl0VW5hcnlDYWxsSW5zdChJLGlyOjpPUF9TSU4pOyBicmVhazsKLSsgICAgICAgICAgY2Fz ZSBJbnRyaW5zaWM6OmNvczogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxpcjo6T1BfQ09TKTsg YnJlYWs7Ci0rICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpsb2cyOiB0aGlzLT5lbWl0VW5hcnlD YWxsSW5zdChJLGlyOjpPUF9MT0cpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6 OmV4cDI6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX0VYUCk7IGJyZWFrOwotICAg ICAgICAgICBjYXNlIEludHJpbnNpYzo6YnN3YXA6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFVu YXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfQlNXQVAsIGdldFVuc2lnbmVkVHlwZShjdHgsIEkuZ2V0 VHlwZSgpKSk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEks aXI6Ok9QX0JTV0FQLCBnZXRVbnNpZ25lZFR5cGUoY3R4LCBJLmdldFR5cGUoKSkpOyBicmVhazsK LSAgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OnBvdzoKLSAgICAgICAgICAgewotICAgICAgICAg ICAgIGNvbnN0IGlyOjpSZWdpc3RlciBzcmMwID0gdGhpcy0+Z2V0UmVnaXN0ZXIoKkFJKTsgKytB STsKLUBAIC00Nzk0LDIxICs0NzkzLDIwIEBACi0gICAgICAgICB9Ci0gICAgICAgfSBlbHNlIHsK LSAgICAgICAgIC8vIEdldCB0aGUgbmFtZSBvZiB0aGUgY2FsbGVkIGZ1bmN0aW9uIGFuZCBoYW5k bGUgaXQKLS0gICAgICAgIFZhbHVlICpDYWxsZWUgPSBJLmdldENhbGxlZFZhbHVlKCk7Ci0tICAg ICAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPnN0cmlwUG9pbnRlckNhc3Rz KCktPmdldE5hbWUoKTsKLSsgICAgICAgIFZhbHVlICpDYWxsZWUgPSBJLmdldENhbGxlZE9wZXJh bmQoKTsKLSsgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZuTmFtZSA9IENhbGxlZS0+c3RyaXBQ b2ludGVyQ2FzdHMoKS0+Z2V0TmFtZSgpLnN0cigpOwotICAgICAgICAgYXV0byBnZW5JbnRyaW5z aWNJRCA9IGludHJpbnNpY01hcC5maW5kKGZuTmFtZSk7Ci0KLSAgICAgICAgIC8vIEdldCB0aGUg ZnVuY3Rpb24gYXJndW1lbnRzCi0tICAgICAgICBDYWxsU2l0ZSBDUygmSSk7Ci0tICAgICAgICBD YWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0rICAgICAgICBVc2Vy OjpvcF9pdGVyYXRvciBBSSA9IEkuYXJnX2JlZ2luKCk7Ci0gI2lmIEdCRV9ERUJVRwotLSAgICAg ICAgQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBBRSA9IENTLmFyZ19lbmQoKTsKLSsgICAgICAgIFVz ZXI6Om9wX2l0ZXJhdG9yIEFFID0gSS5hcmdfZW5kKCk7Ci0gI2VuZGlmIC8qIEdCRV9ERUJVRyAq LwotCi0gICAgICAgICBzd2l0Y2ggKGdlbkludHJpbnNpY0lEKSB7Ci0tICAgICAgICAgIGNhc2Ug R0VOX09DTF9GQkg6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksQ1MsaXI6Ok9QX0ZCSCwgaXI6 OlRZUEVfVTMyKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9GQkw6IHRoaXMtPmVt aXRVbmFyeUNhbGxJbnN0KEksQ1MsaXI6Ok9QX0ZCTCwgaXI6OlRZUEVfVTMyKTsgYnJlYWs7Ci0t ICAgICAgICAgIGNhc2UgR0VOX09DTF9DQklUOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLENT LGlyOjpPUF9DQklULCBnZXRVbnNpZ25lZFR5cGUoY3R4LCAoKkFJKS0+Z2V0VHlwZSgpKSk7IGJy ZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfRkJIOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5z dChJLGlyOjpPUF9GQkgsIGlyOjpUWVBFX1UzMik7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdF Tl9PQ0xfRkJMOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLGlyOjpPUF9GQkwsIGlyOjpUWVBF X1UzMik7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfQ0JJVDogdGhpcy0+ZW1pdFVu YXJ5Q2FsbEluc3QoSSxpcjo6T1BfQ0JJVCwgZ2V0VW5zaWduZWRUeXBlKGN0eCwgKCpBSSktPmdl dFR5cGUoKSkpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FCUzoKLSAgICAgICAg ICAgewotICAgICAgICAgICAgIGNvbnN0IGlyOjpSZWdpc3RlciBzcmMgPSB0aGlzLT5nZXRSZWdp c3RlcigqQUkpOwotQEAgLTQ5MTUsOCArNDkxMyw4IEBACi0gICAgICAgICAgICAgY3R4LlJFR0lP Tihkc3QsIHNyYywgeC5nZXRJbnRlZ2VyVmFsdWUoKSk7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0g ICAgICAgICAgIH0KLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX1JTUTogdGhpcy0+ZW1pdFVuYXJ5 Q2FsbEluc3QoSSxDUyxpcjo6T1BfUlNRKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2UgR0VOX09D TF9SQ1A6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksQ1MsaXI6Ok9QX1JDUCk7IGJyZWFrOwot KyAgICAgICAgICBjYXNlIEdFTl9PQ0xfUlNROiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLGly OjpPUF9SU1EpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX1JDUDogdGhpcy0+ZW1p dFVuYXJ5Q2FsbEluc3QoSSxpcjo6T1BfUkNQKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VO X09DTF9GT1JDRV9TSU1EODogY3R4LnNldFNpbWRXaWR0aCg4KTsgYnJlYWs7Ci0gICAgICAgICAg IGNhc2UgR0VOX09DTF9GT1JDRV9TSU1EMTY6IGN0eC5zZXRTaW1kV2lkdGgoMTYpOyBicmVhazsK LSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0xCQVJSSUVSOiBjdHguU1lOQyhpcjo6c3luY0xvY2Fs QmFycmllcik7IGJyZWFrOwotQEAgLTQ5NDcsMzEgKzQ5NDUsMzEgQEAKLSAgICAgICAgICAgICBi cmVhazsKLSAgICAgICAgICAgfQotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0FERDA6 Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfQUREMTogdGhpcy0+ZW1pdEF0b21pY0lu c3QoSSxDUyxpcjo6QVRPTUlDX09QX0FERCk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9P Q0xfQVRPTUlDX0FERDE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9BREQp OyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19TVUIwOgotLSAgICAgICAg ICBjYXNlIEdFTl9PQ0xfQVRPTUlDX1NVQjE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6 OkFUT01JQ19PUF9TVUIpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19T VUIxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLGlyOjpBVE9NSUNfT1BfU1VCKTsgYnJlYWs7Ci0g ICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfQU5EMDoKLS0gICAgICAgICAgY2FzZSBHRU5f T0NMX0FUT01JQ19BTkQxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLENTLGlyOjpBVE9NSUNfT1Bf QU5EKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfQU5EMTogdGhpcy0+ ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX0FORCk7IGJyZWFrOwotICAgICAgICAgICBj YXNlIEdFTl9PQ0xfQVRPTUlDX09SMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19P UjE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9PUik7IGJyZWFrOwot KyAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX09SMTogdGhpcy0+ZW1pdEF0b21pY0luc3Qo SSxpcjo6QVRPTUlDX09QX09SKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9N SUNfWE9SMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19YT1IxOiB0aGlzLT5lbWl0 QXRvbWljSW5zdChJLENTLGlyOjpBVE9NSUNfT1BfWE9SKTsgYnJlYWs7Ci0rICAgICAgICAgIGNh c2UgR0VOX09DTF9BVE9NSUNfWE9SMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlD X09QX1hPUik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX1hDSEcwOgot LSAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX1hDSEcxOiB0aGlzLT5lbWl0QXRvbWljSW5z dChJLENTLGlyOjpBVE9NSUNfT1BfWENIRyk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9P Q0xfQVRPTUlDX1hDSEcxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLGlyOjpBVE9NSUNfT1BfWENI Ryk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0lOQzA6Ci0tICAgICAg ICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfSU5DMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxp cjo6QVRPTUlDX09QX0lOQyk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlD X0lOQzE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9JTkMpOyBicmVhazsK LSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19ERUMwOgotLSAgICAgICAgICBjYXNlIEdF Tl9PQ0xfQVRPTUlDX0RFQzE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19P UF9ERUMpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19ERUMxOiB0aGlz LT5lbWl0QXRvbWljSW5zdChJLGlyOjpBVE9NSUNfT1BfREVDKTsgYnJlYWs7Ci0gICAgICAgICAg IGNhc2UgR0VOX09DTF9BVE9NSUNfVU1JTjA6Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9N SUNfVU1JTjE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9VTUlOKTsg YnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfVU1JTjE6IHRoaXMtPmVtaXRB dG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9VTUlOKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2Ug R0VOX09DTF9BVE9NSUNfVU1BWDA6Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfVU1B WDE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9VTUFYKTsgYnJlYWs7 Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfVU1BWDE6IHRoaXMtPmVtaXRBdG9taWNJ bnN0KEksaXI6OkFUT01JQ19PUF9VTUFYKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09D TF9BVE9NSUNfSU1JTjA6Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfSU1JTjE6IHRo aXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9JTUlOKTsgYnJlYWs7Ci0rICAg ICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfSU1JTjE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEks aXI6OkFUT01JQ19PUF9JTUlOKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9N SUNfSU1BWDA6Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfSU1BWDE6IHRoaXMtPmVt aXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9JTUFYKTsgYnJlYWs7Ci0rICAgICAgICAg IGNhc2UgR0VOX09DTF9BVE9NSUNfSU1BWDE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFU T01JQ19PUF9JTUFYKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfQ01Q WENIRzA6Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfQ01QWENIRzE6IHRoaXMtPmVt aXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9DTVBYQ0hHKTsgYnJlYWs7Ci0rICAgICAg ICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfQ01QWENIRzE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEks aXI6OkFUT01JQ19PUF9DTVBYQ0hHKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9H RVRfSU1BR0VfV0lEVEg6Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9HRVRfSU1BR0VfSEVJR0hU OgotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfR0VUX0lNQUdFX0RFUFRIOgotQEAgLTU0MjksNDgg KzU0MjcsNDggQEAKLSAgICAgICAgICAgICBjdHguV0FJVCgpOwotICAgICAgICAgICAgIGJyZWFr OwotICAgICAgICAgICB9Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9XT1JLX0dST1VQX0FMTDog dGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfQUxMKTsgYnJl YWs7Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9XT1JLX0dST1VQX0FOWTogdGhpcy0+ZW1pdFdv cmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfQU5ZKTsgYnJlYWs7Ci0rICAgICAg ICAgIGNhc2UgR0VOX09DTF9XT1JLX0dST1VQX0FMTDogdGhpcy0+ZW1pdFdvcmtHcm91cEluc3Qo SSwgaXI6OldPUktHUk9VUF9PUF9BTEwpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NM X1dPUktfR1JPVVBfQU5ZOiB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQ X09QX0FOWSk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9CUk9B RENBU1Q6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpX T1JLR1JPVVBfT1BfQlJPQURDQVNUKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFdv cmtHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9CUk9BRENBU1QpOyBicmVhazsKLSAgICAg ICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfUkVEVUNFX0FERDoKLS0gICAgICAgICAgICB0 aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9SRURVQ0VfQURE KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgaXI6OldP UktHUk9VUF9PUF9SRURVQ0VfQUREKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9X T1JLX0dST1VQX1JFRFVDRV9NQVg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cElu c3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX01BWCk7IGJyZWFrOwotKyAgICAgICAg ICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX01B WCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9SRURVQ0VfTUlO OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dS T1VQX09QX1JFRFVDRV9NSU4pOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dy b3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX1JFRFVDRV9NSU4pOyBicmVhazsKLSAgICAgICAg ICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfU0NBTl9FWENMVVNJVkVfQUREOgotLSAgICAgICAg ICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09QX0VYQ0xV U0lWRV9BREQpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJ LCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lWRV9BREQpOyBicmVhazsKLSAgICAgICAgICAgY2Fz ZSBHRU5fT0NMX1dPUktfR1JPVVBfU0NBTl9FWENMVVNJVkVfTUFYOgotLSAgICAgICAgICAgIHRo aXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lWRV9N QVgpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6 V09SS0dST1VQX09QX0VYQ0xVU0lWRV9NQVgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5f T0NMX1dPUktfR1JPVVBfU0NBTl9FWENMVVNJVkVfTUlOOgotLSAgICAgICAgICAgIHRoaXMtPmVt aXRXb3JrR3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lWRV9NSU4pOyBi cmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dS T1VQX09QX0VYQ0xVU0lWRV9NSU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1dP UktfR1JPVVBfU0NBTl9JTkNMVVNJVkVfQUREOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRXb3Jr R3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09QX0lOQ0xVU0lWRV9BREQpOyBicmVhazsK LSsgICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09Q X0lOQ0xVU0lWRV9BREQpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JP VVBfU0NBTl9JTkNMVVNJVkVfTUFYOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJ bnN0KEksIENTLCBpcjo6V09SS0dST1VQX09QX0lOQ0xVU0lWRV9NQVgpOyBicmVhazsKLSsgICAg ICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0lOQ0xV U0lWRV9NQVgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfU0NB Tl9JTkNMVVNJVkVfTUlOOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEks IENTLCBpcjo6V09SS0dST1VQX09QX0lOQ0xVU0lWRV9NSU4pOyBicmVhazsKLSsgICAgICAgICAg ICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0lOQ0xVU0lWRV9N SU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CUk9BRENBU1Q6 Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9V UF9PUF9CUk9BRENBU1QpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0U3ViR3JvdXBJ bnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfQlJPQURDQVNUKTsgYnJlYWs7Ci0gICAgICAgICAgIGNh c2UgR0VOX09DTF9TVUJfR1JPVVBfUkVEVUNFX0FERDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0 U3ViR3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09QX1JFRFVDRV9BREQpOyBicmVhazsK LSsgICAgICAgICAgICB0aGlzLT5lbWl0U3ViR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1Bf UkVEVUNFX0FERCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX1JF RFVDRV9NQVg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6 OldPUktHUk9VUF9PUF9SRURVQ0VfTUFYKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1p dFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX1JFRFVDRV9NQVgpOyBicmVhazsKLSAg ICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9SRURVQ0VfTUlOOgotLSAgICAgICAgICAg IHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX01J Tik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgaXI6OldP UktHUk9VUF9PUF9SRURVQ0VfTUlOKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9T VUJfR1JPVVBfU0NBTl9FWENMVVNJVkVfQUREOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJH cm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX0FERCk7IGJyZWFrOwot KyAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9F WENMVVNJVkVfQUREKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBf U0NBTl9FWENMVVNJVkVfTUFYOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3Qo SSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX01BWCk7IGJyZWFrOwotKyAgICAgICAg ICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9FWENMVVNJVkVf TUFYKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfU0NBTl9FWENM VVNJVkVfTUlOOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgQ1MsIGly OjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX01JTik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMt PmVtaXRTdWJHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9FWENMVVNJVkVfTUlOKTsgYnJl YWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfU0NBTl9JTkNMVVNJVkVfQURE OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JP VVBfT1BfSU5DTFVTSVZFX0FERCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJH cm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9JTkNMVVNJVkVfQUREKTsgYnJlYWs7Ci0gICAg ICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfU0NBTl9JTkNMVVNJVkVfTUFYOgotLSAgICAg ICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfSU5D TFVTSVZFX01BWCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3Qo SSwgaXI6OldPUktHUk9VUF9PUF9JTkNMVVNJVkVfTUFYKTsgYnJlYWs7Ci0gICAgICAgICAgIGNh c2UgR0VOX09DTF9TVUJfR1JPVVBfU0NBTl9JTkNMVVNJVkVfTUlOOgotLSAgICAgICAgICAgIHRo aXMtPmVtaXRTdWJHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX01J Tik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgaXI6OldP UktHUk9VUF9PUF9JTkNMVVNJVkVfTUlOKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09D TF9MUlA6Ci0gICAgICAgICAgIHsKLSAgICAgICAgICAgICBjb25zdCBpcjo6UmVnaXN0ZXIgZHN0 ICA9IHRoaXMtPmdldFJlZ2lzdGVyKCZJKTsKLUBAIC01NDg0LDY5ICs1NDgyLDY5IEBACi0gICAg ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgIH0KLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NV Ql9HUk9VUF9CTE9DS19SRUFEX1VJX01FTToKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tS ZWFkV3JpdGVNZW1JbnN0KEksIENTLCBmYWxzZSwgMSk7IGJyZWFrOwotKyAgICAgICAgICAgIHRo aXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgZmFsc2UsIDEpOyBicmVhazsKLSAgICAg ICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VJX01FTTI6Ci0tICAgICAg ICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgZmFsc2UsIDIpOyBi cmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIGZh bHNlLCAyKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tf UkVBRF9VSV9NRU00OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUlu c3QoSSwgQ1MsIGZhbHNlLCA0KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2Nr UmVhZFdyaXRlTWVtSW5zdChJLCBmYWxzZSwgNCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdF Tl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVUlfTUVNODoKLS0gICAgICAgICAgICB0aGlzLT5l bWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCBmYWxzZSwgOCk7IGJyZWFrOwotKyAgICAg ICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgZmFsc2UsIDgpOyBicmVh azsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VSV9NRU06 Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgdHJ1 ZSwgMSk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUlu c3QoSSwgdHJ1ZSwgMSk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQ X0JMT0NLX1dSSVRFX1VJX01FTTI6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdy aXRlTWVtSW5zdChJLCBDUywgdHJ1ZSwgMik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVt aXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgdHJ1ZSwgMik7IGJyZWFrOwotICAgICAgICAgICBj YXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VJX01FTTQ6Ci0tICAgICAgICAgICAg dGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgdHJ1ZSwgNCk7IGJyZWFrOwot KyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgdHJ1ZSwgNCk7 IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VJ X01FTTg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBD UywgdHJ1ZSwgOCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0 ZU1lbUluc3QoSSwgdHJ1ZSwgOCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VC X0dST1VQX0JMT0NLX1JFQURfVUlfSU1BR0U6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2Nr UmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCBmYWxzZSwgMSk7IGJyZWFrOwotKyAgICAgICAgICAg IHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBmYWxzZSwgMSk7IGJyZWFrOwot ICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVUlfSU1BR0UyOgot LSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgZmFs c2UsIDIpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFn ZUluc3QoSSwgZmFsc2UsIDIpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9H Uk9VUF9CTE9DS19SRUFEX1VJX0lNQUdFNDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tS ZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1MsIGZhbHNlLCA0KTsgYnJlYWs7Ci0rICAgICAgICAgICAg dGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIGZhbHNlLCA0KTsgYnJlYWs7Ci0g ICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VSV9JTUFHRTg6Ci0t ICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCBmYWxz ZSwgOCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdl SW5zdChJLCBmYWxzZSwgOCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dS T1VQX0JMT0NLX1dSSVRFX1VJX0lNQUdFOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1Jl YWRXcml0ZUltYWdlSW5zdChJLCBDUywgdHJ1ZSwgMSk7IGJyZWFrOwotKyAgICAgICAgICAgIHRo aXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCB0cnVlLCAxKTsgYnJlYWs7Ci0gICAg ICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVUlfSU1BR0UyOgotLSAg ICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgdHJ1ZSwg Mik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5z dChJLCB0cnVlLCAyKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBf QkxPQ0tfV1JJVEVfVUlfSU1BR0U0OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRX cml0ZUltYWdlSW5zdChJLCBDUywgdHJ1ZSwgNCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMt PmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCB0cnVlLCA0KTsgYnJlYWs7Ci0gICAgICAg ICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVUlfSU1BR0U4OgotLSAgICAg ICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgdHJ1ZSwgOCk7 IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJ LCB0cnVlLCA4KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxP Q0tfUkVBRF9VU19NRU06Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVt SW5zdChJLCBDUywgZmFsc2UsIDEsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAg IHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgZmFsc2UsIDEsIGlyOjpUWVBFX1Ux Nik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURf VVNfTUVNMjoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEks IENTLCBmYWxzZSwgMiwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBmYWxzZSwgMiwgaXI6OlRZUEVfVTE2KTsgYnJl YWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VU19NRU00 OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIGZh bHNlLCA0LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0Qmxv Y2tSZWFkV3JpdGVNZW1JbnN0KEksIGZhbHNlLCA0LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAg ICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VTX01FTTg6Ci0tICAg ICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgZmFsc2UsIDgs IGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRX cml0ZU1lbUluc3QoSSwgZmFsc2UsIDgsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAg ICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VTX01FTToKLS0gICAgICAgICAg ICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVlLCAxLCBpcjo6VFlQ RV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1J bnN0KEksIHRydWUsIDEsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdF Tl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VTX01FTTI6Ci0tICAgICAgICAgICAgdGhpcy0+ ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgdHJ1ZSwgMiwgaXI6OlRZUEVfVTE2KTsg YnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0 cnVlLCAyLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NV Ql9HUk9VUF9CTE9DS19XUklURV9VU19NRU00OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9j a1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIHRydWUsIDQsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwot KyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgdHJ1ZSwgNCwg aXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBf QkxPQ0tfV1JJVEVfVVNfTUVNODoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3Jp dGVNZW1JbnN0KEksIENTLCB0cnVlLCA4LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAg ICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIHRydWUsIDgsIGlyOjpUWVBF X1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JF QURfVVNfSU1BR0U6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJ bnN0KEksIENTLCBmYWxzZSwgMSwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAg dGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIGZhbHNlLCAxLCBpcjo6VFlQRV9V MTYpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFE X1VTX0lNQUdFMjoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUlu c3QoSSwgQ1MsIGZhbHNlLCAyLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0 aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgZmFsc2UsIDIsIGlyOjpUWVBFX1Ux Nik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURf VVNfSU1BR0U0OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5z dChJLCBDUywgZmFsc2UsIDQsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRo aXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBmYWxzZSwgNCwgaXI6OlRZUEVfVTE2 KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9V U19JTUFHRTg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0 KEksIENTLCBmYWxzZSwgOCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhp cy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIGZhbHNlLCA4LCBpcjo6VFlQRV9VMTYp OyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9V U19JTUFHRToKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3Qo SSwgQ1MsIHRydWUsIDEsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMt PmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCB0cnVlLCAxLCBpcjo6VFlQRV9VMTYpOyBi cmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VU19J TUFHRTI6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEks IENTLCB0cnVlLCAyLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5l bWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgdHJ1ZSwgMiwgaXI6OlRZUEVfVTE2KTsgYnJl YWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVVNfSU1B R0U0OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBD UywgdHJ1ZSwgNCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1p dEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDQsIGlyOjpUWVBFX1UxNik7IGJyZWFr OwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VTX0lNQUdF ODoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1Ms IHRydWUsIDgsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRC bG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCB0cnVlLCA4LCBpcjo6VFlQRV9VMTYpOyBicmVhazsK LSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0dFVF9QSVBFOgotICAgICAgICAgICBjYXNlIEdFTl9P Q0xfTUFLRV9SSUQ6Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9HRVRfUklEOgotLS0tIGEvYmFj a2VuZC9zcmMvbGx2bS9sbHZtX2luY2x1ZGVzLmhwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2 NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2luY2x1ZGVzLmhwcAkyMDIw LTExLTA5IDE5OjAwOjA5Ljk1NTkyNjc5NSArMDEwMAotQEAgLTEwMyw3ICsxMDMsNiBAQAotCi0g I2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDM1Ci0g I2luY2x1ZGUgImxsdm0vSVIvTWFuZ2xlci5oIgotLSNpbmNsdWRlICJsbHZtL0lSL0NhbGxTaXRl LmgiCi0gI2luY2x1ZGUgImxsdm0vSVIvQ0ZHLmgiCi0gI2luY2x1ZGUgImxsdm0vSVIvSW5zdFZp c2l0b3IuaCIKLSAjaW5jbHVkZSAibGx2bS9JUi9JUlByaW50aW5nUGFzc2VzLmgiCi0tLS0gYS9i YWNrZW5kL3NyYy9sbHZtL2xsdm1fbG9hZHN0b3JlX29wdGltaXphdGlvbi5jcHAJMjAyMC0xMS0w OSAxNjo0ODoyMC44MjM4NjYxMTIgKzAxMDAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9s b2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcAkyMDIwLTExLTA5IDE5OjEwOjM3LjE0MTg1MjMwOCAr MDEwMAotQEAgLTE2MCw3ICsxNjAsNyBAQAotICAgICBWYWx1ZSAqdmVjUHRyID0gQnVpbGRlci5D cmVhdGVCaXRDYXN0KGxkLT5nZXRQb2ludGVyT3BlcmFuZCgpLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQb2ludGVyVHlwZTo6Z2V0KHZlY1R5LCBhZGRyU3BhY2Up KTsKLSAgICAgTG9hZEluc3QgKnZlY1ZhbHVlID0gQnVpbGRlci5DcmVhdGVMb2FkKHZlY1B0cik7 Ci0tICAgIHZlY1ZhbHVlLT5zZXRBbGlnbm1lbnQoYWxpZ24pOwotKyAgICB2ZWNWYWx1ZS0+c2V0 QWxpZ25tZW50KGFsaWduLnZhbHVlT3JPbmUoKSk7Ci0KLSAgICAgZm9yICh1bnNpZ25lZCBpID0g MDsgaSA8IHNpemU7ICsraSkgewotICAgICAgIFZhbHVlICpTID0gQnVpbGRlci5DcmVhdGVFeHRy YWN0RWxlbWVudCh2ZWNWYWx1ZSwgQnVpbGRlci5nZXRJbnQzMihpKSk7Ci1AQCAtMjUxLDcgKzI1 MSw3IEBACi0gICAgICAgcmV0dXJuOwotICAgICBWYWx1ZSAqbmV3UHRyID0gQnVpbGRlci5DcmVh dGVCaXRDYXN0KHN0UG9pbnRlciwgUG9pbnRlclR5cGU6OmdldCh2ZWNUeSwgYWRkclNwYWNlKSk7 Ci0gICAgIFN0b3JlSW5zdCAqbmV3U1QgPSBCdWlsZGVyLkNyZWF0ZVN0b3JlKHBhcmVudCwgbmV3 UHRyKTsKLS0gICAgbmV3U1QtPnNldEFsaWdubWVudChhbGlnbik7Ci0rICAgIG5ld1NULT5zZXRB bGlnbm1lbnQoYWxpZ24udmFsdWVPck9uZSgpKTsKLSAgIH0KLQotICAgLy8gRmluZCB0aGUgc2Fm ZSBpdGVyYXRvciB3ZSBjYW4gcG9pbnQgdG8uIElmIHJlb3JkZXIgaGFwcGVucywgd2UgbmVlZCB0 bwotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3Bhc3Nlcy5jcHAJMjAyMC0xMS0wOSAxNjo0 ODoyMC44MjM4NjYxMTIgKzAxMDAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wYXNzZXMu Y3BwCTIwMjAtMTEtMDkgMTg6NDg6NTUuOTk3MDA2ODM3ICswMTAwCi1AQCAtOTUsNyArOTUsNyBA QAotICAgewotICAgICBzd2l0Y2ggKFR5LT5nZXRUeXBlSUQoKSkgewotICAgICAgIGNhc2UgVHlw ZTo6Vm9pZFR5SUQ6IE5PVF9TVVBQT1JURUQ7Ci0tICAgICAgY2FzZSBUeXBlOjpWZWN0b3JUeUlE OgotKyAgICAgIGNhc2UgVHlwZTo6Rml4ZWRWZWN0b3JUeUlEOgotICAgICAgIHsKLSAgICAgICAg IGNvbnN0IFZlY3RvclR5cGUqIFZlY1R5ID0gY2FzdDxWZWN0b3JUeXBlPihUeSk7Ci0gICAgICAg ICB1aW50MzJfdCBlbGVtTnVtID0gVmVjVHktPmdldE51bUVsZW1lbnRzKCk7Ci1AQCAtMTM4LDcg KzEzOCw3IEBACi0gICAgICAgY2FzZSBUeXBlOjpIYWxmVHlJRDogICAgcmV0dXJuIDE2OwotICAg ICAgIGNhc2UgVHlwZTo6RmxvYXRUeUlEOiAgIHJldHVybiAzMjsKLSAgICAgICBjYXNlIFR5cGU6 OkRvdWJsZVR5SUQ6ICByZXR1cm4gNjQ7Ci0tICAgICAgY2FzZSBUeXBlOjpWZWN0b3JUeUlEOgot KyAgICAgIGNhc2UgVHlwZTo6Rml4ZWRWZWN0b3JUeUlEOgotICAgICAgIHsKLSAgICAgICAgIGNv bnN0IFZlY3RvclR5cGUqIFZlY1R5ID0gY2FzdDxWZWN0b3JUeXBlPihUeSk7Ci0gICAgICAgICB1 aW50MzJfdCBudW1FbGVtID0gVmVjVHktPmdldE51bUVsZW1lbnRzKCk7Ci1AQCAtMTg0LDEwICsx ODQsMTIgQEAKLSAgICAgVHlwZSAqZWxlbWVudFR5cGUgPSBOVUxMOwotICAgICBpZiAoUG9pbnRl clR5cGUqIHB0clR5cGUgPSBkeW5fY2FzdDxQb2ludGVyVHlwZT4oZWx0VHkpKQotICAgICAgIGVs ZW1lbnRUeXBlID0gcHRyVHlwZS0+Z2V0RWxlbWVudFR5cGUoKTsKLS0gICAgZWxzZSBpZihTZXF1 ZW50aWFsVHlwZSAqIHNlcVR5cGUgPSBkeW5fY2FzdDxTZXF1ZW50aWFsVHlwZT4oZWx0VHkpKQot LSAgICAgIGVsZW1lbnRUeXBlID0gc2VxVHlwZS0+Z2V0RWxlbWVudFR5cGUoKTsKLS0gICAgZWxz ZSBpZihDb21wb3NpdGVUeXBlICogY29tcFR5PSBkeW5fY2FzdDxDb21wb3NpdGVUeXBlPihlbHRU eSkpCi0tICAgICAgZWxlbWVudFR5cGUgPSBjb21wVHktPmdldFR5cGVBdEluZGV4KGluZGV4KTsK LSsgICAgZWxzZSBpZiAoQXJyYXlUeXBlICogYXJyVHlwZSA9IGR5bl9jYXN0PEFycmF5VHlwZT4o ZWx0VHkpKQotKyAgICAgIGVsZW1lbnRUeXBlID0gYXJyVHlwZS0+Z2V0RWxlbWVudFR5cGUoKTsK LSsgICAgZWxzZSBpZihWZWN0b3JUeXBlICogdmVjVHlwZSA9IGR5bl9jYXN0PFZlY3RvclR5cGU+ KGVsdFR5KSkKLSsgICAgICBlbGVtZW50VHlwZSA9IHZlY1R5cGUtPmdldEVsZW1lbnRUeXBlKCk7 Ci0rICAgIGVsc2UgaWYoU3RydWN0VHlwZSAqIHN0cnVjdFR5cGUgPSBkeW5fY2FzdDxTdHJ1Y3RU eXBlPihlbHRUeSkpCi0rICAgICAgZWxlbWVudFR5cGUgPSBzdHJ1Y3RUeXBlLT5nZXRUeXBlQXRJ bmRleChpbmRleCk7Ci0gICAgIEdCRV9BU1NFUlQoZWxlbWVudFR5cGUpOwotICAgICByZXR1cm4g ZWxlbWVudFR5cGU7Ci0gICB9Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fcHJpbnRmX3Bh cnNlci5jcHAJMjAyMC0xMS0wOSAxNjo0ODoyMC44MjM4NjYxMTIgKzAxMDAKLSsrKyBiL2JhY2tl bmQvc3JjL2xsdm0vbGx2bV9wcmludGZfcGFyc2VyLmNwcAkyMDIwLTExLTA5IDE4OjU3OjUyLjYx ODk0MzEwNSArMDEwMAotQEAgLTMyMyw4ICszMjMsNyBAQAotCi0gICBib29sIFByaW50ZlBhcnNl cjo6cGFyc2VPbmVQcmludGZJbnN0cnVjdGlvbihDYWxsSW5zdCAqIGNhbGwpCi0gICB7Ci0tICAg IENhbGxTaXRlIENTKGNhbGwpOwotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIENJX0ZNVCA9 IENTLmFyZ19iZWdpbigpOwotKyAgICBVc2VyOjpvcF9pdGVyYXRvciBDSV9GTVQgPSBjYWxsLT5h cmdfYmVnaW4oKTsKLSAgICAgaW50IHBhcmFtX251bSA9IDA7Ci0KLSAgICAgbGx2bTo6Q29uc3Rh bnQqIGFyZzAgPSBkeW5fY2FzdDxsbHZtOjpDb25zdGFudEV4cHI+KCpDSV9GTVQpOwotQEAgLTM0 MSw3ICszNDAsNyBAQAotICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgfQotCi0tICAgIHN0ZDo6 c3RyaW5nIGZtdCA9IGZtdF9hcmctPmdldEFzQ1N0cmluZygpOwotKyAgICBzdGQ6OnN0cmluZyBm bXQgPSBmbXRfYXJnLT5nZXRBc0NTdHJpbmcoKS5zdHIoKTsKLSAgICAgaWYgKGZtdC5zaXplKCkg PT0gMCkKLSAgICAgICByZXR1cm4gZmFsc2U7Ci0KLUBAIC00MzcsOCArNDM2LDggQEAKLSAgICAg ICAgIGlmICggY2FsbEZ1bmMtPmdldEludHJpbnNpY0lEKCkgIT0gMCkKLSAgICAgICAgICAgY29u dGludWU7Ci0KLS0gICAgICAgIFZhbHVlICpDYWxsZWUgPSBjYWxsLT5nZXRDYWxsZWRWYWx1ZSgp OwotLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZm5OYW1lID0gQ2FsbGVlLT5nZXROYW1lKCk7 Ci0rICAgICAgICBWYWx1ZSAqQ2FsbGVlID0gY2FsbC0+Z2V0Q2FsbGVkT3BlcmFuZCgpOwotKyAg ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZm5OYW1lID0gQ2FsbGVlLT5nZXROYW1lKCkuc3RyKCk7 Ci0KLSAgICAgICAgIGlmIChmbk5hbWUgIT0gIl9fZ2VuX29jbF9wcmludGZfc3R1YiIgJiYgZm5O YW1lICE9ICJfX2dlbl9vY2xfcHV0c19zdHViIikKLSAgICAgICAgICAgY29udGludWU7Ci1AQCAt NTgyLDcgKzU4MSw3IEBACi0gICAgICAgICAgICAgaWYgKCFmbXRfYXJnIHx8ICFmbXRfYXJnLT5p c0NTdHJpbmcoKSkgewotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg IH0KLS0gICAgICAgICAgICBzbG90LnN0YXRlLnN0ciA9IGZtdF9hcmctPmdldEFzQ1N0cmluZygp OwotKyAgICAgICAgICAgIHNsb3Quc3RhdGUuc3RyID0gZm10X2FyZy0+Z2V0QXNDU3RyaW5nKCku c3RyKCk7Ci0gICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgIH0KLSAgICAgICAg ICAgY2FzZSBQUklOVEZfQ09OVkVSU0lPTl9QOiB7Ci1AQCAtNTk1LDEwICs1OTQsMTAgQEAKLQot ICAgICAgICAgYnJlYWs7Ci0KLS0gICAgICBjYXNlIFR5cGU6OlZlY3RvclR5SUQ6IHsKLS0gICAg ICAgIFR5cGUqIHZlY3RfdHlwZSA9IGFyZy0+Z2V0VHlwZSgpOwotLSAgICAgICAgVHlwZSogZWx0 X3R5cGUgPSB2ZWN0X3R5cGUtPmdldFZlY3RvckVsZW1lbnRUeXBlKCk7Ci0tICAgICAgICBpbnQg dmVjX251bSA9IHZlY3RfdHlwZS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKTsKLSsgICAgICBjYXNl IFR5cGU6OkZpeGVkVmVjdG9yVHlJRDogewotKyAgICAgICAgVmVjdG9yVHlwZSogdmVjdF90eXBl ID0gZHluX2Nhc3Q8VmVjdG9yVHlwZT4oYXJnLT5nZXRUeXBlKCkpOwotKyAgICAgICAgVHlwZSog ZWx0X3R5cGUgPSB2ZWN0X3R5cGUtPmdldEVsZW1lbnRUeXBlKCk7Ci0rICAgICAgICBpbnQgdmVj X251bSA9IHZlY3RfdHlwZS0+Z2V0TnVtRWxlbWVudHMoKTsKLSAgICAgICAgIGJvb2wgc2lnbiA9 IGZhbHNlOwotCi0gICAgICAgICBpZiAodmVjX251bSAhPSBzbG90LnN0YXRlLnZlY3Rvcl9uKSB7 Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fcHJvZmlsaW5nLmNwcAkyMDIwLTExLTA5IDE2 OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3Byb2Zp bGluZy5jcHAJMjAyMC0xMS0wOSAxODo1OTo1MC4xMjA5MjkxNTAgKzAxMDAKLUBAIC0zNSw3ICsz NSw2IEBACi0gI2luY2x1ZGUgImxsdm0vSVIvSVJCdWlsZGVyLmgiCi0KLSAjaWYgTExWTV9WRVJT SU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzUKLS0jaW5jbHVkZSAibGx2 bS9JUi9DYWxsU2l0ZS5oIgotICNpbmNsdWRlICJsbHZtL0lSL0NGRy5oIgotICNlbHNlCi0gI2lu Y2x1ZGUgImxsdm0vU3VwcG9ydC9DYWxsU2l0ZS5oIgotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9s bHZtX3NhbXBsZXJfZml4LmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAot KysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3NhbXBsZXJfZml4LmNwcAkyMDIwLTExLTA5IDE3 OjAxOjA5LjQwNzc3NDgzMiArMDEwMAotQEAgLTQ1LDggKzQ1LDggQEAKLSAgICAgYm9vbCB2aXNp dENhbGxJbnN0KENhbGxJbnN0ICpJKSB7Ci0gICAgICAgaWYoIUkpCi0gICAgICAgICByZXR1cm4g ZmFsc2U7Ci0tICAgICAgVmFsdWUgKkNhbGxlZSA9IEktPmdldENhbGxlZFZhbHVlKCk7Ci0tICAg ICAgY29uc3Qgc3RkOjpzdHJpbmcgZm5OYW1lID0gQ2FsbGVlLT5nZXROYW1lKCk7Ci0rICAgICAg VmFsdWUgKkNhbGxlZSA9IEktPmdldENhbGxlZE9wZXJhbmQoKTsKLSsgICAgICBjb25zdCBzdGQ6 OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5hbWUoKS5zdHIoKTsKLSAgICAgICBib29sIGNo YW5nZWQgPSBmYWxzZTsKLSAgICAgICBUeXBlICpib29sVHkgPSBJbnRlZ2VyVHlwZTo6Z2V0KEkt PmdldENvbnRleHQoKSwgMSk7Ci0gICAgICAgVHlwZSAqaTMyVHkgPSBJbnRlZ2VyVHlwZTo6Z2V0 KEktPmdldENvbnRleHQoKSwgMzIpOwotQEAgLTU5LDcgKzU5LDcgQEAKLSAgICAgICAgIFZhbHVl ICpuZWVkRml4VmFsOwotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lP Tl9NSU5PUiA+PSA0MAotICAgICAgICAgQ2FsbEluc3QgKmluaXQgPSBkeW5fY2FzdDxDYWxsSW5z dD4oSS0+Z2V0T3BlcmFuZCgwKSk7Ci0tICAgICAgICBpZiAoaW5pdCAmJiBpbml0LT5nZXRDYWxs ZWRWYWx1ZSgpLT5nZXROYW1lKCkuY29tcGFyZSgiX190cmFuc2xhdGVfc2FtcGxlcl9pbml0aWFs aXplciIpKQotKyAgICAgICAgaWYgKGluaXQgJiYgaW5pdC0+Z2V0Q2FsbGVkT3BlcmFuZCgpLT5n ZXROYW1lKCkuY29tcGFyZSgiX190cmFuc2xhdGVfc2FtcGxlcl9pbml0aWFsaXplciIpKQotICAg ICAgICAgewotICAgICAgICAgICBjb25zdCBDb25zdGFudEludCAqY2kgPSBkeW5fY2FzdDxDb25z dGFudEludD4oaW5pdC0+Z2V0T3BlcmFuZCgwKSk7Ci0gICAgICAgICAgIHVpbnQzMl90IHNhbXBs ZXJJbnQgPSBjaS0+Z2V0WkV4dFZhbHVlKCk7Ci1AQCAtMTEzLDcgKzExMyw3IEBACi0gICAgICAg ICBWYWx1ZSAqbmVlZEZpeFZhbDsKLSAgI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExW TV9WRVJTSU9OX01JTk9SID49IDQwCi0gICAgICAgICBDYWxsSW5zdCAqaW5pdCA9IGR5bl9jYXN0 PENhbGxJbnN0PihJLT5nZXRPcGVyYW5kKDApKTsKLS0gICAgICAgIGlmIChpbml0ICYmIGluaXQt PmdldENhbGxlZFZhbHVlKCktPmdldE5hbWUoKS5jb21wYXJlKCJfX3RyYW5zbGF0ZV9zYW1wbGVy X2luaXRpYWxpemVyIikpCi0rICAgICAgICBpZiAoaW5pdCAmJiBpbml0LT5nZXRDYWxsZWRPcGVy YW5kKCktPmdldE5hbWUoKS5jb21wYXJlKCJfX3RyYW5zbGF0ZV9zYW1wbGVyX2luaXRpYWxpemVy IikpCi0gICAgICAgICB7Ci0gICAgICAgICAgIGNvbnN0IENvbnN0YW50SW50ICpjaSA9IGR5bl9j YXN0PENvbnN0YW50SW50Pihpbml0LT5nZXRPcGVyYW5kKDApKTsKLSAgICAgICAgICAgdWludDMy X3Qgc2FtcGxlckludCA9IGNpLT5nZXRaRXh0VmFsdWUoKTsKLS0tLSBhL2JhY2tlbmQvc3JjL2xs dm0vbGx2bV9zY2FsYXJpemUuY3BwCTIwMjAtMTEtMDkgMTY6NDg6MjAuODIzODY2MTEyICswMTAw Ci0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2NhbGFyaXplLmNwcAkyMDIwLTExLTA5IDE4 OjUxOjE2Ljg4ODk5MDEwNCArMDEwMAotQEAgLTE3OCw3ICsxNzgsNyBAQAotICAgICAgIGlmKCF0 eXBlKQotICAgICAgICAgcmV0dXJuIHR5cGU7Ci0gICAgICAgc3dpdGNoKHR5cGUtPmdldFR5cGVJ RCgpKSB7Ci0tICAgICAgY2FzZSBUeXBlOjpWZWN0b3JUeUlEOgotKyAgICAgIGNhc2UgVHlwZTo6 Rml4ZWRWZWN0b3JUeUlEOgotICAgICAgIGNhc2UgVHlwZTo6QXJyYXlUeUlEOgotICAgICAgICAg cmV0dXJuIEdldEJhc2ljVHlwZSh0eXBlLT5nZXRDb250YWluZWRUeXBlKDApKTsKLSAgICAgICBk ZWZhdWx0OgotQEAgLTE4OCw3ICsxODgsNyBAQAotICAgICB9Ci0KLSAgICAgaW50IEdldENvbXBv bmVudENvdW50KGNvbnN0IFR5cGUqIHR5cGUpICB7Ci0tICAgICAgaWYgKHR5cGUgJiYgdHlwZS0+ Z2V0VHlwZUlEKCkgPT0gVHlwZTo6VmVjdG9yVHlJRCkKLSsgICAgICBpZiAodHlwZSAmJiB0eXBl LT5nZXRUeXBlSUQoKSA9PSBUeXBlOjpGaXhlZFZlY3RvclR5SUQpCi0gICAgICAgICByZXR1cm4g bGx2bTo6ZHluX2Nhc3Q8VmVjdG9yVHlwZT4odHlwZSktPmdldE51bUVsZW1lbnRzKCk7Ci0gICAg ICAgZWxzZQotICAgICAgICAgcmV0dXJuIDE7Ci1AQCAtNjUyLDEzICs2NTIsMTIgQEAKLSAgICAg ICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgfSBlbHNlIHsKLS0gICAgICAgIFZhbHVl ICpDYWxsZWUgPSBjYWxsLT5nZXRDYWxsZWRWYWx1ZSgpOwotLSAgICAgICAgY29uc3Qgc3RkOjpz dHJpbmcgZm5OYW1lID0gQ2FsbGVlLT5nZXROYW1lKCk7Ci0rICAgICAgICBWYWx1ZSAqQ2FsbGVl ID0gY2FsbC0+Z2V0Q2FsbGVkT3BlcmFuZCgpOwotKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg Zm5OYW1lID0gQ2FsbGVlLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAgICAgICBhdXRvIGdlbkludHJp bnNpY0lEID0gaW50cmluc2ljTWFwLmZpbmQoZm5OYW1lKTsKLQotICAgICAgICAgLy8gR2V0IHRo ZSBmdW5jdGlvbiBhcmd1bWVudHMKLS0gICAgICAgIENhbGxTaXRlIENTKGNhbGwpOwotLSAgICAg ICAgQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBDSSA9IENTLmFyZ19iZWdpbigpICsgMTsKLSsgICAg ICAgIFVzZXI6Om9wX2l0ZXJhdG9yIENJID0gY2FsbC0+YXJnX2JlZ2luKCkgKyAxOwotCi0gICAg ICAgICBzd2l0Y2ggKGdlbkludHJpbnNpY0lEKSB7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9O T1RfRk9VTkQ6Ci1AQCAtNzI5LDcgKzcyOCw3IEBACi0gICAgICAgICAgICAgZXh0cmFjdEZyb21W ZWN0b3IoY2FsbCk7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09D TF9QUklOVEY6Ci0tICAgICAgICAgICAgZm9yICg7IENJICE9IENTLmFyZ19lbmQoKTsgKytDSSkK LSsgICAgICAgICAgICBmb3IgKDsgQ0kgIT0gY2FsbC0+YXJnX2VuZCgpOyArK0NJKQotICAgICAg ICAgICAgICAgaWYgKCgqQ0kpLT5nZXRUeXBlKCktPmlzVmVjdG9yVHkoKSkKLSAgICAgICAgICAg ICAgICAgKkNJID0gSW5zZXJ0VG9WZWN0b3IoY2FsbCwgKkNJKTsKLSAgICAgICAgICAgICBicmVh azsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMi5wYXRjaCBiL3Ny Y3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggNmY4YWIwMDVjMTQ4Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iZWlnbmV0 L3BhdGNoZXMvbGx2bTEyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLWRp ZmYgLS1naXQgYmFja2VuZC9zcmMvbGx2bS9FeHBhbmRMYXJnZUludGVnZXJzLmNwcCBiYWNrZW5k L3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMuY3BwCi1pbmRleCA4NTE1ZGMxMy4uMjcwODAz ODAgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMuY3Bw Ci0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMuY3BwCi1AQCAtMzI4 LDcgKzMyOCw3IEBAIHN0YXRpYyBWYWx1ZSAqYnVpbGRWZWN0b3JPclNjYWxhcihDb252ZXJzaW9u U3RhdGUgJlN0YXRlLCBJUkJ1aWxkZXI8PiAmSVJCLCBTbWFsCi0gICAgIC8vIHNwbGl0ZWQsIHRo YXQncyB3aHkgdGhlc2UgdGVtcG9yYXJ5IHZhbHVlcyBzaG91bGQgYmUgZXJhc2VkLgotICAgICBi b29sIEtlZXBJbnNlcnQgPSBpc0xlZ2FsQml0U2l6ZShFbGVtVHktPmdldFByaW1pdGl2ZVNpemVJ bkJpdHMoKSAqIEVsZW1Obyk7Ci0gICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBFbGVtTm87 ICsraSkgewotLSAgICAgIFZhbHVlICp0bXAgPSB2ZWMgPyB2ZWMgOiBVbmRlZlZhbHVlOjpnZXQo VmVjdG9yVHlwZTo6Z2V0KEVsZW1UeSwgRWxlbU5vKSk7Ci0rICAgICAgVmFsdWUgKnRtcCA9IHZl YyA/IHZlYyA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JUeXBlOjpnZXQoRWxlbVR5LCBFbGVtTm8s IGZhbHNlKSk7Ci0gICAgICAgVmFsdWUgKmlkeCA9IENvbnN0YW50SW50OjpnZXQoSW50VHksIGkp OwotICAgICAgIHZlYyA9IElSQi5DcmVhdGVJbnNlcnRFbGVtZW50KHRtcCwgRWxlbWVudHNbaV0s IGlkeCk7Ci0gICAgICAgaWYgKCFLZWVwSW5zZXJ0ICYmICFpc2E8Q29uc3RhbnQ+KHZlYykpIHsK LUBAIC0zNzMsNyArMzczLDcgQEAgc3RhdGljIHZvaWQgdW5pZnlFbGVtZW50VHlwZShJUkJ1aWxk ZXI8PiAmSVJCLCBTbWFsbFZlY3RvcjxWYWx1ZSAqLCAxNj4gJlNyYywgU20KLSAgICAgICBhc3Nl cnQoKFNpemUgJSBNaW5XaWR0aCkgPT0gMCk7Ci0gCi0gICAgICAgaWYgKFNpemUgPiBNaW5XaWR0 aCkgewotLSAgICAgICAgVmVjdG9yVHlwZSAqVmVjVHkgPSBWZWN0b3JUeXBlOjpnZXQoRWxlbVR5 LCBTaXplL01pbldpZHRoKTsKLSsgICAgICAgIFZlY3RvclR5cGUgKlZlY1R5ID0gVmVjdG9yVHlw ZTo6Z2V0KEVsZW1UeSwgU2l6ZS9NaW5XaWR0aCwgZmFsc2UpOwotICAgICAgICAgVmFsdWUgKkNh c3RlZCA9IElSQi5DcmVhdGVCaXRDYXN0KFNyY1tpXSwgVmVjVHkpOwotICAgICAgICAgZm9yICh1 bnNpZ25lZCBqID0gMDsgaiA8IFNpemUvTWluV2lkdGg7IGorKykKLSAgICAgICAgICAgRHN0LnB1 c2hfYmFjayhJUkIuQ3JlYXRlRXh0cmFjdEVsZW1lbnQoQ2FzdGVkLCBDb25zdGFudEludDo6Z2V0 KEludFR5LCBqKSkpOwotQEAgLTQ2Miw3ICs0NjIsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0SW5z dHJ1Y3Rpb24oSW5zdHJ1Y3Rpb24gKkluc3QsIENvbnZlcnNpb25TdGF0ZSAmU3RhdGUsCi0gICAg ICAgdW5zaWduZWQgRWxlbU5vID0gVW5pZmllZC5zaXplKCk7Ci0gICAgICAgVHlwZSAqRWxlbVR5 ID0gVW5pZmllZFswXS0+Z2V0VHlwZSgpOwotICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg PCBFbGVtTm87ICsraSkgewotLSAgICAgICAgVmFsdWUgKnRtcCA9IHZlYyA/IHZlYyA6IFVuZGVm VmFsdWU6OmdldChWZWN0b3JUeXBlOjpnZXQoRWxlbVR5LCBFbGVtTm8pKTsKLSsgICAgICAgIFZh bHVlICp0bXAgPSB2ZWMgPyB2ZWMgOiBVbmRlZlZhbHVlOjpnZXQoVmVjdG9yVHlwZTo6Z2V0KEVs ZW1UeSwgRWxlbU5vLCBmYWxzZSkpOwotICAgICAgICAgVmFsdWUgKmlkeCA9IENvbnN0YW50SW50 OjpnZXQoSW50VHksIGkpOwotICAgICAgICAgdmVjID0gSVJCLkNyZWF0ZUluc2VydEVsZW1lbnQo dG1wLCBVbmlmaWVkW2ldLCBpZHgpOwotICAgICAgIH0KLWRpZmYgLS1naXQgYmFja2VuZC9zcmMv bGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tl bmQuY3BwCi1pbmRleCBjOTNkODljYy4uNjRkNWIwZTUgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3Ny Yy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1f Z2VuX2JhY2tlbmQuY3BwCi1AQCAtMzA0LDcgKzMwNCw3IEBAIG5hbWVzcGFjZSBnYmUKLSAgICAg ICBUWVBFU0laRVZFQyhsb25nLDgpCi0gICAgICAgVFlQRVNJWkVWRUModW5zaWduZWQgbG9uZyw4 KQotICAgICAgIGVsc2V7Ci0tICAgICAgICBTdHJ1Y3RUeXBlICpTdHJUeSA9IE0tPmdldFR5cGVC eU5hbWUoInN0cnVjdC4iK25hbWUpOwotKyAgICAgICAgU3RydWN0VHlwZSAqU3RyVHkgPSBTdHJ1 Y3RUeXBlOjpnZXRUeXBlQnlOYW1lKE0tPmdldENvbnRleHQoKSwgInN0cnVjdC4iK25hbWUpOwot ICAgICAgICAgaWYoU3RyVHkpCi0gICAgICAgICAgIHJldHVybiBnZXRUeXBlQnl0ZVNpemUodW5p dCxTdHJUeSk7Ci0gICAgICAgfQotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fbG9h ZHN0b3JlX29wdGltaXphdGlvbi5jcHAgYmFja2VuZC9zcmMvbGx2bS9sbHZtX2xvYWRzdG9yZV9v cHRpbWl6YXRpb24uY3BwCi1pbmRleCA1YWEzOGJlZi4uNmI1YzFiYWQgMTAwNjQ0Ci0tLS0gYS9i YWNrZW5kL3NyYy9sbHZtL2xsdm1fbG9hZHN0b3JlX29wdGltaXphdGlvbi5jcHAKLSsrKyBiL2Jh Y2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcAotQEAgLTE1Miw3 ICsxNTIsNyBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAgICAgdW5zaWduZWQgYWRkclNwYWNlID0gbGQt PmdldFBvaW50ZXJBZGRyZXNzU3BhY2UoKTsKLSAgICAgLy8gaW5zZXJ0IGJlZm9yZSBmaXJzdCBs b2FkCi0gICAgIEJ1aWxkZXIuU2V0SW5zZXJ0UG9pbnQobGQpOwotLSAgICBWZWN0b3JUeXBlICp2 ZWNUeSA9IFZlY3RvclR5cGU6OmdldChsZC0+Z2V0VHlwZSgpLCBzaXplKTsKLSsgICAgVmVjdG9y VHlwZSAqdmVjVHkgPSBWZWN0b3JUeXBlOjpnZXQobGQtPmdldFR5cGUoKSwgc2l6ZSwgZmFsc2Up OwotICAgICBWYWx1ZSAqdmVjUHRyID0gQnVpbGRlci5DcmVhdGVCaXRDYXN0KGxkLT5nZXRQb2lu dGVyT3BlcmFuZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ b2ludGVyVHlwZTo6Z2V0KHZlY1R5LCBhZGRyU3BhY2UpKTsKLSAgICAgTG9hZEluc3QgKnZlY1Zh bHVlID0gQnVpbGRlci5DcmVhdGVMb2FkKHZlY1B0cik7Ci1AQCAtMjM2LDcgKzIzNiw3IEBAIG5h bWVzcGFjZSBnYmUgewotICAgICBCdWlsZGVyLlNldEluc2VydFBvaW50KG1lcmdlZFtzaXplLTFd KTsKLSAKLSAgICAgVHlwZSAqZGF0YVR5ID0gc3QtPmdldFZhbHVlT3BlcmFuZCgpLT5nZXRUeXBl KCk7Ci0tICAgIFZlY3RvclR5cGUgKnZlY1R5ID0gVmVjdG9yVHlwZTo6Z2V0KGRhdGFUeSwgc2l6 ZSk7Ci0rICAgIFZlY3RvclR5cGUgKnZlY1R5ID0gVmVjdG9yVHlwZTo6Z2V0KGRhdGFUeSwgc2l6 ZSwgZmFsc2UpOwotICAgICBWYWx1ZSAqIHBhcmVudCA9IFVuZGVmVmFsdWU6OmdldCh2ZWNUeSk7 Ci0gICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgIHBhcmVu dCA9IEJ1aWxkZXIuQ3JlYXRlSW5zZXJ0RWxlbWVudChwYXJlbnQsIHZhbHVlc1tpXSwgQ29uc3Rh bnRJbnQ6OmdldChJbnRlZ2VyVHlwZTo6Z2V0KHN0LT5nZXRDb250ZXh0KCksIDMyKSwgaSkpOwot ZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fcHJpbnRmX3BhcnNlci5jcHAgYmFja2Vu ZC9zcmMvbGx2bS9sbHZtX3ByaW50Zl9wYXJzZXIuY3BwCi1pbmRleCA2YmI3YzUyYS4uYWY0NTlj ZDIgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fcHJpbnRmX3BhcnNlci5jcHAK LSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcmludGZfcGFyc2VyLmNwcAotQEAgLTYzMCw3 ICs2MzAsNyBAQCBlcnJvcjoKLSAgICAgICAgICAgICBpZiAoZWx0X3R5cGUgIT0gZWx0X2RzdF90 eXBlKSB7Ci0gICAgICAgICAgICAgICBWYWx1ZSAqSUkgPSBOVUxMOwotICAgICAgICAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCB2ZWNfbnVtOyBpKyspIHsKLS0gICAgICAgICAgICAgICAgVmFs dWUgKnZlYyA9IElJID8gSUkgOiBVbmRlZlZhbHVlOjpnZXQoVmVjdG9yVHlwZTo6Z2V0KGVsdF9k c3RfdHlwZSwgdmVjX251bSkpOwotKyAgICAgICAgICAgICAgICBWYWx1ZSAqdmVjID0gSUkgPyBJ SSA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JUeXBlOjpnZXQoZWx0X2RzdF90eXBlLCB2ZWNfbnVt LCBmYWxzZSkpOwotICAgICAgICAgICAgICAgICBWYWx1ZSAqY3YgPSBDb25zdGFudEludDo6Z2V0 KFR5cGU6OmdldEludDMyVHkoZWx0X3R5cGUtPmdldENvbnRleHQoKSksIGkpOwotICAgICAgICAg ICAgICAgICBWYWx1ZSAqb3JnID0gYnVpbGRlci0+Q3JlYXRlRXh0cmFjdEVsZW1lbnQoYXJnLCBj dik7Ci0gICAgICAgICAgICAgICAgIFZhbHVlICpjdnQgPSBidWlsZGVyLT5DcmVhdGVJbnRDYXN0 KG9yZywgZWx0X2RzdF90eXBlLCBzaWduKTsKLUBAIC02NTgsNyArNjU4LDcgQEAgZXJyb3I6Ci0g ICAgICAgICAgICAgaWYgKGVsdF90eXBlLT5nZXRUeXBlSUQoKSAhPSBUeXBlOjpGbG9hdFR5SUQp IHsKLSAgICAgICAgICAgICAgIFZhbHVlICpJSSA9IE5VTEw7Ci0gICAgICAgICAgICAgICBmb3Ig KGludCBpID0gMDsgaSA8IHZlY19udW07IGkrKykgewotLSAgICAgICAgICAgICAgICBWYWx1ZSAq dmVjID0gSUkgPyBJSSA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JUeXBlOjpnZXQoVHlwZTo6Z2V0 RmxvYXRUeShlbHRfdHlwZS0+Z2V0Q29udGV4dCgpKSwgdmVjX251bSkpOwotKyAgICAgICAgICAg ICAgICBWYWx1ZSAqdmVjID0gSUkgPyBJSSA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JUeXBlOjpn ZXQoVHlwZTo6Z2V0RmxvYXRUeShlbHRfdHlwZS0+Z2V0Q29udGV4dCgpKSwgdmVjX251bSwgZmFs c2UpKTsKLSAgICAgICAgICAgICAgICAgVmFsdWUgKmN2ID0gQ29uc3RhbnRJbnQ6OmdldChUeXBl OjpnZXRJbnQzMlR5KGVsdF90eXBlLT5nZXRDb250ZXh0KCkpLCBpKTsKLSAgICAgICAgICAgICAg ICAgVmFsdWUgKm9yZyA9IGJ1aWxkZXItPkNyZWF0ZUV4dHJhY3RFbGVtZW50KGFyZywgY3YpOwot ICAgICAgICAgICAgICAgICBWYWx1ZSogY3Z0ICA9IGJ1aWxkZXItPkNyZWF0ZUZQQ2FzdChvcmcs IFR5cGU6OmdldEZsb2F0VHkobW9kdWxlLT5nZXRDb250ZXh0KCkpKTsKLWRpZmYgLS1naXQgYmFj a2VuZC9zcmMvbGx2bS9sbHZtX3RvX2dlbi5jcHAgYmFja2VuZC9zcmMvbGx2bS9sbHZtX3RvX2dl bi5jcHAKLWluZGV4IDdmN2RlZmZlLi45ZThjY2M2NyAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3Jj L2xsdm0vbGx2bV90b19nZW4uY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fdG9fZ2Vu LmNwcAotQEAgLTM1OCw3ICszNTgsNyBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIHBhc3Nlcy5hZGQo Y3JlYXRlU2NhbGFyUmVwbEFnZ3JlZ2F0ZXNQYXNzKDY0LCB0cnVlLCAtMSwgLTEsIDY0KSk7Ci0g I2VuZGlmCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlTG9hZFN0b3JlT3B0aW1pemF0aW9uUGFzcygp KTsKLS0gICAgcGFzc2VzLmFkZChjcmVhdGVDb25zdGFudFByb3BhZ2F0aW9uUGFzcygpKTsKLSsg ICAgLy9wYXNzZXMuYWRkKGNyZWF0ZUNvbnN0YW50UHJvcGFnYXRpb25QYXNzKCkpOwotICAgICBw YXNzZXMuYWRkKGNyZWF0ZVByb21vdGVNZW1vcnlUb1JlZ2lzdGVyUGFzcygpKTsKLSAgICAgaWYo b3B0TGV2ZWwgPiAwKQotICAgICAgIHBhc3Nlcy5hZGQoY3JlYXRlR1ZOUGFzcygpKTsgICAgICAg ICAgICAgICAgIC8vIFJlbW92ZSByZWR1bmRhbmNpZXMKLUBAIC0zNjcsMTEgKzM2NywxMSBAQCBu YW1lc3BhY2UgZ2JlCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlU2NhbGFyaXplUGFzcygpKTsgICAg ICAgICAgICAgLy8gRXhwYW5kIGFsbCB2ZWN0b3Igb3BzCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRl RXhwYW5kTGFyZ2VJbnRlZ2Vyc1Bhc3MoKSk7ICAgLy8gbGVnYWxpemUgbGFyZ2UgaW50ZWdlciBv cGVyYXRpb24KLSAgICAgcGFzc2VzLmFkZChjcmVhdGVJbnN0cnVjdGlvbkNvbWJpbmluZ1Bhc3Mo KSk7ICAvLyBsZWdhbGl6ZSB3aWxsIGdlbmVyYXRlIHNvbWUgc2lsbHkgaW5zdHJ1Y3Rpb25zCi0t ICAgIHBhc3Nlcy5hZGQoY3JlYXRlQ29uc3RhbnRQcm9wYWdhdGlvblBhc3MoKSk7ICAgLy8gcHJv cGFnYXRlIGNvbnN0YW50IGFmdGVyIHNjYWxhcml6ZS9sZWdhbGl6ZQotKyAgICAvL3Bhc3Nlcy5h ZGQoY3JlYXRlQ29uc3RhbnRQcm9wYWdhdGlvblBhc3MoKSk7ICAgLy8gcHJvcGFnYXRlIGNvbnN0 YW50IGFmdGVyIHNjYWxhcml6ZS9sZWdhbGl6ZQotICAgICBwYXNzZXMuYWRkKGNyZWF0ZUV4cGFu ZENvbnN0YW50RXhwclBhc3MoKSk7ICAgIC8vIGNvbnN0YW50IHByb3AgbWF5IGdlbmVyYXRlIENv bnN0YW50RXhwcgotICAgICBwYXNzZXMuYWRkKGNyZWF0ZVByb21vdGVJbnRlZ2Vyc1Bhc3MoKSk7 ICAgICAgIC8vIGFsaWduIGludGVnZXIgc2l6ZSB0byBwb3dlciBvZiB0d28KLSAgICAgcGFzc2Vz LmFkZChjcmVhdGVSZW1vdmVHRVBQYXNzKHVuaXQpKTsgICAgICAgICAvLyBDb25zdGFudCBwcm9w IG1heSBnZW5lcmF0ZSBnZXAKLS0gICAgcGFzc2VzLmFkZChjcmVhdGVEZWFkSW5zdEVsaW1pbmF0 aW9uUGFzcygpKTsgICAvLyBSZW1vdmUgc2ltcGxpZmllZCBpbnN0cnVjdGlvbnMKLSsgICAgLy9w YXNzZXMuYWRkKGNyZWF0ZURlYWRJbnN0RWxpbWluYXRpb25QYXNzKCkpOyAgIC8vIFJlbW92ZSBz aW1wbGlmaWVkIGluc3RydWN0aW9ucwotICAgICBwYXNzZXMuYWRkKGNyZWF0ZUNGR1NpbXBsaWZp Y2F0aW9uUGFzcygpKTsgICAgIC8vIE1lcmdlICYgcmVtb3ZlIEJCcwotICAgICBwYXNzZXMuYWRk KGNyZWF0ZUxvd2VyU3dpdGNoUGFzcygpKTsgICAgICAgICAgIC8vIHNpbXBsaWZ5IGNmZyB3aWxs IGdlbmVyYXRlIHN3aXRjaC1jYXNlIGluc3RydWN0aW9uCi0gICAgIGlmIChwcm9maWxpbmcpIHsK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL211c2wucGF0Y2ggYi9zcmNwa2dz L2JlaWduZXQvcGF0Y2hlcy9tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBjZWZhZmJiNjU1ODguLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hl cy9tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIGEvYmFja2Vu ZC9zcmMvYmFja2VuZC9nZW4vZ2VuX21lc2FfZGlzYXNtLmMKLSsrKyBiL2JhY2tlbmQvc3JjL2Jh Y2tlbmQvZ2VuL2dlbl9tZXNhX2Rpc2FzbS5jCi1AQCAtMTEzNyw3ICsxMTM3LDcgQEAgc3RhdGlj IHVpbnQzMl90IF9fY29udl9oYWxmX3RvX2Zsb2F0KHVpbnQxNl90IGgpCi0gICAgICAgLy8gQWRq dXN0IG1hbnRpc3NhIHNvIGl0J3Mgbm9ybWFsaXplZCAoYW5kIGtlZXAKLSAgICAgICAvLyB0cmFj ayBvZiBleHBvbmVudCBhZGp1c3RtZW50KQotICAgICAgIGludCBlID0gLTE7Ci0tICAgICAgdWlu dCBtID0gaS5tYW50aXNzYTsKLSsgICAgICB1bnNpZ25lZCBpbnQgbSA9IGkubWFudGlzc2E7Ci0g ICAgICAgZG8gewotICAgICAgICAgZSsrOwotICAgICAgICAgbSA8PD0gMTsKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvYmVpZ25ldC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYmVpZ25ldC90ZW1wbGF0ZQpkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNlNmJiYjdhZTI0Li4wMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9iZWlnbmV0L3RlbXBsYXRlCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBA QAotIyBUZW1wbGF0ZSBmaWxlIGZvciAnYmVpZ25ldCcKLXBrZ25hbWU9YmVpZ25ldAotdmVyc2lv bj0xLjMuMgotcmV2aXNpb249MTAKLWFyY2hzPSJpNjg2KiB4ODZfNjQqIgotd3Jrc3JjPSJCZWln bmV0LSR7dmVyc2lvbn0tU291cmNlIgotYnVpbGRfc3R5bGU9Y21ha2UKLWhvc3RtYWtlZGVwZW5k cz0iY2xhbmcgbGx2bSBwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9Ik1lc2FMaWItZGV2ZWwgbGli ZWRpdC1kZXZlbCBsaWJmZmktZGV2ZWwgb2NsLWljZC1kZXZlbCB6bGliLWRldmVsCi0gbGliWGZp eGVzLWRldmVsIgotZGVwZW5kcz0ib2NsLWljZCIKLXNob3J0X2Rlc2M9IkJlaWduZXQgR1BHUFUg U3lzdGVtIGZvciBJbnRlbCBHUFVzIgotbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lk bGludXgub3JnPiIKLWxpY2Vuc2U9IkxHUEwtMi4xLW9yLWxhdGVyIgotaG9tZXBhZ2U9Imh0dHA6 Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvQmVpZ25ldC8iCi1kaXN0ZmlsZXM9 Imh0dHBzOi8vMDEub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvJHtwa2duYW1lfS0ke3ZlcnNpb259 LXNvdXJjZS50YXIuZ3oiCi1jaGVja3N1bT1jNTU1ZWRiYTE0OWRlMjMyNDM5NjVhNzAzZjM5Zjc5 ZmEwNmYxNWJjZmY1YTM3NjJiNTU0NGIwOTI1MDEwYjQzCi0KLXBvc3RfaW5zdGFsbCgpIHsKLQkj IHJlbW92ZSBDTCBoZWFkZXJzLCB3ZSBkbyB1c2Ugb3BlbmNsLWhlYWRlcnMgaW5zdGVhZC4KLQly bSAtciAke0RFU1RESVJ9L3Vzci9pbmNsdWRlCi19CmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWdu ZXQvdXBkYXRlIGIvc3JjcGtncy9iZWlnbmV0L3VwZGF0ZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggY2E0MWUwYWZlNjBjLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iZWlnbmV0 L3VwZGF0ZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXNpdGU9Imh0dHBzOi8vMDEub3Jn L2JlaWduZXQvZG93bmxvYWRzIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9yZW1vdmVkLXBhY2thZ2Vz L3RlbXBsYXRlIGIvc3JjcGtncy9yZW1vdmVkLXBhY2thZ2VzL3RlbXBsYXRlCmluZGV4IGMyMzEy NWJiMGNiNC4uZTAyM2U3YjZlNGI3IDEwMDY0NAotLS0gYS9zcmNwa2dzL3JlbW92ZWQtcGFja2Fn ZXMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9yZW1vdmVkLXBhY2thZ2VzL3RlbXBsYXRlCkBAIC0y Miw2ICsyMiw3IEBAIHJlcGxhY2VzPSIKICBhdG9tPD0xLjQ0LjBfMQogIGF2b2dhZHJvLWRldmVs PD0xLjIuMF84CiAgYXZvZ2Fkcm88PTEuMi4wXzgKKyBiZWlnbmV0PD0xLjMuMgogIGJva2tlbjw9 MS44XzMKICBib21pPD0wLjkuMTFfMTcKICBidXJwLWNsaWVudDw9MS40LjQwXzEzCgpGcm9tIGQ4 ZmJmYjMxMjZiMzc1YmQ3MzM2NmQxZjJlYjY2Y2ZhY2RlMGRiMWQgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwQ2VycXVlaXJhPz0gPGFjZXJxdWVp cmEwMjFAZ21haWwuY29tPgpEYXRlOiBNb24sIDI4IEZlYiAyMDIyIDIyOjAwOjU0ICswMDAwClN1 YmplY3Q6IFtQQVRDSCAyMC8zMF0gbGx2bTEzOiB1cGRhdGUgdG8gMTMuMC4xLgoKLS0tCiBzcmNw a2dzL2xsdm0vdGVtcGxhdGUgICB8IDIgKy0KIHNyY3BrZ3MvbGx2bTEzL3RlbXBsYXRlIHwgNiAr KystLS0KIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGx2bS90ZW1wbGF0 ZQppbmRleCBiY2ZlZTgyMDk4ZmYuLjk2ZDE4ZjczMGZjYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9s bHZtL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGx2bS90ZW1wbGF0ZQpAQCAtNCw4ICs0LDggQEAg dmVyc2lvbj0xMy4wLjAKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1ldGEKIGRlcGVuZHM9Imxs dm0xMyIKLXJlcGxhY2VzPSJsbHZtMTI+PTAgbGx2bTExPj0wIGxsdm0xMD49MCBsbHZtOT49MCBs bHZtOD49MCBsbHZtNz49MCBsbHZtNi4wPj0wIGxsdm0zLjk+PTAiCiBzaG9ydF9kZXNjPSJMTFZN IG1ldGEgcGFja2FnZSIKIG1haW50YWluZXI9IkVubm8gQm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4 Lm9yZz4iCiBsaWNlbnNlPSJQdWJsaWMgRG9tYWluIgogaG9tZXBhZ2U9Imh0dHBzOi8vd3d3LnZv aWRsaW51eC5vcmciCityZXBsYWNlcz0ibGx2bTEyPj0wIGxsdm0xMT49MCBsbHZtMTA+PTAgbGx2 bTk+PTAgbGx2bTg+PTAgbGx2bTc+PTAgbGx2bTYuMD49MCBsbHZtMy45Pj0wIgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9sbHZtMTMvdGVtcGxhdGUgYi9zcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZQppbmRl eCBiZmM5MTA1NmQyNzcuLjhlNjczNzAxZmI5YiAxMDA2NDQKLS0tIGEvc3JjcGtncy9sbHZtMTMv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9sbHZtMTMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdsbHZtMTMnCiBwa2duYW1lPWxsdm0xMwotdmVyc2lvbj0xMy4w LjAKLXJldmlzaW9uPTIKK3ZlcnNpb249MTMuMC4xCityZXZpc2lvbj0xCiB3cmtzcmM9Imxsdm0t cHJvamVjdC0ke3ZlcnNpb259LnNyYyIKIGJ1aWxkX3dya3NyYz1sbHZtCiBidWlsZF9zdHlsZT1j bWFrZQpAQCAtMzUsNyArMzUsNyBAQCBtYWludGFpbmVyPSJxNjYgPGRhbmllbEBvY3RhZm9yZ2Uu b3JnPiIKIGxpY2Vuc2U9IkFwYWNoZS0yLjAiCiBob21lcGFnZT0iaHR0cHM6Ly93d3cubGx2bS5v cmciCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9yZWxl YXNlcy9kb3dubG9hZC9sbHZtb3JnLSR7dmVyc2lvbn0vbGx2bS1wcm9qZWN0LSR7dmVyc2lvbn0u c3JjLnRhci54eiIKLWNoZWNrc3VtPTYwNzVhZDMwZjFhYzBlMTVmMDdjMWJmMDYyYzFlMTI2OGMy NDFkNjc0ZjExYmQzMmNkZjBlMDQwYzcxZjJiZjMKK2NoZWNrc3VtPTMyNjMzNWE4MzBmMmUzMmQw NmQwYTM2MzkzYjU0NTVkMTdkYzczZTBiZDEyMTEwNjUyMjdlZTAxNGY5MmNiZjgKIGxpYjMyZGlz YWJsZWQ9eWVzCiBweXRob25fdmVyc2lvbj0zCiAKCkZyb20gMzJjZGRlNGUyNzMzNjQ3MDIxNDQ3 YjNhNjAxMDcwMWVkYzA3ZWQ1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSXNhYWMg RnJldW5kIDxtYWlsQGlzYWFjZnJldW5kLmNvbT4KRGF0ZTogV2VkLCAyIE1hciAyMDIyIDIwOjQ5 OjM3ICswMDAwClN1YmplY3Q6IFtQQVRDSCAyMS8zMF0gcml2ZXI6IHVwZGF0ZSB0byAwLjEuMwoK LS0tCiAuLi5hYmxlLVBJRS1mb3Itcml2ZXItcml2ZXJjdGwtcml2ZXJ0aWxlLnBhdGNoIHwgMTgg KysrKysrKysrLS0tLS0tLS0tCiBzcmNwa2dzL3JpdmVyL3RlbXBsYXRlICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDQgKystLQogMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAx MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JpdmVyL3BhdGNoZXMvMDAwMS1F bmFibGUtUElFLWZvci1yaXZlci1yaXZlcmN0bC1yaXZlcnRpbGUucGF0Y2ggYi9zcmNwa2dzL3Jp dmVyL3BhdGNoZXMvMDAwMS1FbmFibGUtUElFLWZvci1yaXZlci1yaXZlcmN0bC1yaXZlcnRpbGUu cGF0Y2gKaW5kZXggZWNjNjgzMDJkYjA5Li45ZGEwZTVkNWQwNDMgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3Mvcml2ZXIvcGF0Y2hlcy8wMDAxLUVuYWJsZS1QSUUtZm9yLXJpdmVyLXJpdmVyY3RsLXJpdmVy dGlsZS5wYXRjaAorKysgYi9zcmNwa2dzL3JpdmVyL3BhdGNoZXMvMDAwMS1FbmFibGUtUElFLWZv ci1yaXZlci1yaXZlcmN0bC1yaXZlcnRpbGUucGF0Y2gKQEAgLTEwLDMzICsxMCwzMyBAQCBidWls ZCBzeXN0ZW0uIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3ppZ2xhbmcvemlnL2lzc3Vlcy83MjAx CiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvYnVpbGQu emlnIGIvYnVpbGQuemlnCi1pbmRleCBkNTYxZjQ5Li44YWM5YTRlIDEwMDY0NAoraW5kZXggOTgy OTYzMy4uMTgwMTc5ZiAxMDA2NDQKIC0tLSBhL2J1aWxkLnppZwogKysrIGIvYnVpbGQuemlnCi1A QCAtODUsNiArODUsNyBAQCBwdWIgZm4gYnVpbGQoYjogKnpicy5CdWlsZGVyKSAhdm9pZCB7CitA QCAtODksNiArODksNyBAQCBwdWIgZm4gYnVpbGQoYjogKnpicy5CdWlsZGVyKSAhdm9pZCB7CiAg ICAgICAgICBjb25zdCByaXZlciA9IGIuYWRkRXhlY3V0YWJsZSgicml2ZXIiLCAicml2ZXIvbWFp bi56aWciKTsKICAgICAgICAgIHJpdmVyLnNldFRhcmdldCh0YXJnZXQpOwogICAgICAgICAgcml2 ZXIuc2V0QnVpbGRNb2RlKG1vZGUpOwogKyAgICAgICAgcml2ZXIucGllID0gdHJ1ZTsKLSAgICAg ICAgIHJpdmVyLmFkZEJ1aWxkT3B0aW9uKGJvb2wsICJ4d2F5bGFuZCIsIHh3YXlsYW5kKTsKLSAg ICAgICAgIHJpdmVyLmFkZEJ1aWxkT3B0aW9uKFs6MF1jb25zdCB1OCwgInZlcnNpb24iLCBmdWxs X3ZlcnNpb24pOworICAgICAgICAgcml2ZXIuYWRkT3B0aW9ucygiYnVpbGRfb3B0aW9ucyIsIG9w dGlvbnMpOwogIAotQEAgLTk3LDYgKzk4LDcgQEAgcHViIGZuIGJ1aWxkKGI6ICp6YnMuQnVpbGRl cikgIXZvaWQgeworICAgICAgICAgYWRkU2VydmVyRGVwcyhyaXZlciwgc2Nhbm5lcik7CitAQCAt MTAwLDYgKzEwMSw3IEBAIHB1YiBmbiBidWlsZChiOiAqemJzLkJ1aWxkZXIpICF2b2lkIHsKICAg ICAgICAgIGNvbnN0IHJpdmVyY3RsID0gYi5hZGRFeGVjdXRhYmxlKCJyaXZlcmN0bCIsICJyaXZl cmN0bC9tYWluLnppZyIpOwogICAgICAgICAgcml2ZXJjdGwuc2V0VGFyZ2V0KHRhcmdldCk7CiAg ICAgICAgICByaXZlcmN0bC5zZXRCdWlsZE1vZGUobW9kZSk7CiArICAgICAgICByaXZlcmN0bC5w aWUgPSB0cnVlOwotICAgICAgICAgcml2ZXJjdGwuYWRkQnVpbGRPcHRpb24oWzowXWNvbnN0IHU4 LCAidmVyc2lvbiIsIGZ1bGxfdmVyc2lvbik7CisgICAgICAgICByaXZlcmN0bC5hZGRPcHRpb25z KCJidWlsZF9vcHRpb25zIiwgb3B0aW9ucyk7CiAgCiAgICAgICAgICByaXZlcmN0bC5zdGVwLmRl cGVuZE9uKCZzY2FubmVyLnN0ZXApOwotQEAgLTExNCw2ICsxMTYsNyBAQCBwdWIgZm4gYnVpbGQo YjogKnpicy5CdWlsZGVyKSAhdm9pZCB7CitAQCAtMTIwLDYgKzEyMiw3IEBAIHB1YiBmbiBidWls ZChiOiAqemJzLkJ1aWxkZXIpICF2b2lkIHsKICAgICAgICAgIGNvbnN0IHJpdmVydGlsZSA9IGIu YWRkRXhlY3V0YWJsZSgicml2ZXJ0aWxlIiwgInJpdmVydGlsZS9tYWluLnppZyIpOwogICAgICAg ICAgcml2ZXJ0aWxlLnNldFRhcmdldCh0YXJnZXQpOwogICAgICAgICAgcml2ZXJ0aWxlLnNldEJ1 aWxkTW9kZShtb2RlKTsKICsgICAgICAgIHJpdmVydGlsZS5waWUgPSB0cnVlOwotICAgICAgICAg cml2ZXJ0aWxlLmFkZEJ1aWxkT3B0aW9uKFs6MF1jb25zdCB1OCwgInZlcnNpb24iLCBmdWxsX3Zl cnNpb24pOworICAgICAgICAgcml2ZXJ0aWxlLmFkZE9wdGlvbnMoImJ1aWxkX29wdGlvbnMiLCBv cHRpb25zKTsKICAKICAgICAgICAgIHJpdmVydGlsZS5zdGVwLmRlcGVuZE9uKCZzY2FubmVyLnN0 ZXApOwogLS0gCi0yLjMzLjEKKzIuMzUuMQogCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JpdmVyL3Rl bXBsYXRlIGIvc3JjcGtncy9yaXZlci90ZW1wbGF0ZQppbmRleCA5Y2YzYWJlNGI4NWIuLmFlMDlh ZTU0YjM0ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9yaXZlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3JpdmVyL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncml2 ZXInCiBwa2duYW1lPXJpdmVyCi12ZXJzaW9uPTAuMS4xCit2ZXJzaW9uPTAuMS4zCiByZXZpc2lv bj0xCiBidWlsZF9zdHlsZT16aWctYnVpbGQKIGNvbmZpZ3VyZV9hcmdzPSIkKHZvcHRfaWYgeHdh eWxhbmQgLUR4d2F5bGFuZCkiCkBAIC0xMiw3ICsxMiw3IEBAIG1haW50YWluZXI9IklzYWFjIEZy ZXVuZCA8bWFpbEBpc2FhY2ZyZXVuZC5jb20+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIK IGhvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vcml2ZXJ3bS9yaXZlciIKIGRpc3RmaWxlcz0i JHtob21lcGFnZX0vcmVsZWFzZXMvZG93bmxvYWQvdiR7dmVyc2lvbn0vcml2ZXItJHt2ZXJzaW9u fS50YXIuZ3oiCi1jaGVja3N1bT0yYTBiY2Q0NjcwZWQ5ZWJkMzljMjc5ZjJiZjEwODAzZmM2NWM5 ZjNlZTIzMDdjZTQwNzI4ZGYyM2NlOTE0ZDE4CitjaGVja3N1bT1mNjM0NDRjMzAwYWI1NTRlZjNj YTBkOTA0YTZiMTI0YTgzMmM4Mzk3ZDQ3NGVmMDY3YmRkZTkxMWM5ODFjNzlmCiAKIGJ1aWxkX29w dGlvbnM9Inh3YXlsYW5kIgogYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJ4d2F5bGFuZCIKCkZyb20g ZTA5ZmFmYjc1MTQ2MWJhY2I1MmFmYjFjZTIwZDVhZWU2N2ExMTA2OSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogSXNhYWMgRnJldW5kIDxtYWlsQGlzYWFjZnJldW5kLmNvbT4KRGF0ZTog V2VkLCAyIE1hciAyMDIyIDIwOjUwOjE3ICswMDAwClN1YmplY3Q6IFtQQVRDSCAyMi8zMF0gcnVu ZGlyZDogcmVtb3ZlIHBhY2thZ2UKCiAgICBUaGlzIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgdXBz dHJlYW0gd2hpY2ggcmVjb21tZW5kcyB1c2luZwogICAgZHVtYl9ydW50aW1lX2RpciAoYWxyZWFk eSBwYWNrYWdlZCBmb3Igdm9pZCkgaW5zdGVhZC4KCiAgICBSZW1vdmluZyBub3cgc2luY2UgcnVu ZGlyZCAwLjIuMCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHppZyAwLjkgYW5kCiAgICB0aGVyZSB3 b24ndCBiZSBhbnkgbmV3IHJ1bmRpcmQgcmVsZWFzZXMuCi0tLQogc3JjcGtncy9yZW1vdmVkLXBh Y2thZ2VzL3RlbXBsYXRlIHwgIDEgKwogc3JjcGtncy9ydW5kaXJkL2ZpbGVzL3J1bmRpcmQvcnVu IHwgIDIgLS0KIHNyY3BrZ3MvcnVuZGlyZC90ZW1wbGF0ZSAgICAgICAgICB8IDE3IC0tLS0tLS0t LS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxOSBkZWxldGlvbnMo LSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3J1bmRpcmQvZmlsZXMvcnVuZGlyZC9ydW4K IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3J1bmRpcmQvdGVtcGxhdGUKCmRpZmYgLS1naXQg YS9zcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUgYi9zcmNwa2dzL3JlbW92ZWQtcGFj a2FnZXMvdGVtcGxhdGUKaW5kZXggZTAyM2U3YjZlNGI3Li5hNGY1YjYzMjk1OGIgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvcmVtb3ZlZC1wYWNrYWdlcy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JlbW92 ZWQtcGFja2FnZXMvdGVtcGxhdGUKQEAgLTM1Nyw2ICszNTcsNyBAQCByZXBsYWNlcz0iCiAgcmt0 LXN0YWdlMS1jb3Jlb3M8PTEuMzAuMF8zCiAgcmt0LXN0YWdlMS1mbHk8PTEuMzAuMF8zCiAgcmt0 PD0xLjMwLjBfMworIHJ1bmRpcmQ8PTAuMi4wXzEKICBzY2FudGFpbG9yPD0wLjkuMTIuMV8yCiAg c2VhaG9yc2Utc2hhcmluZzw9My44LjBfNAogIHNlcmllc3BsPD0yLjMuNV8yCmRpZmYgLS1naXQg YS9zcmNwa2dzL3J1bmRpcmQvZmlsZXMvcnVuZGlyZC9ydW4gYi9zcmNwa2dzL3J1bmRpcmQvZmls ZXMvcnVuZGlyZC9ydW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0YWFlOGM4M2I0 Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcnVuZGlyZC9maWxlcy9ydW5kaXJkL3J1bgor KysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIyEvYmluL3NoCi1leGVjIHJ1bmRpcmQKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcnVuZGlyZC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcnVuZGlyZC90ZW1w bGF0ZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZmODk3YWJkNDU2Li4wMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9ydW5kaXJkL3RlbXBsYXRlCisrKyAvZGV2L251bGwKQEAgLTEs MTcgKzAsMCBAQAotIyBUZW1wbGF0ZSBmaWxlIGZvciAncnVuZGlyZCcKLXBrZ25hbWU9cnVuZGly ZAotdmVyc2lvbj0wLjIuMAotcmV2aXNpb249MQotYnVpbGRfc3R5bGU9emlnLWJ1aWxkCi1tYWtl ZGVwZW5kcz0icGFtLWRldmVsIgotc2hvcnRfZGVzYz0iU2ltcGxlIGRhZW1vbiArIFBBTSBtb2R1 bGUgcHJvdmlkaW5nIGFuIFhER19SVU5USU1FX0RJUiIKLW1haW50YWluZXI9IklzYWFjIEZyZXVu ZCA8bWFpbEBpc2FhY2ZyZXVuZC5jb20+IgotbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKLWhv bWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vaWZyZXVuZC9ydW5kaXJkIgotZGlzdGZpbGVzPSIk e2hvbWVwYWdlfS9hcmNoaXZlL3Yke3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPTFkZWEyMDdm MzkzODhlOGMyYzI3NWI4YTlhYWRhMDE2NmQxZjU4N2E4MDZmMmU1ZTQ0ODZkOTgyNTllMjNlNGMK LQotcG9zdF9pbnN0YWxsKCkgewotCXZzdiBydW5kaXJkCi0JdmRvYyBSRUFETUUubWQKLX0KCkZy b20gYWZjOGQxOTY2ODIwNjgzMWUxNmUyNDY3ZmE2MWJmMzJhMjA2OGI3NSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBDZXJxdWVpcmE/PSA8YWNl cnF1ZWlyYTAyMUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgNCBNYXIgMjAyMiAxMTo1NTo0NiArMDAw MApTdWJqZWN0OiBbUEFUQ0ggMjMvMzBdIGJjYzogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNy Y3BrZ3MvYmNjL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iY2MvdGVtcGxhdGUgYi9zcmNw a2dzL2JjYy90ZW1wbGF0ZQppbmRleCA1NDUwOWI2M2Q1YTcuLjJjZmEwYTI5NzdkMCAxMDA2NDQK LS0tIGEvc3JjcGtncy9iY2MvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9iY2MvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdiY2MnCiBwa2duYW1lPWJjYwogdmVy c2lvbj0wLjI0LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIHdya3NyYz0iYmNjIgogYnVpbGRf c3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFJFVklTSU9OPSR7dmVyc2lvbn0gLURFTkFC TEVfTExWTV9TSEFSRUQ9MSIKCkZyb20gZWRjYzZjNmRhY2E3YzEwZWFiNmUzODMwYjlhOGZiYzUy ZGRmOTBhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9 QTk9MjBDZXJxdWVpcmE/PSA8YWNlcnF1ZWlyYTAyMUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgNCBN YXIgMjAyMiAxMTo1NjozMiArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMjQvMzBdIGdub21lLWJ1aWxk ZXI6IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0tCiBzcmNwa2dzL2dub21lLWJ1aWxkZXIvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2dub21lLWJ1aWxkZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2du b21lLWJ1aWxkZXIvdGVtcGxhdGUKaW5kZXggOTM1NTliMjE3NzRmLi41YTVhNTE4OTNhZTggMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvZ25vbWUtYnVpbGRlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2du b21lLWJ1aWxkZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdnbm9tZS1idWlsZGVyJwogcGtnbmFtZT1nbm9tZS1idWlsZGVyCiB2ZXJzaW9uPTQxLjMKLXJl dmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9oZWxwZXI9cWVt dQogY29uZmlndXJlX2FyZ3M9Ii1EaGVscD10cnVlIC1EbmV0d29ya190ZXN0cz1mYWxzZSIKCkZy b20gYTk2NzczOGQyNjM4ZmI5MzRmNzgyOTQzYjUxMjFkM2I3NmJjOTIyYyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBDZXJxdWVpcmE/PSA8YWNl cnF1ZWlyYTAyMUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgNCBNYXIgMjAyMiAxMTo1Njo1OCArMDAw MApTdWJqZWN0OiBbUEFUQ0ggMjUvMzBdIGxkYzogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNy Y3BrZ3MvbGRjL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGRjL3RlbXBsYXRlIGIv c3JjcGtncy9sZGMvdGVtcGxhdGUKaW5kZXggYTI3MjgwZGRlM2I4Li44MDU5NzhhODFmZDkgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvbGRjL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGRjL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGRjJwogcGtnbmFtZT1sZGMK IHZlcnNpb249MS4yOC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiB3cmtzcmM9ImxkYy0ke3Zl cnNpb259LXNyYyIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iCkBAIC0xMSw3 ICsxMSw3IEBAIGNvbmZpZ3VyZV9hcmdzPSIKICAtREJBU0hfQ09NUExFVElPTl9DT01QTEVUSU9O U0RJUj0vdXNyL3NoYXJlL2Jhc2gtY29tcGxldGlvbgogIC1EQ19TWVNURU1fTElCUz0ndW53aW5k O207cHRocmVhZDtydDtkbCciCiBjb25mX2ZpbGVzPSIvZXRjL2xkYzIuY29uZiIKLWhvc3RtYWtl ZGVwZW5kcz0iZG1kIGxsdm0xMiBwZXJsIHBrZy1jb25maWciCitob3N0bWFrZWRlcGVuZHM9ImRt ZCBsbHZtIHBlcmwgcGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJsaWJjdXJsLWRldmVsIGxpYmZm aS1kZXZlbCBuY3Vyc2VzLWRldmVsIHpsaWItZGV2ZWwKICBsbHZtLWxpYnVud2luZC1kZXZlbCIK IGRlcGVuZHM9ImxkYy1ydW50aW1lIGxsdm0tbGlidW53aW5kLWRldmVsIgoKRnJvbSBlNDI2YmRk MGQ0N2RhZDI4OWU4YTNjNGE5M2Y4ZTQ4M2RiMjI5NjQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMENlcnF1ZWlyYT89IDxhY2VycXVlaXJhMDIx QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCA0IE1hciAyMDIyIDExOjU4OjE3ICswMDAwClN1YmplY3Q6 IFtQQVRDSCAyNi8zMF0gc2hpYm9rZW4yOiByZWJ1aWxkIGZvciBsbHZtMTMKCi0tLQogc3JjcGtn cy9zaGlib2tlbjIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0 ZSBiL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlCmluZGV4IGI1NjYxMzIyOWMxMy4uYWI5ZDJj NGNiOGY5IDEwMDY0NAotLS0gYS9zcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3NoaWJva2VuMi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ3NoaWJva2VuMicKIHBrZ25hbWU9c2hpYm9rZW4yCiB2ZXJzaW9uPTUuMTUuMgotcmV2aXNp b249NAorcmV2aXNpb249NQogX3BrZ25hbWU9InB5c2lkZS1zZXR1cC1vcGVuc291cmNlLXNyYy0k e3ZlcnNpb259Igogd3Jrc3JjPSIke19wa2duYW1lLyU1LjE0LjIuMS81LjE0LjJ9IgogYnVpbGRf d3Jrc3JjPSJzb3VyY2VzL3NoaWJva2VuMiIKCkZyb20gOTFhOWI2MmZjNjdkM2E5MTQwZDk5NWJj ZmI2ZGNjZTQ3MDQ4YTQxYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9x P0FuZHI9QzM9QTk9MjBDZXJxdWVpcmE/PSA8YWNlcnF1ZWlyYTAyMUBnbWFpbC5jb20+CkRhdGU6 IEZyaSwgNCBNYXIgMjAyMiAxMTo1ODoyMyArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMjcvMzBdIHRp bGl4OiByZWJ1aWxkIGZvciBsbHZtMTMKCi0tLQogc3JjcGtncy90aWxpeC90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvdGlsaXgvdGVtcGxhdGUgYi9zcmNwa2dzL3RpbGl4L3RlbXBsYXRlCmlu ZGV4IGQ4ZjAxNGJjNzhjNS4uYWMxYmY3ZGQzYmRkIDEwMDY0NAotLS0gYS9zcmNwa2dzL3RpbGl4 L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGlsaXgvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICd0aWxpeCcKIHBrZ25hbWU9dGlsaXgKIHZlcnNpb249MS45LjQK LXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJn cz0iLURiX2x0bz1mYWxzZSIKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgZ2V0dGV4dC1kZXZl bCBnZGstcGl4YnVmIGdsaWItZGV2ZWwgbGRjIHBvNGEgcGtnLWNvbmZpZwoKRnJvbSAxNmUyYmQz ZjM0ZmRlZWI3MDk2ZDRhZWFkZDQ5NzE0YTlhMGZiOTRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMENlcnF1ZWlyYT89IDxhY2VycXVlaXJhMDIx QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCA0IE1hciAyMDIyIDEyOjA4OjU1ICswMDAwClN1YmplY3Q6 IFtQQVRDSCAyOC8zMF0gU1BJUlYtTExWTS1UcmFuc2xhdG9yOiByZWJ1aWxkIGZvciBsbHZtMTMK Ci0tLQogc3JjcGtncy9TUElSVi1MTFZNLVRyYW5zbGF0b3IvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL1NQSVJWLUxMVk0tVHJhbnNsYXRvci90ZW1wbGF0ZSBiL3NyY3BrZ3MvU1BJUlYtTExW TS1UcmFuc2xhdG9yL3RlbXBsYXRlCmluZGV4IDI1MDRjYWJlZDM2Ny4uODUyYWE1Y2IzODQwIDEw MDY0NAotLS0gYS9zcmNwa2dzL1NQSVJWLUxMVk0tVHJhbnNsYXRvci90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL1NQSVJWLUxMVk0tVHJhbnNsYXRvci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ1NQSVJWLUxMVk0tVHJhbnNsYXRvcicKIHBrZ25hbWU9U1BJUlYt TExWTS1UcmFuc2xhdG9yCiB2ZXJzaW9uPTEyLjAuMAotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIG1ha2VfYnVpbGRfYXJncz0ibGx2bS1zcGlydiIKIGNvbmZpZ3Vy ZV9hcmdzPSItV25vLWRldiAtRExMVk1fTElOS19MTFZNX0RZTElCPU9OIC1EQ01BS0VfU0tJUF9S UEFUSD1PTgoKRnJvbSA2YzNjZGEwYjdhNDQwNWZjZDI3OTg4YmM5ZjdkNWEzNjA4ZDNiYmM3IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMENlcnF1 ZWlyYT89IDxhY2VycXVlaXJhMDIxQGdtYWlsLmNvbT4KRGF0ZTogRnJpLCA0IE1hciAyMDIyIDEy OjExOjQ5ICswMDAwClN1YmplY3Q6IFtQQVRDSCAyOS8zMF0gZ2hkbDogcmVidWlsZCBmb3IgbGx2 bTEzCgotLS0KIC4uLmI3NjRmNDk2NjY2MTYwNjNkNDIzOWRmODNiNWFlZDk2MWZmZi5wYXRjaCB8 IDQ5IC0tLS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9wYXRjaGVzL3tsbHZtMTIucGF0Y2ggPT4gbGx2 bTEzLnBhdGNofSAgICB8ICAxICsKIHNyY3BrZ3MvZ2hkbC90ZW1wbGF0ZSAgICAgICAgICAgICAg ICAgICAgICAgICB8ICA3ICstLQogMyBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUy IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZ2hkbC9wYXRjaGVzLzM5 NmViNzY0ZjQ5NjY2NjE2MDYzZDQyMzlkZjgzYjVhZWQ5NjFmZmYucGF0Y2gKIHJlbmFtZSBzcmNw a2dzL2doZGwvcGF0Y2hlcy97bGx2bTEyLnBhdGNoID0+IGxsdm0xMy5wYXRjaH0gKDkwJSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2doZGwvcGF0Y2hlcy8zOTZlYjc2NGY0OTY2NjYxNjA2M2Q0MjM5 ZGY4M2I1YWVkOTYxZmZmLnBhdGNoIGIvc3JjcGtncy9naGRsL3BhdGNoZXMvMzk2ZWI3NjRmNDk2 NjY2MTYwNjNkNDIzOWRmODNiNWFlZDk2MWZmZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMjNjNTY3M2U1OTNlLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9naGRsL3Bh dGNoZXMvMzk2ZWI3NjRmNDk2NjY2MTYwNjNkNDIzOWRmODNiNWFlZDk2MWZmZi5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gMzk2ZWI3NjRmNDk2NjY2MTYwNjNkNDIz OWRmODNiNWFlZDk2MWZmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEplcm9lbiBW YW4gZGVuIEtleWJ1cyA8amVyb2VuLnZhbmRlbmtleWJ1c0BnbWFpbC5jb20+Ci1EYXRlOiBNb24s IDI2IEFwciAyMDIxIDIwOjE3OjQwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1pZ3JhdGUgZGVw cmVjYXRlZCBEZWJ1Z0xvYzo6Z2V0IHRvIERJTG9jYXRpb246OmdldAotCi0tLS0KLSBzcmMvb3J0 aG8vbGx2bTYvbGx2bS1jYmluZGluZ3MuY3BwIHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2Vk LCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvb3J0 aG8vbGx2bTYvbGx2bS1jYmluZGluZ3MuY3BwIGIvc3JjL29ydGhvL2xsdm02L2xsdm0tY2JpbmRp bmdzLmNwcAotaW5kZXggZjgyODQ1ZmZjZC4uOTg0NzBkOGZhYiAxMDA2NDQKLS0tLSBhL3NyYy9v cnRoby9sbHZtNi9sbHZtLWNiaW5kaW5ncy5jcHAKLSsrKyBiL3NyYy9vcnRoby9sbHZtNi9sbHZt LWNiaW5kaW5ncy5jcHAKLUBAIC0xMjU0LDcgKzEyNTQsNyBAQCBuZXdfdmFyX2RlY2woT0Rub2Rl ICpSZXMsIE9JZGVudCBJZGVudCwgT1N0b3JhZ2UgU3RvcmFnZSwgT1Rub2RlIEF0eXBlKQotICAg ICAgICAgIERlYnVnQ3VycmVudExpbmUsIEF0eXBlLT5EYmcsIHRydWUpOwotICAgICAgIERCdWls ZGVyLT5pbnNlcnREZWNsYXJlCi0gICAgICAgICAodW53cmFwKERlY2wpLCBELCBEQnVpbGRlci0+ Y3JlYXRlRXhwcmVzc2lvbigpLAotLSAgICAgICAgIERlYnVnTG9jOjpnZXQoRGVidWdDdXJyZW50 TGluZSwgMCwgRGVidWdDdXJyZW50U2NvcGUpLAotKyAgICAgICAgIERJTG9jYXRpb246OmdldChE ZWJ1Z0N1cnJlbnRTY29wZS0+Z2V0Q29udGV4dCgpLCBEZWJ1Z0N1cnJlbnRMaW5lLCAwLCBEZWJ1 Z0N1cnJlbnRTY29wZSksCi0gICAgICAgICAgdW53cmFwKExMVk1HZXRJbnNlcnRCbG9jayhEZWNs QnVpbGRlcikpKTsKLSAgICAgfQotICNlbmRpZgotQEAgLTE1OTcsNyArMTU5Nyw3IEBAIHN0YXJ0 X3N1YnByb2dyYW1fYm9keShPRG5vZGVTdWJwcmcgKkZ1bmMpCi0gICAgIERlYnVnQ3VycmVudFNj b3BlID0gRGVidWdDdXJyZW50U3VicHJnOwotIAotICAgICB1bndyYXAoQnVpbGRlciktPlNldEN1 cnJlbnREZWJ1Z0xvY2F0aW9uCi0tICAgICAgKERlYnVnTG9jOjpnZXQoRGVidWdDdXJyZW50TGlu ZSwgMCwgRGVidWdDdXJyZW50U2NvcGUpKTsKLSsgICAgICAoRElMb2NhdGlvbjo6Z2V0KERlYnVn Q3VycmVudFNjb3BlLT5nZXRDb250ZXh0KCksIERlYnVnQ3VycmVudExpbmUsIDAsIERlYnVnQ3Vy cmVudFNjb3BlKSk7Ci0gICB9Ci0gCi0gICBpZiAoRmxhZ0RlYnVnKSB7Ci1AQCAtMTYxMiw3ICsx NjEyLDcgQEAgc3RhcnRfc3VicHJvZ3JhbV9ib2R5KE9Ebm9kZVN1YnByZyAqRnVuYykKLSAgICAg ICAgICBEZWJ1Z0N1cnJlbnRGaWxlLCBEZWJ1Z0N1cnJlbnRMaW5lLCBJbnRlci0+RHR5cGUtPkRi ZywgdHJ1ZSk7Ci0gICAgICAgREJ1aWxkZXItPmluc2VydERlY2xhcmUKLSAgICAgICAgICh1bndy YXAoVmFyKSwgRCwgREJ1aWxkZXItPmNyZWF0ZUV4cHJlc3Npb24oKSwKLS0gICAgICAgICBEZWJ1 Z0xvYzo6Z2V0KERlYnVnQ3VycmVudExpbmUsIDAsIERlYnVnQ3VycmVudFN1YnByZyksCi0rICAg ICAgICAgRElMb2NhdGlvbjo6Z2V0KERlYnVnQ3VycmVudFN1YnByZy0+Z2V0Q29udGV4dCgpLCBE ZWJ1Z0N1cnJlbnRMaW5lLCAwLCBEZWJ1Z0N1cnJlbnRTdWJwcmcpLAotICAgICAgICAgIHVud3Jh cChMTFZNR2V0SW5zZXJ0QmxvY2soRGVjbEJ1aWxkZXIpKSk7Ci0gICAgICAgTExWTUJ1aWxkU3Rv cmUoRGVjbEJ1aWxkZXIsIEludGVyLT5SZWYsIFZhcik7Ci0gICAgICAgSW50ZXItPlJlZiA9IFZh cjsKLUBAIC0yNzU5LDcgKzI3NTksNyBAQCBuZXdfZGVidWdfbGluZV9zdG10ICh1bnNpZ25lZCBM aW5lKQotICAgaWYgKEZsYWdEZWJ1Z0xpbmVzICYmIExpbmUgIT0gRGVidWdDdXJyZW50TGluZSkg ewotICAgICBEZWJ1Z0N1cnJlbnRMaW5lID0gTGluZTsKLSAgICAgdW53cmFwKEJ1aWxkZXIpLT5T ZXRDdXJyZW50RGVidWdMb2NhdGlvbgotLSAgICAgIChEZWJ1Z0xvYzo6Z2V0KERlYnVnQ3VycmVu dExpbmUsIDAsIERlYnVnQ3VycmVudFNjb3BlKSk7Ci0rICAgICAgKERJTG9jYXRpb246OmdldChE ZWJ1Z0N1cnJlbnRTY29wZS0+Z2V0Q29udGV4dCgpLCBEZWJ1Z0N1cnJlbnRMaW5lLCAwLCBEZWJ1 Z0N1cnJlbnRTY29wZSkpOwotICAgfQotICNlbmRpZgotIH0KZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv Z2hkbC9wYXRjaGVzL2xsdm0xMi5wYXRjaCBiL3NyY3BrZ3MvZ2hkbC9wYXRjaGVzL2xsdm0xMy5w YXRjaApzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBzcmNwa2dzL2doZGwvcGF0Y2hl cy9sbHZtMTIucGF0Y2gKcmVuYW1lIHRvIHNyY3BrZ3MvZ2hkbC9wYXRjaGVzL2xsdm0xMy5wYXRj aAppbmRleCA4ZDJmNzZiZmRhMDYuLjM4ZGRiMDg4ZTgzMiAxMDA2NDQKLS0tIGEvc3JjcGtncy9n aGRsL3BhdGNoZXMvbGx2bTEyLnBhdGNoCisrKyBiL3NyY3BrZ3MvZ2hkbC9wYXRjaGVzL2xsdm0x My5wYXRjaApAQCAtNyw2ICs3LDcgQEAgaW5kZXggYzFjMWE2ZC4uZGFkN2MzOCAxMDA3NTUKICAg ICAgICAgY2hlY2tfdmVyc2lvbiAxMC4wICRsbHZtX3ZlcnNpb24gfHwKICAgICAgICAgY2hlY2tf dmVyc2lvbiAxMS4wICRsbHZtX3ZlcnNpb24gfHwKICsgICAgICAgY2hlY2tfdmVyc2lvbiAxMi4w ICRsbHZtX3ZlcnNpb24gfHwKKysgICAgICAgY2hlY2tfdmVyc2lvbiAxMy4wICRsbHZtX3ZlcnNp b24gfHwKICAgICAgICAgZmFsc2U7IHRoZW4KICAgICAgZWNobyAiRGVidWdnaW5nIGlzIGVuYWJs ZWQgd2l0aCBsbHZtICRsbHZtX3ZlcnNpb24iCiAgICBlbHNlCmRpZmYgLS1naXQgYS9zcmNwa2dz L2doZGwvdGVtcGxhdGUgYi9zcmNwa2dzL2doZGwvdGVtcGxhdGUKaW5kZXggZTc1NmQ4YzNjZDg3 Li44YTVmMmU2MjMyMDMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ2hkbC90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2doZGwvdGVtcGxhdGUKQEAgLTYsNyArNiw3IEBACiAjCiBwa2duYW1lPWdoZGwKIHJl dmVydHM9IjIwMTgxMTI5XzEiCi12ZXJzaW9uPTEuMC4wCit2ZXJzaW9uPTIuMC4wCiByZXZpc2lv bj0xCiBidWlsZF9zdHlsZT1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLXByZWZpeD0vdXNy IC0tc3JjZGlyPS4uIC0taW5jZGlyPWxpYi9naGRsL2luY2x1ZGUiCkBAIC0xNiw3ICsxNiw3IEBA IG1haW50YWluZXI9Im0zdGF2M3JzZSA8bXR2cnNAdHV0YS5pbz4iCiBsaWNlbnNlPSJHUEwtMi4w LW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9naGRsL2doZGwiCiBkaXN0 ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9naGRsL2doZGwvYXJjaGl2ZS92JHt2ZXJzaW9ufS50 YXIuZ3oiCi1jaGVja3N1bT1jYjQyNDc2NmZiZTgzMWZmNDFiZWM4NDAxNmE2YWYwNDA2ZDczNWMy NzJiMGI2MzlkNTA3YzM1MDNkZjMwNDk1CitjaGVja3N1bT01ZjI1ODM2OWUwZmFmNzMwMjk4OTE2 ZGZkYzEzNGM1NGMyNWE3YThhN2YxOTcyMmI3Y2UyNzE3ZGIxOWFmNmVjCiBub2Nyb3NzPXllcwog bWFrZV9jaGVjaz1leHRlbmRlZAogCkBAIC01MSw3ICs1MSw3IEBAIGZpCiAKIGlmIFsgIiRidWls ZF9vcHRpb25fbGx2bSIgXTsgdGhlbgogCXN1YnBhY2thZ2VzKz0iIGdoZGwtbGx2bSIKLQltYWtl ZGVwZW5kcys9IiBsbHZtMTIiCisJbWFrZWRlcGVuZHMrPSIgbGx2bSIKIGZpCiAKIGRvX2NvbmZp Z3VyZSgpIHsKQEAgLTEzNSwzICsxMzUsNCBAQCBnaGRsLWxsdm1fcGFja2FnZSgpIHsKIAkJdm1v dmUgdXNyL2xpYi9naGRsL2xsdm0KIAl9CiB9CisKCkZyb20gY2QyZTRkYjM3YTk3NzYyZDkwNDVi MWI4ODdhY2JlOGE2ZjgzMjcyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYt OD9xP0FuZHI9QzM9QTk9MjBDZXJxdWVpcmE/PSA8YWNlcnF1ZWlyYTAyMUBnbWFpbC5jb20+CkRh dGU6IEZyaSwgNCBNYXIgMjAyMiAxMjoxMzoxOCArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMzAvMzBd IHJ1c3Q6IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0tCiBzcmNwa2dzL3J1c3QvdGVtcGxhdGUgfCA2 ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL3J1c3QvdGVtcGxhdGUgYi9zcmNwa2dzL3J1c3QvdGVtcGxh dGUKaW5kZXggNTYwYTYyOWYzZGEyLi4yN2Y0OTFkM2M2OTcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv cnVzdC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3J1c3QvdGVtcGxhdGUKQEAgLTksMTAgKzksMTAg QEAKICMKIHBrZ25hbWU9cnVzdAogdmVyc2lvbj0xLjU3LjAKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIHdya3NyYz0icnVzdGMtJHt2ZXJzaW9ufS1zcmMiCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtl IGN1cmwgcGtnLWNvbmZpZyBweXRob24zIHRhciBjYXJnby1ib290c3RyYXAiCi1tYWtlZGVwZW5k cz0ibGliZmZpLWRldmVsIG5jdXJzZXMtZGV2ZWwgbGlieG1sMi1kZXZlbCB6bGliLWRldmVsIGxs dm0xMiIKK21ha2VkZXBlbmRzPSJsaWJmZmktZGV2ZWwgbmN1cnNlcy1kZXZlbCBsaWJ4bWwyLWRl dmVsIHpsaWItZGV2ZWwgbGx2bSIKIGRlcGVuZHM9InJ1c3Qtc3RkIgogc2hvcnRfZGVzYz0iU2Fm ZSwgY29uY3VycmVudCwgcHJhY3RpY2FsIHN5c3RlbXMgbGFuZ3VhZ2UiCiBtYWludGFpbmVyPSJF bm5vIEJvbGFuZCA8Z290dG94QHZvaWRsaW51eC5vcmc+IgpAQCAtMzQsNyArMzQsNyBAQCBpZiBb ICIkWEJQU19UQVJHRVRfTElCQyIgPSAibXVzbCIgXTsgdGhlbgogZmkKIAogaWYgWyAiJENST1NT X0JVSUxEIiBdOyB0aGVuCi0JaG9zdG1ha2VkZXBlbmRzKz0iIHJ1c3QgbGx2bTEyIgorCWhvc3Rt YWtlZGVwZW5kcys9IiBydXN0IGxsdm0iCiAJIyBUaGVzZSBhcmUgcmVxdWlyZWQgZm9yIGJ1aWxk aW5nIHRoZSBidWlsZGhvc3QncyBzdGFnZTAvMQogCWhvc3RtYWtlZGVwZW5kcys9IiBsaWJmZmkt ZGV2ZWwgbGlieG1sMi1kZXZlbCBuY3Vyc2VzLWRldmVsIHpsaWItZGV2ZWwiCiBlbHNlCg== --===============6256699368890913463==--