From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 14822 invoked from network); 8 May 2023 00:23:51 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 8 May 2023 00:23:51 -0000 Content-Type: multipart/mixed; boundary="===============9115888581860980245==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_ffmpeg6_split?= To: ml@inbox.vuxu.org From: zlice Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Mon, 08 May 2023 02:23:51 +0200 List-Id: Message-ID: <20230508002351.qbR5rJP67Uy_wC2MD5WRH6PB3Xh3REfNUS13aAkDtS0@z> GitHub notification mails are now in MIME to allow UTF8. --===============9115888581860980245== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgemxpY2UgYWdhaW5zdCBtYXN0ZXIg b24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL3psaWNl L3ZvaWQtcGFja2FnZXMgZmZtcGVnNi1zcGxpdApodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51 eC92b2lkLXBhY2thZ2VzL3B1bGwvNDM3NjEKCmZmbXBlZzYgc3BsaXQKW2NpIHNraXBdDQoNCg0K IyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzDQoNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5nZXMgaW4gdGhp cyBQUjogKipZRVMqKg0KDQptYWluIHRlc3RpbmcgaGFzIGJlZW4gdmFhcGkgaW4gRmlyZWZveCBO aWdodGx5IGFuZCBlbmMvZGVjIGluIFNob3RjdXQgb24gSW50ZWwgQTc3MA0KDQojIyMjIE5ldyBw YWNrYWdlDQoNCi0gVGhpcyBuZXcgcGFja2FnZSBjb25mb3JtcyB0byB0aGUgW3BhY2thZ2UgcmVx dWlyZW1lbnRzXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Js b2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZCNwYWNrYWdlLXJlcXVpcmVtZW50cyk6ICoqWUVTKioN Cg0KIyMjIyBMb2NhbCBidWlsZCB0ZXN0aW5nDQoNCi0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkg Zm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsICoqeDg2XzY0KioNCg0KIyMjIyBEaXNjdXNzaW9u DQoNCkNvbnRpbnVhdGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBh Y2thZ2VzL3B1bGwvMzYzMTUNCg0KYGxpYmF2cmVzYW1wbGVgIGlzIGRlcHJlY2F0ZWQsIGJ1dCBt YXJrZWQgYXMgYSBkZXBlbmRlbmN5IHdoZW4gdHJ5aW5nIHRvIGJ1aWxkIG90aGVyIHBhY2thZ2Vz IGFuZCBpbnN0YWxsIGBmZm1wZWdgKDYpLiBJIHRoaW5rIHRoZSByaWdodCB3YXkgdG8gaGFuZGxl IHRoaXMgaXMgbWFrZSBhIG1ldGEgcGFja2FnZSBhbmQgdGhlIGFkZCB0byByZW1vdmFscz8NCg0K DQojIyMjIyBDb21taXQgbmFtaW5nIC8gbWlzYw0KDQp+fkNvbW1pdHMgYXJlICdkaXJ0eScgcmln aHQgbm93LCBydW5uaW5nIHdpdGggW2dzdHJlYW1lciAxLjIyLjEgdXBkYXRlc10oaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQyODYxKSBhbmQgW0ludGVs IE9wZW5DTF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxs LzQzMDg0KS4gVGhpcyB3aWxsIGFsc28gbWFrZSBbaW50ZWwgcGFja2FnZXMgcHJdKGh0dHBzOi8v Z2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80MTEzMikgb2Jzb2xldGUu fn4gKHNlZSBSZXF1aXJlbWVudHMgYmVsb3cpDQoNCk1haW50YWluZXIgZm9yIHByZXZpb3VzIGZm bXBlZyg0KSB3YXMgb3JwaGFuZWQsIEkgY2FuIHB1dCBteSBuYW1lIGluIHRoZXJlIGlmIHRoYXQg bWF0dGVycywgdGhvdWdoIEkgZG9uJ3QgZXhhY3RseSBzZWUgbXlzZWxmIGtlZXBpbmcgdXAgb24g ZmZtcGVnLg0KDQpUaGlzIHVwZGF0ZXMgUVQ1IHdoaWNoIGxvb2tzIGxpa2UgaXQgaXMgdXN1YWxs eSBob3N0ZWQgYnkgSm9obm55LiBOb3Qgc3VyZSBpZiB0aGVyZSdzIGFueSByZWFzb24gdG8gc3Rh eSB0aGVyZSBvciB0aGVzZSBzb3VyY2VzIGFyZSBmaW5lLg0KDQojIyMjIyBTVElMTCBGRk1QRUc0 DQoNClRoZXNlIGFyZSBhIG1peCBvZiBlbXVsYXRvcnMsIGdhbWVzIGFuZC9vciBvbGRlciBwYWNr YWdlcy4NCg0KLSBhdHRyYWN0IChtdWx0aXBsZSBwYXRjaGVzIGluIG1hc3RlcikNCi0gYXVkYWNp dHkgICgzLjIueCsgc2hvdWxkIHdvcmsgYnV0IHJlcXVpcmVzIHd4V2lkZ2V0cyBkZXYgMy4xLngp DQotIGNjZXh0cmFjdG9yIChtYXN0ZXIgcGF0Y2hlcz8gbm8gcmVsZWFzZSkNCi0gdmljZQ0KLSBr b2RpDQotIG1sdCAob25seSBkZXAgbGVmdCBpcyBmbG93YmxhZGUpDQotIH5+c3luZmlnIChtbHQp fn4gKHdvcmsgd2l0aCBtbHQ3LCBidW1wIHN5bmZpZ3N0dWRpbykNCi0gdHZoZWFkZW5kDQotIHNz cg0KLSBzcGVrLWFsdGVybmF0aXZlDQotIHBwc3NwcA0KLSBvbGl2ZQ0KLSBtb2MNCi0gbWVkaWFz dHJlYW1lcg0KLSBsaWJleHRyYWN0b3INCi0gaWRqYw0KLSBoZWRnZXdhcnMNCi0gfn5mZm1wZWd0 aHVtYm5haWxlcn5+IChwYXRjaGVzIGZvciBtb3ZpZWRlY29kZXIueHh4IGZpbGVzKQ0KLSB+fmZm bXBlZ3RodW1ic35+IChsYXRlc3QgY29tcGlsZXMpDQotIGRlYWRiZWVmDQotIG9teHBsYXllcg0K LSBxdGF2IChmb3JrIGhhcyBmZm1wZWcgNSBwYXRjaCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9jbWd1 by9RdEFWKQ0KLSBgdmxjYCAodmxjNCB3aWxsIHN1cHBvcnQgZmZtcGVnNSwgdGhlcmUncyBhIHBh dGNoIHRvIGJ1aWxkIDMueCB3aXRoIGZmbXBlZzUgYnV0IGl0IHdpbGwgbGFjayB2YWFwaSkNCi0g YG9zZ2AgKE9wZW5TY2VuZUdyYXBoIHBsdXMgYHhpbmUtbGliYCkNCg0KDQojIyMjIyBIQVZFIE5P VCBCVUlMVCBZRVQNCg0KLSBvbXhwbGF5ZXIgKHJwaSBvbmx5PyBmZm1wZWc0KQ0KLSBrb2RpIChi aWcsIGJ1dCBmZm1wZWc0KQ0KDQoNCiMjIyMjIFVQREFURUQgKGZvciBmZm1wZWc2KQ0KDQotIGJs ZW5kZXI6IHVwZGF0ZSB0byAzLjUuMQ0KLSB1bnBhcGVyOiB1cGRhdGUgdG8gNy4wLjAuDQotIGd1 dmN2aWV3OiB1cGRhdGUgdG8gMi4wLjguDQotIHF0NTogdXBkYXRlIHRvIDUuMTUuOA0KLSBxdDUt d2ViZW5naW5lOiB1cGRhdGUgdG8gNS4xOC4xMw0KLSBzaGlib2tlbjI6IHJldmJ1bXAgZm9yIHF0 NS4xNS44IChwYXRjaCkNCi0gcHl0aG9uMy1weXNpZGUyOiB1cGRhdGUgdG8gNS4xNS44IChwYXRj aCkNCg0KDQojIyMjIyBSZXF1aXJlbWVudHMNCg0KLSBbZ3N0cmVhbWVyIDEuMjIuMl0oaHR0cHM6 Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQyODYxKSAtIGEgZmV3 IHBhY2thZ2VzIHVzZSBmZm1wZWctZGV2ZWwgYW5kIHJlcXVpcmUgYSByZXZidW1wDQoNCi0gW0lu dGVsIFBhY2thZ2VzXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2Vz L3B1bGwvNDExMzIpIC0gZmZtcGVnNCB1c2VzIGRpZmZlcmVudCBsaWJyYXJpZXMgdGhhbiA2IChs aWJtZnggLyBJbnRlbC1NZWRpYVNESyB2cyBvbmx5IG9uZVZQTCB0aGF0IEludGVsIGlzIG1vdmlu ZyB0byksIGJvdGggYXJlIGluY2x1ZGVkIGhlcmUKCkEgcGF0Y2ggZmlsZSBmcm9tIGh0dHBzOi8v Z2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80Mzc2MS5wYXRjaCBpcyBh dHRhY2hlZA== --===============9115888581860980245== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSAyNWFlYzdmMDAzYzcxY2E2NThjMDBlMzdiYzQ3MDdjMzkxYWRjMjE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDE5OjU1OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTE1XSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI2ICsrKysrLS0tCiBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoICAgICAgICAgICAgfCA2MCAtLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAxOCAtLS0tLS0KIC4uLi93b3JrYXJv dW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8IDI4IC0tLS0tLS0tLQogc3JjcGtn cy9mZm1wZWcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgMzEgKysrKystLS0tLQog NSBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAxMzAgZGVsZXRpb25zKC0pCiBkZWxl dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvZmlsZXMvYWx0aXZlYy5wYXRjaAogZGVsZXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9p bnQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3dvcmth cm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaAoKZGlmZiAtLWdpdCBhL2NvbW1vbi9z aGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDg5ZjdlNTMwODFmOC4uOTQ5N2Y2NDk5YWEyIDEw MDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTM5MCwxNSAr MzkwLDIzIEBAIGxpYmlkM3RhZy5zby4wIGxpYmlkM3RhZy0wLjE1LjFiXzEKIGxpYmdpZi5zby43 IGdpZmxpYi01LjEuMF8xCiBsaWJJbWxpYjIuc28uMSBpbWxpYjItMS40LjJfMQogbGlibXAzbGFt ZS5zby4wIGxhbWUtMy45OC4yXzEKLWxpYmF2ZGV2aWNlLnNvLjU4IGxpYmF2ZGV2aWNlLTQuMF8x Ci1saWJhdmZvcm1hdC5zby41OCBsaWJhdmZvcm1hdC00LjBfMQotbGlic3dzY2FsZS5zby41IGxp YnN3c2NhbGUtNC4wXzEKLWxpYnN3cmVzYW1wbGUuc28uMyBsaWJzd3Jlc2FtcGxlLTQuMF8xCi1s aWJhdnJlc2FtcGxlLnNvLjQgbGliYXZyZXNhbXBsZS00LjBfMQotbGlicG9zdHByb2Muc28uNTUg bGlicG9zdHByb2MtNC4wXzEKLWxpYmF2Y29kZWMuc28uNTggbGliYXZjb2RlYy00LjBfMQotbGli YXZ1dGlsLnNvLjU2IGxpYmF2dXRpbC00LjBfMQotbGliYXZmaWx0ZXIuc28uNyBsaWJhdmZpbHRl ci00LjBfMQorbGliYXZkZXZpY2Uuc28uNjAgbGliYXZkZXZpY2UtNi4wXzEKK2xpYmF2Zm9ybWF0 LnNvLjYwIGxpYmF2Zm9ybWF0LTYuMF8xCitsaWJzd3NjYWxlLnNvLjcgbGlic3dzY2FsZS02LjBf MQorbGlic3dyZXNhbXBsZS5zby40IGxpYnN3cmVzYW1wbGUtNi4wXzEKK2xpYnBvc3Rwcm9jLnNv LjU3IGxpYnBvc3Rwcm9jLTYuMF8xCitsaWJhdmNvZGVjLnNvLjYwIGxpYmF2Y29kZWMtNi4wXzEK K2xpYmF2dXRpbC5zby41OCBsaWJhdnV0aWwtNi4wXzEKK2xpYmF2ZmlsdGVyLnNvLjkgbGliYXZm aWx0ZXItNi4wXzEKK2xpYmF2ZGV2aWNlLnNvLjU4IGxpYmF2ZGV2aWNlNC00LjBfMQorbGliYXZm b3JtYXQuc28uNTggbGliYXZmb3JtYXQ0LTQuMF8xCitsaWJzd3NjYWxlLnNvLjUgbGlic3dzY2Fs ZTQtNC4wXzEKK2xpYnN3cmVzYW1wbGUuc28uMyBsaWJzd3Jlc2FtcGxlNC00LjBfMQorbGliYXZy ZXNhbXBsZS5zby40IGxpYmF2cmVzYW1wbGU0LTQuMF8xCitsaWJwb3N0cHJvYy5zby41NSBsaWJw b3N0cHJvYzQtNC4wXzEKK2xpYmF2Y29kZWMuc28uNTggbGliYXZjb2RlYzQtNC4wXzEKK2xpYmF2 dXRpbC5zby41NiBsaWJhdnV0aWw0LTQuMF8xCitsaWJhdmZpbHRlci5zby43IGxpYmF2ZmlsdGVy NC00LjBfMQogbGliU0RMLTEuMi5zby4wIFNETC0xLjIuMTRfMQogbGliU0RMX2ltYWdlLTEuMi5z by4wIFNETF9pbWFnZS0xLjIuMTBfMQogbGlieDI2NC5zby4xNTcgeDI2NC0yMDE5MDUwNy4yMjQ1 XzEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2ZWMucGF0Y2ggYi9zcmNw a2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA5YzU3MjAwNDYzMzIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9maWxl cy9hbHRpdmVjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotcmV2ZXJ0IHNv bWUgYWx0aXZlYyBzcGVjaWZpYyBjaGFuZ2Ugb24gYWxsIHBwYyogZXhjZXB0IHBwYzY0bGUqCi0K LXE2NjogIldlIHNob3VsZCBhbHNvIHRocm93IGluIGEgcmV2ZXJ0IG9mIEZGbXBlZy9GRm1wZWdA M2E1NTdjNSBidXQgb25seQotY29uZGl0aW9uYWxseSwgZm9yIHBwYyogYnV0IG5vdCBwcGM2NGxl KiAodGhlIG5ldyBjb2RlIGlzIHZhbGlkIGZvcgotUE9XRVI4IFZTWCB3aGljaCBMRSB0YXJnZXRz IGFzIGEgYmFzZWxpbmUgYnV0IG5vdCBCRSkiCi0KLQotVGhpcyByZXZlcnRzIGNvbW1pdCAzYTU1 N2M1ZDg4YjdiMTViNTk1NGJhMjc0M2ZlYmIwNTU1NDliNTM2LgotLS0tCi0gbGlic3dzY2FsZS9w cGMveXV2MnJnYl9hbHRpdmVjLmMgfCAyNCArKysrKysrKysrKysrKysrKysrKy0tLS0KLSAxIGZp bGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdp dCBhL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jIGIvbGlic3dzY2FsZS9wcGMveXV2 MnJnYl9hbHRpdmVjLmMKLWluZGV4IDUzNjU0NTI5M2QuLmMxZTI4NTJhZGIgMTAwNjQ0Ci0tLS0g YS9saWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYwotKysrIGIvbGlic3dzY2FsZS9wcGMv eXV2MnJnYl9hbHRpdmVjLmMKLUBAIC0zMDUsNiArMzA1LDkgQEAgc3RhdGljIGludCBhbHRpdmVj XyAjIyBuYW1lKFN3c0NvbnRleHQgKmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAg ICAgXAotICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IFIxLCBHMSwgQjE7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIg UiwgRywgQjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAq eTFpdlAsICp5Mml2UCwgKnVpdlAsICp2aXZQOyAgICAgICAgICAgICAgICAgIFwKLSsgICAgdmVj dG9yIHVuc2lnbmVkIGNoYXIgYWxpZ25fcGVybTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB2ZWN0b3Igc2ln bmVkIHNob3J0IGxDWSAgICAgICA9IGMtPkNZOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBsT1kgICAgICAgPSBjLT5PWTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciBzaWduZWQgc2hv cnQgbENSViAgICAgID0gYy0+Q1JWOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotQEAgLTMzNSwxMyArMzM4LDI2IEBAIHN0YXRpYyBpbnQgYWx0aXZlY18gIyMgbmFtZShTd3ND b250ZXh0ICpjLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW4sICAgICAgICAgIFwKLSAgICAgICAg IHZlY19kc3RzdChvdXRlLCAoMHgwMjAwMDAwMiB8ICgoKHcgKiAzICsgMzIpIC8gMzIpIDw8IDE2 KSksIDEpOyAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgZm9yIChq ID0gMDsgaiA8IHcgLyAxNjsgaisrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLS0gICAgICAgICAgICB5MCA9IHZlY194bCgwLCB5MWkpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgeTFpdlAgPSAo Y29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgeTFpOyAgICAgICAgICAgICAgICAgICAgICAg XAotKyAgICAgICAgICAgIHkyaXZQID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHky aTsgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB1aXZQICA9IChjb25zdCB2 ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB1aTsgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAg ICAgICAgICAgdml2UCAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgdmk7ICAgICAg ICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAg ICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgeTFpKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0rICAgICAgICAgICAgeTAgPSAodmVjdG9yIHVuc2lnbmVkIGNoYXIpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAg ICAgIHZlY19wZXJtKHkxaXZQWzBdLCB5MWl2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgeTEgPSB2ZWNfeGwo MCwgeTJpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot KyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB5MmkpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB5MSA9ICh2ZWN0b3IgdW5zaWdu ZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAg ICAgICAgICAgICAgICAgdmVjX3Blcm0oeTJpdlBbMF0sIHkyaXZQWzFdLCBhbGlnbl9wZXJtKTsg ICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICB1 ID0gKHZlY3RvciBzaWduZWQgY2hhcikgdmVjX3hsKDAsIHVpKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0rICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHVpKTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHUgPSAodmVj dG9yIHNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHVpdlBbMF0sIHVpdlBbMV0sIGFsaWdu X3Blcm0pOyAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAg ICAgICAgICAgIHYgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdmkpOyAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2wo MCwgdmkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAg ICAgdiA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odml2UFswXSwgdml2 UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gICAgICAgICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgdmVj X3N1Yih1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LS0tIAotMi4yNy4wCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0 ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL2FybXY1dGVs LWZsb2F0aW5nLXBvaW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTU1 MTc4Yzc0ZjAuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL2FybXY1 dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAot LS0tIGEvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTEwLTI2IDIxOjAzOjAzLjAwMDAw MDAwMCArMDIwMAotKysrIGIvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTExLTIxIDEx OjA2OjQ5LjYwMjI4NDQyMiArMDEwMAotQEAgLTM5LDYgKzM5LDE1IEBACi0gI2VuZGlmCi0gI2lu Y2x1ZGUgPGZlbnYuaD4KLSAKLSsjaWYgKEZFX0FMTF9FWENFUFQgPT0gMCkKLSsvKiBFLmcuIEFS TSBzb2Z0IGZsb2F0IGRvZXMgbm90IGRlZmluZSB0aGVzZSAqLwotKyNkZWZpbmUgRkVfSU5WQUxJ RCAgICAwCi0rI2RlZmluZSBGRV9ESVZCWVpFUk8gIDAKLSsjZGVmaW5lIEZFX09WRVJGTE9XICAg MAotKyNkZWZpbmUgRkVfVU5ERVJGTE9XICAwCi0rI2RlZmluZSBGRV9JTkVYQUNUICAgIDAKLSsj ZW5kaWYKLSsKLSAjaWYgQ09ORklHX0xJQkZPTlRDT05GSUcKLSAjaW5jbHVkZSA8Zm9udGNvbmZp Zy9mb250Y29uZmlnLmg+Ci0gI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZy9wYXRj aGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaCBiL3NyY3BrZ3MvZmZt cGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGUzZjY4YTQxNWIuLjAwMDAwMDAwMDAwMAotLS0g YS9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1 Zy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gODExZDI5MDg0NDIw NmZjNzNkYzM5YzNlNWI2N2Q1ZDg5NWJhZWRmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZy b206IFJhaW5lciBIb2NoZWNrZXIgPGZlcm5ldG1lbnRhQG9ubGluZS5kZT4KLURhdGU6IFNhdCwg MjYgSmFuIDIwMTkgMTk6NDg6MzUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZjb2RlYy92YWFw aV9oMjY0OiBza2lwIGRlY29kZSBpZiBwaWMgaGFzIG5vIHNsaWNlcwotCi1UaGlzIGZpeGVzIC8g d29ya2Fyb3VuZHMgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9 MTA1MzY4LgotSXQgd2FzIGhpdCBmcmVxdWVudGx5IHdoZW4gd2F0Y2hpbmcgaDI2NCBjaGFubmVs cyByZWNlaXZlZCB2aWEgRFZCLVguCi1Db3JyZXNwb25kaW5nIGtvZGkgYnVnOiBodHRwczovL2dp dGh1Yi5jb20veGJtYy94Ym1jL2lzc3Vlcy8xNTcwNAotLS0tCi0gbGliYXZjb2RlYy92YWFwaV9o MjY0LmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZm IC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMgYi9saWJhdmNvZGVjL3ZhYXBpX2gyNjQu YwotaW5kZXggNTg1NDU4N2EyNTUuLmYxMmZkYzQ1N2E0IDEwMDY0NAotLS0tIGEvbGliYXZjb2Rl Yy92YWFwaV9oMjY0LmMKLSsrKyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jCi1AQCAtMzE3LDYg KzMxNywxMSBAQCBzdGF0aWMgaW50IHZhYXBpX2gyNjRfZW5kX2ZyYW1lKEFWQ29kZWNDb250ZXh0 ICphdmN0eCkKLSAgICAgSDI2NFNsaWNlQ29udGV4dCAqc2wgPSAmaC0+c2xpY2VfY3R4WzBdOwot ICAgICBpbnQgcmV0OwotIAotKyAgICBpZiAocGljLT5uYl9zbGljZXMgPT0gMCkgewotKyAgICAg ICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsKLSsgICAgICAgIGdvdG8gZmluaXNoOwotKyAg ICB9Ci0rCi0gICAgIHJldCA9IGZmX3ZhYXBpX2RlY29kZV9pc3N1ZShhdmN0eCwgcGljKTsKLSAg ICAgaWYgKHJldCA8IDApCi0gICAgICAgICBnb3RvIGZpbmlzaDsKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZmZtcGVnL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUKaW5kZXggMjNhM2Q1 Yzk5NjdiLi4zZDk5ZTUxNzM2OTcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZmZtcGVnL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvZmZtcGVnL3RlbXBsYXRlCkBAIC0xLDE1ICsxLDE1IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdmZm1wZWcnCiAjIGF1ZGFjaXR5IGFsc28gbmVlZHMgdG8gYmUgYnVtcGVk IHdoZW4gYSBuZXcgZmZtcGVnIHZlcnNpb24gYnVtcHMgbGliYXZmb3JtYXQncyBzb25hbWUhCiBw a2duYW1lPWZmbXBlZwotdmVyc2lvbj00LjQuMwotcmV2aXNpb249MgordmVyc2lvbj02LjAKK3Jl dmlzaW9uPTEKIHNob3J0X2Rlc2M9IkRlY29kaW5nLCBlbmNvZGluZyBhbmQgc3RyZWFtaW5nIHNv ZnR3YXJlIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxp Y2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93d3cuZmZtcGVnLm9y ZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0ZGbXBlZy9G Rm1wZWcvbWFzdGVyL0NoYW5nZWxvZyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly93d3cuZmZtcGVnLm9y Zy9yZWxlYXNlcy9mZm1wZWctJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT02YzViNmMxOTVl NjE1MzQ3NjZhMGI1ZmUxNmFjYzkxOTE3MGM4ODMzNjI2MTI4MTZkMGExYzdmNGY5NDcwMDZlCitj aGVja3N1bT01N2JlODdjMjJkOWI0OWMxMTJiNmQyNGJjNjdkNDI1MDg2NjBlNmI3MThiM2RiODlj NDRlNDdlMjg5MTM3MDgyCiAKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBwZXJsIHlhc20i CiBtYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBiemlwMi1kZXZlbCBmcmVldHlwZS1kZXZlbCBhbHNh LWxpYi1kZXZlbCBsaWJYZml4ZXMtZGV2ZWwKQEAgLTI2LDEyICsyNiwxMyBAQCBtYWtlZGVwZW5k cz0iemxpYi1kZXZlbCBiemlwMi1kZXZlbCBmcmVldHlwZS1kZXZlbCBhbHNhLWxpYi1kZXZlbCBs aWJYZml4ZXMtZGV2ZQogICQodm9wdF9pZiB3ZWJwIGxpYndlYnAtZGV2ZWwpICQodm9wdF9pZiBz b2ZhIGxpYm15c29mYS1kZXZlbCkKICAkKHZvcHRfaWYgZHJtIGxpYmRybS1kZXZlbCkgJCh2b3B0 X2lmIHN2dGF2MSBsaWJzdnQtYXYxLWRldmVsKQogICQodm9wdF9pZiBzcnQgc3J0LWRldmVsKSAk KHZvcHRfaWYgcmlzdCBsaWJyaXN0LWRldmVsKQotICQodm9wdF9pZiB2dWxrYW4gJ3Z1bGthbi1s b2FkZXIgVnVsa2FuLUhlYWRlcnMnKQorICQodm9wdF9pZiB2dWxrYW4gJ3Z1bGthbi1sb2FkZXIg VnVsa2FuLUhlYWRlcnMgVnVsa2FuLVRvb2xzIFZ1bGthbi1WYWxpZGF0aW9uTGF5ZXJzJykKKyAk KHZvcHRfaWYgb25ldnBsICdvbmV2cGwgb25ldnBsLWRldmVsJykKICAkKHZvcHRfaWYgbnZlbmMg bnYtY29kZWMtaGVhZGVycykgJCh2b3B0X2lmIG52ZGVjIG52LWNvZGVjLWhlYWRlcnMpIgogZGVw ZW5kcz0iZmZwbGF5Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgogCiBidWlsZF9vcHRpb25zPSJ4 MjY1IHY0bDIgdmFhcGkgdmRwYXUgdnB4IGZka19hYWMgYW9tIG52ZW5jIHNuZGlvIHB1bHNlYXVk aW8KLSBkYXYxZCB6aW1nIHdlYnAgc29mYSB2dWxrYW4gZHJtIHN2dGF2MSBzcnQgcmlzdCBudmRl YyIKKyBkYXYxZCB6aW1nIHdlYnAgc29mYSB2dWxrYW4gZHJtIHN2dGF2MSBzcnQgcmlzdCBudmRl YyBvbmV2cGwiCiBidWlsZF9vcHRpb25zX2RlZmF1bHQ9IngyNjUgdjRsMiB2cHggYW9tIHNuZGlv IHB1bHNlYXVkaW8gZGF2MWQgd2VicCB2dWxrYW4gZHJtIHNydCByaXN0IgogZGVzY19vcHRpb25f c3J0PSJFbmFibGUgc3VwcG9ydCBmb3IgU1JUIChTZWN1cmUsIFJlbGlhYmxlLCBUcmFuc3BvcnQp IgogZGVzY19vcHRpb25fcmlzdD0iRW5hYmxlIHN1cHBvcnQgZm9yIFJJU1QgKFJlbGlhYmxlIElu dGVybmV0IFN0cmVhbSBUcmFuc3BvcnQpIgpAQCAtMzksNyArNDAsOCBAQCBkZXNjX29wdGlvbl9z b2ZhPSJFbmFibGUgc3VwcG9ydCBmb3IgQUVTIFNPRkEiCiBkZXNjX29wdGlvbl93ZWJwPSJFbmFi bGUgc3VwcG9ydCBmb3IgV2ViUCIKIAogY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCi0J aTY4Nip8eDg2XzY0KikgYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5j IG52ZGVjIjs7CisJaTY4NiopIGJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSBu dmVuYyBudmRlYyI7OworCXg4Nl82NCopIGJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2 ZHBhdSBudmVuYyBudmRlYyBvbmV2cGwiOzsKIAlwcGM2NCopIGJ1aWxkX29wdGlvbnNfZGVmYXVs dCs9IiB2YWFwaSB2ZHBhdSI7OwogCW1pcHMqKSBDRkxBR1M9Ii1tbmFuPWxlZ2FjeSI7OwogZXNh YwpAQCAtMTE0LDE4ICsxMTYsMTkgQEAgZG9fY29uZmlndXJlKCkgewogCQkkKHZvcHRfZW5hYmxl IHgyNjUgbGlieDI2NSkgXAogCQkkKHZvcHRfZW5hYmxlIHY0bDIgbGlidjRsMikgXAogCQkkKHZv cHRfZW5hYmxlIGFvbSBsaWJhb20pICQodm9wdF9lbmFibGUgdmFhcGkpICQodm9wdF9lbmFibGUg dmRwYXUpIFwKLQkJLS1lbmFibGUtbGliYnMyYiAtLWVuYWJsZS1hdnJlc2FtcGxlIC0tZW5hYmxl LWxpYnZpZHN0YWIgXAorCQktLWVuYWJsZS1saWJiczJiIC0tZW5hYmxlLWxpYnZpZHN0YWIgXAog CQkkKHZvcHRfZW5hYmxlIGRhdjFkIGxpYmRhdjFkKSBcCiAJCSQodm9wdF9lbmFibGUgemltZyBs aWJ6aW1nKSBcCiAJCSQodm9wdF9lbmFibGUgd2VicCBsaWJ3ZWJwKSBcCiAJCSQodm9wdF9lbmFi bGUgc29mYSBsaWJteXNvZmEpIFwKIAkJJCh2b3B0X2VuYWJsZSB2dWxrYW4pIFwKKwkJJCh2b3B0 X2VuYWJsZSBvbmV2cGwgbGlidnBsKSBcCiAJCSQodm9wdF9lbmFibGUgZHJtIGxpYmRybSkgXAog CQkkKHZvcHRfZW5hYmxlIHN2dGF2MSBsaWJzdnRhdjEpIFwKIAkJJCh2b3B0X2VuYWJsZSBzcnQg bGlic3J0KSBcCiAJCSQodm9wdF9lbmFibGUgcmlzdCBsaWJyaXN0KSBcCi0JCSQodm9wdF9pZiBu dmVuYyAnLS1lbmFibGUtbnZlbmMnKSBcCi0JCSQodm9wdF9pZiBudmRlYyAnLS1lbmFibGUtbnZk ZWMnKQorCQkkKHZvcHRfZW5hYmxlIG52ZW5jIG52ZW5jKSBcCisJCSQodm9wdF9lbmFibGUgbnZk ZWMgbnZkZWMpCiB9CiBkb19idWlsZCgpIHsKIAltYWtlICR7bWFrZWpvYnN9CkBAIC0xNDgsMTAg KzE1MSw4IEBAIGxpYmF2ZGV2aWNlX3BhY2thZ2UoKSB7CiAJfQogfQogbGliYXZyZXNhbXBsZV9w YWNrYWdlKCkgewotCXNob3J0X2Rlc2M9IkZGbXBlZyBhdWRpbyByZXNhbXBsaW5nIGxpYnJhcnki Ci0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmF2cmVzYW1wbGUuc28uKiIK LQl9CisJc2hvcnRfZGVzYz0iUGFja2FnZSBkZXByZWNhdGVkLCByZW1vdmFsIG5lZWRlZCIKKwli dWlsZF9zdHlsZT1tZXRhCiB9CiBsaWJhdmZvcm1hdF9wYWNrYWdlKCkgewogCXNob3J0X2Rlc2M9 IkZGbXBlZyBmaWxlIGZvcm1hdCBsaWJyYXJ5IgpAQCAtMTk4LDkgKzE5OSw5IEBAIGZmbXBlZy1k ZXZlbF9wYWNrYWdlKCkgewogCQlsaWJhdmZpbHRlcj49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQog CQlsaWJwb3N0cHJvYz49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQogCQlsaWJzd3NjYWxlPj0ke3Zl cnNpb259XyR7cmV2aXNpb259Ci0JCWxpYnN3cmVzYW1wbGU+PSR7dmVyc2lvbn1fJHtyZXZpc2lv bn0KLQkJbGliYXZyZXNhbXBsZT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwkJbGlic3dyZXNh bXBsZT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1l bnQgZmlsZXMiCisJY29uZmxpY3RzPSJmZm1wZWc0LWRldmVsIgogCXBrZ19pbnN0YWxsKCkgewog CQl2bW92ZSB1c3IvaW5jbHVkZQogCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZwoKRnJvbSAxY2Ey MjA0ZmU5ZDU4MTlkNDY5ZmYyMWMwNjM0MzAxODU4MzgzN2Y4IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDE5OjU2OjIyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDIvMTE1XSBOZXcgcGFja2FnZTog ZmZtcGVnNC00LjQuMy4KCi0tLQogc3JjcGtncy9mZm1wZWc0LWRldmVsICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRpdmVjLnBhdGNoICAg ICAgICAgICB8ICA2MCArKysrKwogLi4uL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQu cGF0Y2ggICAgIHwgIDE4ICsrCiAuLi4vd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVn LnBhdGNoICAgfCAgMjggKysrCiBzcmNwa2dzL2ZmbXBlZzQvdGVtcGxhdGUgICAgICAgICAgICAg ICAgICAgICAgfCAyMTcgKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2xpYmF2Y29kZWM0ICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJhdmRldmljZTQgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZmaWx0ZXI0ICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2Zm9ybWF0NCAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJhdnJlc2FtcGxlNCAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZ1dGlsNCAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYnBvc3Rwcm9jNCAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJzd3Jlc2FtcGxlNCAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGlic3dzY2FsZTQgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiAxNCBmaWxlcyBjaGFuZ2VkLCAzMzMgaW5zZXJ0aW9ucygrKQogY3Jl YXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvZmZtcGVnNC1kZXZlbAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRpdmVjLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2Et cmVhZGVvbi12YWFwaS1idWcucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBl ZzQvdGVtcGxhdGUKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYmF2Y29kZWM0CiBjcmVh dGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdmRldmljZTQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBz cmNwa2dzL2xpYmF2ZmlsdGVyNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZmb3Jt YXQ0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdnJlc2FtcGxlNAogY3JlYXRlIG1v ZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZ1dGlsNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3Mv bGlicG9zdHByb2M0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJzd3Jlc2FtcGxlNAog Y3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGlic3dzY2FsZTQKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2ZmbXBlZzQtZGV2ZWwgYi9zcmNwa2dzL2ZmbXBlZzQtZGV2ZWwKbmV3IGZpbGUgbW9kZSAx MjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmIKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL2ZmbXBlZzQtZGV2ZWwKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRp dmVjLnBhdGNoIGIvc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45YzU3MjAwNDYzMzIKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0aXZlYy5wYXRjaApAQCAtMCwwICsxLDYw IEBACityZXZlcnQgc29tZSBhbHRpdmVjIHNwZWNpZmljIGNoYW5nZSBvbiBhbGwgcHBjKiBleGNl cHQgcHBjNjRsZSoKKworcTY2OiAiV2Ugc2hvdWxkIGFsc28gdGhyb3cgaW4gYSByZXZlcnQgb2Yg RkZtcGVnL0ZGbXBlZ0AzYTU1N2M1IGJ1dCBvbmx5Citjb25kaXRpb25hbGx5LCBmb3IgcHBjKiBi dXQgbm90IHBwYzY0bGUqICh0aGUgbmV3IGNvZGUgaXMgdmFsaWQgZm9yCitQT1dFUjggVlNYIHdo aWNoIExFIHRhcmdldHMgYXMgYSBiYXNlbGluZSBidXQgbm90IEJFKSIKKworCitUaGlzIHJldmVy dHMgY29tbWl0IDNhNTU3YzVkODhiN2IxNWI1OTU0YmEyNzQzZmViYjA1NTU0OWI1MzYuCistLS0K KyBsaWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYyB8IDI0ICsrKysrKysrKysrKysrKysr KysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQorCitkaWZmIC0tZ2l0IGEvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMgYi9saWJz d3NjYWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYworaW5kZXggNTM2NTQ1MjkzZC4uYzFlMjg1MmFk YiAxMDA2NDQKKy0tLSBhL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCisrKysgYi9s aWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYworQEAgLTMwNSw2ICszMDUsOSBAQCBzdGF0 aWMgaW50IGFsdGl2ZWNfICMjIG5hbWUoU3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hh ciAqKmluLCAgICAgICAgICBcCisgICAgIHZlY3RvciBzaWduZWQgc2hvcnQgUjEsIEcxLCBCMTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICB2ZWN0b3Ig dW5zaWduZWQgY2hhciBSLCBHLCBCOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGNvbnN0IHZlY3RvciB1 bnNpZ25lZCBjaGFyICp5MWl2UCwgKnkyaXZQLCAqdWl2UCwgKnZpdlA7ICAgICAgICAgICAgICAg ICAgXAorKyAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBhbGlnbl9wZXJtOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgIHZlY3RvciBzaWduZWQgc2hvcnQgbENZICAgICAgID0gYy0+Q1k7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxPWSAgICAg ICA9IGMtPk9ZOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgdmVj dG9yIHNpZ25lZCBzaG9ydCBsQ1JWICAgICAgPSBjLT5DUlY7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCitAQCAtMzM1LDEzICszMzgsMjYgQEAgc3RhdGljIGludCBhbHRpdmVj XyAjIyBuYW1lKFN3c0NvbnRleHQgKmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAg ICAgXAorICAgICAgICAgdmVjX2RzdHN0KG91dGUsICgweDAyMDAwMDAyIHwgKCgodyAqIDMgKyAz MikgLyAzMikgPDwgMTYpKSwgMSk7ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgICAgICBmb3IgKGogPSAwOyBqIDwgdyAvIDE2OyBqKyspIHsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIHkwID0gdmVjX3hsKDAsIHkxaSk7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAg ICAgICB5MWl2UCA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB5MWk7ICAgICAgICAg ICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgeTJpdlAgPSAoY29uc3QgdmVjdG9yIHVuc2ln bmVkIGNoYXIgKikgeTJpOyAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHVp dlAgID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHVpOyAgICAgICAgICAgICAgICAg ICAgICAgIFwKKysgICAgICAgICAgICB2aXZQICA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hh ciAqKSB2aTsgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB5MWkpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB5MCA9ICh2ZWN0b3IgdW5z aWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg ICAgICAgICAgICAgICAgICAgdmVjX3Blcm0oeTFpdlBbMF0sIHkxaXZQWzFdLCBhbGlnbl9wZXJt KTsgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAg ICB5MSA9IHZlY194bCgwLCB5MmkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisrICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkyaSk7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHkxID0g KHZlY3RvciB1bnNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKysgICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh5Mml2UFswXSwgeTJpdlBbMV0s IGFsaWduX3Blcm0pOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor LSAgICAgICAgICAgIHUgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdWkpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2 c2woMCwgdWkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAg ICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odWl2UFswXSwg dWl2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCistICAgICAgICAgICAgdiA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgw LCB2aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIGFsaWduX3Bl cm0gPSB2ZWNfbHZzbCgwLCB2aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKysgICAgICAgICAgICB2ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICB2ZWNfcGVy bSh2aXZQWzBdLCB2aXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hh cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg ICAgICAgICAgICB2ZWNfc3ViKHUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorLS0gCisyLjI3LjAKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0 L3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZzQv cGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjlhNTUxNzhjNzRmMAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvZmZtcGVnNC9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCkBAIC0w LDAgKzEsMTggQEAKKy0tLSBhL2xpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMJMjAxNy0xMC0yNiAy MTowMzowMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBiL2xpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMJ MjAxNy0xMS0yMSAxMTowNjo0OS42MDIyODQ0MjIgKzAxMDAKK0BAIC0zOSw2ICszOSwxNSBAQAor ICNlbmRpZgorICNpbmNsdWRlIDxmZW52Lmg+CisgCisrI2lmIChGRV9BTExfRVhDRVBUID09IDAp CisrLyogRS5nLiBBUk0gc29mdCBmbG9hdCBkb2VzIG5vdCBkZWZpbmUgdGhlc2UgKi8KKysjZGVm aW5lIEZFX0lOVkFMSUQgICAgMAorKyNkZWZpbmUgRkVfRElWQllaRVJPICAwCisrI2RlZmluZSBG RV9PVkVSRkxPVyAgIDAKKysjZGVmaW5lIEZFX1VOREVSRkxPVyAgMAorKyNkZWZpbmUgRkVfSU5F WEFDVCAgICAwCisrI2VuZGlmCisrCisgI2lmIENPTkZJR19MSUJGT05UQ09ORklHCisgI2luY2x1 ZGUgPGZvbnRjb25maWcvZm9udGNvbmZpZy5oPgorICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9mZm1wZWc0L3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNo IGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGkt YnVnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDBlM2Y2 OGE0MTViCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvd29ya2Fy b3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20g ODExZDI5MDg0NDIwNmZjNzNkYzM5YzNlNWI2N2Q1ZDg5NWJhZWRmOCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb206IFJhaW5lciBIb2NoZWNrZXIgPGZlcm5ldG1lbnRhQG9ubGluZS5kZT4K K0RhdGU6IFNhdCwgMjYgSmFuIDIwMTkgMTk6NDg6MzUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0g YXZjb2RlYy92YWFwaV9oMjY0OiBza2lwIGRlY29kZSBpZiBwaWMgaGFzIG5vIHNsaWNlcworCitU aGlzIGZpeGVzIC8gd29ya2Fyb3VuZHMgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93 X2J1Zy5jZ2k/aWQ9MTA1MzY4LgorSXQgd2FzIGhpdCBmcmVxdWVudGx5IHdoZW4gd2F0Y2hpbmcg aDI2NCBjaGFubmVscyByZWNlaXZlZCB2aWEgRFZCLVguCitDb3JyZXNwb25kaW5nIGtvZGkgYnVn OiBodHRwczovL2dpdGh1Yi5jb20veGJtYy94Ym1jL2lzc3Vlcy8xNTcwNAorLS0tCisgbGliYXZj b2RlYy92YWFwaV9oMjY0LmMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9u cygrKQorCitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMgYi9saWJhdmNvZGVj L3ZhYXBpX2gyNjQuYworaW5kZXggNTg1NDU4N2EyNTUuLmYxMmZkYzQ1N2E0IDEwMDY0NAorLS0t IGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKKysrKyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5j CitAQCAtMzE3LDYgKzMxNywxMSBAQCBzdGF0aWMgaW50IHZhYXBpX2gyNjRfZW5kX2ZyYW1lKEFW Q29kZWNDb250ZXh0ICphdmN0eCkKKyAgICAgSDI2NFNsaWNlQ29udGV4dCAqc2wgPSAmaC0+c2xp Y2VfY3R4WzBdOworICAgICBpbnQgcmV0OworIAorKyAgICBpZiAocGljLT5uYl9zbGljZXMgPT0g MCkgeworKyAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsKKysgICAgICAgIGdvdG8g ZmluaXNoOworKyAgICB9CisrCisgICAgIHJldCA9IGZmX3ZhYXBpX2RlY29kZV9pc3N1ZShhdmN0 eCwgcGljKTsKKyAgICAgaWYgKHJldCA8IDApCisgICAgICAgICBnb3RvIGZpbmlzaDsKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0 ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU3MzZjMjA1MzcxZAot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZQpAQCAtMCwwICsxLDIx NyBAQAorIyBUZW1wbGF0ZSBmaWxlIGZvciAnZmZtcGVnNCcKKyMgYXVkYWNpdHkgYWxzbyBuZWVk cyB0byBiZSBidW1wZWQgd2hlbiBhIG5ldyBmZm1wZWcgdmVyc2lvbiBidW1wcyBsaWJhdmZvcm1h dCdzIHNvbmFtZSEKK3BrZ25hbWU9ZmZtcGVnNAordmVyc2lvbj00LjQuMworcmV2aXNpb249MQor c2hvcnRfZGVzYz0iRGVjb2RpbmcsIGVuY29kaW5nIGFuZCBzdHJlYW1pbmcgc29mdHdhcmUgLSBm Zm1wZWc0IGxpYnJhcmllcyBvbmx5IgorbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lk bGludXgub3JnPiIKK2xpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCitob21lcGFnZT0iaHR0cHM6 Ly93d3cuZmZtcGVnLm9yZyIKK2NoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRl bnQuY29tL0ZGbXBlZy9GRm1wZWcvbWFzdGVyL0NoYW5nZWxvZyIKK2Rpc3RmaWxlcz0iaHR0cHM6 Ly93d3cuZmZtcGVnLm9yZy9yZWxlYXNlcy9mZm1wZWctJHt2ZXJzaW9ufS50YXIueHoiCitjaGVj a3N1bT02YzViNmMxOTVlNjE1MzQ3NjZhMGI1ZmUxNmFjYzkxOTE3MGM4ODMzNjI2MTI4MTZkMGEx YzdmNGY5NDcwMDZlCisKK2hvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBwZXJsIHlhc20iCitt YWtlZGVwZW5kcz0iemxpYi1kZXZlbCBiemlwMi1kZXZlbCBmcmVldHlwZS1kZXZlbCBhbHNhLWxp Yi1kZXZlbCBsaWJYZml4ZXMtZGV2ZWwKKyBsaWJYZXh0LWRldmVsIGxpYlh2TUMtZGV2ZWwgbGli eGNiLWRldmVsIGxhbWUtZGV2ZWwgbGlidGhlb3JhLWRldmVsCisgbGlidm9yYmlzLWRldmVsIHgy NjQtZGV2ZWwgeHZpZGNvcmUtZGV2ZWwgamFjay1kZXZlbCBTREwyLWRldmVsCisgbGliY2Rpby1w YXJhbm9pYS1kZXZlbCBsaWJydG1wLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgZ251dGxzLWRldmVs Cisgc3BlZXgtZGV2ZWwgY2VsdC1kZXZlbCBoYXJmYnV6ei1kZXZlbCBsaWJhc3MtZGV2ZWwgb3B1 cy1kZXZlbCBvY2wtaWNkLWRldmVsCisgbGliYnMyYi1kZXZlbCBsaWJ2aWRzdGFiLWRldmVsICQo dm9wdF9pZiBwdWxzZWF1ZGlvIHB1bHNlYXVkaW8tZGV2ZWwpCisgJCh2b3B0X2lmIHZhYXBpIGxp YnZhLWRldmVsKSAkKHZvcHRfaWYgdmRwYXUgbGlidmRwYXUtZGV2ZWwpCisgJCh2b3B0X2lmIHgy NjUgeDI2NS1kZXZlbCkgJCh2b3B0X2lmIHY0bDIgdjRsLXV0aWxzLWRldmVsKQorICQodm9wdF9p ZiBmZGtfYWFjIGZkay1hYWMtZGV2ZWwpICQodm9wdF9pZiB2cHggbGlidnB4LWRldmVsKQorICQo dm9wdF9pZiBhb20gbGliYW9tLWRldmVsKSAkKHZvcHRfaWYgc25kaW8gc25kaW8tZGV2ZWwpCisg JCh2b3B0X2lmIGRhdjFkIGxpYmRhdjFkLWRldmVsKSAkKHZvcHRfaWYgemltZyB6aW1nLWRldmVs KQorICQodm9wdF9pZiB3ZWJwIGxpYndlYnAtZGV2ZWwpICQodm9wdF9pZiBzb2ZhIGxpYm15c29m YS1kZXZlbCkKKyAkKHZvcHRfaWYgZHJtIGxpYmRybS1kZXZlbCkgJCh2b3B0X2lmIHN2dGF2MSBs aWJzdnQtYXYxLWRldmVsKQorICQodm9wdF9pZiBzcnQgc3J0LWRldmVsKSAkKHZvcHRfaWYgcmlz dCBsaWJyaXN0LWRldmVsKQorICQodm9wdF9pZiB2dWxrYW4gJ3Z1bGthbi1sb2FkZXIgVnVsa2Fu LUhlYWRlcnMnKQorICQodm9wdF9pZiBtZnggJ2xpYm1meCBsaWJtZngtZGV2ZWwnKQorICQodm9w dF9pZiBudmVuYyBudi1jb2RlYy1oZWFkZXJzKSAkKHZvcHRfaWYgbnZkZWMgbnYtY29kZWMtaGVh ZGVycykiCisKK2J1aWxkX29wdGlvbnM9IngyNjUgdjRsMiB2YWFwaSB2ZHBhdSB2cHggZmRrX2Fh YyBhb20gbnZlbmMgc25kaW8gcHVsc2VhdWRpbworIGRhdjFkIHppbWcgd2VicCBzb2ZhIHZ1bGth biBkcm0gc3Z0YXYxIHNydCByaXN0IG52ZGVjIG1meCIKK2J1aWxkX29wdGlvbnNfZGVmYXVsdD0i eDI2NSB2NGwyIHZweCBhb20gc25kaW8gcHVsc2VhdWRpbyBkYXYxZCB3ZWJwIHZ1bGthbiBkcm0g c3J0IHJpc3QiCisKK2Rlc2Nfb3B0aW9uX3NydD0iRW5hYmxlIHN1cHBvcnQgZm9yIFNSVCAoU2Vj dXJlLCBSZWxpYWJsZSwgVHJhbnNwb3J0KSIKK2Rlc2Nfb3B0aW9uX3Jpc3Q9IkVuYWJsZSBzdXBw b3J0IGZvciBSSVNUIChSZWxpYWJsZSBJbnRlcm5ldCBTdHJlYW0gVHJhbnNwb3J0KSIKK2Rlc2Nf b3B0aW9uX3NvZmE9IkVuYWJsZSBzdXBwb3J0IGZvciBBRVMgU09GQSIKK2Rlc2Nfb3B0aW9uX3dl YnA9IkVuYWJsZSBzdXBwb3J0IGZvciBXZWJQIgorCitjYXNlICIkWEJQU19UQVJHRVRfTUFDSElO RSIgaW4KKwlpNjg2KikgYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5j IG52ZGVjIjs7CisJeDg2XzY0KikgYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1 IG1meCBudmVuYyBudmRlYyI7OworCXBwYzY0KikgYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZh YXBpIHZkcGF1Ijs7CisJbWlwcyopIENGTEFHUz0iLW1uYW49bGVnYWN5Ijs7Citlc2FjCisKK2lm IFsgIiRYQlBTX1RBUkdFVF9XT1JEU0laRSIgIT0gIjMyIiBdOyB0aGVuCisJYnVpbGRfb3B0aW9u c19kZWZhdWx0Kz0iIHN2dGF2MSIKK2ZpCisKK2lmIFsgIiRYQlBTX1RBUkdFVF9OT19BVE9NSUM4 IiBdOyB0aGVuCisJbWFrZWRlcGVuZHMrPSIgbGliYXRvbWljLWRldmVsIgorZmkKKworX2FwcGx5 X3BhdGNoKCkgeworCWxvY2FsIGFyZ3M9IiQxIiBwbmFtZT0iJChiYXNlbmFtZSAkMikiCisKKwlp ZiBbICEgLWYgIi4ke3BuYW1lfV9kb25lIiBdOyB0aGVuCisJCXBhdGNoIC1OICRhcmdzIC1pICQy CisJCXRvdWNoIC4ke3BuYW1lfV9kb25lCisJZmkKK30KKworcG9zdF9wYXRjaCgpIHsKKwljYXNl ICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJcHBjNjRsZSopIDs7CisJCXBwYyopIF9hcHBs eV9wYXRjaCAtcDEgJHtGSUxFU0RJUn0vYWx0aXZlYy5wYXRjaCA7OworCWVzYWMKK30KKworZG9f Y29uZmlndXJlKCkgeworCSMgRml4IGdjYyBvbiB4ODZfNjQtbXVzbCBvbmx5CisJaWYgWyAiJFhC UFNfVEFSR0VUX01BQ0hJTkUiID0gIng4Nl82NC1tdXNsIiBdOyB0aGVuCisJCXNlZCAtaSBjb25m aWd1cmUgLWUgInM7X2NmbGFnc19zcGVlZD0nLU8zJztfY2ZsYWdzX3NwZWVkPSctTzInOyIKKwlm aQorCisJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCisJCWNhc2UgIiRYQlBTX1RBUkdFVF9N QUNISU5FIiBpbgorCQkJYXJtKikgX2FyY2g9ImFybSI7OworCQkJYWFyY2g2NCopIF9hcmNoPSJh YXJjaDY0Ijs7CisJCQltaXBzKikgX2FyY2g9Im1pcHMiOzsKKwkJCXBwYzY0KikgX2FyY2g9InBw YzY0Ijs7CisJCQlwcGMqKSBfYXJjaD0icHBjIjs7CisJCQkqKSBfYXJjaD0iJHtYQlBTX1RBUkdF VF9NQUNISU5FJSUtbXVzbH0iOzsKKwkJZXNhYworCisJCV9hcmdzKz0iIC0tZW5hYmxlLWNyb3Nz LWNvbXBpbGUKKwkJCS0tc3lzcm9vdD0kWEJQU19DUk9TU19CQVNFCisJCQktLWNyb3NzLXByZWZp eD0ke1hCUFNfQ1JPU1NfVFJJUExFVH0tCisJCQktLXRhcmdldC1vcz1saW51eCAtLWFyY2g9JHtf YXJjaH0iCisJZmkKKworCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCQlwcGN8cHBj LW11c2wpIF9hcmdzKz0iIC0tZGlzYWJsZS1hbHRpdmVjIjs7CisJZXNhYworCisJaWYgWyAiJFhC UFNfVEFSR0VUX05PX0FUT01JQzgiIF07IHRoZW4KKwkJX2FyZ3MrPSIgLS1leHRyYS1saWJzPS1s YXRvbWljIgorCWZpCisKKwkuL2NvbmZpZ3VyZSAtLXByZWZpeD0vdXNyIC0tZGlzYWJsZS1kZWJ1 ZyAtLWVuYWJsZS1ncGwgLS1lbmFibGUtZ251dGxzIFwKKwkJLS1kaXNhYmxlLXN0cmlwcGluZyBc CisJCS0tZW5hYmxlLWxpYmNkaW8gLS1lbmFibGUtdmVyc2lvbjMgLS1lbmFibGUtcnVudGltZS1j cHVkZXRlY3QgXAorCQktLWVuYWJsZS1saWJtcDNsYW1lIC0tZW5hYmxlLWxpYnZvcmJpcyAtLWVu YWJsZS1saWJ4dmlkIFwKKwkJLS1lbmFibGUtbGlieDI2NCAkKHZvcHRfZW5hYmxlIHZweCBsaWJ2 cHgpIC0tZW5hYmxlLWxpYnRoZW9yYSBcCisJCS0tZW5hYmxlLXNoYXJlZCAtLWVuYWJsZS1zdGF0 aWMgLS1lbmFibGUtbGlieGNiIFwKKwkJJCh2b3B0X2VuYWJsZSBwdWxzZWF1ZGlvIGxpYnB1bHNl KSAtLWVuYWJsZS1saWJmcmVldHlwZSAtLWVuYWJsZS1saWJtb2RwbHVnIFwKKwkJLS1lbmFibGUt bGlic3BlZXggLS1lbmFibGUtbGliY2VsdCAtLWVuYWJsZS1saWJhc3MgXAorCQktLWVuYWJsZS1s aWJvcHVzIC0tZW5hYmxlLWxpYnJ0bXAgLS1lbmFibGUtbGliamFjayBcCisJCSQodm9wdF9pZiBm ZGtfYWFjICctLWVuYWJsZS1ub25mcmVlIC0tZW5hYmxlLWxpYmZkay1hYWMnKSBcCisJCS0tZGlz YWJsZS1saWJvcGVuY29yZV9hbXJuYiAtLWRpc2FibGUtbGlib3BlbmNvcmVfYW1yd2IgXAorCQkt LWRpc2FibGUtbGlib3BlbmpwZWcgXAorCQktLWVuYWJsZS1wb3N0cHJvYyAtLWVuYWJsZS1vcGVu Y2wgJHtfYXJnc30gXAorCQkkKHZvcHRfZW5hYmxlIHgyNjUgbGlieDI2NSkgXAorCQkkKHZvcHRf ZW5hYmxlIHY0bDIgbGlidjRsMikgXAorCQkkKHZvcHRfZW5hYmxlIGFvbSBsaWJhb20pICQodm9w dF9lbmFibGUgdmFhcGkpICQodm9wdF9lbmFibGUgdmRwYXUpIFwKKwkJLS1lbmFibGUtbGliYnMy YiAtLWVuYWJsZS1hdnJlc2FtcGxlIC0tZW5hYmxlLWxpYnZpZHN0YWIgXAorCQkkKHZvcHRfZW5h YmxlIGRhdjFkIGxpYmRhdjFkKSBcCisJCSQodm9wdF9lbmFibGUgemltZyBsaWJ6aW1nKSBcCisJ CSQodm9wdF9lbmFibGUgd2VicCBsaWJ3ZWJwKSBcCisJCSQodm9wdF9lbmFibGUgc29mYSBsaWJt eXNvZmEpIFwKKwkJJCh2b3B0X2VuYWJsZSB2dWxrYW4pIFwKKwkJJCh2b3B0X2VuYWJsZSBkcm0g bGliZHJtKSBcCisJCSQodm9wdF9lbmFibGUgc3Z0YXYxIGxpYnN2dGF2MSkgXAorCQkkKHZvcHRf ZW5hYmxlIHNydCBsaWJzcnQpIFwKKwkJJCh2b3B0X2VuYWJsZSByaXN0IGxpYnJpc3QpIFwKKwkJ JCh2b3B0X2VuYWJsZSBtZnggbGlibWZ4KSBcCisJCSQodm9wdF9pZiBudmVuYyAnLS1lbmFibGUt bnZlbmMnKSBcCisJCSQodm9wdF9pZiBudmRlYyAnLS1lbmFibGUtbnZkZWMnKQorfQorZG9fYnVp bGQoKSB7CisJbWFrZSAke21ha2Vqb2JzfQorCW1ha2UgZG9jL2Zme21wZWcscGxheX0uMQorfQor ZG9faW5zdGFsbCgpIHsKKwltYWtlIERFU1RESVI9JHtERVNURElSfSBpbnN0YWxsIGluc3RhbGwt bWFuCisJcm0gLXJmICR7REVTVERJUn0vdXNyL2JpbgorfQorCitsaWJhdmNvZGVjNF9wYWNrYWdl KCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyBjb2RlYyBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkg eworCQl2bW92ZSAidXNyL2xpYi9saWJhdmNvZGVjLnNvLioiCisJfQorfQorbGliYXZkZXZpY2U0 X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGRldmljZSBoYW5kbGluZyBsaWJyYXJ5 IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJhdmRldmljZS5zby4qIgor CX0KK30KK2xpYmF2cmVzYW1wbGU0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGF1 ZGlvIHJlc2FtcGxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9s aWIvbGliYXZyZXNhbXBsZS5zby4qIgorCX0KK30KK2xpYmF2Zm9ybWF0NF9wYWNrYWdlKCkgewor CXNob3J0X2Rlc2M9IkZGbXBlZyBmaWxlIGZvcm1hdCBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkg eworCQl2bW92ZSAidXNyL2xpYi9saWJhdmZvcm1hdC5zby4qIgorCX0KK30KK2xpYmF2dXRpbDRf cGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgdXRpbGl0eSBsaWJyYXJ5IgorCXBrZ19p bnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJhdnV0aWwuc28uKiIKKwl9Cit9CitsaWJh dmZpbHRlcjRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgYXVkaW8vdmlkZW8gZmls dGVyIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2Zmls dGVyLnNvLioiCisJfQorfQorbGlicG9zdHByb2M0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0i RkZtcGVnIHZpZGVvIHBvc3Rwcm9jZXNzaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJ CXZtb3ZlICJ1c3IvbGliL2xpYnBvc3Rwcm9jLnNvLioiCisJfQorfQorbGlic3dzY2FsZTRfcGFj a2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgdmlkZW8gc2NhbGluZyBsaWJyYXJ5IgorCXBr Z19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJzd3NjYWxlLnNvLioiCisJfQorfQor bGlic3dyZXNhbXBsZTRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgdmlkZW8gcmVz YW1wbGluZyBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJz d3Jlc2FtcGxlLnNvLioiCisJfQorfQorZmZtcGVnNC1kZXZlbF9wYWNrYWdlKCkgeworCWRlcGVu ZHM9IgorCQlsaWJhdmNvZGVjND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJhdmRldmlj ZTQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGliYXZmb3JtYXQ0Pj0ke3ZlcnNpb259XyR7 cmV2aXNpb259CisJCWxpYmF2dXRpbDQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGliYXZm aWx0ZXI0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYnBvc3Rwcm9jND49JHt2ZXJzaW9u fV8ke3JldmlzaW9ufQorCQlsaWJzd3NjYWxlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQls aWJzd3Jlc2FtcGxlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJhdnJlc2FtcGxlND49 JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmls ZXMiCisJY29uZmxpY3RzPSJmZm1wZWctZGV2ZWwiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3Zl IHVzci9pbmNsdWRlCisJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCisJCXZtb3ZlIHVzci9saWIv Ki5hCisJCXZtb3ZlIHVzci9saWIvKi5zbworCQl2bW92ZSB1c3Ivc2hhcmUvZmZtcGVnL2V4YW1w bGVzCisJCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMworCX0KK30KZGlmZiAtLWdpdCBhL3NyY3Br Z3MvbGliYXZjb2RlYzQgYi9zcmNwa2dzL2xpYmF2Y29kZWM0Cm5ldyBmaWxlIG1vZGUgMTIwMDAw CmluZGV4IDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9saWJhdmNvZGVjNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdmRldmljZTQgYi9zcmNwa2dzL2xp YmF2ZGV2aWNlNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2Yz NTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZkZXZpY2U0CkBAIC0wLDAg KzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xpYmF2ZmlsdGVyNCBiL3NyY3BrZ3MvbGliYXZmaWx0ZXI0Cm5ldyBmaWxlIG1vZGUg MTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9saWJhdmZpbHRlcjQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZmb3JtYXQ0IGIvc3Jj cGtncy9saWJhdmZvcm1hdDQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAw Li44ODdmMzU0ZTdjNmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2Zm9ybWF0NApA QCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9saWJhdnJlc2FtcGxlNCBiL3NyY3BrZ3MvbGliYXZyZXNhbXBsZTQKbmV3 IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2cmVzYW1wbGU0CkBAIC0wLDAgKzEgQEAKK2ZmbXBl ZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2 dXRpbDQgYi9zcmNwa2dzL2xpYmF2dXRpbDQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAw MDAwMDAwMDAwLi44ODdmMzU0ZTdjNmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2 dXRpbDQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlicG9zdHByb2M0IGIvc3JjcGtncy9saWJwb3N0cHJvYzQK bmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmIKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYnBvc3Rwcm9jNApAQCAtMCwwICsxIEBACitmZm1w ZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJz d3Jlc2FtcGxlNCBiL3NyY3BrZ3MvbGlic3dyZXNhbXBsZTQKbmV3IGZpbGUgbW9kZSAxMjAwMDAK aW5kZXggMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL2xpYnN3cmVzYW1wbGU0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYnN3c2NhbGU0IGIvc3JjcGtncy9s aWJzd3NjYWxlNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2Yz NTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGlic3dzY2FsZTQKQEAgLTAsMCAr MSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCkZyb20gOTExNDI2NzEy MWRjMjBlMjlhMTMyYTA3YTdhNmIzOWRlOGIzZjdmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAx OTo1OTowNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDAzLzExNV0gb3BlbmN2OiB1cGRhdGUgdG8g NC43LjAuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgIHwgMTA0ICsrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3Mvb3BlbmN2L3RlbXBsYXRlIHwgICA4 ICsrLS0KIDIgZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2NvbW1vbi9zaGxpYnMKaW5kZXggOTQ5N2Y2 NDk5YWEyLi5mY2M3NDAxYmU2MjYgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIvY29t bW9uL3NobGlicwpAQCAtMjEzNyw1OCArMjEzNyw1OCBAQCBsaWJjYXBzdG9uZS5zby40IGNhcHN0 b25lLTQuMF8xCiBsaWJoYXZlZ2Uuc28uMiBsaWJoYXZlZ2VkLTEuOS4xMV8xCiBsaWJuaWguc28u MSBsaWJuaWgtMS4wLjNfMQogbGlibmloLWRidXMuc28uMSBsaWJuaWgtMS4wLjNfMQotbGlib3Bl bmN2X3F1YWxpdHkuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfcmVnLnNvLjQw NiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3N1cmZhY2VfbWF0Y2hpbmcuc28uNDA2IGxp Ym9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfeHBob3RvLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBf MQotbGlib3BlbmN2X2ZyZWV0eXBlLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2 X2Z1enp5LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2hmcy5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9pbWdfaGFzaC5zby40MDYgbGlib3BlbmN2LTQuNi4w XzEKLWxpYm9wZW5jdl9saW5lX2Rlc2NyaXB0b3Iuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1s aWJvcGVuY3Zfc2FsaWVuY3kuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3Ry dWN0dXJlZF9saWdodC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9hcnVjby5z by40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9iZ3NlZ20uc28uNDA2IGxpYm9wZW5j di00LjYuMF8xCi1saWJvcGVuY3ZfYmlvaW5zcGlyZWQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8x Ci1saWJvcGVuY3ZfY2NhbGliLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Zh Y2Uuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdHJhY2tpbmcuc28uNDA2IGxp Ym9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfeGZlYXR1cmVzMmQuc28uNDA2IGxpYm9wZW5jdi00 LjYuMF8xCi1saWJvcGVuY3Zfb3B0Zmxvdy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9w ZW5jdl94aW1ncHJvYy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9wbG90LnNv LjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3RleHQuc28uNDA2IGxpYm9wZW5jdi00 LjYuMF8xCi1saWJvcGVuY3ZfbWwuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zf b2JqZGV0ZWN0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Rubi5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9zaGFwZS5zby40MDYgbGlib3BlbmN2LTQuNi4w XzEKLWxpYm9wZW5jdl9zdGl0Y2hpbmcuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVu Y3ZfcGhvdG8uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdmlkZW8uc28uNDA2 IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfY2FsaWIzZC5zby40MDYgbGlib3BlbmN2LTQu Ni4wXzEKLWxpYm9wZW5jdl9mZWF0dXJlczJkLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGli b3BlbmN2X2ZsYW5uLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2hpZ2hndWku c28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdmlkZW9pby5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9pbWdjb2RlY3Muc28uNDA2IGxpYm9wZW5jdi00LjYuMF8x Ci1saWJvcGVuY3ZfaW1ncHJvYy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9j b3JlLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3N1cGVycmVzLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3ZpZGVvc3RhYi5zby40MDYgbGlib3BlbmN2LTQu Ni4wXzEKLWxpYm9wZW5jdl9nYXBpLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2 X3hvYmpkZXRlY3Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZGF0YXNldHMu c28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZG5uX29iamRldGVjdC5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9kbm5fc3VwZXJyZXMuc28uNDA2IGxpYm9wZW5j di00LjYuMF8xCi1saWJvcGVuY3ZfZHBtLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X3BoYXNlX3Vud3JhcHBpbmcuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zf c3RlcmVvLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3JhcGlkLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ludGVuc2l0eV90cmFuc2Zvcm0uc28uNDA2IGxp Ym9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfYWxwaGFtYXQuc28uNDA2IGxpYm9wZW5jdi00LjYu MF8xCi1saWJvcGVuY3ZfYmFyY29kZS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5j dl9tY2Muc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCitsaWJvcGVuY3ZfcXVhbGl0eS5zby40MDcg bGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9yZWcuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8x CitsaWJvcGVuY3Zfc3VyZmFjZV9tYXRjaGluZy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xp Ym9wZW5jdl94cGhvdG8uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZnJlZXR5 cGUuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZnV6enkuc28uNDA3IGxpYm9w ZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfaGZzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X2ltZ19oYXNoLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2xpbmVf ZGVzY3JpcHRvci5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zYWxpZW5jeS5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zdHJ1Y3R1cmVkX2xpZ2h0LnNvLjQw NyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2FydWNvLnNvLjQwNyBsaWJvcGVuY3YtNC43 LjBfMQorbGlib3BlbmN2X2Jnc2VnbS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5j dl9iaW9pbnNwaXJlZC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9jY2FsaWIu c28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZmFjZS5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl90cmFja2luZy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xp Ym9wZW5jdl94ZmVhdHVyZXMyZC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9v cHRmbG93LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3hpbWdwcm9jLnNvLjQw NyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3Bsb3Quc28uNDA3IGxpYm9wZW5jdi00Ljcu MF8xCitsaWJvcGVuY3ZfdGV4dC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9t bC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9vYmpkZXRlY3Quc28uNDA3IGxp Ym9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZG5uLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X3NoYXBlLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N0aXRj aGluZy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9waG90by5zby40MDcgbGli b3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl92aWRlby5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEK K2xpYm9wZW5jdl9jYWxpYjNkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Zl YXR1cmVzMmQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZmxhbm4uc28uNDA3 IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfaGlnaGd1aS5zby40MDcgbGlib3BlbmN2LTQu Ny4wXzEKK2xpYm9wZW5jdl92aWRlb2lvLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X2ltZ2NvZGVjcy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9pbWdwcm9j LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2NvcmUuc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3Zfc3VwZXJyZXMuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3ZfdmlkZW9zdGFiLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2dh cGkuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfeG9iamRldGVjdC5zby40MDcg bGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9kYXRhc2V0cy5zby40MDcgbGlib3BlbmN2LTQu Ny4wXzEKK2xpYm9wZW5jdl9kbm5fb2JqZGV0ZWN0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X2Rubl9zdXBlcnJlcy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5j dl9kcG0uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfcGhhc2VfdW53cmFwcGlu Zy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zdGVyZW8uc28uNDA3IGxpYm9w ZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfcmFwaWQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3ZfaW50ZW5zaXR5X3RyYW5zZm9ybS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xp Ym9wZW5jdl9hbHBoYW1hdC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9iYXJj b2RlLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X21jYy5zby40MDcgbGlib3Bl bmN2LTQuNy4wXzEKIGxpYnVuaWNvbmYuc28uNC42IHd2c3RyZWFtcy00LjYuMV8yMAogbGlid3Zi YXNlLnNvLjQuNiB3dnN0cmVhbXMtNC42LjFfMjAKIGxpYnd2dXRpbHMuc28uNC42IHd2c3RyZWFt cy00LjYuMV8yMApkaWZmIC0tZ2l0IGEvc3JjcGtncy9vcGVuY3YvdGVtcGxhdGUgYi9zcmNwa2dz L29wZW5jdi90ZW1wbGF0ZQppbmRleCA2OWM2MzViMWFkMmIuLjQxZjMxODNmMTU4MiAxMDA2NDQK LS0tIGEvc3JjcGtncy9vcGVuY3YvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVuY3YvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVuY3YnCiBwa2duYW1l PW9wZW5jdgotdmVyc2lvbj00LjYuMAotcmV2aXNpb249NAordmVyc2lvbj00LjcuMAorcmV2aXNp b249MQogY3JlYXRlX3dya3NyYz15ZXMKIGJ1aWxkX3dya3NyYz0ke3BrZ25hbWV9LSR7dmVyc2lv bn0KIGJ1aWxkX3N0eWxlPWNtYWtlCkBAIC0yNCw4ICsyNCw4IEBAIGhvbWVwYWdlPSJodHRwczov L29wZW5jdi5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2 L3dpa2kvQ2hhbmdlTG9nIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29w ZW5jdi9hcmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6CiAgaHR0cHM6Ly9naXRodWIuY29tL29wZW5j di9vcGVuY3ZfY29udHJpYi9hcmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6PmNvbnRyaWIudGFyLmd6 IgotY2hlY2tzdW09IjFlYzFjYmE2NWY5ZjIwZmU1YTQxZmRhMTU4NmUwMWM3MGVhMGM5YTZkN2I2 N2M5ZTEzZWRmMGNmZTIyMzkyNzcKLSAxNzc3ZDVmZDJiNTkwMjljZjUzN2U1ZmQ2ZjhhYTY4ZDcw NzA3NTgyMmY5MGJkZTY4M2ZjZGUwODZmODVmN2E3IgorY2hlY2tzdW09IjhkZjAwNzljZGJlMTc5 NzQ4YTE4ZDQ0NzMxYWY2MmEyNDVhNDVlYmY1MDg1MjIzZGMwMzEzMzk1NGM2NjI5NzMKKyA0MmRm ODQwY2Y5MDU1ZTU5ZDBlMjJjMjQ5Y2ZiMTlmMDQ3NDNlMWJkYWQxMTNkMzFiMTU3M2QzOTM0ZDYy NTg0IgogcGF0Y2hfYXJncz0iLU5wMSAtZCAke2J1aWxkX3dya3NyY30iCiAjIHRlc3RzIGhhbmcg aW5kZW5maW5pdGVseSwgZXZlbiB3aXRoIHRlc3QgZGF0YSBpbmNsdWRlZAogbWFrZV9jaGVjaz1u bwoKRnJvbSA2MTM1ZjdhOTYwN2I0N2M2MGY0MzQwYjVkMjczNmEwMjRkYzFjM2U1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDE5OjU5OjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDQvMTE1XSBh Y3Rpb25hOiByZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0tLQogc3JjcGtncy9hY3Rpb25hL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hY3Rpb25hL3RlbXBsYXRlIGIvc3JjcGtncy9hY3Rp b25hL3RlbXBsYXRlCmluZGV4IGNmNWYwYjdhMmFlNi4uMGQ4OTkzMTFlNmRmIDEwMDY0NAotLS0g YS9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hY3Rpb25hL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYWN0aW9uYScKIHBrZ25hbWU9 YWN0aW9uYQogdmVyc2lvbj0zLjEwLjEKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0 eWxlPXFtYWtlCiBjb25maWd1cmVfYXJncz0iUEtHQ09ORklHX09QRU5DVj1vcGVuY3Y0IgogaG9z dG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1wbHVnaW4tbXlzcWwgcXQ1LXFtYWtlIHF0NS1o b3N0LXRvb2xzIgoKRnJvbSBiYjQ0MDVhZTY2NTZkNTM5ZTcyMWZiM2RjYTU2YjgwOTI0MTY3Nzk5 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDE5OjU5OjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw MDUvMTE1XSBnbWljOiByZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0tLQogc3JjcGtncy9nbWlj L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nbWljL3RlbXBsYXRlIGIvc3JjcGtncy9nbWlj L3RlbXBsYXRlCmluZGV4IDI0YTljNzIxOGZkZi4uMGJiNDAzNGQ1Y2M4IDEwMDY0NAotLS0gYS9z cmNwa2dzL2dtaWMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nbWljL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ21pYycKIHBrZ25hbWU9Z21pYwogdmVyc2lv bj0zLjEuNgotcmV2aXNpb249MworcmV2aXNpb249NAogX3phcnRfaGFzaD0zNGViZjZjY2UwYmFm Yjk4YWJlNTdjZWM4M2M0YTAyY2QxYWJlY2EwCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jr c3JjPSJzcmMiCgpGcm9tIDBjODY4OGNhMWQyN2IzYzBiYThjZTU3YTAyMjgxNTc1OTU5YTI0NTUg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAw Ni8xMTVdIHFpbWd2OiByZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0tLQogc3JjcGtncy9xaW1n di90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUgYi9zcmNwa2dzL3Fp bWd2L3RlbXBsYXRlCmluZGV4IDdlYjMwZGIzMzk5Mi4uZGQzNDFkZmUxYmZjIDEwMDY0NAotLS0g YS9zcmNwa2dzL3FpbWd2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxaW1ndicKIHBrZ25hbWU9cWltZ3YK IHZlcnNpb249MS4wLjIKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtl CiBjb25maWd1cmVfYXJncz0iJCh2b3B0X2lmIHZpZGVvIC1EVklERU9fU1VQUE9SVD1PTiAtRFZJ REVPX1NVUFBPUlQ9T0ZGKQogICQodm9wdF9pZiBzY2FsZSAtRE9QRU5DVl9TVVBQT1JUPU9OIC1E T1BFTkNWX1NVUFBPUlQ9T0ZGKQoKRnJvbSBjYzFjYjczMjY4NzZmNWFlZWE5NDc0MTRmZDdkYmI2 MmZjMWYxNTkzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDE5OjU5OjQ2IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwMDcvMTE1XSByZXRyb3NoYXJlOiByZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0t LQogc3JjcGtncy9yZXRyb3NoYXJlL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9yZXRyb3No YXJlL3RlbXBsYXRlIGIvc3JjcGtncy9yZXRyb3NoYXJlL3RlbXBsYXRlCmluZGV4IDhhMDc4NmMy MWEwOC4uNzIwMjNmYTk4Yjc1IDEwMDY0NAotLS0gYS9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9yZXRyb3NoYXJlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAncmV0cm9zaGFyZScKIHBrZ25hbWU9cmV0cm9zaGFyZQogdmVyc2lv bj0wLjYuNgotcmV2aXNpb249MgorcmV2aXNpb249NAogYnVpbGRfc3R5bGU9cW1ha2UKICNYWFgg YnJvYWRjYXN0IGZlYXR1cmUgcmVxdWlyZXMgYW4gYW5jaWVudCB1ZHAtZGlzY292ZXJ5LWNwcCB3 aGljaCBlaXRoZXIgbmVlZHMKICMgdG8gYmUgZmV0Y2hlZCtwYXRjaGVkIChGVEJGUykgaGVyZSBv ciBwYWNrYWdlZCA6LwoKRnJvbSBiZjJmMjM1ZmJlMmQwMzQ0ZWI1ZjQzZjkyZTQ0Y2FkM2YzNWUw NTQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDE5OjU5OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwMDgvMTE1XSBzaXJpbDogcmV2YnVtcCBmb3Igb3BlbmN2LTQuNy4wCgotLS0KIHNyY3BrZ3Mv c2lyaWwvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlIGIvc3JjcGtn cy9zaXJpbC90ZW1wbGF0ZQppbmRleCBlODhmMzBmYjYxNzguLjg0MzMyZjc5ZDA2MCAxMDA2NDQK LS0tIGEvc3JjcGtncy9zaXJpbC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3NpcmlsL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2lyaWwnCiBwa2duYW1lPXNp cmlsCiB2ZXJzaW9uPTAuOS4xMgotcmV2aXNpb249OQorcmV2aXNpb249MTAKIGJ1aWxkX3N0eWxl PWdudS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBpbnRsdG9vbCBhdXRv Y29uZiBhdXRvbWFrZSBnZXR0ZXh0LWRldmVsIgogbWFrZWRlcGVuZHM9ImZmdHctZGV2ZWwgbGli Y29uZmlnLWRldmVsIGxpYm9wZW5jdi1kZXZlbCBsaWJmZm1zMi1kZXZlbAoKRnJvbSBlODBmZTUz M2I2NDVlYTZjNWRhNTdlODk0MDc3ZTc2ZjI5YzYzYzJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIz IDE5OjU5OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDkvMTE1XSB3YWlmdTJ4LWNvbnZlcnRl ci1jcHA6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL3dhaWZ1MngtY29u dmVydGVyLWNwcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXIt Y3BwL3RlbXBsYXRlIGIvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKaW5k ZXggOGMwOTVkMGQ3YmFiLi5hYTUyZDhjOTgxYTggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvd2FpZnUy eC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXIt Y3BwL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnd2FpZnUy eC1jb252ZXJ0ZXItY3BwJwogcGtnbmFtZT13YWlmdTJ4LWNvbnZlcnRlci1jcHAKIHZlcnNpb249 NS4yLjQKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1 cmVfYXJncz0iLURJTlNUQUxMX01PREVMUz1PTiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZp ZyIKCkZyb20gNzZmNzVmYzdmNzM0OGExNDUwYzJhZTg5YmI0NGM1NDVlODA2OTkwMiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMDozOCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDEwLzExNV0g dmxjOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvdmxjL3RlbXBsYXRl IHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmxjL3RlbXBsYXRlIGIvc3JjcGtncy92bGMvdGVtcGxh dGUKaW5kZXggMjEwNzYyYjBhN2UyLi44NTVjYTUyMzg2NjIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv dmxjL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdmxjL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAndmxjJwogcGtnbmFtZT12bGMKIHZlcnNpb249My4wLjE4Ci1y ZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1 cmVfYXJncz0iLS1kaXNhYmxlLWdtZSAtLWRpc2FibGUtbGlidGFyIC0tZW5hYmxlLWphY2sKICAt LWVuYWJsZS1saXZlNTU1IC0tZGlzYWJsZS1mbHVpZHN5bnRoIC0tZW5hYmxlLWR2ZHJlYWQKQEAg LTI1LDcgKzI1LDcgQEAgbGliMzJkaXNhYmxlZD15ZXMKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21h a2UgbGlidG9vbCBwa2ctY29uZmlnIGZsZXggZ2V0dGV4dCBsaWJnY3J5cHQtZGV2ZWwKICBsaXZl NTU1LWRldmVsIGdldHRleHQtZGV2ZWwgJCh2b3B0X2lmIGx1YSBsdWE1MikgJCh2b3B0X2lmIGNo cm9tZWNhc3QgcHJvdG9idWYpIgogbWFrZWRlcGVuZHM9IgotIGF2YWhpLWxpYnMtZGV2ZWwgZGJ1 cy1nbGliLWRldmVsIGZhYWQyLWRldmVsIGZmbXBlZy1kZXZlbCBmcmVlZm9udC10dGYKKyBhdmFo aS1saWJzLWRldmVsIGRidXMtZ2xpYi1kZXZlbCBmYWFkMi1kZXZlbCBmZm1wZWc0LWRldmVsIGZy ZWVmb250LXR0ZgogIGdudXRscy1kZXZlbCBqYWNrLWRldmVsIGxpYmE1Mi1kZXZlbCBsaWJhc3Mt ZGV2ZWwgbGliYmx1cmF5LWRldmVsCiAgbGliY2Rpby1kZXZlbCBsaWJkY2EtZGV2ZWwgbGliZHZi cHNpLWRldmVsIGxpYmR2ZG5hdi1kZXZlbCBsaWJtYWQtZGV2ZWwKICBsaWJtYXRyb3NrYS1kZXZl bCBsaWJtb2RwbHVnLWRldmVsIGxpYm1wY2RlYy1kZXZlbCBsaWJtcGVnMi1kZXZlbAoKRnJvbSAx MGE3ZjdkMDgxZDIwMzg4ZTIxM2YyYWFiYWMyZTA0MjQ5ZTY3OGFjIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAwOjU1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTEvMTE1XSBvc2c6IHJldmJ1 bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9vc2cvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL29zZy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlCmluZGV4IGE5ZWJi ZDI4NzkzMy4uNzU1NzkzZjdlMTFiIDEwMDY0NAotLS0gYS9zcmNwa2dzL29zZy90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL29zZy90ZW1wbGF0ZQpAQCAtOCw3ICs4LDcgQEAgYnVpbGRfaGVscGVyPSJx ZW11IgogY29uZmlndXJlX2FyZ3M9Ii1ETElCX1BPU1RGSVg9IgogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIHhyYW5kciIKIG1ha2VkZXBlbmRzPSJNZXNhTGliLWRldmVsIGd0a2dsZXh0LWRl dmVsIGxpYmN1cmwtZGV2ZWwgZ2lmbGliLWRldmVsIGxpYnJzdmctZGV2ZWwKLSBqYXNwZXItZGV2 ZWwgdGlmZi1kZXZlbCBsaWJnZGFsLWRldmVsIGxpYmd0YS1kZXZlbCBmZm1wZWctZGV2ZWwgeGlu ZS1saWItZGV2ZWwKKyBqYXNwZXItZGV2ZWwgdGlmZi1kZXZlbCBsaWJnZGFsLWRldmVsIGxpYmd0 YS1kZXZlbCBmZm1wZWc0LWRldmVsIHhpbmUtbGliLWRldmVsCiAgU0RMMi1kZXZlbCBnc3QtcGx1 Z2lucy1iYXNlMS1kZXZlbAogICQodm9wdF9pZiBvcGVuZXhyIGxpYm9wZW5leHItZGV2ZWwpCiAg JCh2b3B0X2lmIHBvcHBsZXIgcG9wcGxlci1nbGliLWRldmVsKQoKRnJvbSAyODg5ZDVmYTdlYmRm NzYyNmM5MDY5OGU5MTRhOGY1NzQwNzdlMmUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjEzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTIvMTE1XSB4aW5lLWxpYjogcmV2YnVtcCBmb3Ig ZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3hpbmUtbGliL3RlbXBsYXRlIHwgNiArKystLS0K IDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZSBiL3NyY3BrZ3MveGluZS1saWIvdGVtcGxh dGUKaW5kZXggZjcxM2VmZjQ5YjA3Li5lZDYxOTRjMTdkMTEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv eGluZS1saWIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZQpAQCAtMSw2 ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3hpbmUtbGliJwogcGtnbmFtZT14aW5lLWxp YgotdmVyc2lvbj0xLjIuMTIKK3ZlcnNpb249MS4yLjEzCiByZXZpc2lvbj0xCiBidWlsZF9zdHls ZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLXZjZCAtLWRpc2FibGUt Z25vbWV2ZnMgLS13aXRob3V0LWVzb3VuZCAtLWRpc2FibGUtZHhyMwpAQCAtOCw3ICs4LDcgQEAg Y29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS12Y2QgLS1kaXNhYmxlLWdub21ldmZzIC0td2l0aG91 dC1lc291bmQgLS1kaXNhYmxlLWR4cjMKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgZ2V0dGV4 dC1kZXZlbCBsaWJ0b29sIHBrZy1jb25maWcgcGVybCIKIG1ha2VkZXBlbmRzPSIKICB6bGliLWRl dmVsIGFsc2EtbGliLWRldmVsIGxpYnhjYi1kZXZlbCBsaWJTTS1kZXZlbCBsaWJYZXh0LWRldmVs IGxpYlh2LWRldmVsCi0gbGliWHZNQy1kZXZlbCBsaWJhNTItZGV2ZWwgbGlibWFkLWRldmVsIGZm bXBlZy1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCisgbGliWHZNQy1kZXZlbCBsaWJhNTItZGV2ZWwg bGlibWFkLWRldmVsIGZmbXBlZzQtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbAogIGphY2stZGV2ZWwg c2FtYmEtZGV2ZWwgbGliZmxhYy1kZXZlbCBsaWJtb2RwbHVnLWRldmVsIGxpYm1wY2RlYy1kZXZl bAogIHNwZWV4LWRldmVsIGxpYnRoZW9yYS1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwgbGliZGNhLWRl dmVsIGZhYWQyLWRldmVsCiAgbGliY2Rpby1kZXZlbCBsaWJibHVyYXktZGV2ZWwgYWFsaWItZGV2 ZWwgbGliY2FjYS1kZXZlbCBsaWJYaW5lcmFtYS1kZXZlbApAQCAtMTksNyArMTksNyBAQCBsaWNl bnNlPSJHUEwtMi4wLW9yLWxhdGVyLCBMR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRw Oi8vd3d3LnhpbmUtcHJvamVjdC5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vc291cmNlZm9yZ2Uu bmV0L3Byb2plY3RzL3hpbmUvZmlsZXMveGluZS1saWIvJHt2ZXJzaW9ufS9SRUFETUUudHh0L3Zp ZXciCiBkaXN0ZmlsZXM9IiR7U09VUkNFRk9SR0VfU0lURX0veGluZS8ke3BrZ25hbWV9LSR7dmVy c2lvbn0udGFyLnh6IgotY2hlY2tzdW09ZDYwNjI3MDQ2OGUxNTQwYzJhODljMGQ3ZjVmZGYxMWUx N2VjYzBjMjY5OGNjMGJjYjEwNjVmZjI2YWJlZTA5OAorY2hlY2tzdW09NWYxMGQ2ZDcxOGE0YTUx YzE3ZWQxYjMyYjAzMWQ0ZjliODBiMDYxZTgyNzY1MzViMmJlMzFlNWFjNGI3NWU2ZgogCiBjYXNl ICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KIAlpNjg2LW11c2wpCgpGcm9tIGYwOTBhZjI1OGFm ZTE3ZDA4YjI1NWE0ZjAwYWU0ZjUyMTM3Zjk2NmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMy8xMTVdIFFNUGxheTI6IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9RTVBsYXkyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9RTVBsYXkyL3RlbXBsYXRlIGIvc3JjcGtncy9RTVBsYXkyL3RlbXBsYXRlCmluZGV4IGFk NzNjYmIwMWJhZS4uNTUyODRjMDUxMTYxIDEwMDY0NAotLS0gYS9zcmNwa2dzL1FNUGxheTIvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9RTVBsYXkyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnUU1QbGF5MicKIHBrZ25hbWU9UU1QbGF5MgogdmVyc2lvbj0yMy4w Mi4wNQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtl ZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMiCiBtYWtlZGVwZW5k cz0iYWxzYS1saWItZGV2ZWwgZmZtcGVnLWRldmVsIGxpYmFzcy1kZXZlbCBsaWJjZGlvLWRldmVs IGxpYmdtZS1kZXZlbAoKRnJvbSBhNGM0OTI1NDEwNWUzYjg5OTEwYjA0YzdiMjJhZGQ1OTU5MmY3 N2U1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwMTQvMTE1XSBhbHNhLXBsdWdpbnM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Fsc2EtcGx1Z2lu cy90ZW1wbGF0ZSBiL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlCmluZGV4IDBiZmE2ZDlm ZDI2NC4uYTU3MDhhN2Q4MmE4IDEwMDY0NAotLS0gYS9zcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Fsc2EtcGx1Z2lucycKIHBrZ25hbWU9YWxzYS1wbHVnaW5z CiB2ZXJzaW9uPTEuMi43LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdu dS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtbWFlbW8tcGx1Z2luIgogaG9z dG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSBlNTVlY2M3NTA2ODI4NmQ4N2RiMmNiZDk2 ZGVjZTNkZmY2MTIxNzhmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwMTUvMTE1XSBhcmNhbjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL2FyY2FuL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hcmNhbi90ZW1wbGF0 ZSBiL3NyY3BrZ3MvYXJjYW4vdGVtcGxhdGUKaW5kZXggN2JlOTY1MmVjY2YzLi5jY2M3ZGYxMWNl YWMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXJjYW4vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hcmNh bi90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKICMgISEga2VlcCBzeW5jZWQgd2l0aDogYWNmZ2Zz IGFjbGlwIGFsb2FkaW1hZ2UKIHBrZ25hbWU9YXJjYW4KIHZlcnNpb249MC42LjIuMQotcmV2aXNp b249MQorcmV2aXNpb249MgogY3JlYXRlX3dya3NyYz15ZXMKIGJ1aWxkX3dya3NyYz1hcmNhbi9z cmMKIGJ1aWxkX3N0eWxlPWNtYWtlCgpGcm9tIDFkMzg1M2I5ZDZjNDA2MTgwMzBlNGQ0YWJhNmIw N2NjZGQ0NmQ5YTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVj dDogW1BBVENIIDAxNi8xMTVdIGF0dHJhY3Q6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0t LQogc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXR0cmFj dC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXR0cmFjdC90ZW1wbGF0ZQppbmRleCAyNjE0NGU5MzFhM2Mu LmU3NjBiZjBkMThhZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvYXR0cmFjdC90ZW1wbGF0ZQpAQCAtMSwxMiArMSwxMiBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnYXR0cmFjdCcKIHBrZ25hbWU9YXR0cmFjdAogdmVyc2lvbj0yLjYuMgotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBtYWtlX2J1aWxkX2Fy Z3M9IlZFUkJPU0U9MSIKIG1ha2VfdXNlX2Vudj15ZXMKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNv bmZpZyIKLW1ha2VkZXBlbmRzPSJTRk1MLWRldmVsIGZmbXBlZy1kZXZlbCBmb250Y29uZmlnLWRl dmVsIGdsdS1kZXZlbCBsaWJhcmNoaXZlLWRldmVsCittYWtlZGVwZW5kcz0iU0ZNTC1kZXZlbCBm Zm1wZWc0LWRldmVsIGZvbnRjb25maWctZGV2ZWwgZ2x1LWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwK ICBsaWJjdXJsLWRldmVsIGxpYmpwZWctdHVyYm8tZGV2ZWwgeGluZS1saWIgcmFwaWRqc29uIGxp YlhyYW5kci1kZXZlbCIKIGRlcGVuZHM9ImdpdCIKIHNob3J0X2Rlc2M9IkF0dHJhY3QtTW9kZSBp cyBhIGdyYXBoaWNhbCBmcm9udGVuZCBmb3IgZW11bGF0b3JzIgoKRnJvbSAzNjg0N2UyN2Y3ZDgy MDMwMmViNGNlNzBhYTlkMDUwYTBiYjcwZDg2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTcvMTE1XSBhdWJpbzogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL2F1YmlvL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDI1ICsr KysrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvYXViaW8vdGVtcGxhdGUgICAgICAgICAg ICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYXViaW8vcGF0Y2hlcy9mZm1wZWc1LnBh dGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdWJpby9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9z cmNwa2dzL2F1YmlvL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLmFhY2U0MWE2ZTZkOQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvYXViaW8vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gOGEw NTQyMGU1ZGQ4YzdiOGIyNDQ3ZjgyZGM5MTk3NjU4NzY1MTFiMyBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKK0Zyb206IFBhdWwgQnJvc3NpZXIgPHBpZW1AcGllbS5vcmc+CitEYXRlOiBUdWUsIDI1 IEphbiAyMDIyIDE4OjMwOjI3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtzb3VyY2VfYXZjb2Rl Y10gZGVmaW5lIEZGX0FQSV9MQVZGX0FWQ1RYIGZvciBsaWJhdmNvZGVjID4KKyA1OSwgdGh4IEBi ZXJvbGludXggKGNsb3NlcyBnaC0zNTMpCisKKy0tLQorIHNyYy9pby9zb3VyY2VfYXZjb2RlYy5j IHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0 IGEvc3JjL2lvL3NvdXJjZV9hdmNvZGVjLmMgYi9zcmMvaW8vc291cmNlX2F2Y29kZWMuYworaW5k ZXggZTBhZTkzYjUuLjE0MjFiZDlhIDEwMDY0NAorLS0tIGEvc3JjL2lvL3NvdXJjZV9hdmNvZGVj LmMKKysrKyBiL3NyYy9pby9zb3VyY2VfYXZjb2RlYy5jCitAQCAtNjgsNiArNjgsMTAgQEAKKyAj ZGVmaW5lIEFVQklPX0FWQ09ERUNfTUFYX0JVRkZFUl9TSVpFIEFWX0lOUFVUX0JVRkZFUl9NSU5f U0laRQorICNlbmRpZgorIAorKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPj0gNTkKKysj ZGVmaW5lIEZGX0FQSV9MQVZGX0FWQ1RYIDEKKysjZW5kaWYKKysKKyBzdHJ1Y3QgX2F1YmlvX3Nv dXJjZV9hdmNvZGVjX3QgeworICAgdWludF90IGhvcF9zaXplOworICAgdWludF90IHNhbXBsZXJh dGU7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1YmlvL3RlbXBsYXRlIGIvc3JjcGtncy9hdWJpby90 ZW1wbGF0ZQppbmRleCBhZDFjNGIyNTY5OTEuLjdkODc1Y2MwMjU0MSAxMDA2NDQKLS0tIGEvc3Jj cGtncy9hdWJpby90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2F1YmlvL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYXViaW8nCiBwa2duYW1lPWF1YmlvCiB2ZXJz aW9uPTAuNC45Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT13YWYzCiAjIFhY WCBsYXNoLCBwdXJlIGFuZCBzd2lnIHN1cHBvcnQuCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25m aWcgdHh0Mm1hbiIKCkZyb20gYjY5OGQ0MTE2MDMyZDliYTk3MzAyNTQ2MWY2MzFhMjcyODJhZTgy MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDE4LzExNV0gYXVkYWNpb3VzLXBsdWdpbnM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog Li4uL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCAgIHwgNDMgKysrKysr KysrKysrKysrKysrKwogc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy90ZW1wbGF0ZSAgICAgICAg ICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hl cy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9w YXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMv ZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRl NWUzNDA5OWQ3MQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMv cGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK2NvbW1pdCAyOThhYTM3MWM1 NmMyZjUyYzI1YTMzZDliZGVjNDkxOGIxMWNlYmRjCitBdXRob3I6IHRpYmVxdWFkb3JpYW4gPHRp YmVxdWFkb3JpYW5AcG9zdGVvLmRlPgorRGF0ZTogICBTYXQgTWFyIDE5IDE4OjQwOjEyIDIwMjIg KzAxMDAKKworICAgIGF1ZGFjaW91cy1wbHVnaW5zOiByZWJ1aWxkIGFnYWluc3QgZmZtcGVnLTUu MAorCitkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBl Zy01LjAucGF0Y2ggYi9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnLTUu MC5wYXRjaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjYxN2MxMTIx NWIKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hl cy9mZm1wZWctNS4wLnBhdGNoCitAQCAtMCwwICsxLDMxIEBACisrRnJvbSBmNjBiZWI0MDBlZWIx ZTQ3NzhiYmZkNzM4YmM0YTRjY2VmM2RlNTM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorK0Zy b206IEpvaG4gTGluZGdyZW4gPGpvaG5AamxpbmRncmVuLm5ldD4KKytEYXRlOiBTYXQsIDUgTWFy IDIwMjIgMTI6MDU6MzQgLTA1MDAKKytTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIEZG bXBlZyA1LjAKKysKKystLS0KKysgc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjIHwgNCArKy0t CisrIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisrCisr ZGlmZiAtLWdpdCBhL3NyYy9mZmF1ZGlvL2ZmYXVkaW8tY29yZS5jYyBiL3NyYy9mZmF1ZGlvL2Zm YXVkaW8tY29yZS5jYworK2luZGV4IDE2ZGM2M2UzYS4uYTJiOTVmZDZjIDEwMDY0NAorKy0tLSBh L3NyYy9mZmF1ZGlvL2ZmYXVkaW8tY29yZS5jYworKysrKyBiL3NyYy9mZmF1ZGlvL2ZmYXVkaW8t Y29yZS5jYworK0BAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGljIEFWSW5wdXRGb3JtYXQgKiBnZXRf Zm9ybWF0X2J5X2NvbnRlbnQgKGNvbnN0IGNoYXIgKiBuYW1lLCBWRlNGaWxlICYgZmlsZSkKKysg ICAgICAgICBBVlByb2JlRGF0YSBkID0ge25hbWUsIGJ1ZiwgZmlsbGVkfTsKKysgICAgICAgICBz Y29yZSA9IHRhcmdldDsKKysgCisrLSAgICAgICAgZiA9IGF2X3Byb2JlX2lucHV0X2Zvcm1hdDIg KCYgZCwgdHJ1ZSwgJiBzY29yZSk7CisrKyAgICAgICAgZiA9IChBVklucHV0Rm9ybWF0ICopIGF2 X3Byb2JlX2lucHV0X2Zvcm1hdDIgKCYgZCwgdHJ1ZSwgJiBzY29yZSk7CisrICAgICAgICAgaWYg KGYpCisrICAgICAgICAgICAgIGJyZWFrOworKyAKKytAQCAtMzQ3LDcgKzM0Nyw3IEBAIHN0YXRp YyBib29sIGZpbmRfY29kZWMgKEFWRm9ybWF0Q29udGV4dCAqIGMsIENvZGVjSW5mbyAqIGNpbmZv KQorKyAjZW5kaWYKKysgICAgICAgICBpZiAoc3RyZWFtICYmIHN0cmVhbS0+Y29kZWNwYXIgJiYg c3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8pCisrICAg ICAgICAgeworKy0gICAgICAgICAgICBBVkNvZGVjICogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVj b2RlciAoc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKysgICAgICAgICAgICBBVkNvZGVj ICogY29kZWMgPSAoQVZDb2RlYyAqKSBhdmNvZGVjX2ZpbmRfZGVjb2RlciAoc3RyZWFtLT5jb2Rl Y3Bhci0+Y29kZWNfaWQpOworKyAKKysgICAgICAgICAgICAgaWYgKGNvZGVjKQorKyAgICAgICAg ICAgICB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlIGIv c3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy90ZW1wbGF0ZQppbmRleCA4OGNiYzE2NzFmYzYuLmJl ZWJmYWU1OWVkNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBA QAogI0tlZXAgaW4gc3luYyB3aXRoIGF1ZGFjaW91cyEKIHBrZ25hbWU9YXVkYWNpb3VzLXBsdWdp bnMKIHZlcnNpb249NC4zLjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1l c29uCiBjb25maWd1cmVfYXJncz0iJCh2b3B0X2Jvb2wgZ3RrMyBndGspICQodm9wdF9ib29sIGd0 azMpCiAgJCh2b3B0X2Jvb2wgcXQpICQodm9wdF9ib29sIHF0IHF0NikiCgpGcm9tIDcyNmQ2MDA4 MzQxZTE1ZTc5MDI3NTI2ZmExMzRjZmY5ZmY2MGMwM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxOS8xMTVdIGF1ZGFjaXR5OiByZXZidW1w IGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUgfCA1ICsr LS0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUgYi9zcmNwa2dzL2F1ZGFjaXR5L3Rl bXBsYXRlCmluZGV4IGQ1MDljMGE4OTQwNy4uMTFlMjAyNTU2ODViIDEwMDY0NAotLS0gYS9zcmNw a2dzL2F1ZGFjaXR5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhdWRhY2l0eScKIHBrZ25hbWU9YXVk YWNpdHkKIHZlcnNpb249Mi40LjEKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxl PWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLXdpdGgtZmZtcGVnPXN5c3RlbSAtLXdp dGgtbGlic25kZmlsZT1zeXN0ZW0gLS13aXRoLWV4cGF0PXN5c3RlbQogIC0td2l0aC1saWJzb3hy PXN5c3RlbSAtLXdpdGgtbGFtZT1zeXN0ZW0gLS13aXRoLWx2Mj1zeXN0ZW0gYWNfY3ZfcGF0aF9X WF9DT05GSUc9d3gtY29uZmlnLWd0azMiCkBAIC05LDcgKzksNyBAQCBob3N0bWFrZWRlcGVuZHM9 InBrZy1jb25maWcgY21ha2UgZ2V0dGV4dCBsaWJ0b29sIG00IHdoaWNoIgogbWFrZWRlcGVuZHM9 ImphY2stZGV2ZWwgd3hXaWRnZXRzLWd0azMtZGV2ZWwgZ3RrKzMtZGV2ZWwKICBsaWJtYWQtZGV2 ZWwgc291bmR0b3VjaC1kZXZlbCBsaWJzb3hyLWRldmVsCiAgdmFtcC1wbHVnaW4tc2RrLWRldmVs IGxhbWUtZGV2ZWwgbGliaWQzdGFnLWRldmVsIGxpYmZsYWMtZGV2ZWwKLSBmZm1wZWctZGV2ZWwg dHdvbGFtZS1kZXZlbCBzZXJkLWRldmVsIGx2MiBsaWx2LWRldmVsIHN1aWwtZGV2ZWwiCisgZmZt cGVnNC1kZXZlbCB0d29sYW1lLWRldmVsIHNlcmQtZGV2ZWwgbHYyIGxpbHYtZGV2ZWwgc3VpbC1k ZXZlbCIKIGRlcGVuZHM9ImRlc2t0b3AtZmlsZS11dGlscyBoaWNvbG9yLWljb24tdGhlbWUiCiBz aG9ydF9kZXNjPSJHcmFwaGljYWwgY3Jvc3MtcGxhdGZvcm0gYXVkaW8gZWRpdG9yIgogbWFpbnRh aW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKQEAgLTMzLDUgKzMzLDQgQEAg cG9zdF9pbnN0YWxsKCkgewogCXZjb3B5IHBsdWctaW5zIC91c3Ivc2hhcmUvYXVkYWNpdHkKIAog CXJtICR7REVTVERJUn0vdXNyL3NoYXJlL2RvYy9hdWRhY2l0eS9MSUNFTlNFLnR4dAotCXZsaWNl bnNlIExJQ0VOU0UudHh0IExJQ0VOU0UKIH0KCkZyb20gMzRjYjFiNThiMjUxNmI1OTk0YTU4ZGJi OWRmMTA0NTVlOTc5NTBkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDIwLzExNV0gYXZpZGVtdXg6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXZpZGVt dXgvdGVtcGxhdGUgYi9zcmNwa2dzL2F2aWRlbXV4L3RlbXBsYXRlCmluZGV4IDI1M2EwMjQzZTIy NS4uNTU3Mjg1OTgyZDJiIDEwMDY0NAotLS0gYS9zcmNwa2dzL2F2aWRlbXV4L3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdhdmlkZW11eCcKIHBrZ25hbWU9YXZpZGVtdXgKIHZlcnNpb249Mi44LjAKLXJl dmlzaW9uPTIKK3JldmlzaW9uPTMKICMgQ2FuJ3QgYmUgY29tcGlsZWQgZm9yIGFhcmNoNjQsIGFy bSogb3IgbWlwcyoKIGFyY2hzPSJ4ODZfNjQqIGk2ODYqIgogaG9zdG1ha2VkZXBlbmRzPSJjbWFr ZSBwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1kZXZlbCB0YXIgeWFzbSIKCkZyb20gZGE3 Yzc5YzRlYmE5N2RkMmYyMzUzMThmZDQyMjUwNmE2MjkyNWJiMyBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDIxLzExNV0gYmFyZXNpcDogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2JhcmVzaXAvdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2JhcmVzaXAvdGVtcGxhdGUgYi9zcmNwa2dzL2JhcmVzaXAvdGVtcGxhdGUK aW5kZXggZjFiZDE4MTcwNDhiLi5iMjFlMjIzMzQzMTYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYmFy ZXNpcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2JhcmVzaXAvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdiYXJlc2lwJwogcGtnbmFtZT1iYXJlc2lwCiB2ZXJz aW9uPTIuMTAuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhv c3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBnbGliLWRldmVsIgogbWFrZWRlcGVuZHM9ImxpYmdz bS1kZXZlbCBsaWJwbmctZGV2ZWwgb3BlbnNzbC1kZXZlbCBsaWJzbmRmaWxlLWRldmVsCgpGcm9t IDIwMWJlZTg3NjdhZmYxZTU5YTE3NmUzN2E4ZjY5ODVhZmVjZDJkY2QgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyMi8xMTVdIGJsZW5kZXI6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL3BhdGNoZXMvZmZtcGVnNi1jb21wYXQt YmxlbmRlci5wYXRjaCAgICAgIHwgNDIgKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9ibGVu ZGVyL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdl ZCwgNDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvYmxlbmRlci9wYXRjaGVzL2ZmbXBlZzYtY29tcGF0LWJsZW5kZXIucGF0Y2gKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2JsZW5kZXIvcGF0Y2hlcy9mZm1wZWc2LWNvbXBhdC1ibGVuZGVyLnBh dGNoIGIvc3JjcGtncy9ibGVuZGVyL3BhdGNoZXMvZmZtcGVnNi1jb21wYXQtYmxlbmRlci5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ1MWE5Yzc3MTBjYwot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvYmxlbmRlci9wYXRjaGVzL2ZmbXBlZzYtY29tcGF0 LWJsZW5kZXIucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorLS0tIGEvc291cmNlL2JsZW5kZXIvYmxl bmtlcm5lbC9pbnRlcm4vd3JpdGVmZm1wZWcuYwkyMDIyLTExLTA4IDEzOjUwOjE2IFVUQworKysr IGIvc291cmNlL2JsZW5kZXIvYmxlbmtlcm5lbC9pbnRlcm4vd3JpdGVmZm1wZWcuYworQEAgLTg1 NSw3ICs4NTUsNyBAQCBzdGF0aWMgQVZTdHJlYW0gKmFsbG9jX3ZpZGVvX3N0cmVhbShGRk1wZWdD b250ZXh0ICpjb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAyNTUpOworICAgc3QtPmF2Z19mcmFtZV9yYXRlID0gYXZfaW52X3Eo Yy0+dGltZV9iYXNlKTsKKyAKKy0gIGlmIChjb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNf Q0FQX0FVVE9fVEhSRUFEUykgeworKyAgaWYgKGNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RF Q19DQVBfT1RIRVJfVEhSRUFEUykgeworICAgICBjLT50aHJlYWRfY291bnQgPSAwOworICAgfQor ICAgZWxzZSB7CistLS0gYS9zb3VyY2UvYmxlbmRlci9pbWJ1Zi9pbnRlcm4vYW5pbV9tb3ZpZS5j CTIwMjItMTEtMDQgMDA6MzM6MDcgVVRDCisrKysgYi9zb3VyY2UvYmxlbmRlci9pbWJ1Zi9pbnRl cm4vYW5pbV9tb3ZpZS5jCitAQCAtNTU0LDcgKzU1NCw3IEBAIHN0YXRpYyBpbnQgc3RhcnRmZm1w ZWcoc3RydWN0IGFuaW0gKmFuaW0pCisgICBhdmNvZGVjX3BhcmFtZXRlcnNfdG9fY29udGV4dChw Q29kZWNDdHgsIHZpZGVvX3N0cmVhbS0+Y29kZWNwYXIpOworICAgcENvZGVjQ3R4LT53b3JrYXJv dW5kX2J1Z3MgPSBGRl9CVUdfQVVUT0RFVEVDVDsKKyAKKy0gIGlmIChwQ29kZWMtPmNhcGFiaWxp dGllcyAmIEFWX0NPREVDX0NBUF9BVVRPX1RIUkVBRFMpIHsKKysgIGlmIChwQ29kZWMtPmNhcGFi aWxpdGllcyAmIEFWX0NPREVDX0NBUF9PVEhFUl9USFJFQURTKSB7CisgICAgIHBDb2RlY0N0eC0+ dGhyZWFkX2NvdW50ID0gMDsKKyAgIH0KKyAgIGVsc2UgeworLS0tIGEvc291cmNlL2JsZW5kZXIv aW1idWYvaW50ZXJuL2luZGV4ZXIuYwkyMDIyLTExLTA0IDAwOjMzOjA3IFVUQworKysrIGIvc291 cmNlL2JsZW5kZXIvaW1idWYvaW50ZXJuL2luZGV4ZXIuYworQEAgLTU1OSw3ICs1NTksNyBAQCBz dGF0aWMgc3RydWN0IHByb3h5X291dHB1dF9jdHggKmFsbG9jX3Byb3h5X291dHB1dF9mZm0KKyAg IGF2X2RpY3Rfc2V0KCZjb2RlY19vcHRzLCAicHJlc2V0IiwgInZlcnlmYXN0IiwgMCk7CisgICBh dl9kaWN0X3NldCgmY29kZWNfb3B0cywgInR1bmUiLCAiZmFzdGRlY29kZSIsIDApOworIAorLSAg aWYgKHJ2LT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX0FVVE9fVEhSRUFEUykg eworKyAgaWYgKHJ2LT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX09USEVSX1RI UkVBRFMpIHsKKyAgICAgcnYtPmMtPnRocmVhZF9jb3VudCA9IDA7CisgICB9CisgICBlbHNlIHsK K0BAIC04NzIsNyArODcyLDcgQEAgc3RhdGljIEluZGV4QnVpbGRDb250ZXh0ICppbmRleF9mZm1w ZWdfY3JlYXRlX2NvbnRleHQoCisgICBhdmNvZGVjX3BhcmFtZXRlcnNfdG9fY29udGV4dChjb250 ZXh0LT5pQ29kZWNDdHgsIGNvbnRleHQtPmlTdHJlYW0tPmNvZGVjcGFyKTsKKyAgIGNvbnRleHQt PmlDb2RlY0N0eC0+d29ya2Fyb3VuZF9idWdzID0gRkZfQlVHX0FVVE9ERVRFQ1Q7CisgCistICBp ZiAoY29udGV4dC0+aUNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19DQVBfQVVUT19USFJF QURTKSB7CisrICBpZiAoY29udGV4dC0+aUNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19D QVBfT1RIRVJfVEhSRUFEUykgeworICAgICBjb250ZXh0LT5pQ29kZWNDdHgtPnRocmVhZF9jb3Vu dCA9IDA7CisgICB9CisgICBlbHNlIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmxlbmRlci90ZW1w bGF0ZSBiL3NyY3BrZ3MvYmxlbmRlci90ZW1wbGF0ZQppbmRleCA2MWI0MmViMmU1MWUuLmQxOGJj ODg4MzhmZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvYmxlbmRlci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2JsZW5kZXInCiBwa2duYW1lPWJsZW5kZXIKIHZlcnNpb249My40LjEKLXJldmlzaW9uPTMKK3Jl dmlzaW9uPTQKIGFyY2hzPSJ4ODZfNjQqIHBwYzY0KiIKIGJ1aWxkX3N0eWxlPSJjbWFrZSIKIHB5 Y29tcGlsZV9kaXJzPSIvdXNyL3NoYXJlL2JsZW5kZXIvJHt2ZXJzaW9uJS4qfS9zY3JpcHRzIgoK RnJvbSBkMWJlZWZiNTUwZjQ0NTIwNzI5ODg2NDY5ZDY4ZTMwNTViYjIxMWM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjMvMTE1XSBjYW50 YXRhOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvY2FudGF0YS90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2FudGF0YS90ZW1wbGF0ZSBiL3NyY3BrZ3MvY2FudGF0YS90 ZW1wbGF0ZQppbmRleCA0YjQxN2Q4MGQ1YzIuLjhhOTBhYWE0YzA3YSAxMDA2NDQKLS0tIGEvc3Jj cGtncy9jYW50YXRhL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY2FudGF0YS90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2NhbnRhdGEnCiBwa2duYW1lPWNhbnRh dGEKIHZlcnNpb249Mi41LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNt YWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xz IHF0NS10b29scyIKIG1ha2VkZXBlbmRzPSJxdDUtZGV2ZWwgcXQ1LXRvb2xzLWRldmVsIHF0NS1z dmctZGV2ZWwgcXQ1LXhtbHBhdHRlcm5zLWRldmVsCgpGcm9tIGEzMGFlZjQwNDAwZDg5ZTJmN2Vl ZTRkN2FiZDE5Y2M0MDMzZjllMzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0 MDAKU3ViamVjdDogW1BBVENIIDAyNC8xMTVdIGNjZXh0cmFjdG9yOiByZXZidW1wIGZvciBmZm1w ZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvY2NleHRyYWN0b3IvdGVtcGxhdGUgfCA0ICsrLS0KIDEg ZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZSBiL3NyY3BrZ3MvY2NleHRyYWN0b3IvdGVt cGxhdGUKaW5kZXggOWFiY2Q4Mjg1MmIyLi42ZWNjYWQ1ODg1YWYgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvY2NleHRyYWN0b3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0 ZQpAQCAtMSwxMiArMSwxMiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY2NleHRyYWN0b3InCiBw a2duYW1lPWNjZXh0cmFjdG9yCiB2ZXJzaW9uPTAuOTMKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3dya3NyYz0ibGludXgiCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1 cmVfYXJncz0iLS1lbmFibGUtb2NyIC0tZW5hYmxlLWhhcmRzdWJ4IgogaG9zdG1ha2VkZXBlbmRz PSJhdXRvbWFrZSBwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9ImxlcHRvbmljYS1kZXZlbCB0ZXNz ZXJhY3Qtb2NyLWRldmVsIGZmbXBlZy1kZXZlbCIKK21ha2VkZXBlbmRzPSJsZXB0b25pY2EtZGV2 ZWwgdGVzc2VyYWN0LW9jci1kZXZlbCBmZm1wZWc0LWRldmVsIgogc2hvcnRfZGVzYz0iRXh0cmFj dCBzdWJ0aXRsZXMgZnJvbSB2aWRlbyBzdHJlYW1zIgogbWFpbnRhaW5lcj0ibmV3Ymx1ZW1vb24g PGJsYXVtb2xjaEBtYWlsYm94Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyIgoKRnJv bSBmMTMzZmNkMmM1ZWQzYWJhNGQ2ZDA0NjY1MTk2ZGU0YzgyZDAyNzE4IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjUvMTE1XSBjaHJvbWFw cmludDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Nocm9tYXByaW50L3Bh dGNoZXMvZmZtcGVnNS5wYXRjaCB8IDU2OSArKysrKysrKysrKysrKysrKysrKysrCiBzcmNwa2dz L2Nocm9tYXByaW50L3RlbXBsYXRlICAgICAgICAgICAgICB8ICAgMiArLQogMiBmaWxlcyBjaGFu Z2VkLCA1NzAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9jaHJvbWFwcmludC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2Nocm9t YXByaW50L3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLmE5ZmQzMDdhMjNjOAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvY2hy b21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsNTY5IEBACitGcm9tIDhj Y2FkNjkzNzE3N2IxYjkyZTQwYWI4ZjQ0NDdlYTI3YmFjMDA5YTcgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiA9P1VURi04P3E/THVrPUMzPUExPUM1PUExPTIwTGFsaW5zaz1DMz1CRD89 IDxsYWxpbnNreUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDQgTm92IDIwMjIgMjE6NDc6MzggKzAx MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIEZGbXBlZyA1LnggKCMxMjApCisKKyogVXNlIEZGbXBl ZyA1LjEuMiBmb3IgQ0kgYnVpbGRzCisKKyogQnVpbGQgb24gVWJ1bnR1IDIwLjA0CisKKyogVXBn cmFkZSBjb2RlIHRvIEZGbXBlZyA1LnggQVBJcworCisqIE9ubHkgc2V0IEZGbXBlZyBpbmNsdWRl IGRpcnMgaWYgYnVpbGRpbmcgdG9vbHMKKworKiBObyBsb25nZXIgbmVlZGVkCisKKyogVXNlIHVi dW50dSAyMC4wNAorLS0tCisgLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueW1sICAgICAgICAgICAg ICAgICAgIHwgICA2ICstCisgQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDE2IC0tCisgcGFja2FnZS9idWlsZC5zaCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA0ICstCisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaCAgICAg ICAgICAgIHwgICAyIC0KKyBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2Ft cGxlLmggfCAgNzIgLS0tLS0tLQorIHNyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3 cmVzYW1wbGUuaCB8ICAxOCArLQorIHNyYy9hdWRpby9mZm1wZWdfYXVkaW9fcmVhZGVyLmggICAg ICAgICAgICAgICB8IDE5NyArKysrKysrKystLS0tLS0tLS0KKyB0ZXN0cy9DTWFrZUxpc3RzLnR4 dCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKworIDggZmlsZXMgY2hhbmdlZCwgMTIy IGluc2VydGlvbnMoKyksIDE5OSBkZWxldGlvbnMoLSkKKyBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj L2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oCisKK2RpZmYgLS1naXQg YS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCBmOGQ2YTMyLi40ZGEyNDA1 IDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAt ODQsOSArODQsNiBAQCBmaW5kX3BhY2thZ2UoRkZtcGVnKQorIGlmKEZGTVBFR19MSUJSQVJJRVMp CisgCWNtYWtlX3B1c2hfY2hlY2tfc3RhdGUoUkVTRVQpCisgCXNldChDTUFLRV9SRVFVSVJFRF9M SUJSQVJJRVMgJHtGRk1QRUdfTElCUkFSSUVTfSAke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9IC1s bSkKKy0JY2hlY2tfZnVuY3Rpb25fZXhpc3RzKGF2X3BhY2tldF91bnJlZiBIQVZFX0FWX1BBQ0tF VF9VTlJFRikKKy0JY2hlY2tfZnVuY3Rpb25fZXhpc3RzKGF2X2ZyYW1lX2FsbG9jIEhBVkVfQVZf RlJBTUVfQUxMT0MpCistCWNoZWNrX2Z1bmN0aW9uX2V4aXN0cyhhdl9mcmFtZV9mcmVlIEhBVkVf QVZfRlJBTUVfRlJFRSkKKyAJY21ha2VfcG9wX2NoZWNrX3N0YXRlKCkKKyBlbmRpZigpCisKK0BA IC0xNjMsMTQgKzE2MCwxMSBAQCBtZXNzYWdlKFNUQVRVUyAiVXNpbmcgJHtGRlRfTElCfSBmb3Ig RkZUIGNhbGN1bGF0aW9ucyIpCisgaWYoTk9UIEFVRElPX1BST0NFU1NPUl9MSUIpCisgCWlmKEZG TVBFR19MSUJTV1JFU0FNUExFX0ZPVU5EKQorIAkJc2V0KEFVRElPX1BST0NFU1NPUl9MSUIgInN3 cmVzYW1wbGUiKQorLQllbHNlaWYoRkZNUEVHX0xJQkFWUkVTQU1QTEVfRk9VTkQpCistCQlzZXQo QVVESU9fUFJPQ0VTU09SX0xJQiAiYXZyZXNhbXBsZSIpCisgCWVuZGlmKCkKKyBlbmRpZigpCisK KyBpZihBVURJT19QUk9DRVNTT1JfTElCIFNUUkVRVUFMICJzd3Jlc2FtcGxlIikKKyAJaWYoRkZN UEVHX0xJQlNXUkVTQU1QTEVfRk9VTkQpCistCQlzZXQoVVNFX0FWUkVTQU1QTEUgT0ZGKQorIAkJ c2V0KFVTRV9TV1JFU0FNUExFIE9OKQorIAkJc2V0KEFVRElPX1BST0NFU1NPUl9MSUJSQVJJRVMg JHtGRk1QRUdfTElCU1dSRVNBTVBMRV9MSUJSQVJJRVN9KQorIAkJc2V0KEFVRElPX1BST0NFU1NP Ul9JTkNMVURFX0RJUlMgJHtGRk1QRUdfTElCU1dSRVNBTVBMRV9JTkNMVURFX0RJUlN9KQorQEAg LTE3OCwxNiArMTcyLDYgQEAgaWYoQVVESU9fUFJPQ0VTU09SX0xJQiBTVFJFUVVBTCAic3dyZXNh bXBsZSIpCisgCQltZXNzYWdlKEZBVEFMX0VSUk9SICJTZWxlY3RlZCAke0FVRElPX1BST0NFU1NP Ul9MSUJ9IGZvciBhdWRpbyBwcm9jZXNzaW5nLCBidXQgdGhlIGxpYnJhcnkgaXMgbm90IGZvdW5k IikKKyAJZW5kaWYoKQorIAltZXNzYWdlKFNUQVRVUyAiVXNpbmcgJHtBVURJT19QUk9DRVNTT1Jf TElCfSBmb3IgYXVkaW8gY29udmVyc2lvbiIpCistZWxzZWlmKEFVRElPX1BST0NFU1NPUl9MSUIg U1RSRVFVQUwgImF2cmVzYW1wbGUiKQorLQlpZihGRk1QRUdfTElCQVZSRVNBTVBMRV9GT1VORCkK Ky0JCXNldChVU0VfQVZSRVNBTVBMRSBPTikKKy0JCXNldChVU0VfU1dSRVNBTVBMRSBPRkYpCist CQlzZXQoQVVESU9fUFJPQ0VTU09SX0xJQlJBUklFUyAke0ZGTVBFR19MSUJBVlJFU0FNUExFX0xJ QlJBUklFU30pCistCQlzZXQoQVVESU9fUFJPQ0VTU09SX0lOQ0xVREVfRElSUyAke0ZGTVBFR19M SUJBVlJFU0FNUExFX0lOQ0xVREVfRElSU30pCistCWVsc2UoKQorLQkJbWVzc2FnZShGQVRBTF9F UlJPUiAiU2VsZWN0ZWQgJHtBVURJT19QUk9DRVNTT1JfTElCfSBmb3IgYXVkaW8gcHJvY2Vzc2lu ZywgYnV0IHRoZSBsaWJyYXJ5IGlzIG5vdCBmb3VuZCIpCistCWVuZGlmKCkKKy0JbWVzc2FnZShT VEFUVVMgIlVzaW5nICR7QVVESU9fUFJPQ0VTU09SX0xJQn0gZm9yIGF1ZGlvIGNvbnZlcnNpb24i KQorIGVsc2UoKQorIAltZXNzYWdlKFNUQVRVUyAiQnVpbGRpbmcgd2l0aG91dCBhdWRpbyBjb252 ZXJzaW9uIHN1cHBvcnQsIHBsZWFzZSBpbnN0YWxsIEZGbXBlZyB3aXRoIGxpYnN3cmVzYW1wbGUi KQorIGVuZGlmKCkKK2RpZmYgLS1naXQgYS9wYWNrYWdlL2J1aWxkLnNoIGIvcGFja2FnZS9idWls ZC5zaAoraW5kZXggZGE2MzFhZS4uYjQxZDM2ZSAxMDA3NTUKKy0tLSBhL3BhY2thZ2UvYnVpbGQu c2gKKysrKyBiL3BhY2thZ2UvYnVpbGQuc2gKK0BAIC03LDggKzcsOCBAQCBzZXQgLWV1eAorCisg QkFTRV9ESVI9JChjZCAkKGRpcm5hbWUgJDApLy4uICYmIHB3ZCkKKworLUZGTVBFR19WRVJTSU9O PTQuNC4xCistRkZNUEVHX0JVSUxEX1RBRz12NC40LjEtMQorK0ZGTVBFR19WRVJTSU9OPTUuMS4y CisrRkZNUEVHX0JVSUxEX1RBRz12JHtGRk1QRUdfVkVSU0lPTn0tMQorCisgVE1QX0JVSUxEX0RJ Uj0kQkFTRV9ESVIvJChta3RlbXAgLWQgYnVpbGQuWFhYWFhYWFgpCisgdHJhcCAncm0gLXJmICRU TVBfQlVJTERfRElSJyBFWElUCitkaWZmIC0tZ2l0IGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19w cm9jZXNzb3IuaCBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmgKK2luZGV4IDc2 MjhmYzcuLjM5ZjRmNmQgMTAwNjQ0CistLS0gYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nl c3Nvci5oCisrKysgYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oCitAQCAtMTAs OCArMTAsNiBAQAorCisgI2lmIGRlZmluZWQoVVNFX1NXUkVTQU1QTEUpCisgI2luY2x1ZGUgImF1 ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oIgorLSNlbGlmIGRlZmluZWQo VVNFX0FWUkVTQU1QTEUpCistI2luY2x1ZGUgImF1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jf YXZyZXNhbXBsZS5oIgorICNlbHNlCisgI2Vycm9yICJubyBhdWRpbyBwcm9jZXNzaW5nIGxpYnJh cnkiCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNz b3JfYXZyZXNhbXBsZS5oIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNh bXBsZS5oCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IGJkODVmOTIuLjAwMDAwMDAK Ky0tLSBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaAorKysr IC9kZXYvbnVsbAorQEAgLTEsNzIgKzAsMCBAQAorLS8vIENvcHlyaWdodCAoQykgMjAxNiAgTHVr YXMgTGFsaW5za3kKKy0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UsIHNlZSB0 aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgorLQorLSNpZm5kZWYgQ0hST01BUFJJTlRfQVVE SU9fRkZNUEVHX0FVRElPX1BST0NFU1NPUl9BVlJFU0FNUExFX0hfCistI2RlZmluZSBDSFJPTUFQ UklOVF9BVURJT19GRk1QRUdfQVVESU9fUFJPQ0VTU09SX0FWUkVTQU1QTEVfSF8KKy0KKy1leHRl cm4gIkMiIHsKKy0jaW5jbHVkZSA8bGliYXZyZXNhbXBsZS9hdnJlc2FtcGxlLmg+CistfQorLQor LW5hbWVzcGFjZSBjaHJvbWFwcmludCB7CistCistY2xhc3MgRkZtcGVnQXVkaW9Qcm9jZXNzb3Ig eworLXB1YmxpYzoKKy0JRkZtcGVnQXVkaW9Qcm9jZXNzb3IoKSB7CistCQltX3Jlc2FtcGxlX2N0 eCA9IGF2cmVzYW1wbGVfYWxsb2NfY29udGV4dCgpOworLQl9CistCistCX5GRm1wZWdBdWRpb1By b2Nlc3NvcigpIHsKKy0JCWF2cmVzYW1wbGVfZnJlZSgmbV9yZXNhbXBsZV9jdHgpOworLQl9Cist CistCXZvaWQgU2V0Q29tcGF0aWJsZU1vZGUoKSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2Ft cGxlX2N0eCwgImZpbHRlcl9zaXplIiwgMTYsIDApOworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNh bXBsZV9jdHgsICJwaGFzZV9zaGlmdCIsIDgsIDApOworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNh bXBsZV9jdHgsICJsaW5lYXJfaW50ZXJwIiwgMSwgMCk7CistCQlhdl9vcHRfc2V0X2RvdWJsZSht X3Jlc2FtcGxlX2N0eCwgImN1dG9mZiIsIDAuOCwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRJbnB1 dENoYW5uZWxMYXlvdXQoaW50NjRfdCBjaGFubmVsX2xheW91dCkgeworLQkJYXZfb3B0X3NldF9p bnQobV9yZXNhbXBsZV9jdHgsICJpbl9jaGFubmVsX2xheW91dCIsIGNoYW5uZWxfbGF5b3V0LCAw KTsKKy0JfQorLQorLQl2b2lkIFNldElucHV0U2FtcGxlRm9ybWF0KEFWU2FtcGxlRm9ybWF0IHNh bXBsZV9mb3JtYXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAiaW5fc2Ft cGxlX2ZtdCIsIHNhbXBsZV9mb3JtYXQsIDApOworLQl9CistCistCXZvaWQgU2V0SW5wdXRTYW1w bGVSYXRlKGludCBzYW1wbGVfcmF0ZSkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9j dHgsICJpbl9zYW1wbGVfcmF0ZSIsIHNhbXBsZV9yYXRlLCAwKTsKKy0JfQorLQorLQl2b2lkIFNl dE91dHB1dENoYW5uZWxMYXlvdXQoaW50NjRfdCBjaGFubmVsX2xheW91dCkgeworLQkJYXZfb3B0 X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJvdXRfY2hhbm5lbF9sYXlvdXQiLCBjaGFubmVsX2xh eW91dCwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRPdXRwdXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVG b3JtYXQgc2FtcGxlX2Zvcm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgs ICJvdXRfc2FtcGxlX2ZtdCIsIHNhbXBsZV9mb3JtYXQsIDApOworLQl9CistCistCXZvaWQgU2V0 T3V0cHV0U2FtcGxlUmF0ZShpbnQgc2FtcGxlX3JhdGUpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1f cmVzYW1wbGVfY3R4LCAib3V0X3NhbXBsZV9mbXQiLCBzYW1wbGVfcmF0ZSwgMCk7CistCX0KKy0K Ky0JaW50IEluaXQoKSB7CistCQlyZXR1cm4gYXZyZXNhbXBsZV9vcGVuKG1fcmVzYW1wbGVfY3R4 KTsKKy0JfQorLQorLQlpbnQgQ29udmVydCh1aW50OF90ICoqb3V0LCBpbnQgb3V0X2NvdW50LCBj b25zdCB1aW50OF90ICoqaW4sIGludCBpbl9jb3VudCkgeworLQkJcmV0dXJuIGF2cmVzYW1wbGVf Y29udmVydChtX3Jlc2FtcGxlX2N0eCwgb3V0LCAwLCBvdXRfY291bnQsICh1aW50OF90ICoqKSBp biwgMCwgaW5fY291bnQpOworLQl9CistCistCWludCBGbHVzaCh1aW50OF90ICoqb3V0LCBpbnQg b3V0X2NvdW50KSB7CistCQlyZXR1cm4gYXZyZXNhbXBsZV9yZWFkKG1fcmVzYW1wbGVfY3R4LCBv dXQsIG91dF9jb3VudCk7CistCX0KKy0KKy1wcml2YXRlOgorLQlBVkF1ZGlvUmVzYW1wbGVDb250 ZXh0ICptX3Jlc2FtcGxlX2N0eCA9IG51bGxwdHI7CistfTsKKy0KKy19OyAvLyBuYW1lc3BhY2Ug Y2hyb21hcHJpbnQKKy0KKy0jZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1 ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmggYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nl c3Nvcl9zd3Jlc2FtcGxlLmgKK2luZGV4IGI4NjI2NmIuLmIxZDRiZWEgMTAwNjQ0CistLS0gYS9z cmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmgKKysrKyBiL3NyYy9h dWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaAorQEAgLTI4LDMwICsyOCwy OCBAQCBwdWJsaWM6CisgCQlhdl9vcHRfc2V0X2RvdWJsZShtX3N3cl9jdHgsICJjdXRvZmYiLCAw LjgsIDApOworIAl9CisKKy0Jdm9pZCBTZXRJbnB1dENoYW5uZWxMYXlvdXQoaW50NjRfdCBjaGFu bmVsX2xheW91dCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaWNsIiwgY2hhbm5l bF9sYXlvdXQsIDApOworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaWNoIiwgYXZfZ2V0 X2NoYW5uZWxfbGF5b3V0X25iX2NoYW5uZWxzKGNoYW5uZWxfbGF5b3V0KSwgMCk7CisrCXZvaWQg U2V0SW5wdXRDaGFubmVsTGF5b3V0KEFWQ2hhbm5lbExheW91dCAqY2hhbm5lbF9sYXlvdXQpIHsK KysJCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImluX2NoYW5uZWxfbGF5b3V0IiwgY2hhbm5l bF9sYXlvdXQtPnUubWFzaywgMCk7CisgCX0KKworIAl2b2lkIFNldElucHV0U2FtcGxlRm9ybWF0 KEFWU2FtcGxlRm9ybWF0IHNhbXBsZV9mb3JtYXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dy X2N0eCwgImlzZiIsIHNhbXBsZV9mb3JtYXQsIDApOworKwkJYXZfb3B0X3NldF9zYW1wbGVfZm10 KG1fc3dyX2N0eCwgImluX3NhbXBsZV9mbXQiLCBzYW1wbGVfZm9ybWF0LCAwKTsKKyAJfQorCisg CXZvaWQgU2V0SW5wdXRTYW1wbGVSYXRlKGludCBzYW1wbGVfcmF0ZSkgeworLQkJYXZfb3B0X3Nl dF9pbnQobV9zd3JfY3R4LCAiaXNyIiwgc2FtcGxlX3JhdGUsIDApOworKwkJYXZfb3B0X3NldF9p bnQobV9zd3JfY3R4LCAiaW5fc2FtcGxlX3JhdGUiLCBzYW1wbGVfcmF0ZSwgMCk7CisgCX0KKwor LQl2b2lkIFNldE91dHB1dENoYW5uZWxMYXlvdXQoaW50NjRfdCBjaGFubmVsX2xheW91dCkgewor LQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib2NsIiwgY2hhbm5lbF9sYXlvdXQsIDApOwor LQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib2NoIiwgYXZfZ2V0X2NoYW5uZWxfbGF5b3V0 X25iX2NoYW5uZWxzKGNoYW5uZWxfbGF5b3V0KSwgMCk7CisrCXZvaWQgU2V0T3V0cHV0Q2hhbm5l bExheW91dChBVkNoYW5uZWxMYXlvdXQgKmNoYW5uZWxfbGF5b3V0KSB7CisrCQlhdl9vcHRfc2V0 X2ludChtX3N3cl9jdHgsICJvdXRfY2hhbm5lbF9sYXlvdXQiLCBjaGFubmVsX2xheW91dC0+dS5t YXNrLCAwKTsKKyAJfQorCisgCXZvaWQgU2V0T3V0cHV0U2FtcGxlRm9ybWF0KEFWU2FtcGxlRm9y bWF0IHNhbXBsZV9mb3JtYXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm9zZiIs IHNhbXBsZV9mb3JtYXQsIDApOworKwkJYXZfb3B0X3NldF9zYW1wbGVfZm10KG1fc3dyX2N0eCwg Im91dF9zYW1wbGVfZm10Iiwgc2FtcGxlX2Zvcm1hdCwgMCk7CisgCX0KKworIAl2b2lkIFNldE91 dHB1dFNhbXBsZVJhdGUoaW50IHNhbXBsZV9yYXRlKSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3 cl9jdHgsICJvc3IiLCBzYW1wbGVfcmF0ZSwgMCk7CisrCQlhdl9vcHRfc2V0X2ludChtX3N3cl9j dHgsICJvdXRfc2FtcGxlX3JhdGUiLCBzYW1wbGVfcmF0ZSwgMCk7CisgCX0KKworIAlpbnQgSW5p dCgpIHsKK2RpZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRlci5oIGIvc3Jj L2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaAoraW5kZXggNTU1MDE2NC4uMWM2YjM0NiAxMDA2 NDQKKy0tLSBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcmVhZGVyLmgKKysrKyBiL3NyYy9hdWRp by9mZm1wZWdfYXVkaW9fcmVhZGVyLmgKK0BAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKKyAJYm9v bCBSZWFkKGNvbnN0IGludDE2X3QgKipkYXRhLCBzaXplX3QgKnNpemUpOworCisgCWJvb2wgSXNP cGVuKCkgY29uc3QgeyByZXR1cm4gbV9vcGVuZWQ7IH0KKy0JYm9vbCBJc0ZpbmlzaGVkKCkgY29u c3QgeyByZXR1cm4gbV9maW5pc2hlZCAmJiAhbV9nb3RfZnJhbWU7IH0KKysJYm9vbCBJc0Zpbmlz aGVkKCkgY29uc3QgeyByZXR1cm4gIW1faGFzX21vcmVfcGFja2V0cyAmJiAhbV9oYXNfbW9yZV9m cmFtZXM7IH0KKworIAlzdGQ6OnN0cmluZyBHZXRFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJy b3I7IH0KKyAJaW50IEdldEVycm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JfY29kZTsg fQorQEAgLTc0LDIwICs3NCwxOSBAQCBwcml2YXRlOgorIAl1aW50OF90ICptX2NvbnZlcnRfYnVm ZmVyWzFdID0geyBudWxscHRyIH07CisgCWludCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMg PSAwOworCistCUFWSW5wdXRGb3JtYXQgKm1faW5wdXRfZm10ID0gbnVsbHB0cjsKKysJY29uc3Qg QVZJbnB1dEZvcm1hdCAqbV9pbnB1dF9mbXQgPSBudWxscHRyOworIAlBVkRpY3Rpb25hcnkgKm1f aW5wdXRfb3B0cyA9IG51bGxwdHI7CisKKyAJQVZGb3JtYXRDb250ZXh0ICptX2Zvcm1hdF9jdHgg PSBudWxscHRyOworIAlBVkNvZGVjQ29udGV4dCAqbV9jb2RlY19jdHggPSBudWxscHRyOworLQlB VkZyYW1lICptX2ZyYW1lID0gbnVsbHB0cjsKKyAJaW50IG1fc3RyZWFtX2luZGV4ID0gLTE7Cisg CXN0ZDo6c3RyaW5nIG1fZXJyb3I7CisgCWludCBtX2Vycm9yX2NvZGUgPSAwOworLQlib29sIG1f ZmluaXNoZWQgPSBmYWxzZTsKKyAJYm9vbCBtX29wZW5lZCA9IGZhbHNlOworLQlpbnQgbV9nb3Rf ZnJhbWUgPSAwOworLQlBVlBhY2tldCBtX3BhY2tldDsKKy0JQVZQYWNrZXQgbV9wYWNrZXQwOwor Kwlib29sIG1faGFzX21vcmVfcGFja2V0cyA9IHRydWU7CisrCWJvb2wgbV9oYXNfbW9yZV9mcmFt ZXMgPSB0cnVlOworKwlBVlBhY2tldCAqbV9wYWNrZXQgPSBudWxscHRyOworKwlBVkZyYW1lICpt X2ZyYW1lID0gbnVsbHB0cjsKKworIAlpbnQgbV9vdXRwdXRfc2FtcGxlX3JhdGUgPSAwOworIAlp bnQgbV9vdXRwdXRfY2hhbm5lbHMgPSAwOworQEAgLTk4LDE5ICs5NywxMiBAQCBwcml2YXRlOgor CisgaW5saW5lIEZGbXBlZ0F1ZGlvUmVhZGVyOjpGRm1wZWdBdWRpb1JlYWRlcigpIHsKKyAJYXZf bG9nX3NldF9sZXZlbChBVl9MT0dfUVVJRVQpOworLQorLQlhdl9pbml0X3BhY2tldCgmbV9wYWNr ZXQpOworLQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JbV9wYWNrZXQuc2l6ZSA9IDA7Cist CistCW1fcGFja2V0MCA9IG1fcGFja2V0OworIH0KKworIGlubGluZSBGRm1wZWdBdWRpb1JlYWRl cjo6fkZGbXBlZ0F1ZGlvUmVhZGVyKCkgeworIAlDbG9zZSgpOworIAlhdl9kaWN0X2ZyZWUoJm1f aW5wdXRfb3B0cyk7CisgCWF2X2ZyZWVwKCZtX2NvbnZlcnRfYnVmZmVyWzBdKTsKKy0JYXZfcGFj a2V0X3VucmVmKCZtX3BhY2tldDApOworIH0KKworIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVh ZGVyOjpTZXRJbnB1dEZvcm1hdChjb25zdCBjaGFyICpuYW1lKSB7CitAQCAtMTM1LDExICsxMjcs MTAgQEAgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJp bmcgJmZpbGVfbmFtZSkgeworCisgCUNsb3NlKCk7CisKKy0gICAgYXZfaW5pdF9wYWNrZXQoJm1f cGFja2V0KTsKKy0JbV9wYWNrZXQuZGF0YSA9IG51bGxwdHI7CistCW1fcGFja2V0LnNpemUgPSAw OworLQorLQltX3BhY2tldDAgPSBtX3BhY2tldDsKKysJbV9wYWNrZXQgPSBhdl9wYWNrZXRfYWxs b2MoKTsKKysJaWYgKCFtX3BhY2tldCkgeworKwkJcmV0dXJuIGZhbHNlOworKwl9CisKKyAJcmV0 ID0gYXZmb3JtYXRfb3Blbl9pbnB1dCgmbV9mb3JtYXRfY3R4LCBmaWxlX25hbWUuY19zdHIoKSwg bV9pbnB1dF9mbXQsICZtX2lucHV0X29wdHMpOworIAlpZiAocmV0IDwgMCkgeworQEAgLTE1Mywy NiArMTQ0LDMxIEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0 ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKyAJCXJldHVybiBmYWxzZTsKKyAJfQorCistCUFWQ29k ZWMgKmNvZGVjOworKwljb25zdCBBVkNvZGVjICpjb2RlYzsKKyAJcmV0ID0gYXZfZmluZF9iZXN0 X3N0cmVhbShtX2Zvcm1hdF9jdHgsIEFWTUVESUFfVFlQRV9BVURJTywgLTEsIC0xLCAmY29kZWMs IDApOworIAlpZiAocmV0IDwgMCkgeworIAkJU2V0RXJyb3IoIkNvdWxkIG5vdCBmaW5kIGFueSBh dWRpbyBzdHJlYW0gaW4gdGhlIGZpbGUiLCByZXQpOworIAkJcmV0dXJuIGZhbHNlOworIAl9Cisg CW1fc3RyZWFtX2luZGV4ID0gcmV0OworKwlhdXRvIHN0cmVhbSA9IG1fZm9ybWF0X2N0eC0+c3Ry ZWFtc1ttX3N0cmVhbV9pbmRleF07CisKKy0JbV9jb2RlY19jdHggPSBtX2Zvcm1hdF9jdHgtPnN0 cmVhbXNbbV9zdHJlYW1faW5kZXhdLT5jb2RlYzsKKysJbV9jb2RlY19jdHggPSBhdmNvZGVjX2Fs bG9jX2NvbnRleHQzKGNvZGVjKTsKKyAJbV9jb2RlY19jdHgtPnJlcXVlc3Rfc2FtcGxlX2ZtdCA9 IEFWX1NBTVBMRV9GTVRfUzE2OworCisrCXJldCA9IGF2Y29kZWNfcGFyYW1ldGVyc190b19jb250 ZXh0KG1fY29kZWNfY3R4LCBzdHJlYW0tPmNvZGVjcGFyKTsKKysJaWYgKHJldCA8IDApIHsKKysJ CVNldEVycm9yKCJDb3VsZCBub3QgY29weSB0aGUgc3RyZWFtIHBhcmFtZXRlcnMiLCByZXQpOwor KwkJcmV0dXJuIGZhbHNlOworKwl9CisrCisgCXJldCA9IGF2Y29kZWNfb3BlbjIobV9jb2RlY19j dHgsIGNvZGVjLCBudWxscHRyKTsKKyAJaWYgKHJldCA8IDApIHsKKyAJCVNldEVycm9yKCJDb3Vs ZCBub3Qgb3BlbiB0aGUgY29kZWMiLCByZXQpOworIAkJcmV0dXJuIGZhbHNlOworIAl9CisKKy0J aWYgKCFtX2NvZGVjX2N0eC0+Y2hhbm5lbF9sYXlvdXQpIHsKKy0JCW1fY29kZWNfY3R4LT5jaGFu bmVsX2xheW91dCA9IGF2X2dldF9kZWZhdWx0X2NoYW5uZWxfbGF5b3V0KG1fY29kZWNfY3R4LT5j aGFubmVscyk7CistCX0KKysJYXZfZHVtcF9mb3JtYXQobV9mb3JtYXRfY3R4LCAwLCAiZm9vIiwg MCk7CisKKyAJbV9mcmFtZSA9IGF2X2ZyYW1lX2FsbG9jKCk7CisgCWlmICghbV9mcmFtZSkgewor QEAgLTE4MywxOSArMTc5LDIzIEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVu KGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKyAJCW1fb3V0cHV0X3NhbXBsZV9yYXRl ID0gbV9jb2RlY19jdHgtPnNhbXBsZV9yYXRlOworIAl9CisKKy0JaWYgKCFtX291dHB1dF9jaGFu bmVscykgeworLQkJbV9vdXRwdXRfY2hhbm5lbHMgPSBtX2NvZGVjX2N0eC0+Y2hhbm5lbHM7Cisr CUFWQ2hhbm5lbExheW91dCBvdXRwdXRfY2hhbm5lbF9sYXlvdXQ7CisrCWlmIChtX291dHB1dF9j aGFubmVscykgeworKwkJYXZfY2hhbm5lbF9sYXlvdXRfZGVmYXVsdCgmb3V0cHV0X2NoYW5uZWxf bGF5b3V0LCBtX291dHB1dF9jaGFubmVscyk7CisrCX0gZWxzZSB7CisrCQltX291dHB1dF9jaGFu bmVscyA9IG1fY29kZWNfY3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7CisrCQlhdl9jaGFubmVs X2xheW91dF9kZWZhdWx0KCZvdXRwdXRfY2hhbm5lbF9sYXlvdXQsIG1fb3V0cHV0X2NoYW5uZWxz KTsKKyAJfQorCistCWlmIChtX2NvZGVjX2N0eC0+c2FtcGxlX2ZtdCAhPSBBVl9TQU1QTEVfRk1U X1MxNiB8fCBtX2NvZGVjX2N0eC0+Y2hhbm5lbHMgIT0gbV9vdXRwdXRfY2hhbm5lbHMgfHwgbV9j b2RlY19jdHgtPnNhbXBsZV9yYXRlICE9IG1fb3V0cHV0X3NhbXBsZV9yYXRlKSB7CisrCWlmICht X2NvZGVjX2N0eC0+c2FtcGxlX2ZtdCAhPSBBVl9TQU1QTEVfRk1UX1MxNiB8fCBtX2NvZGVjX2N0 eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzICE9IG1fb3V0cHV0X2NoYW5uZWxzIHx8IG1fY29kZWNf Y3R4LT5zYW1wbGVfcmF0ZSAhPSBtX291dHB1dF9zYW1wbGVfcmF0ZSkgeworIAkJbV9jb252ZXJ0 ZXIucmVzZXQobmV3IEZGbXBlZ0F1ZGlvUHJvY2Vzc29yKCkpOworIAkJbV9jb252ZXJ0ZXItPlNl dENvbXBhdGlibGVNb2RlKCk7CisgCQltX2NvbnZlcnRlci0+U2V0SW5wdXRTYW1wbGVGb3JtYXQo bV9jb2RlY19jdHgtPnNhbXBsZV9mbXQpOworIAkJbV9jb252ZXJ0ZXItPlNldElucHV0U2FtcGxl UmF0ZShtX2NvZGVjX2N0eC0+c2FtcGxlX3JhdGUpOworLQkJbV9jb252ZXJ0ZXItPlNldElucHV0 Q2hhbm5lbExheW91dChtX2NvZGVjX2N0eC0+Y2hhbm5lbF9sYXlvdXQpOworKwkJbV9jb252ZXJ0 ZXItPlNldElucHV0Q2hhbm5lbExheW91dCgmKG1fY29kZWNfY3R4LT5jaF9sYXlvdXQpKTsKKyAJ CW1fY29udmVydGVyLT5TZXRPdXRwdXRTYW1wbGVGb3JtYXQoQVZfU0FNUExFX0ZNVF9TMTYpOwor IAkJbV9jb252ZXJ0ZXItPlNldE91dHB1dFNhbXBsZVJhdGUobV9vdXRwdXRfc2FtcGxlX3JhdGUp OworLQkJbV9jb252ZXJ0ZXItPlNldE91dHB1dENoYW5uZWxMYXlvdXQoYXZfZ2V0X2RlZmF1bHRf Y2hhbm5lbF9sYXlvdXQobV9vdXRwdXRfY2hhbm5lbHMpKTsKKysJCW1fY29udmVydGVyLT5TZXRP dXRwdXRDaGFubmVsTGF5b3V0KCZvdXRwdXRfY2hhbm5lbF9sYXlvdXQpOworIAkJYXV0byByZXQg PSBtX2NvbnZlcnRlci0+SW5pdCgpOworIAkJaWYgKHJldCAhPSAwKSB7CisgCQkJU2V0RXJyb3Io IkNvdWxkIG5vdCBjcmVhdGUgYW4gYXVkaW8gY29udmVydGVyIGluc3RhbmNlIiwgcmV0KTsKK0BA IC0yMDMsMTAgKzIwMywxMSBAQCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihj b25zdCBzdGQ6OnN0cmluZyAmZmlsZV9uYW1lKSB7CisgCQl9CisgCX0KKworKwlhdl9jaGFubmVs X2xheW91dF91bmluaXQoJm91dHB1dF9jaGFubmVsX2xheW91dCk7CisrCisgCW1fb3BlbmVkID0g dHJ1ZTsKKy0JbV9maW5pc2hlZCA9IGZhbHNlOworLQltX2dvdF9mcmFtZSA9IDA7CistCW1fbmJf cGFja2V0cyA9IDA7CisrCW1faGFzX21vcmVfcGFja2V0cyA9IHRydWU7CisrCW1faGFzX21vcmVf ZnJhbWVzID0gdHJ1ZTsKKyAJbV9kZWNvZGVfZXJyb3IgPSAwOworCisgCXJldHVybiB0cnVlOwor QEAgLTIxNCw2ICsyMTUsNyBAQCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihj b25zdCBzdGQ6OnN0cmluZyAmZmlsZV9uYW1lKSB7CisKKyBpbmxpbmUgdm9pZCBGRm1wZWdBdWRp b1JlYWRlcjo6Q2xvc2UoKSB7CisgCWF2X2ZyYW1lX2ZyZWUoJm1fZnJhbWUpOworKwlhdl9wYWNr ZXRfZnJlZSgmbV9wYWNrZXQpOworCisgCW1fc3RyZWFtX2luZGV4ID0gLTE7CisKK0BAIC0yNTIs OTEgKzI1NCw5OCBAQCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6UmVhZChjb25zdCBp bnQxNl90ICoqZGF0YSwgc2l6ZV90ICpzaXplKSB7CisgCQlyZXR1cm4gZmFsc2U7CisgCX0KKwor KwkqZGF0YSA9IG51bGxwdHI7CisrCSpzaXplID0gMDsKKysKKyAJaW50IHJldDsKKysJYm9vbCBu ZWVkc19wYWNrZXQgPSBmYWxzZTsKKyAJd2hpbGUgKHRydWUpIHsKKy0JCXdoaWxlIChtX3BhY2tl dC5zaXplIDw9IDApIHsKKy0JCQlhdl9wYWNrZXRfdW5yZWYoJm1fcGFja2V0MCk7CistCQkJYXZf aW5pdF9wYWNrZXQoJm1fcGFja2V0KTsKKy0JCQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0J CQltX3BhY2tldC5zaXplID0gMDsKKy0JCQlyZXQgPSBhdl9yZWFkX2ZyYW1lKG1fZm9ybWF0X2N0 eCwgJm1fcGFja2V0KTsKKysJCXdoaWxlIChuZWVkc19wYWNrZXQgJiYgbV9wYWNrZXQtPnNpemUg PT0gMCkgeworKwkJCXJldCA9IGF2X3JlYWRfZnJhbWUobV9mb3JtYXRfY3R4LCBtX3BhY2tldCk7 CisgCQkJaWYgKHJldCA8IDApIHsKKyAJCQkJaWYgKHJldCA9PSBBVkVSUk9SX0VPRikgeworLQkJ CQkJbV9maW5pc2hlZCA9IHRydWU7CisrCQkJCQluZWVkc19wYWNrZXQgPSBmYWxzZTsKKysJCQkJ CW1faGFzX21vcmVfcGFja2V0cyA9IGZhbHNlOworIAkJCQkJYnJlYWs7CistCQkJCX0gZWxzZSB7 CisrCQkJCX0KKysJCQkJU2V0RXJyb3IoIkVycm9yIHJlYWRpbmcgZnJvbSB0aGUgYXVkaW8gc291 cmNlIiwgcmV0KTsKKysJCQkJcmV0dXJuIGZhbHNlOworKwkJCX0KKysJCQlpZiAobV9wYWNrZXQt PnN0cmVhbV9pbmRleCA9PSBtX3N0cmVhbV9pbmRleCkgeworKwkJCQluZWVkc19wYWNrZXQgPSBm YWxzZTsKKysJCQl9IGVsc2UgeworKwkJCQlhdl9wYWNrZXRfdW5yZWYobV9wYWNrZXQpOworKwkJ CX0KKysJCX0KKysKKysJCWlmIChtX3BhY2tldC0+c2l6ZSAhPSAwKSB7CisrCQkJcmV0ID0gYXZj b2RlY19zZW5kX3BhY2tldChtX2NvZGVjX2N0eCwgbV9wYWNrZXQpOworKwkJCWlmIChyZXQgPCAw KSB7CisrCQkJCWlmIChyZXQgIT0gQVZFUlJPUihFQUdBSU4pKSB7CisgCQkJCQlTZXRFcnJvcigi RXJyb3IgcmVhZGluZyBmcm9tIHRoZSBhdWRpbyBzb3VyY2UiLCByZXQpOworIAkJCQkJcmV0dXJu IGZhbHNlOworIAkJCQl9CistCQkJfQorLQkJCW1fcGFja2V0MCA9IG1fcGFja2V0OworLQkJCWlm IChtX3BhY2tldC5zdHJlYW1faW5kZXggIT0gbV9zdHJlYW1faW5kZXgpIHsKKy0JCQkJbV9wYWNr ZXQuZGF0YSA9IG51bGxwdHI7CistCQkJCW1fcGFja2V0LnNpemUgPSAwOworIAkJCX0gZWxzZSB7 CistCQkJCW1fbmJfcGFja2V0cysrOworKwkJCQlhdl9wYWNrZXRfdW5yZWYobV9wYWNrZXQpOwor IAkJCX0KKyAJCX0KKworLQkJcmV0ID0gYXZjb2RlY19kZWNvZGVfYXVkaW80KG1fY29kZWNfY3R4 LCBtX2ZyYW1lLCAmbV9nb3RfZnJhbWUsICZtX3BhY2tldCk7CisrCQlyZXQgPSBhdmNvZGVjX3Jl Y2VpdmVfZnJhbWUobV9jb2RlY19jdHgsIG1fZnJhbWUpOworIAkJaWYgKHJldCA8IDApIHsKKy0J CQlpZiAobV9kZWNvZGVfZXJyb3IpIHsKKy0JCQkJU2V0RXJyb3IoIkVycm9yIGRlY29kaW5nIGF1 ZGlvIGZyYW1lIiwgbV9kZWNvZGVfZXJyb3IpOworLQkJCQlyZXR1cm4gZmFsc2U7CisrCQkJaWYg KHJldCA9PSBBVkVSUk9SX0VPRikgeworKwkJCQltX2hhc19tb3JlX2ZyYW1lcyA9IGZhbHNlOwor KwkJCX0gZWxzZSBpZiAocmV0ID09IEFWRVJST1IoRUFHQUlOKSkgeworKwkJCQlpZiAobV9oYXNf bW9yZV9wYWNrZXRzKSB7CisrCQkJCQluZWVkc19wYWNrZXQgPSB0cnVlOworKwkJCQkJY29udGlu dWU7CisrCQkJCX0gZWxzZSB7CisrCQkJCQltX2hhc19tb3JlX2ZyYW1lcyA9IGZhbHNlOworKwkJ CQl9CisgCQkJfQorLQkJCW1fZGVjb2RlX2Vycm9yID0gcmV0OworLQkJCW1fcGFja2V0LmRhdGEg PSBudWxscHRyOworLQkJCW1fcGFja2V0LnNpemUgPSAwOworLQkJCWNvbnRpbnVlOworKwkJCVNl dEVycm9yKCJFcnJvciBkZWNvZGluZyB0aGUgYXVkaW8gc291cmNlIiwgcmV0KTsKKysJCQlyZXR1 cm4gZmFsc2U7CisgCQl9CisKKy0JCWJyZWFrOworLQl9CistCistCW1fZGVjb2RlX2Vycm9yID0g MDsKKy0KKy0JY29uc3QgaW50IGRlY29kZWQgPSBzdGQ6Om1pbihyZXQsIG1fcGFja2V0LnNpemUp OworLQltX3BhY2tldC5kYXRhICs9IGRlY29kZWQ7CistCW1fcGFja2V0LnNpemUgLT0gZGVjb2Rl ZDsKKy0KKy0JaWYgKG1fZ290X2ZyYW1lKSB7CistCQlpZiAobV9jb252ZXJ0ZXIpIHsKKy0JCQlp ZiAobV9mcmFtZS0+bmJfc2FtcGxlcyA+IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcykgewor LQkJCQlpbnQgbGluc2l6ZTsKKy0JCQkJYXZfZnJlZXAoJm1fY29udmVydF9idWZmZXJbMF0pOwor LQkJCQltX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMgPSBzdGQ6Om1heCgxMDI0ICogOCwgbV9m cmFtZS0+bmJfc2FtcGxlcyk7CistCQkJCXJldCA9IGF2X3NhbXBsZXNfYWxsb2MobV9jb252ZXJ0 X2J1ZmZlciwgJmxpbnNpemUsIG1fY29kZWNfY3R4LT5jaGFubmVscywgbV9jb252ZXJ0X2J1ZmZl cl9uYl9zYW1wbGVzLCBBVl9TQU1QTEVfRk1UX1MxNiwgMSk7CistCQkJCWlmIChyZXQgPCAwKSB7 CistCQkJCQlTZXRFcnJvcigiQ291bGRuJ3QgYWxsb2NhdGUgYXVkaW8gY29udmVydGVyIGJ1ZmZl ciIsIHJldCk7CisrCQlpZiAobV9mcmFtZS0+bmJfc2FtcGxlcyA+IDApIHsKKysJCQlpZiAobV9j b252ZXJ0ZXIpIHsKKysJCQkJaWYgKG1fZnJhbWUtPm5iX3NhbXBsZXMgPiBtX2NvbnZlcnRfYnVm ZmVyX25iX3NhbXBsZXMpIHsKKysJCQkJCWludCBsaW5zaXplOworKwkJCQkJYXZfZnJlZXAoJm1f Y29udmVydF9idWZmZXJbMF0pOworKwkJCQkJbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzID0g c3RkOjptYXgoMTAyNCAqIDgsIG1fZnJhbWUtPm5iX3NhbXBsZXMpOworKwkJCQkJcmV0ID0gYXZf c2FtcGxlc19hbGxvYyhtX2NvbnZlcnRfYnVmZmVyLCAmbGluc2l6ZSwgbV9jb2RlY19jdHgtPmNo X2xheW91dC5uYl9jaGFubmVscywgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzLCBBVl9TQU1Q TEVfRk1UX1MxNiwgMSk7CisrCQkJCQlpZiAocmV0IDwgMCkgeworKwkJCQkJCVNldEVycm9yKCJD b3VsZG4ndCBhbGxvY2F0ZSBhdWRpbyBjb252ZXJ0ZXIgYnVmZmVyIiwgcmV0KTsKKysJCQkJCQly ZXR1cm4gZmFsc2U7CisrCQkJCQl9CisrCQkJCX0KKysJCQkJYXV0byBuYl9zYW1wbGVzID0gbV9j b252ZXJ0ZXItPkNvbnZlcnQobV9jb252ZXJ0X2J1ZmZlciwgbV9jb252ZXJ0X2J1ZmZlcl9uYl9z YW1wbGVzLCAoY29uc3QgdWludDhfdCAqKikgbV9mcmFtZS0+ZGF0YSwgbV9mcmFtZS0+bmJfc2Ft cGxlcyk7CisrCQkJCWlmIChuYl9zYW1wbGVzIDwgMCkgeworKwkJCQkJU2V0RXJyb3IoIkNvdWxk bid0IGNvbnZlcnQgYXVkaW8iLCByZXQpOworIAkJCQkJcmV0dXJuIGZhbHNlOworIAkJCQl9Cist CQkJfQorLQkJCWF1dG8gbmJfc2FtcGxlcyA9IG1fY29udmVydGVyLT5Db252ZXJ0KG1fY29udmVy dF9idWZmZXIsIG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcywgKGNvbnN0IHVpbnQ4X3QgKiop IG1fZnJhbWUtPmRhdGEsIG1fZnJhbWUtPm5iX3NhbXBsZXMpOworLQkJCWlmIChuYl9zYW1wbGVz IDwgMCkgeworLQkJCQlTZXRFcnJvcigiQ291bGRuJ3QgY29udmVydCBhdWRpbyIsIHJldCk7Cist CQkJCXJldHVybiBmYWxzZTsKKy0JCQl9CistCQkJKmRhdGEgPSAoY29uc3QgaW50MTZfdCAqKSBt X2NvbnZlcnRfYnVmZmVyWzBdOworLQkJCSpzaXplID0gbmJfc2FtcGxlczsKKy0JCX0gZWxzZSB7 CistCQkJKmRhdGEgPSAoY29uc3QgaW50MTZfdCAqKSBtX2ZyYW1lLT5kYXRhWzBdOworLQkJCSpz aXplID0gbV9mcmFtZS0+bmJfc2FtcGxlczsKKy0JCX0KKy0JfSBlbHNlIHsKKy0JCWlmIChtX2Zp bmlzaGVkICYmIG1fY29udmVydGVyKSB7CistCQkJYXV0byBuYl9zYW1wbGVzID0gbV9jb252ZXJ0 ZXItPkZsdXNoKG1fY29udmVydF9idWZmZXIsIG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcyk7 CistCQkJaWYgKG5iX3NhbXBsZXMgPCAwKSB7CistCQkJCVNldEVycm9yKCJDb3VsZG4ndCBjb252 ZXJ0IGF1ZGlvIiwgcmV0KTsKKy0JCQkJcmV0dXJuIGZhbHNlOworLQkJCX0gZWxzZSBpZiAobmJf c2FtcGxlcyA+IDApIHsKKy0JCQkJbV9nb3RfZnJhbWUgPSAxOworIAkJCQkqZGF0YSA9IChjb25z dCBpbnQxNl90ICopIG1fY29udmVydF9idWZmZXJbMF07CisgCQkJCSpzaXplID0gbmJfc2FtcGxl czsKKysJCQl9IGVsc2UgeworKwkJCQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1fZnJhbWUt PmRhdGFbMF07CisrCQkJCSpzaXplID0gbV9mcmFtZS0+bmJfc2FtcGxlczsKKysJCQl9CisrCQl9 IGVsc2UgeworKwkJCWlmIChtX2NvbnZlcnRlcikgeworKwkJCQlpZiAoSXNGaW5pc2hlZCgpKSB7 CisrCQkJCQlhdXRvIG5iX3NhbXBsZXMgPSBtX2NvbnZlcnRlci0+Rmx1c2gobV9jb252ZXJ0X2J1 ZmZlciwgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzKTsKKysJCQkJCWlmIChuYl9zYW1wbGVz IDwgMCkgeworKwkJCQkJCVNldEVycm9yKCJDb3VsZG4ndCBjb252ZXJ0IGF1ZGlvIiwgcmV0KTsK KysJCQkJCQlyZXR1cm4gZmFsc2U7CisrCQkJCQl9IGVsc2UgaWYgKG5iX3NhbXBsZXMgPiAwKSB7 CisrCQkJCQkJKmRhdGEgPSAoY29uc3QgaW50MTZfdCAqKSBtX2NvbnZlcnRfYnVmZmVyWzBdOwor KwkJCQkJCSpzaXplID0gbmJfc2FtcGxlczsKKysJCQkJCX0KKysJCQkJfQorIAkJCX0KKyAJCX0K Ky0JfQorCistCXJldHVybiB0cnVlOworKwkJcmV0dXJuIHRydWU7CisrCX0KKyB9CisKKyBpbmxp bmUgdm9pZCBGRm1wZWdBdWRpb1JlYWRlcjo6U2V0RXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSwg aW50IGVycm51bSkgeworZGlmZiAtLWdpdCBhL3Rlc3RzL0NNYWtlTGlzdHMudHh0IGIvdGVzdHMv Q01ha2VMaXN0cy50eHQKK2luZGV4IGEyYjUxN2IuLjEyM2U2NDMgMTAwNjQ0CistLS0gYS90ZXN0 cy9DTWFrZUxpc3RzLnR4dAorKysrIGIvdGVzdHMvQ01ha2VMaXN0cy50eHQKK0BAIC0zOCw2ICsz OCwxMiBAQCBzZXQoU1JDUworCisgaWYoQlVJTERfVE9PTFMpCisgCXNldChTUkNTICR7U1JDU30g Li4vc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXJfdGVzdC5jcHApCisrICAgIGluY2x1ZGVf ZGlyZWN0b3JpZXMoCisrICAgICAgICAke0ZGTVBFR19MSUJBVkZPUk1BVF9JTkNMVURFX0RJUlN9 CisrICAgICAgICAke0ZGTVBFR19MSUJBVkNPREVDX0lOQ0xVREVfRElSU30KKysgICAgICAgICR7 RkZNUEVHX0xJQkFWVVRJTF9JTkNMVURFX0RJUlN9CisrICAgICAgICAke0FVRElPX1BST0NFU1NP Ul9JTkNMVURFX0RJUlN9CisrICAgICkKKyAJbGlua19saWJyYXJpZXMoZnBjYWxjX2xpYnMpCisg ZW5kaWYoKQorCistLSAKKzIuMzguMQorCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21hcHJp bnQvdGVtcGxhdGUgYi9zcmNwa2dzL2Nocm9tYXByaW50L3RlbXBsYXRlCmluZGV4IDdlZjc4Mzg5 NDlmMy4uMWY3YmJjNzBhMjJjIDEwMDY0NAotLS0gYS9zcmNwa2dzL2Nocm9tYXByaW50L3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdjaHJvbWFwcmludCcKIHBrZ25hbWU9Y2hyb21hcHJpbnQKIHZl cnNpb249MS41LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBj b25maWd1cmVfYXJncz0iLURCVUlMRF9UT09MUz1PTiIKIG1ha2VfY2hlY2tfdGFyZ2V0PSJjaGVj ayIKCkZyb20gYWVkOTIxZjcwMTkzMmNlMjMyYmRjYjFlNWQ5NzUxMDk4ZTU2Y2MyZSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI2LzExNV0g Y2hyb21pdW06IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL3BhdGNoZXMvY2hyb21p dW0tOTMtZmZtcGVnLTQuNC5wYXRjaCAgICAgIHwgMzYgLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3Mv Y2hyb21pdW0vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoICAgICAgICB8IDQ3ICsrKysrKysrKysrKysr KysrKysKIHNyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICB8ICAy ICstCiAzIGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1m Zm1wZWctNC40LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJvbWl1bS9wYXRj aGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMv Y2hyb21pdW0tOTMtZmZtcGVnLTQuNC5wYXRjaCBiL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9j aHJvbWl1bS05My1mZm1wZWctNC40LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBmMGVjNzM2Zjk4YmMuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Nocm9taXVtL3BhdGNo ZXMvY2hyb21pdW0tOTMtZmZtcGVnLTQuNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICsw LDAgQEAKLWRpZmYgLS1naXQgYS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjIGIvbWVk aWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwotaW5kZXggYWM0NzEzYjA3MjY4Li40OTJhOWEz N2QwOTYgMTAwNjQ0Ci0tLS0gYS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCi0rKysg Yi9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCi1AQCAtNDI3LDExICs0MjcsMTEgQEAg dm9pZCBGRm1wZWdEZW11eGVyU3RyZWFtOjpFbnF1ZXVlUGFja2V0KFNjb3BlZEFWUGFja2V0IHBh Y2tldCkgewotICAgc2NvcGVkX3JlZnB0cjxEZWNvZGVyQnVmZmVyPiBidWZmZXI7Ci0gCi0gICBp ZiAodHlwZSgpID09IERlbXV4ZXJTdHJlYW06OlRFWFQpIHsKLS0gICAgc2l6ZV90IGlkX3NpemUg PSAwOwotKyAgICBpbnQgaWRfc2l6ZSA9IDA7Ci0gICAgIHVpbnQ4X3QqIGlkX2RhdGEgPSBhdl9w YWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFf V0VCVlRUX0lERU5USUZJRVIsICZpZF9zaXplKTsKLSAKLS0gICAgc2l6ZV90IHNldHRpbmdzX3Np emUgPSAwOwotKyAgICBpbnQgc2V0dGluZ3Nfc2l6ZSA9IDA7Ci0gICAgIHVpbnQ4X3QqIHNldHRp bmdzX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAgICAgIHBhY2tldC5nZXQo KSwgQVZfUEtUX0RBVEFfV0VCVlRUX1NFVFRJTkdTLCAmc2V0dGluZ3Nfc2l6ZSk7Ci0gCi1AQCAt NDQzLDcgKzQ0Myw3IEBAIHZvaWQgRkZtcGVnRGVtdXhlclN0cmVhbTo6RW5xdWV1ZVBhY2tldChT Y29wZWRBVlBhY2tldCBwYWNrZXQpIHsKLSAgICAgYnVmZmVyID0gRGVjb2RlckJ1ZmZlcjo6Q29w eUZyb20ocGFja2V0LT5kYXRhLCBwYWNrZXQtPnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpZGVfZGF0YS5kYXRhKCksIHNpZGVfZGF0YS5zaXplKCkpOwotICAg fSBlbHNlIHsKLS0gICAgc2l6ZV90IHNpZGVfZGF0YV9zaXplID0gMDsKLSsgICAgaW50IHNpZGVf ZGF0YV9zaXplID0gMDsKLSAgICAgdWludDhfdCogc2lkZV9kYXRhID0gYXZfcGFja2V0X2dldF9z aWRlX2RhdGEoCi0gICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX01BVFJPU0tBX0JM T0NLQURESVRJT05BTCwgJnNpZGVfZGF0YV9zaXplKTsKLSAKLUBAIC01MDQsNyArNTA0LDcgQEAg dm9pZCBGRm1wZWdEZW11eGVyU3RyZWFtOjpFbnF1ZXVlUGFja2V0KFNjb3BlZEFWUGFja2V0IHBh Y2tldCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldC0+ c2l6ZSAtIGRhdGFfb2Zmc2V0KTsKLSAgICAgfQotIAotLSAgICBzaXplX3Qgc2tpcF9zYW1wbGVz X3NpemUgPSAwOwotKyAgICBpbnQgc2tpcF9zYW1wbGVzX3NpemUgPSAwOwotICAgICBjb25zdCB1 aW50MzJfdCogc2tpcF9zYW1wbGVzX3B0ciA9Ci0gICAgICAgICByZWludGVycHJldF9jYXN0PGNv bnN0IHVpbnQzMl90Kj4oYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCi0gICAgICAgICAgICAgcGFj a2V0LmdldCgpLCBBVl9QS1RfREFUQV9TS0lQX1NBTVBMRVMsICZza2lwX3NhbXBsZXNfc2l6ZSkp OwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9z cmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjI0ZTJkYTM4ZTM0YwotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKKy0t LSBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MJMjAyMy0wMS0yMyAxNzozMzo1Ny4z NjYyMTM4MDUgKzAyMDAKKysrKyBiL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MJMjAy My0wMS0yMyAxNzo0MzowOS4yODM0MzY5ODMgKzAyMDAKK0BAIC05MiwyNCArOTIsMTIgQEAKKyAK KyBzdGF0aWMgYmFzZTo6VGltZURlbHRhIEV4dHJhY3RTdGFydFRpbWUoQVZTdHJlYW0qIHN0cmVh bSkgeworICAgLy8gVGhlIGRlZmF1bHQgc3RhcnQgdGltZSBpcyB6ZXJvLgorLSAgYmFzZTo6VGlt ZURlbHRhIHN0YXJ0X3RpbWU7CisrICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGltZSA9IGtOb1Rp bWVzdGFtcDsKKyAKKyAgIC8vIEZpcnN0IHRyeSB0byB1c2UgIHRoZSB8c3RhcnRfdGltZXwgdmFs dWUgYXMgaXMuCistICBpZiAoc3RyZWFtLT5zdGFydF90aW1lICE9IGtOb0ZGbXBlZ1RpbWVzdGFt cCkKKysgIGlmIChzdHJlYW0tPnN0YXJ0X3RpbWUgIT0ga05vRkZtcGVnVGltZXN0YW1wKSAvLyBB Vl9OT1BUU19WQUxVRQorICAgICBzdGFydF90aW1lID0gQ29udmVydEZyb21UaW1lQmFzZShzdHJl YW0tPnRpbWVfYmFzZSwgc3RyZWFtLT5zdGFydF90aW1lKTsKKyAKKy0gIC8vIE5leHQgdHJ5IHRv IHVzZSB0aGUgZmlyc3QgRFRTIHZhbHVlLCBmb3IgY29kZWNzIHdoZXJlIHdlIGtub3cgUFRTID09 IERUUworLSAgLy8gKGV4Y2x1ZGVzIGFsbCBIMjZ4IGNvZGVjcykuIFRoZSBzdGFydCB0aW1lIG11 c3QgYmUgcmV0dXJuZWQgaW4gUFRTLgorLSAgaWYgKGF2X3N0cmVhbV9nZXRfZmlyc3RfZHRzKHN0 cmVhbSkgIT0ga05vRkZtcGVnVGltZXN0YW1wICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+ Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSEVWQyAmJgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXIt PmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0gyNjQgJiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFy LT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9NUEVHNCkgeworLSAgICBjb25zdCBiYXNlOjpUaW1l RGVsdGEgZmlyc3RfcHRzID0KKy0gICAgICAgIENvbnZlcnRGcm9tVGltZUJhc2Uoc3RyZWFtLT50 aW1lX2Jhc2UsIGF2X3N0cmVhbV9nZXRfZmlyc3RfZHRzKHN0cmVhbSkpOworLSAgICBpZiAoZmly c3RfcHRzIDwgc3RhcnRfdGltZSkKKy0gICAgICBzdGFydF90aW1lID0gZmlyc3RfcHRzOworLSAg fQorLQorICAgcmV0dXJuIHN0YXJ0X3RpbWU7CisgfQorIAorQEAgLTE1OTcsNyArMTU4NSw3IEBA CisgICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IHN0cmVhbXNfKSB7CisgICAgIGlmICghc3Ry ZWFtIHx8IHN0cmVhbS0+SXNFbmFibGVkKCkgIT0gZW5hYmxlZCkKKyAgICAgICBjb250aW51ZTsK Ky0gICAgaWYgKGF2X3N0cmVhbV9nZXRfZmlyc3RfZHRzKHN0cmVhbS0+YXZfc3RyZWFtKCkpID09 IGtJbnZhbGlkUFRTTWFya2VyKQorKyAgICBpZiAoc3RyZWFtLT5hdl9zdHJlYW0oKS0+c3RhcnRf dGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICBjb250aW51ZTsKKyAgICAgaWYgKCFsb3dl c3Rfc3RhcnRfdGltZV9zdHJlYW0gfHwKKyAgICAgICAgIHN0cmVhbS0+c3RhcnRfdGltZSgpIDwg bG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtLT5zdGFydF90aW1lKCkpIHsKK0BAIC0xNjE4LDcgKzE2 MDYsNyBAQAorICAgICBpZiAoc3RyZWFtLT50eXBlKCkgIT0gRGVtdXhlclN0cmVhbTo6VklERU8p CisgICAgICAgY29udGludWU7CisgCistICAgIGlmIChhdl9zdHJlYW1fZ2V0X2ZpcnN0X2R0cyhz dHJlYW0tPmF2X3N0cmVhbSgpKSA9PSBrSW52YWxpZFBUU01hcmtlcikKKysgICAgaWYgKHN0cmVh bS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9QVFNfVkFMVUUpCisgICAgICAgY29u dGludWU7CisgCisgICAgIGlmICghc3RyZWFtLT5Jc0VuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUgYi9zcmNwa2dzL2Nocm9taXVtL3RlbXBsYXRlCmluZGV4 IGMzYTFjZDU5ZWFmZS4uNWY0ZjZiZDI0ZDQ2IDEwMDY0NAotLS0gYS9zcmNwa2dzL2Nocm9taXVt L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBA CiBwa2duYW1lPWNocm9taXVtCiAjIFNlZSBodHRwczovL2Nocm9taXVtZGFzaC5hcHBzcG90LmNv bS9yZWxlYXNlcz9wbGF0Zm9ybT1MaW51eCBmb3IgdGhlIGxhdGVzdCB2ZXJzaW9uCiB2ZXJzaW9u PTExMy4wLjU2NzIuNjMKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGFyY2hzPSJpNjg2KiB4ODZf NjQqIGFhcmNoNjQqIGFybXY3bCoiCiBob3N0bWFrZWRlcGVuZHM9IgogICQodm9wdF9pZiBjbGFu ZyAiY2xhbmcgbGxkIGxsdm0xNSIpCgpGcm9tIDc1NGVhN2Y5MGIyZmU5ZjRjNGRlNTk0ZTEyMjhk NDM1MThiNGU3NDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVj dDogW1BBVENIIDAyNy8xMTVdIGNtdXM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCB8IDEyICsrKysrKysrKysrKwogc3JjcGtn cy9jbXVzL3RlbXBsYXRlICAgICAgICAgICAgICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDEz IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jbXVzL3Bh dGNoZXMvZmZtcGVnNi5wYXRjaCBiL3NyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZmE5NWFiODExMTAKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCkBAIC0w LDAgKzEsMTIgQEAKKy0tLSBhL2lwL2ZmbXBlZy5jCisrKysgYi9pcC9mZm1wZWcuYworQEAgLTIw Miw5ICsyMDIsNiBAQCBzdGF0aWMgaW50IGZmbXBlZ19vcGVuKHN0cnVjdCBpbnB1dF9wbHVnaW5f ZGF0YSAqaXBfZGF0YSkKKyAJCQlicmVhazsKKyAJCX0KKyAKKy0JCWlmIChjb2RlYy0+Y2FwYWJp bGl0aWVzICYgQVZfQ09ERUNfQ0FQX1RSVU5DQVRFRCkKKy0JCQljYy0+ZmxhZ3MgfD0gQVZfQ09E RUNfRkxBR19UUlVOQ0FURUQ7CistCisgCQlpZiAoYXZjb2RlY19vcGVuMihjYywgY29kZWMsIE5V TEwpIDwgMCkgeworIAkJCWRfcHJpbnQoImNvdWxkIG5vdCBvcGVuIGNvZGVjOiAlZCwgJXNcbiIs IGNjLT5jb2RlY19pZCwgYXZjb2RlY19nZXRfbmFtZShjYy0+Y29kZWNfaWQpKTsKKyAJCQllcnIg PSAtSVBfRVJST1JfVU5TVVBQT1JURURfRklMRV9UWVBFOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9j bXVzL3RlbXBsYXRlIGIvc3JjcGtncy9jbXVzL3RlbXBsYXRlCmluZGV4IDBmY2I0MjRjZTMzNi4u MDViNzdkMGZlY2FlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2NtdXMvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9jbXVzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn Y211cycKIHBrZ25hbWU9Y211cwogdmVyc2lvbj0yLjEwLjAKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9InByZWZpeD0vdXNyIExE PSRDQyIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gYTI1ZTNkNzRiN2RmMTg5 Yjk4NzliYjE1M2NkYzhjYTU4ZDMyOGQxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI4LzExNV0gY3lhbnJpcDogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2N5YW5yaXAvdGVtcGxhdGUgYi9zcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUKaW5kZXggOTc5NmUz NDYxNjAxLi41ZGIzMGUwMjBkMTcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdjeWFucmlwJwogcGtnbmFtZT1jeWFucmlwCiB2ZXJzaW9uPTAuOS4wCi1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBsaWJjZGlvLWRldmVsIGxp YmNkaW8tcGFyYW5vaWEtZGV2ZWwgbGliY3VybC1kZXZlbCBsaWJtdXNpY2JyYWluejUtZGV2ZWwi CgpGcm9tIDBhYjM5Y2IwOTM3ZTg0N2QwZGY1ODFiNzAyZTdiNDMxOTY0M2IyYjEgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyOS8xMTVdIGRl YWRiZWVmOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvZGVhZGJlZWYv dGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0ZSBiL3NyY3Br Z3MvZGVhZGJlZWYvdGVtcGxhdGUKaW5kZXggYjY2NGJiMWI5YmQ5Li4xNjViM2M3YjljYWQgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kZWFkYmVl Zi90ZW1wbGF0ZQpAQCAtMSwxNCArMSwxNCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZGVhZGJl ZWYnCiBwa2duYW1lPWRlYWRiZWVmCiB2ZXJzaW9uPTEuOC44Ci1yZXZpc2lvbj0xCityZXZpc2lv bj0yCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmln dXJlX2FyZ3M9Ii0tZGlzYWJsZS1vc3MgLS1kaXNhYmxlLWxmbSAtLWRpc2FibGUtbm90aWZ5IC0t ZGlzYWJsZS1ndGsyIgogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBsaWJ0b29sIGdldHRleHQg Z2V0dGV4dC1kZXZlbCBpbnRsdG9vbCBwa2ctY29uZmlnCiAgeWFzbSBjbGFuZyBnbGliLWRldmVs IgogbWFrZWRlcGVuZHM9IgotIGFsc2EtbGliLWRldmVsIGRidXMtZGV2ZWwgZmFhZDItZGV2ZWwg ZmZtcGVnLWRldmVsIGd0ayszLWRldmVsIGltbGliMi1kZXZlbAorIGFsc2EtbGliLWRldmVsIGRi dXMtZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnNC1kZXZlbCBndGsrMy1kZXZlbCBpbWxpYjItZGV2 ZWwKICBqYW5zc29uLWRldmVsIGxpYmNkZGItZGV2ZWwgbGliY2Rpby1kZXZlbCBsaWJjdXJsLWRl dmVsIGxpYmZsYWMtZGV2ZWwKICBsaWJtYWQtZGV2ZWwgbGlicG5nLWRldmVsIGxpYnNhbXBsZXJh dGUtZGV2ZWwgbGlic25kZmlsZS1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwKICBsaWJ6aXAtZGV2ZWwg bXBnMTIzLWRldmVsIG9wdXNmaWxlLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwgd2F2cGFjay1kZXZl bCIKCkZyb20gNDJiZWVhNGFkZmRiODNmNWVlYWRjOGU2OTk4MmIxM2NhZTMyNDkwYSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDMwLzExNV0g ZG9scGhpbi1lbXU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9kb2xwaGlu LWVtdS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxhdGUgYi9z cmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlCmluZGV4IDdlYTE5N2NlYjJhOC4uN2FlYjBhNWI2 NDVlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvZG9scGhpbi1lbXUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdkb2xwaGluLWVtdScKIHBrZ25hbWU9ZG9scGhpbi1lbXUKIHZlcnNpb249NS4wLjE2MTAx Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBfZG9scGhpbl9jb21taXQ9OGVjZmE1MzdhMjQyZGU3 NGQyZTM3MmUzMGQ5ZDc5YjE0NTg0YjJmYgogX21nYmFfY29tbWl0PTQwZDRjNDMwZmMzNmNhZWI3 ZWEzMmZkMzk2MjQ5NDdlZDQ4N2QyZjIKICNWZXJzaW9uL2hhc2ggcGFpciBjYW4gYmUgZm91bmQg YXQgaHR0cHM6Ly9kb2xwaGluLWVtdS5vcmcvZG93bmxvYWQvCgpGcm9tIDM3ZmNiZTE4OTI0NjQ5 MDQzNGU1MjI2MjQ1MDBjNzllYWEwNmU0MWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzMS8xMTVdIGRyb2lkY2FtLW9icy1wbHVnaW46IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3RlbXBsYXRlIGIv c3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3RlbXBsYXRlCmluZGV4IGZjOWM5YmY2YjlkNS4u ZmIwNDgwNzU0ZGY0IDEwMDY0NAotLS0gYS9zcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVt cGxhdGUKKysrIGIvc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZHJvaWRjYW0tb2JzLXBsdWdpbicKIHBrZ25h bWU9ZHJvaWRjYW0tb2JzLXBsdWdpbgogdmVyc2lvbj0yLjAuMQotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBtYWtlX3VzZV9lbnY9eWVzCiBtYWtlX2J1 aWxkX2FyZ3M9IkFMTE9XX1NUQVRJQz1ubyIKCkZyb20gMjEwMmU0ZDcyOGE1YTgwZTAxMzI4ZDM5 NDZhNjg1MDFkNmJiMDQ3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDMyLzExNV0gZHJvaWRjYW06IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZHJvaWRj YW0vdGVtcGxhdGUgYi9zcmNwa2dzL2Ryb2lkY2FtL3RlbXBsYXRlCmluZGV4IDFjM2YxYjhiMWZj Ni4uMzJhOTIyMGI3OWE0IDEwMDY0NAotLS0gYS9zcmNwa2dzL2Ryb2lkY2FtL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdkcm9pZGNhbScKIHBrZ25hbWU9ZHJvaWRjYW0KIHZlcnNpb249MS44LjIKLXJl dmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogbWFrZV9idWls ZF9hcmdzPSJVU0JNVVhEPS1sdXNibXV4ZC0yLjAgSlBFRz0tbHR1cmJvanBlZyIKIGhvc3RtYWtl ZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gZDMzNjEyMTViZmYwYWIyNjY3ZmU5NzJmYTk2ZDll MzJhNzk3MmQ2YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDMzLzExNV0gZWxlY3Ryb24xOTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9u MTkvdGVtcGxhdGUgYi9zcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUKaW5kZXggMDY4MTM2YmU3 NjIzLi4zMmNlMzAxZTczMGMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdlbGVjdHJvbjE5JwogcGtnbmFtZT1lbGVjdHJvbjE5CiB2ZXJzaW9u PTE5LjAuOAotcmV2aXNpb249MgorcmV2aXNpb249MwogX25vZGV2ZXI9MTYuMTQuMgogX2Nocm9t aXVtdmVyPTEwMi4wLjUwMDUuMTI1CiBhcmNocz0ieDg2XzY0KiBhYXJjaDY0KiBwcGM2NGxlKiIK CkZyb20gZWJiMjQ3MGJjYWJlNGJlYzZlZGFhMjI5MmIzOGNiMGFkOTk5Yzg1YiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM0LzExNV0gZmZt cGVndGh1bWJuYWlsZXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL2ZmbXBlZ3Ro dW1ibmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCAgIHwgMjAyICsrKysrKysrKysrKysrKysr Kwogc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZSAgICAgICAgICAgIHwgICA2ICst CiAyIGZpbGVzIGNoYW5nZWQsIDIwNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2 LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2Zm bXBlZzYucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjM2M2ZmMzVhMjg0 MQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9m Zm1wZWc2LnBhdGNoCkBAIC0wLDAgKzEsMjAyIEBACistLS0gYS9saWJmZm1wZWd0aHVtYm5haWxl ci9tb3ZpZWRlY29kZXIuY3BwCTIwMTctMTEtMjEgMTQ6MDY6NTcuMDAwMDAwMDAwIC0wNTAwCisr KysgYi9saWJmZm1wZWd0aHVtYm5haWxlci9tb3ZpZWRlY29kZXIuY3BwCTIwMjMtMDUtMDUgMTM6 MTQ6NDcuOTQ2NTYwNjY4IC0wNDAwCitAQCAtNDEsMTEgKzQxLDYgQEAKKyBuYW1lc3BhY2UgZmZt cGVndGh1bWJuYWlsZXIKKyB7CisgCistc3RydWN0IFNpbGVuY2VMb2dMZXZlbAorLXsKKy0gICAg U2lsZW5jZUxvZ0xldmVsKCkgeyBhdl9sb2dfc2V0X2xldmVsKEFWX0xPR19RVUlFVCk7IH0KKy19 OworLQorIE1vdmllRGVjb2Rlcjo6TW92aWVEZWNvZGVyKEFWRm9ybWF0Q29udGV4dCogcGF2Q29u dGV4dCkKKyA6IG1fVmlkZW9TdHJlYW0oLTEpCisgLCBtX3BGb3JtYXRDb250ZXh0KHBhdkNvbnRl eHQpCitAQCAtNzAsOCArNjUsNiBAQAorIAorIHZvaWQgTW92aWVEZWNvZGVyOjppbml0aWFsaXpl KGNvbnN0IHN0cmluZyYgZmlsZW5hbWUsIGJvb2wgcHJlZmVyRW1iZWRkZWRNZXRhZGF0YSkKKyB7 CistICAgIGF2X3JlZ2lzdGVyX2FsbCgpOworLSAgICBhdmNvZGVjX3JlZ2lzdGVyX2FsbCgpOwor ICAgICBhdmZvcm1hdF9uZXR3b3JrX2luaXQoKTsKKyAKKyAgICAgc3RyaW5nIGlucHV0RmlsZSA9 IGZpbGVuYW1lID09ICItIiA/ICJwaXBlOiIgOiBmaWxlbmFtZTsKK0BAIC05Nyw4ICs5MCw3IEBA CisgeworICAgICBpZiAobV9wVmlkZW9Db2RlY0NvbnRleHQpCisgICAgIHsKKy0gICAgICAgIGF2 Y29kZWNfY2xvc2UobV9wVmlkZW9Db2RlY0NvbnRleHQpOworLSAgICAgICAgbV9wVmlkZW9Db2Rl Y0NvbnRleHQgPSBudWxscHRyOworKyAgICAgICAgYXZjb2RlY19mcmVlX2NvbnRleHQoJm1fcFZp ZGVvQ29kZWNDb250ZXh0KTsKKyAgICAgfQorIAorICAgICBpZiAoKCFtX0Zvcm1hdENvbnRleHRX YXNHaXZlbikgJiYgbV9wRm9ybWF0Q29udGV4dCkKK0BAIC0xNTIsMTAgKzE0NCwxMCBAQAorICAg ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG1fcEZvcm1hdENvbnRleHQtPm5iX3N0cmVh bXM7ICsraSkKKyAgICAgeworICAgICAgICAgQVZTdHJlYW0gKnN0cmVhbSA9IG1fcEZvcm1hdENv bnRleHQtPnN0cmVhbXNbaV07CistICAgICAgICBhdXRvIGN0eCA9IG1fcEZvcm1hdENvbnRleHQt PnN0cmVhbXNbaV0tPmNvZGVjOworLSAgICAgICAgaWYgKGN0eC0+Y29kZWNfdHlwZSA9PSBBVk1F RElBX1RZUEVfVklERU8pCisrICAgICAgICBhdXRvIHBhciA9IG1fcEZvcm1hdENvbnRleHQtPnN0 cmVhbXNbaV0tPmNvZGVjcGFyOworKyAgICAgICAgaWYgKHBhci0+Y29kZWNfdHlwZSA9PSBBVk1F RElBX1RZUEVfVklERU8pCisgICAgICAgICB7CistICAgICAgICAgICAgaWYgKCFwcmVmZXJFbWJl ZGRlZE1ldGFkYXRhIHx8ICFpc1N0aWxsSW1hZ2VDb2RlYyhjdHgtPmNvZGVjX2lkKSkKKysgICAg ICAgICAgICBpZiAoIXByZWZlckVtYmVkZGVkTWV0YWRhdGEgfHwgIWlzU3RpbGxJbWFnZUNvZGVj KHBhci0+Y29kZWNfaWQpKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgdmlkZW9T dHJlYW1zLnB1c2hfYmFjayhpKTsKKyAgICAgICAgICAgICAgICAgY29udGludWU7CitAQCAtMjAz LDggKzE5NSw3IEBACisgICAgIH0KKyAKKyAgICAgbV9wVmlkZW9TdHJlYW0gPSBtX3BGb3JtYXRD b250ZXh0LT5zdHJlYW1zW21fVmlkZW9TdHJlYW1dOworLSAgICBtX3BWaWRlb0NvZGVjQ29udGV4 dCA9IG1fcFZpZGVvU3RyZWFtLT5jb2RlYzsKKy0gICAgbV9wVmlkZW9Db2RlYyA9IGF2Y29kZWNf ZmluZF9kZWNvZGVyKG1fcFZpZGVvQ29kZWNDb250ZXh0LT5jb2RlY19pZCk7CisrICAgIG1fcFZp ZGVvQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihtX3BWaWRlb1N0cmVhbS0+Y29kZWNwYXIt PmNvZGVjX2lkKTsKKyAKKyAgICAgaWYgKG1fcFZpZGVvQ29kZWMgPT0gbnVsbHB0cikKKyAgICAg eworQEAgLTIxNCw2ICsyMDUsMjAgQEAKKyAgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJWaWRl byBDb2RlYyBub3QgZm91bmQiKTsKKyAgICAgfQorIAorKyAgICBtX3BWaWRlb0NvZGVjQ29udGV4 dCA9IGF2Y29kZWNfYWxsb2NfY29udGV4dDMobV9wVmlkZW9Db2RlYyk7CisrCisrICAgIGlmICht X3BWaWRlb0NvZGVjQ29udGV4dCA9PSBudWxscHRyKQorKyAgICB7CisrICAgICAgICBkZXN0cm95 KCk7CisrICAgICAgICB0aHJvdyBsb2dpY19lcnJvcigiQ291bGQgbm90IGFsbG9jYXRlIHZpZGVv IGNvZGVjIGNvbnRleHQiKTsKKysgICAgfQorKworKyAgICBpZiAoYXZjb2RlY19wYXJhbWV0ZXJz X3RvX2NvbnRleHQobV9wVmlkZW9Db2RlY0NvbnRleHQsIG1fcFZpZGVvU3RyZWFtLT5jb2RlY3Bh cikgPCAwKQorKyAgICB7CisrICAgICAgICBkZXN0cm95KCk7CisrICAgICAgICB0aHJvdyBsb2dp Y19lcnJvcigiQ291bGQgbm90IGNvbmZpZ3VyZSB2aWRlbyBjb2RlYyBjb250ZXh0Iik7CisrICAg IH0KKysKKyAgICAgbV9wVmlkZW9Db2RlY0NvbnRleHQtPndvcmthcm91bmRfYnVncyA9IDE7Cisg CisgICAgIGlmIChhdmNvZGVjX29wZW4yKG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BWaWRlb0Nv ZGVjLCBudWxscHRyKSA8IDApCitAQCAtMzg2LDEzICszOTEsNiBAQAorIAorIHZvaWQgTW92aWVE ZWNvZGVyOjppbml0aWFsaXplRmlsdGVyR3JhcGgoY29uc3QgQVZSYXRpb25hbCYgdGltZUJhc2Us IGNvbnN0IHN0ZDo6c3RyaW5nJiBzaXplLCBib29sIG1haW50YWluQXNwZWN0UmF0aW8pCisgewor LSAgICBzdGF0aWMgY29uc3QgQVZQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdHNbXSA9IHsgQVZfUElY X0ZNVF9SR0IyNCwgQVZfUElYX0ZNVF9OT05FIH07CistCistICAgIGF1dG8gZGVsID0gW10gKEFW QnVmZmVyU2lua1BhcmFtcyogcCkgeyBhdl9mcmVlcChwKTsgfTsKKy0gICAgc3RkOjp1bmlxdWVf cHRyPEFWQnVmZmVyU2lua1BhcmFtcywgZGVjbHR5cGUoZGVsKT4gYnVmZmVyc2lua1BhcmFtcyhh dl9idWZmZXJzaW5rX3BhcmFtc19hbGxvYygpLCBkZWwpOworLQorLSAgICBhdmZpbHRlcl9yZWdp c3Rlcl9hbGwoKTsKKy0KKyAgICAgbV9wRmlsdGVyR3JhcGggPSBhdmZpbHRlcl9ncmFwaF9hbGxv YygpOworICAgICBhc3NlcnQobV9wRmlsdGVyR3JhcGgpOworIAorQEAgLTQwNCwxMCArNDAyLDgg QEAKKyAKKyAgICAgY2hlY2tSYyhhdmZpbHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVyKCZtX3BGaWx0 ZXJTb3VyY2UsIGF2ZmlsdGVyX2dldF9ieV9uYW1lKCJidWZmZXIiKSwgInRodW1iX2J1ZmZlciIs IHNzLnN0cigpLmNfc3RyKCksIG51bGxwdHIsIG1fcEZpbHRlckdyYXBoKSwKKyAgICAgICAgICAg ICAiRmFpbGVkIHRvIGNyZWF0ZSBmaWx0ZXIgc291cmNlIik7CistICAgIGJ1ZmZlcnNpbmtQYXJh bXMtPnBpeGVsX2ZtdHMgPSBwaXhlbEZvcm1hdHM7CistICAgIGNoZWNrUmMoYXZmaWx0ZXJfZ3Jh cGhfY3JlYXRlX2ZpbHRlcigmbV9wRmlsdGVyU2luaywgYXZmaWx0ZXJfZ2V0X2J5X25hbWUoImJ1 ZmZlcnNpbmsiKSwgInRodW1iX2J1ZmZlcnNpbmsiLCBudWxscHRyLCBidWZmZXJzaW5rUGFyYW1z LmdldCgpLCBtX3BGaWx0ZXJHcmFwaCksCisrICAgIGNoZWNrUmMoYXZmaWx0ZXJfZ3JhcGhfY3Jl YXRlX2ZpbHRlcigmbV9wRmlsdGVyU2luaywgYXZmaWx0ZXJfZ2V0X2J5X25hbWUoImJ1ZmZlcnNp bmsiKSwgInRodW1iX2J1ZmZlcnNpbmsiLCBudWxscHRyLCBudWxscHRyLCBtX3BGaWx0ZXJHcmFw aCksCisgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgZmlsdGVyIHNpbmsiKTsKKy0gICAg YnVmZmVyc2lua1BhcmFtcy5yZWxlYXNlKCk7CisgCisgICAgIEFWRmlsdGVyQ29udGV4dCogeWFk aWZGaWx0ZXIgPSBudWxscHRyOworICAgICBpZiAobV9wRnJhbWUtPmludGVybGFjZWRfZnJhbWUg IT0gMCkKK0BAIC01MDAsMTUgKzQ5NiwxNSBAQAorICAgICB9CisgCisgICAgIGNoZWNrUmMoYXZf c2Vla19mcmFtZShtX3BGb3JtYXRDb250ZXh0LCAtMSwgdGltZXN0YW1wLCAwKSwgIlNlZWtpbmcg aW4gdmlkZW8gZmFpbGVkIik7CistICAgIGF2Y29kZWNfZmx1c2hfYnVmZmVycyhtX3BGb3JtYXRD b250ZXh0LT5zdHJlYW1zW21fVmlkZW9TdHJlYW1dLT5jb2RlYyk7CisrICAgIGF2Y29kZWNfZmx1 c2hfYnVmZmVycyhtX3BWaWRlb0NvZGVjQ29udGV4dCk7CisgCisgICAgIGludCBrZXlGcmFtZUF0 dGVtcHRzID0gMDsKKy0gICAgYm9vbCBnb3RGcmFtZSA9IDA7CisrICAgIGJvb2wgZ290RnJhbWU7 CisgCisgICAgIGRvCisgICAgIHsKKyAgICAgICAgIGludCBjb3VudCA9IDA7CistICAgICAgICBn b3RGcmFtZSA9IDA7CisrICAgICAgICBnb3RGcmFtZSA9IGZhbHNlOworIAorICAgICAgICAgd2hp bGUgKCFnb3RGcmFtZSAmJiBjb3VudCA8IDIwKQorICAgICAgICAgeworQEAgLTU1MiwxNyArNTQ4 LDMzIEBACisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KKyAKKy0gICAgYXZfZnJhbWVf dW5yZWYobV9wRnJhbWUpOworLQorLSAgICBpbnQgZnJhbWVGaW5pc2hlZDsKKysgICAgaW50IHJj ID0gYXZjb2RlY19zZW5kX3BhY2tldChtX3BWaWRlb0NvZGVjQ29udGV4dCwgbV9wUGFja2V0KTsK KysgICAgaWYocmMgPT0gQVZFUlJPUihFQUdBSU4pKQorKyAgICB7CisrICAgICAgICByYyA9IDA7 CisrICAgIH0KKyAKKy0gICAgaW50IGJ5dGVzRGVjb2RlZCA9IGF2Y29kZWNfZGVjb2RlX3ZpZGVv MihtX3BWaWRlb0NvZGVjQ29udGV4dCwgbV9wRnJhbWUsICZmcmFtZUZpbmlzaGVkLCBtX3BQYWNr ZXQpOworLSAgICBpZiAoYnl0ZXNEZWNvZGVkIDwgMCkKKysgICAgaWYocmMgPT0gQVZFUlJPUl9F T0YpCisrICAgIHsKKysgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgfQorKyAgICBlbHNlIGlm KHJjIDwgMCkKKyAgICAgeworLSAgICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIkZhaWxlZCB0byBk ZWNvZGUgdmlkZW8gZnJhbWU6IGJ5dGVzRGVjb2RlZCA8IDAiKTsKKysgICAgICAgIHRocm93IGxv Z2ljX2Vycm9yKCJGYWlsZWQgdG8gZGVjb2RlIHZpZGVvIGZyYW1lOiBhdmNvZGVjX3NlbmRfcGFj a2V0KCkgPCAwIik7CisgICAgIH0KKyAKKy0gICAgcmV0dXJuIGZyYW1lRmluaXNoZWQgPiAwOwor KyAgICByYyA9IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZShtX3BWaWRlb0NvZGVjQ29udGV4dCwgbV9w RnJhbWUpOworKyAgICBzd2l0Y2gocmMpCisrICAgIHsKKysgICAgICAgIGNhc2UgMDoKKysgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKysKKysgICAgICAgIGNhc2UgQVZFUlJPUihFQUdBSU4pOgor KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysKKysgICAgICAgIGRlZmF1bHQ6CisrICAgICAg ICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIkZhaWxlZCB0byBkZWNvZGUgdmlkZW8gZnJhbWU6IGF2 Y29kZWNfcmVjZWl2ZV9mcmFtZSgpIDwgMCIpOworKyAgICB9CisgfQorIAorIGJvb2wgTW92aWVE ZWNvZGVyOjpnZXRWaWRlb1BhY2tldCgpCitAQCAtNTcwLDggKzU4Miw2IEBACisgICAgIGJvb2wg ZnJhbWVzQXZhaWxhYmxlID0gdHJ1ZTsKKyAgICAgYm9vbCBmcmFtZURlY29kZWQgPSBmYWxzZTsK KyAKKy0gICAgaW50IGF0dGVtcHRzID0gMDsKKy0KKyAgICAgaWYgKG1fcFBhY2tldCkKKyAgICAg eworICAgICAgICAgYXZfcGFja2V0X3VucmVmKG1fcFBhY2tldCk7CitAQCAtNTgwLDYgKzU5MCw3 IEBACisgCisgICAgIG1fcFBhY2tldCA9IG5ldyBBVlBhY2tldCgpOworIAorKworICAgICB3aGls ZSAoZnJhbWVzQXZhaWxhYmxlICYmICFmcmFtZURlY29kZWQpCisgICAgIHsKKyAgICAgICAgIGZy YW1lc0F2YWlsYWJsZSA9IGF2X3JlYWRfZnJhbWUobV9wRm9ybWF0Q29udGV4dCwgbV9wUGFja2V0 KSA+PSAwOworQEAgLTY0NCw3ICs2NTUsNyBAQAorIAorIGludDMyX3QgTW92aWVEZWNvZGVyOjpn ZXRTdHJlYW1Sb3RhdGlvbigpCisgeworLSAgICBpbnQzMl90KiBtYXRyaXggPSByZWludGVycHJl dF9jYXN0PGludDMyX3QqPihhdl9zdHJlYW1fZ2V0X3NpZGVfZGF0YShtX3BWaWRlb1N0cmVhbSwg QVZfUEtUX0RBVEFfRElTUExBWU1BVFJJWCwgbnVsbHB0cikpOworKyAgICBhdXRvIG1hdHJpeCA9 IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KGF2X3N0cmVhbV9nZXRfc2lkZV9kYXRhKG1fcFZp ZGVvU3RyZWFtLCBBVl9QS1RfREFUQV9ESVNQTEFZTUFUUklYLCBudWxscHRyKSk7CisgICAgIGlm IChtYXRyaXgpCisgICAgIHsKKyAgICAgICAgIGF1dG8gYW5nbGUgPSBscm91bmQoYXZfZGlzcGxh eV9yb3RhdGlvbl9nZXQobWF0cml4KSk7CisKKy0tLSBhL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21v dmllZGVjb2Rlci5oCTIwMTctMTEtMTIgMDQ6MjM6MzguMDAwMDAwMDAwIC0wNTAwCisrKysgYi9s aWJmZm1wZWd0aHVtYm5haWxlci9tb3ZpZWRlY29kZXIuaAkyMDIzLTA1LTA1IDEzOjI2OjA3LjA5 NTUyOTkxMSAtMDQwMAorQEAgLTc4LDcgKzc4LDcgQEAKKyAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgbV9WaWRlb1N0cmVhbTsNCisgICAgIEFWRm9ybWF0Q29udGV4dCogICAgICAgIG1fcEZv cm1hdENvbnRleHQ7DQorICAgICBBVkNvZGVjQ29udGV4dCogICAgICAgICBtX3BWaWRlb0NvZGVj Q29udGV4dDsNCistICAgIEFWQ29kZWMqICAgICAgICAgICAgICAgIG1fcFZpZGVvQ29kZWM7DQor KyAgICBjb25zdCBBVkNvZGVjKiAgICAgICAgICBtX3BWaWRlb0NvZGVjOw0KKyAgICAgQVZGaWx0 ZXJHcmFwaCogICAgICAgICAgbV9wRmlsdGVyR3JhcGg7DQorICAgICBBVkZpbHRlckNvbnRleHQq ICAgICAgICBtX3BGaWx0ZXJTb3VyY2U7DQorICAgICBBVkZpbHRlckNvbnRleHQqICAgICAgICBt X3BGaWx0ZXJTaW5rOw0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvdGVt cGxhdGUgYi9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3RlbXBsYXRlCmluZGV4IDAzOWVlYTc2 MjJiMy4uMzVkNTQ2MDE4ZDEyIDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVy L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWd0aHVtYm5haWxlcicKIHBrZ25h bWU9ZmZtcGVndGh1bWJuYWlsZXIKIHZlcnNpb249Mi4yLjIKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtl ZGVwZW5kcz0ibGlicG5nLWRldmVsIGxpYmpwZWctdHVyYm8tZGV2ZWwgZmZtcGVnLWRldmVsIgpA QCAtOSw4ICs5LDggQEAgZGVwZW5kcz0iZmZtcGVnIgogc2hvcnRfZGVzYz0iTGlnaHR3ZWlnaHQg dmlkZW8gdGh1bWJuYWlsZXIiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51 eC5vcmc+IgogbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKLWhvbWVwYWdlPSJodHRwczovL2dp dGh1Yi5jb20vZGlya3ZkYi8ke3BrZ25hbWV9IgotZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9yZWxl YXNlcy9kb3dubG9hZC8ke3ZlcnNpb259LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIuYnoyIgor aG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9kaXJrdmRiIgorZGlzdGZpbGVzPSIke2hvbWVw YWdlfS8ke3BrZ25hbWV9L3JlbGVhc2VzL2Rvd25sb2FkLyR7dmVyc2lvbn0vJHtwa2duYW1lfS0k e3ZlcnNpb259LnRhci5iejIiCiBjaGVja3N1bT0xY2IyNDA1OWMzODIyM2Y2NTdiMzAwYzg0ZGQ4 MDQ5MWI3MDQwZDRiNjk0NzFjNGZlYTY5YmU4NjJiYzk5YjViCiAKIHBvc3RfaW5zdGFsbCgpIHsK CkZyb20gZTYzYzI1MDk2ZDNkZWIzMjU2MmIyYTBiYWZmYjYxODI0MGY0OTUxOSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM1LzExNV0gZmZt cGVndGh1bWJzOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZmZtcGVndGh1 bWJzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUgYi9z cmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZQppbmRleCA1ZjBiOTQxNGRhZGEuLjExYjg4MTkz NTI4ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdmZm1wZWd0aHVtYnMnCiBwa2duYW1lPWZmbXBlZ3RodW1icwogdmVyc2lvbj0yMi4x Mi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2Vk ZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVzIGtjb3JlYWRkb25zIGtjb25maWctZGV2ZWwKICBw a2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSBnZXR0ZXh0IgoKRnJvbSA0ZTlhZGJh Nzk5NGJkOWQzMTQwZTU3NzM3N2Y3YThjMjhhYzQwM2FkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIz IDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzYvMTE1XSBmZm1zMjogcmV2YnVtcCBm b3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8 IDQyNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2ZmbXMyL3RlbXBsYXRl ICAgICAgICAgICAgICB8ICAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCA0MjUgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtczIvcGF0Y2hl cy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1zMi9wYXRjaGVzL2ZmbXBl ZzUucGF0Y2ggYi9zcmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE0NzlmYWJjYWZjYgotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsNDI0 IEBACitGcm9tIDQ1NjczMTQ5ZTlhMmY1NTg2ODU1YWQ0NzJlMzA1OTA4NGVhYTM2YjEgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5o dWlzQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNCBNYXkgMjAyMSAxNDo0MToyMSArMDEwMAorU3Vi amVjdDogW1BBVENIXSBVc2UgYXV0byBmb3IgQVZDb2RlYworCitUaGUgZ2VuaXVzZXMgb3ZlciBh dCBGRm1wZWcgZGVjaWRlZCB0byBjb25zdGlmeSB0aGlzIEFQSSwgc28gb2xkCit2ZXJzaW9ucyBv ZiB0aGUgbGlicmFyeSB3aWxsIHJldHVybiBBVkNvZGVjICosIHdoaWxlIG5ldyB2ZXJzaW9ucwor b2YgdGhlIGxpYmFyeSB3aWxsIHJldHVybiBjb25zdCBBVkNvZGVjICosIHdoaWNoLCBpbiBDKyss IGFyZSBub3QKK09LIHRvIGNvbnZlcnQgYmV0d2Vlbi4KKworUmF0aGVyIHRoYW4gdXNlIHNvbWUg bWFjcm8gaGVsbCBpbiBmZm1zY29tcGF0LmgsIHdlIGNhbiB3b3JrIGFyb3VuZAordGhpcyBieSB1 c2luZyBhdXRvLgorCitHcm9zcy4KKworU2lnbmVkLW9mZi1ieTogRGVyZWsgQnVpdGVuaHVpcyA8 ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CistLS0KKyBzcmMvY29yZS9hdWRpb3NvdXJjZS5j cHAgfCAyICstCisgc3JjL2NvcmUvaW5kZXhpbmcuY3BwICAgIHwgNiArKystLS0KKyBzcmMvY29y ZS92aWRlb3NvdXJjZS5jcHAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMo KyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9hdWRpb3NvdXJjZS5j cHAgYi9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKK2luZGV4IGU0Y2U5N2MuLmFjMDk2NjYgMTAw NjQ0CistLS0gYS9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKKysrKyBiL3NyYy9jb3JlL2F1ZGlv c291cmNlLmNwcAorQEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIEZGTVNfQXVkaW9Tb3VyY2U6Ok9w ZW5GaWxlKCkgeworIAorICAgICBMQVZGT3BlbkZpbGUoU291cmNlRmlsZS5jX3N0cigpLCBGb3Jt YXRDb250ZXh0LCBUcmFja051bWJlcik7CisgCistICAgIEFWQ29kZWMgKkNvZGVjID0gYXZjb2Rl Y19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja051bWJlcl0tPmNvZGVj cGFyLT5jb2RlY19pZCk7CisrICAgIGF1dG8gKkNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIo Rm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja051bWJlcl0tPmNvZGVjcGFyLT5jb2RlY19pZCk7 CisgICAgIGlmIChDb2RlYyA9PSBudWxscHRyKQorICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRp b24oRkZNU19FUlJPUl9ERUNPRElORywgRkZNU19FUlJPUl9DT0RFQywKKyAgICAgICAgICAgICAi QXVkaW8gY29kZWMgbm90IGZvdW5kIik7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvaW5kZXhpbmcu Y3BwIGIvc3JjL2NvcmUvaW5kZXhpbmcuY3BwCitpbmRleCBlNTQ3YzVhLi41OWZiNGU4IDEwMDY0 NAorLS0tIGEvc3JjL2NvcmUvaW5kZXhpbmcuY3BwCisrKysgYi9zcmMvY29yZS9pbmRleGluZy5j cHAKK0BAIC0zODQsNyArMzg0LDcgQEAgRkZNU19UcmFja1R5cGUgRkZNU19JbmRleGVyOjpHZXRU cmFja1R5cGUoaW50IFRyYWNrKSB7CisgfQorIAorIGNvbnN0IGNoYXIgKkZGTVNfSW5kZXhlcjo6 R2V0VHJhY2tDb2RlYyhpbnQgVHJhY2spIHsKKy0gICAgQVZDb2RlYyAqY29kZWMgPSBhdmNvZGVj X2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNv ZGVjX2lkKTsKKysgICAgYXV0byAqY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRD b250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgcmV0dXJu IGNvZGVjID8gY29kZWMtPm5hbWUgOiBudWxscHRyOworIH0KKyAKK0BAIC00MDIsNyArNDAyLDcg QEAgRkZNU19JbmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAg IFVzZURUUyk7CisgCisgICAgICAgICBpZiAoSW5kZXhNYXNrLmNvdW50KGkpICYmIEZvcm1hdENv bnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9W SURFTykgeworLSAgICAgICAgICAgIEFWQ29kZWMgKlZpZGVvQ29kZWMgPSBhdmNvZGVjX2ZpbmRf ZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfaWQpOwor KyAgICAgICAgICAgIGF1dG8gKlZpZGVvQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3Jt YXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworICAgICAgICAgICAg IGlmICghVmlkZW9Db2RlYykgeworICAgICAgICAgICAgICAgICBGb3JtYXRDb250ZXh0LT5zdHJl YW1zW2ldLT5kaXNjYXJkID0gQVZESVNDQVJEX0FMTDsKKyAgICAgICAgICAgICAgICAgSW5kZXhN YXNrLmVyYXNlKGkpOworQEAgLTQzMyw3ICs0MzMsNyBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4 ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgICAgIEluZGV4TWFzay5pbnNlcnQoaSk7 CisgICAgICAgICAgICAgfQorICAgICAgICAgfSBlbHNlIGlmIChJbmRleE1hc2suY291bnQoaSkg JiYgRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZN RURJQV9UWVBFX0FVRElPKSB7CistICAgICAgICAgICAgQVZDb2RlYyAqQXVkaW9Db2RlYyA9IGF2 Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5j b2RlY19pZCk7CisrICAgICAgICAgICAgYXV0byAqQXVkaW9Db2RlYyA9IGF2Y29kZWNfZmluZF9k ZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7Cisg ICAgICAgICAgICAgaWYgKEF1ZGlvQ29kZWMgPT0gbnVsbHB0cikKKyAgICAgICAgICAgICAgICAg dGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9DT0RFQywgRkZNU19FUlJPUl9VTlNVUFBP UlRFRCwKKyAgICAgICAgICAgICAgICAgICAgICJBdWRpbyBjb2RlYyBub3QgZm91bmQiKTsKK2Rp ZmYgLS1naXQgYS9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgYi9zcmMvY29yZS92aWRlb3NvdXJj ZS5jcHAKK2luZGV4IGI4ODk5NzAuLjg5NTZjMjIgMTAwNjQ0CistLS0gYS9zcmMvY29yZS92aWRl b3NvdXJjZS5jcHAKKysrKyBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAorQEAgLTE3MSw3ICsx NzEsNyBAQCBGRk1TX1ZpZGVvU291cmNlOjpGRk1TX1ZpZGVvU291cmNlKGNvbnN0IGNoYXIgKlNv dXJjZUZpbGUsIEZGTVNfSW5kZXggJkluZGV4LCBpbgorIAorICAgICAgICAgTEFWRk9wZW5GaWxl KFNvdXJjZUZpbGUsIEZvcm1hdENvbnRleHQsIFZpZGVvVHJhY2spOworIAorLSAgICAgICAgQVZD b2RlYyAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1z W1ZpZGVvVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAgICAgICAgYXV0byAqQ29kZWMg PSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1ZpZGVvVHJhY2td LT5jb2RlY3Bhci0+Y29kZWNfaWQpOworICAgICAgICAgaWYgKENvZGVjID09IG51bGxwdHIpCisg ICAgICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9ERUNPRElORywgRkZN U19FUlJPUl9DT0RFQywKKyAgICAgICAgICAgICAgICAgIlZpZGVvIGNvZGVjIG5vdCBmb3VuZCIp OworLS0gCisyLjQwLjAKKworRnJvbSA5NmNiZjM4ZWE5MzgxODI5YTEzMTRmNDMyYTJjNjA0OTVk Y2VmYWFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVyZWsgQnVpdGVuaHVpcyA8 ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CitEYXRlOiBUdWUsIDQgTWF5IDIwMjEgMTQ6MTI6 NDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gYWxsOiBVcGRhdGUgQVZQYWNrZXQgQVBJIHVzYWdl CisKK0FWUGFja2V0cyBtdXN0IGFsbCBiZSBvbiB0aGUgaGVhcCBub3csIHNpbmNlIGl0IGlzIG5v IGxvbmdlcgorcGFydCBvZiB0aGUgbGliYXYqIEFCSS4KKworU2lnbmVkLW9mZi1ieTogRGVyZWsg QnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CistLS0KKyBzcmMvY29yZS9h dWRpb3NvdXJjZS5jcHAgfCAxNiArKysrKystLS0tCisgc3JjL2NvcmUvaW5kZXhpbmcuY3BwICAg IHwgNjMgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9jb3Jl L2luZGV4aW5nLmggICAgICB8ICA0ICstLQorIHNyYy9jb3JlL3V0aWxzLmNwcCAgICAgICB8ICA2 IC0tLS0KKyBzcmMvY29yZS91dGlscy5oICAgICAgICAgfCAgMSAtCisgc3JjL2NvcmUvdmlkZW9z b3VyY2UuY3BwIHwgMzAgKysrKysrKysrKy0tLS0tLS0tLQorIDYgZmlsZXMgY2hhbmdlZCwgNjQg aW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9h dWRpb3NvdXJjZS5jcHAgYi9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKK2luZGV4IDM3Y2Y5YWUu LmU0Y2U5N2MgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKKysrKyBiL3Ny Yy9jb3JlL2F1ZGlvc291cmNlLmNwcAorQEAgLTI4NSwxMCArMjg1LDE1IEBAIEZGTVNfQXVkaW9T b3VyY2U6OkF1ZGlvQmxvY2sgKkZGTVNfQXVkaW9Tb3VyY2U6OkNhY2hlQmxvY2soQ2FjaGVJdGVy YXRvciAmcG9zKSB7CisgaW50IEZGTVNfQXVkaW9Tb3VyY2U6OkRlY29kZU5leHRCbG9jayhDYWNo ZUl0ZXJhdG9yICpwb3MpIHsKKyAgICAgQ3VycmVudEZyYW1lID0gJkZyYW1lc1tQYWNrZXROdW1i ZXJdOworIAorLSAgICBBVlBhY2tldCBQYWNrZXQ7CistICAgIGlmICghUmVhZFBhY2tldCgmUGFj a2V0KSkKKysgICAgQVZQYWNrZXQgKlBhY2tldCA9IGF2X3BhY2tldF9hbGxvYygpOworKyAgICBp ZiAoIVBhY2tldCkKKysgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfUEFS U0VSLCBGRk1TX0VSUk9SX0FMTE9DQVRJT05fRkFJTEVELAorKyAgICAgICAgICAgICJDb3VsZCBu b3QgYWxsb2NhdGUgcGFja2V0LiIpOworKyAgICBpZiAoIVJlYWRQYWNrZXQoUGFja2V0KSkgewor KyAgICAgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgICAgICAgICB0aHJvdyBGRk1TX0V4 Y2VwdGlvbihGRk1TX0VSUk9SX1BBUlNFUiwgRkZNU19FUlJPUl9VTktOT1dOLAorICAgICAgICAg ICAgICJSZWFkUGFja2V0IHVuZXhwZWN0ZWRseSBmYWlsZWQgdG8gcmVhZCBhIHBhY2tldCIpOwor KyAgICB9CisgCisgICAgIC8vIFJlYWRQYWNrZXQgbWF5IGhhdmUgY2hhbmdlZCB0aGUgcGFja2V0 IG51bWJlcgorICAgICBDdXJyZW50RnJhbWUgPSAmRnJhbWVzW1BhY2tldE51bWJlcl07CitAQCAt Mjk3LDggKzMwMiw5IEBAIGludCBGRk1TX0F1ZGlvU291cmNlOjpEZWNvZGVOZXh0QmxvY2soQ2Fj aGVJdGVyYXRvciAqcG9zKSB7CisgICAgIGludCBOdW1iZXJPZlNhbXBsZXMgPSAwOworICAgICBB dWRpb0Jsb2NrICpDYWNoZWRCbG9jayA9IG51bGxwdHI7CisgICAgIAorLSAgICBpbnQgUmV0ID0g YXZjb2RlY19zZW5kX3BhY2tldChDb2RlY0NvbnRleHQsICZQYWNrZXQpOworLSAgICBhdl9wYWNr ZXRfdW5yZWYoJlBhY2tldCk7CisrICAgIGludCBSZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KENv ZGVjQ29udGV4dCwgUGFja2V0KTsKKysgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisrICAg IGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworIAorICAgICBhdl9mcmFtZV91bnJlZihEZWNvZGVG cmFtZSk7CisgICAgIFJldCA9IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZShDb2RlY0NvbnRleHQsIERl Y29kZUZyYW1lKTsKK0BAIC01MTMsOCArNTE5LDYgQEAgdm9pZCBGRk1TX0F1ZGlvU291cmNlOjpT ZWVrKCkgeworIH0KKyAKKyBib29sIEZGTVNfQXVkaW9Tb3VyY2U6OlJlYWRQYWNrZXQoQVZQYWNr ZXQgKlBhY2tldCkgeworLSAgICBJbml0TnVsbFBhY2tldCgqUGFja2V0KTsKKy0KKyAgICAgd2hp bGUgKGF2X3JlYWRfZnJhbWUoRm9ybWF0Q29udGV4dCwgUGFja2V0KSA+PSAwKSB7CisgICAgICAg ICBpZiAoUGFja2V0LT5zdHJlYW1faW5kZXggPT0gVHJhY2tOdW1iZXIpIHsKKyAgICAgICAgICAg ICAvLyBSZXF1aXJlZCBiZWNhdXNlIG5vdCBhbGwgYXVkaW8gcGFja2V0cywgZXNwZWNpYWxseSBp biBvZ2csIGhhdmUgYSBwdHMuIFVzZSB0aGUgcHJldmlvdXMgdmFsaWQgcGFja2V0J3MgcHRzIGlu c3RlYWQuCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvaW5kZXhpbmcuY3BwIGIvc3JjL2NvcmUvaW5k ZXhpbmcuY3BwCitpbmRleCAyM2ZiOTViLi5lNTQ3YzVhIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUv aW5kZXhpbmcuY3BwCisrKysgYi9zcmMvY29yZS9pbmRleGluZy5jcHAKK0BAIC0zMjAsNyArMzIw LDcgQEAgdm9pZCBGRk1TX0luZGV4ZXI6OkNoZWNrQXVkaW9Qcm9wZXJ0aWVzKGludCBUcmFjaywg QVZDb2RlY0NvbnRleHQgKkNvbnRleHQpIHsKKyAgICAgfQorIH0KKyAKKy12b2lkIEZGTVNfSW5k ZXhlcjo6UGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQ YWNrZXQgJnBrdCwgaW50ICpSZXBlYXRQaWN0LAorK3ZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZp ZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAqcGt0LCBp bnQgKlJlcGVhdFBpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 ICpGcmFtZVR5cGUsIGJvb2wgKkludmlzaWJsZSwgZW51bSBBVlBpY3R1cmVTdHJ1Y3R1cmUgKkxh c3RQaWNTdHJ1Y3QpIHsKKyAgICAgaWYgKFZpZGVvQ29udGV4dC5QYXJzZXIpIHsKKyAgICAgICAg IHVpbnQ4X3QgKk9COworQEAgLTMzMCw4ICszMzAsOCBAQCB2b2lkIEZGTVNfSW5kZXhlcjo6UGFy c2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBr dAorICAgICAgICAgYXZfcGFyc2VyX3BhcnNlMihWaWRlb0NvbnRleHQuUGFyc2VyLAorICAgICAg ICAgICAgIFZpZGVvQ29udGV4dC5Db2RlY0NvbnRleHQsCisgICAgICAgICAgICAgJk9CLCAmT0JT aXplLAorLSAgICAgICAgICAgIHBrdC5kYXRhLCBwa3Quc2l6ZSwKKy0gICAgICAgICAgICBwa3Qu cHRzLCBwa3QuZHRzLCBwa3QucG9zKTsKKysgICAgICAgICAgICBwa3QtPmRhdGEsIHBrdC0+c2l6 ZSwKKysgICAgICAgICAgICBwa3QtPnB0cywgcGt0LT5kdHMsIHBrdC0+cG9zKTsKKyAKKyAgICAg ICAgIC8vIEguMjY0IChQQUZGKSBhbmQgSEVWQyBtYXkgaGF2ZSBvbmUgZmllbGQgcGVyIHBhY2tl dCwgc28gd2UgbmVlZCB0byB0cmFjaworICAgICAgICAgLy8gd2hlbiB3ZSBoYXZlIGEgZnVsbCBv ciBoYWxmIGZyYW1lIGF2YWlsYWJsZSwgYW5kIG1hcmsgb25lIG9mIHRoZW0gYXMKK0BAIC0zNTEs MTUgKzM1MSwxNSBAQCB2b2lkIEZGTVNfSW5kZXhlcjo6UGFyc2VWaWRlb1BhY2tldChTaGFyZWRB VkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBrdAorIAorICAgICAgICAgKlJlcGVh dFBpY3QgPSBWaWRlb0NvbnRleHQuUGFyc2VyLT5yZXBlYXRfcGljdDsKKyAgICAgICAgICpGcmFt ZVR5cGUgPSBWaWRlb0NvbnRleHQuUGFyc2VyLT5waWN0X3R5cGU7CistICAgICAgICAqSW52aXNp YmxlID0gKEluY29tcGxldGVGcmFtZSB8fCBWaWRlb0NvbnRleHQuUGFyc2VyLT5yZXBlYXRfcGlj dCA8IDAgfHwgKHBrdC5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpKTsKKysgICAgICAgICpJ bnZpc2libGUgPSAoSW5jb21wbGV0ZUZyYW1lIHx8IFZpZGVvQ29udGV4dC5QYXJzZXItPnJlcGVh dF9waWN0IDwgMCB8fCAocGt0LT5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpKTsKKyAgICAg fSBlbHNlIHsKKy0gICAgICAgICpJbnZpc2libGUgPSAhIShwa3QuZmxhZ3MgJiBBVl9QS1RfRkxB R19ESVNDQVJEKTsKKysgICAgICAgICpJbnZpc2libGUgPSAhIShwa3QtPmZsYWdzICYgQVZfUEtU X0ZMQUdfRElTQ0FSRCk7CisgICAgIH0KKyAKKyAgICAgaWYgKFZpZGVvQ29udGV4dC5Db2RlY0Nv bnRleHQtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOCkKKy0gICAgICAgIFBhcnNlVlA4KHBr dC5kYXRhWzBdLCBJbnZpc2libGUsIEZyYW1lVHlwZSk7CisrICAgICAgICBQYXJzZVZQOChwa3Qt PmRhdGFbMF0sIEludmlzaWJsZSwgRnJhbWVUeXBlKTsKKyAgICAgZWxzZSBpZiAoVmlkZW9Db250 ZXh0LkNvZGVjQ29udGV4dC0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5KQorLSAgICAgICAg UGFyc2VWUDkocGt0LmRhdGFbMF0sIEludmlzaWJsZSwgRnJhbWVUeXBlKTsKKysgICAgICAgIFBh cnNlVlA5KHBrdC0+ZGF0YVswXSwgSW52aXNpYmxlLCBGcmFtZVR5cGUpOworIH0KKyAKKyB2b2lk IEZGTVNfSW5kZXhlcjo6RnJlZSgpIHsKK0BAIC00NTgsMzIgKzQ1OCwzNiBAQCBGRk1TX0luZGV4 ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICB9CisgICAgIH0KKyAKKy0g ICAgQVZQYWNrZXQgUGFja2V0OworLSAgICBJbml0TnVsbFBhY2tldChQYWNrZXQpOworKyAgICBB VlBhY2tldCAqUGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrICAgIGlmICghUGFja2V0KQor KyAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9DT0RFQywgRkZNU19FUlJP Ul9BTExPQ0FUSU9OX0ZBSUxFRCwKKysgICAgICAgICAgICAiQ291bGQgbm90IGFsbG9jYXRlIHBh Y2tldC4iKTsKKyAgICAgc3RkOjp2ZWN0b3I8aW50NjRfdD4gTGFzdFZhbGlkVFMoRm9ybWF0Q29u dGV4dC0+bmJfc3RyZWFtcywgQVZfTk9QVFNfVkFMVUUpOworIAorICAgICBpbnQ2NF90IGZpbGVz aXplID0gYXZpb19zaXplKEZvcm1hdENvbnRleHQtPnBiKTsKKyAgICAgZW51bSBBVlBpY3R1cmVT dHJ1Y3R1cmUgTGFzdFBpY1N0cnVjdCA9IEFWX1BJQ1RVUkVfU1RSVUNUVVJFX1VOS05PV047Cist ICAgIHdoaWxlIChhdl9yZWFkX2ZyYW1lKEZvcm1hdENvbnRleHQsICZQYWNrZXQpID49IDApIHsK KysgICAgd2hpbGUgKGF2X3JlYWRfZnJhbWUoRm9ybWF0Q29udGV4dCwgUGFja2V0KSA+PSAwKSB7 CisgICAgICAgICAvLyBVcGRhdGUgcHJvZ3Jlc3MKKyAgICAgICAgIC8vIEZvcm1hdENvbnRleHQt PnBiIGNhbiBhcHBhcmVudGx5IGJlIE5VTEwgd2hlbiBvcGVuaW5nIGltYWdlcy4KKyAgICAgICAg IGlmIChJQyAmJiBGb3JtYXRDb250ZXh0LT5wYikgeworLSAgICAgICAgICAgIGlmICgoKklDKShG b3JtYXRDb250ZXh0LT5wYi0+cG9zLCBmaWxlc2l6ZSwgSUNQcml2YXRlKSkKKysgICAgICAgICAg ICBpZiAoKCpJQykoRm9ybWF0Q29udGV4dC0+cGItPnBvcywgZmlsZXNpemUsIElDUHJpdmF0ZSkp IHsKKysgICAgICAgICAgICAgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgICAgICAgICAg ICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfQ0FOQ0VMTEVELCBGRk1TX0VS Uk9SX1VTRVIsCisgICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsbGVkIGJ5IHVzZXIiKTsKKysg ICAgICAgICAgICB9CisgICAgICAgICB9CistICAgICAgICBpZiAoIUluZGV4TWFzay5jb3VudChQ YWNrZXQuc3RyZWFtX2luZGV4KSkgeworLSAgICAgICAgICAgIGF2X3BhY2tldF91bnJlZigmUGFj a2V0KTsKKysgICAgICAgIGlmICghSW5kZXhNYXNrLmNvdW50KFBhY2tldC0+c3RyZWFtX2luZGV4 KSkgeworKyAgICAgICAgICAgIGF2X3BhY2tldF91bnJlZihQYWNrZXQpOworICAgICAgICAgICAg IGNvbnRpbnVlOworICAgICAgICAgfQorIAorLSAgICAgICAgaW50IFRyYWNrID0gUGFja2V0LnN0 cmVhbV9pbmRleDsKKysgICAgICAgIGludCBUcmFjayA9IFBhY2tldC0+c3RyZWFtX2luZGV4Owor ICAgICAgICAgRkZNU19UcmFjayAmVHJhY2tJbmZvID0gKCpUcmFja0luZGljZXMpW1RyYWNrXTsK Ky0gICAgICAgIGJvb2wgS2V5RnJhbWUgPSAhIShQYWNrZXQuZmxhZ3MgJiBBVl9QS1RfRkxBR19L RVkpOworKyAgICAgICAgYm9vbCBLZXlGcmFtZSA9ICEhKFBhY2tldC0+ZmxhZ3MgJiBBVl9QS1Rf RkxBR19LRVkpOworICAgICAgICAgUmVhZFRTKFBhY2tldCwgTGFzdFZhbGlkVFNbVHJhY2tdLCAo KlRyYWNrSW5kaWNlcylbVHJhY2tdLlVzZURUUyk7CisgCisgICAgICAgICBpZiAoRm9ybWF0Q29u dGV4dC0+c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQ RV9WSURFTykgeworLSAgICAgICAgICAgIGludDY0X3QgUFRTID0gVHJhY2tJbmZvLlVzZURUUyA/ IFBhY2tldC5kdHMgOiBQYWNrZXQucHRzOworKyAgICAgICAgICAgIGludDY0X3QgUFRTID0gVHJh Y2tJbmZvLlVzZURUUyA/IFBhY2tldC0+ZHRzIDogUGFja2V0LT5wdHM7CisgICAgICAgICAgICAg aWYgKFBUUyA9PSBBVl9OT1BUU19WQUxVRSkgeworICAgICAgICAgICAgICAgICAvLyBWUHggYWx0 LXJlZnMgYXJlIG91dHB1dCBhcyBwYWNrZXRzIHdoaWNoIGxhY2sgdGltZXN0bXBzIG9yIGR1cmF0 aW9ucywgc2luY2UKKyAgICAgICAgICAgICAgICAgLy8gdGhleSBhcmUgaW52aXNpYmxlLiBDdXJy ZW50bHksIHRoZSB0aW1lc3RhbXAgbWFuZ2xpbmcgY29kZSBpbiBsaWJhdmZvcm1hdAorQEAgLTQ5 NSw5ICs0OTksMTEgQEAgRkZNU19JbmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgewor ICAgICAgICAgICAgICAgICAvLyBGRk1TMiBjdXJyZW50bHkgc29ydHMgcGFja2V0cyBieSBQVFMs IHdoaWNoIHdpbGwgYnJlYWsgZGVjb2RpbmcsIG90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAg Ym9vbCBIYXNBbHRSZWZzID0gKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA4IHx8CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOSk7CistICAgICAgICAgICAgICAgIGlmIChQYWNrZXQu ZHVyYXRpb24gPT0gMCAmJiAhSGFzQWx0UmVmcykKKysgICAgICAgICAgICAgICAgaWYgKFBhY2tl dC0+ZHVyYXRpb24gPT0gMCAmJiAhSGFzQWx0UmVmcykgeworKyAgICAgICAgICAgICAgICAgICAg YXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgICAgICAgICAgICAgICAgICAgICB0aHJvdyBGRk1T X0V4Y2VwdGlvbihGRk1TX0VSUk9SX0lOREVYSU5HLCBGRk1TX0VSUk9SX1BBUlNFUiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBwYWNrZXQgcHRzLCBkdHMsIGFuZCBkdXJhdGlv biIpOworKyAgICAgICAgICAgICAgICB9CisgCisgICAgICAgICAgICAgICAgIGlmIChUcmFja0lu Zm8uZW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgIFBUUyA9IDA7CitAQCAtNTEzLDcgKzUx OSw3IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsKKyAgICAgICAg ICAgICBQYXJzZVZpZGVvUGFja2V0KEFWQ29udGV4dHNbVHJhY2tdLCBQYWNrZXQsICZSZXBlYXRQ aWN0LCAmRnJhbWVUeXBlLCAmSW52aXNpYmxlLCAmTGFzdFBpY1N0cnVjdCk7CisgCisgICAgICAg ICAgICAgVHJhY2tJbmZvLkFkZFZpZGVvRnJhbWUoUFRTLCBSZXBlYXRQaWN0LCBLZXlGcmFtZSwK Ky0gICAgICAgICAgICAgICAgRnJhbWVUeXBlLCBQYWNrZXQucG9zLCBJbnZpc2libGUpOworKyAg ICAgICAgICAgICAgICBGcmFtZVR5cGUsIFBhY2tldC0+cG9zLCBJbnZpc2libGUpOworICAgICAg ICAgfSBlbHNlIGlmIChGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNv ZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElPKSB7CisgICAgICAgICAgICAgLy8gRm9yIHZp ZGVvIHNlZWtpbmcgdGltZXN0YW1wcyBhcmUgdXNlZCBvbmx5IGlmIGFsbCBwYWNrZXRzIGhhdmUK KyAgICAgICAgICAgICAvLyB0aW1lc3RhbXBzLCB3aGlsZSBmb3IgYXVkaW8gdGhleSdyZSB1c2Vk IGlmIGFueSBoYXZlIHRpbWVzdGFtcHMsCitAQCAtNTIyLDI4ICs1MjgsMjkgQEAgRkZNU19JbmRl eCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAgICAgICBUcmFja0lu Zm8uSGFzVFMgPSB0cnVlOworIAorICAgICAgICAgICAgIGludDY0X3QgU3RhcnRTYW1wbGUgPSBB VkNvbnRleHRzW1RyYWNrXS5DdXJyZW50U2FtcGxlOworLSAgICAgICAgICAgIHVpbnQzMl90IFNh bXBsZUNvdW50ID0gSW5kZXhBdWRpb1BhY2tldChUcmFjaywgJlBhY2tldCwgQVZDb250ZXh0c1tU cmFja10sICpUcmFja0luZGljZXMpOworKyAgICAgICAgICAgIHVpbnQzMl90IFNhbXBsZUNvdW50 ID0gSW5kZXhBdWRpb1BhY2tldChUcmFjaywgUGFja2V0LCBBVkNvbnRleHRzW1RyYWNrXSwgKlRy YWNrSW5kaWNlcyk7CisgICAgICAgICAgICAgVHJhY2tJbmZvLlNhbXBsZVJhdGUgPSBBVkNvbnRl eHRzW1RyYWNrXS5Db2RlY0NvbnRleHQtPnNhbXBsZV9yYXRlOworIAorICAgICAgICAgICAgIFRy YWNrSW5mby5BZGRBdWRpb0ZyYW1lKExhc3RWYWxpZFRTW1RyYWNrXSwKKy0gICAgICAgICAgICAg ICAgU3RhcnRTYW1wbGUsIFNhbXBsZUNvdW50LCBLZXlGcmFtZSwgUGFja2V0LnBvcywgUGFja2V0 LmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCk7CisrICAgICAgICAgICAgICAgIFN0YXJ0U2Ft cGxlLCBTYW1wbGVDb3VudCwgS2V5RnJhbWUsIFBhY2tldC0+cG9zLCBQYWNrZXQtPmZsYWdzICYg QVZfUEtUX0ZMQUdfRElTQ0FSRCk7CisgICAgICAgICB9CisgCistICAgICAgICBpZiAoIShQYWNr ZXQuZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKSkKKy0gICAgICAgICAgICBUcmFja0luZm8u TGFzdER1cmF0aW9uID0gUGFja2V0LmR1cmF0aW9uOworKyAgICAgICAgaWYgKCEoUGFja2V0LT5m bGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpKQorKyAgICAgICAgICAgIFRyYWNrSW5mby5MYXN0 RHVyYXRpb24gPSBQYWNrZXQtPmR1cmF0aW9uOworIAorLSAgICAgICAgYXZfcGFja2V0X3VucmVm KCZQYWNrZXQpOworKyAgICAgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisgICAgIH0KKysg ICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgCisgICAgIFRyYWNrSW5kaWNlcy0+RmluYWxp emUoQVZDb250ZXh0cywgRm9ybWF0Q29udGV4dC0+aWZvcm1hdC0+bmFtZSk7CisgICAgIHJldHVy biBUcmFja0luZGljZXMucmVsZWFzZSgpOworIH0KKyAKKy12b2lkIEZGTVNfSW5kZXhlcjo6UmVh ZFRTKGNvbnN0IEFWUGFja2V0ICZQYWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VEVFMpIHsK Ky0gICAgaWYgKCFVc2VEVFMgJiYgUGFja2V0LnB0cyAhPSBBVl9OT1BUU19WQUxVRSkKKy0gICAg ICAgIFRTID0gUGFja2V0LnB0czsKKyt2b2lkIEZGTVNfSW5kZXhlcjo6UmVhZFRTKGNvbnN0IEFW UGFja2V0ICpQYWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VEVFMpIHsKKysgICAgaWYgKCFV c2VEVFMgJiYgUGFja2V0LT5wdHMgIT0gQVZfTk9QVFNfVkFMVUUpCisrICAgICAgICBUUyA9IFBh Y2tldC0+cHRzOworICAgICBpZiAoVFMgPT0gQVZfTk9QVFNfVkFMVUUpCisgICAgICAgICBVc2VE VFMgPSB0cnVlOworLSAgICBpZiAoVXNlRFRTICYmIFBhY2tldC5kdHMgIT0gQVZfTk9QVFNfVkFM VUUpCistICAgICAgICBUUyA9IFBhY2tldC5kdHM7CisrICAgIGlmIChVc2VEVFMgJiYgUGFja2V0 LT5kdHMgIT0gQVZfTk9QVFNfVkFMVUUpCisrICAgICAgICBUUyA9IFBhY2tldC0+ZHRzOworIH0K K2RpZmYgLS1naXQgYS9zcmMvY29yZS9pbmRleGluZy5oIGIvc3JjL2NvcmUvaW5kZXhpbmcuaAor aW5kZXggM2NmYzNjMy4uNWMwNjg2OCAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2luZGV4aW5nLmgK KysrKyBiL3NyYy9jb3JlL2luZGV4aW5nLmgKK0BAIC04MCwxMCArODAsMTAgQEAgcHJpdmF0ZToK KyAgICAgaW50NjRfdCBGaWxlc2l6ZTsKKyAgICAgdWludDhfdCBEaWdlc3RbMjBdOworIAorLSAg ICB2b2lkIFJlYWRUUyhjb25zdCBBVlBhY2tldCAmUGFja2V0LCBpbnQ2NF90ICZUUywgYm9vbCAm VXNlRFRTKTsKKysgICAgdm9pZCBSZWFkVFMoY29uc3QgQVZQYWNrZXQgKlBhY2tldCwgaW50NjRf dCAmVFMsIGJvb2wgJlVzZURUUyk7CisgICAgIHZvaWQgQ2hlY2tBdWRpb1Byb3BlcnRpZXMoaW50 IFRyYWNrLCBBVkNvZGVjQ29udGV4dCAqQ29udGV4dCk7CisgICAgIHVpbnQzMl90IEluZGV4QXVk aW9QYWNrZXQoaW50IFRyYWNrLCBBVlBhY2tldCAqUGFja2V0LCBTaGFyZWRBVkNvbnRleHQgJkNv bnRleHQsIEZGTVNfSW5kZXggJlRyYWNrSW5kaWNlcyk7CistICAgIHZvaWQgUGFyc2VWaWRlb1Bh Y2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBrdCwgaW50ICpS ZXBlYXRQaWN0LCBpbnQgKkZyYW1lVHlwZSwgYm9vbCAqSW52aXNpYmxlLCBlbnVtIEFWUGljdHVy ZVN0cnVjdHVyZSAqTGFzdFBpY1N0cnVjdCk7CisrICAgIHZvaWQgUGFyc2VWaWRlb1BhY2tldChT aGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgKnBrdCwgaW50ICpSZXBlYXRQ aWN0LCBpbnQgKkZyYW1lVHlwZSwgYm9vbCAqSW52aXNpYmxlLCBlbnVtIEFWUGljdHVyZVN0cnVj dHVyZSAqTGFzdFBpY1N0cnVjdCk7CisgICAgIHZvaWQgRnJlZSgpOworIHB1YmxpYzoKKyAgICAg RkZNU19JbmRleGVyKGNvbnN0IGNoYXIgKkZpbGVuYW1lKTsKK2RpZmYgLS1naXQgYS9zcmMvY29y ZS91dGlscy5jcHAgYi9zcmMvY29yZS91dGlscy5jcHAKK2luZGV4IGNlNjc1MzMuLjhhMmU5OTcg MTAwNjQ0CistLS0gYS9zcmMvY29yZS91dGlscy5jcHAKKysrKyBiL3NyYy9jb3JlL3V0aWxzLmNw cAorQEAgLTYyLDEyICs2Miw2IEBAIHZvaWQgQ2xlYXJFcnJvckluZm8oRkZNU19FcnJvckluZm8g KkVycm9ySW5mbykgeworICAgICB9CisgfQorIAorLXZvaWQgSW5pdE51bGxQYWNrZXQoQVZQYWNr ZXQgJnBrdCkgeworLSAgICBhdl9pbml0X3BhY2tldCgmcGt0KTsKKy0gICAgcGt0LmRhdGEgPSBu dWxscHRyOworLSAgICBwa3Quc2l6ZSA9IDA7CistfQorLQorIHZvaWQgRmlsbEFQKEZGTVNfQXVk aW9Qcm9wZXJ0aWVzICZBUCwgQVZDb2RlY0NvbnRleHQgKkNUWCwgRkZNU19UcmFjayAmRnJhbWVz KSB7CisgICAgIEFQLlNhbXBsZUZvcm1hdCA9IHN0YXRpY19jYXN0PEZGTVNfU2FtcGxlRm9ybWF0 Pihhdl9nZXRfcGFja2VkX3NhbXBsZV9mbXQoQ1RYLT5zYW1wbGVfZm10KSk7CisgICAgIEFQLkJp dHNQZXJTYW1wbGUgPSBhdl9nZXRfYnl0ZXNfcGVyX3NhbXBsZShDVFgtPnNhbXBsZV9mbXQpICog ODsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS91dGlscy5oIGIvc3JjL2NvcmUvdXRpbHMuaAoraW5k ZXggOTgxOWRjNy4uMDAzYWI3OSAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL3V0aWxzLmgKKysrKyBi L3NyYy9jb3JlL3V0aWxzLmgKK0BAIC01OCw3ICs1OCw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxUPiBt YWtlX3VuaXF1ZShBcmdzJiYuLi4gYXJncykgeworIH0KKyAKKyB2b2lkIENsZWFyRXJyb3JJbmZv KEZGTVNfRXJyb3JJbmZvICpFcnJvckluZm8pOworLXZvaWQgSW5pdE51bGxQYWNrZXQoQVZQYWNr ZXQgJnBrdCk7Cisgdm9pZCBGaWxsQVAoRkZNU19BdWRpb1Byb3BlcnRpZXMgJkFQLCBBVkNvZGVj Q29udGV4dCAqQ1RYLCBGRk1TX1RyYWNrICZGcmFtZXMpOworIAorIHZvaWQgTEFWRk9wZW5GaWxl KGNvbnN0IGNoYXIgKlNvdXJjZUZpbGUsIEFWRm9ybWF0Q29udGV4dCAqJkZvcm1hdENvbnRleHQs IGludCBUcmFjayk7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwIGIvc3Jj L2NvcmUvdmlkZW9zb3VyY2UuY3BwCitpbmRleCAwNmJkMTYxLi5iODg5OTcwIDEwMDY0NAorLS0t IGEvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwCisrKysgYi9zcmMvY29yZS92aWRlb3NvdXJjZS5j cHAKK0BAIC02NzMsMzAgKzY3MywzNCBAQCB2b2lkIEZGTVNfVmlkZW9Tb3VyY2U6OkRlY29kZU5l eHRGcmFtZShpbnQ2NF90ICZBU3RhcnRUaW1lLCBpbnQ2NF90ICZQb3MpIHsKKyAgICAgaWYgKEhh c1BlbmRpbmdEZWxheWVkRnJhbWVzKCkpCisgICAgICAgICByZXR1cm47CisgCistICAgIEFWUGFj a2V0IFBhY2tldDsKKy0gICAgSW5pdE51bGxQYWNrZXQoUGFja2V0KTsKKy0KKy0gICAgd2hpbGUg KFJlYWRGcmFtZSgmUGFja2V0KSA+PSAwKSB7CistICAgICAgICBpZiAoUGFja2V0LnN0cmVhbV9p bmRleCAhPSBWaWRlb1RyYWNrKSB7CistICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNr ZXQpOworKyAgICBBVlBhY2tldCAqUGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrICAgIGlm ICghUGFja2V0KQorKyAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9ERUNP RElORywgRkZNU19FUlJPUl9BTExPQ0FUSU9OX0ZBSUxFRCwKKysgICAgICAgICAgICAiQ291bGQg bm90IGFsbG9jYXRlIHBhY2tldC4iKTsKKysKKysgICAgd2hpbGUgKFJlYWRGcmFtZShQYWNrZXQp ID49IDApIHsKKysgICAgICAgIGlmIChQYWNrZXQtPnN0cmVhbV9pbmRleCAhPSBWaWRlb1RyYWNr KSB7CisrICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisgICAgICAgICAgICAg Y29udGludWU7CisgICAgICAgICB9CisgCisgICAgICAgICBpZiAoQVN0YXJ0VGltZSA8IDApCist ICAgICAgICAgICAgQVN0YXJ0VGltZSA9IEZyYW1lcy5Vc2VEVFMgPyBQYWNrZXQuZHRzIDogUGFj a2V0LnB0czsKKysgICAgICAgICAgICBBU3RhcnRUaW1lID0gRnJhbWVzLlVzZURUUyA/IFBhY2tl dC0+ZHRzIDogUGFja2V0LT5wdHM7CisgCisgICAgICAgICBpZiAoUG9zIDwgMCkKKy0gICAgICAg ICAgICBQb3MgPSBQYWNrZXQucG9zOworKyAgICAgICAgICAgIFBvcyA9IFBhY2tldC0+cG9zOwor IAorLSAgICAgICAgYm9vbCBGcmFtZUZpbmlzaGVkID0gRGVjb2RlUGFja2V0KCZQYWNrZXQpOwor LSAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworLSAgICAgICAgaWYgKEZyYW1lRmlu aXNoZWQpCisrICAgICAgICBib29sIEZyYW1lRmluaXNoZWQgPSBEZWNvZGVQYWNrZXQoUGFja2V0 KTsKKysgICAgICAgIGF2X3BhY2tldF91bnJlZihQYWNrZXQpOworKyAgICAgICAgaWYgKEZyYW1l RmluaXNoZWQpIHsKKysgICAgICAgICAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAg ICAgICAgICByZXR1cm47CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgLy8gRmx1c2ggZmlu YWwgZnJhbWVzCistICAgIEluaXROdWxsUGFja2V0KFBhY2tldCk7CistICAgIERlY29kZVBhY2tl dCgmUGFja2V0KTsKKysgICAgRGVjb2RlUGFja2V0KFBhY2tldCk7CisrICAgIGF2X3BhY2tldF9m cmVlKCZQYWNrZXQpOworIH0KKyAKKyBib29sIEZGTVNfVmlkZW9Tb3VyY2U6OlNlZWtUbyhpbnQg biwgaW50IFNlZWtPZmZzZXQpIHsKKy0tIAorMi40MC4wCisKK0Zyb20gYmY5ZTAzZTllMDg1MzRj MDI0ZTVhNzQ0YTY0MzdjNGFhYzE2MDIwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgorRGF0ZTogVHVl LCA0IE1heSAyMDIxIDE0OjIwOjQ3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBjb25maWd1 cmU6IFJlbW92ZSBkZXByZWNhdGVkIEFQSSB1c2UKKworU2lnbmVkLW9mZi1ieTogRGVyZWsgQnVp dGVuaHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMg fCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiMzVl ZjgwYmMuLmQxOTcxNGQwZiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmln dXJlLmFjCitAQCAtMTAyLDEwICsxMDIsMTAgQEAgQ0ZMQUdTPSIkX0NGTEFHUyAkRkZNUEVHX0NG TEFHUyIKKworIEFDX0RFRlVOKFtURVNUX0ZGTVBFR10sCisgICAgICAgICAgW0FDX0xJTktfSUZF TFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKy0gICAgICAgICAgICAjaW5jbHVkZSA8bGliYXZjb2Rl Yy9hdmNvZGVjLmg+CisrICAgICAgICAgICAgI2luY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2Zm9ybWF0 Lmg+CisgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnN3c2NhbGUvc3dzY2FsZS5oPgorICAgICAg ICAgICAgIF1dLFtbCistICAgICAgICAgICAgICAgIGF2Y29kZWNfcmVnaXN0ZXJfYWxsKCk7Cisr ICAgICAgICAgICAgICAgIGF2Zm9ybWF0X25ldHdvcmtfaW5pdCgpOworICAgICAgICAgICAgICAg ICBzd3NjYWxlX3ZlcnNpb24oKTsKKyAgICAgICAgICAgICBdXSldLCBbZXZhbCAkMT15ZXNdLCBb ZXZhbCAkMT1ub10pCisgICAgICAgICBdKQorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXMyL3Rl bXBsYXRlIGIvc3JjcGtncy9mZm1zMi90ZW1wbGF0ZQppbmRleCA2OGU4YTBjMTRiY2UuLjJhY2Zh ZGFjNDRiMyAxMDA2NDQKLS0tIGEvc3JjcGtncy9mZm1zMi90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2ZmbXMyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZmZt czInCiBwa2duYW1lPWZmbXMyCiB2ZXJzaW9uPTIuNDAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1zaGFy ZWQgLS1kaXNhYmxlLXN0YXRpYyIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBhdXRvY29u ZiBhdXRvbWFrZSBsaWJ0b29sIgoKRnJvbSAxMjIyZmU5MDhkNTFmNDk4MjhjZjkwN2M0MzI2OWI3 NzQ4NjNhMjM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwMzcvMTE1XSBmcmVlcmRwOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIC4u Li9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5wYXRjaCAgICB8IDQyICsrKysrKysr KysrKysrKysrKysKIHNyY3BrZ3MvZnJlZXJkcC90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAg ICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2Fh MmNiOWFhLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVn Nl9hYTJjYjlhYS5wYXRjaCBiL3NyY3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5 YWEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hNDMyNGRh M2E4ODIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2 X2FhMmNiOWFhLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gYWEyY2I5YWE1ZmY1NTYyNDMz NTk4YmExNjhhNDY2ZTA3NTJiY2EwZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGFr YWxsYWJldGggPGFrYWxsYWJldGhAcG9zdGVvLm5ldD4KK0RhdGU6IFR1ZSwgMTQgRmViIDIwMjMg MDc6NDg6NTQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4ZWQgIzg2ODY6IFVwZGF0ZSBoMjY0 IHRvIHVzZSBuZXcgRkZNUEVHIEFQSQorCistLS0KKyBjaGFubmVscy90c21mL2NsaWVudC9mZm1w ZWcvdHNtZl9mZm1wZWcuYyB8IDIgKysKKyBsaWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMg ICAgICAgICAgICB8IDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitk aWZmIC0tZ2l0IGEvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMgYi9j aGFubmVscy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYworaW5kZXggMzM5NDYyZDg2 NWYuLmJlZWE4MGI3YTFlIDEwMDY0NAorLS0tIGEvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVn L3RzbWZfZmZtcGVnLmMKKysrKyBiL2NoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90c21mX2Zm bXBlZy5jCitAQCAtMjM5LDggKzIzOSwxMCBAQCBzdGF0aWMgQk9PTCB0c21mX2ZmbXBlZ19pbml0 X3N0cmVhbShJVFNNRkRlY29kZXIqIGRlY29kZXIsIGNvbnN0IFRTX0FNX01FRElBX1RZUAorIAkJ fQorIAl9CisgCisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lOVCg1 OSwgMTgsIDEwMCkKKyAJaWYgKG1kZWNvZGVyLT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09E RUNfQ0FQX1RSVU5DQVRFRCkKKyAJCW1kZWNvZGVyLT5jb2RlY19jb250ZXh0LT5mbGFncyB8PSBB Vl9DT0RFQ19GTEFHX1RSVU5DQVRFRDsKKysjZW5kaWYKKyAKKyAJcmV0dXJuIFRSVUU7CisgfQor ZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYyBiL2xpYmZyZWVyZHAv Y29kZWMvaDI2NF9mZm1wZWcuYworaW5kZXggOGEyM2RiMjQ3M2MuLjg5NmEzMzMwMTliIDEwMDY0 NAorLS0tIGEvbGliZnJlZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5jCisrKysgYi9saWJmcmVlcmRw L2NvZGVjL2gyNjRfZmZtcGVnLmMKK0BAIC02MTUsMTAgKzYxNSwxMiBAQCBzdGF0aWMgQk9PTCBs aWJhdmNvZGVjX2luaXQoSDI2NF9DT05URVhUKiBoMjY0KQorIAkJCWdvdG8gRVhDRVBUSU9OOwor IAkJfQorIAorKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fSU5UIDwgQVZfVkVSU0lPTl9JTlQoNTks IDE4LCAxMDApCisgCQlpZiAoc3lzLT5jb2RlY0RlY29kZXItPmNhcGFiaWxpdGllcyAmIEFWX0NP REVDX0NBUF9UUlVOQ0FURUQpCisgCQl7CisgCQkJc3lzLT5jb2RlY0RlY29kZXJDb250ZXh0LT5m bGFncyB8PSBBVl9DT0RFQ19GTEFHX1RSVU5DQVRFRDsKKyAJCX0KKysjZW5kaWYKKyAKKyAjaWZk ZWYgV0lUSF9WQUFQSQorIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlcmRwL3RlbXBsYXRlIGIv c3JjcGtncy9mcmVlcmRwL3RlbXBsYXRlCmluZGV4IDI1ZThhYTk2NzdmMC4uNGQ1MWM4MTg5OTAy IDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZyZWVyZHAvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mcmVl cmRwL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZnJlZXJk cCcKIHBrZ25hbWU9ZnJlZXJkcAogdmVyc2lvbj0yLjEwLjAKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURXSVRIX0FMU0E9T04gLURX SVRIX0NVUFM9T0ZGIC1EV0lUSF9GRk1QRUc9T04KICAtRFdJVEhfR1NUUkVBTUVSXzBfMTA9T0ZG IC1EV0lUSF9HU1RSRUFNRVJfMV8wPU9GRiAtRFdJVEhfSlBFRz1PTgoKRnJvbSBmOTk1YjQ3Y2Nh Njg1ZGQyYjE0ZGFjYzE2ZWNjMzYxYWNmYWMxOTNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzgvMTE1XSBnZXJiZXJhOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZQppbmRleCBh ZTE0ZjM1Yzc2N2MuLjJkYzBhYzBjZTAzYiAxMDA2NDQKLS0tIGEvc3JjcGtncy9nZXJiZXJhL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ2dlcmJlcmEnCiBwa2duYW1lPWdlcmJlcmEKIHZlcnNpb249MS4x Mi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJl X2FyZ3M9Ii1EV0lUSF9TWVNURU1EPTAgLURXSVRIX0FWQ09ERUM9MSIKIGhvc3RtYWtlZGVwZW5k cz0icGtnLWNvbmZpZyIKCkZyb20gMWVjMWMyODY2YWVhMzgzZDRhNmNiN2ZmYThlYWFlMWZjODE1 MDVkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDM5LzExNV0gZ29sZGVuZGljdDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNw a2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc0LnBhdGNoIHwgIDIxIC0tCiBzcmNwa2dzL2dv bGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgMjMyICsrKysrKysrKysrKysrKysrKysr KysrCiBzcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUgICAgICAgICAgICAgIHwgICAyICstCiAz IGZpbGVzIGNoYW5nZWQsIDIzMyBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc0LnBhdGNoCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZtcGVnNS5wYXRj aAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzQucGF0Y2gg Yi9zcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc0LnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBmMDQ1ZmEyN2Y1NGIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEg KzAsMCBAQAotLS0tIGEvZmZtcGVnYXVkaW8uY2Mub3JpZyAyMDE4LTA1LTA5IDIyOjE2OjEzLjQ4 MDY1OTk1OCArMDIwMAotKysrIGIvZmZtcGVnYXVkaW8uY2MgICAgICAyMDE4LTA1LTA5IDIyOjE2 OjUwLjc0ODMyMjc5MCArMDIwMAotQEAgLTE0Myw3ICsxNDMsNyBAQAotICAgICByZXR1cm4gZmFs c2U7Ci0gICB9Ci0KLS0gIHVuc2lnbmVkIGNoYXIgKiBhdmlvQnVmZmVyID0gKCB1bnNpZ25lZCBj aGFyICogKWF2X21hbGxvYygga0J1ZmZlclNpemUgKyBGRl9JTlBVVF9CVUZGRVJfUEFERElOR19T SVpFICk7Ci0rICB1bnNpZ25lZCBjaGFyICogYXZpb0J1ZmZlciA9ICggdW5zaWduZWQgY2hhciAq IClhdl9tYWxsb2MoIGtCdWZmZXJTaXplICsgQVZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSAp OwotICAgaWYgKCAhYXZpb0J1ZmZlciApCi0gICB7Ci0gICAgIGVycm9yU3RyaW5nID0gUU9iamVj dDo6dHIoICJhdl9tYWxsb2MoKSBmYWlsZWQuIiApOwotQEAgLTM4MCw3ICszODAsNyBAQAotICAg fQotCi0gICBpZiAoICFRdDR4NTo6QXRvbWljSW50Ojpsb2FkQWNxdWlyZSggaXNDYW5jZWxsZWRf ICkgJiYKLS0gICAgICAgY29kZWNDb250ZXh0Xy0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIENPREVD X0NBUF9ERUxBWSApCi0rICAgICAgIGNvZGVjQ29udGV4dF8tPmNvZGVjLT5jYXBhYmlsaXRpZXMg JiBBVl9DT0RFQ19DQVBfREVMQVkgKQotICAgewotICAgICBhdl9pbml0X3BhY2tldCggJnBhY2tl dCApOwotICAgICBpbnQgZ290RnJhbWUgPSAwOwotCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dvbGRl bmRpY3QvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9nb2xkZW5kaWN0L3BhdGNoZXMv ZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdj ZmM5OGFkYTM2OAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVz L2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSwyMzIgQEAKK0Zyb20gMDNiYmUwMWI3OWExZjA3YTY3 ODBjYjYwZjIzYTA4NzEwNGM1ZDc3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFi czYyIDxvdHRvbWFubkB5YW5kZXgucnU+CitEYXRlOiBGcmksIDMwIE1hciAyMDE4IDIyOjUzOjI0 ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCB3YXJuaW5ncyB3aGlsZSBjb21waWxlIHdpdGgg RkZNcGVnIDMuNC4yIChpc3N1ZSAjOTc4KQorCistLS0KKyBmZm1wZWdhdWRpby5jYyB8IDY4ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCisgMSBmaWxl IGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQg YS9mZm1wZWdhdWRpby5jYyBiL2ZmbXBlZ2F1ZGlvLmNjCitpbmRleCBlZDExNzJiZGQuLjU2ZThm Nzg4ZSAxMDA2NDQKKy0tLSBhL2ZmbXBlZ2F1ZGlvLmNjCisrKysgYi9mZm1wZWdhdWRpby5jYwor QEAgLTkxLDYgKzkxLDcgQEAgc3RydWN0IERlY29kZXJDb250ZXh0CisgICBRQnl0ZUFycmF5IGF1 ZGlvRGF0YV87CisgICBRRGF0YVN0cmVhbSBhdWRpb0RhdGFTdHJlYW1fOworICAgQVZGb3JtYXRD b250ZXh0ICogZm9ybWF0Q29udGV4dF87CisrICBBVkNvZGVjICogY29kZWNfOworICAgQVZDb2Rl Y0NvbnRleHQgKiBjb2RlY0NvbnRleHRfOworICAgQVZJT0NvbnRleHQgKiBhdmlvQ29udGV4dF87 CisgICBBVlN0cmVhbSAqIGF1ZGlvU3RyZWFtXzsKK0BAIC0xMTQsNiArMTE1LDcgQEAgRGVjb2Rl ckNvbnRleHQ6OkRlY29kZXJDb250ZXh0KCBRQnl0ZUFycmF5IGNvbnN0ICYgYXVkaW9EYXRhLCBR QXRvbWljSW50ICYgaXNDYW4KKyAgIGF1ZGlvRGF0YV8oIGF1ZGlvRGF0YSApLAorICAgYXVkaW9E YXRhU3RyZWFtXyggYXVkaW9EYXRhXyApLAorICAgZm9ybWF0Q29udGV4dF8oIE5VTEwgKSwKKysg IGNvZGVjXyggTlVMTCApLAorICAgY29kZWNDb250ZXh0XyggTlVMTCApLAorICAgYXZpb0NvbnRl eHRfKCBOVUxMICksCisgICBhdWRpb1N0cmVhbV8oIE5VTEwgKSwKK0BAIC0xNDMsNyArMTQ1LDEx IEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6Om9wZW5Db2RlYyggUVN0cmluZyAmIGVycm9yU3RyaW5n ICkKKyAgICAgcmV0dXJuIGZhbHNlOworICAgfQorCisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9N QUpPUiA8IDU2IHx8ICggTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SID09IDU2ICYmIExJQkFWQ09E RUNfVkVSU0lPTl9NSU5PUiA8IDU2ICkKKyAgIHVuc2lnbmVkIGNoYXIgKiBhdmlvQnVmZmVyID0g KCB1bnNpZ25lZCBjaGFyICogKWF2X21hbGxvYygga0J1ZmZlclNpemUgKyBGRl9JTlBVVF9CVUZG RVJfUEFERElOR19TSVpFICk7CisrI2Vsc2UKKysgIHVuc2lnbmVkIGNoYXIgKiBhdmlvQnVmZmVy ID0gKCB1bnNpZ25lZCBjaGFyICogKWF2X21hbGxvYygga0J1ZmZlclNpemUgKyBBVl9JTlBVVF9C VUZGRVJfUEFERElOR19TSVpFICk7CisrI2VuZGlmCisgICBpZiAoICFhdmlvQnVmZmVyICkKKyAg IHsKKyAgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0ciggImF2X21hbGxvYygpIGZhaWxlZC4i ICk7CitAQCAtMTg2LDcgKzE5MiwxMSBAQCBib29sIERlY29kZXJDb250ZXh0OjpvcGVuQ29kZWMo IFFTdHJpbmcgJiBlcnJvclN0cmluZyApCisgICAvLyBGaW5kIGF1ZGlvIHN0cmVhbSwgdXNlIHRo ZSBmaXJzdCBhdWRpbyBzdHJlYW0gaWYgYXZhaWxhYmxlCisgICBmb3IgKCB1bnNpZ25lZCBpID0g MDsgaSA8IGZvcm1hdENvbnRleHRfLT5uYl9zdHJlYW1zOyBpKysgKQorICAgeworKyNpZiBMSUJB VkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1NyB8fCAoIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA9 PSA1NyAmJiBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgPCAzMyApCisgICAgIGlmICggZm9ybWF0 Q29udGV4dF8tPnN0cmVhbXNbaV0tPmNvZGVjLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9B VURJTyApCisrI2Vsc2UKKysgICAgICBpZiAoIGZvcm1hdENvbnRleHRfLT5zdHJlYW1zW2ldLT5j b2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8gKQorKyNlbmRpZgorICAg ICB7CisgICAgICAgYXVkaW9TdHJlYW1fID0gZm9ybWF0Q29udGV4dF8tPnN0cmVhbXNbaV07Cisg ICAgICAgYnJlYWs7CitAQCAtMTk4LDIyICsyMDgsMzggQEAgYm9vbCBEZWNvZGVyQ29udGV4dDo6 b3BlbkNvZGVjKCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQorICAgICByZXR1cm4gZmFsc2U7Cisg ICB9CisKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTcgfHwgKCBMSUJBVkNPREVD X1ZFUlNJT05fTUFKT1IgPT0gNTcgJiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SIDwgMzMgKQor ICAgY29kZWNDb250ZXh0XyA9IGF1ZGlvU3RyZWFtXy0+Y29kZWM7CistICBBVkNvZGVjICogY29k ZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlciggY29kZWNDb250ZXh0Xy0+Y29kZWNfaWQgKTsKKy0g IGlmICggIWNvZGVjICkKKysgIGNvZGVjXyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKCBjb2RlY0Nv bnRleHRfLT5jb2RlY19pZCApOworKyAgaWYgKCAhY29kZWNfICkKKyAgIHsKKyAgICAgZXJyb3JT dHJpbmcgPSBRT2JqZWN0Ojp0ciggIkNvZGVjIFtpZDogJTFdIG5vdCBmb3VuZC4iICkuYXJnKCBj b2RlY0NvbnRleHRfLT5jb2RlY19pZCApOworICAgICByZXR1cm4gZmFsc2U7CisgICB9CisrI2Vs c2UKKysgIGNvZGVjXyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKCBhdWRpb1N0cmVhbV8tPmNvZGVj cGFyLT5jb2RlY19pZCApOworKyAgaWYgKCAhY29kZWNfICkKKysgIHsKKysgICAgZXJyb3JTdHJp bmcgPSBRT2JqZWN0Ojp0ciggIkNvZGVjIFtpZDogJTFdIG5vdCBmb3VuZC4iICkuYXJnKCBhdWRp b1N0cmVhbV8tPmNvZGVjcGFyLT5jb2RlY19pZCApOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9 CisrICBjb2RlY0NvbnRleHRfID0gYXZjb2RlY19hbGxvY19jb250ZXh0MyggY29kZWNfICk7Cisr ICBpZiAoICFjb2RlY0NvbnRleHRfICkKKysgIHsKKysgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0 Ojp0ciggImF2Y29kZWNfYWxsb2NfY29udGV4dDMoKSBmYWlsZWQuIiApOworKyAgICByZXR1cm4g ZmFsc2U7CisrICB9CisrICBhdmNvZGVjX3BhcmFtZXRlcnNfdG9fY29udGV4dCggY29kZWNDb250 ZXh0XywgYXVkaW9TdHJlYW1fLT5jb2RlY3BhciApOworKyNlbmRpZgorCistICByZXQgPSBhdmNv ZGVjX29wZW4yKCBjb2RlY0NvbnRleHRfLCBjb2RlYywgTlVMTCApOworKyAgcmV0ID0gYXZjb2Rl Y19vcGVuMiggY29kZWNDb250ZXh0XywgY29kZWNfLCBOVUxMICk7CisgICBpZiAoIHJldCA8IDAg KQorICAgeworICAgICBlcnJvclN0cmluZyA9IFFPYmplY3Q6OnRyKCAiYXZjb2RlY19vcGVuMigp IGZhaWxlZDogJTEuIiApLmFyZyggYXZFcnJvclN0cmluZyggcmV0ICkgKTsKKyAgICAgcmV0dXJu IGZhbHNlOworICAgfQorCistICBhdl9sb2coIE5VTEwsIEFWX0xPR19JTkZPLCAiQ29kZWMgb3Bl bjogJXM6IGNoYW5uZWxzOiAlZCwgcmF0ZTogJWQsIGZvcm1hdDogJXNcbiIsIGNvZGVjLT5sb25n X25hbWUsCisrICBhdl9sb2coIE5VTEwsIEFWX0xPR19JTkZPLCAiQ29kZWMgb3BlbjogJXM6IGNo YW5uZWxzOiAlZCwgcmF0ZTogJWQsIGZvcm1hdDogJXNcbiIsIGNvZGVjXy0+bG9uZ19uYW1lLAor ICAgICAgICAgICBjb2RlY0NvbnRleHRfLT5jaGFubmVscywgY29kZWNDb250ZXh0Xy0+c2FtcGxl X3JhdGUsIGF2X2dldF9zYW1wbGVfZm10X25hbWUoIGNvZGVjQ29udGV4dF8tPnNhbXBsZV9mbXQg KSApOworICAgcmV0dXJuIHRydWU7CisgfQorQEAgLTI1MiwxMCArMjc4LDEzIEBAIHZvaWQgRGVj b2RlckNvbnRleHQ6OmNsb3NlQ29kZWMoKQorCisgICAvLyBDbG9zaW5nIGEgY29kZWMgY29udGV4 dCB3aXRob3V0IHByaW9yIGF2Y29kZWNfb3BlbjIoKSB3aWxsIHJlc3VsdCBpbgorICAgLy8gYSBj cmFzaCBpbiBmZm1wZWcKKy0gIGlmICggYXVkaW9TdHJlYW1fICYmIGF1ZGlvU3RyZWFtXy0+Y29k ZWMgJiYgYXVkaW9TdHJlYW1fLT5jb2RlYy0+Y29kZWMgKQorKyAgaWYgKCBhdWRpb1N0cmVhbV8g JiYgY29kZWNDb250ZXh0XyAmJiBjb2RlY18gKQorICAgeworICAgICBhdWRpb1N0cmVhbV8tPmRp c2NhcmQgPSBBVkRJU0NBUkRfQUxMOworLSAgICBhdmNvZGVjX2Nsb3NlKCBhdWRpb1N0cmVhbV8t PmNvZGVjICk7CisrICAgIGF2Y29kZWNfY2xvc2UoIGNvZGVjQ29udGV4dF8gKTsKKysjaWYgTElC QVZDT0RFQ19WRVJTSU9OX01BSk9SID4gNTcgfHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1Ig PT0gNTcgJiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SID49IDMzICkKKysgICAgYXZjb2RlY19m cmVlX2NvbnRleHQoICZjb2RlY0NvbnRleHRfICk7CisrI2VuZGlmCisgICB9CisKKyAgIGF2Zm9y bWF0X2Nsb3NlX2lucHV0KCAmZm9ybWF0Q29udGV4dF8gKTsKK0BAIC0zNTYsNiArMzg1LDcgQEAg Ym9vbCBEZWNvZGVyQ29udGV4dDo6cGxheSggUVN0cmluZyAmIGVycm9yU3RyaW5nICkKKyAgICAg aWYgKCBwYWNrZXQuc3RyZWFtX2luZGV4ID09IGF1ZGlvU3RyZWFtXy0+aW5kZXggKQorICAgICB7 CisgICAgICAgQVZQYWNrZXQgcGFjayA9IHBhY2tldDsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9O X01BSk9SIDwgNTcgfHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTcgJiYgTElCQVZD T0RFQ19WRVJTSU9OX01JTk9SIDwgMzcgKQorICAgICAgIGludCBnb3RGcmFtZSA9IDA7CisgICAg ICAgZG8KKyAgICAgICB7CitAQCAtMzcwLDYgKzQwMCwxOSBAQCBib29sIERlY29kZXJDb250ZXh0 OjpwbGF5KCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQorICAgICAgICAgcGFjay5kYXRhICs9IGxl bjsKKyAgICAgICB9CisgICAgICAgd2hpbGUoIHBhY2suc2l6ZSA+IDAgKTsKKysjZWxzZQorKyAg ICAgIGludCByZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KCBjb2RlY0NvbnRleHRfLCAmcGFjayAp OworKyAgICAgIC8qIHJlYWQgYWxsIHRoZSBvdXRwdXQgZnJhbWVzIChpbiBnZW5lcmFsIHRoZXJl IG1heSBiZSBhbnkgbnVtYmVyIG9mIHRoZW0pICovCisrICAgICAgd2hpbGUoIHJldCA+PSAwICkK KysgICAgICB7CisrICAgICAgICByZXQgPSBhdmNvZGVjX3JlY2VpdmVfZnJhbWUoIGNvZGVjQ29u dGV4dF8sIGZyYW1lKTsKKysKKysgICAgICAgIGlmICggUXQ0eDU6OkF0b21pY0ludDo6bG9hZEFj cXVpcmUoIGlzQ2FuY2VsbGVkXyApIHx8IHJldCA8IDAgKQorKyAgICAgICAgICBicmVhazsKKysK KysgICAgICAgIHBsYXlGcmFtZSggZnJhbWUgKTsKKysgICAgICB9CisrI2VuZGlmCisgICAgIH0K KyAgICAgLy8gYXZfZnJlZV9wYWNrZXQoKSBtdXN0IGJlIGNhbGxlZCBhZnRlciBlYWNoIGNhbGwg dG8gYXZfcmVhZF9mcmFtZSgpCisgI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU3IHx8 ICggTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SID09IDU3ICYmIExJQkFWQ09ERUNfVkVSU0lPTl9N SU5PUiA8IDcgKQorQEAgLTM3OSw2ICs0MjIsNyBAQCBib29sIERlY29kZXJDb250ZXh0OjpwbGF5 KCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQorICNlbmRpZgorICAgfQorCisrI2lmIExJQkFWQ09E RUNfVkVSU0lPTl9NQUpPUiA8IDU3IHx8ICggTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SID09IDU3 ICYmIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiA8IDM3ICkKKyAgIGlmICggIVF0NHg1OjpBdG9t aWNJbnQ6OmxvYWRBY3F1aXJlKCBpc0NhbmNlbGxlZF8gKSAmJgorICAgICAgICBjb2RlY0NvbnRl eHRfLT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQ09ERUNfQ0FQX0RFTEFZICkKKyAgIHsKK0BAIC0z OTEsNiArNDM1LDE4IEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6OnBsYXkoIFFTdHJpbmcgJiBlcnJv clN0cmluZyApCisgICAgICAgcGxheUZyYW1lKCBmcmFtZSApOworICAgICB9CisgICB9CisrI2Vs c2UKKysgIC8qIGZsdXNoIHRoZSBkZWNvZGVyICovCisrICBhdl9pbml0X3BhY2tldCggJnBhY2tl dCApOworKyAgaW50IHJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQoY29kZWNDb250ZXh0XywgJnBh Y2tldCApOworKyAgd2hpbGUoIHJldCA+PSAwICkKKysgIHsKKysgICAgcmV0ID0gYXZjb2RlY19y ZWNlaXZlX2ZyYW1lKGNvZGVjQ29udGV4dF8sIGZyYW1lKTsKKysgICAgaWYgKCBRdDR4NTo6QXRv bWljSW50Ojpsb2FkQWNxdWlyZSggaXNDYW5jZWxsZWRfICkgfHwgcmV0IDwgMCApCisrICAgICAg YnJlYWs7CisrICAgIHBsYXlGcmFtZSggZnJhbWUgKTsKKysgIH0KKysjZW5kaWYKKworICNpZiBM SUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1NAorICAgYXZfZnJlZSggZnJhbWUgKTsKKzMyCitz cmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1LTIucGF0Y2gKK0NvbW1lbnQgb24gdGhp cyBmaWxlCitAQCAtMCwwICsxLDMyIEBACitGcm9tIDk2NmY0YThiNzhlNjMyNGI5MzBlNWE1MGYy YmI5MzBiZDg3ZTU2NWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBYnM2MiA8b3R0 b21hbm5AeWFuZGV4LnJ1PgorRGF0ZTogRnJpLCAyNyBTZXAgMjAxOSAxNzowMDo1MiArMDMwMAor U3ViamVjdDogW1BBVENIXSBGRm1wZWcgcGxheWVyOiBGaXggc29tZSBjcmFzaGVzIG9uIGJyb2tl biBmaWxlcworCistLS0KKyBmZm1wZWdhdWRpby5jYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2Vk LCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2ZmbXBlZ2F1ZGlvLmNjIGIvZmZtcGVn YXVkaW8uY2MKK2luZGV4IDU2ZThmNzg4ZS4uNDE1ZmM3OWNiIDEwMDY0NAorLS0tIGEvZmZtcGVn YXVkaW8uY2MKKysrKyBiL2ZmbXBlZ2F1ZGlvLmNjCitAQCAtNTEsNyArNTEsOSBAQCBBdWRpb1Nl cnZpY2UgJiBBdWRpb1NlcnZpY2U6Omluc3RhbmNlKCkKKworIEF1ZGlvU2VydmljZTo6QXVkaW9T ZXJ2aWNlKCkKKyB7CisrI2lmIExJQkFWRk9STUFUX1ZFUlNJT05fTUFKT1IgPCA1OCB8fCAoIExJ QkFWRk9STUFUX1ZFUlNJT05fTUFKT1IgPT0gNTggJiYgTElCQVZGT1JNQVRfVkVSU0lPTl9NSU5P UiA8IDkgKQorICAgYXZfcmVnaXN0ZXJfYWxsKCk7CisrI2VuZGlmCisgICBhb19pbml0aWFsaXpl KCk7CisgfQorCitAQCAtNDM4LDYgKzQ0MCw4IEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6OnBsYXko IFFTdHJpbmcgJiBlcnJvclN0cmluZyApCisgI2Vsc2UKKyAgIC8qIGZsdXNoIHRoZSBkZWNvZGVy ICovCisgICBhdl9pbml0X3BhY2tldCggJnBhY2tldCApOworKyAgcGFja2V0LmRhdGEgPSBOVUxM OworKyAgcGFja2V0LnNpemUgPSAwOworICAgaW50IHJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQo Y29kZWNDb250ZXh0XywgJnBhY2tldCApOworICAgd2hpbGUoIHJldCA+PSAwICkKKyAgIHsKKzI1 CitzcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1LTMucGF0Y2gKK0NvbW1lbnQgb24g dGhpcyBmaWxlCitAQCAtMCwwICsxLDI1IEBACitGcm9tIDhhY2IyODhjOWU5YmRiM2M2YmYyZTgw Mzk1NGRkM2I2YWMyNzNjMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaWFvIEp1 bnh1YW4gPG1pa2VsanhAMTI2LmNvbT4KK0RhdGU6IFN1biwgMjAgRmViIDIwMjIgMTI6Mjg6MDUg KzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYWRkIHN1cHBvcnQgZm9yIGZmbXBlZyA1LjAKKworLS0t CisgZmZtcGVnYXVkaW8uY2MgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25z KCspCisKK2RpZmYgLS1naXQgYS9mZm1wZWdhdWRpby5jYyBiL2ZmbXBlZ2F1ZGlvLmNjCitpbmRl eCBkNTUwZjRhNzcuLjc5NDhkMjE4NyAxMDA2NDQKKy0tLSBhL2ZmbXBlZ2F1ZGlvLmNjCisrKysg Yi9mZm1wZWdhdWRpby5jYworQEAgLTk0LDcgKzk0LDExIEBAIHN0cnVjdCBEZWNvZGVyQ29udGV4 dAorICAgUUJ5dGVBcnJheSBhdWRpb0RhdGFfOworICAgUURhdGFTdHJlYW0gYXVkaW9EYXRhU3Ry ZWFtXzsKKyAgIEFWRm9ybWF0Q29udGV4dCAqIGZvcm1hdENvbnRleHRfOworKyNpZiBMSUJBVkNP REVDX1ZFUlNJT05fTUFKT1IgPCA1OQorICAgQVZDb2RlYyAqIGNvZGVjXzsKKysjZWxzZQorKyAg Y29uc3QgQVZDb2RlYyAqIGNvZGVjXzsKKysjZW5kaWYKKyAgIEFWQ29kZWNDb250ZXh0ICogY29k ZWNDb250ZXh0XzsKKyAgIEFWSU9Db250ZXh0ICogYXZpb0NvbnRleHRfOworICAgQVZTdHJlYW0g KiBhdWRpb1N0cmVhbV87CmRpZmYgLS1naXQgYS9zcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUg Yi9zcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUKaW5kZXggNDU0NGFlNzEwZWU2Li4yY2E0MTg1 ZTUzOGEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUKQEAgLTksNyArOSw3IEBAIG1ha2VkZXBlbmRzPSJ0aWZm LWRldmVsIHF0NS1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwgemxpYi1kZXZlbAogIGxpYlh0c3QtZGV2 ZWwgaHVuc3BlbGwtZGV2ZWwgcXQ1LXRvb2xzLWRldmVsIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbAog IHF0NS13ZWJraXQtZGV2ZWwgbHpvLWRldmVsIGJ6aXAyLWRldmVsIGxpYmFvLWRldmVsIHF0NS1z dmctZGV2ZWwKICBsaWJlYi1kZXZlbCBxdDUteDExZXh0cmFzLWRldmVsIGZmbXBlZy1kZXZlbCBs aWJsem1hLWRldmVsIgotc2hvcnRfZGVzYz0iQSBmZWF0dXJlLXJpY2ggZGljdGlvbmFyeSBsb29r dXAgcHJvZ3JhbSIKK3Nob3J0X2Rlc2M9IkZlYXR1cmUtcmljaCBkaWN0aW9uYXJ5IGxvb2t1cCBw cm9ncmFtIgogbWFpbnRhaW5lcj0iSm9obiA8bWVAam9obm55bmF0b3IuZGV2PiIKIGxpY2Vuc2U9 IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cDovL2dvbGRlbmRpY3Qub3JnLyIKCkZy b20gMWFlZTZlOGQ5NmY5YzRjZmI3NmZiMDg5YjI1ZjEyY2VhNWQzN2RkZSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQwLzExNV0gZ3N0LWxp YmF2OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1s aWJhdi90ZW1wbGF0ZQppbmRleCBlOWE3OWRjNjUwYTUuLmYwODJiZDIxMWM2NSAxMDA2NDQKLS0t IGEvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtbGliYXYvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtbGliYXYnCiBw a2duYW1lPWdzdC1saWJhdgogdmVyc2lvbj0xLjIwLjMKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgeWFzbSIKIG1h a2VkZXBlbmRzPSJvcmMtZGV2ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwgZmZtcGVnLWRldmVs IgoKRnJvbSA5MTE2ZmJiYTkwMDU1MzhmODcxOThkMDgzNTliYzlkYjNmMTY1MDVhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDEvMTE1XSBn c3QtcGx1Z2lucy1iYWQxOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3N0 LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1wbHVnaW5z LWJhZDEvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUKaW5kZXgg ZjU1ZjgyZmQ0Yzc3Li5kYzlkMzg5NzM0ZTEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXBsdWdp bnMtYmFkMS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtcGx1Z2lucy1iYWQxJwog cGtnbmFtZT1nc3QtcGx1Z2lucy1iYWQxCi12ZXJzaW9uPTEuMjAuMwotcmV2aXNpb249MwordmVy c2lvbj0xLjIyLjIKK3JldmlzaW9uPTIKIGJ1aWxkX2hlbHBlcj0iZ2lyIgogYnVpbGRfc3R5bGU9 bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRHBhY2thZ2Utb3JpZ2luPWh0dHBzOi8vdm9pZGxpbnV4 Lm9yZyAtRGRvYz1kaXNhYmxlZAoKRnJvbSA3OWQyMDA4N2Y2MGI3MTViN2NmY2I1MGIyYjVhMWQ5 NGNkNDIzOWEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwNDIvMTE1XSBnc3QtcnRzcC1zZXJ2ZXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBs YXRlCmluZGV4IDMzY2Q2NGNlYjk1ZS4uOGNlZWE4ZDM0YjRiIDEwMDY0NAotLS0gYS9zcmNwa2dz L2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1ydHNwLXNl cnZlcicKIHBrZ25hbWU9Z3N0LXJ0c3Atc2VydmVyCiB2ZXJzaW9uPTEuMjAuMwotcmV2aXNpb249 MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNv bmZpZyBweXRob24zIgogbWFrZWRlcGVuZHM9ImdsaWItZGV2ZWwgZ3N0LXBsdWdpbnMtYmFkMS1k ZXZlbCBnb2JqZWN0LWludHJvc3BlY3Rpb24KCkZyb20gZTdiNWY0MDFiNzFhNWIzN2FhNWVjZmFh OTRkZWNjNDI5ZDZmMjliZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDQzLzExNV0gZ3V2Y3ZpZXc6IHVwZGF0ZSB0byAyLjAuOC4KCi0tLQog c3JjcGtncy9ndXZjdmlldy9wYXRjaGVzL2ZpeC1pbmNsdWRlLnBhdGNoIHwgMTAgKysrKysrKysr Kwogc3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgIHwgIDUgKystLS0K IDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2d1dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2gK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2d1dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2gg Yi9zcmNwa2dzL2d1dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41MDNjMmFmM2I3OGMKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL2d1dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2gKQEAgLTAsMCAr MSwxMCBAQAorLS0tIGEvZ3V2Y3ZpZXcvZ3V2Y3ZpZXcuYworKysrIGIvZ3V2Y3ZpZXcvZ3V2Y3Zp ZXcuYworQEAgLTI4LDYgKzI4LDcgQEAKKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVk ZSA8c3lzL3Jlc291cmNlLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPGxvY2Fs ZS5oPgorIAorICNpbmNsdWRlICJndmlldy5oIgorICNpbmNsdWRlICJndmlld3Y0bDJjb3JlLmgi CmRpZmYgLS1naXQgYS9zcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlIGIvc3JjcGtncy9ndXZjdmll dy90ZW1wbGF0ZQppbmRleCAzNDVjZjYwMDZmMjQuLjg2YTdmZDYxOTYxMiAxMDA2NDQKLS0tIGEv c3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRl CkBAIC0xLDggKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3V2Y3ZpZXcnCiBwa2duYW1l PWd1dmN2aWV3Ci12ZXJzaW9uPTIuMC43Cit2ZXJzaW9uPTIuMC44CiByZXZpc2lvbj0xCi1jcmVh dGVfd3Jrc3JjPXllcwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9 Ii0tZGlzYWJsZS1zdGF0aWMgLS1kaXNhYmxlLWRlYmlhbi1tZW51IgogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIGludGx0b29sIGF1dG9jb25mIGF1dG9tYWtlIGxpYnRvb2wgZ2xpYi1kZXZl bCIKQEAgLTE0LDcgKzEzLDcgQEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGlu dXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cDovL2d1 dmN2aWV3LnNvdXJjZWZvcmdlLm5ldC8iCiBkaXN0ZmlsZXM9IiR7U09VUkNFRk9SR0VfU0lURX0v JHtwa2duYW1lfS8ke3BrZ25hbWV9LXNyYy0ke3ZlcnNpb259LnRhci5iejIiCi1jaGVja3N1bT1m NDdkNTFmYmQwNmU0NGVlYWExYTgyZjRhMTUzYzkyNzUyN2M5MGQ5NDUxNDE5N2E3MGIyOTU2MDI4 Y2M4YWQ0CitjaGVja3N1bT1hMjFmNGU0NDgyODY2NjZjZjI3YmFmZWY1MjkwY2M5NTNhMGExNzk2 Yjc1MmU1YmJlNTIxMjY2ZGMxMjMwYzgxCiAKIHBvc3RfcGF0Y2goKSB7CiAJc2VkICczMWEjaW5j bHVkZSA8bG9jYWxlLmg+JyAtaSAgZ3V2Y3ZpZXcvZ3V2Y3ZpZXcuYwoKRnJvbSAxZjYxM2UzNGYz NjE5MWVjNWU1NTczZjFhZDU0MTA1NDI2Y2E3YjM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDQvMTE1XSBoYW5kYnJha2U6IHVwZGF0ZSB0 byAxLjYuMQoKLS0tCiAuLi4vcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmstZmxhZy5wYXRj aCAgICB8IDExICsrKysrKy0tLS0tCiAuLi4vaGFuZGJyYWtlL3BhdGNoZXMvbGliaGItdnBsLWlu Y2x1ZGUucGF0Y2ggICB8IDE1ICsrKysrKysrKysrKysrKwogc3JjcGtncy9oYW5kYnJha2UvdGVt cGxhdGUgICAgICAgICAgICAgICAgICAgICAgfCAxNyArKysrKysrKysrLS0tLS0tLQogMyBmaWxl cyBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNo CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1 LWxpbmstZmxhZy5wYXRjaCBiL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvZml4LW1pc3Npbmct eDI2NS1saW5rLWZsYWcucGF0Y2gKaW5kZXggMjZkYjAzODY3YTBjLi5kNmJiMmVkYTYyN2EgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5r LWZsYWcucGF0Y2gKKysrIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14 MjY1LWxpbmstZmxhZy5wYXRjaApAQCAtMSwxNCArMSwxNSBAQAogLS0tIGEvZ3RrL2NvbmZpZ3Vy ZS5hYwogKysrIGIvZ3RrL2NvbmZpZ3VyZS5hYwogQEAgLTIwMyw3ICsyMDMsNyBAQAotIAorCiAg QU1fQ09ORElUSU9OQUwoW01JTkdXXSwgW3Rlc3QgIngkbWluZ3dfZmxhZyIgPSAieHllcyJdKQot IAotLUhCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAt bGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5h diAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2Fs ZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3Mg LWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAt bHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIgotK0hCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtl IC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVz YW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1s dm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAt bHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1s amFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sZGwiCisK Ky1IQl9MSUJTPSIkSEJfTElCUyAtbGhhbmRicmFrZSAtbGF2Zm9ybWF0IC1sYXZmaWx0ZXIgLWxh dmNvZGVjIC1sYXZ1dGlsIC1sZGF2MWQgLWxzd3Jlc2FtcGxlIC1scG9zdHByb2MgLWxkdmRuYXYg LWxkdmRyZWFkIC1sbXAzbGFtZSAtbHZvcmJpcyAtbHZvcmJpc2VuYyAtbG9nZyAtbHN3c2NhbGUg LWx0aGVvcmFlbmMgLWx0aGVvcmFkZWMgLWx2cHggLWx6IC1sYnoyIC1sYmx1cmF5IC1sYXNzIC1s Zm9udGNvbmZpZyAtbGZyZWV0eXBlIC1seG1sMiAtbGphbnNzb24gLWxvcHVzIC1sc3BlZXggLWx0 dXJib2pwZWcgLWxsem1hIC1semltZyAtbFN2dEF2MUVuYyIKKytIQl9MSUJTPSIkSEJfTElCUyAt bGhhbmRicmFrZSAtbGF2Zm9ybWF0IC1sYXZmaWx0ZXIgLWxhdmNvZGVjIC1sYXZ1dGlsIC1sZGF2 MWQgLWxzd3Jlc2FtcGxlIC1scG9zdHByb2MgLWxkdmRuYXYgLWxkdmRyZWFkIC1sbXAzbGFtZSAt bHZvcmJpcyAtbHZvcmJpc2VuYyAtbG9nZyAtbHN3c2NhbGUgLWx0aGVvcmFlbmMgLWx0aGVvcmFk ZWMgLWx2cHggLWx6IC1sYnoyIC1sYmx1cmF5IC1sYXNzIC1sZm9udGNvbmZpZyAtbGZyZWV0eXBl IC1seG1sMiAtbGphbnNzb24gLWxvcHVzIC1sc3BlZXggLWx0dXJib2pwZWcgLWxsem1hIC1semlt ZyAtbFN2dEF2MUVuYyAtbGRsIgogIEhCX0NQUEZMQUdTPSIkSEJfQ1BQRkxBR1MgJEhCSU5DIgot IAorCiAgUEtHX0NIRUNLX01PRFVMRVMoW3gyNjRdLCBbeDI2NF0sIHN5c194MjY0PXllcywgc3lz X3gyNjQ9bm8pCisKIC0tLSBhL3Rlc3QvbW9kdWxlLmRlZnMKICsrKyBiL3Rlc3QvbW9kdWxlLmRl ZnMKIEBAIC02OSw2ICs2OSw5IEBACmRpZmYgLS1naXQgYS9zcmNwa2dzL2hhbmRicmFrZS9wYXRj aGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNoIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9s aWJoYi12cGwtaW5jbHVkZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjI5OGY5ZjRhYjI4ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvaGFuZGJyYWtl L3BhdGNoZXMvbGliaGItdnBsLWluY2x1ZGUucGF0Y2gKQEAgLTAsMCArMSwxNSBAQAorLS0tIGEv bGliaGIvbW9kdWxlLmRlZnMJMjAyMy0wMS0yMiAxMTozNjo0OS4wMDAwMDAwMDAgLTA1MDAKKysr KyBiL2xpYmhiL21vZHVsZS5kZWZzCTIwMjMtMDQtMDMgMjI6Mzc6NTIuMzk1NDY3MDEwIC0wNDAw CitAQCAtNDYsMTEgKzQ2LDcgQEAKKyBMSUJIQi5HQ0MuSSArPSAkKExJQkhCLmJ1aWxkLykgJChD T05UUklCLmJ1aWxkLylpbmNsdWRlCisgCisgaWZlcSAoMSwkKEZFQVRVUkUucXN2KSkKKy0gICAg aWZlcSAoJChIT1NULnN5c3RlbSksZnJlZWJzZCkpCistICAgICAgICBMSUJIQi5HQ0MuSSArPSAk KExPQ0FMQkFTRSkvaW5jbHVkZS92cGwKKy0gICAgZWxzZQorLSAgICAgICAgTElCSEIuR0NDLkkg Kz0gJChDT05UUklCLmJ1aWxkLylpbmNsdWRlL3ZwbAorLSAgICBlbmRpZgorKyAgICBMSUJIQi5H Q0MuSSArPSAvdXNyL2luY2x1ZGUvdnBsCisgZW5kaWYKKyAKKyBpZm5lcSAoLCQoZmlsdGVyICQo SE9TVC5zeXN0ZW0pLGZyZWVic2QgbmV0YnNkIG9wZW5ic2QpKQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9oYW5kYnJha2UvdGVtcGxhdGUgYi9zcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZQppbmRleCBj YTVlNDU3MWU0OWMuLmMzMmNiMWJmYTMxZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9oYW5kYnJha2Uv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9oYW5kYnJha2UvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2hhbmRicmFrZScKIHBrZ25hbWU9aGFuZGJyYWtlCi12 ZXJzaW9uPTEuNS4xCit2ZXJzaW9uPTEuNi4xCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1nbnUt Y29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1mb3JjZSAtLWRpc2FibGUtZ3RrLXVwZGF0ZS1j aGVja3MgLS1kaXNhYmxlLWRmLWZldGNoIC0taGFyZGVuCi0gJCh2b3B0X2VuYWJsZSBmZGtfYWFj IGZkay1hYWMpICQodm9wdF9lbmFibGUgbnZlbmMpIgorICQodm9wdF9lbmFibGUgZmRrX2FhYyBm ZGstYWFjKSAkKHZvcHRfZW5hYmxlIG52ZW5jKSAkKHZvcHRfZW5hYmxlIHFzdikiCiBtYWtlX2J1 aWxkX2FyZ3M9Ii1DICR7WEJQU19UUklQTEVUfSIKIG1ha2VfaW5zdGFsbF9hcmdzPSItQyAke1hC UFNfVFJJUExFVH0iCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIGNtYWtlIGdldHRleHQtZGV2 ZWwgZ2xpYi1kZXZlbCBpbnRsdG9vbCBsaWJ0b29sIG00IG1lc29uIG5hc20gcGtnLWNvbmZpZyBw eXRob24zIgpAQCAtMTIsOCArMTIsMTEgQEAgbWFrZWRlcGVuZHM9ImJ6aXAyLWRldmVsIGZmbXBl Zy1kZXZlbCBnc3QtcGx1Z2lucy1iYXNlMS1kZXZlbCBndGsrMy1kZXZlbAogIGphbnNzb24tZGV2 ZWwgbGFtZS1kZXZlbCBsaWJhc3MtZGV2ZWwgbGliYmx1cmF5LWRldmVsIGxpYmRhdjFkLWRldmVs CiAgbGliZHZkbmF2LWRldmVsIGxpYmR2ZHJlYWQtZGV2ZWwgbGliZ3VkZXYtZGV2ZWwgbGlibnVt YS1kZXZlbAogIGxpYnNhbXBsZXJhdGUtZGV2ZWwgbGlidGhlb3JhLWRldmVsIGxpYnZvcmJpcy1k ZXZlbCBsaWJ2cHgtZGV2ZWwgbGlieG1sMi1kZXZlbAotIG9wdXMtZGV2ZWwgc3BlZXgtZGV2ZWwg eDI2NC1kZXZlbCB4MjY1LWRldmVsIHppbWctZGV2ZWwKKyBvcHVzLWRldmVsIHNwZWV4LWRldmVs IHgyNjQtZGV2ZWwgeDI2NS1kZXZlbCB6aW1nLWRldmVsIGxpYnN2dC1hdjEtZGV2ZWwKICAkKHZv cHRfaWYgZmRrX2FhYyBmZGstYWFjLWRldmVsKQorICQodm9wdF9pZiBxc3YgbGlidmEtZGV2ZWwp CisgJCh2b3B0X2lmIHFzdiBsaWJkcm0tZGV2ZWwpCisgJCh2b3B0X2lmIHFzdiBvbmV2cGwtZGV2 ZWwpCiAgJCh2b3B0X2lmIG52ZW5jIG52LWNvZGVjLWhlYWRlcnMpIgogZGVwZW5kcz0iZGVza3Rv cC1maWxlLXV0aWxzIGdzdC1wbHVnaW5zLWdvb2QxIGhpY29sb3ItaWNvbi10aGVtZSIKIHNob3J0 X2Rlc2M9Ik11bHRpdGhyZWFkZWQgdmlkZW8gdHJhbnNjb2RlciIKQEAgLTIxLDE1ICsyNCwxNSBA QCBtYWludGFpbmVyPSJFbm5vIEJvbGFuZCA8Z290dG94QHZvaWRsaW51eC5vcmc+IgogbGljZW5z ZT0iR1BMLTIuMC1vbmx5IgogaG9tZXBhZ2U9Imh0dHBzOi8vaGFuZGJyYWtlLmZyLyIKIGRpc3Rm aWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL0hhbmRCcmFrZS9IYW5kQnJha2UvcmVsZWFzZXMvZG93 bmxvYWQvJHt2ZXJzaW9ufS9IYW5kQnJha2UtJHt2ZXJzaW9ufS1zb3VyY2UudGFyLmJ6MiIKLWNo ZWNrc3VtPTM5OTlmZTA2ZDUzMDljODE5Nzk5YTczYTk2OGE4ZWMzODQwZTc4NDBjMmI2NGFmOGY1 Y2RiN2ZkOGM5NDMwZjAKK2NoZWNrc3VtPTk0Y2NmZTAzZGI5MTdhOTE2NTAwMDBjNTEwZjdmZDUz Zjg0NGRhMTlmMTlhZDRiNGJlMWI4ZjZiYzMxYThkNGMKIG5vY3Jvc3M9eWVzCiAKLWJ1aWxkX29w dGlvbnM9ImZka19hYWMgbnZlbmMiCitidWlsZF9vcHRpb25zPSJmZGtfYWFjIG52ZW5jIHFzdiIK IAogY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCiAJeDg2XzY0KnxpNjg2KikKIAkJQ0ZM QUdTPSItbXNzZSIKLQkJYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJudmVuYyIKKwkJYnVpbGRfb3B0 aW9uc19kZWZhdWx0PSJudmVuYyBxc3YiCiAJCTs7CiBlc2FjCiAKQEAgLTM3LDcgKzQwLDcgQEAg cHJlX2NvbmZpZ3VyZSgpIHsKIAkjIHVzZSBzeXN0ZW0gbGlicmFyaWVzLCBkb24ndCBkb3dubG9h ZCB0aGVtCiAJcm0gLXJmIGNvbnRyaWIvCiAJZm9yIG1vZHVsZSBpbiBmZGstYWFjIGZmbXBlZyBs aWJibHVyYXkgbGliZGF2MWQgbGliZHZkbmF2IGxpYmR2ZHJlYWQgbnZlbmMgXAotCQl4MjY1IHpp bWc7IGRvCisJCXgyNjUgemltZyBzdnQtYXYxIGxpYnZwbDsgZG8KIAkgICAgdnNlZCAtaSAiL01P RFVMRVMgKz0gY29udHJpYlwvJHttb2R1bGV9L2QiIG1ha2UvaW5jbHVkZS9tYWluLmRlZnMKIAlk b25lCiB9CgpGcm9tIDIzYzc3NTMxNjY3Njc5N2MxODdmYWEzODY3MTdhZGU4ZDQ4MGE0YWIgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0NS8x MTVdIGhlZGdld2FyczogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2hl ZGdld2Fycy90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0 ZSBiL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlCmluZGV4IDQxOWYyOWI5OGI0NC4uOTI2ZmU0 ZmUzZTY4IDEwMDY0NAotLS0gYS9zcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2hlZGdld2Fycy90ZW1wbGF0ZQpAQCAtMSwxMyArMSwxMyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnaGVkZ2V3YXJzJwogcGtnbmFtZT1oZWRnZXdhcnMKIHZlcnNpb249MS4wLjIKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURO T1NFUlZFUj0xIC1EREFUQV9JTlNUQUxMX0RJUj0vdXNyL3NoYXJlLyR7cGtnbmFtZX0KICAtRFBI WVNGU19TWVNURU09MSAtRE1JTklNQUxfRkxBR1M9MSIKIG1ha2VfY21kPW1ha2UKIGhvc3RtYWtl ZGVwZW5kcz0ibHVhNTEgcGtnLWNvbmZpZyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMiCi1tYWtl ZGVwZW5kcz0iZmZtcGVnLWRldmVsIGx1YTUxLWRldmVsIHBoeXNmcy1kZXZlbCBxdDUtdG9vbHMt ZGV2ZWwgU0RMMl9pbWFnZS1kZXZlbAorbWFrZWRlcGVuZHM9ImZmbXBlZzQtZGV2ZWwgbHVhNTEt ZGV2ZWwgcGh5c2ZzLWRldmVsIHF0NS10b29scy1kZXZlbCBTREwyX2ltYWdlLWRldmVsCiAgU0RM Ml9taXhlci1kZXZlbCBTREwyX25ldC1kZXZlbCBTREwyX3R0Zi1kZXZlbCIKIGRlcGVuZHM9Imxp YmZyZWVnbHV0Igogc2hvcnRfZGVzYz0iRnVubnkgdHVybi1iYXNlZCBhcnRpbGxlcnkgZ2FtZSwg ZmVhdHVyaW5nIGZpZ2h0aW5nIEhlZGdlaG9ncyEiCgpGcm9tIGQ2NWY1NzljZDNkYWIxNjlhNDJl YTM2ODA2MTVjZGJmNTI0ZTQ5OWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0 MDAKU3ViamVjdDogW1BBVENIIDA0Ni8xMTVdIGlkamM6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40 LjMKCi0tLQogc3JjcGtncy9pZGpjL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaWRq Yy90ZW1wbGF0ZSBiL3NyY3BrZ3MvaWRqYy90ZW1wbGF0ZQppbmRleCBkZjYwMzE4YjNkYjkuLjM2 YTc1YmFmNTk3YyAxMDA2NDQKLS0tIGEvc3JjcGtncy9pZGpjL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvaWRqYy90ZW1wbGF0ZQpAQCAtMSwxMSArMSwxMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn aWRqYycKIHBrZ25hbWU9aWRqYwogdmVyc2lvbj0wLjkuMQotcmV2aXNpb249MworcmV2aXNpb249 NAogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IGdpdCBweXRob24zIGF1dG9tYWtlIGdldHRleHQtZGV2ZWwgbGlidG9vbCIKIG1ha2VkZXBlbmRz PSJsaWJ2b3JiaXMtZGV2ZWwgbGlib2dnLWRldmVsIGphY2stZGV2ZWwgbGlic2FtcGxlcmF0ZS1k ZXZlbAotIGxpYmZsYWMtZGV2ZWwgbGlic25kZmlsZS1kZXZlbCBtcGcxMjMtZGV2ZWwgZmZtcGVn LWRldmVsIHNwZWV4LWRldmVsCisgbGliZmxhYy1kZXZlbCBsaWJzbmRmaWxlLWRldmVsIG1wZzEy My1kZXZlbCBmZm1wZWc0LWRldmVsIHNwZWV4LWRldmVsCiAgZ2xpYi1kZXZlbCBwaXhtYW4tZGV2 ZWwgbGFtZS1kZXZlbCBweXRob24zLWdvYmplY3QtZGV2ZWwgbGlic2hvdXQtaWRqYy1kZXZlbAog IG9wdXMtZGV2ZWwgdHdvbGFtZS1kZXZlbCBweXRob24zLW11dGFnZW4gcHl0aG9uMy1kZXZlbCIK IGRlcGVuZHM9InB5dGhvbjMtZ29iamVjdCBweXRob24zLW11dGFnZW4gZGVza3RvcC1maWxlLXV0 aWxzIHNoYXJlZC1taW1lLWluZm8gcHl0aG9uMy1kYnVzIGphY2siCgpGcm9tIDcyZDhkNTJkMmJm ZTA4M2RjMDRkNzZmMWJiNTZjNGM0YmZlYjJmNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0Ny8xMTVdIGtmaWxlbWV0YWRhdGE1OiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRlIGIvc3JjcGtncy9rZmls ZW1ldGFkYXRhNS90ZW1wbGF0ZQppbmRleCA4OTgwMTIxZmJjNjkuLmY2NjJhMjA0M2Y5MyAxMDA2 NDQKLS0tIGEvc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tm aWxlbWV0YWRhdGE1L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAna2ZpbGVtZXRhZGF0YTUnCiBwa2duYW1lPWtmaWxlbWV0YWRhdGE1CiB2ZXJzaW9uPTUuMTA1 LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRl cGVuZHM9Imtjb3JlYWRkb25zIGV4dHJhLWNtYWtlLW1vZHVsZXMgcGtnLWNvbmZpZyBxdDUtaG9z dC10b29scyBxdDUtcW1ha2UKICBnZXR0ZXh0IGtjb3JlYWRkb25zIHB5dGhvbjMiCgpGcm9tIDA4 YTU5OGI3MmU2YzUzYjc5M2FhMTU1ODA3YTA0Nzg1ZGVhOWFiYjMgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0OC8xMTVdIGtpZDM6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRj aCB8IDE3ICsrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2tpZDMvdGVtcGxhdGUgICAgICAgICAg ICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mva2lkMy9wYXRjaGVzL2ZmbXBlZzUucGF0 Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3Jj cGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjEzNWZjNTBlMDdjOQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mv a2lkMy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorIyBodHRwczovL2F1 ci5hcmNobGludXgub3JnL2NnaXQvYXVyLmdpdC9kaWZmL2ZmbXBlZzUucGF0Y2g/aD1raWQzLWNs aSZpZD0xMjQxMGE3NDkwNjYxMmU3ZWZjMGVjOGZiY2U3MzliNGEwZmVmN2U3CitkaWZmIC0tZ2l0 IGEvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNw cCBiL3NyYy9wbHVnaW5zL2Fjb3VzdGlkaW1wb3J0L2ZmbXBlZ2ZpbmdlcnByaW50ZGVjb2Rlci5j cHAKK2luZGV4IGUxNTZkNDI0Li5lMTJiOWFiZCAxMDA2NDQKKy0tLSBhL3NyYy9wbHVnaW5zL2Fj b3VzdGlkaW1wb3J0L2ZmbXBlZ2ZpbmdlcnByaW50ZGVjb2Rlci5jcHAKKysrKyBiL3NyYy9wbHVn aW5zL2Fjb3VzdGlkaW1wb3J0L2ZmbXBlZ2ZpbmdlcnByaW50ZGVjb2Rlci5jcHAKK0BAIC0yMzIs NyArMjMyLDExIEBAIHByaXZhdGU6CisgICBmcmllbmQgY2xhc3MgRm9ybWF0OworICAgZnJpZW5k IGNsYXNzIENvbnZlcnRlcjsKKyAgIEFWQ29kZWNDb250ZXh0KiBtX3B0cjsKKysjaWYgTElCQVZD T0RFQ19WRVJTSU9OX0lOVCA8IEFWX1ZFUlNJT05fSU5UKDU5LCAwLCAwKQorICAgQVZDb2RlYyog bV9pbXBsOworKyNlbHNlCisrICBjb25zdCBBVkNvZGVjKiBtX2ltcGw7CisrI2VuZGlmCisgICBB VkZyYW1lKiBtX2ZyYW1lOworICAgYm9vbCBtX29wZW5lZDsKKyB9OwpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9raWQzL3RlbXBsYXRlIGIvc3JjcGtncy9raWQzL3RlbXBsYXRlCmluZGV4IDQ1NjIwNmQ5 MGUxNi4uZjMyZjlkZWNiMGU3IDEwMDY0NAotLS0gYS9zcmNwa2dzL2tpZDMvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9raWQzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAna2lkMycKIHBrZ25hbWU9a2lkMwogdmVyc2lvbj0zLjkuMQotcmV2aXNpb249MgorcmV2 aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfQVBQUz0n Q0xJOyQodm9wdF9pZiBLREUgS0RFIFF0KScKICAtRFdJVEhfRE9DQk9PS0RJUj0vdXNyL3NoYXJl L3hzbC9kb2Nib29rIC1EV0lUSF9GTEFDPSQodm9wdF9pZiBmbGFjIE9OIE9GRikKCkZyb20gNDI1 M2NiZmY2MDkwOGI3MmMxYTIxMDQ3YjY2ZDQ5YjljNDcxYThjNSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ5LzExNV0ga29kaTogcmV2YnVt cCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2tvZGkvdGVtcGxhdGUgfCA0ICsrLS0K IDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9rb2RpL3RlbXBsYXRlIGIvc3JjcGtncy9rb2RpL3RlbXBsYXRlCmluZGV4 IDgwNTc5NjRkNzhhMy4uNmNjMTg3NGJlN2JhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2tvZGkvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9rb2RpL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAna29kaScKIHBrZ25hbWU9a29kaQogdmVyc2lvbj0xOS40Ci1yZXZpc2lv bj02CityZXZpc2lvbj03CiBfY29kZW5hbWU9Ik1hdHJpeCIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBj b25maWd1cmVfYXJncz0iLURXSVRIX0ZGTVBFRz0vdXNyIC1ERU5BQkxFX0xER09MRD1PRkYKQEAg LTU0LDcgKzU0LDcgQEAgbWFrZWRlcGVuZHM9IgogIGxpYm1hZC1kZXZlbCBmb250Y29uZmlnLWRl dmVsIGxpYlhpbmVyYW1hLWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwgbGlibW1zLWRldmVsCiAg ZW5jYS1kZXZlbCBib29zdC1kZXZlbCBsaWJjdXJsLWRldmVsIGxpYnZhLWRldmVsIGxpYnZkcGF1 LWRldmVsIGxpYmFzcy1kZXZlbAogIGxpYmJsdWV0b290aC1kZXZlbCB5YWpsLWRldmVsIGxpYnBs aXN0LWRldmVsIGxpYnJ0bXAtZGV2ZWwgdGlueXhtbC1kZXZlbAotIHRhZ2xpYi1kZXZlbCBsaWJj YXAtZGV2ZWwgbGFtZS1kZXZlbCBsaWJibHVyYXktZGV2ZWwgbGlibmZzLWRldmVsIGZmbXBlZy1k ZXZlbAorIHRhZ2xpYi1kZXZlbCBsaWJjYXAtZGV2ZWwgbGFtZS1kZXZlbCBsaWJibHVyYXktZGV2 ZWwgbGlibmZzLWRldmVsIGZmbXBlZzQtZGV2ZWwKICBnaWZsaWItZGV2ZWwgbGlieHNsdC1kZXZl bCBnbnV0bHMtZGV2ZWwgbGlic3NoLWRldmVsIGxpYm1pY3JvaHR0cGQtZGV2ZWwKICBsaWJjZWMt ZGV2ZWwgZGNhZGVjLWRldmVsIGZsYXRidWZmZXJzLWRldmVsIGZtdC1kZXZlbCBsY21zMi1kZXZl bAogIGxpYmZzdHJjbXAtZGV2ZWwgcmFwaWRqc29uIGxpYmNkaW8tcGFyYW5vaWEgc3BkbG9nIGxp YndheWxhbmRwcC1kZXZlbAoKRnJvbSAwYjRjZDZiNDAxNzU5MTA4NjEzN2E0YzAyMzllNGE0NmQz MDQ2MGZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwNTAvMTE1XSBrcGlwZXdpcmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9rcGlwZXdpcmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2twaXBld2lyZS90ZW1w bGF0ZSBiL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlCmluZGV4IDQ2N2FiODIzYTVlMS4uNTE4 MjdmMjRkYjllIDEwMDY0NAotLS0gYS9zcmNwa2dzL2twaXBld2lyZS90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2twaXBld2lyZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ2twaXBld2lyZScKIHBrZ25hbWU9a3BpcGV3aXJlCiB2ZXJzaW9uPTUuMjcuNAotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0i ZXh0cmEtY21ha2UtbW9kdWxlcyBwbGFzbWEtd2F5bGFuZC1wcm90b2NvbHMgZ2V0dGV4dAogIHF0 NS1xbWFrZSBxdDUtaG9zdC10b29scyBwa2ctY29uZmlnIHdheWxhbmQtZGV2ZWwga2NvcmVhZGRv bnMKCkZyb20gN2ZhMjhiMmFmOTE2ZWZlYTY1NGE0ZjY4MWI0ZGU2MGUyYTYxMDM4MiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDUxLzExNV0g bGliZXh0cmFjdG9yOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvbGli ZXh0cmFjdG9yL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxh dGUgYi9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZQppbmRleCBkZGQ0NzkwZjkzZTguLjFm YjljYTU2YTk2YSAxMDA2NDQKLS0tIGEvc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUKQEAgLTcsNyArNyw3IEBAIGNvbmZpZ3Vy ZV9hcmdzPSItLWRpc2FibGUtc3RhdGljIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgog bWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZXhpdjItZGV2ZWwgdGlmZi1kZXZl bCBsaWJwbmctZGV2ZWwKICBsaWJqcGVnLXR1cmJvLWRldmVsIGxpYnZvcmJpcy1kZXZlbCBsaWJm bGFjLWRldmVsIGdpZmxpYi1kZXZlbCBsaWJtcGVnMi1kZXZlbAotIGZmbXBlZy1kZXZlbCBndGsr My1kZXZlbCBsaWJsdGRsLWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwgZmlsZS1kZXZlbCBsaWJnc2Yt ZGV2ZWwiCisgZmZtcGVnNC1kZXZlbCBndGsrMy1kZXZlbCBsaWJsdGRsLWRldmVsIGxpYmFyY2hp dmUtZGV2ZWwgZmlsZS1kZXZlbCBsaWJnc2YtZGV2ZWwiCiBzaG9ydF9kZXNjPSJMaWJyYXJ5IHVz ZWQgdG8gZXh0cmFjdCBtZXRhIGRhdGEgZnJvbSBmaWxlcyIKIG1haW50YWluZXI9Ik1hcnRpbiBS aWVzZSA8Z3JhdWVoYWFyZUBnbXguZGU+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKCkZy b20gMTg3OTMxZjcxODY3MGRjNzRjODc5YjQwOGIzMjU0OGY5NjU2YjIwNSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDUyLzExNV0gbGlib3Bl bmFsOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbGlib3BlbmFsL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUgYi9zcmNwa2dzL2xpYm9w ZW5hbC90ZW1wbGF0ZQppbmRleCA3NzIxOGY5ZTUzOWQuLjNmNDllZDc1YTFmZCAxMDA2NDQKLS0t IGEvc3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9saWJvcGVuYWwvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsaWJvcGVuYWwnCiBw a2duYW1lPWxpYm9wZW5hbAogdmVyc2lvbj0xLjIyLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURBTFNPRlRfRVhBTVBMRVM9T0ZG IgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSA1ODE1OTcyMzU3YzU5NDI0M2E5 MDk2NjZhY2U2NGEwZGFkY2FkMDUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwNTMvMTE1XSBsaWJvcGVuc2hvdDogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGlib3BlbnNob3QvdGVtcGxhdGUK aW5kZXggZGI4MzFmNjliNDc0Li44MWFhMGQ3MTM2ZDkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGli b3BlbnNob3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xpYm9wZW5zaG90JwogcGtnbmFtZT1s aWJvcGVuc2hvdAogdmVyc2lvbj0wLjMuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9Y21ha2UKICMgQnVpbGRzIGZhaWwgd2l0aCBSdWJ5LTIuNC4xCiBjb25maWd1cmVfYXJn cz0iLURFTkFCTEVfUlVCWT1PRkYgLURVU0VfU1lTVEVNX0pTT05DUFA9T04iCgpGcm9tIDUwZDc3 NmMwZGFiYmRkNWJkZDJmMDM2MjdhZGEyNzQ0M2JiYjE3M2IgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA1NC8xMTVdIGxvdWRnYWluOiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoIHwgMTEgKysrKysrKysrKysKIHNyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUgICAgICAg ICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1w ZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUu cGF0Y2ggYi9zcmNwa2dzL2xvdWRnYWluL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE2ZDQ1MTBlZTk4ZgotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEs MTEgQEAKKy0tLSBhL3NyYy9zY2FuLmMJMjAxOS0wOS0wNiAxMTozMToxOS4wMDAwMDAwMDAgLTA0 MDAKKysrKyBiL3NyYy9zY2FuLmMJMjAyMy0wMy0yMyAxMToxNTo0MC44Njc5Njg1MjEgLTA0MDAK K0BAIC02OSw4ICs2OSw2IEBACisgCSAqIEl0IGlzIG5vdyB1c2VsZXNzCisgCSAqIGh0dHBzOi8v Z2l0aHViLmNvbS9GRm1wZWcvRkZtcGVnL2Jsb2IvNzBkMjUyNjhjMjFjYmVlNWYwODMwNGRhOTVi ZTFmNjQ3YzYzMGMxNS9kb2MvQVBJY2hhbmdlcyNMODYKKyAJICovCistICBpZiAoYXZmb3JtYXRf dmVyc2lvbigpIDwgQVZfVkVSU0lPTl9JTlQoNTgsOSwxMDApKQorLSAgICBhdl9yZWdpc3Rlcl9h bGwoKTsKKyAKKyAJYXZfbG9nX3NldF9jYWxsYmFjayhzY2FuX2F2X2xvZyk7CisgCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlIGIvc3JjcGtncy9sb3VkZ2Fpbi90ZW1wbGF0 ZQppbmRleCBkYTRmMmQ1NmU5NGMuLjRkNmJmMjllZmI0ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9s b3VkZ2Fpbi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbG91ZGdhaW4nCiBwa2duYW1lPWxvdWRnYWlu CiB2ZXJzaW9uPTAuNi44Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFr ZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9ImxpYmVidXIxMjgt ZGV2ZWwgdGFnbGliLWRldmVsIGZmbXBlZy1kZXZlbCIKCkZyb20gZjhjZGExOGM0NmVhYjUxYzRl MDA1ZDUzNDM5NjI3YTgzNDNhOGM4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU1LzExNV0gbWVkaWFzdHJlYW1lcjogcmV2YnVtcCBmb3Ig ZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUgfCA0ICsr LS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9tZWRpYXN0cmVhbWVyL3RlbXBsYXRlIGIvc3JjcGtncy9tZWRpYXN0 cmVhbWVyL3RlbXBsYXRlCmluZGV4IGQwZTk3ZTg1OGUyOS4uMWJkZTAzMTQ0M2E1IDEwMDY0NAot LS0gYS9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tZWRpYXN0 cmVhbWVyL3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdt ZWRpYXN0cmVhbWVyJwogcGtnbmFtZT1tZWRpYXN0cmVhbWVyCiB2ZXJzaW9uPTUuMi42Ci1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1E RU5BQkxFX1NUUklDVD0wIC1ERU5BQkxFX1VOSVRfVEVTVFM9MCIKIGhvc3RtYWtlZGVwZW5kcz0i cHl0aG9uMyIKLW1ha2VkZXBlbmRzPSJienJ0cC1kZXZlbCBmZm1wZWctZGV2ZWwgZ2xldy1kZXZl bCBsaWJYdi1kZXZlbCBsaWJzcnRwLWRldmVsCittYWtlZGVwZW5kcz0iYnpydHAtZGV2ZWwgZmZt cGVnNC1kZXZlbCBnbGV3LWRldmVsIGxpYlh2LWRldmVsIGxpYnNydHAtZGV2ZWwKICBsaWJ1cG5w LWRldmVsIGxpYnZweC1kZXZlbCBtYmVkdGxzLWRldmVsIG9wdXMtZGV2ZWwgb3J0cC1kZXZlbCBw dWxzZWF1ZGlvLWRldmVsCiAgbGlidGhlb3JhLWRldmVsIHNwZWV4LWRldmVsIHY0bC11dGlscy1k ZXZlbCBiY2c3MjktZGV2ZWwgYmNtYXRyb3NrYTItZGV2ZWwgbGliZ3NtLWRldmVsIgogIyB6eGlu Zy1jcHAtZGV2ZWwgKDEuMi4wIHByb2JhYmx5IG5vdCBjb21wYXRpYmxlLCBjaGVjayBhZ2FpbiBh ZnRlciB1cGRhaW5nIHh6aW5nKQoKRnJvbSA4ZjIzMzMzMzkwOWMyMzI1NzBiNDA3MzU2MDA3NWY5 NmU3ZGYwNGRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwNTYvMTE1XSBtZ2JhOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3MvbWdiYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWdiYS90ZW1wbGF0ZSBiL3NyY3Br Z3MvbWdiYS90ZW1wbGF0ZQppbmRleCBhZTA1MDQzMTFlZWUuLmQzMTI5NWEwY2QzZCAxMDA2NDQK LS0tIGEvc3JjcGtncy9tZ2JhL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWdiYS90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21nYmEnCiBwa2duYW1lPW1nYmEK IHZlcnNpb249MC4xMC4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFr ZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSBk ZXNrdG9wLWZpbGUtdXRpbHMiCiBtYWtlZGVwZW5kcz0iU0RMMi1kZXZlbCBmZm1wZWctZGV2ZWwg bGliZWRpdC1kZXZlbCBsaWJlcG94eS1kZXZlbCBsaWJtYWdpY2stZGV2ZWwKCkZyb20gY2RjZTJi NTI2YTVjYjU1NWVkOTVhZWFjMGQ4OThiYWZkMGUxYTFmNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU3LzExNV0gbWluaWRsbmE6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUgYi9zcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRl CmluZGV4IGU4MDgxYjFjYmM2Ny4uOWVlOTcxNDg2MWZkIDEwMDY0NAotLS0gYS9zcmNwa2dzL21p bmlkbG5hL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtaW5pZGxuYScKIHBrZ25hbWU9bWluaWRsbmEK IHZlcnNpb249MS4zLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1j b25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIKICAtLXNiaW5kaXI9L3Vzci9iaW4KCkZyb20gOGJl M2VlMDlmOGUwZDBmNDg0NDNhZGVkN2RkMTcxNDgwZTgwYWRiOCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU4LzExNV0gbWl4eHg6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9taXh4eC90ZW1wbGF0ZSB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbWl4eHgvdGVtcGxhdGUgYi9zcmNwa2dzL21peHh4L3RlbXBsYXRlCmluZGV4IDYx OWRkY2EwZDMzMi4uNGI5ZWEwMGQzZmIzIDEwMDY0NAotLS0gYS9zcmNwa2dzL21peHh4L3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvbWl4eHgvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdtaXh4eCcKIHBrZ25hbWU9bWl4eHgKIHZlcnNpb249Mi4zLjMKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURD TUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UiCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1v ZHVsZXMgcGtnLWNvbmZpZyBwcm90b2J1ZiBxdDUtaG9zdC10b29scyBxdDUtZGV2ZWwiCgpGcm9t IDM2Nzg3MGMzMjA2NWRjMjljYTFjMDYxZGQzMTg0NDI1ZjQ4MDYzMjMgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA1OS8xMTVdIG1sdDogcmV2 YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL21sdC90ZW1wbGF0ZSB8IDQgKyst LQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL21sdC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWx0L3RlbXBsYXRlCmluZGV4 IDg5MzNlYjRlN2JiOS4uNzMzNTNmZWRhZmI1IDEwMDY0NAotLS0gYS9zcmNwa2dzL21sdC90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL21sdC90ZW1wbGF0ZQpAQCAtMSwxNCArMSwxNCBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnbWx0JwogcGtnbmFtZT1tbHQKIHZlcnNpb249Ni4yNi4xCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIt LXByZWZpeD0vdXNyIC0tbGliZGlyPS91c3IvbGliJFhCUFNfVEFSR0VUX1dPUkRTSVpFCiAgLS1l bmFibGUtZ3BsIC0tZW5hYmxlLWdwbDMgLS1kaXNhYmxlLXN3ZmRlYyAtLXdpdGhvdXQta2RlCiAg LS1zd2lnLWxhbmd1YWdlcz1weXRob24iCiBob3N0bWFrZWRlcGVuZHM9ImRveHlnZW4gcGtnLWNv bmZpZyBsYWRzcGEtc2RrIHN3aWcgcHl0aG9uMyB3aGljaCIKICMgWFhYOiBtb3ZpdCB2aWQuc3Rh YgotbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZy1kZXZlbCBndGsrLWRldmVsIGph Y2stZGV2ZWwgbGFkc3BhLXNkaworbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZzQt ZGV2ZWwgZ3RrKy1kZXZlbCBqYWNrLWRldmVsIGxhZHNwYS1zZGsKICBsaWJleGlmLWRldmVsIGxp YnNhbXBsZXJhdGUtZGV2ZWwgbGlieG1sMi1kZXZlbCBzb3gtZGV2ZWwgU0RMX2ltYWdlLWRldmVs CiAgZmZ0dy1kZXZlbCBmcmVpMHItcGx1Z2lucyBweXRob24zLWRldmVsIHB1bHNlYXVkaW8tZGV2 ZWwgbW92aXQtZGV2ZWwKICBsaWJ2aWRzdGFiLWRldmVsIGxpYmF0b21pYy1kZXZlbCIKCkZyb20g YjFjNGFhZmNiNDczM2I5MjIyMzNiM2YxYTdmN2NlMjJmZjkwODg4YyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYwLzExNV0gbW9jOiByZXZi dW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvbW9jL3RlbXBsYXRlIHwgNCArKy0t CiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbW9jL3RlbXBsYXRlIGIvc3JjcGtncy9tb2MvdGVtcGxhdGUKaW5kZXgg YzQyYmU2NTBhMWQyLi5kNGYwZWVmYmFkNTIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbW9jL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvbW9jL3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdtb2MnCiBwa2duYW1lPW1vYwogdmVyc2lvbj0yLjUuMgotcmV2aXNpb249 NgorcmV2aXNpb249NwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9ImRiLWRldmVsIG5jdXJzZXMtZGV2ZWwgbGliY3Vy bC1kZXZlbCBwb3B0LWRldmVsIGZmbXBlZy1kZXZlbAorbWFrZWRlcGVuZHM9ImRiLWRldmVsIG5j dXJzZXMtZGV2ZWwgbGliY3VybC1kZXZlbCBwb3B0LWRldmVsIGZmbXBlZzQtZGV2ZWwKICBqYWNr LWRldmVsIGFsc2EtbGliLWRldmVsIGxpYmx0ZGwtZGV2ZWwgbGliZmxhYy1kZXZlbCBsaWJ2b3Ji aXMtZGV2ZWwKICBsaWJtYWQtZGV2ZWwgbGlibXBjZGVjLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwg bGliaWQzdGFnLWRldmVsIGZhYWQyLWRldmVsCiAgdGFnbGliLWRldmVsIGxpYnNuZGZpbGUtZGV2 ZWwgd2F2cGFjay1kZXZlbCBzcGVleC1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsCgpGcm9tIDFl ZmYxYjUyNDg3ZWZkNjQ5ZmNkMzk0Y2M5ODViYzUxODgwNWU1ODAgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2MS8xMTVdIG1vdGlvbjogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21vdGlvbi90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbW90aW9uL3RlbXBsYXRlIGIvc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUKaW5k ZXggM2NmM2MzMDM1YzViLi43ZGNhMTJkODUxZTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbW90aW9u L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbW90aW9uL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnbW90aW9uJwogcGtnbmFtZT1tb3Rpb24KIHZlcnNpb249NC41 LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGhv c3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgcGtnLWNvbmZpZyBnZXR0ZXh0LWRldmVsIHRhciIKIG1h a2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbGlibWljcm9odHRwZC1kZXZlbCB2NGwtdXRpbHMtZGV2 ZWwgZ2V0dGV4dC1kZXZlbCIKCkZyb20gMzJlYjQ5YTNhYWExZDI4NjVjY2FkZGE4MWRiN2E0Yzc2 Y2RhZTkwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDYyLzExNV0gbXB2OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv bXB2L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tcHYvdGVtcGxhdGUgYi9zcmNwa2dzL21w di90ZW1wbGF0ZQppbmRleCBlMTYzYzQ5NmM2ZWIuLmQ0ZmVmYmY1ZTNjNyAxMDA2NDQKLS0tIGEv c3JjcGtncy9tcHYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tcHYvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtcHYnCiBwa2duYW1lPW1wdgogdmVyc2lvbj0w LjM1LjEKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1 cmVfYXJncz0iLURjZGRhPWVuYWJsZWQgLURkdmJpbj1lbmFibGVkIC1EZHZkbmF2PWVuYWJsZWQK ICAtRGxpYm1wdj10cnVlIC1EY3BsdWdpbnM9ZW5hYmxlZAoKRnJvbSA4Yzk2OTBkMjkwNTM4M2Vk MjhlNjQ5YWYyZjEwZThjZDI2N2YwN2U4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjMvMTE1XSBtdXNpa2N1YmU6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAKCi0tLQogc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL211c2lrY3ViZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlCmluZGV4 IDRiNzkzMDA0MTEyNi4uN2NkNjVjZjc2Yjc3IDEwMDY0NAotLS0gYS9zcmNwa2dzL211c2lrY3Vi ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL211c2lrY3ViZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ211c2lrY3ViZScKIHBrZ25hbWU9bXVzaWtjdWJlCiB2 ZXJzaW9uPTAuOTkuNAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UK IG1ha2VfY21kPW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRE5PX05DVVJTRVNXPTEiCgpGcm9tIDI2 MjU3MTU5NjNkNjg2MTc0YTYyNDY1ZjBiY2U0MjU3OTE2ZjBkMzUgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2NC8xMTVdIG5vdGN1cnNlczog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlIGIvc3JjcGtncy9ub3RjdXJzZXMv dGVtcGxhdGUKaW5kZXggNmRkOGEwOTEzMTlmLi4zMTEwYzMwYzlhZmYgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbm90Y3Vyc2VzJwogcGtnbmFt ZT1ub3RjdXJzZXMKIHZlcnNpb249My4wLjkKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxk X3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURVU0VfU1RBVElDPU9OICQodm9wdF9ib29s IG1hbiBVU0VfUEFORE9DKSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyAkKHZvcHRfaWYg bWFuIHBhbmRvYykiCgpGcm9tIDY2NGU3YmRlNjY4ODJmYjVmOGM2YjAwMTdiZGU0YzJjYzJlOGM0 MWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENI IDA2NS8xMTVdIG9iczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29icy90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb2JzL3RlbXBsYXRlIGIvc3JjcGtncy9vYnMvdGVt cGxhdGUKaW5kZXggODlmZDExMjk3YzNmLi4zY2Y0OWU0MTRiZjMgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3Mvb2JzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb2JzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb2JzJwogcGtnbmFtZT1vYnMKIHZlcnNpb249MjkuMS4w Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0iaTY4NiogeDg2XzY0KiBwcGM2NGxlKiBh YXJjaDY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURPQlNfVkVSU0lP Tl9PVkVSUklERT0ke3ZlcnNpb259IC1ERU5BQkxFX0pBQ0s9T04KCkZyb20gODkzZmI3M2IwYjA0 N2U1ZmE4ZTMzYTBkZTkxYmZkYjFlZjEyOTZiZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY2LzExNV0gb2xpdmU6IHJldmJ1bXAgZm9yIGZm bXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxl IGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL29saXZlL3RlbXBsYXRlIGIvc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZQppbmRleCAxMmE0 NjkzNmM5OTAuLjVjMjkxN2I5YzUxMiAxMDA2NDQKLS0tIGEvc3JjcGtncy9vbGl2ZS90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL29saXZlL3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdvbGl2ZScKIHBrZ25hbWU9b2xpdmUKIHZlcnNpb249MC4xLjIKLXJldmlz aW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPXFtYWtlCiBob3N0bWFrZWRlcGVuZHM9InF0 NS1xbWFrZSBxdDUtaG9zdC10b29scyBwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9InF0NS1kZXZl bCBxdDUtbXVsdGltZWRpYS1kZXZlbCBxdDUtc3ZnLWRldmVsIGZmbXBlZy1kZXZlbCBmcmVpMHIt cGx1Z2lucyIKK21ha2VkZXBlbmRzPSJxdDUtZGV2ZWwgcXQ1LW11bHRpbWVkaWEtZGV2ZWwgcXQ1 LXN2Zy1kZXZlbCBmZm1wZWc0LWRldmVsIGZyZWkwci1wbHVnaW5zIgogc2hvcnRfZGVzYz0iTm9u LWxpbmVhciB2aWRlbyBlZGl0b3IiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRs aW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKCkZyb20gZGU1NmZlNGQ1NWJk ZGFhOTc4YzBmZTA5NGZjMDRkMjQyMDg1NDAxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY3LzExNV0gb214cGxheWVyOiByZXZidW1wIGZv ciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlIHwgNiArKyst LS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUgYi9zcmNwa2dzL29teHBsYXllci90 ZW1wbGF0ZQppbmRleCBlNzBiZjc4NzNkNGQuLjBlOWJjNzBlN2M4ZSAxMDA2NDQKLS0tIGEvc3Jj cGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUK QEAgLTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29teHBsYXllcicKIHBrZ25h bWU9b214cGxheWVyCiB2ZXJzaW9uPTIwMTkwMTAyCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBz aG9ydF9kZXNjPSJDb21tYW5kbGluZSBPTVggcGxheWVyIGZvciB0aGUgUmFzcGJlcnJ5IFBpIgog bWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKLWxpY2Vuc2U9IkdQ TC0yIgorbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dpdGh1 Yi5jb20vcG9wY29ybm1peC9vbXhwbGF5ZXIiCiAKIF9jb21taXQ9ImYwNjIzNWNjOTY5MGE2ZDU4 MTg3NTE0NDUyZGY4Y2Y4ZmNkYWFjZWMiCkBAIC0xNSw3ICsxNSw3IEBAIGNoZWNrc3VtPWFmMmQ5 NDUwZjg5NDc4NDJlYThjNDAxZmU5ZjcxZWVjNDQ0MDEzZWJiZGVlMjlmMmFjODI4YzljNDkzYzEz MjkKIGFyY2hzPSJhcm12NmwqIGFybXY3bCoiCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIGhv c3RtYWtlZGVwZW5kcz0iY3VybCBwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRl dmVsIHJwaS11c2VybGFuZC1kZXZlbCBwY3JlLWRldmVsIGJvb3N0LWRldmVsIGZyZWV0eXBlLWRl dmVsIGZmbXBlZy1kZXZlbCBkYnVzLWRldmVsIgorbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVs IHJwaS11c2VybGFuZC1kZXZlbCBwY3JlLWRldmVsIGJvb3N0LWRldmVsIGZyZWV0eXBlLWRldmVs IGZmbXBlZzQtZGV2ZWwgZGJ1cy1kZXZlbCIKIGRlcGVuZHM9ImZyZWVmb250LXR0ZiIKIAogZG9f YnVpbGQoKSB7CgpGcm9tIGVmOWY4OTI3ZDYzMGQwMmFlMWUzYzk5MGVlMmJiYmUzYmFiNmZjNWEg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2 OC8xMTVdIG9wZW5pbWFnZWlvOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIGNvbW1vbi9z aGxpYnMgICAgICAgICAgICAgICAgfCAyICsrCiBzcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRl IHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29tbW9uL3NobGlicwppbmRleCBmY2M3NDAx YmU2MjYuLjVmMDU4OTZiYTFkMSAxMDA2NDQKLS0tIGEvY29tbW9uL3NobGlicworKysgYi9jb21t b24vc2hsaWJzCkBAIC0yMjYyLDYgKzIyNjIsOCBAQCBsaWJ4bXAuc28uNCBsaWJ4bXAtNC4zLjdf MQogbGliS0Y1VGhyZWFkV2VhdmVyLnNvLjUgdGhyZWFkd2VhdmVyLTUuMjYuMF8xCiBsaWJPcGVu SW1hZ2VJT19VdGlsLnNvLjIuNCBvcGVuaW1hZ2Vpby0yLjQuOS4wXzEKIGxpYk9wZW5JbWFnZUlP LnNvLjIuNCBvcGVuaW1hZ2Vpby0yLjQuOS4wXzEKK2xpYk9wZW5JbWFnZUlPX1V0aWwuc28uMi40 IG9wZW5pbWFnZWlvLTIuNC44LjFfMQorbGliT3BlbkltYWdlSU8uc28uMi40IG9wZW5pbWFnZWlv LTIuNC44LjFfMQogbGliT3BlbkNvbG9ySU8uc28uMi4xIG9wZW5jb2xvcmlvLTIuMS4yXzEKIGxp YnB5c3RyaW5nLnNvLjEgcHlzdHJpbmctMS4xLjNfMQogbGlieWFtbC1jcHAuc28uMC43IHlhbWwt Y3BwLTAuNy4wXzEKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUgYi9z cmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRlCmluZGV4IGI2NjFiYmY3YmE1Ny4uOWIzOGFjZTUw ZjdlIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdvcGVuaW1hZ2VpbycKIHBrZ25hbWU9b3BlbmltYWdlaW8KIHZlcnNpb249Mi40LjkuMAot cmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGJ1aWxkX2hlbHBlcj1x ZW11CiBjb25maWd1cmVfYXJncz0iLURVU0VfUVQ9MCAtRFVTRV9QWVRIT049MCAtRE9JSU9fQlVJ TERfVEVTVFM9MAoKRnJvbSA4MTFjNzBjNjQ5NmY2ZWU4NGVhNzI3ZTAwNjEzMTMxZDU3M2MwZWIw IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw NjkvMTE1XSBvcGVubXc6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9vcGVu bXcvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5tdy90ZW1wbGF0ZSBiL3NyY3BrZ3Mv b3Blbm13L3RlbXBsYXRlCmluZGV4IDUyNTFhMDI4M2RjMS4uZTM3NzFjN2FhZjFhIDEwMDY0NAot LS0gYS9zcmNwa2dzL29wZW5tdy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5tdy90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5tdycKIHBrZ25hbWU9 b3Blbm13CiB2ZXJzaW9uPTAuNDcuMAotcmV2aXNpb249NAorcmV2aXNpb249NQogYnVpbGRfc3R5 bGU9Y21ha2UKIF9yZWNhc3RfY29tbWl0PWU3NWFkZjg2ZjkxZWIzMDgyMjIwMDg1ZTQyZGRhNjI2 NzlmOWEzZWEKIF9idWxsZXRfdGFnPTMuMTcKCkZyb20gMmYyYmEzZmNkMWM1NDEzNDJlNGNjNWQw YzVkNDBiZDc0MDRlYzlhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDcwLzExNV0gb3BlbnNob3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbnNo b3QvdGVtcGxhdGUgYi9zcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlCmluZGV4IDMyMjcxN2Q0MGFi Yy4uYzA3NGUwMzM4NzczIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlCisr KyBiL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdvcGVuc2hvdCcKIHBrZ25hbWU9b3BlbnNob3QKIHZlcnNpb249My4wLjAKLXJl dmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXB5dGhvbjMtbW9kdWxlCiBob3N0bWFr ZWRlcGVuZHM9InB5dGhvbjMgcHl0aG9uMy1zZXR1cHRvb2xzIgogbWFrZWRlcGVuZHM9ImZmbXBl Zy1kZXZlbCBweXRob24zLVB5UXQ1IgoKRnJvbSA5NDg4YTc2NTY5MjYyOWVkZGM4OTQ0MzQxZGU4 MjY3YmM0NDYxYjkwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNzEvMTE1XSBvcGVudG9vbno6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW50b29u ei90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRlCmluZGV4IGVlOWY3NjAzZjU1 Zi4uM2U4MTgzNGNhMGVkIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ29wZW50b29ueicKIHBrZ25hbWU9b3BlbnRvb256CiB2ZXJzaW9uPTEuNi4w Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF93cmtzcmM9InRvb256L3NvdXJjZXMiCiBi dWlsZF9zdHlsZT1jbWFrZQogbWFrZV9jbWQ9bWFrZQoKRnJvbSBkODAzZDlhODQ4MjA2YjlkNTk5 Njc1NzZlZjRmZWJiYzBkNTM3ZDU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwNzIvMTE1XSBwaWFub2JhcjogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9w aWFub2Jhci90ZW1wbGF0ZSBiL3NyY3BrZ3MvcGlhbm9iYXIvdGVtcGxhdGUKaW5kZXggYTliMjll OTE5OTNmLi44MWVmY2QxMjJjNGQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcGlhbm9iYXIvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3BpYW5vYmFyJwogcGtnbmFtZT1waWFub2JhcgogdmVyc2lvbj0yMDIy LjA0LjAxCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUK IG1ha2VfYnVpbGRfYXJncz0iVj0xIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJv bSBlYmY5NWUyZDAwNGJkMzE1NmZmNDM2ZDZiZWEyMzZmZDE4ZmRhYzVmIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzMvMTE1XSBwcHNzcHA6 IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9wcHNzcHAvdGVtcGxhdGUg fCA3ICsrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9wcHNzcHAvdGVtcGxhdGUgYi9zcmNwa2dzL3Bwc3Nw cC90ZW1wbGF0ZQppbmRleCA3OTg0YTczM2Q0YmUuLjE1YTQyZmQyYzk5MyAxMDA2NDQKLS0tIGEv c3JjcGtncy9wcHNzcHAvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9wcHNzcHAvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdwcHNzcHAnCiBwa2duYW1lPXBwc3Nw cAogdmVyc2lvbj0xLjE0LjQKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIF9nbHNsYW5nX2NvbW1p dD1kYzExYWRkZTIzYzQ1NWEyNGUxM2RkNTRkZTliNGVkZThiZGQ3ZGI4CiBfU1BJUlZfQ3Jvc3Nf Y29tbWl0PTlhY2I5ZWMzMWY1YThlZjgwZWE2Yjk5NGJiNzdiZTc4N2IwOGQzZDEKIF9hcm1pcHNf Y29tbWl0PTY3MTllZGViYWFlMDMzMzBlZTU0NDFkOWIyODI4MDY3MmVkZjAwZDUKQEAgLTEzLDcg KzEzLDcgQEAgY29uZmlndXJlX2FyZ3M9Ii1ESEVBRExFU1M9MSAtRFVTRV9TWVNURU1fRkZNUEVH PTEgLURVTklUVEVTVD1PTgogIC1EVVNJTkdfUVRfVUk9JCh2b3B0X2lmIHF0IE9OIE9GRikgLURV U0VfU1lTVEVNX1pTVEQ9T04KICAtREFSTUlQU19VU0VfU1REX0ZJTEVTWVNURU09T04iCiBob3N0 bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcHl0aG9uMyAkKHZvcHRfaWYgcXQgcXQ1LWhvc3QtdG9v bHMpIgotbWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgZ2xldy1kZXZlbCBmZm1wZWctZGV2ZWwgbGli emlwLWRldmVsCittYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBnbGV3LWRldmVsIGZmbXBlZzQtZGV2 ZWwgbGliemlwLWRldmVsCiAgc25hcHB5LWRldmVsIHJhcGlkanNvbiBsaWJwbmctZGV2ZWwgbGli enN0ZC1kZXZlbAogICQodm9wdF9pZiBzZGwyIFNETDItZGV2ZWwpICQodm9wdF9pZiB3YXlsYW5k IHdheWxhbmQtZGV2ZWwpCiAgJCh2b3B0X2lmIHF0ICdxdDUtZGV2ZWwgcXQ1LW11bHRpbWVkaWEt ZGV2ZWwnKSIKQEAgLTYyLDEzICs2MiwxMiBAQCBwb3N0X2V4dHJhY3QoKSB7CiAJbXYgJHt3cmtz cmN9L21pbml1cG5wLSR7X21pbml1cG5wX2NvbW1pdH0gJHt3cmtzcmN9L2V4dC9taW5pdXBucAog fQogCi1wb3N0X3BhdGNoKCl7Citwb3N0X3BhdGNoKCkgewogCSMgZGlzYWJsZSBnaXQgdmVyc2lv bmluZwogCXZzZWQgLWUgJ3N8ZmluZF9wYWNrYWdlKEdpdCl8IyAmfCcgLWkgZ2l0LXZlcnNpb24u Y21ha2UKIH0KIAogZG9faW5zdGFsbCgpIHsKLQl2bGljZW5zZSBMSUNFTlNFLlRYVAogCXZpbnN0 YWxsIGljb25zL2ljb24uc3ZnIDY0NCB1c3Ivc2hhcmUvcGl4bWFwcyBwcHNzcHAuc3ZnCiAJdmlu c3RhbGwgUXQvUFBTU1BQLmRlc2t0b3AgNjQ0IHVzci9zaGFyZS9hcHBsaWNhdGlvbnMKIAl2Ymlu IGJ1aWxkL1BQU1NQUEhlYWRsZXNzIHBwc3NwcC1oZWFkbGVzcwoKRnJvbSBkOTQ1N2VmNWFkNTVi NzU1Y2U0OWM2ZjEwZjVlZDcyMTg3MTA0M2NjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzQvMTE1XSBwcWl2OiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvcHFpdi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHFp di90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHFpdi90ZW1wbGF0ZQppbmRleCA1NDJmYzI3YTJkMzIuLjkz MDhkOTQ5YjZhMSAxMDA2NDQKLS0tIGEvc3JjcGtncy9wcWl2L3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvcHFpdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Bx aXYnCiBwa2duYW1lPXBxaXYKIHZlcnNpb249Mi4xMgotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBt YWtlZGVwZW5kcz0iZ2xpYi1kZXZlbCBndGsrMy1kZXZlbCAkKHZvcHRfaWYgZmZtcGVnIGZmbXBl Zy1kZXZlbCkKCkZyb20gNzBhMjg3MzgwNDhmOTllZWEzZWE1NWM0MTIzMDBhZDRhN2YzYmFhNSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDc1 LzExNV0gcW1tcDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3FtbXAvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3FtbXAvdGVtcGxhdGUgYi9zcmNwa2dzL3FtbXAvdGVt cGxhdGUKaW5kZXggMjZjNjYxZWQxNmJlLi5hMTUwZDc0NDFjN2EgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvcW1tcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3FtbXAvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxbW1wJwogcGtnbmFtZT1xbW1wCiB2ZXJzaW9uPTEu Ni4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJl X2FyZ3M9Ii1EVVNFX0hBTDpCT09MPUZBTFNFIC1EUU1NUF9ERUZBVUxUX1VJOlNUUklORz1zaW1w bGUiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtl IgoKRnJvbSA3MTIyZWNmZTFhYWMwZGZmYjk3OTZkMTlhYmIwM2I1ZGI3YjBmMTIxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzYvMTE1XSBx dDUtd2ViZW5naW5lOiB1cGRhdGUgdG8gNS4xNS4xMwoKLS0tCiAuLi4vY2hyb21pdW0tbWVkaWEt ZmlsdGVycy1jcHAxNC5wYXRjaCAgICAgICAgfCAgMTEgKysKIHNyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggICB8IDE3OSArKysrKysrKysrKysrKysrKysKIHNyY3Br Z3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZSAgICAgICAgICAgICAgICB8ICAxMCArLQogMyBmaWxl cyBjaGFuZ2VkLCAxOTUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9jaHJvbWl1bS1tZWRpYS1maWx0 ZXJzLWNwcDE0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5l L3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2ggYi9zcmNwa2dzL3F0 NS13ZWJlbmdpbmUvcGF0Y2hlcy9jaHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNwcDE0LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDRhZGM1NDBmMmNiCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvY2hyb21pdW0tbWVk aWEtZmlsdGVycy1jcHAxNC5wYXRjaApAQCAtMCwwICsxLDExIEBACistLS0gYS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9CVUlMRC5nbgkyMDIzLTAyLTI3IDEzOjMyOjU5LjAw MDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMv QlVJTEQuZ24JMjAyMy0wNC0wMiAxNzoyMTozOS4yMDQwNjYzODQgLTA0MDAKK0BAIC05Niw2ICs5 Niw4IEBACisgICAgICIvL3VpL2dmeC9nZW9tZXRyeTpnZW9tZXRyeSIsCisgICBdCisgCisrICBj ZmxhZ3NfY2MgPSBbICItc3RkPWMrKzE0IiBdCisrCisgICBsaWJzID0gW10KKyAKKyAgIGlmIChw cm9wcmlldGFyeV9jb2RlY3MpIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9w YXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1w ZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWM1NWUx NjM0NDIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv ZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDE3OSBAQAorLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MJMjAyMy0wNC0wMiAxNjo1MDo1Ny43 MzI1NDc0NDYgLTA0MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJz L2ZmbXBlZ19kZW11eGVyLmNjCTIwMjMtMDQtMDIgMTY6NTA6MDkuNDg2NDc4OTk1IC0wNDAwCitA QCAtNTcsNiArNTcsOCBAQAorIAorIG5hbWVzcGFjZSB7CisgCisrY29uc3RleHByIGludDY0X3Qg a1JlbGF0aXZlVHNCYXNlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oMHg3ZmZlZmZmZmZmZmZmZmZm KTsKKysKKyB2b2lkIFNldEFWU3RyZWFtRGlzY2FyZChBVlN0cmVhbSogc3RyZWFtLCBBVkRpc2Nh cmQgZGlzY2FyZCkgeworICAgRENIRUNLKHN0cmVhbSk7CisgICBzdHJlYW0tPmRpc2NhcmQgPSBk aXNjYXJkOworQEAgLTkwLDI0ICs5MiwxMiBAQAorIAorIHN0YXRpYyBiYXNlOjpUaW1lRGVsdGEg RXh0cmFjdFN0YXJ0VGltZShBVlN0cmVhbSogc3RyZWFtKSB7CisgICAvLyBUaGUgZGVmYXVsdCBz dGFydCB0aW1lIGlzIHplcm8uCistICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGltZTsKKysgIGJh c2U6OlRpbWVEZWx0YSBzdGFydF90aW1lID0ga05vVGltZXN0YW1wOworIAorICAgLy8gRmlyc3Qg dHJ5IHRvIHVzZSAgdGhlIHxzdGFydF90aW1lfCB2YWx1ZSBhcyBpcy4KKyAgIGlmIChzdHJlYW0t PnN0YXJ0X3RpbWUgIT0ga05vRkZtcGVnVGltZXN0YW1wKQorICAgICBzdGFydF90aW1lID0gQ29u dmVydEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgc3RyZWFtLT5zdGFydF90aW1lKTsK KyAKKy0gIC8vIE5leHQgdHJ5IHRvIHVzZSB0aGUgZmlyc3QgRFRTIHZhbHVlLCBmb3IgY29kZWNz IHdoZXJlIHdlIGtub3cgUFRTID09IERUUworLSAgLy8gKGV4Y2x1ZGVzIGFsbCBIMjZ4IGNvZGVj cykuIFRoZSBzdGFydCB0aW1lIG11c3QgYmUgcmV0dXJuZWQgaW4gUFRTLgorLSAgaWYgKHN0cmVh bS0+Zmlyc3RfZHRzICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCAmJgorLSAgICAgIHN0cmVhbS0+Y29k ZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0hFVkMgJiYKKy0gICAgICBzdHJlYW0tPmNv ZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IMjY0ICYmCistICAgICAgc3RyZWFtLT5j b2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfTVBFRzQpIHsKKy0gICAgY29uc3QgYmFz ZTo6VGltZURlbHRhIGZpcnN0X3B0cyA9CistICAgICAgICBDb252ZXJ0RnJvbVRpbWVCYXNlKHN0 cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0tPmZpcnN0X2R0cyk7CistICAgIGlmIChmaXJzdF9wdHMg PCBzdGFydF90aW1lKQorLSAgICAgIHN0YXJ0X3RpbWUgPSBmaXJzdF9wdHM7CistICB9CistCisg ICByZXR1cm4gc3RhcnRfdGltZTsKKyB9CisgCitAQCAtNDA4LDExICszOTgsMTEgQEAKKyAgIHNj b3BlZF9yZWZwdHI8RGVjb2RlckJ1ZmZlcj4gYnVmZmVyOworIAorICAgaWYgKHR5cGUoKSA9PSBE ZW11eGVyU3RyZWFtOjpURVhUKSB7CistICAgIGludCBpZF9zaXplID0gMDsKKysgICAgc2l6ZV90 IGlkX3NpemUgPSAwOworICAgICB1aW50OF90KiBpZF9kYXRhID0gYXZfcGFja2V0X2dldF9zaWRl X2RhdGEoCisgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1dFQlZUVF9JREVOVElG SUVSLCAmaWRfc2l6ZSk7CisgCistICAgIGludCBzZXR0aW5nc19zaXplID0gMDsKKysgICAgc2l6 ZV90IHNldHRpbmdzX3NpemUgPSAwOworICAgICB1aW50OF90KiBzZXR0aW5nc19kYXRhID0gYXZf cGFja2V0X2dldF9zaWRlX2RhdGEoCisgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRB X1dFQlZUVF9TRVRUSU5HUywgJnNldHRpbmdzX3NpemUpOworIAorQEAgLTQyNCw3ICs0MTQsNyBA QAorICAgICBidWZmZXIgPSBEZWNvZGVyQnVmZmVyOjpDb3B5RnJvbShwYWNrZXQtPmRhdGEsIHBh Y2tldC0+c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZV9k YXRhLmRhdGEoKSwgc2lkZV9kYXRhLnNpemUoKSk7CisgICB9IGVsc2UgeworLSAgICBpbnQgc2lk ZV9kYXRhX3NpemUgPSAwOworKyAgICBzaXplX3Qgc2lkZV9kYXRhX3NpemUgPSAwOworICAgICB1 aW50OF90KiBzaWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKKyAgICAgICAgIHBh Y2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxPQ0tBRERJVElPTkFMLCAmc2lkZV9k YXRhX3NpemUpOworIAorQEAgLTQ4NSw3ICs0NzUsNyBAQAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBhY2tldC0+c2l6ZSAtIGRhdGFfb2Zmc2V0KTsKKyAgICAgfQor IAorLSAgICBpbnQgc2tpcF9zYW1wbGVzX3NpemUgPSAwOworKyAgICBzaXplX3Qgc2tpcF9zYW1w bGVzX3NpemUgPSAwOworICAgICBjb25zdCB1aW50MzJfdCogc2tpcF9zYW1wbGVzX3B0ciA9Cisg ICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXZfcGFja2V0X2dldF9z aWRlX2RhdGEoCisgICAgICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9TS0lQX1NB TVBMRVMsICZza2lwX3NhbXBsZXNfc2l6ZSkpOworQEAgLTE1ODcsNiArMTU3Nyw4IEBACisgICBm b3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IHN0cmVhbXNfKSB7CisgICAgIGlmICghc3RyZWFtIHx8 IHN0cmVhbS0+SXNFbmFibGVkKCkgIT0gZW5hYmxlZCkKKyAgICAgICBjb250aW51ZTsKKysgICAg aWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9QVFNfVkFMVUUpCisr ICAgICAgY29udGludWU7CisgICAgIGlmICghbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtIHx8Cisg ICAgICAgICBzdHJlYW0tPnN0YXJ0X3RpbWUoKSA8IGxvd2VzdF9zdGFydF90aW1lX3N0cmVhbS0+ c3RhcnRfdGltZSgpKSB7CisgICAgICAgbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtID0gc3RyZWFt LmdldCgpOworQEAgLTE2MDQsNiArMTU5Niw4IEBACisgICAgIGlmIChzdHJlYW0gJiYgc3RyZWFt LT50eXBlKCkgPT0gRGVtdXhlclN0cmVhbTo6VklERU8gJiYKKyAgICAgICAgIHN0cmVhbS0+SXNF bmFibGVkKCkpIHsKKyAgICAgICB2aWRlb19zdHJlYW0gPSBzdHJlYW0uZ2V0KCk7CisrICAgICAg aWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9QVFNfVkFMVUUpCisr ICAgICAgICBjb250aW51ZTsKKyAgICAgICBpZiAodmlkZW9fc3RyZWFtLT5zdGFydF90aW1lKCkg PD0gc2Vla190aW1lKSB7CisgICAgICAgICByZXR1cm4gdmlkZW9fc3RyZWFtOworICAgICAgIH0K K2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21p dW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uaCBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oCistLS0gYS9zcmMv M3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uaAkyMDIyLTA1LTIz IDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21l ZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmgJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTcxOTI3ODgg LTA1MDAKK0BAIC0yOSw2ICsyOSw3IEBAIGV4dGVybiAiQyIgeworICNpbmNsdWRlIDxsaWJhdmZv cm1hdC9hdmZvcm1hdC5oPgorICNpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmlvLmg+CisgI2luY2x1 ZGUgPGxpYmF2dXRpbC9hdnV0aWwuaD4KKysjaW5jbHVkZSA8bGliYXZ1dGlsL2NoYW5uZWxfbGF5 b3V0Lmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9pbWd1dGlscy5oPgorICNpbmNsdWRlIDxsaWJh dnV0aWwvbG9nLmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9tYXN0ZXJpbmdfZGlzcGxheV9tZXRh ZGF0YS5oPgorZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjIHF0d2ViZW5naW5l LTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvYXVkaW9fZmlsZV9y ZWFkZXIuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlv X2ZpbGVfcmVhZGVyLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysg Yi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRlci5j YwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxNzE5Mjc4OCAtMDUwMAorQEAgLTg1LDcgKzg1LDcgQEAg Ym9vbCBBdWRpb0ZpbGVSZWFkZXI6Ok9wZW5EZW11eGVyKCkgeworIH0KKyAKKyBib29sIEF1ZGlv RmlsZVJlYWRlcjo6T3BlbkRlY29kZXIoKSB7CistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNf ZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNvZGVj KiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7 CisgICBpZiAoY29kZWMpIHsKKyAgICAgLy8gTVAzIGRlY29kZXMgdG8gUzE2UCB3aGljaCB3ZSBk b24ndCBzdXBwb3J0LCB0ZWxsIGl0IHRvIHVzZSBTMTYgaW5zdGVhZC4KKyAgICAgaWYgKGNvZGVj X2NvbnRleHRfLT5zYW1wbGVfZm10ID09IEFWX1NBTVBMRV9GTVRfUzE2UCkKK2RpZmYgLU5hdXJw IHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmls dGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRpb19kZWNvZGVyLmNjCistLS0g YS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rl ci5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBh cnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2RlY29kZXIuY2MJMjAyMi0w Ny0xMSAyMjoxMjo0Ny45MTcxOTI3ODggLTA1MDAKK0BAIC0zMjksNyArMzI5LDcgQEAgYm9vbCBG Rm1wZWdBdWRpb0RlY29kZXI6OkNvbmZpZ3VyZURlY29kZQorICAgICB9CisgICB9CisgCistICBB VkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2Rl Y19pZCk7CisrICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNv ZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisgICBpZiAoIWNvZGVjIHx8CisgICAgICAgYXZjb2Rl Y19vcGVuMihjb2RlY19jb250ZXh0Xy5nZXQoKSwgY29kZWMsICZjb2RlY19vcHRpb25zKSA8IDAp IHsKKyAgICAgRExPRyhFUlJPUikgPDwgIkNvdWxkIG5vdCBpbml0aWFsaXplIGF1ZGlvIGRlY29k ZXI6ICIKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkv Y2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZ2x1ZS5jYyBxdHdlYmVuZ2luZS01LjE1LjEw L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVlLmNjCistLS0g YS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZ2x1ZS5jYwkyMDIy LTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTgx OTI3NzkgLTA1MDAKK0BAIC01OSw3ICs1OSw2IEBAIHN0YXRpYyBpbnQ2NF90IEFWSU9TZWVrT3Bl cmF0aW9uKHZvaWQqIG8KKyB9CisgCisgdm9pZCBGRm1wZWdHbHVlOjpJbml0aWFsaXplRkZtcGVn KCkgeworLSAgYXZfcmVnaXN0ZXJfYWxsKCk7CisgfQorIAorIHN0YXRpYyB2b2lkIExvZ0NvbnRh aW5lcihib29sIGlzX2xvY2FsX2ZpbGUsCitAQCAtOTUsOSArOTQsNiBAQCBGRm1wZWdHbHVlOjpG Rm1wZWdHbHVlKEZGbXBlZ1VSTFByb3RvY29sCisgICAvLyBFbmFibGUgZmFzdCwgYnV0IGluYWNj dXJhdGUgc2Vla3MgZm9yIE1QMy4KKyAgIGZvcm1hdF9jb250ZXh0Xy0+ZmxhZ3MgfD0gQVZGTVRf RkxBR19GQVNUX1NFRUs7CisgCistICAvLyBFbnN1cmVzIHdlIGNhbiByZWFkIG91dCB2YXJpb3Vz IG1ldGFkYXRhIGJpdHMgbGlrZSB2cDggYWxwaGEuCistICBmb3JtYXRfY29udGV4dF8tPmZsYWdz IHw9IEFWRk1UX0ZMQUdfS0VFUF9TSURFX0RBVEE7CistCisgICAvLyBFbnN1cmVzIGZvcm1hdCBw YXJzaW5nIGVycm9ycyB3aWxsIGJhaWwgb3V0LiBGcm9tIGFuIGF1ZGl0IG9uIDExLzIwMTcsIGFs bAorICAgLy8gaW5zdGFuY2VzIHdlcmUgcmVhbCBmYWlsdXJlcy4gU29sdmVzIGJ1Z3MgbGlrZSBo dHRwOi8vY3JidWcuY29tLzcxMDc5MS4KKyAgIGZvcm1hdF9jb250ZXh0Xy0+ZXJyb3JfcmVjb2du aXRpb24gfD0gQVZfRUZfRVhQTE9ERTsKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAu b3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlkZW9fZGVj b2Rlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9m aWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21p dW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5jYwkyMDIyLTA1LTIzIDA2OjM4 OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2Zp bHRlcnMvZmZtcGVnX3ZpZGVvX2RlY29kZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTgxOTI3 NzkgLTA1MDAKK0BAIC0zOTEsNyArMzkxLDcgQEAgYm9vbCBGRm1wZWdWaWRlb0RlY29kZXI6OkNv bmZpZ3VyZURlY29kZQorICAgaWYgKGRlY29kZV9uYWx1c18pCisgICAgIGNvZGVjX2NvbnRleHRf LT5mbGFnczIgfD0gQVZfQ09ERUNfRkxBRzJfQ0hVTktTOworIAorLSAgQVZDb2RlYyogY29kZWMg PSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOworKyAgY29u c3QgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+ Y29kZWNfaWQpOworICAgaWYgKCFjb2RlYyB8fCBhdmNvZGVjX29wZW4yKGNvZGVjX2NvbnRleHRf LmdldCgpLCBjb2RlYywgTlVMTCkgPCAwKSB7CisgICAgIFJlbGVhc2VGRm1wZWdSZXNvdXJjZXMo KTsKKyAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5v cmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlhX2ZpbGVfY2hlY2tl ci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0 ZXJzL21lZGlhX2ZpbGVfY2hlY2tlci5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21l ZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAw MDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9t ZWRpYV9maWxlX2NoZWNrZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1MDAK K0BAIC02OCw3ICs2OCw3IEBAIGJvb2wgTWVkaWFGaWxlQ2hlY2tlcjo6U3RhcnQoYmFzZTo6VGlt ZUQKKyAgICAgICBhdXRvIGNvbnRleHQgPSBBVlN0cmVhbVRvQVZDb2RlY0NvbnRleHQoZm9ybWF0 X2NvbnRleHQtPnN0cmVhbXNbaV0pOworICAgICAgIGlmICghY29udGV4dCkKKyAgICAgICAgIGNv bnRpbnVlOworLSAgICAgIEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY3At PmNvZGVjX2lkKTsKKysgICAgICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9k ZWNvZGVyKGNwLT5jb2RlY19pZCk7CisgICAgICAgaWYgKGNvZGVjICYmIGF2Y29kZWNfb3BlbjIo Y29udGV4dC5nZXQoKSwgY29kZWMsIG51bGxwdHIpID49IDApIHsKKyAgICAgICAgIGF1dG8gbG9v cCA9IHN0ZDo6bWFrZV91bmlxdWU8RkZtcGVnRGVjb2RpbmdMb29wPihjb250ZXh0LmdldCgpKTsK KyAgICAgICAgIHN0cmVhbV9jb250ZXh0c1tpXSA9IHtzdGQ6Om1vdmUoY29udGV4dCksIHN0ZDo6 bW92ZShsb29wKX07CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9j b2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2Rpbmcv Y29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQv aDI2NF9kZWNvZGVyX2ltcGwuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAK KysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92 aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MJMjAyMi0wNy0xMSAy MjoxMjo0Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC0yMDMsNyArMjAzLDcgQEAgaW50MzJfdCBIMjY0 RGVjb2RlckltcGw6OkluaXREZWNvZGUoY29ucworICAgLy8gYSBwb2ludGVyIHx0aGlzfC4KKyAg IGF2X2NvbnRleHRfLT5vcGFxdWUgPSB0aGlzOworIAorLSAgQVZDb2RlYyogY29kZWMgPSBhdmNv ZGVjX2ZpbmRfZGVjb2Rlcihhdl9jb250ZXh0Xy0+Y29kZWNfaWQpOworKyAgY29uc3QgQVZDb2Rl YyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihhdl9jb250ZXh0Xy0+Y29kZWNfaWQpOwor ICAgaWYgKCFjb2RlYykgeworICAgICAvLyBUaGlzIGlzIGFuIGluZGljYXRpb24gdGhhdCBGRm1w ZWcgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIG9yIGl0IGhhcyBub3QKKyAgICAgLy8gYmVlbiBj b21waWxlZC9pbml0aWFsaXplZCB3aXRoIHRoZSBjb3JyZWN0IHNldCBvZiBjb2RlY3MuCmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS13ZWJl bmdpbmUvdGVtcGxhdGUKaW5kZXggMGE3MTQ4NDIwOGJjLi4wOTVhYjY3NzAxZTQgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS13ZWJl bmdpbmUvdGVtcGxhdGUKQEAgLTEsOSArMSw5IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUt d2ViZW5naW5lJwogcGtnbmFtZT1xdDUtd2ViZW5naW5lCi12ZXJzaW9uPTUuMTUuMTEKLXJldmlz aW9uPTIKK3ZlcnNpb249NS4xNS4xMworcmV2aXNpb249MQogX3ZlcnNpb249IiR7dmVyc2lvbn0t bHRzIgotX2Nocm9taXVtX2NvbW1pdD1iZTM0OWVhZjYyZTc3OTU1NzkxZDdiZjI5Zjg5M2YxZThh MzdkYWY0CitfY2hyb21pdW1fY29tbWl0PWU0OGRmNzgwM2M3Yzk4YjBiMjQ3MWM5NDA1N2QzMmU0 NGEzMDFhZDUKIGFyY2hzPSJ4ODZfNjQqIGk2ODYqIGFybXZbNjddKiBwcGM2NCogYWFyY2g2NCoi CiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfc3R5bGU9cW1ha2UKQEAgLTMyLDggKzMyLDggQEAg bGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciwgTEdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0i aHR0cHM6Ly9xdC5pby8iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9xdC9xdHdlYmVu Z2luZS9hcmNoaXZlL3Yke192ZXJzaW9ufS50YXIuZ3oKICBodHRwczovL2dpdGh1Yi5jb20vcXQv cXR3ZWJlbmdpbmUtY2hyb21pdW0vYXJjaGl2ZS8ke19jaHJvbWl1bV9jb21taXR9LnRhci5neiIK LWNoZWNrc3VtPSJhYTc0NjYzNTZjNDUwYzVmNTg3MGY5NzliOTNjZDdlN2U2MmRhMTE2NWMzMjhm ZmNhYjFhOTkyOGRiMThhZDY3Ci0gNmY0N2VkOGFiOGNjMDYyNDExZjZmMjA2ZGE2MzUzYmM4MjYz ZDZlZDZkNjI5MGM2ODlhMDVjMDFkOTFmNjQ2YiIKK2NoZWNrc3VtPSI0YjU5ODM4ZWQ3NWVmNzg4 YjU5ZTFlNDEyNTM1YTBlNDJkZDlkMzExNjYxZmRlYWRiMTkxYjU4MWJhODE1YzYzCisgYTkxNjg2 NTYyYjFkNGU4YjIyMGUwYmJjYmFiNWZlYjY0NjMwZTJkZTk3NGIzNWFjMDM0YmYzODhhZjc3MWE2 YyIKIAogbm9fZ2VuZXJpY19wa2djb25maWdfbGluaz15ZXMKIGJ1aWxkX29wdGlvbnM9InNuZGlv IHBpcGV3aXJlIgoKRnJvbSA5YjlmZjRlMTMwZGI1ZTcwY2U1NWUwNTA5MzljNjA3YTc3OTQwOGY1 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw NzcvMTE1XSBxdDU6IHVwZGF0ZSB0byA1LjE1LjgKCi0tLQogLi4uZXJ5d2hlcmUtb3BlbnNvdXJj ZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoIHwgMTI5MTMgKysrKysrKysrKysrKysrKwogc3JjcGtn cy9xdDUvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMTIgKy0KIDIgZmls ZXMgY2hhbmdlZCwgMTI5MTkgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1z cmMtNS4xNS44LWtmNS0xLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy9x dC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5wYXRjaCBiL3NyY3BrZ3Mv cXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNyYy01LjE1Ljgta2Y1LTEucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NjZjOThiY2QzYmIK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2ZXJ5d2hlcmUtb3Bl bnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoCkBAIC0wLDAgKzEsMTI5MTMgQEAKK1N1Ym1p dHRlZCBCeTogICAgICAgICAgICBQaWVycmUgTGFiYXN0aWUgPHBpZXJyZV9kb3RfbGFiYXN0aWVf YXRfbmV1Zl9kb3RfZnI+CitEYXRlOiAgICAgICAgICAgICAgICAgICAgMjAyMy0wMS0wNQorSW5p dGlhbCBQYWNrYWdlIFZlcnNpb246IDUuMTUuOAorVXBzdHJlYW0gU3RhdHVzOiAgICAgICAgIEFw cGxpZWQgKGFjY29yZGluZyB0byBLREUpCitPcmlnaW46ICAgICAgICAgICAgICAgICAgS0RFIHBh dGNoIHNldAorRGVzY3JpcHRpb246ICAgICAgICAgICAgIFBhdGNoIHNldCBtYWludGFpbmVkIGJ5 IHRoZSBLREUgZm9sa3MKK3NlZSBodHRwczovL2RvdC5rZGUub3JnLzIwMjEvMDQvMDYvYW5ub3Vu Y2luZy1rZGVzLXF0LTUtcGF0Y2gtY29sbGVjdGlvbgorUGF0Y2ggZ2VuZXJhdGVkIHVzaW5nIHRo ZSBwcm9jZWR1cmUgaW4KK2h0dHBzOi8vd2lraS5saW51eGZyb21zY3JhdGNoLm9yZy9ibGZzL3Rp Y2tldC8xNzQ3NiNjb21tZW50OjMKKworU3VibW9kdWxlIHF0YmFzZSA0ZWU0ZmMxOC4uOWNmNTg2 ZDY6CitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3Jt ZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oCitp bmRleCBmNzViYzQwOTNiLi4yYmQ1OTQxMGQ0IDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3Mv Y29tbW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9jb21t b24vYW5kcm9pZC9xcGxhdGZvcm1kZWZzLmgKK0BAIC0xNDQsMTEgKzE0NCw3IEBACisgI2RlZmlu ZSBRVF9TSUdOQUxfQVJHUyAgICAgICAgICBpbnQKKyAjZGVmaW5lIFFUX1NJR05BTF9JR05PUkUg ICAgICAgIFNJR19JR04KKyAKKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18g Pj0gMikKKyAjZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNl CistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYKKyAKKyAjaWYg ZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisgI2RlZmlu ZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNl L21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5tayBiL3F0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL21h Yy9zZGsubWsKK2luZGV4IGYzMGI1ODMwYjQuLmEzMmNlYWNiNmMgMTAwNjQ0CistLS0gYS9xdGJh c2UvbWtzcGVjcy9mZWF0dXJlcy9tYWMvc2RrLm1rCisrKysgYi9xdGJhc2UvbWtzcGVjcy9mZWF0 dXJlcy9tYWMvc2RrLm1rCitAQCAtMSw2ICsxLDYgQEAKKyAKKyBpZmVxICgkKFFUX01BQ19TREtf Tk9fVkVSU0lPTl9DSEVDSyksKQorLSAgICBDSEVDS19TREtfQ09NTUFORCA9IC91c3IvYmluL3hj cnVuIC0tc2RrICQoRVhQT1JUX1FNQUtFX01BQ19TREspIC1zaG93LXNkay12ZXJzaW9uIDI+JjEK KysgICAgQ0hFQ0tfU0RLX0NPTU1BTkQgPSAvdXNyL2Jpbi94Y3J1biAtLXNkayAkKEVYUE9SVF9R TUFLRV9NQUNfU0RLKSAtc2hvdy1zZGstdmVyc2lvbiAyPi9kZXYvbnVsbAorICAgICBDVVJSRU5U X01BQ19TREtfVkVSU0lPTiA6PSAkKHNoZWxsIERFVkVMT1BFUl9ESVI9JChFWFBPUlRfUU1BS0Vf WENPREVfREVWRUxPUEVSX1BBVEgpICQoQ0hFQ0tfU0RLX0NPTU1BTkQpKQorICAgICBpZm5lcSAo JChDVVJSRU5UX01BQ19TREtfVkVSU0lPTiksJChFWFBPUlRfUU1BS0VfTUFDX1NES19WRVJTSU9O KSkKKyAgICAgICAgICMgV2UgZG9uJ3Qgd2FudCB0byBjb21wbGFpbiBhYm91dCBvdXQgb2YgZGF0 ZSBTREsgdW5sZXNzIHRoZSB0YXJnZXQgbmVlZHMgdG8gYmUgcmVtYWRlLgorZGlmZiAtLWdpdCBh L3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3Nw ZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggYTgxOGQ5NzNmMC4uYzFhYjcy ZmJjNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRl ZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtY2xhbmcvcXBsYXRmb3JtZGVmcy5oCitA QCAtNzksMTQgKzc5LDYgQEAKKyAjZGVmaW5lIFFUX1VTRV9YT1BFTl9MRlNfRVhURU5TSU9OUwor ICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgorIAorLSN1bmRlZiBR VF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0g MikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNlCist I2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYKKy0KKyAjaWYgZGVm aW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisgI2RlZmluZSBR VF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCisgI2RlZmluZSBRVF9WU05QUklOVEYg ICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4 LWcrKy9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51eC1nKysvcXBsYXRmb3Jt ZGVmcy5oCitpbmRleCAxMzUyM2YwNzAyLi40ZDI3NTBkOWVjIDEwMDY0NAorLS0tIGEvcXRiYXNl L21rc3BlY3MvbGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3Mv bGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTc5LDE0ICs3OSw2IEBACisgI2RlZmluZSBR VF9VU0VfWE9QRU5fTEZTX0VYVEVOU0lPTlMKKyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bvc2l4L3Fw bGF0Zm9ybWRlZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCistCistI2lmIGRlZmluZWQo X19HTElCQ19fKSAmJiAoX19HTElCQ19fIDwgMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAg ICAgICAgIGludAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2Nr bGVuX3QKKy0jZW5kaWYKKy0KKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVO X1NPVVJDRSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJp bnRmCisgI2RlZmluZSBRVF9WU05QUklOVEYgICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAt LWdpdCBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNl L21rc3BlY3MvbGludXgtbGx2bS9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IGRjNzUwYWIxZWYuLmQz Y2MzOWI0N2YgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sbHZtL3FwbGF0Zm9y bWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtbGx2bS9xcGxhdGZvcm1kZWZzLmgK K0BAIC04MCwxNCArODAsNiBAQAorICNkZWZpbmUgUVRfVVNFX1hPUEVOX0xGU19FWFRFTlNJT05T CisgI2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVm IFFUX1NPQ0tMRU5fVAorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+ PSAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UK Ky0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgorLQorICNpZiBk ZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5l IFFUX1NOUFJJTlRGICAgICAgICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFUX1ZTTlBSSU5U RiAgICAgICAgICAgIDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbGlu dXgtbHNiLWcrKy9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysr L3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggNGM0ZTUzZGEyYS4uODNiYWZmYjNlMyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9x dGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTg1LDE2ICs4 NSw5IEBACisgI2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCisg I3VuZGVmIFFUX09QRU5fTEFSR0VGSUxFCistI3VuZGVmIFFUX1NPQ0tMRU5fVAorIAorICNkZWZp bmUgUVRfT1BFTl9MQVJHRUZJTEUgICAgICAgMAorIAorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykg JiYgKF9fR0xJQkNfXyA+PSAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29j a2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNl bmRpZgorLQorICNpZm5kZWYgU0lPQ0dJRkJSREFERFIKKyAjICBkZWZpbmUgU0lPQ0dJRkJSREFE RFIgMHg4OTE5CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbHlueG9zLWcr Ky9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysrL3FwbGF0Zm9ybWRl ZnMuaAoraW5kZXggNDMzOWVhMmIyMy4uNjAwN2FmMDA1NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9t a3NwZWNzL2x5bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9s eW54b3MtZysrL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTcyLDE0ICs3Miw2IEBACisgCisgI2luY2x1 ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tM RU5fVAorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorLSNk ZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5l IFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgorLQorICNpZiBkZWZpbmVkKF9Y T1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJ TlRGICAgICAgICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFUX1ZTTlBSSU5URiAgICAgICAg ICAgIDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy8zcmRwYXJ0eS9hbmdsZS9z cmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcCBiL3F0YmFzZS9zcmMvM3JkcGFydHkvYW5n bGUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAKK2luZGV4IGMzYzE4NDI1OGYuLjMy YWYzZjhmMjkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2FuZ2xlL3NyYy9saWJB TkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjLzNyZHBhcnR5L2FuZ2xl L3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwCitAQCAtMTAsNiArMTAsNyBAQAorICNp bmNsdWRlICJsaWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuaCIKKyAKKyAjaW5jbHVkZSA8YWxnb3Jp dGhtPgorKyNpbmNsdWRlIDxsaW1pdHM+CisgCisgI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgor IAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9ya2ZkL2ZvcmtmZF9saW51eC5j IGIvcXRiYXNlL3NyYy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMKK2luZGV4IGZmZTBl OWE1ZTIuLmIxZjU0MDhkMTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2Zvcmtm ZC9mb3JrZmRfbGludXguYworKysrIGIvcXRiYXNlL3NyYy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2Zk X2xpbnV4LmMKK0BAIC04Miw3ICs4Miw4IEBAIHN0YXRpYyBpbnQgc3lzX2Nsb25lKHVuc2lnbmVk IGxvbmcgY2xvbmVmbGFncywgaW50ICpwdGlkKQorICAgICByZXR1cm4gc3lzY2FsbChfX05SX2Ns b25lLCBjbG9uZWZsYWdzLCBjaGlsZF9zdGFjaywgc3RhY2tfc2l6ZSwgcHRpZCwgbmV3dGxzLCBj dGlkKTsKKyAjZWxpZiBkZWZpbmVkKF9fYXJjX18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVm aW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorICAgICBkZWZpbmVk KF9fbmRzMzJfXykgfHwgZGVmaW5lZChfX2hwcGFfXykgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykg fHwgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRl ZmluZWQoX194dGVuc2FfXykgfHwgZGVmaW5lZChfX2FscGhhX18pIHx8IGRlZmluZWQoX19yaXNj dikKKysgICAgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9feHRlbnNhX18pIHx8IGRl ZmluZWQoX19hbHBoYV9fKSB8fCBkZWZpbmVkKF9fcmlzY3YpIHx8IFwKKysgICAgZGVmaW5lZChf X2xvb25nYXJjaF9fKQorICAgICAvKiBjdGlkIGFuZCBuZXd0bHMgYXJlIGludmVydGVkIG9uIENP TkZJR19DTE9ORV9CQUNLV0FSRFMgYXJjaGl0ZWN0dXJlcywKKyAgICAgICogYnV0IHNpbmNlIGJv dGggdmFsdWVzIGFyZSAwLCB0aGVyZSdzIG5vIGhhcm0uICovCisgICAgIHJldHVybiBzeXNjYWxs KF9fTlJfY2xvbmUsIGNsb25lZmxhZ3MsIGNoaWxkX3N0YWNrLCBwdGlkLCBjdGlkLCBuZXd0bHMp OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9xdHByb2plY3Qv cXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YSBiL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29y Zy9xdHByb2plY3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YQoraW5kZXggNTc5MmI1YjJmNS4u MmY3NDc1MGZjZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9x dHByb2plY3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YQorKysrIGIvcXRiYXNlL3NyYy9hbmRy b2lkL2phci9zcmMvb3JnL3F0cHJvamVjdC9xdDUvYW5kcm9pZC9RdE5hdGl2ZS5qYXZhCitAQCAt MTE2LDYgKzExNiw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICBwdWJsaWMgc3RhdGlj IFF0VGhyZWFkIG1fcXRUaHJlYWQgPSBuZXcgUXRUaHJlYWQoKTsKKyAgICAgcHJpdmF0ZSBzdGF0 aWMgSGFzaE1hcDxTdHJpbmcsIFVyaT4gbV9jYWNoZWRVcmlzID0gbmV3IEhhc2hNYXA8U3RyaW5n LCBVcmk+KCk7CisgICAgIHByaXZhdGUgc3RhdGljIEFycmF5TGlzdDxTdHJpbmc+IG1fa25vd25E aXJzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisrICAgIHByaXZhdGUgc3RhdGljIGZpbmFs IFN0cmluZyBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UgPSAiTm8gcGVybWlzc2lvbnMgdG8gb3Bl biBVcmkiOworIAorICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBSdW5uYWJsZSBydW5QZW5kaW5n Q3BwUnVubmFibGVzUnVubmFibGUgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICBAT3ZlcnJp ZGUKK0BAIC0xOTMsMTEgKzE5NCwxMCBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBpdGVyVXJpOworICAgICAgICAgICAgIH0KKyAKKy0gICAgICAg ICAgICAvLyBBbmRyb2lkIDYgYW5kIGVhcmxpZXIgY291bGQgc3RpbGwgbWFuYWdlIHRvIG9wZW4g dGhlIGZpbGUgc28gd2UgY2FuIHJldHVybiB0aGUKKy0gICAgICAgICAgICAvLyBwYXJzZWQgdXJp IGhlcmUKKy0gICAgICAgICAgICBpZiAoQnVpbGQuVkVSU0lPTi5TREtfSU5UIDwgMjQpCistICAg ICAgICAgICAgICAgIHJldHVybiBwYXJzZWRVcmk7CistICAgICAgICAgICAgcmV0dXJuIG51bGw7 CisrICAgICAgICAgICAgLy8gaWYgd2Ugb25seSBoYXZlIHRyYW5zaWVudCBwZXJtaXNzaW9ucyBv biB1cmkgYWxsIHRoZSBhYm92ZSB3aWxsIGZhaWwsCisrICAgICAgICAgICAgLy8gYnV0IHdlIHdp bGwgYmUgYWJsZSB0byByZWFkIHRoZSBmaWxlIGFueXdheSwgc28gY29udGludWUgd2l0aCB1cmkg aGVyZSBhbnl3YXkKKysgICAgICAgICAgICAvLyBhbmQgY2hlY2sgZm9yIFNlY3VyaXR5RXhjZXB0 aW9ucyBsYXRlcgorKyAgICAgICAgICAgIHJldHVybiBwYXJzZWRVcmk7CisgICAgICAgICB9IGNh dGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJh Y2UoKTsKKyAgICAgICAgICAgICByZXR1cm4gbnVsbDsKK0BAIC0yNDQsNyArMjQ0LDcgQEAgcHVi bGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICBpbnQgZXJyb3IgPSAtMTsKKyAKKyAgICAgICAg IGlmICh1cmkgPT0gbnVsbCkgeworLSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAib3BlbkZkRm9y Q29udGVudFVybCgpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSIpOworKyAgICAgICAgICAg IExvZy5lKFF0VEFHLCAib3BlbkZkRm9yQ29udGVudFVybCgpOiAiICsgTm9QZXJtaXNzaW9uRXJy b3JNZXNzYWdlKTsKKyAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICB9CisgCitA QCAtMjU0LDEyICsyNTQsMTMgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICAgICAg cmV0dXJuIGZkRGVzYy5kZXRhY2hGZCgpOworICAgICAgICAgfSBjYXRjaCAoRmlsZU5vdEZvdW5k RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAg ICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4 Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJvcGVuRmRGb3JDb250ZW50 VXJsKCk6IEludmFsaWQgVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsK Ky0gICAgICAgICAgICByZXR1cm4gZXJyb3I7CisrICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4 Y2VwdGlvbiBlKSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9y TWVzc2FnZSk7CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgIH0KKyAK KyAgICAgcHVibGljIHN0YXRpYyBsb25nIGdldFNpemUoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcg Y29udGVudFVybCkKK0BAIC0yNzAsNyArMjcxLDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisg ICAgICAgICAgICAgdXJpID0gZ2V0VXJpV2l0aFZhbGlkUGVybWlzc2lvbihjb250ZXh0LCBjb250 ZW50VXJsLCAiciIpOworIAorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKSB7CistICAgICAgICAg ICAgTG9nLmUoUXRUQUcsICJnZXRTaXplKCk6IE5vIHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIik7 CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7Cisg ICAgICAgICAgICAgcmV0dXJuIHNpemU7CisgICAgICAgICB9IGVsc2UgaWYgKCFtX2NhY2hlZFVy aXMuY29udGFpbnNLZXkoY29udGVudFVybCkpIHsKKyAgICAgICAgICAgICBtX2NhY2hlZFVyaXMu cHV0KGNvbnRlbnRVcmwsIHVyaSk7CitAQCAtMjg4LDEyICsyODksMTMgQEAgcHVibGljIGNsYXNz IFF0TmF0aXZlCisgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkg eworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgpOiBJbnZhbGlkIFVyaSIpOwor ICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIHNp emU7CisgICAgICAgICB9ICBjYXRjaCAoVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24gZSkg eworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgpOiBVbnN1cHBvcnRlZCBvcGVy YXRpb24gZm9yIGdpdmVuIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7 CistICAgICAgICAgICAgcmV0dXJuIHNpemU7CisrICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4 Y2VwdGlvbiBlKSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9y TWVzc2FnZSk7CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgfQorIAor ICAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gY2hlY2tGaWxlRXhpc3RzKENvbnRleHQgY29udGV4 dCwgU3RyaW5nIGNvbnRlbnRVcmwpCitAQCAtMzAzLDcgKzMwNSw3IEBAIHB1YmxpYyBjbGFzcyBR dE5hdGl2ZQorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKQorICAgICAgICAgICAgIHVyaSA9IGdl dFVyaVdpdGhWYWxpZFBlcm1pc3Npb24oY29udGV4dCwgY29udGVudFVybCwgInIiKTsKKyAgICAg ICAgIGlmICh1cmkgPT0gbnVsbCkgeworLSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tG aWxlRXhpc3RzKCk6IE5vIHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIik7CisrICAgICAgICAgICAg TG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgcmV0 dXJuIGV4aXN0czsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgaWYgKCFtX2NhY2hl ZFVyaXMuY29udGFpbnNLZXkoY29udGVudFVybCkpCitAQCAtMzIxLDEyICszMjMsMTMgQEAgcHVi bGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNl cHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tGaWxlRXhpc3RzKCk6 IEludmFsaWQgVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAg ICAgICAgICByZXR1cm4gZXhpc3RzOworICAgICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRPcGVy YXRpb25FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tGaWxl RXhpc3RzKCk6IFVuc3VwcG9ydGVkIG9wZXJhdGlvbiBmb3IgZ2l2ZW4gVXJpIik7CisgICAgICAg ICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisr ICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisrICAgICAgICAgICAgTG9n LmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICB9CisrICAgICAg ICByZXR1cm4gZXhpc3RzOworICAgICB9CisgCisgICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBj aGVja0lmV3JpdGFibGUoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVybCkKK0BAIC0z NDQsNyArMzQ3LDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICAgICAgdXJpID0g Z2V0VXJpV2l0aFZhbGlkUGVybWlzc2lvbihjb250ZXh0LCBjb250ZW50VXJsLCAiciIpOworICAg ICAgICAgfQorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKSB7CistICAgICAgICAgICAgTG9nLmUo UXRUQUcsICJpc0RpcigpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSIpOworKyAgICAgICAg ICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgICAg IHJldHVybiBpc0RpcjsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgaWYgKCFtX2Nh Y2hlZFVyaXMuY29udGFpbnNLZXkoY29udGVudFVybCkpCitAQCAtMzc0LDEyICszNzcsMTMgQEAg cHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRF eGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tJZkRpcigpOiBJ bnZhbGlkIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRPcGVyYXRp b25FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tJZkRpcigp OiBVbnN1cHBvcnRlZCBvcGVyYXRpb24gZm9yIGdpdmVuIFVyaSIpOworICAgICAgICAgICAgIGUu cHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAg fSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAgICAgICAgIExvZy5lKFF0VEFH LCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJu IGZhbHNlOworICAgICB9CisgICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gbGlzdENvbnRlbnRz RnJvbVRyZWVVcmkoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVybCkKKyAgICAgewor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJu ZWwuaCBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaAor aW5kZXggOGY5YTkzODk1Mi4uYTk4ZGVkZWYyZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29u Y3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaAorKysrIGIvcXRiYXNlL3NyYy9jb25j dXJyZW50L3F0Y29uY3VycmVudHJlZHVjZWtlcm5lbC5oCitAQCAtMjEyLDExICsyMTIsMTMgQEAg cHVibGljOgorIAorICAgICBpbmxpbmUgYm9vbCBzaG91bGRUaHJvdHRsZSgpCisgICAgIHsKKysg ICAgICAgIHN0ZDo6bG9ja19ndWFyZDxRTXV0ZXg+IGxvY2tlcihtdXRleCk7CisgICAgICAgICBy ZXR1cm4gKHJlc3VsdHNNYXBTaXplID4gKFJlZHVjZVF1ZXVlVGhyb3R0bGVMaW1pdCAqIHRocmVh ZENvdW50KSk7CisgICAgIH0KKyAKKyAgICAgaW5saW5lIGJvb2wgc2hvdWxkU3RhcnRUaHJlYWQo KQorICAgICB7CisrICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8UU11dGV4PiBsb2NrZXIobXV0ZXgp OworICAgICAgICAgcmV0dXJuIChyZXN1bHRzTWFwU2l6ZSA8PSAoUmVkdWNlUXVldWVTdGFydExp bWl0ICogdGhyZWFkQ291bnQpKTsKKyAgICAgfQorIH07CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3JjL2Nv bmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAoraW5kZXggZWE2Y2UzYWM0Mi4u N2Y5MWEyYmE2OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJl bnR0aHJlYWRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJy ZW50dGhyZWFkZW5naW5lLmNwcAorQEAgLTE3Niw2ICsxNzYsMzkgQEAgdm9pZCBUaHJlYWRFbmdp bmVCYXNlOjpzdGFydFNpbmdsZVRocmVhZGVkKCkKKyAgICAgZmluaXNoKCk7CisgfQorIAorK3Zv aWQgVGhyZWFkRW5naW5lQmFzZTo6c3RhcnRCbG9ja2luZygpCisreworKyAgICBzdGFydCgpOwor KyAgICBiYXJyaWVyLmFjcXVpcmUoKTsKKysgICAgc3RhcnRUaHJlYWRzKCk7CisrCisrICAgIGJv b2wgdGhyb3R0bGVkID0gZmFsc2U7CisrI2lmbmRlZiBRVF9OT19FWENFUFRJT05TCisrICAgIHRy eSB7CisrI2VuZGlmCisrICAgICAgICB3aGlsZSAodGhyZWFkRnVuY3Rpb24oKSA9PSBUaHJvdHRs ZVRocmVhZCkgeworKyAgICAgICAgICAgIGlmICh0aHJlYWRUaHJvdHRsZUV4aXQoKSkgeworKyAg ICAgICAgICAgICAgICB0aHJvdHRsZWQgPSB0cnVlOworKyAgICAgICAgICAgICAgICBicmVhazsK KysgICAgICAgICAgICB9CisrICAgICAgICB9CisrI2lmbmRlZiBRVF9OT19FWENFUFRJT05TCisr ICAgIH0gY2F0Y2ggKFFFeGNlcHRpb24gJmUpIHsKKysgICAgICAgIGhhbmRsZUV4Y2VwdGlvbihl KTsKKysgICAgfSBjYXRjaCAoLi4uKSB7CisrICAgICAgICBoYW5kbGVFeGNlcHRpb24oUVVuaGFu ZGxlZEV4Y2VwdGlvbigpKTsKKysgICAgfQorKyNlbmRpZgorKworKyAgICBpZiAodGhyb3R0bGVk ID09IGZhbHNlKSB7CisrICAgICAgICBiYXJyaWVyLnJlbGVhc2UoKTsKKysgICAgfQorKworKyAg ICBiYXJyaWVyLndhaXQoKTsKKysgICAgZmluaXNoKCk7CisrICAgIGV4Y2VwdGlvblN0b3JlLnRo cm93UG9zc2libGVFeGNlcHRpb24oKTsKKyt9CisrCisgdm9pZCBUaHJlYWRFbmdpbmVCYXNlOjpz dGFydFRocmVhZCgpCisgeworICAgICBzdGFydFRocmVhZEludGVybmFsKCk7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5oIGIvcXRi YXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5oCitpbmRleCA3YzMw Y2ViZGJjLi5hNGM4NTQ4Y2M0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0 Y29uY3VycmVudHRocmVhZGVuZ2luZS5oCisrKysgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRj b25jdXJyZW50dGhyZWFkZW5naW5lLmgKK0BAIC05MSw2ICs5MSw3IEBAIHB1YmxpYzoKKyAgICAg VGhyZWFkRW5naW5lQmFzZSgpOworICAgICB2aXJ0dWFsIH5UaHJlYWRFbmdpbmVCYXNlKCk7Cisg ICAgIHZvaWQgc3RhcnRTaW5nbGVUaHJlYWRlZCgpOworKyAgICB2b2lkIHN0YXJ0QmxvY2tpbmco KTsKKyAgICAgdm9pZCBzdGFydFRocmVhZCgpOworICAgICBib29sIGlzQ2FuY2VsZWQoKTsKKyAg ICAgdm9pZCB3YWl0Rm9yUmVzdW1lKCk7CitAQCAtMTQzLDYgKzE0NCwxNSBAQCBwdWJsaWM6Cisg ICAgICAgICByZXR1cm4gcmVzdWx0KCk7CisgICAgIH0KKyAKKysgICAgLy8gUnVucyB0aGUgdXNl ciBhbGdvcml0aG0gdXNpbmcgbXVsdGlwbGUgdGhyZWFkcy4KKysgICAgLy8gVGhpcyBmdW5jdGlv biBibG9ja3MgdW50aWwgdGhlIGFsZ29yaXRobSBpcyBmaW5pc2hlZCwKKysgICAgLy8gYW5kIHRo ZW4gcmV0dXJucyB0aGUgcmVzdWx0LgorKyAgICBUICpzdGFydEJsb2NraW5nKCkKKysgICAgewor KyAgICAgICAgVGhyZWFkRW5naW5lQmFzZTo6c3RhcnRCbG9ja2luZygpOworKyAgICAgICAgcmV0 dXJuIHJlc3VsdCgpOworKyAgICB9CisrCisgICAgIC8vIFJ1bnMgdGhlIHVzZXIgYWxnb3JpdGht IHVzaW5nIG11bHRpcGxlIHRocmVhZHMuCisgICAgIC8vIERvZXMgbm90IGJsb2NrLCByZXR1cm5z IGEgZnV0dXJlLgorICAgICBRRnV0dXJlPFQ+IHN0YXJ0QXN5bmNocm9ub3VzbHkoKQorQEAgLTIy Myw2ICsyMzMsMTMgQEAgY2xhc3MgVGhyZWFkRW5naW5lU3RhcnRlciA6IHB1YmxpYyBUaHJlYWRF bmdpbmVTdGFydGVyQmFzZTxUPgorIHB1YmxpYzoKKyAgICAgVGhyZWFkRW5naW5lU3RhcnRlcihU eXBlZFRocmVhZEVuZ2luZSAqZW5nKQorICAgICAgICAgOiBCYXNlKGVuZykgeyB9CisrCisrICAg IFQgc3RhcnRCbG9ja2luZygpCisrICAgIHsKKysgICAgICAgIFQgdCA9ICp0aGlzLT50aHJlYWRF bmdpbmUtPnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGRlbGV0ZSB0aGlzLT50aHJlYWRFbmdp bmU7CisrICAgICAgICByZXR1cm4gdDsKKysgICAgfQorIH07CisgCisgLy8gRnVsbCB0ZW1wbGF0 ZSBzcGVjaWFsaXphdGlvbiB3aGVyZSBUIGlzIHZvaWQuCitAQCAtMjMyLDYgKzI0OSwxMiBAQCBj bGFzcyBUaHJlYWRFbmdpbmVTdGFydGVyPHZvaWQ+IDogcHVibGljIFRocmVhZEVuZ2luZVN0YXJ0 ZXJCYXNlPHZvaWQ+CisgcHVibGljOgorICAgICBUaHJlYWRFbmdpbmVTdGFydGVyKFRocmVhZEVu Z2luZTx2b2lkPiAqX3RocmVhZEVuZ2luZSkKKyAgICAgICAgIDogVGhyZWFkRW5naW5lU3RhcnRl ckJhc2U8dm9pZD4oX3RocmVhZEVuZ2luZSkge30KKysKKysgICAgdm9pZCBzdGFydEJsb2NraW5n KCkKKysgICAgeworKyAgICAgICAgdGhpcy0+dGhyZWFkRW5naW5lLT5zdGFydEJsb2NraW5nKCk7 CisrICAgICAgICBkZWxldGUgdGhpcy0+dGhyZWFkRW5naW5lOworKyAgICB9CisgfTsKKyAKKyAv LyEgW3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS0xXQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Y29yZWxpYi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwIGIvcXRiYXNlL3NyYy9jb3Jl bGliL2FuaW1hdGlvbi9xdmFyaWFudGFuaW1hdGlvbi5jcHAKK2luZGV4IDk4YjAyZjAyMDIuLmVh YzE1MjQxMDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2YXJp YW50YW5pbWF0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2FuaW1hdGlvbi9xdmFy aWFudGFuaW1hdGlvbi5jcHAKK0BAIC0yNzYsNyArMjc2LDkgQEAgdm9pZCBRVmFyaWFudEFuaW1h dGlvblByaXZhdGU6OnNldEN1cnJlbnRWYWx1ZUZvclByb2dyZXNzKGNvbnN0IHFyZWFsIHByb2dy ZXNzKQorIAorICAgICBjb25zdCBxcmVhbCBzdGFydFByb2dyZXNzID0gY3VycmVudEludGVydmFs LnN0YXJ0LmZpcnN0OworICAgICBjb25zdCBxcmVhbCBlbmRQcm9ncmVzcyA9IGN1cnJlbnRJbnRl cnZhbC5lbmQuZmlyc3Q7CistICAgIGNvbnN0IHFyZWFsIGxvY2FsUHJvZ3Jlc3MgPSAocHJvZ3Jl c3MgLSBzdGFydFByb2dyZXNzKSAvIChlbmRQcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpOworKyAg ICBjb25zdCBxcmVhbCBsb2NhbFByb2dyZXNzID0KKysgICAgICAgICAgICBxSXNOdWxsKHByb2dy ZXNzIC0gc3RhcnRQcm9ncmVzcykgPyAwLjAgLy8gYXZvaWQgMC8wIGJlbG93CisrICAgICAgICAg ICAgLyogZWxzZSAqLyAgICAgICAgICAgICAgICAgICAgICAgIDogKHByb2dyZXNzIC0gc3RhcnRQ cm9ncmVzcykgLyAoZW5kUHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNzKTsKKyAKKyAgICAgUVZhcmlh bnQgcmV0ID0gcS0+aW50ZXJwb2xhdGVkKGN1cnJlbnRJbnRlcnZhbC5zdGFydC5zZWNvbmQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50SW50ZXJ2YWwuZW5kLnNl Y29uZCwKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FuYW1lc3BhY2Uu aCBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5oCitpbmRleCBhZDQxNTBi MzE3Li5iZjE5YjE2MjdiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9x bmFtZXNwYWNlLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5o CitAQCAtMTg2NCw3ICsxODY0LDcgQEAgcHVibGljOgorICAgICBRVF9RX0VOVU0oVGltZXJUeXBl KQorICAgICBRVF9RX0VOVU0oU2Nyb2xsUGhhc2UpCisgICAgIFFUX1FfRU5VTShNb3VzZUV2ZW50 U291cmNlKQorLSAgICBRVF9RX0ZMQUcoTW91c2VFdmVudEZsYWcpCisrICAgIFFUX1FfRkxBRyhN b3VzZUV2ZW50RmxhZ3MpCisgICAgIFFUX1FfRU5VTShDaGVja3N1bVR5cGUpCisgICAgIFFUX1Ff RU5VTShIaWdoRHBpU2NhbGVGYWN0b3JSb3VuZGluZ1BvbGljeSkKKyAgICAgUVRfUV9FTlVNKFRh YkZvY3VzQmVoYXZpb3IpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9x cmFuZG9tLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAKK2luZGV4 IDEwNjcyYzFmOTIuLjI1Zjg3YzdlNmEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIv Z2xvYmFsL3FyYW5kb20uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FyYW5k b20uY3BwCitAQCAtMzgzLDcgKzM4Myw2IEBAIHN0cnVjdCBRUmFuZG9tR2VuZXJhdG9yOjpTeXN0 ZW1BbmRHbG9iYWxHZW5lcmF0b3JzCisgCisgICAgICAgICBjb25zdGV4cHIgU3lzdGVtQW5kR2xv YmFsR2VuZXJhdG9ycyBnID0ge307CisgICAgICAgICBRX1VOVVNFRChnKTsKKy0gICAgICAgIFFf U1RBVElDX0FTU0VSVChzdGQ6OmlzX2xpdGVyYWxfdHlwZTxTeXN0ZW1BbmRHbG9iYWxHZW5lcmF0 b3JzPjo6dmFsdWUpOworICNlbmRpZgorICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9jb3JlbGliL2lvL3FidWZmZXIuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FidWZmZXIu Y3BwCitpbmRleCA1OTVmY2QyNzI0Li4wMzJjMGRkZDRiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9jb3JlbGliL2lvL3FidWZmZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWJ1 ZmZlci5jcHAKK0BAIC00MSw2ICs0MSw4IEBACisgI2luY2x1ZGUgPFF0Q29yZS9xbWV0YW9iamVj dC5oPgorICNpbmNsdWRlICJwcml2YXRlL3Fpb2RldmljZV9wLmgiCisgCisrI2luY2x1ZGUgPGxp bWl0cz4KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyAvKiogUUJ1ZmZlclByaXZhdGUgKiov CitAQCAtMzY2LDcgKzM2OCw5IEBAIHFpbnQ2NCBRQnVmZmVyOjpzaXplKCkgY29uc3QKKyBib29s IFFCdWZmZXI6OnNlZWsocWludDY0IHBvcykKKyB7CisgICAgIFFfRChRQnVmZmVyKTsKKy0gICAg aWYgKHBvcyA+IGQtPmJ1Zi0+c2l6ZSgpICYmIGlzV3JpdGFibGUoKSkgeworKyAgICBjb25zdCBh dXRvIG9sZEJ1ZlNpemUgPSBkLT5idWYtPnNpemUoKTsKKysgICAgY29uc3RleHByIHFpbnQ2NCBN YXhTZWVrUG9zID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8ZGVjbHR5cGUob2xkQnVmU2l6ZSk+Ojpt YXgpKCk7CisrICAgIGlmIChwb3MgPD0gTWF4U2Vla1BvcyAmJiBwb3MgPiBvbGRCdWZTaXplICYm IGlzV3JpdGFibGUoKSkgeworICAgICAgICAgaWYgKHNlZWsoZC0+YnVmLT5zaXplKCkpKSB7Cisg ICAgICAgICAgICAgY29uc3QgcWludDY0IGdhcFNpemUgPSBwb3MgLSBkLT5idWYtPnNpemUoKTsK KyAgICAgICAgICAgICBpZiAod3JpdGUoUUJ5dGVBcnJheShnYXBTaXplLCAwKSkgIT0gZ2FwU2l6 ZSkgeworQEAgLTM3Nyw3ICszODEsNyBAQCBib29sIFFCdWZmZXI6OnNlZWsocWludDY0IHBvcykK KyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICB9CisgICAgIH0gZWxzZSBpZiAo cG9zID4gZC0+YnVmLT5zaXplKCkgfHwgcG9zIDwgMCkgeworLSAgICAgICAgcVdhcm5pbmcoIlFC dWZmZXI6OnNlZWs6IEludmFsaWQgcG9zOiAlZCIsIGludChwb3MpKTsKKysgICAgICAgIHFXYXJu aW5nKCJRQnVmZmVyOjpzZWVrOiBJbnZhbGlkIHBvczogJWxsZCIsIHBvcyk7CisgICAgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgIH0KKyAgICAgcmV0dXJuIFFJT0RldmljZTo6c2Vlayhwb3MpOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVuZ2luZV93aW4u Y3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAKK2lu ZGV4IDgxZDNhNzE5ODYuLmM4NmVkMWY5YjAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVs aWIvaW8vcWZpbGVzeXN0ZW1lbmdpbmVfd2luLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGli L2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAKK0BAIC02NjQsMTQgKzY2NCwxNCBAQCBRRmls ZVN5c3RlbUVudHJ5IFFGaWxlU3lzdGVtRW5naW5lOjphYnNvbHV0ZU5hbWUoY29uc3QgUUZpbGVT eXN0ZW1FbnRyeSAmZW50cnkpCisgICAgIHJldHVybiBRRmlsZVN5c3RlbUVudHJ5KHJldCwgUUZp bGVTeXN0ZW1FbnRyeTo6RnJvbUludGVybmFsUGF0aCgpKTsKKyB9CisgCistI2lmIGRlZmluZWQo UV9DQ19NSU5HVykgJiYgV0lOVkVSIDwgMHgwNjAyIC8vICBXaW5kb3dzIDggb253YXJkcworKyNp ZiBkZWZpbmVkKFFfQ0NfTUlOR1cpICYmIFdJTlZFUiA8IDB4MDYwMiAmJiBfV0lOMzJfV0lOTlQg PCBfV0lOMzJfV0lOTlRfV0lOOCAvLyAgV2luZG93cyA4IG9ud2FyZHMKKyAKKyB0eXBlZGVmIHN0 cnVjdCBfRklMRV9JRF9JTkZPIHsKKyAgICAgVUxPTkdMT05HIFZvbHVtZVNlcmlhbE51bWJlcjsK KyAgICAgRklMRV9JRF8xMjggRmlsZUlkOworIH0gRklMRV9JRF9JTkZPLCAqUEZJTEVfSURfSU5G TzsKKyAKKy0jZW5kaWYgLy8gaWYgZGVmaW5lZCAoUV9DQ19NSU5HVykgJiYgV0lOVkVSIDwgMHgw NjAyCisrI2VuZGlmIC8vIGlmIGRlZmluZWQoUV9DQ19NSU5HVykgJiYgV0lOVkVSIDwgMHgwNjAy ICYmIF9XSU4zMl9XSU5OVCA8IF9XSU4zMl9XSU5OVF9XSU44CisgCisgLy8gRmlsZSBJRCBmb3Ig V2luZG93cyB1cCB0byB2ZXJzaW9uIDcgYW5kIEZBVDMyIGRyaXZlcworIHN0YXRpYyBpbmxpbmUg UUJ5dGVBcnJheSBmaWxlSWQoSEFORExFIGhhbmRsZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnkuY3BwIGIvcXRiYXNlL3NyYy9j b3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90aWZ5LmNwcAoraW5kZXggOTRkOWQwNmJj Yi4uMjdlMGIxM2IwYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5 c3RlbXdhdGNoZXJfaW5vdGlmeS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmls ZXN5c3RlbXdhdGNoZXJfaW5vdGlmeS5jcHAKK0BAIC0zNjYsNyArMzY2LDkgQEAgdm9pZCBRSW5v dGlmeUZpbGVTeXN0ZW1XYXRjaGVyRW5naW5lOjpyZWFkRnJvbUlub3RpZnkoKQorICAgICAvLyBx RGVidWcoIlFJbm90aWZ5RmlsZVN5c3RlbVdhdGNoZXJFbmdpbmU6OnJlYWRGcm9tSW5vdGlmeSIp OworIAorICAgICBpbnQgYnVmZlNpemUgPSAwOworLSAgICBpb2N0bChpbm90aWZ5RmQsIEZJT05S RUFELCAoY2hhciAqKSAmYnVmZlNpemUpOworKyAgICBpZiAoaW9jdGwoaW5vdGlmeUZkLCBGSU9O UkVBRCwgKGNoYXIgKikgJmJ1ZmZTaXplKSA9PSAtMSB8fCBidWZmU2l6ZSA9PSAwKQorKyAgICAg ICAgcmV0dXJuOworKworICAgICBRVmFyTGVuZ3RoQXJyYXk8Y2hhciwgNDA5Nj4gYnVmZmVyKGJ1 ZmZTaXplKTsKKyAgICAgYnVmZlNpemUgPSByZWFkKGlub3RpZnlGZCwgYnVmZmVyLmRhdGEoKSwg YnVmZlNpemUpOworICAgICBjaGFyICphdCA9IGJ1ZmZlci5kYXRhKCk7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4uY3BwIGIvcXRiYXNlL3NyYy9jb3Jl bGliL2lvL3Fsb2NrZmlsZV93aW4uY3BwCitpbmRleCAyNzdmOGQ0MjMwLi4zOGVjZWY1NTUwIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4uY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWxvY2tmaWxlX3dpbi5jcHAKK0BAIC00OCw2ICs0OCw4 IEBACisgI2luY2x1ZGUgIlF0Q29yZS9xZGVidWcuaCIKKyAjaW5jbHVkZSAiUXRDb3JlL3F0aHJl YWQuaCIKKyAKKysjaW5jbHVkZSAicHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmgiCisrCisgUVRf QkVHSU5fTkFNRVNQQUNFCisgCisgc3RhdGljIGlubGluZSBib29sIGZpbGVFeGlzdHMoY29uc3Qg d2NoYXJfdCAqZmlsZU5hbWUpCitAQCAtMTUwLDcgKzE1Miw3IEBAIFFTdHJpbmcgUUxvY2tGaWxl UHJpdmF0ZTo6cHJvY2Vzc05hbWVCeVBpZChxaW50NjQgcGlkKQorICNpZiAhZGVmaW5lZChRX09T X1dJTlJUKQorICAgICB0eXBlZGVmIERXT1JEIChXSU5BUEkgKkdldE1vZHVsZUZpbGVOYW1lRXhG dW5jKShIQU5ETEUsIEhNT0RVTEUsIExQVFNUUiwgRFdPUkQpOworIAorLSAgICBITU9EVUxFIGhQ c2FwaSA9IExvYWRMaWJyYXJ5QSgicHNhcGkiKTsKKysgICAgSE1PRFVMRSBoUHNhcGkgPSBRU3lz dGVtTGlicmFyeTo6bG9hZChMInBzYXBpIik7CisgICAgIGlmICghaFBzYXBpKQorICAgICAgICAg cmV0dXJuIFFTdHJpbmcoKTsKKyAgICAgR2V0TW9kdWxlRmlsZU5hbWVFeEZ1bmMgcUdldE1vZHVs ZUZpbGVOYW1lRXggPSByZWludGVycHJldF9jYXN0PEdldE1vZHVsZUZpbGVOYW1lRXhGdW5jPigK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5peC5jcHAgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5peC5jcHAKK2luZGV4IDUwMzkwZTU3ZjUu LjE1YzhmMzA3NDUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3Nf dW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xcHJvY2Vzc191bml4LmNwcAor QEAgLTEsNyArMSw3IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorICoqIENvcHlyaWdo dCAoQykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCistKiogQ29weXJpZ2h0IChDKSAyMDE2IElu dGVsIENvcnBvcmF0aW9uLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBJbnRlbCBDb3Jwb3JhdGlv bi4KKyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRDb3JlIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4K K0BAIC00MjIsMTQgKzQyMiwxNSBAQCB2b2lkIFFQcm9jZXNzUHJpdmF0ZTo6c3RhcnRQcm9jZXNz KCkKKyAgICAgLy8gQWRkIHRoZSBwcm9ncmFtIG5hbWUgdG8gdGhlIGFyZ3VtZW50IGxpc3QuCisg ICAgIGFyZ3ZbMF0gPSBudWxscHRyOworICAgICBpZiAoIXByb2dyYW0uY29udGFpbnMoUUxhdGlu MUNoYXIoJy8nKSkpIHsKKysgICAgICAgIC8vIGZpbmRFeGVjdXRhYmxlKCkgcmV0dXJucyBpdHMg YXJndW1lbnQgaWYgaXQncyBhbiBhYnNvbHV0ZSBwYXRoLAorKyAgICAgICAgLy8gb3RoZXJ3aXNl IGl0IHNlYXJjaGVzICRQQVRIOyByZXR1cm5zIGVtcHR5IGlmIG5vdCBmb3VuZCAod2UgaGFuZGxl CisrICAgICAgICAvLyB0aGF0IGNhc2UgbXVjaCBsYXRlcikKKyAgICAgICAgIGNvbnN0IFFTdHJp bmcgJmV4ZUZpbGVQYXRoID0gUVN0YW5kYXJkUGF0aHM6OmZpbmRFeGVjdXRhYmxlKHByb2dyYW0p OworLSAgICAgICAgaWYgKCFleGVGaWxlUGF0aC5pc0VtcHR5KCkpIHsKKy0gICAgICAgICAgICBj b25zdCBRQnl0ZUFycmF5ICZ0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShleGVGaWxlUGF0aCk7Cist ICAgICAgICAgICAgYXJndlswXSA9IDo6c3RyZHVwKHRtcC5jb25zdERhdGEoKSk7CistICAgICAg ICB9CistICAgIH0KKy0gICAgaWYgKCFhcmd2WzBdKQorKyAgICAgICAgY29uc3QgUUJ5dGVBcnJh eSAmdG1wID0gUUZpbGU6OmVuY29kZU5hbWUoZXhlRmlsZVBhdGgpOworKyAgICAgICAgYXJndlsw XSA9IDo6c3RyZHVwKHRtcC5jb25zdERhdGEoKSk7CisrICAgIH0gZWxzZSB7CisgICAgICAgICBh cmd2WzBdID0gOjpzdHJkdXAoZW5jb2RlZFByb2dyYW1OYW1lLmNvbnN0RGF0YSgpKTsKKysgICAg fQorIAorICAgICAvLyBBZGQgZXZlcnkgYXJndW1lbnQgdG8gdGhlIGxpc3QKKyAgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBhcmd1bWVudHMuY291bnQoKTsgKytpKQorQEAgLTk4MywxNSArOTg0LDE2 IEBAIGJvb2wgUVByb2Nlc3NQcml2YXRlOjpzdGFydERldGFjaGVkKHFpbnQ2NCAqcGlkKQorICAg ICAgICAgICAgICAgICBlbnZwID0gX3FfZHVwRW52aXJvbm1lbnQoZW52aXJvbm1lbnQuZC5jb25z dERhdGEoKS0+dmFycywgJmVudmMpOworICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICBR Qnl0ZUFycmF5IHRtcDsKKyAgICAgICAgICAgICBpZiAoIXByb2dyYW0uY29udGFpbnMoUUxhdGlu MUNoYXIoJy8nKSkpIHsKKysgICAgICAgICAgICAgICAgLy8gZmluZEV4ZWN1dGFibGUoKSByZXR1 cm5zIGl0cyBhcmd1bWVudCBpZiBpdCdzIGFuIGFic29sdXRlIHBhdGgsCisrICAgICAgICAgICAg ICAgIC8vIG90aGVyd2lzZSBpdCBzZWFyY2hlcyAkUEFUSDsgcmV0dXJucyBlbXB0eSBpZiBub3Qg Zm91bmQgKHdlIGhhbmRsZQorKyAgICAgICAgICAgICAgICAvLyB0aGF0IGNhc2UgbXVjaCBsYXRl cikKKyAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmZXhlRmlsZVBhdGggPSBRU3RhbmRh cmRQYXRoczo6ZmluZEV4ZWN1dGFibGUocHJvZ3JhbSk7CistICAgICAgICAgICAgICAgIGlmICgh ZXhlRmlsZVBhdGguaXNFbXB0eSgpKQorLSAgICAgICAgICAgICAgICAgICAgdG1wID0gUUZpbGU6 OmVuY29kZU5hbWUoZXhlRmlsZVBhdGgpOworKyAgICAgICAgICAgICAgICBjb25zdCBRQnl0ZUFy cmF5ICZ0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShleGVGaWxlUGF0aCk7CisrICAgICAgICAgICAg ICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cCh0bXAuY29uc3REYXRhKCkpOworKyAgICAgICAgICAgIH0g ZWxzZSB7CisrICAgICAgICAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cChRRmlsZTo6ZW5jb2Rl TmFtZShwcm9ncmFtKSk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGlmICh0bXAuaXNF bXB0eSgpKQorLSAgICAgICAgICAgICAgICB0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShwcm9ncmFt KTsKKy0gICAgICAgICAgICBhcmd2WzBdID0gdG1wLmRhdGEoKTsKKyAKKyAgICAgICAgICAgICBp ZiAoZW52cCkKKyAgICAgICAgICAgICAgICAgcXRfc2FmZV9leGVjdmUoYXJndlswXSwgYXJndiwg ZW52cCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFic3Ry YWN0aXRlbW1vZGVsLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3FhYnN0cmFj dGl0ZW1tb2RlbC5jcHAKK2luZGV4IDNhNzljNTAyYWYuLjk5N2E2MzRlNzYgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJhY3RpdGVtbW9kZWwuY3BwCisr KysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJhY3RpdGVtbW9kZWwuY3Bw CitAQCAtMzE5Niw5ICszMTk2LDggQEAgYm9vbCBRQWJzdHJhY3RJdGVtTW9kZWw6OmJlZ2luTW92 ZUNvbHVtbnMoY29uc3QgUU1vZGVsSW5kZXggJnNvdXJjZVBhcmVudCwgaW50IHMKKyAgICAgZGVz dGluYXRpb25DaGFuZ2UubmVlZHNBZGp1c3QgPSBkZXN0aW5hdGlvblBhcmVudC5pc1ZhbGlkKCkg JiYgZGVzdGluYXRpb25QYXJlbnQucm93KCkgPj0gc291cmNlTGFzdCAmJiBkZXN0aW5hdGlvblBh cmVudC5wYXJlbnQoKSA9PSBzb3VyY2VQYXJlbnQ7CisgICAgIGQtPmNoYW5nZXMucHVzaChkZXN0 aW5hdGlvbkNoYW5nZSk7CisgCistICAgIGQtPml0ZW1zQWJvdXRUb0JlTW92ZWQoc291cmNlUGFy ZW50LCBzb3VyY2VGaXJzdCwgc291cmNlTGFzdCwgZGVzdGluYXRpb25QYXJlbnQsIGRlc3RpbmF0 aW9uQ2hpbGQsIFF0OjpIb3Jpem9udGFsKTsKKy0KKyAgICAgZW1pdCBjb2x1bW5zQWJvdXRUb0Jl TW92ZWQoc291cmNlUGFyZW50LCBzb3VyY2VGaXJzdCwgc291cmNlTGFzdCwgZGVzdGluYXRpb25Q YXJlbnQsIGRlc3RpbmF0aW9uQ2hpbGQsIFFQcml2YXRlU2lnbmFsKCkpOworKyAgICBkLT5pdGVt c0Fib3V0VG9CZU1vdmVkKHNvdXJjZVBhcmVudCwgc291cmNlRmlyc3QsIHNvdXJjZUxhc3QsIGRl c3RpbmF0aW9uUGFyZW50LCBkZXN0aW5hdGlvbkNoaWxkLCBRdDo6SG9yaXpvbnRhbCk7CisgICAg IHJldHVybiB0cnVlOworIH0KKyAKK0BAIC0zMjMxLDcgKzMyMzAsNiBAQCB2b2lkIFFBYnN0cmFj dEl0ZW1Nb2RlbDo6ZW5kTW92ZUNvbHVtbnMoKQorICAgICAgIGFkanVzdGVkU291cmNlID0gY3Jl YXRlSW5kZXgoYWRqdXN0ZWRTb3VyY2Uucm93KCksIGFkanVzdGVkU291cmNlLmNvbHVtbigpICsg bnVtTW92ZWQsIGFkanVzdGVkU291cmNlLmludGVybmFsUG9pbnRlcigpKTsKKyAKKyAgICAgZC0+ aXRlbXNNb3ZlZChhZGp1c3RlZFNvdXJjZSwgcmVtb3ZlQ2hhbmdlLmZpcnN0LCByZW1vdmVDaGFu Z2UubGFzdCwgYWRqdXN0ZWREZXN0aW5hdGlvbiwgaW5zZXJ0Q2hhbmdlLmZpcnN0LCBRdDo6SG9y aXpvbnRhbCk7CistCisgICAgIGVtaXQgY29sdW1uc01vdmVkKGFkanVzdGVkU291cmNlLCByZW1v dmVDaGFuZ2UuZmlyc3QsIHJlbW92ZUNoYW5nZS5sYXN0LCBhZGp1c3RlZERlc3RpbmF0aW9uLCBp bnNlcnRDaGFuZ2UuZmlyc3QsIFFQcml2YXRlU2lnbmFsKCkpOworIH0KKyAKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnByb3h5bW9kZWwuY3Bw IGIvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcXNvcnRmaWx0ZXJwcm94eW1vZGVsLmNw cAoraW5kZXggZGM2Mzc5ZDlmYi4uYzVlMjg3ZWU4NCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Y29yZWxpYi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5jcHAKK0BAIC05 MzksOCArOTM5LDkgQEAgdm9pZCBRU29ydEZpbHRlclByb3h5TW9kZWxQcml2YXRlOjppbnNlcnRf c291cmNlX2l0ZW1zKAorICAgICAgICAgICAgICAgICBxLT5iZWdpbkluc2VydENvbHVtbnMocHJv eHlfcGFyZW50LCBwcm94eV9zdGFydCwgcHJveHlfZW5kKTsKKyAgICAgICAgIH0KKyAKKy0gICAg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc291cmNlX2l0ZW1zLnNpemUoKTsgKytpKQorLSAgICAg ICAgICAgIHByb3h5X3RvX3NvdXJjZS5pbnNlcnQocHJveHlfc3RhcnQgKyBpLCBzb3VyY2VfaXRl bXMuYXQoaSkpOworKyAgICAgICAgLy8gVE9ETzogdXNlIHRoZSByYW5nZSBRTGlzdDo6aW5zZXJ0 KCkgb3ZlcmxvYWQgb25jZSBpdCBpcyBpbXBsZW1lbnRlZCAoUVRCVUctNTg2MzMpLgorKyAgICAg ICAgcHJveHlfdG9fc291cmNlLmluc2VydChwcm94eV9zdGFydCwgc291cmNlX2l0ZW1zLnNpemUo KSwgMCk7CisrICAgICAgICBzdGQ6OmNvcHkoc291cmNlX2l0ZW1zLmNiZWdpbigpLCBzb3VyY2Vf aXRlbXMuY2VuZCgpLCBwcm94eV90b19zb3VyY2UuYmVnaW4oKSArIHByb3h5X3N0YXJ0KTsKKyAK KyAgICAgICAgIGJ1aWxkX3NvdXJjZV90b19wcm94eV9tYXBwaW5nKHByb3h5X3RvX3NvdXJjZSwg c291cmNlX3RvX3Byb3h5KTsKKyAKK0BAIC0zMTIzLDggKzMxMjQsOSBAQCBib29sIFFTb3J0Rmls dGVyUHJveHlNb2RlbDo6ZmlsdGVyQWNjZXB0c1JvdyhpbnQgc291cmNlX3JvdywgY29uc3QgUU1v ZGVsSW5kZXggJgorIAorICAgICBpZiAoZC0+ZmlsdGVyX2RhdGEuaXNFbXB0eSgpKQorICAgICAg ICAgcmV0dXJuIHRydWU7CisrCisrICAgIGludCBjb2x1bW5fY291bnQgPSBkLT5tb2RlbC0+Y29s dW1uQ291bnQoc291cmNlX3BhcmVudCk7CisgICAgIGlmIChkLT5maWx0ZXJfY29sdW1uID09IC0x KSB7CistICAgICAgICBpbnQgY29sdW1uX2NvdW50ID0gZC0+bW9kZWwtPmNvbHVtbkNvdW50KHNv dXJjZV9wYXJlbnQpOworICAgICAgICAgZm9yIChpbnQgY29sdW1uID0gMDsgY29sdW1uIDwgY29s dW1uX2NvdW50OyArK2NvbHVtbikgeworICAgICAgICAgICAgIFFNb2RlbEluZGV4IHNvdXJjZV9p bmRleCA9IGQtPm1vZGVsLT5pbmRleChzb3VyY2Vfcm93LCBjb2x1bW4sIHNvdXJjZV9wYXJlbnQp OworICAgICAgICAgICAgIFFTdHJpbmcga2V5ID0gZC0+bW9kZWwtPmRhdGEoc291cmNlX2luZGV4 LCBkLT5maWx0ZXJfcm9sZSkudG9TdHJpbmcoKTsKK0BAIC0zMTMzLDkgKzMxMzUsMTAgQEAgYm9v bCBRU29ydEZpbHRlclByb3h5TW9kZWw6OmZpbHRlckFjY2VwdHNSb3coaW50IHNvdXJjZV9yb3cs IGNvbnN0IFFNb2RlbEluZGV4ICYKKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVybiBmYWxzZTsK KyAgICAgfQorLSAgICBRTW9kZWxJbmRleCBzb3VyY2VfaW5kZXggPSBkLT5tb2RlbC0+aW5kZXgo c291cmNlX3JvdywgZC0+ZmlsdGVyX2NvbHVtbiwgc291cmNlX3BhcmVudCk7CistICAgIGlmICgh c291cmNlX2luZGV4LmlzVmFsaWQoKSkgLy8gdGhlIGNvbHVtbiBtYXkgbm90IGV4aXN0CisrCisr ICAgIGlmIChkLT5maWx0ZXJfY29sdW1uID49IGNvbHVtbl9jb3VudCkgLy8gdGhlIGNvbHVtbiBt YXkgbm90IGV4aXN0CisgICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgUU1vZGVsSW5kZXggc291 cmNlX2luZGV4ID0gZC0+bW9kZWwtPmluZGV4KHNvdXJjZV9yb3csIGQtPmZpbHRlcl9jb2x1bW4s IHNvdXJjZV9wYXJlbnQpOworICAgICBRU3RyaW5nIGtleSA9IGQtPm1vZGVsLT5kYXRhKHNvdXJj ZV9pbmRleCwgZC0+ZmlsdGVyX3JvbGUpLnRvU3RyaW5nKCk7CisgICAgIHJldHVybiBkLT5maWx0 ZXJfZGF0YS5oYXNNYXRjaChrZXkpOworIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVs aWIva2VybmVsL3Fjb3JlYXBwbGljYXRpb24uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5l bC9xY29yZWFwcGxpY2F0aW9uLmNwcAoraW5kZXggY2EyODY0ZGY4My4uMTMyYjJlYWU1MiAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHAK KysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHAKK0BA IC0xMTU3LDcgKzExNTcsNyBAQCBzdGF0aWMgYm9vbCBkb05vdGlmeShRT2JqZWN0ICpyZWNlaXZl ciwgUUV2ZW50ICpldmVudCkKKyBib29sIFFDb3JlQXBwbGljYXRpb25Qcml2YXRlOjpzZW5kVGhy b3VnaEFwcGxpY2F0aW9uRXZlbnRGaWx0ZXJzKFFPYmplY3QgKnJlY2VpdmVyLCBRRXZlbnQgKmV2 ZW50KQorIHsKKyAgICAgLy8gV2UgY2FuJ3QgYWNjZXNzIHRoZSBhcHBsaWNhdGlvbiBldmVudCBm aWx0ZXJzIG91dHNpZGUgb2YgdGhlIG1haW4gdGhyZWFkIChyYWNlIGNvbmRpdGlvbnMpCistICAg IFFfQVNTRVJUKHJlY2VpdmVyLT5kX2Z1bmMoKS0+dGhyZWFkRGF0YS5sb2FkUmVsYXhlZCgpLT50 aHJlYWQubG9hZEFjcXVpcmUoKSA9PSBtYWluVGhyZWFkKCkpOworKyAgICBRX0FTU0VSVChyZWNl aXZlci0+ZF9mdW5jKCktPnRocmVhZERhdGEubG9hZEFjcXVpcmUoKS0+dGhyZWFkLmxvYWRSZWxh eGVkKCkgPT0gbWFpblRocmVhZCgpKTsKKyAKKyAgICAgaWYgKGV4dHJhRGF0YSkgeworICAgICAg ICAgLy8gYXBwbGljYXRpb24gZXZlbnQgZmlsdGVycyBhcmUgb25seSBjYWxsZWQgZm9yIG9iamVj dHMgaW4gdGhlIEdVSSB0aHJlYWQKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2Vy bmVsL3FvYmplY3QuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0LmNwcAor aW5kZXggMWViNzkxMzhkOS4uMzZjZDc4MGVlMSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29y ZWxpYi9rZXJuZWwvcW9iamVjdC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwv cW9iamVjdC5jcHAKK0BAIC0xMDEwLDcgKzEwMTAsNyBAQCBRT2JqZWN0Ojp+UU9iamVjdCgpCisg ICAgICAgICBlbWl0IGRlc3Ryb3llZCh0aGlzKTsKKyAgICAgfQorIAorLSAgICBpZiAoZC0+ZGVj bGFyYXRpdmVEYXRhKSB7CisrICAgIGlmICghZC0+aXNEZWxldGluZ0NoaWxkcmVuICYmIGQtPmRl Y2xhcmF0aXZlRGF0YSkgeworICAgICAgICAgaWYgKHN0YXRpY19jYXN0PFFBYnN0cmFjdERlY2xh cmF0aXZlRGF0YUltcGwqPihkLT5kZWNsYXJhdGl2ZURhdGEpLT5vd25lZEJ5UW1sMSkgeworICAg ICAgICAgICAgIGlmIChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmRlc3Ryb3llZF9xbWwxKQor ICAgICAgICAgICAgICAgICBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmRlc3Ryb3llZF9xbWwx KGQtPmRlY2xhcmF0aXZlRGF0YSwgdGhpcyk7CitAQCAtMTU4MCw3ICsxNTgwLDcgQEAgdm9pZCBR T2JqZWN0Ojptb3ZlVG9UaHJlYWQoUVRocmVhZCAqdGFyZ2V0VGhyZWFkKQorIAorICAgICBRVGhy ZWFkRGF0YSAqY3VycmVudERhdGEgPSBRVGhyZWFkRGF0YTo6Y3VycmVudCgpOworICAgICBRVGhy ZWFkRGF0YSAqdGFyZ2V0RGF0YSA9IHRhcmdldFRocmVhZCA/IFFUaHJlYWREYXRhOjpnZXQyKHRh cmdldFRocmVhZCkgOiBudWxscHRyOworLSAgICBRVGhyZWFkRGF0YSAqdGhpc1RocmVhZERhdGEg PSBkLT50aHJlYWREYXRhLmxvYWRSZWxheGVkKCk7CisrICAgIFFUaHJlYWREYXRhICp0aGlzVGhy ZWFkRGF0YSA9IGQtPnRocmVhZERhdGEubG9hZEFjcXVpcmUoKTsKKyAgICAgaWYgKCF0aGlzVGhy ZWFkRGF0YS0+dGhyZWFkLmxvYWRBY3F1aXJlKCkgJiYgY3VycmVudERhdGEgPT0gdGFyZ2V0RGF0 YSkgeworICAgICAgICAgLy8gb25lIGV4Y2VwdGlvbiB0byB0aGUgcnVsZTogd2UgYWxsb3cgbW92 aW5nIG9iamVjdHMgd2l0aCBubyB0aHJlYWQgYWZmaW5pdHkgdG8gdGhlIGN1cnJlbnQgdGhyZWFk CisgICAgICAgICBjdXJyZW50RGF0YSA9IGQtPnRocmVhZERhdGE7CitAQCAtMjYyMCw3ICsyNjIw LDcgQEAgaW50IFFPYmplY3Q6OnJlY2VpdmVycyhjb25zdCBjaGFyICpzaWduYWwpIGNvbnN0Cisg ICAgICAgICBpZiAoIWQtPmlzU2lnbmFsQ29ubmVjdGVkKHNpZ25hbF9pbmRleCkpCisgICAgICAg ICAgICAgcmV0dXJuIHJlY2VpdmVyczsKKyAKKy0gICAgICAgIGlmIChkLT5kZWNsYXJhdGl2ZURh dGEgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMpIHsKKysgICAgICAgIGlm ICghZC0+aXNEZWxldGluZ0NoaWxkcmVuICYmIGQtPmRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJh Y3REZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycykgeworICAgICAgICAgICAgIHJlY2VpdmVycyAr PSBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycyhkLT5kZWNsYXJhdGl2ZURhdGEs IHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpZ25hbF9pbmRleCk7CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi9r ZXJuZWwvcW9iamVjdF9wLmgKK2luZGV4IDBiODI3YTUyY2EuLjEzZmZiODg5OTkgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oCitAQCAtNDQ0LDcgKzQ0NCw3IEBAIGlubGlu ZSB2b2lkIFFPYmplY3RQcml2YXRlOjpjaGVja0ZvckluY29tcGF0aWJsZUxpYnJhcnlWZXJzaW9u KGludCB2ZXJzaW9uKSBjb25zCisgCisgaW5saW5lIGJvb2wgUU9iamVjdFByaXZhdGU6OmlzRGVj bGFyYXRpdmVTaWduYWxDb25uZWN0ZWQodWludCBzaWduYWxfaW5kZXgpIGNvbnN0CisgeworLSAg ICByZXR1cm4gZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6aXNT aWduYWxDb25uZWN0ZWQKKysgICAgcmV0dXJuICFpc0RlbGV0aW5nQ2hpbGRyZW4gJiYgZGVjbGFy YXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6aXNTaWduYWxDb25uZWN0ZWQK KyAgICAgICAgICAgICAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmlzU2lnbmFsQ29ubmVj dGVkKGRlY2xhcmF0aXZlRGF0YSwgcV9mdW5jKCksIHNpZ25hbF9pbmRleCk7CisgfQorIAorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRyYW5zbGF0b3IuY3BwIGIvcXRi YXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xdHJhbnNsYXRvci5jcHAKK2luZGV4IDI4MTJmZmI3ZWEu LmJjMDE3N2M1ZWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3F0cmFu c2xhdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xdHJhbnNsYXRvci5j cHAKK0BAIC05MDIsNyArOTAyLDcgQEAgc3RhdGljIFFTdHJpbmcgZ2V0TWVzc2FnZShjb25zdCB1 Y2hhciAqbSwgY29uc3QgdWNoYXIgKmVuZCwgY29uc3QgY2hhciAqY29udGV4dCwKKyAgICAgICAg ICAgICBnb3RvIGVuZDsKKyAgICAgICAgIGNhc2UgVGFnX1RyYW5zbGF0aW9uOiB7CisgICAgICAg ICAgICAgaW50IGxlbiA9IHJlYWQzMihtKTsKKy0gICAgICAgICAgICBpZiAobGVuICUgMSkKKysg ICAgICAgICAgICBpZiAobGVuICYgMSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIFFTdHJpbmco KTsKKyAgICAgICAgICAgICBtICs9IDQ7CisgICAgICAgICAgICAgaWYgKCFudW1lcnVzLS0pIHsK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2Uu Y3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlLmNwcAoraW5k ZXggOWRlMjJjZWYzMy4uZmY4NjhhMzI2OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxp Yi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9t aW1ldHlwZXMvcW1pbWVkYXRhYmFzZS5jcHAKK0BAIC0zODksMjAgKzM4OSwyMyBAQCBRTWltZVR5 cGUgUU1pbWVEYXRhYmFzZVByaXZhdGU6Om1pbWVUeXBlRm9yRmlsZU5hbWVBbmREYXRhKGNvbnN0 IFFTdHJpbmcgJmZpbGVOYQorICAgICAgICAgLy8gRGlzYW1iaWd1YXRlIGNvbmZsaWN0aW5nIGV4 dGVuc2lvbnMgKGlmIG1hZ2ljIG1hdGNoaW5nIGZvdW5kIHNvbWV0aGluZykKKyAgICAgICAgIGlm IChjYW5kaWRhdGVCeURhdGEuaXNWYWxpZCgpICYmIG1hZ2ljQWNjdXJhY3kgPiAwKSB7CisgICAg ICAgICAgICAgY29uc3QgUVN0cmluZyBzbmlmZmVkTWltZSA9IGNhbmRpZGF0ZUJ5RGF0YS5uYW1l KCk7CistICAgICAgICAgICAgLy8gSWYgdGhlIHNuaWZmZWRNaW1lIG1hdGNoZXMgYSBnbG9iIG1h dGNoLCB1c2UgaXQKKysgICAgICAgICAgICAvLyBJZiB0aGUgc25pZmZlZE1pbWUgbWF0Y2hlcyBh IGhpZ2hlc3Qtd2VpZ2h0IGdsb2IgbWF0Y2gsIHVzZSBpdAorICAgICAgICAgICAgIGlmIChjYW5k aWRhdGVzQnlOYW1lLm1fbWF0Y2hpbmdNaW1lVHlwZXMuY29udGFpbnMoc25pZmZlZE1pbWUpKSB7 CisgICAgICAgICAgICAgICAgICphY2N1cmFjeVB0ciA9IDEwMDsKKyAgICAgICAgICAgICAgICAg cmV0dXJuIGNhbmRpZGF0ZUJ5RGF0YTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgZm9y IChjb25zdCBRU3RyaW5nICZtIDogcUFzQ29uc3QoY2FuZGlkYXRlc0J5TmFtZS5tX21hdGNoaW5n TWltZVR5cGVzKSkgeworKyAgICAgICAgICAgIGZvciAoY29uc3QgUVN0cmluZyAmbSA6IHFBc0Nv bnN0KGNhbmRpZGF0ZXNCeU5hbWUubV9hbGxNYXRjaGluZ01pbWVUeXBlcykpIHsKKyAgICAgICAg ICAgICAgICAgaWYgKGluaGVyaXRzKG0sIHNuaWZmZWRNaW1lKSkgeworICAgICAgICAgICAgICAg ICAgICAgLy8gV2UgaGF2ZSBtYWdpYyArIHBhdHRlcm4gcG9pbnRpbmcgdG8gdGhpcywgc28gaXQn cyBhIHByZXR0eSBnb29kIG1hdGNoCisgICAgICAgICAgICAgICAgICAgICAqYWNjdXJhY3lQdHIg PSAxMDA7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWltZVR5cGVGb3JOYW1lKG0pOwor ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICphY2N1cmFj eVB0ciA9IG1hZ2ljQWNjdXJhY3k7CistICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUJ5RGF0 YTsKKysgICAgICAgICAgICBpZiAoY2FuZGlkYXRlc0J5TmFtZS5tX2FsbE1hdGNoaW5nTWltZVR5 cGVzLmlzRW1wdHkoKSkgeworKyAgICAgICAgICAgICAgICAvLyBObyBnbG9iLCB1c2UgbWFnaWMK KysgICAgICAgICAgICAgICAgKmFjY3VyYWN5UHRyID0gbWFnaWNBY2N1cmFjeTsKKysgICAgICAg ICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUJ5RGF0YTsKKysgICAgICAgICAgICB9CisgICAgICAg ICB9CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVz L3FtaW1lZ2xvYnBhdHRlcm4uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWlt ZWdsb2JwYXR0ZXJuLmNwcAoraW5kZXggYTgxMTEyZDIyNy4uZmE4ZjRjNTQ1ZCAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVybi5jcHAKKysr KyBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVybi5jcHAKK0BA IC04Myw3ICs4MywxMCBAQCB2b2lkIFFNaW1lR2xvYk1hdGNoUmVzdWx0OjphZGRNYXRjaChjb25z dCBRU3RyaW5nICZtaW1lVHlwZSwgaW50IHdlaWdodCwgY29uc3QgUQorICAgICB9CisgICAgIGlm ICghbV9tYXRjaGluZ01pbWVUeXBlcy5jb250YWlucyhtaW1lVHlwZSkpIHsKKyAgICAgICAgIG1f bWF0Y2hpbmdNaW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKy0gICAgICAgIG1fYWxsTWF0Y2hp bmdNaW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKysgICAgICAgIGlmIChyZXBsYWNlKQorKyAg ICAgICAgICAgIG1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMucHJlcGVuZChtaW1lVHlwZSk7IC8vIGhp Z2hlc3Qtd2VpZ2h0IGZpcnN0CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgbV9hbGxNYXRj aGluZ01pbWVUeXBlcy5hcHBlbmQobWltZVR5cGUpOworICAgICAgICAgbV9rbm93blN1ZmZpeExl bmd0aCA9IGtub3duU3VmZml4TGVuZ3RoOworICAgICB9CisgfQorQEAgLTk0LDcgKzk3LDcgQEAg UU1pbWVHbG9iUGF0dGVybjo6UGF0dGVyblR5cGUgUU1pbWVHbG9iUGF0dGVybjo6ZGV0ZWN0UGF0 dGVyblR5cGUoY29uc3QgUVN0cmluZworICAgICBpZiAoIXBhdHRlcm5MZW5ndGgpCisgICAgICAg ICByZXR1cm4gT3RoZXJQYXR0ZXJuOworIAorLSAgICBjb25zdCBib29sIHN0YXJDb3VudCA9IHBh dHRlcm4uY291bnQoUUxhdGluMUNoYXIoJyonKSkgPT0gMTsKKysgICAgY29uc3QgaW50IHN0YXJD b3VudCA9IHBhdHRlcm4uY291bnQoUUxhdGluMUNoYXIoJyonKSk7CisgICAgIGNvbnN0IGJvb2wg aGFzU3F1YXJlQnJhY2tldCA9IHBhdHRlcm4uaW5kZXhPZihRTGF0aW4xQ2hhcignWycpKSAhPSAt MTsKKyAgICAgY29uc3QgYm9vbCBoYXNRdWVzdGlvbk1hcmsgPSBwYXR0ZXJuLmluZGV4T2YoUUxh dGluMUNoYXIoJz8nKSkgIT0gLTE7CisgCitAQCAtMTA2LDEwICsxMDksMTAgQEAgUU1pbWVHbG9i UGF0dGVybjo6UGF0dGVyblR5cGUgUU1pbWVHbG9iUGF0dGVybjo6ZGV0ZWN0UGF0dGVyblR5cGUo Y29uc3QgUVN0cmluZworICAgICAgICAgICAgIC8vIFBhdHRlcm5zIGxpa2UgIlJFQURNRSoiICh3 ZWxsIHRoaXMgaXMgY3VycmVudGx5IHRoZSBvbmx5IG9uZSBsaWtlIHRoYXQuLi4pCisgICAgICAg ICAgICAgaWYgKHBhdHRlcm4uYXQocGF0dGVybkxlbmd0aCAtIDEpID09IFFMYXRpbjFDaGFyKCcq JykpCisgICAgICAgICAgICAgICAgIHJldHVybiBQcmVmaXhQYXR0ZXJuOworLSAgICAgICAgfQor LSAgICAgICAgLy8gTmFtZXMgd2l0aG91dCBhbnkgd2lsZGNhcmRzIGxpa2UgIlJFQURNRSIKKy0g ICAgICAgIGlmIChzdGFyQ291bnQgPT0gMCkKKysgICAgICAgIH0gZWxzZSBpZiAoc3RhckNvdW50 ID09IDApIHsKKysgICAgICAgICAgICAvLyBOYW1lcyB3aXRob3V0IGFueSB3aWxkY2FyZHMgbGlr ZSAiUkVBRE1FIgorICAgICAgICAgICAgIHJldHVybiBMaXRlcmFsUGF0dGVybjsKKysgICAgICAg IH0KKyAgICAgfQorIAorICAgICBpZiAocGF0dGVybiA9PSBRTGF0aW4xU3RyaW5nKCJbMC05XVsw LTldWzAtOV0udmRyIikpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBl cy9xbWltZXByb3ZpZGVyLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVw cm92aWRlci5jcHAKK2luZGV4IDI1OGRkZGY4Y2IuLjQ2NDJkMGYyZDAgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3BwCisrKysgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3BwCitAQCAtMjQ0LDE1ICsy NDQsMTggQEAgdm9pZCBRTWltZUJpbmFyeVByb3ZpZGVyOjphZGRGaWxlTmFtZU1hdGNoZXMoY29u c3QgUVN0cmluZyAmZmlsZU5hbWUsIFFNaW1lR2xvYk0KKyAgICAgY29uc3QgUVN0cmluZyBsb3dl ckZpbGVOYW1lID0gZmlsZU5hbWUudG9Mb3dlcigpOworICAgICAvLyBDaGVjayBsaXRlcmFscyAo ZS5nLiAiTWFrZWZpbGUiKQorICAgICBtYXRjaEdsb2JMaXN0KHJlc3VsdCwgbV9jYWNoZUZpbGUs IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIoUG9zTGl0ZXJhbExpc3RPZmZzZXQpLCBmaWxlTmFtZSk7 CistICAgIC8vIENoZWNrIGNvbXBsZXggZ2xvYnMgKGUuZy4gImNhbGxncmluZC5vdXRbMC05XSoi KQorLSAgICBtYXRjaEdsb2JMaXN0KHJlc3VsdCwgbV9jYWNoZUZpbGUsIG1fY2FjaGVGaWxlLT5n ZXRVaW50MzIoUG9zR2xvYkxpc3RPZmZzZXQpLCBmaWxlTmFtZSk7CisgICAgIC8vIENoZWNrIHRo ZSB2ZXJ5IGNvbW1vbiAqLnR4dCBjYXNlcyB3aXRoIHRoZSBzdWZmaXggdHJlZQorLSAgICBjb25z dCBpbnQgcmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBv c1JldmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsKKy0gICAgY29uc3QgaW50IG51bVJvb3RzID0gbV9j YWNoZUZpbGUtPmdldFVpbnQzMihyZXZlcnNlU3VmZml4VHJlZU9mZnNldCk7CistICAgIGNvbnN0 IGludCBmaXJzdFJvb3RPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKHJldmVyc2VTdWZm aXhUcmVlT2Zmc2V0ICsgNCk7CistICAgIG1hdGNoU3VmZml4VHJlZShyZXN1bHQsIG1fY2FjaGVG aWxlLCBudW1Sb290cywgZmlyc3RSb290T2Zmc2V0LCBsb3dlckZpbGVOYW1lLCBsb3dlckZpbGVO YW1lLmxlbmd0aCgpIC0gMSwgZmFsc2UpOworKyAgICBpZiAocmVzdWx0Lm1fbWF0Y2hpbmdNaW1l VHlwZXMuaXNFbXB0eSgpKSB7CisrICAgICAgICBjb25zdCBpbnQgcmV2ZXJzZVN1ZmZpeFRyZWVP ZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc1JldmVyc2VTdWZmaXhUcmVlT2Zmc2V0 KTsKKysgICAgICAgIGNvbnN0IGludCBudW1Sb290cyA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIo cmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQpOworKyAgICAgICAgY29uc3QgaW50IGZpcnN0Um9vdE9m ZnNldCA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgKyA0 KTsKKysgICAgICAgIG1hdGNoU3VmZml4VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1Sb290 cywgZmlyc3RSb290T2Zmc2V0LCBsb3dlckZpbGVOYW1lLCBsb3dlckZpbGVOYW1lLmxlbmd0aCgp IC0gMSwgZmFsc2UpOworKyAgICAgICAgaWYgKHJlc3VsdC5tX21hdGNoaW5nTWltZVR5cGVzLmlz RW1wdHkoKSkKKysgICAgICAgICAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0LCBtX2NhY2hlRmls ZSwgbnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwgZmlsZU5hbWUsIGZpbGVOYW1lLmxlbmd0aCgp IC0gMSwgdHJ1ZSk7CisrICAgIH0KKysgICAgLy8gQ2hlY2sgY29tcGxleCBnbG9icyAoZS5nLiAi Y2FsbGdyaW5kLm91dFswLTldKiIgb3IgIlJFQURNRSoiKQorICAgICBpZiAocmVzdWx0Lm1fbWF0 Y2hpbmdNaW1lVHlwZXMuaXNFbXB0eSgpKQorLSAgICAgICAgbWF0Y2hTdWZmaXhUcmVlKHJlc3Vs dCwgbV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJvb3RPZmZzZXQsIGZpbGVOYW1lLCBmaWxl TmFtZS5sZW5ndGgoKSAtIDEsIHRydWUpOworKyAgICAgICAgbWF0Y2hHbG9iTGlzdChyZXN1bHQs IG1fY2FjaGVGaWxlLCBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc0dsb2JMaXN0T2Zmc2V0KSwg ZmlsZU5hbWUpOworIH0KKyAKKyB2b2lkIFFNaW1lQmluYXJ5UHJvdmlkZXI6Om1hdGNoR2xvYkxp c3QoUU1pbWVHbG9iTWF0Y2hSZXN1bHQgJnJlc3VsdCwgQ2FjaGVGaWxlICpjYWNoZUZpbGUsIGlu dCBvZmYsIGNvbnN0IFFTdHJpbmcgJmZpbGVOYW1lKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Y29yZWxpYi9zZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxp Yi9zZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcAoraW5kZXggMTdlNmYxMTFhYi4uMmU0MGI2 YzhmYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3Fqc29u cGFyc2VyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcWpzb25w YXJzZXIuY3BwCitAQCAtMzc5LDEwICszNzksMzAgQEAgZXJyb3I6CisgICAgIHJldHVybiBRQ2Jv clZhbHVlKCk7CisgfQorIAorKy8vIFdlIG5lZWQgdG8gcmV0YWluIHRoZSBfbGFzdF8gdmFsdWUg Zm9yIGFueSBkdXBsaWNhdGUga2V5cyBhbmQgd2UgbmVlZCB0byBkZXJlZiBjb250YWluZXJzLgor Ky8vIFRoZXJlZm9yZSB0aGUgbWFudWFsIGltcGxlbWVudGF0aW9uIG9mIHN0ZDo6dW5pcXVlKCku CisrdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIENvbXBhcmUsIHR5cGVuYW1l IEFzc2lnbj4KKytzdGF0aWMgSXRlcmF0b3IgY3VzdG9tQXNzaWduaW5nVW5pcXVlTGFzdChJdGVy YXRvciBmaXJzdCwgSXRlcmF0b3IgbGFzdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBDb21wYXJlIGNvbXBhcmUsIEFzc2lnbiBhc3NpZ24pCisreworKyAgICBm aXJzdCA9IHN0ZDo6YWRqYWNlbnRfZmluZChmaXJzdCwgbGFzdCwgY29tcGFyZSk7CisrICAgIGlm IChmaXJzdCA9PSBsYXN0KQorKyAgICAgICAgcmV0dXJuIGxhc3Q7CisrCisrICAgIEl0ZXJhdG9y IHJlc3VsdCA9IGZpcnN0OworKyAgICB3aGlsZSAoKytmaXJzdCAhPSBsYXN0KSB7CisrICAgICAg ICBpZiAoIWNvbXBhcmUoKnJlc3VsdCwgKmZpcnN0KSkKKysgICAgICAgICAgICArK3Jlc3VsdDsK KysgICAgICAgIGlmIChyZXN1bHQgIT0gZmlyc3QpCisrICAgICAgICAgICAgYXNzaWduKCpyZXN1 bHQsICpmaXJzdCk7CisrICAgIH0KKysKKysgICAgcmV0dXJuICsrcmVzdWx0OworK30KKysKKyBz dGF0aWMgdm9pZCBzb3J0Q29udGFpbmVyKFFDYm9yQ29udGFpbmVyUHJpdmF0ZSAqY29udGFpbmVy KQorIHsKKyAgICAgdXNpbmcgRm9yd2FyZCA9IFFKc29uUHJpdmF0ZTo6S2V5SXRlcmF0b3I7Cist ICAgIHVzaW5nIFJldmVyc2UgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Rm9yd2FyZD47CisgICAg IHVzaW5nIFZhbHVlID0gRm9yd2FyZDo6dmFsdWVfdHlwZTsKKyAKKyAgICAgYXV0byBjb21wYXJl ID0gW2NvbnRhaW5lcl0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKQorQEAgLTQyMCwx NyArNDQwLDMxIEBAIHN0YXRpYyB2b2lkIHNvcnRDb250YWluZXIoUUNib3JDb250YWluZXJQcml2 YXRlICpjb250YWluZXIpCisgICAgICAgICB9CisgICAgIH07CisgCistICAgIHN0ZDo6c29ydChG b3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSksIEZvcndhcmQoY29udGFpbmVyLT5l bGVtZW50cy5lbmQoKSksCistICAgICAgICAgICAgICBbJmNvbXBhcmVdKGNvbnN0IFZhbHVlICZh LCBjb25zdCBWYWx1ZSAmYikgeyByZXR1cm4gY29tcGFyZShhLCBiKSA8IDA7IH0pOworKyAgICAv LyBUaGUgZWxlbWVudHMnIGNvbnRhaW5lcnMgYXJlIG93bmVkIGJ5IHRoZSBvdXRlciBjb250YWlu ZXIsIG5vdCBieSB0aGUgZWxlbWVudHMgdGhlbXNlbHZlcy4KKysgICAgYXV0byBtb3ZlID0gW10o Rm9yd2FyZDo6cmVmZXJlbmNlIHRhcmdldCwgRm9yd2FyZDo6cmVmZXJlbmNlIHNvdXJjZSkKKysg ICAgeworKyAgICAgICAgUXRDYm9yOjpFbGVtZW50ICZ0YXJnZXRWYWx1ZSA9IHRhcmdldC52YWx1 ZSgpOworKworKyAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBoYXMgYSBjb250YWluZXIsIGRlcmVm IGl0IGJlZm9yZSBvdmVyd3JpdGluZywgc28gdGhhdCB3ZSBkb24ndCBsZWFrLgorKyAgICAgICAg aWYgKHRhcmdldFZhbHVlLmZsYWdzICYgUXRDYm9yOjpFbGVtZW50OjpJc0NvbnRhaW5lcikKKysg ICAgICAgICAgICB0YXJnZXRWYWx1ZS5jb250YWluZXItPmRlcmVmKCk7CisrCisrICAgICAgICAv LyBEbyBub3QgbW92ZSwgc28gdGhhdCB3ZSBjYW4gY2xlYXIgdGhlIHZhbHVlIGFmdGVyd2FyZHMu CisrICAgICAgICB0YXJnZXQgPSBzb3VyY2U7CisrCisrICAgICAgICAvLyBDbGVhciB0aGUgc291 cmNlIHZhbHVlLCBzbyB0aGF0IHdlIGRvbid0IHN0b3JlIHRoZSBzYW1lIGNvbnRhaW5lciB0d2lj ZS4KKysgICAgICAgIHNvdXJjZS52YWx1ZSgpID0gUXRDYm9yOjpFbGVtZW50KCk7CisrICAgIH07 CisrCisrICAgIHN0ZDo6c3RhYmxlX3NvcnQoCisrICAgICAgICAgICAgICAgIEZvcndhcmQoY29u dGFpbmVyLT5lbGVtZW50cy5iZWdpbigpKSwgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmVu ZCgpKSwKKysgICAgICAgICAgICAgICAgWyZjb21wYXJlXShjb25zdCBWYWx1ZSAmYSwgY29uc3Qg VmFsdWUgJmIpIHsgcmV0dXJuIGNvbXBhcmUoYSwgYikgPCAwOyB9KTsKKyAKKy0gICAgLy8gV2Ug bmVlZCB0byByZXRhaW4gdGhlIF9sYXN0XyB2YWx1ZSBmb3IgYW55IGR1cGxpY2F0ZSBrZXlzLiBU aGVyZWZvcmUgdGhlIHJldmVyc2UgZGFuY2UgaGVyZS4KKy0gICAgYXV0byBpdCA9IHN0ZDo6dW5p cXVlKFJldmVyc2UoY29udGFpbmVyLT5lbGVtZW50cy5lbmQoKSksIFJldmVyc2UoY29udGFpbmVy LT5lbGVtZW50cy5iZWdpbigpKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIFsmY29tcGFy ZV0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7CistICAgICAgICByZXR1cm4gY29t cGFyZShhLCBiKSA9PSAwOworLSAgICB9KS5iYXNlKCkuZWxlbWVudHNJdGVyYXRvcigpOworKyAg ICBGb3J3YXJkIHJlc3VsdCA9IGN1c3RvbUFzc2lnbmluZ1VuaXF1ZUxhc3QoCisrICAgICAgICAg ICAgICAgIEZvcndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpKSwgIEZvcndhcmQoY29u dGFpbmVyLT5lbGVtZW50cy5lbmQoKSksCisrICAgICAgICAgICAgICAgIFsmY29tcGFyZV0oY29u c3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7IHJldHVybiBjb21wYXJlKGEsIGIpID09IDA7 IH0sIG1vdmUpOworIAorLSAgICAvLyBUaGUgZXJhc2UgZnJvbSBiZWdpbm5pbmcgaXMgZXhwZW5z aXZlIGJ1dCBob3BlZnVsbHkgcmFyZS4KKy0gICAgY29udGFpbmVyLT5lbGVtZW50cy5lcmFzZShj b250YWluZXItPmVsZW1lbnRzLmJlZ2luKCksIGl0KTsKKysgICAgY29udGFpbmVyLT5lbGVtZW50 cy5lcmFzZShyZXN1bHQuZWxlbWVudHNJdGVyYXRvcigpLCBjb250YWluZXItPmVsZW1lbnRzLmVu ZCgpKTsKKyB9CisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6 YXRpb24vcXhtbHN0cmVhbS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9x eG1sc3RyZWFtLmNwcAoraW5kZXggYjJmODQ2NTQ0ZC4uN2NkNDU3YmEzYSAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3BwCisrKysgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1sc3RyZWFtLmNwcAorQEAgLTk4MCw3 ICs5ODAsNyBAQCBpbmxpbmUgdWludCBRWG1sU3RyZWFtUmVhZGVyUHJpdmF0ZTo6cGVla0NoYXIo KQorIGJvb2wgUVhtbFN0cmVhbVJlYWRlclByaXZhdGU6OnNjYW5VbnRpbChjb25zdCBjaGFyICpz dHIsIHNob3J0IHRva2VuVG9JbmplY3QpCisgeworICAgICBpbnQgcG9zID0gdGV4dEJ1ZmZlci5z aXplKCk7CistICAgIGludCBvbGRMaW5lTnVtYmVyID0gbGluZU51bWJlcjsKKysgICAgY29uc3Qg YXV0byBvbGRMaW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAKKyAgICAgdWludCBjOworICAgICB3 aGlsZSAoKGMgPSBnZXRDaGFyKCkpICE9IFN0cmVhbUVPRikgeworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmcuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQv cXN0cmluZy5jcHAKK2luZGV4IDNlODhhYjQ4NTkuLjhkZWVhZTQ3YmIgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3Jl bGliL3RleHQvcXN0cmluZy5jcHAKK0BAIC0xMjMxMiw3ICsxMjMxMiw3IEBAIHN0YXRpYyBxc2l6 ZXR5cGUgcUxhc3RJbmRleE9mKEhheXN0YWNrIGhheXN0YWNrMCwgcXNpemV0eXBlIGZyb20sCisg ICAgIGNvbnN0IGF1dG8gbmVlZGxlID0gbmVlZGxlMC5kYXRhKCk7CisgICAgIGNvbnN0IGF1dG8g KmVuZCA9IGhheXN0YWNrOworICAgICBoYXlzdGFjayArPSBmcm9tOworLSAgICBjb25zdCBzdGQ6 OnNpemVfdCBzbF9taW51c18xID0gc2wgLSAxOworKyAgICBjb25zdCBzdGQ6OnNpemVfdCBzbF9t aW51c18xID0gc2wgPyBzbCAtIDEgOiAwOworICAgICBjb25zdCBhdXRvICpuID0gbmVlZGxlICsg c2xfbWludXNfMTsKKyAgICAgY29uc3QgYXV0byAqaCA9IGhheXN0YWNrICsgc2xfbWludXNfMTsK KyAgICAgc3RkOjpzaXplX3QgaGFzaE5lZWRsZSA9IDAsIGhhc2hIYXlzdGFjayA9IDA7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZ2l0ZXJhdG9yX3AuaCBiL3F0 YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRvcl9wLmgKK2luZGV4IDIxOTU4OWI2 ZTQuLjFkMGM2NmNjNzggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3Ry aW5naXRlcmF0b3JfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5naXRl cmF0b3JfcC5oCitAQCAtNjEsNiArNjEsOCBAQCBjbGFzcyBRU3RyaW5nSXRlcmF0b3IKKyB7Cisg ICAgIFFTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIGksIHBvcywgZTsKKyAgICAgUV9TVEFUSUNfQVNT RVJUKChzdGQ6OmlzX3NhbWU8UVN0cmluZzo6Y29uc3RfaXRlcmF0b3IsIGNvbnN0IFFDaGFyICo+ Ojp2YWx1ZSkpOworKyAgICBzdGF0aWMgYm9vbCBsZXNzKGNvbnN0IFFDaGFyICpsaHMsIGNvbnN0 IFFDaGFyICpyaHMpIG5vZXhjZXB0CisrICAgIHsgcmV0dXJuIHN0ZDo6bGVzczxRU3RyaW5nOjpj b25zdF9pdGVyYXRvcj57fShsaHMsIHJocyk7IH0KKyBwdWJsaWM6CisgICAgIGV4cGxpY2l0IFFT dHJpbmdJdGVyYXRvcihRU3RyaW5nVmlldyBzdHJpbmcsIHFzaXpldHlwZSBpZHggPSAwKQorICAg ICAgICAgOiBpKHN0cmluZy5iZWdpbigpKSwKK0BAIC05NSw3ICs5Nyw4IEBAIHB1YmxpYzoKKyAK KyAgICAgaW5saW5lIHZvaWQgc2V0UG9zaXRpb24oUVN0cmluZzo6Y29uc3RfaXRlcmF0b3IgcG9z aXRpb24pCisgICAgIHsKKy0gICAgICAgIFFfQVNTRVJUX1goaSA8PSBwb3NpdGlvbiAmJiBwb3Np dGlvbiA8PSBlLCBRX0ZVTkNfSU5GTywgInBvc2l0aW9uIG91dCBvZiBib3VuZHMiKTsKKysgICAg ICAgIFFfQVNTRVJUX1goIWxlc3MocG9zaXRpb24sIGkpICYmICFsZXNzKGUsIHBvc2l0aW9uKSwK KysgICAgICAgICAgICAgICAgICAgUV9GVU5DX0lORk8sICJwb3NpdGlvbiBvdXQgb2YgYm91bmRz Iik7CisgICAgICAgICBwb3MgPSBwb3NpdGlvbjsKKyAgICAgfQorIAorQEAgLTEwMyw3ICsxMDYs NyBAQCBwdWJsaWM6CisgCisgICAgIGlubGluZSBib29sIGhhc05leHQoKSBjb25zdAorICAgICB7 CistICAgICAgICByZXR1cm4gcG9zIDwgZTsKKysgICAgICAgIHJldHVybiBsZXNzKHBvcywgZSk7 CisgICAgIH0KKyAKKyAgICAgaW5saW5lIHZvaWQgYWR2YW5jZSgpCitAQCAtMTIwLDE2ICsxMjMs MjAgQEAgcHVibGljOgorICAgICB7CisgICAgICAgICBRX0FTU0VSVF9YKGhhc05leHQoKSwgUV9G VU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBuZXh0IGl0ZW0iKTsKKyAKKy0gICAgICAgIGlm IChRX1VOTElLRUxZKChwb3MrKyktPmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChR X1VOTElLRUxZKChwb3MrKyktPmlzSGlnaFN1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFf QVNTRVJUKGhhc05leHQoKSAmJiBwb3MtPmlzTG93U3Vycm9nYXRlKCkpOworICAgICAgICAgICAg ICsrcG9zOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIGlubGluZSB1aW50IHBlZWtOZXh0 VW5jaGVja2VkKCkgY29uc3QKKyAgICAgeworICAgICAgICAgUV9BU1NFUlRfWChoYXNOZXh0KCks IFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4dCBpdGVtIik7CisgCistICAgICAg ICBpZiAoUV9VTkxJS0VMWShwb3MtPmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChR X1VOTElLRUxZKHBvcy0+aXNIaWdoU3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NF UlQobGVzcyhwb3MgKyAxLCBlKSAmJiBwb3NbMV0uaXNMb3dTdXJyb2dhdGUoKSk7CisgICAgICAg ICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQocG9zWzBdLCBwb3NbMV0pOworKyAg ICAgICAgfQorIAorICAgICAgICAgcmV0dXJuIHBvcy0+dW5pY29kZSgpOworICAgICB9CitAQCAt MTU1LDggKzE2MiwxMCBAQCBwdWJsaWM6CisgICAgICAgICBRX0FTU0VSVF9YKGhhc05leHQoKSwg UV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBuZXh0IGl0ZW0iKTsKKyAKKyAgICAgICAg IGNvbnN0IFFDaGFyIGN1ciA9ICpwb3MrKzsKKy0gICAgICAgIGlmIChRX1VOTElLRUxZKGN1ci5p c0hpZ2hTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWShjdXIuaXNIaWdoU3Vy cm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQoaGFzTmV4dCgpICYmIHBvcy0+aXNM b3dTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1Vj czQoY3VyLCAqcG9zKyspOworKyAgICAgICAgfQorICAgICAgICAgcmV0dXJuIGN1ci51bmljb2Rl KCk7CisgICAgIH0KKyAKK0BAIC0xNjYsNyArMTc1LDcgQEAgcHVibGljOgorIAorICAgICAgICAg Y29uc3QgUUNoYXIgdWMgPSAqcG9zKys7CisgICAgICAgICBpZiAoUV9VTkxJS0VMWSh1Yy5pc1N1 cnJvZ2F0ZSgpKSkgeworLSAgICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5pc0hpZ2hTdXJyb2dh dGUoKSAmJiBwb3MgPCBlICYmIHBvcy0+aXNMb3dTdXJyb2dhdGUoKSkpCisrICAgICAgICAgICAg aWYgKFFfTElLRUxZKHVjLmlzSGlnaFN1cnJvZ2F0ZSgpICYmIGhhc05leHQoKSAmJiBwb3MtPmlz TG93U3Vycm9nYXRlKCkpKQorICAgICAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0 ZVRvVWNzNCh1YywgKnBvcysrKTsKKyAgICAgICAgICAgICByZXR1cm4gaW52YWxpZEFzOworICAg ICAgICAgfQorQEAgLTE3OCw3ICsxODcsNyBAQCBwdWJsaWM6CisgCisgICAgIGlubGluZSBib29s IGhhc1ByZXZpb3VzKCkgY29uc3QKKyAgICAgeworLSAgICAgICAgcmV0dXJuIHBvcyA+IGk7Cisr ICAgICAgICByZXR1cm4gbGVzcyhpLCBwb3MpOworICAgICB9CisgCisgICAgIGlubGluZSB2b2lk IHJlY2VkZSgpCitAQCAtMTk2LDE2ICsyMDUsMjAgQEAgcHVibGljOgorICAgICB7CisgICAgICAg ICBRX0FTU0VSVF9YKGhhc1ByZXZpb3VzKCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0 IGEgcHJldmlvdXMgaXRlbSIpOworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkoKC0tcG9zKS0+ aXNMb3dTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWSgoLS1wb3MpLT5pc0xv d1N1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGhhc1ByZXZpb3VzKCkgJiYg cG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgLS1wb3M7CisrICAgICAg ICB9CisgICAgIH0KKyAKKyAgICAgaW5saW5lIHVpbnQgcGVla1ByZXZpb3VzVW5jaGVja2VkKCkg Y29uc3QKKyAgICAgeworICAgICAgICAgUV9BU1NFUlRfWChoYXNQcmV2aW91cygpLCBRX0ZVTkNf SU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIHByZXZpb3VzIGl0ZW0iKTsKKyAKKy0gICAgICAgIGlm IChRX1VOTElLRUxZKHBvc1stMV0uaXNMb3dTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9V TkxJS0VMWShwb3NbLTFdLmlzTG93U3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NF UlQobGVzcyhpICsgMSwgcG9zKSAmJiBwb3NbLTJdLmlzSGlnaFN1cnJvZ2F0ZSgpKTsKKyAgICAg ICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNChwb3NbLTJdLCBwb3NbLTFdKTsK KysgICAgICAgIH0KKyAgICAgICAgIHJldHVybiBwb3NbLTFdLnVuaWNvZGUoKTsKKyAgICAgfQor IAorQEAgLTIzMCw4ICsyNDMsMTAgQEAgcHVibGljOgorICAgICAgICAgUV9BU1NFUlRfWChoYXNQ cmV2aW91cygpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIHByZXZpb3VzIGl0ZW0i KTsKKyAKKyAgICAgICAgIGNvbnN0IFFDaGFyIGN1ciA9ICotLXBvczsKKy0gICAgICAgIGlmIChR X1VOTElLRUxZKGN1ci5pc0xvd1N1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZ KGN1ci5pc0xvd1N1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGhhc1ByZXZp b3VzKCkgJiYgcG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgcmV0dXJu IFFDaGFyOjpzdXJyb2dhdGVUb1VjczQoKi0tcG9zLCBjdXIpOworKyAgICAgICAgfQorICAgICAg ICAgcmV0dXJuIGN1ci51bmljb2RlKCk7CisgICAgIH0KKyAKK0BAIC0yNDEsNyArMjU2LDcgQEAg cHVibGljOgorIAorICAgICAgICAgY29uc3QgUUNoYXIgdWMgPSAqLS1wb3M7CisgICAgICAgICBp ZiAoUV9VTkxJS0VMWSh1Yy5pc1N1cnJvZ2F0ZSgpKSkgeworLSAgICAgICAgICAgIGlmIChRX0xJ S0VMWSh1Yy5pc0xvd1N1cnJvZ2F0ZSgpICYmIHBvcyA+IGkgJiYgcG9zWy0xXS5pc0hpZ2hTdXJy b2dhdGUoKSkpCisrICAgICAgICAgICAgaWYgKFFfTElLRUxZKHVjLmlzTG93U3Vycm9nYXRlKCkg JiYgaGFzUHJldmlvdXMoKSAmJiBwb3NbLTFdLmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKyAgICAgICAg ICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQoKi0tcG9zLCB1Yyk7CisgICAg ICAgICAgICAgcmV0dXJuIGludmFsaWRBczsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhy ZWFkL3FmdXRleF9wLmgKK2luZGV4IGYyODdiNzUyZDcuLmUyOTQ1Mzc3ODcgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmgKKysrKyBiL3F0YmFzZS9zcmMv Y29yZWxpYi90aHJlYWQvcWZ1dGV4X3AuaAorQEAgLTUyLDYgKzUyLDcgQEAKKyAvLworIAorICNp bmNsdWRlIDxxZ2xvYmFsLmg+CisrI2luY2x1ZGUgPFF0Q29yZS9xdHNhbl9pbXBsLmg+CisgCisg UVRfQkVHSU5fTkFNRVNQQUNFCisgCitAQCAtMTA2LDE2ICsxMDcsMTMgQEAgbmFtZXNwYWNlIFF0 TGludXhGdXRleCB7CisgICAgIGlubGluZSBpbnQgX3FfZnV0ZXgoaW50ICphZGRyLCBpbnQgb3As IGludCB2YWwsIHF1aW50cHRyIHZhbDIgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCAqYWRkcjIgPSBudWxscHRyLCBpbnQgdmFsMyA9IDApIG5vZXhjZXB0CisgICAgIHsKKy0gICAg ICAgIC8vIEEgZnV0ZXggY2FsbCBlbnN1cmVzIHRvdGFsIG9yZGVyaW5nIG9uIHRoZSBmdXRleCB3 b3JkcworLSAgICAgICAgLy8gKGluIGVpdGhlciBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIGNh bGwpLiBJbnN0cnVjdCBUU0FOIGFjY29yZGluZ2x5LAorLSAgICAgICAgLy8gYXMgVFNBTiBkb2Vz IG5vdCB1bmRlcnN0YW5kIHRoZSBmdXRleCgyKSBzeXNjYWxsLgorLSAgICAgICAgX3FfdHNhbl9y ZWxlYXNlKGFkZHIsIGFkZHIyKTsKKysgICAgICAgIFF0VHNhbjo6ZnV0ZXhSZWxlYXNlKGFkZHIs IGFkZHIyKTsKKyAKKyAgICAgICAgIC8vIHdlIHVzZSBfX05SX2Z1dGV4IGJlY2F1c2Ugc29tZSBs aWJjcyAobGlrZSBBbmRyb2lkJ3MgYmlvbmljKSBkb24ndAorICAgICAgICAgLy8gcHJvdmlkZSBT WVNfZnV0ZXggZXRjLgorICAgICAgICAgaW50IHJlc3VsdCA9IHN5c2NhbGwoX19OUl9mdXRleCwg YWRkciwgb3AgfCBGVVRFWF9QUklWQVRFX0ZMQUcsIHZhbCwgdmFsMiwgYWRkcjIsIHZhbDMpOwor IAorLSAgICAgICAgX3FfdHNhbl9hY3F1aXJlKGFkZHIsIGFkZHIyKTsKKysgICAgICAgIFF0VHNh bjo6ZnV0ZXhBY3F1aXJlKGFkZHIsIGFkZHIyKTsKKyAKKyAgICAgICAgIHJldHVybiByZXN1bHQ7 CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5j cHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5jcHAKK2luZGV4IDMxMGQxY2Ix NGYuLjcwOTcxMjJkOGUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3Ft dXRleC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmNwcAorQEAg LTE1Miw2ICsxNTIsNyBAQCBwdWJsaWM6CisgCisgLyohCisgICAgIFxlbnVtIFFNdXRleDo6UmVj dXJzaW9uTW9kZQorKyAgICBcb2Jzb2xldGUgVXNlIFFSZWN1cnNpdmVNdXRleCB0byBjcmVhdGUg YSByZWN1cnNpdmUgbXV0ZXguCisgCisgICAgIFx2YWx1ZSBSZWN1cnNpdmUgIEluIHRoaXMgbW9k ZSwgYSB0aHJlYWQgY2FuIGxvY2sgdGhlIHNhbWUgbXV0ZXgKKyAgICAgICAgICAgICAgICAgICAg ICAgbXVsdGlwbGUgdGltZXMgYW5kIHRoZSBtdXRleCB3b24ndCBiZSB1bmxvY2tlZAorQEAgLTE3 Myw2ICsxNzQsNyBAQCBwdWJsaWM6CisgCisgLyohCisgICAgIENvbnN0cnVjdHMgYSBuZXcgbXV0 ZXguIFRoZSBtdXRleCBpcyBjcmVhdGVkIGluIGFuIHVubG9ja2VkIHN0YXRlLgorKyAgICBcb2Jz b2xldGUgVXNlIFFSZWN1cnNpdmVNdXRleCB0byBjcmVhdGUgYSByZWN1cnNpdmUgbXV0ZXguCisg CisgICAgIElmIFxhIG1vZGUgaXMgUU11dGV4OjpSZWN1cnNpdmUsIGEgdGhyZWFkIGNhbiBsb2Nr IHRoZSBzYW1lIG11dGV4CisgICAgIG11bHRpcGxlIHRpbWVzIGFuZCB0aGUgbXV0ZXggd29uJ3Qg YmUgdW5sb2NrZWQgdW50aWwgYQorQEAgLTE5Nyw3ICsxOTksNyBAQCBRTXV0ZXg6OlFNdXRleChS ZWN1cnNpb25Nb2RlIG1vZGUpCisgUU11dGV4Ojp+UU11dGV4KCkKKyB7CisgICAgIFFNdXRleERh dGEgKmQgPSBkX3B0ci5sb2FkUmVsYXhlZCgpOworLSAgICBpZiAoaXNSZWN1cnNpdmUoKSkgewor KyAgICBpZiAoUUJhc2ljTXV0ZXg6OmlzUmVjdXJzaXZlKCkpIHsKKyAgICAgICAgIGRlbGV0ZSBz dGF0aWNfY2FzdDxRUmVjdXJzaXZlTXV0ZXhQcml2YXRlICo+KGQpOworICAgICB9IGVsc2UgaWYg KGQpIHsKKyAjaWZuZGVmIFFUX0xJTlVYX0ZVVEVYCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b3JlbGliL3RocmVhZC9xbXV0ZXguaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4 LmgKK2luZGV4IDczYzllMDA2NjMuLjFiYWU1NzNhMDMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvdGhyZWFkL3FtdXRleC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFk L3FtdXRleC5oCitAQCAtNDIsNiArNDIsNyBAQAorIAorICNpbmNsdWRlIDxRdENvcmUvcWdsb2Jh bC5oPgorICNpbmNsdWRlIDxRdENvcmUvcWF0b21pYy5oPgorKyNpbmNsdWRlIDxRdENvcmUvcXRz YW5faW1wbC5oPgorICNpbmNsdWRlIDxuZXc+CisgCisgI2lmIF9faGFzX2luY2x1ZGUoPGNocm9u bz4pCitAQCAtNzcsMTkgKzc4LDM3IEBAIHB1YmxpYzoKKyAKKyAgICAgLy8gQmFzaWNMb2NrYWJs ZSBjb25jZXB0CisgICAgIGlubGluZSB2b2lkIGxvY2soKSBRVF9NVVRFWF9MT0NLX05PRVhDRVBU IHsKKysgICAgICAgIFF0VHNhbjo6bXV0ZXhQcmVMb2NrKHRoaXMsIDB1KTsKKysKKyAgICAgICAg IGlmICghZmFzdFRyeUxvY2soKSkKKyAgICAgICAgICAgICBsb2NrSW50ZXJuYWwoKTsKKysKKysg ICAgICAgIFF0VHNhbjo6bXV0ZXhQb3N0TG9jayh0aGlzLCAwdSwgMCk7CisgICAgIH0KKyAKKyAg ICAgLy8gQmFzaWNMb2NrYWJsZSBjb25jZXB0CisgICAgIGlubGluZSB2b2lkIHVubG9jaygpIG5v ZXhjZXB0IHsKKyAgICAgICAgIFFfQVNTRVJUKGRfcHRyLmxvYWRSZWxheGVkKCkpOyAvL211dGV4 IG11c3QgYmUgbG9ja2VkCisrCisrICAgICAgICBRdFRzYW46Om11dGV4UHJlVW5sb2NrKHRoaXMs IDB1KTsKKysKKyAgICAgICAgIGlmICghZmFzdFRyeVVubG9jaygpKQorICAgICAgICAgICAgIHVu bG9ja0ludGVybmFsKCk7CisrCisrICAgICAgICBRdFRzYW46Om11dGV4UG9zdFVubG9jayh0aGlz LCAwdSk7CisgICAgIH0KKyAKKyAgICAgYm9vbCB0cnlMb2NrKCkgbm9leGNlcHQgeworLSAgICAg ICAgcmV0dXJuIGZhc3RUcnlMb2NrKCk7CisrICAgICAgICB1bnNpZ25lZCB0c2FuRmxhZ3MgPSBR dFRzYW46OlRyeUxvY2s7CisrICAgICAgICBRdFRzYW46Om11dGV4UHJlTG9jayh0aGlzLCB0c2Fu RmxhZ3MpOworKworKyAgICAgICAgY29uc3QgYm9vbCBzdWNjZXNzID0gZmFzdFRyeUxvY2soKTsK KysKKysgICAgICAgIGlmICghc3VjY2VzcykKKysgICAgICAgICAgICB0c2FuRmxhZ3MgfD0gUXRU c2FuOjpUcnlMb2NrRmFpbGVkOworKyAgICAgICAgUXRUc2FuOjptdXRleFBvc3RMb2NrKHRoaXMs IHRzYW5GbGFncywgMCk7CisrCisrICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICAgfQorIAor ICAgICAvLyBMb2NrYWJsZSBjb25jZXB0CitAQCAtMTM0LDggKzE1MywxNiBAQCBwdWJsaWM6Cisg I2Vsc2UKKyAgICAgUU11dGV4KCkgeyBkX3B0ci5zdG9yZVJlbGF4ZWQobnVsbHB0cik7IH0KKyAj ZW5kaWYKKysjaWYgUVRfREVQUkVDQVRFRF9TSU5DRSg1LDE1KQorICAgICBlbnVtIFJlY3Vyc2lv bk1vZGUgeyBOb25SZWN1cnNpdmUsIFJlY3Vyc2l2ZSB9OworKyAgICBRVF9ERVBSRUNBVEVEX1ZF UlNJT05fWCg1LCAxNSwgIlVzZSBRUmVjdXJzaXZlTXV0ZXggaW5zdGVhZCBvZiBhIHJlY3Vyc2l2 ZSBRTXV0ZXgiKQorICAgICBleHBsaWNpdCBRTXV0ZXgoUmVjdXJzaW9uTW9kZSBtb2RlKTsKKysK KysgICAgUVRfREVQUkVDQVRFRF9WRVJTSU9OX1goNSwgMTUsICJVc2UgUVJlY3Vyc2l2ZU11dGV4 IGluc3RlYWQgb2YgYSByZWN1cnNpdmUgUU11dGV4IikKKysgICAgYm9vbCBpc1JlY3Vyc2l2ZSgp IGNvbnN0IG5vZXhjZXB0CisrICAgIHsgcmV0dXJuIFFCYXNpY011dGV4Ojppc1JlY3Vyc2l2ZSgp OyB9CisrI2VuZGlmCisrCisgICAgIH5RTXV0ZXgoKTsKKyAKKyAgICAgLy8gQmFzaWNMb2NrYWJs ZSBjb25jZXB0CitAQCAtMTY2LDkgKzE5Myw2IEBAIHB1YmxpYzoKKyAgICAgfQorICNlbmRpZgor IAorLSAgICBib29sIGlzUmVjdXJzaXZlKCkgY29uc3Qgbm9leGNlcHQKKy0gICAgeyByZXR1cm4g UUJhc2ljTXV0ZXg6OmlzUmVjdXJzaXZlKCk7IH0KKy0KKyBwcml2YXRlOgorICAgICBRX0RJU0FC TEVfQ09QWShRTXV0ZXgpCisgICAgIGZyaWVuZCBjbGFzcyBRTXV0ZXhMb2NrZXI7CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xcmVhZHdyaXRlbG9jay5jcHAgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcAoraW5kZXggOGMyODUwN2Q1 YS4uOWRkODUwMzExNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXJl YWR3cml0ZWxvY2suY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FyZWFkd3Jp dGVsb2NrLmNwcAorQEAgLTE1NSw3ICsxNTUsNyBAQCBRUmVhZFdyaXRlTG9jazo6UVJlYWRXcml0 ZUxvY2soUmVjdXJzaW9uTW9kZSByZWN1cnNpb25Nb2RlKQorICovCisgUVJlYWRXcml0ZUxvY2s6 On5RUmVhZFdyaXRlTG9jaygpCisgeworLSAgICBhdXRvIGQgPSBkX3B0ci5sb2FkUmVsYXhlZCgp OworKyAgICBhdXRvIGQgPSBkX3B0ci5sb2FkQWNxdWlyZSgpOworICAgICBpZiAoaXNVbmNvbnRl bmRlZExvY2tlZChkKSkgeworICAgICAgICAgcVdhcm5pbmcoIlFSZWFkV3JpdGVMb2NrOiBkZXN0 cm95aW5nIGxvY2tlZCBRUmVhZFdyaXRlTG9jayIpOworICAgICAgICAgcmV0dXJuOworQEAgLTQ0 NSw3ICs0NDUsNyBAQCB2b2lkIFFSZWFkV3JpdGVMb2NrOjp1bmxvY2soKQorIC8qISBcaW50ZXJu YWwgIEhlbHBlciBmb3IgUVdhaXRDb25kaXRpb246OndhaXQgKi8KKyBRUmVhZFdyaXRlTG9jazo6 U3RhdGVGb3JXYWl0Q29uZGl0aW9uIFFSZWFkV3JpdGVMb2NrOjpzdGF0ZUZvcldhaXRDb25kaXRp b24oKSBjb25zdAorIHsKKy0gICAgUVJlYWRXcml0ZUxvY2tQcml2YXRlICpkID0gZF9wdHIubG9h ZFJlbGF4ZWQoKTsKKysgICAgUVJlYWRXcml0ZUxvY2tQcml2YXRlICpkID0gZF9wdHIubG9hZEFj cXVpcmUoKTsKKyAgICAgc3dpdGNoIChxdWludHB0cihkKSAmIFN0YXRlTWFzaykgeworICAgICBj YXNlIFN0YXRlTG9ja2VkRm9yUmVhZDogcmV0dXJuIExvY2tlZEZvclJlYWQ7CisgICAgIGNhc2Ug U3RhdGVMb2NrZWRGb3JXcml0ZTogcmV0dXJuIExvY2tlZEZvcldyaXRlOworQEAgLTQ1Myw2ICs0 NTMsNyBAQCBRUmVhZFdyaXRlTG9jazo6U3RhdGVGb3JXYWl0Q29uZGl0aW9uIFFSZWFkV3JpdGVM b2NrOjpzdGF0ZUZvcldhaXRDb25kaXRpb24oKSBjbworIAorICAgICBpZiAoIWQpCisgICAgICAg ICByZXR1cm4gVW5sb2NrZWQ7CisrICAgIGNvbnN0IGF1dG8gbG9jayA9IHF0X3Njb3BlZF9sb2Nr KGQtPm11dGV4KTsKKyAgICAgaWYgKGQtPndyaXRlckNvdW50ID4gMSkKKyAgICAgICAgIHJldHVy biBSZWN1cnNpdmVseUxvY2tlZDsKKyAgICAgZWxzZSBpZiAoZC0+d3JpdGVyQ291bnQgPT0gMSkK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FzZW1hcGhvcmUuY3BwIGIv cXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xc2VtYXBob3JlLmNwcAoraW5kZXggMWQwMWZjMWIy OC4uM2VjZGVlMzc0NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXNl bWFwaG9yZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXNlbWFwaG9yZS5j cHAKK0BAIC0zNTQsNyArMzU0LDEyIEBAIHZvaWQgUVNlbWFwaG9yZTo6cmVsZWFzZShpbnQgbikK KyAgICAgICAgIHF1aW50cHRyIG5uID0gdW5zaWduZWQobik7CisgICAgICAgICBpZiAoZnV0ZXhI YXNXYWl0ZXJDb3VudCkKKyAgICAgICAgICAgICBubiB8PSBxdWludDY0KG5uKSA8PCAzMjsgICAg Ly8gdG9rZW4gY291bnQgcmVwbGljYXRlZCBpbiBoaWdoIHdvcmQKKy0gICAgICAgIHF1aW50cHRy IHByZXZWYWx1ZSA9IHUuZmV0Y2hBbmRBZGRSZWxlYXNlKG5uKTsKKysgICAgICAgIHF1aW50cHRy IHByZXZWYWx1ZSA9IHUubG9hZFJlbGF4ZWQoKTsKKysgICAgICAgIHF1aW50cHRyIG5ld1ZhbHVl OworKyAgICAgICAgZG8geyAvLyBsb29wIGp1c3QgdG8gZW5zdXJlIHRoZSBvcGVyYXRpb25zIGFy ZSBkb25lIGF0b21pY2FsbHkKKysgICAgICAgICAgICBuZXdWYWx1ZSA9IHByZXZWYWx1ZSArIG5u OworKyAgICAgICAgICAgIG5ld1ZhbHVlICY9IChmdXRleE5lZWRzV2FrZUFsbEJpdCAtIDEpOwor KyAgICAgICAgfSB3aGlsZSAoIXUudGVzdEFuZFNldFJlbGVhc2UocHJldlZhbHVlLCBuZXdWYWx1 ZSwgcHJldlZhbHVlKSk7CisgICAgICAgICBpZiAoZnV0ZXhOZWVkc1dha2UocHJldlZhbHVlKSkg eworICNpZmRlZiBGVVRFWF9PUAorICAgICAgICAgICAgIGlmIChmdXRleEhhc1dhaXRlckNvdW50 KSB7CitAQCAtMzc2LDcgKzM4MSw2IEBAIHZvaWQgUVNlbWFwaG9yZTo6cmVsZWFzZShpbnQgbikK KyAgICAgICAgICAgICAgICAgcXVpbnQzMiBvcGFyZyA9IDA7CisgICAgICAgICAgICAgICAgIHF1 aW50MzIgY21wID0gRlVURVhfT1BfQ01QX05FOworICAgICAgICAgICAgICAgICBxdWludDMyIGNt cGFyZyA9IDA7CistICAgICAgICAgICAgICAgIHUuZmV0Y2hBbmRBbmRSZWxlYXNlKGZ1dGV4TmVl ZHNXYWtlQWxsQml0IC0gMSk7CisgICAgICAgICAgICAgICAgIGZ1dGV4V2FrZU9wKCpmdXRleExv dzMyKCZ1KSwgbiwgSU5UX01BWCwgKmZ1dGV4SGlnaDMyKCZ1KSwgRlVURVhfT1Aob3AsIG9wYXJn LCBjbXAsIGNtcGFyZykpOworICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg fQorQEAgLTM4OCw3ICszOTIsNiBAQCB2b2lkIFFTZW1hcGhvcmU6OnJlbGVhc2UoaW50IG4pCisg ICAgICAgICAgICAgLy8gICAgaXRzIGFjcXVpc2l0aW9uIGFueXdheSwgc28gaXQgaGFzIHRvIHdh aXQ7CisgICAgICAgICAgICAgLy8gMikgaXQgZGlkIG5vdCBzZWUgdGhlIG5ldyBjb3VudGVyIHZh bHVlLCBpbiB3aGljaCBjYXNlIGl0cworICAgICAgICAgICAgIC8vICAgIGZ1dGV4V2FpdCB3aWxs IGZhaWwuCistICAgICAgICAgICAgdS5mZXRjaEFuZEFuZFJlbGVhc2UoZnV0ZXhOZWVkc1dha2VB bGxCaXQgLSAxKTsKKyAgICAgICAgICAgICBpZiAoZnV0ZXhIYXNXYWl0ZXJDb3VudCkgeworICAg ICAgICAgICAgICAgICBmdXRleFdha2VBbGwoKmZ1dGV4TG93MzIoJnUpKTsKKyAgICAgICAgICAg ICAgICAgZnV0ZXhXYWtlQWxsKCpmdXRleEhpZ2gzMigmdSkpOworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhy ZWFkL3F0aHJlYWRfcC5oCitpbmRleCBiMmQxNjI4ZTZlLi5mMzJmNmYwNDYwIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaAorKysrIGIvcXRiYXNlL3Ny Yy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaAorQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6 CisgICAgIGludCByZXR1cm5Db2RlOworIAorICAgICB1aW50IHN0YWNrU2l6ZTsKKy0gICAgUVRo cmVhZDo6UHJpb3JpdHkgcHJpb3JpdHk7CisrICAgIHN0ZDo6dW5kZXJseWluZ190eXBlPFFUaHJl YWQ6OlByaW9yaXR5Pjo6dHlwZSBwcmlvcml0eTsKKyAKKyAgICAgc3RhdGljIFFUaHJlYWQgKnRo cmVhZEZvcklkKGludCBpZCk7CisgCitAQCAtMjEzLDYgKzIxMywxMyBAQCBwdWJsaWM6CisgICAg ICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6aW5zdGFuY2UoKS0+cG9zdEV2ZW50KHFfcHRyLCBu ZXcgUUV2ZW50KFFFdmVudDo6UXVpdCkpOworICAgICAgICAgfQorICAgICB9CisrCisrI2lmbmRl ZiBRX09TX0lOVEVHUklUWQorK3ByaXZhdGU6CisrICAgIC8vIFVzZWQgaW4gUVRocmVhZChQcml2 YXRlKTo6c3RhcnQgdG8gYXZvaWQgcmFjeSBhY2Nlc3MgdG8gUU9iamVjdDo6b2JqZWN0TmFtZSwK KysgICAgLy8gdW5zZXQgYWZ0ZXJ3YXJkcy4gT24gSU5URUdSSVRZIHdlIHNldCB0aGUgdGhyZWFk IG5hbWUgYmVmb3JlIHN0YXJ0aW5nIGl0LgorKyAgICBRU3RyaW5nIG9iamVjdE5hbWU7CisrI2Vu ZGlmCisgfTsKKyAKKyAjZWxzZSAvLyBRVF9DT05GSUcodGhyZWFkKQorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF91bml4LmNwcCBiL3F0YmFzZS9zcmMvY29y ZWxpYi90aHJlYWQvcXRocmVhZF91bml4LmNwcAoraW5kZXggNTZhOGUwYTAzOC4uNjEwMTE3YTY0 MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF91bml4LmNw cAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3VuaXguY3BwCitAQCAt MTY5LDggKzE2OSw3IEBAIHN0YXRpYyB2b2lkIHNldF90aHJlYWRfZGF0YShRVGhyZWFkRGF0YSAq ZGF0YSkKKyAKKyBzdGF0aWMgdm9pZCBjbGVhcl90aHJlYWRfZGF0YSgpCisgeworLSAgICBjdXJy ZW50VGhyZWFkRGF0YSA9IG51bGxwdHI7CistICAgIHB0aHJlYWRfc2V0c3BlY2lmaWMoY3VycmVu dF90aHJlYWRfZGF0YV9rZXksIG51bGxwdHIpOworKyAgICBzZXRfdGhyZWFkX2RhdGEobnVsbHB0 cik7CisgfQorIAorIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorQEAgLTI5Niw3ICsyOTUsNyBAQCB2 b2lkICpRVGhyZWFkUHJpdmF0ZTo6c3RhcnQodm9pZCAqYXJnKQorICAgICAgICAgICAgIFFNdXRl eExvY2tlciBsb2NrZXIoJnRoci0+ZF9mdW5jKCktPm11dGV4KTsKKyAKKyAgICAgICAgICAgICAv LyBkbyB3ZSBuZWVkIHRvIHJlc2V0IHRoZSB0aHJlYWQgcHJpb3JpdHk/CistICAgICAgICAgICAg aWYgKGludCh0aHItPmRfZnVuYygpLT5wcmlvcml0eSkgJiBUaHJlYWRQcmlvcml0eVJlc2V0Rmxh ZykgeworKyAgICAgICAgICAgIGlmICh0aHItPmRfZnVuYygpLT5wcmlvcml0eSAmIFRocmVhZFBy aW9yaXR5UmVzZXRGbGFnKSB7CisgICAgICAgICAgICAgICAgIHRoci0+ZF9mdW5jKCktPnNldFBy aW9yaXR5KFFUaHJlYWQ6OlByaW9yaXR5KHRoci0+ZF9mdW5jKCktPnByaW9yaXR5ICYgflRocmVh ZFByaW9yaXR5UmVzZXRGbGFnKSk7CisgICAgICAgICAgICAgfQorIAorQEAgLTMxNiwxMCArMzE1 LDEwIEBAIHZvaWQgKlFUaHJlYWRQcml2YXRlOjpzdGFydCh2b2lkICphcmcpCisgICAgICAgICAg ICAgLy8gU2V0cyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0aHJlYWQuIFdlIGNhbiBvbmx5IGRv IHRoaXMKKyAgICAgICAgICAgICAvLyB3aGVuIHRoZSB0aHJlYWQgaXMgc3RhcnRpbmcsIGFzIHdl IGRvbid0IGhhdmUgYSBjcm9zcworICAgICAgICAgICAgIC8vIHBsYXRmb3JtIHdheSBvZiBzZXR0 aW5nIHRoZSBuYW1lIG9mIGFuIGFyYml0cmFyeSB0aHJlYWQuCistICAgICAgICAgICAgaWYgKFFf TElLRUxZKHRoci0+b2JqZWN0TmFtZSgpLmlzRW1wdHkoKSkpCisrICAgICAgICAgICAgaWYgKFFf TElLRUxZKHRoci0+ZF9mdW5jKCktPm9iamVjdE5hbWUuaXNFbXB0eSgpKSkKKyAgICAgICAgICAg ICAgICAgc2V0Q3VycmVudFRocmVhZE5hbWUodGhyLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgp KTsKKyAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUaHJlYWRO YW1lKHRoci0+b2JqZWN0TmFtZSgpLnRvTG9jYWw4Qml0KCkpOworKyAgICAgICAgICAgICAgICBz ZXRDdXJyZW50VGhyZWFkTmFtZShzdGQ6OmV4Y2hhbmdlKHRoci0+ZF9mdW5jKCktPm9iamVjdE5h bWUsIHt9KS50b0xvY2FsOEJpdCgpKTsKKyAgICAgICAgIH0KKyAjZW5kaWYKKyAKK0BAIC02NzEs NyArNjcwLDcgQEAgdm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAgICAg ICAgICAgICAgICAgLy8gY291bGQgbm90IHNldCBzY2hlZHVsaW5nIGhpbnRzLCBmYWxsYmFjayB0 byBpbmhlcml0aW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgLy8gd2UnbGwgdHJ5IGFnYWluIGZy b20gaW5zaWRlIHRoZSB0aHJlYWQKKyAgICAgICAgICAgICAgICAgcHRocmVhZF9hdHRyX3NldGlu aGVyaXRzY2hlZCgmYXR0ciwgUFRIUkVBRF9JTkhFUklUX1NDSEVEKTsKKy0gICAgICAgICAgICAg ICAgZC0+cHJpb3JpdHkgPSBQcmlvcml0eShwcmlvcml0eSB8IFRocmVhZFByaW9yaXR5UmVzZXRG bGFnKTsKKysgICAgICAgICAgICAgICAgZC0+cHJpb3JpdHkgPSBzdGF0aWNfY2FzdDxzdGQ6OnVu ZGVybHlpbmdfdHlwZTxRVGhyZWFkOjpQcmlvcml0eT46OnR5cGU+KHByaW9yaXR5KSB8IFRocmVh ZFByaW9yaXR5UmVzZXRGbGFnOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgIH0KK0BAIC03MDIsNyArNzAxLDEwIEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJp b3JpdHkgcHJpb3JpdHkpCisgICAgICAgICBwdGhyZWFkX2F0dHJfc2V0dGhyZWFkbmFtZSgmYXR0 ciwgbWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSk7CisgICAgIGVsc2UKKyAgICAgICAgIHB0aHJl YWRfYXR0cl9zZXR0aHJlYWRuYW1lKCZhdHRyLCBvYmplY3ROYW1lKCkudG9Mb2NhbDhCaXQoKSk7 CisrI2Vsc2UKKysgICAgZC0+b2JqZWN0TmFtZSA9IG9iamVjdE5hbWUoKTsKKyAjZW5kaWYKKysK KyAgICAgcHRocmVhZF90IHRocmVhZElkOworICAgICBpbnQgY29kZSA9IHB0aHJlYWRfY3JlYXRl KCZ0aHJlYWRJZCwgJmF0dHIsIFFUaHJlYWRQcml2YXRlOjpzdGFydCwgdGhpcyk7CisgICAgIGlm IChjb2RlID09IEVQRVJNKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVh ZC9xdGhyZWFkX3dpbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfd2lu LmNwcAoraW5kZXggYmM3MGUzMTc4YS4uNGU3Njk3MjQ5OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF93aW4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3F0aHJlYWRfd2luLmNwcAorQEAgLTM5NCwxMCArMzk0LDkgQEAgdW5zaWduZWQg aW50IF9fc3RkY2FsbCBRVF9FTlNVUkVfU1RBQ0tfQUxJR05FRF9GT1JfU1NFIFFUaHJlYWRQcml2 YXRlOjpzdGFydCh2b2kKKyAKKyAjaWYgIWRlZmluZWQoUVRfTk9fREVCVUcpICYmIGRlZmluZWQo UV9DQ19NU1ZDKSAmJiAhZGVmaW5lZChRX09TX1dJTlJUKQorICAgICAvLyBzZXRzIHRoZSBuYW1l IG9mIHRoZSBjdXJyZW50IHRocmVhZC4KKy0gICAgUUJ5dGVBcnJheSBvYmplY3ROYW1lID0gdGhy LT5vYmplY3ROYW1lKCkudG9Mb2NhbDhCaXQoKTsKKy0gICAgcXRfc2V0X3RocmVhZF9uYW1lKEhB TkRMRSgtMSksCistICAgICAgICAgICAgICAgICAgICAgICBvYmplY3ROYW1lLmlzRW1wdHkoKSA/ CistICAgICAgICAgICAgICAgICAgICAgICB0aHItPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkg OiBvYmplY3ROYW1lLmNvbnN0RGF0YSgpKTsKKysgICAgcXRfc2V0X3RocmVhZF9uYW1lKEhBTkRM RSgtMSksIHRoci0+ZF9mdW5jKCktPm9iamVjdE5hbWUuaXNFbXB0eSgpCisrICAgICAgICAgICAg ICAgICAgICAgICAgPyB0aHItPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkKKysgICAgICAgICAg ICAgICAgICAgICAgICA6IHN0ZDo6ZXhjaGFuZ2UodGhyLT5kX2Z1bmMoKS0+b2JqZWN0TmFtZSwg e30pLnRvTG9jYWw4Qml0KCkuY29uc3REYXRhKCkpOworICNlbmRpZgorIAorICAgICBlbWl0IHRo ci0+c3RhcnRlZChRVGhyZWFkOjpRUHJpdmF0ZVNpZ25hbCgpKTsKK0BAIC01MDMsNiArNTAyLDcg QEAgdm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAgICAgaWYgKGQtPnJ1 bm5pbmcpCisgICAgICAgICByZXR1cm47CisgCisrICAgIGQtPm9iamVjdE5hbWUgPSBvYmplY3RO YW1lKCk7CisgICAgIGQtPnJ1bm5pbmcgPSB0cnVlOworICAgICBkLT5maW5pc2hlZCA9IGZhbHNl OworICAgICBkLT5leGl0ZWQgPSBmYWxzZTsKK0BAIC01NDgsNyArNTQ4LDcgQEAgdm9pZCBRVGhy ZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAKKyAgICAgaW50IHByaW87CisgICAgIGQt PnByaW9yaXR5ID0gcHJpb3JpdHk7CistICAgIHN3aXRjaCAoZC0+cHJpb3JpdHkpIHsKKysgICAg c3dpdGNoIChwcmlvcml0eSkgeworICAgICBjYXNlIElkbGVQcmlvcml0eToKKyAgICAgICAgIHBy aW8gPSBUSFJFQURfUFJJT1JJVFlfSURMRTsKKyAgICAgICAgIGJyZWFrOworQEAgLTY4Niw3ICs2 ODYsNyBAQCB2b2lkIFFUaHJlYWRQcml2YXRlOjpzZXRQcmlvcml0eShRVGhyZWFkOjpQcmlvcml0 eSB0aHJlYWRQcmlvcml0eSkKKyAKKyAgICAgaW50IHByaW87CisgICAgIHByaW9yaXR5ID0gdGhy ZWFkUHJpb3JpdHk7CistICAgIHN3aXRjaCAocHJpb3JpdHkpIHsKKysgICAgc3dpdGNoICh0aHJl YWRQcmlvcml0eSkgeworICAgICBjYXNlIFFUaHJlYWQ6OklkbGVQcmlvcml0eToKKyAgICAgICAg IHByaW8gPSBUSFJFQURfUFJJT1JJVFlfSURMRTsKKyAgICAgICAgIGJyZWFrOworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRzYW5faW1wbC5oIGIvcXRiYXNlL3NyYy9j b3JlbGliL3RocmVhZC9xdHNhbl9pbXBsLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwMDAwLi41ODBhNzM4YjkxCistLS0gL2Rldi9udWxsCisrKysgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGhyZWFkL3F0c2FuX2ltcGwuaAorQEAgLTAsMCArMSwxMTUgQEAKKysvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9u LgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBLbGFyw6RsdmRhbGVucyBEYXRha29uc3VsdCBBQiwg YSBLREFCIEdyb3VwIGNvbXBhbnksIGluZm9Aa2RhYi5jb20sIGF1dGhvciBHaXVzZXBwZSBEJ0Fu Z2VsbyA8Z2l1c2VwcGUuZGFuZ2Vsb0BrZGFiLmNvbT4KKysqKiBDb250YWN0OiBodHRwczovL3d3 dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRD b3JlIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNF OkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRp bmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoq IGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRl ZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNl IHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0 d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5k IGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBm dXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93 d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3Vu ZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBp biB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xs b3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0 dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxl IG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJs aWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJh bAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHBy b3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFw cGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGlu Y2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBm b2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisrCisrI2lmbmRlZiBRVFNBTl9JTVBMX0gKKysjZGVmaW5lIFFU U0FOX0lNUExfSAorKworKyNpbmNsdWRlIDxRdENvcmUvcWdsb2JhbC5oPgorKworKyNpZiAoX19o YXNfZmVhdHVyZSh0aHJlYWRfc2FuaXRpemVyKSB8fCBkZWZpbmVkKF9fU0FOSVRJWkVfVEhSRUFE X18pKSAmJiBfX2hhc19pbmNsdWRlKDxzYW5pdGl6ZXIvdHNhbl9pbnRlcmZhY2UuaD4pCisrIyAg ZGVmaW5lIFFUX0JVSUxESU5HX1VOREVSX1RTQU4KKysjICBpbmNsdWRlIDxzYW5pdGl6ZXIvdHNh bl9pbnRlcmZhY2UuaD4KKysjZW5kaWYKKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKytuYW1l c3BhY2UgUXRUc2FuIHsKKysjaWZkZWYgUVRfQlVJTERJTkdfVU5ERVJfVFNBTgorK2lubGluZSB2 b2lkIGZ1dGV4QWNxdWlyZSh2b2lkICphZGRyLCB2b2lkICphZGRyMiA9IG51bGxwdHIpCisrewor KyAgICAvLyBBIGZ1dGV4IGNhbGwgZW5zdXJlcyB0b3RhbCBvcmRlcmluZyBvbiB0aGUgZnV0ZXgg d29yZHMKKysgICAgLy8gKGluIGVpdGhlciBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIGNhbGwp LiBJbnN0cnVjdCBUU0FOIGFjY29yZGluZ2x5LAorKyAgICAvLyBhcyBUU0FOIGRvZXMgbm90IHVu ZGVyc3RhbmQgdGhlIGZ1dGV4KDIpIHN5c2NhbGwgKG9yIGVxdWl2YWxlbnQpLgorKyAgICA6Ol9f dHNhbl9hY3F1aXJlKGFkZHIpOworKyAgICBpZiAoYWRkcjIpCisrICAgICAgICA6Ol9fdHNhbl9h Y3F1aXJlKGFkZHIyKTsKKyt9CisrCisraW5saW5lIHZvaWQgZnV0ZXhSZWxlYXNlKHZvaWQgKmFk ZHIsIHZvaWQgKmFkZHIyID0gbnVsbHB0cikKKyt7CisrICAgIGlmIChhZGRyMikKKysgICAgICAg IDo6X190c2FuX3JlbGVhc2UoYWRkcjIpOworKyAgICA6Ol9fdHNhbl9yZWxlYXNlKGFkZHIpOwor K30KKysKKytpbmxpbmUgdm9pZCBtdXRleFByZUxvY2sodm9pZCAqYWRkciwgdW5zaWduZWQgZmxh Z3MpCisreworKyAgICA6Ol9fdHNhbl9tdXRleF9wcmVfbG9jayhhZGRyLCBmbGFncyk7CisrfQor KworK2lubGluZSB2b2lkIG11dGV4UG9zdExvY2sodm9pZCAqYWRkciwgdW5zaWduZWQgZmxhZ3Ms IGludCByZWN1cnNpb24pCisreworKyAgICA6Ol9fdHNhbl9tdXRleF9wb3N0X2xvY2soYWRkciwg ZmxhZ3MsIHJlY3Vyc2lvbik7CisrfQorKworK2lubGluZSB2b2lkIG11dGV4UHJlVW5sb2NrKHZv aWQgKmFkZHIsIHVuc2lnbmVkIGZsYWdzKQorK3sKKysgICAgOjpfX3RzYW5fbXV0ZXhfcHJlX3Vu bG9jayhhZGRyLCBmbGFncyk7CisrfQorKworK2lubGluZSB2b2lkIG11dGV4UG9zdFVubG9jayh2 b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncykKKyt7CisrICAgIDo6X190c2FuX211dGV4X3Bvc3Rf dW5sb2NrKGFkZHIsIGZsYWdzKTsKKyt9CisrCisrZW51bSA6IHVuc2lnbmVkIHsKKysgICAgTXV0 ZXhXcml0ZVJlZW50cmFudCA9IDo6X190c2FuX211dGV4X3dyaXRlX3JlZW50cmFudCwKKysgICAg VHJ5TG9jayA9IDo6X190c2FuX211dGV4X3RyeV9sb2NrLAorKyAgICBUcnlMb2NrRmFpbGVkID0g OjpfX3RzYW5fbXV0ZXhfdHJ5X2xvY2tfZmFpbGVkLAorK307CisrI2Vsc2UKKytpbmxpbmUgdm9p ZCBmdXRleEFjcXVpcmUodm9pZCAqLCB2b2lkICogPSBudWxscHRyKSB7fQorK2lubGluZSB2b2lk IGZ1dGV4UmVsZWFzZSh2b2lkICosIHZvaWQgKiA9IG51bGxwdHIpIHt9CisrCisrZW51bSA6IHVu c2lnbmVkIHsKKysgICAgTXV0ZXhXcml0ZVJlZW50cmFudCwKKysgICAgVHJ5TG9jaywKKysgICAg VHJ5TG9ja0ZhaWxlZCwKKyt9OworK2lubGluZSB2b2lkIG11dGV4UHJlTG9jayh2b2lkICosIHVu c2lnbmVkKSB7fQorK2lubGluZSB2b2lkIG11dGV4UG9zdExvY2sodm9pZCAqLCB1bnNpZ25lZCwg aW50KSB7fQorK2lubGluZSB2b2lkIG11dGV4UHJlVW5sb2NrKHZvaWQgKiwgdW5zaWduZWQpIHt9 CisraW5saW5lIHZvaWQgbXV0ZXhQb3N0VW5sb2NrKHZvaWQgKiwgdW5zaWduZWQpIHt9CisrI2Vu ZGlmIC8vIFFUX0JVSUxESU5HX1VOREVSX1RTQU4KKyt9IC8vIG5hbWVzcGFjZSBRdFRzYW4KKysK KytRVF9FTkRfTkFNRVNQQUNFCisrCisrI2VuZGlmIC8vIFFUU0FOX0lNUExfSAorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3BwCitpbmRleCA4 OGIwNThmNDEwLi4wZjFkYTRkYzliIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3Ro cmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Ro cmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcAorQEAgLTIxMyw3ICsyMTMsNyBAQCBib29sIFFX YWl0Q29uZGl0aW9uOjp3YWl0KFFNdXRleCAqbXV0ZXgsIFFEZWFkbGluZVRpbWVyIGRlYWRsaW5l KQorIHsKKyAgICAgaWYgKCEgbXV0ZXgpCisgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgIGlm IChtdXRleC0+aXNSZWN1cnNpdmUoKSkgeworKyAgICBpZiAoc3RhdGljX2Nhc3Q8UUJhc2ljTXV0 ZXggKj4obXV0ZXgpLT5pc1JlY3Vyc2l2ZSgpKSB7CisgICAgICAgICBxV2FybmluZygiUVdhaXRD b25kaXRpb246IGNhbm5vdCB3YWl0IG9uIHJlY3Vyc2l2ZSBtdXRleGVzIik7CisgICAgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGlt ZS9xZGF0ZXRpbWUuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcWRhdGV0aW1lLmNwcAor aW5kZXggZWMxMjU2OWUzZi4uMmMwYjA5ODA3OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29y ZWxpYi90aW1lL3FkYXRldGltZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3Fk YXRldGltZS5jcHAKK0BAIC00Myw2ICs0Myw3IEBACisgI2lmIFFUX0NPTkZJRyhkYXRldGltZXBh cnNlcikKKyAjaW5jbHVkZSAicHJpdmF0ZS9xZGF0ZXRpbWVwYXJzZXJfcC5oIgorICNlbmRpZgor KyNpbmNsdWRlIDxwcml2YXRlL3FudW1lcmljX3AuaD4KKyAKKyAjaW5jbHVkZSAicWRhdGFzdHJl YW0uaCIKKyAjaW5jbHVkZSAicXNldC5oIgorQEAgLTE0MjksOSArMTQzMCwxMSBAQCBRRGF0ZSBR RGF0ZTo6YWRkRGF5cyhxaW50NjQgbmRheXMpIGNvbnN0CisgICAgIGlmIChpc051bGwoKSkKKyAg ICAgICAgIHJldHVybiBRRGF0ZSgpOworIAorLSAgICAvLyBEdWUgdG8gbGltaXRzIG9uIG1pbkpk KCkgYW5kIG1heEpkKCkgd2Uga25vdyB0aGF0IGFueSBvdmVyZmxvdworLSAgICAvLyB3aWxsIGJl IGludmFsaWQgYW5kIGNhdWdodCBieSBmcm9tSnVsaWFuRGF5KCkuCistICAgIHJldHVybiBmcm9t SnVsaWFuRGF5KGpkICsgbmRheXMpOworKyAgICBxaW50NjQgcjsKKysgICAgaWYgKFFfVU5MSUtF TFkoYWRkX292ZXJmbG93KGpkLCBuZGF5cywgJnIpKSkKKysgICAgICAgIHJldHVybiBRRGF0ZSgp OworKyAgICBlbHNlCisrICAgICAgICByZXR1cm4gZnJvbUp1bGlhbkRheShyKTsKKyB9CisgCisg LyohCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lLmNwcCBi L3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZS5jcHAKK2luZGV4IDAzMDllNDNlNTIu LjNkNDUxNjk2YTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpv bmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUuY3BwCitAQCAt MSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqCistKiogQ29weXJpZ2h0IChD KSAyMDEzIEpvaG4gTGF5dCA8amxheXRAa2RlLm9yZz4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjAg Sm9obiBMYXl0IDxqbGF5dEBrZGUub3JnPgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0Lmlv L2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdENvcmUgbW9k dWxlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTk3NSw5ICs5NzUsMTUgQEAgUUxpc3Q8UUJ5dGVB cnJheT4gUVRpbWVab25lOjp3aW5kb3dzSWRUb0lhbmFJZHMoY29uc3QgUUJ5dGVBcnJheSAmd2lu ZG93c0lkLAorIH0KKyAKKyAjaWZuZGVmIFFUX05PX0RBVEFTVFJFQU0KKysvLyBJbnZhbGlkLCBh cyBhbiBJQU5BIElEOiB0b28gbG9uZywgc3RhcnRzIHdpdGggLSBhbmQgaGFzIG90aGVyIGludmFs aWQgY2hhcmFjdGVycyBpbiBpdAorK3N0YXRpYyBpbmxpbmUgUVN0cmluZyBpbnZhbGlkSWQoKSB7 IHJldHVybiBRU3RyaW5nTGl0ZXJhbCgiLU5vIFRpbWUgWm9uZSBTcGVjaWZpZWQhIik7IH0KKysK KyBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChRRGF0YVN0cmVhbSAmZHMsIGNvbnN0IFFUaW1lWm9u ZSAmdHopCisgeworLSAgICB0ei5kLT5zZXJpYWxpemUoZHMpOworKyAgICBpZiAodHouaXNWYWxp ZCgpKQorKyAgICAgICAgdHouZC0+c2VyaWFsaXplKGRzKTsKKysgICAgZWxzZQorKyAgICAgICAg ZHMgPDwgaW52YWxpZElkKCk7CisgICAgIHJldHVybiBkczsKKyB9CisgCitAQCAtOTg1LDcgKzk5 MSw5IEBAIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KFFEYXRhU3RyZWFtICZkcywgUVRpbWVab25l ICZ0eikKKyB7CisgICAgIFFTdHJpbmcgaWFuYUlkOworICAgICBkcyA+PiBpYW5hSWQ7CistICAg IGlmIChpYW5hSWQgPT0gUUxhdGluMVN0cmluZygiT2Zmc2V0RnJvbVV0YyIpKSB7CisrICAgIGlm IChpYW5hSWQgPT0gaW52YWxpZElkKCkpIHsKKysgICAgICAgIHR6ID0gUVRpbWVab25lKCk7Cisr ICAgIH0gZWxzZSBpZiAoaWFuYUlkID09IFFMYXRpbjFTdHJpbmcoIk9mZnNldEZyb21VdGMiKSkg eworICAgICAgICAgaW50IHV0Y09mZnNldDsKKyAgICAgICAgIFFTdHJpbmcgbmFtZTsKKyAgICAg ICAgIFFTdHJpbmcgYWJicmV2aWF0aW9uOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxp Yi90aW1lL3F0aW1lem9uZXByaXZhdGVfdHouY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUv cXRpbWV6b25lcHJpdmF0ZV90ei5jcHAKK2luZGV4IGIxNjExZDdkZGIuLmE3YTZhNzJjY2YgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2YXRlX3R6LmNw cAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lcHJpdmF0ZV90ei5jcHAK K0BAIC00Miw2ICs0Miw3IEBACisgI2luY2x1ZGUgInF0aW1lem9uZS5oIgorICNpbmNsdWRlICJx dGltZXpvbmVwcml2YXRlX3AuaCIKKyAjaW5jbHVkZSAicHJpdmF0ZS9xbG9jYWxlX3Rvb2xzX3Au aCIKKysjaW5jbHVkZSAicHJpdmF0ZS9xbG9ja2luZ19wLmgiCisgCisgI2luY2x1ZGUgPFF0Q29y ZS9RRGF0YVN0cmVhbT4KKyAjaW5jbHVkZSA8UXRDb3JlL1FEYXRlVGltZT4KK0BAIC02Miw2ICs2 MywxMCBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorKyNpZiBRVF9DT05GSUcoaWN1KQor K3N0YXRpYyBRQmFzaWNNdXRleCBzX2ljdV9tdXRleDsKKysjZW5kaWYKKysKKyAvKgorICAgICBQ cml2YXRlCisgCitAQCAtNjcwLDYgKzY3NSw5IEBAIFFUelRpbWVab25lUHJpdmF0ZTo6flFUelRp bWVab25lUHJpdmF0ZSgpCisgCisgUVR6VGltZVpvbmVQcml2YXRlICpRVHpUaW1lWm9uZVByaXZh dGU6OmNsb25lKCkgY29uc3QKKyB7CisrI2lmIFFUX0NPTkZJRyhpY3UpCisrICAgIGNvbnN0IGF1 dG8gbG9jayA9IHF0X3Njb3BlZF9sb2NrKHNfaWN1X211dGV4KTsKKysjZW5kaWYKKyAgICAgcmV0 dXJuIG5ldyBRVHpUaW1lWm9uZVByaXZhdGUoKnRoaXMpOworIH0KKyAKK0BAIC05MTMsMTIgKzky MSwxNCBAQCBRU3RyaW5nIFFUelRpbWVab25lUHJpdmF0ZTo6ZGlzcGxheU5hbWUocWludDY0IGF0 TVNlY3NTaW5jZUVwb2NoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBRTG9jYWxlICZsb2NhbGUpIGNvbnN0CisgeworICNpZiBRVF9DT05GSUcoaWN1KQor KyAgICBhdXRvIGxvY2sgPSBxdF91bmlxdWVfbG9jayhzX2ljdV9tdXRleCk7CisgICAgIGlmICgh bV9pY3UpCisgICAgICAgICBtX2ljdSA9IG5ldyBRSWN1VGltZVpvbmVQcml2YXRlKG1faWQpOwor ICAgICAvLyBUT0RPIHNtYWxsIHJpc2sgbWF5IG5vdCBtYXRjaCBpZiB0cmFuIHRpbWVzIGRpZmZl ciBkdWUgdG8gb3V0ZGF0ZWQgZmlsZXMKKyAgICAgLy8gVE9ETyBTb21lIHZhbGlkIFRaIG5hbWVz IGFyZSBub3QgdmFsaWQgSUNVIG5hbWVzLCB1c2UgdHJhbnNsYXRpb24gdGFibGU/CisgICAgIGlm IChtX2ljdS0+aXNWYWxpZCgpKQorICAgICAgICAgcmV0dXJuIG1faWN1LT5kaXNwbGF5TmFtZShh dE1TZWNzU2luY2VFcG9jaCwgbmFtZVR5cGUsIGxvY2FsZSk7CisrICAgIGxvY2sudW5sb2NrKCk7 CisgI2Vsc2UKKyAgICAgUV9VTlVTRUQobmFtZVR5cGUpCisgICAgIFFfVU5VU0VEKGxvY2FsZSkK K0BAIC05MzIsMTIgKzk0MiwxNCBAQCBRU3RyaW5nIFFUelRpbWVab25lUHJpdmF0ZTo6ZGlzcGxh eU5hbWUoUVRpbWVab25lOjpUaW1lVHlwZSB0aW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUxvY2FsZSAmbG9jYWxlKSBjb25zdAorIHsKKyAj aWYgUVRfQ09ORklHKGljdSkKKysgICAgYXV0byBsb2NrID0gcXRfdW5pcXVlX2xvY2soc19pY3Vf bXV0ZXgpOworICAgICBpZiAoIW1faWN1KQorICAgICAgICAgbV9pY3UgPSBuZXcgUUljdVRpbWVa b25lUHJpdmF0ZShtX2lkKTsKKyAgICAgLy8gVE9ETyBzbWFsbCByaXNrIG1heSBub3QgbWF0Y2gg aWYgdHJhbiB0aW1lcyBkaWZmZXIgZHVlIHRvIG91dGRhdGVkIGZpbGVzCisgICAgIC8vIFRPRE8g U29tZSB2YWxpZCBUWiBuYW1lcyBhcmUgbm90IHZhbGlkIElDVSBuYW1lcywgdXNlIHRyYW5zbGF0 aW9uIHRhYmxlPworICAgICBpZiAobV9pY3UtPmlzVmFsaWQoKSkKKyAgICAgICAgIHJldHVybiBt X2ljdS0+ZGlzcGxheU5hbWUodGltZVR5cGUsIG5hbWVUeXBlLCBsb2NhbGUpOworKyAgICBsb2Nr LnVubG9jaygpOworICNlbHNlCisgICAgIFFfVU5VU0VEKHRpbWVUeXBlKQorICAgICBRX1VOVVNF RChuYW1lVHlwZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWFycmF5 ZGF0YS5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FhcnJheWRhdGEuaAoraW5kZXggZGNk OTU5MjRjMS4uZDAxNzM5ZTdlNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29s cy9xYXJyYXlkYXRhLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xYXJyYXlkYXRh LmgKK0BAIC00Miw2ICs0Miw3IEBACisgCisgI2luY2x1ZGUgPFF0Q29yZS9xcmVmY291bnQuaD4K KyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPGNzdGRpbnQ+CisgCisgUVRfQkVHSU5f TkFNRVNQQUNFCisgCitAQCAtNTgsMTQgKzU5LDE0IEBAIHN0cnVjdCBRX0NPUkVfRVhQT1JUIFFB cnJheURhdGEKKyAgICAgeworICAgICAgICAgUV9BU1NFUlQoc2l6ZSA9PSAwCisgICAgICAgICAg ICAgICAgIHx8IG9mZnNldCA8IDAgfHwgc2l6ZV90KG9mZnNldCkgPj0gc2l6ZW9mKFFBcnJheURh dGEpKTsKKy0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIgKj4odGhpcykgKyBv ZmZzZXQ7CisrICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+IChyZWludGVy cHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykgKyBvZmZzZXQpOworICAgICB9CisgCisgICAgIGNv bnN0IHZvaWQgKmRhdGEoKSBjb25zdAorICAgICB7CisgICAgICAgICBRX0FTU0VSVChzaXplID09 IDAKKyAgICAgICAgICAgICAgICAgfHwgb2Zmc2V0IDwgMCB8fCBzaXplX3Qob2Zmc2V0KSA+PSBz aXplb2YoUUFycmF5RGF0YSkpOworLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u c3QgY2hhciAqPih0aGlzKSArIG9mZnNldDsKKysgICAgICAgIHJldHVybiByZWludGVycHJldF9j YXN0PHZvaWQgKj4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSArIG9mZnNldCk7 CisgICAgIH0KKyAKKyAgICAgLy8gVGhpcyByZWZlcnMgdG8gYXJyYXkgZGF0YSBtdXRhYmlsaXR5 LCBub3QgImhlYWRlciBkYXRhIiByZXByZXNlbnRlZCBieQorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvY29yZWxpYi90b29scy9xZnJlZWxpc3RfcC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xz L3FmcmVlbGlzdF9wLmgKK2luZGV4IDViYTIzYjM0NGIuLjk5NzQxMDIxMzYgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3AuaAorKysrIGIvcXRiYXNlL3Ny Yy9jb3JlbGliL3Rvb2xzL3FmcmVlbGlzdF9wLmgKK0BAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3Mg UUZyZWVMaXN0CisgICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgIHggLT0g c2l6ZTsKKyAgICAgICAgIH0KKy0gICAgICAgIFFfQVNTRVJUKGZhbHNlKTsKKysgICAgICAgIFFf VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorIAorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51bWJlci5oIGIvcXRiYXNlL3Ny Yy9jb3JlbGliL3Rvb2xzL3F2ZXJzaW9ubnVtYmVyLmgKK2luZGV4IGQ0M2I4NmJhNTEuLjI4NDNm MmIwNDMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcXZlcnNpb25udW1i ZXIuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3F2ZXJzaW9ubnVtYmVyLmgKK0BA IC0yNzMsMTAgKzI3MywxMCBAQCBwdWJsaWM6CisgCisgICAgIFFfUkVRVUlSRURfUkVTVUxUIFFf Q09SRV9FWFBPUlQgUVN0cmluZyB0b1N0cmluZygpIGNvbnN0OworICNpZiBRVF9TVFJJTkdWSUVX X0xFVkVMIDwgMgorLSAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBR X0RFQ0xfUFVSRV9GVU5DVElPTiBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKGNvbnN0IFFTdHJp bmcgJnN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworKyAgICBRX1JFUVVJUkVE X1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKGNv bnN0IFFTdHJpbmcgJnN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworICNlbmRp ZgorLSAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRX0RFQ0xfUFVS RV9GVU5DVElPTiBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKFFMYXRpbjFTdHJpbmcgc3RyaW5n LCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CistICAgIFFfUkVRVUlSRURfUkVTVUxUIFFf Q09SRV9FWFBPUlQgc3RhdGljIFFfREVDTF9QVVJFX0ZVTkNUSU9OIFFWZXJzaW9uTnVtYmVyIGZy b21TdHJpbmcoUVN0cmluZ1ZpZXcgc3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7 CisrICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFWZXJzaW9uTnVt YmVyIGZyb21TdHJpbmcoUUxhdGluMVN0cmluZyBzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBu dWxscHRyKTsKKysgICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUVZl cnNpb25OdW1iZXIgZnJvbVN0cmluZyhRU3RyaW5nVmlldyBzdHJpbmcsIGludCAqc3VmZml4SW5k ZXggPSBudWxscHRyKTsKKyAKKyBwcml2YXRlOgorICNpZm5kZWYgUVRfTk9fREFUQVNUUkVBTQor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3BwIGIvcXRiYXNl L3NyYy9kYnVzL3FkYnVzaW50ZWdyYXRvci5jcHAKK2luZGV4IDViNjZjZTk3MWIuLjI4YTNiMGZm ZWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNpbnRlZ3JhdG9yLmNwcAorKysr IGIvcXRiYXNlL3NyYy9kYnVzL3FkYnVzaW50ZWdyYXRvci5jcHAKK0BAIC0xMTM1LDcgKzExMzUs MTMgQEAgdm9pZCBRREJ1c0Nvbm5lY3Rpb25Qcml2YXRlOjpjbG9zZUNvbm5lY3Rpb24oKQorICAg ICAgICAgfQorICAgICB9CisgCistICAgIHFEZWxldGVBbGwocGVuZGluZ0NhbGxzKTsKKysgICAg Zm9yIChhdXRvIGl0ID0gcGVuZGluZ0NhbGxzLmJlZ2luKCk7IGl0ICE9IHBlbmRpbmdDYWxscy5l bmQoKTsgKytpdCkgeworKyAgICAgICAgYXV0byBjYWxsID0gKml0OworKyAgICAgICAgaWYgKCFj YWxsLT5yZWYuZGVyZWYoKSkgeworKyAgICAgICAgICAgIGRlbGV0ZSBjYWxsOworKyAgICAgICAg fQorKyAgICB9CisrICAgIHBlbmRpbmdDYWxscy5jbGVhcigpOworIAorICAgICAvLyBEaXNjb25u ZWN0IGFsbCBzaWduYWxzIGZyb20gc2lnbmFsIGhvb2tzIGFuZCBmcm9tIHRoZSBvYmplY3QgdHJl ZSB0bworICAgICAvLyBhdm9pZCBRT2JqZWN0OjpkZXN0cm95ZWQgYmVpbmcgc2VudCB0byBkYnVz IGRhZW1vbiB0aHJlYWQgd2hpY2ggaGFzCitAQCAtMjU4NCw2ICsyNTkwLDExIEBAIFFEQnVzQ29u bmVjdGlvblByaXZhdGU6OmZpbmRNZXRhT2JqZWN0KGNvbnN0IFFTdHJpbmcgJnNlcnZpY2UsIGNv bnN0IFFTdHJpbmcgJnBhCisgICAgICAgICBpZiAobW8pCisgICAgICAgICAgICAgcmV0dXJuIG1v OworICAgICB9CisrICAgIGlmIChwYXRoLmlzRW1wdHkoKSkgeworKyAgICAgICAgZXJyb3IgPSBR REJ1c0Vycm9yKFFEQnVzRXJyb3I6OkludmFsaWRPYmplY3RQYXRoLCBRTGF0aW4xU3RyaW5nKCJP YmplY3QgcGF0aCBjYW5ub3QgYmUgZW1wdHkiKSk7CisrICAgICAgICBsYXN0RXJyb3IgPSBlcnJv cjsKKysgICAgICAgIHJldHVybiBudWxscHRyOworKyAgICB9CisgCisgICAgIC8vIGludHJvc3Bl Y3QgdGhlIHRhcmdldCBvYmplY3QKKyAgICAgUURCdXNNZXNzYWdlIG1zZyA9IFFEQnVzTWVzc2Fn ZTo6Y3JlYXRlTWV0aG9kQ2FsbChzZXJ2aWNlLCBwYXRoLAorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvZGJ1cy9xZGJ1c21ldGFvYmplY3QuY3BwIGIvcXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0YW9i amVjdC5jcHAKK2luZGV4IDUyNjU1NjhmNDIuLjdlOWYwZjFhY2MgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcAorKysrIGIvcXRiYXNlL3NyYy9kYnVzL3Fk YnVzbWV0YW9iamVjdC5jcHAKK0BAIC0yMTAsNiArMjEwLDkgQEAgUURCdXNNZXRhT2JqZWN0R2Vu ZXJhdG9yOjpmaW5kVHlwZShjb25zdCBRQnl0ZUFycmF5ICZzaWduYXR1cmUsCisgICAgICAgICB9 IGVsc2UgaWYgKHNpZ25hdHVyZSA9PSAiYXtzc30iKSB7CisgICAgICAgICAgICAgcmVzdWx0Lm5h bWUgPSAiUU1hcDxRU3RyaW5nLFFTdHJpbmc+IjsKKyAgICAgICAgICAgICB0eXBlID0gcU1ldGFU eXBlSWQ8UU1hcDxRU3RyaW5nLCBRU3RyaW5nPiA+KCk7CisrICAgICAgICB9IGVsc2UgaWYgKHNp Z25hdHVyZSA9PSAiYWF5IikgeworKyAgICAgICAgICAgIHJlc3VsdC5uYW1lID0gIlFCeXRlQXJy YXlMaXN0IjsKKysgICAgICAgICAgICB0eXBlID0gcU1ldGFUeXBlSWQ8UUJ5dGVBcnJheUxpc3Q+ KCk7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIHJlc3VsdC5uYW1lID0gIntELUJ1 cyB0eXBlIFwiIiArIHNpZ25hdHVyZSArICJcIn0iOworICAgICAgICAgICAgIHR5cGUgPSByZWdp c3RlckNvbXBsZXhEQnVzVHlwZShyZXN1bHQubmFtZSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9ndWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9hY2Nlc3Np YmxlL3FhY2Nlc3NpYmxlLmNwcAoraW5kZXggZDcwNWJmY2NiNS4uMGNhZjNjODA4YyAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFjY2Vzc2libGUuY3BwCisrKysgYi9x dGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlLmNwcAorQEAgLTU0LDYgKzU0LDcg QEAKKyAjaW5jbHVkZSA8UXRDb3JlL3FkZWJ1Zy5oPgorICNpbmNsdWRlIDxRdENvcmUvcWxvZ2dp bmdjYXRlZ29yeS5oPgorICNpbmNsdWRlIDxRdENvcmUvcW1ldGFvYmplY3QuaD4KKysjaW5jbHVk ZSA8UXRDb3JlL3ByaXZhdGUvcW1ldGFvYmplY3RfcC5oPgorICNpbmNsdWRlIDxRdENvcmUvcWhh c2guaD4KKyAjaW5jbHVkZSA8cHJpdmF0ZS9xZmFjdG9yeWxvYWRlcl9wLmg+CisgCitAQCAtNjgx LDYgKzY4MiwyNSBAQCBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGU6OnF1ZXJ5QWNj ZXNzaWJsZUludGVyZmFjZShRT2JqZWN0ICpvYmplY3QpCisgICAgIC8vIENyZWF0ZSBhIFFBY2Nl c3NpYmxlSW50ZXJmYWNlIGZvciB0aGUgb2JqZWN0IGNsYXNzLiBTdGFydCBieSB0aGUgbW9zdAor ICAgICAvLyBkZXJpdmVkIGNsYXNzIGFuZCB3YWxrIHVwIHRoZSBjbGFzcyBoaWVyYXJjaHkuCisg ICAgIGNvbnN0IFFNZXRhT2JqZWN0ICptbyA9IG9iamVjdC0+bWV0YU9iamVjdCgpOworKyAgICBj b25zdCBhdXRvICpvYmplY3RQcml2ID0gUU9iamVjdFByaXZhdGU6OmdldChvYmplY3QpOworKyAg ICAvKgorKyAgICAgV2UgZG8gbm90IHdhbnQgdG8gY2FjaGUgZWFjaCBhbmQgZXZlcnkgUU1MIG1l dGFvYmplY3QgKEJ1dHRvbl9RTUxUWVBFXzEyNCwKKysgICAgIEJ1dHRvbl9RTUxUWVBFXzEyNSwg ZXRjLikuIFRob3NlIGR5bmFtaWMgbWV0YW9iamVjdHMgc2hvdWxkbid0IGhhdmUgYW4KKysgICAg IGFjY2Vzc2libGUgaW50ZXJmYWNlIGluIGFueSBjYXNlLiBJbnN0ZWFkLCB3ZSBzdGFydCB0aGUg d2hvbGUgY2hlY2tpbmcKKysgICAgIHdpdGggdGhlIGZpcnN0IG5vbi1keW5hbWljIG1ldGEtb2Jq ZWN0LiBUbyBhdm9pZCBwb3RlbnRpYWwgcmVncmVzc2lvbnMKKysgICAgIGluIG90aGVyIGFyZWFz IG9mIFF0IHRoYXQgYWxzbyB1c2UgZHluYW1pYyBtZXRhb2JqZWN0cywgd2Ugb25seSBkbyB0aGlz CisrICAgICBmb3Igb2JqZWN0cyB0aGF0IGFyZSBRTUwtcmVsYXRlZCAoYXBwcm94aW1hdGVkIGJ5 IGNoZWNraW5nIHdoZXRoZXIgdGhleQorKyAgICAgaGF2ZSBkZGF0YSBzZXQpLgorKyAgICAqLwor KyAgICBjb25zdCBib29sIHFtbFJlbGF0ZWQgPSAhb2JqZWN0UHJpdi0+aXNEZWxldGluZ0NoaWxk cmVuICYmCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFByaXYtPmRlY2xhcmF0 aXZlRGF0YTsKKysgICAgd2hpbGUgKHFtbFJlbGF0ZWQgJiYgbW8pIHsKKysgICAgICAgIGF1dG8g bW9wID0gUU1ldGFPYmplY3RQcml2YXRlOjpnZXQobW8pOworKyAgICAgICAgaWYgKCFtb3AgfHwg IShtb3AtPmZsYWdzICYgRHluYW1pY01ldGFPYmplY3QpKQorKyAgICAgICAgICAgIGJyZWFrOwor KworKyAgICAgICAgbW8gPSBtby0+c3VwZXJDbGFzcygpOworKyAgICB9OworICAgICB3aGlsZSAo bW8pIHsKKyAgICAgICAgIGNvbnN0IFFTdHJpbmcgY24gPSBRTGF0aW4xU3RyaW5nKG1vLT5jbGFz c05hbWUoKSk7CisgCitAQCAtNjk2LDE0ICs3MTYsMTUgQEAgUUFjY2Vzc2libGVJbnRlcmZhY2Ug KlFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2UoUU9iamVjdCAqb2JqZWN0KQor ICAgICAgICAgLy8gRmluZCBhIFFBY2Nlc3NpYmxlUGx1Z2luIChmYWN0b3J5KSBmb3IgdGhlIGNs YXNzIG5hbWUuIElmIHRoZXJlJ3MKKyAgICAgICAgIC8vIG5vIGVudHJ5IGluIHRoZSBjYWNoZSB0 cnkgdG8gY3JlYXRlIGl0IHVzaW5nIHRoZSBwbHVnaW4gbG9hZGVyLgorICAgICAgICAgaWYgKCFx QWNjZXNzaWJsZVBsdWdpbnMoKS0+Y29udGFpbnMoY24pKSB7CisrICAgICAgICAgICAgUUFjY2Vz c2libGVQbHVnaW4gKmZhY3RvcnkgPSBudWxscHRyOyAvLyAwIG1lYW5zICJubyBwbHVnaW4gZm91 bmQiLiBUaGlzIGlzIGNhY2hlZCBhcyB3ZWxsLgorICAgICAgICAgICAgIGNvbnN0IGludCBpbmRl eCA9IGxvYWRlcigpLT5pbmRleE9mKGNuKTsKKy0gICAgICAgICAgICBpZiAoaW5kZXggIT0gLTEp IHsKKy0gICAgICAgICAgICAgICAgUUFjY2Vzc2libGVQbHVnaW4gKmZhY3RvcnkgPSBxb2JqZWN0 X2Nhc3Q8UUFjY2Vzc2libGVQbHVnaW4gKj4obG9hZGVyKCktPmluc3RhbmNlKGluZGV4KSk7Cist ICAgICAgICAgICAgICAgIHFBY2Nlc3NpYmxlUGx1Z2lucygpLT5pbnNlcnQoY24sIGZhY3Rvcnkp OworLSAgICAgICAgICAgIH0KKysgICAgICAgICAgICBpZiAoaW5kZXggIT0gLTEpCisrICAgICAg ICAgICAgICAgIGZhY3RvcnkgPSBxb2JqZWN0X2Nhc3Q8UUFjY2Vzc2libGVQbHVnaW4gKj4obG9h ZGVyKCktPmluc3RhbmNlKGluZGV4KSk7CisrICAgICAgICAgICAgcUFjY2Vzc2libGVQbHVnaW5z KCktPmluc2VydChjbiwgZmFjdG9yeSk7CisgICAgICAgICB9CisgCisgICAgICAgICAvLyBBdCB0 aGlzIHBvaW50IHRoZSBjYWNoZSBzaG91bGQgY29udGFpbiBhIHZhbGlkIGZhY3RvcnkgcG9pbnRl ciBvciAwOgorKyAgICAgICAgUV9BU1NFUlQocUFjY2Vzc2libGVQbHVnaW5zKCktPmNvbnRhaW5z KGNuKSk7CisgICAgICAgICBRQWNjZXNzaWJsZVBsdWdpbiAqZmFjdG9yeSA9IHFBY2Nlc3NpYmxl UGx1Z2lucygpLT52YWx1ZShjbik7CisgICAgICAgICBpZiAoZmFjdG9yeSkgeworICAgICAgICAg ICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpyZXN1bHQgPSBmYWN0b3J5LT5jcmVhdGUoY24sIG9i amVjdCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJlLmpzb24gYi9xdGJh c2Uvc3JjL2d1aS9jb25maWd1cmUuanNvbgoraW5kZXggMWYwODc5NWM1Ny4uMTJjOTU3NDJkMiAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3VyZS5qc29uCisrKysgYi9xdGJhc2Uv c3JjL2d1aS9jb25maWd1cmUuanNvbgorQEAgLTgzNCw3ICs4MzQsOCBAQAorICAgICAgICAgICAg ICAgICAgICAgIi8vIGVtYmVkZGVkIGRldmljZXMsIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgdXNl ZCB0b2dldGhlciB3aXRoIFguIEVHTCBzdXBwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICIv LyBoYXMgdG8gYmUgZGlzYWJsZWQgaW4gcGx1Z2lucyBsaWtlIHhjYiBpbiB0aGlzIGNhc2Ugc2lu Y2UgdGhlIG5hdGl2ZSBkaXNwbGF5LCIsCisgICAgICAgICAgICAgICAgICAgICAiLy8gd2luZG93 IGFuZCBwaXhtYXAgdHlwZXMgd2lsbCBiZSBkaWZmZXJlbnQgdGhhbiB3aGF0IGFuIFgtYmFzZWQg cGxhdGZvcm0iLAorLSAgICAgICAgICAgICAgICAgICAgIi8vIHBsdWdpbiB3b3VsZCBleHBlY3Qu IgorKyAgICAgICAgICAgICAgICAgICAgIi8vIHBsdWdpbiB3b3VsZCBleHBlY3QuIiwKKysgICAg ICAgICAgICAgICAgICAgICIjZGVmaW5lIFVTRV9YMTEiCisgICAgICAgICAgICAgICAgIF0sCisg ICAgICAgICAgICAgICAgICJpbmNsdWRlIjogWyAiRUdML2VnbC5oIiwgIlgxMS9YbGliLmgiIF0s CisgICAgICAgICAgICAgICAgICJtYWluIjogWworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3Vp L2ltYWdlL3FibXBoYW5kbGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FibXBoYW5kbGVy LmNwcAoraW5kZXggOTZmMWU4Y2IxZC4uMGU3M2JiYmRiMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvZ3VpL2ltYWdlL3FibXBoYW5kbGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvaW1hZ2Uv cWJtcGhhbmRsZXIuY3BwCitAQCAtMTUwLDE2ICsxNTAsNDIgQEAgc3RhdGljIFFEYXRhU3RyZWFt ICZvcGVyYXRvcjw8KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAmYmkpCisgICAg IHJldHVybiBzOworIH0KKyAKKy1zdGF0aWMgaW50IGNhbGNfc2hpZnQodWludCBtYXNrKQorK3N0 YXRpYyB1aW50IGNhbGNfc2hpZnQodWludCBtYXNrKQorIHsKKy0gICAgaW50IHJlc3VsdCA9IDA7 CistICAgIHdoaWxlIChtYXNrICYmICEobWFzayAmIDEpKSB7CisrICAgIHVpbnQgcmVzdWx0ID0g MDsKKysgICAgd2hpbGUgKChtYXNrID49IDB4MTAwKSB8fCAoIShtYXNrICYgMSkgJiYgbWFzaykp IHsKKyAgICAgICAgIHJlc3VsdCsrOworICAgICAgICAgbWFzayA+Pj0gMTsKKyAgICAgfQorICAg ICByZXR1cm4gcmVzdWx0OworIH0KKyAKKytzdGF0aWMgdWludCBjYWxjX3NjYWxlKHVpbnQgbG93 X21hc2spCisreworKyAgICB1aW50IHJlc3VsdCA9IDg7CisrICAgIHdoaWxlIChsb3dfbWFzayAm JiByZXN1bHQpIHsKKysgICAgICAgIHJlc3VsdC0tOworKyAgICAgICAgbG93X21hc2sgPj49IDE7 CisrICAgIH0KKysgICAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisrc3RhdGljIGlubGluZSB1aW50 IGFwcGx5X3NjYWxlKHVpbnQgdmFsdWUsIHVpbnQgc2NhbGUpCisreworKyAgICBpZiAoIShzY2Fs ZSAmIDB4MDcpKSAvLyByZXR1cm4gaW1tZWRpYXRlbHkgaWYgc2NhbGUgPT0gOCBvciAwCisrICAg ICAgICByZXR1cm4gdmFsdWU7CisrCisrICAgIHVpbnQgZmlsbGVkID0gOCAtIHNjYWxlOworKyAg ICB1aW50IHJlc3VsdCA9IHZhbHVlIDw8IHNjYWxlOworKworKyAgICBkbyB7CisrICAgICAgICBy ZXN1bHQgfD0gcmVzdWx0ID4+IGZpbGxlZDsKKysgICAgICAgIGZpbGxlZCA8PD0gMTsKKysgICAg fSB3aGlsZSAoZmlsbGVkIDwgOCk7CisrCisrICAgIHJldHVybiByZXN1bHQ7CisrfQorKworIHN0 YXRpYyBib29sIHJlYWRfZGliX2ZpbGVoZWFkZXIoUURhdGFTdHJlYW0gJnMsIEJNUF9GSUxFSERS ICZiZikKKyB7CisgICAgIC8vIHJlYWQgQk1QIGZpbGUgaGVhZGVyCitAQCAtMjIyLDE0ICsyNDgs MTQgQEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9keShRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1Q X0lORk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAorICAgICB1aW50IGdyZWVuX21hc2sgPSAwOwor ICAgICB1aW50IGJsdWVfbWFzayA9IDA7CisgICAgIHVpbnQgYWxwaGFfbWFzayA9IDA7CistICAg IGludCByZWRfc2hpZnQgPSAwOworLSAgICBpbnQgZ3JlZW5fc2hpZnQgPSAwOworLSAgICBpbnQg Ymx1ZV9zaGlmdCA9IDA7CistICAgIGludCBhbHBoYV9zaGlmdCA9IDA7CistICAgIGludCByZWRf c2NhbGUgPSAwOworLSAgICBpbnQgZ3JlZW5fc2NhbGUgPSAwOworLSAgICBpbnQgYmx1ZV9zY2Fs ZSA9IDA7CistICAgIGludCBhbHBoYV9zY2FsZSA9IDA7CisrICAgIHVpbnQgcmVkX3NoaWZ0ID0g MDsKKysgICAgdWludCBncmVlbl9zaGlmdCA9IDA7CisrICAgIHVpbnQgYmx1ZV9zaGlmdCA9IDA7 CisrICAgIHVpbnQgYWxwaGFfc2hpZnQgPSAwOworKyAgICB1aW50IHJlZF9zY2FsZSA9IDA7Cisr ICAgIHVpbnQgZ3JlZW5fc2NhbGUgPSAwOworKyAgICB1aW50IGJsdWVfc2NhbGUgPSAwOworKyAg ICB1aW50IGFscGhhX3NjYWxlID0gMDsKKyAKKyAgICAgaWYgKCFkLT5pc1NlcXVlbnRpYWwoKSkK KyAgICAgICAgIGQtPnNlZWsoc3RhcnRwb3MgKyBCTVBfRklMRUhEUl9TSVpFICsgYmkuYmlTaXpl KTsgLy8gZ290byBzdGFydCBvZiBjb2xvcm1hcCBvciBtYXNrcworQEAgLTMwOCwxOSArMzM0LDE5 IEBAIHN0YXRpYyBib29sIHJlYWRfZGliX2JvZHkoUURhdGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9J TkZPSERSICZiaSwgcWludDY0IG9mZnNldCwKKyAgICAgICAgIHJlZF9zaGlmdCA9IGNhbGNfc2hp ZnQocmVkX21hc2spOworICAgICAgICAgaWYgKCgocmVkX21hc2sgPj4gcmVkX3NoaWZ0KSArIDEp ID09IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgcmVkX3NjYWxlID0g MjU2IC8gKChyZWRfbWFzayA+PiByZWRfc2hpZnQpICsgMSk7CisrICAgICAgICByZWRfc2NhbGUg PSBjYWxjX3NjYWxlKHJlZF9tYXNrID4+IHJlZF9zaGlmdCk7CisgICAgICAgICBncmVlbl9zaGlm dCA9IGNhbGNfc2hpZnQoZ3JlZW5fbWFzayk7CisgICAgICAgICBpZiAoKChncmVlbl9tYXNrID4+ IGdyZWVuX3NoaWZ0KSArIDEpID09IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAg ICAgICAgZ3JlZW5fc2NhbGUgPSAyNTYgLyAoKGdyZWVuX21hc2sgPj4gZ3JlZW5fc2hpZnQpICsg MSk7CisrICAgICAgICBncmVlbl9zY2FsZSA9IGNhbGNfc2NhbGUoZ3JlZW5fbWFzayA+PiBncmVl bl9zaGlmdCk7CisgICAgICAgICBibHVlX3NoaWZ0ID0gY2FsY19zaGlmdChibHVlX21hc2spOwor ICAgICAgICAgaWYgKCgoYmx1ZV9tYXNrID4+IGJsdWVfc2hpZnQpICsgMSkgPT0gMCkKKyAgICAg ICAgICAgICByZXR1cm4gZmFsc2U7CistICAgICAgICBibHVlX3NjYWxlID0gMjU2IC8gKChibHVl X21hc2sgPj4gYmx1ZV9zaGlmdCkgKyAxKTsKKysgICAgICAgIGJsdWVfc2NhbGUgPSBjYWxjX3Nj YWxlKGJsdWVfbWFzayA+PiBibHVlX3NoaWZ0KTsKKyAgICAgICAgIGFscGhhX3NoaWZ0ID0gY2Fs Y19zaGlmdChhbHBoYV9tYXNrKTsKKyAgICAgICAgIGlmICgoKGFscGhhX21hc2sgPj4gYWxwaGFf c2hpZnQpICsgMSkgPT0gMCkKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgICAgICBh bHBoYV9zY2FsZSA9IDI1NiAvICgoYWxwaGFfbWFzayA+PiBhbHBoYV9zaGlmdCkgKyAxKTsKKysg ICAgICAgIGFscGhhX3NjYWxlID0gY2FsY19zY2FsZShhbHBoYV9tYXNrID4+IGFscGhhX3NoaWZ0 KTsKKyAgICAgfSBlbHNlIGlmIChjb21wID09IEJNUF9SR0IgJiYgKG5iaXRzID09IDI0IHx8IG5i aXRzID09IDMyKSkgeworICAgICAgICAgYmx1ZV9tYXNrID0gMHgwMDAwMDBmZjsKKyAgICAgICAg IGdyZWVuX21hc2sgPSAweDAwMDBmZjAwOworQEAgLTMyOCwxNyArMzU0LDE1IEBAIHN0YXRpYyBi b29sIHJlYWRfZGliX2JvZHkoUURhdGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSwg cWludDY0IG9mZnNldCwKKyAgICAgICAgIGJsdWVfc2hpZnQgPSAwOworICAgICAgICAgZ3JlZW5f c2hpZnQgPSA4OworICAgICAgICAgcmVkX3NoaWZ0ID0gMTY7CistICAgICAgICBibHVlX3NjYWxl ID0gZ3JlZW5fc2NhbGUgPSByZWRfc2NhbGUgPSAxOworKyAgICAgICAgYmx1ZV9zY2FsZSA9IGdy ZWVuX3NjYWxlID0gcmVkX3NjYWxlID0gMDsKKyAgICAgfSBlbHNlIGlmIChjb21wID09IEJNUF9S R0IgJiYgbmJpdHMgPT0gMTYpIHsKKyAgICAgICAgIGJsdWVfbWFzayA9IDB4MDAxZjsKKyAgICAg ICAgIGdyZWVuX21hc2sgPSAweDAzZTA7CisgICAgICAgICByZWRfbWFzayA9IDB4N2MwMDsKKyAg ICAgICAgIGJsdWVfc2hpZnQgPSAwOworLSAgICAgICAgZ3JlZW5fc2hpZnQgPSAyOworLSAgICAg ICAgcmVkX3NoaWZ0ID0gNzsKKy0gICAgICAgIHJlZF9zY2FsZSA9IDE7CistICAgICAgICBncmVl bl9zY2FsZSA9IDE7CistICAgICAgICBibHVlX3NjYWxlID0gODsKKysgICAgICAgIGdyZWVuX3No aWZ0ID0gNTsKKysgICAgICAgIHJlZF9zaGlmdCA9IDEwOworKyAgICAgICAgYmx1ZV9zY2FsZSA9 IGdyZWVuX3NjYWxlID0gcmVkX3NjYWxlID0gMzsKKyAgICAgfQorIAorICNpZiAwCitAQCAtNTQ0 LDEwICs1NjgsMTAgQEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9keShRRGF0YVN0cmVhbSAmcywg Y29uc3QgQk1QX0lORk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAg ICAgYyB8PSAqKHVjaGFyKikoYisyKTw8MTY7CisgICAgICAgICAgICAgICAgIGlmIChuYml0cyA+ IDI0KQorICAgICAgICAgICAgICAgICAgICAgYyB8PSAqKHVjaGFyKikoYiszKTw8MjQ7CistICAg ICAgICAgICAgICAgICpwKysgPSBxUmdiYSgoKGMgJiByZWRfbWFzaykgPj4gcmVkX3NoaWZ0KSAq IHJlZF9zY2FsZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChj ICYgZ3JlZW5fbWFzaykgPj4gZ3JlZW5fc2hpZnQpICogZ3JlZW5fc2NhbGUsCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYyAmIGJsdWVfbWFzaykgPj4gYmx1ZV9z aGlmdCkgKiBibHVlX3NjYWxlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0cmFuc3AgPyAoKGMgJiBhbHBoYV9tYXNrKSA+PiBhbHBoYV9zaGlmdCkgKiBhbHBoYV9z Y2FsZSA6IDB4ZmYpOworKyAgICAgICAgICAgICAgICAqcCsrID0gcVJnYmEoYXBwbHlfc2NhbGUo KGMgJiByZWRfbWFzaykgPj4gcmVkX3NoaWZ0LCByZWRfc2NhbGUpLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYXBwbHlfc2NhbGUoKGMgJiBncmVlbl9tYXNrKSA+PiBncmVlbl9zaGlm dCwgZ3JlZW5fc2NhbGUpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlfc2Nh bGUoKGMgJiBibHVlX21hc2spID4+IGJsdWVfc2hpZnQsIGJsdWVfc2NhbGUpLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdHJhbnNwID8gYXBwbHlfc2NhbGUoKGMgJiBhbHBoYV9tYXNr KSA+PiBhbHBoYV9zaGlmdCwgYWxwaGFfc2NhbGUpIDogMHhmZik7CisgICAgICAgICAgICAgICAg IGIgKz0gbmJpdHMvODsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3Fp bWFnZS5jcHAKK2luZGV4IDcxNTJhYzE2MDcuLjBkZjc3MjU2NGMgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2d1aS9pbWFnZS9xaW1hZ2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9x aW1hZ2UuY3BwCitAQCAtNDY5NCw2ICs0Njk0LDggQEAgUUltYWdlIFFJbWFnZTo6c21vb3RoU2Nh bGVkKGludCB3LCBpbnQgaCkgY29uc3QgeworIHN0YXRpYyBRSW1hZ2Ugcm90YXRlZDkwKGNvbnN0 IFFJbWFnZSAmaW1hZ2UpCisgeworICAgICBRSW1hZ2Ugb3V0KGltYWdlLmhlaWdodCgpLCBpbWFn ZS53aWR0aCgpLCBpbWFnZS5mb3JtYXQoKSk7CisrICAgIGlmIChvdXQuaXNOdWxsKCkpCisrICAg ICAgICByZXR1cm4gb3V0OworICAgICBjb3B5TWV0YWRhdGEoJm91dCwgaW1hZ2UpOworICAgICBp ZiAoaW1hZ2UuY29sb3JDb3VudCgpID4gMCkKKyAgICAgICAgIG91dC5zZXRDb2xvclRhYmxlKGlt YWdlLmNvbG9yVGFibGUoKSk7CitAQCAtNDcyMiw2ICs0NzI0LDggQEAgc3RhdGljIFFJbWFnZSBy b3RhdGVkMTgwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgICAgICAgICByZXR1cm4gaW1hZ2UubWly cm9yZWQodHJ1ZSwgdHJ1ZSk7CisgCisgICAgIFFJbWFnZSBvdXQoaW1hZ2Uud2lkdGgoKSwgaW1h Z2UuaGVpZ2h0KCksIGltYWdlLmZvcm1hdCgpKTsKKysgICAgaWYgKG91dC5pc051bGwoKSkKKysg ICAgICAgIHJldHVybiBvdXQ7CisgICAgIGNvcHlNZXRhZGF0YSgmb3V0LCBpbWFnZSk7CisgICAg IGlmIChpbWFnZS5jb2xvckNvdW50KCkgPiAwKQorICAgICAgICAgb3V0LnNldENvbG9yVGFibGUo aW1hZ2UuY29sb3JUYWJsZSgpKTsKK0BAIC00NzM0LDYgKzQ3MzgsOCBAQCBzdGF0aWMgUUltYWdl IHJvdGF0ZWQxODAoY29uc3QgUUltYWdlICZpbWFnZSkKKyBzdGF0aWMgUUltYWdlIHJvdGF0ZWQy NzAoY29uc3QgUUltYWdlICZpbWFnZSkKKyB7CisgICAgIFFJbWFnZSBvdXQoaW1hZ2UuaGVpZ2h0 KCksIGltYWdlLndpZHRoKCksIGltYWdlLmZvcm1hdCgpKTsKKysgICAgaWYgKG91dC5pc051bGwo KSkKKysgICAgICAgIHJldHVybiBvdXQ7CisgICAgIGNvcHlNZXRhZGF0YSgmb3V0LCBpbWFnZSk7 CisgICAgIGlmIChpbWFnZS5jb2xvckNvdW50KCkgPiAwKQorICAgICAgICAgb3V0LnNldENvbG9y VGFibGUoaW1hZ2UuY29sb3JUYWJsZSgpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9r ZXJuZWwvcWN1cnNvci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWN1cnNvci5jcHAKK2lu ZGV4IGQ2Y2NhZmY4ZWQuLjQ1NTA4ODI0MWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9r ZXJuZWwvcWN1cnNvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xY3Vyc29yLmNw cAorQEAgLTI1MSw3ICsyNTEsOCBAQCB2b2lkIFFDdXJzb3I6OnNldFBvcyhRU2NyZWVuICpzY3Jl ZW4sIGludCB4LCBpbnQgeSkKKyB7CisgICAgIGlmIChzY3JlZW4pIHsKKyAgICAgICAgIGlmIChR UGxhdGZvcm1DdXJzb3IgKmN1cnNvciA9IHNjcmVlbi0+aGFuZGxlKCktPmN1cnNvcigpKSB7Cist ICAgICAgICAgICAgY29uc3QgUVBvaW50IGRldmljZVBvcyA9IFFIaWdoRHBpOjp0b05hdGl2ZVBp eGVscyhRUG9pbnQoeCwgeSksIHNjcmVlbik7CisrICAgICAgICAgICAgY29uc3QgUVBvaW50IHBv cyh4LCB5KTsKKysgICAgICAgICAgICBjb25zdCBRUG9pbnQgZGV2aWNlUG9zID0gUUhpZ2hEcGk6 OnRvTmF0aXZlUGl4ZWxzKHBvcywgc2NyZWVuLT52aXJ0dWFsU2libGluZ0F0KHBvcykpOworICAg ICAgICAgICAgIC8vIE5lZWQgdG8gY2hlY2ssIHNpbmNlIHNvbWUgWCBzZXJ2ZXJzIGdlbmVyYXRl IG51bGwgbW91c2UgbW92ZQorICAgICAgICAgICAgIC8vIGV2ZW50cywgY2F1c2luZyBsb29waW5n IGluIGFwcGxpY2F0aW9ucyB3aGljaCBjYWxsIHNldFBvcygpIG9uCisgICAgICAgICAgICAgLy8g ZXZlcnkgbW91c2UgbW92ZSBldmVudC4KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcWhpZ2hkcGlzY2FsaW5nLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xaGlnaGRwaXNj YWxpbmcuY3BwCitpbmRleCA5YmJmMjc3M2E5Li4zYWM0YTRkOGI2IDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9ndWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Z3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcuY3BwCitAQCAtNTgwLDkgKzU4MCw4IEBAIHZvaWQg UUhpZ2hEcGlTY2FsaW5nOjpzZXRTY3JlZW5GYWN0b3IoUVNjcmVlbiAqc2NyZWVuLCBxcmVhbCBm YWN0b3IpCisgICAgIGVsc2UKKyAgICAgICAgIHFOYW1lZFNjcmVlblNjYWxlRmFjdG9ycygpLT5p bnNlcnQobmFtZSwgZmFjdG9yKTsKKyAKKy0gICAgLy8gaGFjayB0byBmb3JjZSByZS1ldmFsdWF0 aW9uIG9mIHNjcmVlbiBnZW9tZXRyeQorICAgICBpZiAoc2NyZWVuLT5oYW5kbGUoKSkKKy0gICAg ICAgIHNjcmVlbi0+ZF9mdW5jKCktPnNldFBsYXRmb3JtU2NyZWVuKHNjcmVlbi0+aGFuZGxlKCkp OyAvLyB1cGRhdGVzIGdlb21ldHJpZXMgYmFzZWQgb24gc2NhbGUgZmFjdG9yCisrICAgICAgICBz Y3JlZW4tPmRfZnVuYygpLT51cGRhdGVMb2dpY2FsRHBpKCk7CisgfQorIAorIFFQb2ludCBRSGln aERwaVNjYWxpbmc6Om1hcFBvc2l0aW9uVG9OYXRpdmUoY29uc3QgUVBvaW50ICZwb3MsIGNvbnN0 IFFQbGF0Zm9ybVNjcmVlbiAqcGxhdGZvcm1TY3JlZW4pCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWtl eXNlcXVlbmNlLmNwcAoraW5kZXggYTc1YjhlZjkyMC4uNGYyZDI5NDczOSAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlLmNwcAorQEAgLTcwMSw2ICs3MDEsMTAgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCB7CisgICAgIHsgUXQ6OktleV9Ub3VjaHBhZFRvZ2dsZSwgIFFUX1RSQU5T TEFURV9OT09QKCJRU2hvcnRjdXQiLCAiVG91Y2hwYWQgVG9nZ2xlIikgfSwKKyAgICAgeyBRdDo6 S2V5X1RvdWNocGFkT24sICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlRvdWNocGFk IE9uIikgfSwKKyAgICAgeyBRdDo6S2V5X1RvdWNocGFkT2ZmLCAgUVRfVFJBTlNMQVRFX05PT1Ao IlFTaG9ydGN1dCIsICJUb3VjaHBhZCBPZmYiKSB9LAorKyAgICB7IFF0OjpLZXlfU2hpZnQsICBR VF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlNoaWZ0IikgfSwKKysgICAgeyBRdDo6S2V5 X0NvbnRyb2wsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIkNvbnRyb2wiKSB9LAor KyAgICB7IFF0OjpLZXlfQWx0LCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJBbHQi KSB9LAorKyAgICB7IFF0OjpLZXlfTWV0YSwgIFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQi LCAiTWV0YSIpIH0sCisgCisgfTsKKyBzdGF0aWMgUV9DT05TVEVYUFIgaW50IG51bUtleU5hbWVz ID0gc2l6ZW9mIGtleW5hbWUgLyBzaXplb2YgKmtleW5hbWU7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tl cm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAKK2luZGV4IGZkYzZhNmM0YWEuLmFjNDdmOThjNWQg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuY3BwCitAQCAt NTUsNiArNTUsMTkgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgICAgIFxicmllZiBUaGUgUVBsYXRm b3JtU2VydmljZXMgcHJvdmlkZXMgdGhlIGJhY2tlbmQgZm9yIGRlc2t0b3AtcmVsYXRlZCBmdW5j dGlvbmFsaXR5LgorICovCisgCisrLyohCisrICAgIFxlbnVtIFFQbGF0Zm9ybVNlcnZpY2VzOjpD YXBhYmlsaXR5CisrCisrICAgIENhcGFiaWxpdGllcyBhcmUgdXNlZCB0byBkZXRlcm1pbmUgYSBz cGVjaWZpYyBwbGF0Zm9ybSBzZXJ2aWNlJ3MgYXZhaWxhYmlsaXR5LgorKworKyAgICBcdmFsdWUg Q29sb3JQaWNraW5nRnJvbVNjcmVlbiBUaGUgcGxhdGZvcm0gbmF0aXZlbHkgc3VwcG9ydHMgY29s b3IgcGlja2luZyBmcm9tIHNjcmVlbi4KKysgICAgVGhpcyBjYXBhYmlsaXR5IGluZGljYXRlcyB0 aGF0IHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyAib3BhcXVlIiBjb2xvciBwaWNraW5nLCB3aGVyZSB0 aGUKKysgICAgcGxhdGZvcm0gaW1wbGVtZW50cyBhIGNvbXBsZXRlIHVzZXIgZXhwZXJpZW5jZSBm b3IgY29sb3IgcGlja2luZyBhbmQgb3V0cHV0cyBhIGNvbG9yLgorKyAgICBUaGlzIGlzIGluIGNv bnRyYXN0IHRvIHRoZSBhcHBsaWNhdGlvbiBpbXBsZW1lbnRpbmcgdGhlIGNvbG9yIHBpY2tpbmcg dXNlciBleHBlcmllbmNlCisrICAgICh0YWtpbmcgY2FyZSBvZiBzaG93aW5nIGEgY3Jvc3MgaGFp ciwgaW5zdHJ1Y3RpbmcgdGhlIHBsYXRmb3JtIGludGVncmF0aW9uIHRvIG9idGFpbgorKyAgICB0 aGUgY29sb3IgYXQgYSBnaXZlbiBwaXhlbCwgZXRjLikuIFRoZSByZWxhdGVkIHNlcnZpY2UgZnVu Y3Rpb24gaXMgcGlja0NvbG9yKCkuCisrICovCisrCisgUVBsYXRmb3JtU2VydmljZXM6OlFQbGF0 Zm9ybVNlcnZpY2VzKCkKKyB7IH0KKyAKK0BAIC04NSw1ICs5OCwxNiBAQCBRQnl0ZUFycmF5IFFQ bGF0Zm9ybVNlcnZpY2VzOjpkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdAorICAgICByZXR1cm4g UUJ5dGVBcnJheSgiVU5LTk9XTiIpOworIH0KKyAKKytRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNr ZXIgKlFQbGF0Zm9ybVNlcnZpY2VzOjpjb2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQpCisrewor KyAgICBRX1VOVVNFRChwYXJlbnQpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisrYm9v bCBRUGxhdGZvcm1TZXJ2aWNlczo6aGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNhcGFiaWxpdHkp IGNvbnN0CisreworKyAgICBRX1VOVVNFRChjYXBhYmlsaXR5KQorKyAgICByZXR1cm4gZmFsc2U7 CisrfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9r ZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuaCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZv cm1zZXJ2aWNlcy5oCitpbmRleCA1ZGU5NmNmYTdkLi5hOGIyYTRjZTcxIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmgKKysrKyBiL3F0YmFzZS9z cmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5oCitAQCAtNTAsMTYgKzUwLDMyIEBACisg Ly8KKyAKKyAjaW5jbHVkZSA8UXRHdWkvcXRndWlnbG9iYWwuaD4KKysjaW5jbHVkZSA8UXRDb3Jl L3FvYmplY3QuaD4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBjbGFzcyBRVXJsOworK2Ns YXNzIFFXaW5kb3c7CisrCisrY2xhc3MgUV9HVUlfRVhQT1JUIFFQbGF0Zm9ybVNlcnZpY2VDb2xv clBpY2tlciA6IHB1YmxpYyBRT2JqZWN0CisreworKyAgICBRX09CSkVDVAorK3B1YmxpYzoKKysg ICAgdXNpbmcgUU9iamVjdDo6UU9iamVjdDsKKysgICAgdmlydHVhbCB2b2lkIHBpY2tDb2xvcigp ID0gMDsKKytRX1NJR05BTFM6CisrICAgIHZvaWQgY29sb3JQaWNrZWQoY29uc3QgUUNvbG9yICZj b2xvcik7CisrfTsKKyAKKyBjbGFzcyBRX0dVSV9FWFBPUlQgUVBsYXRmb3JtU2VydmljZXMKKyB7 CisgcHVibGljOgorICAgICBRX0RJU0FCTEVfQ09QWV9NT1ZFKFFQbGF0Zm9ybVNlcnZpY2VzKQor IAorKyAgICBlbnVtIENhcGFiaWxpdHkgeworKyAgICAgICAgQ29sb3JQaWNraW5nLAorKyAgICB9 OworKworICAgICBRUGxhdGZvcm1TZXJ2aWNlcygpOworICAgICB2aXJ0dWFsIH5RUGxhdGZvcm1T ZXJ2aWNlcygpIHsgfQorIAorQEAgLTY3LDYgKzgzLDEwIEBAIHB1YmxpYzoKKyAgICAgdmlydHVh bCBib29sIG9wZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwpOworIAorICAgICB2aXJ0dWFsIFFC eXRlQXJyYXkgZGVza3RvcEVudmlyb25tZW50KCkgY29uc3Q7CisrCisrICAgIHZpcnR1YWwgYm9v bCBoYXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkgY29uc3Q7CisrCisrICAgIHZp cnR1YWwgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpjb2xvclBpY2tlcihRV2luZG93ICpw YXJlbnQgPSBudWxscHRyKTsKKyB9OworIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuY3BwIGIvcXRiYXNlL3NyYy9n dWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmNwcAoraW5kZXggNzE1MjFjMDMzOS4uMjMyNTg3MzI0 NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5jcHAK KysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5jcHAKK0BAIC0xNjMs NiArMTYzLDggQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgICAgIFx2YWx1ZSBTaG93U2hvcnRj dXRzSW5Db250ZXh0TWVudXMgKGJvb2wpIFdoZXRoZXIgdG8gZGlzcGxheSBzaG9ydGN1dCBrZXkg c2VxdWVuY2VzIGluIGNvbnRleHQgbWVudXMuCisgCisrICAgIFx2YWx1ZSBCdXR0b25QcmVzc0tl eXMgKFFMaXN0PFF0OjpLZXk+KSBBIGxpc3Qgb2Yga2V5cyB0aGF0IGNhbiBiZSB1c2VkIHRvIHBy ZXNzIGJ1dHRvbnMgdmlhIGtleWJvYXJkIGlucHV0LgorKworICAgICBcc2EgdGhlbWVIaW50KCks IFFTdHlsZTo6cGl4ZWxNZXRyaWMoKQorICovCisgCitAQCAtNTYzLDYgKzU2NSw4IEBAIFFWYXJp YW50IFFQbGF0Zm9ybVRoZW1lOjpkZWZhdWx0VGhlbWVIaW50KFRoZW1lSGludCBoaW50KQorICAg ICAgICAgfQorICAgICBjYXNlIE1vdXNlUXVpY2tTZWxlY3Rpb25UaHJlc2hvbGQ6CisgICAgICAg ICByZXR1cm4gUVZhcmlhbnQoMTApOworKyAgICBjYXNlIEJ1dHRvblByZXNzS2V5czoKKysgICAg ICAgIHJldHVybiBRVmFyaWFudDo6ZnJvbVZhbHVlKFFMaXN0PFF0OjpLZXk+KHsgUXQ6OktleV9T cGFjZSwgUXQ6OktleV9TZWxlY3QgfSkpOworICAgICB9CisgICAgIHJldHVybiBRVmFyaWFudCgp OworIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUu aCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5oCitpbmRleCAzMTg1ZmM0 NTQxLi43ZTZjOWQ1NzQwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0 Zm9ybXRoZW1lLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5o CitAQCAtMTIwLDcgKzEyMCw4IEBAIHB1YmxpYzoKKyAgICAgICAgIFRvdWNoRG91YmxlVGFwRGlz dGFuY2UsCisgICAgICAgICBTaG93U2hvcnRjdXRzSW5Db250ZXh0TWVudXMsCisgICAgICAgICBJ Y29uRmFsbGJhY2tTZWFyY2hQYXRocywKKy0gICAgICAgIE1vdXNlUXVpY2tTZWxlY3Rpb25UaHJl c2hvbGQKKysgICAgICAgIE1vdXNlUXVpY2tTZWxlY3Rpb25UaHJlc2hvbGQsCisrICAgICAgICBC dXR0b25QcmVzc0tleXMKKyAgICAgfTsKKyAKKyAgICAgZW51bSBEaWFsb2dUeXBlIHsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAgYi9xdGJhc2Uvc3JjL2d1 aS9rZXJuZWwvcXNjcmVlbi5jcHAKK2luZGV4IDhlMGViMzUxMTYuLjVkMTcyYTU4ZGQgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAKKysrKyBiL3F0YmFzZS9z cmMvZ3VpL2tlcm5lbC9xc2NyZWVuLmNwcAorQEAgLTc3LDYgKzc3LDEyIEBAIFFTY3JlZW46OlFT Y3JlZW4oUVBsYXRmb3JtU2NyZWVuICpzY3JlZW4pCisgICAgIGQtPnNldFBsYXRmb3JtU2NyZWVu KHNjcmVlbik7CisgfQorIAorK3ZvaWQgUVNjcmVlblByaXZhdGU6OnVwZGF0ZUxvZ2ljYWxEcGko KQorK3sKKysgICAgbG9naWNhbERwaSA9IFFQbGF0Zm9ybVNjcmVlbjo6b3ZlcnJpZGVEcGkocGxh dGZvcm1TY3JlZW4tPmxvZ2ljYWxEcGkoKSk7CisrICAgIHVwZGF0ZUdlb21ldHJpZXNXaXRoU2ln bmFscygpOyAvLyB1cGRhdGVzIGdlb21ldHJpZXMgYmFzZWQgb24gc2NhbGUgZmFjdG9yCisrfQor KworIHZvaWQgUVNjcmVlblByaXZhdGU6OnVwZGF0ZUdlb21ldHJpZXNXaXRoU2lnbmFscygpCisg eworICAgICBjb25zdCBRUmVjdCBvbGRHZW9tZXRyeSA9IGdlb21ldHJ5OworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5l bC9xc2NyZWVuX3AuaAoraW5kZXggN2RhNTQyYzI1ZS4uZTUwZmMzMTkwYiAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkv a2VybmVsL3FzY3JlZW5fcC5oCitAQCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CisgICAgICAgICBn ZW9tZXRyeSA9IHBsYXRmb3JtU2NyZWVuLT5kZXZpY2VJbmRlcGVuZGVudEdlb21ldHJ5KCk7Cisg ICAgICAgICBhdmFpbGFibGVHZW9tZXRyeSA9IFFIaWdoRHBpOjpmcm9tTmF0aXZlKHBsYXRmb3Jt U2NyZWVuLT5hdmFpbGFibGVHZW9tZXRyeSgpLCBRSGlnaERwaVNjYWxpbmc6OmZhY3RvcihwbGF0 Zm9ybVNjcmVlbiksIGdlb21ldHJ5LnRvcExlZnQoKSk7CisgICAgIH0KKysgICAgdm9pZCB1cGRh dGVMb2dpY2FsRHBpKCk7CisgCisgICAgIHZvaWQgdXBkYXRlUHJpbWFyeU9yaWVudGF0aW9uKCk7 CisgICAgIHZvaWQgdXBkYXRlR2VvbWV0cmllc1dpdGhTaWduYWxzKCk7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWJsZW5kZnVuY3Rpb25zX3AuaCBiL3F0YmFzZS9zcmMv Z3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0aW9uc19wLmgKK2luZGV4IDA4MGRhOThlYzQuLjY5OTdk NjJiM2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxlbmRmdW5jdGlv bnNfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxlbmRmdW5jdGlvbnNfcC5o CitAQCAtMjQ2LDI1ICsyNDYsMzIgQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1hZ2VfcmFzdGVyaXpl KERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGR1ZHgsIGludCBkdmR4LCBpbnQgZHVkeSwgaW50IGR2ZHksIGludCB1MCwg aW50IHYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbGVuZGVyIGJsZW5k ZXIpCisgeworLSAgICBpbnQgZnJvbVkgPSBxTWF4KHFSb3VuZCh0b3BZKSwgY2xpcC50b3AoKSk7 CistICAgIGludCB0b1kgPSBxTWluKHFSb3VuZChib3R0b21ZKSwgY2xpcC50b3AoKSArIGNsaXAu aGVpZ2h0KCkpOworKyAgICBxaW50NjQgZnJvbVkgPSBxTWF4KHFSb3VuZCh0b3BZKSwgY2xpcC50 b3AoKSk7CisrICAgIHFpbnQ2NCB0b1kgPSBxTWluKHFSb3VuZChib3R0b21ZKSwgY2xpcC50b3Ao KSArIGNsaXAuaGVpZ2h0KCkpOworICAgICBpZiAoZnJvbVkgPj0gdG9ZKQorICAgICAgICAgcmV0 dXJuOworIAorICAgICBxcmVhbCBsZWZ0U2xvcGUgPSAoYm90dG9tTGVmdC54IC0gdG9wTGVmdC54 KSAvIChib3R0b21MZWZ0LnkgLSB0b3BMZWZ0LnkpOworICAgICBxcmVhbCByaWdodFNsb3BlID0g KGJvdHRvbVJpZ2h0LnggLSB0b3BSaWdodC54KSAvIChib3R0b21SaWdodC55IC0gdG9wUmlnaHQu eSk7CistICAgIGludCBkeF9sID0gaW50KGxlZnRTbG9wZSAqIDB4MTAwMDApOworLSAgICBpbnQg ZHhfciA9IGludChyaWdodFNsb3BlICogMHgxMDAwMCk7CistICAgIGludCB4X2wgPSBpbnQoKHRv cExlZnQueCArIChxcmVhbCgwLjUpICsgZnJvbVkgLSB0b3BMZWZ0LnkpICogbGVmdFNsb3BlICsg cXJlYWwoMC41KSkgKiAweDEwMDAwKTsKKy0gICAgaW50IHhfciA9IGludCgodG9wUmlnaHQueCAr IChxcmVhbCgwLjUpICsgZnJvbVkgLSB0b3BSaWdodC55KSAqIHJpZ2h0U2xvcGUgKyBxcmVhbCgw LjUpKSAqIDB4MTAwMDApOworLQorLSAgICBpbnQgZnJvbVgsIHRvWCwgeDEsIHgyLCB1LCB2LCBp LCBpaTsKKysgICAgcWludDY0IGR4X2wgPSBxaW50NjQobGVmdFNsb3BlICogMHgxMDAwMCk7Cisr ICAgIHFpbnQ2NCBkeF9yID0gcWludDY0KHJpZ2h0U2xvcGUgKiAweDEwMDAwKTsKKysgICAgcWlu dDY0IHhfbCA9IHFpbnQ2NCgodG9wTGVmdC54ICsgKHFyZWFsKDAuNSkgKyBmcm9tWSAtIHRvcExl ZnQueSkgKiBsZWZ0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4MTAwMDApOworKyAgICBxaW50NjQg eF9yID0gcWludDY0KCh0b3BSaWdodC54ICsgKHFyZWFsKDAuNSkgKyBmcm9tWSAtIHRvcFJpZ2h0 LnkpICogcmlnaHRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgxMDAwMCk7CisrCisrICAgIHFpbnQ2 NCBzb3VyY2VSZWN0VG9wID0gcWludDY0KHNvdXJjZVJlY3QudG9wKCkpOworKyAgICBxaW50NjQg c291cmNlUmVjdExlZnQgPSBxaW50NjQoc291cmNlUmVjdC5sZWZ0KCkpOworKyAgICBxaW50NjQg c291cmNlUmVjdFdpZHRoID0gcWludDY0KHNvdXJjZVJlY3Qud2lkdGgoKSk7CisrICAgIHFpbnQ2 NCBzb3VyY2VSZWN0SGVpZ2h0ID0gcWludDY0KHNvdXJjZVJlY3QuaGVpZ2h0KCkpOworKyAgICBx aW50NjQgY2xpcExlZnQgPSBxaW50NjQoY2xpcC5sZWZ0KCkpOworKyAgICBxaW50NjQgY2xpcFdp ZHRoID0gcWludDY0KGNsaXAud2lkdGgoKSk7CisrCisrICAgIHFpbnQ2NCBmcm9tWCwgdG9YLCB4 MSwgeDIsIHUsIHYsIGksIGlpOworICAgICBEZXN0VCAqbGluZTsKKy0gICAgZm9yIChpbnQgeSA9 IGZyb21ZOyB5IDwgdG9ZOyArK3kpIHsKKysgICAgZm9yIChxaW50NjQgeSA9IGZyb21ZOyB5IDwg dG9ZOyArK3kpIHsKKyAgICAgICAgIGxpbmUgPSByZWludGVycHJldF9jYXN0PERlc3RUICo+KHJl aW50ZXJwcmV0X2Nhc3Q8dWNoYXIgKj4oZGVzdFBpeGVscykgKyB5ICogZGJwbCk7CisgCistICAg ICAgICBmcm9tWCA9IHFNYXgoeF9sID4+IDE2LCBjbGlwLmxlZnQoKSk7CistICAgICAgICB0b1gg PSBxTWluKHhfciA+PiAxNiwgY2xpcC5sZWZ0KCkgKyBjbGlwLndpZHRoKCkpOworKyAgICAgICAg ZnJvbVggPSBxTWF4KHhfbCA+PiAxNiwgY2xpcExlZnQpOworKyAgICAgICAgdG9YID0gcU1pbih4 X3IgPj4gMTYsIGNsaXBMZWZ0ICsgY2xpcFdpZHRoKTsKKyAgICAgICAgIGlmIChmcm9tWCA8IHRv WCkgeworICAgICAgICAgICAgIC8vIEJlY2F1c2Ugb2Ygcm91bmRpbmcsIHdlIGNhbiBnZXQgc291 cmNlIGNvb3JkaW5hdGVzIG91dHNpZGUgdGhlIHNvdXJjZSBpbWFnZS4KKyAgICAgICAgICAgICAv LyBDbGFtcCB0aGVzZSBjb29yZGluYXRlcyB0byB0aGUgc291cmNlIHJlY3QgdG8gYXZvaWQgc2Vn bWVudGF0aW9uIGZhdWx0IGFuZAorQEAgLTI3NSwxMCArMjgyLDEwIEBAIHZvaWQgcXRfdHJhbnNm b3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisgICAgICAg ICAgICAgdSA9IHgxICogZHVkeCArIHkgKiBkdWR5ICsgdTA7CisgICAgICAgICAgICAgdiA9IHgx ICogZHZkeCArIHkgKiBkdmR5ICsgdjA7CisgICAgICAgICAgICAgZm9yICg7IHgxIDwgdG9YOyAr K3gxKSB7CistICAgICAgICAgICAgICAgIGludCB1dSA9IHUgPj4gMTY7CistICAgICAgICAgICAg ICAgIGludCB2diA9IHYgPj4gMTY7CistICAgICAgICAgICAgICAgIGlmICh1dSA+PSBzb3VyY2VS ZWN0LmxlZnQoKSAmJiB1dSA8IHNvdXJjZVJlY3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0aCgp CistICAgICAgICAgICAgICAgICAgICAmJiB2diA+PSBzb3VyY2VSZWN0LnRvcCgpICYmIHZ2IDwg c291cmNlUmVjdC50b3AoKSArIHNvdXJjZVJlY3QuaGVpZ2h0KCkpIHsKKysgICAgICAgICAgICAg ICAgcWludDY0IHV1ID0gdSA+PiAxNjsKKysgICAgICAgICAgICAgICAgcWludDY0IHZ2ID0gdiA+ PiAxNjsKKysgICAgICAgICAgICAgICAgaWYgKHV1ID49IHNvdXJjZVJlY3RMZWZ0ICYmIHV1IDwg c291cmNlUmVjdExlZnQgKyBzb3VyY2VSZWN0V2lkdGgKKysgICAgICAgICAgICAgICAgICAgICYm IHZ2ID49IHNvdXJjZVJlY3RUb3AgJiYgdnYgPCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhl aWdodCkgeworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgdSArPSBkdWR4OworQEAgLTI5MCwxMCArMjk3LDEwIEBAIHZvaWQg cXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGws CisgICAgICAgICAgICAgdSA9ICh4MiAtIDEpICogZHVkeCArIHkgKiBkdWR5ICsgdTA7CisgICAg ICAgICAgICAgdiA9ICh4MiAtIDEpICogZHZkeCArIHkgKiBkdmR5ICsgdjA7CisgICAgICAgICAg ICAgZm9yICg7IHgyID4geDE7IC0teDIpIHsKKy0gICAgICAgICAgICAgICAgaW50IHV1ID0gdSA+ PiAxNjsKKy0gICAgICAgICAgICAgICAgaW50IHZ2ID0gdiA+PiAxNjsKKy0gICAgICAgICAgICAg ICAgaWYgKHV1ID49IHNvdXJjZVJlY3QubGVmdCgpICYmIHV1IDwgc291cmNlUmVjdC5sZWZ0KCkg KyBzb3VyY2VSZWN0LndpZHRoKCkKKy0gICAgICAgICAgICAgICAgICAgICYmIHZ2ID49IHNvdXJj ZVJlY3QudG9wKCkgJiYgdnYgPCBzb3VyY2VSZWN0LnRvcCgpICsgc291cmNlUmVjdC5oZWlnaHQo KSkgeworKyAgICAgICAgICAgICAgICBxaW50NjQgdXUgPSB1ID4+IDE2OworKyAgICAgICAgICAg ICAgICBxaW50NjQgdnYgPSB2ID4+IDE2OworKyAgICAgICAgICAgICAgICBpZiAodXUgPj0gc291 cmNlUmVjdExlZnQgJiYgdXUgPCBzb3VyY2VSZWN0TGVmdCArIHNvdXJjZVJlY3RXaWR0aAorKyAg ICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNlUmVjdFRvcCAmJiB2diA8IHNvdXJjZVJl Y3RUb3AgKyBzb3VyY2VSZWN0SGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB1IC09IGR1ZHg7CitAQCAtMzA4 LDggKzMxNSw4IEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVz dFBpeGVscywgaW50IGRicGwsCisgICAgICAgICAgICAgLy8gQmVnaW5uaW5nIG9mIHRoZSBzY2Fu IGxpbmUsIHdpdGggcGVyLXBpeGVsIGNoZWNrcy4KKyAgICAgICAgICAgICBpID0geDEgLSBmcm9t WDsKKyAgICAgICAgICAgICB3aGlsZSAoaSkgeworLSAgICAgICAgICAgICAgICBpbnQgdXUgPSBx Qm91bmQoc291cmNlUmVjdC5sZWZ0KCksIHUgPj4gMTYsIHNvdXJjZVJlY3QubGVmdCgpICsgc291 cmNlUmVjdC53aWR0aCgpIC0gMSk7CistICAgICAgICAgICAgICAgIGludCB2diA9IHFCb3VuZChz b3VyY2VSZWN0LnRvcCgpLCB2ID4+IDE2LCBzb3VyY2VSZWN0LnRvcCgpICsgc291cmNlUmVjdC5o ZWlnaHQoKSAtIDEpOworKyAgICAgICAgICAgICAgICBxaW50NjQgdXUgPSBxQm91bmQoc291cmNl UmVjdExlZnQsIHUgPj4gMTYsIHNvdXJjZVJlY3RMZWZ0ICsgc291cmNlUmVjdFdpZHRoIC0gMSk7 CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB2diA9IHFCb3VuZChzb3VyY2VSZWN0VG9wLCB2ID4+ IDE2LCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhlaWdodCAtIDEpOworICAgICAgICAgICAg ICAgICBibGVuZGVyLndyaXRlKGxpbmUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgU3JjVCAqPihy ZWludGVycHJldF9jYXN0PGNvbnN0IHVjaGFyICo+KHNyY1BpeGVscykgKyB2diAqIHNicGwpW3V1 XSk7CisgICAgICAgICAgICAgICAgIHUgKz0gZHVkeDsKKyAgICAgICAgICAgICAgICAgdiArPSBk dmR4OworQEAgLTM0OCw4ICszNTUsOCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJp emUoRGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBsLAorICAgICAgICAgICAgIC8vIEVuZCBvZiB0 aGUgc2NhbiBsaW5lLCB3aXRoIHBlci1waXhlbCBjaGVja3MuCisgICAgICAgICAgICAgaSA9IHRv WCAtIHgyOworICAgICAgICAgICAgIHdoaWxlIChpKSB7CistICAgICAgICAgICAgICAgIGludCB1 dSA9IHFCb3VuZChzb3VyY2VSZWN0LmxlZnQoKSwgdSA+PiAxNiwgc291cmNlUmVjdC5sZWZ0KCkg KyBzb3VyY2VSZWN0LndpZHRoKCkgLSAxKTsKKy0gICAgICAgICAgICAgICAgaW50IHZ2ID0gcUJv dW5kKHNvdXJjZVJlY3QudG9wKCksIHYgPj4gMTYsIHNvdXJjZVJlY3QudG9wKCkgKyBzb3VyY2VS ZWN0LmhlaWdodCgpIC0gMSk7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB1dSA9IHFCb3VuZChz b3VyY2VSZWN0TGVmdCwgdSA+PiAxNiwgc291cmNlUmVjdExlZnQgKyBzb3VyY2VSZWN0V2lkdGgg LSAxKTsKKysgICAgICAgICAgICAgICAgcWludDY0IHZ2ID0gcUJvdW5kKHNvdXJjZVJlY3RUb3As IHYgPj4gMTYsIHNvdXJjZVJlY3RUb3AgKyBzb3VyY2VSZWN0SGVpZ2h0IC0gMSk7CisgICAgICAg ICAgICAgICAgIGJsZW5kZXIud3JpdGUobGluZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBTcmNU ICo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWNoYXIgKj4oc3JjUGl4ZWxzKSArIHZ2ICogc2Jw bClbdXVdKTsKKyAgICAgICAgICAgICAgICAgdSArPSBkdWR4OworICAgICAgICAgICAgICAgICB2 ICs9IGR2ZHg7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWNvbG9ydHJj bHV0X3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fjb2xvcnRyY2x1dF9wLmgKK2luZGV4 IDc2YTZhNjA4MDMuLjI0ZmQ1MjJlNmMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWlu dGluZy9xY29sb3J0cmNsdXRfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xY29s b3J0cmNsdXRfcC5oCitAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKKyAgICAgICAgIHJldHVy biBRUmdiYTY0Ojpmcm9tUmdiYTY0KHIsIGcsIGIsIHFBbHBoYShyZ2IzMikgKiAyNTcpOworICNl bmRpZgorICAgICB9CisrICAgIFFSZ2JhNjQgdG9MaW5lYXI2NChRUmdiYTY0KSBjb25zdCA9IGRl bGV0ZTsKKyAKKyAgICAgUVJnYiB0b0xpbmVhcihRUmdiIHJnYjMyKSBjb25zdAorICAgICB7Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIuY3BwIGIvcXRi YXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIuY3BwCitpbmRleCBhNjE3OTM1MDhhLi41 YmEyZDI3N2I3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxw ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xZHJhd2hlbHBlci5jcHAKK0BA IC02MDkxLDcgKzYwOTEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWxwaGFyZ2JibGVuZF9hcmdi MzIocXVpbnQzMiAqZHN0LCB1aW50IGNvdmVyYWdlLCBjb25zdCBRUmdiYQorIHN0YXRpYyBpbmxp bmUgdm9pZCByZ2JCbGVuZFBpeGVsKFFSZ2JhNjQgJmRzdCwgaW50IGNvdmVyYWdlLCBRUmdiYTY0 IHNsaW5lYXIsIGNvbnN0IFFDb2xvclRyY0x1dCAqY29sb3JQcm9maWxlKQorIHsKKyAgICAgLy8g RG8gYSBnYW1tYWNvcnJlY3RlZCBSR0IgYWxwaGFibGVuZC4uLgorLSAgICBjb25zdCBRUmdiYTY0 IGRsaW5lYXIgPSBjb2xvclByb2ZpbGUgPyBjb2xvclByb2ZpbGUtPnRvTGluZWFyNjQoZHN0KSA6 IGRzdDsKKysgICAgY29uc3QgUVJnYmE2NCBkbGluZWFyID0gY29sb3JQcm9maWxlID8gY29sb3JQ cm9maWxlLT50b0xpbmVhcihkc3QpIDogZHN0OworIAorICAgICBRUmdiYTY0IGJsZW5kID0gcmdi QmxlbmQoZGxpbmVhciwgc2xpbmVhciwgY292ZXJhZ2UpOworIAorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwIGIvcXRiYXNlL3NyYy9n dWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAKK2luZGV4IDI4MzkyM2RlNTIuLmYw OGViOWNiZWUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdp bmVfcmFzdGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5l X3Jhc3Rlci5jcHAKK0BAIC01NjAsMzEgKzU2MCw2IEBAIHZvaWQgUVJhc3RlclBhaW50RW5naW5l Ojp1cGRhdGVNYXRyaXgoY29uc3QgUVRyYW5zZm9ybSAmbWF0cml4KQorICAgICBRUmFzdGVyUGFp bnRFbmdpbmVTdGF0ZSAqcyA9IHN0YXRlKCk7CisgICAgIC8vIEZBTENPTjogZ2V0IHJpZCBvZiB0 aGlzIGxpbmUsIHNlZSBkcmF3SW1hZ2UgY2FsbCBiZWxvdy4KKyAgICAgcy0+bWF0cml4ID0gbWF0 cml4OworLSAgICBRVHJhbnNmb3JtOjpUcmFuc2Zvcm1hdGlvblR5cGUgdHhvcCA9IHMtPm1hdHJp eC50eXBlKCk7CistCistICAgIHN3aXRjaCAodHhvcCkgeworLQorLSAgICBjYXNlIFFUcmFuc2Zv cm06OlR4Tm9uZToKKy0gICAgICAgIHMtPmZsYWdzLmludF94Zm9ybSA9IHRydWU7CistICAgICAg ICBicmVhazsKKy0KKy0gICAgY2FzZSBRVHJhbnNmb3JtOjpUeFRyYW5zbGF0ZToKKy0gICAgICAg IHMtPmZsYWdzLmludF94Zm9ybSA9IHFyZWFsKGludChzLT5tYXRyaXguZHgoKSkpID09IHMtPm1h dHJpeC5keCgpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5t YXRyaXguZHkoKSkpID09IHMtPm1hdHJpeC5keSgpOworLSAgICAgICAgYnJlYWs7CistCistICAg IGNhc2UgUVRyYW5zZm9ybTo6VHhTY2FsZToKKy0gICAgICAgIHMtPmZsYWdzLmludF94Zm9ybSA9 IHFyZWFsKGludChzLT5tYXRyaXguZHgoKSkpID09IHMtPm1hdHJpeC5keCgpCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5tYXRyaXguZHkoKSkpID09IHMtPm1h dHJpeC5keSgpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5t YXRyaXgubTExKCkpKSA9PSBzLT5tYXRyaXgubTExKCkKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgJiYgcXJlYWwoaW50KHMtPm1hdHJpeC5tMjIoKSkpID09IHMtPm1hdHJpeC5tMjIoKTsK Ky0gICAgICAgIGJyZWFrOworLQorLSAgICBkZWZhdWx0OiAvLyBzaGVhciAvIHBlcnNwZWN0aXZl Li4uCistICAgICAgICBzLT5mbGFncy5pbnRfeGZvcm0gPSBmYWxzZTsKKy0gICAgICAgIGJyZWFr OworLSAgICB9CistCisgICAgIHMtPmZsYWdzLnR4X25vc2hlYXIgPSBxdF9zY2FsZUZvclRyYW5z Zm9ybShzLT5tYXRyaXgsICZzLT50eHNjYWxlKTsKKyAKKyAgICAgZW5zdXJlT3V0bGluZU1hcHBl cigpOworQEAgLTYxNyw3ICs1OTIsNiBAQCBRUmFzdGVyUGFpbnRFbmdpbmVTdGF0ZTo6UVJhc3Rl clBhaW50RW5naW5lU3RhdGUoKQorICAgICBmbGFncy5iaWxpbmVhciA9IGZhbHNlOworICAgICBm bGFncy5sZWdhY3lfcm91bmRpbmcgPSBmYWxzZTsKKyAgICAgZmxhZ3MuZmFzdF90ZXh0ID0gdHJ1 ZTsKKy0gICAgZmxhZ3MuaW50X3hmb3JtID0gdHJ1ZTsKKyAgICAgZmxhZ3MudHhfbm9zaGVhciA9 IHRydWU7CisgICAgIGZsYWdzLmZhc3RfaW1hZ2VzID0gdHJ1ZTsKKyAKK0BAIC0xNzkzLDcgKzE3 NjcsNyBAQCB2b2lkIFFSYXN0ZXJQYWludEVuZ2luZTo6ZmlsbChjb25zdCBRVmVjdG9yUGF0aCAm cGF0aCwgY29uc3QgUUJydXNoICZicnVzaCkKKyAgICAgUVJlY3RGIGNwUmVjdCA9IHBhdGguY29u dHJvbFBvaW50UmVjdCgpOworICAgICBjb25zdCBRUmVjdEYgcGF0aERldmljZVJlY3QgPSBzLT5t YXRyaXgubWFwUmVjdChjcFJlY3QpOworICAgICAvLyBTa2lwIHBhdGhzIHRoYXQgYnkgY29uc2Vy dmF0aXZlIGVzdGltYXRlcyBhcmUgY29tcGxldGVseSBvdXRzaWRlIHRoZSBwYWludCBkZXZpY2Uu CistICAgIGlmICghcGF0aERldmljZVJlY3QuaW50ZXJzZWN0cyhRUmVjdEYoZC0+ZGV2aWNlUmVj dCkpKQorKyAgICBpZiAoIXBhdGhEZXZpY2VSZWN0LmludGVyc2VjdHMoUVJlY3RGKGQtPmRldmlj ZVJlY3QpKSB8fCAhcGF0aERldmljZVJlY3QuaXNWYWxpZCgpKQorICAgICAgICAgcmV0dXJuOwor IAorICAgICBQcm9jZXNzU3BhbnMgYmxlbmQgPSBkLT5nZXRCcnVzaEZ1bmMocGF0aERldmljZVJl Y3QsICZzLT5icnVzaERhdGEpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5n L3FwYWludGVuZ2luZV9yYXN0ZXJfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50 ZW5naW5lX3Jhc3Rlcl9wLmgKK2luZGV4IDA4OWFhZGMzZjcuLmJmNzM2M2Q1YWEgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyX3AuaAorKysr IGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlcl9wLmgKK0BAIC0x MTEsNyArMTExLDYgQEAgcHVibGljOgorICAgICAgICAgdWludCBiaWxpbmVhciA6IDE7CisgICAg ICAgICB1aW50IGxlZ2FjeV9yb3VuZGluZyA6IDE7CisgICAgICAgICB1aW50IGZhc3RfdGV4dCA6 IDE7CistICAgICAgICB1aW50IGludF94Zm9ybSA6IDE7CisgICAgICAgICB1aW50IHR4X25vc2hl YXIgOiAxOworICAgICAgICAgdWludCBmYXN0X2ltYWdlcyA6IDE7CisgICAgIH07CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZXJwYXRoLmNwcCBiL3F0YmFzZS9z cmMvZ3VpL3BhaW50aW5nL3FwYWludGVycGF0aC5jcHAKK2luZGV4IGY5NTQ0YTMyNDEuLmQ4MGZh ZmVhZjEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlcnBhdGgu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlcnBhdGguY3BwCitAQCAt MTI1Myw3ICsxMjUzLDcgQEAgdm9pZCBRUGFpbnRlclBhdGg6OmFkZFRleHQoY29uc3QgUVBvaW50 RiAmcG9pbnQsIGNvbnN0IFFGb250ICZmLCBjb25zdCBRU3RyaW5nICYKKyAKKyAgICAgICAgIGlm IChzaS5hbmFseXNpcy5mbGFncyA8IFFTY3JpcHRBbmFseXNpczo6VGFiT3JPYmplY3QpIHsKKyAg ICAgICAgICAgICBRR2x5cGhMYXlvdXQgZ2x5cGhzID0gZW5nLT5zaGFwZWRHbHlwaHMoJnNpKTsK Ky0gICAgICAgICAgICBRRm9udEVuZ2luZSAqZmUgPSBmLmQtPmVuZ2luZUZvclNjcmlwdChzaS5h bmFseXNpcy5zY3JpcHQpOworKyAgICAgICAgICAgIFFGb250RW5naW5lICpmZSA9IGVuZy0+Zm9u dEVuZ2luZShzaSk7CisgICAgICAgICAgICAgUV9BU1NFUlQoZmUpOworICAgICAgICAgICAgIGZl LT5hZGRPdXRsaW5lVG9QYXRoKHgsIHksIGdseXBocywgdGhpcywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaS5hbmFseXNpcy5iaWRpTGV2ZWwgJSAyCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhjbGlwcGVyX3AuaCBiL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3FwYXRoY2xpcHBlcl9wLmgKK2luZGV4IDk0NDRhODdiNzEuLjE4ZjY0YzVlOGMg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBwZXJfcC5oCisr KysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBwZXJfcC5oCitAQCAtMTU2LDcg KzE1Niw3IEBAIHB1YmxpYzoKKyAgICAgaW50IHZlcnRleChEaXJlY3Rpb24gZGlyZWN0aW9uKSBj b25zdDsKKyAKKyBwcml2YXRlOgorLSAgICBpbnQgbV9uZXh0WzJdWzJdOworKyAgICBpbnQgbV9u ZXh0WzJdWzJdID0geyB7IC0xLCAtMSB9LCB7IC0xLCAtMSB9IH07CisgfTsKKyAKKyBjbGFzcyBR UGF0aFNlZ21lbnRzCitAQCAtMjk2LDEwICsyOTYsNiBAQCBpbmxpbmUgUVBhdGhFZGdlOjpRUGF0 aEVkZ2UoaW50IGEsIGludCBiKQorICAgICAsIGFuZ2xlKDApCisgICAgICwgaW52QW5nbGUoMCkK KyB7CistICAgIG1fbmV4dFswXVswXSA9IC0xOworLSAgICBtX25leHRbMV1bMF0gPSAtMTsKKy0g ICAgbV9uZXh0WzBdWzBdID0gLTE7CistICAgIG1fbmV4dFsxXVswXSA9IC0xOworIH0KKyAKKyBp bmxpbmUgaW50IFFQYXRoRWRnZTo6bmV4dChUcmF2ZXJzYWwgdHJhdmVyc2FsLCBEaXJlY3Rpb24g ZGlyZWN0aW9uKSBjb25zdAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fw ZGYuY3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAKK2luZGV4IDMwNjY3NDRm MWIuLjJjOGQzYzNiNTMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGRm LmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAKK0BAIC0yNzYwLDYg KzI3NjAsOCBAQCBpbnQgUVBkZkVuZ2luZVByaXZhdGU6OmFkZEJydXNoUGF0dGVybihjb25zdCBR VHJhbnNmb3JtICZtLCBib29sICpzcGVjaWZ5Q29sb3IsCisgICAgICAgICByZXR1cm4gZ3JhZGll bnRCcnVzaChicnVzaCwgbWF0cml4LCBnU3RhdGVPYmplY3QpOworICAgICB9CisgCisrICAgIG1h dHJpeCA9IGJydXNoLnRyYW5zZm9ybSgpICogbWF0cml4OworKworICAgICBpZiAoKCFicnVzaC5p c09wYXF1ZSgpICYmIGJydXNoLnN0eWxlKCkgPCBRdDo6TGluZWFyR3JhZGllbnRQYXR0ZXJuKSB8 fCBvcGFjaXR5ICE9IDEuMCkKKyAgICAgICAgICpnU3RhdGVPYmplY3QgPSBhZGRDb25zdGFudEFs cGhhT2JqZWN0KHFSb3VuZChicnVzaC5jb2xvcigpLmFscGhhKCkgKiBvcGFjaXR5KSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFSb3VuZChwZW4uY29s b3IoKS5hbHBoYSgpICogb3BhY2l0eSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3Bh aW50aW5nL3FzdHJva2VyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FzdHJva2VyLmNw cAoraW5kZXggY2I1ZDM5NWU4MC4uM2I2MzU3YTg5MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Z3VpL3BhaW50aW5nL3FzdHJva2VyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cXN0cm9rZXIuY3BwCitAQCAtMTE4Miw2ICsxMTgyLDcgQEAgdm9pZCBRRGFzaFN0cm9rZXI6OnBy b2Nlc3NDdXJyZW50U3VicGF0aCgpCisgICAgICAgICAvLyBDaGVjayBpZiB0aGUgZW50aXJlIGxp bmUgc2hvdWxkIGJlIGNsaXBwZWQgYXdheSBvciBzaW1wbGlmaWVkCisgICAgICAgICBib29sIGNs aXBJdCA9IGNsaXBwaW5nICYmICFsaW5lSW50ZXJzZWN0c1JlY3QocHJldiwgZSwgY2xpcF90bCwg Y2xpcF9icik7CisgICAgICAgICBib29sIHNraXBEYXNoaW5nID0gZWxlbiAqIGludlN1bUxlbmd0 aCA+IHJlcGV0aXRpb25MaW1pdCgpOworKyAgICAgICAgaW50IG1heERhc2hlcyA9IGRhc2hDb3Vu dDsKKyAgICAgICAgIGlmIChza2lwRGFzaGluZyB8fCBjbGlwSXQpIHsKKyAgICAgICAgICAgICAv LyBDdXQgYXdheSBmdWxsIGRhc2ggc2VxdWVuY2VzLgorICAgICAgICAgICAgIGVsZW4gLT0gc3Rk OjpmbG9vcihlbGVuICogaW52U3VtTGVuZ3RoKSAqIHN1bUxlbmd0aDsKK0BAIC0xMTk2LDcgKzEx OTcsNyBAQCB2b2lkIFFEYXNoU3Ryb2tlcjo6cHJvY2Vzc0N1cnJlbnRTdWJwYXRoKCkKKyAgICAg ICAgICAgICAgICAgICAgIHBvcyA9IGVzdG9wOyAvLyBtb3ZlIHBvcyB0byBuZXh0IHBhdGggZWxl bWVudAorICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICAgICAg IH0gZWxzZSB7IC8vIERhc2ggaXMgb24gdGhpcyBsaW5lCistICAgICAgICAgICAgICAgICAgICBw b3MgPSBkcG9zICsgZXN0YXJ0OworKyAgICAgICAgICAgICAgICAgICAgcG9zID0gLS1tYXhEYXNo ZXMgPiAwID8gZHBvcyArIGVzdGFydCA6IGVzdG9wOworICAgICAgICAgICAgICAgICAgICAgZG9u ZSA9IHBvcyA+PSBlc3RvcDsKKyAgICAgICAgICAgICAgICAgICAgIGlmICgrK2lkYXNoID49IGRh c2hDb3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZGFzaCA9IDA7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXRfYXR0cmlidXRpb24uanNvbiBiL3F0YmFzZS9z cmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24KK2luZGV4IDdiMTZlOGMyMTEuLjBl ODdkMzBhYTIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xdF9hdHRyaWJ1 dGlvbi5qc29uCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xdF9hdHRyaWJ1dGlvbi5q c29uCitAQCAtMTAsNyArMTAsNyBAQAorICAgICAgICAgIkhvbWVwYWdlIjogImh0dHA6Ly93d3cu ZnJlZXR5cGUub3JnIiwKKyAgICAgICAgICJMaWNlbnNlIjogIkZyZWV0eXBlIFByb2plY3QgTGlj ZW5zZSBvciBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mi4wIG9ubHkiLAorICAgICAgICAg IkxpY2Vuc2VJZCI6ICJGVEwgb3IgR1BMLTIuMCIsCistICAgICAgICAiTGljZW5zZUZpbGUiOiAi Li4vLi4vM3JkcGFydHkvZnJlZXR5cGUvZG9jcy9MSUNFTlNFLlRYVCIsCisrICAgICAgICAiTGlj ZW5zZUZpbGUiOiAiLi4vLi4vM3JkcGFydHkvZnJlZXR5cGUvTElDRU5TRS5UWFQiLAorICAgICAg ICAgIkNvcHlyaWdodCI6ICJDb3B5cmlnaHQgMjAwMC0yMDE2IGJ5IERhdmlkIFR1cm5lciwgUm9i ZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4iCisgICAgIH0sCisgICAgIHsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3AuaCBiL3F0YmFzZS9zcmMvZ3Vp L3JoaS9xc2hhZGVyX3BfcC5oCitpbmRleCBlYzlkMjU5NzFmLi40YTVhN2E2ZDUxIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9wLmgKKysrKyBiL3F0YmFzZS9zcmMv Z3VpL3JoaS9xc2hhZGVyX3BfcC5oCitAQCAtNjgsMTMgKzY4LDEzIEBAIHN0cnVjdCBRX0dVSV9F WFBPUlQgUVNoYWRlclByaXZhdGUKKyAgICAgeworICAgICB9CisgCistICAgIFFTaGFkZXJQcml2 YXRlKGNvbnN0IFFTaGFkZXJQcml2YXRlICpvdGhlcikKKysgICAgUVNoYWRlclByaXZhdGUoY29u c3QgUVNoYWRlclByaXZhdGUgJm90aGVyKQorICAgICAgICAgOiByZWYoMSksCistICAgICAgICAg IHFzYlZlcnNpb24ob3RoZXItPnFzYlZlcnNpb24pLAorLSAgICAgICAgICBzdGFnZShvdGhlci0+ c3RhZ2UpLAorLSAgICAgICAgICBkZXNjKG90aGVyLT5kZXNjKSwKKy0gICAgICAgICAgc2hhZGVy cyhvdGhlci0+c2hhZGVycyksCistICAgICAgICAgIGJpbmRpbmdzKG90aGVyLT5iaW5kaW5ncykK KysgICAgICAgICAgcXNiVmVyc2lvbihvdGhlci5xc2JWZXJzaW9uKSwKKysgICAgICAgICAgc3Rh Z2Uob3RoZXIuc3RhZ2UpLAorKyAgICAgICAgICBkZXNjKG90aGVyLmRlc2MpLAorKyAgICAgICAg ICBzaGFkZXJzKG90aGVyLnNoYWRlcnMpLAorKyAgICAgICAgICBiaW5kaW5ncyhvdGhlci5iaW5k aW5ncykKKyAgICAgeworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcmhp L3FzaGFkZXJkZXNjcmlwdGlvbl9wX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyZGVz Y3JpcHRpb25fcF9wLmgKK2luZGV4IGVjMmIwYjZiNGMuLjNkYTMzYThhMmIgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oCisrKysgYi9xdGJh c2Uvc3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oCitAQCAtNjMsMTYgKzYzLDE2 IEBAIHN0cnVjdCBRX0dVSV9FWFBPUlQgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0ZQorICAgICAg ICAgbG9jYWxTaXplWzBdID0gbG9jYWxTaXplWzFdID0gbG9jYWxTaXplWzJdID0gMDsKKyAgICAg fQorIAorLSAgICBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlKGNvbnN0IFFTaGFkZXJEZXNjcmlw dGlvblByaXZhdGUgKm90aGVyKQorKyAgICBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlKGNvbnN0 IFFTaGFkZXJEZXNjcmlwdGlvblByaXZhdGUgJm90aGVyKQorICAgICAgICAgOiByZWYoMSksCist ICAgICAgICAgIGluVmFycyhvdGhlci0+aW5WYXJzKSwKKy0gICAgICAgICAgb3V0VmFycyhvdGhl ci0+b3V0VmFycyksCistICAgICAgICAgIHVuaWZvcm1CbG9ja3Mob3RoZXItPnVuaWZvcm1CbG9j a3MpLAorLSAgICAgICAgICBwdXNoQ29uc3RhbnRCbG9ja3Mob3RoZXItPnB1c2hDb25zdGFudEJs b2NrcyksCistICAgICAgICAgIHN0b3JhZ2VCbG9ja3Mob3RoZXItPnN0b3JhZ2VCbG9ja3MpLAor LSAgICAgICAgICBjb21iaW5lZEltYWdlU2FtcGxlcnMob3RoZXItPmNvbWJpbmVkSW1hZ2VTYW1w bGVycyksCistICAgICAgICAgIHN0b3JhZ2VJbWFnZXMob3RoZXItPnN0b3JhZ2VJbWFnZXMpLAor LSAgICAgICAgICBsb2NhbFNpemUob3RoZXItPmxvY2FsU2l6ZSkKKysgICAgICAgICAgaW5WYXJz KG90aGVyLmluVmFycyksCisrICAgICAgICAgIG91dFZhcnMob3RoZXIub3V0VmFycyksCisrICAg ICAgICAgIHVuaWZvcm1CbG9ja3Mob3RoZXIudW5pZm9ybUJsb2NrcyksCisrICAgICAgICAgIHB1 c2hDb25zdGFudEJsb2NrcyhvdGhlci5wdXNoQ29uc3RhbnRCbG9ja3MpLAorKyAgICAgICAgICBz dG9yYWdlQmxvY2tzKG90aGVyLnN0b3JhZ2VCbG9ja3MpLAorKyAgICAgICAgICBjb21iaW5lZElt YWdlU2FtcGxlcnMob3RoZXIuY29tYmluZWRJbWFnZVNhbXBsZXJzKSwKKysgICAgICAgICAgc3Rv cmFnZUltYWdlcyhvdGhlci5zdG9yYWdlSW1hZ2VzKSwKKysgICAgICAgICAgbG9jYWxTaXplKG90 aGVyLmxvY2FsU2l6ZSkKKyAgICAgeworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcWZvbnRk YXRhYmFzZS5jcHAKK2luZGV4IGE2NTdhOGM1MTYuLjRmYzAxMDA5NTggMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1 aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3BwCitAQCAtOTgzLDcgKzk4Myw3IEBAIFFGb250RW5naW5l ICpsb2FkU2luZ2xlRW5naW5lKGludCBzY3JpcHQsCisgICAgICAgICBpZiAoc3R5bGUtPmtleS5z dHJldGNoICE9IDAgJiYgcmVxdWVzdC5zdHJldGNoICE9IDAKKyAgICAgICAgICAgICAmJiAocmVx dWVzdC5zdHlsZU5hbWUuaXNFbXB0eSgpIHx8IHJlcXVlc3Quc3R5bGVOYW1lICE9IHN0eWxlLT5z dHlsZU5hbWUpKSB7CisgICAgICAgICAgICAgZGVmLnN0cmV0Y2ggPSAocmVxdWVzdC5zdHJldGNo ICogMTAwICsgc3R5bGUtPmtleS5zdHJldGNoIC8gMikgLyBzdHlsZS0+a2V5LnN0cmV0Y2g7Cist ICAgICAgICB9IGVsc2UgeworKyAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnN0cmV0Y2ggPT0g UUZvbnQ6OkFueVN0cmV0Y2gpIHsKKyAgICAgICAgICAgICBkZWYuc3RyZXRjaCA9IDEwMDsKKyAg ICAgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1l bnRsYXlvdXQuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGRvY3VtZW50bGF5b3V0LmNw cAoraW5kZXggZjNlNmVhMjEwMC4uNzIyNjdlOTM4MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Z3VpL3RleHQvcXRleHRkb2N1bWVudGxheW91dC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3Rl eHQvcXRleHRkb2N1bWVudGxheW91dC5jcHAKK0BAIC0yMTIzLDcgKzIxMjMsNyBAQCB2b2lkIFFU ZXh0RG9jdW1lbnRMYXlvdXRQcml2YXRlOjpkcmF3TGlzdEl0ZW0oY29uc3QgUVBvaW50RiAmb2Zm c2V0LCBRUGFpbnRlciAqcAorIHsKKyAgICAgUV9RKGNvbnN0IFFUZXh0RG9jdW1lbnRMYXlvdXQp OworICAgICBjb25zdCBRVGV4dEJsb2NrRm9ybWF0IGJsb2NrRm9ybWF0ID0gYmwuYmxvY2tGb3Jt YXQoKTsKKy0gICAgY29uc3QgUVRleHRDaGFyRm9ybWF0IGNoYXJGb3JtYXQgPSBRVGV4dEN1cnNv cihibCkuY2hhckZvcm1hdCgpOworKyAgICBjb25zdCBRVGV4dENoYXJGb3JtYXQgY2hhckZvcm1h dCA9IGJsLmNoYXJGb3JtYXQoKTsKKyAgICAgUUZvbnQgZm9udChjaGFyRm9ybWF0LmZvbnQoKSk7 CisgICAgIGlmIChxLT5wYWludERldmljZSgpKQorICAgICAgICAgZm9udCA9IFFGb250KGZvbnQs IHEtPnBhaW50RGV2aWNlKCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRl eHRlbmdpbmUuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAKK2luZGV4 IGNlNGFiYWM0NzIuLmE2YzY2ZTVkMmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS90ZXh0 L3F0ZXh0ZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5j cHAKK0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5 cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAy MSBUaGUgUXQgQ29tcGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGlj ZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0R3VpIG1vZHVsZSBv ZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC0xNTY1LDYgKzE1NjUsMTIgQEAgdm9pZCBRVGV4dEVuZ2lu ZTo6c2hhcGVUZXh0KGludCBpdGVtKSBjb25zdAorICAgICAgICAgLy8gT3ZlcndyaXRlIHdpdGgg MCB0b2tlbiB0byBpbmRpY2F0ZSBmYWlsdXJlCisgICAgICAgICBRR2x5cGhMYXlvdXQgZyA9IGF2 YWlsYWJsZUdseXBocygmc2kpOworICAgICAgICAgZy5nbHlwaHNbMF0gPSAwOworKyAgICAgICAg Zy5hdHRyaWJ1dGVzWzBdLmNsdXN0ZXJTdGFydCA9IHRydWU7CisrCisrICAgICAgICB1c2hvcnQg KmxvZ19jbHVzdGVycyA9IGxvZ0NsdXN0ZXJzKCZzaSk7CisrICAgICAgICBmb3IgKGludCBpID0g MDsgaSA8IGl0ZW1MZW5ndGg7ICsraSkKKysgICAgICAgICAgICBsb2dfY2x1c3RlcnNbaV0gPSAw OworKworICAgICAgICAgcmV0dXJuOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9ndWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcWRl c2t0b3BzZXJ2aWNlcy5jcHAKK2luZGV4IGZiYjYzYTk0MDguLjRkNWZhZmFhYTcgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2d1aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwCisrKysgYi9xdGJh c2Uvc3JjL2d1aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwCitAQCAtNTQsNiArNTQsOCBAQAor ICNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtaW50ZWdyYXRpb24uaD4KKyAjaW5jbHVkZSA8cWRpci5o PgorIAorKyNpbmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9xbG9ja2luZ19wLmg+CisrCisgUVRfQkVH SU5fTkFNRVNQQUNFCisgCisgY2xhc3MgUU9wZW5VcmxIYW5kbGVyUmVnaXN0cnkgOiBwdWJsaWMg UU9iamVjdAorQEAgLTgxLDYgKzgzLDcgQEAgUV9HTE9CQUxfU1RBVElDKFFPcGVuVXJsSGFuZGxl clJlZ2lzdHJ5LCBoYW5kbGVyUmVnaXN0cnkpCisgCisgdm9pZCBRT3BlblVybEhhbmRsZXJSZWdp c3RyeTo6aGFuZGxlckRlc3Ryb3llZChRT2JqZWN0ICpoYW5kbGVyKQorIHsKKysgICAgY29uc3Qg YXV0byBsb2NrID0gcXRfc2NvcGVkX2xvY2sobXV0ZXgpOworICAgICBIYW5kbGVySGFzaDo6SXRl cmF0b3IgaXQgPSBoYW5kbGVycy5iZWdpbigpOworICAgICB3aGlsZSAoaXQgIT0gaGFuZGxlcnMu ZW5kKCkpIHsKKyAgICAgICAgIGlmIChpdC0+cmVjZWl2ZXIgPT0gaGFuZGxlcikgeworQEAgLTI5 NCw3ICsyOTcsOCBAQCB2b2lkIFFEZXNrdG9wU2VydmljZXM6OnNldFVybEhhbmRsZXIoY29uc3Qg UVN0cmluZyAmc2NoZW1lLCBRT2JqZWN0ICpyZWNlaXZlciwgYworICAgICBoLm5hbWUgPSBtZXRo b2Q7CisgICAgIHJlZ2lzdHJ5LT5oYW5kbGVycy5pbnNlcnQoc2NoZW1lLnRvTG93ZXIoKSwgaCk7 CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocmVjZWl2ZXIsIFNJR05BTChkZXN0cm95ZWQoUU9iamVj dCopKSwKKy0gICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgU0xPVChoYW5kbGVyRGVzdHJv eWVkKFFPYmplY3QqKSkpOworKyAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LCBTTE9UKGhh bmRsZXJEZXN0cm95ZWQoUU9iamVjdCopKSwKKysgICAgICAgICAgICAgICAgICAgICBRdDo6RGly ZWN0Q29ubmVjdGlvbik7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3Vp L3V0aWwvcXBrbWhhbmRsZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGttaGFuZGxlci5j cHAKK2luZGV4IGUwYzNiNzVlZmUuLjM0MTRmOWQ4YmEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2d1aS91dGlsL3Fwa21oYW5kbGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGtt aGFuZGxlci5jcHAKK0BAIC01Nyw3ICs1Nyw3IEBAIHN0cnVjdCBQa21UeXBlCisgICAgIHF1aW50 MzIgYnl0ZXNQZXJCbG9jazsKKyB9OworIAorLXN0YXRpYyBQa21UeXBlIHR5cGVNYXBbNV0gPSB7 Cisrc3RhdGljIGNvbnN0ZXhwciBQa21UeXBlIHR5cGVNYXBbNV0gPSB7CisgICAgIHsgMHg4RDY0 LCAgOCB9LCAgIC8vIEdMX0VUQzFfUkdCOF9PRVMKKyAgICAgeyAweDkyNzQsICA4IH0sICAgLy8g R0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIKKyAgICAgeyAwLCAwIH0sICAgICAgICAgLy8gdW51c2Vk IChvYnNvbGV0ZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3 b3JrcmVwbHlmaWxlaW1wbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3Jr cmVwbHlmaWxlaW1wbC5jcHAKK2luZGV4IGI2YmU5MzE0N2EuLjZlNjliNGM0ZDMgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlmaWxlaW1wbC5jcHAK KysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWZpbGVpbXBsLmNw cAorQEAgLTg5LDkgKzg5LDEwIEBAIFFOZXR3b3JrUmVwbHlGaWxlSW1wbDo6UU5ldHdvcmtSZXBs eUZpbGVJbXBsKFFOZXR3b3JrQWNjZXNzTWFuYWdlciAqbWFuYWdlciwgY29uCisgICAgICAgICAv LyB3ZSBoYW5kbGUgb25seSBsb2NhbCBmaWxlcworICAgICAgICAgUVN0cmluZyBtc2cgPSBRQ29y ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFOZXR3b3JrQWNjZXNzRmlsZUJhY2tlbmQiLCAiUmVx dWVzdCBmb3Igb3BlbmluZyBub24tbG9jYWwgZmlsZSAlMSIpLmFyZyh1cmwudG9TdHJpbmcoKSk7 CisgICAgICAgICBzZXRFcnJvcihRTmV0d29ya1JlcGx5OjpQcm90b2NvbEludmFsaWRPcGVyYXRp b25FcnJvciwgbXNnKTsKKysgICAgICAgIHNldEZpbmlzaGVkKHRydWUpOyAvLyBXZSdyZSBmaW5p c2hlZCwgd2lsbCBlbWl0IGZpbmlzaGVkKCkgYWZ0ZXIgY3RvciBpcyBkb25lLgorICAgICAgICAg UU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCAiZXJyb3JPY2N1cnJlZCIsIFF0OjpRdWV1 ZWRDb25uZWN0aW9uLAorICAgICAgICAgICAgIFFfQVJHKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtF cnJvciwgUU5ldHdvcmtSZXBseTo6UHJvdG9jb2xJbnZhbGlkT3BlcmF0aW9uRXJyb3IpKTsKKy0g ICAgICAgIGZpbGVPcGVuRmluaXNoZWQoZmFsc2UpOworKyAgICAgICAgUU1ldGFPYmplY3Q6Omlu dm9rZU1ldGhvZCh0aGlzLCBbdGhpc10oKXsgZmlsZU9wZW5GaW5pc2hlZChmYWxzZSk7IH0sIFF0 OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorICNlbmRpZgor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWltcGwu Y3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAKK2lu ZGV4IGJjZGY2ZWUyZjEuLjNiNmRlYjgyYmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdv cmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlpbXBsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3Jr L2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAKK0BAIC02ODAsNyArNjgwLDcgQEAgdm9pZCBR TmV0d29ya1JlcGx5SW1wbFByaXZhdGU6OmFwcGVuZERvd25zdHJlYW1EYXRhKFFJT0RldmljZSAq ZGF0YSkKKyAgICAgLy8gcmVhZCB1bnRpbCBFT0YgZnJvbSBkYXRhCisgICAgIGlmIChRX1VOTElL RUxZKGNvcHlEZXZpY2UpKSB7CisgICAgICAgICBxQ3JpdGljYWwoIlFOZXR3b3JrUmVwbHlJbXBs OiBjb3B5IGZyb20gUUlPRGV2aWNlIGFscmVhZHkgaW4gcHJvZ3Jlc3MgLS0gIgorLSAgICAgICAg ICAgICAgICAgICJiYWNrZW5kIHByb2JseSBuZWVkcyB0byBiZSBmaXhlZCIpOworKyAgICAgICAg ICAgICAgICAgICJiYWNrZW5kIHByb2JhYmx5IG5lZWRzIHRvIGJlIGZpeGVkIik7CisgICAgICAg ICByZXR1cm47CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsva2Vy bmVsL3FhdXRoZW50aWNhdG9yLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhl bnRpY2F0b3IuY3BwCitpbmRleCBkOWZlN2JjNDdiLi5jY2QwNGIyOTRhIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRvci5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0b3IuY3BwCitAQCAtNTAsNiArNTAsNyBA QAorICNpbmNsdWRlIDxxc3RyaW5nLmg+CisgI2luY2x1ZGUgPHFkYXRldGltZS5oPgorICNpbmNs dWRlIDxxcmFuZG9tLmg+CisrI2luY2x1ZGUgInByaXZhdGUvcXN5c3RlbWxpYnJhcnlfcC5oIgor IAorICNpZmRlZiBRX09TX1dJTgorICNpbmNsdWRlIDxxbXV0ZXguaD4KK0BAIC0xNTYzLDcgKzE1 NjQsNyBAQCBzdGF0aWMgYm9vbCBxX1NTUElfbGlicmFyeV9sb2FkKCkKKyAKKyAgICAgLy8gSW5p dGlhbGl6ZSBzZWN1cml0eSBpbnRlcmZhY2UKKyAgICAgaWYgKHBTZWN1cml0eUZ1bmN0aW9uVGFi bGUgPT0gbnVsbHB0cikgeworLSAgICAgICAgc2VjdXJpdHlETExIYW5kbGUgPSBMb2FkTGlicmFy eShMInNlY3VyMzIuZGxsIik7CisrICAgICAgICBzZWN1cml0eURMTEhhbmRsZSA9IFFTeXN0ZW1M aWJyYXJ5Ojpsb2FkKEwic2VjdXIzMiIpOworICAgICAgICAgaWYgKHNlY3VyaXR5RExMSGFuZGxl ICE9IG51bGxwdHIpIHsKKyAgICAgICAgICAgICBJTklUX1NFQ1VSSVRZX0lOVEVSRkFDRSBwSW5p dFNlY3VyaXR5SW50ZXJmYWNlID0KKyAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxJ TklUX1NFQ1VSSVRZX0lOVEVSRkFDRT4oCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3Jr L2tlcm5lbC9xaG9zdGluZm9fdW5peC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fo b3N0aW5mb191bml4LmNwcAoraW5kZXggOWIwYTJlZTY2OS4uNzM2NzljOWVmMSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZvX3VuaXguY3BwCisrKysgYi9x dGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0aW5mb191bml4LmNwcAorQEAgLTEyMiw3ICsx MjIsNiBAQCBzdGF0aWMgUUZ1bmN0aW9uUG9pbnRlciByZXNvbHZlU3ltYm9sKFFMaWJyYXJ5ICZs aWIsIGNvbnN0IGNoYXIgKnN5bSkKKyAKKyBMaWJSZXNvbHY6OkxpYlJlc29sdigpCisgeworLSAg ICBRTGlicmFyeSBsaWI7CisgI2lmZGVmIExJQlJFU09MVl9TTworICAgICBsaWIuc2V0RmlsZU5h bWUoUVN0cmluZ0xpdGVyYWwoTElCUkVTT0xWX1NPKSk7CisgICAgIGlmICghbGliLmxvYWQoKSkK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdp bmUuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9xc29ja3M1c29ja2V0ZW5naW5lLmNw cAoraW5kZXggM2EwNDZmZDExNi4uOTdmYWRjYTBiMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv bmV0d29yay9zb2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMv bmV0d29yay9zb2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAKK0BAIC0xMjk2LDcgKzEyOTYs NyBAQCB2b2lkIFFTb2NrczVTb2NrZXRFbmdpbmVQcml2YXRlOjpfcV91ZHBTb2NrZXRSZWFkTm90 aWZpY2F0aW9uKCkKKyAgICAgICAgIGludCBwb3MgPSAwOworICAgICAgICAgY29uc3QgY2hhciAq YnVmID0gaW5CdWYuY29uc3REYXRhKCk7CisgICAgICAgICBpZiAoaW5CdWYuc2l6ZSgpIDwgNCkg eworLSAgICAgICAgICAgIFFTT0NLUzVfRF9ERUJVRyA8PCAiYnVndXMgdWRwIGRhdGEsIGRpc2Nh cmRpbmciOworKyAgICAgICAgICAgIFFTT0NLUzVfRF9ERUJVRyA8PCAiYm9ndXMgdWRwIGRhdGEs IGRpc2NhcmRpbmciOworICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0KKyAgICAgICAg IFFTb2NrczVSZXZpdmVkRGF0YWdyYW0gZGF0YWdyYW07CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9uZXR3b3JrL3NzbC9xc3NsY29udGV4dF9vcGVuc3NsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29y ay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAKK2luZGV4IGM5ZjIwMmY1NzMuLmM5OTJkYTlk OGUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0X29wZW5z c2wuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0X29wZW5zc2wu Y3BwCitAQCAtNDA5LDcgKzQwOSw3IEBAIGluaXRfY29udGV4dDoKKyAgICAgICAgIGJyZWFrOwor ICAgICBjYXNlIFFTc2w6OkR0bHNWMV8wT3JMYXRlcjoKKyAgICAgICAgIG1pblZlcnNpb24gPSBE VExTMV9WRVJTSU9OOworLSAgICAgICAgbWF4VmVyc2lvbiA9IERUTFNfTUFYX1ZFUlNJT047Cisr ICAgICAgICBtYXhWZXJzaW9uID0gMDsKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIFFTc2w6 OkR0bHNWMV8yOgorICAgICAgICAgbWluVmVyc2lvbiA9IERUTFMxXzJfVkVSU0lPTjsKK0BAIC00 MTcsNyArNDE3LDcgQEAgaW5pdF9jb250ZXh0OgorICAgICAgICAgYnJlYWs7CisgICAgIGNhc2Ug UVNzbDo6RHRsc1YxXzJPckxhdGVyOgorICAgICAgICAgbWluVmVyc2lvbiA9IERUTFMxXzJfVkVS U0lPTjsKKy0gICAgICAgIG1heFZlcnNpb24gPSBEVExTX01BWF9WRVJTSU9OOworKyAgICAgICAg bWF4VmVyc2lvbiA9IDA7CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBRU3NsOjpUbHNWMV8z T3JMYXRlcjoKKyAjaWZkZWYgVExTMV8zX1ZFUlNJT04KK0BAIC00NTUsNyArNDU1LDcgQEAgaW5p dF9jb250ZXh0OgorICAgICB9CisgCisgICAgIC8vIEVuYWJsZSBidWcgd29ya2Fyb3VuZHMuCist ICAgIGxvbmcgb3B0aW9ucyA9IFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6c2V0dXBPcGVuU3Ns T3B0aW9ucyhjb25maWd1cmF0aW9uLnByb3RvY29sKCksIGNvbmZpZ3VyYXRpb24uZC0+c3NsT3B0 aW9ucyk7CisrICAgIHFzc2xvcHRpb25zIG9wdGlvbnMgPSBRU3NsU29ja2V0QmFja2VuZFByaXZh dGU6OnNldHVwT3BlblNzbE9wdGlvbnMoY29uZmlndXJhdGlvbi5wcm90b2NvbCgpLCBjb25maWd1 cmF0aW9uLmQtPnNzbE9wdGlvbnMpOworICAgICBxX1NTTF9DVFhfc2V0X29wdGlvbnMoc3NsQ29u dGV4dC0+Y3R4LCBvcHRpb25zKTsKKyAKKyAgICAgLy8gVGVsbCBPcGVuU1NMIHRvIHJlbGVhc2Ug bWVtb3J5IGVhcmx5CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsZGlm ZmllaGVsbG1hbnBhcmFtZXRlcnNfb3BlbnNzbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3Ns L3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcAoraW5kZXggYWFmODc0MTEz MC4uYjU4OTM1MzcyYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGRp ZmZpZWhlbGxtYW5wYXJhbWV0ZXJzX29wZW5zc2wuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdv cmsvc3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcAorQEAgLTU5LDU3 ICs1OSw2IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCistI2lmZGVmIE9QRU5TU0xfTk9f REVQUkVDQVRFRF8zXzAKKy0KKy1zdGF0aWMgaW50IHFfREhfY2hlY2soREggKmRoLCBpbnQgKnN0 YXR1cykKKy17CistICAgIC8vIERIX2NoZWNrIHdhcyBmaXJzdCBkZXByZWNhdGVkIGluIE9wZW5T U0wgMy4wLjAsIGFzIGxvdy1sZXZlbAorLSAgICAvLyBBUEk7IHRoZSBFVlBfUEtFWSBmYW1pbHkg b2YgZnVuY3Rpb25zIHdhcyBhZHZpc2VkIGFzIGFuIGFsdGVybmF0aXZlLgorLSAgICAvLyBBcyBv ZiBub3cgRVZQX1BLRVlfcGFyYW1zX2NoZWNrIGVuZHMgdXAgY2FsbGluZyAuLi4gREhfY2hlY2ss CistICAgIC8vIHdoaWNoIGlzIGdvb2QgZW5vdWdoLgorLQorLSAgICBRX0FTU0VSVChkaCk7Cist ICAgIFFfQVNTRVJUKHN0YXR1cyk7CistCistICAgIEVWUF9QS0VZICprZXkgPSBxX0VWUF9QS0VZ X25ldygpOworLSAgICBpZiAoIWtleSkgeworLSAgICAgICAgcUNXYXJuaW5nKGxjU3NsLCAiRVZQ X1BLRVlfbmV3IGZhaWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjps b2dBbmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVybiAwOworLSAgICB9CistICAg IGNvbnN0IGF1dG8ga2V5RGVsZXRlciA9IHFTY29wZUd1YXJkKFtrZXldKCl7CistICAgICAgICBx X0VWUF9QS0VZX2ZyZWUoa2V5KTsKKy0gICAgfSk7CistICAgIGlmICghcV9FVlBfUEtFWV9zZXQx X0RIKGtleSwgZGgpKSB7CistICAgICAgICBxQ1dhcm5pbmcobGNTc2wsICJFVlBfUEtFWV9zZXQx X0RIIGZhaWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpsb2dBbmRD bGVhckVycm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVybiAwOworLSAgICB9CistCistICAgIEVW UF9QS0VZX0NUWCAqa2V5Q3R4ID0gcV9FVlBfUEtFWV9DVFhfbmV3KGtleSwgbnVsbHB0cik7Cist ICAgIGlmICgha2V5Q3R4KSB7CistICAgICAgICBxQ1dhcm5pbmcobGNTc2wsICJFVlBfUEtFWV9D VFhfbmV3IGZhaWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpsb2dB bmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVybiAwOworLSAgICB9CistICAgIGNv bnN0IGF1dG8gY3R4RGVsZXRlciA9IHFTY29wZUd1YXJkKFtrZXlDdHhdeworLSAgICAgICAgcV9F VlBfUEtFWV9DVFhfZnJlZShrZXlDdHgpOworLSAgICB9KTsKKy0KKy0gICAgY29uc3QgaW50IHJl c3VsdCA9IHFfRVZQX1BLRVlfcGFyYW1fY2hlY2soa2V5Q3R4KTsKKy0gICAgUVNzbFNvY2tldEJh Y2tlbmRQcml2YXRlOjpsb2dBbmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgLy8gTm90ZTogdW5s aWtlIERIX2NoZWNrLCB3ZSBjYW5ub3Qgb2J0YWluIHRoZSAnc3RhdHVzJywKKy0gICAgLy8gaWYg dGhlICdyZXN1bHQnIGlzIDAgKGFjdHVhbGx5IHRoZSByZXN1bHQgaXMgMSBvbmx5CistICAgIC8v IGlmIHRoaXMgJ3N0YXR1cycgd2FzIDApLiBXZSBjb3VsZCBwcm9iYWJseSBjaGVjayB0aGUKKy0g ICAgLy8gZXJyb3JzIGZyb20gdGhlIGVycm9yIHF1ZXVlLCBidXQgaXQncyBub3QgbmVlZGVkIGFu eXdheQorLSAgICAvLyAtIHNlZSB0aGUgJ2lzU2FmZURIJyBiZWxvdywgaG93IGl0IHJldHVybnMg aW1tZWRpYXRlbHkKKy0gICAgLy8gb24gMC4KKy0gICAgUV9VTlVTRUQoc3RhdHVzKQorLQorLSAg ICByZXR1cm4gcmVzdWx0OworLX0KKy0jZW5kaWYgLy8gT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNf MAorLQorIHN0YXRpYyBib29sIGlzU2FmZURIKERIICpkaCkKKyB7CisgICAgIGludCBzdGF0dXMg PSAwOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVu c3NsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcAor aW5kZXggMzdmYWQyYTY4Zi4uOGY2ODU4Yzg2NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0 d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3Jr L3NzbC9xc3Nsc29ja2V0X29wZW5zc2wuY3BwCitAQCAtNTUwLDkgKzU1MCw5IEBAIHN0YXRpYyB2 b2lkIHFfbG9hZENpcGhlcnNGb3JDb25uZWN0aW9uKFNTTCAqY29ubmVjdGlvbiwgUUxpc3Q8UVNz bENpcGhlcj4gJmNpcGhlCisgLy8gRGVmaW5lZCBpbiBxc3Nsc29ja2V0LmNwcAorIHZvaWQgcV9z ZXREZWZhdWx0RHRsc0NpcGhlcnMoY29uc3QgUUxpc3Q8UVNzbENpcGhlcj4gJmNpcGhlcnMpOwor IAorLWxvbmcgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRpb25zKFFT c2w6OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRpb25zIHNzbE9wdGlvbnMpCisr cXNzbG9wdGlvbnMgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRpb25z KFFTc2w6OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRpb25zIHNzbE9wdGlvbnMp CisgeworLSAgICBsb25nIG9wdGlvbnM7CisrICAgIHFzc2xvcHRpb25zIG9wdGlvbnM7CisgICAg IGlmIChwcm90b2NvbCA9PSBRU3NsOjpUbHNWMVNzbFYzKQorICAgICAgICAgb3B0aW9ucyA9IFNT TF9PUF9BTEx8U1NMX09QX05PX1NTTHYyfFNTTF9PUF9OT19TU0x2MzsKKyAgICAgZWxzZSBpZiAo cHJvdG9jb2wgPT0gUVNzbDo6U2VjdXJlUHJvdG9jb2xzKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3AuaCBiL3F0YmFzZS9zcmMvbmV0d29y ay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3AuaAoraW5kZXggNDEwM2RlMjNlOC4uNTU0NzU4OTI1 NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3Ns X3AuaAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfcC5o CitAQCAtMTA3LDYgKzEwNywxMiBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorKyNpZiBk ZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9WRVJTSU9OX01BSk9SID49 IDMKKyt0eXBlZGVmIHVpbnQ2NF90IHFzc2xvcHRpb25zOworKyNlbHNlCisrdHlwZWRlZiB1bnNp Z25lZCBsb25nIHFzc2xvcHRpb25zOworKyNlbmRpZgorKworIHN0cnVjdCBRU3NsRXJyb3JFbnRy eSB7CisgICAgIGludCBjb2RlOworICAgICBpbnQgZGVwdGg7CitAQCAtMTcxLDcgKzE3Nyw3IEBA IHB1YmxpYzoKKyAgICAgUVZlY3RvcjxRU3NsRXJyb3I+IG9jc3BFcnJvcnM7CisgICAgIFFCeXRl QXJyYXkgb2NzcFJlc3BvbnNlRGVyOworIAorLSAgICBRX0FVVE9URVNUX0VYUE9SVCBzdGF0aWMg bG9uZyBzZXR1cE9wZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3Ns OjpTc2xPcHRpb25zIHNzbE9wdGlvbnMpOworKyAgICBRX0FVVE9URVNUX0VYUE9SVCBzdGF0aWMg cXNzbG9wdGlvbnMgc2V0dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBwcm90b2Nv bCwgUVNzbDo6U3NsT3B0aW9ucyBzc2xPcHRpb25zKTsKKyAgICAgc3RhdGljIFFTc2xDaXBoZXIg UVNzbENpcGhlcl9mcm9tX1NTTF9DSVBIRVIoY29uc3QgU1NMX0NJUEhFUiAqY2lwaGVyKTsKKyAg ICAgc3RhdGljIFFMaXN0PFFTc2xDZXJ0aWZpY2F0ZT4gU1RBQ0tPRlg1MDlfdG9fUVNzbENlcnRp ZmljYXRlcyhTVEFDS19PRihYNTA5KSAqeDUwOSk7CisgICAgIHN0YXRpYyBRTGlzdDxRU3NsRXJy b3I+IHZlcmlmeShjb25zdCBRTGlzdDxRU3NsQ2VydGlmaWNhdGU+ICZjZXJ0aWZpY2F0ZUNoYWlu LCBjb25zdCBRU3RyaW5nICZob3N0TmFtZSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3 b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5jcHAgYi9xdGJhc2Uvc3JjL25ldHdv cmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNwcAoraW5kZXggZTUzZmIyNzlmMC4u NDU5Y2NkMGIxOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tl dF9vcGVuc3NsX3N5bWJvbHMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xz b2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNwcAorQEAgLTE0OCw3ICsxNDgsNiBAQCBERUZJTkVGVU5D KGludCwgRVZQX1BLRVlfdXBfcmVmLCBFVlBfUEtFWSAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikK KyBERUZJTkVGVU5DMihFVlBfUEtFWV9DVFggKiwgRVZQX1BLRVlfQ1RYX25ldywgRVZQX1BLRVkg KnBrZXksIHBrZXksIEVOR0lORSAqZSwgZSwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJ TkVGVU5DKGludCwgRVZQX1BLRVlfcGFyYW1fY2hlY2ssIEVWUF9QS0VZX0NUWCAqY3R4LCBjdHgs IHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQyh2b2lkLCBFVlBfUEtFWV9DVFhfZnJlZSwg RVZQX1BLRVlfQ1RYICpjdHgsIGN0eCwgcmV0dXJuLCByZXR1cm4pCistREVGSU5FRlVOQyhpbnQs IEVWUF9QS0VZX2Jhc2VfaWQsIEVWUF9QS0VZICphLCBhLCByZXR1cm4gTklEX3VuZGVmLCByZXR1 cm4pCisgREVGSU5FRlVOQyhpbnQsIFJTQV9iaXRzLCBSU0EgKmEsIGEsIHJldHVybiAwLCByZXR1 cm4pCisgREVGSU5FRlVOQyhpbnQsIERTQV9iaXRzLCBEU0EgKmEsIGEsIHJldHVybiAwLCByZXR1 cm4pCisgREVGSU5FRlVOQyhpbnQsIE9QRU5TU0xfc2tfbnVtLCBPUEVOU1NMX1NUQUNLICphLCBh LCByZXR1cm4gLTEsIHJldHVybikKK0BAIC0xNTgsNyArMTU3LDcgQEAgREVGSU5FRlVOQzIodm9p ZCwgT1BFTlNTTF9za19wdXNoLCBPUEVOU1NMX1NUQUNLICphLCBhLCB2b2lkICpiLCBiLCByZXR1 cm4sIERVTU0KKyBERUZJTkVGVU5DKHZvaWQsIE9QRU5TU0xfc2tfZnJlZSwgT1BFTlNTTF9TVEFD SyAqYSwgYSwgcmV0dXJuLCBEVU1NWUFSRykKKyBERUZJTkVGVU5DMih2b2lkICosIE9QRU5TU0xf c2tfdmFsdWUsIE9QRU5TU0xfU1RBQ0sgKmEsIGEsIGludCBiLCBiLCByZXR1cm4gbnVsbHB0ciwg cmV0dXJuKQorIERFRklORUZVTkMoaW50LCBTU0xfc2Vzc2lvbl9yZXVzZWQsIFNTTCAqYSwgYSwg cmV0dXJuIDAsIHJldHVybikKKy1ERUZJTkVGVU5DMih1bnNpZ25lZCBsb25nLCBTU0xfQ1RYX3Nl dF9vcHRpb25zLCBTU0xfQ1RYICpjdHgsIGN0eCwgdW5zaWduZWQgbG9uZyBvcCwgb3AsIHJldHVy biAwLCByZXR1cm4pCisrREVGSU5FRlVOQzIocXNzbG9wdGlvbnMsIFNTTF9DVFhfc2V0X29wdGlv bnMsIFNTTF9DVFggKmN0eCwgY3R4LCBxc3Nsb3B0aW9ucyBvcCwgb3AsIHJldHVybiAwLCByZXR1 cm4pCisgREVGSU5FRlVOQyhpbnQsIFNTTF9DVFhfZ2V0X3NlY3VyaXR5X2xldmVsLCBjb25zdCBT U0xfQ1RYICpjdHgsIGN0eCwgcmV0dXJuIC0xLCByZXR1cm4pCisgREVGSU5FRlVOQzIodm9pZCwg U1NMX0NUWF9zZXRfc2VjdXJpdHlfbGV2ZWwsIFNTTF9DVFggKmN0eCwgY3R4LCBpbnQgbGV2ZWws IGxldmVsLCByZXR1cm4sIHJldHVybikKKyAjaWZkZWYgVExTMV8zX1ZFUlNJT04KK0BAIC0zNzEs NyArMzcwLDE1IEBAIERFRklORUZVTkMoY29uc3QgU1NMX0NJUEhFUiAqLCBTU0xfZ2V0X2N1cnJl bnRfY2lwaGVyLCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyCisgREVGSU5FRlVOQyhpbnQsIFNT TF92ZXJzaW9uLCBjb25zdCBTU0wgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVO QzIoaW50LCBTU0xfZ2V0X2Vycm9yLCBTU0wgKmEsIGEsIGludCBiLCBiLCByZXR1cm4gLTEsIHJl dHVybikKKyBERUZJTkVGVU5DKFNUQUNLX09GKFg1MDkpICosIFNTTF9nZXRfcGVlcl9jZXJ0X2No YWluLCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisrCisrI2lmIGRlZmluZWQo T1BFTlNTTF9WRVJTSU9OX01BSk9SKSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworK0RF RklORUZVTkMoWDUwOSAqLCBTU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRlLCBTU0wgKmEsIGEsIHJl dHVybiBudWxscHRyLCByZXR1cm4pCisrREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX2dldF9iYXNl X2lkLCBjb25zdCBFVlBfUEtFWSAqcGtleSwgcGtleSwgcmV0dXJuIC0xLCByZXR1cm4pCisrI2Vs c2UKKyBERUZJTkVGVU5DKFg1MDkgKiwgU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlLCBTU0wgKmEs IGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisrREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX2Jh c2VfaWQsIEVWUF9QS0VZICphLCBhLCByZXR1cm4gTklEX3VuZGVmLCByZXR1cm4pCisrI2VuZGlm IC8vIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrCisgREVGSU5FRlVOQyhsb25nLCBTU0xf Z2V0X3ZlcmlmeV9yZXN1bHQsIGNvbnN0IFNTTCAqYSwgYSwgcmV0dXJuIC0xLCByZXR1cm4pCisg REVGSU5FRlVOQyhTU0wgKiwgU1NMX25ldywgU1NMX0NUWCAqYSwgYSwgcmV0dXJuIG51bGxwdHIs IHJldHVybikKKyBERUZJTkVGVU5DKFNTTF9DVFggKiwgU1NMX2dldF9TU0xfQ1RYLCBTU0wgKmEs IGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCitAQCAtNDkyLDkgKzQ5OSw3IEBAIERFRklORUZV TkMoREggKiwgREhfbmV3LCBEVU1NWUFSRywgRFVNTVlBUkcsIHJldHVybiBudWxscHRyLCByZXR1 cm4pCisgREVGSU5FRlVOQyh2b2lkLCBESF9mcmVlLCBESCAqZGgsIGRoLCByZXR1cm4sIERVTU1Z QVJHKQorIERFRklORUZVTkMzKERIICosIGQyaV9ESHBhcmFtcywgREgqKmEsIGEsIGNvbnN0IHVu c2lnbmVkIGNoYXIgKipwcCwgcHAsIGxvbmcgbGVuZ3RoLCBsZW5ndGgsIHJldHVybiBudWxscHRy LCByZXR1cm4pCisgREVGSU5FRlVOQzIoaW50LCBpMmRfREhwYXJhbXMsIERIICphLCBhLCB1bnNp Z25lZCBjaGFyICoqcCwgcCwgcmV0dXJuIC0xLCByZXR1cm4pCistI2lmbmRlZiBPUEVOU1NMX05P X0RFUFJFQ0FURURfM18wCisgREVGSU5FRlVOQzIoaW50LCBESF9jaGVjaywgREggKmRoLCBkaCwg aW50ICpjb2RlcywgY29kZXMsIHJldHVybiAwLCByZXR1cm4pCistI2VuZGlmIC8vIE9QRU5TU0xf Tk9fREVQUkVDQVRFRF8zXzAKKyBERUZJTkVGVU5DMyhCSUdOVU0gKiwgQk5fYmluMmJuLCBjb25z dCB1bnNpZ25lZCBjaGFyICpzLCBzLCBpbnQgbGVuLCBsZW4sIEJJR05VTSAqcmV0LCByZXQsIHJl dHVybiBudWxscHRyLCByZXR1cm4pCisgCisgI2lmbmRlZiBPUEVOU1NMX05PX0VDCitAQCAtODY4 LDcgKzg3Myw2IEBAIGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5bWJvbHMoKQorICAgICBSRVNPTFZF RlVOQyhFVlBfUEtFWV9DVFhfbmV3KQorICAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9wYXJhbV9j aGVjaykKKyAgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfQ1RYX2ZyZWUpCistICAgIFJFU09MVkVG VU5DKEVWUF9QS0VZX2Jhc2VfaWQpCisgICAgIFJFU09MVkVGVU5DKFJTQV9iaXRzKQorICAgICBS RVNPTFZFRlVOQyhPUEVOU1NMX3NrX25ld19udWxsKQorICAgICBSRVNPTFZFRlVOQyhPUEVOU1NM X3NrX3B1c2gpCitAQCAtMTEwNyw3ICsxMTExLDE1IEBAIGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5 bWJvbHMoKQorICAgICBSRVNPTFZFRlVOQyhTU0xfdmVyc2lvbikKKyAgICAgUkVTT0xWRUZVTkMo U1NMX2dldF9lcnJvcikKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9wZWVyX2NlcnRfY2hhaW4p CisrCisrI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJTSU9OX01BSk9SKSAmJiBPUEVOU1NMX1ZFUlNJ T05fTUFKT1IgPj0gMworKyAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRl KQorKyAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9nZXRfYmFzZV9pZCkKKysjZWxzZQorICAgICBS RVNPTFZFRlVOQyhTU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUpCisrICAgIFJFU09MVkVGVU5DKEVW UF9QS0VZX2Jhc2VfaWQpCisrI2VuZGlmIC8vIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisr CisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRfdmVyaWZ5X3Jlc3VsdCkKKyAgICAgUkVTT0xWRUZV TkMoU1NMX25ldykKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9TU0xfQ1RYKQorQEAgLTEyMDYs OSArMTIxOCw3IEBAIGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5bWJvbHMoKQorICAgICBSRVNPTFZF RlVOQyhESF9mcmVlKQorICAgICBSRVNPTFZFRlVOQyhkMmlfREhwYXJhbXMpCisgICAgIFJFU09M VkVGVU5DKGkyZF9ESHBhcmFtcykKKy0jaWZuZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAK KyAgICAgUkVTT0xWRUZVTkMoREhfY2hlY2spCistI2VuZGlmIC8vIE9QRU5TU0xfTk9fREVQUkVD QVRFRF8zXzAKKyAgICAgUkVTT0xWRUZVTkMoQk5fYmluMmJuKQorIAorICNpZm5kZWYgT1BFTlNT TF9OT19FQworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9v cGVuc3NsX3N5bWJvbHNfcC5oIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29w ZW5zc2xfc3ltYm9sc19wLmgKK2luZGV4IDk1ZTg4OTdhM2IuLjI3YWVmZmExOGEgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3Au aAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9s c19wLmgKK0BAIC0yMzcsNyArMjM3LDYgQEAgUV9BVVRPVEVTVF9FWFBPUlQgaW50IHFfRVZQX1BL RVlfdXBfcmVmKEVWUF9QS0VZICphKTsKKyBFVlBfUEtFWV9DVFggKnFfRVZQX1BLRVlfQ1RYX25l dyhFVlBfUEtFWSAqcGtleSwgRU5HSU5FICplKTsKKyB2b2lkIHFfRVZQX1BLRVlfQ1RYX2ZyZWUo RVZQX1BLRVlfQ1RYICpjdHgpOworIGludCBxX0VWUF9QS0VZX3BhcmFtX2NoZWNrKEVWUF9QS0VZ X0NUWCAqY3R4KTsKKy1pbnQgcV9FVlBfUEtFWV9iYXNlX2lkKEVWUF9QS0VZICphKTsKKyBpbnQg cV9SU0FfYml0cyhSU0EgKmEpOworIFFfQVVUT1RFU1RfRVhQT1JUIGludCBxX09QRU5TU0xfc2tf bnVtKE9QRU5TU0xfU1RBQ0sgKmEpOworIFFfQVVUT1RFU1RfRVhQT1JUIHZvaWQgcV9PUEVOU1NM X3NrX3BvcF9mcmVlKE9QRU5TU0xfU1RBQ0sgKmEsIHZvaWQgKCpiKSh2b2lkICopKTsKK0BAIC0y NDYsNyArMjQ1LDcgQEAgUV9BVVRPVEVTVF9FWFBPUlQgdm9pZCBxX09QRU5TU0xfc2tfcHVzaChP UEVOU1NMX1NUQUNLICpzdCwgdm9pZCAqZGF0YSk7CisgUV9BVVRPVEVTVF9FWFBPUlQgdm9pZCBx X09QRU5TU0xfc2tfZnJlZShPUEVOU1NMX1NUQUNLICphKTsKKyBRX0FVVE9URVNUX0VYUE9SVCB2 b2lkICogcV9PUEVOU1NMX3NrX3ZhbHVlKE9QRU5TU0xfU1RBQ0sgKmEsIGludCBiKTsKKyBpbnQg cV9TU0xfc2Vzc2lvbl9yZXVzZWQoU1NMICphKTsKKy11bnNpZ25lZCBsb25nIHFfU1NMX0NUWF9z ZXRfb3B0aW9ucyhTU0xfQ1RYICpjdHgsIHVuc2lnbmVkIGxvbmcgb3ApOworK3Fzc2xvcHRpb25z IHFfU1NMX0NUWF9zZXRfb3B0aW9ucyhTU0xfQ1RYICpjdHgsIHFzc2xvcHRpb25zIG9wKTsKKyBp bnQgcV9PUEVOU1NMX2luaXRfc3NsKHVpbnQ2NF90IG9wdHMsIGNvbnN0IE9QRU5TU0xfSU5JVF9T RVRUSU5HUyAqc2V0dGluZ3MpOworIHNpemVfdCBxX1NTTF9nZXRfY2xpZW50X3JhbmRvbShTU0wg KmEsIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbik7Cisgc2l6ZV90IHFfU1NMX1NF U1NJT05fZ2V0X21hc3Rlcl9rZXkoY29uc3QgU1NMX1NFU1NJT04gKnNlc3Npb24sIHVuc2lnbmVk IGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbik7CitAQCAtNTEwLDcgKzUwOSw2IEBAIGNvbnN0IFNT TF9DSVBIRVIgKnFfU1NMX2dldF9jdXJyZW50X2NpcGhlcihTU0wgKmEpOworIGludCBxX1NTTF92 ZXJzaW9uKGNvbnN0IFNTTCAqYSk7CisgaW50IHFfU1NMX2dldF9lcnJvcihTU0wgKmEsIGludCBi KTsKKyBTVEFDS19PRihYNTA5KSAqcV9TU0xfZ2V0X3BlZXJfY2VydF9jaGFpbihTU0wgKmEpOwor LVg1MDkgKnFfU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKFNTTCAqYSk7CisgbG9uZyBxX1NTTF9n ZXRfdmVyaWZ5X3Jlc3VsdChjb25zdCBTU0wgKmEpOworIFNTTCAqcV9TU0xfbmV3KFNTTF9DVFgg KmEpOworIFNTTF9DVFggKnFfU1NMX2dldF9TU0xfQ1RYKFNTTCAqYSk7CitAQCAtNTgyLDEwICs1 ODAsNyBAQCBESCAqcV9ESF9uZXcoKTsKKyB2b2lkIHFfREhfZnJlZShESCAqZGgpOworIERIICpx X2QyaV9ESHBhcmFtcyhESCAqKmEsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKipwcCwgbG9uZyBsZW5n dGgpOworIGludCBxX2kyZF9ESHBhcmFtcyhESCAqYSwgdW5zaWduZWQgY2hhciAqKnApOworLQor LSNpZm5kZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIGludCBxX0RIX2NoZWNrKERIICpk aCwgaW50ICpjb2Rlcyk7CistI2VuZGlmIC8vIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyAK KyBCSUdOVU0gKnFfQk5fYmluMmJuKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMsIGludCBsZW4sIEJJ R05VTSAqcmV0KTsKKyAjZGVmaW5lIHFfU1NMX0NUWF9zZXRfdG1wX2RoKGN0eCwgZGgpIHFfU1NM X0NUWF9jdHJsKChjdHgpLCBTU0xfQ1RSTF9TRVRfVE1QX0RILCAwLCAoY2hhciAqKWRoKQorQEAg LTc1NCw2ICs3NDksMTcgQEAgdm9pZCBxX0NSWVBUT19mcmVlKHZvaWQgKnN0ciwgY29uc3QgY2hh ciAqZmlsZSwgaW50IGxpbmUpOworIGludCBxX1NTTF9DVFhfZ2V0X3NlY3VyaXR5X2xldmVsKGNv bnN0IFNTTF9DVFggKmN0eCk7Cisgdm9pZCBxX1NTTF9DVFhfc2V0X3NlY3VyaXR5X2xldmVsKFNT TF9DVFggKmN0eCwgaW50IGxldmVsKTsKKyAKKysvLyBIZXJlIHdlIGhhdmUgdGhlIG9uZXMgdGhh dCBtYWtlIGRpZmZlcmVuY2UgYmV0d2VlbiBPcGVuU1NMIHByZS9wb3N0IHYzOgorKyNpZiBkZWZp bmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMK KytYNTA5ICpxX1NTTF9nZXQxX3BlZXJfY2VydGlmaWNhdGUoU1NMICphKTsKKysjZGVmaW5lIHFf U1NMX2dldF9wZWVyX2NlcnRpZmljYXRlIHFfU1NMX2dldDFfcGVlcl9jZXJ0aWZpY2F0ZQorK2lu dCBxX0VWUF9QS0VZX2dldF9iYXNlX2lkKGNvbnN0IEVWUF9QS0VZICpwa2V5KTsKKysjZGVmaW5l IHFfRVZQX1BLRVlfYmFzZV9pZCBxX0VWUF9QS0VZX2dldF9iYXNlX2lkCisrI2Vsc2UKKytYNTA5 ICpxX1NTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShTU0wgKmEpOworK2ludCBxX0VWUF9QS0VZX2Jh c2VfaWQoRVZQX1BLRVkgKmEpOworKyNlbmRpZiAvLyBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0g MworKworIFFUX0VORF9OQU1FU1BBQ0UKKyAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oIGIvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2UvcXRfZWdsX3AuaAoraW5kZXggYmYzN2Qw N2ZkOC4uZGJkNDJmYjc5OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L2VnbGNvbnZlbmllbmNlL3F0X2VnbF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L2VnbGNvbnZlbmllbmNlL3F0X2VnbF9wLmgKK0BAIC02MSw3ICs2MSwxMSBAQAorICMgaWYg IWRlZmluZWQoUV9PU19JTlRFR1JJVFkpCisgIyAgZGVmaW5lIFdJTl9JTlRFUkZBQ0VfQ1VTVE9N ICAgLy8gTlYKKyAjIGVuZGlmIC8vIFFfT1NfSU5URUdSSVRZCistI2VuZGlmICAvLyBRVF9FR0xf Tk9fWDExCisrI2Vsc2UgLy8gUVRfRUdMX05PX1gxMQorKy8vIElmIG9uZSBoYXMgYW4gZWdscGxh dGZvcm0uaCB3aXRoIGh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvRUdMLVJlZ2lzdHJ5 L3B1bGwvMTMwCisrLy8gdGhhdCBuZWVkcyBVU0VfWDExIHRvIGJlIGRlZmluZWQuCisrIyBkZWZp bmUgVVNFX1gxMQorKyNlbmRpZgorIAorICNpZmRlZiBRVF9FR0xfV0FZTEFORAorICMgZGVmaW5l IFdBWUxBTkQgLy8gTlYKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9m b250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRhYmFzZS5jcHAgYi9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdk YXRhYmFzZS5jcHAKK2luZGV4IDE1OWI0OTBjZTAuLjAwYWE4MGNkNTggMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRj b25maWdkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ZvbnRk YXRhYmFzZXMvZm9udGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNlLmNwcAorQEAgLTU2Nyw2ICs1 NjcsOCBAQCB2b2lkIFFGb250Y29uZmlnRGF0YWJhc2U6OnBvcHVsYXRlRm9udERhdGFiYXNlKCkK KyAgICAgICAgIGZvbnRzID0gRmNGb250TGlzdChudWxscHRyLCBwYXR0ZXJuLCBvcyk7CisgICAg ICAgICBGY09iamVjdFNldERlc3Ryb3kob3MpOworICAgICAgICAgRmNQYXR0ZXJuRGVzdHJveShw YXR0ZXJuKTsKKysgICAgICAgIGlmICghZm9udHMpCisrICAgICAgICAgICAgcmV0dXJuOworICAg ICB9CisgCisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZm9udHMtPm5mb250OyBpKyspCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jj b21tb24uY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4 a2Jjb21tb24uY3BwCitpbmRleCBiNzEzYzE5NDQ3Li43Y2I5YThjNzlhIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb24uY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNv bW1vbi5jcHAKK0BAIC05NSw2ICs5NSw3IEBAIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgYXV0byBL ZXlUYmwgPSBxTWFrZUFycmF5KAorICAgICAgICAgWGtiMlF0PFhLQl9LRVlfQ2xlYXIsICAgICAg ICAgICAgICAgICAgIFF0OjpLZXlfRGVsZXRlPiwKKyAgICAgICAgIFhrYjJRdDxYS0JfS0VZX1Bh dXNlLCAgICAgICAgICAgICAgICAgICBRdDo6S2V5X1BhdXNlPiwKKyAgICAgICAgIFhrYjJRdDxY S0JfS0VZX1ByaW50LCAgICAgICAgICAgICAgICAgICBRdDo6S2V5X1ByaW50PiwKKysgICAgICAg IFhrYjJRdDxYS0JfS0VZX1N5c19SZXEsICAgICAgICAgICAgICAgICBRdDo6S2V5X1N5c1JlcT4s CisgICAgICAgICBYa2IyUXQ8MHgxMDA1RkY2MCwgICAgICAgICAgICAgICAgICAgICAgUXQ6Oktl eV9TeXNSZXE+LCAgICAgICAgIC8vIGhhcmRjb2RlZCBTdW4gU3lzUmVxCisgICAgICAgICBYa2Iy UXQ8MHgxMDA3ZmYwMCwgICAgICAgICAgICAgICAgICAgICAgUXQ6OktleV9TeXNSZXE+LCAgICAg ICAgIC8vIGhhcmRjb2RlZCBYMzg2IFN5c1JlcQorIAorQEAgLTQ3MSw3ICs0NzIsNyBAQCBRVmVj dG9yPHhrYl9rZXlzeW1fdD4gUVhrYkNvbW1vbjo6dG9LZXlzeW0oUUtleUV2ZW50ICpldmVudCkK KyAgICAgfSBlbHNlIGlmIChldmVudC0+bW9kaWZpZXJzKCkgJiBRdDo6S2V5cGFkTW9kaWZpZXIp IHsKKyAgICAgICAgIGlmIChxdEtleSA+PSBRdDo6S2V5XzAgJiYgcXRLZXkgPD0gUXQ6OktleV85 KQorICAgICAgICAgICAgIGtleXN5bXMuYXBwZW5kKFhLQl9LRVlfS1BfMCArIChxdEtleSAtIFF0 OjpLZXlfMCkpOworLSAgICB9IGVsc2UgaWYgKGlzTGF0aW4ocXRLZXkpICYmIGV2ZW50LT50ZXh0 KCkuaXNVcHBlcigpKSB7CisrICAgIH0gZWxzZSBpZiAoaXNMYXRpbjEocXRLZXkpICYmIGV2ZW50 LT50ZXh0KCkuaXNVcHBlcigpKSB7CisgICAgICAgICBrZXlzeW1zLmFwcGVuZChxdEtleSk7Cisg ICAgIH0KKyAKK0BAIC01MjMsNyArNTI0LDcgQEAgaW50IFFYa2JDb21tb246OmtleXN5bVRvUXRL ZXkoeGtiX2tleXN5bV90IGtleXN5bSwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaWUKKyAg ICAgICAgIC8vIFdpdGggc3RhbmRhcmQgc2hvcnRjdXRzIHdlIHNob3VsZCBwcmVmZXIgYSBsYXRp biBjaGFyYWN0ZXIsIHRoaXMgaXMKKyAgICAgICAgIC8vIGZvciBjaGVja3MgbGlrZSAic29tZSBx a2V5ZXZlbnQgPT0gUUtleVNlcXVlbmNlOjpDb3B5IiB0byB3b3JrIGV2ZW4KKyAgICAgICAgIC8v IHdoZW4gdXNpbmcgZm9yIGV4YW1wbGUgJ3J1c3NpYW4nIGtleWJvYXJkIGxheW91dC4KKy0gICAg ICAgIGlmICghUVhrYkNvbW1vbjo6aXNMYXRpbihrZXlzeW0pKSB7CisrICAgICAgICBpZiAoIVFY a2JDb21tb246OmlzTGF0aW4xKGtleXN5bSkpIHsKKyAgICAgICAgICAgICB4a2Jfa2V5c3ltX3Qg bGF0aW5LZXlzeW0gPSBRWGtiQ29tbW9uOjpsb29rdXBMYXRpbktleXN5bShzdGF0ZSwgY29kZSk7 CisgICAgICAgICAgICAgaWYgKGxhdGluS2V5c3ltICE9IFhLQl9LRVlfTm9TeW1ib2wpCisgICAg ICAgICAgICAgICAgIGtleXN5bSA9IGxhdGluS2V5c3ltOworQEAgLTU0Niw3ICs1NDcsNyBAQCBz dGF0aWMgaW50IGtleXN5bVRvUXRLZXlfaW50ZXJuYWwoeGtiX2tleXN5bV90IGtleXN5bSwgUXQ6 OktleWJvYXJkTW9kaWZpZXJzIG1vZAorICAgICB9IGVsc2UgaWYgKGtleXN5bSA+PSBYS0JfS0VZ X0tQXzAgJiYga2V5c3ltIDw9IFhLQl9LRVlfS1BfOSkgeworICAgICAgICAgLy8gbnVtZXJpYyBr ZXlwYWQga2V5cworICAgICAgICAgcXRLZXkgPSBRdDo6S2V5XzAgKyAoa2V5c3ltIC0gWEtCX0tF WV9LUF8wKTsKKy0gICAgfSBlbHNlIGlmIChRWGtiQ29tbW9uOjppc0xhdGluKGtleXN5bSkpIHsK KysgICAgfSBlbHNlIGlmIChRWGtiQ29tbW9uOjppc0xhdGluMShrZXlzeW0pKSB7CisgICAgICAg ICBxdEtleSA9IFFYa2JDb21tb246OnF4a2Jjb21tb25feGtiX2tleXN5bV90b191cHBlcihrZXlz eW0pOworICAgICB9IGVsc2UgeworICAgICAgICAgLy8gY2hlY2sgaWYgd2UgaGF2ZSBhIGRpcmVj dCBtYXBwaW5nCitAQCAtNjc4LDcgKzY3OSw3IEBAIFFMaXN0PGludD4gUVhrYkNvbW1vbjo6cG9z c2libGVLZXlzKHhrYl9zdGF0ZSAqc3RhdGUsIGNvbnN0IFFLZXlFdmVudCAqZXZlbnQsCisgICAg ICAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbmVlZGVkTW9kcyA9IE1vZHNUYmxbaV07CisgICAg ICAgICBpZiAoKG1vZGlmaWVycyAmIG5lZWRlZE1vZHMpID09IG5lZWRlZE1vZHMpIHsKKyAgICAg ICAgICAgICBpZiAoaSA9PSA4KSB7CistICAgICAgICAgICAgICAgIGlmIChpc0xhdGluKGJhc2VR dEtleSkpCisrICAgICAgICAgICAgICAgIGlmIChpc0xhdGluMShiYXNlUXRLZXkpKQorICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgIC8vIGFkZCBhIGxhdGlu IGtleSBhcyBhIGZhbGwgYmFjayBrZXkKKyAgICAgICAgICAgICAgICAgc3ltID0gbG9va3VwTGF0 aW5LZXlzeW0oc3RhdGUsIGtleWNvZGUpOworQEAgLTczMyw3ICs3MzQsNyBAQCB2b2lkIFFYa2JD b21tb246OnZlcmlmeUhhc0xhdGluTGF5b3V0KHhrYl9rZXltYXAgKmtleW1hcCkKKyAgICAgZm9y ICh4a2JfbGF5b3V0X2luZGV4X3QgbGF5b3V0ID0gMDsgbGF5b3V0IDwgbGF5b3V0Q291bnQ7ICsr bGF5b3V0KSB7CisgICAgICAgICBmb3IgKHhrYl9rZXljb2RlX3QgY29kZSA9IG1pbktleWNvZGU7 IGNvZGUgPCBtYXhLZXljb2RlOyArK2NvZGUpIHsKKyAgICAgICAgICAgICB4a2Jfa2V5bWFwX2tl eV9nZXRfc3ltc19ieV9sZXZlbChrZXltYXAsIGNvZGUsIGxheW91dCwgMCwgJmtleXN5bXMpOwor LSAgICAgICAgICAgIGlmIChrZXlzeW1zICYmIGlzTGF0aW4oa2V5c3ltc1swXSkpCisrICAgICAg ICAgICAgaWYgKGtleXN5bXMgJiYgaXNMYXRpbjEoa2V5c3ltc1swXSkpCisgICAgICAgICAgICAg ICAgIG5yTGF0aW5LZXlzKys7CisgICAgICAgICAgICAgaWYgKG5yTGF0aW5LZXlzID4gMTApIC8v IGFyYml0cmFyaWx5IGNob3NlbiB0aHJlc2hvbGQKKyAgICAgICAgICAgICAgICAgcmV0dXJuOwor QEAgLTc2Niw3ICs3NjcsNyBAQCB4a2Jfa2V5c3ltX3QgUVhrYkNvbW1vbjo6bG9va3VwTGF0aW5L ZXlzeW0oeGtiX3N0YXRlICpzdGF0ZSwgeGtiX2tleWNvZGVfdCBrZXljbworICAgICAgICAgeGti X2xldmVsX2luZGV4X3QgbGV2ZWwgPSB4a2Jfc3RhdGVfa2V5X2dldF9sZXZlbChzdGF0ZSwga2V5 Y29kZSwgbGF5b3V0KTsKKyAgICAgICAgIGlmICh4a2Jfa2V5bWFwX2tleV9nZXRfc3ltc19ieV9s ZXZlbChrZXltYXAsIGtleWNvZGUsIGxheW91dCwgbGV2ZWwsICZzeW1zKSAhPSAxKQorICAgICAg ICAgICAgIGNvbnRpbnVlOworLSAgICAgICAgaWYgKGlzTGF0aW4oc3ltc1swXSkpIHsKKysgICAg ICAgIGlmIChpc0xhdGluMShzeW1zWzBdKSkgeworICAgICAgICAgICAgIHN5bSA9IHN5bXNbMF07 CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5oIGIvcXRiYXNl L3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5oCitpbmRl eCA1NjFlYWUwM2RiLi44Mzg5YmQ4ZjVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9y bXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5oCisrKysgYi9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbl9wLmgKK0BAIC05NCw4 ICs5NCw4IEBAIHB1YmxpYzoKKyAgICAgc3RhdGljIHZvaWQgdmVyaWZ5SGFzTGF0aW5MYXlvdXQo eGtiX2tleW1hcCAqa2V5bWFwKTsKKyAgICAgc3RhdGljIHhrYl9rZXlzeW1fdCBsb29rdXBMYXRp bktleXN5bSh4a2Jfc3RhdGUgKnN0YXRlLCB4a2Jfa2V5Y29kZV90IGtleWNvZGUpOworIAorLSAg ICBzdGF0aWMgYm9vbCBpc0xhdGluKHhrYl9rZXlzeW1fdCBzeW0pIHsKKy0gICAgICAgIHJldHVy biAoKHN5bSA+PSAnYScgJiYgc3ltIDw9ICd6JykgfHwgKHN5bSA+PSAnQScgJiYgc3ltIDw9ICda JykpOworKyAgICBzdGF0aWMgYm9vbCBpc0xhdGluMSh4a2Jfa2V5c3ltX3Qgc3ltKSB7CisrICAg ICAgICByZXR1cm4gc3ltIDw9IDB4ZmY7CisgICAgIH0KKyAgICAgc3RhdGljIGJvb2wgaXNLZXlw YWQoeGtiX2tleXN5bV90IHN5bSkgeworICAgICAgICAgcmV0dXJuIHN5bSA+PSBYS0JfS0VZX0tQ X1NwYWNlICYmIHN5bSA8PSBYS0JfS0VZX0tQXzk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9w bGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2UvcWttc2RldmljZS5jcHAgYi9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcAoraW5kZXggOGNk N2Y5YjM2OC4uNDA2Zjg0NjYzZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L2ttc2NvbnZlbmllbmNlL3FrbXNkZXZpY2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRm b3Jtc3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcAorQEAgLTMxOCw3ICszMTgs NyBAQCBRUGxhdGZvcm1TY3JlZW4gKlFLbXNEZXZpY2U6OmNyZWF0ZVNjcmVlbkZvckNvbm5lY3Rv cihkcm1Nb2RlUmVzUHRyIHJlc291cmNlcywKKyAKKyAgICAgaWYgKGN1cnJlbnQgPCAwICYmIGNy dGNfbW9kZS5jbG9jayAhPSAwKSB7CisgICAgICAgICBtb2RlcyA8PCBjcnRjX21vZGU7CistICAg ICAgICBjdXJyZW50ID0gbW9kZS5zaXplKCkgLSAxOworKyAgICAgICAgY3VycmVudCA9IG1vZGVz LnNpemUoKSAtIDE7CisgICAgIH0KKyAKKyAgICAgaWYgKGNvbmZpZ3VyYXRpb24gPT0gT3V0cHV0 Q29uZmlnQ3VycmVudCkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9s aW51eGFjY2Vzc2liaWxpdHkvYXRzcGlhZGFwdG9yLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1z dXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3BwCitpbmRleCA5MTUzZmQy MGJiLi4yNTVlYTVlMzNlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQv bGludXhhY2Nlc3NpYmlsaXR5L2F0c3BpYWRhcHRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxh dGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3BwCitAQCAtMTk0 LDYgKzE5NCw5IEBAIFFTdHJpbmcgQXRTcGlBZGFwdG9yOjppbnRyb3NwZWN0KGNvbnN0IFFTdHJp bmcgJnBhdGgpIGNvbnN0CisgICAgICAgICAgICAgICAgICIgICAgICA8YXJnIGRpcmVjdGlvbj1c Im91dFwiIHR5cGU9XCIoc28pXCIvPlxuIgorICAgICAgICAgICAgICAgICAiICAgICAgPGFubm90 YXRpb24gdmFsdWU9XCJRU3BpT2JqZWN0UmVmZXJlbmNlXCIgbmFtZT1cIm9yZy5xdHByb2plY3Qu UXREQnVzLlF0VHlwZU5hbWUuT3V0MFwiLz5cbiIKKyAgICAgICAgICAgICAgICAgIiAgICA8L21l dGhvZD5cbiIKKysgICAgICAgICAgICAgICAgIiAgICA8bWV0aG9kIG5hbWU9XCJHZXRBY2Nlc3Np YmxlSWRcIj5cbiIKKysgICAgICAgICAgICAgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPVwib3V0 XCIgdHlwZT1cInNcIi8+XG4iCisrICAgICAgICAgICAgICAgICIgICAgPC9tZXRob2Q+XG4iCisg ICAgICAgICAgICAgICAgICIgIDwvaW50ZXJmYWNlPlxuIgorICAgICAgICAgICAgICAgICApOwor IAorQEAgLTkxMyw4ICs5MTYsMTcgQEAgdm9pZCBBdFNwaUFkYXB0b3I6Om5vdGlmeShRQWNjZXNz aWJsZUV2ZW50ICpldmVudCkKKyAgICAgfQorICAgICBjYXNlIFFBY2Nlc3NpYmxlOjpOYW1lQ2hh bmdlZDogeworICAgICAgICAgaWYgKHNlbmRPYmplY3QgfHwgc2VuZE9iamVjdF9wcm9wZXJ0eV9j aGFuZ2UgfHwgc2VuZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2VfYWNjZXNzaWJsZV9uYW1lKSB7Cist ICAgICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShldmVudC0+YWNjZXNz aWJsZUludGVyZmFjZSgpKTsKKy0gICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9IHBhY2tE QnVzU2lnbmFsQXJndW1lbnRzKFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIpLCAwLCAw LCB2YXJpYW50Rm9yUGF0aChwYXRoKSk7CisrICAgICAgICAgICAgUUFjY2Vzc2libGVJbnRlcmZh Y2UgKmlmYWNlID0gZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKTsKKysgICAgICAgICAgICBp ZiAoIWlmYWNlKSB7CisrICAgICAgICAgICAgICAgIHFDRGVidWcobGNBY2Nlc3NpYmlsaXR5QXRz cGksCisrICAgICAgICAgICAgICAgICAgICAgICAgIk5hbWVDaGFuZ2VkIGV2ZW50IGZyb20gaW52 YWxpZCBhY2Nlc3NpYmxlLiIpOworKyAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAg ICAgfQorKworKyAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRlcmZhY2UoaWZh Y2UpOworKyAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RCdXNTaWduYWxBcmd1 bWVudHMoCisrICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIp LCAwLCAwLAorKyAgICAgICAgICAgICAgICBRVmFyaWFudDo6ZnJvbVZhbHVlKFFEQnVzVmFyaWFu dChpZmFjZS0+dGV4dChRQWNjZXNzaWJsZTo6TmFtZSkpKSk7CisgICAgICAgICAgICAgc2VuZERC dXNTaWduYWwocGF0aCwgUUxhdGluMVN0cmluZyhBVFNQSV9EQlVTX0lOVEVSRkFDRV9FVkVOVF9P QkpFQ1QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIlByb3Bl cnR5Q2hhbmdlIiksIGFyZ3MpOworICAgICAgICAgfQorQEAgLTkyMiw4ICs5MzQsMTcgQEAgdm9p ZCBBdFNwaUFkYXB0b3I6Om5vdGlmeShRQWNjZXNzaWJsZUV2ZW50ICpldmVudCkKKyAgICAgfQor ICAgICBjYXNlIFFBY2Nlc3NpYmxlOjpEZXNjcmlwdGlvbkNoYW5nZWQ6IHsKKyAgICAgICAgIGlm IChzZW5kT2JqZWN0IHx8IHNlbmRPYmplY3RfcHJvcGVydHlfY2hhbmdlIHx8IHNlbmRPYmplY3Rf cHJvcGVydHlfY2hhbmdlX2FjY2Vzc2libGVfZGVzY3JpcHRpb24pIHsKKy0gICAgICAgICAgICBR U3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNl KCkpOworLSAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RCdXNTaWduYWxBcmd1 bWVudHMoUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1kZXNjcmlwdGlvbiIpLCAwLCAwLCB2YXJp YW50Rm9yUGF0aChwYXRoKSk7CisrICAgICAgICAgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlm YWNlID0gZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKTsKKysgICAgICAgICAgICBpZiAoIWlm YWNlKSB7CisrICAgICAgICAgICAgICAgIHFDRGVidWcobGNBY2Nlc3NpYmlsaXR5QXRzcGksCisr ICAgICAgICAgICAgICAgICAgICAgICAgIkRlc2NyaXB0aW9uQ2hhbmdlZCBldmVudCBmcm9tIGlu dmFsaWQgYWNjZXNzaWJsZS4iKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAg ICAgIH0KKysKKysgICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGlm YWNlKTsKKysgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9IHBhY2tEQnVzU2lnbmFsQXJn dW1lbnRzKAorKyAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLWRlc2Ny aXB0aW9uIiksIDAsIDAsCisrICAgICAgICAgICAgICAgIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURC dXNWYXJpYW50KGlmYWNlLT50ZXh0KFFBY2Nlc3NpYmxlOjpEZXNjcmlwdGlvbikpKSk7CisgICAg ICAgICAgICAgc2VuZERCdXNTaWduYWwocGF0aCwgUUxhdGluMVN0cmluZyhBVFNQSV9EQlVTX0lO VEVSRkFDRV9FVkVOVF9PQkpFQ1QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRp bjFTdHJpbmcoIlByb3BlcnR5Q2hhbmdlIiksIGFyZ3MpOworICAgICAgICAgfQorQEAgLTEwMzgs NyArMTA1OSw5IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpub3RpZnkoUUFjY2Vzc2libGVFdmVudCAq ZXZlbnQpCisgICAgICAgICAgICAgICAgIC8vIENvbWJvIEJveCB3aXRoIEFULVNQSSBsaWtlcyB0 byBiZSBzcGVjaWFsCisgICAgICAgICAgICAgICAgIC8vIEl0IHJlcXVpcmVzIGEgbmFtZS1jaGFu Z2UgdG8gdXBkYXRlIGNhY2hlcyBhbmQgdGhlbiBzZWxlY3Rpb24tY2hhbmdlZAorICAgICAgICAg ICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGlmYWNlKTsKKy0gICAgICAg ICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MxID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoUUxh dGluMVN0cmluZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsIHZhcmlhbnRGb3JQYXRoKHBhdGgp KTsKKysgICAgICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MxID0gcGFja0RCdXNTaWduYWxB cmd1bWVudHMoCisrICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxl LW5hbWUiKSwgMCwgMCwKKysgICAgICAgICAgICAgICAgICAgIFFWYXJpYW50Ojpmcm9tVmFsdWUo UURCdXNWYXJpYW50KGlmYWNlLT50ZXh0KFFBY2Nlc3NpYmxlOjpOYW1lKSkpKTsKKyAgICAgICAg ICAgICAgICAgc2VuZERCdXNTaWduYWwocGF0aCwgUUxhdGluMVN0cmluZyhBVFNQSV9EQlVTX0lO VEVSRkFDRV9FVkVOVF9PQkpFQ1QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR TGF0aW4xU3RyaW5nKCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdzMSk7CisgICAgICAgICAgICAgICAg IFFWYXJpYW50TGlzdCBhcmdzMiA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKFFTdHJpbmcoKSwg MCwgMCwgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoUVZhcmlhbnQoMCkpKSk7CitA QCAtMTM1OCw2ICsxMzgxLDI2IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpyZWdpc3RlckFwcGxpY2F0 aW9uKCkKKyAgICAgZGVsZXRlIHJlZ2lzdHJ5OworIH0KKyAKKytuYW1lc3BhY2UgeworK1FTdHJp bmcgYWNjZXNzaWJsZUlkRm9yQWNjZXNzaWJsZShRQWNjZXNzaWJsZUludGVyZmFjZSAqYWNjZXNz aWJsZSkKKyt7CisrICAgIFFTdHJpbmcgcmVzdWx0OworKyAgICB3aGlsZSAoYWNjZXNzaWJsZSkg eworKyAgICAgICAgaWYgKCFyZXN1bHQuaXNFbXB0eSgpKQorKyAgICAgICAgICAgIHJlc3VsdC5w cmVwZW5kKFFMYXRpbjFDaGFyKCcuJykpOworKyAgICAgICAgaWYgKGF1dG8gb2JqID0gYWNjZXNz aWJsZS0+b2JqZWN0KCkpIHsKKysgICAgICAgICAgICBjb25zdCBRU3RyaW5nIG5hbWUgPSBvYmot Pm9iamVjdE5hbWUoKTsKKysgICAgICAgICAgICBpZiAoIW5hbWUuaXNFbXB0eSgpKQorKyAgICAg ICAgICAgICAgICByZXN1bHQucHJlcGVuZChuYW1lKTsKKysgICAgICAgICAgICBlbHNlCisrICAg ICAgICAgICAgICAgIHJlc3VsdC5wcmVwZW5kKFFTdHJpbmc6OmZyb21VdGY4KG9iai0+bWV0YU9i amVjdCgpLT5jbGFzc05hbWUoKSkpOworKyAgICAgICAgfQorKyAgICAgICAgYWNjZXNzaWJsZSA9 IGFjY2Vzc2libGUtPnBhcmVudCgpOworKyAgICB9CisrICAgIHJldHVybiByZXN1bHQ7CisrfQor K30gLy8gbmFtZXNwYWNlCisrCisgLy8gQWNjZXNzaWJsZQorIGJvb2wgQXRTcGlBZGFwdG9yOjph Y2Nlc3NpYmxlSW50ZXJmYWNlKFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppbnRlcmZhY2UsIGNvbnN0 IFFTdHJpbmcgJmZ1bmN0aW9uLCBjb25zdCBRREJ1c01lc3NhZ2UgJm1lc3NhZ2UsIGNvbnN0IFFE QnVzQ29ubmVjdGlvbiAmY29ubmVjdGlvbikKKyB7CitAQCAtMTQ0MSw2ICsxNDg0LDkgQEAgYm9v bCBBdFNwaUFkYXB0b3I6OmFjY2Vzc2libGVJbnRlcmZhY2UoUUFjY2Vzc2libGVJbnRlcmZhY2Ug KmludGVyZmFjZSwgY29uc3QgUVMKKyAgICAgICAgICAgICBjaGlsZHJlbiA8PCByZWY7CisgICAg ICAgICB9CisgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWVzc2FnZS5jcmVhdGVSZXBseShRVmFy aWFudDo6ZnJvbVZhbHVlKGNoaWxkcmVuKSkpOworKyAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uID09 IFFMYXRpbjFTdHJpbmcoIkdldEFjY2Vzc2libGVJZCIpKSB7CisrICAgICAgICBzZW5kUmVwbHko Y29ubmVjdGlvbiwgbWVzc2FnZSwKKysgICAgICAgICAgICAgICAgICBRVmFyaWFudDo6ZnJvbVZh bHVlKFFEQnVzVmFyaWFudChhY2Nlc3NpYmxlSWRGb3JBY2Nlc3NpYmxlKGludGVyZmFjZSkpKSk7 CisgICAgIH0gZWxzZSB7CisgICAgICAgICBxQ0RlYnVnKGxjQWNjZXNzaWJpbGl0eUF0c3BpKSA8 PCAiV0FSTklORzogQXRTcGlBZGFwdG9yOjphY2Nlc3NpYmxlSW50ZXJmYWNlIGRvZXMgbm90IGlt cGxlbWVudCAiIDw8IGZ1bmN0aW9uIDw8IG1lc3NhZ2UucGF0aCgpOworICAgICAgICAgcmV0dXJu IGZhbHNlOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNj ZXNzaWJpbGl0eS9kYnVzY29ubmVjdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9y dC9saW51eGFjY2Vzc2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3BwCitpbmRleCA0NWRkYzhlNDk2 Li5jYzczNGFiYzYzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGlu dXhhY2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0 Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9uLmNwcAorQEAgLTY5 LDYgKzY5LDIxIEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIERCdXNDb25uZWN0aW9uOjpEQnVzQ29u bmVjdGlvbihRT2JqZWN0ICpwYXJlbnQpCisgICAgIDogUU9iamVjdChwYXJlbnQpLCBtX2ExMXlD b25uZWN0aW9uKFFTdHJpbmcoKSksIG1fZW5hYmxlZChmYWxzZSkKKyB7CisrICAgIC8vIElmIHRo ZSBidXMgaXMgZXhwbGljaXRseSBzZXQgdmlhIGVudiB2YXIgaXQgb3ZlcnJpZGVzIGV2ZXJ5dGhp bmcgZWxzZS4KKysgICAgUUJ5dGVBcnJheSBhZGRyZXNzRW52ID0gcWdldGVudigiQVRfU1BJX0JV U19BRERSRVNTIik7CisrICAgIGlmICghYWRkcmVzc0Vudi5pc0VtcHR5KCkpIHsKKysgICAgICAg IC8vIE9ubHkgY29ubmVjdCBvbiBuZXh0IGxvb3AgcnVuLCBjb25uZWN0aW9ucyB0byBvdXIgZW5h YmxlZCBzaWduYWwgYXJlCisrICAgICAgICAvLyBvbmx5IGVzdGFibGlzaGVkIGFmdGVyIHRoZSBj dG9yIHJldHVybnMuCisrICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKAorKyAgICAg ICAgICAgICAgICB0aGlzLAorKyAgICAgICAgICAgICAgICBbdGhpcywgYWRkcmVzc0Vudl0gewor KyAgICAgICAgICAgICAgICAgICAgbV9lbmFibGVkID0gdHJ1ZTsKKysgICAgICAgICAgICAgICAg ICAgIGNvbm5lY3RBMTF5QnVzKFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoYWRkcmVzc0VudikpOwor KyAgICAgICAgICAgICAgICB9LAorKyAgICAgICAgICAgICAgICBRdDo6UXVldWVkQ29ubmVjdGlv bik7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKyAgICAgLy8gU3RhcnQgbW9uaXRvcmlu ZyBpZiAib3JnLmExMXkuQnVzIiBpcyByZWdpc3RlcmVkIGFzIERCdXMgc2VydmljZS4KKyAgICAg UURCdXNDb25uZWN0aW9uIGMgPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKTsKKyAgICAg aWYgKCFjLmlzQ29ubmVjdGVkKCkpIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlcy5jcHAgYi9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3Vu aXhzZXJ2aWNlcy5jcHAKK2luZGV4IDFhM2NhYjI3NWQuLjJhYmUwMzkxMjYgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJp Y3VuaXhzZXJ2aWNlcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZp Y2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNwcAorQEAgLTUxLDYgKzUxLDkg QEAKKyAjaW5jbHVkZSA8UXRDb3JlL1FTdGFuZGFyZFBhdGhzPgorICNpbmNsdWRlIDxRdENvcmUv UVVybD4KKyAKKysjaW5jbHVkZSA8UXRHdWkvUUd1aUFwcGxpY2F0aW9uPgorKyNpbmNsdWRlIDxR dEd1aS9RV2luZG93PgorKworICNpZiBRVF9DT05GSUcoZGJ1cykKKyAvLyBUaGVzZSBRdENvcmUg aW5jbHVkZXMgYXJlIG5lZWRlZCBmb3IgeGRnLWRlc2t0b3AtcG9ydGFsIHN1cHBvcnQKKyAjaW5j bHVkZSA8UXRDb3JlL3ByaXZhdGUvcWNvcmVfdW5peF9wLmg+CitAQCAtNTgsNiArNjEsOCBAQAor ICNpbmNsdWRlIDxRdENvcmUvUUZpbGVJbmZvPgorICNpbmNsdWRlIDxRdENvcmUvUVVybFF1ZXJ5 PgorIAorKyNpbmNsdWRlIDxRdEd1aS9RQ29sb3I+CisrCisgI2luY2x1ZGUgPFF0REJ1cy9RREJ1 c0Nvbm5lY3Rpb24+CisgI2luY2x1ZGUgPFF0REJ1cy9RREJ1c01lc3NhZ2U+CisgI2luY2x1ZGUg PFF0REJ1cy9RREJ1c1BlbmRpbmdDYWxsPgorQEAgLTE0Miw2ICsxNDcsOCBAQCBzdGF0aWMgaW5s aW5lIGJvb2wgZGV0ZWN0V2ViQnJvd3Nlcihjb25zdCBRQnl0ZUFycmF5ICZkZXNrdG9wLAorICAg ICB9CisgCisgICAgIGlmIChkZXNrdG9wID09IFFCeXRlQXJyYXkoIktERSIpKSB7CisrICAgICAg ICBpZiAoY2hlY2tFeGVjdXRhYmxlKFFTdHJpbmdMaXRlcmFsKCJrZGUtb3BlbjUiKSwgYnJvd3Nl cikpCisrICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAvLyBLb25xdWVyb3IgbGF1 bmNoZXIKKyAgICAgICAgIGlmIChjaGVja0V4ZWN1dGFibGUoUVN0cmluZ0xpdGVyYWwoImtmbWNs aWVudCIpLCBicm93c2VyKSkgeworICAgICAgICAgICAgIGJyb3dzZXItPmFwcGVuZChRTGF0aW4x U3RyaW5nKCIgZXhlYyIpKTsKK0BAIC0yOTYsOCArMzAzLDEzNSBAQCBzdGF0aWMgaW5saW5lIFFE QnVzTWVzc2FnZSB4ZGdEZXNrdG9wUG9ydGFsU2VuZEVtYWlsKGNvbnN0IFFVcmwgJnVybCkKKyAK KyAgICAgcmV0dXJuIFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmNhbGwobWVzc2FnZSk7 CisgfQorKworK25hbWVzcGFjZSB7Cisrc3RydWN0IFhER0Rlc2t0b3BDb2xvcgorK3sKKysgICAg ZG91YmxlIHIgPSAwOworKyAgICBkb3VibGUgZyA9IDA7CisrICAgIGRvdWJsZSBiID0gMDsKKysK KysgICAgUUNvbG9yIHRvUUNvbG9yKCkgY29uc3QKKysgICAgeworKyAgICAgICAgY29uc3RleHBy IGF1dG8gcmdiTWF4ID0gMjU1OworKyAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50Pihy ICogcmdiTWF4KSwgc3RhdGljX2Nhc3Q8aW50PihnICogcmdiTWF4KSwKKysgICAgICAgICAgICAg ICAgIHN0YXRpY19jYXN0PGludD4oYiAqIHJnYk1heCkgfTsKKysgICAgfQorK307CisrCisrY29u c3QgUURCdXNBcmd1bWVudCAmb3BlcmF0b3I+Pihjb25zdCBRREJ1c0FyZ3VtZW50ICZhcmd1bWVu dCwgWERHRGVza3RvcENvbG9yICZteVN0cnVjdCkKKyt7CisrICAgIGFyZ3VtZW50LmJlZ2luU3Ry dWN0dXJlKCk7CisrICAgIGFyZ3VtZW50ID4+IG15U3RydWN0LnIgPj4gbXlTdHJ1Y3QuZyA+PiBt eVN0cnVjdC5iOworKyAgICBhcmd1bWVudC5lbmRTdHJ1Y3R1cmUoKTsKKysgICAgcmV0dXJuIGFy Z3VtZW50OworK30KKysKKytjbGFzcyBYZGdEZXNrdG9wUG9ydGFsQ29sb3JQaWNrZXIgOiBwdWJs aWMgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyCisreworKyAgICBRX09CSkVDVAorK3B1Ymxp YzoKKysgICAgWGRnRGVza3RvcFBvcnRhbENvbG9yUGlja2VyKGNvbnN0IFFTdHJpbmcgJnBhcmVu dFdpbmRvd0lkLCBRV2luZG93ICpwYXJlbnQpCisrICAgICAgICA6IFFQbGF0Zm9ybVNlcnZpY2VD b2xvclBpY2tlcihwYXJlbnQpLCBtX3BhcmVudFdpbmRvd0lkKHBhcmVudFdpbmRvd0lkKQorKyAg ICB7CisrICAgIH0KKysKKysgICAgdm9pZCBwaWNrQ29sb3IoKSBvdmVycmlkZQorKyAgICB7Cisr ICAgICAgICAvLyBEQnVzIHNpZ25hdHVyZToKKysgICAgICAgIC8vIFBpY2tDb2xvciAoSU4gICBz ICAgICAgcGFyZW50X3dpbmRvdywKKysgICAgICAgIC8vICAgICAgICAgICAgSU4gICBhe3N2fSAg b3B0aW9ucworKyAgICAgICAgLy8gICAgICAgICAgICBPVVQgIG8gICAgICBoYW5kbGUpCisrICAg ICAgICAvLyBPcHRpb25zOgorKyAgICAgICAgLy8gaGFuZGxlX3Rva2VuIChzKSAtICBBIHN0cmlu ZyB0aGF0IHdpbGwgYmUgdXNlZCBhcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBAaGFuZGxlLgor KworKyAgICAgICAgUURCdXNNZXNzYWdlIG1lc3NhZ2UgPSBRREJ1c01lc3NhZ2U6OmNyZWF0ZU1l dGhvZENhbGwoCisrICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0 b3AucG9ydGFsLkRlc2t0b3AiKSwgUVN0cmluZ0xpdGVyYWwoIi9vcmcvZnJlZWRlc2t0b3AvcG9y dGFsL2Rlc2t0b3AiKSwKKysgICAgICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVl ZGVza3RvcC5wb3J0YWwuU2NyZWVuc2hvdCIpLCBRU3RyaW5nTGl0ZXJhbCgiUGlja0NvbG9yIikp OworKyAgICAgICAgbWVzc2FnZSA8PCBtX3BhcmVudFdpbmRvd0lkIDw8IFFWYXJpYW50TWFwKCk7 CisrCisrICAgICAgICBRREJ1c1BlbmRpbmdDYWxsIHBlbmRpbmdDYWxsID0gUURCdXNDb25uZWN0 aW9uOjpzZXNzaW9uQnVzKCkuYXN5bmNDYWxsKG1lc3NhZ2UpOworKyAgICAgICAgYXV0byB3YXRj aGVyID0gbmV3IFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyKHBlbmRpbmdDYWxsLCB0aGlzKTsKKysg ICAgICAgIGNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyOjpmaW5pc2hl ZCwgdGhpcywKKysgICAgICAgICAgICAgICAgW3RoaXNdKFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVy ICp3YXRjaGVyKSB7CisrICAgICAgICAgICAgICAgICAgICB3YXRjaGVyLT5kZWxldGVMYXRlcigp OworKyAgICAgICAgICAgICAgICAgICAgUURCdXNQZW5kaW5nUmVwbHk8UURCdXNPYmplY3RQYXRo PiByZXBseSA9ICp3YXRjaGVyOworKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcGx5LmlzRXJy b3IoKSkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJEQnVzIGNhbGwgdG8g cGljayBjb2xvciBmYWlsZWQ6ICVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBxUHJpbnRhYmxlKHJlcGx5LmVycm9yKCkubWVzc2FnZSgpKSk7CisrICAgICAgICAgICAgICAg ICAgICAgICAgUV9FTUlUIGNvbG9yUGlja2VkKHt9KTsKKysgICAgICAgICAgICAgICAgICAgIH0g ZWxzZSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgUURCdXNDb25uZWN0aW9uOjpzZXNzaW9u QnVzKCkuY29ubmVjdCgKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmdM aXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiKSwgcmVwbHkudmFsdWUoKS5w YXRoKCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgi b3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5SZXF1ZXN0IiksIFFTdHJpbmdMaXRlcmFsKCJSZXNwb25z ZSIpLCB0aGlzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xhbmctZm9y bWF0IG9mZgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChnb3RDb2xvclJl c3BvbnNlKHVpbnQsUVZhcmlhbnRNYXApKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gY2xhbmctZm9ybWF0IG9uCisrICAgICAgICAgICAgICAgICAgICAgICAgKTsKKysgICAg ICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgfSk7CisrICAgIH0KKysKKytwcml2 YXRlIFFfU0xPVFM6CisrICAgIHZvaWQgZ290Q29sb3JSZXNwb25zZSh1aW50IHJlc3VsdCwgY29u c3QgUVZhcmlhbnRNYXAgJm1hcCkKKysgICAgeworKyAgICAgICAgaWYgKHJlc3VsdCAhPSAwKQor KyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIFhER0Rlc2t0b3BDb2xvciBjb2xvcnt9Owor KyAgICAgICAgbWFwLnZhbHVlKFFTdHJpbmdMaXRlcmFsKCJjb2xvciIpKS52YWx1ZTxRREJ1c0Fy Z3VtZW50PigpID4+IGNvbG9yOworKyAgICAgICAgUV9FTUlUIGNvbG9yUGlja2VkKGNvbG9yLnRv UUNvbG9yKCkpOworKyAgICAgICAgZGVsZXRlTGF0ZXIoKTsKKysgICAgfQorKworK3ByaXZhdGU6 CisrICAgIGNvbnN0IFFTdHJpbmcgbV9wYXJlbnRXaW5kb3dJZDsKKyt9OworK30gLy8gbmFtZXNw YWNlCisrCisgI2VuZGlmIC8vIFFUX0NPTkZJRyhkYnVzKQorIAorK1FHZW5lcmljVW5peFNlcnZp Y2VzOjpRR2VuZXJpY1VuaXhTZXJ2aWNlcygpCisreworKyNpZiBRVF9DT05GSUcoZGJ1cykKKysg ICAgaWYgKHFFbnZpcm9ubWVudFZhcmlhYmxlSW50VmFsdWUoIlFUX05PX1hER19ERVNLVE9QX1BP UlRBTCIpID4gMCkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrICAgIFFEQnVzTWVzc2Fn ZSBtZXNzYWdlID0gUURCdXNNZXNzYWdlOjpjcmVhdGVNZXRob2RDYWxsKAorKyAgICAgICAgICAg IFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiKSwgUVN0cmlu Z0xpdGVyYWwoIi9vcmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0b3AiKSwKKysgICAgICAgICAg ICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLkRCdXMuUHJvcGVydGllcyIpLCBRU3Ry aW5nTGl0ZXJhbCgiR2V0IikpOworKyAgICBtZXNzYWdlIDw8IFFTdHJpbmdMaXRlcmFsKCJvcmcu ZnJlZWRlc2t0b3AucG9ydGFsLlNjcmVlbnNob3QiKQorKyAgICAgICAgICAgIDw8IFFTdHJpbmdM aXRlcmFsKCJ2ZXJzaW9uIik7CisrCisrICAgIFFEQnVzUGVuZGluZ0NhbGwgcGVuZGluZ0NhbGwg PSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5hc3luY0NhbGwobWVzc2FnZSk7CisrICAg IGF1dG8gd2F0Y2hlciA9IG5ldyBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcihwZW5kaW5nQ2FsbCk7 CisrICAgIFFPYmplY3Q6OmNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVy OjpmaW5pc2hlZCwgd2F0Y2hlciwKKysgICAgICAgICAgICAgICAgICAgICBbdGhpc10oUURCdXNQ ZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAg d2F0Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgUURCdXNQ ZW5kaW5nUmVwbHk8UVZhcmlhbnQ+IHJlcGx5ID0gKndhdGNoZXI7CisrICAgICAgICAgICAgICAg ICAgICAgICAgIGlmICghcmVwbHkuaXNFcnJvcigpICYmIHJlcGx5LnZhbHVlKCkudG9VSW50KCkg Pj0gMikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faGFzU2NyZWVuc2hvdFBvcnRh bFdpdGhDb2xvclBpY2tpbmcgPSB0cnVlOworKyAgICAgICAgICAgICAgICAgICAgIH0pOworKwor KyNlbmRpZgorK30KKysKKytRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgKlFHZW5lcmljVW5p eFNlcnZpY2VzOjpjb2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQpCisreworKyNpZiBRVF9DT05G SUcoZGJ1cykKKysgICAgLy8gTWFrZSBkb3VibGUgc3VyZSB0aGF0IHdlIGFyZSBpbiBhIHdheWxh bmQgZW52aXJvbm1lbnQuIEluIHBhcnRpY3VsYXIgY2hlY2sKKysgICAgLy8gV0FZTEFORF9ESVNQ TEFZIHNvIGFsc28gWFdheWxhbmQgYXBwcyBiZW5lZml0IGZyb20gcG9ydGFsLWJhc2VkIGNvbG9y IHBpY2tpbmcuCisrICAgIC8vIE91dHNpZGUgd2F5bGFuZCB3ZSdsbCByYXRoZXIgcmVseSBvbiBv dGhlciBtZWFucyB0aGFuIHRoZSBYREcgZGVza3RvcCBwb3J0YWwuCisrICAgIGlmICghcUVudmly b25tZW50VmFyaWFibGVJc0VtcHR5KCJXQVlMQU5EX0RJU1BMQVkiKQorKyAgICAgICAgfHwgUUd1 aUFwcGxpY2F0aW9uOjpwbGF0Zm9ybU5hbWUoKS5zdGFydHNXaXRoKFFMYXRpbjFTdHJpbmcoIndh eWxhbmQiKSkpIHsKKysgICAgICAgIHJldHVybiBuZXcgWGRnRGVza3RvcFBvcnRhbENvbG9yUGlj a2VyKHBvcnRhbFdpbmRvd0lkZW50aWZpZXIocGFyZW50KSwgcGFyZW50KTsKKysgICAgfQorKyAg ICByZXR1cm4gbnVsbHB0cjsKKysjZWxzZQorKyAgICBRX1VOVVNFRChwYXJlbnQpOworKyAgICBy ZXR1cm4gbnVsbHB0cjsKKysjZW5kaWYKKyt9CisrCisgUUJ5dGVBcnJheSBRR2VuZXJpY1VuaXhT ZXJ2aWNlczo6ZGVza3RvcEVudmlyb25tZW50KCkgY29uc3QKKyB7CisgICAgIHN0YXRpYyBjb25z dCBRQnl0ZUFycmF5IHJlc3VsdCA9IGRldGVjdERlc2t0b3BFbnZpcm9ubWVudCgpOworQEAgLTM1 Miw2ICs0ODYsOCBAQCBib29sIFFHZW5lcmljVW5peFNlcnZpY2VzOjpvcGVuRG9jdW1lbnQoY29u c3QgUVVybCAmdXJsKQorIH0KKyAKKyAjZWxzZQorK1FHZW5lcmljVW5peFNlcnZpY2VzOjpRR2Vu ZXJpY1VuaXhTZXJ2aWNlcygpID0gZGVmYXVsdDsKKysKKyBRQnl0ZUFycmF5IFFHZW5lcmljVW5p eFNlcnZpY2VzOjpkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdAorIHsKKyAgICAgcmV0dXJuIFFC eXRlQXJyYXlMaXRlcmFsKCJVTktOT1dOIik7CitAQCAtMzcxLDYgKzUwNywzMCBAQCBib29sIFFH ZW5lcmljVW5peFNlcnZpY2VzOjpvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJsKQorICAgICBy ZXR1cm4gZmFsc2U7CisgfQorIAorK1FQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqUUdlbmVy aWNVbml4U2VydmljZXM6OmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCkKKyt7CisrICAgIFFf VU5VU0VEKHBhcmVudCk7CisrICAgIHJldHVybiBudWxscHRyOworK30KKysKKyAjZW5kaWYgLy8g UVRfTk9fTVVMVElQUk9DRVNTCisgCisrUVN0cmluZyBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6cG9y dGFsV2luZG93SWRlbnRpZmllcihRV2luZG93ICp3aW5kb3cpCisreworKyAgICBpZiAoUUd1aUFw cGxpY2F0aW9uOjpwbGF0Zm9ybU5hbWUoKSA9PSBRTGF0aW4xU3RyaW5nKCJ4Y2IiKSkKKysgICAg ICAgIHJldHVybiBRU3RyaW5nTGl0ZXJhbCgieDExOiIpICsgUVN0cmluZzo6bnVtYmVyKHdpbmRv dy0+d2luSWQoKSwgMTYpOworKyAgICByZXR1cm4gUVN0cmluZygpOworK30KKysKKytib29sIFFH ZW5lcmljVW5peFNlcnZpY2VzOjpoYXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkg Y29uc3QKKyt7CisrICAgIHN3aXRjaCAoY2FwYWJpbGl0eSkgeworKyAgICBjYXNlIENhcGFiaWxp dHk6OkNvbG9yUGlja2luZzoKKysgICAgICAgIHJldHVybiBtX2hhc1NjcmVlbnNob3RQb3J0YWxX aXRoQ29sb3JQaWNraW5nOworKyAgICB9CisrICAgIHJldHVybiBmYWxzZTsKKyt9CisrCisgUVRf RU5EX05BTUVTUEFDRQorKworKyNpbmNsdWRlICJxZ2VuZXJpY3VuaXhzZXJ2aWNlcy5tb2MiCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3Vu aXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQv c2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oCitpbmRleCA4YWMz ZGU2ZjAzLi4zMDkyNGU2NGJkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBv cnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oCisrKysgYi9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3Vu aXhzZXJ2aWNlc19wLmgKK0BAIC01OSwxNiArNTksMjEgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisg Y2xhc3MgUUdlbmVyaWNVbml4U2VydmljZXMgOiBwdWJsaWMgUVBsYXRmb3JtU2VydmljZXMKKyB7 CisgcHVibGljOgorLSAgICBRR2VuZXJpY1VuaXhTZXJ2aWNlcygpIHt9CisrICAgIFFHZW5lcmlj VW5peFNlcnZpY2VzKCk7CisgCisgICAgIFFCeXRlQXJyYXkgZGVza3RvcEVudmlyb25tZW50KCkg Y29uc3Qgb3ZlcnJpZGU7CisgCisrICAgIGJvb2wgaGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNh cGFiaWxpdHkpIGNvbnN0IG92ZXJyaWRlOworICAgICBib29sIG9wZW5VcmwoY29uc3QgUVVybCAm dXJsKSBvdmVycmlkZTsKKyAgICAgYm9vbCBvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJsKSBv dmVycmlkZTsKKysgICAgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpjb2xvclBpY2tlcihR V2luZG93ICpwYXJlbnQgPSBudWxscHRyKSBvdmVycmlkZTsKKysKKysgICAgdmlydHVhbCBRU3Ry aW5nIHBvcnRhbFdpbmRvd0lkZW50aWZpZXIoUVdpbmRvdyAqd2luZG93KTsKKyAKKyBwcml2YXRl OgorICAgICBRU3RyaW5nIG1fd2ViQnJvd3NlcjsKKyAgICAgUVN0cmluZyBtX2RvY3VtZW50TGF1 bmNoZXI7CisrICAgIGJvb2wgbV9oYXNTY3JlZW5zaG90UG9ydGFsV2l0aENvbG9yUGlja2luZyA9 IGZhbHNlOworIH07CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVj b25uZWN0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmlj dW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcAoraW5kZXggMDk0NzBiY2NjNi4u Y2M3YzdkNGQ4YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1l cy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcAorKysrIGIvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVz bWVudWNvbm5lY3Rpb24uY3BwCitAQCAtNjksNiArNjksNyBAQCBjb25zdCBRU3RyaW5nIE1lbnVC YXJQYXRoID0gUUxhdGluMVN0cmluZygiL01lbnVCYXIiKTsKKyAqLworIFFEQnVzTWVudUNvbm5l Y3Rpb246OlFEQnVzTWVudUNvbm5lY3Rpb24oUU9iamVjdCAqcGFyZW50LCBjb25zdCBRU3RyaW5n ICZzZXJ2aWNlTmFtZSkKKyAgICAgOiBRT2JqZWN0KHBhcmVudCkKKysgICAgLCBtX3NlcnZpY2VO YW1lKHNlcnZpY2VOYW1lKQorICAgICAsIG1fY29ubmVjdGlvbihzZXJ2aWNlTmFtZS5pc051bGwo KSA/IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDogUURCdXNDb25uZWN0aW9uOjpjb25uZWN0VG9CdXMoUURCdXND b25uZWN0aW9uOjpTZXNzaW9uQnVzLCBzZXJ2aWNlTmFtZSkpCisgICAgICwgbV9kYnVzV2F0Y2hl cihuZXcgUURCdXNTZXJ2aWNlV2F0Y2hlcihTdGF0dXNOb3RpZmllcldhdGNoZXJTZXJ2aWNlLCBt X2Nvbm5lY3Rpb24sIFFEQnVzU2VydmljZVdhdGNoZXI6OldhdGNoRm9yUmVnaXN0cmF0aW9uLCB0 aGlzKSkKK0BAIC04Myw2ICs4NCwxMiBAQCBRREJ1c01lbnVDb25uZWN0aW9uOjpRREJ1c01lbnVD b25uZWN0aW9uKFFPYmplY3QgKnBhcmVudCwgY29uc3QgUVN0cmluZyAmc2VydmljZQorICNlbmRp ZgorIH0KKyAKKytRREJ1c01lbnVDb25uZWN0aW9uOjp+UURCdXNNZW51Q29ubmVjdGlvbigpCisr eworKyAgaWYgKCFtX3NlcnZpY2VOYW1lLmlzRW1wdHkoKSAmJiBtX2Nvbm5lY3Rpb24uaXNDb25u ZWN0ZWQoKSkKKysgICAgICBRREJ1c0Nvbm5lY3Rpb246OmRpc2Nvbm5lY3RGcm9tQnVzKG1fc2Vy dmljZU5hbWUpOworK30KKysKKyB2b2lkIFFEQnVzTWVudUNvbm5lY3Rpb246OmRidXNFcnJvcihj b25zdCBRREJ1c0Vycm9yICZlcnJvcikKKyB7CisgICAgIHFXYXJuaW5nKCkgPDwgIlFEQnVzVHJh eUljb24gZW5jb3VudGVyZWQgYSBELUJ1cyBlcnJvcjoiIDw8IGVycm9yOworQEAgLTEwNSwxMyAr MTEyLDcgQEAgdm9pZCBRREJ1c01lbnVDb25uZWN0aW9uOjp1bnJlZ2lzdGVyVHJheUljb25NZW51 KFFEQnVzVHJheUljb24gKml0ZW0pCisgCisgYm9vbCBRREJ1c01lbnVDb25uZWN0aW9uOjpyZWdp c3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pCisgeworLSAgICBib29sIHN1Y2Nlc3Mg PSBjb25uZWN0aW9uKCkucmVnaXN0ZXJTZXJ2aWNlKGl0ZW0tPmluc3RhbmNlSWQoKSk7CistICAg IGlmICghc3VjY2VzcykgeworLSAgICAgICAgcVdhcm5pbmcoKSA8PCAiZmFpbGVkIHRvIHJlZ2lz dGVyIHNlcnZpY2UiIDw8IGl0ZW0tPmluc3RhbmNlSWQoKTsKKy0gICAgICAgIHJldHVybiBmYWxz ZTsKKy0gICAgfQorLQorLSAgICBzdWNjZXNzID0gY29ubmVjdGlvbigpLnJlZ2lzdGVyT2JqZWN0 KFN0YXR1c05vdGlmaWVySXRlbVBhdGgsIGl0ZW0pOworKyAgICBib29sIHN1Y2Nlc3MgPSBjb25u ZWN0aW9uKCkucmVnaXN0ZXJPYmplY3QoU3RhdHVzTm90aWZpZXJJdGVtUGF0aCwgaXRlbSk7Cisg ICAgIGlmICghc3VjY2VzcykgeworICAgICAgICAgdW5yZWdpc3RlclRyYXlJY29uKGl0ZW0pOwor ICAgICAgICAgcVdhcm5pbmcoKSA8PCAiZmFpbGVkIHRvIHJlZ2lzdGVyIiA8PCBpdGVtLT5pbnN0 YW5jZUlkKCkgPDwgU3RhdHVzTm90aWZpZXJJdGVtUGF0aDsKK0BAIC0xMjYsMjEgKzEyNywxOCBA QCBib29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNv biAqaXRlbSkKKyAKKyBib29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnJlZ2lzdGVyVHJheUljb25X aXRoV2F0Y2hlcihRREJ1c1RyYXlJY29uICppdGVtKQorIHsKKysgICAgUV9VTlVTRUQoaXRlbSk7 CisgICAgIFFEQnVzTWVzc2FnZSByZWdpc3Rlck1ldGhvZCA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRl TWV0aG9kQ2FsbCgKKyAgICAgICAgICAgICAgICAgU3RhdHVzTm90aWZpZXJXYXRjaGVyU2Vydmlj ZSwgU3RhdHVzTm90aWZpZXJXYXRjaGVyUGF0aCwgU3RhdHVzTm90aWZpZXJXYXRjaGVyU2Vydmlj ZSwKKyAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUmVnaXN0ZXJTdGF0dXNOb3RpZmll ckl0ZW0iKSk7CistICAgIHJlZ2lzdGVyTWV0aG9kLnNldEFyZ3VtZW50cyhRVmFyaWFudExpc3Qo KSA8PCBpdGVtLT5pbnN0YW5jZUlkKCkpOworKyAgICByZWdpc3Rlck1ldGhvZC5zZXRBcmd1bWVu dHMoUVZhcmlhbnRMaXN0KCkgPDwgbV9jb25uZWN0aW9uLmJhc2VTZXJ2aWNlKCkpOworICAgICBy ZXR1cm4gbV9jb25uZWN0aW9uLmNhbGxXaXRoQ2FsbGJhY2socmVnaXN0ZXJNZXRob2QsIHRoaXMs IFNJR05BTCh0cmF5SWNvblJlZ2lzdGVyZWQoKSksIFNMT1QoZGJ1c0Vycm9yKFFEQnVzRXJyb3Ip KSk7CisgfQorIAorLWJvb2wgUURCdXNNZW51Q29ubmVjdGlvbjo6dW5yZWdpc3RlclRyYXlJY29u KFFEQnVzVHJheUljb24gKml0ZW0pCisrdm9pZCBRREJ1c01lbnVDb25uZWN0aW9uOjp1bnJlZ2lz dGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSkKKyB7CisgICAgIHVucmVnaXN0ZXJUcmF5 SWNvbk1lbnUoaXRlbSk7CisgICAgIGNvbm5lY3Rpb24oKS51bnJlZ2lzdGVyT2JqZWN0KFN0YXR1 c05vdGlmaWVySXRlbVBhdGgpOworLSAgICBib29sIHN1Y2Nlc3MgPSBjb25uZWN0aW9uKCkudW5y ZWdpc3RlclNlcnZpY2UoaXRlbS0+aW5zdGFuY2VJZCgpKTsKKy0gICAgaWYgKCFzdWNjZXNzKQor LSAgICAgICAgcVdhcm5pbmcoKSA8PCAiZmFpbGVkIHRvIHVucmVnaXN0ZXIgc2VydmljZSIgPDwg aXRlbS0+aW5zdGFuY2VJZCgpOworLSAgICByZXR1cm4gc3VjY2VzczsKKyB9CisgI2VuZGlmIC8v IFFUX05PX1NZU1RFTVRSQVlJQ09OCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9y bXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb25f cC5oIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNt ZW51L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oCitpbmRleCBmNDg0Nzk1ZmJiLi45N2JkZmFiYjg1 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1 bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oCisrKysgYi9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVj dGlvbl9wLmgKK0BAIC03MCw2ICs3MCw3IEBAIGNsYXNzIFFEQnVzTWVudUNvbm5lY3Rpb24gOiBw dWJsaWMgUU9iamVjdAorIAorIHB1YmxpYzoKKyAgICAgUURCdXNNZW51Q29ubmVjdGlvbihRT2Jq ZWN0ICpwYXJlbnQgPSBudWxscHRyLCBjb25zdCBRU3RyaW5nICZzZXJ2aWNlTmFtZSA9IFFTdHJp bmcoKSk7CisrICAgIH5RREJ1c01lbnVDb25uZWN0aW9uKCk7CisgICAgIFFEQnVzQ29ubmVjdGlv biBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisgICAgIFFEQnVz U2VydmljZVdhdGNoZXIgKmRidXNXYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9kYnVzV2F0Y2hl cjsgfQorICAgICBib29sIGlzU3RhdHVzTm90aWZpZXJIb3N0UmVnaXN0ZXJlZCgpIGNvbnN0IHsg cmV0dXJuIG1fc3RhdHVzTm90aWZpZXJIb3N0UmVnaXN0ZXJlZDsgfQorQEAgLTc4LDcgKzc5LDcg QEAgcHVibGljOgorICAgICB2b2lkIHVucmVnaXN0ZXJUcmF5SWNvbk1lbnUoUURCdXNUcmF5SWNv biAqaXRlbSk7CisgICAgIGJvb2wgcmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVt KTsKKyAgICAgYm9vbCByZWdpc3RlclRyYXlJY29uV2l0aFdhdGNoZXIoUURCdXNUcmF5SWNvbiAq aXRlbSk7CistICAgIGJvb2wgdW5yZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0p OworKyAgICB2b2lkIHVucmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKTsKKyAj ZW5kaWYgLy8gUVRfTk9fU1lTVEVNVFJBWUlDT04KKyAKKyBRX1NJR05BTFM6CitAQCAtOTAsNiAr OTEsNyBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgZGJ1c0Vycm9yKGNvbnN0IFFEQnVz RXJyb3IgJmVycm9yKTsKKyAKKyBwcml2YXRlOgorKyAgICBRU3RyaW5nIG1fc2VydmljZU5hbWU7 CisgICAgIFFEQnVzQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247CisgICAgIFFEQnVzU2VydmljZVdh dGNoZXIgKm1fZGJ1c1dhdGNoZXI7CisgICAgIGJvb2wgbV9zdGF0dXNOb3RpZmllckhvc3RSZWdp c3RlcmVkOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9n ZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcAor aW5kZXggYmVkZTcwOTc1YS4uNzZiZmVjNWU1YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxh dGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNw cAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2Ri dXN0cmF5L3FkYnVzdHJheWljb24uY3BwCitAQCAtNzEsOCArNzEsMTIgQEAgUV9MT0dHSU5HX0NB VEVHT1JZKHFMY1RyYXksICJxdC5xcGEudHJheSIpCisgc3RhdGljIFFTdHJpbmcgaWNvblRlbXBQ YXRoKCkKKyB7CisgICAgIFFTdHJpbmcgdGVtcFBhdGggPSBRU3RhbmRhcmRQYXRoczo6d3JpdGFi bGVMb2NhdGlvbihRU3RhbmRhcmRQYXRoczo6UnVudGltZUxvY2F0aW9uKTsKKy0gICAgaWYgKCF0 ZW1wUGF0aC5pc0VtcHR5KCkpCisrICAgIGlmICghdGVtcFBhdGguaXNFbXB0eSgpKSB7CisrICAg ICAgICBRU3RyaW5nIGZsYXRwYWtJZCA9IHFFbnZpcm9ubWVudFZhcmlhYmxlKCJGTEFUUEFLX0lE Iik7CisrICAgICAgICBpZiAoIWZsYXRwYWtJZC5pc0VtcHR5KCkgJiYgUUZpbGVJbmZvOjpleGlz dHMoUUxhdGluMVN0cmluZygiLy5mbGF0cGFrLWluZm8iKSkpCisrICAgICAgICAgICAgdGVtcFBh dGggKz0gUUxhdGluMVN0cmluZygiL2FwcC8iKSArIGZsYXRwYWtJZDsKKyAgICAgICAgIHJldHVy biB0ZW1wUGF0aDsKKysgICAgfQorIAorICAgICB0ZW1wUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjp3 cml0YWJsZUxvY2F0aW9uKFFTdGFuZGFyZFBhdGhzOjpHZW5lcmljQ2FjaGVMb2NhdGlvbik7Cisg CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1 bml4L3FnZW5lcmljdW5peHRoZW1lcy5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90 aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVzLmNwcAoraW5kZXggY2IxYjM5ZGI2 NC4uNmUwMWFmMDUyYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3Ro ZW1lcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVzLmNw cAorQEAgLTc1NSw2ICs3NTUsOSBAQCBRVmFyaWFudCBRR25vbWVUaGVtZTo6dGhlbWVIaW50KFFQ bGF0Zm9ybVRoZW1lOjpUaGVtZUhpbnQgaGludCkgY29uc3QKKyAgICAgICAgIHJldHVybiBRVmFy aWFudChRQ2hhcigweDIwMjIpKTsKKyAgICAgY2FzZSBRUGxhdGZvcm1UaGVtZTo6VWlFZmZlY3Rz OgorICAgICAgICAgcmV0dXJuIFFWYXJpYW50KGludChIb3ZlckVmZmVjdCkpOworKyAgICBjYXNl IFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXM6CisrICAgICAgICByZXR1cm4gUVZhcmlh bnQ6OmZyb21WYWx1ZSgKKysgICAgICAgICAgICAgICAgUUxpc3Q8UXQ6OktleT4oeyBRdDo6S2V5 X1NwYWNlLCBRdDo6S2V5X1JldHVybiwgUXQ6OktleV9FbnRlciwgUXQ6OktleV9TZWxlY3QgfSkp OworICAgICBkZWZhdWx0OgorICAgICAgICAgYnJlYWs7CisgICAgIH0KK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJzb3IuY3BwIGIv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9hcGkvcWVnbGZzY3Vyc29yLmNwcAor aW5kZXggOThlMDUxOTVlZS4uMWU5MmY0M2RlYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5jcHAKKysrKyBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5jcHAKK0BAIC0zNDMs OCArMzQzLDcgQEAgdm9pZCBRRWdsRlNDdXJzb3I6OnBhaW50T25TY3JlZW4oKQorICAgICAvLyBz Y3JlZW5zIGFyZSBzaWJsaW5ncyBvZiBlYWNoIG90aGVyLiBXaGVuIG5vdCBlbmFibGVkLCB0aGUg c2libGluZyBsaXN0CisgICAgIC8vIG9ubHkgY29udGFpbnMgbV9zY3JlZW4gaXRzZWxmLgorICAg ICBmb3IgKFFQbGF0Zm9ybVNjcmVlbiAqc2NyZWVuIDogbV9zY3JlZW4tPnZpcnR1YWxTaWJsaW5n cygpKSB7CistICAgICAgICBpZiAoc2NyZWVuLT5nZW9tZXRyeSgpLmNvbnRhaW5zKGNyLnRvcExl ZnQoKS50b1BvaW50KCkgKyBtX2N1cnNvci5ob3RTcG90KQorLSAgICAgICAgICAgICYmIFFPcGVu R0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpLT5zY3JlZW4oKSA9PSBzY3JlZW4tPnNjcmVlbigp KQorKyAgICAgICAgaWYgKHNjcmVlbi0+Z2VvbWV0cnkoKS5jb250YWlucyhjci50b3BMZWZ0KCku dG9Qb2ludCgpICsgbV9jdXJzb3IuaG90U3BvdCkpCisgICAgICAgICB7CisgICAgICAgICAgICAg Y3IudHJhbnNsYXRlKC1zY3JlZW4tPmdlb21ldHJ5KCkudG9wTGVmdCgpKTsKKyAgICAgICAgICAg ICBjb25zdCBRU2l6ZSBzY3JlZW5TaXplID0gc2NyZWVuLT5nZW9tZXRyeSgpLnNpemUoKTsKK0BA IC00NjgsMTEgKzQ2NywxMiBAQCB2b2lkIFFFZ2xGU0N1cnNvcjo6ZHJhdyhjb25zdCBRUmVjdEYg JnIpCisgeworICAgICBTdGF0ZVNhdmVyIHN0YXRlU2F2ZXI7CisgCistICAgIFFFZ2xGU0N1cnNv ckRhdGEgJmdmeCA9IHN0YXRpY19jYXN0PFFFZ2xGU0NvbnRleHQqPihRT3BlbkdMQ29udGV4dDo6 Y3VycmVudENvbnRleHQoKS0+aGFuZGxlKCkpLT5jdXJzb3JEYXRhOworLSAgICBpZiAoIWdmeC5w cm9ncmFtKSB7CistICAgICAgICAvLyBvbmUgdGltZSBpbml0aWFsaXphdGlvbgorKyAgICAvLyBv bmUgdGltZSBpbml0aWFsaXphdGlvbgorKyAgICBpZiAoIVFPcGVuR0xGdW5jdGlvbnM6OmRfcHRy KQorICAgICAgICAgaW5pdGlhbGl6ZU9wZW5HTEZ1bmN0aW9ucygpOworIAorKyAgICBRRWdsRlND dXJzb3JEYXRhICZnZnggPSBzdGF0aWNfY2FzdDxRRWdsRlNDb250ZXh0Kj4oUU9wZW5HTENvbnRl eHQ6OmN1cnJlbnRDb250ZXh0KCktPmhhbmRsZSgpKS0+Y3Vyc29yRGF0YTsKKysgICAgaWYgKCFn ZngucHJvZ3JhbSkgeworICAgICAgICAgY3JlYXRlU2hhZGVyUHJvZ3JhbXMoKTsKKyAKKyAgICAg ICAgIGlmICghZ2Z4LmF0bGFzVGV4dHVyZSkgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21zX3N1cHBvcnQv cWVnbGZza21zZXZlbnRyZWFkZXIuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9l Z2xmcy9kZXZpY2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNldmVudHJl YWRlci5jcHAKK2luZGV4IDY0NWEwYWUyZTkuLjNlMGU0MDZmMWEgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWludGVncmF0aW9uL2VnbGZzX2tt c19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3Jtcy9lZ2xmcy9kZXZpY2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9x ZWdsZnNrbXNldmVudHJlYWRlci5jcHAKK0BAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBRRWdsRlNL bXNFdmVudFJlYWRlcjo6Y3JlYXRlKFFFZ2xGU0ttc0RldmljZSAqZGV2aWNlKQorIAorICAgICBt X2RldmljZSA9IGRldmljZTsKKyAKKy0gICAgcUNEZWJ1ZyhxTGNFZ2xmc0ttc0RlYnVnLCAiSW5p dGFsaXppbmcgZXZlbnQgcmVhZGVyIGZvciBkZXZpY2UgJXAgZmQgJWQiLAorKyAgICBxQ0RlYnVn KHFMY0VnbGZzS21zRGVidWcsICJJbml0aWFsaXppbmcgZXZlbnQgcmVhZGVyIGZvciBkZXZpY2Ug JXAgZmQgJWQiLAorICAgICAgICAgICAgIG1fZGV2aWNlLCBtX2RldmljZS0+ZmQoKSk7CisgCisg ICAgIG1fdGhyZWFkID0gbmV3IFFFZ2xGU0ttc0V2ZW50UmVhZGVyVGhyZWFkKG1fZGV2aWNlLT5m ZCgpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVl bi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt cy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmNwcAoraW5kZXggMTQxZmI2OGEyMy4u ZDQyOTRkNDI1YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zm c2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAKK0BAIC0xMjIs MTEgKzEyMiwxMyBAQCBRT2Zmc2NyZWVuSW50ZWdyYXRpb246OlFPZmZzY3JlZW5JbnRlZ3JhdGlv bigpCisgI2VuZGlmCisgICAgIG1fc2VydmljZXMucmVzZXQobmV3IFFQbGF0Zm9ybVNlcnZpY2Vz KTsKKyAKKy0gICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlU2NyZWVuQWRkZWQobmV3 IFFPZmZzY3JlZW5TY3JlZW4pOworKyAgICBtX3NjcmVlbiA9IG5ldyBRT2Zmc2NyZWVuU2NyZWVu OworKyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVTY3JlZW5BZGRlZChtX3NjcmVl bik7CisgfQorIAorIFFPZmZzY3JlZW5JbnRlZ3JhdGlvbjo6flFPZmZzY3JlZW5JbnRlZ3JhdGlv bigpCisgeworKyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVTY3JlZW5SZW1vdmVk KG1fc2NyZWVuKTsKKyB9CisgCisgdm9pZCBRT2Zmc2NyZWVuSW50ZWdyYXRpb246OmluaXRpYWxp emUoKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVu L3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9v ZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmgKK2luZGV4IDBlYTkwZjZjMmYuLmZlMDBm ZGUwN2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVl bi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmgKK0BAIC04NCw2ICs4NCw3IEBA IHByb3RlY3RlZDoKKyAjZW5kaWYKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVBsYXRmb3JtSW5wdXRD b250ZXh0PiBtX2lucHV0Q29udGV4dDsKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVBsYXRmb3JtU2Vy dmljZXM+IG1fc2VydmljZXM7CisrICAgIFFQbGF0Zm9ybVNjcmVlbiAqbV9zY3JlZW47CisgICAg IG11dGFibGUgUVNjb3BlZFBvaW50ZXI8UVBsYXRmb3JtTmF0aXZlSW50ZXJmYWNlPiBtX25hdGl2 ZUludGVyZmFjZTsKKyB9OworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXMvd2luZG93cy9xd2luZG93c2dsY29udGV4dC5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NnbGNvbnRleHQuY3BwCitpbmRleCA2ZmE1YThhMmIz Li4xZjQ5ZjBhZWZkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93 aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNwcAorQEAgLTQ4LDYgKzQ4LDcgQEAK KyAjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybW5hdGl2ZWludGVyZmFjZS5oPgorICNpbmNsdWRlIDxR dFBsYXRmb3JtSGVhZGVycy9xd2dsbmF0aXZlY29udGV4dC5oPgorIAorKyNpbmNsdWRlIDxwcml2 YXRlL3FzeXN0ZW1saWJyYXJ5X3AuaD4KKyAjaW5jbHVkZSA8YWxnb3JpdGhtPgorIAorICNpbmNs dWRlIDx3aW5nZGkuaD4KK0BAIC0xNjIsMTkgKzE2MywyNSBAQCBRRnVuY3Rpb25Qb2ludGVyIFFX aW5kb3dzT3BlbmdsMzJETEw6OnJlc29sdmUoY29uc3QgY2hhciAqbmFtZSkKKyAKKyBib29sIFFX aW5kb3dzT3BlbmdsMzJETEw6OmluaXQoYm9vbCBzb2Z0d2FyZVJlbmRlcmluZykKKyB7CistICAg IGNvbnN0IFFCeXRlQXJyYXkgb3BlbmdsMzIgPSBRQnl0ZUFycmF5TGl0ZXJhbCgib3BlbmdsMzIu ZGxsIik7CistICAgIGNvbnN0IFFCeXRlQXJyYXkgc3dvcGVuZ2wgPSBRQnl0ZUFycmF5TGl0ZXJh bCgib3BlbmdsMzJzdy5kbGwiKTsKKysgICAgY29uc3QgUUJ5dGVBcnJheSBvcGVuZ2wzMiA9IFFC eXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMiIpOworKyAgICBjb25zdCBRQnl0ZUFycmF5IHN3b3Bl bmdsID0gUUJ5dGVBcnJheUxpdGVyYWwoIm9wZW5nbDMyc3ciKTsKKysgICAgYm9vbCB1c2VTeXN0 ZW1MaWIgPSBmYWxzZTsKKyAKKyAgICAgUUJ5dGVBcnJheSBvcGVuZ2xEbGwgPSBxZ2V0ZW52KCJR VF9PUEVOR0xfRExMIik7CistICAgIGlmIChvcGVuZ2xEbGwuaXNFbXB0eSgpKQorKyAgICBpZiAo b3BlbmdsRGxsLmlzRW1wdHkoKSkgeworICAgICAgICAgb3BlbmdsRGxsID0gc29mdHdhcmVSZW5k ZXJpbmcgPyBzd29wZW5nbCA6IG9wZW5nbDMyOworKyAgICAgICAgdXNlU3lzdGVtTGliID0gIXNv ZnR3YXJlUmVuZGVyaW5nOworKyAgICB9CisgCisgICAgIG9wZW5nbERsbCA9IG9wZW5nbERsbC50 b0xvd2VyKCk7CisgICAgIG1fbm9uT3BlbmdsMzIgPSBvcGVuZ2xEbGwgIT0gb3BlbmdsMzI7Cisg CisgICAgIHFDRGVidWcobGNRcGFHbCkgPDwgIlF0OiBVc2luZyBXR0wgYW5kIE9wZW5HTCBmcm9t IiA8PCBvcGVuZ2xEbGw7CisgCistICAgIG1fbGliID0gOjpMb2FkTGlicmFyeUEob3BlbmdsRGxs LmNvbnN0RGF0YSgpKTsKKysgICAgaWYgKHVzZVN5c3RlbUxpYikKKysgICAgICAgIG1fbGliID0g UVN5c3RlbUxpYnJhcnk6OmxvYWQoKHdjaGFyX3QqKShRU3RyaW5nOjpmcm9tTGF0aW4xKG9wZW5n bERsbCkudXRmMTYoKSkpOworKyAgICBlbHNlCisrICAgICAgICBtX2xpYiA9IExvYWRMaWJyYXJ5 QShvcGVuZ2xEbGwuY29uc3REYXRhKCkpOworICAgICBpZiAoIW1fbGliKSB7CisgICAgICAgICBx RXJybm9XYXJuaW5nKDo6R2V0TGFzdEVycm9yKCksICJGYWlsZWQgdG8gbG9hZCAlcyIsIG9wZW5n bERsbC5jb25zdERhdGEoKSk7CisgICAgICAgICByZXR1cm4gZmFsc2U7CitAQCAtMTg0LDcgKzE5 MSw3IEBAIGJvb2wgUVdpbmRvd3NPcGVuZ2wzMkRMTDo6aW5pdChib29sIHNvZnR3YXJlUmVuZGVy aW5nKQorICAgICAgICAgLy8gTG9hZCBvcGVuZ2wzMi5kbGwgYWx3YXlzLiBHREkgZnVuY3Rpb25z IGxpa2UgQ2hvb3NlUGl4ZWxGb3JtYXQgZG8KKyAgICAgICAgIC8vIEdldE1vZHVsZUhhbmRsZSBm b3Igb3BlbmdsMzIuZGxsIGFuZCBiZWhhdmUgZGlmZmVyZW50bHkgKGFuZCBjYWxsIGJhY2sgaW50 bworICAgICAgICAgLy8gb3BlbmdsMzIpIHdoZW4gdGhlIG1vZHVsZSBpcyBwcmVzZW50LiBUaGlz IGlzIGZpbmUgZm9yIGR1bW15IGNvbnRleHRzIGFuZCB3aW5kb3dzLgorLSAgICAgICAgOjpMb2Fk TGlicmFyeUEoIm9wZW5nbDMyLmRsbCIpOworKyAgICAgICAgUVN5c3RlbUxpYnJhcnk6OmxvYWQo TCJvcGVuZ2wzMiIpOworICAgICB9CisgCisgICAgIHdnbENyZWF0ZUNvbnRleHQgPSByZWludGVy cHJldF9jYXN0PEhHTFJDIChXSU5BUEkgKikoSERDKT4ocmVzb2x2ZSgid2dsQ3JlYXRlQ29udGV4 dCIpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3Mv cXdpbmRvd3NvcGVuZ2x0ZXN0ZXIuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93 aW5kb3dzL3F3aW5kb3dzb3BlbmdsdGVzdGVyLmNwcAoraW5kZXggZDdkMTg2ZTgwNC4uOWViNDAx MWJmMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9x d2luZG93c29wZW5nbHRlc3Rlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMvd2luZG93cy9xd2luZG93c29wZW5nbHRlc3Rlci5jcHAKK0BAIC00OSw2ICs0OSw3IEBACisg I2luY2x1ZGUgPFF0Q29yZS9xc3RhbmRhcmRwYXRocy5oPgorICNpbmNsdWRlIDxRdENvcmUvcWxp YnJhcnlpbmZvLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xaGFzaC5oPgorKyNpbmNsdWRlIDxwcml2 YXRlL3FzeXN0ZW1saWJyYXJ5X3AuaD4KKyAKKyAjaWZuZGVmIFFUX05PX09QRU5HTAorICNpbmNs dWRlIDxwcml2YXRlL3FvcGVuZ2xfcC5oPgorQEAgLTM5Niw3ICszOTcsNyBAQCBib29sIFFXaW5k b3dzT3BlbkdMVGVzdGVyOjp0ZXN0RGVza3RvcEdMKCkKKyAKKyAgICAgLy8gVGVzdCAjMTogTG9h ZCBvcGVuZ2wzMi5kbGwgYW5kIHRyeSB0byByZXNvbHZlIGFuIE9wZW5HTCAyIGZ1bmN0aW9uLgor ICAgICAvLyBUaGlzIHdpbGwgdHlwaWNhbGx5IGZhaWwgb24gc3lzdGVtcyB0aGF0IGRvIG5vdCBo YXZlIGEgcmVhbCBPcGVuR0wgZHJpdmVyLgorLSAgICBsaWIgPSBMb2FkTGlicmFyeUEoIm9wZW5n bDMyLmRsbCIpOworKyAgICBsaWIgPSBRU3lzdGVtTGlicmFyeTo6bG9hZChMIm9wZW5nbDMyIik7 CisgICAgIGlmIChsaWIpIHsKKyAgICAgICAgIENyZWF0ZUNvbnRleHQgPSByZWludGVycHJldF9j YXN0PENyZWF0ZUNvbnRleHRUeXBlPigKKyAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PFFG dW5jdGlvblBvaW50ZXI+KDo6R2V0UHJvY0FkZHJlc3MobGliLCAid2dsQ3JlYXRlQ29udGV4dCIp KSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvbmF0aXZl cGFpbnRpbmcvcXRlc3NlbGxhdG9yLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv eGNiL25hdGl2ZXBhaW50aW5nL3F0ZXNzZWxsYXRvci5jcHAKK2luZGV4IDFhZmEwMGNmYzkuLjEx OGFmNmNlNzMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9u YXRpdmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm1zL3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3BwCitAQCAtNDEsNiAr NDEsNyBAQAorIAorICNpbmNsdWRlIDxRUmVjdD4KKyAjaW5jbHVkZSA8UUxpc3Q+CisrI2luY2x1 ZGUgPFFNYXA+CisgI2luY2x1ZGUgPFFEZWJ1Zz4KKyAKKyAjaW5jbHVkZSA8cW1hdGguaD4KK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlv bi5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlvbi5j cHAKK2luZGV4IDllMmEzN2E2YTEuLmU2ZTE3NWExMTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0aW9uLmNwcAorQEAgLTQ4OCwxMiAr NDg4LDEyIEBAIHZvaWQgUVhjYkNvbm5lY3Rpb246OnByaW50WGNiRXJyb3IoY29uc3QgY2hhciAq bWVzc2FnZSwgeGNiX2dlbmVyaWNfZXJyb3JfdCAqZXJyCisgICAgIHVpbnQgY2xhbXBlZF9lcnJv cl9jb2RlID0gcU1pbjx1aW50PihlcnJvci0+ZXJyb3JfY29kZSwgKHNpemVvZih4Y2JfZXJyb3Jz KSAvIHNpemVvZih4Y2JfZXJyb3JzWzBdKSkgLSAxKTsKKyAgICAgdWludCBjbGFtcGVkX21ham9y X2NvZGUgPSBxTWluPHVpbnQ+KGVycm9yLT5tYWpvcl9jb2RlLCAoc2l6ZW9mKHhjYl9wcm90b2Nv bF9yZXF1ZXN0X2NvZGVzKSAvIHNpemVvZih4Y2JfcHJvdG9jb2xfcmVxdWVzdF9jb2Rlc1swXSkp IC0gMSk7CisgCistICAgIHFDV2FybmluZyhsY1FwYVhjYiwgIiVzOiAlZCAoJXMpLCBzZXF1ZW5j ZTogJWQsIHJlc291cmNlIGlkOiAlZCwgbWFqb3IgY29kZTogJWQgKCVzKSwgbWlub3IgY29kZTog JWQiLAorLSAgICAgICAgICAgICBtZXNzYWdlLAorLSAgICAgICAgICAgICBpbnQoZXJyb3ItPmVy cm9yX2NvZGUpLCB4Y2JfZXJyb3JzW2NsYW1wZWRfZXJyb3JfY29kZV0sCistICAgICAgICAgICAg IGludChlcnJvci0+c2VxdWVuY2UpLCBpbnQoZXJyb3ItPnJlc291cmNlX2lkKSwKKy0gICAgICAg ICAgICAgaW50KGVycm9yLT5tYWpvcl9jb2RlKSwgeGNiX3Byb3RvY29sX3JlcXVlc3RfY29kZXNb Y2xhbXBlZF9tYWpvcl9jb2RlXSwKKy0gICAgICAgICAgICAgaW50KGVycm9yLT5taW5vcl9jb2Rl KSk7CisrICAgIHFDRGVidWcobGNRcGFYY2IsICIlczogJWQgKCVzKSwgc2VxdWVuY2U6ICVkLCBy ZXNvdXJjZSBpZDogJWQsIG1ham9yIGNvZGU6ICVkICglcyksIG1pbm9yIGNvZGU6ICVkIiwKKysg ICAgICAgICAgICBtZXNzYWdlLAorKyAgICAgICAgICAgIGludChlcnJvci0+ZXJyb3JfY29kZSks IHhjYl9lcnJvcnNbY2xhbXBlZF9lcnJvcl9jb2RlXSwKKysgICAgICAgICAgICBpbnQoZXJyb3It PnNlcXVlbmNlKSwgaW50KGVycm9yLT5yZXNvdXJjZV9pZCksCisrICAgICAgICAgICAgaW50KGVy cm9yLT5tYWpvcl9jb2RlKSwgeGNiX3Byb3RvY29sX3JlcXVlc3RfY29kZXNbY2xhbXBlZF9tYWpv cl9jb2RlXSwKKysgICAgICAgICAgICBpbnQoZXJyb3ItPm1pbm9yX2NvZGUpKTsKKyB9CisgCisg c3RhdGljIFF0OjpNb3VzZUJ1dHRvbnMgdHJhbnNsYXRlTW91c2VCdXR0b25zKGludCBzKQorQEAg LTcwMiw2ICs3MDIsOCBAQCB2b2lkIFFYY2JDb25uZWN0aW9uOjpoYW5kbGVYY2JFdmVudCh4Y2Jf Z2VuZXJpY19ldmVudF90ICpldmVudCkKKyAgICAgICAgICAgICBRWGNiVmlydHVhbERlc2t0b3Ag KnZpcnR1YWxEZXNrdG9wID0gdmlydHVhbERlc2t0b3BGb3JSb290V2luZG93KHByb3BlcnR5Tm90 aWZ5LT53aW5kb3cpOworICAgICAgICAgICAgIGlmICh2aXJ0dWFsRGVza3RvcCkKKyAgICAgICAg ICAgICAgICAgdmlydHVhbERlc2t0b3AtPnVwZGF0ZVdvcmtBcmVhKCk7CisrICAgICAgICB9IGVs c2UgaWYgKHByb3BlcnR5Tm90aWZ5LT5hdG9tID09IGF0b20oUVhjYkF0b206Ol9ORVRfU1VQUE9S VEVEKSkgeworKyAgICAgICAgICAgIG1fd21TdXBwb3J0LT51cGRhdGVOZXRXTUF0b21zKCk7Cisg ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIEhBTkRMRV9QTEFURk9STV9XSU5ET1dfRVZF TlQoeGNiX3Byb3BlcnR5X25vdGlmeV9ldmVudF90LCB3aW5kb3csIGhhbmRsZVByb3BlcnR5Tm90 aWZ5RXZlbnQpOworICAgICAgICAgfQorQEAgLTc1MCw3ICs3NTIsNyBAQCB2b2lkIFFYY2JDb25u ZWN0aW9uOjpoYW5kbGVYY2JFdmVudCh4Y2JfZ2VuZXJpY19ldmVudF90ICpldmVudCkKKyAgICAg ICAgICAgICAgICAgY2FzZSBYQ0JfWEtCX05FV19LRVlCT0FSRF9OT1RJRlk6IHsKKyAgICAgICAg ICAgICAgICAgICAgIHhjYl94a2JfbmV3X2tleWJvYXJkX25vdGlmeV9ldmVudF90ICpldiA9ICZ4 a2JfZXZlbnQtPm5ld19rZXlib2FyZF9ub3RpZnk7CisgICAgICAgICAgICAgICAgICAgICBpZiAo ZXYtPmNoYW5nZWQgJiBYQ0JfWEtCX05LTl9ERVRBSUxfS0VZQ09ERVMpCistICAgICAgICAgICAg ICAgICAgICAgICAgbV9rZXlib2FyZC0+dXBkYXRlS2V5bWFwKGV2KTsKKysgICAgICAgICAgICAg ICAgICAgICAgICBtX2tleWJvYXJkLT51cGRhdGVLZXltYXAoKTsKKyAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGRlZmF1bHQ6 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmludGVn cmF0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JpbnRlZ3Jh dGlvbi5jcHAKK2luZGV4IDc2ODY5Y2VkNjAuLjAyZDJlZWJiNTYgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRpb24uY3BwCisrKysgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRpb24uY3BwCitAQCAt Mjc0LDggKzI3NCw3IEBAIFFQbGF0Zm9ybVdpbmRvdyAqUVhjYkludGVncmF0aW9uOjpjcmVhdGVG b3JlaWduV2luZG93KFFXaW5kb3cgKndpbmRvdywgV0lkIG5hdGl2CisgI2lmbmRlZiBRVF9OT19P UEVOR0wKKyBRUGxhdGZvcm1PcGVuR0xDb250ZXh0ICpRWGNiSW50ZWdyYXRpb246OmNyZWF0ZVBs YXRmb3JtT3BlbkdMQ29udGV4dChRT3BlbkdMQ29udGV4dCAqY29udGV4dCkgY29uc3QKKyB7Cist ICAgIFFYY2JTY3JlZW4gKnNjcmVlbiA9IHN0YXRpY19jYXN0PFFYY2JTY3JlZW4gKj4oY29udGV4 dC0+c2NyZWVuKCktPmhhbmRsZSgpKTsKKy0gICAgUVhjYkdsSW50ZWdyYXRpb24gKmdsSW50ZWdy YXRpb24gPSBzY3JlZW4tPmNvbm5lY3Rpb24oKS0+Z2xJbnRlZ3JhdGlvbigpOworKyAgICBRWGNi R2xJbnRlZ3JhdGlvbiAqZ2xJbnRlZ3JhdGlvbiA9IGRlZmF1bHRDb25uZWN0aW9uKCktPmdsSW50 ZWdyYXRpb24oKTsKKyAgICAgaWYgKCFnbEludGVncmF0aW9uKSB7CisgICAgICAgICBxV2Fybmlu ZygiUVhjYkludGVncmF0aW9uOiBDYW5ub3QgY3JlYXRlIHBsYXRmb3JtIE9wZW5HTCBjb250ZXh0 LCBuZWl0aGVyIEdMWCBub3IgRUdMIGFyZSBlbmFibGVkIik7CisgICAgICAgICByZXR1cm4gbnVs bHB0cjsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNi a2V5Ym9hcmQuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJv YXJkLmNwcAoraW5kZXggZWZlY2Q3ZTJkMS4uZTgyODYzODFhMiAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAKK0BAIC0zNjUsMTcg KzM2NSw2IEBAIHZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoeGNiX21hcHBpbmdfbm90 aWZ5X2V2ZW50X3QgKmV2ZW50KQorICAgICB1cGRhdGVLZXltYXAoKTsKKyB9CisgCistdm9pZCBR WGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCh4Y2JfeGtiX25ld19rZXlib2FyZF9ub3RpZnlfZXZl bnRfdCAqZXZlbnQpCisteworLSAgICBpZiAoIWV2ZW50KQorLSAgICAgICAgcmV0dXJuOworLQor LSAgICBpZiAoZXZlbnQtPmRldmljZUlEICE9IGV2ZW50LT5vbGREZXZpY2VJRCkKKy0gICAgICAg IG1fY29uZmlnID0gZmFsc2U7CistCistICAgIHVwZGF0ZUtleW1hcCgpOworLX0KKy0KKyB2b2lk IFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyB7CisgICAgIEtleXN5bU1vZGlmaWVyTWFw IGtleXN5bU1vZHM7CitAQCAtMzgzLDYgKzM3Miw4IEBAIHZvaWQgUVhjYktleWJvYXJkOjp1cGRh dGVLZXltYXAoKQorICAgICAgICAga2V5c3ltTW9kcyA9IGtleXN5bXNUb01vZGlmaWVycygpOwor ICAgICB1cGRhdGVNb2RpZmllcnMoa2V5c3ltTW9kcyk7CisgCisrICAgIG1fY29uZmlnID0gdHJ1 ZTsKKysKKyAgICAgaWYgKCFtX3hrYkNvbnRleHQpIHsKKyAgICAgICAgIG1feGtiQ29udGV4dC5y ZXNldCh4a2JfY29udGV4dF9uZXcoWEtCX0NPTlRFWFRfTk9fREVGQVVMVF9JTkNMVURFUykpOwor ICAgICAgICAgaWYgKCFtX3hrYkNvbnRleHQpIHsKK0BAIC0zOTgsMTMgKzM4OSw4IEBAIHZvaWQg UVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoKQorICAgICBpZiAoY29ubmVjdGlvbigpLT5oYXNY S0IoKSkgeworICAgICAgICAgbV94a2JLZXltYXAucmVzZXQoeGtiX3gxMV9rZXltYXBfbmV3X2Zy b21fZGV2aWNlKG1feGtiQ29udGV4dC5nZXQoKSwgeGNiX2Nvbm5lY3Rpb24oKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlX2Rl dmljZV9pZCwgWEtCX0tFWU1BUF9DT01QSUxFX05PX0ZMQUdTKSk7CistICAgICAgICBpZiAobV94 a2JLZXltYXApIHsKKy0gICAgICAgICAgICBpZiAobV9jb25maWcpCistICAgICAgICAgICAgICAg IG1feGtiU3RhdGUucmVzZXQoeGtiX3N0YXRlX25ldyhtX3hrYktleW1hcC5nZXQoKSkpOworLSAg ICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgbV94a2JTdGF0ZS5yZXNldCh4a2JfeDEx X3N0YXRlX25ld19mcm9tX2RldmljZShtX3hrYktleW1hcC5nZXQoKSwgeGNiX2Nvbm5lY3Rpb24o KSwgY29yZV9kZXZpY2VfaWQpKTsKKy0KKy0gICAgICAgIH0KKysgICAgICAgIGlmIChtX3hrYktl eW1hcCkKKysgICAgICAgICAgICBtX3hrYlN0YXRlLnJlc2V0KHhrYl94MTFfc3RhdGVfbmV3X2Zy b21fZGV2aWNlKG1feGtiS2V5bWFwLmdldCgpLCB4Y2JfY29ubmVjdGlvbigpLCBjb3JlX2Rldmlj ZV9pZCkpOworICAgICB9IGVsc2UgeworICAgICAgICAgbV94a2JLZXltYXAucmVzZXQoa2V5bWFw RnJvbUNvcmUoa2V5c3ltTW9kcykpOworICAgICAgICAgaWYgKG1feGtiS2V5bWFwKQorQEAgLTQy NSw4ICs0MTEsNiBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyAgICAgdXBk YXRlWEtCTW9kcygpOworIAorICAgICBRWGtiQ29tbW9uOjp2ZXJpZnlIYXNMYXRpbkxheW91dCht X3hrYktleW1hcC5nZXQoKSk7CistCistICAgIG1fY29uZmlnID0gdHJ1ZTsKKyB9CisgCisgUUxp c3Q8aW50PiBRWGNiS2V5Ym9hcmQ6OnBvc3NpYmxlS2V5cyhjb25zdCBRS2V5RXZlbnQgKmV2ZW50 KSBjb25zdAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4 Y2JrZXlib2FyZC5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJv YXJkLmgKK2luZGV4IGI2NTJjODVmZTMuLjBlZTA4YWVmZjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuaAorKysrIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmgKK0BAIC02OSw3ICs2OSw2IEBA IHB1YmxpYzoKKyAKKyAgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIHRyYW5zbGF0ZU1vZGlmaWVy cyhpbnQgcykgY29uc3Q7CisgICAgIHZvaWQgdXBkYXRlS2V5bWFwKHhjYl9tYXBwaW5nX25vdGlm eV9ldmVudF90ICpldmVudCk7CistICAgIHZvaWQgdXBkYXRlS2V5bWFwKHhjYl94a2JfbmV3X2tl eWJvYXJkX25vdGlmeV9ldmVudF90ICpldmVudCk7CisgICAgIHZvaWQgdXBkYXRlS2V5bWFwKCk7 CisgICAgIFFMaXN0PGludD4gcG9zc2libGVLZXlzKGNvbnN0IFFLZXlFdmVudCAqZXZlbnQpIGNv bnN0OworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4 Y2J3aW5kb3cuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRv dy5jcHAKK2luZGV4IGZmZGE3YjZhNTcuLjg2M2U5NjFmNGMgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAKK0BAIC01NjQsMTEgKzU2NCw2 IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3QgJnJlY3QpCisgewor ICAgICBRUGxhdGZvcm1XaW5kb3c6OnNldEdlb21ldHJ5KHJlY3QpOworIAorLSAgICBpZiAoc2hv dWxkRGVmZXJUYXNrKFRhc2s6OlNldEdlb21ldHJ5KSkgeworLSAgICAgICAgbV9kZWZlcnJlZEdl b21ldHJ5ID0gcmVjdDsKKy0gICAgICAgIHJldHVybjsKKy0gICAgfQorLQorICAgICBwcm9wYWdh dGVTaXplSGludHMoKTsKKyAKKyAgICAgUVhjYlNjcmVlbiAqY3VycmVudFNjcmVlbiA9IHhjYlNj cmVlbigpOworQEAgLTY5Myw5ICs2ODgsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldFZpc2libGUo Ym9vbCB2aXNpYmxlKQorIAorIHZvaWQgUVhjYldpbmRvdzo6c2hvdygpCisgeworLSAgICBpZiAo c2hvdWxkRGVmZXJUYXNrKFRhc2s6Ok1hcCkpCistICAgICAgICByZXR1cm47CistCisgICAgIGlm ICh3aW5kb3coKS0+aXNUb3BMZXZlbCgpKSB7CisgCisgICAgICAgICAvLyB1cGRhdGUgV01fTk9S TUFMX0hJTlRTCitAQCAtNzA2LDcgKzY5OCw3IEBAIHZvaWQgUVhjYldpbmRvdzo6c2hvdygpCisg ICAgICAgICBpZiAoaXNUcmFuc2llbnQod2luZG93KCkpKSB7CisgICAgICAgICAgICAgY29uc3Qg UVdpbmRvdyAqdHAgPSB3aW5kb3coKS0+dHJhbnNpZW50UGFyZW50KCk7CisgICAgICAgICAgICAg aWYgKHRwICYmIHRwLT5oYW5kbGUoKSkKKy0gICAgICAgICAgICAgICAgdHJhbnNpZW50WGNiUGFy ZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgUVhjYldpbmRvdyAqPih0cC0+aGFuZGxlKCkpLT53aW5J ZCgpOworKyAgICAgICAgICAgICAgICB0cmFuc2llbnRYY2JQYXJlbnQgPSB0cC0+aGFuZGxlKCkt PndpbklkKCk7CisgICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBjbGllbnQgbGVhZGVyIGlmIHRo ZXJlIGlzIG5vIHRyYW5zaWVudCBwYXJlbnQsIGVsc2UgbW9kYWwgZGlhbG9ncyBjYW4KKyAgICAg ICAgICAgICAvLyBiZSBoaWRkZW4gYnkgdGhlaXIgcGFyZW50cy4KKyAgICAgICAgICAgICBpZiAo IXRyYW5zaWVudFhjYlBhcmVudCkKK0BAIC03NDYsMTAgKzczOCw2IEBAIHZvaWQgUVhjYldpbmRv dzo6c2hvdygpCisgCisgdm9pZCBRWGNiV2luZG93OjpoaWRlKCkKKyB7CistICAgIGlmIChzaG91 bGREZWZlclRhc2soVGFzazo6VW5tYXApKQorLSAgICAgICAgcmV0dXJuOworLQorLSAgICBtX3dt U3RhdGVWYWxpZCA9IGZhbHNlOworICAgICB4Y2JfdW5tYXBfd2luZG93KHhjYl9jb25uZWN0aW9u KCksIG1fd2luZG93KTsKKyAKKyAgICAgLy8gc2VuZCBzeW50aGV0aWMgVW5tYXBOb3RpZnkgZXZl bnQgYWNjb3JkaW5nIHRvIGljY2NtIDQuMS40CitAQCAtOTA5LDkgKzg5Nyw2IEBAIFFYY2JXaW5k b3c6Ok5ldFdtU3RhdGVzIFFYY2JXaW5kb3c6Om5ldFdtU3RhdGVzKCkKKyAKKyB2b2lkIFFYY2JX aW5kb3c6OnNldFdpbmRvd0ZsYWdzKFF0OjpXaW5kb3dGbGFncyBmbGFncykKKyB7CistICAgIGlm IChzaG91bGREZWZlclRhc2soVGFzazo6U2V0V2luZG93RmxhZ3MpKQorLSAgICAgICAgcmV0dXJu OworLQorICAgICBRdDo6V2luZG93VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8UXQ6OldpbmRvd1R5 cGU+KGludChmbGFncyAmIFF0OjpXaW5kb3dUeXBlX01hc2spKTsKKyAKKyAgICAgaWYgKHR5cGUg PT0gUXQ6OlRvb2xUaXApCitAQCAtOTQxLDggKzkyNiw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0 V2luZG93RmxhZ3MoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKQorIAorICAgICBzZXRUcmFuc3BhcmVu dEZvck1vdXNlRXZlbnRzKGZsYWdzICYgUXQ6OldpbmRvd1RyYW5zcGFyZW50Rm9ySW5wdXQpOwor ICAgICB1cGRhdGVEb2VzTm90QWNjZXB0Rm9jdXMoZmxhZ3MgJiBRdDo6V2luZG93RG9lc05vdEFj Y2VwdEZvY3VzKTsKKy0KKy0gICAgbV9pc1dtTWFuYWdlZFdpbmRvdyA9ICEoZmxhZ3MgJiBRdDo6 WDExQnlwYXNzV2luZG93TWFuYWdlckhpbnQpOworIH0KKyAKKyB2b2lkIFFYY2JXaW5kb3c6OnNl dE1vdGlmV21IaW50cyhRdDo6V2luZG93RmxhZ3MgZmxhZ3MpCitAQCAtMTE0Miw5ICsxMTI1LDYg QEAgdm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dTdGF0ZShRdDo6V2luZG93U3RhdGVzIHN0YXRl KQorICAgICBpZiAoc3RhdGUgPT0gbV93aW5kb3dTdGF0ZSkKKyAgICAgICAgIHJldHVybjsKKyAK Ky0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpTZXRXaW5kb3dTdGF0ZSkpCistICAgICAg ICByZXR1cm47CistCisgICAgIC8vIHVuc2V0IG9sZCBzdGF0ZQorICAgICBpZiAobV93aW5kb3dT dGF0ZSAmIFF0OjpXaW5kb3dNaW5pbWl6ZWQpCisgICAgICAgICB4Y2JfbWFwX3dpbmRvdyh4Y2Jf Y29ubmVjdGlvbigpLCBtX3dpbmRvdyk7CitAQCAtMTM1MCw2ICsxMzMwLDEyIEBAIHZvaWQgUVhj YldpbmRvdzo6c2V0V2luZG93SWNvbihjb25zdCBRSWNvbiAmaWNvbikKKyAgICAgfQorIAorICAg ICBpZiAoIWljb25fZGF0YS5pc0VtcHR5KCkpIHsKKysgICAgICAgIC8vIElnbm9yZSBpY29uIGV4 Y2VlZGluZyBtYXhpbXVtIHhjYiByZXF1ZXN0IGxlbmd0aAorKyAgICAgICAgaWYgKGljb25fZGF0 YS5zaXplKCkgPiB4Y2JfZ2V0X21heGltdW1fcmVxdWVzdF9sZW5ndGgoeGNiX2Nvbm5lY3Rpb24o KSkpIHsKKysgICAgICAgICAgICBxV2FybmluZygiSWdub3Jpbmcgd2luZG93IGljb246IFNpemUg JWxsdSBleGNlZWRzIG1heGltdW0geGNiIHJlcXVlc3QgbGVuZ3RoICV1LiIsCisrICAgICAgICAg ICAgICAgICAgICAgaWNvbl9kYXRhLnNpemUoKSwgeGNiX2dldF9tYXhpbXVtX3JlcXVlc3RfbGVu Z3RoKHhjYl9jb25uZWN0aW9uKCkpKTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9 CisgICAgICAgICB4Y2JfY2hhbmdlX3Byb3BlcnR5KHhjYl9jb25uZWN0aW9uKCksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFhDQl9QUk9QX01PREVfUkVQTEFDRSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbV93aW5kb3csCitAQCAtMTYzOSw3ICsxNjI1LDcgQEAgdm9pZCBR WGNiV2luZG93OjpzZXRXbVdpbmRvd1R5cGUoUVhjYldpbmRvd0Z1bmN0aW9uczo6V21XaW5kb3dU eXBlcyB0eXBlcywgUXQ6OlcKKyAgICAgICAgIGJyZWFrOworICAgICB9CisgCistICAgIGlmICgo ZmxhZ3MgJiBRdDo6RnJhbWVsZXNzV2luZG93SGludCkgJiYgISh0eXBlICYgUVhjYldpbmRvd0Z1 bmN0aW9uczo6S2RlT3ZlcnJpZGUpKSB7CisrICAgIGlmICgoZmxhZ3MgJiBRdDo6RnJhbWVsZXNz V2luZG93SGludCkgJiYgISh0eXBlcyAmIFFYY2JXaW5kb3dGdW5jdGlvbnM6OktkZU92ZXJyaWRl KSkgeworICAgICAgICAgLy8gb3ZlcnJpZGUgbmV0d20gdHlwZSAtIHF1aWNrIGFuZCBlYXN5IGZv ciBLREUgbm9ib3JkZXIKKyAgICAgICAgIGF0b21zLmFwcGVuZChhdG9tKFFYY2JBdG9tOjpfS0RF X05FVF9XTV9XSU5ET1dfVFlQRV9PVkVSUklERSkpOworICAgICB9CitAQCAtMTg5NCwxMCArMTg4 MCw2IEBAIHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlVW5tYXBOb3RpZnlFdmVudChjb25zdCB4Y2Jf dW5tYXBfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorICAgICBpZiAoZXZlbnQtPndpbmRvdyA9PSBt X3dpbmRvdykgeworICAgICAgICAgbV9tYXBwZWQgPSBmYWxzZTsKKyAgICAgICAgIFFXaW5kb3dT eXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUV4cG9zZUV2ZW50KHdpbmRvdygpLCBRUmVnaW9uKCkpOwor LSAgICAgICAgaWYgKCFtX2lzV21NYW5hZ2VkV2luZG93IHx8IHBhcmVudCgpKSB7CistICAgICAg ICAgICAgbV93bVN0YXRlVmFsaWQgPSB0cnVlOworLSAgICAgICAgICAgIGhhbmRsZURlZmVycmVk VGFza3MoKTsKKy0gICAgICAgIH0KKyAgICAgfQorIH0KKyAKK0BAIC0yMjEyLDk4ICsyMTk0LDMw IEBAIHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlTGVhdmVOb3RpZnlFdmVudChjb25zdCB4Y2JfbGVh dmVfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorICAgICBoYW5kbGVMZWF2ZU5vdGlmeUV2ZW50KGV2 ZW50LT5yb290X3gsIGV2ZW50LT5yb290X3ksIGV2ZW50LT5tb2RlLCBldmVudC0+ZGV0YWlsLCBl dmVudC0+dGltZSk7CisgfQorIAorLWJvb2wgUVhjYldpbmRvdzo6c2hvdWxkRGVmZXJUYXNrKFRh c2sgdGFzaykKKy17CistICAgIGlmIChtX3dtU3RhdGVWYWxpZCkKKy0gICAgICAgIHJldHVybiBm YWxzZTsKKy0KKy0gICAgbV9kZWZlcnJlZFRhc2tzLmFwcGVuZCh0YXNrKTsKKy0gICAgcmV0dXJu IHRydWU7CistfQorLQorLXZvaWQgUVhjYldpbmRvdzo6aGFuZGxlRGVmZXJyZWRUYXNrcygpCist eworLSAgICBRX0FTU0VSVChtX3dtU3RhdGVWYWxpZCA9PSB0cnVlKTsKKy0gICAgaWYgKG1fZGVm ZXJyZWRUYXNrcy5pc0VtcHR5KCkpCistICAgICAgICByZXR1cm47CistCistICAgIGJvb2wgbWFw ID0gZmFsc2U7CistICAgIGJvb2wgdW5tYXAgPSBmYWxzZTsKKy0KKy0gICAgUVZlY3RvcjxUYXNr PiB0YXNrczsKKy0gICAgZm9yIChhdXRvIHRhc2tJdCA9IG1fZGVmZXJyZWRUYXNrcy5yYmVnaW4o KTsgdGFza0l0ICE9IG1fZGVmZXJyZWRUYXNrcy5yZW5kKCk7ICsrdGFza0l0KSB7CistICAgICAg ICBpZiAoIXRhc2tzLmNvbnRhaW5zKCp0YXNrSXQpKQorLSAgICAgICAgICAgIHRhc2tzLnByZXBl bmQoKnRhc2tJdCk7CistICAgIH0KKy0KKy0gICAgZm9yIChUYXNrIHRhc2sgOiB0YXNrcykgewor LSAgICAgICAgc3dpdGNoICh0YXNrKSB7CistICAgICAgICBjYXNlIFRhc2s6Ok1hcDoKKy0gICAg ICAgICAgICBtYXAgPSB0cnVlOworLSAgICAgICAgICAgIHVubWFwID0gZmFsc2U7CistICAgICAg ICAgICAgYnJlYWs7CistICAgICAgICBjYXNlIFRhc2s6OlVubWFwOgorLSAgICAgICAgICAgIHVu bWFwID0gdHJ1ZTsKKy0gICAgICAgICAgICBtYXAgPSBmYWxzZTsKKy0gICAgICAgICAgICBicmVh azsKKy0gICAgICAgIGNhc2UgVGFzazo6U2V0R2VvbWV0cnk6CistICAgICAgICAgICAgc2V0R2Vv bWV0cnkobV9kZWZlcnJlZEdlb21ldHJ5KTsKKy0gICAgICAgICAgICBicmVhazsKKy0gICAgICAg IGNhc2UgVGFzazo6U2V0V2luZG93RmxhZ3M6CistICAgICAgICAgICAgc2V0V2luZG93RmxhZ3Mo d2luZG93KCktPmZsYWdzKCkpOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBU YXNrOjpTZXRXaW5kb3dTdGF0ZToKKy0gICAgICAgICAgICBzZXRXaW5kb3dTdGF0ZSh3aW5kb3co KS0+d2luZG93U3RhdGUoKSk7CistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICB9CistICAg IH0KKy0gICAgbV9kZWZlcnJlZFRhc2tzLmNsZWFyKCk7CistCistICAgIGlmIChtYXApIHsKKy0g ICAgICAgIFFfQVNTRVJUKHVubWFwID09IGZhbHNlKTsKKy0gICAgICAgIHNob3coKTsKKy0gICAg fQorLSAgICBpZiAodW5tYXApIHsKKy0gICAgICAgIFFfQVNTRVJUKG1hcCA9PSBmYWxzZSk7Cist ICAgICAgICBoaWRlKCk7CistICAgIH0KKy19CistCisgdm9pZCBRWGNiV2luZG93OjpoYW5kbGVQ cm9wZXJ0eU5vdGlmeUV2ZW50KGNvbnN0IHhjYl9wcm9wZXJ0eV9ub3RpZnlfZXZlbnRfdCAqZXZl bnQpCisgeworICAgICBjb25uZWN0aW9uKCktPnNldFRpbWUoZXZlbnQtPnRpbWUpOworIAorLSAg ICBjb25zdCBib29sIHdtU3RhdGVDaGFuZ2VkID0gZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRv bTo6V01fU1RBVEUpOworLSAgICBjb25zdCBib29sIG5ldFdtU3RhdGVDaGFuZ2VkID0gZXZlbnQt PmF0b20gPT0gYXRvbShRWGNiQXRvbTo6X05FVF9XTV9TVEFURSk7CistICAgIGlmIChuZXRXbVN0 YXRlQ2hhbmdlZCB8fCB3bVN0YXRlQ2hhbmdlZCkgeworLSAgICAgICAgaWYgKHdtU3RhdGVDaGFu Z2VkICYmICFtX3dtU3RhdGVWYWxpZCAmJiBtX2lzV21NYW5hZ2VkV2luZG93KSB7CistICAgICAg ICAgICAgLy8gSUNDQ00gNC4xLjQKKy0gICAgICAgICAgICAvLyBDbGllbnRzIHRoYXQgd2FudCB0 byByZS11c2UgYSBjbGllbnQgd2luZG93IChlLmcuIGJ5IG1hcHBpbmcgaXQgYWdhaW4pCistICAg ICAgICAgICAgLy8gYWZ0ZXIgd2l0aGRyYXdpbmcgaXQgbXVzdCB3YWl0IGZvciB0aGUgd2l0aGRy YXdhbCB0byBiZSBjb21wbGV0ZSBiZWZvcmUKKy0gICAgICAgICAgICAvLyBwcm9jZWVkaW5nLiBU aGUgcHJlZmVycmVkIG1ldGhvZCBmb3IgZG9pbmcgdGhpcyBpcyBmb3IgY2xpZW50cyB0byB3YWl0 IGZvcgorLSAgICAgICAgICAgIC8vIGEgd2luZG93IG1hbmFnZXIgdG8gdXBkYXRlIG9yIHJlbW92 ZSB0aGUgV01fU1RBVEUgcHJvcGVydHkuCistICAgICAgICAgICAgbV93bVN0YXRlVmFsaWQgPSB0 cnVlOworLSAgICAgICAgICAgIGhhbmRsZURlZmVycmVkVGFza3MoKTsKKy0gICAgICAgIH0KKy0g ICAgICAgIGlmIChldmVudC0+c3RhdGUgPT0gWENCX1BST1BFUlRZX0RFTEVURSkKKysgICAgY29u c3QgYm9vbCBwcm9wZXJ0eURlbGV0ZWQgPSBldmVudC0+c3RhdGUgPT0gWENCX1BST1BFUlRZX0RF TEVURTsKKysKKysgICAgaWYgKGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206Ol9ORVRfV01f U1RBVEUpIHx8IGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206OldNX1NUQVRFKSkgeworKyAg ICAgICAgaWYgKHByb3BlcnR5RGVsZXRlZCkKKyAgICAgICAgICAgICByZXR1cm47CisgCistICAg ICAgICBpZiAod21TdGF0ZUNoYW5nZWQpIHsKKysgICAgICAgIFF0OjpXaW5kb3dTdGF0ZXMgbmV3 U3RhdGUgPSBRdDo6V2luZG93Tm9TdGF0ZTsKKysKKysgICAgICAgIGlmIChldmVudC0+YXRvbSA9 PSBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSkpIHsgLy8gV01fU1RBVEU6IFF1aWNrIGNoZWNrIGZv ciAnTWluaW1pemUnLgorICAgICAgICAgICAgIGF1dG8gcmVwbHkgPSBRX1hDQl9SRVBMWSh4Y2Jf Z2V0X3Byb3BlcnR5LCB4Y2JfY29ubmVjdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAwLCBtX3dpbmRvdywgYXRvbShRWGNiQXRvbTo6V01fU1RBVEUpLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYQ0JfQVRPTV9BTlksIDAsIDEwMjQp OworICAgICAgICAgICAgIGlmIChyZXBseSAmJiByZXBseS0+Zm9ybWF0ID09IDMyICYmIHJlcGx5 LT50eXBlID09IGF0b20oUVhjYkF0b206OldNX1NUQVRFKSkgeworLSAgICAgICAgICAgICAgICBh dXRvIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBxdWludDMyICo+KHhjYl9nZXRfcHJvcGVydHlf dmFsdWUocmVwbHkuZ2V0KCkpKTsKKy0gICAgICAgICAgICAgICAgaWYgKHJlcGx5LT5sZW5ndGgg IT0gMCkgeworLSAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBjaGFuZ2VkVG9XaXRoZHJh d24gPSBkYXRhWzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9XSVRIRFJBV047CistICAgICAgICAg ICAgICAgICAgICBjb25zdCBib29sIGNoYW5nZWRUb0ljb25pYyA9IGRhdGFbMF0gPT0gWENCX0lD Q0NNX1dNX1NUQVRFX0lDT05JQzsKKy0gICAgICAgICAgICAgICAgICAgIG1fbWluaW1pemVkID0g Y2hhbmdlZFRvSWNvbmljIHx8IChjaGFuZ2VkVG9XaXRoZHJhd24gJiYgbV9taW5pbWl6ZWQpOwor LSAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGNvbnN0IHF1aW50MzIgKmRhdGEg PSAoY29uc3QgcXVpbnQzMiAqKXhjYl9nZXRfcHJvcGVydHlfdmFsdWUocmVwbHkuZ2V0KCkpOwor KyAgICAgICAgICAgICAgICBpZiAocmVwbHktPmxlbmd0aCAhPSAwKQorKyAgICAgICAgICAgICAg ICAgICAgbV9taW5pbWl6ZWQgPSAoZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RBVEVfSUNPTklD CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoZGF0YVswXSA9PSBYQ0Jf SUNDQ01fV01fU1RBVEVfV0lUSERSQVdOICYmIG1fbWluaW1pemVkKSk7CisgICAgICAgICAgICAg fQorICAgICAgICAgfQorIAorLSAgICAgICAgLy8gX05FVF9XTV9TVEFURSBoYW5kbGluZworLSAg ICAgICAgUXQ6OldpbmRvd1N0YXRlcyBuZXdTdGF0ZSA9IFF0OjpXaW5kb3dOb1N0YXRlOworICAg ICAgICAgY29uc3QgTmV0V21TdGF0ZXMgc3RhdGVzID0gbmV0V21TdGF0ZXMoKTsKKyAgICAgICAg IC8vIF9ORVRfV01fU1RBVEVfSElEREVOIHNob3VsZCBiZSBzZXQgYnkgdGhlIFdpbmRvdyBNYW5h Z2VyIHRvIGluZGljYXRlIHRoYXQgYSB3aW5kb3cgd291bGQKKyAgICAgICAgIC8vIG5vdCBiZSB2 aXNpYmxlIG9uIHRoZSBzY3JlZW4gaWYgaXRzIGRlc2t0b3Avdmlld3BvcnQgd2VyZSBhY3RpdmUg YW5kIGl0cyBjb29yZGluYXRlcyB3ZXJlCitAQCAtMjMyNSw2ICsyMjM5LDcgQEAgdm9pZCBRWGNi V2luZG93OjpoYW5kbGVQcm9wZXJ0eU5vdGlmeUV2ZW50KGNvbnN0IHhjYl9wcm9wZXJ0eV9ub3Rp ZnlfZXZlbnRfdCAqZXYKKyAgICAgICAgICAgICBpZiAoKG1fd2luZG93U3RhdGUgJiBRdDo6V2lu ZG93TWluaW1pemVkKSAmJiBjb25uZWN0aW9uKCktPm1vdXNlR3JhYmJlcigpID09IHRoaXMpCisg ICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24oKS0+c2V0TW91c2VHcmFiYmVyKG51bGxwdHIpOwor ICAgICAgICAgfQorKyAgICAgICAgcmV0dXJuOworICAgICB9IGVsc2UgaWYgKGV2ZW50LT5hdG9t ID09IGF0b20oUVhjYkF0b206Ol9ORVRfRlJBTUVfRVhURU5UUykpIHsKKyAgICAgICAgIG1fZGly dHlGcmFtZU1hcmdpbnMgPSB0cnVlOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5oCitpbmRleCA1NWFmOTI3OWIxLi42ZjVjMWY1ZWQ5IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5o CisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmgKK0BA IC03NCwxNCArNzQsNiBAQCBwdWJsaWM6CisgCisgICAgIFFfREVDTEFSRV9GTEFHUyhOZXRXbVN0 YXRlcywgTmV0V21TdGF0ZSkKKyAKKy0gICAgZW51bSBUYXNrIHsKKy0gICAgICAgIE1hcCwKKy0g ICAgICAgIFVubWFwLAorLSAgICAgICAgU2V0R2VvbWV0cnksCistICAgICAgICBTZXRXaW5kb3dG bGFncywKKy0gICAgICAgIFNldFdpbmRvd1N0YXRlCistICAgIH07CistCisgICAgIFFYY2JXaW5k b3coUVdpbmRvdyAqd2luZG93KTsKKyAgICAgflFYY2JXaW5kb3coKTsKKyAKK0BAIC0xNTEsOSAr MTQzLDYgQEAgcHVibGljOgorIAorICAgICBRWGNiV2luZG93ICp0b1dpbmRvdygpIG92ZXJyaWRl OworIAorLSAgICBib29sIHNob3VsZERlZmVyVGFzayhUYXNrIHRhc2spOworLSAgICB2b2lkIGhh bmRsZURlZmVycmVkVGFza3MoKTsKKy0KKyAgICAgdm9pZCBoYW5kbGVNb3VzZUV2ZW50KHhjYl90 aW1lc3RhbXBfdCB0aW1lLCBjb25zdCBRUG9pbnQgJmxvY2FsLCBjb25zdCBRUG9pbnQgJmdsb2Jh bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2Rp ZmllcnMsIFFFdmVudDo6VHlwZSB0eXBlLCBRdDo6TW91c2VFdmVudFNvdXJjZSBzb3VyY2UpOwor IAorQEAgLTI5MiwxMSArMjgxLDYgQEAgcHJvdGVjdGVkOgorICAgICBpbnQgbV9zd2FwSW50ZXJ2 YWwgPSAtMTsKKyAKKyAgICAgcXJlYWwgbV9zaXplSGludHNTY2FsZUZhY3RvciA9IDEuMDsKKy0K Ky0gICAgYm9vbCBtX3dtU3RhdGVWYWxpZCA9IHRydWU7CistICAgIFFWZWN0b3I8VGFzaz4gbV9k ZWZlcnJlZFRhc2tzOworLSAgICBib29sIG1faXNXbU1hbmFnZWRXaW5kb3cgPSB0cnVlOworLSAg ICBRUmVjdCBtX2RlZmVycmVkR2VvbWV0cnk7CisgfTsKKyAKKyBjbGFzcyBRWGNiRm9yZWlnbldp bmRvdyA6IHB1YmxpYyBRWGNiV2luZG93CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3JtdGhlbWVzL2d0azMvcWd0azNtZW51LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAKK2luZGV4IGQ5ZDExN2ZhZWIuLjY0MGI0 OWRhYTAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMvZ3Rr My9xZ3RrM21lbnUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMv Z3RrMy9xZ3RrM21lbnUuY3BwCitAQCAtODUsNiArODUsNyBAQCBRR3RrM01lbnVJdGVtOjpRR3Rr M01lbnVJdGVtKCkKKyAgICAgICBtX2NoZWNrYWJsZShmYWxzZSksCisgICAgICAgbV9jaGVja2Vk KGZhbHNlKSwKKyAgICAgICBtX2VuYWJsZWQodHJ1ZSksCisrICAgICAgbV9leGNsdXNpdmUoZmFs c2UpLAorICAgICAgIG1fdW5kZXJsaW5lKGZhbHNlKSwKKyAgICAgICBtX2ludmFsaWQodHJ1ZSks CisgICAgICAgbV9tZW51KG51bGxwdHIpLAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRp YWxvZy5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBv cnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2cuY3BwCitpbmRleCAwMDQ4YmJjMWU2Li4z OTZlN2Y2ZDFjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVz L3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcAorKysrIGIv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rl c2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcAorQEAgLTEwMiwxNSArMTAyLDEyIEBAIGNvbnN0IFFE QnVzQXJndW1lbnQgJm9wZXJhdG9yID4+KGNvbnN0IFFEQnVzQXJndW1lbnQgJmFyZywgUVhkZ0Rl c2t0b3BQb3J0YWxGaWxlCisgY2xhc3MgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0 ZQorIHsKKyBwdWJsaWM6CistICAgIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUo UVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZykKKysgICAgUVhkZ0Rl c2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZShRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpu YXRpdmVGaWxlRGlhbG9nLCB1aW50IGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikKKyAgICAgICAg IDogbmF0aXZlRmlsZURpYWxvZyhuYXRpdmVGaWxlRGlhbG9nKQorKyAgICAgICAgLCBmaWxlQ2hv b3NlclBvcnRhbFZlcnNpb24oZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKQorICAgICB7IH0KKyAK Ky0gICAgV0lkIHdpbklkID0gMDsKKy0gICAgYm9vbCBkaXJlY3RvcnlNb2RlID0gZmFsc2U7Cist ICAgIGJvb2wgbW9kYWwgPSBmYWxzZTsKKy0gICAgYm9vbCBtdWx0aXBsZUZpbGVzID0gZmFsc2U7 CistICAgIGJvb2wgc2F2ZUZpbGUgPSBmYWxzZTsKKysgICAgUUV2ZW50TG9vcCBsb29wOworICAg ICBRU3RyaW5nIGFjY2VwdExhYmVsOworICAgICBRU3RyaW5nIGRpcmVjdG9yeTsKKyAgICAgUVN0 cmluZyB0aXRsZTsKK0BAIC0xMjEsMTkgKzExOCwyNyBAQCBwdWJsaWM6CisgICAgIFFTdHJpbmcg c2VsZWN0ZWRNaW1lVHlwZUZpbHRlcjsKKyAgICAgUVN0cmluZyBzZWxlY3RlZE5hbWVGaWx0ZXI7 CisgICAgIFFTdHJpbmdMaXN0IHNlbGVjdGVkRmlsZXM7CistICAgIFFQbGF0Zm9ybUZpbGVEaWFs b2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cgPSBudWxscHRyOworKyAgICBzdGQ6OnVuaXF1ZV9w dHI8UVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcj4gbmF0aXZlRmlsZURpYWxvZzsKKysgICAgdWlu dCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPSAwOworKyAgICBib29sIGZhaWxlZFRvT3BlbiA9 IGZhbHNlOworKyAgICBib29sIGRpcmVjdG9yeU1vZGUgPSBmYWxzZTsKKysgICAgYm9vbCBtdWx0 aXBsZUZpbGVzID0gZmFsc2U7CisrICAgIGJvb2wgc2F2ZUZpbGUgPSBmYWxzZTsKKyB9OworIAor LVFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9n KFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cpCisrUVhkZ0Rlc2t0 b3BQb3J0YWxGaWxlRGlhbG9nOjpRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coUVBsYXRmb3Jt RmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZywgdWludCBmaWxlQ2hvb3NlclBvcnRh bFZlcnNpb24pCisgICAgIDogUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcigpCistICAgICwgZF9w dHIobmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUobmF0aXZlRmlsZURpYWxv ZykpCisrICAgICwgZF9wdHIobmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUo bmF0aXZlRmlsZURpYWxvZywgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKSkKKyB7CisgICAgIFFf RChRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAorICAgICBpZiAoZC0+bmF0aXZlRmls ZURpYWxvZykgeworLSAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxlRGlhbG9nLCBTSUdOQUwo YWNjZXB0KCkpLCB0aGlzLCBTSUdOQUwoYWNjZXB0KCkpKTsKKy0gICAgICAgIGNvbm5lY3QoZC0+ bmF0aXZlRmlsZURpYWxvZywgU0lHTkFMKHJlamVjdCgpKSwgdGhpcywgU0lHTkFMKHJlamVjdCgp KSk7CisrICAgICAgICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2cuZ2V0KCksIFNJR05BTChh Y2NlcHQoKSksIHRoaXMsIFNJR05BTChhY2NlcHQoKSkpOworKyAgICAgICAgY29ubmVjdChkLT5u YXRpdmVGaWxlRGlhbG9nLmdldCgpLCBTSUdOQUwocmVqZWN0KCkpLCB0aGlzLCBTSUdOQUwocmVq ZWN0KCkpKTsKKyAgICAgfQorKworKyAgICBkLT5sb29wLmNvbm5lY3QodGhpcywgU0lHTkFMKGFj Y2VwdCgpKSwgU0xPVChxdWl0KCkpKTsKKysgICAgZC0+bG9vcC5jb25uZWN0KHRoaXMsIFNJR05B TChyZWplY3QoKSksIFNMT1QocXVpdCgpKSk7CisgfQorIAorIFFYZGdEZXNrdG9wUG9ydGFsRmls ZURpYWxvZzo6flFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZygpCitAQCAtMTc3LDcgKzE4Miw3 IEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjppbml0aWFsaXplRGlhbG9nKCkK KyAgICAgc2V0RGlyZWN0b3J5KG9wdGlvbnMoKS0+aW5pdGlhbERpcmVjdG9yeSgpKTsKKyB9Cisg Cistdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwoKQorK3ZvaWQg UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKFF0OjpXaW5kb3dGbGFncyB3 aW5kb3dGbGFncywgUXQ6OldpbmRvd01vZGFsaXR5IHdpbmRvd01vZGFsaXR5LCBRV2luZG93ICpw YXJlbnQpCisgeworICAgICBRX0QoUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKK0BA IC0xODUsMTMgKzE5MCwxMyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6b3Bl blBvcnRhbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIi9vcmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0 b3AiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUUxhdGluMVN0cmluZygib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5GaWxlQ2hvb3Nl ciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkLT5zYXZlRmlsZSA/IFFMYXRpbjFTdHJpbmcoIlNhdmVGaWxlIikgOiBRTGF0aW4x U3RyaW5nKCJPcGVuRmlsZSIpKTsKKy0gICAgUVN0cmluZyBwYXJlbnRXaW5kb3dJZCA9IFFMYXRp bjFTdHJpbmcoIngxMToiKSArIFFTdHJpbmc6Om51bWJlcihkLT53aW5JZCwgMTYpOworKyAgICBR U3RyaW5nIHBhcmVudFdpbmRvd0lkID0gUUxhdGluMVN0cmluZygieDExOiIpICsgUVN0cmluZzo6 bnVtYmVyKHBhcmVudCA/IHBhcmVudC0+d2luSWQoKSA6IDAsIDE2KTsKKyAKKyAgICAgUVZhcmlh bnRNYXAgb3B0aW9uczsKKyAgICAgaWYgKCFkLT5hY2NlcHRMYWJlbC5pc0VtcHR5KCkpCisgICAg ICAgICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJhY2NlcHRfbGFiZWwiKSwgZC0+YWNj ZXB0TGFiZWwpOworIAorLSAgICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJtb2RhbCIp LCBkLT5tb2RhbCk7CisrICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJpbmcoIm1vZGFsIiks IHdpbmRvd01vZGFsaXR5ICE9IFF0OjpOb25Nb2RhbCk7CisgICAgIG9wdGlvbnMuaW5zZXJ0KFFM YXRpbjFTdHJpbmcoIm11bHRpcGxlIiksIGQtPm11bHRpcGxlRmlsZXMpOworICAgICBvcHRpb25z Lmluc2VydChRTGF0aW4xU3RyaW5nKCJkaXJlY3RvcnkiKSwgZC0+ZGlyZWN0b3J5TW9kZSk7Cisg CitAQCAtMjkwLDEwICsyOTUsMTggQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6 Om9wZW5Qb3J0YWwoKQorIAorICAgICBRREJ1c1BlbmRpbmdDYWxsIHBlbmRpbmdDYWxsID0gUURC dXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuYXN5bmNDYWxsKG1lc3NhZ2UpOworICAgICBRREJ1 c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlciA9IG5ldyBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hl cihwZW5kaW5nQ2FsbCk7CistICAgIGNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxX YXRjaGVyOjpmaW5pc2hlZCwgdGhpcywgW3RoaXNdIChRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAq d2F0Y2hlcikgeworKyAgICBjb25uZWN0KHdhdGNoZXIsICZRREJ1c1BlbmRpbmdDYWxsV2F0Y2hl cjo6ZmluaXNoZWQsIHRoaXMsIFs9XSAoUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIp IHsKKyAgICAgICAgIFFEQnVzUGVuZGluZ1JlcGx5PFFEQnVzT2JqZWN0UGF0aD4gcmVwbHkgPSAq d2F0Y2hlcjsKKy0gICAgICAgIGlmIChyZXBseS5pc0Vycm9yKCkpIHsKKy0gICAgICAgICAgICBR X0VNSVQgcmVqZWN0KCk7CisrICAgICAgICAvLyBBbnkgZXJyb3IgbWVhbnMgdGhlIGRpYWxvZyBp cyBub3Qgc2hvd24gYW5kIHdlIG5lZWQgdG8gZmFsbGJhY2sKKysgICAgICAgIGQtPmZhaWxlZFRv T3BlbiA9IHJlcGx5LmlzRXJyb3IoKTsKKysgICAgICAgIGlmIChkLT5mYWlsZWRUb09wZW4pIHsK KysgICAgICAgICAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZykgeworKyAgICAgICAgICAgICAg ICBkLT5uYXRpdmVGaWxlRGlhbG9nLT5zaG93KHdpbmRvd0ZsYWdzLCB3aW5kb3dNb2RhbGl0eSwg cGFyZW50KTsKKysgICAgICAgICAgICAgICAgaWYgKGQtPmxvb3AuaXNSdW5uaW5nKCkpCisrICAg ICAgICAgICAgICAgICAgICBkLT5uYXRpdmVGaWxlRGlhbG9nLT5leGVjKCk7CisrICAgICAgICAg ICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgUV9FTUlUIHJlamVjdCgpOworKyAgICAgICAg ICAgIH0KKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgUURCdXNDb25uZWN0aW9uOjpz ZXNzaW9uQnVzKCkuY29ubmVjdChudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHkudmFsdWUoKS5wYXRoKCksCitAQCAtMzAyLDYg KzMxNSw3IEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTE9U KGdvdFJlc3BvbnNlKHVpbnQsUVZhcmlhbnRNYXApKSk7CisgICAgICAgICB9CisrICAgICAgICB3 YXRjaGVyLT5kZWxldGVMYXRlcigpOworICAgICB9KTsKKyB9CisgCitAQCAtMzI2LDcgKzM0MCw3 IEBAIFFVcmwgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpkaXJlY3RvcnkoKSBjb25zdAor IHsKKyAgICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisgCistICAg IGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZp bGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFG aWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkpCisrICAgIGlmIChkLT5uYXRpdmVGaWxl RGlhbG9nICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2coKSkKKyAgICAgICAgIHJldHVybiBkLT5uYXRp dmVGaWxlRGlhbG9nLT5kaXJlY3RvcnkoKTsKKyAKKyAgICAgcmV0dXJuIGQtPmRpcmVjdG9yeTsK K0BAIC0zNDgsNyArMzYyLDcgQEAgUUxpc3Q8UVVybD4gUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlh bG9nOjpzZWxlY3RlZEZpbGVzKCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBRWGRnRGVza3Rv cFBvcnRhbEZpbGVEaWFsb2cpOworIAorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAo b3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8 IG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9u bHkpKQorKyAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9n KCkpCisgICAgICAgICByZXR1cm4gZC0+bmF0aXZlRmlsZURpYWxvZy0+c2VsZWN0ZWRGaWxlcygp OworIAorICAgICBRTGlzdDxRVXJsPiBmaWxlczsKK0BAIC00MDMsMTYgKzQxNywxMyBAQCB2b2lk IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6ZXhlYygpCisgeworICAgICBRX0QoUVhkZ0Rl c2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKy0gICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cg JiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9y eSB8fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3Rv cnlPbmx5KSkgeworKyAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxl RGlhbG9nKCkpIHsKKyAgICAgICAgIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPmV4ZWMoKTsKKyAgICAg ICAgIHJldHVybjsKKyAgICAgfQorIAorICAgICAvLyBIQUNLIHdlIGhhdmUgdG8gYXZvaWQgcmV0 dXJuaW5nIHVudGlsIHdlIGVtaXQgdGhhdCB0aGUgZGlhbG9nIHdhcyBhY2NlcHRlZCBvciByZWpl Y3RlZAorLSAgICBRRXZlbnRMb29wIGxvb3A7CistICAgIGxvb3AuY29ubmVjdCh0aGlzLCBTSUdO QUwoYWNjZXB0KCkpLCBTTE9UKHF1aXQoKSkpOworLSAgICBsb29wLmNvbm5lY3QodGhpcywgU0lH TkFMKHJlamVjdCgpKSwgU0xPVChxdWl0KCkpKTsKKy0gICAgbG9vcC5leGVjKCk7CisrICAgIGQt Pmxvb3AuZXhlYygpOworIH0KKyAKKyB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6 aGlkZSgpCitAQCAtNDI5LDEzICs0NDAsMTAgQEAgYm9vbCBRWGRnRGVza3RvcFBvcnRhbEZpbGVE aWFsb2c6OnNob3coUXQ6OldpbmRvd0ZsYWdzIHdpbmRvd0ZsYWdzLCBRdDo6V2luZG93TW8KKyAK KyAgICAgaW5pdGlhbGl6ZURpYWxvZygpOworIAorLSAgICBkLT5tb2RhbCA9IHdpbmRvd01vZGFs aXR5ICE9IFF0OjpOb25Nb2RhbDsKKy0gICAgZC0+d2luSWQgPSBwYXJlbnQgPyBwYXJlbnQtPndp bklkKCkgOiAwOworLQorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0aW9ucygp LT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlvbnMo KS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpKQorKyAg ICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9nKE9wZW5GYWxs YmFjaykpCisgICAgICAgICByZXR1cm4gZC0+bmF0aXZlRmlsZURpYWxvZy0+c2hvdyh3aW5kb3dG bGFncywgd2luZG93TW9kYWxpdHksIHBhcmVudCk7CisgCistICAgIG9wZW5Qb3J0YWwoKTsKKysg ICAgb3BlblBvcnRhbCh3aW5kb3dGbGFncywgd2luZG93TW9kYWxpdHksIHBhcmVudCk7CisgCisg ICAgIHJldHVybiB0cnVlOworIH0KK0BAIC00NjUsNCArNDczLDIxIEBAIHZvaWQgUVhkZ0Rlc2t0 b3BQb3J0YWxGaWxlRGlhbG9nOjpnb3RSZXNwb25zZSh1aW50IHJlc3BvbnNlLCBjb25zdCBRVmFy aWFudE1hcCAmCisgICAgIH0KKyB9CisgCisrYm9vbCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFs b2c6OnVzZU5hdGl2ZUZpbGVEaWFsb2coUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpGYWxs YmFja1R5cGUgZmFsbGJhY2tUeXBlKSBjb25zdAorK3sKKysgICAgUV9EKGNvbnN0IFFYZGdEZXNr dG9wUG9ydGFsRmlsZURpYWxvZyk7CisrCisrICAgIGlmIChkLT5mYWlsZWRUb09wZW4gJiYgZmFs bGJhY2tUeXBlICE9IE9wZW5GYWxsYmFjaykKKysgICAgICAgIHJldHVybiB0cnVlOworKworKyAg ICBpZiAoZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uIDwgMykgeworKyAgICAgICAgaWYgKG9w dGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeSkKKysg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMoKS0+Zmls ZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpCisrICAgICAgICAg ICAgcmV0dXJuIHRydWU7CisrICAgIH0KKysKKysgICAgcmV0dXJuIGZhbHNlOworK30KKysKKyBR VF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt dGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nX3AuaCBi L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdk ZXNrdG9wcG9ydGFsZmlsZWRpYWxvZ19wLmgKK2luZGV4IDRmNGRlOTZlY2YuLjY1ZTIyYTVjZjIg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3Rv cHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oCisrKysgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRh bGZpbGVkaWFsb2dfcC5oCitAQCAtNTEsNiArNTEsMTEgQEAgY2xhc3MgUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nIDogcHVibGljIFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIKKyAgICAgUV9P QkpFQ1QKKyAgICAgUV9ERUNMQVJFX1BSSVZBVEUoUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9n KQorIHB1YmxpYzoKKysgICAgZW51bSBGYWxsYmFja1R5cGUgeworKyAgICAgICAgR2VuZXJpY0Zh bGxiYWNrLAorKyAgICAgICAgT3BlbkZhbGxiYWNrCisrICAgIH07CisrCisgICAgIGVudW0gQ29u ZGl0aW9uVHlwZSA6IHVpbnQgeworICAgICAgICAgR2xvYmFsUGF0dGVybiA9IDAsCisgICAgICAg ICBNaW1lVHlwZSA9IDEKK0BAIC02OSw3ICs3NCw3IEBAIHB1YmxpYzoKKyAgICAgfTsKKyAgICAg dHlwZWRlZiBRVmVjdG9yPEZpbHRlcj4gRmlsdGVyTGlzdDsKKyAKKy0gICAgUVhkZ0Rlc2t0b3BQ b3J0YWxGaWxlRGlhbG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFs b2cgPSBudWxscHRyKTsKKysgICAgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKFFQbGF0Zm9y bUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cgPSBudWxscHRyLCB1aW50IGZpbGVD aG9vc2VyUG9ydGFsVmVyc2lvbiA9IDApOworICAgICB+UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlh bG9nKCk7CisgCisgICAgIGJvb2wgZGVmYXVsdE5hbWVGaWx0ZXJEaXNhYmxlcygpIGNvbnN0IG92 ZXJyaWRlOworQEAgLTkyLDcgKzk3LDggQEAgcHJpdmF0ZSBRX1NMT1RTOgorIAorIHByaXZhdGU6 CisgICAgIHZvaWQgaW5pdGlhbGl6ZURpYWxvZygpOworLSAgICB2b2lkIG9wZW5Qb3J0YWwoKTsK KysgICAgdm9pZCBvcGVuUG9ydGFsKFF0OjpXaW5kb3dGbGFncyB3aW5kb3dGbGFncywgUXQ6Oldp bmRvd01vZGFsaXR5IHdpbmRvd01vZGFsaXR5LCBRV2luZG93ICpwYXJlbnQpOworKyAgICBib29s IHVzZU5hdGl2ZUZpbGVEaWFsb2coRmFsbGJhY2tUeXBlIGZhbGxiYWNrVHlwZSA9IEdlbmVyaWNG YWxsYmFjaykgY29uc3Q7CisgCisgICAgIFFTY29wZWRQb2ludGVyPFFYZGdEZXNrdG9wUG9ydGFs RmlsZURpYWxvZ1ByaXZhdGU+IGRfcHRyOworIH07CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWx0 aGVtZS5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBv cnRhbC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNwcAoraW5kZXggZmIzMjRhZmJkOC4uYjgwOTUw MzEyMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdk ZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsdGhlbWUuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRh bHRoZW1lLmNwcAorQEAgLTExMSw2ICsxMTEsNyBAQCBRWGRnRGVza3RvcFBvcnRhbFRoZW1lOjpR WGRnRGVza3RvcFBvcnRhbFRoZW1lKCkKKyAgICAgICAgIGlmIChyZXBseS5pc1ZhbGlkKCkpIHsK KyAgICAgICAgICAgICBkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPSByZXBseS52YWx1ZSgp LnRvVUludCgpOworICAgICAgICAgfQorKyAgICAgICAgd2F0Y2hlci0+ZGVsZXRlTGF0ZXIoKTsK KyAgICAgfSk7CisgfQorIAorQEAgLTE1MiwxMSArMTUzLDEyIEBAIFFQbGF0Zm9ybURpYWxvZ0hl bHBlciogUVhkZ0Rlc2t0b3BQb3J0YWxUaGVtZTo6Y3JlYXRlUGxhdGZvcm1EaWFsb2dIZWxwZXIo RGlhbG9nCisgeworICAgICBRX0QoY29uc3QgUVhkZ0Rlc2t0b3BQb3J0YWxUaGVtZSk7CisgCist ICAgIGlmICh0eXBlID09IEZpbGVEaWFsb2cpIHsKKysgICAgaWYgKHR5cGUgPT0gRmlsZURpYWxv ZyAmJiBkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pIHsKKyAgICAgICAgIC8vIE9sZGVyIHZl cnNpb25zIG9mIEZpbGVDaG9vc2VyIHBvcnRhbCBkb24ndCBzdXBwb3J0IG9wZW5pbmcgZGlyZWN0 b3JpZXMsIHRoZXJlZm9yZSB3ZSBmYWxsYmFjaworICAgICAgICAgLy8gdG8gbmF0aXZlIGZpbGUg ZGlhbG9nIG9wZW5lZCBpbnNpZGUgdGhlIHNhbmRib3ggdG8gb3BlbiBhIGRpcmVjdG9yeS4KKy0g ICAgICAgIGlmIChkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPCAzICYmIGQtPmJhc2VUaGVt ZS0+dXNlUGxhdGZvcm1OYXRpdmVEaWFsb2codHlwZSkpCistICAgICAgICAgICAgcmV0dXJuIG5l dyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coc3RhdGljX2Nhc3Q8UVBsYXRmb3JtRmlsZURp YWxvZ0hlbHBlcio+KGQtPmJhc2VUaGVtZS0+Y3JlYXRlUGxhdGZvcm1EaWFsb2dIZWxwZXIodHlw ZSkpKTsKKysgICAgICAgIGlmIChkLT5iYXNlVGhlbWUtPnVzZVBsYXRmb3JtTmF0aXZlRGlhbG9n KHR5cGUpKQorKyAgICAgICAgICAgIHJldHVybiBuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlh bG9nKHN0YXRpY19jYXN0PFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIqPihkLT5iYXNlVGhlbWUt PmNyZWF0ZVBsYXRmb3JtRGlhbG9nSGVscGVyKHR5cGUpKSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNp b24pOworIAorICAgICAgICAgcmV0dXJuIG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c7 CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1 cHMvcWN1cHNwcmludGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0 L2N1cHMvcWN1cHNwcmludGVuZ2luZS5jcHAKK2luZGV4IDQzZDVlMTE5YWQuLjFmOWNiYzQ1NjUg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNw cmludGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vw cy9xY3Vwc3ByaW50ZW5naW5lLmNwcAorQEAgLTg5LDggKzg5LDEwIEBAIHZvaWQgUUN1cHNQcmlu dEVuZ2luZTo6c2V0UHJvcGVydHkoUHJpbnRFbmdpbmVQcm9wZXJ0eUtleSBrZXksIGNvbnN0IFFW YXJpYW50ICZ2CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBQUEtfRHVwbGV4OiB7CisgICAg ICAgICBRUHJpbnQ6OkR1cGxleE1vZGUgbW9kZSA9IFFQcmludDo6RHVwbGV4TW9kZSh2YWx1ZS50 b0ludCgpKTsKKy0gICAgICAgIGlmIChtb2RlICE9IGQtPmR1cGxleCAmJiBkLT5tX3ByaW50RGV2 aWNlLnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMobW9kZSkpCisrICAgICAgICBpZiAo ZC0+bV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5zKG1vZGUpKSB7 CisgICAgICAgICAgICAgZC0+ZHVwbGV4ID0gbW9kZTsKKysgICAgICAgICAgICBkLT5kdXBsZXhS ZXF1ZXN0ZWRFeHBsaWNpdGx5ID0gdHJ1ZTsKKysgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOwor ICAgICB9CisgICAgIGNhc2UgUFBLX1ByaW50ZXJOYW1lOgorQEAgLTI3Nyw5ICsyNzksMTIgQEAg dm9pZCBRQ3Vwc1ByaW50RW5naW5lUHJpdmF0ZTo6Y2hhbmdlUHJpbnRlcihjb25zdCBRU3RyaW5n ICZuZXdQcmludGVyKQorICAgICBtX3ByaW50RGV2aWNlLnN3YXAocHJpbnREZXZpY2UpOworICAg ICBwcmludGVyTmFtZSA9IG1fcHJpbnREZXZpY2UuaWQoKTsKKyAKKy0gICAgLy8gQ2hlY2sgaWYg bmV3IHByaW50ZXIgc3VwcG9ydHMgY3VycmVudCBzZXR0aW5ncywgb3RoZXJ3aXNlIHVzIGRlZmF1 bHRzCistICAgIGlmIChkdXBsZXggIT0gUVByaW50OjpEdXBsZXhBdXRvICYmICFtX3ByaW50RGV2 aWNlLnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMoZHVwbGV4KSkKKysgICAgLy8gaW4g Y2FzZSBhIGR1cGxleCB2YWx1ZSB3YXMgZXhwbGljaXRseSBzZXQsIGNoZWNrIGlmIG5ldyBwcmlu dGVyIHN1cHBvcnRzIGN1cnJlbnQgdmFsdWUsCisrICAgIC8vIG90aGVyd2lzZSB1c2UgZGV2aWNl IGRlZmF1bHQKKysgICAgaWYgKCFkdXBsZXhSZXF1ZXN0ZWRFeHBsaWNpdGx5IHx8ICFtX3ByaW50 RGV2aWNlLnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMoZHVwbGV4KSkgeworICAgICAg ICAgZHVwbGV4ID0gbV9wcmludERldmljZS5kZWZhdWx0RHVwbGV4TW9kZSgpOworKyAgICAgICAg ZHVwbGV4UmVxdWVzdGVkRXhwbGljaXRseSA9IGZhbHNlOworKyAgICB9CisgICAgIFFQcmludDo6 Q29sb3JNb2RlIGNvbG9yTW9kZSA9IGdyYXlzY2FsZSA/IFFQcmludDo6R3JheVNjYWxlIDogUVBy aW50OjpDb2xvcjsKKyAgICAgaWYgKCFtX3ByaW50RGV2aWNlLnN1cHBvcnRlZENvbG9yTW9kZXMo KS5jb250YWlucyhjb2xvck1vZGUpKQorICAgICAgICAgZ3JheXNjYWxlID0gbV9wcmludERldmlj ZS5kZWZhdWx0Q29sb3JNb2RlKCkgPT0gUVByaW50OjpHcmF5U2NhbGU7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmVfcC5o IGIvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmVf cC5oCitpbmRleCBjMDIxYjBjNjQzLi44ZjgxZmU0NzhkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmVfcC5oCisrKysgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZV9wLmgK K0BAIC0xMDAsNiArMTAwLDcgQEAgcHJpdmF0ZToKKyAgICAgUVN0cmluZ0xpc3QgY3Vwc09wdGlv bnM7CisgICAgIFFTdHJpbmcgY3Vwc1RlbXBGaWxlOworICAgICBRUHJpbnQ6OkR1cGxleE1vZGUg ZHVwbGV4OworKyAgICBib29sIGR1cGxleFJlcXVlc3RlZEV4cGxpY2l0bHkgPSBmYWxzZTsKKyB9 OworIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMv c3FsZHJpdmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxk cml2ZXJzL2liYXNlL3FzcWxfaWJhc2UuY3BwCitpbmRleCA2N2U3MTU0ZmE2Li40MDg3NjE1MmU1 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNxbF9p YmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL2liYXNlL3FzcWxf aWJhc2UuY3BwCitAQCAtODE3LDcgKzgxNyw3IEBAIGJvb2wgUUlCYXNlUmVzdWx0UHJpdmF0ZTo6 d3JpdGVBcnJheShpbnQgY29sdW1uLCBjb25zdCBRTGlzdDxRVmFyaWFudD4gJmxpc3QpCisgICAg IGJhLnJlc2l6ZShpbnQoYnVmTGVuKSk7CisgCisgICAgIGlmIChsaXN0LnNpemUoKSA+IGFycmF5 U2l6ZSkgeworLSAgICAgICAgZXJyb3IgPSBRTGF0aW4xU3RyaW5nKCJBcnJheSBzaXplIG1pc3Nt YXRjaDogc2l6ZSBvZiAlMSBpcyAlMiwgc2l6ZSBvZiBwcm92aWRlZCBsaXN0IGlzICUzIik7Cisr ICAgICAgICBlcnJvciA9IFFMYXRpbjFTdHJpbmcoIkFycmF5IHNpemUgbWlzbWF0Y2g6IHNpemUg b2YgJTEgaXMgJTIsIHNpemUgb2YgcHJvdmlkZWQgbGlzdCBpcyAlMyIpOworICAgICAgICAgZXJy b3IgPSBlcnJvci5hcmcoUUxhdGluMVN0cmluZyhzcWxuYW1lKSkuYXJnKGFycmF5U2l6ZSkuYXJn KGxpc3Quc2l6ZSgpKTsKKyAgICAgICAgIHEtPnNldExhc3RFcnJvcihRU3FsRXJyb3IoZXJyb3Is IFFMYXRpbjFTdHJpbmcoIiIpLCBRU3FsRXJyb3I6OlN0YXRlbWVudEVycm9yKSk7CisgICAgICAg ICByZXR1cm4gZmFsc2U7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZl cnMvbXlzcWwvcXNxbF9teXNxbC5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9t eXNxbC9xc3FsX215c3FsLmNwcAoraW5kZXggN2NhMDU1ZWVhMi4uNmJjOWQ0Njc1NSAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9teXNxbC9xc3FsX215c3FsLmNw cAorQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CisgICAgIHN0cnVjdCBRTXlGaWVsZAorICAg ICB7CisgICAgICAgICBjaGFyICpvdXRGaWVsZCA9IG51bGxwdHI7CistICAgICAgICBNWVNRTF9G SUVMRCAqbXlGaWVsZCA9IG51bGxwdHI7CisrICAgICAgICBjb25zdCBNWVNRTF9GSUVMRCAqbXlG aWVsZCA9IG51bGxwdHI7CisgICAgICAgICBRTWV0YVR5cGU6OlR5cGUgdHlwZSA9IFFNZXRhVHlw ZTo6VW5rbm93blR5cGU7CisgICAgICAgICBteV9ib29sIG51bGxJbmRpY2F0b3IgPSBmYWxzZTsK KyAgICAgICAgIHVsb25nIGJ1Zkxlbmd0aCA9IDB1bDsKK0BAIC0zNjEsNyArMzYxLDcgQEAgc3Rh dGljIGJvb2wgcUlzSW50ZWdlcihpbnQgdCkKKyB2b2lkIFFNWVNRTFJlc3VsdFByaXZhdGU6OmJp bmRCbG9icygpCisgeworICAgICBpbnQgaTsKKy0gICAgTVlTUUxfRklFTEQgKmZpZWxkSW5mbzsK KysgICAgY29uc3QgTVlTUUxfRklFTEQgKmZpZWxkSW5mbzsKKyAgICAgTVlTUUxfQklORCAqYmlu ZDsKKyAKKyAgICAgZm9yKGkgPSAwOyBpIDwgZmllbGRzLmNvdW50KCk7ICsraSkgeworQEAgLTM3 OSw3ICszNzksNiBAQCB2b2lkIFFNWVNRTFJlc3VsdFByaXZhdGU6OmJpbmRCbG9icygpCisgYm9v bCBRTVlTUUxSZXN1bHRQcml2YXRlOjpiaW5kSW5WYWx1ZXMoKQorIHsKKyAgICAgTVlTUUxfQklO RCAqYmluZDsKKy0gICAgY2hhciAqZmllbGQ7CisgICAgIGludCBpID0gMDsKKyAKKyAgICAgaWYg KCFtZXRhKQorQEAgLTM5MiwzNSArMzkxLDM0IEBAIGJvb2wgUU1ZU1FMUmVzdWx0UHJpdmF0ZTo6 YmluZEluVmFsdWVzKCkKKyAgICAgaW5CaW5kcyA9IG5ldyBNWVNRTF9CSU5EW2ZpZWxkcy5zaXpl KCldOworICAgICBtZW1zZXQoaW5CaW5kcywgMCwgZmllbGRzLnNpemUoKSAqIHNpemVvZihNWVNR TF9CSU5EKSk7CisgCistICAgIE1ZU1FMX0ZJRUxEICpmaWVsZEluZm87CisrICAgIGNvbnN0IE1Z U1FMX0ZJRUxEICpmaWVsZEluZm87CisgCisgICAgIHdoaWxlKChmaWVsZEluZm8gPSBteXNxbF9m ZXRjaF9maWVsZChtZXRhKSkpIHsKKysgICAgICAgIGJpbmQgPSAmaW5CaW5kc1tpXTsKKysKKyAg ICAgICAgIFFNeUZpZWxkICZmID0gZmllbGRzW2ldOworICAgICAgICAgZi5teUZpZWxkID0gZmll bGRJbmZvOworLQorKyAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYuYnVmTGVuZ3RoID0g ZmllbGRJbmZvLT5sZW5ndGggKyAxOworKyAgICAgICAgYmluZC0+YnVmZmVyX3R5cGUgPSBmaWVs ZEluZm8tPnR5cGU7CisgICAgICAgICBmLnR5cGUgPSBxRGVjb2RlTVlTUUxUeXBlKGZpZWxkSW5m by0+dHlwZSwgZmllbGRJbmZvLT5mbGFncyk7CisgICAgICAgICBpZiAocUlzQmxvYihmaWVsZElu Zm8tPnR5cGUpKSB7CisgICAgICAgICAgICAgLy8gdGhlIHNpemUgb2YgYSBibG9iLWZpZWxkIGlz IGF2YWlsYWJsZSBhcyBzb29uIGFzIHdlIGNhbGwKKyAgICAgICAgICAgICAvLyBteXNxbF9zdG10 X3N0b3JlX3Jlc3VsdCgpCisgICAgICAgICAgICAgLy8gYWZ0ZXIgbXlzcWxfc3RtdF9leGVjKCkg aW4gUU1ZU1FMUmVzdWx0OjpleGVjKCkKKy0gICAgICAgICAgICBmaWVsZEluZm8tPmxlbmd0aCA9 IDA7CisrICAgICAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYuYnVmTGVuZ3RoID0gMDsK KyAgICAgICAgICAgICBoYXNCbG9icyA9IHRydWU7CisgICAgICAgICB9IGVsc2UgaWYgKHFJc0lu dGVnZXIoZi50eXBlKSkgeworLSAgICAgICAgICAgIGZpZWxkSW5mby0+bGVuZ3RoID0gODsKKysg ICAgICAgICAgICBiaW5kLT5idWZmZXJfbGVuZ3RoID0gZi5idWZMZW5ndGggPSA4OworICAgICAg ICAgfSBlbHNlIHsKKy0gICAgICAgICAgICBmaWVsZEluZm8tPnR5cGUgPSBNWVNRTF9UWVBFX1NU UklORzsKKysgICAgICAgICAgICBiaW5kLT5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5H OworICAgICAgICAgfQorLSAgICAgICAgYmluZCA9ICZpbkJpbmRzW2ldOworLSAgICAgICAgZmll bGQgPSBuZXcgY2hhcltmaWVsZEluZm8tPmxlbmd0aCArIDFdOworLSAgICAgICAgbWVtc2V0KGZp ZWxkLCAwLCBmaWVsZEluZm8tPmxlbmd0aCArIDEpOworIAorLSAgICAgICAgYmluZC0+YnVmZmVy X3R5cGUgPSBmaWVsZEluZm8tPnR5cGU7CistICAgICAgICBiaW5kLT5idWZmZXIgPSBmaWVsZDsK Ky0gICAgICAgIGJpbmQtPmJ1ZmZlcl9sZW5ndGggPSBmLmJ1Zkxlbmd0aCA9IGZpZWxkSW5mby0+ bGVuZ3RoICsgMTsKKyAgICAgICAgIGJpbmQtPmlzX251bGwgPSAmZi5udWxsSW5kaWNhdG9yOwor ICAgICAgICAgYmluZC0+bGVuZ3RoID0gJmYuYnVmTGVuZ3RoOworICAgICAgICAgYmluZC0+aXNf dW5zaWduZWQgPSBmaWVsZEluZm8tPmZsYWdzICYgVU5TSUdORURfRkxBRyA/IDEgOiAwOworLSAg ICAgICAgZi5vdXRGaWVsZD1maWVsZDsKKysKKysgICAgICAgIGNoYXIgKmZpZWxkID0gbmV3IGNo YXJbYmluZC0+YnVmZmVyX2xlbmd0aCArIDFde307CisrICAgICAgICBiaW5kLT5idWZmZXIgPSBm Lm91dEZpZWxkID0gZmllbGQ7CisgCisgICAgICAgICArK2k7CisgICAgIH0KK0BAIC0xMzY5LDIw ICsxMzY3LDIwIEBAIGJvb2wgUU1ZU1FMRHJpdmVyOjpvcGVuKGNvbnN0IFFTdHJpbmcmIGRiLAor ICAgICB9CisgCisgI2lmIE1ZU1FMX1ZFUlNJT05fSUQgPj0gNTAwMDcKKy0gICAgaWYgKG15c3Fs X2dldF9jbGllbnRfdmVyc2lvbigpID49IDUwNTAzICYmIG15c3FsX2dldF9zZXJ2ZXJfdmVyc2lv bihkLT5teXNxbCkgPj0gNTA1MDMpIHsKKy0gICAgICAgIC8vIGZvcmNlIHRoZSBjb21tdW5pY2F0 aW9uIHRvIGJlIHV0ZjhtYjQgKG9ubHkgdXRmOG1iNCBzdXBwb3J0cyA0LWJ5dGUgY2hhcmFjdGVy cykKKy0gICAgICAgIG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3FsLCAidXRmOG1iNCIp OworKyAgICAvLyBmb3JjZSB0aGUgY29tbXVuaWNhdGlvbiB0byBiZSB1dGY4bWI0IChvbmx5IHV0 ZjhtYjQgc3VwcG9ydHMgNC1ieXRlIGNoYXJhY3RlcnMpCisrICAgIGlmIChteXNxbF9zZXRfY2hh cmFjdGVyX3NldChkLT5teXNxbCwgInV0ZjhtYjQiKSkgeworKyAgICAgICAgLy8gdGhpcyBmYWls ZWQsIHRyeSBmb3JjaW5nIGl0IHRvIHV0ZiAoQk1QIG9ubHkpCisrICAgICAgICBpZiAobXlzcWxf c2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4IikpCisrICAgICAgICAgICAgcVdhcm5p bmcoKSA8PCAiTXlTUUw6IFVuYWJsZSB0byBzZXQgdGhlIGNsaWVudCBjaGFyYWN0ZXIgc2V0IHRv IHV0ZjguIjsKKyAjaWYgUVRfQ09ORklHKHRleHRjb2RlYykKKy0gICAgICAgIGQtPnRjID0gUVRl eHRDb2RlYzo6Y29kZWNGb3JOYW1lKCJVVEYtOCIpOworKyAgICAgICAgZWxzZQorKyAgICAgICAg ICAgIGQtPnRjID0gY29kZWMoZC0+bXlzcWwpOworICNlbmRpZgorLSAgICB9IGVsc2UKKy0gICAg eworLSAgICAgICAgLy8gZm9yY2UgdGhlIGNvbW11bmljYXRpb24gdG8gYmUgdXRmOAorLSAgICAg ICAgbXlzcWxfc2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4Iik7CisrICAgIH0KKyAj aWYgUVRfQ09ORklHKHRleHRjb2RlYykKKy0gICAgICAgIGQtPnRjID0gY29kZWMoZC0+bXlzcWwp OworKyAgICBlbHNlCisrICAgICAgICBkLT50YyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZSgi VVRGLTgiKTsKKyAjZW5kaWYKKy0gICAgfQorICNlbmRpZiAgLy8gTVlTUUxfVkVSU0lPTl9JRCA+ PSA1MDAwNworIAorICAgICBkLT5wcmVwYXJlZFF1ZXJ5c0VuYWJsZWQgPSBjaGVja1ByZXBhcmVk UXVlcmllcyhkLT5teXNxbCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvcHJpbnQtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvcHJpbnRlci0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1l IGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludC0yNC5wbmcKK3JlbmFt ZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50ZXItMjQucG5nCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnQtMzIu cG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnRlci0zMi5w bmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL2ltYWdlcy9wcmludC0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvaW1hZ2VzL3ByaW50ZXItMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmlu dHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTI0LnBuZyBiL3F0YmFzZS9z cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTI0LnBuZwor c2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0yNC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTI0LnBuZworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0z Mi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Vz LWZhY2luZy0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMzIucG5nCityZW5hbWUg dG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0zMi5w bmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92 aWV3LXBhZ2UtbXVsdGktMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9p bWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQor cmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVs dGktMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3 LXBhZ2VzLW92ZXJ2aWV3LTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0zMi5wbmcgYi9xdGJhc2Uvc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTMyLnBuZworc2lt aWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv aW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMzIucG5nCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW9uZS0yNC5w bmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLXNp bmdsZS0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTI0LnBuZworcmVuYW1lIHRvIHNy Yy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMjQucG5nCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1w YWdlLW9uZS0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92 aWV3LXBhZ2VzLXNpbmdsZS0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZy b20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTMyLnBuZwor cmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1zaW5n bGUtMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9p bWFnZXMvZml0LXBhZ2UtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9p bWFnZXMvem9vbS1maXQtcGFnZS0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1l IGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0yNC5wbmcKK3Jl bmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMjQu cG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMv Zml0LXBhZ2UtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMv em9vbS1maXQtcGFnZS0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20g c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0zMi5wbmcKK3JlbmFtZSB0 byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMzIucG5nCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXdp ZHRoLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20t Zml0LXdpZHRoLTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC13aWR0aC0yNC5wbmcKK3JlbmFtZSB0byBz cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXdpZHRoLTI0LnBuZworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC13aWR0 aC0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZp dC13aWR0aC0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtd2lkdGgtMzIucG5nCityZW5hbWUgdG8gc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC13aWR0aC0zMi5wbmcKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0dXBkaWFsb2df dW5peC5jcHAgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0dXBkaWFs b2dfdW5peC5jcHAKK2luZGV4IDc4ZTViOGQxZWYuLjJhMjg1MTY3MTkgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0dXBkaWFsb2dfdW5peC5jcHAK KysrKyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBhZ2VzZXR1cGRpYWxvZ191 bml4LmNwcAorQEAgLTUzMiw2ICs1MzIsNyBAQCB2b2lkIFFQYWdlU2V0dXBXaWRnZXQ6OnVwZGF0 ZVdpZGdldCgpCisgdm9pZCBRUGFnZVNldHVwV2lkZ2V0OjpzZXR1cFByaW50ZXIoKSBjb25zdAor IHsKKyAgICAgbV9wcmludGVyLT5zZXRQYWdlTGF5b3V0KG1fcGFnZUxheW91dCk7CisrICAgIG1f cHJpbnRlci0+c2V0UGFnZU9yaWVudGF0aW9uKG1fcGFnZUxheW91dC5vcmllbnRhdGlvbigpKTsK KyAjaWYgUVRfQ09ORklHKGN1cHMpCisgICAgIFFDVVBTU3VwcG9ydDo6UGFnZXNQZXJTaGVldCBw YWdlc1BlclNoZWV0ID0gcXZhcmlhbnRfY2FzdDxRQ1VQU1N1cHBvcnQ6OlBhZ2VzUGVyU2hlZXQ+ KG1fdWkucGFnZXNQZXJTaGVldENvbWJvLT5jdXJyZW50RGF0YSgpCisgKTsKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5xcmMgYi9xdGJh c2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5xcmMKK2luZGV4IDVhNTc5 YmFhNTUuLjEwYjhlMWQzNDEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL3FwcmludGRpYWxvZy5xcmMKKysrKyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvcXByaW50ZGlhbG9nLnFyYworQEAgLTEsOSArMSw5IEBACisgPCFET0NUWVBFIFJDQz48 UkNDIHZlcnNpb249IjEuMCI+CisgPHFyZXNvdXJjZSBwcmVmaXg9Ii9xdC1wcm9qZWN0Lm9yZy9k aWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2ciPgorLTxmaWxlPmltYWdlcy9maXQtcGFnZS0yNC5w bmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL2ZpdC1wYWdlLTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5p bWFnZXMvZml0LXdpZHRoLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvZml0LXdpZHRoLTMy LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvem9vbS1maXQtcGFnZS0yNC5wbmc8L2ZpbGU+Cisr PGZpbGU+aW1hZ2VzL3pvb20tZml0LXBhZ2UtMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy96 b29tLWZpdC13aWR0aC0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pvb20tZml0LXdpZHRo LTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvZ28tZmlyc3QtMjQucG5nPC9maWxlPgorIDxm aWxlPmltYWdlcy9nby1maXJzdC0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL2dvLWxhc3Qt MjQucG5nPC9maWxlPgorQEAgLTE4LDE0ICsxOCwxNCBAQAorIDxmaWxlPmltYWdlcy9sYXlvdXQt cG9ydHJhaXQtMzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy9wYWdlLXNldHVwLTI0LnBuZzwv ZmlsZT4KKyA8ZmlsZT5pbWFnZXMvcGFnZS1zZXR1cC0zMi5wbmc8L2ZpbGU+CistPGZpbGU+aW1h Z2VzL3ByaW50LTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvcHJpbnQtMzIucG5nPC9maWxl PgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2UtbXVsdGktMjQucG5nPC9maWxlPgorLTxmaWxlPmlt YWdlcy92aWV3LXBhZ2UtbXVsdGktMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBh Z2Utb25lLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW9uZS0zMi5wbmc8 L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0yNC5wbmc8L2ZpbGU+CistPGZp bGU+aW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3By aW50ZXItMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy9wcmludGVyLTMyLnBuZzwvZmlsZT4K Kys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+ aW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92 aWV3LXBhZ2VzLXNpbmdsZS0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMt c2luZ2xlLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMjQu cG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0zMi5wbmc8L2ZpbGU+ CisgPGZpbGU+aW1hZ2VzL3pvb20taW4tMjQucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy96b29t LWluLTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvem9vbS1vdXQtMjQucG5nPC9maWxlPgor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9n X3VuaXguY3BwIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2df dW5peC5jcHAKK2luZGV4IGM1Yjg0NWY0ZWMuLjVhNWJhMWQwYTggMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZ191bml4LmNwcAorKysrIGIv cXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5peC5jcHAKK0BA IC03MDIsMTMgKzcwMiwxNCBAQCB2b2lkIFFQcmludERpYWxvZ1ByaXZhdGU6OnNlbGVjdFByaW50 ZXIoY29uc3QgUVByaW50ZXI6Ok91dHB1dEZvcm1hdCBvdXRwdXRGb3JtYQorICAgICAgICAgZWxz ZQorICAgICAgICAgICAgIG9wdGlvbnMuZ3JheXNjYWxlLT5zZXRDaGVja2VkKHRydWUpOworIAor LSAgICAgICAgLy8ga2VlcCBkdXBsZXggdmFsdWUgZXhwbGljaXRseSBzZXQgYnkgdXNlciwgaWYg YW55LCBhbmQgc2VsZWN0ZWQgcHJpbnRlciBzdXBwb3J0cyBpdDsKKy0gICAgICAgIC8vIHVzZSBk ZXZpY2UgZGVmYXVsdCBvdGhlcndpc2UKKysgICAgICAgIC8vIGR1cGxleCBwcmlvcml0aWVzIHRv IGJlIGFzIGZvbGxvd3M6CisrICAgICAgICAvLyAxKSBhIHVzZXItc2VsZWN0ZWQgZHVwbGV4IHZh bHVlIGluIHRoZSBkaWFsb2cgaGFzIGhpZ2hlc3QgcHJvcml0eQorKyAgICAgICAgLy8gMikgZHVw bGV4IHZhbHVlIHNldCBpbiB0aGUgUVByaW50ZXIKKyAgICAgICAgIFFQcmludDo6RHVwbGV4TW9k ZSBkdXBsZXg7CisgICAgICAgICBpZiAoZXhwbGljaXREdXBsZXhNb2RlICE9IFFQcmludDo6RHVw bGV4QXV0byAmJiBzdXBwb3J0ZWREdXBsZXhNb2RlLmNvbnRhaW5zKGV4cGxpY2l0RHVwbGV4TW9k ZSkpCisgICAgICAgICAgICAgZHVwbGV4ID0gZXhwbGljaXREdXBsZXhNb2RlOworICAgICAgICAg ZWxzZQorLSAgICAgICAgICAgIGR1cGxleCA9IHRvcC0+ZC0+bV9jdXJyZW50UHJpbnREZXZpY2Uu ZGVmYXVsdER1cGxleE1vZGUoKTsKKysgICAgICAgICAgICBkdXBsZXggPSBzdGF0aWNfY2FzdDxR UHJpbnQ6OkR1cGxleE1vZGU+KHAtPmR1cGxleCgpKTsKKyAgICAgICAgIHN3aXRjaCAoZHVwbGV4 KSB7CisgICAgICAgICBjYXNlIFFQcmludDo6RHVwbGV4Tm9uZToKKyAgICAgICAgICAgICBvcHRp b25zLm5vRHVwbGV4LT5zZXRDaGVja2VkKHRydWUpOyBicmVhazsKK0BAIC0xMjQyLDEwICsxMjQz LDEwIEBAIHZvaWQgUVVuaXhQcmludFdpZGdldFByaXZhdGU6Ol9xX3ByaW50ZXJDaGFuZ2VkKGlu dCBpbmRleCkKKyAgICAgICAgICAgICBRU3RyaW5nIGZpbGVuYW1lID0gd2lkZ2V0LmZpbGVuYW1l LT50ZXh0KCk7CisgICAgICAgICAgICAgd2lkZ2V0LmZpbGVuYW1lLT5zZXRUZXh0KGZpbGVuYW1l KTsKKyAgICAgICAgICAgICB3aWRnZXQubE91dHB1dC0+c2V0RW5hYmxlZCh0cnVlKTsKKy0gICAg ICAgICAgICBpZiAob3B0aW9uc1BhbmUpCistICAgICAgICAgICAgICAgIG9wdGlvbnNQYW5lLT5z ZWxlY3RQcmludGVyKFFQcmludGVyOjpQZGZGb3JtYXQpOworICAgICAgICAgICAgIHByaW50ZXIt PnNldE91dHB1dEZvcm1hdChRUHJpbnRlcjo6UGRmRm9ybWF0KTsKKyAgICAgICAgICAgICBtX2N1 cnJlbnRQcmludERldmljZSA9IFFQcmludERldmljZSgpOworKyAgICAgICAgICAgIGlmIChvcHRp b25zUGFuZSkKKysgICAgICAgICAgICAgICAgb3B0aW9uc1BhbmUtPnNlbGVjdFByaW50ZXIoUVBy aW50ZXI6OlBkZkZvcm1hdCk7CisgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQorICAg ICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRw cmV2aWV3ZGlhbG9nLmNwcCBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50 cHJldmlld2RpYWxvZy5jcHAKK2luZGV4IDM5NTc1ZDVmNTcuLjIzYjdlODk1MzggMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludHByZXZpZXdk aWFsb2cuY3BwCitAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1By aXZhdGU6OmluaXQoUVByaW50ZXIgKl9wcmludGVyKQorIHN0YXRpYyBpbmxpbmUgdm9pZCBxdF9z ZXR1cEFjdGlvbkljb24oUUFjdGlvbiAqYWN0aW9uLCBRTGF0aW4xU3RyaW5nIG5hbWUpCisgewor ICAgICBRTGF0aW4xU3RyaW5nIGltYWdlUHJlZml4KCI6L3F0LXByb2plY3Qub3JnL2RpYWxvZ3Mv cXByaW50cHJldmlld2RpYWxvZy9pbWFnZXMvIik7CistICAgIFFJY29uIGljb247CisrICAgIFFJ Y29uIGljb24gPSBRSWNvbjo6ZnJvbVRoZW1lKG5hbWUpOworICAgICBpY29uLmFkZEZpbGUoaW1h Z2VQcmVmaXggKyBuYW1lICsgUUxhdGluMVN0cmluZygiLTI0LnBuZyIpLCBRU2l6ZSgyNCwgMjQp KTsKKyAgICAgaWNvbi5hZGRGaWxlKGltYWdlUHJlZml4ICsgbmFtZSArIFFMYXRpbjFTdHJpbmco Ii0zMi5wbmciKSwgUVNpemUoMzIsIDMyKSk7CisgICAgIGFjdGlvbi0+c2V0SWNvbihpY29uKTsK K0BAIC0zODMsOCArMzgzLDggQEAgdm9pZCBRUHJpbnRQcmV2aWV3RGlhbG9nUHJpdmF0ZTo6c2V0 dXBBY3Rpb25zKCkKKyAgICAgZml0UGFnZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShRTGF0aW4xU3Ry aW5nKCJmaXRQYWdlQWN0aW9uIikpOworICAgICBmaXRXaWR0aEFjdGlvbi0+c2V0Q2hlY2thYmxl KHRydWUpOworICAgICBmaXRQYWdlQWN0aW9uLT5zZXRDaGVja2FibGUodHJ1ZSk7CistICAgIHF0 X3NldHVwQWN0aW9uSWNvbihmaXRXaWR0aEFjdGlvbiwgUUxhdGluMVN0cmluZygiZml0LXdpZHRo IikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oZml0UGFnZUFjdGlvbiwgUUxhdGluMVN0cmlu ZygiZml0LXBhZ2UiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihmaXRXaWR0aEFjdGlvbiwg UUxhdGluMVN0cmluZygiem9vbS1maXQtd2lkdGgiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNv bihmaXRQYWdlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ6b29tLWZpdC1wYWdlIikpOworICAgICBR T2JqZWN0Ojpjb25uZWN0KGZpdEdyb3VwLCBTSUdOQUwodHJpZ2dlcmVkKFFBY3Rpb24qKSksIHEs IFNMT1QoX3FfZml0KFFBY3Rpb24qKSkpOworIAorICAgICAvLyBab29tCitAQCAtNDEwLDkgKzQx MCw5IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZhdGU6OnNldHVwQWN0aW9ucygpCisg ICAgIHNpbmdsZU1vZGVBY3Rpb24gPSBtb2RlR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0 aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAiU2hvdyBzaW5nbGUgcGFnZSIp KTsKKyAgICAgZmFjaW5nTW9kZUFjdGlvbiA9IG1vZGVHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBw bGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxvZyIsICJTaG93IGZhY2luZyBw YWdlcyIpKTsKKyAgICAgb3ZlcnZpZXdNb2RlQWN0aW9uID0gbW9kZUdyb3VwLT5hZGRBY3Rpb24o UUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlNob3cg b3ZlcnZpZXcgb2YgYWxsIHBhZ2VzIikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oc2luZ2xl TW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlLW9uZSIpKTsKKy0gICAgcXRfc2V0 dXBBY3Rpb25JY29uKGZhY2luZ01vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZS1z aWRlZCIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKG92ZXJ2aWV3TW9kZUFjdGlvbiwgUUxh dGluMVN0cmluZygidmlldy1wYWdlLW11bHRpIikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24o c2luZ2xlTW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlcy1zaW5nbGUiKSk7Cisr ICAgIHF0X3NldHVwQWN0aW9uSWNvbihmYWNpbmdNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2 aWV3LXBhZ2VzLWZhY2luZyIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29uKG92ZXJ2aWV3TW9k ZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlcy1vdmVydmlldyIpKTsKKyAgICAgc2lu Z2xlTW9kZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShRTGF0aW4xU3RyaW5nKCJzaW5nbGVNb2RlQWN0 aW9uIikpOworICAgICBmYWNpbmdNb2RlQWN0aW9uLT5zZXRPYmplY3ROYW1lKFFMYXRpbjFTdHJp bmcoImZhY2luZ01vZGVBY3Rpb24iKSk7CisgICAgIG92ZXJ2aWV3TW9kZUFjdGlvbi0+c2V0T2Jq ZWN0TmFtZShRTGF0aW4xU3RyaW5nKCJvdmVydmlld01vZGVBY3Rpb24iKSk7CitAQCAtNDI2LDcg KzQyNiw3IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZhdGU6OnNldHVwQWN0aW9ucygp CisgICAgIHByaW50ZXJHcm91cCA9IG5ldyBRQWN0aW9uR3JvdXAocSk7CisgICAgIHByaW50QWN0 aW9uID0gcHJpbnRlckdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl KCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlByaW50IikpOworICAgICBwYWdlU2V0dXBBY3Rpb24g PSBwcmludGVyR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQ cmludFByZXZpZXdEaWFsb2ciLCAiUGFnZSBzZXR1cCIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25J Y29uKHByaW50QWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJwcmludCIpKTsKKysgICAgcXRfc2V0dXBB Y3Rpb25JY29uKHByaW50QWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJwcmludGVyIikpOworICAgICBx dF9zZXR1cEFjdGlvbkljb24ocGFnZVNldHVwQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJwYWdlLXNl dHVwIikpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHByaW50QWN0aW9uLCBTSUdOQUwodHJpZ2dl cmVkKGJvb2wpKSwgcSwgU0xPVChfcV9wcmludCgpKSk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3Qo cGFnZVNldHVwQWN0aW9uLCBTSUdOQUwodHJpZ2dlcmVkKGJvb2wpKSwgcSwgU0xPVChfcV9wYWdl U2V0dXAoKSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVlcnku Y3BwIGIvcXRiYXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5jcHAKK2luZGV4IDMyYzYxNjZj NzkuLjYwYWZlZjEwYzMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3NxbC9rZXJuZWwvcXNxbHF1 ZXJ5LmNwcAorKysrIGIvcXRiYXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5jcHAKK0BAIC0x LDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMp IDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgUXQg Q29tcGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLwor ICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0U3FsIG1vZHVsZSBvZiB0aGUgUXQg VG9vbGtpdC4KK0BAIC0zNzcsNiArMzc3LDEwIEBAIGJvb2wgUVNxbFF1ZXJ5OjpleGVjKGNvbnN0 IFFTdHJpbmcmIHF1ZXJ5KQorICAgICBRRWxhcHNlZFRpbWVyIHQ7CisgICAgIHQuc3RhcnQoKTsK KyAjZW5kaWYKKysgICAgaWYgKCFkcml2ZXIoKSkgeworKyAgICAgICAgcVdhcm5pbmcoIlFTcWxR dWVyeTo6ZXhlYzogY2FsbGVkIGJlZm9yZSBkcml2ZXIgaGFzIGJlZW4gc2V0IHVwIik7CisrICAg ICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKyAgICAgaWYgKGQtPnJlZi5sb2FkUmVsYXhlZCgp ICE9IDEpIHsKKyAgICAgICAgIGJvb2wgZm8gPSBpc0ZvcndhcmRPbmx5KCk7CisgICAgICAgICAq dGhpcyA9IFFTcWxRdWVyeShkcml2ZXIoKS0+Y3JlYXRlUmVzdWx0KCkpOworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwIGIvcXRiYXNl L3NyYy90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKK2luZGV4IDhlZmI5YzUz ZDQuLmNlMDYyZjY2ZDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFic3RyYWN0 aXRlbW1vZGVsdGVzdGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy90ZXN0bGliL3FhYnN0cmFjdGl0 ZW1tb2RlbHRlc3Rlci5jcHAKK0BAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBRQWJzdHJhY3RJdGVt TW9kZWxUZXN0ZXJQcml2YXRlOjpwYXJlbnQoKQorIAorICAgICAvLyBDb21tb24gZXJyb3IgdGVz dCAjMiwgbWFrZSBzdXJlIHRoYXQgYSBzZWNvbmQgbGV2ZWwgaW5kZXggaGFzIGEgcGFyZW50Cisg ICAgIC8vIHRoYXQgaXMgdGhlIGZpcnN0IGxldmVsIGluZGV4LgorLSAgICBpZiAobW9kZWwtPnJv d0NvdW50KHRvcEluZGV4KSA+IDApIHsKKysgICAgaWYgKG1vZGVsLT5yb3dDb3VudCh0b3BJbmRl eCkgPiAwICYmIG1vZGVsLT5jb2x1bW5Db3VudCh0b3BJbmRleCkgPiAwKSB7CisgICAgICAgICBR TW9kZWxJbmRleCBjaGlsZEluZGV4ID0gbW9kZWwtPmluZGV4KDAsIDAsIHRvcEluZGV4KTsKKyAg ICAgICAgIE1PREVMVEVTVEVSX1ZFUklGWShjaGlsZEluZGV4LmlzVmFsaWQoKSk7CisgICAgICAg ICBNT0RFTFRFU1RFUl9DT01QQVJFKG1vZGVsLT5wYXJlbnQoY2hpbGRJbmRleCksIHRvcEluZGV4 KTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcCBiL3F0YmFz ZS9zcmMvdGVzdGxpYi9xYXNjaWlrZXkuY3BwCitpbmRleCA5YTMwOGRhMmJjLi45MzQ5OGIyNTZm IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy90ZXN0bGliL3Fhc2NpaWtleS5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvdGVzdGxpYi9xYXNjaWlrZXkuY3BwCitAQCAtNDk4LDYgKzQ5OCwxMSBAQCBjaGFy IFFUZXN0OjprZXlUb0FzY2lpKFF0OjpLZXkga2V5KQorICAgICBjYXNlIFF0OjpLZXlfTGF1bmNo RSA6IHJldHVybiAwOyAvLyA9IDB4MTBiMCwKKyAgICAgY2FzZSBRdDo6S2V5X0xhdW5jaEYgOiBy ZXR1cm4gMDsgLy8gPSAweDEwYjEsCisgCisrICAgIC8vIEtleXBhZCBuYXZpZ2F0aW9uIGtleXMK KysgICAgY2FzZSBRdDo6S2V5X1NlbGVjdCA6IHJldHVybiAwOyAvLyA9IDB4MDEwMTAwMDAKKysg ICAgY2FzZSBRdDo6S2V5X1llcyA6IHJldHVybiAwOyAvLyA9IDB4MDEwMTAwMDEKKysgICAgY2Fz ZSBRdDo6S2V5X05vIDogcmV0dXJuIDA7IC8vID0gMHgwMTAxMDAwMgorKworICAgICBkZWZhdWx0 OiBRVEVTVF9BU1NFUlQoZmFsc2UpOyByZXR1cm4gMDsKKyAgICAgfQorIH0KK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3BwIGIvcXRiYXNlL3NyYy90ZXN0bGli L3F0ZXN0cmVzdWx0LmNwcAoraW5kZXggODgwMjhhYWM2ZS4uMmU4OTkzMDc3NiAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAKKysrKyBiL3F0YmFzZS9zcmMv dGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAKK0BAIC0yNTEsNyArMjUxLDggQEAgYm9vbCBRVGVzdFJl c3VsdDo6dmVyaWZ5KGJvb2wgc3RhdGVtZW50LCBjb25zdCBjaGFyICpzdGF0ZW1lbnRTdHIsCisg eworICAgICBRVEVTVF9BU1NFUlQoc3RhdGVtZW50U3RyKTsKKyAKKy0gICAgY2hhciBtc2dbMTAy NF0gPSB7J1wwJ307CisrICAgIGNoYXIgbXNnWzEwMjRdOworKyAgICBtc2dbMF0gPSAnXDAnOwor IAorICAgICBpZiAoUVRlc3RMb2c6OnZlcmJvc2VMZXZlbCgpID49IDIpIHsKKyAgICAgICAgIHFz bnByaW50Zihtc2csIDEwMjQsICJRVkVSSUZZKCVzKSIsIHN0YXRlbWVudFN0cik7CitAQCAtMzA5 LDcgKzMxMCw4IEBAIHN0YXRpYyBib29sIGNvbXBhcmVIZWxwZXIoYm9vbCBzdWNjZXNzLCBjb25z dCBjaGFyICpmYWlsdXJlTXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNW YWx1ZXMgPSB0cnVlKQorIHsKKyAgICAgY29uc3Qgc2l6ZV90IG1heE1zZ0xlbiA9IDEwMjQ7Cist ICAgIGNoYXIgbXNnW21heE1zZ0xlbl0gPSB7J1wwJ307CisrICAgIGNoYXIgbXNnW21heE1zZ0xl bl07CisrICAgIG1zZ1swXSA9ICdcMCc7CisgCisgICAgIFFURVNUX0FTU0VSVChleHBlY3RlZCk7 CisgICAgIFFURVNUX0FTU0VSVChhY3R1YWwpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lk Z2V0cy9kaWFsb2dzL3Fjb2xvcmRpYWxvZy5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvZGlhbG9n cy9xY29sb3JkaWFsb2cuY3BwCitpbmRleCA0MjQ3NzMxMjc1Li5jYjMyNWJlODVjIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNwcAorKysrIGIv cXRiYXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNwcAorQEAgLTc4LDcgKzc4 LDEwIEBACisgI2luY2x1ZGUgInF3aW5kb3cuaCIKKyAKKyAjaW5jbHVkZSAicHJpdmF0ZS9xZGlh bG9nX3AuaCIKKysjaW5jbHVkZSAicHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oIgorIAorKyNp bmNsdWRlIDxxcGEvcXBsYXRmb3Jtc2VydmljZXMuaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9y bWludGVncmF0aW9uLmg+CisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKyAKKyBRVF9CRUdJTl9OQU1F U1BBQ0UKK0BAIC0xNjExLDYgKzE2MTQsMjAgQEAgdm9pZCBRQ29sb3JEaWFsb2dQcml2YXRlOjpf cV9uZXdTdGFuZGFyZChpbnQgciwgaW50IGMpCisgdm9pZCBRQ29sb3JEaWFsb2dQcml2YXRlOjpf cV9waWNrU2NyZWVuQ29sb3IoKQorIHsKKyAgICAgUV9RKFFDb2xvckRpYWxvZyk7CisrCisrICAg IGF1dG8gKnBsYXRmb3JtU2VydmljZXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9y bUludGVncmF0aW9uKCktPnNlcnZpY2VzKCk7CisrICAgIGlmIChwbGF0Zm9ybVNlcnZpY2VzLT5o YXNDYXBhYmlsaXR5KFFQbGF0Zm9ybVNlcnZpY2VzOjpDYXBhYmlsaXR5OjpDb2xvclBpY2tpbmcp KSB7CisrICAgICAgICBpZiAoYXV0byAqY29sb3JQaWNrZXIgPSBwbGF0Zm9ybVNlcnZpY2VzLT5j b2xvclBpY2tlcihxLT53aW5kb3dIYW5kbGUoKSkpIHsKKysgICAgICAgICAgICBxLT5jb25uZWN0 KGNvbG9yUGlja2VyLCAmUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyOjpjb2xvclBpY2tlZCwg cSwKKysgICAgICAgICAgICAgICAgICAgICAgIFtxLCBjb2xvclBpY2tlcl0oY29uc3QgUUNvbG9y ICZjb2xvcikgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yUGlja2VyLT5kZWxl dGVMYXRlcigpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHEtPnNldEN1cnJlbnRDb2xv cihjb2xvcik7CisrICAgICAgICAgICAgICAgICAgICAgICB9KTsKKysgICAgICAgICAgICBjb2xv clBpY2tlci0+cGlja0NvbG9yKCk7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQor KyAgICB9CisrCisgICAgIGlmICghY29sb3JQaWNraW5nRXZlbnRGaWx0ZXIpCisgICAgICAgICBj b2xvclBpY2tpbmdFdmVudEZpbHRlciA9IG5ldyBRQ29sb3JQaWNraW5nRXZlbnRGaWx0ZXIodGhp cywgcSk7CisgICAgIHEtPmluc3RhbGxFdmVudEZpbHRlcihjb2xvclBpY2tpbmdFdmVudEZpbHRl cik7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJhY3Rp dGVtZGVsZWdhdGUuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJhY3Rp dGVtZGVsZWdhdGUuY3BwCitpbmRleCBlMTIwODE3ZWRjLi44ZWEzNmI1NDI3IDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJhY3RpdGVtZGVsZWdhdGUuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FhYnN0cmFjdGl0ZW1kZWxlZ2F0 ZS5jcHAKK0BAIC00MDAsMTIgKzQwMCw3IEBAIGJvb2wgUUFic3RyYWN0SXRlbURlbGVnYXRlOjpo ZWxwRXZlbnQoUUhlbHBFdmVudCAqZXZlbnQsCisgICAgICAgICBjb25zdCBRU3RyaW5nIHRvb2x0 aXAgPSBpbmRleC5pc1ZhbGlkKCkgPworICAgICAgICAgICAgICAgZC0+dGV4dEZvclJvbGUoUXQ6 OlRvb2xUaXBSb2xlLCBpbmRleC5kYXRhKFF0OjpUb29sVGlwUm9sZSksIG9wdGlvbi5sb2NhbGUs IHByZWNpc2lvbikgOgorICAgICAgICAgICAgICAgUVN0cmluZygpOworLSAgICAgICAgUVJlY3Qg cmVjdDsKKy0gICAgICAgIGlmIChpbmRleC5pc1ZhbGlkKCkpIHsKKy0gICAgICAgICAgICBjb25z dCBRUmVjdCByID0gdmlldy0+dmlzdWFsUmVjdChpbmRleCk7CistICAgICAgICAgICAgcmVjdCA9 IFFSZWN0KHZpZXctPm1hcFRvR2xvYmFsKHIudG9wTGVmdCgpKSwgci5zaXplKCkpOworLSAgICAg ICAgfQorLSAgICAgICAgUVRvb2xUaXA6OnNob3dUZXh0KGhlLT5nbG9iYWxQb3MoKSwgdG9vbHRp cCwgdmlldywgcmVjdCk7CisrICAgICAgICBRVG9vbFRpcDo6c2hvd1RleHQoaGUtPmdsb2JhbFBv cygpLCB0b29sdGlwLCB2aWV3LT52aWV3cG9ydCgpLCBvcHRpb24ucmVjdCk7CisgICAgICAgICBl dmVudC0+c2V0QWNjZXB0ZWQoIXRvb2x0aXAuaXNFbXB0eSgpKTsKKyAgICAgICAgIGJyZWFrOwor ICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWxp c3R2aWV3LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNwcAor aW5kZXggMmIzNDQ3NjY0Mi4uZWViZmFhMDMwZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lk Z2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0 ZW12aWV3cy9xbGlzdHZpZXcuY3BwCitAQCAtMzM4Niw2ICszMzg2LDcgQEAgdm9pZCBRSWNvbk1v ZGVWaWV3QmFzZTo6dXBkYXRlQ29udGVudHNTaXplKCkKKyAqLworIHZvaWQgUUxpc3RWaWV3Ojpj dXJyZW50Q2hhbmdlZChjb25zdCBRTW9kZWxJbmRleCAmY3VycmVudCwgY29uc3QgUU1vZGVsSW5k ZXggJnByZXZpb3VzKQorIHsKKysgICAgUUFic3RyYWN0SXRlbVZpZXc6OmN1cnJlbnRDaGFuZ2Vk KGN1cnJlbnQsIHByZXZpb3VzKTsKKyAjaWZuZGVmIFFUX05PX0FDQ0VTU0lCSUxJVFkKKyAgICAg aWYgKFFBY2Nlc3NpYmxlOjppc0FjdGl2ZSgpKSB7CisgICAgICAgICBpZiAoY3VycmVudC5pc1Zh bGlkKCkpIHsKK0BAIC0zMzk2LDcgKzMzOTcsNiBAQCB2b2lkIFFMaXN0Vmlldzo6Y3VycmVudENo YW5nZWQoY29uc3QgUU1vZGVsSW5kZXggJmN1cnJlbnQsIGNvbnN0IFFNb2RlbEluZGV4ICZwcgor ICAgICAgICAgfQorICAgICB9CisgI2VuZGlmCistICAgIFFBYnN0cmFjdEl0ZW1WaWV3OjpjdXJy ZW50Q2hhbmdlZChjdXJyZW50LCBwcmV2aW91cyk7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy5jcHAgYi9xdGJhc2Uvc3Jj L3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcuY3BwCitpbmRleCA5MzRhYzU4MWIyLi5mNzli YjI0MjQ5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2 aWV3LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3LmNw cAorQEAgLTEwMTMsNiArMTAxMyw3IEBAIHZvaWQgUVRhYmxlVmlld1ByaXZhdGU6OmRyYXdDZWxs KFFQYWludGVyICpwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25WaWV3SXRlbSAmCisgaW50IFFU YWJsZVZpZXdQcml2YXRlOjp3aWR0aEhpbnRGb3JJbmRleChjb25zdCBRTW9kZWxJbmRleCAmaW5k ZXgsIGludCBoaW50LCBjb25zdCBRU3R5bGVPcHRpb25WaWV3SXRlbSAmb3B0aW9uKSBjb25zdAor IHsKKyAgICAgUV9RKGNvbnN0IFFUYWJsZVZpZXcpOworKyAgICBjb25zdCBpbnQgb2xkSGludCA9 IGhpbnQ7CisgICAgIFFXaWRnZXQgKmVkaXRvciA9IGVkaXRvckZvckluZGV4KGluZGV4KS53aWRn ZXQuZGF0YSgpOworICAgICBpZiAoZWRpdG9yICYmIHBlcnNpc3RlbnQuY29udGFpbnMoZWRpdG9y KSkgeworICAgICAgICAgaGludCA9IHFNYXgoaGludCwgZWRpdG9yLT5zaXplSGludCgpLndpZHRo KCkpOworQEAgLTEwMjEsNiArMTAyMiwxNyBAQCBpbnQgUVRhYmxlVmlld1ByaXZhdGU6OndpZHRo SGludEZvckluZGV4KGNvbnN0IFFNb2RlbEluZGV4ICZpbmRleCwgaW50IGhpbnQsIGNvbgorICAg ICAgICAgaGludCA9IHFCb3VuZChtaW4sIGhpbnQsIG1heCk7CisgICAgIH0KKyAgICAgaGludCA9 IHFNYXgoaGludCwgcS0+aXRlbURlbGVnYXRlKGluZGV4KS0+c2l6ZUhpbnQob3B0aW9uLCBpbmRl eCkud2lkdGgoKSk7CisrCisrICAgIGlmIChoYXNTcGFucygpKSB7CisrICAgICAgICBhdXRvIHNw YW4gPSBzcGFucy5zcGFuQXQoaW5kZXguY29sdW1uKCksIGluZGV4LnJvdygpKTsKKysgICAgICAg IGlmIChzcGFuICYmIHNwYW4tPm1fbGVmdCA9PSBpbmRleC5jb2x1bW4oKSAmJiBzcGFuLT5tX3Rv cCA9PSBpbmRleC5yb3coKSkgeworKyAgICAgICAgICAgIC8vIHNwYW5zIGFyZSBzY3Jld2VkIHVw IHdoZW4gc2VjdGlvbnMgYXJlIG1vdmVkCisrICAgICAgICAgICAgY29uc3QgYXV0byBsZWZ0ID0g bG9naWNhbENvbHVtbihzcGFuLT5tX2xlZnQpOworKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAx OyBpIDw9IHNwYW4tPndpZHRoKCk7ICsraSkKKysgICAgICAgICAgICAgICBoaW50IC09IHEtPmNv bHVtbldpZHRoKHZpc3VhbENvbHVtbihsZWZ0ICsgaSkpOworKyAgICAgICAgfQorKyAgICAgICAg aGludCA9IHN0ZDo6bWF4KGhpbnQsIG9sZEhpbnQpOworKyAgICB9CisgICAgIHJldHVybiBoaW50 OworIH0KKyAKK0BAIC0xMDUzLDYgKzEwNjUsMTEgQEAgaW50IFFUYWJsZVZpZXdQcml2YXRlOjpo ZWlnaHRIaW50Rm9ySW5kZXgoY29uc3QgUU1vZGVsSW5kZXggJmluZGV4LCBpbnQgaGludCwgUVMK KyAgICAgICAgIG9wdGlvbi5yZWN0LnNldEhlaWdodChoZWlnaHQpOworICAgICAgICAgb3B0aW9u LnJlY3Quc2V0WChxLT5jb2x1bW5WaWV3cG9ydFBvc2l0aW9uKGluZGV4LmNvbHVtbigpKSk7Cisg ICAgICAgICBvcHRpb24ucmVjdC5zZXRXaWR0aChxLT5jb2x1bW5XaWR0aChpbmRleC5jb2x1bW4o KSkpOworKyAgICAgICAgaWYgKGhhc1NwYW5zKCkpIHsKKysgICAgICAgICAgICBhdXRvIHNwYW4g PSBzcGFucy5zcGFuQXQoaW5kZXguY29sdW1uKCksIGluZGV4LnJvdygpKTsKKysgICAgICAgICAg ICBpZiAoc3BhbiAmJiBzcGFuLT5tX2xlZnQgPT0gaW5kZXguY29sdW1uKCkgJiYgc3Bhbi0+bV90 b3AgPT0gaW5kZXgucm93KCkpCisrICAgICAgICAgICAgICAgIG9wdGlvbi5yZWN0LnNldFdpZHRo KHN0ZDo6bWF4KG9wdGlvbi5yZWN0LndpZHRoKCksIHZpc3VhbFNwYW5SZWN0KCpzcGFuKS53aWR0 aCgpKSk7CisrICAgICAgICB9CisgICAgICAgICAvLyAxcHggbGVzcyBzcGFjZSB3aGVuIGdyaWQg aXMgc2hvd24gKHNlZSBkcmF3Q2VsbCkKKyAgICAgICAgIGlmIChzaG93R3JpZCkKKyAgICAgICAg ICAgICBvcHRpb24ucmVjdC5zZXRXaWR0aChvcHRpb24ucmVjdC53aWR0aCgpIC0gMSk7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmggYi9xdGJhc2Uvc3Jj L3dpZGdldHMva2VybmVsL3FhY3Rpb24uaAoraW5kZXggMjU4YTFlYTBhMC4uNzM3YzFlODI4NSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcWFjdGlvbi5oCisrKysgYi9x dGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3FhY3Rpb24uaAorQEAgLTgxLDcgKzgxLDcgQEAgY2xh c3MgUV9XSURHRVRTX0VYUE9SVCBRQWN0aW9uIDogcHVibGljIFFPYmplY3QKKyAgICAgUV9QUk9Q RVJUWShNZW51Um9sZSBtZW51Um9sZSBSRUFEIG1lbnVSb2xlIFdSSVRFIHNldE1lbnVSb2xlIE5P VElGWSBjaGFuZ2VkKQorICAgICBRX1BST1BFUlRZKGJvb2wgaWNvblZpc2libGVJbk1lbnUgUkVB RCBpc0ljb25WaXNpYmxlSW5NZW51IFdSSVRFIHNldEljb25WaXNpYmxlSW5NZW51IE5PVElGWSBj aGFuZ2VkKQorICAgICBRX1BST1BFUlRZKGJvb2wgc2hvcnRjdXRWaXNpYmxlSW5Db250ZXh0TWVu dSBSRUFEIGlzU2hvcnRjdXRWaXNpYmxlSW5Db250ZXh0TWVudSBXUklURSBzZXRTaG9ydGN1dFZp c2libGVJbkNvbnRleHRNZW51IE5PVElGWSBjaGFuZ2VkKQorLSAgICBRX1BST1BFUlRZKFByaW9y aXR5IHByaW9yaXR5IFJFQUQgcHJpb3JpdHkgV1JJVEUgc2V0UHJpb3JpdHkpCisrICAgIFFfUFJP UEVSVFkoUHJpb3JpdHkgcHJpb3JpdHkgUkVBRCBwcmlvcml0eSBXUklURSBzZXRQcmlvcml0eSBO T1RJRlkgY2hhbmdlZCkKKyAKKyBwdWJsaWM6CisgICAgIC8vIG5vdGUgdGhpcyBpcyBjb3BpZWQg aW50byBxcGxhdGZvcm1tZW51LmgsIHdoaWNoIG11c3Qgc3RheSBpbiBzeW5jCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0LmNwcCBiL3F0YmFzZS9zcmMvd2lk Z2V0cy9rZXJuZWwvcXdpZGdldC5jcHAKK2luZGV4IDllYmExZTAwMWUuLjI2ZjZkMjdlMTggMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQuY3BwCitAQCAtNTI5Niw3ICs1Mjk2LDcg QEAgdm9pZCBRV2lkZ2V0UHJpdmF0ZTo6ZHJhd1dpZGdldChRUGFpbnREZXZpY2UgKnBkZXYsIGNv bnN0IFFSZWdpb24gJnJnbiwgY29uc3QgUVAKKyAgICAgICAgIFFXaWRnZXRFZmZlY3RTb3VyY2VQ cml2YXRlICpzb3VyY2VkID0gc3RhdGljX2Nhc3Q8UVdpZGdldEVmZmVjdFNvdXJjZVByaXZhdGUg Kj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc291cmNlLT5kX2Z1bmMoKSk7CisgICAgICAgICBpZiAoIXNvdXJjZWQtPmNvbnRleHQp IHsKKy0gICAgICAgICAgICBjb25zdCBRUmVnaW9uIGVmZmVjdFJnbihyZ24uYm91bmRpbmdSZWN0 KCkpOworKyAgICAgICAgICAgIGNvbnN0IFFSZWdpb24gZWZmZWN0UmduKChmbGFncyAmIFVzZUVm ZmVjdFJlZ2lvbkJvdW5kcykgPyByZ24uYm91bmRpbmdSZWN0KCkgOiByZ24pOworICAgICAgICAg ICAgIFFXaWRnZXRQYWludENvbnRleHQgY29udGV4dChwZGV2LCBlZmZlY3RSZ24sIG9mZnNldCwg ZmxhZ3MsIHNoYXJlZFBhaW50ZXIsIHJlcGFpbnRNYW5hZ2VyKTsKKyAgICAgICAgICAgICBzb3Vy Y2VkLT5jb250ZXh0ID0gJmNvbnRleHQ7CisgICAgICAgICAgICAgaWYgKCFzaGFyZWRQYWludGVy KSB7CitAQCAtNTMyOCw2ICs1MzI4LDcgQEAgdm9pZCBRV2lkZ2V0UHJpdmF0ZTo6ZHJhd1dpZGdl dChRUGFpbnREZXZpY2UgKnBkZXYsIGNvbnN0IFFSZWdpb24gJnJnbiwgY29uc3QgUVAKKyAgICAg ICAgIH0KKyAgICAgfQorICNlbmRpZiAvLyBRVF9DT05GSUcoZ3JhcGhpY3NlZmZlY3QpCisrICAg IGZsYWdzID0gZmxhZ3MgJiB+VXNlRWZmZWN0UmVnaW9uQm91bmRzOworIAorICAgICBjb25zdCBi b29sIGFsc29PblNjcmVlbiA9IGZsYWdzICYgRHJhd1BhaW50T25TY3JlZW47CisgICAgIGNvbnN0 IGJvb2wgcmVjdXJzaXZlID0gZmxhZ3MgJiBEcmF3UmVjdXJzaXZlOworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmggYi9xdGJhc2Uvc3JjL3dpZGdldHMv a2VybmVsL3F3aWRnZXRfcC5oCitpbmRleCBlZWY2YjhmYTJjLi5jNDMyZjRiNWQ1IDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaAorKysrIGIvcXRiYXNl L3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaAorQEAgLTIyOSw3ICsyMjksOCBAQCBwdWJs aWM6CisgICAgICAgICBEb250U3VidHJhY3RPcGFxdWVDaGlsZHJlbiA9IDB4MTAsCisgICAgICAg ICBEb250RHJhd09wYXF1ZUNoaWxkcmVuID0gMHgyMCwKKyAgICAgICAgIERvbnREcmF3TmF0aXZl Q2hpbGRyZW4gPSAweDQwLAorLSAgICAgICAgRG9udFNldENvbXBvc2l0aW9uTW9kZSA9IDB4ODAK KysgICAgICAgIERvbnRTZXRDb21wb3NpdGlvbk1vZGUgPSAweDgwLAorKyAgICAgICAgVXNlRWZm ZWN0UmVnaW9uQm91bmRzID0gMHgxMDAKKyAgICAgfTsKKyAgICAgUV9ERUNMQVJFX0ZMQUdTKERy YXdXaWRnZXRGbGFncywgRHJhd1dpZGdldEZsYWcpCisgICAgIFFfRkxBRyhEcmF3V2lkZ2V0Rmxh Z3MpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWlu dG1hbmFnZXIuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWludG1h bmFnZXIuY3BwCitpbmRleCAwMjg4MGIzNGRhLi4wZDQ0ZTEzMjZkIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWludG1hbmFnZXIuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRyZXBhaW50bWFuYWdlci5jcHAKK0BAIC0x MDE4LDcgKzEwMTgsOCBAQCB2b2lkIFFXaWRnZXRSZXBhaW50TWFuYWdlcjo6cGFpbnRBbmRGbHVz aCgpCisgCisgICAgIC8vIFBhaW50IHRoZSByZXN0IHdpdGggY29tcG9zaXRpb24uCisgICAgIGlm IChyZXBhaW50QWxsV2lkZ2V0cyB8fCAhZGlydHlDb3B5LmlzRW1wdHkoKSkgeworLSAgICAgICAg UVdpZGdldFByaXZhdGU6OkRyYXdXaWRnZXRGbGFncyBmbGFncyA9IFFXaWRnZXRQcml2YXRlOjpE cmF3QXNSb290IHwgUVdpZGdldFByaXZhdGU6OkRyYXdSZWN1cnNpdmU7CisrICAgICAgICBRV2lk Z2V0UHJpdmF0ZTo6RHJhd1dpZGdldEZsYWdzIGZsYWdzID0gUVdpZGdldFByaXZhdGU6OkRyYXdB c1Jvb3QgfCBRV2lkZ2V0UHJpdmF0ZTo6RHJhd1JlY3Vyc2l2ZQorKyAgICAgICAgICAgICAgICB8 IFFXaWRnZXRQcml2YXRlOjpVc2VFZmZlY3RSZWdpb25Cb3VuZHM7CisgICAgICAgICB0bHctPmRf ZnVuYygpLT5kcmF3V2lkZ2V0KHN0b3JlLT5wYWludERldmljZSgpLCBkaXJ0eUNvcHksIFFQb2lu dCgpLCBmbGFncywgbnVsbHB0ciwgdGhpcyk7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL3dpZGdldHMvc3R5bGVzL3FmdXNpb25zdHlsZS5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdl dHMvc3R5bGVzL3FmdXNpb25zdHlsZS5jcHAKK2luZGV4IGY0MzQ1ZDk3YzQuLjk2MjkxMmM4Mzgg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVzL3FmdXNpb25zdHlsZS5jcHAK KysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1c2lvbnN0eWxlLmNwcAorQEAgLTE3 NzIsMTQgKzE3NzIsNiBAQCB2b2lkIFFGdXNpb25TdHlsZTo6ZHJhd0NvbnRyb2woQ29udHJvbEVs ZW1lbnQgZWxlbWVudCwgY29uc3QgUVN0eWxlT3B0aW9uICpvcHRpbworICAgICAgICAgICAgIHBy b3h5KCktPmRyYXdDb250cm9sKENFX1B1c2hCdXR0b25MYWJlbCwgJnN1Ym9wdCwgcGFpbnRlciwg d2lkZ2V0KTsKKyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIENFX1B1c2hC dXR0b25MYWJlbDoKKy0gICAgICAgIGlmIChjb25zdCBRU3R5bGVPcHRpb25CdXR0b24gKmJ1dHRv biA9IHFzdHlsZW9wdGlvbl9jYXN0PGNvbnN0IFFTdHlsZU9wdGlvbkJ1dHRvbiAqPihvcHRpb24p KSB7CistICAgICAgICAgICAgUVN0eWxlT3B0aW9uQnV0dG9uIGIoKmJ1dHRvbik7CistICAgICAg ICAgICAgLy8gbm8gUE1fQnV0dG9uU2hpZnRIb3Jpem9udGFsIGFuZCBQTV9CdXR0b25TaGlmdFZl cnRpY2FsIGZvciBmdXNpb24gc3R5bGUKKy0gICAgICAgICAgICBiLnN0YXRlICY9IH4oU3RhdGVf T24gfCBTdGF0ZV9TdW5rZW4pOworLSAgICAgICAgICAgIFFDb21tb25TdHlsZTo6ZHJhd0NvbnRy b2woZWxlbWVudCwgJmIsIHBhaW50ZXIsIHdpZGdldCk7CistICAgICAgICB9CistICAgICAgICBi cmVhazsKKyAgICAgY2FzZSBDRV9NZW51QmFyRW1wdHlBcmVhOgorICAgICAgICAgcGFpbnRlci0+ c2F2ZSgpOworICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3V0aWwvcWNv bXBsZXRlci5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNwcAoraW5k ZXggMThiMjQwNjNkOC4uZWY3MjA3YThhMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0 cy91dGlsL3Fjb21wbGV0ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9xY29t cGxldGVyLmNwcAorQEAgLTExMjAsNiArMTEyMCw4IEBAIHZvaWQgUUNvbXBsZXRlcjo6c2V0TW9k ZWwoUUFic3RyYWN0SXRlbU1vZGVsICptb2RlbCkKKyB7CisgICAgIFFfRChRQ29tcGxldGVyKTsK KyAgICAgUUFic3RyYWN0SXRlbU1vZGVsICpvbGRNb2RlbCA9IGQtPnByb3h5LT5zb3VyY2VNb2Rl bCgpOworKyAgICBpZiAob2xkTW9kZWwgPT0gbW9kZWwpCisrICAgICAgICByZXR1cm47CisgI2lm IFFUX0NPTkZJRyhmaWxlc3lzdGVtbW9kZWwpCisgICAgIGlmIChxb2JqZWN0X2Nhc3Q8Y29uc3Qg UUZpbGVTeXN0ZW1Nb2RlbCAqPihvbGRNb2RlbCkpCisgICAgICAgICBzZXRDb21wbGV0aW9uUm9s ZShRdDo6RWRpdFJvbGUpOyAvLyBRVEJVRy01NDY0MiwgY2xlYXIgRmlsZU5hbWVSb2xlIHNldCBi eSBRRmlsZVN5c3RlbU1vZGVsCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdl dHMvcWFic3RyYWN0YnV0dG9uLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FhYnN0 cmFjdGJ1dHRvbi5jcHAKK2luZGV4IGExMjhiMjM5NTAuLmRjNDBiZjYyZmIgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3BwCisrKysgYi9x dGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3BwCitAQCAtNTYsNiAr NTYsNyBAQAorICNpZm5kZWYgUVRfTk9fQUNDRVNTSUJJTElUWQorICNpbmNsdWRlICJxYWNjZXNz aWJsZS5oIgorICNlbmRpZgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAKKyAj aW5jbHVkZSA8YWxnb3JpdGhtPgorIAorQEAgLTEwNzYsMTkgKzEwNzcsMTkgQEAgdm9pZCBRQWJz dHJhY3RCdXR0b246OmtleVByZXNzRXZlbnQoUUtleUV2ZW50ICplKQorIHsKKyAgICAgUV9EKFFB YnN0cmFjdEJ1dHRvbik7CisgICAgIGJvb2wgbmV4dCA9IHRydWU7CistICAgIHN3aXRjaCAoZS0+ a2V5KCkpIHsKKy0gICAgY2FzZSBRdDo6S2V5X0VudGVyOgorLSAgICBjYXNlIFF0OjpLZXlfUmV0 dXJuOgorLSAgICAgICAgZS0+aWdub3JlKCk7CistICAgICAgICBicmVhazsKKy0gICAgY2FzZSBR dDo6S2V5X1NlbGVjdDoKKy0gICAgY2FzZSBRdDo6S2V5X1NwYWNlOgorLSAgICAgICAgaWYgKCFl LT5pc0F1dG9SZXBlYXQoKSkgeworLSAgICAgICAgICAgIHNldERvd24odHJ1ZSk7CistICAgICAg ICAgICAgcmVwYWludCgpOworLSAgICAgICAgICAgIGQtPmVtaXRQcmVzc2VkKCk7CistICAgICAg ICB9CistICAgICAgICBicmVhazsKKysKKysgICAgY29uc3QgYXV0byBrZXkgPSBzdGF0aWNfY2Fz dDxRdDo6S2V5PihlLT5rZXkoKSk7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0g UUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0 dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRh aW5zKGtleSkgJiYgIWUtPmlzQXV0b1JlcGVhdCgpKSB7CisrICAgICAgICBzZXREb3duKHRydWUp OworKyAgICAgICAgcmVwYWludCgpOworKyAgICAgICAgZC0+ZW1pdFByZXNzZWQoKTsKKysgICAg ICAgIHJldHVybjsKKysgICAgfQorKworKyAgICBzd2l0Y2ggKGtleSkgeworICAgICBjYXNlIFF0 OjpLZXlfVXA6CisgICAgICAgICBuZXh0ID0gZmFsc2U7CisgICAgICAgICBRX0ZBTExUSFJPVUdI KCk7CitAQCAtMTE1MywxNSArMTE1NCwxNSBAQCB2b2lkIFFBYnN0cmFjdEJ1dHRvbjo6a2V5UmVs ZWFzZUV2ZW50KFFLZXlFdmVudCAqZSkKKyAgICAgaWYgKCFlLT5pc0F1dG9SZXBlYXQoKSkKKyAg ICAgICAgIGQtPnJlcGVhdFRpbWVyLnN0b3AoKTsKKyAKKy0gICAgc3dpdGNoIChlLT5rZXkoKSkg eworLSAgICBjYXNlIFF0OjpLZXlfU2VsZWN0OgorLSAgICBjYXNlIFF0OjpLZXlfU3BhY2U6Cist ICAgICAgICBpZiAoIWUtPmlzQXV0b1JlcGVhdCgpICYmIGQtPmRvd24pCistICAgICAgICAgICAg ZC0+Y2xpY2soKTsKKy0gICAgICAgIGJyZWFrOworLSAgICBkZWZhdWx0OgorLSAgICAgICAgZS0+ aWdub3JlKCk7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0 aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlz KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0 PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKHN0YXRpY19j YXN0PFF0OjpLZXk+KGUtPmtleSgpKSkgJiYgIWUtPmlzQXV0b1JlcGVhdCgpICYmIGQtPmRvd24p IHsKKysgICAgICAgIGQtPmNsaWNrKCk7CisrICAgICAgICByZXR1cm47CisgICAgIH0KKysKKysg ICAgZS0+aWdub3JlKCk7CisgfQorIAorIC8qIVxyZWltcAorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lk Z2V0cy9xY29tYm9ib3guY3BwCitpbmRleCA3YTQ5NmMyN2UwLi4wYTNkOTY2NDdiIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcAorKysrIGIvcXRi YXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcAorQEAgLTMzNTIsNyArMzM1Miwy MyBAQCB2b2lkIFFDb21ib0JveDo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQgKmUpCisgCisgICAg IE1vdmUgbW92ZSA9IE5vTW92ZTsKKyAgICAgaW50IG5ld0luZGV4ID0gY3VycmVudEluZGV4KCk7 CistICAgIHN3aXRjaCAoZS0+a2V5KCkpIHsKKysKKysgICAgYm9vbCBwcmVzc0xpa2VCdXR0b24g PSAhZC0+bGluZUVkaXQ7CisrI2lmZGVmIFFUX0tFWVBBRF9OQVZJR0FUSU9OCisrICAgIHByZXNz TGlrZUJ1dHRvbiB8PSBRQXBwbGljYXRpb25Qcml2YXRlOjprZXlwYWROYXZpZ2F0aW9uRW5hYmxl ZCgpICYmICFoYXNFZGl0Rm9jdXMoKTsKKysjZW5kaWYKKysgICAgYXV0byBrZXkgPSBzdGF0aWNf Y2FzdDxRdDo6S2V5PihlLT5rZXkoKSk7CisrICAgIGlmIChwcmVzc0xpa2VCdXR0b24pIHsKKysg ICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0 ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8 UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKGtleSkp IHsKKysgICAgICAgICAgICBzaG93UG9wdXAoKTsKKysgICAgICAgICAgICByZXR1cm47CisrICAg ICAgICB9CisrICAgIH0KKysKKysgICAgc3dpdGNoIChrZXkpIHsKKyAgICAgY2FzZSBRdDo6S2V5 X1VwOgorICAgICAgICAgaWYgKGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmllcikK KyAgICAgICAgICAgICBicmVhazsgLy8gcGFzcyB0byBsaW5lIGVkaXQgZm9yIGF1dG8gY29tcGxl dGlvbgorQEAgLTMzOTQsMjYgKzM0MTAsMTEgQEAgdm9pZCBRQ29tYm9Cb3g6OmtleVByZXNzRXZl bnQoUUtleUV2ZW50ICplKQorICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0KKyAgICAg ICAgIGJyZWFrOworLSAgICBjYXNlIFF0OjpLZXlfU3BhY2U6CistICAgICAgICBpZiAoIWQtPmxp bmVFZGl0KSB7CistICAgICAgICAgICAgc2hvd1BvcHVwKCk7CistICAgICAgICAgICAgcmV0dXJu OworLSAgICAgICAgfQorLSAgICAgICAgYnJlYWs7CistICAgIGNhc2UgUXQ6OktleV9FbnRlcjoK Ky0gICAgY2FzZSBRdDo6S2V5X1JldHVybjoKKyAgICAgY2FzZSBRdDo6S2V5X0VzY2FwZToKKyAg ICAgICAgIGlmICghZC0+bGluZUVkaXQpCisgICAgICAgICAgICAgZS0+aWdub3JlKCk7CisgICAg ICAgICBicmVhazsKKyAjaWZkZWYgUVRfS0VZUEFEX05BVklHQVRJT04KKy0gICAgY2FzZSBRdDo6 S2V5X1NlbGVjdDoKKy0gICAgICAgIGlmIChRQXBwbGljYXRpb25Qcml2YXRlOjprZXlwYWROYXZp Z2F0aW9uRW5hYmxlZCgpCistICAgICAgICAgICAgICAgICYmICghaGFzRWRpdEZvY3VzKCkgfHwg IWQtPmxpbmVFZGl0KSkgeworLSAgICAgICAgICAgIHNob3dQb3B1cCgpOworLSAgICAgICAgICAg IHJldHVybjsKKy0gICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworICAgICBjYXNlIFF0OjpLZXlf TGVmdDoKKyAgICAgY2FzZSBRdDo6S2V5X1JpZ2h0OgorICAgICAgICAgaWYgKFFBcHBsaWNhdGlv blByaXZhdGU6OmtleXBhZE5hdmlnYXRpb25FbmFibGVkKCkgJiYgIWhhc0VkaXRGb2N1cygpKQor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRldGltZWVkaXRfcC5o IGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRpdF9wLmgKK2luZGV4IGQz NmI2ZjhmOWEuLmUwZGY1YjUxNTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lk Z2V0cy9xZGF0ZXRpbWVlZGl0X3AuaAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMv cWRhdGV0aW1lZWRpdF9wLmgKK0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTggVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENv cHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6 Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IFF0V2lkZ2V0cyBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93 aWRnZXRzL3Fncm91cGJveC5jcHAKK2luZGV4IDAyYTBiZWQzMjUuLjNmM2VjY2MzNzAgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3BwCisrKysgYi9x dGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3BwCitAQCAtNTQsNiArNTQsOCBA QAorICNpbmNsdWRlICJxYWNjZXNzaWJsZS5oIgorICNlbmRpZgorICNpbmNsdWRlIDxwcml2YXRl L3F3aWRnZXRfcC5oPgorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmg+Cisr I2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorIAorICNpbmNsdWRlICJxZGVidWcuaCIK KyAKK0BAIC0zNjAsNyArMzYyLDEwIEBAIGJvb2wgUUdyb3VwQm94OjpldmVudChRRXZlbnQgKmUp CisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgY2FzZSBRRXZlbnQ6OktleVByZXNzOiB7Cisg ICAgICAgICBRS2V5RXZlbnQgKmsgPSBzdGF0aWNfY2FzdDxRS2V5RXZlbnQqPihlKTsKKy0gICAg ICAgIGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgKGstPmtleSgpID09IFF0OjpLZXlfU2VsZWN0 IHx8IGstPmtleSgpID09IFF0OjpLZXlfU3BhY2UpKSB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1 dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50 KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAg ICAgaWYgKCFrLT5pc0F1dG9SZXBlYXQoKSAmJiBidXR0b25QcmVzc0tleXMuY29udGFpbnMoc3Rh dGljX2Nhc3Q8UXQ6OktleT4oay0+a2V5KCkpKSkgeworICAgICAgICAgICAgIGQtPnByZXNzZWRD b250cm9sID0gUVN0eWxlOjpTQ19Hcm91cEJveENoZWNrQm94OworICAgICAgICAgICAgIHVwZGF0 ZShzdHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5bGU6OkNDX0dyb3VwQm94LCAmYm94LCBRU3R5 bGU6OlNDX0dyb3VwQm94Q2hlY2tCb3gsIHRoaXMpKTsKKyAgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKK0BAIC0zNjksNyArMzc0LDEwIEBAIGJvb2wgUUdyb3VwQm94OjpldmVudChRRXZlbnQgKmUp CisgICAgIH0KKyAgICAgY2FzZSBRRXZlbnQ6OktleVJlbGVhc2U6IHsKKyAgICAgICAgIFFLZXlF dmVudCAqayA9IHN0YXRpY19jYXN0PFFLZXlFdmVudCo+KGUpOworLSAgICAgICAgaWYgKCFrLT5p c0F1dG9SZXBlYXQoKSAmJiAoay0+a2V5KCkgPT0gUXQ6OktleV9TZWxlY3QgfHwgay0+a2V5KCkg PT0gUXQ6OktleV9TcGFjZSkpIHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlz ID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhl bWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoIWstPmlz QXV0b1JlcGVhdCgpICYmIGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhzdGF0aWNfY2FzdDxRdDo6 S2V5PihrLT5rZXkoKSkpKSB7CisgICAgICAgICAgICAgYm9vbCB0b2dnbGUgPSAoZC0+cHJlc3Nl ZENvbnRyb2wgPT0gUVN0eWxlOjpTQ19Hcm91cEJveExhYmVsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfHwgZC0+cHJlc3NlZENvbnRyb2wgPT0gUVN0eWxlOjpTQ19Hcm91cEJveENoZWNr Qm94KTsKKyAgICAgICAgICAgICBkLT5wcmVzc2VkQ29udHJvbCA9IFFTdHlsZTo6U0NfTm9uZTsK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xbGFiZWwuY3BwIGIvcXRi YXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWxhYmVsLmNwcAoraW5kZXggMzBmZjgwY2JiMC4uY2Yy NjA1YzE3YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5j cHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAKK0BAIC00MjEs OSArNDIxLDYgQEAgdm9pZCBRTGFiZWw6OnNldFBpeG1hcChjb25zdCBRUGl4bWFwICZwaXhtYXAp CisgICAgICAgICBkLT5waXhtYXAgPSBuZXcgUVBpeG1hcChwaXhtYXApOworICAgICB9CisgCist ICAgIGlmIChkLT5waXhtYXAtPmRlcHRoKCkgPT0gMSAmJiAhZC0+cGl4bWFwLT5tYXNrKCkpCist ICAgICAgICBkLT5waXhtYXAtPnNldE1hc2soKigoUUJpdG1hcCAqKWQtPnBpeG1hcCkpOworLQor ICAgICBkLT51cGRhdGVMYWJlbCgpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dp ZGdldHMvd2lkZ2V0cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRz L3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcAoraW5kZXggNDkzYzA5NGNjMS4uZDVmNGI1 OTAxNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0b29sYmFyYXJl YWxheW91dC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0b29sYmFyYXJl YWxheW91dC5jcHAKK0BAIC0xMzY3LDcgKzEzNjcsNyBAQCBib29sIFFUb29sQmFyQXJlYUxheW91 dDo6cmVzdG9yZVN0YXRlKFFEYXRhU3RyZWFtICZzdHJlYW0sIGNvbnN0IFFMaXN0PFFUb29sQmFy KgorICAgICAgICAgICAgICAgICBpdGVtLndpZGdldEl0ZW0gPSBuZXcgUVdpZGdldEl0ZW1WMih0 b29sQmFyKTsKKyAgICAgICAgICAgICAgICAgdG9vbEJhci0+c2V0T3JpZW50YXRpb24oZmxvYXRp bmcgPyAoKHNob3duICYgMikgPyBRdDo6VmVydGljYWwgOiBRdDo6SG9yaXpvbnRhbCkgOiBkb2Nr Lm8pOworICAgICAgICAgICAgICAgICB0b29sQmFyLT5zZXRWaXNpYmxlKHNob3duICYgMSk7Cist ICAgICAgICAgICAgICAgIHRvb2xCYXItPmRfZnVuYygpLT5zZXRXaW5kb3dTdGF0ZShmbG9hdGlu ZywgdHJ1ZSwgcmVjdCk7CisrICAgICAgICAgICAgICAgIHRvb2xCYXItPmRfZnVuYygpLT5zZXRX aW5kb3dTdGF0ZShmbG9hdGluZywgZmFsc2UsIHJlY3QpOworIAorICAgICAgICAgICAgICAgICBp dGVtLnByZWZlcnJlZFNpemUgPSBpdGVtLnNpemU7CisgICAgICAgICAgICAgICAgIGxpbmUudG9v bEJhckl0ZW1zLmFwcGVuZChpdGVtKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9j b25jdXJyZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3VycmVudGl0ZXJh dGVrZXJuZWwuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnRp dGVyYXRla2VybmVsL3RzdF9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsLmNwcAoraW5kZXggMjEy YzBhMmUxMy4uM2M3N2IxYmEwYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1 cnJlbnQvcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtl cm5lbC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50 aXRlcmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC5jcHAKK0BAIC0xMjYs OCArMTI2LDcgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJu ZWw6Omluc3RhbnRpYXRlKCkKKyB7CistICAgIGF1dG8gZnV0dXJlID0gc3RhcnRUaHJlYWRFbmdp bmUobmV3IFByaW50Rm9yKDAsIDQwKSkuc3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICBmdXR1 cmUud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBQcmludEZv cigwLCA0MCkpLnN0YXJ0QmxvY2tpbmcoKTsKKyAgICAgUUNPTVBBUkUoaXRlcmF0aW9ucy5sb2Fk UmVsYXhlZCgpLCA0MCk7CisgfQorIAorQEAgLTE2NiwxMCArMTY1LDggQEAgdm9pZCB0c3RfUXRD b25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6c3RyZXNzdGVzdCgpCisgICAgIGNvbnN0IGludCB0aW1l cyA9IDUwOworICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbWVzOyArK2kpIHsKKyAgICAgICAg IGNvdW50ZXIuc3RvcmVSZWxheGVkKDApOworLSAgICAgICAgLy8gVGhyZWFkRW5naW5lIHdpbGwg ZGVsZXRlIGYgd2hlbiBpdCBmaW5pc2hlcworLSAgICAgICAgYXV0byBmID0gbmV3IENvdW50Rm9y KDAsIGl0ZXJhdGlvbnMpOworLSAgICAgICAgYXV0byBmdXR1cmUgPSBmLT5zdGFydEFzeW5jaHJv bm91c2x5KCk7CistICAgICAgICBmdXR1cmUud2FpdEZvckZpbmlzaGVkKCk7CisrICAgICAgICBD b3VudEZvciBmKDAsIGl0ZXJhdGlvbnMpOworKyAgICAgICAgZi5zdGFydEJsb2NraW5nKCk7Cisg ICAgICAgICBRQ09NUEFSRShjb3VudGVyLmxvYWRSZWxheGVkKCksIGl0ZXJhdGlvbnMpOworICAg ICB9CisgfQorQEAgLTE3NywxMSArMTc0LDggQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0 ZUtlcm5lbDo6c3RyZXNzdGVzdCgpCisgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtlcm5l bDo6bm9JdGVyYXRpb25zKCkKKyB7CisgICAgIGNvbnN0IGludCB0aW1lcyA9IDIwMDAwOworLSAg ICBmb3IgKGludCBpID0gMDsgaSA8IHRpbWVzOyArK2kpIHsKKy0gICAgICAgIGF1dG8gZnV0dXJl ID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IEl0ZXJhdGVLZXJuZWw8VGVzdEl0ZXJhdG9yLCB2b2lk PigwLCAwKSkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RhcnRBc3luY2hyb25v dXNseSgpOworLSAgICAgICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgpOworLSAgICB9CisrICAg IGZvciAoaW50IGkgPSAwOyBpIDwgdGltZXM7ICsraSkKKysgICAgICAgIHN0YXJ0VGhyZWFkRW5n aW5lKG5ldyBJdGVyYXRlS2VybmVsPFRlc3RJdGVyYXRvciwgdm9pZD4oMCwgMCkpLnN0YXJ0Qmxv Y2tpbmcoKTsKKyB9CisgCisgUU11dGV4IHRocmVhZHNNdXRleDsKK0BAIC0yMzYsMTAgKzIzMCw4 IEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6OnRocm90dGxpbmcoKQorIAor ICAgICB0aHJlYWRzLmNsZWFyKCk7CisgCistICAgIC8vIFRocmVhZEVuZ2luZSB3aWxsIGRlbGV0 ZSBmIHdoZW4gaXQgZmluaXNoZXMKKy0gICAgYXV0byBmID0gbmV3IFRocm90dGxlRm9yKDAsIHRv dGFsSXRlcmF0aW9ucyk7CistICAgIGF1dG8gZnV0dXJlID0gZi0+c3RhcnRBc3luY2hyb25vdXNs eSgpOworLSAgICBmdXR1cmUud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIFRocm90dGxlRm9yIGYo MCwgdG90YWxJdGVyYXRpb25zKTsKKysgICAgZi5zdGFydEJsb2NraW5nKCk7CisgCisgICAgIFFD T01QQVJFKGl0ZXJhdGlvbnMubG9hZFJlbGF4ZWQoKSwgdG90YWxJdGVyYXRpb25zKTsKKyAKK2Rp ZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVh ZGVuZ2luZS90c3RfcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcCBiL3F0YmFzZS90ZXN0cy9h dXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNvbmN1cnJlbnR0 aHJlYWRlbmdpbmUuY3BwCitpbmRleCBhYzdiZTdhY2RkLi44MWJjNjRjOGQ5IDEwMDY0NAorLS0t IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUv dHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRv L2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNvbmN1cnJlbnR0aHJl YWRlbmdpbmUuY3BwCitAQCAtNjUsOSArNjUsMTYgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0 Q29uY3VycmVudFRocmVhZEVuZ2luZTo6cnVuRGlyZWN0bHkoKQorIHsKKy0gICAgUHJpbnRVc2Vy ICplbmdpbmUgPSBuZXcgUHJpbnRVc2VyKCk7CistICAgIFFGdXR1cmU8dm9pZD4gZiA9IGVuZ2lu ZS0+c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICBmLndhaXRGb3JGaW5pc2hlZCgpOworKyAg ICB7CisrICAgICAgICBQcmludFVzZXIgZW5naW5lOworKyAgICAgICAgZW5naW5lLnN0YXJ0U2lu Z2xlVGhyZWFkZWQoKTsKKysgICAgICAgIGVuZ2luZS5zdGFydEJsb2NraW5nKCk7CisrICAgIH0K KysgICAgeworKyAgICAgICAgUHJpbnRVc2VyICplbmdpbmUgPSBuZXcgUHJpbnRVc2VyKCk7Cisr ICAgICAgICBRRnV0dXJlPHZvaWQ+IGYgPSBlbmdpbmUtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsK KysgICAgICAgIGYud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIH0KKyB9CisgCisgY2xhc3MgU3Ry aW5nUmVzdWx0VXNlciA6IHB1YmxpYyBUaHJlYWRFbmdpbmU8UVN0cmluZz4KK0BAIC05OSwxMCAr MTA2LDggQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6 cmVzdWx0KCkKKyB7CistICAgIC8vIFRocmVhZEVuZ2luZSB3aWxsIGRlbGV0ZSAnZW5naW5lJyB3 aGVuIGl0IGZpbmlzaGVzCistICAgIGF1dG8gZW5naW5lID0gbmV3IFN0cmluZ1Jlc3VsdFVzZXIo KTsKKy0gICAgYXV0byBmdXR1cmUgPSBlbmdpbmUtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0g ICAgUUNPTVBBUkUoZnV0dXJlLnJlc3VsdCgpLCBRU3RyaW5nKCJGb28iKSk7CisrICAgIFN0cmlu Z1Jlc3VsdFVzZXIgZW5naW5lOworKyAgICBRQ09NUEFSRSgqZW5naW5lLnN0YXJ0QmxvY2tpbmco KSwgUVN0cmluZygiRm9vIikpOworIH0KKyAKKyBjbGFzcyBWb2lkUmVzdWx0VXNlciA6IHB1Ymxp YyBUaHJlYWRFbmdpbmU8dm9pZD4KK0BAIC0xMjgsOSArMTMzLDE3IEBAIHB1YmxpYzoKKyAKKyB2 b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnJ1blRocm91Z2hTdGFydGVyKCkKKyB7 CistICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXI8UVN0cmluZz4gc3RhcnRlciA9IHN0YXJ0VGhyZWFk RW5naW5lKG5ldyBTdHJpbmdSZXN1bHRVc2VyKCkpOworLSAgICBRRnV0dXJlPFFTdHJpbmc+IGYg PSBzdGFydGVyLnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgUUNPTVBBUkUoZi5yZXN1bHQo KSwgUVN0cmluZygiRm9vIikpOworKyAgICB7CisrICAgICAgICBUaHJlYWRFbmdpbmVTdGFydGVy PFFTdHJpbmc+IHN0YXJ0ZXIgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgU3RyaW5nUmVzdWx0VXNl cigpKTsKKysgICAgICAgIFFGdXR1cmU8UVN0cmluZz4gIGYgPSBzdGFydGVyLnN0YXJ0QXN5bmNo cm9ub3VzbHkoKTsKKysgICAgICAgIFFDT01QQVJFKGYucmVzdWx0KCksIFFTdHJpbmcoIkZvbyIp KTsKKysgICAgfQorKworKyAgICB7CisrICAgICAgICBUaHJlYWRFbmdpbmVTdGFydGVyPFFTdHJp bmc+IHN0YXJ0ZXIgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgU3RyaW5nUmVzdWx0VXNlcigpKTsK KysgICAgICAgIFFTdHJpbmcgc3RyID0gc3RhcnRlci5zdGFydEJsb2NraW5nKCk7CisrICAgICAg ICBRQ09NUEFSRShzdHIsIFFTdHJpbmcoIkZvbyIpKTsKKysgICAgfQorIH0KKyAKKyBjbGFzcyBD YW5jZWxVc2VyIDogcHVibGljIFRocmVhZEVuZ2luZTx2b2lkPgorQEAgLTIxMyw2ICsyMjYsMTIg QEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjp0aHJvdHRsZSgpCisgICAgICAg ICBmLndhaXRGb3JGaW5pc2hlZCgpOworICAgICAgICAgUUNPTVBBUkUoY291bnQubG9hZFJlbGF4 ZWQoKSwgMCk7CisgICAgIH0KKysKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXRzOyAr K2kpIHsKKysgICAgICAgIFRocm90dGxlQWx3YXlzVXNlciB0OworKyAgICAgICAgdC5zdGFydEJs b2NraW5nKCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudC5sb2FkUmVsYXhlZCgpLCAwKTsKKysg ICAgfQorIH0KKyAKKyBRU2V0PFFUaHJlYWQgKj4gdGhyZWFkczsKK0BAIC0yNDksMTcgKzI2OCwz NSBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnRocmVhZENvdW50KCkKKyB7 CisgICAgIGNvbnN0IGludCByZXBlYXRzID0gMTA7CisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg cmVwZWF0czsgKytpKSB7CisrICAgICAgICBUaHJlYWRDb3VudFVzZXIgdDsKKysgICAgICAgIHQu c3RhcnRCbG9ja2luZygpOworKyAgICAgICAgaW50IGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOwor KyAgICAgICAgaW50IGNvdW50X2V4cGVjdGVkID0gUVRocmVhZFBvb2w6Omdsb2JhbEluc3RhbmNl KCktPm1heFRocmVhZENvdW50KCkgKyAxOyAvLyArMSBmb3IgdGhlIG1haW4gdGhyZWFkLgorKyAg ICAgICAgaWYgKGNvdW50ICE9IGNvdW50X2V4cGVjdGVkKQorKyAgICAgICAgICAgIFFFWFBFQ1Rf RkFJTCgiIiwgIlFUQlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQs IGNvdW50X2V4cGVjdGVkKTsKKysKKyAgICAgICAgIChuZXcgVGhyZWFkQ291bnRVc2VyKCkpLT5z dGFydEFzeW5jaHJvbm91c2x5KCkud2FpdEZvckZpbmlzaGVkKCk7CistICAgICAgICBjb25zdCBh dXRvIGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworLSAgICAgICAgY29uc3QgYXV0byBtYXhUaHJl YWRDb3VudCA9IFFUaHJlYWRQb29sOjpnbG9iYWxJbnN0YW5jZSgpLT5tYXhUaHJlYWRDb3VudCgp OworLSAgICAgICAgUVZFUklGWShjb3VudCA8PSBtYXhUaHJlYWRDb3VudCk7CistICAgICAgICBR VkVSSUZZKCF0aHJlYWRzLmNvbnRhaW5zKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSkpOworKyAg ICAgICAgY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBjb3VudF9leHBlY3RlZCA9 IFFUaHJlYWRQb29sOjpnbG9iYWxJbnN0YW5jZSgpLT5tYXhUaHJlYWRDb3VudCgpOworKyAgICAg ICAgaWYgKGNvdW50ICE9IGNvdW50X2V4cGVjdGVkKQorKyAgICAgICAgICAgIFFFWFBFQ1RfRkFJ TCgiIiwgIlFUQlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQsIGNv dW50X2V4cGVjdGVkKTsKKyAgICAgfQorIAorICAgICAvLyBTZXQgdGhlIGZpbmlzaCBmbGFnIGlt bWVkaWF0ZWx5LCB0aGlzIHNob3VsZCBnaXZlIHVzIG9uZSB0aHJlYWQgb25seS4KKyAgICAgZm9y IChpbnQgaSA9IDA7IGkgPCByZXBlYXRzOyArK2kpIHsKKysgICAgICAgIFRocmVhZENvdW50VXNl ciB0KHRydWUgLypmaW5pc2hJbW1lZGlhdGVseSovKTsKKysgICAgICAgIHQuc3RhcnRCbG9ja2lu ZygpOworKyAgICAgICAgaW50IGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgaWYg KGNvdW50ICE9IDEpCisrICAgICAgICAgICAgUUVYUEVDVF9GQUlMKCIiLCAiUVRCVUctMjMzMzMi LCBBYm9ydCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudCwgMSk7CisrCisgICAgICAgICAobmV3 IFRocmVhZENvdW50VXNlcih0cnVlIC8qZmluaXNoSW1tZWRpYXRlbHkqLykpLT5zdGFydEFzeW5j aHJvbm91c2x5KCkud2FpdEZvckZpbmlzaGVkKCk7CistICAgICAgICBjb25zdCBhdXRvIGNvdW50 ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgY291bnQgPSB0aHJlYWRzLmNvdW50KCk7Cisr ICAgICAgICBpZiAoY291bnQgIT0gMSkKKysgICAgICAgICAgICBRRVhQRUNUX0ZBSUwoIiIsICJR VEJVRy0yMzMzMyIsIEFib3J0KTsKKyAgICAgICAgIFFDT01QQVJFKGNvdW50LCAxKTsKKyAgICAg ICAgIFFWRVJJRlkoIXRocmVhZHMuY29udGFpbnMoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpKSk7 CisgICAgIH0KK0BAIC00MDAsNiArNDM3LDcgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29u Y3VycmVudFRocmVhZEVuZ2luZTo6ZXhjZXB0aW9ucygpCisgeworKyAgICAvLyBBc3luY2hyb25v dXMgbW9kZToKKyAgICAgeworICAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKyAgICAgICAg IHRyeSAgeworQEAgLTQxMiw2ICs0NTAsMzIgQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFk RW5naW5lOjpleGNlcHRpb25zKCkKKyAgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3Qg Z2V0IGV4Y2VwdGlvbiIpOworICAgICB9CisgCisrICAgIC8vIEJsb2NraW5nIG1vZGU6CisrICAg IC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIGEgd29ya2VyIHRocmVhZC4KKysg ICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAgeworKyAg ICAgICAgICAgIFF0Q29uY3VycmVudEV4Y2VwdGlvblRocm93ZXIgZShRVGhyZWFkOjpjdXJyZW50 VGhyZWFkKCkpOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgfSBj YXRjaCAoY29uc3QgUUV4Y2VwdGlvbiAmKSB7CisrICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsK KysgICAgICAgIH0KKysgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2Vw dGlvbiIpOworKyAgICB9CisrCisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBm cm9tIHRoZSBtYWluIHRocmVhZCAoZGlmZmVyZW50IGNvZGUgcGF0aCkKKysgICAgeworKyAgICAg ICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAgeworKyAgICAgICAgICAgIFF0 Q29uY3VycmVudEV4Y2VwdGlvblRocm93ZXIgZSgwKTsKKysgICAgICAgICAgICBlLnN0YXJ0Qmxv Y2tpbmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFFeGNlcHRpb24gJikgeworKyAgICAg ICAgICAgIGNhdWdodCA9IHRydWU7CisrICAgICAgICB9CisrICAgICAgICBRVkVSSUZZMihjYXVn aHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKysgICAgfQorKworKyAgICAvLyBBc3luY2hy b25vdXMgbW9kZToKKyAgICAgeworICAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKyAgICAg ICAgIHRyeSAgeworQEAgLTQyMyw2ICs0ODcsMzEgQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhy ZWFkRW5naW5lOjpleGNlcHRpb25zKCkKKyAgICAgICAgIH0KKyAgICAgICAgIFFWRVJJRlkyKGNh dWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworICAgICB9CisrCisrICAgIC8vIEJsb2Nr aW5nIG1vZGU6CisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIGEgd29y a2VyIHRocmVhZC4KKysgICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAg ICAgIHRyeSAgeworKyAgICAgICAgICAgIFVucmVsYXRlZEV4Y2VwdGlvblRocm93ZXIgZShRVGhy ZWFkOjpjdXJyZW50VGhyZWFkKCkpOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9ja2luZygpOwor KyAgICAgICAgfSBjYXRjaCAoY29uc3QgUVVuaGFuZGxlZEV4Y2VwdGlvbiAmKSB7CisrICAgICAg ICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIFFWRVJJRlkyKGNhdWdo dCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworKyAgICB9CisrCisrICAgIC8vIHRlc3QgdGhy b3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZSBtYWluIHRocmVhZCAoZGlmZmVyZW50IGNvZGUg cGF0aCkKKysgICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRy eSAgeworKyAgICAgICAgICAgIFVucmVsYXRlZEV4Y2VwdGlvblRocm93ZXIgZSgwKTsKKysgICAg ICAgICAgICBlLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFVbmhh bmRsZWRFeGNlcHRpb24gJikgeworKyAgICAgICAgICAgIGNhdWdodCA9IHRydWU7CisrICAgICAg ICB9CisrICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsK KysgICAgfQorIH0KKyAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9j b3JlbGliL2lvL3FidWZmZXIvdHN0X3FidWZmZXIuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29y ZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcAoraW5kZXggNDk2ODc0MjExMC4uZjRjM2Zi NzExZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZlci90 c3RfcWJ1ZmZlci5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZl ci90c3RfcWJ1ZmZlci5jcHAKK0BAIC00Miw2ICs0Miw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAg IHZvaWQgd3JpdGVCbG9ja19kYXRhKCk7CisgICAgIHZvaWQgd3JpdGVCbG9jaygpOworICAgICB2 b2lkIHNlZWsoKTsKKysgICAgdm9pZCBpbnZhbGlkU2Vla3MoKTsKKyAgICAgdm9pZCBzZWVrVGVz dF9kYXRhKCk7CisgICAgIHZvaWQgc2Vla1Rlc3QoKTsKKyAgICAgdm9pZCByZWFkX3Jhd2RhdGEo KTsKK0BAIC0yODYsNiArMjg3LDI5IEBAIHZvaWQgdHN0X1FCdWZmZXI6OnNlZWsoKQorICAgICBR Q09NUEFSRShidWZmZXIuc2l6ZSgpLCBwb3MpOworIH0KKyAKKyt2b2lkIHRzdF9RQnVmZmVyOjpp bnZhbGlkU2Vla3MoKQorK3sKKysgICAgaWYgY29uc3RleHByIChzaXplb2YocXNpemV0eXBlKSA9 PSBzaXplb2YocWludDY0KSkgeworKyAgICAgICAgLy8gc2l6ZW9mKHFzaXpldHlwZSkgPT0gc2l6 ZW9mKHFpbnQ2NCksIHNvICsxIHdvdWxkIG92ZXJmbG93CisrICAgICAgICBRU0tJUCgiVGhpcyBp cyBhIDMyLWJpdC1vbmx5IHRlc3QuIik7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBRQnVmZmVy IGJ1ZmZlcjsKKysgICAgICAgIGJ1ZmZlci5vcGVuKFFJT0RldmljZTo6V3JpdGVPbmx5KTsKKysg ICAgICAgIFFDT01QQVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCksIHFzaXpldHlwZSgwKSk7Cisr ICAgICAgICBRQ09NUEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgwKSk7CisrICAgICAgICBjb25z dGV4cHIgcWludDY0IE1heFFCeXRlQXJyYXlDYXBhY2l0eSA9IChzdGQ6Om51bWVyaWNfbGltaXRz PHFzaXpldHlwZT46Om1heCkoKTsKKysgICAgICAgIC8vIHRoaXMgc2hvdWxkIGZhaWwgZmFzdCwg bm90IGFmdGVyIHRyeWluZyB0byBhbGxvY2F0ZSBuZWFybHkgMiBHaUIgb2YgZGF0YSwKKysgICAg ICAgIC8vIHBvdGVudGlhbGx5IGNyYXNoaW5nIGluIHRoZSBwcm9jZXNzOgorKyAgICAgICAgUVZF UklGWSghYnVmZmVyLnNlZWsoMiAqIE1heFFCeXRlQXJyYXlDYXBhY2l0eSAtIDEpKTsKKysgICAg ICAgIFFDT01QQVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCksIHFzaXpldHlwZSgwKSk7CisrICAg ICAgICBRQ09NUEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgwKSk7CisrICAgICAgICAvLyBkaXR0 bzoKKysgICAgICAgIFFWRVJJRlkoIWJ1ZmZlci5zZWVrKE1heFFCeXRlQXJyYXlDYXBhY2l0eSAr IDEpKTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCksIHFzaXpldHlw ZSgwKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgwKSk7CisrICAg IH0KKyt9CisrCisgdm9pZCB0c3RfUUJ1ZmZlcjo6c2Vla1Rlc3RfZGF0YSgpCisgeworICAgICB3 cml0ZUJsb2NrX2RhdGEoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGli L2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVs aWIvaW8vcWlvZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwCitpbmRleCBkYTUzMjc1OTRjLi40YTA0 ZTBmN2M2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xaW9kZXZp Y2UvdHN0X3Fpb2RldmljZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8v cWlvZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwCitAQCAtNTYxLDcgKzU2MSw4IEBAIHByb3RlY3Rl ZDoKKyAgICAgcWludDY0IHJlYWREYXRhKGNoYXIgKmRhdGEsIHFpbnQ2NCBtYXhTaXplKSBvdmVy cmlkZQorICAgICB7CisgICAgICAgICBtYXhTaXplID0gcU1pbihtYXhTaXplLCBxaW50NjQoYnVm LT5zaXplKCkgLSBvZmZzZXQpKTsKKy0gICAgICAgIG1lbWNweShkYXRhLCBidWYtPmNvbnN0RGF0 YSgpICsgb2Zmc2V0LCBtYXhTaXplKTsKKysgICAgICAgIGlmIChtYXhTaXplID4gMCkKKysgICAg ICAgICAgICBtZW1jcHkoZGF0YSwgYnVmLT5jb25zdERhdGEoKSArIG9mZnNldCwgbWF4U2l6ZSk7 CisgICAgICAgICBvZmZzZXQgKz0gbWF4U2l6ZTsKKyAgICAgICAgIHJldHVybiBtYXhTaXplOwor ICAgICB9CitAQCAtNjA0LDEzICs2MDUsMTUgQEAgcHJvdGVjdGVkOgorICAgICBxaW50NjQgcmVh ZERhdGEoY2hhciAqZGF0YSwgcWludDY0IG1heFNpemUpIG92ZXJyaWRlCisgICAgIHsKKyAgICAg ICAgIG1heFNpemUgPSBxTWluKG1heFNpemUsIHFpbnQ2NChidWYuc2l6ZSgpIC0gcG9zKCkpKTsK Ky0gICAgICAgIG1lbWNweShkYXRhLCBidWYuY29uc3REYXRhKCkgKyBwb3MoKSwgbWF4U2l6ZSk7 CisrICAgICAgICBpZiAobWF4U2l6ZSA+IDApCisrICAgICAgICAgICAgbWVtY3B5KGRhdGEsIGJ1 Zi5jb25zdERhdGEoKSArIHBvcygpLCBtYXhTaXplKTsKKyAgICAgICAgIHJldHVybiBtYXhTaXpl OworICAgICB9CisgICAgIHFpbnQ2NCB3cml0ZURhdGEoY29uc3QgY2hhciAqZGF0YSwgcWludDY0 IG1heFNpemUpIG92ZXJyaWRlCisgICAgIHsKKyAgICAgICAgIG1heFNpemUgPSBxTWluKG1heFNp emUsIHFpbnQ2NChidWYuc2l6ZSgpIC0gcG9zKCkpKTsKKy0gICAgICAgIG1lbWNweShidWYuZGF0 YSgpICsgcG9zKCksIGRhdGEsIG1heFNpemUpOworKyAgICAgICAgaWYgKG1heFNpemUgPiAwKQor KyAgICAgICAgICAgIG1lbWNweShidWYuZGF0YSgpICsgcG9zKCksIGRhdGEsIG1heFNpemUpOwor ICAgICAgICAgcmV0dXJuIG1heFNpemU7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uv dGVzdHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAgYi9xdGJhc2Uv dGVzdHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAKK2luZGV4IGRi NjBiZWFkNjQuLmYzNDVhNDQ0MTQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3Jl bGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRv L2NvcmVsaWIvaW8vcXByb2Nlc3MvdHN0X3Fwcm9jZXNzLmNwcAorQEAgLTEsNyArMSw4IEBACisg LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqKgorICoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQg Q29tcGFueSBMdGQuCistKiogQ29weXJpZ2h0IChDKSAyMDIwIEludGVsIENvcnBvcmF0aW9uLgor KyoqIENvcHlyaWdodCAoQykgMjAyMCBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29weXJpZ2h0 IChDKSAyMDIyIEludGVsIENvcnBvcmF0aW9uLgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0 LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0ZXN0IHN1 aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTE1MCw2ICsxNTEsOCBAQCBwcml2YXRlIHNsb3Rz OgorICAgICB2b2lkIHN0YXJ0U3RvcFN0YXJ0U3RvcEJ1ZmZlcnMoKTsKKyAgICAgdm9pZCBwcm9j ZXNzRXZlbnRzSW5BUmVhZHlSZWFkU2xvdF9kYXRhKCk7CisgICAgIHZvaWQgcHJvY2Vzc0V2ZW50 c0luQVJlYWR5UmVhZFNsb3QoKTsKKysgICAgdm9pZCBzdGFydEZyb21DdXJyZW50V29ya2luZ0Rp cl9kYXRhKCk7CisrICAgIHZvaWQgc3RhcnRGcm9tQ3VycmVudFdvcmtpbmdEaXIoKTsKKyAKKyAg ICAgLy8ga2VlcCB0aGVzZSBhdCB0aGUgZW5kLCBzaW5jZSB0aGV5IHVzZSBsb3RzIG9mIHByb2Nl c3NlcyBhbmQgc29tZXRpbWVzCisgICAgIC8vIGNhdXNlZCBvYnNjdXJlIGZhaWx1cmVzIHRvIG9j Y3VyIGluIHRlc3RzIHRoYXQgZm9sbG93ZWQgdGhlbSAoZXNwLiBvbiB0aGUgTWFjKQorQEAgLTI3 MzEsNSArMjczNCw5NCBAQCB2b2lkIHRzdF9RUHJvY2Vzczo6ZmluaXNoUHJvY2Vzc0JlZm9yZVJl YWRpbmdEb25lX2RlcHJlY2F0ZWQoKQorIAorICNlbmRpZgorIAorK2VudW0gY2xhc3MgQ2hkaXJN b2RlIHsKKysgICAgTm9uZSA9IDAsCisrICAgIEluUGFyZW50LAorKyAgICBJbkNoaWxkCisrfTsK KytRX0RFQ0xBUkVfTUVUQVRZUEUoQ2hkaXJNb2RlKQorKworK3ZvaWQgdHN0X1FQcm9jZXNzOjpz dGFydEZyb21DdXJyZW50V29ya2luZ0Rpcl9kYXRhKCkKKyt7CisrICAgIHFSZWdpc3Rlck1ldGFU eXBlPENoZGlyTW9kZT4oKTsKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxRU3RyaW5nPigicHJvZ3Jh bVByZWZpeCIpOworKyAgICBRVGVzdDo6YWRkQ29sdW1uPENoZGlyTW9kZT4oImNoZGlyTW9kZSIp OworKyAgICBRVGVzdDo6YWRkQ29sdW1uPGJvb2w+KCJzdWNjZXNzIik7CisrCisrICAgIGNvbnN0 ZXhwciBib29sIElzV2luZG93cyA9IHRydWUKKysjaWZkZWYgUV9PU19VTklYCisrICAgICAgICAg ICAgJiYgZmFsc2UKKysjZW5kaWYKKysgICAgICAgICAgICA7CisrCisrICAgIC8vIGJhc2VsaW5l OiB0cnlpbmcgdG8gZXhlY3V0ZSB0aGUgZGlyZWN0b3J5LCB0aGlzIGNhbid0IHBvc3NpYmx5IHN1 Y2NlZWQhCisrICAgIFFUZXN0OjpuZXdSb3coInBsYWluLXNhbWUtY3dkIikgPDwgUVN0cmluZygp IDw8IENoZGlyTW9kZTo6Tm9uZSA8PCBmYWxzZTsKKysKKysgICAgLy8gY3Jvc3MtcGxhdGZvcm0g YmVoYXZpb3I6IG5laXRoZXIgT1Mgc2VhcmNoZXMgdGhlIHNldFdvcmtpbmdEaXJlY3RvcnkoKQor KyAgICAvLyBkaXIgd2l0aG91dCAiLi8iCisrICAgIFFUZXN0OjpuZXdSb3coInBsYWluLWNoaWxk LWNoZGlyIikgPDwgUVN0cmluZygpIDw8IENoZGlyTW9kZTo6SW5DaGlsZCA8PCBmYWxzZTsKKysK KysgICAgLy8gY3Jvc3MtcGxhdGZvcm0gYmVoYXZpb3I6IGJvdGggT1NlcyBzZWFyY2ggdGhlIHBh cmVudCdzIENXRCB3aXRoICIuLyIKKysgICAgUVRlc3Q6Om5ld1JvdygicHJlZml4ZWQtcGFyZW50 LWNoZGlyIikgPDwgIi4vIiA8PCBDaGRpck1vZGU6OkluUGFyZW50IDw8IHRydWU7CisrCisrICAg IC8vIG9wcG9zaXRlIGJlaGF2aW9yczogV2luZG93cyBzZWFyY2hlcyB0aGUgcGFyZW50J3MgQ1dE IGFuZCBVbml4IHNlYXJjaGVzCisrICAgIC8vIHRoZSBjaGlsZCdzIHdpdGggIi4vIgorKyAgICBR VGVzdDo6bmV3Um93KCJwcmVmaXhlZC1jaGlsZC1jaGRpciIpIDw8ICIuLyIgPDwgQ2hkaXJNb2Rl OjpJbkNoaWxkIDw8ICFJc1dpbmRvd3M7CisrCisrICAgIC8vIFdpbmRvd3Mgc2VhcmNoZXMgdGhl IHBhcmVudCdzIENXRCB3aXRob3V0ICIuLyIKKysgICAgUVRlc3Q6Om5ld1JvdygicGxhaW4tcGFy ZW50LWNoZGlyIikgPDwgUVN0cmluZygpIDw8IENoZGlyTW9kZTo6SW5QYXJlbnQgPDwgSXNXaW5k b3dzOworK30KKysKKyt2b2lkIHRzdF9RUHJvY2Vzczo6c3RhcnRGcm9tQ3VycmVudFdvcmtpbmdE aXIoKQorK3sKKysgICAgUUZFVENIKFFTdHJpbmcsIHByb2dyYW1QcmVmaXgpOworKyAgICBRRkVU Q0goQ2hkaXJNb2RlLCBjaGRpck1vZGUpOworKyAgICBRRkVUQ0goYm9vbCwgc3VjY2Vzcyk7Cisr CisrICAgIFFQcm9jZXNzIHByb2Nlc3M7CisrICAgIHFSZWdpc3Rlck1ldGFUeXBlPFFQcm9jZXNz OjpQcm9jZXNzRXJyb3I+KCk7CisrICAgIFFTaWduYWxTcHkgZXJyb3JTcHkoJnByb2Nlc3MsICZR UHJvY2Vzczo6ZXJyb3JPY2N1cnJlZCk7CisrICAgIFFWRVJJRlkoZXJyb3JTcHkuaXNWYWxpZCgp KTsKKysKKysgICAgLy8gYm90aCB0aGUgZGlyIG5hbWUgYW5kIHRoZSBleGVjdXRhYmxlIG5hbWUK KysgICAgY29uc3QgUVN0cmluZyB0YXJnZXQgPSBRU3RyaW5nTGl0ZXJhbCgidGVzdFByb2Nlc3NO b3JtYWwiKTsKKysgICAgcHJvY2Vzcy5zZXRQcm9ncmFtKHByb2dyYW1QcmVmaXggKyB0YXJnZXQp OworKworKyNpZmRlZiBRX09TX1VOSVgKKysgICAgLy8gUmVzZXQgUEFUSCwgdG8gYmUgc3VyZSBp dCBkb2Vzbid0IGNvbnRhaW4gLiBvciB0aGUgZW1wdHkgcGF0aC4KKysgICAgLy8gV2UgY2FuJ3Qg ZG8gdGhpcyBvbiBXaW5kb3dzIGJlY2F1c2UgRExMcyBhcmUgc2VhcmNoZWQgaW4gUEFUSAorKyAg ICAvLyBhbmQgV2luZG93cyBhbHdheXMgc2VhcmNoZXMgIi4iIGFueXdheS4KKysgICAgYXV0byBy ZXN0b3JlRW52ID0gcVNjb3BlR3VhcmQoW29sZCA9IHFnZXRlbnYoIlBBVEgiKV0geworKyAgICAg ICAgcXB1dGVudigiUEFUSCIsIG9sZCk7CisrICAgIH0pOworKyAgICBxcHV0ZW52KCJQQVRIIiwg Ii8iKTsKKysjZW5kaWYKKysKKysgICAgc3dpdGNoIChjaGRpck1vZGUpIHsKKysgICAgY2FzZSBD aGRpck1vZGU6OkluUGFyZW50OiB7CisrICAgICAgICBhdXRvIHJlc3RvcmVDd2QgPSBxU2NvcGVH dWFyZChbb2xkID0gUURpcjo6Y3VycmVudFBhdGgoKV0geworKyAgICAgICAgICAgIFFEaXI6OnNl dEN1cnJlbnQob2xkKTsKKysgICAgICAgIH0pOworKyAgICAgICAgUVZFUklGWShRRGlyOjpzZXRD dXJyZW50KHRhcmdldCkpOworKyAgICAgICAgcHJvY2Vzcy5zdGFydCgpOworKyAgICAgICAgYnJl YWs7CisrICAgIH0KKysgICAgY2FzZSBDaGRpck1vZGU6OkluQ2hpbGQ6CisrICAgICAgICBwcm9j ZXNzLnNldFdvcmtpbmdEaXJlY3RvcnkodGFyZ2V0KTsKKysgICAgICAgIFFfRkFMTFRIUk9VR0go KTsKKysgICAgY2FzZSBDaGRpck1vZGU6Ok5vbmU6CisrICAgICAgICBwcm9jZXNzLnN0YXJ0KCk7 CisrICAgICAgICBicmVhazsKKysgICAgfQorKworKyAgICBRQ09NUEFSRShwcm9jZXNzLndhaXRG b3JTdGFydGVkKCksIHN1Y2Nlc3MpOworKyAgICBRQ09NUEFSRShlcnJvclNweS5jb3VudCgpLCBp bnQoIXN1Y2Nlc3MpKTsKKysgICAgaWYgKHN1Y2Nlc3MpIHsKKysgICAgICAgIFFWRVJJRlkocHJv Y2Vzcy53YWl0Rm9yRmluaXNoZWQoKSk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBRQ09NUEFS RShwcm9jZXNzLmVycm9yKCksIFFQcm9jZXNzOjpGYWlsZWRUb1N0YXJ0KTsKKysgICAgfQorK30K KysKKyBRVEVTVF9NQUlOKHRzdF9RUHJvY2VzcykKKyAjaW5jbHVkZSAidHN0X3Fwcm9jZXNzLm1v YyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNv bmNhdGVuYXRldGFibGVzcHJveHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2Rl bC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRl dGFibGVzcHJveHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5jcHAKK2lu ZGV4IGUxZWE3YTQ1NTIuLjkwOTcyY2FhNTcgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC90c3RfcWNv bmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2Nv cmVsaWIvaXRlbW1vZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsL3RzdF9xY29uY2F0 ZW5hdGV0YWJsZXNwcm94eW1vZGVsLmNwcAorQEAgLTExNyw2ICsxMTcsNyBAQCBwcml2YXRlIFFf U0xPVFM6CisgICAgIHZvaWQgc2hvdWxkUHJvcGFnYXRlRHJvcEFmdGVyTGFzdFJvd19kYXRhKCk7 CisgICAgIHZvaWQgc2hvdWxkUHJvcGFnYXRlRHJvcEFmdGVyTGFzdFJvdygpOworICAgICB2b2lk IHF0YnVnOTE3ODgoKTsKKysgICAgdm9pZCBxdGJ1ZzkxODc4KCk7CisgCisgcHJpdmF0ZToKKyAg ICAgUVN0YW5kYXJkSXRlbU1vZGVsIG1vZDsKK0BAIC04NDMsNiArODQ0LDIyIEBAIHZvaWQgdHN0 X1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWw6OnF0YnVnOTE3ODgoKQorICAgICBRQ09NUEFS RShwcm94eUNvbmNhdC5jb2x1bW5Db3VudCgpLCAwKTsKKyB9CisgCisrdm9pZCB0c3RfUUNvbmNh dGVuYXRlVGFibGVzUHJveHlNb2RlbDo6cXRidWc5MTg3OCgpCisreworKyAgICBRU3RhbmRhcmRJ dGVtTW9kZWwgbTsKKysgICAgbS5zZXRSb3dDb3VudCg0KTsKKysgICAgbS5zZXRDb2x1bW5Db3Vu dCg0KTsKKysKKysgICAgUUNvbmNhdGVuYXRlVGFibGVzUHJveHlNb2RlbCBwbTsKKysgICAgUVNv cnRGaWx0ZXJQcm94eU1vZGVsIHByb3h5RmlsdGVyOworKyAgICBwcm94eUZpbHRlci5zZXRTb3Vy Y2VNb2RlbCgmcG0pOworKyAgICBwcm94eUZpbHRlci5zZXRGaWx0ZXJGaXhlZFN0cmluZygic29t ZXRoaW5nIik7CisrICAgIHBtLmFkZFNvdXJjZU1vZGVsKCZtKTsgIC8vIFRoaXMgc2hvdWxkIG5v dCBhc3NlcnQKKysKKysgICAgUUNPTVBBUkUocG0uY29sdW1uQ291bnQoKSwgNCk7CisrICAgIFFD T01QQVJFKHBtLnJvd0NvdW50KCksIDQpOworK30KKysKKyBRVEVTVF9HVUlMRVNTX01BSU4odHN0 X1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWwpCisgCisgI2luY2x1ZGUgInRzdF9xY29uY2F0 ZW5hdGV0YWJsZXNwcm94eW1vZGVsLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0LmNwcCBiL3F0YmFzZS90ZXN0cy9h dXRvL2NvcmVsaWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3BwCitpbmRleCA5YmQ2NmMw ODM1Li5lZDRhMGJhZTVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9r ZXJuZWwvcW9iamVjdC90c3RfcW9iamVjdC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2Nv cmVsaWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3BwCitAQCAtMTU4LDYgKzE1OCw3IEBA IHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgbnVsbFJlY2VpdmVyKCk7CisgICAgIHZvaWQgZnVu Y3RvclJlZmVyZW5jZXNDb25uZWN0aW9uKCk7CisgICAgIHZvaWQgZGlzY29ubmVjdERpc2Nvbm5l Y3RzKCk7CisrICAgIHZvaWQgZGVjbGFyYXRpdmVEYXRhKCk7CisgfTsKKyAKKyBzdHJ1Y3QgUU9i amVjdENyZWF0ZWRPblNodXRkb3duCitAQCAtNzY3OSw1ICs3NjgwLDgxIEBAIHZvaWQgdHN0X1FP YmplY3Q6OmRpc2Nvbm5lY3REaXNjb25uZWN0cygpCisgUV9TVEFUSUNfQVNTRVJUKFF0UHJpdmF0 ZTo6SGFzUV9PQkpFQ1RfTWFjcm88dHN0X1FPYmplY3Q+OjpWYWx1ZSk7CisgUV9TVEFUSUNfQVNT RVJUKCFRdFByaXZhdGU6Okhhc1FfT0JKRUNUX01hY3JvPFNpYmxpbmdEZWxldGVyPjo6VmFsdWUp OworIAorKyNpZmRlZiBRVF9CVUlMRF9JTlRFUk5BTAorKy8qCisrICAgIFNpbmNlIFFPYmplY3RQ cml2YXRlIHN0b3JlcyB0aGUgZGVjbGFyYXRpdmVEYXRhIHBvaW50ZXIgaW4gYSB1bmlvbiB3aXRo IHRoZSBwb2ludGVyCisrICAgIHRvIHRoZSBjdXJyZW50bHkgZGVzdHJveWVkIGNoaWxkLCBjYWxs cyB0byB0aGUgUXREZWNsYXJhdGl2ZSBoYW5kbGVycyBuZWVkIHRvIGJlCisrICAgIGNvcnJlY3Rs eSBndWFyZGVkLiBRVEJVRy0xMDUyODYKKysqLworK25hbWVzcGFjZSBRdERlY2xhcmF0aXZlIHsK KytzdGF0aWMgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICp0aGVEYXRhOworKworK3N0YXRpYyB2 b2lkIGRlc3Ryb3llZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKmRhdGEsIFFPYmplY3QgKikK Kyt7CisrICAgIFFDT01QQVJFKGRhdGEsIHRoZURhdGEpOworK30KKytzdGF0aWMgdm9pZCBzaWdu YWxFbWl0dGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgUU9iamVjdCAqLCBpbnQs IHZvaWQgKiopCisreworKyAgICBRQ09NUEFSRShkYXRhLCB0aGVEYXRhKTsKKyt9CisrLy8gd2Ug Y2FuJ3QgdXNlIFFDT01QQVJFIGluIHRoZSBuZXh0IHR3byBmdW5jdGlvbnMsIGFzIHRoZXkgZG9u J3QgcmV0dXJuIHZvaWQKKytzdGF0aWMgaW50IHJlY2VpdmVycyhRQWJzdHJhY3REZWNsYXJhdGl2 ZURhdGEgKmRhdGEsIGNvbnN0IFFPYmplY3QgKiwgaW50KQorK3sKKysgICAgUVRlc3Q6OnFDb21w YXJlKGRhdGEsIHRoZURhdGEsICJkYXRhIiwgInRoZURhdGEiLCBfX0ZJTEVfXywgX19MSU5FX18p OworKyAgICByZXR1cm4gMDsKKyt9Cisrc3RhdGljIGJvb2wgaXNTaWduYWxDb25uZWN0ZWQoUUFi c3RyYWN0RGVjbGFyYXRpdmVEYXRhICpkYXRhLCBjb25zdCBRT2JqZWN0ICosIGludCkKKyt7Cisr ICAgIFFUZXN0OjpxQ29tcGFyZShkYXRhLCB0aGVEYXRhLCAiZGF0YSIsICJ0aGVEYXRhIiwgX19G SUxFX18sIF9fTElORV9fKTsKKysgICAgcmV0dXJuIHRydWU7CisrfQorKworK2NsYXNzIE9iamVj dCA6IHB1YmxpYyBRT2JqZWN0CisreworKyAgICBRX09CSkVDVAorK3B1YmxpYzoKKysgICAgdXNp bmcgUU9iamVjdDo6UU9iamVjdDsKKysgICAgfk9iamVjdCgpCisrICAgIHsKKysgICAgICAgIGlm IChPYmplY3QgKnAgPSBzdGF0aWNfY2FzdDxPYmplY3QgKj4ocGFyZW50KCkpKQorKyAgICAgICAg ICAgIHAtPmVtaXRTaWduYWwoKTsKKysgICAgfQorKworKyAgICB2b2lkIGVtaXRTaWduYWwoKQor KyAgICB7CisrICAgICAgICBlbWl0IHRoZVNpZ25hbCgpOworKyAgICB9CisrCisrc2lnbmFsczoK KysgICAgdm9pZCB0aGVTaWduYWwoKTsKKyt9OworKworK30KKysjZW5kaWYKKysKKyt2b2lkIHRz dF9RT2JqZWN0OjpkZWNsYXJhdGl2ZURhdGEoKQorK3sKKysjaWZkZWYgUVRfQlVJTERfSU5URVJO QUwKKysgICAgUVNjb3BlZFZhbHVlUm9sbGJhY2sgZGVzdHJveWVkKFFBYnN0cmFjdERlY2xhcmF0 aXZlRGF0YTo6ZGVzdHJveWVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UXREZWNsYXJhdGl2ZTo6ZGVzdHJveWVkKTsKKysgICAgUVNjb3BlZFZhbHVlUm9sbGJhY2sgc2ln bmFsRW1pdHRlZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnNpZ25hbEVtaXR0ZWQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXREZWNsYXJhdGl2ZTo6c2lnbmFs RW1pdHRlZCk7CisrICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNrIHJlY2VpdmVycyhRQWJzdHJhY3RE ZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFF0RGVjbGFyYXRpdmU6OnJlY2VpdmVycyk7CisrICAgIFFTY29wZWRWYWx1ZVJvbGxi YWNrIGlzU2lnbmFsQ29ubmVjdGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6aXNTaWduYWxD b25uZWN0ZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0 RGVjbGFyYXRpdmU6OmlzU2lnbmFsQ29ubmVjdGVkKTsKKysKKysgICAgUXREZWNsYXJhdGl2ZTo6 T2JqZWN0IHA7CisrICAgIFFPYmplY3RQcml2YXRlICpwcml2ID0gUU9iamVjdFByaXZhdGU6Omdl dCgmcCk7CisrICAgIHByaXYtPmRlY2xhcmF0aXZlRGF0YSA9IFF0RGVjbGFyYXRpdmU6OnRoZURh dGEgPSBuZXcgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOworKworKyAgICBjb25uZWN0KCZwLCAm UXREZWNsYXJhdGl2ZTo6T2JqZWN0Ojp0aGVTaWduYWwsICZwLCBbXXsKKysgICAgfSk7CisrCisr ICAgIFF0RGVjbGFyYXRpdmU6Ok9iamVjdCAqY2hpbGQgPSBuZXcgUXREZWNsYXJhdGl2ZTo6T2Jq ZWN0OworKyAgICBjaGlsZC0+c2V0UGFyZW50KCZwKTsKKysjZW5kaWYKKyt9CisrCisgUVRFU1Rf TUFJTih0c3RfUU9iamVjdCkKKyAjaW5jbHVkZSAidHN0X3FvYmplY3QubW9jIgorZGlmZiAtLWdp dCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UvdHN0 X3FtaW1lZGF0YWJhc2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9taW1ldHlwZXMv cW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAKK2luZGV4IDBlYTQyMmVjYmMuLjFh MzI1NjUzNGIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBl cy9xbWltZWRhdGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5j cHAKK0BAIC03MCwxNSArNzAsMTUgQEAgc3RhdGljIGlubGluZSBRU3RyaW5nIHRlc3RTdWl0ZVdh cm5pbmcoKQorIAorICAgICBRU3RyaW5nIHJlc3VsdDsKKyAgICAgUVRleHRTdHJlYW0gc3RyKCZy ZXN1bHQpOworLSAgICBzdHIgPDwgIlxuQ2Fubm90IGZpbmQgdGhlIHNoYXJlZC1taW1lLWluZm8g dGVzdCBzdWl0ZVxuc3RhcnRpbmcgZnJvbTogIgorKyAgICBzdHIgPDwgIlxuQ2Fubm90IGZpbmQg dGhlIHNoYXJlZC1taW1lLWluZm8gdGVzdCBzdWl0ZVxuaW4gdGhlIHBhcmVudCBvZjogIgorICAg ICAgICAgPDwgUURpcjo6dG9OYXRpdmVTZXBhcmF0b3JzKFFEaXI6OmN1cnJlbnRQYXRoKCkpIDw8 ICJcbiIKKyAgICAgICAgICAgICJjZCAiIDw8IFFEaXI6OnRvTmF0aXZlU2VwYXJhdG9ycyhRU3Ry aW5nTGl0ZXJhbCgidGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlIikp IDw8ICJcbiIKKy0gICAgICAgICAgICJ3Z2V0IGh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94 ZGcvc2hhcmVkLW1pbWUtaW5mby9zbmFwc2hvdC9SZWxlYXNlLTEtMTAuemlwXG4iCistICAgICAg ICAgICAidW56aXAgUmVsZWFzZS0xLTEwLnppcFxuIjsKKysgICAgICAgICAgICJ3Z2V0IGh0dHBz Oi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy94ZGcvc2hhcmVkLW1pbWUtaW5mby8tL2FyY2hpdmUv Mi4xL3NoYXJlZC1taW1lLWluZm8tMi4xLnppcFxuIgorKyAgICAgICAgICAgInVuemlwIHNoYXJl ZC1taW1lLWluZm8tMi4xLnppcFxuIjsKKyAjaWZkZWYgUV9PU19XSU4KKy0gICAgc3RyIDw8ICJt a2RpciB0ZXN0ZmlsZXNcbnhjb3B5IC9zIFJlbGVhc2UtMS0xMCBzLW0taVxuIjsKKysgICAgc3Ry IDw8ICJta2RpciB0ZXN0ZmlsZXNcbnhjb3B5IC9zIHNoYXJlZC1taW1lLWluZm8tMi4xIHMtbS1p XG4iOworICNlbHNlCistICAgIHN0ciA8PCAibG4gLXMgUmVsZWFzZS0xLTEwIHMtbS1pXG4iOwor KyAgICBzdHIgPDwgImxuIC1zIHNoYXJlZC1taW1lLWluZm8tMi4xIHMtbS1pXG4iOworICNlbmRp ZgorICAgICByZXR1cm4gcmVzdWx0OworIH0KK0BAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCB0c3Rf UU1pbWVEYXRhYmFzZTo6aW5pdFRlc3RDYXNlKCkKKyAgICAgUVZFUklGWTIoY29weVJlc291cmNl RmlsZSh4bWxGaWxlTmFtZSwgeG1sVGFyZ2V0RmlsZU5hbWUsICZlcnJvck1lc3NhZ2UpLCBxUHJp bnRhYmxlKGVycm9yTWVzc2FnZSkpOworICNlbmRpZgorIAorLSAgICBtX3Rlc3RTdWl0ZSA9IFFG SU5EVEVTVERBVEEoInMtbS1pL3Rlc3RzIik7CisrICAgIG1fdGVzdFN1aXRlID0gUUZJTkRURVNU REFUQSgicy1tLWkvdGVzdHMvbWltZS1kZXRlY3Rpb24iKTsKKyAgICAgaWYgKG1fdGVzdFN1aXRl LmlzRW1wdHkoKSkKKyAgICAgICAgIHFXYXJuaW5nKCIlcyIsIHFQcmludGFibGUodGVzdFN1aXRl V2FybmluZygpKSk7CisgCitAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgdHN0X1FNaW1lRGF0YWJh c2U6OmFsbE1pbWVUeXBlcygpCisgICAgIFFWRVJJRlkoIWxzdC5pc0VtcHR5KCkpOworIAorICAg ICAvLyBIYXJkY29kaW5nIHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGNoZWNrIGJvdGggcHJvdmlk ZXJzIGZpbmQgdGhlIHNhbWUgbnVtYmVyIG9mIG1pbWV0eXBlcy4KKy0gICAgUUNPTVBBUkUobHN0 LmNvdW50KCksIDc3OSk7CisrICAgIFFDT01QQVJFKGxzdC5jb3VudCgpLCA4MTEpOworIAorICAg ICBmb3JlYWNoIChjb25zdCBRTWltZVR5cGUgJm1pbWUsIGxzdCkgeworICAgICAgICAgY29uc3Qg UVN0cmluZyBuYW1lID0gbWltZS5uYW1lKCk7CitAQCAtNjMxLDEwICs2MzEsOSBAQCB2b2lkIHRz dF9RTWltZURhdGFiYXNlOjpzdWZmaXhlc19kYXRhKCkKKyAKKyAgICAgUVRlc3Q6Om5ld1Jvdygi bWltZXR5cGUgd2l0aCBhIHNpbmdsZSBwYXR0ZXJuIikgPDwgImFwcGxpY2F0aW9uL3BkZiIgPDwg IioucGRmIiA8PCAicGRmIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygibWltZXR5cGUgd2l0aCBtdWx0 aXBsZSBwYXR0ZXJucyIpIDw8ICJhcHBsaWNhdGlvbi94LWtwcmVzZW50ZXIiIDw8ICIqLmtwcjsq LmtwdCIgPDwgImtwciI7CistICAgIFFUZXN0OjpuZXdSb3coImpwZWciKSA8PCAiaW1hZ2UvanBl ZyIgPDwgIiouanBlOyouanBnOyouanBlZyIgPDwgImpwZWciOworLSAgICAvL2lmIChLTWltZVR5 cGU6OnNoYXJlZE1pbWVJbmZvVmVyc2lvbigpID4gS0RFX01BS0VfVkVSU0lPTigwLCA2MCwgMCkp IHsKKy0gICAgICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggbWFueSBwYXR0ZXJucyIp IDw8ICJhcHBsaWNhdGlvbi92bmQud29yZHBlcmZlY3QiIDw8ICIqLndwOyoud3A0Oyoud3A1Oyou d3A2Oyoud3BkOyoud3BwIiA8PCAid3AiOworLSAgICAvL30KKysgICAgLy8gVGhlIHByZWZlcnJl ZCBzdWZmaXggZm9yIGltYWdlL2pwZWcgaXMgKi5qcGcsIGFzIHBlciBodHRwczovL2J1Z3Mua2Rl Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NzM3CisrICAgIFFUZXN0OjpuZXdSb3coImpwZWciKSA8 PCAiaW1hZ2UvanBlZyIgPDwgIiouanBlOyouanBnOyouanBlZyIgPDwgImpwZyI7CisrICAgIFFU ZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggbWFueSBwYXR0ZXJucyIpIDw8ICJhcHBsaWNhdGlv bi92bmQud29yZHBlcmZlY3QiIDw8ICIqLndwOyoud3A0Oyoud3A1Oyoud3A2Oyoud3BkOyoud3Bw IiA8PCAid3AiOworICAgICBRVGVzdDo6bmV3Um93KCJvYXNpcyB0ZXh0IG1pbWV0eXBlIikgPDwg ImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dCIgPDwgIioub2R0IiA8PCAi b2R0IjsKKyAgICAgUVRlc3Q6Om5ld1Jvdygib2FzaXMgcHJlc2VudGF0aW9uIG1pbWV0eXBlIikg PDwgImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uIiA8PCAi Ki5vZHAiIDw8ICJvZHAiOworICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIG11bHRp cGxlIHBhdHRlcm5zIikgPDwgInRleHQvcGxhaW4iIDw8ICIqLmFzYzsqLnR4dDsqLHYiIDw8ICJ0 eHQiOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvc2VyaWFsaXphdGlv bi9qc29uL3RzdF9xdGpzb24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9zZXJpYWxp emF0aW9uL2pzb24vdHN0X3F0anNvbi5jcHAKK2luZGV4IDNlNThkZDAzY2MuLmM4ZjgyZWY1ZDUg MTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3NlcmlhbGl6YXRpb24vanNv bi90c3RfcXRqc29uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9zZXJpYWxp emF0aW9uL2pzb24vdHN0X3F0anNvbi5jcHAKK0BAIC0xNzYsNiArMTc2LDggQEAgcHJpdmF0ZSBR X1NMT1RTOgorICAgICB2b2lkIGZyb21Ub1ZhcmlhbnRDb252ZXJzaW9uc19kYXRhKCk7CisgICAg IHZvaWQgZnJvbVRvVmFyaWFudENvbnZlcnNpb25zKCk7CisgCisrICAgIHZvaWQgbm9MZWFrT25O YW1lQ2xhc2goKTsKKysKKyBwcml2YXRlOgorICAgICBRU3RyaW5nIHRlc3REYXRhRGlyOworIH07 CitAQCAtMzY4NSw1ICszNjg3LDIzIEBAIHZvaWQgdHN0X1F0SnNvbjo6ZnJvbVRvVmFyaWFudENv bnZlcnNpb25zKCkKKyAgICAgfQorIH0KKyAKKyt2b2lkIHRzdF9RdEpzb246Om5vTGVha09uTmFt ZUNsYXNoKCkKKyt7CisrICAgIFFKc29uRG9jdW1lbnQgZG9jID0gUUpzb25Eb2N1bWVudDo6ZnJv bUpzb24oIntcIlwiOntcIlwiOjB9LFwiXCI6MH0iKTsKKysgICAgUVZFUklGWSghZG9jLmlzTnVs bCgpKTsKKysgICAgY29uc3QgUUpzb25PYmplY3Qgb2JqID0gZG9jLm9iamVjdCgpOworKworKyAg ICAvLyBSZW1vdmVkIHRoZSBkdXBsaWNhdGUga2V5LgorKyAgICBRQ09NUEFSRShvYmoubGVuZ3Ro KCksIDEpOworKworKyAgICAvLyBSZXRhaW5lZCB0aGUgbGFzdCBvZiB0aGUgZHVwbGljYXRlcy4K KysgICAgY29uc3QgUUpzb25WYWx1ZSB2YWwgPSBvYmouYmVnaW4oKS52YWx1ZSgpOworKyAgICBR VkVSSUZZKHZhbC5pc0RvdWJsZSgpKTsKKysgICAgUUNPTVBBUkUodmFsLnRvRG91YmxlKCksIDAu MCk7CisrCisrICAgIC8vIEl0IHNob3VsZCBub3QgbGVhay4KKysgICAgLy8gSW4gcGFydGljdWxh ciBpdCBzaG91bGQgbm90IGZvcmdldCB0byBkZXJlZiB0aGUgY29udGFpbmVyIGZvciB0aGUgaW5u ZXIgb2JqZWN0LgorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RdEpzb24pCisgI2luY2x1ZGUgInRz dF9xdGpzb24ubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvdGlt ZS9xdGltZXpvbmUvdHN0X3F0aW1lem9uZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGli L3RpbWUvcXRpbWV6b25lL3RzdF9xdGltZXpvbmUuY3BwCitpbmRleCBhNTliNThkNTdmLi4yNDFj M2U4NGFjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi90aW1lL3F0aW1l em9uZS90c3RfcXRpbWV6b25lLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi90 aW1lL3F0aW1lem9uZS90c3RfcXRpbWV6b25lLmNwcAorQEAgLTYzLDYgKzYzLDcgQEAgcHJpdmF0 ZSBzbG90czoKKyAgICAgdm9pZCBpc1ZhbGlkSWRfZGF0YSgpOworICAgICB2b2lkIGlzVmFsaWRJ ZCgpOworICAgICB2b2lkIG1hbGZvcm1lZCgpOworKyAgICB2b2lkIHNlcmlhbGl6ZSgpOworICAg ICAvLyBCYWNrZW5kIHRlc3RzCisgICAgIHZvaWQgdXRjVGVzdCgpOworICAgICB2b2lkIGljdVRl c3QoKTsKK0BAIC05NDcsNiArOTQ4LDMzIEBAIHZvaWQgdHN0X1FUaW1lWm9uZTo6bWFsZm9ybWVk KCkKKyAgICAgICAgIGJhcmYub2Zmc2V0RnJvbVV0Yyhub3cpOworIH0KKyAKKyt2b2lkIHRzdF9R VGltZVpvbmU6OnNlcmlhbGl6ZSgpCisreworKyAgICBpbnQgcGFydHMgPSAwOworKyNpZm5kZWYg UVRfTk9fREVCVUdfU1RSRUFNCisrICAgIHFEZWJ1ZygpIDw8IFFUaW1lWm9uZSgpOyAvLyB0byB2 ZXJpZnkgbm8gY3Jhc2gKKysgICAgcGFydHMrKzsKKysjZW5kaWYKKysjaWZuZGVmIFFUX05PX0RB VEFTVFJFQU0KKysgICAgUUJ5dGVBcnJheSBibG9iOworKyAgICB7CisrICAgICAgICBRRGF0YVN0 cmVhbSBzdHJlYW0oJmJsb2IsIFFJT0RldmljZTo6V3JpdGVPbmx5KTsKKysgICAgICAgIHN0cmVh bSA8PCBRVGltZVpvbmUoIkV1cm9wZS9Pc2xvIikgPDwgUVRpbWVab25lKDQyMCkgPDwgUVRpbWVa b25lKCkgPDwgcWludDY0KC0xKTsKKysgICAgfQorKyAgICBRRGF0YVN0cmVhbSBzdHJlYW0oJmJs b2IsIFFJT0RldmljZTo6UmVhZE9ubHkpOworKyAgICBRVGltZVpvbmUgaW52YWxpZCwgb2Zmc2V0 LCBvc2xvOworKyAgICBxaW50NjQgbWludXNvbmU7CisrICAgIHN0cmVhbSA+PiBvc2xvID4+IG9m ZnNldCA+PiBpbnZhbGlkID4+IG1pbnVzb25lOworKyAgICBRQ09NUEFSRShvc2xvLCBRVGltZVpv bmUoIkV1cm9wZS9Pc2xvIikpOworKyAgICBRQ09NUEFSRShvZmZzZXQsIFFUaW1lWm9uZSg0MjAp KTsKKysgICAgUVZFUklGWSghaW52YWxpZC5pc1ZhbGlkKCkpOworKyAgICBRQ09NUEFSRShtaW51 c29uZSwgcWludDY0KC0xKSk7CisrICAgIHBhcnRzKys7CisrI2VuZGlmCisrICAgIGlmICghcGFy dHMpCisrICAgICAgICBRU0tJUCgiTm8gc2VyaWFsaXphdGlvbiBlbmFibGVkIik7CisrfQorKwor IHZvaWQgdHN0X1FUaW1lWm9uZTo6dXRjVGVzdCgpCisgeworICNpZmRlZiBRVF9CVUlMRF9JTlRF Uk5BTAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMvcWRidXNpbnRlcmZhY2Uv dHN0X3FkYnVzaW50ZXJmYWNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMvcWRidXNpbnRl cmZhY2UvdHN0X3FkYnVzaW50ZXJmYWNlLmNwcAoraW5kZXggMDU0ODBjNmRkMi4uNzBmNGM3NTc1 NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMvcWRidXNpbnRlcmZhY2UvdHN0 X3FkYnVzaW50ZXJmYWNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZGJ1cy9xZGJ1c2lu dGVyZmFjZS90c3RfcWRidXNpbnRlcmZhY2UuY3BwCitAQCAtMzI0LDYgKzMyNCwxMyBAQCB2b2lk IHRzdF9RREJ1c0ludGVyZmFjZTo6bm90VmFsaWQoKQorIAorICAgICBRVkVSSUZZKCFpbnRlcmZh Y2UuaXNWYWxpZCgpKTsKKyAgICAgUVZFUklGWSghUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCgm aW50ZXJmYWNlLCAiTGlzdE5hbWVzIiwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pKTsKKysKKysgICAg Ly8gV2l0aCBhIGNvbm5lY3Rpb24sIGJ1dCBlbXB0eS9udWxsIHNlcnZpY2UgYW5kIHBhdGggc3Bl Y2lmaWVkCisrICAgIFFEQnVzQ29ubmVjdGlvbiBjb24gPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Np b25CdXMoKTsKKysgICAgUVZFUklGWShjb24uaXNDb25uZWN0ZWQoKSk7CisrICAgIFFEQnVzSW50 ZXJmYWNlIGlmYWNlKHt9LCB7fSwge30sIGNvbik7CisrICAgIFFWRVJJRlkoIWlmYWNlLmlzVmFs aWQoKSk7CisrICAgIFFWRVJJRlkoIVFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QoJmludGVyZmFj ZSwgIkxpc3ROYW1lcyIsIFF0OjpEaXJlY3RDb25uZWN0aW9uKSk7CisgfQorIAorIHZvaWQgdHN0 X1FEQnVzSW50ZXJmYWNlOjpub3RWYWxpZERlcml2ZWQoKQorZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlL3RzdF9xa2V5c2VxdWVuY2UuY3BwIGIv cXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UvdHN0X3FrZXlzZXF1ZW5j ZS5jcHAKK2luZGV4IDg3NDQ2OGM5NTQuLjA0Y2ViNGFiNjUgMTAwNjQ0CistLS0gYS9xdGJhc2Uv dGVzdHMvYXV0by9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3RfcWtleXNlcXVlbmNlLmNwcAor KysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UvdHN0X3FrZXlz ZXF1ZW5jZS5jcHAKK0BAIC01MDcsNiArNTA3LDEwIEBAIHZvaWQgdHN0X1FLZXlTZXF1ZW5jZTo6 dG9TdHJpbmdGcm9tS2V5Y29kZV9kYXRhKCkKKyAgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCtBbHQr TnVtK0RlbCIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6Q29udHJvbE1vZGlmaWVyIHwgUXQ6OkFsdE1v ZGlmaWVyIHwgUXQ6OktleXBhZE1vZGlmaWVyIHwgUXQ6OktleV9EZWxldGUpIDw8ICJDdHJsK0Fs dCtOdW0rRGVsIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCtJbnMiKSA8PCBRS2V5U2VxdWVu Y2UoUXQ6OkNvbnRyb2xNb2RpZmllciB8IFF0OjpLZXlfSW5zZXJ0KSA8PCAiQ3RybCtJbnMiOwor ICAgICBRVGVzdDo6bmV3Um93KCJDdHJsK051bStJbnMoMSkiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6 OktleV9JbnNlcnQgfCBRdDo6S2V5cGFkTW9kaWZpZXIgfCBRdDo6Q29udHJvbE1vZGlmaWVyKSA8 PCAiQ3RybCtOdW0rSW5zIjsKKysgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCIpIDw8IFFLZXlTZXF1 ZW5jZShRdDo6S2V5X0NvbnRyb2wpIDw8ICJDb250cm9sIjsKKysgICAgUVRlc3Q6Om5ld1Jvdygi QWx0IikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfQWx0KSA8PCAiQWx0IjsKKysgICAgUVRlc3Q6 Om5ld1JvdygiU2hpZnQiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9TaGlmdCkgPDwgIlNoaWZ0 IjsKKysgICAgUVRlc3Q6Om5ld1JvdygiTWV0YSIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X01l dGEpIDw8ICJNZXRhIjsKKyB9CisgCisgdm9pZCB0c3RfUUtleVNlcXVlbmNlOjp0b1N0cmluZ0Zy b21LZXljb2RlKCkKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9ndWkvdGV4dC9xZm9u dGRhdGFiYXNlL3RzdF9xZm9udGRhdGFiYXNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS90 ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwCitpbmRleCAxNWUwZWNhZGFh Li5iNGVjYTc0MjgzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL3RleHQvcWZv bnRkYXRhYmFzZS90c3RfcWZvbnRkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRv L2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwCitAQCAtODEsNiAr ODEsOCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHJlZ2lzdGVyT3BlblR5cGVQcmVmZXJy ZWROYW1lc1N5c3RlbSgpOworICAgICB2b2lkIHJlZ2lzdGVyT3BlblR5cGVQcmVmZXJyZWROYW1l c0FwcGxpY2F0aW9uKCk7CisgCisrICAgIHZvaWQgc3RyZXRjaFJlc3BlY3RlZCgpOworKworIHBy aXZhdGU6CisgICAgIFFTdHJpbmcgbV9sZWRGb250OworICAgICBRU3RyaW5nIG1fdGVzdEZvbnQ7 CitAQCAtMzU1LDYgKzM1NywyOCBAQCBzdGF0aWMgUVN0cmluZyB0ZXN0U3RyaW5nKCkKKyAgICAg cmV0dXJuIFFTdHJpbmdMaXRlcmFsKCJmb28gYmFyIik7CisgfQorIAorK3ZvaWQgdHN0X1FGb250 RGF0YWJhc2U6OnN0cmV0Y2hSZXNwZWN0ZWQoKQorK3sKKysgICAgaW50IGl0YWxpY0lkID0gUUZv bnREYXRhYmFzZTo6YWRkQXBwbGljYXRpb25Gb250KG1fdGVzdEZvbnRJdGFsaWMpOworKyAgICBR VkVSSUZZKGl0YWxpY0lkICE9IC0xKTsKKysKKysgICAgUVZFUklGWSghUUZvbnREYXRhYmFzZTo6 YXBwbGljYXRpb25Gb250RmFtaWxpZXMoaXRhbGljSWQpLmlzRW1wdHkoKSk7CisrCisrICAgIFFT dHJpbmcgaXRhbGljRm9udE5hbWUgPSBRRm9udERhdGFiYXNlOjphcHBsaWNhdGlvbkZvbnRGYW1p bGllcyhpdGFsaWNJZCkuZmlyc3QoKTsKKysKKysgICAgUUZvbnQgaXRhbGljRm9udCA9IFFGb250 RGF0YWJhc2UoKS5mb250KGl0YWxpY0ZvbnROYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVN0cmluZzo6ZnJvbUxhdGluMSgiSXRhbGljIiksIDE0KTsK KysgICAgUVZFUklGWShpdGFsaWNGb250Lml0YWxpYygpKTsKKysKKysgICAgUUZvbnQgaXRhbGlj U3RyZXRjaGVkRm9udCA9IGl0YWxpY0ZvbnQ7CisrICAgIGl0YWxpY1N0cmV0Y2hlZEZvbnQuc2V0 U3RyZXRjaCggNDAwICk7CisrCisrICAgIFFWRVJJRlkoUUZvbnRNZXRyaWNzRihpdGFsaWNGb250 KS5ob3Jpem9udGFsQWR2YW5jZShRU3RyaW5nTGl0ZXJhbCgiZm9vYmFyIikpIDwKKysgICAgICAg ICAgICBRRm9udE1ldHJpY3NGKGl0YWxpY1N0cmV0Y2hlZEZvbnQpLmhvcml6b250YWxBZHZhbmNl KFFTdHJpbmdMaXRlcmFsKCJmb29iYXIiKSkpOworKworKyAgICBRRm9udERhdGFiYXNlOjpyZW1v dmVBcHBsaWNhdGlvbkZvbnQoaXRhbGljSWQpOworK30KKysKKyB2b2lkIHRzdF9RRm9udERhdGFi YXNlOjpjb25kZW5zZWRGb250V2lkdGhOb0ZvbnRNZXJnaW5nKCkKKyB7CisgICAgIGludCByZWd1 bGFyRm9udElkID0gUUZvbnREYXRhYmFzZTo6YWRkQXBwbGljYXRpb25Gb250KG1fdGVzdEZvbnQp OworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3Jr cmVwbHkvdHN0X3FuZXR3b3JrcmVwbHkuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9h Y2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBseS5jcHAKK2luZGV4IDNkNGEwOTRj NDMuLmI0MjNlMTFhOTkgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL2Fj Y2Vzcy9xbmV0d29ya3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5LmNwcAorKysrIGIvcXRiYXNlL3Rl c3RzL2F1dG8vbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBseS5j cHAKK0BAIC0yODEsNiArMjgxLDcgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIGlvR2V0 RnJvbUZpbGVTcGVjaWFsKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRmlsZV9kYXRhKCk7CisgICAg IHZvaWQgaW9HZXRGcm9tRmlsZSgpOworKyAgICB2b2lkIGlvR2V0RnJvbUZpbGVVcmwoKTsKKyAg ICAgdm9pZCBpb0dldEZyb21GdHBfZGF0YSgpOworICAgICB2b2lkIGlvR2V0RnJvbUZ0cCgpOwor ICAgICB2b2lkIGlvR2V0RnJvbUZ0cFdpdGhSZXVzZSgpOworQEAgLTMzMDAsNiArMzMwMSwxOCBA QCB2b2lkIHRzdF9RTmV0d29ya1JlcGx5Ojppb0dldEZyb21GaWxlKCkKKyAgICAgUUNPTVBBUkUo cmVhZGVyLmRhdGEsIGRhdGEpOworIH0KKyAKKyt2b2lkIHRzdF9RTmV0d29ya1JlcGx5Ojppb0dl dEZyb21GaWxlVXJsKCkKKyt7CisrICAgIC8vIFRoaXMgaW1tZWRpYXRlbHkgZmFpbHMgb24gbm9u LXdpbmRvd3MgcGxhdGZvcm1zOgorKyAgICBRTmV0d29ya1JlcXVlc3QgcmVxdWVzdChRVXJsKCJm aWxlOi8vdW5jLXNlcnZlci9zb21lL3BhdGgiKSk7CisrICAgIFFOZXR3b3JrUmVwbHlQdHIgcmVw bHkobWFuYWdlci5nZXQocmVxdWVzdCkpOworKyAgICBRU2lnbmFsU3B5IGZpbmlzaGVkU3B5KHJl cGx5LmdldCgpLCAmUU5ldHdvcmtSZXBseTo6ZmluaXNoZWQpOworKyAgICAvLyBRVEJVRy0xMDU2 MTg6IFRoaXMgd291bGQsIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3JtcywgbmV2ZXIgaGFwcGVuIGJl Y2F1c2UgdGhlIHNpZ25hbAorKyAgICAvLyB3YXMgZW1pdHRlZCBiZWZvcmUgdGhlIGNvbnN0cnVj dG9yIGZpbmlzaGVkLCBsZWF2aW5nIG5vIGNoYW5jZSBhdCBhbGwgdG8gY29ubmVjdCB0byB0aGUK KysgICAgLy8gc2lnbmFsCisrICAgIFFWRVJJRlkoZmluaXNoZWRTcHkud2FpdCgpKTsKKyt9Cisr Cisgdm9pZCB0c3RfUU5ldHdvcmtSZXBseTo6aW9HZXRGcm9tRnRwX2RhdGEoKQorIHsKKyAgICAg UVRlc3Q6OmFkZENvbHVtbjxRU3RyaW5nPigiZmlsZU5hbWUiKTsKK2RpZmYgLS1naXQgYS9xdGJh c2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmNlcnQgYi9x dGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmNlcnQK K2luZGV4IDA2OWZhNmIzNDEuLjRjYzRkOWE1ZWEgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMv YXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmNlcnQKKysrKyBiL3F0YmFz ZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2UuY2VydAorQEAg LTEsNzUgKzEsMzQgQEAKKy1DZXJ0aWZpY2F0ZToKKy0gICAgRGF0YToKKy0gICAgICAgIFZlcnNp b246IDMgKDB4MikKKy0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDAgKDB4MCkKKy0gICAgICAgIFNp Z25hdHVyZSBBbGdvcml0aG06IHNoYTFXaXRoUlNBRW5jcnlwdGlvbgorLSAgICAgICAgSXNzdWVy OiBDPU5PLCBTVD1Pc2xvLCBMPU55ZGFsZW4sIE89Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0 cyBzdWJzaWRpYXJ5KC1pZXMpLCBPVT1EZXZlbG9wbWVudCwgQ049Zmx1a2UudHJvbGwubm8vZW1h aWxBZGRyZXNzPWFoYW5zc2VuQHRyb2xsdGVjaC5jb20KKy0gICAgICAgIFZhbGlkaXR5CistICAg ICAgICAgICAgTm90IEJlZm9yZTogRGVjICA0IDAxOjEwOjMyIDIwMDcgR01UCistICAgICAgICAg ICAgTm90IEFmdGVyIDogQXByIDIxIDAxOjEwOjMyIDIwMzUgR01UCistICAgICAgICBTdWJqZWN0 OiBDPU5PLCBTVD1Pc2xvLCBPPU5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy eSgtaWVzKSwgT1U9RGV2ZWxvcG1lbnQsIENOPWZsdWtlLnRyb2xsLm5vCistICAgICAgICBTdWJq ZWN0IFB1YmxpYyBLZXkgSW5mbzoKKy0gICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTog cnNhRW5jcnlwdGlvbgorLSAgICAgICAgICAgIFJTQSBQdWJsaWMgS2V5OiAoMTAyNCBiaXQpCist ICAgICAgICAgICAgICAgIE1vZHVsdXMgKDEwMjQgYml0KToKKy0gICAgICAgICAgICAgICAgICAg IDAwOmE3OmM4OmEwOjRhOmM0OjE5OjA1OjFiOjY2OmJhOjMyOmUyOmQyOmYxOgorLSAgICAgICAg ICAgICAgICAgICAgMWM6NmY6MTc6ODI6ZTQ6Mzk6MmU6MDE6NTE6OTA6ZGI6MDQ6MzQ6MzI6MTE6 CistICAgICAgICAgICAgICAgICAgICAyMTpjMjowZDo2Zjo1OTpkODo1Mzo5MDo1NDozZjo4Mzo4 ZjphOTpkMzpiMzoKKy0gICAgICAgICAgICAgICAgICAgIGQ1OmVlOjFhOjliOjgwOmFlOmMzOjI1 OmM5OjVlOmE1OmFmOjRiOjYwOjA1OgorLSAgICAgICAgICAgICAgICAgICAgYWE6YTA6ZDE6OTE6 MDE6MWY6Y2E6MDQ6ODM6ZTM6NTg6MWM6OTk6MzI6NDU6CistICAgICAgICAgICAgICAgICAgICA4 NDo3MDo3Mjo1ODowMzo5ODo0YTo2Mzo4Yjo0MTpmNTowODo0OTpkMjo5MToKKy0gICAgICAgICAg ICAgICAgICAgIDAyOjYwOjZiOmU0OjY0OmZlOmRkOmEwOmFhOjc0OjA4OmU5OjM0OjRjOjkxOgor LSAgICAgICAgICAgICAgICAgICAgNWY6MTI6M2Q6Mzc6NGQ6NTQ6MmM6YWQ6N2Y6NWI6OTg6NjA6 MzY6MDI6OGM6CistICAgICAgICAgICAgICAgICAgICAzYjpmNjo0NTpmMzoyNzo2YTo5Yjo5NDo5 ZAorLSAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCistICAgICAgICBY NTA5djMgZXh0ZW5zaW9uczoKKy0gICAgICAgICAgICBYNTA5djMgQmFzaWMgQ29uc3RyYWludHM6 IAorLSAgICAgICAgICAgICAgICBDQTpGQUxTRQorLSAgICAgICAgICAgIE5ldHNjYXBlIENvbW1l bnQ6IAorLSAgICAgICAgICAgICAgICBPcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZQorLSAg ICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKKy0gICAgICAgICAgICAg ICAgMjE6ODU6MDQ6M0Q6MjM6MDE6NjY6RTU6Rjc6OUY6MUE6ODQ6MjQ6OEE6QUY6MEE6Nzk6RjQ6 RTU6QUMKKy0gICAgICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiAKKy0g ICAgICAgICAgICAgICAgRGlyTmFtZTovQz1OTy9TVD1Pc2xvL0w9TnlkYWxlbi9PPU5va2lhIENv cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS9PVT1EZXZlbG9wbWVudC9DTj1m bHVrZS50cm9sbC5uby9lbWFpbEFkZHJlc3M9YWhhbnNzZW5AdHJvbGx0ZWNoLmNvbQorLSAgICAg ICAgICAgICAgICBzZXJpYWw6OEU6QTg6QjQ6RTg6OTE6Qjc6NTQ6MkUKKy0KKy0gICAgU2lnbmF0 dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCistICAgICAgICA2ZDo1Nzo1Zjpk MTowNTo0MzpmMDo2MjowNTplYzoyYTo3MTphNTpkYzoxOTowODpmMjpjNDoKKy0gICAgICAgIGE2 OmJkOmJiOjI1OmQ5OmNhOjg5OjAxOjBlOmU0OmNmOjFmOmMxOjhjOmM4OjI0OjE4OjM1OgorLSAg ICAgICAgNTM6NTk6N2I6YzA6NDM6YjQ6MzI6ZTY6OTg6YjI6YTY6ZWY6MTU6MDU6MGI6NDg6NWY6 ZTE6CistICAgICAgICBhMDowYzo5NzphOTphMTo3NzpkODozNToxODozMDpiYzphOTo4ZjpkMzpi Nzo1NDpjNzpmMToKKy0gICAgICAgIGE5OjllOjVkOmU2OjE5OmJmOmY2OjNjOjViOjJiOmQ4OmU0 OjNlOjYyOjE4Ojg4OjhiOmQzOgorLSAgICAgICAgMjQ6ZTE6NDA6OWI6MGM6ZTY6Mjk6MTY6NjI6 YWI6ZWE6MDU6MjQ6NzA6MzY6YWE6NTU6OTM6CistICAgICAgICBlZjowMjo4MToxYjoyMzoxMDph MjowNDplYjo1Njo5NTo3NTpmYzpmODo5NDpiMTo1ZDo0MjoKKy0gICAgICAgIGM1OjNmOjM2OjQ0 Ojg1OjVkOjNhOjJlOjkwOjQ2OjhhOmEyOmI5OjZmOjg3OmFlOjBjOjE1OgorLSAgICAgICAgNDA6 MTk6MzE6OTA6ZmM6M2I6MjU6YmI6YWU6ZjE6NjY6MTM6MGQ6ODU6OTA6ZDk6NDk6MzQ6CistICAg ICAgICA4ZjpmMjo1ZDpmOTo3YTpkYjo0ZDo1ZDoyNzpmNjo3Njo5ZDozNTo4YzowNjphNjo0Yzph MzoKKy0gICAgICAgIGIxOmIyOmI2OjZmOjFkOmQ3OmEzOjAwOmZkOjcyOmViOjllOmVhOjQ0OmEx OmFmOjIxOjM0OgorLSAgICAgICAgN2Q6Yzc6NDI6ZTI6NDk6OTE6MTk6OGI6YzA6YWQ6YmE6ODI6 ODA6YTg6NzE6NzA6ZjQ6MzU6CistICAgICAgICAzMTo5MTo2Mzo4NDoyMDo5NTplOTo2MDphZjo2 NDo4YjpjYzpmZjozZDo4YTo3Njo3NDozZDoKKy0gICAgICAgIGM4OjU1OjZkOmU0OjhlOmMzOjJi OjFjOmU4OjQyOjE4OmFlOjlmOmU2OjZiOjljOjM0OjA2OgorLSAgICAgICAgZWM6NmE6ZjI6YzMK KyAtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KKy1NSUlFRXpDQ0F2dWdBd0lCQWdJQkFEQU5C Z2txaGtpRzl3MEJBUVVGQURDQm5ERUxNQWtHQTFVRUJoTUNUazh4CistRFRBTEJnTlZCQWdUQkU5 emJHOHhFREFPQmdOVkJBY1RCMDU1WkdGc1pXNHhGakFVQmdOVkJBb1REVlJ5YjJ4cworLWRHVmph Q0JCVTBFeEZEQVNCZ05WQkFzVEMwUmxkbVZzYjNCdFpXNTBNUmN3RlFZRFZRUURFdzVtYkhWclpT NTAKKy1jbTlzYkM1dWJ6RWxNQ01HQ1NxR1NJYjNEUUVKQVJZV1lXaGhibk56Wlc1QWRISnZiR3gw WldOb0xtTnZiVEFlCistRncwd056RXlNRFF3TVRFd016SmFGdzB6TlRBME1qRXdNVEV3TXpKYU1H TXhDekFKQmdOVkJBWVRBazVQTVEwdworLUN3WURWUVFJRXdSUGMyeHZNUll3RkFZRFZRUUtFdzFV Y205c2JIUmxZMmdnUVZOQk1SUXdFZ1lEVlFRTEV3dEUKKy1aWFpsYkc5d2JXVnVkREVYTUJVR0Ex VUVBeE1PWm14MWEyVXVkSEp2Ykd3dWJtOHdnWjh3RFFZSktvWklodmNOCistQVFFQkJRQURnWTBB TUlHSkFvR0JBS2ZJb0VyRUdRVWJacm95NHRMeEhHOFhndVE1TGdGUmtOc0VORElSSWNJTgorLWIx bllVNUJVUDRPUHFkT3oxZTRhbTRDdXd5WEpYcVd2UzJBRnFxRFJrUUVmeWdTRDQxZ2NtVEpGaEhC eVdBT1kKKy1TbU9MUWZVSVNkS1JBbUJyNUdUKzNhQ3FkQWpwTkV5Ulh4STlOMDFVTEsxL1c1aGdO Z0tNTy9aRjh5ZHFtNVNkCistQWdNQkFBR2pnZ0VhTUlJQkZqQUpCZ05WSFJNRUFqQUFNQ3dHQ1dD R1NBR0crRUlCRFFRZkZoMVBjR1Z1VTFOTQorLUlFZGxibVZ5WVhSbFpDQkRaWEowYVdacFkyRjBa VEFkQmdOVkhRNEVGZ1FVSVlVRVBTTUJadVgzbnhxRUpJcXYKKy1Dbm4wNWF3d2dic0dBMVVkSXdT QnN6Q0JzS0dCb3FTQm56Q0JuREVMTUFrR0ExVUVCaE1DVGs4eERUQUxCZ05WCistQkFnVEJFOXpi Rzh4RURBT0JnTlZCQWNUQjA1NVpHRnNaVzR4RmpBVUJnTlZCQW9URFZSeWIyeHNkR1ZqYUNCQgor LVUwRXhGREFTQmdOVkJBc1RDMFJsZG1Wc2IzQnRaVzUwTVJjd0ZRWURWUVFERXc1bWJIVnJaUzUw Y205c2JDNXUKKy1iekVsTUNNR0NTcUdTSWIzRFFFSkFSWVdZV2hoYm5OelpXNUFkSEp2Ykd4MFpX Tm9MbU52YllJSkFJNm90T2lSCistdDFRdU1BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQnRWMS9S QlVQd1lnWHNLbkdsM0JrSThzU212YnNsMmNxSgorLUFRN2t6eC9Cak1na0dEVlRXWHZBUTdReTVw aXlwdThWQlF0SVgrR2dESmVwb1hmWU5SZ3d2S21QMDdkVXgvR3AKKy1ubDNtR2IvMlBGc3IyT1Er WWhpSWk5TWs0VUNiRE9ZcEZtS3I2Z1VrY0RhcVZaUHZBb0ViSXhDaUJPdFdsWFg4CistK0pTeFhV TEZQelpFaFYwNkxwQkdpcUs1YjRldURCVkFHVEdRL0RzbHU2N3haaE1OaFpEWlNUU1A4bDM1ZXR0 TgorLVhTZjJkcDAxakFhbVRLT3hzclp2SGRlakFQMXk2NTdxUktHdklUUjl4MExpU1pFWmk4Q3R1 b0tBcUhGdzlEVXgKKy1rV09FSUpYcFlLOWtpOHovUFlwMmREM0lWVzNranNNckhPaENHSzZmNW11 Y05BYnNhdkxECisrTUlJRjZ6Q0NBOU9nQXdJQkFnSVVmbzlhbUp0SkdXcVdFNmYrU2tBTzg1emtH cjR3RFFZSktvWklodmNOQVFFTAorK0JRQXdnWU14Q3pBSkJnTlZCQVlUQWs1UE1RMHdDd1lEVlFR SURBUlBjMnh2TVEwd0N3WURWUVFIREFSUGMyeHYKKytNUmN3RlFZRFZRUUtEQTVVYUdVZ1VYUWdR Mjl0Y0dGdWVURU1NQW9HQTFVRUN3d0RVaVpFTVJJd0VBWURWUVFECisrREFsSU1pQlVaWE4wWlhJ eEd6QVpCZ2txaGtpRzl3MEJDUUVXREcxcGJtbHRhVUJ4ZEM1cGJ6QWdGdzB5TURFdworK01qWXhN akF4TXpGYUdBOHlNVEl3TVRBd01qRXlNREV6TVZvd2dZTXhDekFKQmdOVkJBWVRBazVQTVEwd0N3 WUQKKytWUVFJREFSUGMyeHZNUTB3Q3dZRFZRUUhEQVJQYzJ4dk1SY3dGUVlEVlFRS0RBNVVhR1Vn VVhRZ1EyOXRjR0Z1CisrZVRFTU1Bb0dBMVVFQ3d3RFVpWkVNUkl3RUFZRFZRUUREQWxJTWlCVVpY TjBaWEl4R3pBWkJna3Foa2lHOXcwQgorK0NRRVdERzFwYm1sdGFVQnhkQzVwYnpDQ0FpSXdEUVlK S29aSWh2Y05BUUVCQlFBRGdnSVBBRENDQWdvQ2dnSUIKKytBT2lVcDUrRTRibG91S0g3cStyVk5S OE5vWVgyWGtCVytxK3JweTF6dTVzc1JTemJxeEFqRHg5ZGtodDdRbG5mCisrVmxEVDAwSnZwT1dk ZXVQb241OTE1ZWRRUnNZNFVubDZtS0gyOXJhM090VWExL3lDSlhzR1ZKVEtDajdrNEJ4YgorKzVt WnpiL2ZUbFpudE1MZFRJQk1mVWJ3NjJGS2lyMVdqS0ljSjlmQ29HOEphR2VLVk80Umg1cDBlemQ0 VVVVSWQKKytyMUJYbDVOcWRxeTJ2VE1zRURuak9zRDNlZ2t2OEkyU0tONE82bi9DM3dXWXBNT1dZ WmtHb1ppS3o3ckpzL2kvCisrZXo3YnNWN0psd2R6VGxocEp6a2NPU1ZGQlA2SmxFT3hUTk54WjF3 dEt5N1B0Wkdtc1NTQVRxMmU2K2J3MzhBZQorK09wMFhuenpxY0dqdEREb2ZCbVQ3T0Z6WldqUzlW WlM2K0RPT2UyUUhXbGUxbkNIY0h5SDRrdTZJUmxzcjl4a1IKKytOQUlsT2ZudkhIeHFKVWVub2Vh WjRvUURqQ0JLUzFLWHlnSk8vdEw3QkxUUVZuL3hLMUVtUHZLTm5qeldrNHRSCisrUG5pYlVoaHM1 NjM1cXBPVS9ZUHFGQmgxSmpWcnVaYnNXY0RBaFJjZXcwdXhPTlhPYTlFKzRsdHRROXlTWWExQQor K0x2V3FKdUFYN2d1MkJzQk1MeXFmbTgxMVluQTdDSUZNeU8rSGxxbWtMRmZ2NUwveElSQVhSN2wy NllHTzBWd1gKKytDR2pNZno0TlZQTU1rZTRuQjdxYTlOa3BYUUJRS01tczNRemQ1SlcwSHk5UnVq NU84R1BjRlptVjB0d2pkMXVKCisrUEQvY0Fqa1dMYVhqZE5zSjE2UVdjMm5naFFSUzZIWXFLUlg2 aitDWE94dXBBZ01CQUFHalV6QlJNQjBHQTFVZAorK0RnUVdCQlJTQ09VNThqOU5KWmtNYW10NjIz cXlDcmhOM1RBZkJnTlZIU01FR0RBV2dCUlNDT1U1OGo5Tkpaa00KKythbXQ2MjNxeUNyaE4zVEFQ QmdOVkhSTUJBZjhFQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUNBUUNxCisrcTRqeHNX ZU5EdjVOcTE0aEp0RjlIQitaTDY0emNadFJqSlAxWWdOczBRcHBLSUNtalBPTDJuSU1HbUkvakty cworKzBlR0FMLzlYWE5WSFB4bTFPUE9uY3ZpbU1NbVU2ZW1aZnBNZEV0VGZLUDQzK1BnOUhnS1Jq TG9RcDQwNnZHZVEKKys4a2kvbWJCaHJJdFZQZ0VtM3R1MkFGQTAyWFRZaStZeENJOWtSWkxHa00z RmJndE91VExQbDBaOXkra2lQYzlGCisrdUNTQzAzYW5CRXF2K3ZEU0k4K3dPRHltUS9JSjNKeXox bHhJUkRmcDRxQWVrbXkwalUyYzkxVk9ISEVtT21xcQorK2txeWdHRlJkd2JlOTltOXlQNjNyNnEw YjVLM1gyVW5KNmJuczBobVR3VGhZd3BWUFhMVThqZGFUZGRiTXVrTjIKKysvRWY5NlRzdzhuV09F T1BNeVNIT1RJUGd3eVpScDI2YjBrQTlFbWhMd09QNDAxU3hYVlFDbVNSbXR3TmFnbXRnCisrakpL bVpvWUJOKy8vRDQ1aWJLOHo2UTBvT205UCtXaGYvdVVYZWhjUnhCeHlWM3h6N2swd0tHUWJIai9k ZHdjeQorK0lVb0lONGxyQWxpYitsSzE3MGtUS04zNTJQRG1ycG8yZ21JelBFc2Z1cktBSU1TZWxE bDZIK2tpaDE2QnRaOHkKKytOejZmaDlTb3FyZzNPU0F3YXJlOHB4VjdrNTFjckJNb1BMTjc4S29S VjhNRkNLNEs3RmRkcTRyUklTcTZoaVhxCisrcjFuc2pvRVB1S005aHVwcm1aVlplOXQ1WWNEYTJJ K3diM0lpRTN1d3BaYkFkYUxEeVE1bjZGL3Fwc2lJa1pYbgorK2d0Y0Y3b3FwRzVvWXJ3Q2NaNTN5 L2V6VWdVZzdQbFN6Mlh3QUd2UXRnZz09CisgLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorZGlm ZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMv Zmx1a2Uua2V5IGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0 cy9mbHVrZS5rZXkKK2luZGV4IDlkMTY2NGQ2MDkuLjMzN2NlNTQxYTYgMTAwNjQ0CistLS0gYS9x dGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmtleQor KysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVr ZS5rZXkKK0BAIC0xLDE1ICsxLDUyIEBACistLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0t LQorLU1JSUNYQUlCQUFLQmdRQ255S0JLeEJrRkcyYTZNdUxTOFJ4dkY0TGtPUzRCVVpEYkJEUXlF U0hDRFc5WjJGT1EKKy1WRCtEajZuVHM5WHVHcHVBcnNNbHlWNmxyMHRnQmFxZzBaRUJIOG9FZytO WUhKa3lSWVJ3Y2xnRG1FcGppMEgxCistQ0VuU2tRSmdhK1JrL3QyZ3FuUUk2VFJNa1Y4U1BUZE5W Q3l0ZjF1WVlEWUNqRHYyUmZNbmFwdVVuUUlEQVFBQgorLUFvR0FORnpMa2FuVGVTR05GTTB1dHRC aXBGVDlGNGEwMGRxSHo2Sm5PN3pYQVQyNkk1cjhzVTFwcVFCYjZ1THoKKy0vK1F6NVp3azhSVUFR Y3NNUmdKZXR1UFFVYjBKWmpGNkR1djI0aE5henFYQkN1N0FaelVlbmphZndtS0MvOHJpCistS3BY M2ZUd3F6ZnppLy9GS0dnYlhRODB5eWtTU2xpREwza24vZHJBVHhzTENnUUVDUVFEWGhFRldMSjB2 VloxcworLTFFa2YrM05JVEUrRFIxNlgrTFE0VzZ2eUVIQWpUYmFOV3RjVEtkQVdMQTJsNk40V0FB UFlTaTZhd20rek14eDQKKy1Wb21WVHNqZEFrRUF4MHorZTduYXRMZUZjcnJxOHBiVSt3YTZTQVAx VmZoUVdLaXR4TDFlN3UvUU85ME5DcHhFCistb1FZS3pNa21tcE9PRmpRd0VNQXkxZHZGTWJtNExI bGV3UUpBQy9rc0RCYVVjUUhIcWprdEN0clViOHJWakF5VworLUE4bHNjY2tlQjJmRVl5RzVKNmRK VmFZNENsTk9PczV5TURTMkFmazFGNkgveEt2dFEvNUN6SW5BL1FKQVREdWIKKy1LK0JQVThqTzlx K2dwdUlpM1ZJWmR1cHNzVkdtQ2dPYlZDSExha0c0dU8wNHk5SXlQaFY5bEE5dEFMdG9JZjRjCist Vkl2djVmV0dYQnJaNDhrWkFRSkJBSm1WQ2R6UXhkOUxaSTV2eGlqVUNqNUVJNGUreDVEUnFWVXZ5 UDhLQ1pyQworLUFpTnlvRFA4NVQraEJaYVNYSzNhWUdwVndlbHlqM2J2bzFHclROd05XTHc9Cist LS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KKystLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0t LS0KKytNSUlKUWdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTd3dnZ2tvQWdFQUFvSUNBUURv bEtlZmhPRzVhTGloCisrKzZ2cTFUVWZEYUdGOWw1QVZ2cXZxNmN0Yzd1YkxFVXMyNnNRSXc4Zlha SWJlMEpaMzFaUTA5TkNiNlRsblhyagorKzZKK2ZkZVhuVUViR09GSjVlcGloOXZhMnR6clZHdGY4 Z2lWN0JsU1V5Z28rNU9BY1crWm1jMi8zMDVXWjdUQzMKKytVeUFUSDFHOE90aFNvcTlWb3lpSENm WHdxQnZDV2huaWxUdUVZZWFkSHMzZUZGRkNIYTlRVjVlVGFuYXN0cjB6CisrTEJBNTR6ckE5M29K TC9DTmtpamVEdXAvd3Q4Rm1LVERsbUdaQnFHWWlzKzZ5YlA0djNzKzI3RmV5WmNIYzA1WQorK2FT YzVIRGtsUlFUK2laUkRzVXpUY1dkY0xTc3V6N1dScHJFa2dFNnRudXZtOE4vQUhqcWRGNTg4Nm5C bzdRdzYKKytId1prK3poYzJWbzB2VldVdXZnempudGtCMXBYdFp3aDNCOGgrSkx1aUVaYksvY1pF VFFDSlRuNTd4eDhhaVZICisrcDZIbW1lS0VBNHdnU2t0U2w4b0NUdjdTK3dTMDBGWi84U3RSSmo3 eWpaNDgxcE9MVVQ1NG0xSVliT2V0K2FxVAorK2xQMkQ2aFFZZFNZMWE3bVc3Rm5Bd0lVWEhzTkxz VGpWem12UlB1SmJiVVBja21HdFFDNzFxaWJnRis0THRnYkEKKytUQzhxbjV2TmRXSndPd2lCVE1q dmg1YXBwQ3hYNytTLzhTRVFGMGU1ZHVtQmp0RmNGd2hvekg4K0RWVHpESkh1CisrSndlNm12VFpL VjBBVUNqSnJOME0zZVNWdEI4dlVibytUdkJqM0JXWmxkTGNJM2RiaVR3LzNBSTVGaTJsNDNUYgor K0NkZWtGbk5wNElVRVV1aDJLaWtWK28vZ2x6c2JxUUlEQVFBQkFvSUNBRncxcTZ0cjVJNDh2WTdE RityWHN1TG4KKys1WlVXRTFJUTZmekI0bHI3Mm5Kdi85RUVHbk1nWXp0OVBwTVVzRDZ2ZENwQmdT MkMwKzZSSEFyRnpKdE5BK1JNCisraUhMSUc3Szc3MDJ2ZXlyL3hCeC9Nd2lTbE1lTXYvWHBrRnhW STZFNnNrTUdHMnMzQU1YeEt2SlR5NUNwUngrSQorK2VRRnlMRytZYTFYMmxnSmVzL3ErL0NwQUhr T2pDT3BjTHlTUUM1Tlo3NHE3MzRWN25TZG1uK1pzM3RZRWgrTy8KKytlaXV3VFAvajViMzhUZTV2 VlRxRHhUY2lKUG1sam1YTEN3YTBOMTAwbFdsYmNwdnc4cWJxaVRJMkptM1hDYlVFCisrQXpIalc5 dm1yRjNjUlMxZlh4S0ZHU2h3M1NScWxrYnhqZmVXb2k4cURQVUJTNG04TE9yOHFHOVdvNU5mb24w egorK3pMUDRiY2kzekhEdlZjYWFacnJzVUJzL3laYmcrRGdrYTFEbVg3ZWttZWNjcjJ5VGRLREZn UHVwWVV5eFZiVGwKKythOVpMSnlzakZEN3JnQnYxWmNsSG9uTHA2VmJtK1pvVHF2dGVvNGlrQXk2 TDlSdEJXSjIzWEVLMzRQa1AvK2M1CisrMnZXWmFPcm5qU2VCSGJGY2U4Y2RKU3hxV3BQK2VTQ0k1 STlYYkRyWUZJc1EvZ3FLZ3R6REt5MmloSjJZOFNUTAorK3lPNGh5RlBGanhjK0dnNC9QMlBwbVQ1 Q1kydHk0NE0wQldzK0pHVzk2Q0pQcnJwbGYybG1RVVFKajVMWlk2NlgKKytaLzRDOUw3Wll0S1or YnM1U3ZVNDZ5V3VnQXZRWlgyMlhtOXhMWFd5VlhSZHgzYmorM00zZkRuRjlkaS96ZGJoCisrQ2dM eDdvV1BOclhjN0ZDYWpubjlBb0lCQVFENUZNWXdScHc5TldUOVdEeFF3eCtjU0k0SWNiZDg4QnlU VzYzUworK0x6ZVJ3WkEwSjkvU2Z3TythQlJ1cHpjOUdrR1hDaVpjR013M0FHc0N0aWc4eUZsdzhF NUtuek43S2xmdERNbk0KKys5TlV4eHpsUjhWd0t5TG5aZkc3c0RUbDA1N1psVXVqbnFobXQvRjhG N2RJeTdGVk8xZEUvOG5uZ0ErRllUQ09HCisrVVpkR2p3eUJEbERNMEpKZFVXR1kzeHNsdXRjcENE TjVtelNUS2p5OWRyTXZJbUFzaFJhd3hSRjZXQnBuN3ZyMgorK25DNnZjaXFmeDFNengxdnlrMEpt MGlsYXlkRGRMTUFEanQvaUw0TmtyMEJFczRrK1V6UWlLRHdwOGd1N2FiUTEKKytlQmZ4ZDlJYXI0 aHRRYTJJMUV3bDZQMDFHL3ErWll3Z0hoSjlSVm40QXhRWGVmSUxBb0lCQVFEdkNvdU9SZFFYCisr Qzh3c3lwN013WGxGLzNOUWVOTjUvK0IybWhieHJCT2Y3UG1NQ1hMbmtSV2Nqd0p0enlwV0ZxSjBz cWFpLzIrMAorK2JxYk1jalg1bWFUOHN0VDJzaGwzelhlL0VqdDJlM1RCWXBjMXR5dXNlczhLYjVC TVU4aHU2dFRkM0cyQ01YcEQKKytkVDZEVmVtSlpDVHR3ajlhQk5JeFNpenZsZ01vbEpuQ3B6aFBu bGZIU0k2RStnM20vTFRUbzNId2JqTVN3L1VxCisraXJnak9wSTJ3U0JCNkxaUFNnanZmY1lQUnlX VWsxNkw0QTV1U1gwY0FEbm92REZMYTUvaDB3SnZOL09vQ1NRZworK3JMQ1hHNUUxOEV5TDVXYzU4 QkNZMVp2eG1qRzNsUXRnUHhZdTJKd2MzNlIveS9KS2x4VzVzdUVSNVpOcGJiRDQKKyt1T3lUdDJW eE1RMmJBb0lCQVFDNStNelJGcWRvL0FqZkw1WTVKcmJmVlR6WENURGEwOXhDR2QxNlpVNjBRVFdO CisrKzRlZC9yK28xc1VLcVVjUkZCMk16RU0vMkRRQmpRcFpCL0NiRVd2V2ExWEpXWHh5cFhib3d2 ZVpVK1FxT25tTgorK3VRdmo4V0x5QTNvK1BORjllOVF2YXV3Q3JIcG44VnB4YnRQV3VhWW9LblVG cmVGWlpReEhoUEd4UkJJUzJKT1oKKytlRHJUOFphV25rQ2toMUFacDVzbVE3MUxPcHJTbG1Lcmc0 amQxR2pDVk14UVI1TjVLWGJ0eXYwT1RDWi9VRnFLCisrMmFSQnNNUHlKZ2thQkNoa1pQTFJjS3dj Ky93bFFSeDFmSFFiMTRETlRBcE14b1hGTzdlT3dxbU9rcEF0OWl5bAorK1NCSXdvUzBVVUk1YWI4 OCtiQm1YTnZLY3VGZE51UTRub3dUSlVuOXBBb0lCQURNTmtJTEJYU3ZTNURlSXl1TzIKKytTcDF0 a29aVVYrNU5mUFkzc01ESzNLSWliYVcvK3QrRU9CWm80TDd0S1FDYjh2UnpsMjFtbXNmeGZnUmFQ RGJqCisrM3IzdHY5ZzBiNFlMeHhCeTUycEZzY2ovc29YUmFpMTdTUzdVWndBMlFLK1h6Z0RZYkRj TE5DNm1Jc1RRRzRHeAorK2RzV2szL3pzM0t1VVNRYWVobXdyV0srZklVSzM4YzFwTEs4djdMb3hy TGtxeGxId1owNFJ0aEh3OEtUdGhIN1gKKytQbmwxSjBMRjhDU2VPeWZXTFN1UFVma1QwR0V6cHRu TkhwRWJhSGZRTTZSNmVhR2hWSlBGNkFabWU0eTZZWWdnCisrbTJpaGhTdDFuMFhWRVdwSFlXanhG eTNtSzJtejc1dW5GQzRMTStORVkycDJ6dVVRb0N3N05qblkzUVlyZkNueAorK3JSTUNnZ0VBWGVY c01TTEZqanl1b0w3aUtiQXhvNTJIRC9QMGZCb3k1OEx5UmN3Zk5WcjBsdllhbjRwWUV4K28KKytL aWpJaDlLMTZQcVhaWEtNQTl2MDAzQit1bG1GOGJKN1NkZENaNU5Hdm5GaFVURGU0RGRUS2dwMlJ1 d1EzQnNjCisrM3NrUElEYmhWRVR5T0xDdHlzMzRVU0hycThVLzBEbEdZM2VMUmZ4dzlHbmJLeFNC R2EvS0V1L3FRTFBOVW81MAorKzd4SFpEZzdHS2VDM2txTkplcUtNOXJrcDBWeklHa0VuYUQ5MTI3 TGVORG1FUkRmZnR4SnpGb0MvVEh2VUJMZlUKKys2U3VzMlpZd1JFOFZGdktDMzBRNDV0L2M1NFgz SXVoWXZBdWlDdVRteWZFNHJ1eXp5T3dLemhVa2VlTHExQVBYCisrZzB2ZUZieWZ6bEowcThxekQv aWZmcXFJYTJaU21RPT0KKystLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3RfcWFjY2Vzc2li aWxpdHlsaW51eC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9vdGhlci9xYWNjZXNzaWJpbGl0eWxp bnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcAoraW5kZXggN2JhMzcxNWUxMy4uNzUyYWEx MjJmNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3NpYmlsaXR5 bGludXgvdHN0X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0 by9vdGhlci9xYWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcAor QEAgLTE3OSw2ICsxNzksNyBAQCB2b2lkIHRzdF9RQWNjZXNzaWJpbGl0eUxpbnV4Ojppbml0VGVz dENhc2UoKQorICAgICBRVkVSSUZZKCFhZGRyZXNzLmlzRW1wdHkoKSk7CisgCisgICAgIG1fd2lu ZG93ID0gbmV3IEFjY2Vzc2libGVUZXN0V2luZG93KCk7CisrICAgIG1fd2luZG93LT5zZXRPYmpl Y3ROYW1lKCJtYWluV2luZG93Il9MMSk7CisgICAgIG1fd2luZG93LT5zaG93KCk7CisgCisgICAg IFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZChtX3dpbmRvdykpOworQEAgLTIz Niw4ICsyMzcsMTEgQEAgYm9vbCBoYXNTdGF0ZShRREJ1c0ludGVyZmFjZSAqaW50ZXJmYWNlLCBB dHNwaVN0YXRlVHlwZSBzdGF0ZSkKKyB2b2lkIHRzdF9RQWNjZXNzaWJpbGl0eUxpbnV4Ojp0ZXN0 TGFiZWwoKQorIHsKKyAgICAgUUxhYmVsICpsID0gbmV3IFFMYWJlbChtX3dpbmRvdyk7CisrICAg IGwtPnNldE9iamVjdE5hbWUoInRoZU9iamVjdE5hbWUiX0wxKTsKKyAgICAgbC0+c2V0VGV4dCgi SGVsbG8gQTExeSIpOworICAgICBtX3dpbmRvdy0+YWRkV2lkZ2V0KGwpOworKyAgICBhdXRvIGEx MXlFbXB0eSA9IG5ldyBRTGFiZWwobV93aW5kb3cpOworKyAgICBtX3dpbmRvdy0+YWRkV2lkZ2V0 KGwpOworIAorICAgICAvLyBBcHBsaWNhdGlvbgorICAgICBRQ09NUEFSRShnZXRQYXJlbnQobWFp bldpbmRvdyksIFFMYXRpbjFTdHJpbmcoQVRTUElfREJVU19QQVRIX1JPT1QpKTsKK0BAIC0yNDks NiArMjUzLDggQEAgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlMaW51eDo6dGVzdExhYmVsKCkKKyAg ICAgUUNPTVBBUkUoZ2V0Q2hpbGRyZW4obGFiZWxJbnRlcmZhY2UpLmNvdW50KCksIDApOworICAg ICBRQ09NUEFSRShsYWJlbEludGVyZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ssICJHZXRSb2xlTmFt ZSIpLmFyZ3VtZW50cygpLmZpcnN0KCkudG9TdHJpbmcoKSwgUUxhdGluMVN0cmluZygibGFiZWwi KSk7CisgICAgIFFDT01QQVJFKGxhYmVsSW50ZXJmYWNlLT5jYWxsKFFEQnVzOjpCbG9jaywgIkdl dFJvbGUiKS5hcmd1bWVudHMoKS5maXJzdCgpLnRvVUludCgpLCAyOXUpOworKyAgICBRQ09NUEFS RShsYWJlbEludGVyZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ssICJHZXRBY2Nlc3NpYmxlSWQiKS5h cmd1bWVudHMoKS5maXJzdCgpLnRvU3RyaW5nKCksCisrICAgICAgICAgICAgIFFMYXRpbjFTdHJp bmcoIm1haW5XaW5kb3cudGhlT2JqZWN0TmFtZSIpKTsKKyAgICAgUUNPTVBBUkUoZ2V0UGFyZW50 KGxhYmVsSW50ZXJmYWNlKSwgbWFpbldpbmRvdy0+cGF0aCgpKTsKKyAgICAgUVZFUklGWSghaGFz U3RhdGUobGFiZWxJbnRlcmZhY2UsIEFUU1BJX1NUQVRFX0VESVRBQkxFKSk7CisgICAgIFFWRVJJ RlkoaGFzU3RhdGUobGFiZWxJbnRlcmZhY2UsIEFUU1BJX1NUQVRFX1JFQURfT05MWSkpOworQEAg LTI1Niw3ICsyNjIsMTIgQEAgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlMaW51eDo6dGVzdExhYmVs KCkKKyAgICAgbC0+c2V0VGV4dCgiTmV3IHRleHQiKTsKKyAgICAgUUNPTVBBUkUobGFiZWxJbnRl cmZhY2UtPnByb3BlcnR5KCJOYW1lIikudG9TdHJpbmcoKSwgbC0+dGV4dCgpKTsKKyAKKysgICAg YXV0byAqYTExeUVtcHR5SW50ZXJmYWNlID0gZ2V0SW50ZXJmYWNlKGNoaWxkcmVuLmF0KDEpLCAi b3JnLmExMXkuYXRzcGkuQWNjZXNzaWJsZSIpOworKyAgICBRQ09NUEFSRShhMTF5RW1wdHlJbnRl cmZhY2UtPmNhbGwoUURCdXM6OkJsb2NrLCAiR2V0QWNjZXNzaWJsZUlkIikuYXJndW1lbnRzKCku Zmlyc3QoKS50b1N0cmluZygpLAorKyAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJtYWluV2lu ZG93LlFMYWJlbCIpKTsKKysKKyAgICAgbV93aW5kb3ctPmNsZWFyQ2hpbGRyZW4oKTsKKysgICAg ZGVsZXRlIGExMXlFbXB0eUludGVyZmFjZTsKKyAgICAgZGVsZXRlIGxhYmVsSW50ZXJmYWNlOwor IH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9zcWwva2VybmVsL3FzcWxxdWVy eS90c3RfcXNxbHF1ZXJ5LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwvcXNxbHF1 ZXJ5L3RzdF9xc3FscXVlcnkuY3BwCitpbmRleCA3NmRmNjFjODkyLi42ZDZkNjViNzkxIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5lbC9xc3FscXVlcnkvdHN0X3FzcWxx dWVyeS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5L3Rz dF9xc3FscXVlcnkuY3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICoqCistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5 cmlnaHQgKEMpIDIwMjIgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRhY3Q6IGh0dHBzOi8v d3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0 ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTY4LDYgKzY4LDggQEAgcHJpdmF0ZSBz bG90czoKKyAgICAgdm9pZCBxdWVyeV9leGVjKCk7CisgICAgIHZvaWQgZXhlY0Vycm9yUmVjb3Zl cnlfZGF0YSgpIHsgZ2VuZXJpY19kYXRhKCk7IH0KKyAgICAgdm9pZCBleGVjRXJyb3JSZWNvdmVy eSgpOworKyAgICB2b2lkIHByZW1hdHVyZUV4ZWNfZGF0YSgpIHsgZ2VuZXJpY19kYXRhKCk7IH0K KysgICAgdm9pZCBwcmVtYXR1cmVFeGVjKCk7CisgICAgIHZvaWQgZmlyc3RfZGF0YSgpIHsgZ2Vu ZXJpY19kYXRhKCk7IH0KKyAgICAgdm9pZCBmaXJzdCgpOworICAgICB2b2lkIG5leHRfZGF0YSgp IHsgZ2VuZXJpY19kYXRhKCk7IH0KK0BAIC0yNzcwLDYgKzI3NzIsMzUgQEAgdm9pZCB0c3RfUVNx bFF1ZXJ5OjpleGVjRXJyb3JSZWNvdmVyeSgpCisgICAgIFFWRVJJRllfU1FMKCBxLCBleGVjKCkg KTsKKyB9CisgCisrdm9pZCB0c3RfUVNxbFF1ZXJ5OjpwcmVtYXR1cmVFeGVjKCkKKyt7CisrICAg IFFGRVRDSChRU3RyaW5nLCBkYk5hbWUpOworKyAgICAvLyBXZSBvbmx5IHdhbnQgdGhlIGVuZ2lu ZSBuYW1lLCBmb3IgYWRkRGF0YWJhc2UoKToKKysgICAgaW50IGN1dCA9IGRiTmFtZS5pbmRleE9m KFFDaGFyKCdAJykpOworKyAgICBpZiAoY3V0IDwgMCkKKysgICAgICAgIFFTS0lQKCJGYWlsZWQg dG8gcGFyc2UgZGF0YWJhc2UgdHlwZSBvdXQgb2YgbmFtZSIpOworKyAgICBkYk5hbWUudHJ1bmNh dGUoY3V0KTsKKysgICAgY3V0ID0gZGJOYW1lLmluZGV4T2YoUUNoYXIoJ18nKSk7CisrICAgIGlm IChjdXQgPj0gMCkKKysgICAgICAgIGRiTmFtZSA9IGRiTmFtZS5taWQoY3V0ICsgMSk7CisrCisr ICAgIGF1dG8gZGIgPSBRU3FsRGF0YWJhc2U6OmFkZERhdGFiYXNlKGRiTmFtZSk7CisrICAgIFFT cWxRdWVyeSBxKGRiKTsKKysKKysgICAgUVRlc3Q6Omlnbm9yZU1lc3NhZ2UoUXRXYXJuaW5nTXNn LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAiUVNxbERhdGFiYXNlUHJpdmF0ZTo6cmVtb3Zl RGF0YWJhc2U6IGNvbm5lY3Rpb24gIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAiJ3F0X3Nx bF9kZWZhdWx0X2Nvbm5lY3Rpb24nIGlzIHN0aWxsIGluIHVzZSwgYWxsICIKKysgICAgICAgICAg ICAgICAgICAgICAgICAgInF1ZXJpZXMgd2lsbCBjZWFzZSB0byB3b3JrLiIpOworKyAgICBRVGVz dDo6aWdub3JlTWVzc2FnZShRdFdhcm5pbmdNc2csCisrICAgICAgICAgICAgICAgICAgICAgICAg ICJRU3FsRGF0YWJhc2VQcml2YXRlOjphZGREYXRhYmFzZTogZHVwbGljYXRlIGNvbm5lY3Rpb24g bmFtZSAiCisrICAgICAgICAgICAgICAgICAgICAgICAgICIncXRfc3FsX2RlZmF1bHRfY29ubmVj dGlvbicsIG9sZCBjb25uZWN0aW9uIHJlbW92ZWQuIik7CisrICAgIGF1dG8gb3RoZXJEYiA9IFFT cWxEYXRhYmFzZTo6YWRkRGF0YWJhc2UoZGJOYW1lKTsKKysKKysgICAgUVRlc3Q6Omlnbm9yZU1l c3NhZ2UoUXRXYXJuaW5nTXNnLCAiUVNxbFF1ZXJ5OjpleGVjOiBjYWxsZWQgYmVmb3JlIGRyaXZl ciBoYXMgYmVlbiBzZXQgdXAiKTsKKysgICAgLy8gUVRCVUctMTAwMDM3OiBzaG91bGRuJ3QgY3Jh c2ggIQorKyAgICBRVkVSSUZZKCFxLmV4ZWMoInNlbGVjdCBzdHVmZiBmcm9tIFRoZVZvaWQiKSk7 CisrfQorKworIHZvaWQgdHN0X1FTcWxRdWVyeTo6bGFzdEluc2VydElkKCkKKyB7CisgICAgIFFG RVRDSCggUVN0cmluZywgZGJOYW1lICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8v dGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRl c3Rlci5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRl c3Rlci90c3RfcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAoraW5kZXggNGFhM2Y4ZDYwYi4u ZDIwNTBhNjFhYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rlc3RsaWIvcWFic3Ry YWN0aXRlbW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCisrKysg Yi9xdGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci90c3Rf cWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAorQEAgLTExNSw2ICsxMTUsMTAgQEAgdm9pZCB0 c3RfUUFic3RyYWN0SXRlbU1vZGVsVGVzdGVyOjpzdGFuZGFyZEl0ZW1Nb2RlbFplcm9Db2x1bW5z KCkKKyAgICAgLy8gUVRCVUctOTI4ODYKKyAgICAgbW9kZWwuaW5zZXJ0Um93cygwLCA1KTsKKyAg ICAgbW9kZWwucmVtb3ZlUm93cygxLCAyKTsKKysKKysgICAgY29uc3QgUU1vZGVsSW5kZXggcGFy ZW50SW5kZXggPSBtb2RlbC5pbmRleCgwLCAwKTsKKysgICAgbW9kZWwuaW5zZXJ0Um93cygwLCA1 LCBwYXJlbnRJbmRleCk7CisrICAgIG1vZGVsLnJlbW92ZVJvd3MoMSwgMiwgcGFyZW50SW5kZXgp OworIH0KKyAKKyB2b2lkIHRzdF9RQWJzdHJhY3RJdGVtTW9kZWxUZXN0ZXI6OnRlc3RJbnNlcnRU aHJvdWdoUHJveHkoKQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9h bGxtb2NzX2Jhc2VsaW5lX2luLmpzb24gYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvYWxs bW9jc19iYXNlbGluZV9pbi5qc29uCitpbmRleCAxMmE0YTIyYTE5Li5jZTUxOGU3OGZiIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVfaW4u anNvbgorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVf aW4uanNvbgorQEAgLTY2OCw1MCArNjY4LDYgQEAKKyAgICAgICAgICJpbnB1dEZpbGUiOiAidGFz azE5MjU1Mi5oIiwKKyAgICAgICAgICJvdXRwdXRSZXZpc2lvbiI6IDY3CisgICAgIH0sCistICAg IHsKKy0gICAgICAgICJjbGFzc2VzIjogWworLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAg ICAgImNsYXNzTmFtZSI6ICJJbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uIiwKKy0gICAg ICAgICAgICAgICAgIm9iamVjdCI6IHRydWUsCistICAgICAgICAgICAgICAgICJxdWFsaWZpZWRD bGFzc05hbWUiOiAiSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiIsCistICAgICAgICAg ICAgICAgICJzbG90cyI6IFsKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAg ICAgICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAg Im5hbWUiOiAiYSIsCistICAgICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9p ZCIKKy0gICAgICAgICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgICAgICAgICB7CistICAg ICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICJuYW1lIjogImIiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5U eXBlIjogInZvaWQiCistICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAg ICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjIiwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfSwKKy0gICAgICAg ICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1Ymxp YyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZCIsCistICAgICAgICAgICAg ICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAgICAgICAgIH0s CistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFjY2Vz cyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImUiLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiCistICAgICAgICAgICAg ICAgICAgICB9CistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICJzdXBlckNs YXNzZXMiOiBbCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAg ICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjog IlFPYmplY3QiCistICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIF0KKy0g ICAgICAgICAgICB9CistICAgICAgICBdLAorLSAgICAgICAgImlucHV0RmlsZSI6ICJ0YXNrMTg5 OTk2LmgiLAorLSAgICAgICAgIm91dHB1dFJldmlzaW9uIjogNjcKKy0gICAgfSwKKyAgICAgewor ICAgICAgICAgImNsYXNzZXMiOiBbCisgICAgICAgICAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFz ZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9tb2MucHJvIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMv bW9jL21vYy5wcm8KK2luZGV4IGMzMjRiM2E4Y2QuLjRhY2ViNzhkYzAgMTAwNjQ0CistLS0gYS9x dGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBybworKysrIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vdG9vbHMvbW9jL21vYy5wcm8KK0BAIC0xNSw3ICsxNSw3IEBAIGNyb3NzX2NvbXBpbGU6IERF RklORVMgKz0gTU9DX0NST1NTX0NPTVBJTEVECisgSEVBREVSUyArPSB1c2luZy1uYW1lc3BhY2Vz Lmggbm8ta2V5d29yZHMuaCB0YXNrODc4ODMuaCBjLWNvbW1lbnRzLmggYmFja3NsYXNoLW5ld2xp bmVzLmggb2xkc3R5bGUtY2FzdHMuaCBcCisgICAgICAgICAgICBzbG90cy13aXRoLXZvaWQtdGVt cGxhdGUuaCBxaW52b2thYmxlLmggbmFtZXNwYWNlZC1mbGFncy5oIHRyaWdyYXBocy5oIFwKKyAg ICAgICAgICAgIGVzY2FwZXMtaW4tc3RyaW5nLWxpdGVyYWxzLmggY3N0eWxlLWVudW1zLmggcXBy aXZhdGVzbG90cy5oIGdhZGdldHdpdGhub2VudW1zLmggXAorLSAgICAgICAgICAgZGlyLWluLWlu Y2x1ZGUtcGF0aC5oIHNpbmdsZV9mdW5jdGlvbl9rZXl3b3JkLmggdGFzazE5MjU1Mi5oIHRhc2sx ODk5OTYuaCBcCisrICAgICAgICAgICBkaXItaW4taW5jbHVkZS1wYXRoLmggc2luZ2xlX2Z1bmN0 aW9uX2tleXdvcmQuaCB0YXNrMTkyNTUyLmggXAorICAgICAgICAgICAgdGFzazIzNDkwOS5oIHRh c2syNDAzNjguaCBwdXJlLXZpcnR1YWwtc2lnbmFscy5oIGN4eDExLWVudW1zLmggXAorICAgICAg ICAgICAgY3h4MTEtZmluYWwtY2xhc3Nlcy5oIFwKKyAgICAgICAgICAgIGN4eDExLWV4cGxpY2l0 LW92ZXJyaWRlLWNvbnRyb2wuaCBcCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9v bHMvbW9jL3Rhc2sxODk5OTYuaCBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90YXNrMTg5 OTk2LmgKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggZjk0YTA1MWIzYS4uMDAwMDAw MDAwMAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3Rhc2sxODk5OTYuaAorKysr IC9kZXYvbnVsbAorQEAgLTEsNDcgKzAsMCBAQAorLS8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistKioK Ky0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorLSoqIENvbnRhY3Q6 IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKy0qKgorLSoqIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorLSoqCistKiogJFFUX0JFR0lO X0xJQ0VOU0U6R1BMLUVYQ0VQVCQKKy0qKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKy0qKiBM aWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhp cyBmaWxlIGluCistKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdy ZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCistKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHks IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCistKiogYSB3cml0dGVu IGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcg dGVybXMKKy0qKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29u ZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKy0qKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9y bSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorLSoqCistKiogR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgVXNhZ2UKKy0qKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJl IHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKy0qKiBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKy0qKiBGb3Vu ZGF0aW9uIHdpdGggZXhjZXB0aW9ucyBhcyBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5H UEwzLUVYQ0VQVAorLSoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQ bGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKy0qKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCistKiogYmUgbWV0 OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKy0qKgorLSoqICRR VF9FTkRfTElDRU5TRSQKKy0qKgorLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistLy8gaW5saW5lIGZ1 bmN0aW9ucyBjYW4gaGF2ZSB0aHJvdyBkZWNsYXJhdGlvbnMKKy0KKy0jaWZuZGVmIFRBU0sxODk5 OTZfSAorLSNkZWZpbmUgVEFTSzE4OTk5Nl9ICistCistI2luY2x1ZGUgPFFPYmplY3Q+CistCist Y2xhc3MgSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiA6IHB1YmxpYyBRT2JqZWN0Cist eworLSAgICBRX09CSkVDVAorLQorLXB1YmxpYyBzbG90czoKKy0gICAgdm9pZCBhKCkgdGhyb3co KSB7IH0KKy0gICAgdm9pZCBiKCkgY29uc3QgdGhyb3coKSB7IH0KKy0gICAgdm9pZCBjKCkgdGhy b3coKTsKKy0gICAgdm9pZCBkKCkgdGhyb3coaW50KSB7IH0KKy0gICAgdm9pZCBlKCkgY29uc3Qg dGhyb3coaW50LGRvdWJsZSkgeyB9CistfTsKKy0KKy0jZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJh c2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by90 b29scy9tb2MvdHN0X21vYy5jcHAKK2luZGV4IGM3MTZhZWFkMjEuLjE1ZGQ5ZTQxZTUgMTAwNjQ0 CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAKKysrKyBiL3F0 YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90c3RfbW9jLmNwcAorQEAgLTYzMSw3ICs2MzEsNiBA QCBwdWJsaWM6CisgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBpbml0VGVzdENhc2UoKTsKKyAK Ky0gICAgdm9pZCBzbG90V2l0aEV4Y2VwdGlvbigpIHRocm93KE15U3RydWN0KTsKKyAgICAgdm9p ZCBkb250U3RyaXBOYW1lc3BhY2VzKCk7CisgICAgIHZvaWQgb2xkU3R5bGVDYXN0cygpOworICAg ICB2b2lkIHdhcm5PbkV4dHJhU2lnbmFsU2xvdFF1YWxpZmlhY3Rpb24oKTsKK0BAIC02NzMsNyAr NjcyLDYgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB0ZW1wbGF0ZUd0R3QoKTsKKyAgICAg dm9pZCBxcHJpdmF0ZXNsb3RzKCk7CisgICAgIHZvaWQgcXByaXZhdGVwcm9wZXJ0aWVzKCk7Cist ICAgIHZvaWQgaW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbigpOworICAgICB2b2lkIHdh cm5PblByb3BlcnR5V2l0aG91dFJFQUQoKTsKKyAgICAgdm9pZCBjb25zdHJ1Y3RvcnMoKTsKKyAg ICAgdm9pZCB0eXBlbmFtZVdpdGhVbnNpZ25lZCgpOworQEAgLTc4NCwxMiArNzgyLDYgQEAgdm9p ZCB0c3RfTW9jOjppbml0VGVzdENhc2UoKQorICNlbmRpZgorIH0KKyAKKy12b2lkIHRzdF9Nb2M6 OnNsb3RXaXRoRXhjZXB0aW9uKCkgdGhyb3coTXlTdHJ1Y3QpCisteworLSAgICAvLyBiZSBoYXBw eQorLSAgICBRVkVSSUZZKHRydWUpOworLX0KKy0KKyB2b2lkIHRzdF9Nb2M6OmRvbnRTdHJpcE5h bWVzcGFjZXMoKQorIHsKKyAgICAgU2VuZGVyIHNlbmRlcjsKK0BAIC04MjQsNyArODE2LDcgQEAg dm9pZCB0c3RfTW9jOjpvbGRTdHlsZUNhc3RzKCkKKyAKKyAgICAgUVN0cmluZ0xpc3QgYXJnczsK KyAgICAgYXJncyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1Xb2xkLXN0eWxlLWNhc3Qi IDw8ICItSSIgPDwgIi4iCistICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICIt byIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxMSIgPDwgIi0iOworKyAg ICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8 ICItZlBJQyIgPDwgIi1zdGQ9YysrMXoiIDw8ICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwg YXJncyk7CisgICAgIFFWRVJJRlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53 cml0ZShtb2NPdXQpOworQEAgLTg5NCw3ICs4ODYsNyBAQCB2b2lkIHRzdF9Nb2M6OmlucHV0Rmls ZU5hbWVXaXRoRG90c0J1dE5vRXh0ZW5zaW9uKCkKKyAKKyAgICAgUVN0cmluZ0xpc3QgYXJnczsK KyAgICAgYXJncyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1JIiA8PCAiLi4iCistICAg ICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwg Ii1mUElDIiA8PCAiLXN0ZD1jKysxMSIgPDwgIi0iOworKyAgICAgICAgIDw8ICItSSIgPDwgcXRJ bmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9Yysr MXoiIDw8ICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwgYXJncyk7CisgICAgIFFWRVJJRlko cHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53cml0ZShtb2NPdXQpOworQEAgLTEx NzQsNyArMTE2Niw3IEBAIHZvaWQgdHN0X01vYzo6aWdub3JlT3B0aW9uQ2xhc2hlcygpCisgICAg IFFTdHJpbmdMaXN0IGdjY0FyZ3M7CisgICAgIGdjY0FyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJj KysiIDw8ICItSSIgPDwgIi4uIgorICAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8 PCAiLUkiIDw8IGluY2x1ZGVEaXIgPDwgIi1vIiA8PCAiL2Rldi9udWxsIgorLSAgICAgICAgIDw8 ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8ICAiLSI7CisrICAgICAgICAgPDwgIi1mUElDIiA8 PCAiLXN0ZD1jKysxeiIgPDwgICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwgZ2NjQXJncyk7 CisgICAgIFFWRVJJRlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53cml0ZSht b2NPdXQpOworQEAgLTE1OTMsMjEgKzE1ODUsNiBAQCB2b2lkIHRzdF9Nb2M6OnFwcml2YXRlcHJv cGVydGllcygpCisgCisgfQorIAorLSNpbmNsdWRlICJ0YXNrMTg5OTk2LmgiCistCistdm9pZCBJ bmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uOjpjKCkgdGhyb3coKSB7fQorLQorLXZvaWQg dHN0X01vYzo6aW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbigpCisteworLSAgICBJbmxp bmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uIHRzdDsKKy0gICAgY29uc3QgUU1ldGFPYmplY3Qg Km1vYmogPSB0c3QubWV0YU9iamVjdCgpOworLSAgICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90 KCJhKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3QoImIoKSIpICE9 IC0xKTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgiYygpIikgIT0gLTEpOworLSAg ICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90KCJkKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlko bW9iai0+aW5kZXhPZlNsb3QoImUoKSIpICE9IC0xKTsKKy19CistCisgdm9pZCB0c3RfTW9jOjp3 YXJuT25Qcm9wZXJ0eVdpdGhvdXRSRUFEKCkKKyB7CisgI2lmZGVmIE1PQ19DUk9TU19DT01QSUxF RAorQEAgLTE4NjksNyArMTg0Niw3IEBAIHZvaWQgdHN0X01vYzo6bm90aWZ5RXJyb3IoKQorIAor ICAgICBRU3RyaW5nTGlzdCBhcmdzOworICAgICBhcmdzIDw8ICItYyIgPDwgIi14IiA8PCAiYysr IiA8PCAiLUkiIDw8ICIuIgorLSAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAi LW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8ICItIjsKKysg ICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8 PCAiLWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8PCAiLSI7CisgICAgIHByb2Muc3RhcnQoImdjYyIs IGFyZ3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7CisgICAgIHByb2Mu d3JpdGUobW9jT3V0KTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0 ZW12aWV3cy9xaGVhZGVydmlldy90c3RfcWhlYWRlcnZpZXcuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3LmNwcAoraW5k ZXggYzM1NWVlOTY2NS4uODhjMDlkZThlMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRv L3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9xaGVhZGVydmlldy5jcHAKKysrKyBi L3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9xaGVh ZGVydmlldy5jcHAKK0BAIC0yNTEsNiArMjUxLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9p ZCB0ZXN0UmVzZXRDYWNoZWRTaXplSGludCgpOworICAgICB2b2lkIHN0YXR1c1RpcHMoKTsKKyAg ICAgdm9pZCB0ZXN0UmVtb3ZpbmdDb2x1bW5zVmlhTGF5b3V0Q2hhbmdlZCgpOworKyAgICB2b2lk IHRlc3RNb2RlbE1vdmluZ0NvbHVtbnMoKTsKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgc2V0 dXBUZXN0RGF0YShib29sIHVzZV9yZXNldF9tb2RlbCA9IGZhbHNlKTsKK0BAIC0zNjAsNiArMzYx LDEyIEBAIHB1YmxpYzoKKyAgICAgICAgIGVuZFJlbW92ZUNvbHVtbnMoKTsKKyAgICAgfQorIAor KyAgICB2b2lkIG1vdmVDb2x1bW4oaW50IGZyb20sIGludCB0bykKKysgICAgeworKyAgICAgICAg YmVnaW5Nb3ZlQ29sdW1ucyhRTW9kZWxJbmRleCgpLCBmcm9tLCBmcm9tLCBRTW9kZWxJbmRleCgp LCB0byk7CisrICAgICAgICBlbmRNb3ZlQ29sdW1ucygpOworKyAgICB9CisrCisgICAgIHZvaWQg Y2xlYW51cCgpCisgICAgIHsKKyAgICAgICAgIGVtaXQgbGF5b3V0QWJvdXRUb0JlQ2hhbmdlZCgp OworQEAgLTM2MjcsNSArMzYzNCwxOCBAQCB2b2lkIHRzdF9RSGVhZGVyVmlldzo6dGVzdFJlbW92 aW5nQ29sdW1uc1ZpYUxheW91dENoYW5nZWQoKQorICAgICAvLyBUaGUgbWFpbiBwb2ludCBvZiB0 aGlzIHRlc3QgaXMgdGhhdCB0aGUgc2VjdGlvbi1zaXplIHJlc3RvcmluZyBjb2RlIGRpZG4ndCBn byBvdXQgb2YgYm91bmRzLgorIH0KKyAKKyt2b2lkIHRzdF9RSGVhZGVyVmlldzo6dGVzdE1vZGVs TW92aW5nQ29sdW1ucygpCisreworKyAgICBRdFRlc3RNb2RlbCBtb2RlbCgxMCwgMTApOworKyAg ICBRSGVhZGVyVmlldyBodihRdDo6SG9yaXpvbnRhbCk7CisrICAgIGh2LnNldE1vZGVsKCZtb2Rl bCk7CisrICAgIGh2LnJlc2l6ZVNlY3Rpb25zKFFIZWFkZXJWaWV3OjpSZXNpemVUb0NvbnRlbnRz KTsKKysgICAgaHYuc2hvdygpOworKworKyAgICBRUGVyc2lzdGVudE1vZGVsSW5kZXggaW5kZXgz ID0gbW9kZWwuaW5kZXgoMCwgMyk7CisrICAgIG1vZGVsLm1vdmVDb2x1bW4oMywgMSk7CisrICAg IFFDT01QQVJFKGluZGV4My5jb2x1bW4oKSwgMSk7CisrfQorKworIFFURVNUX01BSU4odHN0X1FI ZWFkZXJWaWV3KQorICNpbmNsdWRlICJ0c3RfcWhlYWRlcnZpZXcubW9jIgorZGlmZiAtLWdpdCBh L3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcvdHN0X3F0YWJs ZXZpZXcuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmll dy90c3RfcXRhYmxldmlldy5jcHAKK2luZGV4IDc2MTM1N2IyNTIuLjA2YmI3MDYwNzQgMTAwNjQ0 CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3L3Rz dF9xdGFibGV2aWV3LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmll d3MvcXRhYmxldmlldy90c3RfcXRhYmxldmlldy5jcHAKK0BAIC0zOTcsNiArMzk3LDcgQEAgcHJp dmF0ZSBzbG90czoKKyAgICAgdm9pZCBjaGVja0hlYWRlck1pblNpemUoKTsKKyAKKyAgICAgdm9p ZCByZXNpemVUb0NvbnRlbnRzKCk7CisrICAgIHZvaWQgcmVzaXplVG9Db250ZW50c1NwYW5zKCk7 CisgCisgICAgIHZvaWQgdGFiRm9jdXMoKTsKKyAgICAgdm9pZCBiaWdNb2RlbCgpOworQEAgLTM3 MjEsNiArMzcyMiw3MCBAQCB2b2lkIHRzdF9RVGFibGVWaWV3OjpyZXNpemVUb0NvbnRlbnRzKCkK KyAKKyB9CisgCisrCisrY2xhc3MgU3Bhbk1vZGVsIDogcHVibGljIFFBYnN0cmFjdFRhYmxlTW9k ZWwKKyt7CisrcHVibGljOgorKyAgICBTcGFuTW9kZWwoYm9vbCBzZWN0aW9uc01vdmVkKQorKyAg ICAgICAgOiBfc2VjdGlvbnNNb3ZlZChzZWN0aW9uc01vdmVkKQorKyAgICB7fQorKyAgICBpbnQg Y29sdW1uQ291bnQoY29uc3QgUU1vZGVsSW5kZXggJiA9IHt9KSBjb25zdCBvdmVycmlkZSB7IHJl dHVybiAyOyB9CisrICAgIGludCByb3dDb3VudChjb25zdCBRTW9kZWxJbmRleCAmID0ge30pIGNv bnN0IG92ZXJyaWRlIHsgcmV0dXJuIDE7IH0KKysgICAgUVZhcmlhbnQgZGF0YShjb25zdCBRTW9k ZWxJbmRleCAmaWR4LCBpbnQgcm9sZSA9IFF0OjpEaXNwbGF5Um9sZSkgY29uc3Qgb3ZlcnJpZGUK KysgICAgeworKyAgICAgICAgaWYgKHJvbGUgIT0gUXQ6OkRpc3BsYXlSb2xlKQorKyAgICAgICAg ICAgIHJldHVybiBRVmFyaWFudCgpOworKyAgICAgICAgY29uc3QgaW50IGNvbCA9IF9zZWN0aW9u c01vdmVkID8gMSAtIGlkeC5jb2x1bW4oKSA6IGlkeC5jb2x1bW4oKTsKKysgICAgICAgIGlmIChj b2wgPT0gMCkKKysgICAgICAgICAgICByZXR1cm4gIkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0 LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNp ZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiI7CisrICAgICAgICByZXR1 cm4gUVZhcmlhbnQoKTsKKysgICAgfQorK3ByaXZhdGU6CisrICAgIGJvb2wgX3NlY3Rpb25zTW92 ZWQ7CisrfTsKKysKKysKKyt2b2lkIHRzdF9RVGFibGVWaWV3OjpyZXNpemVUb0NvbnRlbnRzU3Bh bnMoKQorK3sKKysgICAgU3Bhbk1vZGVsIG1vZGVsMShmYWxzZSk7CisrICAgIFNwYW5Nb2RlbCBt b2RlbDIodHJ1ZSk7CisrICAgIFFUYWJsZVZpZXcgdmlldzEsIHZpZXcyLCB2aWV3MzsKKysgICAg dmlldzEuc2V0TW9kZWwoJm1vZGVsMSk7CisrICAgIHZpZXcyLnNldE1vZGVsKCZtb2RlbDIpOwor KyAgICB2aWV3Mi5ob3Jpem9udGFsSGVhZGVyKCktPm1vdmVTZWN0aW9uKDAsIDEpOworKyAgICB2 aWV3My5zZXRNb2RlbCgmbW9kZWwxKTsKKysKKysgICAgdmlldzEuc2V0U3BhbigwLCAwLCAxLCAy KTsKKysgICAgdmlldzIuc2V0U3BhbigwLCAxLCAxLCAyKTsKKysgICAgdmlldzEuc2hvdygpOwor KyAgICB2aWV3Mi5zaG93KCk7CisrICAgIHZpZXczLnNob3coKTsKKysgICAgUVZFUklGWShRVGVz dDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3MSkpOworKyAgICBRVkVSSUZZKFFUZXN0Ojpx V2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXcyKSk7CisrICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0 Rm9yV2luZG93RXhwb3NlZCgmdmlldzMpKTsKKysgICAgdmlldzEuc2V0Q29sdW1uV2lkdGgoMCwg MTAwKTsKKysgICAgdmlldzEuc2V0Q29sdW1uV2lkdGgoMSwgMTAwKTsKKysgICAgdmlldzIuc2V0 Q29sdW1uV2lkdGgoMCwgMTAwKTsKKysgICAgdmlldzIuc2V0Q29sdW1uV2lkdGgoMSwgMTAwKTsK KysgICAgdmlldzMuc2V0Q29sdW1uV2lkdGgoMCwgMjAwKTsKKysKKysgICAgdmlldzEucmVzaXpl Um93VG9Db250ZW50cygwKTsKKysgICAgdmlldzIucmVzaXplUm93VG9Db250ZW50cygwKTsKKysg ICAgdmlldzMucmVzaXplUm93VG9Db250ZW50cygwKTsKKysgICAgUUNPTVBBUkUodmlldzEucm93 SGVpZ2h0KDApLCB2aWV3My5yb3dIZWlnaHQoMCkpOworKyAgICBRQ09NUEFSRSh2aWV3Mi5yb3dI ZWlnaHQoMCksIHZpZXczLnJvd0hlaWdodCgwKSk7CisrCisrICAgIHZpZXczLnJlc2l6ZUNvbHVt blRvQ29udGVudHMoMCk7CisrICAgIHZpZXczLnJlc2l6ZVJvd1RvQ29udGVudHMoMCk7CisrICAg IC8vIGhlaWdodCBzaG91bGQgYmUgb25seSAxIHRleHQgbGluZSBmb3IgZWFzeSB0ZXN0aW5nCisr ICAgIHZpZXcxLnNldFJvd0hlaWdodCgwLCB2aWV3My52ZXJ0aWNhbEhlYWRlcigpLT5zZWN0aW9u U2l6ZSgwKSk7CisrICAgIHZpZXcyLnNldFJvd0hlaWdodCgwLCB2aWV3My52ZXJ0aWNhbEhlYWRl cigpLT5zZWN0aW9uU2l6ZSgwKSk7CisrICAgIHZpZXcxLnJlc2l6ZUNvbHVtblRvQ29udGVudHMo MCk7CisrICAgIHZpZXcyLnJlc2l6ZUNvbHVtblRvQ29udGVudHMoMSk7CisrICAgIFFDT01QQVJF KHZpZXcxLmNvbHVtbldpZHRoKDApLCB2aWV3My5jb2x1bW5XaWR0aCgwKSAtIHZpZXcxLmNvbHVt bldpZHRoKDEpKTsKKysgICAgUUNPTVBBUkUodmlldzIuY29sdW1uV2lkdGgoMCksIHZpZXczLmNv bHVtbldpZHRoKDApIC0gdmlldzIuY29sdW1uV2lkdGgoMSkpOworK30KKysKKyBRVF9CRUdJTl9O QU1FU1BBQ0UKKyBleHRlcm4gYm9vbCBRX1dJREdFVFNfRVhQT1JUIHF0X3RhYl9hbGxfd2lkZ2V0 cygpOyAvLyBxYXBwbGljYXRpb24uY3BwCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBh L3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90c3RfcWFwcGxp Y2F0aW9uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlv bi90c3RfcWFwcGxpY2F0aW9uLmNwcAoraW5kZXggYTNiOGVmNzhkOC4uNDk1NWNlYmQ1ZCAxMDA2 NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90 c3RfcWFwcGxpY2F0aW9uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9rZXJu ZWwvcWFwcGxpY2F0aW9uL3RzdF9xYXBwbGljYXRpb24uY3BwCitAQCAtMTQ5OCw3ICsxNDk4LDcg QEAgdm9pZCB0c3RfUUFwcGxpY2F0aW9uOjpkZXNrdG9wU2V0dGluZ3NBd2FyZSgpCisgICAgIGVu dmlyb25tZW50ICs9IFFMYXRpbjFTdHJpbmcoIlFUX01BQ19ESVNBQkxFX0ZPUkVHUk9VTkRfQVBQ TElDQVRJT05fVFJBTlNGT1JNPTEiKTsKKyAgICAgdGVzdFByb2Nlc3Muc2V0RW52aXJvbm1lbnQo ZW52aXJvbm1lbnQpOworICNlbmRpZgorLSAgICB0ZXN0UHJvY2Vzcy5zdGFydCgiZGVza3RvcHNl dHRpbmdzYXdhcmVfaGVscGVyIik7CisrICAgIHRlc3RQcm9jZXNzLnN0YXJ0KCIuL2Rlc2t0b3Bz ZXR0aW5nc2F3YXJlX2hlbHBlciIpOworICAgICBRVkVSSUZZMih0ZXN0UHJvY2Vzcy53YWl0Rm9y U3RhcnRlZCgpLAorICAgICAgICAgICAgICBxUHJpbnRhYmxlKFFTdHJpbmc6OmZyb21MYXRpbjEo IkNhbm5vdCBzdGFydCAnZGVza3RvcHNldHRpbmdzYXdhcmVfaGVscGVyJzogJTEiKS5hcmcodGVz dFByb2Nlc3MuZXJyb3JTdHJpbmcoKSkpKTsKKyAgICAgUVZFUklGWSh0ZXN0UHJvY2Vzcy53YWl0 Rm9yRmluaXNoZWQoMTAwMDApKTsKK0BAIC0yNDUyLDcgKzI0NTIsNyBAQCB2b2lkIHRzdF9RQXBw bGljYXRpb246OnF0YnVnXzEyNjczKCkKKyAjaWYgUVRfQ09ORklHKHByb2Nlc3MpCisgICAgIFFQ cm9jZXNzIHRlc3RQcm9jZXNzOworICAgICBRU3RyaW5nTGlzdCBhcmd1bWVudHM7CistICAgIHRl c3RQcm9jZXNzLnN0YXJ0KCJtb2RhbF9oZWxwZXIiLCBhcmd1bWVudHMpOworKyAgICB0ZXN0UHJv Y2Vzcy5zdGFydCgiLi9tb2RhbF9oZWxwZXIiLCBhcmd1bWVudHMpOworICAgICBRVkVSSUZZMih0 ZXN0UHJvY2Vzcy53YWl0Rm9yU3RhcnRlZCgpLAorICAgICAgICAgICAgICBxUHJpbnRhYmxlKFFT dHJpbmc6OmZyb21MYXRpbjEoIkNhbm5vdCBzdGFydCAnbW9kYWxfaGVscGVyJzogJTEiKS5hcmco dGVzdFByb2Nlc3MuZXJyb3JTdHJpbmcoKSkpKTsKKyAgICAgUVZFUklGWSh0ZXN0UHJvY2Vzcy53 YWl0Rm9yRmluaXNoZWQoMjAwMDApKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0b24uY3BwIGIv cXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi90c3RfcWFi c3RyYWN0YnV0dG9uLmNwcAoraW5kZXggZWIxMDhhNDBkZS4uZGNhNTUyOGMxYiAxMDA2NDQKKy0t LSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24vdHN0 X3FhYnN0cmFjdGJ1dHRvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lk Z2V0cy9xYWJzdHJhY3RidXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAKK0BAIC00MSw2ICs0 MSw3IEBACisgCisgI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKyAjaW5j bHVkZSA8cXBhL3FwbGF0Zm9ybWludGVncmF0aW9uLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZv cm10aGVtZS5oPgorIAorIGNsYXNzIHRzdF9RQWJzdHJhY3RCdXR0b24gOiBwdWJsaWMgUU9iamVj dAorIHsKK0BAIC03Niw2ICs3Nyw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQga2V5TmF2 aWdhdGlvbigpOworICNlbmRpZgorIAorKyAgICB2b2lkIGJ1dHRvblByZXNzS2V5cygpOworKwor IHByb3RlY3RlZCBzbG90czoKKyAgICAgdm9pZCBvbkNsaWNrZWQoKTsKKyAgICAgdm9pZCBvblRv Z2dsZWQoIGJvb2wgb24gKTsKK0BAIC0yNjksNyArMjcyLDEzIEBAIHZvaWQgdHN0X1FBYnN0cmFj dEJ1dHRvbjo6c2V0QXV0b1JlcGVhdCgpCisgICAgICAgICBRQ09NUEFSRShwcmVzc19jb3VudCwg Y2xpY2tfY291bnQpOworICAgICAgICAgUVZFUklGWShjbGlja19jb3VudCA+IDEpOworICAgICAg ICAgYnJlYWs7CistICAgIGNhc2UgNDoKKysgICAgY2FzZSA0OiB7CisrICAgICAgICBjb25zdCBh dXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhl bWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhl bWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOwor KyAgICAgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgewor KyAgICAgICAgICAgIFFTS0lQKCJwbGF0Zm9ybSB0aGVtZSBoYXMgS2V5X0VudGVyIGluIEJ1dHRv blByZXNzS2V5cyIpOworKyAgICAgICAgfQorICAgICAgICAgLy8gY2hlY2sgdGhhdCBwcmVzc2lu ZyBFTlRFUiBoYXMgbm8gZWZmZWN0IHdoZW4gYXV0b3JlcGVhdCBpcyBmYWxzZQorICAgICAgICAg dGVzdFdpZGdldC0+c2V0RG93biggZmFsc2UgKTsKKyAgICAgICAgIHRlc3RXaWRnZXQtPnNldEF1 dG9SZXBlYXQoIGZhbHNlICk7CitAQCAtMjg2LDcgKzI5NSwxNCBAQCB2b2lkIHRzdF9RQWJzdHJh Y3RCdXR0b246OnNldEF1dG9SZXBlYXQoKQorIAorICAgICAgICAgUVZFUklGWSggY2xpY2tfY291 bnQgPT0gMCApOworICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgNToKKysgICAgfQorKyAgICBj YXNlIDU6IHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxp Y2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblBy ZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu dmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNv bnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICAgICAgUVNLSVAoInBsYXRmb3JtIHRo ZW1lIGhhcyBLZXlfRW50ZXIgaW4gQnV0dG9uUHJlc3NLZXlzIik7CisrICAgICAgICB9CisgICAg ICAgICAvLyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBubyBlZmZlY3Qgd2hlbiBhdXRv cmVwZWF0IGlzIHRydWUKKyAgICAgICAgIHRlc3RXaWRnZXQtPnNldERvd24oIGZhbHNlICk7Cisg ICAgICAgICB0ZXN0V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCB0cnVlICk7CitAQCAtMzA0LDYgKzMy MCw3IEBAIHZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6c2V0QXV0b1JlcGVhdCgpCisgCisgICAg ICAgICBRVkVSSUZZKCBjbGlja19jb3VudCA9PSAwICk7CisgICAgICAgICBicmVhazsKKysgICAg fQorICAgICBjYXNlIDY6CisgICAgICAgICAvLyB2ZXJpZnkgYXV0b3JlcGVhdCBpcyBvZmYgYnkg ZGVmYXVsdC4KKyAgICAgICAgIE15QnV0dG9uIHRtcCggMCk7CitAQCAtNjUxLDUgKzY2OCwxNiBA QCB2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OmtleU5hdmlnYXRpb24oKQorIH0KKyAjZW5kaWYK KyAKKyt2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OmJ1dHRvblByZXNzS2V5cygpCisreworKyAg ICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBs YXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsK KysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBidXR0b25QcmVzc0tleXMubGVuZ3RoKCk7ICsraSkg eworKyAgICAgICAgUVRlc3Q6OmtleUNsaWNrKHRlc3RXaWRnZXQsIGJ1dHRvblByZXNzS2V5c1tp XSk7CisrICAgICAgICBRQ09NUEFSRShjbGlja19jb3VudCwgaSArIDEpOworKyAgICB9CisrfQor KworIFFURVNUX01BSU4odHN0X1FBYnN0cmFjdEJ1dHRvbikKKyAjaW5jbHVkZSAidHN0X3FhYnN0 cmFjdGJ1dHRvbi5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93 aWRnZXRzL3Fjb21ib2JveC90c3RfcWNvbWJvYm94LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMvd2lkZ2V0cy9xY29tYm9ib3gvdHN0X3Fjb21ib2JveC5jcHAKK2luZGV4IDMyNDM3MDUw ZjUuLjQ2YjVhZjZkNjMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dp ZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9ib3guY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0 by93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9ib3guY3BwCitAQCAtMTY4LDYg KzE2OCw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgY2hlY2tNZW51SXRlbVBvc1doZW5T dHlsZVNoZWV0SXNTZXQoKTsKKyAgICAgdm9pZCBjaGVja0VtYmVkZGVkTGluZUVkaXRXaGVuU3R5 bGVTaGVldElzU2V0KCk7CisgICAgIHZvaWQgcHJvcGFnYXRlU3R5bGVDaGFuZ2VzKCk7CisrICAg IHZvaWQgYnV0dG9uUHJlc3NLZXlzKCk7CisgCisgcHJpdmF0ZToKKyAgICAgUGxhdGZvcm1JbnB1 dENvbnRleHQgbV9wbGF0Zm9ybUlucHV0Q29udGV4dDsKK0BAIC0xNjgyLDYgKzE2ODMsMTYgQEAg dm9pZCB0c3RfUUNvbWJvQm94OjpzZXRNb2RlbCgpCisgICAgIFFDT01QQVJFKGJveC5yb290TW9k ZWxJbmRleCgpLCByb290TW9kZWxJbmRleCk7CisgICAgIGJveC5zZXRNb2RlbChib3gubW9kZWwo KSk7CisgICAgIFFDT01QQVJFKGJveC5yb290TW9kZWxJbmRleCgpLCByb290TW9kZWxJbmRleCk7 CisrCisrICAgIC8vIGNoZWNrIHRoYXQgc2V0dGluZyB0aGUgc2FtZSBtb2RlbCBhcyB0aGUgY29t cGxldGVyJ3MgZG9lc24ndCBjcmFzaAorKyAgICBRQ29tcGxldGVyICpjb21wbGV0ZXIgPSBuZXcg UUNvbXBsZXRlcigmYm94KTsKKysgICAgYm94LnNldEVkaXRhYmxlKHRydWUpOworKyAgICBib3gu c2V0Q29tcGxldGVyKGNvbXBsZXRlcik7CisrICAgIGF1dG8gKmxpc3RNb2RlbCA9IG5ldyBRU3Ry aW5nTGlzdE1vZGVsKHsgIm9uZSIsICJ0d28iIH0sIGNvbXBsZXRlcik7CisrICAgIGNvbXBsZXRl ci0+c2V0TW9kZWwobGlzdE1vZGVsKTsKKysgICAgUUNPTVBBUkUobGlzdE1vZGVsLT5yb3dDb3Vu dCgpLCAyKTsgLy8gbWFrZSBzdXJlIGl0IHdhc24ndCBkZWxldGVkCisrICAgIGJveC5zZXRNb2Rl bChsaXN0TW9kZWwpOworKyAgICBRQ09NUEFSRShsaXN0TW9kZWwtPnJvd0NvdW50KCksIDIpOyAv LyBtYWtlIHN1cmUgaXQgd2Fzbid0IGRlbGV0ZWQKKyB9CisgCisgdm9pZCB0c3RfUUNvbWJvQm94 OjpzZXRDdXN0b21Nb2RlbEFuZFZpZXcoKQorQEAgLTM2MzIsNSArMzY0MywyNCBAQCB2b2lkIHRz dF9RQ29tYm9Cb3g6OnByb3BhZ2F0ZVN0eWxlQ2hhbmdlcygpCisgICAgIFFWRVJJRlkoZnJhbWVT dHlsZS5pbnF1aXJlZCk7CisgfQorIAorK3ZvaWQgdHN0X1FDb21ib0JveDo6YnV0dG9uUHJlc3NL ZXlzKCkKKyt7CisrICAgIFFDb21ib0JveCBjb21ib0JveDsKKysgICAgY29tYm9Cb3guc2V0RWRp dGFibGUoZmFsc2UpOworKyAgICBjb21ib0JveC5hZGRJdGVtKFFTdHJpbmc6Om51bWJlcigxKSk7 CisrICAgIGNvbWJvQm94LmFkZEl0ZW0oUVN0cmluZzo6bnVtYmVyKDIpKTsKKysgICAgY29uc3Qg YXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRo ZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVI aW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgYnV0dG9uUHJlc3NLZXlzLmxlbmd0aCgpOyArK2kpIHsKKysgICAg ICAgIFFUZXN0OjprZXlDbGljaygmY29tYm9Cb3gsIGJ1dHRvblByZXNzS2V5c1tpXSk7CisrICAg ICAgICAvLyBPbiBzb21lIHBsYXRmb3JtcywgYSB3aW5kb3cgd2lsbCBub3QgYmUgaW1tZWRpYXRl bHkgdmlzaWJsZSwKKysgICAgICAgIC8vIGJ1dCB0YWtlIHNvbWUgZXZlbnQtbG9vcCBpdGVyYXRp b25zIHRvIGNvbXBsZXRlLgorKyAgICAgICAgLy8gVXNpbmcgUVRSWV9WRVJJRlkgdG8gZGVhbCB3 aXRoIHRoYXQuCisrICAgICAgICBRVFJZX1ZFUklGWShjb21ib0JveC52aWV3KCktPmlzVmlzaWJs ZSgpKTsKKysgICAgICAgIGNvbWJvQm94LmhpZGVQb3B1cCgpOworKyAgICB9CisrfQorKworIFFU RVNUX01BSU4odHN0X1FDb21ib0JveCkKKyAjaW5jbHVkZSAidHN0X3Fjb21ib2JveC5tb2MiCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlu a2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJvIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0 cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJvCitpbmRl eCBiZTNjZmNkMTA0Li5jMjI4ZmRmY2NhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJv CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0 dG9uL3Fjb21tYW5kbGlua2J1dHRvbi5wcm8KK0BAIC0xLDYgKzEsNiBAQAorIENPTkZJRyArPSB0 ZXN0Y2FzZQorIFRBUkdFVCA9IHRzdF9xY29tbWFuZGxpbmtidXR0b24KKy1RVCArPSB3aWRnZXRz IHRlc3RsaWIKKytRVCArPSB3aWRnZXRzIHRlc3RsaWIgZ3VpLXByaXZhdGUKKyBTT1VSQ0VTICAr PSB0c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcAorIAorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vdHN0X3Fjb21tYW5k bGlua2J1dHRvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1h bmRsaW5rYnV0dG9uL3RzdF9xY29tbWFuZGxpbmtidXR0b24uY3BwCitpbmRleCAwMDQ0ZDMzYzY2 Li40Y2YwNjI5NmU0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRn ZXRzL3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcAorKysrIGIv cXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi90c3Rf cWNvbW1hbmRsaW5rYnV0dG9uLmNwcAorQEAgLTQwLDYgKzQwLDkgQEAKKyAjaW5jbHVkZSA8UUdy aWRMYXlvdXQ+CisgI2luY2x1ZGUgPFFQYWludGVyPgorIAorKyNpbmNsdWRlIDxwcml2YXRlL3Fn dWlhcHBsaWNhdGlvbl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorKwor IGNsYXNzIHRzdF9RQ29tbWFuZExpbmtCdXR0b24gOiBwdWJsaWMgUU9iamVjdAorIHsKKyAgICAg UV9PQkpFQ1QKK0BAIC0yMjMsNiArMjI2LDEzIEBAIHZvaWQgdHN0X1FDb21tYW5kTGlua0J1dHRv bjo6c2V0QXV0b1JlcGVhdCgpCisgICAgIC8vIGNoZWNrIHRoYXQgcHJlc3NpbmcgRU5URVIgaGFz IG5vIGVmZmVjdAorICAgICByZXNldENvdW50ZXJzKCk7CisgICAgIHRlc3RXaWRnZXQtPnNldERv d24oIGZhbHNlICk7CisrICAgIC8vIFNraXAgYWZ0ZXIgcmVzZXQgaWYgQnV0dG9uUHJlc3NLZXlz IGhhcyBLZXlfRW50ZXIKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBw bGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVz c0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8 UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6 OktleV9FbnRlcikpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorICAgICB0ZXN0V2lkZ2V0 LT5zZXRBdXRvUmVwZWF0KCBmYWxzZSApOworICAgICBRVGVzdDo6a2V5UHJlc3MoIHRlc3RXaWRn ZXQsIFF0OjpLZXlfRW50ZXIgKTsKKyAKK0BAIC0yNTUsNiArMjY1LDE0IEBAIHZvaWQgdHN0X1FD b21tYW5kTGlua0J1dHRvbjo6cHJlc3NlZCgpCisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwg KHVpbnQpMSApOworICAgICBRQ09NUEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworIAor KyAgICAvLyBTa2lwIGlmIEJ1dHRvblByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0 IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1U aGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1l SGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBp ZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICBy ZXR1cm47CisrICAgIH0KKysKKyAgICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0LFF0OjpL ZXlfRW50ZXIgKTsKKyAgICAgUUNPTVBBUkUoIHByZXNzX2NvdW50LCAodWludCkxICk7CisgICAg IFFDT01QQVJFKCByZWxlYXNlX2NvdW50LCAodWludCkxICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gucHJvIGIvcXRi YXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gucHJvCitp bmRleCA0YTVlNzZmZjY1Li5hMjM1ZmExZmFjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gucHJvCisrKysgYi9xdGJhc2Uv dGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3Fncm91cGJveC5wcm8KK0BAIC0x LDYgKzEsNiBAQAorIENPTkZJRyArPSB0ZXN0Y2FzZQorIFRBUkdFVCA9IHRzdF9xZ3JvdXBib3gK Ky1RVCArPSB3aWRnZXRzIHRlc3RsaWIKKytRVCArPSB3aWRnZXRzIHRlc3RsaWIgZ3VpLXByaXZh dGUKKyBTT1VSQ0VTICArPSB0c3RfcWdyb3VwYm94LmNwcAorIAorIAorZGlmZiAtLWdpdCBhL3F0 YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvdHN0X3Fncm91cGJveC5j cHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3RzdF9xZ3Jv dXBib3guY3BwCitpbmRleCA0ZmI1ZDI2MmNhLi5kOGQ3NTYyYjczIDEwMDY0NAorLS0tIGEvcXRi YXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC90c3RfcWdyb3VwYm94LmNw cAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC90c3Rf cWdyb3VwYm94LmNwcAorQEAgLTM1LDYgKzM1LDkgQEAKKyAjaW5jbHVkZSA8UVJhZGlvQnV0dG9u PgorICNpbmNsdWRlIDxRRGlhbG9nPgorIAorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNh dGlvbl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorKworICNpbmNsdWRl ICJxZ3JvdXBib3guaCIKKyAKKyBjbGFzcyB0c3RfUUdyb3VwQm94IDogcHVibGljIFFPYmplY3QK K0BAIC02OSw2ICs3Miw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgcHJvcGFnYXRlRm9j dXMoKTsKKyAgICAgdm9pZCB0YXNrX1FUQlVHXzE5MTcwX2lnbm9yZU1vdXNlUmVsZWFzZUV2ZW50 KCk7CisgICAgIHZvaWQgdGFza19RVEJVR18xNTUxOV9wcm9wYWdhdGVNb3VzZUV2ZW50cygpOwor KyAgICB2b2lkIGJ1dHRvblByZXNzS2V5cygpOworIAorIHByaXZhdGU6CisgICAgIGJvb2wgY2hl Y2tlZDsKK0BAIC02MTAsNiArNjE0LDIwIEBAIHZvaWQgdHN0X1FHcm91cEJveDo6dGFza19RVEJV R18xNTUxOV9wcm9wYWdhdGVNb3VzZUV2ZW50cygpCisgICAgIFFDT01QQVJFKHBhcmVudC5tb3Vz ZU1vdmVkLCB0cnVlKTsKKyB9CisgCisrdm9pZCB0c3RfUUdyb3VwQm94OjpidXR0b25QcmVzc0tl eXMoKQorK3sKKysgICAgUUdyb3VwQm94IGdyb3VwQm94OworKyAgICBncm91cEJveC5zZXRDaGVj a2FibGUodHJ1ZSk7CisrICAgIFFTaWduYWxTcHkgY2xpY2tlZFNweSgmZ3JvdXBCb3gsICZRR3Jv dXBCb3g6OmNsaWNrZWQpOworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlB cHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblBy ZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1 ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBidXR0b25QcmVz c0tleXMubGVuZ3RoKCk7ICsraSkgeworKyAgICAgICAgUVRlc3Q6OmtleUNsaWNrKCZncm91cEJv eCwgYnV0dG9uUHJlc3NLZXlzW2ldKTsKKysgICAgICAgIFFDT01QQVJFKGNsaWNrZWRTcHkubGVu Z3RoKCksIGkgKyAxKTsKKysgICAgfQorK30KKysKKyB2b2lkIHRzdF9RR3JvdXBCb3g6OnNlbmRN b3VzZU1vdmVFdmVudChRV2lkZ2V0ICp3aWRnZXQsIGNvbnN0IFFQb2ludCAmbG9jYWxQb3MpCisg eworICAgICAvLyBTZW5kIGEgTW91c2VNb3ZlIGV2ZW50IHdpdGhvdXQgYWN0dWFsbHkgbW92aW5n IHRoZSBwb2ludGVyCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRn ZXRzL3FwdXNoYnV0dG9uL3FwdXNoYnV0dG9uLnBybyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdl dHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi9xcHVzaGJ1dHRvbi5wcm8KK2luZGV4IDM1M2FkMDZjYTIu LmU1NWY2MTQ4ZjIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdl dHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24ucHJvCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24ucHJvCitAQCAtMSw2ICsxLDYg QEAKKyBDT05GSUcgKz0gdGVzdGNhc2UKKyBUQVJHRVQgPSB0c3RfcXB1c2hidXR0b24KKy1RVCAr PSB3aWRnZXRzIHRlc3RsaWIKKytRVCArPSB3aWRnZXRzIHRlc3RsaWIgZ3VpLXByaXZhdGUKKyBT T1VSQ0VTICArPSB0c3RfcXB1c2hidXR0b24uY3BwCisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVzaGJ1dHRvbi5j cHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vdHN0X3Fw dXNoYnV0dG9uLmNwcAoraW5kZXggZTgxODUxNGE3OS4uNDA0M2U5MzI2YSAxMDA2NDQKKy0tLSBh L3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi90c3RfcXB1c2hi dXR0b24uY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hi dXR0b24vdHN0X3FwdXNoYnV0dG9uLmNwcAorQEAgLTQxLDYgKzQxLDkgQEAKKyAjaW5jbHVkZSA8 UVN0eWxlRmFjdG9yeT4KKyAjaW5jbHVkZSA8UVRhYldpZGdldD4KKyAKKysjaW5jbHVkZSA8cHJp dmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUu aD4KKysKKyBjbGFzcyB0c3RfUVB1c2hCdXR0b24gOiBwdWJsaWMgUU9iamVjdAorIHsKKyBRX09C SkVDVAorQEAgLTIxMiw2ICsyMTUsMTMgQEAgdm9pZCB0c3RfUVB1c2hCdXR0b246OmF1dG9SZXBl YXQoKQorICAgICAvLyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBubyBlZmZlY3QKKyAg ICAgcmVzZXRDb3VudGVycygpOworICAgICB0ZXN0V2lkZ2V0LT5zZXREb3duKCBmYWxzZSApOwor KyAgICAvLyBTa2lwIGFmdGVyIHJlc2V0IGlmIEJ1dHRvblByZXNzS2V5cyBoYXMgS2V5X0VudGVy CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0 ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+ PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7 CisrICAgICAgICByZXR1cm47CisrICAgIH0KKyAgICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVh dCggZmFsc2UgKTsKKyAgICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0LCBRdDo6S2V5X0Vu dGVyICk7CisgCitAQCAtMjQ3LDYgKzI1NywxNCBAQCB2b2lkIHRzdF9RUHVzaEJ1dHRvbjo6cHJl c3NlZCgpCisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwgKHVpbnQpMSApOworICAgICBRQ09N UEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworIAorKyAgICAvLyBTa2lwIGlmIEJ1dHRv blByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlz ID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6 QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNv bnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKyAg ICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0LFF0OjpLZXlfRW50ZXIgKTsKKyAgICAgUUNP TVBBUkUoIHByZXNzX2NvdW50LCAodWludCkxICk7CisgICAgIFFDT01QQVJFKCByZWxlYXNlX2Nv dW50LCAodWludCkxICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL21hbnVhbC9yaGkvY3Vi ZW1hcF9yZW5kZXIvYnVpbGRzaGFkZXIuYmF0IGIvcXRiYXNlL3Rlc3RzL21hbnVhbC9yaGkvY3Vi ZW1hcF9yZW5kZXIvYnVpbGRzaGFkZXIuYmF0CitvbGQgbW9kZSAxMDA3NTUKK25ldyBtb2RlIDEw MDY0NAorU3VibW9kdWxlIHF0Y29ubmVjdGl2aXR5IGU5NTdkNDgxLi4wNTYyOTRjMDoKK2RpZmYg LS1naXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL2JsdWV6L2hjaW1hbmFnZXIuY3Bw IGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9ibHVlei9oY2ltYW5hZ2VyLmNwcAoraW5k ZXggZTI2MzVmYWUuLmE4YjhlM2I5IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvc3JjL2Js dWV0b290aC9ibHVlei9oY2ltYW5hZ2VyLmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvc3JjL2Js dWV0b290aC9ibHVlei9oY2ltYW5hZ2VyLmNwcAorQEAgLTU2Myw5ICs1NjMsMTEgQEAgdm9pZCBI Y2lNYW5hZ2VyOjpoYW5kbGVIY2lBY2xQYWNrZXQoY29uc3QgcXVpbnQ4ICpkYXRhLCBpbnQgc2l6 ZSkKKyAKKyB2b2lkIEhjaU1hbmFnZXI6OmhhbmRsZUxlTWV0YUV2ZW50KGNvbnN0IHF1aW50OCAq ZGF0YSkKKyB7CistICAgIC8vIFNwZWMgdjQuMiwgVm9sIDIsIHBhcnQgRSwgNy43LjY1ZmYKKysg ICAgLy8gU3BlYyB2NS4zLCBWb2wgNCwgcGFydCBFLCA3LjcuNjUuKgorICAgICBzd2l0Y2ggKCpk YXRhKSB7CistICAgIGNhc2UgMHgxOiB7CisrICAgIGNhc2UgMHgxOiAvLyBIQ0lfTEVfQ29ubmVj dGlvbl9Db21wbGV0ZQorKyAgICBjYXNlIDB4QTogLy8gSENJX0xFX0VuaGFuY2VkX0Nvbm5lY3Rp b25fQ29tcGxldGUKKysgICAgeworICAgICAgICAgY29uc3QgcXVpbnQxNiBoYW5kbGUgPSBidF9n ZXRfbGUxNihkYXRhICsgMik7CisgICAgICAgICBlbWl0IGNvbm5lY3Rpb25Db21wbGV0ZShoYW5k bGUpOworICAgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvc3JjL2Js dWV0b290aC9xYmx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50X2JsdWV6LmNwcCBiL3F0Y29u bmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3ZlcnlhZ2VudF9i bHVlei5jcHAKK2luZGV4IDZhOTMxNDNiLi40YTE4Y2ZjNyAxMDA2NDQKKy0tLSBhL3F0Y29ubmVj dGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3ZlcnlhZ2VudF9ibHVl ei5jcHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZp Y2VkaXNjb3ZlcnlhZ2VudF9ibHVlei5jcHAKK0BAIC0zMjAsNyArMzIwLDEwIEBAIHZvaWQgUUJs dWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudFByaXZhdGU6Ol9xX2ZpbmlzaFNkcFNjYW4oUUJs dWV0b290aFNlcnZpY2VECisgICAgICAgICAgICAgZm9yIChjb25zdCBRQmx1ZXRvb3RoVXVpZCAm aWQgOiBzZXJ2aWNlQ2xhc3NVdWlkcykgeworICAgICAgICAgICAgICAgICBpZiAoaWQubWluaW11 bVNpemUoKSA9PSAxNikgeworICAgICAgICAgICAgICAgICAgICAgc2VydmljZUluZm8uc2V0U2Vy dmljZVV1aWQoaWQpOworLSAgICAgICAgICAgICAgICAgICAgc2VydmljZUluZm8uc2V0U2Vydmlj ZU5hbWUoUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6dHIoIkN1c3RvbSBTZXJ2aWNl IikpOworKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2VJbmZvLnNlcnZpY2VOYW1lKCku aXNFbXB0eSgpKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZUluZm8uc2V0U2Vy dmljZU5hbWUoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUJsdWV0b290 aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6dHIoIkN1c3RvbSBTZXJ2aWNlIikpOworKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgUUJsdWV0b290aFNlcnZpY2VJbmZv OjpTZXF1ZW5jZSBtb2RTZXEgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNl SW5mby5hdHRyaWJ1dGUoUUJsdWV0b290aFNlcnZpY2VJbmZvOjpTZXJ2aWNlQ2xhc3NJZHMpLnZh bHVlPFFCbHVldG9vdGhTZXJ2aWNlSW5mbzo6U2VxdWVuY2U+KCk7CisgICAgICAgICAgICAgICAg ICAgICBtb2RTZXEucmVtb3ZlT25lKFFWYXJpYW50Ojpmcm9tVmFsdWUoaWQpKTsKK0BAIC0zMzQs OCArMzM3LDEwIEBAIHZvaWQgUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudFByaXZhdGU6 Ol9xX2ZpbmlzaFNkcFNjYW4oUUJsdWV0b290aFNlcnZpY2VECisgICAgICAgICAgICAgICAgIHFD RGVidWcoUVRfQlRfQkxVRVopIDw8ICJEaXNjb3ZlcmVkIHNlcnZpY2VzIiA8PCBkaXNjb3ZlcmVk RGV2aWNlcy5hdCgwKS5hZGRyZXNzKCkudG9TdHJpbmcoKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8PCBzZXJ2aWNlSW5mby5zZXJ2aWNlTmFtZSgpIDw8IHNlcnZpY2VJ bmZvLnNlcnZpY2VVdWlkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PDwgIj4+PiIgPDwgc2VydmljZUluZm8uc2VydmljZUNsYXNzVXVpZHMoKTsKKy0KKy0gICAgICAg ICAgICAgICAgZW1pdCBxLT5zZXJ2aWNlRGlzY292ZXJlZChzZXJ2aWNlSW5mbyk7CisrICAgICAg ICAgICAgICAgIC8vIFVzZSBxdWV1ZWQgY29ubmVjdGlvbiB0byBhbGxvdyB1cyBmaW5pc2ggdGhl IHNlcnZpY2UgbG9vcGluZzsgdGhlIGFwcGxpY2F0aW9uCisrICAgICAgICAgICAgICAgIC8vIG1p Z2h0IGNhbGwgc3RvcCgpIHdoZW4gaXQgaGFzIGRldGVjdGVkIHRoZSBzZXJ2aWNlLW9mLWludGVy ZXN0LgorKyAgICAgICAgICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHEsICJzZXJ2 aWNlRGlzY292ZXJlZCIsIFF0OjpRdWV1ZWRDb25uZWN0aW9uLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFfQVJHKFFCbHVldG9vdGhTZXJ2aWNlSW5mbywgc2Vy dmljZUluZm8pKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgIH0KK2RpZmYgLS1n aXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXQuY3BwIGIv cXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0LmNwcAoraW5kZXgg ZTRkODU0NDcuLmFhZGQ0NzU1IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0 b290aC9xYmx1ZXRvb3Roc29ja2V0LmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0 b290aC9xYmx1ZXRvb3Roc29ja2V0LmNwcAorQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIFFCbHVl dG9vdGhTb2NrZXQ6OnNldFNvY2tldFN0YXRlKFFCbHVldG9vdGhTb2NrZXQ6OlNvY2tldFN0YXRl IHN0YXRlKQorIGJvb2wgUUJsdWV0b290aFNvY2tldDo6Y2FuUmVhZExpbmUoKSBjb25zdAorIHsK KyAgICAgUV9EKGNvbnN0IFFCbHVldG9vdGhTb2NrZXRCYXNlKTsKKy0gICAgcmV0dXJuIGQtPmNh blJlYWRMaW5lKCk7CisrICAgIHJldHVybiBkLT5jYW5SZWFkTGluZSgpIHx8IFFJT0RldmljZTo6 Y2FuUmVhZExpbmUoKTsKKyB9CisgCisgLyohCitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkv c3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAgYi9xdGNvbm5lY3Rp dml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXRfYmx1ZXpkYnVzLmNwcAoraW5kZXgg MDg0YWE5NTguLmQ2YWExN2E3IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0 b290aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5 L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRidXMuY3BwCitAQCAtMjg0LDYg KzI4NCwxMCBAQCB2b2lkIFFCbHVldG9vdGhTb2NrZXRQcml2YXRlQmx1ZXpEQnVzOjpjb25uZWN0 VG9TZXJ2aWNlKAorICAgICAgICAgcmV0dXJuOworICAgICB9CisgCisrICAgIGlmIChzZXJ2aWNl LnNvY2tldFByb3RvY29sKCkgIT0gUUJsdWV0b290aFNlcnZpY2VJbmZvOjpQcm90b2NvbDo6VW5r bm93blByb3RvY29sKQorKyAgICAgICAgc29ja2V0VHlwZSA9IHNlcnZpY2Uuc29ja2V0UHJvdG9j b2woKTsKKysgICAgcUNEZWJ1ZyhRVF9CVF9CTFVFWikgPDwgIlNvY2tldCBwcm90b2NvbCB1c2Vk OiIgPDwgc29ja2V0VHlwZTsKKysKKyAgICAgY29ubmVjdFRvU2VydmljZShzZXJ2aWNlLmRldmlj ZSgpLmFkZHJlc3MoKSwgdGFyZ2V0U2VydmljZSwgb3Blbk1vZGUpOworIH0KKyAKK2RpZmYgLS1n aXQgYS9xdGNvbm5lY3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2NrZXQvdHN0X3FibHVl dG9vdGhzb2NrZXQuY3BwIGIvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRvb3Roc29j a2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcAoraW5kZXggMDViYzFhMGYuLmE3YjVlZjFmIDEw MDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRvb3Roc29ja2V0L3Rz dF9xYmx1ZXRvb3Roc29ja2V0LmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9x Ymx1ZXRvb3Roc29ja2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcAorQEAgLTE0Miw3ICsxNDIs NyBAQCB2b2lkIHRzdF9RQmx1ZXRvb3RoU29ja2V0Ojppbml0VGVzdENhc2UoKQorICAgICBxRGVi dWcoKSA8PCAiU3RhcnRpbmcgZGlzY292ZXJ5IjsKKyAKKyAgICAgc2RhLT5zZXRVdWlkRmlsdGVy KFFCbHVldG9vdGhVdWlkKFFTdHJpbmcoVEVTVF9TRVJWSUNFX1VVSUQpKSk7CistICAgIHNkYS0+ c3RhcnQoUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6TWluaW1hbERpc2NvdmVyeSk7 CisrICAgIHNkYS0+c3RhcnQoUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6RnVsbERp c2NvdmVyeSk7CisgCisgICAgIGZvciAoaW50IGNvbm5lY3RUaW1lID0gTWF4Q29ubmVjdFRpbWU7 ICFkb25lX2Rpc2NvdmVyeSAmJiBjb25uZWN0VGltZSA+IDA7IGNvbm5lY3RUaW1lIC09IDEwMDAp CisgICAgICAgICBRVGVzdDo6cVdhaXQoMTAwMCk7CitTdWJtb2R1bGUgcXRkZWNsYXJhdGl2ZSBm NTcwMWYwZC4uOGRlZmU3YmY6CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2Nv bW1vbi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvY29t bW9uL3FxbWxqc2ZpeGVkcG9vbGFycmF5X3AuaAoraW5kZXggYjY1Yjk5NGQ2Yy4uMTVhOGNkNjg3 OCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9jb21tb24vcXFtbGpzZml4ZWRw b29sYXJyYXlfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvY29tbW9uL3FxbWxqc2Zp eGVkcG9vbGFycmF5X3AuaAorQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgorICAgICAgICAgaWYg KFFUeXBlSW5mbzxUPjo6aXNDb21wbGV4KSB7CisgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgICAgICBuZXcgKGRhdGEgKyBpKSBUKHZlY3Rv ci5hdChpKSk7CistICAgICAgICB9IGVsc2UgeworKyAgICAgICAgfSBlbHNlIGlmIChjb3VudCkg eworICAgICAgICAgICAgIG1lbWNweShkYXRhLCBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4odmVj dG9yLmNvbnN0RGF0YSgpKSwgY291bnQgKiBzaXplb2YoVCkpOworICAgICAgICAgfQorICAgICB9 CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pzcnVudGltZS9xdjRxb2JqZWN0 d3JhcHBlci5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmplY3R3 cmFwcGVyLmNwcAoraW5kZXggZTU3Y2RkODI3OC4uOTQ2MTM1OThhZiAxMDA2NDQKKy0tLSBhL3F0 ZGVjbGFyYXRpdmUvc3JjL3FtbC9qc3J1bnRpbWUvcXY0cW9iamVjdHdyYXBwZXIuY3BwCisrKysg Yi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmplY3R3cmFwcGVyLmNwcAor QEAgLTExNDUsOCArMTE0NSw3IEBAIHZvaWQgSGVhcDo6UU9iamVjdFdyYXBwZXI6Om1hcmtPYmpl Y3RzKEhlYXA6OkJhc2UgKnRoYXQsIFFWNDo6TWFya1N0YWNrICptYXJrU3RhCisgdm9pZCBRT2Jq ZWN0V3JhcHBlcjo6ZGVzdHJveU9iamVjdChib29sIGxhc3RDYWxsKQorIHsKKyAgICAgSGVhcDo6 UU9iamVjdFdyYXBwZXIgKmggPSBkKCk7CistICAgIGlmICghaC0+aW50ZXJuYWxDbGFzcykKKy0g ICAgICAgIHJldHVybjsgLy8gZGVzdHJveU9iamVjdCBhbHJlYWR5IGdvdCBjYWxsZWQKKysgICAg UV9BU1NFUlQoaC0+aW50ZXJuYWxDbGFzcyk7CisgCisgICAgIGlmIChoLT5vYmplY3QoKSkgewor ICAgICAgICAgUVFtbERhdGEgKmRkYXRhID0gUVFtbERhdGE6OmdldChoLT5vYmplY3QoKSwgZmFs c2UpOworQEAgLTExNzYsNyArMTE3NSw3IEBAIHZvaWQgUU9iamVjdFdyYXBwZXI6OmRlc3Ryb3lP YmplY3QoYm9vbCBsYXN0Q2FsbCkKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBoLT5+RGF0 YSgpOworKyAgICBoLT5kZXN0cm95KCk7CisgfQorIAorIAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFy YXRpdmUvc3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL21l bW9yeS9xdjRtbS5jcHAKK2luZGV4IDA2Y2FmMDRlNWEuLmRhMTQ5YTY3YzQgMTAwNjQ0CistLS0g YS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNwcAorKysrIGIvcXRkZWNsYXJh dGl2ZS9zcmMvcW1sL21lbW9yeS9xdjRtbS5jcHAKK0BAIC05ODEsNyArOTgxLDcgQEAgdm9pZCBN ZW1vcnlNYW5hZ2VyOjpzd2VlcChib29sIGxhc3RTd2VlcCwgQ2xhc3NEZXN0cm95U3RhdHNDYWxs YmFjayBjbGFzc0NvdW50UHQKKyAKKyAgICAgaWYgKE11bHRpcGx5V3JhcHBlZFFPYmplY3RNYXAg Km11bHRpcGx5V3JhcHBlZFFPYmplY3RzID0gZW5naW5lLT5tX211bHRpcGx5V3JhcHBlZFFPYmpl Y3RzKSB7CisgICAgICAgICBmb3IgKE11bHRpcGx5V3JhcHBlZFFPYmplY3RNYXA6Okl0ZXJhdG9y IGl0ID0gbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IG11bHRpcGx5V3Jh cHBlZFFPYmplY3RzLT5lbmQoKTspIHsKKy0gICAgICAgICAgICBpZiAoIWl0LnZhbHVlKCkuaXNO dWxsT3JVbmRlZmluZWQoKSkKKysgICAgICAgICAgICBpZiAoaXQudmFsdWUoKS5pc051bGxPclVu ZGVmaW5lZCgpKQorICAgICAgICAgICAgICAgICBpdCA9IG11bHRpcGx5V3JhcHBlZFFPYmplY3Rz LT5lcmFzZShpdCk7CisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICArK2l0Owor ZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2Rl bC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWwuY3Bw CitpbmRleCAyMDc5YThlZDA0Li5hNTc3Y2IyMzUxIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2 ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2 ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorQEAgLTM4OSw2ICszODksMTIg QEAgdm9pZCBRUW1sRGVsZWdhdGVNb2RlbFByaXZhdGU6OmNvbm5lY3RUb0Fic3RyYWN0SXRlbU1v ZGVsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgcSwgIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9U KF9xX3Jvd3NSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisgICAgIHFtbG9iamVjdF9j b25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwocm93c0Fib3V0VG9CZVJlbW92 ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLAorICAgICAgICAgICAgICAgICAgICAgICBxLCAgUVFt bERlbGVnYXRlTW9kZWwsIFNMT1QoX3Ffcm93c0Fib3V0VG9CZVJlbW92ZWQoUU1vZGVsSW5kZXgs aW50LGludCkpKTsKKysgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9k ZWwsIFNJR05BTChjb2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLAorKyAgICAg ICAgICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9jb2x1bW5zSW5z ZXJ0ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWlt LCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChjb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxp bnQsaW50KSksCisrICAgICAgICAgICAgICAgICAgICAgIHEsIFFRbWxEZWxlZ2F0ZU1vZGVsLCBT TE9UKF9xX2NvbHVtbnNSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIHFtbG9i amVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoY29sdW1uc01vdmVk KFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSksCisrICAgICAgICAgICAgICAg ICAgICAgIHEsIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2NvbHVtbnNNb3ZlZChRTW9kZWxJ bmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpKTsKKyAgICAgcW1sb2JqZWN0X2Nvbm5lY3Qo YWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChkYXRhQ2hhbmdlZChRTW9kZWxJbmRleCxR TW9kZWxJbmRleCxRVmVjdG9yPGludD4pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgcSwgUVFt bERlbGVnYXRlTW9kZWwsIFNMT1QoX3FfZGF0YUNoYW5nZWQoUU1vZGVsSW5kZXgsUU1vZGVsSW5k ZXgsUVZlY3RvcjxpbnQ+KSkpOworICAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFj dEl0ZW1Nb2RlbCwgU0lHTkFMKHJvd3NNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbElu ZGV4LGludCkpLAorQEAgLTQxMyw2ICs0MTksMTIgQEAgdm9pZCBRUW1sRGVsZWdhdGVNb2RlbFBy aXZhdGU6OmRpc2Nvbm5lY3RGcm9tQWJzdHJhY3RJdGVtTW9kZWwoKQorICAgICAgICAgICAgICAg ICAgICAgICAgIHEsIFNMT1QoX3Ffcm93c0Fib3V0VG9CZVJlbW92ZWQoUU1vZGVsSW5kZXgsaW50 LGludCkpKTsKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChyb3dzUmVtb3Zl ZChRTW9kZWxJbmRleCxpbnQsaW50KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgcSwgU0xP VChfcV9yb3dzUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBRT2JqZWN0Ojpk aXNjb25uZWN0KGFpbSwgU0lHTkFMKGNvbHVtbnNJbnNlcnRlZChRTW9kZWxJbmRleCxpbnQsaW50 KSksIHEsCisrICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChfcV9jb2x1bW5zSW5zZXJ0ZWQo UU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJ R05BTChjb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSksIHEsCisrICAgICAgICAg ICAgICAgICAgICAgICAgU0xPVChfcV9jb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50 KSkpOworKyAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKGNvbHVtbnNNb3ZlZChR TW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpLCBxLAorKyAgICAgICAgICAgICAg ICAgICAgICAgIFNMT1QoX3FfY29sdW1uc01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVs SW5kZXgsaW50KSkpOworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKGRhdGFD aGFuZ2VkKFFNb2RlbEluZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50PikpLAorICAgICAgICAg ICAgICAgICAgICAgICAgIHEsIFNMT1QoX3FfZGF0YUNoYW5nZWQoUU1vZGVsSW5kZXgsUU1vZGVs SW5kZXgsUVZlY3RvcjxpbnQ+KSkpOworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lH TkFMKHJvd3NNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpLAorQEAg LTE5NzMsNiArMTk4NSwzOCBAQCB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9yb3dzTW92ZWQo CisgICAgIH0KKyB9CisgCisrdm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3FfY29sdW1uc0luc2Vy dGVkKGNvbnN0IFFNb2RlbEluZGV4ICZwYXJlbnQsIGludCBiZWdpbiwgaW50IGVuZCkKKyt7Cisr ICAgIFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7CisrICAgIFFfVU5VU0VEKGVuZCk7CisrICAgIGlm IChwYXJlbnQgPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYmIGJlZ2luID09IDApIHsK KysgICAgICAgIC8vIG1hcmsgYWxsIGl0ZW1zIGFzIGNoYW5nZWQKKysgICAgICAgIF9xX2l0ZW1z Q2hhbmdlZCgwLCBkLT5tX2NvdW50LCBRVmVjdG9yPGludD4oKSk7CisrICAgIH0KKyt9CisrCisr dm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3FfY29sdW1uc1JlbW92ZWQoY29uc3QgUU1vZGVsSW5k ZXggJnBhcmVudCwgaW50IGJlZ2luLCBpbnQgZW5kKQorK3sKKysgICAgUV9EKFFRbWxEZWxlZ2F0 ZU1vZGVsKTsKKysgICAgUV9VTlVTRUQoZW5kKTsKKysgICAgaWYgKHBhcmVudCA9PSBkLT5tX2Fk YXB0b3JNb2RlbC5yb290SW5kZXggJiYgYmVnaW4gPT0gMCkgeworKyAgICAgICAgLy8gbWFyayBh bGwgaXRlbXMgYXMgY2hhbmdlZAorKyAgICAgICAgX3FfaXRlbXNDaGFuZ2VkKDAsIGQtPm1fY291 bnQsIFFWZWN0b3I8aW50PigpKTsKKysgICAgfQorK30KKysKKyt2b2lkIFFRbWxEZWxlZ2F0ZU1v ZGVsOjpfcV9jb2x1bW5zTW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCwgaW50IHN0YXJ0 LCBpbnQgZW5kLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBRTW9kZWxJbmRleCAmZGVzdGluYXRpb24sIGludCBjb2x1bW4pCisreworKyAgICBRX0QoUVFt bERlbGVnYXRlTW9kZWwpOworKyAgICBRX1VOVVNFRChlbmQpOworKyAgICBpZiAoKHBhcmVudCA9 PSBkLT5tX2FkYXB0b3JNb2RlbC5yb290SW5kZXggJiYgc3RhcnQgPT0gMCkKKysgICAgICAgIHx8 IChkZXN0aW5hdGlvbiA9PSBkLT5tX2FkYXB0b3JNb2RlbC5yb290SW5kZXggJiYgY29sdW1uID09 IDApKSB7CisrICAgICAgICAvLyBtYXJrIGFsbCBpdGVtcyBhcyBjaGFuZ2VkCisrICAgICAgICBf cV9pdGVtc0NoYW5nZWQoMCwgZC0+bV9jb3VudCwgUVZlY3RvcjxpbnQ+KCkpOworKyAgICB9Cisr fQorKworIHZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2RhdGFDaGFuZ2VkKGNvbnN0IFFNb2Rl bEluZGV4ICZiZWdpbiwgY29uc3QgUU1vZGVsSW5kZXggJmVuZCwgY29uc3QgUVZlY3RvcjxpbnQ+ ICZyb2xlcykKKyB7CisgICAgIFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7CitkaWZmIC0tZ2l0IGEv cXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaCBiL3F0ZGVj bGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbF9wLmgKK2luZGV4IDhhYWI0 YmFkY2EuLmQxNDBiZmJhYWYgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2Rl bHMvcXFtbGRlbGVnYXRlbW9kZWxfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2Rl bHMvcXFtbGRlbGVnYXRlbW9kZWxfcC5oCitAQCAtMTUyLDYgKzE1Miw5IEBAIHByaXZhdGUgUV9T TE9UUzoKKyAgICAgdm9pZCBfcV9pdGVtc01vdmVkKGludCBmcm9tLCBpbnQgdG8sIGludCBjb3Vu dCk7CisgICAgIHZvaWQgX3FfbW9kZWxSZXNldCgpOworICAgICB2b2lkIF9xX3Jvd3NJbnNlcnRl ZChjb25zdCBRTW9kZWxJbmRleCAmLGludCxpbnQpOworKyAgICB2b2lkIF9xX2NvbHVtbnNJbnNl cnRlZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCk7CisrICAgIHZvaWQgX3FfY29sdW1u c1JlbW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBpbnQpOworKyAgICB2b2lkIF9xX2Nv bHVtbnNNb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCwgY29uc3QgUU1vZGVsSW5k ZXggJiwgaW50KTsKKyAgICAgdm9pZCBfcV9yb3dzQWJvdXRUb0JlUmVtb3ZlZChjb25zdCBRTW9k ZWxJbmRleCAmcGFyZW50LCBpbnQgYmVnaW4sIGludCBlbmQpOworICAgICB2b2lkIF9xX3Jvd3NS ZW1vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICYsaW50LGludCk7CisgICAgIHZvaWQgX3Ffcm93c01v dmVkKGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCwgaW50LCBjb25zdCBRTW9kZWxJbmRleCAmLCBp bnQpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFj Y2Vzc2libGVxdWlja2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJs ZS9xYWNjZXNzaWJsZXF1aWNraXRlbS5jcHAKK2luZGV4IDg1NzE5ZmRjODAuLjc4ZTJhYjMwMmMg MTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3Np YmxlcXVpY2tpdGVtLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJs ZS9xYWNjZXNzaWJsZXF1aWNraXRlbS5jcHAKK0BAIC00Niw2ICs0Niw3IEBACisgI2luY2x1ZGUg IlF0UXVpY2svcHJpdmF0ZS9xcXVpY2t0ZXh0aW5wdXRfcC5oIgorICNpbmNsdWRlICJRdFF1aWNr L3ByaXZhdGUvcXF1aWNrYWNjZXNzaWJsZWF0dGFjaGVkX3AuaCIKKyAjaW5jbHVkZSAiUXRRdWlj ay9xcXVpY2t0ZXh0ZG9jdW1lbnQuaCIKKysjaW5jbHVkZSAiUXRRdWljay9xcXVpY2tyZW5kZXJj b250cm9sLmgiCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgI2lmIFFUX0NPTkZJRyhhY2Nlc3Np YmlsaXR5KQorQEAgLTU3LDcgKzU4LDE5IEBAIFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpRQWNjZXNz aWJsZVF1aWNrSXRlbShRUXVpY2tJdGVtICppdGVtKQorIAorIFFXaW5kb3cgKlFBY2Nlc3NpYmxl UXVpY2tJdGVtOjp3aW5kb3coKSBjb25zdAorIHsKKy0gICAgcmV0dXJuIGl0ZW0oKS0+d2luZG93 KCk7CisrICAgIFFRdWlja1dpbmRvdyAqd2luZG93ID0gaXRlbSgpLT53aW5kb3coKTsKKysKKysg ICAgLy8gRm9yIFFRdWlja1dpZGdldCB0aGUgYWJvdmUgd2luZG93IHdpbGwgYmUgdGhlIG9mZnNj cmVlbiBRUXVpY2tXaW5kb3csCisrICAgIC8vIHdoaWNoIGlzIG5vdCBhIHBhcnQgb2YgdGhlIGFj Y2Vzc2liaWxpdHkgdHJlZS4gRGV0ZWN0IHRoaXMgY2FzZSBhbmQKKysgICAgLy8gcmV0dXJuIHRo ZSB3aW5kb3cgZm9yIHRoZSBRUXVpY2tXaWRnZXQgaW5zdGVhZC4KKysgICAgaWYgKHdpbmRvdyAm JiAhd2luZG93LT5oYW5kbGUoKSkgeworKyAgICAgICAgaWYgKFFRdWlja1JlbmRlckNvbnRyb2wg KnJlbmRlckNvbnRyb2wgPSBRUXVpY2tXaW5kb3dQcml2YXRlOjpnZXQod2luZG93KS0+cmVuZGVy Q29udHJvbCkgeworKyAgICAgICAgICAgIGlmIChRV2luZG93ICpyZW5kZXJXaW5kb3cgPSByZW5k ZXJDb250cm9sLT5yZW5kZXJXaW5kb3cobnVsbHB0cikpCisrICAgICAgICAgICAgICAgIHJldHVy biByZW5kZXJXaW5kb3c7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgcmV0dXJuIHdpbmRv dzsKKyB9CisgCisgaW50IFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpjaGlsZENvdW50KCkgY29uc3QK K0BAIC0xMTMsMTkgKzEyNiwxNSBAQCBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVR dWlja0l0ZW06OmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdAorIFFBY2Nlc3NpYmxlSW50ZXJm YWNlICpRQWNjZXNzaWJsZVF1aWNrSXRlbTo6cGFyZW50KCkgY29uc3QKKyB7CisgICAgIFFRdWlj a0l0ZW0gKnBhcmVudCA9IGl0ZW0oKS0+cGFyZW50SXRlbSgpOworLSAgICBRUXVpY2tXaW5kb3cg KndpbmRvdyA9IGl0ZW0oKS0+d2luZG93KCk7CistICAgIFFRdWlja0l0ZW0gKmNpID0gd2luZG93 ID8gd2luZG93LT5jb250ZW50SXRlbSgpIDogbnVsbHB0cjsKKysgICAgUVF1aWNrV2luZG93ICpp dGVtV2luZG93ID0gaXRlbSgpLT53aW5kb3coKTsKKysgICAgUVF1aWNrSXRlbSAqY2kgPSBpdGVt V2luZG93ID8gaXRlbVdpbmRvdy0+Y29udGVudEl0ZW0oKSA6IG51bGxwdHI7CisgICAgIHdoaWxl IChwYXJlbnQgJiYgIVFRdWlja0l0ZW1Qcml2YXRlOjpnZXQocGFyZW50KS0+aXNBY2Nlc3NpYmxl ICYmIHBhcmVudCAhPSBjaSkKKyAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50SXRlbSgp OworIAorICAgICBpZiAocGFyZW50KSB7CisgICAgICAgICBpZiAocGFyZW50ID09IGNpKSB7Cist ICAgICAgICAgICAgLy8gSnVtcCBvdXQgdG8gdGhlIHNjZW5lIHdpZGdldCBpZiB0aGUgcGFyZW50 IGlzIHRoZSByb290IGl0ZW0uCistICAgICAgICAgICAgLy8gVGhlcmUgYXJlIHR3byByb290IGl0 ZW1zLCBRUXVpY2tXaW5kb3c6OnJvb3RJdGVtIGFuZAorLSAgICAgICAgICAgIC8vIFFRdWlja1Zp ZXc6OmRlY2xhcmF0aXZlUm9vdC4gVGhlIGZvcm1lciBpcyB0aGUgdHJ1ZSByb290IGl0ZW0sCist ICAgICAgICAgICAgLy8gYnV0IGlzIG5vdCBhIHBhcnQgb2YgdGhlIGFjY2Vzc2liaWxpdHkgdHJl ZS4gQ2hlY2sgaWYgd2UgaGl0CistICAgICAgICAgICAgLy8gaXQgaGVyZSBhbmQgcmV0dXJuIGFu IGludGVyZmFjZSBmb3IgdGhlIHNjZW5lIGluc3RlYWQuCistICAgICAgICAgICAgcmV0dXJuIFFB Y2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uod2luZG93KTsKKysgICAgICAgICAg ICAvLyBKdW1wIG91dCB0byB0aGUgd2luZG93IGlmIHRoZSBwYXJlbnQgaXMgdGhlIHJvb3QgaXRl bQorKyAgICAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJm YWNlKHdpbmRvdygpKTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgd2hpbGUgKHBh cmVudCAmJiAhcGFyZW50LT5kX2Z1bmMoKS0+aXNBY2Nlc3NpYmxlKQorICAgICAgICAgICAgICAg ICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudEl0ZW0oKTsKK0BAIC0xODgsNyArMTk3LDcgQEAgUUFj Y2Vzc2libGU6OlN0YXRlIFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpzdGF0ZSgpIGNvbnN0CisgICAg IFFSZWN0IHZpZXdSZWN0XyA9IHZpZXdSZWN0KCk7CisgICAgIFFSZWN0IGl0ZW1SZWN0ID0gcmVj dCgpOworIAorLSAgICBpZiAodmlld1JlY3RfLmlzTnVsbCgpIHx8IGl0ZW1SZWN0LmlzTnVsbCgp IHx8ICFpdGVtKCktPndpbmRvdygpIHx8ICFpdGVtKCktPndpbmRvdygpLT5pc1Zpc2libGUoKSB8 fCFpdGVtKCktPmlzVmlzaWJsZSgpIHx8IHFGdXp6eUlzTnVsbChpdGVtKCktPm9wYWNpdHkoKSkp CisrICAgIGlmICh2aWV3UmVjdF8uaXNOdWxsKCkgfHwgaXRlbVJlY3QuaXNOdWxsKCkgfHwgIXdp bmRvdygpIHx8ICF3aW5kb3coKS0+aXNWaXNpYmxlKCkgfHwhaXRlbSgpLT5pc1Zpc2libGUoKSB8 fCBxRnV6enlJc051bGwoaXRlbSgpLT5vcGFjaXR5KCkpKQorICAgICAgICAgc3RhdGUuaW52aXNp YmxlID0gdHJ1ZTsKKyAgICAgaWYgKCF2aWV3UmVjdF8uaW50ZXJzZWN0cyhpdGVtUmVjdCkpCisg ICAgICAgICBzdGF0ZS5vZmZzY3JlZW4gPSB0cnVlOworQEAgLTIwMSw2ICsyMTAsMTAgQEAgUUFj Y2Vzc2libGU6OlN0YXRlIFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpzdGF0ZSgpIGNvbnN0CisgICAg IGlmIChyb2xlKCkgPT0gUUFjY2Vzc2libGU6OkVkaXRhYmxlVGV4dCkKKyAgICAgICAgIGlmIChh dXRvIHRpID0gcW9iamVjdF9jYXN0PFFRdWlja1RleHRJbnB1dCAqPihpdGVtKCkpKQorICAgICAg ICAgICAgIHN0YXRlLnBhc3N3b3JkRWRpdCA9IHRpLT5lY2hvTW9kZSgpICE9IFFRdWlja1RleHRJ bnB1dDo6Tm9ybWFsOworKyAgICBpZiAoIWl0ZW0oKS0+aXNFbmFibGVkKCkpIHsKKysgICAgICAg IHN0YXRlLmZvY3VzYWJsZSA9IGZhbHNlOworKyAgICAgICAgc3RhdGUuZGlzYWJsZWQgPSB0cnVl OworKyAgICB9CisgICAgIHJldHVybiBzdGF0ZTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRkZWNs YXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmggYi9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3Au aAoraW5kZXggMzlmZmNhZjM5Yy4uOGJhYTAxMzMwYyAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5oCisrKysgYi9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3Au aAorQEAgLTU4LDcgKzU4LDcgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgI2lmIFFUX0NPTkZJ RyhhY2Nlc3NpYmlsaXR5KQorIAorLWNsYXNzIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cgOiBwdWJs aWMgUUFjY2Vzc2libGVPYmplY3QKKytjbGFzcyBRX1FVSUNLX0VYUE9SVCBRQWNjZXNzaWJsZVF1 aWNrV2luZG93IDogcHVibGljIFFBY2Nlc3NpYmxlT2JqZWN0CisgeworIHB1YmxpYzoKKyAgICAg UUFjY2Vzc2libGVRdWlja1dpbmRvdyhRUXVpY2tXaW5kb3cgKm9iamVjdCk7CitkaWZmIC0tZ2l0 IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrZHJhZy5jcHAgYi9xdGRlY2xh cmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcAoraW5kZXggODMyMWZjZmVlZC4u MzgzMDc4YjNiOSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3Fx dWlja2RyYWcuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tk cmFnLmNwcAorQEAgLTQ4MSw3ICs0ODEsOSBAQCB2b2lkIFFRdWlja0RyYWdBdHRhY2hlZDo6c2V0 S2V5cyhjb25zdCBRU3RyaW5nTGlzdCAma2V5cykKKyAgICAgXHFtbGF0dGFjaGVkcHJvcGVydHkg c3RyaW5nbGlzdCBRdFF1aWNrOjpEcmFnOjptaW1lRGF0YQorICAgICBcc2luY2UgNS4yCisgCist ICAgIFRoaXMgcHJvcGVydHkgaG9sZHMgYSBtYXAgb2YgbWltZURhdGEgdGhhdCBpcyB1c2VkIGR1 cmluZyBzdGFydERyYWcuCisrICAgIFRoaXMgcHJvcGVydHkgaG9sZHMgYSBtYXAgZnJvbSBtaW1l IHR5cGUgdG8gZGF0YSB0aGF0IGlzIHVzZWQgZHVyaW5nIHN0YXJ0RHJhZy4KKysgICAgVGhlIG1p bWUgZGF0YSBuZWVkcyB0byBiZSBhIFxjIHN0cmluZywgb3IgYW4gXGMgQXJyYXlCdWZmZXIgd2l0 aCB0aGUgZGF0YSBlbmNvZGVkCisrICAgIGFjY29yZGluZyB0byB0aGUgbWltZSB0eXBlLgorICov CisgCisgUVZhcmlhbnRNYXAgUVF1aWNrRHJhZ0F0dGFjaGVkOjptaW1lRGF0YSgpIGNvbnN0CitA QCAtNzY2LDggKzc2OCwxMiBAQCBRdDo6RHJvcEFjdGlvbiBRUXVpY2tEcmFnQXR0YWNoZWRQcml2 YXRlOjpzdGFydERyYWcoUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdAorICAgICBRRHJhZyAq ZHJhZyA9IG5ldyBRRHJhZyhzb3VyY2UgPyBzb3VyY2UgOiBxKTsKKyAgICAgUU1pbWVEYXRhICpt aW1lRGF0YSA9IG5ldyBRTWltZURhdGEoKTsKKyAKKy0gICAgZm9yIChhdXRvIGl0ID0gZXh0ZXJu YWxNaW1lRGF0YS5jYmVnaW4oKSwgZW5kID0gZXh0ZXJuYWxNaW1lRGF0YS5jZW5kKCk7IGl0ICE9 IGVuZDsgKytpdCkKKy0gICAgICAgIG1pbWVEYXRhLT5zZXREYXRhKGl0LmtleSgpLCBpdC52YWx1 ZSgpLnRvU3RyaW5nKCkudG9VdGY4KCkpOworKyAgICBmb3IgKGF1dG8gaXQgPSBleHRlcm5hbE1p bWVEYXRhLmNiZWdpbigpLCBlbmQgPSBleHRlcm5hbE1pbWVEYXRhLmNlbmQoKTsgaXQgIT0gZW5k OyArK2l0KSB7CisrICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8UU1ldGFUeXBlOjpUeXBlPihpdC52 YWx1ZSgpLnR5cGUoKSkgPT0gUU1ldGFUeXBlOjpRQnl0ZUFycmF5KQorKyAgICAgICAgICAgIG1p bWVEYXRhLT5zZXREYXRhKGl0LmtleSgpLCBpdC52YWx1ZSgpLnRvQnl0ZUFycmF5KCkpOworKyAg ICAgICAgZWxzZQorKyAgICAgICAgICAgIG1pbWVEYXRhLT5zZXREYXRhKGl0LmtleSgpLCBpdC52 YWx1ZSgpLnRvU3RyaW5nKCkudG9VdGY4KCkpOworKyAgICB9CisgCisgICAgIGRyYWctPnNldE1p bWVEYXRhKG1pbWVEYXRhKTsKKyAgICAgaWYgKHBpeG1hcExvYWRlci5pc1JlYWR5KCkpIHsKK2Rp ZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtLmNwcCBi L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3BwCitpbmRleCA3NWYx NDU3ODE2Li5kZWMwYWUxOWFlIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2sv aXRlbXMvcXF1aWNraXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1z L3FxdWlja2l0ZW0uY3BwCitAQCAtNTksNiArNTksNyBAQAorICNpbmNsdWRlIDxRdENvcmUvcHJp dmF0ZS9xbnVtZXJpY19wLmg+CisgI2luY2x1ZGUgPFF0R3VpL3FwYS9xcGxhdGZvcm10aGVtZS5o PgorICNpbmNsdWRlIDxRdENvcmUvcWxvZ2dpbmdjYXRlZ29yeS5oPgorKyNpbmNsdWRlIDxRdENv cmUvcHJpdmF0ZS9xZHVwbGljYXRldHJhY2tlcl9wLmg+CisgCisgI2luY2x1ZGUgPHByaXZhdGUv cXFtbGdsb2JhbF9wLmg+CisgI2luY2x1ZGUgPHByaXZhdGUvcXFtbGVuZ2luZV9wLmg+CitAQCAt MjMyNiw2ICsyMzI3LDcgQEAgUVF1aWNrSXRlbTo6UVF1aWNrSXRlbShRUXVpY2tJdGVtUHJpdmF0 ZSAmZGQsIFFRdWlja0l0ZW0gKnBhcmVudCkKKyBRUXVpY2tJdGVtOjp+UVF1aWNrSXRlbSgpCisg eworICAgICBRX0QoUVF1aWNrSXRlbSk7CisrICAgIGQtPmluRGVzdHJ1Y3RvciA9IHRydWU7Cisg CisgICAgIGlmIChkLT53aW5kb3dSZWZDb3VudCA+IDEpCisgICAgICAgICBkLT53aW5kb3dSZWZD b3VudCA9IDE7IC8vIE1ha2Ugc3VyZSB3aW5kb3cgaXMgc2V0IHRvIG51bGwgaW4gbmV4dCBjYWxs IHRvIGRlcmVmV2luZG93KCkuCitAQCAtMjUyNiw2ICsyNTI4LDcgQEAgUVF1aWNrSXRlbSogUVF1 aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbihRUXVpY2tJdGVtICpp dGVtLCBib28KKyAgICAgUVF1aWNrSXRlbSAqY3VycmVudCA9IGl0ZW07CisgICAgIHFDRGVidWco REJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXND aGFpbjogc3RhcnRJdGVtOiIgPDwgc3RhcnRJdGVtOworICAgICBxQ0RlYnVnKERCR19GT0NVUykg PDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IGZpcnN0 RnJvbUl0ZW06IiA8PCBmaXJzdEZyb21JdGVtOworKyAgICBRRHVwbGljYXRlVHJhY2tlcjxRUXVp Y2tJdGVtICo+IGN5Y2xlRGV0ZWN0b3I7CisgICAgIGRvIHsKKyAgICAgICAgIHFDRGVidWcoREJH X0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFp bjogY3VycmVudDoiIDw8IGN1cnJlbnQ7CisgICAgICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwg IlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IGZyb206IiA8 PCBmcm9tOworQEAgLTI1OTIsNyArMjU5NSwxMCBAQCBRUXVpY2tJdGVtKiBRUXVpY2tJdGVtUHJp dmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluKFFRdWlja0l0ZW0gKml0ZW0sIGJvbwor ICAgICAgICAgLy8gdHJhdmVyc2VkIGFsbCBvZiB0aGUgY2hhaW4gKGJ5IGNvbXBhcmUgdGhlIFtj dXJyZW50XSBpdGVtIHdpdGggW3N0YXJ0SXRlbV0pCisgICAgICAgICAvLyBTaW5jZSB0aGUgW3N0 YXJ0SXRlbV0gbWlnaHQgYmUgcHJvbW90ZWQgdG8gaXRzIHBhcmVudCBpZiBpdCBpcyBpbnZpc2li bGUsCisgICAgICAgICAvLyB3ZSBzdGlsbCBoYXZlIHRvIGNoZWNrIFtjdXJyZW50XSBpdGVtIHdp dGggb3JpZ2luYWwgc3RhcnQgaXRlbQorLSAgICAgICAgaWYgKChjdXJyZW50ID09IHN0YXJ0SXRl bSB8fCBjdXJyZW50ID09IG9yaWdpbmFsU3RhcnRJdGVtKSAmJiBmcm9tID09IGZpcnN0RnJvbUl0 ZW0pIHsKKysgICAgICAgIC8vIFdlIG1pZ2h0IGFsc28gcnVuIGludG8gYSBjeWNsZSBiZWZvcmUg d2UgcmVhY2ggZmlyc3RGcm9tSXRlbSBhZ2FpbgorKyAgICAgICAgLy8gYnV0IG5vdGUgdGhhdCB3 ZSBoYXZlIHRvIGlnbm9yZSBjdXJyZW50IGlmIHdlIGFyZSBtZWFudCB0byBza2lwIGl0CisrICAg ICAgICBpZiAoKChjdXJyZW50ID09IHN0YXJ0SXRlbSB8fCBjdXJyZW50ID09IG9yaWdpbmFsU3Rh cnRJdGVtKSAmJiBmcm9tID09IGZpcnN0RnJvbUl0ZW0pIHx8CisrICAgICAgICAgICAgICAgICgh c2tpcCAmJiBjeWNsZURldGVjdG9yLmhhc1NlZW4oY3VycmVudCkpKSB7CisgICAgICAgICAgICAg Ly8gd3JhcHBlZCBhcm91bmQsIGF2b2lkIGVuZGxlc3MgbG9vcHMKKyAgICAgICAgICAgICBpZiAo aXRlbSA9PSBjb250ZW50SXRlbSkgeworICAgICAgICAgICAgICAgICBxQ0RlYnVnKERCR19GT0NV UykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IGxv b3BlZCwgcmV0dXJuIGNvbnRlbnRJdGVtIjsKK0BAIC0yNjg5LDkgKzI2OTUsOCBAQCB2b2lkIFFR dWlja0l0ZW06OnNldFBhcmVudEl0ZW0oUVF1aWNrSXRlbSAqcGFyZW50SXRlbSkKKyAKKyAgICAg ICAgIGNvbnN0IGJvb2wgd2FzVmlzaWJsZSA9IGlzVmlzaWJsZSgpOworICAgICAgICAgb3AtPnJl bW92ZUNoaWxkKHRoaXMpOworLSAgICAgICAgaWYgKHdhc1Zpc2libGUpIHsKKysgICAgICAgIGlm ICh3YXNWaXNpYmxlICYmICFvcC0+aW5EZXN0cnVjdG9yKQorICAgICAgICAgICAgIGVtaXQgb2xk UGFyZW50SXRlbS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworLSAgICAgICAgfQorICAgICB9 IGVsc2UgaWYgKGQtPndpbmRvdykgeworICAgICAgICAgUVF1aWNrV2luZG93UHJpdmF0ZTo6Z2V0 KGQtPndpbmRvdyktPnBhcmVudGxlc3NJdGVtcy5yZW1vdmUodGhpcyk7CisgICAgIH0KK0BAIC0y NzY4LDggKzI3NzMsOSBAQCB2b2lkIFFRdWlja0l0ZW06OnNldFBhcmVudEl0ZW0oUVF1aWNrSXRl bSAqcGFyZW50SXRlbSkKKyAKKyAgICAgZC0+aXRlbUNoYW5nZShJdGVtUGFyZW50SGFzQ2hhbmdl ZCwgZC0+cGFyZW50SXRlbSk7CisgCistICAgIGVtaXQgcGFyZW50Q2hhbmdlZChkLT5wYXJlbnRJ dGVtKTsKKy0gICAgaWYgKGlzVmlzaWJsZSgpICYmIGQtPnBhcmVudEl0ZW0pCisrICAgIGlmICgh ZC0+aW5EZXN0cnVjdG9yKQorKyAgICAgICAgZW1pdCBwYXJlbnRDaGFuZ2VkKGQtPnBhcmVudEl0 ZW0pOworKyAgICBpZiAoaXNWaXNpYmxlKCkgJiYgZC0+cGFyZW50SXRlbSAmJiAhUVF1aWNrSXRl bVByaXZhdGU6OmdldChkLT5wYXJlbnRJdGVtKS0+aW5EZXN0cnVjdG9yKQorICAgICAgICAgZW1p dCBkLT5wYXJlbnRJdGVtLT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CisgfQorIAorQEAgLTI5 NjUsNyArMjk3MSw4IEBAIHZvaWQgUVF1aWNrSXRlbVByaXZhdGU6OnJlbW92ZUNoaWxkKFFRdWlj a0l0ZW0gKmNoaWxkKQorIAorICAgICBpdGVtQ2hhbmdlKFFRdWlja0l0ZW06Okl0ZW1DaGlsZFJl bW92ZWRDaGFuZ2UsIGNoaWxkKTsKKyAKKy0gICAgZW1pdCBxLT5jaGlsZHJlbkNoYW5nZWQoKTsK KysgICAgaWYgKCFpbkRlc3RydWN0b3IpCisrICAgICAgICBlbWl0IHEtPmNoaWxkcmVuQ2hhbmdl ZCgpOworIH0KKyAKKyB2b2lkIFFRdWlja0l0ZW1Qcml2YXRlOjpyZWZXaW5kb3coUVF1aWNrV2lu ZG93ICpjKQorQEAgLTMxOTQsNiArMzIwMSw3IEBAIFFRdWlja0l0ZW1Qcml2YXRlOjpRUXVpY2tJ dGVtUHJpdmF0ZSgpCisgICAgICwgdG91Y2hFbmFibGVkKGZhbHNlKQorICNlbmRpZgorICAgICAs IGhhc0N1cnNvckhhbmRsZXIoZmFsc2UpCisrICAgICwgaW5EZXN0cnVjdG9yKGZhbHNlKQorICAg ICAsIGRpcnR5QXR0cmlidXRlcygwKQorICAgICAsIG5leHREaXJ0eUl0ZW0obnVsbHB0cikKKyAg ICAgLCBwcmV2RGlydHlJdGVtKG51bGxwdHIpCitAQCAtNTEyMCw2ICs1MTI4LDEzIEBAIHZvaWQg UVF1aWNrSXRlbTo6Y29tcG9uZW50Q29tcGxldGUoKQorICAgICAgICAgZC0+YWRkVG9EaXJ0eUxp c3QoKTsKKyAgICAgICAgIFFRdWlja1dpbmRvd1ByaXZhdGU6OmdldChkLT53aW5kb3cpLT5kaXJ0 eUl0ZW0odGhpcyk7CisgICAgIH0KKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisr ICAgIGlmIChkLT5pc0FjY2Vzc2libGUgJiYgZC0+ZWZmZWN0aXZlVmlzaWJsZSkgeworKyAgICAg ICAgUUFjY2Vzc2libGVFdmVudCBldih0aGlzLCBRQWNjZXNzaWJsZTo6T2JqZWN0U2hvdyk7Cisr ICAgICAgICBRQWNjZXNzaWJsZTo6dXBkYXRlQWNjZXNzaWJpbGl0eSgmZXYpOworKyAgICB9Cisr I2VuZGlmCisgfQorIAorIFFRdWlja1N0YXRlR3JvdXAgKlFRdWlja0l0ZW1Qcml2YXRlOjpfc3Rh dGVzKCkKK0BAIC02MTA2LDkgKzYxMjEsMTEgQEAgYm9vbCBRUXVpY2tJdGVtUHJpdmF0ZTo6c2V0 RWZmZWN0aXZlVmlzaWJsZVJlY3VyKGJvb2wgbmV3RWZmZWN0aXZlVmlzaWJsZSkKKyAgICAgICAg IFFBY2Nlc3NpYmxlOjp1cGRhdGVBY2Nlc3NpYmlsaXR5KCZldik7CisgICAgIH0KKyAjZW5kaWYK Ky0gICAgZW1pdCBxLT52aXNpYmxlQ2hhbmdlZCgpOworLSAgICBpZiAoY2hpbGRWaXNpYmlsaXR5 Q2hhbmdlZCkKKy0gICAgICAgIGVtaXQgcS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworKyAg ICBpZiAoIWluRGVzdHJ1Y3RvcikgeworKyAgICAgICAgZW1pdCBxLT52aXNpYmxlQ2hhbmdlZCgp OworKyAgICAgICAgaWYgKGNoaWxkVmlzaWJpbGl0eUNoYW5nZWQpCisrICAgICAgICAgICAgZW1p dCBxLT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CisrICAgIH0KKyAKKyAgICAgcmV0dXJuIHRy dWU7ICAgIC8vIGVmZmVjdGl2ZSB2aXNpYmlsaXR5IERJRCBjaGFuZ2UKKyB9CitAQCAtNjE1Nyw2 ICs2MTc0LDE1IEBAIHZvaWQgUVF1aWNrSXRlbVByaXZhdGU6OnNldEVmZmVjdGl2ZUVuYWJsZVJl Y3VyKFFRdWlja0l0ZW0gKnNjb3BlLCBib29sIG5ld0VmZmVjCisgICAgIH0KKyAKKyAgICAgaXRl bUNoYW5nZShRUXVpY2tJdGVtOjpJdGVtRW5hYmxlZEhhc0NoYW5nZWQsIGVmZmVjdGl2ZUVuYWJs ZSk7CisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKyAgICBpZiAoaXNBY2Nlc3NpYmxl KSB7CisrICAgICAgICBRQWNjZXNzaWJsZTo6U3RhdGUgY2hhbmdlZFN0YXRlOworKyAgICAgICAg Y2hhbmdlZFN0YXRlLmRpc2FibGVkID0gdHJ1ZTsKKysgICAgICAgIGNoYW5nZWRTdGF0ZS5mb2N1 c2FibGUgPSB0cnVlOworKyAgICAgICAgUUFjY2Vzc2libGVTdGF0ZUNoYW5nZUV2ZW50IGV2KHEs IGNoYW5nZWRTdGF0ZSk7CisrICAgICAgICBRQWNjZXNzaWJsZTo6dXBkYXRlQWNjZXNzaWJpbGl0 eSgmZXYpOworKyAgICB9CisrI2VuZGlmCisgICAgIGVtaXQgcS0+ZW5hYmxlZENoYW5nZWQoKTsK KyB9CisgCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNr aXRlbV9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaAor aW5kZXggODQxZDkxYmI0MC4uYWRlOGZiNjFmMiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW1fcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9x dWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaAorQEAgLTQ3Miw2ICs0NzIsNyBAQCBwdWJsaWM6Cisg ICAgIGJvb2wgcmVwbGF5aW5nUHJlc3NFdmVudDoxOworICAgICBib29sIHRvdWNoRW5hYmxlZDox OworICAgICBib29sIGhhc0N1cnNvckhhbmRsZXI6MTsKKysgICAgcXVpbnQzMiBpbkRlc3RydWN0 b3I6MTsgLy8gaGFzIGVudGVyZWQgflFRdWlja0l0ZW0KKyAKKyAgICAgZW51bSBEaXJ0eVR5cGUg eworICAgICAgICAgVHJhbnNmb3JtT3JpZ2luICAgICAgICAgPSAweDAwMDAwMDAxLAorZGlmZiAt LWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcCBi L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcAoraW5kZXgg MDEwYTAxNTJlMS4uZjhhZDE2OGExNyAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVp Y2svaXRlbXMvcXF1aWNraXRlbXZpZXcuY3BwCitAQCAtMTc4NSw3ICsxNzg1LDcgQEAgdm9pZCBR UXVpY2tJdGVtVmlld1ByaXZhdGU6OnJlZmlsbChxcmVhbCBmcm9tLCBxcmVhbCB0bykKKyAKKyAg ICAgZG8geworICAgICAgICAgYnVmZmVyUGF1c2Uuc3RvcCgpOworLSAgICAgICAgaWYgKGN1cnJl bnRDaGFuZ2VzLmhhc1BlbmRpbmdDaGFuZ2VzKCkgfHwgYnVmZmVyZWRDaGFuZ2VzLmhhc1BlbmRp bmdDaGFuZ2VzKCkpIHsKKysgICAgICAgIGlmIChjdXJyZW50Q2hhbmdlcy5oYXNQZW5kaW5nQ2hh bmdlcygpIHx8IGJ1ZmZlcmVkQ2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpIHx8IGN1cnJlbnRD aGFuZ2VzLmFjdGl2ZSkgeworICAgICAgICAgICAgIGN1cnJlbnRDaGFuZ2VzLnJlc2V0KCk7Cisg ICAgICAgICAgICAgYnVmZmVyZWRDaGFuZ2VzLnJlc2V0KCk7CisgICAgICAgICAgICAgcmVsZWFz ZVZpc2libGVJdGVtcyhyZXVzYWJsZUZsYWcpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaAoraW5kZXggZmJhMzgzZTI2OC4uMGQ2 MzYxODYyMiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlj a21vdXNlYXJlYV9wX3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1 aWNrbW91c2VhcmVhX3BfcC5oCitAQCAtNjEsNyArNjEsNiBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UK KyAKKyBjbGFzcyBRUXVpY2tNb3VzZUV2ZW50OworIGNsYXNzIFFRdWlja01vdXNlQXJlYTsKKy1j bGFzcyBRUXVpY2tQb2ludGVyTWFzazsKKyBjbGFzcyBRUXVpY2tNb3VzZUFyZWFQcml2YXRlIDog cHVibGljIFFRdWlja0l0ZW1Qcml2YXRlCisgeworICAgICBRX0RFQ0xBUkVfUFVCTElDKFFRdWlj a01vdXNlQXJlYSkKK0BAIC0xMDAsNyArOTksNiBAQCBwdWJsaWM6CisgI2lmIFFUX0NPTkZJRyhx dWlja19kcmFnYW5kZHJvcCkKKyAgICAgUVF1aWNrRHJhZyAqZHJhZzsKKyAjZW5kaWYKKy0gICAg UVBvaW50ZXI8UVF1aWNrUG9pbnRlck1hc2s+IG1hc2s7CisgICAgIFFQb2ludEYgc3RhcnRTY2Vu ZTsKKyAgICAgUVBvaW50RiB0YXJnZXRTdGFydFBvczsKKyAgICAgUVBvaW50RiBsYXN0UG9zOwor ZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja3RleHQuY3Bw IGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4dC5jcHAKK2luZGV4IDYy MzAxODY5MzMuLmU4MjNjYTEwOTUgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj ay9pdGVtcy9xcXVpY2t0ZXh0LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRl bXMvcXF1aWNrdGV4dC5jcHAKK0BAIC0yMTY4LDcgKzIxNjgsNyBAQCB2b2lkIFFRdWlja1RleHQ6 OnJlc2V0TWF4aW11bUxpbmVDb3VudCgpCisgICAgIDxpbWcgc3JjPSIiIGFsaWduPSJ0b3AsbWlk ZGxlLGJvdHRvbSIgd2lkdGg9IiIgaGVpZ2h0PSIiPiAtIGlubGluZSBpbWFnZXMKKyAgICAgPG9s IHR5cGU9IiI+LCA8dWwgdHlwZT0iIj4gYW5kIDxsaT4gLSBvcmRlcmVkIGFuZCB1bm9yZGVyZWQg bGlzdHMKKyAgICAgPHByZT48L3ByZT4gLSBwcmVmb3JtYXR0ZWQKKy0gICAgJmd0OyAmbHQ7ICZh bXA7CisrICAgICZndDsgJmx0OyAmYW1wOyAmcXVvdDsgJm5ic3A7ICZhcG9zOworICAgICBcZW5k Y29kZQorIAorICAgICBcYyBUZXh0LlN0eWxlZFRleHQgcGFyc2VyIGlzIHN0cmljdCwgcmVxdWly aW5nIHRhZ3MgdG8gYmUgY29ycmVjdGx5IG5lc3RlZC4KK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0 aXZlL3NyYy9xdWljay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNw cCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgvcXNncmhpZGlzdGFuY2VmaWVs ZGdseXBoY2FjaGUuY3BwCitpbmRleCBlYjRkYjBmODVlLi4yMzI1YTI2NjViIDEwMDY0NAorLS0t IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0YW5jZWZpZWxk Z2x5cGhjYWNoZS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgv cXNncmhpZGlzdGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwCitAQCAtNDQ2LDcgKzQ0Niw3IEBAIGJv b2wgUVNHUmhpRGlzdGFuY2VGaWVsZEdseXBoQ2FjaGU6OmxvYWRQcmVnZW5lcmF0ZWRDYWNoZShj b25zdCBRUmF3Rm9udCAmZm9udCkKKyAKKyAgICAgICAgIGNvbnN0IGNoYXIgKnRleHR1cmVSZWNv cmQgPSBhbGxvY2F0b3JEYXRhOworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXh0dXJl Q291bnQ7ICsraSwgdGV4dHVyZVJlY29yZCArPSBRdGRmOjpUZXh0dXJlUmVjb3JkU2l6ZSkgewor LSAgICAgICAgICAgIGlmICh0ZXh0dXJlUmVjb3JkICsgUXRkZjo6VGV4dHVyZVJlY29yZFNpemUg PiBxdGRmVGFibGVFbmQpIHsKKysgICAgICAgICAgICBpZiAocXRkZlRhYmxlRW5kIC0gdGV4dHVy ZVJlY29yZCA8IFF0ZGY6OlRleHR1cmVSZWNvcmRTaXplKSB7CisgICAgICAgICAgICAgICAgIHFX YXJuaW5nKCJxdGRmIHRhYmxlIHRvbyBzbWFsbCBpbiBmb250ICclcycuIiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgcVByaW50YWJsZShmb250LmZhbWlseU5hbWUoKSkpOworICAgICAgICAg ICAgICAgICByZXR1cm4gZmFsc2U7CitAQCAtNDYyLDcgKzQ2Miw3IEBAIGJvb2wgUVNHUmhpRGlz dGFuY2VGaWVsZEdseXBoQ2FjaGU6OmxvYWRQcmVnZW5lcmF0ZWRDYWNoZShjb25zdCBRUmF3Rm9u dCAmZm9udCkKKyAKKyAgICAgICAgIGNvbnN0IGNoYXIgKmdseXBoUmVjb3JkID0gdGV4dHVyZVJl Y29yZDsKKyAgICAgICAgIGZvciAocXVpbnQzMiBpID0gMDsgaSA8IGdseXBoQ291bnQ7ICsraSwg Z2x5cGhSZWNvcmQgKz0gUXRkZjo6R2x5cGhSZWNvcmRTaXplKSB7CistICAgICAgICAgICAgaWYg KGdseXBoUmVjb3JkICsgUXRkZjo6R2x5cGhSZWNvcmRTaXplID4gcXRkZlRhYmxlRW5kKSB7Cisr ICAgICAgICAgICAgaWYgKHF0ZGZUYWJsZUVuZCAtIGdseXBoUmVjb3JkIDwgUXRkZjo6IEdseXBo UmVjb3JkU2l6ZSkgeworICAgICAgICAgICAgICAgICBxV2FybmluZygicXRkZiB0YWJsZSB0b28g c21hbGwgaW4gZm9udCAnJXMnLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHFQcmludGFi bGUoZm9udC5mYW1pbHlOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor QEAgLTUxMiw4ICs1MTIsOCBAQCBib29sIFFTR1JoaURpc3RhbmNlRmllbGRHbHlwaENhY2hlOjps b2FkUHJlZ2VuZXJhdGVkQ2FjaGUoY29uc3QgUVJhd0ZvbnQgJmZvbnQpCisgCisgICAgICAgICAg ICAgaW50IHdpZHRoID0gdGV4SW5mby0+YWxsb2NhdGVkQXJlYS53aWR0aCgpOworICAgICAgICAg ICAgIGludCBoZWlnaHQgPSB0ZXhJbmZvLT5hbGxvY2F0ZWRBcmVhLmhlaWdodCgpOworLSAgICAg ICAgICAgIHFpbnQ2NCBzaXplID0gd2lkdGggKiBoZWlnaHQ7CistICAgICAgICAgICAgaWYgKHJl aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPih0ZXh0dXJlRGF0YSArIHNpemUpID4gcXRkZlRh YmxlRW5kKSB7CisrICAgICAgICAgICAgcWludDY0IHNpemUgPSBxaW50NjQod2lkdGgpICogaGVp Z2h0OworKyAgICAgICAgICAgIGlmIChxdGRmVGFibGVFbmQgLSByZWludGVycHJldF9jYXN0PGNv bnN0IGNoYXIgKj4odGV4dHVyZURhdGEpIDwgc2l6ZSkgeworICAgICAgICAgICAgICAgICBxV2Fy bmluZygicXRkZiB0YWJsZSB0b28gc21hbGwgaW4gZm9udCAnJXMnLiIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHFQcmludGFibGUoZm9udC5mYW1pbHlOYW1lKCkpKTsKKyAgICAgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr L3V0aWwvcXF1aWNrc3R5bGVkdGV4dC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay91dGls L3FxdWlja3N0eWxlZHRleHQuY3BwCitpbmRleCBkNTMxZmM5MjA1Li5hMjVhZjkwNDE0IDEwMDY0 NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHlsZWR0ZXh0LmNw cAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHlsZWR0ZXh0LmNw cAorQEAgLTU2NCw2ICs1NjQsOCBAQCB2b2lkIFFRdWlja1N0eWxlZFRleHRQcml2YXRlOjpwYXJz ZUVudGl0eShjb25zdCBRQ2hhciAqJmNoLCBjb25zdCBRU3RyaW5nICZ0ZXh0SQorICAgICAgICAg ICAgICAgICB0ZXh0T3V0ICs9IFFDaGFyKDYwKTsKKyAgICAgICAgICAgICBlbHNlIGlmIChlbnRp dHkgPT0gUUxhdGluMVN0cmluZygiYW1wIikpCisgICAgICAgICAgICAgICAgIHRleHRPdXQgKz0g UUNoYXIoMzgpOworKyAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3RyaW5n KCJhcG9zIikpCisrICAgICAgICAgICAgICAgIHRleHRPdXQgKz0gUUNoYXIoMzkpOworICAgICAg ICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3RyaW5nKCJxdW90IikpCisgICAgICAg ICAgICAgICAgIHRleHRPdXQgKz0gUUNoYXIoMzQpOworICAgICAgICAgICAgIGVsc2UgaWYgKGVu dGl0eSA9PSBRTGF0aW4xU3RyaW5nKCJuYnNwIikpCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwIGIvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uOGExYzkwMTg4MAorLS0tIC9kZXYvbnVs bAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3 aWRnZXQuY3BwCitAQCAtMCwwICsxLDExMCBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioK KysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6 IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBRdFF1aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9C RUdJTl9MSUNFTlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGlj ZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMg ZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVl bWVudCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBp biBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBh Z3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRl cm1zCisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRp dGlvbnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0g YXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBt YXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BM MyBpbmNsdWRlZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2 aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2ls bCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysq KgorKyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVs eSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiog R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRo ZSBHTlUgR2VuZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIg dmVyc2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUg bGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5k YXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0Uu R1BMMworKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2Ug cmV2aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRw czovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5T RSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2luY2x1ZGUgInFhY2Nlc3NpYmxl cXVpY2t3aWRnZXRfcC5oIgorKworKyNpbmNsdWRlICJxcXVpY2t3aWRnZXRfcC5oIgorKworK1FU X0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysKKytR QWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0KFFRdWlja1dpZGdl dCogd2lkZ2V0KQorKzogUUFjY2Vzc2libGVXaWRnZXQod2lkZ2V0KQorKywgbV9hY2Nlc3NpYmxl V2luZG93KFFRdWlja1dpZGdldFByaXZhdGU6OmdldCh3aWRnZXQpLT5vZmZzY3JlZW5XaW5kb3cp CisreworKyAgICAvLyBOT1RFOiBtX2FjY2Vzc2libGVXaW5kb3cgaXMgYSBRQWNjZXNzaWJsZVF1 aWNrV2luZG93LCBhbmQgbm90IGEKKysgICAgLy8gUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNj cmVlbldpbmRvdyAoZGVmaW5lZCBiZWxvdykuIFRoaXMgbWVhbnMKKysgICAgLy8gaXQgd2lsbCBy ZXR1cm4gdGhlIFF1aWNrIGl0ZW0gY2hpbGQgaW50ZXJmYWNlcywgd2hpY2ggaXMgd2hhdCdzIG5l ZWRlZCBoZXJlCisrICAgIC8vICh1bmxpa2UgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVl bldpbmRvdywgd2hpY2ggd2lsbCByZXBvcnQgMCBjaGlsZHJlbikuCisrfQorKworK1FBY2Nlc3Np YmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjpjaGlsZChpbnQgaW5kZXgpIGNv bnN0CisreworKyAgICByZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93LmNoaWxkKGluZGV4KTsKKyt9 CisrCisraW50IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OmNoaWxkQ291bnQoKSBjb25zdAorK3sK KysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5jaGlsZENvdW50KCk7CisrfQorKworK2lu dCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjppbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJ bnRlcmZhY2UgKmlmYWNlKSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRv dy5pbmRleE9mQ2hpbGQoaWZhY2UpOworK30KKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFj Y2Vzc2libGVRdWlja1dpZGdldDo6Y2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0CisreworKyAg ICByZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93LmNoaWxkQXQoeCwgeSk7CisrfQorKworK1FBY2Nl c3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRP ZmZzY3JlZW5XaW5kb3coUVF1aWNrV2luZG93ICp3aW5kb3cpCisrOlFBY2Nlc3NpYmxlUXVpY2tX aW5kb3cod2luZG93KQorK3sKKysKKyt9CisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nl c3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OmNoaWxkKGludCBpbmRleCkgY29uc3QK Kyt7CisrICAgIFFfVU5VU0VEKGluZGV4KTsKKysgICAgcmV0dXJuIG51bGxwdHI7CisrfQorKwor K2ludCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpjaGlsZENvdW50KCkg Y29uc3QKKyt7CisrICAgIHJldHVybiAwOworK30KKysKKytpbnQgUUFjY2Vzc2libGVRdWlja1dp ZGdldE9mZnNjcmVlbldpbmRvdzo6aW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJm YWNlICppZmFjZSkgY29uc3QKKyt7CisrICAgIFFfVU5VU0VEKGlmYWNlKTsKKysgICAgcmV0dXJu IC0xOworK30KKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja1dpZGdl dE9mZnNjcmVlbldpbmRvdzo6UUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6 Y2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0CisreworKyAgICBRX1VOVVNFRCh4KTsKKysgICAg UV9VTlVTRUQoeSk7CisrICAgIHJldHVybiBudWxscHRyOworK30KKysKKysjZW5kaWYgLy8gYWNj ZXNzaWJpbGl0eQorKworK1FUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0 aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmggYi9xdGRlY2xh cmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmgKK25ldyBm aWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43YzJhYjkzMGUwCistLS0gL2Rldi9u dWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlj a3dpZGdldF9wLmgKK0BAIC0wLDAgKzEsOTUgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyoq CisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb250YWN0 OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRf QkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExp Y2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlz IGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3Jl ZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwg aW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4g YWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0 ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25k aXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3Jt IGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUg bWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiogR2VuZXJh bCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQ TDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJl dmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cworKyoqIHdp bGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCisr KioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZl bHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorKyoq IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0 aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVy IHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlvbi4gVGhl IGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3Vu ZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNF LkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNl IHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1ldDogaHR0 cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0cHM6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5EX0xJQ0VO U0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpZm5kZWYgUUFDQ0VTU0lCTEVR VUlDS1dJREdFVF9ICisrI2RlZmluZSBRQUNDRVNTSUJMRVFVSUNLV0lER0VUX0gKKysKKysvLwor Ky8vICBXIEEgUiBOIEkgTiBHCisrLy8gIC0tLS0tLS0tLS0tLS0KKysvLworKy8vIFRoaXMgZmls ZSBpcyBub3QgcGFydCBvZiB0aGUgUXQgQVBJLiAgSXQgZXhpc3RzIHB1cmVseSBhcyBhbgorKy8v IGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFRoaXMgaGVhZGVyIGZpbGUgbWF5IGNoYW5nZSBmcm9t IHZlcnNpb24gdG8KKysvLyB2ZXJzaW9uIHdpdGhvdXQgbm90aWNlLCBvciBldmVuIGJlIHJlbW92 ZWQuCisrLy8KKysvLyBXZSBtZWFuIGl0LgorKy8vCisrCisrI2luY2x1ZGUgInFxdWlja3dpZGdl dC5oIgorKyNpbmNsdWRlIDxRdFdpZGdldHMvcWFjY2Vzc2libGV3aWRnZXQuaD4KKysKKysjaW5j bHVkZSA8cHJpdmF0ZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmg+CisrCisrUVRfQkVHSU5fTkFN RVNQQUNFCisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKworKy8vIFRoZXNlIGNs YXNzZXMgaW1wbGVtZW50IHRoZSBRUXVpY2tXaWdldCBhY2Nlc3NpYmlsaXR5IHN3aXRjaGFyb28s CisrLy8gd2hlcmUgdGhlIGNoaWxkIGl0ZW1zIG9mIHRoZSBRUXVpY2tXaWRnZXRPZmZzY3JlZW5X aW5kb3cgYXJlIHJlcG9ydGVkCisrLy8gYXMgY2hpbGQgYWNjZXNzaWJsZSBpbnRlcmZhY2VzIG9m IHRoZSBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0LgorK2NsYXNzIFFBY2Nlc3NpYmxlUXVpY2tXaWRn ZXQ6IHB1YmxpYyBRQWNjZXNzaWJsZVdpZGdldAorK3sKKytwdWJsaWM6CisrICAgIFFBY2Nlc3Np YmxlUXVpY2tXaWRnZXQoUVF1aWNrV2lkZ2V0KiB3aWRnZXQpOworKworKyAgICBRQWNjZXNzaWJs ZUludGVyZmFjZSAqY2hpbGQoaW50IGluZGV4KSBjb25zdCBvdmVycmlkZTsKKysgICAgaW50IGNo aWxkQ291bnQoKSBjb25zdCBvdmVycmlkZTsKKysgICAgaW50IGluZGV4T2ZDaGlsZChjb25zdCBR QWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UpIGNvbnN0IG92ZXJyaWRlOworKyAgICBRQWNjZXNz aWJsZUludGVyZmFjZSAqY2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0IG92ZXJyaWRlOworKwor K3ByaXZhdGU6CisrICAgIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cgbV9hY2Nlc3NpYmxlV2luZG93 OworKyAgICBRX0RJU0FCTEVfQ09QWShRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0KQorK307CisrCisr Y2xhc3MgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzogcHVibGljIFFBY2Nl c3NpYmxlUXVpY2tXaW5kb3cKKyt7CisrcHVibGljOgorKyAgICBRQWNjZXNzaWJsZVF1aWNrV2lk Z2V0T2Zmc2NyZWVuV2luZG93KFFRdWlja1dpbmRvdyAqd2luZG93KTsKKysgICAgUUFjY2Vzc2li bGVJbnRlcmZhY2UgKmNoaWxkKGludCBpbmRleCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGludCBj aGlsZENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGludCBpbmRleE9mQ2hpbGQoY29uc3Qg UUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdCBvdmVycmlkZTsKKysgICAgUUFjY2Vz c2libGVJbnRlcmZhY2UgKmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdCBvdmVycmlkZTsKKyt9 OworKworKyNlbmRpZiAvLyBhY2Nlc3NpYmlsaXR5CisrCisrUVRfRU5EX05BTUVTUEFDRQorKwor KyNlbmRpZgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNj ZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dp ZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnkuY3BwCituZXcgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggMDAwMDAwMDAwMC4uN2JhODhhMTc2OQorLS0tIC9kZXYvbnVsbAorKysrIGIv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0 b3J5LmNwcAorQEAgLTAsMCArMSw2MCBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysq KiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0 dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSBRdFF1aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJ Tl9MSUNFTlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5z ZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmls ZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVu dCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBh Y2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3Jl ZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1z CisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlv bnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQg aHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkg YmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK KysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBp bmNsdWRlZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3 IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBi ZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgor KyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwg dGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBH TlUgR2VuZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVy c2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGlj ZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRp b24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BM MworKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2 aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczov L3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5n bnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQK KysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2luY2x1ZGUgInFhY2Nlc3NpYmxlcXVp Y2t3aWRnZXRmYWN0b3J5X3AuaCIKKysjaW5jbHVkZSAicWFjY2Vzc2libGVxdWlja3dpZGdldF9w LmgiCisrCisrUVRfQkVHSU5fTkFNRVNQQUNFCisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmls aXR5KQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpxQWNjZXNzaWJsZVF1aWNrV2lkZ2V0RmFj dG9yeShjb25zdCBRU3RyaW5nICZjbGFzc25hbWUsIFFPYmplY3QgKm9iamVjdCkKKyt7CisrICAg IGlmIChjbGFzc25hbWUgPT0gUUxhdGluMVN0cmluZygiUVF1aWNrV2lkZ2V0IikpIHsKKysgICAg ICAgIHJldHVybiBuZXcgUUFjY2Vzc2libGVRdWlja1dpZGdldChxb2JqZWN0X2Nhc3Q8UVF1aWNr V2lkZ2V0ICo+KG9iamVjdCkpOworKyAgICB9IGVsc2UgaWYgKGNsYXNzbmFtZSA9PSBRTGF0aW4x U3RyaW5nKCJRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3ciKSkgeworKyAgICAgICAgcmV0dXJu IG5ldyBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KHFvYmplY3RfY2FzdDxR UXVpY2tXaW5kb3cgKj4ob2JqZWN0KSk7CisrICAgIH0KKysgICAgcmV0dXJuIDA7CisrfQorKwor KyNlbmRpZiAvLyBhY2Nlc3NpYmlsaXR5CisrCisrUVRfRU5EX05BTUVTUEFDRQorKworZGlmZiAt LWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lk Z2V0ZmFjdG9yeV9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2li bGVxdWlja3dpZGdldGZhY3RvcnlfcC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw MDAwMDAwMC4uOGM2M2IwOWY4MQorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaAorQEAgLTAs MCArMSw2NiBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMp IDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0Lmlv L2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFF1aWNrIG1v ZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwk CisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFs aWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29y ZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRo IHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGgg dGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5 b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRp dGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVy CisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQu aW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZl cnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9u IGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUK KysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcg aW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBi ZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAorKyoq IFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBi eSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmlu ZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGluY2x1ZGVk IGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dp bmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz L2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisrCisrI2luY2x1ZGUgPFF0R3VpL3FhY2Nlc3NpYmxlLmg+CisrCisrI2lm bmRlZiBRQUNDRVNTSUJMRVFVSUNLV0lER0VURkFDVE9SWV9ICisrI2RlZmluZSBRQUNDRVNTSUJM RVFVSUNLV0lER0VURkFDVE9SWV9ICisrCisrLy8KKysvLyAgVyBBIFIgTiBJIE4gRworKy8vICAt LS0tLS0tLS0tLS0tCisrLy8KKysvLyBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2YgdGhlIFF0IEFQ SS4gIEl0IGV4aXN0cyBwdXJlbHkgYXMgYW4KKysvLyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBU aGlzIGhlYWRlciBmaWxlIG1heSBjaGFuZ2UgZnJvbSB2ZXJzaW9uIHRvCisrLy8gdmVyc2lvbiB3 aXRob3V0IG5vdGljZSwgb3IgZXZlbiBiZSByZW1vdmVkLgorKy8vCisrLy8gV2UgbWVhbiBpdC4K KysvLworKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJp bGl0eSkKKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqcUFjY2Vzc2libGVRdWlja1dpZGdldEZh Y3RvcnkoY29uc3QgUVN0cmluZyAmY2xhc3NuYW1lLCBRT2JqZWN0ICpvYmplY3QpOworKworKyNl bmRpZgorKworK1FUX0VORF9OQU1FU1BBQ0UKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGRl Y2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcCBiL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3BwCitpbmRleCAzOTc4MGY4ZGUzLi45 Yzk3YjQzNTE4IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3Fx dWlja3dpZGdldC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVp Y2t3aWRnZXQuY3BwCitAQCAtMzksNiArMzksNyBAQAorIAorICNpbmNsdWRlICJxcXVpY2t3aWRn ZXQuaCIKKyAjaW5jbHVkZSAicXF1aWNrd2lkZ2V0X3AuaCIKKysjaW5jbHVkZSAicWFjY2Vzc2li bGVxdWlja3dpZGdldGZhY3RvcnlfcC5oIgorIAorICNpbmNsdWRlICJwcml2YXRlL3FxdWlja3dp bmRvd19wLmgiCisgI2luY2x1ZGUgInByaXZhdGUvcXF1aWNraXRlbV9wLmgiCitAQCAtNzUsOSAr NzYsMTYgQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKytRUXVpY2tXaWRnZXRPZmZzY3Jl ZW5XaW5kb3c6OlFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhRUXVpY2tXaW5kb3dQcml2YXRl ICZkZCwgUVF1aWNrUmVuZGVyQ29udHJvbCAqY29udHJvbCkKKys6UVF1aWNrV2luZG93KGRkLCBj b250cm9sKQorK3sKKysgICAgc2V0VGl0bGUoUVN0cmluZzo6ZnJvbUxhdGluMSgiT2Zmc2NyZWVu IikpOworKyAgICBzZXRPYmplY3ROYW1lKFFTdHJpbmc6OmZyb21MYXRpbjEoIlFRdWlja09mZlNj cmVlbldpbmRvdyIpKTsKKyt9CisrCisgLy8gb3ZlcnJpZGUgc2V0VmlzYmxlIHRvIHByZXZlbnQg YWNjaWRlbnRhbCBvZmZzY3JlZW4gd2luZG93IGJlaW5nIGNyZWF0ZWQKKyAvLyBieSBiYXNlIGNs YXNzLgorLWNsYXNzIFFRdWlja09mZmNyZWVuV2luZG93UHJpdmF0ZTogcHVibGljIFFRdWlja1dp bmRvd1ByaXZhdGUgeworK2NsYXNzIFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvd1ByaXZhdGU6 IHB1YmxpYyBRUXVpY2tXaW5kb3dQcml2YXRlIHsKKyBwdWJsaWM6CisgICAgIHZvaWQgc2V0Vmlz aWJsZShib29sIHZpc2libGUpIG92ZXJyaWRlIHsKKyAgICAgICAgIFFfUShRV2luZG93KTsKK0BA IC0xMDUsOSArMTEzLDggQEAgdm9pZCBRUXVpY2tXaWRnZXRQcml2YXRlOjppbml0KFFRbWxFbmdp bmUqIGUpCisgICAgIFFfUShRUXVpY2tXaWRnZXQpOworIAorICAgICByZW5kZXJDb250cm9sID0g bmV3IFFRdWlja1dpZGdldFJlbmRlckNvbnRyb2wocSk7CistICAgIG9mZnNjcmVlbldpbmRvdyA9 IG5ldyBRUXVpY2tXaW5kb3coKm5ldyBRUXVpY2tPZmZjcmVlbldpbmRvd1ByaXZhdGUoKSxyZW5k ZXJDb250cm9sKTsKKy0gICAgb2Zmc2NyZWVuV2luZG93LT5zZXRUaXRsZShRU3RyaW5nOjpmcm9t TGF0aW4xKCJPZmZzY3JlZW4iKSk7CistICAgIG9mZnNjcmVlbldpbmRvdy0+c2V0T2JqZWN0TmFt ZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJRUXVpY2tPZmZTY3JlZW5XaW5kb3ciKSk7CisrICAgIG9m ZnNjcmVlbldpbmRvdyA9IG5ldyBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3coKm5ldyBRUXVp Y2tXaWRnZXRPZmZzY3JlZW5XaW5kb3dQcml2YXRlKCksIHJlbmRlckNvbnRyb2wpOworKyAgICBv ZmZzY3JlZW5XaW5kb3ctPnNldFNjcmVlbihxLT5zY3JlZW4oKSk7CisgICAgIC8vIERvIG5vdCBj YWxsIGNyZWF0ZSgpIG9uIG9mZnNjcmVlbldpbmRvdy4KKyAKKyAgICAgLy8gQ2hlY2sgaWYgdGhl IFNvZnR3YXJlIEFkYXB0YXRpb24gaXMgYmVpbmcgdXNlZAorQEAgLTEzOCw2ICsxNDUsMTAgQEAg dm9pZCBRUXVpY2tXaWRnZXRQcml2YXRlOjppbml0KFFRbWxFbmdpbmUqIGUpCisgICAgIFFXaWRn ZXQ6OmNvbm5lY3Qob2Zmc2NyZWVuV2luZG93LCAmUVF1aWNrV2luZG93Ojpmb2N1c09iamVjdENo YW5nZWQsIHEsICZRUXVpY2tXaWRnZXQ6OnByb3BhZ2F0ZUZvY3VzT2JqZWN0Q2hhbmdlZCk7Cisg ICAgIFFPYmplY3Q6OmNvbm5lY3QocmVuZGVyQ29udHJvbCwgU0lHTkFMKHJlbmRlclJlcXVlc3Rl ZCgpKSwgcSwgU0xPVCh0cmlnZ2VyVXBkYXRlKCkpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChy ZW5kZXJDb250cm9sLCBTSUdOQUwoc2NlbmVDaGFuZ2VkKCkpLCBxLCBTTE9UKHRyaWdnZXJVcGRh dGUoKSkpOworKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysgICAgUUFjY2Vzc2li bGU6Omluc3RhbGxGYWN0b3J5KCZxQWNjZXNzaWJsZVF1aWNrV2lkZ2V0RmFjdG9yeSk7CisrI2Vu ZGlmCisgfQorIAorIHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6ZW5zdXJlRW5naW5lKCkgY29u c3QKK0BAIC05MDEsOSArOTEyLDcgQEAgdm9pZCBRUXVpY2tXaWRnZXRQcml2YXRlOjpjcmVhdGVD b250ZXh0KCkKKyAKKyAgICAgICAgIGNvbnRleHQgPSBuZXcgUU9wZW5HTENvbnRleHQ7CisgICAg ICAgICBjb250ZXh0LT5zZXRGb3JtYXQob2Zmc2NyZWVuV2luZG93LT5yZXF1ZXN0ZWRGb3JtYXQo KSk7CistICAgICAgICBjb25zdCBRV2luZG93ICp3aW4gPSBxLT53aW5kb3coKS0+d2luZG93SGFu ZGxlKCk7CistICAgICAgICBpZiAod2luICYmIHdpbi0+c2NyZWVuKCkpCistICAgICAgICAgICAg Y29udGV4dC0+c2V0U2NyZWVuKHdpbi0+c2NyZWVuKCkpOworKyAgICAgICAgY29udGV4dC0+c2V0 U2NyZWVuKHEtPnNjcmVlbigpKTsKKyAgICAgICAgIFFPcGVuR0xDb250ZXh0ICpzaGFyZUNvbnRl eHQgPSBxdF9nbF9nbG9iYWxfc2hhcmVfY29udGV4dCgpOworICAgICAgICAgaWYgKCFzaGFyZUNv bnRleHQpCisgICAgICAgICAgICAgc2hhcmVDb250ZXh0ID0gUVdpZGdldFByaXZhdGU6OmdldChx LT53aW5kb3coKSktPnNoYXJlQ29udGV4dCgpOworQEAgLTE1MjAsMTkgKzE1MjksMTYgQEAgYm9v bCBRUXVpY2tXaWRnZXQ6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAgICAgIGQtPmhhbmRsZVdpbmRv d0NoYW5nZSgpOworICAgICAgICAgYnJlYWs7CisgCistICAgIGNhc2UgUUV2ZW50OjpTY3JlZW5D aGFuZ2VJbnRlcm5hbDoKKy0gICAgICAgIGlmIChRV2luZG93ICp3aW5kb3cgPSB0aGlzLT53aW5k b3coKS0+d2luZG93SGFuZGxlKCkpIHsKKy0gICAgICAgICAgICBRU2NyZWVuICpuZXdTY3JlZW4g PSB3aW5kb3ctPnNjcmVlbigpOworLQorLSAgICAgICAgICAgIGlmIChkLT5vZmZzY3JlZW5XaW5k b3cpCistICAgICAgICAgICAgICAgIGQtPm9mZnNjcmVlbldpbmRvdy0+c2V0U2NyZWVuKG5ld1Nj cmVlbik7CistICAgICAgICAgICAgaWYgKGQtPm9mZnNjcmVlblN1cmZhY2UpCistICAgICAgICAg ICAgICAgIGQtPm9mZnNjcmVlblN1cmZhY2UtPnNldFNjcmVlbihuZXdTY3JlZW4pOworKyAgICBj YXNlIFFFdmVudDo6U2NyZWVuQ2hhbmdlSW50ZXJuYWw6IHsKKysgICAgICAgIFFTY3JlZW4gKm5l d1NjcmVlbiA9IHNjcmVlbigpOworKyAgICAgICAgaWYgKGQtPm9mZnNjcmVlbldpbmRvdykKKysg ICAgICAgICAgICBkLT5vZmZzY3JlZW5XaW5kb3ctPnNldFNjcmVlbihuZXdTY3JlZW4pOworKyAg ICAgICAgaWYgKGQtPm9mZnNjcmVlblN1cmZhY2UpCisrICAgICAgICAgICAgZC0+b2Zmc2NyZWVu U3VyZmFjZS0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisgI2lmIFFUX0NPTkZJRyhvcGVuZ2wpCist ICAgICAgICAgICAgaWYgKGQtPmNvbnRleHQpCistICAgICAgICAgICAgICAgIGQtPmNvbnRleHQt PnNldFNjcmVlbihuZXdTY3JlZW4pOworKyAgICAgICAgaWYgKGQtPmNvbnRleHQpCisrICAgICAg ICAgICAgZC0+Y29udGV4dC0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisgI2VuZGlmCistICAgICAg ICB9CisgCisgICAgICAgICBpZiAoZC0+dXNlU29mdHdhcmVSZW5kZXJlcgorICNpZiBRVF9DT05G SUcob3BlbmdsKQorQEAgLTE1NDUsNyArMTU1MSw3IEBAIGJvb2wgUVF1aWNrV2lkZ2V0OjpldmVu dChRRXZlbnQgKmUpCisgICAgICAgICAgICAgZC0+cmVuZGVyKHRydWUpOworICAgICAgICAgfQor ICAgICAgICAgYnJlYWs7CistCisrICAgIH0KKyAgICAgY2FzZSBRRXZlbnQ6OlNob3c6CisgICAg IGNhc2UgUUV2ZW50OjpNb3ZlOgorICAgICAgICAgZC0+dXBkYXRlUG9zaXRpb24oKTsKK2RpZmYg LS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0X3AuaCBi L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oCitpbmRleCA4 ODFmN2Y5MjIwLi4xYTk0NmJjYzcxIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVp Y2t3aWRnZXRzL3FxdWlja3dpZGdldF9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr d2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oCitAQCAtMTQ4LDYgKzE0OCwxNCBAQCBwdWJsaWM6Cisg ICAgIGJvb2wgZm9yY2VGdWxsVXBkYXRlOworIH07CisgCisrY2xhc3MgUVF1aWNrV2lkZ2V0T2Zm c2NyZWVuV2luZG93OiBwdWJsaWMgUVF1aWNrV2luZG93CisreworKyAgICBRX09CSkVDVAorKwor K3B1YmxpYzoKKysgICAgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KFFRdWlja1dpbmRvd1By aXZhdGUgJmRkLCBRUXVpY2tSZW5kZXJDb250cm9sICpjb250cm9sKTsKKyt9OworKworIFFUX0VO RF9OQU1FU1BBQ0UKKyAKKyAjZW5kaWYgLy8gUVF1aWNrV2lkZ2V0X1BfSAorZGlmZiAtLWdpdCBh L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMucHJvIGIvcXRkZWNs YXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8KK2luZGV4IDI0MzhlNTc3 YWUuLjg1ZDE1NmI4YTMgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdl dHMvcXVpY2t3aWRnZXRzLnBybworKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRz L3F1aWNrd2lkZ2V0cy5wcm8KK0BAIC03LDkgKzcsMTMgQEAgREVGSU5FUyAgICs9IFFUX05PX1VS TF9DQVNUX0ZST01fU1RSSU5HIFFUX05PX0lOVEVHRVJfRVZFTlRfQ09PUkRJTkFURVMgUVRfTk9f Rk8KKyBIRUFERVJTICs9IFwKKyAgICAgcXF1aWNrd2lkZ2V0LmggXAorICAgICBxcXVpY2t3aWRn ZXRfcC5oIFwKKy0gICAgcXRxdWlja3dpZGdldHNnbG9iYWwuaAorKyAgICBxdHF1aWNrd2lkZ2V0 c2dsb2JhbC5oIFwKKysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmggXAorKyAgICBxYWNj ZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgKKyAKKyBTT1VSQ0VTICs9IFwKKy0gICAgcXF1 aWNrd2lkZ2V0LmNwcAorKyAgICBxcXVpY2t3aWRnZXQuY3BwIFwKKysgICAgcWFjY2Vzc2libGVx dWlja3dpZGdldC5jcHAgXAorKyAgICBxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeS5jcHAK KyAKKyBsb2FkKHF0X21vZHVsZSkKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1 dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMv YXV0by9xbWwvcWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwCitpbmRleCAzYjdkNzRkZjYzLi5i NzViZjgyMGQ1IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xanNl bmdpbmUvdHN0X3Fqc2VuZ2luZS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9x bWwvcWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwCitAQCAtMTAyLDYgKzEwMiw3IEBAIHByaXZh dGUgc2xvdHM6CisgICAgIHZvaWQgdmFsdWVDb252ZXJzaW9uX1JlZ3VsYXJFeHByZXNzaW9uKCk7 CisgICAgIHZvaWQgY2FzdFdpdGhNdWx0aXBsZUluaGVyaXRhbmNlKCk7CisgICAgIHZvaWQgY29s bGVjdEdhcmJhZ2UoKTsKKysgICAgdm9pZCBjb2xsZWN0R2FyYmFnZU5lc3RlZFdyYXBwZXJzVHdv RW5naW5lcygpOworICAgICB2b2lkIGdjV2l0aE5lc3RlZERhdGFTdHJ1Y3R1cmUoKTsKKyAgICAg dm9pZCBzdGFja3RyYWNlKCk7CisgICAgIHZvaWQgbnVtYmVyUGFyc2luZ19kYXRhKCk7CitAQCAt MTgwOSw2ICsxODEwLDQ0IEBAIHZvaWQgdHN0X1FKU0VuZ2luZTo6Y29sbGVjdEdhcmJhZ2UoKQor ICAgICBRVkVSSUZZKHB0ci5pc051bGwoKSk7CisgfQorIAorK2NsYXNzIFRlc3RPYmplY3RDb250 YWluZXIgOiBwdWJsaWMgUU9iamVjdAorK3sKKysgICAgUV9PQkpFQ1QKKysgICAgUV9QUk9QRVJU WShRT2JqZWN0ICpkdW1teSBNRU1CRVIgbV9kdW1teSBDT05TVEFOVCkKKysKKytwdWJsaWM6Cisr ICAgIFRlc3RPYmplY3RDb250YWluZXIoKSA6IG1fZHVtbXkobmV3IFFPYmplY3QodGhpcykpIHt9 CisrCisrcHJpdmF0ZToKKysgICAgUU9iamVjdCAqbV9kdW1teTsKKyt9OworKworK3ZvaWQgdHN0 X1FKU0VuZ2luZTo6Y29sbGVjdEdhcmJhZ2VOZXN0ZWRXcmFwcGVyc1R3b0VuZ2luZXMoKQorK3sK KysgICAgUUpTRW5naW5lIGVuZ2luZTE7CisrICAgIFFKU0VuZ2luZSBlbmdpbmUyOworKworKyAg ICBUZXN0T2JqZWN0Q29udGFpbmVyIGNvbnRhaW5lcjsKKysgICAgUVFtbEVuZ2luZTo6c2V0T2Jq ZWN0T3duZXJzaGlwKCZjb250YWluZXIsIFFRbWxFbmdpbmU6OkNwcE93bmVyc2hpcCk7CisrCisr ICAgIGVuZ2luZTEuZ2xvYmFsT2JqZWN0KCkuc2V0UHJvcGVydHkoImZvb2JhciIsIGVuZ2luZTEu bmV3UU9iamVjdCgmY29udGFpbmVyKSk7CisrICAgIGVuZ2luZTIuZ2xvYmFsT2JqZWN0KCkuc2V0 UHJvcGVydHkoImZvb2JhciIsIGVuZ2luZTIubmV3UU9iamVjdCgmY29udGFpbmVyKSk7CisrCisr ICAgIGVuZ2luZTEuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXogPSA0MiIpOworKyAgICBlbmdp bmUyLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6ID0gNDMiKTsKKysKKysgICAgUUNPTVBBUkUo ZW5naW5lMS5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiIpLnRvSW50KCksIDQyKTsKKysgICAg UUNPTVBBUkUoZW5naW5lMi5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiIpLnRvSW50KCksIDQz KTsKKysKKysgICAgZW5naW5lMS5jb2xsZWN0R2FyYmFnZSgpOworKyAgICBlbmdpbmUyLmNvbGxl Y3RHYXJiYWdlKCk7CisrCisrICAgIC8vIFRoZSBHQyBzaG91bGQgbm90IGNvbGxlY3QgZHVtbXkg b2JqZWN0IHdyYXBwZXJzIG5laXRoZXIgaW4gZW5naW5lMSBub3IgZW5naW5lMiwgd2UKKysgICAg Ly8gdmVyaWZ5IHRoYXQgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgYmF6IHByb3BlcnR5IHN0aWxs IGhhcyBpdHMgcHJldmlvdXMgdmFsdWUuCisrICAgIFFDT01QQVJFKGVuZ2luZTEuZXZhbHVhdGUo ImZvb2Jhci5kdW1teS5iYXoiKS50b0ludCgpLCA0Mik7CisrICAgIFFDT01QQVJFKGVuZ2luZTIu ZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXoiKS50b0ludCgpLCA0Myk7CisrfQorKworIHZvaWQg dHN0X1FKU0VuZ2luZTo6Z2NXaXRoTmVzdGVkRGF0YVN0cnVjdHVyZSgpCisgeworICAgICAvLyBU aGUgR0MgbXVzdCBiZSBhYmxlIHRvIHRyYXZlcnNlIGRlZXBseSBuZXN0ZWQgb2JqZWN0cywgb3Ro ZXJ3aXNlIHRoaXMKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fx bWxkZWxlZ2F0ZW1vZGVsL2RhdGEvcmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwgYi9xdGRlY2xh cmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL2RhdGEvcmVkcmF3VXBvbkNv bHVtbkNoYW5nZS5xbWwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4y MDYxMzNiYjM5CistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8v cW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL2RhdGEvcmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwKK0BA IC0wLDAgKzEsMTEgQEAKKytpbXBvcnQgUXRRdWljayAyLjgKKysKKytMaXN0VmlldyB7CisrICAg IGlkOiByb290CisrICAgIHdpZHRoOiAyMDAKKysgICAgaGVpZ2h0OiAyMDAKKysKKysgICAgZGVs ZWdhdGU6IFRleHQgeworKyAgICAgICAgdGV4dDogZGlzcGxheQorKyAgICB9CisrfQorZGlmZiAt LWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvdHN0 X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFt bGRlbGVnYXRlbW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAoraW5kZXggMzVmMWUyYzk0 ZC4uMTcyMjQ0NzgzMCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwv cXFtbGRlbGVnYXRlbW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorKysrIGIvcXRkZWNs YXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC90c3RfcXFtbGRlbGVnYXRl bW9kZWwuY3BwCitAQCAtMjcsNiArMjcsOCBAQAorICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgCisg I2luY2x1ZGUgPFF0VGVzdC9xdGVzdC5oPgorKyNpbmNsdWRlIDxRdENvcmUvUUNvbmNhdGVuYXRl VGFibGVzUHJveHlNb2RlbD4KKysjaW5jbHVkZSA8UXRHdWkvUVN0YW5kYXJkSXRlbU1vZGVsPgor ICNpbmNsdWRlIDxRdFFtbC9xcW1sY29tcG9uZW50Lmg+CisgI2luY2x1ZGUgPFF0UW1sTW9kZWxz L3ByaXZhdGUvcXFtbGRlbGVnYXRlbW9kZWxfcC5oPgorICNpbmNsdWRlIDxRdFF1aWNrL3FxdWlj a3ZpZXcuaD4KK0BAIC00Nyw2ICs0OSw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgZmls dGVyT25Hcm91cF9yZW1vdmVXaGVuQ29tcGxldGVkKCk7CisgICAgIHZvaWQgcXRidWdfODYwMTco KTsKKyAgICAgdm9pZCBjb250ZXh0QWNjZXNzZWRCeUhhbmRsZXIoKTsKKysgICAgdm9pZCByZWRy YXdVcG9uQ29sdW1uQ2hhbmdlKCk7CisgfTsKKyAKKyBjbGFzcyBBYnN0cmFjdEl0ZW1Nb2RlbCA6 IHB1YmxpYyBRQWJzdHJhY3RJdGVtTW9kZWwKK0BAIC0xODYsNiArMTg5LDMwIEBAIHZvaWQgdHN0 X1FRbWxEZWxlZ2F0ZU1vZGVsOjpjb250ZXh0QWNjZXNzZWRCeUhhbmRsZXIoKQorICAgICBRVkVS SUZZKHJvb3QtPnByb3BlcnR5KCJ3b3JrcyIpLnRvQm9vbCgpKTsKKyB9CisgCisrdm9pZCB0c3Rf UVFtbERlbGVnYXRlTW9kZWw6OnJlZHJhd1Vwb25Db2x1bW5DaGFuZ2UoKQorK3sKKysgICAgUVN0 YW5kYXJkSXRlbU1vZGVsIG0xOworKyAgICBtMS5hcHBlbmRSb3coeworKyAgICAgICAgICAgIG5l dyBRU3RhbmRhcmRJdGVtKCJCYW5hbmEiKSwKKysgICAgICAgICAgICBuZXcgUVN0YW5kYXJkSXRl bSgiQ29jb251dCIpLAorKyAgICB9KTsKKysKKysgICAgUVF1aWNrVmlldyB2aWV3KHRlc3RGaWxl VXJsKCJyZWRyYXdVcG9uQ29sdW1uQ2hhbmdlLnFtbCIpKTsKKysgICAgUUNPTVBBUkUodmlldy5z dGF0dXMoKSwgUVF1aWNrVmlldzo6UmVhZHkpOworKyAgICB2aWV3LnNob3coKTsKKysgICAgUVF1 aWNrSXRlbSAqcm9vdCA9IHZpZXcucm9vdE9iamVjdCgpOworKyAgICByb290LT5zZXRQcm9wZXJ0 eSgibW9kZWwiLCBRVmFyaWFudDo6ZnJvbVZhbHVlPFFPYmplY3QgKj4oJm0xKSk7CisrCisrICAg IFFPYmplY3QgKml0ZW0gPSByb290LT5wcm9wZXJ0eSgiY3VycmVudEl0ZW0iKS52YWx1ZTxRT2Jq ZWN0ICo+KCk7CisrICAgIFFWRVJJRlkoaXRlbSk7CisrICAgIFFDT01QQVJFKGl0ZW0tPnByb3Bl cnR5KCJ0ZXh0IikudG9TdHJpbmcoKSwgIkJhbmFuYSIpOworKworKyAgICBRVkVSSUZZKHJvb3Qp OworKyAgICBtMS5yZW1vdmVDb2x1bW4oMCk7CisrCisrICAgIFFDT01QQVJFKGl0ZW0tPnByb3Bl cnR5KCJ0ZXh0IikudG9TdHJpbmcoKSwgIkNvY29udXQiKTsKKyt9CisrCisgUVRFU1RfTUFJTih0 c3RfUVFtbERlbGVnYXRlTW9kZWwpCisgCisgI2luY2x1ZGUgInRzdF9xcW1sZGVsZWdhdGVtb2Rl bC5tb2MiCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90 c3RfcXY0bW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0 bW0uY3BwCitpbmRleCA1ZDYzNWFhNjNiLi44MjRmZDg5ZTViIDEwMDY0NAorLS0tIGEvcXRkZWNs YXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0uY3BwCisrKysgYi9xdGRlY2xh cmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRtbS5jcHAKK0BAIC03NiwxMCArNzYs MTAgQEAgdm9pZCB0c3RfcXY0bW06Om11bHRpV3JhcHBlZFFPYmplY3RzKCkKKyAgICAgICAgIFFD T01QQVJFKGVuZ2luZTEubWVtb3J5TWFuYWdlci0+bV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVy VmFsdWUuc2l6ZSgpLCAxKTsKKyAgICAgICAgIFFDT01QQVJFKGVuZ2luZTIubWVtb3J5TWFuYWdl ci0+bV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuc2l6ZSgpLCAwKTsKKyAKKy0gICAg ICAgIC8vIE1vdmVzIHRoZSBhZGRpdGlvbmFsIFdlYWtWYWx1ZSBmcm9tIG1fbXVsdGlwbHlXcmFw cGVkUU9iamVjdHMgdG8KKy0gICAgICAgIC8vIG1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZh bHVlLiBJdCdzIHN0aWxsIGFsaXZlIGFmdGVyIGFsbC4KKysgICAgICAgIC8vIFRoZSBhZGRpdGlv bmFsIFdlYWtWYWx1ZSBmcm9tIG1fbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMgaGFzbid0IGJlZW4g bW92ZWQKKysgICAgICAgIC8vIHRvIG1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlIHll dC4gSXQncyBzdGlsbCBhbGl2ZSBhZnRlciBhbGwuCisgICAgICAgICBlbmdpbmUxLm1lbW9yeU1h bmFnZXItPnJ1bkdDKCk7CistICAgICAgICBRQ09NUEFSRShlbmdpbmUxLm1lbW9yeU1hbmFnZXIt Pm1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNpemUoKSwgMik7CisrICAgICAgICBR Q09NUEFSRShlbmdpbmUxLm1lbW9yeU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBl clZhbHVlLnNpemUoKSwgMSk7CisgCisgICAgICAgICAvLyBlbmdpbmUyIGRvZXNuJ3Qgb3duIHRo ZSBvYmplY3QgYXMgZW5naW5lMSB3YXMgdGhlIGZpcnN0IHRvIHdyYXAgaXQgYWJvdmUuCisgICAg ICAgICAvLyBUaGVyZWZvcmUsIG5vIGVmZmVjdCBoZXJlLgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFy YXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi9kYXRhL2FjdGl2ZUZvY3VzT25UYWJf aW5maW5pdGVMb29wMy5xbWwgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNr aXRlbTIvZGF0YS9hY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcDMucW1sCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uODg5ZTQ4MGYzYgorLS0tIC9kZXYvbnVsbAor KysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL2RhdGEvYWN0 aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AzLnFtbAorQEAgLTAsMCArMSwxMyBAQAorK2ltcG9y dCBRdFF1aWNrIDIuNgorKworK0l0ZW0geworKyAgICB2aXNpYmxlOiB0cnVlCisrICAgIEl0ZW0g eworKyAgICAgICAgdmlzaWJsZTogZmFsc2UKKysgICAgICAgIEl0ZW0geworKyAgICAgICAgICAg IG9iamVjdE5hbWU6ICJoaWRkZW5DaGlsZCIKKysgICAgICAgICAgICBhY3RpdmVGb2N1c09uVGFi OiB0cnVlCisrICAgICAgICAgICAgZm9jdXM6IHRydWUKKysgICAgICAgIH0KKysgICAgfQorK30K K2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIv dHN0X3FxdWlja2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlj a2l0ZW0yL3RzdF9xcXVpY2tpdGVtLmNwcAoraW5kZXggYzhmMjUxZGJlMS4uYzhlZjM2ZWU2OCAx MDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi90 c3RfcXF1aWNraXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9x cXVpY2tpdGVtMi90c3RfcXF1aWNraXRlbS5jcHAKK0BAIC02Nyw2ICs2Nyw3IEBAIHByaXZhdGUg c2xvdHM6CisgICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYjEwKCk7CisgICAgIHZvaWQgYWN0aXZl Rm9jdXNPblRhYl9pbmZpbml0ZUxvb3BfZGF0YSgpOworICAgICB2b2lkIGFjdGl2ZUZvY3VzT25U YWJfaW5maW5pdGVMb29wKCk7CisrICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxv b3BDb250cm9scygpOworIAorICAgICB2b2lkIG5leHRJdGVtSW5Gb2N1c0NoYWluKCk7CisgICAg IHZvaWQgbmV4dEl0ZW1JbkZvY3VzQ2hhaW4yKCk7CitAQCAtMTA1Nyw2ICsxMDU4LDE3IEBAIHZv aWQgdHN0X1FRdWlja0l0ZW06OmFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wKCkKKyAgICAg UUNPTVBBUkUoaXRlbSwgd2luZG93LT5yb290T2JqZWN0KCkpOworIH0KKyAKKysKKyt2b2lkIHRz dF9RUXVpY2tJdGVtOjphY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcENvbnRyb2xzKCkKKyt7 CisrICAgIGF1dG8gc291cmNlID0gdGVzdEZpbGVVcmwoImFjdGl2ZUZvY3VzT25UYWJfaW5maW5p dGVMb29wMy5xbWwiKTsKKysgICAgUVNjb3BlZFBvaW50ZXI8UVF1aWNrVmlldz53aW5kb3cobmV3 IFFRdWlja1ZpZXcoKSk7CisrICAgIHdpbmRvdy0+c2V0U291cmNlKHNvdXJjZSk7CisrICAgIHdp bmRvdy0+c2hvdygpOworKyAgICBRVkVSSUZZKHdpbmRvdy0+ZXJyb3JzKCkuaXNFbXB0eSgpKTsK KysgICAgUVRlc3Q6OmtleUNsaWNrKHdpbmRvdy5nZXQoKSwgUXQ6OktleV9UYWIpOyAvLyBzaG91 bGQgbm90IGhhbmcKKyt9CisrCisgdm9pZCB0c3RfUVF1aWNrSXRlbTo6bmV4dEl0ZW1JbkZvY3Vz Q2hhaW4oKQorIHsKKyAgICAgaWYgKCFxdF90YWJfYWxsX3dpZGdldHMoKSkKK1N1Ym1vZHVsZSBx dGRvYyBjMGM3YmYwNy4uLjc5ZDZlZjY5OgorU3VibW9kdWxlIHF0aW1hZ2Vmb3JtYXRzIDJkY2Yy ODk5Li5hYmU0NGMwZjoKK2RpZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9p bWFnZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRsZXIuY3BwIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3Bs dWdpbnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWljbnNoYW5kbGVyLmNwcAoraW5kZXggZGRlNzgzYy4u MWJmOTA3NCAxMDA2NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9y bWF0cy9pY25zL3FpY25zaGFuZGxlci5jcHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVn aW5zL2ltYWdlZm9ybWF0cy9pY25zL3FpY25zaGFuZGxlci5jcHAKK0BAIC00NjIsOCArNDYyLDEy IEBAIHN0YXRpYyBib29sIHBhcnNlSWNvbkVudHJ5SW5mbyhJQ05TRW50cnkgJmljb24pCisgICAg IGlmIChpc0ljb25Db21wcmVzc2VkKGljb24pKQorICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg IC8vIEljb24gZGVwdGg6CistICAgIGlmICghZGVwdGguaXNFbXB0eSgpKQorLSAgICAgICAgaWNv bi5kZXB0aCA9IElDTlNFbnRyeTo6RGVwdGgoZGVwdGgudG9VSW50KCkpOworKyAgICBpZiAoIWRl cHRoLmlzRW1wdHkoKSkgeworKyAgICAgICAgY29uc3QgdWludCBkZXB0aFVJbnQgPSBkZXB0aC50 b1VJbnQoKTsKKysgICAgICAgIGlmIChkZXB0aFVJbnQgPiAzMikKKysgICAgICAgICAgICByZXR1 cm4gZmFsc2U7CisrICAgICAgICBpY29uLmRlcHRoID0gSUNOU0VudHJ5OjpEZXB0aChkZXB0aFVJ bnQpOworKyAgICB9CisgICAgIC8vIFRyeSBtb25vIGlmIGRlcHRoIG5vdCBmb3VuZAorICAgICBp ZiAoaWNvbi5kZXB0aCA9PSBJQ05TRW50cnk6OkRlcHRoVW5rbm93bikKKyAgICAgICAgIGljb24u ZGVwdGggPSBJQ05TRW50cnk6OkRlcHRoTW9ubzsKK0BAIC01MTUsNiArNTE5LDkgQEAgc3RhdGlj IGJvb2wgcGFyc2VJY29uRW50cnlJbmZvKElDTlNFbnRyeSAmaWNvbikKKyAgICAgICAgIH0KKyAg ICAgICAgIGljb24uaGVpZ2h0ID0gaWNvbi53aWR0aDsKKyAgICAgfQorKyAgICAvLyBTYW5pdHkg Y2hlY2sKKysgICAgaWYgKGljb24ud2lkdGggPT0gMCB8fCBpY29uLndpZHRoID4gNDA5NikKKysg ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgcmV0dXJuIHRydWU7CisgfQorIAorQEAgLTY4NSw3 ICs2OTIsNyBAQCBib29sIFFJQ05TSGFuZGxlcjo6Y2FuUmVhZCgpIGNvbnN0CisgYm9vbCBRSUNO U0hhbmRsZXI6OnJlYWQoUUltYWdlICpvdXRJbWFnZSkKKyB7CisgICAgIFFJbWFnZSBpbWc7Cist ICAgIGlmICghZW5zdXJlU2Nhbm5lZCgpKSB7CisrICAgIGlmICghZW5zdXJlU2Nhbm5lZCgpIHx8 IG1fY3VycmVudEljb25JbmRleCA+PSBtX2ljb25zLnNpemUoKSkgeworICAgICAgICAgcVdhcm5p bmcoIlFJQ05TSGFuZGxlcjo6cmVhZCgpOiBUaGUgZGV2aWNlIHdhc24ndCBwYXJzZWQgcHJvcGVy bHkhIik7CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KK0BAIC04OTIsNyArODk5LDcg QEAgYm9vbCBRSUNOU0hhbmRsZXI6OnNjYW5EZXZpY2UoKQorICAgICAgICAgICAgIHJldHVybiBm YWxzZTsKKyAKKyAgICAgICAgIGNvbnN0IHFpbnQ2NCBibG9ja0RhdGFPZmZzZXQgPSBkZXZpY2Uo KS0+cG9zKCk7CistICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChibG9ja0hlYWRlcikp IHsKKysgICAgICAgIGlmICghaXNCbG9ja0hlYWRlclZhbGlkKGJsb2NrSGVhZGVyLCBJQ05TQmxv Y2tIZWFkZXJTaXplICsgZmlsZWxlbmd0aCAtIGJsb2NrRGF0YU9mZnNldCkpIHsKKyAgICAgICAg ICAgICBxV2FybmluZygiUUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNlKCk6IEZhaWxlZCwgYmFkIGhl YWRlciBhdCBwb3MgJXMuIE9TVHlwZSBcIiVzXCIsIGxlbmd0aCAldSIsCisgICAgICAgICAgICAg ICAgICAgICAgUUJ5dGVBcnJheTo6bnVtYmVyKGJsb2NrRGF0YU9mZnNldCkuY29uc3REYXRhKCks CisgICAgICAgICAgICAgICAgICAgICAgbmFtZUZyb21PU1R5cGUoYmxvY2tIZWFkZXIub3N0eXBl KS5jb25zdERhdGEoKSwgYmxvY2tIZWFkZXIubGVuZ3RoKTsKK0BAIC05MjcsMTEgKzkzNCwxNCBA QCBib29sIFFJQ05TSGFuZGxlcjo6c2NhbkRldmljZSgpCisgICAgICAgICBjYXNlIElDTlNCbG9j a0hlYWRlcjo6VHlwZU9kcnA6CisgICAgICAgICAgICAgLy8gSWNucyBjb250YWluZXIgc2VlbXMg dG8gaGF2ZSBhbiBlbWJlZGRlZCBpY29uIHZhcmlhbnQgY29udGFpbmVyCisgICAgICAgICAgICAg Ly8gTGV0J3Mgc3RhcnQgYSBzY2FuIGZvciBlbnRyaWVzCistICAgICAgICAgICAgd2hpbGUgKGRl dmljZSgpLT5wb3MoKSA8IG5leHRCbG9ja09mZnNldCkgeworKyAgICAgICAgICAgIHdoaWxlICgh c3RyZWFtLmF0RW5kKCkgJiYgZGV2aWNlKCktPnBvcygpIDwgbmV4dEJsb2NrT2Zmc2V0KSB7Cisg ICAgICAgICAgICAgICAgIElDTlNCbG9ja0hlYWRlciBpY29uOworICAgICAgICAgICAgICAgICBz dHJlYW0gPj4gaWNvbjsKKysgICAgICAgICAgICAgICAgaWYgKHN0cmVhbS5zdGF0dXMoKSAhPSBR RGF0YVN0cmVhbTo6T2spCisrICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg ICAgICAgICAgICAgIC8vIENoZWNrIGZvciBpbmNvcnJlY3QgdmFyaWFudCBlbnRyeSBoZWFkZXIg YW5kIHN0b3Agc2NhbgorLSAgICAgICAgICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChp Y29uLCBibG9ja0RhdGFMZW5ndGgpKQorKyAgICAgICAgICAgICAgICBxdWludDY0IHJlbWFpbmlu ZyA9IGJsb2NrRGF0YUxlbmd0aCAtIChkZXZpY2UoKS0+cG9zKCkgLSBibG9ja0RhdGFPZmZzZXQp OworKyAgICAgICAgICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChpY29uLCBJQ05TQmxv Y2tIZWFkZXJTaXplICsgcmVtYWluaW5nKSkKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICAgICBpZiAoIWFkZEVudHJ5KGljb24sIGRldmljZSgpLT5wb3MoKSwgYmxv Y2tIZWFkZXIub3N0eXBlKSkKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKK0BA IC0xMDAzLDcgKzEwMTMsNyBAQCBib29sIFFJQ05TSGFuZGxlcjo6c2NhbkRldmljZSgpCisgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgcmV0dXJuIHRydWU7Cisr ICAgIHJldHVybiAobV9pY29ucy5zaXplKCkgPiAwKTsKKyB9CisgCisgY29uc3QgSUNOU0VudHJ5 ICZRSUNOU0hhbmRsZXI6OmdldEljb25NYXNrKGNvbnN0IElDTlNFbnRyeSAmaWNvbikgY29uc3QK K2RpZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvanAy L3FqcDJoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0 cy9qcDIvcWpwMmhhbmRsZXIuY3BwCitpbmRleCA1MDgyMDIzLi5jYjM0Mzc0IDEwMDY0NAorLS0t IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2pwMi9xanAyaGFuZGxl ci5jcHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9qcDIv cWpwMmhhbmRsZXIuY3BwCitAQCAtNDMsNiArNDMsNyBAQAorICNpbmNsdWRlICJxaW1hZ2UuaCIK KyAjaW5jbHVkZSAicXZhcmlhbnQuaCIKKyAjaW5jbHVkZSAicWNvbG9yLmgiCisrI2luY2x1ZGUg InFpbWFnZXJlYWRlci5oIgorIAorICNpbmNsdWRlIDxqYXNwZXIvamFzcGVyLmg+CisgI2luY2x1 ZGUgPG1hdGguaD4gLy8gZm9yIHBvdworQEAgLTMzMywxNiArMzM0LDQ2IEBAIHByaXZhdGU6Cisg SnBlZzIwMDBKYXNwZXJSZWFkZXI6OkpwZWcyMDAwSmFzcGVyUmVhZGVyKFFJT0RldmljZSAqaW9k LCBTdWJGb3JtYXQgZm9ybWF0KQorICAgICA6IGphc3Blck9rKHRydWUpLCBpb0RldmljZShpb2Qp LCBmb3JtYXQoZm9ybWF0KSwgaGFzQWxwaGEoZmFsc2UpCisgeworKyNpZiBKQVNfVkVSU0lPTl9N QUpPUiA8IDMKKyAgICAgaWYgKGphc19pbml0KCkpIHsKKyAgICAgICAgIGphc3Blck9rID0gZmFs c2U7CisgICAgICAgICBxRGVidWcoIkphc3BlciBMaWJyYXJ5IGluaXRpYWxpemF0aW9uIGZhaWxl ZCIpOworICAgICB9CisrI2Vsc2UKKysgICAgamFzX2NvbmZfY2xlYXIoKTsKKysjaWYgUVRfVkVS U0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDYsIDAsIDApCisrICAgIGphc19jb25mX3NldF9tYXhf bWVtX3VzYWdlKFFJbWFnZVJlYWRlcjo6YWxsb2NhdGlvbkxpbWl0KCkgKiAxMDI0ICogMTAyNCk7 CisrI2Vsc2UKKysgICAgLy8gMTI4TUIgc2VlbXMgdG8gYmUgZW5vdWdoLgorKyAgICBqYXNfY29u Zl9zZXRfbWF4X21lbV91c2FnZSgxMjggKiAxMDI0ICogMTAyNCk7CisrI2VuZGlmCisrICAgIGlm IChqYXNfaW5pdF9saWJyYXJ5KCkpIHsKKysgICAgICAgIGphc3Blck9rID0gZmFsc2U7CisrICAg ICAgICBxRGVidWcoIkphc3BlciBsaWJyYXJ5IGluaXRpYWxpemF0aW9uIGZhaWxlZCIpOworKyAg ICB9CisrICAgIGlmIChqYXNfaW5pdF90aHJlYWQoKSkgeworKyAgICAgICAgamFzX2NsZWFudXBf bGlicmFyeSgpOworKyAgICAgICAgamFzcGVyT2sgPSBmYWxzZTsKKysgICAgICAgIHFEZWJ1Zygi SmFzcGVyIHRocmVhZCBpbml0aWFsaXphdGlvbiBmYWlsZWQiKTsKKysgICAgfQorKyNlbmRpZgor IH0KKyAKKyBKcGVnMjAwMEphc3BlclJlYWRlcjo6fkpwZWcyMDAwSmFzcGVyUmVhZGVyKCkKKyB7 CisrI2lmIEpBU19WRVJTSU9OX01BSk9SIDwgMworICAgICBpZiAoamFzcGVyT2spCisgICAgICAg ICBqYXNfY2xlYW51cCgpOworKyNlbHNlCisrICAgIGlmIChqYXNwZXJPaykgeworKyAgICAgICAg aWYgKGphc19jbGVhbnVwX3RocmVhZCgpKSB7CisrICAgICAgICAgICAgcURlYnVnKCJKYXNwZXIg dGhyZWFkIGNsZWFudXAgZmFpbGVkIik7CisrICAgICAgICB9CisrICAgICAgICBpZiAoamFzX2Ns ZWFudXBfbGlicmFyeSgpKSB7CisrICAgICAgICAgICAgcURlYnVnKCJKYXNwZXIgbGlicmFyeSBj bGVhbnVwIGZhaWxlZCIpOworKyAgICAgICAgfQorKyAgICB9CisrI2VuZGlmCisgfQorIAorIC8q ISBcaW50ZXJuYWwKK0BAIC04NTcsNyArODg4LDcgQEAgYm9vbCBKcGVnMjAwMEphc3BlclJlYWRl cjo6d3JpdGUoY29uc3QgUUltYWdlICZpbWFnZSwgaW50IHF1YWxpdHkpCisgICAgIH0KKyAKKyAg ICAgLy8gT3BlbiBhbiBlbXB0eSBqYXNwZXIgc3RyZWFtIHRoYXQgZ3Jvd3MgYXV0b21hdGljYWxs eQorLSAgICBqYXNfc3RyZWFtX3QgKiBtZW1vcnlfc3RyZWFtID0gamFzX3N0cmVhbV9tZW1vcGVu KDAsIC0xKTsKKysgICAgamFzX3N0cmVhbV90ICogbWVtb3J5X3N0cmVhbSA9IGphc19zdHJlYW1f bWVtb3BlbigwLCAwKTsKKyAKKyAgICAgLy8gSmFzcGVyIHdhbnRzIGEgbm9uLWNvbnN0IHN0cmlu Zy4KKyAgICAgY2hhciAqc3RyID0gcXN0cmR1cChqYXNwZXJGb3JtYXRTdHJpbmcudG9MYXRpbjEo KS5jb25zdERhdGEoKSk7CitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMv aW1hZ2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9w bHVnaW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0aWZmaGFuZGxlci5jcHAKK2luZGV4IDEzODY3NTAu LmFjODk1NmMgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZv cm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIuY3BwCisrKysgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1 Z2lucy9pbWFnZWZvcm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIuY3BwCitAQCAtMzYxLDYgKzM2MSw4 IEBAIGJvb2wgUVRpZmZIYW5kbGVyOjpyZWFkKFFJbWFnZSAqaW1hZ2UpCisgICAgIH0KKyAKKyAg ICAgVElGRiAqY29uc3QgdGlmZiA9IGQtPnRpZmY7CisrICAgIGlmIChUSUZGSXNUaWxlZCh0aWZm KSAmJiBUSUZGVGlsZVNpemU2NCh0aWZmKSA+IHVpbnQ2NF90KGltYWdlLT5zaXplSW5CeXRlcygp KSkgLy8gQ29ycnVwdCBpbWFnZQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICBjb25zdCBx dWludDMyIHdpZHRoID0gZC0+c2l6ZS53aWR0aCgpOworICAgICBjb25zdCBxdWludDMyIGhlaWdo dCA9IGQtPnNpemUuaGVpZ2h0KCk7CisgCitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3Jj L3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3Jt YXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy93ZWJwL3F3ZWJwaGFuZGxlci5jcHAKK2luZGV4 IDgyZDM4Y2IuLmQwMmViMDUgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lu cy9pbWFnZWZvcm1hdHMvd2VicC9xd2VicGhhbmRsZXIuY3BwCisrKysgYi9xdGltYWdlZm9ybWF0 cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvd2VicC9xd2VicGhhbmRsZXIuY3BwCitAQCAtNDUs NiArNDUsNyBAQAorICNpbmNsdWRlIDxxZGVidWcuaD4KKyAjaW5jbHVkZSA8cXBhaW50ZXIuaD4K KyAjaW5jbHVkZSA8cXZhcmlhbnQuaD4KKysjaW5jbHVkZSA8UXRFbmRpYW4+CisgCisgc3RhdGlj IGNvbnN0IGludCByaWZmSGVhZGVyU2l6ZSA9IDEyOyAvLyBSSUZGX0hFQURFUl9TSVpFIGZyb20g d2VicC9mb3JtYXRfY29uc3RhbnRzLmgKKyAKK0BAIC0xMDIsMjEgKzEwMywyMyBAQCBib29sIFFX ZWJwSGFuZGxlcjo6ZW5zdXJlU2Nhbm5lZCgpIGNvbnN0CisgCisgICAgIG1fc2NhblN0YXRlID0g U2NhbkVycm9yOworIAorLSAgICBpZiAoZGV2aWNlKCktPmlzU2VxdWVudGlhbCgpKSB7CistICAg ICAgICBxV2FybmluZygpIDw8ICJTZXF1ZW50aWFsIGRldmljZXMgYXJlIG5vdCBzdXBwb3J0ZWQi OworKyAgICBRV2VicEhhbmRsZXIgKnRoYXQgPSBjb25zdF9jYXN0PFFXZWJwSGFuZGxlciAqPih0 aGlzKTsKKysgICAgY29uc3QgaW50IGhlYWRlckJ5dGVzTmVlZGVkID0gc2l6ZW9mKFdlYlBCaXRz dHJlYW1GZWF0dXJlcyk7CisrICAgIFFCeXRlQXJyYXkgaGVhZGVyID0gZGV2aWNlKCktPnBlZWso aGVhZGVyQnl0ZXNOZWVkZWQpOworKyAgICBpZiAoaGVhZGVyLnNpemUoKSA8IGhlYWRlckJ5dGVz TmVlZGVkKQorICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICB9CisgCistICAgIHFpbnQ2NCBv bGRQb3MgPSBkZXZpY2UoKS0+cG9zKCk7CistICAgIGRldmljZSgpLT5zZWVrKDApOworLQorLSAg ICBRV2VicEhhbmRsZXIgKnRoYXQgPSBjb25zdF9jYXN0PFFXZWJwSGFuZGxlciAqPih0aGlzKTsK Ky0gICAgUUJ5dGVBcnJheSBoZWFkZXIgPSBkZXZpY2UoKS0+cGVlayhzaXplb2YoV2ViUEJpdHN0 cmVhbUZlYXR1cmVzKSk7CisrICAgIC8vIFdlIGRvIG5vIHJhbmRvbSBhY2Nlc3MgZHVyaW5nIGRl Y29kaW5nLCBqdXN0IGEgcmVhZEFsbCgpIG9mIHRoZSB3aG9sZSBpbWFnZSBmaWxlLiBTbyBpZgor KyAgICAvLyBpZiBpdCBpcyBhbGwgYXZhaWxhYmxlIGFscmVhZHksIHdlIGNhbiBhY2NlcHQgYSBz ZXF1ZW50aWFsIGRldmljZS4gVGhlIHJpZmYgaGVhZGVyIGNvbnRhaW5zCisrICAgIC8vIHRoZSBm aWxlIHNpemUgbWludXMgOCBieXRlcyBoZWFkZXIKKysgICAgcWludDY0IGJ5dGVTaXplID0gcUZy b21MaXR0bGVFbmRpYW48cXVpbnQzMj4oaGVhZGVyLmNvbnN0RGF0YSgpICsgNCk7CisrICAgIGlm IChkZXZpY2UoKS0+aXNTZXF1ZW50aWFsKCkgJiYgZGV2aWNlKCktPmJ5dGVzQXZhaWxhYmxlKCkg PCBieXRlU2l6ZSArIDgpIHsKKysgICAgICAgIHFXYXJuaW5nKCkgPDwgIlFXZWJwSGFuZGxlcjog SW5zdWZmaWNpZW50IGRhdGEgYXZhaWxhYmxlIGluIHNlcXVlbnRpYWwgZGV2aWNlIjsKKysgICAg ICAgIHJldHVybiBmYWxzZTsKKysgICAgfQorICAgICBpZiAoV2ViUEdldEZlYXR1cmVzKChjb25z dCB1aW50OF90KiloZWFkZXIuY29uc3REYXRhKCksIGhlYWRlci5zaXplKCksICYodGhhdC0+bV9m ZWF0dXJlcykpID09IFZQOF9TVEFUVVNfT0spIHsKKyAgICAgICAgIGlmIChtX2ZlYXR1cmVzLmhh c19hbmltYXRpb24pIHsKKyAgICAgICAgICAgICAvLyBGb3IgYW5pbWF0aW9uLCB3ZSBoYXZlIHRv IHJlYWQgYW5kIHNjYW4gd2hvbGUgZmlsZSB0byBkZXRlcm1pbmUgbG9vcCBjb3VudCBhbmQgaW1h Z2VzIGNvdW50CistICAgICAgICAgICAgZGV2aWNlKCktPnNlZWsob2xkUG9zKTsKKy0KKyAgICAg ICAgICAgICBpZiAodGhhdC0+ZW5zdXJlRGVtdXhlcigpKSB7CisgICAgICAgICAgICAgICAgIHRo YXQtPm1fbG9vcCA9IFdlYlBEZW11eEdldEkobV9kZW11eGVyLCBXRUJQX0ZGX0xPT1BfQ09VTlQp OworICAgICAgICAgICAgICAgICB0aGF0LT5tX2ZyYW1lQ291bnQgPSBXZWJQRGVtdXhHZXRJKG1f ZGVtdXhlciwgV0VCUF9GRl9GUkFNRV9DT1VOVCk7CitAQCAtMTI2LDE3ICsxMjksMTMgQEAgYm9v bCBRV2VicEhhbmRsZXI6OmVuc3VyZVNjYW5uZWQoKSBjb25zdAorICAgICAgICAgICAgICAgICBp ZiAodGhhdC0+bV9mZWF0dXJlcy5oYXNfYWxwaGEpCisgICAgICAgICAgICAgICAgICAgICB0aGF0 LT5tX2NvbXBvc2l0ZWQtPmZpbGwoUXQ6OnRyYW5zcGFyZW50KTsKKyAKKy0gICAgICAgICAgICAg ICAgLy8gV2UgZG8gbm90IHJlc2V0IGRldmljZSBwb3NpdGlvbiBzaW5jZSB3ZSBoYXZlIHJlYWQg aW4gYWxsIGRhdGEKKyAgICAgICAgICAgICAgICAgbV9zY2FuU3RhdGUgPSBTY2FuU3VjY2VzczsK Ky0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgfQorICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgICBtX3NjYW5TdGF0ZSA9IFNjYW5TdWNjZXNzOworICAgICAg ICAgfQorICAgICB9CisgCistICAgIGRldmljZSgpLT5zZWVrKG9sZFBvcyk7CistCisgICAgIHJl dHVybiBtX3NjYW5TdGF0ZSA9PSBTY2FuU3VjY2VzczsKKyB9CisgCitAQCAtMTU5LDcgKzE1OCw3 IEBAIGJvb2wgUVdlYnBIYW5kbGVyOjplbnN1cmVEZW11eGVyKCkKKyAKKyBib29sIFFXZWJwSGFu ZGxlcjo6cmVhZChRSW1hZ2UgKmltYWdlKQorIHsKKy0gICAgaWYgKCFlbnN1cmVTY2FubmVkKCkg fHwgZGV2aWNlKCktPmlzU2VxdWVudGlhbCgpIHx8ICFlbnN1cmVEZW11eGVyKCkpCisrICAgIGlm ICghZW5zdXJlU2Nhbm5lZCgpIHx8ICFlbnN1cmVEZW11eGVyKCkpCisgICAgICAgICByZXR1cm4g ZmFsc2U7CisgCisgICAgIFFSZWN0IHByZXZGcmFtZVJlY3Q7CitTdWJtb2R1bGUgcXRsb2NhdGlv biA5OGE1YzUxMS4uZjk5MWUyOGM6CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRp b24vY29uZmlndXJlLmpzb24gYi9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9jb25maWd1cmUuanNv bgoraW5kZXggNmQwMWE5YTMuLmQxZTYyM2ExIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMv bG9jYXRpb24vY29uZmlndXJlLmpzb24KKysrKyBiL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2Nv bmZpZ3VyZS5qc29uCitAQCAtOSw3ICs5LDcgQEAKKyAgICAgICAgICAgICAibGFiZWwiOiAiUXQu bGFicy5sb2NhdGlvbiBleHBlcmltZW50YWwgUU1MIHBsdWdpbiIsCisgICAgICAgICAgICAgInB1 cnBvc2UiOiAiUHJvdmlkZXMgZXhwZXJpbWVudGFsIFF0TG9jYXRpb24gUU1MIHR5cGVzIiwKKyAg ICAgICAgICAgICAic2VjdGlvbiI6ICJMb2NhdGlvbiIsCistICAgICAgICAgICAgImNvbmRpdGlv biI6ICJjb25maWcub3BlbmdsIiwKKysgICAgICAgICAgICAiY29uZGl0aW9uIjogImZlYXR1cmVz Lm9wZW5nbCIsCisgICAgICAgICAgICAgIm91dHB1dCI6IFsgInByaXZhdGVGZWF0dXJlIiBdCisg ICAgICAgICB9LAorICAgICAgICAgImdlb3NlcnZpY2VzX29zbSI6IHsKK2RpZmYgLS1naXQgYS9x dGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0cXNnc3VwcG9ydC5j cHAgYi9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0cXNnc3Vw cG9ydC5jcHAKK2luZGV4IGE5Nzg1NzNkLi4xMWUxNDY2ZiAxMDA2NDQKKy0tLSBhL3F0bG9jYXRp b24vc3JjL2xvY2F0aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmplY3Rxc2dzdXBwb3J0LmNwcAorKysr IGIvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cvcWdlb21hcG9iamVjdHFzZ3N1cHBv cnQuY3BwCitAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgUUdlb01hcE9iamVjdFFTR1N1cHBvcnQ6 OnVwZGF0ZU1hcE9iamVjdHMoUVNHTm9kZSAqcm9vdCwgUVF1aWNrV2luZG93ICp3aW5kCisgICAg IGlmICghcm9vdCkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYgKG1fbWFwT2JqZWN0c1Jv b3ROb2RlICYmIG1fbWFwT2JqZWN0c1Jvb3ROb2RlLT5wYXJlbnQoKSkKKysgICAgaWYgKG1fbWFw T2JqZWN0c1Jvb3ROb2RlICYmICFtX21hcE9iamVjdHNSb290Tm9kZS0+cGFyZW50KCkpCisgICAg ICAgICByb290LT5hcHBlbmRDaGlsZE5vZGUobV9tYXBPYmplY3RzUm9vdE5vZGUuZ2V0KCkpOwor IAorICAgICBpZiAoIW1fbWFwT2JqZWN0c1Jvb3ROb2RlKSB7CitkaWZmIC0tZ2l0IGEvcXRsb2Nh dGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb2NvZGluZ21hbmFnZXJlbmdpbmVf ZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvY29k aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAoraW5kZXggNWE0MDQ2N2UuLmQxMjNjNmE4IDEwMDY0 NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb2NvZGlu Z21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vv c2VydmljZXMvZXNyaS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitAQCAtNTksOCAr NTksMTAgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1ByZWZp eEVzcmkoUVN0cmluZ0xpdGVyYWwoImVzcmkuIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtQ YXJhbVVzZXJBZ2VudChrUHJlZml4RXNyaSArIFFTdHJpbmdMaXRlcmFsKCJ1c2VyYWdlbnQiKSk7 CisgCistc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybEdlb2NvZGUoUVN0cmluZ0xpdGVyYWwoImh0 dHA6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29k ZVNlcnZlci9maW5kQWRkcmVzc0NhbmRpZGF0ZXMiKSk7Cistc3RhdGljIGNvbnN0IFFTdHJpbmcg a1VybFJldmVyc2VHZW9jb2RlKFFTdHJpbmdMaXRlcmFsKCJodHRwOi8vZ2VvY29kZS5hcmNnaXMu Y29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvcmV2ZXJzZUdlb2Nv ZGUiKSk7Cisrc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybEdlb2NvZGUoUVN0cmluZ0xpdGVyYWwo Imh0dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzLyIKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV29ybGQvR2VvY29k ZVNlcnZlci9maW5kQWRkcmVzc0NhbmRpZGF0ZXMiKSk7Cisrc3RhdGljIGNvbnN0IFFTdHJpbmcg a1VybFJldmVyc2VHZW9jb2RlKFFTdHJpbmdMaXRlcmFsKAorKyAgICAgICAgImh0dHBzOi8vZ2Vv Y29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIv cmV2ZXJzZUdlb2NvZGUiKSk7CisgCisgc3RhdGljIFFTdHJpbmcgYWRkcmVzc1RvUXVlcnkoY29u c3QgUUdlb0FkZHJlc3MgJmFkZHJlc3MpCisgeworZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3Jj L3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNyaS5jcHAgYi9x dGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29ucGFyc2Vy X2VzcmkuY3BwCitpbmRleCAxNzQ5MmQ5NC4uOTZjMTJiMWIgMTAwNjQ0CistLS0gYS9xdGxvY2F0 aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29ucGFyc2VyX2Vzcmku Y3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91 dGVqc29ucGFyc2VyX2VzcmkuY3BwCitAQCAtNDYsNyArNDYsOCBAQAorIAorIFFUX0JFR0lOX05B TUVTUEFDRQorIAorLS8vIEpTT04gcmVmZXJlbmNlOiBodHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5j b20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dpdGhfc3luY2hyb25v dXNfZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKysvLyBKU09OIHJlZmVyZW5jZToKKysv LyBodHRwczovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMv Um91dGVfc2VydmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAw MDAvCisgCisgc3RhdGljIGNvbnN0IFFTdHJpbmcga0Vycm9yTWVzc2FnZShRU3RyaW5nTGl0ZXJh bCgiRXJyb3IgJTE6ICUyLiIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrRXJyb3JKc29uKFFT dHJpbmdMaXRlcmFsKCJFcnJvcjogaW52YWxpZGUgSlNPTiBkb2N1bWVudC4iKSk7CitkaWZmIC0t Z2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlcmVw bHlfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vv cm91dGVyZXBseV9lc3JpLmNwcAoraW5kZXggOGNhZGZiMjkuLjkyYjZiYjEzIDEwMDY0NAorLS0t IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlcmVwbHlf ZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9n ZW9yb3V0ZXJlcGx5X2VzcmkuY3BwCitAQCAtNDQsNyArNDQsOCBAQAorIAorIFFUX0JFR0lOX05B TUVTUEFDRQorIAorLS8vIEpTT04gcmVmZXJlbmNlOiBodHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5j b20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dpdGhfc3luY2hyb25v dXNfZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKysvLyBKU09OIHJlZmVyZW5jZToKKysv LyBodHRwczovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMv Um91dGVfc2VydmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAw MDAvCisgCisgR2VvUm91dGVSZXBseUVzcmk6Okdlb1JvdXRlUmVwbHlFc3JpKFFOZXR3b3JrUmVw bHkgKnJlcGx5LCBjb25zdCBRR2VvUm91dGVSZXF1ZXN0ICZyZXF1ZXN0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRT2JqZWN0ICpwYXJlbnQpIDoKK2RpZmYgLS1naXQg YS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGluZ21hbmFn ZXJlbmdpbmVfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2Vz cmkvZ2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDBlNmJjMmM3Li5lZDYx M2Y0YiAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNy aS9nZW9yb3V0aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMv cGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3Bw CitAQCAtNDgsNyArNDgsOCBAQCBzdGF0aWMgY29uc3QgUVN0cmluZyBrUHJlZml4RXNyaShRU3Ry aW5nTGl0ZXJhbCgiZXNyaS4iKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1BhcmFtVXNlckFn ZW50KGtQcmVmaXhFc3JpICsgUVN0cmluZ0xpdGVyYWwoInVzZXJhZ2VudCIpKTsKKyBzdGF0aWMg Y29uc3QgUVN0cmluZyBrUGFyYW1Ub2tlbihrUHJlZml4RXNyaSArIFFTdHJpbmdMaXRlcmFsKCJ0 b2tlbiIpKTsKKyAKKy1zdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUm91dGluZyhRU3RyaW5nTGl0 ZXJhbCgiaHR0cDovL3JvdXRlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQv Um91dGUvTkFTZXJ2ZXIvUm91dGVfV29ybGQvc29sdmUiKSk7Cisrc3RhdGljIGNvbnN0IFFTdHJp bmcga1VybFJvdXRpbmcoUVN0cmluZ0xpdGVyYWwoCisrICAgICAgICAiaHR0cHM6Ly9yb3V0ZS5h cmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL1JvdXRlL05BU2VydmVyL1JvdXRl X1dvcmxkL3NvbHZlIikpOworIAorIEdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaTo6R2VvUm91 dGluZ01hbmFnZXJFbmdpbmVFc3JpKGNvbnN0IFFWYXJpYW50TWFwICZwYXJhbWV0ZXJzLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFH ZW9TZXJ2aWNlUHJvdmlkZXI6OkVycm9yICplcnJvciwKK0BAIC03MCw3ICs3MSw4IEBAIEdlb1Jv dXRpbmdNYW5hZ2VyRW5naW5lRXNyaTo6fkdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaSgpCisg eworIH0KKyAKKy0vLyBSRVNUIHJlZmVyZW5jZTogaHR0cDovL3Jlc291cmNlcy5hcmNnaXMuY29t L2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAwMzYwMDAwMDAK KysvLyBSRVNUIHJlZmVyZW5jZToKKysvLyBodHRwczovL3Jlc291cmNlcy5hcmNnaXMuY29tL2Vu L2hlbHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAwMzYwMDAwMDAKKyAK KyBRR2VvUm91dGVSZXBseSAqR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjpjYWxjdWxhdGVS b3V0ZShjb25zdCBRR2VvUm91dGVSZXF1ZXN0ICZyZXF1ZXN0KQorIHsKK0BAIC0xMjUsNyArMTI3 LDcgQEAgdm9pZCBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6OnJlcGx5RXJyb3IoUUdlb1Jv dXRlUmVwbHk6OkVycm9yIGVycm9yQ29kZSwgY28KKyBRU3RyaW5nIEdlb1JvdXRpbmdNYW5hZ2Vy RW5naW5lRXNyaTo6cHJlZmVyZWREaXJlY3Rpb25MYW5nYWdlKCkKKyB7CisgICAgIC8vIGxpc3Qg b2Ygc3VwcG9ydGVkIGxhbmdhZ2VzIGlzIGRlZmluZWQgaW46CistICAgIC8vIGh0dHA6Ly9yZXNv dXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5odG1sIy8vMDJy MzAwMDAwMDM2MDAwMDAwCisrICAgIC8vIGh0dHBzOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4v aGVscC9hcmNnaXMtcmVzdC1hcGkvaW5kZXguaHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAorICAg ICBjb25zdCBRU3RyaW5nTGlzdCBzdXBwb3J0ZWRMYW5ndWFnZXMgPSB7CisgICAgICAgICAiYXIi LCAvLyBHZW5lcmF0ZSBkaXJlY3Rpb25zIGluIEFyYWJpYworICAgICAgICAgImNzIiwgLy8gR2Vu ZXJhdGUgZGlyZWN0aW9ucyBpbiBDemVjaAorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3Bs dWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW90aWxlZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2Vzcmku Y3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3RpbGVkbWFw cGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDVkMTU4MzVkLi4yNDE0OGY5NSAxMDA2 NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW90aWxl ZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVn aW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNw cAorQEAgLTIzMCw3ICsyMzAsOCBAQCBRR2VvTWFwICpHZW9UaWxlZE1hcHBpbmdNYW5hZ2VyRW5n aW5lRXNyaTo6Y3JlYXRlTWFwKCkKKyAvLyAke3l9ID0gWQorIC8vICR7dG9rZW59ID0gVG9rZW4K KyAKKy0vLyB0ZW1wbGF0ZSA9ICdodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNH SVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBTZXJ2ZXIvdGlsZS97e3p9fS97e3l9 fS97e3h9fS5wbmcnCisrLy8gdGVtcGxhdGUgPQorKy8vICdodHRwczovL3NlcnZpY2VzLmFyY2dp c29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVG9wb19NYXAvTWFwU2VydmVy L3RpbGUve3t6fX0ve3t5fX0ve3t4fX0ucG5nJworIAorIGJvb2wgR2VvVGlsZWRNYXBwaW5nTWFu YWdlckVuZ2luZUVzcmk6OmluaXRpYWxpemVNYXBTb3VyY2VzKFFHZW9TZXJ2aWNlUHJvdmlkZXI6 OkVycm9yICplcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRU3RyaW5nICplcnJvclN0cmluZywKK2RpZmYgLS1naXQgYS9x dGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvbWFwcy5qc29uIGIvcXRsb2Nh dGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL21hcHMuanNvbgoraW5kZXggODE2N2Fl N2QuLjg2MmUwODdkIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2 aWNlcy9lc3JpL21hcHMuanNvbgorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2 aWNlcy9lc3JpL21hcHMuanNvbgorQEAgLTYsOCArNiw4IEBACisgICAgICAgICAgICAgImRlc2Ny aXB0aW9uIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgU3RyZWV0IE1hcCIsCisgICAgICAgICAgICAg Im1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAg ICAgInVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9z ZXJ2aWNlcy9Xb3JsZF9TdHJlZXRfTWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHly aWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0 ZW0uaHRtbD9pZD0zYjkzMzM3OTgzZTk0MzZmOGRiOTUwZTM4YTg2MjlhZic+RXNyaTwvYT4gY29u dHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNv bmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1N0cmVldF9NYXAvTWFwU2VydmVy IiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6 Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0zYjkzMzM3OTgzZTk0MzZmOGRiOTUw ZTM4YTg2MjlhZic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAg ICAgIHsKK0BAIC0xNiw4ICsxNiw4IEBACisgICAgICAgICAgICAgIiI6ICJBcmNHSVMgT25saW5l IFdvcmxkIEltYWdlcnkiLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAg ICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5h cmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX0ltYWdlcnkvTWFwU2Vy dmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0 cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTEwZGYyMjc5Zjk2ODRlNGE5ZjZh N2YwOGZlYmFjMmE5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6 ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dv cmxkX0ltYWdlcnkvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICIm Y29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0x MGRmMjI3OWY5Njg0ZTRhOWY2YTdmMDhmZWJhYzJhOSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgor ICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0yNiw4ICsyNiw4IEBACisgICAgICAgICAg ICAgImRlc2NyaXB0aW9uIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgVGVycmFpbiBCYXNlIiwKKyAg ICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2Us CistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJj R0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVGVycmFpbl9CYXNlL01hcFNlcnZlciIsCistICAgICAg ICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lz LmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1jNjFhZDhhYjAxN2Q0OWUxYTgyZjU4MGVlMTI5ODkzMSc+ RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2 ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9UZXJyYWluX0Jh c2UvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEg aHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1jNjFhZDhhYjAx N2Q0OWUxYTgyZjU4MGVlMTI5ODkzMSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAg fSwKKyAKKyAgICAgICAgIHsKK0BAIC0zNiw4ICszNiw4IEBACisgICAgICAgICAgICAgImRlc2Ny aXB0aW9uIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgVG9wb2dyYXBoeSIsCisgICAgICAgICAgICAg Im1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAg ICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2Vy dmljZXMvV29ybGRfVG9wb19NYXAvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0 VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5o dG1sP2lkPTMwZTVmZTMxNDljMzRkZjFiYTkyMmU2ZjViYmY4MDhmJz5Fc3JpPC9hPiBjb250cmli dXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUu Y29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9fTWFwL01hcFNlcnZlciIsCisrICAg ICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFy Y2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MzBlNWZlMzE0OWMzNGRmMWJhOTIyZTZmNWJiZjgw OGYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitA QCAtNDYsOCArNDYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIG1hcCBw cmVzZW50cyBsYW5kIGNvdmVyIGFuZCBkZXRhaWxlZCB0b3BvZ3JhcGhpYyBtYXBzIGZvciB0aGUg VW5pdGVkIFN0YXRlcy4iLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAg ICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2Vz LmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvVVNBX1RvcG9fTWFwcy9NYXBT ZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdo dHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9OTljZDVmYmQ5ODkzNDAyODgw MmI0Zjc5N2M0YjE3MzInPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJs IjogImh0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNl cy9VU0FfVG9wb19NYXBzL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQi OiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/ aWQ9OTljZDVmYmQ5ODkzNDAyODgwMmI0Zjc5N2M0YjE3MzInPkVzcmk8L2E+IGNvbnRyaWJ1dG9y cyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtNTYsOCArNTYsOCBAQAorICAgICAg ICAgICAgICJkZXNjcmlwdGlvbiI6ICJOYXRpb25hbCBHZW9ncmFwaGljIFdvcmxkIE1hcCIsCisg ICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNl LAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20v QXJjR0lTL3Jlc3Qvc2VydmljZXMvTmF0R2VvX1dvcmxkX01hcC9NYXBTZXJ2ZXIiLAorLSAgICAg ICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dp cy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjliMWI0MjIxOTg5NDRmYmJkNTI1MGIzMjQxNjkxYjYn PkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2Vy dmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9OYXRHZW9fV29ybGRf TWFwL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxh IGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjliMWI0MjIx OTg5NDRmYmJkNTI1MGIzMjQxNjkxYjYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAg IH0sCisgCisgICAgICAgICB7CitAQCAtNjYsOCArNjYsOCBAQAorICAgICAgICAgICAgICJkZXNj cmlwdGlvbiI6ICJUaGVtYXRpYyBjb250ZW50IHByb3ZpZGluZyBhIG5ldXRyYWwgYmFja2dyb3Vu ZCB3aXRoIG1pbmltYWwgY29sb3JzIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwKKyAg ICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9z ZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL0NhbnZhcy9Xb3Js ZF9MaWdodF9HcmF5X0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4 dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1s P2lkPWVkNzEyY2IxZGIzZTRiYWU5ZTg1MzI5MDQwZmI5YTQ5Jz5Fc3JpPC9hPiBjb250cmlidXRv cnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5j b20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dvcmxkX0xpZ2h0X0dyYXlfQmFzZS9NYXBT ZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdo dHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWVkNzEyY2IxZGIzZTRiYWU5 ZTg1MzI5MDQwZmI5YTQ5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAor ICAgICAgICAgeworQEAgLTc2LDggKzc2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24i OiAiTmF0dXJhbCBFYXJ0aCBwaHlzaWNhbCBtYXAgZm9yIHRoZSB3b3JsZCIsCisgICAgICAgICAg ICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAg ICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0 L3NlcnZpY2VzL1dvcmxkX1BoeXNpY2FsX01hcC9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJj b3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9t ZS9pdGVtLmh0bWw/aWQ9YzRlYzcyMmExY2QzNGNmMGEyMzkwNGFhZGY4OTIzYTAnPkVzcmk8L2E+ IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dp c29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfUGh5c2ljYWxfTWFwL01hcFNl cnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0 dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YzRlYzcyMmExY2QzNGNmMGEy MzkwNGFhZGY4OTIzYTAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisg ICAgICAgICB7CitAQCAtODYsOCArODYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6 ICJQb3J0cmF5cyBzdXJmYWNlIGVsZXZhdGlvbiBhcyBzaGFkZWQgcmVsaWVmIiwKKyAgICAgICAg ICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAg ICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jl c3Qvc2VydmljZXMvV29ybGRfU2hhZGVkX1JlbGllZi9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAg ICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20v aG9tZS9pdGVtLmh0bWw/aWQ9OWM1MzcwZDBiNTRmNGRlMWI0OGEzNzkyZDczNzdmZjInPkVzcmk8 L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFy Y2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfU2hhZGVkX1JlbGllZi9N YXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVm PSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTljNTM3MGQwYjU0ZjRk ZTFiNDhhMzc5MmQ3Mzc3ZmYyJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAor IAorICAgICAgICAgeworQEAgLTk2LDggKzk2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRp b24iOiAiVGhpcyBtYXAgaXMgZGVzaWduZWQgdG8gYmUgdXNlZCBhcyBhIGJhc2VtYXAgYnkgbWFy aW5lIEdJUyBwcm9mZXNzaW9uYWxzIGFuZCBhcyBhIHJlZmVyZW5jZSBtYXAgYnkgYW55b25lIGlu dGVyZXN0ZWQgaW4gb2NlYW4gZGF0YSIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAor ICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDov L3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL09jZWFuL1dvcmxk X09jZWFuX0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICIm Y29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTFl MTI2ZTc1MjBmOTQ2NmM5Y2EyOGI4ZjI4YjVlNTAwJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisr ICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL2FyY2dp cy9yZXN0L3NlcnZpY2VzL09jZWFuL1dvcmxkX09jZWFuX0Jhc2UvTWFwU2VydmVyIiwKKysgICAg ICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJj Z2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0xZTEyNmU3NTIwZjk0NjZjOWNhMjhiOGYyOGI1ZTUw MCc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BA IC0xMDYsOCArMTA2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlbWF0aWMg Y29udGVudCBwcm92aWRpbmcgYSBuZXV0cmFsIGJhY2tncm91bmQgd2l0aCBtaW5pbWFsIGNvbG9y cyIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6 IHRydWUsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5l LmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9DYW52YXMvV29ybGRfRGFya19HcmF5X0Jhc2UvTWFw U2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0n aHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWEyODRhOWI5OWIzNDQ2YTM5 MTBkNDE0NGE1MDk5MGY2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVy bCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2Vydmlj ZXMvQ2FudmFzL1dvcmxkX0RhcmtfR3JheV9CYXNlL01hcFNlcnZlciIsCisrICAgICAgICAgICAg ImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20v aG9tZS9pdGVtLmh0bWw/aWQ9YTI4NGE5Yjk5YjM0NDZhMzkxMGQ0MTQ0YTUwOTkwZjYnPkVzcmk8 L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMTE2LDgg KzExNiw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRlTG9ybWXigJlzIHRvcG9n cmFwaGljIGJhc2VtYXAgaXMgYSBzZWFtbGVzcyBnbG9iYWwgZGF0YSBzZXQgdGhhdCBwb3J0cmF5 cyB0cmFuc3BvcnRhdGlvbiwgaHlkcm9ncmFwaHksIGp1cmlzZGljdGlvbiBib3VuZGFyaWVzLCBh bmQgbWFqb3IgZ2VvZ3JhcGhpYyBmZWF0dXJlcyIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZh bHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAi aHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1NwZWNp YWx0eS9EZUxvcm1lX1dvcmxkX0Jhc2VfTWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNv cHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21l L2l0ZW0uaHRtbD9pZD1iMTY1YzNkZjQ1M2U0YmU2YjVhYzRmZGIyNDFlZmZiZSc+RXNyaTwvYT4g Y29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lz b25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9TcGVjaWFsdHkvRGVMb3JtZV9Xb3JsZF9C YXNlX01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5 OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWIxNjVj M2RmNDUzZTRiZTZiNWFjNGZkYjI0MWVmZmJlJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAg ICAgICB9CisgICAgIF0KKyB9CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9n ZW9zZXJ2aWNlcy9lc3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcCBiL3F0bG9jYXRpb24v c3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNyaS5jcHAK K2luZGV4IDM4NThkZGY1Li5hZjY2ZjI4ZSAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3Bs dWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNyaS5jcHAKKysrKyBi L3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdp bmVfZXNyaS5jcHAKK0BAIC02Myw4ICs2MywxMCBAQCBzdGF0aWMgY29uc3QgUVN0cmluZyBrQ291 bnRyaWVzS2V5KFFTdHJpbmdMaXRlcmFsKCJkZXRhaWxlZENvdW50cmllcyIpKTsKKyBzdGF0aWMg Y29uc3QgUVN0cmluZyBrTG9jYWxpemVkTmFtZXNLZXkoUVN0cmluZ0xpdGVyYWwoImxvY2FsaXpl ZE5hbWVzIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtNYXhMb2NhdGlvbnNLZXkoUVN0cmlu Z0xpdGVyYWwoIm1heExvY2F0aW9ucyIpKTsKKyAKKy1zdGF0aWMgY29uc3QgUVVybCBrVXJsR2Vv Y29kZVNlcnZlcigiaHR0cDovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNl cy9Xb3JsZC9HZW9jb2RlU2VydmVyP2Y9cGpzb24iKTsKKy1zdGF0aWMgY29uc3QgUVVybCBrVXJs RmluZEFkZHJlc3NDYW5kaWRhdGVzKCJodHRwOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9y ZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIik7 Cisrc3RhdGljIGNvbnN0IFFVcmwga1VybEdlb2NvZGVTZXJ2ZXIoCisrICAgICAgICAiaHR0cHM6 Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNl cnZlcj9mPXBqc29uIik7Cisrc3RhdGljIGNvbnN0IFFVcmwga1VybEZpbmRBZGRyZXNzQ2FuZGlk YXRlcygiaHR0cHM6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29y bGQvIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdlb2Nv ZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIik7CisgCisgUGxhY2VNYW5hZ2VyRW5naW5l RXNyaTo6UGxhY2VNYW5hZ2VyRW5naW5lRXNyaShjb25zdCBRVmFyaWFudE1hcCAmcGFyYW1ldGVy cywgUUdlb1NlcnZpY2VQcm92aWRlcjo6RXJyb3IgKmVycm9yLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyAqZXJyb3JTdHJpbmcpIDoKK1N1 Ym1vZHVsZSBxdG11bHRpbWVkaWEgZjAzNDQwNzkuLjBkN2NjMzNhOgorZGlmZiAtLWdpdCBhL3F0 bXVsdGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0X3B1bHNlLmNwcCBi L3F0bXVsdGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0X3B1bHNlLmNw cAoraW5kZXggMmI1MzI1MTMyLi5iNjhiNGFmMWIgMTAwNjQ0CistLS0gYS9xdG11bHRpbWVkaWEv c3JjL3BsdWdpbnMvcHVsc2VhdWRpby9xYXVkaW9pbnB1dF9wdWxzZS5jcHAKKysrKyBiL3F0bXVs dGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0X3B1bHNlLmNwcAorQEAg LTQwMiw2ICs0MDIsOCBAQCBpbnQgUVB1bHNlQXVkaW9JbnB1dDo6Ynl0ZXNSZWFkeSgpIGNvbnN0 CisgCisgcWludDY0IFFQdWxzZUF1ZGlvSW5wdXQ6OnJlYWQoY2hhciAqZGF0YSwgcWludDY0IGxl bikKKyB7CisrICAgIFFfQVNTRVJUKGRhdGEgIT0gbnVsbHB0ciB8fCBsZW4gPT0gMCk7CisrCisg ICAgIG1fYnl0ZXNBdmFpbGFibGUgPSBjaGVja0J5dGVzUmVhZHkoKTsKKyAKKyAgICAgc2V0RXJy b3IoUUF1ZGlvOjpOb0Vycm9yKTsKK0BAIC00MTEsNyArNDEzLDggQEAgcWludDY0IFFQdWxzZUF1 ZGlvSW5wdXQ6OnJlYWQoY2hhciAqZGF0YSwgcWludDY0IGxlbikKKyAKKyAgICAgaWYgKCFtX3B1 bGxNb2RlICYmICFtX3RlbXBCdWZmZXIuaXNFbXB0eSgpKSB7CisgICAgICAgICByZWFkQnl0ZXMg PSBxTWluKHN0YXRpY19jYXN0PGludD4obGVuKSwgbV90ZW1wQnVmZmVyLnNpemUoKSk7CistICAg ICAgICBtZW1jcHkoZGF0YSwgbV90ZW1wQnVmZmVyLmNvbnN0RGF0YSgpLCByZWFkQnl0ZXMpOwor KyAgICAgICAgaWYgKHJlYWRCeXRlcykKKysgICAgICAgICAgICBtZW1jcHkoZGF0YSwgbV90ZW1w QnVmZmVyLmNvbnN0RGF0YSgpLCByZWFkQnl0ZXMpOworICAgICAgICAgbV90b3RhbFRpbWVWYWx1 ZSArPSByZWFkQnl0ZXM7CisgCisgICAgICAgICBpZiAocmVhZEJ5dGVzIDwgbV90ZW1wQnVmZmVy LnNpemUoKSkgeworQEAgLTUwMiw5ICs1MDUsMTAgQEAgcWludDY0IFFQdWxzZUF1ZGlvSW5wdXQ6 OnJlYWQoY2hhciAqZGF0YSwgcWludDY0IGxlbikKKyAKKyB2b2lkIFFQdWxzZUF1ZGlvSW5wdXQ6 OmFwcGx5Vm9sdW1lKGNvbnN0IHZvaWQgKnNyYywgdm9pZCAqZGVzdCwgaW50IGxlbikKKyB7Cisr ICAgIFFfQVNTRVJUKChzcmMgJiYgZGVzdCkgfHwgbGVuID09IDApOworICAgICBpZiAobV92b2x1 bWUgPCAxLmYpCisgICAgICAgICBRQXVkaW9IZWxwZXJJbnRlcm5hbDo6cU11bHRpcGx5U2FtcGxl cyhtX3ZvbHVtZSwgbV9mb3JtYXQsIHNyYywgZGVzdCwgbGVuKTsKKy0gICAgZWxzZQorKyAgICBl bHNlIGlmIChsZW4pCisgICAgICAgICBtZW1jcHkoZGVzdCwgc3JjLCBsZW4pOworIH0KKyAKK1N1 Ym1vZHVsZSBxdHBpbSAwMmVmZWY1ZS4uLmY5YThmMGZjIChjb21taXRzIG5vdCBwcmVzZW50KQor U3VibW9kdWxlIHF0cXVpY2szZCBiODVjZjYyMi4uNDdkZWZjOGI6CitkaWZmIC0tZ2l0IGEvcXRx dWljazNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAucHJvIGIvcXRx dWljazNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAucHJvCitpbmRl eCBjYTVjNDk5ZS4uMTc0YTA3NWIgMTAwNjQ0CistLS0gYS9xdHF1aWNrM2Qvc3JjL3BsdWdpbnMv YXNzZXRpbXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8KKysrKyBiL3F0cXVpY2szZC9zcmMvcGx1 Z2lucy9hc3NldGltcG9ydGVycy9hc3NpbXAvYXNzaW1wLnBybworQEAgLTEwLDcgKzEwLDcgQEAg UVRfRk9SX0NPTkZJRyArPSBhc3NldGltcG9ydGVycy1wcml2YXRlCisgaW5jbHVkZSgkJE9VVF9Q V0QvLi4vcXRhc3NldGltcG9ydGVycy1jb25maWcucHJpKQorIAorIHF0Q29uZmlnKHN5c3RlbS1h c3NpbXApOiFpZihjcm9zc19jb21waWxlOmhvc3RfYnVpbGQpIHsKKy0gICAgUU1BS0VfVVNFX1BS SVZBVEUgKz0gYXNzaW1wCisrICAgIFFNQUtFX1VTRV9QUklWQVRFICs9IHF1aWNrM2QtYXNzaW1w CisgfSBlbHNlIHsKKyAgICAgaW5jbHVkZSguLi8uLi8uLi8zcmRwYXJ0eS9hc3NpbXAvYXNzaW1w LnByaSkKKyB9CitTdWJtb2R1bGUgcXRxdWlja2NvbnRyb2xzMiAzYTY1N2RjMC4uNTZjZTgyMzM6 CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRn ZXRzL3F3aWRnZXRwbGF0Zm9ybW1lbnUuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvaW1wb3J0 cy9wbGF0Zm9ybS93aWRnZXRzL3F3aWRnZXRwbGF0Zm9ybW1lbnUuY3BwCitpbmRleCBlNWZlNzM0 ZjcuLmUzNjkyMjc3NSAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL2ltcG9ydHMv cGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNwcAorKysrIGIvcXRxdWlja2Nv bnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRzL3F3aWRnZXRwbGF0Zm9ybW1lbnUu Y3BwCitAQCAtMzgsNiArMzgsNyBAQAorICNpbmNsdWRlICJxd2lkZ2V0cGxhdGZvcm1tZW51aXRl bV9wLmgiCisgCisgI2luY2x1ZGUgPFF0R3VpL3F3aW5kb3cuaD4KKysjaW5jbHVkZSA8UXRHdWkv cHJpdmF0ZS9xaGlnaGRwaXNjYWxpbmdfcC5oPgorICNpbmNsdWRlIDxRdFdpZGdldHMvcW1lbnUu aD4KKyAjaW5jbHVkZSA8UXRXaWRnZXRzL3FhY3Rpb24uaD4KKyAKK0BAIC0xNDUsNyArMTQ2LDcg QEAgdm9pZCBRV2lkZ2V0UGxhdGZvcm1NZW51OjpzaG93UG9wdXAoY29uc3QgUVdpbmRvdyAqd2lu ZG93LCBjb25zdCBRUmVjdCAmdGFyZ2V0UmUKKyAKKyAgICAgUVBvaW50IHRhcmdldFBvcyA9IHRh cmdldFJlY3QuYm90dG9tTGVmdCgpOworICAgICBpZiAod2luZG93KQorLSAgICAgICAgdGFyZ2V0 UG9zID0gd2luZG93LT5tYXBUb0dsb2JhbCh0YXJnZXRQb3MpOworKyAgICAgICAgdGFyZ2V0UG9z ID0gd2luZG93LT5tYXBUb0dsb2JhbChRSGlnaERwaTo6ZnJvbU5hdGl2ZUxvY2FsUG9zaXRpb24o dGFyZ2V0UG9zLCB3aW5kb3cpKTsKKyAKKyAgICAgY29uc3QgUVdpZGdldFBsYXRmb3JtTWVudUl0 ZW0gKndpZGdldEl0ZW0gPSBxb2JqZWN0X2Nhc3Q8Y29uc3QgUVdpZGdldFBsYXRmb3JtTWVudUl0 ZW0gKj4oaXRlbSk7CisgICAgIG1fbWVudS0+cG9wdXAodGFyZ2V0UG9zLCB3aWRnZXRJdGVtID8g d2lkZ2V0SXRlbS0+YWN0aW9uKCkgOiBudWxscHRyKTsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24uY3BwIGIvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uLmNw cAoraW5kZXggOTUwZTRlMDk5Li5iODFmYmVhMGIgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJv bHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24uY3BwCisrKysgYi9x dHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24u Y3BwCitAQCAtMzg3LDYgKzM4NywxNyBAQCB2b2lkIFFRdWlja0Fic3RyYWN0QnV0dG9uUHJpdmF0 ZTo6aXRlbUltcGxpY2l0SGVpZ2h0Q2hhbmdlZChRUXVpY2tJdGVtICppdGVtKQorICAgICAgICAg ZW1pdCBxLT5pbXBsaWNpdEluZGljYXRvckhlaWdodENoYW5nZWQoKTsKKyB9CisgCisrdm9pZCBR UXVpY2tBYnN0cmFjdEJ1dHRvblByaXZhdGU6Oml0ZW1EZXN0cm95ZWQoUVF1aWNrSXRlbSAqaXRl bSkKKyt7CisrICAgIFFfUShRUXVpY2tBYnN0cmFjdEJ1dHRvbik7CisrICAgIFFRdWlja0NvbnRy b2xQcml2YXRlOjppdGVtRGVzdHJveWVkKGl0ZW0pOworKyAgICBpZiAoaXRlbSA9PSBpbmRpY2F0 b3IpIHsKKysgICAgICAgIGluZGljYXRvciA9IG51bGxwdHI7CisrICAgICAgICBlbWl0IHEtPmlt cGxpY2l0SW5kaWNhdG9yV2lkdGhDaGFuZ2VkKCk7CisrICAgICAgICBlbWl0IHEtPmltcGxpY2l0 SW5kaWNhdG9ySGVpZ2h0Q2hhbmdlZCgpOworKyAgICB9CisrfQorKworIFFRdWlja0Fic3RyYWN0 QnV0dG9uICpRUXVpY2tBYnN0cmFjdEJ1dHRvblByaXZhdGU6OmZpbmRDaGVja2VkQnV0dG9uKCkg Y29uc3QKKyB7CisgICAgIFFfUShjb25zdCBRUXVpY2tBYnN0cmFjdEJ1dHRvbik7CitAQCAtMTE3 Niw2ICsxMTg3LDEyIEBAIFFBY2Nlc3NpYmxlOjpSb2xlIFFRdWlja0Fic3RyYWN0QnV0dG9uOjph Y2Nlc3NpYmxlUm9sZSgpIGNvbnN0CisgICAgIH0KKyAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpC dXR0b247CisgfQorKworK3ZvaWQgUVF1aWNrQWJzdHJhY3RCdXR0b246OmFjY2Vzc2libGVQcmVz c0FjdGlvbigpCisreworKyAgICBRX0QoUVF1aWNrQWJzdHJhY3RCdXR0b24pOworKyAgICBkLT50 cmlnZ2VyKCk7CisrfQorICNlbmRpZgorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQg YS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0 b25fcC5oIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3Ry YWN0YnV0dG9uX3AuaAoraW5kZXggMGZhNDg5ODBlLi5hYjY2MjIwZDAgMTAwNjQ0CistLS0gYS9x dHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25f cC5oCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJz dHJhY3RidXR0b25fcC5oCitAQCAtMjA5LDYgKzIwOSw3IEBAIHByb3RlY3RlZDoKKyAjaWYgUVRf Q09ORklHKGFjY2Vzc2liaWxpdHkpCisgICAgIHZvaWQgYWNjZXNzaWJpbGl0eUFjdGl2ZUNoYW5n ZWQoYm9vbCBhY3RpdmUpIG92ZXJyaWRlOworICAgICBRQWNjZXNzaWJsZTo6Um9sZSBhY2Nlc3Np YmxlUm9sZSgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBRX0lOVk9LQUJMRSB2b2lkIGFjY2Vzc2li bGVQcmVzc0FjdGlvbigpOworICNlbmRpZgorIAorIHByaXZhdGU6CitkaWZmIC0tZ2l0IGEvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3Bf cC5oIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0 YnV0dG9uX3BfcC5oCitpbmRleCA5MjkxYzFhODcuLmI3Mjk3MjBmMiAxMDA2NDQKKy0tLSBhL3F0 cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9w X3AuaAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fi c3RyYWN0YnV0dG9uX3BfcC5oCitAQCAtMTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKKyAKKyAgICAg dm9pZCBpdGVtSW1wbGljaXRXaWR0aENoYW5nZWQoUVF1aWNrSXRlbSAqaXRlbSkgb3ZlcnJpZGU7 CisgICAgIHZvaWQgaXRlbUltcGxpY2l0SGVpZ2h0Q2hhbmdlZChRUXVpY2tJdGVtICppdGVtKSBv dmVycmlkZTsKKysgICAgdm9pZCBpdGVtRGVzdHJveWVkKFFRdWlja0l0ZW0gKml0ZW0pIG92ZXJy aWRlOworIAorICAgICAvLyBjb3BpZWQgZnJvbSBxYWJzdHJhY3RidXR0b24uY3BwCisgICAgIHN0 YXRpYyBjb25zdCBpbnQgQVVUT19SRVBFQVRfREVMQVkgPSAzMDA7CitkaWZmIC0tZ2l0IGEvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAgYi9xdHF1 aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWN0aW9uLmNwcAoraW5kZXgg MjA0MWU3NzQxLi44NjEwY2RmYWUgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9x dWlja3RlbXBsYXRlczIvcXF1aWNrYWN0aW9uLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9z cmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAKK0BAIC0xNDUsNyArMTQ1LDcgQEAg aW50IFFRdWlja0FjdGlvblByaXZhdGU6OlNob3J0Y3V0RW50cnk6OnNob3J0Y3V0SWQoKSBjb25z dAorIAorIHZvaWQgUVF1aWNrQWN0aW9uUHJpdmF0ZTo6U2hvcnRjdXRFbnRyeTo6Z3JhYihjb25z dCBRS2V5U2VxdWVuY2UgJnNob3J0Y3V0LCBib29sIGVuYWJsZWQpCisgeworLSAgICBpZiAoc2hv cnRjdXQuaXNFbXB0eSgpKQorKyAgICBpZiAoc2hvcnRjdXQuaXNFbXB0eSgpIHx8IG1fc2hvcnRj dXRJZCkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgUXQ6OlNob3J0Y3V0Q29udGV4dCBjb250 ZXh0ID0gUXQ6OldpbmRvd1Nob3J0Y3V0OyAvLyBUT0RPCitkaWZmIC0tZ2l0IGEvcXRxdWlja2Nv bnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAgYi9xdHF1aWNr Y29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udGFpbmVyLmNwcAoraW5kZXgg ZjM4YzJiMDljLi42ZWVkMmEwMjQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9x dWlja3RlbXBsYXRlczIvcXF1aWNrY29udGFpbmVyLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xz Mi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAKK0BAIC0yMjUsNiArMjI1 LDcgQEAgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjpjbGVhbnVwKCkKKyAgICAgUU9iamVj dDo6ZGlzY29ubmVjdChjb250ZW50TW9kZWwsICZRUW1sT2JqZWN0TW9kZWw6OmNvdW50Q2hhbmdl ZCwgcSwgJlFRdWlja0NvbnRhaW5lcjo6Y291bnRDaGFuZ2VkKTsKKyAgICAgUU9iamVjdDo6ZGlz Y29ubmVjdChjb250ZW50TW9kZWwsICZRUW1sT2JqZWN0TW9kZWw6OmNoaWxkcmVuQ2hhbmdlZCwg cSwgJlFRdWlja0NvbnRhaW5lcjo6Y29udGVudENoaWxkcmVuQ2hhbmdlZCk7CisgICAgIGRlbGV0 ZSBjb250ZW50TW9kZWw7CisrICAgIGNvbnRlbnRNb2RlbCA9IG51bGxwdHI7CisgfQorIAorIFFR dWlja0l0ZW0gKlFRdWlja0NvbnRhaW5lclByaXZhdGU6Oml0ZW1BdChpbnQgaW5kZXgpIGNvbnN0 CitAQCAtNDM2LDcgKzQzNyw3IEBAIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6Y29udGVu dENoaWxkcmVuX2NsZWFyKFFRbWxMaXN0UHJvcGVydHk8UVF1aWNrSXRlbT4KKyB2b2lkIFFRdWlj a0NvbnRhaW5lclByaXZhdGU6OnVwZGF0ZUNvbnRlbnRXaWR0aCgpCisgeworICAgICBRX1EoUVF1 aWNrQ29udGFpbmVyKTsKKy0gICAgaWYgKGhhc0NvbnRlbnRXaWR0aCB8fCBxRnV6enlDb21wYXJl KGNvbnRlbnRXaWR0aCwgaW1wbGljaXRDb250ZW50V2lkdGgpKQorKyAgICBpZiAoaGFzQ29udGVu dFdpZHRoIHx8IHFGdXp6eUNvbXBhcmUoY29udGVudFdpZHRoLCBpbXBsaWNpdENvbnRlbnRXaWR0 aCkgfHwgIWNvbnRlbnRNb2RlbCkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgY29udGVudFdp ZHRoID0gaW1wbGljaXRDb250ZW50V2lkdGg7CitAQCAtNDQ2LDcgKzQ0Nyw3IEBAIHZvaWQgUVF1 aWNrQ29udGFpbmVyUHJpdmF0ZTo6dXBkYXRlQ29udGVudFdpZHRoKCkKKyB2b2lkIFFRdWlja0Nv bnRhaW5lclByaXZhdGU6OnVwZGF0ZUNvbnRlbnRIZWlnaHQoKQorIHsKKyAgICAgUV9RKFFRdWlj a0NvbnRhaW5lcik7CistICAgIGlmIChoYXNDb250ZW50SGVpZ2h0IHx8IHFGdXp6eUNvbXBhcmUo Y29udGVudEhlaWdodCwgaW1wbGljaXRDb250ZW50SGVpZ2h0KSkKKysgICAgaWYgKGhhc0NvbnRl bnRIZWlnaHQgfHwgcUZ1enp5Q29tcGFyZShjb250ZW50SGVpZ2h0LCBpbXBsaWNpdENvbnRlbnRI ZWlnaHQpIHx8ICFjb250ZW50TW9kZWwpCisgICAgICAgICByZXR1cm47CisgCisgICAgIGNvbnRl bnRIZWlnaHQgPSBpbXBsaWNpdENvbnRlbnRIZWlnaHQ7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2Nv bnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwIGIvcXRxdWlja2Nv bnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwCitpbmRleCBiYmJk MGU2MjIuLjFmNGI0NzM0MyAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNr dGVtcGxhdGVzMi9xcXVpY2tjb250cm9sLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMv cXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwCitAQCAtODQ1LDYgKzg0NSwxMyBAQCB2 b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjpleGVjdXRlQmFja2dyb3VuZChib29sIGNvbXBsZXRl KQorICAgICAgICAgcXVpY2tDb21wbGV0ZURlZmVycmVkKHEsIGJhY2tncm91bmROYW1lKCksIGJh Y2tncm91bmQpOworIH0KKyAKKysvKgorKyAgICBcaW50ZXJuYWwKKysKKysgICAgSGlkZXMgYW4g aXRlbSB0aGF0IHdhcyByZXBsYWNlZCBieSBhIG5ld2VyIG9uZSwgcmF0aGVyIHRoYW4KKysgICAg ZGVsZXRpbmcgaXQsIGFzIHRoZSBpdGVtIGlzIHR5cGljYWxseSBjcmVhdGVkIGluIFFNTCBhbmQg aGVuY2UKKysgICAgd2UgZG9uJ3Qgb3duIGl0LgorKyovCisgdm9pZCBRUXVpY2tDb250cm9sUHJp dmF0ZTo6aGlkZU9sZEl0ZW0oUVF1aWNrSXRlbSAqaXRlbSkKKyB7CisgICAgIGlmICghaXRlbSkK K0BAIC04NjMsNiArODcwLDI5IEBAIHZvaWQgUVF1aWNrQ29udHJvbFByaXZhdGU6OmhpZGVPbGRJ dGVtKFFRdWlja0l0ZW0gKml0ZW0pCisgI2VuZGlmCisgfQorIAorKy8qCisrICAgIFxpbnRlcm5h bAorKworKyAgICBOYW1lZCAidW5oaWRlIiBiZWNhdXNlIGl0J3MgdXNlZCBmb3IgY2FzZXMgd2hl cmUgYW4gaXRlbQorKyAgICB0aGF0IHdhcyBwcmV2aW91c2x5IGhpZGRlbiBieSBcbCBoaWRlT2xk SXRlbSgpIHdhbnRzIHRvIGJlCisrICAgIHNob3duIGJ5IGEgY29udHJvbCBhZ2Fpbiwgc3VjaCBh cyBhIFNjcm9sbEJhciBpbiBTY3JvbGxWaWV3LgorKyovCisrdm9pZCBRUXVpY2tDb250cm9sUHJp dmF0ZTo6dW5oaWRlT2xkSXRlbShRUXVpY2tDb250cm9sICpjb250cm9sLCBRUXVpY2tJdGVtICpp dGVtKQorK3sKKysgICAgUV9BU1NFUlQoaXRlbSk7CisrICAgIHFDRGVidWcobGNJdGVtTWFuYWdl bWVudCkgPDwgInVuaGlkaW5nIG9sZCBpdGVtIiA8PCBpdGVtOworKworKyAgICBpdGVtLT5zZXRW aXNpYmxlKHRydWUpOworKyAgICBpdGVtLT5zZXRQYXJlbnRJdGVtKGNvbnRyb2wpOworKworKyNp ZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysgICAgLy8gQWRkIHRoZSBpdGVtIGJhY2sgaW4g dG8gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4KKysgICAgUVF1aWNrQWNjZXNzaWJsZUF0dGFjaGVk ICphY2Nlc3NpYmxlID0gYWNjZXNzaWJsZUF0dGFjaGVkKGl0ZW0pOworKyAgICBpZiAoYWNjZXNz aWJsZSkKKysgICAgICAgIGFjY2Vzc2libGUtPnNldElnbm9yZWQoZmFsc2UpOworKyNlbmRpZgor K30KKysKKyB2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjp1cGRhdGVCYXNlbGluZU9mZnNldCgp CisgeworICAgICBRX1EoUVF1aWNrQ29udHJvbCk7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmggYi9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbF9wX3AuaAoraW5kZXggOGU5 NzkwNzllLi5hNmU2MjRjOTEgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlj a3RlbXBsYXRlczIvcXF1aWNrY29udHJvbF9wX3AuaAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9z cmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmgKK0BAIC0xNzMsNiArMTczLDcg QEAgcHVibGljOgorICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUJhY2tncm91bmQoYm9vbCBjb21w bGV0ZSA9IGZhbHNlKTsKKyAKKyAgICAgc3RhdGljIHZvaWQgaGlkZU9sZEl0ZW0oUVF1aWNrSXRl bSAqaXRlbSk7CisrICAgIHN0YXRpYyB2b2lkIHVuaGlkZU9sZEl0ZW0oUVF1aWNrQ29udHJvbCAq Y29udHJvbCwgUVF1aWNrSXRlbSAqaXRlbSk7CisgCisgICAgIHZvaWQgdXBkYXRlQmFzZWxpbmVP ZmZzZXQoKTsKKyAKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBs YXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1 aWNrdGVtcGxhdGVzMi9xcXVpY2tkaWFsb2didXR0b25ib3guY3BwCitpbmRleCBlNmRiMTRlYjUu LjYxOTdkMTU0NyAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxh dGVzMi9xcXVpY2tkaWFsb2didXR0b25ib3guY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Ny Yy9xdWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcAorQEAgLTIzNyw3ICsy MzcsNyBAQCBzdGF0aWMgUVJlY3RGIGFsaWduZWRSZWN0KFF0OjpMYXlvdXREaXJlY3Rpb24gZGly ZWN0aW9uLCBRdDo6QWxpZ25tZW50IGFsaWdubWVudAorIHZvaWQgUVF1aWNrRGlhbG9nQnV0dG9u Qm94UHJpdmF0ZTo6cmVzaXplQ29udGVudCgpCisgeworICAgICBRX1EoUVF1aWNrRGlhbG9nQnV0 dG9uQm94KTsKKy0gICAgaWYgKCFjb250ZW50SXRlbSkKKysgICAgaWYgKCFjb250ZW50SXRlbSB8 fCAhY29udGVudE1vZGVsKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBRUmVjdEYgZ2VvbWV0 cnkgPSBxLT5ib3VuZGluZ1JlY3QoKS5hZGp1c3RlZChxLT5sZWZ0UGFkZGluZygpLCBxLT50b3BQ YWRkaW5nKCksIC1xLT5yaWdodFBhZGRpbmcoKSwgLXEtPmJvdHRvbVBhZGRpbmcoKSk7CitAQCAt MzIyLDYgKzMyMiw5IEBAIHZvaWQgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6dXBkYXRl TGF5b3V0KCkKKyBxcmVhbCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjpnZXRDb250ZW50 V2lkdGgoKSBjb25zdAorIHsKKyAgICAgUV9RKGNvbnN0IFFRdWlja0RpYWxvZ0J1dHRvbkJveCk7 CisrICAgIGlmICghY29udGVudE1vZGVsKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisgICAgIGNv bnN0IGludCBjb3VudCA9IGNvbnRlbnRNb2RlbC0+Y291bnQoKTsKKyAgICAgY29uc3QgcXJlYWwg dG90YWxTcGFjaW5nID0gcU1heCgwLCBjb3VudCAtIDEpICogc3BhY2luZzsKKyAgICAgcXJlYWwg dG90YWxXaWR0aCA9IHRvdGFsU3BhY2luZzsKK0BAIC0zNDEsNiArMzQ0LDkgQEAgcXJlYWwgUVF1 aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6Z2V0Q29udGVudFdpZHRoKCkgY29uc3QKKyBxcmVh bCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjpnZXRDb250ZW50SGVpZ2h0KCkgY29uc3QK KyB7CisgICAgIFFfUShjb25zdCBRUXVpY2tEaWFsb2dCdXR0b25Cb3gpOworKyAgICBpZiAoIWNv bnRlbnRNb2RlbCkKKysgICAgICAgIHJldHVybiAwOworKworICAgICBjb25zdCBpbnQgY291bnQg PSBjb250ZW50TW9kZWwtPmNvdW50KCk7CisgICAgIHFyZWFsIG1heEhlaWdodCA9IDA7CisgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworZGlmZiAtLWdpdCBhL3F0cXVpY2tj b250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcCBiL3F0cXVpY2tj b250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcAoraW5kZXggOTFi ZDU5MTg0Li4wY2U1MThmODQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlj a3RlbXBsYXRlczIvcXF1aWNrb3ZlcmxheS5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3Jj L3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcAorQEAgLTM5OSw4ICszOTksMTEgQEAg dm9pZCBRUXVpY2tPdmVybGF5OjppdGVtQ2hhbmdlKEl0ZW1DaGFuZ2UgY2hhbmdlLCBjb25zdCBJ dGVtQ2hhbmdlRGF0YSAmZGF0YSkKKyAgICAgUV9EKFFRdWlja092ZXJsYXkpOworICAgICBRUXVp Y2tJdGVtOjppdGVtQ2hhbmdlKGNoYW5nZSwgZGF0YSk7CisgCistICAgIGlmIChjaGFuZ2UgPT0g SXRlbUNoaWxkQWRkZWRDaGFuZ2UgfHwgY2hhbmdlID09IEl0ZW1DaGlsZFJlbW92ZWRDaGFuZ2Up CisrICAgIGlmIChjaGFuZ2UgPT0gSXRlbUNoaWxkQWRkZWRDaGFuZ2UgfHwgY2hhbmdlID09IEl0 ZW1DaGlsZFJlbW92ZWRDaGFuZ2UpIHsKKyAgICAgICAgIHNldFZpc2libGUoIWQtPmFsbERyYXdl cnMuaXNFbXB0eSgpIHx8ICFjaGlsZEl0ZW1zKCkuaXNFbXB0eSgpKTsKKysgICAgICAgIGlmIChk YXRhLml0ZW0tPnBhcmVudCgpID09IGQtPm1vdXNlR3JhYmJlclBvcHVwKQorKyAgICAgICAgICAg IGQtPnNldE1vdXNlR3JhYmJlclBvcHVwKG51bGxwdHIpOworKyAgICB9CisgfQorIAorIHZvaWQg UVF1aWNrT3ZlcmxheTo6Z2VvbWV0cnlDaGFuZ2VkKGNvbnN0IFFSZWN0RiAmbmV3R2VvbWV0cnks IGNvbnN0IFFSZWN0RiAmb2xkR2VvbWV0cnkpCitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xz Mi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAgYi9xdHF1aWNrY29udHJv bHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrc2Nyb2xsYmFyLmNwcAoraW5kZXggNGUyZjUw OWRiLi4xYzRiMzA4Y2QgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3Rl bXBsYXRlczIvcXF1aWNrc2Nyb2xsYmFyLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMv cXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAKK0BAIC03OTcsNiArNzk3LDE0IEBA IHZvaWQgUVF1aWNrU2Nyb2xsQmFyQXR0YWNoZWRQcml2YXRlOjppbml0SG9yaXpvbnRhbCgpCisg ICAgIGlmIChwYXJlbnQgJiYgcGFyZW50ID09IGZsaWNrYWJsZS0+cGFyZW50SXRlbSgpKQorICAg ICAgICAgaG9yaXpvbnRhbC0+c3RhY2tBZnRlcihmbGlja2FibGUpOworIAorKyAgICAvLyBJZiBh IHNjcm9sbCBiYXIgd2FzIHByZXZpb3VzbHkgaGlkZGVuIChkdWUgdG8gZS5nLiBzZXR0aW5nIGEg bmV3IGNvbnRlbnRJdGVtCisrICAgIC8vIG9uIGEgU2Nyb2xsVmlldyksIHdlIG5lZWQgdG8gbWFr ZSBzdXJlIHRoYXQgd2UgdW4taGlkZSBpdC4KKysgICAgLy8gV2UgZG9uJ3QgYm90aGVyIGNoZWNr aW5nIGlmIHRoZSBpdGVtIGlzIGFjdHVhbGx5IHRoZSBvbGQgb25lLCBiZWNhdXNlCisrICAgIC8v IGlmIGl0J3Mgbm90LCBhbGwgb2YgdGhlIHRoaW5ncyB0aGUgZnVuY3Rpb24gZG9lcyAoc2V0dGlu ZyBwYXJlbnQsIHZpc2liaWxpdHksIGV0Yy4pCisrICAgIC8vIHNob3VsZCBiZSBuby1vcHMgYW55 d2F5LgorKyAgICBpZiAoYXV0byBjb250cm9sID0gcW9iamVjdF9jYXN0PFFRdWlja0NvbnRyb2wq PihxX3B0ci0+cGFyZW50KCkpKQorKyAgICAgICAgUVF1aWNrQ29udHJvbFByaXZhdGU6OnVuaGlk ZU9sZEl0ZW0oY29udHJvbCwgaG9yaXpvbnRhbCk7CisrCisgICAgIGxheW91dEhvcml6b250YWwo KTsKKyAgICAgaG9yaXpvbnRhbC0+c2V0U2l6ZShhcmVhLT5wcm9wZXJ0eSgid2lkdGhSYXRpbyIp LnRvUmVhbCgpKTsKKyAgICAgaG9yaXpvbnRhbC0+c2V0UG9zaXRpb24oYXJlYS0+cHJvcGVydHko InhQb3NpdGlvbiIpLnRvUmVhbCgpKTsKK0BAIC04MTgsNiArODI2LDkgQEAgdm9pZCBRUXVpY2tT Y3JvbGxCYXJBdHRhY2hlZFByaXZhdGU6OmluaXRWZXJ0aWNhbCgpCisgICAgIGlmIChwYXJlbnQg JiYgcGFyZW50ID09IGZsaWNrYWJsZS0+cGFyZW50SXRlbSgpKQorICAgICAgICAgdmVydGljYWwt PnN0YWNrQWZ0ZXIoZmxpY2thYmxlKTsKKyAKKysgICAgaWYgKGF1dG8gY29udHJvbCA9IHFvYmpl Y3RfY2FzdDxRUXVpY2tDb250cm9sKj4ocV9wdHItPnBhcmVudCgpKSkKKysgICAgICAgIFFRdWlj a0NvbnRyb2xQcml2YXRlOjp1bmhpZGVPbGRJdGVtKGNvbnRyb2wsIHZlcnRpY2FsKTsKKysKKyAg ICAgbGF5b3V0VmVydGljYWwoKTsKKyAgICAgdmVydGljYWwtPnNldFNpemUoYXJlYS0+cHJvcGVy dHkoImhlaWdodFJhdGlvIikudG9SZWFsKCkpOworICAgICB2ZXJ0aWNhbC0+c2V0UG9zaXRpb24o YXJlYS0+cHJvcGVydHkoInlQb3NpdGlvbiIpLnRvUmVhbCgpKTsKK2RpZmYgLS1naXQgYS9xdHF1 aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc2Nyb2xsdmlldy5xbWwg Yi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc2Nyb2xsdmll dy5xbWwKK2luZGV4IDBlOGIwODM1Mi4uY2Q0OTMxMTg0IDEwMDY0NAorLS0tIGEvcXRxdWlja2Nv bnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3Njcm9sbHZpZXcucW1sCisrKysg Yi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc2Nyb2xsdmll dy5xbWwKK0BAIC01NzYsNCArNTc2LDUxIEBAIFRlc3RDYXNlIHsKKyAgICAgICAgIHZlcmlmeShu ZXdIb3Jpem9udGFsU2Nyb2xsQmFyLnZpc2libGUpCisgICAgICAgICB2ZXJpZnkoIW9sZEhvcml6 b250YWxTY3JvbGxCYXIudmlzaWJsZSkKKyAgICAgfQorKworKyAgICBDb21wb25lbnQgeworKyAg ICAgICAgaWQ6IGJpbmRpbmdUb0NvbnRlbnRJdGVtQW5kU3RhbmRhbG9uZUZsaWNrYWJsZQorKwor KyAgICAgICAgSXRlbSB7CisrICAgICAgICAgICAgd2lkdGg6IDIwMAorKyAgICAgICAgICAgIGhl aWdodDogMjAwCisrCisrICAgICAgICAgICAgcHJvcGVydHkgYWxpYXMgc2Nyb2xsVmlldzogc2Ny b2xsVmlldworKworKyAgICAgICAgICAgIFNjcm9sbFZpZXcgeworKyAgICAgICAgICAgICAgICBp ZDogc2Nyb2xsVmlldworKyAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorKyAg ICAgICAgICAgICAgICBjb250ZW50SXRlbTogbGlzdFZpZXcKKysKKysgICAgICAgICAgICAgICAg cHJvcGVydHkgSXRlbSBzb21lQmluZGluZzogY29udGVudEl0ZW0KKysgICAgICAgICAgICB9Cisr ICAgICAgICAgICAgTGlzdFZpZXcgeworKyAgICAgICAgICAgICAgICBpZDogbGlzdFZpZXcKKysg ICAgICAgICAgICAgICAgbW9kZWw6IDEwCisrICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBJdGVt RGVsZWdhdGUgeworKyAgICAgICAgICAgICAgICAgICAgdGV4dDogbW9kZWxEYXRhCisrICAgICAg ICAgICAgICAgICAgICB3aWR0aDogbGlzdFZpZXcud2lkdGgKKysgICAgICAgICAgICAgICAgfQor KyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgfQorKworKyAgICAvLyBUZXN0cyB0aGF0 IHNjcm9sbCBiYXJzIHNob3cgdXAgZm9yIGEgU2Nyb2xsVmlldyB3aGVyZQorKyAgICAvLyAtIGl0 cyBjb250ZW50SXRlbSBpcyBkZWNsYXJlZCBhcyBhIHN0YW5kYWxvbmUsIHNlcGFyYXRlIGl0ZW0K KysgICAgLy8gLSB0aGVyZSBpcyBhIGJpbmRpbmcgdG8gY29udGVudEl0ZW0gKHdoaWNoIGNhdXNl cyBhIGRlZmF1bHQgRmxpY2thYmxlIHRvIGJlIGNyZWF0ZWQpCisrICAgIGZ1bmN0aW9uIHRlc3Rf YmluZGluZ1RvQ29udGVudEl0ZW1BbmRTdGFuZGFsb25lRmxpY2thYmxlKCkgeworKyAgICAgICAg bGV0IHJvb3QgPSBjcmVhdGVUZW1wb3JhcnlPYmplY3QoYmluZGluZ1RvQ29udGVudEl0ZW1BbmRT dGFuZGFsb25lRmxpY2thYmxlLCB0ZXN0Q2FzZSkKKysgICAgICAgIHZlcmlmeShyb290KQorKwor KyAgICAgICAgbGV0IGNvbnRyb2wgPSByb290LnNjcm9sbFZpZXcKKysgICAgICAgIGxldCB2ZXJ0 aWNhbFNjcm9sbEJhciA9IGNvbnRyb2wuU2Nyb2xsQmFyLnZlcnRpY2FsCisrICAgICAgICBsZXQg aG9yaXpvbnRhbFNjcm9sbEJhciA9IGNvbnRyb2wuU2Nyb2xsQmFyLmhvcml6b250YWwKKysgICAg ICAgIGNvbXBhcmUodmVydGljYWxTY3JvbGxCYXIucGFyZW50LCBjb250cm9sKQorKyAgICAgICAg Y29tcGFyZShob3Jpem9udGFsU2Nyb2xsQmFyLnBhcmVudCwgY29udHJvbCkKKysgICAgICAgIHZl cmlmeSh2ZXJ0aWNhbFNjcm9sbEJhci52aXNpYmxlKQorKyAgICAgICAgdmVyaWZ5KGhvcml6b250 YWxTY3JvbGxCYXIudmlzaWJsZSkKKysKKysgICAgICAgIG1vdXNlRHJhZyh2ZXJ0aWNhbFNjcm9s bEJhciwgdmVydGljYWxTY3JvbGxCYXIud2lkdGggLyAyLCB2ZXJ0aWNhbFNjcm9sbEJhci5oZWln aHQgLyAyLCAwLCA1MCkKKysgICAgICAgIHZlcmlmeSh2ZXJ0aWNhbFNjcm9sbEJhci5hY3RpdmUp CisrICAgICAgICB2ZXJpZnkoaG9yaXpvbnRhbFNjcm9sbEJhci5hY3RpdmUpCisrICAgIH0KKyB9 CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEv dHN0X3N3aXRjaC5xbWwgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0 YS90c3Rfc3dpdGNoLnFtbAoraW5kZXggYjNmYWI0MWNhLi4xMGI2YmFhMDIgMTAwNjQ0CistLS0g YS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc3dpdGNoLnFt bAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3N3 aXRjaC5xbWwKK0BAIC02MDgsNCArNjA4LDI3IEBAIFRlc3RDYXNlIHsKKyAgICAgICAgIG1vdXNl Q2xpY2soY29udHJvbC5pbmRpY2F0b3IpCisgICAgICAgICB2ZXJpZnkoY29udHJvbC5hY3RpdmVG b2N1cykKKyAgICAgfQorKworKyAgICBDb21wb25lbnQgeworKyAgICAgICAgaWQ6IGRlbGV0aW9u T3JkZXIxCisrICAgICAgICBJdGVtIHsKKysgICAgICAgICAgICBJbWFnZSB7IGlkOiBpbm5lcklt YWdlIH0KKysgICAgICAgICAgICBTd2l0Y2ggeyBpbmRpY2F0b3I6IGlubmVySW1hZ2UgfQorKyAg ICAgICAgfQorKyAgICB9CisrCisrICAgIENvbXBvbmVudCB7CisrICAgICAgICBpZDogZGVsZXRp b25PcmRlcjIKKysgICAgICAgIEl0ZW0geworKyAgICAgICAgICAgIFN3aXRjaCB7IGluZGljYXRv cjogaW5uZXJJbWFnZSB9CisrICAgICAgICAgICAgSW1hZ2UgeyBpZDogaW5uZXJJbWFnZSB9Cisr ICAgICAgICB9CisrICAgIH0KKysKKysgICAgZnVuY3Rpb24gdGVzdF9kZWxldGlvbk9yZGVyKCkg eworKyAgICAgICAgdmFyIGNvbnRyb2wxID0gY3JlYXRlVGVtcG9yYXJ5T2JqZWN0KGRlbGV0aW9u T3JkZXIxLCB0ZXN0Q2FzZSkKKysgICAgICAgIHZlcmlmeShjb250cm9sMSkKKysgICAgICAgIHZh ciBjb250cm9sMiA9IGNyZWF0ZVRlbXBvcmFyeU9iamVjdChkZWxldGlvbk9yZGVyMiwgdGVzdENh c2UpCisrICAgICAgICB2ZXJpZnkoY29udHJvbDIpCisrICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEv cXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL2RhdGEvcmVsZWFzZUFmdGVy RXhpdFRyYW5zaXRpb24ucW1sIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3Bv cHVwL2RhdGEvcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1sCituZXcgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggMDAwMDAwMDAwLi45ZTQ1OThiOWYKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0 cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC9kYXRhL3JlbGVhc2VBZnRlckV4 aXRUcmFuc2l0aW9uLnFtbAorQEAgLTAsMCArMSw3OCBAQAorKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENv bnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFU X0JFR0lOX0xJQ0VOU0U6QlNEJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExp Y2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlz IGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3Jl ZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwg aW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4g YWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0 ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25k aXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3Jt IGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBCU0QgTGljZW5zZSBV c2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEJTRCBsaWNlbnNlCisrKiogYXMgZm9sbG93czoKKysqKgorKyoqICJSZWRp c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp dGhvdXQKKysqKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisrKiogbWV0OgorKyoqICAgKiBSZWRpc3RyaWJ1dGlv bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyoqICAg ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns YWltZXIuCisrKiogICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrKiogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyoqICAgICB0aGUgZG9j dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisrKiog ICAgIGRpc3RyaWJ1dGlvbi4KKysqKiAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBUaGUgUXQgQ29t cGFueSBMdGQgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKysqKiAgICAgY29udHJpYnV0b3JzIG1heSBi ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisrKiogICAgIGZy b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv bi4KKysqKgorKyoqCisrKiogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKyoqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisrKiogTElNSVRFRCBU TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg Rk9SCisrKiogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBDT1BZUklHSFQKKysqKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysqKiBTUEVDSUFMLCBFWEVN UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisrKiog TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg TE9TUyBPRiBVU0UsCisrKiogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisrKiogVEhFT1JZIE9GIExJQUJJTElUWSwg V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKyoqIChJTkNM VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg VEhFIFVTRQorKyoqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoq CisrKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKysKKytpbXBvcnQgUXRRdWljayAyLjE1CisraW1wb3J0 IFF0UXVpY2suQ29udHJvbHMgMi4xNQorKworK0FwcGxpY2F0aW9uV2luZG93IHsKKysgICAgaWQ6 IHdpbmRvdworKyAgICB3aWR0aDogNDAwCisrICAgIGhlaWdodDogNDAwCisrICAgIHRpdGxlOiAi cmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24iCisrCisrICAgIHByb3BlcnR5IGFsaWFzIHBvcHVw OiBwb3B1cAorKyAgICBwcm9wZXJ0eSBhbGlhcyBtb2RhbFBvcHVwOiBtb2RhbFBvcHVwCisrCisr ICAgIFBvcHVwIHsKKysgICAgICAgIGlkOiBwb3B1cAorKyAgICAgICAgeTogcGFyZW50LmhlaWdo dCAtIGhlaWdodAorKyAgICAgICAgd2lkdGg6IDUwCisrICAgICAgICBoZWlnaHQ6IDUwCisrICAg IH0KKysKKysgICAgUG9wdXAgeworKyAgICAgICAgaWQ6IG1vZGFsUG9wdXAKKysgICAgICAgIG1v ZGFsOiB0cnVlCisrICAgICAgICB5OiBwYXJlbnQuaGVpZ2h0IC0gaGVpZ2h0CisrICAgICAgICB3 aWR0aDogNTAKKysgICAgICAgIGhlaWdodDogNTAKKysgICAgICAgIGV4aXQ6ICBUcmFuc2l0aW9u IHsgUGF1c2VBbmltYXRpb24geyBkdXJhdGlvbjogMTAwIH0gfQorKyAgICB9CisrfQorZGlmZiAt LWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC90c3RfcXF1aWNr cG9wdXAuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9x cXVpY2twb3B1cC5jcHAKK2luZGV4IDU0OTUyZDEyOC4uM2Q1MGUyZGQ0IDEwMDY0NAorLS0tIGEv cXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9xcXVpY2twb3B1cC5j cHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC90c3RfcXF1 aWNrcG9wdXAuY3BwCitAQCAtMTAwLDYgKzEwMCw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZv aWQgaW52aXNpYmxlVG9vbFRpcE9wZW4oKTsKKyAgICAgdm9pZCBjZW50ZXJJbk92ZXJsYXlXaXRo aW5TdGFja1ZpZXdJdGVtKCk7CisgICAgIHZvaWQgZGVzdHJveUR1cmluZ0V4aXRUcmFuc2l0aW9u KCk7CisrICAgIHZvaWQgcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24oKTsKKyB9OworIAorIHZv aWQgdHN0X1FRdWlja1BvcHVwOjppbml0VGVzdENhc2UoKQorQEAgLTE1NzUsNiArMTU3NiwzNCBA QCB2b2lkIHRzdF9RUXVpY2tQb3B1cDo6ZGVzdHJveUR1cmluZ0V4aXRUcmFuc2l0aW9uKCkKKyAg ICAgUVZFUklGWSghYnV0dG9uLT5pc0Rvd24oKSk7CisgfQorIAorK3ZvaWQgdHN0X1FRdWlja1Bv cHVwOjpyZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbigpCisreworKyAgICBRUXVpY2tBcHBsaWNh dGlvbkhlbHBlciBoZWxwZXIodGhpcywgInJlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uLnFtbCIp OworKyAgICBRVkVSSUZZMihoZWxwZXIucmVhZHksIGhlbHBlci5mYWlsdXJlTWVzc2FnZSgpKTsK KysKKysgICAgUVF1aWNrV2luZG93ICp3aW5kb3cgPSBoZWxwZXIud2luZG93OworKyAgICB3aW5k b3ctPnNob3coKTsKKysgICAgUVZFUklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dBY3RpdmUod2lu ZG93KSk7CisrCisrICAgIFFRdWlja092ZXJsYXkgKm92ZXJsYXkgPSBRUXVpY2tPdmVybGF5Ojpv dmVybGF5KHdpbmRvdyk7CisrICAgIFFRdWlja1BvcHVwICptb2RhbFBvcHVwID0gd2luZG93LT5w cm9wZXJ0eSgibW9kYWxQb3B1cCIpLnZhbHVlPFFRdWlja1BvcHVwICo+KCk7CisrICAgIFFRdWlj a1BvcHVwICpwb3B1cCA9IHdpbmRvdy0+cHJvcGVydHkoInBvcHVwIikudmFsdWU8UVF1aWNrUG9w dXAgKj4oKTsKKysKKysgICAgbW9kYWxQb3B1cC0+b3BlbigpOworKyAgICBRVFJZX1ZFUklGWSht b2RhbFBvcHVwLT5pc09wZW5lZCgpKTsKKysKKysgICAgUVRlc3Q6Om1vdXNlUHJlc3Mod2luZG93 LCBRdDo6TGVmdEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIsIFFQb2ludCgxLCAxKSk7CisrICAgIC8v IHdhaXQgdW50aWwgdGhlIHRyYW5zaXRpb24gaXMgZmluaXNoZWQgYW5kIHRoZSBvdmVybGF5IGhp ZGVzIGl0c2VsZgorKyAgICBRVFJZX1ZFUklGWSghb3ZlcmxheS0+aXNWaXNpYmxlKCkpOworKyAg ICBRVGVzdDo6bW91c2VSZWxlYXNlKHdpbmRvdywgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlm aWVyLCBRUG9pbnQoMSwgMSkpOworKworKyAgICBwb3B1cC0+b3BlbigpOworKyAgICBRVFJZX1ZF UklGWShwb3B1cC0+aXNPcGVuZWQoKSk7CisrICAgIFFUZXN0Ojptb3VzZUNsaWNrKHdpbmRvdywg UXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyLCBRUG9pbnQoMSwgMSkpOworKyAgICBRVFJZ X1ZFUklGWSghcG9wdXAtPmlzT3BlbmVkKCkpOworK30KKysKKysKKyBRVEVTVF9RVUlDS0NPTlRS T0xTX01BSU4odHN0X1FRdWlja1BvcHVwKQorIAorICNpbmNsdWRlICJ0c3RfcXF1aWNrcG9wdXAu bW9jIgorU3VibW9kdWxlIHF0c2NyaXB0IDViZTk1Zjk2Li4uNGQ4ZTRiZDIgKGNvbW1pdHMgbm90 IHByZXNlbnQpCitTdWJtb2R1bGUgcXRzcGVlY2ggMTdmYzlmZGUuLjI1NTg0NWUyOgorZGlmZiAt LWdpdCBhL3F0c3BlZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hkaXNwYXRjaGVyL3F0ZXh0dG9z cGVlY2hfc3BlZWNoZC5jcHAgYi9xdHNwZWVjaC9zcmMvcGx1Z2lucy90dHMvc3BlZWNoZGlzcGF0 Y2hlci9xdGV4dHRvc3BlZWNoX3NwZWVjaGQuY3BwCitpbmRleCA2ZWI3NGI4Li5iY2M3ZGQxIDEw MDY0NAorLS0tIGEvcXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRzL3NwZWVjaGRpc3BhdGNoZXIvcXRl eHR0b3NwZWVjaF9zcGVlY2hkLmNwcAorKysrIGIvcXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRzL3Nw ZWVjaGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNwcAorQEAgLTM1Nyw3ICszNTcs OSBAQCBRVmVjdG9yPFFMb2NhbGU+IFFUZXh0VG9TcGVlY2hFbmdpbmVTcGVlY2hkOjphdmFpbGFi bGVMb2NhbGVzKCkgY29uc3QKKyAKKyBRVmVjdG9yPFFWb2ljZT4gUVRleHRUb1NwZWVjaEVuZ2lu ZVNwZWVjaGQ6OmF2YWlsYWJsZVZvaWNlcygpIGNvbnN0CisgeworLSAgICByZXR1cm4gbV92b2lj ZXMudmFsdWVzKG1fY3VycmVudExvY2FsZS5uYW1lKCkpLnRvVmVjdG9yKCk7CisrICAgIFFMaXN0 PFFWb2ljZT4gcmVzdWx0TGlzdCA9IG1fdm9pY2VzLnZhbHVlcyhtX2N1cnJlbnRMb2NhbGUubmFt ZSgpKTsKKysgICAgc3RkOjpyZXZlcnNlKHJlc3VsdExpc3QuYmVnaW4oKSwgcmVzdWx0TGlzdC5l bmQoKSk7CisrICAgIHJldHVybiByZXN1bHRMaXN0LnRvVmVjdG9yKCk7CisgfQorIAorIC8vIFdl IGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgb3VyIG93biBjbGllbnRfaWQgc2luY2Ugc3BlZWNoLWRp c3BhdGNoZXIgc2VlbXMgdG8gYmUgaW5jb21wbGV0ZQorU3VibW9kdWxlIHF0c3ZnIDBjMDU3ODBl Li5hN2EwZjI0OToKK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMv c3ZnL3Fzdmdpb2hhbmRsZXIuY3BwIGIvcXRzdmcvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3N2 Zy9xc3ZnaW9oYW5kbGVyLmNwcAoraW5kZXggNTYxZTc3ZS4uMTJlMDU3NCAxMDA2NDQKKy0tLSBh L3F0c3ZnL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxlci5jcHAKKysr KyBiL3F0c3ZnL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxlci5jcHAK K0BAIC0xOTEsNiArMTkxLDggQEAgYm9vbCBRU3ZnSU9IYW5kbGVyOjpyZWFkKFFJbWFnZSAqaW1h Z2UpCisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgaWYgKCFmaW5hbFNpemUu aXNFbXB0eSgpKSB7CisrICAgICAgICAgICAgaWYgKHFNYXgoZmluYWxTaXplLndpZHRoKCksIGZp bmFsU2l6ZS5oZWlnaHQoKSkgPiAweGZmZmYpCisrICAgICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsgLy8gQXNzdW1lIGNvcnJ1cHRlZCBmaWxlCisgICAgICAgICAgICAgaW1hZ2UtPmZpbGwoZC0+ YmFja0NvbG9yLnJnYmEoKSk7CisgICAgICAgICAgICAgUVBhaW50ZXIgcChpbWFnZSk7CisgICAg ICAgICAgICAgZC0+ci5yZW5kZXIoJnAsIGJvdW5kcyk7CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3Jj L3N2Zy9xc3ZnaGFuZGxlci5jcHAgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVyLmNwcAoraW5k ZXggYTVmODc3Zi4uOGRkYTU2MyAxMDA2NDQKKy0tLSBhL3F0c3ZnL3NyYy9zdmcvcXN2Z2hhbmRs ZXIuY3BwCisrKysgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVyLmNwcAorQEAgLTEzOTMsOSAr MTM5MywxMCBAQCBzdGF0aWMgdm9pZCBwYXJzZUZvbnQoUVN2Z05vZGUgKm5vZGUsCisgICAgICAg ICBjYXNlIEZvbnRTaXplTm9uZToKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGNhc2Ug Rm9udFNpemVWYWx1ZTogeworLSAgICAgICAgICAgIFFTdmdIYW5kbGVyOjpMZW5ndGhUeXBlIGR1 bW15OyAvLyBzaG91bGQgYWx3YXlzIGJlIHBpeGVsIHNpemUKKy0gICAgICAgICAgICBmb250U3R5 bGUtPnNldFNpemUocU1pbihwYXJzZUxlbmd0aChhdHRyaWJ1dGVzLmZvbnRTaXplLCBkdW1teSwg aGFuZGxlciksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXJlYWwoMHhm ZmZmKSkpOworKyAgICAgICAgICAgIFFTdmdIYW5kbGVyOjpMZW5ndGhUeXBlIHR5cGU7CisrICAg ICAgICAgICAgcXJlYWwgZnMgPSBwYXJzZUxlbmd0aChhdHRyaWJ1dGVzLmZvbnRTaXplLCB0eXBl LCBoYW5kbGVyKTsKKysgICAgICAgICAgICBmcyA9IGNvbnZlcnRUb1BpeGVscyhmcywgdHJ1ZSwg dHlwZSk7CisrICAgICAgICAgICAgZm9udFN0eWxlLT5zZXRTaXplKHFNaW4oZnMsIHFyZWFsKDB4 ZmZmZikpKTsKKyAgICAgICAgIH0KKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGRlZmF1 bHQ6CitAQCAtMjUxMyw2ICsyNTE0LDggQEAgc3RhdGljIGJvb2wgcGFyc2VBbmltYXRlVHJhbnNm b3JtTm9kZShRU3ZnTm9kZSAqcGFyZW50LAorICAgICAgICAgICAgICsrczsKKyAgICAgICAgIH0K KyAgICAgfQorKyAgICBpZiAodmFscy5jb3VudCgpICUgMyAhPSAwKQorKyAgICAgICAgcmV0dXJu IGZhbHNlOworIAorICAgICBib29sIG9rID0gdHJ1ZTsKKyAgICAgaW50IGJlZ2luID0gcGFyc2VD bG9ja1ZhbHVlKGJlZ2luU3RyLCAmb2spOworQEAgLTI1NzYsNiArMjU3OSw4IEBAIHN0YXRpYyBR U3ZnTm9kZSAqY3JlYXRlQ2lyY2xlTm9kZShRU3ZnTm9kZSAqcGFyZW50LAorICAgICBxcmVhbCBu Y3ggPSB0b0RvdWJsZShjeCk7CisgICAgIHFyZWFsIG5jeSA9IHRvRG91YmxlKGN5KTsKKyAgICAg cXJlYWwgbnIgID0gdG9Eb3VibGUocik7CisrICAgIGlmIChuciA8IDAuMCkKKysgICAgICAgIHJl dHVybiBudWxscHRyOworIAorICAgICBRUmVjdEYgcmVjdChuY3gtbnIsIG5jeS1uciwgbnIqMiwg bnIqMik7CisgICAgIFFTdmdOb2RlICpjaXJjbGUgPSBuZXcgUVN2Z0NpcmNsZShwYXJlbnQsIHJl Y3QpOworQEAgLTMwNDYsMTUgKzMwNTEsMTYgQEAgc3RhdGljIFFTdmdTdHlsZVByb3BlcnR5ICpj cmVhdGVSYWRpYWxHcmFkaWVudE5vZGUoUVN2Z05vZGUgKm5vZGUsCisgCisgICAgIHFyZWFsIG5j eCA9IDAuNTsKKyAgICAgcXJlYWwgbmN5ID0gMC41OworLSAgICBxcmVhbCBuciAgPSAwLjU7Cisg ICAgIGlmICghY3guaXNFbXB0eSgpKQorICAgICAgICAgbmN4ID0gdG9Eb3VibGUoY3gpOworICAg ICBpZiAoIWN5LmlzRW1wdHkoKSkKKyAgICAgICAgIG5jeSA9IHRvRG91YmxlKGN5KTsKKysKKysg ICAgcXJlYWwgbnIgPSAwLjA7CisgICAgIGlmICghci5pc0VtcHR5KCkpCisgICAgICAgICBuciA9 IHRvRG91YmxlKHIpOworLSAgICBpZiAobnIgPCAwLjUpCistICAgICAgICBuciA9IDAuNTsKKysg ICAgaWYgKG5yIDw9IDAuMCkKKysgICAgICAgIHJldHVybiBudWxscHRyOworIAorICAgICBxcmVh bCBuZnggPSBuY3g7CisgICAgIGlmICghZnguaXNFbXB0eSgpKQorQEAgLTMzNTAsNyArMzM1Niw5 IEBAIHN0YXRpYyBRU3ZnTm9kZSAqY3JlYXRlVGV4dE5vZGUoUVN2Z05vZGUgKnBhcmVudCwKKyAg ICAgLy8jIyMgZWRpdGFibGUgYW5kIHJvdGF0ZSBub3QgaGFuZGxlZAorICAgICBRU3ZnSGFuZGxl cjo6TGVuZ3RoVHlwZSB0eXBlOworICAgICBxcmVhbCBueCA9IHBhcnNlTGVuZ3RoKHgsIHR5cGUs IGhhbmRsZXIpOworKyAgICBueCA9IGNvbnZlcnRUb1BpeGVscyhueCwgdHJ1ZSwgdHlwZSk7Cisg ICAgIHFyZWFsIG55ID0gcGFyc2VMZW5ndGgoeSwgdHlwZSwgaGFuZGxlcik7CisrICAgIG55ID0g Y29udmVydFRvUGl4ZWxzKG55LCB0cnVlLCB0eXBlKTsKKyAKKyAgICAgUVN2Z05vZGUgKnRleHQg PSBuZXcgUVN2Z1RleHQocGFyZW50LCBRUG9pbnRGKG54LCBueSkpOworICAgICByZXR1cm4gdGV4 dDsKK0BAIC0zNjkxLDkgKzM2OTksNyBAQCB2b2lkIFFTdmdIYW5kbGVyOjpwYXJzZSgpCisgICAg ICAgICBjYXNlIFFYbWxTdHJlYW1SZWFkZXI6OkVuZEVsZW1lbnQ6CisgICAgICAgICAgICAgZW5k RWxlbWVudCh4bWwtPm5hbWUoKSk7CisgICAgICAgICAgICAgKytyZW1haW5pbmdVbmZpbmlzaGVk RWxlbWVudHM7CistICAgICAgICAgICAgLy8gaWYgd2UgYXJlIHVzaW5nIHNvbWVib2R5IGVsc2Un cyBxeG1sc3RyZWFtcmVhZGVyCistICAgICAgICAgICAgLy8gd2Ugc2hvdWxkIG5vdCByZWFkIHVu dGlsIHRoZSBlbmQgb2YgdGhlIHN0cmVhbQorLSAgICAgICAgICAgIGRvbmUgPSAhbV9vd25zUmVh ZGVyICYmICh4bWwtPm5hbWUoKSA9PSBRTGF0aW4xU3RyaW5nKCJzdmciKSk7CisrICAgICAgICAg ICAgZG9uZSA9ICh4bWwtPm5hbWUoKSA9PSBRTGF0aW4xU3RyaW5nKCJzdmciKSk7CisgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICBjYXNlIFFYbWxTdHJlYW1SZWFkZXI6OkNoYXJhY3RlcnM6 CisgICAgICAgICAgICAgY2hhcmFjdGVycyh4bWwtPnRleHQoKSk7CitkaWZmIC0tZ2l0IGEvcXRz dmcvc3JjL3N2Zy9xc3Znc3RydWN0dXJlLmNwcCBiL3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVjdHVy ZS5jcHAKK2luZGV4IGI4OTYwOGIuLjg5YzllNGUgMTAwNjQ0CistLS0gYS9xdHN2Zy9zcmMvc3Zn L3FzdmdzdHJ1Y3R1cmUuY3BwCisrKysgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdzdHJ1Y3R1cmUuY3Bw CitAQCAtMjU1LDkgKzI1NSwxMyBAQCBpbmxpbmUgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRTdmdG ZWF0dXJlKGNvbnN0IFFTdHJpbmcgJnN0cikKKyAgICAgfTsKKyAKKyAgICAgaWYgKHN0ci5sZW5n dGgoKSA8PSBNQVhfV09SRF9MRU5HVEggJiYgc3RyLmxlbmd0aCgpID49IE1JTl9XT1JEX0xFTkdU SCkgeworKyAgICAgICAgY29uc3QgY2hhcjE2X3QgdW5pY29kZTQ0ID0gc3RyLmF0KDQ0KS51bmlj b2RlKCk7CisrICAgICAgICBjb25zdCBjaGFyMTZfdCB1bmljb2RlNDUgPSBzdHIuYXQoNDUpLnVu aWNvZGUoKTsKKysgICAgICAgIGlmICh1bmljb2RlNDQgPj0gc2l6ZW9mKGFzc29fdmFsdWVzKSB8 fCB1bmljb2RlNDUgPj0gc2l6ZW9mKGFzc29fdmFsdWVzKSkKKysgICAgICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgICAgICBjb25zdCBpbnQga2V5ID0gc3RyLmxlbmd0aCgpCistICAgICAgICAg ICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1tzdHIuYXQoNDUpLnVuaWNvZGUoKV0KKy0gICAg ICAgICAgICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3N0ci5hdCg0NCkudW5pY29kZSgpXTsK KysgICAgICAgICAgICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3VuaWNvZGU0NV0KKysgICAg ICAgICAgICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3VuaWNvZGU0NF07CisgICAgICAgICBp ZiAoa2V5IDw9IE1BWF9IQVNIX1ZBTFVFICYmIGtleSA+PSAwKQorICAgICAgICAgICAgIHJldHVy biBzdHIgPT0gUUxhdGluMVN0cmluZyh3b3JkbGlzdFtrZXldKTsKKyAgICAgfQorZGlmZiAtLWdp dCBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAgYi9xdHN2Zy9zcmMvc3ZnL3Fz dmd0aW55ZG9jdW1lbnQuY3BwCitpbmRleCA2M2QwNzk3Li4xOWU3MTU0IDEwMDY0NAorLS0tIGEv cXRzdmcvc3JjL3N2Zy9xc3ZndGlueWRvY3VtZW50LmNwcAorKysrIGIvcXRzdmcvc3JjL3N2Zy9x c3ZndGlueWRvY3VtZW50LmNwcAorQEAgLTQzMyw4ICs0MzMsMTYgQEAgdm9pZCBRU3ZnVGlueURv Y3VtZW50OjpkcmF3KFFQYWludGVyICpwLCBRU3ZnRXh0cmFTdGF0ZXMgJikKKyAgICAgZHJhdyhw KTsKKyB9CisgCisrc3RhdGljIGJvb2wgaXNWYWxpZE1hdHJpeChjb25zdCBRVHJhbnNmb3JtICZ0 cmFuc2Zvcm0pCisreworKyAgICBxcmVhbCBkZXRlcm1pbmFudCA9IHRyYW5zZm9ybS5kZXRlcm1p bmFudCgpOworKyAgICByZXR1cm4gcUlzRmluaXRlKGRldGVybWluYW50KTsKKyt9CisrCisgdm9p ZCBRU3ZnVGlueURvY3VtZW50OjptYXBTb3VyY2VUb1RhcmdldChRUGFpbnRlciAqcCwgY29uc3Qg UVJlY3RGICZ0YXJnZXRSZWN0LCBjb25zdCBRUmVjdEYgJnNvdXJjZVJlY3QpCisgeworKyAgICBR VHJhbnNmb3JtIG9sZFRyYW5zZm9ybSA9IHAtPndvcmxkVHJhbnNmb3JtKCk7CisrCisgICAgIFFS ZWN0RiB0YXJnZXQgPSB0YXJnZXRSZWN0OworICAgICBpZiAodGFyZ2V0LmlzRW1wdHkoKSkgewor ICAgICAgICAgUVBhaW50RGV2aWNlICpkZXYgPSBwLT5kZXZpY2UoKTsKK0BAIC00ODcsNiArNDk1 LDkgQEAgdm9pZCBRU3ZnVGlueURvY3VtZW50OjptYXBTb3VyY2VUb1RhcmdldChRUGFpbnRlciAq cCwgY29uc3QgUVJlY3RGICZ0YXJnZXRSZWN0LAorICAgICAgICAgfQorICNlbmRpZgorICAgICB9 CisrCisrICAgIGlmICghaXNWYWxpZE1hdHJpeChwLT53b3JsZFRyYW5zZm9ybSgpKSkKKysgICAg ICAgIHAtPnNldFdvcmxkVHJhbnNmb3JtKG9sZFRyYW5zZm9ybSk7CisgfQorIAorIFFSZWN0RiBR U3ZnVGlueURvY3VtZW50Ojpib3VuZHNPbkVsZW1lbnQoY29uc3QgUVN0cmluZyAmaWQpIGNvbnN0 CitkaWZmIC0tZ2l0IGEvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0X3FzdmdyZW5k ZXJlci5jcHAgYi9xdHN2Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVy LmNwcAoraW5kZXggMzZjNzZlYy4uZGI3MWUwMiAxMDA2NDQKKy0tLSBhL3F0c3ZnL3Rlc3RzL2F1 dG8vcXN2Z3JlbmRlcmVyL3RzdF9xc3ZncmVuZGVyZXIuY3BwCisrKysgYi9xdHN2Zy90ZXN0cy9h dXRvL3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcAorQEAgLTg2LDYgKzg2LDggQEAg cHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBvc3NfZnV6el8yMzczMSgpOworICAgICB2b2lkIG9z c19mdXp6XzI0MTMxKCk7CisgICAgIHZvaWQgb3NzX2Z1enpfMjQ3MzgoKTsKKysgICAgdm9pZCBp bGxlZ2FsQW5pbWF0ZVRyYW5zZm9ybV9kYXRhKCk7CisrICAgIHZvaWQgaWxsZWdhbEFuaW1hdGVU cmFuc2Zvcm0oKTsKKyAKKyAjaWZuZGVmIFFUX05PX0NPTVBSRVNTCisgICAgIHZvaWQgdGVzdEd6 TG9hZGluZygpOworQEAgLTE2NDYsNSArMTY0OCwyMiBAQCB2b2lkIHRzdF9RU3ZnUmVuZGVyZXI6 Om9zc19mdXp6XzI0NzM4KCkKKyAgICAgUVN2Z1JlbmRlcmVyKCkubG9hZChRQnl0ZUFycmF5KCI8 c3ZnPjxwYXRoIGQ9XCJhIDIgMWUtMjEyLi4uLi5cIj4iKSk7CisgfQorIAorK3ZvaWQgdHN0X1FT dmdSZW5kZXJlcjo6aWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm1fZGF0YSgpCisreworKyAgICBRVGVz dDo6YWRkQ29sdW1uPFFCeXRlQXJyYXk+KCJzdmciKTsKKysKKysgICAgUVRlc3Q6Om5ld1Jvdygi Y2FzZTEiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJhbnNmb3JtIHR5cGU9XCJyb3Rh dGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIyXCIgdmFsdWVzPVwiOCwwLDUsMFwiPiIpOworKyAgICBR VGVzdDo6bmV3Um93KCJjYXNlMiIpIDw8IFFCeXRlQXJyYXkoIjxzdmc+PGFuaW1hdGVUcmFuc2Zv cm0gdHlwZT1cInJvdGF0ZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJcIiB2YWx1ZXM9XCIxLDJcIj4i KTsKKysgICAgUVRlc3Q6Om5ld1JvdygiY2FzZTMiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmlt YXRlVHJhbnNmb3JtIHR5cGU9XCJyb3RhdGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIyXCIgZnJvbT1c Ii4uIDUgMlwiIHRvPVwiZlwiPiIpOworKyAgICBRVGVzdDo6bmV3Um93KCJjYXNlNCIpIDw8IFFC eXRlQXJyYXkoIjxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1cInNjYWxlXCIgYmVnaW49XCIx XCIgZHVyPVwiMlwiIGJ5PVwiLS0sLi5cIj4iKTsKKyt9CisrCisrdm9pZCB0c3RfUVN2Z1JlbmRl cmVyOjppbGxlZ2FsQW5pbWF0ZVRyYW5zZm9ybSgpCisreworKyAgICBRRkVUQ0goUUJ5dGVBcnJh eSwgc3ZnKTsKKysgICAgUVN2Z1JlbmRlcmVyIHJlbmRlcmVyOworKyAgICBRVkVSSUZZKCFyZW5k ZXJlci5sb2FkKHN2ZykpOyAvLyBhbHNvIHNob3VsZG4ndCBhc3NlcnQKKyt9CisrCisgUVRFU1Rf TUFJTih0c3RfUVN2Z1JlbmRlcmVyKQorICNpbmNsdWRlICJ0c3RfcXN2Z3JlbmRlcmVyLm1vYyIK K1N1Ym1vZHVsZSBxdHRvb2xzIDY5MTRmN2M4Li4wOTBlNTI2ZToKK2RpZmYgLS1naXQgYS9xdHRv b2xzL3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5jcHAgYi9xdHRv b2xzL3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5jcHAKK2luZGV4 IGZlYWIxZTJkNS4uY2JmYjgyNTA3IDEwMDY0NAorLS0tIGEvcXR0b29scy9zcmMvYXNzaXN0YW50 L3FoZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0b3IuY3BwCisrKysgYi9xdHRvb2xzL3NyYy9hc3Np c3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5jcHAKK0BAIC00NDUsNyArNDQ1LDkg QEAgYm9vbCBIZWxwR2VuZXJhdG9yUHJpdmF0ZTo6aW5zZXJ0RmlsZXMoY29uc3QgUVN0cmluZ0xp c3QgJmZpbGVzLCBjb25zdCBRU3RyaW5nICYKKyAgICAgaWYgKGZpbHRlclNldElkIDwgMCkKKyAg ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgKytmaWx0ZXJTZXRJZDsKKy0gICAgZm9yIChpbnQg YXR0SWQgOiBxQXNDb25zdChmaWx0ZXJBdHRzKSkgeworKyAgICBRTGlzdDxpbnQ+IGF0dFZhbHVl cyA9IGZpbHRlckF0dHMudmFsdWVzKCk7CisrICAgIHN0ZDo6c29ydChhdHRWYWx1ZXMuYmVnaW4o KSwgYXR0VmFsdWVzLmVuZCgpKTsKKysgICAgZm9yIChpbnQgYXR0SWQgOiBxQXNDb25zdChhdHRW YWx1ZXMpKSB7CisgICAgICAgICBtX3F1ZXJ5LT5wcmVwYXJlKFFMYXRpbjFTdHJpbmcoIklOU0VS VCBJTlRPIEZpbGVBdHRyaWJ1dGVTZXRUYWJsZSAiCisgICAgICAgICAgICAgIlZBTFVFUyg/LCA/ KSIpKTsKKyAgICAgICAgIG1fcXVlcnktPmJpbmRWYWx1ZSgwLCBmaWx0ZXJTZXRJZCk7CitTdWJt b2R1bGUgcXR3YXlsYW5kIGRmYjAxMjljLi4yOTA0ZTFiMzoKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvc3JjL2NsaWVudC9jb25maWd1cmUuanNvbiBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2NvbmZp Z3VyZS5qc29uCitpbmRleCAyZjQyNDU4MC4uMjkyMjIzNTcgMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvc3JjL2NsaWVudC9jb25maWd1cmUuanNvbgorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQv Y29uZmlndXJlLmpzb24KK0BAIC0xNDksOCArMTQ5LDcgQEAKKyAgICAgICAgICAgICAgICAgICAg ICIjZW5kaWYiCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICB9LAorLSAgICAgICAg ICAgICJsaWJzIjogIi1sZHJtIiwKKy0gICAgICAgICAgICAidXNlIjogImVnbCIKKysgICAgICAg ICAgICAidXNlIjogImRybSBlZ2wiCisgICAgICAgICB9LAorICAgICAgICAgInZ1bGthbi1zZXJ2 ZXItYnVmZmVyIjogeworICAgICAgICAgICAgICJsYWJlbCI6ICJWdWxrYW4gQnVmZmVyIFNoYXJp bmciLAorQEAgLTE2OCw3ICsxNjcsOCBAQAorICAgICAgICAgICAgICAgICAgICAgImV4cG9ydEFs bG9jSW5mby5oYW5kbGVUeXBlcyA9IFZLX0VYVEVSTkFMX01FTU9SWV9IQU5ETEVfVFlQRV9PUEFR VUVfRkRfQklUX0tIUjsiLAorICAgICAgICAgICAgICAgICAgICAgInJldHVybiAwOyIKKyAgICAg ICAgICAgICAgICAgXQorLSAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9LAorKyAgICAgICAg ICAgICJ1c2UiOiAid2F5bGFuZC1jbGllbnQiCisgICAgICAgICB9LAorICAgICAgICAgImVnbF8x XzUtd2F5bGFuZCI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAiRUdMIDEuNSB3aXRoIFdheWxh bmQgUGxhdGZvcm0iLAorQEAgLTE4Myw3ICsxODMsNyBAQAorICAgICAgICAgICAgICAgICAgICAg ImVnbEdldFBsYXRmb3JtRGlzcGxheShFR0xfUExBVEZPUk1fV0FZTEFORF9FWFQsIChzdHJ1Y3Qg d2xfZGlzcGxheSAqKShudWxscHRyKSwgbnVsbHB0cik7IgorICAgICAgICAgICAgICAgICBdCisg ICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAidXNlIjogImVnbCIKKysgICAgICAgICAgICAi dXNlIjogImVnbCB3YXlsYW5kLWNsaWVudCIKKyAgICAgICAgIH0KKyAgICAgfSwKKyAKK2RpZmYg LS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNp b24uY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5z aW9uLmNwcAoraW5kZXggMTI1YjFlMTkuLmVkY2NmZTYzIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5k L3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmNwcAorKysrIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmNwcAorQEAg LTc0LDcgKzc0LDEwIEBAIHZvaWQgUVdheWxhbmRDbGllbnRFeHRlbnNpb25Qcml2YXRlOjpoYW5k bGVSZWdpc3RyeUdsb2JhbCh2b2lkICpkYXRhLCA6OndsX3JlZ2lzCisgdm9pZCBRV2F5bGFuZENs aWVudEV4dGVuc2lvbjo6YWRkUmVnaXN0cnlMaXN0ZW5lcigpCisgeworICAgICBRX0QoUVdheWxh bmRDbGllbnRFeHRlbnNpb24pOworLSAgICBkLT53YXlsYW5kSW50ZWdyYXRpb24tPmRpc3BsYXko KS0+YWRkUmVnaXN0cnlMaXN0ZW5lcigmUVdheWxhbmRDbGllbnRFeHRlbnNpb25Qcml2YXRlOjpo YW5kbGVSZWdpc3RyeUdsb2JhbCwgdGhpcyk7CisrICAgIGlmICghZC0+cmVnaXN0ZXJlZCkgewor KyAgICAgICAgZC0+d2F5bGFuZEludGVncmF0aW9uLT5kaXNwbGF5KCktPmFkZFJlZ2lzdHJ5TGlz dGVuZXIoJlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9i YWwsIHRoaXMpOworKyAgICAgICAgZC0+cmVnaXN0ZXJlZCA9IHRydWU7CisrICAgIH0KKyB9Cisg CisgUVdheWxhbmRDbGllbnRFeHRlbnNpb246OlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKGNvbnN0 IGludCB2ZXIpCitAQCAtODgsNiArOTEsMTMgQEAgUVdheWxhbmRDbGllbnRFeHRlbnNpb246OlFX YXlsYW5kQ2xpZW50RXh0ZW5zaW9uKGNvbnN0IGludCB2ZXIpCisgICAgIFFNZXRhT2JqZWN0Ojpp bnZva2VNZXRob2QodGhpcywgImFkZFJlZ2lzdHJ5TGlzdGVuZXIiLCBRdDo6UXVldWVkQ29ubmVj dGlvbik7CisgfQorIAorK1FXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjp+UVdheWxhbmRDbGllbnRF eHRlbnNpb24oKQorK3sKKysgICAgUV9EKFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKTsKKysgICAg aWYgKGQtPnJlZ2lzdGVyZWQgJiYgIVFDb3JlQXBwbGljYXRpb246OmNsb3NpbmdEb3duKCkpCisr ICAgICAgICBkLT53YXlsYW5kSW50ZWdyYXRpb24tPmRpc3BsYXkoKS0+cmVtb3ZlTGlzdGVuZXIo JlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWwsIHRo aXMpOworK30KKysKKyBRdFdheWxhbmRDbGllbnQ6OlFXYXlsYW5kSW50ZWdyYXRpb24gKlFXYXls YW5kQ2xpZW50RXh0ZW5zaW9uOjppbnRlZ3JhdGlvbigpIGNvbnN0CisgeworICAgICBRX0QoY29u c3QgUVdheWxhbmRDbGllbnRFeHRlbnNpb24pOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMv Y2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5oIGIvcXR3YXlsYW5kL3NyYy9j bGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmgKK2luZGV4IDk4MjcyZTU3Li41 YmQyODM5OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFu ZGNsaWVudGV4dGVuc2lvbi5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdh eWxhbmRjbGllbnRleHRlbnNpb24uaAorQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgUV9XQVlMQU5E X0NMSUVOVF9FWFBPUlQgUVdheWxhbmRDbGllbnRFeHRlbnNpb24gOiBwdWJsaWMgUU9iamVjdAor ICAgICBRX1BST1BFUlRZKGJvb2wgYWN0aXZlIFJFQUQgaXNBY3RpdmUgTk9USUZZIGFjdGl2ZUNo YW5nZWQpCisgcHVibGljOgorICAgICBRV2F5bGFuZENsaWVudEV4dGVuc2lvbihjb25zdCBpbnQg dmVyc2lvbik7CisrICAgIH5RV2F5bGFuZENsaWVudEV4dGVuc2lvbigpOworIAorICAgICBRdFdh eWxhbmRDbGllbnQ6OlFXYXlsYW5kSW50ZWdyYXRpb24gKmludGVncmF0aW9uKCkgY29uc3Q7Cisg ICAgIGludCB2ZXJzaW9uKCkgY29uc3Q7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmgKK2luZGV4IDY5Y2M0NmEwLi45 MDkxZWZiZSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFu ZGNsaWVudGV4dGVuc2lvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9x d2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmgKK0BAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKKyAg ICAgUXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFuZEludGVncmF0aW9uICp3YXlsYW5kSW50ZWdyYXRp b24gPSBudWxscHRyOworICAgICBpbnQgdmVyc2lvbiA9IC0xOworICAgICBib29sIGFjdGl2ZSA9 IGZhbHNlOworKyAgICBib29sIHJlZ2lzdGVyZWQgPSBmYWxzZTsKKyB9OworIAorIGNsYXNzIFFf V0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uVGVtcGxhdGVQcml2 YXRlIDogcHVibGljIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZQorZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZS5jcHAgYi9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2UuY3BwCitpbmRleCA3ZTJlMzMwOC4uZTNlNjBl ZDUgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2Uu Y3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2UuY3BwCitA QCAtNzIsNiArNzIsOCBAQCBRV2F5bGFuZERhdGFEZXZpY2U6OlFXYXlsYW5kRGF0YURldmljZShR V2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyICptYW5hZ2VyLCBRV2F5bAorIAorIFFXYXlsYW5kRGF0 YURldmljZTo6flFXYXlsYW5kRGF0YURldmljZSgpCisgeworKyAgICBpZiAod2xfZGF0YV9kZXZp Y2VfZ2V0X3ZlcnNpb24ob2JqZWN0KCkpID49IFdMX0RBVEFfREVWSUNFX1JFTEVBU0VfU0lOQ0Vf VkVSU0lPTikKKysgICAgICAgIHJlbGVhc2UoKTsKKyB9CisgCisgUVdheWxhbmREYXRhT2ZmZXIg KlFXYXlsYW5kRGF0YURldmljZTo6c2VsZWN0aW9uT2ZmZXIoKSBjb25zdAorQEAgLTExMCw3ICsx MTIsNyBAQCBRV2F5bGFuZERhdGFPZmZlciAqUVdheWxhbmREYXRhRGV2aWNlOjpkcmFnT2ZmZXIo KSBjb25zdAorICAgICByZXR1cm4gbV9kcmFnT2ZmZXIuZGF0YSgpOworIH0KKyAKKy1ib29sIFFX YXlsYW5kRGF0YURldmljZTo6c3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFFXYXlsYW5k V2luZG93ICppY29uKQorK2Jvb2wgUVdheWxhbmREYXRhRGV2aWNlOjpzdGFydERyYWcoUU1pbWVE YXRhICptaW1lRGF0YSwgUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIFFXYXlsYW5k V2luZG93ICppY29uKQorIHsKKyAgICAgYXV0byAqc2VhdCA9IG1fZGlzcGxheS0+Y3VycmVudElu cHV0RGV2aWNlKCk7CisgICAgIGF1dG8gKm9yaWdpbiA9IHNlYXQtPnBvaW50ZXJGb2N1cygpOwor QEAgLTEyMyw3ICsxMjUsMjggQEAgYm9vbCBRV2F5bGFuZERhdGFEZXZpY2U6OnN0YXJ0RHJhZyhR TWltZURhdGEgKm1pbWVEYXRhLCBRV2F5bGFuZFdpbmRvdyAqaWNvbikKKyAgICAgfQorIAorICAg ICBtX2RyYWdTb3VyY2UucmVzZXQobmV3IFFXYXlsYW5kRGF0YVNvdXJjZShtX2Rpc3BsYXktPmRu ZFNlbGVjdGlvbkhhbmRsZXIoKSwgbWltZURhdGEpKTsKKysKKysgICAgaWYgKHdsX2RhdGFfZGV2 aWNlX2dldF92ZXJzaW9uKG9iamVjdCgpKSA+PSAzKQorKyAgICAgICAgbV9kcmFnU291cmNlLT5z ZXRfYWN0aW9ucyhkcm9wQWN0aW9uc1RvV2woc3VwcG9ydGVkQWN0aW9ucykpOworKworICAgICBj b25uZWN0KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6OmNhbmNlbGxl ZCwgdGhpcywgJlFXYXlsYW5kRGF0YURldmljZTo6ZHJhZ1NvdXJjZUNhbmNlbGxlZCk7CisrICAg IGNvbm5lY3QobV9kcmFnU291cmNlLmRhdGEoKSwgJlFXYXlsYW5kRGF0YVNvdXJjZTo6ZG5kUmVz cG9uc2VVcGRhdGVkLCB0aGlzLCBbdGhpc10oYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BBY3Rpb24g YWN0aW9uKSB7CisrICAgICAgICAgICAgYXV0byBkcmFnID0gc3RhdGljX2Nhc3Q8UVdheWxhbmRE cmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJh ZygpKTsKKysgICAgICAgICAgICAvLyBpbiBvbGQgdmVyc2lvbnMgZHJvcCBhY3Rpb24gaXMgbm90 IHNldCwgc28gd2UgZ3Vlc3MKKysgICAgICAgICAgICBpZiAod2xfZGF0YV9zb3VyY2VfZ2V0X3Zl cnNpb24obV9kcmFnU291cmNlLT5vYmplY3QoKSkgPCAzKSB7CisrICAgICAgICAgICAgICAgIGRy YWctPnNldFJlc3BvbnNlKGFjY2VwdGVkKTsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAg ICAgICAgICAgICBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSByZXNwb25zZShhY2NlcHRlZCwgYWN0 aW9uKTsKKysgICAgICAgICAgICAgICAgZHJhZy0+c2V0UmVzcG9uc2UocmVzcG9uc2UpOworKyAg ICAgICAgICAgIH0KKysgICAgfSk7CisrICAgIGNvbm5lY3QobV9kcmFnU291cmNlLmRhdGEoKSwg JlFXYXlsYW5kRGF0YVNvdXJjZTo6ZG5kRHJvcHBlZCwgdGhpcywgW10oYm9vbCBhY2NlcHRlZCwg UXQ6OkRyb3BBY3Rpb24gYWN0aW9uKSB7CisrICAgICAgICBRUGxhdGZvcm1Ecm9wUXRSZXNwb25z ZSByZXNwb25zZShhY2NlcHRlZCwgYWN0aW9uKTsKKysgICAgICAgIHN0YXRpY19jYXN0PFFXYXls YW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCkt PmRyYWcoKSktPnNldERyb3BSZXNwb25zZShyZXNwb25zZSk7CisrICAgIH0pOworKyAgICBjb25u ZWN0KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6OmZpbmlzaGVkLCB0 aGlzLCBbXSgpIHsKKysgICAgICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBw bGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPmZpbmlzaERy YWcoKTsKKysgICAgfSk7CisgCisgICAgIHN0YXJ0X2RyYWcobV9kcmFnU291cmNlLT5vYmplY3Qo KSwgb3JpZ2luLT53bFN1cmZhY2UoKSwgaWNvbi0+d2xTdXJmYWNlKCksIG1fZGlzcGxheS0+Y3Vy cmVudElucHV0RGV2aWNlKCktPnNlcmlhbCgpKTsKKyAgICAgcmV0dXJuIHRydWU7CitAQCAtMTUy LDcgKzE3NSw3IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9kcm9wKCkK KyAgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBkcmFnLT5zdXBwb3J0ZWRBY3Rpb25zKCk7Cisg ICAgIH0gZWxzZSBpZiAobV9kcmFnT2ZmZXIpIHsKKyAgICAgICAgIGRyYWdEYXRhID0gbV9kcmFn T2ZmZXItPm1pbWVEYXRhKCk7CistICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkNvcHlB Y3Rpb24gfCBRdDo6TW92ZUFjdGlvbiB8IFF0OjpMaW5rQWN0aW9uOworKyAgICAgICAgc3VwcG9y dGVkQWN0aW9ucyA9IG1fZHJhZ09mZmVyLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxz ZSB7CisgICAgICAgICByZXR1cm47CisgICAgIH0KK0BAIC0xNjIsNyArMTg1LDExIEBAIHZvaWQg UVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9kcm9wKCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFHdWlBcHBsaWNhdGlvbjo6a2V5Ym9hcmRNb2RpZmllcnMoKSk7CisgCisgICAgIGlmIChkcmFn KSB7CistICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9u UHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5maW5pc2hEcmFnKHJlc3Bv bnNlKTsKKysgICAgICAgIGF1dG8gZHJhZyA9ICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4o UUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpOwor KyAgICAgICAgZHJhZy0+c2V0RHJvcFJlc3BvbnNlKHJlc3BvbnNlKTsKKysgICAgICAgIGRyYWct PmZpbmlzaERyYWcoKTsKKysgICAgfSBlbHNlIGlmIChtX2RyYWdPZmZlcikgeworKyAgICAgICAg bV9kcmFnT2ZmZXItPmZpbmlzaCgpOworICAgICB9CisgfQorIAorQEAgLTE4Niw3ICsyMTMsNyBA QCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfZW50ZXIodWludDMyX3Qgc2Vy aWFsLCB3bF9zdXJmYWNlICpzdXJmYWNlLAorICAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IGRy YWctPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNlIGlmIChtX2RyYWdPZmZlcikgewor ICAgICAgICAgZHJhZ0RhdGEgPSBtX2RyYWdPZmZlci0+bWltZURhdGEoKTsKKy0gICAgICAgIHN1 cHBvcnRlZEFjdGlvbnMgPSBRdDo6Q29weUFjdGlvbiB8IFF0OjpNb3ZlQWN0aW9uIHwgUXQ6Okxp bmtBY3Rpb247CisrICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gbV9kcmFnT2ZmZXItPnN1cHBv cnRlZEFjdGlvbnMoKTsKKyAgICAgfQorIAorICAgICBjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNw b25zZSAmcmVzcG9uc2UgPSBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVEcmFnKG1fZHJh Z1dpbmRvdywgZHJhZ0RhdGEsIG1fZHJhZ1BvaW50LCBzdXBwb3J0ZWRBY3Rpb25zLAorQEAgLTE5 NywxMSArMjI0LDcgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX2VudGVy KHVpbnQzMl90IHNlcmlhbCwgd2xfc3VyZmFjZSAqc3VyZmFjZSwKKyAgICAgICAgIHN0YXRpY19j YXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVn cmF0aW9uKCktPmRyYWcoKSktPnNldFJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgfQorIAorLSAg ICBpZiAocmVzcG9uc2UuaXNBY2NlcHRlZCgpKSB7CistICAgICAgICB3bF9kYXRhX29mZmVyX2Fj Y2VwdChtX2RyYWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG1fZHJhZ09mZmVyLT5m aXJzdEZvcm1hdCgpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKy0gICAgfSBlbHNlIHsKKy0gICAg ICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVyLT5vYmplY3QoKSwgbV9lbnRlclNl cmlhbCwgbnVsbHB0cik7CistICAgIH0KKysgICAgc2VuZFJlc3BvbnNlKHN1cHBvcnRlZEFjdGlv bnMsIHJlc3BvbnNlKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2 aWNlX2xlYXZlKCkKK0BAIC0yMzUsMTAgKzI1OCwxMCBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmlj ZTo6ZGF0YV9kZXZpY2VfbW90aW9uKHVpbnQzMl90IHRpbWUsIHdsX2ZpeGVkX3QgeCwgd2xfZml4 ZQorICAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IGRyYWctPnN1cHBvcnRlZEFjdGlvbnMoKTsK KyAgICAgfSBlbHNlIHsKKyAgICAgICAgIGRyYWdEYXRhID0gbV9kcmFnT2ZmZXItPm1pbWVEYXRh KCk7CistICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkNvcHlBY3Rpb24gfCBRdDo6TW92 ZUFjdGlvbiB8IFF0OjpMaW5rQWN0aW9uOworKyAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IG1f ZHJhZ09mZmVyLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0KKyAKKy0gICAgUVBsYXRmb3Jt RHJhZ1F0UmVzcG9uc2UgcmVzcG9uc2UgPSBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVE cmFnKG1fZHJhZ1dpbmRvdywgZHJhZ0RhdGEsIG1fZHJhZ1BvaW50LCBzdXBwb3J0ZWRBY3Rpb25z LAorKyAgICBjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSByZXNwb25zZSA9IFFXaW5kb3dT eXN0ZW1JbnRlcmZhY2U6OmhhbmRsZURyYWcobV9kcmFnV2luZG93LCBkcmFnRGF0YSwgbV9kcmFn UG9pbnQsIHN1cHBvcnRlZEFjdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRR3VpQXBwbGljYXRp b246Om1vdXNlQnV0dG9ucygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUd1aUFwcGxpY2F0aW9uOjpr ZXlib2FyZE1vZGlmaWVycygpKTsKKyAKK0BAIC0yNDYsMTEgKzI2OSw3IEBAIHZvaWQgUVdheWxh bmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9tb3Rpb24odWludDMyX3QgdGltZSwgd2xfZml4ZWRf dCB4LCB3bF9maXhlCisgICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFw cGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5zZXRSZXNw b25zZShyZXNwb25zZSk7CisgICAgIH0KKyAKKy0gICAgaWYgKHJlc3BvbnNlLmlzQWNjZXB0ZWQo KSkgeworLSAgICAgICAgd2xfZGF0YV9vZmZlcl9hY2NlcHQobV9kcmFnT2ZmZXItPm9iamVjdCgp LCBtX2VudGVyU2VyaWFsLCBtX2RyYWdPZmZlci0+Zmlyc3RGb3JtYXQoKS50b1V0ZjgoKS5jb25z dERhdGEoKSk7CistICAgIH0gZWxzZSB7CistICAgICAgICB3bF9kYXRhX29mZmVyX2FjY2VwdCht X2RyYWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG51bGxwdHIpOworLSAgICB9Cisr ICAgIHNlbmRSZXNwb25zZShzdXBwb3J0ZWRBY3Rpb25zLCByZXNwb25zZSk7CisgfQorICNlbmRp ZiAvLyBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgCitAQCAtMjc3LDE0ICsyOTYsMTAgQEAgdm9p ZCBRV2F5bGFuZERhdGFEZXZpY2U6OnNlbGVjdGlvblNvdXJjZUNhbmNlbGxlZCgpCisgI2lmIFFU X0NPTkZJRyhkcmFnYW5kZHJvcCkKKyB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZHJhZ1NvdXJj ZUNhbmNlbGxlZCgpCisgeworKyAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFw cGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5maW5pc2hE cmFnKCk7CisgICAgIG1fZHJhZ1NvdXJjZS5yZXNldCgpOworIH0KKyAKKy12b2lkIFFXYXlsYW5k RGF0YURldmljZTo6ZHJhZ1NvdXJjZVRhcmdldENoYW5nZWQoY29uc3QgUVN0cmluZyAmbWltZVR5 cGUpCisteworLSAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9u UHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT51cGRhdGVUYXJnZXQobWlt ZVR5cGUpOworLX0KKy0KKyBRUG9pbnQgUVdheWxhbmREYXRhRGV2aWNlOjpjYWxjdWxhdGVEcmFn UG9zaXRpb24oaW50IHgsIGludCB5LCBRV2luZG93ICp3bmQpIGNvbnN0CisgeworICAgICBRUG9p bnQgcG50KHdsX2ZpeGVkX3RvX2ludCh4KSwgd2xfZml4ZWRfdG9faW50KHkpKTsKK0BAIC0yOTcs NiArMzEyLDMzIEBAIFFQb2ludCBRV2F5bGFuZERhdGFEZXZpY2U6OmNhbGN1bGF0ZURyYWdQb3Np dGlvbihpbnQgeCwgaW50IHksIFFXaW5kb3cgKnduZCkgY29uCisgICAgIH0KKyAgICAgcmV0dXJu IHBudDsKKyB9CisrCisrdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OnNlbmRSZXNwb25zZShRdDo6 RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9u c2UgJnJlc3BvbnNlKQorK3sKKysgICAgaWYgKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSkgeworKyAg ICAgICAgaWYgKHdsX2RhdGFfZGV2aWNlX2dldF92ZXJzaW9uKG9iamVjdCgpKSA+PSAzKQorKyAg ICAgICAgICAgIG1fZHJhZ09mZmVyLT5zZXRfYWN0aW9ucyhkcm9wQWN0aW9uc1RvV2woc3VwcG9y dGVkQWN0aW9ucyksIGRyb3BBY3Rpb25zVG9XbChyZXNwb25zZS5hY2NlcHRlZEFjdGlvbigpKSk7 CisrCisrICAgICAgICBtX2RyYWdPZmZlci0+YWNjZXB0KG1fZW50ZXJTZXJpYWwsIG1fZHJhZ09m ZmVyLT5maXJzdEZvcm1hdCgpKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIG1fZHJhZ09mZmVy LT5hY2NlcHQobV9lbnRlclNlcmlhbCwgUVN0cmluZygpKTsKKysgICAgfQorK30KKysKKytpbnQg UVdheWxhbmREYXRhRGV2aWNlOjpkcm9wQWN0aW9uc1RvV2woUXQ6OkRyb3BBY3Rpb25zIGFjdGlv bnMpCisreworKworKyAgICBpbnQgd2xBY3Rpb25zID0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9E TkRfQUNUSU9OX05PTkU7CisrICAgIGlmIChhY3Rpb25zICYgUXQ6OkNvcHlBY3Rpb24pCisrICAg ICAgICB3bEFjdGlvbnMgfD0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX0NPUFk7 CisrICAgIGlmIChhY3Rpb25zICYgKFF0OjpNb3ZlQWN0aW9uIHwgUXQ6OlRhcmdldE1vdmVBY3Rp b24pKQorKyAgICAgICAgd2xBY3Rpb25zIHw9IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FD VElPTl9NT1ZFOworKworKyAgICAvLyB3YXlsYW5kIGRvZXMgbm90IHN1cHBvcnQgTGlua0FjdGlv biBhdCB0aGUgdGltZSBvZiB3cml0aW5nCisrICAgIHJldHVybiB3bEFjdGlvbnM7CisrfQorKwor KworICNlbmRpZiAvLyBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgCisgfQorZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZV9wLmggYi9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5oCitpbmRleCAxNmMzYWQyOC4uODAxZGNj MmMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2Vf cC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5oCitA QCAtNjQsNiArNjQsNyBAQCBRVF9SRVFVSVJFX0NPTkZJRyh3YXlsYW5kX2RhdGFkZXZpY2UpOwor IFFUX0JFR0lOX05BTUVTUEFDRQorIAorIGNsYXNzIFFNaW1lRGF0YTsKKytjbGFzcyBRUGxhdGZv cm1EcmFnUXRSZXNwb25zZTsKKyBjbGFzcyBRV2luZG93OworIAorIG5hbWVzcGFjZSBRdFdheWxh bmRDbGllbnQgeworQEAgLTg5LDcgKzkwLDcgQEAgcHVibGljOgorIAorICNpZiBRVF9DT05GSUco ZHJhZ2FuZGRyb3ApCisgICAgIFFXYXlsYW5kRGF0YU9mZmVyICpkcmFnT2ZmZXIoKSBjb25zdDsK Ky0gICAgYm9vbCBzdGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUVdheWxhbmRXaW5kb3cg Kmljb24pOworKyAgICBib29sIHN0YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVEYXRhLCBRdDo6RHJv cEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgUVdheWxhbmRXaW5kb3cgKmljb24pOworICAgICB2 b2lkIGNhbmNlbERyYWcoKTsKKyAjZW5kaWYKKyAKK0BAIC0xMDksMTMgKzExMCwxNiBAQCBwcml2 YXRlIFFfU0xPVFM6CisgCisgI2lmIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAgICAgdm9pZCBk cmFnU291cmNlQ2FuY2VsbGVkKCk7CistICAgIHZvaWQgZHJhZ1NvdXJjZVRhcmdldENoYW5nZWQo Y29uc3QgUVN0cmluZyAmbWltZVR5cGUpOworICNlbmRpZgorIAorIHByaXZhdGU6CisgI2lmIFFU X0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAgICAgUVBvaW50IGNhbGN1bGF0ZURyYWdQb3NpdGlvbihp bnQgeCwgaW50IHksIFFXaW5kb3cgKnduZCkgY29uc3Q7CisgI2VuZGlmCisrICAgIHZvaWQgc2Vu ZFJlc3BvbnNlKFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25zLCBjb25zdCBRUGxhdGZv cm1EcmFnUXRSZXNwb25zZSAmcmVzcG9uc2UpOworKworKyAgICBzdGF0aWMgaW50IGRyb3BBY3Rp b25zVG9XbChRdDo6RHJvcEFjdGlvbnMgZHJvcEFjdGlvbnMpOworKworIAorICAgICBRV2F5bGFu ZERpc3BsYXkgKm1fZGlzcGxheSA9IG51bGxwdHI7CisgICAgIFFXYXlsYW5kSW5wdXREZXZpY2Ug Km1faW5wdXREZXZpY2UgPSBudWxscHRyOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlci5jcHAKK2luZGV4IDM1ZDY3MzA3Li42ZGM0Zjc3ZiAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFn ZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5h Z2VyLmNwcAorQEAgLTUwLDggKzUwLDggQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgbmFtZXNw YWNlIFF0V2F5bGFuZENsaWVudCB7CisgCistUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcjo6UVdh eWxhbmREYXRhRGV2aWNlTWFuYWdlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIHVpbnQzMl90 IGlkKQorLSAgICA6IHdsX2RhdGFfZGV2aWNlX21hbmFnZXIoZGlzcGxheS0+d2xfcmVnaXN0cnko KSwgaWQsIDEpCisrUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcjo6UVdheWxhbmREYXRhRGV2aWNl TWFuYWdlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIGludCB2ZXJzaW9uLCB1aW50MzJfdCBp ZCkKKysgICAgOiB3bF9kYXRhX2RldmljZV9tYW5hZ2VyKGRpc3BsYXktPndsX3JlZ2lzdHJ5KCks IGlkLCBxTWluKHZlcnNpb24sIDMpKQorICAgICAsIG1fZGlzcGxheShkaXNwbGF5KQorIHsKKyAg ICAgLy8gQ3JlYXRlIHRyYW5zZmVyIGRldmljZXMgZm9yIGFsbCBpbnB1dCBkZXZpY2VzLgorZGlm ZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXJf cC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlcl9wLmgK K2luZGV4IGJkMDVjMGZiLi41MTBkOWJlNCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXJfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaAorQEAgLTY4LDcgKzY4LDcgQEAgY2xh c3MgUVdheWxhbmRJbnB1dERldmljZTsKKyBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBR V2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyIDogcHVibGljIFF0V2F5bGFuZDo6d2xfZGF0YV9kZXZp Y2VfbWFuYWdlcgorIHsKKyBwdWJsaWM6CistICAgIFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIo UVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCB1aW50MzJfdCBpZCk7CisrICAgIFFXYXlsYW5kRGF0 YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCBpbnQgdmVyc2lvbiwgdWlu dDMyX3QgaWQpOworICAgICB+UVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcigpIG92ZXJyaWRlOwor IAorICAgICBRV2F5bGFuZERhdGFEZXZpY2UgKmdldERhdGFEZXZpY2UoUVdheWxhbmRJbnB1dERl dmljZSAqaW5wdXREZXZpY2UpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kZGF0YW9mZmVyLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9m ZmVyLmNwcAoraW5kZXggMjI5N2U4YTEuLmZlMGVhOGM5IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGRhdGFvZmZlci5jcHAKK0BAIC04Miw2ICs4MiwxNSBAQCBRTWltZURhdGEg KlFXYXlsYW5kRGF0YU9mZmVyOjptaW1lRGF0YSgpCisgICAgIHJldHVybiBtX21pbWVEYXRhLmRh dGEoKTsKKyB9CisgCisrUXQ6OkRyb3BBY3Rpb25zIFFXYXlsYW5kRGF0YU9mZmVyOjpzdXBwb3J0 ZWRBY3Rpb25zKCkgY29uc3QKKyt7CisrICAgIGlmICh3bF9kYXRhX29mZmVyX2dldF92ZXJzaW9u KGNvbnN0X2Nhc3Q8Ojp3bF9kYXRhX29mZmVyKj4ob2JqZWN0KCkpKSA8IDMpIHsKKysgICAgICAg IHJldHVybiBRdDo6TW92ZUFjdGlvbiB8IFF0OjpDb3B5QWN0aW9uOworKyAgICB9CisrCisrICAg IHJldHVybiBtX3N1cHBvcnRlZEFjdGlvbnM7CisrfQorKworIHZvaWQgUVdheWxhbmREYXRhT2Zm ZXI6OnN0YXJ0UmVjZWl2aW5nKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlLCBpbnQgZmQpCisgewor ICAgICByZWNlaXZlKG1pbWVUeXBlLCBmZCk7CitAQCAtOTMsNiArMTAyLDIyIEBAIHZvaWQgUVdh eWxhbmREYXRhT2ZmZXI6OmRhdGFfb2ZmZXJfb2ZmZXIoY29uc3QgUVN0cmluZyAmbWltZV90eXBl KQorICAgICBtX21pbWVEYXRhLT5hcHBlbmRGb3JtYXQobWltZV90eXBlKTsKKyB9CisgCisrdm9p ZCBRV2F5bGFuZERhdGFPZmZlcjo6ZGF0YV9vZmZlcl9hY3Rpb24odWludDMyX3QgZG5kX2FjdGlv bikKKyt7CisrICAgIFFfVU5VU0VEKGRuZF9hY3Rpb24pOworKyAgICAvLyBUaGlzIGlzIHRoZSBj b21wb3NpdG9yIHRlbGxpbmcgdGhlIGRyYWcgdGFyZ2V0IHdoYXQgYWN0aW9uIGl0IHNob3VsZCBw ZXJmb3JtCisrICAgIC8vIEl0IGRvZXMgbm90IG1hcCBuaWNlbHkgaW50byBRdCBmaW5hbCBkcm9w IHNlbWFudGljcywgb3RoZXIgdGhhbiBwcmV0ZW5kaW5nIHRoZXJlIGlzIG9ubHkgb25lIHN1cHBv cnRlZCBhY3Rpb24/CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRhT2ZmZXI6OmRhdGFfb2ZmZXJf c291cmNlX2FjdGlvbnModWludDMyX3Qgc291cmNlX2FjdGlvbnMpCisreworKyAgICBtX3N1cHBv cnRlZEFjdGlvbnMgPSBRdDo6RHJvcEFjdGlvbnMoKTsKKysgICAgaWYgKHNvdXJjZV9hY3Rpb25z ICYgV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX01PVkUpCisrICAgICAgICBtX3N1 cHBvcnRlZEFjdGlvbnMgfD0gUXQ6Ok1vdmVBY3Rpb247CisrICAgIGlmIChzb3VyY2VfYWN0aW9u cyAmIFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9DT1BZKQorKyAgICAgICAgbV9z dXBwb3J0ZWRBY3Rpb25zIHw9IFF0OjpDb3B5QWN0aW9uOworK30KKysKKyBRV2F5bGFuZE1pbWVE YXRhOjpRV2F5bGFuZE1pbWVEYXRhKFFXYXlsYW5kQWJzdHJhY3REYXRhT2ZmZXIgKmRhdGFPZmZl cikKKyAgICAgOiBtX2RhdGFPZmZlcihkYXRhT2ZmZXIpCisgeworQEAgLTE2MywxNyArMTg4LDE4 IEBAIFFWYXJpYW50IFFXYXlsYW5kTWltZURhdGE6OnJldHJpZXZlRGF0YV9zeXMoY29uc3QgUVN0 cmluZyAmbWltZVR5cGUsIFFWYXJpYW50OjpUCisgCisgaW50IFFXYXlsYW5kTWltZURhdGE6OnJl YWREYXRhKGludCBmZCwgUUJ5dGVBcnJheSAmZGF0YSkgY29uc3QKKyB7CistICAgIGZkX3NldCBy ZWFkc2V0OworLSAgICBGRF9aRVJPKCZyZWFkc2V0KTsKKy0gICAgRkRfU0VUKGZkLCAmcmVhZHNl dCk7CistICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CisrICAgIHN0cnVjdCBwb2xsZmQgcmVh ZHNldDsKKysgICAgcmVhZHNldC5mZCA9IGZkOworKyAgICByZWFkc2V0LmV2ZW50cyA9IFBPTExJ TjsKKysgICAgc3RydWN0IHRpbWVzcGVjIHRpbWVvdXQ7CisgICAgIHRpbWVvdXQudHZfc2VjID0g MTsKKy0gICAgdGltZW91dC50dl91c2VjID0gMDsKKysgICAgdGltZW91dC50dl9uc2VjID0gMDsK KysKKyAKKyAgICAgUV9GT1JFVkVSIHsKKy0gICAgICAgIGludCByZWFkeSA9IHNlbGVjdChGRF9T RVRTSVpFLCAmcmVhZHNldCwgbnVsbHB0ciwgbnVsbHB0ciwgJnRpbWVvdXQpOworKyAgICAgICAg aW50IHJlYWR5ID0gcXRfc2FmZV9wb2xsKCZyZWFkc2V0LCAxLCAmdGltZW91dCk7CisgICAgICAg ICBpZiAocmVhZHkgPCAwKSB7CistICAgICAgICAgICAgcVdhcm5pbmcoKSA8PCAiUVdheWxhbmRE YXRhT2ZmZXI6IHNlbGVjdCgpIGZhaWxlZCI7CisrICAgICAgICAgICAgcVdhcm5pbmcoKSA8PCAi UVdheWxhbmREYXRhT2ZmZXI6IHF0X3NhZmVfcG9sbCgpIGZhaWxlZCI7CisgICAgICAgICAgICAg cmV0dXJuIC0xOworICAgICAgICAgfSBlbHNlIGlmIChyZWFkeSA9PSAwKSB7CisgICAgICAgICAg ICAgcVdhcm5pbmcoIlFXYXlsYW5kRGF0YU9mZmVyOiB0aW1lb3V0IHJlYWRpbmcgZnJvbSBwaXBl Iik7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJf cC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5oCitpbmRleCA5 Y2YxNDgzYy4uNmY2NjczOTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRhdGFvZmZlcl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0 YW9mZmVyX3AuaAorQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgorICAgICBleHBsaWNpdCBRV2F5 bGFuZERhdGFPZmZlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIHN0cnVjdCA6OndsX2RhdGFf b2ZmZXIgKm9mZmVyKTsKKyAgICAgflFXYXlsYW5kRGF0YU9mZmVyKCkgb3ZlcnJpZGU7CisgICAg IFFNaW1lRGF0YSAqbWltZURhdGEoKSBvdmVycmlkZTsKKysgICAgUXQ6OkRyb3BBY3Rpb25zIHN1 cHBvcnRlZEFjdGlvbnMoKSBjb25zdDsKKyAKKyAgICAgUVN0cmluZyBmaXJzdEZvcm1hdCgpIGNv bnN0OworIAorQEAgLTg5LDEwICs5MCwxMyBAQCBwdWJsaWM6CisgCisgcHJvdGVjdGVkOgorICAg ICB2b2lkIGRhdGFfb2ZmZXJfb2ZmZXIoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKSBvdmVycmlk ZTsKKysgICAgdm9pZCBkYXRhX29mZmVyX3NvdXJjZV9hY3Rpb25zKHVpbnQzMl90IHNvdXJjZV9h Y3Rpb25zKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRhX29mZmVyX2FjdGlvbih1aW50MzJfdCBk bmRfYWN0aW9uKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFuZERpc3BsYXkg Km1fZGlzcGxheSA9IG51bGxwdHI7CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kTWltZURh dGE+IG1fbWltZURhdGE7CisrICAgIFF0OjpEcm9wQWN0aW9ucyBtX3N1cHBvcnRlZEFjdGlvbnM7 CisgfTsKKyAKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRh dGFzb3VyY2UuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlLmNw cAoraW5kZXggZjQ1MTIyZmIuLjU1OTljYmQ0IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkYXRhc291cmNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRkYXRhc291cmNlLmNwcAorQEAgLTEwMSw3ICsxMDEsMzIgQEAgdm9pZCBRV2F5bGFu ZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX3NlbmQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlLCBp bnQzMl90IGZkKQorIAorIHZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV90YXJn ZXQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKQorIHsKKy0gICAgUV9FTUlUIHRhcmdldENoYW5n ZWQobWltZV90eXBlKTsKKysgICAgbV9hY2NlcHRlZCA9ICFtaW1lX3R5cGUuaXNFbXB0eSgpOwor KyAgICBRX0VNSVQgZG5kUmVzcG9uc2VVcGRhdGVkKG1fYWNjZXB0ZWQsIG1fZHJvcEFjdGlvbik7 CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV9hY3Rpb24odWlu dDMyX3QgYWN0aW9uKQorK3sKKysgICAgUXQ6OkRyb3BBY3Rpb24gcXRBY3Rpb24gPSBRdDo6SWdu b3JlQWN0aW9uOworKworKyAgICBpZiAoYWN0aW9uID09IFdMX0RBVEFfREVWSUNFX01BTkFHRVJf RE5EX0FDVElPTl9NT1ZFKQorKyAgICAgICAgcXRBY3Rpb24gPSBRdDo6TW92ZUFjdGlvbjsKKysg ICAgZWxzZSBpZiAoYWN0aW9uID09IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9D T1BZKQorKyAgICAgICAgcXRBY3Rpb24gPSBRdDo6Q29weUFjdGlvbjsKKysKKysgICAgbV9kcm9w QWN0aW9uID0gcXRBY3Rpb247CisrICAgIFFfRU1JVCBkbmRSZXNwb25zZVVwZGF0ZWQobV9hY2Nl cHRlZCwgbV9kcm9wQWN0aW9uKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRh dGFfc291cmNlX2RuZF9maW5pc2hlZCgpCisreworKyAgICBRX0VNSVQgZmluaXNoZWQoKTsKKyt9 CisrCisrdm9pZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX2RuZF9kcm9wX3BlcmZv cm1lZCgpCisreworKworKyAgICBRX0VNSVQgZG5kRHJvcHBlZChtX2FjY2VwdGVkLCBtX2Ryb3BB Y3Rpb24pOworIH0KKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkYXRhc291cmNlX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNv dXJjZV9wLmgKK2luZGV4IDI1YWZmZjc5Li45NmYwN2JjMyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgKK0BAIC03NywxNyArNzcsMjUgQEAgcHVibGlj OgorICAgICBRTWltZURhdGEgKm1pbWVEYXRhKCkgY29uc3Q7CisgCisgUV9TSUdOQUxTOgorLSAg ICB2b2lkIHRhcmdldENoYW5nZWQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKTsKKyAgICAgdm9p ZCBjYW5jZWxsZWQoKTsKKysgICAgdm9pZCBmaW5pc2hlZCgpOworKworKyAgICB2b2lkIGRuZFJl c3BvbnNlVXBkYXRlZChib29sIGFjY2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBhY3Rpb24pOworKyAg ICB2b2lkIGRuZERyb3BwZWQoYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uKTsK KyAKKyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgZGF0YV9zb3VyY2VfY2FuY2VsbGVkKCkgb3ZlcnJp ZGU7CisgICAgIHZvaWQgZGF0YV9zb3VyY2Vfc2VuZChjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUs IGludDMyX3QgZmQpIG92ZXJyaWRlOworICAgICB2b2lkIGRhdGFfc291cmNlX3RhcmdldChjb25z dCBRU3RyaW5nICZtaW1lX3R5cGUpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfc291cmNlX2Ru ZF9kcm9wX3BlcmZvcm1lZCgpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfc291cmNlX2RuZF9m aW5pc2hlZCgpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfc291cmNlX2FjdGlvbih1aW50MzJf dCBhY3Rpb24pIG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5kRGlzcGxheSAq bV9kaXNwbGF5ID0gbnVsbHB0cjsKKyAgICAgUU1pbWVEYXRhICptX21pbWVfZGF0YSA9IG51bGxw dHI7CisrICAgIGJvb2wgbV9hY2NlcHRlZCA9IGZhbHNlOworKyAgICBRdDo6RHJvcEFjdGlvbiBt X2Ryb3BBY3Rpb24gPSBRdDo6SWdub3JlQWN0aW9uOworIH07CisgCisgfQorZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheS5jcHAgYi9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwCitpbmRleCBmMTBjMWY3OS4uYzAxZTIzOGIgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwCisrKysg Yi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwCitAQCAtODUsMTAgKzg1 LDIwMyBAQAorIAorICNpbmNsdWRlIDxlcnJuby5oPgorIAorKyNpbmNsdWRlIDx0dXBsZT4gLy8g Zm9yIHN0ZDo6dGllCisrCisrc3RhdGljIHZvaWQgY2hlY2tXYXlsYW5kRXJyb3Ioc3RydWN0IHds X2Rpc3BsYXkgKmRpc3BsYXkpCisreworKyAgICBpbnQgZWNvZGUgPSB3bF9kaXNwbGF5X2dldF9l cnJvcihkaXNwbGF5KTsKKysgICAgaWYgKChlY29kZSA9PSBFUElQRSB8fCBlY29kZSA9PSBFQ09O TlJFU0VUKSkgeworKyAgICAgICAgLy8gc3BlY2lhbCBjYXNlIHRoaXMgdG8gcHJvdmlkZSBhIG5p Y2VyIGVycm9yCisrICAgICAgICBxV2FybmluZygiVGhlIFdheWxhbmQgY29ubmVjdGlvbiBicm9r ZS4gRGlkIHRoZSBXYXlsYW5kIGNvbXBvc2l0b3IgZGllPyIpOworKyAgICB9IGVsc2UgeworKyAg ICAgICAgcVdhcm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24gZXhwZXJpZW5jZWQgYSBmYXRh bCBlcnJvcjogJXMiLCBzdHJlcnJvcihlY29kZSkpOworKyAgICB9CisrICAgIF9leGl0KDEpOwor K30KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xpZW50 IHsKKyAKKytjbGFzcyBFdmVudFRocmVhZCA6IHB1YmxpYyBRVGhyZWFkCisreworKyAgICBRX09C SkVDVAorK3B1YmxpYzoKKysgICAgZW51bSBPcGVyYXRpbmdNb2RlIHsKKysgICAgICAgIEVtaXRU b0Rpc3BhdGNoLCAvLyBFbWl0IHRoZSBzaWduYWwsIGFsbG93IGRpc3BhdGNoaW5nIGluIGEgZGlm ZmVybnQgdGhyZWFkLgorKyAgICAgICAgU2VsZkRpc3BhdGNoLCAvLyBEaXNwYXRjaCB0aGUgZXZl bnRzIGluc2lkZSB0aGlzIHRocmVhZC4KKysgICAgfTsKKysKKysgICAgRXZlbnRUaHJlYWQoc3Ry dWN0IHdsX2Rpc3BsYXkgKiB3bCwgc3RydWN0IHdsX2V2ZW50X3F1ZXVlICogZXZfcXVldWUsCisr ICAgICAgICAgICAgICAgIE9wZXJhdGluZ01vZGUgbW9kZSkKKysgICAgICAgIDogbV9mZCh3bF9k aXNwbGF5X2dldF9mZCh3bCkpCisrICAgICAgICAsIG1fcGlwZWZkeyAtMSwgLTEgfQorKyAgICAg ICAgLCBtX3dsZGlzcGxheSh3bCkKKysgICAgICAgICwgbV93bGV2cXVldWUoZXZfcXVldWUpCisr ICAgICAgICAsIG1fbW9kZShtb2RlKQorKyAgICAgICAgLCBtX3JlYWRpbmcodHJ1ZSkKKysgICAg ICAgICwgbV9xdWl0dGluZyhmYWxzZSkKKysgICAgeworKyAgICAgICAgc2V0T2JqZWN0TmFtZShR U3RyaW5nTGl0ZXJhbCgiV2F5bGFuZEV2ZW50VGhyZWFkIikpOworKyAgICB9CisrCisrICAgIHZv aWQgcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkKKysgICAgeworKyAgICAgICAgLyoKKysgICAgICAg ICAqIERpc3BhdGNoIHBlbmRpbmcgZXZlbnRzIGFuZCBmbHVzaCB0aGUgcmVxdWVzdHMgYXQgbGVh c3Qgb25jZS4gSWYgdGhlIGV2ZW50IHRocmVhZAorKyAgICAgICAgICogaXMgbm90IHJlYWRpbmcs IHRyeSB0byBjYWxsIF9wcmVwYXJlX3JlYWQoKSB0byBhbGxvdyB0aGUgZXZlbnQgdGhyZWFkIHRv IHBvbGwoKS4KKysgICAgICAgICAqIElmIHRoYXQgZmFpbHMsIHJlLXRyeSBkaXNwYXRjaCAmIGZs dXNoIGFnYWluIHVudGlsIF9wcmVwYXJlX3JlYWQoKSBpcyBzdWNjZXNzZnVsLgorKyAgICAgICAg ICoKKysgICAgICAgICAqIFRoaXMgYWxsb3cgYW55IGNhbGwgdG8gcmVhZEFuZERpc3BhdGNoRXZl bnRzKCkgdG8gc3RhcnQgZXZlbnQgdGhyZWFkJ3MgcG9sbGluZywKKysgICAgICAgICAqIG5vdCBv bmx5IHRoZSBvbmUgaXNzdWVkIGZyb20gZXZlbnQgdGhyZWFkJ3Mgd2FpdEZvclJlYWRpbmcoKSwg d2hpY2ggbWVhbnMgZnVuY3Rpb25zCisrICAgICAgICAgKiBjYWxsZWQgZnJvbSBkaXNwYXRjaF9w ZW5kaW5nKCkgY2FuIHNhZmVseSBzcGluIGFuIGV2ZW50IGxvb3AuCisrICAgICAgICAgKi8KKysg ICAgICAgIGZvciAoOzspIHsKKysgICAgICAgICAgICBpZiAoZGlzcGF0Y2hRdWV1ZVBlbmRpbmco KSA8IDApIHsKKysgICAgICAgICAgICAgICAgY2hlY2tXYXlsYW5kRXJyb3IobV93bGRpc3BsYXkp OworKyAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAgICAgfQorKworKyAgICAgICAg ICAgIHdsX2Rpc3BsYXlfZmx1c2gobV93bGRpc3BsYXkpOworKworKyAgICAgICAgICAgIC8vIFdl IGhhdmUgdG8gY2hlY2sgaWYgZXZlbnQgdGhyZWFkIGlzIHJlYWRpbmcgZXZlcnkgdGltZSB3ZSBk aXNwYXRjaAorKyAgICAgICAgICAgIC8vIHNvbWV0aGluZywgYXMgdGhhdCBtYXkgcmVjdXJzaXZl bHkgY2FsbCB0aGlzIGZ1bmN0aW9uLgorKyAgICAgICAgICAgIGlmIChtX3JlYWRpbmcubG9hZEFj cXVpcmUoKSkKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICAgICAgaWYgKHBy ZXBhcmVSZWFkUXVldWUoKSA9PSAwKSB7CisrICAgICAgICAgICAgICAgIFFNdXRleExvY2tlciBs KCZtX211dGV4KTsKKysgICAgICAgICAgICAgICAgbV9yZWFkaW5nLnN0b3JlUmVsZWFzZSh0cnVl KTsKKysgICAgICAgICAgICAgICAgbV9jb25kLndha2VPbmUoKTsKKysgICAgICAgICAgICAgICAg YnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIHZvaWQg c3RvcCgpCisrICAgIHsKKysgICAgICAgIC8vIFdlIGhhdmUgdG8gYm90aCB3cml0ZSB0byB0aGUg cGlwZSBhbmQgc2V0IHRoZSBmbGFnLCBhcyB0aGUgdGhyZWFkIG1heSBiZQorKyAgICAgICAgLy8g ZWl0aGVyIGluIHRoZSBwb2xsKCkgb3Igd2FpdGluZyBmb3IgX3ByZXBhcmVfcmVhZCgpLgorKyAg ICAgICAgaWYgKG1fcGlwZWZkWzFdICE9IC0xICYmIHdyaXRlKG1fcGlwZWZkWzFdLCAiXDAiLCAx KSA9PSAtMSkKKysgICAgICAgICAgICBxV2FybmluZygiRmFpbGVkIHRvIHdyaXRlIHRvIHRoZSBw aXBlOiAlcy4iLCBzdHJlcnJvcihlcnJubykpOworKworKyAgICAgICAgeworKyAgICAgICAgICAg IFFNdXRleExvY2tlciBsKCZtX211dGV4KTsKKysgICAgICAgICAgICBtX3F1aXR0aW5nID0gdHJ1 ZTsKKysgICAgICAgICAgICBtX2NvbmQud2FrZU9uZSgpOworKyAgICAgICAgfQorKworKyAgICAg ICAgd2FpdCgpOworKyAgICB9CisrCisrUV9TSUdOQUxTOgorKyAgICB2b2lkIG5lZWRSZWFkQW5k RGlzcGF0Y2goKTsKKysKKytwcm90ZWN0ZWQ6CisrICAgIHZvaWQgcnVuKCkgb3ZlcnJpZGUKKysg ICAgeworKyAgICAgICAgLy8gd2UgdXNlIHRoaXMgcGlwZSB0byBtYWtlIHRoZSBsb29wIGV4aXQg b3RoZXJ3aXNlIGlmIHdlIHNpbXBseSB1c2VkIGEgZmxhZyBvbiB0aGUgbG9vcCBjb25kaXRpb24s IGlmIHN0b3AoKSBnZXRzCisrICAgICAgICAvLyBjYWxsZWQgd2hpbGUgcG9sbCgpIGlzIGJsb2Nr aW5nIHRoZSB0aHJlYWQgd2lsbCBuZXZlciBxdWl0IHNpbmNlIHRoZXJlIGFyZSBubyB3YXlsYW5k IG1lc3NhZ2VzIGNvbWluZyBhbnltb3JlLgorKyAgICAgICAgc3RydWN0IFBpcGUKKysgICAgICAg IHsKKysgICAgICAgICAgICBQaXBlKGludCAqZmRzKQorKyAgICAgICAgICAgICAgICA6IGZkcyhm ZHMpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBpZiAocXRfc2FmZV9waXBlKGZk cykgIT0gMCkKKysgICAgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJQaXBlIGNyZWF0aW9uIGZh aWxlZC4gUXVpdHRpbmcgbWF5IGhhbmcuIik7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAg IH5QaXBlKCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGlmIChmZHNbMF0gIT0g LTEpIHsKKysgICAgICAgICAgICAgICAgICAgIGNsb3NlKGZkc1swXSk7CisrICAgICAgICAgICAg ICAgICAgICBjbG9zZShmZHNbMV0pOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAg fQorKworKyAgICAgICAgICAgIGludCAqZmRzOworKyAgICAgICAgfSBwaXBlKG1fcGlwZWZkKTsK KysKKysgICAgICAgIC8vIE1ha2UgdGhlIG1haW4gdGhyZWFkIGNhbGwgd2xfcHJlcGFyZV9yZWFk KCksIGRpc3BhdGNoIHRoZSBwZW5kaW5nIG1lc3NhZ2VzIGFuZCBmbHVzaCB0aGUKKysgICAgICAg IC8vIG91dGJvdW5kIG9uZXMuIFdhaXQgdW50aWwgaXQncyBkb25lIGJlZm9yZSBwcm9jZWVkaW5n LCB1bmxlc3Mgd2UncmUgdG9sZCB0byBxdWl0LgorKyAgICAgICAgd2hpbGUgKHdhaXRGb3JSZWFk aW5nKCkpIHsKKysgICAgICAgICAgICBwb2xsZmQgZmRzWzJdID0geyB7IG1fZmQsIFBPTExJTiwg MCB9LCB7IG1fcGlwZWZkWzBdLCBQT0xMSU4sIDAgfSB9OworKyAgICAgICAgICAgIHBvbGwoZmRz LCAyLCAtMSk7CisrCisrICAgICAgICAgICAgaWYgKGZkc1sxXS5yZXZlbnRzICYgUE9MTElOKSB7 CisrICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IHJlYWxseSBjYXJlIHRvIHJlYWQgdGhlIGJ5 dGUgdGhhdCB3YXMgd3JpdHRlbiBoZXJlIHNpbmNlIHdlJ3JlIGNsb3NpbmcgZG93bgorKyAgICAg ICAgICAgICAgICB3bF9kaXNwbGF5X2NhbmNlbF9yZWFkKG1fd2xkaXNwbGF5KTsKKysgICAgICAg ICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIGlmIChmZHNb MF0ucmV2ZW50cyAmIFBPTExJTikKKysgICAgICAgICAgICAgICAgd2xfZGlzcGxheV9yZWFkX2V2 ZW50cyhtX3dsZGlzcGxheSk7CisrICAgICAgICAgICAgICAgIC8vIFRoZSBwb2xsbCB3YXMgc3Vj Y2VzZnVsbCBhbmQgdGhlIGV2ZW50IHRocmVhZCBkaWQgdGhlIHdsX2Rpc3BsYXlfcmVhZF9ldmVu dHMoKS4gT24gdGhlIG5leHQgaXRlcmF0aW9uIG9mIHRoZSBsb29wCisrICAgICAgICAgICAgICAg IC8vIHRoZSBldmVudCBzZW50IHRvIHRoZSBtYWluIHRocmVhZCB3aWxsIGNhdXNlIGl0IHRvIGRp c3BhdGNoIHRoZSBtZXNzYWdlcyBqdXN0IHJlYWQsIHVubGVzcyB0aGUgbG9vcCBleGl0cyBpbiB3 aGljaAorKyAgICAgICAgICAgICAgICAvLyBjYXNlIHdlIGRvbid0IGNhcmUgYW55bW9yZSBhYm91 dCB0aGVtLgorKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgd2xfZGlzcGxheV9j YW5jZWxfcmVhZChtX3dsZGlzcGxheSk7CisrICAgICAgICB9CisrICAgIH0KKysKKytwcml2YXRl OgorKyAgICBib29sIHdhaXRGb3JSZWFkaW5nKCkKKysgICAgeworKyAgICAgICAgUV9BU1NFUlQo UVRocmVhZDo6Y3VycmVudFRocmVhZCgpID09IHRoaXMpOworKworKyAgICAgICAgbV9yZWFkaW5n LnN0b3JlUmVsZWFzZShmYWxzZSk7CisrCisrICAgICAgICBpZiAobV9tb2RlID09IFNlbGZEaXNw YXRjaCkgeworKyAgICAgICAgICAgIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpOworKyAgICAgICAg fSBlbHNlIHsKKysgICAgICAgICAgICBRX0VNSVQgbmVlZFJlYWRBbmREaXNwYXRjaCgpOworKwor KyAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrKCZtX211dGV4KTsKKysgICAgICAgICAgICAv LyBtX3JlYWRpbmcgbWlnaHQgYmUgc2V0IGZyb20gb3VyIGVtaXQgb3Igc29tZSBvdGhlciBpbnZv Y2F0aW9uIG9mCisrICAgICAgICAgICAgLy8gcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkuCisrICAg ICAgICAgICAgd2hpbGUgKCFtX3JlYWRpbmcubG9hZFJlbGF4ZWQoKSAmJiAhbV9xdWl0dGluZykK KysgICAgICAgICAgICAgICAgbV9jb25kLndhaXQoJm1fbXV0ZXgpOworKyAgICAgICAgfQorKwor KyAgICAgICAgcmV0dXJuICFtX3F1aXR0aW5nOworKyAgICB9CisrCisrICAgIGludCBkaXNwYXRj aFF1ZXVlUGVuZGluZygpCisrICAgIHsKKysgICAgICAgIGlmIChtX3dsZXZxdWV1ZSkKKysgICAg ICAgICAgICByZXR1cm4gd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1fd2xkaXNw bGF5LCBtX3dsZXZxdWV1ZSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgcmV0dXJuIHds X2Rpc3BsYXlfZGlzcGF0Y2hfcGVuZGluZyhtX3dsZGlzcGxheSk7CisrICAgIH0KKysKKysgICAg aW50IHByZXBhcmVSZWFkUXVldWUoKQorKyAgICB7CisrICAgICAgICBpZiAobV93bGV2cXVldWUp CisrICAgICAgICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkX3F1ZXVlKG1fd2xk aXNwbGF5LCBtX3dsZXZxdWV1ZSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgcmV0dXJu IHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkKG1fd2xkaXNwbGF5KTsKKysgICAgfQorKworKyAgICBp bnQgbV9mZDsKKysgICAgaW50IG1fcGlwZWZkWzJdOworKyAgICB3bF9kaXNwbGF5ICptX3dsZGlz cGxheTsKKysgICAgd2xfZXZlbnRfcXVldWUgKm1fd2xldnF1ZXVlOworKyAgICBPcGVyYXRpbmdN b2RlIG1fbW9kZTsKKysKKysgICAgLyogQ29uY3VycmVuY3kgbm90ZSB3aGVuIG9wZXJhdGluZyBp biBFbWl0VG9EaXNwYXRjaCBtb2RlOgorKyAgICAgKiBtX3JlYWRpbmcgaXMgc2V0IHRvIGZhbHNl IGluc2lkZSBldmVudCB0aHJlYWQncyB3YWl0Rm9yUmVhZGluZygpLCBhbmQgaXMKKysgICAgICog c2V0IHRvIHRydWUgaW5zaWRlIG1haW4gdGhyZWFkJ3MgcmVhZEFuZERpc3BhdGNoRXZlbnRzKCku CisrICAgICAqIFRoZSBsb2NrIGlzIG5vdCB0YWtlbiB3aGVuIHNldHRpbmcgbV9yZWFkaW5nIHRv IGZhbHNlLCBhcyB0aGUgbWFpbiB0aHJlYWQKKysgICAgICogaXMgbm90IGFjdGl2ZWx5IHdhaXRp bmcgZm9yIGl0IHRvIHR1cm4gZmFsc2UuIEhvd2V2ZXIsIHRoZSBsb2NrIGlzIHRha2VuCisrICAg ICAqIGluc2lkZSByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKSBiZWZvcmUgc2V0dGluZyBtX3JlYWRp bmcgdG8gdHJ1ZSwKKysgICAgICogYXMgdGhlIGV2ZW50IHRocmVhZCBpcyBhY3RpdmVseSB3YWl0 aW5nIGZvciBpdCB1bmRlciB0aGUgd2FpdCBjb25kaXRpb24uCisrICAgICAqLworKworKyAgICBR QXRvbWljSW50ZWdlcjxib29sPiBtX3JlYWRpbmc7CisrICAgIGJvb2wgbV9xdWl0dGluZzsKKysg ICAgUU11dGV4IG1fbXV0ZXg7CisrICAgIFFXYWl0Q29uZGl0aW9uIG1fY29uZDsKKyt9OworKwor IFFfTE9HR0lOR19DQVRFR09SWShsY1FwYVdheWxhbmQsICJxdC5xcGEud2F5bGFuZCIpOyAvLyBm b3IgZ2VuZXJhbCAodW5jYXRlZ29yaXplZCkgV2F5bGFuZCBwbGF0Zm9ybSBsb2dnaW5nCisgCisg c3RydWN0IHdsX3N1cmZhY2UgKlFXYXlsYW5kRGlzcGxheTo6Y3JlYXRlU3VyZmFjZSh2b2lkICpo YW5kbGUpCitAQCAtMTU4LDE3ICszNTEsMTYgQEAgUVdheWxhbmREaXNwbGF5OjpRV2F5bGFuZERp c3BsYXkoUVdheWxhbmRJbnRlZ3JhdGlvbiAqd2F5bGFuZEludGVncmF0aW9uKQorICAgICBpZiAo IW1Ya2JDb250ZXh0KQorICAgICAgICAgcUNXYXJuaW5nKGxjUXBhV2F5bGFuZCwgImZhaWxlZCB0 byBjcmVhdGUgeGtiIGNvbnRleHQiKTsKKyAjZW5kaWYKKy0KKy0gICAgZm9yY2VSb3VuZFRyaXAo KTsKKy0KKy0gICAgaWYgKCFtV2FpdGluZ1NjcmVlbnMuaXNFbXB0eSgpKSB7CistICAgICAgICAv LyBHaXZlIHdsX291dHB1dC5kb25lIGFuZCB6eGRnX291dHB1dF92MS5kb25lIGV2ZW50cyBhIGNo YW5jZSB0byBhcnJpdmUKKy0gICAgICAgIGZvcmNlUm91bmRUcmlwKCk7CistICAgIH0KKyB9Cisg CisgUVdheWxhbmREaXNwbGF5Ojp+UVdheWxhbmREaXNwbGF5KHZvaWQpCisgeworKyAgICBpZiAo bV9ldmVudFRocmVhZCkKKysgICAgICAgIG1fZXZlbnRUaHJlYWQtPnN0b3AoKTsKKysKKysgICAg aWYgKG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkKQorKyAgICAgICAgbV9mcmFtZUV2ZW50UXVldWVU aHJlYWQtPnN0b3AoKTsKKysKKyAgICAgaWYgKG1TeW5jQ2FsbGJhY2spCisgICAgICAgICB3bF9j YWxsYmFja19kZXN0cm95KG1TeW5jQ2FsbGJhY2spOworIAorQEAgLTE4Nyw2ICszNzksMjEgQEAg UVdheWxhbmREaXNwbGF5Ojp+UVdheWxhbmREaXNwbGF5KHZvaWQpCisgI2VuZGlmCisgICAgIGlm IChtRGlzcGxheSkKKyAgICAgICAgIHdsX2Rpc3BsYXlfZGlzY29ubmVjdChtRGlzcGxheSk7Cisr CisrICAgIGlmIChtX2ZyYW1lRXZlbnRRdWV1ZSkKKysgICAgICAgIHdsX2V2ZW50X3F1ZXVlX2Rl c3Ryb3kobV9mcmFtZUV2ZW50UXVldWUpOworK30KKysKKysvLyBTdGVwcyB3aGljaCBpcyBjYWxs ZWQganVzdCBhZnRlciBjb25zdHJ1Y3Rvci4gVGhpcyBzZXBhcmF0ZXMgcmVnaXN0cnlfZ2xvYmFs KCkgb3V0IG9mIHRoZSBjb25zdHJ1Y3RvcgorKy8vIHNvIHRoYXQgZmFjdG9yeSBmdW5jdGlvbnMg aW4gaW50ZWdyYXRpb24gY2FuIGJlIG92ZXJyaWRkZW4uCisrdm9pZCBRV2F5bGFuZERpc3BsYXk6 OmluaXRpYWxpemUoKQorK3sKKysgICAgZm9yY2VSb3VuZFRyaXAoKTsKKysKKysgICAgaWYgKCFt V2FpdGluZ1NjcmVlbnMuaXNFbXB0eSgpKSB7CisrICAgICAgICAvLyBHaXZlIHdsX291dHB1dC5k b25lIGFuZCB6eGRnX291dHB1dF92MS5kb25lIGV2ZW50cyBhIGNoYW5jZSB0byBhcnJpdmUKKysg ICAgICAgIGZvcmNlUm91bmRUcmlwKCk7CisrICAgIH0KKyB9CisgCisgdm9pZCBRV2F5bGFuZERp c3BsYXk6OmVuc3VyZVNjcmVlbigpCitAQCAtMjAzLDk4ICs0MTAsMzcgQEAgdm9pZCBRV2F5bGFu ZERpc3BsYXk6OmVuc3VyZVNjcmVlbigpCisgCisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmNoZWNr RXJyb3IoKSBjb25zdAorIHsKKy0gICAgaW50IGVjb2RlID0gd2xfZGlzcGxheV9nZXRfZXJyb3Io bURpc3BsYXkpOworLSAgICBpZiAoKGVjb2RlID09IEVQSVBFIHx8IGVjb2RlID09IEVDT05OUkVT RVQpKSB7CistICAgICAgICAvLyBzcGVjaWFsIGNhc2UgdGhpcyB0byBwcm92aWRlIGEgbmljZXIg ZXJyb3IKKy0gICAgICAgIHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBjb25uZWN0aW9uIGJyb2tlLiBE aWQgdGhlIFdheWxhbmQgY29tcG9zaXRvciBkaWU/Iik7CistICAgIH0gZWxzZSB7CistICAgICAg ICBxV2FybmluZygiVGhlIFdheWxhbmQgY29ubmVjdGlvbiBleHBlcmllbmNlZCBhIGZhdGFsIGVy cm9yOiAlcyIsIHN0cmVycm9yKGVjb2RlKSk7CistICAgIH0KKy0gICAgX2V4aXQoMSk7CisrICAg IGNoZWNrV2F5bGFuZEVycm9yKG1EaXNwbGF5KTsKKyB9CisgCisrLy8gQ2FsbGVkIGluIG1haW4g dGhyZWFkLCBlaXRoZXIgZnJvbSBxdWV1ZWQgc2lnbmFsIG9yIGRpcmVjdGx5LgorIHZvaWQgUVdh eWxhbmREaXNwbGF5OjpmbHVzaFJlcXVlc3RzKCkKKyB7CistICAgIGlmICh3bF9kaXNwbGF5X3By ZXBhcmVfcmVhZChtRGlzcGxheSkgPT0gMCkgeworLSAgICAgICAgd2xfZGlzcGxheV9yZWFkX2V2 ZW50cyhtRGlzcGxheSk7CistICAgIH0KKy0KKy0gICAgaWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2hf cGVuZGluZyhtRGlzcGxheSkgPCAwKQorLSAgICAgICAgY2hlY2tFcnJvcigpOworLQorLSAgICB7 CistICAgICAgICBRUmVhZExvY2tlciBsb2NrZXIoJm1fZnJhbWVRdWV1ZUxvY2spOworLSAgICAg ICAgZm9yIChjb25zdCBGcmFtZVF1ZXVlICZxIDogbUV4dGVybmFsUXVldWVzKSB7CistICAgICAg ICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcihxLm11dGV4KTsKKy0gICAgICAgICAgICB3aGlsZSAo d2xfZGlzcGxheV9wcmVwYXJlX3JlYWRfcXVldWUobURpc3BsYXksIHEucXVldWUpICE9IDApCist ICAgICAgICAgICAgICAgIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVuZGluZyhtRGlzcGxh eSwgcS5xdWV1ZSk7CistICAgICAgICAgICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtRGlzcGxh eSk7CistICAgICAgICAgICAgd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNw bGF5LCBxLnF1ZXVlKTsKKy0gICAgICAgIH0KKy0gICAgfQorLQorLSAgICB3bF9kaXNwbGF5X2Zs dXNoKG1EaXNwbGF5KTsKKy19CistCistdm9pZCBRV2F5bGFuZERpc3BsYXk6OmJsb2NraW5nUmVh ZEV2ZW50cygpCisteworLSAgICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaChtRGlzcGxheSkgPCAw KQorLSAgICAgICAgY2hlY2tFcnJvcigpOworLX0KKy0KKy12b2lkIFFXYXlsYW5kRGlzcGxheTo6 ZGVzdHJveUZyYW1lUXVldWUoY29uc3QgUVdheWxhbmREaXNwbGF5OjpGcmFtZVF1ZXVlICZxKQor LXsKKy0gICAgUVdyaXRlTG9ja2VyIGxvY2tlcigmbV9mcmFtZVF1ZXVlTG9jayk7CistICAgIGF1 dG8gaXQgPSBzdGQ6OmZpbmRfaWYobUV4dGVybmFsUXVldWVzLmJlZ2luKCksCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgbUV4dGVybmFsUXVldWVzLmVuZCgpLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgIFsmcV0gKGNvbnN0IFFXYXlsYW5kRGlzcGxheTo6RnJhbWVRdWV1ZSAmb3Ro ZXIpeyByZXR1cm4gb3RoZXIucXVldWUgPT0gcS5xdWV1ZTsgfSk7CistICAgIFFfQVNTRVJUKGl0 ICE9IG1FeHRlcm5hbFF1ZXVlcy5lbmQoKSk7CistICAgIG1FeHRlcm5hbFF1ZXVlcy5lcmFzZShp dCk7CistICAgIGlmIChxLnF1ZXVlICE9IG51bGxwdHIpCistICAgICAgICB3bF9ldmVudF9xdWV1 ZV9kZXN0cm95KHEucXVldWUpOworLSAgICBkZWxldGUgcS5tdXRleDsKKysgICAgbV9ldmVudFRo cmVhZC0+cmVhZEFuZERpc3BhdGNoRXZlbnRzKCk7CisgfQorIAorLVFXYXlsYW5kRGlzcGxheTo6 RnJhbWVRdWV1ZSBRV2F5bGFuZERpc3BsYXk6OmNyZWF0ZUZyYW1lUXVldWUoKQorKy8vIFdlIGhh dmUgdG8gd2FpdCB1bnRpbCB3ZSBoYXZlIGFuIGV2ZW50RGlzcGF0Y2hlciBiZWZvcmUgY3JlYXRp bmcgdGhlIGV2ZW50VGhyZWFkLAorKy8vIG90aGVyd2lzZSBmb3JjZVJvdW5kVHJpcCgpIG1heSBi bG9jayBpbnNpZGUgX2V2ZW50c19yZWFkKCkgYmVjYXVzZSBldmVudFRocmVhZCBpcworKy8vIHBv bGxpbmcuCisrdm9pZCBRV2F5bGFuZERpc3BsYXk6OmluaXRFdmVudFRocmVhZCgpCisgeworLSAg ICBRV3JpdGVMb2NrZXIgbG9ja2VyKCZtX2ZyYW1lUXVldWVMb2NrKTsKKy0gICAgRnJhbWVRdWV1 ZSBxe2NyZWF0ZUV2ZW50UXVldWUoKX07CistICAgIG1FeHRlcm5hbFF1ZXVlcy5hcHBlbmQocSk7 CistICAgIHJldHVybiBxOworLX0KKysgICAgbV9ldmVudFRocmVhZC5yZXNldCgKKysgICAgICAg ICAgICBuZXcgRXZlbnRUaHJlYWQobURpc3BsYXksIC8qIGRlZmF1bHQgcXVldWUgKi8gbnVsbHB0 ciwgRXZlbnRUaHJlYWQ6OkVtaXRUb0Rpc3BhdGNoKSk7CisrICAgIGNvbm5lY3QobV9ldmVudFRo cmVhZC5nZXQoKSwgJkV2ZW50VGhyZWFkOjpuZWVkUmVhZEFuZERpc3BhdGNoLCB0aGlzLAorKyAg ICAgICAgICAgICZRV2F5bGFuZERpc3BsYXk6OmZsdXNoUmVxdWVzdHMsIFF0OjpRdWV1ZWRDb25u ZWN0aW9uKTsKKysgICAgbV9ldmVudFRocmVhZC0+c3RhcnQoKTsKKyAKKy13bF9ldmVudF9xdWV1 ZSAqUVdheWxhbmREaXNwbGF5OjpjcmVhdGVFdmVudFF1ZXVlKCkKKy17CistICAgIHJldHVybiB3 bF9kaXNwbGF5X2NyZWF0ZV9xdWV1ZShtRGlzcGxheSk7CisrICAgIC8vIHdsX2Rpc3BsYXlfZGlz Y29ubmVjdCgpIGZyZWUgdGhpcy4KKysgICAgbV9mcmFtZUV2ZW50UXVldWUgPSB3bF9kaXNwbGF5 X2NyZWF0ZV9xdWV1ZShtRGlzcGxheSk7CisrICAgIG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkLnJl c2V0KAorKyAgICAgICAgICAgIG5ldyBFdmVudFRocmVhZChtRGlzcGxheSwgbV9mcmFtZUV2ZW50 UXVldWUsIEV2ZW50VGhyZWFkOjpTZWxmRGlzcGF0Y2gpKTsKKysgICAgbV9mcmFtZUV2ZW50UXVl dWVUaHJlYWQtPnN0YXJ0KCk7CisgfQorIAorLXZvaWQgUVdheWxhbmREaXNwbGF5OjpkaXNwYXRj aFF1ZXVlV2hpbGUod2xfZXZlbnRfcXVldWUgKnF1ZXVlLCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKCk+ IGNvbmRpdGlvbiwgaW50IHRpbWVvdXQpCisrdm9pZCBRV2F5bGFuZERpc3BsYXk6OmJsb2NraW5n UmVhZEV2ZW50cygpCisgeworLSAgICBpZiAoIWNvbmRpdGlvbigpKQorLSAgICAgICAgcmV0dXJu OworLQorLSAgICBRRWxhcHNlZFRpbWVyIHRpbWVyOworLSAgICB0aW1lci5zdGFydCgpOworLSAg ICBzdHJ1Y3QgcG9sbGZkIHBGZCA9IHF0X21ha2VfcG9sbGZkKHdsX2Rpc3BsYXlfZ2V0X2ZkKG1E aXNwbGF5KSwgUE9MTElOKTsKKy0gICAgd2hpbGUgKHRpbWVvdXQgPT0gLTEgfHwgdGltZXIuZWxh cHNlZCgpIDwgdGltZW91dCkgeworLSAgICAgICAgd2hpbGUgKHdsX2Rpc3BsYXlfcHJlcGFyZV9y ZWFkX3F1ZXVlKG1EaXNwbGF5LCBxdWV1ZSkgIT0gMCkKKy0gICAgICAgICAgICB3bF9kaXNwbGF5 X2Rpc3BhdGNoX3F1ZXVlX3BlbmRpbmcobURpc3BsYXksIHF1ZXVlKTsKKy0KKy0gICAgICAgIHds X2Rpc3BsYXlfZmx1c2gobURpc3BsYXkpOworLQorLSAgICAgICAgY29uc3QgaW50IHJlbWFpbmlu ZyA9IHFNYXgodGltZW91dCAtIHRpbWVyLmVsYXBzZWQoKSwgMGxsKTsKKy0gICAgICAgIGNvbnN0 IGludCBwb2xsVGltZW91dCA9IHRpbWVvdXQgPT0gLTEgPyAtMSA6IHJlbWFpbmluZzsKKy0gICAg ICAgIGlmIChxdF9wb2xsX21zZWNzKCZwRmQsIDEsIHBvbGxUaW1lb3V0KSA+IDApCistICAgICAg ICAgICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtRGlzcGxheSk7CistICAgICAgICBlbHNlCist ICAgICAgICAgICAgd2xfZGlzcGxheV9jYW5jZWxfcmVhZChtRGlzcGxheSk7CistCistICAgICAg ICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBxdWV1ZSkg PCAwKQorLSAgICAgICAgICAgIGNoZWNrRXJyb3IoKTsKKy0KKy0gICAgICAgIGlmICghY29uZGl0 aW9uKCkpCistICAgICAgICAgICAgYnJlYWs7CistICAgIH0KKysgICAgaWYgKHdsX2Rpc3BsYXlf ZGlzcGF0Y2gobURpc3BsYXkpIDwgMCkKKysgICAgICAgIGNoZWNrV2F5bGFuZEVycm9yKG1EaXNw bGF5KTsKKyB9CisgCisgUVdheWxhbmRTY3JlZW4gKlFXYXlsYW5kRGlzcGxheTo6c2NyZWVuRm9y T3V0cHV0KHN0cnVjdCB3bF9vdXRwdXQgKm91dHB1dCkgY29uc3QKK0BAIC0zNDUsNyArNDkxLDcg QEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2JhbCh1aW50MzJfdCBpZCwgY29u c3QgUVN0cmluZyAmaW50ZXJmYWNlLCB1aW4KKyAgICAgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5n TGl0ZXJhbCgid2xfb3V0cHV0IikpIHsKKyAgICAgICAgIG1XYWl0aW5nU2NyZWVucyA8PCBuZXcg UVdheWxhbmRTY3JlZW4odGhpcywgdmVyc2lvbiwgaWQpOworICAgICB9IGVsc2UgaWYgKGludGVy ZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgid2xfY29tcG9zaXRvciIpKSB7CistICAgICAgICBtQ29t cG9zaXRvclZlcnNpb24gPSBxTWluKChpbnQpdmVyc2lvbiwgMyk7CisrICAgICAgICBtQ29tcG9z aXRvclZlcnNpb24gPSBxTWluKChpbnQpdmVyc2lvbiwgNCk7CisgICAgICAgICBtQ29tcG9zaXRv ci5pbml0KHJlZ2lzdHJ5LCBpZCwgbUNvbXBvc2l0b3JWZXJzaW9uKTsKKyAgICAgfSBlbHNlIGlm IChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX3NobSIpKSB7CisgICAgICAgICBtU2ht LnJlc2V0KG5ldyBRV2F5bGFuZFNobSh0aGlzLCB2ZXJzaW9uLCBpZCkpOworQEAgLTM1NCw3ICs1 MDAsNyBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVnaXN0cnlfZ2xvYmFsKHVpbnQzMl90IGlk LCBjb25zdCBRU3RyaW5nICZpbnRlcmZhY2UsIHVpbgorICAgICAgICAgbUlucHV0RGV2aWNlcy5h cHBlbmQoaW5wdXREZXZpY2UpOworICNpZiBRVF9DT05GSUcod2F5bGFuZF9kYXRhZGV2aWNlKQor ICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgid2xfZGF0YV9kZXZp Y2VfbWFuYWdlciIpKSB7CistICAgICAgICBtRG5kU2VsZWN0aW9uSGFuZGxlci5yZXNldChuZXcg UVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcih0aGlzLCBpZCkpOworKyAgICAgICAgbURuZFNlbGVj dGlvbkhhbmRsZXIucmVzZXQobmV3IFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIodGhpcywgdmVy c2lvbiwgaWQpKTsKKyAjZW5kaWYKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmlu Z0xpdGVyYWwoInF0X3N1cmZhY2VfZXh0ZW5zaW9uIikpIHsKKyAgICAgICAgIG1XaW5kb3dFeHRl bnNpb24ucmVzZXQobmV3IFF0V2F5bGFuZDo6cXRfc3VyZmFjZV9leHRlbnNpb24ocmVnaXN0cnks IGlkLCAxKSk7CitAQCAtMzY5LDYgKzUxNSw4IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZWdp c3RyeV9nbG9iYWwodWludDMyX3QgaWQsIGNvbnN0IFFTdHJpbmcgJmludGVyZmFjZSwgdWluCisg I2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3NlbGVjdGlvbikKKyAgICAgfSBl bHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoInp3cF9wcmltYXJ5X3NlbGVjdGlv bl9kZXZpY2VfbWFuYWdlcl92MSIpKSB7CisgICAgICAgICBtUHJpbWFyeVNlbGVjdGlvbk1hbmFn ZXIucmVzZXQobmV3IFFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZU1hbmFnZXJWMSh0aGlz LCBpZCwgMSkpOworKyAgICAgICAgZm9yIChRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmlj ZSA6IHFBc0NvbnN0KG1JbnB1dERldmljZXMpKQorKyAgICAgICAgICAgIGlucHV0RGV2aWNlLT5z ZXRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlKG1QcmltYXJ5U2VsZWN0aW9uTWFuYWdlci0+Y3JlYXRl RGV2aWNlKGlucHV0RGV2aWNlKSk7CisgI2VuZGlmCisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNl ID09IFFTdHJpbmdMaXRlcmFsKCJ6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YyIikgJiYgIW1DbGll bnRTaWRlSW5wdXRDb250ZXh0UmVxdWVzdGVkKSB7CisgICAgICAgICBtVGV4dElucHV0TWFuYWdl ci5yZXNldChuZXcgUXRXYXlsYW5kOjp6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YyKHJlZ2lzdHJ5 LCBpZCwgMSkpOworQEAgLTQyNyw2ICs1NzUsMTMgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJl Z2lzdHJ5X2dsb2JhbF9yZW1vdmUodWludDMyX3QgaWQpCisgICAgICAgICAgICAgICAgICAgICBp bnB1dERldmljZS0+c2V0VGV4dElucHV0KG51bGxwdHIpOworICAgICAgICAgICAgICAgICBtV2F5 bGFuZEludGVncmF0aW9uLT5yZWNvbmZpZ3VyZUlucHV0Q29udGV4dCgpOworICAgICAgICAgICAg IH0KKysjaWYgUVRfQ09ORklHKHdheWxhbmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0aW9uKQorKyAg ICAgICAgICAgIGlmIChnbG9iYWwuaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ6d3BfcHJp bWFyeV9zZWxlY3Rpb25fZGV2aWNlX21hbmFnZXJfdjEiKSkgeworKyAgICAgICAgICAgICAgICBt UHJpbWFyeVNlbGVjdGlvbk1hbmFnZXIucmVzZXQoKTsKKysgICAgICAgICAgICAgICAgZm9yIChR V2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmljZSA6IHFBc0NvbnN0KG1JbnB1dERldmljZXMp KQorKyAgICAgICAgICAgICAgICAgICAgaW5wdXREZXZpY2UtPnNldFByaW1hcnlTZWxlY3Rpb25E ZXZpY2UobnVsbHB0cik7CisrICAgICAgICAgICAgfQorKyNlbmRpZgorICAgICAgICAgICAgIG1H bG9iYWxzLnJlbW92ZUF0KGkpOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorQEAg LTQ1Miw5ICs2MDcsMTAgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmFkZFJlZ2lzdHJ5TGlzdGVu ZXIoUmVnaXN0cnlMaXN0ZW5lciBsaXN0ZW5lciwgdm9pZCAqZGF0YSkKKyAKKyB2b2lkIFFXYXls YW5kRGlzcGxheTo6cmVtb3ZlTGlzdGVuZXIoUmVnaXN0cnlMaXN0ZW5lciBsaXN0ZW5lciwgdm9p ZCAqZGF0YSkKKyB7CistICAgIHN0ZDo6cmVtb3ZlX2lmKG1SZWdpc3RyeUxpc3RlbmVycy5iZWdp bigpLCBtUmVnaXN0cnlMaXN0ZW5lcnMuZW5kKCksIFs9XShMaXN0ZW5lciBsKXsKKysgICAgYXV0 byBpdGVyID0gc3RkOjpyZW1vdmVfaWYobVJlZ2lzdHJ5TGlzdGVuZXJzLmJlZ2luKCksIG1SZWdp c3RyeUxpc3RlbmVycy5lbmQoKSwgWz1dKExpc3RlbmVyIGwpeworICAgICAgICAgcmV0dXJuIChs Lmxpc3RlbmVyID09IGxpc3RlbmVyICYmIGwuZGF0YSA9PSBkYXRhKTsKKyAgICAgfSk7CisrICAg IG1SZWdpc3RyeUxpc3RlbmVycy5lcmFzZShpdGVyLCBtUmVnaXN0cnlMaXN0ZW5lcnMuZW5kKCkp OworIH0KKyAKKyB1aW50MzJfdCBRV2F5bGFuZERpc3BsYXk6OmN1cnJlbnRUaW1lTWlsbGlzZWMo KQorQEAgLTQ2Nyw1MCArNjIzLDkgQEAgdWludDMyX3QgUVdheWxhbmREaXNwbGF5OjpjdXJyZW50 VGltZU1pbGxpc2VjKCkKKyAgICAgcmV0dXJuIDA7CisgfQorIAorLXN0YXRpYyB2b2lkCistc3lu Y19jYWxsYmFjayh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfY2FsbGJhY2sgKmNhbGxiYWNrLCB1aW50 MzJfdCBzZXJpYWwpCisteworLSAgICBRX1VOVVNFRChzZXJpYWwpCistICAgIGJvb2wgKmRvbmUg PSBzdGF0aWNfY2FzdDxib29sICo+KGRhdGEpOworLQorLSAgICAqZG9uZSA9IHRydWU7CistCist ICAgIC8vIElmIHRoZSB3bF9jYWxsYmFjayBkb25lIGV2ZW50IGlzIHJlY2VpdmVkIGFmdGVyIHRo ZSBjb25kaXRpb24gY2hlY2sgaW4gdGhlIHdoaWxlIGxvb3AgaW4KKy0gICAgLy8gZm9yY2VSb3Vu ZFRyaXAoKSwgYnV0IGJlZm9yZSB0aGUgY2FsbCB0byBwcm9jZXNzRXZlbnRzLCB0aGUgY2FsbCB0 byBwcm9jZXNzRXZlbnRzIG1heSBibG9jaworLSAgICAvLyBmb3JldmVyIGlmIG5vIG1vcmUgZXZl bnRzIGFyZSBwb3N0ZWQgKGV2ZW50aG91Z2ggdGhlIGNhbGxiYWNrIGlzIGhhbmRsZWQgaW4gcmVz cG9uc2UgdG8gdGhlCistICAgIC8vIGFib3V0VG9CbG9jayBzaWduYWwpLiBIZW5jZSwgd2Ugd2Fr ZSB1cCB0aGUgZXZlbnQgZGlzcGF0Y2hlciBzbyBmb3JjZVJvdW5kVHJpcCBtYXkgcmV0dXJuLgor LSAgICAvLyAoUVRCVUctNjQ2OTYpCistICAgIGlmIChhdXRvICpkaXNwYXRjaGVyID0gUVRocmVh ZDo6Y3VycmVudFRocmVhZCgpLT5ldmVudERpc3BhdGNoZXIoKSkKKy0gICAgICAgIGRpc3BhdGNo ZXItPndha2VVcCgpOworLQorLSAgICB3bF9jYWxsYmFja19kZXN0cm95KGNhbGxiYWNrKTsKKy19 CistCistc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9jYWxsYmFja19saXN0ZW5lciBzeW5jX2xpc3Rl bmVyID0geworLSAgICBzeW5jX2NhbGxiYWNrCistfTsKKy0KKyB2b2lkIFFXYXlsYW5kRGlzcGxh eTo6Zm9yY2VSb3VuZFRyaXAoKQorIHsKKy0gICAgLy8gd2xfZGlzcGxheV9yb3VuZHRyaXAoKSB3 b3JrcyBvbiB0aGUgbWFpbiBxdWV1ZSBvbmx5LAorLSAgICAvLyBidXQgd2UgdXNlIGEgc2VwYXJh dGUgb25lLCBzbyBiYXNpY2FsbHkgcmVpbXBsZW1lbnQgaXQgaGVyZQorLSAgICBpbnQgcmV0ID0g MDsKKy0gICAgYm9vbCBkb25lID0gZmFsc2U7CistICAgIHdsX2NhbGxiYWNrICpjYWxsYmFjayA9 IHdsX2Rpc3BsYXlfc3luYyhtRGlzcGxheSk7CistICAgIHdsX2NhbGxiYWNrX2FkZF9saXN0ZW5l cihjYWxsYmFjaywgJnN5bmNfbGlzdGVuZXIsICZkb25lKTsKKy0gICAgZmx1c2hSZXF1ZXN0cygp OworLSAgICBpZiAoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpLT5ldmVudERpc3BhdGNoZXIoKSkg eworLSAgICAgICAgd2hpbGUgKCFkb25lICYmIHJldCA+PSAwKSB7CistICAgICAgICAgICAgUVRo cmVhZDo6Y3VycmVudFRocmVhZCgpLT5ldmVudERpc3BhdGNoZXIoKS0+cHJvY2Vzc0V2ZW50cyhR RXZlbnRMb29wOjpXYWl0Rm9yTW9yZUV2ZW50cyk7CistICAgICAgICAgICAgcmV0ID0gd2xfZGlz cGxheV9kaXNwYXRjaF9wZW5kaW5nKG1EaXNwbGF5KTsKKy0gICAgICAgIH0KKy0gICAgfSBlbHNl IHsKKy0gICAgICAgIHdoaWxlICghZG9uZSAmJiByZXQgPj0gMCkKKy0gICAgICAgICAgICByZXQg PSB3bF9kaXNwbGF5X2Rpc3BhdGNoKG1EaXNwbGF5KTsKKy0gICAgfQorLQorLSAgICBpZiAocmV0 ID09IC0xICYmICFkb25lKQorLSAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShjYWxsYmFjayk7 CisrICAgICB3bF9kaXNwbGF5X3JvdW5kdHJpcChtRGlzcGxheSk7CisgfQorIAorIGJvb2wgUVdh eWxhbmREaXNwbGF5OjpzdXBwb3J0c1dpbmRvd0RlY29yYXRpb24oKSBjb25zdAorQEAgLTU3NCwx NCArNjg5LDEwIEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpoYW5kbGVLZXlib2FyZEZvY3VzQ2hh bmdlZChRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmljCisgICAgIGlmIChtTGFzdEtleWJv YXJkRm9jdXMgPT0ga2V5Ym9hcmRGb2N1cykKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYg KG1XYXlsYW5kSW50ZWdyYXRpb24tPm1TaGVsbEludGVncmF0aW9uKSB7CistICAgICAgICBtV2F5 bGFuZEludGVncmF0aW9uLT5tU2hlbGxJbnRlZ3JhdGlvbi0+aGFuZGxlS2V5Ym9hcmRGb2N1c0No YW5nZWQoa2V5Ym9hcmRGb2N1cywgbUxhc3RLZXlib2FyZEZvY3VzKTsKKy0gICAgfSBlbHNlIHsK Ky0gICAgICAgIGlmIChrZXlib2FyZEZvY3VzKQorLSAgICAgICAgICAgIGhhbmRsZVdpbmRvd0Fj dGl2YXRlZChrZXlib2FyZEZvY3VzKTsKKy0gICAgICAgIGlmIChtTGFzdEtleWJvYXJkRm9jdXMp CistICAgICAgICAgICAgaGFuZGxlV2luZG93RGVhY3RpdmF0ZWQobUxhc3RLZXlib2FyZEZvY3Vz KTsKKy0gICAgfQorKyAgICBpZiAoa2V5Ym9hcmRGb2N1cykKKysgICAgICAgIGhhbmRsZVdpbmRv d0FjdGl2YXRlZChrZXlib2FyZEZvY3VzKTsKKysgICAgaWYgKG1MYXN0S2V5Ym9hcmRGb2N1cykK KysgICAgICAgIGhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG1MYXN0S2V5Ym9hcmRGb2N1cyk7Cisg CisgICAgIG1MYXN0S2V5Ym9hcmRGb2N1cyA9IGtleWJvYXJkRm9jdXM7CisgfQorQEAgLTYwMCw2 ICs3MTEsMTkgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmhhbmRsZVdheWxhbmRTeW5jKCkKKyAg ICAgUVdpbmRvdyAqYWN0aXZlV2luZG93ID0gbUFjdGl2ZVdpbmRvd3MuZW1wdHkoKSA/IG51bGxw dHIgOiBtQWN0aXZlV2luZG93cy5sYXN0KCktPndpbmRvdygpOworICAgICBpZiAoYWN0aXZlV2lu ZG93ICE9IFFHdWlBcHBsaWNhdGlvbjo6Zm9jdXNXaW5kb3coKSkKKyAgICAgICAgIFFXaW5kb3dT eXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdpbmRvd0FjdGl2YXRlZChhY3RpdmVXaW5kb3cpOworKwor KyAgICBpZiAoIWFjdGl2ZVdpbmRvdykgeworKyAgICAgICAgaWYgKGxhc3RJbnB1dERldmljZSgp KSB7CisrI2lmIFFUX0NPTkZJRyhjbGlwYm9hcmQpCisrICAgICAgICAgICAgaWYgKGF1dG8gKmRh dGFEZXZpY2UgPSBsYXN0SW5wdXREZXZpY2UoKS0+ZGF0YURldmljZSgpKQorKyAgICAgICAgICAg ICAgICBkYXRhRGV2aWNlLT5pbnZhbGlkYXRlU2VsZWN0aW9uT2ZmZXIoKTsKKysjZW5kaWYKKysj aWYgUVRfQ09ORklHKHdheWxhbmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0aW9uKQorKyAgICAgICAg ICAgIGlmIChhdXRvICpkZXZpY2UgPSBsYXN0SW5wdXREZXZpY2UoKS0+cHJpbWFyeVNlbGVjdGlv bkRldmljZSgpKQorKyAgICAgICAgICAgICAgICBkZXZpY2UtPmludmFsaWRhdGVTZWxlY3Rpb25P ZmZlcigpOworKyNlbmRpZgorKyAgICAgICAgfQorKyAgICB9CisgfQorIAorIGNvbnN0IHdsX2Nh bGxiYWNrX2xpc3RlbmVyIFFXYXlsYW5kRGlzcGxheTo6c3luY0NhbGxiYWNrTGlzdGVuZXIgPSB7 CitAQCAtNjI2LDYgKzc1MCwxMyBAQCBRV2F5bGFuZElucHV0RGV2aWNlICpRV2F5bGFuZERpc3Bs YXk6OmRlZmF1bHRJbnB1dERldmljZSgpIGNvbnN0CisgICAgIHJldHVybiBtSW5wdXREZXZpY2Vz LmlzRW1wdHkoKSA/IDAgOiBtSW5wdXREZXZpY2VzLmZpcnN0KCk7CisgfQorIAorK2Jvb2wgUVdh eWxhbmREaXNwbGF5Ojppc0tleWJvYXJkQXZhaWxhYmxlKCkgY29uc3QKKyt7CisrICAgIHJldHVy biBzdGQ6OmFueV9vZigKKysgICAgICAgICAgICBtSW5wdXREZXZpY2VzLmNvbnN0QmVnaW4oKSwg bUlucHV0RGV2aWNlcy5jb25zdEVuZCgpLAorKyAgICAgICAgICAgIFt0aGlzXShjb25zdCBRV2F5 bGFuZElucHV0RGV2aWNlICpkZXZpY2UpIHsgcmV0dXJuIGRldmljZS0+a2V5Ym9hcmQoKSAhPSBu dWxscHRyOyB9KTsKKyt9CisrCisgI2lmIFFUX0NPTkZJRyhjdXJzb3IpCisgCisgUVdheWxhbmRD dXJzb3IgKlFXYXlsYW5kRGlzcGxheTo6d2F5bGFuZEN1cnNvcigpCitAQCAtNjUyLDQgKzc4Myw2 IEBAIFFXYXlsYW5kQ3Vyc29yVGhlbWUgKlFXYXlsYW5kRGlzcGxheTo6bG9hZEN1cnNvclRoZW1l KGNvbnN0IFFTdHJpbmcgJm5hbWUsIGludCBwCisgCisgfSAvLyBuYW1lc3BhY2UgUXRXYXlsYW5k Q2xpZW50CisgCisrI2luY2x1ZGUgInF3YXlsYW5kZGlzcGxheS5tb2MiCisrCisgUVRfRU5EX05B TUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxh eV9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXlfcC5oCitpbmRleCAz YjA5MmJjOC4uNDJiYzY2MWQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRpc3BsYXlfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3Bs YXlfcC5oCitAQCAtMTA5LDYgKzEwOSw3IEBAIGNsYXNzIFFXYXlsYW5kU3VyZmFjZTsKKyBjbGFz cyBRV2F5bGFuZFNoZWxsSW50ZWdyYXRpb247CisgY2xhc3MgUVdheWxhbmRDdXJzb3I7CisgY2xh c3MgUVdheWxhbmRDdXJzb3JUaGVtZTsKKytjbGFzcyBFdmVudFRocmVhZDsKKyAKKyB0eXBlZGVm IHZvaWQgKCpSZWdpc3RyeUxpc3RlbmVyKSh2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB3bF9yZWdpc3RyeSAqcmVnaXN0cnksCitAQCAtMTIwLDE1 ICsxMjEsMTEgQEAgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdheWxhbmREaXNwbGF5 IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBRdFdheWxhbmQKKyAgICAgUV9PQkpFQ1QKKyAKKyBw dWJsaWM6CistICAgIHN0cnVjdCBGcmFtZVF1ZXVlIHsKKy0gICAgICAgIEZyYW1lUXVldWUod2xf ZXZlbnRfcXVldWUgKnEgPSBudWxscHRyKSA6IHF1ZXVlKHEpLCBtdXRleChuZXcgUU11dGV4KSB7 fQorLSAgICAgICAgd2xfZXZlbnRfcXVldWUgKnF1ZXVlOworLSAgICAgICAgUU11dGV4ICptdXRl eDsKKy0gICAgfTsKKy0KKyAgICAgUVdheWxhbmREaXNwbGF5KFFXYXlsYW5kSW50ZWdyYXRpb24g KndheWxhbmRJbnRlZ3JhdGlvbik7CisgICAgIH5RV2F5bGFuZERpc3BsYXkodm9pZCkgb3ZlcnJp ZGU7CisgCisrICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworKworICNpZiBRVF9DT05GSUcoeGtiY29t bW9uKQorICAgICBzdHJ1Y3QgeGtiX2NvbnRleHQgKnhrYkNvbnRleHQoKSBjb25zdCB7IHJldHVy biBtWGtiQ29udGV4dC5nZXQoKTsgfQorICNlbmRpZgorQEAgLTIxMCwxMSArMjA3LDExIEBAIHB1 YmxpYzoKKyAgICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZElucHV0 RGV2aWNlICppbnB1dERldmljZSk7CisgICAgIHZvaWQgaGFuZGxlV2luZG93RGVzdHJveWVkKFFX YXlsYW5kV2luZG93ICp3aW5kb3cpOworIAorLSAgICB3bF9ldmVudF9xdWV1ZSAqY3JlYXRlRXZl bnRRdWV1ZSgpOworLSAgICBGcmFtZVF1ZXVlIGNyZWF0ZUZyYW1lUXVldWUoKTsKKy0gICAgdm9p ZCBkZXN0cm95RnJhbWVRdWV1ZShjb25zdCBGcmFtZVF1ZXVlICZxKTsKKy0gICAgdm9pZCBkaXNw YXRjaFF1ZXVlV2hpbGUod2xfZXZlbnRfcXVldWUgKnF1ZXVlLCBzdGQ6OmZ1bmN0aW9uPGJvb2wo KT4gY29uZGl0aW9uLCBpbnQgdGltZW91dCA9IC0xKTsKKysgICAgd2xfZXZlbnRfcXVldWUgKmZy YW1lRXZlbnRRdWV1ZSgpIHsgcmV0dXJuIG1fZnJhbWVFdmVudFF1ZXVlOyB9OworKworKyAgICBi b29sIGlzS2V5Ym9hcmRBdmFpbGFibGUoKSBjb25zdDsKKyAKKysgICAgdm9pZCBpbml0RXZlbnRU aHJlYWQoKTsKKyBwdWJsaWMgc2xvdHM6CisgICAgIHZvaWQgYmxvY2tpbmdSZWFkRXZlbnRzKCk7 CisgICAgIHZvaWQgZmx1c2hSZXF1ZXN0cygpOworQEAgLTIzNyw2ICsyMzQsOSBAQCBwcml2YXRl OgorICAgICB9OworIAorICAgICBzdHJ1Y3Qgd2xfZGlzcGxheSAqbURpc3BsYXkgPSBudWxscHRy OworKyAgICBRU2NvcGVkUG9pbnRlcjxFdmVudFRocmVhZD4gbV9ldmVudFRocmVhZDsKKysgICAg d2xfZXZlbnRfcXVldWUgKm1fZnJhbWVFdmVudFF1ZXVlID0gbnVsbHB0cjsKKysgICAgUVNjb3Bl ZFBvaW50ZXI8RXZlbnRUaHJlYWQ+IG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkOworICAgICBRdFdh eWxhbmQ6OndsX2NvbXBvc2l0b3IgbUNvbXBvc2l0b3I7CisgICAgIFFTY29wZWRQb2ludGVyPFFX YXlsYW5kU2htPiBtU2htOworICAgICBRTGlzdDxRV2F5bGFuZFNjcmVlbiAqPiBtV2FpdGluZ1Nj cmVlbnM7CitAQCAtMjczLDExICsyNzMsOSBAQCBwcml2YXRlOgorICAgICBRV2F5bGFuZElucHV0 RGV2aWNlICptTGFzdElucHV0RGV2aWNlID0gbnVsbHB0cjsKKyAgICAgUVBvaW50ZXI8UVdheWxh bmRXaW5kb3c+IG1MYXN0SW5wdXRXaW5kb3c7CisgICAgIFFQb2ludGVyPFFXYXlsYW5kV2luZG93 PiBtTGFzdEtleWJvYXJkRm9jdXM7CistICAgIFFWZWN0b3I8UVdheWxhbmRXaW5kb3cgKj4gbUFj dGl2ZVdpbmRvd3M7CistICAgIFFWZWN0b3I8RnJhbWVRdWV1ZT4gbUV4dGVybmFsUXVldWVzOwor KyAgICBRTGlzdDxRV2F5bGFuZFdpbmRvdyAqPiBtQWN0aXZlV2luZG93czsKKyAgICAgc3RydWN0 IHdsX2NhbGxiYWNrICptU3luY0NhbGxiYWNrID0gbnVsbHB0cjsKKyAgICAgc3RhdGljIGNvbnN0 IHdsX2NhbGxiYWNrX2xpc3RlbmVyIHN5bmNDYWxsYmFja0xpc3RlbmVyOworLSAgICBRUmVhZFdy aXRlTG9jayBtX2ZyYW1lUXVldWVMb2NrOworIAorICAgICBib29sIG1DbGllbnRTaWRlSW5wdXRD b250ZXh0UmVxdWVzdGVkID0gIVFQbGF0Zm9ybUlucHV0Q29udGV4dEZhY3Rvcnk6OnJlcXVlc3Rl ZCgpLmlzTnVsbCgpOworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZG5kLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kLmNwcAoraW5kZXgg NjUzNWFhMTYuLjdjNTNmNWZhIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkbmQuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZC5jcHAK K0BAIC02Niw3ICs2Niw3IEBAIHZvaWQgUVdheWxhbmREcmFnOjpzdGFydERyYWcoKQorIHsKKyAg ICAgUUJhc2ljRHJhZzo6c3RhcnREcmFnKCk7CisgICAgIFFXYXlsYW5kV2luZG93ICppY29uID0g c3RhdGljX2Nhc3Q8UVdheWxhbmRXaW5kb3cgKj4oc2hhcGVkUGl4bWFwV2luZG93KCktPmhhbmRs ZSgpKTsKKy0gICAgaWYgKG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPmRhdGFEZXZp Y2UoKS0+c3RhcnREcmFnKGRyYWcoKS0+bWltZURhdGEoKSwgaWNvbikpIHsKKysgICAgaWYgKG1f ZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPmRhdGFEZXZpY2UoKS0+c3RhcnREcmFnKGRy YWcoKS0+bWltZURhdGEoKSwgZHJhZygpLT5zdXBwb3J0ZWRBY3Rpb25zKCksIGljb24pKSB7Cisg ICAgICAgICBpY29uLT5hZGRBdHRhY2hPZmZzZXQoLWRyYWcoKS0+aG90U3BvdCgpKTsKKyAgICAg fSBlbHNlIHsKKyAgICAgICAgIC8vIENhbmNlbGxpbmcgaW1tZWRpYXRlbHkgZG9lcyBub3Qgd29y aywgc2luY2UgdGhlIGV2ZW50IGxvb3AgZm9yIFFEcmFnOjpleGVjIGlzIHN0YXJ0ZWQKK0BAIC04 MCw2ICs4MCw5IEBAIHZvaWQgUVdheWxhbmREcmFnOjpjYW5jZWwoKQorICAgICBRQmFzaWNEcmFn OjpjYW5jZWwoKTsKKyAKKyAgICAgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+ZGF0 YURldmljZSgpLT5jYW5jZWxEcmFnKCk7CisrCisrICAgIGlmIChkcmFnKCkpCisrICAgICAgICBk cmFnKCktPmRlbGV0ZUxhdGVyKCk7CisgfQorIAorIHZvaWQgUVdheWxhbmREcmFnOjptb3ZlKGNv bnN0IFFQb2ludCAmZ2xvYmFsUG9zLCBRdDo6TW91c2VCdXR0b25zIGIsIFF0OjpLZXlib2FyZE1v ZGlmaWVycyBtb2RzKQorQEAgLTEwMywzMyArMTA2LDQxIEBAIHZvaWQgUVdheWxhbmREcmFnOjpl bmREcmFnKCkKKyAgICAgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+aGFuZGxlRW5k RHJhZygpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kRHJhZzo6dXBkYXRlVGFyZ2V0KGNvbnN0IFFT dHJpbmcgJm1pbWVUeXBlKQorK3ZvaWQgUVdheWxhbmREcmFnOjpzZXRSZXNwb25zZShib29sIGFj Y2VwdGVkKQorIHsKKy0gICAgc2V0Q2FuRHJvcCghbWltZVR5cGUuaXNFbXB0eSgpKTsKKy0KKy0g ICAgaWYgKGNhbkRyb3AoKSkgeworLSAgICAgICAgdXBkYXRlQ3Vyc29yKGRlZmF1bHRBY3Rpb24o ZHJhZygpLT5zdXBwb3J0ZWRBY3Rpb25zKCksIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNl KCktPm1vZGlmaWVycygpKSk7CistICAgIH0gZWxzZSB7CistICAgICAgICB1cGRhdGVDdXJzb3Io UXQ6Oklnbm9yZUFjdGlvbik7CistICAgIH0KKysgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBm b3Igb2xkIERhdGFEZXZpY2VzIHdoZXJlIHRoZSBkcmFnIGFjdGlvbiBpcyBub3QgY29tbXVuaWNh dGVkCisrICAgIFF0OjpEcm9wQWN0aW9uIGFjdGlvbiA9IGRlZmF1bHRBY3Rpb24oZHJhZygpLT5z dXBwb3J0ZWRBY3Rpb25zKCksIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPm1vZGlm aWVycygpKTsKKysgICAgc2V0UmVzcG9uc2UoUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UoYWNjZXB0 ZWQsIGFjdGlvbikpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kRHJhZzo6c2V0UmVzcG9uc2UoY29u c3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlKQorK3ZvaWQgUVdheWxhbmREcmFn OjpzZXRSZXNwb25zZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpCisg eworICAgICBzZXRDYW5Ecm9wKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSk7CisgCisgICAgIGlmIChj YW5Ecm9wKCkpIHsKKy0gICAgICAgIHVwZGF0ZUN1cnNvcihkZWZhdWx0QWN0aW9uKGRyYWcoKS0+ c3VwcG9ydGVkQWN0aW9ucygpLCBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5tb2Rp ZmllcnMoKSkpOworKyAgICAgICAgdXBkYXRlQ3Vyc29yKHJlc3BvbnNlLmFjY2VwdGVkQWN0aW9u KCkpOworICAgICB9IGVsc2UgeworICAgICAgICAgdXBkYXRlQ3Vyc29yKFF0OjpJZ25vcmVBY3Rp b24pOworICAgICB9CisgfQorIAorLXZvaWQgUVdheWxhbmREcmFnOjpmaW5pc2hEcmFnKGNvbnN0 IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSkKKyt2b2lkIFFXYXlsYW5kRHJhZzo6 c2V0RHJvcFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSkK KyB7CisgICAgIHNldEV4ZWN1dGVkRHJvcEFjdGlvbihyZXNwb25zZS5hY2NlcHRlZEFjdGlvbigp KTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZERyYWc6OmZpbmlzaERyYWcoKQorK3sKKyAgICAgUUtl eUV2ZW50IGV2ZW50KFFFdmVudDo6S2V5UHJlc3MsIFF0OjpLZXlfRXNjYXBlLCBRdDo6Tm9Nb2Rp Zmllcik7CisgICAgIGV2ZW50RmlsdGVyKHNoYXBlZFBpeG1hcFdpbmRvdygpLCAmZXZlbnQpOwor KworKyAgICBpZiAoZHJhZygpKQorKyAgICAgICAgZHJhZygpLT5kZWxldGVMYXRlcigpOworK30K KysKKytib29sIFFXYXlsYW5kRHJhZzo6b3duc0RyYWdPYmplY3QoKSBjb25zdAorK3sKKysgICAg cmV0dXJuIHRydWU7CisgfQorIAorIH0KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRuZF9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZF9wLmgK K2luZGV4IDQ3NGZlMmFiLi40NmY2MjlhYyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZG5kX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRk bmRfcC5oCitAQCAtNzEsOSArNzEsMTAgQEAgcHVibGljOgorICAgICBRV2F5bGFuZERyYWcoUVdh eWxhbmREaXNwbGF5ICpkaXNwbGF5KTsKKyAgICAgflFXYXlsYW5kRHJhZygpIG92ZXJyaWRlOwor IAorLSAgICB2b2lkIHVwZGF0ZVRhcmdldChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSk7CistICAg IHZvaWQgc2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNl KTsKKy0gICAgdm9pZCBmaW5pc2hEcmFnKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZy ZXNwb25zZSk7CisrICAgIHZvaWQgc2V0UmVzcG9uc2UoYm9vbCBhY2NlcHRlZCk7CisrICAgIHZv aWQgc2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKTsK KysgICAgdm9pZCBzZXREcm9wUmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2Ug JnJlc3BvbnNlKTsKKysgICAgdm9pZCBmaW5pc2hEcmFnKCk7CisgCisgcHJvdGVjdGVkOgorICAg ICB2b2lkIHN0YXJ0RHJhZygpIG92ZXJyaWRlOworQEAgLTgyLDYgKzgzLDcgQEAgcHJvdGVjdGVk OgorICAgICB2b2lkIGRyb3AoY29uc3QgUVBvaW50ICZnbG9iYWxQb3MsIFF0OjpNb3VzZUJ1dHRv bnMgYiwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZHMpIG92ZXJyaWRlOworICAgICB2b2lkIGVu ZERyYWcoKSBvdmVycmlkZTsKKyAKKysgICAgYm9vbCBvd25zRHJhZ09iamVjdCgpIGNvbnN0IG92 ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5kRGlzcGxheSAqbV9kaXNwbGF5ID0g bnVsbHB0cjsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGlucHV0 ZGV2aWNlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5wdXRkZXZpY2UuY3Bw CitpbmRleCA2MTNmZTg2Mi4uNGI5MGRlODQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGlucHV0ZGV2aWNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRpbnB1dGRldmljZS5jcHAKK0BAIC02ODUsNiArNjg1LDExIEBAIHB1YmxpYzoKKyAK KyB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OlBvaW50ZXI6OnBvaW50ZXJfbGVhdmUodWludDMy X3QgdGltZSwgc3RydWN0IHdsX3N1cmZhY2UgKnN1cmZhY2UpCisgeworKyAgICBpbnZhbGlkYXRl Rm9jdXMoKTsKKysgICAgbUJ1dHRvbnMgPSBRdDo6Tm9CdXR0b247CisrCisrICAgIG1QYXJlbnQt Pm1UaW1lID0gdGltZTsKKysKKyAgICAgLy8gVGhlIGV2ZW50IG1heSBhcnJpdmUgYWZ0ZXIgZGVz dHJveWluZyB0aGUgd2luZG93LCBpbmRpY2F0ZWQgYnkKKyAgICAgLy8gYSBudWxsIHN1cmZhY2Uu CisgICAgIGlmICghc3VyZmFjZSkKK0BAIC02OTYsMTEgKzcwMSw2IEBAIHZvaWQgUVdheWxhbmRJ bnB1dERldmljZTo6UG9pbnRlcjo6cG9pbnRlcl9sZWF2ZSh1aW50MzJfdCB0aW1lLCBzdHJ1Y3Qg d2xfc3VyZmFjCisgCisgICAgIGlmICghUVdheWxhbmRXaW5kb3c6Om1vdXNlR3JhYigpKQorICAg ICAgICAgc2V0RnJhbWVFdmVudChuZXcgTGVhdmVFdmVudCh3aW5kb3csIG1TdXJmYWNlUG9zLCBt R2xvYmFsUG9zKSk7CistCistICAgIGludmFsaWRhdGVGb2N1cygpOworLSAgICBtQnV0dG9ucyA9 IFF0OjpOb0J1dHRvbjsKKy0KKy0gICAgbVBhcmVudC0+bVRpbWUgPSB0aW1lOworIH0KKyAKKyBj bGFzcyBNb3Rpb25FdmVudCA6IHB1YmxpYyBRV2F5bGFuZFBvaW50ZXJFdmVudAorQEAgLTEzMDAs MTQgKzEzMDAsNiBAQCB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OktleWJvYXJkOjpoYW5kbGVG b2N1c0Rlc3Ryb3llZCgpCisgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpLZXlib2FyZDo6aGFu ZGxlRm9jdXNMb3N0KCkKKyB7CisgICAgIG1Gb2N1cyA9IG51bGxwdHI7CistI2lmIFFUX0NPTkZJ RyhjbGlwYm9hcmQpCistICAgIGlmIChhdXRvICpkYXRhRGV2aWNlID0gbVBhcmVudC0+ZGF0YURl dmljZSgpKQorLSAgICAgICAgZGF0YURldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9mZmVyKCk7 CistI2VuZGlmCistI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3NlbGVjdGlv bikKKy0gICAgaWYgKGF1dG8gKmRldmljZSA9IG1QYXJlbnQtPnByaW1hcnlTZWxlY3Rpb25EZXZp Y2UoKSkKKy0gICAgICAgIGRldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9mZmVyKCk7CistI2Vu ZGlmCisgICAgIG1QYXJlbnQtPm1RRGlzcGxheS0+aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQo bVBhcmVudCk7CisgICAgIG1SZXBlYXRUaW1lci5zdG9wKCk7CisgfQorQEAgLTEzOTYsNiArMTM4 OCw3IEBAIHZvaWQgUVdheWxhbmRJbnB1dERldmljZTo6VG91Y2g6OnRvdWNoX2NhbmNlbCgpCisg ICAgIGlmICh0b3VjaEV4dCkKKyAgICAgICAgIHRvdWNoRXh0LT50b3VjaENhbmNlbGVkKCk7Cisg CisrICAgIG1Gb2N1cyA9IG51bGxwdHI7CisgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6Omhh bmRsZVRvdWNoQ2FuY2VsRXZlbnQobnVsbHB0ciwgbVBhcmVudC0+bVRvdWNoRGV2aWNlKTsKKyB9 CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlv bi5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uLmNwcAoraW5k ZXggYzUzY2NiNzguLjU0ODYxNjAwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kaW50ZWdyYXRpb24uY3BwCitAQCAtMTI1LDYgKzEyNSw5IEBAIFFXYXlsYW5kSW50ZWdyYXRp b246OlFXYXlsYW5kSW50ZWdyYXRpb24oKQorICNlbmRpZgorIAorICAgICByZWNvbmZpZ3VyZUlu cHV0Q29udGV4dCgpOworKworKyAgICBRV2F5bGFuZFdpbmRvdzo6Zml4ZWRUb3BsZXZlbFBvc2l0 aW9ucyA9CisrICAgICAgICAgICAgIXFFbnZpcm9ubWVudFZhcmlhYmxlSXNTZXQoIlFUX1dBWUxB TkRfRElTQUJMRV9GSVhFRF9QT1NJVElPTlMiKTsKKyB9CisgCisgUVdheWxhbmRJbnRlZ3JhdGlv bjo6flFXYXlsYW5kSW50ZWdyYXRpb24oKQorQEAgLTE5MiwxNCArMTk1LDE4IEBAIFFBYnN0cmFj dEV2ZW50RGlzcGF0Y2hlciAqUVdheWxhbmRJbnRlZ3JhdGlvbjo6Y3JlYXRlRXZlbnREaXNwYXRj aGVyKCkgY29uc3QKKyAKKyB2b2lkIFFXYXlsYW5kSW50ZWdyYXRpb246OmluaXRpYWxpemUoKQor IHsKKysgICAgbURpc3BsYXktPmluaXRFdmVudFRocmVhZCgpOworKworKyAgICAvLyBDYWxsIGFm dGVyIGV2ZW50RGlzcGF0Y2hlciBpcyBmdWxseSBjb25uZWN0ZWQsIGZvciBRV2F5bGFuZERpc3Bs YXk6OmZvcmNlUm91bmRUcmlwKCkKKysgICAgbURpc3BsYXktPmluaXRpYWxpemUoKTsKKysKKysg ICAgLy8gQnV0IHRoZSBhYm91dFRvQmxvY2soKSBhbmQgYXdha2UoKSBzaG91bGQgYmUgY29ubmVj dGVkIGFmdGVyIGluaXRpYWxpemVQbGF0Zm9ybSgpLgorKyAgICAvLyBPdGhlcndpc2UgdGhlIGNv bm5lY3RlZCBmbHVzaFJlcXVlc3RzKCkgbWF5IGNvbnN1bWVzIHVwIGFsbCBldmVudHMgYmVmb3Jl IHByb2Nlc3NFdmVudHMgc3RhcnRzIHRvIHdhaXQsCisrICAgIC8vIHNvIHRoYXQgcHJvY2Vzc0V2 ZW50cyhRRXZlbnRMb29wOjpXYWl0Rm9yTW9yZUV2ZW50cykgbWF5IGJlIGJsb2NrZWQgaW4gdGhl IGZvcmNlUm91bmRUcmlwKCkuCisgICAgIFFBYnN0cmFjdEV2ZW50RGlzcGF0Y2hlciAqZGlzcGF0 Y2hlciA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OmV2ZW50RGlzcGF0Y2hlcjsKKyAgICAgUU9i amVjdDo6Y29ubmVjdChkaXNwYXRjaGVyLCBTSUdOQUwoYWJvdXRUb0Jsb2NrKCkpLCBtRGlzcGxh eS5kYXRhKCksIFNMT1QoZmx1c2hSZXF1ZXN0cygpKSk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3Qo ZGlzcGF0Y2hlciwgU0lHTkFMKGF3YWtlKCkpLCBtRGlzcGxheS5kYXRhKCksIFNMT1QoZmx1c2hS ZXF1ZXN0cygpKSk7CisgCistICAgIGludCBmZCA9IHdsX2Rpc3BsYXlfZ2V0X2ZkKG1EaXNwbGF5 LT53bF9kaXNwbGF5KCkpOworLSAgICBRU29ja2V0Tm90aWZpZXIgKnNuID0gbmV3IFFTb2NrZXRO b3RpZmllcihmZCwgUVNvY2tldE5vdGlmaWVyOjpSZWFkLCBtRGlzcGxheS5kYXRhKCkpOworLSAg ICBRT2JqZWN0Ojpjb25uZWN0KHNuLCBTSUdOQUwoYWN0aXZhdGVkKFFTb2NrZXREZXNjcmlwdG9y KSksIG1EaXNwbGF5LmRhdGEoKSwgU0xPVChmbHVzaFJlcXVlc3RzKCkpKTsKKy0KKyAgICAgLy8g UXQgZG9lcyBub3Qgc3VwcG9ydCBydW5uaW5nIHdpdGggbm8gc2NyZWVucworICAgICBtRGlzcGxh eS0+ZW5zdXJlU2NyZWVuKCk7CisgfQorQEAgLTI2Miw2ICsyNjksMTQgQEAgUVdheWxhbmREaXNw bGF5ICpRV2F5bGFuZEludGVncmF0aW9uOjpkaXNwbGF5KCkgY29uc3QKKyAgICAgcmV0dXJuIG1E aXNwbGF5LmRhdGEoKTsKKyB9CisgCisrUXQ6OktleWJvYXJkTW9kaWZpZXJzIFFXYXlsYW5kSW50 ZWdyYXRpb246OnF1ZXJ5S2V5Ym9hcmRNb2RpZmllcnMoKSBjb25zdAorK3sKKysgICAgaWYgKGF1 dG8gKnNlYXQgPSBtRGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCkpIHsKKysgICAgICAgIHJl dHVybiBzZWF0LT5tb2RpZmllcnMoKTsKKysgICAgfQorKyAgICByZXR1cm4gUXQ6Ok5vTW9kaWZp ZXI7CisrfQorKworIFFMaXN0PGludD4gUVdheWxhbmRJbnRlZ3JhdGlvbjo6cG9zc2libGVLZXlz KGNvbnN0IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0CisgeworICAgICBpZiAoYXV0byAqc2VhdCA9 IG1EaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKSkKK0BAIC00NzksNyArNDk0LDcgQEAgdm9p ZCBRV2F5bGFuZEludGVncmF0aW9uOjpyZWNvbmZpZ3VyZUlucHV0Q29udGV4dCgpCisgICAgIH0K KyAjZW5kaWYKKyAKKy0gICAgcUNEZWJ1ZyhsY1FwYVdheWxhbmQpIDw8ICJ1c2luZyBpbnB1dCBt ZXRob2Q6IiA8PCBpbnB1dENvbnRleHQoKS0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKTsKKysg ICAgcUNEZWJ1ZyhsY1FwYVdheWxhbmQpIDw8ICJ1c2luZyBpbnB1dCBtZXRob2Q6IiA8PCAoaW5w dXRDb250ZXh0KCkgPyBpbnB1dENvbnRleHQoKS0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSA6 ICI8bm9uZT4iKTsKKyB9CisgCisgUVdheWxhbmRTaGVsbEludGVncmF0aW9uICpRV2F5bGFuZElu dGVncmF0aW9uOjpjcmVhdGVTaGVsbEludGVncmF0aW9uKGNvbnN0IFFTdHJpbmcgJmludGVncmF0 aW9uTmFtZSkKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVn cmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb25fcC5o CitpbmRleCBmZjcwYWUyNS4uNzNiODA2NTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRpbnRlZ3JhdGlvbl9wLmgKK0BAIC0xMDcsNiArMTA3LDggQEAgcHVibGljOgorIAor ICAgICBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkoKSBjb25zdDsKKyAKKysgICAgUXQ6OktleWJv YXJkTW9kaWZpZXJzIHF1ZXJ5S2V5Ym9hcmRNb2RpZmllcnMoKSBjb25zdCBvdmVycmlkZTsKKysK KyAgICAgUUxpc3Q8aW50PiBwb3NzaWJsZUtleXMoY29uc3QgUUtleUV2ZW50ICpldmVudCkgY29u c3Qgb3ZlcnJpZGU7CisgCisgICAgIFFTdHJpbmdMaXN0IHRoZW1lTmFtZXMoKSBjb25zdCBvdmVy cmlkZTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHByaW1hcnlz ZWxlY3Rpb252MS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHByaW1hcnlzZWxl Y3Rpb252MS5jcHAKK2luZGV4IDgzMmY5Njc4Li5lYTUwODc3MSAxMDA2NDQKKy0tLSBhL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYxLmNwcAorKysrIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRwcmltYXJ5c2VsZWN0aW9udjEuY3BwCitAQCAtNTQs MTEgKzU0LDYgQEAgUVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlTWFuYWdlclYxOjpRV2F5 bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjEKKyAgICAgOiB6d3BfcHJpbWFyeV9z ZWxlY3Rpb25fZGV2aWNlX21hbmFnZXJfdjEoZGlzcGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIHFN aW4odmVyc2lvbiwgdWludCgxKSkpCisgICAgICwgbV9kaXNwbGF5KGRpc3BsYXkpCisgeworLSAg ICAvLyBDcmVhdGUgZGV2aWNlcyBmb3IgYWxsIHNlYXRzLgorLSAgICAvLyBUaGlzIG9ubHkgd29y a3MgaWYgd2UgZ2V0IHRoZSBnbG9iYWwgYmVmb3JlIGFsbCBkZXZpY2VzCistICAgIGNvbnN0IGF1 dG8gc2VhdHMgPSBtX2Rpc3BsYXktPmlucHV0RGV2aWNlcygpOworLSAgICBmb3IgKGF1dG8gKnNl YXQgOiBzZWF0cykKKy0gICAgICAgIHNlYXQtPnNldFByaW1hcnlTZWxlY3Rpb25EZXZpY2UoY3Jl YXRlRGV2aWNlKHNlYXQpKTsKKyB9CisgCisgUVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNl VjEgKlFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZU1hbmFnZXJWMTo6Y3JlYXRlRGV2aWNl KFFXYXlsYW5kSW5wdXREZXZpY2UgKnNlYXQpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRzY3JlZW4uY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRz Y3JlZW4uY3BwCitpbmRleCA2Y2IzMzdkZS4uNTUzN2RhZmQgMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kc2NyZWVuLmNwcAorQEAgLTYwLDcgKzYwLDcgQEAgUVdheWxhbmRYZGdPdXRw dXRNYW5hZ2VyVjE6OlFXYXlsYW5kWGRnT3V0cHV0TWFuYWdlclYxKFFXYXlsYW5kRGlzcGxheSog ZGlzcGxheSwKKyB9CisgCisgUVdheWxhbmRTY3JlZW46OlFXYXlsYW5kU2NyZWVuKFFXYXlsYW5k RGlzcGxheSAqd2F5bGFuZERpc3BsYXksIGludCB2ZXJzaW9uLCB1aW50MzJfdCBpZCkKKy0gICAg OiBRdFdheWxhbmQ6OndsX291dHB1dCh3YXlsYW5kRGlzcGxheS0+d2xfcmVnaXN0cnkoKSwgaWQs IHFNaW4odmVyc2lvbiwgMikpCisrICAgIDogUXRXYXlsYW5kOjp3bF9vdXRwdXQod2F5bGFuZERp c3BsYXktPndsX3JlZ2lzdHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIDMpKQorICAgICAsIG1fb3V0 cHV0SWQoaWQpCisgICAgICwgbVdheWxhbmREaXNwbGF5KHdheWxhbmREaXNwbGF5KQorICAgICAs IG1PdXRwdXROYW1lKFFTdHJpbmdMaXRlcmFsKCJTY3JlZW4lMSIpLmFyZyhpZCkpCitAQCAtNzIs NyArNzIsNyBAQCBRV2F5bGFuZFNjcmVlbjo6UVdheWxhbmRTY3JlZW4oUVdheWxhbmREaXNwbGF5 ICp3YXlsYW5kRGlzcGxheSwgaW50IHZlcnNpb24sIHVpbgorICAgICAgICAgcUNXYXJuaW5nKGxj UXBhV2F5bGFuZCkgPDwgIndsX291dHB1dCBkb25lIGV2ZW50IG5vdCBzdXBwb3J0ZWQgYnkgY29t cG9zaXRvciwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiUVNjcmVlbiBt YXkgbm90IHdvcmsgY29ycmVjdGx5IjsKKyAgICAgICAgIG1XYXlsYW5kRGlzcGxheS0+Zm9yY2VS b3VuZFRyaXAoKTsgLy8gR2l2ZSB0aGUgY29tcG9zaXRvciBhIGNoYW5jZSB0byBzZW5kIGdlb21l dHJ5IGV0Yy4KKy0gICAgICAgIG1PdXRwdXREb25lID0gdHJ1ZTsgLy8gRmFrZSB0aGUgZG9uZSBl dmVudAorKyAgICAgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBPdXRwdXREb25lRXZlbnQ7IC8vIEZh a2UgdGhlIGRvbmUgZXZlbnQKKyAgICAgICAgIG1heWJlSW5pdGlhbGl6ZSgpOworICAgICB9Cisg fQorQEAgLTgxLDE2ICs4MSwyOSBAQCBRV2F5bGFuZFNjcmVlbjo6flFXYXlsYW5kU2NyZWVuKCkK KyB7CisgICAgIGlmICh6eGRnX291dHB1dF92MTo6aXNJbml0aWFsaXplZCgpKQorICAgICAgICAg enhkZ19vdXRwdXRfdjE6OmRlc3Ryb3koKTsKKysgICAgaWYgKHdsX291dHB1dDo6aXNJbml0aWFs aXplZCgpICYmIHdsX291dHB1dF9nZXRfdmVyc2lvbih3bF9vdXRwdXQ6Om9iamVjdCgpKSA+PSBX TF9PVVRQVVRfUkVMRUFTRV9TSU5DRV9WRVJTSU9OKQorKyAgICAgICAgd2xfb3V0cHV0OjpyZWxl YXNlKCk7CisrfQorKworK3VpbnQgUVdheWxhbmRTY3JlZW46OnJlcXVpcmVkRXZlbnRzKCkgY29u c3QKKyt7CisrICAgIHVpbnQgcmV0ID0gT3V0cHV0RG9uZUV2ZW50OworKworKyAgICBpZiAobVdh eWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCkpIHsKKysgICAgICAgIHJldCB8PSBYZGdP dXRwdXROYW1lRXZlbnQ7CisrCisrICAgICAgICBpZiAobVdheWxhbmREaXNwbGF5LT54ZGdPdXRw dXRNYW5hZ2VyKCktPnZlcnNpb24oKSA8IDMpCisrICAgICAgICAgICAgcmV0IHw9IFhkZ091dHB1 dERvbmVFdmVudDsKKysgICAgfQorKyAgICByZXR1cm4gcmV0OworIH0KKyAKKyB2b2lkIFFXYXls YW5kU2NyZWVuOjptYXliZUluaXRpYWxpemUoKQorIHsKKyAgICAgUV9BU1NFUlQoIW1Jbml0aWFs aXplZCk7CisgCistICAgIGlmICghbU91dHB1dERvbmUpCistICAgICAgICByZXR1cm47CistCist ICAgIGlmIChtV2F5bGFuZERpc3BsYXktPnhkZ091dHB1dE1hbmFnZXIoKSAmJiAhbVhkZ091dHB1 dERvbmUpCisrICAgIGNvbnN0IHVpbnQgcmVxdWlyZWRFdmVudHMgPSB0aGlzLT5yZXF1aXJlZEV2 ZW50cygpOworKyAgICBpZiAoKG1Qcm9jZXNzZWRFdmVudHMgJiByZXF1aXJlZEV2ZW50cykgIT0g cmVxdWlyZWRFdmVudHMpCisgICAgICAgICByZXR1cm47CisgCisgICAgIG1Jbml0aWFsaXplZCA9 IHRydWU7CitAQCAtMjc2LDkgKzI4OSw4IEBAIHZvaWQgUVdheWxhbmRTY3JlZW46Om91dHB1dF9z Y2FsZShpbnQzMl90IGZhY3RvcikKKyAKKyB2b2lkIFFXYXlsYW5kU2NyZWVuOjpvdXRwdXRfZG9u ZSgpCisgeworLSAgICBtT3V0cHV0RG9uZSA9IHRydWU7CistICAgIGlmICh6eGRnX291dHB1dF92 MTo6aXNJbml0aWFsaXplZCgpICYmIG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigp LT52ZXJzaW9uKCkgPj0gMykKKy0gICAgICAgIG1YZGdPdXRwdXREb25lID0gdHJ1ZTsKKysgICAg bVByb2Nlc3NlZEV2ZW50cyB8PSBPdXRwdXREb25lRXZlbnQ7CisrCisgICAgIGlmIChtSW5pdGlh bGl6ZWQpIHsKKyAgICAgICAgIHVwZGF0ZU91dHB1dFByb3BlcnRpZXMoKTsKKyAgICAgICAgIGlm ICh6eGRnX291dHB1dF92MTo6aXNJbml0aWFsaXplZCgpKQorQEAgLTMzOSw3ICszNTEsNyBAQCB2 b2lkIFFXYXlsYW5kU2NyZWVuOjp6eGRnX291dHB1dF92MV9kb25lKCkKKyAgICAgaWYgKFFfVU5M SUtFTFkobVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCktPnZlcnNpb24oKSA+PSAz KSkKKyAgICAgICAgIHFXYXJuaW5nKGxjUXBhV2F5bGFuZCkgPDwgInp4ZGdfb3V0cHV0X3YxLmRv bmUgcmVjZWl2ZWQgb24gdmVyc2lvbiAzIG9yIG5ld2VyLCB0aGlzIGlzIG1vc3QgbGlrZWx5IGEg YnVnIGluIHRoZSBjb21wb3NpdG9yIjsKKyAKKy0gICAgbVhkZ091dHB1dERvbmUgPSB0cnVlOwor KyAgICBtUHJvY2Vzc2VkRXZlbnRzIHw9IFhkZ091dHB1dERvbmVFdmVudDsKKyAgICAgaWYgKG1J bml0aWFsaXplZCkKKyAgICAgICAgIHVwZGF0ZVhkZ091dHB1dFByb3BlcnRpZXMoKTsKKyAgICAg ZWxzZQorQEAgLTM0OCw3ICszNjAsMTEgQEAgdm9pZCBRV2F5bGFuZFNjcmVlbjo6enhkZ19vdXRw dXRfdjFfZG9uZSgpCisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6enhkZ19vdXRwdXRfdjFfbmFt ZShjb25zdCBRU3RyaW5nICZuYW1lKQorIHsKKysgICAgaWYgKFFfVU5MSUtFTFkobUluaXRpYWxp emVkKSkKKysgICAgICAgIHFXYXJuaW5nKGxjUXBhV2F5bGFuZCkgPDwgInp4ZGdfb3V0cHV0X3Yx Lm5hbWUgcmVjZWl2ZWQgYWZ0ZXIgb3V0cHV0IGhhcyBiZWVuIGluaXRpYWxpemVkLCB0aGlzIGlz IG1vc3QgbGlrZWx5IGEgYnVnIGluIHRoZSBjb21wb3NpdG9yIjsKKysKKyAgICAgbU91dHB1dE5h bWUgPSBuYW1lOworKyAgICBtUHJvY2Vzc2VkRXZlbnRzIHw9IFhkZ091dHB1dE5hbWVFdmVudDsK KyB9CisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6dXBkYXRlWGRnT3V0cHV0UHJvcGVydGllcygp CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW5fcC5oIGIv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW5fcC5oCitpbmRleCBkZjFjOTRmMi4u MDUwY2ZkYzAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVl bl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuX3AuaAorQEAg LTExNiw2ICsxMTYsMTMgQEAgcHVibGljOgorICAgICBzdGF0aWMgUVdheWxhbmRTY3JlZW4gKmZy b21XbE91dHB1dCg6OndsX291dHB1dCAqb3V0cHV0KTsKKyAKKyBwcml2YXRlOgorKyAgICBlbnVt IEV2ZW50IDogdWludCB7CisrICAgICAgICBYZGdPdXRwdXREb25lRXZlbnQgPSAweDEsCisrICAg ICAgICBPdXRwdXREb25lRXZlbnQgPSAweDIsCisrICAgICAgICBYZGdPdXRwdXROYW1lRXZlbnQg PSAweDQsCisrICAgIH07CisrICAgIHVpbnQgcmVxdWlyZWRFdmVudHMoKSBjb25zdDsKKysKKyAg ICAgdm9pZCBvdXRwdXRfbW9kZSh1aW50MzJfdCBmbGFncywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0 LCBpbnQgcmVmcmVzaCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgb3V0cHV0X2dlb21ldHJ5KGludDMy X3QgeCwgaW50MzJfdCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHdpZHRo LCBpbnQzMl90IGhlaWdodCwKK0BAIC0xNDgsOCArMTU1LDcgQEAgcHJpdmF0ZToKKyAgICAgUVNp emUgbVBoeXNpY2FsU2l6ZTsKKyAgICAgUVN0cmluZyBtT3V0cHV0TmFtZTsKKyAgICAgUXQ6OlNj cmVlbk9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24gPSBRdDo6UHJpbWFyeU9yaWVudGF0aW9uOwor LSAgICBib29sIG1PdXRwdXREb25lID0gZmFsc2U7CistICAgIGJvb2wgbVhkZ091dHB1dERvbmUg PSBmYWxzZTsKKysgICAgdWludCBtUHJvY2Vzc2VkRXZlbnRzID0gMDsKKyAgICAgYm9vbCBtSW5p dGlhbGl6ZWQgPSBmYWxzZTsKKyAKKyAjaWYgUVRfQ09ORklHKGN1cnNvcikKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAgYi9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAKK2luZGV4IGRjN2Zm NjcwLi40MWNmZmRmNyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k c2htYmFja2luZ3N0b3JlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRz aG1iYWNraW5nc3RvcmUuY3BwCitAQCAtNTIsNiArNTIsNyBAQAorIAorICNpbmNsdWRlIDxRdFdh eWxhbmRDbGllbnQvcHJpdmF0ZS93YXlsYW5kLXdheWxhbmQtY2xpZW50LXByb3RvY29sLmg+Cisg CisrI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxz eXMvbW1hbi5oPgorIAorQEAgLTYxLDYgKzYyLDkgQEAKKyAjICBpZm5kZWYgTUZEX0NMT0VYRUMK KyAjICAgIGRlZmluZSBNRkRfQ0xPRVhFQyAgICAgMHgwMDAxVQorICMgIGVuZGlmCisrIyAgaWZu ZGVmIE1GRF9BTExPV19TRUFMSU5HCisrIyAgICBkZWZpbmUgTUZEX0FMTE9XX1NFQUxJTkcgMHgw MDAyVQorKyMgIGVuZGlmCisgI2VuZGlmCisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCitAQCAtNzQs OCArNzgsMTAgQEAgUVdheWxhbmRTaG1CdWZmZXI6OlFXYXlsYW5kU2htQnVmZmVyKFFXYXlsYW5k RGlzcGxheSAqZGlzcGxheSwKKyAgICAgaW50IGFsbG9jID0gc3RyaWRlICogc2l6ZS5oZWlnaHQo KTsKKyAgICAgaW50IGZkID0gLTE7CisgCistI2lmZGVmIFNZU19tZW1mZF9jcmVhdGUKKy0gICAg ZmQgPSBzeXNjYWxsKFNZU19tZW1mZF9jcmVhdGUsICJ3YXlsYW5kLXNobSIsIE1GRF9DTE9FWEVD KTsKKysjaWYgZGVmaW5lZChTWVNfbWVtZmRfY3JlYXRlKSAmJiBkZWZpbmVkKEZfU0VBTF9TRUFM KQorKyAgICBmZCA9IHN5c2NhbGwoU1lTX21lbWZkX2NyZWF0ZSwgIndheWxhbmQtc2htIiwgTUZE X0NMT0VYRUMgfCBNRkRfQUxMT1dfU0VBTElORyk7CisrICAgIGlmIChmZCA+PSAwKQorKyAgICAg ICAgZmNudGwoZmQsIEZfQUREX1NFQUxTLCBGX1NFQUxfU0hSSU5LIHwgRl9TRUFMX1NFQUwpOwor ICNlbmRpZgorIAorICAgICBRU2NvcGVkUG9pbnRlcjxRRmlsZT4gZmlsZVBvaW50ZXI7CitkaWZm IC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3cuY3BwIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3cuY3BwCitpbmRleCBjYjgyODU3YS4uZmIyYzU5 ZGMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvdy5jcHAK KysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNwcAorQEAgLTc2LDcg Kzc2LDYgQEAgUVdheWxhbmRXaW5kb3cgKlFXYXlsYW5kV2luZG93OjptTW91c2VHcmFiID0gbnVs bHB0cjsKKyBRV2F5bGFuZFdpbmRvdzo6UVdheWxhbmRXaW5kb3coUVdpbmRvdyAqd2luZG93LCBR V2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpCisgICAgIDogUVBsYXRmb3JtV2luZG93KHdpbmRvdykK KyAgICAgLCBtRGlzcGxheShkaXNwbGF5KQorLSAgICAsIG1GcmFtZVF1ZXVlKG1EaXNwbGF5LT5j cmVhdGVGcmFtZVF1ZXVlKCkpCisgICAgICwgbVJlc2l6ZUFmdGVyU3dhcChxRW52aXJvbm1lbnRW YXJpYWJsZUlzU2V0KCJRVF9XQVlMQU5EX1JFU0laRV9BRlRFUl9TV0FQIikpCisgeworICAgICB7 CitAQCAtOTUsOSArOTQsNiBAQCBRV2F5bGFuZFdpbmRvdzo6UVdheWxhbmRXaW5kb3coUVdpbmRv dyAqd2luZG93LCBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpCisgCisgUVdheWxhbmRXaW5kb3c6 On5RV2F5bGFuZFdpbmRvdygpCisgeworLSAgICBtRGlzcGxheS0+ZGVzdHJveUZyYW1lUXVldWUo bUZyYW1lUXVldWUpOworLSAgICBtRGlzcGxheS0+aGFuZGxlV2luZG93RGVzdHJveWVkKHRoaXMp OworLQorICAgICBkZWxldGUgbVdpbmRvd0RlY29yYXRpb247CisgCisgICAgIGlmIChtU3VyZmFj ZSkKK0BAIC0yNDMsNiArMjM5LDcgQEAgYm9vbCBRV2F5bGFuZFdpbmRvdzo6c2hvdWxkQ3JlYXRl U3ViU3VyZmFjZSgpIGNvbnN0CisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVzZXQoKQorIHsK KysgICAgY2xvc2VDaGlsZFBvcHVwcygpOworICAgICBkZWxldGUgbVNoZWxsU3VyZmFjZTsKKyAg ICAgbVNoZWxsU3VyZmFjZSA9IG51bGxwdHI7CisgICAgIGRlbGV0ZSBtU3ViU3VyZmFjZVdpbmRv dzsKK0BAIC0yNTUsMTcgKzI1MiwyMiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXNldCgpCisg ICAgICAgICBtU3VyZmFjZS5yZXNldCgpOworICAgICB9CisgCistICAgIGlmIChtRnJhbWVDYWxs YmFjaykgeworLSAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShtRnJhbWVDYWxsYmFjayk7Cist ICAgICAgICBtRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CistICAgIH0KKysgICAgeworKyAgICAg ICAgUU11dGV4TG9ja2VyIGxvY2soJm1GcmFtZVN5bmNNdXRleCk7CisrICAgICAgICBpZiAobUZy YW1lQ2FsbGJhY2spIHsKKysgICAgICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95KG1GcmFtZUNh bGxiYWNrKTsKKysgICAgICAgICAgICBtRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CisrICAgICAg ICB9CisgCistICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmludmFsaWRhdGUoKTsKKy0g ICAgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisrICAgICAgICBtRnJhbWVDYWxs YmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CisrICAgICAgICBtV2FpdGluZ0ZvckZyYW1l Q2FsbGJhY2sgPSBmYWxzZTsKKysgICAgfQorICAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0g ZmFsc2U7CisgCisgICAgIG1NYXNrID0gUVJlZ2lvbigpOworICAgICBtUXVldWVkQnVmZmVyID0g bnVsbHB0cjsKKysKKysgICAgbURpc3BsYXktPmhhbmRsZVdpbmRvd0Rlc3Ryb3llZCh0aGlzKTsK KyB9CisgCisgUVdheWxhbmRXaW5kb3cgKlFXYXlsYW5kV2luZG93Ojpmcm9tV2xTdXJmYWNlKDo6 d2xfc3VyZmFjZSAqc3VyZmFjZSkKK0BAIC0zNTEsMTkgKzM1MywyNSBAQCB2b2lkIFFXYXlsYW5k V2luZG93OjpzZXRHZW9tZXRyeV9oZWxwZXIoY29uc3QgUVJlY3QgJnJlY3QpCisgICAgIH0KKyB9 CisgCistdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3QgJnJlY3Qp Cisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3QgJnIpCisgewor KyAgICBhdXRvIHJlY3QgPSByOworKyAgICBpZiAoZml4ZWRUb3BsZXZlbFBvc2l0aW9ucyAmJiAh UVBsYXRmb3JtV2luZG93OjpwYXJlbnQoKSAmJiB3aW5kb3coKS0+dHlwZSgpICE9IFF0OjpQb3B1 cAorKyAgICAgICAgJiYgd2luZG93KCktPnR5cGUoKSAhPSBRdDo6VG9vbFRpcCkgeworKyAgICAg ICAgcmVjdC5tb3ZlVG8oc2NyZWVuKCktPmdlb21ldHJ5KCkudG9wTGVmdCgpKTsKKysgICAgfQor ICAgICBzZXRHZW9tZXRyeV9oZWxwZXIocmVjdCk7CisgCisgICAgIGlmICh3aW5kb3coKS0+aXNW aXNpYmxlKCkgJiYgcmVjdC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgIGlmIChtV2luZG93RGVjb3Jh dGlvbikKKyAgICAgICAgICAgICBtV2luZG93RGVjb3JhdGlvbi0+dXBkYXRlKCk7CisgCistICAg ICAgICBpZiAobVJlc2l6ZUFmdGVyU3dhcCAmJiB3aW5kb3dUeXBlKCkgPT0gRWdsICYmIG1TZW50 SW5pdGlhbFJlc2l6ZSkKKysgICAgICAgIGlmIChtUmVzaXplQWZ0ZXJTd2FwICYmIHdpbmRvd1R5 cGUoKSA9PSBFZ2wgJiYgbVNlbnRJbml0aWFsUmVzaXplKSB7CisrICAgICAgICAgICAgUU11dGV4 TG9ja2VyIGxvY2soJm1SZXNpemVMb2NrKTsKKyAgICAgICAgICAgICBtUmVzaXplRGlydHkgPSB0 cnVlOworLSAgICAgICAgZWxzZQorKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBRV2lu ZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVHZW9tZXRyeUNoYW5nZSh3aW5kb3coKSwgZ2VvbWV0 cnkoKSk7CistCisrICAgICAgICB9CisgICAgICAgICBtU2VudEluaXRpYWxSZXNpemUgPSB0cnVl OworICAgICB9CisgICAgIFFSZWN0IGV4cG9zZUdlb21ldHJ5KFFQb2ludCgpLCBnZW9tZXRyeSgp LnNpemUoKSk7CitAQCAtMzc0LDcgKzM4Miw3IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdl b21ldHJ5KGNvbnN0IFFSZWN0ICZyZWN0KQorICAgICAgICAgbVNoZWxsU3VyZmFjZS0+c2V0V2lu ZG93R2VvbWV0cnkod2luZG93Q29udGVudEdlb21ldHJ5KCkpOworIAorICAgICBpZiAoaXNPcGFx dWUoKSAmJiBtTWFzay5pc0VtcHR5KCkpCistICAgICAgICBzZXRPcGFxdWVBcmVhKHJlY3QpOwor KyAgICAgICAgc2V0T3BhcXVlQXJlYShRUmVjdChRUG9pbnQoMCwgMCksIHJlY3Quc2l6ZSgpKSk7 CisgfQorIAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlc2l6ZUZyb21BcHBseUNvbmZpZ3VyZShj b25zdCBRU2l6ZSAmc2l6ZVdpdGhNYXJnaW5zLCBjb25zdCBRUG9pbnQgJm9mZnNldCkKK0BAIC0z OTksMjEgKzQwNyw2IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNlbmRFeHBvc2VFdmVudChjb25z dCBRUmVjdCAmcmVjdCkKKyAgICAgbUxhc3RFeHBvc2VHZW9tZXRyeSA9IHJlY3Q7CisgfQorIAor LQorLXN0YXRpYyBRVmVjdG9yPFFQb2ludGVyPFFXYXlsYW5kV2luZG93Pj4gYWN0aXZlUG9wdXBz OworLQorLXZvaWQgUVdheWxhbmRXaW5kb3c6OmNsb3NlUG9wdXBzKFFXYXlsYW5kV2luZG93ICpw YXJlbnQpCisteworLSAgICB3aGlsZSAoIWFjdGl2ZVBvcHVwcy5pc0VtcHR5KCkpIHsKKy0gICAg ICAgIGF1dG8gcG9wdXAgPSBhY3RpdmVQb3B1cHMudGFrZUxhc3QoKTsKKy0gICAgICAgIGlmIChw b3B1cC5pc051bGwoKSkKKy0gICAgICAgICAgICBjb250aW51ZTsKKy0gICAgICAgIGlmIChwb3B1 cC5kYXRhKCkgPT0gcGFyZW50KQorLSAgICAgICAgICAgIHJldHVybjsKKy0gICAgICAgIHBvcHVw LT5yZXNldCgpOworLSAgICB9CistfQorLQorIFFQbGF0Zm9ybVNjcmVlbiAqUVdheWxhbmRXaW5k b3c6OmNhbGN1bGF0ZVNjcmVlbkZyb21TdXJmYWNlRXZlbnRzKCkgY29uc3QKKyB7CisgICAgIFFS ZWFkTG9ja2VyIGxvY2soJm1TdXJmYWNlTG9jayk7CitAQCAtNDMzLDEwICs0MjYsNyBAQCB2b2lk IFFXYXlsYW5kV2luZG93OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKKyAgICAgbGFzdFZpc2li bGUgPSB2aXNpYmxlOworIAorICAgICBpZiAodmlzaWJsZSkgeworLSAgICAgICAgaWYgKHdpbmRv dygpLT50eXBlKCkgPT0gUXQ6OlBvcHVwIHx8IHdpbmRvdygpLT50eXBlKCkgPT0gUXQ6OlRvb2xU aXApCistICAgICAgICAgICAgYWN0aXZlUG9wdXBzIDw8IHRoaXM7CisgICAgICAgICBpbml0V2lu ZG93KCk7CistICAgICAgICBtRGlzcGxheS0+Zmx1c2hSZXF1ZXN0cygpOworIAorICAgICAgICAg c2V0R2VvbWV0cnkod2luZG93R2VvbWV0cnkoKSk7CisgICAgICAgICAvLyBEb24ndCBmbHVzaCB0 aGUgZXZlbnRzIGhlcmUsIG9yIGVsc2UgdGhlIG5ld2x5IHZpc2libGUgd2luZG93IG1heSBzdGFy dCBkcmF3aW5nLCBidXQgc2luY2UKK0BAIC00NDQsNyArNDM0LDYgQEAgdm9pZCBRV2F5bGFuZFdp bmRvdzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCisgICAgICAgICAvLyBRV2F5bGFuZFNobUJh Y2tpbmdTdG9yZTo6YmVnaW5QYWludCgpLgorICAgICB9IGVsc2UgeworICAgICAgICAgc2VuZEV4 cG9zZUV2ZW50KFFSZWN0KCkpOworLSAgICAgICAgY2xvc2VQb3B1cHModGhpcyk7CisgICAgICAg ICByZXNldCgpOworICAgICB9CisgfQorQEAgLTU1NiwxMiArNTQ1LDEyIEBAIHZvaWQgUVdheWxh bmRXaW5kb3c6OnNlbmRSZWN1cnNpdmVFeHBvc2VFdmVudCgpCisgCisgdm9pZCBRV2F5bGFuZFdp bmRvdzo6YXR0YWNoKFFXYXlsYW5kQnVmZmVyICpidWZmZXIsIGludCB4LCBpbnQgeSkKKyB7Cist ICAgIFFfQVNTRVJUKCFidWZmZXItPmNvbW1pdHRlZCgpKTsKKyAgICAgUVJlYWRMb2NrZXIgbG9j a2VyKCZtU3VyZmFjZUxvY2spOworICAgICBpZiAobVN1cmZhY2UgPT0gbnVsbHB0cikKKyAgICAg ICAgIHJldHVybjsKKyAKKyAgICAgaWYgKGJ1ZmZlcikgeworKyAgICAgICAgUV9BU1NFUlQoIWJ1 ZmZlci0+Y29tbWl0dGVkKCkpOworICAgICAgICAgaGFuZGxlVXBkYXRlKCk7CisgICAgICAgICBi dWZmZXItPnNldEJ1c3koKTsKKyAKK0BAIC01ODMsNyArNTcyLDExIEBAIHZvaWQgUVdheWxhbmRX aW5kb3c6OmRhbWFnZShjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgaWYgKG1TdXJmYWNlID09IG51 bGxwdHIpCisgICAgICAgICByZXR1cm47CisgCistICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54 KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworKyAgICBjb25zdCBp bnQgcyA9IHNjYWxlKCk7CisrICAgIGlmIChtRGlzcGxheS0+Y29tcG9zaXRvclZlcnNpb24oKSA+ PSA0KQorKyAgICAgICAgbVN1cmZhY2UtPmRhbWFnZV9idWZmZXIocyAqIHJlY3QueCgpLCBzICog cmVjdC55KCksIHMgKiByZWN0LndpZHRoKCksIHMgKiByZWN0LmhlaWdodCgpKTsKKysgICAgZWxz ZQorKyAgICAgICAgbVN1cmZhY2UtPmRhbWFnZShyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lk dGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgfQorIAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNhZmVD b21taXQoUVdheWxhbmRCdWZmZXIgKmJ1ZmZlciwgY29uc3QgUVJlZ2lvbiAmZGFtYWdlKQorQEAg LTYxOSw4ICs2MTIsMTQgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6Y29tbWl0KFFXYXlsYW5kQnVm ZmVyICpidWZmZXIsIGNvbnN0IFFSZWdpb24gJmRhbWFnZSkKKyAgICAgICAgIHJldHVybjsKKyAK KyAgICAgYXR0YWNoT2Zmc2V0KGJ1ZmZlcik7CistICAgIGZvciAoY29uc3QgUVJlY3QgJnJlY3Q6 IGRhbWFnZSkKKy0gICAgICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54KCksIHJlY3QueSgpLCBy ZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworKyAgICBpZiAobURpc3BsYXktPmNvbXBvc2l0 b3JWZXJzaW9uKCkgPj0gNCkgeworKyAgICAgICAgY29uc3QgaW50IHMgPSBzY2FsZSgpOworKyAg ICAgICAgZm9yIChjb25zdCBRUmVjdCAmcmVjdDogZGFtYWdlKQorKyAgICAgICAgICAgIG1TdXJm YWNlLT5kYW1hZ2VfYnVmZmVyKHMgKiByZWN0LngoKSwgcyAqIHJlY3QueSgpLCBzICogcmVjdC53 aWR0aCgpLCBzICogcmVjdC5oZWlnaHQoKSk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBmb3Ig KGNvbnN0IFFSZWN0ICZyZWN0OiBkYW1hZ2UpCisrICAgICAgICAgICAgbVN1cmZhY2UtPmRhbWFn ZShyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisrICAg IH0KKyAgICAgUV9BU1NFUlQoIWJ1ZmZlci0+Y29tbWl0dGVkKCkpOworICAgICBidWZmZXItPnNl dENvbW1pdHRlZCgpOworICAgICBtU3VyZmFjZS0+Y29tbWl0KCk7CitAQCAtNjM1LDQyICs2MzQs NTMgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6Y29tbWl0KCkKKyAKKyBjb25zdCB3bF9jYWxsYmFj a19saXN0ZW5lciBRV2F5bGFuZFdpbmRvdzo6Y2FsbGJhY2tMaXN0ZW5lciA9IHsKKyAgICAgW10o dm9pZCAqZGF0YSwgd2xfY2FsbGJhY2sgKmNhbGxiYWNrLCB1aW50MzJfdCB0aW1lKSB7CistICAg ICAgICBRX1VOVVNFRChjYWxsYmFjayk7CisgICAgICAgICBRX1VOVVNFRCh0aW1lKTsKKyAgICAg ICAgIGF1dG8gKndpbmRvdyA9IHN0YXRpY19jYXN0PFFXYXlsYW5kV2luZG93Kj4oZGF0YSk7Cist ICAgICAgICB3aW5kb3ctPmhhbmRsZUZyYW1lQ2FsbGJhY2soKTsKKysgICAgICAgIHdpbmRvdy0+ aGFuZGxlRnJhbWVDYWxsYmFjayhjYWxsYmFjayk7CisgICAgIH0KKyB9OworIAorLXZvaWQgUVdh eWxhbmRXaW5kb3c6OmhhbmRsZUZyYW1lQ2FsbGJhY2soKQorK3ZvaWQgUVdheWxhbmRXaW5kb3c6 OmhhbmRsZUZyYW1lQ2FsbGJhY2sod2xfY2FsbGJhY2sqIGNhbGxiYWNrKQorIHsKKysgICAgUU11 dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysgICAgaWYgKCFtRnJhbWVDYWxs YmFjaykgeworKyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUgY2FsbGJhY2sgaXMgYWxyZWFkeSB1 bnNldCBieSBRV2F5bGFuZFdpbmRvdzo6cmVzZXQuCisrICAgICAgICAvLyBUaGUgd2xfY2FsbGJh Y2sgb2JqZWN0IHdpbGwgYmUgZGVzdHJveWVkIHRoZXJlIHRvby4KKysgICAgICAgIHJldHVybjsK KysgICAgfQorKyAgICBRX0FTU0VSVChjYWxsYmFjayA9PSBtRnJhbWVDYWxsYmFjayk7CisrICAg IHdsX2NhbGxiYWNrX2Rlc3Ryb3koY2FsbGJhY2spOworKyAgICBtRnJhbWVDYWxsYmFjayA9IG51 bGxwdHI7CisrCisgICAgIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNlOworICAgICBt RnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CisgCisgICAgIC8vIFRoZSBy ZXN0IGNhbiB3YWl0IHVudGlsIHdlIGNhbiBydW4gaXQgb24gdGhlIGNvcnJlY3QgdGhyZWFkCist ICAgIGlmICghbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSkgeworLSAgICAgICAgYXV0byBkb0hh bmRsZUV4cG9zZSA9IFt0aGlzXSgpIHsKKy0gICAgICAgICAgICBib29sIHdhc0V4cG9zZWQgPSBp c0V4cG9zZWQoKTsKKy0gICAgICAgICAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gZmFsc2U7 CistICAgICAgICAgICAgaWYgKCF3YXNFeHBvc2VkICYmIGlzRXhwb3NlZCgpKSAvLyBEaWQgc2V0 dGluZyBtRnJhbWVDYWxsYmFja1RpbWVkT3V0IG1ha2UgdGhlIHdpbmRvdyBleHBvc2VkPworLSAg ICAgICAgICAgICAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoUVBvaW50KCksIGdlb21ldHJ5KCku c2l6ZSgpKSk7CistICAgICAgICAgICAgaWYgKHdhc0V4cG9zZWQgJiYgaGFzUGVuZGluZ1VwZGF0 ZVJlcXVlc3QoKSkKKy0gICAgICAgICAgICAgICAgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKTsKKy0K Ky0gICAgICAgICAgICBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gZmFsc2U7CistICAgICAg ICB9OworKyAgICBhdXRvIGRvSGFuZGxlRXhwb3NlID0gW3RoaXNdKCkgeworKyAgICAgICAgbVdh aXRpbmdGb3JVcGRhdGVEZWxpdmVyeS5zdG9yZVJlbGVhc2UoZmFsc2UpOworKyAgICAgICAgYm9v bCB3YXNFeHBvc2VkID0gaXNFeHBvc2VkKCk7CisrICAgICAgICBtRnJhbWVDYWxsYmFja1RpbWVk T3V0ID0gZmFsc2U7CisrICAgICAgICBpZiAoIXdhc0V4cG9zZWQgJiYgaXNFeHBvc2VkKCkpIC8v IERpZCBzZXR0aW5nIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgbWFrZSB0aGUgd2luZG93IGV4cG9z ZWQ/CisrICAgICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KFFQb2ludCgpLCBnZW9tZXRy eSgpLnNpemUoKSkpOworKyAgICAgICAgaWYgKHdhc0V4cG9zZWQgJiYgaGFzUGVuZGluZ1VwZGF0 ZVJlcXVlc3QoKSkKKysgICAgICAgICAgICBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpOworKyAgICB9 OworIAorKyAgICBpZiAobVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeS50ZXN0QW5kU2V0QWNxdWly ZShmYWxzZSwgdHJ1ZSkpIHsKKyAgICAgICAgIC8vIFF1ZXVlZCBjb25uZWN0aW9uLCB0byBtYWtl IHN1cmUgd2UgZG9uJ3QgY2FsbCBoYW5kbGVVcGRhdGUoKSBmcm9tIGluc2lkZSB3YWl0Rm9yRnJh bWVTeW5jKCkKKyAgICAgICAgIC8vIGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4KKy0gICAg ICAgIG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkgPSB0cnVlOworICAgICAgICAgUU1ldGFPYmpl Y3Q6Omludm9rZU1ldGhvZCh0aGlzLCBkb0hhbmRsZUV4cG9zZSwgUXQ6OlF1ZXVlZENvbm5lY3Rp b24pOworICAgICB9CisrCisrICAgIG1GcmFtZVN5bmNXYWl0Lm5vdGlmeV9hbGwoKTsKKyB9Cisg CisgYm9vbCBRV2F5bGFuZFdpbmRvdzo6d2FpdEZvckZyYW1lU3luYyhpbnQgdGltZW91dCkKKyB7 CistICAgIFFNdXRleExvY2tlciBsb2NrZXIobUZyYW1lUXVldWUubXV0ZXgpOworLSAgICBtRGlz cGxheS0+ZGlzcGF0Y2hRdWV1ZVdoaWxlKG1GcmFtZVF1ZXVlLnF1ZXVlLCBbJl0oKSB7IHJldHVy biBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2s7IH0sIHRpbWVvdXQpOworKyAgICBRTXV0ZXhMb2Nr ZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKworKyAgICBRRGVhZGxpbmVUaW1lciBkZWFk bGluZSh0aW1lb3V0KTsKKysgICAgd2hpbGUgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayAmJiBt RnJhbWVTeW5jV2FpdC53YWl0KCZtRnJhbWVTeW5jTXV0ZXgsIGRlYWRsaW5lKSkgeyB9CisgCisg ICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spIHsKKyAgICAgICAgIHFDRGVidWcobGNX YXlsYW5kQmFja2luZ3N0b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUgZnJhbWUgY2FsbGJhY2sgaW4g dGltZSwgd2luZG93IHNob3VsZCBub3cgYmUgaW5leHBvc2VkIjsKK0BAIC04NjgsNiArODc4LDE3 IEBAIGJvb2wgUVdheWxhbmRXaW5kb3c6OmNyZWF0ZURlY29yYXRpb24oKQorICAgICAgICAgICAg IHN1YnN1cmYtPnNldF9wb3NpdGlvbihwb3MueCgpICsgbS5sZWZ0KCksIHBvcy55KCkgKyBtLnRv cCgpKTsKKyAgICAgICAgIH0KKyAgICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdChRUG9pbnQo KSwgZ2VvbWV0cnkoKS5zaXplKCkpKTsKKysKKysgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFs IGNhc2Ugd2hlcmUgdGhlIGJ1ZmZlciBpcyByZWNyZWF0ZWQsIGJ1dCBzaW5jZQorKyAgICAgICAg Ly8gdGhlIGNvbnRlbnQgcmVjdCByZW1haW5zIHRoZSBzYW1lLCB0aGUgd2lkZ2V0cyByZW1haW4g dGhlIHNhbWUKKysgICAgICAgIC8vIHNpemUgYW5kIGFyZSBub3QgcmVkcmF3biwgbGVhdmluZyB0 aGUgbmV3IGJ1ZmZlciBlbXB0eS4gQXMgYSBzaW1wbGUKKysgICAgICAgIC8vIHdvcmstYXJvdW5k LCB3ZSB0cmlnZ2VyIGEgZnVsbCBleHRyYSB1cGRhdGUgd2hlbmV2ZXIgdGhlIGNsaWVudC1zaWRl CisrICAgICAgICAvLyB3aW5kb3cgZGVjb3JhdGlvbnMgYXJlIHRvZ2dsZWQgd2hpbGUgdGhlIHdp bmRvdyBpcyBzaG93aW5nLgorKyAgICAgICAgLy8gTm90ZTogY3JlYXRlRGVjb3JhdGlvbigpIGlz IHNvbWV0aW1lcyBjYWxsZWQgZnJvbSB0aGUgcmVuZGVyIHRocmVhZAorKyAgICAgICAgLy8gb2Yg UXQgUXVpY2suIFRoaXMgaXMgZXNzZW50aWFsbHkgd3JvbmcgYW5kIGNvdWxkIHBvdGVudGlhbGx5 IGNhdXNlIHByb2JsZW1zLAorKyAgICAgICAgLy8gYnV0IHVudGlsIHRoZSB1bmRlcmx5aW5nIGlz c3VlIGhhcyBiZWVuIGZpeGVkLCB3ZSBoYXZlIHRvIHVzZSBpbnZva2VNZXRob2QoKQorKyAgICAg ICAgLy8gaGVyZSB0byBhdm9pZCBhc3NlcnRzLgorKyAgICAgICAgUU1ldGFPYmplY3Q6Omludm9r ZU1ldGhvZCh3aW5kb3coKSwgJlFXaW5kb3c6OnJlcXVlc3RVcGRhdGUpOworICAgICB9CisgCisg ICAgIHJldHVybiBtV2luZG93RGVjb3JhdGlvbjsKK0BAIC0xMDIzLDYgKzEwNDQsMTMgQEAgdm9p ZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlU2NyZWVuc0NoYW5nZWQoKQorIAorICAgICBRV2luZG93 U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dTY3JlZW5DaGFuZ2VkKHdpbmRvdygpLCBuZXdT Y3JlZW4tPlFQbGF0Zm9ybVNjcmVlbjo6c2NyZWVuKCkpOworICAgICBtTGFzdFJlcG9ydGVkU2Ny ZWVuID0gbmV3U2NyZWVuOworKyAgICBpZiAoZml4ZWRUb3BsZXZlbFBvc2l0aW9ucyAmJiAhUVBs YXRmb3JtV2luZG93OjpwYXJlbnQoKSAmJiB3aW5kb3coKS0+dHlwZSgpICE9IFF0OjpQb3B1cAor KyAgICAgICAgJiYgd2luZG93KCktPnR5cGUoKSAhPSBRdDo6VG9vbFRpcAorKyAgICAgICAgJiYg Z2VvbWV0cnkoKS50b3BMZWZ0KCkgIT0gbmV3U2NyZWVuLT5nZW9tZXRyeSgpLnRvcExlZnQoKSkg eworKyAgICAgICAgYXV0byBnZW9tZXRyeSA9IHRoaXMtPmdlb21ldHJ5KCk7CisrICAgICAgICBn ZW9tZXRyeS5tb3ZlVG8obmV3U2NyZWVuLT5nZW9tZXRyeSgpLnRvcExlZnQoKSk7CisrICAgICAg ICBzZXRHZW9tZXRyeShnZW9tZXRyeSk7CisrICAgIH0KKyAKKyAgICAgaW50IHNjYWxlID0gbmV3 U2NyZWVuLT5pc1BsYWNlaG9sZGVyKCkgPyAxIDogc3RhdGljX2Nhc3Q8UVdheWxhbmRTY3JlZW4g Kj4obmV3U2NyZWVuKS0+c2NhbGUoKTsKKyAgICAgaWYgKHNjYWxlICE9IG1TY2FsZSkgeworQEAg LTEwOTQsMTAgKzExMjIsMTggQEAgYm9vbCBRV2F5bGFuZFdpbmRvdzo6c2V0TW91c2VHcmFiRW5h YmxlZChib29sIGdyYWIpCisgICAgIHJldHVybiB0cnVlOworIH0KKyAKKytRdDo6V2luZG93U3Rh dGVzIFFXYXlsYW5kV2luZG93Ojp3aW5kb3dTdGF0ZXMoKSBjb25zdAorK3sKKysgICAgcmV0dXJu IG1MYXN0UmVwb3J0ZWRXaW5kb3dTdGF0ZXM7CisrfQorKworIHZvaWQgUVdheWxhbmRXaW5kb3c6 OmhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQoUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXMpCisgewor ICAgICBjcmVhdGVEZWNvcmF0aW9uKCk7CistICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6Omhh bmRsZVdpbmRvd1N0YXRlQ2hhbmdlZCh3aW5kb3coKSwgc3RhdGVzLCBtTGFzdFJlcG9ydGVkV2lu ZG93U3RhdGVzKTsKKysgICAgUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXNXaXRob3V0QWN0aXZlID0g c3RhdGVzICYgflF0OjpXaW5kb3dBY3RpdmU7CisrICAgIFF0OjpXaW5kb3dTdGF0ZXMgbGFzdFN0 YXRlc1dpdGhvdXRBY3RpdmUgPSBtTGFzdFJlcG9ydGVkV2luZG93U3RhdGVzICYgflF0OjpXaW5k b3dBY3RpdmU7CisrICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdpbmRvd1N0YXRl Q2hhbmdlZCh3aW5kb3coKSwgc3RhdGVzV2l0aG91dEFjdGl2ZSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RTdGF0ZXNXaXRob3V0QWN0 aXZlKTsKKyAgICAgbUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRlcyA9IHN0YXRlczsKKyB9CisgCitA QCAtMTEzOSwxOSArMTE3NSwyNCBAQCB2b2lkIFFXYXlsYW5kV2luZG93Ojp0aW1lckV2ZW50KFFU aW1lckV2ZW50ICpldmVudCkKKyAgICAgaWYgKGV2ZW50LT50aW1lcklkKCkgIT0gbUZyYW1lQ2Fs bGJhY2tDaGVja0ludGVydmFsVGltZXJJZCkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgYm9v bCBjYWxsYmFja1RpbWVyRXhwaXJlZCA9IG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmhhc0V4 cGlyZWQobUZyYW1lQ2FsbGJhY2tUaW1lb3V0KTsKKy0gICAgaWYgKCFtRnJhbWVDYWxsYmFja0Vs YXBzZWRUaW1lci5pc1ZhbGlkKCkgfHwgY2FsbGJhY2tUaW1lckV4cGlyZWQgKSB7CistICAgICAg ICBraWxsVGltZXIobUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCk7CistICAgICAg ICBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gLTE7CistICAgIH0KKy0gICAg aWYgKG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQoKSAmJiBjYWxsYmFja1RpbWVy RXhwaXJlZCkgeworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0 ZSgpOworKyAgICB7CisrICAgICAgICBRTXV0ZXhMb2NrZXIgbG9jaygmbUZyYW1lU3luY011dGV4 KTsKKyAKKy0gICAgICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2luZ3N0b3JlKSA8PCAiRGlkbid0 IHJlY2VpdmUgZnJhbWUgY2FsbGJhY2sgaW4gdGltZSwgd2luZG93IHNob3VsZCBub3cgYmUgaW5l eHBvc2VkIjsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSB0cnVlOworLSAgICAg ICAgbVdhaXRpbmdGb3JVcGRhdGUgPSBmYWxzZTsKKy0gICAgICAgIHNlbmRFeHBvc2VFdmVudChR UmVjdCgpKTsKKysgICAgICAgIGJvb2wgY2FsbGJhY2tUaW1lckV4cGlyZWQgPSBtRnJhbWVDYWxs YmFja0VsYXBzZWRUaW1lci5oYXNFeHBpcmVkKG1GcmFtZUNhbGxiYWNrVGltZW91dCk7CisrICAg ICAgICBpZiAoIW1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQoKSB8fCBjYWxsYmFj a1RpbWVyRXhwaXJlZCApIHsKKysgICAgICAgICAgICBraWxsVGltZXIobUZyYW1lQ2FsbGJhY2tD aGVja0ludGVydmFsVGltZXJJZCk7CisrICAgICAgICAgICAgbUZyYW1lQ2FsbGJhY2tDaGVja0lu dGVydmFsVGltZXJJZCA9IC0xOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFtRnJhbWVDYWxs YmFja0VsYXBzZWRUaW1lci5pc1ZhbGlkKCkgfHwgIWNhbGxiYWNrVGltZXJFeHBpcmVkKSB7Cisr ICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgbUZyYW1lQ2FsbGJhY2tF bGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworICAgICB9CisrCisrICAgIHFDRGVidWcobGNXYXls YW5kQmFja2luZ3N0b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUgZnJhbWUgY2FsbGJhY2sgaW4gdGlt ZSwgd2luZG93IHNob3VsZCBub3cgYmUgaW5leHBvc2VkIjsKKysgICAgbUZyYW1lQ2FsbGJhY2tU aW1lZE91dCA9IHRydWU7CisrICAgIG1XYWl0aW5nRm9yVXBkYXRlID0gZmFsc2U7CisrICAgIHNl bmRFeHBvc2VFdmVudChRUmVjdCgpKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVx dWVzdFVwZGF0ZSgpCitAQCAtMTE2MCw4ICsxMjAxLDExIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6 OnJlcXVlc3RVcGRhdGUoKQorICAgICBRX0FTU0VSVChoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgp KTsgLy8gc2hvdWxkIGJlIHNldCBieSBRUEEKKyAKKyAgICAgLy8gSWYgd2UgaGF2ZSBhIGZyYW1l IGNhbGxiYWNrIGFsbCBpcyBnb29kIGFuZCB3aWxsIGJlIHRha2VuIGNhcmUgb2YgdGhlcmUKKy0g ICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKy0gICAgICAgIHJldHVybjsKKysgICAg eworKyAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysgICAg ICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisrICAgICAgICAgICAgcmV0dXJuOwor KyAgICB9CisgCisgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgY2FsbGVkIGRlbGl2ZXJVcGRhdGVS ZXF1ZXN0KCksIGJ1dCBoYXZlbid0IHNlZW4gYW55IGF0dGFjaCtjb21taXQvc3dhcCB5ZXQKKyAg ICAgLy8gVGhpcyBpcyBhIHNvbWV3aGF0IHJlZHVuZGFudCBiZWhhdmlvciBhbmQgbWlnaHQgaW5k aWNhdGUgYSBidWcgaW4gdGhlIGNhbGxpbmcgY29kZSwgc28gbG9nCitAQCAtMTE3NCw3ICsxMjE4 LDEyIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorICAgICAvLyBzbyB1 c2UgaW52b2tlTWV0aG9kIHRvIGRlbGF5IHRoZSBkZWxpdmVyeSBhIGJpdC4KKyAgICAgUU1ldGFP YmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCBbdGhpc10geworICAgICAgICAgLy8gVGhpbmdzIG1p Z2h0IGhhdmUgY2hhbmdlZCBpbiB0aGUgbWVhbnRpbWUKKy0gICAgICAgIGlmIChoYXNQZW5kaW5n VXBkYXRlUmVxdWVzdCgpICYmICFtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisrICAgICAgICB7 CisrICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysg ICAgICAgICAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQorKyAgICAgICAgICAgICAg ICByZXR1cm47CisrICAgICAgICB9CisrICAgICAgICBpZiAoaGFzUGVuZGluZ1VwZGF0ZVJlcXVl c3QoKSkKKyAgICAgICAgICAgICBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpOworICAgICB9LCBRdDo6 UXVldWVkQ29ubmVjdGlvbik7CisgfQorQEAgLTExODUsMTkgKzEyMzQsMTggQEAgdm9pZCBRV2F5 bGFuZFdpbmRvdzo6cmVxdWVzdFVwZGF0ZSgpCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxl VXBkYXRlKCkKKyB7CisgICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2luZ3N0b3JlKSA8PCAiaGFu ZGxlVXBkYXRlIiA8PCBRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCk7CisrCisgICAgIC8vIFRPRE86 IFNob3VsZCBzeW5jIHN1YnN1cmZhY2VzIGF2b2lkIHJlcXVlc3RpbmcgZnJhbWUgY2FsbGJhY2tz PworICAgICBRUmVhZExvY2tlciBsb2NrKCZtU3VyZmFjZUxvY2spOworICAgICBpZiAoIW1TdXJm YWNlKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBpZiAobUZyYW1lQ2FsbGJhY2spIHsKKy0g ICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3kobUZyYW1lQ2FsbGJhY2spOworLSAgICAgICAgbUZy YW1lQ2FsbGJhY2sgPSBudWxscHRyOworLSAgICB9CisrICAgIFFNdXRleExvY2tlciBsb2NrZXIo Jm1GcmFtZVN5bmNNdXRleCk7CisrICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisr ICAgICAgICByZXR1cm47CisgCistICAgIFFNdXRleExvY2tlciBsb2NrZXIobUZyYW1lUXVldWUu bXV0ZXgpOworICAgICBzdHJ1Y3QgOjp3bF9zdXJmYWNlICp3cmFwcGVkU3VyZmFjZSA9IHJlaW50 ZXJwcmV0X2Nhc3Q8c3RydWN0IDo6d2xfc3VyZmFjZSAqPih3bF9wcm94eV9jcmVhdGVfd3JhcHBl cihtU3VyZmFjZS0+b2JqZWN0KCkpKTsKKy0gICAgd2xfcHJveHlfc2V0X3F1ZXVlKHJlaW50ZXJw cmV0X2Nhc3Q8d2xfcHJveHkgKj4od3JhcHBlZFN1cmZhY2UpLCBtRnJhbWVRdWV1ZS5xdWV1ZSk7 CisrICAgIHdsX3Byb3h5X3NldF9xdWV1ZShyZWludGVycHJldF9jYXN0PHdsX3Byb3h5ICo+KHdy YXBwZWRTdXJmYWNlKSwgbURpc3BsYXktPmZyYW1lRXZlbnRRdWV1ZSgpKTsKKyAgICAgbUZyYW1l Q2FsbGJhY2sgPSB3bF9zdXJmYWNlX2ZyYW1lKHdyYXBwZWRTdXJmYWNlKTsKKyAgICAgd2xfcHJv eHlfd3JhcHBlcl9kZXN0cm95KHdyYXBwZWRTdXJmYWNlKTsKKyAgICAgd2xfY2FsbGJhY2tfYWRk X2xpc3RlbmVyKG1GcmFtZUNhbGxiYWNrLCAmUVdheWxhbmRXaW5kb3c6OmNhbGxiYWNrTGlzdGVu ZXIsIHRoaXMpOworQEAgLTEyMDcsNiArMTI1NSw4IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6Omhh bmRsZVVwZGF0ZSgpCisgICAgIC8vIFN0YXJ0IGEgdGltZXIgZm9yIGhhbmRsaW5nIHRoZSBjYXNl IHdoZW4gdGhlIGNvbXBvc2l0b3Igc3RvcHMgc2VuZGluZyBmcmFtZSBjYWxsYmFja3MuCisgICAg IGlmIChtRnJhbWVDYWxsYmFja1RpbWVvdXQgPiAwKSB7CisgICAgICAgICBRTWV0YU9iamVjdDo6 aW52b2tlTWV0aG9kKHRoaXMsIFt0aGlzXSB7CisrICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxv Y2tlcigmbUZyYW1lU3luY011dGV4KTsKKysKKyAgICAgICAgICAgICBpZiAobVdhaXRpbmdGb3JG cmFtZUNhbGxiYWNrKSB7CisgICAgICAgICAgICAgICAgIGlmIChtRnJhbWVDYWxsYmFja0NoZWNr SW50ZXJ2YWxUaW1lcklkIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgIG1GcmFtZUNhbGxiYWNr Q2hlY2tJbnRlcnZhbFRpbWVySWQgPSBzdGFydFRpbWVyKG1GcmFtZUNhbGxiYWNrVGltZW91dCk7 CitAQCAtMTI2Nyw2ICsxMzE3LDIwIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldE9wYXF1ZUFy ZWEoY29uc3QgUVJlZ2lvbiAmb3BhcXVlQXJlYSkKKyAgICAgd2xfcmVnaW9uX2Rlc3Ryb3kocmVn aW9uKTsKKyB9CisgCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6YWRkQ2hpbGRQb3B1cChRV2F5bGFu ZFdpbmRvdyAqc3VyZmFjZSkgeworKyAgICBtQ2hpbGRQb3B1cHMuYXBwZW5kKHN1cmZhY2UpOwor K30KKysKKyt2b2lkIFFXYXlsYW5kV2luZG93OjpyZW1vdmVDaGlsZFBvcHVwKFFXYXlsYW5kV2lu ZG93ICpzdXJmYWNlKSB7CisrICAgIG1DaGlsZFBvcHVwcy5yZW1vdmVBbGwoc3VyZmFjZSk7Cisr fQorKworK3ZvaWQgUVdheWxhbmRXaW5kb3c6OmNsb3NlQ2hpbGRQb3B1cHMoKSB7CisrICAgIHdo aWxlICghbUNoaWxkUG9wdXBzLmlzRW1wdHkoKSkgeworKyAgICAgICAgYXV0byBwb3B1cCA9IG1D aGlsZFBvcHVwcy50YWtlTGFzdCgpOworKyAgICAgICAgcG9wdXAtPnJlc2V0KCk7CisrICAgIH0K Kyt9CisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZHdpbmRvd19wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZHdpbmRvd19wLmgKK2luZGV4IDAxMzM3Y2ZmLi4yZjIxOWQ4YyAxMDA2NDQKKy0tLSBhL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93X3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmR3aW5kb3dfcC5oCitAQCAtOTgsNiArOTgsOSBAQCBwdWJsaWM6CisgICAg IFFXYXlsYW5kV2luZG93KFFXaW5kb3cgKndpbmRvdywgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5 KTsKKyAgICAgflFXYXlsYW5kV2luZG93KCkgb3ZlcnJpZGU7CisgCisrICAgIC8vIEtlZXAgVG9w bGV2ZWxzIHBvc2l0aW9uIG9uIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlaXIgc2NyZWVuCisr ICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBmaXhlZFRvcGxldmVsUG9zaXRpb25zID0gdHJ1ZTsKKysK KyAgICAgdmlydHVhbCBXaW5kb3dUeXBlIHdpbmRvd1R5cGUoKSBjb25zdCA9IDA7CisgICAgIHZp cnR1YWwgdm9pZCBlbnN1cmVTaXplKCk7CisgICAgIFdJZCB3aW5JZCgpIGNvbnN0IG92ZXJyaWRl OworQEAgLTE0OCw2ICsxNTEsNyBAQCBwdWJsaWM6CisgICAgIHZvaWQgc2V0V2luZG93U3RhdGUo UXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXMpIG92ZXJyaWRlOworICAgICB2b2lkIHNldFdpbmRvd0Zs YWdzKFF0OjpXaW5kb3dGbGFncyBmbGFncykgb3ZlcnJpZGU7CisgICAgIHZvaWQgaGFuZGxlV2lu ZG93U3RhdGVzQ2hhbmdlZChRdDo6V2luZG93U3RhdGVzIHN0YXRlcyk7CisrICAgIFF0OjpXaW5k b3dTdGF0ZXMgd2luZG93U3RhdGVzKCkgY29uc3Q7CisgCisgICAgIHZvaWQgcmFpc2UoKSBvdmVy cmlkZTsKKyAgICAgdm9pZCBsb3dlcigpIG92ZXJyaWRlOworQEAgLTIwNiw2ICsyMTAsMTAgQEAg cHVibGljOgorICAgICB2b2lkIGhhbmRsZVVwZGF0ZSgpOworICAgICB2b2lkIGRlbGl2ZXJVcGRh dGVSZXF1ZXN0KCkgb3ZlcnJpZGU7CisgCisrICAgIHZvaWQgYWRkQ2hpbGRQb3B1cChRV2F5bGFu ZFdpbmRvdyogY2hpbGQpOworKyAgICB2b2lkIHJlbW92ZUNoaWxkUG9wdXAoUVdheWxhbmRXaW5k b3cqIGNoaWxkKTsKKysgICAgdm9pZCBjbG9zZUNoaWxkUG9wdXBzKCk7CisrCisgcHVibGljIHNs b3RzOgorICAgICB2b2lkIGFwcGx5Q29uZmlndXJlKCk7CisgCitAQCAtMjE1LDcgKzIyMywxMSBA QCBzaWduYWxzOgorIAorIHByb3RlY3RlZDoKKyAgICAgUVdheWxhbmREaXNwbGF5ICptRGlzcGxh eSA9IG51bGxwdHI7CisrCisrICAgIC8vIG1TdXJmYWNlIGNhbiBiZSB3cml0dGVuIGJ5IHRoZSBt YWluIHRocmVhZC4gT3RoZXIgdGhyZWFkcyBzaG91bGQgY2xhaW0gYSByZWFkIGxvY2sgZm9yIGFj Y2VzcworKyAgICBtdXRhYmxlIFFSZWFkV3JpdGVMb2NrIG1TdXJmYWNlTG9jazsKKyAgICAgUVNj b3BlZFBvaW50ZXI8UVdheWxhbmRTdXJmYWNlPiBtU3VyZmFjZTsKKysKKyAgICAgUVdheWxhbmRT aGVsbFN1cmZhY2UgKm1TaGVsbFN1cmZhY2UgPSBudWxscHRyOworICAgICBRV2F5bGFuZFN1YlN1 cmZhY2UgKm1TdWJTdXJmYWNlV2luZG93ID0gbnVsbHB0cjsKKyAgICAgUVZlY3RvcjxRV2F5bGFu ZFN1YlN1cmZhY2UgKj4gbUNoaWxkcmVuOworQEAgLTIyNSwxMyArMjM3LDE0IEBAIHByb3RlY3Rl ZDoKKyAgICAgUXQ6Ok1vdXNlQnV0dG9ucyBtTW91c2VQcmVzc2VkSW5Db250ZW50QXJlYSA9IFF0 OjpOb0J1dHRvbjsKKyAKKyAgICAgV0lkIG1XaW5kb3dJZDsKKy0gICAgYm9vbCBtV2FpdGluZ0Zv ckZyYW1lQ2FsbGJhY2sgPSBmYWxzZTsKKyAgICAgYm9vbCBtRnJhbWVDYWxsYmFja1RpbWVkT3V0 ID0gZmFsc2U7IC8vIFdoZXRoZXIgdGhlIGZyYW1lIGNhbGxiYWNrIGhhcyB0aW1lZCBvdXQKKy0g ICAgYm9vbCBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gZmFsc2U7CisgICAgIGludCBtRnJh bWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gLTE7CistICAgIFFFbGFwc2VkVGltZXIg bUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXI7CistICAgIHN0cnVjdCA6OndsX2NhbGxiYWNrICpt RnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CistICAgIFFXYXlsYW5kRGlzcGxheTo6RnJhbWVRdWV1 ZSBtRnJhbWVRdWV1ZTsKKysgICAgUUF0b21pY0ludCBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5 ID0gZmFsc2U7CisrCisrICAgIGJvb2wgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7 IC8vIFByb3RlY3RlZCBieSBtRnJhbWVTeW5jTXV0ZXgKKysgICAgUUVsYXBzZWRUaW1lciBtRnJh bWVDYWxsYmFja0VsYXBzZWRUaW1lcjsgLy8gUHJvdGVjdGVkIGJ5IG1GcmFtZVN5bmNNdXRleAor KyAgICBzdHJ1Y3QgOjp3bF9jYWxsYmFjayAqbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOyAvLyBQ cm90ZWN0ZWQgYnkgbUZyYW1lU3luY011dGV4CisrICAgIFFNdXRleCBtRnJhbWVTeW5jTXV0ZXg7 CisgICAgIFFXYWl0Q29uZGl0aW9uIG1GcmFtZVN5bmNXYWl0OworIAorICAgICAvLyBUcnVlIHdo ZW4gd2UgaGF2ZSBjYWxsZWQgZGVsaXZlclJlcXVlc3RVcGRhdGUsIGJ1dCB0aGUgY2xpZW50IGhh cyBub3QgeWV0IGF0dGFjaGVkIGEgbmV3IGJ1ZmZlcgorQEAgLTI2MSw2ICsyNzQsOCBAQCBwcm90 ZWN0ZWQ6CisgICAgIFFXYXlsYW5kQnVmZmVyICptUXVldWVkQnVmZmVyID0gbnVsbHB0cjsKKyAg ICAgUVJlZ2lvbiBtUXVldWVkQnVmZmVyRGFtYWdlOworIAorKyAgICBRTGlzdDxRUG9pbnRlcjxR V2F5bGFuZFdpbmRvdz4+IG1DaGlsZFBvcHVwczsKKysKKyBwcml2YXRlOgorICAgICB2b2lkIHNl dEdlb21ldHJ5X2hlbHBlcihjb25zdCBRUmVjdCAmcmVjdCk7CisgICAgIHZvaWQgaW5pdFdpbmRv dygpOworQEAgLTI4MywxMiArMjk4LDEwIEBAIHByaXZhdGU6CisgICAgIFFSZWN0IG1MYXN0RXhw b3NlR2VvbWV0cnk7CisgCisgICAgIHN0YXRpYyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5lciBj YWxsYmFja0xpc3RlbmVyOworLSAgICB2b2lkIGhhbmRsZUZyYW1lQ2FsbGJhY2soKTsKKysgICAg dm9pZCBoYW5kbGVGcmFtZUNhbGxiYWNrKHN0cnVjdCA6OndsX2NhbGxiYWNrKiBjYWxsYmFjayk7 CisgCisgICAgIHN0YXRpYyBRV2F5bGFuZFdpbmRvdyAqbU1vdXNlR3JhYjsKKyAKKy0gICAgbXV0 YWJsZSBRUmVhZFdyaXRlTG9jayBtU3VyZmFjZUxvY2s7CistCisgICAgIGZyaWVuZCBjbGFzcyBR V2F5bGFuZFN1YlN1cmZhY2U7CisgfTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRlZ3JhdGlvbl9wLmggYi9xdHdh eWxhbmQvc3JjL2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRlZ3JhdGlv bl9wLmgKK2luZGV4IGNjYWQwMDQ4Li40Y2M5YjNiOCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9z cmMvY2xpZW50L3NoZWxsaW50ZWdyYXRpb24vcXdheWxhbmRzaGVsbGludGVncmF0aW9uX3AuaAor KysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlvbi9xd2F5bGFuZHNoZWxs aW50ZWdyYXRpb25fcC5oCitAQCAtNzMsMTEgKzczLDEwIEBAIHB1YmxpYzoKKyAgICAgICAgIHJl dHVybiB0cnVlOworICAgICB9CisgICAgIHZpcnR1YWwgUVdheWxhbmRTaGVsbFN1cmZhY2UgKmNy ZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93KSA9IDA7CisrICAgIC8vIGtl cHQgZm9yIGJpbmFyeSBjb21wYXQgd2l0aCBsYXllci1zaGVsbC1xdAorICAgICB2aXJ0dWFsIHZv aWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBR V2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpIHsKKy0gICAgICAgIGlmIChuZXdGb2N1cykKKy0gICAg ICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2YXRlZChuZXdGb2N1cyk7CistICAg ICAgICBpZiAob2xkRm9jdXMpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dE ZWFjdGl2YXRlZChvbGRGb2N1cyk7CisrICAgICAgICBRX1VOVVNFRChuZXdGb2N1cyk7CisrICAg ICAgICBRX1VOVVNFRChvbGRGb2N1cyk7CisgICAgIH0KKyAgICAgdmlydHVhbCB2b2lkICpuYXRp dmVSZXNvdXJjZUZvcldpbmRvdyhjb25zdCBRQnl0ZUFycmF5ICZyZXNvdXJjZSwgUVdpbmRvdyAq d2luZG93KSB7CisgICAgICAgICBRX1VOVVNFRChyZXNvdXJjZSk7CitkaWZmIC0tZ2l0IGEvcXR3 YXlsYW5kL3NyYy9jb21wb3NpdG9yL2NvbmZpZ3VyZS5qc29uIGIvcXR3YXlsYW5kL3NyYy9jb21w b3NpdG9yL2NvbmZpZ3VyZS5qc29uCitpbmRleCBiY2ZkNTIxNS4uZGE5NWQwN2IgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJlLmpzb24KKysrKyBiL3F0d2F5 bGFuZC9zcmMvY29tcG9zaXRvci9jb25maWd1cmUuanNvbgorQEAgLTcsNiArNywzMSBAQAorICAg ICAidGVzdERpciI6ICIuLi8uLi9jb25maWcudGVzdHMiLAorIAorICAgICAibGlicmFyaWVzIjog eworKyAgICAgICAgIndheWxhbmQtY2xpZW50IjogeworKyAgICAgICAgICAgICJsYWJlbCI6ICJX YXlsYW5kIGNsaWVudCBsaWJyYXJ5IiwKKysgICAgICAgICAgICAiaGVhZGVycyI6ICJ3YXlsYW5k LXZlcnNpb24uaCIsCisrICAgICAgICAgICAgInRlc3QiOiB7CisrICAgICAgICAgICAgICAgICJt YWluIjogWworKyAgICAgICAgICAgICAgICAgICAgIiNpZiBXQVlMQU5EX1ZFUlNJT05fTUFKT1Ig PCAxIiwKKysgICAgICAgICAgICAgICAgICAgICIjIGVycm9yIFdheWxhbmQgMS44LjAgb3IgaGln aGVyIHJlcXVpcmVkIiwKKysgICAgICAgICAgICAgICAgICAgICIjZW5kaWYiLAorKyAgICAgICAg ICAgICAgICAgICAgIiNpZiBXQVlMQU5EX1ZFUlNJT05fTUFKT1IgPT0gMSIsCisrICAgICAgICAg ICAgICAgICAgICAiIyBpZiBXQVlMQU5EX1ZFUlNJT05fTUlOT1IgPCA4IiwKKysgICAgICAgICAg ICAgICAgICAgICIjICBlcnJvciBXYXlsYW5kIDEuOC4wIG9yIGhpZ2hlciByZXF1aXJlZCIsCisr ICAgICAgICAgICAgICAgICAgICAiIyBlbmRpZiIsCisrICAgICAgICAgICAgICAgICAgICAiIyBp ZiBXQVlMQU5EX1ZFUlNJT05fTUlOT1IgPT0gOCIsCisrICAgICAgICAgICAgICAgICAgICAiIyAg aWYgV0FZTEFORF9WRVJTSU9OX01JQ1JPIDwgMCIsCisrICAgICAgICAgICAgICAgICAgICAiIyAg IGVycm9yIFdheWxhbmQgMS44LjAgb3IgaGlnaGVyIHJlcXVpcmVkIiwKKysgICAgICAgICAgICAg ICAgICAgICIjICBlbmRpZiIsCisrICAgICAgICAgICAgICAgICAgICAiIyBlbmRpZiIsCisrICAg ICAgICAgICAgICAgICAgICAiI2VuZGlmIgorKyAgICAgICAgICAgICAgICAgXQorKyAgICAgICAg ICAgIH0sCisrICAgICAgICAgICAgInNvdXJjZXMiOiBbCisrICAgICAgICAgICAgICAgIHsgInR5 cGUiOiAicGtnQ29uZmlnIiwgImFyZ3MiOiAid2F5bGFuZC1jbGllbnQiIH0sCisrICAgICAgICAg ICAgICAgICItbHdheWxhbmQtY2xpZW50IgorKyAgICAgICAgICAgIF0KKysgICAgICAgIH0sCisg ICAgICAgICAid2F5bGFuZC1zZXJ2ZXIiOiB7CisgICAgICAgICAgICAgImxhYmVsIjogIndheWxh bmQtc2VydmVyIiwKKyAgICAgICAgICAgICAiaGVhZGVycyI6ICJ3YXlsYW5kLXZlcnNpb24uaCIs CitAQCAtMTUxLDggKzE3Niw3IEBACisgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmIgorICAg ICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAibGlicyI6ICIt bGRybSIsCistICAgICAgICAgICAgInVzZSI6ICJlZ2wiCisrICAgICAgICAgICAgInVzZSI6ICJk cm0gZWdsIgorICAgICAgICAgfSwKKyAgICAgICAgICJkbWFidWYtY2xpZW50LWJ1ZmZlciI6IHsK KyAgICAgICAgICAgICAibGFiZWwiOiAiTGludXggQ2xpZW50IGRtYS1idWYgQnVmZmVyIFNoYXJp bmciLAorQEAgLTE3Niw4ICsyMDAsNyBAQAorICAgICAgICAgICAgICAgICAgICAgInJldHVybiAw OyIKKyAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgImxp YnMiOiAiLWxkcm0iLAorLSAgICAgICAgICAgICJ1c2UiOiAiZWdsIgorKyAgICAgICAgICAgICJ1 c2UiOiAiZHJtIGVnbCIKKyAgICAgICAgIH0sCisgICAgICAgICAidnVsa2FuLXNlcnZlci1idWZm ZXIiOiB7CisgICAgICAgICAgICAgImxhYmVsIjogIlZ1bGthbiBCdWZmZXIgU2hhcmluZyIsCitA QCAtMTk1LDcgKzIxOCw4IEBACisgICAgICAgICAgICAgICAgICAgICAiZXhwb3J0QWxsb2NJbmZv LmhhbmRsZVR5cGVzID0gVktfRVhURVJOQUxfTUVNT1JZX0hBTkRMRV9UWVBFX09QQVFVRV9GRF9C SVRfS0hSOyIsCisgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIDA7IgorICAgICAgICAgICAg ICAgICBdCistICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0sCisrICAgICAgICAgICAgInVz ZSI6ICJ3YXlsYW5kLWNsaWVudCIKKyAgICAgICAgIH0KKyAgICAgfSwKKyAKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3 YXlsYW5kZWdsd2luZG93LmNwcCBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9j bGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuY3BwCitpbmRleCA3ODg5ZjU3NS4u NjQxNDA2NzIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24v Y2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNwcAorKysrIGIvcXR3YXlsYW5k L3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdp bmRvdy5jcHAKK0BAIC00MCw2ICs0MCw3IEBACisgI2luY2x1ZGUgInF3YXlsYW5kZWdsd2luZG93 LmgiCisgCisgI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3F3YXlsYW5kc2NyZWVu X3AuaD4KKysjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvcXdheWxhbmRzdXJmYWNl X3AuaD4KKyAjaW5jbHVkZSAicXdheWxhbmRnbGNvbnRleHQuaCIKKyAKKyAjaW5jbHVkZSA8UXRF Z2xTdXBwb3J0L3ByaXZhdGUvcWVnbGNvbnZlbmllbmNlX3AuaD4KK0BAIC0xMjQsNiArMTI1LDcg QEAgdm9pZCBRV2F5bGFuZEVnbFdpbmRvdzo6dXBkYXRlU3VyZmFjZShib29sIGNyZWF0ZSkKKyAg ICAgICAgIH0KKyAgICAgICAgIG1PZmZzZXQgPSBRUG9pbnQoKTsKKyAgICAgfSBlbHNlIHsKKysg ICAgICAgIFFSZWFkTG9ja2VyIGxvY2tlcigmbVN1cmZhY2VMb2NrKTsKKyAgICAgICAgIGlmICht X3dheWxhbmRFZ2xXaW5kb3cpIHsKKyAgICAgICAgICAgICBpbnQgY3VycmVudF93aWR0aCwgY3Vy cmVudF9oZWlnaHQ7CisgICAgICAgICAgICAgc3RhdGljIGJvb2wgZGlzYWJsZVJlc2l6ZUNoZWNr ID0gcWdldGVudigiUVRfV0FZTEFORF9ESVNBQkxFX1JFU0laRUNIRUNLIikudG9JbnQoKTsKK0BA IC0xMzEsMTQgKzEzMywxNiBAQCB2b2lkIFFXYXlsYW5kRWdsV2luZG93Ojp1cGRhdGVTdXJmYWNl KGJvb2wgY3JlYXRlKQorICAgICAgICAgICAgIGlmICghZGlzYWJsZVJlc2l6ZUNoZWNrKSB7Cisg ICAgICAgICAgICAgICAgIHdsX2VnbF93aW5kb3dfZ2V0X2F0dGFjaGVkX3NpemUobV93YXlsYW5k RWdsV2luZG93LCAmY3VycmVudF93aWR0aCwgJmN1cnJlbnRfaGVpZ2h0KTsKKyAgICAgICAgICAg ICB9CistICAgICAgICAgICAgaWYgKGRpc2FibGVSZXNpemVDaGVjayB8fCAoY3VycmVudF93aWR0 aCAhPSBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSB8fCBjdXJyZW50X2hlaWdodCAhPSBzaXplV2l0 aE1hcmdpbnMuaGVpZ2h0KCkpKSB7CisrICAgICAgICAgICAgaWYgKGRpc2FibGVSZXNpemVDaGVj ayB8fCAoY3VycmVudF93aWR0aCAhPSBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSB8fCBjdXJyZW50 X2hlaWdodCAhPSBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCkpIHx8IG1fcmVxdWVzdGVkU2l6ZSAh PSBzaXplV2l0aE1hcmdpbnMpIHsKKyAgICAgICAgICAgICAgICAgd2xfZWdsX3dpbmRvd19yZXNp emUobV93YXlsYW5kRWdsV2luZG93LCBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSwgc2l6ZVdpdGhN YXJnaW5zLmhlaWdodCgpLCBtT2Zmc2V0LngoKSwgbU9mZnNldC55KCkpOworKyAgICAgICAgICAg ICAgICBtX3JlcXVlc3RlZFNpemUgPSBzaXplV2l0aE1hcmdpbnM7CisgICAgICAgICAgICAgICAg IG1PZmZzZXQgPSBRUG9pbnQoKTsKKyAKKyAgICAgICAgICAgICAgICAgbV9yZXNpemUgPSB0cnVl OworICAgICAgICAgICAgIH0KKy0gICAgICAgIH0gZWxzZSBpZiAoY3JlYXRlICYmIHdsU3VyZmFj ZSgpKSB7CistICAgICAgICAgICAgbV93YXlsYW5kRWdsV2luZG93ID0gd2xfZWdsX3dpbmRvd19j cmVhdGUod2xTdXJmYWNlKCksIHNpemVXaXRoTWFyZ2lucy53aWR0aCgpLCBzaXplV2l0aE1hcmdp bnMuaGVpZ2h0KCkpOworKyAgICAgICAgfSBlbHNlIGlmIChjcmVhdGUgJiYgbVN1cmZhY2UpIHsK KysgICAgICAgICAgICBtX3dheWxhbmRFZ2xXaW5kb3cgPSB3bF9lZ2xfd2luZG93X2NyZWF0ZSht U3VyZmFjZS0+b2JqZWN0KCksIHNpemVXaXRoTWFyZ2lucy53aWR0aCgpLCBzaXplV2l0aE1hcmdp bnMuaGVpZ2h0KCkpOworKyAgICAgICAgICAgIG1fcmVxdWVzdGVkU2l6ZSA9IHNpemVXaXRoTWFy Z2luczsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIGlmICghbV9lZ2xTdXJmYWNlICYmIG1fd2F5 bGFuZEVnbFdpbmRvdyAmJiBjcmVhdGUpIHsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2hh cmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93Lmgg Yi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3 YXlsYW5kZWdsd2luZG93LmgKK2luZGV4IDViMWY0ZDU2Li4wMDc5ZGZlZiAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdh eWxhbmRlZ2x3aW5kb3cuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9u L2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5oCitAQCAtODgsNiArODgsNyBA QCBwcml2YXRlOgorICAgICBtdXRhYmxlIFFPcGVuR0xGcmFtZWJ1ZmZlck9iamVjdCAqbV9jb250 ZW50RkJPID0gbnVsbHB0cjsKKyAKKyAgICAgUVN1cmZhY2VGb3JtYXQgbV9mb3JtYXQ7CisrICAg IFFTaXplIG1fcmVxdWVzdGVkU2l6ZTsKKyB9OworIAorIH0KK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFi bGUtdjEvbGludXhkbWFidWYuaCBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9j b21wb3NpdG9yL2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5oCitpbmRleCA1 NmE3MTBjMy4uYzZhOGI2YzYgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50 ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFibGUtdjEvbGludXhkbWFidWYu aAorKysrIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3IvbGlu dXgtZG1hYnVmLXVuc3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmgKK0BAIC00MSw2ICs0MSw4IEBACisg I2luY2x1ZGUgPFF0Q29yZS9RVGV4dFN0cmVhbT4KKyAjaW5jbHVkZSA8UXRHdWkvUU9wZW5HTFRl eHR1cmU+CisgCisrI2luY2x1ZGUgPGFycmF5PgorKworICNpbmNsdWRlIDxFR0wvZWdsLmg+Cisg I2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdp bnMvZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAKK2luZGV4IGU3NWZkYTNjLi5mYTg4NTE0 MyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNvcmF0aW9ucy9icmFkaWVu dC9tYWluLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRp ZW50L21haW4uY3BwCitAQCAtMTY0LDEzICsxNjQsMTAgQEAgdm9pZCBRV2F5bGFuZEJyYWRpZW50 RGVjb3JhdGlvbjo6cGFpbnQoUVBhaW50RGV2aWNlICpkZXZpY2UpCisgICAgIC8vIFdpbmRvdyBp Y29uCisgICAgIFFJY29uIGljb24gPSB3YXlsYW5kV2luZG93KCktPndpbmRvd0ljb24oKTsKKyAg ICAgaWYgKCFpY29uLmlzTnVsbCgpKSB7CistICAgICAgICBRUGl4bWFwIHBpeG1hcCA9IGljb24u cGl4bWFwKFFTaXplKDEyOCwgMTI4KSk7CistICAgICAgICBRUGl4bWFwIHNjYWxlZCA9IHBpeG1h cC5zY2FsZWQoMjIsIDIyLCBRdDo6SWdub3JlQXNwZWN0UmF0aW8sIFF0OjpTbW9vdGhUcmFuc2Zv cm1hdGlvbik7CistCisgICAgICAgICBRUmVjdEYgaWNvblJlY3QoMCwgMCwgMjIsIDIyKTsKKy0g ICAgICAgIHAuZHJhd1BpeG1hcChpY29uUmVjdC5hZGp1c3RlZChtYXJnaW5zKCkubGVmdCgpICsg QlVUVE9OX1NQQUNJTkcsIDQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0KSwKKy0gICAgICAgICAgICAg ICAgICAgICBzY2FsZWQsIGljb25SZWN0KTsKKysgICAgICAgIGljb25SZWN0LmFkanVzdChtYXJn aW5zKCkubGVmdCgpICsgQlVUVE9OX1NQQUNJTkcsIDQsCisrICAgICAgICAgICAgICAgICAgICAg ICAgbWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0KSwKKysgICAgICAgIGljb24u cGFpbnQoJnAsIGljb25SZWN0LnRvUmVjdCgpKTsKKyAgICAgfQorIAorICAgICAvLyBXaW5kb3cg dGl0bGUKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlv bi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1LmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjUuY3Bw CitpbmRleCA4NWQyNWUzYy4uNjBiZGQ0OTEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1LmNw cAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxs LXY1L3F3YXlsYW5keGRncG9wdXB2NS5jcHAKK0BAIC00NywxOCArNDcsMjEgQEAgUVRfQkVHSU5f TkFNRVNQQUNFCisgCisgbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudCB7CisgCistUVdheWxhbmRY ZGdQb3B1cFY1OjpRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6eGRnX3BvcHVwX3Y1ICpwb3B1 cCwgUVdheWxhbmRXaW5kb3cgKndpbmRvdykKKytRV2F5bGFuZFhkZ1BvcHVwVjU6OlFXYXlsYW5k WGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5bGFuZFdpbmRvdyog cGFyZW50LCBRV2F5bGFuZFdpbmRvdyAqd2luZG93KQorICAgICA6IFFXYXlsYW5kU2hlbGxTdXJm YWNlKHdpbmRvdykKKyAgICAgLCBRdFdheWxhbmQ6OnhkZ19wb3B1cF92NShwb3B1cCkKKysgICAg LCBtX3BhcmVudChwYXJlbnQpCisgICAgICwgbV93aW5kb3cod2luZG93KQorIHsKKyAgICAgaWYg KHdpbmRvdy0+ZGlzcGxheSgpLT53aW5kb3dFeHRlbnNpb24oKSkKKyAgICAgICAgIG1fZXh0ZW5k ZWRXaW5kb3cgPSBuZXcgUVdheWxhbmRFeHRlbmRlZFN1cmZhY2Uod2luZG93KTsKKysgICAgbV9w YXJlbnQtPmFkZENoaWxkUG9wdXAobV93aW5kb3cpOworIH0KKyAKKyBRV2F5bGFuZFhkZ1BvcHVw VjU6On5RV2F5bGFuZFhkZ1BvcHVwVjUoKQorIHsKKyAgICAgeGRnX3BvcHVwX2Rlc3Ryb3kob2Jq ZWN0KCkpOworKyAgICBtX3BhcmVudC0+cmVtb3ZlQ2hpbGRQb3B1cChtX3dpbmRvdyk7CisgICAg IGRlbGV0ZSBtX2V4dGVuZGVkV2luZG93OworIH0KKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1 cHY1X3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVs bC12NS9xd2F5bGFuZHhkZ3BvcHVwdjVfcC5oCitpbmRleCA3NDk0ZjZhNi4uZDg1ZjEzMGIgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5z L3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NV9wLmgKK0BA IC03MCw3ICs3MCw3IEBAIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kWGRn UG9wdXBWNSA6IHB1YmxpYyBRV2F5bGFuZFNoZWxsU3VyZmFjZQorIHsKKyAgICAgUV9PQkpFQ1QK KyBwdWJsaWM6CistICAgIFFXYXlsYW5kWGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUg KnBvcHVwLCBRV2F5bGFuZFdpbmRvdyAqd2luZG93KTsKKysgICAgUVdheWxhbmRYZGdQb3B1cFY1 KHN0cnVjdCA6OnhkZ19wb3B1cF92NSAqcG9wdXAsIFFXYXlsYW5kV2luZG93KiBwYXJlbnQsIFFX YXlsYW5kV2luZG93ICp3aW5kb3cpOworICAgICB+UVdheWxhbmRYZGdQb3B1cFY1KCkgb3ZlcnJp ZGU7CisgCisgcHJvdGVjdGVkOgorQEAgLTc4LDYgKzc4LDcgQEAgcHJvdGVjdGVkOgorIAorIHBy aXZhdGU6CisgICAgIFFXYXlsYW5kRXh0ZW5kZWRTdXJmYWNlICptX2V4dGVuZGVkV2luZG93ID0g bnVsbHB0cjsKKysgICAgUVdheWxhbmRXaW5kb3cgKm1fcGFyZW50ID0gbnVsbHB0cjsKKyAgICAg UVdheWxhbmRXaW5kb3cgKm1fd2luZG93ID0gbnVsbHB0cjsKKyB9OworIAorZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5 bGFuZHhkZ3NoZWxsdjUuY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NS5jcHAKK2luZGV4IDdlMjQyYzRhLi5k ZWY4NDUyYSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3BwCisrKysgYi9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVs bHY1LmNwcAorQEAgLTg0LDcgKzg0LDcgQEAgUVdheWxhbmRYZGdQb3B1cFY1ICpRV2F5bGFuZFhk Z1NoZWxsVjU6OmNyZWF0ZVhkZ1BvcHVwKFFXYXlsYW5kV2luZG93ICp3aW5kb3csIFEKKyAgICAg aW50IHggPSBwb3NpdGlvbi54KCkgKyBwYXJlbnRXaW5kb3ctPmZyYW1lTWFyZ2lucygpLmxlZnQo KTsKKyAgICAgaW50IHkgPSBwb3NpdGlvbi55KCkgKyBwYXJlbnRXaW5kb3ctPmZyYW1lTWFyZ2lu cygpLnRvcCgpOworIAorLSAgICBhdXRvIHBvcHVwID0gbmV3IFFXYXlsYW5kWGRnUG9wdXBWNShn ZXRfeGRnX3BvcHVwKHdpbmRvdy0+d2xTdXJmYWNlKCksIHBhcmVudFN1cmZhY2UsIHNlYXQsIG1f cG9wdXBTZXJpYWwsIHgsIHkpLCB3aW5kb3cpOworKyAgICBhdXRvIHBvcHVwID0gbmV3IFFXYXls YW5kWGRnUG9wdXBWNShnZXRfeGRnX3BvcHVwKHdpbmRvdy0+d2xTdXJmYWNlKCksIHBhcmVudFN1 cmZhY2UsIHNlYXQsIG1fcG9wdXBTZXJpYWwsIHgsIHkpLCBwYXJlbnRXaW5kb3csIHdpbmRvdyk7 CisgICAgIG1fcG9wdXBzLmFwcGVuZCh3aW5kb3cpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHBv cHVwLCAmUVdheWxhbmRYZGdQb3B1cFY1OjpkZXN0cm95ZWQsIFt0aGlzLCB3aW5kb3ddKCl7Cisg ICAgICAgICBtX3BvcHVwcy5yZW1vdmVPbmUod2luZG93KTsKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdz aGVsbHY1aW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNwcAoraW5k ZXggNGUyNTk0OWYuLmNmYzYwOTM5IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5z L3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0 aW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRn LXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNwcAorQEAgLTg1LDEzICs4 NSw2IEBAIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpRV2F5bGFuZFhkZ1NoZWxsVjVJbnRlZ3JhdGlv bjo6Y3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kCisgICAgIHJldHVybiBtX3hkZ1NoZWxsLT5j cmVhdGVYZGdTdXJmYWNlKHdpbmRvdyk7CisgfQorIAorLXZvaWQgUVdheWxhbmRYZGdTaGVsbFY1 SW50ZWdyYXRpb246OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpu ZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSB7CistICAgIGlmIChuZXdGb2N1cyAm JiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdQb3B1cFY1ICo+KG5ld0ZvY3VzLT5zaGVsbFN1cmZh Y2UoKSkpCistICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2YXRlZChuZXdGb2N1 cyk7CistICAgIGlmIChvbGRGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdQb3B1cFY1 ICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpCistICAgICAgICBtX2Rpc3BsYXktPmhhbmRs ZVdpbmRvd0RlYWN0aXZhdGVkKG9sZEZvY3VzKTsKKy19CistCisgfQorIAorIFFUX0VORF9OQU1F U1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlv bi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb25fcC5oIGIvcXR3YXls YW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRn c2hlbGx2NWludGVncmF0aW9uX3AuaAoraW5kZXggY2U2YmRiOWUuLmFlZDg4NjcwIDEwMDY0NAor LS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1 L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9w bHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWlu dGVncmF0aW9uX3AuaAorQEAgLTY3LDcgKzY3LDYgQEAgcHVibGljOgorICAgICBRV2F5bGFuZFhk Z1NoZWxsVjVJbnRlZ3JhdGlvbigpIHt9CisgICAgIGJvb2wgaW5pdGlhbGl6ZShRV2F5bGFuZERp c3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOworICAgICBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqY3Jl YXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kV2luZG93ICp3aW5kb3cpIG92ZXJyaWRlOworLSAgICB2 b2lkIGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywg UVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBR U2NvcGVkUG9pbnRlcjxRV2F5bGFuZFhkZ1NoZWxsVjU+IG1feGRnU2hlbGw7CitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3 YXlsYW5keGRnc2hlbGx2Ni5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3Jh dGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2LmNwcAoraW5kZXggOGMzNzE2NjEu LjE1MWM3OGUzIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5jcHAKKysrKyBiL3F0d2F5bGFu ZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3No ZWxsdjYuY3BwCitAQCAtMTc0LDYgKzE3NCw3IEBAIFFXYXlsYW5kWGRnU3VyZmFjZVY2OjpQb3B1 cDo6UG9wdXAoUVdheWxhbmRYZGdTdXJmYWNlVjYgKnhkZ1N1cmZhY2UsIFFXYXlsYW5kWGRnCisg ICAgICwgbV94ZGdTdXJmYWNlKHhkZ1N1cmZhY2UpCisgICAgICwgbV9wYXJlbnQocGFyZW50KQor IHsKKysgICAgbV9wYXJlbnQtPndpbmRvdygpLT5hZGRDaGlsZFBvcHVwKG1feGRnU3VyZmFjZS0+ d2luZG93KCkpOworIH0KKyAKKyBRV2F5bGFuZFhkZ1N1cmZhY2VWNjo6UG9wdXA6On5Qb3B1cCgp CitAQCAtMTgxLDYgKzE4Miw4IEBAIFFXYXlsYW5kWGRnU3VyZmFjZVY2OjpQb3B1cDo6flBvcHVw KCkKKyAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgIGRlc3Ryb3koKTsKKyAKKysg ICAgbV9wYXJlbnQtPndpbmRvdygpLT5yZW1vdmVDaGlsZFBvcHVwKG1feGRnU3VyZmFjZS0+d2lu ZG93KCkpOworKworICAgICBpZiAobV9ncmFiYmluZykgeworICAgICAgICAgYXV0byAqc2hlbGwg PSBtX3hkZ1N1cmZhY2UtPm1fc2hlbGw7CisgICAgICAgICBRX0FTU0VSVChzaGVsbC0+bV90b3Bt b3N0R3JhYmJpbmdQb3B1cCA9PSB0aGlzKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50 ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRn LXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcAoraW5kZXggMDMxNjQz MTYuLmU4ZGE4YmExIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50 ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcAor KysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2 L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcAorQEAgLTY4LDIwICs2OCw2IEBAIFFX YXlsYW5kU2hlbGxTdXJmYWNlICpRV2F5bGFuZFhkZ1NoZWxsVjZJbnRlZ3JhdGlvbjo6Y3JlYXRl U2hlbGxTdXJmYWNlKFFXYXlsYW5kCisgICAgIHJldHVybiBtX3hkZ1NoZWxsLT5nZXRYZGdTdXJm YWNlKHdpbmRvdyk7CisgfQorIAorLXZvaWQgUVdheWxhbmRYZGdTaGVsbFY2SW50ZWdyYXRpb246 OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdh eWxhbmRXaW5kb3cgKm9sZEZvY3VzKQorLXsKKy0gICAgaWYgKG5ld0ZvY3VzKSB7CistICAgICAg ICBhdXRvICp4ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZVY2ICo+ KG5ld0ZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAgICAgICBpZiAoeGRnU3VyZmFjZSAmJiAh eGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAgICAgICAgICAgbV9kaXNwbGF5 LT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobmV3Rm9jdXMpOworLSAgICB9CistICAgIGlmIChvbGRG b2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlVjYgKj4ob2xkRm9jdXMtPnNo ZWxsU3VyZmFjZSgpKSkgeworLSAgICAgICAgYXV0byAqeGRnU3VyZmFjZSA9IHFvYmplY3RfY2Fz dDxRV2F5bGFuZFhkZ1N1cmZhY2VWNiAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpOworLSAg ICAgICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNBY3RpdmVTdGF0ZSgp KQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQob2xkRm9j dXMpOworLSAgICB9CistfQorLQorIH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3 YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlv bl9wLmgKK2luZGV4IDI2MWY4Y2JiLi5jMWJjZDVjNiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxs djZpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVn cmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbl9wLmgKK0BA IC02NSw3ICs2NSw2IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRYZGdTaGVsbFY2SW50ZWdyYXRp b24oKSB7fQorICAgICBib29sIGluaXRpYWxpemUoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KSBv dmVycmlkZTsKKyAgICAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKmNyZWF0ZVNoZWxsU3VyZmFjZShR V2F5bGFuZFdpbmRvdyAqd2luZG93KSBvdmVycmlkZTsKKy0gICAgdm9pZCBoYW5kbGVLZXlib2Fy ZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpv bGRGb2N1cykgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdh eWxhbmRYZGdTaGVsbFY2PiBtX3hkZ1NoZWxsOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMv cGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsLmNwcCBi L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFu ZHhkZ3NoZWxsLmNwcAoraW5kZXggZjNlM2MzMzAuLmZhNmQ1ODA4IDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRn c2hlbGwuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94 ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbC5jcHAKK0BAIC02NywxMSArNjcsNiBAQCBRV2F5bGFu ZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjpUb3BsZXZlbChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1 cmZhY2UpCisgCisgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6flRvcGxldmVsKCkKKyB7 CistICAgIGlmIChtX2FwcGxpZWQuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgeworLSAgICAg ICAgUVdheWxhbmRXaW5kb3cgKndpbmRvdyA9IG1feGRnU3VyZmFjZS0+d2luZG93KCk7CistICAg ICAgICB3aW5kb3ctPmRpc3BsYXkoKS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQod2luZG93KTsK Ky0gICAgfQorLQorICAgICAvLyBUaGUgcHJvdG9jb2wgc3BlYyByZXF1aXJlcyB0aGF0IHRoZSBk ZWNvcmF0aW9uIG9iamVjdCBpcyBkZWxldGVkIGJlZm9yZSB4ZGdfdG9wbGV2ZWwuCisgICAgIGRl bGV0ZSBtX2RlY29yYXRpb247CisgICAgIG1fZGVjb3JhdGlvbiA9IG51bGxwdHI7CitAQCAtODUs MTYgKzgwLDE1IEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6YXBwbHlDb25m aWd1cmUoKQorICAgICBpZiAoIShtX2FwcGxpZWQuc3RhdGVzICYgKFF0OjpXaW5kb3dNYXhpbWl6 ZWR8UXQ6OldpbmRvd0Z1bGxTY3JlZW4pKSkKKyAgICAgICAgIG1fbm9ybWFsU2l6ZSA9IG1feGRn U3VyZmFjZS0+bV93aW5kb3ctPndpbmRvd0ZyYW1lR2VvbWV0cnkoKS5zaXplKCk7CisgCistICAg IGlmICgobV9wZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpICYmICEobV9hcHBsaWVk LnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpKQorKyAgICBpZiAoKG1fcGVuZGluZy5zdGF0ZXMg JiBRdDo6V2luZG93QWN0aXZlKSAmJiAhKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0 aXZlKQorKyAgICAgICAgJiYgIW1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmRpc3BsYXkoKS0+aXNL ZXlib2FyZEF2YWlsYWJsZSgpKQorICAgICAgICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ZGlz cGxheSgpLT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobV94ZGdTdXJmYWNlLT5tX3dpbmRvdyk7Cisg CistICAgIGlmICghKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSAmJiAobV9h cHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpKQorKyAgICBpZiAoIShtX3BlbmRpbmcu c3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgJiYgKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2lu ZG93QWN0aXZlKQorKyAgICAgICAgJiYgIW1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmRpc3BsYXko KS0+aXNLZXlib2FyZEF2YWlsYWJsZSgpKQorICAgICAgICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRv dy0+ZGlzcGxheSgpLT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChtX3hkZ1N1cmZhY2UtPm1fd2lu ZG93KTsKKyAKKy0gICAgLy8gVE9ETzogbm9uZSBvZiB0aGUgb3RoZXIgcGx1Z2lucyBzZW5kIFdp bmRvd0FjdGl2ZSBlaXRoZXIsIGJ1dCBpcyBpdCBvbiBwdXJwb3NlPworLSAgICBRdDo6V2luZG93 U3RhdGVzIHN0YXRlc1dpdGhvdXRBY3RpdmUgPSBtX3BlbmRpbmcuc3RhdGVzICYgflF0OjpXaW5k b3dBY3RpdmU7CistCistICAgIG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmhhbmRsZVdpbmRvd1N0 YXRlc0NoYW5nZWQoc3RhdGVzV2l0aG91dEFjdGl2ZSk7CisrICAgIG1feGRnU3VyZmFjZS0+bV93 aW5kb3ctPmhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQobV9wZW5kaW5nLnN0YXRlcyk7CisgCisg ICAgIGlmIChtX3BlbmRpbmcuc2l6ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgIC8vIEFuIGVtcHR5 IHNpemUgaW4gdGhlIGNvbmZpZ3VyZSBtZWFucyBpdCdzIHVwIHRvIHRoZSBjbGllbnQgdG8gY2hv b3NlIHRoZSBzaXplCitAQCAtMTA1LDggKzk5LDYgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6 OlRvcGxldmVsOjphcHBseUNvbmZpZ3VyZSgpCisgICAgICAgICBtX3hkZ1N1cmZhY2UtPm1fd2lu ZG93LT5yZXNpemVGcm9tQXBwbHlDb25maWd1cmUobV9wZW5kaW5nLnNpemUpOworICAgICB9Cisg CistICAgIG1feGRnU3VyZmFjZS0+c2V0U2l6ZUhpbnRzKCk7CistCisgICAgIG1fYXBwbGllZCA9 IG1fcGVuZGluZzsKKyAgICAgcUNEZWJ1ZyhsY1FwYVdheWxhbmQpIDw8ICJBcHBsaWVkIHBlbmRp bmcgeGRnX3RvcGxldmVsIGNvbmZpZ3VyZSBldmVudDoiIDw8IG1fYXBwbGllZC5zaXplIDw8IG1f YXBwbGllZC5zdGF0ZXM7CisgfQorQEAgLTIwMywxMiArMTk1LDE3IEBAIFF0V2F5bGFuZDo6eGRn X3RvcGxldmVsOjpyZXNpemVfZWRnZSBRV2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjpjb252 ZXJ0VG9SZXNpCisgICAgICAgICAgICAgICAgIHwgKChlZGdlcyAmIFF0OjpSaWdodEVkZ2UpID8g cmVzaXplX2VkZ2VfcmlnaHQgOiAwKSk7CisgfQorIAorLVFXYXlsYW5kWGRnU3VyZmFjZTo6UG9w dXA6OlBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRYZGdTdXJm YWNlICpwYXJlbnQsCisrUVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1cDo6UG9wdXAoUVdheWxhbmRY ZGdTdXJmYWNlICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFdpbmRvdyAqcGFyZW50LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXIgKnBvc2l0 aW9uZXIpCistICAgIDogeGRnX3BvcHVwKHhkZ1N1cmZhY2UtPmdldF9wb3B1cChwYXJlbnQtPm9i amVjdCgpLCBwb3NpdGlvbmVyLT5vYmplY3QoKSkpCistICAgICwgbV94ZGdTdXJmYWNlKHhkZ1N1 cmZhY2UpCisrICAgIDogbV94ZGdTdXJmYWNlKHhkZ1N1cmZhY2UpCisrICAgICwgbV9wYXJlbnRY ZGdTdXJmYWNlKHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4ocGFyZW50LT5zaGVs bFN1cmZhY2UoKSkpCisgICAgICwgbV9wYXJlbnQocGFyZW50KQorIHsKKysKKysgICAgaW5pdCh4 ZGdTdXJmYWNlLT5nZXRfcG9wdXAobV9wYXJlbnRYZGdTdXJmYWNlID8gbV9wYXJlbnRYZGdTdXJm YWNlLT5vYmplY3QoKSA6IG51bGxwdHIsIHBvc2l0aW9uZXItPm9iamVjdCgpKSk7CisrICAgIGlm IChtX3BhcmVudCkgeworKyAgICAgICAgbV9wYXJlbnQtPmFkZENoaWxkUG9wdXAobV94ZGdTdXJm YWNlLT53aW5kb3coKSk7CisrICAgIH0KKyB9CisgCisgUVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1 cDo6flBvcHVwKCkKK0BAIC0yMTYsMTAgKzIxMywyNCBAQCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlBv cHVwOjp+UG9wdXAoKQorICAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAgICAgZGVzdHJv eSgpOworIAorKyAgICBpZiAobV9wYXJlbnQpIHsKKysgICAgICAgIG1fcGFyZW50LT5yZW1vdmVD aGlsZFBvcHVwKG1feGRnU3VyZmFjZS0+d2luZG93KCkpOworKyAgICB9CisrCisgICAgIGlmICht X2dyYWJiaW5nKSB7CisgICAgICAgICBhdXRvICpzaGVsbCA9IG1feGRnU3VyZmFjZS0+bV9zaGVs bDsKKyAgICAgICAgIFFfQVNTRVJUKHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVwID09IHRo aXMpOworLSAgICAgICAgc2hlbGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPSBtX3BhcmVudC0+ bV9wb3B1cDsKKysgICAgICAgIHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVwID0gbV9wYXJl bnRYZGdTdXJmYWNlID8gbV9wYXJlbnRYZGdTdXJmYWNlLT5tX3BvcHVwIDogbnVsbHB0cjsKKysg ICAgICAgIG1fZ3JhYmJpbmcgPSBmYWxzZTsKKysKKysgICAgICAgIC8vIFN5bnRoZXNpemUgUXQg ZW50ZXIvbGVhdmUgZXZlbnRzIGZvciBwb3B1cAorKyAgICAgICAgUVdpbmRvdyAqbGVhdmUgPSBu dWxscHRyOworKyAgICAgICAgaWYgKG1feGRnU3VyZmFjZSAmJiBtX3hkZ1N1cmZhY2UtPndpbmRv dygpKQorKyAgICAgICAgICAgIGxlYXZlID0gbV94ZGdTdXJmYWNlLT53aW5kb3coKS0+d2luZG93 KCk7CisrICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVMZWF2ZUV2ZW50KGxl YXZlKTsKKysKKysgICAgICAgIGlmIChRV2luZG93ICplbnRlciA9IFFHdWlBcHBsaWNhdGlvbjo6 dG9wTGV2ZWxBdChRQ3Vyc29yOjpwb3MoKSkpCisrICAgICAgICAgICAgUVdpbmRvd1N5c3RlbUlu dGVyZmFjZTo6aGFuZGxlRW50ZXJFdmVudChlbnRlciwgZW50ZXItPm1hcEZyb21HbG9iYWwoUUN1 cnNvcjo6cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSk7CisgICAgIH0KKyB9CisgCitAQCAtMjU3LDYg KzI2OCw3IEBAIFFXYXlsYW5kWGRnU3VyZmFjZTo6UVdheWxhbmRYZGdTdXJmYWNlKFFXYXlsYW5k WGRnU2hlbGwgKnNoZWxsLCA6OnhkZ19zdXJmYWNlICpzCisgICAgICAgICAgICAgICAgIG1fdG9w bGV2ZWwtPnNldF9wYXJlbnQocGFyZW50WGRnU3VyZmFjZS0+bV90b3BsZXZlbC0+b2JqZWN0KCkp OworICAgICAgICAgfQorICAgICB9CisrICAgIHNldFNpemVIaW50cygpOworIH0KKyAKKyBRV2F5 bGFuZFhkZ1N1cmZhY2U6On5RV2F5bGFuZFhkZ1N1cmZhY2UoKQorQEAgLTQwMCw4ICs0MTIsNiBA QCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6c2V0UG9wdXAoUVdheWxhbmRXaW5kb3cgKnBhcmVu dCkKKyB7CisgICAgIFFfQVNTRVJUKCFtX3RvcGxldmVsICYmICFtX3BvcHVwKTsKKyAKKy0gICAg YXV0byBwYXJlbnRYZGdTdXJmYWNlID0gc3RhdGljX2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+ KHBhcmVudC0+c2hlbGxTdXJmYWNlKCkpOworLQorICAgICBhdXRvIHBvc2l0aW9uZXIgPSBuZXcg UXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lcihtX3NoZWxsLT5jcmVhdGVfcG9zaXRpb25lcigpKTsK KyAgICAgLy8gc2V0X3BvcHVwIGV4cGVjdHMgYSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgcGFy ZW50CisgICAgIFFQb2ludCB0cmFuc2llbnRQb3MgPSBtX3dpbmRvdy0+Z2VvbWV0cnkoKS50b3BM ZWZ0KCk7IC8vIHRoaXMgaXMgYWJzb2x1dGUKK0BAIC00MTQsOCArNDI0LDkgQEAgdm9pZCBRV2F5 bGFuZFhkZ1N1cmZhY2U6OnNldFBvcHVwKFFXYXlsYW5kV2luZG93ICpwYXJlbnQpCisgICAgIHBv c2l0aW9uZXItPnNldF9hbmNob3IoUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lcjo6YW5jaG9yX3Rv cF9sZWZ0KTsKKyAgICAgcG9zaXRpb25lci0+c2V0X2dyYXZpdHkoUXRXYXlsYW5kOjp4ZGdfcG9z aXRpb25lcjo6Z3Jhdml0eV9ib3R0b21fcmlnaHQpOworICAgICBwb3NpdGlvbmVyLT5zZXRfc2l6 ZShtX3dpbmRvdy0+Z2VvbWV0cnkoKS53aWR0aCgpLCBtX3dpbmRvdy0+Z2VvbWV0cnkoKS5oZWln aHQoKSk7CistICAgIG1fcG9wdXAgPSBuZXcgUG9wdXAodGhpcywgcGFyZW50WGRnU3VyZmFjZSwg cG9zaXRpb25lcik7CisrICAgIG1fcG9wdXAgPSBuZXcgUG9wdXAodGhpcywgcGFyZW50LCBwb3Np dGlvbmVyKTsKKyAgICAgcG9zaXRpb25lci0+ZGVzdHJveSgpOworKworICAgICBkZWxldGUgcG9z aXRpb25lcjsKKyB9CisgCitAQCAtNDM3LDYgKzQ0OCwyMyBAQCB2b2lkIFFXYXlsYW5kWGRnU3Vy ZmFjZTo6c2V0R3JhYlBvcHVwKFFXYXlsYW5kV2luZG93ICpwYXJlbnQsIFFXYXlsYW5kSW5wdXRE ZXZpYworICAgICB9CisgICAgIHNldFBvcHVwKHBhcmVudCk7CisgICAgIG1fcG9wdXAtPmdyYWIo ZGV2aWNlLCBzZXJpYWwpOworKworKyAgICAvLyBTeW50aGVzaXplIFF0IGVudGVyL2xlYXZlIGV2 ZW50cyBmb3IgcG9wdXAKKysgICAgaWYgKCFwYXJlbnQpCisrICAgICAgICByZXR1cm47CisrICAg IFFXaW5kb3cgKmN1cnJlbnQgPSBRR3VpQXBwbGljYXRpb246OnRvcExldmVsQXQoUUN1cnNvcjo6 cG9zKCkpOworKyAgICBRV2luZG93ICpsZWF2ZSA9IHBhcmVudC0+d2luZG93KCk7CisrICAgIGlm IChjdXJyZW50ICE9IGxlYXZlKQorKyAgICAgICAgcmV0dXJuOworKworKyAgICBRV2luZG93U3lz dGVtSW50ZXJmYWNlOjpoYW5kbGVMZWF2ZUV2ZW50KGxlYXZlKTsKKysKKysgICAgUVdpbmRvdyAq ZW50ZXIgPSBudWxscHRyOworKyAgICBpZiAobV9wb3B1cCAmJiBtX3BvcHVwLT5tX3hkZ1N1cmZh Y2UgJiYgbV9wb3B1cC0+bV94ZGdTdXJmYWNlLT53aW5kb3coKSkKKysgICAgICAgIGVudGVyID0g bV9wb3B1cC0+bV94ZGdTdXJmYWNlLT53aW5kb3coKS0+d2luZG93KCk7CisrCisrICAgIGlmIChl bnRlcikKKysgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUVudGVyRXZlbnQo ZW50ZXIsIGVudGVyLT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6OnBvcygpKSwgUUN1cnNvcjo6cG9z KCkpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6eGRnX3N1cmZhY2VfY29uZmln dXJlKHVpbnQzMl90IHNlcmlhbCkKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMv c2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbF9wLmggYi9xdHdheWxh bmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVs bF9wLmgKK2luZGV4IDk2Nzg1MjA1Li40YjUxOGYwYSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsX3Au aAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxs L3F3YXlsYW5keGRnc2hlbGxfcC5oCitAQCAtMTMxLDE0ICsxMzEsMTUgQEAgcHJpdmF0ZToKKyAK KyAgICAgY2xhc3MgUG9wdXAgOiBwdWJsaWMgUXRXYXlsYW5kOjp4ZGdfcG9wdXAgeworICAgICBw dWJsaWM6CistICAgICAgICBQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZhY2UsIFFX YXlsYW5kWGRnU3VyZmFjZSAqcGFyZW50LCBRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyICpwb3Np dGlvbmVyKTsKKysgICAgICAgIFBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwg UVdheWxhbmRXaW5kb3cgKnBhcmVudCwgUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lciAqcG9zaXRp b25lcik7CisgICAgICAgICB+UG9wdXAoKSBvdmVycmlkZTsKKyAKKyAgICAgICAgIHZvaWQgZ3Jh YihRV2F5bGFuZElucHV0RGV2aWNlICpzZWF0LCB1aW50IHNlcmlhbCk7CisgICAgICAgICB2b2lk IHhkZ19wb3B1cF9wb3B1cF9kb25lKCkgb3ZlcnJpZGU7CisgCisgICAgICAgICBRV2F5bGFuZFhk Z1N1cmZhY2UgKm1feGRnU3VyZmFjZSA9IG51bGxwdHI7CistICAgICAgICBRV2F5bGFuZFhkZ1N1 cmZhY2UgKm1fcGFyZW50ID0gbnVsbHB0cjsKKysgICAgICAgIFFXYXlsYW5kWGRnU3VyZmFjZSAq bV9wYXJlbnRYZGdTdXJmYWNlID0gbnVsbHB0cjsKKysgICAgICAgIFFXYXlsYW5kV2luZG93ICpt X3BhcmVudCA9IG51bGxwdHI7CisgICAgICAgICBib29sIG1fZ3JhYmJpbmcgPSBmYWxzZTsKKyAg ICAgfTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3Jh dGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFu ZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxs aW50ZWdyYXRpb24uY3BwCitpbmRleCA4NzY5ZDk3MS4uZGEwZGQ2YTcgMTAwNjQ0CistLS0gYS9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4 ZGdzaGVsbGludGVncmF0aW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5jcHAKK0BA IC02OSwyMCArNjksNiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqUVdheWxhbmRYZGdTaGVsbElu dGVncmF0aW9uOjpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaQorICAgICByZXR1cm4gbV94 ZGdTaGVsbC0+Z2V0WGRnU3VyZmFjZSh3aW5kb3cpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kWGRn U2hlbGxJbnRlZ3JhdGlvbjo6aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5k b3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpCisteworLSAgICBpZiAobmV3 Rm9jdXMpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1cmZhY2UgPSBxb2JqZWN0X2Nhc3Q8UVdheWxh bmRYZGdTdXJmYWNlICo+KG5ld0ZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAgICAgICBpZiAo eGRnU3VyZmFjZSAmJiAheGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAgICAg ICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobmV3Rm9jdXMpOworLSAgICB9 CistICAgIGlmIChvbGRGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+ KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1cmZhY2Ug PSBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZh Y2UoKSk7CistICAgICAgICBpZiAoeGRnU3VyZmFjZSAmJiAheGRnU3VyZmFjZS0+aGFuZGxlc0Fj dGl2ZVN0YXRlKCkpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dEZWFjdGl2 YXRlZChvbGRGb2N1cyk7CistICAgIH0KKy19CistCisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UK K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGct c2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRp b25fcC5oCitpbmRleCBiNmNhYTZjOS4uMmY5MjlmOTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGlu dGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmgKK0BAIC02NSw3ICs2 NSw2IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRYZGdTaGVsbEludGVncmF0aW9uKCkge30KKyAg ICAgYm9vbCBpbml0aWFsaXplKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7Cisg ICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaW5k b3cgKndpbmRvdykgb3ZlcnJpZGU7CistICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5n ZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpIG92 ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kWGRnU2hl bGw+IG1feGRnU2hlbGw7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxh bmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlci5jcHAgYi9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5 bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyLmNwcAoraW5kZXggNTI2ZDBlZjQuLmY1MGNjZjMw IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRpbnB1dG1ldGhvZGV2 ZW50YnVpbGRlci5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kaW5wdXRt ZXRob2RldmVudGJ1aWxkZXIuY3BwCitAQCAtMzksNyArMzksMTAgQEAKKyAKKyAjaW5jbHVkZSAi cXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlcl9wLmgiCisgCisrI2luY2x1ZGUgPFFCcnVz aD4KKysjaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorICNpbmNsdWRlIDxRSW5wdXRNZXRob2Q+ CisrI2luY2x1ZGUgPFFQYWxldHRlPgorICNpbmNsdWRlIDxRVGV4dENoYXJGb3JtYXQ+CisgCisg I2lmZGVmIFFUX0JVSUxEX1dBWUxBTkRDT01QT1NJVE9SX0xJQgorQEAgLTgxLDMyICs4NCwzOCBA QCB2b2lkIFFXYXlsYW5kSW5wdXRNZXRob2RFdmVudEJ1aWxkZXI6OmFkZFByZWVkaXRTdHlsaW5n KHVpbnQzMl90IGluZGV4LCB1aW50MzJfdAorICAgICBRVGV4dENoYXJGb3JtYXQgZm9ybWF0Owor IAorICAgICBzd2l0Y2ggKHN0eWxlKSB7CistICAgIGNhc2UgMDoKKy0gICAgY2FzZSAxOgorKyAg ICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfTk9ORToKKysgICAgICAgIGJy ZWFrOworKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfREVGQVVMVDoK KysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX1VOREVSTElORToKKyAg ICAgICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworICAgICAgICAgZm9ybWF0LnNl dFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2luZ2xlVW5kZXJsaW5lKTsKKyAgICAg ICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShR SW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7Cisg ICAgICAgICBicmVhazsKKy0gICAgY2FzZSAyOgorLSAgICBjYXNlIDM6CisrICAgIGNhc2UgWldQ X1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9BQ1RJVkU6CisrICAgIGNhc2UgWldQX1RFWFRf SU5QVVRfVjJfUFJFRURJVF9TVFlMRV9JTkFDVElWRToKKyAgICAgICAgIGZvcm1hdC5zZXRGb250 V2VpZ2h0KFFGb250OjpCb2xkKTsKKyAgICAgICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRy dWUpOworICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6 U2luZ2xlVW5kZXJsaW5lKTsKKyAgICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0 TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5k ZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSA0OgorLSAg ICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7CistICAgICAgICBmb3JtYXQuc2V0 VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUpOworLSAgICAg ICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJ bnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3JtYXQpKTsKKysg ICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX0hJR0hMSUdIVDoKKysgICAg Y2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX1NFTEVDVElPTjoKKysgICAgICAg IHsKKysgICAgICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsKKysgICAgICAg ICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5nbGVVbmRl cmxpbmUpOworKyAgICAgICAgICAgIFFQYWxldHRlIHBhbGV0dGUgPSBxQXBwLT5wYWxldHRlKCk7 CisrICAgICAgICAgICAgZm9ybWF0LnNldEJhY2tncm91bmQoUUJydXNoKHBhbGV0dGUuY29sb3Io UVBhbGV0dGU6OkFjdGl2ZSwgUVBhbGV0dGU6OkhpZ2hsaWdodCkpKTsKKysgICAgICAgICAgICBm b3JtYXQuc2V0Rm9yZWdyb3VuZChRQnJ1c2gocGFsZXR0ZS5jb2xvcihRUGFsZXR0ZTo6QWN0aXZl LCBRUGFsZXR0ZTo6SGlnaGxpZ2h0ZWRUZXh0KSkpOworKyAgICAgICAgICAgIG1fcHJlZWRpdFN0 eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVu dDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisrICAgICAgICB9CisgICAg ICAgICBicmVhazsKKy0gICAgY2FzZSA1OgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BS RUVESVRfU1RZTEVfSU5DT1JSRUNUOgorICAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUo dHJ1ZSk7CisgICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0 OjpXYXZlVW5kZXJsaW5lKTsKKyAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVDb2xvcihRQ29s b3IoUXQ6OnJlZCkpOworICAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRo b2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwg bGVuZ3RoLCBmb3JtYXQpKTsKKyAgICAgICAgIGJyZWFrOworLS8vICAgIGNhc2UgUXRXYXlsYW5k Ojp3bF90ZXh0X2lucHV0OjpwcmVlZGl0X3N0eWxlX3NlbGVjdGlvbjoKKy0vLyAgICBjYXNlIFF0 V2F5bGFuZDo6d2xfdGV4dF9pbnB1dDo6cHJlZWRpdF9zdHlsZV9ub25lOgorICAgICBkZWZhdWx0 OgorICAgICAgICAgYnJlYWs7CisgICAgIH0KK0BAIC0xNTMsNyArMTYyLDcgQEAgUUlucHV0TWV0 aG9kRXZlbnQgUVdheWxhbmRJbnB1dE1ldGhvZEV2ZW50QnVpbGRlcjo6YnVpbGRQcmVlZGl0KGNv bnN0IFFTdHJpbmcgJnQKKyAKKyAgICAgaWYgKG1fcHJlZWRpdEN1cnNvciA8IDApIHsKKyAgICAg ICAgIGF0dHJpYnV0ZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0 TWV0aG9kRXZlbnQ6OkN1cnNvciwgMCwgMCwgUVZhcmlhbnQoKSkpOworLSAgICB9IGVsc2UgaWYg KG1fcHJlZWRpdEN1cnNvciA+IDApIHsKKysgICAgfSBlbHNlIHsKKyAgICAgICAgIGF0dHJpYnV0 ZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6 OkN1cnNvciwgaW5kZXhGcm9tV2F5bGFuZCh0ZXh0LCBtX3ByZWVkaXRDdXJzb3IpLCAxLCBRVmFy aWFudCgpKSk7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3NoYXJlZC9x d2F5bGFuZG1pbWVoZWxwZXIuY3BwIGIvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRtaW1l aGVscGVyLmNwcAoraW5kZXggYTVmZGQzNGQuLmUyZmUxOTI4IDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3NyYy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcAorQEAgLTYwLDcgKzYwLDcgQEAgUUJ5dGVB cnJheSBRV2F5bGFuZE1pbWVIZWxwZXI6OmdldEJ5dGVBcnJheShRTWltZURhdGEgKm1pbWVEYXRh LCBjb25zdCBRU3RyaW5nICYKKyAgICAgICAgICAgICBidWYub3BlbihRSU9EZXZpY2U6OlJlYWRX cml0ZSk7CisgICAgICAgICAgICAgUUJ5dGVBcnJheSBmbXQgPSAiQk1QIjsKKyAgICAgICAgICAg ICBpZiAobWltZVR5cGUuc3RhcnRzV2l0aChRTGF0aW4xU3RyaW5nKCJpbWFnZS8iKSkpIHsKKy0g ICAgICAgICAgICAgICAgUUJ5dGVBcnJheSBpbWdGbXQgPSBtaW1lVHlwZS5taWQoNikudG9VcHBl cigpLnRvTGF0aW4xKCk7CisrICAgICAgICAgICAgICAgIFFCeXRlQXJyYXkgaW1nRm10ID0gbWlt ZVR5cGUubWlkKDYpLnRvTG93ZXIoKS50b0xhdGluMSgpOworICAgICAgICAgICAgICAgICBpZiAo UUltYWdlV3JpdGVyOjpzdXBwb3J0ZWRJbWFnZUZvcm1hdHMoKS5jb250YWlucyhpbWdGbXQpKQor ICAgICAgICAgICAgICAgICAgICAgZm10ID0gaW1nRm10OworICAgICAgICAgICAgIH0KK0BAIC03 NCw3ICs3NCw3IEBAIFFCeXRlQXJyYXkgUVdheWxhbmRNaW1lSGVscGVyOjpnZXRCeXRlQXJyYXko UU1pbWVEYXRhICptaW1lRGF0YSwgY29uc3QgUVN0cmluZyAmCisgICAgICAgICBRTGlzdDxRVXJs PiB1cmxzID0gbWltZURhdGEtPnVybHMoKTsKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg dXJscy5jb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCh1cmxzLmF0 KGkpLnRvRW5jb2RlZCgpKTsKKy0gICAgICAgICAgICBjb250ZW50LmFwcGVuZCgnXG4nKTsKKysg ICAgICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIpOworICAgICAgICAgfQorICAgICB9IGVs c2UgeworICAgICAgICAgY29udGVudCA9IG1pbWVEYXRhLT5kYXRhKG1pbWVUeXBlKTsKK2RpZmYg LS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvZGF0YWRldmljZXYxL3RzdF9kYXRh ZGV2aWNldjEuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZpY2V2MS90 c3RfZGF0YWRldmljZXYxLmNwcAoraW5kZXggMTU2OGIzYjkuLjA2NzQxMGQwIDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZpY2V2MS90c3RfZGF0YWRldmlj ZXYxLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZpY2V2MS90 c3RfZGF0YWRldmljZXYxLmNwcAorQEAgLTM1LDcgKzM1LDcgQEAKKyAKKyB1c2luZyBuYW1lc3Bh Y2UgTW9ja0NvbXBvc2l0b3I7CisgCistY29uc3RleHByIGludCBkYXRhRGV2aWNlVmVyc2lvbiA9 IDE7CisrY29uc3RleHByIGludCBkYXRhRGV2aWNlVmVyc2lvbiA9IDM7CisgCisgY2xhc3MgRGF0 YURldmljZUNvbXBvc2l0b3IgOiBwdWJsaWMgRGVmYXVsdENvbXBvc2l0b3IgeworIHB1YmxpYzoK K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2VhdHY1L3RzdF9zZWF0 djUuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNw cAoraW5kZXggOTMxMmMyZTUuLjJlYTM4MmYxIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3Rz L2F1dG8vY2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3Rz L2F1dG8vY2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAorQEAgLTczLDYgKzczLDcgQEAgcHJp dmF0ZSBzbG90czoKKyAgICAgdm9pZCBtdWx0aVRvdWNoKCk7CisgICAgIHZvaWQgbXVsdGlUb3Vj aFVwQW5kTW90aW9uRnJhbWUoKTsKKyAgICAgdm9pZCB0YXBBbmRNb3ZlSW5TYW1lRnJhbWUoKTsK KysgICAgdm9pZCBjYW5jZWxUb3VjaCgpOworIH07CisgCisgdm9pZCB0c3Rfc2VhdHY1OjpiaW5k c1RvU2VhdCgpCitAQCAtNjQ2LDUgKzY0NywzNCBAQCB2b2lkIHRzdF9zZWF0djU6OnRhcEFuZE1v dmVJblNhbWVGcmFtZSgpCisgICAgIFFUUllfQ09NUEFSRSh3aW5kb3cubV9ldmVudHMubGFzdCgp LnRvdWNoUG9pbnRzLmZpcnN0KCkuc3RhdGUoKSwgUXQ6OlRvdWNoUG9pbnRTdGF0ZTo6VG91Y2hQ b2ludFJlbGVhc2VkKTsKKyB9CisgCisrdm9pZCB0c3Rfc2VhdHY1OjpjYW5jZWxUb3VjaCgpCisr eworKyAgICBUb3VjaFdpbmRvdyB3aW5kb3c7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlko eGRnU3VyZmFjZSgpICYmIHhkZ1N1cmZhY2UoKS0+bV9jb21taXR0ZWRDb25maWd1cmVTZXJpYWwp OworKworKyAgICBleGVjKFs9XSB7CisrICAgICAgICBhdXRvICp0ID0gdG91Y2goKTsKKysgICAg ICAgIGF1dG8gKmMgPSBjbGllbnQoKTsKKysgICAgICAgIHQtPnNlbmREb3duKHhkZ1RvcGxldmVs KCktPnN1cmZhY2UoKSwgezMyLCAzMn0sIDEpOworKyAgICAgICAgdC0+c2VuZEZyYW1lKGMpOwor KyAgICAgICAgdC0+c2VuZENhbmNlbChjKTsKKysgICAgICAgIHQtPnNlbmRGcmFtZShjKTsKKysg ICAgfSk7CisrCisrICAgIFFUUllfVkVSSUZZKCF3aW5kb3cubV9ldmVudHMuZW1wdHkoKSk7Cisr ICAgIHsKKysgICAgICAgIGF1dG8gZSA9IHdpbmRvdy5tX2V2ZW50cy50YWtlRmlyc3QoKTsKKysg ICAgICAgIFFDT01QQVJFKGUudHlwZSwgUUV2ZW50OjpUb3VjaEJlZ2luKTsKKysgICAgICAgIFFD T01QQVJFKGUudG91Y2hQb2ludFN0YXRlcywgUXQ6OlRvdWNoUG9pbnRQcmVzc2VkKTsKKysgICAg ICAgIFFDT01QQVJFKGUudG91Y2hQb2ludHMubGVuZ3RoKCksIDEpOworKyAgICAgICAgUUNPTVBB UkUoZS50b3VjaFBvaW50cy5maXJzdCgpLnBvcygpLCBRUG9pbnRGKDMyLXdpbmRvdy5mcmFtZU1h cmdpbnMoKS5sZWZ0KCksIDMyLXdpbmRvdy5mcmFtZU1hcmdpbnMoKS50b3AoKSkpOworKyAgICB9 CisrICAgIHsKKysgICAgICAgIGF1dG8gZSA9IHdpbmRvdy5tX2V2ZW50cy50YWtlRmlyc3QoKTsK KysgICAgICAgIFFDT01QQVJFKGUudHlwZSwgUUV2ZW50OjpUb3VjaENhbmNlbCk7CisrICAgICAg ICBRQ09NUEFSRShlLnRvdWNoUG9pbnRzLmxlbmd0aCgpLCAwKTsKKysgICAgfQorK30KKysKKyBR Q09NUE9TSVRPUl9URVNUX01BSU4odHN0X3NlYXR2NSkKKyAjaW5jbHVkZSAidHN0X3NlYXR2NS5t b2MiCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3Jl Y29tcG9zaXRvci5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVj b21wb3NpdG9yLmNwcAoraW5kZXggNWM2YzgzYmEuLmZhOWI3NjYyIDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlY29tcG9zaXRvci5jcHAKKysrKyBi L3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZWNvbXBvc2l0b3IuY3BwCitA QCAtMjcsNiArMjcsNyBAQAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgCisgI2luY2x1ZGUgImNv cmVjb21wb3NpdG9yLmgiCisrI2luY2x1ZGUgPHRocmVhZD4KKyAKKyBuYW1lc3BhY2UgTW9ja0Nv bXBvc2l0b3IgeworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9z aGFyZWQvY29yZXByb3RvY29sLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFy ZWQvY29yZXByb3RvY29sLmNwcAoraW5kZXggMGQ5ODg1MjEuLmQxYTJlN2NiIDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuY3BwCisr KysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAK K0BAIC00NTEsNiArNDUxLDEzIEBAIHZvaWQgVG91Y2g6OnNlbmRGcmFtZSh3bF9jbGllbnQgKmNs aWVudCkKKyAgICAgICAgIHNlbmRfZnJhbWUoci0+aGFuZGxlKTsKKyB9CisgCisrdm9pZCBUb3Vj aDo6c2VuZENhbmNlbCh3bF9jbGllbnQgKmNsaWVudCkKKyt7CisrICAgIGNvbnN0IGF1dG8gdG91 Y2hSZXNvdXJjZXMgPSByZXNvdXJjZU1hcCgpLnZhbHVlcyhjbGllbnQpOworKyAgICBmb3IgKGF1 dG8gKnIgOiB0b3VjaFJlc291cmNlcykKKysgICAgICAgIHNlbmRfY2FuY2VsKHItPmhhbmRsZSk7 CisrfQorKworIHVpbnQgS2V5Ym9hcmQ6OnNlbmRFbnRlcihTdXJmYWNlICpzdXJmYWNlKQorIHsK KyAgICAgYXV0byBzZXJpYWwgPSBtX3NlYXQtPm1fY29tcG9zaXRvci0+bmV4dFNlcmlhbCgpOwor ZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3Rv Y29sLmggYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5o CitpbmRleCBhMWFmMTM3YS4uMjEwZDhkZGIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMv YXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oCisrKysgYi9xdHdheWxhbmQvdGVzdHMv YXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oCitAQCAtMTU4LDcgKzE1OCw3IEBAIGNs YXNzIFdsQ29tcG9zaXRvciA6IHB1YmxpYyBHbG9iYWwsIHB1YmxpYyBRdFdheWxhbmRTZXJ2ZXI6 OndsX2NvbXBvc2l0b3IKKyB7CisgICAgIFFfT0JKRUNUCisgcHVibGljOgorLSAgICBleHBsaWNp dCBXbENvbXBvc2l0b3IoQ29yZUNvbXBvc2l0b3IgKmNvbXBvc2l0b3IsIGludCB2ZXJzaW9uID0g MykKKysgICAgZXhwbGljaXQgV2xDb21wb3NpdG9yKENvcmVDb21wb3NpdG9yICpjb21wb3NpdG9y LCBpbnQgdmVyc2lvbiA9IDQpCisgICAgICAgICA6IFF0V2F5bGFuZFNlcnZlcjo6d2xfY29tcG9z aXRvcihjb21wb3NpdG9yLT5tX2Rpc3BsYXksIHZlcnNpb24pCisgICAgICAgICAsIG1fY29tcG9z aXRvcihjb21wb3NpdG9yKQorICAgICB7fQorQEAgLTM2NCw2ICszNjQsNyBAQCBwdWJsaWM6Cisg ICAgIHVpbnQgc2VuZFVwKHdsX2NsaWVudCAqY2xpZW50LCBpbnQgaWQpOworICAgICB2b2lkIHNl bmRNb3Rpb24od2xfY2xpZW50ICpjbGllbnQsIGNvbnN0IFFQb2ludEYgJnBvc2l0aW9uLCBpbnQg aWQpOworICAgICB2b2lkIHNlbmRGcmFtZSh3bF9jbGllbnQgKmNsaWVudCk7CisrICAgIHZvaWQg c2VuZENhbmNlbCh3bF9jbGllbnQgKmNsaWVudCk7CisgCisgICAgIFNlYXQgKm1fc2VhdCA9IG51 bGxwdHI7CisgfTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hh cmVkX29sZC9tb2NrY29tcG9zaXRvci5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQv c2hhcmVkX29sZC9tb2NrY29tcG9zaXRvci5jcHAKK2luZGV4IGE0MTVjYmY1Li5iMWQzZDA3ZCAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tj b21wb3NpdG9yLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9v bGQvbW9ja2NvbXBvc2l0b3IuY3BwCitAQCAtMzQyLDcgKzM0Miw3IEBAIENvbXBvc2l0b3I6OkNv bXBvc2l0b3IoTW9ja0NvbXBvc2l0b3IgKm1vY2tDb21wb3NpdG9yKQorICAgICAgICAgZXhpdChF WElUX0ZBSUxVUkUpOworICAgICB9CisgCistICAgIHdsX2dsb2JhbF9jcmVhdGUobV9kaXNwbGF5 LCAmd2xfY29tcG9zaXRvcl9pbnRlcmZhY2UsIDEsIHRoaXMsIGJpbmRDb21wb3NpdG9yKTsKKysg ICAgd2xfZ2xvYmFsX2NyZWF0ZShtX2Rpc3BsYXksICZ3bF9jb21wb3NpdG9yX2ludGVyZmFjZSwg NCwgdGhpcywgYmluZENvbXBvc2l0b3IpOworIAorICAgICBtX2RhdGFfZGV2aWNlX21hbmFnZXIu cmVzZXQobmV3IERhdGFEZXZpY2VNYW5hZ2VyKHRoaXMsIG1fZGlzcGxheSkpOworIAorZGlmZiAt LWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNl LmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNl LmNwcAoraW5kZXggZTlkZjVmOTAuLmMzMjQ2ZTRhIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rl c3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuY3BwCisrKysgYi9xdHdheWxh bmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5jcHAKK0BAIC0xMjUs NiArMTI1LDE2IEBAIHZvaWQgU3VyZmFjZTo6c3VyZmFjZV9kYW1hZ2UoUmVzb3VyY2UgKnJlc291 cmNlLAorICAgICBRX1VOVVNFRChoZWlnaHQpOworIH0KKyAKKyt2b2lkIFN1cmZhY2U6OnN1cmZh Y2VfZGFtYWdlX2J1ZmZlcihSZXNvdXJjZSAqcmVzb3VyY2UsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGlu dDMyX3QgaGVpZ2h0KQorK3sKKysgICAgUV9VTlVTRUQocmVzb3VyY2UpOworKyAgICBRX1VOVVNF RCh4KTsKKysgICAgUV9VTlVTRUQoeSk7CisrICAgIFFfVU5VU0VEKHdpZHRoKTsKKysgICAgUV9V TlVTRUQoaGVpZ2h0KTsKKyt9CisrCisgdm9pZCBTdXJmYWNlOjpzdXJmYWNlX2ZyYW1lKFJlc291 cmNlICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY2Fs bGJhY2spCisgeworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFy ZWRfb2xkL21vY2tzdXJmYWNlLmggYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVk X29sZC9tb2Nrc3VyZmFjZS5oCitpbmRleCA5NDlkYzIzZC4uZDE3NjgzN2UgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5oCisr KysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5o CitAQCAtNjUsNiArNjUsOCBAQCBwcm90ZWN0ZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHdsX3Jlc291cmNlICpidWZmZXIsIGludCB4LCBpbnQgeSkgb3ZlcnJpZGU7CisgICAg IHZvaWQgc3VyZmFjZV9kYW1hZ2UoUmVzb3VyY2UgKnJlc291cmNlLAorICAgICAgICAgICAgICAg ICAgICAgICAgIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl aWdodCkgb3ZlcnJpZGU7CisrICAgIHZvaWQgc3VyZmFjZV9kYW1hZ2VfYnVmZmVyKFJlc291cmNl ICpyZXNvdXJjZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB4LCBp bnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICAg dm9pZCBzdXJmYWNlX2ZyYW1lKFJlc291cmNlICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMl90IGNhbGxiYWNrKSBvdmVycmlkZTsKKyAgICAgdm9pZCBzdXJmYWNlX2Nv bW1pdChSZXNvdXJjZSAqcmVzb3VyY2UpIG92ZXJyaWRlOworZGlmZiAtLWdpdCBhL3F0d2F5bGFu ZC90ZXN0cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcCBiL3F0d2F5bGFuZC90 ZXN0cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcAoraW5kZXggOTVlNGU2MDku LjYwYzY3MmNlIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3N1cmZh Y2UvdHN0X3N1cmZhY2UuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3Vy ZmFjZS90c3Rfc3VyZmFjZS5jcHAKK0BAIC0xMjksNiArMTI5LDEwIEBAIHZvaWQgdHN0X3N1cmZh Y2U6OndhaXRGb3JGcmFtZUNhbGxiYWNrR2woKQorICAgICAvLyBNYWtlIHN1cmUgd2UgZm9sbG93 IGZyYW1lIGNhbGxiYWNrcyBmb3Igc29tZSBmcmFtZXMKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkg PCA1OyArK2kpIHsKKyAgICAgICAgIHhkZ1BpbmdBbmRXYWl0Rm9yUG9uZygpOyAvLyBNYWtlIHN1 cmUgdGhpbmdzIGhhdmUgaGFwcGVuZWQgb24gdGhlIGNsaWVudAorKyAgICAgICAgaWYgKCFxRW52 aXJvbm1lbnRWYXJpYWJsZUludFZhbHVlKCJRVF9XQVlMQU5EX0RJU0FCTEVfV0lORE9XREVDT1JB VElPTiIpICYmIGkgPT0gMCkgeworKyAgICAgICAgICAgIFFDT01QQVJFKGJ1ZmZlclNweS5jb3Vu dCgpLCAxKTsKKysgICAgICAgICAgICBidWZmZXJTcHkucmVtb3ZlRmlyc3QoKTsKKysgICAgICAg IH0KKyAgICAgICAgIGV4ZWMoWyZdIHsKKyAgICAgICAgICAgICBRVkVSSUZZKGJ1ZmZlclNweS5l bXB0eSgpKTsgLy8gTWFrZSBzdXJlIG5vIGV4dHJhIGJ1ZmZlcnMgaGF2ZSBhcnJpdmVkCisgICAg ICAgICAgICAgUVZFUklGWSgheGRnVG9wbGV2ZWwoKS0+c3VyZmFjZSgpLT5tX3dhaXRpbmdGcmFt ZUNhbGxiYWNrcy5lbXB0eSgpKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9j bGllbnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2Ns aWVudC94ZGdzaGVsbC90c3RfeGRnc2hlbGwuY3BwCitpbmRleCAyMjc3YmJiOC4uNzQ3ODc1YjQg MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQveGRnc2hlbGwvdHN0X3hk Z3NoZWxsLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3hkZ3NoZWxsL3Rz dF94ZGdzaGVsbC5jcHAKK0BAIC0zMSw2ICszMSw3IEBACisgI2luY2x1ZGUgPFF0R3VpL1FPcGVu R0xXaW5kb3c+CisgI2luY2x1ZGUgPFF0R3VpL3FwYS9xcGxhdGZvcm1uYXRpdmVpbnRlcmZhY2Uu aD4KKyAjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvd2F5bGFuZC13YXlsYW5kLWNs aWVudC1wcm90b2NvbC5oPgorKyNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQvcHJpdmF0ZS9xd2F5 bGFuZHdpbmRvd19wLmg+CisgCisgdXNpbmcgbmFtZXNwYWNlIE1vY2tDb21wb3NpdG9yOworIAor QEAgLTQ1LDYgKzQ2LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBjb25maWd1cmVTdGF0 ZXMoKTsKKyAgICAgdm9pZCBwb3B1cCgpOworICAgICB2b2lkIHRvb2x0aXBPblBvcHVwKCk7Cisr ICAgIHZvaWQgdG9vbHRpcEFuZFNpYmxpbmdQb3B1cCgpOworICAgICB2b2lkIHN3aXRjaFBvcHVw cygpOworICAgICB2b2lkIGhpZGVQb3B1cFBhcmVudCgpOworICAgICB2b2lkIHBvbmdzKCk7CitA QCAtMTM4LDYgKzE0MCw3IEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjpjb25maWd1cmVTaXplKCkKKyAK KyB2b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmlndXJlU3RhdGVzKCkKKyB7CisrICAgIFFWRVJJRlko cXB1dGVudigiUVRfV0FZTEFORF9GUkFNRV9DQUxMQkFDS19USU1FT1VUIiwgIjAiKSk7CisgICAg IFFSYXN0ZXJXaW5kb3cgd2luZG93OworICAgICB3aW5kb3cucmVzaXplKDY0LCA0OCk7CisgICAg IHdpbmRvdy5zaG93KCk7CitAQCAtMTU0LDkgKzE1NywxMiBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6 Y29uZmlndXJlU3RhdGVzKCkKKyAgICAgLy8gVG9wbGV2ZWwgd2luZG93cyBkb24ndCBrbm93IHRo ZWlyIHBvc2l0aW9uIG9uIHhkZy1zaGVsbAorIC8vICAgIFFDT01QQVJFKHdpbmRvdy5mcmFtZUdl b21ldHJ5KCkudG9wTGVmdCgpLCBRUG9pbnQoKSk7IC8vIFRPRE86IHRoaXMgZG9lc24ndCBjdXJy ZW50bHkgd29yayB3aGVuIHdpbmRvdyBkZWNvcmF0aW9ucyBhcmUgZW5hYmxlZAorIAorLS8vICAg IFFFWFBFQ1RfRkFJTCgiIiwgImNvbmZpZ3VyZSBoYXMgYWxyZWFkeSBiZWVuIGFja2VkLCB3ZSBz aG91bGRuJ3QgaGF2ZSB0byB3YWl0IGZvciBpc0FjdGl2ZSIsIENvbnRpbnVlKTsKKy0vLyAgICBR VkVSSUZZKHdpbmRvdy5pc0FjdGl2ZSgpKTsKKy0gICAgUVRSWV9WRVJJRlkod2luZG93LmlzQWN0 aXZlKCkpOyAvLyBKdXN0IG1ha2Ugc3VyZSBpdCBldmVudHVhbGx5IGdldCdzIHNldCBjb3JyZWN0 bHkKKysgICAgLy8gd2luZG93LndpbmRvd3N0YXRlKCkgaXMgZHJpdmVuIGJ5IGtleWJvYXJkIGZv Y3VzLCBob3dldmVyIGZvciBkZWNvcmF0aW9ucyB3ZSB3YW50IHRvIGZvbGxvdworKyAgICAvLyBY REdTaGVsbCB0aGlzIGlzIGludGVybmFsIHRvIFF0V2F5bGFuZCBzbyBpdCBpcyBxdWVyaWVkIGRp cmVjdGx5CisrICAgIGF1dG8gd2F5bGFuZFdpbmRvdyA9IHN0YXRpY19jYXN0PFF0V2F5bGFuZENs aWVudDo6UVdheWxhbmRXaW5kb3cgKj4od2luZG93LmhhbmRsZSgpKTsKKysgICAgUV9BU1NFUlQo d2F5bGFuZFdpbmRvdyk7CisrICAgIFFUUllfVkVSSUZZKHdheWxhbmRXaW5kb3ctPndpbmRvd1N0 YXRlcygpLnRlc3RGbGFnKAorKyAgICAgICAgICAgIFF0OjpXaW5kb3dBY3RpdmUpKTsgLy8gSnVz dCBtYWtlIHN1cmUgaXQgZXZlbnR1YWxseSBnZXQncyBzZXQgY29ycmVjdGx5CisgCisgICAgIGNv bnN0IFFTaXplIHNjcmVlblNpemUoNjQwLCA0ODApOworICAgICBjb25zdCB1aW50IG1heGltaXpl ZFNlcmlhbCA9IGV4ZWMoWz1dIHsKK0BAIC0xODYsNiArMTkyLDcgQEAgdm9pZCB0c3RfeGRnc2hl bGw6OmNvbmZpZ3VyZVN0YXRlcygpCisgICAgIFFDT01QQVJFKHdpbmRvdy53aW5kb3dTdGF0ZXMo KSwgUXQ6OldpbmRvd05vU3RhdGUpOworICAgICBRQ09NUEFSRSh3aW5kb3cuZnJhbWVHZW9tZXRy eSgpLnNpemUoKSwgd2luZG93ZWRTaXplKTsKKyAvLyAgICBRQ09NUEFSRSh3aW5kb3cuZnJhbWVH ZW9tZXRyeSgpLnRvcExlZnQoKSwgUVBvaW50KCkpOyAvLyBUT0RPOiB0aGlzIGRvZXNuJ3QgY3Vy cmVudGx5IHdvcmsgd2hlbiB3aW5kb3cgZGVjb3JhdGlvbnMgYXJlIGVuYWJsZWQKKysgICAgUVZF UklGWShxdW5zZXRlbnYoIlFUX1dBWUxBTkRfRlJBTUVfQ0FMTEJBQ0tfVElNRU9VVCIpKTsKKyB9 CisgCisgdm9pZCB0c3RfeGRnc2hlbGw6OnBvcHVwKCkKK0BAIC0zNDAsNiArMzQ3LDkyIEBAIHZv aWQgdHN0X3hkZ3NoZWxsOjp0b29sdGlwT25Qb3B1cCgpCisgICAgIFFDT01QT1NJVE9SX1RSWV9D T01QQVJFKHhkZ1BvcHVwKDApLCBudWxscHRyKTsKKyB9CisgCisrdm9pZCB0c3RfeGRnc2hlbGw6 OnRvb2x0aXBBbmRTaWJsaW5nUG9wdXAoKQorK3sKKysgICAgY2xhc3MgVG9vbFRpcCA6IHB1Ymxp YyBRUmFzdGVyV2luZG93IHsKKysgICAgcHVibGljOgorKyAgICAgICAgZXhwbGljaXQgVG9vbFRp cChRV2luZG93ICpwYXJlbnQpIHsKKysgICAgICAgICAgICBzZXRUcmFuc2llbnRQYXJlbnQocGFy ZW50KTsKKysgICAgICAgICAgICBzZXRGbGFncyhRdDo6VG9vbFRpcCk7CisrICAgICAgICAgICAg cmVzaXplKDEwMCwgMTAwKTsKKysgICAgICAgICAgICBzaG93KCk7CisrICAgICAgICB9CisrICAg ICAgICB2b2lkIG1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVudCAqZXZlbnQpIG92ZXJyaWRlIHsK KysgICAgICAgICAgICBRUmFzdGVyV2luZG93Ojptb3VzZVByZXNzRXZlbnQoZXZlbnQpOworKyAg ICAgICAgICAgIG1fcG9wdXAgPSBuZXcgUVJhc3RlcldpbmRvdzsKKysgICAgICAgICAgICBtX3Bv cHVwLT5zZXRUcmFuc2llbnRQYXJlbnQodHJhbnNpZW50UGFyZW50KCkpOworKyAgICAgICAgICAg IG1fcG9wdXAtPnNldEZsYWdzKFF0OjpQb3B1cCk7CisrICAgICAgICAgICAgbV9wb3B1cC0+cmVz aXplKDEwMCwgMTAwKTsKKysgICAgICAgICAgICBtX3BvcHVwLT5zaG93KCk7CisrICAgICAgICB9 CisrCisrICAgICAgICBRUmFzdGVyV2luZG93ICptX3BvcHVwID0gbnVsbHB0cjsKKysgICAgfTsK KysKKysgICAgY2xhc3MgV2luZG93IDogcHVibGljIFFSYXN0ZXJXaW5kb3cgeworKyAgICBwdWJs aWM6CisrICAgICAgICB2b2lkIG1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVudCAqZXZlbnQpIG92 ZXJyaWRlIHsKKysgICAgICAgICAgICBRUmFzdGVyV2luZG93Ojptb3VzZVByZXNzRXZlbnQoZXZl bnQpOworKyAgICAgICAgICAgIG1fdG9vbHRpcCA9IG5ldyBUb29sVGlwKHRoaXMpOworKyAgICAg ICAgfQorKyAgICAgICAgVG9vbFRpcCAqbV90b29sdGlwID0gbnVsbHB0cjsKKysgICAgfTsKKysK KysgICAgV2luZG93IHdpbmRvdzsKKysgICAgd2luZG93LnJlc2l6ZSgyMDAsIDIwMCk7CisrICAg IHdpbmRvdy5zaG93KCk7CisrCisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnVG9wbGV2 ZWwoKSk7CisrICAgIGV4ZWMoWz1dIHsgeGRnVG9wbGV2ZWwoKS0+c2VuZENvbXBsZXRlQ29uZmln dXJlKCk7IH0pOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1RvcGxldmVsKCktPm1f eGRnU3VyZmFjZS0+bV9jb21taXR0ZWRDb25maWd1cmVTZXJpYWwpOworKworKyAgICBleGVjKFs9 XSB7CisrICAgICAgICBhdXRvICpzdXJmYWNlID0geGRnVG9wbGV2ZWwoKS0+c3VyZmFjZSgpOwor KyAgICAgICAgYXV0byAqcCA9IHBvaW50ZXIoKTsKKysgICAgICAgIGF1dG8gKmMgPSBjbGllbnQo KTsKKysgICAgICAgIHAtPnNlbmRFbnRlcihzdXJmYWNlLCB7MTAwLCAxMDB9KTsKKysgICAgICAg IHAtPnNlbmRGcmFtZShjKTsKKysgICAgICAgIHAtPnNlbmRCdXR0b24oY2xpZW50KCksIEJUTl9M RUZULCBQb2ludGVyOjpidXR0b25fc3RhdGVfcHJlc3NlZCk7CisrICAgICAgICBwLT5zZW5kQnV0 dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9uX3N0YXRlX3JlbGVhc2VkKTsK KysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgICAgIHAtPnNlbmRMZWF2ZShzdXJmYWNl KTsKKysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgfSk7CisrCisrICAgIFFDT01QT1NJ VE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoKSk7CisrICAgIGV4ZWMoWz1dIHsgeGRnUG9wdXAoKS0+ c2VuZENvbXBsZXRlQ29uZmlndXJlKFFSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOyB9KTsKKysg ICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgpLT5tX3hkZ1N1cmZhY2UtPm1fY29t bWl0dGVkQ29uZmlndXJlU2VyaWFsKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSgheGRn UG9wdXAoKS0+bV9ncmFiYmVkKTsKKysKKysgICAgZXhlYyhbPV0geworKyAgICAgICAgYXV0byAq c3VyZmFjZSA9IHhkZ1BvcHVwKCktPnN1cmZhY2UoKTsKKysgICAgICAgIGF1dG8gKnAgPSBwb2lu dGVyKCk7CisrICAgICAgICBhdXRvICpjID0gY2xpZW50KCk7CisrICAgICAgICBwLT5zZW5kRW50 ZXIoc3VyZmFjZSwgezEwMCwgMTAwfSk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAg ICAgICBwLT5zZW5kQnV0dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9uX3N0 YXRlX3ByZXNzZWQpOworKyAgICAgICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xFRlQs IFBvaW50ZXI6OmJ1dHRvbl9zdGF0ZV9yZWxlYXNlZCk7CisrICAgICAgICBwLT5zZW5kRnJhbWUo Yyk7CisrICAgIH0pOworKworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDEp KTsKKysgICAgZXhlYyhbPV0geyB4ZGdQb3B1cCgxKS0+c2VuZENvbXBsZXRlQ29uZmlndXJlKFFS ZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOyB9KTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklG WSh4ZGdQb3B1cCgxKS0+bV94ZGdTdXJmYWNlLT5tX2NvbW1pdHRlZENvbmZpZ3VyZVNlcmlhbCk7 CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMSktPm1fZ3JhYmJlZCk7Cisr CisrICAgIC8vIENsb3NlIHRoZSBtaWRkbGUgdG9vbHRpcCAoaXQgc2hvdWxkIG5vdCBjbG9zZSB0 aGUgc2libGluZyBwb3B1cCkKKysgICAgd2luZG93Lm1fdG9vbHRpcC0+Y2xvc2UoKTsKKysKKysg ICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAoMSksIG51bGxwdHIpOworKyAgICAv LyBWZXJpZnkgdGhlIHJlbWFpbmluZyB4ZGcgc3VyZmFjZSBpcyBhIGdyYWIgcG9wdXAuLgorKyAg ICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDApKTsKKysgICAgUUNPTVBPU0lUT1Jf VFJZX1ZFUklGWSh4ZGdQb3B1cCgwKS0+bV9ncmFiYmVkKTsKKysKKysgICAgd2luZG93Lm1fdG9v bHRpcC0+bV9wb3B1cC0+Y2xvc2UoKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRn UG9wdXAoMSksIG51bGxwdHIpOworKyAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdQb3B1 cCgwKSwgbnVsbHB0cik7CisrfQorKworIC8vIFFUQlVHLTY1NjgwCisgdm9pZCB0c3RfeGRnc2hl bGw6OnN3aXRjaFBvcHVwcygpCisgeworQEAgLTUwNSw3ICs1OTgsNyBAQCB2b2lkIHRzdF94ZGdz aGVsbDo6bWluTWF4U2l6ZSgpCisgICAgIHdpbmRvdy5zaG93KCk7CisgICAgIFFDT01QT1NJVE9S X1RSWV9WRVJJRlkoeGRnVG9wbGV2ZWwoKSk7CisgCistICAgIGV4ZWMoWz1dIHsgeGRnVG9wbGV2 ZWwoKS0+c2VuZENvbXBsZXRlQ29uZmlndXJlKCk7IH0pOworKyAgICAvLyB3ZSBkb24ndCByb3Vu ZHRyaXAgd2l0aCBvdXIgY29uZmlndXJhdGlvbiB0aGUgaW5pdGlhbCBjb21taXQgc2hvdWxkIGJl IGNvcnJlY3QKKyAKKyAgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnVG9wbGV2ZWwoKS0+ bV9jb21taXR0ZWQubWluU2l6ZSwgUVNpemUoMTAwLCAxMDApKTsKKyAgICAgUUNPTVBPU0lUT1Jf VFJZX0NPTVBBUkUoeGRnVG9wbGV2ZWwoKS0+bV9jb21taXR0ZWQubWF4U2l6ZSwgUVNpemUoMTAw MCwgMTAwMCkpOworU3VibW9kdWxlIHF0d2ViY2hhbm5lbCA2MTg0MjJlZS4uZjg5NDk2NTU6Citk aWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlz aGVyLmNwcCBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hl ci5jcHAKK2luZGV4IDUzNmViNWMuLjg5OGQ3NjkgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwv c3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwCisrKysgYi9xdHdlYmNoYW5u ZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwCitAQCAtMTg2LDggKzE4 Niw2IEBAIFFfREVDTEFSRV9UWVBFSU5GTyhPdmVybG9hZFJlc29sdXRpb25DYW5kaWRhdGUsIFFf TU9WQUJMRV9UWVBFKTsKKyBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6UU1ldGFPYmplY3RQdWJsaXNo ZXIoUVdlYkNoYW5uZWwgKndlYkNoYW5uZWwpCisgICAgIDogUU9iamVjdCh3ZWJDaGFubmVsKQor ICAgICAsIHdlYkNoYW5uZWwod2ViQ2hhbm5lbCkKKy0gICAgLCBzaWduYWxIYW5kbGVyKHRoaXMp CistICAgICwgY2xpZW50SXNJZGxlKGZhbHNlKQorICAgICAsIGJsb2NrVXBkYXRlcyhmYWxzZSkK KyAgICAgLCBwcm9wZXJ0eVVwZGF0ZXNJbml0aWFsaXplZChmYWxzZSkKKyB7CitAQCAtMzAxLDE3 ICsyOTksMTcgQEAgUUpzb25PYmplY3QgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmNsYXNzSW5mb0Zv ck9iamVjdChjb25zdCBRT2JqZWN0ICpvYmplY3QsIFFXZWIKKyAgICAgcmV0dXJuIGRhdGE7Cisg fQorIAorLXZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNldENsaWVudElzSWRsZShib29sIGlz SWRsZSkKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZXRDbGllbnRJc0lkbGUoYm9vbCBp c0lkbGUsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKKyB7CistICAg IGlmIChjbGllbnRJc0lkbGUgPT0gaXNJZGxlKSB7CistICAgICAgICByZXR1cm47CistICAgIH0K Ky0gICAgY2xpZW50SXNJZGxlID0gaXNJZGxlOworLSAgICBpZiAoIWlzSWRsZSAmJiB0aW1lci5p c0FjdGl2ZSgpKSB7CistICAgICAgICB0aW1lci5zdG9wKCk7CistICAgIH0gZWxzZSBpZiAoaXNJ ZGxlICYmICF0aW1lci5pc0FjdGl2ZSgpKSB7CistICAgICAgICB0aW1lci5zdGFydChQUk9QRVJU WV9VUERBVEVfSU5URVJWQUwsIHRoaXMpOworLSAgICB9CisrICAgIHRyYW5zcG9ydFN0YXRlW3Ry YW5zcG9ydF0uY2xpZW50SXNJZGxlID0gaXNJZGxlOworKyAgICBpZiAoaXNJZGxlKQorKyAgICAg ICAgc2VuZEVucXVldWVkUHJvcGVydHlVcGRhdGVzKHRyYW5zcG9ydCk7CisrfQorKworK2Jvb2wg UU1ldGFPYmplY3RQdWJsaXNoZXI6OmlzQ2xpZW50SWRsZShRV2ViQ2hhbm5lbEFic3RyYWN0VHJh bnNwb3J0ICp0cmFuc3BvcnQpCisreworKyAgICBhdXRvIGZvdW5kID0gdHJhbnNwb3J0U3RhdGUu ZmluZCh0cmFuc3BvcnQpOworKyAgICByZXR1cm4gZm91bmQgIT0gdHJhbnNwb3J0U3RhdGUuZW5k KCkgJiYgZm91bmQudmFsdWUoKS5jbGllbnRJc0lkbGU7CisgfQorIAorIFFKc29uT2JqZWN0IFFN ZXRhT2JqZWN0UHVibGlzaGVyOjppbml0aWFsaXplQ2xpZW50KFFXZWJDaGFubmVsQWJzdHJhY3RU cmFuc3BvcnQgKnRyYW5zcG9ydCkKK0BAIC0zMzMsNiArMzMxLDcgQEAgUUpzb25PYmplY3QgUU1l dGFPYmplY3RQdWJsaXNoZXI6OmluaXRpYWxpemVDbGllbnQoUVdlYkNoYW5uZWxBYnN0cmFjdFRy YW5zcG9ydAorIAorIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmluaXRpYWxpemVQcm9wZXJ0 eVVwZGF0ZXMoY29uc3QgUU9iamVjdCAqY29uc3Qgb2JqZWN0LCBjb25zdCBRSnNvbk9iamVjdCAm b2JqZWN0SW5mbykKKyB7CisrICAgIGF1dG8gKnNpZ25hbEhhbmRsZXIgPSBzaWduYWxIYW5kbGVy Rm9yKG9iamVjdCk7CisgICAgIGZvcmVhY2ggKGNvbnN0IFFKc29uVmFsdWUgJnByb3BlcnR5SW5m b1Zhciwgb2JqZWN0SW5mb1tLRVlfUFJPUEVSVElFU10udG9BcnJheSgpKSB7CisgICAgICAgICBj b25zdCBRSnNvbkFycmF5ICZwcm9wZXJ0eUluZm8gPSBwcm9wZXJ0eUluZm9WYXIudG9BcnJheSgp OworICAgICAgICAgaWYgKHByb3BlcnR5SW5mby5zaXplKCkgPCAyKSB7CitAQCAtMzUzLDE5ICsz NTIsMTkgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW5pdGlhbGl6ZVByb3BlcnR5VXBk YXRlcyhjb25zdCBRT2JqZWN0ICpjb25zdCBvYmplY3QKKyAKKyAgICAgICAgIC8vIE9ubHkgY29u bmVjdCBmb3IgYSBwcm9wZXJ0eSB1cGRhdGUgb25jZQorICAgICAgICAgaWYgKGNvbm5lY3RlZFBy b3BlcnRpZXMuaXNFbXB0eSgpKSB7CistICAgICAgICAgICAgc2lnbmFsSGFuZGxlci5jb25uZWN0 VG8ob2JqZWN0LCBzaWduYWxJbmRleCk7CisrICAgICAgICAgICAgc2lnbmFsSGFuZGxlci0+Y29u bmVjdFRvKG9iamVjdCwgc2lnbmFsSW5kZXgpOworICAgICAgICAgfQorIAorICAgICAgICAgY29u bmVjdGVkUHJvcGVydGllcy5pbnNlcnQocHJvcGVydHlJbmRleCk7CisgICAgIH0KKyAKKyAgICAg Ly8gYWxzbyBhbHdheXMgY29ubmVjdCB0byBkZXN0cm95ZWQgc2lnbmFsCistICAgIHNpZ25hbEhh bmRsZXIuY29ubmVjdFRvKG9iamVjdCwgc19kZXN0cm95ZWRTaWduYWxJbmRleCk7CisrICAgIHNp Z25hbEhhbmRsZXItPmNvbm5lY3RUbyhvYmplY3QsIHNfZGVzdHJveWVkU2lnbmFsSW5kZXgpOwor IH0KKyAKKyB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZW5kUGVuZGluZ1Byb3BlcnR5VXBk YXRlcygpCisgeworLSAgICBpZiAoYmxvY2tVcGRhdGVzIHx8ICFjbGllbnRJc0lkbGUgfHwgcGVu ZGluZ1Byb3BlcnR5VXBkYXRlcy5pc0VtcHR5KCkpIHsKKysgICAgaWYgKGJsb2NrVXBkYXRlcykg eworICAgICAgICAgcmV0dXJuOworICAgICB9CisgCitAQCAtNDE1LDE4ICs0MTQsMTkgQEAgdm9p ZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2VuZFBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMoKQorIAor ICAgICAvLyBkYXRhIGRvZXMgbm90IGNvbnRhaW4gc3BlY2lmaWMgdXBkYXRlcworICAgICBpZiAo IWRhdGEuaXNFbXB0eSgpKSB7CistICAgICAgICBzZXRDbGllbnRJc0lkbGUoZmFsc2UpOworLQor ICAgICAgICAgbWVzc2FnZVtLRVlfREFUQV0gPSBkYXRhOworLSAgICAgICAgYnJvYWRjYXN0TWVz c2FnZShtZXNzYWdlKTsKKysgICAgICAgIGVucXVldWVCcm9hZGNhc3RNZXNzYWdlKG1lc3NhZ2Up OworICAgICB9CisgCisgICAgIC8vIHNlbmQgZXZlcnkgcHJvcGVydHkgdXBkYXRlIHdoaWNoIGlz IG5vdCBzdXBwb3NlZCB0byBiZSBicm9hZGNhc3RlZAorICAgICBjb25zdCBRSGFzaDxRV2ViQ2hh bm5lbEFic3RyYWN0VHJhbnNwb3J0KiwgUUpzb25BcnJheT46OmNvbnN0X2l0ZXJhdG9yIHN1ZW5k ID0gc3BlY2lmaWNVcGRhdGVzLmNvbnN0RW5kKCk7CisgICAgIGZvciAoUUhhc2g8UVdlYkNoYW5u ZWxBYnN0cmFjdFRyYW5zcG9ydCosIFFKc29uQXJyYXk+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNw ZWNpZmljVXBkYXRlcy5jb25zdEJlZ2luKCk7IGl0ICE9IHN1ZW5kOyArK2l0KSB7CisgICAgICAg ICBtZXNzYWdlW0tFWV9EQVRBXSA9IGl0LnZhbHVlKCk7CistICAgICAgICBpdC5rZXkoKS0+c2Vu ZE1lc3NhZ2UobWVzc2FnZSk7CisrICAgICAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdlLCBpdC5r ZXkoKSk7CisgICAgIH0KKysKKysgICAgZm9yIChhdXRvIHN0YXRlID0gdHJhbnNwb3J0U3RhdGUu YmVnaW4oKTsgc3RhdGUgIT0gdHJhbnNwb3J0U3RhdGUuZW5kKCk7ICsrc3RhdGUpCisrICAgICAg ICBzZW5kRW5xdWV1ZWRQcm9wZXJ0eVVwZGF0ZXMoc3RhdGUua2V5KCkpOworIH0KKyAKKyBRVmFy aWFudCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW52b2tlTWV0aG9kKFFPYmplY3QgKmNvbnN0IG9i amVjdCwgY29uc3QgUU1ldGFNZXRob2QgJm1ldGhvZCwKK0BAIC01NzIsNyArNTcyLDcgQEAgdm9p ZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2lnbmFsRW1pdHRlZChjb25zdCBRT2JqZWN0ICpvYmpl Y3QsIGNvbnN0IGludCBzaWduYWwKKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIHsKKyAgICAgICAg IHBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXNbb2JqZWN0XVtzaWduYWxJbmRleF0gPSBhcmd1bWVudHM7 CistICAgICAgICBpZiAoY2xpZW50SXNJZGxlICYmICFibG9ja1VwZGF0ZXMgJiYgIXRpbWVyLmlz QWN0aXZlKCkpIHsKKysgICAgICAgIGlmICghYmxvY2tVcGRhdGVzICYmICF0aW1lci5pc0FjdGl2 ZSgpKSB7CisgICAgICAgICAgICAgdGltZXIuc3RhcnQoUFJPUEVSVFlfVVBEQVRFX0lOVEVSVkFM LCB0aGlzKTsKKyAgICAgICAgIH0KKyAgICAgfQorQEAgLTU5MCw3ICs1OTAsNyBAQCB2b2lkIFFN ZXRhT2JqZWN0UHVibGlzaGVyOjpvYmplY3REZXN0cm95ZWQoY29uc3QgUU9iamVjdCAqb2JqZWN0 KQorICAgICAvLyBvbmx5IHJlbW92ZSBmcm9tIGhhbmRsZXIgd2hlbiB3ZSBpbml0aWFsaXplZCB0 aGUgcHJvcGVydHkgdXBkYXRlcworICAgICAvLyBjZjogaHR0cHM6Ly9idWdyZXBvcnRzLnF0Lmlv L2Jyb3dzZS9RVEJVRy02MDI1MAorICAgICBpZiAocHJvcGVydHlVcGRhdGVzSW5pdGlhbGl6ZWQp IHsKKy0gICAgICAgIHNpZ25hbEhhbmRsZXIucmVtb3ZlKG9iamVjdCk7CisrICAgICAgICBzaWdu YWxIYW5kbGVyRm9yKG9iamVjdCktPnJlbW92ZShvYmplY3QpOworICAgICAgICAgc2lnbmFsVG9Q cm9wZXJ0eU1hcC5yZW1vdmUob2JqZWN0KTsKKyAgICAgfQorICAgICBwZW5kaW5nUHJvcGVydHlV cGRhdGVzLnJlbW92ZShvYmplY3QpOworQEAgLTg1Miw2ICs4NTIsNTIgQEAgdm9pZCBRTWV0YU9i amVjdFB1Ymxpc2hlcjo6YnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2Fn ZSkgY29uc3QKKyAgICAgfQorIH0KKyAKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjplbnF1 ZXVlQnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSkKKyt7CisrICAg IGlmICh3ZWJDaGFubmVsLT5kX2Z1bmMoKS0+dHJhbnNwb3J0cy5pc0VtcHR5KCkpIHsKKysgICAg ICAgIHFXYXJuaW5nKCJRV2ViQ2hhbm5lbCBpcyBub3QgY29ubmVjdGVkIHRvIGFueSB0cmFuc3Bv cnRzLCBjYW5ub3Qgc2VuZCBtZXNzYWdlOiAlcyIsCisrICAgICAgICAgICAgICAgICBRSnNvbkRv Y3VtZW50KG1lc3NhZ2UpLnRvSnNvbigpLmNvbnN0RGF0YSgpKTsKKysgICAgICAgIHJldHVybjsK KysgICAgfQorKworKyAgICBmb3IgKGF1dG8gKnRyYW5zcG9ydCA6IHdlYkNoYW5uZWwtPmRfZnVu YygpLT50cmFuc3BvcnRzKSB7CisrICAgICAgICBhdXRvICZzdGF0ZSA9IHRyYW5zcG9ydFN0YXRl W3RyYW5zcG9ydF07CisrICAgICAgICBzdGF0ZS5xdWV1ZWRNZXNzYWdlcy5hcHBlbmQobWVzc2Fn ZSk7CisrICAgIH0KKyt9CisrCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6ZW5xdWV1ZU1l c3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNw b3J0KQorK3sKKysgICAgYXV0byAmc3RhdGUgPSB0cmFuc3BvcnRTdGF0ZVt0cmFuc3BvcnRdOwor KyAgICBzdGF0ZS5xdWV1ZWRNZXNzYWdlcy5hcHBlbmQobWVzc2FnZSk7CisrfQorKworK3ZvaWQg UU1ldGFPYmplY3RQdWJsaXNoZXI6OnNlbmRFbnF1ZXVlZFByb3BlcnR5VXBkYXRlcyhRV2ViQ2hh bm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisreworKyAgICBhdXRvIGZvdW5kID0g dHJhbnNwb3J0U3RhdGUuZmluZCh0cmFuc3BvcnQpOworKyAgICBpZiAoZm91bmQgIT0gdHJhbnNw b3J0U3RhdGUuZW5kKCkgJiYgZm91bmQudmFsdWUoKS5jbGllbnRJc0lkbGUKKysgICAgICAgICYm ICFmb3VuZC52YWx1ZSgpLnF1ZXVlZE1lc3NhZ2VzLmlzRW1wdHkoKSkgeworKworKyAgICAgICAg Ly8gSWYgdGhlIGNsaWVudCBpcyBjb25uZWN0ZWQgd2l0aCBhbiBpbi1wcm9jZXNzIHRyYW5zcG9y dCwgaXQgY2FuCisrICAgICAgICAvLyBoYXBwZW4gdGhhdCBhIG1lc3NhZ2UgdHJpZ2dlcnMgYSBz dWJzZXF1ZW50IHByb3BlcnR5IGNoYW5nZS4gSW4KKysgICAgICAgIC8vIHRoYXQgY2FzZSwgd2Ug bmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgcXVldWVkIG1lc3NhZ2VzIGhhdmUgYWxyZWFkeQorKyAg ICAgICAgLy8gYmVlbiBjbGVhcmVkOyBvdGhlcndpc2UgdGhlIHJlY3Vyc2l2ZSBjYWxsIHdpbGwg c2VuZCBldmVyeXRoaWcgYWdhaW4uCisrICAgICAgICAvLyBDYXNlIGluIHBvaW50OiBUaGUgcW1s d2ViY2hhbm5lbCB0ZXN0cyBmYWlsIGlmIHdlIGRvbid0IGNsZWFyIHRoZQorKyAgICAgICAgLy8g cXVldWVkIG1lc3NhZ2VzIGJlZm9yZSBzZW5kaW5nIHRoZW0gb3V0LgorKyAgICAgICAgLy8gRm9y IHRoYXQgc2FtZSByZWFzb24gc2V0IHRoZSBjbGllbnQgdG8gImJ1c3kiIChha2Egbm9uLWlkbGUp IGp1c3QKKysgICAgICAgIC8vIHJpZ2h0IGJlZm9yZSBzZW5kaW5nIG91dCB0aGUgbWVzc2FnZXM7 IG90aGVyd2lzZSBhIHBvdGVudGlhbAorKyAgICAgICAgLy8gIklkbGUiIHR5cGUgbWVzc2FnZSB3 aWxsIG5vdCBjb3JyZWN0bHkgcmVzdG9yZSB0aGUgSWRsZSBzdGF0ZS4KKysgICAgICAgIGNvbnN0 IGF1dG8gbWVzc2FnZXMgPSBzdGQ6Om1vdmUoZm91bmQudmFsdWUoKS5xdWV1ZWRNZXNzYWdlcyk7 CisrICAgICAgICBRX0FTU0VSVChmb3VuZC52YWx1ZSgpLnF1ZXVlZE1lc3NhZ2VzLmlzRW1wdHko KSk7CisrICAgICAgICBmb3VuZC52YWx1ZSgpLmNsaWVudElzSWRsZSA9IGZhbHNlOworKworKyAg ICAgICAgZm9yIChjb25zdCBhdXRvICZtZXNzYWdlIDogbWVzc2FnZXMpIHsKKysgICAgICAgICAg ICB0cmFuc3BvcnQtPnNlbmRNZXNzYWdlKG1lc3NhZ2UpOworKyAgICAgICAgfQorKyAgICB9Cisr fQorKworIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmhhbmRsZU1lc3NhZ2UoY29uc3QgUUpz b25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9y dCkKKyB7CisgICAgIGlmICghd2ViQ2hhbm5lbC0+ZF9mdW5jKCktPnRyYW5zcG9ydHMuY29udGFp bnModHJhbnNwb3J0KSkgeworQEAgLTg2Niw3ICs5MTIsNyBAQCB2b2lkIFFNZXRhT2JqZWN0UHVi bGlzaGVyOjpoYW5kbGVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLCBRV2ViQ2hh bm5lbAorIAorICAgICBjb25zdCBNZXNzYWdlVHlwZSB0eXBlID0gdG9UeXBlKG1lc3NhZ2UudmFs dWUoS0VZX1RZUEUpKTsKKyAgICAgaWYgKHR5cGUgPT0gVHlwZUlkbGUpIHsKKy0gICAgICAgIHNl dENsaWVudElzSWRsZSh0cnVlKTsKKysgICAgICAgIHNldENsaWVudElzSWRsZSh0cnVlLCB0cmFu c3BvcnQpOworICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlwZUluaXQpIHsKKyAgICAgICAgIGlm ICghbWVzc2FnZS5jb250YWlucyhLRVlfSUQpKSB7CisgICAgICAgICAgICAgcVdhcm5pbmcoIkpT T04gbWVzc2FnZSBvYmplY3QgaXMgbWlzc2luZyB0aGUgaWQgcHJvcGVydHk6ICVzIiwKK0BAIC05 MTMsOSArOTU5LDkgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aGFuZGxlTWVzc2FnZShj b25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSwgUVdlYkNoYW5uZWwKKyAgICAgICAgICAgICAgICAg cmV0dXJuOworICAgICAgICAgICAgIHRyYW5zcG9ydC0+c2VuZE1lc3NhZ2UoY3JlYXRlUmVzcG9u c2UobWVzc2FnZS52YWx1ZShLRVlfSUQpLCB3cmFwUmVzdWx0KHJlc3VsdCwgdHJhbnNwb3J0KSkp OworICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFR5cGVDb25uZWN0VG9TaWduYWwpIHsKKy0g ICAgICAgICAgICBzaWduYWxIYW5kbGVyLmNvbm5lY3RUbyhvYmplY3QsIG1lc3NhZ2UudmFsdWUo S0VZX1NJR05BTCkudG9JbnQoLTEpKTsKKysgICAgICAgICAgICBzaWduYWxIYW5kbGVyRm9yKG9i amVjdCktPmNvbm5lY3RUbyhvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05BTCkudG9JbnQo LTEpKTsKKyAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBlRGlzY29ubmVjdEZyb21TaWdu YWwpIHsKKy0gICAgICAgICAgICBzaWduYWxIYW5kbGVyLmRpc2Nvbm5lY3RGcm9tKG9iamVjdCwg bWVzc2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgtMSkpOworKyAgICAgICAgICAgIHNpZ25h bEhhbmRsZXJGb3Iob2JqZWN0KS0+ZGlzY29ubmVjdEZyb20ob2JqZWN0LCBtZXNzYWdlLnZhbHVl KEtFWV9TSUdOQUwpLnRvSW50KC0xKSk7CisgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlw ZVNldFByb3BlcnR5KSB7CisgICAgICAgICAgICAgc2V0UHJvcGVydHkob2JqZWN0LCBtZXNzYWdl LnZhbHVlKEtFWV9QUk9QRVJUWSkudG9JbnQoLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAg IG1lc3NhZ2UudmFsdWUoS0VZX1ZBTFVFKSk7CitAQCAtOTMxLDYgKzk3Nyw3IEBAIHZvaWQgUU1l dGFPYmplY3RQdWJsaXNoZXI6OnNldEJsb2NrVXBkYXRlcyhib29sIGJsb2NrKQorICAgICBibG9j a1VwZGF0ZXMgPSBibG9jazsKKyAKKyAgICAgaWYgKCFibG9ja1VwZGF0ZXMpIHsKKysgICAgICAg IHRpbWVyLnN0YXJ0KFBST1BFUlRZX1VQREFURV9JTlRFUlZBTCwgdGhpcyk7CisgICAgICAgICBz ZW5kUGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpOworICAgICB9IGVsc2UgaWYgKHRpbWVyLmlzQWN0 aXZlKCkpIHsKKyAgICAgICAgIHRpbWVyLnN0b3AoKTsKK0BAIC05NDgsNCArOTk1LDE1IEBAIHZv aWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQgKmV2ZW50KQor ICAgICB9CisgfQorIAorK1NpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQdWJsaXNoZXI+ICpRTWV0 YU9iamVjdFB1Ymxpc2hlcjo6c2lnbmFsSGFuZGxlckZvcihjb25zdCBRT2JqZWN0ICpvYmplY3Qp CisreworKyAgICBhdXRvIHRocmVhZCA9IG9iamVjdC0+dGhyZWFkKCk7CisrICAgIGF1dG8gaXQg PSBzaWduYWxIYW5kbGVycy5maW5kKHRocmVhZCk7CisrICAgIGlmIChpdCA9PSBzaWduYWxIYW5k bGVycy5lbmQoKSkgeworKyAgICAgICAgaXQgPSBzaWduYWxIYW5kbGVycy5lbXBsYWNlKHRocmVh ZCwgdGhpcykuZmlyc3Q7CisrICAgICAgICBpdC0+c2Vjb25kLm1vdmVUb1RocmVhZCh0aHJlYWQp OworKyAgICB9CisrICAgIHJldHVybiAmaXQtPnNlY29uZDsKKyt9CisrCisgUVRfRU5EX05BTUVT UEFDRQorZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVj dHB1Ymxpc2hlcl9wLmggYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3Rw dWJsaXNoZXJfcC5oCitpbmRleCBiYmQ5ODc1Li40NzEzZWYxIDEwMDY0NAorLS0tIGEvcXR3ZWJj aGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaAorKysrIGIvcXR3 ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaAorQEAgLTU5 LDYgKzU5LDkgQEAKKyAjaW5jbHVkZSA8UUJhc2ljVGltZXI+CisgI2luY2x1ZGUgPFFQb2ludGVy PgorICNpbmNsdWRlIDxRSnNvbk9iamVjdD4KKysjaW5jbHVkZSA8UVF1ZXVlPgorKworKyNpbmNs dWRlIDx1bm9yZGVyZWRfbWFwPgorIAorICNpbmNsdWRlICJxd2ViY2hhbm5lbGdsb2JhbC5oIgor IAorQEAgLTEwOSwxNyArMTEyLDM2IEBAIHB1YmxpYzoKKyAgICAgICovCisgICAgIHZvaWQgYnJv YWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSkgY29uc3Q7CisgCisrICAg IC8qKgorKyAgICAgKiBFbnF1ZXVlIHRoZSBnaXZlbiBAcCBtZXNzYWdlIHRvIGFsbCBrbm93biB0 cmFuc3BvcnRzLgorKyAgICAgKi8KKysgICAgdm9pZCBlbnF1ZXVlQnJvYWRjYXN0TWVzc2FnZShj b25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSk7CisrCisrICAgIC8qKgorKyAgICAgKiBFbnF1ZXVl IHRoZSBnaXZlbiBAcCBtZXNzYWdlIHRvIEBwIHRyYW5zcG9ydC4KKysgICAgICovCisrICAgIHZv aWQgZW5xdWV1ZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVs QWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisrCisrICAgIC8qKgorKyAgICAgKiBJZiBj bGllbnQgZm9yIGdpdmVuIEBwIHRyYW5zcG9ydCBpcyBpZGxlLCBzZW5kIHF1ZXVlZCBtZXNzYWdl ZCB0byBAcCB0cmFuc3BvcnQgYW5kIHRoZW4gbWFyaworKyAgICAgKiB0aGUgY2xpZW50IGFzIG5v dCBpZGxlLgorKyAgICAgKi8KKysgICAgdm9pZCBzZW5kRW5xdWV1ZWRQcm9wZXJ0eVVwZGF0ZXMo UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKKysKKyAgICAgLyoqCisg ICAgICAqIFNlcmlhbGl6ZSB0aGUgUU1ldGFPYmplY3Qgb2YgQHAgb2JqZWN0IGFuZCByZXR1cm4g aXQgaW4gSlNPTiBmb3JtLgorICAgICAgKi8KKyAgICAgUUpzb25PYmplY3QgY2xhc3NJbmZvRm9y T2JqZWN0KGNvbnN0IFFPYmplY3QgKm9iamVjdCwgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9y dCAqdHJhbnNwb3J0KTsKKyAKKyAgICAgLyoqCistICAgICAqIFNldCB0aGUgY2xpZW50IHRvIGlk bGUgb3IgYnVzeSwgYmFzZWQgb24gdGhlIHZhbHVlIG9mIEBwIGlzSWRsZS4KKy0gICAgICoKKy0g ICAgICogV2hlbiB0aGUgdmFsdWUgY2hhbmdlZCwgc3RhcnQvc3RvcCB0aGUgcHJvcGVydHkgdXBk YXRlIHRpbWVyIGFjY29yZGluZ2x5LgorKyAgICAgKiBTZXQgdGhlIGNsaWVudCB0byBpZGxlIG9y IGJ1c3kgZm9yIGEgc2luZ2xlIEBwIHRyYW5zcG9ydCwgYmFzZWQgb24gdGhlIHZhbHVlIG9mIEBw IGlzSWRsZS4KKysgICAgICovCisrICAgIHZvaWQgc2V0Q2xpZW50SXNJZGxlKGJvb2wgaXNJZGxl LCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworKworKyAgICAvKioK KysgICAgICogQ2hlY2sgdGhhdCBjbGllbnQgaXMgaWRsZSBmb3IgQHAgdHJhbnNwb3J0LgorICAg ICAgKi8KKy0gICAgdm9pZCBzZXRDbGllbnRJc0lkbGUoYm9vbCBpc0lkbGUpOworKyAgICBib29s IGlzQ2xpZW50SWRsZShRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOwor IAorICAgICAvKioKKyAgICAgICogSW5pdGlhbGl6ZSBjbGllbnRzIGJ5IHNlbmRpbmcgdGhlbSB0 aGUgY2xhc3MgaW5mb3JtYXRpb24gb2YgdGhlIHJlZ2lzdGVyZWQgb2JqZWN0cy4KK0BAIC0yNzIs MTAgKzI5NCwxOCBAQCBwcml2YXRlOgorICAgICBmcmllbmQgY2xhc3MgVGVzdFdlYkNoYW5uZWw7 CisgCisgICAgIFFXZWJDaGFubmVsICp3ZWJDaGFubmVsOworLSAgICBTaWduYWxIYW5kbGVyPFFN ZXRhT2JqZWN0UHVibGlzaGVyPiBzaWduYWxIYW5kbGVyOworKyAgICBzdGQ6OnVub3JkZXJlZF9t YXA8Y29uc3QgUVRocmVhZCosIFNpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQdWJsaXNoZXI+PiBz aWduYWxIYW5kbGVyczsKKysgICAgU2lnbmFsSGFuZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4g KnNpZ25hbEhhbmRsZXJGb3IoY29uc3QgUU9iamVjdCAqb2JqZWN0KTsKKyAKKy0gICAgLy8gdHJ1 ZSB3aGVuIHRoZSBjbGllbnQgaXMgaWRsZSwgZmFsc2Ugb3RoZXJ3aXNlCistICAgIGJvb2wgY2xp ZW50SXNJZGxlOworKyAgICBzdHJ1Y3QgVHJhbnNwb3J0U3RhdGUKKysgICAgeworKyAgICAgICAg VHJhbnNwb3J0U3RhdGUoKSA6IGNsaWVudElzSWRsZShmYWxzZSkgeyB9CisrICAgICAgICAvLyB0 cnVlIHdoZW4gdGhlIGNsaWVudCBpcyBpZGxlLCBmYWxzZSBvdGhlcndpc2UKKysgICAgICAgIGJv b2wgY2xpZW50SXNJZGxlOworKyAgICAgICAgLy8gbWVzc2FnZXMgdG8gc2VuZAorKyAgICAgICAg UVF1ZXVlPFFKc29uT2JqZWN0PiBxdWV1ZWRNZXNzYWdlczsKKysgICAgfTsKKysgICAgUUhhc2g8 UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqLCBUcmFuc3BvcnRTdGF0ZT4gdHJhbnNwb3J0 U3RhdGU7CisgCisgICAgIC8vIHRydWUgd2hlbiBubyBwcm9wZXJ0eSB1cGRhdGVzIHNob3VsZCBi ZSBzZW50LCBmYWxzZSBvdGhlcndpc2UKKyAgICAgYm9vbCBibG9ja1VwZGF0ZXM7CitkaWZmIC0t Z2l0IGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJfcC5oIGIvcXR3 ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJfcC5oCitpbmRleCAyN2FmYWRi Li5kNzczNzNjIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25h bGhhbmRsZXJfcC5oCisrKysgYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvc2lnbmFsaGFu ZGxlcl9wLmgKK0BAIC01Niw2ICs1Niw3IEBACisgI2luY2x1ZGUgPFFWZWN0b3I+CisgI2luY2x1 ZGUgPFFNZXRhTWV0aG9kPgorICNpbmNsdWRlIDxRRGVidWc+CisrI2luY2x1ZGUgPFFUaHJlYWQ+ CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCitAQCAtNzEsNiArNzIsNyBAQCBzdGF0aWMgY29u c3QgaW50IHNfZGVzdHJveWVkU2lnbmFsSW5kZXggPSBRT2JqZWN0OjpzdGF0aWNNZXRhT2JqZWN0 LmluZGV4T2ZNZXRobworIHRlbXBsYXRlPGNsYXNzIFJlY2VpdmVyPgorIGNsYXNzIFNpZ25hbEhh bmRsZXIgOiBwdWJsaWMgUU9iamVjdAorIHsKKysgICAgUV9ESVNBQkxFX0NPUFkoU2lnbmFsSGFu ZGxlcikKKyBwdWJsaWM6CisgICAgIFNpZ25hbEhhbmRsZXIoUmVjZWl2ZXIgKnJlY2VpdmVyLCBR T2JqZWN0ICpwYXJlbnQgPSAwKTsKKyAKK0BAIC0yNjgsNiArMjcwLDcgQEAgaW50IFNpZ25hbEhh bmRsZXI8UmVjZWl2ZXI+OjpxdF9tZXRhY2FsbChRTWV0YU9iamVjdDo6Q2FsbCBjYWxsLCBpbnQg bWV0aG9kSWQsIHYKKyAgICAgaWYgKGNhbGwgPT0gUU1ldGFPYmplY3Q6Okludm9rZU1ldGFNZXRo b2QpIHsKKyAgICAgICAgIGNvbnN0IFFPYmplY3QgKm9iamVjdCA9IHNlbmRlcigpOworICAgICAg ICAgUV9BU1NFUlQob2JqZWN0KTsKKysgICAgICAgIFFfQVNTRVJUKFFUaHJlYWQ6OmN1cnJlbnRU aHJlYWQoKSA9PSBvYmplY3QtPnRocmVhZCgpKTsKKyAgICAgICAgIFFfQVNTRVJUKHNlbmRlclNp Z25hbEluZGV4KCkgPT0gbWV0aG9kSWQpOworICAgICAgICAgUV9BU1NFUlQobV9jb25uZWN0aW9u c0NvdW50ZXIuY29udGFpbnMob2JqZWN0KSk7CisgICAgICAgICBRX0FTU0VSVChtX2Nvbm5lY3Rp b25zQ291bnRlci52YWx1ZShvYmplY3QpLmNvbnRhaW5zKG1ldGhvZElkKSk7CitkaWZmIC0tZ2l0 IGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vcW1sL3Rlc3R3ZWJjaGFubmVsLmNwcCBiL3F0d2Vi Y2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5jcHAKK2luZGV4IDk4OTE2ODcu LjNjYTgxYzIgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9xbWwvdGVzdHdl YmNoYW5uZWwuY3BwCisrKysgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9xbWwvdGVzdHdlYmNo YW5uZWwuY3BwCitAQCAtNDYsNyArNDYsMTEgQEAgVGVzdFdlYkNoYW5uZWw6On5UZXN0V2ViQ2hh bm5lbCgpCisgCisgYm9vbCBUZXN0V2ViQ2hhbm5lbDo6Y2xpZW50SXNJZGxlKCkgY29uc3QKKyB7 CistICAgIHJldHVybiBRV2ViQ2hhbm5lbDo6ZF9mdW5jKCktPnB1Ymxpc2hlci0+Y2xpZW50SXNJ ZGxlOworKyAgICBmb3IgKGF1dG8gKnRyYW5zcG9ydCA6IFFXZWJDaGFubmVsOjpkX2Z1bmMoKS0+ dHJhbnNwb3J0cykgeworKyAgICAgICAgaWYgKFFXZWJDaGFubmVsOjpkX2Z1bmMoKS0+cHVibGlz aGVyLT5pc0NsaWVudElkbGUodHJhbnNwb3J0KSkKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK KysgICAgfQorKyAgICByZXR1cm4gZmFsc2U7CisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2Rp ZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFu bmVsLmNwcCBiL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5u ZWwuY3BwCitpbmRleCAxODFkYTllLi4zN2Y5ODlhIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVs L3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5jcHAKKysrKyBiL3F0d2ViY2hh bm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuY3BwCitAQCAtNzg1LDcg Kzc4NSw3IEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RUcmFuc3BvcnRXcmFwT2JqZWN0UHJv cGVydGllcygpCisgICAgIER1bW15VHJhbnNwb3J0ICpkdW1teVRyYW5zcG9ydCA9IG5ldyBEdW1t eVRyYW5zcG9ydCh0aGlzKTsKKyAgICAgY2hhbm5lbC5jb25uZWN0VG8oZHVtbXlUcmFuc3BvcnQp OworICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPmluaXRpYWxpemVDbGllbnQoZHVt bXlUcmFuc3BvcnQpOworLSAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnNldENsaWVu dElzSWRsZSh0cnVlKTsKKysgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5zZXRDbGll bnRJc0lkbGUodHJ1ZSwgZHVtbXlUcmFuc3BvcnQpOworIAorICAgICBRQ09NUEFSRShjaGFubmVs LmRfZnVuYygpLT5wdWJsaXNoZXItPnRyYW5zcG9ydGVkV3JhcHBlZE9iamVjdHMuc2l6ZSgpLCAw KTsKKyAKK0BAIC05NDMsOCArOTQzLDYgQEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6dGVzdEluZmlu aXRlUmVjdXJzaW9uKCkKKyAKKyB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0QXN5bmNPYmplY3Qo KQorIHsKKy0gICAgUVNLSVAoIlRoaXMgdGVzdCBpcyBicm9rZW4uIFNlZSBRVEJVRy04MDcyOSIp OworLQorICAgICBRV2ViQ2hhbm5lbCBjaGFubmVsOworICAgICBjaGFubmVsLmNvbm5lY3RUbyht X2R1bW15VHJhbnNwb3J0KTsKKyAKK0BAIC05OTAsNiArOTg4LDUwIEBAIHZvaWQgVGVzdFdlYkNo YW5uZWw6OnRlc3RBc3luY09iamVjdCgpCisgICAgIHRocmVhZC53YWl0KCk7CisgfQorIAorK3Zv aWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RQcm9wZXJ0eU11bHRpcGxlVHJhbnNwb3J0cygpCisrewor KyAgICBEdW1teVRyYW5zcG9ydCB0cmFuc3BvcnQxOworKyAgICBEdW1teVRyYW5zcG9ydCB0cmFu c3BvcnQyOworKworKyAgICBRV2ViQ2hhbm5lbCBjaGFubmVsOworKyAgICBRTWV0YU9iamVjdFB1 Ymxpc2hlciAqcHVibGlzaGVyID0gY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyOworKworKyAg ICBUZXN0T2JqZWN0IHRlc3RPYmo7CisrICAgIHRlc3RPYmouc2V0T2JqZWN0TmFtZSgidGVzdE9i amVjdCIpOworKyAgICBjaGFubmVsLnJlZ2lzdGVyT2JqZWN0KHRlc3RPYmoub2JqZWN0TmFtZSgp LCAmdGVzdE9iaik7CisrICAgIGNoYW5uZWwuY29ubmVjdFRvKCZ0cmFuc3BvcnQxKTsKKysgICAg Y2hhbm5lbC5jb25uZWN0VG8oJnRyYW5zcG9ydDIpOworKworKyAgICB0ZXN0T2JqLnNldFByb3Ao IkhlbGxvIik7CisrCisrICAgIHB1Ymxpc2hlci0+aW5pdGlhbGl6ZUNsaWVudCgmdHJhbnNwb3J0 MSk7CisrICAgIHB1Ymxpc2hlci0+aW5pdGlhbGl6ZUNsaWVudCgmdHJhbnNwb3J0Mik7CisrICAg IHB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQxKTsKKysgICAgUUNP TVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCB0cnVlKTsKKysgICAg UUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCBmYWxzZSk7Cisr ICAgIFFWRVJJRlkodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5pc0VtcHR5KCkpOworKyAgICBR VkVSSUZZKHRyYW5zcG9ydDIubWVzc2FnZXNTZW50KCkuaXNFbXB0eSgpKTsKKysKKysgICAgdGVz dE9iai5zZXRQcm9wKCJXb3JsZCIpOworKyAgICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRy YW5zcG9ydDEubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAxdSwgMjAwMCk7CisrICAgIFFDT01QQVJF KHRyYW5zcG9ydDIubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAwdSk7CisrICAgIHB1Ymxpc2hlci0+ c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQyKTsKKysgICAgUVRSWV9DT01QQVJFX1dJ VEhfVElNRU9VVCh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMXUsIDIwMDApOwor KyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MSksIGZhbHNl KTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCBm YWxzZSk7CisrCisrICAgIHRlc3RPYmouc2V0UHJvcCgiISEhIik7CisrICAgIHB1Ymxpc2hlci0+ c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQyKTsKKysgICAgUUNPTVBBUkUocHVibGlz aGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCB0cnVlKTsKKysgICAgUUNPTVBBUkUocHVi bGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCBmYWxzZSk7CisrICAgIFFUUllfQ09N UEFSRV9XSVRIX1RJTUVPVVQodHJhbnNwb3J0Mi5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDJ1LCAy MDAwKTsKKysgICAgUUNPTVBBUkUodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDF1 KTsKKysgICAgcHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgJnRyYW5zcG9ydDEpOwor KyAgICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5zcG9ydDEubWVzc2FnZXNTZW50KCku c2l6ZSgpLCAydSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxl KCZ0cmFuc3BvcnQxKSwgZmFsc2UpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50 SWRsZSgmdHJhbnNwb3J0MiksIGZhbHNlKTsKKyt9CisrCisgY2xhc3MgRnVuY3Rpb25XcmFwcGVy IDogcHVibGljIFFPYmplY3QKKyB7CisgICAgIFFfT0JKRUNUCitAQCAtMTA4Miw3ICsxMTI0LDcg QEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6YmVuY2hJbml0aWFsaXplQ2xpZW50cygpCisgCisgICAg ICAgICBwdWJsaXNoZXItPnByb3BlcnR5VXBkYXRlc0luaXRpYWxpemVkID0gZmFsc2U7CisgICAg ICAgICBwdWJsaXNoZXItPnNpZ25hbFRvUHJvcGVydHlNYXAuY2xlYXIoKTsKKy0gICAgICAgIHB1 Ymxpc2hlci0+c2lnbmFsSGFuZGxlci5jbGVhcigpOworKyAgICAgICAgcHVibGlzaGVyLT5zaWdu YWxIYW5kbGVycy5jbGVhcigpOworICAgICB9CisgfQorIAorQEAgLTExMDcsNyArMTE0OSw3IEBA IHZvaWQgVGVzdFdlYkNoYW5uZWw6OmJlbmNoUHJvcGVydHlVcGRhdGVzKCkKKyAgICAgICAgICAg ICBvYmotPmNoYW5nZSgpOworICAgICAgICAgfQorIAorLSAgICAgICAgY2hhbm5lbC5kX2Z1bmMo KS0+cHVibGlzaGVyLT5jbGllbnRJc0lkbGUgPSB0cnVlOworKyAgICAgICAgY2hhbm5lbC5kX2Z1 bmMoKS0+cHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgbV9kdW1teVRyYW5zcG9ydCk7 CisgICAgICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnNlbmRQZW5kaW5nUHJvcGVy dHlVcGRhdGVzKCk7CisgICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3Rlc3Rz L2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1 dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oCitpbmRleCBlYWUyMWY0Li5kZDRlNjkwIDEw MDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hh bm5lbC5oCisrKysgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJj aGFubmVsLmgKK0BAIC0zNDgsNiArMzQ4LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB0 ZXN0SnNvblRvVmFyaWFudCgpOworICAgICB2b2lkIHRlc3RJbmZpbml0ZVJlY3Vyc2lvbigpOwor ICAgICB2b2lkIHRlc3RBc3luY09iamVjdCgpOworKyAgICB2b2lkIHRlc3RQcm9wZXJ0eU11bHRp cGxlVHJhbnNwb3J0cygpOworICAgICB2b2lkIHRlc3REZWxldGlvbkR1cmluZ01ldGhvZEludm9j YXRpb25fZGF0YSgpOworICAgICB2b2lkIHRlc3REZWxldGlvbkR1cmluZ01ldGhvZEludm9jYXRp b24oKTsKKyAKK1N1Ym1vZHVsZSBxdHdlYmVuZ2luZSBmMzI4MDU0ZC4uLjM4ZTBkZjZjIChjb21t aXRzIG5vdCBwcmVzZW50KQorU3VibW9kdWxlIHF0d2Vic29ja2V0cyA2NTg1MDk1NC4uNjNmYjhk YTE6CitkaWZmIC0tZ2l0IGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRk YXRhcHJvY2Vzc29yLmNwcCBiL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0 ZGF0YXByb2Nlc3Nvci5jcHAKK2luZGV4IDJhZmZkZDUuLjk1ZjExOTQgMTAwNjQ0CistLS0gYS9x dHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRhdGFwcm9jZXNzb3IuY3BwCisr KysgYi9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRhdGFwcm9jZXNzb3Iu Y3BwCitAQCAtMjczLDYgKzI3Myw3IEBAIHZvaWQgUVdlYlNvY2tldERhdGFQcm9jZXNzb3I6OmNs ZWFyKCkKKyAgICAgaWYgKCFtX3BDb252ZXJ0ZXJTdGF0ZSkKKyAgICAgICAgIG1fcENvbnZlcnRl clN0YXRlID0gbmV3IFFUZXh0Q29kZWM6OkNvbnZlcnRlclN0YXRlKFFUZXh0Q29kZWM6OkNvbnZl cnRJbnZhbGlkVG9OdWxsIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFUZXh0Q29kZWM6Oklnbm9yZUhlYWRlcik7CisrICAgIGZy YW1lLmNsZWFyKCk7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0d2Vic29ja2V0cy9zcmMv d2Vic29ja2V0cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwIGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJz b2NrZXRzL3F3ZWJzb2NrZXRwcm90b2NvbC5jcHAKK2luZGV4IGRmODdhOTMuLmQwNDY1ZjEgMTAw NjQ0CistLS0gYS9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldHByb3RvY29s LmNwcAorKysrIGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRwcm90b2Nv bC5jcHAKK0BAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBRV2ViU29ja2V0UHJvdG9jb2w6Om1hc2so Y2hhciAqcGF5bG9hZCwgcXVpbnQ2NCBzaXplLCBxdWludDMyIG1hc2tpbmdLZXkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHF1aW50OCgobWFza2luZ0tleSAmIDB4MDAwMEZGMDB1KSA+ PiA4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpbnQ4KChtYXNraW5nS2V5ICYg MHgwMDAwMDBGRnUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKy0gICAgaW50IGkg PSAwOworKyAgICBxdWludDY0IGkgPSAwOworICAgICB3aGlsZSAoc2l6ZS0tID4gMCkKKyAgICAg ICAgICpwYXlsb2FkKysgXj0gbWFza1tpKysgJSA0XTsKKyB9CmRpZmYgLS1naXQgYS9zcmNwa2dz L3F0NS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCmluZGV4IGUwNDYzZTFjOTE5OC4u Y2ExODAwY2U5ZGMyIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3F0NS90ZW1wbGF0ZQpAQCAtMiwxMSArMiwxMSBAQAogIwogIyByZXZidW1wIGxpYnF0eGRn IGFmdGVyIGJ1bXBpbmcgcGF0Y2ggdmVyc2lvbgogcGtnbmFtZT1xdDUKLXZlcnNpb249NS4xNS43 KzIwMjIxMTE5Cit2ZXJzaW9uPTUuMTUuOAorcmV2aXNpb249MQorYnVpbGRfc3R5bGU9bWV0YQog IyBjb21taXQgZjhjOWZiMzA0YmMzZTUzYjNhYTA3Zjk2MmNkNzRlOTE2MGRlY2NjYwogIyBiYXNl IHJlcG86IGh0dHBzOi8vaW52ZW50LmtkZS5vcmcvcXQvcXQvcXQ1Ci1yZXZpc2lvbj00Ci1idWls ZF9zdHlsZT1tZXRhCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIGNsYW5nIGZsZXggcGVybCBnbGli LWRldmVsIHBrZy1jb25maWcKICBweXRob24gcmUyYyBydWJ5IHdoaWNoIgogbWFrZWRlcGVuZHM9 IlNETDItZGV2ZWwgVnVsa2FuLUhlYWRlcnMgYWxzYS1saWItZGV2ZWwgZG91YmxlLWNvbnZlcnNp b24tZGV2ZWwKQEAgLTI5LDggKzI5LDkgQEAgaG9tZXBhZ2U9Imh0dHBzOi8vcXQuaW8vIgogIyB0 YXJiYWxsIGlzIGdlbmVyYXRlZCB3aXRoIGBnaXQgYXJjaGl2ZS1hbGwgcXQ1LSR2ZXJzaW9uLnRh ci5nemAKICMgdG8ga2VlcCB0aGUgc2l6ZSBzbWFsbGVyIHF0d2ViZW5naW5lLCBxdHdlYnZpZXcs IHF0ZG9jZ2FsbGVyeSwgcXRhY3RpdmVxdCBhbmQgcXRwaW0KICMgY2FuIGJlIG1hcmtlZCB3aXRo IHRoZSBleHBvcnQtaWdub3JlIGF0dHJpYnV0ZQotZGlzdGZpbGVzPSJodHRwczovL3ZvaWQuam9o bm55bmF0b3IuZGV2L2Rpc3RmaWxlcy9xdDUtJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT05 ZDU3YWY0NzFjNzgwMjlhMzYyMjc2YjdjOTkxMDhlYTAwOWY1MTFiYjliYTZmZjZjYjg4NGY2ZGRk MjU1ZTlmCisjZGlzdGZpbGVzPSJodHRwczovL3ZvaWQuam9obm55bmF0b3IuZGV2L2Rpc3RmaWxl cy9xdDUtJHt2ZXJzaW9ufS50YXIuZ3oiCitkaXN0ZmlsZXM9Imh0dHBzOi8vZG93bmxvYWQucXQu aW8vYXJjaGl2ZS9xdC81LjE1LyR7dmVyc2lvbn0vc2luZ2xlL3F0LWV2ZXJ5d2hlcmUtb3BlbnNv dXJjZS1zcmMtJHt2ZXJzaW9ufS50YXIueHoiCitjaGVja3N1bT03NzZhOTMwMmMzMzY2NzFmOTQw NmE1M2JkMzBiOGUzNmY4MjU3NDJiMmVjNDRhNTdjMDgyMTdiZmYwZmE4NmI5CiBweXRob25fdmVy c2lvbj0yICN1bnZlcmlmaWVkCiByZXBsYWNlcz0icXQ1LWRvYzw1LjYuMCBxdDUtcXVpY2sxPDUu Ni4wIHF0NS1xdWljazEtZGV2ZWw8NS42LjAgcXQ1LXdlYmtpdDw1LjYuMCBxdDUtd2Via2l0LWRl dmVsPDUuNi4wCiAgcXQ1LWVuZ2luaW88NS43LjEgcXQ1LWVuZ2luaW8tZGV2ZWw8NS43LjEgcXQ1 LXBsdWdpbi1ndGs8NS43LjEgcXQ1LWNhbnZhczNkPDUuMTMuMCIKQEAgLTI0OCw3ICsyNDksNiBA QCBkb19jb25maWd1cmUoKSB7CiAJIyBvcHRzKz0iIC12IgogCW9wdHMrPSIgLXNraXAgcXR3ZWJl bmdpbmUiCiAJb3B0cys9IiAtc2tpcCBxdHdlYnZpZXciCi0Jb3B0cys9IiAtc2tpcCBxdGRvY2dh bGxlcnkiCiAJb3B0cys9IiAtc2tpcCBxdHBpbSIKIAlvcHRzKz0iIC1za2lwIHF0c3lzdGVtcyIK IAlvcHRzKz0iIC1za2lwIHF0c3BlZWNoIgoKRnJvbSBiYzFiNjFmMjBlODUyNzU5NDU2MGYyNGY0 NTA0M2UwZTZlZjVkMGZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwNzgvMTE1XSBxdDYtbXVsdGltZWRpYTogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDYtbXVsdGltZWRpYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVt cGxhdGUKaW5kZXggZDg5ZTdkNTRlYjVhLi5hYWUxNWU1N2NhN2IgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDYtbXVsdGltZWRpYS90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0Ni1tdWx0aW1l ZGlhJwogcGtnbmFtZT1xdDYtbXVsdGltZWRpYQogdmVyc2lvbj02LjQuMgotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFFUX0ZFQVRV UkVfZ3N0cmVhbWVyPU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwZXJsIHF0Ni1kZWNsYXJhdGl2ZS1o b3N0LXRvb2xzIHBrZy1jb25maWcgcXQ2LXNoYWRlcnRvb2xzIgoKRnJvbSA5ZDRkNjAyNTUzYWYz MzljZDA3YzY5MWI1MzhmMTk4NDI5MmE2NDY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzkvMTE1XSBxdGF2OiByZXZidW1wIGZvciBmZm1w ZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvcXRhdi90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNo YW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3F0YXYvdGVtcGxhdGUgYi9zcmNwa2dzL3F0YXYvdGVtcGxhdGUKaW5kZXggMzRjMzBiMmMw Yzc4Li4yZDAwYWQxMDQzNTUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXRhdi90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3F0YXYvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3F0YXYnCiBwa2duYW1lPXF0YXYKIHZlcnNpb249MS4xMy4wCi1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1xbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJxdDUtcW1ha2Ug cXQ1LWhvc3QtdG9vbHMiCi1tYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIGxpYmFzcy1kZXZlbCBs aWJvcGVuYWwtZGV2ZWwKK21ha2VkZXBlbmRzPSJmZm1wZWc0LWRldmVsIGxpYmFzcy1kZXZlbCBs aWJvcGVuYWwtZGV2ZWwKICBsaWJ2YS1nbHgtZGV2ZWwgbGliWHYtZGV2ZWwgcHVsc2VhdWRpby1k ZXZlbAogIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbCBxdDUtc3ZnLWRldmVsCiAgcXQ1LXF1aWNrY29u dHJvbHMiCgpGcm9tIDMwYzFhOGJmMTlhMWE5NjI2OWQxM2JiNGI4ZWE1NzA4ZmM4YmY1ZTcgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4MC8x MTVdIHF0b3g6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9xdG94L3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdG94L3RlbXBsYXRlIGIvc3JjcGtncy9xdG94L3RlbXBs YXRlCmluZGV4IDE2MDE5ZDdlYWVjOS4uNWNlYTBiMTFiNjk3IDEwMDY0NAotLS0gYS9zcmNwa2dz L3F0b3gvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdG94L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXRveCcKIHBrZ25hbWU9cXRveAogdmVyc2lvbj0xLjE3 LjYKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVf YXJncz0iLURVUERBVEVfQ0hFQ0s9T0ZGCiAgLURHSVRfREVTQ1JJQkU9JHt2ZXJzaW9ufQoKRnJv bSBlODQ4YjBmZjRlYTc5MDc2NTM2MGEyNWM2M2FkNzBjNjc1MTllMjFjIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODEvMTE1XSByZXRyb2Fy Y2g6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9yZXRyb2FyY2gvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcmV0cm9h cmNoL3RlbXBsYXRlCmluZGV4IDI0MGQzZGY5ZGIwMC4uNmQwYjE2YWUyNTk4IDEwMDY0NAotLS0g YS9zcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JldHJvYXJjaC90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3JldHJvYXJjaCcKIHBr Z25hbWU9cmV0cm9hcmNoCiB2ZXJzaW9uPTEuMTQuMAotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1wcmVmaXg9L3VzciAtLXN5 c2NvbmZkaXI9L2V0YyAtLWVuYWJsZS1uZXR3b3JraW5nCiAgLS1lbmFibGUtdWRldiAtLWRpc2Fi bGUtYnVpbHRpbmZsYWMgLS1kaXNhYmxlLWJ1aWx0aW5nbHNsYW5nCgpGcm9tIDVhODFkMWVlMmE0 MGM3ZDNmYmRjMDBiMTc0NmZiNThiNDk5OWUxZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4Mi8xMTVdIHNjcmNweTogcmV2YnVtcCBmb3Ig ZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3NjcmNweS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3Mvc2NyY3B5L3RlbXBsYXRlIGIvc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUKaW5kZXggZWU2ZTY5 OGUzODdmLi44YWRhNWNhNDMyM2YgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRl CisrKyBiL3NyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnc2NyY3B5JwogcGtnbmFtZT1zY3JjcHkKIHZlcnNpb249Mi4wCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EY29t cGlsZV9zZXJ2ZXI9ZmFsc2UKICAtRHByZWJ1aWx0X3NlcnZlcj0vdXNyL3NoYXJlL3NjcmNweS9z Y3JjcHktc2VydmVyLXYke3ZlcnNpb259IgoKRnJvbSA1ZTdiM2E0OGQwYzQ5ZmY3ODQ3ZWExZWMx NzE3ZjE0YmI1MDZjYzYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwODMvMTE1XSBzcGVrLWFsdGVybmF0aXZlOiByZXZidW1wIGZvciBmZm1w ZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0ZSB8IDYgKysr LS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc3Bl ay1hbHRlcm5hdGl2ZS90ZW1wbGF0ZQppbmRleCBkNjUwODZiOGYwMDguLjA1MjQ2ZjFiOGQwYyAx MDA2NDQKLS0tIGEvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0ZQpAQCAtMSwxMSArMSwxMSBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnc3Blay1hbHRlcm5hdGl2ZScKIHBrZ25hbWU9c3Blay1hbHRlcm5hdGl2ZQog dmVyc2lvbj0wLjguMi4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUt Y29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIGdldHRleHQtZGV2ZWwgaW50bHRv b2wgbGlidG9vbCBwa2ctY29uZmlnIHd4V2lkZ2V0cy1jb21tb24iCi1tYWtlZGVwZW5kcz0iZmZt cGVnLWRldmVsIHd4V2lkZ2V0cy1ndGszLWRldmVsIgotZGVwZW5kcz0iZmZtcGVnIgorbWFrZWRl cGVuZHM9ImZmbXBlZzQtZGV2ZWwgd3hXaWRnZXRzLWd0azMtZGV2ZWwiCitkZXBlbmRzPSJmZm1w ZWc0Igogc2hvcnRfZGVzYz0iQWNvdXN0aWMgc3BlY3RydW0gYW5hbHlzZXIiCiBtYWludGFpbmVy PSJLYXJ0aWsgU2luZ2ggPGthcnRpay55bndhQGdtYWlsLmNvbT4iCiBsaWNlbnNlPSJHUEwtMy4w LW9yLWxhdGVyIgoKRnJvbSBkNDVlODQxOGQ5NTc3YTk4NTFiMWY3ZTI1Mjk2OThmZDFmOGYzYzMw IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw ODQvMTE1XSBzc3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9zc3Iv dGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zc3IvdGVtcGxhdGUgYi9zcmNwa2dzL3Nz ci90ZW1wbGF0ZQppbmRleCBiMDU1YjllYzA3NzQuLjM0NDhjYTExMGViMCAxMDA2NDQKLS0tIGEv c3JjcGtncy9zc3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zc3IvdGVtcGxhdGUKQEAgLTEsMTEg KzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NzcicKIHBrZ25hbWU9c3NyCiB2ZXJzaW9u PTAuNC40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmln dXJlX2FyZ3M9Ii1EV0lUSF9RVDU9T04iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCi1t YWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVnLWRldmVsIGdsdS1kZXZlbCBqYWNrLWRl dmVsIHB1bHNlYXVkaW8tZGV2ZWwKK21ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWc0 LWRldmVsIGdsdS1kZXZlbCBqYWNrLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKICBxdDUtdG9vbHMt ZGV2ZWwgcXQ1LXgxMWV4dHJhcy1kZXZlbCBsaWJYaW5lcmFtYS1kZXZlbCB2NGwtdXRpbHMtZGV2 ZWwiCiBkZXBlbmRzPSJkZXNrdG9wLWZpbGUtdXRpbHMgaGljb2xvci1pY29uLXRoZW1lIgogc2hv cnRfZGVzYz0iU2ltcGxlIFNjcmVlbiBSZWNvcmRlciBmb3IgcHJvZ3JhbXMgYW5kIGdhbWVzIgoK RnJvbSA2YjRhMWZkMDc4Y2RkZjNhMTcwYTM2MjBhYTlhMzE1ODdlNzJhOTkzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODUvMTE1XSBzdW1v OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc3Vtby90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZQppbmRl eCAwZjliOWVjODE1ZjUuLmEzZmUxMzRhYTVhYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9zdW1vL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3N1bW8nCiBwa2duYW1lPXN1bW8KIHZlcnNpb249MS4xMi4wCi1yZXZp c2lvbj01CityZXZpc2lvbj02CiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJs aWJnZGFsLXRvb2xzIHBrZy1jb25maWcgc3dpZyBweXRob24zLXNldHVwdG9vbHMiCiBtYWtlZGVw ZW5kcz0icHl0aG9uMy1kZXZlbCBmZm1wZWctZGV2ZWwgZm94LWRldmVsIGdsMnBzLWRldmVsIGxp YmdkYWwtZGV2ZWwKCkZyb20gMDUxODAwMGZmYmVjMWQ1MmFiMWY2Mjc4ZjVjMDJmNmEwMDZlYTM5 NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDg2LzExNV0gc3luZmlnOiByZXZidW1wIGZvciBmZm1wZWctNi4wIGFuZCBtbHQ3CgotLS0KIHNy Y3BrZ3Mvc3luZmlnL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCB8IDcxICsrKysrKysrKysrKysrKysr KysrKysrKysrKysKIHNyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlICAgICAgICAgICAgICB8ICA0ICst CiAyIGZpbGVzIGNoYW5nZWQsIDczIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoIGIvc3JjcGtncy9z eW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uMTA3ODBiNDI3ODJmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9zeW5m aWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKKy0tLSBhL3NyYy9tb2R1 bGVzL21vZF9saWJhdmNvZGVjL3RyZ3RfYXYuY3BwCTIwMjItMTAtMjUgMDk6MTQ6MTIuMDAwMDAw MDAwIC0wNDAwCisrKysgYi9zcmMvbW9kdWxlcy9tb2RfbGliYXZjb2RlYy90cmd0X2F2LmNwcAky MDIzLTA1LTA1IDIxOjM0OjE3Ljg5OTE5NDU1OSAtMDQwMAorQEAgLTM4LDYgKzQxLDcgQEAKKyBl eHRlcm4gIkMiCisgeworICNpZmRlZiBIQVZFX0xJQkFWRk9STUFUX0FWRk9STUFUX0gKKysjCWlu Y2x1ZGUgPGxpYmF2Y29kZWMvYXZjb2RlYy5oPgorICMJaW5jbHVkZSA8bGliYXZmb3JtYXQvYXZm b3JtYXQuaD4KKyAjZWxpZiBkZWZpbmVkKEhBVkVfQVZGT1JNQVRfSCkKKyAjCWluY2x1ZGUgPGF2 Zm9ybWF0Lmg+CitAQCAtMTU1LDExICsxNTYsMTEgQEAKKyAgICAgfQorIAorIAlib29sIG9wZW5f dmlkZW9fc3RyZWFtKCkgeworLQkJaWYgKGF2Y29kZWNfb3BlbjIodmlkZW9fY29udGV4dCwgTlVM TCwgTlVMTCkgPCAwKSB7CisrCQlpZiAoYXZjb2RlY19vcGVuMih2aWRlb19jb250ZXh0LCBudWxs cHRyLCBudWxscHRyKSA8IDApIHsKKyAJCQlzeW5maWc6OmVycm9yKCJUYXJnZXRfTGliQVZDb2Rl YzogY291bGQgbm90IG9wZW4gdmlkZW8gY29kZWMiKTsKKyAJCQkvLyBzZWVtcyB0aGUgY2FsbGlu ZyBvZiBhdmNvZGVjX2ZyZWVfY29udGV4dCBhZnRlciBlcnJvciB3aWxsIGNhdXNlIGNyYXNoCisg CQkJLy8gc28ganVzdCBmb3JnZXQgYWJvdXQgdGhpcyBjb250ZXh0CistCQkJdmlkZW9fY29udGV4 dCA9IE5VTEw7CisrCQkJdmlkZW9fY29udGV4dCA9IG51bGxwdHI7CisgCQkJY2xvc2UoKTsKKyAJ CQlyZXR1cm4gZmFsc2U7CisgICAgICAgICB9CitAQCAtMjM0LDE1ICsyMzUsMjEgQEAKKyAJCWNs b3NlKCk7CisgCisgCQlpZiAoIWF2X3JlZ2lzdGVyZWQpIHsKKysjaWYgTElCQVZDT0RFQ19WRVJT SU9OX01BSk9SIDwgNTggLy8gRkZNUEVHIDwgNC4wCisgCQkJYXZfcmVnaXN0ZXJfYWxsKCk7Cisr I2VuZGlmCisgCQkJYXZfcmVnaXN0ZXJlZCA9IHRydWU7CisgCQl9CisgCisgCQkvLyBndWVzcyBm b3JtYXQKKy0JCUFWT3V0cHV0Rm9ybWF0ICpmb3JtYXQgPSBhdl9ndWVzc19mb3JtYXQoTlVMTCwg ZmlsZW5hbWUuY19zdHIoKSwgTlVMTCk7CisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8 IDU5IC8vIEZGTVBFRyA8IDUuMAorKwkJQVZPdXRwdXRGb3JtYXQqIGZvcm1hdCA9IGF2X2d1ZXNz X2Zvcm1hdChudWxscHRyLCBmaWxlbmFtZS5jX3N0cigpLCBudWxscHRyKTsKKysjZWxzZQorKwkJ Y29uc3QgQVZPdXRwdXRGb3JtYXQqIGZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdChudWxscHRyLCBm aWxlbmFtZS5jX3N0cigpLCBudWxscHRyKTsKKysjZW5kaWYKKyAJCWlmICghZm9ybWF0KSB7Cisg CQkJc3luZmlnOjp3YXJuaW5nKCJUYXJnZXRfTGliQVZDb2RlYzogdW5hYmxlIHRvIGd1ZXNzIHRo ZSBvdXRwdXQgZm9ybWF0LCBkZWZhdWx0aW5nIHRvIE1QRUciKTsKKy0JCQlmb3JtYXQgPSBhdl9n dWVzc19mb3JtYXQoIm1wZWciLCBOVUxMLCBOVUxMKTsKKysJCQlmb3JtYXQgPSBhdl9ndWVzc19m b3JtYXQoIm1wZWciLCBudWxscHRyLCBudWxscHRyKTsKKyAJCX0KKyAJCWlmICghZm9ybWF0KSB7 CisgCQkJc3luZmlnOjplcnJvcigiVGFyZ2V0X0xpYkFWQ29kZWM6IHVuYWJsZSB0byBmaW5kICdt cGVnJyBvdXRwdXQgZm9ybWF0Iik7CitAQCAtMjU0LDYgKzI2MSw3IEBACisgCQljb250ZXh0ID0g YXZmb3JtYXRfYWxsb2NfY29udGV4dCgpOworIAkJYXNzZXJ0KGNvbnRleHQpOworIAkJY29udGV4 dC0+b2Zvcm1hdCA9IGZvcm1hdDsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTgg Ly8gRkZNUEVHIDwgNC4wCisgCQlpZiAoZmlsZW5hbWUuc2l6ZSgpICsgMSA+IHNpemVvZihjb250 ZXh0LT5maWxlbmFtZSkpIHsKKyAJCQlzeW5maWc6OmVycm9yKAorIAkJCQkiVGFyZ2V0X0xpYkFW Q29kZWM6IGZpbGVuYW1lIHRvbyBsb25nLCBtYXggbGVuZ3RoIGlzICVkLCBmaWxlbmFtZSBpcyAn JXMnIiwKK0BAIC0yNjMsNiArMjcxLDE0IEBACisgCQkJcmV0dXJuIGZhbHNlOworIAkJfQorIAkJ bWVtY3B5KGNvbnRleHQtPmZpbGVuYW1lLCBmaWxlbmFtZS5jX3N0cigpLCBmaWxlbmFtZS5zaXpl KCkgKyAxKTsKKysjZWxzZQorKwkJY29udGV4dC0+dXJsID0gYXZfc3RybmR1cChmaWxlbmFtZS5j X3N0cigpLCBmaWxlbmFtZS5zaXplKCkpOworKwkJaWYgKCFjb250ZXh0LT51cmwpIHsKKysJCQlz eW5maWc6OmVycm9yKCJUYXJnZXRfTGliQVZDb2RlYzogY2Fubm90IGFsbG9jYXRlIHNwYWNlIGZv ciBmaWxlbmFtZSIpOworKwkJCWNsb3NlKCk7CisrCQkJcmV0dXJuIGZhbHNlOworKwkJfQorKyNl bmRpZgorIAorIAkJcGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisgCQlhc3NlcnQocGFja2V0 KTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlIGIvc3JjcGtncy9zeW5maWcv dGVtcGxhdGUKaW5kZXggNWY1ZjViYjNmNGIyLi42ZTBkNzEzMTUwYWUgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3Mvc3luZmlnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlCkBAIC02 LDcgKzYsNyBAQCByZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1 cmVfYXJncz0iLS13aXRoLWJvb3N0LWxpYmRpcj0ke1hCUFNfQ1JPU1NfQkFTRX0vdXNyL2xpYiIK IGhvc3RtYWtlZGVwZW5kcz0iYm9vc3QtYnVpbGQgSW1hZ2VNYWdpY2sgcGtnLWNvbmZpZyBpbnRs dG9vbCIKLW1ha2VkZXBlbmRzPSJFVEwgZ2V0dGV4dC1kZXZlbCBsaWJ4bWwrKy1kZXZlbCBtbHQt ZGV2ZWwgbGlibWFnaWNrLWRldmVsCittYWtlZGVwZW5kcz0iRVRMIGdldHRleHQtZGV2ZWwgbGli eG1sKystZGV2ZWwgbWx0Ny1kZXZlbCBsaWJtYWdpY2stZGV2ZWwKICBsaWJtbmctZGV2ZWwgYm9v c3QtYnVpbGQgYm9vc3QtZGV2ZWwgbGlib3BlbmV4ci1kZXZlbCBmZm1wZWctZGV2ZWwiCiBkZXBl bmRzPSJJbWFnZU1hZ2ljayIKIHNob3J0X2Rlc2M9IkNMSSAyRCB2ZWN0b3IgYW5kIHRpbWVsaW5l LWJhc2VkIGFuaW1hdGlvbiBzb2Z0d2FyZSIKQEAgLTIwLDcgKzIwLDcgQEAgQ1hYRkxBR1M9Ii1z dGQ9YysrMTEgLURIQVZFX0xPQ0FMRV9IPTEiCiAKIHN5bmZpZy1kZXZlbF9wYWNrYWdlKCkgewog CWRlcGVuZHM9IiR7c291cmNlcGtnfT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQotCSBsaWJvcGVu ZXhyLWRldmVsIGxpYnhtbCsrLWRldmVsIG1sdC1kZXZlbCIKKwkgbGlib3BlbmV4ci1kZXZlbCBs aWJ4bWwrKy1kZXZlbCBtbHQ3LWRldmVsIgogCXNob3J0X2Rlc2MrPSIgLSBkZXZlbG9wbWVudCBm aWxlcyIKIAlwa2dfaW5zdGFsbCgpIHsKIAkJdm1vdmUgdXNyL2Jpbi9zeW5maWctY29uZmlnCgpG cm9tIDdlNDFiNmU3NGM4ZTZlYmE3ZTk3YmRmMmVhZGQ1MzM5ZDFmOTM5MWIgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwg NSBNYXkgMjAyMyAxMjo1Nzo1NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg3LzExNV0gc3luZmln c3R1ZGlvOiByZXZidW1wIGZvciBzeW5maWcgbWx0NwoKLS0tCiBzcmNwa2dzL3N5bmZpZ3N0dWRp by90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlIGIvc3Jj cGtncy9zeW5maWdzdHVkaW8vdGVtcGxhdGUKaW5kZXggOTEzNDkxNjllZDJiLi5hZjFjNWEyOTZl ZjAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogIyBTaG91bGQgYmUga2Vw dCBpbiBzeW5jIHdpdGggJ3N5bmZpZycgYW5kICdFVEwnCiBwa2duYW1lPXN5bmZpZ3N0dWRpbwog dmVyc2lvbj0xLjQuNAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Z251LWNv bmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS11cGRhdGUtbWltZWRiIgogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIGludGx0b29sIGdldHRleHQgc3luZmlnIgoKRnJvbSA1ZGY5 MzdhMmJlOGU4MDM3MjJmZjJiMjAxOGUwYzg3MWEyMWI4YmNmIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODgvMTE1XSB0ZWxlZ3JhbS1kZXNr dG9wOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdGVsZWdyYW0tZGVza3Rv cC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZSBi L3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQppbmRleCA2MGRmMzI3OGIwNWUuLjgz YWE3MmE2NzQ0OCAxMDA2NDQKLS0tIGEvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3RlbGVncmFtLWRlc2t0b3AnCiBwa2duYW1lPXRlbGVncmFt LWRlc2t0b3AKIHZlcnNpb249NC44LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0 eWxlPWNtYWtlCiBidWlsZF9oZWxwZXI9InFlbXUiCiBjb25maWd1cmVfYXJncz0iLURUREVTS1RP UF9BUElfSUQ9MjA5MjM1CgpGcm9tIGRiN2VjYzBhNmU2N2Y0OWU5MWVmYzI3MTJmYjBmZjdhMTAz YjA4YjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BB VENIIDA4OS8xMTVdIHRnX293dDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L3RnX293dC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlIGIvc3Jj cGtncy90Z19vd3QvdGVtcGxhdGUKaW5kZXggOTdkMTk1ZGRiMzRhLi41NTE2MTRiMjQ5NTYgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGdfb3d0L3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndGdfb3d0JwogcGtn bmFtZT10Z19vd3QKIHZlcnNpb249MC4wLjAuMjAyMzAxMDcKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIF9jb21taXQ9NTA5ODczMGI5ZWI2MTczZjBiNTIwNjhmZTI1NTViN2MxMDE1MTIzYQogX2xp Ynl1dl9jb21taXQ9MDA5NTA4NDBkMWM5YmNiYjNlYjZlYmM1YWFjNTc5M2U3MTE2NmM4YgogX2Fi c2VpbF9jb21taXQ9OGMwYjk0ZTc5M2E2NjQ5NWUwYjFmMzRhNWViMjZiZDdkYzY3MmRiMAoKRnJv bSA4MGQyZGFlN2MyOTUyYWNhYjhiZTQ5ZmE0OWJmNmI1ODhiNjYzNDI0IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTAvMTE1XSB0aW1nOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdGltZy90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZSBiL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZQppbmRleCA5 MWYxNTE2YjI1OTcuLjMzNDQ0M2QzZjliYiAxMDA2NDQKLS0tIGEvc3JjcGtncy90aW1nL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ3RpbWcnCiBwa2duYW1lPXRpbWcKIHZlcnNpb249MS40LjQKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURXSVRI X09QRU5TTElERV9TVVBQT1JUPW9mZiAtV25vLWRldiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNv bmZpZyBnaXQiCgpGcm9tIDUwMmRkMTkxMTAwM2VhMjRmMTU5NzM5MjQ0ZmU4YTQ3MzczYTIxY2Mg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5 MS8xMTVdIHR2aGVhZGVuZDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dz L3R2aGVhZGVuZC90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3R2aGVhZGVuZC90ZW1w bGF0ZSBiL3NyY3BrZ3MvdHZoZWFkZW5kL3RlbXBsYXRlCmluZGV4IGU2YjE2ZDdjY2YzYi4uNDZi NTJiNmZiN2Y5IDEwMDY0NAotLS0gYS9zcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQpAQCAtMSwxNCArMSwxNCBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAndHZoZWFkZW5kJwogcGtnbmFtZT10dmhlYWRlbmQKIHZlcnNpb249NC4yLjgKLXJl dmlzaW9uPTYKK3JldmlzaW9uPTcKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3Vy ZV9hcmdzPSItLWVuYWJsZS1kdmJzY2FuIC0tZGlzYWJsZS1mZm1wZWdfc3RhdGljCiAtLWRpc2Fi bGUtaGRob21lcnVuX3N0YXRpYyAtLWRpc2FibGUtYmludHJheV9jYWNoZSAtLWRpc2FibGUtbGli eDI2NF9zdGF0aWMKIC0tZGlzYWJsZS1saWJ4MjY1X3N0YXRpYyAtLWRpc2FibGUtbGlidnB4X3N0 YXRpYyAtLWRpc2FibGUtbGlidGhlb3JhX3N0YXRpYwogLS1kaXNhYmxlLWxpYnZvcmJpc19zdGF0 aWMgLS1kaXNhYmxlLWxpYmZka2FhY19zdGF0aWMiCiBob3N0bWFrZWRlcGVuZHM9ImdldHRleHQg cGtnLWNvbmZpZyBweXRob24gZ2l0IHdoaWNoIgotbWFrZWRlcGVuZHM9ImF2YWhpLWxpYnMtZGV2 ZWwgb3BlbnNzbC1kZXZlbCB6bGliLWRldmVsIGxpYmN1cmwtZGV2ZWwgZmZtcGVnLWRldmVsIgor bWFrZWRlcGVuZHM9ImF2YWhpLWxpYnMtZGV2ZWwgb3BlbnNzbC1kZXZlbCB6bGliLWRldmVsIGxp YmN1cmwtZGV2ZWwgZmZtcGVnNC1kZXZlbCIKIHNob3J0X2Rlc2M9IlRWIHN0cmVhbWluZyBzZXJ2 ZXIiCiBtYWludGFpbmVyPSJsZW1taSA8bGVtbWlAbmVyZDJuZXJkLm9yZz4iCiBsaWNlbnNlPSJH UEwtMy4wLW9ubHkiCgpGcm9tIGQzNWYzZmU0NTE4YjFmODJmNjE3NjBiYWU0YzRmMThkYmM2ZjE4 MGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENI IDA5Mi8xMTVdIHVucGFwZXI6IHVwZGF0ZSB0byA3LjAuMC4KCi0tLQogc3JjcGtncy91bnBhcGVy L3RlbXBsYXRlIHwgMTYgKysrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0 aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3VucGFwZXIvdGVt cGxhdGUgYi9zcmNwa2dzL3VucGFwZXIvdGVtcGxhdGUKaW5kZXggMzhlZDQ3YTU4NDAxLi4xZmY5 MTBlNzIyYWYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdW5wYXBlci90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3VucGFwZXIvdGVtcGxhdGUKQEAgLTEsMTMgKzEsMTMgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ3VucGFwZXInCiBwa2duYW1lPXVucGFwZXIKLXZlcnNpb249Ni4xCi1yZXZpc2lvbj0zCi1i dWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCit2ZXJzaW9uPTcuMC4wCityZXZpc2lvbj0xCitidWls ZF9zdHlsZT1tZXNvbgoraG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIG1lc29uIGxpYnhzbHQi CittYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHB5dGhvbjMtU3BoaW54Igorc2hvcnRfZGVzYz0i UG9zdC1wcm9jZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogbWFpbnRh aW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKLWhvc3RtYWtlZGVwZW5kcz0i cGtnLWNvbmZpZyBsaWJ4c2x0IgotbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCIKLWxpY2Vuc2U9 IkdQTC0yIgorbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3d3 dy5mbGFtZWV5ZXMuZXUvcHJvamVjdHMvdW5wYXBlciIKLXNob3J0X2Rlc2M9IkEgcG9zdC1wcm9j ZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogZGlzdGZpbGVzPSJodHRw czovL3d3dy5mbGFtZWV5ZXMuZXUvZmlsZXMvJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci54eiIK LWNoZWNrc3VtPTIzN2M4NGY1ZGE1NDRiM2Y3NzA5ODI3ZjlmMTJjMzdjMzQ2Y2RmMDI5YjExMjhm YjQ2MzNmOWJhZmE1Y2I5MzAKK2NoZWNrc3VtPTI1NzVmYmJmMjZjMjI3MTlkMWNiODgyYjU5NjAy Yzk5MDBjN2Y3NDcxMThhYzEzMDg4M2Y2MzQxOWJlNDZhODAKCkZyb20gZWVhNTg2ZjZjNzM3ZTJk ODJmNWQyZDBjMmFhNWIwZjQ2YTY2Y2RlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1 MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDkzLzExNV0gdmJhLW06IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy92YmEtbS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmJh LW0vdGVtcGxhdGUgYi9zcmNwa2dzL3ZiYS1tL3RlbXBsYXRlCmluZGV4IGJhMTUzZTBiNThjYS4u YWE2MDkzNjQ1ZTk3IDEwMDY0NAotLS0gYS9zcmNwa2dzL3ZiYS1tL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvdmJhLW0vdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBACiBwa2duYW1lPXZiYS1tCiByZXZl cnRzPTEyOTJfMgogdmVyc2lvbj0yLjEuNQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREVOQUJMRV9HVEs9VFJVRSAtREVOQUJMRV9G Rk1QRUc9VFJVRSAtREVOQUJMRV9MSU5LPVRSVUUgLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2Ui CiBob3N0bWFrZWRlcGVuZHM9ImdldHRleHQgcGtnLWNvbmZpZyB1bnppcCB6aXAgeWFzbSB3eFdp ZGdldHMtZ3RrMy1kZXZlbCIKCkZyb20gZGQ0ZTg3MWFlNWU0OGVmY2E5YjIzYjVmZGIyM2Y3MWFk MWI5Yzc0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDk0LzExNV0gdmljZTogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNw a2dzL3ZpY2UvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy92aWNlL3RlbXBsYXRlIGIv c3JjcGtncy92aWNlL3RlbXBsYXRlCmluZGV4IDA5MjQ3NjdjZmNmYi4uNTk4MWU0NTE0OWQwIDEw MDY0NAotLS0gYS9zcmNwa2dzL3ZpY2UvdGVtcGxhdGUKKysrIGIvc3JjcGtncy92aWNlL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndmljZScKIHBrZ25hbWU9 dmljZQogdmVyc2lvbj0zLjUKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdu dS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIKIAkkKHZvcHRfZW5hYmxlIHNkbDIgc2RsdWky KQpAQCAtMjgsNyArMjgsNyBAQCBtYWtlZGVwZW5kcz0iCiAJJCh2b3B0X2lmIGd0azMgZ3RrKzMt ZGV2ZWwpCiAJJCh2b3B0X2lmIGd0azMgcHVsc2VhdWRpby1kZXZlbCkKIAkkKHZvcHRfaWYgZ3Rr MyBwYW5nby1kZXZlbCkKLQkkKHZvcHRfaWYgZmZtcGVnIGZmbXBlZy1kZXZlbCkiCisJJCh2b3B0 X2lmIGZmbXBlZyBmZm1wZWc0LWRldmVsKSIKIHNob3J0X2Rlc2M9IkVtdWxhdG9yIGZvciBDNjQs IEMxMjgsIENCTS1JSSwgUEVULCBWSUMyMCwgUGx1czQgYW5kIEMxNiIKIG1haW50YWluZXI9Ik9y cGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVy IgoKRnJvbSA2M2NiMmQ1NTg0YmRmYzE3NThjOWYxZjNmYjFhMTdlMGMxZGQ5YTc0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTUvMTE1XSB3 YXlwaXBlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvd2F5cGlwZS90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvd2F5cGlw ZS90ZW1wbGF0ZQppbmRleCA1YzQxNjE5MDAwNjAuLjFhNDZmZTI3ZjdkOCAxMDA2NDQKLS0tIGEv c3JjcGtncy93YXlwaXBlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3dheXBpcGUnCiBwa2duYW1lPXdh eXBpcGUKIHZlcnNpb249MC44LjQKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PW1lc29uCiAjIGx0byBpcyBvZmYgYmVjYXVzZSBpdCBjYXVzZXMgbGlua2luZyBlcnJvcnMgaW4g YXJtdjZsIGFuZCBhcm12N2wgKGR1ZSB0byBORU9OKQogY29uZmlndXJlX2FyZ3M9Ii1Ed2Vycm9y PWZhbHNlIC1Ed2l0aF9kbWFidWY9ZW5hYmxlZCAtRHdpdGhfbHo0PWVuYWJsZWQKCkZyb20gNTUz ODM3NTk2YTJiNmRkYjI5NDZiNWRkMjQyNDJlZjg1MzE2MTYxMyBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk2LzExNV0gd2YtcmVjb3JkZXI6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUgYi9zcmNwa2dzL3dmLXJl Y29yZGVyL3RlbXBsYXRlCmluZGV4IGUyNzhlYjAwMTYwMC4uNWQwMTRhNWYyOGFmIDEwMDY0NAot LS0gYS9zcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvd2YtcmVjb3Jk ZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd3Zi1yZWNv cmRlcicKIHBrZ25hbWU9d2YtcmVjb3JkZXIKIHZlcnNpb249MC4zLjAKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcg c2Nkb2Mgd2F5bGFuZC1kZXZlbCIKIG1ha2VkZXBlbmRzPSJ3YXlsYW5kLXByb3RvY29scyB3YXls YW5kLWRldmVsIGZmbXBlZy1kZXZlbCB4MjY0LWRldmVsCgpGcm9tIGFjMmE3NTA2MDE3MTZmMDVi YTBhZDc1OTQ0MGZiMzYyYTc3NjA0ZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIg LTA0MDAKU3ViamVjdDogW1BBVENIIDA5Ny8xMTVdIHhwcmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy94cHJhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy94cHJhL3Rl bXBsYXRlIGIvc3JjcGtncy94cHJhL3RlbXBsYXRlCmluZGV4IDM4ZjgzMjgzYjFlNS4uYjZlMDFm ZjBhODEzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3hwcmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy94 cHJhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAneHByYScK IHBrZ25hbWU9eHByYQogdmVyc2lvbj00LjQuNAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9cHl0aG9uMy1tb2R1bGUKIG1ha2VfYnVpbGRfYXJncz0iLS13aXRob3V0LWN1ZGFf a2VybmVscyAtLXdpdGhvdXQtY3VkYV9yZWJ1aWxkIgogbWFrZV9pbnN0YWxsX2FyZ3M9IiQodm9w dF93aXRoIGRvY3MpICR7bWFrZV9idWlsZF9hcmdzfSIKCkZyb20gYWUwMzYwNTMyMWU2NWY5Yzcx MzJhMDQxMDc5OTBiNTgyMzY2MTgyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAzMSBNYXIgMjAyMyAwOTowNzo0MCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk4LzExNV0gbnYtY29kZWMtaGVhZGVyczogdXBkYXRlIHRv IDEyLjAuMTYuMAoKLS0tCiBzcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUgfCA0ICsr LS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlIGIvc3JjcGtncy9udi1j b2RlYy1oZWFkZXJzL3RlbXBsYXRlCmluZGV4IDNkNDIyYTYxZTQ4OS4uMjUxZTA1N2Y4MjZmIDEw MDY0NAotLS0gYS9zcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnbnYtY29kZWMtaGVhZGVycycKIHBrZ25hbWU9bnYtY29kZWMtaGVhZGVycwotdmVy c2lvbj0xMS4xLjUuMQordmVyc2lvbj0xMi4wLjE2LjAKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxl PWdudS1tYWtlZmlsZQogc2hvcnRfZGVzYz0iRkZtcGVnIHZlcnNpb24gb2YgaGVhZGVycyByZXF1 aXJlZCB0byBpbnRlcmZhY2Ugd2l0aCBOdmlkaWFzIGNvZGVjIEFQSXMiCkBAIC04LDcgKzgsNyBA QCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0i TUlUIgogaG9tZXBhZ2U9Imh0dHA6Ly9naXQudmlkZW9sYW4ub3JnLz9wPWZmbXBlZy9udi1jb2Rl Yy1oZWFkZXJzLmdpdCIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL0ZGbXBlZy9udi1j b2RlYy1oZWFkZXJzL2FyY2hpdmUvbiR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09ZDA5NWZi ZDU2YWE5Mzc3MjQ3MWEzMjNiZTBlYmU2NTUwNGEwZjQzZjA2Yzc2YTMwYjZkMjVkYTc3YjA2YWU5 YworY2hlY2tzdW09MmExNTMzYjY1ZjU1ZjlkYTUyOTU2ZmFmMDYyN2VkM2I3NDg2OGFjMGM3ZjI2 OTk5MGVkZDIxMzY5MTEzYjQ4ZgogCiBwb3N0X2luc3RhbGwoKSB7CiAJc2VkIC1uICc0LDI1cCcg aW5jbHVkZS9mZm52Y29kZWMvbnZFbmNvZGVBUEkuaCA+IExJQ0VOU0UKCkZyb20gZjM0ODg0MjU3 NTI2NDI5ZDFmNjg4YmExOTg3ZTM1MmM5NmFlYzAyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAzMSBNYXIgMjAyMyAw OTowODo0MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk5LzExNV0gb3BlbmltYWdlZGVub2lzZTog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUgYi9zcmNw a2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUKaW5kZXggZGI1Y2NkYjA1NWNjLi5jYjkwMDQ1 YWZiNjMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdvcGVuaW1hZ2VkZW5vaXNlJwogcGtnbmFtZT1vcGVuaW1hZ2VkZW5v aXNlCiB2ZXJzaW9uPTEuNC4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0ieDg2XzY0 KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImlzcGMgcHl0aG9uMyIKCkZy b20gOTY3YjUxZGEyNDIwNjA2MGFkMjcxZWUyMjRkNzA2ODc0MGMxZTYxMiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAz IEFwciAyMDIzIDIzOjMwOjI4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDAvMTE1XSBmcmVlY2Fk OiByZXZidW1wIGZvciBxdDUtd2ViZW5naW5lLTUuMTUuMTMKCi0tLQogc3JjcGtncy9mcmVlY2Fk L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlIGIvc3JjcGtncy9m cmVlY2FkL3RlbXBsYXRlCmluZGV4IGY2MjAyM2VlOGNlNC4uZTMwMWYzMmQzNTQwIDEwMDY0NAot LS0gYS9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mcmVlY2FkL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZnJlZWNhZCcKIHBrZ25h bWU9ZnJlZWNhZAogdmVyc2lvbj0wLjIwLjIKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxk X3N0eWxlPWNtYWtlCiAKIF9pbnN0X3ByZWZpeD0vdXNyL2xpYi8ke3BrZ25hbWV9CgpGcm9tIGMw YmQxNDc5NzRhNmM0YThiYTE3ODkzZjQxZjg1MmE0M2ZkYWViNmUgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMyBBcHIg MjAyMyAyMzozMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTAxLzExNV0gc2hvdGN1dDogcmV2 YnVtcCBmb3IgbWx0Ny03LjE0LjAKCi0tLQogc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlIGIvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRl CmluZGV4IDMyNTgzMjc3ZGFiMi4uOGQ4YTdhMGViZGViIDEwMDY0NAotLS0gYS9zcmNwa2dzL3No b3RjdXQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2hvdGN1dCcKIHBrZ25hbWU9c2hvdGN1dAogdmVy c2lvbj0yMi4xMi4yMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UK IGNvbmZpZ3VyZV9hcmdzPSItRFNIT1RDVVRfVkVSU0lPTj0ke3ZlcnNpb259IgogaG9zdG1ha2Vk ZXBlbmRzPSJwa2ctY29uZmlnIHF0NS10b29scy1kZXZlbCIKCkZyb20gZjNiMDMwNzNmMTE4ZmM4 NTZhY2Y2YmMwNWEwMDNlZTc3N2M5OTE3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAzIEFwciAyMDIzIDIzOjMzOjMw IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDIvMTE1XSBzaGlib2tlbjI6IHJldmJ1bXAgZm9yIHF0 NS01LjE1LjgKCi0tLQogc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGlu ZXJ5LWJ5cGFzcy5wYXRjaCB8IDEgKwogc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9zaGli b2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaAoKZGlmZiAtLWdp dCBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3Mu cGF0Y2ggYi9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlw YXNzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMC4uZWZjZjMy NDliZDg4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBv cnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApAQCAtMCwwICsxIEBACisuLi8uLi9weXRob24z LXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBs YXRlIGIvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUKaW5kZXggMDg0ZWNjM2JhMWUxLi4yYTIx OTk4OTk3ZWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnc2hpYm9rZW4yJwogcGtnbmFtZT1zaGlib2tlbjIKIHZlcnNpb249NS4xNS43Ci1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiBfcGtnbmFtZT0icHlzaWRlLXNldHVwLW9wZW5zb3VyY2Utc3Jj LSR7dmVyc2lvbn0iCiBidWlsZF93cmtzcmM9InNvdXJjZXMvc2hpYm9rZW4yIgogYnVpbGRfc3R5 bGU9Y21ha2UKCkZyb20gYzNmZDVjMjVlNzE1NWM4MzZlOWMwOWY3ZjQxN2I4NDUyNWY1M2E3ZSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogTW9uLCAzIEFwciAyMDIzIDIzOjMzOjUzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDMv MTE1XSBweXRob24zLXB5c2lkZTI6IHVwZGF0ZSB0byA1LjE1LjgKCi0tLQogLi4uL3BhdGNoZXMv aW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggICAgICB8IDE1ICsrKysrKysrKysrKysr Kwogc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUgICAgICAgICAgICAgICAgICB8ICA5 ICsrKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMv aW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3B5 dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoIGIv c3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFz cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY0YzQyOTU4 NDc3NgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMv aW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKQEAgLTAsMCArMSwxNSBAQAorVXNpbmcg dGhpcyBwcmV2ZW50cyBhbiBlcnJvciBhcm91bmQgbGluZSAyMjAgYmVsb3cgaXQuCisiQXR0cmli dXRlRXJyb3I6IG1vZHVsZSAnaW1wb3J0bGliJyBoYXMgbm8gYXR0cmlidXRlICdtYWNoaW5lcnkn IgorVGhlIG9sZCBiYWNrdXAgbG9naWMgaXMgaW4gcGxhY2UgYW5kIGNvbXBpbGVzIHdpdGhvdXQg aXNzdWVzLgorLS0tIGEvc291cmNlcy9zaGlib2tlbjIvbGlic2hpYm9rZW4vZW1iZWQvc2lnbmF0 dXJlX2Jvb3RzdHJhcC5weQkyMDIzLTA0LTAyIDIzOjA5OjM0LjY4ODkxMjQwMiAtMDQwMAorKysr IGIvc291cmNlcy9zaGlib2tlbjIvbGlic2hpYm9rZW4vZW1iZWQvc2lnbmF0dXJlX2Jvb3RzdHJh cC5weQkyMDIzLTA0LTAyIDIzOjEwOjAzLjM5NTUyOTU4MiAtMDQwMAorQEAgLTE3MCw5ICsxNzAs NiBAQAorCisgICAgICMgJ3ppcHN0cmluZ19zZXF1ZW5jZScgY29tZXMgZnJvbSBzaWduYXR1cmUu Y3BwCisgICAgIHppcGJ5dGVzID0gYmFzZTY0LmI2NGRlY29kZSgnJy5qb2luKHppcHN0cmluZ19z ZXF1ZW5jZSkpCistICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPj0gMzoKKy0gICAgICAgIHZ6 aXAgPSB6aXBmaWxlLlppcEZpbGUoaW8uQnl0ZXNJTyh6aXBieXRlcykpCistICAgICAgICByZXR1 cm4gc3lzLm1ldGFfcGF0aCwgRW1iZWRkYWJsZVppcEltcG9ydGVyKHZ6aXApCisKKyAgICAgIyBP bGQgdmVyc2lvbiBmb3IgUHl0aG9uIDIuNywgb25seS4KKyAgICAgaW1wb3J0IG9zCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHl0aG9uMy1w eXNpZGUyL3RlbXBsYXRlCmluZGV4IDUwZTZmZjI2MGQzYi4uYjUwZTYyYmQyMTVkIDEwMDY0NAot LS0gYS9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3B5dGhv bjMtcHlzaWRlMi90ZW1wbGF0ZQpAQCAtMSwxMSArMSwxMiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAncHl0aG9uMy1weXNpZGUyJwogcGtnbmFtZT1weXRob24zLXB5c2lkZTIKLXZlcnNpb249NS4x NS41Ci1yZXZpc2lvbj0yCit2ZXJzaW9uPTUuMTUuOAorcmV2aXNpb249MQogX3BrZ25hbWU9InB5 c2lkZS1zZXR1cC1vcGVuc291cmNlLXNyYy0ke3ZlcnNpb259IgogYnVpbGRfd3Jrc3JjPSJzb3Vy Y2VzL3B5c2lkZTIiCiBidWlsZF9zdHlsZT1jbWFrZQotY29uZmlndXJlX2FyZ3M9Ii1EUFlUSE9O X0VYRUNVVEFCTEU9L3Vzci9iaW4vcHl0aG9uIgorY29uZmlndXJlX2FyZ3M9Ii1EUFlUSE9OX0VY RUNVVEFCTEU9L3Vzci9iaW4vcHl0aG9uIC1EQ01BS0VfQlVJTERfVFlQRT1Ob25lCisgLURCVUlM RF9URVNUUz1PRkYiCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHB5dGhvbjMgc2hpYm9rZW4yIgog bWFrZWRlcGVuZHM9InB5dGhvbjMtZGV2ZWwgbGlic2hpYm9rZW4yLWRldmVsIHF0NS1kZXZlbAog IHF0NS1tdWx0aW1lZGlhLWRldmVsIHF0NS10b29scy1kZXZlbCBxdDUtcGx1Z2luLW15c3FsIHF0 NS1wbHVnaW4tb2RiYwpAQCAtMjMsNyArMjQsNyBAQCBtYWludGFpbmVyPSJ5b3BpdG8gPHBpZXJy ZS5ib3VyZ2luQGZyZWUuZnI+IgogbGljZW5zZT0iTEdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFn ZT0iaHR0cHM6Ly93aWtpLnF0LmlvL1F0X2Zvcl9QeXRob24iCiBkaXN0ZmlsZXM9Imh0dHBzOi8v ZG93bmxvYWQucXQuaW8vb2ZmaWNpYWxfcmVsZWFzZXMvUXRGb3JQeXRob24vcHlzaWRlMi9QeVNp ZGUyLSR7dmVyc2lvbn0tc3JjLyR7X3BrZ25hbWV9LnRhci54eiIKLWNoZWNrc3VtPTM5MjBhNGZi MzUzMzAwMjYwYzliYzQ2ZmY3MGYxZmI5NzVjNWU3ZWZhMjJlOWQ1MTIyMjU4ODkyOGNlMTliMzMK K2NoZWNrc3VtPTIzNDM2MzAyYzhkZWI1YjRjYmM3NjliMjA1ZDA5NjA0ZTM4YmE4M2I0MDcwOGVm Y2NiN2JkOGM5YWY2ZjZiNWQKIAogYnVpbGRfb3B0aW9ucz0id2ViZW5naW5lIgogZGVzY19vcHRp b25fd2ViZW5naW5lPSJCdWlsZCBRdDUgV2ViRW5naW5lIGJpbmRpbmdzIgoKRnJvbSA2M2U2MWI5 Yjg5N2QzNmYyNWM2OTQxMWMxMDNhMzZmYTljYmRlNmQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgQXByIDIwMjMg MTE6MTQ6MzUgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwNC8xMTVdIGtvbnF1ZXJvcjogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZSB8IDQgKyst LQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZSBiL3NyY3BrZ3Mva29ucXVlcm9yL3Rl bXBsYXRlCmluZGV4IGQ4ZDBlNzNhNzhhYi4uYzViZGJhNjAxZDNjIDEwMDY0NAotLS0gYS9zcmNw a2dzL2tvbnF1ZXJvci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZQpA QCAtMSwxMSArMSwxMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna29ucXVlcm9yJwogcGtnbmFt ZT1rb25xdWVyb3IKIHZlcnNpb249MjMuMDQuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRERFU0tUT1BUT0pTT05fRVhFQ1VUQUJM RT0vdXNyL2Jpbi9kZXNrdG9wdG9qc29uIgogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1t b2R1bGVzIHB5dGhvbjMgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIGtkb2N0b29scwota2NvcmVh ZGRvbnMga2NvbmZpZyBnZXR0ZXh0IgorIGtjb3JlYWRkb25zIGtjb25maWcgZ2V0dGV4dCIKIG1h a2VkZXBlbmRzPSJxdDUtZGV2ZWwgcXQ1LXdlYmVuZ2luZS1kZXZlbCBxdDUtZGVjbGFyYXRpdmUt ZGV2ZWwKICBxdDUtd2ViY2hhbm5lbC1kZXZlbCBxdDUtbG9jYXRpb24tZGV2ZWwga2NtdXRpbHMt ZGV2ZWwga2RlbGliczRzdXBwb3J0LWRldmVsCiAga2FyY2hpdmUtZGV2ZWwga2h0bWwtZGV2ZWwg a2Rlc3UtZGV2ZWwga2FjdGl2aXRpZXM1LWRldmVsIgoKRnJvbSBlNzIzZDkyYjQyZjYyYWYwMjUx OTRjOTRiZDM2NmE1NmQ2YTVlYTQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMTE6MTQ6NTggLTA0 MDAKU3ViamVjdDogW1BBVENIIDEwNS8xMTVdIHF0NS1zcGVlY2g6IHJldmJ1bXAgZm9yIHF0NS01 LjE1LjgKCi0tLQogc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9xdDUtc3BlZWNoL3RlbXBsYXRlIGIvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlCmluZGV4 IDNlY2QxMGQ1MDY1MC4uMmQ3ZDRkNGQyNDUzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS1zcGVl Y2gvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1LXNwZWVjaCcKIHBrZ25hbWU9cXQ1LXNwZWVj aAogdmVyc2lvbj01LjE1LjcKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIF9jb21taXQ9ZDMyZjRh NDc5ZDM4YTExZjU0NzU5ODAwNGI5NzVmNDM1NjQyNGExNgogYnVpbGRfc3R5bGU9cW1ha2UKIGNv bmZpZ3VyZV9hcmdzPSItLSAtZmxpdGUgLWZsaXRlLWFsc2EgLXNwZWVjaGQiCgpGcm9tIDMyNWJi MGQzY2RhMzU3MjkwNzU3NzI4NTQzZjIxMGJlOGFlYmI0YmMgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIgMjAy MyAxODozODo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTA2LzExNV0gcXQ1LXN0eWxlcGx1Z2lu czogcmV2YnVtcCBmb3IgcXQ1LTUuMTUuOAoKLS0tCiBzcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUgYi9z cmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKaW5kZXggOTZlZDk3ZDEyY2QyLi4zMGQ5 MzY2MGEyYTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdxdDUtc3R5bGVwbHVnaW5zJwogcGtnbmFtZT1xdDUtc3R5bGVw bHVnaW5zCiB2ZXJzaW9uPTUuMC4wCi1yZXZpc2lvbj0yMAorcmV2aXNpb249MjEKIF9naXRyZXY9 MzM1ZGJlY2UxMDNlMmNiZjZjN2NmODE5YWI2NjcyYzI5NTZiMTdiMwogYnVpbGRfc3R5bGU9cW1h a2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2Ui CgpGcm9tIGQxMDZlMDg5ODA4NDVjMDUwNDlkNjBhM2MwM2IwYTIwMzQxMTQyNGYgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjcgQXByIDIwMjMgMjE6NTg6MzUgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwNy8xMTVdIGJs ZW5kZXI6IHVwZGF0ZSB0byAzLjUuMQoKLS0tCiBzcmNwa2dzL2JsZW5kZXIvcGF0Y2hlcy9udW1w eS0yLjI0LnBhdGNoIHwgMjIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy9ibGVuZGVy L3RlbXBsYXRlICAgICAgICAgICAgICAgICB8IDEzICsrKysrKystLS0tLS0KIDIgZmlsZXMgY2hh bmdlZCwgNyBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL2JsZW5kZXIvcGF0Y2hlcy9udW1weS0yLjI0LnBhdGNoCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9ibGVuZGVyL3BhdGNoZXMvbnVtcHktMi4yNC5wYXRjaCBiL3NyY3BrZ3MvYmxlbmRl ci9wYXRjaGVzL251bXB5LTIuMjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDcxNjMxNWI3NGJlNy4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmxlbmRlci9wYXRjaGVz L251bXB5LTIuMjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1Gcm9tIDc0 ZTZlMDdjZjdjNjdiNTVkMzg0ZGI3MmY1YWEzODkyZGI4YTNkYTYgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCi1Gcm9tOiBvcmVvNjM5IDxvcmVvNjM5MUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE3 IEphbiAyMDIzIDE0OjM2OjU0IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB1c2FnZSBv ZiBkZXByZWNhdGVkIG5wLmJvb2wgYWxpYXMKLQotLS0tCi0gYWRkb25zL2lvX3NjZW5lX2dsdGYy L2JsZW5kZXIvaW1wL2dsdGYyX2JsZW5kZXJfbWVzaC5weSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2FkZG9ucy9p b19zY2VuZV9nbHRmMi9ibGVuZGVyL2ltcC9nbHRmMl9ibGVuZGVyX21lc2gucHkgYi9hZGRvbnMv aW9fc2NlbmVfZ2x0ZjIvYmxlbmRlci9pbXAvZ2x0ZjJfYmxlbmRlcl9tZXNoLnB5Ci1pbmRleCA2 MzY2NDM0YTYuLjgxNjBjOWU5OSAxMDA2NDQKLS0tLSBhL3JlbGVhc2Uvc2NyaXB0cy9hZGRvbnMv aW9fc2NlbmVfZ2x0ZjIvYmxlbmRlci9pbXAvZ2x0ZjJfYmxlbmRlcl9tZXNoLnB5Ci0rKysgYi9y ZWxlYXNlL3NjcmlwdHMvYWRkb25zL2lvX3NjZW5lX2dsdGYyL2JsZW5kZXIvaW1wL2dsdGYyX2Js ZW5kZXJfbWVzaC5weQotQEAgLTYyMCw3ICs2MjAsNyBAQCBkZWYgc2V0X3BvbHlfc21vb3RoaW5n KGdsdGYsIHB5bWVzaCwgbWVzaCwgdmVydF9ub3JtYWxzLCBsb29wX3ZpZHhzKToKLSAgICAgIyBU cnkgdG8gZ3Vlc3Mgd2hpY2ggcG9seXMgc2hvdWxkIGJlIGZsYXQgYmFzZWQgb24gdGhlIGZhY3Qg dGhhdCBhbGwgdGhlCi0gICAgICMgbG9vcCBub3JtYWxzIGZvciBhIGZsYXQgcG9seSBhcmUgPSB0 aGUgcG9seSdzIG5vcm1hbC4KLSAKLS0gICAgcG9seV9zbW9vdGhzID0gbnAuZW1wdHkobnVtX3Bv bHlzLCBkdHlwZT1ucC5ib29sKQotKyAgICBwb2x5X3Ntb290aHMgPSBucC5lbXB0eShudW1fcG9s eXMsIGR0eXBlPWJvb2wpCi0gCi0gICAgIHBvbHlfbm9ybWFscyA9IG5wLmVtcHR5KG51bV9wb2x5 cyAqIDMsIGR0eXBlPW5wLmZsb2F0MzIpCi0gICAgIG1lc2gucG9seWdvbnMuZm9yZWFjaF9nZXQo J25vcm1hbCcsIHBvbHlfbm9ybWFscykKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmxlbmRlci90ZW1w bGF0ZSBiL3NyY3BrZ3MvYmxlbmRlci90ZW1wbGF0ZQppbmRleCBkMThiYzg4ODM4ZmYuLjkwMGJj MTc5MzdjMyAxMDA2NDQKLS0tIGEvc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvYmxlbmRlci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2JsZW5kZXInCiBwa2duYW1lPWJsZW5kZXIKLXZlcnNpb249My40LjEKLXJldmlzaW9uPTQKK3Zl cnNpb249My41LjEKK3JldmlzaW9uPTEKIGFyY2hzPSJ4ODZfNjQqIHBwYzY0KiIKIGJ1aWxkX3N0 eWxlPSJjbWFrZSIKIHB5Y29tcGlsZV9kaXJzPSIvdXNyL3NoYXJlL2JsZW5kZXIvJHt2ZXJzaW9u JS4qfS9zY3JpcHRzIgpAQCAtOSw4ICs5LDggQEAgY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9JTlNU QUxMX1BPUlRBQkxFPU9GRiAtRFdJVEhfUFlUSE9OX0lOU1RBTEw9T0ZGCiAgLURXSVRIX0pBQ0s9 T04gLURXSVRIX0NPREVDX0ZGTVBFRz1PTiAtRFdJVEhfQ09ERUNfU05ERklMRT1PTiAtRFdJVEhf T1BFTk1QPU9OCiAgLURXSVRIX0ZGVFczPU9OIC1EV0lUSF9NT0RfT0NFQU5TSU09T04gLURXSVRI X0NZQ0xFU19FTUJSRUU9T0ZGIC1EV0lUSF9PUEVOQ09MT1JJTz1PTgogIC1EV0lUSF9JTUFHRV9P UEVORVhSPU9OIC1EV0lUSF9JTUFHRV9PUEVOSlBFRz1PTiAtRFdJVEhfT1BFTlNVQkRJVj1PTgot IC1EV0lUSF9PUEVOQ09MTEFEQT1PTiAtRFdJVEhfU1lTVEVNX0dMRVc9T04gLURXSVRIX09QRU5W REI9T04gLURXSVRIX0FMRU1CSUM9T04KLSAtRFdJVEhfR0hPU1RfWDExPU9OIC1EV0lUSF9HSE9T VF9XQVlMQU5EPU9OIC1EV0lUSF9HSE9TVF9MSUJERUNPUj1PTgorIC1EV0lUSF9PUEVOQ09MTEFE QT1PTiAtRFdJVEhfT1BFTlZEQj1PTiAtRFdJVEhfQUxFTUJJQz1PTgorIC1EV0lUSF9HSE9TVF9Y MTE9T04gLURXSVRIX0dIT1NUX1dBWUxBTkQ9T04gLURXSVRIX0dIT1NUX1dBWUxBTkRfTElCREVD T1I9T04KICAtRFdJVEhfQlVJTERJTkZPPU9GRiAtRFBZVEhPTl9WRVJTSU9OPSR7cHkzX3Zlcn0g LURQWVRIT05fTElCUEFUSD0vdXNyL2xpYgogIC1EUFlUSE9OX0xJQlJBUlk9J3B5dGhvbiR7cHkz X3Zlcn0ke3B5M19hYml2ZXJ9JwogIC1EUFlUSE9OX0lOQ0xVREVfRElSUz0vJHtweTNfaW5jfSIK QEAgLTIyLDE0ICsyMiwxNSBAQCBtYWtlZGVwZW5kcz0ibGliZ29tcC1kZXZlbCBsaWJwbmctZGV2 ZWwgdGlmZi1kZXZlbCBweXRob24zLWRldmVsIGdsdS1kZXZlbAogIG9wZW5jb2xvcmlvLWRldmVs IG9wZW5jb2xsYWRhLWRldmVsIHB5dGhvbjMtbnVtcHkgbGliWHJlbmRlci1kZXZlbAogIE9wZW5T dWJkaXYtZGV2ZWwgdGJiLWRldmVsIGxpYnhtbDItZGV2ZWwgb3BlbnZkYi1kZXZlbCBhbGVtYmlj LWRldmVsCiAgcHVnaXhtbC1kZXZlbCBsaWJYeGY4NnZtLWRldmVsIGxpYmVwb3h5LWRldmVsIGdt cC1kZXZlbCBnbXB4eC1kZXZlbAotIHdheWxhbmQtcHJvdG9jb2xzIHdheWxhbmQtZGV2ZWwgbGli eGtiY29tbW9uLWRldmVsIGxpYmRlY29yLWRldmVsIgorIHdheWxhbmQtcHJvdG9jb2xzIHdheWxh bmQtZGV2ZWwgbGlieGtiY29tbW9uLWRldmVsIGxpYmRlY29yLWRldmVsCisgbGV2ZWwtemVyby1k ZXZlbCIKIGRlcGVuZHM9ImRlc2t0b3AtZmlsZS11dGlscyBoaWNvbG9yLWljb24tdGhlbWUiCiBz aG9ydF9kZXNjPSIzRCBncmFwaGljcyBjcmVhdGlvbiBzdWl0ZSIKIG1haW50YWluZXI9IkVubm8g Qm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVy IgogaG9tZXBhZ2U9Imh0dHBzOi8vd3d3LmJsZW5kZXIub3JnIgogZGlzdGZpbGVzPSJodHRwczov L2Rvd25sb2FkLmJsZW5kZXIub3JnL3NvdXJjZS9ibGVuZGVyLSR7dmVyc2lvbn0udGFyLnh6Igot Y2hlY2tzdW09MjQ3YzRjMTIyODI3MGM5MDEwZjQ3MjFjOTg1Y2I1YjYyOGFiNTBhYmNmOWYyNjc4 NjMwNzM3MTQyZWViOTFjMworY2hlY2tzdW09YmQ3NDI4YzdlNmNiYTVhOTAwMjE2MjY5YzMyMTEx ZGZmYWFiYWYxYmRiNTQ3MmYyMzE5NjVlNjE1MTc0YTgwOQogcHl0aG9uX3ZlcnNpb249MwogTERG TEFHUz0iLVdsLC16LHN0YWNrLXNpemU9MjA5NzE1MiIKICMgQmxlbmRlciB0ZXN0cyBhcmUgZXhl Y3V0ZWQgYWdhaW5zdCBhIHN5c3RlbSBpbnN0YWxsYXRpb24gb2YgYmxlbmRlci4gVGhpcwoKRnJv bSBjYzRjMWE2MWVkNjNkMDlhNTAxMjY1MTU0MWY0NWY4MmVjYTEwOTgwIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDMw IEFwciAyMDIzIDIwOjIyOjI2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDgvMTE1XSBnc3QtcGx1 Z2lucy11Z2x5MTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1wbHVn aW5zLXVnbHkxL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtdWds eTEvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLXVnbHkxL3RlbXBsYXRlCmluZGV4IGUy NTRmZDQwZjg2OS4uODVhZTY0YmM3YTBhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1wbHVnaW5z LXVnbHkxL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtdWdseTEvdGVtcGxhdGUK QEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtcGx1Z2lucy11Z2x5MScK IHBrZ25hbWU9Z3N0LXBsdWdpbnMtdWdseTEKLXZlcnNpb249MS4yMC4zCit2ZXJzaW9uPTEuMjIu MgogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRGFtcm5i PWRpc2FibGVkIC1EYW1yd2JkZWM9ZGlzYWJsZWQgLURzaWRwbGF5PWRpc2FibGVkIgpAQCAtMTUs NCArMTUsNCBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+Igog bGljZW5zZT0iTEdQTC0yLjEtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9nc3RyZWFtZXIu ZnJlZWRlc2t0b3Aub3JnIgogZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9zcmMvJHtwa2duYW1lLzEv fS8ke3BrZ25hbWUvMS99LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09OGNhYTIwNzg5YTA5 YzMwNGI0OWNmNTYzZDMzY2NhOTQyMWIxODc1Yjg0ZmNjMTg3ZTRhMzg1ZmEwMWQ2YWVmZAorY2hl Y2tzdW09OGYzMGY0NGRiMGJkMDYzNzA5YmY2ZmJlNTUxMzhlM2E5OGFmMGFiY2I2MWMzNjBmMzU1 ODJiYmUxMGU4MDY5MQoKRnJvbSBmMTBhOTU2ZjQ1ZjQxYWY4MWY3MTU3NDMyYmUxYzA5YTgyNjc3 NmFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBTdW4sIDMwIEFwciAyMDIzIDIwOjIyOjI2IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAxMDkvMTE1XSBnc3QtcnRzcC1zZXJ2ZXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUgfCA4ICsrKystLS0tCiAxIGZpbGUgY2hh bmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlIGIvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVt cGxhdGUKaW5kZXggOGNlZWE4ZDM0YjRiLi45ODBmZDcyY2RkNGMgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVy L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LXJ0c3At c2VydmVyJwogcGtnbmFtZT1nc3QtcnRzcC1zZXJ2ZXIKLXZlcnNpb249MS4yMC4zCi1yZXZpc2lv bj0zCit2ZXJzaW9uPTEuMjIuMgorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3Rt YWtlZGVwZW5kcz0icGtnLWNvbmZpZyBweXRob24zIgogbWFrZWRlcGVuZHM9ImdsaWItZGV2ZWwg Z3N0LXBsdWdpbnMtYmFkMS1kZXZlbCBnb2JqZWN0LWludHJvc3BlY3Rpb24KQEAgLTEwLDUgKzEw LDUgQEAgc2hvcnRfZGVzYz0iR1N0cmVhbWVyIG11bHRpbWVkaWEgZ3JhcGggZnJhbWV3b3JrIC0g cnRzcCBzZXJ2ZXIiCiBtYWludGFpbmVyPSIxaXM3YWMzIDxpc2FhYy5xYTEzQGdtYWlsLmNvbT4i CiBsaWNlbnNlPSJMR1BMLTIuMS1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1l ci5mcmVlZGVza3RvcC5vcmciCi1kaXN0ZmlsZXM9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNr dG9wLm9yZy9zcmMvZ3N0LXJ0c3Atc2VydmVyL2dzdC1ydHNwLXNlcnZlci0ke3ZlcnNpb259LnRh ci54eiIKLWNoZWNrc3VtPWVlNDAyNzE4YmU5YjEyN2YwZTVlNjZjYTRjMWI0ZjQyZTQ5MjZlYzkz YmEzMDdiN2NjY2E1ZGM2Y2M5Nzk0Y2EKK2Rpc3RmaWxlcz0iJHtob21lcGFnZX0vc3JjLyR7cGtn bmFtZX0vJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci54eiIKK2NoZWNrc3VtPTJiZTRhZWNmYjg4 NzEwMTAwZWE3MTE1ZWQwMjE2NDAzZTgwOTQzNDRlYmYxNDYwOTQyNzFiOGQ0ZDczODI4YmYKCkZy b20gNWVhNTMzNTM0Y2FkNjcyMjMyY2JmMGRkMDcyYzk5NGVmZDMzZTk5MyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAz MCBBcHIgMjAyMyAyMDoyMjoyNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTEwLzExNV0gZ3N0LWxp YmF2OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBs YXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlIGIvc3JjcGtncy9n c3QtbGliYXYvdGVtcGxhdGUKaW5kZXggZjA4MmJkMjExYzY1Li4wNGMzOWJmZjE0ODkgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LWxpYmF2 L3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LWxpYmF2 JwogcGtnbmFtZT1nc3QtbGliYXYKLXZlcnNpb249MS4yMC4zCit2ZXJzaW9uPTEuMjIuMgogcmV2 aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyB5 YXNtIgpAQCAtMTEsNyArMTEsNyBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRs aW51eC5vcmc+IgogbGljZW5zZT0iTEdQTC0yLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6 Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnIgogZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9zcmMv JHtwa2duYW1lfS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09M2ZlZGQx MDU2MGZjZGZhYTFiNjQ2MmNiZjc5YTM4YzRlN2I1N2Q3ZjM5MDM1OTM5M2ZjMGNlZjZkYmYyN2Rm ZQorY2hlY2tzdW09ZmNhYWY5ODc4ZmU4ZjNiYzgyMzE3ZWYxM2ExNTU4ODI0Y2I2OGRmMWY4OTY4 YzY3OTdmNTU2YzVlMzNiY2ZmZAogCiBjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KIAkq LW11c2wpICMgUmVxdWlyZWQgYnkgbXVzbCBmb3IgTV9TUVJUMV8yCgpGcm9tIGRmNjBhNGMwNzk0 YWZiOWM5ZjM2MGMxOWUyN2U5MGI1YmY0OGIwMTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNyBNYXkgMjAyMyAxOTo0 ODowMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTExLzExNV0gZ3RrNDogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL2d0azQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2d0 azQvdGVtcGxhdGUgYi9zcmNwa2dzL2d0azQvdGVtcGxhdGUKaW5kZXggYTI1NjZkNDA0MmQzLi41 ZmFmYTUwZjZmMzMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2d0azQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdn dGs0JwogcGtnbmFtZT1ndGs0CiB2ZXJzaW9uPTQuMTAuMwotcmV2aXNpb249MQorcmV2aXNpb249 MgogYnVpbGRfc3R5bGU9bWVzb24KIGJ1aWxkX2hlbHBlcj0iZ2lyIgogY29uZmlndXJlX2FyZ3M9 Ii1EbWFuLXBhZ2VzPXRydWUgLURndGtfZG9jPXRydWUKCkZyb20gODQwMTRlZTNhMTQwZDNlZDAx ODVmYjg4MDcwY2M5Yjg0OTZjNmIxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA3IE1heSAyMDIzIDIwOjE0OjE0IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAxMTIvMTE1XSBtbHQ3OiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlICAgICAgICAgICAgIHwgMiArLQogc3Jj cGtncy9nc3Qtb214L3RlbXBsYXRlICAgICAgICAgICAgICAgfCA0ICsrLS0KIHNyY3BrZ3MvZ3N0 LXBsdWdpbnMtYmFzZTEvdGVtcGxhdGUgICAgIHwgNCArKy0tCiBzcmNwa2dzL2dzdC1wbHVnaW5z LWdvb2QxL3RlbXBsYXRlICAgICB8IDQgKystLQogc3JjcGtncy9nc3QxLWVkaXRpbmctc2Vydmlj ZXMvdGVtcGxhdGUgfCA0ICsrLS0KIHNyY3BrZ3MvZ3N0MS1weXRob24zL3RlbXBsYXRlICAgICAg ICAgIHwgNiArKystLS0KIHNyY3BrZ3MvZ3N0cmVhbWVyLXZhYXBpL3RlbXBsYXRlICAgICAgIHwg NCArKy0tCiBzcmNwa2dzL2dzdHJlYW1lcjEvdGVtcGxhdGUgICAgICAgICAgICB8IDQgKystLQog c3JjcGtncy9tbHQ3L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgfCAyICstCiA5IGZpbGVzIGNo YW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKaW5k ZXggMDRjMzliZmYxNDg5Li44YzcyZmMzZTk3ZWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LWxp YmF2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LWxpYmF2JwogcGtnbmFtZT1nc3QtbGliYXYK IHZlcnNpb249MS4yMi4yCi1yZXZpc2lvbj0yCityZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXNv bgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHlhc20iCiBtYWtlZGVwZW5kcz0ib3JjLWRl dmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsIGZmbXBlZy1kZXZlbCIKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvZ3N0LW9teC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LW9teC90ZW1wbGF0ZQppbmRleCA4 OTM1MzVjNDYzZGEuLjVhZDU0Y2M3YjlkOCAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3Qtb214L3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LW9teC90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1vbXgnCiBwa2duYW1lPWdzdC1vbXgKLXZlcnNpb249MS4y MC4zCit2ZXJzaW9uPTEuMjIuMgogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZp Z3VyZV9hcmdzPSItRGV4YW1wbGVzPWRpc2FibGVkIC1EdGFyZ2V0PWdlbmVyaWMiCkBAIC0xMSw0 ICsxMSw0IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBs aWNlbnNlPSJMR1BMLTIuMS1vbmx5IgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVk ZXNrdG9wLm9yZyIKIGRpc3RmaWxlcz0iJHtob21lcGFnZX0vc3JjLyR7cGtnbmFtZX0vJHtwa2du YW1lfS0ke3ZlcnNpb259LnRhci54eiIKLWNoZWNrc3VtPThkYjQ4MDQwYmI0MWYwOWVkZjhkMTdm ZjZkMTZjNTQ4ODhkNzc3N2JhNDUwMWMyYzY5ZjAwODMzNTBlYTlhMTUKK2NoZWNrc3VtPTFiMGM1 N2YyY2M0ZGRlZWM1ZTdmMGM0MzZlNTAyZjA2NjY1YzRlOTNjNzMyNjE4NTViOTRlMDRmYzk0MzM3 YjIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFzZTEvdGVtcGxhdGUgYi9zcmNw a2dzL2dzdC1wbHVnaW5zLWJhc2UxL3RlbXBsYXRlCmluZGV4IDI5ZThmNzZiZDFmZS4uMmYyMGVh ODE5ODQ5IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhc2UxL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFzZTEvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtcGx1Z2lucy1iYXNlMScKIHBrZ25hbWU9Z3N0LXBsdWdp bnMtYmFzZTEKLXZlcnNpb249MS4yMC4zCit2ZXJzaW9uPTEuMjIuMgogcmV2aXNpb249MQogYnVp bGRfc3R5bGU9bWVzb24KIGJ1aWxkX2hlbHBlcj0iZ2lyIgpAQCAtMjIsNyArMjIsNyBAQCBtYWlu dGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTIu MC1vci1sYXRlciwgTEdQTC0yLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9nc3RyZWFt ZXIuZnJlZWRlc2t0b3Aub3JnIgogZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9zcmMvJHtwa2duYW1l LzEvfS8ke3BrZ25hbWUvMS99LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09N2UzMGIzZGQ4 MWE3MDM4MGZmNzU1NGY5OTg0NzFkNjk5NmZmNzZiYmU2ZmM1NDQ3MDk2Zjg1MWUyNDQ3M2M5Zgor Y2hlY2tzdW09ZWI2NTEyMGM0ZWU3OWI3YTE1M2MzYzE5NzJkNWMwMTU4YzIxNTE4NzdjYzUxZWM3 NzI1YmJhNTc0OTY3OWQ0OQogCiBidWlsZF9vcHRpb25zPSJjZHBhcmFub2lhIGdpciBzbmRpbyB3 YXlsYW5kIgogYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJjZHBhcmFub2lhIGdpciB3YXlsYW5kIgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtcGx1Z2lucy1nb29kMS90ZW1wbGF0ZSBiL3NyY3BrZ3Mv Z3N0LXBsdWdpbnMtZ29vZDEvdGVtcGxhdGUKaW5kZXggMWY1ZTYyMGNlMWZkLi41ZDBmZTFiZmUy ODQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtZ29vZDEvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9nc3QtcGx1Z2lucy1nb29kMS90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLWdvb2QxJwogcGtnbmFtZT1nc3QtcGx1Z2lucy1n b29kMQotdmVyc2lvbj0xLjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0xCiBidWlsZF9z dHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EZHY9ZGlzYWJsZWQgLURkdjEzOTQ9ZGlzYWJs ZWQgLURzaG91dDI9ZGlzYWJsZWQgLURxdDU9ZW5hYmxlZApAQCAtMjIsNyArMjIsNyBAQCBtYWlu dGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iTEdQTC0y LjEtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3Jn IgogZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9zcmMvJHtwa2duYW1lLzEvfS8ke3BrZ25hbWUvMS99 LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09ZjhmM2MyMDZiZjVjZGFiYzAwOTUzOTIwYjQ3 YjM1NzVhZjBlZjE1ZTlmODcxYzBiNjk2NmY2ZDBhYTU4NjhiNworY2hlY2tzdW09N2M4Y2M1OTQy NWYyYjIzMmY2MGNhN2QxM2U1NmVkZDYxNWRhNGY3MTFlNzNkZDAxYTdjZmZhNDZlNmJjMGNkZAog CiBidWlsZF9vcHRpb25zPSJndGszIHdheWxhbmQiCiBidWlsZF9vcHRpb25zX2RlZmF1bHQ9Imd0 azMgd2F5bGFuZCIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0MS1lZGl0aW5nLXNlcnZpY2VzL3Rl bXBsYXRlIGIvc3JjcGtncy9nc3QxLWVkaXRpbmctc2VydmljZXMvdGVtcGxhdGUKaW5kZXggNjcz YjQ2OTcwZjI0Li4xMDI0NDBmN2YyNTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0MS1lZGl0aW5n LXNlcnZpY2VzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0MS1lZGl0aW5nLXNlcnZpY2VzL3Rl bXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0MS1lZGl0aW5n LXNlcnZpY2VzJwogcGtnbmFtZT1nc3QxLWVkaXRpbmctc2VydmljZXMKLXZlcnNpb249MS4yMC4z Cit2ZXJzaW9uPTEuMjIuMgogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9bWVzb24KIGJ1aWxkX2hl bHBlcj0iZ2lyIgpAQCAtMTIsNyArMTIsNyBAQCBtYWludGFpbmVyPSJUb3lhbSBDb3ggPFZhZWxh dGVybkBnbWFpbC5jb20+IgogbGljZW5zZT0iTEdQTC0yLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0i aHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnIgogZGlzdGZpbGVzPSIke2hvbWVwYWdl fS9zcmMvJHtwa2duYW1lL2dzdDEvZ3N0fS8ke3BrZ25hbWUvZ3N0MS9nc3R9LSR7dmVyc2lvbn0u dGFyLnh6IgotY2hlY2tzdW09NWZkODk2ZGU2OWZiZTI0NDIxZWI2YjBmZjhkMmY4YjRjM2NiYTNm MzAyNWNlYWNkMzAyMTcyZjM5YThhYmFhMgorY2hlY2tzdW09NDUzYjE0NjRmYzM4NTdkZTI2OWE3 Y2IwZWJkOTY2YWZlMDIxNzFkOTdiZWY2NzJhMGI4YTBhNmQ0M2UwY2ViZgogCiBkb19jaGVjaygp IHsKIAk6ICMgVGVzdHMgZmFpbCBpbiBvbGRlciB2ZXJzaW9ucyBhcyB3ZWxsCmRpZmYgLS1naXQg YS9zcmNwa2dzL2dzdDEtcHl0aG9uMy90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0MS1weXRob24zL3Rl bXBsYXRlCmluZGV4IDNmNTY0YWM2NGI5My4uNzg5ZTQwZjAzNmVhIDEwMDY0NAotLS0gYS9zcmNw a2dzL2dzdDEtcHl0aG9uMy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdDEtcHl0aG9uMy90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdDEtcHl0aG9uMycK IHBrZ25hbWU9Z3N0MS1weXRob24zCi12ZXJzaW9uPTEuMjAuMwotcmV2aXNpb249MgordmVyc2lv bj0xLjIyLjIKK3JldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9 InBrZy1jb25maWcgcHl0aG9uMyIKIG1ha2VkZXBlbmRzPSJsaWJnbGliLWRldmVsIHB5dGhvbjMt ZGV2ZWwgcHl0aG9uMy1nb2JqZWN0LWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsIgpAQCAt MTEsNCArMTEsNCBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+ IgogbGljZW5zZT0iTEdQTC0yLjEtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9nc3RyZWFt ZXIuZnJlZWRlc2t0b3Aub3JnIgogZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9zcmMvZ3N0LXB5dGhv bi9nc3QtcHl0aG9uLSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09ZGIzNDgxMjBlYWU5NTVi OGNjNGRlMzU2MGE3ZWEwNmUzNmQ2ZTFkZGJhYTk5YTdhZDk2YjU5ODQ2NjAxY2ZkYworY2hlY2tz dW09YmVmMmIzZDgyY2U0YmU0NmI3NzViMWJiNTYzMDVjMTAwM2VlMDFiNTM1YTUzYTgyZjlmZTg5 MjQ5NzIxNTNhZApkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3RyZWFtZXItdmFhcGkvdGVtcGxhdGUg Yi9zcmNwa2dzL2dzdHJlYW1lci12YWFwaS90ZW1wbGF0ZQppbmRleCAzY2M0ZTA1NzU1OWEuLjBh NWVlOGIxY2EzZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3RyZWFtZXItdmFhcGkvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9nc3RyZWFtZXItdmFhcGkvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdnc3RyZWFtZXItdmFhcGknCiBwa2duYW1lPWdzdHJlYW1lci12 YWFwaQotdmVyc2lvbj0xLjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0xCiBidWlsZF9z dHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgpAQCAtMTEsNyArMTEsNyBA QCBsaWNlbnNlPSJMR1BMLTIuMS1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1l ci5mcmVlZGVza3RvcC5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250 ZW50LmNvbS9HU3RyZWFtZXIvZ3N0cmVhbWVyLXZhYXBpL21hc3Rlci9DaGFuZ2VMb2ciCiBkaXN0 ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy9nc3RyZWFtZXItdmFhcGkvZ3N0cmVhbWVyLXZhYXBpLSR7 dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09NmVlOTllYjMxNmFiZGRlOWFkMzcwMDI5MTViZDhj Mzg2NzkxOGY2ZmRjNzRiN2NmMmFjNGMxYWUwZDY5MGI0NQorY2hlY2tzdW09ZDJlNjQyZjk3NDVm OTdkOWY3M2E3ZjUwODVlNzY1OWE5YTMxZmUyMDliNzc0ZTZlNDVkYWUwNDFiNDM1ZGYwNgogCiBw cmVfY2hlY2soKSB7CiAJIyBTZWVtcyB0byBuZWVkIGNlcnRhaW4gaGFyZHdhcmUgdG8gcGFzcwpk aWZmIC0tZ2l0IGEvc3JjcGtncy9nc3RyZWFtZXIxL3RlbXBsYXRlIGIvc3JjcGtncy9nc3RyZWFt ZXIxL3RlbXBsYXRlCmluZGV4IGFlOGE0OWNiMjBlOC4uNTcxMTQ4ZjJmZjMzIDEwMDY0NAotLS0g YS9zcmNwa2dzL2dzdHJlYW1lcjEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3RyZWFtZXIxL3Rl bXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0cmVhbWVyMScK IHBrZ25hbWU9Z3N0cmVhbWVyMQotdmVyc2lvbj0xLjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZp c2lvbj0xCiBidWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVscGVyPSJnaXIiCkBAIC0xNiw3ICsx Niw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNl bnNlPSJMR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVl ZGVza3RvcC5vcmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy9nc3RyZWFtZXIvZ3N0cmVh bWVyLSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09NjA3ZGFmNjRiYmJkNWZiMThhZjlkMTdl MjFjMGQyMmM0ZDcwMmZmZmU4M2IyM2NiMjJkMWIxYWYyY2EyM2EyYQorY2hlY2tzdW09YjJhZmU3 MzYwMzkyMWM2MDhiYTQ4OTY5ZGJiN2Q3NDM3NzY3NDRiZmU1ZDgwNTllY2UyNDExMzdiN2Y4OGUy MQogCiBwcmVfY2hlY2soKSB7CiAJIyBnc3RfZ3N0ZGF0ZXRpbWUgaXMga25vd24gdG8gZmFpbCBh Y2NvcmRpbmcgdG8gTEZTCmRpZmYgLS1naXQgYS9zcmNwa2dzL21sdDcvdGVtcGxhdGUgYi9zcmNw a2dzL21sdDcvdGVtcGxhdGUKaW5kZXggOWZiN2Y2MGQ2OTJlLi5jY2EwZWI2OGNmYzMgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvbWx0Ny90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21sdDcvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtbHQ3JwogcGtnbmFtZT1tbHQ3 CiB2ZXJzaW9uPTcuMTQuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21h a2UKIGNvbmZpZ3VyZV9hcmdzPSItRFNXSUdfUFlUSE9OPU9OIgogaG9zdG1ha2VkZXBlbmRzPSJk b3h5Z2VuIHBrZy1jb25maWcgbGFkc3BhLXNkayBzd2lnIHB5dGhvbjMgd2hpY2gKCkZyb20gMjEx MzY4YTNhODBmMjQ1YWUwY2Q3Njc3YWM0YjI0NzM2MGNmYTk2OSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA3IE1heSAy MDIzIDIwOjE1OjAzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMTMvMTE1XSBxdDYtd2ViZW5naW5l OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mv cXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZQppbmRleCA5Njg0NmZlYWVlODMuLjJmODVkMmU0OWJhMiAx MDA2NDQKLS0tIGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv cXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ3F0Ni13ZWJlbmdpbmUnCiBwa2duYW1lPXF0Ni13ZWJlbmdpbmUKIHZlcnNpb249Ni40LjIK LXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJn cz0iCiAgLURRVF9GRUFUVVJFX3dlYmVuZ2luZV9zeXN0ZW1fZmZtcGVnPU9OCgpGcm9tIDY5OGRh ZTBkNTI2N2M1Nzk0ZWQxMmZhOWQ3M2FkMzJjMzExMThiNDYgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNyBNYXkgMjAy MyAyMDoxNToyOSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTE0LzExNV0gdHJhY2tlci1taW5lcnM6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy90cmFja2VyLW1pbmVycy90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUgYi9zcmNwa2dz L3RyYWNrZXItbWluZXJzL3RlbXBsYXRlCmluZGV4IDhjMDA1ZDY5N2ZhNC4uYTZlNWFhNTc3NzAy IDEwMDY0NAotLS0gYS9zcmNwa2dzL3RyYWNrZXItbWluZXJzL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICd0cmFja2VyLW1pbmVycycKIHBrZ25hbWU9dHJhY2tlci1taW5lcnMKIHZlcnNpb249 My41LjAKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9o ZWxwZXI9cWVtdQogIyBtaXNzaW5nIGxpYmdyc3MgZm9yIG1pbmVyX3JzcwoKRnJvbSBjNDRjMTVl N2JlNjNkNzg5ZjNjNzdhMmE5OWMxNGIxMzE3NjI1MDcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDcgTWF5IDIwMjMg MjA6MjA6NTggLTA0MDAKU3ViamVjdDogW1BBVENIIDExNS8xMTVdIG1wZDogcmV2YnVtcCBmb3Ig ZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21wZC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bXBkL3RlbXBsYXRlIGIvc3JjcGtncy9tcGQvdGVtcGxhdGUKaW5kZXggZGYzNWU3NTFlYTYwLi5j ODMyZjYwOGI4ODkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbXBkL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvbXBkL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbXBk JwogcGtnbmFtZT1tcGQKIHZlcnNpb249MC4yMy4xMgotcmV2aXNpb249MgorcmV2aXNpb249Mwog YnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRG9wdXM9ZW5hYmxlZCAtRG1pa21v ZD1lbmFibGVkIC1EbmVpZ2hib3I9dHJ1ZQogIC1Ec291bmRjbG91ZD1lbmFibGVkIC1EcGlwZT10 cnVlIC1EdHdvbGFtZT1lbmFibGVkIC1EYnppcDI9ZW5hYmxlZAo= --===============9115888581860980245==--