From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 9447 invoked from network); 2 Aug 2023 14:18:39 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 2 Aug 2023 14:18:39 -0000 Content-Type: multipart/mixed; boundary="===============2323724578061949937==" 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: Wed, 02 Aug 2023 16:18:38 +0200 List-Id: Message-ID: <20230802141838.iJQkYeXLj6c7c0_3UVaNwkHlOb7cTmoo1gUDg9vPM2w@z> GitHub notification mails are now in MIME to allow UTF8. --===============2323724578061949937== 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 dHkgKGh0dHBzOi8vZ2l0aHViLmNvbS9hdWRhY2l0eS9hdWRhY2l0eS9pc3N1ZXMvMjMwNSBhbmQg aHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9wb3J0bWVkaWEvd2lraS9wb3J0c21mLyBpcyAnYmV0 YScpDQotIGNjZXh0cmFjdG9yIChtYXN0ZXIgcGF0Y2hlcz8gbm8gcmVsZWFzZSkNCi0gdmljZQ0K LSBrb2RpDQotIG1sdCAob25seSBkZXAgbGVmdCBpcyBmbG93YmxhZGUpDQotIH5+c3luZmlnICht bHQpfn4gKHdvcmsgd2l0aCBtbHQ3LCBidW1wIHN5bmZpZ3N0dWRpbykNCi0gdHZoZWFkZW5kDQot IHNzcg0KLSBzcGVrLWFsdGVybmF0aXZlDQotIHBwc3NwcA0KLSBvbGl2ZQ0KLSBtb2MNCi0gbWVk aWFzdHJlYW1lcg0KLSBsaWJleHRyYWN0b3INCi0gaWRqYw0KLSBoZWRnZXdhcnMNCi0gfn5mZm1w ZWd0aHVtYm5haWxlcn5+IChwYXRjaGVzIGZvciBtb3ZpZWRlY29kZXIueHh4IGZpbGVzKQ0KLSB+ fmZmbXBlZ3RodW1ic35+IChsYXRlc3QgY29tcGlsZXMpDQotIGRlYWRiZWVmDQotIG9teHBsYXll cg0KLSBxdGF2IChmb3JrIGhhcyBmZm1wZWcgNSBwYXRjaCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9j bWd1by9RdEFWKQ0KLSBgdmxjYCAodmxjNCB3aWxsIHN1cHBvcnQgZmZtcGVnNSwgdGhlcmUncyBh IHBhdGNoIHRvIGJ1aWxkIDMueCB3aXRoIGZmbXBlZzUgYnV0IGl0IHdpbGwgbGFjayB2YWFwaSkN Ci0gYG9zZ2AgKE9wZW5TY2VuZUdyYXBoIHBsdXMgYHhpbmUtbGliYCkNCg0KDQojIyMjIyBIQVZF IE5PVCBCVUlMVCBZRVQNCg0KLSBvbXhwbGF5ZXIgKHJwaSBvbmx5PyBmZm1wZWc0KQ0KLSBrb2Rp IChiaWcsIGJ1dCBmZm1wZWc0KQ0KDQoNCiMjIyMjIFVQREFURUQgKGZvciBmZm1wZWc2KQ0KDQot IH5+YmxlbmRlcjogdXBkYXRlIHRvIDMuNS4xfn4gfn53aWxsIGJlIHJldmJ1bXAgd2l0aH5+IGh0 dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80Mzk5Mg0KLSB1 bnBhcGVyOiB1cGRhdGUgdG8gNy4wLjAuDQotIGd1dmN2aWV3OiB1cGRhdGUgdG8gMi4wLjguDQot IHF0NTogdXBkYXRlIHRvIDUuMTUuOA0KLSBxdDUtd2ViZW5naW5lOiB1cGRhdGUgdG8gNS4xOC4x Mw0KLSBzaGlib2tlbjI6IHJldmJ1bXAgZm9yIHF0NS4xNS44IChwYXRjaCkNCi0gcHl0aG9uMy1w eXNpZGUyOiB1cGRhdGUgdG8gNS4xNS44IChwYXRjaCkNCg0KDQojIyMjIyBSZXF1aXJlbWVudHMN Cg0KLSB+fltnc3RyZWFtZXIgMS4yMi4yXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92 b2lkLXBhY2thZ2VzL3B1bGwvNDI4NjEpfn4gLSBhIGZldyBwYWNrYWdlcyB1c2UgZmZtcGVnLWRl dmVsIGFuZCByZXF1aXJlIGEgcmV2YnVtcA0KDQotIFtJbnRlbCBQYWNrYWdlc10oaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQxMTMyKSAtIGZmbXBlZzQg dXNlcyBkaWZmZXJlbnQgbGlicmFyaWVzIHRoYW4gNiAobGlibWZ4IC8gSW50ZWwtTWVkaWFTREsg dnMgb25seSBvbmVWUEwgdGhhdCBJbnRlbCBpcyBtb3ZpbmcgdG8pLCBib3RoIGFyZSBpbmNsdWRl ZCBoZXJlDQoNCi0gfn5bc2hvdGN1dCAyMy4wNS4xNF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQt bGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQ0MjYwKX5+DQoNCi0gaHR0cHM6Ly9naXRodWIuY29t L3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQ0NzgxIHdpbGwgcmVtb3ZlIGZyb20gdGhp cyBQUgoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9p ZC1wYWNrYWdlcy9wdWxsLzQzNzYxLnBhdGNoIGlzIGF0dGFjaGVk --===============2323724578061949937== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSA3NDVjMGJjOWFlNWNjNzFjM2YxZGJjZDQ2OWNmOWJiMTYyZDkyOWRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDE5OjU1OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTE1XSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI2ICsrKysrLS0tCiBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoICAgICAgICAgICAgfCA2MCAtLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAxOCAtLS0tLS0KIC4uLmgtbGliYXZj b2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZiB8IDQwIC0tLS0tLS0tLS0tLS0KIC4u Li93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8IDI4IC0tLS0tLS0t LQogc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgMzggKysr KysrLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDE3MyBkZWxldGlv bnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBh dGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12NXRlbC1m bG9hdGluZy1wb2ludC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3Bh dGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJl YWRlb24tdmFhcGktYnVnLnBhdGNoCgpkaWZmIC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2NvbW1v bi9zaGxpYnMKaW5kZXggMmQ1MjhhYTc5OGVlNS4uNDkwNmE0YTI5ZWZiNyAxMDA2NDQKLS0tIGEv Y29tbW9uL3NobGlicworKysgYi9jb21tb24vc2hsaWJzCkBAIC0zOTMsMTUgKzM5MywyMyBAQCBs aWJpZDN0YWcuc28uMCBsaWJpZDN0YWctMC4xNS4xYl8xCiBsaWJnaWYuc28uNyBnaWZsaWItNS4x LjBfMQogbGliSW1saWIyLnNvLjEgaW1saWIyLTEuNC4yXzEKIGxpYm1wM2xhbWUuc28uMCBsYW1l LTMuOTguMl8xCi1saWJhdmRldmljZS5zby41OCBsaWJhdmRldmljZS00LjBfMQotbGliYXZmb3Jt YXQuc28uNTggbGliYXZmb3JtYXQtNC4wXzEKLWxpYnN3c2NhbGUuc28uNSBsaWJzd3NjYWxlLTQu MF8xCi1saWJzd3Jlc2FtcGxlLnNvLjMgbGlic3dyZXNhbXBsZS00LjBfMQotbGliYXZyZXNhbXBs ZS5zby40IGxpYmF2cmVzYW1wbGUtNC4wXzEKLWxpYnBvc3Rwcm9jLnNvLjU1IGxpYnBvc3Rwcm9j LTQuMF8xCi1saWJhdmNvZGVjLnNvLjU4IGxpYmF2Y29kZWMtNC4wXzEKLWxpYmF2dXRpbC5zby41 NiBsaWJhdnV0aWwtNC4wXzEKLWxpYmF2ZmlsdGVyLnNvLjcgbGliYXZmaWx0ZXItNC4wXzEKK2xp YmF2ZGV2aWNlLnNvLjYwIGxpYmF2ZGV2aWNlLTYuMF8xCitsaWJhdmZvcm1hdC5zby42MCBsaWJh dmZvcm1hdC02LjBfMQorbGlic3dzY2FsZS5zby43IGxpYnN3c2NhbGUtNi4wXzEKK2xpYnN3cmVz YW1wbGUuc28uNCBsaWJzd3Jlc2FtcGxlLTYuMF8xCitsaWJwb3N0cHJvYy5zby41NyBsaWJwb3N0 cHJvYy02LjBfMQorbGliYXZjb2RlYy5zby42MCBsaWJhdmNvZGVjLTYuMF8xCitsaWJhdnV0aWwu c28uNTggbGliYXZ1dGlsLTYuMF8xCitsaWJhdmZpbHRlci5zby45IGxpYmF2ZmlsdGVyLTYuMF8x CitsaWJhdmRldmljZS5zby41OCBsaWJhdmRldmljZTQtNC4wXzEKK2xpYmF2Zm9ybWF0LnNvLjU4 IGxpYmF2Zm9ybWF0NC00LjBfMQorbGlic3dzY2FsZS5zby41IGxpYnN3c2NhbGU0LTQuMF8xCits aWJzd3Jlc2FtcGxlLnNvLjMgbGlic3dyZXNhbXBsZTQtNC4wXzEKK2xpYmF2cmVzYW1wbGUuc28u NCBsaWJhdnJlc2FtcGxlNC00LjBfMQorbGlicG9zdHByb2Muc28uNTUgbGlicG9zdHByb2M0LTQu MF8xCitsaWJhdmNvZGVjLnNvLjU4IGxpYmF2Y29kZWM0LTQuMF8xCitsaWJhdnV0aWwuc28uNTYg bGliYXZ1dGlsNC00LjBfMQorbGliYXZmaWx0ZXIuc28uNyBsaWJhdmZpbHRlcjQtNC4wXzEKIGxp YlNETC0xLjIuc28uMCBTREwtMS4yLjE0XzEKIGxpYlNETF9pbWFnZS0xLjIuc28uMCBTRExfaW1h Z2UtMS4yLjEwXzEKIGxpYngyNjQuc28uMTU3IHgyNjQtMjAxOTA1MDcuMjI0NV8xCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBhdGNoIGIvc3JjcGtncy9mZm1wZWcv ZmlsZXMvYWx0aXZlYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM1NzIw MDQ2MzMyMC4uMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotcmV2ZXJ0IHNvbWUgYWx0aXZl YyBzcGVjaWZpYyBjaGFuZ2Ugb24gYWxsIHBwYyogZXhjZXB0IHBwYzY0bGUqCi0KLXE2NjogIldl IHNob3VsZCBhbHNvIHRocm93IGluIGEgcmV2ZXJ0IG9mIEZGbXBlZy9GRm1wZWdAM2E1NTdjNSBi dXQgb25seQotY29uZGl0aW9uYWxseSwgZm9yIHBwYyogYnV0IG5vdCBwcGM2NGxlKiAodGhlIG5l dyBjb2RlIGlzIHZhbGlkIGZvcgotUE9XRVI4IFZTWCB3aGljaCBMRSB0YXJnZXRzIGFzIGEgYmFz ZWxpbmUgYnV0IG5vdCBCRSkiCi0KLQotVGhpcyByZXZlcnRzIGNvbW1pdCAzYTU1N2M1ZDg4Yjdi MTViNTk1NGJhMjc0M2ZlYmIwNTU1NDliNTM2LgotLS0tCi0gbGlic3dzY2FsZS9wcGMveXV2MnJn Yl9hbHRpdmVjLmMgfCAyNCArKysrKysrKysrKysrKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdl ZCwgMjAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYnN3 c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jIGIvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRp dmVjLmMKLWluZGV4IDUzNjU0NTI5M2QuLmMxZTI4NTJhZGIgMTAwNjQ0Ci0tLS0gYS9saWJzd3Nj YWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYwotKysrIGIvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9h bHRpdmVjLmMKLUBAIC0zMDUsNiArMzA1LDkgQEAgc3RhdGljIGludCBhbHRpdmVjXyAjIyBuYW1l KFN3c0NvbnRleHQgKmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAgICAgXAotICAg ICB2ZWN0b3Igc2lnbmVkIHNob3J0IFIxLCBHMSwgQjE7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgUiwgRywgQjsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgICBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqeTFpdlAsICp5 Mml2UCwgKnVpdlAsICp2aXZQOyAgICAgICAgICAgICAgICAgIFwKLSsgICAgdmVjdG9yIHVuc2ln bmVkIGNoYXIgYWxpZ25fcGVybTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0 IGxDWSAgICAgICA9IGMtPkNZOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBsT1kgICAgICAgPSBjLT5PWTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciBzaWduZWQgc2hvcnQgbENSViAg ICAgID0gYy0+Q1JWOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTMz NSwxMyArMzM4LDI2IEBAIHN0YXRpYyBpbnQgYWx0aXZlY18gIyMgbmFtZShTd3NDb250ZXh0ICpj LCBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW4sICAgICAgICAgIFwKLSAgICAgICAgIHZlY19kc3Rz dChvdXRlLCAoMHgwMjAwMDAwMiB8ICgoKHcgKiAzICsgMzIpIC8gMzIpIDw8IDE2KSksIDEpOyAg ICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgZm9yIChqID0gMDsgaiA8 IHcgLyAxNjsgaisrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LS0gICAgICAgICAgICB5MCA9IHZlY194bCgwLCB5MWkpOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgeTFpdlAgPSAoY29uc3QgdmVj dG9yIHVuc2lnbmVkIGNoYXIgKikgeTFpOyAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAg ICAgICAgIHkyaXZQID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHkyaTsgICAgICAg ICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB1aXZQICA9IChjb25zdCB2ZWN0b3IgdW5z aWduZWQgY2hhciAqKSB1aTsgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAg dml2UCAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgdmk7ICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICBhbGlnbl9w ZXJtID0gdmVjX2x2c2woMCwgeTFpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICAgICAgICAgICAgeTAgPSAodmVjdG9yIHVuc2lnbmVkIGNoYXIpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgIHZlY19w ZXJtKHkxaXZQWzBdLCB5MWl2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgeTEgPSB2ZWNfeGwoMCwgeTJpKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAg ICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB5MmkpOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB5MSA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcikg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAg ICAgICAgdmVjX3Blcm0oeTJpdlBbMF0sIHkyaXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAg ICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICB1ID0gKHZlY3Rv ciBzaWduZWQgY2hhcikgdmVjX3hsKDAsIHVpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHVpKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHUgPSAodmVjdG9yIHNpZ25l ZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAg ICAgICAgICAgICAgICAgIHZlY19wZXJtKHVpdlBbMF0sIHVpdlBbMV0sIGFsaWduX3Blcm0pOyAg ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAg IHYgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdmkpOyAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgdmkpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgdiA9ICh2 ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKyAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odml2UFswXSwgdml2UFsxXSwgYWxp Z25fcGVybSk7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgdmVjX3N1Yih1LCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0tIAotMi4y Ny4wCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRp bmctcG9pbnQucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5n LXBvaW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTU1MTc4Yzc0ZjBm Li4wMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxv YXRpbmctcG9pbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0tLS0gYS9s aWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTAtMjYgMjE6MDM6MDMuMDAwMDAwMDAwICsw MjAwCi0rKysgYi9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTEtMjEgMTE6MDY6NDku NjAyMjg0NDIyICswMTAwCi1AQCAtMzksNiArMzksMTUgQEAKLSAjZW5kaWYKLSAjaW5jbHVkZSA8 ZmVudi5oPgotIAotKyNpZiAoRkVfQUxMX0VYQ0VQVCA9PSAwKQotKy8qIEUuZy4gQVJNIHNvZnQg ZmxvYXQgZG9lcyBub3QgZGVmaW5lIHRoZXNlICovCi0rI2RlZmluZSBGRV9JTlZBTElEICAgIDAK LSsjZGVmaW5lIEZFX0RJVkJZWkVSTyAgMAotKyNkZWZpbmUgRkVfT1ZFUkZMT1cgICAwCi0rI2Rl ZmluZSBGRV9VTkRFUkZMT1cgIDAKLSsjZGVmaW5lIEZFX0lORVhBQ1QgICAgMAotKyNlbmRpZgot KwotICNpZiBDT05GSUdfTElCRk9OVENPTkZJRwotICNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRj b25maWcuaD4KLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvcGF0 Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZiBiL3NyY3BrZ3MvZmZt cGVnL3BhdGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlm ZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE5NDhmN2E4YTJkZi4uMDAwMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3BhdGNoLWxpYmF2Y29kZWMtbGlic3Z0 YXYxLXRlbl9iaXRfZm9ybWF0LmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0j PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgRnJvbSAwMzFmMTU2 MWNkMjg2NTk2Y2RiMzc0ZGEzMmY4YWE4MTZjZTNiMTM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotIyBGcm9tOiBDaHJpc3RvcGhlciBEZWdhd2EgPGNocmlzdG9waGVyLmRlZ2F3YUBpbnRlbC5j b20+Ci0jIERhdGU6IFRodSwgMjAgT2N0IDIwMjIgMjI6NTU6MjcgLTA1MDAKLSMgU3ViamVjdDog W1BBVENIXSBhdmNvZGVjL2xpYnN2dGF2MTogcmVtb3ZlIGNvbXByZXNzZWRfdGVuX2JpdF9mb3Jt YXQgYW5kIHNpbXBsaWZ5IGFsbG9jX2J1ZmZlcgotIwotIyBjb21wcmVzc2VkX3Rlbl9iaXRfZm9y bWF0IGhhcyBiZWVuIGRlcHJlY2F0ZWQgdXBzdHJlYW0gYW5kIGhhcyBubyBlZmZlY3QKLSMgYW5k IGNhbiBiZSByZW1vdmVkLiBQbHVzLCB0ZWNobmljYWxseSBpdCB3YXMgbmV2ZXIgdXNlZCBpbiB0 aGUgZmlyc3QgcGxhY2UKLSMgc2luY2UgaXQgd291bGQgcmVxdWlyZSB0aGUgYXBwIChmZm1wZWcp IHRvIHNldCBpdCBhbmQgZG8gYWRkaXRpb25hbAotIyBwcm9jZXNzaW5nIG9mIHRoZSBpbnB1dCBm cmFtZXMuCi0jCi0jIEFsc28gc2ltcGxpZnkgYWxsb2NfYnVmZmVyIGJ5IHJlbW92aW5nIGNhbGN1 bGF0aW9ucyByZWxhdGluZyB0byB0aGUgbm9uLWV4aXN0YW50IHByb2Nlc3NpbmcuCi0jCi0jIFNp Z25lZC1vZmYtYnk6IENocmlzdG9waGVyIERlZ2F3YSA8Y2hyaXN0b3BoZXIuZGVnYXdhQGludGVs LmNvbT4KLSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEv bGliYXZjb2RlYy9saWJzdnRhdjEuYwotKysrIGIvbGliYXZjb2RlYy9saWJzdnRhdjEuYwotQEAg LTEyNCwxNiArMTI0LDEyIEBAIHN0YXRpYyBpbnQgc3Z0X3ByaW50X2Vycm9yKHZvaWQgKmxvZ19j dHgsIEViRXJyb3JUeXBlIGVyciwKLSAKLSBzdGF0aWMgaW50IGFsbG9jX2J1ZmZlcihFYlN2dEF2 MUVuY0NvbmZpZ3VyYXRpb24gKmNvbmZpZywgU3Z0Q29udGV4dCAqc3Z0X2VuYykKLSB7Ci0tICAg IGNvbnN0IGludCAgICBwYWNrX21vZGVfMTBiaXQgPQotLSAgICAgICAgKGNvbmZpZy0+ZW5jb2Rl cl9iaXRfZGVwdGggPiA4KSAmJiAoY29uZmlnLT5jb21wcmVzc2VkX3Rlbl9iaXRfZm9ybWF0ID09 IDApID8gMSA6IDA7Ci0tICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemVfOGJpdCAgPQotLSAgICAg ICAgY29uZmlnLT5zb3VyY2Vfd2lkdGggKiBjb25maWctPnNvdXJjZV9oZWlnaHQgKiAoMSA8PCBw YWNrX21vZGVfMTBiaXQpOwotLSAgICBjb25zdCBzaXplX3QgbHVtYV9zaXplXzEwYml0ID0KLS0g ICAgICAgIChjb25maWctPmVuY29kZXJfYml0X2RlcHRoID4gOCAmJiBwYWNrX21vZGVfMTBiaXQg PT0gMCkgPyBsdW1hX3NpemVfOGJpdCA6IDA7Ci0rICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemUg PSBjb25maWctPnNvdXJjZV93aWR0aCAqIGNvbmZpZy0+c291cmNlX2hlaWdodCAqCi0rICAgICAg ICAoY29uZmlnLT5lbmNvZGVyX2JpdF9kZXB0aCA+IDggPyAyIDogMSk7Ci0gCi0gICAgIEViU3Z0 SU9Gb3JtYXQgKmluX2RhdGE7Ci0gCi0tICAgIHN2dF9lbmMtPnJhd19zaXplID0gKGx1bWFfc2l6 ZV84Yml0ICsgbHVtYV9zaXplXzEwYml0KSAqIDMgLyAyOwotKyAgICBzdnRfZW5jLT5yYXdfc2l6 ZSA9IGx1bWFfc2l6ZSAqIDMgLyAyOwotIAotICAgICAvLyBhbGxvY2F0ZSBidWZmZXIgZm9yIGlu IGFuZCBvdXQKLSAgICAgc3Z0X2VuYy0+aW5fYnVmICAgICAgICAgICA9IGF2X21hbGxvY3ooc2l6 ZW9mKCpzdnRfZW5jLT5pbl9idWYpKTsKLS0tIAotR2l0TGFiCi0KZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNo IGIvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1i dWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwZTNmNjhhNDE1YjguLjAw MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2Et cmVhZGVvbi12YWFwaS1idWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1G cm9tIDgxMWQyOTA4NDQyMDZmYzczZGMzOWMzZTViNjdkNWQ4OTViYWVkZjggTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCi1Gcm9tOiBSYWluZXIgSG9jaGVja2VyIDxmZXJuZXRtZW50YUBvbmxpbmUu ZGU+Ci1EYXRlOiBTYXQsIDI2IEphbiAyMDE5IDE5OjQ4OjM1ICswMTAwCi1TdWJqZWN0OiBbUEFU Q0hdIGF2Y29kZWMvdmFhcGlfaDI2NDogc2tpcCBkZWNvZGUgaWYgcGljIGhhcyBubyBzbGljZXMK LQotVGhpcyBmaXhlcyAvIHdvcmthcm91bmRzIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcv c2hvd19idWcuY2dpP2lkPTEwNTM2OC4KLUl0IHdhcyBoaXQgZnJlcXVlbnRseSB3aGVuIHdhdGNo aW5nIGgyNjQgY2hhbm5lbHMgcmVjZWl2ZWQgdmlhIERWQi1YLgotQ29ycmVzcG9uZGluZyBrb2Rp IGJ1ZzogaHR0cHM6Ly9naXRodWIuY29tL3hibWMveGJtYy9pc3N1ZXMvMTU3MDQKLS0tLQotIGxp YmF2Y29kZWMvdmFhcGlfaDI2NC5jIHwgNSArKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2Vy dGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jIGIvbGliYXZj b2RlYy92YWFwaV9oMjY0LmMKLWluZGV4IDU4NTQ1ODdhMjU1Li5mMTJmZGM0NTdhNCAxMDA2NDQK LS0tLSBhL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jCi0rKysgYi9saWJhdmNvZGVjL3ZhYXBpX2gy NjQuYwotQEAgLTMxNyw2ICszMTcsMTEgQEAgc3RhdGljIGludCB2YWFwaV9oMjY0X2VuZF9mcmFt ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgpCi0gICAgIEgyNjRTbGljZUNvbnRleHQgKnNsID0gJmgt PnNsaWNlX2N0eFswXTsKLSAgICAgaW50IHJldDsKLSAKLSsgICAgaWYgKHBpYy0+bmJfc2xpY2Vz ID09IDApIHsKLSsgICAgICAgIHJldCA9IEFWRVJST1JfSU5WQUxJRERBVEE7Ci0rICAgICAgICBn b3RvIGZpbmlzaDsKLSsgICAgfQotKwotICAgICByZXQgPSBmZl92YWFwaV9kZWNvZGVfaXNzdWUo YXZjdHgsIHBpYyk7Ci0gICAgIGlmIChyZXQgPCAwKQotICAgICAgICAgZ290byBmaW5pc2g7CmRp ZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZy90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVnL3RlbXBs YXRlCmluZGV4IGFlMjY0OTZlNzkyOTMuLmMxZjliN2VmZTQwZTMgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvZmZtcGVnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmZtcGVnL3RlbXBsYXRlCkBAIC0xLDE1 ICsxLDE1IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWcnCiAjIGF1ZGFjaXR5IGFsc28g bmVlZHMgdG8gYmUgYnVtcGVkIHdoZW4gYSBuZXcgZmZtcGVnIHZlcnNpb24gYnVtcHMgbGliYXZm b3JtYXQncyBzb25hbWUhCiBwa2duYW1lPWZmbXBlZwotdmVyc2lvbj00LjQuNAotcmV2aXNpb249 MgordmVyc2lvbj02LjAKK3JldmlzaW9uPTEKIHNob3J0X2Rlc2M9IkRlY29kaW5nLCBlbmNvZGlu ZyBhbmQgc3RyZWFtaW5nIHNvZnR3YXJlIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2 b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0 cHM6Ly93d3cuZmZtcGVnLm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNv bnRlbnQuY29tL0ZGbXBlZy9GRm1wZWcvbWFzdGVyL0NoYW5nZWxvZyIKIGRpc3RmaWxlcz0iaHR0 cHM6Ly93d3cuZmZtcGVnLm9yZy9yZWxlYXNlcy9mZm1wZWctJHt2ZXJzaW9ufS50YXIueHoiCi1j aGVja3N1bT1lODBiMzgwZDU5NWM4MDkwNjBmNjZmOTZhNWQ4NDk1MTFlZjRhNzZhMjZiNzZlYWNm NTc3OGI5NGMzNTcwMzA5CitjaGVja3N1bT01N2JlODdjMjJkOWI0OWMxMTJiNmQyNGJjNjdkNDI1 MDg2NjBlNmI3MThiM2RiODljNDRlNDdlMjg5MTM3MDgyCiAKIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyBwZXJsIgogbWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5 cGUtZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGliWGZpeGVzLWRldmVsCkBAIC0yNiwxMiArMjYsMTMg QEAgbWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgYWxz YS1saWItZGV2ZWwgbGliWGZpeGVzLWRldmUKICAkKHZvcHRfaWYgd2VicCBsaWJ3ZWJwLWRldmVs KSAkKHZvcHRfaWYgc29mYSBsaWJteXNvZmEtZGV2ZWwpCiAgJCh2b3B0X2lmIGRybSBsaWJkcm0t ZGV2ZWwpICQodm9wdF9pZiBzdnRhdjEgbGlic3Z0LWF2MS1kZXZlbCkKICAkKHZvcHRfaWYgc3J0 IHNydC1kZXZlbCkgJCh2b3B0X2lmIHJpc3QgbGlicmlzdC1kZXZlbCkKLSAkKHZvcHRfaWYgdnVs a2FuICd2dWxrYW4tbG9hZGVyIFZ1bGthbi1IZWFkZXJzJykKKyAkKHZvcHRfaWYgdnVsa2FuICd2 dWxrYW4tbG9hZGVyIFZ1bGthbi1IZWFkZXJzIFZ1bGthbi1Ub29scyBWdWxrYW4tVmFsaWRhdGlv bkxheWVycycpCisgJCh2b3B0X2lmIG9uZXZwbCAnb25ldnBsIG9uZXZwbC1kZXZlbCcpCiAgJCh2 b3B0X2lmIG52ZW5jIG52LWNvZGVjLWhlYWRlcnMpICQodm9wdF9pZiBudmRlYyBudi1jb2RlYy1o ZWFkZXJzKSIKIGRlcGVuZHM9ImZmcGxheT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAogYnVp bGRfb3B0aW9ucz0ieDI2NSB2NGwyIHZhYXBpIHZkcGF1IHZweCBmZGtfYWFjIGFvbSBudmVuYyBz bmRpbyBwdWxzZWF1ZGlvCi0gZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEg c3J0IHJpc3QgbnZkZWMiCisgZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEg c3J0IHJpc3QgbnZkZWMgb25ldnBsIgogYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJ4MjY1IHY0bDIg dnB4IGFvbSBzbmRpbyBwdWxzZWF1ZGlvIGRhdjFkIHdlYnAgdnVsa2FuIGRybSBzcnQgcmlzdCIK IGRlc2Nfb3B0aW9uX3NydD0iRW5hYmxlIHN1cHBvcnQgZm9yIFNSVCAoU2VjdXJlLCBSZWxpYWJs ZSwgVHJhbnNwb3J0KSIKIGRlc2Nfb3B0aW9uX3Jpc3Q9IkVuYWJsZSBzdXBwb3J0IGZvciBSSVNU IChSZWxpYWJsZSBJbnRlcm5ldCBTdHJlYW0gVHJhbnNwb3J0KSIKQEAgLTM5LDkgKzQwLDEzIEBA IGRlc2Nfb3B0aW9uX3NvZmE9IkVuYWJsZSBzdXBwb3J0IGZvciBBRVMgU09GQSIKIGRlc2Nfb3B0 aW9uX3dlYnA9IkVuYWJsZSBzdXBwb3J0IGZvciBXZWJQIgogCiBjYXNlICIkWEJQU19UQVJHRVRf TUFDSElORSIgaW4KLQlpNjg2Knx4ODZfNjQqKQotCQlob3N0bWFrZWRlcGVuZHMrPSIgbmFzbSIK KwlpNjg2KikKIAkJYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5jIG52 ZGVjIgorCQlob3N0bWFrZWRlcGVuZHMrPSIgbmFzbSIKKwkJOzsKKwl4ODZfNjQqKQorCQlob3N0 bWFrZWRlcGVuZHMrPSIgbmFzbSIKKwkJYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZk cGF1IG52ZW5jIG52ZGVjIG9uZXZwbCIKIAkJOzsKIAlwcGM2NCopIGJ1aWxkX29wdGlvbnNfZGVm YXVsdCs9IiB2YWFwaSB2ZHBhdSI7OwogCW1pcHMqKSBDRkxBR1M9Ii1tbmFuPWxlZ2FjeSI7OwpA QCAtMTE1LDE4ICsxMjAsMTkgQEAgZG9fY29uZmlndXJlKCkgewogCQkkKHZvcHRfZW5hYmxlIHgy NjUgbGlieDI2NSkgXAogCQkkKHZvcHRfZW5hYmxlIHY0bDIgbGlidjRsMikgXAogCQkkKHZvcHRf ZW5hYmxlIGFvbSBsaWJhb20pICQodm9wdF9lbmFibGUgdmFhcGkpICQodm9wdF9lbmFibGUgdmRw YXUpIFwKLQkJLS1lbmFibGUtbGliYnMyYiAtLWVuYWJsZS1hdnJlc2FtcGxlIC0tZW5hYmxlLWxp YnZpZHN0YWIgXAorCQktLWVuYWJsZS1saWJiczJiIC0tZW5hYmxlLWxpYnZpZHN0YWIgXAogCQkk KHZvcHRfZW5hYmxlIGRhdjFkIGxpYmRhdjFkKSBcCiAJCSQodm9wdF9lbmFibGUgemltZyBsaWJ6 aW1nKSBcCiAJCSQodm9wdF9lbmFibGUgd2VicCBsaWJ3ZWJwKSBcCiAJCSQodm9wdF9lbmFibGUg c29mYSBsaWJteXNvZmEpIFwKIAkJJCh2b3B0X2VuYWJsZSB2dWxrYW4pIFwKKwkJJCh2b3B0X2Vu YWJsZSBvbmV2cGwgbGlidnBsKSBcCiAJCSQodm9wdF9lbmFibGUgZHJtIGxpYmRybSkgXAogCQkk KHZvcHRfZW5hYmxlIHN2dGF2MSBsaWJzdnRhdjEpIFwKIAkJJCh2b3B0X2VuYWJsZSBzcnQgbGli c3J0KSBcCiAJCSQodm9wdF9lbmFibGUgcmlzdCBsaWJyaXN0KSBcCi0JCSQodm9wdF9pZiBudmVu YyAnLS1lbmFibGUtbnZlbmMnKSBcCi0JCSQodm9wdF9pZiBudmRlYyAnLS1lbmFibGUtbnZkZWMn KQorCQkkKHZvcHRfZW5hYmxlIG52ZW5jIG52ZW5jKSBcCisJCSQodm9wdF9lbmFibGUgbnZkZWMg bnZkZWMpCiB9CiAKIGRvX2J1aWxkKCkgewpAQCAtMTUzLDEwICsxNTksOCBAQCBsaWJhdmRldmlj ZV9wYWNrYWdlKCkgewogfQogCiBsaWJhdnJlc2FtcGxlX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVz Yz0iRkZtcGVnIGF1ZGlvIHJlc2FtcGxpbmcgbGlicmFyeSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJ dm1vdmUgInVzci9saWIvbGliYXZyZXNhbXBsZS5zby4qIgotCX0KKwlzaG9ydF9kZXNjPSJQYWNr YWdlIGRlcHJlY2F0ZWQsIHJlbW92YWwgbmVlZGVkIgorCWJ1aWxkX3N0eWxlPW1ldGEKIH0KIAog bGliYXZmb3JtYXRfcGFja2FnZSgpIHsKQEAgLTIxMCwxNSArMjE0LDEzIEBAIGZmbXBlZy1kZXZl bF9wYWNrYWdlKCkgewogCQlsaWJhdmZpbHRlcj49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQogCQls aWJwb3N0cHJvYz49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQogCQlsaWJzd3NjYWxlPj0ke3ZlcnNp b259XyR7cmV2aXNpb259Ci0JCWxpYnN3cmVzYW1wbGU+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0K LQkJbGliYXZyZXNhbXBsZT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwkJbGlic3dyZXNhbXBs ZT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQg ZmlsZXMiCi0KKwljb25mbGljdHM9ImZmbXBlZzQtZGV2ZWwiCiAJaWYgWyAiJFhCUFNfVEFSR0VU X01BQ0hJTkUiID0gImk2ODYiIF07IHRoZW4KIAkJIyAvdXNyL2Jpbi9zdHJpcDogZXJyb3I6IHRo ZSBpbnB1dCBmaWxlICcvZGVzdGRpci8vZmZtcGVnLWRldmVsLTQuNC40L3Vzci9saWIvbGliYXZm aWx0ZXIuYSh2Zl9hdGFkZW5vaXNlLm8pJyBoYXMgbm8gc2VjdGlvbnMKIAkJbm9zdHJpcF9maWxl cz0iL3Vzci9saWIvbGliYXZmaWx0ZXIuYSIKIAlmaQotCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZt b3ZlIHVzci9pbmNsdWRlCiAJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCgpGcm9tIDFkNmIyMjY3 Yzk2NTY4OTFmZDkxYzYxODlmNTViOGFjMTAxNGNkOTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MTk6NTY6MjIgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwMi8xMTVdIE5ldyBwYWNrYWdlOiBmZm1w ZWc0LTQuNC40LgoKLS0tCiBzcmNwa2dzL2ZmbXBlZzQtZGV2ZWwgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2ggICAgICAg ICAgIHwgIDYwICsrKysrCiAuLi4vcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRj aCAgICAgfCAgMTggKysKIC4uLmgtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQu ZGlmZiB8ICA0MCArKysKIC4uLi93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0 Y2ggICB8ICAyOCArKwogc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRlICAgICAgICAgICAgICAgICAg ICAgIHwgMjQwICsrKysrKysrKysrKysrKysrKwogc3JjcGtncy9saWJhdmNvZGVjNCAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZkZXZpY2U0ICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2ZmlsdGVyNCAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJhdmZvcm1hdDQgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZyZXNhbXBsZTQgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2dXRpbDQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJwb3N0cHJvYzQgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGlic3dyZXNhbXBsZTQgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYnN3c2NhbGU0ICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDEgKwogMTUgZmlsZXMgY2hhbmdlZCwgMzk2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEyMDAwMCBzcmNwa2dzL2ZmbXBlZzQtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2ZmbXBlZzQvZmlsZXMvYWx0aXZlYy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvZmZtcGVnNC9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJz dnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZt cGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZQogY3JlYXRlIG1vZGUgMTIw MDAwIHNyY3BrZ3MvbGliYXZjb2RlYzQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYmF2 ZGV2aWNlNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZmaWx0ZXI0CiBjcmVhdGUg bW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdmZvcm1hdDQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNw a2dzL2xpYmF2cmVzYW1wbGU0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdnV0aWw0 CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJwb3N0cHJvYzQKIGNyZWF0ZSBtb2RlIDEy MDAwMCBzcmNwa2dzL2xpYnN3cmVzYW1wbGU0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9s aWJzd3NjYWxlNAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbCBiL3NyY3BrZ3Mv ZmZtcGVnNC1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44 ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0LWRldmVsCkBA IC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0aXZlYy5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVn NC9maWxlcy9hbHRpdmVjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMDAuLjljNTcyMDA0NjMzMjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZmbXBlZzQv ZmlsZXMvYWx0aXZlYy5wYXRjaApAQCAtMCwwICsxLDYwIEBACityZXZlcnQgc29tZSBhbHRpdmVj IHNwZWNpZmljIGNoYW5nZSBvbiBhbGwgcHBjKiBleGNlcHQgcHBjNjRsZSoKKworcTY2OiAiV2Ug c2hvdWxkIGFsc28gdGhyb3cgaW4gYSByZXZlcnQgb2YgRkZtcGVnL0ZGbXBlZ0AzYTU1N2M1IGJ1 dCBvbmx5Citjb25kaXRpb25hbGx5LCBmb3IgcHBjKiBidXQgbm90IHBwYzY0bGUqICh0aGUgbmV3 IGNvZGUgaXMgdmFsaWQgZm9yCitQT1dFUjggVlNYIHdoaWNoIExFIHRhcmdldHMgYXMgYSBiYXNl bGluZSBidXQgbm90IEJFKSIKKworCitUaGlzIHJldmVydHMgY29tbWl0IDNhNTU3YzVkODhiN2Ix NWI1OTU0YmEyNzQzZmViYjA1NTU0OWI1MzYuCistLS0KKyBsaWJzd3NjYWxlL3BwYy95dXYycmdi X2FsdGl2ZWMuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2Vk LCAyMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlic3dz Y2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMgYi9saWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2 ZWMuYworaW5kZXggNTM2NTQ1MjkzZC4uYzFlMjg1MmFkYiAxMDA2NDQKKy0tLSBhL2xpYnN3c2Nh bGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCisrKysgYi9saWJzd3NjYWxlL3BwYy95dXYycmdiX2Fs dGl2ZWMuYworQEAgLTMwNSw2ICszMDUsOSBAQCBzdGF0aWMgaW50IGFsdGl2ZWNfICMjIG5hbWUo U3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAgICAgICAgICBcCisgICAg IHZlY3RvciBzaWduZWQgc2hvcnQgUjEsIEcxLCBCMTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBSLCBHLCBCOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisrICAgIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICp5MWl2UCwgKnky aXZQLCAqdWl2UCwgKnZpdlA7ICAgICAgICAgICAgICAgICAgXAorKyAgICB2ZWN0b3IgdW5zaWdu ZWQgY2hhciBhbGlnbl9wZXJtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIHZlY3RvciBzaWduZWQgc2hvcnQg bENZICAgICAgID0gYy0+Q1k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor ICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxPWSAgICAgICA9IGMtPk9ZOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBsQ1JWICAg ICAgPSBjLT5DUlY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitAQCAtMzM1 LDEzICszMzgsMjYgQEAgc3RhdGljIGludCBhbHRpdmVjXyAjIyBuYW1lKFN3c0NvbnRleHQgKmMs IGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAgICAgXAorICAgICAgICAgdmVjX2RzdHN0 KG91dGUsICgweDAyMDAwMDAyIHwgKCgodyAqIDMgKyAzMikgLyAzMikgPDwgMTYpKSwgMSk7ICAg ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICBmb3IgKGogPSAwOyBqIDwg dyAvIDE2OyBqKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor LSAgICAgICAgICAgIHkwID0gdmVjX3hsKDAsIHkxaSk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB5MWl2UCA9IChjb25zdCB2ZWN0 b3IgdW5zaWduZWQgY2hhciAqKSB5MWk7ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAg ICAgICAgeTJpdlAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgeTJpOyAgICAgICAg ICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHVpdlAgID0gKGNvbnN0IHZlY3RvciB1bnNp Z25lZCBjaGFyICopIHVpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB2 aXZQICA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB2aTsgICAgICAgICAgICAgICAg ICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIGFsaWduX3Bl cm0gPSB2ZWNfbHZzbCgwLCB5MWkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKysgICAgICAgICAgICB5MCA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcikgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgdmVjX3Bl cm0oeTFpdlBbMF0sIHkxaXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICB5MSA9IHZlY194bCgwLCB5MmkpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAg ICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkyaSk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHkxID0gKHZlY3RvciB1bnNpZ25lZCBjaGFyKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAg ICAgICB2ZWNfcGVybSh5Mml2UFswXSwgeTJpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAgICAg ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIHUgPSAodmVjdG9y IHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdWkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KysgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgdWkpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVk IGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAg ICAgICAgICAgICAgICAgdmVjX3Blcm0odWl2UFswXSwgdWl2UFsxXSwgYWxpZ25fcGVybSk7ICAg ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAg diA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgwLCB2aSk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB2aSk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB2ID0gKHZl Y3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisrICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh2aXZQWzBdLCB2aXZQWzFdLCBhbGln bl9wZXJtKTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICB2ZWNfc3ViKHUsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLS0gCisyLjI3 LjAKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRp bmctcG9pbnQucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGlu Zy1wb2ludC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi45 YTU1MTc4Yzc0ZjBmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMv YXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorLS0tIGEvbGli YXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTEwLTI2IDIxOjAzOjAzLjAwMDAwMDAwMCArMDIw MAorKysrIGIvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTExLTIxIDExOjA2OjQ5LjYw MjI4NDQyMiArMDEwMAorQEAgLTM5LDYgKzM5LDE1IEBACisgI2VuZGlmCisgI2luY2x1ZGUgPGZl bnYuaD4KKyAKKysjaWYgKEZFX0FMTF9FWENFUFQgPT0gMCkKKysvKiBFLmcuIEFSTSBzb2Z0IGZs b2F0IGRvZXMgbm90IGRlZmluZSB0aGVzZSAqLworKyNkZWZpbmUgRkVfSU5WQUxJRCAgICAwCisr I2RlZmluZSBGRV9ESVZCWVpFUk8gIDAKKysjZGVmaW5lIEZFX09WRVJGTE9XICAgMAorKyNkZWZp bmUgRkVfVU5ERVJGTE9XICAwCisrI2RlZmluZSBGRV9JTkVYQUNUICAgIDAKKysjZW5kaWYKKysK KyAjaWYgQ09ORklHX0xJQkZPTlRDT05GSUcKKyAjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250Y29u ZmlnLmg+CisgI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9wYXRj aC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0X2Zvcm1hdC5kaWZmIGIvc3JjcGtncy9mZm1w ZWc0L3BhdGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlm ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5hYTk0OGY3YThhMmRm Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvcGF0Y2gtbGliYXZj b2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgpAQCAtMCwwICsxLDQwIEBACisjPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRnJvbSAwMzFmMTU2MWNk Mjg2NTk2Y2RiMzc0ZGEzMmY4YWE4MTZjZTNiMTM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor IyBGcm9tOiBDaHJpc3RvcGhlciBEZWdhd2EgPGNocmlzdG9waGVyLmRlZ2F3YUBpbnRlbC5jb20+ CisjIERhdGU6IFRodSwgMjAgT2N0IDIwMjIgMjI6NTU6MjcgLTA1MDAKKyMgU3ViamVjdDogW1BB VENIXSBhdmNvZGVjL2xpYnN2dGF2MTogcmVtb3ZlIGNvbXByZXNzZWRfdGVuX2JpdF9mb3JtYXQg YW5kIHNpbXBsaWZ5IGFsbG9jX2J1ZmZlcgorIworIyBjb21wcmVzc2VkX3Rlbl9iaXRfZm9ybWF0 IGhhcyBiZWVuIGRlcHJlY2F0ZWQgdXBzdHJlYW0gYW5kIGhhcyBubyBlZmZlY3QKKyMgYW5kIGNh biBiZSByZW1vdmVkLiBQbHVzLCB0ZWNobmljYWxseSBpdCB3YXMgbmV2ZXIgdXNlZCBpbiB0aGUg Zmlyc3QgcGxhY2UKKyMgc2luY2UgaXQgd291bGQgcmVxdWlyZSB0aGUgYXBwIChmZm1wZWcpIHRv IHNldCBpdCBhbmQgZG8gYWRkaXRpb25hbAorIyBwcm9jZXNzaW5nIG9mIHRoZSBpbnB1dCBmcmFt ZXMuCisjCisjIEFsc28gc2ltcGxpZnkgYWxsb2NfYnVmZmVyIGJ5IHJlbW92aW5nIGNhbGN1bGF0 aW9ucyByZWxhdGluZyB0byB0aGUgbm9uLWV4aXN0YW50IHByb2Nlc3NpbmcuCisjCisjIFNpZ25l ZC1vZmYtYnk6IENocmlzdG9waGVyIERlZ2F3YSA8Y2hyaXN0b3BoZXIuZGVnYXdhQGludGVsLmNv bT4KKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGEvbGli YXZjb2RlYy9saWJzdnRhdjEuYworKysrIGIvbGliYXZjb2RlYy9saWJzdnRhdjEuYworQEAgLTEy NCwxNiArMTI0LDEyIEBAIHN0YXRpYyBpbnQgc3Z0X3ByaW50X2Vycm9yKHZvaWQgKmxvZ19jdHgs IEViRXJyb3JUeXBlIGVyciwKKyAKKyBzdGF0aWMgaW50IGFsbG9jX2J1ZmZlcihFYlN2dEF2MUVu Y0NvbmZpZ3VyYXRpb24gKmNvbmZpZywgU3Z0Q29udGV4dCAqc3Z0X2VuYykKKyB7CistICAgIGNv bnN0IGludCAgICBwYWNrX21vZGVfMTBiaXQgPQorLSAgICAgICAgKGNvbmZpZy0+ZW5jb2Rlcl9i aXRfZGVwdGggPiA4KSAmJiAoY29uZmlnLT5jb21wcmVzc2VkX3Rlbl9iaXRfZm9ybWF0ID09IDAp ID8gMSA6IDA7CistICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemVfOGJpdCAgPQorLSAgICAgICAg Y29uZmlnLT5zb3VyY2Vfd2lkdGggKiBjb25maWctPnNvdXJjZV9oZWlnaHQgKiAoMSA8PCBwYWNr X21vZGVfMTBiaXQpOworLSAgICBjb25zdCBzaXplX3QgbHVtYV9zaXplXzEwYml0ID0KKy0gICAg ICAgIChjb25maWctPmVuY29kZXJfYml0X2RlcHRoID4gOCAmJiBwYWNrX21vZGVfMTBiaXQgPT0g MCkgPyBsdW1hX3NpemVfOGJpdCA6IDA7CisrICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemUgPSBj b25maWctPnNvdXJjZV93aWR0aCAqIGNvbmZpZy0+c291cmNlX2hlaWdodCAqCisrICAgICAgICAo Y29uZmlnLT5lbmNvZGVyX2JpdF9kZXB0aCA+IDggPyAyIDogMSk7CisgCisgICAgIEViU3Z0SU9G b3JtYXQgKmluX2RhdGE7CisgCistICAgIHN2dF9lbmMtPnJhd19zaXplID0gKGx1bWFfc2l6ZV84 Yml0ICsgbHVtYV9zaXplXzEwYml0KSAqIDMgLyAyOworKyAgICBzdnRfZW5jLT5yYXdfc2l6ZSA9 IGx1bWFfc2l6ZSAqIDMgLyAyOworIAorICAgICAvLyBhbGxvY2F0ZSBidWZmZXIgZm9yIGluIGFu ZCBvdXQKKyAgICAgc3Z0X2VuYy0+aW5fYnVmICAgICAgICAgICA9IGF2X21hbGxvY3ooc2l6ZW9m KCpzdnRfZW5jLT5pbl9idWYpKTsKKy0tIAorR2l0TGFiCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv ZmZtcGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaCBi L3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1 Zy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4wMGUzZjY4 YTQxNWI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvd29ya2Fy b3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20g ODExZDI5MDg0NDIwNmZjNzNkYzM5YzNlNWI2N2Q1ZDg5NWJhZWRmOCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb206IFJhaW5lciBIb2NoZWNrZXIgPGZlcm5ldG1lbnRhQG9ubGluZS5kZT4K K0RhdGU6IFNhdCwgMjYgSmFuIDIwMTkgMTk6NDg6MzUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0g YXZjb2RlYy92YWFwaV9oMjY0OiBza2lwIGRlY29kZSBpZiBwaWMgaGFzIG5vIHNsaWNlcworCitU aGlzIGZpeGVzIC8gd29ya2Fyb3VuZHMgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93 X2J1Zy5jZ2k/aWQ9MTA1MzY4LgorSXQgd2FzIGhpdCBmcmVxdWVudGx5IHdoZW4gd2F0Y2hpbmcg aDI2NCBjaGFubmVscyByZWNlaXZlZCB2aWEgRFZCLVguCitDb3JyZXNwb25kaW5nIGtvZGkgYnVn OiBodHRwczovL2dpdGh1Yi5jb20veGJtYy94Ym1jL2lzc3Vlcy8xNTcwNAorLS0tCisgbGliYXZj b2RlYy92YWFwaV9oMjY0LmMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9u cygrKQorCitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMgYi9saWJhdmNvZGVj L3ZhYXBpX2gyNjQuYworaW5kZXggNTg1NDU4N2EyNTUuLmYxMmZkYzQ1N2E0IDEwMDY0NAorLS0t IGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKKysrKyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5j CitAQCAtMzE3LDYgKzMxNywxMSBAQCBzdGF0aWMgaW50IHZhYXBpX2gyNjRfZW5kX2ZyYW1lKEFW Q29kZWNDb250ZXh0ICphdmN0eCkKKyAgICAgSDI2NFNsaWNlQ29udGV4dCAqc2wgPSAmaC0+c2xp Y2VfY3R4WzBdOworICAgICBpbnQgcmV0OworIAorKyAgICBpZiAocGljLT5uYl9zbGljZXMgPT0g MCkgeworKyAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsKKysgICAgICAgIGdvdG8g ZmluaXNoOworKyAgICB9CisrCisgICAgIHJldCA9IGZmX3ZhYXBpX2RlY29kZV9pc3N1ZShhdmN0 eCwgcGljKTsKKyAgICAgaWYgKHJldCA8IDApCisgICAgICAgICBnb3RvIGZpbmlzaDsKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0 ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5mMmM4NTE2OTNkMzY3 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRlCkBAIC0wLDAgKzEs MjQwIEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWc0JworIyBhdWRhY2l0eSBhbHNvIG5l ZWRzIHRvIGJlIGJ1bXBlZCB3aGVuIGEgbmV3IGZmbXBlZyB2ZXJzaW9uIGJ1bXBzIGxpYmF2Zm9y bWF0J3Mgc29uYW1lIQorcGtnbmFtZT1mZm1wZWc0Cit2ZXJzaW9uPTQuNC40CityZXZpc2lvbj0x CitzaG9ydF9kZXNjPSJEZWNvZGluZywgZW5jb2RpbmcgYW5kIHN0cmVhbWluZyBzb2Z0d2FyZSAt IGZmbXBlZzQgbGlicmFyaWVzIG9ubHkiCittYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZv aWRsaW51eC5vcmc+IgorbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKK2hvbWVwYWdlPSJodHRw czovL3d3dy5mZm1wZWcub3JnIgorY2hhbmdlbG9nPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29u dGVudC5jb20vRkZtcGVnL0ZGbXBlZy9tYXN0ZXIvQ2hhbmdlbG9nIgorZGlzdGZpbGVzPSJodHRw czovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzL2ZmbXBlZy0ke3ZlcnNpb259LnRhci54eiIKK2No ZWNrc3VtPWU4MGIzODBkNTk1YzgwOTA2MGY2NmY5NmE1ZDg0OTUxMWVmNGE3NmEyNmI3NmVhY2Y1 Nzc4Yjk0YzM1NzAzMDkKKworaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHBlcmwiCittYWtl ZGVwZW5kcz0iemxpYi1kZXZlbCBiemlwMi1kZXZlbCBmcmVldHlwZS1kZXZlbCBhbHNhLWxpYi1k ZXZlbCBsaWJYZml4ZXMtZGV2ZWwKKyBsaWJYZXh0LWRldmVsIGxpYlh2TUMtZGV2ZWwgbGlieGNi LWRldmVsIGxhbWUtZGV2ZWwgbGlidGhlb3JhLWRldmVsCisgbGlidm9yYmlzLWRldmVsIHgyNjQt ZGV2ZWwgeHZpZGNvcmUtZGV2ZWwgamFjay1kZXZlbCBTREwyLWRldmVsCisgbGliY2Rpby1wYXJh bm9pYS1kZXZlbCBsaWJydG1wLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgZ251dGxzLWRldmVsCisg c3BlZXgtZGV2ZWwgY2VsdC1kZXZlbCBoYXJmYnV6ei1kZXZlbCBsaWJhc3MtZGV2ZWwgb3B1cy1k ZXZlbCBvY2wtaWNkLWRldmVsCisgbGliYnMyYi1kZXZlbCBsaWJ2aWRzdGFiLWRldmVsIHZtYWYt ZGV2ZWwgJCh2b3B0X2lmIHB1bHNlYXVkaW8gcHVsc2VhdWRpby1kZXZlbCkKKyAkKHZvcHRfaWYg dmFhcGkgbGlidmEtZGV2ZWwpICQodm9wdF9pZiB2ZHBhdSBsaWJ2ZHBhdS1kZXZlbCkKKyAkKHZv cHRfaWYgeDI2NSB4MjY1LWRldmVsKSAkKHZvcHRfaWYgdjRsMiB2NGwtdXRpbHMtZGV2ZWwpCisg JCh2b3B0X2lmIGZka19hYWMgZmRrLWFhYy1kZXZlbCkgJCh2b3B0X2lmIHZweCBsaWJ2cHgtZGV2 ZWwpCisgJCh2b3B0X2lmIGFvbSBsaWJhb20tZGV2ZWwpICQodm9wdF9pZiBzbmRpbyBzbmRpby1k ZXZlbCkKKyAkKHZvcHRfaWYgZGF2MWQgbGliZGF2MWQtZGV2ZWwpICQodm9wdF9pZiB6aW1nIHpp bWctZGV2ZWwpCisgJCh2b3B0X2lmIHdlYnAgbGlid2VicC1kZXZlbCkgJCh2b3B0X2lmIHNvZmEg bGlibXlzb2ZhLWRldmVsKQorICQodm9wdF9pZiBkcm0gbGliZHJtLWRldmVsKSAkKHZvcHRfaWYg c3Z0YXYxIGxpYnN2dC1hdjEtZGV2ZWwpCisgJCh2b3B0X2lmIHNydCBzcnQtZGV2ZWwpICQodm9w dF9pZiByaXN0IGxpYnJpc3QtZGV2ZWwpCisgJCh2b3B0X2lmIHZ1bGthbiAndnVsa2FuLWxvYWRl ciBWdWxrYW4tSGVhZGVycycpCisgJCh2b3B0X2lmIG1meCAnbGlibWZ4IGxpYm1meC1kZXZlbCcp CisgJCh2b3B0X2lmIG52ZW5jIG52LWNvZGVjLWhlYWRlcnMpICQodm9wdF9pZiBudmRlYyBudi1j b2RlYy1oZWFkZXJzKSIKKworYnVpbGRfb3B0aW9ucz0ieDI2NSB2NGwyIHZhYXBpIHZkcGF1IHZw eCBmZGtfYWFjIGFvbSBudmVuYyBzbmRpbyBwdWxzZWF1ZGlvCisgZGF2MWQgemltZyB3ZWJwIHNv ZmEgdnVsa2FuIGRybSBzdnRhdjEgc3J0IHJpc3QgbnZkZWMgbWZ4IgorYnVpbGRfb3B0aW9uc19k ZWZhdWx0PSJ4MjY1IHY0bDIgdnB4IGFvbSBzbmRpbyBwdWxzZWF1ZGlvIGRhdjFkIHdlYnAgdnVs a2FuIGRybSBzcnQgcmlzdCIKKworZGVzY19vcHRpb25fc3J0PSJFbmFibGUgc3VwcG9ydCBmb3Ig U1JUIChTZWN1cmUsIFJlbGlhYmxlLCBUcmFuc3BvcnQpIgorZGVzY19vcHRpb25fcmlzdD0iRW5h YmxlIHN1cHBvcnQgZm9yIFJJU1QgKFJlbGlhYmxlIEludGVybmV0IFN0cmVhbSBUcmFuc3BvcnQp IgorZGVzY19vcHRpb25fc29mYT0iRW5hYmxlIHN1cHBvcnQgZm9yIEFFUyBTT0ZBIgorZGVzY19v cHRpb25fd2VicD0iRW5hYmxlIHN1cHBvcnQgZm9yIFdlYlAiCisKK2Nhc2UgIiRYQlBTX1RBUkdF VF9NQUNISU5FIiBpbgorCWk2ODYqKQorCQkJaG9zdG1ha2VkZXBlbmRzKz0iIG5hc20iCisJCQli dWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUgbnZlbmMgbnZkZWMiCisJCQk7Owor CXg4Nl82NCopCisJCQlob3N0bWFrZWRlcGVuZHMrPSIgbmFzbSIKKwkJCWJ1aWxkX29wdGlvbnNf ZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSBtZnggbnZlbmMgbnZkZWMiCisJCQk7OworCXBwYzY0Kikg YnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1Ijs7CisJbWlwcyopIENGTEFHUz0i LW1uYW49bGVnYWN5Ijs7Citlc2FjCisKK2lmIFsgIiRYQlBTX1RBUkdFVF9XT1JEU0laRSIgIT0g IjMyIiBdOyB0aGVuCisJYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHN2dGF2MSIKK2ZpCisKK2lm IFsgIiRYQlBTX1RBUkdFVF9OT19BVE9NSUM4IiBdOyB0aGVuCisJbWFrZWRlcGVuZHMrPSIgbGli YXRvbWljLWRldmVsIgorZmkKKworX2FwcGx5X3BhdGNoKCkgeworCWxvY2FsIGFyZ3M9IiQxIiBw bmFtZT0iJChiYXNlbmFtZSAkMikiCisKKwlpZiBbICEgLWYgIi4ke3BuYW1lfV9kb25lIiBdOyB0 aGVuCisJCXBhdGNoIC1OICRhcmdzIC1pICQyCisJCXRvdWNoIC4ke3BuYW1lfV9kb25lCisJZmkK K30KKworcG9zdF9wYXRjaCgpIHsKKwljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJ cHBjNjRsZSopIDs7CisJCXBwYyopIF9hcHBseV9wYXRjaCAtcDEgJHtGSUxFU0RJUn0vYWx0aXZl Yy5wYXRjaCA7OworCWVzYWMKKworCXZzZWQgLWkgbGliYXZmaWx0ZXIvdmZfbGlidm1hZi5jIC1l ICdzIS91c3IvbG9jYWwvc2hhcmUvbW9kZWwvXCh2bWFmX3YwLjYuMVwpLnBrbCEvdXNyL3NoYXJl L3ZtYWYvXDEuanNvbiEnCit9CisKK2RvX2NvbmZpZ3VyZSgpIHsKKwkjIEZpeCBnY2Mgb24geDg2 XzY0LW11c2wgb25seQorCWlmIFsgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiA9ICJ4ODZfNjQtbXVz bCIgXTsgdGhlbgorCQl2c2VkIC1pIGNvbmZpZ3VyZSAtZSAicztfY2ZsYWdzX3NwZWVkPSctTzMn O19jZmxhZ3Nfc3BlZWQ9Jy1PMic7IgorCWZpCisKKwlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRo ZW4KKwkJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCQlhcm0qKSBfYXJjaD0iYXJt Ijs7CisJCQlhYXJjaDY0KikgX2FyY2g9ImFhcmNoNjQiOzsKKwkJCW1pcHMqKSBfYXJjaD0ibWlw cyI7OworCQkJcHBjNjQqKSBfYXJjaD0icHBjNjQiOzsKKwkJCXBwYyopIF9hcmNoPSJwcGMiOzsK KwkJCSopIF9hcmNoPSIke1hCUFNfVEFSR0VUX01BQ0hJTkUlJS1tdXNsfSI7OworCQllc2FjCisK KwkJX2FyZ3MrPSIgLS1lbmFibGUtY3Jvc3MtY29tcGlsZQorCQkJLS1zeXNyb290PSRYQlBTX0NS T1NTX0JBU0UKKwkJCS0tY3Jvc3MtcHJlZml4PSR7WEJQU19DUk9TU19UUklQTEVUfS0KKwkJCS0t dGFyZ2V0LW9zPWxpbnV4IC0tYXJjaD0ke19hcmNofSIKKwlmaQorCisJY2FzZSAiJFhCUFNfVEFS R0VUX01BQ0hJTkUiIGluCisJCXBwY3xwcGMtbXVzbCkgX2FyZ3MrPSIgLS1kaXNhYmxlLWFsdGl2 ZWMiOzsKKwllc2FjCisKKwlpZiBbICIkWEJQU19UQVJHRVRfTk9fQVRPTUlDOCIgXTsgdGhlbgor CQlfYXJncys9IiAtLWV4dHJhLWxpYnM9LWxhdG9taWMiCisJZmkKKworCS4vY29uZmlndXJlIC0t cHJlZml4PS91c3IgLS1kaXNhYmxlLWRlYnVnIC0tZW5hYmxlLWdwbCAtLWVuYWJsZS1nbnV0bHMg XAorCQktLWRpc2FibGUtc3RyaXBwaW5nIFwKKwkJLS1lbmFibGUtbGliY2RpbyAtLWVuYWJsZS12 ZXJzaW9uMyAtLWVuYWJsZS1ydW50aW1lLWNwdWRldGVjdCBcCisJCS0tZW5hYmxlLWxpYm1wM2xh bWUgLS1lbmFibGUtbGlidm9yYmlzIC0tZW5hYmxlLWxpYnh2aWQgXAorCQktLWVuYWJsZS1saWJ4 MjY0ICQodm9wdF9lbmFibGUgdnB4IGxpYnZweCkgLS1lbmFibGUtbGlidGhlb3JhIFwKKwkJLS1l bmFibGUtc2hhcmVkIC0tZW5hYmxlLXN0YXRpYyAtLWVuYWJsZS1saWJ4Y2IgXAorCQkkKHZvcHRf ZW5hYmxlIHB1bHNlYXVkaW8gbGlicHVsc2UpIC0tZW5hYmxlLWxpYmZyZWV0eXBlIC0tZW5hYmxl LWxpYm1vZHBsdWcgXAorCQktLWVuYWJsZS1saWJzcGVleCAtLWVuYWJsZS1saWJjZWx0IC0tZW5h YmxlLWxpYmFzcyBcCisJCS0tZW5hYmxlLWxpYm9wdXMgLS1lbmFibGUtbGlicnRtcCAtLWVuYWJs ZS1saWJqYWNrIFwKKwkJJCh2b3B0X2lmIGZka19hYWMgJy0tZW5hYmxlLW5vbmZyZWUgLS1lbmFi bGUtbGliZmRrLWFhYycpIFwKKwkJLS1kaXNhYmxlLWxpYm9wZW5jb3JlX2Ftcm5iIC0tZGlzYWJs ZS1saWJvcGVuY29yZV9hbXJ3YiBcCisJCS0tZGlzYWJsZS1saWJvcGVuanBlZyBcCisJCS0tZW5h YmxlLXBvc3Rwcm9jIC0tZW5hYmxlLW9wZW5jbCAke19hcmdzfSAtLWVuYWJsZS1saWJ2bWFmICR7 X2FyZ3N9IFwKKwkJJCh2b3B0X2VuYWJsZSB4MjY1IGxpYngyNjUpIFwKKwkJJCh2b3B0X2VuYWJs ZSB2NGwyIGxpYnY0bDIpIFwKKwkJJCh2b3B0X2VuYWJsZSBhb20gbGliYW9tKSAkKHZvcHRfZW5h YmxlIHZhYXBpKSAkKHZvcHRfZW5hYmxlIHZkcGF1KSBcCisJCS0tZW5hYmxlLWxpYmJzMmIgLS1l bmFibGUtYXZyZXNhbXBsZSAtLWVuYWJsZS1saWJ2aWRzdGFiIFwKKwkJJCh2b3B0X2VuYWJsZSBk YXYxZCBsaWJkYXYxZCkgXAorCQkkKHZvcHRfZW5hYmxlIHppbWcgbGliemltZykgXAorCQkkKHZv cHRfZW5hYmxlIHdlYnAgbGlid2VicCkgXAorCQkkKHZvcHRfZW5hYmxlIHNvZmEgbGlibXlzb2Zh KSBcCisJCSQodm9wdF9lbmFibGUgdnVsa2FuKSBcCisJCSQodm9wdF9lbmFibGUgZHJtIGxpYmRy bSkgXAorCQkkKHZvcHRfZW5hYmxlIHN2dGF2MSBsaWJzdnRhdjEpIFwKKwkJJCh2b3B0X2VuYWJs ZSBzcnQgbGlic3J0KSBcCisJCSQodm9wdF9lbmFibGUgcmlzdCBsaWJyaXN0KSBcCisJCSQodm9w dF9lbmFibGUgbWZ4IGxpYm1meCkgXAorCQkkKHZvcHRfaWYgbnZlbmMgJy0tZW5hYmxlLW52ZW5j JykgXAorCQkkKHZvcHRfaWYgbnZkZWMgJy0tZW5hYmxlLW52ZGVjJykKK30KKworZG9fYnVpbGQo KSB7CisJbWFrZSAke21ha2Vqb2JzfQorCW1ha2UgZG9jL2Zme21wZWcscGxheX0uMQorfQorCitk b19pbnN0YWxsKCkgeworCW1ha2UgREVTVERJUj0ke0RFU1RESVJ9IGluc3RhbGwgaW5zdGFsbC1t YW4KKwlybSAtcmYgJHtERVNURElSfS91c3IvYmluCit9CisKK2xpYmF2Y29kZWM0X3BhY2thZ2Uo KSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGNvZGVjIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7 CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2Y29kZWMuc28uKiIKKwl9Cit9CisKK2xpYmF2ZGV2aWNl NF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyBkZXZpY2UgaGFuZGxpbmcgbGlicmFy eSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYXZkZXZpY2Uuc28uKiIK Kwl9Cit9CisKK2xpYmF2cmVzYW1wbGU0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVn IGF1ZGlvIHJlc2FtcGxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVz ci9saWIvbGliYXZyZXNhbXBsZS5zby4qIgorCX0KK30KKworbGliYXZmb3JtYXQ0X3BhY2thZ2Uo KSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGZpbGUgZm9ybWF0IGxpYnJhcnkiCisJcGtnX2luc3Rh bGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2Zm9ybWF0LnNvLioiCisJfQorfQorCitsaWJh dnV0aWw0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIHV0aWxpdHkgbGlicmFyeSIK Kwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYXZ1dGlsLnNvLioiCisJfQor fQorCitsaWJhdmZpbHRlcjRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgYXVkaW8v dmlkZW8gZmlsdGVyIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGli L2xpYmF2ZmlsdGVyLnNvLioiCisJfQorfQorCitsaWJwb3N0cHJvYzRfcGFja2FnZSgpIHsKKwlz aG9ydF9kZXNjPSJGRm1wZWcgdmlkZW8gcG9zdHByb2Nlc3NpbmcgbGlicmFyeSIKKwlwa2dfaW5z dGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGlicG9zdHByb2Muc28uKiIKKwl9Cit9CisKK2xp YnN3c2NhbGU0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIHZpZGVvIHNjYWxpbmcg bGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGlic3dzY2FsZS5z by4qIgorCX0KK30KKworbGlic3dyZXNhbXBsZTRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJG Rm1wZWcgdmlkZW8gcmVzYW1wbGluZyBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92 ZSAidXNyL2xpYi9saWJzd3Jlc2FtcGxlLnNvLioiCisJfQorfQorCitmZm1wZWc0LWRldmVsX3Bh Y2thZ2UoKSB7CisJZGVwZW5kcz0iCisJCWxpYmF2Y29kZWM0Pj0ke3ZlcnNpb259XyR7cmV2aXNp b259CisJCWxpYmF2ZGV2aWNlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJhdmZvcm1h dDQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGliYXZ1dGlsND49JHt2ZXJzaW9ufV8ke3Jl dmlzaW9ufQorCQlsaWJhdmZpbHRlcjQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGlicG9z dHByb2M0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYnN3c2NhbGU0Pj0ke3ZlcnNpb259 XyR7cmV2aXNpb259CisJCWxpYnN3cmVzYW1wbGU0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJ CWxpYmF2cmVzYW1wbGU0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXNob3J0X2Rlc2MrPSIg LSBkZXZlbG9wbWVudCBmaWxlcyIKKwljb25mbGljdHM9ImZmbXBlZy1kZXZlbCIKKwlpZiBbICIk WEJQU19UQVJHRVRfTUFDSElORSIgPSAiaTY4NiIgXTsgdGhlbgorCQkjIC91c3IvYmluL3N0cmlw OiBlcnJvcjogdGhlIGlucHV0IGZpbGUgJy9kZXN0ZGlyLy9mZm1wZWctZGV2ZWwtNC40LjQvdXNy L2xpYi9saWJhdmZpbHRlci5hKHZmX2F0YWRlbm9pc2UubyknIGhhcyBubyBzZWN0aW9ucworCQlu b3N0cmlwX2ZpbGVzPSIvdXNyL2xpYi9saWJhdmZpbHRlci5hIgorCWZpCisJcGtnX2luc3RhbGwo KSB7CisJCXZtb3ZlIHVzci9pbmNsdWRlCisJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCisJCXZt b3ZlICJ1c3IvbGliLyouYSIKKwkJdm1vdmUgInVzci9saWIvKi5zbyIKKwkJdm1vdmUgdXNyL3No YXJlL2ZmbXBlZy9leGFtcGxlcworCQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjMKKwl9Cit9CmRp ZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2Y29kZWM0IGIvc3JjcGtncy9saWJhdmNvZGVjNApuZXcg ZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdmNvZGVjNApAQCAtMCwwICsxIEBACitmZm1wZWc0 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdmRl dmljZTQgYi9zcmNwa2dzL2xpYmF2ZGV2aWNlNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAw MDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9s aWJhdmRldmljZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZmaWx0ZXI0IGIvc3JjcGtncy9saWJhdmZp bHRlcjQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3 YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZmaWx0ZXI0CkBAIC0wLDAgKzEg QEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNw a2dzL2xpYmF2Zm9ybWF0NCBiL3NyY3BrZ3MvbGliYXZmb3JtYXQ0Cm5ldyBmaWxlIG1vZGUgMTIw MDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL2xpYmF2Zm9ybWF0NApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdnJlc2FtcGxlNCBiL3Ny Y3BrZ3MvbGliYXZyZXNhbXBsZTQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAw MDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZyZXNh bXBsZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZ1dGlsNCBiL3NyY3BrZ3MvbGliYXZ1dGlsNApuZXcg ZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdnV0aWw0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYnBvc3Rw cm9jNCBiL3NyY3BrZ3MvbGlicG9zdHByb2M0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAw MDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xp YnBvc3Rwcm9jNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJzd3Jlc2FtcGxlNCBiL3NyY3BrZ3MvbGlic3dy ZXNhbXBsZTQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1 NGU3YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGlic3dyZXNhbXBsZTQKQEAgLTAs MCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbGlic3dzY2FsZTQgYi9zcmNwa2dzL2xpYnN3c2NhbGU0Cm5ldyBmaWxlIG1vZGUg MTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL2xpYnN3c2NhbGU0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCgpGcm9tIGVlYjg1MDE3ZGIyMGMyMmI3MGE3MjFmMzZmNTE4YTJh OGRmMTg4ZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6MDQgLTA0MDAKU3ViamVjdDog W1BBVENIIDAwMy8xMTVdIG9wZW5jdjogdXBkYXRlIHRvIDQuNy4wLgoKLS0tCiBjb21tb24vc2hs aWJzICAgICAgICAgICB8IDEwNCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tCiBzcmNwa2dzL29wZW5jdi90ZW1wbGF0ZSB8ICAgOCArKy0tCiAyIGZpbGVzIGNoYW5nZWQs IDU2IGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9z aGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDQ5MDZhNGEyOWVmYjcuLmI3M2NkMjc3MDU0ZmIg MTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIvY29tbW9uL3NobGlicwpAQCAtMjE0NCw1 OCArMjE0NCw1OCBAQCBsaWJjYXBzdG9uZS5zby40IGNhcHN0b25lLTQuMF8xCiBsaWJoYXZlZ2Uu c28uMiBsaWJoYXZlZ2VkLTEuOS4xMV8xCiBsaWJuaWguc28uMSBsaWJuaWgtMS4wLjNfMQogbGli bmloLWRidXMuc28uMSBsaWJuaWgtMS4wLjNfMQotbGlib3BlbmN2X3F1YWxpdHkuc28uNDA2IGxp Ym9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfcmVnLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X3N1cmZhY2VfbWF0Y2hpbmcuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJv cGVuY3ZfeHBob3RvLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ZyZWV0eXBl LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Z1enp5LnNvLjQwNiBsaWJvcGVu Y3YtNC42LjBfMQotbGlib3BlbmN2X2hmcy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9w ZW5jdl9pbWdfaGFzaC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9saW5lX2Rl c2NyaXB0b3Iuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc2FsaWVuY3kuc28u NDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3RydWN0dXJlZF9saWdodC5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9hcnVjby5zby40MDYgbGlib3BlbmN2LTQuNi4w XzEKLWxpYm9wZW5jdl9iZ3NlZ20uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zf YmlvaW5zcGlyZWQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfY2NhbGliLnNv LjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ZhY2Uuc28uNDA2IGxpYm9wZW5jdi00 LjYuMF8xCi1saWJvcGVuY3ZfdHJhY2tpbmcuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJv cGVuY3ZfeGZlYXR1cmVzMmQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfb3B0 Zmxvdy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94aW1ncHJvYy5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9wbG90LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBf MQotbGlib3BlbmN2X3RleHQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfbWwu c28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfb2JqZGV0ZWN0LnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Rubi5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxp Ym9wZW5jdl9zaGFwZS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9zdGl0Y2hp bmcuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfcGhvdG8uc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdmlkZW8uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1s aWJvcGVuY3ZfY2FsaWIzZC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mZWF0 dXJlczJkLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ZsYW5uLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2hpZ2hndWkuc28uNDA2IGxpYm9wZW5jdi00LjYu MF8xCi1saWJvcGVuY3ZfdmlkZW9pby5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5j dl9pbWdjb2RlY3Muc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaW1ncHJvYy5z by40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9jb3JlLnNvLjQwNiBsaWJvcGVuY3Yt NC42LjBfMQotbGlib3BlbmN2X3N1cGVycmVzLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGli b3BlbmN2X3ZpZGVvc3RhYi5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9nYXBp LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3hvYmpkZXRlY3Quc28uNDA2IGxp Ym9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZGF0YXNldHMuc28uNDA2IGxpYm9wZW5jdi00LjYu MF8xCi1saWJvcGVuY3ZfZG5uX29iamRldGVjdC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxp Ym9wZW5jdl9kbm5fc3VwZXJyZXMuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zf ZHBtLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3BoYXNlX3Vud3JhcHBpbmcu c28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3RlcmVvLnNvLjQwNiBsaWJvcGVu Y3YtNC42LjBfMQotbGlib3BlbmN2X3JhcGlkLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGli b3BlbmN2X2ludGVuc2l0eV90cmFuc2Zvcm0uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJv cGVuY3ZfYWxwaGFtYXQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfYmFyY29k ZS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9tY2Muc28uNDA2IGxpYm9wZW5j di00LjYuMF8xCitsaWJvcGVuY3ZfcXVhbGl0eS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xp Ym9wZW5jdl9yZWcuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfc3VyZmFjZV9t YXRjaGluZy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl94cGhvdG8uc28uNDA3 IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZnJlZXR5cGUuc28uNDA3IGxpYm9wZW5jdi00 LjcuMF8xCitsaWJvcGVuY3ZfZnV6enkuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVu Y3ZfaGZzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ltZ19oYXNoLnNvLjQw NyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2xpbmVfZGVzY3JpcHRvci5zby40MDcgbGli b3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zYWxpZW5jeS5zby40MDcgbGlib3BlbmN2LTQuNy4w XzEKK2xpYm9wZW5jdl9zdHJ1Y3R1cmVkX2xpZ2h0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X2FydWNvLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Jnc2Vn bS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9iaW9pbnNwaXJlZC5zby40MDcg bGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9jY2FsaWIuc28uNDA3IGxpYm9wZW5jdi00Ljcu MF8xCitsaWJvcGVuY3ZfZmFjZS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl90 cmFja2luZy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl94ZmVhdHVyZXMyZC5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9vcHRmbG93LnNvLjQwNyBsaWJvcGVu Y3YtNC43LjBfMQorbGlib3BlbmN2X3hpbWdwcm9jLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X3Bsb3Quc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfdGV4dC5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9tbC5zby40MDcgbGlib3BlbmN2LTQu Ny4wXzEKK2xpYm9wZW5jdl9vYmpkZXRlY3Quc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3ZfZG5uLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3NoYXBlLnNvLjQw NyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N0aXRjaGluZy5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl9waG90by5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl92aWRlby5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9jYWxpYjNkLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ZlYXR1cmVzMmQuc28uNDA3IGxpYm9w ZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZmxhbm4uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3ZfaGlnaGd1aS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl92aWRl b2lvLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ltZ2NvZGVjcy5zby40MDcg bGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9pbWdwcm9jLnNvLjQwNyBsaWJvcGVuY3YtNC43 LjBfMQorbGlib3BlbmN2X2NvcmUuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zf c3VwZXJyZXMuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfdmlkZW9zdGFiLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2dhcGkuc28uNDA3IGxpYm9wZW5jdi00 LjcuMF8xCitsaWJvcGVuY3ZfeG9iamRldGVjdC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xp Ym9wZW5jdl9kYXRhc2V0cy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9kbm5f b2JqZGV0ZWN0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Rubl9zdXBlcnJl cy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9kcG0uc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3ZfcGhhc2VfdW53cmFwcGluZy5zby40MDcgbGlib3BlbmN2LTQu Ny4wXzEKK2xpYm9wZW5jdl9zdGVyZW8uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVu Y3ZfcmFwaWQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfaW50ZW5zaXR5X3Ry YW5zZm9ybS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9hbHBoYW1hdC5zby40 MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9iYXJjb2RlLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X21jYy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKIGxpYnVuaWNv bmYuc28uNC42IHd2c3RyZWFtcy00LjYuMV8yMAogbGlid3ZiYXNlLnNvLjQuNiB3dnN0cmVhbXMt NC42LjFfMjAKIGxpYnd2dXRpbHMuc28uNC42IHd2c3RyZWFtcy00LjYuMV8yMApkaWZmIC0tZ2l0 IGEvc3JjcGtncy9vcGVuY3YvdGVtcGxhdGUgYi9zcmNwa2dzL29wZW5jdi90ZW1wbGF0ZQppbmRl eCA2MjIyNjk3OGZhM2UwLi45M2I1OGNiNmFmMTQ2IDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5j di90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5jdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5jdicKIHBrZ25hbWU9b3BlbmN2Ci12ZXJzaW9uPTQu Ni4wCi1yZXZpc2lvbj00Cit2ZXJzaW9uPTQuNy4wCityZXZpc2lvbj0xCiBjcmVhdGVfd3Jrc3Jj PXllcwogYnVpbGRfd3Jrc3JjPSR7cGtnbmFtZX0tJHt2ZXJzaW9ufQogYnVpbGRfc3R5bGU9Y21h a2UKQEAgLTI0LDggKzI0LDggQEAgaG9tZXBhZ2U9Imh0dHBzOi8vb3BlbmN2Lm9yZyIKIGNoYW5n ZWxvZz0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3Yvd2lraS9DaGFuZ2VMb2ciCiBk aXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2L2FyY2hpdmUvJHt2ZXJz aW9ufS50YXIuZ3oKICBodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdl9jb250cmliL2Fy Y2hpdmUvJHt2ZXJzaW9ufS50YXIuZ3o+Y29udHJpYi50YXIuZ3oiCi1jaGVja3N1bT0iMWVjMWNi YTY1ZjlmMjBmZTVhNDFmZGExNTg2ZTAxYzcwZWEwYzlhNmQ3YjY3YzllMTNlZGYwY2ZlMjIzOTI3 NwotIDE3NzdkNWZkMmI1OTAyOWNmNTM3ZTVmZDZmOGFhNjhkNzA3MDc1ODIyZjkwYmRlNjgzZmNk ZTA4NmY4NWY3YTciCitjaGVja3N1bT0iOGRmMDA3OWNkYmUxNzk3NDhhMThkNDQ3MzFhZjYyYTI0 NWE0NWViZjUwODUyMjNkYzAzMTMzOTU0YzY2Mjk3MworIDQyZGY4NDBjZjkwNTVlNTlkMGUyMmMy NDljZmIxOWYwNDc0M2UxYmRhZDExM2QzMWIxNTczZDM5MzRkNjI1ODQiCiBwYXRjaF9hcmdzPSIt TnAxIC1kICR7YnVpbGRfd3Jrc3JjfSIKICMgdGVzdHMgaGFuZyBpbmRlbmZpbml0ZWx5LCBldmVu IHdpdGggdGVzdCBkYXRhIGluY2x1ZGVkCiBtYWtlX2NoZWNrPW5vCgpGcm9tIDA0ZDA3ZmIyNjQ3 NTY0MzNmNzA1MmI5NjliMTdmNTRlMjg4MTViOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6 NTk6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNC8xMTVdIGFjdGlvbmE6IHJldmJ1bXAgZm9y IG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUgYi9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUKaW5kZXgg Y2Y1ZjBiN2EyYWU2MS4uMGQ4OTkzMTFlNmRmNyAxMDA2NDQKLS0tIGEvc3JjcGtncy9hY3Rpb25h L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2FjdGlvbmEnCiBwa2duYW1lPWFjdGlvbmEKIHZlcnNpb249 My4xMC4xCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1xbWFrZQogY29uZmln dXJlX2FyZ3M9IlBLR0NPTkZJR19PUEVOQ1Y9b3BlbmN2NCIKIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyBxdDUtcGx1Z2luLW15c3FsIHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKCkZyb20g YWQwMTAyYTFkYjE0NGVkZWRiYTVlZGMxZTA5NTFhZGU2MzIyYzc5YyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA1LzExNV0gcWltZ3Y6IHJl dmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL3FpbWd2L3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUKaW5k ZXggN2ViMzBkYjMzOTkyYy4uZGQzNDFkZmUxYmZjZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xaW1n di90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3FpbWd2L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAncWltZ3YnCiBwa2duYW1lPXFpbWd2CiB2ZXJzaW9uPTEuMC4y Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2Fy Z3M9IiQodm9wdF9pZiB2aWRlbyAtRFZJREVPX1NVUFBPUlQ9T04gLURWSURFT19TVVBQT1JUPU9G RikKICAkKHZvcHRfaWYgc2NhbGUgLURPUEVOQ1ZfU1VQUE9SVD1PTiAtRE9QRU5DVl9TVVBQT1JU PU9GRikKCkZyb20gYTFhNjliN2FjZTBkYjgwY2Y5N2MwZmI3MGZiYzA2ZmQwZjQ2NTNjYSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA2LzEx NV0gcmV0cm9zaGFyZTogcmV2YnVtcCBmb3Igb3BlbmN2LTQuNy4wCgotLS0KIHNyY3BrZ3MvcmV0 cm9zaGFyZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcmV0cm9zaGFyZS90ZW1wbGF0ZSBi L3NyY3BrZ3MvcmV0cm9zaGFyZS90ZW1wbGF0ZQppbmRleCA1ZmUwZTQ1ZTRjYjBiLi40OWUyYzFj YmU4YTUzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9yZXRyb3NoYXJlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAncmV0cm9zaGFyZScKIHBrZ25hbWU9cmV0cm9zaGFyZQogdmVyc2lvbj0wLjYuNgotcmV2 aXNpb249MgorcmV2aXNpb249NAogYnVpbGRfc3R5bGU9cW1ha2UKICNYWFggYnJvYWRjYXN0IGZl YXR1cmUgcmVxdWlyZXMgYW4gYW5jaWVudCB1ZHAtZGlzY292ZXJ5LWNwcCB3aGljaCBlaXRoZXIg bmVlZHMKICMgdG8gYmUgZmV0Y2hlZCtwYXRjaGVkIChGVEJGUykgaGVyZSBvciBwYWNrYWdlZCA6 LwoKRnJvbSA3YTQ4OWU1N2I1YzA2NjVmOTdjZjRkYmU5NDc5M2RlOWIxNGIwOTIzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDE5OjU5OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDcvMTE1XSB3 YWlmdTJ4LWNvbnZlcnRlci1jcHA6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNw a2dzL3dhaWZ1MngtY29udmVydGVyLWNwcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2Fp ZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRlIGIvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1j cHAvdGVtcGxhdGUKaW5kZXggOGMwOTVkMGQ3YmFiYS4uYWE1MmQ4Yzk4MWE4NCAxMDA2NDQKLS0t IGEvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKKysrIGIvc3JjcGtncy93 YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICd3YWlmdTJ4LWNvbnZlcnRlci1jcHAnCiBwa2duYW1lPXdhaWZ1MngtY29udmVy dGVyLWNwcAogdmVyc2lvbj01LjIuNAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5 bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRElOU1RBTExfTU9ERUxTPU9OIgogaG9zdG1ha2Vk ZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSAwM2VlNzE3MzQxNDQ2MDEzMjdmNjcyMTUwOGRiOGJi MGJhOGFjYmY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAwOjM4IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwMDgvMTE1XSB2bGM6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3Jj cGtncy92bGMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZsYy90ZW1wbGF0ZSBiL3NyY3Br Z3MvdmxjL3RlbXBsYXRlCmluZGV4IDY1MWM5NGExMzUzYTMuLjg1NWNhNTIzODY2MjYgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvdmxjL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdmxjL3RlbXBsYXRlCkBA IC0yNSw3ICsyNSw3IEBAIGxpYjMyZGlzYWJsZWQ9eWVzCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9t YWtlIGxpYnRvb2wgcGtnLWNvbmZpZyBmbGV4IGdldHRleHQgbGliZ2NyeXB0LWRldmVsCiAgbGl2 ZTU1NS1kZXZlbCBnZXR0ZXh0LWRldmVsICQodm9wdF9pZiBsdWEgbHVhNTIpICQodm9wdF9pZiBj aHJvbWVjYXN0IHByb3RvYnVmKSIKIG1ha2VkZXBlbmRzPSIKLSBhdmFoaS1saWJzLWRldmVsIGRi dXMtZ2xpYi1kZXZlbCBmYWFkMi1kZXZlbCBmZm1wZWctZGV2ZWwgZnJlZWZvbnQtdHRmCisgYXZh aGktbGlicy1kZXZlbCBkYnVzLWdsaWItZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnNC1kZXZlbCBm cmVlZm9udC10dGYKICBnbnV0bHMtZGV2ZWwgamFjay1kZXZlbCBsaWJhNTItZGV2ZWwgbGliYXNz LWRldmVsIGxpYmJsdXJheS1kZXZlbAogIGxpYmNkaW8tZGV2ZWwgbGliZGNhLWRldmVsIGxpYmR2 YnBzaS1kZXZlbCBsaWJkdmRuYXYtZGV2ZWwgbGlibWFkLWRldmVsCiAgbGlibWF0cm9za2EtZGV2 ZWwgbGlibW9kcGx1Zy1kZXZlbCBsaWJtcGNkZWMtZGV2ZWwgbGlibXBlZzItZGV2ZWwKCkZyb20g MGJlY2ZjYzM2OGMzYWE3NmFkZDdhYTkxMjQwYmNlODkyM2E1YTY1ZiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMDo1NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA5LzExNV0gb3NnOiByZXZi dW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvb3NnL3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9vc2cvdGVtcGxhdGUgYi9zcmNwa2dzL29zZy90ZW1wbGF0ZQppbmRleCBhOWVi YmQyODc5MzNiLi43NTU3OTNmN2UxMWJmIDEwMDY0NAotLS0gYS9zcmNwa2dzL29zZy90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL29zZy90ZW1wbGF0ZQpAQCAtOCw3ICs4LDcgQEAgYnVpbGRfaGVscGVy PSJxZW11IgogY29uZmlndXJlX2FyZ3M9Ii1ETElCX1BPU1RGSVg9IgogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIHhyYW5kciIKIG1ha2VkZXBlbmRzPSJNZXNhTGliLWRldmVsIGd0a2dsZXh0 LWRldmVsIGxpYmN1cmwtZGV2ZWwgZ2lmbGliLWRldmVsIGxpYnJzdmctZGV2ZWwKLSBqYXNwZXIt ZGV2ZWwgdGlmZi1kZXZlbCBsaWJnZGFsLWRldmVsIGxpYmd0YS1kZXZlbCBmZm1wZWctZGV2ZWwg eGluZS1saWItZGV2ZWwKKyBqYXNwZXItZGV2ZWwgdGlmZi1kZXZlbCBsaWJnZGFsLWRldmVsIGxp Ymd0YS1kZXZlbCBmZm1wZWc0LWRldmVsIHhpbmUtbGliLWRldmVsCiAgU0RMMi1kZXZlbCBnc3Qt cGx1Z2lucy1iYXNlMS1kZXZlbAogICQodm9wdF9pZiBvcGVuZXhyIGxpYm9wZW5leHItZGV2ZWwp CiAgJCh2b3B0X2lmIHBvcHBsZXIgcG9wcGxlci1nbGliLWRldmVsKQoKRnJvbSA4NDk5ZTJjZjJl YjJjNDVjYzA3NDA2NGNhYzlmMjM1MzlmYmEyMWEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjEzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTAvMTE1XSB4aW5lLWxpYjogcmV2YnVtcCBm b3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3hpbmUtbGliL3RlbXBsYXRlIHwgNiArKyst LS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZSBiL3NyY3BrZ3MveGluZS1saWIvdGVt cGxhdGUKaW5kZXggZjcxM2VmZjQ5YjA3Yy4uZWQ2MTk0YzE3ZDExZSAxMDA2NDQKLS0tIGEvc3Jj cGtncy94aW5lLWxpYi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3hpbmUtbGliL3RlbXBsYXRlCkBA IC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAneGluZS1saWInCiBwa2duYW1lPXhp bmUtbGliCi12ZXJzaW9uPTEuMi4xMgordmVyc2lvbj0xLjIuMTMKIHJldmlzaW9uPTEKIGJ1aWxk X3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtdmNkIC0tZGlz YWJsZS1nbm9tZXZmcyAtLXdpdGhvdXQtZXNvdW5kIC0tZGlzYWJsZS1keHIzCkBAIC04LDcgKzgs NyBAQCBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLXZjZCAtLWRpc2FibGUtZ25vbWV2ZnMgLS13 aXRob3V0LWVzb3VuZCAtLWRpc2FibGUtZHhyMwogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBn ZXR0ZXh0LWRldmVsIGxpYnRvb2wgcGtnLWNvbmZpZyBwZXJsIgogbWFrZWRlcGVuZHM9IgogIHps aWItZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGlieGNiLWRldmVsIGxpYlNNLWRldmVsIGxpYlhleHQt ZGV2ZWwgbGliWHYtZGV2ZWwKLSBsaWJYdk1DLWRldmVsIGxpYmE1Mi1kZXZlbCBsaWJtYWQtZGV2 ZWwgZmZtcGVnLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKKyBsaWJYdk1DLWRldmVsIGxpYmE1Mi1k ZXZlbCBsaWJtYWQtZGV2ZWwgZmZtcGVnNC1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCiAgamFjay1k ZXZlbCBzYW1iYS1kZXZlbCBsaWJmbGFjLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgbGlibXBjZGVj LWRldmVsCiAgc3BlZXgtZGV2ZWwgbGlidGhlb3JhLWRldmVsIGxpYnZvcmJpcy1kZXZlbCBsaWJk Y2EtZGV2ZWwgZmFhZDItZGV2ZWwKICBsaWJjZGlvLWRldmVsIGxpYmJsdXJheS1kZXZlbCBhYWxp Yi1kZXZlbCBsaWJjYWNhLWRldmVsIGxpYlhpbmVyYW1hLWRldmVsCkBAIC0xOSw3ICsxOSw3IEBA IGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIsIExHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9 Imh0dHA6Ly93d3cueGluZS1wcm9qZWN0Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9zb3VyY2Vm b3JnZS5uZXQvcHJvamVjdHMveGluZS9maWxlcy94aW5lLWxpYi8ke3ZlcnNpb259L1JFQURNRS50 eHQvdmlldyIKIGRpc3RmaWxlcz0iJHtTT1VSQ0VGT1JHRV9TSVRFfS94aW5lLyR7cGtnbmFtZX0t JHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT1kNjA2MjcwNDY4ZTE1NDBjMmE4OWMwZDdmNWZk ZjExZTE3ZWNjMGMyNjk4Y2MwYmNiMTA2NWZmMjZhYmVlMDk4CitjaGVja3N1bT01ZjEwZDZkNzE4 YTRhNTFjMTdlZDFiMzJiMDMxZDRmOWI4MGIwNjFlODI3NjUzNWIyYmUzMWU1YWM0Yjc1ZTZmCiAK IGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgogCWk2ODYtbXVzbCkKCkZyb20gYWE1OTk4 MjU3MmYyMDVlMmRlMjhjMWY2Yzc4ZWVkMjczMDQ0OGI3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDExLzExNV0gUU1QbGF5MjogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgYi9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUKaW5k ZXggMDBhNTU0MTc2NTlmNi4uZmMxOTFhNWJlN2Q4MCAxMDA2NDQKLS0tIGEvc3JjcGtncy9RTVBs YXkyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvUU1QbGF5Mi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ1FNUGxheTInCiBwa2duYW1lPVFNUGxheTIKIHZlcnNp b249MjMuMDYuMTcKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBo b3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIgogbWFr ZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZy1kZXZlbCBsaWJhc3MtZGV2ZWwgbGliY2Rp by1kZXZlbCBsaWJnbWUtZGV2ZWwKCkZyb20gZTY1N2IzYmYyMmIyNzMwMmJjZWZmOTZlZjIxMjFm NmM3YjZiMTU4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDEyLzExNV0gYWxzYS1wbHVnaW5zOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hbHNh LXBsdWdpbnMvdGVtcGxhdGUgYi9zcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZQppbmRleCAw YmZhNmQ5ZmQyNjQzLi5hNTcwOGE3ZDgyYThmIDEwMDY0NAotLS0gYS9zcmNwa2dzL2Fsc2EtcGx1 Z2lucy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Fsc2EtcGx1Z2lucycKIHBrZ25hbWU9YWxz YS1wbHVnaW5zCiB2ZXJzaW9uPTEuMi43LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxk X3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtbWFlbW8tcGx1 Z2luIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSBhYTgyYjA1MGEyODRiYjQ0 YjA2MzE0OWZjMjQwMzRiOGI2OTdjNmRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTMvMTE1XSBhcmNhbjogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL2FyY2FuL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hcmNh bi90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXJjYW4vdGVtcGxhdGUKaW5kZXggODUzZTE2ZmNhZDM5MS4u NmIyZGE2ZmE2ZTYyZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9hcmNhbi90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2FyY2FuL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogIyAhISBrZWVwIHN5bmNlZCB3 aXRoOiBhY2ZnZnMgYWNsaXAgYWxvYWRpbWFnZQogcGtnbmFtZT1hcmNhbgogdmVyc2lvbj0wLjYu Mi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jr c3JjPWFyY2FuL3NyYwogYnVpbGRfc3R5bGU9Y21ha2UKCkZyb20gMDg0ZTZiNWQ3N2RkYmUzMDNk NTQ4ZmU1NmUwMmYwNDg4MjgzYjZkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE0LzExNV0gYXR0cmFjdDogcmV2YnVtcCBmb3IgZmZtcGVn NC00LjQuMwoKLS0tCiBzcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9hdHRyYWN0L3RlbXBsYXRlIGIvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlCmluZGV4IDI2 MTQ0ZTkzMWEzYzcuLmU3NjBiZjBkMThhZWMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXR0cmFjdC90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUKQEAgLTEsMTIgKzEsMTIgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F0dHJhY3QnCiBwa2duYW1lPWF0dHJhY3QKIHZlcnNpb249 Mi42LjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQog bWFrZV9idWlsZF9hcmdzPSJWRVJCT1NFPTEiCiBtYWtlX3VzZV9lbnY9eWVzCiBob3N0bWFrZWRl cGVuZHM9InBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iU0ZNTC1kZXZlbCBmZm1wZWctZGV2ZWwg Zm9udGNvbmZpZy1kZXZlbCBnbHUtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbAorbWFrZWRlcGVuZHM9 IlNGTUwtZGV2ZWwgZmZtcGVnNC1kZXZlbCBmb250Y29uZmlnLWRldmVsIGdsdS1kZXZlbCBsaWJh cmNoaXZlLWRldmVsCiAgbGliY3VybC1kZXZlbCBsaWJqcGVnLXR1cmJvLWRldmVsIHhpbmUtbGli IHJhcGlkanNvbiBsaWJYcmFuZHItZGV2ZWwiCiBkZXBlbmRzPSJnaXQiCiBzaG9ydF9kZXNjPSJB dHRyYWN0LU1vZGUgaXMgYSBncmFwaGljYWwgZnJvbnRlbmQgZm9yIGVtdWxhdG9ycyIKCkZyb20g NTg4YjcwYWRjYjA3MGI1YmNhYzkxY2ZkZmU1M2ZmM2Y5ZTYxNGJjNyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE1LzExNV0gYXViaW86IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9hdWJpby9wYXRjaGVzL2ZmbXBlZzUu cGF0Y2ggfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2F1YmlvL3RlbXBs YXRlICAgICAgICAgICAgICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2F1YmlvL3BhdGNo ZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXViaW8vcGF0Y2hlcy9mZm1w ZWc1LnBhdGNoIGIvc3JjcGtncy9hdWJpby9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uYWFjZTQxYTZlNmQ5YQotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvYXViaW8vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEs MjUgQEAKK0Zyb20gOGEwNTQyMGU1ZGQ4YzdiOGIyNDQ3ZjgyZGM5MTk3NjU4NzY1MTFiMyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWwgQnJvc3NpZXIgPHBpZW1AcGllbS5vcmc+ CitEYXRlOiBUdWUsIDI1IEphbiAyMDIyIDE4OjMwOjI3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hd IFtzb3VyY2VfYXZjb2RlY10gZGVmaW5lIEZGX0FQSV9MQVZGX0FWQ1RYIGZvciBsaWJhdmNvZGVj ID4KKyA1OSwgdGh4IEBiZXJvbGludXggKGNsb3NlcyBnaC0zNTMpCisKKy0tLQorIHNyYy9pby9z b3VyY2VfYXZjb2RlYy5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygr KQorCitkaWZmIC0tZ2l0IGEvc3JjL2lvL3NvdXJjZV9hdmNvZGVjLmMgYi9zcmMvaW8vc291cmNl X2F2Y29kZWMuYworaW5kZXggZTBhZTkzYjUuLjE0MjFiZDlhIDEwMDY0NAorLS0tIGEvc3JjL2lv L3NvdXJjZV9hdmNvZGVjLmMKKysrKyBiL3NyYy9pby9zb3VyY2VfYXZjb2RlYy5jCitAQCAtNjgs NiArNjgsMTAgQEAKKyAjZGVmaW5lIEFVQklPX0FWQ09ERUNfTUFYX0JVRkZFUl9TSVpFIEFWX0lO UFVUX0JVRkZFUl9NSU5fU0laRQorICNlbmRpZgorIAorKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05f TUFKT1IgPj0gNTkKKysjZGVmaW5lIEZGX0FQSV9MQVZGX0FWQ1RYIDEKKysjZW5kaWYKKysKKyBz dHJ1Y3QgX2F1YmlvX3NvdXJjZV9hdmNvZGVjX3QgeworICAgdWludF90IGhvcF9zaXplOworICAg dWludF90IHNhbXBsZXJhdGU7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1YmlvL3RlbXBsYXRlIGIv c3JjcGtncy9hdWJpby90ZW1wbGF0ZQppbmRleCBhZDFjNGIyNTY5OTE3Li43ZDg3NWNjMDI1NDFh IDEwMDY0NAotLS0gYS9zcmNwa2dzL2F1YmlvL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYXViaW8v dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhdWJpbycKIHBr Z25hbWU9YXViaW8KIHZlcnNpb249MC40LjkKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxk X3N0eWxlPXdhZjMKICMgWFhYIGxhc2gsIHB1cmUgYW5kIHN3aWcgc3VwcG9ydC4KIGhvc3RtYWtl ZGVwZW5kcz0icGtnLWNvbmZpZyB0eHQybWFuIgoKRnJvbSBmZDM4NWNmN2QyZjM3YzNlOTZmYTE0 ZGU1ZDExOGNlNzM5OGExMzRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMTYvMTE1XSBhdWRhY2lvdXMtcGx1Z2luczogcmV2YnVtcCBmb3Ig ZmZtcGVnLTYuMAoKLS0tCiAuLi4vYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBh dGNoICAgfCA0MyArKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5z L3RlbXBsYXRlICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9hdWRhY2lv dXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1 ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvYXVkYWNpb3Vz LXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAuLjRlNWUzNDA5OWQ3MWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDQzIEBA Citjb21taXQgMjk4YWEzNzFjNTZjMmY1MmMyNWEzM2Q5YmRlYzQ5MThiMTFjZWJkYworQXV0aG9y OiB0aWJlcXVhZG9yaWFuIDx0aWJlcXVhZG9yaWFuQHBvc3Rlby5kZT4KK0RhdGU6ICAgU2F0IE1h ciAxOSAxODo0MDoxMiAyMDIyICswMTAwCisKKyAgICBhdWRhY2lvdXMtcGx1Z2luczogcmVidWls ZCBhZ2FpbnN0IGZmbXBlZy01LjAKKworZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXVkYWNpb3VzLXBs dWdpbnMvcGF0Y2hlcy9mZm1wZWctNS4wLnBhdGNoIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lu cy9wYXRjaGVzL2ZmbXBlZy01LjAucGF0Y2gKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwMDAwLi42MTdjMTEyMTViCistLS0gL2Rldi9udWxsCisrKysgYi9zcmNwa2dzL2F1ZGFj aW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnLTUuMC5wYXRjaAorQEAgLTAsMCArMSwzMSBAQAor K0Zyb20gZjYwYmViNDAwZWViMWU0Nzc4YmJmZDczOGJjNGE0Y2NlZjNkZTUzOSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKKytGcm9tOiBKb2huIExpbmRncmVuIDxqb2huQGpsaW5kZ3Jlbi5uZXQ+ CisrRGF0ZTogU2F0LCA1IE1hciAyMDIyIDEyOjA1OjM0IC0wNTAwCisrU3ViamVjdDogW1BBVENI XSBGaXggYnVpbGQgd2l0aCBGRm1wZWcgNS4wCisrCisrLS0tCisrIHNyYy9mZmF1ZGlvL2ZmYXVk aW8tY29yZS5jYyB8IDQgKystLQorKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAy IGRlbGV0aW9ucygtKQorKworK2RpZmYgLS1naXQgYS9zcmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUu Y2MgYi9zcmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUuY2MKKytpbmRleCAxNmRjNjNlM2EuLmEyYjk1 ZmQ2YyAxMDA2NDQKKystLS0gYS9zcmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUuY2MKKysrKysgYi9z cmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUuY2MKKytAQCAtMjc0LDcgKzI3NCw3IEBAIHN0YXRpYyBB VklucHV0Rm9ybWF0ICogZ2V0X2Zvcm1hdF9ieV9jb250ZW50IChjb25zdCBjaGFyICogbmFtZSwg VkZTRmlsZSAmIGZpbGUpCisrICAgICAgICAgQVZQcm9iZURhdGEgZCA9IHtuYW1lLCBidWYsIGZp bGxlZH07CisrICAgICAgICAgc2NvcmUgPSB0YXJnZXQ7CisrIAorKy0gICAgICAgIGYgPSBhdl9w cm9iZV9pbnB1dF9mb3JtYXQyICgmIGQsIHRydWUsICYgc2NvcmUpOworKysgICAgICAgIGYgPSAo QVZJbnB1dEZvcm1hdCAqKSBhdl9wcm9iZV9pbnB1dF9mb3JtYXQyICgmIGQsIHRydWUsICYgc2Nv cmUpOworKyAgICAgICAgIGlmIChmKQorKyAgICAgICAgICAgICBicmVhazsKKysgCisrQEAgLTM0 Nyw3ICszNDcsNyBAQCBzdGF0aWMgYm9vbCBmaW5kX2NvZGVjIChBVkZvcm1hdENvbnRleHQgKiBj LCBDb2RlY0luZm8gKiBjaW5mbykKKysgI2VuZGlmCisrICAgICAgICAgaWYgKHN0cmVhbSAmJiBz dHJlYW0tPmNvZGVjcGFyICYmIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJ QV9UWVBFX0FVRElPKQorKyAgICAgICAgIHsKKystICAgICAgICAgICAgQVZDb2RlYyAqIGNvZGVj ID0gYXZjb2RlY19maW5kX2RlY29kZXIgKHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysr ICAgICAgICAgICAgQVZDb2RlYyAqIGNvZGVjID0gKEFWQ29kZWMgKikgYXZjb2RlY19maW5kX2Rl Y29kZXIgKHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysgCisrICAgICAgICAgICAgIGlm IChjb2RlYykKKysgICAgICAgICAgICAgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdWRhY2lvdXMt cGx1Z2lucy90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUKaW5k ZXggODhjYmMxNjcxZmM2YS4uYmVlYmZhZTU5ZWQ0NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9hdWRh Y2lvdXMtcGx1Z2lucy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3Rl bXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogI0tlZXAgaW4gc3luYyB3aXRoIGF1ZGFjaW91cyEKIHBr Z25hbWU9YXVkYWNpb3VzLXBsdWdpbnMKIHZlcnNpb249NC4zLjEKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iJCh2b3B0X2Jvb2wgZ3Rr MyBndGspICQodm9wdF9ib29sIGd0azMpCiAgJCh2b3B0X2Jvb2wgcXQpICQodm9wdF9ib29sIHF0 IHF0NikiCgpGcm9tIDc0OTBhM2QzOTdhYmIzZTA1ZjZhZWNmNGQzY2YxOGI3NzA1MzBiM2IgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNy8x MTVdIGF1ZGFjaXR5OiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvYXVk YWNpdHkvdGVtcGxhdGUgfCA1ICsrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp LCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUg Yi9zcmNwa2dzL2F1ZGFjaXR5L3RlbXBsYXRlCmluZGV4IDI4ZTljNGEzNTI4ZjEuLjRlNTEyNWJh ZTAzYjkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9hdWRhY2l0eS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2F1ZGFjaXR5JwogcGtnbmFtZT1hdWRhY2l0eQogdmVyc2lvbj0yLjQuMQotcmV2aXNpb249Mgor cmV2aXNpb249MwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0t d2l0aC1mZm1wZWc9c3lzdGVtIC0td2l0aC1saWJzbmRmaWxlPXN5c3RlbSAtLXdpdGgtZXhwYXQ9 c3lzdGVtCiAgLS13aXRoLWxpYnNveHI9c3lzdGVtIC0td2l0aC1sYW1lPXN5c3RlbSAtLXdpdGgt bHYyPXN5c3RlbSBhY19jdl9wYXRoX1dYX0NPTkZJRz13eC1jb25maWctZ3RrMyIKQEAgLTksNyAr OSw3IEBAIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBjbWFrZSBnZXR0ZXh0IGxpYnRvb2wg bTQgd2hpY2giCiBtYWtlZGVwZW5kcz0iamFjay1kZXZlbCB3eFdpZGdldHMtZ3RrMy1kZXZlbCBn dGsrMy1kZXZlbAogIGxpYm1hZC1kZXZlbCBzb3VuZHRvdWNoLWRldmVsIGxpYnNveHItZGV2ZWwK ICB2YW1wLXBsdWdpbi1zZGstZGV2ZWwgbGFtZS1kZXZlbCBsaWJpZDN0YWctZGV2ZWwgbGliZmxh Yy1kZXZlbAotIGZmbXBlZy1kZXZlbCB0d29sYW1lLWRldmVsIHNlcmQtZGV2ZWwgbHYyIGxpbHYt ZGV2ZWwgc3VpbC1kZXZlbCIKKyBmZm1wZWc0LWRldmVsIHR3b2xhbWUtZGV2ZWwgc2VyZC1kZXZl bCBsdjIgbGlsdi1kZXZlbCBzdWlsLWRldmVsIgogZGVwZW5kcz0iZGVza3RvcC1maWxlLXV0aWxz IGhpY29sb3ItaWNvbi10aGVtZSIKIHNob3J0X2Rlc2M9IkdyYXBoaWNhbCBjcm9zcy1wbGF0Zm9y bSBhdWRpbyBlZGl0b3IiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5v cmc+IgpAQCAtMzIsNSArMzIsNCBAQCBwb3N0X2luc3RhbGwoKSB7CiAJdmNvcHkgcGx1Zy1pbnMg L3Vzci9zaGFyZS9hdWRhY2l0eQogCiAJcm0gJHtERVNURElSfS91c3Ivc2hhcmUvZG9jL2F1ZGFj aXR5L0xJQ0VOU0UudHh0Ci0JdmxpY2Vuc2UgTElDRU5TRS50eHQgTElDRU5TRQogfQoKRnJvbSA1 N2Y5ODdkYmFkM2UyNGNjZTkzZTdhZTI4NmYyOGY2NTNiNzE0NzU0IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTgvMTE1XSBhdmlkZW11eDog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2F2aWRlbXV4L3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXZpZGVtdXgvdGVt cGxhdGUKaW5kZXggMjUzYTAyNDNlMjI1OS4uNTU3Mjg1OTgyZDJiOCAxMDA2NDQKLS0tIGEvc3Jj cGtncy9hdmlkZW11eC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2F2aWRlbXV4L3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYXZpZGVtdXgnCiBwa2duYW1lPWF2 aWRlbXV4CiB2ZXJzaW9uPTIuOC4wCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiAjIENhbid0IGJl IGNvbXBpbGVkIGZvciBhYXJjaDY0LCBhcm0qIG9yIG1pcHMqCiBhcmNocz0ieDg2XzY0KiBpNjg2 KiIKIGhvc3RtYWtlZGVwZW5kcz0iY21ha2UgcGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUt ZGV2ZWwgdGFyIHlhc20iCgpGcm9tIDg4ZmIwNDA3OTQ5MDExMmE0ZjVkMjllMWYwNWUxYzJkYTRk YTA2ZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BB VENIIDAxOS8xMTVdIGJhcmVzaXA6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9iYXJlc2lwL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlIGIv c3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlCmluZGV4IGYxYmQxODE3MDQ4YjUuLmIyMWUyMjMzNDMx NmUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Jh cmVzaXAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdiYXJl c2lwJwogcGtnbmFtZT1iYXJlc2lwCiB2ZXJzaW9uPTIuMTAuMAotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBnbGli LWRldmVsIgogbWFrZWRlcGVuZHM9ImxpYmdzbS1kZXZlbCBsaWJwbmctZGV2ZWwgb3BlbnNzbC1k ZXZlbCBsaWJzbmRmaWxlLWRldmVsCgpGcm9tIGUwNTVjYWNlNGNiNWQ1N2NlOWE2NGYzNjJhZTM5 MTAxYzIwOGY4YzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVj dDogW1BBVENIIDAyMC8xMTVdIGJsZW5kZXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGlu c2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ibGVuZGVy L3RlbXBsYXRlIGIvc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlCmluZGV4IDA5NGYxN2MzNGM3NGMu LjM1MDBhZDk1YWQ5OGIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYmxlbmRlci90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdibGVuZGVyJwogcGtnbmFtZT1ibGVuZGVyCiB2ZXJzaW9uPTMuNi4xCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBhcmNocz0ieDg2XzY0KiBwcGM2NCoiCiBidWlsZF9zdHlsZT0iY21h a2UiCiBweWNvbXBpbGVfZGlycz0iL3Vzci9zaGFyZS9ibGVuZGVyLyR7dmVyc2lvbiUuKn0vc2Ny aXB0cyIKQEAgLTksOCArOSw4IEBAIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfSU5TVEFMTF9QT1JU QUJMRT1PRkYgLURXSVRIX1BZVEhPTl9JTlNUQUxMPU9GRgogIC1EV0lUSF9KQUNLPU9OIC1EV0lU SF9DT0RFQ19GRk1QRUc9T04gLURXSVRIX0NPREVDX1NOREZJTEU9T04gLURXSVRIX09QRU5NUD1P TgogIC1EV0lUSF9GRlRXMz1PTiAtRFdJVEhfTU9EX09DRUFOU0lNPU9OIC1EV0lUSF9DWUNMRVNf RU1CUkVFPU9GRiAtRFdJVEhfT1BFTkNPTE9SSU89T04KICAtRFdJVEhfSU1BR0VfT1BFTkVYUj1P TiAtRFdJVEhfSU1BR0VfT1BFTkpQRUc9T04gLURXSVRIX09QRU5TVUJESVY9T04KLSAtRFdJVEhf T1BFTkNPTExBREE9T04gLURXSVRIX1NZU1RFTV9HTEVXPU9OIC1EV0lUSF9PUEVOVkRCPU9OIC1E V0lUSF9BTEVNQklDPU9OCi0gLURXSVRIX0dIT1NUX1gxMT1PTiAtRFdJVEhfR0hPU1RfV0FZTEFO RD1PTiAtRFdJVEhfR0hPU1RfTElCREVDT1I9T04KKyAtRFdJVEhfT1BFTkNPTExBREE9T04gLURX SVRIX09QRU5WREI9T04gLURXSVRIX0FMRU1CSUM9T04KKyAtRFdJVEhfR0hPU1RfWDExPU9OIC1E V0lUSF9HSE9TVF9XQVlMQU5EPU9OIC1EV0lUSF9HSE9TVF9XQVlMQU5EX0xJQkRFQ09SPU9OCiAg LURXSVRIX0JVSUxESU5GTz1PRkYgLURQWVRIT05fVkVSU0lPTj0ke3B5M192ZXJ9IC1EUFlUSE9O X0xJQlBBVEg9L3Vzci9saWIKICAtRFBZVEhPTl9MSUJSQVJZPXB5dGhvbiR7cHkzX3Zlcn0ke3B5 M19hYml2ZXJ9IC1EUFlUSE9OX0lOQ0xVREVfRElSUz0vJHtweTNfaW5jfQogIC1EV0lUSF9TWVNU RU1fTFpPPU9OIC1EV0lUSF9TWVNURU1fRUlHRU4zPU9OIC1EV0lUSF9TWVNURU1fRlJFRVRZUEU9 T04iCgpGcm9tIDdlNTVhZDQ4NDdmZjlkYWFlMDgwZmVlMDgyOTQwYjJiYTZlNjRkNTggTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyMS8xMTVd IGNhbnRhdGE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9jYW50YXRhL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlIGIvc3JjcGtncy9jYW50 YXRhL3RlbXBsYXRlCmluZGV4IDRiNDE3ZDgwZDVjMmQuLjhhOTBhYWE0YzA3YTIgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvY2FudGF0YS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NhbnRhdGEvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjYW50YXRhJwogcGtnbmFt ZT1jYW50YXRhCiB2ZXJzaW9uPTIuNS4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9z dHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1xbWFrZSBxdDUtaG9z dC10b29scyBxdDUtdG9vbHMiCiBtYWtlZGVwZW5kcz0icXQ1LWRldmVsIHF0NS10b29scy1kZXZl bCBxdDUtc3ZnLWRldmVsIHF0NS14bWxwYXR0ZXJucy1kZXZlbAoKRnJvbSAzZmMyNTczZjExZTJj OWQyMTg1NjAzZDY5MWU5NGQ1ODBkNWE2MmU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjIvMTE1XSBjY2V4dHJhY3RvcjogcmV2YnVtcCBm b3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2NjZXh0cmFjdG9yL3RlbXBsYXRlIHwgNCAr Ky0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvY2NleHRyYWN0b3IvdGVtcGxhdGUgYi9zcmNwa2dzL2NjZXh0cmFj dG9yL3RlbXBsYXRlCmluZGV4IDlhYmNkODI4NTJiMjcuLjZlY2NhZDU4ODVhZjkgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvY2NleHRyYWN0b3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jY2V4dHJhY3Rv ci90ZW1wbGF0ZQpAQCAtMSwxMiArMSwxMiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY2NleHRy YWN0b3InCiBwa2duYW1lPWNjZXh0cmFjdG9yCiB2ZXJzaW9uPTAuOTMKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3dya3NyYz0ibGludXgiCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJl CiBjb25maWd1cmVfYXJncz0iLS1lbmFibGUtb2NyIC0tZW5hYmxlLWhhcmRzdWJ4IgogaG9zdG1h a2VkZXBlbmRzPSJhdXRvbWFrZSBwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9ImxlcHRvbmljYS1k ZXZlbCB0ZXNzZXJhY3Qtb2NyLWRldmVsIGZmbXBlZy1kZXZlbCIKK21ha2VkZXBlbmRzPSJsZXB0 b25pY2EtZGV2ZWwgdGVzc2VyYWN0LW9jci1kZXZlbCBmZm1wZWc0LWRldmVsIgogc2hvcnRfZGVz Yz0iRXh0cmFjdCBzdWJ0aXRsZXMgZnJvbSB2aWRlbyBzdHJlYW1zIgogbWFpbnRhaW5lcj0ibmV3 Ymx1ZW1vb24gPGJsYXVtb2xjaEBtYWlsYm94Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxh dGVyIgoKRnJvbSAyMGUwNGU0N2M5YjYyMGQ1M2E1NGE4ZGJiZjk5NzE3N2MzNDM0ZDIzIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjMvMTE1 XSBjaHJvbWFwcmludDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Nocm9t YXByaW50L3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDU2OSArKysrKysrKysrKysrKysrKysrKysr CiBzcmNwa2dzL2Nocm9tYXByaW50L3RlbXBsYXRlICAgICAgICAgICAgICB8ICAgMiArLQogMiBm aWxlcyBjaGFuZ2VkLCA1NzAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9jaHJvbWFwcmludC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNw a2dzL2Nocm9tYXByaW50L3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAwLi5hOWZkMzA3YTIzYzhhCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9jaHJvbWFwcmludC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw1Njkg QEAKK0Zyb20gOGNjYWQ2OTM3MTc3YjFiOTJlNDBhYjhmNDQ0N2VhMjdiYWMwMDlhNyBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9MdWs9QzM9QTE9QzU9QTE9MjBMYWxp bnNrPUMzPUJEPz0gPGxhbGluc2t5QGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNCBOb3YgMjAyMiAy MTo0NzozOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBVc2UgRkZtcGVnIDUueCAoIzEyMCkKKwor KiBVc2UgRkZtcGVnIDUuMS4yIGZvciBDSSBidWlsZHMKKworKiBCdWlsZCBvbiBVYnVudHUgMjAu MDQKKworKiBVcGdyYWRlIGNvZGUgdG8gRkZtcGVnIDUueCBBUElzCisKKyogT25seSBzZXQgRkZt cGVnIGluY2x1ZGUgZGlycyBpZiBidWlsZGluZyB0b29scworCisqIE5vIGxvbmdlciBuZWVkZWQK KworKiBVc2UgdWJ1bnR1IDIwLjA0CistLS0KKyAuZ2l0aHViL3dvcmtmbG93cy9idWlsZC55bWwg ICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KKyBDTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMTYgLS0KKyBwYWNrYWdlL2J1aWxkLnNoICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KKyBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nl c3Nvci5oICAgICAgICAgICAgfCAgIDIgLQorIHNyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vz c29yX2F2cmVzYW1wbGUuaCB8ICA3MiAtLS0tLS0tCisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19w cm9jZXNzb3Jfc3dyZXNhbXBsZS5oIHwgIDE4ICstCisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19y ZWFkZXIuaCAgICAgICAgICAgICAgIHwgMTk3ICsrKysrKysrKy0tLS0tLS0tLQorIHRlc3RzL0NN YWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCisgOCBmaWxlcyBj aGFuZ2VkLCAxMjIgaW5zZXJ0aW9ucygrKSwgMTk5IGRlbGV0aW9ucygtKQorIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgKKwor ZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IGY4ZDZh MzIuLjRkYTI0MDUgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0 cy50eHQKK0BAIC04NCw5ICs4NCw2IEBAIGZpbmRfcGFja2FnZShGRm1wZWcpCisgaWYoRkZNUEVH X0xJQlJBUklFUykKKyAJY21ha2VfcHVzaF9jaGVja19zdGF0ZShSRVNFVCkKKyAJc2V0KENNQUtF X1JFUVVJUkVEX0xJQlJBUklFUyAke0ZGTVBFR19MSUJSQVJJRVN9ICR7Q01BS0VfVEhSRUFEX0xJ QlNfSU5JVH0gLWxtKQorLQljaGVja19mdW5jdGlvbl9leGlzdHMoYXZfcGFja2V0X3VucmVmIEhB VkVfQVZfUEFDS0VUX1VOUkVGKQorLQljaGVja19mdW5jdGlvbl9leGlzdHMoYXZfZnJhbWVfYWxs b2MgSEFWRV9BVl9GUkFNRV9BTExPQykKKy0JY2hlY2tfZnVuY3Rpb25fZXhpc3RzKGF2X2ZyYW1l X2ZyZWUgSEFWRV9BVl9GUkFNRV9GUkVFKQorIAljbWFrZV9wb3BfY2hlY2tfc3RhdGUoKQorIGVu ZGlmKCkKKworQEAgLTE2MywxNCArMTYwLDExIEBAIG1lc3NhZ2UoU1RBVFVTICJVc2luZyAke0ZG VF9MSUJ9IGZvciBGRlQgY2FsY3VsYXRpb25zIikKKyBpZihOT1QgQVVESU9fUFJPQ0VTU09SX0xJ QikKKyAJaWYoRkZNUEVHX0xJQlNXUkVTQU1QTEVfRk9VTkQpCisgCQlzZXQoQVVESU9fUFJPQ0VT U09SX0xJQiAic3dyZXNhbXBsZSIpCistCWVsc2VpZihGRk1QRUdfTElCQVZSRVNBTVBMRV9GT1VO RCkKKy0JCXNldChBVURJT19QUk9DRVNTT1JfTElCICJhdnJlc2FtcGxlIikKKyAJZW5kaWYoKQor IGVuZGlmKCkKKworIGlmKEFVRElPX1BST0NFU1NPUl9MSUIgU1RSRVFVQUwgInN3cmVzYW1wbGUi KQorIAlpZihGRk1QRUdfTElCU1dSRVNBTVBMRV9GT1VORCkKKy0JCXNldChVU0VfQVZSRVNBTVBM RSBPRkYpCisgCQlzZXQoVVNFX1NXUkVTQU1QTEUgT04pCisgCQlzZXQoQVVESU9fUFJPQ0VTU09S X0xJQlJBUklFUyAke0ZGTVBFR19MSUJTV1JFU0FNUExFX0xJQlJBUklFU30pCisgCQlzZXQoQVVE SU9fUFJPQ0VTU09SX0lOQ0xVREVfRElSUyAke0ZGTVBFR19MSUJTV1JFU0FNUExFX0lOQ0xVREVf RElSU30pCitAQCAtMTc4LDE2ICsxNzIsNiBAQCBpZihBVURJT19QUk9DRVNTT1JfTElCIFNUUkVR VUFMICJzd3Jlc2FtcGxlIikKKyAJCW1lc3NhZ2UoRkFUQUxfRVJST1IgIlNlbGVjdGVkICR7QVVE SU9fUFJPQ0VTU09SX0xJQn0gZm9yIGF1ZGlvIHByb2Nlc3NpbmcsIGJ1dCB0aGUgbGlicmFyeSBp cyBub3QgZm91bmQiKQorIAllbmRpZigpCisgCW1lc3NhZ2UoU1RBVFVTICJVc2luZyAke0FVRElP X1BST0NFU1NPUl9MSUJ9IGZvciBhdWRpbyBjb252ZXJzaW9uIikKKy1lbHNlaWYoQVVESU9fUFJP Q0VTU09SX0xJQiBTVFJFUVVBTCAiYXZyZXNhbXBsZSIpCistCWlmKEZGTVBFR19MSUJBVlJFU0FN UExFX0ZPVU5EKQorLQkJc2V0KFVTRV9BVlJFU0FNUExFIE9OKQorLQkJc2V0KFVTRV9TV1JFU0FN UExFIE9GRikKKy0JCXNldChBVURJT19QUk9DRVNTT1JfTElCUkFSSUVTICR7RkZNUEVHX0xJQkFW UkVTQU1QTEVfTElCUkFSSUVTfSkKKy0JCXNldChBVURJT19QUk9DRVNTT1JfSU5DTFVERV9ESVJT ICR7RkZNUEVHX0xJQkFWUkVTQU1QTEVfSU5DTFVERV9ESVJTfSkKKy0JZWxzZSgpCistCQltZXNz YWdlKEZBVEFMX0VSUk9SICJTZWxlY3RlZCAke0FVRElPX1BST0NFU1NPUl9MSUJ9IGZvciBhdWRp byBwcm9jZXNzaW5nLCBidXQgdGhlIGxpYnJhcnkgaXMgbm90IGZvdW5kIikKKy0JZW5kaWYoKQor LQltZXNzYWdlKFNUQVRVUyAiVXNpbmcgJHtBVURJT19QUk9DRVNTT1JfTElCfSBmb3IgYXVkaW8g Y29udmVyc2lvbiIpCisgZWxzZSgpCisgCW1lc3NhZ2UoU1RBVFVTICJCdWlsZGluZyB3aXRob3V0 IGF1ZGlvIGNvbnZlcnNpb24gc3VwcG9ydCwgcGxlYXNlIGluc3RhbGwgRkZtcGVnIHdpdGggbGli c3dyZXNhbXBsZSIpCisgZW5kaWYoKQorZGlmZiAtLWdpdCBhL3BhY2thZ2UvYnVpbGQuc2ggYi9w YWNrYWdlL2J1aWxkLnNoCitpbmRleCBkYTYzMWFlLi5iNDFkMzZlIDEwMDc1NQorLS0tIGEvcGFj a2FnZS9idWlsZC5zaAorKysrIGIvcGFja2FnZS9idWlsZC5zaAorQEAgLTcsOCArNyw4IEBAIHNl dCAtZXV4CisKKyBCQVNFX0RJUj0kKGNkICQoZGlybmFtZSAkMCkvLi4gJiYgcHdkKQorCistRkZN UEVHX1ZFUlNJT049NC40LjEKKy1GRk1QRUdfQlVJTERfVEFHPXY0LjQuMS0xCisrRkZNUEVHX1ZF UlNJT049NS4xLjIKKytGRk1QRUdfQlVJTERfVEFHPXYke0ZGTVBFR19WRVJTSU9OfS0xCisKKyBU TVBfQlVJTERfRElSPSRCQVNFX0RJUi8kKG1rdGVtcCAtZCBidWlsZC5YWFhYWFhYWCkKKyB0cmFw ICdybSAtcmYgJFRNUF9CVUlMRF9ESVInIEVYSVQKK2RpZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZt cGVnX2F1ZGlvX3Byb2Nlc3Nvci5oIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Iu aAoraW5kZXggNzYyOGZjNy4uMzlmNGY2ZCAxMDA2NDQKKy0tLSBhL3NyYy9hdWRpby9mZm1wZWdf YXVkaW9fcHJvY2Vzc29yLmgKKysrKyBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29y LmgKK0BAIC0xMCw4ICsxMCw2IEBACisKKyAjaWYgZGVmaW5lZChVU0VfU1dSRVNBTVBMRSkKKyAj aW5jbHVkZSAiYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmgiCistI2Vs aWYgZGVmaW5lZChVU0VfQVZSRVNBTVBMRSkKKy0jaW5jbHVkZSAiYXVkaW8vZmZtcGVnX2F1ZGlv X3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgiCisgI2Vsc2UKKyAjZXJyb3IgIm5vIGF1ZGlvIHByb2Nl c3NpbmcgbGlicmFyeSIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1 ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmggYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nl c3Nvcl9hdnJlc2FtcGxlLmgKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggYmQ4NWY5 Mi4uMDAwMDAwMAorLS0tIGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNh bXBsZS5oCisrKysgL2Rldi9udWxsCitAQCAtMSw3MiArMCwwIEBACistLy8gQ29weXJpZ2h0IChD KSAyMDE2ICBMdWthcyBMYWxpbnNreQorLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgbGlj ZW5zZSwgc2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCistCistI2lmbmRlZiBDSFJP TUFQUklOVF9BVURJT19GRk1QRUdfQVVESU9fUFJPQ0VTU09SX0FWUkVTQU1QTEVfSF8KKy0jZGVm aW5lIENIUk9NQVBSSU5UX0FVRElPX0ZGTVBFR19BVURJT19QUk9DRVNTT1JfQVZSRVNBTVBMRV9I XworLQorLWV4dGVybiAiQyIgeworLSNpbmNsdWRlIDxsaWJhdnJlc2FtcGxlL2F2cmVzYW1wbGUu aD4KKy19CistCistbmFtZXNwYWNlIGNocm9tYXByaW50IHsKKy0KKy1jbGFzcyBGRm1wZWdBdWRp b1Byb2Nlc3NvciB7CistcHVibGljOgorLQlGRm1wZWdBdWRpb1Byb2Nlc3NvcigpIHsKKy0JCW1f cmVzYW1wbGVfY3R4ID0gYXZyZXNhbXBsZV9hbGxvY19jb250ZXh0KCk7CistCX0KKy0KKy0JfkZG bXBlZ0F1ZGlvUHJvY2Vzc29yKCkgeworLQkJYXZyZXNhbXBsZV9mcmVlKCZtX3Jlc2FtcGxlX2N0 eCk7CistCX0KKy0KKy0Jdm9pZCBTZXRDb21wYXRpYmxlTW9kZSgpIHsKKy0JCWF2X29wdF9zZXRf aW50KG1fcmVzYW1wbGVfY3R4LCAiZmlsdGVyX3NpemUiLCAxNiwgMCk7CistCQlhdl9vcHRfc2V0 X2ludChtX3Jlc2FtcGxlX2N0eCwgInBoYXNlX3NoaWZ0IiwgOCwgMCk7CistCQlhdl9vcHRfc2V0 X2ludChtX3Jlc2FtcGxlX2N0eCwgImxpbmVhcl9pbnRlcnAiLCAxLCAwKTsKKy0JCWF2X29wdF9z ZXRfZG91YmxlKG1fcmVzYW1wbGVfY3R4LCAiY3V0b2ZmIiwgMC44LCAwKTsKKy0JfQorLQorLQl2 b2lkIFNldElucHV0Q2hhbm5lbExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlh dl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImluX2NoYW5uZWxfbGF5b3V0IiwgY2hhbm5l bF9sYXlvdXQsIDApOworLQl9CistCistCXZvaWQgU2V0SW5wdXRTYW1wbGVGb3JtYXQoQVZTYW1w bGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9j dHgsICJpbl9zYW1wbGVfZm10Iiwgc2FtcGxlX2Zvcm1hdCwgMCk7CistCX0KKy0KKy0Jdm9pZCBT ZXRJbnB1dFNhbXBsZVJhdGUoaW50IHNhbXBsZV9yYXRlKSB7CistCQlhdl9vcHRfc2V0X2ludCht X3Jlc2FtcGxlX2N0eCwgImluX3NhbXBsZV9yYXRlIiwgc2FtcGxlX3JhdGUsIDApOworLQl9Cist CistCXZvaWQgU2V0T3V0cHV0Q2hhbm5lbExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7 CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgIm91dF9jaGFubmVsX2xheW91dCIs IGNoYW5uZWxfbGF5b3V0LCAwKTsKKy0JfQorLQorLQl2b2lkIFNldE91dHB1dFNhbXBsZUZvcm1h dChBVlNhbXBsZUZvcm1hdCBzYW1wbGVfZm9ybWF0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jl c2FtcGxlX2N0eCwgIm91dF9zYW1wbGVfZm10Iiwgc2FtcGxlX2Zvcm1hdCwgMCk7CistCX0KKy0K Ky0Jdm9pZCBTZXRPdXRwdXRTYW1wbGVSYXRlKGludCBzYW1wbGVfcmF0ZSkgeworLQkJYXZfb3B0 X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJvdXRfc2FtcGxlX2ZtdCIsIHNhbXBsZV9yYXRlLCAw KTsKKy0JfQorLQorLQlpbnQgSW5pdCgpIHsKKy0JCXJldHVybiBhdnJlc2FtcGxlX29wZW4obV9y ZXNhbXBsZV9jdHgpOworLQl9CistCistCWludCBDb252ZXJ0KHVpbnQ4X3QgKipvdXQsIGludCBv dXRfY291bnQsIGNvbnN0IHVpbnQ4X3QgKippbiwgaW50IGluX2NvdW50KSB7CistCQlyZXR1cm4g YXZyZXNhbXBsZV9jb252ZXJ0KG1fcmVzYW1wbGVfY3R4LCBvdXQsIDAsIG91dF9jb3VudCwgKHVp bnQ4X3QgKiopIGluLCAwLCBpbl9jb3VudCk7CistCX0KKy0KKy0JaW50IEZsdXNoKHVpbnQ4X3Qg KipvdXQsIGludCBvdXRfY291bnQpIHsKKy0JCXJldHVybiBhdnJlc2FtcGxlX3JlYWQobV9yZXNh bXBsZV9jdHgsIG91dCwgb3V0X2NvdW50KTsKKy0JfQorLQorLXByaXZhdGU6CistCUFWQXVkaW9S ZXNhbXBsZUNvbnRleHQgKm1fcmVzYW1wbGVfY3R4ID0gbnVsbHB0cjsKKy19OworLQorLX07IC8v IG5hbWVzcGFjZSBjaHJvbWFwcmludAorLQorLSNlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy9hdWRp by9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaCBiL3NyYy9hdWRpby9mZm1wZWdf YXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaAoraW5kZXggYjg2MjY2Yi4uYjFkNGJlYSAxMDA2 NDQKKy0tLSBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaAor KysrIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oCitAQCAt MjgsMzAgKzI4LDI4IEBAIHB1YmxpYzoKKyAJCWF2X29wdF9zZXRfZG91YmxlKG1fc3dyX2N0eCwg ImN1dG9mZiIsIDAuOCwgMCk7CisgCX0KKworLQl2b2lkIFNldElucHV0Q2hhbm5lbExheW91dChp bnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJp Y2wiLCBjaGFubmVsX2xheW91dCwgMCk7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJp Y2giLCBhdl9nZXRfY2hhbm5lbF9sYXlvdXRfbmJfY2hhbm5lbHMoY2hhbm5lbF9sYXlvdXQpLCAw KTsKKysJdm9pZCBTZXRJbnB1dENoYW5uZWxMYXlvdXQoQVZDaGFubmVsTGF5b3V0ICpjaGFubmVs X2xheW91dCkgeworKwkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaW5fY2hhbm5lbF9sYXlv dXQiLCBjaGFubmVsX2xheW91dC0+dS5tYXNrLCAwKTsKKyAJfQorCisgCXZvaWQgU2V0SW5wdXRT YW1wbGVGb3JtYXQoQVZTYW1wbGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkgeworLQkJYXZfb3B0X3Nl dF9pbnQobV9zd3JfY3R4LCAiaXNmIiwgc2FtcGxlX2Zvcm1hdCwgMCk7CisrCQlhdl9vcHRfc2V0 X3NhbXBsZV9mbXQobV9zd3JfY3R4LCAiaW5fc2FtcGxlX2ZtdCIsIHNhbXBsZV9mb3JtYXQsIDAp OworIAl9CisKKyAJdm9pZCBTZXRJbnB1dFNhbXBsZVJhdGUoaW50IHNhbXBsZV9yYXRlKSB7Cist CQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpc3IiLCBzYW1wbGVfcmF0ZSwgMCk7CisrCQlh dl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpbl9zYW1wbGVfcmF0ZSIsIHNhbXBsZV9yYXRlLCAw KTsKKyAJfQorCistCXZvaWQgU2V0T3V0cHV0Q2hhbm5lbExheW91dChpbnQ2NF90IGNoYW5uZWxf bGF5b3V0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJvY2wiLCBjaGFubmVsX2xh eW91dCwgMCk7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJvY2giLCBhdl9nZXRfY2hh bm5lbF9sYXlvdXRfbmJfY2hhbm5lbHMoY2hhbm5lbF9sYXlvdXQpLCAwKTsKKysJdm9pZCBTZXRP dXRwdXRDaGFubmVsTGF5b3V0KEFWQ2hhbm5lbExheW91dCAqY2hhbm5lbF9sYXlvdXQpIHsKKysJ CWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm91dF9jaGFubmVsX2xheW91dCIsIGNoYW5uZWxf bGF5b3V0LT51Lm1hc2ssIDApOworIAl9CisKKyAJdm9pZCBTZXRPdXRwdXRTYW1wbGVGb3JtYXQo QVZTYW1wbGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3Jf Y3R4LCAib3NmIiwgc2FtcGxlX2Zvcm1hdCwgMCk7CisrCQlhdl9vcHRfc2V0X3NhbXBsZV9mbXQo bV9zd3JfY3R4LCAib3V0X3NhbXBsZV9mbXQiLCBzYW1wbGVfZm9ybWF0LCAwKTsKKyAJfQorCisg CXZvaWQgU2V0T3V0cHV0U2FtcGxlUmF0ZShpbnQgc2FtcGxlX3JhdGUpIHsKKy0JCWF2X29wdF9z ZXRfaW50KG1fc3dyX2N0eCwgIm9zciIsIHNhbXBsZV9yYXRlLCAwKTsKKysJCWF2X29wdF9zZXRf aW50KG1fc3dyX2N0eCwgIm91dF9zYW1wbGVfcmF0ZSIsIHNhbXBsZV9yYXRlLCAwKTsKKyAJfQor CisgCWludCBJbml0KCkgeworZGlmZiAtLWdpdCBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcmVh ZGVyLmggYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRlci5oCitpbmRleCA1NTUwMTY0Li4x YzZiMzQ2IDEwMDY0NAorLS0tIGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaAorKysr IGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaAorQEAgLTYyLDcgKzYyLDcgQEAgcHVi bGljOgorIAlib29sIFJlYWQoY29uc3QgaW50MTZfdCAqKmRhdGEsIHNpemVfdCAqc2l6ZSk7CisK KyAJYm9vbCBJc09wZW4oKSBjb25zdCB7IHJldHVybiBtX29wZW5lZDsgfQorLQlib29sIElzRmlu aXNoZWQoKSBjb25zdCB7IHJldHVybiBtX2ZpbmlzaGVkICYmICFtX2dvdF9mcmFtZTsgfQorKwli b29sIElzRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiAhbV9oYXNfbW9yZV9wYWNrZXRzICYmICFt X2hhc19tb3JlX2ZyYW1lczsgfQorCisgCXN0ZDo6c3RyaW5nIEdldEVycm9yKCkgY29uc3QgeyBy ZXR1cm4gbV9lcnJvcjsgfQorIAlpbnQgR2V0RXJyb3JDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9l cnJvcl9jb2RlOyB9CitAQCAtNzQsMjAgKzc0LDE5IEBAIHByaXZhdGU6CisgCXVpbnQ4X3QgKm1f Y29udmVydF9idWZmZXJbMV0gPSB7IG51bGxwdHIgfTsKKyAJaW50IG1fY29udmVydF9idWZmZXJf bmJfc2FtcGxlcyA9IDA7CisKKy0JQVZJbnB1dEZvcm1hdCAqbV9pbnB1dF9mbXQgPSBudWxscHRy OworKwljb25zdCBBVklucHV0Rm9ybWF0ICptX2lucHV0X2ZtdCA9IG51bGxwdHI7CisgCUFWRGlj dGlvbmFyeSAqbV9pbnB1dF9vcHRzID0gbnVsbHB0cjsKKworIAlBVkZvcm1hdENvbnRleHQgKm1f Zm9ybWF0X2N0eCA9IG51bGxwdHI7CisgCUFWQ29kZWNDb250ZXh0ICptX2NvZGVjX2N0eCA9IG51 bGxwdHI7CistCUFWRnJhbWUgKm1fZnJhbWUgPSBudWxscHRyOworIAlpbnQgbV9zdHJlYW1faW5k ZXggPSAtMTsKKyAJc3RkOjpzdHJpbmcgbV9lcnJvcjsKKyAJaW50IG1fZXJyb3JfY29kZSA9IDA7 CistCWJvb2wgbV9maW5pc2hlZCA9IGZhbHNlOworIAlib29sIG1fb3BlbmVkID0gZmFsc2U7Cist CWludCBtX2dvdF9mcmFtZSA9IDA7CistCUFWUGFja2V0IG1fcGFja2V0OworLQlBVlBhY2tldCBt X3BhY2tldDA7CisrCWJvb2wgbV9oYXNfbW9yZV9wYWNrZXRzID0gdHJ1ZTsKKysJYm9vbCBtX2hh c19tb3JlX2ZyYW1lcyA9IHRydWU7CisrCUFWUGFja2V0ICptX3BhY2tldCA9IG51bGxwdHI7Cisr CUFWRnJhbWUgKm1fZnJhbWUgPSBudWxscHRyOworCisgCWludCBtX291dHB1dF9zYW1wbGVfcmF0 ZSA9IDA7CisgCWludCBtX291dHB1dF9jaGFubmVscyA9IDA7CitAQCAtOTgsMTkgKzk3LDEyIEBA IHByaXZhdGU6CisKKyBpbmxpbmUgRkZtcGVnQXVkaW9SZWFkZXI6OkZGbXBlZ0F1ZGlvUmVhZGVy KCkgeworIAlhdl9sb2dfc2V0X2xldmVsKEFWX0xPR19RVUlFVCk7CistCistCWF2X2luaXRfcGFj a2V0KCZtX3BhY2tldCk7CistCW1fcGFja2V0LmRhdGEgPSBudWxscHRyOworLQltX3BhY2tldC5z aXplID0gMDsKKy0KKy0JbV9wYWNrZXQwID0gbV9wYWNrZXQ7CisgfQorCisgaW5saW5lIEZGbXBl Z0F1ZGlvUmVhZGVyOjp+RkZtcGVnQXVkaW9SZWFkZXIoKSB7CisgCUNsb3NlKCk7CisgCWF2X2Rp Y3RfZnJlZSgmbV9pbnB1dF9vcHRzKTsKKyAJYXZfZnJlZXAoJm1fY29udmVydF9idWZmZXJbMF0p OworLQlhdl9wYWNrZXRfdW5yZWYoJm1fcGFja2V0MCk7CisgfQorCisgaW5saW5lIGJvb2wgRkZt cGVnQXVkaW9SZWFkZXI6OlNldElucHV0Rm9ybWF0KGNvbnN0IGNoYXIgKm5hbWUpIHsKK0BAIC0x MzUsMTEgKzEyNywxMCBAQCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25z dCBzdGQ6OnN0cmluZyAmZmlsZV9uYW1lKSB7CisKKyAJQ2xvc2UoKTsKKworLSAgICBhdl9pbml0 X3BhY2tldCgmbV9wYWNrZXQpOworLQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JbV9wYWNr ZXQuc2l6ZSA9IDA7CistCistCW1fcGFja2V0MCA9IG1fcGFja2V0OworKwltX3BhY2tldCA9IGF2 X3BhY2tldF9hbGxvYygpOworKwlpZiAoIW1fcGFja2V0KSB7CisrCQlyZXR1cm4gZmFsc2U7Cisr CX0KKworIAlyZXQgPSBhdmZvcm1hdF9vcGVuX2lucHV0KCZtX2Zvcm1hdF9jdHgsIGZpbGVfbmFt ZS5jX3N0cigpLCBtX2lucHV0X2ZtdCwgJm1faW5wdXRfb3B0cyk7CisgCWlmIChyZXQgPCAwKSB7 CitAQCAtMTUzLDI2ICsxNDQsMzEgQEAgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9w ZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZpbGVfbmFtZSkgeworIAkJcmV0dXJuIGZhbHNlOworIAl9 CisKKy0JQVZDb2RlYyAqY29kZWM7CisrCWNvbnN0IEFWQ29kZWMgKmNvZGVjOworIAlyZXQgPSBh dl9maW5kX2Jlc3Rfc3RyZWFtKG1fZm9ybWF0X2N0eCwgQVZNRURJQV9UWVBFX0FVRElPLCAtMSwg LTEsICZjb2RlYywgMCk7CisgCWlmIChyZXQgPCAwKSB7CisgCQlTZXRFcnJvcigiQ291bGQgbm90 IGZpbmQgYW55IGF1ZGlvIHN0cmVhbSBpbiB0aGUgZmlsZSIsIHJldCk7CisgCQlyZXR1cm4gZmFs c2U7CisgCX0KKyAJbV9zdHJlYW1faW5kZXggPSByZXQ7CisrCWF1dG8gc3RyZWFtID0gbV9mb3Jt YXRfY3R4LT5zdHJlYW1zW21fc3RyZWFtX2luZGV4XTsKKworLQltX2NvZGVjX2N0eCA9IG1fZm9y bWF0X2N0eC0+c3RyZWFtc1ttX3N0cmVhbV9pbmRleF0tPmNvZGVjOworKwltX2NvZGVjX2N0eCA9 IGF2Y29kZWNfYWxsb2NfY29udGV4dDMoY29kZWMpOworIAltX2NvZGVjX2N0eC0+cmVxdWVzdF9z YW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9TMTY7CisKKysJcmV0ID0gYXZjb2RlY19wYXJhbWV0 ZXJzX3RvX2NvbnRleHQobV9jb2RlY19jdHgsIHN0cmVhbS0+Y29kZWNwYXIpOworKwlpZiAocmV0 IDwgMCkgeworKwkJU2V0RXJyb3IoIkNvdWxkIG5vdCBjb3B5IHRoZSBzdHJlYW0gcGFyYW1ldGVy cyIsIHJldCk7CisrCQlyZXR1cm4gZmFsc2U7CisrCX0KKysKKyAJcmV0ID0gYXZjb2RlY19vcGVu MihtX2NvZGVjX2N0eCwgY29kZWMsIG51bGxwdHIpOworIAlpZiAocmV0IDwgMCkgeworIAkJU2V0 RXJyb3IoIkNvdWxkIG5vdCBvcGVuIHRoZSBjb2RlYyIsIHJldCk7CisgCQlyZXR1cm4gZmFsc2U7 CisgCX0KKworLQlpZiAoIW1fY29kZWNfY3R4LT5jaGFubmVsX2xheW91dCkgeworLQkJbV9jb2Rl Y19jdHgtPmNoYW5uZWxfbGF5b3V0ID0gYXZfZ2V0X2RlZmF1bHRfY2hhbm5lbF9sYXlvdXQobV9j b2RlY19jdHgtPmNoYW5uZWxzKTsKKy0JfQorKwlhdl9kdW1wX2Zvcm1hdChtX2Zvcm1hdF9jdHgs IDAsICJmb28iLCAwKTsKKworIAltX2ZyYW1lID0gYXZfZnJhbWVfYWxsb2MoKTsKKyAJaWYgKCFt X2ZyYW1lKSB7CitAQCAtMTgzLDE5ICsxNzksMjMgQEAgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9S ZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZpbGVfbmFtZSkgeworIAkJbV9vdXRwdXRf c2FtcGxlX3JhdGUgPSBtX2NvZGVjX2N0eC0+c2FtcGxlX3JhdGU7CisgCX0KKworLQlpZiAoIW1f b3V0cHV0X2NoYW5uZWxzKSB7CistCQltX291dHB1dF9jaGFubmVscyA9IG1fY29kZWNfY3R4LT5j aGFubmVsczsKKysJQVZDaGFubmVsTGF5b3V0IG91dHB1dF9jaGFubmVsX2xheW91dDsKKysJaWYg KG1fb3V0cHV0X2NoYW5uZWxzKSB7CisrCQlhdl9jaGFubmVsX2xheW91dF9kZWZhdWx0KCZvdXRw dXRfY2hhbm5lbF9sYXlvdXQsIG1fb3V0cHV0X2NoYW5uZWxzKTsKKysJfSBlbHNlIHsKKysJCW1f b3V0cHV0X2NoYW5uZWxzID0gbV9jb2RlY19jdHgtPmNoX2xheW91dC5uYl9jaGFubmVsczsKKysJ CWF2X2NoYW5uZWxfbGF5b3V0X2RlZmF1bHQoJm91dHB1dF9jaGFubmVsX2xheW91dCwgbV9vdXRw dXRfY2hhbm5lbHMpOworIAl9CisKKy0JaWYgKG1fY29kZWNfY3R4LT5zYW1wbGVfZm10ICE9IEFW X1NBTVBMRV9GTVRfUzE2IHx8IG1fY29kZWNfY3R4LT5jaGFubmVscyAhPSBtX291dHB1dF9jaGFu bmVscyB8fCBtX2NvZGVjX2N0eC0+c2FtcGxlX3JhdGUgIT0gbV9vdXRwdXRfc2FtcGxlX3JhdGUp IHsKKysJaWYgKG1fY29kZWNfY3R4LT5zYW1wbGVfZm10ICE9IEFWX1NBTVBMRV9GTVRfUzE2IHx8 IG1fY29kZWNfY3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHMgIT0gbV9vdXRwdXRfY2hhbm5lbHMg fHwgbV9jb2RlY19jdHgtPnNhbXBsZV9yYXRlICE9IG1fb3V0cHV0X3NhbXBsZV9yYXRlKSB7Cisg CQltX2NvbnZlcnRlci5yZXNldChuZXcgRkZtcGVnQXVkaW9Qcm9jZXNzb3IoKSk7CisgCQltX2Nv bnZlcnRlci0+U2V0Q29tcGF0aWJsZU1vZGUoKTsKKyAJCW1fY29udmVydGVyLT5TZXRJbnB1dFNh bXBsZUZvcm1hdChtX2NvZGVjX2N0eC0+c2FtcGxlX2ZtdCk7CisgCQltX2NvbnZlcnRlci0+U2V0 SW5wdXRTYW1wbGVSYXRlKG1fY29kZWNfY3R4LT5zYW1wbGVfcmF0ZSk7CistCQltX2NvbnZlcnRl ci0+U2V0SW5wdXRDaGFubmVsTGF5b3V0KG1fY29kZWNfY3R4LT5jaGFubmVsX2xheW91dCk7Cisr CQltX2NvbnZlcnRlci0+U2V0SW5wdXRDaGFubmVsTGF5b3V0KCYobV9jb2RlY19jdHgtPmNoX2xh eW91dCkpOworIAkJbV9jb252ZXJ0ZXItPlNldE91dHB1dFNhbXBsZUZvcm1hdChBVl9TQU1QTEVf Rk1UX1MxNik7CisgCQltX2NvbnZlcnRlci0+U2V0T3V0cHV0U2FtcGxlUmF0ZShtX291dHB1dF9z YW1wbGVfcmF0ZSk7CistCQltX2NvbnZlcnRlci0+U2V0T3V0cHV0Q2hhbm5lbExheW91dChhdl9n ZXRfZGVmYXVsdF9jaGFubmVsX2xheW91dChtX291dHB1dF9jaGFubmVscykpOworKwkJbV9jb252 ZXJ0ZXItPlNldE91dHB1dENoYW5uZWxMYXlvdXQoJm91dHB1dF9jaGFubmVsX2xheW91dCk7Cisg CQlhdXRvIHJldCA9IG1fY29udmVydGVyLT5Jbml0KCk7CisgCQlpZiAocmV0ICE9IDApIHsKKyAJ CQlTZXRFcnJvcigiQ291bGQgbm90IGNyZWF0ZSBhbiBhdWRpbyBjb252ZXJ0ZXIgaW5zdGFuY2Ui LCByZXQpOworQEAgLTIwMywxMCArMjAzLDExIEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVh ZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKyAJCX0KKyAJfQorCisr CWF2X2NoYW5uZWxfbGF5b3V0X3VuaW5pdCgmb3V0cHV0X2NoYW5uZWxfbGF5b3V0KTsKKysKKyAJ bV9vcGVuZWQgPSB0cnVlOworLQltX2ZpbmlzaGVkID0gZmFsc2U7CistCW1fZ290X2ZyYW1lID0g MDsKKy0JbV9uYl9wYWNrZXRzID0gMDsKKysJbV9oYXNfbW9yZV9wYWNrZXRzID0gdHJ1ZTsKKysJ bV9oYXNfbW9yZV9mcmFtZXMgPSB0cnVlOworIAltX2RlY29kZV9lcnJvciA9IDA7CisKKyAJcmV0 dXJuIHRydWU7CitAQCAtMjE0LDYgKzIxNSw3IEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVh ZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKworIGlubGluZSB2b2lk IEZGbXBlZ0F1ZGlvUmVhZGVyOjpDbG9zZSgpIHsKKyAJYXZfZnJhbWVfZnJlZSgmbV9mcmFtZSk7 CisrCWF2X3BhY2tldF9mcmVlKCZtX3BhY2tldCk7CisKKyAJbV9zdHJlYW1faW5kZXggPSAtMTsK KworQEAgLTI1Miw5MSArMjU0LDk4IEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpS ZWFkKGNvbnN0IGludDE2X3QgKipkYXRhLCBzaXplX3QgKnNpemUpIHsKKyAJCXJldHVybiBmYWxz ZTsKKyAJfQorCisrCSpkYXRhID0gbnVsbHB0cjsKKysJKnNpemUgPSAwOworKworIAlpbnQgcmV0 OworKwlib29sIG5lZWRzX3BhY2tldCA9IGZhbHNlOworIAl3aGlsZSAodHJ1ZSkgeworLQkJd2hp bGUgKG1fcGFja2V0LnNpemUgPD0gMCkgeworLQkJCWF2X3BhY2tldF91bnJlZigmbV9wYWNrZXQw KTsKKy0JCQlhdl9pbml0X3BhY2tldCgmbV9wYWNrZXQpOworLQkJCW1fcGFja2V0LmRhdGEgPSBu dWxscHRyOworLQkJCW1fcGFja2V0LnNpemUgPSAwOworLQkJCXJldCA9IGF2X3JlYWRfZnJhbWUo bV9mb3JtYXRfY3R4LCAmbV9wYWNrZXQpOworKwkJd2hpbGUgKG5lZWRzX3BhY2tldCAmJiBtX3Bh Y2tldC0+c2l6ZSA9PSAwKSB7CisrCQkJcmV0ID0gYXZfcmVhZF9mcmFtZShtX2Zvcm1hdF9jdHgs IG1fcGFja2V0KTsKKyAJCQlpZiAocmV0IDwgMCkgeworIAkJCQlpZiAocmV0ID09IEFWRVJST1Jf RU9GKSB7CistCQkJCQltX2ZpbmlzaGVkID0gdHJ1ZTsKKysJCQkJCW5lZWRzX3BhY2tldCA9IGZh bHNlOworKwkJCQkJbV9oYXNfbW9yZV9wYWNrZXRzID0gZmFsc2U7CisgCQkJCQlicmVhazsKKy0J CQkJfSBlbHNlIHsKKysJCQkJfQorKwkJCQlTZXRFcnJvcigiRXJyb3IgcmVhZGluZyBmcm9tIHRo ZSBhdWRpbyBzb3VyY2UiLCByZXQpOworKwkJCQlyZXR1cm4gZmFsc2U7CisrCQkJfQorKwkJCWlm IChtX3BhY2tldC0+c3RyZWFtX2luZGV4ID09IG1fc3RyZWFtX2luZGV4KSB7CisrCQkJCW5lZWRz X3BhY2tldCA9IGZhbHNlOworKwkJCX0gZWxzZSB7CisrCQkJCWF2X3BhY2tldF91bnJlZihtX3Bh Y2tldCk7CisrCQkJfQorKwkJfQorKworKwkJaWYgKG1fcGFja2V0LT5zaXplICE9IDApIHsKKysJ CQlyZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KG1fY29kZWNfY3R4LCBtX3BhY2tldCk7CisrCQkJ aWYgKHJldCA8IDApIHsKKysJCQkJaWYgKHJldCAhPSBBVkVSUk9SKEVBR0FJTikpIHsKKyAJCQkJ CVNldEVycm9yKCJFcnJvciByZWFkaW5nIGZyb20gdGhlIGF1ZGlvIHNvdXJjZSIsIHJldCk7Cisg CQkJCQlyZXR1cm4gZmFsc2U7CisgCQkJCX0KKy0JCQl9CistCQkJbV9wYWNrZXQwID0gbV9wYWNr ZXQ7CistCQkJaWYgKG1fcGFja2V0LnN0cmVhbV9pbmRleCAhPSBtX3N0cmVhbV9pbmRleCkgewor LQkJCQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JCQkJbV9wYWNrZXQuc2l6ZSA9IDA7Cisg CQkJfSBlbHNlIHsKKy0JCQkJbV9uYl9wYWNrZXRzKys7CisrCQkJCWF2X3BhY2tldF91bnJlZiht X3BhY2tldCk7CisgCQkJfQorIAkJfQorCistCQlyZXQgPSBhdmNvZGVjX2RlY29kZV9hdWRpbzQo bV9jb2RlY19jdHgsIG1fZnJhbWUsICZtX2dvdF9mcmFtZSwgJm1fcGFja2V0KTsKKysJCXJldCA9 IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZShtX2NvZGVjX2N0eCwgbV9mcmFtZSk7CisgCQlpZiAocmV0 IDwgMCkgeworLQkJCWlmIChtX2RlY29kZV9lcnJvcikgeworLQkJCQlTZXRFcnJvcigiRXJyb3Ig ZGVjb2RpbmcgYXVkaW8gZnJhbWUiLCBtX2RlY29kZV9lcnJvcik7CistCQkJCXJldHVybiBmYWxz ZTsKKysJCQlpZiAocmV0ID09IEFWRVJST1JfRU9GKSB7CisrCQkJCW1faGFzX21vcmVfZnJhbWVz ID0gZmFsc2U7CisrCQkJfSBlbHNlIGlmIChyZXQgPT0gQVZFUlJPUihFQUdBSU4pKSB7CisrCQkJ CWlmIChtX2hhc19tb3JlX3BhY2tldHMpIHsKKysJCQkJCW5lZWRzX3BhY2tldCA9IHRydWU7Cisr CQkJCQljb250aW51ZTsKKysJCQkJfSBlbHNlIHsKKysJCQkJCW1faGFzX21vcmVfZnJhbWVzID0g ZmFsc2U7CisrCQkJCX0KKyAJCQl9CistCQkJbV9kZWNvZGVfZXJyb3IgPSByZXQ7CistCQkJbV9w YWNrZXQuZGF0YSA9IG51bGxwdHI7CistCQkJbV9wYWNrZXQuc2l6ZSA9IDA7CistCQkJY29udGlu dWU7CisrCQkJU2V0RXJyb3IoIkVycm9yIGRlY29kaW5nIHRoZSBhdWRpbyBzb3VyY2UiLCByZXQp OworKwkJCXJldHVybiBmYWxzZTsKKyAJCX0KKworLQkJYnJlYWs7CistCX0KKy0KKy0JbV9kZWNv ZGVfZXJyb3IgPSAwOworLQorLQljb25zdCBpbnQgZGVjb2RlZCA9IHN0ZDo6bWluKHJldCwgbV9w YWNrZXQuc2l6ZSk7CistCW1fcGFja2V0LmRhdGEgKz0gZGVjb2RlZDsKKy0JbV9wYWNrZXQuc2l6 ZSAtPSBkZWNvZGVkOworLQorLQlpZiAobV9nb3RfZnJhbWUpIHsKKy0JCWlmIChtX2NvbnZlcnRl cikgeworLQkJCWlmIChtX2ZyYW1lLT5uYl9zYW1wbGVzID4gbV9jb252ZXJ0X2J1ZmZlcl9uYl9z YW1wbGVzKSB7CistCQkJCWludCBsaW5zaXplOworLQkJCQlhdl9mcmVlcCgmbV9jb252ZXJ0X2J1 ZmZlclswXSk7CistCQkJCW1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcyA9IHN0ZDo6bWF4KDEw MjQgKiA4LCBtX2ZyYW1lLT5uYl9zYW1wbGVzKTsKKy0JCQkJcmV0ID0gYXZfc2FtcGxlc19hbGxv YyhtX2NvbnZlcnRfYnVmZmVyLCAmbGluc2l6ZSwgbV9jb2RlY19jdHgtPmNoYW5uZWxzLCBtX2Nv bnZlcnRfYnVmZmVyX25iX3NhbXBsZXMsIEFWX1NBTVBMRV9GTVRfUzE2LCAxKTsKKy0JCQkJaWYg KHJldCA8IDApIHsKKy0JCQkJCVNldEVycm9yKCJDb3VsZG4ndCBhbGxvY2F0ZSBhdWRpbyBjb252 ZXJ0ZXIgYnVmZmVyIiwgcmV0KTsKKysJCWlmIChtX2ZyYW1lLT5uYl9zYW1wbGVzID4gMCkgewor KwkJCWlmIChtX2NvbnZlcnRlcikgeworKwkJCQlpZiAobV9mcmFtZS0+bmJfc2FtcGxlcyA+IG1f Y29udmVydF9idWZmZXJfbmJfc2FtcGxlcykgeworKwkJCQkJaW50IGxpbnNpemU7CisrCQkJCQlh dl9mcmVlcCgmbV9jb252ZXJ0X2J1ZmZlclswXSk7CisrCQkJCQltX2NvbnZlcnRfYnVmZmVyX25i X3NhbXBsZXMgPSBzdGQ6Om1heCgxMDI0ICogOCwgbV9mcmFtZS0+bmJfc2FtcGxlcyk7CisrCQkJ CQlyZXQgPSBhdl9zYW1wbGVzX2FsbG9jKG1fY29udmVydF9idWZmZXIsICZsaW5zaXplLCBtX2Nv ZGVjX2N0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzLCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBs ZXMsIEFWX1NBTVBMRV9GTVRfUzE2LCAxKTsKKysJCQkJCWlmIChyZXQgPCAwKSB7CisrCQkJCQkJ U2V0RXJyb3IoIkNvdWxkbid0IGFsbG9jYXRlIGF1ZGlvIGNvbnZlcnRlciBidWZmZXIiLCByZXQp OworKwkJCQkJCXJldHVybiBmYWxzZTsKKysJCQkJCX0KKysJCQkJfQorKwkJCQlhdXRvIG5iX3Nh bXBsZXMgPSBtX2NvbnZlcnRlci0+Q29udmVydChtX2NvbnZlcnRfYnVmZmVyLCBtX2NvbnZlcnRf YnVmZmVyX25iX3NhbXBsZXMsIChjb25zdCB1aW50OF90ICoqKSBtX2ZyYW1lLT5kYXRhLCBtX2Zy YW1lLT5uYl9zYW1wbGVzKTsKKysJCQkJaWYgKG5iX3NhbXBsZXMgPCAwKSB7CisrCQkJCQlTZXRF cnJvcigiQ291bGRuJ3QgY29udmVydCBhdWRpbyIsIHJldCk7CisgCQkJCQlyZXR1cm4gZmFsc2U7 CisgCQkJCX0KKy0JCQl9CistCQkJYXV0byBuYl9zYW1wbGVzID0gbV9jb252ZXJ0ZXItPkNvbnZl cnQobV9jb252ZXJ0X2J1ZmZlciwgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzLCAoY29uc3Qg dWludDhfdCAqKikgbV9mcmFtZS0+ZGF0YSwgbV9mcmFtZS0+bmJfc2FtcGxlcyk7CistCQkJaWYg KG5iX3NhbXBsZXMgPCAwKSB7CistCQkJCVNldEVycm9yKCJDb3VsZG4ndCBjb252ZXJ0IGF1ZGlv IiwgcmV0KTsKKy0JCQkJcmV0dXJuIGZhbHNlOworLQkJCX0KKy0JCQkqZGF0YSA9IChjb25zdCBp bnQxNl90ICopIG1fY29udmVydF9idWZmZXJbMF07CistCQkJKnNpemUgPSBuYl9zYW1wbGVzOwor LQkJfSBlbHNlIHsKKy0JCQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1fZnJhbWUtPmRhdGFb MF07CistCQkJKnNpemUgPSBtX2ZyYW1lLT5uYl9zYW1wbGVzOworLQkJfQorLQl9IGVsc2Ugewor LQkJaWYgKG1fZmluaXNoZWQgJiYgbV9jb252ZXJ0ZXIpIHsKKy0JCQlhdXRvIG5iX3NhbXBsZXMg PSBtX2NvbnZlcnRlci0+Rmx1c2gobV9jb252ZXJ0X2J1ZmZlciwgbV9jb252ZXJ0X2J1ZmZlcl9u Yl9zYW1wbGVzKTsKKy0JCQlpZiAobmJfc2FtcGxlcyA8IDApIHsKKy0JCQkJU2V0RXJyb3IoIkNv dWxkbid0IGNvbnZlcnQgYXVkaW8iLCByZXQpOworLQkJCQlyZXR1cm4gZmFsc2U7CistCQkJfSBl bHNlIGlmIChuYl9zYW1wbGVzID4gMCkgeworLQkJCQltX2dvdF9mcmFtZSA9IDE7CisgCQkJCSpk YXRhID0gKGNvbnN0IGludDE2X3QgKikgbV9jb252ZXJ0X2J1ZmZlclswXTsKKyAJCQkJKnNpemUg PSBuYl9zYW1wbGVzOworKwkJCX0gZWxzZSB7CisrCQkJCSpkYXRhID0gKGNvbnN0IGludDE2X3Qg KikgbV9mcmFtZS0+ZGF0YVswXTsKKysJCQkJKnNpemUgPSBtX2ZyYW1lLT5uYl9zYW1wbGVzOwor KwkJCX0KKysJCX0gZWxzZSB7CisrCQkJaWYgKG1fY29udmVydGVyKSB7CisrCQkJCWlmIChJc0Zp bmlzaGVkKCkpIHsKKysJCQkJCWF1dG8gbmJfc2FtcGxlcyA9IG1fY29udmVydGVyLT5GbHVzaCht X2NvbnZlcnRfYnVmZmVyLCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMpOworKwkJCQkJaWYg KG5iX3NhbXBsZXMgPCAwKSB7CisrCQkJCQkJU2V0RXJyb3IoIkNvdWxkbid0IGNvbnZlcnQgYXVk aW8iLCByZXQpOworKwkJCQkJCXJldHVybiBmYWxzZTsKKysJCQkJCX0gZWxzZSBpZiAobmJfc2Ft cGxlcyA+IDApIHsKKysJCQkJCQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1fY29udmVydF9i dWZmZXJbMF07CisrCQkJCQkJKnNpemUgPSBuYl9zYW1wbGVzOworKwkJCQkJfQorKwkJCQl9Cisg CQkJfQorIAkJfQorLQl9CisKKy0JcmV0dXJuIHRydWU7CisrCQlyZXR1cm4gdHJ1ZTsKKysJfQor IH0KKworIGlubGluZSB2b2lkIEZGbXBlZ0F1ZGlvUmVhZGVyOjpTZXRFcnJvcihjb25zdCBjaGFy ICptZXNzYWdlLCBpbnQgZXJybnVtKSB7CitkaWZmIC0tZ2l0IGEvdGVzdHMvQ01ha2VMaXN0cy50 eHQgYi90ZXN0cy9DTWFrZUxpc3RzLnR4dAoraW5kZXggYTJiNTE3Yi4uMTIzZTY0MyAxMDA2NDQK Ky0tLSBhL3Rlc3RzL0NNYWtlTGlzdHMudHh0CisrKysgYi90ZXN0cy9DTWFrZUxpc3RzLnR4dAor QEAgLTM4LDYgKzM4LDEyIEBAIHNldChTUkNTCisKKyBpZihCVUlMRF9UT09MUykKKyAJc2V0KFNS Q1MgJHtTUkNTfSAuLi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRlcl90ZXN0LmNwcCkKKysg ICAgaW5jbHVkZV9kaXJlY3RvcmllcygKKysgICAgICAgICR7RkZNUEVHX0xJQkFWRk9STUFUX0lO Q0xVREVfRElSU30KKysgICAgICAgICR7RkZNUEVHX0xJQkFWQ09ERUNfSU5DTFVERV9ESVJTfQor KyAgICAgICAgJHtGRk1QRUdfTElCQVZVVElMX0lOQ0xVREVfRElSU30KKysgICAgICAgICR7QVVE SU9fUFJPQ0VTU09SX0lOQ0xVREVfRElSU30KKysgICAgKQorIAlsaW5rX2xpYnJhcmllcyhmcGNh bGNfbGlicykKKyBlbmRpZigpCisKKy0tIAorMi4zOC4xCisKKwpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9jaHJvbWFwcmludC90ZW1wbGF0ZSBiL3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUKaW5k ZXggN2VmNzgzODk0OWYzYS4uMWY3YmJjNzBhMjJjOCAxMDA2NDQKLS0tIGEvc3JjcGtncy9jaHJv bWFwcmludC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Nocm9tYXByaW50L3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY2hyb21hcHJpbnQnCiBwa2duYW1lPWNo cm9tYXByaW50CiB2ZXJzaW9uPTEuNS4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9z dHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EQlVJTERfVE9PTFM9T04iCiBtYWtlX2NoZWNr X3RhcmdldD0iY2hlY2siCgpGcm9tIDFjOTM2N2I3Y2JjYjRhZTk0ZTI2ODUxNjFjOTM2NThmNTg3 MWI5MmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BB VENIIDAyNC8xMTVdIGNocm9taXVtOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIC4uLi9w YXRjaGVzL2Nocm9taXVtLTkzLWZmbXBlZy00LjQucGF0Y2ggICAgICB8IDM2IC0tLS0tLS0tLS0t LS0tCiBzcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCAgICAgICAgfCA0NyAr KysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2Nocm9taXVtL3RlbXBsYXRlICAgICAgICAgICAg ICAgICAgICAgfCAgMiArLQogMyBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAzNyBk ZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMv Y2hyb21pdW0tOTMtZmZtcGVnLTQuNC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv Y2hyb21pdW0vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJv bWl1bS9wYXRjaGVzL2Nocm9taXVtLTkzLWZmbXBlZy00LjQucGF0Y2ggYi9zcmNwa2dzL2Nocm9t aXVtL3BhdGNoZXMvY2hyb21pdW0tOTMtZmZtcGVnLTQuNC5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggZjBlYzczNmY5OGJjNy4uMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L2Nocm9taXVtL3BhdGNoZXMvY2hyb21pdW0tOTMtZmZtcGVnLTQuNC5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDM2ICswLDAgQEAKLWRpZmYgLS1naXQgYS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19k ZW11eGVyLmNjIGIvbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwotaW5kZXggYWM0NzEz YjA3MjY4Li40OTJhOWEzN2QwOTYgMTAwNjQ0Ci0tLS0gYS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19k ZW11eGVyLmNjCi0rKysgYi9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCi1AQCAtNDI3 LDExICs0MjcsMTEgQEAgdm9pZCBGRm1wZWdEZW11eGVyU3RyZWFtOjpFbnF1ZXVlUGFja2V0KFNj b3BlZEFWUGFja2V0IHBhY2tldCkgewotICAgc2NvcGVkX3JlZnB0cjxEZWNvZGVyQnVmZmVyPiBi dWZmZXI7Ci0gCi0gICBpZiAodHlwZSgpID09IERlbXV4ZXJTdHJlYW06OlRFWFQpIHsKLS0gICAg c2l6ZV90IGlkX3NpemUgPSAwOwotKyAgICBpbnQgaWRfc2l6ZSA9IDA7Ci0gICAgIHVpbnQ4X3Qq IGlkX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAgICAgIHBhY2tldC5nZXQo KSwgQVZfUEtUX0RBVEFfV0VCVlRUX0lERU5USUZJRVIsICZpZF9zaXplKTsKLSAKLS0gICAgc2l6 ZV90IHNldHRpbmdzX3NpemUgPSAwOwotKyAgICBpbnQgc2V0dGluZ3Nfc2l6ZSA9IDA7Ci0gICAg IHVpbnQ4X3QqIHNldHRpbmdzX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAg ICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfV0VCVlRUX1NFVFRJTkdTLCAmc2V0dGluZ3Nf c2l6ZSk7Ci0gCi1AQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgRkZtcGVnRGVtdXhlclN0cmVhbTo6 RW5xdWV1ZVBhY2tldChTY29wZWRBVlBhY2tldCBwYWNrZXQpIHsKLSAgICAgYnVmZmVyID0gRGVj b2RlckJ1ZmZlcjo6Q29weUZyb20ocGFja2V0LT5kYXRhLCBwYWNrZXQtPnNpemUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVfZGF0YS5kYXRhKCksIHNpZGVfZGF0 YS5zaXplKCkpOwotICAgfSBlbHNlIHsKLS0gICAgc2l6ZV90IHNpZGVfZGF0YV9zaXplID0gMDsK LSsgICAgaW50IHNpZGVfZGF0YV9zaXplID0gMDsKLSAgICAgdWludDhfdCogc2lkZV9kYXRhID0g YXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCi0gICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9E QVRBX01BVFJPU0tBX0JMT0NLQURESVRJT05BTCwgJnNpZGVfZGF0YV9zaXplKTsKLSAKLUBAIC01 MDQsNyArNTA0LDcgQEAgdm9pZCBGRm1wZWdEZW11eGVyU3RyZWFtOjpFbnF1ZXVlUGFja2V0KFNj b3BlZEFWUGFja2V0IHBhY2tldCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBhY2tldC0+c2l6ZSAtIGRhdGFfb2Zmc2V0KTsKLSAgICAgfQotIAotLSAgICBzaXpl X3Qgc2tpcF9zYW1wbGVzX3NpemUgPSAwOwotKyAgICBpbnQgc2tpcF9zYW1wbGVzX3NpemUgPSAw OwotICAgICBjb25zdCB1aW50MzJfdCogc2tpcF9zYW1wbGVzX3B0ciA9Ci0gICAgICAgICByZWlu dGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCi0g ICAgICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9TS0lQX1NBTVBMRVMsICZza2lw X3NhbXBsZXNfc2l6ZSkpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2Zm bXBlZzUucGF0Y2ggYi9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4yNGUyZGEzOGUzNGNhCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAg LTAsMCArMSw0NyBAQAorLS0tIGEvbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwkyMDIz LTAxLTIzIDE3OjMzOjU3LjM2NjIxMzgwNSArMDIwMAorKysrIGIvbWVkaWEvZmlsdGVycy9mZm1w ZWdfZGVtdXhlci5jYwkyMDIzLTAxLTIzIDE3OjQzOjA5LjI4MzQzNjk4MyArMDIwMAorQEAgLTky LDI0ICs5MiwxMiBAQAorIAorIHN0YXRpYyBiYXNlOjpUaW1lRGVsdGEgRXh0cmFjdFN0YXJ0VGlt ZShBVlN0cmVhbSogc3RyZWFtKSB7CisgICAvLyBUaGUgZGVmYXVsdCBzdGFydCB0aW1lIGlzIHpl cm8uCistICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGltZTsKKysgIGJhc2U6OlRpbWVEZWx0YSBz dGFydF90aW1lID0ga05vVGltZXN0YW1wOworIAorICAgLy8gRmlyc3QgdHJ5IHRvIHVzZSAgdGhl IHxzdGFydF90aW1lfCB2YWx1ZSBhcyBpcy4KKy0gIGlmIChzdHJlYW0tPnN0YXJ0X3RpbWUgIT0g a05vRkZtcGVnVGltZXN0YW1wKQorKyAgaWYgKHN0cmVhbS0+c3RhcnRfdGltZSAhPSBrTm9GRm1w ZWdUaW1lc3RhbXApIC8vIEFWX05PUFRTX1ZBTFVFCisgICAgIHN0YXJ0X3RpbWUgPSBDb252ZXJ0 RnJvbVRpbWVCYXNlKHN0cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0tPnN0YXJ0X3RpbWUpOworIAor LSAgLy8gTmV4dCB0cnkgdG8gdXNlIHRoZSBmaXJzdCBEVFMgdmFsdWUsIGZvciBjb2RlY3Mgd2hl cmUgd2Uga25vdyBQVFMgPT0gRFRTCistICAvLyAoZXhjbHVkZXMgYWxsIEgyNnggY29kZWNzKS4g VGhlIHN0YXJ0IHRpbWUgbXVzdCBiZSByZXR1cm5lZCBpbiBQVFMuCistICBpZiAoYXZfc3RyZWFt X2dldF9maXJzdF9kdHMoc3RyZWFtKSAhPSBrTm9GRm1wZWdUaW1lc3RhbXAgJiYKKy0gICAgICBz dHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IRVZDICYmCistICAgICAg c3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSDI2NCAmJgorLSAgICAg IHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX01QRUc0KSB7CistICAg IGNvbnN0IGJhc2U6OlRpbWVEZWx0YSBmaXJzdF9wdHMgPQorLSAgICAgICAgQ29udmVydEZyb21U aW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgYXZfc3RyZWFtX2dldF9maXJzdF9kdHMoc3RyZWFt KSk7CistICAgIGlmIChmaXJzdF9wdHMgPCBzdGFydF90aW1lKQorLSAgICAgIHN0YXJ0X3RpbWUg PSBmaXJzdF9wdHM7CistICB9CistCisgICByZXR1cm4gc3RhcnRfdGltZTsKKyB9CisgCitAQCAt MTU5Nyw3ICsxNTg1LDcgQEAKKyAgIGZvciAoY29uc3QgYXV0byYgc3RyZWFtIDogc3RyZWFtc18p IHsKKyAgICAgaWYgKCFzdHJlYW0gfHwgc3RyZWFtLT5Jc0VuYWJsZWQoKSAhPSBlbmFibGVkKQor ICAgICAgIGNvbnRpbnVlOworLSAgICBpZiAoYXZfc3RyZWFtX2dldF9maXJzdF9kdHMoc3RyZWFt LT5hdl9zdHJlYW0oKSkgPT0ga0ludmFsaWRQVFNNYXJrZXIpCisrICAgIGlmIChzdHJlYW0tPmF2 X3N0cmVhbSgpLT5zdGFydF90aW1lID09IEFWX05PUFRTX1ZBTFVFKQorICAgICAgIGNvbnRpbnVl OworICAgICBpZiAoIWxvd2VzdF9zdGFydF90aW1lX3N0cmVhbSB8fAorICAgICAgICAgc3RyZWFt LT5zdGFydF90aW1lKCkgPCBsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0tPnN0YXJ0X3RpbWUoKSkg eworQEAgLTE2MTgsNyArMTYwNiw3IEBACisgICAgIGlmIChzdHJlYW0tPnR5cGUoKSAhPSBEZW11 eGVyU3RyZWFtOjpWSURFTykKKyAgICAgICBjb250aW51ZTsKKyAKKy0gICAgaWYgKGF2X3N0cmVh bV9nZXRfZmlyc3RfZHRzKHN0cmVhbS0+YXZfc3RyZWFtKCkpID09IGtJbnZhbGlkUFRTTWFya2Vy KQorKyAgICBpZiAoc3RyZWFtLT5hdl9zdHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19W QUxVRSkKKyAgICAgICBjb250aW51ZTsKKyAKKyAgICAgaWYgKCFzdHJlYW0tPklzRW5hYmxlZCgp KQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZSBiL3NyY3BrZ3MvY2hyb21p dW0vdGVtcGxhdGUKaW5kZXggZGE5NjZmNTMwMzc5Ni4uOWRjN2QxMjg3MWMyZCAxMDA2NDQKLS0t IGEvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Nocm9taXVtL3RlbXBs YXRlCkBAIC0yLDcgKzIsNyBAQAogcGtnbmFtZT1jaHJvbWl1bQogIyBTZWUgaHR0cHM6Ly9jaHJv bWl1bWRhc2guYXBwc3BvdC5jb20vcmVsZWFzZXM/cGxhdGZvcm09TGludXggZm9yIHRoZSBsYXRl c3QgdmVyc2lvbgogdmVyc2lvbj0xMTUuMC41NzkwLjk4Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBhcmNocz0iaTY4NiogeDg2XzY0KiBhYXJjaDY0KiBhcm12N2wqIgogaG9zdG1ha2VkZXBlbmRz PSIKICAkKHZvcHRfaWYgY2xhbmcgImNsYW5nIGxsZCBsbHZtMTUiKQoKRnJvbSA0YzNhMTI2Njk2 MDljNjE5OWEzZTJjNzI4OTg0MTVlNWI0MThkMTlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjUvMTE1XSBjbXVzOiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2ggfCAxMiAr KysrKysrKysrKysKIHNyY3BrZ3MvY211cy90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgMiArLQog MiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaAoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2ggYi9zcmNwa2dzL2NtdXMvcGF0 Y2hlcy9mZm1wZWc2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MDAuLmZmYTk1YWI4MTExMDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2NtdXMvcGF0Y2hl cy9mZm1wZWc2LnBhdGNoCkBAIC0wLDAgKzEsMTIgQEAKKy0tLSBhL2lwL2ZmbXBlZy5jCisrKysg Yi9pcC9mZm1wZWcuYworQEAgLTIwMiw5ICsyMDIsNiBAQCBzdGF0aWMgaW50IGZmbXBlZ19vcGVu KHN0cnVjdCBpbnB1dF9wbHVnaW5fZGF0YSAqaXBfZGF0YSkKKyAJCQlicmVhazsKKyAJCX0KKyAK Ky0JCWlmIChjb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX1RSVU5DQVRFRCkKKy0J CQljYy0+ZmxhZ3MgfD0gQVZfQ09ERUNfRkxBR19UUlVOQ0FURUQ7CistCisgCQlpZiAoYXZjb2Rl Y19vcGVuMihjYywgY29kZWMsIE5VTEwpIDwgMCkgeworIAkJCWRfcHJpbnQoImNvdWxkIG5vdCBv cGVuIGNvZGVjOiAlZCwgJXNcbiIsIGNjLT5jb2RlY19pZCwgYXZjb2RlY19nZXRfbmFtZShjYy0+ Y29kZWNfaWQpKTsKKyAJCQllcnIgPSAtSVBfRVJST1JfVU5TVVBQT1JURURfRklMRV9UWVBFOwpk aWZmIC0tZ2l0IGEvc3JjcGtncy9jbXVzL3RlbXBsYXRlIGIvc3JjcGtncy9jbXVzL3RlbXBsYXRl CmluZGV4IDBmZGNlYzQ2MWMyMTcuLjZjMDdlMjVlNmQ3MjcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv Y211cy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NtdXMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjbXVzJwogcGtnbmFtZT1jbXVzCiB2ZXJzaW9uPTIuMTAu MAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y29uZmlndXJlCiBjb25maWd1 cmVfYXJncz0icHJlZml4PS91c3IgTEQ9JENDIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IgoKRnJvbSBkOWRkODEzNjdhMDdkMDZlZmZiMmMxM2EzYWQzNDQxMGE3ZDIzYWQwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjYvMTE1XSBj eWFucmlwOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvY3lhbnJpcC90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvY3lhbnJp cC90ZW1wbGF0ZQppbmRleCA5Nzk2ZTM0NjE2MDFhLi41ZGIzMGUwMjBkMTdlIDEwMDY0NAotLS0g YS9zcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jeWFucmlwL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY3lhbnJpcCcKIHBrZ25hbWU9 Y3lhbnJpcAogdmVyc2lvbj0wLjkuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJmZm1w ZWctZGV2ZWwgbGliY2Rpby1kZXZlbCBsaWJjZGlvLXBhcmFub2lhLWRldmVsIGxpYmN1cmwtZGV2 ZWwgbGlibXVzaWNicmFpbno1LWRldmVsIgoKRnJvbSA5NzAzNjJhODEyNjFkNTNjNTM4MGM4ZWI4 MzRhZDJhYmY5MTc5NjllIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwMjcvMTE1XSBkZWFkYmVlZjogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQu MwoKLS0tCiBzcmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdl ZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv ZGVhZGJlZWYvdGVtcGxhdGUgYi9zcmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlCmluZGV4IGI2NjRi YjFiOWJkOWYuLjE2NWIzYzdiOWNhZDggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZGVhZGJlZWYvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0ZQpAQCAtMSwxNCArMSwxNCBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnZGVhZGJlZWYnCiBwa2duYW1lPWRlYWRiZWVmCiB2ZXJzaW9u PTEuOC44Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRf c3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1vc3MgLS1kaXNh YmxlLWxmbSAtLWRpc2FibGUtbm90aWZ5IC0tZGlzYWJsZS1ndGsyIgogaG9zdG1ha2VkZXBlbmRz PSJhdXRvbWFrZSBsaWJ0b29sIGdldHRleHQgZ2V0dGV4dC1kZXZlbCBpbnRsdG9vbCBwa2ctY29u ZmlnCiAgeWFzbSBjbGFuZyBnbGliLWRldmVsIgogbWFrZWRlcGVuZHM9IgotIGFsc2EtbGliLWRl dmVsIGRidXMtZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnLWRldmVsIGd0ayszLWRldmVsIGltbGli Mi1kZXZlbAorIGFsc2EtbGliLWRldmVsIGRidXMtZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnNC1k ZXZlbCBndGsrMy1kZXZlbCBpbWxpYjItZGV2ZWwKICBqYW5zc29uLWRldmVsIGxpYmNkZGItZGV2 ZWwgbGliY2Rpby1kZXZlbCBsaWJjdXJsLWRldmVsIGxpYmZsYWMtZGV2ZWwKICBsaWJtYWQtZGV2 ZWwgbGlicG5nLWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwgbGlic25kZmlsZS1kZXZlbCBsaWJ2 b3JiaXMtZGV2ZWwKICBsaWJ6aXAtZGV2ZWwgbXBnMTIzLWRldmVsIG9wdXNmaWxlLWRldmVsIHB1 bHNlYXVkaW8tZGV2ZWwgd2F2cGFjay1kZXZlbCIKCkZyb20gYTZkNmQ4ODEzYjZhYzM3YTE3OGVi NWZjNGNlM2YxMWE1N2FhODUyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDI4LzExNV0gZG9scGhpbi1lbXU6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9kb2xwaGluLWVtdS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZG9scGhpbi1lbXUvdGVtcGxhdGUgYi9zcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlCmlu ZGV4IGI0YzhiNjQzNjhhNGIuLjA3MDk5M2FhYzMxZDIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZG9s cGhpbi1lbXUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kb2xwaGluLWVtdS90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2RvbHBoaW4tZW11JwogcGtnbmFtZT1k b2xwaGluLWVtdQogdmVyc2lvbj01LjAuMTkzNjgKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIF9k b2xwaGluX2NvbW1pdD1kYWRiZWI0YmFlN2U3ZmEyM2FmMmI0NmUwYWRkNDE0MzA5NGRjMTA3CiBf bWdiYV9jb21taXQ9NDRlMDc0YTE1ZTk2NTE0ODFmN2Y2NTJhYzAwNmE3YzlkNThjYmViOQogX2dv b2dsZXRlc3RfY29tbWl0PWJlMDNkMDBmNWYwY2MzYTk5N2QxYTM2OGJlZThhMWZlOTM2NTFmNDgK CkZyb20gOTkzMjQyMzVhNzAwMWEzYmEzNjhlMjExNjcxMjJmYjE2ZmRjYjU2MiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI5LzExNV0gZHJv aWRjYW0tb2JzLXBsdWdpbjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Ry b2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Ryb2lkY2FtLW9i cy1wbHVnaW4vdGVtcGxhdGUgYi9zcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUK aW5kZXggZmM5YzliZjZiOWQ1NC4uZmIwNDgwNzU0ZGY0ZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9k cm9pZGNhbS1vYnMtcGx1Z2luL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZHJvaWRjYW0tb2JzLXBs dWdpbi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Ryb2lk Y2FtLW9icy1wbHVnaW4nCiBwa2duYW1lPWRyb2lkY2FtLW9icy1wbHVnaW4KIHZlcnNpb249Mi4w LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogbWFr ZV91c2VfZW52PXllcwogbWFrZV9idWlsZF9hcmdzPSJBTExPV19TVEFUSUM9bm8iCgpGcm9tIDBh MTE0MzNkOTU5NTdkZmQ5ZDdlOGJmNzhlNGZhNzY5OWNmYzBiYzggTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzMC8xMTVdIGRyb2lkY2FtOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2Ryb2lkY2FtL3RlbXBsYXRlIGIvc3JjcGtncy9kcm9pZGNhbS90ZW1w bGF0ZQppbmRleCAxYzNmMWI4YjFmYzY3Li4zMmE5MjIwYjc5YTRkIDEwMDY0NAotLS0gYS9zcmNw a2dzL2Ryb2lkY2FtL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdkcm9pZGNhbScKIHBrZ25hbWU9ZHJv aWRjYW0KIHZlcnNpb249MS44LjIKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxl PWdudS1tYWtlZmlsZQogbWFrZV9idWlsZF9hcmdzPSJVU0JNVVhEPS1sdXNibXV4ZC0yLjAgSlBF Rz0tbHR1cmJvanBlZyIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gZGU3ZTll NzMwYTM3ODk5OWYxMDc4YzU5NzI2ZWU2OGRmYjNlMTgxYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDMxLzExNV0gZmZtcGVndGh1bWJuYWls ZXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL2ZmbXBlZ3RodW1ibmFpbGVyL3Bh dGNoZXMvZmZtcGVnNi5wYXRjaCAgIHwgMjAyICsrKysrKysrKysrKysrKysrKwogc3JjcGtncy9m Zm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZSAgICAgICAgICAgIHwgICA2ICstCiAyIGZpbGVzIGNo YW5nZWQsIDIwNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gg Yi9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4zNjNmZjM1YTI4NDE5Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0 Y2gKQEAgLTAsMCArMSwyMDIgQEAKKy0tLSBhL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21vdmllZGVj b2Rlci5jcHAJMjAxNy0xMS0yMSAxNDowNjo1Ny4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL2xpYmZm bXBlZ3RodW1ibmFpbGVyL21vdmllZGVjb2Rlci5jcHAJMjAyMy0wNS0wNSAxMzoxNDo0Ny45NDY1 NjA2NjggLTA0MDAKK0BAIC00MSwxMSArNDEsNiBAQAorIG5hbWVzcGFjZSBmZm1wZWd0aHVtYm5h aWxlcgorIHsKKyAKKy1zdHJ1Y3QgU2lsZW5jZUxvZ0xldmVsCisteworLSAgICBTaWxlbmNlTG9n TGV2ZWwoKSB7IGF2X2xvZ19zZXRfbGV2ZWwoQVZfTE9HX1FVSUVUKTsgfQorLX07CistCisgTW92 aWVEZWNvZGVyOjpNb3ZpZURlY29kZXIoQVZGb3JtYXRDb250ZXh0KiBwYXZDb250ZXh0KQorIDog bV9WaWRlb1N0cmVhbSgtMSkKKyAsIG1fcEZvcm1hdENvbnRleHQocGF2Q29udGV4dCkKK0BAIC03 MCw4ICs2NSw2IEBACisgCisgdm9pZCBNb3ZpZURlY29kZXI6OmluaXRpYWxpemUoY29uc3Qgc3Ry aW5nJiBmaWxlbmFtZSwgYm9vbCBwcmVmZXJFbWJlZGRlZE1ldGFkYXRhKQorIHsKKy0gICAgYXZf cmVnaXN0ZXJfYWxsKCk7CistICAgIGF2Y29kZWNfcmVnaXN0ZXJfYWxsKCk7CisgICAgIGF2Zm9y bWF0X25ldHdvcmtfaW5pdCgpOworIAorICAgICBzdHJpbmcgaW5wdXRGaWxlID0gZmlsZW5hbWUg PT0gIi0iID8gInBpcGU6IiA6IGZpbGVuYW1lOworQEAgLTk3LDggKzkwLDcgQEAKKyB7CisgICAg IGlmIChtX3BWaWRlb0NvZGVjQ29udGV4dCkKKyAgICAgeworLSAgICAgICAgYXZjb2RlY19jbG9z ZShtX3BWaWRlb0NvZGVjQ29udGV4dCk7CistICAgICAgICBtX3BWaWRlb0NvZGVjQ29udGV4dCA9 IG51bGxwdHI7CisrICAgICAgICBhdmNvZGVjX2ZyZWVfY29udGV4dCgmbV9wVmlkZW9Db2RlY0Nv bnRleHQpOworICAgICB9CisgCisgICAgIGlmICgoIW1fRm9ybWF0Q29udGV4dFdhc0dpdmVuKSAm JiBtX3BGb3JtYXRDb250ZXh0KQorQEAgLTE1MiwxMCArMTQ0LDEwIEBACisgICAgIGZvciAodW5z aWduZWQgaW50IGkgPSAwOyBpIDwgbV9wRm9ybWF0Q29udGV4dC0+bmJfc3RyZWFtczsgKytpKQor ICAgICB7CisgICAgICAgICBBVlN0cmVhbSAqc3RyZWFtID0gbV9wRm9ybWF0Q29udGV4dC0+c3Ry ZWFtc1tpXTsKKy0gICAgICAgIGF1dG8gY3R4ID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tp XS0+Y29kZWM7CistICAgICAgICBpZiAoY3R4LT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9W SURFTykKKysgICAgICAgIGF1dG8gcGFyID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+ Y29kZWNwYXI7CisrICAgICAgICBpZiAocGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9W SURFTykKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBpZiAoIXByZWZlckVtYmVkZGVkTWV0YWRh dGEgfHwgIWlzU3RpbGxJbWFnZUNvZGVjKGN0eC0+Y29kZWNfaWQpKQorKyAgICAgICAgICAgIGlm ICghcHJlZmVyRW1iZWRkZWRNZXRhZGF0YSB8fCAhaXNTdGlsbEltYWdlQ29kZWMocGFyLT5jb2Rl Y19pZCkpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICB2aWRlb1N0cmVhbXMucHVz aF9iYWNrKGkpOworICAgICAgICAgICAgICAgICBjb250aW51ZTsKK0BAIC0yMDMsOCArMTk1LDcg QEAKKyAgICAgfQorIAorICAgICBtX3BWaWRlb1N0cmVhbSA9IG1fcEZvcm1hdENvbnRleHQtPnN0 cmVhbXNbbV9WaWRlb1N0cmVhbV07CistICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0ID0gbV9wVmlk ZW9TdHJlYW0tPmNvZGVjOworLSAgICBtX3BWaWRlb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29k ZXIobV9wVmlkZW9Db2RlY0NvbnRleHQtPmNvZGVjX2lkKTsKKysgICAgbV9wVmlkZW9Db2RlYyA9 IGF2Y29kZWNfZmluZF9kZWNvZGVyKG1fcFZpZGVvU3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQp OworIAorICAgICBpZiAobV9wVmlkZW9Db2RlYyA9PSBudWxscHRyKQorICAgICB7CitAQCAtMjE0 LDYgKzIwNSwyMCBAQAorICAgICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIlZpZGVvIENvZGVjIG5v dCBmb3VuZCIpOworICAgICB9CisgCisrICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0ID0gYXZjb2Rl Y19hbGxvY19jb250ZXh0MyhtX3BWaWRlb0NvZGVjKTsKKysKKysgICAgaWYgKG1fcFZpZGVvQ29k ZWNDb250ZXh0ID09IG51bGxwdHIpCisrICAgIHsKKysgICAgICAgIGRlc3Ryb3koKTsKKysgICAg ICAgIHRocm93IGxvZ2ljX2Vycm9yKCJDb3VsZCBub3QgYWxsb2NhdGUgdmlkZW8gY29kZWMgY29u dGV4dCIpOworKyAgICB9CisrCisrICAgIGlmIChhdmNvZGVjX3BhcmFtZXRlcnNfdG9fY29udGV4 dChtX3BWaWRlb0NvZGVjQ29udGV4dCwgbV9wVmlkZW9TdHJlYW0tPmNvZGVjcGFyKSA8IDApCisr ICAgIHsKKysgICAgICAgIGRlc3Ryb3koKTsKKysgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJD b3VsZCBub3QgY29uZmlndXJlIHZpZGVvIGNvZGVjIGNvbnRleHQiKTsKKysgICAgfQorKworICAg ICBtX3BWaWRlb0NvZGVjQ29udGV4dC0+d29ya2Fyb3VuZF9idWdzID0gMTsKKyAKKyAgICAgaWYg KGF2Y29kZWNfb3BlbjIobV9wVmlkZW9Db2RlY0NvbnRleHQsIG1fcFZpZGVvQ29kZWMsIG51bGxw dHIpIDwgMCkKK0BAIC0zODYsMTMgKzM5MSw2IEBACisgCisgdm9pZCBNb3ZpZURlY29kZXI6Omlu aXRpYWxpemVGaWx0ZXJHcmFwaChjb25zdCBBVlJhdGlvbmFsJiB0aW1lQmFzZSwgY29uc3Qgc3Rk OjpzdHJpbmcmIHNpemUsIGJvb2wgbWFpbnRhaW5Bc3BlY3RSYXRpbykKKyB7CistICAgIHN0YXRp YyBjb25zdCBBVlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0c1tdID0geyBBVl9QSVhfRk1UX1JHQjI0 LCBBVl9QSVhfRk1UX05PTkUgfTsKKy0KKy0gICAgYXV0byBkZWwgPSBbXSAoQVZCdWZmZXJTaW5r UGFyYW1zKiBwKSB7IGF2X2ZyZWVwKHApOyB9OworLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVZCdWZm ZXJTaW5rUGFyYW1zLCBkZWNsdHlwZShkZWwpPiBidWZmZXJzaW5rUGFyYW1zKGF2X2J1ZmZlcnNp bmtfcGFyYW1zX2FsbG9jKCksIGRlbCk7CistCistICAgIGF2ZmlsdGVyX3JlZ2lzdGVyX2FsbCgp OworLQorICAgICBtX3BGaWx0ZXJHcmFwaCA9IGF2ZmlsdGVyX2dyYXBoX2FsbG9jKCk7CisgICAg IGFzc2VydChtX3BGaWx0ZXJHcmFwaCk7CisgCitAQCAtNDA0LDEwICs0MDIsOCBAQAorIAorICAg ICBjaGVja1JjKGF2ZmlsdGVyX2dyYXBoX2NyZWF0ZV9maWx0ZXIoJm1fcEZpbHRlclNvdXJjZSwg YXZmaWx0ZXJfZ2V0X2J5X25hbWUoImJ1ZmZlciIpLCAidGh1bWJfYnVmZmVyIiwgc3Muc3RyKCku Y19zdHIoKSwgbnVsbHB0ciwgbV9wRmlsdGVyR3JhcGgpLAorICAgICAgICAgICAgICJGYWlsZWQg dG8gY3JlYXRlIGZpbHRlciBzb3VyY2UiKTsKKy0gICAgYnVmZmVyc2lua1BhcmFtcy0+cGl4ZWxf Zm10cyA9IHBpeGVsRm9ybWF0czsKKy0gICAgY2hlY2tSYyhhdmZpbHRlcl9ncmFwaF9jcmVhdGVf ZmlsdGVyKCZtX3BGaWx0ZXJTaW5rLCBhdmZpbHRlcl9nZXRfYnlfbmFtZSgiYnVmZmVyc2luayIp LCAidGh1bWJfYnVmZmVyc2luayIsIG51bGxwdHIsIGJ1ZmZlcnNpbmtQYXJhbXMuZ2V0KCksIG1f cEZpbHRlckdyYXBoKSwKKysgICAgY2hlY2tSYyhhdmZpbHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVy KCZtX3BGaWx0ZXJTaW5rLCBhdmZpbHRlcl9nZXRfYnlfbmFtZSgiYnVmZmVyc2luayIpLCAidGh1 bWJfYnVmZmVyc2luayIsIG51bGxwdHIsIG51bGxwdHIsIG1fcEZpbHRlckdyYXBoKSwKKyAgICAg ICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBmaWx0ZXIgc2luayIpOworLSAgICBidWZmZXJzaW5r UGFyYW1zLnJlbGVhc2UoKTsKKyAKKyAgICAgQVZGaWx0ZXJDb250ZXh0KiB5YWRpZkZpbHRlciA9 IG51bGxwdHI7CisgICAgIGlmIChtX3BGcmFtZS0+aW50ZXJsYWNlZF9mcmFtZSAhPSAwKQorQEAg LTUwMCwxNSArNDk2LDE1IEBACisgICAgIH0KKyAKKyAgICAgY2hlY2tSYyhhdl9zZWVrX2ZyYW1l KG1fcEZvcm1hdENvbnRleHQsIC0xLCB0aW1lc3RhbXAsIDApLCAiU2Vla2luZyBpbiB2aWRlbyBm YWlsZWQiKTsKKy0gICAgYXZjb2RlY19mbHVzaF9idWZmZXJzKG1fcEZvcm1hdENvbnRleHQtPnN0 cmVhbXNbbV9WaWRlb1N0cmVhbV0tPmNvZGVjKTsKKysgICAgYXZjb2RlY19mbHVzaF9idWZmZXJz KG1fcFZpZGVvQ29kZWNDb250ZXh0KTsKKyAKKyAgICAgaW50IGtleUZyYW1lQXR0ZW1wdHMgPSAw OworLSAgICBib29sIGdvdEZyYW1lID0gMDsKKysgICAgYm9vbCBnb3RGcmFtZTsKKyAKKyAgICAg ZG8KKyAgICAgeworICAgICAgICAgaW50IGNvdW50ID0gMDsKKy0gICAgICAgIGdvdEZyYW1lID0g MDsKKysgICAgICAgIGdvdEZyYW1lID0gZmFsc2U7CisgCisgICAgICAgICB3aGlsZSAoIWdvdEZy YW1lICYmIGNvdW50IDwgMjApCisgICAgICAgICB7CitAQCAtNTUyLDE3ICs1NDgsMzMgQEAKKyAg ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorIAorLSAgICBhdl9mcmFtZV91bnJlZihtX3BG cmFtZSk7CistCistICAgIGludCBmcmFtZUZpbmlzaGVkOworKyAgICBpbnQgcmMgPSBhdmNvZGVj X3NlbmRfcGFja2V0KG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BQYWNrZXQpOworKyAgICBpZihy YyA9PSBBVkVSUk9SKEVBR0FJTikpCisrICAgIHsKKysgICAgICAgIHJjID0gMDsKKysgICAgfQor IAorLSAgICBpbnQgYnl0ZXNEZWNvZGVkID0gYXZjb2RlY19kZWNvZGVfdmlkZW8yKG1fcFZpZGVv Q29kZWNDb250ZXh0LCBtX3BGcmFtZSwgJmZyYW1lRmluaXNoZWQsIG1fcFBhY2tldCk7CistICAg IGlmIChieXRlc0RlY29kZWQgPCAwKQorKyAgICBpZihyYyA9PSBBVkVSUk9SX0VPRikKKysgICAg eworKyAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisrICAgIGVsc2UgaWYocmMgPCAwKQor ICAgICB7CistICAgICAgICB0aHJvdyBsb2dpY19lcnJvcigiRmFpbGVkIHRvIGRlY29kZSB2aWRl byBmcmFtZTogYnl0ZXNEZWNvZGVkIDwgMCIpOworKyAgICAgICAgdGhyb3cgbG9naWNfZXJyb3Io IkZhaWxlZCB0byBkZWNvZGUgdmlkZW8gZnJhbWU6IGF2Y29kZWNfc2VuZF9wYWNrZXQoKSA8IDAi KTsKKyAgICAgfQorIAorLSAgICByZXR1cm4gZnJhbWVGaW5pc2hlZCA+IDA7CisrICAgIHJjID0g YXZjb2RlY19yZWNlaXZlX2ZyYW1lKG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BGcmFtZSk7Cisr ICAgIHN3aXRjaChyYykKKysgICAgeworKyAgICAgICAgY2FzZSAwOgorKyAgICAgICAgICAgIHJl dHVybiB0cnVlOworKworKyAgICAgICAgY2FzZSBBVkVSUk9SKEVBR0FJTik6CisrICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworKworKyAgICAgICAgZGVmYXVsdDoKKysgICAgICAgICAgICB0aHJv dyBsb2dpY19lcnJvcigiRmFpbGVkIHRvIGRlY29kZSB2aWRlbyBmcmFtZTogYXZjb2RlY19yZWNl aXZlX2ZyYW1lKCkgPCAwIik7CisrICAgIH0KKyB9CisgCisgYm9vbCBNb3ZpZURlY29kZXI6Omdl dFZpZGVvUGFja2V0KCkKK0BAIC01NzAsOCArNTgyLDYgQEAKKyAgICAgYm9vbCBmcmFtZXNBdmFp bGFibGUgPSB0cnVlOworICAgICBib29sIGZyYW1lRGVjb2RlZCA9IGZhbHNlOworIAorLSAgICBp bnQgYXR0ZW1wdHMgPSAwOworLQorICAgICBpZiAobV9wUGFja2V0KQorICAgICB7CisgICAgICAg ICBhdl9wYWNrZXRfdW5yZWYobV9wUGFja2V0KTsKK0BAIC01ODAsNiArNTkwLDcgQEAKKyAKKyAg ICAgbV9wUGFja2V0ID0gbmV3IEFWUGFja2V0KCk7CisgCisrCisgICAgIHdoaWxlIChmcmFtZXNB dmFpbGFibGUgJiYgIWZyYW1lRGVjb2RlZCkKKyAgICAgeworICAgICAgICAgZnJhbWVzQXZhaWxh YmxlID0gYXZfcmVhZF9mcmFtZShtX3BGb3JtYXRDb250ZXh0LCBtX3BQYWNrZXQpID49IDA7CitA QCAtNjQ0LDcgKzY1NSw3IEBACisgCisgaW50MzJfdCBNb3ZpZURlY29kZXI6OmdldFN0cmVhbVJv dGF0aW9uKCkKKyB7CistICAgIGludDMyX3QqIG1hdHJpeCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50 MzJfdCo+KGF2X3N0cmVhbV9nZXRfc2lkZV9kYXRhKG1fcFZpZGVvU3RyZWFtLCBBVl9QS1RfREFU QV9ESVNQTEFZTUFUUklYLCBudWxscHRyKSk7CisrICAgIGF1dG8gbWF0cml4ID0gcmVpbnRlcnBy ZXRfY2FzdDxpbnQzMl90Kj4oYXZfc3RyZWFtX2dldF9zaWRlX2RhdGEobV9wVmlkZW9TdHJlYW0s IEFWX1BLVF9EQVRBX0RJU1BMQVlNQVRSSVgsIG51bGxwdHIpKTsKKyAgICAgaWYgKG1hdHJpeCkK KyAgICAgeworICAgICAgICAgYXV0byBhbmdsZSA9IGxyb3VuZChhdl9kaXNwbGF5X3JvdGF0aW9u X2dldChtYXRyaXgpKTsKKworLS0tIGEvbGliZmZtcGVndGh1bWJuYWlsZXIvbW92aWVkZWNvZGVy LmgJMjAxNy0xMS0xMiAwNDoyMzozOC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL2xpYmZmbXBlZ3Ro dW1ibmFpbGVyL21vdmllZGVjb2Rlci5oCTIwMjMtMDUtMDUgMTM6MjY6MDcuMDk1NTI5OTExIC0w NDAwCitAQCAtNzgsNyArNzgsNyBAQAorICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBtX1Zp ZGVvU3RyZWFtOw0KKyAgICAgQVZGb3JtYXRDb250ZXh0KiAgICAgICAgbV9wRm9ybWF0Q29udGV4 dDsNCisgICAgIEFWQ29kZWNDb250ZXh0KiAgICAgICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0Ow0K Ky0gICAgQVZDb2RlYyogICAgICAgICAgICAgICAgbV9wVmlkZW9Db2RlYzsNCisrICAgIGNvbnN0 IEFWQ29kZWMqICAgICAgICAgIG1fcFZpZGVvQ29kZWM7DQorICAgICBBVkZpbHRlckdyYXBoKiAg ICAgICAgICBtX3BGaWx0ZXJHcmFwaDsNCisgICAgIEFWRmlsdGVyQ29udGV4dCogICAgICAgIG1f cEZpbHRlclNvdXJjZTsNCisgICAgIEFWRmlsdGVyQ29udGV4dCogICAgICAgIG1fcEZpbHRlclNp bms7DQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvdGVtcGxhdGUKaW5kZXggMDM5ZWVhNzYyMmIzOS4uMzVk NTQ2MDE4ZDEyYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZmZtcGVndGh1bWJuYWlsZXInCiBwa2duYW1lPWZmbXBl Z3RodW1ibmFpbGVyCiB2ZXJzaW9uPTIuMi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWls ZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9 ImxpYnBuZy1kZXZlbCBsaWJqcGVnLXR1cmJvLWRldmVsIGZmbXBlZy1kZXZlbCIKQEAgLTksOCAr OSw4IEBAIGRlcGVuZHM9ImZmbXBlZyIKIHNob3J0X2Rlc2M9IkxpZ2h0d2VpZ2h0IHZpZGVvIHRo dW1ibmFpbGVyIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIK IGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCi1ob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29t L2Rpcmt2ZGIvJHtwa2duYW1lfSIKLWRpc3RmaWxlcz0iJHtob21lcGFnZX0vcmVsZWFzZXMvZG93 bmxvYWQvJHt2ZXJzaW9ufS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLmJ6MiIKK2hvbWVwYWdl PSJodHRwczovL2dpdGh1Yi5jb20vZGlya3ZkYiIKK2Rpc3RmaWxlcz0iJHtob21lcGFnZX0vJHtw a2duYW1lfS9yZWxlYXNlcy9kb3dubG9hZC8ke3ZlcnNpb259LyR7cGtnbmFtZX0tJHt2ZXJzaW9u fS50YXIuYnoyIgogY2hlY2tzdW09MWNiMjQwNTljMzgyMjNmNjU3YjMwMGM4NGRkODA0OTFiNzA0 MGQ0YjY5NDcxYzRmZWE2OWJlODYyYmM5OWI1YgogCiBwb3N0X2luc3RhbGwoKSB7CgpGcm9tIGVi OTE2YzQ4NmIzYzM2OTE1MGZhNDI4Y2FiZmRkMGE3N2IyYjhiODEgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzMi8xMTVdIGZmbXBlZ3RodW1i czogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlIGIvc3JjcGtncy9m Zm1wZWd0aHVtYnMvdGVtcGxhdGUKaW5kZXggNWYwYjk0MTRkYWRhZi4uMTFiODgxOTM1MjhmNCAx MDA2NDQKLS0tIGEvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9m Zm1wZWd0aHVtYnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdmZm1wZWd0aHVtYnMnCiBwa2duYW1lPWZmbXBlZ3RodW1icwogdmVyc2lvbj0yMi4xMi4xCi1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRz PSJleHRyYS1jbWFrZS1tb2R1bGVzIGtjb3JlYWRkb25zIGtjb25maWctZGV2ZWwKICBwa2ctY29u ZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSBnZXR0ZXh0IgoKRnJvbSA4NmQ3ZmI2NjBjZjM0 MmYyNjVmMThmMGM2ZjlkNmQyYzZlZmNhMmNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzMvMTE1XSBmZm1zMjogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDQyNCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2ZmbXMyL3RlbXBsYXRlICAgICAg ICAgICAgICB8ICAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCA0MjUgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1w ZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0 Y2ggYi9zcmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4xNDc5ZmFiY2FmY2I0Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9mZm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw0MjQgQEAK K0Zyb20gNDU2NzMxNDllOWEyZjU1ODY4NTVhZDQ3MmUzMDU5MDg0ZWFhMzZiMSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNA Z21haWwuY29tPgorRGF0ZTogVHVlLCA0IE1heSAyMDIxIDE0OjQxOjIxICswMTAwCitTdWJqZWN0 OiBbUEFUQ0hdIFVzZSBhdXRvIGZvciBBVkNvZGVjCisKK1RoZSBnZW5pdXNlcyBvdmVyIGF0IEZG bXBlZyBkZWNpZGVkIHRvIGNvbnN0aWZ5IHRoaXMgQVBJLCBzbyBvbGQKK3ZlcnNpb25zIG9mIHRo ZSBsaWJyYXJ5IHdpbGwgcmV0dXJuIEFWQ29kZWMgKiwgd2hpbGUgbmV3IHZlcnNpb25zCitvZiB0 aGUgbGliYXJ5IHdpbGwgcmV0dXJuIGNvbnN0IEFWQ29kZWMgKiwgd2hpY2gsIGluIEMrKywgYXJl IG5vdAorT0sgdG8gY29udmVydCBiZXR3ZWVuLgorCitSYXRoZXIgdGhhbiB1c2Ugc29tZSBtYWNy byBoZWxsIGluIGZmbXNjb21wYXQuaCwgd2UgY2FuIHdvcmsgYXJvdW5kCit0aGlzIGJ5IHVzaW5n IGF1dG8uCisKK0dyb3NzLgorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJl ay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCB8 IDIgKy0KKyBzcmMvY29yZS9pbmRleGluZy5jcHAgICAgfCA2ICsrKy0tLQorIHNyYy9jb3JlL3Zp ZGVvc291cmNlLmNwcCB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwg NSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCBi L3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAoraW5kZXggZTRjZTk3Yy4uYWMwOTY2NiAxMDA2NDQK Ky0tLSBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAorKysrIGIvc3JjL2NvcmUvYXVkaW9zb3Vy Y2UuY3BwCitAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgRkZNU19BdWRpb1NvdXJjZTo6T3BlbkZp bGUoKSB7CisgCisgICAgIExBVkZPcGVuRmlsZShTb3VyY2VGaWxlLmNfc3RyKCksIEZvcm1hdENv bnRleHQsIFRyYWNrTnVtYmVyKTsKKyAKKy0gICAgQVZDb2RlYyAqQ29kZWMgPSBhdmNvZGVjX2Zp bmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrTnVtYmVyXS0+Y29kZWNwYXIt PmNvZGVjX2lkKTsKKysgICAgYXV0byAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3Jt YXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrTnVtYmVyXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAg ICAgaWYgKENvZGVjID09IG51bGxwdHIpCisgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihG Rk1TX0VSUk9SX0RFQ09ESU5HLCBGRk1TX0VSUk9SX0NPREVDLAorICAgICAgICAgICAgICJBdWRp byBjb2RlYyBub3QgZm91bmQiKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9pbmRleGluZy5jcHAg Yi9zcmMvY29yZS9pbmRleGluZy5jcHAKK2luZGV4IGU1NDdjNWEuLjU5ZmI0ZTggMTAwNjQ0Cist LS0gYS9zcmMvY29yZS9pbmRleGluZy5jcHAKKysrKyBiL3NyYy9jb3JlL2luZGV4aW5nLmNwcAor QEAgLTM4NCw3ICszODQsNyBAQCBGRk1TX1RyYWNrVHlwZSBGRk1TX0luZGV4ZXI6OkdldFRyYWNr VHlwZShpbnQgVHJhY2spIHsKKyB9CisgCisgY29uc3QgY2hhciAqRkZNU19JbmRleGVyOjpHZXRU cmFja0NvZGVjKGludCBUcmFjaykgeworLSAgICBBVkNvZGVjICpjb2RlYyA9IGF2Y29kZWNfZmlu ZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNf aWQpOworKyAgICBhdXRvICpjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRl eHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworICAgICByZXR1cm4gY29k ZWMgPyBjb2RlYy0+bmFtZSA6IG51bGxwdHI7CisgfQorIAorQEAgLTQwMiw3ICs0MDIsNyBAQCBG Rk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgVXNl RFRTKTsKKyAKKyAgICAgICAgIGlmIChJbmRleE1hc2suY291bnQoaSkgJiYgRm9ybWF0Q29udGV4 dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVP KSB7CistICAgICAgICAgICAgQVZDb2RlYyAqVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNv ZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAg ICAgICAgICAgYXV0byAqVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENv bnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgICAgICAgICAgICAgaWYg KCFWaWRlb0NvZGVjKSB7CisgICAgICAgICAgICAgICAgIEZvcm1hdENvbnRleHQtPnN0cmVhbXNb aV0tPmRpc2NhcmQgPSBBVkRJU0NBUkRfQUxMOworICAgICAgICAgICAgICAgICBJbmRleE1hc2su ZXJhc2UoaSk7CitAQCAtNDMzLDcgKzQzMyw3IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6 RG9JbmRleGluZygpIHsKKyAgICAgICAgICAgICAgICAgSW5kZXhNYXNrLmluc2VydChpKTsKKyAg ICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2UgaWYgKEluZGV4TWFzay5jb3VudChpKSAmJiBG b3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElB X1RZUEVfQVVESU8pIHsKKy0gICAgICAgICAgICBBVkNvZGVjICpBdWRpb0NvZGVjID0gYXZjb2Rl Y19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVj X2lkKTsKKysgICAgICAgICAgICBhdXRvICpBdWRpb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29k ZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAg ICAgICAgICBpZiAoQXVkaW9Db2RlYyA9PSBudWxscHRyKQorICAgICAgICAgICAgICAgICB0aHJv dyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0NPREVDLCBGRk1TX0VSUk9SX1VOU1VQUE9SVEVE LAorICAgICAgICAgICAgICAgICAgICAgIkF1ZGlvIGNvZGVjIG5vdCBmb3VuZCIpOworZGlmZiAt LWdpdCBhL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcCBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNw cAoraW5kZXggYjg4OTk3MC4uODk1NmMyMiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL3ZpZGVvc291 cmNlLmNwcAorKysrIGIvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwCitAQCAtMTcxLDcgKzE3MSw3 IEBAIEZGTVNfVmlkZW9Tb3VyY2U6OkZGTVNfVmlkZW9Tb3VyY2UoY29uc3QgY2hhciAqU291cmNl RmlsZSwgRkZNU19JbmRleCAmSW5kZXgsIGluCisgCisgICAgICAgICBMQVZGT3BlbkZpbGUoU291 cmNlRmlsZSwgRm9ybWF0Q29udGV4dCwgVmlkZW9UcmFjayk7CisgCistICAgICAgICBBVkNvZGVj ICpDb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVmlk ZW9UcmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAgICAgICBhdXRvICpDb2RlYyA9IGF2 Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVmlkZW9UcmFja10tPmNv ZGVjcGFyLT5jb2RlY19pZCk7CisgICAgICAgICBpZiAoQ29kZWMgPT0gbnVsbHB0cikKKyAgICAg ICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5HLCBGRk1TX0VS Uk9SX0NPREVDLAorICAgICAgICAgICAgICAgICAiVmlkZW8gY29kZWMgbm90IGZvdW5kIik7Cist LSAKKzIuNDAuMAorCitGcm9tIDk2Y2JmMzhlYTkzODE4MjlhMTMxNGY0MzJhMmM2MDQ5NWRjZWZh YWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZXJlayBCdWl0ZW5odWlzIDxkZXJl ay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNCBNYXkgMjAyMSAxNDoxMjo0MSAr MDEwMAorU3ViamVjdDogW1BBVENIXSBhbGw6IFVwZGF0ZSBBVlBhY2tldCBBUEkgdXNhZ2UKKwor QVZQYWNrZXRzIG11c3QgYWxsIGJlIG9uIHRoZSBoZWFwIG5vdywgc2luY2UgaXQgaXMgbm8gbG9u Z2VyCitwYXJ0IG9mIHRoZSBsaWJhdiogQUJJLgorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0 ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jb3JlL2F1ZGlv c291cmNlLmNwcCB8IDE2ICsrKysrKy0tLS0KKyBzcmMvY29yZS9pbmRleGluZy5jcHAgICAgfCA2 MyArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCisgc3JjL2NvcmUvaW5k ZXhpbmcuaCAgICAgIHwgIDQgKy0tCisgc3JjL2NvcmUvdXRpbHMuY3BwICAgICAgIHwgIDYgLS0t LQorIHNyYy9jb3JlL3V0aWxzLmggICAgICAgICB8ICAxIC0KKyBzcmMvY29yZS92aWRlb3NvdXJj ZS5jcHAgfCAzMCArKysrKysrKysrLS0tLS0tLS0tCisgNiBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNl cnRpb25zKCspLCA1NiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2F1ZGlv c291cmNlLmNwcCBiL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAoraW5kZXggMzdjZjlhZS4uZTRj ZTk3YyAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAorKysrIGIvc3JjL2Nv cmUvYXVkaW9zb3VyY2UuY3BwCitAQCAtMjg1LDEwICsyODUsMTUgQEAgRkZNU19BdWRpb1NvdXJj ZTo6QXVkaW9CbG9jayAqRkZNU19BdWRpb1NvdXJjZTo6Q2FjaGVCbG9jayhDYWNoZUl0ZXJhdG9y ICZwb3MpIHsKKyBpbnQgRkZNU19BdWRpb1NvdXJjZTo6RGVjb2RlTmV4dEJsb2NrKENhY2hlSXRl cmF0b3IgKnBvcykgeworICAgICBDdXJyZW50RnJhbWUgPSAmRnJhbWVzW1BhY2tldE51bWJlcl07 CisgCistICAgIEFWUGFja2V0IFBhY2tldDsKKy0gICAgaWYgKCFSZWFkUGFja2V0KCZQYWNrZXQp KQorKyAgICBBVlBhY2tldCAqUGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrICAgIGlmICgh UGFja2V0KQorKyAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9QQVJTRVIs IEZGTVNfRVJST1JfQUxMT0NBVElPTl9GQUlMRUQsCisrICAgICAgICAgICAgIkNvdWxkIG5vdCBh bGxvY2F0ZSBwYWNrZXQuIik7CisrICAgIGlmICghUmVhZFBhY2tldChQYWNrZXQpKSB7CisrICAg ICAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0 aW9uKEZGTVNfRVJST1JfUEFSU0VSLCBGRk1TX0VSUk9SX1VOS05PV04sCisgICAgICAgICAgICAg IlJlYWRQYWNrZXQgdW5leHBlY3RlZGx5IGZhaWxlZCB0byByZWFkIGEgcGFja2V0Iik7CisrICAg IH0KKyAKKyAgICAgLy8gUmVhZFBhY2tldCBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBwYWNrZXQgbnVt YmVyCisgICAgIEN1cnJlbnRGcmFtZSA9ICZGcmFtZXNbUGFja2V0TnVtYmVyXTsKK0BAIC0yOTcs OCArMzAyLDkgQEAgaW50IEZGTVNfQXVkaW9Tb3VyY2U6OkRlY29kZU5leHRCbG9jayhDYWNoZUl0 ZXJhdG9yICpwb3MpIHsKKyAgICAgaW50IE51bWJlck9mU2FtcGxlcyA9IDA7CisgICAgIEF1ZGlv QmxvY2sgKkNhY2hlZEJsb2NrID0gbnVsbHB0cjsKKyAgICAgCistICAgIGludCBSZXQgPSBhdmNv ZGVjX3NlbmRfcGFja2V0KENvZGVjQ29udGV4dCwgJlBhY2tldCk7CistICAgIGF2X3BhY2tldF91 bnJlZigmUGFja2V0KTsKKysgICAgaW50IFJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQoQ29kZWND b250ZXh0LCBQYWNrZXQpOworKyAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKysgICAgYXZf cGFja2V0X2ZyZWUoJlBhY2tldCk7CisgCisgICAgIGF2X2ZyYW1lX3VucmVmKERlY29kZUZyYW1l KTsKKyAgICAgUmV0ID0gYXZjb2RlY19yZWNlaXZlX2ZyYW1lKENvZGVjQ29udGV4dCwgRGVjb2Rl RnJhbWUpOworQEAgLTUxMyw4ICs1MTksNiBAQCB2b2lkIEZGTVNfQXVkaW9Tb3VyY2U6OlNlZWso KSB7CisgfQorIAorIGJvb2wgRkZNU19BdWRpb1NvdXJjZTo6UmVhZFBhY2tldChBVlBhY2tldCAq UGFja2V0KSB7CistICAgIEluaXROdWxsUGFja2V0KCpQYWNrZXQpOworLQorICAgICB3aGlsZSAo YXZfcmVhZF9mcmFtZShGb3JtYXRDb250ZXh0LCBQYWNrZXQpID49IDApIHsKKyAgICAgICAgIGlm IChQYWNrZXQtPnN0cmVhbV9pbmRleCA9PSBUcmFja051bWJlcikgeworICAgICAgICAgICAgIC8v IFJlcXVpcmVkIGJlY2F1c2Ugbm90IGFsbCBhdWRpbyBwYWNrZXRzLCBlc3BlY2lhbGx5IGluIG9n ZywgaGF2ZSBhIHB0cy4gVXNlIHRoZSBwcmV2aW91cyB2YWxpZCBwYWNrZXQncyBwdHMgaW5zdGVh ZC4KK2RpZmYgLS1naXQgYS9zcmMvY29yZS9pbmRleGluZy5jcHAgYi9zcmMvY29yZS9pbmRleGlu Zy5jcHAKK2luZGV4IDIzZmI5NWIuLmU1NDdjNWEgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9pbmRl eGluZy5jcHAKKysrKyBiL3NyYy9jb3JlL2luZGV4aW5nLmNwcAorQEAgLTMyMCw3ICszMjAsNyBA QCB2b2lkIEZGTVNfSW5kZXhlcjo6Q2hlY2tBdWRpb1Byb3BlcnRpZXMoaW50IFRyYWNrLCBBVkNv ZGVjQ29udGV4dCAqQ29udGV4dCkgeworICAgICB9CisgfQorIAorLXZvaWQgRkZNU19JbmRleGVy OjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tl dCAmcGt0LCBpbnQgKlJlcGVhdFBpY3QsCisrdm9pZCBGRk1TX0luZGV4ZXI6OlBhcnNlVmlkZW9Q YWNrZXQoU2hhcmVkQVZDb250ZXh0ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0ICpwa3QsIGludCAq UmVwZWF0UGljdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKkZy YW1lVHlwZSwgYm9vbCAqSW52aXNpYmxlLCBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSAqTGFzdFBp Y1N0cnVjdCkgeworICAgICBpZiAoVmlkZW9Db250ZXh0LlBhcnNlcikgeworICAgICAgICAgdWlu dDhfdCAqT0I7CitAQCAtMzMwLDggKzMzMCw4IEBAIHZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZp ZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0Cisg ICAgICAgICBhdl9wYXJzZXJfcGFyc2UyKFZpZGVvQ29udGV4dC5QYXJzZXIsCisgICAgICAgICAg ICAgVmlkZW9Db250ZXh0LkNvZGVjQ29udGV4dCwKKyAgICAgICAgICAgICAmT0IsICZPQlNpemUs CistICAgICAgICAgICAgcGt0LmRhdGEsIHBrdC5zaXplLAorLSAgICAgICAgICAgIHBrdC5wdHMs IHBrdC5kdHMsIHBrdC5wb3MpOworKyAgICAgICAgICAgIHBrdC0+ZGF0YSwgcGt0LT5zaXplLAor KyAgICAgICAgICAgIHBrdC0+cHRzLCBwa3QtPmR0cywgcGt0LT5wb3MpOworIAorICAgICAgICAg Ly8gSC4yNjQgKFBBRkYpIGFuZCBIRVZDIG1heSBoYXZlIG9uZSBmaWVsZCBwZXIgcGFja2V0LCBz byB3ZSBuZWVkIHRvIHRyYWNrCisgICAgICAgICAvLyB3aGVuIHdlIGhhdmUgYSBmdWxsIG9yIGhh bGYgZnJhbWUgYXZhaWxhYmxlLCBhbmQgbWFyayBvbmUgb2YgdGhlbSBhcworQEAgLTM1MSwxNSAr MzUxLDE1IEBAIHZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29u dGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0CisgCisgICAgICAgICAqUmVwZWF0UGlj dCA9IFZpZGVvQ29udGV4dC5QYXJzZXItPnJlcGVhdF9waWN0OworICAgICAgICAgKkZyYW1lVHlw ZSA9IFZpZGVvQ29udGV4dC5QYXJzZXItPnBpY3RfdHlwZTsKKy0gICAgICAgICpJbnZpc2libGUg PSAoSW5jb21wbGV0ZUZyYW1lIHx8IFZpZGVvQ29udGV4dC5QYXJzZXItPnJlcGVhdF9waWN0IDwg MCB8fCAocGt0LmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpOworKyAgICAgICAgKkludmlz aWJsZSA9IChJbmNvbXBsZXRlRnJhbWUgfHwgVmlkZW9Db250ZXh0LlBhcnNlci0+cmVwZWF0X3Bp Y3QgPCAwIHx8IChwa3QtPmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpOworICAgICB9IGVs c2UgeworLSAgICAgICAgKkludmlzaWJsZSA9ICEhKHBrdC5mbGFncyAmIEFWX1BLVF9GTEFHX0RJ U0NBUkQpOworKyAgICAgICAgKkludmlzaWJsZSA9ICEhKHBrdC0+ZmxhZ3MgJiBBVl9QS1RfRkxB R19ESVNDQVJEKTsKKyAgICAgfQorIAorICAgICBpZiAoVmlkZW9Db250ZXh0LkNvZGVjQ29udGV4 dC0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA4KQorLSAgICAgICAgUGFyc2VWUDgocGt0LmRh dGFbMF0sIEludmlzaWJsZSwgRnJhbWVUeXBlKTsKKysgICAgICAgIFBhcnNlVlA4KHBrdC0+ZGF0 YVswXSwgSW52aXNpYmxlLCBGcmFtZVR5cGUpOworICAgICBlbHNlIGlmIChWaWRlb0NvbnRleHQu Q29kZWNDb250ZXh0LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpCistICAgICAgICBQYXJz ZVZQOShwa3QuZGF0YVswXSwgSW52aXNpYmxlLCBGcmFtZVR5cGUpOworKyAgICAgICAgUGFyc2VW UDkocGt0LT5kYXRhWzBdLCBJbnZpc2libGUsIEZyYW1lVHlwZSk7CisgfQorIAorIHZvaWQgRkZN U19JbmRleGVyOjpGcmVlKCkgeworQEAgLTQ1OCwzMiArNDU4LDM2IEBAIEZGTVNfSW5kZXggKkZG TVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBB VlBhY2tldCBQYWNrZXQ7CistICAgIEluaXROdWxsUGFja2V0KFBhY2tldCk7CisrICAgIEFWUGFj a2V0ICpQYWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQYWNrZXQpCisrICAg ICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0NPREVDLCBGRk1TX0VSUk9SX0FM TE9DQVRJT05fRkFJTEVELAorKyAgICAgICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgcGFja2V0 LiIpOworICAgICBzdGQ6OnZlY3RvcjxpbnQ2NF90PiBMYXN0VmFsaWRUUyhGb3JtYXRDb250ZXh0 LT5uYl9zdHJlYW1zLCBBVl9OT1BUU19WQUxVRSk7CisgCisgICAgIGludDY0X3QgZmlsZXNpemUg PSBhdmlvX3NpemUoRm9ybWF0Q29udGV4dC0+cGIpOworICAgICBlbnVtIEFWUGljdHVyZVN0cnVj dHVyZSBMYXN0UGljU3RydWN0ID0gQVZfUElDVFVSRV9TVFJVQ1RVUkVfVU5LTk9XTjsKKy0gICAg d2hpbGUgKGF2X3JlYWRfZnJhbWUoRm9ybWF0Q29udGV4dCwgJlBhY2tldCkgPj0gMCkgeworKyAg ICB3aGlsZSAoYXZfcmVhZF9mcmFtZShGb3JtYXRDb250ZXh0LCBQYWNrZXQpID49IDApIHsKKyAg ICAgICAgIC8vIFVwZGF0ZSBwcm9ncmVzcworICAgICAgICAgLy8gRm9ybWF0Q29udGV4dC0+cGIg Y2FuIGFwcGFyZW50bHkgYmUgTlVMTCB3aGVuIG9wZW5pbmcgaW1hZ2VzLgorICAgICAgICAgaWYg KElDICYmIEZvcm1hdENvbnRleHQtPnBiKSB7CistICAgICAgICAgICAgaWYgKCgqSUMpKEZvcm1h dENvbnRleHQtPnBiLT5wb3MsIGZpbGVzaXplLCBJQ1ByaXZhdGUpKQorKyAgICAgICAgICAgIGlm ICgoKklDKShGb3JtYXRDb250ZXh0LT5wYi0+cG9zLCBmaWxlc2l6ZSwgSUNQcml2YXRlKSkgewor KyAgICAgICAgICAgICAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgICAgICAg ICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9DQU5DRUxMRUQsIEZGTVNfRVJST1Jf VVNFUiwKKyAgICAgICAgICAgICAgICAgICAgICJDYW5jZWxsZWQgYnkgdXNlciIpOworKyAgICAg ICAgICAgIH0KKyAgICAgICAgIH0KKy0gICAgICAgIGlmICghSW5kZXhNYXNrLmNvdW50KFBhY2tl dC5zdHJlYW1faW5kZXgpKSB7CistICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQp OworKyAgICAgICAgaWYgKCFJbmRleE1hc2suY291bnQoUGFja2V0LT5zdHJlYW1faW5kZXgpKSB7 CisrICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisgICAgICAgICAgICAgY29u dGludWU7CisgICAgICAgICB9CisgCistICAgICAgICBpbnQgVHJhY2sgPSBQYWNrZXQuc3RyZWFt X2luZGV4OworKyAgICAgICAgaW50IFRyYWNrID0gUGFja2V0LT5zdHJlYW1faW5kZXg7CisgICAg ICAgICBGRk1TX1RyYWNrICZUcmFja0luZm8gPSAoKlRyYWNrSW5kaWNlcylbVHJhY2tdOworLSAg ICAgICAgYm9vbCBLZXlGcmFtZSA9ICEhKFBhY2tldC5mbGFncyAmIEFWX1BLVF9GTEFHX0tFWSk7 CisrICAgICAgICBib29sIEtleUZyYW1lID0gISEoUGFja2V0LT5mbGFncyAmIEFWX1BLVF9GTEFH X0tFWSk7CisgICAgICAgICBSZWFkVFMoUGFja2V0LCBMYXN0VmFsaWRUU1tUcmFja10sICgqVHJh Y2tJbmRpY2VzKVtUcmFja10uVXNlRFRTKTsKKyAKKyAgICAgICAgIGlmIChGb3JtYXRDb250ZXh0 LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJ REVPKSB7CistICAgICAgICAgICAgaW50NjRfdCBQVFMgPSBUcmFja0luZm8uVXNlRFRTID8gUGFj a2V0LmR0cyA6IFBhY2tldC5wdHM7CisrICAgICAgICAgICAgaW50NjRfdCBQVFMgPSBUcmFja0lu Zm8uVXNlRFRTID8gUGFja2V0LT5kdHMgOiBQYWNrZXQtPnB0czsKKyAgICAgICAgICAgICBpZiAo UFRTID09IEFWX05PUFRTX1ZBTFVFKSB7CisgICAgICAgICAgICAgICAgIC8vIFZQeCBhbHQtcmVm cyBhcmUgb3V0cHV0IGFzIHBhY2tldHMgd2hpY2ggbGFjayB0aW1lc3RtcHMgb3IgZHVyYXRpb25z LCBzaW5jZQorICAgICAgICAgICAgICAgICAvLyB0aGV5IGFyZSBpbnZpc2libGUuIEN1cnJlbnRs eSwgdGhlIHRpbWVzdGFtcCBtYW5nbGluZyBjb2RlIGluIGxpYmF2Zm9ybWF0CitAQCAtNDk1LDkg KzQ5OSwxMSBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAg ICAgICAgICAgICAgIC8vIEZGTVMyIGN1cnJlbnRseSBzb3J0cyBwYWNrZXRzIGJ5IFBUUywgd2hp Y2ggd2lsbCBicmVhayBkZWNvZGluZywgb3RoZXJ3aXNlLgorICAgICAgICAgICAgICAgICBib29s IEhhc0FsdFJlZnMgPSAoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDggfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfVlA5KTsKKy0gICAgICAgICAgICAgICAgaWYgKFBhY2tldC5kdXJh dGlvbiA9PSAwICYmICFIYXNBbHRSZWZzKQorKyAgICAgICAgICAgICAgICBpZiAoUGFja2V0LT5k dXJhdGlvbiA9PSAwICYmICFIYXNBbHRSZWZzKSB7CisrICAgICAgICAgICAgICAgICAgICBhdl9w YWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgICAgICAgICAgICAgIHRocm93IEZGTVNfRXhj ZXB0aW9uKEZGTVNfRVJST1JfSU5ERVhJTkcsIEZGTVNfRVJST1JfUEFSU0VSLAorICAgICAgICAg ICAgICAgICAgICAgICAgICJJbnZhbGlkIHBhY2tldCBwdHMsIGR0cywgYW5kIGR1cmF0aW9uIik7 CisrICAgICAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgICAgICAgaWYgKFRyYWNrSW5mby5l bXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgUFRTID0gMDsKK0BAIC01MTMsNyArNTE5LDcg QEAgRkZNU19JbmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAg IFBhcnNlVmlkZW9QYWNrZXQoQVZDb250ZXh0c1tUcmFja10sIFBhY2tldCwgJlJlcGVhdFBpY3Qs ICZGcmFtZVR5cGUsICZJbnZpc2libGUsICZMYXN0UGljU3RydWN0KTsKKyAKKyAgICAgICAgICAg ICBUcmFja0luZm8uQWRkVmlkZW9GcmFtZShQVFMsIFJlcGVhdFBpY3QsIEtleUZyYW1lLAorLSAg ICAgICAgICAgICAgICBGcmFtZVR5cGUsIFBhY2tldC5wb3MsIEludmlzaWJsZSk7CisrICAgICAg ICAgICAgICAgIEZyYW1lVHlwZSwgUGFja2V0LT5wb3MsIEludmlzaWJsZSk7CisgICAgICAgICB9 IGVsc2UgaWYgKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNf dHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8pIHsKKyAgICAgICAgICAgICAvLyBGb3IgdmlkZW8g c2Vla2luZyB0aW1lc3RhbXBzIGFyZSB1c2VkIG9ubHkgaWYgYWxsIHBhY2tldHMgaGF2ZQorICAg ICAgICAgICAgIC8vIHRpbWVzdGFtcHMsIHdoaWxlIGZvciBhdWRpbyB0aGV5J3JlIHVzZWQgaWYg YW55IGhhdmUgdGltZXN0YW1wcywKK0BAIC01MjIsMjggKzUyOCwyOSBAQCBGRk1TX0luZGV4ICpG Rk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgICAgIFRyYWNrSW5mby5I YXNUUyA9IHRydWU7CisgCisgICAgICAgICAgICAgaW50NjRfdCBTdGFydFNhbXBsZSA9IEFWQ29u dGV4dHNbVHJhY2tdLkN1cnJlbnRTYW1wbGU7CistICAgICAgICAgICAgdWludDMyX3QgU2FtcGxl Q291bnQgPSBJbmRleEF1ZGlvUGFja2V0KFRyYWNrLCAmUGFja2V0LCBBVkNvbnRleHRzW1RyYWNr XSwgKlRyYWNrSW5kaWNlcyk7CisrICAgICAgICAgICAgdWludDMyX3QgU2FtcGxlQ291bnQgPSBJ bmRleEF1ZGlvUGFja2V0KFRyYWNrLCBQYWNrZXQsIEFWQ29udGV4dHNbVHJhY2tdLCAqVHJhY2tJ bmRpY2VzKTsKKyAgICAgICAgICAgICBUcmFja0luZm8uU2FtcGxlUmF0ZSA9IEFWQ29udGV4dHNb VHJhY2tdLkNvZGVjQ29udGV4dC0+c2FtcGxlX3JhdGU7CisgCisgICAgICAgICAgICAgVHJhY2tJ bmZvLkFkZEF1ZGlvRnJhbWUoTGFzdFZhbGlkVFNbVHJhY2tdLAorLSAgICAgICAgICAgICAgICBT dGFydFNhbXBsZSwgU2FtcGxlQ291bnQsIEtleUZyYW1lLCBQYWNrZXQucG9zLCBQYWNrZXQuZmxh Z3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKTsKKysgICAgICAgICAgICAgICAgU3RhcnRTYW1wbGUs IFNhbXBsZUNvdW50LCBLZXlGcmFtZSwgUGFja2V0LT5wb3MsIFBhY2tldC0+ZmxhZ3MgJiBBVl9Q S1RfRkxBR19ESVNDQVJEKTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGlmICghKFBhY2tldC5m bGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpKQorLSAgICAgICAgICAgIFRyYWNrSW5mby5MYXN0 RHVyYXRpb24gPSBQYWNrZXQuZHVyYXRpb247CisrICAgICAgICBpZiAoIShQYWNrZXQtPmZsYWdz ICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpCisrICAgICAgICAgICAgVHJhY2tJbmZvLkxhc3REdXJh dGlvbiA9IFBhY2tldC0+ZHVyYXRpb247CisgCistICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBh Y2tldCk7CisrICAgICAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKyAgICAgfQorKyAgICBh dl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAKKyAgICAgVHJhY2tJbmRpY2VzLT5GaW5hbGl6ZShB VkNvbnRleHRzLCBGb3JtYXRDb250ZXh0LT5pZm9ybWF0LT5uYW1lKTsKKyAgICAgcmV0dXJuIFRy YWNrSW5kaWNlcy5yZWxlYXNlKCk7CisgfQorIAorLXZvaWQgRkZNU19JbmRleGVyOjpSZWFkVFMo Y29uc3QgQVZQYWNrZXQgJlBhY2tldCwgaW50NjRfdCAmVFMsIGJvb2wgJlVzZURUUykgeworLSAg ICBpZiAoIVVzZURUUyAmJiBQYWNrZXQucHRzICE9IEFWX05PUFRTX1ZBTFVFKQorLSAgICAgICAg VFMgPSBQYWNrZXQucHRzOworK3ZvaWQgRkZNU19JbmRleGVyOjpSZWFkVFMoY29uc3QgQVZQYWNr ZXQgKlBhY2tldCwgaW50NjRfdCAmVFMsIGJvb2wgJlVzZURUUykgeworKyAgICBpZiAoIVVzZURU UyAmJiBQYWNrZXQtPnB0cyAhPSBBVl9OT1BUU19WQUxVRSkKKysgICAgICAgIFRTID0gUGFja2V0 LT5wdHM7CisgICAgIGlmIChUUyA9PSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICAgIFVzZURUUyA9 IHRydWU7CistICAgIGlmIChVc2VEVFMgJiYgUGFja2V0LmR0cyAhPSBBVl9OT1BUU19WQUxVRSkK Ky0gICAgICAgIFRTID0gUGFja2V0LmR0czsKKysgICAgaWYgKFVzZURUUyAmJiBQYWNrZXQtPmR0 cyAhPSBBVl9OT1BUU19WQUxVRSkKKysgICAgICAgIFRTID0gUGFja2V0LT5kdHM7CisgfQorZGlm ZiAtLWdpdCBhL3NyYy9jb3JlL2luZGV4aW5nLmggYi9zcmMvY29yZS9pbmRleGluZy5oCitpbmRl eCAzY2ZjM2MzLi41YzA2ODY4IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvaW5kZXhpbmcuaAorKysr IGIvc3JjL2NvcmUvaW5kZXhpbmcuaAorQEAgLTgwLDEwICs4MCwxMCBAQCBwcml2YXRlOgorICAg ICBpbnQ2NF90IEZpbGVzaXplOworICAgICB1aW50OF90IERpZ2VzdFsyMF07CisgCistICAgIHZv aWQgUmVhZFRTKGNvbnN0IEFWUGFja2V0ICZQYWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VE VFMpOworKyAgICB2b2lkIFJlYWRUUyhjb25zdCBBVlBhY2tldCAqUGFja2V0LCBpbnQ2NF90ICZU UywgYm9vbCAmVXNlRFRTKTsKKyAgICAgdm9pZCBDaGVja0F1ZGlvUHJvcGVydGllcyhpbnQgVHJh Y2ssIEFWQ29kZWNDb250ZXh0ICpDb250ZXh0KTsKKyAgICAgdWludDMyX3QgSW5kZXhBdWRpb1Bh Y2tldChpbnQgVHJhY2ssIEFWUGFja2V0ICpQYWNrZXQsIFNoYXJlZEFWQ29udGV4dCAmQ29udGV4 dCwgRkZNU19JbmRleCAmVHJhY2tJbmRpY2VzKTsKKy0gICAgdm9pZCBQYXJzZVZpZGVvUGFja2V0 KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0LCBpbnQgKlJlcGVh dFBpY3QsIGludCAqRnJhbWVUeXBlLCBib29sICpJbnZpc2libGUsIGVudW0gQVZQaWN0dXJlU3Ry dWN0dXJlICpMYXN0UGljU3RydWN0KTsKKysgICAgdm9pZCBQYXJzZVZpZGVvUGFja2V0KFNoYXJl ZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAqcGt0LCBpbnQgKlJlcGVhdFBpY3Qs IGludCAqRnJhbWVUeXBlLCBib29sICpJbnZpc2libGUsIGVudW0gQVZQaWN0dXJlU3RydWN0dXJl ICpMYXN0UGljU3RydWN0KTsKKyAgICAgdm9pZCBGcmVlKCk7CisgcHVibGljOgorICAgICBGRk1T X0luZGV4ZXIoY29uc3QgY2hhciAqRmlsZW5hbWUpOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3V0 aWxzLmNwcCBiL3NyYy9jb3JlL3V0aWxzLmNwcAoraW5kZXggY2U2NzUzMy4uOGEyZTk5NyAxMDA2 NDQKKy0tLSBhL3NyYy9jb3JlL3V0aWxzLmNwcAorKysrIGIvc3JjL2NvcmUvdXRpbHMuY3BwCitA QCAtNjIsMTIgKzYyLDYgQEAgdm9pZCBDbGVhckVycm9ySW5mbyhGRk1TX0Vycm9ySW5mbyAqRXJy b3JJbmZvKSB7CisgICAgIH0KKyB9CisgCistdm9pZCBJbml0TnVsbFBhY2tldChBVlBhY2tldCAm cGt0KSB7CistICAgIGF2X2luaXRfcGFja2V0KCZwa3QpOworLSAgICBwa3QuZGF0YSA9IG51bGxw dHI7CistICAgIHBrdC5zaXplID0gMDsKKy19CistCisgdm9pZCBGaWxsQVAoRkZNU19BdWRpb1By b3BlcnRpZXMgJkFQLCBBVkNvZGVjQ29udGV4dCAqQ1RYLCBGRk1TX1RyYWNrICZGcmFtZXMpIHsK KyAgICAgQVAuU2FtcGxlRm9ybWF0ID0gc3RhdGljX2Nhc3Q8RkZNU19TYW1wbGVGb3JtYXQ+KGF2 X2dldF9wYWNrZWRfc2FtcGxlX2ZtdChDVFgtPnNhbXBsZV9mbXQpKTsKKyAgICAgQVAuQml0c1Bl clNhbXBsZSA9IGF2X2dldF9ieXRlc19wZXJfc2FtcGxlKENUWC0+c2FtcGxlX2ZtdCkgKiA4Owor ZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3V0aWxzLmggYi9zcmMvY29yZS91dGlscy5oCitpbmRleCA5 ODE5ZGM3Li4wMDNhYjc5IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvdXRpbHMuaAorKysrIGIvc3Jj L2NvcmUvdXRpbHMuaAorQEAgLTU4LDcgKzU4LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1ha2Vf dW5pcXVlKEFyZ3MmJi4uLiBhcmdzKSB7CisgfQorIAorIHZvaWQgQ2xlYXJFcnJvckluZm8oRkZN U19FcnJvckluZm8gKkVycm9ySW5mbyk7Cistdm9pZCBJbml0TnVsbFBhY2tldChBVlBhY2tldCAm cGt0KTsKKyB2b2lkIEZpbGxBUChGRk1TX0F1ZGlvUHJvcGVydGllcyAmQVAsIEFWQ29kZWNDb250 ZXh0ICpDVFgsIEZGTVNfVHJhY2sgJkZyYW1lcyk7CisgCisgdm9pZCBMQVZGT3BlbkZpbGUoY29u c3QgY2hhciAqU291cmNlRmlsZSwgQVZGb3JtYXRDb250ZXh0IComRm9ybWF0Q29udGV4dCwgaW50 IFRyYWNrKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgYi9zcmMvY29y ZS92aWRlb3NvdXJjZS5jcHAKK2luZGV4IDA2YmQxNjEuLmI4ODk5NzAgMTAwNjQ0CistLS0gYS9z cmMvY29yZS92aWRlb3NvdXJjZS5jcHAKKysrKyBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAor QEAgLTY3MywzMCArNjczLDM0IEBAIHZvaWQgRkZNU19WaWRlb1NvdXJjZTo6RGVjb2RlTmV4dEZy YW1lKGludDY0X3QgJkFTdGFydFRpbWUsIGludDY0X3QgJlBvcykgeworICAgICBpZiAoSGFzUGVu ZGluZ0RlbGF5ZWRGcmFtZXMoKSkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgQVZQYWNrZXQg UGFja2V0OworLSAgICBJbml0TnVsbFBhY2tldChQYWNrZXQpOworLQorLSAgICB3aGlsZSAoUmVh ZEZyYW1lKCZQYWNrZXQpID49IDApIHsKKy0gICAgICAgIGlmIChQYWNrZXQuc3RyZWFtX2luZGV4 ICE9IFZpZGVvVHJhY2spIHsKKy0gICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7 CisrICAgIEFWUGFja2V0ICpQYWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQ YWNrZXQpCisrICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5H LCBGRk1TX0VSUk9SX0FMTE9DQVRJT05fRkFJTEVELAorKyAgICAgICAgICAgICJDb3VsZCBub3Qg YWxsb2NhdGUgcGFja2V0LiIpOworKworKyAgICB3aGlsZSAoUmVhZEZyYW1lKFBhY2tldCkgPj0g MCkgeworKyAgICAgICAgaWYgKFBhY2tldC0+c3RyZWFtX2luZGV4ICE9IFZpZGVvVHJhY2spIHsK KysgICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKyAgICAgICAgICAgICBjb250 aW51ZTsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIGlmIChBU3RhcnRUaW1lIDwgMCkKKy0gICAg ICAgICAgICBBU3RhcnRUaW1lID0gRnJhbWVzLlVzZURUUyA/IFBhY2tldC5kdHMgOiBQYWNrZXQu cHRzOworKyAgICAgICAgICAgIEFTdGFydFRpbWUgPSBGcmFtZXMuVXNlRFRTID8gUGFja2V0LT5k dHMgOiBQYWNrZXQtPnB0czsKKyAKKyAgICAgICAgIGlmIChQb3MgPCAwKQorLSAgICAgICAgICAg IFBvcyA9IFBhY2tldC5wb3M7CisrICAgICAgICAgICAgUG9zID0gUGFja2V0LT5wb3M7CisgCist ICAgICAgICBib29sIEZyYW1lRmluaXNoZWQgPSBEZWNvZGVQYWNrZXQoJlBhY2tldCk7CistICAg ICAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7CistICAgICAgICBpZiAoRnJhbWVGaW5pc2hl ZCkKKysgICAgICAgIGJvb2wgRnJhbWVGaW5pc2hlZCA9IERlY29kZVBhY2tldChQYWNrZXQpOwor KyAgICAgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisrICAgICAgICBpZiAoRnJhbWVGaW5p c2hlZCkgeworKyAgICAgICAgICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworICAgICAgICAg ICAgIHJldHVybjsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICAvLyBGbHVzaCBmaW5hbCBm cmFtZXMKKy0gICAgSW5pdE51bGxQYWNrZXQoUGFja2V0KTsKKy0gICAgRGVjb2RlUGFja2V0KCZQ YWNrZXQpOworKyAgICBEZWNvZGVQYWNrZXQoUGFja2V0KTsKKysgICAgYXZfcGFja2V0X2ZyZWUo JlBhY2tldCk7CisgfQorIAorIGJvb2wgRkZNU19WaWRlb1NvdXJjZTo6U2Vla1RvKGludCBuLCBp bnQgU2Vla09mZnNldCkgeworLS0gCisyLjQwLjAKKworRnJvbSBiZjllMDNlOWUwODUzNGMwMjRl NWE3NDRhNjQzN2M0YWFjMTYwMjAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVy ZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CitEYXRlOiBUdWUsIDQg TWF5IDIwMjEgMTQ6MjA6NDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIGNvbmZpZ3VyZTog UmVtb3ZlIGRlcHJlY2F0ZWQgQVBJIHVzZQorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5o dWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQg KystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisK K2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGIzNWVmODBi Yy4uZDE5NzE0ZDBmIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUu YWMKK0BAIC0xMDIsMTAgKzEwMiwxMCBAQCBDRkxBR1M9IiRfQ0ZMQUdTICRGRk1QRUdfQ0ZMQUdT IgorCisgQUNfREVGVU4oW1RFU1RfRkZNUEVHXSwKKyAgICAgICAgICBbQUNfTElOS19JRkVMU0Uo W0FDX0xBTkdfUFJPR1JBTShbWworLSAgICAgICAgICAgICNpbmNsdWRlIDxsaWJhdmNvZGVjL2F2 Y29kZWMuaD4KKysgICAgICAgICAgICAjaW5jbHVkZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4K KyAgICAgICAgICAgICAjaW5jbHVkZSA8bGlic3dzY2FsZS9zd3NjYWxlLmg+CisgICAgICAgICAg ICAgXV0sW1sKKy0gICAgICAgICAgICAgICAgYXZjb2RlY19yZWdpc3Rlcl9hbGwoKTsKKysgICAg ICAgICAgICAgICAgYXZmb3JtYXRfbmV0d29ya19pbml0KCk7CisgICAgICAgICAgICAgICAgIHN3 c2NhbGVfdmVyc2lvbigpOworICAgICAgICAgICAgIF1dKV0sIFtldmFsICQxPXllc10sIFtldmFs ICQxPW5vXSkKKyAgICAgICAgIF0pCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtczIvdGVtcGxh dGUgYi9zcmNwa2dzL2ZmbXMyL3RlbXBsYXRlCmluZGV4IGJmZWI5Njk4Y2ViNDYuLmFjMDFkOTMy MWYwYmQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZmZtczIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9m Zm1zMi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZmbXMy JwogcGtnbmFtZT1mZm1zMgogdmVyc2lvbj0yLjQwCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1lbmFibGUtc2hhcmVk IC0tZGlzYWJsZS1zdGF0aWMiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgYXV0b2NvbmYg YXV0b21ha2UgbGlidG9vbCIKCkZyb20gZDVhODI2NGVkMTdjMzlkOTllZWYxYjc0MWJlNDNiNzBj ODcxODc4NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDM0LzExNV0gZnJlZXJkcDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4v ZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2ggICAgfCA0MiArKysrKysrKysr KysrKysrKysrCiBzcmNwa2dzL2ZyZWVyZHAvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAg fCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJj YjlhYS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZf YWEyY2I5YWEucGF0Y2ggYi9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFh LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmE0MzI0ZGEz YTg4MjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2 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 c3JjcGtncy9mcmVlcmRwL3RlbXBsYXRlCmluZGV4IDI1ZThhYTk2NzdmMGIuLjRkNTFjODE4OTkw MmEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZnJlZXJkcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Zy ZWVyZHAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmcmVl cmRwJwogcGtnbmFtZT1mcmVlcmRwCiB2ZXJzaW9uPTIuMTAuMAotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfQUxTQT1PTiAt RFdJVEhfQ1VQUz1PRkYgLURXSVRIX0ZGTVBFRz1PTgogIC1EV0lUSF9HU1RSRUFNRVJfMF8xMD1P RkYgLURXSVRIX0dTVFJFQU1FUl8xXzA9T0ZGIC1EV0lUSF9KUEVHPU9OCgpGcm9tIGMwOWQxODIw ZGY2YWE3NTNlM2ZmYTk5YWQ0YTMxZDczNjA4YjNhNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzNS8xMTVdIGdlcmJlcmE6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlIGIvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlCmluZGV4 IGFlMTRmMzVjNzY3YzAuLjJkYzBhYzBjZTAzYjUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ2VyYmVy YS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dlcmJlcmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnZXJiZXJhJwogcGtnbmFtZT1nZXJiZXJhCiB2ZXJzaW9u PTEuMTIuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZp Z3VyZV9hcmdzPSItRFdJVEhfU1lTVEVNRD0wIC1EV0lUSF9BVkNPREVDPTEiCiBob3N0bWFrZWRl cGVuZHM9InBrZy1jb25maWciCgpGcm9tIDhkOTU0ZGM0MGNhNWYzNDE5NGMzOGQ3ZmE3MDBkOWUz MDBmOWYwYjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDog W1BBVENIIDAzNi8xMTVdIGdvbGRlbmRpY3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9nb2xkZW5kaWN0L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ29sZGVu ZGljdC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZQppbmRleCBmNGEwNTc1 OWY2OTNkLi45N2Y0NDM0N2IwM2E2IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dvbGRlbmRpY3QvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9nb2xkZW5kaWN0L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnZ29sZGVuZGljdCcKIHBrZ25hbWU9Z29sZGVuZGljdAogdmVy c2lvbj0xLjUuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cW1ha2UKIGNv bmZpZ3VyZV9hcmdzPSJDT05GSUcrPXppbV9zdXBwb3J0IGdvbGRlbmRpY3QucHJvIgogaG9zdG1h a2VkZXBlbmRzPSJxdDUtcW1ha2UgcGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyIKQEAgLTEwLDcg KzEwLDcgQEAgbWFrZWRlcGVuZHM9InRpZmYtZGV2ZWwgcXQ1LWRldmVsIGxpYnZvcmJpcy1kZXZl bCB6bGliLWRldmVsCiAgcXQ1LXdlYmtpdC1kZXZlbCBsem8tZGV2ZWwgYnppcDItZGV2ZWwgbGli YW8tZGV2ZWwgcXQ1LXN2Zy1kZXZlbAogIGxpYmViLWRldmVsIHF0NS14MTFleHRyYXMtZGV2ZWwg ZmZtcGVnLWRldmVsIGxpYmx6bWEtZGV2ZWwKICBxdDUtbXVsdGltZWRpYS1kZXZlbCIKLXNob3J0 X2Rlc2M9IkEgZmVhdHVyZS1yaWNoIGRpY3Rpb25hcnkgbG9va3VwIHByb2dyYW0iCitzaG9ydF9k ZXNjPSJGZWF0dXJlLXJpY2ggZGljdGlvbmFyeSBsb29rdXAgcHJvZ3JhbSIKIG1haW50YWluZXI9 IkpvaG4gPG1lQGpvaG5ueW5hdG9yLmRldj4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgog aG9tZXBhZ2U9Imh0dHA6Ly9nb2xkZW5kaWN0Lm9yZy8iCgpGcm9tIGIxMTA2Nzc3OTNhMWIwYTEz MDU4YmJiODUxM2YxOWM3ZmVkYTdlODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcg LTA0MDAKU3ViamVjdDogW1BBVENIIDAzNy8xMTVdIGdzdC1saWJhdjogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZ3N0LWxpYmF2L3RlbXBsYXRlIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKaW5kZXgg OGM3MmZjM2U5N2VlZS4uMDRjMzliZmYxNDg5NiAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtbGli YXYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtbGliYXYnCiBwa2duYW1lPWdzdC1saWJhdgog dmVyc2lvbj0xLjIyLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29u CiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgeWFzbSIKIG1ha2VkZXBlbmRzPSJvcmMtZGV2 ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwgZmZtcGVnLWRldmVsIgoKRnJvbSA4MGVjZjIwN2Qz YmRmZjkzNjhiZTNlYjc3ODAxMTg5MjNlODc4ZjBkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzgvMTE1XSBnc3QtcnRzcC1zZXJ2ZXI6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZSBiL3NyY3BrZ3Mv Z3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlCmluZGV4IDJmMGMwYzQ1ZmY4MjAuLjk4MGZkNzJjZGQ0 YzUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnZ3N0LXJ0c3Atc2VydmVyJwogcGtnbmFtZT1nc3QtcnRzcC1zZXJ2ZXIKIHZl cnNpb249MS4yMi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgog aG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHB5dGhvbjMiCiBtYWtlZGVwZW5kcz0iZ2xpYi1k ZXZlbCBnc3QtcGx1Z2lucy1iYWQxLWRldmVsIGdvYmplY3QtaW50cm9zcGVjdGlvbgoKRnJvbSAx YWVjYjA5ODFiYzc2NzM4MWEzYzVjYzM3ZWFmZDQzMDNmYzExMDcwIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzkvMTE1XSBndXZjdmlldzog dXBkYXRlIHRvIDIuMC44LgoKLS0tCiBzcmNwa2dzL2d1dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1 ZGUucGF0Y2ggfCAxMCArKysrKysrKysrCiBzcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlICAgICAg ICAgICAgICAgICAgfCAgNSArKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCsp LCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZ3V2Y3ZpZXcvcGF0 Y2hlcy9maXgtaW5jbHVkZS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0 Y2hlcy9maXgtaW5jbHVkZS5wYXRjaCBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5j bHVkZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi41MDNj MmFmM2I3OGMxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9ndXZjdmlldy9wYXRjaGVzL2Zp eC1pbmNsdWRlLnBhdGNoCkBAIC0wLDAgKzEsMTAgQEAKKy0tLSBhL2d1dmN2aWV3L2d1dmN2aWV3 LmMKKysrKyBiL2d1dmN2aWV3L2d1dmN2aWV3LmMKK0BAIC0yOCw2ICsyOCw3IEBACisgI2luY2x1 ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorICNpbmNsdWRlIDxl cnJuby5oPgorKyNpbmNsdWRlIDxsb2NhbGUuaD4KKyAKKyAjaW5jbHVkZSAiZ3ZpZXcuaCIKKyAj aW5jbHVkZSAiZ3ZpZXd2NGwyY29yZS5oIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ndXZjdmlldy90 ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxhdGUKaW5kZXggMzQ1Y2Y2MDA2ZjI0Ni4u ODZhN2ZkNjE5NjEyYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlCkBAIC0xLDggKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnZ3V2Y3ZpZXcnCiBwa2duYW1lPWd1dmN2aWV3Ci12ZXJzaW9uPTIuMC43Cit2ZXJz aW9uPTIuMC44CiByZXZpc2lvbj0xCi1jcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfc3R5bGU9Z251 LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1zdGF0aWMgLS1kaXNhYmxlLWRl Ymlhbi1tZW51IgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGludGx0b29sIGF1dG9jb25m IGF1dG9tYWtlIGxpYnRvb2wgZ2xpYi1kZXZlbCIKQEAgLTE0LDcgKzEzLDcgQEAgbWFpbnRhaW5l cj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3It bGF0ZXIiCiBob21lcGFnZT0iaHR0cDovL2d1dmN2aWV3LnNvdXJjZWZvcmdlLm5ldC8iCiBkaXN0 ZmlsZXM9IiR7U09VUkNFRk9SR0VfU0lURX0vJHtwa2duYW1lfS8ke3BrZ25hbWV9LXNyYy0ke3Zl cnNpb259LnRhci5iejIiCi1jaGVja3N1bT1mNDdkNTFmYmQwNmU0NGVlYWExYTgyZjRhMTUzYzky NzUyN2M5MGQ5NDUxNDE5N2E3MGIyOTU2MDI4Y2M4YWQ0CitjaGVja3N1bT1hMjFmNGU0NDgyODY2 NjZjZjI3YmFmZWY1MjkwY2M5NTNhMGExNzk2Yjc1MmU1YmJlNTIxMjY2ZGMxMjMwYzgxCiAKIHBv c3RfcGF0Y2goKSB7CiAJc2VkICczMWEjaW5jbHVkZSA8bG9jYWxlLmg+JyAtaSAgZ3V2Y3ZpZXcv Z3V2Y3ZpZXcuYwoKRnJvbSA0ZmExZjJjNjQzZjhmODFkNmY2MTRjNzE2ZDM4NWFhZDM2MTk5YjEw IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw NDAvMTE1XSBoYW5kYnJha2U6IHVwZGF0ZSB0byAxLjYuMQoKLS0tCiAuLi4vcGF0Y2hlcy9maXgt bWlzc2luZy14MjY1LWxpbmstZmxhZy5wYXRjaCAgICB8IDExICsrKysrKy0tLS0tCiAuLi4vaGFu ZGJyYWtlL3BhdGNoZXMvbGliaGItdnBsLWluY2x1ZGUucGF0Y2ggICB8IDE1ICsrKysrKysrKysr KysrKwogc3JjcGtncy9oYW5kYnJha2UvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgfCAx NyArKysrKysrKysrLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAx MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2hhbmRicmFrZS9wYXRj aGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9oYW5kYnJh a2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmstZmxhZy5wYXRjaCBiL3NyY3BrZ3MvaGFu ZGJyYWtlL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZsYWcucGF0Y2gKaW5kZXggMjZk YjAzODY3YTBjOC4uZDZiYjJlZGE2MjdhMyAxMDA2NDQKLS0tIGEvc3JjcGtncy9oYW5kYnJha2Uv cGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmstZmxhZy5wYXRjaAorKysgYi9zcmNwa2dzL2hh bmRicmFrZS9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNoCkBAIC0xLDE0 ICsxLDE1IEBACiAtLS0gYS9ndGsvY29uZmlndXJlLmFjCiArKysgYi9ndGsvY29uZmlndXJlLmFj CiBAQCAtMjAzLDcgKzIwMyw3IEBACi0gCisKICBBTV9DT05ESVRJT05BTChbTUlOR1ddLCBbdGVz dCAieCRtaW5nd19mbGFnIiA9ICJ4eWVzIl0pCi0gCi0tSEJfTElCUz0iJEhCX0xJQlMgLWxoYW5k YnJha2UgLWxhdmZvcm1hdCAtbGF2ZmlsdGVyIC1sYXZjb2RlYyAtbGF2dXRpbCAtbGRhdjFkIC1s c3dyZXNhbXBsZSAtbHBvc3Rwcm9jIC1sZHZkbmF2IC1sZHZkcmVhZCAtbG1wM2xhbWUgLWx2b3Ji aXMgLWx2b3JiaXNlbmMgLWxvZ2cgLWxzd3NjYWxlIC1sdGhlb3JhZW5jIC1sdGhlb3JhZGVjIC1s dnB4IC1seiAtbGJ6MiAtbGJsdXJheSAtbGFzcyAtbGZvbnRjb25maWcgLWxmcmVldHlwZSAtbHht bDIgLWxqYW5zc29uIC1sb3B1cyAtbHNwZWV4IC1sdHVyYm9qcGVnIC1sbHptYSAtbHppbWciCi0r SEJfTElCUz0iJEhCX0xJQlMgLWxoYW5kYnJha2UgLWxhdmZvcm1hdCAtbGF2ZmlsdGVyIC1sYXZj b2RlYyAtbGF2dXRpbCAtbGRhdjFkIC1sc3dyZXNhbXBsZSAtbHBvc3Rwcm9jIC1sZHZkbmF2IC1s ZHZkcmVhZCAtbG1wM2xhbWUgLWx2b3JiaXMgLWx2b3JiaXNlbmMgLWxvZ2cgLWxzd3NjYWxlIC1s dGhlb3JhZW5jIC1sdGhlb3JhZGVjIC1sdnB4IC1seiAtbGJ6MiAtbGJsdXJheSAtbGFzcyAtbGZv bnRjb25maWcgLWxmcmVldHlwZSAtbHhtbDIgLWxqYW5zc29uIC1sb3B1cyAtbHNwZWV4IC1sdHVy Ym9qcGVnIC1sbHptYSAtbHppbWcgLWxkbCIKKworLUhCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJy YWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3 cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlz IC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZw eCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwy IC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sU3Z0 QXYxRW5jIgorK0hCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZp bHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAt bGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1s c3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkg LWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxz cGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sU3Z0QXYxRW5jIC1sZGwiCiAgSEJfQ1BQ RkxBR1M9IiRIQl9DUFBGTEFHUyAkSEJJTkMiCi0gCisKICBQS0dfQ0hFQ0tfTU9EVUxFUyhbeDI2 NF0sIFt4MjY0XSwgc3lzX3gyNjQ9eWVzLCBzeXNfeDI2ND1ubykKKwogLS0tIGEvdGVzdC9tb2R1 bGUuZGVmcwogKysrIGIvdGVzdC9tb2R1bGUuZGVmcwogQEAgLTY5LDYgKzY5LDkgQEAKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvbGliaGItdnBsLWluY2x1ZGUucGF0Y2gg Yi9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjI5OGY5ZjRhYjI4ZjIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRl LnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKKy0tLSBhL2xpYmhiL21vZHVsZS5kZWZzCTIwMjMtMDEt MjIgMTE6MzY6NDkuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9saWJoYi9tb2R1bGUuZGVmcwkyMDIz LTA0LTAzIDIyOjM3OjUyLjM5NTQ2NzAxMCAtMDQwMAorQEAgLTQ2LDExICs0Niw3IEBACisgTElC SEIuR0NDLkkgKz0gJChMSUJIQi5idWlsZC8pICQoQ09OVFJJQi5idWlsZC8paW5jbHVkZQorIAor IGlmZXEgKDEsJChGRUFUVVJFLnFzdikpCistICAgIGlmZXEgKCQoSE9TVC5zeXN0ZW0pLGZyZWVi c2QpKQorLSAgICAgICAgTElCSEIuR0NDLkkgKz0gJChMT0NBTEJBU0UpL2luY2x1ZGUvdnBsCist ICAgIGVsc2UKKy0gICAgICAgIExJQkhCLkdDQy5JICs9ICQoQ09OVFJJQi5idWlsZC8paW5jbHVk ZS92cGwKKy0gICAgZW5kaWYKKysgICAgTElCSEIuR0NDLkkgKz0gL3Vzci9pbmNsdWRlL3ZwbAor IGVuZGlmCisgCisgaWZuZXEgKCwkKGZpbHRlciAkKEhPU1Quc3lzdGVtKSxmcmVlYnNkIG5ldGJz ZCBvcGVuYnNkKSkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlIGIvc3Jj cGtncy9oYW5kYnJha2UvdGVtcGxhdGUKaW5kZXggY2E1ZTQ1NzFlNDljMy4uYzMyY2IxYmZhMzFm NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9oYW5kYnJha2UvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9o YW5kYnJha2UvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2hhbmRicmFrZScKIHBrZ25hbWU9aGFuZGJyYWtlCi12ZXJzaW9uPTEuNS4xCit2ZXJzaW9uPTEu Ni4xCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJn cz0iLS1mb3JjZSAtLWRpc2FibGUtZ3RrLXVwZGF0ZS1jaGVja3MgLS1kaXNhYmxlLWRmLWZldGNo IC0taGFyZGVuCi0gJCh2b3B0X2VuYWJsZSBmZGtfYWFjIGZkay1hYWMpICQodm9wdF9lbmFibGUg bnZlbmMpIgorICQodm9wdF9lbmFibGUgZmRrX2FhYyBmZGstYWFjKSAkKHZvcHRfZW5hYmxlIG52 ZW5jKSAkKHZvcHRfZW5hYmxlIHFzdikiCiBtYWtlX2J1aWxkX2FyZ3M9Ii1DICR7WEJQU19UUklQ TEVUfSIKIG1ha2VfaW5zdGFsbF9hcmdzPSItQyAke1hCUFNfVFJJUExFVH0iCiBob3N0bWFrZWRl cGVuZHM9ImF1dG9tYWtlIGNtYWtlIGdldHRleHQtZGV2ZWwgZ2xpYi1kZXZlbCBpbnRsdG9vbCBs aWJ0b29sIG00IG1lc29uIG5hc20gcGtnLWNvbmZpZyBweXRob24zIgpAQCAtMTIsOCArMTIsMTEg QEAgbWFrZWRlcGVuZHM9ImJ6aXAyLWRldmVsIGZmbXBlZy1kZXZlbCBnc3QtcGx1Z2lucy1iYXNl MS1kZXZlbCBndGsrMy1kZXZlbAogIGphbnNzb24tZGV2ZWwgbGFtZS1kZXZlbCBsaWJhc3MtZGV2 ZWwgbGliYmx1cmF5LWRldmVsIGxpYmRhdjFkLWRldmVsCiAgbGliZHZkbmF2LWRldmVsIGxpYmR2 ZHJlYWQtZGV2ZWwgbGliZ3VkZXYtZGV2ZWwgbGlibnVtYS1kZXZlbAogIGxpYnNhbXBsZXJhdGUt ZGV2ZWwgbGlidGhlb3JhLWRldmVsIGxpYnZvcmJpcy1kZXZlbCBsaWJ2cHgtZGV2ZWwgbGlieG1s Mi1kZXZlbAotIG9wdXMtZGV2ZWwgc3BlZXgtZGV2ZWwgeDI2NC1kZXZlbCB4MjY1LWRldmVsIHpp bWctZGV2ZWwKKyBvcHVzLWRldmVsIHNwZWV4LWRldmVsIHgyNjQtZGV2ZWwgeDI2NS1kZXZlbCB6 aW1nLWRldmVsIGxpYnN2dC1hdjEtZGV2ZWwKICAkKHZvcHRfaWYgZmRrX2FhYyBmZGstYWFjLWRl dmVsKQorICQodm9wdF9pZiBxc3YgbGlidmEtZGV2ZWwpCisgJCh2b3B0X2lmIHFzdiBsaWJkcm0t ZGV2ZWwpCisgJCh2b3B0X2lmIHFzdiBvbmV2cGwtZGV2ZWwpCiAgJCh2b3B0X2lmIG52ZW5jIG52 LWNvZGVjLWhlYWRlcnMpIgogZGVwZW5kcz0iZGVza3RvcC1maWxlLXV0aWxzIGdzdC1wbHVnaW5z LWdvb2QxIGhpY29sb3ItaWNvbi10aGVtZSIKIHNob3J0X2Rlc2M9Ik11bHRpdGhyZWFkZWQgdmlk ZW8gdHJhbnNjb2RlciIKQEAgLTIxLDE1ICsyNCwxNSBAQCBtYWludGFpbmVyPSJFbm5vIEJvbGFu ZCA8Z290dG94QHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTIuMC1vbmx5IgogaG9tZXBh Z2U9Imh0dHBzOi8vaGFuZGJyYWtlLmZyLyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29t L0hhbmRCcmFrZS9IYW5kQnJha2UvcmVsZWFzZXMvZG93bmxvYWQvJHt2ZXJzaW9ufS9IYW5kQnJh a2UtJHt2ZXJzaW9ufS1zb3VyY2UudGFyLmJ6MiIKLWNoZWNrc3VtPTM5OTlmZTA2ZDUzMDljODE5 Nzk5YTczYTk2OGE4ZWMzODQwZTc4NDBjMmI2NGFmOGY1Y2RiN2ZkOGM5NDMwZjAKK2NoZWNrc3Vt PTk0Y2NmZTAzZGI5MTdhOTE2NTAwMDBjNTEwZjdmZDUzZjg0NGRhMTlmMTlhZDRiNGJlMWI4ZjZi YzMxYThkNGMKIG5vY3Jvc3M9eWVzCiAKLWJ1aWxkX29wdGlvbnM9ImZka19hYWMgbnZlbmMiCiti dWlsZF9vcHRpb25zPSJmZGtfYWFjIG52ZW5jIHFzdiIKIAogY2FzZSAiJFhCUFNfVEFSR0VUX01B Q0hJTkUiIGluCiAJeDg2XzY0KnxpNjg2KikKIAkJQ0ZMQUdTPSItbXNzZSIKLQkJYnVpbGRfb3B0 aW9uc19kZWZhdWx0PSJudmVuYyIKKwkJYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJudmVuYyBxc3Yi CiAJCTs7CiBlc2FjCiAKQEAgLTM3LDcgKzQwLDcgQEAgcHJlX2NvbmZpZ3VyZSgpIHsKIAkjIHVz ZSBzeXN0ZW0gbGlicmFyaWVzLCBkb24ndCBkb3dubG9hZCB0aGVtCiAJcm0gLXJmIGNvbnRyaWIv CiAJZm9yIG1vZHVsZSBpbiBmZGstYWFjIGZmbXBlZyBsaWJibHVyYXkgbGliZGF2MWQgbGliZHZk bmF2IGxpYmR2ZHJlYWQgbnZlbmMgXAotCQl4MjY1IHppbWc7IGRvCisJCXgyNjUgemltZyBzdnQt YXYxIGxpYnZwbDsgZG8KIAkgICAgdnNlZCAtaSAiL01PRFVMRVMgKz0gY29udHJpYlwvJHttb2R1 bGV9L2QiIG1ha2UvaW5jbHVkZS9tYWluLmRlZnMKIAlkb25lCiB9CgpGcm9tIGI4MmRmYjczNjE3 NDNhZjBlOTIwMTNmNzM4MTMyNjM0NDE3NWFkNDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0MS8xMTVdIGhlZGdld2FyczogcmV2YnVtcCBm b3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZSB8IDQgKyst LQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZSBiL3NyY3BrZ3MvaGVkZ2V3YXJzL3Rl bXBsYXRlCmluZGV4IDE1YTFkZjZkODg2MWQuLmQxYjcyOTBiZmRjMTkgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRl CkBAIC0xLDEzICsxLDEzIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdoZWRnZXdhcnMnCiBwa2du YW1lPWhlZGdld2FycwogdmVyc2lvbj0xLjAuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRE5PU0VSVkVSPTEgLUREQVRBX0lOU1RB TExfRElSPS91c3Ivc2hhcmUvJHtwa2duYW1lfQogIC1EUEhZU0ZTX1NZU1RFTT0xIC1ETUlOSU1B TF9GTEFHUz0xIgogbWFrZV9jbWQ9bWFrZQogaG9zdG1ha2VkZXBlbmRzPSJsdWE1MSBwa2ctY29u ZmlnIHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwg bHVhNTEtZGV2ZWwgcGh5c2ZzLWRldmVsIHF0NS10b29scy1kZXZlbCBTREwyX2ltYWdlLWRldmVs CittYWtlZGVwZW5kcz0iZmZtcGVnNC1kZXZlbCBsdWE1MS1kZXZlbCBwaHlzZnMtZGV2ZWwgcXQ1 LXRvb2xzLWRldmVsIFNETDJfaW1hZ2UtZGV2ZWwKICBTREwyX21peGVyLWRldmVsIFNETDJfbmV0 LWRldmVsIFNETDJfdHRmLWRldmVsIgogZGVwZW5kcz0ibGliZnJlZWdsdXQiCiBzaG9ydF9kZXNj PSJGdW5ueSB0dXJuLWJhc2VkIGFydGlsbGVyeSBnYW1lLCBmZWF0dXJpbmcgZmlnaHRpbmcgSGVk Z2Vob2dzISIKCkZyb20gNzJhYzNmM2VmNzExZjEyZjQ2MTAzYTY2YzQ3ODU3ZmViYmEwNDJmYyBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQy LzExNV0gaWRqYzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2lkamMv dGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pZGpjL3RlbXBsYXRlIGIvc3JjcGtncy9p ZGpjL3RlbXBsYXRlCmluZGV4IGRmNjAzMThiM2RiOTYuLjM2YTc1YmFmNTk3YzUgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvaWRqYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2lkamMvdGVtcGxhdGUKQEAg LTEsMTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2lkamMnCiBwa2duYW1lPWlkamMK IHZlcnNpb249MC45LjEKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWdudS1j b25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBnaXQgcHl0aG9uMyBhdXRvbWFr ZSBnZXR0ZXh0LWRldmVsIGxpYnRvb2wiCiBtYWtlZGVwZW5kcz0ibGlidm9yYmlzLWRldmVsIGxp Ym9nZy1kZXZlbCBqYWNrLWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwKLSBsaWJmbGFjLWRldmVs IGxpYnNuZGZpbGUtZGV2ZWwgbXBnMTIzLWRldmVsIGZmbXBlZy1kZXZlbCBzcGVleC1kZXZlbAor IGxpYmZsYWMtZGV2ZWwgbGlic25kZmlsZS1kZXZlbCBtcGcxMjMtZGV2ZWwgZmZtcGVnNC1kZXZl bCBzcGVleC1kZXZlbAogIGdsaWItZGV2ZWwgcGl4bWFuLWRldmVsIGxhbWUtZGV2ZWwgcHl0aG9u My1nb2JqZWN0LWRldmVsIGxpYnNob3V0LWlkamMtZGV2ZWwKICBvcHVzLWRldmVsIHR3b2xhbWUt ZGV2ZWwgcHl0aG9uMy1tdXRhZ2VuIHB5dGhvbjMtZGV2ZWwiCiBkZXBlbmRzPSJweXRob24zLWdv YmplY3QgcHl0aG9uMy1tdXRhZ2VuIGRlc2t0b3AtZmlsZS11dGlscyBzaGFyZWQtbWltZS1pbmZv IHB5dGhvbjMtZGJ1cyBqYWNrIgoKRnJvbSA4MDAwYTcxOTllMWU5MWUyZmJkNzVjNWZjNDQxNDk2 YjM1YjljYzgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwNDMvMTE1XSBrZmlsZW1ldGFkYXRhNTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9r ZmlsZW1ldGFkYXRhNS90ZW1wbGF0ZSBiL3NyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUK aW5kZXggYzNlM2ViMTE2YTY3Yi4uMzBmZmMzMWIxY2I2YiAxMDA2NDQKLS0tIGEvc3JjcGtncy9r ZmlsZW1ldGFkYXRhNS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna2ZpbGVtZXRhZGF0YTUn CiBwa2duYW1lPWtmaWxlbWV0YWRhdGE1CiB2ZXJzaW9uPTUuMTA4LjAKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9Imtjb3JlYWRkb25z IGV4dHJhLWNtYWtlLW1vZHVsZXMgcGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UK ICBnZXR0ZXh0IGtjb3JlYWRkb25zIHB5dGhvbjMiCgpGcm9tIGFmNjcyOTRiOWFkMmFlNjgwMTcy MWU1ZWUzNDhmOWNhNTQ4MGJlNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0 MDAKU3ViamVjdDogW1BBVENIIDA0NC8xMTVdIGtpZDM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDE3ICsrKysrKysrKysr KysrKysrCiBzcmNwa2dzL2tpZDMvdGVtcGxhdGUgICAgICAgICAgICAgIHwgIDIgKy0KIDIgZmls ZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3Mva2lkMy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9raWQzL3BhdGNoZXMv ZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4x MzVmYzUwZTA3YzliCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9raWQzL3BhdGNoZXMvZmZt cGVnNS5wYXRjaApAQCAtMCwwICsxLDE3IEBACisjIGh0dHBzOi8vYXVyLmFyY2hsaW51eC5vcmcv Y2dpdC9hdXIuZ2l0L2RpZmYvZmZtcGVnNS5wYXRjaD9oPWtpZDMtY2xpJmlkPTEyNDEwYTc0OTA2 NjEyZTdlZmMwZWM4ZmJjZTczOWI0YTBmZWY3ZTcKK2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9h Y291c3RpZGltcG9ydC9mZm1wZWdmaW5nZXJwcmludGRlY29kZXIuY3BwIGIvc3JjL3BsdWdpbnMv YWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAoraW5kZXggZTE1NmQ0 MjQuLmUxMmI5YWJkIDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZt cGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAorKysrIGIvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBv cnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAorQEAgLTIzMiw3ICsyMzIsMTEgQEAgcHJp dmF0ZToKKyAgIGZyaWVuZCBjbGFzcyBGb3JtYXQ7CisgICBmcmllbmQgY2xhc3MgQ29udmVydGVy OworICAgQVZDb2RlY0NvbnRleHQqIG1fcHRyOworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fSU5U IDwgQVZfVkVSU0lPTl9JTlQoNTksIDAsIDApCisgICBBVkNvZGVjKiBtX2ltcGw7CisrI2Vsc2UK KysgIGNvbnN0IEFWQ29kZWMqIG1faW1wbDsKKysjZW5kaWYKKyAgIEFWRnJhbWUqIG1fZnJhbWU7 CisgICBib29sIG1fb3BlbmVkOworIH07CmRpZmYgLS1naXQgYS9zcmNwa2dzL2tpZDMvdGVtcGxh dGUgYi9zcmNwa2dzL2tpZDMvdGVtcGxhdGUKaW5kZXggNDU2MjA2ZDkwZTE2YS4uZjMyZjlkZWNi MGU3ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9raWQzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva2lk My90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2tpZDMnCiBw a2duYW1lPWtpZDMKIHZlcnNpb249My45LjEKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxk X3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURXSVRIX0FQUFM9J0NMSTskKHZvcHRfaWYg S0RFIEtERSBRdCknCiAgLURXSVRIX0RPQ0JPT0tESVI9L3Vzci9zaGFyZS94c2wvZG9jYm9vayAt RFdJVEhfRkxBQz0kKHZvcHRfaWYgZmxhYyBPTiBPRkYpCgpGcm9tIDkzMDZmOTkwNjIzNjhjZTIw M2MzNjViMGE2NDdlMGUxZTk3YzRiYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDgg LTA0MDAKU3ViamVjdDogW1BBVENIIDA0NS8xMTVdIGtvZGk6IHJldmJ1bXAgZm9yIGZmbXBlZzQt NC40LjMKCi0tLQogc3JjcGtncy9rb2RpL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdl ZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv a29kaS90ZW1wbGF0ZSBiL3NyY3BrZ3Mva29kaS90ZW1wbGF0ZQppbmRleCBiZDU0MzM5NjlkYjY0 Li4yNTc0NGY2OTEwN2Y0IDEwMDY0NAotLS0gYS9zcmNwa2dzL2tvZGkvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9rb2RpL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAna29kaScKIHBrZ25hbWU9a29kaQogdmVyc2lvbj0xOS40Ci1yZXZpc2lvbj02CityZXZpc2lv bj03CiBfY29kZW5hbWU9Ik1hdHJpeCIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJn cz0iLURXSVRIX0ZGTVBFRz0vdXNyIC1ERU5BQkxFX0xER09MRD1PRkYKQEAgLTU0LDcgKzU0LDcg QEAgbWFrZWRlcGVuZHM9IgogIGxpYm1hZC1kZXZlbCBmb250Y29uZmlnLWRldmVsIGxpYlhpbmVy YW1hLWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwgbGlibW1zLWRldmVsCiAgZW5jYS1kZXZlbCBi b29zdC1kZXZlbCBsaWJjdXJsLWRldmVsIGxpYnZhLWRldmVsIGxpYnZkcGF1LWRldmVsIGxpYmFz cy1kZXZlbAogIGxpYmJsdWV0b290aC1kZXZlbCB5YWpsLWRldmVsIGxpYnBsaXN0LWRldmVsIGxp YnJ0bXAtZGV2ZWwgdGlueXhtbC1kZXZlbAotIHRhZ2xpYi1kZXZlbCBsaWJjYXAtZGV2ZWwgbGFt ZS1kZXZlbCBsaWJibHVyYXktZGV2ZWwgbGlibmZzLWRldmVsIGZmbXBlZy1kZXZlbAorIHRhZ2xp Yi1kZXZlbCBsaWJjYXAtZGV2ZWwgbGFtZS1kZXZlbCBsaWJibHVyYXktZGV2ZWwgbGlibmZzLWRl dmVsIGZmbXBlZzQtZGV2ZWwKICBnaWZsaWItZGV2ZWwgbGlieHNsdC1kZXZlbCBnbnV0bHMtZGV2 ZWwgbGlic3NoLWRldmVsIGxpYm1pY3JvaHR0cGQtZGV2ZWwKICBsaWJjZWMtZGV2ZWwgZGNhZGVj LWRldmVsIGZsYXRidWZmZXJzLWRldmVsIGZtdC1kZXZlbCBsY21zMi1kZXZlbAogIGxpYmZzdHJj bXAtZGV2ZWwgcmFwaWRqc29uIGxpYmNkaW8tcGFyYW5vaWEgc3BkbG9nIGxpYndheWxhbmRwcC1k ZXZlbAoKRnJvbSBhMzljZWViMDRmYzZkZjZhNDgyNDc0MjI5ODZhNzBkOGI3YmIwMGIyIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDYvMTE1 XSBrcGlwZXdpcmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9rcGlwZXdp cmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2twaXBld2lyZS90ZW1wbGF0ZSBiL3NyY3Br Z3Mva3BpcGV3aXJlL3RlbXBsYXRlCmluZGV4IGRiNGU0MmYwZDQ1NmEuLjIzMzRiZjg2NzgwNjIg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva3Bp cGV3aXJlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna3Bp cGV3aXJlJwogcGtnbmFtZT1rcGlwZXdpcmUKIHZlcnNpb249NS4yNy42Ci1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFr ZS1tb2R1bGVzIHBsYXNtYS13YXlsYW5kLXByb3RvY29scyBnZXR0ZXh0CiAgcXQ1LXFtYWtlIHF0 NS1ob3N0LXRvb2xzIHBrZy1jb25maWcgd2F5bGFuZC1kZXZlbCBrY29yZWFkZG9ucwoKRnJvbSBh MDI1YWI5YjU0ZTVlZTVhYzJmOWQ2MTE4NDMxMjE5NTQzMWI4NmY4IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDcvMTE1XSBsaWJleHRyYWN0 b3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9saWJleHRyYWN0b3Iv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZSBiL3NyY3Br Z3MvbGliZXh0cmFjdG9yL3RlbXBsYXRlCmluZGV4IGRkZDQ3OTBmOTNlODguLjFmYjljYTU2YTk2 YWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvbGliZXh0cmFjdG9yL3RlbXBsYXRlCkBAIC03LDcgKzcsNyBAQCBjb25maWd1cmVfYXJncz0i LS1kaXNhYmxlLXN0YXRpYyIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBl bmRzPSJ6bGliLWRldmVsIGJ6aXAyLWRldmVsIGV4aXYyLWRldmVsIHRpZmYtZGV2ZWwgbGlicG5n LWRldmVsCiAgbGlianBlZy10dXJiby1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwgbGliZmxhYy1kZXZl bCBnaWZsaWItZGV2ZWwgbGlibXBlZzItZGV2ZWwKLSBmZm1wZWctZGV2ZWwgZ3RrKzMtZGV2ZWwg bGlibHRkbC1kZXZlbCBsaWJhcmNoaXZlLWRldmVsIGZpbGUtZGV2ZWwgbGliZ3NmLWRldmVsIgor IGZmbXBlZzQtZGV2ZWwgZ3RrKzMtZGV2ZWwgbGlibHRkbC1kZXZlbCBsaWJhcmNoaXZlLWRldmVs IGZpbGUtZGV2ZWwgbGliZ3NmLWRldmVsIgogc2hvcnRfZGVzYz0iTGlicmFyeSB1c2VkIHRvIGV4 dHJhY3QgbWV0YSBkYXRhIGZyb20gZmlsZXMiCiBtYWludGFpbmVyPSJNYXJ0aW4gUmllc2UgPGdy YXVlaGFhcmVAZ214LmRlPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCgpGcm9tIDhkMWNl YjE1ZmZkYTRhNWY5ZGQxNzJmYzA2YWE1NWIxZDY4NGI1ZjAgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0OC8xMTVdIGxpYm9wZW5hbDogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGlib3BlbmFsL3RlbXBsYXRlIGIvc3JjcGtncy9saWJvcGVuYWwvdGVt cGxhdGUKaW5kZXggNzcyMThmOWU1MzlkZi4uM2Y0OWVkNzVhMWZkYyAxMDA2NDQKLS0tIGEvc3Jj cGtncy9saWJvcGVuYWwvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsaWJvcGVuYWwnCiBwa2duYW1l PWxpYm9wZW5hbAogdmVyc2lvbj0xLjIyLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxk X3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURBTFNPRlRfRVhBTVBMRVM9T0ZGIgogaG9z dG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSBjODc2NTc5ZmU2MWNjMDI1NGNhMzRhNmE0 MmJlNDIwODBlNWE3MDY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwNDkvMTE1XSBsb3VkZ2FpbjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL2xvdWRnYWluL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDExICsrKysrKysr KysrCiBzcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlICAgICAgICAgICAgICB8ICAyICstCiAyIGZp bGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2xvdWRnYWluL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9sb3Vk Z2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwMC4uMTZkNDUxMGVlOThmYQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbG91 ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0tLSBhL3NyYy9z Y2FuLmMJMjAxOS0wOS0wNiAxMTozMToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBiL3NyYy9zY2Fu LmMJMjAyMy0wMy0yMyAxMToxNTo0MC44Njc5Njg1MjEgLTA0MDAKK0BAIC02OSw4ICs2OSw2IEBA CisgCSAqIEl0IGlzIG5vdyB1c2VsZXNzCisgCSAqIGh0dHBzOi8vZ2l0aHViLmNvbS9GRm1wZWcv RkZtcGVnL2Jsb2IvNzBkMjUyNjhjMjFjYmVlNWYwODMwNGRhOTViZTFmNjQ3YzYzMGMxNS9kb2Mv QVBJY2hhbmdlcyNMODYKKyAJICovCistICBpZiAoYXZmb3JtYXRfdmVyc2lvbigpIDwgQVZfVkVS U0lPTl9JTlQoNTgsOSwxMDApKQorLSAgICBhdl9yZWdpc3Rlcl9hbGwoKTsKKyAKKyAJYXZfbG9n X3NldF9jYWxsYmFjayhzY2FuX2F2X2xvZyk7CisgCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xvdWRn YWluL3RlbXBsYXRlIGIvc3JjcGtncy9sb3VkZ2Fpbi90ZW1wbGF0ZQppbmRleCBkYTRmMmQ1NmU5 NGMzLi40ZDZiZjI5ZWZiNGZkIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdsb3VkZ2FpbicKIHBrZ25hbWU9bG91ZGdhaW4KIHZlcnNpb249MC42LjgK LXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVu ZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0ibGliZWJ1cjEyOC1kZXZlbCB0YWdsaWItZGV2 ZWwgZmZtcGVnLWRldmVsIgoKRnJvbSA1MWQzMjNkN2U4OGZhNjRhZWYxY2EzM2Y5NTEwNjI5NzMw ZjFlNGExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwNTAvMTE1XSBtZWRpYXN0cmVhbWVyOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgot LS0KIHNyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5n ZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L21lZGlhc3RyZWFtZXIvdGVtcGxhdGUgYi9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUK aW5kZXggZDBlOTdlODU4ZTI5YS4uMWJkZTAzMTQ0M2E1OSAxMDA2NDQKLS0tIGEvc3JjcGtncy9t ZWRpYXN0cmVhbWVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0 ZQpAQCAtMSwxMSArMSwxMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWVkaWFzdHJlYW1lcicK IHBrZ25hbWU9bWVkaWFzdHJlYW1lcgogdmVyc2lvbj01LjIuNgotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREVOQUJMRV9TVFJJQ1Q9 MCAtREVOQUJMRV9VTklUX1RFU1RTPTAiCiBob3N0bWFrZWRlcGVuZHM9InB5dGhvbjMiCi1tYWtl ZGVwZW5kcz0iYnpydHAtZGV2ZWwgZmZtcGVnLWRldmVsIGdsZXctZGV2ZWwgbGliWHYtZGV2ZWwg bGlic3J0cC1kZXZlbAorbWFrZWRlcGVuZHM9ImJ6cnRwLWRldmVsIGZmbXBlZzQtZGV2ZWwgZ2xl dy1kZXZlbCBsaWJYdi1kZXZlbCBsaWJzcnRwLWRldmVsCiAgbGlidXBucC1kZXZlbCBsaWJ2cHgt ZGV2ZWwgbWJlZHRscy1kZXZlbCBvcHVzLWRldmVsIG9ydHAtZGV2ZWwgcHVsc2VhdWRpby1kZXZl bAogIGxpYnRoZW9yYS1kZXZlbCBzcGVleC1kZXZlbCB2NGwtdXRpbHMtZGV2ZWwgYmNnNzI5LWRl dmVsIGJjbWF0cm9za2EyLWRldmVsIGxpYmdzbS1kZXZlbCIKICMgenhpbmctY3BwLWRldmVsICgx LjIuMCBwcm9iYWJseSBub3QgY29tcGF0aWJsZSwgY2hlY2sgYWdhaW4gYWZ0ZXIgdXBkYWluZyB4 emluZykKCkZyb20gYTdkZWEwMmVlODA4MGM5ZDcwZGZkM2QwZmY4MzllNGQyZWU0NTgzNCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDUxLzEx NV0gbWdiYTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21nYmEvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL21nYmEvdGVtcGxhdGUgYi9zcmNwa2dzL21nYmEvdGVtcGxh dGUKaW5kZXggNGFmMDg1MTg4YmY0NC4uMDFlYzQxNzZiZDYwMiAxMDA2NDQKLS0tIGEvc3JjcGtn cy9tZ2JhL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWdiYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21nYmEnCiBwa2duYW1lPW1nYmEKIHZlcnNpb249MC4x MC4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2Vk ZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSBkZXNrdG9wLWZpbGUt dXRpbHMiCiBtYWtlZGVwZW5kcz0iU0RMMi1kZXZlbCBmZm1wZWctZGV2ZWwgbGliZWRpdC1kZXZl bCBsaWJlcG94eS1kZXZlbCBsaWJtYWdpY2stZGV2ZWwKCkZyb20gMTg5YTM4Nzg5YjEzMDIwYTA2 YmFiOWJhN2JkNThlY2UzMGY2Nzg0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDUyLzExNV0gbWluaWRsbmE6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bWluaWRsbmEvdGVtcGxhdGUgYi9zcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlCmluZGV4IGQ1NTFl NDllZDQ2NTMuLjVmYTkyOWYzYTBjMTIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWluaWRsbmEvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ21pbmlkbG5hJwogcGtnbmFtZT1taW5pZGxuYQogdmVyc2lvbj0x LjMuMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQog Y29uZmlndXJlX2FyZ3M9IgogIC0tc2JpbmRpcj0vdXNyL2JpbgoKRnJvbSBmYjE1MmY3OTNlNGQ1 OTEwNWY3NGY2NzVhODliOWYyN2I5ZDE1MGUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTMvMTE1XSBtbHQ6IHJldmJ1bXAgZm9yIGZmbXBl ZzQtNC40LjMKCi0tLQogc3JjcGtncy9tbHQvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFu Z2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9tbHQvdGVtcGxhdGUgYi9zcmNwa2dzL21sdC90ZW1wbGF0ZQppbmRleCA1YWQxOTk0NjFlNjk0 Li5mMGIzYWYxOTNkYjJjIDEwMDY0NAotLS0gYS9zcmNwa2dzL21sdC90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL21sdC90ZW1wbGF0ZQpAQCAtMSwxNCArMSwxNCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnbWx0JwogcGtnbmFtZT1tbHQKIHZlcnNpb249Ni4yNi4xCi1yZXZpc2lvbj0xCityZXZpc2lv bj0yCiBidWlsZF9zdHlsZT1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLXByZWZpeD0vdXNy IC0tbGliZGlyPS91c3IvbGliJFhCUFNfVEFSR0VUX1dPUkRTSVpFCiAgLS1lbmFibGUtZ3BsIC0t ZW5hYmxlLWdwbDMgLS1kaXNhYmxlLXN3ZmRlYyAtLXdpdGhvdXQta2RlCiAgLS1zd2lnLWxhbmd1 YWdlcz1weXRob24iCiBob3N0bWFrZWRlcGVuZHM9ImRveHlnZW4gcGtnLWNvbmZpZyBsYWRzcGEt c2RrIHN3aWcgcHl0aG9uMyB3aGljaCIKICMgWFhYOiBtb3ZpdCB2aWQuc3RhYgotbWFrZWRlcGVu ZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZy1kZXZlbCBndGsrLWRldmVsIGphY2stZGV2ZWwgbGFk c3BhLXNkaworbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZzQtZGV2ZWwgZ3RrKy1k ZXZlbCBqYWNrLWRldmVsIGxhZHNwYS1zZGsKICBsaWJleGlmLWRldmVsIGxpYnNhbXBsZXJhdGUt ZGV2ZWwgbGlieG1sMi1kZXZlbCBzb3gtZGV2ZWwgU0RMX2ltYWdlLWRldmVsCiAgZmZ0dy1kZXZl bCBmcmVpMHItcGx1Z2lucyBweXRob24zLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwgbW92aXQtZGV2 ZWwKICBsaWJ2aWRzdGFiLWRldmVsIgoKRnJvbSAxNGUzNGJlODM4ODQzMTY3NGQ5MTIwNjM3MDAy ZjM0OTc5M2QyOGZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNTQvMTE1XSBtb2M6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQog c3JjcGtncy9tb2MvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tb2MvdGVtcGxhdGUg Yi9zcmNwa2dzL21vYy90ZW1wbGF0ZQppbmRleCA1YWVkNWQzNjU1OGQzLi5kOGRlODE2MDI2YjY0 IDEwMDY0NAotLS0gYS9zcmNwa2dzL21vYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21vYy90ZW1w bGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbW9jJwogcGtnbmFt ZT1tb2MKIHZlcnNpb249Mi41LjIKLXJldmlzaW9uPTYKK3JldmlzaW9uPTcKIGJ1aWxkX3N0eWxl PWdudS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRz PSJkYi1kZXZlbCBuY3Vyc2VzLWRldmVsIGxpYmN1cmwtZGV2ZWwgcG9wdC1kZXZlbCBmZm1wZWct ZGV2ZWwKK21ha2VkZXBlbmRzPSJkYi1kZXZlbCBuY3Vyc2VzLWRldmVsIGxpYmN1cmwtZGV2ZWwg cG9wdC1kZXZlbCBmZm1wZWc0LWRldmVsCiAgamFjay1kZXZlbCBhbHNhLWxpYi1kZXZlbCBsaWJs dGRsLWRldmVsIGxpYmZsYWMtZGV2ZWwgbGlidm9yYmlzLWRldmVsCiAgbGlibWFkLWRldmVsIGxp Ym1wY2RlYy1kZXZlbCBsaWJtb2RwbHVnLWRldmVsIGxpYmlkM3RhZy1kZXZlbCBmYWFkMi1kZXZl bAogIHRhZ2xpYi1kZXZlbCBsaWJzbmRmaWxlLWRldmVsIHdhdnBhY2stZGV2ZWwgc3BlZXgtZGV2 ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbAoKRnJvbSAwNGVjYTcyMWJiMmRjMzg2NGNkMDBlN2U0ZjZi YWRjMTVkMmZjOWVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNTUvMTE1XSBtb3Rpb246IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9tb3Rpb24vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21vdGlvbi90ZW1wbGF0 ZSBiL3NyY3BrZ3MvbW90aW9uL3RlbXBsYXRlCmluZGV4IDNjZjNjMzAzNWM1YjcuLjdkY2ExMmQ4 NTFlMzMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbW90aW9uL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv bW90aW9uL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbW90 aW9uJwogcGtnbmFtZT1tb3Rpb24KIHZlcnNpb249NC41LjEKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2Ug cGtnLWNvbmZpZyBnZXR0ZXh0LWRldmVsIHRhciIKIG1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwg bGlibWljcm9odHRwZC1kZXZlbCB2NGwtdXRpbHMtZGV2ZWwgZ2V0dGV4dC1kZXZlbCIKCkZyb20g YWNlYjkyMjJiMzAxYTk2ODU0YThhOWRhNzg2ODA3NmY0Y2RlMjcyOCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU2LzExNV0gbXVzaWtjdWJl OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUgYi9zcmNwa2dzL211c2lrY3Vi ZS90ZW1wbGF0ZQppbmRleCAxOTNjYjA2YTVmYWRiLi4xZjc4YWRhMTQ1MWI2IDEwMDY0NAotLS0g YS9zcmNwa2dzL211c2lrY3ViZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL211c2lrY3ViZS90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ211c2lrY3ViZScKIHBr Z25hbWU9bXVzaWtjdWJlCiB2ZXJzaW9uPTMuMC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1jbWFrZQogbWFrZV9jbWQ9bWFrZQogY29uZmlndXJlX2FyZ3M9Ii1ETk9fTkNV UlNFU1c9MSIKCkZyb20gMDc1Y2Q2ZjA2NzJlMmQyNTJmZDhhYzk0MTUxOTcxMWU0MmNjODZmMSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU3 LzExNV0gbm90Y3Vyc2VzOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvbm90 Y3Vyc2VzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ub3RjdXJzZXMvdGVtcGxhdGUgYi9z cmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0ZQppbmRleCA2ZGQ4YTA5MTMxOWY3Li4zMTEwYzMwYzlh ZmYyIDEwMDY0NAotLS0gYS9zcmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L25vdGN1cnNlcy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J25vdGN1cnNlcycKIHBrZ25hbWU9bm90Y3Vyc2VzCiB2ZXJzaW9uPTMuMC45Ci1yZXZpc2lvbj0x CityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EVVNFX1NU QVRJQz1PTiAkKHZvcHRfYm9vbCBtYW4gVVNFX1BBTkRPQykiCiBob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWcgJCh2b3B0X2lmIG1hbiBwYW5kb2MpIgoKRnJvbSA5YThhYjA2ZmM1OGVkZTJjOTcw ZTgyNjA2ODZhMDlkMGJmZThhOWRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwNTgvMTE1XSBvYnM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9vYnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29icy90ZW1wbGF0 ZSBiL3NyY3BrZ3Mvb2JzL3RlbXBsYXRlCmluZGV4IDdiNjljNjMwZDMwZDQuLjJjOGQ2OGQ3MWYz YTEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb2JzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb2JzL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb2JzJwogcGtnbmFt ZT1vYnMKIHZlcnNpb249MjkuMS4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0iaTY4 NiogeDg2XzY0KiBwcGM2NGxlKiBhYXJjaDY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1 cmVfYXJncz0iLURPQlNfVkVSU0lPTl9PVkVSUklERT0ke3ZlcnNpb259IC1ERU5BQkxFX0pBQ0s9 T04KCkZyb20gZDAzMmY4ZDNlNGEzODM0ZGNiODJhNWYyZGRhZWM2ZjI1NTY1YmE4YyBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU5LzExNV0g b2xpdmU6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9vbGl2ZS90ZW1w bGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29saXZlL3RlbXBsYXRlIGIvc3JjcGtncy9vbGl2 ZS90ZW1wbGF0ZQppbmRleCAxMmE0NjkzNmM5OTAwLi41YzI5MTdiOWM1MTI0IDEwMDY0NAotLS0g YS9zcmNwa2dzL29saXZlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUKQEAg LTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29saXZlJwogcGtnbmFtZT1vbGl2 ZQogdmVyc2lvbj0wLjEuMgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9cW1h a2UKIGhvc3RtYWtlZGVwZW5kcz0icXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIHBrZy1jb25maWci Ci1tYWtlZGVwZW5kcz0icXQ1LWRldmVsIHF0NS1tdWx0aW1lZGlhLWRldmVsIHF0NS1zdmctZGV2 ZWwgZmZtcGVnLWRldmVsIGZyZWkwci1wbHVnaW5zIgorbWFrZWRlcGVuZHM9InF0NS1kZXZlbCBx dDUtbXVsdGltZWRpYS1kZXZlbCBxdDUtc3ZnLWRldmVsIGZmbXBlZzQtZGV2ZWwgZnJlaTByLXBs dWdpbnMiCiBzaG9ydF9kZXNjPSJOb24tbGluZWFyIHZpZGVvIGVkaXRvciIKIG1haW50YWluZXI9 Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxh dGVyIgoKRnJvbSBlNmMxZGU0OGNlZDFlNmM3NDU2YTQxYzljNGM3YjNkNDI5MjIwMzMzIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjAvMTE1 XSBvbXhwbGF5ZXI6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9vbXhw bGF5ZXIvdGVtcGxhdGUgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygr KSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29teHBsYXllci90ZW1wbGF0 ZSBiL3NyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlCmluZGV4IGU3MGJmNzg3M2Q0ZGUuLjBlOWJj NzBlN2M4ZWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdvbXhwbGF5ZXInCiBwa2duYW1lPW9teHBsYXllcgogdmVyc2lvbj0yMDE5MDEwMgot cmV2aXNpb249MQorcmV2aXNpb249Mgogc2hvcnRfZGVzYz0iQ29tbWFuZGxpbmUgT01YIHBsYXll ciBmb3IgdGhlIFJhc3BiZXJyeSBQaSIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9p ZGxpbnV4Lm9yZz4iCi1saWNlbnNlPSJHUEwtMiIKK2xpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIi CiBob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL3BvcGNvcm5taXgvb214cGxheWVyIgogCiBf Y29tbWl0PSJmMDYyMzVjYzk2OTBhNmQ1ODE4NzUxNDQ1MmRmOGNmOGZjZGFhY2VjIgpAQCAtMTUs NyArMTUsNyBAQCBjaGVja3N1bT1hZjJkOTQ1MGY4OTQ3ODQyZWE4YzQwMWZlOWY3MWVlYzQ0NDAx M2ViYmRlZTI5ZjJhYzgyOGM5YzQ5M2MxMzI5CiBhcmNocz0iYXJtdjZsKiBhcm12N2wqIgogYnVp bGRfc3R5bGU9Z251LW1ha2VmaWxlCiBob3N0bWFrZWRlcGVuZHM9ImN1cmwgcGtnLWNvbmZpZyIK LW1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBycGktdXNlcmxhbmQtZGV2ZWwgcGNyZS1kZXZl bCBib29zdC1kZXZlbCBmcmVldHlwZS1kZXZlbCBmZm1wZWctZGV2ZWwgZGJ1cy1kZXZlbCIKK21h a2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBycGktdXNlcmxhbmQtZGV2ZWwgcGNyZS1kZXZlbCBi b29zdC1kZXZlbCBmcmVldHlwZS1kZXZlbCBmZm1wZWc0LWRldmVsIGRidXMtZGV2ZWwiCiBkZXBl bmRzPSJmcmVlZm9udC10dGYiCiAKIGRvX2J1aWxkKCkgewoKRnJvbSAxMGJmZDZlYmIxYjVkNTI5 OTg2MTQ0NmM3ZjhkZWY2NjAyZjVmZjI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUw IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjEvMTE1XSBvcGVuc2hvdDogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9vcGVuc2hvdC90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUKaW5kZXggNWQy YWRlYmEyNjlmZC4uOGY0Nzg1MWVlZjM1NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9vcGVuc2hvdC90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbnNob3QnCiBwa2duYW1lPW9wZW5zaG90CiB2ZXJzaW9u PTMuMC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1weXRob24zLW1vZHVs ZQogaG9zdG1ha2VkZXBlbmRzPSJweXRob24zIHB5dGhvbjMtc2V0dXB0b29scyIKIG1ha2VkZXBl bmRzPSJmZm1wZWctZGV2ZWwgcHl0aG9uMy1QeVF0NSIKCkZyb20gYTcyZTA1ODMyYjc4NDk3NmQ3 ZTVkMWY2MDk0YTUzYzJhOTlmNmNjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYyLzExNV0gb3BlbnRvb256OiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9vcGVudG9vbnovdGVtcGxhdGUgYi9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZQppbmRleCBl ZTlmNzYwM2Y1NWZkLi4zZTgxODM0Y2EwZWRkIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW50b29u ei90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW50b29ueicKIHBrZ25hbWU9b3BlbnRvb256CiB2 ZXJzaW9uPTEuNi4wCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF93cmtzcmM9InRvb256 L3NvdXJjZXMiCiBidWlsZF9zdHlsZT1jbWFrZQogbWFrZV9jbWQ9bWFrZQoKRnJvbSBiYjA4ZGQx ZjQyYTYyMjBjNjZkZjA2ODdhOWNlMDY2ZDE4MGRiNDhhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIz IDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjMvMTE1XSBwaWFub2JhcjogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZSBiL3NyY3BrZ3MvcGlhbm9iYXIvdGVtcGxhdGUK aW5kZXggZTNmZWJiODIxYTQ1MS4uMWUzZGMxYmY5MzA4ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9w aWFub2Jhci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncGlhbm9iYXInCiBwa2duYW1lPXBpYW5vYmFy CiB2ZXJzaW9uPTIwMjIuMDQuMDEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PWdudS1tYWtlZmlsZQogbWFrZV9idWlsZF9hcmdzPSJWPTEiCiBob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWciCgpGcm9tIDM3ZjQ3YzQ5YTljMGE1NzIzODVhMDAwMDMzZjBhNTY3ZTVmYjgyZDMg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2 NC8xMTVdIHBwc3NwcDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3Bw c3NwcC90ZW1wbGF0ZSB8IDcgKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygr KSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZSBi L3NyY3BrZ3MvcHBzc3BwL3RlbXBsYXRlCmluZGV4IDg2NTExZWY1MTVkZWEuLmQ1NmQ1YzM3ZDU4 NDggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHBzc3BwL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcHBz c3BwL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHBzc3Bw JwogcGtnbmFtZT1wcHNzcHAKIHZlcnNpb249MS4xNS40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBfZ2xzbGFuZ19jb21taXQ9YjM0ZjYxOWUxYzg1ODEwZGNiM2M1NzgxMDdkMmU0OGJhNGVlMmIz NwogX1NQSVJWX0Nyb3NzX2NvbW1pdD00MjEyZWVmNjdlZDBjYTA0OGNiNzI2YTY3NjcxODU1MDRl NzY5NWU1CiBfYXJtaXBzX2NvbW1pdD03YmQxZWM5M2Q0NTg2OTg1YmExZWY0MjBiNDNiNWU2MjBm Njg2OTVlCkBAIC0xNCw3ICsxNCw3IEBAIGNvbmZpZ3VyZV9hcmdzPSItREhFQURMRVNTPTEgLURV U0VfU1lTVEVNX0ZGTVBFRz0xIC1EVU5JVFRFU1Q9T04KICAtRFVTSU5HX1FUX1VJPSQodm9wdF9p ZiBxdCBPTiBPRkYpIC1EVVNFX1NZU1RFTV9aU1REPU9OCiAgLURBUk1JUFNfVVNFX1NURF9GSUxF U1lTVEVNPU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHB5dGhvbjMgJCh2b3B0X2lm IHF0IHF0NS1ob3N0LXRvb2xzKSIKLW1ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGdsZXctZGV2ZWwg ZmZtcGVnLWRldmVsIGxpYnppcC1kZXZlbAorbWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgZ2xldy1k ZXZlbCBmZm1wZWc0LWRldmVsIGxpYnppcC1kZXZlbAogIHNuYXBweS1kZXZlbCByYXBpZGpzb24g bGlicG5nLWRldmVsIGxpYnpzdGQtZGV2ZWwKICAkKHZvcHRfaWYgc2RsMiBTREwyLWRldmVsKSAk KHZvcHRfaWYgd2F5bGFuZCB3YXlsYW5kLWRldmVsKQogICQodm9wdF9pZiBxdCAncXQ1LWRldmVs IHF0NS1tdWx0aW1lZGlhLWRldmVsJykiCkBAIC02OCwxMyArNjgsMTIgQEAgcG9zdF9leHRyYWN0 KCkgewogCiB9CiAKLXBvc3RfcGF0Y2goKXsKK3Bvc3RfcGF0Y2goKSB7CiAJIyBkaXNhYmxlIGdp dCB2ZXJzaW9uaW5nCiAJdnNlZCAtZSAnc3xmaW5kX3BhY2thZ2UoR2l0KXwjICZ8JyAtaSBnaXQt dmVyc2lvbi5jbWFrZQogfQogCiBkb19pbnN0YWxsKCkgewotCXZsaWNlbnNlIExJQ0VOU0UuVFhU CiAJdmluc3RhbGwgaWNvbnMvaWNvbi5zdmcgNjQ0IHVzci9zaGFyZS9waXhtYXBzIHBwc3NwcC5z dmcKIAl2aW5zdGFsbCBRdC9QUFNTUFAuZGVza3RvcCA2NDQgdXNyL3NoYXJlL2FwcGxpY2F0aW9u cwogCXZiaW4gYnVpbGQvUFBTU1BQSGVhZGxlc3MgcHBzc3BwLWhlYWRsZXNzCgpGcm9tIDNhYTk5 YzExYTU4NGU4ZTVkODI0ZmRiM2M1ODgwODFkZjYxYWQ3NjAgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2NS8xMTVdIHBxaXY6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9wcWl2L3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9wcWl2L3RlbXBsYXRlIGIvc3JjcGtncy9wcWl2L3RlbXBsYXRlCmluZGV4IDU0MmZjMjdh MmQzMmEuLjkzMDhkOTQ5YjZhMWMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHFpdi90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3BxaXYvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdwcWl2JwogcGtnbmFtZT1wcWl2CiB2ZXJzaW9uPTIuMTIKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIgogbWFrZWRlcGVuZHM9ImdsaWItZGV2ZWwgZ3RrKzMtZGV2ZWwgJCh2b3B0X2lmIGZm bXBlZyBmZm1wZWctZGV2ZWwpCgpGcm9tIGI3ODZiMjQ1YjQ4OGUxZWNmOTY3NjYxYzM4YmY3MWY2 MjM2YTk0MmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDog W1BBVENIIDA2Ni8xMTVdIHFtbXA6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9xbW1wL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xbW1wL3RlbXBsYXRlIGIvc3JjcGtn cy9xbW1wL3RlbXBsYXRlCmluZGV4IDI2YzY2MWVkMTZiZWEuLmExNTBkNzQ0MWM3YTYgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3FtbXAvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxbW1wJwogcGtnbmFtZT1xbW1w CiB2ZXJzaW9uPTEuNi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFr ZQogY29uZmlndXJlX2FyZ3M9Ii1EVVNFX0hBTDpCT09MPUZBTFNFIC1EUU1NUF9ERUZBVUxUX1VJ OlNUUklORz1zaW1wbGUiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LWhvc3QtdG9v bHMgcXQ1LXFtYWtlIgoKRnJvbSAwZTJmMDU4NGIxYWI3YzU1OWE4NzQ4YmZhMTZhOTVjYTZmMjQ2 OTE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwNjcvMTE1XSBxdDUtd2ViZW5naW5lOiB1cGRhdGUgdG8gNS4xNS4xMwoKLS0tCiAuLi4vY2hy b21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaCAgICAgICAgfCAgMTEgKysKIHNyY3BrZ3Mv cXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggICB8IDE3OSArKysrKysrKysrKysr KysrKysKIHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZSAgICAgICAgICAgICAgICB8ICAx MCArLQogMyBmaWxlcyBjaGFuZ2VkLCAxOTUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9jaHJvbWl1 bS1tZWRpYS1maWx0ZXJzLWNwcDE0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9x dDUtd2ViZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2gg Yi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9jaHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNw cDE0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjA0YWRj NTQwZjJjYmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hl cy9jaHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNwcDE0LnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0t LSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL0JVSUxELmduCTIwMjMtMDIt MjcgMTM6MzI6NTkuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0v bWVkaWEvZmlsdGVycy9CVUlMRC5nbgkyMDIzLTA0LTAyIDE3OjIxOjM5LjIwNDA2NjM4NCAtMDQw MAorQEAgLTk2LDYgKzk2LDggQEAKKyAgICAgIi8vdWkvZ2Z4L2dlb21ldHJ5Omdlb21ldHJ5IiwK KyAgIF0KKyAKKysgIGNmbGFnc19jYyA9IFsgIi1zdGQ9YysrMTQiIF0KKysKKyAgIGxpYnMgPSBb XQorIAorICAgaWYgKHByb3ByaWV0YXJ5X2NvZGVjcykgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9x dDUtd2ViZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwMC4uYWM1NWUxNjM0NDIzYQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdl YmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSwxNzkgQEAKKy0tLSBhL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCTIwMjMt MDQtMDIgMTY6NTA6NTcuNzMyNTQ3NDQ2IC0wNDAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21p dW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwkyMDIzLTA0LTAyIDE2OjUwOjA5LjQ4 NjQ3ODk5NSAtMDQwMAorQEAgLTU3LDYgKzU3LDggQEAKKyAKKyBuYW1lc3BhY2UgeworIAorK2Nv bnN0ZXhwciBpbnQ2NF90IGtSZWxhdGl2ZVRzQmFzZSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KDB4 N2ZmZWZmZmZmZmZmZmZmZik7CisrCisgdm9pZCBTZXRBVlN0cmVhbURpc2NhcmQoQVZTdHJlYW0q IHN0cmVhbSwgQVZEaXNjYXJkIGRpc2NhcmQpIHsKKyAgIERDSEVDSyhzdHJlYW0pOworICAgc3Ry ZWFtLT5kaXNjYXJkID0gZGlzY2FyZDsKK0BAIC05MCwyNCArOTIsMTIgQEAKKyAKKyBzdGF0aWMg YmFzZTo6VGltZURlbHRhIEV4dHJhY3RTdGFydFRpbWUoQVZTdHJlYW0qIHN0cmVhbSkgeworICAg Ly8gVGhlIGRlZmF1bHQgc3RhcnQgdGltZSBpcyB6ZXJvLgorLSAgYmFzZTo6VGltZURlbHRhIHN0 YXJ0X3RpbWU7CisrICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGltZSA9IGtOb1RpbWVzdGFtcDsK KyAKKyAgIC8vIEZpcnN0IHRyeSB0byB1c2UgIHRoZSB8c3RhcnRfdGltZXwgdmFsdWUgYXMgaXMu CisgICBpZiAoc3RyZWFtLT5zdGFydF90aW1lICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCkKKyAgICAg c3RhcnRfdGltZSA9IENvbnZlcnRGcm9tVGltZUJhc2Uoc3RyZWFtLT50aW1lX2Jhc2UsIHN0cmVh bS0+c3RhcnRfdGltZSk7CisgCistICAvLyBOZXh0IHRyeSB0byB1c2UgdGhlIGZpcnN0IERUUyB2 YWx1ZSwgZm9yIGNvZGVjcyB3aGVyZSB3ZSBrbm93IFBUUyA9PSBEVFMKKy0gIC8vIChleGNsdWRl cyBhbGwgSDI2eCBjb2RlY3MpLiBUaGUgc3RhcnQgdGltZSBtdXN0IGJlIHJldHVybmVkIGluIFBU Uy4KKy0gIGlmIChzdHJlYW0tPmZpcnN0X2R0cyAhPSBrTm9GRm1wZWdUaW1lc3RhbXAgJiYKKy0g ICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IRVZDICYmCist ICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSDI2NCAmJgor LSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX01QRUc0KSB7 CistICAgIGNvbnN0IGJhc2U6OlRpbWVEZWx0YSBmaXJzdF9wdHMgPQorLSAgICAgICAgQ29udmVy dEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgc3RyZWFtLT5maXJzdF9kdHMpOworLSAg ICBpZiAoZmlyc3RfcHRzIDwgc3RhcnRfdGltZSkKKy0gICAgICBzdGFydF90aW1lID0gZmlyc3Rf cHRzOworLSAgfQorLQorICAgcmV0dXJuIHN0YXJ0X3RpbWU7CisgfQorIAorQEAgLTQwOCwxMSAr Mzk4LDExIEBACisgICBzY29wZWRfcmVmcHRyPERlY29kZXJCdWZmZXI+IGJ1ZmZlcjsKKyAKKyAg IGlmICh0eXBlKCkgPT0gRGVtdXhlclN0cmVhbTo6VEVYVCkgeworLSAgICBpbnQgaWRfc2l6ZSA9 IDA7CisrICAgIHNpemVfdCBpZF9zaXplID0gMDsKKyAgICAgdWludDhfdCogaWRfZGF0YSA9IGF2 X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFU QV9XRUJWVFRfSURFTlRJRklFUiwgJmlkX3NpemUpOworIAorLSAgICBpbnQgc2V0dGluZ3Nfc2l6 ZSA9IDA7CisrICAgIHNpemVfdCBzZXR0aW5nc19zaXplID0gMDsKKyAgICAgdWludDhfdCogc2V0 dGluZ3NfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAgICAgcGFja2V0Lmdl dCgpLCBBVl9QS1RfREFUQV9XRUJWVFRfU0VUVElOR1MsICZzZXR0aW5nc19zaXplKTsKKyAKK0BA IC00MjQsNyArNDE0LDcgQEAKKyAgICAgYnVmZmVyID0gRGVjb2RlckJ1ZmZlcjo6Q29weUZyb20o cGFja2V0LT5kYXRhLCBwYWNrZXQtPnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpZGVfZGF0YS5kYXRhKCksIHNpZGVfZGF0YS5zaXplKCkpOworICAgfSBlbHNl IHsKKy0gICAgaW50IHNpZGVfZGF0YV9zaXplID0gMDsKKysgICAgc2l6ZV90IHNpZGVfZGF0YV9z aXplID0gMDsKKyAgICAgdWludDhfdCogc2lkZV9kYXRhID0gYXZfcGFja2V0X2dldF9zaWRlX2Rh dGEoCisgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX01BVFJPU0tBX0JMT0NLQURE SVRJT05BTCwgJnNpZGVfZGF0YV9zaXplKTsKKyAKK0BAIC00ODUsNyArNDc1LDcgQEAKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXQtPnNpemUgLSBkYXRhX29m ZnNldCk7CisgICAgIH0KKyAKKy0gICAgaW50IHNraXBfc2FtcGxlc19zaXplID0gMDsKKysgICAg c2l6ZV90IHNraXBfc2FtcGxlc19zaXplID0gMDsKKyAgICAgY29uc3QgdWludDMyX3QqIHNraXBf c2FtcGxlc19wdHIgPQorICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+ KGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZf UEtUX0RBVEFfU0tJUF9TQU1QTEVTLCAmc2tpcF9zYW1wbGVzX3NpemUpKTsKK0BAIC0xNTg3LDYg KzE1NzcsOCBAQAorICAgZm9yIChjb25zdCBhdXRvJiBzdHJlYW0gOiBzdHJlYW1zXykgeworICAg ICBpZiAoIXN0cmVhbSB8fCBzdHJlYW0tPklzRW5hYmxlZCgpICE9IGVuYWJsZWQpCisgICAgICAg Y29udGludWU7CisrICAgIGlmIChzdHJlYW0tPmF2X3N0cmVhbSgpLT5zdGFydF90aW1lID09IEFW X05PUFRTX1ZBTFVFKQorKyAgICAgIGNvbnRpbnVlOworICAgICBpZiAoIWxvd2VzdF9zdGFydF90 aW1lX3N0cmVhbSB8fAorICAgICAgICAgc3RyZWFtLT5zdGFydF90aW1lKCkgPCBsb3dlc3Rfc3Rh cnRfdGltZV9zdHJlYW0tPnN0YXJ0X3RpbWUoKSkgeworICAgICAgIGxvd2VzdF9zdGFydF90aW1l X3N0cmVhbSA9IHN0cmVhbS5nZXQoKTsKK0BAIC0xNjA0LDYgKzE1OTYsOCBAQAorICAgICBpZiAo c3RyZWFtICYmIHN0cmVhbS0+dHlwZSgpID09IERlbXV4ZXJTdHJlYW06OlZJREVPICYmCisgICAg ICAgICBzdHJlYW0tPklzRW5hYmxlZCgpKSB7CisgICAgICAgdmlkZW9fc3RyZWFtID0gc3RyZWFt LmdldCgpOworKyAgICAgIGlmIChzdHJlYW0tPmF2X3N0cmVhbSgpLT5zdGFydF90aW1lID09IEFW X05PUFRTX1ZBTFVFKQorKyAgICAgICAgY29udGludWU7CisgICAgICAgaWYgKHZpZGVvX3N0cmVh bS0+c3RhcnRfdGltZSgpIDw9IHNlZWtfdGltZSkgeworICAgICAgICAgcmV0dXJuIHZpZGVvX3N0 cmVhbTsKKyAgICAgICB9CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmggcXR3ZWJlbmdp bmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21t b24uaAorLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29t bW9uLmgJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oCTIwMjItMDctMTEgMjI6 MTI6NDcuOTE3MTkyNzg4IC0wNTAwCitAQCAtMjksNiArMjksNyBAQCBleHRlcm4gIkMiIHsKKyAj aW5jbHVkZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4KKyAjaW5jbHVkZSA8bGliYXZmb3JtYXQv YXZpby5oPgorICNpbmNsdWRlIDxsaWJhdnV0aWwvYXZ1dGlsLmg+CisrI2luY2x1ZGUgPGxpYmF2 dXRpbC9jaGFubmVsX2xheW91dC5oPgorICNpbmNsdWRlIDxsaWJhdnV0aWwvaW1ndXRpbHMuaD4K KyAjaW5jbHVkZSA8bGliYXZ1dGlsL2xvZy5oPgorICNpbmNsdWRlIDxsaWJhdnV0aWwvbWFzdGVy aW5nX2Rpc3BsYXlfbWV0YWRhdGEuaD4KK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAu b3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRl ci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0 ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVk aWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRlci5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAw MDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvYXVk aW9fZmlsZV9yZWFkZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTcxOTI3ODggLTA1MDAKK0BA IC04NSw3ICs4NSw3IEBAIGJvb2wgQXVkaW9GaWxlUmVhZGVyOjpPcGVuRGVtdXhlcigpIHsKKyB9 CisgCisgYm9vbCBBdWRpb0ZpbGVSZWFkZXI6Ok9wZW5EZWNvZGVyKCkgeworLSAgQVZDb2RlYyog Y29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOwor KyAgY29uc3QgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250 ZXh0Xy0+Y29kZWNfaWQpOworICAgaWYgKGNvZGVjKSB7CisgICAgIC8vIE1QMyBkZWNvZGVzIHRv IFMxNlAgd2hpY2ggd2UgZG9uJ3Qgc3VwcG9ydCwgdGVsbCBpdCB0byB1c2UgUzE2IGluc3RlYWQu CisgICAgIGlmIChjb2RlY19jb250ZXh0Xy0+c2FtcGxlX2ZtdCA9PSBBVl9TQU1QTEVfRk1UX1Mx NlApCitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2No cm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2RlY29kZXIuY2MgcXR3ZWJlbmdpbmUt NS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfYXVkaW9f ZGVjb2Rlci5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZt cGVnX2F1ZGlvX2RlY29kZXIuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAK KysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRpb19k ZWNvZGVyLmNjCTIwMjItMDctMTEgMjI6MTI6NDcuOTE3MTkyNzg4IC0wNTAwCitAQCAtMzI5LDcg KzMyOSw3IEBAIGJvb2wgRkZtcGVnQXVkaW9EZWNvZGVyOjpDb25maWd1cmVEZWNvZGUKKyAgICAg fQorICAgfQorIAorLSAgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2Rl Y19jb250ZXh0Xy0+Y29kZWNfaWQpOworKyAgY29uc3QgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVj X2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOworICAgaWYgKCFjb2RlYyB8 fAorICAgICAgIGF2Y29kZWNfb3BlbjIoY29kZWNfY29udGV4dF8uZ2V0KCksIGNvZGVjLCAmY29k ZWNfb3B0aW9ucykgPCAwKSB7CisgICAgIERMT0coRVJST1IpIDw8ICJDb3VsZCBub3QgaW5pdGlh bGl6ZSBhdWRpbyBkZWNvZGVyOiAiCitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9y aWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MgcXR3 ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1w ZWdfZ2x1ZS5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZt cGVnX2dsdWUuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVlLmNjCTIwMjItMDct MTEgMjI6MTI6NDcuOTE4MTkyNzc5IC0wNTAwCitAQCAtNTksNyArNTksNiBAQCBzdGF0aWMgaW50 NjRfdCBBVklPU2Vla09wZXJhdGlvbih2b2lkKiBvCisgfQorIAorIHZvaWQgRkZtcGVnR2x1ZTo6 SW5pdGlhbGl6ZUZGbXBlZygpIHsKKy0gIGF2X3JlZ2lzdGVyX2FsbCgpOworIH0KKyAKKyBzdGF0 aWMgdm9pZCBMb2dDb250YWluZXIoYm9vbCBpc19sb2NhbF9maWxlLAorQEAgLTk1LDkgKzk0LDYg QEAgRkZtcGVnR2x1ZTo6RkZtcGVnR2x1ZShGRm1wZWdVUkxQcm90b2NvbAorICAgLy8gRW5hYmxl IGZhc3QsIGJ1dCBpbmFjY3VyYXRlIHNlZWtzIGZvciBNUDMuCisgICBmb3JtYXRfY29udGV4dF8t PmZsYWdzIHw9IEFWRk1UX0ZMQUdfRkFTVF9TRUVLOworIAorLSAgLy8gRW5zdXJlcyB3ZSBjYW4g cmVhZCBvdXQgdmFyaW91cyBtZXRhZGF0YSBiaXRzIGxpa2UgdnA4IGFscGhhLgorLSAgZm9ybWF0 X2NvbnRleHRfLT5mbGFncyB8PSBBVkZNVF9GTEFHX0tFRVBfU0lERV9EQVRBOworLQorICAgLy8g RW5zdXJlcyBmb3JtYXQgcGFyc2luZyBlcnJvcnMgd2lsbCBiYWlsIG91dC4gRnJvbSBhbiBhdWRp dCBvbiAxMS8yMDE3LCBhbGwKKyAgIC8vIGluc3RhbmNlcyB3ZXJlIHJlYWwgZmFpbHVyZXMuIFNv bHZlcyBidWdzIGxpa2UgaHR0cDovL2NyYnVnLmNvbS83MTA3OTEuCisgICBmb3JtYXRfY29udGV4 dF8tPmVycm9yX3JlY29nbml0aW9uIHw9IEFWX0VGX0VYUExPREU7CitkaWZmIC1OYXVycCBxdHdl YmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMv ZmZtcGVnX3ZpZGVvX2RlY29kZXIuY2MgcXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFydHkv Y2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5jYworLS0tIGEvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX3ZpZGVvX2RlY29kZXIuY2MJ MjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjCTIwMjItMDctMTEg MjI6MTI6NDcuOTE4MTkyNzc5IC0wNTAwCitAQCAtMzkxLDcgKzM5MSw3IEBAIGJvb2wgRkZtcGVn VmlkZW9EZWNvZGVyOjpDb25maWd1cmVEZWNvZGUKKyAgIGlmIChkZWNvZGVfbmFsdXNfKQorICAg ICBjb2RlY19jb250ZXh0Xy0+ZmxhZ3MyIHw9IEFWX0NPREVDX0ZMQUcyX0NIVU5LUzsKKyAKKy0g IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNv ZGVjX2lkKTsKKysgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIo Y29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKyAgIGlmICghY29kZWMgfHwgYXZjb2RlY19vcGVu Mihjb2RlY19jb250ZXh0Xy5nZXQoKSwgY29kZWMsIE5VTEwpIDwgMCkgeworICAgICBSZWxlYXNl RkZtcGVnUmVzb3VyY2VzKCk7CisgICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLU5hdXJwIHF0d2Vi ZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9t ZWRpYV9maWxlX2NoZWNrZXIuY2MgcXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hy b21pdW0vbWVkaWEvZmlsdGVycy9tZWRpYV9maWxlX2NoZWNrZXIuY2MKKy0tLSBhL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlhX2ZpbGVfY2hlY2tlci5jYwkyMDIyLTA1 LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVt L21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjCTIwMjItMDctMTEgMjI6MTI6NDcu OTE4MTkyNzc5IC0wNTAwCitAQCAtNjgsNyArNjgsNyBAQCBib29sIE1lZGlhRmlsZUNoZWNrZXI6 OlN0YXJ0KGJhc2U6OlRpbWVECisgICAgICAgYXV0byBjb250ZXh0ID0gQVZTdHJlYW1Ub0FWQ29k ZWNDb250ZXh0KGZvcm1hdF9jb250ZXh0LT5zdHJlYW1zW2ldKTsKKyAgICAgICBpZiAoIWNvbnRl eHQpCisgICAgICAgICBjb250aW51ZTsKKy0gICAgICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNf ZmluZF9kZWNvZGVyKGNwLT5jb2RlY19pZCk7CisrICAgICAgY29uc3QgQVZDb2RlYyogY29kZWMg PSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihjcC0+Y29kZWNfaWQpOworICAgICAgIGlmIChjb2RlYyAm JiBhdmNvZGVjX29wZW4yKGNvbnRleHQuZ2V0KCksIGNvZGVjLCBudWxscHRyKSA+PSAwKSB7Cisg ICAgICAgICBhdXRvIGxvb3AgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGbXBlZ0RlY29kaW5nTG9vcD4o Y29udGV4dC5nZXQoKSk7CisgICAgICAgICBzdHJlYW1fY29udGV4dHNbaV0gPSB7c3RkOjptb3Zl KGNvbnRleHQpLCBzdGQ6Om1vdmUobG9vcCl9OworZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4x NS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxl cy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MgcXR3ZWJlbmdp bmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVs ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZGVjb2Rlcl9pbXBsLmNjCistLS0gYS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k aW5nL2NvZGVjcy9oMjY0L2gyNjRfZGVjb2Rlcl9pbXBsLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAu MDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZGVjb2Rlcl9pbXBs LmNjCTIwMjItMDctMTEgMjI6MTI6NDcuOTE4MTkyNzc5IC0wNTAwCitAQCAtMjAzLDcgKzIwMyw3 IEBAIGludDMyX3QgSDI2NERlY29kZXJJbXBsOjpJbml0RGVjb2RlKGNvbnMKKyAgIC8vIGEgcG9p bnRlciB8dGhpc3wuCisgICBhdl9jb250ZXh0Xy0+b3BhcXVlID0gdGhpczsKKyAKKy0gIEFWQ29k ZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoYXZfY29udGV4dF8tPmNvZGVjX2lkKTsK KysgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoYXZfY29udGV4 dF8tPmNvZGVjX2lkKTsKKyAgIGlmICghY29kZWMpIHsKKyAgICAgLy8gVGhpcyBpcyBhbiBpbmRp Y2F0aW9uIHRoYXQgRkZtcGVnIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCBvciBpdCBoYXMgbm90 CisgICAgIC8vIGJlZW4gY29tcGlsZWQvaW5pdGlhbGl6ZWQgd2l0aCB0aGUgY29ycmVjdCBzZXQg b2YgY29kZWNzLgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlIGIv c3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlCmluZGV4IDY3OWQwZmEyYWQ4NGIuLmI4OWZl NGMxYWQ1MGEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUKQEAgLTEsOSArMSw5IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdxdDUtd2ViZW5naW5lJwogcGtnbmFtZT1xdDUtd2ViZW5naW5lCi12ZXJz aW9uPTUuMTUuMTEKLXJldmlzaW9uPTQKK3ZlcnNpb249NS4xNS4xMworcmV2aXNpb249MQogX3Zl cnNpb249IiR7dmVyc2lvbn0tbHRzIgotX2Nocm9taXVtX2NvbW1pdD1iZTM0OWVhZjYyZTc3OTU1 NzkxZDdiZjI5Zjg5M2YxZThhMzdkYWY0CitfY2hyb21pdW1fY29tbWl0PWU0OGRmNzgwM2M3Yzk4 YjBiMjQ3MWM5NDA1N2QzMmU0NGEzMDFhZDUKIGFyY2hzPSJ4ODZfNjQqIGk2ODYqIGFybXZbNjdd KiBwcGM2NCogYWFyY2g2NCoiCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfc3R5bGU9cW1ha2UK QEAgLTMyLDggKzMyLDggQEAgbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciwgTEdQTC0zLjAtb3It bGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9xdC5pby8iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0 aHViLmNvbS9xdC9xdHdlYmVuZ2luZS9hcmNoaXZlL3Yke192ZXJzaW9ufS50YXIuZ3oKICBodHRw czovL2dpdGh1Yi5jb20vcXQvcXR3ZWJlbmdpbmUtY2hyb21pdW0vYXJjaGl2ZS8ke19jaHJvbWl1 bV9jb21taXR9LnRhci5neiIKLWNoZWNrc3VtPSJhYTc0NjYzNTZjNDUwYzVmNTg3MGY5NzliOTNj ZDdlN2U2MmRhMTE2NWMzMjhmZmNhYjFhOTkyOGRiMThhZDY3Ci0gNmY0N2VkOGFiOGNjMDYyNDEx ZjZmMjA2ZGE2MzUzYmM4MjYzZDZlZDZkNjI5MGM2ODlhMDVjMDFkOTFmNjQ2YiIKK2NoZWNrc3Vt PSI0YjU5ODM4ZWQ3NWVmNzg4YjU5ZTFlNDEyNTM1YTBlNDJkZDlkMzExNjYxZmRlYWRiMTkxYjU4 MWJhODE1YzYzCisgYTkxNjg2NTYyYjFkNGU4YjIyMGUwYmJjYmFiNWZlYjY0NjMwZTJkZTk3NGIz NWFjMDM0YmYzODhhZjc3MWE2YyIKIAogbm9fZ2VuZXJpY19wa2djb25maWdfbGluaz15ZXMKIGJ1 aWxkX29wdGlvbnM9InNuZGlvIHBpcGV3aXJlIgoKRnJvbSBmNjkzMjA4ZDYyOTViYTRlODk4MGE3 ZTBhNTY4ZjFlYWVmYjViZWNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNjgvMTE1XSBxdDU6IHVwZGF0ZSB0byA1LjE1LjgKCi0tLQogLi4u ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoIHwgMTI5MTMgKysrKysr KysrKysrKysrKwogc3JjcGtncy9xdDUvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgMTIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTI5MTkgaW5zZXJ0aW9ucygrKSwgNiBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2ZXJ5 d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDUvcGF0Y2hlcy9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUt MS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNy Yy01LjE1Ljgta2Y1LTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwMC4uOTY2Yzk4YmNkM2JiMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNo ZXMvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNyYy01LjE1Ljgta2Y1LTEucGF0Y2gKQEAgLTAs MCArMSwxMjkxMyBAQAorU3VibWl0dGVkIEJ5OiAgICAgICAgICAgIFBpZXJyZSBMYWJhc3RpZSA8 cGllcnJlX2RvdF9sYWJhc3RpZV9hdF9uZXVmX2RvdF9mcj4KK0RhdGU6ICAgICAgICAgICAgICAg ICAgICAyMDIzLTAxLTA1CitJbml0aWFsIFBhY2thZ2UgVmVyc2lvbjogNS4xNS44CitVcHN0cmVh bSBTdGF0dXM6ICAgICAgICAgQXBwbGllZCAoYWNjb3JkaW5nIHRvIEtERSkKK09yaWdpbjogICAg ICAgICAgICAgICAgICBLREUgcGF0Y2ggc2V0CitEZXNjcmlwdGlvbjogICAgICAgICAgICAgUGF0 Y2ggc2V0IG1haW50YWluZWQgYnkgdGhlIEtERSBmb2xrcworc2VlIGh0dHBzOi8vZG90LmtkZS5v cmcvMjAyMS8wNC8wNi9hbm5vdW5jaW5nLWtkZXMtcXQtNS1wYXRjaC1jb2xsZWN0aW9uCitQYXRj aCBnZW5lcmF0ZWQgdXNpbmcgdGhlIHByb2NlZHVyZSBpbgoraHR0cHM6Ly93aWtpLmxpbnV4ZnJv bXNjcmF0Y2gub3JnL2JsZnMvdGlja2V0LzE3NDc2I2NvbW1lbnQ6MworCitTdWJtb2R1bGUgcXRi YXNlIDRlZTRmYzE4Li45Y2Y1ODZkNjoKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9jb21t b24vYW5kcm9pZC9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9jb21tb24vYW5kcm9p ZC9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IGY3NWJjNDA5M2IuLjJiZDU5NDEwZDQgMTAwNjQ0Cist LS0gYS9xdGJhc2UvbWtzcGVjcy9jb21tb24vYW5kcm9pZC9xcGxhdGZvcm1kZWZzLmgKKysrKyBi L3F0YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRyb2lkL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTE0NCwx MSArMTQ0LDcgQEAKKyAjZGVmaW5lIFFUX1NJR05BTF9BUkdTICAgICAgICAgIGludAorICNkZWZp bmUgUVRfU0lHTkFMX0lHTk9SRSAgICAgICAgU0lHX0lHTgorIAorLSNpZiBkZWZpbmVkKF9fR0xJ QkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorICNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAg ICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGlu dAorLSNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09V UkNFID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRGICAgICAgICAgICAgIDo6c25wcmludGYK K2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9tYWMvc2RrLm1rIGIvcXRiYXNl L21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5taworaW5kZXggZjMwYjU4MzBiNC4uYTMyY2VhY2I2 YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9zZGsubWsKKysrKyBi L3F0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9zZGsubWsKK0BAIC0xLDYgKzEsNiBAQAorIAor IGlmZXEgKCQoUVRfTUFDX1NES19OT19WRVJTSU9OX0NIRUNLKSwpCistICAgIENIRUNLX1NES19D T01NQU5EID0gL3Vzci9iaW4veGNydW4gLS1zZGsgJChFWFBPUlRfUU1BS0VfTUFDX1NESykgLXNo b3ctc2RrLXZlcnNpb24gMj4mMQorKyAgICBDSEVDS19TREtfQ09NTUFORCA9IC91c3IvYmluL3hj cnVuIC0tc2RrICQoRVhQT1JUX1FNQUtFX01BQ19TREspIC1zaG93LXNkay12ZXJzaW9uIDI+L2Rl di9udWxsCisgICAgIENVUlJFTlRfTUFDX1NES19WRVJTSU9OIDo9ICQoc2hlbGwgREVWRUxPUEVS X0RJUj0kKEVYUE9SVF9RTUFLRV9YQ09ERV9ERVZFTE9QRVJfUEFUSCkgJChDSEVDS19TREtfQ09N TUFORCkpCisgICAgIGlmbmVxICgkKENVUlJFTlRfTUFDX1NES19WRVJTSU9OKSwkKEVYUE9SVF9R TUFLRV9NQUNfU0RLX1ZFUlNJT04pKQorICAgICAgICAgIyBXZSBkb24ndCB3YW50IHRvIGNvbXBs YWluIGFib3V0IG91dCBvZiBkYXRlIFNESyB1bmxlc3MgdGhlIHRhcmdldCBuZWVkcyB0byBiZSBy ZW1hZGUuCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbGludXgtY2xhbmcvcXBsYXRmb3Jt ZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbGludXgtY2xhbmcvcXBsYXRmb3JtZGVmcy5oCitpbmRl eCBhODE4ZDk3M2YwLi5jMWFiNzJmYmM2IDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvbGlu dXgtY2xhbmcvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9saW51eC1jbGFu Zy9xcGxhdGZvcm1kZWZzLmgKK0BAIC03OSwxNCArNzksNiBAQAorICNkZWZpbmUgUVRfVVNFX1hP UEVOX0xGU19FWFRFTlNJT05TCisgI2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1k ZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tMRU5fVAorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNf XykgJiYgKF9fR0xJQkNfXyA+PSAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAg c29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAor LSNlbmRpZgorLQorICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNF ID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRGICAgICAgICAgICAgIDo6c25wcmludGYKKyAj ZGVmaW5lIFFUX1ZTTlBSSU5URiAgICAgICAgICAgIDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEv cXRiYXNlL21rc3BlY3MvbGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNz L2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IDEzNTIzZjA3MDIuLjRkMjc1MGQ5ZWMg MTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51eC1nKysvcXBsYXRmb3JtZGVmcy5oCisr KysgYi9xdGJhc2UvbWtzcGVjcy9saW51eC1nKysvcXBsYXRmb3JtZGVmcy5oCitAQCAtNzksMTQg Kzc5LDYgQEAKKyAjZGVmaW5lIFFUX1VTRV9YT1BFTl9MRlNfRVhURU5TSU9OUworICNpbmNsdWRl ICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgorIAorLSN1bmRlZiBRVF9TT0NLTEVO X1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPCAyKQorLSNkZWZp bmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tM RU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbmRpZgorLQorICNpZiBkZWZpbmVkKF9YT1BF Tl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRG ICAgICAgICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFUX1ZTTlBSSU5URiAgICAgICAgICAg IDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbGludXgtbGx2bS9xcGxh dGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51eC1sbHZtL3FwbGF0Zm9ybWRlZnMuaAor aW5kZXggZGM3NTBhYjFlZi4uZDNjYzM5YjQ3ZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNz L2xpbnV4LWxsdm0vcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9saW51eC1s bHZtL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTgwLDE0ICs4MCw2IEBACisgI2RlZmluZSBRVF9VU0Vf WE9QRU5fTEZTX0VYVEVOU0lPTlMKKyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bvc2l4L3FwbGF0Zm9y bWRlZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCistCistI2lmIGRlZmluZWQoX19HTElC Q19fKSAmJiAoX19HTElCQ19fID49IDIpCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAg ICBzb2NrbGVuX3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50 CistI2VuZGlmCistCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VS Q0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAgICAgOjpzbnByaW50Zgor ICNkZWZpbmUgUVRfVlNOUFJJTlRGICAgICAgICAgICAgOjp2c25wcmludGYKK2RpZmYgLS1naXQg YS9xdGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9t a3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5oCitpbmRleCA0YzRlNTNkYTJhLi44 M2JhZmZiM2UzIDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvbGludXgtbHNiLWcrKy9xcGxh dGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRmb3Jt ZGVmcy5oCitAQCAtODUsMTYgKzg1LDkgQEAKKyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bvc2l4L3Fw bGF0Zm9ybWRlZnMuaCIKKyAKKyAjdW5kZWYgUVRfT1BFTl9MQVJHRUZJTEUKKy0jdW5kZWYgUVRf U09DS0xFTl9UCisgCisgI2RlZmluZSBRVF9PUEVOX0xBUkdFRklMRSAgICAgICAwCisgCistI2lm IGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49IDIpCistI2RlZmluZSBRVF9TT0NL TEVOX1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9U ICAgICAgICAgICAgaW50CistI2VuZGlmCistCisgI2lmbmRlZiBTSU9DR0lGQlJEQUREUgorICMg IGRlZmluZSBTSU9DR0lGQlJEQUREUiAweDg5MTkKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJh c2UvbWtzcGVjcy9seW54b3MtZysrL3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2x5 bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oCitpbmRleCA0MzM5ZWEyYjIzLi42MDA3YWYwMDU1IDEw MDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvbHlueG9zLWcrKy9xcGxhdGZvcm1kZWZzLmgKKysr KyBiL3F0YmFzZS9ta3NwZWNzL2x5bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oCitAQCAtNzIsMTQg KzcyLDYgQEAKKyAKKyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bvc2l4L3FwbGF0Zm9ybWRlZnMuaCIK KyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCistCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAo X19HTElCQ19fID49IDIpCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVu X3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2VuZGlm CistCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAw KQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAgICAgOjpzbnByaW50ZgorICNkZWZpbmUg UVRfVlNOUFJJTlRGICAgICAgICAgICAgOjp2c25wcmludGYKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjLzNyZHBhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwIGIvcXRi YXNlL3NyYy8zcmRwYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcAor aW5kZXggYzNjMTg0MjU4Zi4uMzJhZjNmOGYyOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvM3Jk cGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvM3JkcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAKK0BA IC0xMCw2ICsxMCw3IEBACisgI2luY2x1ZGUgImxpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5oIgor IAorICNpbmNsdWRlIDxhbGdvcml0aG0+CisrI2luY2x1ZGUgPGxpbWl0cz4KKyAKKyAjaW5jbHVk ZSAiY29tbW9uL2RlYnVnLmgiCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy8zcmRwYXJ0eS9m b3JrZmQvZm9ya2ZkX2xpbnV4LmMgYi9xdGJhc2Uvc3JjLzNyZHBhcnR5L2ZvcmtmZC9mb3JrZmRf bGludXguYworaW5kZXggZmZlMGU5YTVlMi4uYjFmNTQwOGQxMSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvM3JkcGFydHkvZm9ya2ZkL2ZvcmtmZF9saW51eC5jCisrKysgYi9xdGJhc2Uvc3JjLzNy ZHBhcnR5L2ZvcmtmZC9mb3JrZmRfbGludXguYworQEAgLTgyLDcgKzgyLDggQEAgc3RhdGljIGlu dCBzeXNfY2xvbmUodW5zaWduZWQgbG9uZyBjbG9uZWZsYWdzLCBpbnQgKnB0aWQpCisgICAgIHJl dHVybiBzeXNjYWxsKF9fTlJfY2xvbmUsIGNsb25lZmxhZ3MsIGNoaWxkX3N0YWNrLCBzdGFja19z aXplLCBwdGlkLCBuZXd0bHMsIGN0aWQpOworICNlbGlmIGRlZmluZWQoX19hcmNfXykgfHwgZGVm aW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19f KSB8fCBcCisgICAgIGRlZmluZWQoX19uZHMzMl9fKSB8fCBkZWZpbmVkKF9faHBwYV9fKSB8fCBk ZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3h0ZW5zYV9fKSB8fCBkZWZpbmVkKF9fYWxwaGFf XykgfHwgZGVmaW5lZChfX3Jpc2N2KQorKyAgICBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmlu ZWQoX194dGVuc2FfXykgfHwgZGVmaW5lZChfX2FscGhhX18pIHx8IGRlZmluZWQoX19yaXNjdikg fHwgXAorKyAgICBkZWZpbmVkKF9fbG9vbmdhcmNoX18pCisgICAgIC8qIGN0aWQgYW5kIG5ld3Rs cyBhcmUgaW52ZXJ0ZWQgb24gQ09ORklHX0NMT05FX0JBQ0tXQVJEUyBhcmNoaXRlY3R1cmVzLAor ICAgICAgKiBidXQgc2luY2UgYm90aCB2YWx1ZXMgYXJlIDAsIHRoZXJlJ3Mgbm8gaGFybS4gKi8K KyAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9jbG9uZSwgY2xvbmVmbGFncywgY2hpbGRfc3RhY2ss IHB0aWQsIGN0aWQsIG5ld3Rscyk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9hbmRyb2lkL2ph ci9zcmMvb3JnL3F0cHJvamVjdC9xdDUvYW5kcm9pZC9RdE5hdGl2ZS5qYXZhIGIvcXRiYXNlL3Ny Yy9hbmRyb2lkL2phci9zcmMvb3JnL3F0cHJvamVjdC9xdDUvYW5kcm9pZC9RdE5hdGl2ZS5qYXZh CitpbmRleCA1NzkyYjViMmY1Li4yZjc0NzUwZmNmIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9h bmRyb2lkL2phci9zcmMvb3JnL3F0cHJvamVjdC9xdDUvYW5kcm9pZC9RdE5hdGl2ZS5qYXZhCisr KysgYi9xdGJhc2Uvc3JjL2FuZHJvaWQvamFyL3NyYy9vcmcvcXRwcm9qZWN0L3F0NS9hbmRyb2lk L1F0TmF0aXZlLmphdmEKK0BAIC0xMTYsNiArMTE2LDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZl CisgICAgIHB1YmxpYyBzdGF0aWMgUXRUaHJlYWQgbV9xdFRocmVhZCA9IG5ldyBRdFRocmVhZCgp OworICAgICBwcml2YXRlIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgVXJpPiBtX2NhY2hlZFVyaXMg PSBuZXcgSGFzaE1hcDxTdHJpbmcsIFVyaT4oKTsKKyAgICAgcHJpdmF0ZSBzdGF0aWMgQXJyYXlM aXN0PFN0cmluZz4gbV9rbm93bkRpcnMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKKysgICAg cHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSA9ICJO byBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSI7CisgCisgICAgIHByaXZhdGUgc3RhdGljIGZpbmFs IFJ1bm5hYmxlIHJ1blBlbmRpbmdDcHBSdW5uYWJsZXNSdW5uYWJsZSA9IG5ldyBSdW5uYWJsZSgp IHsKKyAgICAgICAgIEBPdmVycmlkZQorQEAgLTE5MywxMSArMTk0LDEwIEBAIHB1YmxpYyBjbGFz cyBRdE5hdGl2ZQorICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJVcmk7CisgICAgICAg ICAgICAgfQorIAorLSAgICAgICAgICAgIC8vIEFuZHJvaWQgNiBhbmQgZWFybGllciBjb3VsZCBz dGlsbCBtYW5hZ2UgdG8gb3BlbiB0aGUgZmlsZSBzbyB3ZSBjYW4gcmV0dXJuIHRoZQorLSAgICAg ICAgICAgIC8vIHBhcnNlZCB1cmkgaGVyZQorLSAgICAgICAgICAgIGlmIChCdWlsZC5WRVJTSU9O LlNES19JTlQgPCAyNCkKKy0gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFVyaTsKKy0gICAg ICAgICAgICByZXR1cm4gbnVsbDsKKysgICAgICAgICAgICAvLyBpZiB3ZSBvbmx5IGhhdmUgdHJh bnNpZW50IHBlcm1pc3Npb25zIG9uIHVyaSBhbGwgdGhlIGFib3ZlIHdpbGwgZmFpbCwKKysgICAg ICAgICAgICAvLyBidXQgd2Ugd2lsbCBiZSBhYmxlIHRvIHJlYWQgdGhlIGZpbGUgYW55d2F5LCBz byBjb250aW51ZSB3aXRoIHVyaSBoZXJlIGFueXdheQorKyAgICAgICAgICAgIC8vIGFuZCBjaGVj ayBmb3IgU2VjdXJpdHlFeGNlcHRpb25zIGxhdGVyCisrICAgICAgICAgICAgcmV0dXJuIHBhcnNl ZFVyaTsKKyAgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKyAgICAgICAg ICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAgICAgIHJldHVybiBudWxsOworQEAg LTI0NCw3ICsyNDQsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgIGludCBlcnJv ciA9IC0xOworIAorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKSB7CistICAgICAgICAgICAgTG9n LmUoUXRUQUcsICJvcGVuRmRGb3JDb250ZW50VXJsKCk6IE5vIHBlcm1pc3Npb25zIHRvIG9wZW4g VXJpIik7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJvcGVuRmRGb3JDb250ZW50VXJsKCk6 ICIgKyBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgIHJldHVybiBlcnJv cjsKKyAgICAgICAgIH0KKyAKK0BAIC0yNTQsMTIgKzI1NCwxMyBAQCBwdWJsaWMgY2xhc3MgUXRO YXRpdmUKKyAgICAgICAgICAgICByZXR1cm4gZmREZXNjLmRldGFjaEZkKCk7CisgICAgICAgICB9 IGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIGUucHJpbnRT dGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgfSBjYXRj aCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRB RywgIm9wZW5GZEZvckNvbnRlbnRVcmwoKTogSW52YWxpZCBVcmkiKTsKKyAgICAgICAgICAgICBl LnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKysgICAgICAg IH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKysgICAgICAgICAgICBMb2cuZShRdFRB RywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgIH0KKysgICAgICAgIHJldHVy biBlcnJvcjsKKyAgICAgfQorIAorICAgICBwdWJsaWMgc3RhdGljIGxvbmcgZ2V0U2l6ZShDb250 ZXh0IGNvbnRleHQsIFN0cmluZyBjb250ZW50VXJsKQorQEAgLTI3MCw3ICsyNzEsNyBAQCBwdWJs aWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgICAgICB1cmkgPSBnZXRVcmlXaXRoVmFsaWRQZXJt aXNzaW9uKGNvbnRleHQsIGNvbnRlbnRVcmwsICJyIik7CisgCisgICAgICAgICBpZiAodXJpID09 IG51bGwpIHsKKy0gICAgICAgICAgICBMb2cuZShRdFRBRywgImdldFNpemUoKTogTm8gcGVybWlz c2lvbnMgdG8gb3BlbiBVcmkiKTsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNz aW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgICAgIH0g ZWxzZSBpZiAoIW1fY2FjaGVkVXJpcy5jb250YWluc0tleShjb250ZW50VXJsKSkgeworICAgICAg ICAgICAgIG1fY2FjaGVkVXJpcy5wdXQoY29udGVudFVybCwgdXJpKTsKK0BAIC0yODgsMTIgKzI4 OSwxMyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxB cmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJnZXRTaXpl KCk6IEludmFsaWQgVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0g ICAgICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgICAgIH0gIGNhdGNoIChVbnN1cHBvcnRlZE9w ZXJhdGlvbkV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJnZXRTaXpl KCk6IFVuc3VwcG9ydGVkIG9wZXJhdGlvbiBmb3IgZ2l2ZW4gVXJpIik7CisgICAgICAgICAgICAg ZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gc2l6ZTsKKysgICAgICAg IH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKysgICAgICAgICAgICBMb2cuZShRdFRB RywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgIH0KKysgICAgICAgIHJldHVy biBzaXplOworICAgICB9CisgCisgICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBjaGVja0ZpbGVF eGlzdHMoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVybCkKK0BAIC0zMDMsNyArMzA1 LDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICBpZiAodXJpID09IG51bGwpCisg ICAgICAgICAgICAgdXJpID0gZ2V0VXJpV2l0aFZhbGlkUGVybWlzc2lvbihjb250ZXh0LCBjb250 ZW50VXJsLCAiciIpOworICAgICAgICAgaWYgKHVyaSA9PSBudWxsKSB7CistICAgICAgICAgICAg TG9nLmUoUXRUQUcsICJjaGVja0ZpbGVFeGlzdHMoKTogTm8gcGVybWlzc2lvbnMgdG8gb3BlbiBV cmkiKTsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdl KTsKKyAgICAgICAgICAgICByZXR1cm4gZXhpc3RzOworICAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgICBpZiAoIW1fY2FjaGVkVXJpcy5jb250YWluc0tleShjb250ZW50VXJsKSkKK0BAIC0z MjEsMTIgKzMyMywxMyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgIH0gY2F0Y2gg KElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcs ICJjaGVja0ZpbGVFeGlzdHMoKTogSW52YWxpZCBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50 U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBleGlzdHM7CisgICAgICAgICB9IGNh dGNoIChVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9n LmUoUXRUQUcsICJjaGVja0ZpbGVFeGlzdHMoKTogVW5zdXBwb3J0ZWQgb3BlcmF0aW9uIGZvciBn aXZlbiBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKKysgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUp IHsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsK KyAgICAgICAgIH0KKysgICAgICAgIHJldHVybiBleGlzdHM7CisgICAgIH0KKyAKKyAgICAgcHVi bGljIHN0YXRpYyBib29sZWFuIGNoZWNrSWZXcml0YWJsZShDb250ZXh0IGNvbnRleHQsIFN0cmlu ZyBjb250ZW50VXJsKQorQEAgLTM0NCw3ICszNDcsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUK KyAgICAgICAgICAgICB1cmkgPSBnZXRVcmlXaXRoVmFsaWRQZXJtaXNzaW9uKGNvbnRleHQsIGNv bnRlbnRVcmwsICJyIik7CisgICAgICAgICB9CisgICAgICAgICBpZiAodXJpID09IG51bGwpIHsK Ky0gICAgICAgICAgICBMb2cuZShRdFRBRywgImlzRGlyKCk6IE5vIHBlcm1pc3Npb25zIHRvIG9w ZW4gVXJpIik7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVz c2FnZSk7CisgICAgICAgICAgICAgcmV0dXJuIGlzRGlyOworICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgICBpZiAoIW1fY2FjaGVkVXJpcy5jb250YWluc0tleShjb250ZW50VXJsKSkKK0BA IC0zNzQsMTIgKzM3NywxMyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgIH0gY2F0 Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9nLmUoUXRU QUcsICJjaGVja0lmRGlyKCk6IEludmFsaWQgVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0 YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICB9IGNhdGNo IChVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9nLmUo UXRUQUcsICJjaGVja0lmRGlyKCk6IFVuc3VwcG9ydGVkIG9wZXJhdGlvbiBmb3IgZ2l2ZW4gVXJp Iik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1 cm4gZmFsc2U7CisrICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisrICAg ICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAg ICB9CisrICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KKyAgICAgcHVibGljIHN0YXRpYyBT dHJpbmdbXSBsaXN0Q29udGVudHNGcm9tVHJlZVVyaShDb250ZXh0IGNvbnRleHQsIFN0cmluZyBj b250ZW50VXJsKQorICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0 Y29uY3VycmVudHJlZHVjZWtlcm5lbC5oIGIvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3Vy cmVudHJlZHVjZWtlcm5lbC5oCitpbmRleCA4ZjlhOTM4OTUyLi5hOThkZWRlZjJlIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHJlZHVjZWtlcm5lbC5oCisr KysgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50cmVkdWNla2VybmVsLmgKK0BA IC0yMTIsMTEgKzIxMiwxMyBAQCBwdWJsaWM6CisgCisgICAgIGlubGluZSBib29sIHNob3VsZFRo cm90dGxlKCkKKyAgICAgeworKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPFFNdXRleD4gbG9ja2Vy KG11dGV4KTsKKyAgICAgICAgIHJldHVybiAocmVzdWx0c01hcFNpemUgPiAoUmVkdWNlUXVldWVU aHJvdHRsZUxpbWl0ICogdGhyZWFkQ291bnQpKTsKKyAgICAgfQorIAorICAgICBpbmxpbmUgYm9v bCBzaG91bGRTdGFydFRocmVhZCgpCisgICAgIHsKKysgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxR TXV0ZXg+IGxvY2tlcihtdXRleCk7CisgICAgICAgICByZXR1cm4gKHJlc3VsdHNNYXBTaXplIDw9 IChSZWR1Y2VRdWV1ZVN0YXJ0TGltaXQgKiB0aHJlYWRDb3VudCkpOworICAgICB9CisgfTsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5l LmNwcCBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3Bw CitpbmRleCBlYTZjZTNhYzQyLi43ZjkxYTJiYTY4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9j b25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Y29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwCitAQCAtMTc2LDYgKzE3Niwz OSBAQCB2b2lkIFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0U2luZ2xlVGhyZWFkZWQoKQorICAgICBm aW5pc2goKTsKKyB9CisgCisrdm9pZCBUaHJlYWRFbmdpbmVCYXNlOjpzdGFydEJsb2NraW5nKCkK Kyt7CisrICAgIHN0YXJ0KCk7CisrICAgIGJhcnJpZXIuYWNxdWlyZSgpOworKyAgICBzdGFydFRo cmVhZHMoKTsKKysKKysgICAgYm9vbCB0aHJvdHRsZWQgPSBmYWxzZTsKKysjaWZuZGVmIFFUX05P X0VYQ0VQVElPTlMKKysgICAgdHJ5IHsKKysjZW5kaWYKKysgICAgICAgIHdoaWxlICh0aHJlYWRG dW5jdGlvbigpID09IFRocm90dGxlVGhyZWFkKSB7CisrICAgICAgICAgICAgaWYgKHRocmVhZFRo cm90dGxlRXhpdCgpKSB7CisrICAgICAgICAgICAgICAgIHRocm90dGxlZCA9IHRydWU7CisrICAg ICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysjaWZuZGVm IFFUX05PX0VYQ0VQVElPTlMKKysgICAgfSBjYXRjaCAoUUV4Y2VwdGlvbiAmZSkgeworKyAgICAg ICAgaGFuZGxlRXhjZXB0aW9uKGUpOworKyAgICB9IGNhdGNoICguLi4pIHsKKysgICAgICAgIGhh bmRsZUV4Y2VwdGlvbihRVW5oYW5kbGVkRXhjZXB0aW9uKCkpOworKyAgICB9CisrI2VuZGlmCisr CisrICAgIGlmICh0aHJvdHRsZWQgPT0gZmFsc2UpIHsKKysgICAgICAgIGJhcnJpZXIucmVsZWFz ZSgpOworKyAgICB9CisrCisrICAgIGJhcnJpZXIud2FpdCgpOworKyAgICBmaW5pc2goKTsKKysg ICAgZXhjZXB0aW9uU3RvcmUudGhyb3dQb3NzaWJsZUV4Y2VwdGlvbigpOworK30KKysKKyB2b2lk IFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0VGhyZWFkKCkKKyB7CisgICAgIHN0YXJ0VGhyZWFkSW50 ZXJuYWwoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50 dGhyZWFkZW5naW5lLmggYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFk ZW5naW5lLmgKK2luZGV4IDdjMzBjZWJkYmMuLmE0Yzg1NDhjYzQgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmgKKysrKyBiL3F0YmFz ZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuaAorQEAgLTkxLDYgKzkx LDcgQEAgcHVibGljOgorICAgICBUaHJlYWRFbmdpbmVCYXNlKCk7CisgICAgIHZpcnR1YWwgflRo cmVhZEVuZ2luZUJhc2UoKTsKKyAgICAgdm9pZCBzdGFydFNpbmdsZVRocmVhZGVkKCk7CisrICAg IHZvaWQgc3RhcnRCbG9ja2luZygpOworICAgICB2b2lkIHN0YXJ0VGhyZWFkKCk7CisgICAgIGJv b2wgaXNDYW5jZWxlZCgpOworICAgICB2b2lkIHdhaXRGb3JSZXN1bWUoKTsKK0BAIC0xNDMsNiAr MTQ0LDE1IEBAIHB1YmxpYzoKKyAgICAgICAgIHJldHVybiByZXN1bHQoKTsKKyAgICAgfQorIAor KyAgICAvLyBSdW5zIHRoZSB1c2VyIGFsZ29yaXRobSB1c2luZyBtdWx0aXBsZSB0aHJlYWRzLgor KyAgICAvLyBUaGlzIGZ1bmN0aW9uIGJsb2NrcyB1bnRpbCB0aGUgYWxnb3JpdGhtIGlzIGZpbmlz aGVkLAorKyAgICAvLyBhbmQgdGhlbiByZXR1cm5zIHRoZSByZXN1bHQuCisrICAgIFQgKnN0YXJ0 QmxvY2tpbmcoKQorKyAgICB7CisrICAgICAgICBUaHJlYWRFbmdpbmVCYXNlOjpzdGFydEJsb2Nr aW5nKCk7CisrICAgICAgICByZXR1cm4gcmVzdWx0KCk7CisrICAgIH0KKysKKyAgICAgLy8gUnVu cyB0aGUgdXNlciBhbGdvcml0aG0gdXNpbmcgbXVsdGlwbGUgdGhyZWFkcy4KKyAgICAgLy8gRG9l cyBub3QgYmxvY2ssIHJldHVybnMgYSBmdXR1cmUuCisgICAgIFFGdXR1cmU8VD4gc3RhcnRBc3lu Y2hyb25vdXNseSgpCitAQCAtMjIzLDYgKzIzMywxMyBAQCBjbGFzcyBUaHJlYWRFbmdpbmVTdGFy dGVyIDogcHVibGljIFRocmVhZEVuZ2luZVN0YXJ0ZXJCYXNlPFQ+CisgcHVibGljOgorICAgICBU aHJlYWRFbmdpbmVTdGFydGVyKFR5cGVkVGhyZWFkRW5naW5lICplbmcpCisgICAgICAgICA6IEJh c2UoZW5nKSB7IH0KKysKKysgICAgVCBzdGFydEJsb2NraW5nKCkKKysgICAgeworKyAgICAgICAg VCB0ID0gKnRoaXMtPnRocmVhZEVuZ2luZS0+c3RhcnRCbG9ja2luZygpOworKyAgICAgICAgZGVs ZXRlIHRoaXMtPnRocmVhZEVuZ2luZTsKKysgICAgICAgIHJldHVybiB0OworKyAgICB9CisgfTsK KyAKKyAvLyBGdWxsIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHdoZXJlIFQgaXMgdm9pZC4KK0BA IC0yMzIsNiArMjQ5LDEyIEBAIGNsYXNzIFRocmVhZEVuZ2luZVN0YXJ0ZXI8dm9pZD4gOiBwdWJs aWMgVGhyZWFkRW5naW5lU3RhcnRlckJhc2U8dm9pZD4KKyBwdWJsaWM6CisgICAgIFRocmVhZEVu Z2luZVN0YXJ0ZXIoVGhyZWFkRW5naW5lPHZvaWQ+ICpfdGhyZWFkRW5naW5lKQorICAgICAgICAg OiBUaHJlYWRFbmdpbmVTdGFydGVyQmFzZTx2b2lkPihfdGhyZWFkRW5naW5lKSB7fQorKworKyAg ICB2b2lkIHN0YXJ0QmxvY2tpbmcoKQorKyAgICB7CisrICAgICAgICB0aGlzLT50aHJlYWRFbmdp bmUtPnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGRlbGV0ZSB0aGlzLT50aHJlYWRFbmdpbmU7 CisrICAgIH0KKyB9OworIAorIC8vISBbcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLTFdCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2FuaW1hdGlvbi9xdmFyaWFudGFuaW1hdGlvbi5j cHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2YXJpYW50YW5pbWF0aW9uLmNwcAor aW5kZXggOThiMDJmMDIwMi4uZWFjMTUyNDEwNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29y ZWxpYi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvYW5pbWF0aW9uL3F2YXJpYW50YW5pbWF0aW9uLmNwcAorQEAgLTI3Niw3ICsyNzYsOSBA QCB2b2lkIFFWYXJpYW50QW5pbWF0aW9uUHJpdmF0ZTo6c2V0Q3VycmVudFZhbHVlRm9yUHJvZ3Jl c3MoY29uc3QgcXJlYWwgcHJvZ3Jlc3MpCisgCisgICAgIGNvbnN0IHFyZWFsIHN0YXJ0UHJvZ3Jl c3MgPSBjdXJyZW50SW50ZXJ2YWwuc3RhcnQuZmlyc3Q7CisgICAgIGNvbnN0IHFyZWFsIGVuZFBy b2dyZXNzID0gY3VycmVudEludGVydmFsLmVuZC5maXJzdDsKKy0gICAgY29uc3QgcXJlYWwgbG9j YWxQcm9ncmVzcyA9IChwcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpIC8gKGVuZFByb2dyZXNzIC0g c3RhcnRQcm9ncmVzcyk7CisrICAgIGNvbnN0IHFyZWFsIGxvY2FsUHJvZ3Jlc3MgPQorKyAgICAg ICAgICAgIHFJc051bGwocHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNzKSA/IDAuMCAvLyBhdm9pZCAw LzAgYmVsb3cKKysgICAgICAgICAgICAvKiBlbHNlICovICAgICAgICAgICAgICAgICAgICAgICAg OiAocHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNzKSAvIChlbmRQcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jl c3MpOworIAorICAgICBRVmFyaWFudCByZXQgPSBxLT5pbnRlcnBvbGF0ZWQoY3VycmVudEludGVy dmFsLnN0YXJ0LnNlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1 cnJlbnRJbnRlcnZhbC5lbmQuc2Vjb25kLAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxp Yi9nbG9iYWwvcW5hbWVzcGFjZS5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xbmFtZXNw YWNlLmgKK2luZGV4IGFkNDE1MGIzMTcuLmJmMTliMTYyN2IgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2NvcmVsaWIvZ2xvYmFsL3FuYW1lc3BhY2UuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGli L2dsb2JhbC9xbmFtZXNwYWNlLmgKK0BAIC0xODY0LDcgKzE4NjQsNyBAQCBwdWJsaWM6CisgICAg IFFUX1FfRU5VTShUaW1lclR5cGUpCisgICAgIFFUX1FfRU5VTShTY3JvbGxQaGFzZSkKKyAgICAg UVRfUV9FTlVNKE1vdXNlRXZlbnRTb3VyY2UpCistICAgIFFUX1FfRkxBRyhNb3VzZUV2ZW50Rmxh ZykKKysgICAgUVRfUV9GTEFHKE1vdXNlRXZlbnRGbGFncykKKyAgICAgUVRfUV9FTlVNKENoZWNr c3VtVHlwZSkKKyAgICAgUVRfUV9FTlVNKEhpZ2hEcGlTY2FsZUZhY3RvclJvdW5kaW5nUG9saWN5 KQorICAgICBRVF9RX0VOVU0oVGFiRm9jdXNCZWhhdmlvcikKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2NvcmVsaWIvZ2xvYmFsL3FyYW5kb20uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2Jh bC9xcmFuZG9tLmNwcAoraW5kZXggMTA2NzJjMWY5Mi4uMjVmODdjN2U2YSAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Y29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAKK0BAIC0zODMsNyArMzgzLDYgQEAgc3RydWN0IFFS YW5kb21HZW5lcmF0b3I6OlN5c3RlbUFuZEdsb2JhbEdlbmVyYXRvcnMKKyAKKyAgICAgICAgIGNv bnN0ZXhwciBTeXN0ZW1BbmRHbG9iYWxHZW5lcmF0b3JzIGcgPSB7fTsKKyAgICAgICAgIFFfVU5V U0VEKGcpOworLSAgICAgICAgUV9TVEFUSUNfQVNTRVJUKHN0ZDo6aXNfbGl0ZXJhbF90eXBlPFN5 c3RlbUFuZEdsb2JhbEdlbmVyYXRvcnM+Ojp2YWx1ZSk7CisgI2VuZGlmCisgICAgIH0KKyAKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWJ1ZmZlci5jcHAgYi9xdGJhc2Uvc3Jj L2NvcmVsaWIvaW8vcWJ1ZmZlci5jcHAKK2luZGV4IDU5NWZjZDI3MjQuLjAzMmMwZGRkNGIgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWJ1ZmZlci5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvY29yZWxpYi9pby9xYnVmZmVyLmNwcAorQEAgLTQxLDYgKzQxLDggQEAKKyAjaW5jbHVk ZSA8UXRDb3JlL3FtZXRhb2JqZWN0Lmg+CisgI2luY2x1ZGUgInByaXZhdGUvcWlvZGV2aWNlX3Au aCIKKyAKKysjaW5jbHVkZSA8bGltaXRzPgorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIC8q KiBRQnVmZmVyUHJpdmF0ZSAqKi8KK0BAIC0zNjYsNyArMzY4LDkgQEAgcWludDY0IFFCdWZmZXI6 OnNpemUoKSBjb25zdAorIGJvb2wgUUJ1ZmZlcjo6c2VlayhxaW50NjQgcG9zKQorIHsKKyAgICAg UV9EKFFCdWZmZXIpOworLSAgICBpZiAocG9zID4gZC0+YnVmLT5zaXplKCkgJiYgaXNXcml0YWJs ZSgpKSB7CisrICAgIGNvbnN0IGF1dG8gb2xkQnVmU2l6ZSA9IGQtPmJ1Zi0+c2l6ZSgpOworKyAg ICBjb25zdGV4cHIgcWludDY0IE1heFNlZWtQb3MgPSAoc3RkOjpudW1lcmljX2xpbWl0czxkZWNs dHlwZShvbGRCdWZTaXplKT46Om1heCkoKTsKKysgICAgaWYgKHBvcyA8PSBNYXhTZWVrUG9zICYm IHBvcyA+IG9sZEJ1ZlNpemUgJiYgaXNXcml0YWJsZSgpKSB7CisgICAgICAgICBpZiAoc2Vlayhk LT5idWYtPnNpemUoKSkpIHsKKyAgICAgICAgICAgICBjb25zdCBxaW50NjQgZ2FwU2l6ZSA9IHBv cyAtIGQtPmJ1Zi0+c2l6ZSgpOworICAgICAgICAgICAgIGlmICh3cml0ZShRQnl0ZUFycmF5KGdh cFNpemUsIDApKSAhPSBnYXBTaXplKSB7CitAQCAtMzc3LDcgKzM4MSw3IEBAIGJvb2wgUUJ1ZmZl cjo6c2VlayhxaW50NjQgcG9zKQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg IH0KKyAgICAgfSBlbHNlIGlmIChwb3MgPiBkLT5idWYtPnNpemUoKSB8fCBwb3MgPCAwKSB7Cist ICAgICAgICBxV2FybmluZygiUUJ1ZmZlcjo6c2VlazogSW52YWxpZCBwb3M6ICVkIiwgaW50KHBv cykpOworKyAgICAgICAgcVdhcm5pbmcoIlFCdWZmZXI6OnNlZWs6IEludmFsaWQgcG9zOiAlbGxk IiwgcG9zKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorICAgICByZXR1cm4gUUlP RGV2aWNlOjpzZWVrKHBvcyk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fm aWxlc3lzdGVtZW5naW5lX3dpbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0 ZW1lbmdpbmVfd2luLmNwcAoraW5kZXggODFkM2E3MTk4Ni4uYzg2ZWQxZjliMCAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVuZ2luZV93aW4uY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW1lbmdpbmVfd2luLmNwcAorQEAgLTY2 NCwxNCArNjY0LDE0IEBAIFFGaWxlU3lzdGVtRW50cnkgUUZpbGVTeXN0ZW1FbmdpbmU6OmFic29s dXRlTmFtZShjb25zdCBRRmlsZVN5c3RlbUVudHJ5ICZlbnRyeSkKKyAgICAgcmV0dXJuIFFGaWxl U3lzdGVtRW50cnkocmV0LCBRRmlsZVN5c3RlbUVudHJ5OjpGcm9tSW50ZXJuYWxQYXRoKCkpOwor IH0KKyAKKy0jaWYgZGVmaW5lZChRX0NDX01JTkdXKSAmJiBXSU5WRVIgPCAweDA2MDIgLy8gIFdp bmRvd3MgOCBvbndhcmRzCisrI2lmIGRlZmluZWQoUV9DQ19NSU5HVykgJiYgV0lOVkVSIDwgMHgw NjAyICYmIF9XSU4zMl9XSU5OVCA8IF9XSU4zMl9XSU5OVF9XSU44IC8vICBXaW5kb3dzIDggb253 YXJkcworIAorIHR5cGVkZWYgc3RydWN0IF9GSUxFX0lEX0lORk8geworICAgICBVTE9OR0xPTkcg Vm9sdW1lU2VyaWFsTnVtYmVyOworICAgICBGSUxFX0lEXzEyOCBGaWxlSWQ7CisgfSBGSUxFX0lE X0lORk8sICpQRklMRV9JRF9JTkZPOworIAorLSNlbmRpZiAvLyBpZiBkZWZpbmVkIChRX0NDX01J TkdXKSAmJiBXSU5WRVIgPCAweDA2MDIKKysjZW5kaWYgLy8gaWYgZGVmaW5lZChRX0NDX01JTkdX KSAmJiBXSU5WRVIgPCAweDA2MDIgJiYgX1dJTjMyX1dJTk5UIDwgX1dJTjMyX1dJTk5UX1dJTjgK KyAKKyAvLyBGaWxlIElEIGZvciBXaW5kb3dzIHVwIHRvIHZlcnNpb24gNyBhbmQgRkFUMzIgZHJp dmVzCisgc3RhdGljIGlubGluZSBRQnl0ZUFycmF5IGZpbGVJZChIQU5ETEUgaGFuZGxlKQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbXdhdGNoZXJfaW5vdGlm eS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnku Y3BwCitpbmRleCA5NGQ5ZDA2YmNiLi4yN2UwYjEzYjBiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90aWZ5LmNwcAorKysrIGIvcXRiYXNl L3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90aWZ5LmNwcAorQEAgLTM2Niw3 ICszNjYsOSBAQCB2b2lkIFFJbm90aWZ5RmlsZVN5c3RlbVdhdGNoZXJFbmdpbmU6OnJlYWRGcm9t SW5vdGlmeSgpCisgICAgIC8vIHFEZWJ1ZygiUUlub3RpZnlGaWxlU3lzdGVtV2F0Y2hlckVuZ2lu ZTo6cmVhZEZyb21Jbm90aWZ5Iik7CisgCisgICAgIGludCBidWZmU2l6ZSA9IDA7CistICAgIGlv Y3RsKGlub3RpZnlGZCwgRklPTlJFQUQsIChjaGFyICopICZidWZmU2l6ZSk7CisrICAgIGlmIChp b2N0bChpbm90aWZ5RmQsIEZJT05SRUFELCAoY2hhciAqKSAmYnVmZlNpemUpID09IC0xIHx8IGJ1 ZmZTaXplID09IDApCisrICAgICAgICByZXR1cm47CisrCisgICAgIFFWYXJMZW5ndGhBcnJheTxj aGFyLCA0MDk2PiBidWZmZXIoYnVmZlNpemUpOworICAgICBidWZmU2l6ZSA9IHJlYWQoaW5vdGlm eUZkLCBidWZmZXIuZGF0YSgpLCBidWZmU2l6ZSk7CisgICAgIGNoYXIgKmF0ID0gYnVmZmVyLmRh dGEoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWxvY2tmaWxlX3dpbi5j cHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWxvY2tmaWxlX3dpbi5jcHAKK2luZGV4IDI3N2Y4 ZDQyMzAuLjM4ZWNlZjU1NTAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWxv Y2tmaWxlX3dpbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xbG9ja2ZpbGVfd2lu LmNwcAorQEAgLTQ4LDYgKzQ4LDggQEAKKyAjaW5jbHVkZSAiUXRDb3JlL3FkZWJ1Zy5oIgorICNp bmNsdWRlICJRdENvcmUvcXRocmVhZC5oIgorIAorKyNpbmNsdWRlICJwcml2YXRlL3FzeXN0ZW1s aWJyYXJ5X3AuaCIKKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBzdGF0aWMgaW5saW5lIGJv b2wgZmlsZUV4aXN0cyhjb25zdCB3Y2hhcl90ICpmaWxlTmFtZSkKK0BAIC0xNTAsNyArMTUyLDcg QEAgUVN0cmluZyBRTG9ja0ZpbGVQcml2YXRlOjpwcm9jZXNzTmFtZUJ5UGlkKHFpbnQ2NCBwaWQp CisgI2lmICFkZWZpbmVkKFFfT1NfV0lOUlQpCisgICAgIHR5cGVkZWYgRFdPUkQgKFdJTkFQSSAq R2V0TW9kdWxlRmlsZU5hbWVFeEZ1bmMpKEhBTkRMRSwgSE1PRFVMRSwgTFBUU1RSLCBEV09SRCk7 CisgCistICAgIEhNT0RVTEUgaFBzYXBpID0gTG9hZExpYnJhcnlBKCJwc2FwaSIpOworKyAgICBI TU9EVUxFIGhQc2FwaSA9IFFTeXN0ZW1MaWJyYXJ5Ojpsb2FkKEwicHNhcGkiKTsKKyAgICAgaWYg KCFoUHNhcGkpCisgICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgICBHZXRNb2R1bGVGaWxl TmFtZUV4RnVuYyBxR2V0TW9kdWxlRmlsZU5hbWVFeCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R2V0TW9k dWxlRmlsZU5hbWVFeEZ1bmM+KAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9x cHJvY2Vzc191bml4LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xcHJvY2Vzc191bml4LmNw cAoraW5kZXggNTAzOTBlNTdmNS4uMTVjOGYzMDc0NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Y29yZWxpYi9pby9xcHJvY2Vzc191bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lv L3Fwcm9jZXNzX3VuaXguY3BwCitAQCAtMSw3ICsxLDcgQEAKKyAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICoqCisgKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKy0qKiBD b3B5cmlnaHQgKEMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24uCisrKiogQ29weXJpZ2h0IChDKSAy MDIyIEludGVsIENvcnBvcmF0aW9uLgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xp Y2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdENvcmUgbW9kdWxl IG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTQyMiwxNCArNDIyLDE1IEBAIHZvaWQgUVByb2Nlc3NQ cml2YXRlOjpzdGFydFByb2Nlc3MoKQorICAgICAvLyBBZGQgdGhlIHByb2dyYW0gbmFtZSB0byB0 aGUgYXJndW1lbnQgbGlzdC4KKyAgICAgYXJndlswXSA9IG51bGxwdHI7CisgICAgIGlmICghcHJv Z3JhbS5jb250YWlucyhRTGF0aW4xQ2hhcignLycpKSkgeworKyAgICAgICAgLy8gZmluZEV4ZWN1 dGFibGUoKSByZXR1cm5zIGl0cyBhcmd1bWVudCBpZiBpdCdzIGFuIGFic29sdXRlIHBhdGgsCisr ICAgICAgICAvLyBvdGhlcndpc2UgaXQgc2VhcmNoZXMgJFBBVEg7IHJldHVybnMgZW1wdHkgaWYg bm90IGZvdW5kICh3ZSBoYW5kbGUKKysgICAgICAgIC8vIHRoYXQgY2FzZSBtdWNoIGxhdGVyKQor ICAgICAgICAgY29uc3QgUVN0cmluZyAmZXhlRmlsZVBhdGggPSBRU3RhbmRhcmRQYXRoczo6Zmlu ZEV4ZWN1dGFibGUocHJvZ3JhbSk7CistICAgICAgICBpZiAoIWV4ZUZpbGVQYXRoLmlzRW1wdHko KSkgeworLSAgICAgICAgICAgIGNvbnN0IFFCeXRlQXJyYXkgJnRtcCA9IFFGaWxlOjplbmNvZGVO YW1lKGV4ZUZpbGVQYXRoKTsKKy0gICAgICAgICAgICBhcmd2WzBdID0gOjpzdHJkdXAodG1wLmNv bnN0RGF0YSgpKTsKKy0gICAgICAgIH0KKy0gICAgfQorLSAgICBpZiAoIWFyZ3ZbMF0pCisrICAg ICAgICBjb25zdCBRQnl0ZUFycmF5ICZ0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShleGVGaWxlUGF0 aCk7CisrICAgICAgICBhcmd2WzBdID0gOjpzdHJkdXAodG1wLmNvbnN0RGF0YSgpKTsKKysgICAg fSBlbHNlIHsKKyAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cChlbmNvZGVkUHJvZ3JhbU5hbWUu Y29uc3REYXRhKCkpOworKyAgICB9CisgCisgICAgIC8vIEFkZCBldmVyeSBhcmd1bWVudCB0byB0 aGUgbGlzdAorICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50cy5jb3VudCgpOyArK2kp CitAQCAtOTgzLDE1ICs5ODQsMTYgQEAgYm9vbCBRUHJvY2Vzc1ByaXZhdGU6OnN0YXJ0RGV0YWNo ZWQocWludDY0ICpwaWQpCisgICAgICAgICAgICAgICAgIGVudnAgPSBfcV9kdXBFbnZpcm9ubWVu dChlbnZpcm9ubWVudC5kLmNvbnN0RGF0YSgpLT52YXJzLCAmZW52Yyk7CisgICAgICAgICAgICAg fQorIAorLSAgICAgICAgICAgIFFCeXRlQXJyYXkgdG1wOworICAgICAgICAgICAgIGlmICghcHJv Z3JhbS5jb250YWlucyhRTGF0aW4xQ2hhcignLycpKSkgeworKyAgICAgICAgICAgICAgICAvLyBm aW5kRXhlY3V0YWJsZSgpIHJldHVybnMgaXRzIGFyZ3VtZW50IGlmIGl0J3MgYW4gYWJzb2x1dGUg cGF0aCwKKysgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGl0IHNlYXJjaGVzICRQQVRIOyBy ZXR1cm5zIGVtcHR5IGlmIG5vdCBmb3VuZCAod2UgaGFuZGxlCisrICAgICAgICAgICAgICAgIC8v IHRoYXQgY2FzZSBtdWNoIGxhdGVyKQorICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nICZl eGVGaWxlUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjpmaW5kRXhlY3V0YWJsZShwcm9ncmFtKTsKKy0g ICAgICAgICAgICAgICAgaWYgKCFleGVGaWxlUGF0aC5pc0VtcHR5KCkpCistICAgICAgICAgICAg ICAgICAgICB0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShleGVGaWxlUGF0aCk7CisrICAgICAgICAg ICAgICAgIGNvbnN0IFFCeXRlQXJyYXkgJnRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKGV4ZUZpbGVQ YXRoKTsKKysgICAgICAgICAgICAgICAgYXJndlswXSA9IDo6c3RyZHVwKHRtcC5jb25zdERhdGEo KSk7CisrICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgYXJndlswXSA9IDo6 c3RyZHVwKFFGaWxlOjplbmNvZGVOYW1lKHByb2dyYW0pKTsKKyAgICAgICAgICAgICB9CistICAg ICAgICAgICAgaWYgKHRtcC5pc0VtcHR5KCkpCistICAgICAgICAgICAgICAgIHRtcCA9IFFGaWxl OjplbmNvZGVOYW1lKHByb2dyYW0pOworLSAgICAgICAgICAgIGFyZ3ZbMF0gPSB0bXAuZGF0YSgp OworIAorICAgICAgICAgICAgIGlmIChlbnZwKQorICAgICAgICAgICAgICAgICBxdF9zYWZlX2V4 ZWN2ZShhcmd2WzBdLCBhcmd2LCBlbnZwKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVs aWIvaXRlbW1vZGVscy9xYWJzdHJhY3RpdGVtbW9kZWwuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGli L2l0ZW1tb2RlbHMvcWFic3RyYWN0aXRlbW1vZGVsLmNwcAoraW5kZXggM2E3OWM1MDJhZi4uOTk3 YTYzNGU3NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3FhYnN0 cmFjdGl0ZW1tb2RlbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3Fh YnN0cmFjdGl0ZW1tb2RlbC5jcHAKK0BAIC0zMTk2LDkgKzMxOTYsOCBAQCBib29sIFFBYnN0cmFj dEl0ZW1Nb2RlbDo6YmVnaW5Nb3ZlQ29sdW1ucyhjb25zdCBRTW9kZWxJbmRleCAmc291cmNlUGFy ZW50LCBpbnQgcworICAgICBkZXN0aW5hdGlvbkNoYW5nZS5uZWVkc0FkanVzdCA9IGRlc3RpbmF0 aW9uUGFyZW50LmlzVmFsaWQoKSAmJiBkZXN0aW5hdGlvblBhcmVudC5yb3coKSA+PSBzb3VyY2VM YXN0ICYmIGRlc3RpbmF0aW9uUGFyZW50LnBhcmVudCgpID09IHNvdXJjZVBhcmVudDsKKyAgICAg ZC0+Y2hhbmdlcy5wdXNoKGRlc3RpbmF0aW9uQ2hhbmdlKTsKKyAKKy0gICAgZC0+aXRlbXNBYm91 dFRvQmVNb3ZlZChzb3VyY2VQYXJlbnQsIHNvdXJjZUZpcnN0LCBzb3VyY2VMYXN0LCBkZXN0aW5h dGlvblBhcmVudCwgZGVzdGluYXRpb25DaGlsZCwgUXQ6Okhvcml6b250YWwpOworLQorICAgICBl bWl0IGNvbHVtbnNBYm91dFRvQmVNb3ZlZChzb3VyY2VQYXJlbnQsIHNvdXJjZUZpcnN0LCBzb3Vy Y2VMYXN0LCBkZXN0aW5hdGlvblBhcmVudCwgZGVzdGluYXRpb25DaGlsZCwgUVByaXZhdGVTaWdu YWwoKSk7CisrICAgIGQtPml0ZW1zQWJvdXRUb0JlTW92ZWQoc291cmNlUGFyZW50LCBzb3VyY2VG aXJzdCwgc291cmNlTGFzdCwgZGVzdGluYXRpb25QYXJlbnQsIGRlc3RpbmF0aW9uQ2hpbGQsIFF0 OjpIb3Jpem9udGFsKTsKKyAgICAgcmV0dXJuIHRydWU7CisgfQorIAorQEAgLTMyMzEsNyArMzIz MCw2IEBAIHZvaWQgUUFic3RyYWN0SXRlbU1vZGVsOjplbmRNb3ZlQ29sdW1ucygpCisgICAgICAg YWRqdXN0ZWRTb3VyY2UgPSBjcmVhdGVJbmRleChhZGp1c3RlZFNvdXJjZS5yb3coKSwgYWRqdXN0 ZWRTb3VyY2UuY29sdW1uKCkgKyBudW1Nb3ZlZCwgYWRqdXN0ZWRTb3VyY2UuaW50ZXJuYWxQb2lu dGVyKCkpOworIAorICAgICBkLT5pdGVtc01vdmVkKGFkanVzdGVkU291cmNlLCByZW1vdmVDaGFu Z2UuZmlyc3QsIHJlbW92ZUNoYW5nZS5sYXN0LCBhZGp1c3RlZERlc3RpbmF0aW9uLCBpbnNlcnRD aGFuZ2UuZmlyc3QsIFF0OjpIb3Jpem9udGFsKTsKKy0KKyAgICAgZW1pdCBjb2x1bW5zTW92ZWQo YWRqdXN0ZWRTb3VyY2UsIHJlbW92ZUNoYW5nZS5maXJzdCwgcmVtb3ZlQ2hhbmdlLmxhc3QsIGFk anVzdGVkRGVzdGluYXRpb24sIGluc2VydENoYW5nZS5maXJzdCwgUVByaXZhdGVTaWduYWwoKSk7 CisgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3Fzb3J0 ZmlsdGVycHJveHltb2RlbC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29y dGZpbHRlcnByb3h5bW9kZWwuY3BwCitpbmRleCBkYzYzNzlkOWZiLi5jNWUyODdlZTg0IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcXNvcnRmaWx0ZXJwcm94eW1v ZGVsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcXNvcnRmaWx0ZXJw cm94eW1vZGVsLmNwcAorQEAgLTkzOSw4ICs5MzksOSBAQCB2b2lkIFFTb3J0RmlsdGVyUHJveHlN b2RlbFByaXZhdGU6Omluc2VydF9zb3VyY2VfaXRlbXMoCisgICAgICAgICAgICAgICAgIHEtPmJl Z2luSW5zZXJ0Q29sdW1ucyhwcm94eV9wYXJlbnQsIHByb3h5X3N0YXJ0LCBwcm94eV9lbmQpOwor ICAgICAgICAgfQorIAorLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb3VyY2VfaXRlbXMu c2l6ZSgpOyArK2kpCistICAgICAgICAgICAgcHJveHlfdG9fc291cmNlLmluc2VydChwcm94eV9z dGFydCArIGksIHNvdXJjZV9pdGVtcy5hdChpKSk7CisrICAgICAgICAvLyBUT0RPOiB1c2UgdGhl IHJhbmdlIFFMaXN0OjppbnNlcnQoKSBvdmVybG9hZCBvbmNlIGl0IGlzIGltcGxlbWVudGVkIChR VEJVRy01ODYzMykuCisrICAgICAgICBwcm94eV90b19zb3VyY2UuaW5zZXJ0KHByb3h5X3N0YXJ0 LCBzb3VyY2VfaXRlbXMuc2l6ZSgpLCAwKTsKKysgICAgICAgIHN0ZDo6Y29weShzb3VyY2VfaXRl bXMuY2JlZ2luKCksIHNvdXJjZV9pdGVtcy5jZW5kKCksIHByb3h5X3RvX3NvdXJjZS5iZWdpbigp ICsgcHJveHlfc3RhcnQpOworIAorICAgICAgICAgYnVpbGRfc291cmNlX3RvX3Byb3h5X21hcHBp bmcocHJveHlfdG9fc291cmNlLCBzb3VyY2VfdG9fcHJveHkpOworIAorQEAgLTMxMjMsOCArMzEy NCw5IEBAIGJvb2wgUVNvcnRGaWx0ZXJQcm94eU1vZGVsOjpmaWx0ZXJBY2NlcHRzUm93KGludCBz b3VyY2Vfcm93LCBjb25zdCBRTW9kZWxJbmRleCAmCisgCisgICAgIGlmIChkLT5maWx0ZXJfZGF0 YS5pc0VtcHR5KCkpCisgICAgICAgICByZXR1cm4gdHJ1ZTsKKysKKysgICAgaW50IGNvbHVtbl9j b3VudCA9IGQtPm1vZGVsLT5jb2x1bW5Db3VudChzb3VyY2VfcGFyZW50KTsKKyAgICAgaWYgKGQt PmZpbHRlcl9jb2x1bW4gPT0gLTEpIHsKKy0gICAgICAgIGludCBjb2x1bW5fY291bnQgPSBkLT5t b2RlbC0+Y29sdW1uQ291bnQoc291cmNlX3BhcmVudCk7CisgICAgICAgICBmb3IgKGludCBjb2x1 bW4gPSAwOyBjb2x1bW4gPCBjb2x1bW5fY291bnQ7ICsrY29sdW1uKSB7CisgICAgICAgICAgICAg UU1vZGVsSW5kZXggc291cmNlX2luZGV4ID0gZC0+bW9kZWwtPmluZGV4KHNvdXJjZV9yb3csIGNv bHVtbiwgc291cmNlX3BhcmVudCk7CisgICAgICAgICAgICAgUVN0cmluZyBrZXkgPSBkLT5tb2Rl bC0+ZGF0YShzb3VyY2VfaW5kZXgsIGQtPmZpbHRlcl9yb2xlKS50b1N0cmluZygpOworQEAgLTMx MzMsOSArMzEzNSwxMCBAQCBib29sIFFTb3J0RmlsdGVyUHJveHlNb2RlbDo6ZmlsdGVyQWNjZXB0 c1JvdyhpbnQgc291cmNlX3JvdywgY29uc3QgUU1vZGVsSW5kZXggJgorICAgICAgICAgfQorICAg ICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CistICAgIFFNb2RlbEluZGV4IHNvdXJjZV9pbmRl eCA9IGQtPm1vZGVsLT5pbmRleChzb3VyY2Vfcm93LCBkLT5maWx0ZXJfY29sdW1uLCBzb3VyY2Vf cGFyZW50KTsKKy0gICAgaWYgKCFzb3VyY2VfaW5kZXguaXNWYWxpZCgpKSAvLyB0aGUgY29sdW1u IG1heSBub3QgZXhpc3QKKysKKysgICAgaWYgKGQtPmZpbHRlcl9jb2x1bW4gPj0gY29sdW1uX2Nv dW50KSAvLyB0aGUgY29sdW1uIG1heSBub3QgZXhpc3QKKyAgICAgICAgIHJldHVybiB0cnVlOwor KyAgICBRTW9kZWxJbmRleCBzb3VyY2VfaW5kZXggPSBkLT5tb2RlbC0+aW5kZXgoc291cmNlX3Jv dywgZC0+ZmlsdGVyX2NvbHVtbiwgc291cmNlX3BhcmVudCk7CisgICAgIFFTdHJpbmcga2V5ID0g ZC0+bW9kZWwtPmRhdGEoc291cmNlX2luZGV4LCBkLT5maWx0ZXJfcm9sZSkudG9TdHJpbmcoKTsK KyAgICAgcmV0dXJuIGQtPmZpbHRlcl9kYXRhLmhhc01hdGNoKGtleSk7CisgfQorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHAgYi9xdGJh c2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fjb3JlYXBwbGljYXRpb24uY3BwCitpbmRleCBjYTI4NjRk ZjgzLi4xMzJiMmVhZTUyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9x Y29yZWFwcGxpY2F0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xY29y ZWFwcGxpY2F0aW9uLmNwcAorQEAgLTExNTcsNyArMTE1Nyw3IEBAIHN0YXRpYyBib29sIGRvTm90 aWZ5KFFPYmplY3QgKnJlY2VpdmVyLCBRRXZlbnQgKmV2ZW50KQorIGJvb2wgUUNvcmVBcHBsaWNh dGlvblByaXZhdGU6OnNlbmRUaHJvdWdoQXBwbGljYXRpb25FdmVudEZpbHRlcnMoUU9iamVjdCAq cmVjZWl2ZXIsIFFFdmVudCAqZXZlbnQpCisgeworICAgICAvLyBXZSBjYW4ndCBhY2Nlc3MgdGhl IGFwcGxpY2F0aW9uIGV2ZW50IGZpbHRlcnMgb3V0c2lkZSBvZiB0aGUgbWFpbiB0aHJlYWQgKHJh Y2UgY29uZGl0aW9ucykKKy0gICAgUV9BU1NFUlQocmVjZWl2ZXItPmRfZnVuYygpLT50aHJlYWRE YXRhLmxvYWRSZWxheGVkKCktPnRocmVhZC5sb2FkQWNxdWlyZSgpID09IG1haW5UaHJlYWQoKSk7 CisrICAgIFFfQVNTRVJUKHJlY2VpdmVyLT5kX2Z1bmMoKS0+dGhyZWFkRGF0YS5sb2FkQWNxdWly ZSgpLT50aHJlYWQubG9hZFJlbGF4ZWQoKSA9PSBtYWluVGhyZWFkKCkpOworIAorICAgICBpZiAo ZXh0cmFEYXRhKSB7CisgICAgICAgICAvLyBhcHBsaWNhdGlvbiBldmVudCBmaWx0ZXJzIGFyZSBv bmx5IGNhbGxlZCBmb3Igb2JqZWN0cyBpbiB0aGUgR1VJIHRocmVhZAorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv a2VybmVsL3FvYmplY3QuY3BwCitpbmRleCAxZWI3OTEzOGQ5Li4zNmNkNzgwZWUxIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0LmNwcAorKysrIGIvcXRiYXNl L3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0LmNwcAorQEAgLTEwMTAsNyArMTAxMCw3IEBAIFFP YmplY3Q6On5RT2JqZWN0KCkKKyAgICAgICAgIGVtaXQgZGVzdHJveWVkKHRoaXMpOworICAgICB9 CisgCistICAgIGlmIChkLT5kZWNsYXJhdGl2ZURhdGEpIHsKKysgICAgaWYgKCFkLT5pc0RlbGV0 aW5nQ2hpbGRyZW4gJiYgZC0+ZGVjbGFyYXRpdmVEYXRhKSB7CisgICAgICAgICBpZiAoc3RhdGlj X2Nhc3Q8UUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhSW1wbCo+KGQtPmRlY2xhcmF0aXZlRGF0YSkt Pm93bmVkQnlRbWwxKSB7CisgICAgICAgICAgICAgaWYgKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0 YTo6ZGVzdHJveWVkX3FtbDEpCisgICAgICAgICAgICAgICAgIFFBYnN0cmFjdERlY2xhcmF0aXZl RGF0YTo6ZGVzdHJveWVkX3FtbDEoZC0+ZGVjbGFyYXRpdmVEYXRhLCB0aGlzKTsKK0BAIC0xNTgw LDcgKzE1ODAsNyBAQCB2b2lkIFFPYmplY3Q6Om1vdmVUb1RocmVhZChRVGhyZWFkICp0YXJnZXRU aHJlYWQpCisgCisgICAgIFFUaHJlYWREYXRhICpjdXJyZW50RGF0YSA9IFFUaHJlYWREYXRhOjpj dXJyZW50KCk7CisgICAgIFFUaHJlYWREYXRhICp0YXJnZXREYXRhID0gdGFyZ2V0VGhyZWFkID8g UVRocmVhZERhdGE6OmdldDIodGFyZ2V0VGhyZWFkKSA6IG51bGxwdHI7CistICAgIFFUaHJlYWRE YXRhICp0aGlzVGhyZWFkRGF0YSA9IGQtPnRocmVhZERhdGEubG9hZFJlbGF4ZWQoKTsKKysgICAg UVRocmVhZERhdGEgKnRoaXNUaHJlYWREYXRhID0gZC0+dGhyZWFkRGF0YS5sb2FkQWNxdWlyZSgp OworICAgICBpZiAoIXRoaXNUaHJlYWREYXRhLT50aHJlYWQubG9hZEFjcXVpcmUoKSAmJiBjdXJy ZW50RGF0YSA9PSB0YXJnZXREYXRhKSB7CisgICAgICAgICAvLyBvbmUgZXhjZXB0aW9uIHRvIHRo ZSBydWxlOiB3ZSBhbGxvdyBtb3Zpbmcgb2JqZWN0cyB3aXRoIG5vIHRocmVhZCBhZmZpbml0eSB0 byB0aGUgY3VycmVudCB0aHJlYWQKKyAgICAgICAgIGN1cnJlbnREYXRhID0gZC0+dGhyZWFkRGF0 YTsKK0BAIC0yNjIwLDcgKzI2MjAsNyBAQCBpbnQgUU9iamVjdDo6cmVjZWl2ZXJzKGNvbnN0IGNo YXIgKnNpZ25hbCkgY29uc3QKKyAgICAgICAgIGlmICghZC0+aXNTaWduYWxDb25uZWN0ZWQoc2ln bmFsX2luZGV4KSkKKyAgICAgICAgICAgICByZXR1cm4gcmVjZWl2ZXJzOworIAorLSAgICAgICAg aWYgKGQtPmRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnJlY2Vp dmVycykgeworKyAgICAgICAgaWYgKCFkLT5pc0RlbGV0aW5nQ2hpbGRyZW4gJiYgZC0+ZGVjbGFy YXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6cmVjZWl2ZXJzKSB7CisgICAg ICAgICAgICAgcmVjZWl2ZXJzICs9IFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6cmVjZWl2ZXJz KGQtPmRlY2xhcmF0aXZlRGF0YSwgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsX2luZGV4KTsKKyAgICAgICAg IH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oIGIv cXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaAoraW5kZXggMGI4MjdhNTJjYS4u MTNmZmI4ODk5OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVj dF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdF9wLmgKK0BAIC00 NDQsNyArNDQ0LDcgQEAgaW5saW5lIHZvaWQgUU9iamVjdFByaXZhdGU6OmNoZWNrRm9ySW5jb21w YXRpYmxlTGlicmFyeVZlcnNpb24oaW50IHZlcnNpb24pIGNvbnMKKyAKKyBpbmxpbmUgYm9vbCBR T2JqZWN0UHJpdmF0ZTo6aXNEZWNsYXJhdGl2ZVNpZ25hbENvbm5lY3RlZCh1aW50IHNpZ25hbF9p bmRleCkgY29uc3QKKyB7CistICAgIHJldHVybiBkZWNsYXJhdGl2ZURhdGEgJiYgUUFic3RyYWN0 RGVjbGFyYXRpdmVEYXRhOjppc1NpZ25hbENvbm5lY3RlZAorKyAgICByZXR1cm4gIWlzRGVsZXRp bmdDaGlsZHJlbiAmJiBkZWNsYXJhdGl2ZURhdGEgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRh Ojppc1NpZ25hbENvbm5lY3RlZAorICAgICAgICAgICAgICYmIFFBYnN0cmFjdERlY2xhcmF0aXZl RGF0YTo6aXNTaWduYWxDb25uZWN0ZWQoZGVjbGFyYXRpdmVEYXRhLCBxX2Z1bmMoKSwgc2lnbmFs X2luZGV4KTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9x dHJhbnNsYXRvci5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3F0cmFuc2xhdG9yLmNw cAoraW5kZXggMjgxMmZmYjdlYS4uYmMwMTc3YzVlYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Y29yZWxpYi9rZXJuZWwvcXRyYW5zbGF0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv a2VybmVsL3F0cmFuc2xhdG9yLmNwcAorQEAgLTkwMiw3ICs5MDIsNyBAQCBzdGF0aWMgUVN0cmlu ZyBnZXRNZXNzYWdlKGNvbnN0IHVjaGFyICptLCBjb25zdCB1Y2hhciAqZW5kLCBjb25zdCBjaGFy ICpjb250ZXh0LAorICAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICAgY2FzZSBUYWdfVHJh bnNsYXRpb246IHsKKyAgICAgICAgICAgICBpbnQgbGVuID0gcmVhZDMyKG0pOworLSAgICAgICAg ICAgIGlmIChsZW4gJSAxKQorKyAgICAgICAgICAgIGlmIChsZW4gJiAxKQorICAgICAgICAgICAg ICAgICByZXR1cm4gUVN0cmluZygpOworICAgICAgICAgICAgIG0gKz0gNDsKKyAgICAgICAgICAg ICBpZiAoIW51bWVydXMtLSkgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1l dHlwZXMvcW1pbWVkYXRhYmFzZS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3Ft aW1lZGF0YWJhc2UuY3BwCitpbmRleCA5ZGUyMmNlZjMzLi5mZjg2OGEzMjY4IDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlLmNwcAorKysrIGIv cXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlLmNwcAorQEAgLTM4OSwy MCArMzg5LDIzIEBAIFFNaW1lVHlwZSBRTWltZURhdGFiYXNlUHJpdmF0ZTo6bWltZVR5cGVGb3JG aWxlTmFtZUFuZERhdGEoY29uc3QgUVN0cmluZyAmZmlsZU5hCisgICAgICAgICAvLyBEaXNhbWJp Z3VhdGUgY29uZmxpY3RpbmcgZXh0ZW5zaW9ucyAoaWYgbWFnaWMgbWF0Y2hpbmcgZm91bmQgc29t ZXRoaW5nKQorICAgICAgICAgaWYgKGNhbmRpZGF0ZUJ5RGF0YS5pc1ZhbGlkKCkgJiYgbWFnaWNB Y2N1cmFjeSA+IDApIHsKKyAgICAgICAgICAgICBjb25zdCBRU3RyaW5nIHNuaWZmZWRNaW1lID0g Y2FuZGlkYXRlQnlEYXRhLm5hbWUoKTsKKy0gICAgICAgICAgICAvLyBJZiB0aGUgc25pZmZlZE1p bWUgbWF0Y2hlcyBhIGdsb2IgbWF0Y2gsIHVzZSBpdAorKyAgICAgICAgICAgIC8vIElmIHRoZSBz bmlmZmVkTWltZSBtYXRjaGVzIGEgaGlnaGVzdC13ZWlnaHQgZ2xvYiBtYXRjaCwgdXNlIGl0Cisg ICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXNCeU5hbWUubV9tYXRjaGluZ01pbWVUeXBlcy5jb250 YWlucyhzbmlmZmVkTWltZSkpIHsKKyAgICAgICAgICAgICAgICAgKmFjY3VyYWN5UHRyID0gMTAw OworICAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlQnlEYXRhOworICAgICAgICAgICAg IH0KKy0gICAgICAgICAgICBmb3IgKGNvbnN0IFFTdHJpbmcgJm0gOiBxQXNDb25zdChjYW5kaWRh dGVzQnlOYW1lLm1fbWF0Y2hpbmdNaW1lVHlwZXMpKSB7CisrICAgICAgICAgICAgZm9yIChjb25z dCBRU3RyaW5nICZtIDogcUFzQ29uc3QoY2FuZGlkYXRlc0J5TmFtZS5tX2FsbE1hdGNoaW5nTWlt ZVR5cGVzKSkgeworICAgICAgICAgICAgICAgICBpZiAoaW5oZXJpdHMobSwgc25pZmZlZE1pbWUp KSB7CisgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIG1hZ2ljICsgcGF0dGVybiBwb2lu dGluZyB0byB0aGlzLCBzbyBpdCdzIGEgcHJldHR5IGdvb2QgbWF0Y2gKKyAgICAgICAgICAgICAg ICAgICAgICphY2N1cmFjeVB0ciA9IDEwMDsKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBt aW1lVHlwZUZvck5hbWUobSk7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9Cist ICAgICAgICAgICAgKmFjY3VyYWN5UHRyID0gbWFnaWNBY2N1cmFjeTsKKy0gICAgICAgICAgICBy ZXR1cm4gY2FuZGlkYXRlQnlEYXRhOworKyAgICAgICAgICAgIGlmIChjYW5kaWRhdGVzQnlOYW1l Lm1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMuaXNFbXB0eSgpKSB7CisrICAgICAgICAgICAgICAgIC8v IE5vIGdsb2IsIHVzZSBtYWdpYworKyAgICAgICAgICAgICAgICAqYWNjdXJhY3lQdHIgPSBtYWdp Y0FjY3VyYWN5OworKyAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlQnlEYXRhOworKyAg ICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVybi5jcHAgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvbWltZXR5cGVzL3FtaW1lZ2xvYnBhdHRlcm4uY3BwCitpbmRleCBhODExMTJkMjI3Li5m YThmNGM1NDVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWlt ZWdsb2JwYXR0ZXJuLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWlt ZWdsb2JwYXR0ZXJuLmNwcAorQEAgLTgzLDcgKzgzLDEwIEBAIHZvaWQgUU1pbWVHbG9iTWF0Y2hS ZXN1bHQ6OmFkZE1hdGNoKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlLCBpbnQgd2VpZ2h0LCBjb25z dCBRCisgICAgIH0KKyAgICAgaWYgKCFtX21hdGNoaW5nTWltZVR5cGVzLmNvbnRhaW5zKG1pbWVU eXBlKSkgeworICAgICAgICAgbV9tYXRjaGluZ01pbWVUeXBlcy5hcHBlbmQobWltZVR5cGUpOwor LSAgICAgICAgbV9hbGxNYXRjaGluZ01pbWVUeXBlcy5hcHBlbmQobWltZVR5cGUpOworKyAgICAg ICAgaWYgKHJlcGxhY2UpCisrICAgICAgICAgICAgbV9hbGxNYXRjaGluZ01pbWVUeXBlcy5wcmVw ZW5kKG1pbWVUeXBlKTsgLy8gaGlnaGVzdC13ZWlnaHQgZmlyc3QKKysgICAgICAgIGVsc2UKKysg ICAgICAgICAgICBtX2FsbE1hdGNoaW5nTWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7CisgICAg ICAgICBtX2tub3duU3VmZml4TGVuZ3RoID0ga25vd25TdWZmaXhMZW5ndGg7CisgICAgIH0KKyB9 CitAQCAtOTQsNyArOTcsNyBAQCBRTWltZUdsb2JQYXR0ZXJuOjpQYXR0ZXJuVHlwZSBRTWltZUds b2JQYXR0ZXJuOjpkZXRlY3RQYXR0ZXJuVHlwZShjb25zdCBRU3RyaW5nCisgICAgIGlmICghcGF0 dGVybkxlbmd0aCkKKyAgICAgICAgIHJldHVybiBPdGhlclBhdHRlcm47CisgCistICAgIGNvbnN0 IGJvb2wgc3RhckNvdW50ID0gcGF0dGVybi5jb3VudChRTGF0aW4xQ2hhcignKicpKSA9PSAxOwor KyAgICBjb25zdCBpbnQgc3RhckNvdW50ID0gcGF0dGVybi5jb3VudChRTGF0aW4xQ2hhcignKicp KTsKKyAgICAgY29uc3QgYm9vbCBoYXNTcXVhcmVCcmFja2V0ID0gcGF0dGVybi5pbmRleE9mKFFM YXRpbjFDaGFyKCdbJykpICE9IC0xOworICAgICBjb25zdCBib29sIGhhc1F1ZXN0aW9uTWFyayA9 IHBhdHRlcm4uaW5kZXhPZihRTGF0aW4xQ2hhcignPycpKSAhPSAtMTsKKyAKK0BAIC0xMDYsMTAg KzEwOSwxMCBAQCBRTWltZUdsb2JQYXR0ZXJuOjpQYXR0ZXJuVHlwZSBRTWltZUdsb2JQYXR0ZXJu OjpkZXRlY3RQYXR0ZXJuVHlwZShjb25zdCBRU3RyaW5nCisgICAgICAgICAgICAgLy8gUGF0dGVy bnMgbGlrZSAiUkVBRE1FKiIgKHdlbGwgdGhpcyBpcyBjdXJyZW50bHkgdGhlIG9ubHkgb25lIGxp a2UgdGhhdC4uLikKKyAgICAgICAgICAgICBpZiAocGF0dGVybi5hdChwYXR0ZXJuTGVuZ3RoIC0g MSkgPT0gUUxhdGluMUNoYXIoJyonKSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIFByZWZpeFBh dHRlcm47CistICAgICAgICB9CistICAgICAgICAvLyBOYW1lcyB3aXRob3V0IGFueSB3aWxkY2Fy ZHMgbGlrZSAiUkVBRE1FIgorLSAgICAgICAgaWYgKHN0YXJDb3VudCA9PSAwKQorKyAgICAgICAg fSBlbHNlIGlmIChzdGFyQ291bnQgPT0gMCkgeworKyAgICAgICAgICAgIC8vIE5hbWVzIHdpdGhv dXQgYW55IHdpbGRjYXJkcyBsaWtlICJSRUFETUUiCisgICAgICAgICAgICAgcmV0dXJuIExpdGVy YWxQYXR0ZXJuOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIGlmIChwYXR0ZXJuID09IFFM YXRpbjFTdHJpbmcoIlswLTldWzAtOV1bMC05XS52ZHIiKSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3BwIGIvcXRiYXNlL3NyYy9jb3Jl bGliL21pbWV0eXBlcy9xbWltZXByb3ZpZGVyLmNwcAoraW5kZXggMjU4ZGRkZjhjYi4uNDY0MmQw ZjJkMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVwcm92 aWRlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVwcm92aWRl ci5jcHAKK0BAIC0yNDQsMTUgKzI0NCwxOCBAQCB2b2lkIFFNaW1lQmluYXJ5UHJvdmlkZXI6OmFk ZEZpbGVOYW1lTWF0Y2hlcyhjb25zdCBRU3RyaW5nICZmaWxlTmFtZSwgUU1pbWVHbG9iTQorICAg ICBjb25zdCBRU3RyaW5nIGxvd2VyRmlsZU5hbWUgPSBmaWxlTmFtZS50b0xvd2VyKCk7CisgICAg IC8vIENoZWNrIGxpdGVyYWxzIChlLmcuICJNYWtlZmlsZSIpCisgICAgIG1hdGNoR2xvYkxpc3Qo cmVzdWx0LCBtX2NhY2hlRmlsZSwgbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQb3NMaXRlcmFsTGlz dE9mZnNldCksIGZpbGVOYW1lKTsKKy0gICAgLy8gQ2hlY2sgY29tcGxleCBnbG9icyAoZS5nLiAi Y2FsbGdyaW5kLm91dFswLTldKiIpCistICAgIG1hdGNoR2xvYkxpc3QocmVzdWx0LCBtX2NhY2hl RmlsZSwgbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQb3NHbG9iTGlzdE9mZnNldCksIGZpbGVOYW1l KTsKKyAgICAgLy8gQ2hlY2sgdGhlIHZlcnkgY29tbW9uICoudHh0IGNhc2VzIHdpdGggdGhlIHN1 ZmZpeCB0cmVlCistICAgIGNvbnN0IGludCByZXZlcnNlU3VmZml4VHJlZU9mZnNldCA9IG1fY2Fj aGVGaWxlLT5nZXRVaW50MzIoUG9zUmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQpOworLSAgICBjb25z dCBpbnQgbnVtUm9vdHMgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKHJldmVyc2VTdWZmaXhUcmVl T2Zmc2V0KTsKKy0gICAgY29uc3QgaW50IGZpcnN0Um9vdE9mZnNldCA9IG1fY2FjaGVGaWxlLT5n ZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgKyA0KTsKKy0gICAgbWF0Y2hTdWZmaXhU cmVlKHJlc3VsdCwgbV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJvb3RPZmZzZXQsIGxvd2Vy RmlsZU5hbWUsIGxvd2VyRmlsZU5hbWUubGVuZ3RoKCkgLSAxLCBmYWxzZSk7CisrICAgIGlmIChy ZXN1bHQubV9tYXRjaGluZ01pbWVUeXBlcy5pc0VtcHR5KCkpIHsKKysgICAgICAgIGNvbnN0IGlu dCByZXZlcnNlU3VmZml4VHJlZU9mZnNldCA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIoUG9zUmV2 ZXJzZVN1ZmZpeFRyZWVPZmZzZXQpOworKyAgICAgICAgY29uc3QgaW50IG51bVJvb3RzID0gbV9j YWNoZUZpbGUtPmdldFVpbnQzMihyZXZlcnNlU3VmZml4VHJlZU9mZnNldCk7CisrICAgICAgICBj b25zdCBpbnQgZmlyc3RSb290T2Zmc2V0ID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihyZXZlcnNl U3VmZml4VHJlZU9mZnNldCArIDQpOworKyAgICAgICAgbWF0Y2hTdWZmaXhUcmVlKHJlc3VsdCwg bV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJvb3RPZmZzZXQsIGxvd2VyRmlsZU5hbWUsIGxv d2VyRmlsZU5hbWUubGVuZ3RoKCkgLSAxLCBmYWxzZSk7CisrICAgICAgICBpZiAocmVzdWx0Lm1f bWF0Y2hpbmdNaW1lVHlwZXMuaXNFbXB0eSgpKQorKyAgICAgICAgICAgIG1hdGNoU3VmZml4VHJl ZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1Sb290cywgZmlyc3RSb290T2Zmc2V0LCBmaWxlTmFt ZSwgZmlsZU5hbWUubGVuZ3RoKCkgLSAxLCB0cnVlKTsKKysgICAgfQorKyAgICAvLyBDaGVjayBj b21wbGV4IGdsb2JzIChlLmcuICJjYWxsZ3JpbmQub3V0WzAtOV0qIiBvciAiUkVBRE1FKiIpCisg ICAgIGlmIChyZXN1bHQubV9tYXRjaGluZ01pbWVUeXBlcy5pc0VtcHR5KCkpCistICAgICAgICBt YXRjaFN1ZmZpeFRyZWUocmVzdWx0LCBtX2NhY2hlRmlsZSwgbnVtUm9vdHMsIGZpcnN0Um9vdE9m ZnNldCwgZmlsZU5hbWUsIGZpbGVOYW1lLmxlbmd0aCgpIC0gMSwgdHJ1ZSk7CisrICAgICAgICBt YXRjaEdsb2JMaXN0KHJlc3VsdCwgbV9jYWNoZUZpbGUsIG1fY2FjaGVGaWxlLT5nZXRVaW50MzIo UG9zR2xvYkxpc3RPZmZzZXQpLCBmaWxlTmFtZSk7CisgfQorIAorIHZvaWQgUU1pbWVCaW5hcnlQ cm92aWRlcjo6bWF0Y2hHbG9iTGlzdChRTWltZUdsb2JNYXRjaFJlc3VsdCAmcmVzdWx0LCBDYWNo ZUZpbGUgKmNhY2hlRmlsZSwgaW50IG9mZiwgY29uc3QgUVN0cmluZyAmZmlsZU5hbWUpCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcWpzb25wYXJzZXIuY3Bw IGIvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcWpzb25wYXJzZXIuY3BwCitpbmRl eCAxN2U2ZjExMWFiLi4yZTQwYjZjOGZiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGli L3NlcmlhbGl6YXRpb24vcWpzb25wYXJzZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv c2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5jcHAKK0BAIC0zNzksMTAgKzM3OSwzMCBAQCBlcnJv cjoKKyAgICAgcmV0dXJuIFFDYm9yVmFsdWUoKTsKKyB9CisgCisrLy8gV2UgbmVlZCB0byByZXRh aW4gdGhlIF9sYXN0XyB2YWx1ZSBmb3IgYW55IGR1cGxpY2F0ZSBrZXlzIGFuZCB3ZSBuZWVkIHRv IGRlcmVmIGNvbnRhaW5lcnMuCisrLy8gVGhlcmVmb3JlIHRoZSBtYW51YWwgaW1wbGVtZW50YXRp b24gb2Ygc3RkOjp1bmlxdWUoKS4KKyt0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5h bWUgQ29tcGFyZSwgdHlwZW5hbWUgQXNzaWduPgorK3N0YXRpYyBJdGVyYXRvciBjdXN0b21Bc3Np Z25pbmdVbmlxdWVMYXN0KEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBhcmUgY29tcGFyZSwgQXNzaWdu IGFzc2lnbikKKyt7CisrICAgIGZpcnN0ID0gc3RkOjphZGphY2VudF9maW5kKGZpcnN0LCBsYXN0 LCBjb21wYXJlKTsKKysgICAgaWYgKGZpcnN0ID09IGxhc3QpCisrICAgICAgICByZXR1cm4gbGFz dDsKKysKKysgICAgSXRlcmF0b3IgcmVzdWx0ID0gZmlyc3Q7CisrICAgIHdoaWxlICgrK2ZpcnN0 ICE9IGxhc3QpIHsKKysgICAgICAgIGlmICghY29tcGFyZSgqcmVzdWx0LCAqZmlyc3QpKQorKyAg ICAgICAgICAgICsrcmVzdWx0OworKyAgICAgICAgaWYgKHJlc3VsdCAhPSBmaXJzdCkKKysgICAg ICAgICAgICBhc3NpZ24oKnJlc3VsdCwgKmZpcnN0KTsKKysgICAgfQorKworKyAgICByZXR1cm4g KytyZXN1bHQ7CisrfQorKworIHN0YXRpYyB2b2lkIHNvcnRDb250YWluZXIoUUNib3JDb250YWlu ZXJQcml2YXRlICpjb250YWluZXIpCisgeworICAgICB1c2luZyBGb3J3YXJkID0gUUpzb25Qcml2 YXRlOjpLZXlJdGVyYXRvcjsKKy0gICAgdXNpbmcgUmV2ZXJzZSA9IHN0ZDo6cmV2ZXJzZV9pdGVy YXRvcjxGb3J3YXJkPjsKKyAgICAgdXNpbmcgVmFsdWUgPSBGb3J3YXJkOjp2YWx1ZV90eXBlOwor IAorICAgICBhdXRvIGNvbXBhcmUgPSBbY29udGFpbmVyXShjb25zdCBWYWx1ZSAmYSwgY29uc3Qg VmFsdWUgJmIpCitAQCAtNDIwLDE3ICs0NDAsMzEgQEAgc3RhdGljIHZvaWQgc29ydENvbnRhaW5l cihRQ2JvckNvbnRhaW5lclByaXZhdGUgKmNvbnRhaW5lcikKKyAgICAgICAgIH0KKyAgICAgfTsK KyAKKy0gICAgc3RkOjpzb3J0KEZvcndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpKSwg Rm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmVuZCgpKSwKKy0gICAgICAgICAgICAgIFsmY29t cGFyZV0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7IHJldHVybiBjb21wYXJlKGEs IGIpIDwgMDsgfSk7CisrICAgIC8vIFRoZSBlbGVtZW50cycgY29udGFpbmVycyBhcmUgb3duZWQg YnkgdGhlIG91dGVyIGNvbnRhaW5lciwgbm90IGJ5IHRoZSBlbGVtZW50cyB0aGVtc2VsdmVzLgor KyAgICBhdXRvIG1vdmUgPSBbXShGb3J3YXJkOjpyZWZlcmVuY2UgdGFyZ2V0LCBGb3J3YXJkOjpy ZWZlcmVuY2Ugc291cmNlKQorKyAgICB7CisrICAgICAgICBRdENib3I6OkVsZW1lbnQgJnRhcmdl dFZhbHVlID0gdGFyZ2V0LnZhbHVlKCk7CisrCisrICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGhh cyBhIGNvbnRhaW5lciwgZGVyZWYgaXQgYmVmb3JlIG92ZXJ3cml0aW5nLCBzbyB0aGF0IHdlIGRv bid0IGxlYWsuCisrICAgICAgICBpZiAodGFyZ2V0VmFsdWUuZmxhZ3MgJiBRdENib3I6OkVsZW1l bnQ6OklzQ29udGFpbmVyKQorKyAgICAgICAgICAgIHRhcmdldFZhbHVlLmNvbnRhaW5lci0+ZGVy ZWYoKTsKKysKKysgICAgICAgIC8vIERvIG5vdCBtb3ZlLCBzbyB0aGF0IHdlIGNhbiBjbGVhciB0 aGUgdmFsdWUgYWZ0ZXJ3YXJkcy4KKysgICAgICAgIHRhcmdldCA9IHNvdXJjZTsKKysKKysgICAg ICAgIC8vIENsZWFyIHRoZSBzb3VyY2UgdmFsdWUsIHNvIHRoYXQgd2UgZG9uJ3Qgc3RvcmUgdGhl IHNhbWUgY29udGFpbmVyIHR3aWNlLgorKyAgICAgICAgc291cmNlLnZhbHVlKCkgPSBRdENib3I6 OkVsZW1lbnQoKTsKKysgICAgfTsKKysKKysgICAgc3RkOjpzdGFibGVfc29ydCgKKysgICAgICAg ICAgICAgICAgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmJlZ2luKCkpLCBGb3J3YXJkKGNv bnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpLAorKyAgICAgICAgICAgICAgICBbJmNvbXBhcmVdKGNv bnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikgeyByZXR1cm4gY29tcGFyZShhLCBiKSA8IDA7 IH0pOworIAorLSAgICAvLyBXZSBuZWVkIHRvIHJldGFpbiB0aGUgX2xhc3RfIHZhbHVlIGZvciBh bnkgZHVwbGljYXRlIGtleXMuIFRoZXJlZm9yZSB0aGUgcmV2ZXJzZSBkYW5jZSBoZXJlLgorLSAg ICBhdXRvIGl0ID0gc3RkOjp1bmlxdWUoUmV2ZXJzZShjb250YWluZXItPmVsZW1lbnRzLmVuZCgp KSwgUmV2ZXJzZShjb250YWluZXItPmVsZW1lbnRzLmJlZ2luKCkpLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgWyZjb21wYXJlXShjb25zdCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUgJmIpIHsK Ky0gICAgICAgIHJldHVybiBjb21wYXJlKGEsIGIpID09IDA7CistICAgIH0pLmJhc2UoKS5lbGVt ZW50c0l0ZXJhdG9yKCk7CisrICAgIEZvcndhcmQgcmVzdWx0ID0gY3VzdG9tQXNzaWduaW5nVW5p cXVlTGFzdCgKKysgICAgICAgICAgICAgICAgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmJl Z2luKCkpLCAgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmVuZCgpKSwKKysgICAgICAgICAg ICAgICAgWyZjb21wYXJlXShjb25zdCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUgJmIpIHsgcmV0dXJu IGNvbXBhcmUoYSwgYikgPT0gMDsgfSwgbW92ZSk7CisgCistICAgIC8vIFRoZSBlcmFzZSBmcm9t IGJlZ2lubmluZyBpcyBleHBlbnNpdmUgYnV0IGhvcGVmdWxseSByYXJlLgorLSAgICBjb250YWlu ZXItPmVsZW1lbnRzLmVyYXNlKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSwgaXQpOworKyAg ICBjb250YWluZXItPmVsZW1lbnRzLmVyYXNlKHJlc3VsdC5lbGVtZW50c0l0ZXJhdG9yKCksIGNv bnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpOworIH0KKyAKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1sc3RyZWFtLmNwcCBiL3F0YmFzZS9zcmMvY29y ZWxpYi9zZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3BwCitpbmRleCBiMmY4NDY1NDRkLi43Y2Q0 NTdiYTNhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcXht bHN0cmVhbS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3F4bWxz dHJlYW0uY3BwCitAQCAtOTgwLDcgKzk4MCw3IEBAIGlubGluZSB1aW50IFFYbWxTdHJlYW1SZWFk ZXJQcml2YXRlOjpwZWVrQ2hhcigpCisgYm9vbCBRWG1sU3RyZWFtUmVhZGVyUHJpdmF0ZTo6c2Nh blVudGlsKGNvbnN0IGNoYXIgKnN0ciwgc2hvcnQgdG9rZW5Ub0luamVjdCkKKyB7CisgICAgIGlu dCBwb3MgPSB0ZXh0QnVmZmVyLnNpemUoKTsKKy0gICAgaW50IG9sZExpbmVOdW1iZXIgPSBsaW5l TnVtYmVyOworKyAgICBjb25zdCBhdXRvIG9sZExpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOworIAor ICAgICB1aW50IGM7CisgICAgIHdoaWxlICgoYyA9IGdldENoYXIoKSkgIT0gU3RyZWFtRU9GKSB7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZy5jcHAgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcAoraW5kZXggM2U4OGFiNDg1OS4uOGRlZWFl NDdiYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmcuY3BwCisr KysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcAorQEAgLTEyMzEyLDcgKzEy MzEyLDcgQEAgc3RhdGljIHFzaXpldHlwZSBxTGFzdEluZGV4T2YoSGF5c3RhY2sgaGF5c3RhY2sw LCBxc2l6ZXR5cGUgZnJvbSwKKyAgICAgY29uc3QgYXV0byBuZWVkbGUgPSBuZWVkbGUwLmRhdGEo KTsKKyAgICAgY29uc3QgYXV0byAqZW5kID0gaGF5c3RhY2s7CisgICAgIGhheXN0YWNrICs9IGZy b207CistICAgIGNvbnN0IHN0ZDo6c2l6ZV90IHNsX21pbnVzXzEgPSBzbCAtIDE7CisrICAgIGNv bnN0IHN0ZDo6c2l6ZV90IHNsX21pbnVzXzEgPSBzbCA/IHNsIC0gMSA6IDA7CisgICAgIGNvbnN0 IGF1dG8gKm4gPSBuZWVkbGUgKyBzbF9taW51c18xOworICAgICBjb25zdCBhdXRvICpoID0gaGF5 c3RhY2sgKyBzbF9taW51c18xOworICAgICBzdGQ6OnNpemVfdCBoYXNoTmVlZGxlID0gMCwgaGFz aEhheXN0YWNrID0gMDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3Ry aW5naXRlcmF0b3JfcC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZ2l0ZXJhdG9y X3AuaAoraW5kZXggMjE5NTg5YjZlNC4uMWQwYzY2Y2M3OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvY29yZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRvcl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvY29y ZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRvcl9wLmgKK0BAIC02MSw2ICs2MSw4IEBAIGNsYXNzIFFT dHJpbmdJdGVyYXRvcgorIHsKKyAgICAgUVN0cmluZzo6Y29uc3RfaXRlcmF0b3IgaSwgcG9zLCBl OworICAgICBRX1NUQVRJQ19BU1NFUlQoKHN0ZDo6aXNfc2FtZTxRU3RyaW5nOjpjb25zdF9pdGVy YXRvciwgY29uc3QgUUNoYXIgKj46OnZhbHVlKSk7CisrICAgIHN0YXRpYyBib29sIGxlc3MoY29u c3QgUUNoYXIgKmxocywgY29uc3QgUUNoYXIgKnJocykgbm9leGNlcHQKKysgICAgeyByZXR1cm4g c3RkOjpsZXNzPFFTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPnt9KGxocywgcmhzKTsgfQorIHB1Ymxp YzoKKyAgICAgZXhwbGljaXQgUVN0cmluZ0l0ZXJhdG9yKFFTdHJpbmdWaWV3IHN0cmluZywgcXNp emV0eXBlIGlkeCA9IDApCisgICAgICAgICA6IGkoc3RyaW5nLmJlZ2luKCkpLAorQEAgLTk1LDcg Kzk3LDggQEAgcHVibGljOgorIAorICAgICBpbmxpbmUgdm9pZCBzZXRQb3NpdGlvbihRU3RyaW5n Ojpjb25zdF9pdGVyYXRvciBwb3NpdGlvbikKKyAgICAgeworLSAgICAgICAgUV9BU1NFUlRfWChp IDw9IHBvc2l0aW9uICYmIHBvc2l0aW9uIDw9IGUsIFFfRlVOQ19JTkZPLCAicG9zaXRpb24gb3V0 IG9mIGJvdW5kcyIpOworKyAgICAgICAgUV9BU1NFUlRfWCghbGVzcyhwb3NpdGlvbiwgaSkgJiYg IWxlc3MoZSwgcG9zaXRpb24pLAorKyAgICAgICAgICAgICAgICAgICBRX0ZVTkNfSU5GTywgInBv c2l0aW9uIG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgIHBvcyA9IHBvc2l0aW9uOworICAgICB9 CisgCitAQCAtMTAzLDcgKzEwNiw3IEBAIHB1YmxpYzoKKyAKKyAgICAgaW5saW5lIGJvb2wgaGFz TmV4dCgpIGNvbnN0CisgICAgIHsKKy0gICAgICAgIHJldHVybiBwb3MgPCBlOworKyAgICAgICAg cmV0dXJuIGxlc3MocG9zLCBlKTsKKyAgICAgfQorIAorICAgICBpbmxpbmUgdm9pZCBhZHZhbmNl KCkKK0BAIC0xMjAsMTYgKzEyMywyMCBAQCBwdWJsaWM6CisgICAgIHsKKyAgICAgICAgIFFfQVNT RVJUX1goaGFzTmV4dCgpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIG5leHQgaXRl bSIpOworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkoKHBvcysrKS0+aXNIaWdoU3Vycm9nYXRl KCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkoKHBvcysrKS0+aXNIaWdoU3Vycm9nYXRlKCkp KSB7CisrICAgICAgICAgICAgUV9BU1NFUlQoaGFzTmV4dCgpICYmIHBvcy0+aXNMb3dTdXJyb2dh dGUoKSk7CisgICAgICAgICAgICAgKytwb3M7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAg aW5saW5lIHVpbnQgcGVla05leHRVbmNoZWNrZWQoKSBjb25zdAorICAgICB7CisgICAgICAgICBR X0FTU0VSVF9YKGhhc05leHQoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBuZXh0 IGl0ZW0iKTsKKyAKKy0gICAgICAgIGlmIChRX1VOTElLRUxZKHBvcy0+aXNIaWdoU3Vycm9nYXRl KCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkocG9zLT5pc0hpZ2hTdXJyb2dhdGUoKSkpIHsK KysgICAgICAgICAgICBRX0FTU0VSVChsZXNzKHBvcyArIDEsIGUpICYmIHBvc1sxXS5pc0xvd1N1 cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNChw b3NbMF0sIHBvc1sxXSk7CisrICAgICAgICB9CisgCisgICAgICAgICByZXR1cm4gcG9zLT51bmlj b2RlKCk7CisgICAgIH0KK0BAIC0xNTUsOCArMTYyLDEwIEBAIHB1YmxpYzoKKyAgICAgICAgIFFf QVNTRVJUX1goaGFzTmV4dCgpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIG5leHQg aXRlbSIpOworIAorICAgICAgICAgY29uc3QgUUNoYXIgY3VyID0gKnBvcysrOworLSAgICAgICAg aWYgKFFfVU5MSUtFTFkoY3VyLmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VO TElLRUxZKGN1ci5pc0hpZ2hTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VSVCho YXNOZXh0KCkgJiYgcG9zLT5pc0xvd1N1cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICByZXR1cm4g UUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNChjdXIsICpwb3MrKyk7CisrICAgICAgICB9CisgICAgICAg ICByZXR1cm4gY3VyLnVuaWNvZGUoKTsKKyAgICAgfQorIAorQEAgLTE2Niw3ICsxNzUsNyBAQCBw dWJsaWM6CisgCisgICAgICAgICBjb25zdCBRQ2hhciB1YyA9ICpwb3MrKzsKKyAgICAgICAgIGlm IChRX1VOTElLRUxZKHVjLmlzU3Vycm9nYXRlKCkpKSB7CistICAgICAgICAgICAgaWYgKFFfTElL RUxZKHVjLmlzSGlnaFN1cnJvZ2F0ZSgpICYmIHBvcyA8IGUgJiYgcG9zLT5pc0xvd1N1cnJvZ2F0 ZSgpKSkKKysgICAgICAgICAgICBpZiAoUV9MSUtFTFkodWMuaXNIaWdoU3Vycm9nYXRlKCkgJiYg aGFzTmV4dCgpICYmIHBvcy0+aXNMb3dTdXJyb2dhdGUoKSkpCisgICAgICAgICAgICAgICAgIHJl dHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KHVjLCAqcG9zKyspOworICAgICAgICAgICAgIHJl dHVybiBpbnZhbGlkQXM7CisgICAgICAgICB9CitAQCAtMTc4LDcgKzE4Nyw3IEBAIHB1YmxpYzoK KyAKKyAgICAgaW5saW5lIGJvb2wgaGFzUHJldmlvdXMoKSBjb25zdAorICAgICB7CistICAgICAg ICByZXR1cm4gcG9zID4gaTsKKysgICAgICAgIHJldHVybiBsZXNzKGksIHBvcyk7CisgICAgIH0K KyAKKyAgICAgaW5saW5lIHZvaWQgcmVjZWRlKCkKK0BAIC0xOTYsMTYgKzIwNSwyMCBAQCBwdWJs aWM6CisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUX1goaGFzUHJldmlvdXMoKSwgUV9GVU5DX0lO Rk8sICJpdGVyYXRvciBoYXNuJ3QgYSBwcmV2aW91cyBpdGVtIik7CisgCistICAgICAgICBpZiAo UV9VTkxJS0VMWSgoLS1wb3MpLT5pc0xvd1N1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VO TElLRUxZKCgtLXBvcyktPmlzTG93U3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NF UlQoaGFzUHJldmlvdXMoKSAmJiBwb3NbLTFdLmlzSGlnaFN1cnJvZ2F0ZSgpKTsKKyAgICAgICAg ICAgICAtLXBvczsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICBpbmxpbmUgdWludCBwZWVr UHJldmlvdXNVbmNoZWNrZWQoKSBjb25zdAorICAgICB7CisgICAgICAgICBRX0FTU0VSVF9YKGhh c1ByZXZpb3VzKCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgcHJldmlvdXMgaXRl bSIpOworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkocG9zWy0xXS5pc0xvd1N1cnJvZ2F0ZSgp KSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKHBvc1stMV0uaXNMb3dTdXJyb2dhdGUoKSkpIHsK KysgICAgICAgICAgICBRX0FTU0VSVChsZXNzKGkgKyAxLCBwb3MpICYmIHBvc1stMl0uaXNIaWdo U3Vycm9nYXRlKCkpOworICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0 KHBvc1stMl0sIHBvc1stMV0pOworKyAgICAgICAgfQorICAgICAgICAgcmV0dXJuIHBvc1stMV0u dW5pY29kZSgpOworICAgICB9CisgCitAQCAtMjMwLDggKzI0MywxMCBAQCBwdWJsaWM6CisgICAg ICAgICBRX0FTU0VSVF9YKGhhc1ByZXZpb3VzKCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFz bid0IGEgcHJldmlvdXMgaXRlbSIpOworIAorICAgICAgICAgY29uc3QgUUNoYXIgY3VyID0gKi0t cG9zOworLSAgICAgICAgaWYgKFFfVU5MSUtFTFkoY3VyLmlzTG93U3Vycm9nYXRlKCkpKQorKyAg ICAgICAgaWYgKFFfVU5MSUtFTFkoY3VyLmlzTG93U3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAg ICAgUV9BU1NFUlQoaGFzUHJldmlvdXMoKSAmJiBwb3NbLTFdLmlzSGlnaFN1cnJvZ2F0ZSgpKTsK KyAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNCgqLS1wb3MsIGN1cik7 CisrICAgICAgICB9CisgICAgICAgICByZXR1cm4gY3VyLnVuaWNvZGUoKTsKKyAgICAgfQorIAor QEAgLTI0MSw3ICsyNTYsNyBAQCBwdWJsaWM6CisgCisgICAgICAgICBjb25zdCBRQ2hhciB1YyA9 ICotLXBvczsKKyAgICAgICAgIGlmIChRX1VOTElLRUxZKHVjLmlzU3Vycm9nYXRlKCkpKSB7Cist ICAgICAgICAgICAgaWYgKFFfTElLRUxZKHVjLmlzTG93U3Vycm9nYXRlKCkgJiYgcG9zID4gaSAm JiBwb3NbLTFdLmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAgICAgICAgICBpZiAoUV9MSUtFTFko dWMuaXNMb3dTdXJyb2dhdGUoKSAmJiBoYXNQcmV2aW91cygpICYmIHBvc1stMV0uaXNIaWdoU3Vy cm9nYXRlKCkpKQorICAgICAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNz NCgqLS1wb3MsIHVjKTsKKyAgICAgICAgICAgICByZXR1cm4gaW52YWxpZEFzOworICAgICAgICAg fQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcWZ1dGV4X3AuaCBiL3F0 YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcWZ1dGV4X3AuaAoraW5kZXggZjI4N2I3NTJkNy4uZTI5 NDUzNzc4NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcWZ1dGV4X3Au aAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xZnV0ZXhfcC5oCitAQCAtNTIsNiAr NTIsNyBAQAorIC8vCisgCisgI2luY2x1ZGUgPHFnbG9iYWwuaD4KKysjaW5jbHVkZSA8UXRDb3Jl L3F0c2FuX2ltcGwuaD4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKK0BAIC0xMDYsMTYgKzEw NywxMyBAQCBuYW1lc3BhY2UgUXRMaW51eEZ1dGV4IHsKKyAgICAgaW5saW5lIGludCBfcV9mdXRl eChpbnQgKmFkZHIsIGludCBvcCwgaW50IHZhbCwgcXVpbnRwdHIgdmFsMiA9IDAsCisgICAgICAg ICAgICAgICAgICAgICAgICAgaW50ICphZGRyMiA9IG51bGxwdHIsIGludCB2YWwzID0gMCkgbm9l eGNlcHQKKyAgICAgeworLSAgICAgICAgLy8gQSBmdXRleCBjYWxsIGVuc3VyZXMgdG90YWwgb3Jk ZXJpbmcgb24gdGhlIGZ1dGV4IHdvcmRzCistICAgICAgICAvLyAoaW4gZWl0aGVyIHN1Y2Nlc3Mg b3IgZmFpbHVyZSBvZiB0aGUgY2FsbCkuIEluc3RydWN0IFRTQU4gYWNjb3JkaW5nbHksCistICAg ICAgICAvLyBhcyBUU0FOIGRvZXMgbm90IHVuZGVyc3RhbmQgdGhlIGZ1dGV4KDIpIHN5c2NhbGwu CistICAgICAgICBfcV90c2FuX3JlbGVhc2UoYWRkciwgYWRkcjIpOworKyAgICAgICAgUXRUc2Fu OjpmdXRleFJlbGVhc2UoYWRkciwgYWRkcjIpOworIAorICAgICAgICAgLy8gd2UgdXNlIF9fTlJf ZnV0ZXggYmVjYXVzZSBzb21lIGxpYmNzIChsaWtlIEFuZHJvaWQncyBiaW9uaWMpIGRvbid0Cisg ICAgICAgICAvLyBwcm92aWRlIFNZU19mdXRleCBldGMuCisgICAgICAgICBpbnQgcmVzdWx0ID0g c3lzY2FsbChfX05SX2Z1dGV4LCBhZGRyLCBvcCB8IEZVVEVYX1BSSVZBVEVfRkxBRywgdmFsLCB2 YWwyLCBhZGRyMiwgdmFsMyk7CisgCistICAgICAgICBfcV90c2FuX2FjcXVpcmUoYWRkciwgYWRk cjIpOworKyAgICAgICAgUXRUc2FuOjpmdXRleEFjcXVpcmUoYWRkciwgYWRkcjIpOworIAorICAg ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29y ZWxpYi90aHJlYWQvcW11dGV4LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4 LmNwcAoraW5kZXggMzEwZDFjYjE0Zi4uNzA5NzEyMmQ4ZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Ro cmVhZC9xbXV0ZXguY3BwCitAQCAtMTUyLDYgKzE1Miw3IEBAIHB1YmxpYzoKKyAKKyAvKiEKKyAg ICAgXGVudW0gUU11dGV4OjpSZWN1cnNpb25Nb2RlCisrICAgIFxvYnNvbGV0ZSBVc2UgUVJlY3Vy c2l2ZU11dGV4IHRvIGNyZWF0ZSBhIHJlY3Vyc2l2ZSBtdXRleC4KKyAKKyAgICAgXHZhbHVlIFJl Y3Vyc2l2ZSAgSW4gdGhpcyBtb2RlLCBhIHRocmVhZCBjYW4gbG9jayB0aGUgc2FtZSBtdXRleAor ICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSB0aW1lcyBhbmQgdGhlIG11dGV4IHdvbid0 IGJlIHVubG9ja2VkCitAQCAtMTczLDYgKzE3NCw3IEBAIHB1YmxpYzoKKyAKKyAvKiEKKyAgICAg Q29uc3RydWN0cyBhIG5ldyBtdXRleC4gVGhlIG11dGV4IGlzIGNyZWF0ZWQgaW4gYW4gdW5sb2Nr ZWQgc3RhdGUuCisrICAgIFxvYnNvbGV0ZSBVc2UgUVJlY3Vyc2l2ZU11dGV4IHRvIGNyZWF0ZSBh IHJlY3Vyc2l2ZSBtdXRleC4KKyAKKyAgICAgSWYgXGEgbW9kZSBpcyBRTXV0ZXg6OlJlY3Vyc2l2 ZSwgYSB0aHJlYWQgY2FuIGxvY2sgdGhlIHNhbWUgbXV0ZXgKKyAgICAgbXVsdGlwbGUgdGltZXMg YW5kIHRoZSBtdXRleCB3b24ndCBiZSB1bmxvY2tlZCB1bnRpbCBhCitAQCAtMTk3LDcgKzE5OSw3 IEBAIFFNdXRleDo6UU11dGV4KFJlY3Vyc2lvbk1vZGUgbW9kZSkKKyBRTXV0ZXg6On5RTXV0ZXgo KQorIHsKKyAgICAgUU11dGV4RGF0YSAqZCA9IGRfcHRyLmxvYWRSZWxheGVkKCk7CistICAgIGlm IChpc1JlY3Vyc2l2ZSgpKSB7CisrICAgIGlmIChRQmFzaWNNdXRleDo6aXNSZWN1cnNpdmUoKSkg eworICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFFSZWN1cnNpdmVNdXRleFByaXZhdGUgKj4o ZCk7CisgICAgIH0gZWxzZSBpZiAoZCkgeworICNpZm5kZWYgUVRfTElOVVhfRlVURVgKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5oIGIvcXRiYXNlL3NyYy9j b3JlbGliL3RocmVhZC9xbXV0ZXguaAoraW5kZXggNzNjOWUwMDY2My4uMWJhZTU3M2EwMyAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmgKKysrKyBiL3F0YmFz ZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmgKK0BAIC00Miw2ICs0Miw3IEBACisgCisgI2lu Y2x1ZGUgPFF0Q29yZS9xZ2xvYmFsLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xYXRvbWljLmg+Cisr I2luY2x1ZGUgPFF0Q29yZS9xdHNhbl9pbXBsLmg+CisgI2luY2x1ZGUgPG5ldz4KKyAKKyAjaWYg X19oYXNfaW5jbHVkZSg8Y2hyb25vPikKK0BAIC03NywxOSArNzgsMzcgQEAgcHVibGljOgorIAor ICAgICAvLyBCYXNpY0xvY2thYmxlIGNvbmNlcHQKKyAgICAgaW5saW5lIHZvaWQgbG9jaygpIFFU X01VVEVYX0xPQ0tfTk9FWENFUFQgeworKyAgICAgICAgUXRUc2FuOjptdXRleFByZUxvY2sodGhp cywgMHUpOworKworICAgICAgICAgaWYgKCFmYXN0VHJ5TG9jaygpKQorICAgICAgICAgICAgIGxv Y2tJbnRlcm5hbCgpOworKworKyAgICAgICAgUXRUc2FuOjptdXRleFBvc3RMb2NrKHRoaXMsIDB1 LCAwKTsKKyAgICAgfQorIAorICAgICAvLyBCYXNpY0xvY2thYmxlIGNvbmNlcHQKKyAgICAgaW5s aW5lIHZvaWQgdW5sb2NrKCkgbm9leGNlcHQgeworICAgICAgICAgUV9BU1NFUlQoZF9wdHIubG9h ZFJlbGF4ZWQoKSk7IC8vbXV0ZXggbXVzdCBiZSBsb2NrZWQKKysKKysgICAgICAgIFF0VHNhbjo6 bXV0ZXhQcmVVbmxvY2sodGhpcywgMHUpOworKworICAgICAgICAgaWYgKCFmYXN0VHJ5VW5sb2Nr KCkpCisgICAgICAgICAgICAgdW5sb2NrSW50ZXJuYWwoKTsKKysKKysgICAgICAgIFF0VHNhbjo6 bXV0ZXhQb3N0VW5sb2NrKHRoaXMsIDB1KTsKKyAgICAgfQorIAorICAgICBib29sIHRyeUxvY2so KSBub2V4Y2VwdCB7CistICAgICAgICByZXR1cm4gZmFzdFRyeUxvY2soKTsKKysgICAgICAgIHVu c2lnbmVkIHRzYW5GbGFncyA9IFF0VHNhbjo6VHJ5TG9jazsKKysgICAgICAgIFF0VHNhbjo6bXV0 ZXhQcmVMb2NrKHRoaXMsIHRzYW5GbGFncyk7CisrCisrICAgICAgICBjb25zdCBib29sIHN1Y2Nl c3MgPSBmYXN0VHJ5TG9jaygpOworKworKyAgICAgICAgaWYgKCFzdWNjZXNzKQorKyAgICAgICAg ICAgIHRzYW5GbGFncyB8PSBRdFRzYW46OlRyeUxvY2tGYWlsZWQ7CisrICAgICAgICBRdFRzYW46 Om11dGV4UG9zdExvY2sodGhpcywgdHNhbkZsYWdzLCAwKTsKKysKKysgICAgICAgIHJldHVybiBz dWNjZXNzOworICAgICB9CisgCisgICAgIC8vIExvY2thYmxlIGNvbmNlcHQKK0BAIC0xMzQsOCAr MTUzLDE2IEBAIHB1YmxpYzoKKyAjZWxzZQorICAgICBRTXV0ZXgoKSB7IGRfcHRyLnN0b3JlUmVs YXhlZChudWxscHRyKTsgfQorICNlbmRpZgorKyNpZiBRVF9ERVBSRUNBVEVEX1NJTkNFKDUsMTUp CisgICAgIGVudW0gUmVjdXJzaW9uTW9kZSB7IE5vblJlY3Vyc2l2ZSwgUmVjdXJzaXZlIH07Cisr ICAgIFFUX0RFUFJFQ0FURURfVkVSU0lPTl9YKDUsIDE1LCAiVXNlIFFSZWN1cnNpdmVNdXRleCBp bnN0ZWFkIG9mIGEgcmVjdXJzaXZlIFFNdXRleCIpCisgICAgIGV4cGxpY2l0IFFNdXRleChSZWN1 cnNpb25Nb2RlIG1vZGUpOworKworKyAgICBRVF9ERVBSRUNBVEVEX1ZFUlNJT05fWCg1LCAxNSwg IlVzZSBRUmVjdXJzaXZlTXV0ZXggaW5zdGVhZCBvZiBhIHJlY3Vyc2l2ZSBRTXV0ZXgiKQorKyAg ICBib29sIGlzUmVjdXJzaXZlKCkgY29uc3Qgbm9leGNlcHQKKysgICAgeyByZXR1cm4gUUJhc2lj TXV0ZXg6OmlzUmVjdXJzaXZlKCk7IH0KKysjZW5kaWYKKysKKyAgICAgflFNdXRleCgpOworIAor ICAgICAvLyBCYXNpY0xvY2thYmxlIGNvbmNlcHQKK0BAIC0xNjYsOSArMTkzLDYgQEAgcHVibGlj OgorICAgICB9CisgI2VuZGlmCisgCistICAgIGJvb2wgaXNSZWN1cnNpdmUoKSBjb25zdCBub2V4 Y2VwdAorLSAgICB7IHJldHVybiBRQmFzaWNNdXRleDo6aXNSZWN1cnNpdmUoKTsgfQorLQorIHBy aXZhdGU6CisgICAgIFFfRElTQUJMRV9DT1BZKFFNdXRleCkKKyAgICAgZnJpZW5kIGNsYXNzIFFN dXRleExvY2tlcjsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FyZWFk d3JpdGVsb2NrLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXJlYWR3cml0ZWxvY2su Y3BwCitpbmRleCA4YzI4NTA3ZDVhLi45ZGQ4NTAzMTE2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9jb3JlbGliL3RocmVhZC9xcmVhZHdyaXRlbG9jay5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29y ZWxpYi90aHJlYWQvcXJlYWR3cml0ZWxvY2suY3BwCitAQCAtMTU1LDcgKzE1NSw3IEBAIFFSZWFk V3JpdGVMb2NrOjpRUmVhZFdyaXRlTG9jayhSZWN1cnNpb25Nb2RlIHJlY3Vyc2lvbk1vZGUpCisg Ki8KKyBRUmVhZFdyaXRlTG9jazo6flFSZWFkV3JpdGVMb2NrKCkKKyB7CistICAgIGF1dG8gZCA9 IGRfcHRyLmxvYWRSZWxheGVkKCk7CisrICAgIGF1dG8gZCA9IGRfcHRyLmxvYWRBY3F1aXJlKCk7 CisgICAgIGlmIChpc1VuY29udGVuZGVkTG9ja2VkKGQpKSB7CisgICAgICAgICBxV2FybmluZygi UVJlYWRXcml0ZUxvY2s6IGRlc3Ryb3lpbmcgbG9ja2VkIFFSZWFkV3JpdGVMb2NrIik7CisgICAg ICAgICByZXR1cm47CitAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgUVJlYWRXcml0ZUxvY2s6OnVu bG9jaygpCisgLyohIFxpbnRlcm5hbCAgSGVscGVyIGZvciBRV2FpdENvbmRpdGlvbjo6d2FpdCAq LworIFFSZWFkV3JpdGVMb2NrOjpTdGF0ZUZvcldhaXRDb25kaXRpb24gUVJlYWRXcml0ZUxvY2s6 OnN0YXRlRm9yV2FpdENvbmRpdGlvbigpIGNvbnN0CisgeworLSAgICBRUmVhZFdyaXRlTG9ja1By aXZhdGUgKmQgPSBkX3B0ci5sb2FkUmVsYXhlZCgpOworKyAgICBRUmVhZFdyaXRlTG9ja1ByaXZh dGUgKmQgPSBkX3B0ci5sb2FkQWNxdWlyZSgpOworICAgICBzd2l0Y2ggKHF1aW50cHRyKGQpICYg U3RhdGVNYXNrKSB7CisgICAgIGNhc2UgU3RhdGVMb2NrZWRGb3JSZWFkOiByZXR1cm4gTG9ja2Vk Rm9yUmVhZDsKKyAgICAgY2FzZSBTdGF0ZUxvY2tlZEZvcldyaXRlOiByZXR1cm4gTG9ja2VkRm9y V3JpdGU7CitAQCAtNDUzLDYgKzQ1Myw3IEBAIFFSZWFkV3JpdGVMb2NrOjpTdGF0ZUZvcldhaXRD b25kaXRpb24gUVJlYWRXcml0ZUxvY2s6OnN0YXRlRm9yV2FpdENvbmRpdGlvbigpIGNvCisgCisg ICAgIGlmICghZCkKKyAgICAgICAgIHJldHVybiBVbmxvY2tlZDsKKysgICAgY29uc3QgYXV0byBs b2NrID0gcXRfc2NvcGVkX2xvY2soZC0+bXV0ZXgpOworICAgICBpZiAoZC0+d3JpdGVyQ291bnQg PiAxKQorICAgICAgICAgcmV0dXJuIFJlY3Vyc2l2ZWx5TG9ja2VkOworICAgICBlbHNlIGlmIChk LT53cml0ZXJDb3VudCA9PSAxKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJl YWQvcXNlbWFwaG9yZS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FzZW1hcGhvcmUu Y3BwCitpbmRleCAxZDAxZmMxYjI4Li4zZWNkZWUzNzQ3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9jb3JlbGliL3RocmVhZC9xc2VtYXBob3JlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGli L3RocmVhZC9xc2VtYXBob3JlLmNwcAorQEAgLTM1NCw3ICszNTQsMTIgQEAgdm9pZCBRU2VtYXBo b3JlOjpyZWxlYXNlKGludCBuKQorICAgICAgICAgcXVpbnRwdHIgbm4gPSB1bnNpZ25lZChuKTsK KyAgICAgICAgIGlmIChmdXRleEhhc1dhaXRlckNvdW50KQorICAgICAgICAgICAgIG5uIHw9IHF1 aW50NjQobm4pIDw8IDMyOyAgICAvLyB0b2tlbiBjb3VudCByZXBsaWNhdGVkIGluIGhpZ2ggd29y ZAorLSAgICAgICAgcXVpbnRwdHIgcHJldlZhbHVlID0gdS5mZXRjaEFuZEFkZFJlbGVhc2Uobm4p OworKyAgICAgICAgcXVpbnRwdHIgcHJldlZhbHVlID0gdS5sb2FkUmVsYXhlZCgpOworKyAgICAg ICAgcXVpbnRwdHIgbmV3VmFsdWU7CisrICAgICAgICBkbyB7IC8vIGxvb3AganVzdCB0byBlbnN1 cmUgdGhlIG9wZXJhdGlvbnMgYXJlIGRvbmUgYXRvbWljYWxseQorKyAgICAgICAgICAgIG5ld1Zh bHVlID0gcHJldlZhbHVlICsgbm47CisrICAgICAgICAgICAgbmV3VmFsdWUgJj0gKGZ1dGV4TmVl ZHNXYWtlQWxsQml0IC0gMSk7CisrICAgICAgICB9IHdoaWxlICghdS50ZXN0QW5kU2V0UmVsZWFz ZShwcmV2VmFsdWUsIG5ld1ZhbHVlLCBwcmV2VmFsdWUpKTsKKyAgICAgICAgIGlmIChmdXRleE5l ZWRzV2FrZShwcmV2VmFsdWUpKSB7CisgI2lmZGVmIEZVVEVYX09QCisgICAgICAgICAgICAgaWYg KGZ1dGV4SGFzV2FpdGVyQ291bnQpIHsKK0BAIC0zNzYsNyArMzgxLDYgQEAgdm9pZCBRU2VtYXBo b3JlOjpyZWxlYXNlKGludCBuKQorICAgICAgICAgICAgICAgICBxdWludDMyIG9wYXJnID0gMDsK KyAgICAgICAgICAgICAgICAgcXVpbnQzMiBjbXAgPSBGVVRFWF9PUF9DTVBfTkU7CisgICAgICAg ICAgICAgICAgIHF1aW50MzIgY21wYXJnID0gMDsKKy0gICAgICAgICAgICAgICAgdS5mZXRjaEFu ZEFuZFJlbGVhc2UoZnV0ZXhOZWVkc1dha2VBbGxCaXQgLSAxKTsKKyAgICAgICAgICAgICAgICAg ZnV0ZXhXYWtlT3AoKmZ1dGV4TG93MzIoJnUpLCBuLCBJTlRfTUFYLCAqZnV0ZXhIaWdoMzIoJnUp LCBGVVRFWF9PUChvcCwgb3BhcmcsIGNtcCwgY21wYXJnKSk7CisgICAgICAgICAgICAgICAgIHJl dHVybjsKKyAgICAgICAgICAgICB9CitAQCAtMzg4LDcgKzM5Miw2IEBAIHZvaWQgUVNlbWFwaG9y ZTo6cmVsZWFzZShpbnQgbikKKyAgICAgICAgICAgICAvLyAgICBpdHMgYWNxdWlzaXRpb24gYW55 d2F5LCBzbyBpdCBoYXMgdG8gd2FpdDsKKyAgICAgICAgICAgICAvLyAyKSBpdCBkaWQgbm90IHNl ZSB0aGUgbmV3IGNvdW50ZXIgdmFsdWUsIGluIHdoaWNoIGNhc2UgaXRzCisgICAgICAgICAgICAg Ly8gICAgZnV0ZXhXYWl0IHdpbGwgZmFpbC4KKy0gICAgICAgICAgICB1LmZldGNoQW5kQW5kUmVs ZWFzZShmdXRleE5lZWRzV2FrZUFsbEJpdCAtIDEpOworICAgICAgICAgICAgIGlmIChmdXRleEhh c1dhaXRlckNvdW50KSB7CisgICAgICAgICAgICAgICAgIGZ1dGV4V2FrZUFsbCgqZnV0ZXhMb3cz MigmdSkpOworICAgICAgICAgICAgICAgICBmdXRleFdha2VBbGwoKmZ1dGV4SGlnaDMyKCZ1KSk7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaCBiL3F0 YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmgKK2luZGV4IGIyZDE2MjhlNmUuLmYz MmY2ZjA0NjAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRf cC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfcC5oCitAQCAtMTc0 LDcgKzE3NCw3IEBAIHB1YmxpYzoKKyAgICAgaW50IHJldHVybkNvZGU7CisgCisgICAgIHVpbnQg c3RhY2tTaXplOworLSAgICBRVGhyZWFkOjpQcmlvcml0eSBwcmlvcml0eTsKKysgICAgc3RkOjp1 bmRlcmx5aW5nX3R5cGU8UVRocmVhZDo6UHJpb3JpdHk+Ojp0eXBlIHByaW9yaXR5OworIAorICAg ICBzdGF0aWMgUVRocmVhZCAqdGhyZWFkRm9ySWQoaW50IGlkKTsKKyAKK0BAIC0yMTMsNiArMjEz LDEzIEBAIHB1YmxpYzoKKyAgICAgICAgICAgICBRQ29yZUFwcGxpY2F0aW9uOjppbnN0YW5jZSgp LT5wb3N0RXZlbnQocV9wdHIsIG5ldyBRRXZlbnQoUUV2ZW50OjpRdWl0KSk7CisgICAgICAgICB9 CisgICAgIH0KKysKKysjaWZuZGVmIFFfT1NfSU5URUdSSVRZCisrcHJpdmF0ZToKKysgICAgLy8g VXNlZCBpbiBRVGhyZWFkKFByaXZhdGUpOjpzdGFydCB0byBhdm9pZCByYWN5IGFjY2VzcyB0byBR T2JqZWN0OjpvYmplY3ROYW1lLAorKyAgICAvLyB1bnNldCBhZnRlcndhcmRzLiBPbiBJTlRFR1JJ VFkgd2Ugc2V0IHRoZSB0aHJlYWQgbmFtZSBiZWZvcmUgc3RhcnRpbmcgaXQuCisrICAgIFFTdHJp bmcgb2JqZWN0TmFtZTsKKysjZW5kaWYKKyB9OworIAorICNlbHNlIC8vIFFUX0NPTkZJRyh0aHJl YWQpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3VuaXgu Y3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3VuaXguY3BwCitpbmRleCA1 NmE4ZTBhMDM4Li42MTAxMTdhNjQwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3Ro cmVhZC9xdGhyZWFkX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0 aHJlYWRfdW5peC5jcHAKK0BAIC0xNjksOCArMTY5LDcgQEAgc3RhdGljIHZvaWQgc2V0X3RocmVh ZF9kYXRhKFFUaHJlYWREYXRhICpkYXRhKQorIAorIHN0YXRpYyB2b2lkIGNsZWFyX3RocmVhZF9k YXRhKCkKKyB7CistICAgIGN1cnJlbnRUaHJlYWREYXRhID0gbnVsbHB0cjsKKy0gICAgcHRocmVh ZF9zZXRzcGVjaWZpYyhjdXJyZW50X3RocmVhZF9kYXRhX2tleSwgbnVsbHB0cik7CisrICAgIHNl dF90aHJlYWRfZGF0YShudWxscHRyKTsKKyB9CisgCisgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitA QCAtMjk2LDcgKzI5NSw3IEBAIHZvaWQgKlFUaHJlYWRQcml2YXRlOjpzdGFydCh2b2lkICphcmcp CisgICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmdGhyLT5kX2Z1bmMoKS0+bXV0ZXgp OworIAorICAgICAgICAgICAgIC8vIGRvIHdlIG5lZWQgdG8gcmVzZXQgdGhlIHRocmVhZCBwcmlv cml0eT8KKy0gICAgICAgICAgICBpZiAoaW50KHRoci0+ZF9mdW5jKCktPnByaW9yaXR5KSAmIFRo cmVhZFByaW9yaXR5UmVzZXRGbGFnKSB7CisrICAgICAgICAgICAgaWYgKHRoci0+ZF9mdW5jKCkt PnByaW9yaXR5ICYgVGhyZWFkUHJpb3JpdHlSZXNldEZsYWcpIHsKKyAgICAgICAgICAgICAgICAg dGhyLT5kX2Z1bmMoKS0+c2V0UHJpb3JpdHkoUVRocmVhZDo6UHJpb3JpdHkodGhyLT5kX2Z1bmMo KS0+cHJpb3JpdHkgJiB+VGhyZWFkUHJpb3JpdHlSZXNldEZsYWcpKTsKKyAgICAgICAgICAgICB9 CisgCitAQCAtMzE2LDEwICszMTUsMTAgQEAgdm9pZCAqUVRocmVhZFByaXZhdGU6OnN0YXJ0KHZv aWQgKmFyZykKKyAgICAgICAgICAgICAvLyBTZXRzIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHRo cmVhZC4gV2UgY2FuIG9ubHkgZG8gdGhpcworICAgICAgICAgICAgIC8vIHdoZW4gdGhlIHRocmVh ZCBpcyBzdGFydGluZywgYXMgd2UgZG9uJ3QgaGF2ZSBhIGNyb3NzCisgICAgICAgICAgICAgLy8g cGxhdGZvcm0gd2F5IG9mIHNldHRpbmcgdGhlIG5hbWUgb2YgYW4gYXJiaXRyYXJ5IHRocmVhZC4K Ky0gICAgICAgICAgICBpZiAoUV9MSUtFTFkodGhyLT5vYmplY3ROYW1lKCkuaXNFbXB0eSgpKSkK KysgICAgICAgICAgICBpZiAoUV9MSUtFTFkodGhyLT5kX2Z1bmMoKS0+b2JqZWN0TmFtZS5pc0Vt cHR5KCkpKQorICAgICAgICAgICAgICAgICBzZXRDdXJyZW50VGhyZWFkTmFtZSh0aHItPm1ldGFP YmplY3QoKS0+Y2xhc3NOYW1lKCkpOworICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAg ICAgc2V0Q3VycmVudFRocmVhZE5hbWUodGhyLT5vYmplY3ROYW1lKCkudG9Mb2NhbDhCaXQoKSk7 CisrICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUaHJlYWROYW1lKHN0ZDo6ZXhjaGFuZ2UodGhy LT5kX2Z1bmMoKS0+b2JqZWN0TmFtZSwge30pLnRvTG9jYWw4Qml0KCkpOworICAgICAgICAgfQor ICNlbmRpZgorIAorQEAgLTY3MSw3ICs2NzAsNyBAQCB2b2lkIFFUaHJlYWQ6OnN0YXJ0KFByaW9y aXR5IHByaW9yaXR5KQorICAgICAgICAgICAgICAgICAvLyBjb3VsZCBub3Qgc2V0IHNjaGVkdWxp bmcgaGludHMsIGZhbGxiYWNrIHRvIGluaGVyaXRpbmcgdGhlbQorICAgICAgICAgICAgICAgICAv LyB3ZSdsbCB0cnkgYWdhaW4gZnJvbSBpbnNpZGUgdGhlIHRocmVhZAorICAgICAgICAgICAgICAg ICBwdGhyZWFkX2F0dHJfc2V0aW5oZXJpdHNjaGVkKCZhdHRyLCBQVEhSRUFEX0lOSEVSSVRfU0NI RUQpOworLSAgICAgICAgICAgICAgICBkLT5wcmlvcml0eSA9IFByaW9yaXR5KHByaW9yaXR5IHwg VGhyZWFkUHJpb3JpdHlSZXNldEZsYWcpOworKyAgICAgICAgICAgICAgICBkLT5wcmlvcml0eSA9 IHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPFFUaHJlYWQ6OlByaW9yaXR5Pjo6dHlw ZT4ocHJpb3JpdHkpIHwgVGhyZWFkUHJpb3JpdHlSZXNldEZsYWc7CisgICAgICAgICAgICAgfQor ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorQEAgLTcwMiw3ICs3MDEsMTAgQEAgdm9p ZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAgICAgICAgIHB0aHJlYWRfYXR0 cl9zZXR0aHJlYWRuYW1lKCZhdHRyLCBtZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpKTsKKyAgICAg ZWxzZQorICAgICAgICAgcHRocmVhZF9hdHRyX3NldHRocmVhZG5hbWUoJmF0dHIsIG9iamVjdE5h bWUoKS50b0xvY2FsOEJpdCgpKTsKKysjZWxzZQorKyAgICBkLT5vYmplY3ROYW1lID0gb2JqZWN0 TmFtZSgpOworICNlbmRpZgorKworICAgICBwdGhyZWFkX3QgdGhyZWFkSWQ7CisgICAgIGludCBj b2RlID0gcHRocmVhZF9jcmVhdGUoJnRocmVhZElkLCAmYXR0ciwgUVRocmVhZFByaXZhdGU6OnN0 YXJ0LCB0aGlzKTsKKyAgICAgaWYgKGNvZGUgPT0gRVBFUk0pIHsKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfd2luLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxp Yi90aHJlYWQvcXRocmVhZF93aW4uY3BwCitpbmRleCBiYzcwZTMxNzhhLi40ZTc2OTcyNDk4IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3dpbi5jcHAKKysr KyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF93aW4uY3BwCitAQCAtMzk0LDEw ICszOTQsOSBAQCB1bnNpZ25lZCBpbnQgX19zdGRjYWxsIFFUX0VOU1VSRV9TVEFDS19BTElHTkVE X0ZPUl9TU0UgUVRocmVhZFByaXZhdGU6OnN0YXJ0KHZvaQorIAorICNpZiAhZGVmaW5lZChRVF9O T19ERUJVRykgJiYgZGVmaW5lZChRX0NDX01TVkMpICYmICFkZWZpbmVkKFFfT1NfV0lOUlQpCisg ICAgIC8vIHNldHMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLgorLSAgICBRQnl0ZUFy cmF5IG9iamVjdE5hbWUgPSB0aHItPm9iamVjdE5hbWUoKS50b0xvY2FsOEJpdCgpOworLSAgICBx dF9zZXRfdGhyZWFkX25hbWUoSEFORExFKC0xKSwKKy0gICAgICAgICAgICAgICAgICAgICAgIG9i amVjdE5hbWUuaXNFbXB0eSgpID8KKy0gICAgICAgICAgICAgICAgICAgICAgIHRoci0+bWV0YU9i amVjdCgpLT5jbGFzc05hbWUoKSA6IG9iamVjdE5hbWUuY29uc3REYXRhKCkpOworKyAgICBxdF9z ZXRfdGhyZWFkX25hbWUoSEFORExFKC0xKSwgdGhyLT5kX2Z1bmMoKS0+b2JqZWN0TmFtZS5pc0Vt cHR5KCkKKysgICAgICAgICAgICAgICAgICAgICAgICA/IHRoci0+bWV0YU9iamVjdCgpLT5jbGFz c05hbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgIDogc3RkOjpleGNoYW5nZSh0aHItPmRf ZnVuYygpLT5vYmplY3ROYW1lLCB7fSkudG9Mb2NhbDhCaXQoKS5jb25zdERhdGEoKSk7CisgI2Vu ZGlmCisgCisgICAgIGVtaXQgdGhyLT5zdGFydGVkKFFUaHJlYWQ6OlFQcml2YXRlU2lnbmFsKCkp OworQEAgLTUwMyw2ICs1MDIsNyBAQCB2b2lkIFFUaHJlYWQ6OnN0YXJ0KFByaW9yaXR5IHByaW9y aXR5KQorICAgICBpZiAoZC0+cnVubmluZykKKyAgICAgICAgIHJldHVybjsKKyAKKysgICAgZC0+ b2JqZWN0TmFtZSA9IG9iamVjdE5hbWUoKTsKKyAgICAgZC0+cnVubmluZyA9IHRydWU7CisgICAg IGQtPmZpbmlzaGVkID0gZmFsc2U7CisgICAgIGQtPmV4aXRlZCA9IGZhbHNlOworQEAgLTU0OCw3 ICs1NDgsNyBAQCB2b2lkIFFUaHJlYWQ6OnN0YXJ0KFByaW9yaXR5IHByaW9yaXR5KQorIAorICAg ICBpbnQgcHJpbzsKKyAgICAgZC0+cHJpb3JpdHkgPSBwcmlvcml0eTsKKy0gICAgc3dpdGNoIChk LT5wcmlvcml0eSkgeworKyAgICBzd2l0Y2ggKHByaW9yaXR5KSB7CisgICAgIGNhc2UgSWRsZVBy aW9yaXR5OgorICAgICAgICAgcHJpbyA9IFRIUkVBRF9QUklPUklUWV9JRExFOworICAgICAgICAg YnJlYWs7CitAQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQgUVRocmVhZFByaXZhdGU6OnNldFByaW9y aXR5KFFUaHJlYWQ6OlByaW9yaXR5IHRocmVhZFByaW9yaXR5KQorIAorICAgICBpbnQgcHJpbzsK KyAgICAgcHJpb3JpdHkgPSB0aHJlYWRQcmlvcml0eTsKKy0gICAgc3dpdGNoIChwcmlvcml0eSkg eworKyAgICBzd2l0Y2ggKHRocmVhZFByaW9yaXR5KSB7CisgICAgIGNhc2UgUVRocmVhZDo6SWRs ZVByaW9yaXR5OgorICAgICAgICAgcHJpbyA9IFRIUkVBRF9QUklPUklUWV9JRExFOworICAgICAg ICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdHNhbl9p bXBsLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0c2FuX2ltcGwuaAorbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjU4MGE3MzhiOTEKKy0tLSAvZGV2L251bGwK KysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRzYW5faW1wbC5oCitAQCAtMCwwICsx LDExNSBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIw MTcgSW50ZWwgQ29ycG9yYXRpb24uCisrKiogQ29weXJpZ2h0IChDKSAyMDIyIEtsYXLDpGx2ZGFs ZW5zIERhdGFrb25zdWx0IEFCLCBhIEtEQUIgR3JvdXAgY29tcGFueSwgaW5mb0BrZGFiLmNvbSwg YXV0aG9yIEdpdXNlcHBlIEQnQW5nZWxvIDxnaXVzZXBwZS5kYW5nZWxvQGtkYWIuY29tPgorKyoq IENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIHRoZSBRdENvcmUgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorKyoqCisr KiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UK KysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1 c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vu c2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUgb3IsIGFsdGVybmF0 aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCisrKiogYSB3 cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNl bnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVy bXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRh Y3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoqCisrKiogR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhp cyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlcgorKyoq IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNF TlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBs ZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bworKyoqIGVuc3VyZSB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMK KysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5o dG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRl cm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9w dGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFu eSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQorKyoqIFF0IEZvdW5kYXRp b24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisr KiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQg TElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUu IFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKKysqKiBiZSBt ZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAorKyoqIGh0 dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgorKyoqCisrKiogJFFUX0VO RF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjaWZuZGVmIFFUU0FO X0lNUExfSAorKyNkZWZpbmUgUVRTQU5fSU1QTF9ICisrCisrI2luY2x1ZGUgPFF0Q29yZS9xZ2xv YmFsLmg+CisrCisrI2lmIChfX2hhc19mZWF0dXJlKHRocmVhZF9zYW5pdGl6ZXIpIHx8IGRlZmlu ZWQoX19TQU5JVElaRV9USFJFQURfXykpICYmIF9faGFzX2luY2x1ZGUoPHNhbml0aXplci90c2Fu X2ludGVyZmFjZS5oPikKKysjICBkZWZpbmUgUVRfQlVJTERJTkdfVU5ERVJfVFNBTgorKyMgIGlu Y2x1ZGUgPHNhbml0aXplci90c2FuX2ludGVyZmFjZS5oPgorKyNlbmRpZgorKworK1FUX0JFR0lO X05BTUVTUEFDRQorKworK25hbWVzcGFjZSBRdFRzYW4geworKyNpZmRlZiBRVF9CVUlMRElOR19V TkRFUl9UU0FOCisraW5saW5lIHZvaWQgZnV0ZXhBY3F1aXJlKHZvaWQgKmFkZHIsIHZvaWQgKmFk ZHIyID0gbnVsbHB0cikKKyt7CisrICAgIC8vIEEgZnV0ZXggY2FsbCBlbnN1cmVzIHRvdGFsIG9y ZGVyaW5nIG9uIHRoZSBmdXRleCB3b3JkcworKyAgICAvLyAoaW4gZWl0aGVyIHN1Y2Nlc3Mgb3Ig ZmFpbHVyZSBvZiB0aGUgY2FsbCkuIEluc3RydWN0IFRTQU4gYWNjb3JkaW5nbHksCisrICAgIC8v IGFzIFRTQU4gZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUgZnV0ZXgoMikgc3lzY2FsbCAob3IgZXF1 aXZhbGVudCkuCisrICAgIDo6X190c2FuX2FjcXVpcmUoYWRkcik7CisrICAgIGlmIChhZGRyMikK KysgICAgICAgIDo6X190c2FuX2FjcXVpcmUoYWRkcjIpOworK30KKysKKytpbmxpbmUgdm9pZCBm dXRleFJlbGVhc2Uodm9pZCAqYWRkciwgdm9pZCAqYWRkcjIgPSBudWxscHRyKQorK3sKKysgICAg aWYgKGFkZHIyKQorKyAgICAgICAgOjpfX3RzYW5fcmVsZWFzZShhZGRyMik7CisrICAgIDo6X190 c2FuX3JlbGVhc2UoYWRkcik7CisrfQorKworK2lubGluZSB2b2lkIG11dGV4UHJlTG9jayh2b2lk ICphZGRyLCB1bnNpZ25lZCBmbGFncykKKyt7CisrICAgIDo6X190c2FuX211dGV4X3ByZV9sb2Nr KGFkZHIsIGZsYWdzKTsKKyt9CisrCisraW5saW5lIHZvaWQgbXV0ZXhQb3N0TG9jayh2b2lkICph ZGRyLCB1bnNpZ25lZCBmbGFncywgaW50IHJlY3Vyc2lvbikKKyt7CisrICAgIDo6X190c2FuX211 dGV4X3Bvc3RfbG9jayhhZGRyLCBmbGFncywgcmVjdXJzaW9uKTsKKyt9CisrCisraW5saW5lIHZv aWQgbXV0ZXhQcmVVbmxvY2sodm9pZCAqYWRkciwgdW5zaWduZWQgZmxhZ3MpCisreworKyAgICA6 Ol9fdHNhbl9tdXRleF9wcmVfdW5sb2NrKGFkZHIsIGZsYWdzKTsKKyt9CisrCisraW5saW5lIHZv aWQgbXV0ZXhQb3N0VW5sb2NrKHZvaWQgKmFkZHIsIHVuc2lnbmVkIGZsYWdzKQorK3sKKysgICAg OjpfX3RzYW5fbXV0ZXhfcG9zdF91bmxvY2soYWRkciwgZmxhZ3MpOworK30KKysKKytlbnVtIDog dW5zaWduZWQgeworKyAgICBNdXRleFdyaXRlUmVlbnRyYW50ID0gOjpfX3RzYW5fbXV0ZXhfd3Jp dGVfcmVlbnRyYW50LAorKyAgICBUcnlMb2NrID0gOjpfX3RzYW5fbXV0ZXhfdHJ5X2xvY2ssCisr ICAgIFRyeUxvY2tGYWlsZWQgPSA6Ol9fdHNhbl9tdXRleF90cnlfbG9ja19mYWlsZWQsCisrfTsK KysjZWxzZQorK2lubGluZSB2b2lkIGZ1dGV4QWNxdWlyZSh2b2lkICosIHZvaWQgKiA9IG51bGxw dHIpIHt9CisraW5saW5lIHZvaWQgZnV0ZXhSZWxlYXNlKHZvaWQgKiwgdm9pZCAqID0gbnVsbHB0 cikge30KKysKKytlbnVtIDogdW5zaWduZWQgeworKyAgICBNdXRleFdyaXRlUmVlbnRyYW50LAor KyAgICBUcnlMb2NrLAorKyAgICBUcnlMb2NrRmFpbGVkLAorK307CisraW5saW5lIHZvaWQgbXV0 ZXhQcmVMb2NrKHZvaWQgKiwgdW5zaWduZWQpIHt9CisraW5saW5lIHZvaWQgbXV0ZXhQb3N0TG9j ayh2b2lkICosIHVuc2lnbmVkLCBpbnQpIHt9CisraW5saW5lIHZvaWQgbXV0ZXhQcmVVbmxvY2so dm9pZCAqLCB1bnNpZ25lZCkge30KKytpbmxpbmUgdm9pZCBtdXRleFBvc3RVbmxvY2sodm9pZCAq LCB1bnNpZ25lZCkge30KKysjZW5kaWYgLy8gUVRfQlVJTERJTkdfVU5ERVJfVFNBTgorK30gLy8g bmFtZXNwYWNlIFF0VHNhbgorKworK1FUX0VORF9OQU1FU1BBQ0UKKysKKysjZW5kaWYgLy8gUVRT QU5fSU1QTF9ICitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xd2FpdGNv bmRpdGlvbl91bml4LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRp b25fdW5peC5jcHAKK2luZGV4IDg4YjA1OGY0MTAuLjBmMWRhNGRjOWIgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3BwCisrKysgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3BwCitAQCAtMjEz LDcgKzIxMyw3IEBAIGJvb2wgUVdhaXRDb25kaXRpb246OndhaXQoUU11dGV4ICptdXRleCwgUURl YWRsaW5lVGltZXIgZGVhZGxpbmUpCisgeworICAgICBpZiAoISBtdXRleCkKKyAgICAgICAgIHJl dHVybiBmYWxzZTsKKy0gICAgaWYgKG11dGV4LT5pc1JlY3Vyc2l2ZSgpKSB7CisrICAgIGlmIChz dGF0aWNfY2FzdDxRQmFzaWNNdXRleCAqPihtdXRleCktPmlzUmVjdXJzaXZlKCkpIHsKKyAgICAg ICAgIHFXYXJuaW5nKCJRV2FpdENvbmRpdGlvbjogY2Fubm90IHdhaXQgb24gcmVjdXJzaXZlIG11 dGV4ZXMiKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvY29yZWxpYi90aW1lL3FkYXRldGltZS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv dGltZS9xZGF0ZXRpbWUuY3BwCitpbmRleCBlYzEyNTY5ZTNmLi4yYzBiMDk4MDc5IDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcWRhdGV0aW1lLmNwcAorKysrIGIvcXRiYXNl L3NyYy9jb3JlbGliL3RpbWUvcWRhdGV0aW1lLmNwcAorQEAgLTQzLDYgKzQzLDcgQEAKKyAjaWYg UVRfQ09ORklHKGRhdGV0aW1lcGFyc2VyKQorICNpbmNsdWRlICJwcml2YXRlL3FkYXRldGltZXBh cnNlcl9wLmgiCisgI2VuZGlmCisrI2luY2x1ZGUgPHByaXZhdGUvcW51bWVyaWNfcC5oPgorIAor ICNpbmNsdWRlICJxZGF0YXN0cmVhbS5oIgorICNpbmNsdWRlICJxc2V0LmgiCitAQCAtMTQyOSw5 ICsxNDMwLDExIEBAIFFEYXRlIFFEYXRlOjphZGREYXlzKHFpbnQ2NCBuZGF5cykgY29uc3QKKyAg ICAgaWYgKGlzTnVsbCgpKQorICAgICAgICAgcmV0dXJuIFFEYXRlKCk7CisgCistICAgIC8vIER1 ZSB0byBsaW1pdHMgb24gbWluSmQoKSBhbmQgbWF4SmQoKSB3ZSBrbm93IHRoYXQgYW55IG92ZXJm bG93CistICAgIC8vIHdpbGwgYmUgaW52YWxpZCBhbmQgY2F1Z2h0IGJ5IGZyb21KdWxpYW5EYXko KS4KKy0gICAgcmV0dXJuIGZyb21KdWxpYW5EYXkoamQgKyBuZGF5cyk7CisrICAgIHFpbnQ2NCBy OworKyAgICBpZiAoUV9VTkxJS0VMWShhZGRfb3ZlcmZsb3coamQsIG5kYXlzLCAmcikpKQorKyAg ICAgICAgcmV0dXJuIFFEYXRlKCk7CisrICAgIGVsc2UKKysgICAgICAgIHJldHVybiBmcm9tSnVs aWFuRGF5KHIpOworIH0KKyAKKyAvKiEKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIv dGltZS9xdGltZXpvbmUuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lLmNw cAoraW5kZXggMDMwOWU0M2U1Mi4uM2Q0NTE2OTZhMSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Y29yZWxpYi90aW1lL3F0aW1lem9uZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1l L3F0aW1lem9uZS5jcHAKK0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisg KioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTMgSm9obiBMYXl0IDxqbGF5dEBrZGUub3JnPgorKyoq IENvcHlyaWdodCAoQykgMjAyMCBKb2huIExheXQgPGpsYXl0QGtkZS5vcmc+CisgKiogQ29udGFj dDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBh cnQgb2YgdGhlIFF0Q29yZSBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitAQCAtOTc1LDkgKzk3 NSwxNSBAQCBRTGlzdDxRQnl0ZUFycmF5PiBRVGltZVpvbmU6OndpbmRvd3NJZFRvSWFuYUlkcyhj b25zdCBRQnl0ZUFycmF5ICZ3aW5kb3dzSWQsCisgfQorIAorICNpZm5kZWYgUVRfTk9fREFUQVNU UkVBTQorKy8vIEludmFsaWQsIGFzIGFuIElBTkEgSUQ6IHRvbyBsb25nLCBzdGFydHMgd2l0aCAt IGFuZCBoYXMgb3RoZXIgaW52YWxpZCBjaGFyYWN0ZXJzIGluIGl0Cisrc3RhdGljIGlubGluZSBR U3RyaW5nIGludmFsaWRJZCgpIHsgcmV0dXJuIFFTdHJpbmdMaXRlcmFsKCItTm8gVGltZSBab25l IFNwZWNpZmllZCEiKTsgfQorKworIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KFFEYXRhU3RyZWFt ICZkcywgY29uc3QgUVRpbWVab25lICZ0eikKKyB7CistICAgIHR6LmQtPnNlcmlhbGl6ZShkcyk7 CisrICAgIGlmICh0ei5pc1ZhbGlkKCkpCisrICAgICAgICB0ei5kLT5zZXJpYWxpemUoZHMpOwor KyAgICBlbHNlCisrICAgICAgICBkcyA8PCBpbnZhbGlkSWQoKTsKKyAgICAgcmV0dXJuIGRzOwor IH0KKyAKK0BAIC05ODUsNyArOTkxLDkgQEAgUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4oUURhdGFT dHJlYW0gJmRzLCBRVGltZVpvbmUgJnR6KQorIHsKKyAgICAgUVN0cmluZyBpYW5hSWQ7CisgICAg IGRzID4+IGlhbmFJZDsKKy0gICAgaWYgKGlhbmFJZCA9PSBRTGF0aW4xU3RyaW5nKCJPZmZzZXRG cm9tVXRjIikpIHsKKysgICAgaWYgKGlhbmFJZCA9PSBpbnZhbGlkSWQoKSkgeworKyAgICAgICAg dHogPSBRVGltZVpvbmUoKTsKKysgICAgfSBlbHNlIGlmIChpYW5hSWQgPT0gUUxhdGluMVN0cmlu ZygiT2Zmc2V0RnJvbVV0YyIpKSB7CisgICAgICAgICBpbnQgdXRjT2Zmc2V0OworICAgICAgICAg UVN0cmluZyBuYW1lOworICAgICAgICAgUVN0cmluZyBhYmJyZXZpYXRpb247CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lcHJpdmF0ZV90ei5jcHAgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2YXRlX3R6LmNwcAoraW5kZXggYjE2MTFk N2RkYi4uYTdhNmE3MmNjZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0 aW1lem9uZXByaXZhdGVfdHouY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGlt ZXpvbmVwcml2YXRlX3R6LmNwcAorQEAgLTQyLDYgKzQyLDcgQEAKKyAjaW5jbHVkZSAicXRpbWV6 b25lLmgiCisgI2luY2x1ZGUgInF0aW1lem9uZXByaXZhdGVfcC5oIgorICNpbmNsdWRlICJwcml2 YXRlL3Fsb2NhbGVfdG9vbHNfcC5oIgorKyNpbmNsdWRlICJwcml2YXRlL3Fsb2NraW5nX3AuaCIK KyAKKyAjaW5jbHVkZSA8UXRDb3JlL1FEYXRhU3RyZWFtPgorICNpbmNsdWRlIDxRdENvcmUvUURh dGVUaW1lPgorQEAgLTYyLDYgKzYzLDEwIEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisr I2lmIFFUX0NPTkZJRyhpY3UpCisrc3RhdGljIFFCYXNpY011dGV4IHNfaWN1X211dGV4OworKyNl bmRpZgorKworIC8qCisgICAgIFByaXZhdGUKKyAKK0BAIC02NzAsNiArNjc1LDkgQEAgUVR6VGlt ZVpvbmVQcml2YXRlOjp+UVR6VGltZVpvbmVQcml2YXRlKCkKKyAKKyBRVHpUaW1lWm9uZVByaXZh dGUgKlFUelRpbWVab25lUHJpdmF0ZTo6Y2xvbmUoKSBjb25zdAorIHsKKysjaWYgUVRfQ09ORklH KGljdSkKKysgICAgY29uc3QgYXV0byBsb2NrID0gcXRfc2NvcGVkX2xvY2soc19pY3VfbXV0ZXgp OworKyNlbmRpZgorICAgICByZXR1cm4gbmV3IFFUelRpbWVab25lUHJpdmF0ZSgqdGhpcyk7Cisg fQorIAorQEAgLTkxMywxMiArOTIxLDE0IEBAIFFTdHJpbmcgUVR6VGltZVpvbmVQcml2YXRlOjpk aXNwbGF5TmFtZShxaW50NjQgYXRNU2Vjc1NpbmNlRXBvY2gsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFMb2NhbGUgJmxvY2FsZSkgY29uc3QKKyB7Cisg I2lmIFFUX0NPTkZJRyhpY3UpCisrICAgIGF1dG8gbG9jayA9IHF0X3VuaXF1ZV9sb2NrKHNfaWN1 X211dGV4KTsKKyAgICAgaWYgKCFtX2ljdSkKKyAgICAgICAgIG1faWN1ID0gbmV3IFFJY3VUaW1l Wm9uZVByaXZhdGUobV9pZCk7CisgICAgIC8vIFRPRE8gc21hbGwgcmlzayBtYXkgbm90IG1hdGNo IGlmIHRyYW4gdGltZXMgZGlmZmVyIGR1ZSB0byBvdXRkYXRlZCBmaWxlcworICAgICAvLyBUT0RP IFNvbWUgdmFsaWQgVFogbmFtZXMgYXJlIG5vdCB2YWxpZCBJQ1UgbmFtZXMsIHVzZSB0cmFuc2xh dGlvbiB0YWJsZT8KKyAgICAgaWYgKG1faWN1LT5pc1ZhbGlkKCkpCisgICAgICAgICByZXR1cm4g bV9pY3UtPmRpc3BsYXlOYW1lKGF0TVNlY3NTaW5jZUVwb2NoLCBuYW1lVHlwZSwgbG9jYWxlKTsK KysgICAgbG9jay51bmxvY2soKTsKKyAjZWxzZQorICAgICBRX1VOVVNFRChuYW1lVHlwZSkKKyAg ICAgUV9VTlVTRUQobG9jYWxlKQorQEAgLTkzMiwxMiArOTQyLDE0IEBAIFFTdHJpbmcgUVR6VGlt ZVpvbmVQcml2YXRlOjpkaXNwbGF5TmFtZShRVGltZVpvbmU6OlRpbWVUeXBlIHRpbWVUeXBlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRTG9jYWxlICZs b2NhbGUpIGNvbnN0CisgeworICNpZiBRVF9DT05GSUcoaWN1KQorKyAgICBhdXRvIGxvY2sgPSBx dF91bmlxdWVfbG9jayhzX2ljdV9tdXRleCk7CisgICAgIGlmICghbV9pY3UpCisgICAgICAgICBt X2ljdSA9IG5ldyBRSWN1VGltZVpvbmVQcml2YXRlKG1faWQpOworICAgICAvLyBUT0RPIHNtYWxs IHJpc2sgbWF5IG5vdCBtYXRjaCBpZiB0cmFuIHRpbWVzIGRpZmZlciBkdWUgdG8gb3V0ZGF0ZWQg ZmlsZXMKKyAgICAgLy8gVE9ETyBTb21lIHZhbGlkIFRaIG5hbWVzIGFyZSBub3QgdmFsaWQgSUNV IG5hbWVzLCB1c2UgdHJhbnNsYXRpb24gdGFibGU/CisgICAgIGlmIChtX2ljdS0+aXNWYWxpZCgp KQorICAgICAgICAgcmV0dXJuIG1faWN1LT5kaXNwbGF5TmFtZSh0aW1lVHlwZSwgbmFtZVR5cGUs IGxvY2FsZSk7CisrICAgIGxvY2sudW5sb2NrKCk7CisgI2Vsc2UKKyAgICAgUV9VTlVTRUQodGlt ZVR5cGUpCisgICAgIFFfVU5VU0VEKG5hbWVUeXBlKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Y29yZWxpYi90b29scy9xYXJyYXlkYXRhLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWFy cmF5ZGF0YS5oCitpbmRleCBkY2Q5NTkyNGMxLi5kMDE3MzllN2U2IDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FhcnJheWRhdGEuaAorKysrIGIvcXRiYXNlL3NyYy9jb3Jl bGliL3Rvb2xzL3FhcnJheWRhdGEuaAorQEAgLTQyLDYgKzQyLDcgQEAKKyAKKyAjaW5jbHVkZSA8 UXRDb3JlL3FyZWZjb3VudC5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8Y3N0 ZGludD4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKK0BAIC01OCwxNCArNTksMTQgQEAgc3Ry dWN0IFFfQ09SRV9FWFBPUlQgUUFycmF5RGF0YQorICAgICB7CisgICAgICAgICBRX0FTU0VSVChz aXplID09IDAKKyAgICAgICAgICAgICAgICAgfHwgb2Zmc2V0IDwgMCB8fCBzaXplX3Qob2Zmc2V0 KSA+PSBzaXplb2YoUUFycmF5RGF0YSkpOworLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh c3Q8Y2hhciAqPih0aGlzKSArIG9mZnNldDsKKysgICAgICAgIHJldHVybiByZWludGVycHJldF9j YXN0PHZvaWQgKj4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSArIG9mZnNldCk7 CisgICAgIH0KKyAKKyAgICAgY29uc3Qgdm9pZCAqZGF0YSgpIGNvbnN0CisgICAgIHsKKyAgICAg ICAgIFFfQVNTRVJUKHNpemUgPT0gMAorICAgICAgICAgICAgICAgICB8fCBvZmZzZXQgPCAwIHx8 IHNpemVfdChvZmZzZXQpID49IHNpemVvZihRQXJyYXlEYXRhKSk7CistICAgICAgICByZXR1cm4g cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KHRoaXMpICsgb2Zmc2V0OworKyAgICAgICAg cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy X3Q+KHRoaXMpICsgb2Zmc2V0KTsKKyAgICAgfQorIAorICAgICAvLyBUaGlzIHJlZmVycyB0byBh cnJheSBkYXRhIG11dGFiaWxpdHksIG5vdCAiaGVhZGVyIGRhdGEiIHJlcHJlc2VudGVkIGJ5Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FmcmVlbGlzdF9wLmggYi9xdGJh c2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3AuaAoraW5kZXggNWJhMjNiMzQ0Yi4uOTk3 NDEwMjEzNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xZnJlZWxpc3Rf cC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3AuaAorQEAgLTE2 MSw3ICsxNjEsNyBAQCBjbGFzcyBRRnJlZUxpc3QKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGk7 CisgICAgICAgICAgICAgeCAtPSBzaXplOworICAgICAgICAgfQorLSAgICAgICAgUV9BU1NFUlQo ZmFsc2UpOworKyAgICAgICAgUV9VTlJFQUNIQUJMRSgpOworICAgICAgICAgcmV0dXJuIC0xOwor ICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3F2ZXJzaW9u bnVtYmVyLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcXZlcnNpb25udW1iZXIuaAoraW5k ZXggZDQzYjg2YmE1MS4uMjg0M2YyYjA0MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxp Yi90b29scy9xdmVyc2lvbm51bWJlci5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMv cXZlcnNpb25udW1iZXIuaAorQEAgLTI3MywxMCArMjczLDEwIEBAIHB1YmxpYzoKKyAKKyAgICAg UV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBRU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7 CisgI2lmIFFUX1NUUklOR1ZJRVdfTEVWRUwgPCAyCistICAgIFFfUkVRVUlSRURfUkVTVUxUIFFf Q09SRV9FWFBPUlQgc3RhdGljIFFfREVDTF9QVVJFX0ZVTkNUSU9OIFFWZXJzaW9uTnVtYmVyIGZy b21TdHJpbmcoY29uc3QgUVN0cmluZyAmc3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0 cik7CisrICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFWZXJzaW9u TnVtYmVyIGZyb21TdHJpbmcoY29uc3QgUVN0cmluZyAmc3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4 ID0gbnVsbHB0cik7CisgI2VuZGlmCistICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBP UlQgc3RhdGljIFFfREVDTF9QVVJFX0ZVTkNUSU9OIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmco UUxhdGluMVN0cmluZyBzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsKKy0gICAg UV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUV9ERUNMX1BVUkVfRlVOQ1RJ T04gUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhRU3RyaW5nVmlldyBzdHJpbmcsIGludCAqc3Vm Zml4SW5kZXggPSBudWxscHRyKTsKKysgICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9S VCBzdGF0aWMgUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhRTGF0aW4xU3RyaW5nIHN0cmluZywg aW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworKyAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NP UkVfRVhQT1JUIHN0YXRpYyBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKFFTdHJpbmdWaWV3IHN0 cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworIAorIHByaXZhdGU6CisgI2lmbmRl ZiBRVF9OT19EQVRBU1RSRUFNCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9kYnVzL3FkYnVzaW50 ZWdyYXRvci5jcHAgYi9xdGJhc2Uvc3JjL2RidXMvcWRidXNpbnRlZ3JhdG9yLmNwcAoraW5kZXgg NWI2NmNlOTcxYi4uMjhhM2IwZmZlYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1 c2ludGVncmF0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2RidXMvcWRidXNpbnRlZ3JhdG9yLmNw cAorQEAgLTExMzUsNyArMTEzNSwxMyBAQCB2b2lkIFFEQnVzQ29ubmVjdGlvblByaXZhdGU6OmNs b3NlQ29ubmVjdGlvbigpCisgICAgICAgICB9CisgICAgIH0KKyAKKy0gICAgcURlbGV0ZUFsbChw ZW5kaW5nQ2FsbHMpOworKyAgICBmb3IgKGF1dG8gaXQgPSBwZW5kaW5nQ2FsbHMuYmVnaW4oKTsg aXQgIT0gcGVuZGluZ0NhbGxzLmVuZCgpOyArK2l0KSB7CisrICAgICAgICBhdXRvIGNhbGwgPSAq aXQ7CisrICAgICAgICBpZiAoIWNhbGwtPnJlZi5kZXJlZigpKSB7CisrICAgICAgICAgICAgZGVs ZXRlIGNhbGw7CisrICAgICAgICB9CisrICAgIH0KKysgICAgcGVuZGluZ0NhbGxzLmNsZWFyKCk7 CisgCisgICAgIC8vIERpc2Nvbm5lY3QgYWxsIHNpZ25hbHMgZnJvbSBzaWduYWwgaG9va3MgYW5k IGZyb20gdGhlIG9iamVjdCB0cmVlIHRvCisgICAgIC8vIGF2b2lkIFFPYmplY3Q6OmRlc3Ryb3ll ZCBiZWluZyBzZW50IHRvIGRidXMgZGFlbW9uIHRocmVhZCB3aGljaCBoYXMKK0BAIC0yNTg0LDYg KzI1OTAsMTEgQEAgUURCdXNDb25uZWN0aW9uUHJpdmF0ZTo6ZmluZE1ldGFPYmplY3QoY29uc3Qg UVN0cmluZyAmc2VydmljZSwgY29uc3QgUVN0cmluZyAmcGEKKyAgICAgICAgIGlmIChtbykKKyAg ICAgICAgICAgICByZXR1cm4gbW87CisgICAgIH0KKysgICAgaWYgKHBhdGguaXNFbXB0eSgpKSB7 CisrICAgICAgICBlcnJvciA9IFFEQnVzRXJyb3IoUURCdXNFcnJvcjo6SW52YWxpZE9iamVjdFBh dGgsIFFMYXRpbjFTdHJpbmcoIk9iamVjdCBwYXRoIGNhbm5vdCBiZSBlbXB0eSIpKTsKKysgICAg ICAgIGxhc3RFcnJvciA9IGVycm9yOworKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisrICAgIH0K KyAKKyAgICAgLy8gaW50cm9zcGVjdCB0aGUgdGFyZ2V0IG9iamVjdAorICAgICBRREJ1c01lc3Nh Z2UgbXNnID0gUURCdXNNZXNzYWdlOjpjcmVhdGVNZXRob2RDYWxsKHNlcnZpY2UsIHBhdGgsCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0YW9iamVjdC5jcHAgYi9xdGJhc2Uv c3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcAoraW5kZXggNTI2NTU2OGY0Mi4uN2U5ZjBmMWFj YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c21ldGFvYmplY3QuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcAorQEAgLTIxMCw2ICsyMTAsOSBA QCBRREJ1c01ldGFPYmplY3RHZW5lcmF0b3I6OmZpbmRUeXBlKGNvbnN0IFFCeXRlQXJyYXkgJnNp Z25hdHVyZSwKKyAgICAgICAgIH0gZWxzZSBpZiAoc2lnbmF0dXJlID09ICJhe3NzfSIpIHsKKyAg ICAgICAgICAgICByZXN1bHQubmFtZSA9ICJRTWFwPFFTdHJpbmcsUVN0cmluZz4iOworICAgICAg ICAgICAgIHR5cGUgPSBxTWV0YVR5cGVJZDxRTWFwPFFTdHJpbmcsIFFTdHJpbmc+ID4oKTsKKysg ICAgICAgIH0gZWxzZSBpZiAoc2lnbmF0dXJlID09ICJhYXkiKSB7CisrICAgICAgICAgICAgcmVz dWx0Lm5hbWUgPSAiUUJ5dGVBcnJheUxpc3QiOworKyAgICAgICAgICAgIHR5cGUgPSBxTWV0YVR5 cGVJZDxRQnl0ZUFycmF5TGlzdD4oKTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg cmVzdWx0Lm5hbWUgPSAie0QtQnVzIHR5cGUgXCIiICsgc2lnbmF0dXJlICsgIlwifSI7CisgICAg ICAgICAgICAgdHlwZSA9IHJlZ2lzdGVyQ29tcGxleERCdXNUeXBlKHJlc3VsdC5uYW1lKTsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlLmNwcCBiL3F0 YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFjY2Vzc2libGUuY3BwCitpbmRleCBkNzA1YmZjY2I1 Li4wY2FmM2M4MDhjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvYWNjZXNzaWJsZS9xYWNj ZXNzaWJsZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFjY2Vzc2libGUu Y3BwCitAQCAtNTQsNiArNTQsNyBAQAorICNpbmNsdWRlIDxRdENvcmUvcWRlYnVnLmg+CisgI2lu Y2x1ZGUgPFF0Q29yZS9xbG9nZ2luZ2NhdGVnb3J5Lmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xbWV0 YW9iamVjdC5oPgorKyNpbmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9xbWV0YW9iamVjdF9wLmg+Cisg I2luY2x1ZGUgPFF0Q29yZS9xaGFzaC5oPgorICNpbmNsdWRlIDxwcml2YXRlL3FmYWN0b3J5bG9h ZGVyX3AuaD4KKyAKK0BAIC02ODEsNiArNjgyLDI1IEBAIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpR QWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKFFPYmplY3QgKm9iamVjdCkKKyAg ICAgLy8gQ3JlYXRlIGEgUUFjY2Vzc2libGVJbnRlcmZhY2UgZm9yIHRoZSBvYmplY3QgY2xhc3Mu IFN0YXJ0IGJ5IHRoZSBtb3N0CisgICAgIC8vIGRlcml2ZWQgY2xhc3MgYW5kIHdhbGsgdXAgdGhl IGNsYXNzIGhpZXJhcmNoeS4KKyAgICAgY29uc3QgUU1ldGFPYmplY3QgKm1vID0gb2JqZWN0LT5t ZXRhT2JqZWN0KCk7CisrICAgIGNvbnN0IGF1dG8gKm9iamVjdFByaXYgPSBRT2JqZWN0UHJpdmF0 ZTo6Z2V0KG9iamVjdCk7CisrICAgIC8qCisrICAgICBXZSBkbyBub3Qgd2FudCB0byBjYWNoZSBl YWNoIGFuZCBldmVyeSBRTUwgbWV0YW9iamVjdCAoQnV0dG9uX1FNTFRZUEVfMTI0LAorKyAgICAg QnV0dG9uX1FNTFRZUEVfMTI1LCBldGMuKS4gVGhvc2UgZHluYW1pYyBtZXRhb2JqZWN0cyBzaG91 bGRuJ3QgaGF2ZSBhbgorKyAgICAgYWNjZXNzaWJsZSBpbnRlcmZhY2UgaW4gYW55IGNhc2UuIElu c3RlYWQsIHdlIHN0YXJ0IHRoZSB3aG9sZSBjaGVja2luZworKyAgICAgd2l0aCB0aGUgZmlyc3Qg bm9uLWR5bmFtaWMgbWV0YS1vYmplY3QuIFRvIGF2b2lkIHBvdGVudGlhbCByZWdyZXNzaW9ucwor KyAgICAgaW4gb3RoZXIgYXJlYXMgb2YgUXQgdGhhdCBhbHNvIHVzZSBkeW5hbWljIG1ldGFvYmpl Y3RzLCB3ZSBvbmx5IGRvIHRoaXMKKysgICAgIGZvciBvYmplY3RzIHRoYXQgYXJlIFFNTC1yZWxh dGVkIChhcHByb3hpbWF0ZWQgYnkgY2hlY2tpbmcgd2hldGhlciB0aGV5CisrICAgICBoYXZlIGRk YXRhIHNldCkuCisrICAgICovCisrICAgIGNvbnN0IGJvb2wgcW1sUmVsYXRlZCA9ICFvYmplY3RQ cml2LT5pc0RlbGV0aW5nQ2hpbGRyZW4gJiYKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg b2JqZWN0UHJpdi0+ZGVjbGFyYXRpdmVEYXRhOworKyAgICB3aGlsZSAocW1sUmVsYXRlZCAmJiBt bykgeworKyAgICAgICAgYXV0byBtb3AgPSBRTWV0YU9iamVjdFByaXZhdGU6OmdldChtbyk7Cisr ICAgICAgICBpZiAoIW1vcCB8fCAhKG1vcC0+ZmxhZ3MgJiBEeW5hbWljTWV0YU9iamVjdCkpCisr ICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICBtbyA9IG1vLT5zdXBlckNsYXNzKCk7Cisr ICAgIH07CisgICAgIHdoaWxlIChtbykgeworICAgICAgICAgY29uc3QgUVN0cmluZyBjbiA9IFFM YXRpbjFTdHJpbmcobW8tPmNsYXNzTmFtZSgpKTsKKyAKK0BAIC02OTYsMTQgKzcxNiwxNSBAQCBR QWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGU6OnF1ZXJ5QWNjZXNzaWJsZUludGVyZmFj ZShRT2JqZWN0ICpvYmplY3QpCisgICAgICAgICAvLyBGaW5kIGEgUUFjY2Vzc2libGVQbHVnaW4g KGZhY3RvcnkpIGZvciB0aGUgY2xhc3MgbmFtZS4gSWYgdGhlcmUncworICAgICAgICAgLy8gbm8g ZW50cnkgaW4gdGhlIGNhY2hlIHRyeSB0byBjcmVhdGUgaXQgdXNpbmcgdGhlIHBsdWdpbiBsb2Fk ZXIuCisgICAgICAgICBpZiAoIXFBY2Nlc3NpYmxlUGx1Z2lucygpLT5jb250YWlucyhjbikpIHsK KysgICAgICAgICAgICBRQWNjZXNzaWJsZVBsdWdpbiAqZmFjdG9yeSA9IG51bGxwdHI7IC8vIDAg bWVhbnMgIm5vIHBsdWdpbiBmb3VuZCIuIFRoaXMgaXMgY2FjaGVkIGFzIHdlbGwuCisgICAgICAg ICAgICAgY29uc3QgaW50IGluZGV4ID0gbG9hZGVyKCktPmluZGV4T2YoY24pOworLSAgICAgICAg ICAgIGlmIChpbmRleCAhPSAtMSkgeworLSAgICAgICAgICAgICAgICBRQWNjZXNzaWJsZVBsdWdp biAqZmFjdG9yeSA9IHFvYmplY3RfY2FzdDxRQWNjZXNzaWJsZVBsdWdpbiAqPihsb2FkZXIoKS0+ aW5zdGFuY2UoaW5kZXgpKTsKKy0gICAgICAgICAgICAgICAgcUFjY2Vzc2libGVQbHVnaW5zKCkt Pmluc2VydChjbiwgZmFjdG9yeSk7CistICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGlmIChp bmRleCAhPSAtMSkKKysgICAgICAgICAgICAgICAgZmFjdG9yeSA9IHFvYmplY3RfY2FzdDxRQWNj ZXNzaWJsZVBsdWdpbiAqPihsb2FkZXIoKS0+aW5zdGFuY2UoaW5kZXgpKTsKKysgICAgICAgICAg ICBxQWNjZXNzaWJsZVBsdWdpbnMoKS0+aW5zZXJ0KGNuLCBmYWN0b3J5KTsKKyAgICAgICAgIH0K KyAKKyAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIGNhY2hlIHNob3VsZCBjb250YWluIGEg dmFsaWQgZmFjdG9yeSBwb2ludGVyIG9yIDA6CisrICAgICAgICBRX0FTU0VSVChxQWNjZXNzaWJs ZVBsdWdpbnMoKS0+Y29udGFpbnMoY24pKTsKKyAgICAgICAgIFFBY2Nlc3NpYmxlUGx1Z2luICpm YWN0b3J5ID0gcUFjY2Vzc2libGVQbHVnaW5zKCktPnZhbHVlKGNuKTsKKyAgICAgICAgIGlmIChm YWN0b3J5KSB7CisgICAgICAgICAgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKnJlc3VsdCA9IGZh Y3RvcnktPmNyZWF0ZShjbiwgb2JqZWN0KTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9j b25maWd1cmUuanNvbiBiL3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3VyZS5qc29uCitpbmRleCAxZjA4 Nzk1YzU3Li4xMmM5NTc0MmQyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJl Lmpzb24KKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3VyZS5qc29uCitAQCAtODM0LDcgKzgz NCw4IEBACisgICAgICAgICAgICAgICAgICAgICAiLy8gZW1iZWRkZWQgZGV2aWNlcywgYXJlIG5v dCBpbnRlbmRlZCB0byBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggWC4gRUdMIHN1cHBvcnQiLAorICAg ICAgICAgICAgICAgICAgICAgIi8vIGhhcyB0byBiZSBkaXNhYmxlZCBpbiBwbHVnaW5zIGxpa2Ug eGNiIGluIHRoaXMgY2FzZSBzaW5jZSB0aGUgbmF0aXZlIGRpc3BsYXksIiwKKyAgICAgICAgICAg ICAgICAgICAgICIvLyB3aW5kb3cgYW5kIHBpeG1hcCB0eXBlcyB3aWxsIGJlIGRpZmZlcmVudCB0 aGFuIHdoYXQgYW4gWC1iYXNlZCBwbGF0Zm9ybSIsCistICAgICAgICAgICAgICAgICAgICAiLy8g cGx1Z2luIHdvdWxkIGV4cGVjdC4iCisrICAgICAgICAgICAgICAgICAgICAiLy8gcGx1Z2luIHdv dWxkIGV4cGVjdC4iLAorKyAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgVVNFX1gxMSIKKyAg ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgImluY2x1ZGUiOiBbICJFR0wvZWds LmgiLCAiWDExL1hsaWIuaCIgXSwKKyAgICAgICAgICAgICAgICAgIm1haW4iOiBbCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWJtcGhhbmRsZXIuY3BwIGIvcXRiYXNlL3NyYy9n dWkvaW1hZ2UvcWJtcGhhbmRsZXIuY3BwCitpbmRleCA5NmYxZThjYjFkLi4wZTczYmJiZGIwIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWJtcGhhbmRsZXIuY3BwCisrKysgYi9x dGJhc2Uvc3JjL2d1aS9pbWFnZS9xYm1waGFuZGxlci5jcHAKK0BAIC0xNTAsMTYgKzE1MCw0MiBA QCBzdGF0aWMgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoUURhdGFTdHJlYW0gJnMsIGNvbnN0IEJN UF9JTkZPSERSICZiaSkKKyAgICAgcmV0dXJuIHM7CisgfQorIAorLXN0YXRpYyBpbnQgY2FsY19z aGlmdCh1aW50IG1hc2spCisrc3RhdGljIHVpbnQgY2FsY19zaGlmdCh1aW50IG1hc2spCisgewor LSAgICBpbnQgcmVzdWx0ID0gMDsKKy0gICAgd2hpbGUgKG1hc2sgJiYgIShtYXNrICYgMSkpIHsK KysgICAgdWludCByZXN1bHQgPSAwOworKyAgICB3aGlsZSAoKG1hc2sgPj0gMHgxMDApIHx8ICgh KG1hc2sgJiAxKSAmJiBtYXNrKSkgeworICAgICAgICAgcmVzdWx0Kys7CisgICAgICAgICBtYXNr ID4+PSAxOworICAgICB9CisgICAgIHJldHVybiByZXN1bHQ7CisgfQorIAorK3N0YXRpYyB1aW50 IGNhbGNfc2NhbGUodWludCBsb3dfbWFzaykKKyt7CisrICAgIHVpbnQgcmVzdWx0ID0gODsKKysg ICAgd2hpbGUgKGxvd19tYXNrICYmIHJlc3VsdCkgeworKyAgICAgICAgcmVzdWx0LS07CisrICAg ICAgICBsb3dfbWFzayA+Pj0gMTsKKysgICAgfQorKyAgICByZXR1cm4gcmVzdWx0OworK30KKysK KytzdGF0aWMgaW5saW5lIHVpbnQgYXBwbHlfc2NhbGUodWludCB2YWx1ZSwgdWludCBzY2FsZSkK Kyt7CisrICAgIGlmICghKHNjYWxlICYgMHgwNykpIC8vIHJldHVybiBpbW1lZGlhdGVseSBpZiBz Y2FsZSA9PSA4IG9yIDAKKysgICAgICAgIHJldHVybiB2YWx1ZTsKKysKKysgICAgdWludCBmaWxs ZWQgPSA4IC0gc2NhbGU7CisrICAgIHVpbnQgcmVzdWx0ID0gdmFsdWUgPDwgc2NhbGU7CisrCisr ICAgIGRvIHsKKysgICAgICAgIHJlc3VsdCB8PSByZXN1bHQgPj4gZmlsbGVkOworKyAgICAgICAg ZmlsbGVkIDw8PSAxOworKyAgICB9IHdoaWxlIChmaWxsZWQgPCA4KTsKKysKKysgICAgcmV0dXJu IHJlc3VsdDsKKyt9CisrCisgc3RhdGljIGJvb2wgcmVhZF9kaWJfZmlsZWhlYWRlcihRRGF0YVN0 cmVhbSAmcywgQk1QX0ZJTEVIRFIgJmJmKQorIHsKKyAgICAgLy8gcmVhZCBCTVAgZmlsZSBoZWFk ZXIKK0BAIC0yMjIsMTQgKzI0OCwxNCBAQCBzdGF0aWMgYm9vbCByZWFkX2RpYl9ib2R5KFFEYXRh U3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAmYmksIHFpbnQ2NCBvZmZzZXQsCisgICAgIHVp bnQgZ3JlZW5fbWFzayA9IDA7CisgICAgIHVpbnQgYmx1ZV9tYXNrID0gMDsKKyAgICAgdWludCBh bHBoYV9tYXNrID0gMDsKKy0gICAgaW50IHJlZF9zaGlmdCA9IDA7CistICAgIGludCBncmVlbl9z aGlmdCA9IDA7CistICAgIGludCBibHVlX3NoaWZ0ID0gMDsKKy0gICAgaW50IGFscGhhX3NoaWZ0 ID0gMDsKKy0gICAgaW50IHJlZF9zY2FsZSA9IDA7CistICAgIGludCBncmVlbl9zY2FsZSA9IDA7 CistICAgIGludCBibHVlX3NjYWxlID0gMDsKKy0gICAgaW50IGFscGhhX3NjYWxlID0gMDsKKysg ICAgdWludCByZWRfc2hpZnQgPSAwOworKyAgICB1aW50IGdyZWVuX3NoaWZ0ID0gMDsKKysgICAg dWludCBibHVlX3NoaWZ0ID0gMDsKKysgICAgdWludCBhbHBoYV9zaGlmdCA9IDA7CisrICAgIHVp bnQgcmVkX3NjYWxlID0gMDsKKysgICAgdWludCBncmVlbl9zY2FsZSA9IDA7CisrICAgIHVpbnQg Ymx1ZV9zY2FsZSA9IDA7CisrICAgIHVpbnQgYWxwaGFfc2NhbGUgPSAwOworIAorICAgICBpZiAo IWQtPmlzU2VxdWVudGlhbCgpKQorICAgICAgICAgZC0+c2VlayhzdGFydHBvcyArIEJNUF9GSUxF SERSX1NJWkUgKyBiaS5iaVNpemUpOyAvLyBnb3RvIHN0YXJ0IG9mIGNvbG9ybWFwIG9yIG1hc2tz CitAQCAtMzA4LDE5ICszMzQsMTkgQEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9keShRRGF0YVN0 cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAorICAgICAgICAg cmVkX3NoaWZ0ID0gY2FsY19zaGlmdChyZWRfbWFzayk7CisgICAgICAgICBpZiAoKChyZWRfbWFz ayA+PiByZWRfc2hpZnQpICsgMSkgPT0gMCkKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cist ICAgICAgICByZWRfc2NhbGUgPSAyNTYgLyAoKHJlZF9tYXNrID4+IHJlZF9zaGlmdCkgKyAxKTsK KysgICAgICAgIHJlZF9zY2FsZSA9IGNhbGNfc2NhbGUocmVkX21hc2sgPj4gcmVkX3NoaWZ0KTsK KyAgICAgICAgIGdyZWVuX3NoaWZ0ID0gY2FsY19zaGlmdChncmVlbl9tYXNrKTsKKyAgICAgICAg IGlmICgoKGdyZWVuX21hc2sgPj4gZ3JlZW5fc2hpZnQpICsgMSkgPT0gMCkKKyAgICAgICAgICAg ICByZXR1cm4gZmFsc2U7CistICAgICAgICBncmVlbl9zY2FsZSA9IDI1NiAvICgoZ3JlZW5fbWFz ayA+PiBncmVlbl9zaGlmdCkgKyAxKTsKKysgICAgICAgIGdyZWVuX3NjYWxlID0gY2FsY19zY2Fs ZShncmVlbl9tYXNrID4+IGdyZWVuX3NoaWZ0KTsKKyAgICAgICAgIGJsdWVfc2hpZnQgPSBjYWxj X3NoaWZ0KGJsdWVfbWFzayk7CisgICAgICAgICBpZiAoKChibHVlX21hc2sgPj4gYmx1ZV9zaGlm dCkgKyAxKSA9PSAwKQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgICAgIGJsdWVf c2NhbGUgPSAyNTYgLyAoKGJsdWVfbWFzayA+PiBibHVlX3NoaWZ0KSArIDEpOworKyAgICAgICAg Ymx1ZV9zY2FsZSA9IGNhbGNfc2NhbGUoYmx1ZV9tYXNrID4+IGJsdWVfc2hpZnQpOworICAgICAg ICAgYWxwaGFfc2hpZnQgPSBjYWxjX3NoaWZ0KGFscGhhX21hc2spOworICAgICAgICAgaWYgKCgo YWxwaGFfbWFzayA+PiBhbHBoYV9zaGlmdCkgKyAxKSA9PSAwKQorICAgICAgICAgICAgIHJldHVy biBmYWxzZTsKKy0gICAgICAgIGFscGhhX3NjYWxlID0gMjU2IC8gKChhbHBoYV9tYXNrID4+IGFs cGhhX3NoaWZ0KSArIDEpOworKyAgICAgICAgYWxwaGFfc2NhbGUgPSBjYWxjX3NjYWxlKGFscGhh X21hc2sgPj4gYWxwaGFfc2hpZnQpOworICAgICB9IGVsc2UgaWYgKGNvbXAgPT0gQk1QX1JHQiAm JiAobmJpdHMgPT0gMjQgfHwgbmJpdHMgPT0gMzIpKSB7CisgICAgICAgICBibHVlX21hc2sgPSAw eDAwMDAwMGZmOworICAgICAgICAgZ3JlZW5fbWFzayA9IDB4MDAwMGZmMDA7CitAQCAtMzI4LDE3 ICszNTQsMTUgQEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9keShRRGF0YVN0cmVhbSAmcywgY29u c3QgQk1QX0lORk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAorICAgICAgICAgYmx1ZV9zaGlmdCA9 IDA7CisgICAgICAgICBncmVlbl9zaGlmdCA9IDg7CisgICAgICAgICByZWRfc2hpZnQgPSAxNjsK Ky0gICAgICAgIGJsdWVfc2NhbGUgPSBncmVlbl9zY2FsZSA9IHJlZF9zY2FsZSA9IDE7CisrICAg ICAgICBibHVlX3NjYWxlID0gZ3JlZW5fc2NhbGUgPSByZWRfc2NhbGUgPSAwOworICAgICB9IGVs c2UgaWYgKGNvbXAgPT0gQk1QX1JHQiAmJiBuYml0cyA9PSAxNikgeworICAgICAgICAgYmx1ZV9t YXNrID0gMHgwMDFmOworICAgICAgICAgZ3JlZW5fbWFzayA9IDB4MDNlMDsKKyAgICAgICAgIHJl ZF9tYXNrID0gMHg3YzAwOworICAgICAgICAgYmx1ZV9zaGlmdCA9IDA7CistICAgICAgICBncmVl bl9zaGlmdCA9IDI7CistICAgICAgICByZWRfc2hpZnQgPSA3OworLSAgICAgICAgcmVkX3NjYWxl ID0gMTsKKy0gICAgICAgIGdyZWVuX3NjYWxlID0gMTsKKy0gICAgICAgIGJsdWVfc2NhbGUgPSA4 OworKyAgICAgICAgZ3JlZW5fc2hpZnQgPSA1OworKyAgICAgICAgcmVkX3NoaWZ0ID0gMTA7Cisr ICAgICAgICBibHVlX3NjYWxlID0gZ3JlZW5fc2NhbGUgPSByZWRfc2NhbGUgPSAzOworICAgICB9 CisgCisgI2lmIDAKK0BAIC01NDQsMTAgKzU2OCwxMCBAQCBzdGF0aWMgYm9vbCByZWFkX2RpYl9i b2R5KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAmYmksIHFpbnQ2NCBvZmZzZXQs CisgICAgICAgICAgICAgICAgICAgICBjIHw9ICoodWNoYXIqKShiKzIpPDwxNjsKKyAgICAgICAg ICAgICAgICAgaWYgKG5iaXRzID4gMjQpCisgICAgICAgICAgICAgICAgICAgICBjIHw9ICoodWNo YXIqKShiKzMpPDwyNDsKKy0gICAgICAgICAgICAgICAgKnArKyA9IHFSZ2JhKCgoYyAmIHJlZF9t YXNrKSA+PiByZWRfc2hpZnQpICogcmVkX3NjYWxlLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKGMgJiBncmVlbl9tYXNrKSA+PiBncmVlbl9zaGlmdCkgKiBncmVl bl9zY2FsZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChjICYg Ymx1ZV9tYXNrKSA+PiBibHVlX3NoaWZ0KSAqIGJsdWVfc2NhbGUsCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcCA/ICgoYyAmIGFscGhhX21hc2spID4+IGFs cGhhX3NoaWZ0KSAqIGFscGhhX3NjYWxlIDogMHhmZik7CisrICAgICAgICAgICAgICAgICpwKysg PSBxUmdiYShhcHBseV9zY2FsZSgoYyAmIHJlZF9tYXNrKSA+PiByZWRfc2hpZnQsIHJlZF9zY2Fs ZSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBseV9zY2FsZSgoYyAmIGdyZWVu X21hc2spID4+IGdyZWVuX3NoaWZ0LCBncmVlbl9zY2FsZSksCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhcHBseV9zY2FsZSgoYyAmIGJsdWVfbWFzaykgPj4gYmx1ZV9zaGlmdCwgYmx1 ZV9zY2FsZSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3AgPyBhcHBseV9z Y2FsZSgoYyAmIGFscGhhX21hc2spID4+IGFscGhhX3NoaWZ0LCBhbHBoYV9zY2FsZSkgOiAweGZm KTsKKyAgICAgICAgICAgICAgICAgYiArPSBuYml0cy84OworICAgICAgICAgICAgIH0KKyAgICAg ICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xaW1hZ2UuY3BwIGIvcXRi YXNlL3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcAoraW5kZXggNzE1MmFjMTYwNy4uMGRmNzcyNTY0 YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FpbWFnZS5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvZ3VpL2ltYWdlL3FpbWFnZS5jcHAKK0BAIC00Njk0LDYgKzQ2OTQsOCBAQCBRSW1h Z2UgUUltYWdlOjpzbW9vdGhTY2FsZWQoaW50IHcsIGludCBoKSBjb25zdCB7Cisgc3RhdGljIFFJ bWFnZSByb3RhdGVkOTAoY29uc3QgUUltYWdlICZpbWFnZSkKKyB7CisgICAgIFFJbWFnZSBvdXQo aW1hZ2UuaGVpZ2h0KCksIGltYWdlLndpZHRoKCksIGltYWdlLmZvcm1hdCgpKTsKKysgICAgaWYg KG91dC5pc051bGwoKSkKKysgICAgICAgIHJldHVybiBvdXQ7CisgICAgIGNvcHlNZXRhZGF0YSgm b3V0LCBpbWFnZSk7CisgICAgIGlmIChpbWFnZS5jb2xvckNvdW50KCkgPiAwKQorICAgICAgICAg b3V0LnNldENvbG9yVGFibGUoaW1hZ2UuY29sb3JUYWJsZSgpKTsKK0BAIC00NzIyLDYgKzQ3MjQs OCBAQCBzdGF0aWMgUUltYWdlIHJvdGF0ZWQxODAoY29uc3QgUUltYWdlICZpbWFnZSkKKyAgICAg ICAgIHJldHVybiBpbWFnZS5taXJyb3JlZCh0cnVlLCB0cnVlKTsKKyAKKyAgICAgUUltYWdlIG91 dChpbWFnZS53aWR0aCgpLCBpbWFnZS5oZWlnaHQoKSwgaW1hZ2UuZm9ybWF0KCkpOworKyAgICBp ZiAob3V0LmlzTnVsbCgpKQorKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICAgY29weU1ldGFkYXRh KCZvdXQsIGltYWdlKTsKKyAgICAgaWYgKGltYWdlLmNvbG9yQ291bnQoKSA+IDApCisgICAgICAg ICBvdXQuc2V0Q29sb3JUYWJsZShpbWFnZS5jb2xvclRhYmxlKCkpOworQEAgLTQ3MzQsNiArNDcz OCw4IEBAIHN0YXRpYyBRSW1hZ2Ugcm90YXRlZDE4MChjb25zdCBRSW1hZ2UgJmltYWdlKQorIHN0 YXRpYyBRSW1hZ2Ugcm90YXRlZDI3MChjb25zdCBRSW1hZ2UgJmltYWdlKQorIHsKKyAgICAgUUlt YWdlIG91dChpbWFnZS5oZWlnaHQoKSwgaW1hZ2Uud2lkdGgoKSwgaW1hZ2UuZm9ybWF0KCkpOwor KyAgICBpZiAob3V0LmlzTnVsbCgpKQorKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICAgY29weU1l dGFkYXRhKCZvdXQsIGltYWdlKTsKKyAgICAgaWYgKGltYWdlLmNvbG9yQ291bnQoKSA+IDApCisg ICAgICAgICBvdXQuc2V0Q29sb3JUYWJsZShpbWFnZS5jb2xvclRhYmxlKCkpOworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xY3Vyc29yLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tl cm5lbC9xY3Vyc29yLmNwcAoraW5kZXggZDZjY2FmZjhlZC4uNDU1MDg4MjQxYyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xY3Vyc29yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9n dWkva2VybmVsL3FjdXJzb3IuY3BwCitAQCAtMjUxLDcgKzI1MSw4IEBAIHZvaWQgUUN1cnNvcjo6 c2V0UG9zKFFTY3JlZW4gKnNjcmVlbiwgaW50IHgsIGludCB5KQorIHsKKyAgICAgaWYgKHNjcmVl bikgeworICAgICAgICAgaWYgKFFQbGF0Zm9ybUN1cnNvciAqY3Vyc29yID0gc2NyZWVuLT5oYW5k bGUoKS0+Y3Vyc29yKCkpIHsKKy0gICAgICAgICAgICBjb25zdCBRUG9pbnQgZGV2aWNlUG9zID0g UUhpZ2hEcGk6OnRvTmF0aXZlUGl4ZWxzKFFQb2ludCh4LCB5KSwgc2NyZWVuKTsKKysgICAgICAg ICAgICBjb25zdCBRUG9pbnQgcG9zKHgsIHkpOworKyAgICAgICAgICAgIGNvbnN0IFFQb2ludCBk ZXZpY2VQb3MgPSBRSGlnaERwaTo6dG9OYXRpdmVQaXhlbHMocG9zLCBzY3JlZW4tPnZpcnR1YWxT aWJsaW5nQXQocG9zKSk7CisgICAgICAgICAgICAgLy8gTmVlZCB0byBjaGVjaywgc2luY2Ugc29t ZSBYIHNlcnZlcnMgZ2VuZXJhdGUgbnVsbCBtb3VzZSBtb3ZlCisgICAgICAgICAgICAgLy8gZXZl bnRzLCBjYXVzaW5nIGxvb3BpbmcgaW4gYXBwbGljYXRpb25zIHdoaWNoIGNhbGwgc2V0UG9zKCkg b24KKyAgICAgICAgICAgICAvLyBldmVyeSBtb3VzZSBtb3ZlIGV2ZW50LgorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcuY3BwIGIvcXRiYXNlL3NyYy9n dWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5jcHAKK2luZGV4IDliYmYyNzczYTkuLjNhYzRhNGQ4 YjYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWhpZ2hkcGlzY2FsaW5nLmNw cAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5jcHAKK0BAIC01 ODAsOSArNTgwLDggQEAgdm9pZCBRSGlnaERwaVNjYWxpbmc6OnNldFNjcmVlbkZhY3RvcihRU2Ny ZWVuICpzY3JlZW4sIHFyZWFsIGZhY3RvcikKKyAgICAgZWxzZQorICAgICAgICAgcU5hbWVkU2Ny ZWVuU2NhbGVGYWN0b3JzKCktPmluc2VydChuYW1lLCBmYWN0b3IpOworIAorLSAgICAvLyBoYWNr IHRvIGZvcmNlIHJlLWV2YWx1YXRpb24gb2Ygc2NyZWVuIGdlb21ldHJ5CisgICAgIGlmIChzY3Jl ZW4tPmhhbmRsZSgpKQorLSAgICAgICAgc2NyZWVuLT5kX2Z1bmMoKS0+c2V0UGxhdGZvcm1TY3Jl ZW4oc2NyZWVuLT5oYW5kbGUoKSk7IC8vIHVwZGF0ZXMgZ2VvbWV0cmllcyBiYXNlZCBvbiBzY2Fs ZSBmYWN0b3IKKysgICAgICAgIHNjcmVlbi0+ZF9mdW5jKCktPnVwZGF0ZUxvZ2ljYWxEcGkoKTsK KyB9CisgCisgUVBvaW50IFFIaWdoRHBpU2NhbGluZzo6bWFwUG9zaXRpb25Ub05hdGl2ZShjb25z dCBRUG9pbnQgJnBvcywgY29uc3QgUVBsYXRmb3JtU2NyZWVuICpwbGF0Zm9ybVNjcmVlbikKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlLmNwcCBiL3F0YmFz ZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3BwCitpbmRleCBhNzViOGVmOTIwLi40ZjJk Mjk0NzM5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS5j cHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3BwCitAQCAtNzAx LDYgKzcwMSwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKKyAgICAgeyBRdDo6S2V5X1RvdWNo cGFkVG9nZ2xlLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJUb3VjaHBhZCBUb2dn bGUiKSB9LAorICAgICB7IFF0OjpLZXlfVG91Y2hwYWRPbiwgIFFUX1RSQU5TTEFURV9OT09QKCJR U2hvcnRjdXQiLCAiVG91Y2hwYWQgT24iKSB9LAorICAgICB7IFF0OjpLZXlfVG91Y2hwYWRPZmYs ICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlRvdWNocGFkIE9mZiIpIH0sCisrICAg IHsgUXQ6OktleV9TaGlmdCwgIFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiU2hpZnQi KSB9LAorKyAgICB7IFF0OjpLZXlfQ29udHJvbCwgIFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRj dXQiLCAiQ29udHJvbCIpIH0sCisrICAgIHsgUXQ6OktleV9BbHQsICBRVF9UUkFOU0xBVEVfTk9P UCgiUVNob3J0Y3V0IiwgIkFsdCIpIH0sCisrICAgIHsgUXQ6OktleV9NZXRhLCAgUVRfVFJBTlNM QVRFX05PT1AoIlFTaG9ydGN1dCIsICJNZXRhIikgfSwKKyAKKyB9OworIHN0YXRpYyBRX0NPTlNU RVhQUiBpbnQgbnVtS2V5TmFtZXMgPSBzaXplb2Yga2V5bmFtZSAvIHNpemVvZiAqa2V5bmFtZTsK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuY3Bw IGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmNwcAoraW5kZXggZmRj NmE2YzRhYS4uYWM0N2Y5OGM1ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9x cGxhdGZvcm1zZXJ2aWNlcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZv cm1zZXJ2aWNlcy5jcHAKK0BAIC01NSw2ICs1NSwxOSBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAg ICAgXGJyaWVmIFRoZSBRUGxhdGZvcm1TZXJ2aWNlcyBwcm92aWRlcyB0aGUgYmFja2VuZCBmb3Ig ZGVza3RvcC1yZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCisgKi8KKyAKKysvKiEKKysgICAgXGVudW0g UVBsYXRmb3JtU2VydmljZXM6OkNhcGFiaWxpdHkKKysKKysgICAgQ2FwYWJpbGl0aWVzIGFyZSB1 c2VkIHRvIGRldGVybWluZSBhIHNwZWNpZmljIHBsYXRmb3JtIHNlcnZpY2UncyBhdmFpbGFiaWxp dHkuCisrCisrICAgIFx2YWx1ZSBDb2xvclBpY2tpbmdGcm9tU2NyZWVuIFRoZSBwbGF0Zm9ybSBu YXRpdmVseSBzdXBwb3J0cyBjb2xvciBwaWNraW5nIGZyb20gc2NyZWVuLgorKyAgICBUaGlzIGNh cGFiaWxpdHkgaW5kaWNhdGVzIHRoYXQgdGhlIHBsYXRmb3JtIHN1cHBvcnRzICJvcGFxdWUiIGNv bG9yIHBpY2tpbmcsIHdoZXJlIHRoZQorKyAgICBwbGF0Zm9ybSBpbXBsZW1lbnRzIGEgY29tcGxl dGUgdXNlciBleHBlcmllbmNlIGZvciBjb2xvciBwaWNraW5nIGFuZCBvdXRwdXRzIGEgY29sb3Iu CisrICAgIFRoaXMgaXMgaW4gY29udHJhc3QgdG8gdGhlIGFwcGxpY2F0aW9uIGltcGxlbWVudGlu ZyB0aGUgY29sb3IgcGlja2luZyB1c2VyIGV4cGVyaWVuY2UKKysgICAgKHRha2luZyBjYXJlIG9m IHNob3dpbmcgYSBjcm9zcyBoYWlyLCBpbnN0cnVjdGluZyB0aGUgcGxhdGZvcm0gaW50ZWdyYXRp b24gdG8gb2J0YWluCisrICAgIHRoZSBjb2xvciBhdCBhIGdpdmVuIHBpeGVsLCBldGMuKS4gVGhl IHJlbGF0ZWQgc2VydmljZSBmdW5jdGlvbiBpcyBwaWNrQ29sb3IoKS4KKysgKi8KKysKKyBRUGxh dGZvcm1TZXJ2aWNlczo6UVBsYXRmb3JtU2VydmljZXMoKQorIHsgfQorIAorQEAgLTg1LDUgKzk4 LDE2IEBAIFFCeXRlQXJyYXkgUVBsYXRmb3JtU2VydmljZXM6OmRlc2t0b3BFbnZpcm9ubWVudCgp IGNvbnN0CisgICAgIHJldHVybiBRQnl0ZUFycmF5KCJVTktOT1dOIik7CisgfQorIAorK1FQbGF0 Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqUVBsYXRmb3JtU2VydmljZXM6OmNvbG9yUGlja2VyKFFX aW5kb3cgKnBhcmVudCkKKyt7CisrICAgIFFfVU5VU0VEKHBhcmVudCk7CisrICAgIHJldHVybiBu dWxscHRyOworK30KKysKKytib29sIFFQbGF0Zm9ybVNlcnZpY2VzOjpoYXNDYXBhYmlsaXR5KENh cGFiaWxpdHkgY2FwYWJpbGl0eSkgY29uc3QKKyt7CisrICAgIFFfVU5VU0VEKGNhcGFiaWxpdHkp CisrICAgIHJldHVybiBmYWxzZTsKKyt9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5oIGIvcXRiYXNlL3Ny Yy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmgKK2luZGV4IDVkZTk2Y2ZhN2QuLmE4YjJh NGNlNzEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2Vydmlj ZXMuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmgKK0BA IC01MCwxNiArNTAsMzIgQEAKKyAvLworIAorICNpbmNsdWRlIDxRdEd1aS9xdGd1aWdsb2JhbC5o PgorKyNpbmNsdWRlIDxRdENvcmUvcW9iamVjdC5oPgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQor IAorIGNsYXNzIFFVcmw7CisrY2xhc3MgUVdpbmRvdzsKKysKKytjbGFzcyBRX0dVSV9FWFBPUlQg UVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyIDogcHVibGljIFFPYmplY3QKKyt7CisrICAgIFFf T0JKRUNUCisrcHVibGljOgorKyAgICB1c2luZyBRT2JqZWN0OjpRT2JqZWN0OworKyAgICB2aXJ0 dWFsIHZvaWQgcGlja0NvbG9yKCkgPSAwOworK1FfU0lHTkFMUzoKKysgICAgdm9pZCBjb2xvclBp Y2tlZChjb25zdCBRQ29sb3IgJmNvbG9yKTsKKyt9OworIAorIGNsYXNzIFFfR1VJX0VYUE9SVCBR UGxhdGZvcm1TZXJ2aWNlcworIHsKKyBwdWJsaWM6CisgICAgIFFfRElTQUJMRV9DT1BZX01PVkUo UVBsYXRmb3JtU2VydmljZXMpCisgCisrICAgIGVudW0gQ2FwYWJpbGl0eSB7CisrICAgICAgICBD b2xvclBpY2tpbmcsCisrICAgIH07CisrCisgICAgIFFQbGF0Zm9ybVNlcnZpY2VzKCk7CisgICAg IHZpcnR1YWwgflFQbGF0Zm9ybVNlcnZpY2VzKCkgeyB9CisgCitAQCAtNjcsNiArODMsMTAgQEAg cHVibGljOgorICAgICB2aXJ0dWFsIGJvb2wgb3BlbkRvY3VtZW50KGNvbnN0IFFVcmwgJnVybCk7 CisgCisgICAgIHZpcnR1YWwgUUJ5dGVBcnJheSBkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdDsK KysKKysgICAgdmlydHVhbCBib29sIGhhc0NhcGFiaWxpdHkoQ2FwYWJpbGl0eSBjYXBhYmlsaXR5 KSBjb25zdDsKKysKKysgICAgdmlydHVhbCBRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgKmNv bG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCA9IG51bGxwdHIpOworIH07CisgCisgUVRfRU5EX05B TUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVt ZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuY3BwCitpbmRleCA3 MTUyMWMwMzM5Li4yMzI1ODczMjQ1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVs L3FwbGF0Zm9ybXRoZW1lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9y bXRoZW1lLmNwcAorQEAgLTE2Myw2ICsxNjMsOCBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyAg ICAgXHZhbHVlIFNob3dTaG9ydGN1dHNJbkNvbnRleHRNZW51cyAoYm9vbCkgV2hldGhlciB0byBk aXNwbGF5IHNob3J0Y3V0IGtleSBzZXF1ZW5jZXMgaW4gY29udGV4dCBtZW51cy4KKyAKKysgICAg XHZhbHVlIEJ1dHRvblByZXNzS2V5cyAoUUxpc3Q8UXQ6OktleT4pIEEgbGlzdCBvZiBrZXlzIHRo YXQgY2FuIGJlIHVzZWQgdG8gcHJlc3MgYnV0dG9ucyB2aWEga2V5Ym9hcmQgaW5wdXQuCisrCisg ICAgIFxzYSB0aGVtZUhpbnQoKSwgUVN0eWxlOjpwaXhlbE1ldHJpYygpCisgKi8KKyAKK0BAIC01 NjMsNiArNTY1LDggQEAgUVZhcmlhbnQgUVBsYXRmb3JtVGhlbWU6OmRlZmF1bHRUaGVtZUhpbnQo VGhlbWVIaW50IGhpbnQpCisgICAgICAgICB9CisgICAgIGNhc2UgTW91c2VRdWlja1NlbGVjdGlv blRocmVzaG9sZDoKKyAgICAgICAgIHJldHVybiBRVmFyaWFudCgxMCk7CisrICAgIGNhc2UgQnV0 dG9uUHJlc3NLZXlzOgorKyAgICAgICAgcmV0dXJuIFFWYXJpYW50Ojpmcm9tVmFsdWUoUUxpc3Q8 UXQ6OktleT4oeyBRdDo6S2V5X1NwYWNlLCBRdDo6S2V5X1NlbGVjdCB9KSk7CisgICAgIH0KKyAg ICAgcmV0dXJuIFFWYXJpYW50KCk7CisgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tl cm5lbC9xcGxhdGZvcm10aGVtZS5oIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRo ZW1lLmgKK2luZGV4IDMxODVmYzQ1NDEuLjdlNmM5ZDU3NDAgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2Vy bmVsL3FwbGF0Zm9ybXRoZW1lLmgKK0BAIC0xMjAsNyArMTIwLDggQEAgcHVibGljOgorICAgICAg ICAgVG91Y2hEb3VibGVUYXBEaXN0YW5jZSwKKyAgICAgICAgIFNob3dTaG9ydGN1dHNJbkNvbnRl eHRNZW51cywKKyAgICAgICAgIEljb25GYWxsYmFja1NlYXJjaFBhdGhzLAorLSAgICAgICAgTW91 c2VRdWlja1NlbGVjdGlvblRocmVzaG9sZAorKyAgICAgICAgTW91c2VRdWlja1NlbGVjdGlvblRo cmVzaG9sZCwKKysgICAgICAgIEJ1dHRvblByZXNzS2V5cworICAgICB9OworIAorICAgICBlbnVt IERpYWxvZ1R5cGUgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVu LmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuLmNwcAoraW5kZXggOGUwZWIzNTEx Ni4uNWQxNzJhNThkZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVu LmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW4uY3BwCitAQCAtNzcsNiAr NzcsMTIgQEAgUVNjcmVlbjo6UVNjcmVlbihRUGxhdGZvcm1TY3JlZW4gKnNjcmVlbikKKyAgICAg ZC0+c2V0UGxhdGZvcm1TY3JlZW4oc2NyZWVuKTsKKyB9CisgCisrdm9pZCBRU2NyZWVuUHJpdmF0 ZTo6dXBkYXRlTG9naWNhbERwaSgpCisreworKyAgICBsb2dpY2FsRHBpID0gUVBsYXRmb3JtU2Ny ZWVuOjpvdmVycmlkZURwaShwbGF0Zm9ybVNjcmVlbi0+bG9naWNhbERwaSgpKTsKKysgICAgdXBk YXRlR2VvbWV0cmllc1dpdGhTaWduYWxzKCk7IC8vIHVwZGF0ZXMgZ2VvbWV0cmllcyBiYXNlZCBv biBzY2FsZSBmYWN0b3IKKyt9CisrCisgdm9pZCBRU2NyZWVuUHJpdmF0ZTo6dXBkYXRlR2VvbWV0 cmllc1dpdGhTaWduYWxzKCkKKyB7CisgICAgIGNvbnN0IFFSZWN0IG9sZEdlb21ldHJ5ID0gZ2Vv bWV0cnk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW5fcC5oIGIv cXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW5fcC5oCitpbmRleCA3ZGE1NDJjMjVlLi5lNTBm YzMxOTBiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW5fcC5oCisr KysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmgKK0BAIC03MCw2ICs3MCw3IEBA IHB1YmxpYzoKKyAgICAgICAgIGdlb21ldHJ5ID0gcGxhdGZvcm1TY3JlZW4tPmRldmljZUluZGVw ZW5kZW50R2VvbWV0cnkoKTsKKyAgICAgICAgIGF2YWlsYWJsZUdlb21ldHJ5ID0gUUhpZ2hEcGk6 OmZyb21OYXRpdmUocGxhdGZvcm1TY3JlZW4tPmF2YWlsYWJsZUdlb21ldHJ5KCksIFFIaWdoRHBp U2NhbGluZzo6ZmFjdG9yKHBsYXRmb3JtU2NyZWVuKSwgZ2VvbWV0cnkudG9wTGVmdCgpKTsKKyAg ICAgfQorKyAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxEcGkoKTsKKyAKKyAgICAgdm9pZCB1cGRhdGVQ cmltYXJ5T3JpZW50YXRpb24oKTsKKyAgICAgdm9pZCB1cGRhdGVHZW9tZXRyaWVzV2l0aFNpZ25h bHMoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxlbmRmdW5jdGlv bnNfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWJsZW5kZnVuY3Rpb25zX3AuaAoraW5k ZXggMDgwZGE5OGVjNC4uNjk5N2Q2MmIzYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3Bh aW50aW5nL3FibGVuZGZ1bmN0aW9uc19wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5n L3FibGVuZGZ1bmN0aW9uc19wLmgKK0BAIC0yNDYsMjUgKzI0NiwzMiBAQCB2b2lkIHF0X3RyYW5z Zm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBsLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZHVkeCwgaW50IGR2ZHgsIGludCBkdWR5 LCBpbnQgZHZkeSwgaW50IHUwLCBpbnQgdjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEJsZW5kZXIgYmxlbmRlcikKKyB7CistICAgIGludCBmcm9tWSA9IHFNYXgocVJvdW5k KHRvcFkpLCBjbGlwLnRvcCgpKTsKKy0gICAgaW50IHRvWSA9IHFNaW4ocVJvdW5kKGJvdHRvbVkp LCBjbGlwLnRvcCgpICsgY2xpcC5oZWlnaHQoKSk7CisrICAgIHFpbnQ2NCBmcm9tWSA9IHFNYXgo cVJvdW5kKHRvcFkpLCBjbGlwLnRvcCgpKTsKKysgICAgcWludDY0IHRvWSA9IHFNaW4ocVJvdW5k KGJvdHRvbVkpLCBjbGlwLnRvcCgpICsgY2xpcC5oZWlnaHQoKSk7CisgICAgIGlmIChmcm9tWSA+ PSB0b1kpCisgICAgICAgICByZXR1cm47CisgCisgICAgIHFyZWFsIGxlZnRTbG9wZSA9IChib3R0 b21MZWZ0LnggLSB0b3BMZWZ0LngpIC8gKGJvdHRvbUxlZnQueSAtIHRvcExlZnQueSk7CisgICAg IHFyZWFsIHJpZ2h0U2xvcGUgPSAoYm90dG9tUmlnaHQueCAtIHRvcFJpZ2h0LngpIC8gKGJvdHRv bVJpZ2h0LnkgLSB0b3BSaWdodC55KTsKKy0gICAgaW50IGR4X2wgPSBpbnQobGVmdFNsb3BlICog MHgxMDAwMCk7CistICAgIGludCBkeF9yID0gaW50KHJpZ2h0U2xvcGUgKiAweDEwMDAwKTsKKy0g ICAgaW50IHhfbCA9IGludCgodG9wTGVmdC54ICsgKHFyZWFsKDAuNSkgKyBmcm9tWSAtIHRvcExl ZnQueSkgKiBsZWZ0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4MTAwMDApOworLSAgICBpbnQgeF9y ID0gaW50KCh0b3BSaWdodC54ICsgKHFyZWFsKDAuNSkgKyBmcm9tWSAtIHRvcFJpZ2h0LnkpICog cmlnaHRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgxMDAwMCk7CistCistICAgIGludCBmcm9tWCwg dG9YLCB4MSwgeDIsIHUsIHYsIGksIGlpOworKyAgICBxaW50NjQgZHhfbCA9IHFpbnQ2NChsZWZ0 U2xvcGUgKiAweDEwMDAwKTsKKysgICAgcWludDY0IGR4X3IgPSBxaW50NjQocmlnaHRTbG9wZSAq IDB4MTAwMDApOworKyAgICBxaW50NjQgeF9sID0gcWludDY0KCh0b3BMZWZ0LnggKyAocXJlYWwo MC41KSArIGZyb21ZIC0gdG9wTGVmdC55KSAqIGxlZnRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgx MDAwMCk7CisrICAgIHFpbnQ2NCB4X3IgPSBxaW50NjQoKHRvcFJpZ2h0LnggKyAocXJlYWwoMC41 KSArIGZyb21ZIC0gdG9wUmlnaHQueSkgKiByaWdodFNsb3BlICsgcXJlYWwoMC41KSkgKiAweDEw MDAwKTsKKysKKysgICAgcWludDY0IHNvdXJjZVJlY3RUb3AgPSBxaW50NjQoc291cmNlUmVjdC50 b3AoKSk7CisrICAgIHFpbnQ2NCBzb3VyY2VSZWN0TGVmdCA9IHFpbnQ2NChzb3VyY2VSZWN0Lmxl ZnQoKSk7CisrICAgIHFpbnQ2NCBzb3VyY2VSZWN0V2lkdGggPSBxaW50NjQoc291cmNlUmVjdC53 aWR0aCgpKTsKKysgICAgcWludDY0IHNvdXJjZVJlY3RIZWlnaHQgPSBxaW50NjQoc291cmNlUmVj dC5oZWlnaHQoKSk7CisrICAgIHFpbnQ2NCBjbGlwTGVmdCA9IHFpbnQ2NChjbGlwLmxlZnQoKSk7 CisrICAgIHFpbnQ2NCBjbGlwV2lkdGggPSBxaW50NjQoY2xpcC53aWR0aCgpKTsKKysKKysgICAg cWludDY0IGZyb21YLCB0b1gsIHgxLCB4MiwgdSwgdiwgaSwgaWk7CisgICAgIERlc3RUICpsaW5l OworLSAgICBmb3IgKGludCB5ID0gZnJvbVk7IHkgPCB0b1k7ICsreSkgeworKyAgICBmb3IgKHFp bnQ2NCB5ID0gZnJvbVk7IHkgPCB0b1k7ICsreSkgeworICAgICAgICAgbGluZSA9IHJlaW50ZXJw cmV0X2Nhc3Q8RGVzdFQgKj4ocmVpbnRlcnByZXRfY2FzdDx1Y2hhciAqPihkZXN0UGl4ZWxzKSAr IHkgKiBkYnBsKTsKKyAKKy0gICAgICAgIGZyb21YID0gcU1heCh4X2wgPj4gMTYsIGNsaXAubGVm dCgpKTsKKy0gICAgICAgIHRvWCA9IHFNaW4oeF9yID4+IDE2LCBjbGlwLmxlZnQoKSArIGNsaXAu d2lkdGgoKSk7CisrICAgICAgICBmcm9tWCA9IHFNYXgoeF9sID4+IDE2LCBjbGlwTGVmdCk7Cisr ICAgICAgICB0b1ggPSBxTWluKHhfciA+PiAxNiwgY2xpcExlZnQgKyBjbGlwV2lkdGgpOworICAg ICAgICAgaWYgKGZyb21YIDwgdG9YKSB7CisgICAgICAgICAgICAgLy8gQmVjYXVzZSBvZiByb3Vu ZGluZywgd2UgY2FuIGdldCBzb3VyY2UgY29vcmRpbmF0ZXMgb3V0c2lkZSB0aGUgc291cmNlIGlt YWdlLgorICAgICAgICAgICAgIC8vIENsYW1wIHRoZXNlIGNvb3JkaW5hdGVzIHRvIHRoZSBzb3Vy Y2UgcmVjdCB0byBhdm9pZCBzZWdtZW50YXRpb24gZmF1bHQgYW5kCitAQCAtMjc1LDEwICsyODIs MTAgQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1hZ2VfcmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxz LCBpbnQgZGJwbCwKKyAgICAgICAgICAgICB1ID0geDEgKiBkdWR4ICsgeSAqIGR1ZHkgKyB1MDsK KyAgICAgICAgICAgICB2ID0geDEgKiBkdmR4ICsgeSAqIGR2ZHkgKyB2MDsKKyAgICAgICAgICAg ICBmb3IgKDsgeDEgPCB0b1g7ICsreDEpIHsKKy0gICAgICAgICAgICAgICAgaW50IHV1ID0gdSA+ PiAxNjsKKy0gICAgICAgICAgICAgICAgaW50IHZ2ID0gdiA+PiAxNjsKKy0gICAgICAgICAgICAg ICAgaWYgKHV1ID49IHNvdXJjZVJlY3QubGVmdCgpICYmIHV1IDwgc291cmNlUmVjdC5sZWZ0KCkg KyBzb3VyY2VSZWN0LndpZHRoKCkKKy0gICAgICAgICAgICAgICAgICAgICYmIHZ2ID49IHNvdXJj ZVJlY3QudG9wKCkgJiYgdnYgPCBzb3VyY2VSZWN0LnRvcCgpICsgc291cmNlUmVjdC5oZWlnaHQo KSkgeworKyAgICAgICAgICAgICAgICBxaW50NjQgdXUgPSB1ID4+IDE2OworKyAgICAgICAgICAg ICAgICBxaW50NjQgdnYgPSB2ID4+IDE2OworKyAgICAgICAgICAgICAgICBpZiAodXUgPj0gc291 cmNlUmVjdExlZnQgJiYgdXUgPCBzb3VyY2VSZWN0TGVmdCArIHNvdXJjZVJlY3RXaWR0aAorKyAg ICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNlUmVjdFRvcCAmJiB2diA8IHNvdXJjZVJl Y3RUb3AgKyBzb3VyY2VSZWN0SGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB1ICs9IGR1ZHg7CitAQCAtMjkw LDEwICsyOTcsMTAgQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1hZ2VfcmFzdGVyaXplKERlc3RUICpk ZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAgICB1ID0gKHgyIC0gMSkgKiBkdWR4ICsg eSAqIGR1ZHkgKyB1MDsKKyAgICAgICAgICAgICB2ID0gKHgyIC0gMSkgKiBkdmR4ICsgeSAqIGR2 ZHkgKyB2MDsKKyAgICAgICAgICAgICBmb3IgKDsgeDIgPiB4MTsgLS14MikgeworLSAgICAgICAg ICAgICAgICBpbnQgdXUgPSB1ID4+IDE2OworLSAgICAgICAgICAgICAgICBpbnQgdnYgPSB2ID4+ IDE2OworLSAgICAgICAgICAgICAgICBpZiAodXUgPj0gc291cmNlUmVjdC5sZWZ0KCkgJiYgdXUg PCBzb3VyY2VSZWN0LmxlZnQoKSArIHNvdXJjZVJlY3Qud2lkdGgoKQorLSAgICAgICAgICAgICAg ICAgICAgJiYgdnYgPj0gc291cmNlUmVjdC50b3AoKSAmJiB2diA8IHNvdXJjZVJlY3QudG9wKCkg KyBzb3VyY2VSZWN0LmhlaWdodCgpKSB7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB1dSA9IHUg Pj4gMTY7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB2diA9IHYgPj4gMTY7CisrICAgICAgICAg ICAgICAgIGlmICh1dSA+PSBzb3VyY2VSZWN0TGVmdCAmJiB1dSA8IHNvdXJjZVJlY3RMZWZ0ICsg c291cmNlUmVjdFdpZHRoCisrICAgICAgICAgICAgICAgICAgICAmJiB2diA+PSBzb3VyY2VSZWN0 VG9wICYmIHZ2IDwgc291cmNlUmVjdFRvcCArIHNvdXJjZVJlY3RIZWlnaHQpIHsKKyAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg IHUgLT0gZHVkeDsKK0BAIC0zMDgsOCArMzE1LDggQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1hZ2Vf cmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAgICAvLyBC ZWdpbm5pbmcgb2YgdGhlIHNjYW4gbGluZSwgd2l0aCBwZXItcGl4ZWwgY2hlY2tzLgorICAgICAg ICAgICAgIGkgPSB4MSAtIGZyb21YOworICAgICAgICAgICAgIHdoaWxlIChpKSB7CistICAgICAg ICAgICAgICAgIGludCB1dSA9IHFCb3VuZChzb3VyY2VSZWN0LmxlZnQoKSwgdSA+PiAxNiwgc291 cmNlUmVjdC5sZWZ0KCkgKyBzb3VyY2VSZWN0LndpZHRoKCkgLSAxKTsKKy0gICAgICAgICAgICAg ICAgaW50IHZ2ID0gcUJvdW5kKHNvdXJjZVJlY3QudG9wKCksIHYgPj4gMTYsIHNvdXJjZVJlY3Qu dG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdodCgpIC0gMSk7CisrICAgICAgICAgICAgICAgIHFpbnQ2 NCB1dSA9IHFCb3VuZChzb3VyY2VSZWN0TGVmdCwgdSA+PiAxNiwgc291cmNlUmVjdExlZnQgKyBz b3VyY2VSZWN0V2lkdGggLSAxKTsKKysgICAgICAgICAgICAgICAgcWludDY0IHZ2ID0gcUJvdW5k KHNvdXJjZVJlY3RUb3AsIHYgPj4gMTYsIHNvdXJjZVJlY3RUb3AgKyBzb3VyY2VSZWN0SGVpZ2h0 IC0gMSk7CisgICAgICAgICAgICAgICAgIGJsZW5kZXIud3JpdGUobGluZSwgcmVpbnRlcnByZXRf Y2FzdDxjb25zdCBTcmNUICo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWNoYXIgKj4oc3JjUGl4 ZWxzKSArIHZ2ICogc2JwbClbdXVdKTsKKyAgICAgICAgICAgICAgICAgdSArPSBkdWR4OworICAg ICAgICAgICAgICAgICB2ICs9IGR2ZHg7CitAQCAtMzQ4LDggKzM1NSw4IEBAIHZvaWQgcXRfdHJh bnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisgICAg ICAgICAgICAgLy8gRW5kIG9mIHRoZSBzY2FuIGxpbmUsIHdpdGggcGVyLXBpeGVsIGNoZWNrcy4K KyAgICAgICAgICAgICBpID0gdG9YIC0geDI7CisgICAgICAgICAgICAgd2hpbGUgKGkpIHsKKy0g ICAgICAgICAgICAgICAgaW50IHV1ID0gcUJvdW5kKHNvdXJjZVJlY3QubGVmdCgpLCB1ID4+IDE2 LCBzb3VyY2VSZWN0LmxlZnQoKSArIHNvdXJjZVJlY3Qud2lkdGgoKSAtIDEpOworLSAgICAgICAg ICAgICAgICBpbnQgdnYgPSBxQm91bmQoc291cmNlUmVjdC50b3AoKSwgdiA+PiAxNiwgc291cmNl UmVjdC50b3AoKSArIHNvdXJjZVJlY3QuaGVpZ2h0KCkgLSAxKTsKKysgICAgICAgICAgICAgICAg cWludDY0IHV1ID0gcUJvdW5kKHNvdXJjZVJlY3RMZWZ0LCB1ID4+IDE2LCBzb3VyY2VSZWN0TGVm dCArIHNvdXJjZVJlY3RXaWR0aCAtIDEpOworKyAgICAgICAgICAgICAgICBxaW50NjQgdnYgPSBx Qm91bmQoc291cmNlUmVjdFRvcCwgdiA+PiAxNiwgc291cmNlUmVjdFRvcCArIHNvdXJjZVJlY3RI ZWlnaHQgLSAxKTsKKyAgICAgICAgICAgICAgICAgYmxlbmRlci53cml0ZShsaW5lLCByZWludGVy cHJldF9jYXN0PGNvbnN0IFNyY1QgKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1Y2hhciAqPihz cmNQaXhlbHMpICsgdnYgKiBzYnBsKVt1dV0pOworICAgICAgICAgICAgICAgICB1ICs9IGR1ZHg7 CisgICAgICAgICAgICAgICAgIHYgKz0gZHZkeDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1 aS9wYWludGluZy9xY29sb3J0cmNsdXRfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWNv bG9ydHJjbHV0X3AuaAoraW5kZXggNzZhNmE2MDgwMy4uMjRmZDUyMmU2YyAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fjb2xvcnRyY2x1dF9wLmgKKysrKyBiL3F0YmFzZS9z cmMvZ3VpL3BhaW50aW5nL3Fjb2xvcnRyY2x1dF9wLmgKK0BAIC0xMTgsNiArMTE4LDcgQEAgcHVi bGljOgorICAgICAgICAgcmV0dXJuIFFSZ2JhNjQ6OmZyb21SZ2JhNjQociwgZywgYiwgcUFscGhh KHJnYjMyKSAqIDI1Nyk7CisgI2VuZGlmCisgICAgIH0KKysgICAgUVJnYmE2NCB0b0xpbmVhcjY0 KFFSZ2JhNjQpIGNvbnN0ID0gZGVsZXRlOworIAorICAgICBRUmdiIHRvTGluZWFyKFFSZ2Igcmdi MzIpIGNvbnN0CisgICAgIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9x ZHJhd2hlbHBlci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xZHJhd2hlbHBlci5jcHAK K2luZGV4IGE2MTc5MzUwOGEuLjViYTJkMjc3YjcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1 aS9wYWludGluZy9xZHJhd2hlbHBlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5n L3FkcmF3aGVscGVyLmNwcAorQEAgLTYwOTEsNyArNjA5MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBhbHBoYXJnYmJsZW5kX2FyZ2IzMihxdWludDMyICpkc3QsIHVpbnQgY292ZXJhZ2UsIGNvbnN0 IFFSZ2JhCisgc3RhdGljIGlubGluZSB2b2lkIHJnYkJsZW5kUGl4ZWwoUVJnYmE2NCAmZHN0LCBp bnQgY292ZXJhZ2UsIFFSZ2JhNjQgc2xpbmVhciwgY29uc3QgUUNvbG9yVHJjTHV0ICpjb2xvclBy b2ZpbGUpCisgeworICAgICAvLyBEbyBhIGdhbW1hY29ycmVjdGVkIFJHQiBhbHBoYWJsZW5kLi4u CistICAgIGNvbnN0IFFSZ2JhNjQgZGxpbmVhciA9IGNvbG9yUHJvZmlsZSA/IGNvbG9yUHJvZmls ZS0+dG9MaW5lYXI2NChkc3QpIDogZHN0OworKyAgICBjb25zdCBRUmdiYTY0IGRsaW5lYXIgPSBj b2xvclByb2ZpbGUgPyBjb2xvclByb2ZpbGUtPnRvTGluZWFyKGRzdCkgOiBkc3Q7CisgCisgICAg IFFSZ2JhNjQgYmxlbmQgPSByZ2JCbGVuZChkbGluZWFyLCBzbGluZWFyLCBjb3ZlcmFnZSk7Cisg CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rl ci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyLmNwcAor aW5kZXggMjgzOTIzZGU1Mi4uZjA4ZWI5Y2JlZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9w YWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyLmNwcAorQEAgLTU2MCwzMSArNTYwLDYgQEAgdm9p ZCBRUmFzdGVyUGFpbnRFbmdpbmU6OnVwZGF0ZU1hdHJpeChjb25zdCBRVHJhbnNmb3JtICZtYXRy aXgpCisgICAgIFFSYXN0ZXJQYWludEVuZ2luZVN0YXRlICpzID0gc3RhdGUoKTsKKyAgICAgLy8g RkFMQ09OOiBnZXQgcmlkIG9mIHRoaXMgbGluZSwgc2VlIGRyYXdJbWFnZSBjYWxsIGJlbG93Lgor ICAgICBzLT5tYXRyaXggPSBtYXRyaXg7CistICAgIFFUcmFuc2Zvcm06OlRyYW5zZm9ybWF0aW9u VHlwZSB0eG9wID0gcy0+bWF0cml4LnR5cGUoKTsKKy0KKy0gICAgc3dpdGNoICh0eG9wKSB7Cist CistICAgIGNhc2UgUVRyYW5zZm9ybTo6VHhOb25lOgorLSAgICAgICAgcy0+ZmxhZ3MuaW50X3hm b3JtID0gdHJ1ZTsKKy0gICAgICAgIGJyZWFrOworLQorLSAgICBjYXNlIFFUcmFuc2Zvcm06OlR4 VHJhbnNsYXRlOgorLSAgICAgICAgcy0+ZmxhZ3MuaW50X3hmb3JtID0gcXJlYWwoaW50KHMtPm1h dHJpeC5keCgpKSkgPT0gcy0+bWF0cml4LmR4KCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgJiYgcXJlYWwoaW50KHMtPm1hdHJpeC5keSgpKSkgPT0gcy0+bWF0cml4LmR5KCk7CistICAg ICAgICBicmVhazsKKy0KKy0gICAgY2FzZSBRVHJhbnNmb3JtOjpUeFNjYWxlOgorLSAgICAgICAg cy0+ZmxhZ3MuaW50X3hmb3JtID0gcXJlYWwoaW50KHMtPm1hdHJpeC5keCgpKSkgPT0gcy0+bWF0 cml4LmR4KCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcXJlYWwoaW50KHMtPm1h dHJpeC5keSgpKSkgPT0gcy0+bWF0cml4LmR5KCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgJiYgcXJlYWwoaW50KHMtPm1hdHJpeC5tMTEoKSkpID09IHMtPm1hdHJpeC5tMTEoKQorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBxcmVhbChpbnQocy0+bWF0cml4Lm0yMigpKSkg PT0gcy0+bWF0cml4Lm0yMigpOworLSAgICAgICAgYnJlYWs7CistCistICAgIGRlZmF1bHQ6IC8v IHNoZWFyIC8gcGVyc3BlY3RpdmUuLi4KKy0gICAgICAgIHMtPmZsYWdzLmludF94Zm9ybSA9IGZh bHNlOworLSAgICAgICAgYnJlYWs7CistICAgIH0KKy0KKyAgICAgcy0+ZmxhZ3MudHhfbm9zaGVh ciA9IHF0X3NjYWxlRm9yVHJhbnNmb3JtKHMtPm1hdHJpeCwgJnMtPnR4c2NhbGUpOworIAorICAg ICBlbnN1cmVPdXRsaW5lTWFwcGVyKCk7CitAQCAtNjE3LDcgKzU5Miw2IEBAIFFSYXN0ZXJQYWlu dEVuZ2luZVN0YXRlOjpRUmFzdGVyUGFpbnRFbmdpbmVTdGF0ZSgpCisgICAgIGZsYWdzLmJpbGlu ZWFyID0gZmFsc2U7CisgICAgIGZsYWdzLmxlZ2FjeV9yb3VuZGluZyA9IGZhbHNlOworICAgICBm bGFncy5mYXN0X3RleHQgPSB0cnVlOworLSAgICBmbGFncy5pbnRfeGZvcm0gPSB0cnVlOworICAg ICBmbGFncy50eF9ub3NoZWFyID0gdHJ1ZTsKKyAgICAgZmxhZ3MuZmFzdF9pbWFnZXMgPSB0cnVl OworIAorQEAgLTE3OTMsNyArMTc2Nyw3IEBAIHZvaWQgUVJhc3RlclBhaW50RW5naW5lOjpmaWxs KGNvbnN0IFFWZWN0b3JQYXRoICZwYXRoLCBjb25zdCBRQnJ1c2ggJmJydXNoKQorICAgICBRUmVj dEYgY3BSZWN0ID0gcGF0aC5jb250cm9sUG9pbnRSZWN0KCk7CisgICAgIGNvbnN0IFFSZWN0RiBw YXRoRGV2aWNlUmVjdCA9IHMtPm1hdHJpeC5tYXBSZWN0KGNwUmVjdCk7CisgICAgIC8vIFNraXAg cGF0aHMgdGhhdCBieSBjb25zZXJ2YXRpdmUgZXN0aW1hdGVzIGFyZSBjb21wbGV0ZWx5IG91dHNp ZGUgdGhlIHBhaW50IGRldmljZS4KKy0gICAgaWYgKCFwYXRoRGV2aWNlUmVjdC5pbnRlcnNlY3Rz KFFSZWN0RihkLT5kZXZpY2VSZWN0KSkpCisrICAgIGlmICghcGF0aERldmljZVJlY3QuaW50ZXJz ZWN0cyhRUmVjdEYoZC0+ZGV2aWNlUmVjdCkpIHx8ICFwYXRoRGV2aWNlUmVjdC5pc1ZhbGlkKCkp CisgICAgICAgICByZXR1cm47CisgCisgICAgIFByb2Nlc3NTcGFucyBibGVuZCA9IGQtPmdldEJy dXNoRnVuYyhwYXRoRGV2aWNlUmVjdCwgJnMtPmJydXNoRGF0YSk7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlcl9wLmggYi9xdGJhc2Uvc3Jj L2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyX3AuaAoraW5kZXggMDg5YWFkYzNmNy4u YmY3MzYzZDVhYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVu Z2luZV9yYXN0ZXJfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdp bmVfcmFzdGVyX3AuaAorQEAgLTExMSw3ICsxMTEsNiBAQCBwdWJsaWM6CisgICAgICAgICB1aW50 IGJpbGluZWFyIDogMTsKKyAgICAgICAgIHVpbnQgbGVnYWN5X3JvdW5kaW5nIDogMTsKKyAgICAg ICAgIHVpbnQgZmFzdF90ZXh0IDogMTsKKy0gICAgICAgIHVpbnQgaW50X3hmb3JtIDogMTsKKyAg ICAgICAgIHVpbnQgdHhfbm9zaGVhciA6IDE7CisgICAgICAgICB1aW50IGZhc3RfaW1hZ2VzIDog MTsKKyAgICAgfTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRl cnBhdGguY3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZXJwYXRoLmNwcAoraW5k ZXggZjk1NDRhMzI0MS4uZDgwZmFmZWFmMSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3Bh aW50aW5nL3FwYWludGVycGF0aC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fw YWludGVycGF0aC5jcHAKK0BAIC0xMjUzLDcgKzEyNTMsNyBAQCB2b2lkIFFQYWludGVyUGF0aDo6 YWRkVGV4dChjb25zdCBRUG9pbnRGICZwb2ludCwgY29uc3QgUUZvbnQgJmYsIGNvbnN0IFFTdHJp bmcgJgorIAorICAgICAgICAgaWYgKHNpLmFuYWx5c2lzLmZsYWdzIDwgUVNjcmlwdEFuYWx5c2lz OjpUYWJPck9iamVjdCkgeworICAgICAgICAgICAgIFFHbHlwaExheW91dCBnbHlwaHMgPSBlbmct PnNoYXBlZEdseXBocygmc2kpOworLSAgICAgICAgICAgIFFGb250RW5naW5lICpmZSA9IGYuZC0+ ZW5naW5lRm9yU2NyaXB0KHNpLmFuYWx5c2lzLnNjcmlwdCk7CisrICAgICAgICAgICAgUUZvbnRF bmdpbmUgKmZlID0gZW5nLT5mb250RW5naW5lKHNpKTsKKyAgICAgICAgICAgICBRX0FTU0VSVChm ZSk7CisgICAgICAgICAgICAgZmUtPmFkZE91dGxpbmVUb1BhdGgoeCwgeSwgZ2x5cGhzLCB0aGlz LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpLmFuYWx5c2lzLmJpZGlMZXZl bCAlIDIKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBwZXJf cC5oIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhjbGlwcGVyX3AuaAoraW5kZXggOTQ0 NGE4N2I3MS4uMThmNjRjNWU4YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5n L3FwYXRoY2xpcHBlcl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYXRoY2xp cHBlcl9wLmgKK0BAIC0xNTYsNyArMTU2LDcgQEAgcHVibGljOgorICAgICBpbnQgdmVydGV4KERp cmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0OworIAorIHByaXZhdGU6CistICAgIGludCBtX25leHRb Ml1bMl07CisrICAgIGludCBtX25leHRbMl1bMl0gPSB7IHsgLTEsIC0xIH0sIHsgLTEsIC0xIH0g fTsKKyB9OworIAorIGNsYXNzIFFQYXRoU2VnbWVudHMKK0BAIC0yOTYsMTAgKzI5Niw2IEBAIGlu bGluZSBRUGF0aEVkZ2U6OlFQYXRoRWRnZShpbnQgYSwgaW50IGIpCisgICAgICwgYW5nbGUoMCkK KyAgICAgLCBpbnZBbmdsZSgwKQorIHsKKy0gICAgbV9uZXh0WzBdWzBdID0gLTE7CistICAgIG1f bmV4dFsxXVswXSA9IC0xOworLSAgICBtX25leHRbMF1bMF0gPSAtMTsKKy0gICAgbV9uZXh0WzFd WzBdID0gLTE7CisgfQorIAorIGlubGluZSBpbnQgUVBhdGhFZGdlOjpuZXh0KFRyYXZlcnNhbCB0 cmF2ZXJzYWwsIERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGRm LmNwcAoraW5kZXggMzA2Njc0NGYxYi4uMmM4ZDNjM2I1MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvZ3VpL3BhaW50aW5nL3FwZGYuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9x cGRmLmNwcAorQEAgLTI3NjAsNiArMjc2MCw4IEBAIGludCBRUGRmRW5naW5lUHJpdmF0ZTo6YWRk QnJ1c2hQYXR0ZXJuKGNvbnN0IFFUcmFuc2Zvcm0gJm0sIGJvb2wgKnNwZWNpZnlDb2xvciwKKyAg ICAgICAgIHJldHVybiBncmFkaWVudEJydXNoKGJydXNoLCBtYXRyaXgsIGdTdGF0ZU9iamVjdCk7 CisgICAgIH0KKyAKKysgICAgbWF0cml4ID0gYnJ1c2gudHJhbnNmb3JtKCkgKiBtYXRyaXg7Cisr CisgICAgIGlmICgoIWJydXNoLmlzT3BhcXVlKCkgJiYgYnJ1c2guc3R5bGUoKSA8IFF0OjpMaW5l YXJHcmFkaWVudFBhdHRlcm4pIHx8IG9wYWNpdHkgIT0gMS4wKQorICAgICAgICAgKmdTdGF0ZU9i amVjdCA9IGFkZENvbnN0YW50QWxwaGFPYmplY3QocVJvdW5kKGJydXNoLmNvbG9yKCkuYWxwaGEo KSAqIG9wYWNpdHkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcVJvdW5kKHBlbi5jb2xvcigpLmFscGhhKCkgKiBvcGFjaXR5KSk7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXN0cm9rZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcXN0cm9rZXIuY3BwCitpbmRleCBjYjVkMzk1ZTgwLi4zYjYzNTdhODkzIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXN0cm9rZXIuY3BwCisrKysgYi9xdGJh c2Uvc3JjL2d1aS9wYWludGluZy9xc3Ryb2tlci5jcHAKK0BAIC0xMTgyLDYgKzExODIsNyBAQCB2 b2lkIFFEYXNoU3Ryb2tlcjo6cHJvY2Vzc0N1cnJlbnRTdWJwYXRoKCkKKyAgICAgICAgIC8vIENo ZWNrIGlmIHRoZSBlbnRpcmUgbGluZSBzaG91bGQgYmUgY2xpcHBlZCBhd2F5IG9yIHNpbXBsaWZp ZWQKKyAgICAgICAgIGJvb2wgY2xpcEl0ID0gY2xpcHBpbmcgJiYgIWxpbmVJbnRlcnNlY3RzUmVj dChwcmV2LCBlLCBjbGlwX3RsLCBjbGlwX2JyKTsKKyAgICAgICAgIGJvb2wgc2tpcERhc2hpbmcg PSBlbGVuICogaW52U3VtTGVuZ3RoID4gcmVwZXRpdGlvbkxpbWl0KCk7CisrICAgICAgICBpbnQg bWF4RGFzaGVzID0gZGFzaENvdW50OworICAgICAgICAgaWYgKHNraXBEYXNoaW5nIHx8IGNsaXBJ dCkgeworICAgICAgICAgICAgIC8vIEN1dCBhd2F5IGZ1bGwgZGFzaCBzZXF1ZW5jZXMuCisgICAg ICAgICAgICAgZWxlbiAtPSBzdGQ6OmZsb29yKGVsZW4gKiBpbnZTdW1MZW5ndGgpICogc3VtTGVu Z3RoOworQEAgLTExOTYsNyArMTE5Nyw3IEBAIHZvaWQgUURhc2hTdHJva2VyOjpwcm9jZXNzQ3Vy cmVudFN1YnBhdGgoKQorICAgICAgICAgICAgICAgICAgICAgcG9zID0gZXN0b3A7IC8vIG1vdmUg cG9zIHRvIG5leHQgcGF0aCBlbGVtZW50CisgICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1 ZTsKKyAgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gRGFzaCBpcyBvbiB0aGlzIGxpbmUKKy0g ICAgICAgICAgICAgICAgICAgIHBvcyA9IGRwb3MgKyBlc3RhcnQ7CisrICAgICAgICAgICAgICAg ICAgICBwb3MgPSAtLW1heERhc2hlcyA+IDAgPyBkcG9zICsgZXN0YXJ0IDogZXN0b3A7CisgICAg ICAgICAgICAgICAgICAgICBkb25lID0gcG9zID49IGVzdG9wOworICAgICAgICAgICAgICAgICAg ICAgaWYgKCsraWRhc2ggPj0gZGFzaENvdW50KQorICAgICAgICAgICAgICAgICAgICAgICAgIGlk YXNoID0gMDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xdF9hdHRyaWJ1 dGlvbi5qc29uIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXRfYXR0cmlidXRpb24uanNvbgor aW5kZXggN2IxNmU4YzIxMS4uMGU4N2QzMGFhMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24KKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50 aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24KK0BAIC0xMCw3ICsxMCw3IEBACisgICAgICAgICAiSG9t ZXBhZ2UiOiAiaHR0cDovL3d3dy5mcmVldHlwZS5vcmciLAorICAgICAgICAgIkxpY2Vuc2UiOiAi RnJlZXR5cGUgUHJvamVjdCBMaWNlbnNlIG9yIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYy LjAgb25seSIsCisgICAgICAgICAiTGljZW5zZUlkIjogIkZUTCBvciBHUEwtMi4wIiwKKy0gICAg ICAgICJMaWNlbnNlRmlsZSI6ICIuLi8uLi8zcmRwYXJ0eS9mcmVldHlwZS9kb2NzL0xJQ0VOU0Uu VFhUIiwKKysgICAgICAgICJMaWNlbnNlRmlsZSI6ICIuLi8uLi8zcmRwYXJ0eS9mcmVldHlwZS9M SUNFTlNFLlRYVCIsCisgICAgICAgICAiQ29weXJpZ2h0IjogIkNvcHlyaWdodCAyMDAwLTIwMTYg YnkgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBMZW1iZXJnLiIKKyAg ICAgfSwKKyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyX3Bf cC5oIGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9wLmgKK2luZGV4IGVjOWQyNTk3MWYu LjRhNWE3YTZkNTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3Au aAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9wLmgKK0BAIC02OCwxMyArNjgs MTMgQEAgc3RydWN0IFFfR1VJX0VYUE9SVCBRU2hhZGVyUHJpdmF0ZQorICAgICB7CisgICAgIH0K KyAKKy0gICAgUVNoYWRlclByaXZhdGUoY29uc3QgUVNoYWRlclByaXZhdGUgKm90aGVyKQorKyAg ICBRU2hhZGVyUHJpdmF0ZShjb25zdCBRU2hhZGVyUHJpdmF0ZSAmb3RoZXIpCisgICAgICAgICA6 IHJlZigxKSwKKy0gICAgICAgICAgcXNiVmVyc2lvbihvdGhlci0+cXNiVmVyc2lvbiksCistICAg ICAgICAgIHN0YWdlKG90aGVyLT5zdGFnZSksCistICAgICAgICAgIGRlc2Mob3RoZXItPmRlc2Mp LAorLSAgICAgICAgICBzaGFkZXJzKG90aGVyLT5zaGFkZXJzKSwKKy0gICAgICAgICAgYmluZGlu Z3Mob3RoZXItPmJpbmRpbmdzKQorKyAgICAgICAgICBxc2JWZXJzaW9uKG90aGVyLnFzYlZlcnNp b24pLAorKyAgICAgICAgICBzdGFnZShvdGhlci5zdGFnZSksCisrICAgICAgICAgIGRlc2Mob3Ro ZXIuZGVzYyksCisrICAgICAgICAgIHNoYWRlcnMob3RoZXIuc2hhZGVycyksCisrICAgICAgICAg IGJpbmRpbmdzKG90aGVyLmJpbmRpbmdzKQorICAgICB7CisgICAgIH0KKyAKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oIGIvcXRiYXNlL3Ny Yy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlwdGlvbl9wX3AuaAoraW5kZXggZWMyYjBiNmI0Yy4uM2Rh MzNhOGEyYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyZGVzY3JpcHRp b25fcF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyZGVzY3JpcHRpb25fcF9w LmgKK0BAIC02MywxNiArNjMsMTYgQEAgc3RydWN0IFFfR1VJX0VYUE9SVCBRU2hhZGVyRGVzY3Jp cHRpb25Qcml2YXRlCisgICAgICAgICBsb2NhbFNpemVbMF0gPSBsb2NhbFNpemVbMV0gPSBsb2Nh bFNpemVbMl0gPSAwOworICAgICB9CisgCistICAgIFFTaGFkZXJEZXNjcmlwdGlvblByaXZhdGUo Y29uc3QgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0ZSAqb3RoZXIpCisrICAgIFFTaGFkZXJEZXNj cmlwdGlvblByaXZhdGUoY29uc3QgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0ZSAmb3RoZXIpCisg ICAgICAgICA6IHJlZigxKSwKKy0gICAgICAgICAgaW5WYXJzKG90aGVyLT5pblZhcnMpLAorLSAg ICAgICAgICBvdXRWYXJzKG90aGVyLT5vdXRWYXJzKSwKKy0gICAgICAgICAgdW5pZm9ybUJsb2Nr cyhvdGhlci0+dW5pZm9ybUJsb2NrcyksCistICAgICAgICAgIHB1c2hDb25zdGFudEJsb2Nrcyhv dGhlci0+cHVzaENvbnN0YW50QmxvY2tzKSwKKy0gICAgICAgICAgc3RvcmFnZUJsb2NrcyhvdGhl ci0+c3RvcmFnZUJsb2NrcyksCistICAgICAgICAgIGNvbWJpbmVkSW1hZ2VTYW1wbGVycyhvdGhl ci0+Y29tYmluZWRJbWFnZVNhbXBsZXJzKSwKKy0gICAgICAgICAgc3RvcmFnZUltYWdlcyhvdGhl ci0+c3RvcmFnZUltYWdlcyksCistICAgICAgICAgIGxvY2FsU2l6ZShvdGhlci0+bG9jYWxTaXpl KQorKyAgICAgICAgICBpblZhcnMob3RoZXIuaW5WYXJzKSwKKysgICAgICAgICAgb3V0VmFycyhv dGhlci5vdXRWYXJzKSwKKysgICAgICAgICAgdW5pZm9ybUJsb2NrcyhvdGhlci51bmlmb3JtQmxv Y2tzKSwKKysgICAgICAgICAgcHVzaENvbnN0YW50QmxvY2tzKG90aGVyLnB1c2hDb25zdGFudEJs b2NrcyksCisrICAgICAgICAgIHN0b3JhZ2VCbG9ja3Mob3RoZXIuc3RvcmFnZUJsb2NrcyksCisr ICAgICAgICAgIGNvbWJpbmVkSW1hZ2VTYW1wbGVycyhvdGhlci5jb21iaW5lZEltYWdlU2FtcGxl cnMpLAorKyAgICAgICAgICBzdG9yYWdlSW1hZ2VzKG90aGVyLnN0b3JhZ2VJbWFnZXMpLAorKyAg ICAgICAgICBsb2NhbFNpemUob3RoZXIubG9jYWxTaXplKQorICAgICB7CisgICAgIH0KKyAKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3BwIGIvcXRiYXNl L3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcAoraW5kZXggYTY1N2E4YzUxNi4uNGZjMDEw MDk1OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS5jcHAK KysrKyBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS5jcHAKK0BAIC05ODMsNyAr OTgzLDcgQEAgUUZvbnRFbmdpbmUgKmxvYWRTaW5nbGVFbmdpbmUoaW50IHNjcmlwdCwKKyAgICAg ICAgIGlmIChzdHlsZS0+a2V5LnN0cmV0Y2ggIT0gMCAmJiByZXF1ZXN0LnN0cmV0Y2ggIT0gMAor ICAgICAgICAgICAgICYmIChyZXF1ZXN0LnN0eWxlTmFtZS5pc0VtcHR5KCkgfHwgcmVxdWVzdC5z dHlsZU5hbWUgIT0gc3R5bGUtPnN0eWxlTmFtZSkpIHsKKyAgICAgICAgICAgICBkZWYuc3RyZXRj aCA9IChyZXF1ZXN0LnN0cmV0Y2ggKiAxMDAgKyBzdHlsZS0+a2V5LnN0cmV0Y2ggLyAyKSAvIHN0 eWxlLT5rZXkuc3RyZXRjaDsKKy0gICAgICAgIH0gZWxzZSB7CisrICAgICAgICB9IGVsc2UgaWYg KHJlcXVlc3Quc3RyZXRjaCA9PSBRRm9udDo6QW55U3RyZXRjaCkgeworICAgICAgICAgICAgIGRl Zi5zdHJldGNoID0gMTAwOworICAgICAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Z3VpL3RleHQvcXRleHRkb2N1bWVudGxheW91dC5jcHAgYi9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0 ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwCitpbmRleCBmM2U2ZWEyMTAwLi43MjI2N2U5MzgwIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGRvY3VtZW50bGF5b3V0LmNwcAorKysr IGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGRvY3VtZW50bGF5b3V0LmNwcAorQEAgLTIxMjMs NyArMjEyMyw3IEBAIHZvaWQgUVRleHREb2N1bWVudExheW91dFByaXZhdGU6OmRyYXdMaXN0SXRl bShjb25zdCBRUG9pbnRGICZvZmZzZXQsIFFQYWludGVyICpwCisgeworICAgICBRX1EoY29uc3Qg UVRleHREb2N1bWVudExheW91dCk7CisgICAgIGNvbnN0IFFUZXh0QmxvY2tGb3JtYXQgYmxvY2tG b3JtYXQgPSBibC5ibG9ja0Zvcm1hdCgpOworLSAgICBjb25zdCBRVGV4dENoYXJGb3JtYXQgY2hh ckZvcm1hdCA9IFFUZXh0Q3Vyc29yKGJsKS5jaGFyRm9ybWF0KCk7CisrICAgIGNvbnN0IFFUZXh0 Q2hhckZvcm1hdCBjaGFyRm9ybWF0ID0gYmwuY2hhckZvcm1hdCgpOworICAgICBRRm9udCBmb250 KGNoYXJGb3JtYXQuZm9udCgpKTsKKyAgICAgaWYgKHEtPnBhaW50RGV2aWNlKCkpCisgICAgICAg ICBmb250ID0gUUZvbnQoZm9udCwgcS0+cGFpbnREZXZpY2UoKSk7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0 ZXh0ZW5naW5lLmNwcAoraW5kZXggY2U0YWJhYzQ3Mi4uYTZjNjZlNWQyZCAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1 aS90ZXh0L3F0ZXh0ZW5naW5lLmNwcAorQEAgLTEsNiArMSw2IEBACisgLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqKgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCisr KiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKyAqKiBDb250YWN0OiBo dHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgUXRHdWkgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTE1NjUsNiArMTU2NSwx MiBAQCB2b2lkIFFUZXh0RW5naW5lOjpzaGFwZVRleHQoaW50IGl0ZW0pIGNvbnN0CisgICAgICAg ICAvLyBPdmVyd3JpdGUgd2l0aCAwIHRva2VuIHRvIGluZGljYXRlIGZhaWx1cmUKKyAgICAgICAg IFFHbHlwaExheW91dCBnID0gYXZhaWxhYmxlR2x5cGhzKCZzaSk7CisgICAgICAgICBnLmdseXBo c1swXSA9IDA7CisrICAgICAgICBnLmF0dHJpYnV0ZXNbMF0uY2x1c3RlclN0YXJ0ID0gdHJ1ZTsK KysKKysgICAgICAgIHVzaG9ydCAqbG9nX2NsdXN0ZXJzID0gbG9nQ2x1c3RlcnMoJnNpKTsKKysg ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlbUxlbmd0aDsgKytpKQorKyAgICAgICAgICAg IGxvZ19jbHVzdGVyc1tpXSA9IDA7CisrCisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwIGIvcXRi YXNlL3NyYy9ndWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNwcAoraW5kZXggZmJiNjNhOTQwOC4u NGQ1ZmFmYWFhNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcWRlc2t0b3BzZXJ2 aWNlcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcWRlc2t0b3BzZXJ2aWNlcy5jcHAK K0BAIC01NCw2ICs1NCw4IEBACisgI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1pbnRlZ3JhdGlvbi5o PgorICNpbmNsdWRlIDxxZGlyLmg+CisgCisrI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3Fsb2Nr aW5nX3AuaD4KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBjbGFzcyBRT3BlblVybEhhbmRs ZXJSZWdpc3RyeSA6IHB1YmxpYyBRT2JqZWN0CitAQCAtODEsNiArODMsNyBAQCBRX0dMT0JBTF9T VEFUSUMoUU9wZW5VcmxIYW5kbGVyUmVnaXN0cnksIGhhbmRsZXJSZWdpc3RyeSkKKyAKKyB2b2lk IFFPcGVuVXJsSGFuZGxlclJlZ2lzdHJ5OjpoYW5kbGVyRGVzdHJveWVkKFFPYmplY3QgKmhhbmRs ZXIpCisgeworKyAgICBjb25zdCBhdXRvIGxvY2sgPSBxdF9zY29wZWRfbG9jayhtdXRleCk7Cisg ICAgIEhhbmRsZXJIYXNoOjpJdGVyYXRvciBpdCA9IGhhbmRsZXJzLmJlZ2luKCk7CisgICAgIHdo aWxlIChpdCAhPSBoYW5kbGVycy5lbmQoKSkgeworICAgICAgICAgaWYgKGl0LT5yZWNlaXZlciA9 PSBoYW5kbGVyKSB7CitAQCAtMjk0LDcgKzI5Nyw4IEBAIHZvaWQgUURlc2t0b3BTZXJ2aWNlczo6 c2V0VXJsSGFuZGxlcihjb25zdCBRU3RyaW5nICZzY2hlbWUsIFFPYmplY3QgKnJlY2VpdmVyLCBj CisgICAgIGgubmFtZSA9IG1ldGhvZDsKKyAgICAgcmVnaXN0cnktPmhhbmRsZXJzLmluc2VydChz Y2hlbWUudG9Mb3dlcigpLCBoKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChyZWNlaXZlciwgU0lH TkFMKGRlc3Ryb3llZChRT2JqZWN0KikpLAorLSAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5 LCBTTE9UKGhhbmRsZXJEZXN0cm95ZWQoUU9iamVjdCopKSk7CisrICAgICAgICAgICAgICAgICAg ICAgcmVnaXN0cnksIFNMT1QoaGFuZGxlckRlc3Ryb3llZChRT2JqZWN0KikpLAorKyAgICAgICAg ICAgICAgICAgICAgIFF0OjpEaXJlY3RDb25uZWN0aW9uKTsKKyB9CisgCisgLyohCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGttaGFuZGxlci5jcHAgYi9xdGJhc2Uvc3JjL2d1 aS91dGlsL3Fwa21oYW5kbGVyLmNwcAoraW5kZXggZTBjM2I3NWVmZS4uMzQxNGY5ZDhiYSAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcXBrbWhhbmRsZXIuY3BwCisrKysgYi9xdGJh c2Uvc3JjL2d1aS91dGlsL3Fwa21oYW5kbGVyLmNwcAorQEAgLTU3LDcgKzU3LDcgQEAgc3RydWN0 IFBrbVR5cGUKKyAgICAgcXVpbnQzMiBieXRlc1BlckJsb2NrOworIH07CisgCistc3RhdGljIFBr bVR5cGUgdHlwZU1hcFs1XSA9IHsKKytzdGF0aWMgY29uc3RleHByIFBrbVR5cGUgdHlwZU1hcFs1 XSA9IHsKKyAgICAgeyAweDhENjQsICA4IH0sICAgLy8gR0xfRVRDMV9SR0I4X09FUworICAgICB7 IDB4OTI3NCwgIDggfSwgICAvLyBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMgorICAgICB7IDAsIDAg fSwgICAgICAgICAvLyB1bnVzZWQgKG9ic29sZXRlKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv bmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWZpbGVpbXBsLmNwcCBiL3F0YmFzZS9zcmMvbmV0 d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWZpbGVpbXBsLmNwcAoraW5kZXggYjZiZTkzMTQ3YS4u NmU2OWI0YzRkMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdv cmtyZXBseWZpbGVpbXBsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0 d29ya3JlcGx5ZmlsZWltcGwuY3BwCitAQCAtODksOSArODksMTAgQEAgUU5ldHdvcmtSZXBseUZp bGVJbXBsOjpRTmV0d29ya1JlcGx5RmlsZUltcGwoUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyICptYW5h Z2VyLCBjb24KKyAgICAgICAgIC8vIHdlIGhhbmRsZSBvbmx5IGxvY2FsIGZpbGVzCisgICAgICAg ICBRU3RyaW5nIG1zZyA9IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUU5ldHdvcmtBY2Nl c3NGaWxlQmFja2VuZCIsICJSZXF1ZXN0IGZvciBvcGVuaW5nIG5vbi1sb2NhbCBmaWxlICUxIiku YXJnKHVybC50b1N0cmluZygpKTsKKyAgICAgICAgIHNldEVycm9yKFFOZXR3b3JrUmVwbHk6OlBy b3RvY29sSW52YWxpZE9wZXJhdGlvbkVycm9yLCBtc2cpOworKyAgICAgICAgc2V0RmluaXNoZWQo dHJ1ZSk7IC8vIFdlJ3JlIGZpbmlzaGVkLCB3aWxsIGVtaXQgZmluaXNoZWQoKSBhZnRlciBjdG9y IGlzIGRvbmUuCisgICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMsICJlcnJv ck9jY3VycmVkIiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24sCisgICAgICAgICAgICAgUV9BUkcoUU5l dHdvcmtSZXBseTo6TmV0d29ya0Vycm9yLCBRTmV0d29ya1JlcGx5OjpQcm90b2NvbEludmFsaWRP cGVyYXRpb25FcnJvcikpOworLSAgICAgICAgZmlsZU9wZW5GaW5pc2hlZChmYWxzZSk7CisrICAg ICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMsIFt0aGlzXSgpeyBmaWxlT3BlbkZp bmlzaGVkKGZhbHNlKTsgfSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworICAgICAgICAgcmV0dXJu OworICAgICB9CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vz cy9xbmV0d29ya3JlcGx5aW1wbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3 b3JrcmVwbHlpbXBsLmNwcAoraW5kZXggYmNkZjZlZTJmMS4uM2I2ZGViODJiZCAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWltcGwuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlpbXBsLmNwcAorQEAgLTY4 MCw3ICs2ODAsNyBAQCB2b2lkIFFOZXR3b3JrUmVwbHlJbXBsUHJpdmF0ZTo6YXBwZW5kRG93bnN0 cmVhbURhdGEoUUlPRGV2aWNlICpkYXRhKQorICAgICAvLyByZWFkIHVudGlsIEVPRiBmcm9tIGRh dGEKKyAgICAgaWYgKFFfVU5MSUtFTFkoY29weURldmljZSkpIHsKKyAgICAgICAgIHFDcml0aWNh bCgiUU5ldHdvcmtSZXBseUltcGw6IGNvcHkgZnJvbSBRSU9EZXZpY2UgYWxyZWFkeSBpbiBwcm9n cmVzcyAtLSAiCistICAgICAgICAgICAgICAgICAgImJhY2tlbmQgcHJvYmx5IG5lZWRzIHRvIGJl IGZpeGVkIik7CisrICAgICAgICAgICAgICAgICAgImJhY2tlbmQgcHJvYmFibHkgbmVlZHMgdG8g YmUgZml4ZWQiKTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0b3IuY3BwIGIvcXRiYXNlL3NyYy9u ZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRvci5jcHAKK2luZGV4IGQ5ZmU3YmM0N2IuLmNjZDA0 YjI5NGEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3FhdXRoZW50aWNh dG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRvci5j cHAKK0BAIC01MCw2ICs1MCw3IEBACisgI2luY2x1ZGUgPHFzdHJpbmcuaD4KKyAjaW5jbHVkZSA8 cWRhdGV0aW1lLmg+CisgI2luY2x1ZGUgPHFyYW5kb20uaD4KKysjaW5jbHVkZSAicHJpdmF0ZS9x c3lzdGVtbGlicmFyeV9wLmgiCisgCisgI2lmZGVmIFFfT1NfV0lOCisgI2luY2x1ZGUgPHFtdXRl eC5oPgorQEAgLTE1NjMsNyArMTU2NCw3IEBAIHN0YXRpYyBib29sIHFfU1NQSV9saWJyYXJ5X2xv YWQoKQorIAorICAgICAvLyBJbml0aWFsaXplIHNlY3VyaXR5IGludGVyZmFjZQorICAgICBpZiAo cFNlY3VyaXR5RnVuY3Rpb25UYWJsZSA9PSBudWxscHRyKSB7CistICAgICAgICBzZWN1cml0eURM TEhhbmRsZSA9IExvYWRMaWJyYXJ5KEwic2VjdXIzMi5kbGwiKTsKKysgICAgICAgIHNlY3VyaXR5 RExMSGFuZGxlID0gUVN5c3RlbUxpYnJhcnk6OmxvYWQoTCJzZWN1cjMyIik7CisgICAgICAgICBp ZiAoc2VjdXJpdHlETExIYW5kbGUgIT0gbnVsbHB0cikgeworICAgICAgICAgICAgIElOSVRfU0VD VVJJVFlfSU5URVJGQUNFIHBJbml0U2VjdXJpdHlJbnRlcmZhY2UgPQorICAgICAgICAgICAgICAg ICByZWludGVycHJldF9jYXN0PElOSVRfU0VDVVJJVFlfSU5URVJGQUNFPigKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0aW5mb191bml4LmNwcCBiL3F0YmFzZS9z cmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZvX3VuaXguY3BwCitpbmRleCA5YjBhMmVlNjY5Li43 MzY3OWM5ZWYxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xaG9zdGlu Zm9fdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZvX3Vu aXguY3BwCitAQCAtMTIyLDcgKzEyMiw2IEBAIHN0YXRpYyBRRnVuY3Rpb25Qb2ludGVyIHJlc29s dmVTeW1ib2woUUxpYnJhcnkgJmxpYiwgY29uc3QgY2hhciAqc3ltKQorIAorIExpYlJlc29sdjo6 TGliUmVzb2x2KCkKKyB7CistICAgIFFMaWJyYXJ5IGxpYjsKKyAjaWZkZWYgTElCUkVTT0xWX1NP CisgICAgIGxpYi5zZXRGaWxlTmFtZShRU3RyaW5nTGl0ZXJhbChMSUJSRVNPTFZfU08pKTsKKyAg ICAgaWYgKCFsaWIubG9hZCgpKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zb2Nr ZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fz b2NrczVzb2NrZXRlbmdpbmUuY3BwCitpbmRleCAzYTA0NmZkMTE2Li45N2ZhZGNhMGIzIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9xc29ja3M1c29ja2V0ZW5naW5lLmNw cAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9xc29ja3M1c29ja2V0ZW5naW5lLmNw cAorQEAgLTEyOTYsNyArMTI5Niw3IEBAIHZvaWQgUVNvY2tzNVNvY2tldEVuZ2luZVByaXZhdGU6 Ol9xX3VkcFNvY2tldFJlYWROb3RpZmljYXRpb24oKQorICAgICAgICAgaW50IHBvcyA9IDA7Cisg ICAgICAgICBjb25zdCBjaGFyICpidWYgPSBpbkJ1Zi5jb25zdERhdGEoKTsKKyAgICAgICAgIGlm IChpbkJ1Zi5zaXplKCkgPCA0KSB7CistICAgICAgICAgICAgUVNPQ0tTNV9EX0RFQlVHIDw8ICJi dWd1cyB1ZHAgZGF0YSwgZGlzY2FyZGluZyI7CisrICAgICAgICAgICAgUVNPQ0tTNV9EX0RFQlVH IDw8ICJib2d1cyB1ZHAgZGF0YSwgZGlzY2FyZGluZyI7CisgICAgICAgICAgICAgcmV0dXJuOwor ICAgICAgICAgfQorICAgICAgICAgUVNvY2tzNVJldml2ZWREYXRhZ3JhbSBkYXRhZ3JhbTsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0X29wZW5zc2wuY3Bw IGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsY29udGV4dF9vcGVuc3NsLmNwcAoraW5kZXgg YzlmMjAyZjU3My4uYzk5MmRhOWQ4ZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9z c2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wv cXNzbGNvbnRleHRfb3BlbnNzbC5jcHAKK0BAIC00MDksNyArNDA5LDcgQEAgaW5pdF9jb250ZXh0 OgorICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUVNzbDo6RHRsc1YxXzBPckxhdGVyOgorICAg ICAgICAgbWluVmVyc2lvbiA9IERUTFMxX1ZFUlNJT047CistICAgICAgICBtYXhWZXJzaW9uID0g RFRMU19NQVhfVkVSU0lPTjsKKysgICAgICAgIG1heFZlcnNpb24gPSAwOworICAgICAgICAgYnJl YWs7CisgICAgIGNhc2UgUVNzbDo6RHRsc1YxXzI6CisgICAgICAgICBtaW5WZXJzaW9uID0gRFRM UzFfMl9WRVJTSU9OOworQEAgLTQxNyw3ICs0MTcsNyBAQCBpbml0X2NvbnRleHQ6CisgICAgICAg ICBicmVhazsKKyAgICAgY2FzZSBRU3NsOjpEdGxzVjFfMk9yTGF0ZXI6CisgICAgICAgICBtaW5W ZXJzaW9uID0gRFRMUzFfMl9WRVJTSU9OOworLSAgICAgICAgbWF4VmVyc2lvbiA9IERUTFNfTUFY X1ZFUlNJT047CisrICAgICAgICBtYXhWZXJzaW9uID0gMDsKKyAgICAgICAgIGJyZWFrOworICAg ICBjYXNlIFFTc2w6OlRsc1YxXzNPckxhdGVyOgorICNpZmRlZiBUTFMxXzNfVkVSU0lPTgorQEAg LTQ1NSw3ICs0NTUsNyBAQCBpbml0X2NvbnRleHQ6CisgICAgIH0KKyAKKyAgICAgLy8gRW5hYmxl IGJ1ZyB3b3JrYXJvdW5kcy4KKy0gICAgbG9uZyBvcHRpb25zID0gUVNzbFNvY2tldEJhY2tlbmRQ cml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRpb25zKGNvbmZpZ3VyYXRpb24ucHJvdG9jb2woKSwgY29u ZmlndXJhdGlvbi5kLT5zc2xPcHRpb25zKTsKKysgICAgcXNzbG9wdGlvbnMgb3B0aW9ucyA9IFFT c2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6c2V0dXBPcGVuU3NsT3B0aW9ucyhjb25maWd1cmF0aW9u LnByb3RvY29sKCksIGNvbmZpZ3VyYXRpb24uZC0+c3NsT3B0aW9ucyk7CisgICAgIHFfU1NMX0NU WF9zZXRfb3B0aW9ucyhzc2xDb250ZXh0LT5jdHgsIG9wdGlvbnMpOworIAorICAgICAvLyBUZWxs IE9wZW5TU0wgdG8gcmVsZWFzZSBtZW1vcnkgZWFybHkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L25ldHdvcmsvc3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcCBiL3F0 YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGRpZmZpZWhlbGxtYW5wYXJhbWV0ZXJzX29wZW5zc2wu Y3BwCitpbmRleCBhYWY4NzQxMTMwLi5iNTg5MzUzNzJjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9uZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1hbnBhcmFtZXRlcnNfb3BlbnNzbC5jcHAKKysr KyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGRpZmZpZWhlbGxtYW5wYXJhbWV0ZXJzX29w ZW5zc2wuY3BwCitAQCAtNTksNTcgKzU5LDYgQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAK Ky0jaWZkZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorLQorLXN0YXRpYyBpbnQgcV9ESF9j aGVjayhESCAqZGgsIGludCAqc3RhdHVzKQorLXsKKy0gICAgLy8gREhfY2hlY2sgd2FzIGZpcnN0 IGRlcHJlY2F0ZWQgaW4gT3BlblNTTCAzLjAuMCwgYXMgbG93LWxldmVsCistICAgIC8vIEFQSTsg dGhlIEVWUF9QS0VZIGZhbWlseSBvZiBmdW5jdGlvbnMgd2FzIGFkdmlzZWQgYXMgYW4gYWx0ZXJu YXRpdmUuCistICAgIC8vIEFzIG9mIG5vdyBFVlBfUEtFWV9wYXJhbXNfY2hlY2sgZW5kcyB1cCBj YWxsaW5nIC4uLiBESF9jaGVjaywKKy0gICAgLy8gd2hpY2ggaXMgZ29vZCBlbm91Z2guCistCist ICAgIFFfQVNTRVJUKGRoKTsKKy0gICAgUV9BU1NFUlQoc3RhdHVzKTsKKy0KKy0gICAgRVZQX1BL RVkgKmtleSA9IHFfRVZQX1BLRVlfbmV3KCk7CistICAgIGlmICgha2V5KSB7CistICAgICAgICBx Q1dhcm5pbmcobGNTc2wsICJFVlBfUEtFWV9uZXcgZmFpbGVkIik7CistICAgICAgICBRU3NsU29j a2V0QmFja2VuZFByaXZhdGU6OmxvZ0FuZENsZWFyRXJyb3JRdWV1ZSgpOworLSAgICAgICAgcmV0 dXJuIDA7CistICAgIH0KKy0gICAgY29uc3QgYXV0byBrZXlEZWxldGVyID0gcVNjb3BlR3VhcmQo W2tleV0oKXsKKy0gICAgICAgIHFfRVZQX1BLRVlfZnJlZShrZXkpOworLSAgICB9KTsKKy0gICAg aWYgKCFxX0VWUF9QS0VZX3NldDFfREgoa2V5LCBkaCkpIHsKKy0gICAgICAgIHFDV2FybmluZyhs Y1NzbCwgIkVWUF9QS0VZX3NldDFfREggZmFpbGVkIik7CistICAgICAgICBRU3NsU29ja2V0QmFj a2VuZFByaXZhdGU6OmxvZ0FuZENsZWFyRXJyb3JRdWV1ZSgpOworLSAgICAgICAgcmV0dXJuIDA7 CistICAgIH0KKy0KKy0gICAgRVZQX1BLRVlfQ1RYICprZXlDdHggPSBxX0VWUF9QS0VZX0NUWF9u ZXcoa2V5LCBudWxscHRyKTsKKy0gICAgaWYgKCFrZXlDdHgpIHsKKy0gICAgICAgIHFDV2Fybmlu ZyhsY1NzbCwgIkVWUF9QS0VZX0NUWF9uZXcgZmFpbGVkIik7CistICAgICAgICBRU3NsU29ja2V0 QmFja2VuZFByaXZhdGU6OmxvZ0FuZENsZWFyRXJyb3JRdWV1ZSgpOworLSAgICAgICAgcmV0dXJu IDA7CistICAgIH0KKy0gICAgY29uc3QgYXV0byBjdHhEZWxldGVyID0gcVNjb3BlR3VhcmQoW2tl eUN0eF17CistICAgICAgICBxX0VWUF9QS0VZX0NUWF9mcmVlKGtleUN0eCk7CistICAgIH0pOwor LQorLSAgICBjb25zdCBpbnQgcmVzdWx0ID0gcV9FVlBfUEtFWV9wYXJhbV9jaGVjayhrZXlDdHgp OworLSAgICBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OmxvZ0FuZENsZWFyRXJyb3JRdWV1ZSgp OworLSAgICAvLyBOb3RlOiB1bmxpa2UgREhfY2hlY2ssIHdlIGNhbm5vdCBvYnRhaW4gdGhlICdz dGF0dXMnLAorLSAgICAvLyBpZiB0aGUgJ3Jlc3VsdCcgaXMgMCAoYWN0dWFsbHkgdGhlIHJlc3Vs dCBpcyAxIG9ubHkKKy0gICAgLy8gaWYgdGhpcyAnc3RhdHVzJyB3YXMgMCkuIFdlIGNvdWxkIHBy b2JhYmx5IGNoZWNrIHRoZQorLSAgICAvLyBlcnJvcnMgZnJvbSB0aGUgZXJyb3IgcXVldWUsIGJ1 dCBpdCdzIG5vdCBuZWVkZWQgYW55d2F5CistICAgIC8vIC0gc2VlIHRoZSAnaXNTYWZlREgnIGJl bG93LCBob3cgaXQgcmV0dXJucyBpbW1lZGlhdGVseQorLSAgICAvLyBvbiAwLgorLSAgICBRX1VO VVNFRChzdGF0dXMpCistCistICAgIHJldHVybiByZXN1bHQ7CistfQorLSNlbmRpZiAvLyBPUEVO U1NMX05PX0RFUFJFQ0FURURfM18wCistCisgc3RhdGljIGJvb2wgaXNTYWZlREgoREggKmRoKQor IHsKKyAgICAgaW50IHN0YXR1cyA9IDA7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3Jr L3NzbC9xc3Nsc29ja2V0X29wZW5zc2wuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Ns c29ja2V0X29wZW5zc2wuY3BwCitpbmRleCAzN2ZhZDJhNjhmLi44ZjY4NThjODY3IDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2wuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbC5jcHAKK0BAIC01NTAs OSArNTUwLDkgQEAgc3RhdGljIHZvaWQgcV9sb2FkQ2lwaGVyc0ZvckNvbm5lY3Rpb24oU1NMICpj b25uZWN0aW9uLCBRTGlzdDxRU3NsQ2lwaGVyPiAmY2lwaGUKKyAvLyBEZWZpbmVkIGluIHFzc2xz b2NrZXQuY3BwCisgdm9pZCBxX3NldERlZmF1bHREdGxzQ2lwaGVycyhjb25zdCBRTGlzdDxRU3Ns Q2lwaGVyPiAmY2lwaGVycyk7CisgCistbG9uZyBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OnNl dHVwT3BlblNzbE9wdGlvbnMoUVNzbDo6U3NsUHJvdG9jb2wgcHJvdG9jb2wsIFFTc2w6OlNzbE9w dGlvbnMgc3NsT3B0aW9ucykKKytxc3Nsb3B0aW9ucyBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6 OnNldHVwT3BlblNzbE9wdGlvbnMoUVNzbDo6U3NsUHJvdG9jb2wgcHJvdG9jb2wsIFFTc2w6OlNz bE9wdGlvbnMgc3NsT3B0aW9ucykKKyB7CistICAgIGxvbmcgb3B0aW9uczsKKysgICAgcXNzbG9w dGlvbnMgb3B0aW9uczsKKyAgICAgaWYgKHByb3RvY29sID09IFFTc2w6OlRsc1YxU3NsVjMpCisg ICAgICAgICBvcHRpb25zID0gU1NMX09QX0FMTHxTU0xfT1BfTk9fU1NMdjJ8U1NMX09QX05PX1NT THYzOworICAgICBlbHNlIGlmIChwcm90b2NvbCA9PSBRU3NsOjpTZWN1cmVQcm90b2NvbHMpCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfcC5o IGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfcC5oCitpbmRleCA0 MTAzZGUyM2U4Li41NTQ3NTg5MjU2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3Nz bC9xc3Nsc29ja2V0X29wZW5zc2xfcC5oCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fz c2xzb2NrZXRfb3BlbnNzbF9wLmgKK0BAIC0xMDcsNiArMTA3LDEyIEBACisgCisgUVRfQkVHSU5f TkFNRVNQQUNFCisgCisrI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJTSU9OX01BSk9SKSAmJiBPUEVO U1NMX1ZFUlNJT05fTUFKT1IgPj0gMworK3R5cGVkZWYgdWludDY0X3QgcXNzbG9wdGlvbnM7Cisr I2Vsc2UKKyt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcXNzbG9wdGlvbnM7CisrI2VuZGlmCisrCisg c3RydWN0IFFTc2xFcnJvckVudHJ5IHsKKyAgICAgaW50IGNvZGU7CisgICAgIGludCBkZXB0aDsK K0BAIC0xNzEsNyArMTc3LDcgQEAgcHVibGljOgorICAgICBRVmVjdG9yPFFTc2xFcnJvcj4gb2Nz cEVycm9yczsKKyAgICAgUUJ5dGVBcnJheSBvY3NwUmVzcG9uc2VEZXI7CisgCistICAgIFFfQVVU T1RFU1RfRVhQT1JUIHN0YXRpYyBsb25nIHNldHVwT3BlblNzbE9wdGlvbnMoUVNzbDo6U3NsUHJv dG9jb2wgcHJvdG9jb2wsIFFTc2w6OlNzbE9wdGlvbnMgc3NsT3B0aW9ucyk7CisrICAgIFFfQVVU T1RFU1RfRVhQT1JUIHN0YXRpYyBxc3Nsb3B0aW9ucyBzZXR1cE9wZW5Tc2xPcHRpb25zKFFTc2w6 OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRpb25zIHNzbE9wdGlvbnMpOworICAg ICBzdGF0aWMgUVNzbENpcGhlciBRU3NsQ2lwaGVyX2Zyb21fU1NMX0NJUEhFUihjb25zdCBTU0xf Q0lQSEVSICpjaXBoZXIpOworICAgICBzdGF0aWMgUUxpc3Q8UVNzbENlcnRpZmljYXRlPiBTVEFD S09GWDUwOV90b19RU3NsQ2VydGlmaWNhdGVzKFNUQUNLX09GKFg1MDkpICp4NTA5KTsKKyAgICAg c3RhdGljIFFMaXN0PFFTc2xFcnJvcj4gdmVyaWZ5KGNvbnN0IFFMaXN0PFFTc2xDZXJ0aWZpY2F0 ZT4gJmNlcnRpZmljYXRlQ2hhaW4sIGNvbnN0IFFTdHJpbmcgJmhvc3ROYW1lKTsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNw cCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHMuY3Bw CitpbmRleCBlNTNmYjI3OWYwLi40NTljY2QwYjE5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9u ZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5jcHAKKysrKyBiL3F0YmFzZS9z cmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHMuY3BwCitAQCAtMTQ4LDcg KzE0OCw2IEBAIERFRklORUZVTkMoaW50LCBFVlBfUEtFWV91cF9yZWYsIEVWUF9QS0VZICphLCBh LCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMyKEVWUF9QS0VZX0NUWCAqLCBFVlBfUEtF WV9DVFhfbmV3LCBFVlBfUEtFWSAqcGtleSwgcGtleSwgRU5HSU5FICplLCBlLCByZXR1cm4gbnVs bHB0ciwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBFVlBfUEtFWV9wYXJhbV9jaGVjaywgRVZQ X1BLRVlfQ1RYICpjdHgsIGN0eCwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DKHZvaWQs IEVWUF9QS0VZX0NUWF9mcmVlLCBFVlBfUEtFWV9DVFggKmN0eCwgY3R4LCByZXR1cm4sIHJldHVy bikKKy1ERUZJTkVGVU5DKGludCwgRVZQX1BLRVlfYmFzZV9pZCwgRVZQX1BLRVkgKmEsIGEsIHJl dHVybiBOSURfdW5kZWYsIHJldHVybikKKyBERUZJTkVGVU5DKGludCwgUlNBX2JpdHMsIFJTQSAq YSwgYSwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DKGludCwgRFNBX2JpdHMsIERTQSAq YSwgYSwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DKGludCwgT1BFTlNTTF9za19udW0s IE9QRU5TU0xfU1RBQ0sgKmEsIGEsIHJldHVybiAtMSwgcmV0dXJuKQorQEAgLTE1OCw3ICsxNTcs NyBAQCBERUZJTkVGVU5DMih2b2lkLCBPUEVOU1NMX3NrX3B1c2gsIE9QRU5TU0xfU1RBQ0sgKmEs IGEsIHZvaWQgKmIsIGIsIHJldHVybiwgRFVNTQorIERFRklORUZVTkModm9pZCwgT1BFTlNTTF9z a19mcmVlLCBPUEVOU1NMX1NUQUNLICphLCBhLCByZXR1cm4sIERVTU1ZQVJHKQorIERFRklORUZV TkMyKHZvaWQgKiwgT1BFTlNTTF9za192YWx1ZSwgT1BFTlNTTF9TVEFDSyAqYSwgYSwgaW50IGIs IGIsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIFNTTF9zZXNzaW9u X3JldXNlZCwgU1NMICphLCBhLCByZXR1cm4gMCwgcmV0dXJuKQorLURFRklORUZVTkMyKHVuc2ln bmVkIGxvbmcsIFNTTF9DVFhfc2V0X29wdGlvbnMsIFNTTF9DVFggKmN0eCwgY3R4LCB1bnNpZ25l ZCBsb25nIG9wLCBvcCwgcmV0dXJuIDAsIHJldHVybikKKytERUZJTkVGVU5DMihxc3Nsb3B0aW9u cywgU1NMX0NUWF9zZXRfb3B0aW9ucywgU1NMX0NUWCAqY3R4LCBjdHgsIHFzc2xvcHRpb25zIG9w LCBvcCwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DKGludCwgU1NMX0NUWF9nZXRfc2Vj dXJpdHlfbGV2ZWwsIGNvbnN0IFNTTF9DVFggKmN0eCwgY3R4LCByZXR1cm4gLTEsIHJldHVybikK KyBERUZJTkVGVU5DMih2b2lkLCBTU0xfQ1RYX3NldF9zZWN1cml0eV9sZXZlbCwgU1NMX0NUWCAq Y3R4LCBjdHgsIGludCBsZXZlbCwgbGV2ZWwsIHJldHVybiwgcmV0dXJuKQorICNpZmRlZiBUTFMx XzNfVkVSU0lPTgorQEAgLTM3MSw3ICszNzAsMTUgQEAgREVGSU5FRlVOQyhjb25zdCBTU0xfQ0lQ SEVSICosIFNTTF9nZXRfY3VycmVudF9jaXBoZXIsIFNTTCAqYSwgYSwgcmV0dXJuIG51bGxwdHIK KyBERUZJTkVGVU5DKGludCwgU1NMX3ZlcnNpb24sIGNvbnN0IFNTTCAqYSwgYSwgcmV0dXJuIDAs IHJldHVybikKKyBERUZJTkVGVU5DMihpbnQsIFNTTF9nZXRfZXJyb3IsIFNTTCAqYSwgYSwgaW50 IGIsIGIsIHJldHVybiAtMSwgcmV0dXJuKQorIERFRklORUZVTkMoU1RBQ0tfT0YoWDUwOSkgKiwg U1NMX2dldF9wZWVyX2NlcnRfY2hhaW4sIFNTTCAqYSwgYSwgcmV0dXJuIG51bGxwdHIsIHJldHVy bikKKysKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTUFKT1IpICYmIE9QRU5TU0xfVkVS U0lPTl9NQUpPUiA+PSAzCisrREVGSU5FRlVOQyhYNTA5ICosIFNTTF9nZXQxX3BlZXJfY2VydGlm aWNhdGUsIFNTTCAqYSwgYSwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKytERUZJTkVGVU5DKGlu dCwgRVZQX1BLRVlfZ2V0X2Jhc2VfaWQsIGNvbnN0IEVWUF9QS0VZICpwa2V5LCBwa2V5LCByZXR1 cm4gLTEsIHJldHVybikKKysjZWxzZQorIERFRklORUZVTkMoWDUwOSAqLCBTU0xfZ2V0X3BlZXJf Y2VydGlmaWNhdGUsIFNTTCAqYSwgYSwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKytERUZJTkVG VU5DKGludCwgRVZQX1BLRVlfYmFzZV9pZCwgRVZQX1BLRVkgKmEsIGEsIHJldHVybiBOSURfdW5k ZWYsIHJldHVybikKKysjZW5kaWYgLy8gT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKysKKyBE RUZJTkVGVU5DKGxvbmcsIFNTTF9nZXRfdmVyaWZ5X3Jlc3VsdCwgY29uc3QgU1NMICphLCBhLCBy ZXR1cm4gLTEsIHJldHVybikKKyBERUZJTkVGVU5DKFNTTCAqLCBTU0xfbmV3LCBTU0xfQ1RYICph LCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZVTkMoU1NMX0NUWCAqLCBTU0xf Z2V0X1NTTF9DVFgsIFNTTCAqYSwgYSwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKK0BAIC00OTIs OSArNDk5LDcgQEAgREVGSU5FRlVOQyhESCAqLCBESF9uZXcsIERVTU1ZQVJHLCBEVU1NWUFSRywg cmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5DKHZvaWQsIERIX2ZyZWUsIERIICpk aCwgZGgsIHJldHVybiwgRFVNTVlBUkcpCisgREVGSU5FRlVOQzMoREggKiwgZDJpX0RIcGFyYW1z LCBESCoqYSwgYSwgY29uc3QgdW5zaWduZWQgY2hhciAqKnBwLCBwcCwgbG9uZyBsZW5ndGgsIGxl bmd0aCwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5DMihpbnQsIGkyZF9ESHBh cmFtcywgREggKmEsIGEsIHVuc2lnbmVkIGNoYXIgKipwLCBwLCByZXR1cm4gLTEsIHJldHVybikK Ky0jaWZuZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyBERUZJTkVGVU5DMihpbnQsIERI X2NoZWNrLCBESCAqZGgsIGRoLCBpbnQgKmNvZGVzLCBjb2RlcywgcmV0dXJuIDAsIHJldHVybikK Ky0jZW5kaWYgLy8gT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIERFRklORUZVTkMzKEJJR05V TSAqLCBCTl9iaW4yYm4sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMsIHMsIGludCBsZW4sIGxlbiwg QklHTlVNICpyZXQsIHJldCwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyAKKyAjaWZuZGVmIE9Q RU5TU0xfTk9fRUMKK0BAIC04NjgsNyArODczLDYgQEAgYm9vbCBxX3Jlc29sdmVPcGVuU3NsU3lt Ym9scygpCisgICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX0NUWF9uZXcpCisgICAgIFJFU09MVkVG VU5DKEVWUF9QS0VZX3BhcmFtX2NoZWNrKQorICAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9DVFhf ZnJlZSkKKy0gICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfYmFzZV9pZCkKKyAgICAgUkVTT0xWRUZV TkMoUlNBX2JpdHMpCisgICAgIFJFU09MVkVGVU5DKE9QRU5TU0xfc2tfbmV3X251bGwpCisgICAg IFJFU09MVkVGVU5DKE9QRU5TU0xfc2tfcHVzaCkKK0BAIC0xMTA3LDcgKzExMTEsMTUgQEAgYm9v bCBxX3Jlc29sdmVPcGVuU3NsU3ltYm9scygpCisgICAgIFJFU09MVkVGVU5DKFNTTF92ZXJzaW9u KQorICAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0X2Vycm9yKQorICAgICBSRVNPTFZFRlVOQyhTU0xf Z2V0X3BlZXJfY2VydF9jaGFpbikKKysKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTUFK T1IpICYmIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrICAgIFJFU09MVkVGVU5DKFNTTF9n ZXQxX3BlZXJfY2VydGlmaWNhdGUpCisrICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX2dldF9iYXNl X2lkKQorKyNlbHNlCisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZSkK KysgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfYmFzZV9pZCkKKysjZW5kaWYgLy8gT1BFTlNTTF9W RVJTSU9OX01BSk9SID49IDMKKysKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF92ZXJpZnlfcmVz dWx0KQorICAgICBSRVNPTFZFRlVOQyhTU0xfbmV3KQorICAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0 X1NTTF9DVFgpCitAQCAtMTIwNiw5ICsxMjE4LDcgQEAgYm9vbCBxX3Jlc29sdmVPcGVuU3NsU3lt Ym9scygpCisgICAgIFJFU09MVkVGVU5DKERIX2ZyZWUpCisgICAgIFJFU09MVkVGVU5DKGQyaV9E SHBhcmFtcykKKyAgICAgUkVTT0xWRUZVTkMoaTJkX0RIcGFyYW1zKQorLSNpZm5kZWYgT1BFTlNT TF9OT19ERVBSRUNBVEVEXzNfMAorICAgICBSRVNPTFZFRlVOQyhESF9jaGVjaykKKy0jZW5kaWYg Ly8gT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorICAgICBSRVNPTFZFRlVOQyhCTl9iaW4yYm4p CisgCisgI2lmbmRlZiBPUEVOU1NMX05PX0VDCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3 b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9sc19wLmggYi9xdGJhc2Uvc3JjL25ldHdv cmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3AuaAoraW5kZXggOTVlODg5N2EzYi4u MjdhZWZmYTE4YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tl dF9vcGVuc3NsX3N5bWJvbHNfcC5oCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xz b2NrZXRfb3BlbnNzbF9zeW1ib2xzX3AuaAorQEAgLTIzNyw3ICsyMzcsNiBAQCBRX0FVVE9URVNU X0VYUE9SVCBpbnQgcV9FVlBfUEtFWV91cF9yZWYoRVZQX1BLRVkgKmEpOworIEVWUF9QS0VZX0NU WCAqcV9FVlBfUEtFWV9DVFhfbmV3KEVWUF9QS0VZICpwa2V5LCBFTkdJTkUgKmUpOworIHZvaWQg cV9FVlBfUEtFWV9DVFhfZnJlZShFVlBfUEtFWV9DVFggKmN0eCk7CisgaW50IHFfRVZQX1BLRVlf cGFyYW1fY2hlY2soRVZQX1BLRVlfQ1RYICpjdHgpOworLWludCBxX0VWUF9QS0VZX2Jhc2VfaWQo RVZQX1BLRVkgKmEpOworIGludCBxX1JTQV9iaXRzKFJTQSAqYSk7CisgUV9BVVRPVEVTVF9FWFBP UlQgaW50IHFfT1BFTlNTTF9za19udW0oT1BFTlNTTF9TVEFDSyAqYSk7CisgUV9BVVRPVEVTVF9F WFBPUlQgdm9pZCBxX09QRU5TU0xfc2tfcG9wX2ZyZWUoT1BFTlNTTF9TVEFDSyAqYSwgdm9pZCAo KmIpKHZvaWQgKikpOworQEAgLTI0Niw3ICsyNDUsNyBAQCBRX0FVVE9URVNUX0VYUE9SVCB2b2lk IHFfT1BFTlNTTF9za19wdXNoKE9QRU5TU0xfU1RBQ0sgKnN0LCB2b2lkICpkYXRhKTsKKyBRX0FV VE9URVNUX0VYUE9SVCB2b2lkIHFfT1BFTlNTTF9za19mcmVlKE9QRU5TU0xfU1RBQ0sgKmEpOwor IFFfQVVUT1RFU1RfRVhQT1JUIHZvaWQgKiBxX09QRU5TU0xfc2tfdmFsdWUoT1BFTlNTTF9TVEFD SyAqYSwgaW50IGIpOworIGludCBxX1NTTF9zZXNzaW9uX3JldXNlZChTU0wgKmEpOworLXVuc2ln bmVkIGxvbmcgcV9TU0xfQ1RYX3NldF9vcHRpb25zKFNTTF9DVFggKmN0eCwgdW5zaWduZWQgbG9u ZyBvcCk7CisrcXNzbG9wdGlvbnMgcV9TU0xfQ1RYX3NldF9vcHRpb25zKFNTTF9DVFggKmN0eCwg cXNzbG9wdGlvbnMgb3ApOworIGludCBxX09QRU5TU0xfaW5pdF9zc2wodWludDY0X3Qgb3B0cywg Y29uc3QgT1BFTlNTTF9JTklUX1NFVFRJTkdTICpzZXR0aW5ncyk7Cisgc2l6ZV90IHFfU1NMX2dl dF9jbGllbnRfcmFuZG9tKFNTTCAqYSwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0bGVu KTsKKyBzaXplX3QgcV9TU0xfU0VTU0lPTl9nZXRfbWFzdGVyX2tleShjb25zdCBTU0xfU0VTU0lP TiAqc2Vzc2lvbiwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0bGVuKTsKK0BAIC01MTAs NyArNTA5LDYgQEAgY29uc3QgU1NMX0NJUEhFUiAqcV9TU0xfZ2V0X2N1cnJlbnRfY2lwaGVyKFNT TCAqYSk7CisgaW50IHFfU1NMX3ZlcnNpb24oY29uc3QgU1NMICphKTsKKyBpbnQgcV9TU0xfZ2V0 X2Vycm9yKFNTTCAqYSwgaW50IGIpOworIFNUQUNLX09GKFg1MDkpICpxX1NTTF9nZXRfcGVlcl9j ZXJ0X2NoYWluKFNTTCAqYSk7CistWDUwOSAqcV9TU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUoU1NM ICphKTsKKyBsb25nIHFfU1NMX2dldF92ZXJpZnlfcmVzdWx0KGNvbnN0IFNTTCAqYSk7CisgU1NM ICpxX1NTTF9uZXcoU1NMX0NUWCAqYSk7CisgU1NMX0NUWCAqcV9TU0xfZ2V0X1NTTF9DVFgoU1NM ICphKTsKK0BAIC01ODIsMTAgKzU4MCw3IEBAIERIICpxX0RIX25ldygpOworIHZvaWQgcV9ESF9m cmVlKERIICpkaCk7CisgREggKnFfZDJpX0RIcGFyYW1zKERIICoqYSwgY29uc3QgdW5zaWduZWQg Y2hhciAqKnBwLCBsb25nIGxlbmd0aCk7CisgaW50IHFfaTJkX0RIcGFyYW1zKERIICphLCB1bnNp Z25lZCBjaGFyICoqcCk7CistCistI2lmbmRlZiBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisg aW50IHFfREhfY2hlY2soREggKmRoLCBpbnQgKmNvZGVzKTsKKy0jZW5kaWYgLy8gT1BFTlNTTF9O T19ERVBSRUNBVEVEXzNfMAorIAorIEJJR05VTSAqcV9CTl9iaW4yYm4oY29uc3QgdW5zaWduZWQg Y2hhciAqcywgaW50IGxlbiwgQklHTlVNICpyZXQpOworICNkZWZpbmUgcV9TU0xfQ1RYX3NldF90 bXBfZGgoY3R4LCBkaCkgcV9TU0xfQ1RYX2N0cmwoKGN0eCksIFNTTF9DVFJMX1NFVF9UTVBfREgs IDAsIChjaGFyICopZGgpCitAQCAtNzU0LDYgKzc0OSwxNyBAQCB2b2lkIHFfQ1JZUFRPX2ZyZWUo dm9pZCAqc3RyLCBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSk7CisgaW50IHFfU1NMX0NUWF9n ZXRfc2VjdXJpdHlfbGV2ZWwoY29uc3QgU1NMX0NUWCAqY3R4KTsKKyB2b2lkIHFfU1NMX0NUWF9z ZXRfc2VjdXJpdHlfbGV2ZWwoU1NMX0NUWCAqY3R4LCBpbnQgbGV2ZWwpOworIAorKy8vIEhlcmUg d2UgaGF2ZSB0aGUgb25lcyB0aGF0IG1ha2UgZGlmZmVyZW5jZSBiZXR3ZWVuIE9wZW5TU0wgcHJl L3Bvc3QgdjM6CisrI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJTSU9OX01BSk9SKSAmJiBPUEVOU1NM X1ZFUlNJT05fTUFKT1IgPj0gMworK1g1MDkgKnFfU1NMX2dldDFfcGVlcl9jZXJ0aWZpY2F0ZShT U0wgKmEpOworKyNkZWZpbmUgcV9TU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUgcV9TU0xfZ2V0MV9w ZWVyX2NlcnRpZmljYXRlCisraW50IHFfRVZQX1BLRVlfZ2V0X2Jhc2VfaWQoY29uc3QgRVZQX1BL RVkgKnBrZXkpOworKyNkZWZpbmUgcV9FVlBfUEtFWV9iYXNlX2lkIHFfRVZQX1BLRVlfZ2V0X2Jh c2VfaWQKKysjZWxzZQorK1g1MDkgKnFfU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKFNTTCAqYSk7 CisraW50IHFfRVZQX1BLRVlfYmFzZV9pZChFVlBfUEtFWSAqYSk7CisrI2VuZGlmIC8vIE9QRU5T U0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrCisgUVRfRU5EX05BTUVTUEFDRQorIAorICNlbmRpZgor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2VnbGNvbnZlbmllbmNlL3F0 X2VnbF9wLmggYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9l Z2xfcC5oCitpbmRleCBiZjM3ZDA3ZmQ4Li5kYmQ0MmZiNzk5IDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2UvcXRfZWdsX3AuaAorKysrIGIvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2UvcXRfZWdsX3AuaAorQEAgLTYx LDcgKzYxLDExIEBACisgIyBpZiAhZGVmaW5lZChRX09TX0lOVEVHUklUWSkKKyAjICBkZWZpbmUg V0lOX0lOVEVSRkFDRV9DVVNUT00gICAvLyBOVgorICMgZW5kaWYgLy8gUV9PU19JTlRFR1JJVFkK Ky0jZW5kaWYgIC8vIFFUX0VHTF9OT19YMTEKKysjZWxzZSAvLyBRVF9FR0xfTk9fWDExCisrLy8g SWYgb25lIGhhcyBhbiBlZ2xwbGF0Zm9ybS5oIHdpdGggaHR0cHM6Ly9naXRodWIuY29tL0tocm9u b3NHcm91cC9FR0wtUmVnaXN0cnkvcHVsbC8xMzAKKysvLyB0aGF0IG5lZWRzIFVTRV9YMTEgdG8g YmUgZGVmaW5lZC4KKysjIGRlZmluZSBVU0VfWDExCisrI2VuZGlmCisgCisgI2lmZGVmIFFUX0VH TF9XQVlMQU5ECisgIyBkZWZpbmUgV0FZTEFORCAvLyBOVgorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L2ZvbnRkYXRhYmFzZXMvZm9udGNvbmZpZy9xZm9udGNvbmZpZ2Rh dGFiYXNlLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ZvbnRkYXRhYmFzZXMvZm9u dGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNlLmNwcAoraW5kZXggMTU5YjQ5MGNlMC4uMDBhYTgw Y2Q1OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ZvbnRkYXRhYmFz ZXMvZm9udGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9w bGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNlcy9mb250Y29uZmlnL3Fmb250Y29uZmlnZGF0YWJh c2UuY3BwCitAQCAtNTY3LDYgKzU2Nyw4IEBAIHZvaWQgUUZvbnRjb25maWdEYXRhYmFzZTo6cG9w dWxhdGVGb250RGF0YWJhc2UoKQorICAgICAgICAgZm9udHMgPSBGY0ZvbnRMaXN0KG51bGxwdHIs IHBhdHRlcm4sIG9zKTsKKyAgICAgICAgIEZjT2JqZWN0U2V0RGVzdHJveShvcyk7CisgICAgICAg ICBGY1BhdHRlcm5EZXN0cm95KHBhdHRlcm4pOworKyAgICAgICAgaWYgKCFmb250cykKKysgICAg ICAgICAgICByZXR1cm47CisgICAgIH0KKyAKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmb250 cy0+bmZvbnQ7IGkrKykKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9p bnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbi5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9y dC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbi5jcHAKK2luZGV4IGI3MTNjMTk0NDcuLjdjYjlh OGM3OWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jj b21tb24vcXhrYmNvbW1vbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lu cHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uLmNwcAorQEAgLTk1LDYgKzk1LDcgQEAgc3RhdGljIGNv bnN0ZXhwciBjb25zdCBhdXRvIEtleVRibCA9IHFNYWtlQXJyYXkoCisgICAgICAgICBYa2IyUXQ8 WEtCX0tFWV9DbGVhciwgICAgICAgICAgICAgICAgICAgUXQ6OktleV9EZWxldGU+LAorICAgICAg ICAgWGtiMlF0PFhLQl9LRVlfUGF1c2UsICAgICAgICAgICAgICAgICAgIFF0OjpLZXlfUGF1c2U+ LAorICAgICAgICAgWGtiMlF0PFhLQl9LRVlfUHJpbnQsICAgICAgICAgICAgICAgICAgIFF0OjpL ZXlfUHJpbnQ+LAorKyAgICAgICAgWGtiMlF0PFhLQl9LRVlfU3lzX1JlcSwgICAgICAgICAgICAg ICAgIFF0OjpLZXlfU3lzUmVxPiwKKyAgICAgICAgIFhrYjJRdDwweDEwMDVGRjYwLCAgICAgICAg ICAgICAgICAgICAgICBRdDo6S2V5X1N5c1JlcT4sICAgICAgICAgLy8gaGFyZGNvZGVkIFN1biBT eXNSZXEKKyAgICAgICAgIFhrYjJRdDwweDEwMDdmZjAwLCAgICAgICAgICAgICAgICAgICAgICBR dDo6S2V5X1N5c1JlcT4sICAgICAgICAgLy8gaGFyZGNvZGVkIFgzODYgU3lzUmVxCisgCitAQCAt NDcxLDcgKzQ3Miw3IEBAIFFWZWN0b3I8eGtiX2tleXN5bV90PiBRWGtiQ29tbW9uOjp0b0tleXN5 bShRS2V5RXZlbnQgKmV2ZW50KQorICAgICB9IGVsc2UgaWYgKGV2ZW50LT5tb2RpZmllcnMoKSAm IFF0OjpLZXlwYWRNb2RpZmllcikgeworICAgICAgICAgaWYgKHF0S2V5ID49IFF0OjpLZXlfMCAm JiBxdEtleSA8PSBRdDo6S2V5XzkpCisgICAgICAgICAgICAga2V5c3ltcy5hcHBlbmQoWEtCX0tF WV9LUF8wICsgKHF0S2V5IC0gUXQ6OktleV8wKSk7CistICAgIH0gZWxzZSBpZiAoaXNMYXRpbihx dEtleSkgJiYgZXZlbnQtPnRleHQoKS5pc1VwcGVyKCkpIHsKKysgICAgfSBlbHNlIGlmIChpc0xh dGluMShxdEtleSkgJiYgZXZlbnQtPnRleHQoKS5pc1VwcGVyKCkpIHsKKyAgICAgICAgIGtleXN5 bXMuYXBwZW5kKHF0S2V5KTsKKyAgICAgfQorIAorQEAgLTUyMyw3ICs1MjQsNyBAQCBpbnQgUVhr YkNvbW1vbjo6a2V5c3ltVG9RdEtleSh4a2Jfa2V5c3ltX3Qga2V5c3ltLCBRdDo6S2V5Ym9hcmRN b2RpZmllcnMgbW9kaWZpZQorICAgICAgICAgLy8gV2l0aCBzdGFuZGFyZCBzaG9ydGN1dHMgd2Ug c2hvdWxkIHByZWZlciBhIGxhdGluIGNoYXJhY3RlciwgdGhpcyBpcworICAgICAgICAgLy8gZm9y IGNoZWNrcyBsaWtlICJzb21lIHFrZXlldmVudCA9PSBRS2V5U2VxdWVuY2U6OkNvcHkiIHRvIHdv cmsgZXZlbgorICAgICAgICAgLy8gd2hlbiB1c2luZyBmb3IgZXhhbXBsZSAncnVzc2lhbicga2V5 Ym9hcmQgbGF5b3V0LgorLSAgICAgICAgaWYgKCFRWGtiQ29tbW9uOjppc0xhdGluKGtleXN5bSkp IHsKKysgICAgICAgIGlmICghUVhrYkNvbW1vbjo6aXNMYXRpbjEoa2V5c3ltKSkgeworICAgICAg ICAgICAgIHhrYl9rZXlzeW1fdCBsYXRpbktleXN5bSA9IFFYa2JDb21tb246Omxvb2t1cExhdGlu S2V5c3ltKHN0YXRlLCBjb2RlKTsKKyAgICAgICAgICAgICBpZiAobGF0aW5LZXlzeW0gIT0gWEtC X0tFWV9Ob1N5bWJvbCkKKyAgICAgICAgICAgICAgICAga2V5c3ltID0gbGF0aW5LZXlzeW07CitA QCAtNTQ2LDcgKzU0Nyw3IEBAIHN0YXRpYyBpbnQga2V5c3ltVG9RdEtleV9pbnRlcm5hbCh4a2Jf a2V5c3ltX3Qga2V5c3ltLCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kCisgICAgIH0gZWxzZSBp ZiAoa2V5c3ltID49IFhLQl9LRVlfS1BfMCAmJiBrZXlzeW0gPD0gWEtCX0tFWV9LUF85KSB7Cisg ICAgICAgICAvLyBudW1lcmljIGtleXBhZCBrZXlzCisgICAgICAgICBxdEtleSA9IFF0OjpLZXlf MCArIChrZXlzeW0gLSBYS0JfS0VZX0tQXzApOworLSAgICB9IGVsc2UgaWYgKFFYa2JDb21tb246 OmlzTGF0aW4oa2V5c3ltKSkgeworKyAgICB9IGVsc2UgaWYgKFFYa2JDb21tb246OmlzTGF0aW4x KGtleXN5bSkpIHsKKyAgICAgICAgIHF0S2V5ID0gUVhrYkNvbW1vbjo6cXhrYmNvbW1vbl94a2Jf a2V5c3ltX3RvX3VwcGVyKGtleXN5bSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICAvLyBjaGVj ayBpZiB3ZSBoYXZlIGEgZGlyZWN0IG1hcHBpbmcKK0BAIC02NzgsNyArNjc5LDcgQEAgUUxpc3Q8 aW50PiBRWGtiQ29tbW9uOjpwb3NzaWJsZUtleXMoeGtiX3N0YXRlICpzdGF0ZSwgY29uc3QgUUtl eUV2ZW50ICpldmVudCwKKyAgICAgICAgIFF0OjpLZXlib2FyZE1vZGlmaWVycyBuZWVkZWRNb2Rz ID0gTW9kc1RibFtpXTsKKyAgICAgICAgIGlmICgobW9kaWZpZXJzICYgbmVlZGVkTW9kcykgPT0g bmVlZGVkTW9kcykgeworICAgICAgICAgICAgIGlmIChpID09IDgpIHsKKy0gICAgICAgICAgICAg ICAgaWYgKGlzTGF0aW4oYmFzZVF0S2V5KSkKKysgICAgICAgICAgICAgICAgaWYgKGlzTGF0aW4x KGJhc2VRdEtleSkpCisgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg ICAgICAgLy8gYWRkIGEgbGF0aW4ga2V5IGFzIGEgZmFsbCBiYWNrIGtleQorICAgICAgICAgICAg ICAgICBzeW0gPSBsb29rdXBMYXRpbktleXN5bShzdGF0ZSwga2V5Y29kZSk7CitAQCAtNzMzLDcg KzczNCw3IEBAIHZvaWQgUVhrYkNvbW1vbjo6dmVyaWZ5SGFzTGF0aW5MYXlvdXQoeGtiX2tleW1h cCAqa2V5bWFwKQorICAgICBmb3IgKHhrYl9sYXlvdXRfaW5kZXhfdCBsYXlvdXQgPSAwOyBsYXlv dXQgPCBsYXlvdXRDb3VudDsgKytsYXlvdXQpIHsKKyAgICAgICAgIGZvciAoeGtiX2tleWNvZGVf dCBjb2RlID0gbWluS2V5Y29kZTsgY29kZSA8IG1heEtleWNvZGU7ICsrY29kZSkgeworICAgICAg ICAgICAgIHhrYl9rZXltYXBfa2V5X2dldF9zeW1zX2J5X2xldmVsKGtleW1hcCwgY29kZSwgbGF5 b3V0LCAwLCAma2V5c3ltcyk7CistICAgICAgICAgICAgaWYgKGtleXN5bXMgJiYgaXNMYXRpbihr ZXlzeW1zWzBdKSkKKysgICAgICAgICAgICBpZiAoa2V5c3ltcyAmJiBpc0xhdGluMShrZXlzeW1z WzBdKSkKKyAgICAgICAgICAgICAgICAgbnJMYXRpbktleXMrKzsKKyAgICAgICAgICAgICBpZiAo bnJMYXRpbktleXMgPiAxMCkgLy8gYXJiaXRyYXJpbHkgY2hvc2VuIHRocmVzaG9sZAorICAgICAg ICAgICAgICAgICByZXR1cm47CitAQCAtNzY2LDcgKzc2Nyw3IEBAIHhrYl9rZXlzeW1fdCBRWGti Q29tbW9uOjpsb29rdXBMYXRpbktleXN5bSh4a2Jfc3RhdGUgKnN0YXRlLCB4a2Jfa2V5Y29kZV90 IGtleWNvCisgICAgICAgICB4a2JfbGV2ZWxfaW5kZXhfdCBsZXZlbCA9IHhrYl9zdGF0ZV9rZXlf Z2V0X2xldmVsKHN0YXRlLCBrZXljb2RlLCBsYXlvdXQpOworICAgICAgICAgaWYgKHhrYl9rZXlt YXBfa2V5X2dldF9zeW1zX2J5X2xldmVsKGtleW1hcCwga2V5Y29kZSwgbGF5b3V0LCBsZXZlbCwg JnN5bXMpICE9IDEpCisgICAgICAgICAgICAgY29udGludWU7CistICAgICAgICBpZiAoaXNMYXRp bihzeW1zWzBdKSkgeworKyAgICAgICAgaWYgKGlzTGF0aW4xKHN5bXNbMF0pKSB7CisgICAgICAg ICAgICAgc3ltID0gc3ltc1swXTsKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhr YmNvbW1vbl9wLmggYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24v cXhrYmNvbW1vbl9wLmgKK2luZGV4IDU2MWVhZTAzZGIuLjgzODliZDhmNWEgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbl9w LmgKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGti Y29tbW9uX3AuaAorQEAgLTk0LDggKzk0LDggQEAgcHVibGljOgorICAgICBzdGF0aWMgdm9pZCB2 ZXJpZnlIYXNMYXRpbkxheW91dCh4a2Jfa2V5bWFwICprZXltYXApOworICAgICBzdGF0aWMgeGti X2tleXN5bV90IGxvb2t1cExhdGluS2V5c3ltKHhrYl9zdGF0ZSAqc3RhdGUsIHhrYl9rZXljb2Rl X3Qga2V5Y29kZSk7CisgCistICAgIHN0YXRpYyBib29sIGlzTGF0aW4oeGtiX2tleXN5bV90IHN5 bSkgeworLSAgICAgICAgcmV0dXJuICgoc3ltID49ICdhJyAmJiBzeW0gPD0gJ3onKSB8fCAoc3lt ID49ICdBJyAmJiBzeW0gPD0gJ1onKSk7CisrICAgIHN0YXRpYyBib29sIGlzTGF0aW4xKHhrYl9r ZXlzeW1fdCBzeW0pIHsKKysgICAgICAgIHJldHVybiBzeW0gPD0gMHhmZjsKKyAgICAgfQorICAg ICBzdGF0aWMgYm9vbCBpc0tleXBhZCh4a2Jfa2V5c3ltX3Qgc3ltKSB7CisgICAgICAgICByZXR1 cm4gc3ltID49IFhLQl9LRVlfS1BfU3BhY2UgJiYgc3ltIDw9IFhLQl9LRVlfS1BfOTsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2 aWNlLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ttc2NvbnZlbmllbmNlL3FrbXNk ZXZpY2UuY3BwCitpbmRleCA4Y2Q3ZjliMzY4Li40MDZmODQ2NjNmIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2UvcWttc2RldmljZS5jcHAKKysr KyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ttc2NvbnZlbmllbmNlL3FrbXNkZXZpY2Uu Y3BwCitAQCAtMzE4LDcgKzMxOCw3IEBAIFFQbGF0Zm9ybVNjcmVlbiAqUUttc0RldmljZTo6Y3Jl YXRlU2NyZWVuRm9yQ29ubmVjdG9yKGRybU1vZGVSZXNQdHIgcmVzb3VyY2VzLAorIAorICAgICBp ZiAoY3VycmVudCA8IDAgJiYgY3J0Y19tb2RlLmNsb2NrICE9IDApIHsKKyAgICAgICAgIG1vZGVz IDw8IGNydGNfbW9kZTsKKy0gICAgICAgIGN1cnJlbnQgPSBtb2RlLnNpemUoKSAtIDE7CisrICAg ICAgICBjdXJyZW50ID0gbW9kZXMuc2l6ZSgpIC0gMTsKKyAgICAgfQorIAorICAgICBpZiAoY29u ZmlndXJhdGlvbiA9PSBPdXRwdXRDb25maWdDdXJyZW50KQorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3BwIGIv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2F0c3BpYWRhcHRv ci5jcHAKK2luZGV4IDkxNTNmZDIwYmIuLjI1NWVhNWUzM2UgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvYXRzcGlhZGFwdG9yLmNwcAor KysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2F0c3Bp YWRhcHRvci5jcHAKK0BAIC0xOTQsNiArMTk0LDkgQEAgUVN0cmluZyBBdFNwaUFkYXB0b3I6Omlu dHJvc3BlY3QoY29uc3QgUVN0cmluZyAmcGF0aCkgY29uc3QKKyAgICAgICAgICAgICAgICAgIiAg ICAgIDxhcmcgZGlyZWN0aW9uPVwib3V0XCIgdHlwZT1cIihzbylcIi8+XG4iCisgICAgICAgICAg ICAgICAgICIgICAgICA8YW5ub3RhdGlvbiB2YWx1ZT1cIlFTcGlPYmplY3RSZWZlcmVuY2VcIiBu YW1lPVwib3JnLnF0cHJvamVjdC5RdERCdXMuUXRUeXBlTmFtZS5PdXQwXCIvPlxuIgorICAgICAg ICAgICAgICAgICAiICAgIDwvbWV0aG9kPlxuIgorKyAgICAgICAgICAgICAgICAiICAgIDxtZXRo b2QgbmFtZT1cIkdldEFjY2Vzc2libGVJZFwiPlxuIgorKyAgICAgICAgICAgICAgICAiICAgICAg PGFyZyBkaXJlY3Rpb249XCJvdXRcIiB0eXBlPVwic1wiLz5cbiIKKysgICAgICAgICAgICAgICAg IiAgICA8L21ldGhvZD5cbiIKKyAgICAgICAgICAgICAgICAgIiAgPC9pbnRlcmZhY2U+XG4iCisg ICAgICAgICAgICAgICAgICk7CisgCitAQCAtOTEzLDggKzkxNiwxNyBAQCB2b2lkIEF0U3BpQWRh cHRvcjo6bm90aWZ5KFFBY2Nlc3NpYmxlRXZlbnQgKmV2ZW50KQorICAgICB9CisgICAgIGNhc2Ug UUFjY2Vzc2libGU6Ok5hbWVDaGFuZ2VkOiB7CisgICAgICAgICBpZiAoc2VuZE9iamVjdCB8fCBz ZW5kT2JqZWN0X3Byb3BlcnR5X2NoYW5nZSB8fCBzZW5kT2JqZWN0X3Byb3BlcnR5X2NoYW5nZV9h Y2Nlc3NpYmxlX25hbWUpIHsKKy0gICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50 ZXJmYWNlKGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNlKCkpOworLSAgICAgICAgICAgIFFWYXJp YW50TGlzdCBhcmdzID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoUUxhdGluMVN0cmluZygiYWNj ZXNzaWJsZS1uYW1lIiksIDAsIDAsIHZhcmlhbnRGb3JQYXRoKHBhdGgpKTsKKysgICAgICAgICAg ICBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UgPSBldmVudC0+YWNjZXNzaWJsZUludGVyZmFj ZSgpOworKyAgICAgICAgICAgIGlmICghaWZhY2UpIHsKKysgICAgICAgICAgICAgICAgcUNEZWJ1 ZyhsY0FjY2Vzc2liaWxpdHlBdHNwaSwKKysgICAgICAgICAgICAgICAgICAgICAgICAiTmFtZUNo YW5nZWQgZXZlbnQgZnJvbSBpbnZhbGlkIGFjY2Vzc2libGUuIik7CisrICAgICAgICAgICAgICAg IHJldHVybjsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgUVN0cmluZyBwYXRoID0g cGF0aEZvckludGVyZmFjZShpZmFjZSk7CisrICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3Mg PSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cygKKysgICAgICAgICAgICAgICAgUUxhdGluMVN0cmlu ZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsCisrICAgICAgICAgICAgICAgIFFWYXJpYW50Ojpm cm9tVmFsdWUoUURCdXNWYXJpYW50KGlmYWNlLT50ZXh0KFFBY2Nlc3NpYmxlOjpOYW1lKSkpKTsK KyAgICAgICAgICAgICBzZW5kREJ1c1NpZ25hbChwYXRoLCBRTGF0aW4xU3RyaW5nKEFUU1BJX0RC VVNfSU5URVJGQUNFX0VWRU5UX09CSkVDVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg UUxhdGluMVN0cmluZygiUHJvcGVydHlDaGFuZ2UiKSwgYXJncyk7CisgICAgICAgICB9CitAQCAt OTIyLDggKzkzNCwxNyBAQCB2b2lkIEF0U3BpQWRhcHRvcjo6bm90aWZ5KFFBY2Nlc3NpYmxlRXZl bnQgKmV2ZW50KQorICAgICB9CisgICAgIGNhc2UgUUFjY2Vzc2libGU6OkRlc2NyaXB0aW9uQ2hh bmdlZDogeworICAgICAgICAgaWYgKHNlbmRPYmplY3QgfHwgc2VuZE9iamVjdF9wcm9wZXJ0eV9j aGFuZ2UgfHwgc2VuZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2VfYWNjZXNzaWJsZV9kZXNjcmlwdGlv bikgeworLSAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRlcmZhY2UoZXZlbnQt PmFjY2Vzc2libGVJbnRlcmZhY2UoKSk7CistICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3Mg PSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cyhRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLWRlc2Ny aXB0aW9uIiksIDAsIDAsIHZhcmlhbnRGb3JQYXRoKHBhdGgpKTsKKysgICAgICAgICAgICBRQWNj ZXNzaWJsZUludGVyZmFjZSAqaWZhY2UgPSBldmVudC0+YWNjZXNzaWJsZUludGVyZmFjZSgpOwor KyAgICAgICAgICAgIGlmICghaWZhY2UpIHsKKysgICAgICAgICAgICAgICAgcUNEZWJ1ZyhsY0Fj Y2Vzc2liaWxpdHlBdHNwaSwKKysgICAgICAgICAgICAgICAgICAgICAgICAiRGVzY3JpcHRpb25D aGFuZ2VkIGV2ZW50IGZyb20gaW52YWxpZCBhY2Nlc3NpYmxlLiIpOworKyAgICAgICAgICAgICAg ICByZXR1cm47CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9 IHBhdGhGb3JJbnRlcmZhY2UoaWZhY2UpOworKyAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdz ID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoCisrICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJp bmcoImFjY2Vzc2libGUtZGVzY3JpcHRpb24iKSwgMCwgMCwKKysgICAgICAgICAgICAgICAgUVZh cmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoaWZhY2UtPnRleHQoUUFjY2Vzc2libGU6OkRl c2NyaXB0aW9uKSkpKTsKKyAgICAgICAgICAgICBzZW5kREJ1c1NpZ25hbChwYXRoLCBRTGF0aW4x U3RyaW5nKEFUU1BJX0RCVVNfSU5URVJGQUNFX0VWRU5UX09CSkVDVCksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUHJvcGVydHlDaGFuZ2UiKSwgYXJncyk7Cisg ICAgICAgICB9CitAQCAtMTAzOCw3ICsxMDU5LDkgQEAgdm9pZCBBdFNwaUFkYXB0b3I6Om5vdGlm eShRQWNjZXNzaWJsZUV2ZW50ICpldmVudCkKKyAgICAgICAgICAgICAgICAgLy8gQ29tYm8gQm94 IHdpdGggQVQtU1BJIGxpa2VzIHRvIGJlIHNwZWNpYWwKKyAgICAgICAgICAgICAgICAgLy8gSXQg cmVxdWlyZXMgYSBuYW1lLWNoYW5nZSB0byB1cGRhdGUgY2FjaGVzIGFuZCB0aGVuIHNlbGVjdGlv bi1jaGFuZ2VkCisgICAgICAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRlcmZh Y2UoaWZhY2UpOworLSAgICAgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJnczEgPSBwYWNrREJ1 c1NpZ25hbEFyZ3VtZW50cyhRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLW5hbWUiKSwgMCwgMCwg dmFyaWFudEZvclBhdGgocGF0aCkpOworKyAgICAgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJn czEgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cygKKysgICAgICAgICAgICAgICAgICAgIFFMYXRp bjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIpLCAwLCAwLAorKyAgICAgICAgICAgICAgICAgICAg UVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoaWZhY2UtPnRleHQoUUFjY2Vzc2libGU6 Ok5hbWUpKSkpOworICAgICAgICAgICAgICAgICBzZW5kREJ1c1NpZ25hbChwYXRoLCBRTGF0aW4x U3RyaW5nKEFUU1BJX0RCVVNfSU5URVJGQUNFX0VWRU5UX09CSkVDVCksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIlByb3BlcnR5Q2hhbmdlIiksIGFyZ3Mx KTsKKyAgICAgICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MyID0gcGFja0RCdXNTaWduYWxB cmd1bWVudHMoUVN0cmluZygpLCAwLCAwLCBRVmFyaWFudDo6ZnJvbVZhbHVlKFFEQnVzVmFyaWFu dChRVmFyaWFudCgwKSkpKTsKK0BAIC0xMzU4LDYgKzEzODEsMjYgQEAgdm9pZCBBdFNwaUFkYXB0 b3I6OnJlZ2lzdGVyQXBwbGljYXRpb24oKQorICAgICBkZWxldGUgcmVnaXN0cnk7CisgfQorIAor K25hbWVzcGFjZSB7CisrUVN0cmluZyBhY2Nlc3NpYmxlSWRGb3JBY2Nlc3NpYmxlKFFBY2Nlc3Np YmxlSW50ZXJmYWNlICphY2Nlc3NpYmxlKQorK3sKKysgICAgUVN0cmluZyByZXN1bHQ7CisrICAg IHdoaWxlIChhY2Nlc3NpYmxlKSB7CisrICAgICAgICBpZiAoIXJlc3VsdC5pc0VtcHR5KCkpCisr ICAgICAgICAgICAgcmVzdWx0LnByZXBlbmQoUUxhdGluMUNoYXIoJy4nKSk7CisrICAgICAgICBp ZiAoYXV0byBvYmogPSBhY2Nlc3NpYmxlLT5vYmplY3QoKSkgeworKyAgICAgICAgICAgIGNvbnN0 IFFTdHJpbmcgbmFtZSA9IG9iai0+b2JqZWN0TmFtZSgpOworKyAgICAgICAgICAgIGlmICghbmFt ZS5pc0VtcHR5KCkpCisrICAgICAgICAgICAgICAgIHJlc3VsdC5wcmVwZW5kKG5hbWUpOworKyAg ICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgcmVzdWx0LnByZXBlbmQoUVN0cmluZzo6 ZnJvbVV0Zjgob2JqLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpKSk7CisrICAgICAgICB9Cisr ICAgICAgICBhY2Nlc3NpYmxlID0gYWNjZXNzaWJsZS0+cGFyZW50KCk7CisrICAgIH0KKysgICAg cmV0dXJuIHJlc3VsdDsKKyt9CisrfSAvLyBuYW1lc3BhY2UKKysKKyAvLyBBY2Nlc3NpYmxlCisg Ym9vbCBBdFNwaUFkYXB0b3I6OmFjY2Vzc2libGVJbnRlcmZhY2UoUUFjY2Vzc2libGVJbnRlcmZh Y2UgKmludGVyZmFjZSwgY29uc3QgUVN0cmluZyAmZnVuY3Rpb24sIGNvbnN0IFFEQnVzTWVzc2Fn ZSAmbWVzc2FnZSwgY29uc3QgUURCdXNDb25uZWN0aW9uICZjb25uZWN0aW9uKQorIHsKK0BAIC0x NDQxLDYgKzE0ODQsOSBAQCBib29sIEF0U3BpQWRhcHRvcjo6YWNjZXNzaWJsZUludGVyZmFjZShR QWNjZXNzaWJsZUludGVyZmFjZSAqaW50ZXJmYWNlLCBjb25zdCBRUworICAgICAgICAgICAgIGNo aWxkcmVuIDw8IHJlZjsKKyAgICAgICAgIH0KKyAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtZXNz YWdlLmNyZWF0ZVJlcGx5KFFWYXJpYW50Ojpmcm9tVmFsdWUoY2hpbGRyZW4pKSk7CisrICAgIH0g ZWxzZSBpZiAoZnVuY3Rpb24gPT0gUUxhdGluMVN0cmluZygiR2V0QWNjZXNzaWJsZUlkIikpIHsK KysgICAgICAgIHNlbmRSZXBseShjb25uZWN0aW9uLCBtZXNzYWdlLAorKyAgICAgICAgICAgICAg ICAgIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50KGFjY2Vzc2libGVJZEZvckFjY2Vz c2libGUoaW50ZXJmYWNlKSkpKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIHFDRGVidWcobGNB Y2Nlc3NpYmlsaXR5QXRzcGkpIDw8ICJXQVJOSU5HOiBBdFNwaUFkYXB0b3I6OmFjY2Vzc2libGVJ bnRlcmZhY2UgZG9lcyBub3QgaW1wbGVtZW50ICIgPDwgZnVuY3Rpb24gPDwgbWVzc2FnZS5wYXRo KCk7CisgICAgICAgICByZXR1cm4gZmFsc2U7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0 Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9uLmNwcCBiL3F0YmFz ZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9kYnVzY29ubmVjdGlvbi5j cHAKK2luZGV4IDQ1ZGRjOGU0OTYuLmNjNzM0YWJjNjMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3BwCisr KysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvZGJ1c2Nv bm5lY3Rpb24uY3BwCitAQCAtNjksNiArNjksMjEgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgREJ1 c0Nvbm5lY3Rpb246OkRCdXNDb25uZWN0aW9uKFFPYmplY3QgKnBhcmVudCkKKyAgICAgOiBRT2Jq ZWN0KHBhcmVudCksIG1fYTExeUNvbm5lY3Rpb24oUVN0cmluZygpKSwgbV9lbmFibGVkKGZhbHNl KQorIHsKKysgICAgLy8gSWYgdGhlIGJ1cyBpcyBleHBsaWNpdGx5IHNldCB2aWEgZW52IHZhciBp dCBvdmVycmlkZXMgZXZlcnl0aGluZyBlbHNlLgorKyAgICBRQnl0ZUFycmF5IGFkZHJlc3NFbnYg PSBxZ2V0ZW52KCJBVF9TUElfQlVTX0FERFJFU1MiKTsKKysgICAgaWYgKCFhZGRyZXNzRW52Lmlz RW1wdHkoKSkgeworKyAgICAgICAgLy8gT25seSBjb25uZWN0IG9uIG5leHQgbG9vcCBydW4sIGNv bm5lY3Rpb25zIHRvIG91ciBlbmFibGVkIHNpZ25hbCBhcmUKKysgICAgICAgIC8vIG9ubHkgZXN0 YWJsaXNoZWQgYWZ0ZXIgdGhlIGN0b3IgcmV0dXJucy4KKysgICAgICAgIFFNZXRhT2JqZWN0Ojpp bnZva2VNZXRob2QoCisrICAgICAgICAgICAgICAgIHRoaXMsCisrICAgICAgICAgICAgICAgIFt0 aGlzLCBhZGRyZXNzRW52XSB7CisrICAgICAgICAgICAgICAgICAgICBtX2VuYWJsZWQgPSB0cnVl OworKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdEExMXlCdXMoUVN0cmluZzo6ZnJvbUxvY2Fs OEJpdChhZGRyZXNzRW52KSk7CisrICAgICAgICAgICAgICAgIH0sCisrICAgICAgICAgICAgICAg IFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKworICAg ICAvLyBTdGFydCBtb25pdG9yaW5nIGlmICJvcmcuYTExeS5CdXMiIGlzIHJlZ2lzdGVyZWQgYXMg REJ1cyBzZXJ2aWNlLgorICAgICBRREJ1c0Nvbm5lY3Rpb24gYyA9IFFEQnVzQ29ubmVjdGlvbjo6 c2Vzc2lvbkJ1cygpOworICAgICBpZiAoIWMuaXNDb25uZWN0ZWQoKSkgeworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmlj dW5peHNlcnZpY2VzLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dl bmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNwcAoraW5kZXggMWEzY2FiMjc1ZC4uMmFi ZTAzOTEyNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2Vz L2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNwcAorKysrIGIvcXRiYXNlL3NyYy9w bGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXMu Y3BwCitAQCAtNTEsNiArNTEsOSBAQAorICNpbmNsdWRlIDxRdENvcmUvUVN0YW5kYXJkUGF0aHM+ CisgI2luY2x1ZGUgPFF0Q29yZS9RVXJsPgorIAorKyNpbmNsdWRlIDxRdEd1aS9RR3VpQXBwbGlj YXRpb24+CisrI2luY2x1ZGUgPFF0R3VpL1FXaW5kb3c+CisrCisgI2lmIFFUX0NPTkZJRyhkYnVz KQorIC8vIFRoZXNlIFF0Q29yZSBpbmNsdWRlcyBhcmUgbmVlZGVkIGZvciB4ZGctZGVza3RvcC1w b3J0YWwgc3VwcG9ydAorICNpbmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9xY29yZV91bml4X3AuaD4K K0BAIC01OCw2ICs2MSw4IEBACisgI2luY2x1ZGUgPFF0Q29yZS9RRmlsZUluZm8+CisgI2luY2x1 ZGUgPFF0Q29yZS9RVXJsUXVlcnk+CisgCisrI2luY2x1ZGUgPFF0R3VpL1FDb2xvcj4KKysKKyAj aW5jbHVkZSA8UXREQnVzL1FEQnVzQ29ubmVjdGlvbj4KKyAjaW5jbHVkZSA8UXREQnVzL1FEQnVz TWVzc2FnZT4KKyAjaW5jbHVkZSA8UXREQnVzL1FEQnVzUGVuZGluZ0NhbGw+CitAQCAtMTQyLDYg KzE0Nyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkZXRlY3RXZWJCcm93c2VyKGNvbnN0IFFCeXRl QXJyYXkgJmRlc2t0b3AsCisgICAgIH0KKyAKKyAgICAgaWYgKGRlc2t0b3AgPT0gUUJ5dGVBcnJh eSgiS0RFIikpIHsKKysgICAgICAgIGlmIChjaGVja0V4ZWN1dGFibGUoUVN0cmluZ0xpdGVyYWwo ImtkZS1vcGVuNSIpLCBicm93c2VyKSkKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgIC8vIEtvbnF1ZXJvciBsYXVuY2hlcgorICAgICAgICAgaWYgKGNoZWNrRXhlY3V0YWJsZShR U3RyaW5nTGl0ZXJhbCgia2ZtY2xpZW50IiksIGJyb3dzZXIpKSB7CisgICAgICAgICAgICAgYnJv d3Nlci0+YXBwZW5kKFFMYXRpbjFTdHJpbmcoIiBleGVjIikpOworQEAgLTI5Niw4ICszMDMsMTM1 IEBAIHN0YXRpYyBpbmxpbmUgUURCdXNNZXNzYWdlIHhkZ0Rlc2t0b3BQb3J0YWxTZW5kRW1haWwo Y29uc3QgUVVybCAmdXJsKQorIAorICAgICByZXR1cm4gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9u QnVzKCkuY2FsbChtZXNzYWdlKTsKKyB9CisrCisrbmFtZXNwYWNlIHsKKytzdHJ1Y3QgWERHRGVz a3RvcENvbG9yCisreworKyAgICBkb3VibGUgciA9IDA7CisrICAgIGRvdWJsZSBnID0gMDsKKysg ICAgZG91YmxlIGIgPSAwOworKworKyAgICBRQ29sb3IgdG9RQ29sb3IoKSBjb25zdAorKyAgICB7 CisrICAgICAgICBjb25zdGV4cHIgYXV0byByZ2JNYXggPSAyNTU7CisrICAgICAgICByZXR1cm4g eyBzdGF0aWNfY2FzdDxpbnQ+KHIgKiByZ2JNYXgpLCBzdGF0aWNfY2FzdDxpbnQ+KGcgKiByZ2JN YXgpLAorKyAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihiICogcmdiTWF4KSB9Owor KyAgICB9CisrfTsKKysKKytjb25zdCBRREJ1c0FyZ3VtZW50ICZvcGVyYXRvcj4+KGNvbnN0IFFE QnVzQXJndW1lbnQgJmFyZ3VtZW50LCBYREdEZXNrdG9wQ29sb3IgJm15U3RydWN0KQorK3sKKysg ICAgYXJndW1lbnQuYmVnaW5TdHJ1Y3R1cmUoKTsKKysgICAgYXJndW1lbnQgPj4gbXlTdHJ1Y3Qu ciA+PiBteVN0cnVjdC5nID4+IG15U3RydWN0LmI7CisrICAgIGFyZ3VtZW50LmVuZFN0cnVjdHVy ZSgpOworKyAgICByZXR1cm4gYXJndW1lbnQ7CisrfQorKworK2NsYXNzIFhkZ0Rlc2t0b3BQb3J0 YWxDb2xvclBpY2tlciA6IHB1YmxpYyBRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIKKyt7Cisr ICAgIFFfT0JKRUNUCisrcHVibGljOgorKyAgICBYZGdEZXNrdG9wUG9ydGFsQ29sb3JQaWNrZXIo Y29uc3QgUVN0cmluZyAmcGFyZW50V2luZG93SWQsIFFXaW5kb3cgKnBhcmVudCkKKysgICAgICAg IDogUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyKHBhcmVudCksIG1fcGFyZW50V2luZG93SWQo cGFyZW50V2luZG93SWQpCisrICAgIHsKKysgICAgfQorKworKyAgICB2b2lkIHBpY2tDb2xvcigp IG92ZXJyaWRlCisrICAgIHsKKysgICAgICAgIC8vIERCdXMgc2lnbmF0dXJlOgorKyAgICAgICAg Ly8gUGlja0NvbG9yIChJTiAgIHMgICAgICBwYXJlbnRfd2luZG93LAorKyAgICAgICAgLy8gICAg ICAgICAgICBJTiAgIGF7c3Z9ICBvcHRpb25zCisrICAgICAgICAvLyAgICAgICAgICAgIE9VVCAg byAgICAgIGhhbmRsZSkKKysgICAgICAgIC8vIE9wdGlvbnM6CisrICAgICAgICAvLyBoYW5kbGVf dG9rZW4gKHMpIC0gIEEgc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBsYXN0IGVsZW1l bnQgb2YgdGhlIEBoYW5kbGUuCisrCisrICAgICAgICBRREJ1c01lc3NhZ2UgbWVzc2FnZSA9IFFE QnVzTWVzc2FnZTo6Y3JlYXRlTWV0aG9kQ2FsbCgKKysgICAgICAgICAgICAgICAgUVN0cmluZ0xp dGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuRGVza3RvcCIpLCBRU3RyaW5nTGl0ZXJhbCgi L29yZy9mcmVlZGVza3RvcC9wb3J0YWwvZGVza3RvcCIpLAorKyAgICAgICAgICAgICAgICBRU3Ry aW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TY3JlZW5zaG90IiksIFFTdHJpbmdM aXRlcmFsKCJQaWNrQ29sb3IiKSk7CisrICAgICAgICBtZXNzYWdlIDw8IG1fcGFyZW50V2luZG93 SWQgPDwgUVZhcmlhbnRNYXAoKTsKKysKKysgICAgICAgIFFEQnVzUGVuZGluZ0NhbGwgcGVuZGlu Z0NhbGwgPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5hc3luY0NhbGwobWVzc2FnZSk7 CisrICAgICAgICBhdXRvIHdhdGNoZXIgPSBuZXcgUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIocGVu ZGluZ0NhbGwsIHRoaXMpOworKyAgICAgICAgY29ubmVjdCh3YXRjaGVyLCAmUURCdXNQZW5kaW5n Q2FsbFdhdGNoZXI6OmZpbmlzaGVkLCB0aGlzLAorKyAgICAgICAgICAgICAgICBbdGhpc10oUURC dXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIpIHsKKysgICAgICAgICAgICAgICAgICAgIHdh dGNoZXItPmRlbGV0ZUxhdGVyKCk7CisrICAgICAgICAgICAgICAgICAgICBRREJ1c1BlbmRpbmdS ZXBseTxRREJ1c09iamVjdFBhdGg+IHJlcGx5ID0gKndhdGNoZXI7CisrICAgICAgICAgICAgICAg ICAgICBpZiAocmVwbHkuaXNFcnJvcigpKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgcVdh cm5pbmcoIkRCdXMgY2FsbCB0byBwaWNrIGNvbG9yIGZhaWxlZDogJXMiLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHFQcmludGFibGUocmVwbHkuZXJyb3IoKS5tZXNzYWdlKCkp KTsKKysgICAgICAgICAgICAgICAgICAgICAgICBRX0VNSVQgY29sb3JQaWNrZWQoe30pOworKyAg ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBRREJ1 c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5jb25uZWN0KAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuRGVza3Rv cCIpLCByZXBseS52YWx1ZSgpLnBhdGgoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLlJlcXVlc3QiKSwgUVN0 cmluZ0xpdGVyYWwoIlJlc3BvbnNlIiksIHRoaXMsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTTE9UKGdvdENvbG9yUmVzcG9uc2UodWludCxRVmFyaWFudE1hcCkpCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KKysgICAgICAgICAgICAg ICAgICAgICAgICApOworKyAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICB9 KTsKKysgICAgfQorKworK3ByaXZhdGUgUV9TTE9UUzoKKysgICAgdm9pZCBnb3RDb2xvclJlc3Bv bnNlKHVpbnQgcmVzdWx0LCBjb25zdCBRVmFyaWFudE1hcCAmbWFwKQorKyAgICB7CisrICAgICAg ICBpZiAocmVzdWx0ICE9IDApCisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgWERHRGVz a3RvcENvbG9yIGNvbG9ye307CisrICAgICAgICBtYXAudmFsdWUoUVN0cmluZ0xpdGVyYWwoImNv bG9yIikpLnZhbHVlPFFEQnVzQXJndW1lbnQ+KCkgPj4gY29sb3I7CisrICAgICAgICBRX0VNSVQg Y29sb3JQaWNrZWQoY29sb3IudG9RQ29sb3IoKSk7CisrICAgICAgICBkZWxldGVMYXRlcigpOwor KyAgICB9CisrCisrcHJpdmF0ZToKKysgICAgY29uc3QgUVN0cmluZyBtX3BhcmVudFdpbmRvd0lk OworK307CisrfSAvLyBuYW1lc3BhY2UKKysKKyAjZW5kaWYgLy8gUVRfQ09ORklHKGRidXMpCisg CisrUUdlbmVyaWNVbml4U2VydmljZXM6OlFHZW5lcmljVW5peFNlcnZpY2VzKCkKKyt7CisrI2lm IFFUX0NPTkZJRyhkYnVzKQorKyAgICBpZiAocUVudmlyb25tZW50VmFyaWFibGVJbnRWYWx1ZSgi UVRfTk9fWERHX0RFU0tUT1BfUE9SVEFMIikgPiAwKSB7CisrICAgICAgICByZXR1cm47CisrICAg IH0KKysgICAgUURCdXNNZXNzYWdlIG1lc3NhZ2UgPSBRREJ1c01lc3NhZ2U6OmNyZWF0ZU1ldGhv ZENhbGwoCisrICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0 YWwuRGVza3RvcCIpLCBRU3RyaW5nTGl0ZXJhbCgiL29yZy9mcmVlZGVza3RvcC9wb3J0YWwvZGVz a3RvcCIpLAorKyAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AuREJ1 cy5Qcm9wZXJ0aWVzIiksIFFTdHJpbmdMaXRlcmFsKCJHZXQiKSk7CisrICAgIG1lc3NhZ2UgPDwg UVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuU2NyZWVuc2hvdCIpCisrICAg ICAgICAgICAgPDwgUVN0cmluZ0xpdGVyYWwoInZlcnNpb24iKTsKKysKKysgICAgUURCdXNQZW5k aW5nQ2FsbCBwZW5kaW5nQ2FsbCA9IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmFzeW5j Q2FsbChtZXNzYWdlKTsKKysgICAgYXV0byB3YXRjaGVyID0gbmV3IFFEQnVzUGVuZGluZ0NhbGxX YXRjaGVyKHBlbmRpbmdDYWxsKTsKKysgICAgUU9iamVjdDo6Y29ubmVjdCh3YXRjaGVyLCAmUURC dXNQZW5kaW5nQ2FsbFdhdGNoZXI6OmZpbmlzaGVkLCB3YXRjaGVyLAorKyAgICAgICAgICAgICAg ICAgICAgIFt0aGlzXShRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlcikgeworKyAgICAg ICAgICAgICAgICAgICAgICAgICB3YXRjaGVyLT5kZWxldGVMYXRlcigpOworKyAgICAgICAgICAg ICAgICAgICAgICAgICBRREJ1c1BlbmRpbmdSZXBseTxRVmFyaWFudD4gcmVwbHkgPSAqd2F0Y2hl cjsKKysgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXBseS5pc0Vycm9yKCkgJiYgcmVw bHkudmFsdWUoKS50b1VJbnQoKSA+PSAyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bV9oYXNTY3JlZW5zaG90UG9ydGFsV2l0aENvbG9yUGlja2luZyA9IHRydWU7CisrICAgICAgICAg ICAgICAgICAgICAgfSk7CisrCisrI2VuZGlmCisrfQorKworK1FQbGF0Zm9ybVNlcnZpY2VDb2xv clBpY2tlciAqUUdlbmVyaWNVbml4U2VydmljZXM6OmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVu dCkKKyt7CisrI2lmIFFUX0NPTkZJRyhkYnVzKQorKyAgICAvLyBNYWtlIGRvdWJsZSBzdXJlIHRo YXQgd2UgYXJlIGluIGEgd2F5bGFuZCBlbnZpcm9ubWVudC4gSW4gcGFydGljdWxhciBjaGVjawor KyAgICAvLyBXQVlMQU5EX0RJU1BMQVkgc28gYWxzbyBYV2F5bGFuZCBhcHBzIGJlbmVmaXQgZnJv bSBwb3J0YWwtYmFzZWQgY29sb3IgcGlja2luZy4KKysgICAgLy8gT3V0c2lkZSB3YXlsYW5kIHdl J2xsIHJhdGhlciByZWx5IG9uIG90aGVyIG1lYW5zIHRoYW4gdGhlIFhERyBkZXNrdG9wIHBvcnRh bC4KKysgICAgaWYgKCFxRW52aXJvbm1lbnRWYXJpYWJsZUlzRW1wdHkoIldBWUxBTkRfRElTUExB WSIpCisrICAgICAgICB8fCBRR3VpQXBwbGljYXRpb246OnBsYXRmb3JtTmFtZSgpLnN0YXJ0c1dp dGgoUUxhdGluMVN0cmluZygid2F5bGFuZCIpKSkgeworKyAgICAgICAgcmV0dXJuIG5ldyBYZGdE ZXNrdG9wUG9ydGFsQ29sb3JQaWNrZXIocG9ydGFsV2luZG93SWRlbnRpZmllcihwYXJlbnQpLCBw YXJlbnQpOworKyAgICB9CisrICAgIHJldHVybiBudWxscHRyOworKyNlbHNlCisrICAgIFFfVU5V U0VEKHBhcmVudCk7CisrICAgIHJldHVybiBudWxscHRyOworKyNlbmRpZgorK30KKysKKyBRQnl0 ZUFycmF5IFFHZW5lcmljVW5peFNlcnZpY2VzOjpkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdAor IHsKKyAgICAgc3RhdGljIGNvbnN0IFFCeXRlQXJyYXkgcmVzdWx0ID0gZGV0ZWN0RGVza3RvcEVu dmlyb25tZW50KCk7CitAQCAtMzUyLDYgKzQ4Niw4IEBAIGJvb2wgUUdlbmVyaWNVbml4U2Vydmlj ZXM6Om9wZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwpCisgfQorIAorICNlbHNlCisrUUdlbmVy aWNVbml4U2VydmljZXM6OlFHZW5lcmljVW5peFNlcnZpY2VzKCkgPSBkZWZhdWx0OworKworIFFC eXRlQXJyYXkgUUdlbmVyaWNVbml4U2VydmljZXM6OmRlc2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0 CisgeworICAgICByZXR1cm4gUUJ5dGVBcnJheUxpdGVyYWwoIlVOS05PV04iKTsKK0BAIC0zNzEs NiArNTA3LDMwIEBAIGJvb2wgUUdlbmVyaWNVbml4U2VydmljZXM6Om9wZW5Eb2N1bWVudChjb25z dCBRVXJsICZ1cmwpCisgICAgIHJldHVybiBmYWxzZTsKKyB9CisgCisrUVBsYXRmb3JtU2Vydmlj ZUNvbG9yUGlja2VyICpRR2VuZXJpY1VuaXhTZXJ2aWNlczo6Y29sb3JQaWNrZXIoUVdpbmRvdyAq cGFyZW50KQorK3sKKysgICAgUV9VTlVTRUQocGFyZW50KTsKKysgICAgcmV0dXJuIG51bGxwdHI7 CisrfQorKworICNlbmRpZiAvLyBRVF9OT19NVUxUSVBST0NFU1MKKyAKKytRU3RyaW5nIFFHZW5l cmljVW5peFNlcnZpY2VzOjpwb3J0YWxXaW5kb3dJZGVudGlmaWVyKFFXaW5kb3cgKndpbmRvdykK Kyt7CisrICAgIGlmIChRR3VpQXBwbGljYXRpb246OnBsYXRmb3JtTmFtZSgpID09IFFMYXRpbjFT dHJpbmcoInhjYiIpKQorKyAgICAgICAgcmV0dXJuIFFTdHJpbmdMaXRlcmFsKCJ4MTE6IikgKyBR U3RyaW5nOjpudW1iZXIod2luZG93LT53aW5JZCgpLCAxNik7CisrICAgIHJldHVybiBRU3RyaW5n KCk7CisrfQorKworK2Jvb2wgUUdlbmVyaWNVbml4U2VydmljZXM6Omhhc0NhcGFiaWxpdHkoQ2Fw YWJpbGl0eSBjYXBhYmlsaXR5KSBjb25zdAorK3sKKysgICAgc3dpdGNoIChjYXBhYmlsaXR5KSB7 CisrICAgIGNhc2UgQ2FwYWJpbGl0eTo6Q29sb3JQaWNraW5nOgorKyAgICAgICAgcmV0dXJuIG1f aGFzU2NyZWVuc2hvdFBvcnRhbFdpdGhDb2xvclBpY2tpbmc7CisrICAgIH0KKysgICAgcmV0dXJu IGZhbHNlOworK30KKysKKyBRVF9FTkRfTkFNRVNQQUNFCisrCisrI2luY2x1ZGUgInFnZW5lcmlj dW5peHNlcnZpY2VzLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9y dC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlc19wLmggYi9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2 aWNlc19wLmgKK2luZGV4IDhhYzNkZTZmMDMuLjMwOTI0ZTY0YmQgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhz ZXJ2aWNlc19wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dl bmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzX3AuaAorQEAgLTU5LDE2ICs1OSwyMSBAQCBR VF9CRUdJTl9OQU1FU1BBQ0UKKyBjbGFzcyBRR2VuZXJpY1VuaXhTZXJ2aWNlcyA6IHB1YmxpYyBR UGxhdGZvcm1TZXJ2aWNlcworIHsKKyBwdWJsaWM6CistICAgIFFHZW5lcmljVW5peFNlcnZpY2Vz KCkge30KKysgICAgUUdlbmVyaWNVbml4U2VydmljZXMoKTsKKyAKKyAgICAgUUJ5dGVBcnJheSBk ZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAKKysgICAgYm9vbCBoYXNDYXBh YmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgIGJvb2wg b3BlblVybChjb25zdCBRVXJsICZ1cmwpIG92ZXJyaWRlOworICAgICBib29sIG9wZW5Eb2N1bWVu dChjb25zdCBRVXJsICZ1cmwpIG92ZXJyaWRlOworKyAgICBRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQ aWNrZXIgKmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCA9IG51bGxwdHIpIG92ZXJyaWRlOwor KworKyAgICB2aXJ0dWFsIFFTdHJpbmcgcG9ydGFsV2luZG93SWRlbnRpZmllcihRV2luZG93ICp3 aW5kb3cpOworIAorIHByaXZhdGU6CisgICAgIFFTdHJpbmcgbV93ZWJCcm93c2VyOworICAgICBR U3RyaW5nIG1fZG9jdW1lbnRMYXVuY2hlcjsKKysgICAgYm9vbCBtX2hhc1NjcmVlbnNob3RQb3J0 YWxXaXRoQ29sb3JQaWNraW5nID0gZmFsc2U7CisgfTsKKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4 L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb24uY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1 cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb24uY3Bw CitpbmRleCAwOTQ3MGJjY2M2Li5jYzdjN2Q0ZDhhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9w bGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5l Y3Rpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJp Y3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbi5jcHAKK0BAIC02OSw2ICs2OSw3IEBA IGNvbnN0IFFTdHJpbmcgTWVudUJhclBhdGggPSBRTGF0aW4xU3RyaW5nKCIvTWVudUJhciIpOwor ICovCisgUURCdXNNZW51Q29ubmVjdGlvbjo6UURCdXNNZW51Q29ubmVjdGlvbihRT2JqZWN0ICpw YXJlbnQsIGNvbnN0IFFTdHJpbmcgJnNlcnZpY2VOYW1lKQorICAgICA6IFFPYmplY3QocGFyZW50 KQorKyAgICAsIG1fc2VydmljZU5hbWUoc2VydmljZU5hbWUpCisgICAgICwgbV9jb25uZWN0aW9u KHNlcnZpY2VOYW1lLmlzTnVsbCgpID8gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBRREJ1c0Nvbm5lY3Rpb246 OmNvbm5lY3RUb0J1cyhRREJ1c0Nvbm5lY3Rpb246OlNlc3Npb25CdXMsIHNlcnZpY2VOYW1lKSkK KyAgICAgLCBtX2RidXNXYXRjaGVyKG5ldyBRREJ1c1NlcnZpY2VXYXRjaGVyKFN0YXR1c05vdGlm aWVyV2F0Y2hlclNlcnZpY2UsIG1fY29ubmVjdGlvbiwgUURCdXNTZXJ2aWNlV2F0Y2hlcjo6V2F0 Y2hGb3JSZWdpc3RyYXRpb24sIHRoaXMpKQorQEAgLTgzLDYgKzg0LDEyIEBAIFFEQnVzTWVudUNv bm5lY3Rpb246OlFEQnVzTWVudUNvbm5lY3Rpb24oUU9iamVjdCAqcGFyZW50LCBjb25zdCBRU3Ry aW5nICZzZXJ2aWNlCisgI2VuZGlmCisgfQorIAorK1FEQnVzTWVudUNvbm5lY3Rpb246On5RREJ1 c01lbnVDb25uZWN0aW9uKCkKKyt7CisrICBpZiAoIW1fc2VydmljZU5hbWUuaXNFbXB0eSgpICYm IG1fY29ubmVjdGlvbi5pc0Nvbm5lY3RlZCgpKQorKyAgICAgIFFEQnVzQ29ubmVjdGlvbjo6ZGlz Y29ubmVjdEZyb21CdXMobV9zZXJ2aWNlTmFtZSk7CisrfQorKworIHZvaWQgUURCdXNNZW51Q29u bmVjdGlvbjo6ZGJ1c0Vycm9yKGNvbnN0IFFEQnVzRXJyb3IgJmVycm9yKQorIHsKKyAgICAgcVdh cm5pbmcoKSA8PCAiUURCdXNUcmF5SWNvbiBlbmNvdW50ZXJlZCBhIEQtQnVzIGVycm9yOiIgPDwg ZXJyb3I7CitAQCAtMTA1LDEzICsxMTIsNyBAQCB2b2lkIFFEQnVzTWVudUNvbm5lY3Rpb246OnVu cmVnaXN0ZXJUcmF5SWNvbk1lbnUoUURCdXNUcmF5SWNvbiAqaXRlbSkKKyAKKyBib29sIFFEQnVz TWVudUNvbm5lY3Rpb246OnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSkKKyB7 CistICAgIGJvb2wgc3VjY2VzcyA9IGNvbm5lY3Rpb24oKS5yZWdpc3RlclNlcnZpY2UoaXRlbS0+ aW5zdGFuY2VJZCgpKTsKKy0gICAgaWYgKCFzdWNjZXNzKSB7CistICAgICAgICBxV2FybmluZygp IDw8ICJmYWlsZWQgdG8gcmVnaXN0ZXIgc2VydmljZSIgPDwgaXRlbS0+aW5zdGFuY2VJZCgpOwor LSAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICB9CistCistICAgIHN1Y2Nlc3MgPSBjb25uZWN0 aW9uKCkucmVnaXN0ZXJPYmplY3QoU3RhdHVzTm90aWZpZXJJdGVtUGF0aCwgaXRlbSk7CisrICAg IGJvb2wgc3VjY2VzcyA9IGNvbm5lY3Rpb24oKS5yZWdpc3Rlck9iamVjdChTdGF0dXNOb3RpZmll ckl0ZW1QYXRoLCBpdGVtKTsKKyAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICB1bnJlZ2lz dGVyVHJheUljb24oaXRlbSk7CisgICAgICAgICBxV2FybmluZygpIDw8ICJmYWlsZWQgdG8gcmVn aXN0ZXIiIDw8IGl0ZW0tPmluc3RhbmNlSWQoKSA8PCBTdGF0dXNOb3RpZmllckl0ZW1QYXRoOwor QEAgLTEyNiwyMSArMTI3LDE4IEBAIGJvb2wgUURCdXNNZW51Q29ubmVjdGlvbjo6cmVnaXN0ZXJU cmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKQorIAorIGJvb2wgUURCdXNNZW51Q29ubmVjdGlv bjo6cmVnaXN0ZXJUcmF5SWNvbldpdGhXYXRjaGVyKFFEQnVzVHJheUljb24gKml0ZW0pCisgewor KyAgICBRX1VOVVNFRChpdGVtKTsKKyAgICAgUURCdXNNZXNzYWdlIHJlZ2lzdGVyTWV0aG9kID0g UURCdXNNZXNzYWdlOjpjcmVhdGVNZXRob2RDYWxsKAorICAgICAgICAgICAgICAgICBTdGF0dXNO b3RpZmllcldhdGNoZXJTZXJ2aWNlLCBTdGF0dXNOb3RpZmllcldhdGNoZXJQYXRoLCBTdGF0dXNO b3RpZmllcldhdGNoZXJTZXJ2aWNlLAorICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJS ZWdpc3RlclN0YXR1c05vdGlmaWVySXRlbSIpKTsKKy0gICAgcmVnaXN0ZXJNZXRob2Quc2V0QXJn dW1lbnRzKFFWYXJpYW50TGlzdCgpIDw8IGl0ZW0tPmluc3RhbmNlSWQoKSk7CisrICAgIHJlZ2lz dGVyTWV0aG9kLnNldEFyZ3VtZW50cyhRVmFyaWFudExpc3QoKSA8PCBtX2Nvbm5lY3Rpb24uYmFz ZVNlcnZpY2UoKSk7CisgICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uY2FsbFdpdGhDYWxsYmFjayhy ZWdpc3Rlck1ldGhvZCwgdGhpcywgU0lHTkFMKHRyYXlJY29uUmVnaXN0ZXJlZCgpKSwgU0xPVChk YnVzRXJyb3IoUURCdXNFcnJvcikpKTsKKyB9CisgCistYm9vbCBRREJ1c01lbnVDb25uZWN0aW9u Ojp1bnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSkKKyt2b2lkIFFEQnVzTWVu dUNvbm5lY3Rpb246OnVucmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKQorIHsK KyAgICAgdW5yZWdpc3RlclRyYXlJY29uTWVudShpdGVtKTsKKyAgICAgY29ubmVjdGlvbigpLnVu cmVnaXN0ZXJPYmplY3QoU3RhdHVzTm90aWZpZXJJdGVtUGF0aCk7CistICAgIGJvb2wgc3VjY2Vz cyA9IGNvbm5lY3Rpb24oKS51bnJlZ2lzdGVyU2VydmljZShpdGVtLT5pbnN0YW5jZUlkKCkpOwor LSAgICBpZiAoIXN1Y2Nlc3MpCistICAgICAgICBxV2FybmluZygpIDw8ICJmYWlsZWQgdG8gdW5y ZWdpc3RlciBzZXJ2aWNlIiA8PCBpdGVtLT5pbnN0YW5jZUlkKCk7CistICAgIHJldHVybiBzdWNj ZXNzOworIH0KKyAjZW5kaWYgLy8gUVRfTk9fU1lTVEVNVFJBWUlDT04KKyAKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUv cWRidXNtZW51Y29ubmVjdGlvbl9wLmggYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVt ZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbl9wLmgKK2luZGV4IGY0 ODQ3OTVmYmIuLjk3YmRmYWJiODUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3Vw cG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbl9wLmgK KysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVz bWVudS9xZGJ1c21lbnVjb25uZWN0aW9uX3AuaAorQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgUURC dXNNZW51Q29ubmVjdGlvbiA6IHB1YmxpYyBRT2JqZWN0CisgCisgcHVibGljOgorICAgICBRREJ1 c01lbnVDb25uZWN0aW9uKFFPYmplY3QgKnBhcmVudCA9IG51bGxwdHIsIGNvbnN0IFFTdHJpbmcg JnNlcnZpY2VOYW1lID0gUVN0cmluZygpKTsKKysgICAgflFEQnVzTWVudUNvbm5lY3Rpb24oKTsK KyAgICAgUURCdXNDb25uZWN0aW9uIGNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Nvbm5l Y3Rpb247IH0KKyAgICAgUURCdXNTZXJ2aWNlV2F0Y2hlciAqZGJ1c1dhdGNoZXIoKSBjb25zdCB7 IHJldHVybiBtX2RidXNXYXRjaGVyOyB9CisgICAgIGJvb2wgaXNTdGF0dXNOb3RpZmllckhvc3RS ZWdpc3RlcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNOb3RpZmllckhvc3RSZWdpc3RlcmVk OyB9CitAQCAtNzgsNyArNzksNyBAQCBwdWJsaWM6CisgICAgIHZvaWQgdW5yZWdpc3RlclRyYXlJ Y29uTWVudShRREJ1c1RyYXlJY29uICppdGVtKTsKKyAgICAgYm9vbCByZWdpc3RlclRyYXlJY29u KFFEQnVzVHJheUljb24gKml0ZW0pOworICAgICBib29sIHJlZ2lzdGVyVHJheUljb25XaXRoV2F0 Y2hlcihRREJ1c1RyYXlJY29uICppdGVtKTsKKy0gICAgYm9vbCB1bnJlZ2lzdGVyVHJheUljb24o UURCdXNUcmF5SWNvbiAqaXRlbSk7CisrICAgIHZvaWQgdW5yZWdpc3RlclRyYXlJY29uKFFEQnVz VHJheUljb24gKml0ZW0pOworICNlbmRpZiAvLyBRVF9OT19TWVNURU1UUkFZSUNPTgorIAorIFFf U0lHTkFMUzoKK0BAIC05MCw2ICs5MSw3IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAgICAgdm9pZCBk YnVzRXJyb3IoY29uc3QgUURCdXNFcnJvciAmZXJyb3IpOworIAorIHByaXZhdGU6CisrICAgIFFT dHJpbmcgbV9zZXJ2aWNlTmFtZTsKKyAgICAgUURCdXNDb25uZWN0aW9uIG1fY29ubmVjdGlvbjsK KyAgICAgUURCdXNTZXJ2aWNlV2F0Y2hlciAqbV9kYnVzV2F0Y2hlcjsKKyAgICAgYm9vbCBtX3N0 YXR1c05vdGlmaWVySG9zdFJlZ2lzdGVyZWQ7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0 Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXN0cmF5L3FkYnVzdHJheWljb24uY3Bw IGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXN0cmF5 L3FkYnVzdHJheWljb24uY3BwCitpbmRleCBiZWRlNzA5NzVhLi43NmJmZWM1ZTVhIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXN0 cmF5L3FkYnVzdHJheWljb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90 aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3RyYXkvcWRidXN0cmF5aWNvbi5jcHAKK0BAIC03MSw4ICs3 MSwxMiBAQCBRX0xPR0dJTkdfQ0FURUdPUlkocUxjVHJheSwgInF0LnFwYS50cmF5IikKKyBzdGF0 aWMgUVN0cmluZyBpY29uVGVtcFBhdGgoKQorIHsKKyAgICAgUVN0cmluZyB0ZW1wUGF0aCA9IFFT dGFuZGFyZFBhdGhzOjp3cml0YWJsZUxvY2F0aW9uKFFTdGFuZGFyZFBhdGhzOjpSdW50aW1lTG9j YXRpb24pOworLSAgICBpZiAoIXRlbXBQYXRoLmlzRW1wdHkoKSkKKysgICAgaWYgKCF0ZW1wUGF0 aC5pc0VtcHR5KCkpIHsKKysgICAgICAgIFFTdHJpbmcgZmxhdHBha0lkID0gcUVudmlyb25tZW50 VmFyaWFibGUoIkZMQVRQQUtfSUQiKTsKKysgICAgICAgIGlmICghZmxhdHBha0lkLmlzRW1wdHko KSAmJiBRRmlsZUluZm86OmV4aXN0cyhRTGF0aW4xU3RyaW5nKCIvLmZsYXRwYWstaW5mbyIpKSkK KysgICAgICAgICAgICB0ZW1wUGF0aCArPSBRTGF0aW4xU3RyaW5nKCIvYXBwLyIpICsgZmxhdHBh a0lkOworICAgICAgICAgcmV0dXJuIHRlbXBQYXRoOworKyAgICB9CisgCisgICAgIHRlbXBQYXRo ID0gUVN0YW5kYXJkUGF0aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0YW5kYXJkUGF0aHM6OkdlbmVy aWNDYWNoZUxvY2F0aW9uKTsKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3Vw cG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVzLmNwcCBiL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMu Y3BwCitpbmRleCBjYjFiMzlkYjY0Li42ZTAxYWYwNTJjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHRoZW1lcy5j cHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9x Z2VuZXJpY3VuaXh0aGVtZXMuY3BwCitAQCAtNzU1LDYgKzc1NSw5IEBAIFFWYXJpYW50IFFHbm9t ZVRoZW1lOjp0aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OlRoZW1lSGludCBoaW50KSBjb25zdAor ICAgICAgICAgcmV0dXJuIFFWYXJpYW50KFFDaGFyKDB4MjAyMikpOworICAgICBjYXNlIFFQbGF0 Zm9ybVRoZW1lOjpVaUVmZmVjdHM6CisgICAgICAgICByZXR1cm4gUVZhcmlhbnQoaW50KEhvdmVy RWZmZWN0KSk7CisrICAgIGNhc2UgUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5czoKKysg ICAgICAgIHJldHVybiBRVmFyaWFudDo6ZnJvbVZhbHVlKAorKyAgICAgICAgICAgICAgICBRTGlz dDxRdDo6S2V5Pih7IFF0OjpLZXlfU3BhY2UsIFF0OjpLZXlfUmV0dXJuLCBRdDo6S2V5X0VudGVy LCBRdDo6S2V5X1NlbGVjdCB9KSk7CisgICAgIGRlZmF1bHQ6CisgICAgICAgICBicmVhazsKKyAg ICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvYXBp L3FlZ2xmc2N1cnNvci5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2Fw aS9xZWdsZnNjdXJzb3IuY3BwCitpbmRleCA5OGUwNTE5NWVlLi4xZTkyZjQzZGVjIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9hcGkvcWVnbGZzY3Vyc29y LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9hcGkvcWVnbGZz Y3Vyc29yLmNwcAorQEAgLTM0Myw4ICszNDMsNyBAQCB2b2lkIFFFZ2xGU0N1cnNvcjo6cGFpbnRP blNjcmVlbigpCisgICAgIC8vIHNjcmVlbnMgYXJlIHNpYmxpbmdzIG9mIGVhY2ggb3RoZXIuIFdo ZW4gbm90IGVuYWJsZWQsIHRoZSBzaWJsaW5nIGxpc3QKKyAgICAgLy8gb25seSBjb250YWlucyBt X3NjcmVlbiBpdHNlbGYuCisgICAgIGZvciAoUVBsYXRmb3JtU2NyZWVuICpzY3JlZW4gOiBtX3Nj cmVlbi0+dmlydHVhbFNpYmxpbmdzKCkpIHsKKy0gICAgICAgIGlmIChzY3JlZW4tPmdlb21ldHJ5 KCkuY29udGFpbnMoY3IudG9wTGVmdCgpLnRvUG9pbnQoKSArIG1fY3Vyc29yLmhvdFNwb3QpCist ICAgICAgICAgICAgJiYgUU9wZW5HTENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCktPnNjcmVlbigp ID09IHNjcmVlbi0+c2NyZWVuKCkpCisrICAgICAgICBpZiAoc2NyZWVuLT5nZW9tZXRyeSgpLmNv bnRhaW5zKGNyLnRvcExlZnQoKS50b1BvaW50KCkgKyBtX2N1cnNvci5ob3RTcG90KSkKKyAgICAg ICAgIHsKKyAgICAgICAgICAgICBjci50cmFuc2xhdGUoLXNjcmVlbi0+Z2VvbWV0cnkoKS50b3BM ZWZ0KCkpOworICAgICAgICAgICAgIGNvbnN0IFFTaXplIHNjcmVlblNpemUgPSBzY3JlZW4tPmdl b21ldHJ5KCkuc2l6ZSgpOworQEAgLTQ2OCwxMSArNDY3LDEyIEBAIHZvaWQgUUVnbEZTQ3Vyc29y OjpkcmF3KGNvbnN0IFFSZWN0RiAmcikKKyB7CisgICAgIFN0YXRlU2F2ZXIgc3RhdGVTYXZlcjsK KyAKKy0gICAgUUVnbEZTQ3Vyc29yRGF0YSAmZ2Z4ID0gc3RhdGljX2Nhc3Q8UUVnbEZTQ29udGV4 dCo+KFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpLT5oYW5kbGUoKSktPmN1cnNvckRh dGE7CistICAgIGlmICghZ2Z4LnByb2dyYW0pIHsKKy0gICAgICAgIC8vIG9uZSB0aW1lIGluaXRp YWxpemF0aW9uCisrICAgIC8vIG9uZSB0aW1lIGluaXRpYWxpemF0aW9uCisrICAgIGlmICghUU9w ZW5HTEZ1bmN0aW9uczo6ZF9wdHIpCisgICAgICAgICBpbml0aWFsaXplT3BlbkdMRnVuY3Rpb25z KCk7CisgCisrICAgIFFFZ2xGU0N1cnNvckRhdGEgJmdmeCA9IHN0YXRpY19jYXN0PFFFZ2xGU0Nv bnRleHQqPihRT3BlbkdMQ29udGV4dDo6Y3VycmVudENvbnRleHQoKS0+aGFuZGxlKCkpLT5jdXJz b3JEYXRhOworKyAgICBpZiAoIWdmeC5wcm9ncmFtKSB7CisgICAgICAgICBjcmVhdGVTaGFkZXJQ cm9ncmFtcygpOworIAorICAgICAgICAgaWYgKCFnZnguYXRsYXNUZXh0dXJlKSB7CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9kZXZpY2VpbnRlZ3JhdGlv bi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNldmVudHJlYWRlci5jcHAgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWludGVncmF0aW9uL2VnbGZzX2ttc19zdXBw b3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVyLmNwcAoraW5kZXggNjQ1YTBhZTJlOS4uM2UwZTQwNmYx YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvZGV2aWNl aW50ZWdyYXRpb24vZWdsZnNfa21zX3N1cHBvcnQvcWVnbGZza21zZXZlbnRyZWFkZXIuY3BwCisr KysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWludGVncmF0aW9u L2VnbGZzX2ttc19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVyLmNwcAorQEAgLTE3OSw3ICsx NzksNyBAQCB2b2lkIFFFZ2xGU0ttc0V2ZW50UmVhZGVyOjpjcmVhdGUoUUVnbEZTS21zRGV2aWNl ICpkZXZpY2UpCisgCisgICAgIG1fZGV2aWNlID0gZGV2aWNlOworIAorLSAgICBxQ0RlYnVnKHFM Y0VnbGZzS21zRGVidWcsICJJbml0YWxpemluZyBldmVudCByZWFkZXIgZm9yIGRldmljZSAlcCBm ZCAlZCIsCisrICAgIHFDRGVidWcocUxjRWdsZnNLbXNEZWJ1ZywgIkluaXRpYWxpemluZyBldmVu dCByZWFkZXIgZm9yIGRldmljZSAlcCBmZCAlZCIsCisgICAgICAgICAgICAgbV9kZXZpY2UsIG1f ZGV2aWNlLT5mZCgpKTsKKyAKKyAgICAgbV90aHJlYWQgPSBuZXcgUUVnbEZTS21zRXZlbnRSZWFk ZXJUaHJlYWQobV9kZXZpY2UtPmZkKCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAgYi9xdGJhc2Uv c3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uY3Bw CitpbmRleCAxNDFmYjY4YTIzLi5kNDI5NGQ0MjVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmNwcAorKysr IGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVn cmF0aW9uLmNwcAorQEAgLTEyMiwxMSArMTIyLDEzIEBAIFFPZmZzY3JlZW5JbnRlZ3JhdGlvbjo6 UU9mZnNjcmVlbkludGVncmF0aW9uKCkKKyAjZW5kaWYKKyAgICAgbV9zZXJ2aWNlcy5yZXNldChu ZXcgUVBsYXRmb3JtU2VydmljZXMpOworIAorLSAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpo YW5kbGVTY3JlZW5BZGRlZChuZXcgUU9mZnNjcmVlblNjcmVlbik7CisrICAgIG1fc2NyZWVuID0g bmV3IFFPZmZzY3JlZW5TY3JlZW47CisrICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRs ZVNjcmVlbkFkZGVkKG1fc2NyZWVuKTsKKyB9CisgCisgUU9mZnNjcmVlbkludGVncmF0aW9uOjp+ UU9mZnNjcmVlbkludGVncmF0aW9uKCkKKyB7CisrICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6 OmhhbmRsZVNjcmVlblJlbW92ZWQobV9zY3JlZW4pOworIH0KKyAKKyB2b2lkIFFPZmZzY3JlZW5J bnRlZ3JhdGlvbjo6aW5pdGlhbGl6ZSgpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmggYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uaAoraW5k ZXggMGVhOTBmNmMyZi4uZmUwMGZkZTA3YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5oCisrKysgYi9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24u aAorQEAgLTg0LDYgKzg0LDcgQEAgcHJvdGVjdGVkOgorICNlbmRpZgorICAgICBRU2NvcGVkUG9p bnRlcjxRUGxhdGZvcm1JbnB1dENvbnRleHQ+IG1faW5wdXRDb250ZXh0OworICAgICBRU2NvcGVk UG9pbnRlcjxRUGxhdGZvcm1TZXJ2aWNlcz4gbV9zZXJ2aWNlczsKKysgICAgUVBsYXRmb3JtU2Ny ZWVuICptX3NjcmVlbjsKKyAgICAgbXV0YWJsZSBRU2NvcGVkUG9pbnRlcjxRUGxhdGZvcm1OYXRp dmVJbnRlcmZhY2U+IG1fbmF0aXZlSW50ZXJmYWNlOworIH07CisgCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNwcCBi L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c2dsY29udGV4dC5j cHAKK2luZGV4IDZmYTVhOGEyYjMuLjFmNDlmMGFlZmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NnbGNvbnRleHQuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NnbGNvbnRleHQuY3Bw CitAQCAtNDgsNiArNDgsNyBAQAorICNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtbmF0aXZlaW50ZXJm YWNlLmg+CisgI2luY2x1ZGUgPFF0UGxhdGZvcm1IZWFkZXJzL3F3Z2xuYXRpdmVjb250ZXh0Lmg+ CisgCisrI2luY2x1ZGUgPHByaXZhdGUvcXN5c3RlbWxpYnJhcnlfcC5oPgorICNpbmNsdWRlIDxh bGdvcml0aG0+CisgCisgI2luY2x1ZGUgPHdpbmdkaS5oPgorQEAgLTE2MiwxOSArMTYzLDI1IEBA IFFGdW5jdGlvblBvaW50ZXIgUVdpbmRvd3NPcGVuZ2wzMkRMTDo6cmVzb2x2ZShjb25zdCBjaGFy ICpuYW1lKQorIAorIGJvb2wgUVdpbmRvd3NPcGVuZ2wzMkRMTDo6aW5pdChib29sIHNvZnR3YXJl UmVuZGVyaW5nKQorIHsKKy0gICAgY29uc3QgUUJ5dGVBcnJheSBvcGVuZ2wzMiA9IFFCeXRlQXJy YXlMaXRlcmFsKCJvcGVuZ2wzMi5kbGwiKTsKKy0gICAgY29uc3QgUUJ5dGVBcnJheSBzd29wZW5n bCA9IFFCeXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMnN3LmRsbCIpOworKyAgICBjb25zdCBRQnl0 ZUFycmF5IG9wZW5nbDMyID0gUUJ5dGVBcnJheUxpdGVyYWwoIm9wZW5nbDMyIik7CisrICAgIGNv bnN0IFFCeXRlQXJyYXkgc3dvcGVuZ2wgPSBRQnl0ZUFycmF5TGl0ZXJhbCgib3BlbmdsMzJzdyIp OworKyAgICBib29sIHVzZVN5c3RlbUxpYiA9IGZhbHNlOworIAorICAgICBRQnl0ZUFycmF5IG9w ZW5nbERsbCA9IHFnZXRlbnYoIlFUX09QRU5HTF9ETEwiKTsKKy0gICAgaWYgKG9wZW5nbERsbC5p c0VtcHR5KCkpCisrICAgIGlmIChvcGVuZ2xEbGwuaXNFbXB0eSgpKSB7CisgICAgICAgICBvcGVu Z2xEbGwgPSBzb2Z0d2FyZVJlbmRlcmluZyA/IHN3b3BlbmdsIDogb3BlbmdsMzI7CisrICAgICAg ICB1c2VTeXN0ZW1MaWIgPSAhc29mdHdhcmVSZW5kZXJpbmc7CisrICAgIH0KKyAKKyAgICAgb3Bl bmdsRGxsID0gb3BlbmdsRGxsLnRvTG93ZXIoKTsKKyAgICAgbV9ub25PcGVuZ2wzMiA9IG9wZW5n bERsbCAhPSBvcGVuZ2wzMjsKKyAKKyAgICAgcUNEZWJ1ZyhsY1FwYUdsKSA8PCAiUXQ6IFVzaW5n IFdHTCBhbmQgT3BlbkdMIGZyb20iIDw8IG9wZW5nbERsbDsKKyAKKy0gICAgbV9saWIgPSA6Okxv YWRMaWJyYXJ5QShvcGVuZ2xEbGwuY29uc3REYXRhKCkpOworKyAgICBpZiAodXNlU3lzdGVtTGli KQorKyAgICAgICAgbV9saWIgPSBRU3lzdGVtTGlicmFyeTo6bG9hZCgod2NoYXJfdCopKFFTdHJp bmc6OmZyb21MYXRpbjEob3BlbmdsRGxsKS51dGYxNigpKSk7CisrICAgIGVsc2UKKysgICAgICAg IG1fbGliID0gTG9hZExpYnJhcnlBKG9wZW5nbERsbC5jb25zdERhdGEoKSk7CisgICAgIGlmICgh bV9saWIpIHsKKyAgICAgICAgIHFFcnJub1dhcm5pbmcoOjpHZXRMYXN0RXJyb3IoKSwgIkZhaWxl ZCB0byBsb2FkICVzIiwgb3BlbmdsRGxsLmNvbnN0RGF0YSgpKTsKKyAgICAgICAgIHJldHVybiBm YWxzZTsKK0BAIC0xODQsNyArMTkxLDcgQEAgYm9vbCBRV2luZG93c09wZW5nbDMyRExMOjppbml0 KGJvb2wgc29mdHdhcmVSZW5kZXJpbmcpCisgICAgICAgICAvLyBMb2FkIG9wZW5nbDMyLmRsbCBh bHdheXMuIEdESSBmdW5jdGlvbnMgbGlrZSBDaG9vc2VQaXhlbEZvcm1hdCBkbworICAgICAgICAg Ly8gR2V0TW9kdWxlSGFuZGxlIGZvciBvcGVuZ2wzMi5kbGwgYW5kIGJlaGF2ZSBkaWZmZXJlbnRs eSAoYW5kIGNhbGwgYmFjayBpbnRvCisgICAgICAgICAvLyBvcGVuZ2wzMikgd2hlbiB0aGUgbW9k dWxlIGlzIHByZXNlbnQuIFRoaXMgaXMgZmluZSBmb3IgZHVtbXkgY29udGV4dHMgYW5kIHdpbmRv d3MuCistICAgICAgICA6OkxvYWRMaWJyYXJ5QSgib3BlbmdsMzIuZGxsIik7CisrICAgICAgICBR U3lzdGVtTGlicmFyeTo6bG9hZChMIm9wZW5nbDMyIik7CisgICAgIH0KKyAKKyAgICAgd2dsQ3Jl YXRlQ29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEdMUkMgKFdJTkFQSSAqKShIREMpPihyZXNv bHZlKCJ3Z2xDcmVhdGVDb250ZXh0IikpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c29wZW5nbHRlc3Rlci5jcHAgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NvcGVuZ2x0ZXN0ZXIuY3BwCitpbmRl eCBkN2QxODZlODA0Li45ZWI0MDExYmYyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzb3BlbmdsdGVzdGVyLmNwcAorKysrIGIvcXRiYXNl L3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzb3BlbmdsdGVzdGVyLmNwcAor QEAgLTQ5LDYgKzQ5LDcgQEAKKyAjaW5jbHVkZSA8UXRDb3JlL3FzdGFuZGFyZHBhdGhzLmg+Cisg I2luY2x1ZGUgPFF0Q29yZS9xbGlicmFyeWluZm8uaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3FoYXNo Lmg+CisrI2luY2x1ZGUgPHByaXZhdGUvcXN5c3RlbWxpYnJhcnlfcC5oPgorIAorICNpZm5kZWYg UVRfTk9fT1BFTkdMCisgI2luY2x1ZGUgPHByaXZhdGUvcW9wZW5nbF9wLmg+CitAQCAtMzk2LDcg KzM5Nyw3IEBAIGJvb2wgUVdpbmRvd3NPcGVuR0xUZXN0ZXI6OnRlc3REZXNrdG9wR0woKQorIAor ICAgICAvLyBUZXN0ICMxOiBMb2FkIG9wZW5nbDMyLmRsbCBhbmQgdHJ5IHRvIHJlc29sdmUgYW4g T3BlbkdMIDIgZnVuY3Rpb24uCisgICAgIC8vIFRoaXMgd2lsbCB0eXBpY2FsbHkgZmFpbCBvbiBz eXN0ZW1zIHRoYXQgZG8gbm90IGhhdmUgYSByZWFsIE9wZW5HTCBkcml2ZXIuCistICAgIGxpYiA9 IExvYWRMaWJyYXJ5QSgib3BlbmdsMzIuZGxsIik7CisrICAgIGxpYiA9IFFTeXN0ZW1MaWJyYXJ5 Ojpsb2FkKEwib3BlbmdsMzIiKTsKKyAgICAgaWYgKGxpYikgeworICAgICAgICAgQ3JlYXRlQ29u dGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q3JlYXRlQ29udGV4dFR5cGU+KAorICAgICAgICAgICAg IHJlaW50ZXJwcmV0X2Nhc3Q8UUZ1bmN0aW9uUG9pbnRlcj4oOjpHZXRQcm9jQWRkcmVzcyhsaWIs ICJ3Z2xDcmVhdGVDb250ZXh0IikpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm1zL3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3BwIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcvcXRlc3NlbGxhdG9yLmNwcAor aW5kZXggMWFmYTAwY2ZjOS4uMTE4YWY2Y2U3MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXMveGNiL25hdGl2ZXBhaW50aW5nL3F0ZXNzZWxsYXRvci5jcHAKKysrKyBi L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL25hdGl2ZXBhaW50aW5nL3F0ZXNzZWxs YXRvci5jcHAKK0BAIC00MSw2ICs0MSw3IEBACisgCisgI2luY2x1ZGUgPFFSZWN0PgorICNpbmNs dWRlIDxRTGlzdD4KKysjaW5jbHVkZSA8UU1hcD4KKyAjaW5jbHVkZSA8UURlYnVnPgorIAorICNp bmNsdWRlIDxxbWF0aC5oPgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMveGNiL3F4Y2Jjb25uZWN0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv eGNiL3F4Y2Jjb25uZWN0aW9uLmNwcAoraW5kZXggOWUyYTM3YTZhMS4uZTZlMTc1YTExOCAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0aW9u LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmNvbm5lY3Rp b24uY3BwCitAQCAtNDg4LDEyICs0ODgsMTIgQEAgdm9pZCBRWGNiQ29ubmVjdGlvbjo6cHJpbnRY Y2JFcnJvcihjb25zdCBjaGFyICptZXNzYWdlLCB4Y2JfZ2VuZXJpY19lcnJvcl90ICplcnIKKyAg ICAgdWludCBjbGFtcGVkX2Vycm9yX2NvZGUgPSBxTWluPHVpbnQ+KGVycm9yLT5lcnJvcl9jb2Rl LCAoc2l6ZW9mKHhjYl9lcnJvcnMpIC8gc2l6ZW9mKHhjYl9lcnJvcnNbMF0pKSAtIDEpOworICAg ICB1aW50IGNsYW1wZWRfbWFqb3JfY29kZSA9IHFNaW48dWludD4oZXJyb3ItPm1ham9yX2NvZGUs IChzaXplb2YoeGNiX3Byb3RvY29sX3JlcXVlc3RfY29kZXMpIC8gc2l6ZW9mKHhjYl9wcm90b2Nv bF9yZXF1ZXN0X2NvZGVzWzBdKSkgLSAxKTsKKyAKKy0gICAgcUNXYXJuaW5nKGxjUXBhWGNiLCAi JXM6ICVkICglcyksIHNlcXVlbmNlOiAlZCwgcmVzb3VyY2UgaWQ6ICVkLCBtYWpvciBjb2RlOiAl ZCAoJXMpLCBtaW5vciBjb2RlOiAlZCIsCistICAgICAgICAgICAgIG1lc3NhZ2UsCistICAgICAg ICAgICAgIGludChlcnJvci0+ZXJyb3JfY29kZSksIHhjYl9lcnJvcnNbY2xhbXBlZF9lcnJvcl9j b2RlXSwKKy0gICAgICAgICAgICAgaW50KGVycm9yLT5zZXF1ZW5jZSksIGludChlcnJvci0+cmVz b3VyY2VfaWQpLAorLSAgICAgICAgICAgICBpbnQoZXJyb3ItPm1ham9yX2NvZGUpLCB4Y2JfcHJv dG9jb2xfcmVxdWVzdF9jb2Rlc1tjbGFtcGVkX21ham9yX2NvZGVdLAorLSAgICAgICAgICAgICBp bnQoZXJyb3ItPm1pbm9yX2NvZGUpKTsKKysgICAgcUNEZWJ1ZyhsY1FwYVhjYiwgIiVzOiAlZCAo JXMpLCBzZXF1ZW5jZTogJWQsIHJlc291cmNlIGlkOiAlZCwgbWFqb3IgY29kZTogJWQgKCVzKSwg bWlub3IgY29kZTogJWQiLAorKyAgICAgICAgICAgIG1lc3NhZ2UsCisrICAgICAgICAgICAgaW50 KGVycm9yLT5lcnJvcl9jb2RlKSwgeGNiX2Vycm9yc1tjbGFtcGVkX2Vycm9yX2NvZGVdLAorKyAg ICAgICAgICAgIGludChlcnJvci0+c2VxdWVuY2UpLCBpbnQoZXJyb3ItPnJlc291cmNlX2lkKSwK KysgICAgICAgICAgICBpbnQoZXJyb3ItPm1ham9yX2NvZGUpLCB4Y2JfcHJvdG9jb2xfcmVxdWVz dF9jb2Rlc1tjbGFtcGVkX21ham9yX2NvZGVdLAorKyAgICAgICAgICAgIGludChlcnJvci0+bWlu b3JfY29kZSkpOworIH0KKyAKKyBzdGF0aWMgUXQ6Ok1vdXNlQnV0dG9ucyB0cmFuc2xhdGVNb3Vz ZUJ1dHRvbnMoaW50IHMpCitAQCAtNzAyLDYgKzcwMiw4IEBAIHZvaWQgUVhjYkNvbm5lY3Rpb246 OmhhbmRsZVhjYkV2ZW50KHhjYl9nZW5lcmljX2V2ZW50X3QgKmV2ZW50KQorICAgICAgICAgICAg IFFYY2JWaXJ0dWFsRGVza3RvcCAqdmlydHVhbERlc2t0b3AgPSB2aXJ0dWFsRGVza3RvcEZvclJv b3RXaW5kb3cocHJvcGVydHlOb3RpZnktPndpbmRvdyk7CisgICAgICAgICAgICAgaWYgKHZpcnR1 YWxEZXNrdG9wKQorICAgICAgICAgICAgICAgICB2aXJ0dWFsRGVza3RvcC0+dXBkYXRlV29ya0Fy ZWEoKTsKKysgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlOb3RpZnktPmF0b20gPT0gYXRvbShR WGNiQXRvbTo6X05FVF9TVVBQT1JURUQpKSB7CisrICAgICAgICAgICAgbV93bVN1cHBvcnQtPnVw ZGF0ZU5ldFdNQXRvbXMoKTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgSEFORExF X1BMQVRGT1JNX1dJTkRPV19FVkVOVCh4Y2JfcHJvcGVydHlfbm90aWZ5X2V2ZW50X3QsIHdpbmRv dywgaGFuZGxlUHJvcGVydHlOb3RpZnlFdmVudCk7CisgICAgICAgICB9CitAQCAtNzUwLDcgKzc1 Miw3IEBAIHZvaWQgUVhjYkNvbm5lY3Rpb246OmhhbmRsZVhjYkV2ZW50KHhjYl9nZW5lcmljX2V2 ZW50X3QgKmV2ZW50KQorICAgICAgICAgICAgICAgICBjYXNlIFhDQl9YS0JfTkVXX0tFWUJPQVJE X05PVElGWTogeworICAgICAgICAgICAgICAgICAgICAgeGNiX3hrYl9uZXdfa2V5Ym9hcmRfbm90 aWZ5X2V2ZW50X3QgKmV2ID0gJnhrYl9ldmVudC0+bmV3X2tleWJvYXJkX25vdGlmeTsKKyAgICAg ICAgICAgICAgICAgICAgIGlmIChldi0+Y2hhbmdlZCAmIFhDQl9YS0JfTktOX0RFVEFJTF9LRVlD T0RFUykKKy0gICAgICAgICAgICAgICAgICAgICAgICBtX2tleWJvYXJkLT51cGRhdGVLZXltYXAo ZXYpOworKyAgICAgICAgICAgICAgICAgICAgICAgIG1fa2V5Ym9hcmQtPnVwZGF0ZUtleW1hcCgp OworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgZGVmYXVsdDoKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRpb24uY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy94Y2IvcXhjYmludGVncmF0aW9uLmNwcAoraW5kZXggNzY4NjljZWQ2MC4uMDJkMmVlYmI1 NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JpbnRl Z3JhdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jp bnRlZ3JhdGlvbi5jcHAKK0BAIC0yNzQsOCArMjc0LDcgQEAgUVBsYXRmb3JtV2luZG93ICpRWGNi SW50ZWdyYXRpb246OmNyZWF0ZUZvcmVpZ25XaW5kb3coUVdpbmRvdyAqd2luZG93LCBXSWQgbmF0 aXYKKyAjaWZuZGVmIFFUX05PX09QRU5HTAorIFFQbGF0Zm9ybU9wZW5HTENvbnRleHQgKlFYY2JJ bnRlZ3JhdGlvbjo6Y3JlYXRlUGxhdGZvcm1PcGVuR0xDb250ZXh0KFFPcGVuR0xDb250ZXh0ICpj b250ZXh0KSBjb25zdAorIHsKKy0gICAgUVhjYlNjcmVlbiAqc2NyZWVuID0gc3RhdGljX2Nhc3Q8 UVhjYlNjcmVlbiAqPihjb250ZXh0LT5zY3JlZW4oKS0+aGFuZGxlKCkpOworLSAgICBRWGNiR2xJ bnRlZ3JhdGlvbiAqZ2xJbnRlZ3JhdGlvbiA9IHNjcmVlbi0+Y29ubmVjdGlvbigpLT5nbEludGVn cmF0aW9uKCk7CisrICAgIFFYY2JHbEludGVncmF0aW9uICpnbEludGVncmF0aW9uID0gZGVmYXVs dENvbm5lY3Rpb24oKS0+Z2xJbnRlZ3JhdGlvbigpOworICAgICBpZiAoIWdsSW50ZWdyYXRpb24p IHsKKyAgICAgICAgIHFXYXJuaW5nKCJRWGNiSW50ZWdyYXRpb246IENhbm5vdCBjcmVhdGUgcGxh dGZvcm0gT3BlbkdMIGNvbnRleHQsIG5laXRoZXIgR0xYIG5vciBFR0wgYXJlIGVuYWJsZWQiKTsK KyAgICAgICAgIHJldHVybiBudWxscHRyOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuY3BwCitpbmRleCBlZmVjZDdlMmQxLi5lODI4NjM4MWEy IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJv YXJkLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJv YXJkLmNwcAorQEAgLTM2NSwxNyArMzY1LDYgQEAgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtl eW1hcCh4Y2JfbWFwcGluZ19ub3RpZnlfZXZlbnRfdCAqZXZlbnQpCisgICAgIHVwZGF0ZUtleW1h cCgpOworIH0KKyAKKy12b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKHhjYl94a2JfbmV3 X2tleWJvYXJkX25vdGlmeV9ldmVudF90ICpldmVudCkKKy17CistICAgIGlmICghZXZlbnQpCist ICAgICAgICByZXR1cm47CistCistICAgIGlmIChldmVudC0+ZGV2aWNlSUQgIT0gZXZlbnQtPm9s ZERldmljZUlEKQorLSAgICAgICAgbV9jb25maWcgPSBmYWxzZTsKKy0KKy0gICAgdXBkYXRlS2V5 bWFwKCk7CistfQorLQorIHZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoKQorIHsKKyAg ICAgS2V5c3ltTW9kaWZpZXJNYXAga2V5c3ltTW9kczsKK0BAIC0zODMsNiArMzcyLDggQEAgdm9p ZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCgpCisgICAgICAgICBrZXlzeW1Nb2RzID0ga2V5 c3ltc1RvTW9kaWZpZXJzKCk7CisgICAgIHVwZGF0ZU1vZGlmaWVycyhrZXlzeW1Nb2RzKTsKKyAK KysgICAgbV9jb25maWcgPSB0cnVlOworKworICAgICBpZiAoIW1feGtiQ29udGV4dCkgeworICAg ICAgICAgbV94a2JDb250ZXh0LnJlc2V0KHhrYl9jb250ZXh0X25ldyhYS0JfQ09OVEVYVF9OT19E RUZBVUxUX0lOQ0xVREVTKSk7CisgICAgICAgICBpZiAoIW1feGtiQ29udGV4dCkgeworQEAgLTM5 OCwxMyArMzg5LDggQEAgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCgpCisgICAgIGlm IChjb25uZWN0aW9uKCktPmhhc1hLQigpKSB7CisgICAgICAgICBtX3hrYktleW1hcC5yZXNldCh4 a2JfeDExX2tleW1hcF9uZXdfZnJvbV9kZXZpY2UobV94a2JDb250ZXh0LmdldCgpLCB4Y2JfY29u bmVjdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvcmVfZGV2aWNlX2lkLCBYS0JfS0VZTUFQX0NPTVBJTEVfTk9fRkxBR1Mp KTsKKy0gICAgICAgIGlmIChtX3hrYktleW1hcCkgeworLSAgICAgICAgICAgIGlmIChtX2NvbmZp ZykKKy0gICAgICAgICAgICAgICAgbV94a2JTdGF0ZS5yZXNldCh4a2Jfc3RhdGVfbmV3KG1feGti S2V5bWFwLmdldCgpKSk7CistICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICBtX3hr YlN0YXRlLnJlc2V0KHhrYl94MTFfc3RhdGVfbmV3X2Zyb21fZGV2aWNlKG1feGtiS2V5bWFwLmdl dCgpLCB4Y2JfY29ubmVjdGlvbigpLCBjb3JlX2RldmljZV9pZCkpOworLQorLSAgICAgICAgfQor KyAgICAgICAgaWYgKG1feGtiS2V5bWFwKQorKyAgICAgICAgICAgIG1feGtiU3RhdGUucmVzZXQo eGtiX3gxMV9zdGF0ZV9uZXdfZnJvbV9kZXZpY2UobV94a2JLZXltYXAuZ2V0KCksIHhjYl9jb25u ZWN0aW9uKCksIGNvcmVfZGV2aWNlX2lkKSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICBtX3hr YktleW1hcC5yZXNldChrZXltYXBGcm9tQ29yZShrZXlzeW1Nb2RzKSk7CisgICAgICAgICBpZiAo bV94a2JLZXltYXApCitAQCAtNDI1LDggKzQxMSw2IEBAIHZvaWQgUVhjYktleWJvYXJkOjp1cGRh dGVLZXltYXAoKQorICAgICB1cGRhdGVYS0JNb2RzKCk7CisgCisgICAgIFFYa2JDb21tb246OnZl cmlmeUhhc0xhdGluTGF5b3V0KG1feGtiS2V5bWFwLmdldCgpKTsKKy0KKy0gICAgbV9jb25maWcg PSB0cnVlOworIH0KKyAKKyBRTGlzdDxpbnQ+IFFYY2JLZXlib2FyZDo6cG9zc2libGVLZXlzKGNv bnN0IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmggYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuaAoraW5kZXggYjY1MmM4NWZlMy4uMGVlMDhhZWZmMiAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2Fy ZC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQu aAorQEAgLTY5LDcgKzY5LDYgQEAgcHVibGljOgorIAorICAgICBRdDo6S2V5Ym9hcmRNb2RpZmll cnMgdHJhbnNsYXRlTW9kaWZpZXJzKGludCBzKSBjb25zdDsKKyAgICAgdm9pZCB1cGRhdGVLZXlt YXAoeGNiX21hcHBpbmdfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KTsKKy0gICAgdm9pZCB1cGRhdGVL ZXltYXAoeGNiX3hrYl9uZXdfa2V5Ym9hcmRfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KTsKKyAgICAg dm9pZCB1cGRhdGVLZXltYXAoKTsKKyAgICAgUUxpc3Q8aW50PiBwb3NzaWJsZUtleXMoY29uc3Qg UUtleUV2ZW50ICpldmVudCkgY29uc3Q7CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm1zL3hjYi9xeGNid2luZG93LmNwcAoraW5kZXggZmZkYTdiNmE1Ny4uODYzZTk2MWY0YyAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmNw cAorQEAgLTU2NCwxMSArNTY0LDYgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRHZW9tZXRyeShjb25z dCBRUmVjdCAmcmVjdCkKKyB7CisgICAgIFFQbGF0Zm9ybVdpbmRvdzo6c2V0R2VvbWV0cnkocmVj dCk7CisgCistICAgIGlmIChzaG91bGREZWZlclRhc2soVGFzazo6U2V0R2VvbWV0cnkpKSB7Cist ICAgICAgICBtX2RlZmVycmVkR2VvbWV0cnkgPSByZWN0OworLSAgICAgICAgcmV0dXJuOworLSAg ICB9CistCisgICAgIHByb3BhZ2F0ZVNpemVIaW50cygpOworIAorICAgICBRWGNiU2NyZWVuICpj dXJyZW50U2NyZWVuID0geGNiU2NyZWVuKCk7CitAQCAtNjkzLDkgKzY4OCw2IEBAIHZvaWQgUVhj YldpbmRvdzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCisgCisgdm9pZCBRWGNiV2luZG93Ojpz aG93KCkKKyB7CistICAgIGlmIChzaG91bGREZWZlclRhc2soVGFzazo6TWFwKSkKKy0gICAgICAg IHJldHVybjsKKy0KKyAgICAgaWYgKHdpbmRvdygpLT5pc1RvcExldmVsKCkpIHsKKyAKKyAgICAg ICAgIC8vIHVwZGF0ZSBXTV9OT1JNQUxfSElOVFMKK0BAIC03MDYsNyArNjk4LDcgQEAgdm9pZCBR WGNiV2luZG93OjpzaG93KCkKKyAgICAgICAgIGlmIChpc1RyYW5zaWVudCh3aW5kb3coKSkpIHsK KyAgICAgICAgICAgICBjb25zdCBRV2luZG93ICp0cCA9IHdpbmRvdygpLT50cmFuc2llbnRQYXJl bnQoKTsKKyAgICAgICAgICAgICBpZiAodHAgJiYgdHAtPmhhbmRsZSgpKQorLSAgICAgICAgICAg ICAgICB0cmFuc2llbnRYY2JQYXJlbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBRWGNiV2luZG93ICo+ KHRwLT5oYW5kbGUoKSktPndpbklkKCk7CisrICAgICAgICAgICAgICAgIHRyYW5zaWVudFhjYlBh cmVudCA9IHRwLT5oYW5kbGUoKS0+d2luSWQoKTsKKyAgICAgICAgICAgICAvLyBEZWZhdWx0IHRv IGNsaWVudCBsZWFkZXIgaWYgdGhlcmUgaXMgbm8gdHJhbnNpZW50IHBhcmVudCwgZWxzZSBtb2Rh bCBkaWFsb2dzIGNhbgorICAgICAgICAgICAgIC8vIGJlIGhpZGRlbiBieSB0aGVpciBwYXJlbnRz LgorICAgICAgICAgICAgIGlmICghdHJhbnNpZW50WGNiUGFyZW50KQorQEAgLTc0NiwxMCArNzM4 LDYgQEAgdm9pZCBRWGNiV2luZG93OjpzaG93KCkKKyAKKyB2b2lkIFFYY2JXaW5kb3c6OmhpZGUo KQorIHsKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpVbm1hcCkpCistICAgICAgICBy ZXR1cm47CistCistICAgIG1fd21TdGF0ZVZhbGlkID0gZmFsc2U7CisgICAgIHhjYl91bm1hcF93 aW5kb3coeGNiX2Nvbm5lY3Rpb24oKSwgbV93aW5kb3cpOworIAorICAgICAvLyBzZW5kIHN5bnRo ZXRpYyBVbm1hcE5vdGlmeSBldmVudCBhY2NvcmRpbmcgdG8gaWNjY20gNC4xLjQKK0BAIC05MDks OSArODk3LDYgQEAgUVhjYldpbmRvdzo6TmV0V21TdGF0ZXMgUVhjYldpbmRvdzo6bmV0V21TdGF0 ZXMoKQorIAorIHZvaWQgUVhjYldpbmRvdzo6c2V0V2luZG93RmxhZ3MoUXQ6OldpbmRvd0ZsYWdz IGZsYWdzKQorIHsKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpTZXRXaW5kb3dGbGFn cykpCistICAgICAgICByZXR1cm47CistCisgICAgIFF0OjpXaW5kb3dUeXBlIHR5cGUgPSBzdGF0 aWNfY2FzdDxRdDo6V2luZG93VHlwZT4oaW50KGZsYWdzICYgUXQ6OldpbmRvd1R5cGVfTWFzaykp OworIAorICAgICBpZiAodHlwZSA9PSBRdDo6VG9vbFRpcCkKK0BAIC05NDEsOCArOTI2LDYgQEAg dm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dGbGFncyhRdDo6V2luZG93RmxhZ3MgZmxhZ3MpCisg CisgICAgIHNldFRyYW5zcGFyZW50Rm9yTW91c2VFdmVudHMoZmxhZ3MgJiBRdDo6V2luZG93VHJh bnNwYXJlbnRGb3JJbnB1dCk7CisgICAgIHVwZGF0ZURvZXNOb3RBY2NlcHRGb2N1cyhmbGFncyAm IFF0OjpXaW5kb3dEb2VzTm90QWNjZXB0Rm9jdXMpOworLQorLSAgICBtX2lzV21NYW5hZ2VkV2lu ZG93ID0gIShmbGFncyAmIFF0OjpYMTFCeXBhc3NXaW5kb3dNYW5hZ2VySGludCk7CisgfQorIAor IHZvaWQgUVhjYldpbmRvdzo6c2V0TW90aWZXbUhpbnRzKFF0OjpXaW5kb3dGbGFncyBmbGFncykK K0BAIC0xMTQyLDkgKzExMjUsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldFdpbmRvd1N0YXRlKFF0 OjpXaW5kb3dTdGF0ZXMgc3RhdGUpCisgICAgIGlmIChzdGF0ZSA9PSBtX3dpbmRvd1N0YXRlKQor ICAgICAgICAgcmV0dXJuOworIAorLSAgICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6OlNldFdp bmRvd1N0YXRlKSkKKy0gICAgICAgIHJldHVybjsKKy0KKyAgICAgLy8gdW5zZXQgb2xkIHN0YXRl CisgICAgIGlmIChtX3dpbmRvd1N0YXRlICYgUXQ6OldpbmRvd01pbmltaXplZCkKKyAgICAgICAg IHhjYl9tYXBfd2luZG93KHhjYl9jb25uZWN0aW9uKCksIG1fd2luZG93KTsKK0BAIC0xMzUwLDYg KzEzMzAsMTIgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dJY29uKGNvbnN0IFFJY29uICZp Y29uKQorICAgICB9CisgCisgICAgIGlmICghaWNvbl9kYXRhLmlzRW1wdHkoKSkgeworKyAgICAg ICAgLy8gSWdub3JlIGljb24gZXhjZWVkaW5nIG1heGltdW0geGNiIHJlcXVlc3QgbGVuZ3RoCisr ICAgICAgICBpZiAoaWNvbl9kYXRhLnNpemUoKSA+IHhjYl9nZXRfbWF4aW11bV9yZXF1ZXN0X2xl bmd0aCh4Y2JfY29ubmVjdGlvbigpKSkgeworKyAgICAgICAgICAgIHFXYXJuaW5nKCJJZ25vcmlu ZyB3aW5kb3cgaWNvbjogU2l6ZSAlbGx1IGV4Y2VlZHMgbWF4aW11bSB4Y2IgcmVxdWVzdCBsZW5n dGggJXUuIiwKKysgICAgICAgICAgICAgICAgICAgICBpY29uX2RhdGEuc2l6ZSgpLCB4Y2JfZ2V0 X21heGltdW1fcmVxdWVzdF9sZW5ndGgoeGNiX2Nvbm5lY3Rpb24oKSkpOworKyAgICAgICAgICAg IHJldHVybjsKKysgICAgICAgIH0KKyAgICAgICAgIHhjYl9jaGFuZ2VfcHJvcGVydHkoeGNiX2Nv bm5lY3Rpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWENCX1BST1BfTU9ERV9S RVBMQUNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3dpbmRvdywKK0BAIC0xNjM5 LDcgKzE2MjUsNyBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldFdtV2luZG93VHlwZShRWGNiV2luZG93 RnVuY3Rpb25zOjpXbVdpbmRvd1R5cGVzIHR5cGVzLCBRdDo6VworICAgICAgICAgYnJlYWs7Cisg ICAgIH0KKyAKKy0gICAgaWYgKChmbGFncyAmIFF0OjpGcmFtZWxlc3NXaW5kb3dIaW50KSAmJiAh KHR5cGUgJiBRWGNiV2luZG93RnVuY3Rpb25zOjpLZGVPdmVycmlkZSkpIHsKKysgICAgaWYgKChm bGFncyAmIFF0OjpGcmFtZWxlc3NXaW5kb3dIaW50KSAmJiAhKHR5cGVzICYgUVhjYldpbmRvd0Z1 bmN0aW9uczo6S2RlT3ZlcnJpZGUpKSB7CisgICAgICAgICAvLyBvdmVycmlkZSBuZXR3bSB0eXBl IC0gcXVpY2sgYW5kIGVhc3kgZm9yIEtERSBub2JvcmRlcgorICAgICAgICAgYXRvbXMuYXBwZW5k KGF0b20oUVhjYkF0b206Ol9LREVfTkVUX1dNX1dJTkRPV19UWVBFX09WRVJSSURFKSk7CisgICAg IH0KK0BAIC0xODk0LDEwICsxODgwLDYgQEAgdm9pZCBRWGNiV2luZG93OjpoYW5kbGVVbm1hcE5v dGlmeUV2ZW50KGNvbnN0IHhjYl91bm1hcF9ub3RpZnlfZXZlbnRfdCAqZXZlbnQpCisgICAgIGlm IChldmVudC0+d2luZG93ID09IG1fd2luZG93KSB7CisgICAgICAgICBtX21hcHBlZCA9IGZhbHNl OworICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlRXhwb3NlRXZlbnQod2lu ZG93KCksIFFSZWdpb24oKSk7CistICAgICAgICBpZiAoIW1faXNXbU1hbmFnZWRXaW5kb3cgfHwg cGFyZW50KCkpIHsKKy0gICAgICAgICAgICBtX3dtU3RhdGVWYWxpZCA9IHRydWU7CistICAgICAg ICAgICAgaGFuZGxlRGVmZXJyZWRUYXNrcygpOworLSAgICAgICAgfQorICAgICB9CisgfQorIAor QEAgLTIyMTIsOTggKzIxOTQsMzAgQEAgdm9pZCBRWGNiV2luZG93OjpoYW5kbGVMZWF2ZU5vdGlm eUV2ZW50KGNvbnN0IHhjYl9sZWF2ZV9ub3RpZnlfZXZlbnRfdCAqZXZlbnQpCisgICAgIGhhbmRs ZUxlYXZlTm90aWZ5RXZlbnQoZXZlbnQtPnJvb3RfeCwgZXZlbnQtPnJvb3RfeSwgZXZlbnQtPm1v ZGUsIGV2ZW50LT5kZXRhaWwsIGV2ZW50LT50aW1lKTsKKyB9CisgCistYm9vbCBRWGNiV2luZG93 OjpzaG91bGREZWZlclRhc2soVGFzayB0YXNrKQorLXsKKy0gICAgaWYgKG1fd21TdGF0ZVZhbGlk KQorLSAgICAgICAgcmV0dXJuIGZhbHNlOworLQorLSAgICBtX2RlZmVycmVkVGFza3MuYXBwZW5k KHRhc2spOworLSAgICByZXR1cm4gdHJ1ZTsKKy19CistCistdm9pZCBRWGNiV2luZG93OjpoYW5k bGVEZWZlcnJlZFRhc2tzKCkKKy17CistICAgIFFfQVNTRVJUKG1fd21TdGF0ZVZhbGlkID09IHRy dWUpOworLSAgICBpZiAobV9kZWZlcnJlZFRhc2tzLmlzRW1wdHkoKSkKKy0gICAgICAgIHJldHVy bjsKKy0KKy0gICAgYm9vbCBtYXAgPSBmYWxzZTsKKy0gICAgYm9vbCB1bm1hcCA9IGZhbHNlOwor LQorLSAgICBRVmVjdG9yPFRhc2s+IHRhc2tzOworLSAgICBmb3IgKGF1dG8gdGFza0l0ID0gbV9k ZWZlcnJlZFRhc2tzLnJiZWdpbigpOyB0YXNrSXQgIT0gbV9kZWZlcnJlZFRhc2tzLnJlbmQoKTsg Kyt0YXNrSXQpIHsKKy0gICAgICAgIGlmICghdGFza3MuY29udGFpbnMoKnRhc2tJdCkpCistICAg ICAgICAgICAgdGFza3MucHJlcGVuZCgqdGFza0l0KTsKKy0gICAgfQorLQorLSAgICBmb3IgKFRh c2sgdGFzayA6IHRhc2tzKSB7CistICAgICAgICBzd2l0Y2ggKHRhc2spIHsKKy0gICAgICAgIGNh c2UgVGFzazo6TWFwOgorLSAgICAgICAgICAgIG1hcCA9IHRydWU7CistICAgICAgICAgICAgdW5t YXAgPSBmYWxzZTsKKy0gICAgICAgICAgICBicmVhazsKKy0gICAgICAgIGNhc2UgVGFzazo6VW5t YXA6CistICAgICAgICAgICAgdW5tYXAgPSB0cnVlOworLSAgICAgICAgICAgIG1hcCA9IGZhbHNl OworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBUYXNrOjpTZXRHZW9tZXRyeToK Ky0gICAgICAgICAgICBzZXRHZW9tZXRyeShtX2RlZmVycmVkR2VvbWV0cnkpOworLSAgICAgICAg ICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBUYXNrOjpTZXRXaW5kb3dGbGFnczoKKy0gICAgICAg ICAgICBzZXRXaW5kb3dGbGFncyh3aW5kb3coKS0+ZmxhZ3MoKSk7CistICAgICAgICAgICAgYnJl YWs7CistICAgICAgICBjYXNlIFRhc2s6OlNldFdpbmRvd1N0YXRlOgorLSAgICAgICAgICAgIHNl dFdpbmRvd1N0YXRlKHdpbmRvdygpLT53aW5kb3dTdGF0ZSgpKTsKKy0gICAgICAgICAgICBicmVh azsKKy0gICAgICAgIH0KKy0gICAgfQorLSAgICBtX2RlZmVycmVkVGFza3MuY2xlYXIoKTsKKy0K Ky0gICAgaWYgKG1hcCkgeworLSAgICAgICAgUV9BU1NFUlQodW5tYXAgPT0gZmFsc2UpOworLSAg ICAgICAgc2hvdygpOworLSAgICB9CistICAgIGlmICh1bm1hcCkgeworLSAgICAgICAgUV9BU1NF UlQobWFwID09IGZhbHNlKTsKKy0gICAgICAgIGhpZGUoKTsKKy0gICAgfQorLX0KKy0KKyB2b2lk IFFYY2JXaW5kb3c6OmhhbmRsZVByb3BlcnR5Tm90aWZ5RXZlbnQoY29uc3QgeGNiX3Byb3BlcnR5 X25vdGlmeV9ldmVudF90ICpldmVudCkKKyB7CisgICAgIGNvbm5lY3Rpb24oKS0+c2V0VGltZShl dmVudC0+dGltZSk7CisgCistICAgIGNvbnN0IGJvb2wgd21TdGF0ZUNoYW5nZWQgPSBldmVudC0+ YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSk7CistICAgIGNvbnN0IGJvb2wgbmV0V21T dGF0ZUNoYW5nZWQgPSBldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpfTkVUX1dNX1NUQVRF KTsKKy0gICAgaWYgKG5ldFdtU3RhdGVDaGFuZ2VkIHx8IHdtU3RhdGVDaGFuZ2VkKSB7CistICAg ICAgICBpZiAod21TdGF0ZUNoYW5nZWQgJiYgIW1fd21TdGF0ZVZhbGlkICYmIG1faXNXbU1hbmFn ZWRXaW5kb3cpIHsKKy0gICAgICAgICAgICAvLyBJQ0NDTSA0LjEuNAorLSAgICAgICAgICAgIC8v IENsaWVudHMgdGhhdCB3YW50IHRvIHJlLXVzZSBhIGNsaWVudCB3aW5kb3cgKGUuZy4gYnkgbWFw cGluZyBpdCBhZ2FpbikKKy0gICAgICAgICAgICAvLyBhZnRlciB3aXRoZHJhd2luZyBpdCBtdXN0 IHdhaXQgZm9yIHRoZSB3aXRoZHJhd2FsIHRvIGJlIGNvbXBsZXRlIGJlZm9yZQorLSAgICAgICAg ICAgIC8vIHByb2NlZWRpbmcuIFRoZSBwcmVmZXJyZWQgbWV0aG9kIGZvciBkb2luZyB0aGlzIGlz IGZvciBjbGllbnRzIHRvIHdhaXQgZm9yCistICAgICAgICAgICAgLy8gYSB3aW5kb3cgbWFuYWdl ciB0byB1cGRhdGUgb3IgcmVtb3ZlIHRoZSBXTV9TVEFURSBwcm9wZXJ0eS4KKy0gICAgICAgICAg ICBtX3dtU3RhdGVWYWxpZCA9IHRydWU7CistICAgICAgICAgICAgaGFuZGxlRGVmZXJyZWRUYXNr cygpOworLSAgICAgICAgfQorLSAgICAgICAgaWYgKGV2ZW50LT5zdGF0ZSA9PSBYQ0JfUFJPUEVS VFlfREVMRVRFKQorKyAgICBjb25zdCBib29sIHByb3BlcnR5RGVsZXRlZCA9IGV2ZW50LT5zdGF0 ZSA9PSBYQ0JfUFJPUEVSVFlfREVMRVRFOworKworKyAgICBpZiAoZXZlbnQtPmF0b20gPT0gYXRv bShRWGNiQXRvbTo6X05FVF9XTV9TVEFURSkgfHwgZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRv bTo6V01fU1RBVEUpKSB7CisrICAgICAgICBpZiAocHJvcGVydHlEZWxldGVkKQorICAgICAgICAg ICAgIHJldHVybjsKKyAKKy0gICAgICAgIGlmICh3bVN0YXRlQ2hhbmdlZCkgeworKyAgICAgICAg UXQ6OldpbmRvd1N0YXRlcyBuZXdTdGF0ZSA9IFF0OjpXaW5kb3dOb1N0YXRlOworKworKyAgICAg ICAgaWYgKGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206OldNX1NUQVRFKSkgeyAvLyBXTV9T VEFURTogUXVpY2sgY2hlY2sgZm9yICdNaW5pbWl6ZScuCisgICAgICAgICAgICAgYXV0byByZXBs eSA9IFFfWENCX1JFUExZKHhjYl9nZXRfcHJvcGVydHksIHhjYl9jb25uZWN0aW9uKCksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIG1fd2luZG93LCBhdG9tKFFYY2JB dG9tOjpXTV9TVEFURSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhD Ql9BVE9NX0FOWSwgMCwgMTAyNCk7CisgICAgICAgICAgICAgaWYgKHJlcGx5ICYmIHJlcGx5LT5m b3JtYXQgPT0gMzIgJiYgcmVwbHktPnR5cGUgPT0gYXRvbShRWGNiQXRvbTo6V01fU1RBVEUpKSB7 CistICAgICAgICAgICAgICAgIGF1dG8gZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IHF1aW50MzIg Kj4oeGNiX2dldF9wcm9wZXJ0eV92YWx1ZShyZXBseS5nZXQoKSkpOworLSAgICAgICAgICAgICAg ICBpZiAocmVwbHktPmxlbmd0aCAhPSAwKSB7CistICAgICAgICAgICAgICAgICAgICBjb25zdCBi b29sIGNoYW5nZWRUb1dpdGhkcmF3biA9IGRhdGFbMF0gPT0gWENCX0lDQ0NNX1dNX1NUQVRFX1dJ VEhEUkFXTjsKKy0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgY2hhbmdlZFRvSWNvbmlj ID0gZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RBVEVfSUNPTklDOworLSAgICAgICAgICAgICAg ICAgICAgbV9taW5pbWl6ZWQgPSBjaGFuZ2VkVG9JY29uaWMgfHwgKGNoYW5nZWRUb1dpdGhkcmF3 biAmJiBtX21pbmltaXplZCk7CistICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAg Y29uc3QgcXVpbnQzMiAqZGF0YSA9IChjb25zdCBxdWludDMyICopeGNiX2dldF9wcm9wZXJ0eV92 YWx1ZShyZXBseS5nZXQoKSk7CisrICAgICAgICAgICAgICAgIGlmIChyZXBseS0+bGVuZ3RoICE9 IDApCisrICAgICAgICAgICAgICAgICAgICBtX21pbmltaXplZCA9IChkYXRhWzBdID09IFhDQl9J Q0NDTV9XTV9TVEFURV9JQ09OSUMKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHx8IChkYXRhWzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9XSVRIRFJBV04gJiYgbV9taW5pbWl6 ZWQpKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgCistICAgICAgICAvLyBfTkVUX1dN X1NUQVRFIGhhbmRsaW5nCistICAgICAgICBRdDo6V2luZG93U3RhdGVzIG5ld1N0YXRlID0gUXQ6 OldpbmRvd05vU3RhdGU7CisgICAgICAgICBjb25zdCBOZXRXbVN0YXRlcyBzdGF0ZXMgPSBuZXRX bVN0YXRlcygpOworICAgICAgICAgLy8gX05FVF9XTV9TVEFURV9ISURERU4gc2hvdWxkIGJlIHNl dCBieSB0aGUgV2luZG93IE1hbmFnZXIgdG8gaW5kaWNhdGUgdGhhdCBhIHdpbmRvdyB3b3VsZAor ICAgICAgICAgLy8gbm90IGJlIHZpc2libGUgb24gdGhlIHNjcmVlbiBpZiBpdHMgZGVza3RvcC92 aWV3cG9ydCB3ZXJlIGFjdGl2ZSBhbmQgaXRzIGNvb3JkaW5hdGVzIHdlcmUKK0BAIC0yMzI1LDYg KzIyMzksNyBAQCB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZVByb3BlcnR5Tm90aWZ5RXZlbnQoY29u c3QgeGNiX3Byb3BlcnR5X25vdGlmeV9ldmVudF90ICpldgorICAgICAgICAgICAgIGlmICgobV93 aW5kb3dTdGF0ZSAmIFF0OjpXaW5kb3dNaW5pbWl6ZWQpICYmIGNvbm5lY3Rpb24oKS0+bW91c2VH cmFiYmVyKCkgPT0gdGhpcykKKyAgICAgICAgICAgICAgICAgY29ubmVjdGlvbigpLT5zZXRNb3Vz ZUdyYWJiZXIobnVsbHB0cik7CisgICAgICAgICB9CisrICAgICAgICByZXR1cm47CisgICAgIH0g ZWxzZSBpZiAoZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6X05FVF9GUkFNRV9FWFRFTlRT KSkgeworICAgICAgICAgbV9kaXJ0eUZyYW1lTWFyZ2lucyA9IHRydWU7CisgICAgIH0KK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmggYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmgKK2luZGV4IDU1YWY5 Mjc5YjEuLjZmNWMxZjVlZDkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm1zL3hjYi9xeGNid2luZG93LmgKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv eGNiL3F4Y2J3aW5kb3cuaAorQEAgLTc0LDE0ICs3NCw2IEBAIHB1YmxpYzoKKyAKKyAgICAgUV9E RUNMQVJFX0ZMQUdTKE5ldFdtU3RhdGVzLCBOZXRXbVN0YXRlKQorIAorLSAgICBlbnVtIFRhc2sg eworLSAgICAgICAgTWFwLAorLSAgICAgICAgVW5tYXAsCistICAgICAgICBTZXRHZW9tZXRyeSwK Ky0gICAgICAgIFNldFdpbmRvd0ZsYWdzLAorLSAgICAgICAgU2V0V2luZG93U3RhdGUKKy0gICAg fTsKKy0KKyAgICAgUVhjYldpbmRvdyhRV2luZG93ICp3aW5kb3cpOworICAgICB+UVhjYldpbmRv dygpOworIAorQEAgLTE1MSw5ICsxNDMsNiBAQCBwdWJsaWM6CisgCisgICAgIFFYY2JXaW5kb3cg KnRvV2luZG93KCkgb3ZlcnJpZGU7CisgCistICAgIGJvb2wgc2hvdWxkRGVmZXJUYXNrKFRhc2sg dGFzayk7CistICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRUYXNrcygpOworLQorICAgICB2b2lkIGhh bmRsZU1vdXNlRXZlbnQoeGNiX3RpbWVzdGFtcF90IHRpbWUsIGNvbnN0IFFQb2ludCAmbG9jYWws IGNvbnN0IFFQb2ludCAmZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUXQ6Oktl eWJvYXJkTW9kaWZpZXJzIG1vZGlmaWVycywgUUV2ZW50OjpUeXBlIHR5cGUsIFF0OjpNb3VzZUV2 ZW50U291cmNlIHNvdXJjZSk7CisgCitAQCAtMjkyLDExICsyODEsNiBAQCBwcm90ZWN0ZWQ6Cisg ICAgIGludCBtX3N3YXBJbnRlcnZhbCA9IC0xOworIAorICAgICBxcmVhbCBtX3NpemVIaW50c1Nj YWxlRmFjdG9yID0gMS4wOworLQorLSAgICBib29sIG1fd21TdGF0ZVZhbGlkID0gdHJ1ZTsKKy0g ICAgUVZlY3RvcjxUYXNrPiBtX2RlZmVycmVkVGFza3M7CistICAgIGJvb2wgbV9pc1dtTWFuYWdl ZFdpbmRvdyA9IHRydWU7CistICAgIFFSZWN0IG1fZGVmZXJyZWRHZW9tZXRyeTsKKyB9OworIAor IGNsYXNzIFFYY2JGb3JlaWduV2luZG93IDogcHVibGljIFFYY2JXaW5kb3cKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMvZ3RrMy9xZ3RrM21lbnUuY3BwIGIv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL2d0azMvcWd0azNtZW51LmNwcAoraW5k ZXggZDlkMTE3ZmFlYi4uNjQwYjQ5ZGFhMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAKK0BAIC04NSw2ICs4NSw3IEBA IFFHdGszTWVudUl0ZW06OlFHdGszTWVudUl0ZW0oKQorICAgICAgIG1fY2hlY2thYmxlKGZhbHNl KSwKKyAgICAgICBtX2NoZWNrZWQoZmFsc2UpLAorICAgICAgIG1fZW5hYmxlZCh0cnVlKSwKKysg ICAgICBtX2V4Y2x1c2l2ZShmYWxzZSksCisgICAgICAgbV91bmRlcmxpbmUoZmFsc2UpLAorICAg ICAgIG1faW52YWxpZCh0cnVlKSwKKyAgICAgICBtX21lbnUobnVsbHB0ciksCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhk Z2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZy5jcHAK K2luZGV4IDAwNDhiYmMxZTYuLjM5NmU3ZjZkMWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZp bGVkaWFsb2cuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRn ZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2cuY3BwCitAQCAtMTAyLDE1 ICsxMDIsMTIgQEAgY29uc3QgUURCdXNBcmd1bWVudCAmb3BlcmF0b3IgPj4oY29uc3QgUURCdXNB cmd1bWVudCAmYXJnLCBRWGRnRGVza3RvcFBvcnRhbEZpbGUKKyBjbGFzcyBRWGRnRGVza3RvcFBv cnRhbEZpbGVEaWFsb2dQcml2YXRlCisgeworIHB1YmxpYzoKKy0gICAgUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nUHJpdmF0ZShRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxl RGlhbG9nKQorKyAgICBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlKFFQbGF0Zm9y bUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2csIHVpbnQgZmlsZUNob29zZXJQb3J0 YWxWZXJzaW9uKQorICAgICAgICAgOiBuYXRpdmVGaWxlRGlhbG9nKG5hdGl2ZUZpbGVEaWFsb2cp CisrICAgICAgICAsIGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbihmaWxlQ2hvb3NlclBvcnRhbFZl cnNpb24pCisgICAgIHsgfQorIAorLSAgICBXSWQgd2luSWQgPSAwOworLSAgICBib29sIGRpcmVj dG9yeU1vZGUgPSBmYWxzZTsKKy0gICAgYm9vbCBtb2RhbCA9IGZhbHNlOworLSAgICBib29sIG11 bHRpcGxlRmlsZXMgPSBmYWxzZTsKKy0gICAgYm9vbCBzYXZlRmlsZSA9IGZhbHNlOworKyAgICBR RXZlbnRMb29wIGxvb3A7CisgICAgIFFTdHJpbmcgYWNjZXB0TGFiZWw7CisgICAgIFFTdHJpbmcg ZGlyZWN0b3J5OworICAgICBRU3RyaW5nIHRpdGxlOworQEAgLTEyMSwxOSArMTE4LDI3IEBAIHB1 YmxpYzoKKyAgICAgUVN0cmluZyBzZWxlY3RlZE1pbWVUeXBlRmlsdGVyOworICAgICBRU3RyaW5n IHNlbGVjdGVkTmFtZUZpbHRlcjsKKyAgICAgUVN0cmluZ0xpc3Qgc2VsZWN0ZWRGaWxlczsKKy0g ICAgUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZyA9IG51bGxwdHI7 CisrICAgIHN0ZDo6dW5pcXVlX3B0cjxRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyPiBuYXRpdmVG aWxlRGlhbG9nOworKyAgICB1aW50IGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbiA9IDA7CisrICAg IGJvb2wgZmFpbGVkVG9PcGVuID0gZmFsc2U7CisrICAgIGJvb2wgZGlyZWN0b3J5TW9kZSA9IGZh bHNlOworKyAgICBib29sIG11bHRpcGxlRmlsZXMgPSBmYWxzZTsKKysgICAgYm9vbCBzYXZlRmls ZSA9IGZhbHNlOworIH07CisgCistUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpRWGRnRGVz a3RvcFBvcnRhbEZpbGVEaWFsb2coUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmls ZURpYWxvZykKKytRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OlFYZGdEZXNrdG9wUG9ydGFs RmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nLCB1 aW50IGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikKKyAgICAgOiBRUGxhdGZvcm1GaWxlRGlhbG9n SGVscGVyKCkKKy0gICAgLCBkX3B0cihuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJp dmF0ZShuYXRpdmVGaWxlRGlhbG9nKSkKKysgICAgLCBkX3B0cihuZXcgUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nUHJpdmF0ZShuYXRpdmVGaWxlRGlhbG9nLCBmaWxlQ2hvb3NlclBvcnRhbFZl cnNpb24pKQorIHsKKyAgICAgUV9EKFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisgCisg ICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nKSB7CistICAgICAgICBjb25uZWN0KGQtPm5hdGl2 ZUZpbGVEaWFsb2csIFNJR05BTChhY2NlcHQoKSksIHRoaXMsIFNJR05BTChhY2NlcHQoKSkpOwor LSAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxlRGlhbG9nLCBTSUdOQUwocmVqZWN0KCkpLCB0 aGlzLCBTSUdOQUwocmVqZWN0KCkpKTsKKysgICAgICAgIGNvbm5lY3QoZC0+bmF0aXZlRmlsZURp YWxvZy5nZXQoKSwgU0lHTkFMKGFjY2VwdCgpKSwgdGhpcywgU0lHTkFMKGFjY2VwdCgpKSk7Cisr ICAgICAgICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2cuZ2V0KCksIFNJR05BTChyZWplY3Qo KSksIHRoaXMsIFNJR05BTChyZWplY3QoKSkpOworICAgICB9CisrCisrICAgIGQtPmxvb3AuY29u bmVjdCh0aGlzLCBTSUdOQUwoYWNjZXB0KCkpLCBTTE9UKHF1aXQoKSkpOworKyAgICBkLT5sb29w LmNvbm5lY3QodGhpcywgU0lHTkFMKHJlamVjdCgpKSwgU0xPVChxdWl0KCkpKTsKKyB9CisgCisg UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjp+UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9n KCkKK0BAIC0xNzcsNyArMTgyLDcgQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6 OmluaXRpYWxpemVEaWFsb2coKQorICAgICBzZXREaXJlY3Rvcnkob3B0aW9ucygpLT5pbml0aWFs RGlyZWN0b3J5KCkpOworIH0KKyAKKy12b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6 b3BlblBvcnRhbCgpCisrdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0 YWwoUXQ6OldpbmRvd0ZsYWdzIHdpbmRvd0ZsYWdzLCBRdDo6V2luZG93TW9kYWxpdHkgd2luZG93 TW9kYWxpdHksIFFXaW5kb3cgKnBhcmVudCkKKyB7CisgICAgIFFfRChRWGRnRGVza3RvcFBvcnRh bEZpbGVEaWFsb2cpOworIAorQEAgLTE4NSwxMyArMTkwLDEzIEBAIHZvaWQgUVhkZ0Rlc2t0b3BQ b3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiL29yZy9mcmVl ZGVza3RvcC9wb3J0YWwvZGVza3RvcCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJvcmcuZnJlZWRlc2t0 b3AucG9ydGFsLkZpbGVDaG9vc2VyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPnNhdmVGaWxlID8gUUxhdGluMVN0cmluZygi U2F2ZUZpbGUiKSA6IFFMYXRpbjFTdHJpbmcoIk9wZW5GaWxlIikpOworLSAgICBRU3RyaW5nIHBh cmVudFdpbmRvd0lkID0gUUxhdGluMVN0cmluZygieDExOiIpICsgUVN0cmluZzo6bnVtYmVyKGQt PndpbklkLCAxNik7CisrICAgIFFTdHJpbmcgcGFyZW50V2luZG93SWQgPSBRTGF0aW4xU3RyaW5n KCJ4MTE6IikgKyBRU3RyaW5nOjpudW1iZXIocGFyZW50ID8gcGFyZW50LT53aW5JZCgpIDogMCwg MTYpOworIAorICAgICBRVmFyaWFudE1hcCBvcHRpb25zOworICAgICBpZiAoIWQtPmFjY2VwdExh YmVsLmlzRW1wdHkoKSkKKyAgICAgICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJpbmcoImFj Y2VwdF9sYWJlbCIpLCBkLT5hY2NlcHRMYWJlbCk7CisgCistICAgIG9wdGlvbnMuaW5zZXJ0KFFM YXRpbjFTdHJpbmcoIm1vZGFsIiksIGQtPm1vZGFsKTsKKysgICAgb3B0aW9ucy5pbnNlcnQoUUxh dGluMVN0cmluZygibW9kYWwiKSwgd2luZG93TW9kYWxpdHkgIT0gUXQ6Ok5vbk1vZGFsKTsKKyAg ICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygibXVsdGlwbGUiKSwgZC0+bXVsdGlwbGVG aWxlcyk7CisgICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJpbmcoImRpcmVjdG9yeSIpLCBk LT5kaXJlY3RvcnlNb2RlKTsKKyAKK0BAIC0yOTAsMTAgKzI5NSwxOCBAQCB2b2lkIFFYZGdEZXNr dG9wUG9ydGFsRmlsZURpYWxvZzo6b3BlblBvcnRhbCgpCisgCisgICAgIFFEQnVzUGVuZGluZ0Nh bGwgcGVuZGluZ0NhbGwgPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5hc3luY0NhbGwo bWVzc2FnZSk7CisgICAgIFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVyID0gbmV3IFFE QnVzUGVuZGluZ0NhbGxXYXRjaGVyKHBlbmRpbmdDYWxsKTsKKy0gICAgY29ubmVjdCh3YXRjaGVy LCAmUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXI6OmZpbmlzaGVkLCB0aGlzLCBbdGhpc10gKFFEQnVz UGVuZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVyKSB7CisrICAgIGNvbm5lY3Qod2F0Y2hlciwgJlFE QnVzUGVuZGluZ0NhbGxXYXRjaGVyOjpmaW5pc2hlZCwgdGhpcywgWz1dIChRREJ1c1BlbmRpbmdD YWxsV2F0Y2hlciAqd2F0Y2hlcikgeworICAgICAgICAgUURCdXNQZW5kaW5nUmVwbHk8UURCdXNP YmplY3RQYXRoPiByZXBseSA9ICp3YXRjaGVyOworLSAgICAgICAgaWYgKHJlcGx5LmlzRXJyb3Io KSkgeworLSAgICAgICAgICAgIFFfRU1JVCByZWplY3QoKTsKKysgICAgICAgIC8vIEFueSBlcnJv ciBtZWFucyB0aGUgZGlhbG9nIGlzIG5vdCBzaG93biBhbmQgd2UgbmVlZCB0byBmYWxsYmFjawor KyAgICAgICAgZC0+ZmFpbGVkVG9PcGVuID0gcmVwbHkuaXNFcnJvcigpOworKyAgICAgICAgaWYg KGQtPmZhaWxlZFRvT3BlbikgeworKyAgICAgICAgICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9n KSB7CisrICAgICAgICAgICAgICAgIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPnNob3cod2luZG93Rmxh Z3MsIHdpbmRvd01vZGFsaXR5LCBwYXJlbnQpOworKyAgICAgICAgICAgICAgICBpZiAoZC0+bG9v cC5pc1J1bm5pbmcoKSkKKysgICAgICAgICAgICAgICAgICAgIGQtPm5hdGl2ZUZpbGVEaWFsb2ct PmV4ZWMoKTsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICBRX0VNSVQg cmVqZWN0KCk7CisrICAgICAgICAgICAgfQorICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg ICBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5jb25uZWN0KG51bGxwdHIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseS52YWx1ZSgp LnBhdGgoKSwKK0BAIC0zMDIsNiArMzE1LDcgQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVE aWFsb2c6Om9wZW5Qb3J0YWwoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNMT1QoZ290UmVzcG9uc2UodWludCxRVmFyaWFudE1hcCkpKTsKKyAg ICAgICAgIH0KKysgICAgICAgIHdhdGNoZXItPmRlbGV0ZUxhdGVyKCk7CisgICAgIH0pOworIH0K KyAKK0BAIC0zMjYsNyArMzQwLDcgQEAgUVVybCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6 OmRpcmVjdG9yeSgpIGNvbnN0CisgeworICAgICBRX0QoY29uc3QgUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nKTsKKyAKKy0gICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgKG9wdGlvbnMo KS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeSB8fCBvcHRpb25z KCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnlPbmx5KSkKKysg ICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgdXNlTmF0aXZlRmlsZURpYWxvZygpKQorICAg ICAgICAgcmV0dXJuIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPmRpcmVjdG9yeSgpOworIAorICAgICBy ZXR1cm4gZC0+ZGlyZWN0b3J5OworQEAgLTM0OCw3ICszNjIsNyBAQCBRTGlzdDxRVXJsPiBRWGRn RGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OnNlbGVjdGVkRmlsZXMoKSBjb25zdAorIHsKKyAgICAg UV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisgCistICAgIGlmIChkLT5u YXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dP cHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9n T3B0aW9uczo6RGlyZWN0b3J5T25seSkpCisrICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYm IHVzZU5hdGl2ZUZpbGVEaWFsb2coKSkKKyAgICAgICAgIHJldHVybiBkLT5uYXRpdmVGaWxlRGlh bG9nLT5zZWxlY3RlZEZpbGVzKCk7CisgCisgICAgIFFMaXN0PFFVcmw+IGZpbGVzOworQEAgLTQw MywxNiArNDE3LDEzIEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpleGVjKCkK KyB7CisgICAgIFFfRChRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAorLSAgICBpZiAo ZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlh bG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURp YWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpKSB7CisrICAgIGlmIChkLT5uYXRpdmVGaWxlRGlh bG9nICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2coKSkgeworICAgICAgICAgZC0+bmF0aXZlRmlsZURp YWxvZy0+ZXhlYygpOworICAgICAgICAgcmV0dXJuOworICAgICB9CisgCisgICAgIC8vIEhBQ0sg d2UgaGF2ZSB0byBhdm9pZCByZXR1cm5pbmcgdW50aWwgd2UgZW1pdCB0aGF0IHRoZSBkaWFsb2cg d2FzIGFjY2VwdGVkIG9yIHJlamVjdGVkCistICAgIFFFdmVudExvb3AgbG9vcDsKKy0gICAgbG9v cC5jb25uZWN0KHRoaXMsIFNJR05BTChhY2NlcHQoKSksIFNMT1QocXVpdCgpKSk7CistICAgIGxv b3AuY29ubmVjdCh0aGlzLCBTSUdOQUwocmVqZWN0KCkpLCBTTE9UKHF1aXQoKSkpOworLSAgICBs b29wLmV4ZWMoKTsKKysgICAgZC0+bG9vcC5leGVjKCk7CisgfQorIAorIHZvaWQgUVhkZ0Rlc2t0 b3BQb3J0YWxGaWxlRGlhbG9nOjpoaWRlKCkKK0BAIC00MjksMTMgKzQ0MCwxMCBAQCBib29sIFFY ZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6c2hvdyhRdDo6V2luZG93RmxhZ3Mgd2luZG93Rmxh Z3MsIFF0OjpXaW5kb3dNbworIAorICAgICBpbml0aWFsaXplRGlhbG9nKCk7CisgCistICAgIGQt Pm1vZGFsID0gd2luZG93TW9kYWxpdHkgIT0gUXQ6Ok5vbk1vZGFsOworLSAgICBkLT53aW5JZCA9 IHBhcmVudCA/IHBhcmVudC0+d2luSWQoKSA6IDA7CistCistICAgIGlmIChkLT5uYXRpdmVGaWxl RGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpE aXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6 RGlyZWN0b3J5T25seSkpCisrICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIHVzZU5hdGl2 ZUZpbGVEaWFsb2coT3BlbkZhbGxiYWNrKSkKKyAgICAgICAgIHJldHVybiBkLT5uYXRpdmVGaWxl RGlhbG9nLT5zaG93KHdpbmRvd0ZsYWdzLCB3aW5kb3dNb2RhbGl0eSwgcGFyZW50KTsKKyAKKy0g ICAgb3BlblBvcnRhbCgpOworKyAgICBvcGVuUG9ydGFsKHdpbmRvd0ZsYWdzLCB3aW5kb3dNb2Rh bGl0eSwgcGFyZW50KTsKKyAKKyAgICAgcmV0dXJuIHRydWU7CisgfQorQEAgLTQ2NSw0ICs0NzMs MjEgQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OmdvdFJlc3BvbnNlKHVpbnQg cmVzcG9uc2UsIGNvbnN0IFFWYXJpYW50TWFwICYKKyAgICAgfQorIH0KKyAKKytib29sIFFYZGdE ZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6dXNlTmF0aXZlRmlsZURpYWxvZyhRWGRnRGVza3RvcFBv cnRhbEZpbGVEaWFsb2c6OkZhbGxiYWNrVHlwZSBmYWxsYmFja1R5cGUpIGNvbnN0CisreworKyAg ICBRX0QoY29uc3QgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKysKKysgICAgaWYgKGQt PmZhaWxlZFRvT3BlbiAmJiBmYWxsYmFja1R5cGUgIT0gT3BlbkZhbGxiYWNrKQorKyAgICAgICAg cmV0dXJuIHRydWU7CisrCisrICAgIGlmIChkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPCAz KSB7CisrICAgICAgICBpZiAob3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0 aW9uczo6RGlyZWN0b3J5KQorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworKyAgICAgICAgZWxz ZSBpZiAob3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0 b3J5T25seSkKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgfQorKworKyAgICByZXR1 cm4gZmFsc2U7CisrfQorKworIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBv cnRhbGZpbGVkaWFsb2dfcC5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hk Z2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nX3AuaAoraW5kZXggNGY0 ZGU5NmVjZi4uNjVlMjJhNWNmMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZ19w LmgKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9y dGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZ19wLmgKK0BAIC01MSw2ICs1MSwxMSBAQCBj bGFzcyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cgOiBwdWJsaWMgUVBsYXRmb3JtRmlsZURp YWxvZ0hlbHBlcgorICAgICBRX09CSkVDVAorICAgICBRX0RFQ0xBUkVfUFJJVkFURShRWGRnRGVz a3RvcFBvcnRhbEZpbGVEaWFsb2cpCisgcHVibGljOgorKyAgICBlbnVtIEZhbGxiYWNrVHlwZSB7 CisrICAgICAgICBHZW5lcmljRmFsbGJhY2ssCisrICAgICAgICBPcGVuRmFsbGJhY2sKKysgICAg fTsKKysKKyAgICAgZW51bSBDb25kaXRpb25UeXBlIDogdWludCB7CisgICAgICAgICBHbG9iYWxQ YXR0ZXJuID0gMCwKKyAgICAgICAgIE1pbWVUeXBlID0gMQorQEAgLTY5LDcgKzc0LDcgQEAgcHVi bGljOgorICAgICB9OworICAgICB0eXBlZGVmIFFWZWN0b3I8RmlsdGVyPiBGaWx0ZXJMaXN0Owor IAorLSAgICBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coUVBsYXRmb3JtRmlsZURpYWxvZ0hl bHBlciAqbmF0aXZlRmlsZURpYWxvZyA9IG51bGxwdHIpOworKyAgICBRWGRnRGVza3RvcFBvcnRh bEZpbGVEaWFsb2coUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZyA9 IG51bGxwdHIsIHVpbnQgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uID0gMCk7CisgICAgIH5RWGRn RGVza3RvcFBvcnRhbEZpbGVEaWFsb2coKTsKKyAKKyAgICAgYm9vbCBkZWZhdWx0TmFtZUZpbHRl ckRpc2FibGVzKCkgY29uc3Qgb3ZlcnJpZGU7CitAQCAtOTIsNyArOTcsOCBAQCBwcml2YXRlIFFf U0xPVFM6CisgCisgcHJpdmF0ZToKKyAgICAgdm9pZCBpbml0aWFsaXplRGlhbG9nKCk7CistICAg IHZvaWQgb3BlblBvcnRhbCgpOworKyAgICB2b2lkIG9wZW5Qb3J0YWwoUXQ6OldpbmRvd0ZsYWdz IHdpbmRvd0ZsYWdzLCBRdDo6V2luZG93TW9kYWxpdHkgd2luZG93TW9kYWxpdHksIFFXaW5kb3cg KnBhcmVudCk7CisrICAgIGJvb2wgdXNlTmF0aXZlRmlsZURpYWxvZyhGYWxsYmFja1R5cGUgZmFs bGJhY2tUeXBlID0gR2VuZXJpY0ZhbGxiYWNrKSBjb25zdDsKKyAKKyAgICAgUVNjb3BlZFBvaW50 ZXI8UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZT4gZF9wdHI7CisgfTsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRh bC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsdGhlbWUuY3BwCitpbmRl eCBmYjMyNGFmYmQ4Li5iODA5NTAzMTIyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWx0aGVtZS5j cHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9y dGFsL3F4ZGdkZXNrdG9wcG9ydGFsdGhlbWUuY3BwCitAQCAtMTExLDYgKzExMSw3IEBAIFFYZGdE ZXNrdG9wUG9ydGFsVGhlbWU6OlFYZGdEZXNrdG9wUG9ydGFsVGhlbWUoKQorICAgICAgICAgaWYg KHJlcGx5LmlzVmFsaWQoKSkgeworICAgICAgICAgICAgIGQtPmZpbGVDaG9vc2VyUG9ydGFsVmVy c2lvbiA9IHJlcGx5LnZhbHVlKCkudG9VSW50KCk7CisgICAgICAgICB9CisrICAgICAgICB3YXRj aGVyLT5kZWxldGVMYXRlcigpOworICAgICB9KTsKKyB9CisgCitAQCAtMTUyLDExICsxNTMsMTIg QEAgUVBsYXRmb3JtRGlhbG9nSGVscGVyKiBRWGRnRGVza3RvcFBvcnRhbFRoZW1lOjpjcmVhdGVQ bGF0Zm9ybURpYWxvZ0hlbHBlcihEaWFsb2cKKyB7CisgICAgIFFfRChjb25zdCBRWGRnRGVza3Rv cFBvcnRhbFRoZW1lKTsKKyAKKy0gICAgaWYgKHR5cGUgPT0gRmlsZURpYWxvZykgeworKyAgICBp ZiAodHlwZSA9PSBGaWxlRGlhbG9nICYmIGQtPmZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikgewor ICAgICAgICAgLy8gT2xkZXIgdmVyc2lvbnMgb2YgRmlsZUNob29zZXIgcG9ydGFsIGRvbid0IHN1 cHBvcnQgb3BlbmluZyBkaXJlY3RvcmllcywgdGhlcmVmb3JlIHdlIGZhbGxiYWNrCisgICAgICAg ICAvLyB0byBuYXRpdmUgZmlsZSBkaWFsb2cgb3BlbmVkIGluc2lkZSB0aGUgc2FuZGJveCB0byBv cGVuIGEgZGlyZWN0b3J5LgorLSAgICAgICAgaWYgKGQtPmZpbGVDaG9vc2VyUG9ydGFsVmVyc2lv biA8IDMgJiYgZC0+YmFzZVRoZW1lLT51c2VQbGF0Zm9ybU5hdGl2ZURpYWxvZyh0eXBlKSkKKy0g ICAgICAgICAgICByZXR1cm4gbmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhzdGF0aWNf Y2FzdDxRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyKj4oZC0+YmFzZVRoZW1lLT5jcmVhdGVQbGF0 Zm9ybURpYWxvZ0hlbHBlcih0eXBlKSkpOworKyAgICAgICAgaWYgKGQtPmJhc2VUaGVtZS0+dXNl UGxhdGZvcm1OYXRpdmVEaWFsb2codHlwZSkpCisrICAgICAgICAgICAgcmV0dXJuIG5ldyBRWGRn RGVza3RvcFBvcnRhbEZpbGVEaWFsb2coc3RhdGljX2Nhc3Q8UVBsYXRmb3JtRmlsZURpYWxvZ0hl bHBlcio+KGQtPmJhc2VUaGVtZS0+Y3JlYXRlUGxhdGZvcm1EaWFsb2dIZWxwZXIodHlwZSkpLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPmZp bGVDaG9vc2VyUG9ydGFsVmVyc2lvbik7CisgCisgICAgICAgICByZXR1cm4gbmV3IFFYZGdEZXNr dG9wUG9ydGFsRmlsZURpYWxvZzsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1 Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lLmNwcCBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lLmNwcAoraW5kZXggNDNk NWUxMTlhZC4uMWY5Y2JjNDU2NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmlu dHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVn aW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmUuY3BwCitAQCAtODksOCArODks MTAgQEAgdm9pZCBRQ3Vwc1ByaW50RW5naW5lOjpzZXRQcm9wZXJ0eShQcmludEVuZ2luZVByb3Bl cnR5S2V5IGtleSwgY29uc3QgUVZhcmlhbnQgJnYKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNl IFBQS19EdXBsZXg6IHsKKyAgICAgICAgIFFQcmludDo6RHVwbGV4TW9kZSBtb2RlID0gUVByaW50 OjpEdXBsZXhNb2RlKHZhbHVlLnRvSW50KCkpOworLSAgICAgICAgaWYgKG1vZGUgIT0gZC0+ZHVw bGV4ICYmIGQtPm1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkRHVwbGV4TW9kZXMoKS5jb250YWlucyht b2RlKSkKKysgICAgICAgIGlmIChkLT5tX3ByaW50RGV2aWNlLnN1cHBvcnRlZER1cGxleE1vZGVz KCkuY29udGFpbnMobW9kZSkpIHsKKyAgICAgICAgICAgICBkLT5kdXBsZXggPSBtb2RlOworKyAg ICAgICAgICAgIGQtPmR1cGxleFJlcXVlc3RlZEV4cGxpY2l0bHkgPSB0cnVlOworKyAgICAgICAg fQorICAgICAgICAgYnJlYWs7CisgICAgIH0KKyAgICAgY2FzZSBQUEtfUHJpbnRlck5hbWU6CitA QCAtMjc3LDkgKzI3OSwxMiBAQCB2b2lkIFFDdXBzUHJpbnRFbmdpbmVQcml2YXRlOjpjaGFuZ2VQ cmludGVyKGNvbnN0IFFTdHJpbmcgJm5ld1ByaW50ZXIpCisgICAgIG1fcHJpbnREZXZpY2Uuc3dh cChwcmludERldmljZSk7CisgICAgIHByaW50ZXJOYW1lID0gbV9wcmludERldmljZS5pZCgpOwor IAorLSAgICAvLyBDaGVjayBpZiBuZXcgcHJpbnRlciBzdXBwb3J0cyBjdXJyZW50IHNldHRpbmdz LCBvdGhlcndpc2UgdXMgZGVmYXVsdHMKKy0gICAgaWYgKGR1cGxleCAhPSBRUHJpbnQ6OkR1cGxl eEF1dG8gJiYgIW1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkRHVwbGV4TW9kZXMoKS5jb250YWlucyhk dXBsZXgpKQorKyAgICAvLyBpbiBjYXNlIGEgZHVwbGV4IHZhbHVlIHdhcyBleHBsaWNpdGx5IHNl dCwgY2hlY2sgaWYgbmV3IHByaW50ZXIgc3VwcG9ydHMgY3VycmVudCB2YWx1ZSwKKysgICAgLy8g b3RoZXJ3aXNlIHVzZSBkZXZpY2UgZGVmYXVsdAorKyAgICBpZiAoIWR1cGxleFJlcXVlc3RlZEV4 cGxpY2l0bHkgfHwgIW1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkRHVwbGV4TW9kZXMoKS5jb250YWlu cyhkdXBsZXgpKSB7CisgICAgICAgICBkdXBsZXggPSBtX3ByaW50RGV2aWNlLmRlZmF1bHREdXBs ZXhNb2RlKCk7CisrICAgICAgICBkdXBsZXhSZXF1ZXN0ZWRFeHBsaWNpdGx5ID0gZmFsc2U7Cisr ICAgIH0KKyAgICAgUVByaW50OjpDb2xvck1vZGUgY29sb3JNb2RlID0gZ3JheXNjYWxlID8gUVBy aW50OjpHcmF5U2NhbGUgOiBRUHJpbnQ6OkNvbG9yOworICAgICBpZiAoIW1fcHJpbnREZXZpY2Uu c3VwcG9ydGVkQ29sb3JNb2RlcygpLmNvbnRhaW5zKGNvbG9yTW9kZSkpCisgICAgICAgICBncmF5 c2NhbGUgPSBtX3ByaW50RGV2aWNlLmRlZmF1bHRDb2xvck1vZGUoKSA9PSBRUHJpbnQ6OkdyYXlT Y2FsZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMv cWN1cHNwcmludGVuZ2luZV9wLmggYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1 cHMvcWN1cHNwcmludGVuZ2luZV9wLmgKK2luZGV4IGMwMjFiMGM2NDMuLjhmODFmZTQ3OGQgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmlu dGVuZ2luZV9wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9x Y3Vwc3ByaW50ZW5naW5lX3AuaAorQEAgLTEwMCw2ICsxMDAsNyBAQCBwcml2YXRlOgorICAgICBR U3RyaW5nTGlzdCBjdXBzT3B0aW9uczsKKyAgICAgUVN0cmluZyBjdXBzVGVtcEZpbGU7CisgICAg IFFQcmludDo6RHVwbGV4TW9kZSBkdXBsZXg7CisrICAgIGJvb2wgZHVwbGV4UmVxdWVzdGVkRXhw bGljaXRseSA9IGZhbHNlOworIH07CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL2liYXNlL3FzcWxfaWJhc2UuY3BwIGIvcXRi YXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNxbF9pYmFzZS5jcHAKK2luZGV4IDY3 ZTcxNTRmYTYuLjQwODc2MTUyZTUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvc3Fs ZHJpdmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Nx bGRyaXZlcnMvaWJhc2UvcXNxbF9pYmFzZS5jcHAKK0BAIC04MTcsNyArODE3LDcgQEAgYm9vbCBR SUJhc2VSZXN1bHRQcml2YXRlOjp3cml0ZUFycmF5KGludCBjb2x1bW4sIGNvbnN0IFFMaXN0PFFW YXJpYW50PiAmbGlzdCkKKyAgICAgYmEucmVzaXplKGludChidWZMZW4pKTsKKyAKKyAgICAgaWYg KGxpc3Quc2l6ZSgpID4gYXJyYXlTaXplKSB7CistICAgICAgICBlcnJvciA9IFFMYXRpbjFTdHJp bmcoIkFycmF5IHNpemUgbWlzc21hdGNoOiBzaXplIG9mICUxIGlzICUyLCBzaXplIG9mIHByb3Zp ZGVkIGxpc3QgaXMgJTMiKTsKKysgICAgICAgIGVycm9yID0gUUxhdGluMVN0cmluZygiQXJyYXkg c2l6ZSBtaXNtYXRjaDogc2l6ZSBvZiAlMSBpcyAlMiwgc2l6ZSBvZiBwcm92aWRlZCBsaXN0IGlz ICUzIik7CisgICAgICAgICBlcnJvciA9IGVycm9yLmFyZyhRTGF0aW4xU3RyaW5nKHNxbG5hbWUp KS5hcmcoYXJyYXlTaXplKS5hcmcobGlzdC5zaXplKCkpOworICAgICAgICAgcS0+c2V0TGFzdEVy cm9yKFFTcWxFcnJvcihlcnJvciwgUUxhdGluMVN0cmluZygiIiksIFFTcWxFcnJvcjo6U3RhdGVt ZW50RXJyb3IpKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3BsdWdpbnMvc3FsZHJpdmVycy9teXNxbC9xc3FsX215c3FsLmNwcCBiL3F0YmFzZS9zcmMv cGx1Z2lucy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwuY3BwCitpbmRleCA3Y2EwNTVlZWEy Li42YmM5ZDQ2NzU1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMv bXlzcWwvcXNxbF9teXNxbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJz L215c3FsL3FzcWxfbXlzcWwuY3BwCitAQCAtMjIzLDcgKzIyMyw3IEBAIHB1YmxpYzoKKyAgICAg c3RydWN0IFFNeUZpZWxkCisgICAgIHsKKyAgICAgICAgIGNoYXIgKm91dEZpZWxkID0gbnVsbHB0 cjsKKy0gICAgICAgIE1ZU1FMX0ZJRUxEICpteUZpZWxkID0gbnVsbHB0cjsKKysgICAgICAgIGNv bnN0IE1ZU1FMX0ZJRUxEICpteUZpZWxkID0gbnVsbHB0cjsKKyAgICAgICAgIFFNZXRhVHlwZTo6 VHlwZSB0eXBlID0gUU1ldGFUeXBlOjpVbmtub3duVHlwZTsKKyAgICAgICAgIG15X2Jvb2wgbnVs bEluZGljYXRvciA9IGZhbHNlOworICAgICAgICAgdWxvbmcgYnVmTGVuZ3RoID0gMHVsOworQEAg LTM2MSw3ICszNjEsNyBAQCBzdGF0aWMgYm9vbCBxSXNJbnRlZ2VyKGludCB0KQorIHZvaWQgUU1Z U1FMUmVzdWx0UHJpdmF0ZTo6YmluZEJsb2JzKCkKKyB7CisgICAgIGludCBpOworLSAgICBNWVNR TF9GSUVMRCAqZmllbGRJbmZvOworKyAgICBjb25zdCBNWVNRTF9GSUVMRCAqZmllbGRJbmZvOwor ICAgICBNWVNRTF9CSU5EICpiaW5kOworIAorICAgICBmb3IoaSA9IDA7IGkgPCBmaWVsZHMuY291 bnQoKTsgKytpKSB7CitAQCAtMzc5LDcgKzM3OSw2IEBAIHZvaWQgUU1ZU1FMUmVzdWx0UHJpdmF0 ZTo6YmluZEJsb2JzKCkKKyBib29sIFFNWVNRTFJlc3VsdFByaXZhdGU6OmJpbmRJblZhbHVlcygp CisgeworICAgICBNWVNRTF9CSU5EICpiaW5kOworLSAgICBjaGFyICpmaWVsZDsKKyAgICAgaW50 IGkgPSAwOworIAorICAgICBpZiAoIW1ldGEpCitAQCAtMzkyLDM1ICszOTEsMzQgQEAgYm9vbCBR TVlTUUxSZXN1bHRQcml2YXRlOjpiaW5kSW5WYWx1ZXMoKQorICAgICBpbkJpbmRzID0gbmV3IE1Z U1FMX0JJTkRbZmllbGRzLnNpemUoKV07CisgICAgIG1lbXNldChpbkJpbmRzLCAwLCBmaWVsZHMu c2l6ZSgpICogc2l6ZW9mKE1ZU1FMX0JJTkQpKTsKKyAKKy0gICAgTVlTUUxfRklFTEQgKmZpZWxk SW5mbzsKKysgICAgY29uc3QgTVlTUUxfRklFTEQgKmZpZWxkSW5mbzsKKyAKKyAgICAgd2hpbGUo KGZpZWxkSW5mbyA9IG15c3FsX2ZldGNoX2ZpZWxkKG1ldGEpKSkgeworKyAgICAgICAgYmluZCA9 ICZpbkJpbmRzW2ldOworKworICAgICAgICAgUU15RmllbGQgJmYgPSBmaWVsZHNbaV07CisgICAg ICAgICBmLm15RmllbGQgPSBmaWVsZEluZm87CistCisrICAgICAgICBiaW5kLT5idWZmZXJfbGVu Z3RoID0gZi5idWZMZW5ndGggPSBmaWVsZEluZm8tPmxlbmd0aCArIDE7CisrICAgICAgICBiaW5k LT5idWZmZXJfdHlwZSA9IGZpZWxkSW5mby0+dHlwZTsKKyAgICAgICAgIGYudHlwZSA9IHFEZWNv ZGVNWVNRTFR5cGUoZmllbGRJbmZvLT50eXBlLCBmaWVsZEluZm8tPmZsYWdzKTsKKyAgICAgICAg IGlmIChxSXNCbG9iKGZpZWxkSW5mby0+dHlwZSkpIHsKKyAgICAgICAgICAgICAvLyB0aGUgc2l6 ZSBvZiBhIGJsb2ItZmllbGQgaXMgYXZhaWxhYmxlIGFzIHNvb24gYXMgd2UgY2FsbAorICAgICAg ICAgICAgIC8vIG15c3FsX3N0bXRfc3RvcmVfcmVzdWx0KCkKKyAgICAgICAgICAgICAvLyBhZnRl ciBteXNxbF9zdG10X2V4ZWMoKSBpbiBRTVlTUUxSZXN1bHQ6OmV4ZWMoKQorLSAgICAgICAgICAg IGZpZWxkSW5mby0+bGVuZ3RoID0gMDsKKysgICAgICAgICAgICBiaW5kLT5idWZmZXJfbGVuZ3Ro ID0gZi5idWZMZW5ndGggPSAwOworICAgICAgICAgICAgIGhhc0Jsb2JzID0gdHJ1ZTsKKyAgICAg ICAgIH0gZWxzZSBpZiAocUlzSW50ZWdlcihmLnR5cGUpKSB7CistICAgICAgICAgICAgZmllbGRJ bmZvLT5sZW5ndGggPSA4OworKyAgICAgICAgICAgIGJpbmQtPmJ1ZmZlcl9sZW5ndGggPSBmLmJ1 Zkxlbmd0aCA9IDg7CisgICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgIGZpZWxkSW5mby0+ dHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworKyAgICAgICAgICAgIGJpbmQtPmJ1ZmZlcl90eXBl ID0gTVlTUUxfVFlQRV9TVFJJTkc7CisgICAgICAgICB9CistICAgICAgICBiaW5kID0gJmluQmlu ZHNbaV07CistICAgICAgICBmaWVsZCA9IG5ldyBjaGFyW2ZpZWxkSW5mby0+bGVuZ3RoICsgMV07 CistICAgICAgICBtZW1zZXQoZmllbGQsIDAsIGZpZWxkSW5mby0+bGVuZ3RoICsgMSk7CisgCist ICAgICAgICBiaW5kLT5idWZmZXJfdHlwZSA9IGZpZWxkSW5mby0+dHlwZTsKKy0gICAgICAgIGJp bmQtPmJ1ZmZlciA9IGZpZWxkOworLSAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYuYnVm TGVuZ3RoID0gZmllbGRJbmZvLT5sZW5ndGggKyAxOworICAgICAgICAgYmluZC0+aXNfbnVsbCA9 ICZmLm51bGxJbmRpY2F0b3I7CisgICAgICAgICBiaW5kLT5sZW5ndGggPSAmZi5idWZMZW5ndGg7 CisgICAgICAgICBiaW5kLT5pc191bnNpZ25lZCA9IGZpZWxkSW5mby0+ZmxhZ3MgJiBVTlNJR05F RF9GTEFHID8gMSA6IDA7CistICAgICAgICBmLm91dEZpZWxkPWZpZWxkOworKworKyAgICAgICAg Y2hhciAqZmllbGQgPSBuZXcgY2hhcltiaW5kLT5idWZmZXJfbGVuZ3RoICsgMV17fTsKKysgICAg ICAgIGJpbmQtPmJ1ZmZlciA9IGYub3V0RmllbGQgPSBmaWVsZDsKKyAKKyAgICAgICAgICsraTsK KyAgICAgfQorQEAgLTEzNjksMjAgKzEzNjcsMjAgQEAgYm9vbCBRTVlTUUxEcml2ZXI6Om9wZW4o Y29uc3QgUVN0cmluZyYgZGIsCisgICAgIH0KKyAKKyAjaWYgTVlTUUxfVkVSU0lPTl9JRCA+PSA1 MDAwNworLSAgICBpZiAobXlzcWxfZ2V0X2NsaWVudF92ZXJzaW9uKCkgPj0gNTA1MDMgJiYgbXlz cWxfZ2V0X3NlcnZlcl92ZXJzaW9uKGQtPm15c3FsKSA+PSA1MDUwMykgeworLSAgICAgICAgLy8g Zm9yY2UgdGhlIGNvbW11bmljYXRpb24gdG8gYmUgdXRmOG1iNCAob25seSB1dGY4bWI0IHN1cHBv cnRzIDQtYnl0ZSBjaGFyYWN0ZXJzKQorLSAgICAgICAgbXlzcWxfc2V0X2NoYXJhY3Rlcl9zZXQo ZC0+bXlzcWwsICJ1dGY4bWI0Iik7CisrICAgIC8vIGZvcmNlIHRoZSBjb21tdW5pY2F0aW9uIHRv IGJlIHV0ZjhtYjQgKG9ubHkgdXRmOG1iNCBzdXBwb3J0cyA0LWJ5dGUgY2hhcmFjdGVycykKKysg ICAgaWYgKG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3FsLCAidXRmOG1iNCIpKSB7Cisr ICAgICAgICAvLyB0aGlzIGZhaWxlZCwgdHJ5IGZvcmNpbmcgaXQgdG8gdXRmIChCTVAgb25seSkK KysgICAgICAgIGlmIChteXNxbF9zZXRfY2hhcmFjdGVyX3NldChkLT5teXNxbCwgInV0ZjgiKSkK KysgICAgICAgICAgICBxV2FybmluZygpIDw8ICJNeVNRTDogVW5hYmxlIHRvIHNldCB0aGUgY2xp ZW50IGNoYXJhY3RlciBzZXQgdG8gdXRmOC4iOworICNpZiBRVF9DT05GSUcodGV4dGNvZGVjKQor LSAgICAgICAgZC0+dGMgPSBRVGV4dENvZGVjOjpjb2RlY0Zvck5hbWUoIlVURi04Iik7CisrICAg ICAgICBlbHNlCisrICAgICAgICAgICAgZC0+dGMgPSBjb2RlYyhkLT5teXNxbCk7CisgI2VuZGlm CistICAgIH0gZWxzZQorLSAgICB7CistICAgICAgICAvLyBmb3JjZSB0aGUgY29tbXVuaWNhdGlv biB0byBiZSB1dGY4CistICAgICAgICBteXNxbF9zZXRfY2hhcmFjdGVyX3NldChkLT5teXNxbCwg InV0ZjgiKTsKKysgICAgfQorICNpZiBRVF9DT05GSUcodGV4dGNvZGVjKQorLSAgICAgICAgZC0+ dGMgPSBjb2RlYyhkLT5teXNxbCk7CisrICAgIGVsc2UKKysgICAgICAgIGQtPnRjID0gUVRleHRD b2RlYzo6Y29kZWNGb3JOYW1lKCJVVEYtOCIpOworICNlbmRpZgorLSAgICB9CisgI2VuZGlmICAv LyBNWVNRTF9WRVJTSU9OX0lEID49IDUwMDA3CisgCisgICAgIGQtPnByZXBhcmVkUXVlcnlzRW5h YmxlZCA9IGNoZWNrUHJlcGFyZWRRdWVyaWVzKGQtPm15c3FsKTsKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludC0yNC5wbmcgYi9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludGVyLTI0LnBuZworc2ltaWxhcml0 eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2Vz L3ByaW50LTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMv cHJpbnRlci0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL2ltYWdlcy9wcmludC0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dz L2ltYWdlcy9wcmludGVyLTMyLnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJv bSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50LTMyLnBuZworcmVuYW1lIHRv IHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnRlci0zMi5wbmcKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utc2lk ZWQtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1w YWdlcy1mYWNpbmctMjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNy Yy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTI0LnBuZworcmVu YW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmct MjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvdmlldy1wYWdlLXNpZGVkLTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTMyLnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAl CityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1z aWRlZC0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3Zp ZXctcGFnZXMtZmFjaW5nLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0yNC5wbmcgYi9xdGJhc2Uvc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTI0LnBuZworc2lt aWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv aW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0yNC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMjQucG5nCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW11bHRpLTMy LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMt b3ZlcnZpZXctMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9w cmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW11bHRpLTMyLnBuZworcmVuYW1l IHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0z Mi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdl cy92aWV3LXBhZ2Utb25lLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv aW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCity ZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1vbmUt MjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBh Z2VzLXNpbmdsZS0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTMyLnBuZworc2ltaWxhcml0eSBp bmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3Zp ZXctcGFnZS1vbmUtMzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2lt YWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0yNC5wbmcgYi9xdGJhc2Uvc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC1wYWdlLTI0LnBuZworc2ltaWxhcml0 eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2Vz L2ZpdC1wYWdlLTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvem9vbS1maXQtcGFnZS0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3Vw cG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3Vw cG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC1wYWdlLTMyLnBuZworc2ltaWxhcml0eSBpbmRl eCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC1w YWdlLTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9v bS1maXQtcGFnZS0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL2ltYWdlcy9maXQtd2lkdGgtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtd2lkdGgtMjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEw MCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXdpZHRo LTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1m aXQtd2lkdGgtMjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvZml0LXdpZHRoLTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvaW1hZ2VzL3pvb20tZml0LXdpZHRoLTMyLnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAl CityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC13aWR0aC0z Mi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0 LXdpZHRoLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvcXBhZ2VzZXR1cGRpYWxvZ191bml4LmNwcCBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvcXBhZ2VzZXR1cGRpYWxvZ191bml4LmNwcAoraW5kZXggNzhlNWI4ZDFlZi4uMmEyODUx NjcxOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBhZ2Vz ZXR1cGRpYWxvZ191bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9xcGFnZXNldHVwZGlhbG9nX3VuaXguY3BwCitAQCAtNTMyLDYgKzUzMiw3IEBAIHZvaWQgUVBh Z2VTZXR1cFdpZGdldDo6dXBkYXRlV2lkZ2V0KCkKKyB2b2lkIFFQYWdlU2V0dXBXaWRnZXQ6OnNl dHVwUHJpbnRlcigpIGNvbnN0CisgeworICAgICBtX3ByaW50ZXItPnNldFBhZ2VMYXlvdXQobV9w YWdlTGF5b3V0KTsKKysgICAgbV9wcmludGVyLT5zZXRQYWdlT3JpZW50YXRpb24obV9wYWdlTGF5 b3V0Lm9yaWVudGF0aW9uKCkpOworICNpZiBRVF9DT05GSUcoY3VwcykKKyAgICAgUUNVUFNTdXBw b3J0OjpQYWdlc1BlclNoZWV0IHBhZ2VzUGVyU2hlZXQgPSBxdmFyaWFudF9jYXN0PFFDVVBTU3Vw cG9ydDo6UGFnZXNQZXJTaGVldD4obV91aS5wYWdlc1BlclNoZWV0Q29tYm8tPmN1cnJlbnREYXRh KCkKKyApOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBy aW50ZGlhbG9nLnFyYyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlh bG9nLnFyYworaW5kZXggNWE1NzliYWE1NS4uMTBiOGUxZDM0MSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nLnFyYworKysrIGIvcXRiYXNl L3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2cucXJjCitAQCAtMSw5ICsxLDkg QEAKKyA8IURPQ1RZUEUgUkNDPjxSQ0MgdmVyc2lvbj0iMS4wIj4KKyA8cXJlc291cmNlIHByZWZp eD0iL3F0LXByb2plY3Qub3JnL2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxvZyI+CistPGZpbGU+ aW1hZ2VzL2ZpdC1wYWdlLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvZml0LXBhZ2UtMzIu cG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy9maXQtd2lkdGgtMjQucG5nPC9maWxlPgorLTxmaWxl PmltYWdlcy9maXQtd2lkdGgtMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy96b29tLWZpdC1w YWdlLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvem9vbS1maXQtcGFnZS0zMi5wbmc8L2Zp bGU+CisrPGZpbGU+aW1hZ2VzL3pvb20tZml0LXdpZHRoLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5p bWFnZXMvem9vbS1maXQtd2lkdGgtMzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy9nby1maXJz dC0yNC5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL2dvLWZpcnN0LTMyLnBuZzwvZmlsZT4KKyA8 ZmlsZT5pbWFnZXMvZ28tbGFzdC0yNC5wbmc8L2ZpbGU+CitAQCAtMTgsMTQgKzE4LDE0IEBACisg PGZpbGU+aW1hZ2VzL2xheW91dC1wb3J0cmFpdC0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2Vz L3BhZ2Utc2V0dXAtMjQucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy9wYWdlLXNldHVwLTMyLnBu ZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvcHJpbnQtMjQucG5nPC9maWxlPgorLTxmaWxlPmltYWdl cy9wcmludC0zMi5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0yNC5w bmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0zMi5wbmc8L2ZpbGU+Cist PGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1vbmUtMjQucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92 aWV3LXBhZ2Utb25lLTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLXNpZGVk LTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTMyLnBuZzwvZmls ZT4KKys8ZmlsZT5pbWFnZXMvcHJpbnRlci0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3By aW50ZXItMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTI0 LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0zMi5wbmc8L2Zp bGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTI0LnBuZzwvZmlsZT4KKys8Zmls ZT5pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92 aWV3LXBhZ2VzLWZhY2luZy0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMt ZmFjaW5nLTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvem9vbS1pbi0yNC5wbmc8L2ZpbGU+ CisgPGZpbGU+aW1hZ2VzL3pvb20taW4tMzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy96b29t LW91dC0yNC5wbmc8L2ZpbGU+CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5peC5jcHAgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL3FwcmludGRpYWxvZ191bml4LmNwcAoraW5kZXggYzViODQ1ZjRlYy4uNWE1YmExZDBh OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlh bG9nX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3Fwcmlu dGRpYWxvZ191bml4LmNwcAorQEAgLTcwMiwxMyArNzAyLDE0IEBAIHZvaWQgUVByaW50RGlhbG9n UHJpdmF0ZTo6c2VsZWN0UHJpbnRlcihjb25zdCBRUHJpbnRlcjo6T3V0cHV0Rm9ybWF0IG91dHB1 dEZvcm1hCisgICAgICAgICBlbHNlCisgICAgICAgICAgICAgb3B0aW9ucy5ncmF5c2NhbGUtPnNl dENoZWNrZWQodHJ1ZSk7CisgCistICAgICAgICAvLyBrZWVwIGR1cGxleCB2YWx1ZSBleHBsaWNp dGx5IHNldCBieSB1c2VyLCBpZiBhbnksIGFuZCBzZWxlY3RlZCBwcmludGVyIHN1cHBvcnRzIGl0 OworLSAgICAgICAgLy8gdXNlIGRldmljZSBkZWZhdWx0IG90aGVyd2lzZQorKyAgICAgICAgLy8g ZHVwbGV4IHByaW9yaXRpZXMgdG8gYmUgYXMgZm9sbG93czoKKysgICAgICAgIC8vIDEpIGEgdXNl ci1zZWxlY3RlZCBkdXBsZXggdmFsdWUgaW4gdGhlIGRpYWxvZyBoYXMgaGlnaGVzdCBwcm9yaXR5 CisrICAgICAgICAvLyAyKSBkdXBsZXggdmFsdWUgc2V0IGluIHRoZSBRUHJpbnRlcgorICAgICAg ICAgUVByaW50OjpEdXBsZXhNb2RlIGR1cGxleDsKKyAgICAgICAgIGlmIChleHBsaWNpdER1cGxl eE1vZGUgIT0gUVByaW50OjpEdXBsZXhBdXRvICYmIHN1cHBvcnRlZER1cGxleE1vZGUuY29udGFp bnMoZXhwbGljaXREdXBsZXhNb2RlKSkKKyAgICAgICAgICAgICBkdXBsZXggPSBleHBsaWNpdER1 cGxleE1vZGU7CisgICAgICAgICBlbHNlCistICAgICAgICAgICAgZHVwbGV4ID0gdG9wLT5kLT5t X2N1cnJlbnRQcmludERldmljZS5kZWZhdWx0RHVwbGV4TW9kZSgpOworKyAgICAgICAgICAgIGR1 cGxleCA9IHN0YXRpY19jYXN0PFFQcmludDo6RHVwbGV4TW9kZT4ocC0+ZHVwbGV4KCkpOworICAg ICAgICAgc3dpdGNoIChkdXBsZXgpIHsKKyAgICAgICAgIGNhc2UgUVByaW50OjpEdXBsZXhOb25l OgorICAgICAgICAgICAgIG9wdGlvbnMubm9EdXBsZXgtPnNldENoZWNrZWQodHJ1ZSk7IGJyZWFr OworQEAgLTEyNDIsMTAgKzEyNDMsMTAgQEAgdm9pZCBRVW5peFByaW50V2lkZ2V0UHJpdmF0ZTo6 X3FfcHJpbnRlckNoYW5nZWQoaW50IGluZGV4KQorICAgICAgICAgICAgIFFTdHJpbmcgZmlsZW5h bWUgPSB3aWRnZXQuZmlsZW5hbWUtPnRleHQoKTsKKyAgICAgICAgICAgICB3aWRnZXQuZmlsZW5h bWUtPnNldFRleHQoZmlsZW5hbWUpOworICAgICAgICAgICAgIHdpZGdldC5sT3V0cHV0LT5zZXRF bmFibGVkKHRydWUpOworLSAgICAgICAgICAgIGlmIChvcHRpb25zUGFuZSkKKy0gICAgICAgICAg ICAgICAgb3B0aW9uc1BhbmUtPnNlbGVjdFByaW50ZXIoUVByaW50ZXI6OlBkZkZvcm1hdCk7Cisg ICAgICAgICAgICAgcHJpbnRlci0+c2V0T3V0cHV0Rm9ybWF0KFFQcmludGVyOjpQZGZGb3JtYXQp OworICAgICAgICAgICAgIG1fY3VycmVudFByaW50RGV2aWNlID0gUVByaW50RGV2aWNlKCk7Cisr ICAgICAgICAgICAgaWYgKG9wdGlvbnNQYW5lKQorKyAgICAgICAgICAgICAgICBvcHRpb25zUGFu ZS0+c2VsZWN0UHJpbnRlcihRUHJpbnRlcjo6UGRmRm9ybWF0KTsKKyAgICAgICAgICAgICByZXR1 cm47CisgICAgICAgICB9CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3Vw cG9ydC9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cuY3BwIGIvcXRiYXNlL3NyYy9wcmludHN1 cHBvcnQvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nLmNwcAoraW5kZXggMzk1NzVkNWY1Ny4u MjNiN2U4OTUzOCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv cXByaW50cHJldmlld2RpYWxvZy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy5jcHAKK0BAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBR UHJpbnRQcmV2aWV3RGlhbG9nUHJpdmF0ZTo6aW5pdChRUHJpbnRlciAqX3ByaW50ZXIpCisgc3Rh dGljIGlubGluZSB2b2lkIHF0X3NldHVwQWN0aW9uSWNvbihRQWN0aW9uICphY3Rpb24sIFFMYXRp bjFTdHJpbmcgbmFtZSkKKyB7CisgICAgIFFMYXRpbjFTdHJpbmcgaW1hZ2VQcmVmaXgoIjovcXQt cHJvamVjdC5vcmcvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nL2ltYWdlcy8iKTsKKy0gICAg UUljb24gaWNvbjsKKysgICAgUUljb24gaWNvbiA9IFFJY29uOjpmcm9tVGhlbWUobmFtZSk7Cisg ICAgIGljb24uYWRkRmlsZShpbWFnZVByZWZpeCArIG5hbWUgKyBRTGF0aW4xU3RyaW5nKCItMjQu cG5nIiksIFFTaXplKDI0LCAyNCkpOworICAgICBpY29uLmFkZEZpbGUoaW1hZ2VQcmVmaXggKyBu YW1lICsgUUxhdGluMVN0cmluZygiLTMyLnBuZyIpLCBRU2l6ZSgzMiwgMzIpKTsKKyAgICAgYWN0 aW9uLT5zZXRJY29uKGljb24pOworQEAgLTM4Myw4ICszODMsOCBAQCB2b2lkIFFQcmludFByZXZp ZXdEaWFsb2dQcml2YXRlOjpzZXR1cEFjdGlvbnMoKQorICAgICBmaXRQYWdlQWN0aW9uLT5zZXRP YmplY3ROYW1lKFFMYXRpbjFTdHJpbmcoImZpdFBhZ2VBY3Rpb24iKSk7CisgICAgIGZpdFdpZHRo QWN0aW9uLT5zZXRDaGVja2FibGUodHJ1ZSk7CisgICAgIGZpdFBhZ2VBY3Rpb24tPnNldENoZWNr YWJsZSh0cnVlKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKGZpdFdpZHRoQWN0aW9uLCBRTGF0 aW4xU3RyaW5nKCJmaXQtd2lkdGgiKSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihmaXRQYWdl QWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJmaXQtcGFnZSIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25J Y29uKGZpdFdpZHRoQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ6b29tLWZpdC13aWR0aCIpKTsKKysg ICAgcXRfc2V0dXBBY3Rpb25JY29uKGZpdFBhZ2VBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInpvb20t Zml0LXBhZ2UiKSk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QoZml0R3JvdXAsIFNJR05BTCh0cmln Z2VyZWQoUUFjdGlvbiopKSwgcSwgU0xPVChfcV9maXQoUUFjdGlvbiopKSk7CisgCisgICAgIC8v IFpvb20KK0BAIC00MTAsOSArNDEwLDkgQEAgdm9pZCBRUHJpbnRQcmV2aWV3RGlhbG9nUHJpdmF0 ZTo6c2V0dXBBY3Rpb25zKCkKKyAgICAgc2luZ2xlTW9kZUFjdGlvbiA9IG1vZGVHcm91cC0+YWRk QWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxvZyIs ICJTaG93IHNpbmdsZSBwYWdlIikpOworICAgICBmYWNpbmdNb2RlQWN0aW9uID0gbW9kZUdyb3Vw LT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlh bG9nIiwgIlNob3cgZmFjaW5nIHBhZ2VzIikpOworICAgICBvdmVydmlld01vZGVBY3Rpb24gPSBt b2RlR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFBy ZXZpZXdEaWFsb2ciLCAiU2hvdyBvdmVydmlldyBvZiBhbGwgcGFnZXMiKSk7CistICAgIHF0X3Nl dHVwQWN0aW9uSWNvbihzaW5nbGVNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2aWV3LXBhZ2Ut b25lIikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oZmFjaW5nTW9kZUFjdGlvbiwgUUxhdGlu MVN0cmluZygidmlldy1wYWdlLXNpZGVkIikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24ob3Zl cnZpZXdNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2aWV3LXBhZ2UtbXVsdGkiKSk7CisrICAg IHF0X3NldHVwQWN0aW9uSWNvbihzaW5nbGVNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2aWV3 LXBhZ2VzLXNpbmdsZSIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29uKGZhY2luZ01vZGVBY3Rp b24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZXMtZmFjaW5nIikpOworKyAgICBxdF9zZXR1cEFj dGlvbkljb24ob3ZlcnZpZXdNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2aWV3LXBhZ2VzLW92 ZXJ2aWV3IikpOworICAgICBzaW5nbGVNb2RlQWN0aW9uLT5zZXRPYmplY3ROYW1lKFFMYXRpbjFT dHJpbmcoInNpbmdsZU1vZGVBY3Rpb24iKSk7CisgICAgIGZhY2luZ01vZGVBY3Rpb24tPnNldE9i amVjdE5hbWUoUUxhdGluMVN0cmluZygiZmFjaW5nTW9kZUFjdGlvbiIpKTsKKyAgICAgb3ZlcnZp ZXdNb2RlQWN0aW9uLT5zZXRPYmplY3ROYW1lKFFMYXRpbjFTdHJpbmcoIm92ZXJ2aWV3TW9kZUFj dGlvbiIpKTsKK0BAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBRUHJpbnRQcmV2aWV3RGlhbG9nUHJp dmF0ZTo6c2V0dXBBY3Rpb25zKCkKKyAgICAgcHJpbnRlckdyb3VwID0gbmV3IFFBY3Rpb25Hcm91 cChxKTsKKyAgICAgcHJpbnRBY3Rpb24gPSBwcmludGVyR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFw cGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAiUHJpbnQiKSk7Cisg ICAgIHBhZ2VTZXR1cEFjdGlvbiA9IHByaW50ZXJHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGlj YXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxvZyIsICJQYWdlIHNldHVwIikpOwor LSAgICBxdF9zZXR1cEFjdGlvbkljb24ocHJpbnRBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInByaW50 IikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24ocHJpbnRBY3Rpb24sIFFMYXRpbjFTdHJpbmco InByaW50ZXIiKSk7CisgICAgIHF0X3NldHVwQWN0aW9uSWNvbihwYWdlU2V0dXBBY3Rpb24sIFFM YXRpbjFTdHJpbmcoInBhZ2Utc2V0dXAiKSk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocHJpbnRB Y3Rpb24sIFNJR05BTCh0cmlnZ2VyZWQoYm9vbCkpLCBxLCBTTE9UKF9xX3ByaW50KCkpKTsKKyAg ICAgUU9iamVjdDo6Y29ubmVjdChwYWdlU2V0dXBBY3Rpb24sIFNJR05BTCh0cmlnZ2VyZWQoYm9v bCkpLCBxLCBTTE9UKF9xX3BhZ2VTZXR1cCgpKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9z cWwva2VybmVsL3FzcWxxdWVyeS5jcHAgYi9xdGJhc2Uvc3JjL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5 LmNwcAoraW5kZXggMzJjNjE2NmM3OS4uNjBhZmVmMTBjMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvc3FsL2tlcm5lbC9xc3FscXVlcnkuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3NxbC9rZXJuZWwv cXNxbHF1ZXJ5LmNwcAorQEAgLTEsNiArMSw2IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq KgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29weXJp Z2h0IChDKSAyMDIyIFRoZSBRdCBDb21wYW55IEx0ZC4KKyAqKiBDb250YWN0OiBodHRwczovL3d3 dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRT cWwgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTM3Nyw2ICszNzcsMTAgQEAgYm9vbCBR U3FsUXVlcnk6OmV4ZWMoY29uc3QgUVN0cmluZyYgcXVlcnkpCisgICAgIFFFbGFwc2VkVGltZXIg dDsKKyAgICAgdC5zdGFydCgpOworICNlbmRpZgorKyAgICBpZiAoIWRyaXZlcigpKSB7CisrICAg ICAgICBxV2FybmluZygiUVNxbFF1ZXJ5OjpleGVjOiBjYWxsZWQgYmVmb3JlIGRyaXZlciBoYXMg YmVlbiBzZXQgdXAiKTsKKysgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgfQorICAgICBpZiAo ZC0+cmVmLmxvYWRSZWxheGVkKCkgIT0gMSkgeworICAgICAgICAgYm9vbCBmbyA9IGlzRm9yd2Fy ZE9ubHkoKTsKKyAgICAgICAgICp0aGlzID0gUVNxbFF1ZXJ5KGRyaXZlcigpLT5jcmVhdGVSZXN1 bHQoKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2Rl bHRlc3Rlci5jcHAgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVy LmNwcAoraW5kZXggOGVmYjljNTNkNC4uY2UwNjJmNjZkNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAorQEAgLTQ1NCw3ICs0NTQsNyBA QCB2b2lkIFFBYnN0cmFjdEl0ZW1Nb2RlbFRlc3RlclByaXZhdGU6OnBhcmVudCgpCisgCisgICAg IC8vIENvbW1vbiBlcnJvciB0ZXN0ICMyLCBtYWtlIHN1cmUgdGhhdCBhIHNlY29uZCBsZXZlbCBp bmRleCBoYXMgYSBwYXJlbnQKKyAgICAgLy8gdGhhdCBpcyB0aGUgZmlyc3QgbGV2ZWwgaW5kZXgu CistICAgIGlmIChtb2RlbC0+cm93Q291bnQodG9wSW5kZXgpID4gMCkgeworKyAgICBpZiAobW9k ZWwtPnJvd0NvdW50KHRvcEluZGV4KSA+IDAgJiYgbW9kZWwtPmNvbHVtbkNvdW50KHRvcEluZGV4 KSA+IDApIHsKKyAgICAgICAgIFFNb2RlbEluZGV4IGNoaWxkSW5kZXggPSBtb2RlbC0+aW5kZXgo MCwgMCwgdG9wSW5kZXgpOworICAgICAgICAgTU9ERUxURVNURVJfVkVSSUZZKGNoaWxkSW5kZXgu aXNWYWxpZCgpKTsKKyAgICAgICAgIE1PREVMVEVTVEVSX0NPTVBBUkUobW9kZWwtPnBhcmVudChj aGlsZEluZGV4KSwgdG9wSW5kZXgpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvdGVzdGxpYi9x YXNjaWlrZXkuY3BwIGIvcXRiYXNlL3NyYy90ZXN0bGliL3Fhc2NpaWtleS5jcHAKK2luZGV4IDlh MzA4ZGEyYmMuLjkzNDk4YjI1NmYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFz Y2lpa2V5LmNwcAorKysrIGIvcXRiYXNlL3NyYy90ZXN0bGliL3Fhc2NpaWtleS5jcHAKK0BAIC00 OTgsNiArNDk4LDExIEBAIGNoYXIgUVRlc3Q6OmtleVRvQXNjaWkoUXQ6OktleSBrZXkpCisgICAg IGNhc2UgUXQ6OktleV9MYXVuY2hFIDogcmV0dXJuIDA7IC8vID0gMHgxMGIwLAorICAgICBjYXNl IFF0OjpLZXlfTGF1bmNoRiA6IHJldHVybiAwOyAvLyA9IDB4MTBiMSwKKyAKKysgICAgLy8gS2V5 cGFkIG5hdmlnYXRpb24ga2V5cworKyAgICBjYXNlIFF0OjpLZXlfU2VsZWN0IDogcmV0dXJuIDA7 IC8vID0gMHgwMTAxMDAwMAorKyAgICBjYXNlIFF0OjpLZXlfWWVzIDogcmV0dXJuIDA7IC8vID0g MHgwMTAxMDAwMQorKyAgICBjYXNlIFF0OjpLZXlfTm8gOiByZXR1cm4gMDsgLy8gPSAweDAxMDEw MDAyCisrCisgICAgIGRlZmF1bHQ6IFFURVNUX0FTU0VSVChmYWxzZSk7IHJldHVybiAwOworICAg ICB9CisgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAg Yi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3BwCitpbmRleCA4ODAyOGFhYzZlLi4y ZTg5OTMwNzc2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy90ZXN0bGliL3F0ZXN0cmVzdWx0LmNw cAorKysrIGIvcXRiYXNlL3NyYy90ZXN0bGliL3F0ZXN0cmVzdWx0LmNwcAorQEAgLTI1MSw3ICsy NTEsOCBAQCBib29sIFFUZXN0UmVzdWx0Ojp2ZXJpZnkoYm9vbCBzdGF0ZW1lbnQsIGNvbnN0IGNo YXIgKnN0YXRlbWVudFN0ciwKKyB7CisgICAgIFFURVNUX0FTU0VSVChzdGF0ZW1lbnRTdHIpOwor IAorLSAgICBjaGFyIG1zZ1sxMDI0XSA9IHsnXDAnfTsKKysgICAgY2hhciBtc2dbMTAyNF07Cisr ICAgIG1zZ1swXSA9ICdcMCc7CisgCisgICAgIGlmIChRVGVzdExvZzo6dmVyYm9zZUxldmVsKCkg Pj0gMikgeworICAgICAgICAgcXNucHJpbnRmKG1zZywgMTAyNCwgIlFWRVJJRlkoJXMpIiwgc3Rh dGVtZW50U3RyKTsKK0BAIC0zMDksNyArMzEwLDggQEAgc3RhdGljIGJvb2wgY29tcGFyZUhlbHBl cihib29sIHN1Y2Nlc3MsIGNvbnN0IGNoYXIgKmZhaWx1cmVNc2csCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBib29sIGhhc1ZhbHVlcyA9IHRydWUpCisgeworICAgICBjb25zdCBzaXplX3Qg bWF4TXNnTGVuID0gMTAyNDsKKy0gICAgY2hhciBtc2dbbWF4TXNnTGVuXSA9IHsnXDAnfTsKKysg ICAgY2hhciBtc2dbbWF4TXNnTGVuXTsKKysgICAgbXNnWzBdID0gJ1wwJzsKKyAKKyAgICAgUVRF U1RfQVNTRVJUKGV4cGVjdGVkKTsKKyAgICAgUVRFU1RfQVNTRVJUKGFjdHVhbCk7CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNwcCBiL3F0YmFz ZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fjb2xvcmRpYWxvZy5jcHAKK2luZGV4IDQyNDc3MzEyNzUu LmNiMzI1YmU4NWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvZGlhbG9ncy9xY29s b3JkaWFsb2cuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvZGlhbG9ncy9xY29sb3JkaWFs b2cuY3BwCitAQCAtNzgsNyArNzgsMTAgQEAKKyAjaW5jbHVkZSAicXdpbmRvdy5oIgorIAorICNp bmNsdWRlICJwcml2YXRlL3FkaWFsb2dfcC5oIgorKyNpbmNsdWRlICJwcml2YXRlL3FndWlhcHBs aWNhdGlvbl9wLmgiCisgCisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1zZXJ2aWNlcy5oPgorKyNp bmNsdWRlIDxxcGEvcXBsYXRmb3JtaW50ZWdyYXRpb24uaD4KKyAjaW5jbHVkZSA8YWxnb3JpdGht PgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorQEAgLTE2MTEsNiArMTYxNCwyMCBAQCB2b2lkIFFD b2xvckRpYWxvZ1ByaXZhdGU6Ol9xX25ld1N0YW5kYXJkKGludCByLCBpbnQgYykKKyB2b2lkIFFD b2xvckRpYWxvZ1ByaXZhdGU6Ol9xX3BpY2tTY3JlZW5Db2xvcigpCisgeworICAgICBRX1EoUUNv bG9yRGlhbG9nKTsKKysKKysgICAgYXV0byAqcGxhdGZvcm1TZXJ2aWNlcyA9IFFHdWlBcHBsaWNh dGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+c2VydmljZXMoKTsKKysgICAgaWYg KHBsYXRmb3JtU2VydmljZXMtPmhhc0NhcGFiaWxpdHkoUVBsYXRmb3JtU2VydmljZXM6OkNhcGFi aWxpdHk6OkNvbG9yUGlja2luZykpIHsKKysgICAgICAgIGlmIChhdXRvICpjb2xvclBpY2tlciA9 IHBsYXRmb3JtU2VydmljZXMtPmNvbG9yUGlja2VyKHEtPndpbmRvd0hhbmRsZSgpKSkgeworKyAg ICAgICAgICAgIHEtPmNvbm5lY3QoY29sb3JQaWNrZXIsICZRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQ aWNrZXI6OmNvbG9yUGlja2VkLCBxLAorKyAgICAgICAgICAgICAgICAgICAgICAgW3EsIGNvbG9y UGlja2VyXShjb25zdCBRQ29sb3IgJmNvbG9yKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29sb3JQaWNrZXItPmRlbGV0ZUxhdGVyKCk7CisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgcS0+c2V0Q3VycmVudENvbG9yKGNvbG9yKTsKKysgICAgICAgICAgICAgICAgICAgICAgIH0p OworKyAgICAgICAgICAgIGNvbG9yUGlja2VyLT5waWNrQ29sb3IoKTsKKysgICAgICAgICAgICBy ZXR1cm47CisrICAgICAgICB9CisrICAgIH0KKysKKyAgICAgaWYgKCFjb2xvclBpY2tpbmdFdmVu dEZpbHRlcikKKyAgICAgICAgIGNvbG9yUGlja2luZ0V2ZW50RmlsdGVyID0gbmV3IFFDb2xvclBp Y2tpbmdFdmVudEZpbHRlcih0aGlzLCBxKTsKKyAgICAgcS0+aW5zdGFsbEV2ZW50RmlsdGVyKGNv bG9yUGlja2luZ0V2ZW50RmlsdGVyKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMv aXRlbXZpZXdzL3FhYnN0cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMv aXRlbXZpZXdzL3FhYnN0cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAKK2luZGV4IGUxMjA4MTdlZGMuLjhl YTM2YjU0MjcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FhYnN0 cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3Mv cWFic3RyYWN0aXRlbWRlbGVnYXRlLmNwcAorQEAgLTQwMCwxMiArNDAwLDcgQEAgYm9vbCBRQWJz dHJhY3RJdGVtRGVsZWdhdGU6OmhlbHBFdmVudChRSGVscEV2ZW50ICpldmVudCwKKyAgICAgICAg IGNvbnN0IFFTdHJpbmcgdG9vbHRpcCA9IGluZGV4LmlzVmFsaWQoKSA/CisgICAgICAgICAgICAg ICBkLT50ZXh0Rm9yUm9sZShRdDo6VG9vbFRpcFJvbGUsIGluZGV4LmRhdGEoUXQ6OlRvb2xUaXBS b2xlKSwgb3B0aW9uLmxvY2FsZSwgcHJlY2lzaW9uKSA6CisgICAgICAgICAgICAgICBRU3RyaW5n KCk7CistICAgICAgICBRUmVjdCByZWN0OworLSAgICAgICAgaWYgKGluZGV4LmlzVmFsaWQoKSkg eworLSAgICAgICAgICAgIGNvbnN0IFFSZWN0IHIgPSB2aWV3LT52aXN1YWxSZWN0KGluZGV4KTsK Ky0gICAgICAgICAgICByZWN0ID0gUVJlY3Qodmlldy0+bWFwVG9HbG9iYWwoci50b3BMZWZ0KCkp LCByLnNpemUoKSk7CistICAgICAgICB9CistICAgICAgICBRVG9vbFRpcDo6c2hvd1RleHQoaGUt Pmdsb2JhbFBvcygpLCB0b29sdGlwLCB2aWV3LCByZWN0KTsKKysgICAgICAgIFFUb29sVGlwOjpz aG93VGV4dChoZS0+Z2xvYmFsUG9zKCksIHRvb2x0aXAsIHZpZXctPnZpZXdwb3J0KCksIG9wdGlv bi5yZWN0KTsKKyAgICAgICAgIGV2ZW50LT5zZXRBY2NlcHRlZCghdG9vbHRpcC5pc0VtcHR5KCkp OworICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93 aWRnZXRzL2l0ZW12aWV3cy9xbGlzdHZpZXcuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12 aWV3cy9xbGlzdHZpZXcuY3BwCitpbmRleCAyYjM0NDc2NjQyLi5lZWJmYWEwMzBlIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xbGlzdHZpZXcuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FsaXN0dmlldy5jcHAKK0BAIC0zMzg2LDYgKzMz ODYsNyBAQCB2b2lkIFFJY29uTW9kZVZpZXdCYXNlOjp1cGRhdGVDb250ZW50c1NpemUoKQorICov Cisgdm9pZCBRTGlzdFZpZXc6OmN1cnJlbnRDaGFuZ2VkKGNvbnN0IFFNb2RlbEluZGV4ICZjdXJy ZW50LCBjb25zdCBRTW9kZWxJbmRleCAmcHJldmlvdXMpCisgeworKyAgICBRQWJzdHJhY3RJdGVt Vmlldzo6Y3VycmVudENoYW5nZWQoY3VycmVudCwgcHJldmlvdXMpOworICNpZm5kZWYgUVRfTk9f QUNDRVNTSUJJTElUWQorICAgICBpZiAoUUFjY2Vzc2libGU6OmlzQWN0aXZlKCkpIHsKKyAgICAg ICAgIGlmIChjdXJyZW50LmlzVmFsaWQoKSkgeworQEAgLTMzOTYsNyArMzM5Nyw2IEBAIHZvaWQg UUxpc3RWaWV3OjpjdXJyZW50Q2hhbmdlZChjb25zdCBRTW9kZWxJbmRleCAmY3VycmVudCwgY29u c3QgUU1vZGVsSW5kZXggJnByCisgICAgICAgICB9CisgICAgIH0KKyAjZW5kaWYKKy0gICAgUUFi c3RyYWN0SXRlbVZpZXc6OmN1cnJlbnRDaGFuZ2VkKGN1cnJlbnQsIHByZXZpb3VzKTsKKyB9Cisg CisgLyohCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2 aWV3LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy5jcHAKK2lu ZGV4IDkzNGFjNTgxYjIuLmY3OWJiMjQyNDkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdl dHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRl bXZpZXdzL3F0YWJsZXZpZXcuY3BwCitAQCAtMTAxMyw2ICsxMDEzLDcgQEAgdm9pZCBRVGFibGVW aWV3UHJpdmF0ZTo6ZHJhd0NlbGwoUVBhaW50ZXIgKnBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlv blZpZXdJdGVtICYKKyBpbnQgUVRhYmxlVmlld1ByaXZhdGU6OndpZHRoSGludEZvckluZGV4KGNv bnN0IFFNb2RlbEluZGV4ICZpbmRleCwgaW50IGhpbnQsIGNvbnN0IFFTdHlsZU9wdGlvblZpZXdJ dGVtICZvcHRpb24pIGNvbnN0CisgeworICAgICBRX1EoY29uc3QgUVRhYmxlVmlldyk7CisrICAg IGNvbnN0IGludCBvbGRIaW50ID0gaGludDsKKyAgICAgUVdpZGdldCAqZWRpdG9yID0gZWRpdG9y Rm9ySW5kZXgoaW5kZXgpLndpZGdldC5kYXRhKCk7CisgICAgIGlmIChlZGl0b3IgJiYgcGVyc2lz dGVudC5jb250YWlucyhlZGl0b3IpKSB7CisgICAgICAgICBoaW50ID0gcU1heChoaW50LCBlZGl0 b3ItPnNpemVIaW50KCkud2lkdGgoKSk7CitAQCAtMTAyMSw2ICsxMDIyLDE3IEBAIGludCBRVGFi bGVWaWV3UHJpdmF0ZTo6d2lkdGhIaW50Rm9ySW5kZXgoY29uc3QgUU1vZGVsSW5kZXggJmluZGV4 LCBpbnQgaGludCwgY29uCisgICAgICAgICBoaW50ID0gcUJvdW5kKG1pbiwgaGludCwgbWF4KTsK KyAgICAgfQorICAgICBoaW50ID0gcU1heChoaW50LCBxLT5pdGVtRGVsZWdhdGUoaW5kZXgpLT5z aXplSGludChvcHRpb24sIGluZGV4KS53aWR0aCgpKTsKKysKKysgICAgaWYgKGhhc1NwYW5zKCkp IHsKKysgICAgICAgIGF1dG8gc3BhbiA9IHNwYW5zLnNwYW5BdChpbmRleC5jb2x1bW4oKSwgaW5k ZXgucm93KCkpOworKyAgICAgICAgaWYgKHNwYW4gJiYgc3Bhbi0+bV9sZWZ0ID09IGluZGV4LmNv bHVtbigpICYmIHNwYW4tPm1fdG9wID09IGluZGV4LnJvdygpKSB7CisrICAgICAgICAgICAgLy8g c3BhbnMgYXJlIHNjcmV3ZWQgdXAgd2hlbiBzZWN0aW9ucyBhcmUgbW92ZWQKKysgICAgICAgICAg ICBjb25zdCBhdXRvIGxlZnQgPSBsb2dpY2FsQ29sdW1uKHNwYW4tPm1fbGVmdCk7CisrICAgICAg ICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gc3Bhbi0+d2lkdGgoKTsgKytpKQorKyAgICAgICAg ICAgICAgIGhpbnQgLT0gcS0+Y29sdW1uV2lkdGgodmlzdWFsQ29sdW1uKGxlZnQgKyBpKSk7Cisr ICAgICAgICB9CisrICAgICAgICBoaW50ID0gc3RkOjptYXgoaGludCwgb2xkSGludCk7CisrICAg IH0KKyAgICAgcmV0dXJuIGhpbnQ7CisgfQorIAorQEAgLTEwNTMsNiArMTA2NSwxMSBAQCBpbnQg UVRhYmxlVmlld1ByaXZhdGU6OmhlaWdodEhpbnRGb3JJbmRleChjb25zdCBRTW9kZWxJbmRleCAm aW5kZXgsIGludCBoaW50LCBRUworICAgICAgICAgb3B0aW9uLnJlY3Quc2V0SGVpZ2h0KGhlaWdo dCk7CisgICAgICAgICBvcHRpb24ucmVjdC5zZXRYKHEtPmNvbHVtblZpZXdwb3J0UG9zaXRpb24o aW5kZXguY29sdW1uKCkpKTsKKyAgICAgICAgIG9wdGlvbi5yZWN0LnNldFdpZHRoKHEtPmNvbHVt bldpZHRoKGluZGV4LmNvbHVtbigpKSk7CisrICAgICAgICBpZiAoaGFzU3BhbnMoKSkgeworKyAg ICAgICAgICAgIGF1dG8gc3BhbiA9IHNwYW5zLnNwYW5BdChpbmRleC5jb2x1bW4oKSwgaW5kZXgu cm93KCkpOworKyAgICAgICAgICAgIGlmIChzcGFuICYmIHNwYW4tPm1fbGVmdCA9PSBpbmRleC5j b2x1bW4oKSAmJiBzcGFuLT5tX3RvcCA9PSBpbmRleC5yb3coKSkKKysgICAgICAgICAgICAgICAg b3B0aW9uLnJlY3Quc2V0V2lkdGgoc3RkOjptYXgob3B0aW9uLnJlY3Qud2lkdGgoKSwgdmlzdWFs U3BhblJlY3QoKnNwYW4pLndpZHRoKCkpKTsKKysgICAgICAgIH0KKyAgICAgICAgIC8vIDFweCBs ZXNzIHNwYWNlIHdoZW4gZ3JpZCBpcyBzaG93biAoc2VlIGRyYXdDZWxsKQorICAgICAgICAgaWYg KHNob3dHcmlkKQorICAgICAgICAgICAgIG9wdGlvbi5yZWN0LnNldFdpZHRoKG9wdGlvbi5yZWN0 LndpZHRoKCkgLSAxKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3Fh Y3Rpb24uaCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcWFjdGlvbi5oCitpbmRleCAyNThh MWVhMGEwLi43MzdjMWU4Mjg1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5l bC9xYWN0aW9uLmgKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcWFjdGlvbi5oCitA QCAtODEsNyArODEsNyBAQCBjbGFzcyBRX1dJREdFVFNfRVhQT1JUIFFBY3Rpb24gOiBwdWJsaWMg UU9iamVjdAorICAgICBRX1BST1BFUlRZKE1lbnVSb2xlIG1lbnVSb2xlIFJFQUQgbWVudVJvbGUg V1JJVEUgc2V0TWVudVJvbGUgTk9USUZZIGNoYW5nZWQpCisgICAgIFFfUFJPUEVSVFkoYm9vbCBp Y29uVmlzaWJsZUluTWVudSBSRUFEIGlzSWNvblZpc2libGVJbk1lbnUgV1JJVEUgc2V0SWNvblZp c2libGVJbk1lbnUgTk9USUZZIGNoYW5nZWQpCisgICAgIFFfUFJPUEVSVFkoYm9vbCBzaG9ydGN1 dFZpc2libGVJbkNvbnRleHRNZW51IFJFQUQgaXNTaG9ydGN1dFZpc2libGVJbkNvbnRleHRNZW51 IFdSSVRFIHNldFNob3J0Y3V0VmlzaWJsZUluQ29udGV4dE1lbnUgTk9USUZZIGNoYW5nZWQpCist ICAgIFFfUFJPUEVSVFkoUHJpb3JpdHkgcHJpb3JpdHkgUkVBRCBwcmlvcml0eSBXUklURSBzZXRQ cmlvcml0eSkKKysgICAgUV9QUk9QRVJUWShQcmlvcml0eSBwcmlvcml0eSBSRUFEIHByaW9yaXR5 IFdSSVRFIHNldFByaW9yaXR5IE5PVElGWSBjaGFuZ2VkKQorIAorIHB1YmxpYzoKKyAgICAgLy8g bm90ZSB0aGlzIGlzIGNvcGllZCBpbnRvIHFwbGF0Zm9ybW1lbnUuaCwgd2hpY2ggbXVzdCBzdGF5 IGluIHN5bmMKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQu Y3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0LmNwcAoraW5kZXggOWViYTFl MDAxZS4uMjZmNmQyN2UxOCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwv cXdpZGdldC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldC5jcHAK K0BAIC01Mjk2LDcgKzUyOTYsNyBAQCB2b2lkIFFXaWRnZXRQcml2YXRlOjpkcmF3V2lkZ2V0KFFQ YWludERldmljZSAqcGRldiwgY29uc3QgUVJlZ2lvbiAmcmduLCBjb25zdCBRUAorICAgICAgICAg UVdpZGdldEVmZmVjdFNvdXJjZVByaXZhdGUgKnNvdXJjZWQgPSBzdGF0aWNfY2FzdDxRV2lkZ2V0 RWZmZWN0U291cmNlUHJpdmF0ZSAqPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzb3VyY2UtPmRfZnVuYygpKTsKKyAgICAgICAgIGlm ICghc291cmNlZC0+Y29udGV4dCkgeworLSAgICAgICAgICAgIGNvbnN0IFFSZWdpb24gZWZmZWN0 UmduKHJnbi5ib3VuZGluZ1JlY3QoKSk7CisrICAgICAgICAgICAgY29uc3QgUVJlZ2lvbiBlZmZl Y3RSZ24oKGZsYWdzICYgVXNlRWZmZWN0UmVnaW9uQm91bmRzKSA/IHJnbi5ib3VuZGluZ1JlY3Qo KSA6IHJnbik7CisgICAgICAgICAgICAgUVdpZGdldFBhaW50Q29udGV4dCBjb250ZXh0KHBkZXYs IGVmZmVjdFJnbiwgb2Zmc2V0LCBmbGFncywgc2hhcmVkUGFpbnRlciwgcmVwYWludE1hbmFnZXIp OworICAgICAgICAgICAgIHNvdXJjZWQtPmNvbnRleHQgPSAmY29udGV4dDsKKyAgICAgICAgICAg ICBpZiAoIXNoYXJlZFBhaW50ZXIpIHsKK0BAIC01MzI4LDYgKzUzMjgsNyBAQCB2b2lkIFFXaWRn ZXRQcml2YXRlOjpkcmF3V2lkZ2V0KFFQYWludERldmljZSAqcGRldiwgY29uc3QgUVJlZ2lvbiAm cmduLCBjb25zdCBRUAorICAgICAgICAgfQorICAgICB9CisgI2VuZGlmIC8vIFFUX0NPTkZJRyhn cmFwaGljc2VmZmVjdCkKKysgICAgZmxhZ3MgPSBmbGFncyAmIH5Vc2VFZmZlY3RSZWdpb25Cb3Vu ZHM7CisgCisgICAgIGNvbnN0IGJvb2wgYWxzb09uU2NyZWVuID0gZmxhZ3MgJiBEcmF3UGFpbnRP blNjcmVlbjsKKyAgICAgY29uc3QgYm9vbCByZWN1cnNpdmUgPSBmbGFncyAmIERyYXdSZWN1cnNp dmU7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaCBi L3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmgKK2luZGV4IGVlZjZiOGZhMmMu LmM0MzJmNGI1ZDUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRn ZXRfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRfcC5oCitAQCAt MjI5LDcgKzIyOSw4IEBAIHB1YmxpYzoKKyAgICAgICAgIERvbnRTdWJ0cmFjdE9wYXF1ZUNoaWxk cmVuID0gMHgxMCwKKyAgICAgICAgIERvbnREcmF3T3BhcXVlQ2hpbGRyZW4gPSAweDIwLAorICAg ICAgICAgRG9udERyYXdOYXRpdmVDaGlsZHJlbiA9IDB4NDAsCistICAgICAgICBEb250U2V0Q29t cG9zaXRpb25Nb2RlID0gMHg4MAorKyAgICAgICAgRG9udFNldENvbXBvc2l0aW9uTW9kZSA9IDB4 ODAsCisrICAgICAgICBVc2VFZmZlY3RSZWdpb25Cb3VuZHMgPSAweDEwMAorICAgICB9OworICAg ICBRX0RFQ0xBUkVfRkxBR1MoRHJhd1dpZGdldEZsYWdzLCBEcmF3V2lkZ2V0RmxhZykKKyAgICAg UV9GTEFHKERyYXdXaWRnZXRGbGFncykKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMv a2VybmVsL3F3aWRnZXRyZXBhaW50bWFuYWdlci5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2Vy bmVsL3F3aWRnZXRyZXBhaW50bWFuYWdlci5jcHAKK2luZGV4IDAyODgwYjM0ZGEuLjBkNDRlMTMy NmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRyZXBhaW50 bWFuYWdlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldHJlcGFp bnRtYW5hZ2VyLmNwcAorQEAgLTEwMTgsNyArMTAxOCw4IEBAIHZvaWQgUVdpZGdldFJlcGFpbnRN YW5hZ2VyOjpwYWludEFuZEZsdXNoKCkKKyAKKyAgICAgLy8gUGFpbnQgdGhlIHJlc3Qgd2l0aCBj b21wb3NpdGlvbi4KKyAgICAgaWYgKHJlcGFpbnRBbGxXaWRnZXRzIHx8ICFkaXJ0eUNvcHkuaXNF bXB0eSgpKSB7CistICAgICAgICBRV2lkZ2V0UHJpdmF0ZTo6RHJhd1dpZGdldEZsYWdzIGZsYWdz ID0gUVdpZGdldFByaXZhdGU6OkRyYXdBc1Jvb3QgfCBRV2lkZ2V0UHJpdmF0ZTo6RHJhd1JlY3Vy c2l2ZTsKKysgICAgICAgIFFXaWRnZXRQcml2YXRlOjpEcmF3V2lkZ2V0RmxhZ3MgZmxhZ3MgPSBR V2lkZ2V0UHJpdmF0ZTo6RHJhd0FzUm9vdCB8IFFXaWRnZXRQcml2YXRlOjpEcmF3UmVjdXJzaXZl CisrICAgICAgICAgICAgICAgIHwgUVdpZGdldFByaXZhdGU6OlVzZUVmZmVjdFJlZ2lvbkJvdW5k czsKKyAgICAgICAgIHRsdy0+ZF9mdW5jKCktPmRyYXdXaWRnZXQoc3RvcmUtPnBhaW50RGV2aWNl KCksIGRpcnR5Q29weSwgUVBvaW50KCksIGZsYWdzLCBudWxscHRyLCB0aGlzKTsKKyAgICAgfQor IAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1c2lvbnN0eWxlLmNw cCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1c2lvbnN0eWxlLmNwcAoraW5kZXggZjQz NDVkOTdjNC4uOTYyOTEyYzgzOCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9zdHls ZXMvcWZ1c2lvbnN0eWxlLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3N0eWxlcy9xZnVz aW9uc3R5bGUuY3BwCitAQCAtMTc3MiwxNCArMTc3Miw2IEBAIHZvaWQgUUZ1c2lvblN0eWxlOjpk cmF3Q29udHJvbChDb250cm9sRWxlbWVudCBlbGVtZW50LCBjb25zdCBRU3R5bGVPcHRpb24gKm9w dGlvCisgICAgICAgICAgICAgcHJveHkoKS0+ZHJhd0NvbnRyb2woQ0VfUHVzaEJ1dHRvbkxhYmVs LCAmc3Vib3B0LCBwYWludGVyLCB3aWRnZXQpOworICAgICAgICAgfQorICAgICAgICAgYnJlYWs7 CistICAgIGNhc2UgQ0VfUHVzaEJ1dHRvbkxhYmVsOgorLSAgICAgICAgaWYgKGNvbnN0IFFTdHls ZU9wdGlvbkJ1dHRvbiAqYnV0dG9uID0gcXN0eWxlb3B0aW9uX2Nhc3Q8Y29uc3QgUVN0eWxlT3B0 aW9uQnV0dG9uICo+KG9wdGlvbikpIHsKKy0gICAgICAgICAgICBRU3R5bGVPcHRpb25CdXR0b24g YigqYnV0dG9uKTsKKy0gICAgICAgICAgICAvLyBubyBQTV9CdXR0b25TaGlmdEhvcml6b250YWwg YW5kIFBNX0J1dHRvblNoaWZ0VmVydGljYWwgZm9yIGZ1c2lvbiBzdHlsZQorLSAgICAgICAgICAg IGIuc3RhdGUgJj0gfihTdGF0ZV9PbiB8IFN0YXRlX1N1bmtlbik7CistICAgICAgICAgICAgUUNv bW1vblN0eWxlOjpkcmF3Q29udHJvbChlbGVtZW50LCAmYiwgcGFpbnRlciwgd2lkZ2V0KTsKKy0g ICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworICAgICBjYXNlIENFX01lbnVCYXJFbXB0eUFyZWE6 CisgICAgICAgICBwYWludGVyLT5zYXZlKCk7CisgICAgIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy91dGls L3Fjb21wbGV0ZXIuY3BwCitpbmRleCAxOGIyNDA2M2Q4Li5lZjcyMDdhOGEzIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy93aWRnZXRzL3V0aWwvcWNvbXBsZXRlci5jcHAKKysrKyBiL3F0YmFzZS9z cmMvd2lkZ2V0cy91dGlsL3Fjb21wbGV0ZXIuY3BwCitAQCAtMTEyMCw2ICsxMTIwLDggQEAgdm9p ZCBRQ29tcGxldGVyOjpzZXRNb2RlbChRQWJzdHJhY3RJdGVtTW9kZWwgKm1vZGVsKQorIHsKKyAg ICAgUV9EKFFDb21wbGV0ZXIpOworICAgICBRQWJzdHJhY3RJdGVtTW9kZWwgKm9sZE1vZGVsID0g ZC0+cHJveHktPnNvdXJjZU1vZGVsKCk7CisrICAgIGlmIChvbGRNb2RlbCA9PSBtb2RlbCkKKysg ICAgICAgIHJldHVybjsKKyAjaWYgUVRfQ09ORklHKGZpbGVzeXN0ZW1tb2RlbCkKKyAgICAgaWYg KHFvYmplY3RfY2FzdDxjb25zdCBRRmlsZVN5c3RlbU1vZGVsICo+KG9sZE1vZGVsKSkKKyAgICAg ICAgIHNldENvbXBsZXRpb25Sb2xlKFF0OjpFZGl0Um9sZSk7IC8vIFFUQlVHLTU0NjQyLCBjbGVh ciBGaWxlTmFtZVJvbGUgc2V0IGJ5IFFGaWxlU3lzdGVtTW9kZWwKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3BwIGIvcXRiYXNlL3NyYy93 aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uLmNwcAoraW5kZXggYTEyOGIyMzk1MC4uZGM0 MGJmNjJmYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFj dGJ1dHRvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1 dHRvbi5jcHAKK0BAIC01Niw2ICs1Niw3IEBACisgI2lmbmRlZiBRVF9OT19BQ0NFU1NJQklMSVRZ CisgI2luY2x1ZGUgInFhY2Nlc3NpYmxlLmgiCisgI2VuZGlmCisrI2luY2x1ZGUgPHFwYS9xcGxh dGZvcm10aGVtZS5oPgorIAorICNpbmNsdWRlIDxhbGdvcml0aG0+CisgCitAQCAtMTA3NiwxOSAr MTA3NywxOSBAQCB2b2lkIFFBYnN0cmFjdEJ1dHRvbjo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQg KmUpCisgeworICAgICBRX0QoUUFic3RyYWN0QnV0dG9uKTsKKyAgICAgYm9vbCBuZXh0ID0gdHJ1 ZTsKKy0gICAgc3dpdGNoIChlLT5rZXkoKSkgeworLSAgICBjYXNlIFF0OjpLZXlfRW50ZXI6Cist ICAgIGNhc2UgUXQ6OktleV9SZXR1cm46CistICAgICAgICBlLT5pZ25vcmUoKTsKKy0gICAgICAg IGJyZWFrOworLSAgICBjYXNlIFF0OjpLZXlfU2VsZWN0OgorLSAgICBjYXNlIFF0OjpLZXlfU3Bh Y2U6CistICAgICAgICBpZiAoIWUtPmlzQXV0b1JlcGVhdCgpKSB7CistICAgICAgICAgICAgc2V0 RG93bih0cnVlKTsKKy0gICAgICAgICAgICByZXBhaW50KCk7CistICAgICAgICAgICAgZC0+ZW1p dFByZXNzZWQoKTsKKy0gICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworKworKyAgICBjb25zdCBh dXRvIGtleSA9IHN0YXRpY19jYXN0PFF0OjpLZXk+KGUtPmtleSgpKTsKKysgICAgY29uc3QgYXV0 byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1l KCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50 KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChi dXR0b25QcmVzc0tleXMuY29udGFpbnMoa2V5KSAmJiAhZS0+aXNBdXRvUmVwZWF0KCkpIHsKKysg ICAgICAgIHNldERvd24odHJ1ZSk7CisrICAgICAgICByZXBhaW50KCk7CisrICAgICAgICBkLT5l bWl0UHJlc3NlZCgpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICAgIHN3aXRjaCAo a2V5KSB7CisgICAgIGNhc2UgUXQ6OktleV9VcDoKKyAgICAgICAgIG5leHQgPSBmYWxzZTsKKyAg ICAgICAgIFFfRkFMTFRIUk9VR0goKTsKK0BAIC0xMTUzLDE1ICsxMTU0LDE1IEBAIHZvaWQgUUFi c3RyYWN0QnV0dG9uOjprZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50ICplKQorICAgICBpZiAoIWUt PmlzQXV0b1JlcGVhdCgpKQorICAgICAgICAgZC0+cmVwZWF0VGltZXIuc3RvcCgpOworIAorLSAg ICBzd2l0Y2ggKGUtPmtleSgpKSB7CistICAgIGNhc2UgUXQ6OktleV9TZWxlY3Q6CistICAgIGNh c2UgUXQ6OktleV9TcGFjZToKKy0gICAgICAgIGlmICghZS0+aXNBdXRvUmVwZWF0KCkgJiYgZC0+ ZG93bikKKy0gICAgICAgICAgICBkLT5jbGljaygpOworLSAgICAgICAgYnJlYWs7CistICAgIGRl ZmF1bHQ6CistICAgICAgICBlLT5pZ25vcmUoKTsKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVz c0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRo ZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tl eXMuY29udGFpbnMoc3RhdGljX2Nhc3Q8UXQ6OktleT4oZS0+a2V5KCkpKSAmJiAhZS0+aXNBdXRv UmVwZWF0KCkgJiYgZC0+ZG93bikgeworKyAgICAgICAgZC0+Y2xpY2soKTsKKysgICAgICAgIHJl dHVybjsKKyAgICAgfQorKworKyAgICBlLT5pZ25vcmUoKTsKKyB9CisgCisgLyohXHJlaW1wCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcCBiL3F0 YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5jcHAKK2luZGV4IDdhNDk2YzI3ZTAu LjBhM2Q5NjY0N2IgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xY29t Ym9ib3guY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3guY3Bw CitAQCAtMzM1Miw3ICszMzUyLDIzIEBAIHZvaWQgUUNvbWJvQm94OjprZXlQcmVzc0V2ZW50KFFL ZXlFdmVudCAqZSkKKyAKKyAgICAgTW92ZSBtb3ZlID0gTm9Nb3ZlOworICAgICBpbnQgbmV3SW5k ZXggPSBjdXJyZW50SW5kZXgoKTsKKy0gICAgc3dpdGNoIChlLT5rZXkoKSkgeworKworKyAgICBi b29sIHByZXNzTGlrZUJ1dHRvbiA9ICFkLT5saW5lRWRpdDsKKysjaWZkZWYgUVRfS0VZUEFEX05B VklHQVRJT04KKysgICAgcHJlc3NMaWtlQnV0dG9uIHw9IFFBcHBsaWNhdGlvblByaXZhdGU6Omtl eXBhZE5hdmlnYXRpb25FbmFibGVkKCkgJiYgIWhhc0VkaXRGb2N1cygpOworKyNlbmRpZgorKyAg ICBhdXRvIGtleSA9IHN0YXRpY19jYXN0PFF0OjpLZXk+KGUtPmtleSgpKTsKKysgICAgaWYgKHBy ZXNzTGlrZUJ1dHRvbikgeworKyAgICAgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBR R3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6 QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgICAgIGlmIChidXR0b25QcmVz c0tleXMuY29udGFpbnMoa2V5KSkgeworKyAgICAgICAgICAgIHNob3dQb3B1cCgpOworKyAgICAg ICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBzd2l0Y2ggKGtleSkg eworICAgICBjYXNlIFF0OjpLZXlfVXA6CisgICAgICAgICBpZiAoZS0+bW9kaWZpZXJzKCkgJiBR dDo6Q29udHJvbE1vZGlmaWVyKQorICAgICAgICAgICAgIGJyZWFrOyAvLyBwYXNzIHRvIGxpbmUg ZWRpdCBmb3IgYXV0byBjb21wbGV0aW9uCitAQCAtMzM5NCwyNiArMzQxMCwxMSBAQCB2b2lkIFFD b21ib0JveDo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQgKmUpCisgICAgICAgICAgICAgcmV0dXJu OworICAgICAgICAgfQorICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgUXQ6OktleV9TcGFjZToK Ky0gICAgICAgIGlmICghZC0+bGluZUVkaXQpIHsKKy0gICAgICAgICAgICBzaG93UG9wdXAoKTsK Ky0gICAgICAgICAgICByZXR1cm47CistICAgICAgICB9CistICAgICAgICBicmVhazsKKy0gICAg Y2FzZSBRdDo6S2V5X0VudGVyOgorLSAgICBjYXNlIFF0OjpLZXlfUmV0dXJuOgorICAgICBjYXNl IFF0OjpLZXlfRXNjYXBlOgorICAgICAgICAgaWYgKCFkLT5saW5lRWRpdCkKKyAgICAgICAgICAg ICBlLT5pZ25vcmUoKTsKKyAgICAgICAgIGJyZWFrOworICNpZmRlZiBRVF9LRVlQQURfTkFWSUdB VElPTgorLSAgICBjYXNlIFF0OjpLZXlfU2VsZWN0OgorLSAgICAgICAgaWYgKFFBcHBsaWNhdGlv blByaXZhdGU6OmtleXBhZE5hdmlnYXRpb25FbmFibGVkKCkKKy0gICAgICAgICAgICAgICAgJiYg KCFoYXNFZGl0Rm9jdXMoKSB8fCAhZC0+bGluZUVkaXQpKSB7CistICAgICAgICAgICAgc2hvd1Bv cHVwKCk7CistICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAgfQorLSAgICAgICAgYnJlYWs7 CisgICAgIGNhc2UgUXQ6OktleV9MZWZ0OgorICAgICBjYXNlIFF0OjpLZXlfUmlnaHQ6CisgICAg ICAgICBpZiAoUUFwcGxpY2F0aW9uUHJpdmF0ZTo6a2V5cGFkTmF2aWdhdGlvbkVuYWJsZWQoKSAm JiAhaGFzRWRpdEZvY3VzKCkpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdl dHMvcWRhdGV0aW1lZWRpdF9wLmggYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZGF0ZXRp bWVlZGl0X3AuaAoraW5kZXggZDM2YjZmOGY5YS4uZTBkZjViNTE1OCAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRldGltZWVkaXRfcC5oCisrKysgYi9xdGJhc2Uv c3JjL3dpZGdldHMvd2lkZ2V0cy9xZGF0ZXRpbWVlZGl0X3AuaAorQEAgLTEsNiArMSw2IEBACisg LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqKgorLSoqIENvcHlyaWdodCAoQykgMjAxOCBUaGUgUXQg Q29tcGFueSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4K KyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlz IGZpbGUgaXMgcGFydCBvZiB0aGUgUXRXaWRnZXRzIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4K K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3BwIGIv cXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94LmNwcAoraW5kZXggMDJhMGJlZDMy NS4uM2YzZWNjYzM3MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fn cm91cGJveC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC5j cHAKK0BAIC01NCw2ICs1NCw4IEBACisgI2luY2x1ZGUgInFhY2Nlc3NpYmxlLmgiCisgI2VuZGlm CisgI2luY2x1ZGUgPHByaXZhdGUvcXdpZGdldF9wLmg+CisrI2luY2x1ZGUgPHByaXZhdGUvcWd1 aWFwcGxpY2F0aW9uX3AuaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisgCisg I2luY2x1ZGUgInFkZWJ1Zy5oIgorIAorQEAgLTM2MCw3ICszNjIsMTAgQEAgYm9vbCBRR3JvdXBC b3g6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAgICAgIHJldHVybiB0cnVlOworICAgICBjYXNlIFFF dmVudDo6S2V5UHJlc3M6IHsKKyAgICAgICAgIFFLZXlFdmVudCAqayA9IHN0YXRpY19jYXN0PFFL ZXlFdmVudCo+KGUpOworLSAgICAgICAgaWYgKCFrLT5pc0F1dG9SZXBlYXQoKSAmJiAoay0+a2V5 KCkgPT0gUXQ6OktleV9TZWxlY3QgfHwgay0+a2V5KCkgPT0gUXQ6OktleV9TcGFjZSkpIHsKKysg ICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0 ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8 UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoIWstPmlzQXV0b1JlcGVhdCgpICYmIGJ1dHRvblBy ZXNzS2V5cy5jb250YWlucyhzdGF0aWNfY2FzdDxRdDo6S2V5PihrLT5rZXkoKSkpKSB7CisgICAg ICAgICAgICAgZC0+cHJlc3NlZENvbnRyb2wgPSBRU3R5bGU6OlNDX0dyb3VwQm94Q2hlY2tCb3g7 CisgICAgICAgICAgICAgdXBkYXRlKHN0eWxlKCktPnN1YkNvbnRyb2xSZWN0KFFTdHlsZTo6Q0Nf R3JvdXBCb3gsICZib3gsIFFTdHlsZTo6U0NfR3JvdXBCb3hDaGVja0JveCwgdGhpcykpOworICAg ICAgICAgICAgIHJldHVybiB0cnVlOworQEAgLTM2OSw3ICszNzQsMTAgQEAgYm9vbCBRR3JvdXBC b3g6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAgfQorICAgICBjYXNlIFFFdmVudDo6S2V5UmVsZWFz ZTogeworICAgICAgICAgUUtleUV2ZW50ICprID0gc3RhdGljX2Nhc3Q8UUtleUV2ZW50Kj4oZSk7 CistICAgICAgICBpZiAoIWstPmlzQXV0b1JlcGVhdCgpICYmIChrLT5rZXkoKSA9PSBRdDo6S2V5 X1NlbGVjdCB8fCBrLT5rZXkoKSA9PSBRdDo6S2V5X1NwYWNlKSkgeworKyAgICAgICAgY29uc3Qg YXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRo ZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRo ZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsK KysgICAgICAgIGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgYnV0dG9uUHJlc3NLZXlzLmNvbnRh aW5zKHN0YXRpY19jYXN0PFF0OjpLZXk+KGstPmtleSgpKSkpIHsKKyAgICAgICAgICAgICBib29s IHRvZ2dsZSA9IChkLT5wcmVzc2VkQ29udHJvbCA9PSBRU3R5bGU6OlNDX0dyb3VwQm94TGFiZWwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBkLT5wcmVzc2VkQ29udHJvbCA9PSBRU3R5 bGU6OlNDX0dyb3VwQm94Q2hlY2tCb3gpOworICAgICAgICAgICAgIGQtPnByZXNzZWRDb250cm9s ID0gUVN0eWxlOjpTQ19Ob25lOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRn ZXRzL3FsYWJlbC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xbGFiZWwuY3BwCitp bmRleCAzMGZmODBjYmIwLi5jZjI2MDVjMTdjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRn ZXRzL3dpZGdldHMvcWxhYmVsLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMv cWxhYmVsLmNwcAorQEAgLTQyMSw5ICs0MjEsNiBAQCB2b2lkIFFMYWJlbDo6c2V0UGl4bWFwKGNv bnN0IFFQaXhtYXAgJnBpeG1hcCkKKyAgICAgICAgIGQtPnBpeG1hcCA9IG5ldyBRUGl4bWFwKHBp eG1hcCk7CisgICAgIH0KKyAKKy0gICAgaWYgKGQtPnBpeG1hcC0+ZGVwdGgoKSA9PSAxICYmICFk LT5waXhtYXAtPm1hc2soKSkKKy0gICAgICAgIGQtPnBpeG1hcC0+c2V0TWFzaygqKChRQml0bWFw ICopZC0+cGl4bWFwKSk7CistCisgICAgIGQtPnVwZGF0ZUxhYmVsKCk7CisgfQorIAorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0b29sYmFyYXJlYWxheW91dC5jcHAg Yi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3BwCitpbmRl eCA0OTNjMDk0Y2MxLi5kNWY0YjU5MDE3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRz L3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRz L3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcAorQEAgLTEzNjcsNyArMTM2Nyw3IEBAIGJv b2wgUVRvb2xCYXJBcmVhTGF5b3V0OjpyZXN0b3JlU3RhdGUoUURhdGFTdHJlYW0gJnN0cmVhbSwg Y29uc3QgUUxpc3Q8UVRvb2xCYXIqCisgICAgICAgICAgICAgICAgIGl0ZW0ud2lkZ2V0SXRlbSA9 IG5ldyBRV2lkZ2V0SXRlbVYyKHRvb2xCYXIpOworICAgICAgICAgICAgICAgICB0b29sQmFyLT5z ZXRPcmllbnRhdGlvbihmbG9hdGluZyA/ICgoc2hvd24gJiAyKSA/IFF0OjpWZXJ0aWNhbCA6IFF0 OjpIb3Jpem9udGFsKSA6IGRvY2subyk7CisgICAgICAgICAgICAgICAgIHRvb2xCYXItPnNldFZp c2libGUoc2hvd24gJiAxKTsKKy0gICAgICAgICAgICAgICAgdG9vbEJhci0+ZF9mdW5jKCktPnNl dFdpbmRvd1N0YXRlKGZsb2F0aW5nLCB0cnVlLCByZWN0KTsKKysgICAgICAgICAgICAgICAgdG9v bEJhci0+ZF9mdW5jKCktPnNldFdpbmRvd1N0YXRlKGZsb2F0aW5nLCBmYWxzZSwgcmVjdCk7Cisg CisgICAgICAgICAgICAgICAgIGl0ZW0ucHJlZmVycmVkU2l6ZSA9IGl0ZW0uc2l6ZTsKKyAgICAg ICAgICAgICAgICAgbGluZS50b29sQmFySXRlbXMuYXBwZW5kKGl0ZW0pOworZGlmZiAtLWdpdCBh L3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC90 c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb25j dXJyZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3VycmVudGl0ZXJhdGVr ZXJuZWwuY3BwCitpbmRleCAyMTJjMGEyZTEzLi4zYzc3YjFiYTBiIDEwMDY0NAorLS0tIGEvcXRi YXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsL3RzdF9x dGNvbmN1cnJlbnRpdGVyYXRla2VybmVsLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29u Y3VycmVudC9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsL3RzdF9xdGNvbmN1cnJlbnRpdGVyYXRl a2VybmVsLmNwcAorQEAgLTEyNiw4ICsxMjYsNyBAQCBwdWJsaWM6CisgCisgdm9pZCB0c3RfUXRD b25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6aW5zdGFudGlhdGUoKQorIHsKKy0gICAgYXV0byBmdXR1 cmUgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgUHJpbnRGb3IoMCwgNDApKS5zdGFydEFzeW5jaHJv bm91c2x5KCk7CistICAgIGZ1dHVyZS53YWl0Rm9yRmluaXNoZWQoKTsKKysgICAgc3RhcnRUaHJl YWRFbmdpbmUobmV3IFByaW50Rm9yKDAsIDQwKSkuc3RhcnRCbG9ja2luZygpOworICAgICBRQ09N UEFSRShpdGVyYXRpb25zLmxvYWRSZWxheGVkKCksIDQwKTsKKyB9CisgCitAQCAtMTY2LDEwICsx NjUsOCBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2VybmVsOjpzdHJlc3N0ZXN0KCkK KyAgICAgY29uc3QgaW50IHRpbWVzID0gNTA7CisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGlt ZXM7ICsraSkgeworICAgICAgICAgY291bnRlci5zdG9yZVJlbGF4ZWQoMCk7CistICAgICAgICAv LyBUaHJlYWRFbmdpbmUgd2lsbCBkZWxldGUgZiB3aGVuIGl0IGZpbmlzaGVzCistICAgICAgICBh dXRvIGYgPSBuZXcgQ291bnRGb3IoMCwgaXRlcmF0aW9ucyk7CistICAgICAgICBhdXRvIGZ1dHVy ZSA9IGYtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgICAgIGZ1dHVyZS53YWl0Rm9yRmlu aXNoZWQoKTsKKysgICAgICAgIENvdW50Rm9yIGYoMCwgaXRlcmF0aW9ucyk7CisrICAgICAgICBm LnN0YXJ0QmxvY2tpbmcoKTsKKyAgICAgICAgIFFDT01QQVJFKGNvdW50ZXIubG9hZFJlbGF4ZWQo KSwgaXRlcmF0aW9ucyk7CisgICAgIH0KKyB9CitAQCAtMTc3LDExICsxNzQsOCBAQCB2b2lkIHRz dF9RdENvbmN1cnJlbnRJdGVyYXRlS2VybmVsOjpzdHJlc3N0ZXN0KCkKKyB2b2lkIHRzdF9RdENv bmN1cnJlbnRJdGVyYXRlS2VybmVsOjpub0l0ZXJhdGlvbnMoKQorIHsKKyAgICAgY29uc3QgaW50 IHRpbWVzID0gMjAwMDA7CistICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGltZXM7ICsraSkgewor LSAgICAgICAgYXV0byBmdXR1cmUgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgSXRlcmF0ZUtlcm5l bDxUZXN0SXRlcmF0b3IsIHZvaWQ+KDAsIDApKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgICAgICBmdXR1cmUud2FpdEZvckZpbmlz aGVkKCk7CistICAgIH0KKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aW1lczsgKytpKQorKyAg ICAgICAgc3RhcnRUaHJlYWRFbmdpbmUobmV3IEl0ZXJhdGVLZXJuZWw8VGVzdEl0ZXJhdG9yLCB2 b2lkPigwLCAwKSkuc3RhcnRCbG9ja2luZygpOworIH0KKyAKKyBRTXV0ZXggdGhyZWFkc011dGV4 OworQEAgLTIzNiwxMCArMjMwLDggQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtlcm5l bDo6dGhyb3R0bGluZygpCisgCisgICAgIHRocmVhZHMuY2xlYXIoKTsKKyAKKy0gICAgLy8gVGhy ZWFkRW5naW5lIHdpbGwgZGVsZXRlIGYgd2hlbiBpdCBmaW5pc2hlcworLSAgICBhdXRvIGYgPSBu ZXcgVGhyb3R0bGVGb3IoMCwgdG90YWxJdGVyYXRpb25zKTsKKy0gICAgYXV0byBmdXR1cmUgPSBm LT5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgIGZ1dHVyZS53YWl0Rm9yRmluaXNoZWQoKTsK KysgICAgVGhyb3R0bGVGb3IgZigwLCB0b3RhbEl0ZXJhdGlvbnMpOworKyAgICBmLnN0YXJ0Qmxv Y2tpbmcoKTsKKyAKKyAgICAgUUNPTVBBUkUoaXRlcmF0aW9ucy5sb2FkUmVsYXhlZCgpLCB0b3Rh bEl0ZXJhdGlvbnMpOworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJl bnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUu Y3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdp bmUvdHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKK2luZGV4IGFjN2JlN2FjZGQuLjgx YmM2NGM4ZDkgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29u Y3VycmVudHRocmVhZGVuZ2luZS90c3RfcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAorKysr IGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUv dHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKK0BAIC02NSw5ICs2NSwxNiBAQCBwdWJs aWM6CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpydW5EaXJlY3RseSgp CisgeworLSAgICBQcmludFVzZXIgKmVuZ2luZSA9IG5ldyBQcmludFVzZXIoKTsKKy0gICAgUUZ1 dHVyZTx2b2lkPiBmID0gZW5naW5lLT5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgIGYud2Fp dEZvckZpbmlzaGVkKCk7CisrICAgIHsKKysgICAgICAgIFByaW50VXNlciBlbmdpbmU7CisrICAg ICAgICBlbmdpbmUuc3RhcnRTaW5nbGVUaHJlYWRlZCgpOworKyAgICAgICAgZW5naW5lLnN0YXJ0 QmxvY2tpbmcoKTsKKysgICAgfQorKyAgICB7CisrICAgICAgICBQcmludFVzZXIgKmVuZ2luZSA9 IG5ldyBQcmludFVzZXIoKTsKKysgICAgICAgIFFGdXR1cmU8dm9pZD4gZiA9IGVuZ2luZS0+c3Rh cnRBc3luY2hyb25vdXNseSgpOworKyAgICAgICAgZi53YWl0Rm9yRmluaXNoZWQoKTsKKysgICAg fQorIH0KKyAKKyBjbGFzcyBTdHJpbmdSZXN1bHRVc2VyIDogcHVibGljIFRocmVhZEVuZ2luZTxR U3RyaW5nPgorQEAgLTk5LDEwICsxMDYsOCBAQCBwdWJsaWM6CisgCisgdm9pZCB0c3RfUXRDb25j dXJyZW50VGhyZWFkRW5naW5lOjpyZXN1bHQoKQorIHsKKy0gICAgLy8gVGhyZWFkRW5naW5lIHdp bGwgZGVsZXRlICdlbmdpbmUnIHdoZW4gaXQgZmluaXNoZXMKKy0gICAgYXV0byBlbmdpbmUgPSBu ZXcgU3RyaW5nUmVzdWx0VXNlcigpOworLSAgICBhdXRvIGZ1dHVyZSA9IGVuZ2luZS0+c3RhcnRB c3luY2hyb25vdXNseSgpOworLSAgICBRQ09NUEFSRShmdXR1cmUucmVzdWx0KCksIFFTdHJpbmco IkZvbyIpKTsKKysgICAgU3RyaW5nUmVzdWx0VXNlciBlbmdpbmU7CisrICAgIFFDT01QQVJFKCpl bmdpbmUuc3RhcnRCbG9ja2luZygpLCBRU3RyaW5nKCJGb28iKSk7CisgfQorIAorIGNsYXNzIFZv aWRSZXN1bHRVc2VyIDogcHVibGljIFRocmVhZEVuZ2luZTx2b2lkPgorQEAgLTEyOCw5ICsxMzMs MTcgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6cnVu VGhyb3VnaFN0YXJ0ZXIoKQorIHsKKy0gICAgVGhyZWFkRW5naW5lU3RhcnRlcjxRU3RyaW5nPiBz dGFydGVyID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IFN0cmluZ1Jlc3VsdFVzZXIoKSk7CistICAg IFFGdXR1cmU8UVN0cmluZz4gZiA9IHN0YXJ0ZXIuc3RhcnRBc3luY2hyb25vdXNseSgpOworLSAg ICBRQ09NUEFSRShmLnJlc3VsdCgpLCBRU3RyaW5nKCJGb28iKSk7CisrICAgIHsKKysgICAgICAg IFRocmVhZEVuZ2luZVN0YXJ0ZXI8UVN0cmluZz4gc3RhcnRlciA9IHN0YXJ0VGhyZWFkRW5naW5l KG5ldyBTdHJpbmdSZXN1bHRVc2VyKCkpOworKyAgICAgICAgUUZ1dHVyZTxRU3RyaW5nPiAgZiA9 IHN0YXJ0ZXIuc3RhcnRBc3luY2hyb25vdXNseSgpOworKyAgICAgICAgUUNPTVBBUkUoZi5yZXN1 bHQoKSwgUVN0cmluZygiRm9vIikpOworKyAgICB9CisrCisrICAgIHsKKysgICAgICAgIFRocmVh ZEVuZ2luZVN0YXJ0ZXI8UVN0cmluZz4gc3RhcnRlciA9IHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBT dHJpbmdSZXN1bHRVc2VyKCkpOworKyAgICAgICAgUVN0cmluZyBzdHIgPSBzdGFydGVyLnN0YXJ0 QmxvY2tpbmcoKTsKKysgICAgICAgIFFDT01QQVJFKHN0ciwgUVN0cmluZygiRm9vIikpOworKyAg ICB9CisgfQorIAorIGNsYXNzIENhbmNlbFVzZXIgOiBwdWJsaWMgVGhyZWFkRW5naW5lPHZvaWQ+ CitAQCAtMjEzLDYgKzIyNiwxMiBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6 OnRocm90dGxlKCkKKyAgICAgICAgIGYud2FpdEZvckZpbmlzaGVkKCk7CisgICAgICAgICBRQ09N UEFSRShjb3VudC5sb2FkUmVsYXhlZCgpLCAwKTsKKyAgICAgfQorKworKyAgICBmb3IgKGludCBp ID0gMDsgaSA8IHJlcGVhdHM7ICsraSkgeworKyAgICAgICAgVGhyb3R0bGVBbHdheXNVc2VyIHQ7 CisrICAgICAgICB0LnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIFFDT01QQVJFKGNvdW50Lmxv YWRSZWxheGVkKCksIDApOworKyAgICB9CisgfQorIAorIFFTZXQ8UVRocmVhZCAqPiB0aHJlYWRz OworQEAgLTI0OSwxNyArMjY4LDM1IEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2lu ZTo6dGhyZWFkQ291bnQoKQorIHsKKyAgICAgY29uc3QgaW50IHJlcGVhdHMgPSAxMDsKKyAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXRzOyArK2kpIHsKKysgICAgICAgIFRocmVhZENvdW50 VXNlciB0OworKyAgICAgICAgdC5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBpbnQgY291bnQg PSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBpbnQgY291bnRfZXhwZWN0ZWQgPSBRVGhyZWFk UG9vbDo6Z2xvYmFsSW5zdGFuY2UoKS0+bWF4VGhyZWFkQ291bnQoKSArIDE7IC8vICsxIGZvciB0 aGUgbWFpbiB0aHJlYWQuCisrICAgICAgICBpZiAoY291bnQgIT0gY291bnRfZXhwZWN0ZWQpCisr ICAgICAgICAgICAgUUVYUEVDVF9GQUlMKCIiLCAiUVRCVUctMjMzMzMiLCBBYm9ydCk7CisrICAg ICAgICBRQ09NUEFSRShjb3VudCwgY291bnRfZXhwZWN0ZWQpOworKworICAgICAgICAgKG5ldyBU aHJlYWRDb3VudFVzZXIoKSktPnN0YXJ0QXN5bmNocm9ub3VzbHkoKS53YWl0Rm9yRmluaXNoZWQo KTsKKy0gICAgICAgIGNvbnN0IGF1dG8gY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CistICAgICAg ICBjb25zdCBhdXRvIG1heFRocmVhZENvdW50ID0gUVRocmVhZFBvb2w6Omdsb2JhbEluc3RhbmNl KCktPm1heFRocmVhZENvdW50KCk7CistICAgICAgICBRVkVSSUZZKGNvdW50IDw9IG1heFRocmVh ZENvdW50KTsKKy0gICAgICAgIFFWRVJJRlkoIXRocmVhZHMuY29udGFpbnMoUVRocmVhZDo6Y3Vy cmVudFRocmVhZCgpKSk7CisrICAgICAgICBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKysgICAg ICAgIGNvdW50X2V4cGVjdGVkID0gUVRocmVhZFBvb2w6Omdsb2JhbEluc3RhbmNlKCktPm1heFRo cmVhZENvdW50KCk7CisrICAgICAgICBpZiAoY291bnQgIT0gY291bnRfZXhwZWN0ZWQpCisrICAg ICAgICAgICAgUUVYUEVDVF9GQUlMKCIiLCAiUVRCVUctMjMzMzMiLCBBYm9ydCk7CisrICAgICAg ICBRQ09NUEFSRShjb3VudCwgY291bnRfZXhwZWN0ZWQpOworICAgICB9CisgCisgICAgIC8vIFNl dCB0aGUgZmluaXNoIGZsYWcgaW1tZWRpYXRlbHksIHRoaXMgc2hvdWxkIGdpdmUgdXMgb25lIHRo cmVhZCBvbmx5LgorICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlcGVhdHM7ICsraSkgeworKyAg ICAgICAgVGhyZWFkQ291bnRVc2VyIHQodHJ1ZSAvKmZpbmlzaEltbWVkaWF0ZWx5Ki8pOworKyAg ICAgICAgdC5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBpbnQgY291bnQgPSB0aHJlYWRzLmNv dW50KCk7CisrICAgICAgICBpZiAoY291bnQgIT0gMSkKKysgICAgICAgICAgICBRRVhQRUNUX0ZB SUwoIiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKysgICAgICAgIFFDT01QQVJFKGNvdW50LCAx KTsKKysKKyAgICAgICAgIChuZXcgVGhyZWFkQ291bnRVc2VyKHRydWUgLypmaW5pc2hJbW1lZGlh dGVseSovKSktPnN0YXJ0QXN5bmNocm9ub3VzbHkoKS53YWl0Rm9yRmluaXNoZWQoKTsKKy0gICAg ICAgIGNvbnN0IGF1dG8gY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBjb3VudCA9 IHRocmVhZHMuY291bnQoKTsKKysgICAgICAgIGlmIChjb3VudCAhPSAxKQorKyAgICAgICAgICAg IFFFWFBFQ1RfRkFJTCgiIiwgIlFUQlVHLTIzMzMzIiwgQWJvcnQpOworICAgICAgICAgUUNPTVBB UkUoY291bnQsIDEpOworICAgICAgICAgUVZFUklGWSghdGhyZWFkcy5jb250YWlucyhRVGhyZWFk OjpjdXJyZW50VGhyZWFkKCkpKTsKKyAgICAgfQorQEAgLTQwMCw2ICs0MzcsNyBAQCBwdWJsaWM6 CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpleGNlcHRpb25zKCkKKyB7 CisrICAgIC8vIEFzeW5jaHJvbm91cyBtb2RlOgorICAgICB7CisgICAgICAgICBib29sIGNhdWdo dCA9IGZhbHNlOworICAgICAgICAgdHJ5ICB7CitAQCAtNDEyLDYgKzQ1MCwzMiBAQCB2b2lkIHRz dF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OmV4Y2VwdGlvbnMoKQorICAgICAgICAgUVZFUklG WTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7CisgICAgIH0KKyAKKysgICAgLy8g QmxvY2tpbmcgbW9kZToKKysgICAgLy8gdGVzdCB0aHJvd2luZyB0aGUgZXhjZXB0aW9uIGZyb20g YSB3b3JrZXIgdGhyZWFkLgorKyAgICB7CisrICAgICAgICBib29sIGNhdWdodCA9IGZhbHNlOwor KyAgICAgICAgdHJ5ICB7CisrICAgICAgICAgICAgUXRDb25jdXJyZW50RXhjZXB0aW9uVGhyb3dl ciBlKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSk7CisrICAgICAgICAgICAgZS5zdGFydEJsb2Nr aW5nKCk7CisrICAgICAgICB9IGNhdGNoIChjb25zdCBRRXhjZXB0aW9uICYpIHsKKysgICAgICAg ICAgICBjYXVnaHQgPSB0cnVlOworKyAgICAgICAgfQorKyAgICAgICAgUVZFUklGWTIoY2F1Z2h0 LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7CisrICAgIH0KKysKKysgICAgLy8gdGVzdCB0aHJv d2luZyB0aGUgZXhjZXB0aW9uIGZyb20gdGhlIG1haW4gdGhyZWFkIChkaWZmZXJlbnQgY29kZSBw YXRoKQorKyAgICB7CisrICAgICAgICBib29sIGNhdWdodCA9IGZhbHNlOworKyAgICAgICAgdHJ5 ICB7CisrICAgICAgICAgICAgUXRDb25jdXJyZW50RXhjZXB0aW9uVGhyb3dlciBlKDApOworKyAg ICAgICAgICAgIGUuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgfSBjYXRjaCAoY29uc3QgUUV4 Y2VwdGlvbiAmKSB7CisrICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKysgICAgICAgIH0KKysg ICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworKyAgICB9 CisrCisrICAgIC8vIEFzeW5jaHJvbm91cyBtb2RlOgorICAgICB7CisgICAgICAgICBib29sIGNh dWdodCA9IGZhbHNlOworICAgICAgICAgdHJ5ICB7CitAQCAtNDIzLDYgKzQ4NywzMSBAQCB2b2lk IHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OmV4Y2VwdGlvbnMoKQorICAgICAgICAgfQor ICAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7CisgICAg IH0KKysKKysgICAgLy8gQmxvY2tpbmcgbW9kZToKKysgICAgLy8gdGVzdCB0aHJvd2luZyB0aGUg ZXhjZXB0aW9uIGZyb20gYSB3b3JrZXIgdGhyZWFkLgorKyAgICB7CisrICAgICAgICBib29sIGNh dWdodCA9IGZhbHNlOworKyAgICAgICAgdHJ5ICB7CisrICAgICAgICAgICAgVW5yZWxhdGVkRXhj ZXB0aW9uVGhyb3dlciBlKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSk7CisrICAgICAgICAgICAg ZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9IGNhdGNoIChjb25zdCBRVW5oYW5kbGVkRXhj ZXB0aW9uICYpIHsKKysgICAgICAgICAgICBjYXVnaHQgPSB0cnVlOworKyAgICAgICAgfQorKyAg ICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7CisrICAgIH0K KysKKysgICAgLy8gdGVzdCB0aHJvd2luZyB0aGUgZXhjZXB0aW9uIGZyb20gdGhlIG1haW4gdGhy ZWFkIChkaWZmZXJlbnQgY29kZSBwYXRoKQorKyAgICB7CisrICAgICAgICBib29sIGNhdWdodCA9 IGZhbHNlOworKyAgICAgICAgdHJ5ICB7CisrICAgICAgICAgICAgVW5yZWxhdGVkRXhjZXB0aW9u VGhyb3dlciBlKDApOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAg fSBjYXRjaCAoY29uc3QgUVVuaGFuZGxlZEV4Y2VwdGlvbiAmKSB7CisrICAgICAgICAgICAgY2F1 Z2h0ID0gdHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBu b3QgZ2V0IGV4Y2VwdGlvbiIpOworKyAgICB9CisgfQorIAorICNlbmRpZgorZGlmZiAtLWdpdCBh L3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZlci90c3RfcWJ1ZmZlci5jcHAgYi9x dGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3FidWZmZXIvdHN0X3FidWZmZXIuY3BwCitpbmRl eCA0OTY4NzQyMTEwLi5mNGMzZmI3MTFkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8v Y29yZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vY29yZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcAorQEAgLTQyLDYgKzQyLDcgQEAg cHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB3cml0ZUJsb2NrX2RhdGEoKTsKKyAgICAgdm9pZCB3 cml0ZUJsb2NrKCk7CisgICAgIHZvaWQgc2VlaygpOworKyAgICB2b2lkIGludmFsaWRTZWVrcygp OworICAgICB2b2lkIHNlZWtUZXN0X2RhdGEoKTsKKyAgICAgdm9pZCBzZWVrVGVzdCgpOworICAg ICB2b2lkIHJlYWRfcmF3ZGF0YSgpOworQEAgLTI4Niw2ICsyODcsMjkgQEAgdm9pZCB0c3RfUUJ1 ZmZlcjo6c2VlaygpCisgICAgIFFDT01QQVJFKGJ1ZmZlci5zaXplKCksIHBvcyk7CisgfQorIAor K3ZvaWQgdHN0X1FCdWZmZXI6OmludmFsaWRTZWVrcygpCisreworKyAgICBpZiBjb25zdGV4cHIg KHNpemVvZihxc2l6ZXR5cGUpID09IHNpemVvZihxaW50NjQpKSB7CisrICAgICAgICAvLyBzaXpl b2YocXNpemV0eXBlKSA9PSBzaXplb2YocWludDY0KSwgc28gKzEgd291bGQgb3ZlcmZsb3cKKysg ICAgICAgIFFTS0lQKCJUaGlzIGlzIGEgMzItYml0LW9ubHkgdGVzdC4iKTsKKysgICAgfSBlbHNl IHsKKysgICAgICAgIFFCdWZmZXIgYnVmZmVyOworKyAgICAgICAgYnVmZmVyLm9wZW4oUUlPRGV2 aWNlOjpXcml0ZU9ubHkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLmJ1ZmZlcigpLnNpemUo KSwgcXNpemV0eXBlKDApKTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5wb3MoKSwgcWludDY0 KDApKTsKKysgICAgICAgIGNvbnN0ZXhwciBxaW50NjQgTWF4UUJ5dGVBcnJheUNhcGFjaXR5ID0g KHN0ZDo6bnVtZXJpY19saW1pdHM8cXNpemV0eXBlPjo6bWF4KSgpOworKyAgICAgICAgLy8gdGhp cyBzaG91bGQgZmFpbCBmYXN0LCBub3QgYWZ0ZXIgdHJ5aW5nIHRvIGFsbG9jYXRlIG5lYXJseSAy IEdpQiBvZiBkYXRhLAorKyAgICAgICAgLy8gcG90ZW50aWFsbHkgY3Jhc2hpbmcgaW4gdGhlIHBy b2Nlc3M6CisrICAgICAgICBRVkVSSUZZKCFidWZmZXIuc2VlaygyICogTWF4UUJ5dGVBcnJheUNh cGFjaXR5IC0gMSkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLmJ1ZmZlcigpLnNpemUoKSwg cXNpemV0eXBlKDApKTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5wb3MoKSwgcWludDY0KDAp KTsKKysgICAgICAgIC8vIGRpdHRvOgorKyAgICAgICAgUVZFUklGWSghYnVmZmVyLnNlZWsoTWF4 UUJ5dGVBcnJheUNhcGFjaXR5ICsgMSkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLmJ1ZmZl cigpLnNpemUoKSwgcXNpemV0eXBlKDApKTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5wb3Mo KSwgcWludDY0KDApKTsKKysgICAgfQorK30KKysKKyB2b2lkIHRzdF9RQnVmZmVyOjpzZWVrVGVz dF9kYXRhKCkKKyB7CisgICAgIHdyaXRlQmxvY2tfZGF0YSgpOworZGlmZiAtLWdpdCBhL3F0YmFz ZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWlvZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwIGIvcXRi YXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xaW9kZXZpY2UvdHN0X3Fpb2RldmljZS5jcHAKK2lu ZGV4IGRhNTMyNzU5NGMuLjRhMDRlMGY3YzYgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNwcAorKysrIGIvcXRiYXNlL3Rl c3RzL2F1dG8vY29yZWxpYi9pby9xaW9kZXZpY2UvdHN0X3Fpb2RldmljZS5jcHAKK0BAIC01NjEs NyArNTYxLDggQEAgcHJvdGVjdGVkOgorICAgICBxaW50NjQgcmVhZERhdGEoY2hhciAqZGF0YSwg cWludDY0IG1heFNpemUpIG92ZXJyaWRlCisgICAgIHsKKyAgICAgICAgIG1heFNpemUgPSBxTWlu KG1heFNpemUsIHFpbnQ2NChidWYtPnNpemUoKSAtIG9mZnNldCkpOworLSAgICAgICAgbWVtY3B5 KGRhdGEsIGJ1Zi0+Y29uc3REYXRhKCkgKyBvZmZzZXQsIG1heFNpemUpOworKyAgICAgICAgaWYg KG1heFNpemUgPiAwKQorKyAgICAgICAgICAgIG1lbWNweShkYXRhLCBidWYtPmNvbnN0RGF0YSgp ICsgb2Zmc2V0LCBtYXhTaXplKTsKKyAgICAgICAgIG9mZnNldCArPSBtYXhTaXplOworICAgICAg ICAgcmV0dXJuIG1heFNpemU7CisgICAgIH0KK0BAIC02MDQsMTMgKzYwNSwxNSBAQCBwcm90ZWN0 ZWQ6CisgICAgIHFpbnQ2NCByZWFkRGF0YShjaGFyICpkYXRhLCBxaW50NjQgbWF4U2l6ZSkgb3Zl cnJpZGUKKyAgICAgeworICAgICAgICAgbWF4U2l6ZSA9IHFNaW4obWF4U2l6ZSwgcWludDY0KGJ1 Zi5zaXplKCkgLSBwb3MoKSkpOworLSAgICAgICAgbWVtY3B5KGRhdGEsIGJ1Zi5jb25zdERhdGEo KSArIHBvcygpLCBtYXhTaXplKTsKKysgICAgICAgIGlmIChtYXhTaXplID4gMCkKKysgICAgICAg ICAgICBtZW1jcHkoZGF0YSwgYnVmLmNvbnN0RGF0YSgpICsgcG9zKCksIG1heFNpemUpOworICAg ICAgICAgcmV0dXJuIG1heFNpemU7CisgICAgIH0KKyAgICAgcWludDY0IHdyaXRlRGF0YShjb25z dCBjaGFyICpkYXRhLCBxaW50NjQgbWF4U2l6ZSkgb3ZlcnJpZGUKKyAgICAgeworICAgICAgICAg bWF4U2l6ZSA9IHFNaW4obWF4U2l6ZSwgcWludDY0KGJ1Zi5zaXplKCkgLSBwb3MoKSkpOworLSAg ICAgICAgbWVtY3B5KGJ1Zi5kYXRhKCkgKyBwb3MoKSwgZGF0YSwgbWF4U2l6ZSk7CisrICAgICAg ICBpZiAobWF4U2l6ZSA+IDApCisrICAgICAgICAgICAgbWVtY3B5KGJ1Zi5kYXRhKCkgKyBwb3Mo KSwgZGF0YSwgbWF4U2l6ZSk7CisgICAgICAgICByZXR1cm4gbWF4U2l6ZTsKKyAgICAgfQorIAor ZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcXByb2Nlc3MvdHN0X3Fw cm9jZXNzLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcXByb2Nlc3MvdHN0X3Fw cm9jZXNzLmNwcAoraW5kZXggZGI2MGJlYWQ2NC4uZjM0NWE0NDQxNCAxMDA2NDQKKy0tLSBhL3F0 YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcXByb2Nlc3MvdHN0X3Fwcm9jZXNzLmNwcAorKysr IGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3RfcXByb2Nlc3MuY3Bw CitAQCAtMSw3ICsxLDggQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqCisgKiogQ29weXJp Z2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKy0qKiBDb3B5cmlnaHQgKEMpIDIwMjAg SW50ZWwgQ29ycG9yYXRpb24uCisrKiogQ29weXJpZ2h0IChDKSAyMDIwIFRoZSBRdCBDb21wYW55 IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgSW50ZWwgQ29ycG9yYXRpb24uCisgKiogQ29u dGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlz IHBhcnQgb2YgdGhlIHRlc3Qgc3VpdGUgb2YgdGhlIFF0IFRvb2xraXQuCitAQCAtMTUwLDYgKzE1 MSw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgc3RhcnRTdG9wU3RhcnRTdG9wQnVmZmVy cygpOworICAgICB2b2lkIHByb2Nlc3NFdmVudHNJbkFSZWFkeVJlYWRTbG90X2RhdGEoKTsKKyAg ICAgdm9pZCBwcm9jZXNzRXZlbnRzSW5BUmVhZHlSZWFkU2xvdCgpOworKyAgICB2b2lkIHN0YXJ0 RnJvbUN1cnJlbnRXb3JraW5nRGlyX2RhdGEoKTsKKysgICAgdm9pZCBzdGFydEZyb21DdXJyZW50 V29ya2luZ0RpcigpOworIAorICAgICAvLyBrZWVwIHRoZXNlIGF0IHRoZSBlbmQsIHNpbmNlIHRo ZXkgdXNlIGxvdHMgb2YgcHJvY2Vzc2VzIGFuZCBzb21ldGltZXMKKyAgICAgLy8gY2F1c2VkIG9i c2N1cmUgZmFpbHVyZXMgdG8gb2NjdXIgaW4gdGVzdHMgdGhhdCBmb2xsb3dlZCB0aGVtIChlc3Au IG9uIHRoZSBNYWMpCitAQCAtMjczMSw1ICsyNzM0LDk0IEBAIHZvaWQgdHN0X1FQcm9jZXNzOjpm aW5pc2hQcm9jZXNzQmVmb3JlUmVhZGluZ0RvbmVfZGVwcmVjYXRlZCgpCisgCisgI2VuZGlmCisg CisrZW51bSBjbGFzcyBDaGRpck1vZGUgeworKyAgICBOb25lID0gMCwKKysgICAgSW5QYXJlbnQs CisrICAgIEluQ2hpbGQKKyt9OworK1FfREVDTEFSRV9NRVRBVFlQRShDaGRpck1vZGUpCisrCisr dm9pZCB0c3RfUVByb2Nlc3M6OnN0YXJ0RnJvbUN1cnJlbnRXb3JraW5nRGlyX2RhdGEoKQorK3sK KysgICAgcVJlZ2lzdGVyTWV0YVR5cGU8Q2hkaXJNb2RlPigpOworKyAgICBRVGVzdDo6YWRkQ29s dW1uPFFTdHJpbmc+KCJwcm9ncmFtUHJlZml4Iik7CisrICAgIFFUZXN0OjphZGRDb2x1bW48Q2hk aXJNb2RlPigiY2hkaXJNb2RlIik7CisrICAgIFFUZXN0OjphZGRDb2x1bW48Ym9vbD4oInN1Y2Nl c3MiKTsKKysKKysgICAgY29uc3RleHByIGJvb2wgSXNXaW5kb3dzID0gdHJ1ZQorKyNpZmRlZiBR X09TX1VOSVgKKysgICAgICAgICAgICAmJiBmYWxzZQorKyNlbmRpZgorKyAgICAgICAgICAgIDsK KysKKysgICAgLy8gYmFzZWxpbmU6IHRyeWluZyB0byBleGVjdXRlIHRoZSBkaXJlY3RvcnksIHRo aXMgY2FuJ3QgcG9zc2libHkgc3VjY2VlZCEKKysgICAgUVRlc3Q6Om5ld1JvdygicGxhaW4tc2Ft ZS1jd2QiKSA8PCBRU3RyaW5nKCkgPDwgQ2hkaXJNb2RlOjpOb25lIDw8IGZhbHNlOworKworKyAg ICAvLyBjcm9zcy1wbGF0Zm9ybSBiZWhhdmlvcjogbmVpdGhlciBPUyBzZWFyY2hlcyB0aGUgc2V0 V29ya2luZ0RpcmVjdG9yeSgpCisrICAgIC8vIGRpciB3aXRob3V0ICIuLyIKKysgICAgUVRlc3Q6 Om5ld1JvdygicGxhaW4tY2hpbGQtY2hkaXIiKSA8PCBRU3RyaW5nKCkgPDwgQ2hkaXJNb2RlOjpJ bkNoaWxkIDw8IGZhbHNlOworKworKyAgICAvLyBjcm9zcy1wbGF0Zm9ybSBiZWhhdmlvcjogYm90 aCBPU2VzIHNlYXJjaCB0aGUgcGFyZW50J3MgQ1dEIHdpdGggIi4vIgorKyAgICBRVGVzdDo6bmV3 Um93KCJwcmVmaXhlZC1wYXJlbnQtY2hkaXIiKSA8PCAiLi8iIDw8IENoZGlyTW9kZTo6SW5QYXJl bnQgPDwgdHJ1ZTsKKysKKysgICAgLy8gb3Bwb3NpdGUgYmVoYXZpb3JzOiBXaW5kb3dzIHNlYXJj aGVzIHRoZSBwYXJlbnQncyBDV0QgYW5kIFVuaXggc2VhcmNoZXMKKysgICAgLy8gdGhlIGNoaWxk J3Mgd2l0aCAiLi8iCisrICAgIFFUZXN0OjpuZXdSb3coInByZWZpeGVkLWNoaWxkLWNoZGlyIikg PDwgIi4vIiA8PCBDaGRpck1vZGU6OkluQ2hpbGQgPDwgIUlzV2luZG93czsKKysKKysgICAgLy8g V2luZG93cyBzZWFyY2hlcyB0aGUgcGFyZW50J3MgQ1dEIHdpdGhvdXQgIi4vIgorKyAgICBRVGVz dDo6bmV3Um93KCJwbGFpbi1wYXJlbnQtY2hkaXIiKSA8PCBRU3RyaW5nKCkgPDwgQ2hkaXJNb2Rl OjpJblBhcmVudCA8PCBJc1dpbmRvd3M7CisrfQorKworK3ZvaWQgdHN0X1FQcm9jZXNzOjpzdGFy dEZyb21DdXJyZW50V29ya2luZ0RpcigpCisreworKyAgICBRRkVUQ0goUVN0cmluZywgcHJvZ3Jh bVByZWZpeCk7CisrICAgIFFGRVRDSChDaGRpck1vZGUsIGNoZGlyTW9kZSk7CisrICAgIFFGRVRD SChib29sLCBzdWNjZXNzKTsKKysKKysgICAgUVByb2Nlc3MgcHJvY2VzczsKKysgICAgcVJlZ2lz dGVyTWV0YVR5cGU8UVByb2Nlc3M6OlByb2Nlc3NFcnJvcj4oKTsKKysgICAgUVNpZ25hbFNweSBl cnJvclNweSgmcHJvY2VzcywgJlFQcm9jZXNzOjplcnJvck9jY3VycmVkKTsKKysgICAgUVZFUklG WShlcnJvclNweS5pc1ZhbGlkKCkpOworKworKyAgICAvLyBib3RoIHRoZSBkaXIgbmFtZSBhbmQg dGhlIGV4ZWN1dGFibGUgbmFtZQorKyAgICBjb25zdCBRU3RyaW5nIHRhcmdldCA9IFFTdHJpbmdM aXRlcmFsKCJ0ZXN0UHJvY2Vzc05vcm1hbCIpOworKyAgICBwcm9jZXNzLnNldFByb2dyYW0ocHJv Z3JhbVByZWZpeCArIHRhcmdldCk7CisrCisrI2lmZGVmIFFfT1NfVU5JWAorKyAgICAvLyBSZXNl dCBQQVRILCB0byBiZSBzdXJlIGl0IGRvZXNuJ3QgY29udGFpbiAuIG9yIHRoZSBlbXB0eSBwYXRo LgorKyAgICAvLyBXZSBjYW4ndCBkbyB0aGlzIG9uIFdpbmRvd3MgYmVjYXVzZSBETExzIGFyZSBz ZWFyY2hlZCBpbiBQQVRICisrICAgIC8vIGFuZCBXaW5kb3dzIGFsd2F5cyBzZWFyY2hlcyAiLiIg YW55d2F5LgorKyAgICBhdXRvIHJlc3RvcmVFbnYgPSBxU2NvcGVHdWFyZChbb2xkID0gcWdldGVu digiUEFUSCIpXSB7CisrICAgICAgICBxcHV0ZW52KCJQQVRIIiwgb2xkKTsKKysgICAgfSk7Cisr ICAgIHFwdXRlbnYoIlBBVEgiLCAiLyIpOworKyNlbmRpZgorKworKyAgICBzd2l0Y2ggKGNoZGly TW9kZSkgeworKyAgICBjYXNlIENoZGlyTW9kZTo6SW5QYXJlbnQ6IHsKKysgICAgICAgIGF1dG8g cmVzdG9yZUN3ZCA9IHFTY29wZUd1YXJkKFtvbGQgPSBRRGlyOjpjdXJyZW50UGF0aCgpXSB7Cisr ICAgICAgICAgICAgUURpcjo6c2V0Q3VycmVudChvbGQpOworKyAgICAgICAgfSk7CisrICAgICAg ICBRVkVSSUZZKFFEaXI6OnNldEN1cnJlbnQodGFyZ2V0KSk7CisrICAgICAgICBwcm9jZXNzLnN0 YXJ0KCk7CisrICAgICAgICBicmVhazsKKysgICAgfQorKyAgICBjYXNlIENoZGlyTW9kZTo6SW5D aGlsZDoKKysgICAgICAgIHByb2Nlc3Muc2V0V29ya2luZ0RpcmVjdG9yeSh0YXJnZXQpOworKyAg ICAgICAgUV9GQUxMVEhST1VHSCgpOworKyAgICBjYXNlIENoZGlyTW9kZTo6Tm9uZToKKysgICAg ICAgIHByb2Nlc3Muc3RhcnQoKTsKKysgICAgICAgIGJyZWFrOworKyAgICB9CisrCisrICAgIFFD T01QQVJFKHByb2Nlc3Mud2FpdEZvclN0YXJ0ZWQoKSwgc3VjY2Vzcyk7CisrICAgIFFDT01QQVJF KGVycm9yU3B5LmNvdW50KCksIGludCghc3VjY2VzcykpOworKyAgICBpZiAoc3VjY2Vzcykgewor KyAgICAgICAgUVZFUklGWShwcm9jZXNzLndhaXRGb3JGaW5pc2hlZCgpKTsKKysgICAgfSBlbHNl IHsKKysgICAgICAgIFFDT01QQVJFKHByb2Nlc3MuZXJyb3IoKSwgUVByb2Nlc3M6OkZhaWxlZFRv U3RhcnQpOworKyAgICB9CisrfQorKworIFFURVNUX01BSU4odHN0X1FQcm9jZXNzKQorICNpbmNs dWRlICJ0c3RfcXByb2Nlc3MubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2Nv cmVsaWIvaXRlbW1vZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsL3RzdF9xY29uY2F0 ZW5hdGV0YWJsZXNwcm94eW1vZGVsLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaXRl bW1vZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsL3RzdF9xY29uY2F0ZW5hdGV0YWJs ZXNwcm94eW1vZGVsLmNwcAoraW5kZXggZTFlYTdhNDU1Mi4uOTA5NzJjYWE1NyAxMDA2NDQKKy0t LSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaXRlbW1vZGVscy9xY29uY2F0ZW5hdGV0YWJs ZXNwcm94eW1vZGVsL3RzdF9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsLmNwcAorKysrIGIv cXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pdGVtbW9kZWxzL3Fjb25jYXRlbmF0ZXRhYmxlc3By b3h5bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwuY3BwCitAQCAtMTE3LDYg KzExNyw3IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAgICAgdm9pZCBzaG91bGRQcm9wYWdhdGVEcm9w QWZ0ZXJMYXN0Um93X2RhdGEoKTsKKyAgICAgdm9pZCBzaG91bGRQcm9wYWdhdGVEcm9wQWZ0ZXJM YXN0Um93KCk7CisgICAgIHZvaWQgcXRidWc5MTc4OCgpOworKyAgICB2b2lkIHF0YnVnOTE4Nzgo KTsKKyAKKyBwcml2YXRlOgorICAgICBRU3RhbmRhcmRJdGVtTW9kZWwgbW9kOworQEAgLTg0Myw2 ICs4NDQsMjIgQEAgdm9pZCB0c3RfUUNvbmNhdGVuYXRlVGFibGVzUHJveHlNb2RlbDo6cXRidWc5 MTc4OCgpCisgICAgIFFDT01QQVJFKHByb3h5Q29uY2F0LmNvbHVtbkNvdW50KCksIDApOworIH0K KyAKKyt2b2lkIHRzdF9RQ29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsOjpxdGJ1ZzkxODc4KCkK Kyt7CisrICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCBtOworKyAgICBtLnNldFJvd0NvdW50KDQpOwor KyAgICBtLnNldENvbHVtbkNvdW50KDQpOworKworKyAgICBRQ29uY2F0ZW5hdGVUYWJsZXNQcm94 eU1vZGVsIHBtOworKyAgICBRU29ydEZpbHRlclByb3h5TW9kZWwgcHJveHlGaWx0ZXI7CisrICAg IHByb3h5RmlsdGVyLnNldFNvdXJjZU1vZGVsKCZwbSk7CisrICAgIHByb3h5RmlsdGVyLnNldEZp bHRlckZpeGVkU3RyaW5nKCJzb21ldGhpbmciKTsKKysgICAgcG0uYWRkU291cmNlTW9kZWwoJm0p OyAgLy8gVGhpcyBzaG91bGQgbm90IGFzc2VydAorKworKyAgICBRQ09NUEFSRShwbS5jb2x1bW5D b3VudCgpLCA0KTsKKysgICAgUUNPTVBBUkUocG0ucm93Q291bnQoKSwgNCk7CisrfQorKworIFFU RVNUX0dVSUxFU1NfTUFJTih0c3RfUUNvbmNhdGVuYXRlVGFibGVzUHJveHlNb2RlbCkKKyAKKyAj aW5jbHVkZSAidHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwubW9jIgorZGlmZiAtLWdp dCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3Qu Y3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJuZWwvcW9iamVjdC90c3RfcW9iamVj dC5jcHAKK2luZGV4IDliZDY2YzA4MzUuLmVkNGEwYmFlNWQgMTAwNjQ0CistLS0gYS9xdGJhc2Uv dGVzdHMvYXV0by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0LmNwcAorKysrIGIv cXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJuZWwvcW9iamVjdC90c3RfcW9iamVjdC5jcHAK K0BAIC0xNTgsNiArMTU4LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBudWxsUmVjZWl2 ZXIoKTsKKyAgICAgdm9pZCBmdW5jdG9yUmVmZXJlbmNlc0Nvbm5lY3Rpb24oKTsKKyAgICAgdm9p ZCBkaXNjb25uZWN0RGlzY29ubmVjdHMoKTsKKysgICAgdm9pZCBkZWNsYXJhdGl2ZURhdGEoKTsK KyB9OworIAorIHN0cnVjdCBRT2JqZWN0Q3JlYXRlZE9uU2h1dGRvd24KK0BAIC03Njc5LDUgKzc2 ODAsODEgQEAgdm9pZCB0c3RfUU9iamVjdDo6ZGlzY29ubmVjdERpc2Nvbm5lY3RzKCkKKyBRX1NU QVRJQ19BU1NFUlQoUXRQcml2YXRlOjpIYXNRX09CSkVDVF9NYWNybzx0c3RfUU9iamVjdD46OlZh bHVlKTsKKyBRX1NUQVRJQ19BU1NFUlQoIVF0UHJpdmF0ZTo6SGFzUV9PQkpFQ1RfTWFjcm88U2li bGluZ0RlbGV0ZXI+OjpWYWx1ZSk7CisgCisrI2lmZGVmIFFUX0JVSUxEX0lOVEVSTkFMCisrLyoK KysgICAgU2luY2UgUU9iamVjdFByaXZhdGUgc3RvcmVzIHRoZSBkZWNsYXJhdGl2ZURhdGEgcG9p bnRlciBpbiBhIHVuaW9uIHdpdGggdGhlIHBvaW50ZXIKKysgICAgdG8gdGhlIGN1cnJlbnRseSBk ZXN0cm95ZWQgY2hpbGQsIGNhbGxzIHRvIHRoZSBRdERlY2xhcmF0aXZlIGhhbmRsZXJzIG5lZWQg dG8gYmUKKysgICAgY29ycmVjdGx5IGd1YXJkZWQuIFFUQlVHLTEwNTI4NgorKyovCisrbmFtZXNw YWNlIFF0RGVjbGFyYXRpdmUgeworK3N0YXRpYyBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKnRo ZURhdGE7CisrCisrc3RhdGljIHZvaWQgZGVzdHJveWVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0 YSAqZGF0YSwgUU9iamVjdCAqKQorK3sKKysgICAgUUNPTVBBUkUoZGF0YSwgdGhlRGF0YSk7Cisr fQorK3N0YXRpYyB2b2lkIHNpZ25hbEVtaXR0ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICpk YXRhLCBRT2JqZWN0ICosIGludCwgdm9pZCAqKikKKyt7CisrICAgIFFDT01QQVJFKGRhdGEsIHRo ZURhdGEpOworK30KKysvLyB3ZSBjYW4ndCB1c2UgUUNPTVBBUkUgaW4gdGhlIG5leHQgdHdvIGZ1 bmN0aW9ucywgYXMgdGhleSBkb24ndCByZXR1cm4gdm9pZAorK3N0YXRpYyBpbnQgcmVjZWl2ZXJz KFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgY29uc3QgUU9iamVjdCAqLCBpbnQpCisr eworKyAgICBRVGVzdDo6cUNvbXBhcmUoZGF0YSwgdGhlRGF0YSwgImRhdGEiLCAidGhlRGF0YSIs IF9fRklMRV9fLCBfX0xJTkVfXyk7CisrICAgIHJldHVybiAwOworK30KKytzdGF0aWMgYm9vbCBp c1NpZ25hbENvbm5lY3RlZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKmRhdGEsIGNvbnN0IFFP YmplY3QgKiwgaW50KQorK3sKKysgICAgUVRlc3Q6OnFDb21wYXJlKGRhdGEsIHRoZURhdGEsICJk YXRhIiwgInRoZURhdGEiLCBfX0ZJTEVfXywgX19MSU5FX18pOworKyAgICByZXR1cm4gdHJ1ZTsK Kyt9CisrCisrY2xhc3MgT2JqZWN0IDogcHVibGljIFFPYmplY3QKKyt7CisrICAgIFFfT0JKRUNU CisrcHVibGljOgorKyAgICB1c2luZyBRT2JqZWN0OjpRT2JqZWN0OworKyAgICB+T2JqZWN0KCkK KysgICAgeworKyAgICAgICAgaWYgKE9iamVjdCAqcCA9IHN0YXRpY19jYXN0PE9iamVjdCAqPihw YXJlbnQoKSkpCisrICAgICAgICAgICAgcC0+ZW1pdFNpZ25hbCgpOworKyAgICB9CisrCisrICAg IHZvaWQgZW1pdFNpZ25hbCgpCisrICAgIHsKKysgICAgICAgIGVtaXQgdGhlU2lnbmFsKCk7Cisr ICAgIH0KKysKKytzaWduYWxzOgorKyAgICB2b2lkIHRoZVNpZ25hbCgpOworK307CisrCisrfQor KyNlbmRpZgorKworK3ZvaWQgdHN0X1FPYmplY3Q6OmRlY2xhcmF0aXZlRGF0YSgpCisreworKyNp ZmRlZiBRVF9CVUlMRF9JTlRFUk5BTAorKyAgICBRU2NvcGVkVmFsdWVSb2xsYmFjayBkZXN0cm95 ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpkZXN0cm95ZWQsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRdERlY2xhcmF0aXZlOjpkZXN0cm95ZWQpOworKyAgICBRU2Nv cGVkVmFsdWVSb2xsYmFjayBzaWduYWxFbWl0dGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6 c2lnbmFsRW1pdHRlZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR dERlY2xhcmF0aXZlOjpzaWduYWxFbWl0dGVkKTsKKysgICAgUVNjb3BlZFZhbHVlUm9sbGJhY2sg cmVjZWl2ZXJzKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6cmVjZWl2ZXJzLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUXREZWNsYXJhdGl2ZTo6cmVjZWl2ZXJzKTsKKysg ICAgUVNjb3BlZFZhbHVlUm9sbGJhY2sgaXNTaWduYWxDb25uZWN0ZWQoUUFic3RyYWN0RGVjbGFy YXRpdmVEYXRhOjppc1NpZ25hbENvbm5lY3RlZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUXREZWNsYXJhdGl2ZTo6aXNTaWduYWxDb25uZWN0ZWQpOworKwor KyAgICBRdERlY2xhcmF0aXZlOjpPYmplY3QgcDsKKysgICAgUU9iamVjdFByaXZhdGUgKnByaXYg PSBRT2JqZWN0UHJpdmF0ZTo6Z2V0KCZwKTsKKysgICAgcHJpdi0+ZGVjbGFyYXRpdmVEYXRhID0g UXREZWNsYXJhdGl2ZTo6dGhlRGF0YSA9IG5ldyBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE7Cisr CisrICAgIGNvbm5lY3QoJnAsICZRdERlY2xhcmF0aXZlOjpPYmplY3Q6OnRoZVNpZ25hbCwgJnAs IFtdeworKyAgICB9KTsKKysKKysgICAgUXREZWNsYXJhdGl2ZTo6T2JqZWN0ICpjaGlsZCA9IG5l dyBRdERlY2xhcmF0aXZlOjpPYmplY3Q7CisrICAgIGNoaWxkLT5zZXRQYXJlbnQoJnApOworKyNl bmRpZgorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RT2JqZWN0KQorICNpbmNsdWRlICJ0c3RfcW9i amVjdC5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9taW1ldHlw ZXMvcW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNwcAor aW5kZXggMGVhNDIyZWNiYy4uMWEzMjU2NTM0YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9h dXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UvdHN0X3FtaW1lZGF0YWJhc2UuY3Bw CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNl L3RzdF9xbWltZWRhdGFiYXNlLmNwcAorQEAgLTcwLDE1ICs3MCwxNSBAQCBzdGF0aWMgaW5saW5l IFFTdHJpbmcgdGVzdFN1aXRlV2FybmluZygpCisgCisgICAgIFFTdHJpbmcgcmVzdWx0OworICAg ICBRVGV4dFN0cmVhbSBzdHIoJnJlc3VsdCk7CistICAgIHN0ciA8PCAiXG5DYW5ub3QgZmluZCB0 aGUgc2hhcmVkLW1pbWUtaW5mbyB0ZXN0IHN1aXRlXG5zdGFydGluZyBmcm9tOiAiCisrICAgIHN0 ciA8PCAiXG5DYW5ub3QgZmluZCB0aGUgc2hhcmVkLW1pbWUtaW5mbyB0ZXN0IHN1aXRlXG5pbiB0 aGUgcGFyZW50IG9mOiAiCisgICAgICAgICA8PCBRRGlyOjp0b05hdGl2ZVNlcGFyYXRvcnMoUURp cjo6Y3VycmVudFBhdGgoKSkgPDwgIlxuIgorICAgICAgICAgICAgImNkICIgPDwgUURpcjo6dG9O YXRpdmVTZXBhcmF0b3JzKFFTdHJpbmdMaXRlcmFsKCJ0ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5 cGVzL3FtaW1lZGF0YWJhc2UiKSkgPDwgIlxuIgorLSAgICAgICAgICAgIndnZXQgaHR0cDovL2Nn aXQuZnJlZWRlc2t0b3Aub3JnL3hkZy9zaGFyZWQtbWltZS1pbmZvL3NuYXBzaG90L1JlbGVhc2Ut MS0xMC56aXBcbiIKKy0gICAgICAgICAgICJ1bnppcCBSZWxlYXNlLTEtMTAuemlwXG4iOworKyAg ICAgICAgICAgIndnZXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3hkZy9zaGFyZWQt bWltZS1pbmZvLy0vYXJjaGl2ZS8yLjEvc2hhcmVkLW1pbWUtaW5mby0yLjEuemlwXG4iCisrICAg ICAgICAgICAidW56aXAgc2hhcmVkLW1pbWUtaW5mby0yLjEuemlwXG4iOworICNpZmRlZiBRX09T X1dJTgorLSAgICBzdHIgPDwgIm1rZGlyIHRlc3RmaWxlc1xueGNvcHkgL3MgUmVsZWFzZS0xLTEw IHMtbS1pXG4iOworKyAgICBzdHIgPDwgIm1rZGlyIHRlc3RmaWxlc1xueGNvcHkgL3Mgc2hhcmVk LW1pbWUtaW5mby0yLjEgcy1tLWlcbiI7CisgI2Vsc2UKKy0gICAgc3RyIDw8ICJsbiAtcyBSZWxl YXNlLTEtMTAgcy1tLWlcbiI7CisrICAgIHN0ciA8PCAibG4gLXMgc2hhcmVkLW1pbWUtaW5mby0y LjEgcy1tLWlcbiI7CisgI2VuZGlmCisgICAgIHJldHVybiByZXN1bHQ7CisgfQorQEAgLTE1NCw3 ICsxNTQsNyBAQCB2b2lkIHRzdF9RTWltZURhdGFiYXNlOjppbml0VGVzdENhc2UoKQorICAgICBR VkVSSUZZMihjb3B5UmVzb3VyY2VGaWxlKHhtbEZpbGVOYW1lLCB4bWxUYXJnZXRGaWxlTmFtZSwg JmVycm9yTWVzc2FnZSksIHFQcmludGFibGUoZXJyb3JNZXNzYWdlKSk7CisgI2VuZGlmCisgCist ICAgIG1fdGVzdFN1aXRlID0gUUZJTkRURVNUREFUQSgicy1tLWkvdGVzdHMiKTsKKysgICAgbV90 ZXN0U3VpdGUgPSBRRklORFRFU1REQVRBKCJzLW0taS90ZXN0cy9taW1lLWRldGVjdGlvbiIpOwor ICAgICBpZiAobV90ZXN0U3VpdGUuaXNFbXB0eSgpKQorICAgICAgICAgcVdhcm5pbmcoIiVzIiwg cVByaW50YWJsZSh0ZXN0U3VpdGVXYXJuaW5nKCkpKTsKKyAKK0BAIC02MTEsNyArNjExLDcgQEAg dm9pZCB0c3RfUU1pbWVEYXRhYmFzZTo6YWxsTWltZVR5cGVzKCkKKyAgICAgUVZFUklGWSghbHN0 LmlzRW1wdHkoKSk7CisgCisgICAgIC8vIEhhcmRjb2RpbmcgdGhpcyBpcyB0aGUgb25seSB3YXkg dG8gY2hlY2sgYm90aCBwcm92aWRlcnMgZmluZCB0aGUgc2FtZSBudW1iZXIgb2YgbWltZXR5cGVz LgorLSAgICBRQ09NUEFSRShsc3QuY291bnQoKSwgNzc5KTsKKysgICAgUUNPTVBBUkUobHN0LmNv dW50KCksIDgxMSk7CisgCisgICAgIGZvcmVhY2ggKGNvbnN0IFFNaW1lVHlwZSAmbWltZSwgbHN0 KSB7CisgICAgICAgICBjb25zdCBRU3RyaW5nIG5hbWUgPSBtaW1lLm5hbWUoKTsKK0BAIC02MzEs MTAgKzYzMSw5IEBAIHZvaWQgdHN0X1FNaW1lRGF0YWJhc2U6OnN1ZmZpeGVzX2RhdGEoKQorIAor ICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIGEgc2luZ2xlIHBhdHRlcm4iKSA8PCAi YXBwbGljYXRpb24vcGRmIiA8PCAiKi5wZGYiIDw8ICJwZGYiOworICAgICBRVGVzdDo6bmV3Um93 KCJtaW1ldHlwZSB3aXRoIG11bHRpcGxlIHBhdHRlcm5zIikgPDwgImFwcGxpY2F0aW9uL3gta3By ZXNlbnRlciIgPDwgIioua3ByOyoua3B0IiA8PCAia3ByIjsKKy0gICAgUVRlc3Q6Om5ld1Jvdygi anBlZyIpIDw8ICJpbWFnZS9qcGVnIiA8PCAiKi5qcGU7Ki5qcGc7Ki5qcGVnIiA8PCAianBlZyI7 CistICAgIC8vaWYgKEtNaW1lVHlwZTo6c2hhcmVkTWltZUluZm9WZXJzaW9uKCkgPiBLREVfTUFL RV9WRVJTSU9OKDAsIDYwLCAwKSkgeworLSAgICAgICAgUVRlc3Q6Om5ld1JvdygibWltZXR5cGUg d2l0aCBtYW55IHBhdHRlcm5zIikgPDwgImFwcGxpY2F0aW9uL3ZuZC53b3JkcGVyZmVjdCIgPDwg Iioud3A7Ki53cDQ7Ki53cDU7Ki53cDY7Ki53cGQ7Ki53cHAiIDw8ICJ3cCI7CistICAgIC8vfQor KyAgICAvLyBUaGUgcHJlZmVycmVkIHN1ZmZpeCBmb3IgaW1hZ2UvanBlZyBpcyAqLmpwZywgYXMg cGVyIGh0dHBzOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3MzcKKysgICAgUVRl c3Q6Om5ld1JvdygianBlZyIpIDw8ICJpbWFnZS9qcGVnIiA8PCAiKi5qcGU7Ki5qcGc7Ki5qcGVn IiA8PCAianBnIjsKKysgICAgUVRlc3Q6Om5ld1JvdygibWltZXR5cGUgd2l0aCBtYW55IHBhdHRl cm5zIikgPDwgImFwcGxpY2F0aW9uL3ZuZC53b3JkcGVyZmVjdCIgPDwgIioud3A7Ki53cDQ7Ki53 cDU7Ki53cDY7Ki53cGQ7Ki53cHAiIDw8ICJ3cCI7CisgICAgIFFUZXN0OjpuZXdSb3coIm9hc2lz IHRleHQgbWltZXR5cGUiKSA8PCAiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50 ZXh0IiA8PCAiKi5vZHQiIDw8ICJvZHQiOworICAgICBRVGVzdDo6bmV3Um93KCJvYXNpcyBwcmVz ZW50YXRpb24gbWltZXR5cGUiKSA8PCAiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVu dC5wcmVzZW50YXRpb24iIDw8ICIqLm9kcCIgPDwgIm9kcCI7CisgICAgIFFUZXN0OjpuZXdSb3co Im1pbWV0eXBlIHdpdGggbXVsdGlwbGUgcGF0dGVybnMiKSA8PCAidGV4dC9wbGFpbiIgPDwgIiou YXNjOyoudHh0OyosdiIgPDwgInR4dCI7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8v Y29yZWxpYi9zZXJpYWxpemF0aW9uL2pzb24vdHN0X3F0anNvbi5jcHAgYi9xdGJhc2UvdGVzdHMv YXV0by9jb3JlbGliL3NlcmlhbGl6YXRpb24vanNvbi90c3RfcXRqc29uLmNwcAoraW5kZXggM2U1 OGRkMDNjYy4uYzhmODJlZjVkNSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVs aWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9xdGpzb24uY3BwCisrKysgYi9xdGJhc2UvdGVzdHMv YXV0by9jb3JlbGliL3NlcmlhbGl6YXRpb24vanNvbi90c3RfcXRqc29uLmNwcAorQEAgLTE3Niw2 ICsxNzYsOCBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgZnJvbVRvVmFyaWFudENvbnZl cnNpb25zX2RhdGEoKTsKKyAgICAgdm9pZCBmcm9tVG9WYXJpYW50Q29udmVyc2lvbnMoKTsKKyAK KysgICAgdm9pZCBub0xlYWtPbk5hbWVDbGFzaCgpOworKworIHByaXZhdGU6CisgICAgIFFTdHJp bmcgdGVzdERhdGFEaXI7CisgfTsKK0BAIC0zNjg1LDUgKzM2ODcsMjMgQEAgdm9pZCB0c3RfUXRK c29uOjpmcm9tVG9WYXJpYW50Q29udmVyc2lvbnMoKQorICAgICB9CisgfQorIAorK3ZvaWQgdHN0 X1F0SnNvbjo6bm9MZWFrT25OYW1lQ2xhc2goKQorK3sKKysgICAgUUpzb25Eb2N1bWVudCBkb2Mg PSBRSnNvbkRvY3VtZW50Ojpmcm9tSnNvbigie1wiXCI6e1wiXCI6MH0sXCJcIjowfSIpOworKyAg ICBRVkVSSUZZKCFkb2MuaXNOdWxsKCkpOworKyAgICBjb25zdCBRSnNvbk9iamVjdCBvYmogPSBk b2Mub2JqZWN0KCk7CisrCisrICAgIC8vIFJlbW92ZWQgdGhlIGR1cGxpY2F0ZSBrZXkuCisrICAg IFFDT01QQVJFKG9iai5sZW5ndGgoKSwgMSk7CisrCisrICAgIC8vIFJldGFpbmVkIHRoZSBsYXN0 IG9mIHRoZSBkdXBsaWNhdGVzLgorKyAgICBjb25zdCBRSnNvblZhbHVlIHZhbCA9IG9iai5iZWdp bigpLnZhbHVlKCk7CisrICAgIFFWRVJJRlkodmFsLmlzRG91YmxlKCkpOworKyAgICBRQ09NUEFS RSh2YWwudG9Eb3VibGUoKSwgMC4wKTsKKysKKysgICAgLy8gSXQgc2hvdWxkIG5vdCBsZWFrLgor KyAgICAvLyBJbiBwYXJ0aWN1bGFyIGl0IHNob3VsZCBub3QgZm9yZ2V0IHRvIGRlcmVmIHRoZSBj b250YWluZXIgZm9yIHRoZSBpbm5lciBvYmplY3QuCisrfQorKworIFFURVNUX01BSU4odHN0X1F0 SnNvbikKKyAjaW5jbHVkZSAidHN0X3F0anNvbi5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vY29yZWxpYi90aW1lL3F0aW1lem9uZS90c3RfcXRpbWV6b25lLmNwcCBiL3F0YmFz ZS90ZXN0cy9hdXRvL2NvcmVsaWIvdGltZS9xdGltZXpvbmUvdHN0X3F0aW1lem9uZS5jcHAKK2lu ZGV4IGE1OWI1OGQ1N2YuLjI0MWMzZTg0YWMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL3RpbWUvcXRpbWV6b25lL3RzdF9xdGltZXpvbmUuY3BwCisrKysgYi9xdGJhc2Uv dGVzdHMvYXV0by9jb3JlbGliL3RpbWUvcXRpbWV6b25lL3RzdF9xdGltZXpvbmUuY3BwCitAQCAt NjMsNiArNjMsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGlzVmFsaWRJZF9kYXRhKCk7 CisgICAgIHZvaWQgaXNWYWxpZElkKCk7CisgICAgIHZvaWQgbWFsZm9ybWVkKCk7CisrICAgIHZv aWQgc2VyaWFsaXplKCk7CisgICAgIC8vIEJhY2tlbmQgdGVzdHMKKyAgICAgdm9pZCB1dGNUZXN0 KCk7CisgICAgIHZvaWQgaWN1VGVzdCgpOworQEAgLTk0Nyw2ICs5NDgsMzMgQEAgdm9pZCB0c3Rf UVRpbWVab25lOjptYWxmb3JtZWQoKQorICAgICAgICAgYmFyZi5vZmZzZXRGcm9tVXRjKG5vdyk7 CisgfQorIAorK3ZvaWQgdHN0X1FUaW1lWm9uZTo6c2VyaWFsaXplKCkKKyt7CisrICAgIGludCBw YXJ0cyA9IDA7CisrI2lmbmRlZiBRVF9OT19ERUJVR19TVFJFQU0KKysgICAgcURlYnVnKCkgPDwg UVRpbWVab25lKCk7IC8vIHRvIHZlcmlmeSBubyBjcmFzaAorKyAgICBwYXJ0cysrOworKyNlbmRp ZgorKyNpZm5kZWYgUVRfTk9fREFUQVNUUkVBTQorKyAgICBRQnl0ZUFycmF5IGJsb2I7CisrICAg IHsKKysgICAgICAgIFFEYXRhU3RyZWFtIHN0cmVhbSgmYmxvYiwgUUlPRGV2aWNlOjpXcml0ZU9u bHkpOworKyAgICAgICAgc3RyZWFtIDw8IFFUaW1lWm9uZSgiRXVyb3BlL09zbG8iKSA8PCBRVGlt ZVpvbmUoNDIwKSA8PCBRVGltZVpvbmUoKSA8PCBxaW50NjQoLTEpOworKyAgICB9CisrICAgIFFE YXRhU3RyZWFtIHN0cmVhbSgmYmxvYiwgUUlPRGV2aWNlOjpSZWFkT25seSk7CisrICAgIFFUaW1l Wm9uZSBpbnZhbGlkLCBvZmZzZXQsIG9zbG87CisrICAgIHFpbnQ2NCBtaW51c29uZTsKKysgICAg c3RyZWFtID4+IG9zbG8gPj4gb2Zmc2V0ID4+IGludmFsaWQgPj4gbWludXNvbmU7CisrICAgIFFD T01QQVJFKG9zbG8sIFFUaW1lWm9uZSgiRXVyb3BlL09zbG8iKSk7CisrICAgIFFDT01QQVJFKG9m ZnNldCwgUVRpbWVab25lKDQyMCkpOworKyAgICBRVkVSSUZZKCFpbnZhbGlkLmlzVmFsaWQoKSk7 CisrICAgIFFDT01QQVJFKG1pbnVzb25lLCBxaW50NjQoLTEpKTsKKysgICAgcGFydHMrKzsKKysj ZW5kaWYKKysgICAgaWYgKCFwYXJ0cykKKysgICAgICAgIFFTS0lQKCJObyBzZXJpYWxpemF0aW9u IGVuYWJsZWQiKTsKKyt9CisrCisgdm9pZCB0c3RfUVRpbWVab25lOjp1dGNUZXN0KCkKKyB7Cisg I2lmZGVmIFFUX0JVSUxEX0lOVEVSTkFMCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8v ZGJ1cy9xZGJ1c2ludGVyZmFjZS90c3RfcWRidXNpbnRlcmZhY2UuY3BwIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vZGJ1cy9xZGJ1c2ludGVyZmFjZS90c3RfcWRidXNpbnRlcmZhY2UuY3BwCitpbmRleCAw NTQ4MGM2ZGQyLi43MGY0Yzc1NzU2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vZGJ1 cy9xZGJ1c2ludGVyZmFjZS90c3RfcWRidXNpbnRlcmZhY2UuY3BwCisrKysgYi9xdGJhc2UvdGVz dHMvYXV0by9kYnVzL3FkYnVzaW50ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5jcHAKK0BAIC0z MjQsNiArMzI0LDEzIEBAIHZvaWQgdHN0X1FEQnVzSW50ZXJmYWNlOjpub3RWYWxpZCgpCisgCisg ICAgIFFWRVJJRlkoIWludGVyZmFjZS5pc1ZhbGlkKCkpOworICAgICBRVkVSSUZZKCFRTWV0YU9i amVjdDo6aW52b2tlTWV0aG9kKCZpbnRlcmZhY2UsICJMaXN0TmFtZXMiLCBRdDo6RGlyZWN0Q29u bmVjdGlvbikpOworKworKyAgICAvLyBXaXRoIGEgY29ubmVjdGlvbiwgYnV0IGVtcHR5L251bGwg c2VydmljZSBhbmQgcGF0aCBzcGVjaWZpZWQKKysgICAgUURCdXNDb25uZWN0aW9uIGNvbiA9IFFE QnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpOworKyAgICBRVkVSSUZZKGNvbi5pc0Nvbm5lY3Rl ZCgpKTsKKysgICAgUURCdXNJbnRlcmZhY2UgaWZhY2Uoe30sIHt9LCB7fSwgY29uKTsKKysgICAg UVZFUklGWSghaWZhY2UuaXNWYWxpZCgpKTsKKysgICAgUVZFUklGWSghUU1ldGFPYmplY3Q6Omlu dm9rZU1ldGhvZCgmaW50ZXJmYWNlLCAiTGlzdE5hbWVzIiwgUXQ6OkRpcmVjdENvbm5lY3Rpb24p KTsKKyB9CisgCisgdm9pZCB0c3RfUURCdXNJbnRlcmZhY2U6Om5vdFZhbGlkRGVyaXZlZCgpCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UvdHN0 X3FrZXlzZXF1ZW5jZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9ndWkva2VybmVsL3FrZXlzZXF1 ZW5jZS90c3RfcWtleXNlcXVlbmNlLmNwcAoraW5kZXggODc0NDY4Yzk1NC4uMDRjZWI0YWI2NSAx MDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlL3Rz dF9xa2V5c2VxdWVuY2UuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9ndWkva2VybmVsL3Fr ZXlzZXF1ZW5jZS90c3RfcWtleXNlcXVlbmNlLmNwcAorQEAgLTUwNyw2ICs1MDcsMTAgQEAgdm9p ZCB0c3RfUUtleVNlcXVlbmNlOjp0b1N0cmluZ0Zyb21LZXljb2RlX2RhdGEoKQorICAgICBRVGVz dDo6bmV3Um93KCJDdHJsK0FsdCtOdW0rRGVsIikgPDwgUUtleVNlcXVlbmNlKFF0OjpDb250cm9s TW9kaWZpZXIgfCBRdDo6QWx0TW9kaWZpZXIgfCBRdDo6S2V5cGFkTW9kaWZpZXIgfCBRdDo6S2V5 X0RlbGV0ZSkgPDwgIkN0cmwrQWx0K051bStEZWwiOworICAgICBRVGVzdDo6bmV3Um93KCJDdHJs K0lucyIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6Q29udHJvbE1vZGlmaWVyIHwgUXQ6OktleV9JbnNl cnQpIDw8ICJDdHJsK0lucyI7CisgICAgIFFUZXN0OjpuZXdSb3coIkN0cmwrTnVtK0lucygxKSIp IDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X0luc2VydCB8IFF0OjpLZXlwYWRNb2RpZmllciB8IFF0 OjpDb250cm9sTW9kaWZpZXIpIDw8ICJDdHJsK051bStJbnMiOworKyAgICBRVGVzdDo6bmV3Um93 KCJDdHJsIikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfQ29udHJvbCkgPDwgIkNvbnRyb2wiOwor KyAgICBRVGVzdDo6bmV3Um93KCJBbHQiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9BbHQpIDw8 ICJBbHQiOworKyAgICBRVGVzdDo6bmV3Um93KCJTaGlmdCIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6 S2V5X1NoaWZ0KSA8PCAiU2hpZnQiOworKyAgICBRVGVzdDo6bmV3Um93KCJNZXRhIikgPDwgUUtl eVNlcXVlbmNlKFF0OjpLZXlfTWV0YSkgPDwgIk1ldGEiOworIH0KKyAKKyB2b2lkIHRzdF9RS2V5 U2VxdWVuY2U6OnRvU3RyaW5nRnJvbUtleWNvZGUoKQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0 cy9hdXRvL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwIGIvcXRi YXNlL3Rlc3RzL2F1dG8vZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS90c3RfcWZvbnRkYXRhYmFzZS5j cHAKK2luZGV4IDE1ZTBlY2FkYWEuLmI0ZWNhNzQyODMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVz dHMvYXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNlL3RzdF9xZm9udGRhdGFiYXNlLmNwcAorKysr IGIvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS90c3RfcWZvbnRkYXRh YmFzZS5jcHAKK0BAIC04MSw2ICs4MSw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgcmVn aXN0ZXJPcGVuVHlwZVByZWZlcnJlZE5hbWVzU3lzdGVtKCk7CisgICAgIHZvaWQgcmVnaXN0ZXJP cGVuVHlwZVByZWZlcnJlZE5hbWVzQXBwbGljYXRpb24oKTsKKyAKKysgICAgdm9pZCBzdHJldGNo UmVzcGVjdGVkKCk7CisrCisgcHJpdmF0ZToKKyAgICAgUVN0cmluZyBtX2xlZEZvbnQ7CisgICAg IFFTdHJpbmcgbV90ZXN0Rm9udDsKK0BAIC0zNTUsNiArMzU3LDI4IEBAIHN0YXRpYyBRU3RyaW5n IHRlc3RTdHJpbmcoKQorICAgICByZXR1cm4gUVN0cmluZ0xpdGVyYWwoImZvbyBiYXIiKTsKKyB9 CisgCisrdm9pZCB0c3RfUUZvbnREYXRhYmFzZTo6c3RyZXRjaFJlc3BlY3RlZCgpCisreworKyAg ICBpbnQgaXRhbGljSWQgPSBRRm9udERhdGFiYXNlOjphZGRBcHBsaWNhdGlvbkZvbnQobV90ZXN0 Rm9udEl0YWxpYyk7CisrICAgIFFWRVJJRlkoaXRhbGljSWQgIT0gLTEpOworKworKyAgICBRVkVS SUZZKCFRRm9udERhdGFiYXNlOjphcHBsaWNhdGlvbkZvbnRGYW1pbGllcyhpdGFsaWNJZCkuaXNF bXB0eSgpKTsKKysKKysgICAgUVN0cmluZyBpdGFsaWNGb250TmFtZSA9IFFGb250RGF0YWJhc2U6 OmFwcGxpY2F0aW9uRm9udEZhbWlsaWVzKGl0YWxpY0lkKS5maXJzdCgpOworKworKyAgICBRRm9u dCBpdGFsaWNGb250ID0gUUZvbnREYXRhYmFzZSgpLmZvbnQoaXRhbGljRm9udE5hbWUsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nOjpmcm9tTGF0 aW4xKCJJdGFsaWMiKSwgMTQpOworKyAgICBRVkVSSUZZKGl0YWxpY0ZvbnQuaXRhbGljKCkpOwor KworKyAgICBRRm9udCBpdGFsaWNTdHJldGNoZWRGb250ID0gaXRhbGljRm9udDsKKysgICAgaXRh bGljU3RyZXRjaGVkRm9udC5zZXRTdHJldGNoKCA0MDAgKTsKKysKKysgICAgUVZFUklGWShRRm9u dE1ldHJpY3NGKGl0YWxpY0ZvbnQpLmhvcml6b250YWxBZHZhbmNlKFFTdHJpbmdMaXRlcmFsKCJm b29iYXIiKSkgPAorKyAgICAgICAgICAgIFFGb250TWV0cmljc0YoaXRhbGljU3RyZXRjaGVkRm9u dCkuaG9yaXpvbnRhbEFkdmFuY2UoUVN0cmluZ0xpdGVyYWwoImZvb2JhciIpKSk7CisrCisrICAg IFFGb250RGF0YWJhc2U6OnJlbW92ZUFwcGxpY2F0aW9uRm9udChpdGFsaWNJZCk7CisrfQorKwor IHZvaWQgdHN0X1FGb250RGF0YWJhc2U6OmNvbmRlbnNlZEZvbnRXaWR0aE5vRm9udE1lcmdpbmco KQorIHsKKyAgICAgaW50IHJlZ3VsYXJGb250SWQgPSBRRm9udERhdGFiYXNlOjphZGRBcHBsaWNh dGlvbkZvbnQobV90ZXN0Rm9udCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0 d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBseS5jcHAgYi9xdGJhc2Uv dGVzdHMvYXV0by9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5 LmNwcAoraW5kZXggM2Q0YTA5NGM0My4uYjQyM2UxMWE5OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90 ZXN0cy9hdXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHkvdHN0X3FuZXR3b3JrcmVwbHku Y3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5 L3RzdF9xbmV0d29ya3JlcGx5LmNwcAorQEAgLTI4MSw2ICsyODEsNyBAQCBwcml2YXRlIFFfU0xP VFM6CisgICAgIHZvaWQgaW9HZXRGcm9tRmlsZVNwZWNpYWwoKTsKKyAgICAgdm9pZCBpb0dldEZy b21GaWxlX2RhdGEoKTsKKyAgICAgdm9pZCBpb0dldEZyb21GaWxlKCk7CisrICAgIHZvaWQgaW9H ZXRGcm9tRmlsZVVybCgpOworICAgICB2b2lkIGlvR2V0RnJvbUZ0cF9kYXRhKCk7CisgICAgIHZv aWQgaW9HZXRGcm9tRnRwKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRnRwV2l0aFJldXNlKCk7CitA QCAtMzMwMCw2ICszMzAxLDE4IEBAIHZvaWQgdHN0X1FOZXR3b3JrUmVwbHk6OmlvR2V0RnJvbUZp bGUoKQorICAgICBRQ09NUEFSRShyZWFkZXIuZGF0YSwgZGF0YSk7CisgfQorIAorK3ZvaWQgdHN0 X1FOZXR3b3JrUmVwbHk6OmlvR2V0RnJvbUZpbGVVcmwoKQorK3sKKysgICAgLy8gVGhpcyBpbW1l ZGlhdGVseSBmYWlscyBvbiBub24td2luZG93cyBwbGF0Zm9ybXM6CisrICAgIFFOZXR3b3JrUmVx dWVzdCByZXF1ZXN0KFFVcmwoImZpbGU6Ly91bmMtc2VydmVyL3NvbWUvcGF0aCIpKTsKKysgICAg UU5ldHdvcmtSZXBseVB0ciByZXBseShtYW5hZ2VyLmdldChyZXF1ZXN0KSk7CisrICAgIFFTaWdu YWxTcHkgZmluaXNoZWRTcHkocmVwbHkuZ2V0KCksICZRTmV0d29ya1JlcGx5OjpmaW5pc2hlZCk7 CisrICAgIC8vIFFUQlVHLTEwNTYxODogVGhpcyB3b3VsZCwgb24gbm9uLVdpbmRvd3MgcGxhdGZv cm1zLCBuZXZlciBoYXBwZW4gYmVjYXVzZSB0aGUgc2lnbmFsCisrICAgIC8vIHdhcyBlbWl0dGVk IGJlZm9yZSB0aGUgY29uc3RydWN0b3IgZmluaXNoZWQsIGxlYXZpbmcgbm8gY2hhbmNlIGF0IGFs bCB0byBjb25uZWN0IHRvIHRoZQorKyAgICAvLyBzaWduYWwKKysgICAgUVZFUklGWShmaW5pc2hl ZFNweS53YWl0KCkpOworK30KKysKKyB2b2lkIHRzdF9RTmV0d29ya1JlcGx5Ojppb0dldEZyb21G dHBfZGF0YSgpCisgeworICAgICBRVGVzdDo6YWRkQ29sdW1uPFFTdHJpbmc+KCJmaWxlTmFtZSIp OworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQv Y2VydHMvZmx1a2UuY2VydCBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2Nr ZXQvY2VydHMvZmx1a2UuY2VydAoraW5kZXggMDY5ZmE2YjM0MS4uNGNjNGQ5YTVlYSAxMDA2NDQK Ky0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1 a2UuY2VydAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9j ZXJ0cy9mbHVrZS5jZXJ0CitAQCAtMSw3NSArMSwzNCBAQAorLUNlcnRpZmljYXRlOgorLSAgICBE YXRhOgorLSAgICAgICAgVmVyc2lvbjogMyAoMHgyKQorLSAgICAgICAgU2VyaWFsIE51bWJlcjog MCAoMHgwKQorLSAgICAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0 aW9uCistICAgICAgICBJc3N1ZXI6IEM9Tk8sIFNUPU9zbG8sIEw9TnlkYWxlbiwgTz1Ob2tpYSBD b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyksIE9VPURldmVsb3BtZW50LCBD Tj1mbHVrZS50cm9sbC5uby9lbWFpbEFkZHJlc3M9YWhhbnNzZW5AdHJvbGx0ZWNoLmNvbQorLSAg ICAgICAgVmFsaWRpdHkKKy0gICAgICAgICAgICBOb3QgQmVmb3JlOiBEZWMgIDQgMDE6MTA6MzIg MjAwNyBHTVQKKy0gICAgICAgICAgICBOb3QgQWZ0ZXIgOiBBcHIgMjEgMDE6MTA6MzIgMjAzNSBH TVQKKy0gICAgICAgIFN1YmplY3Q6IEM9Tk8sIFNUPU9zbG8sIE89Tm9raWEgQ29ycG9yYXRpb24g YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLCBPVT1EZXZlbG9wbWVudCwgQ049Zmx1a2UudHJv bGwubm8KKy0gICAgICAgIFN1YmplY3QgUHVibGljIEtleSBJbmZvOgorLSAgICAgICAgICAgIFB1 YmxpYyBLZXkgQWxnb3JpdGhtOiByc2FFbmNyeXB0aW9uCistICAgICAgICAgICAgUlNBIFB1Ymxp YyBLZXk6ICgxMDI0IGJpdCkKKy0gICAgICAgICAgICAgICAgTW9kdWx1cyAoMTAyNCBiaXQpOgor LSAgICAgICAgICAgICAgICAgICAgMDA6YTc6Yzg6YTA6NGE6YzQ6MTk6MDU6MWI6NjY6YmE6MzI6 ZTI6ZDI6ZjE6CistICAgICAgICAgICAgICAgICAgICAxYzo2ZjoxNzo4MjplNDozOToyZTowMTo1 MTo5MDpkYjowNDozNDozMjoxMToKKy0gICAgICAgICAgICAgICAgICAgIDIxOmMyOjBkOjZmOjU5 OmQ4OjUzOjkwOjU0OjNmOjgzOjhmOmE5OmQzOmIzOgorLSAgICAgICAgICAgICAgICAgICAgZDU6 ZWU6MWE6OWI6ODA6YWU6YzM6MjU6Yzk6NWU6YTU6YWY6NGI6NjA6MDU6CistICAgICAgICAgICAg ICAgICAgICBhYTphMDpkMTo5MTowMToxZjpjYTowNDo4MzplMzo1ODoxYzo5OTozMjo0NToKKy0g ICAgICAgICAgICAgICAgICAgIDg0OjcwOjcyOjU4OjAzOjk4OjRhOjYzOjhiOjQxOmY1OjA4OjQ5 OmQyOjkxOgorLSAgICAgICAgICAgICAgICAgICAgMDI6NjA6NmI6ZTQ6NjQ6ZmU6ZGQ6YTA6YWE6 NzQ6MDg6ZTk6MzQ6NGM6OTE6CistICAgICAgICAgICAgICAgICAgICA1ZjoxMjozZDozNzo0ZDo1 NDoyYzphZDo3Zjo1Yjo5ODo2MDozNjowMjo4YzoKKy0gICAgICAgICAgICAgICAgICAgIDNiOmY2 OjQ1OmYzOjI3OjZhOjliOjk0OjlkCistICAgICAgICAgICAgICAgIEV4cG9uZW50OiA2NTUzNyAo MHgxMDAwMSkKKy0gICAgICAgIFg1MDl2MyBleHRlbnNpb25zOgorLSAgICAgICAgICAgIFg1MDl2 MyBCYXNpYyBDb25zdHJhaW50czogCistICAgICAgICAgICAgICAgIENBOkZBTFNFCistICAgICAg ICAgICAgTmV0c2NhcGUgQ29tbWVudDogCistICAgICAgICAgICAgICAgIE9wZW5TU0wgR2VuZXJh dGVkIENlcnRpZmljYXRlCistICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgS2V5IElkZW50aWZp ZXI6IAorLSAgICAgICAgICAgICAgICAyMTo4NTowNDozRDoyMzowMTo2NjpFNTpGNzo5RjoxQTo4 NDoyNDo4QTpBRjowQTo3OTpGNDpFNTpBQworLSAgICAgICAgICAgIFg1MDl2MyBBdXRob3JpdHkg S2V5IElkZW50aWZpZXI6IAorLSAgICAgICAgICAgICAgICBEaXJOYW1lOi9DPU5PL1NUPU9zbG8v TD1OeWRhbGVuL089Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp L09VPURldmVsb3BtZW50L0NOPWZsdWtlLnRyb2xsLm5vL2VtYWlsQWRkcmVzcz1haGFuc3NlbkB0 cm9sbHRlY2guY29tCistICAgICAgICAgICAgICAgIHNlcmlhbDo4RTpBODpCNDpFODo5MTpCNzo1 NDoyRQorLQorLSAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRpb24K Ky0gICAgICAgIDZkOjU3OjVmOmQxOjA1OjQzOmYwOjYyOjA1OmVjOjJhOjcxOmE1OmRjOjE5OjA4 OmYyOmM0OgorLSAgICAgICAgYTY6YmQ6YmI6MjU6ZDk6Y2E6ODk6MDE6MGU6ZTQ6Y2Y6MWY6YzE6 OGM6Yzg6MjQ6MTg6MzU6CistICAgICAgICA1Mzo1OTo3YjpjMDo0MzpiNDozMjplNjo5ODpiMjph NjplZjoxNTowNTowYjo0ODo1ZjplMToKKy0gICAgICAgIGEwOjBjOjk3OmE5OmExOjc3OmQ4OjM1 OjE4OjMwOmJjOmE5OjhmOmQzOmI3OjU0OmM3OmYxOgorLSAgICAgICAgYTk6OWU6NWQ6ZTY6MTk6 YmY6ZjY6M2M6NWI6MmI6ZDg6ZTQ6M2U6NjI6MTg6ODg6OGI6ZDM6CistICAgICAgICAyNDplMTo0 MDo5YjowYzplNjoyOToxNjo2MjphYjplYTowNToyNDo3MDozNjphYTo1NTo5MzoKKy0gICAgICAg IGVmOjAyOjgxOjFiOjIzOjEwOmEyOjA0OmViOjU2Ojk1Ojc1OmZjOmY4Ojk0OmIxOjVkOjQyOgor LSAgICAgICAgYzU6M2Y6MzY6NDQ6ODU6NWQ6M2E6MmU6OTA6NDY6OGE6YTI6Yjk6NmY6ODc6YWU6 MGM6MTU6CistICAgICAgICA0MDoxOTozMTo5MDpmYzozYjoyNTpiYjphZTpmMTo2NjoxMzowZDo4 NTo5MDpkOTo0OTozNDoKKy0gICAgICAgIDhmOmYyOjVkOmY5OjdhOmRiOjRkOjVkOjI3OmY2Ojc2 OjlkOjM1OjhjOjA2OmE2OjRjOmEzOgorLSAgICAgICAgYjE6YjI6YjY6NmY6MWQ6ZDc6YTM6MDA6 ZmQ6NzI6ZWI6OWU6ZWE6NDQ6YTE6YWY6MjE6MzQ6CistICAgICAgICA3ZDpjNzo0MjplMjo0OTo5 MToxOTo4YjpjMDphZDpiYTo4Mjo4MDphODo3MTo3MDpmNDozNToKKy0gICAgICAgIDMxOjkxOjYz Ojg0OjIwOjk1OmU5OjYwOmFmOjY0OjhiOmNjOmZmOjNkOjhhOjc2Ojc0OjNkOgorLSAgICAgICAg Yzg6NTU6NmQ6ZTQ6OGU6YzM6MmI6MWM6ZTg6NDI6MTg6YWU6OWY6ZTY6NmI6OWM6MzQ6MDY6Cist ICAgICAgICBlYzo2YTpmMjpjMworIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorLU1JSUVF ekNDQXZ1Z0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRVUZBRENCbkRFTE1Ba0dBMVVFQmhNQ1Rr OHgKKy1EVEFMQmdOVkJBZ1RCRTl6Ykc4eEVEQU9CZ05WQkFjVEIwNTVaR0ZzWlc0eEZqQVVCZ05W QkFvVERWUnliMnhzCistZEdWamFDQkJVMEV4RkRBU0JnTlZCQXNUQzBSbGRtVnNiM0J0Wlc1ME1S Y3dGUVlEVlFRREV3NW1iSFZyWlM1MAorLWNtOXNiQzV1YnpFbE1DTUdDU3FHU0liM0RRRUpBUllX WVdoaGJuTnpaVzVBZEhKdmJHeDBaV05vTG1OdmJUQWUKKy1GdzB3TnpFeU1EUXdNVEV3TXpKYUZ3 MHpOVEEwTWpFd01URXdNekphTUdNeEN6QUpCZ05WQkFZVEFrNVBNUTB3CistQ3dZRFZRUUlFd1JQ YzJ4dk1SWXdGQVlEVlFRS0V3MVVjbTlzYkhSbFkyZ2dRVk5CTVJRd0VnWURWUVFMRXd0RQorLVpY WmxiRzl3YldWdWRERVhNQlVHQTFVRUF4TU9abXgxYTJVdWRISnZiR3d1Ym04d2daOHdEUVlKS29a SWh2Y04KKy1BUUVCQlFBRGdZMEFNSUdKQW9HQkFLZklvRXJFR1FVYlpyb3k0dEx4SEc4WGd1UTVM Z0ZSa05zRU5ESVJJY0lOCistYjFuWVU1QlVQNE9QcWRPejFlNGFtNEN1d3lYSlhxV3ZTMkFGcXFE UmtRRWZ5Z1NENDFnY21USkZoSEJ5V0FPWQorLVNtT0xRZlVJU2RLUkFtQnI1R1QrM2FDcWRBanBO RXlSWHhJOU4wMVVMSzEvVzVoZ05nS01PL1pGOHlkcW01U2QKKy1BZ01CQUFHamdnRWFNSUlCRmpB SkJnTlZIUk1FQWpBQU1Dd0dDV0NHU0FHRytFSUJEUVFmRmgxUGNHVnVVMU5NCistSUVkbGJtVnlZ WFJsWkNCRFpYSjBhV1pwWTJGMFpUQWRCZ05WSFE0RUZnUVVJWVVFUFNNQlp1WDNueHFFSklxdgor LUNubjA1YXd3Z2JzR0ExVWRJd1NCc3pDQnNLR0JvcVNCbnpDQm5ERUxNQWtHQTFVRUJoTUNUazh4 RFRBTEJnTlYKKy1CQWdUQkU5emJHOHhFREFPQmdOVkJBY1RCMDU1WkdGc1pXNHhGakFVQmdOVkJB b1REVlJ5YjJ4c2RHVmphQ0JCCistVTBFeEZEQVNCZ05WQkFzVEMwUmxkbVZzYjNCdFpXNTBNUmN3 RlFZRFZRUURFdzVtYkhWclpTNTBjbTlzYkM1dQorLWJ6RWxNQ01HQ1NxR1NJYjNEUUVKQVJZV1lX aGhibk56Wlc1QWRISnZiR3gwWldOb0xtTnZiWUlKQUk2b3RPaVIKKy10MVF1TUEwR0NTcUdTSWIz RFFFQkJRVUFBNElCQVFCdFYxL1JCVVB3WWdYc0tuR2wzQmtJOHNTbXZic2wyY3FKCistQVE3a3p4 L0JqTWdrR0RWVFdYdkFRN1F5NXBpeXB1OFZCUXRJWCtHZ0RKZXBvWGZZTlJnd3ZLbVAwN2RVeC9H cAorLW5sM21HYi8yUEZzcjJPUStZaGlJaTlNazRVQ2JET1lwRm1LcjZnVWtjRGFxVlpQdkFvRWJJ eENpQk90V2xYWDgKKy0rSlN4WFVMRlB6WkVoVjA2THBCR2lxSzViNGV1REJWQUdUR1EvRHNsdTY3 eFpoTU5oWkRaU1RTUDhsMzVldHROCistWFNmMmRwMDFqQWFtVEtPeHNyWnZIZGVqQVAxeTY1N3FS S0d2SVRSOXgwTGlTWkVaaThDdHVvS0FxSEZ3OURVeAorLWtXT0VJSlhwWUs5a2k4ei9QWXAyZEQz SVZXM2tqc01ySE9oQ0dLNmY1bXVjTkFic2F2TEQKKytNSUlGNnpDQ0E5T2dBd0lCQWdJVWZvOWFt SnRKR1dxV0U2ZitTa0FPODV6a0dyNHdEUVlKS29aSWh2Y05BUUVMCisrQlFBd2dZTXhDekFKQmdO VkJBWVRBazVQTVEwd0N3WURWUVFJREFSUGMyeHZNUTB3Q3dZRFZRUUhEQVJQYzJ4dgorK01SY3dG UVlEVlFRS0RBNVVhR1VnVVhRZ1EyOXRjR0Z1ZVRFTU1Bb0dBMVVFQ3d3RFVpWkVNUkl3RUFZRFZR UUQKKytEQWxJTWlCVVpYTjBaWEl4R3pBWkJna3Foa2lHOXcwQkNRRVdERzFwYm1sdGFVQnhkQzVw YnpBZ0Z3MHlNREV3CisrTWpZeE1qQXhNekZhR0E4eU1USXdNVEF3TWpFeU1ERXpNVm93Z1lNeEN6 QUpCZ05WQkFZVEFrNVBNUTB3Q3dZRAorK1ZRUUlEQVJQYzJ4dk1RMHdDd1lEVlFRSERBUlBjMnh2 TVJjd0ZRWURWUVFLREE1VWFHVWdVWFFnUTI5dGNHRnUKKytlVEVNTUFvR0ExVUVDd3dEVWlaRU1S SXdFQVlEVlFRRERBbElNaUJVWlhOMFpYSXhHekFaQmdrcWhraUc5dzBCCisrQ1FFV0RHMXBibWx0 YVVCeGRDNXBiekNDQWlJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dJUEFEQ0NBZ29DZ2dJQgorK0FP aVVwNStFNGJsb3VLSDdxK3JWTlI4Tm9ZWDJYa0JXK3ErcnB5MXp1NXNzUlN6YnF4QWpEeDlka2h0 N1FsbmYKKytWbERUMDBKdnBPV2RldVBvbjU5MTVlZFFSc1k0VW5sNm1LSDI5cmEzT3RVYTEveUNK WHNHVkpUS0NqN2s0QnhiCisrNW1aemIvZlRsWm50TUxkVElCTWZVYnc2MkZLaXIxV2pLSWNKOWZD b0c4SmFHZUtWTzRSaDVwMGV6ZDRVVVVJZAorK3IxQlhsNU5xZHF5MnZUTXNFRG5qT3NEM2Vna3Y4 STJTS040TzZuL0Mzd1dZcE1PV1laa0dvWmlLejdySnMvaS8KKytlejdic1Y3Smx3ZHpUbGhwSnpr Y09TVkZCUDZKbEVPeFROTnhaMXd0S3k3UHRaR21zU1NBVHEyZTYrYnczOEFlCisrT3AwWG56enFj R2p0RERvZkJtVDdPRnpaV2pTOVZaUzYrRE9PZTJRSFdsZTFuQ0hjSHlINGt1NklSbHNyOXhrUgor K05BSWxPZm52SEh4cUpVZW5vZWFaNG9RRGpDQktTMUtYeWdKTy90TDdCTFRRVm4veEsxRW1QdktO bmp6V2s0dFIKKytQbmliVWhoczU2MzVxcE9VL1lQcUZCaDFKalZydVpic1djREFoUmNldzB1eE9O WE9hOUUrNGx0dFE5eVNZYTFBCisrTHZXcUp1QVg3Z3UyQnNCTUx5cWZtODExWW5BN0NJRk15TytI bHFta0xGZnY1TC94SVJBWFI3bDI2WUdPMFZ3WAorK0NHak1mejROVlBNTWtlNG5CN3FhOU5rcFhR QlFLTW1zM1F6ZDVKVzBIeTlSdWo1TzhHUGNGWm1WMHR3amQxdUoKKytQRC9jQWprV0xhWGpkTnNK MTZRV2MybmdoUVJTNkhZcUtSWDZqK0NYT3h1cEFnTUJBQUdqVXpCUk1CMEdBMVVkCisrRGdRV0JC UlNDT1U1OGo5Tkpaa01hbXQ2MjNxeUNyaE4zVEFmQmdOVkhTTUVHREFXZ0JSU0NPVTU4ajlOSlpr TQorK2FtdDYyM3F5Q3JoTjNUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJD d1VBQTRJQ0FRQ3EKKytxNGp4c1dlTkR2NU5xMTRoSnRGOUhCK1pMNjR6Y1p0UmpKUDFZZ05zMFFw cEtJQ21qUE9MMm5JTUdtSS9qS3JzCisrMGVHQUwvOVhYTlZIUHhtMU9QT25jdmltTU1tVTZlbVpm cE1kRXRUZktQNDMrUGc5SGdLUmpMb1FwNDA2dkdlUQorKzhraS9tYkJockl0VlBnRW0zdHUyQUZB MDJYVFlpK1l4Q0k5a1JaTEdrTTNGYmd0T3VUTFBsMFo5eStraVBjOUYKKyt1Q1NDMDNhbkJFcXYr dkRTSTgrd09EeW1RL0lKM0p5ejFseElSRGZwNHFBZWtteTBqVTJjOTFWT0hIRW1PbXFxCisra3F5 Z0dGUmR3YmU5OW05eVA2M3I2cTBiNUszWDJVbko2Ym5zMGhtVHdUaFl3cFZQWExVOGpkYVRkZGJN dWtOMgorKy9FZjk2VHN3OG5XT0VPUE15U0hPVElQZ3d5WlJwMjZiMGtBOUVtaEx3T1A0MDFTeFhW UUNtU1JtdHdOYWdtdGcKKytqSkttWm9ZQk4rLy9ENDVpYks4ejZRMG9PbTlQK1doZi91VVhlaGNS eEJ4eVYzeHo3azB3S0dRYkhqL2Rkd2N5CisrSVVvSU40bHJBbGliK2xLMTcwa1RLTjM1MlBEbXJw bzJnbUl6UEVzZnVyS0FJTVNlbERsNkgra2loMTZCdFo4eQorK056NmZoOVNvcXJnM09TQXdhcmU4 cHhWN2s1MWNyQk1vUExONzhLb1JWOE1GQ0s0SzdGZGRxNHJSSVNxNmhpWHEKKytyMW5zam9FUHVL TTlodXBybVpWWmU5dDVZY0RhMkkrd2IzSWlFM3V3cFpiQWRhTER5UTVuNkYvcXBzaUlrWlhuCisr Z3RjRjdvcXBHNW9ZcndDY1o1M3kvZXpVZ1VnN1BsU3oyWHdBR3ZRdGdnPT0KKyAtLS0tLUVORCBD RVJUSUZJQ0FURS0tLS0tCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9z c2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5rZXkgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3Jr L3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmtleQoraW5kZXggOWQxNjY0ZDYwOS4uMzM3Y2U1 NDFhNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2Nr ZXQvY2VydHMvZmx1a2Uua2V5CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9x c3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmtleQorQEAgLTEsMTUgKzEsNTIgQEAKKy0tLS0tLUJFR0lO IFJTQSBQUklWQVRFIEtFWS0tLS0tCistTUlJQ1hBSUJBQUtCZ1FDbnlLQkt4QmtGRzJhNk11TFM4 Unh2RjRMa09TNEJVWkRiQkRReUVTSENEVzlaMkZPUQorLVZEK0RqNm5UczlYdUdwdUFyc01seVY2 bHIwdGdCYXFnMFpFQkg4b0VnK05ZSEpreVJZUndjbGdEbUVwamkwSDEKKy1DRW5Ta1FKZ2ErUmsv dDJncW5RSTZUUk1rVjhTUFRkTlZDeXRmMXVZWURZQ2pEdjJSZk1uYXB1VW5RSURBUUFCCistQW9H QU5GekxrYW5UZVNHTkZNMHV0dEJpcEZUOUY0YTAwZHFIejZKbk83elhBVDI2STVyOHNVMXBxUUJi NnVMegorLS8rUXo1WndrOFJVQVFjc01SZ0pldHVQUVViMEpaakY2RHV2MjRoTmF6cVhCQ3U3QVp6 VWVuamFmd21LQy84cmkKKy1LcFgzZlR3cXpmemkvL0ZLR2diWFE4MHl5a1NTbGlETDNrbi9kckFU eHNMQ2dRRUNRUURYaEVGV0xKMHZWWjFzCistMUVrZiszTklURStEUjE2WCtMUTRXNnZ5RUhBalRi YU5XdGNUS2RBV0xBMmw2TjRXQUFQWVNpNmF3bSt6TXh4NAorLVZvbVZUc2pkQWtFQXgweitlN25h dExlRmNycnE4cGJVK3dhNlNBUDFWZmhRV0tpdHhMMWU3dS9RTzkwTkNweEUKKy1vUVlLek1rbW1w T09GalF3RU1BeTFkdkZNYm00TEhsZXdRSkFDL2tzREJhVWNRSEhxamt0Q3RyVWI4clZqQXlXCist QThsc2Nja2VCMmZFWXlHNUo2ZEpWYVk0Q2xOT09zNXlNRFMyQWZrMUY2SC94S3Z0US81Q3pJbkEv UUpBVER1YgorLUsrQlBVOGpPOXErZ3B1SWkzVklaZHVwc3NWR21DZ09iVkNITGFrRzR1TzA0eTlJ eVBoVjlsQTl0QUx0b0lmNGMKKy1WSXZ2NWZXR1hCclo0OGtaQVFKQkFKbVZDZHpReGQ5TFpJNXZ4 aWpVQ2o1RUk0ZSt4NURScVZVdnlQOEtDWnJDCistQWlOeW9EUDg1VCtoQlphU1hLM2FZR3BWd2Vs eWozYnZvMUdyVE53TldMdz0KKy0tLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQorKy0tLS0t QkVHSU4gUFJJVkFURSBLRVktLS0tLQorK01JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVND Q1N3d2dna29BZ0VBQW9JQ0FRRG9sS2VmaE9HNWFMaWgKKysrNnZxMVRVZkRhR0Y5bDVBVnZxdnE2 Y3RjN3ViTEVVczI2c1FJdzhmWFpJYmUwSlozMVpRMDlOQ2I2VGxuWHJqCisrNkorZmRlWG5VRWJH T0ZKNWVwaWg5dmEydHpyVkd0ZjhnaVY3QmxTVXlnbys1T0FjVytabWMyLzMwNVdaN1RDMworK1V5 QVRIMUc4T3RoU29xOVZveWlIQ2ZYd3FCdkNXaG5pbFR1RVllYWRIczNlRkZGQ0hhOVFWNWVUYW5h c3RyMHoKKytMQkE1NHpyQTkzb0pML0NOa2lqZUR1cC93dDhGbUtURGxtR1pCcUdZaXMrNnliUDR2 M3MrMjdGZXlaY0hjMDVZCisrYVNjNUhEa2xSUVQraVpSRHNVelRjV2RjTFNzdXo3V1JwckVrZ0U2 dG51dm04Ti9BSGpxZEY1ODg2bkJvN1F3NgorK0h3WmsremhjMlZvMHZWV1V1dmd6am50a0IxcFh0 WndoM0I4aCtKTHVpRVpiSy9jWkVUUUNKVG41N3h4OGFpVkgKKytwNkhtbWVLRUE0d2dTa3RTbDhv Q1R2N1Mrd1MwMEZaLzhTdFJKajd5alo0ODFwT0xVVDU0bTFJWWJPZXQrYXFUCisrbFAyRDZoUVlk U1kxYTdtVzdGbkF3SVVYSHNOTHNUalZ6bXZSUHVKYmJVUGNrbUd0UUM3MXFpYmdGKzRMdGdiQQor K1RDOHFuNXZOZFdKd093aUJUTWp2aDVhcHBDeFg3K1MvOFNFUUYwZTVkdW1CanRGY0Z3aG96SDgr RFZUekRKSHUKKytKd2U2bXZUWktWMEFVQ2pKck4wTTNlU1Z0Qjh2VWJvK1R2QmozQldabGRMY0kz ZGJpVHcvM0FJNUZpMmw0M1RiCisrQ2Rla0ZuTnA0SVVFVXVoMktpa1Yrby9nbHpzYnFRSURBUUFC QW9JQ0FGdzFxNnRyNUk0OHZZN0RGK3JYc3VMbgorKzVaVVdFMUlRNmZ6QjRscjcybkp2LzlFRUdu TWdZenQ5UHBNVXNENnZkQ3BCZ1MyQzArNlJIQXJGekp0TkErUk0KKytpSExJRzdLNzcwMnZleXIv eEJ4L013aVNsTWVNdi9YcGtGeFZJNkU2c2tNR0cyczNBTVh4S3ZKVHk1Q3BSeCtJCisrZVFGeUxH K1lhMVgybGdKZXMvcSsvQ3BBSGtPakNPcGNMeVNRQzVOWjc0cTczNFY3blNkbW4rWnMzdFlFaCtP LworK2VpdXdUUC9qNWIzOFRlNXZWVHFEeFRjaUpQbWxqbVhMQ3dhME4xMDBsV2xiY3B2dzhxYnFp VEkySm0zWENiVUUKKytBekhqVzl2bXJGM2NSUzFmWHhLRkdTaHczU1JxbGtieGpmZVdvaThxRFBV QlM0bThMT3I4cUc5V281TmZvbjB6CisrekxQNGJjaTN6SER2VmNhYVpycnNVQnMveVpiZytEZ2th MURtWDdla21lY2NyMnlUZEtERmdQdXBZVXl4VmJUbAorK2E5WkxKeXNqRkQ3cmdCdjFaY2xIb25M cDZWYm0rWm9UcXZ0ZW80aWtBeTZMOVJ0QldKMjNYRUszNFBrUC8rYzUKKysydldaYU9ybmpTZUJI YkZjZThjZEpTeHFXcFArZVNDSTVJOVhiRHJZRklzUS9ncUtndHpES3kyaWhKMlk4U1RMCisreU80 aHlGUEZqeGMrR2c0L1AyUHBtVDVDWTJ0eTQ0TTBCV3MrSkdXOTZDSlBycnBsZjJsbVFVUUpqNUxa WTY2WAorK1ovNEM5TDdaWXRLWiticzVTdlU0NnlXdWdBdlFaWDIyWG05eExYV3lWWFJkeDNiaisz TTNmRG5GOWRpL3pkYmgKKytDZ0x4N29XUE5yWGM3RkNham5uOUFvSUJBUUQ1Rk1Zd1JwdzlOV1Q5 V0R4UXd4K2NTSTRJY2JkODhCeVRXNjNTCisrTHplUndaQTBKOS9TZndPK2FCUnVwemM5R2tHWENp WmNHTXczQUdzQ3RpZzh5Rmx3OEU1S256TjdLbGZ0RE1uTQorKzlOVXh4emxSOFZ3S3lMblpmRzdz RFRsMDU3WmxVdWpucWhtdC9GOEY3ZEl5N0ZWTzFkRS84bm5nQStGWVRDT0cKKytVWmRHand5QkRs RE0wSkpkVVdHWTN4c2x1dGNwQ0RONW16U1RLank5ZHJNdkltQXNoUmF3eFJGNldCcG43dnIyCisr bkM2dmNpcWZ4MU16eDF2eWswSm0waWxheWREZExNQURqdC9pTDROa3IwQkVzNGsrVXpRaUtEd3A4 Z3U3YWJRMQorK2VCZnhkOUlhcjRodFFhMkkxRXdsNlAwMUcvcStaWXdnSGhKOVJWbjRBeFFYZWZJ TEFvSUJBUUR2Q291T1JkUVgKKytDOHdzeXA3TXdYbEYvM05RZU5ONS8rQjJtaGJ4ckJPZjdQbU1D WExua1JXY2p3SnR6eXBXRnFKMHNxYWkvMiswCisrYnFiTWNqWDVtYVQ4c3RUMnNobDN6WGUvRWp0 MmUzVEJZcGMxdHl1c2VzOEtiNUJNVThodTZ0VGQzRzJDTVhwRAorK2RUNkRWZW1KWkNUdHdqOWFC Tkl4U2l6dmxnTW9sSm5DcHpoUG5sZkhTSTZFK2czbS9MVFRvM0h3YmpNU3cvVXEKKytpcmdqT3BJ MndTQkI2TFpQU2dqdmZjWVBSeVdVazE2TDRBNXVTWDBjQURub3ZERkxhNS9oMHdKdk4vT29DU1Fn CisrckxDWEc1RTE4RXlMNVdjNThCQ1kxWnZ4bWpHM2xRdGdQeFl1Mkp3YzM2Ui95L0pLbHhXNXN1 RVI1Wk5wYmJENAorK3VPeVR0MlZ4TVEyYkFvSUJBUUM1K016UkZxZG8vQWpmTDVZNUpyYmZWVHpY Q1REYTA5eENHZDE2WlU2MFFUV04KKysrNGVkL3IrbzFzVUtxVWNSRkIyTXpFTS8yRFFCalFwWkIv Q2JFV3ZXYTFYSldYeHlwWGJvd3ZlWlUrUXFPbm1OCisrdVF2ajhXTHlBM28rUE5GOWU5UXZhdXdD ckhwbjhWcHhidFBXdWFZb0tuVUZyZUZaWlF4SGhQR3hSQklTMkpPWgorK2VEclQ4WmFXbmtDa2gx QVpwNXNtUTcxTE9wclNsbUtyZzRqZDFHakNWTXhRUjVONUtYYnR5djBPVENaL1VGcUsKKysyYVJC c01QeUpna2FCQ2hrWlBMUmNLd2MrL3dsUVJ4MWZIUWIxNEROVEFwTXhvWEZPN2VPd3FtT2twQXQ5 aXlsCisrU0JJd29TMFVVSTVhYjg4K2JCbVhOdktjdUZkTnVRNG5vd1RKVW45cEFvSUJBRE1Oa0lM QlhTdlM1RGVJeXVPMgorK1NwMXRrb1pVVis1TmZQWTNzTURLM0tJaWJhVy8rdCtFT0JabzRMN3RL UUNiOHZSemwyMW1tc2Z4ZmdSYVBEYmoKKyszcjN0djlnMGI0WUx4eEJ5NTJwRnNjai9zb1hSYWkx N1NTN1Vad0EyUUsrWHpnRFliRGNMTkM2bUlzVFFHNEd4CisrZHNXazMvenMzS3VVU1FhZWhtd3JX SytmSVVLMzhjMXBMSzh2N0xveHJMa3F4bEh3WjA0UnRoSHc4S1R0aEg3WAorK1BubDFKMExGOENT ZU95ZldMU3VQVWZrVDBHRXpwdG5OSHBFYmFIZlFNNlI2ZWFHaFZKUEY2QVptZTR5NllZZ2cKKytt MmloaFN0MW4wWFZFV3BIWVdqeEZ5M21LMm16NzV1bkZDNExNK05FWTJwMnp1VVFvQ3c3TmpuWTNR WXJmQ254CisrclJNQ2dnRUFYZVhzTVNMRmpqeXVvTDdpS2JBeG81MkhEL1AwZkJveTU4THlSY3dm TlZyMGx2WWFuNHBZRXgrbworK0tpakloOUsxNlBxWFpYS01BOXYwMDNCK3VsbUY4Yko3U2RkQ1o1 Tkd2bkZoVVREZTREZFRLZ3AyUnV3UTNCc2MKKyszc2tQSURiaFZFVHlPTEN0eXMzNFVTSHJxOFUv MERsR1kzZUxSZnh3OUduYkt4U0JHYS9LRXUvcVFMUE5VbzUwCisrN3hIWkRnN0dLZUMza3FOSmVx S005cmtwMFZ6SUdrRW5hRDkxMjdMZU5EbUVSRGZmdHhKekZvQy9USHZVQkxmVQorKzZTdXMyWll3 UkU4VkZ2S0MzMFE0NXQvYzU0WDNJdWhZdkF1aUN1VG15ZkU0cnV5enlPd0t6aFVrZWVMcTFBUFgK KytnMHZlRmJ5ZnpsSjBxOHF6RC9pZmZxcUlhMlpTbVE9PQorKy0tLS0tRU5EIFBSSVZBVEUgS0VZ LS0tLS0KK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9vdGhlci9xYWNjZXNzaWJpbGl0 eWxpbnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL290 aGVyL3FhY2Nlc3NpYmlsaXR5bGludXgvdHN0X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwCitpbmRl eCA3YmEzNzE1ZTEzLi43NTJhYTEyMmY2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8v b3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3RfcWFjY2Vzc2liaWxpdHlsaW51eC5jcHAKKysr KyBiL3F0YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3NpYmlsaXR5bGludXgvdHN0X3FhY2Nl c3NpYmlsaXR5bGludXguY3BwCitAQCAtMTc5LDYgKzE3OSw3IEBAIHZvaWQgdHN0X1FBY2Nlc3Np YmlsaXR5TGludXg6OmluaXRUZXN0Q2FzZSgpCisgICAgIFFWRVJJRlkoIWFkZHJlc3MuaXNFbXB0 eSgpKTsKKyAKKyAgICAgbV93aW5kb3cgPSBuZXcgQWNjZXNzaWJsZVRlc3RXaW5kb3coKTsKKysg ICAgbV93aW5kb3ctPnNldE9iamVjdE5hbWUoIm1haW5XaW5kb3ciX0wxKTsKKyAgICAgbV93aW5k b3ctPnNob3coKTsKKyAKKyAgICAgUVZFUklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2Vk KG1fd2luZG93KSk7CitAQCAtMjM2LDggKzIzNywxMSBAQCBib29sIGhhc1N0YXRlKFFEQnVzSW50 ZXJmYWNlICppbnRlcmZhY2UsIEF0c3BpU3RhdGVUeXBlIHN0YXRlKQorIHZvaWQgdHN0X1FBY2Nl c3NpYmlsaXR5TGludXg6OnRlc3RMYWJlbCgpCisgeworICAgICBRTGFiZWwgKmwgPSBuZXcgUUxh YmVsKG1fd2luZG93KTsKKysgICAgbC0+c2V0T2JqZWN0TmFtZSgidGhlT2JqZWN0TmFtZSJfTDEp OworICAgICBsLT5zZXRUZXh0KCJIZWxsbyBBMTF5Iik7CisgICAgIG1fd2luZG93LT5hZGRXaWRn ZXQobCk7CisrICAgIGF1dG8gYTExeUVtcHR5ID0gbmV3IFFMYWJlbChtX3dpbmRvdyk7CisrICAg IG1fd2luZG93LT5hZGRXaWRnZXQobCk7CisgCisgICAgIC8vIEFwcGxpY2F0aW9uCisgICAgIFFD T01QQVJFKGdldFBhcmVudChtYWluV2luZG93KSwgUUxhdGluMVN0cmluZyhBVFNQSV9EQlVTX1BB VEhfUk9PVCkpOworQEAgLTI0OSw2ICsyNTMsOCBAQCB2b2lkIHRzdF9RQWNjZXNzaWJpbGl0eUxp bnV4Ojp0ZXN0TGFiZWwoKQorICAgICBRQ09NUEFSRShnZXRDaGlsZHJlbihsYWJlbEludGVyZmFj ZSkuY291bnQoKSwgMCk7CisgICAgIFFDT01QQVJFKGxhYmVsSW50ZXJmYWNlLT5jYWxsKFFEQnVz OjpCbG9jaywgIkdldFJvbGVOYW1lIikuYXJndW1lbnRzKCkuZmlyc3QoKS50b1N0cmluZygpLCBR TGF0aW4xU3RyaW5nKCJsYWJlbCIpKTsKKyAgICAgUUNPTVBBUkUobGFiZWxJbnRlcmZhY2UtPmNh bGwoUURCdXM6OkJsb2NrLCAiR2V0Um9sZSIpLmFyZ3VtZW50cygpLmZpcnN0KCkudG9VSW50KCks IDI5dSk7CisrICAgIFFDT01QQVJFKGxhYmVsSW50ZXJmYWNlLT5jYWxsKFFEQnVzOjpCbG9jaywg IkdldEFjY2Vzc2libGVJZCIpLmFyZ3VtZW50cygpLmZpcnN0KCkudG9TdHJpbmcoKSwKKysgICAg ICAgICAgICAgUUxhdGluMVN0cmluZygibWFpbldpbmRvdy50aGVPYmplY3ROYW1lIikpOworICAg ICBRQ09NUEFSRShnZXRQYXJlbnQobGFiZWxJbnRlcmZhY2UpLCBtYWluV2luZG93LT5wYXRoKCkp OworICAgICBRVkVSSUZZKCFoYXNTdGF0ZShsYWJlbEludGVyZmFjZSwgQVRTUElfU1RBVEVfRURJ VEFCTEUpKTsKKyAgICAgUVZFUklGWShoYXNTdGF0ZShsYWJlbEludGVyZmFjZSwgQVRTUElfU1RB VEVfUkVBRF9PTkxZKSk7CitAQCAtMjU2LDcgKzI2MiwxMiBAQCB2b2lkIHRzdF9RQWNjZXNzaWJp bGl0eUxpbnV4Ojp0ZXN0TGFiZWwoKQorICAgICBsLT5zZXRUZXh0KCJOZXcgdGV4dCIpOworICAg ICBRQ09NUEFSRShsYWJlbEludGVyZmFjZS0+cHJvcGVydHkoIk5hbWUiKS50b1N0cmluZygpLCBs LT50ZXh0KCkpOworIAorKyAgICBhdXRvICphMTF5RW1wdHlJbnRlcmZhY2UgPSBnZXRJbnRlcmZh Y2UoY2hpbGRyZW4uYXQoMSksICJvcmcuYTExeS5hdHNwaS5BY2Nlc3NpYmxlIik7CisrICAgIFFD T01QQVJFKGExMXlFbXB0eUludGVyZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ssICJHZXRBY2Nlc3Np YmxlSWQiKS5hcmd1bWVudHMoKS5maXJzdCgpLnRvU3RyaW5nKCksCisrICAgICAgICAgICAgIFFM YXRpbjFTdHJpbmcoIm1haW5XaW5kb3cuUUxhYmVsIikpOworKworICAgICBtX3dpbmRvdy0+Y2xl YXJDaGlsZHJlbigpOworKyAgICBkZWxldGUgYTExeUVtcHR5SW50ZXJmYWNlOworICAgICBkZWxl dGUgbGFiZWxJbnRlcmZhY2U7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRv L3NxbC9rZXJuZWwvcXNxbHF1ZXJ5L3RzdF9xc3FscXVlcnkuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vc3FsL2tlcm5lbC9xc3FscXVlcnkvdHN0X3FzcWxxdWVyeS5jcHAKK2luZGV4IDc2ZGY2MWM4 OTIuLjZkNmQ2NWI3OTEgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9zcWwva2VybmVs L3FzcWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vc3Fs L2tlcm5lbC9xc3FscXVlcnkvdHN0X3FzcWxxdWVyeS5jcHAKK0BAIC0xLDYgKzEsNiBAQAorIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENv bXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgUXQgQ29tcGFueSBMdGQuCisg KiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIHRlc3Qgc3VpdGUgb2YgdGhlIFF0IFRvb2xraXQuCitAQCAtNjgs NiArNjgsOCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHF1ZXJ5X2V4ZWMoKTsKKyAgICAg dm9pZCBleGVjRXJyb3JSZWNvdmVyeV9kYXRhKCkgeyBnZW5lcmljX2RhdGEoKTsgfQorICAgICB2 b2lkIGV4ZWNFcnJvclJlY292ZXJ5KCk7CisrICAgIHZvaWQgcHJlbWF0dXJlRXhlY19kYXRhKCkg eyBnZW5lcmljX2RhdGEoKTsgfQorKyAgICB2b2lkIHByZW1hdHVyZUV4ZWMoKTsKKyAgICAgdm9p ZCBmaXJzdF9kYXRhKCkgeyBnZW5lcmljX2RhdGEoKTsgfQorICAgICB2b2lkIGZpcnN0KCk7Cisg ICAgIHZvaWQgbmV4dF9kYXRhKCkgeyBnZW5lcmljX2RhdGEoKTsgfQorQEAgLTI3NzAsNiArMjc3 MiwzNSBAQCB2b2lkIHRzdF9RU3FsUXVlcnk6OmV4ZWNFcnJvclJlY292ZXJ5KCkKKyAgICAgUVZF UklGWV9TUUwoIHEsIGV4ZWMoKSApOworIH0KKyAKKyt2b2lkIHRzdF9RU3FsUXVlcnk6OnByZW1h dHVyZUV4ZWMoKQorK3sKKysgICAgUUZFVENIKFFTdHJpbmcsIGRiTmFtZSk7CisrICAgIC8vIFdl IG9ubHkgd2FudCB0aGUgZW5naW5lIG5hbWUsIGZvciBhZGREYXRhYmFzZSgpOgorKyAgICBpbnQg Y3V0ID0gZGJOYW1lLmluZGV4T2YoUUNoYXIoJ0AnKSk7CisrICAgIGlmIChjdXQgPCAwKQorKyAg ICAgICAgUVNLSVAoIkZhaWxlZCB0byBwYXJzZSBkYXRhYmFzZSB0eXBlIG91dCBvZiBuYW1lIik7 CisrICAgIGRiTmFtZS50cnVuY2F0ZShjdXQpOworKyAgICBjdXQgPSBkYk5hbWUuaW5kZXhPZihR Q2hhcignXycpKTsKKysgICAgaWYgKGN1dCA+PSAwKQorKyAgICAgICAgZGJOYW1lID0gZGJOYW1l Lm1pZChjdXQgKyAxKTsKKysKKysgICAgYXV0byBkYiA9IFFTcWxEYXRhYmFzZTo6YWRkRGF0YWJh c2UoZGJOYW1lKTsKKysgICAgUVNxbFF1ZXJ5IHEoZGIpOworKworKyAgICBRVGVzdDo6aWdub3Jl TWVzc2FnZShRdFdhcm5pbmdNc2csCisrICAgICAgICAgICAgICAgICAgICAgICAgICJRU3FsRGF0 YWJhc2VQcml2YXRlOjpyZW1vdmVEYXRhYmFzZTogY29ubmVjdGlvbiAiCisrICAgICAgICAgICAg ICAgICAgICAgICAgICIncXRfc3FsX2RlZmF1bHRfY29ubmVjdGlvbicgaXMgc3RpbGwgaW4gdXNl LCBhbGwgIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAicXVlcmllcyB3aWxsIGNlYXNlIHRv IHdvcmsuIik7CisrICAgIFFUZXN0OjppZ25vcmVNZXNzYWdlKFF0V2FybmluZ01zZywKKysgICAg ICAgICAgICAgICAgICAgICAgICAgIlFTcWxEYXRhYmFzZVByaXZhdGU6OmFkZERhdGFiYXNlOiBk dXBsaWNhdGUgY29ubmVjdGlvbiBuYW1lICIKKysgICAgICAgICAgICAgICAgICAgICAgICAgIidx dF9zcWxfZGVmYXVsdF9jb25uZWN0aW9uJywgb2xkIGNvbm5lY3Rpb24gcmVtb3ZlZC4iKTsKKysg ICAgYXV0byBvdGhlckRiID0gUVNxbERhdGFiYXNlOjphZGREYXRhYmFzZShkYk5hbWUpOworKwor KyAgICBRVGVzdDo6aWdub3JlTWVzc2FnZShRdFdhcm5pbmdNc2csICJRU3FsUXVlcnk6OmV4ZWM6 IGNhbGxlZCBiZWZvcmUgZHJpdmVyIGhhcyBiZWVuIHNldCB1cCIpOworKyAgICAvLyBRVEJVRy0x MDAwMzc6IHNob3VsZG4ndCBjcmFzaCAhCisrICAgIFFWRVJJRlkoIXEuZXhlYygic2VsZWN0IHN0 dWZmIGZyb20gVGhlVm9pZCIpKTsKKyt9CisrCisgdm9pZCB0c3RfUVNxbFF1ZXJ5OjpsYXN0SW5z ZXJ0SWQoKQorIHsKKyAgICAgUUZFVENIKCBRU3RyaW5nLCBkYk5hbWUgKTsKK2RpZmYgLS1naXQg YS9xdGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci90c3Rf cWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rlc3RsaWIv cWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3Bw CitpbmRleCA0YWEzZjhkNjBiLi5kMjA1MGE2MWFhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3Rz L2F1dG8vdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0ZW1t b2RlbHRlc3Rlci5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rlc3RsaWIvcWFic3RyYWN0 aXRlbW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCitAQCAtMTE1 LDYgKzExNSwxMCBAQCB2b2lkIHRzdF9RQWJzdHJhY3RJdGVtTW9kZWxUZXN0ZXI6OnN0YW5kYXJk SXRlbU1vZGVsWmVyb0NvbHVtbnMoKQorICAgICAvLyBRVEJVRy05Mjg4NgorICAgICBtb2RlbC5p bnNlcnRSb3dzKDAsIDUpOworICAgICBtb2RlbC5yZW1vdmVSb3dzKDEsIDIpOworKworKyAgICBj b25zdCBRTW9kZWxJbmRleCBwYXJlbnRJbmRleCA9IG1vZGVsLmluZGV4KDAsIDApOworKyAgICBt b2RlbC5pbnNlcnRSb3dzKDAsIDUsIHBhcmVudEluZGV4KTsKKysgICAgbW9kZWwucmVtb3ZlUm93 cygxLCAyLCBwYXJlbnRJbmRleCk7CisgfQorIAorIHZvaWQgdHN0X1FBYnN0cmFjdEl0ZW1Nb2Rl bFRlc3Rlcjo6dGVzdEluc2VydFRocm91Z2hQcm94eSgpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVfaW4uanNvbiBiL3F0YmFzZS90ZXN0 cy9hdXRvL3Rvb2xzL21vYy9hbGxtb2NzX2Jhc2VsaW5lX2luLmpzb24KK2luZGV4IDEyYTRhMjJh MTkuLmNlNTE4ZTc4ZmIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2Mv YWxsbW9jc19iYXNlbGluZV9pbi5qc29uCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9t b2MvYWxsbW9jc19iYXNlbGluZV9pbi5qc29uCitAQCAtNjY4LDUwICs2NjgsNiBAQAorICAgICAg ICAgImlucHV0RmlsZSI6ICJ0YXNrMTkyNTUyLmgiLAorICAgICAgICAgIm91dHB1dFJldmlzaW9u IjogNjcKKyAgICAgfSwKKy0gICAgeworLSAgICAgICAgImNsYXNzZXMiOiBbCistICAgICAgICAg ICAgeworLSAgICAgICAgICAgICAgICAiY2xhc3NOYW1lIjogIklubGluZVNsb3RzV2l0aFRocm93 RGVjbGFyYXRpb24iLAorLSAgICAgICAgICAgICAgICAib2JqZWN0IjogdHJ1ZSwKKy0gICAgICAg ICAgICAgICAgInF1YWxpZmllZENsYXNzTmFtZSI6ICJJbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xh cmF0aW9uIiwKKy0gICAgICAgICAgICAgICAgInNsb3RzIjogWworLSAgICAgICAgICAgICAgICAg ICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhIiwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfSwKKy0gICAgICAg ICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1Ymxp YyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYiIsCistICAgICAgICAgICAg ICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAgICAgICAgIH0s CistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFjY2Vz cyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImMiLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiCistICAgICAgICAgICAg ICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAg ICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6 ICJkIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAg ICAgICAgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAg ICAgICAgICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAg ICAgIm5hbWUiOiAiZSIsCistICAgICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5cGUiOiAi dm9pZCIKKy0gICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgXSwKKy0gICAg ICAgICAgICAgICAgInN1cGVyQ2xhc3NlcyI6IFsKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0g ICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAgICAgICAg ICAgICAgICAgICAgIm5hbWUiOiAiUU9iamVjdCIKKy0gICAgICAgICAgICAgICAgICAgIH0KKy0g ICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAgIH0KKy0gICAgICAgIF0sCistICAgICAgICAi aW5wdXRGaWxlIjogInRhc2sxODk5OTYuaCIsCistICAgICAgICAib3V0cHV0UmV2aXNpb24iOiA2 NworLSAgICB9LAorICAgICB7CisgICAgICAgICAiY2xhc3NlcyI6IFsKKyAgICAgICAgICAgICB7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL21vYy5wcm8gYi9xdGJh c2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBybworaW5kZXggYzMyNGIzYThjZC4uNGFjZWI3 OGRjMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9tb2MucHJvCisr KysgYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBybworQEAgLTE1LDcgKzE1LDcg QEAgY3Jvc3NfY29tcGlsZTogREVGSU5FUyArPSBNT0NfQ1JPU1NfQ09NUElMRUQKKyBIRUFERVJT ICs9IHVzaW5nLW5hbWVzcGFjZXMuaCBuby1rZXl3b3Jkcy5oIHRhc2s4Nzg4My5oIGMtY29tbWVu dHMuaCBiYWNrc2xhc2gtbmV3bGluZXMuaCBvbGRzdHlsZS1jYXN0cy5oIFwKKyAgICAgICAgICAg IHNsb3RzLXdpdGgtdm9pZC10ZW1wbGF0ZS5oIHFpbnZva2FibGUuaCBuYW1lc3BhY2VkLWZsYWdz LmggdHJpZ3JhcGhzLmggXAorICAgICAgICAgICAgZXNjYXBlcy1pbi1zdHJpbmctbGl0ZXJhbHMu aCBjc3R5bGUtZW51bXMuaCBxcHJpdmF0ZXNsb3RzLmggZ2FkZ2V0d2l0aG5vZW51bXMuaCBcCist ICAgICAgICAgICBkaXItaW4taW5jbHVkZS1wYXRoLmggc2luZ2xlX2Z1bmN0aW9uX2tleXdvcmQu aCB0YXNrMTkyNTUyLmggdGFzazE4OTk5Ni5oIFwKKysgICAgICAgICAgIGRpci1pbi1pbmNsdWRl LXBhdGguaCBzaW5nbGVfZnVuY3Rpb25fa2V5d29yZC5oIHRhc2sxOTI1NTIuaCBcCisgICAgICAg ICAgICB0YXNrMjM0OTA5LmggdGFzazI0MDM2OC5oIHB1cmUtdmlydHVhbC1zaWduYWxzLmggY3h4 MTEtZW51bXMuaCBcCisgICAgICAgICAgICBjeHgxMS1maW5hbC1jbGFzc2VzLmggXAorICAgICAg ICAgICAgY3h4MTEtZXhwbGljaXQtb3ZlcnJpZGUtY29udHJvbC5oIFwKK2RpZmYgLS1naXQgYS9x dGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdGFzazE4OTk5Ni5oIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vdG9vbHMvbW9jL3Rhc2sxODk5OTYuaAorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCBmOTRhMDUxYjNhLi4wMDAwMDAwMDAwCistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9t b2MvdGFzazE4OTk5Ni5oCisrKysgL2Rldi9udWxsCitAQCAtMSw0NyArMCwwIEBACistLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKy0qKgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29tcGFu eSBMdGQuCistKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworLSoqCist KiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRlc3Qgc3VpdGUgb2YgdGhlIFF0IFRvb2xraXQu CistKioKKy0qKiAkUVRfQkVHSU5fTElDRU5TRTpHUEwtRVhDRVBUJAorLSoqIENvbW1lcmNpYWwg TGljZW5zZSBVc2FnZQorLSoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQg bGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKy0qKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNv bW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKy0qKiBTb2Z0d2Fy ZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWlu ZWQgaW4KKy0qKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29t cGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworLSoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczov L3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorLSoqIGluZm9ybWF0aW9u IHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCist KioKKy0qKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorLSoqIEFsdGVybmF0aXZl bHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorLSoq IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZQorLSoqIEZvdW5kYXRpb24gd2l0aCBleGNlcHRpb25zIGFzIGFwcGVhcmluZyBp biB0aGUgZmlsZSBMSUNFTlNFLkdQTDMtRVhDRVBUCistKiogaW5jbHVkZWQgaW4gdGhlIHBhY2th Z2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworLSoqIGluZm9y bWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1l bnRzIHdpbGwKKy0qKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMu MC5odG1sLgorLSoqCistKiogJFFUX0VORF9MSUNFTlNFJAorLSoqCistKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKy0vLyBpbmxpbmUgZnVuY3Rpb25zIGNhbiBoYXZlIHRocm93IGRlY2xhcmF0aW9ucwor LQorLSNpZm5kZWYgVEFTSzE4OTk5Nl9ICistI2RlZmluZSBUQVNLMTg5OTk2X0gKKy0KKy0jaW5j bHVkZSA8UU9iamVjdD4KKy0KKy1jbGFzcyBJbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9u IDogcHVibGljIFFPYmplY3QKKy17CistICAgIFFfT0JKRUNUCistCistcHVibGljIHNsb3RzOgor LSAgICB2b2lkIGEoKSB0aHJvdygpIHsgfQorLSAgICB2b2lkIGIoKSBjb25zdCB0aHJvdygpIHsg fQorLSAgICB2b2lkIGMoKSB0aHJvdygpOworLSAgICB2b2lkIGQoKSB0aHJvdyhpbnQpIHsgfQor LSAgICB2b2lkIGUoKSBjb25zdCB0aHJvdyhpbnQsZG91YmxlKSB7IH0KKy19OworLQorLSNlbmRp ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90c3RfbW9jLmNwcCBi L3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90c3RfbW9jLmNwcAoraW5kZXggYzcxNmFlYWQy MS4uMTVkZDllNDFlNSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90 c3RfbW9jLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3RzdF9tb2MuY3Bw CitAQCAtNjMxLDcgKzYzMSw2IEBAIHB1YmxpYzoKKyBwcml2YXRlIHNsb3RzOgorICAgICB2b2lk IGluaXRUZXN0Q2FzZSgpOworIAorLSAgICB2b2lkIHNsb3RXaXRoRXhjZXB0aW9uKCkgdGhyb3co TXlTdHJ1Y3QpOworICAgICB2b2lkIGRvbnRTdHJpcE5hbWVzcGFjZXMoKTsKKyAgICAgdm9pZCBv bGRTdHlsZUNhc3RzKCk7CisgICAgIHZvaWQgd2Fybk9uRXh0cmFTaWduYWxTbG90UXVhbGlmaWFj dGlvbigpOworQEAgLTY3Myw3ICs2NzIsNiBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHRl bXBsYXRlR3RHdCgpOworICAgICB2b2lkIHFwcml2YXRlc2xvdHMoKTsKKyAgICAgdm9pZCBxcHJp dmF0ZXByb3BlcnRpZXMoKTsKKy0gICAgdm9pZCBpbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0 aW9uKCk7CisgICAgIHZvaWQgd2Fybk9uUHJvcGVydHlXaXRob3V0UkVBRCgpOworICAgICB2b2lk IGNvbnN0cnVjdG9ycygpOworICAgICB2b2lkIHR5cGVuYW1lV2l0aFVuc2lnbmVkKCk7CitAQCAt Nzg0LDEyICs3ODIsNiBAQCB2b2lkIHRzdF9Nb2M6OmluaXRUZXN0Q2FzZSgpCisgI2VuZGlmCisg fQorIAorLXZvaWQgdHN0X01vYzo6c2xvdFdpdGhFeGNlcHRpb24oKSB0aHJvdyhNeVN0cnVjdCkK Ky17CistICAgIC8vIGJlIGhhcHB5CistICAgIFFWRVJJRlkodHJ1ZSk7CistfQorLQorIHZvaWQg dHN0X01vYzo6ZG9udFN0cmlwTmFtZXNwYWNlcygpCisgeworICAgICBTZW5kZXIgc2VuZGVyOwor QEAgLTgyNCw3ICs4MTYsNyBAQCB2b2lkIHRzdF9Nb2M6Om9sZFN0eWxlQ2FzdHMoKQorIAorICAg ICBRU3RyaW5nTGlzdCBhcmdzOworICAgICBhcmdzIDw8ICItYyIgPDwgIi14IiA8PCAiYysrIiA8 PCAiLVdvbGQtc3R5bGUtY2FzdCIgPDwgIi1JIiA8PCAiLiIKKy0gICAgICAgICA8PCAiLUkiIDw8 IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3Rk PWMrKzExIiA8PCAiLSI7CisrICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICIt byIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxeiIgPDwgIi0iOworICAg ICBwcm9jLnN0YXJ0KCJnY2MiLCBhcmdzKTsKKyAgICAgUVZFUklGWShwcm9jLndhaXRGb3JTdGFy dGVkKCkpOworICAgICBwcm9jLndyaXRlKG1vY091dCk7CitAQCAtODk0LDcgKzg4Niw3IEBAIHZv aWQgdHN0X01vYzo6aW5wdXRGaWxlTmFtZVdpdGhEb3RzQnV0Tm9FeHRlbnNpb24oKQorIAorICAg ICBRU3RyaW5nTGlzdCBhcmdzOworICAgICBhcmdzIDw8ICItYyIgPDwgIi14IiA8PCAiYysrIiA8 PCAiLUkiIDw8ICIuLiIKKy0gICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1v IiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzExIiA8PCAiLSI7CisrICAg ICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwg Ii1mUElDIiA8PCAiLXN0ZD1jKysxeiIgPDwgIi0iOworICAgICBwcm9jLnN0YXJ0KCJnY2MiLCBh cmdzKTsKKyAgICAgUVZFUklGWShwcm9jLndhaXRGb3JTdGFydGVkKCkpOworICAgICBwcm9jLndy aXRlKG1vY091dCk7CitAQCAtMTE3NCw3ICsxMTY2LDcgQEAgdm9pZCB0c3RfTW9jOjppZ25vcmVP cHRpb25DbGFzaGVzKCkKKyAgICAgUVN0cmluZ0xpc3QgZ2NjQXJnczsKKyAgICAgZ2NjQXJncyA8 PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1JIiA8PCAiLi4iCisgICAgICAgICAgPDwgIi1J IiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItSSIgPDwgaW5jbHVkZURpciA8PCAiLW8iIDw8ICIvZGV2 L251bGwiCistICAgICAgICAgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxMSIgPDwgICItIjsKKysg ICAgICAgICA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8PCAgIi0iOworICAgICBwcm9jLnN0 YXJ0KCJnY2MiLCBnY2NBcmdzKTsKKyAgICAgUVZFUklGWShwcm9jLndhaXRGb3JTdGFydGVkKCkp OworICAgICBwcm9jLndyaXRlKG1vY091dCk7CitAQCAtMTU5MywyMSArMTU4NSw2IEBAIHZvaWQg dHN0X01vYzo6cXByaXZhdGVwcm9wZXJ0aWVzKCkKKyAKKyB9CisgCistI2luY2x1ZGUgInRhc2sx ODk5OTYuaCIKKy0KKy12b2lkIElubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb246OmMoKSB0 aHJvdygpIHt9CistCistdm9pZCB0c3RfTW9jOjppbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0 aW9uKCkKKy17CistICAgIElubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24gdHN0OworLSAg ICBjb25zdCBRTWV0YU9iamVjdCAqbW9iaiA9IHRzdC5tZXRhT2JqZWN0KCk7CistICAgIFFWRVJJ RlkobW9iai0+aW5kZXhPZlNsb3QoImEoKSIpICE9IC0xKTsKKy0gICAgUVZFUklGWShtb2JqLT5p bmRleE9mU2xvdCgiYigpIikgIT0gLTEpOworLSAgICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90 KCJjKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3QoImQoKSIpICE9 IC0xKTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgiZSgpIikgIT0gLTEpOworLX0K Ky0KKyB2b2lkIHRzdF9Nb2M6Ondhcm5PblByb3BlcnR5V2l0aG91dFJFQUQoKQorIHsKKyAjaWZk ZWYgTU9DX0NST1NTX0NPTVBJTEVECitAQCAtMTg2OSw3ICsxODQ2LDcgQEAgdm9pZCB0c3RfTW9j Ojpub3RpZnlFcnJvcigpCisgCisgICAgIFFTdHJpbmdMaXN0IGFyZ3M7CisgICAgIGFyZ3MgPDwg Ii1jIiA8PCAiLXgiIDw8ICJjKysiIDw8ICItSSIgPDwgIi4iCistICAgICAgICAgPDwgIi1JIiA8 PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0 ZD1jKysxMSIgPDwgIi0iOworKyAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAi LW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMXoiIDw8ICItIjsKKyAg ICAgcHJvYy5zdGFydCgiZ2NjIiwgYXJncyk7CisgICAgIFFWRVJJRlkocHJvYy53YWl0Rm9yU3Rh cnRlZCgpKTsKKyAgICAgcHJvYy53cml0ZShtb2NPdXQpOworZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9xaGVhZGVydmlldy5j cHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xaGVhZGVydmlldy90c3Rf cWhlYWRlcnZpZXcuY3BwCitpbmRleCBjMzU1ZWU5NjY1Li44OGMwOWRlOGUwIDEwMDY0NAorLS0t IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0X3Fo ZWFkZXJ2aWV3LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3Mv cWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3LmNwcAorQEAgLTI1MSw2ICsyNTEsNyBAQCBwcml2 YXRlIHNsb3RzOgorICAgICB2b2lkIHRlc3RSZXNldENhY2hlZFNpemVIaW50KCk7CisgICAgIHZv aWQgc3RhdHVzVGlwcygpOworICAgICB2b2lkIHRlc3RSZW1vdmluZ0NvbHVtbnNWaWFMYXlvdXRD aGFuZ2VkKCk7CisrICAgIHZvaWQgdGVzdE1vZGVsTW92aW5nQ29sdW1ucygpOworIAorIHByb3Rl Y3RlZDoKKyAgICAgdm9pZCBzZXR1cFRlc3REYXRhKGJvb2wgdXNlX3Jlc2V0X21vZGVsID0gZmFs c2UpOworQEAgLTM2MCw2ICszNjEsMTIgQEAgcHVibGljOgorICAgICAgICAgZW5kUmVtb3ZlQ29s dW1ucygpOworICAgICB9CisgCisrICAgIHZvaWQgbW92ZUNvbHVtbihpbnQgZnJvbSwgaW50IHRv KQorKyAgICB7CisrICAgICAgICBiZWdpbk1vdmVDb2x1bW5zKFFNb2RlbEluZGV4KCksIGZyb20s IGZyb20sIFFNb2RlbEluZGV4KCksIHRvKTsKKysgICAgICAgIGVuZE1vdmVDb2x1bW5zKCk7Cisr ICAgIH0KKysKKyAgICAgdm9pZCBjbGVhbnVwKCkKKyAgICAgeworICAgICAgICAgZW1pdCBsYXlv dXRBYm91dFRvQmVDaGFuZ2VkKCk7CitAQCAtMzYyNyw1ICszNjM0LDE4IEBAIHZvaWQgdHN0X1FI ZWFkZXJWaWV3Ojp0ZXN0UmVtb3ZpbmdDb2x1bW5zVmlhTGF5b3V0Q2hhbmdlZCgpCisgICAgIC8v IFRoZSBtYWluIHBvaW50IG9mIHRoaXMgdGVzdCBpcyB0aGF0IHRoZSBzZWN0aW9uLXNpemUgcmVz dG9yaW5nIGNvZGUgZGlkbid0IGdvIG91dCBvZiBib3VuZHMuCisgfQorIAorK3ZvaWQgdHN0X1FI ZWFkZXJWaWV3Ojp0ZXN0TW9kZWxNb3ZpbmdDb2x1bW5zKCkKKyt7CisrICAgIFF0VGVzdE1vZGVs IG1vZGVsKDEwLCAxMCk7CisrICAgIFFIZWFkZXJWaWV3IGh2KFF0OjpIb3Jpem9udGFsKTsKKysg ICAgaHYuc2V0TW9kZWwoJm1vZGVsKTsKKysgICAgaHYucmVzaXplU2VjdGlvbnMoUUhlYWRlclZp ZXc6OlJlc2l6ZVRvQ29udGVudHMpOworKyAgICBodi5zaG93KCk7CisrCisrICAgIFFQZXJzaXN0 ZW50TW9kZWxJbmRleCBpbmRleDMgPSBtb2RlbC5pbmRleCgwLCAzKTsKKysgICAgbW9kZWwubW92 ZUNvbHVtbigzLCAxKTsKKysgICAgUUNPTVBBUkUoaW5kZXgzLmNvbHVtbigpLCAxKTsKKyt9Cisr CisgUVRFU1RfTUFJTih0c3RfUUhlYWRlclZpZXcpCisgI2luY2x1ZGUgInRzdF9xaGVhZGVydmll dy5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3Mv cXRhYmxldmlldy90c3RfcXRhYmxldmlldy5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRz L2l0ZW12aWV3cy9xdGFibGV2aWV3L3RzdF9xdGFibGV2aWV3LmNwcAoraW5kZXggNzYxMzU3YjI1 Mi4uMDZiYjcwNjA3NCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRl bXZpZXdzL3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMv YXV0by93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3L3RzdF9xdGFibGV2aWV3LmNwcAorQEAg LTM5Nyw2ICszOTcsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGNoZWNrSGVhZGVyTWlu U2l6ZSgpOworIAorICAgICB2b2lkIHJlc2l6ZVRvQ29udGVudHMoKTsKKysgICAgdm9pZCByZXNp emVUb0NvbnRlbnRzU3BhbnMoKTsKKyAKKyAgICAgdm9pZCB0YWJGb2N1cygpOworICAgICB2b2lk IGJpZ01vZGVsKCk7CitAQCAtMzcyMSw2ICszNzIyLDcwIEBAIHZvaWQgdHN0X1FUYWJsZVZpZXc6 OnJlc2l6ZVRvQ29udGVudHMoKQorIAorIH0KKyAKKysKKytjbGFzcyBTcGFuTW9kZWwgOiBwdWJs aWMgUUFic3RyYWN0VGFibGVNb2RlbAorK3sKKytwdWJsaWM6CisrICAgIFNwYW5Nb2RlbChib29s IHNlY3Rpb25zTW92ZWQpCisrICAgICAgICA6IF9zZWN0aW9uc01vdmVkKHNlY3Rpb25zTW92ZWQp CisrICAgIHt9CisrICAgIGludCBjb2x1bW5Db3VudChjb25zdCBRTW9kZWxJbmRleCAmID0ge30p IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDI7IH0KKysgICAgaW50IHJvd0NvdW50KGNvbnN0IFFN b2RlbEluZGV4ICYgPSB7fSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMTsgfQorKyAgICBRVmFy aWFudCBkYXRhKGNvbnN0IFFNb2RlbEluZGV4ICZpZHgsIGludCByb2xlID0gUXQ6OkRpc3BsYXlS b2xlKSBjb25zdCBvdmVycmlkZQorKyAgICB7CisrICAgICAgICBpZiAocm9sZSAhPSBRdDo6RGlz cGxheVJvbGUpCisrICAgICAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisrICAgICAgICBjb25z dCBpbnQgY29sID0gX3NlY3Rpb25zTW92ZWQgPyAxIC0gaWR4LmNvbHVtbigpIDogaWR4LmNvbHVt bigpOworKyAgICAgICAgaWYgKGNvbCA9PSAwKQorKyAgICAgICAgICAgIHJldHVybiAiTG9yZW0g aXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRv IGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlx dWEuIjsKKysgICAgICAgIHJldHVybiBRVmFyaWFudCgpOworKyAgICB9CisrcHJpdmF0ZToKKysg ICAgYm9vbCBfc2VjdGlvbnNNb3ZlZDsKKyt9OworKworKworK3ZvaWQgdHN0X1FUYWJsZVZpZXc6 OnJlc2l6ZVRvQ29udGVudHNTcGFucygpCisreworKyAgICBTcGFuTW9kZWwgbW9kZWwxKGZhbHNl KTsKKysgICAgU3Bhbk1vZGVsIG1vZGVsMih0cnVlKTsKKysgICAgUVRhYmxlVmlldyB2aWV3MSwg dmlldzIsIHZpZXczOworKyAgICB2aWV3MS5zZXRNb2RlbCgmbW9kZWwxKTsKKysgICAgdmlldzIu c2V0TW9kZWwoJm1vZGVsMik7CisrICAgIHZpZXcyLmhvcml6b250YWxIZWFkZXIoKS0+bW92ZVNl Y3Rpb24oMCwgMSk7CisrICAgIHZpZXczLnNldE1vZGVsKCZtb2RlbDEpOworKworKyAgICB2aWV3 MS5zZXRTcGFuKDAsIDAsIDEsIDIpOworKyAgICB2aWV3Mi5zZXRTcGFuKDAsIDEsIDEsIDIpOwor KyAgICB2aWV3MS5zaG93KCk7CisrICAgIHZpZXcyLnNob3coKTsKKysgICAgdmlldzMuc2hvdygp OworKyAgICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXcxKSk7Cisr ICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZCgmdmlldzIpKTsKKysgICAg UVZFUklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3MykpOworKyAgICB2aWV3 MS5zZXRDb2x1bW5XaWR0aCgwLCAxMDApOworKyAgICB2aWV3MS5zZXRDb2x1bW5XaWR0aCgxLCAx MDApOworKyAgICB2aWV3Mi5zZXRDb2x1bW5XaWR0aCgwLCAxMDApOworKyAgICB2aWV3Mi5zZXRD b2x1bW5XaWR0aCgxLCAxMDApOworKyAgICB2aWV3My5zZXRDb2x1bW5XaWR0aCgwLCAyMDApOwor KworKyAgICB2aWV3MS5yZXNpemVSb3dUb0NvbnRlbnRzKDApOworKyAgICB2aWV3Mi5yZXNpemVS b3dUb0NvbnRlbnRzKDApOworKyAgICB2aWV3My5yZXNpemVSb3dUb0NvbnRlbnRzKDApOworKyAg ICBRQ09NUEFSRSh2aWV3MS5yb3dIZWlnaHQoMCksIHZpZXczLnJvd0hlaWdodCgwKSk7CisrICAg IFFDT01QQVJFKHZpZXcyLnJvd0hlaWdodCgwKSwgdmlldzMucm93SGVpZ2h0KDApKTsKKysKKysg ICAgdmlldzMucmVzaXplQ29sdW1uVG9Db250ZW50cygwKTsKKysgICAgdmlldzMucmVzaXplUm93 VG9Db250ZW50cygwKTsKKysgICAgLy8gaGVpZ2h0IHNob3VsZCBiZSBvbmx5IDEgdGV4dCBsaW5l IGZvciBlYXN5IHRlc3RpbmcKKysgICAgdmlldzEuc2V0Um93SGVpZ2h0KDAsIHZpZXczLnZlcnRp Y2FsSGVhZGVyKCktPnNlY3Rpb25TaXplKDApKTsKKysgICAgdmlldzIuc2V0Um93SGVpZ2h0KDAs IHZpZXczLnZlcnRpY2FsSGVhZGVyKCktPnNlY3Rpb25TaXplKDApKTsKKysgICAgdmlldzEucmVz aXplQ29sdW1uVG9Db250ZW50cygwKTsKKysgICAgdmlldzIucmVzaXplQ29sdW1uVG9Db250ZW50 cygxKTsKKysgICAgUUNPTVBBUkUodmlldzEuY29sdW1uV2lkdGgoMCksIHZpZXczLmNvbHVtbldp ZHRoKDApIC0gdmlldzEuY29sdW1uV2lkdGgoMSkpOworKyAgICBRQ09NUEFSRSh2aWV3Mi5jb2x1 bW5XaWR0aCgwKSwgdmlldzMuY29sdW1uV2lkdGgoMCkgLSB2aWV3Mi5jb2x1bW5XaWR0aCgxKSk7 CisrfQorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIGV4dGVybiBib29sIFFfV0lER0VUU19FWFBP UlQgcXRfdGFiX2FsbF93aWRnZXRzKCk7IC8vIHFhcHBsaWNhdGlvbi5jcHAKKyBRVF9FTkRfTkFN RVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9rZXJuZWwvcWFw cGxpY2F0aW9uL3RzdF9xYXBwbGljYXRpb24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0 cy9rZXJuZWwvcWFwcGxpY2F0aW9uL3RzdF9xYXBwbGljYXRpb24uY3BwCitpbmRleCBhM2I4ZWY3 OGQ4Li40OTU1Y2ViZDVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9r ZXJuZWwvcWFwcGxpY2F0aW9uL3RzdF9xYXBwbGljYXRpb24uY3BwCisrKysgYi9xdGJhc2UvdGVz dHMvYXV0by93aWRnZXRzL2tlcm5lbC9xYXBwbGljYXRpb24vdHN0X3FhcHBsaWNhdGlvbi5jcHAK K0BAIC0xNDk4LDcgKzE0OTgsNyBAQCB2b2lkIHRzdF9RQXBwbGljYXRpb246OmRlc2t0b3BTZXR0 aW5nc0F3YXJlKCkKKyAgICAgZW52aXJvbm1lbnQgKz0gUUxhdGluMVN0cmluZygiUVRfTUFDX0RJ U0FCTEVfRk9SRUdST1VORF9BUFBMSUNBVElPTl9UUkFOU0ZPUk09MSIpOworICAgICB0ZXN0UHJv Y2Vzcy5zZXRFbnZpcm9ubWVudChlbnZpcm9ubWVudCk7CisgI2VuZGlmCistICAgIHRlc3RQcm9j ZXNzLnN0YXJ0KCJkZXNrdG9wc2V0dGluZ3Nhd2FyZV9oZWxwZXIiKTsKKysgICAgdGVzdFByb2Nl c3Muc3RhcnQoIi4vZGVza3RvcHNldHRpbmdzYXdhcmVfaGVscGVyIik7CisgICAgIFFWRVJJRlky KHRlc3RQcm9jZXNzLndhaXRGb3JTdGFydGVkKCksCisgICAgICAgICAgICAgIHFQcmludGFibGUo UVN0cmluZzo6ZnJvbUxhdGluMSgiQ2Fubm90IHN0YXJ0ICdkZXNrdG9wc2V0dGluZ3Nhd2FyZV9o ZWxwZXInOiAlMSIpLmFyZyh0ZXN0UHJvY2Vzcy5lcnJvclN0cmluZygpKSkpOworICAgICBRVkVS SUZZKHRlc3RQcm9jZXNzLndhaXRGb3JGaW5pc2hlZCgxMDAwMCkpOworQEAgLTI0NTIsNyArMjQ1 Miw3IEBAIHZvaWQgdHN0X1FBcHBsaWNhdGlvbjo6cXRidWdfMTI2NzMoKQorICNpZiBRVF9DT05G SUcocHJvY2VzcykKKyAgICAgUVByb2Nlc3MgdGVzdFByb2Nlc3M7CisgICAgIFFTdHJpbmdMaXN0 IGFyZ3VtZW50czsKKy0gICAgdGVzdFByb2Nlc3Muc3RhcnQoIm1vZGFsX2hlbHBlciIsIGFyZ3Vt ZW50cyk7CisrICAgIHRlc3RQcm9jZXNzLnN0YXJ0KCIuL21vZGFsX2hlbHBlciIsIGFyZ3VtZW50 cyk7CisgICAgIFFWRVJJRlkyKHRlc3RQcm9jZXNzLndhaXRGb3JTdGFydGVkKCksCisgICAgICAg ICAgICAgIHFQcmludGFibGUoUVN0cmluZzo6ZnJvbUxhdGluMSgiQ2Fubm90IHN0YXJ0ICdtb2Rh bF9oZWxwZXInOiAlMSIpLmFyZyh0ZXN0UHJvY2Vzcy5lcnJvclN0cmluZygpKSkpOworICAgICBR VkVSSUZZKHRlc3RQcm9jZXNzLndhaXRGb3JGaW5pc2hlZCgyMDAwMCkpOworZGlmZiAtLWdpdCBh L3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24vdHN0X3Fh YnN0cmFjdGJ1dHRvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWFi c3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0b24uY3BwCitpbmRleCBlYjEwOGE0MGRlLi5k Y2E1NTI4YzFiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRz L3FhYnN0cmFjdGJ1dHRvbi90c3RfcWFic3RyYWN0YnV0dG9uLmNwcAorKysrIGIvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi90c3RfcWFic3RyYWN0YnV0 dG9uLmNwcAorQEAgLTQxLDYgKzQxLDcgQEAKKyAKKyAjaW5jbHVkZSA8cHJpdmF0ZS9xZ3VpYXBw bGljYXRpb25fcC5oPgorICNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtaW50ZWdyYXRpb24uaD4KKysj aW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisgCisgY2xhc3MgdHN0X1FBYnN0cmFjdEJ1 dHRvbiA6IHB1YmxpYyBRT2JqZWN0CisgeworQEAgLTc2LDYgKzc3LDggQEAgcHJpdmF0ZSBzbG90 czoKKyAgICAgdm9pZCBrZXlOYXZpZ2F0aW9uKCk7CisgI2VuZGlmCisgCisrICAgIHZvaWQgYnV0 dG9uUHJlc3NLZXlzKCk7CisrCisgcHJvdGVjdGVkIHNsb3RzOgorICAgICB2b2lkIG9uQ2xpY2tl ZCgpOworICAgICB2b2lkIG9uVG9nZ2xlZCggYm9vbCBvbiApOworQEAgLTI2OSw3ICsyNzIsMTMg QEAgdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjpzZXRBdXRvUmVwZWF0KCkKKyAgICAgICAgIFFD T01QQVJFKHByZXNzX2NvdW50LCBjbGlja19jb3VudCk7CisgICAgICAgICBRVkVSSUZZKGNsaWNr X2NvdW50ID4gMSk7CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSA0OgorKyAgICBjYXNlIDQ6 IHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9u UHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5 cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8 UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5z KFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICAgICAgUVNLSVAoInBsYXRmb3JtIHRoZW1lIGhh cyBLZXlfRW50ZXIgaW4gQnV0dG9uUHJlc3NLZXlzIik7CisrICAgICAgICB9CisgICAgICAgICAv LyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBubyBlZmZlY3Qgd2hlbiBhdXRvcmVwZWF0 IGlzIGZhbHNlCisgICAgICAgICB0ZXN0V2lkZ2V0LT5zZXREb3duKCBmYWxzZSApOworICAgICAg ICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCggZmFsc2UgKTsKK0BAIC0yODYsNyArMjk1LDE0 IEBAIHZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6c2V0QXV0b1JlcGVhdCgpCisgCisgICAgICAg ICBRVkVSSUZZKCBjbGlja19jb3VudCA9PSAwICk7CisgICAgICAgICBicmVhazsKKy0gICAgY2Fz ZSA1OgorKyAgICB9CisrICAgIGNhc2UgNTogeworKyAgICAgICAgY29uc3QgYXV0byBidXR0b25Q cmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxh dGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgICAgIGlm IChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgICAg ICBRU0tJUCgicGxhdGZvcm0gdGhlbWUgaGFzIEtleV9FbnRlciBpbiBCdXR0b25QcmVzc0tleXMi KTsKKysgICAgICAgIH0KKyAgICAgICAgIC8vIGNoZWNrIHRoYXQgcHJlc3NpbmcgRU5URVIgaGFz IG5vIGVmZmVjdCB3aGVuIGF1dG9yZXBlYXQgaXMgdHJ1ZQorICAgICAgICAgdGVzdFdpZGdldC0+ c2V0RG93biggZmFsc2UgKTsKKyAgICAgICAgIHRlc3RXaWRnZXQtPnNldEF1dG9SZXBlYXQoIHRy dWUgKTsKK0BAIC0zMDQsNiArMzIwLDcgQEAgdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjpzZXRB dXRvUmVwZWF0KCkKKyAKKyAgICAgICAgIFFWRVJJRlkoIGNsaWNrX2NvdW50ID09IDAgKTsKKyAg ICAgICAgIGJyZWFrOworKyAgICB9CisgICAgIGNhc2UgNjoKKyAgICAgICAgIC8vIHZlcmlmeSBh dXRvcmVwZWF0IGlzIG9mZiBieSBkZWZhdWx0LgorICAgICAgICAgTXlCdXR0b24gdG1wKCAwKTsK K0BAIC02NTEsNSArNjY4LDE2IEBAIHZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6a2V5TmF2aWdh dGlvbigpCisgfQorICNlbmRpZgorIAorK3ZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6YnV0dG9u UHJlc3NLZXlzKCkKKyt7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFw cGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJl c3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVl PFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGJ1dHRvblByZXNz S2V5cy5sZW5ndGgoKTsgKytpKSB7CisrICAgICAgICBRVGVzdDo6a2V5Q2xpY2sodGVzdFdpZGdl dCwgYnV0dG9uUHJlc3NLZXlzW2ldKTsKKysgICAgICAgIFFDT01QQVJFKGNsaWNrX2NvdW50LCBp ICsgMSk7CisrICAgIH0KKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUUFic3RyYWN0QnV0dG9uKQor ICNpbmNsdWRlICJ0c3RfcWFic3RyYWN0YnV0dG9uLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2Uv dGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9ib3guY3BwIGIv cXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC90c3RfcWNvbWJvYm94 LmNwcAoraW5kZXggMzI0MzcwNTBmNS4uNDZiNWFmNmQ2MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3gvdHN0X3Fjb21ib2JveC5jcHAKKysr KyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3gvdHN0X3Fjb21i b2JveC5jcHAKK0BAIC0xNjgsNiArMTY4LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBj aGVja01lbnVJdGVtUG9zV2hlblN0eWxlU2hlZXRJc1NldCgpOworICAgICB2b2lkIGNoZWNrRW1i ZWRkZWRMaW5lRWRpdFdoZW5TdHlsZVNoZWV0SXNTZXQoKTsKKyAgICAgdm9pZCBwcm9wYWdhdGVT dHlsZUNoYW5nZXMoKTsKKysgICAgdm9pZCBidXR0b25QcmVzc0tleXMoKTsKKyAKKyBwcml2YXRl OgorICAgICBQbGF0Zm9ybUlucHV0Q29udGV4dCBtX3BsYXRmb3JtSW5wdXRDb250ZXh0OworQEAg LTE2ODIsNiArMTY4MywxNiBAQCB2b2lkIHRzdF9RQ29tYm9Cb3g6OnNldE1vZGVsKCkKKyAgICAg UUNPTVBBUkUoYm94LnJvb3RNb2RlbEluZGV4KCksIHJvb3RNb2RlbEluZGV4KTsKKyAgICAgYm94 LnNldE1vZGVsKGJveC5tb2RlbCgpKTsKKyAgICAgUUNPTVBBUkUoYm94LnJvb3RNb2RlbEluZGV4 KCksIHJvb3RNb2RlbEluZGV4KTsKKysKKysgICAgLy8gY2hlY2sgdGhhdCBzZXR0aW5nIHRoZSBz YW1lIG1vZGVsIGFzIHRoZSBjb21wbGV0ZXIncyBkb2Vzbid0IGNyYXNoCisrICAgIFFDb21wbGV0 ZXIgKmNvbXBsZXRlciA9IG5ldyBRQ29tcGxldGVyKCZib3gpOworKyAgICBib3guc2V0RWRpdGFi bGUodHJ1ZSk7CisrICAgIGJveC5zZXRDb21wbGV0ZXIoY29tcGxldGVyKTsKKysgICAgYXV0byAq bGlzdE1vZGVsID0gbmV3IFFTdHJpbmdMaXN0TW9kZWwoeyAib25lIiwgInR3byIgfSwgY29tcGxl dGVyKTsKKysgICAgY29tcGxldGVyLT5zZXRNb2RlbChsaXN0TW9kZWwpOworKyAgICBRQ09NUEFS RShsaXN0TW9kZWwtPnJvd0NvdW50KCksIDIpOyAvLyBtYWtlIHN1cmUgaXQgd2Fzbid0IGRlbGV0 ZWQKKysgICAgYm94LnNldE1vZGVsKGxpc3RNb2RlbCk7CisrICAgIFFDT01QQVJFKGxpc3RNb2Rl bC0+cm93Q291bnQoKSwgMik7IC8vIG1ha2Ugc3VyZSBpdCB3YXNuJ3QgZGVsZXRlZAorIH0KKyAK KyB2b2lkIHRzdF9RQ29tYm9Cb3g6OnNldEN1c3RvbU1vZGVsQW5kVmlldygpCitAQCAtMzYzMiw1 ICszNjQzLDI0IEBAIHZvaWQgdHN0X1FDb21ib0JveDo6cHJvcGFnYXRlU3R5bGVDaGFuZ2VzKCkK KyAgICAgUVZFUklGWShmcmFtZVN0eWxlLmlucXVpcmVkKTsKKyB9CisgCisrdm9pZCB0c3RfUUNv bWJvQm94OjpidXR0b25QcmVzc0tleXMoKQorK3sKKysgICAgUUNvbWJvQm94IGNvbWJvQm94Owor KyAgICBjb21ib0JveC5zZXRFZGl0YWJsZShmYWxzZSk7CisrICAgIGNvbWJvQm94LmFkZEl0ZW0o UVN0cmluZzo6bnVtYmVyKDEpKTsKKysgICAgY29tYm9Cb3guYWRkSXRlbShRU3RyaW5nOjpudW1i ZXIoMikpOworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlv blByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxR dDo6S2V5Pj4oKTsKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBidXR0b25QcmVzc0tleXMubGVu Z3RoKCk7ICsraSkgeworKyAgICAgICAgUVRlc3Q6OmtleUNsaWNrKCZjb21ib0JveCwgYnV0dG9u UHJlc3NLZXlzW2ldKTsKKysgICAgICAgIC8vIE9uIHNvbWUgcGxhdGZvcm1zLCBhIHdpbmRvdyB3 aWxsIG5vdCBiZSBpbW1lZGlhdGVseSB2aXNpYmxlLAorKyAgICAgICAgLy8gYnV0IHRha2Ugc29t ZSBldmVudC1sb29wIGl0ZXJhdGlvbnMgdG8gY29tcGxldGUuCisrICAgICAgICAvLyBVc2luZyBR VFJZX1ZFUklGWSB0byBkZWFsIHdpdGggdGhhdC4KKysgICAgICAgIFFUUllfVkVSSUZZKGNvbWJv Qm94LnZpZXcoKS0+aXNWaXNpYmxlKCkpOworKyAgICAgICAgY29tYm9Cb3guaGlkZVBvcHVwKCk7 CisrICAgIH0KKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUUNvbWJvQm94KQorICNpbmNsdWRlICJ0 c3RfcWNvbWJvYm94Lm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRz L3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3Fjb21tYW5kbGlua2J1dHRvbi5wcm8gYi9xdGJh c2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3Fjb21tYW5k bGlua2J1dHRvbi5wcm8KK2luZGV4IGJlM2NmY2QxMDQuLmMyMjhmZGZjY2EgMTAwNjQ0CistLS0g YS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3Fj b21tYW5kbGlua2J1dHRvbi5wcm8KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lk Z2V0cy9xY29tbWFuZGxpbmtidXR0b24vcWNvbW1hbmRsaW5rYnV0dG9uLnBybworQEAgLTEsNiAr MSw2IEBACisgQ09ORklHICs9IHRlc3RjYXNlCisgVEFSR0VUID0gdHN0X3Fjb21tYW5kbGlua2J1 dHRvbgorLVFUICs9IHdpZGdldHMgdGVzdGxpYgorK1FUICs9IHdpZGdldHMgdGVzdGxpYiBndWkt cHJpdmF0ZQorIFNPVVJDRVMgICs9IHRzdF9xY29tbWFuZGxpbmtidXR0b24uY3BwCisgCisgCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlu a2J1dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5j cHAKK2luZGV4IDAwNDRkMzNjNjYuLjRjZjA2Mjk2ZTQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVz dHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3RzdF9xY29tbWFuZGxp bmtidXR0b24uY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNv bW1hbmRsaW5rYnV0dG9uL3RzdF9xY29tbWFuZGxpbmtidXR0b24uY3BwCitAQCAtNDAsNiArNDAs OSBAQAorICNpbmNsdWRlIDxRR3JpZExheW91dD4KKyAjaW5jbHVkZSA8UVBhaW50ZXI+CisgCisr I2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKysjaW5jbHVkZSA8cXBhL3Fw bGF0Zm9ybXRoZW1lLmg+CisrCisgY2xhc3MgdHN0X1FDb21tYW5kTGlua0J1dHRvbiA6IHB1Ymxp YyBRT2JqZWN0CisgeworICAgICBRX09CSkVDVAorQEAgLTIyMyw2ICsyMjYsMTMgQEAgdm9pZCB0 c3RfUUNvbW1hbmRMaW5rQnV0dG9uOjpzZXRBdXRvUmVwZWF0KCkKKyAgICAgLy8gY2hlY2sgdGhh dCBwcmVzc2luZyBFTlRFUiBoYXMgbm8gZWZmZWN0CisgICAgIHJlc2V0Q291bnRlcnMoKTsKKyAg ICAgdGVzdFdpZGdldC0+c2V0RG93biggZmFsc2UgKTsKKysgICAgLy8gU2tpcCBhZnRlciByZXNl dCBpZiBCdXR0b25QcmVzc0tleXMgaGFzIEtleV9FbnRlcgorKyAgICBjb25zdCBhdXRvIGJ1dHRv blByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRm b3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblBy ZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgcmV0dXJuOworKyAg ICB9CisgICAgIHRlc3RXaWRnZXQtPnNldEF1dG9SZXBlYXQoIGZhbHNlICk7CisgICAgIFFUZXN0 OjprZXlQcmVzcyggdGVzdFdpZGdldCwgUXQ6OktleV9FbnRlciApOworIAorQEAgLTI1NSw2ICsy NjUsMTQgQEAgdm9pZCB0c3RfUUNvbW1hbmRMaW5rQnV0dG9uOjpwcmVzc2VkKCkKKyAgICAgUUNP TVBBUkUoIHByZXNzX2NvdW50LCAodWludCkxICk7CisgICAgIFFDT01QQVJFKCByZWxlYXNlX2Nv dW50LCAodWludCkxICk7CisgCisrICAgIC8vIFNraXAgaWYgQnV0dG9uUHJlc3NLZXlzIGhhcyBL ZXlfRW50ZXIKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRp b25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMp CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8 UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9F bnRlcikpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKworICAgICBRVGVzdDo6a2V5UHJl c3MoIHRlc3RXaWRnZXQsUXQ6OktleV9FbnRlciApOworICAgICBRQ09NUEFSRSggcHJlc3NfY291 bnQsICh1aW50KTEgKTsKKyAgICAgUUNPTVBBUkUoIHJlbGVhc2VfY291bnQsICh1aW50KTEgKTsK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94 L3Fncm91cGJveC5wcm8gYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3Vw Ym94L3Fncm91cGJveC5wcm8KK2luZGV4IDRhNWU3NmZmNjUuLmEyMzVmYTFmYWMgMTAwNjQ0Cist LS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3Fncm91cGJv eC5wcm8KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gv cWdyb3VwYm94LnBybworQEAgLTEsNiArMSw2IEBACisgQ09ORklHICs9IHRlc3RjYXNlCisgVEFS R0VUID0gdHN0X3Fncm91cGJveAorLVFUICs9IHdpZGdldHMgdGVzdGxpYgorK1FUICs9IHdpZGdl dHMgdGVzdGxpYiBndWktcHJpdmF0ZQorIFNPVVJDRVMgICs9IHRzdF9xZ3JvdXBib3guY3BwCisg CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91 cGJveC90c3RfcWdyb3VwYm94LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0 cy9xZ3JvdXBib3gvdHN0X3Fncm91cGJveC5jcHAKK2luZGV4IDRmYjVkMjYyY2EuLmQ4ZDc1NjJi NzMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3Vw Ym94L3RzdF9xZ3JvdXBib3guY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dp ZGdldHMvcWdyb3VwYm94L3RzdF9xZ3JvdXBib3guY3BwCitAQCAtMzUsNiArMzUsOSBAQAorICNp bmNsdWRlIDxRUmFkaW9CdXR0b24+CisgI2luY2x1ZGUgPFFEaWFsb2c+CisgCisrI2luY2x1ZGUg PHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRo ZW1lLmg+CisrCisgI2luY2x1ZGUgInFncm91cGJveC5oIgorIAorIGNsYXNzIHRzdF9RR3JvdXBC b3ggOiBwdWJsaWMgUU9iamVjdAorQEAgLTY5LDYgKzcyLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAg ICAgdm9pZCBwcm9wYWdhdGVGb2N1cygpOworICAgICB2b2lkIHRhc2tfUVRCVUdfMTkxNzBfaWdu b3JlTW91c2VSZWxlYXNlRXZlbnQoKTsKKyAgICAgdm9pZCB0YXNrX1FUQlVHXzE1NTE5X3Byb3Bh Z2F0ZU1vdXNlRXZlbnRzKCk7CisrICAgIHZvaWQgYnV0dG9uUHJlc3NLZXlzKCk7CisgCisgcHJp dmF0ZToKKyAgICAgYm9vbCBjaGVja2VkOworQEAgLTYxMCw2ICs2MTQsMjAgQEAgdm9pZCB0c3Rf UUdyb3VwQm94Ojp0YXNrX1FUQlVHXzE1NTE5X3Byb3BhZ2F0ZU1vdXNlRXZlbnRzKCkKKyAgICAg UUNPTVBBUkUocGFyZW50Lm1vdXNlTW92ZWQsIHRydWUpOworIH0KKyAKKyt2b2lkIHRzdF9RR3Jv dXBCb3g6OmJ1dHRvblByZXNzS2V5cygpCisreworKyAgICBRR3JvdXBCb3ggZ3JvdXBCb3g7Cisr ICAgIGdyb3VwQm94LnNldENoZWNrYWJsZSh0cnVlKTsKKysgICAgUVNpZ25hbFNweSBjbGlja2Vk U3B5KCZncm91cEJveCwgJlFHcm91cEJveDo6Y2xpY2tlZCk7CisrICAgIGNvbnN0IGF1dG8gYnV0 dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxh dGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBmb3IgKGludCBp ID0gMDsgaSA8IGJ1dHRvblByZXNzS2V5cy5sZW5ndGgoKTsgKytpKSB7CisrICAgICAgICBRVGVz dDo6a2V5Q2xpY2soJmdyb3VwQm94LCBidXR0b25QcmVzc0tleXNbaV0pOworKyAgICAgICAgUUNP TVBBUkUoY2xpY2tlZFNweS5sZW5ndGgoKSwgaSArIDEpOworKyAgICB9CisrfQorKworIHZvaWQg dHN0X1FHcm91cEJveDo6c2VuZE1vdXNlTW92ZUV2ZW50KFFXaWRnZXQgKndpZGdldCwgY29uc3Qg UVBvaW50ICZsb2NhbFBvcykKKyB7CisgICAgIC8vIFNlbmQgYSBNb3VzZU1vdmUgZXZlbnQgd2l0 aG91dCBhY3R1YWxseSBtb3ZpbmcgdGhlIHBvaW50ZXIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVz dHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24ucHJvIGIvcXRi YXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3FwdXNoYnV0dG9uLnBy bworaW5kZXggMzUzYWQwNmNhMi4uZTU1ZjYxNDhmMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi9xcHVzaGJ1dHRvbi5wcm8KKysrKyBi L3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi9xcHVzaGJ1dHRv bi5wcm8KK0BAIC0xLDYgKzEsNiBAQAorIENPTkZJRyArPSB0ZXN0Y2FzZQorIFRBUkdFVCA9IHRz dF9xcHVzaGJ1dHRvbgorLVFUICs9IHdpZGdldHMgdGVzdGxpYgorK1FUICs9IHdpZGdldHMgdGVz dGxpYiBndWktcHJpdmF0ZQorIFNPVVJDRVMgICs9IHRzdF9xcHVzaGJ1dHRvbi5jcHAKKyAKKyAK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0 b24vdHN0X3FwdXNoYnV0dG9uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0 cy9xcHVzaGJ1dHRvbi90c3RfcXB1c2hidXR0b24uY3BwCitpbmRleCBlODE4NTE0YTc5Li40MDQz ZTkzMjZhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fw dXNoYnV0dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi90c3RfcXB1c2hidXR0b24uY3BwCitAQCAtNDEsNiAr NDEsOSBAQAorICNpbmNsdWRlIDxRU3R5bGVGYWN0b3J5PgorICNpbmNsdWRlIDxRVGFiV2lkZ2V0 PgorIAorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmg+CisrI2luY2x1ZGUg PHFwYS9xcGxhdGZvcm10aGVtZS5oPgorKworIGNsYXNzIHRzdF9RUHVzaEJ1dHRvbiA6IHB1Ymxp YyBRT2JqZWN0CisgeworIFFfT0JKRUNUCitAQCAtMjEyLDYgKzIxNSwxMyBAQCB2b2lkIHRzdF9R UHVzaEJ1dHRvbjo6YXV0b1JlcGVhdCgpCisgICAgIC8vIGNoZWNrIHRoYXQgcHJlc3NpbmcgRU5U RVIgaGFzIG5vIGVmZmVjdAorICAgICByZXNldENvdW50ZXJzKCk7CisgICAgIHRlc3RXaWRnZXQt PnNldERvd24oIGZhbHNlICk7CisrICAgIC8vIFNraXAgYWZ0ZXIgcmVzZXQgaWYgQnV0dG9uUHJl c3NLZXlzIGhhcyBLZXlfRW50ZXIKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBR R3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0 b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu dmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFp bnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorICAgICB0ZXN0 V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCBmYWxzZSApOworICAgICBRVGVzdDo6a2V5UHJlc3MoIHRl c3RXaWRnZXQsIFF0OjpLZXlfRW50ZXIgKTsKKyAKK0BAIC0yNDcsNiArMjU3LDE0IEBAIHZvaWQg dHN0X1FQdXNoQnV0dG9uOjpwcmVzc2VkKCkKKyAgICAgUUNPTVBBUkUoIHByZXNzX2NvdW50LCAo dWludCkxICk7CisgICAgIFFDT01QQVJFKCByZWxlYXNlX2NvdW50LCAodWludCkxICk7CisgCisr ICAgIC8vIFNraXAgaWYgQnV0dG9uUHJlc3NLZXlzIGhhcyBLZXlfRW50ZXIKKysgICAgY29uc3Qg YXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRo ZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVI aW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlm IChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgIHJl dHVybjsKKysgICAgfQorKworICAgICBRVGVzdDo6a2V5UHJlc3MoIHRlc3RXaWRnZXQsUXQ6Oktl eV9FbnRlciApOworICAgICBRQ09NUEFSRSggcHJlc3NfY291bnQsICh1aW50KTEgKTsKKyAgICAg UUNPTVBBUkUoIHJlbGVhc2VfY291bnQsICh1aW50KTEgKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv dGVzdHMvbWFudWFsL3JoaS9jdWJlbWFwX3JlbmRlci9idWlsZHNoYWRlci5iYXQgYi9xdGJhc2Uv dGVzdHMvbWFudWFsL3JoaS9jdWJlbWFwX3JlbmRlci9idWlsZHNoYWRlci5iYXQKK29sZCBtb2Rl IDEwMDc1NQorbmV3IG1vZGUgMTAwNjQ0CitTdWJtb2R1bGUgcXRjb25uZWN0aXZpdHkgZTk1N2Q0 ODEuLjA1NjI5NGMwOgorZGlmZiAtLWdpdCBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgv Ymx1ZXovaGNpbWFuYWdlci5jcHAgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL2JsdWV6 L2hjaW1hbmFnZXIuY3BwCitpbmRleCBlMjYzNWZhZS4uYThiOGUzYjkgMTAwNjQ0CistLS0gYS9x dGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL2JsdWV6L2hjaW1hbmFnZXIuY3BwCisrKysgYi9x dGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL2JsdWV6L2hjaW1hbmFnZXIuY3BwCitAQCAtNTYz LDkgKzU2MywxMSBAQCB2b2lkIEhjaU1hbmFnZXI6OmhhbmRsZUhjaUFjbFBhY2tldChjb25zdCBx dWludDggKmRhdGEsIGludCBzaXplKQorIAorIHZvaWQgSGNpTWFuYWdlcjo6aGFuZGxlTGVNZXRh RXZlbnQoY29uc3QgcXVpbnQ4ICpkYXRhKQorIHsKKy0gICAgLy8gU3BlYyB2NC4yLCBWb2wgMiwg cGFydCBFLCA3LjcuNjVmZgorKyAgICAvLyBTcGVjIHY1LjMsIFZvbCA0LCBwYXJ0IEUsIDcuNy42 NS4qCisgICAgIHN3aXRjaCAoKmRhdGEpIHsKKy0gICAgY2FzZSAweDE6IHsKKysgICAgY2FzZSAw eDE6IC8vIEhDSV9MRV9Db25uZWN0aW9uX0NvbXBsZXRlCisrICAgIGNhc2UgMHhBOiAvLyBIQ0lf TEVfRW5oYW5jZWRfQ29ubmVjdGlvbl9Db21wbGV0ZQorKyAgICB7CisgICAgICAgICBjb25zdCBx dWludDE2IGhhbmRsZSA9IGJ0X2dldF9sZTE2KGRhdGEgKyAyKTsKKyAgICAgICAgIGVtaXQgY29u bmVjdGlvbkNvbXBsZXRlKGhhbmRsZSk7CisgICAgICAgICBicmVhazsKK2RpZmYgLS1naXQgYS9x dGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzZXJ2aWNlZGlzY292ZXJ5YWdl bnRfYmx1ZXouY3BwIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc2Vy dmljZWRpc2NvdmVyeWFnZW50X2JsdWV6LmNwcAoraW5kZXggNmE5MzE0M2IuLjRhMThjZmM3IDEw MDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc2Vydmlj ZWRpc2NvdmVyeWFnZW50X2JsdWV6LmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0 b290aC9xYmx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50X2JsdWV6LmNwcAorQEAgLTMyMCw3 ICszMjAsMTAgQEAgdm9pZCBRQmx1ZXRvb3RoU2VydmljZURpc2NvdmVyeUFnZW50UHJpdmF0ZTo6 X3FfZmluaXNoU2RwU2NhbihRQmx1ZXRvb3RoU2VydmljZUQKKyAgICAgICAgICAgICBmb3IgKGNv bnN0IFFCbHVldG9vdGhVdWlkICZpZCA6IHNlcnZpY2VDbGFzc1V1aWRzKSB7CisgICAgICAgICAg ICAgICAgIGlmIChpZC5taW5pbXVtU2l6ZSgpID09IDE2KSB7CisgICAgICAgICAgICAgICAgICAg ICBzZXJ2aWNlSW5mby5zZXRTZXJ2aWNlVXVpZChpZCk7CistICAgICAgICAgICAgICAgICAgICBz ZXJ2aWNlSW5mby5zZXRTZXJ2aWNlTmFtZShRQmx1ZXRvb3RoU2VydmljZURpc2NvdmVyeUFnZW50 Ojp0cigiQ3VzdG9tIFNlcnZpY2UiKSk7CisrICAgICAgICAgICAgICAgICAgICBpZiAoc2Vydmlj ZUluZm8uc2VydmljZU5hbWUoKS5pc0VtcHR5KCkpIHsKKysgICAgICAgICAgICAgICAgICAgICAg ICBzZXJ2aWNlSW5mby5zZXRTZXJ2aWNlTmFtZSgKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRQmx1ZXRvb3RoU2VydmljZURpc2NvdmVyeUFnZW50Ojp0cigiQ3VzdG9tIFNl cnZpY2UiKSk7CisrICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICBR Qmx1ZXRvb3RoU2VydmljZUluZm86OlNlcXVlbmNlIG1vZFNlcSA9CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlcnZpY2VJbmZvLmF0dHJpYnV0ZShRQmx1ZXRvb3RoU2VydmljZUluZm86 OlNlcnZpY2VDbGFzc0lkcykudmFsdWU8UUJsdWV0b290aFNlcnZpY2VJbmZvOjpTZXF1ZW5jZT4o KTsKKyAgICAgICAgICAgICAgICAgICAgIG1vZFNlcS5yZW1vdmVPbmUoUVZhcmlhbnQ6OmZyb21W YWx1ZShpZCkpOworQEAgLTMzNCw4ICszMzcsMTAgQEAgdm9pZCBRQmx1ZXRvb3RoU2VydmljZURp c2NvdmVyeUFnZW50UHJpdmF0ZTo6X3FfZmluaXNoU2RwU2NhbihRQmx1ZXRvb3RoU2VydmljZUQK KyAgICAgICAgICAgICAgICAgcUNEZWJ1ZyhRVF9CVF9CTFVFWikgPDwgIkRpc2NvdmVyZWQgc2Vy dmljZXMiIDw8IGRpc2NvdmVyZWREZXZpY2VzLmF0KDApLmFkZHJlc3MoKS50b1N0cmluZygpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHNlcnZpY2VJbmZvLnNlcnZp Y2VOYW1lKCkgPDwgc2VydmljZUluZm8uc2VydmljZVV1aWQoKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8PCAiPj4+IiA8PCBzZXJ2aWNlSW5mby5zZXJ2aWNlQ2xhc3NV dWlkcygpOworLQorLSAgICAgICAgICAgICAgICBlbWl0IHEtPnNlcnZpY2VEaXNjb3ZlcmVkKHNl cnZpY2VJbmZvKTsKKysgICAgICAgICAgICAgICAgLy8gVXNlIHF1ZXVlZCBjb25uZWN0aW9uIHRv IGFsbG93IHVzIGZpbmlzaCB0aGUgc2VydmljZSBsb29waW5nOyB0aGUgYXBwbGljYXRpb24KKysg ICAgICAgICAgICAgICAgLy8gbWlnaHQgY2FsbCBzdG9wKCkgd2hlbiBpdCBoYXMgZGV0ZWN0ZWQg dGhlIHNlcnZpY2Utb2YtaW50ZXJlc3QuCisrICAgICAgICAgICAgICAgIFFNZXRhT2JqZWN0Ojpp bnZva2VNZXRob2QocSwgInNlcnZpY2VEaXNjb3ZlcmVkIiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24s CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUV9BUkcoUUJsdWV0 b290aFNlcnZpY2VJbmZvLCBzZXJ2aWNlSW5mbykpOworICAgICAgICAgICAgIH0KKyAgICAgICAg IH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJs dWV0b290aHNvY2tldC5jcHAgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9v dGhzb2NrZXQuY3BwCitpbmRleCBlNGQ4NTQ0Ny4uYWFkZDQ3NTUgMTAwNjQ0CistLS0gYS9xdGNv bm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXQuY3BwCisrKysgYi9xdGNv bm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXQuY3BwCitAQCAtNTkzLDcg KzU5Myw3IEBAIHZvaWQgUUJsdWV0b290aFNvY2tldDo6c2V0U29ja2V0U3RhdGUoUUJsdWV0b290 aFNvY2tldDo6U29ja2V0U3RhdGUgc3RhdGUpCisgYm9vbCBRQmx1ZXRvb3RoU29ja2V0OjpjYW5S ZWFkTGluZSgpIGNvbnN0CisgeworICAgICBRX0QoY29uc3QgUUJsdWV0b290aFNvY2tldEJhc2Up OworLSAgICByZXR1cm4gZC0+Y2FuUmVhZExpbmUoKTsKKysgICAgcmV0dXJuIGQtPmNhblJlYWRM aW5lKCkgfHwgUUlPRGV2aWNlOjpjYW5SZWFkTGluZSgpOworIH0KKyAKKyAvKiEKK2RpZmYgLS1n aXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXRfYmx1ZXpk YnVzLmNwcCBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldF9i bHVlemRidXMuY3BwCitpbmRleCAwODRhYTk1OC4uZDZhYTE3YTcgMTAwNjQ0CistLS0gYS9xdGNv bm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXRfYmx1ZXpkYnVzLmNwcAor KysrIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6 ZGJ1cy5jcHAKK0BAIC0yODQsNiArMjg0LDEwIEBAIHZvaWQgUUJsdWV0b290aFNvY2tldFByaXZh dGVCbHVlekRCdXM6OmNvbm5lY3RUb1NlcnZpY2UoCisgICAgICAgICByZXR1cm47CisgICAgIH0K KyAKKysgICAgaWYgKHNlcnZpY2Uuc29ja2V0UHJvdG9jb2woKSAhPSBRQmx1ZXRvb3RoU2Vydmlj ZUluZm86OlByb3RvY29sOjpVbmtub3duUHJvdG9jb2wpCisrICAgICAgICBzb2NrZXRUeXBlID0g c2VydmljZS5zb2NrZXRQcm90b2NvbCgpOworKyAgICBxQ0RlYnVnKFFUX0JUX0JMVUVaKSA8PCAi U29ja2V0IHByb3RvY29sIHVzZWQ6IiA8PCBzb2NrZXRUeXBlOworKworICAgICBjb25uZWN0VG9T ZXJ2aWNlKHNlcnZpY2UuZGV2aWNlKCkuYWRkcmVzcygpLCB0YXJnZXRTZXJ2aWNlLCBvcGVuTW9k ZSk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0Y29ubmVjdGl2aXR5L3Rlc3RzL2F1dG8vcWJsdWV0 b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5jcHAgYi9xdGNvbm5lY3Rpdml0eS90ZXN0 cy9hdXRvL3FibHVldG9vdGhzb2NrZXQvdHN0X3FibHVldG9vdGhzb2NrZXQuY3BwCitpbmRleCAw NWJjMWEwZi4uYTdiNWVmMWYgMTAwNjQ0CistLS0gYS9xdGNvbm5lY3Rpdml0eS90ZXN0cy9hdXRv L3FibHVldG9vdGhzb2NrZXQvdHN0X3FibHVldG9vdGhzb2NrZXQuY3BwCisrKysgYi9xdGNvbm5l Y3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2NrZXQvdHN0X3FibHVldG9vdGhzb2NrZXQu Y3BwCitAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgdHN0X1FCbHVldG9vdGhTb2NrZXQ6OmluaXRU ZXN0Q2FzZSgpCisgICAgIHFEZWJ1ZygpIDw8ICJTdGFydGluZyBkaXNjb3ZlcnkiOworIAorICAg ICBzZGEtPnNldFV1aWRGaWx0ZXIoUUJsdWV0b290aFV1aWQoUVN0cmluZyhURVNUX1NFUlZJQ0Vf VVVJRCkpKTsKKy0gICAgc2RhLT5zdGFydChRQmx1ZXRvb3RoU2VydmljZURpc2NvdmVyeUFnZW50 OjpNaW5pbWFsRGlzY292ZXJ5KTsKKysgICAgc2RhLT5zdGFydChRQmx1ZXRvb3RoU2VydmljZURp c2NvdmVyeUFnZW50OjpGdWxsRGlzY292ZXJ5KTsKKyAKKyAgICAgZm9yIChpbnQgY29ubmVjdFRp bWUgPSBNYXhDb25uZWN0VGltZTsgIWRvbmVfZGlzY292ZXJ5ICYmIGNvbm5lY3RUaW1lID4gMDsg Y29ubmVjdFRpbWUgLT0gMTAwMCkKKyAgICAgICAgIFFUZXN0OjpxV2FpdCgxMDAwKTsKK1N1Ym1v ZHVsZSBxdGRlY2xhcmF0aXZlIGY1NzAxZjBkLi44ZGVmZTdiZjoKK2RpZmYgLS1naXQgYS9xdGRl Y2xhcmF0aXZlL3NyYy9xbWwvY29tbW9uL3FxbWxqc2ZpeGVkcG9vbGFycmF5X3AuaCBiL3F0ZGVj bGFyYXRpdmUvc3JjL3FtbC9jb21tb24vcXFtbGpzZml4ZWRwb29sYXJyYXlfcC5oCitpbmRleCBi NjViOTk0ZDZjLi4xNWE4Y2Q2ODc4IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1s L2NvbW1vbi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3Jj L3FtbC9jb21tb24vcXFtbGpzZml4ZWRwb29sYXJyYXlfcC5oCitAQCAtODYsNyArODYsNyBAQCBw dWJsaWM6CisgICAgICAgICBpZiAoUVR5cGVJbmZvPFQ+Ojppc0NvbXBsZXgpIHsKKyAgICAgICAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICAgICAgIG5l dyAoZGF0YSArIGkpIFQodmVjdG9yLmF0KGkpKTsKKy0gICAgICAgIH0gZWxzZSB7CisrICAgICAg ICB9IGVsc2UgaWYgKGNvdW50KSB7CisgICAgICAgICAgICAgbWVtY3B5KGRhdGEsIHN0YXRpY19j YXN0PGNvbnN0IHZvaWQqPih2ZWN0b3IuY29uc3REYXRhKCkpLCBjb3VudCAqIHNpemVvZihUKSk7 CisgICAgICAgICB9CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwv anNydW50aW1lL3F2NHFvYmplY3R3cmFwcGVyLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9q c3J1bnRpbWUvcXY0cW9iamVjdHdyYXBwZXIuY3BwCitpbmRleCBlNTdjZGQ4Mjc4Li45NDYxMzU5 OGFmIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pzcnVudGltZS9xdjRxb2Jq ZWN0d3JhcHBlci5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9qc3J1bnRpbWUvcXY0 cW9iamVjdHdyYXBwZXIuY3BwCitAQCAtMTE0NSw4ICsxMTQ1LDcgQEAgdm9pZCBIZWFwOjpRT2Jq ZWN0V3JhcHBlcjo6bWFya09iamVjdHMoSGVhcDo6QmFzZSAqdGhhdCwgUVY0OjpNYXJrU3RhY2sg Km1hcmtTdGEKKyB2b2lkIFFPYmplY3RXcmFwcGVyOjpkZXN0cm95T2JqZWN0KGJvb2wgbGFzdENh bGwpCisgeworICAgICBIZWFwOjpRT2JqZWN0V3JhcHBlciAqaCA9IGQoKTsKKy0gICAgaWYgKCFo LT5pbnRlcm5hbENsYXNzKQorLSAgICAgICAgcmV0dXJuOyAvLyBkZXN0cm95T2JqZWN0IGFscmVh ZHkgZ290IGNhbGxlZAorKyAgICBRX0FTU0VSVChoLT5pbnRlcm5hbENsYXNzKTsKKyAKKyAgICAg aWYgKGgtPm9iamVjdCgpKSB7CisgICAgICAgICBRUW1sRGF0YSAqZGRhdGEgPSBRUW1sRGF0YTo6 Z2V0KGgtPm9iamVjdCgpLCBmYWxzZSk7CitAQCAtMTE3Niw3ICsxMTc1LDcgQEAgdm9pZCBRT2Jq ZWN0V3JhcHBlcjo6ZGVzdHJveU9iamVjdChib29sIGxhc3RDYWxsKQorICAgICAgICAgfQorICAg ICB9CisgCistICAgIGgtPn5EYXRhKCk7CisrICAgIGgtPmRlc3Ryb3koKTsKKyB9CisgCisgCitk aWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL21lbW9yeS9xdjRtbS5jcHAgYi9xdGRl Y2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNwcAoraW5kZXggMDZjYWYwNGU1YS4uZGEx NDlhNjdjNCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9tZW1vcnkvcXY0bW0u Y3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNwcAorQEAgLTk4 MSw3ICs5ODEsNyBAQCB2b2lkIE1lbW9yeU1hbmFnZXI6OnN3ZWVwKGJvb2wgbGFzdFN3ZWVwLCBD bGFzc0Rlc3Ryb3lTdGF0c0NhbGxiYWNrIGNsYXNzQ291bnRQdAorIAorICAgICBpZiAoTXVsdGlw bHlXcmFwcGVkUU9iamVjdE1hcCAqbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMgPSBlbmdpbmUtPm1f bXVsdGlwbHlXcmFwcGVkUU9iamVjdHMpIHsKKyAgICAgICAgIGZvciAoTXVsdGlwbHlXcmFwcGVk UU9iamVjdE1hcDo6SXRlcmF0b3IgaXQgPSBtdWx0aXBseVdyYXBwZWRRT2JqZWN0cy0+YmVnaW4o KTsgaXQgIT0gbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMtPmVuZCgpOykgeworLSAgICAgICAgICAg IGlmICghaXQudmFsdWUoKS5pc051bGxPclVuZGVmaW5lZCgpKQorKyAgICAgICAgICAgIGlmIChp dC52YWx1ZSgpLmlzTnVsbE9yVW5kZWZpbmVkKCkpCisgICAgICAgICAgICAgICAgIGl0ID0gbXVs dGlwbHlXcmFwcGVkUU9iamVjdHMtPmVyYXNlKGl0KTsKKyAgICAgICAgICAgICBlbHNlCisgICAg ICAgICAgICAgICAgICsraXQ7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9k ZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9x cW1sZGVsZWdhdGVtb2RlbC5jcHAKK2luZGV4IDIwNzlhOGVkMDQuLmE1NzdjYjIzNTEgMTAwNjQ0 CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWwuY3Bw CisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWwuY3Bw CitAQCAtMzg5LDYgKzM4OSwxMiBAQCB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsUHJpdmF0ZTo6Y29u bmVjdFRvQWJzdHJhY3RJdGVtTW9kZWwoKQorICAgICAgICAgICAgICAgICAgICAgICBxLCAgUVFt bERlbGVnYXRlTW9kZWwsIFNMT1QoX3Ffcm93c1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkp KTsKKyAgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05B TChyb3dzQWJvdXRUb0JlUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSksCisgICAgICAgICAg ICAgICAgICAgICAgIHEsICBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9yb3dzQWJvdXRUb0Jl UmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBxbWxvYmplY3RfY29ubmVjdChh aW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKGNvbHVtbnNJbnNlcnRlZChRTW9kZWxJbmRl eCxpbnQsaW50KSksCisrICAgICAgICAgICAgICAgICAgICAgIHEsIFFRbWxEZWxlZ2F0ZU1vZGVs LCBTTE9UKF9xX2NvbHVtbnNJbnNlcnRlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBx bWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKGNvbHVtbnNS ZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwKKysgICAgICAgICAgICAgICAgICAgICAgcSwg UVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3FfY29sdW1uc1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50 LGludCkpKTsKKysgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9kZWws IFNJR05BTChjb2x1bW5zTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQp KSwKKysgICAgICAgICAgICAgICAgICAgICAgcSwgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3Ff Y29sdW1uc01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSkpOworICAg ICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKGRhdGFD aGFuZ2VkKFFNb2RlbEluZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50PikpLAorICAgICAgICAg ICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9kYXRhQ2hhbmdlZChR TW9kZWxJbmRleCxRTW9kZWxJbmRleCxRVmVjdG9yPGludD4pKSk7CisgICAgIHFtbG9iamVjdF9j b25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwocm93c01vdmVkKFFNb2RlbElu ZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSksCitAQCAtNDEzLDYgKzQxOSwxMiBAQCB2b2lk IFFRbWxEZWxlZ2F0ZU1vZGVsUHJpdmF0ZTo6ZGlzY29ubmVjdEZyb21BYnN0cmFjdEl0ZW1Nb2Rl bCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgcSwgU0xPVChfcV9yb3dzQWJvdXRUb0JlUmVt b3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFp bSwgU0lHTkFMKHJvd3NSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICBxLCBTTE9UKF9xX3Jvd3NSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQp KSk7CisrICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwoY29sdW1uc0luc2VydGVk KFFNb2RlbEluZGV4LGludCxpbnQpKSwgcSwKKysgICAgICAgICAgICAgICAgICAgICAgICBTTE9U KF9xX2NvbHVtbnNJbnNlcnRlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBRT2JqZWN0 OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKGNvbHVtbnNSZW1vdmVkKFFNb2RlbEluZGV4LGludCxp bnQpKSwgcSwKKysgICAgICAgICAgICAgICAgICAgICAgICBTTE9UKF9xX2NvbHVtbnNSZW1vdmVk KFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBT SUdOQUwoY29sdW1uc01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSks IHEsCisrICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChfcV9jb2x1bW5zTW92ZWQoUU1vZGVs SW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSk7CisgICAgIFFPYmplY3Q6OmRpc2Nvbm5l Y3QoYWltLCBTSUdOQUwoZGF0YUNoYW5nZWQoUU1vZGVsSW5kZXgsUU1vZGVsSW5kZXgsUVZlY3Rv cjxpbnQ+KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgcSwgU0xPVChfcV9kYXRhQ2hhbmdl ZChRTW9kZWxJbmRleCxRTW9kZWxJbmRleCxRVmVjdG9yPGludD4pKSk7CisgICAgIFFPYmplY3Q6 OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwocm93c01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1v ZGVsSW5kZXgsaW50KSksCitAQCAtMTk3Myw2ICsxOTg1LDM4IEBAIHZvaWQgUVFtbERlbGVnYXRl TW9kZWw6Ol9xX3Jvd3NNb3ZlZCgKKyAgICAgfQorIH0KKyAKKyt2b2lkIFFRbWxEZWxlZ2F0ZU1v ZGVsOjpfcV9jb2x1bW5zSW5zZXJ0ZWQoY29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCwgaW50IGJl Z2luLCBpbnQgZW5kKQorK3sKKysgICAgUV9EKFFRbWxEZWxlZ2F0ZU1vZGVsKTsKKysgICAgUV9V TlVTRUQoZW5kKTsKKysgICAgaWYgKHBhcmVudCA9PSBkLT5tX2FkYXB0b3JNb2RlbC5yb290SW5k ZXggJiYgYmVnaW4gPT0gMCkgeworKyAgICAgICAgLy8gbWFyayBhbGwgaXRlbXMgYXMgY2hhbmdl ZAorKyAgICAgICAgX3FfaXRlbXNDaGFuZ2VkKDAsIGQtPm1fY291bnQsIFFWZWN0b3I8aW50Pigp KTsKKysgICAgfQorK30KKysKKyt2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9jb2x1bW5zUmVt b3ZlZChjb25zdCBRTW9kZWxJbmRleCAmcGFyZW50LCBpbnQgYmVnaW4sIGludCBlbmQpCisrewor KyAgICBRX0QoUVFtbERlbGVnYXRlTW9kZWwpOworKyAgICBRX1VOVVNFRChlbmQpOworKyAgICBp ZiAocGFyZW50ID09IGQtPm1fYWRhcHRvck1vZGVsLnJvb3RJbmRleCAmJiBiZWdpbiA9PSAwKSB7 CisrICAgICAgICAvLyBtYXJrIGFsbCBpdGVtcyBhcyBjaGFuZ2VkCisrICAgICAgICBfcV9pdGVt c0NoYW5nZWQoMCwgZC0+bV9jb3VudCwgUVZlY3RvcjxpbnQ+KCkpOworKyAgICB9CisrfQorKwor K3ZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2NvbHVtbnNNb3ZlZChjb25zdCBRTW9kZWxJbmRl eCAmcGFyZW50LCBpbnQgc3RhcnQsIGludCBlbmQsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IFFNb2RlbEluZGV4ICZkZXN0aW5hdGlvbiwgaW50IGNvbHVt bikKKyt7CisrICAgIFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7CisrICAgIFFfVU5VU0VEKGVuZCk7 CisrICAgIGlmICgocGFyZW50ID09IGQtPm1fYWRhcHRvck1vZGVsLnJvb3RJbmRleCAmJiBzdGFy dCA9PSAwKQorKyAgICAgICAgfHwgKGRlc3RpbmF0aW9uID09IGQtPm1fYWRhcHRvck1vZGVsLnJv b3RJbmRleCAmJiBjb2x1bW4gPT0gMCkpIHsKKysgICAgICAgIC8vIG1hcmsgYWxsIGl0ZW1zIGFz IGNoYW5nZWQKKysgICAgICAgIF9xX2l0ZW1zQ2hhbmdlZCgwLCBkLT5tX2NvdW50LCBRVmVjdG9y PGludD4oKSk7CisrICAgIH0KKyt9CisrCisgdm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3FfZGF0 YUNoYW5nZWQoY29uc3QgUU1vZGVsSW5kZXggJmJlZ2luLCBjb25zdCBRTW9kZWxJbmRleCAmZW5k LCBjb25zdCBRVmVjdG9yPGludD4gJnJvbGVzKQorIHsKKyAgICAgUV9EKFFRbWxEZWxlZ2F0ZU1v ZGVsKTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVn YXRlbW9kZWxfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1v ZGVsX3AuaAoraW5kZXggOGFhYjRiYWRjYS4uZDE0MGJmYmFhZiAxMDA2NDQKKy0tLSBhL3F0ZGVj bGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbF9wLmgKKysrKyBiL3F0ZGVj bGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbF9wLmgKK0BAIC0xNTIsNiAr MTUyLDkgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIF9xX2l0ZW1zTW92ZWQoaW50IGZy b20sIGludCB0bywgaW50IGNvdW50KTsKKyAgICAgdm9pZCBfcV9tb2RlbFJlc2V0KCk7CisgICAg IHZvaWQgX3Ffcm93c0luc2VydGVkKGNvbnN0IFFNb2RlbEluZGV4ICYsaW50LGludCk7CisrICAg IHZvaWQgX3FfY29sdW1uc0luc2VydGVkKGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCwgaW50KTsK KysgICAgdm9pZCBfcV9jb2x1bW5zUmVtb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGlu dCk7CisrICAgIHZvaWQgX3FfY29sdW1uc01vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCwg aW50LCBjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQpOworICAgICB2b2lkIF9xX3Jvd3NBYm91dFRv QmVSZW1vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICZwYXJlbnQsIGludCBiZWdpbiwgaW50IGVuZCk7 CisgICAgIHZvaWQgX3Ffcm93c1JlbW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJixpbnQsaW50KTsK KyAgICAgdm9pZCBfcV9yb3dzTW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBpbnQsIGNv bnN0IFFNb2RlbEluZGV4ICYsIGludCk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNraXRlbS5jcHAgYi9xdGRlY2xhcmF0aXZl L3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2tpdGVtLmNwcAoraW5kZXggODU3 MTlmZGM4MC4uNzhlMmFiMzAyYyAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr L2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja2l0ZW0uY3BwCisrKysgYi9xdGRlY2xhcmF0aXZl L3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2tpdGVtLmNwcAorQEAgLTQ2LDYg KzQ2LDcgQEAKKyAjaW5jbHVkZSAiUXRRdWljay9wcml2YXRlL3FxdWlja3RleHRpbnB1dF9wLmgi CisgI2luY2x1ZGUgIlF0UXVpY2svcHJpdmF0ZS9xcXVpY2thY2Nlc3NpYmxlYXR0YWNoZWRfcC5o IgorICNpbmNsdWRlICJRdFF1aWNrL3FxdWlja3RleHRkb2N1bWVudC5oIgorKyNpbmNsdWRlICJR dFF1aWNrL3FxdWlja3JlbmRlcmNvbnRyb2wuaCIKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyAj aWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCitAQCAtNTcsNyArNTgsMTkgQEAgUUFjY2Vzc2li bGVRdWlja0l0ZW06OlFBY2Nlc3NpYmxlUXVpY2tJdGVtKFFRdWlja0l0ZW0gKml0ZW0pCisgCisg UVdpbmRvdyAqUUFjY2Vzc2libGVRdWlja0l0ZW06OndpbmRvdygpIGNvbnN0CisgeworLSAgICBy ZXR1cm4gaXRlbSgpLT53aW5kb3coKTsKKysgICAgUVF1aWNrV2luZG93ICp3aW5kb3cgPSBpdGVt KCktPndpbmRvdygpOworKworKyAgICAvLyBGb3IgUVF1aWNrV2lkZ2V0IHRoZSBhYm92ZSB3aW5k b3cgd2lsbCBiZSB0aGUgb2Zmc2NyZWVuIFFRdWlja1dpbmRvdywKKysgICAgLy8gd2hpY2ggaXMg bm90IGEgcGFydCBvZiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLiBEZXRlY3QgdGhpcyBjYXNlIGFu ZAorKyAgICAvLyByZXR1cm4gdGhlIHdpbmRvdyBmb3IgdGhlIFFRdWlja1dpZGdldCBpbnN0ZWFk LgorKyAgICBpZiAod2luZG93ICYmICF3aW5kb3ctPmhhbmRsZSgpKSB7CisrICAgICAgICBpZiAo UVF1aWNrUmVuZGVyQ29udHJvbCAqcmVuZGVyQ29udHJvbCA9IFFRdWlja1dpbmRvd1ByaXZhdGU6 OmdldCh3aW5kb3cpLT5yZW5kZXJDb250cm9sKSB7CisrICAgICAgICAgICAgaWYgKFFXaW5kb3cg KnJlbmRlcldpbmRvdyA9IHJlbmRlckNvbnRyb2wtPnJlbmRlcldpbmRvdyhudWxscHRyKSkKKysg ICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcldpbmRvdzsKKysgICAgICAgIH0KKysgICAgfQor KworKyAgICByZXR1cm4gd2luZG93OworIH0KKyAKKyBpbnQgUUFjY2Vzc2libGVRdWlja0l0ZW06 OmNoaWxkQ291bnQoKSBjb25zdAorQEAgLTExMywxOSArMTI2LDE1IEBAIFFBY2Nlc3NpYmxlSW50 ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrSXRlbTo6Y2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0 CisgUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpwYXJlbnQoKSBj b25zdAorIHsKKyAgICAgUVF1aWNrSXRlbSAqcGFyZW50ID0gaXRlbSgpLT5wYXJlbnRJdGVtKCk7 CistICAgIFFRdWlja1dpbmRvdyAqd2luZG93ID0gaXRlbSgpLT53aW5kb3coKTsKKy0gICAgUVF1 aWNrSXRlbSAqY2kgPSB3aW5kb3cgPyB3aW5kb3ctPmNvbnRlbnRJdGVtKCkgOiBudWxscHRyOwor KyAgICBRUXVpY2tXaW5kb3cgKml0ZW1XaW5kb3cgPSBpdGVtKCktPndpbmRvdygpOworKyAgICBR UXVpY2tJdGVtICpjaSA9IGl0ZW1XaW5kb3cgPyBpdGVtV2luZG93LT5jb250ZW50SXRlbSgpIDog bnVsbHB0cjsKKyAgICAgd2hpbGUgKHBhcmVudCAmJiAhUVF1aWNrSXRlbVByaXZhdGU6OmdldChw YXJlbnQpLT5pc0FjY2Vzc2libGUgJiYgcGFyZW50ICE9IGNpKQorICAgICAgICAgcGFyZW50ID0g cGFyZW50LT5wYXJlbnRJdGVtKCk7CisgCisgICAgIGlmIChwYXJlbnQpIHsKKyAgICAgICAgIGlm IChwYXJlbnQgPT0gY2kpIHsKKy0gICAgICAgICAgICAvLyBKdW1wIG91dCB0byB0aGUgc2NlbmUg d2lkZ2V0IGlmIHRoZSBwYXJlbnQgaXMgdGhlIHJvb3QgaXRlbS4KKy0gICAgICAgICAgICAvLyBU aGVyZSBhcmUgdHdvIHJvb3QgaXRlbXMsIFFRdWlja1dpbmRvdzo6cm9vdEl0ZW0gYW5kCistICAg ICAgICAgICAgLy8gUVF1aWNrVmlldzo6ZGVjbGFyYXRpdmVSb290LiBUaGUgZm9ybWVyIGlzIHRo ZSB0cnVlIHJvb3QgaXRlbSwKKy0gICAgICAgICAgICAvLyBidXQgaXMgbm90IGEgcGFydCBvZiB0 aGUgYWNjZXNzaWJpbGl0eSB0cmVlLiBDaGVjayBpZiB3ZSBoaXQKKy0gICAgICAgICAgICAvLyBp dCBoZXJlIGFuZCByZXR1cm4gYW4gaW50ZXJmYWNlIGZvciB0aGUgc2NlbmUgaW5zdGVhZC4KKy0g ICAgICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OnF1ZXJ5QWNjZXNzaWJsZUludGVyZmFjZSh3 aW5kb3cpOworKyAgICAgICAgICAgIC8vIEp1bXAgb3V0IHRvIHRoZSB3aW5kb3cgaWYgdGhlIHBh cmVudCBpcyB0aGUgcm9vdCBpdGVtCisrICAgICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpx dWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uod2luZG93KCkpOworICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgICB3aGlsZSAocGFyZW50ICYmICFwYXJlbnQtPmRfZnVuYygpLT5pc0FjY2Vzc2li bGUpCisgICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50SXRlbSgpOworQEAg LTE4OCw3ICsxOTcsNyBAQCBRQWNjZXNzaWJsZTo6U3RhdGUgUUFjY2Vzc2libGVRdWlja0l0ZW06 OnN0YXRlKCkgY29uc3QKKyAgICAgUVJlY3Qgdmlld1JlY3RfID0gdmlld1JlY3QoKTsKKyAgICAg UVJlY3QgaXRlbVJlY3QgPSByZWN0KCk7CisgCistICAgIGlmICh2aWV3UmVjdF8uaXNOdWxsKCkg fHwgaXRlbVJlY3QuaXNOdWxsKCkgfHwgIWl0ZW0oKS0+d2luZG93KCkgfHwgIWl0ZW0oKS0+d2lu ZG93KCktPmlzVmlzaWJsZSgpIHx8IWl0ZW0oKS0+aXNWaXNpYmxlKCkgfHwgcUZ1enp5SXNOdWxs KGl0ZW0oKS0+b3BhY2l0eSgpKSkKKysgICAgaWYgKHZpZXdSZWN0Xy5pc051bGwoKSB8fCBpdGVt UmVjdC5pc051bGwoKSB8fCAhd2luZG93KCkgfHwgIXdpbmRvdygpLT5pc1Zpc2libGUoKSB8fCFp dGVtKCktPmlzVmlzaWJsZSgpIHx8IHFGdXp6eUlzTnVsbChpdGVtKCktPm9wYWNpdHkoKSkpCisg ICAgICAgICBzdGF0ZS5pbnZpc2libGUgPSB0cnVlOworICAgICBpZiAoIXZpZXdSZWN0Xy5pbnRl cnNlY3RzKGl0ZW1SZWN0KSkKKyAgICAgICAgIHN0YXRlLm9mZnNjcmVlbiA9IHRydWU7CitAQCAt MjAxLDYgKzIxMCwxMCBAQCBRQWNjZXNzaWJsZTo6U3RhdGUgUUFjY2Vzc2libGVRdWlja0l0ZW06 OnN0YXRlKCkgY29uc3QKKyAgICAgaWYgKHJvbGUoKSA9PSBRQWNjZXNzaWJsZTo6RWRpdGFibGVU ZXh0KQorICAgICAgICAgaWYgKGF1dG8gdGkgPSBxb2JqZWN0X2Nhc3Q8UVF1aWNrVGV4dElucHV0 ICo+KGl0ZW0oKSkpCisgICAgICAgICAgICAgc3RhdGUucGFzc3dvcmRFZGl0ID0gdGktPmVjaG9N b2RlKCkgIT0gUVF1aWNrVGV4dElucHV0OjpOb3JtYWw7CisrICAgIGlmICghaXRlbSgpLT5pc0Vu YWJsZWQoKSkgeworKyAgICAgICAgc3RhdGUuZm9jdXNhYmxlID0gZmFsc2U7CisrICAgICAgICBz dGF0ZS5kaXNhYmxlZCA9IHRydWU7CisrICAgIH0KKyAgICAgcmV0dXJuIHN0YXRlOworIH0KKyAK K2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3Np YmxlcXVpY2t2aWV3X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFj Y2Vzc2libGVxdWlja3ZpZXdfcC5oCitpbmRleCAzOWZmY2FmMzljLi44YmFhMDEzMzBjIDEwMDY0 NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1 aWNrdmlld19wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFj Y2Vzc2libGVxdWlja3ZpZXdfcC5oCitAQCAtNTgsNyArNTgsNyBAQCBRVF9CRUdJTl9OQU1FU1BB Q0UKKyAKKyAjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisgCistY2xhc3MgUUFjY2Vzc2li bGVRdWlja1dpbmRvdyA6IHB1YmxpYyBRQWNjZXNzaWJsZU9iamVjdAorK2NsYXNzIFFfUVVJQ0tf RVhQT1JUIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cgOiBwdWJsaWMgUUFjY2Vzc2libGVPYmplY3QK KyB7CisgcHVibGljOgorICAgICBRQWNjZXNzaWJsZVF1aWNrV2luZG93KFFRdWlja1dpbmRvdyAq b2JqZWN0KTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVp Y2tkcmFnLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2RyYWcuY3Bw CitpbmRleCA4MzIxZmNmZWVkLi4zODMwNzhiM2I5IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrZHJhZy5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrL2l0ZW1zL3FxdWlja2RyYWcuY3BwCitAQCAtNDgxLDcgKzQ4MSw5IEBAIHZvaWQgUVF1 aWNrRHJhZ0F0dGFjaGVkOjpzZXRLZXlzKGNvbnN0IFFTdHJpbmdMaXN0ICZrZXlzKQorICAgICBc cW1sYXR0YWNoZWRwcm9wZXJ0eSBzdHJpbmdsaXN0IFF0UXVpY2s6OkRyYWc6Om1pbWVEYXRhCisg ICAgIFxzaW5jZSA1LjIKKyAKKy0gICAgVGhpcyBwcm9wZXJ0eSBob2xkcyBhIG1hcCBvZiBtaW1l RGF0YSB0aGF0IGlzIHVzZWQgZHVyaW5nIHN0YXJ0RHJhZy4KKysgICAgVGhpcyBwcm9wZXJ0eSBo b2xkcyBhIG1hcCBmcm9tIG1pbWUgdHlwZSB0byBkYXRhIHRoYXQgaXMgdXNlZCBkdXJpbmcgc3Rh cnREcmFnLgorKyAgICBUaGUgbWltZSBkYXRhIG5lZWRzIHRvIGJlIGEgXGMgc3RyaW5nLCBvciBh biBcYyBBcnJheUJ1ZmZlciB3aXRoIHRoZSBkYXRhIGVuY29kZWQKKysgICAgYWNjb3JkaW5nIHRv IHRoZSBtaW1lIHR5cGUuCisgKi8KKyAKKyBRVmFyaWFudE1hcCBRUXVpY2tEcmFnQXR0YWNoZWQ6 Om1pbWVEYXRhKCkgY29uc3QKK0BAIC03NjYsOCArNzY4LDEyIEBAIFF0OjpEcm9wQWN0aW9uIFFR dWlja0RyYWdBdHRhY2hlZFByaXZhdGU6OnN0YXJ0RHJhZyhRdDo6RHJvcEFjdGlvbnMgc3VwcG9y dGVkQWN0CisgICAgIFFEcmFnICpkcmFnID0gbmV3IFFEcmFnKHNvdXJjZSA/IHNvdXJjZSA6IHEp OworICAgICBRTWltZURhdGEgKm1pbWVEYXRhID0gbmV3IFFNaW1lRGF0YSgpOworIAorLSAgICBm b3IgKGF1dG8gaXQgPSBleHRlcm5hbE1pbWVEYXRhLmNiZWdpbigpLCBlbmQgPSBleHRlcm5hbE1p bWVEYXRhLmNlbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorLSAgICAgICAgbWltZURhdGEtPnNldERh dGEoaXQua2V5KCksIGl0LnZhbHVlKCkudG9TdHJpbmcoKS50b1V0ZjgoKSk7CisrICAgIGZvciAo YXV0byBpdCA9IGV4dGVybmFsTWltZURhdGEuY2JlZ2luKCksIGVuZCA9IGV4dGVybmFsTWltZURh dGEuY2VuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKysgICAgICAgIGlmIChzdGF0aWNfY2FzdDxR TWV0YVR5cGU6OlR5cGU+KGl0LnZhbHVlKCkudHlwZSgpKSA9PSBRTWV0YVR5cGU6OlFCeXRlQXJy YXkpCisrICAgICAgICAgICAgbWltZURhdGEtPnNldERhdGEoaXQua2V5KCksIGl0LnZhbHVlKCku dG9CeXRlQXJyYXkoKSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgbWltZURhdGEtPnNl dERhdGEoaXQua2V5KCksIGl0LnZhbHVlKCkudG9TdHJpbmcoKS50b1V0ZjgoKSk7CisrICAgIH0K KyAKKyAgICAgZHJhZy0+c2V0TWltZURhdGEobWltZURhdGEpOworICAgICBpZiAocGl4bWFwTG9h ZGVyLmlzUmVhZHkoKSkgeworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0 ZW1zL3FxdWlja2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNr aXRlbS5jcHAKK2luZGV4IDc1ZjE0NTc4MTYuLmRlYzBhZTE5YWUgMTAwNjQ0CistLS0gYS9xdGRl Y2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtLmNwcAorKysrIGIvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbS5jcHAKK0BAIC01OSw2ICs1OSw3IEBACisg I2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3FudW1lcmljX3AuaD4KKyAjaW5jbHVkZSA8UXRHdWkv cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xbG9nZ2luZ2NhdGVnb3J5 Lmg+CisrI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3FkdXBsaWNhdGV0cmFja2VyX3AuaD4KKyAK KyAjaW5jbHVkZSA8cHJpdmF0ZS9xcW1sZ2xvYmFsX3AuaD4KKyAjaW5jbHVkZSA8cHJpdmF0ZS9x cW1sZW5naW5lX3AuaD4KK0BAIC0yMzI2LDYgKzIzMjcsNyBAQCBRUXVpY2tJdGVtOjpRUXVpY2tJ dGVtKFFRdWlja0l0ZW1Qcml2YXRlICZkZCwgUVF1aWNrSXRlbSAqcGFyZW50KQorIFFRdWlja0l0 ZW06On5RUXVpY2tJdGVtKCkKKyB7CisgICAgIFFfRChRUXVpY2tJdGVtKTsKKysgICAgZC0+aW5E ZXN0cnVjdG9yID0gdHJ1ZTsKKyAKKyAgICAgaWYgKGQtPndpbmRvd1JlZkNvdW50ID4gMSkKKyAg ICAgICAgIGQtPndpbmRvd1JlZkNvdW50ID0gMTsgLy8gTWFrZSBzdXJlIHdpbmRvdyBpcyBzZXQg dG8gbnVsbCBpbiBuZXh0IGNhbGwgdG8gZGVyZWZXaW5kb3coKS4KK0BAIC0yNTI2LDYgKzI1Mjgs NyBAQCBRUXVpY2tJdGVtKiBRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1 c0NoYWluKFFRdWlja0l0ZW0gKml0ZW0sIGJvbworICAgICBRUXVpY2tJdGVtICpjdXJyZW50ID0g aXRlbTsKKyAgICAgcUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4 dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluOiBzdGFydEl0ZW06IiA8PCBzdGFydEl0ZW07CisgICAg IHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUlu VGFiRm9jdXNDaGFpbjogZmlyc3RGcm9tSXRlbToiIDw8IGZpcnN0RnJvbUl0ZW07CisrICAgIFFE dXBsaWNhdGVUcmFja2VyPFFRdWlja0l0ZW0gKj4gY3ljbGVEZXRlY3RvcjsKKyAgICAgZG8gewor ICAgICAgICAgcUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFBy ZXZJdGVtSW5UYWJGb2N1c0NoYWluOiBjdXJyZW50OiIgPDwgY3VycmVudDsKKyAgICAgICAgIHFD RGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFi Rm9jdXNDaGFpbjogZnJvbToiIDw8IGZyb207CitAQCAtMjU5Miw3ICsyNTk1LDEwIEBAIFFRdWlj a0l0ZW0qIFFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW4oUVF1 aWNrSXRlbSAqaXRlbSwgYm9vCisgICAgICAgICAvLyB0cmF2ZXJzZWQgYWxsIG9mIHRoZSBjaGFp biAoYnkgY29tcGFyZSB0aGUgW2N1cnJlbnRdIGl0ZW0gd2l0aCBbc3RhcnRJdGVtXSkKKyAgICAg ICAgIC8vIFNpbmNlIHRoZSBbc3RhcnRJdGVtXSBtaWdodCBiZSBwcm9tb3RlZCB0byBpdHMgcGFy ZW50IGlmIGl0IGlzIGludmlzaWJsZSwKKyAgICAgICAgIC8vIHdlIHN0aWxsIGhhdmUgdG8gY2hl Y2sgW2N1cnJlbnRdIGl0ZW0gd2l0aCBvcmlnaW5hbCBzdGFydCBpdGVtCistICAgICAgICBpZiAo KGN1cnJlbnQgPT0gc3RhcnRJdGVtIHx8IGN1cnJlbnQgPT0gb3JpZ2luYWxTdGFydEl0ZW0pICYm IGZyb20gPT0gZmlyc3RGcm9tSXRlbSkgeworKyAgICAgICAgLy8gV2UgbWlnaHQgYWxzbyBydW4g aW50byBhIGN5Y2xlIGJlZm9yZSB3ZSByZWFjaCBmaXJzdEZyb21JdGVtIGFnYWluCisrICAgICAg ICAvLyBidXQgbm90ZSB0aGF0IHdlIGhhdmUgdG8gaWdub3JlIGN1cnJlbnQgaWYgd2UgYXJlIG1l YW50IHRvIHNraXAgaXQKKysgICAgICAgIGlmICgoKGN1cnJlbnQgPT0gc3RhcnRJdGVtIHx8IGN1 cnJlbnQgPT0gb3JpZ2luYWxTdGFydEl0ZW0pICYmIGZyb20gPT0gZmlyc3RGcm9tSXRlbSkgfHwK KysgICAgICAgICAgICAgICAgKCFza2lwICYmIGN5Y2xlRGV0ZWN0b3IuaGFzU2VlbihjdXJyZW50 KSkpIHsKKyAgICAgICAgICAgICAvLyB3cmFwcGVkIGFyb3VuZCwgYXZvaWQgZW5kbGVzcyBsb29w cworICAgICAgICAgICAgIGlmIChpdGVtID09IGNvbnRlbnRJdGVtKSB7CisgICAgICAgICAgICAg ICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRl bUluVGFiRm9jdXNDaGFpbjogbG9vcGVkLCByZXR1cm4gY29udGVudEl0ZW0iOworQEAgLTI2ODks OSArMjY5NSw4IEBAIHZvaWQgUVF1aWNrSXRlbTo6c2V0UGFyZW50SXRlbShRUXVpY2tJdGVtICpw YXJlbnRJdGVtKQorIAorICAgICAgICAgY29uc3QgYm9vbCB3YXNWaXNpYmxlID0gaXNWaXNpYmxl KCk7CisgICAgICAgICBvcC0+cmVtb3ZlQ2hpbGQodGhpcyk7CistICAgICAgICBpZiAod2FzVmlz aWJsZSkgeworKyAgICAgICAgaWYgKHdhc1Zpc2libGUgJiYgIW9wLT5pbkRlc3RydWN0b3IpCisg ICAgICAgICAgICAgZW1pdCBvbGRQYXJlbnRJdGVtLT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2VkKCk7 CistICAgICAgICB9CisgICAgIH0gZWxzZSBpZiAoZC0+d2luZG93KSB7CisgICAgICAgICBRUXVp Y2tXaW5kb3dQcml2YXRlOjpnZXQoZC0+d2luZG93KS0+cGFyZW50bGVzc0l0ZW1zLnJlbW92ZSh0 aGlzKTsKKyAgICAgfQorQEAgLTI3NjgsOCArMjc3Myw5IEBAIHZvaWQgUVF1aWNrSXRlbTo6c2V0 UGFyZW50SXRlbShRUXVpY2tJdGVtICpwYXJlbnRJdGVtKQorIAorICAgICBkLT5pdGVtQ2hhbmdl KEl0ZW1QYXJlbnRIYXNDaGFuZ2VkLCBkLT5wYXJlbnRJdGVtKTsKKyAKKy0gICAgZW1pdCBwYXJl bnRDaGFuZ2VkKGQtPnBhcmVudEl0ZW0pOworLSAgICBpZiAoaXNWaXNpYmxlKCkgJiYgZC0+cGFy ZW50SXRlbSkKKysgICAgaWYgKCFkLT5pbkRlc3RydWN0b3IpCisrICAgICAgICBlbWl0IHBhcmVu dENoYW5nZWQoZC0+cGFyZW50SXRlbSk7CisrICAgIGlmIChpc1Zpc2libGUoKSAmJiBkLT5wYXJl bnRJdGVtICYmICFRUXVpY2tJdGVtUHJpdmF0ZTo6Z2V0KGQtPnBhcmVudEl0ZW0pLT5pbkRlc3Ry dWN0b3IpCisgICAgICAgICBlbWl0IGQtPnBhcmVudEl0ZW0tPnZpc2libGVDaGlsZHJlbkNoYW5n ZWQoKTsKKyB9CisgCitAQCAtMjk2NSw3ICsyOTcxLDggQEAgdm9pZCBRUXVpY2tJdGVtUHJpdmF0 ZTo6cmVtb3ZlQ2hpbGQoUVF1aWNrSXRlbSAqY2hpbGQpCisgCisgICAgIGl0ZW1DaGFuZ2UoUVF1 aWNrSXRlbTo6SXRlbUNoaWxkUmVtb3ZlZENoYW5nZSwgY2hpbGQpOworIAorLSAgICBlbWl0IHEt PmNoaWxkcmVuQ2hhbmdlZCgpOworKyAgICBpZiAoIWluRGVzdHJ1Y3RvcikKKysgICAgICAgIGVt aXQgcS0+Y2hpbGRyZW5DaGFuZ2VkKCk7CisgfQorIAorIHZvaWQgUVF1aWNrSXRlbVByaXZhdGU6 OnJlZldpbmRvdyhRUXVpY2tXaW5kb3cgKmMpCitAQCAtMzE5NCw2ICszMjAxLDcgQEAgUVF1aWNr SXRlbVByaXZhdGU6OlFRdWlja0l0ZW1Qcml2YXRlKCkKKyAgICAgLCB0b3VjaEVuYWJsZWQoZmFs c2UpCisgI2VuZGlmCisgICAgICwgaGFzQ3Vyc29ySGFuZGxlcihmYWxzZSkKKysgICAgLCBpbkRl c3RydWN0b3IoZmFsc2UpCisgICAgICwgZGlydHlBdHRyaWJ1dGVzKDApCisgICAgICwgbmV4dERp cnR5SXRlbShudWxscHRyKQorICAgICAsIHByZXZEaXJ0eUl0ZW0obnVsbHB0cikKK0BAIC01MTIw LDYgKzUxMjgsMTMgQEAgdm9pZCBRUXVpY2tJdGVtOjpjb21wb25lbnRDb21wbGV0ZSgpCisgICAg ICAgICBkLT5hZGRUb0RpcnR5TGlzdCgpOworICAgICAgICAgUVF1aWNrV2luZG93UHJpdmF0ZTo6 Z2V0KGQtPndpbmRvdyktPmRpcnR5SXRlbSh0aGlzKTsKKyAgICAgfQorKworKyNpZiBRVF9DT05G SUcoYWNjZXNzaWJpbGl0eSkKKysgICAgaWYgKGQtPmlzQWNjZXNzaWJsZSAmJiBkLT5lZmZlY3Rp dmVWaXNpYmxlKSB7CisrICAgICAgICBRQWNjZXNzaWJsZUV2ZW50IGV2KHRoaXMsIFFBY2Nlc3Np YmxlOjpPYmplY3RTaG93KTsKKysgICAgICAgIFFBY2Nlc3NpYmxlOjp1cGRhdGVBY2Nlc3NpYmls aXR5KCZldik7CisrICAgIH0KKysjZW5kaWYKKyB9CisgCisgUVF1aWNrU3RhdGVHcm91cCAqUVF1 aWNrSXRlbVByaXZhdGU6Ol9zdGF0ZXMoKQorQEAgLTYxMDYsOSArNjEyMSwxMSBAQCBib29sIFFR dWlja0l0ZW1Qcml2YXRlOjpzZXRFZmZlY3RpdmVWaXNpYmxlUmVjdXIoYm9vbCBuZXdFZmZlY3Rp dmVWaXNpYmxlKQorICAgICAgICAgUUFjY2Vzc2libGU6OnVwZGF0ZUFjY2Vzc2liaWxpdHkoJmV2 KTsKKyAgICAgfQorICNlbmRpZgorLSAgICBlbWl0IHEtPnZpc2libGVDaGFuZ2VkKCk7CistICAg IGlmIChjaGlsZFZpc2liaWxpdHlDaGFuZ2VkKQorLSAgICAgICAgZW1pdCBxLT52aXNpYmxlQ2hp bGRyZW5DaGFuZ2VkKCk7CisrICAgIGlmICghaW5EZXN0cnVjdG9yKSB7CisrICAgICAgICBlbWl0 IHEtPnZpc2libGVDaGFuZ2VkKCk7CisrICAgICAgICBpZiAoY2hpbGRWaXNpYmlsaXR5Q2hhbmdl ZCkKKysgICAgICAgICAgICBlbWl0IHEtPnZpc2libGVDaGlsZHJlbkNoYW5nZWQoKTsKKysgICAg fQorIAorICAgICByZXR1cm4gdHJ1ZTsgICAgLy8gZWZmZWN0aXZlIHZpc2liaWxpdHkgRElEIGNo YW5nZQorIH0KK0BAIC02MTU3LDYgKzYxNzQsMTUgQEAgdm9pZCBRUXVpY2tJdGVtUHJpdmF0ZTo6 c2V0RWZmZWN0aXZlRW5hYmxlUmVjdXIoUVF1aWNrSXRlbSAqc2NvcGUsIGJvb2wgbmV3RWZmZWMK KyAgICAgfQorIAorICAgICBpdGVtQ2hhbmdlKFFRdWlja0l0ZW06Okl0ZW1FbmFibGVkSGFzQ2hh bmdlZCwgZWZmZWN0aXZlRW5hYmxlKTsKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisr ICAgIGlmIChpc0FjY2Vzc2libGUpIHsKKysgICAgICAgIFFBY2Nlc3NpYmxlOjpTdGF0ZSBjaGFu Z2VkU3RhdGU7CisrICAgICAgICBjaGFuZ2VkU3RhdGUuZGlzYWJsZWQgPSB0cnVlOworKyAgICAg ICAgY2hhbmdlZFN0YXRlLmZvY3VzYWJsZSA9IHRydWU7CisrICAgICAgICBRQWNjZXNzaWJsZVN0 YXRlQ2hhbmdlRXZlbnQgZXYocSwgY2hhbmdlZFN0YXRlKTsKKysgICAgICAgIFFBY2Nlc3NpYmxl Ojp1cGRhdGVBY2Nlc3NpYmlsaXR5KCZldik7CisrICAgIH0KKysjZW5kaWYKKyAgICAgZW1pdCBx LT5lbmFibGVkQ2hhbmdlZCgpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0 ZW1zL3FxdWlja2l0ZW1fcC5oCitpbmRleCA4NDFkOTFiYjQwLi5hZGU4ZmI2MWYyIDEwMDY0NAor LS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbV9wLmgKKysrKyBi L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW1fcC5oCitAQCAtNDcyLDYg KzQ3Miw3IEBAIHB1YmxpYzoKKyAgICAgYm9vbCByZXBsYXlpbmdQcmVzc0V2ZW50OjE7CisgICAg IGJvb2wgdG91Y2hFbmFibGVkOjE7CisgICAgIGJvb2wgaGFzQ3Vyc29ySGFuZGxlcjoxOworKyAg ICBxdWludDMyIGluRGVzdHJ1Y3RvcjoxOyAvLyBoYXMgZW50ZXJlZCB+UVF1aWNrSXRlbQorIAor ICAgICBlbnVtIERpcnR5VHlwZSB7CisgICAgICAgICBUcmFuc2Zvcm1PcmlnaW4gICAgICAgICA9 IDB4MDAwMDAwMDEsCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMv cXF1aWNraXRlbXZpZXcuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNr aXRlbXZpZXcuY3BwCitpbmRleCAwMTBhMDE1MmUxLi5mOGFkMTY4YTE3IDEwMDY0NAorLS0tIGEv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbXZpZXcuY3BwCisrKysgYi9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtdmlldy5jcHAKK0BAIC0xNzg1 LDcgKzE3ODUsNyBAQCB2b2lkIFFRdWlja0l0ZW1WaWV3UHJpdmF0ZTo6cmVmaWxsKHFyZWFsIGZy b20sIHFyZWFsIHRvKQorIAorICAgICBkbyB7CisgICAgICAgICBidWZmZXJQYXVzZS5zdG9wKCk7 CistICAgICAgICBpZiAoY3VycmVudENoYW5nZXMuaGFzUGVuZGluZ0NoYW5nZXMoKSB8fCBidWZm ZXJlZENoYW5nZXMuaGFzUGVuZGluZ0NoYW5nZXMoKSkgeworKyAgICAgICAgaWYgKGN1cnJlbnRD aGFuZ2VzLmhhc1BlbmRpbmdDaGFuZ2VzKCkgfHwgYnVmZmVyZWRDaGFuZ2VzLmhhc1BlbmRpbmdD aGFuZ2VzKCkgfHwgY3VycmVudENoYW5nZXMuYWN0aXZlKSB7CisgICAgICAgICAgICAgY3VycmVu dENoYW5nZXMucmVzZXQoKTsKKyAgICAgICAgICAgICBidWZmZXJlZENoYW5nZXMucmVzZXQoKTsK KyAgICAgICAgICAgICByZWxlYXNlVmlzaWJsZUl0ZW1zKHJldXNhYmxlRmxhZyk7CitkaWZmIC0t Z2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrbW91c2VhcmVhX3BfcC5o IGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrbW91c2VhcmVhX3BfcC5oCitp bmRleCBmYmEzODNlMjY4Li4wZDYzNjE4NjIyIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2svaXRlbXMvcXF1aWNrbW91c2VhcmVhX3BfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZl L3NyYy9xdWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmgKK0BAIC02MSw3ICs2MSw2IEBA IFFUX0JFR0lOX05BTUVTUEFDRQorIAorIGNsYXNzIFFRdWlja01vdXNlRXZlbnQ7CisgY2xhc3Mg UVF1aWNrTW91c2VBcmVhOworLWNsYXNzIFFRdWlja1BvaW50ZXJNYXNrOworIGNsYXNzIFFRdWlj a01vdXNlQXJlYVByaXZhdGUgOiBwdWJsaWMgUVF1aWNrSXRlbVByaXZhdGUKKyB7CisgICAgIFFf REVDTEFSRV9QVUJMSUMoUVF1aWNrTW91c2VBcmVhKQorQEAgLTEwMCw3ICs5OSw2IEBAIHB1Ymxp YzoKKyAjaWYgUVRfQ09ORklHKHF1aWNrX2RyYWdhbmRkcm9wKQorICAgICBRUXVpY2tEcmFnICpk cmFnOworICNlbmRpZgorLSAgICBRUG9pbnRlcjxRUXVpY2tQb2ludGVyTWFzaz4gbWFzazsKKyAg ICAgUVBvaW50RiBzdGFydFNjZW5lOworICAgICBRUG9pbnRGIHRhcmdldFN0YXJ0UG9zOworICAg ICBRUG9pbnRGIGxhc3RQb3M7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2sv aXRlbXMvcXF1aWNrdGV4dC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVp Y2t0ZXh0LmNwcAoraW5kZXggNjIzMDE4NjkzMy4uZTgyM2NhMTA5NSAxMDA2NDQKKy0tLSBhL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja3RleHQuY3BwCisrKysgYi9xdGRlY2xh cmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2t0ZXh0LmNwcAorQEAgLTIxNjgsNyArMjE2OCw3 IEBAIHZvaWQgUVF1aWNrVGV4dDo6cmVzZXRNYXhpbXVtTGluZUNvdW50KCkKKyAgICAgPGltZyBz cmM9IiIgYWxpZ249InRvcCxtaWRkbGUsYm90dG9tIiB3aWR0aD0iIiBoZWlnaHQ9IiI+IC0gaW5s aW5lIGltYWdlcworICAgICA8b2wgdHlwZT0iIj4sIDx1bCB0eXBlPSIiPiBhbmQgPGxpPiAtIG9y ZGVyZWQgYW5kIHVub3JkZXJlZCBsaXN0cworICAgICA8cHJlPjwvcHJlPiAtIHByZWZvcm1hdHRl ZAorLSAgICAmZ3Q7ICZsdDsgJmFtcDsKKysgICAgJmd0OyAmbHQ7ICZhbXA7ICZxdW90OyAmbmJz cDsgJmFwb3M7CisgICAgIFxlbmRjb2RlCisgCisgICAgIFxjIFRleHQuU3R5bGVkVGV4dCBwYXJz ZXIgaXMgc3RyaWN0LCByZXF1aXJpbmcgdGFncyB0byBiZSBjb3JyZWN0bHkgbmVzdGVkLgorZGlm ZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgvcXNncmhpZGlzdGFu Y2VmaWVsZGdseXBoY2FjaGUuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVncmFw aC9xc2dyaGlkaXN0YW5jZWZpZWxkZ2x5cGhjYWNoZS5jcHAKK2luZGV4IGViNGRiMGY4NWUuLjIz MjVhMjY2NWIgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9zY2VuZWdyYXBo L3FzZ3JoaWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0YW5jZWZpZWxkZ2x5cGhjYWNoZS5jcHAKK0BA IC00NDYsNyArNDQ2LDcgQEAgYm9vbCBRU0dSaGlEaXN0YW5jZUZpZWxkR2x5cGhDYWNoZTo6bG9h ZFByZWdlbmVyYXRlZENhY2hlKGNvbnN0IFFSYXdGb250ICZmb250KQorIAorICAgICAgICAgY29u c3QgY2hhciAqdGV4dHVyZVJlY29yZCA9IGFsbG9jYXRvckRhdGE7CisgICAgICAgICBmb3IgKGlu dCBpID0gMDsgaSA8IHRleHR1cmVDb3VudDsgKytpLCB0ZXh0dXJlUmVjb3JkICs9IFF0ZGY6OlRl eHR1cmVSZWNvcmRTaXplKSB7CistICAgICAgICAgICAgaWYgKHRleHR1cmVSZWNvcmQgKyBRdGRm OjpUZXh0dXJlUmVjb3JkU2l6ZSA+IHF0ZGZUYWJsZUVuZCkgeworKyAgICAgICAgICAgIGlmIChx dGRmVGFibGVFbmQgLSB0ZXh0dXJlUmVjb3JkIDwgUXRkZjo6VGV4dHVyZVJlY29yZFNpemUpIHsK KyAgICAgICAgICAgICAgICAgcVdhcm5pbmcoInF0ZGYgdGFibGUgdG9vIHNtYWxsIGluIGZvbnQg JyVzJy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBxUHJpbnRhYmxlKGZvbnQuZmFtaWx5 TmFtZSgpKSk7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKK0BAIC00NjIsNyArNDYy LDcgQEAgYm9vbCBRU0dSaGlEaXN0YW5jZUZpZWxkR2x5cGhDYWNoZTo6bG9hZFByZWdlbmVyYXRl ZENhY2hlKGNvbnN0IFFSYXdGb250ICZmb250KQorIAorICAgICAgICAgY29uc3QgY2hhciAqZ2x5 cGhSZWNvcmQgPSB0ZXh0dXJlUmVjb3JkOworICAgICAgICAgZm9yIChxdWludDMyIGkgPSAwOyBp IDwgZ2x5cGhDb3VudDsgKytpLCBnbHlwaFJlY29yZCArPSBRdGRmOjpHbHlwaFJlY29yZFNpemUp IHsKKy0gICAgICAgICAgICBpZiAoZ2x5cGhSZWNvcmQgKyBRdGRmOjpHbHlwaFJlY29yZFNpemUg PiBxdGRmVGFibGVFbmQpIHsKKysgICAgICAgICAgICBpZiAocXRkZlRhYmxlRW5kIC0gZ2x5cGhS ZWNvcmQgPCBRdGRmOjogR2x5cGhSZWNvcmRTaXplKSB7CisgICAgICAgICAgICAgICAgIHFXYXJu aW5nKCJxdGRmIHRhYmxlIHRvbyBzbWFsbCBpbiBmb250ICclcycuIiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgcVByaW50YWJsZShmb250LmZhbWlseU5hbWUoKSkpOworICAgICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CitAQCAtNTEyLDggKzUxMiw4IEBAIGJvb2wgUVNHUmhpRGlzdGFu Y2VGaWVsZEdseXBoQ2FjaGU6OmxvYWRQcmVnZW5lcmF0ZWRDYWNoZShjb25zdCBRUmF3Rm9udCAm Zm9udCkKKyAKKyAgICAgICAgICAgICBpbnQgd2lkdGggPSB0ZXhJbmZvLT5hbGxvY2F0ZWRBcmVh LndpZHRoKCk7CisgICAgICAgICAgICAgaW50IGhlaWdodCA9IHRleEluZm8tPmFsbG9jYXRlZEFy ZWEuaGVpZ2h0KCk7CistICAgICAgICAgICAgcWludDY0IHNpemUgPSB3aWR0aCAqIGhlaWdodDsK Ky0gICAgICAgICAgICBpZiAocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KHRleHR1cmVE YXRhICsgc2l6ZSkgPiBxdGRmVGFibGVFbmQpIHsKKysgICAgICAgICAgICBxaW50NjQgc2l6ZSA9 IHFpbnQ2NCh3aWR0aCkgKiBoZWlnaHQ7CisrICAgICAgICAgICAgaWYgKHF0ZGZUYWJsZUVuZCAt IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPih0ZXh0dXJlRGF0YSkgPCBzaXplKSB7Cisg ICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJxdGRmIHRhYmxlIHRvbyBzbWFsbCBpbiBmb250ICcl cycuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcVByaW50YWJsZShmb250LmZhbWlseU5h bWUoKSkpOworICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CitkaWZmIC0tZ2l0IGEvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHlsZWR0ZXh0LmNwcCBiL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrL3V0aWwvcXF1aWNrc3R5bGVkdGV4dC5jcHAKK2luZGV4IGQ1MzFmYzky MDUuLmEyNWFmOTA0MTQgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay91dGls L3FxdWlja3N0eWxlZHRleHQuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay91dGls L3FxdWlja3N0eWxlZHRleHQuY3BwCitAQCAtNTY0LDYgKzU2NCw4IEBAIHZvaWQgUVF1aWNrU3R5 bGVkVGV4dFByaXZhdGU6OnBhcnNlRW50aXR5KGNvbnN0IFFDaGFyIComY2gsIGNvbnN0IFFTdHJp bmcgJnRleHRJCisgICAgICAgICAgICAgICAgIHRleHRPdXQgKz0gUUNoYXIoNjApOworICAgICAg ICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3RyaW5nKCJhbXAiKSkKKyAgICAgICAg ICAgICAgICAgdGV4dE91dCArPSBRQ2hhcigzOCk7CisrICAgICAgICAgICAgZWxzZSBpZiAoZW50 aXR5ID09IFFMYXRpbjFTdHJpbmcoImFwb3MiKSkKKysgICAgICAgICAgICAgICAgdGV4dE91dCAr PSBRQ2hhcigzOSk7CisgICAgICAgICAgICAgZWxzZSBpZiAoZW50aXR5ID09IFFMYXRpbjFTdHJp bmcoInF1b3QiKSkKKyAgICAgICAgICAgICAgICAgdGV4dE91dCArPSBRQ2hhcigzNCk7CisgICAg ICAgICAgICAgZWxzZSBpZiAoZW50aXR5ID09IFFMYXRpbjFTdHJpbmcoIm5ic3AiKSkKK2RpZmYg LS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dp ZGdldC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlj a3dpZGdldC5jcHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi44YTFj OTAxODgwCistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdl dHMvcWFjY2Vzc2libGVxdWlja3dpZGdldC5jcHAKK0BAIC0wLDAgKzEsMTEwIEBACisrLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFu eSBMdGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisr KiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0UXVpY2sgbW9kdWxlIG9mIHRoZSBRdCBUb29s a2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21tZXJjaWFsIExp Y2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxp Y2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21t ZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUg b3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVk IGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBh bnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93 d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1 c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoq CisrKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJu YXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0 aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2thZ2luZyBvZiB0 aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bworKyoq IGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBy ZXF1aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy9sZ3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNh Z2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9y IChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxpY2Vuc2UgdmVy c2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQorKyoq IFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VO U0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBv ZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGluZm9ybWF0aW9u IHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdp bGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1s IGFuZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgorKyoq CisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysj aW5jbHVkZSAicWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmgiCisrCisrI2luY2x1ZGUgInFxdWlj a3dpZGdldF9wLmgiCisrCisrUVRfQkVHSU5fTkFNRVNQQUNFCisrCisrI2lmIFFUX0NPTkZJRyhh Y2Nlc3NpYmlsaXR5KQorKworK1FBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OlFBY2Nlc3NpYmxlUXVp Y2tXaWRnZXQoUVF1aWNrV2lkZ2V0KiB3aWRnZXQpCisrOiBRQWNjZXNzaWJsZVdpZGdldCh3aWRn ZXQpCisrLCBtX2FjY2Vzc2libGVXaW5kb3coUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6Z2V0KHdpZGdl dCktPm9mZnNjcmVlbldpbmRvdykKKyt7CisrICAgIC8vIE5PVEU6IG1fYWNjZXNzaWJsZVdpbmRv dyBpcyBhIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3csIGFuZCBub3QgYQorKyAgICAvLyBRQWNjZXNz aWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93IChkZWZpbmVkIGJlbG93KS4gVGhpcyBtZWFu cworKyAgICAvLyBpdCB3aWxsIHJldHVybiB0aGUgUXVpY2sgaXRlbSBjaGlsZCBpbnRlcmZhY2Vz LCB3aGljaCBpcyB3aGF0J3MgbmVlZGVkIGhlcmUKKysgICAgLy8gKHVubGlrZSBRQWNjZXNzaWJs ZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93LCB3aGljaCB3aWxsIHJlcG9ydCAwIGNoaWxkcmVu KS4KKyt9CisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6 OmNoaWxkKGludCBpbmRleCkgY29uc3QKKyt7CisrICAgIHJldHVybiBtX2FjY2Vzc2libGVXaW5k b3cuY2hpbGQoaW5kZXgpOworK30KKysKKytpbnQgUUFjY2Vzc2libGVRdWlja1dpZGdldDo6Y2hp bGRDb3VudCgpIGNvbnN0CisreworKyAgICByZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93LmNoaWxk Q291bnQoKTsKKyt9CisrCisraW50IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OmluZGV4T2ZDaGls ZChjb25zdCBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UpIGNvbnN0CisreworKyAgICByZXR1 cm4gbV9hY2Nlc3NpYmxlV2luZG93LmluZGV4T2ZDaGlsZChpZmFjZSk7CisrfQorKworK1FBY2Nl c3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjpjaGlsZEF0KGludCB4LCBp bnQgeSkgY29uc3QKKyt7CisrICAgIHJldHVybiBtX2FjY2Vzc2libGVXaW5kb3cuY2hpbGRBdCh4 LCB5KTsKKyt9CisrCisrUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6UUFj Y2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhRUXVpY2tXaW5kb3cgKndpbmRvdykK Kys6UUFjY2Vzc2libGVRdWlja1dpbmRvdyh3aW5kb3cpCisreworKworK30KKysKKytRQWNjZXNz aWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6Y2hp bGQoaW50IGluZGV4KSBjb25zdAorK3sKKysgICAgUV9VTlVTRUQoaW5kZXgpOworKyAgICByZXR1 cm4gbnVsbHB0cjsKKyt9CisrCisraW50IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5X aW5kb3c6OmNoaWxkQ291bnQoKSBjb25zdAorK3sKKysgICAgcmV0dXJuIDA7CisrfQorKworK2lu dCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjppbmRleE9mQ2hpbGQoY29u c3QgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdAorK3sKKysgICAgUV9VTlVTRUQo aWZhY2UpOworKyAgICByZXR1cm4gLTE7CisrfQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpR QWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpRQWNjZXNzaWJsZVF1aWNrV2lk Z2V0T2Zmc2NyZWVuV2luZG93OjpjaGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3QKKyt7CisrICAg IFFfVU5VU0VEKHgpOworKyAgICBRX1VOVVNFRCh5KTsKKysgICAgcmV0dXJuIG51bGxwdHI7Cisr fQorKworKyNlbmRpZiAvLyBhY2Nlc3NpYmlsaXR5CisrCisrUVRfRU5EX05BTUVTUEFDRQorZGlm ZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNr d2lkZ2V0X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1 aWNrd2lkZ2V0X3AuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjdj MmFiOTMwZTAKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lk Z2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaAorQEAgLTAsMCArMSw5NSBAQAorKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBh bnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgor KyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFF1aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9v bGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBM aWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBs aWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29t bWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJl IG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5l ZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21w YW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8v d3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24g dXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysq KgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVy bmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4g dGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2Yg dGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysq KiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMg cmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVz YWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBv ciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZl cnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysq KiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNF TlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcg b2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlv biB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3 aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRt bCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysq KgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisr I2lmbmRlZiBRQUNDRVNTSUJMRVFVSUNLV0lER0VUX0gKKysjZGVmaW5lIFFBQ0NFU1NJQkxFUVVJ Q0tXSURHRVRfSAorKworKy8vCisrLy8gIFcgQSBSIE4gSSBOIEcKKysvLyAgLS0tLS0tLS0tLS0t LQorKy8vCisrLy8gVGhpcyBmaWxlIGlzIG5vdCBwYXJ0IG9mIHRoZSBRdCBBUEkuICBJdCBleGlz dHMgcHVyZWx5IGFzIGFuCisrLy8gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVGhpcyBoZWFkZXIg ZmlsZSBtYXkgY2hhbmdlIGZyb20gdmVyc2lvbiB0bworKy8vIHZlcnNpb24gd2l0aG91dCBub3Rp Y2UsIG9yIGV2ZW4gYmUgcmVtb3ZlZC4KKysvLworKy8vIFdlIG1lYW4gaXQuCisrLy8KKysKKysj aW5jbHVkZSAicXF1aWNrd2lkZ2V0LmgiCisrI2luY2x1ZGUgPFF0V2lkZ2V0cy9xYWNjZXNzaWJs ZXdpZGdldC5oPgorKworKyNpbmNsdWRlIDxwcml2YXRlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3Au aD4KKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxp dHkpCisrCisrLy8gVGhlc2UgY2xhc3NlcyBpbXBsZW1lbnQgdGhlIFFRdWlja1dpZ2V0IGFjY2Vz c2liaWxpdHkgc3dpdGNoYXJvbywKKysvLyB3aGVyZSB0aGUgY2hpbGQgaXRlbXMgb2YgdGhlIFFR dWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyBhcmUgcmVwb3J0ZWQKKysvLyBhcyBjaGlsZCBhY2Nl c3NpYmxlIGludGVyZmFjZXMgb2YgdGhlIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQuCisrY2xhc3Mg UUFjY2Vzc2libGVRdWlja1dpZGdldDogcHVibGljIFFBY2Nlc3NpYmxlV2lkZ2V0CisreworK3B1 YmxpYzoKKysgICAgUUFjY2Vzc2libGVRdWlja1dpZGdldChRUXVpY2tXaWRnZXQqIHdpZGdldCk7 CisrCisrICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGlsZChpbnQgaW5kZXgpIGNvbnN0IG92 ZXJyaWRlOworKyAgICBpbnQgY2hpbGRDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBpbnQg aW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSkgY29uc3Qgb3Zl cnJpZGU7CisrICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGlsZEF0KGludCB4LCBpbnQgeSkg Y29uc3Qgb3ZlcnJpZGU7CisrCisrcHJpdmF0ZToKKysgICAgUUFjY2Vzc2libGVRdWlja1dpbmRv dyBtX2FjY2Vzc2libGVXaW5kb3c7CisrICAgIFFfRElTQUJMRV9DT1BZKFFBY2Nlc3NpYmxlUXVp Y2tXaWRnZXQpCisrfTsKKysKKytjbGFzcyBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVu V2luZG93OiBwdWJsaWMgUUFjY2Vzc2libGVRdWlja1dpbmRvdworK3sKKytwdWJsaWM6CisrICAg IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3coUVF1aWNrV2luZG93ICp3aW5k b3cpOworKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqY2hpbGQoaW50IGluZGV4KSBjb25zdCBv dmVycmlkZTsKKysgICAgaW50IGNoaWxkQ291bnQoKSBjb25zdCBvdmVycmlkZTsKKysgICAgaW50 IGluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UpIGNvbnN0IG92 ZXJyaWRlOworKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqY2hpbGRBdChpbnQgeCwgaW50IHkp IGNvbnN0IG92ZXJyaWRlOworK307CisrCisrI2VuZGlmIC8vIGFjY2Vzc2liaWxpdHkKKysKKytR VF9FTkRfTkFNRVNQQUNFCisrCisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5LmNwcCBiL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeS5j cHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43YmE4OGExNzY5Cist LS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vz c2libGVxdWlja3dpZGdldGZhY3RvcnkuY3BwCitAQCAtMCwwICsxLDYwIEBACisrLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBM dGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisrKiog VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0UXVpY2sgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0 LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21tZXJjaWFsIExpY2Vu c2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vu c2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJj aWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUgb3Is IGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGlu CisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnku IEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cu cXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1c2Ug dGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoqCisr KiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRp dmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl c3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUg ZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2thZ2luZyBvZiB0aGlz IGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bworKyoqIGVu c3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyByZXF1 aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9s Z3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UK KysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9yIChh dCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxpY2Vuc2UgdmVyc2lv biAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQorKyoqIFF0 IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0Uu R1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0 aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGluZm9ybWF0aW9uIHRv IGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwK KysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIGFu ZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgorKyoqCisr KiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjaW5j bHVkZSAicWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oIgorKyNpbmNsdWRlICJxYWNj ZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaCIKKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKysjaWYg UVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKnFBY2Nl c3NpYmxlUXVpY2tXaWRnZXRGYWN0b3J5KGNvbnN0IFFTdHJpbmcgJmNsYXNzbmFtZSwgUU9iamVj dCAqb2JqZWN0KQorK3sKKysgICAgaWYgKGNsYXNzbmFtZSA9PSBRTGF0aW4xU3RyaW5nKCJRUXVp Y2tXaWRnZXQiKSkgeworKyAgICAgICAgcmV0dXJuIG5ldyBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0 KHFvYmplY3RfY2FzdDxRUXVpY2tXaWRnZXQgKj4ob2JqZWN0KSk7CisrICAgIH0gZWxzZSBpZiAo Y2xhc3NuYW1lID09IFFMYXRpbjFTdHJpbmcoIlFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyIp KSB7CisrICAgICAgICByZXR1cm4gbmV3IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5X aW5kb3cocW9iamVjdF9jYXN0PFFRdWlja1dpbmRvdyAqPihvYmplY3QpKTsKKysgICAgfQorKyAg ICByZXR1cm4gMDsKKyt9CisrCisrI2VuZGlmIC8vIGFjY2Vzc2liaWxpdHkKKysKKytRVF9FTkRf TkFNRVNQQUNFCisrCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRz L3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi44YzYzYjA5ZjgxCistLS0gL2Rldi9udWxsCisr KysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdl dGZhY3RvcnlfcC5oCitAQCAtMCwwICsxLDY2IEBACisrLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysq KgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29udGFj dDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBh cnQgb2YgdGhlIFF0UXVpY2sgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFU X0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKysqKiBM aWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhp cyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdy ZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHks IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCisrKiogYSB3cml0dGVu IGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcg dGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29u ZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9y bSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoqCisrKiogR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxl IG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlcgorKyoqIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxH UEwzIGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSBy ZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bworKyoqIGVuc3VyZSB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMKKysqKiB3 aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgor KyoqCisrKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2 ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKysq KiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikg dGhlIEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRl ciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQorKyoqIFF0IEZvdW5kYXRpb24uIFRo ZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91 bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5T RS5HUEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFz ZSByZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKKysqKiBiZSBtZXQ6IGh0 dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAorKyoqIGh0dHBzOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgorKyoqCisrKiogJFFUX0VORF9MSUNF TlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjaW5jbHVkZSA8UXRHdWkvcWFj Y2Vzc2libGUuaD4KKysKKysjaWZuZGVmIFFBQ0NFU1NJQkxFUVVJQ0tXSURHRVRGQUNUT1JZX0gK KysjZGVmaW5lIFFBQ0NFU1NJQkxFUVVJQ0tXSURHRVRGQUNUT1JZX0gKKysKKysvLworKy8vICBX IEEgUiBOIEkgTiBHCisrLy8gIC0tLS0tLS0tLS0tLS0KKysvLworKy8vIFRoaXMgZmlsZSBpcyBu b3QgcGFydCBvZiB0aGUgUXQgQVBJLiAgSXQgZXhpc3RzIHB1cmVseSBhcyBhbgorKy8vIGltcGxl bWVudGF0aW9uIGRldGFpbC4gIFRoaXMgaGVhZGVyIGZpbGUgbWF5IGNoYW5nZSBmcm9tIHZlcnNp b24gdG8KKysvLyB2ZXJzaW9uIHdpdGhvdXQgbm90aWNlLCBvciBldmVuIGJlIHJlbW92ZWQuCisr Ly8KKysvLyBXZSBtZWFuIGl0LgorKy8vCisrCisrUVRfQkVHSU5fTkFNRVNQQUNFCisrCisrI2lm IFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpxQWNj ZXNzaWJsZVF1aWNrV2lkZ2V0RmFjdG9yeShjb25zdCBRU3RyaW5nICZjbGFzc25hbWUsIFFPYmpl Y3QgKm9iamVjdCk7CisrCisrI2VuZGlmCisrCisrUVRfRU5EX05BTUVTUEFDRQorKworKyNlbmRp ZgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRn ZXQuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldC5jcHAK K2luZGV4IDM5NzgwZjhkZTMuLjljOTdiNDM1MTggMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZl L3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldC5jcHAKK0BAIC0zOSw2ICszOSw3IEBACisgCisg I2luY2x1ZGUgInFxdWlja3dpZGdldC5oIgorICNpbmNsdWRlICJxcXVpY2t3aWRnZXRfcC5oIgor KyNpbmNsdWRlICJxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgiCisgCisgI2luY2x1 ZGUgInByaXZhdGUvcXF1aWNrd2luZG93X3AuaCIKKyAjaW5jbHVkZSAicHJpdmF0ZS9xcXVpY2tp dGVtX3AuaCIKK0BAIC03NSw5ICs3NiwxNiBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAor K1FRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6UVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93 KFFRdWlja1dpbmRvd1ByaXZhdGUgJmRkLCBRUXVpY2tSZW5kZXJDb250cm9sICpjb250cm9sKQor KzpRUXVpY2tXaW5kb3coZGQsIGNvbnRyb2wpCisreworKyAgICBzZXRUaXRsZShRU3RyaW5nOjpm cm9tTGF0aW4xKCJPZmZzY3JlZW4iKSk7CisrICAgIHNldE9iamVjdE5hbWUoUVN0cmluZzo6ZnJv bUxhdGluMSgiUVF1aWNrT2ZmU2NyZWVuV2luZG93IikpOworK30KKysKKyAvLyBvdmVycmlkZSBz ZXRWaXNibGUgdG8gcHJldmVudCBhY2NpZGVudGFsIG9mZnNjcmVlbiB3aW5kb3cgYmVpbmcgY3Jl YXRlZAorIC8vIGJ5IGJhc2UgY2xhc3MuCistY2xhc3MgUVF1aWNrT2ZmY3JlZW5XaW5kb3dQcml2 YXRlOiBwdWJsaWMgUVF1aWNrV2luZG93UHJpdmF0ZSB7CisrY2xhc3MgUVF1aWNrV2lkZ2V0T2Zm c2NyZWVuV2luZG93UHJpdmF0ZTogcHVibGljIFFRdWlja1dpbmRvd1ByaXZhdGUgeworIHB1Ymxp YzoKKyAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkgb3ZlcnJpZGUgeworICAgICAg ICAgUV9RKFFXaW5kb3cpOworQEAgLTEwNSw5ICsxMTMsOCBAQCB2b2lkIFFRdWlja1dpZGdldFBy aXZhdGU6OmluaXQoUVFtbEVuZ2luZSogZSkKKyAgICAgUV9RKFFRdWlja1dpZGdldCk7CisgCisg ICAgIHJlbmRlckNvbnRyb2wgPSBuZXcgUVF1aWNrV2lkZ2V0UmVuZGVyQ29udHJvbChxKTsKKy0g ICAgb2Zmc2NyZWVuV2luZG93ID0gbmV3IFFRdWlja1dpbmRvdygqbmV3IFFRdWlja09mZmNyZWVu V2luZG93UHJpdmF0ZSgpLHJlbmRlckNvbnRyb2wpOworLSAgICBvZmZzY3JlZW5XaW5kb3ctPnNl dFRpdGxlKFFTdHJpbmc6OmZyb21MYXRpbjEoIk9mZnNjcmVlbiIpKTsKKy0gICAgb2Zmc2NyZWVu V2luZG93LT5zZXRPYmplY3ROYW1lKFFTdHJpbmc6OmZyb21MYXRpbjEoIlFRdWlja09mZlNjcmVl bldpbmRvdyIpKTsKKysgICAgb2Zmc2NyZWVuV2luZG93ID0gbmV3IFFRdWlja1dpZGdldE9mZnNj cmVlbldpbmRvdygqbmV3IFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvd1ByaXZhdGUoKSwgcmVu ZGVyQ29udHJvbCk7CisrICAgIG9mZnNjcmVlbldpbmRvdy0+c2V0U2NyZWVuKHEtPnNjcmVlbigp KTsKKyAgICAgLy8gRG8gbm90IGNhbGwgY3JlYXRlKCkgb24gb2Zmc2NyZWVuV2luZG93LgorIAor ICAgICAvLyBDaGVjayBpZiB0aGUgU29mdHdhcmUgQWRhcHRhdGlvbiBpcyBiZWluZyB1c2VkCitA QCAtMTM4LDYgKzE0NSwxMCBAQCB2b2lkIFFRdWlja1dpZGdldFByaXZhdGU6OmluaXQoUVFtbEVu Z2luZSogZSkKKyAgICAgUVdpZGdldDo6Y29ubmVjdChvZmZzY3JlZW5XaW5kb3csICZRUXVpY2tX aW5kb3c6OmZvY3VzT2JqZWN0Q2hhbmdlZCwgcSwgJlFRdWlja1dpZGdldDo6cHJvcGFnYXRlRm9j dXNPYmplY3RDaGFuZ2VkKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChyZW5kZXJDb250cm9sLCBT SUdOQUwocmVuZGVyUmVxdWVzdGVkKCkpLCBxLCBTTE9UKHRyaWdnZXJVcGRhdGUoKSkpOworICAg ICBRT2JqZWN0Ojpjb25uZWN0KHJlbmRlckNvbnRyb2wsIFNJR05BTChzY2VuZUNoYW5nZWQoKSks IHEsIFNMT1QodHJpZ2dlclVwZGF0ZSgpKSk7CisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmls aXR5KQorKyAgICBRQWNjZXNzaWJsZTo6aW5zdGFsbEZhY3RvcnkoJnFBY2Nlc3NpYmxlUXVpY2tX aWRnZXRGYWN0b3J5KTsKKysjZW5kaWYKKyB9CisgCisgdm9pZCBRUXVpY2tXaWRnZXRQcml2YXRl OjplbnN1cmVFbmdpbmUoKSBjb25zdAorQEAgLTkwMSw5ICs5MTIsNyBAQCB2b2lkIFFRdWlja1dp ZGdldFByaXZhdGU6OmNyZWF0ZUNvbnRleHQoKQorIAorICAgICAgICAgY29udGV4dCA9IG5ldyBR T3BlbkdMQ29udGV4dDsKKyAgICAgICAgIGNvbnRleHQtPnNldEZvcm1hdChvZmZzY3JlZW5XaW5k b3ctPnJlcXVlc3RlZEZvcm1hdCgpKTsKKy0gICAgICAgIGNvbnN0IFFXaW5kb3cgKndpbiA9IHEt PndpbmRvdygpLT53aW5kb3dIYW5kbGUoKTsKKy0gICAgICAgIGlmICh3aW4gJiYgd2luLT5zY3Jl ZW4oKSkKKy0gICAgICAgICAgICBjb250ZXh0LT5zZXRTY3JlZW4od2luLT5zY3JlZW4oKSk7Cisr ICAgICAgICBjb250ZXh0LT5zZXRTY3JlZW4ocS0+c2NyZWVuKCkpOworICAgICAgICAgUU9wZW5H TENvbnRleHQgKnNoYXJlQ29udGV4dCA9IHF0X2dsX2dsb2JhbF9zaGFyZV9jb250ZXh0KCk7Cisg ICAgICAgICBpZiAoIXNoYXJlQ29udGV4dCkKKyAgICAgICAgICAgICBzaGFyZUNvbnRleHQgPSBR V2lkZ2V0UHJpdmF0ZTo6Z2V0KHEtPndpbmRvdygpKS0+c2hhcmVDb250ZXh0KCk7CitAQCAtMTUy MCwxOSArMTUyOSwxNiBAQCBib29sIFFRdWlja1dpZGdldDo6ZXZlbnQoUUV2ZW50ICplKQorICAg ICAgICAgZC0+aGFuZGxlV2luZG93Q2hhbmdlKCk7CisgICAgICAgICBicmVhazsKKyAKKy0gICAg Y2FzZSBRRXZlbnQ6OlNjcmVlbkNoYW5nZUludGVybmFsOgorLSAgICAgICAgaWYgKFFXaW5kb3cg KndpbmRvdyA9IHRoaXMtPndpbmRvdygpLT53aW5kb3dIYW5kbGUoKSkgeworLSAgICAgICAgICAg IFFTY3JlZW4gKm5ld1NjcmVlbiA9IHdpbmRvdy0+c2NyZWVuKCk7CistCistICAgICAgICAgICAg aWYgKGQtPm9mZnNjcmVlbldpbmRvdykKKy0gICAgICAgICAgICAgICAgZC0+b2Zmc2NyZWVuV2lu ZG93LT5zZXRTY3JlZW4obmV3U2NyZWVuKTsKKy0gICAgICAgICAgICBpZiAoZC0+b2Zmc2NyZWVu U3VyZmFjZSkKKy0gICAgICAgICAgICAgICAgZC0+b2Zmc2NyZWVuU3VyZmFjZS0+c2V0U2NyZWVu KG5ld1NjcmVlbik7CisrICAgIGNhc2UgUUV2ZW50OjpTY3JlZW5DaGFuZ2VJbnRlcm5hbDogewor KyAgICAgICAgUVNjcmVlbiAqbmV3U2NyZWVuID0gc2NyZWVuKCk7CisrICAgICAgICBpZiAoZC0+ b2Zmc2NyZWVuV2luZG93KQorKyAgICAgICAgICAgIGQtPm9mZnNjcmVlbldpbmRvdy0+c2V0U2Ny ZWVuKG5ld1NjcmVlbik7CisrICAgICAgICBpZiAoZC0+b2Zmc2NyZWVuU3VyZmFjZSkKKysgICAg ICAgICAgICBkLT5vZmZzY3JlZW5TdXJmYWNlLT5zZXRTY3JlZW4obmV3U2NyZWVuKTsKKyAjaWYg UVRfQ09ORklHKG9wZW5nbCkKKy0gICAgICAgICAgICBpZiAoZC0+Y29udGV4dCkKKy0gICAgICAg ICAgICAgICAgZC0+Y29udGV4dC0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisrICAgICAgICBpZiAo ZC0+Y29udGV4dCkKKysgICAgICAgICAgICBkLT5jb250ZXh0LT5zZXRTY3JlZW4obmV3U2NyZWVu KTsKKyAjZW5kaWYKKy0gICAgICAgIH0KKyAKKyAgICAgICAgIGlmIChkLT51c2VTb2Z0d2FyZVJl bmRlcmVyCisgI2lmIFFUX0NPTkZJRyhvcGVuZ2wpCitAQCAtMTU0NSw3ICsxNTUxLDcgQEAgYm9v bCBRUXVpY2tXaWRnZXQ6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAgICAgICAgICBkLT5yZW5kZXIo dHJ1ZSk7CisgICAgICAgICB9CisgICAgICAgICBicmVhazsKKy0KKysgICAgfQorICAgICBjYXNl IFFFdmVudDo6U2hvdzoKKyAgICAgY2FzZSBRRXZlbnQ6Ok1vdmU6CisgICAgICAgICBkLT51cGRh dGVQb3NpdGlvbigpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0 cy9xcXVpY2t3aWRnZXRfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlj a3dpZGdldF9wLmgKK2luZGV4IDg4MWY3ZjkyMjAuLjFhOTQ2YmNjNzEgMTAwNjQ0CistLS0gYS9x dGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0X3AuaAorKysrIGIvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldF9wLmgKK0BAIC0xNDgsNiAr MTQ4LDE0IEBAIHB1YmxpYzoKKyAgICAgYm9vbCBmb3JjZUZ1bGxVcGRhdGU7CisgfTsKKyAKKytj bGFzcyBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6IHB1YmxpYyBRUXVpY2tXaW5kb3cKKyt7 CisrICAgIFFfT0JKRUNUCisrCisrcHVibGljOgorKyAgICBRUXVpY2tXaWRnZXRPZmZzY3JlZW5X aW5kb3coUVF1aWNrV2luZG93UHJpdmF0ZSAmZGQsIFFRdWlja1JlbmRlckNvbnRyb2wgKmNvbnRy b2wpOworK307CisrCisgUVRfRU5EX05BTUVTUEFDRQorIAorICNlbmRpZiAvLyBRUXVpY2tXaWRn ZXRfUF9ICitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3F1aWNr d2lkZ2V0cy5wcm8gYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXVpY2t3aWRnZXRz LnBybworaW5kZXggMjQzOGU1NzdhZS4uODVkMTU2YjhhMyAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMucHJvCisrKysgYi9xdGRlY2xhcmF0 aXZlL3NyYy9xdWlja3dpZGdldHMvcXVpY2t3aWRnZXRzLnBybworQEAgLTcsOSArNywxMyBAQCBE RUZJTkVTICAgKz0gUVRfTk9fVVJMX0NBU1RfRlJPTV9TVFJJTkcgUVRfTk9fSU5URUdFUl9FVkVO VF9DT09SRElOQVRFUyBRVF9OT19GTworIEhFQURFUlMgKz0gXAorICAgICBxcXVpY2t3aWRnZXQu aCBcCisgICAgIHFxdWlja3dpZGdldF9wLmggXAorLSAgICBxdHF1aWNrd2lkZ2V0c2dsb2JhbC5o CisrICAgIHF0cXVpY2t3aWRnZXRzZ2xvYmFsLmggXAorKyAgICBxYWNjZXNzaWJsZXF1aWNrd2lk Z2V0X3AuaCBcCisrICAgIHFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaAorIAorIFNP VVJDRVMgKz0gXAorLSAgICBxcXVpY2t3aWRnZXQuY3BwCisrICAgIHFxdWlja3dpZGdldC5jcHAg XAorKyAgICBxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0LmNwcCBcCisrICAgIHFhY2Nlc3NpYmxlcXVp Y2t3aWRnZXRmYWN0b3J5LmNwcAorIAorIGxvYWQocXRfbW9kdWxlKQorZGlmZiAtLWdpdCBhL3F0 ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwIGIv cXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdpbmUvdHN0X3Fqc2VuZ2luZS5jcHAK K2luZGV4IDNiN2Q3NGRmNjMuLmI3NWJmODIwZDUgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZl L3Rlc3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcAorKysrIGIvcXRkZWNs YXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdpbmUvdHN0X3Fqc2VuZ2luZS5jcHAKK0BAIC0x MDIsNiArMTAyLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB2YWx1ZUNvbnZlcnNpb25f UmVndWxhckV4cHJlc3Npb24oKTsKKyAgICAgdm9pZCBjYXN0V2l0aE11bHRpcGxlSW5oZXJpdGFu Y2UoKTsKKyAgICAgdm9pZCBjb2xsZWN0R2FyYmFnZSgpOworKyAgICB2b2lkIGNvbGxlY3RHYXJi YWdlTmVzdGVkV3JhcHBlcnNUd29FbmdpbmVzKCk7CisgICAgIHZvaWQgZ2NXaXRoTmVzdGVkRGF0 YVN0cnVjdHVyZSgpOworICAgICB2b2lkIHN0YWNrdHJhY2UoKTsKKyAgICAgdm9pZCBudW1iZXJQ YXJzaW5nX2RhdGEoKTsKK0BAIC0xODA5LDYgKzE4MTAsNDQgQEAgdm9pZCB0c3RfUUpTRW5naW5l Ojpjb2xsZWN0R2FyYmFnZSgpCisgICAgIFFWRVJJRlkocHRyLmlzTnVsbCgpKTsKKyB9CisgCisr Y2xhc3MgVGVzdE9iamVjdENvbnRhaW5lciA6IHB1YmxpYyBRT2JqZWN0CisreworKyAgICBRX09C SkVDVAorKyAgICBRX1BST1BFUlRZKFFPYmplY3QgKmR1bW15IE1FTUJFUiBtX2R1bW15IENPTlNU QU5UKQorKworK3B1YmxpYzoKKysgICAgVGVzdE9iamVjdENvbnRhaW5lcigpIDogbV9kdW1teShu ZXcgUU9iamVjdCh0aGlzKSkge30KKysKKytwcml2YXRlOgorKyAgICBRT2JqZWN0ICptX2R1bW15 OworK307CisrCisrdm9pZCB0c3RfUUpTRW5naW5lOjpjb2xsZWN0R2FyYmFnZU5lc3RlZFdyYXBw ZXJzVHdvRW5naW5lcygpCisreworKyAgICBRSlNFbmdpbmUgZW5naW5lMTsKKysgICAgUUpTRW5n aW5lIGVuZ2luZTI7CisrCisrICAgIFRlc3RPYmplY3RDb250YWluZXIgY29udGFpbmVyOworKyAg ICBRUW1sRW5naW5lOjpzZXRPYmplY3RPd25lcnNoaXAoJmNvbnRhaW5lciwgUVFtbEVuZ2luZTo6 Q3BwT3duZXJzaGlwKTsKKysKKysgICAgZW5naW5lMS5nbG9iYWxPYmplY3QoKS5zZXRQcm9wZXJ0 eSgiZm9vYmFyIiwgZW5naW5lMS5uZXdRT2JqZWN0KCZjb250YWluZXIpKTsKKysgICAgZW5naW5l Mi5nbG9iYWxPYmplY3QoKS5zZXRQcm9wZXJ0eSgiZm9vYmFyIiwgZW5naW5lMi5uZXdRT2JqZWN0 KCZjb250YWluZXIpKTsKKysKKysgICAgZW5naW5lMS5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJh eiA9IDQyIik7CisrICAgIGVuZ2luZTIuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXogPSA0MyIp OworKworKyAgICBRQ09NUEFSRShlbmdpbmUxLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6Iiku dG9JbnQoKSwgNDIpOworKyAgICBRQ09NUEFSRShlbmdpbmUyLmV2YWx1YXRlKCJmb29iYXIuZHVt bXkuYmF6IikudG9JbnQoKSwgNDMpOworKworKyAgICBlbmdpbmUxLmNvbGxlY3RHYXJiYWdlKCk7 CisrICAgIGVuZ2luZTIuY29sbGVjdEdhcmJhZ2UoKTsKKysKKysgICAgLy8gVGhlIEdDIHNob3Vs ZCBub3QgY29sbGVjdCBkdW1teSBvYmplY3Qgd3JhcHBlcnMgbmVpdGhlciBpbiBlbmdpbmUxIG5v ciBlbmdpbmUyLCB3ZQorKyAgICAvLyB2ZXJpZnkgdGhhdCBieSBjaGVja2luZyB3aGV0aGVyIHRo ZSBiYXogcHJvcGVydHkgc3RpbGwgaGFzIGl0cyBwcmV2aW91cyB2YWx1ZS4KKysgICAgUUNPTVBB UkUoZW5naW5lMS5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiIpLnRvSW50KCksIDQyKTsKKysg ICAgUUNPTVBBUkUoZW5naW5lMi5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiIpLnRvSW50KCks IDQzKTsKKyt9CisrCisgdm9pZCB0c3RfUUpTRW5naW5lOjpnY1dpdGhOZXN0ZWREYXRhU3RydWN0 dXJlKCkKKyB7CisgICAgIC8vIFRoZSBHQyBtdXN0IGJlIGFibGUgdG8gdHJhdmVyc2UgZGVlcGx5 IG5lc3RlZCBvYmplY3RzLCBvdGhlcndpc2UgdGhpcworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRp dmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvZGF0YS9yZWRyYXdVcG9uQ29sdW1u Q2hhbmdlLnFtbCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9k ZWwvZGF0YS9yZWRyYXdVcG9uQ29sdW1uQ2hhbmdlLnFtbAorbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAwMDAuLjIwNjEzM2JiMzkKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVj bGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvZGF0YS9yZWRyYXdVcG9u Q29sdW1uQ2hhbmdlLnFtbAorQEAgLTAsMCArMSwxMSBAQAorK2ltcG9ydCBRdFF1aWNrIDIuOAor KworK0xpc3RWaWV3IHsKKysgICAgaWQ6IHJvb3QKKysgICAgd2lkdGg6IDIwMAorKyAgICBoZWln aHQ6IDIwMAorKworKyAgICBkZWxlZ2F0ZTogVGV4dCB7CisrICAgICAgICB0ZXh0OiBkaXNwbGF5 CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9x cW1sZGVsZWdhdGVtb2RlbC90c3RfcXFtbGRlbGVnYXRlbW9kZWwuY3BwIGIvcXRkZWNsYXJhdGl2 ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC90c3RfcXFtbGRlbGVnYXRlbW9kZWwu Y3BwCitpbmRleCAzNWYxZTJjOTRkLi4xNzIyNDQ3ODMwIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJh dGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC90c3RfcXFtbGRlbGVnYXRlbW9k ZWwuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1v ZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKK0BAIC0yNyw2ICsyNyw4IEBACisgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKyAKKyAjaW5jbHVkZSA8UXRUZXN0L3F0ZXN0Lmg+CisrI2luY2x1ZGUg PFF0Q29yZS9RQ29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsPgorKyNpbmNsdWRlIDxRdEd1aS9R U3RhbmRhcmRJdGVtTW9kZWw+CisgI2luY2x1ZGUgPFF0UW1sL3FxbWxjb21wb25lbnQuaD4KKyAj aW5jbHVkZSA8UXRRbWxNb2RlbHMvcHJpdmF0ZS9xcW1sZGVsZWdhdGVtb2RlbF9wLmg+CisgI2lu Y2x1ZGUgPFF0UXVpY2svcXF1aWNrdmlldy5oPgorQEAgLTQ3LDYgKzQ5LDcgQEAgcHJpdmF0ZSBz bG90czoKKyAgICAgdm9pZCBmaWx0ZXJPbkdyb3VwX3JlbW92ZVdoZW5Db21wbGV0ZWQoKTsKKyAg ICAgdm9pZCBxdGJ1Z184NjAxNygpOworICAgICB2b2lkIGNvbnRleHRBY2Nlc3NlZEJ5SGFuZGxl cigpOworKyAgICB2b2lkIHJlZHJhd1Vwb25Db2x1bW5DaGFuZ2UoKTsKKyB9OworIAorIGNsYXNz IEFic3RyYWN0SXRlbU1vZGVsIDogcHVibGljIFFBYnN0cmFjdEl0ZW1Nb2RlbAorQEAgLTE4Niw2 ICsxODksMzAgQEAgdm9pZCB0c3RfUVFtbERlbGVnYXRlTW9kZWw6OmNvbnRleHRBY2Nlc3NlZEJ5 SGFuZGxlcigpCisgICAgIFFWRVJJRlkocm9vdC0+cHJvcGVydHkoIndvcmtzIikudG9Cb29sKCkp OworIH0KKyAKKyt2b2lkIHRzdF9RUW1sRGVsZWdhdGVNb2RlbDo6cmVkcmF3VXBvbkNvbHVtbkNo YW5nZSgpCisreworKyAgICBRU3RhbmRhcmRJdGVtTW9kZWwgbTE7CisrICAgIG0xLmFwcGVuZFJv dyh7CisrICAgICAgICAgICAgbmV3IFFTdGFuZGFyZEl0ZW0oIkJhbmFuYSIpLAorKyAgICAgICAg ICAgIG5ldyBRU3RhbmRhcmRJdGVtKCJDb2NvbnV0IiksCisrICAgIH0pOworKworKyAgICBRUXVp Y2tWaWV3IHZpZXcodGVzdEZpbGVVcmwoInJlZHJhd1Vwb25Db2x1bW5DaGFuZ2UucW1sIikpOwor KyAgICBRQ09NUEFSRSh2aWV3LnN0YXR1cygpLCBRUXVpY2tWaWV3OjpSZWFkeSk7CisrICAgIHZp ZXcuc2hvdygpOworKyAgICBRUXVpY2tJdGVtICpyb290ID0gdmlldy5yb290T2JqZWN0KCk7Cisr ICAgIHJvb3QtPnNldFByb3BlcnR5KCJtb2RlbCIsIFFWYXJpYW50Ojpmcm9tVmFsdWU8UU9iamVj dCAqPigmbTEpKTsKKysKKysgICAgUU9iamVjdCAqaXRlbSA9IHJvb3QtPnByb3BlcnR5KCJjdXJy ZW50SXRlbSIpLnZhbHVlPFFPYmplY3QgKj4oKTsKKysgICAgUVZFUklGWShpdGVtKTsKKysgICAg UUNPTVBBUkUoaXRlbS0+cHJvcGVydHkoInRleHQiKS50b1N0cmluZygpLCAiQmFuYW5hIik7Cisr CisrICAgIFFWRVJJRlkocm9vdCk7CisrICAgIG0xLnJlbW92ZUNvbHVtbigwKTsKKysKKysgICAg UUNPTVBBUkUoaXRlbS0+cHJvcGVydHkoInRleHQiKS50b1N0cmluZygpLCAiQ29jb251dCIpOwor K30KKysKKyBRVEVTVF9NQUlOKHRzdF9RUW1sRGVsZWdhdGVNb2RlbCkKKyAKKyAjaW5jbHVkZSAi dHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLm1vYyIKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rl c3RzL2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRtbS5jcHAgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1 dG8vcW1sL3F2NG1tL3RzdF9xdjRtbS5jcHAKK2luZGV4IDVkNjM1YWE2M2IuLjgyNGZkODllNWIg MTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRt bS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXY0bW0vdHN0X3F2NG1t LmNwcAorQEAgLTc2LDEwICs3NiwxMCBAQCB2b2lkIHRzdF9xdjRtbTo6bXVsdGlXcmFwcGVkUU9i amVjdHMoKQorICAgICAgICAgUUNPTVBBUkUoZW5naW5lMS5tZW1vcnlNYW5hZ2VyLT5tX3BlbmRp bmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZS5zaXplKCksIDEpOworICAgICAgICAgUUNPTVBBUkUo ZW5naW5lMi5tZW1vcnlNYW5hZ2VyLT5tX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZS5z aXplKCksIDApOworIAorLSAgICAgICAgLy8gTW92ZXMgdGhlIGFkZGl0aW9uYWwgV2Vha1ZhbHVl IGZyb20gbV9tdWx0aXBseVdyYXBwZWRRT2JqZWN0cyB0bworLSAgICAgICAgLy8gbV9wZW5kaW5n RnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuIEl0J3Mgc3RpbGwgYWxpdmUgYWZ0ZXIgYWxsLgorKyAg ICAgICAgLy8gVGhlIGFkZGl0aW9uYWwgV2Vha1ZhbHVlIGZyb20gbV9tdWx0aXBseVdyYXBwZWRR T2JqZWN0cyBoYXNuJ3QgYmVlbiBtb3ZlZAorKyAgICAgICAgLy8gdG8gbV9wZW5kaW5nRnJlZWRP YmplY3RXcmFwcGVyVmFsdWUgeWV0LiBJdCdzIHN0aWxsIGFsaXZlIGFmdGVyIGFsbC4KKyAgICAg ICAgIGVuZ2luZTEubWVtb3J5TWFuYWdlci0+cnVuR0MoKTsKKy0gICAgICAgIFFDT01QQVJFKGVu Z2luZTEubWVtb3J5TWFuYWdlci0+bV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuc2l6 ZSgpLCAyKTsKKysgICAgICAgIFFDT01QQVJFKGVuZ2luZTEubWVtb3J5TWFuYWdlci0+bV9wZW5k aW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuc2l6ZSgpLCAxKTsKKyAKKyAgICAgICAgIC8vIGVu Z2luZTIgZG9lc24ndCBvd24gdGhlIG9iamVjdCBhcyBlbmdpbmUxIHdhcyB0aGUgZmlyc3QgdG8g d3JhcCBpdCBhYm92ZS4KKyAgICAgICAgIC8vIFRoZXJlZm9yZSwgbm8gZWZmZWN0IGhlcmUuCitk aWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL2Rh dGEvYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AzLnFtbCBiL3F0ZGVjbGFyYXRpdmUvdGVz dHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi9kYXRhL2FjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVM b29wMy5xbWwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi44ODllNDgw ZjNiCistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2sv cXF1aWNraXRlbTIvZGF0YS9hY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcDMucW1sCitAQCAt MCwwICsxLDEzIEBACisraW1wb3J0IFF0UXVpY2sgMi42CisrCisrSXRlbSB7CisrICAgIHZpc2li bGU6IHRydWUKKysgICAgSXRlbSB7CisrICAgICAgICB2aXNpYmxlOiBmYWxzZQorKyAgICAgICAg SXRlbSB7CisrICAgICAgICAgICAgb2JqZWN0TmFtZTogImhpZGRlbkNoaWxkIgorKyAgICAgICAg ICAgIGFjdGl2ZUZvY3VzT25UYWI6IHRydWUKKysgICAgICAgICAgICBmb2N1czogdHJ1ZQorKyAg ICAgICAgfQorKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0 by9xdWljay9xcXVpY2tpdGVtMi90c3RfcXF1aWNraXRlbS5jcHAgYi9xdGRlY2xhcmF0aXZlL3Rl c3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvdHN0X3FxdWlja2l0ZW0uY3BwCitpbmRleCBjOGYy NTFkYmUxLi5jOGVmMzZlZTY4IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRv L3F1aWNrL3FxdWlja2l0ZW0yL3RzdF9xcXVpY2tpdGVtLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2 ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL3RzdF9xcXVpY2tpdGVtLmNwcAorQEAgLTY3 LDYgKzY3LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBhY3RpdmVGb2N1c09uVGFiMTAo KTsKKyAgICAgdm9pZCBhY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcF9kYXRhKCk7CisgICAg IHZvaWQgYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AoKTsKKysgICAgdm9pZCBhY3RpdmVG b2N1c09uVGFiX2luZmluaXRlTG9vcENvbnRyb2xzKCk7CisgCisgICAgIHZvaWQgbmV4dEl0ZW1J bkZvY3VzQ2hhaW4oKTsKKyAgICAgdm9pZCBuZXh0SXRlbUluRm9jdXNDaGFpbjIoKTsKK0BAIC0x MDU3LDYgKzEwNTgsMTcgQEAgdm9pZCB0c3RfUVF1aWNrSXRlbTo6YWN0aXZlRm9jdXNPblRhYl9p bmZpbml0ZUxvb3AoKQorICAgICBRQ09NUEFSRShpdGVtLCB3aW5kb3ctPnJvb3RPYmplY3QoKSk7 CisgfQorIAorKworK3ZvaWQgdHN0X1FRdWlja0l0ZW06OmFjdGl2ZUZvY3VzT25UYWJfaW5maW5p dGVMb29wQ29udHJvbHMoKQorK3sKKysgICAgYXV0byBzb3VyY2UgPSB0ZXN0RmlsZVVybCgiYWN0 aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AzLnFtbCIpOworKyAgICBRU2NvcGVkUG9pbnRlcjxR UXVpY2tWaWV3PndpbmRvdyhuZXcgUVF1aWNrVmlldygpKTsKKysgICAgd2luZG93LT5zZXRTb3Vy Y2Uoc291cmNlKTsKKysgICAgd2luZG93LT5zaG93KCk7CisrICAgIFFWRVJJRlkod2luZG93LT5l cnJvcnMoKS5pc0VtcHR5KCkpOworKyAgICBRVGVzdDo6a2V5Q2xpY2sod2luZG93LmdldCgpLCBR dDo6S2V5X1RhYik7IC8vIHNob3VsZCBub3QgaGFuZworK30KKysKKyB2b2lkIHRzdF9RUXVpY2tJ dGVtOjpuZXh0SXRlbUluRm9jdXNDaGFpbigpCisgeworICAgICBpZiAoIXF0X3RhYl9hbGxfd2lk Z2V0cygpKQorU3VibW9kdWxlIHF0ZG9jIGMwYzdiZjA3Li4uNzlkNmVmNjk6CitTdWJtb2R1bGUg cXRpbWFnZWZvcm1hdHMgMmRjZjI4OTkuLmFiZTQ0YzBmOgorZGlmZiAtLWdpdCBhL3F0aW1hZ2Vm b3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9pY25zL3FpY25zaGFuZGxlci5jcHAgYi9x dGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRsZXIu Y3BwCitpbmRleCBkZGU3ODNjLi4xYmY5MDc0IDEwMDY0NAorLS0tIGEvcXRpbWFnZWZvcm1hdHMv c3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWljbnNoYW5kbGVyLmNwcAorKysrIGIvcXRp bWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWljbnNoYW5kbGVyLmNw cAorQEAgLTQ2Miw4ICs0NjIsMTIgQEAgc3RhdGljIGJvb2wgcGFyc2VJY29uRW50cnlJbmZvKElD TlNFbnRyeSAmaWNvbikKKyAgICAgaWYgKGlzSWNvbkNvbXByZXNzZWQoaWNvbikpCisgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgLy8gSWNvbiBkZXB0aDoKKy0gICAgaWYgKCFkZXB0aC5pc0Vt cHR5KCkpCistICAgICAgICBpY29uLmRlcHRoID0gSUNOU0VudHJ5OjpEZXB0aChkZXB0aC50b1VJ bnQoKSk7CisrICAgIGlmICghZGVwdGguaXNFbXB0eSgpKSB7CisrICAgICAgICBjb25zdCB1aW50 IGRlcHRoVUludCA9IGRlcHRoLnRvVUludCgpOworKyAgICAgICAgaWYgKGRlcHRoVUludCA+IDMy KQorKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgICAgIGljb24uZGVwdGggPSBJQ05T RW50cnk6OkRlcHRoKGRlcHRoVUludCk7CisrICAgIH0KKyAgICAgLy8gVHJ5IG1vbm8gaWYgZGVw dGggbm90IGZvdW5kCisgICAgIGlmIChpY29uLmRlcHRoID09IElDTlNFbnRyeTo6RGVwdGhVbmtu b3duKQorICAgICAgICAgaWNvbi5kZXB0aCA9IElDTlNFbnRyeTo6RGVwdGhNb25vOworQEAgLTUx NSw2ICs1MTksOSBAQCBzdGF0aWMgYm9vbCBwYXJzZUljb25FbnRyeUluZm8oSUNOU0VudHJ5ICZp Y29uKQorICAgICAgICAgfQorICAgICAgICAgaWNvbi5oZWlnaHQgPSBpY29uLndpZHRoOworICAg ICB9CisrICAgIC8vIFNhbml0eSBjaGVjaworKyAgICBpZiAoaWNvbi53aWR0aCA9PSAwIHx8IGlj b24ud2lkdGggPiA0MDk2KQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICByZXR1cm4gdHJ1 ZTsKKyB9CisgCitAQCAtNjg1LDcgKzY5Miw3IEBAIGJvb2wgUUlDTlNIYW5kbGVyOjpjYW5SZWFk KCkgY29uc3QKKyBib29sIFFJQ05TSGFuZGxlcjo6cmVhZChRSW1hZ2UgKm91dEltYWdlKQorIHsK KyAgICAgUUltYWdlIGltZzsKKy0gICAgaWYgKCFlbnN1cmVTY2FubmVkKCkpIHsKKysgICAgaWYg KCFlbnN1cmVTY2FubmVkKCkgfHwgbV9jdXJyZW50SWNvbkluZGV4ID49IG1faWNvbnMuc2l6ZSgp KSB7CisgICAgICAgICBxV2FybmluZygiUUlDTlNIYW5kbGVyOjpyZWFkKCk6IFRoZSBkZXZpY2Ug d2Fzbid0IHBhcnNlZCBwcm9wZXJseSEiKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg fQorQEAgLTg5Miw3ICs4OTksNyBAQCBib29sIFFJQ05TSGFuZGxlcjo6c2NhbkRldmljZSgpCisg ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworIAorICAgICAgICAgY29uc3QgcWludDY0IGJsb2Nr RGF0YU9mZnNldCA9IGRldmljZSgpLT5wb3MoKTsKKy0gICAgICAgIGlmICghaXNCbG9ja0hlYWRl clZhbGlkKGJsb2NrSGVhZGVyKSkgeworKyAgICAgICAgaWYgKCFpc0Jsb2NrSGVhZGVyVmFsaWQo YmxvY2tIZWFkZXIsIElDTlNCbG9ja0hlYWRlclNpemUgKyBmaWxlbGVuZ3RoIC0gYmxvY2tEYXRh T2Zmc2V0KSkgeworICAgICAgICAgICAgIHFXYXJuaW5nKCJRSUNOU0hhbmRsZXI6OnNjYW5EZXZp Y2UoKTogRmFpbGVkLCBiYWQgaGVhZGVyIGF0IHBvcyAlcy4gT1NUeXBlIFwiJXNcIiwgbGVuZ3Ro ICV1IiwKKyAgICAgICAgICAgICAgICAgICAgICBRQnl0ZUFycmF5OjpudW1iZXIoYmxvY2tEYXRh T2Zmc2V0KS5jb25zdERhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICBuYW1lRnJvbU9TVHlw ZShibG9ja0hlYWRlci5vc3R5cGUpLmNvbnN0RGF0YSgpLCBibG9ja0hlYWRlci5sZW5ndGgpOwor QEAgLTkyNywxMSArOTM0LDE0IEBAIGJvb2wgUUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNlKCkKKyAg ICAgICAgIGNhc2UgSUNOU0Jsb2NrSGVhZGVyOjpUeXBlT2RycDoKKyAgICAgICAgICAgICAvLyBJ Y25zIGNvbnRhaW5lciBzZWVtcyB0byBoYXZlIGFuIGVtYmVkZGVkIGljb24gdmFyaWFudCBjb250 YWluZXIKKyAgICAgICAgICAgICAvLyBMZXQncyBzdGFydCBhIHNjYW4gZm9yIGVudHJpZXMKKy0g ICAgICAgICAgICB3aGlsZSAoZGV2aWNlKCktPnBvcygpIDwgbmV4dEJsb2NrT2Zmc2V0KSB7Cisr ICAgICAgICAgICAgd2hpbGUgKCFzdHJlYW0uYXRFbmQoKSAmJiBkZXZpY2UoKS0+cG9zKCkgPCBu ZXh0QmxvY2tPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgSUNOU0Jsb2NrSGVhZGVyIGljb247 CisgICAgICAgICAgICAgICAgIHN0cmVhbSA+PiBpY29uOworKyAgICAgICAgICAgICAgICBpZiAo c3RyZWFtLnN0YXR1cygpICE9IFFEYXRhU3RyZWFtOjpPaykKKysgICAgICAgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGluY29ycmVjdCB2 YXJpYW50IGVudHJ5IGhlYWRlciBhbmQgc3RvcCBzY2FuCistICAgICAgICAgICAgICAgIGlmICgh aXNCbG9ja0hlYWRlclZhbGlkKGljb24sIGJsb2NrRGF0YUxlbmd0aCkpCisrICAgICAgICAgICAg ICAgIHF1aW50NjQgcmVtYWluaW5nID0gYmxvY2tEYXRhTGVuZ3RoIC0gKGRldmljZSgpLT5wb3Mo KSAtIGJsb2NrRGF0YU9mZnNldCk7CisrICAgICAgICAgICAgICAgIGlmICghaXNCbG9ja0hlYWRl clZhbGlkKGljb24sIElDTlNCbG9ja0hlYWRlclNpemUgKyByZW1haW5pbmcpKQorICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIGlmICghYWRkRW50cnkoaWNvbiwg ZGV2aWNlKCktPnBvcygpLCBibG9ja0hlYWRlci5vc3R5cGUpKQorICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworQEAgLTEwMDMsNyArMTAxMyw3IEBAIGJvb2wgUUlDTlNIYW5kbGVy OjpzY2FuRGV2aWNlKCkKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KKyAgICAgfQor LSAgICByZXR1cm4gdHJ1ZTsKKysgICAgcmV0dXJuIChtX2ljb25zLnNpemUoKSA+IDApOworIH0K KyAKKyBjb25zdCBJQ05TRW50cnkgJlFJQ05TSGFuZGxlcjo6Z2V0SWNvbk1hc2soY29uc3QgSUNO U0VudHJ5ICZpY29uKSBjb25zdAorZGlmZiAtLWdpdCBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVn aW5zL2ltYWdlZm9ybWF0cy9qcDIvcWpwMmhhbmRsZXIuY3BwIGIvcXRpbWFnZWZvcm1hdHMvc3Jj L3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2pwMi9xanAyaGFuZGxlci5jcHAKK2luZGV4IDUwODIwMjMu LmNiMzQzNzQgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZv cm1hdHMvanAyL3FqcDJoYW5kbGVyLmNwcAorKysrIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdp bnMvaW1hZ2Vmb3JtYXRzL2pwMi9xanAyaGFuZGxlci5jcHAKK0BAIC00Myw2ICs0Myw3IEBACisg I2luY2x1ZGUgInFpbWFnZS5oIgorICNpbmNsdWRlICJxdmFyaWFudC5oIgorICNpbmNsdWRlICJx Y29sb3IuaCIKKysjaW5jbHVkZSAicWltYWdlcmVhZGVyLmgiCisgCisgI2luY2x1ZGUgPGphc3Bl ci9qYXNwZXIuaD4KKyAjaW5jbHVkZSA8bWF0aC5oPiAvLyBmb3IgcG93CitAQCAtMzMzLDE2ICsz MzQsNDYgQEAgcHJpdmF0ZToKKyBKcGVnMjAwMEphc3BlclJlYWRlcjo6SnBlZzIwMDBKYXNwZXJS ZWFkZXIoUUlPRGV2aWNlICppb2QsIFN1YkZvcm1hdCBmb3JtYXQpCisgICAgIDogamFzcGVyT2so dHJ1ZSksIGlvRGV2aWNlKGlvZCksIGZvcm1hdChmb3JtYXQpLCBoYXNBbHBoYShmYWxzZSkKKyB7 CisrI2lmIEpBU19WRVJTSU9OX01BSk9SIDwgMworICAgICBpZiAoamFzX2luaXQoKSkgeworICAg ICAgICAgamFzcGVyT2sgPSBmYWxzZTsKKyAgICAgICAgIHFEZWJ1ZygiSmFzcGVyIExpYnJhcnkg aW5pdGlhbGl6YXRpb24gZmFpbGVkIik7CisgICAgIH0KKysjZWxzZQorKyAgICBqYXNfY29uZl9j bGVhcigpOworKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNiwgMCwgMCkKKysg ICAgamFzX2NvbmZfc2V0X21heF9tZW1fdXNhZ2UoUUltYWdlUmVhZGVyOjphbGxvY2F0aW9uTGlt aXQoKSAqIDEwMjQgKiAxMDI0KTsKKysjZWxzZQorKyAgICAvLyAxMjhNQiBzZWVtcyB0byBiZSBl bm91Z2guCisrICAgIGphc19jb25mX3NldF9tYXhfbWVtX3VzYWdlKDEyOCAqIDEwMjQgKiAxMDI0 KTsKKysjZW5kaWYKKysgICAgaWYgKGphc19pbml0X2xpYnJhcnkoKSkgeworKyAgICAgICAgamFz cGVyT2sgPSBmYWxzZTsKKysgICAgICAgIHFEZWJ1ZygiSmFzcGVyIGxpYnJhcnkgaW5pdGlhbGl6 YXRpb24gZmFpbGVkIik7CisrICAgIH0KKysgICAgaWYgKGphc19pbml0X3RocmVhZCgpKSB7Cisr ICAgICAgICBqYXNfY2xlYW51cF9saWJyYXJ5KCk7CisrICAgICAgICBqYXNwZXJPayA9IGZhbHNl OworKyAgICAgICAgcURlYnVnKCJKYXNwZXIgdGhyZWFkIGluaXRpYWxpemF0aW9uIGZhaWxlZCIp OworKyAgICB9CisrI2VuZGlmCisgfQorIAorIEpwZWcyMDAwSmFzcGVyUmVhZGVyOjp+SnBlZzIw MDBKYXNwZXJSZWFkZXIoKQorIHsKKysjaWYgSkFTX1ZFUlNJT05fTUFKT1IgPCAzCisgICAgIGlm IChqYXNwZXJPaykKKyAgICAgICAgIGphc19jbGVhbnVwKCk7CisrI2Vsc2UKKysgICAgaWYgKGph c3Blck9rKSB7CisrICAgICAgICBpZiAoamFzX2NsZWFudXBfdGhyZWFkKCkpIHsKKysgICAgICAg ICAgICBxRGVidWcoIkphc3BlciB0aHJlYWQgY2xlYW51cCBmYWlsZWQiKTsKKysgICAgICAgIH0K KysgICAgICAgIGlmIChqYXNfY2xlYW51cF9saWJyYXJ5KCkpIHsKKysgICAgICAgICAgICBxRGVi dWcoIkphc3BlciBsaWJyYXJ5IGNsZWFudXAgZmFpbGVkIik7CisrICAgICAgICB9CisrICAgIH0K KysjZW5kaWYKKyB9CisgCisgLyohIFxpbnRlcm5hbAorQEAgLTg1Nyw3ICs4ODgsNyBAQCBib29s IEpwZWcyMDAwSmFzcGVyUmVhZGVyOjp3cml0ZShjb25zdCBRSW1hZ2UgJmltYWdlLCBpbnQgcXVh bGl0eSkKKyAgICAgfQorIAorICAgICAvLyBPcGVuIGFuIGVtcHR5IGphc3BlciBzdHJlYW0gdGhh dCBncm93cyBhdXRvbWF0aWNhbGx5CistICAgIGphc19zdHJlYW1fdCAqIG1lbW9yeV9zdHJlYW0g PSBqYXNfc3RyZWFtX21lbW9wZW4oMCwgLTEpOworKyAgICBqYXNfc3RyZWFtX3QgKiBtZW1vcnlf c3RyZWFtID0gamFzX3N0cmVhbV9tZW1vcGVuKDAsIDApOworIAorICAgICAvLyBKYXNwZXIgd2Fu dHMgYSBub24tY29uc3Qgc3RyaW5nLgorICAgICBjaGFyICpzdHIgPSBxc3RyZHVwKGphc3BlckZv cm1hdFN0cmluZy50b0xhdGluMSgpLmNvbnN0RGF0YSgpKTsKK2RpZmYgLS1naXQgYS9xdGltYWdl Zm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIuY3BwIGIv cXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5kbGVy LmNwcAoraW5kZXggMTM4Njc1MC4uYWM4OTU2YyAxMDA2NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRz L3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0aWZmaGFuZGxlci5jcHAKKysrKyBiL3F0 aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0aWZmaGFuZGxlci5j cHAKK0BAIC0zNjEsNiArMzYxLDggQEAgYm9vbCBRVGlmZkhhbmRsZXI6OnJlYWQoUUltYWdlICpp bWFnZSkKKyAgICAgfQorIAorICAgICBUSUZGICpjb25zdCB0aWZmID0gZC0+dGlmZjsKKysgICAg aWYgKFRJRkZJc1RpbGVkKHRpZmYpICYmIFRJRkZUaWxlU2l6ZTY0KHRpZmYpID4gdWludDY0X3Qo aW1hZ2UtPnNpemVJbkJ5dGVzKCkpKSAvLyBDb3JydXB0IGltYWdlCisrICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgIGNvbnN0IHF1aW50MzIgd2lkdGggPSBkLT5zaXplLndpZHRoKCk7CisgICAg IGNvbnN0IHF1aW50MzIgaGVpZ2h0ID0gZC0+c2l6ZS5oZWlnaHQoKTsKKyAKK2RpZmYgLS1naXQg YS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvd2VicC9xd2VicGhhbmRs ZXIuY3BwIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAvcXdl YnBoYW5kbGVyLmNwcAoraW5kZXggODJkMzhjYi4uZDAyZWIwNSAxMDA2NDQKKy0tLSBhL3F0aW1h Z2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy93ZWJwL3F3ZWJwaGFuZGxlci5jcHAK KysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy93ZWJwL3F3ZWJw aGFuZGxlci5jcHAKK0BAIC00NSw2ICs0NSw3IEBACisgI2luY2x1ZGUgPHFkZWJ1Zy5oPgorICNp bmNsdWRlIDxxcGFpbnRlci5oPgorICNpbmNsdWRlIDxxdmFyaWFudC5oPgorKyNpbmNsdWRlIDxR dEVuZGlhbj4KKyAKKyBzdGF0aWMgY29uc3QgaW50IHJpZmZIZWFkZXJTaXplID0gMTI7IC8vIFJJ RkZfSEVBREVSX1NJWkUgZnJvbSB3ZWJwL2Zvcm1hdF9jb25zdGFudHMuaAorIAorQEAgLTEwMiwy MSArMTAzLDIzIEBAIGJvb2wgUVdlYnBIYW5kbGVyOjplbnN1cmVTY2FubmVkKCkgY29uc3QKKyAK KyAgICAgbV9zY2FuU3RhdGUgPSBTY2FuRXJyb3I7CisgCistICAgIGlmIChkZXZpY2UoKS0+aXNT ZXF1ZW50aWFsKCkpIHsKKy0gICAgICAgIHFXYXJuaW5nKCkgPDwgIlNlcXVlbnRpYWwgZGV2aWNl cyBhcmUgbm90IHN1cHBvcnRlZCI7CisrICAgIFFXZWJwSGFuZGxlciAqdGhhdCA9IGNvbnN0X2Nh c3Q8UVdlYnBIYW5kbGVyICo+KHRoaXMpOworKyAgICBjb25zdCBpbnQgaGVhZGVyQnl0ZXNOZWVk ZWQgPSBzaXplb2YoV2ViUEJpdHN0cmVhbUZlYXR1cmVzKTsKKysgICAgUUJ5dGVBcnJheSBoZWFk ZXIgPSBkZXZpY2UoKS0+cGVlayhoZWFkZXJCeXRlc05lZWRlZCk7CisrICAgIGlmIChoZWFkZXIu c2l6ZSgpIDwgaGVhZGVyQnl0ZXNOZWVkZWQpCisgICAgICAgICByZXR1cm4gZmFsc2U7CistICAg IH0KKyAKKy0gICAgcWludDY0IG9sZFBvcyA9IGRldmljZSgpLT5wb3MoKTsKKy0gICAgZGV2aWNl KCktPnNlZWsoMCk7CistCistICAgIFFXZWJwSGFuZGxlciAqdGhhdCA9IGNvbnN0X2Nhc3Q8UVdl YnBIYW5kbGVyICo+KHRoaXMpOworLSAgICBRQnl0ZUFycmF5IGhlYWRlciA9IGRldmljZSgpLT5w ZWVrKHNpemVvZihXZWJQQml0c3RyZWFtRmVhdHVyZXMpKTsKKysgICAgLy8gV2UgZG8gbm8gcmFu ZG9tIGFjY2VzcyBkdXJpbmcgZGVjb2RpbmcsIGp1c3QgYSByZWFkQWxsKCkgb2YgdGhlIHdob2xl IGltYWdlIGZpbGUuIFNvIGlmCisrICAgIC8vIGlmIGl0IGlzIGFsbCBhdmFpbGFibGUgYWxyZWFk eSwgd2UgY2FuIGFjY2VwdCBhIHNlcXVlbnRpYWwgZGV2aWNlLiBUaGUgcmlmZiBoZWFkZXIgY29u dGFpbnMKKysgICAgLy8gdGhlIGZpbGUgc2l6ZSBtaW51cyA4IGJ5dGVzIGhlYWRlcgorKyAgICBx aW50NjQgYnl0ZVNpemUgPSBxRnJvbUxpdHRsZUVuZGlhbjxxdWludDMyPihoZWFkZXIuY29uc3RE YXRhKCkgKyA0KTsKKysgICAgaWYgKGRldmljZSgpLT5pc1NlcXVlbnRpYWwoKSAmJiBkZXZpY2Uo KS0+Ynl0ZXNBdmFpbGFibGUoKSA8IGJ5dGVTaXplICsgOCkgeworKyAgICAgICAgcVdhcm5pbmco KSA8PCAiUVdlYnBIYW5kbGVyOiBJbnN1ZmZpY2llbnQgZGF0YSBhdmFpbGFibGUgaW4gc2VxdWVu dGlhbCBkZXZpY2UiOworKyAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisgICAgIGlmIChX ZWJQR2V0RmVhdHVyZXMoKGNvbnN0IHVpbnQ4X3QqKWhlYWRlci5jb25zdERhdGEoKSwgaGVhZGVy LnNpemUoKSwgJih0aGF0LT5tX2ZlYXR1cmVzKSkgPT0gVlA4X1NUQVRVU19PSykgeworICAgICAg ICAgaWYgKG1fZmVhdHVyZXMuaGFzX2FuaW1hdGlvbikgeworICAgICAgICAgICAgIC8vIEZvciBh bmltYXRpb24sIHdlIGhhdmUgdG8gcmVhZCBhbmQgc2NhbiB3aG9sZSBmaWxlIHRvIGRldGVybWlu ZSBsb29wIGNvdW50IGFuZCBpbWFnZXMgY291bnQKKy0gICAgICAgICAgICBkZXZpY2UoKS0+c2Vl ayhvbGRQb3MpOworLQorICAgICAgICAgICAgIGlmICh0aGF0LT5lbnN1cmVEZW11eGVyKCkpIHsK KyAgICAgICAgICAgICAgICAgdGhhdC0+bV9sb29wID0gV2ViUERlbXV4R2V0SShtX2RlbXV4ZXIs IFdFQlBfRkZfTE9PUF9DT1VOVCk7CisgICAgICAgICAgICAgICAgIHRoYXQtPm1fZnJhbWVDb3Vu dCA9IFdlYlBEZW11eEdldEkobV9kZW11eGVyLCBXRUJQX0ZGX0ZSQU1FX0NPVU5UKTsKK0BAIC0x MjYsMTcgKzEyOSwxMyBAQCBib29sIFFXZWJwSGFuZGxlcjo6ZW5zdXJlU2Nhbm5lZCgpIGNvbnN0 CisgICAgICAgICAgICAgICAgIGlmICh0aGF0LT5tX2ZlYXR1cmVzLmhhc19hbHBoYSkKKyAgICAg ICAgICAgICAgICAgICAgIHRoYXQtPm1fY29tcG9zaXRlZC0+ZmlsbChRdDo6dHJhbnNwYXJlbnQp OworIAorLSAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3QgcmVzZXQgZGV2aWNlIHBvc2l0aW9u IHNpbmNlIHdlIGhhdmUgcmVhZCBpbiBhbGwgZGF0YQorICAgICAgICAgICAgICAgICBtX3NjYW5T dGF0ZSA9IFNjYW5TdWNjZXNzOworLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgICAgICB9CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIG1fc2NhblN0YXRlID0g U2NhblN1Y2Nlc3M7CisgICAgICAgICB9CisgICAgIH0KKyAKKy0gICAgZGV2aWNlKCktPnNlZWso b2xkUG9zKTsKKy0KKyAgICAgcmV0dXJuIG1fc2NhblN0YXRlID09IFNjYW5TdWNjZXNzOworIH0K KyAKK0BAIC0xNTksNyArMTU4LDcgQEAgYm9vbCBRV2VicEhhbmRsZXI6OmVuc3VyZURlbXV4ZXIo KQorIAorIGJvb2wgUVdlYnBIYW5kbGVyOjpyZWFkKFFJbWFnZSAqaW1hZ2UpCisgeworLSAgICBp ZiAoIWVuc3VyZVNjYW5uZWQoKSB8fCBkZXZpY2UoKS0+aXNTZXF1ZW50aWFsKCkgfHwgIWVuc3Vy ZURlbXV4ZXIoKSkKKysgICAgaWYgKCFlbnN1cmVTY2FubmVkKCkgfHwgIWVuc3VyZURlbXV4ZXIo KSkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAKKyAgICAgUVJlY3QgcHJldkZyYW1lUmVjdDsK K1N1Ym1vZHVsZSBxdGxvY2F0aW9uIDk4YTVjNTExLi5mOTkxZTI4YzoKK2RpZmYgLS1naXQgYS9x dGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9jb25maWd1cmUuanNvbiBiL3F0bG9jYXRpb24vc3JjL2xv Y2F0aW9uL2NvbmZpZ3VyZS5qc29uCitpbmRleCA2ZDAxYTlhMy4uZDFlNjIzYTEgMTAwNjQ0Cist LS0gYS9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9jb25maWd1cmUuanNvbgorKysrIGIvcXRsb2Nh dGlvbi9zcmMvbG9jYXRpb24vY29uZmlndXJlLmpzb24KK0BAIC05LDcgKzksNyBAQAorICAgICAg ICAgICAgICJsYWJlbCI6ICJRdC5sYWJzLmxvY2F0aW9uIGV4cGVyaW1lbnRhbCBRTUwgcGx1Z2lu IiwKKyAgICAgICAgICAgICAicHVycG9zZSI6ICJQcm92aWRlcyBleHBlcmltZW50YWwgUXRMb2Nh dGlvbiBRTUwgdHlwZXMiLAorICAgICAgICAgICAgICJzZWN0aW9uIjogIkxvY2F0aW9uIiwKKy0g ICAgICAgICAgICAiY29uZGl0aW9uIjogImNvbmZpZy5vcGVuZ2wiLAorKyAgICAgICAgICAgICJj b25kaXRpb24iOiAiZmVhdHVyZXMub3BlbmdsIiwKKyAgICAgICAgICAgICAib3V0cHV0IjogWyAi cHJpdmF0ZUZlYXR1cmUiIF0KKyAgICAgICAgIH0sCisgICAgICAgICAiZ2Vvc2VydmljZXNfb3Nt IjogeworZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2xhYnMvcXNnL3FnZW9t YXBvYmplY3Rxc2dzdXBwb3J0LmNwcCBiL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2xhYnMvcXNn L3FnZW9tYXBvYmplY3Rxc2dzdXBwb3J0LmNwcAoraW5kZXggYTk3ODU3M2QuLjExZTE0NjZmIDEw MDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cvcWdlb21hcG9iamVj dHFzZ3N1cHBvcnQuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9x Z2VvbWFwb2JqZWN0cXNnc3VwcG9ydC5jcHAKK0BAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBRR2Vv TWFwT2JqZWN0UVNHU3VwcG9ydDo6dXBkYXRlTWFwT2JqZWN0cyhRU0dOb2RlICpyb290LCBRUXVp Y2tXaW5kb3cgKndpbmQKKyAgICAgaWYgKCFyb290KQorICAgICAgICAgcmV0dXJuOworIAorLSAg ICBpZiAobV9tYXBPYmplY3RzUm9vdE5vZGUgJiYgbV9tYXBPYmplY3RzUm9vdE5vZGUtPnBhcmVu dCgpKQorKyAgICBpZiAobV9tYXBPYmplY3RzUm9vdE5vZGUgJiYgIW1fbWFwT2JqZWN0c1Jvb3RO b2RlLT5wYXJlbnQoKSkKKyAgICAgICAgIHJvb3QtPmFwcGVuZENoaWxkTm9kZShtX21hcE9iamVj dHNSb290Tm9kZS5nZXQoKSk7CisgCisgICAgIGlmICghbV9tYXBPYmplY3RzUm9vdE5vZGUpIHsK K2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vv Y29kaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vv c2VydmljZXMvZXNyaS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitpbmRleCA1YTQw NDY3ZS4uZDEyM2M2YTggMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3Nl cnZpY2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysrIGIvcXRsb2Nh dGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb2NvZGluZ21hbmFnZXJlbmdpbmVf ZXNyaS5jcHAKK0BAIC01OSw4ICs1OSwxMCBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyBzdGF0aWMg Y29uc3QgUVN0cmluZyBrUHJlZml4RXNyaShRU3RyaW5nTGl0ZXJhbCgiZXNyaS4iKSk7Cisgc3Rh dGljIGNvbnN0IFFTdHJpbmcga1BhcmFtVXNlckFnZW50KGtQcmVmaXhFc3JpICsgUVN0cmluZ0xp dGVyYWwoInVzZXJhZ2VudCIpKTsKKyAKKy1zdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsR2VvY29k ZShRU3RyaW5nTGl0ZXJhbCgiaHR0cDovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9z ZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyL2ZpbmRBZGRyZXNzQ2FuZGlkYXRlcyIpKTsKKy1z dGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUmV2ZXJzZUdlb2NvZGUoUVN0cmluZ0xpdGVyYWwoImh0 dHA6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29k ZVNlcnZlci9yZXZlcnNlR2VvY29kZSIpKTsKKytzdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsR2Vv Y29kZShRU3RyaW5nTGl0ZXJhbCgiaHR0cHM6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jl c3Qvc2VydmljZXMvIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJXb3JsZC9HZW9jb2RlU2VydmVyL2ZpbmRBZGRyZXNzQ2FuZGlkYXRlcyIpKTsKKytz dGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUmV2ZXJzZUdlb2NvZGUoUVN0cmluZ0xpdGVyYWwoCisr ICAgICAgICAiaHR0cHM6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMv V29ybGQvR2VvY29kZVNlcnZlci9yZXZlcnNlR2VvY29kZSIpKTsKKyAKKyBzdGF0aWMgUVN0cmlu ZyBhZGRyZXNzVG9RdWVyeShjb25zdCBRR2VvQWRkcmVzcyAmYWRkcmVzcykKKyB7CitkaWZmIC0t Z2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlanNv bnBhcnNlcl9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNy aS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNyaS5jcHAKK2luZGV4IDE3NDkyZDk0Li45NmMxMmIxYiAx MDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9y b3V0ZWpzb25wYXJzZXJfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vv c2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNyaS5jcHAKK0BAIC00Niw3ICs0Niw4 IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCistLy8gSlNPTiByZWZlcmVuY2U6IGh0dHA6 Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS8jL1JvdXRlX3Nl cnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVjdXRpb24vMDJyMzAwMDAwMDM2MDAwMDAwLworKy8v IEpTT04gcmVmZXJlbmNlOgorKy8vIGh0dHBzOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVs cC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dpdGhfc3luY2hyb25vdXNfZXhlY3V0 aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKyAKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrRXJyb3JN ZXNzYWdlKFFTdHJpbmdMaXRlcmFsKCJFcnJvciAlMTogJTIuIikpOworIHN0YXRpYyBjb25zdCBR U3RyaW5nIGtFcnJvckpzb24oUVN0cmluZ0xpdGVyYWwoIkVycm9yOiBpbnZhbGlkZSBKU09OIGRv Y3VtZW50LiIpKTsKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZp Y2VzL2VzcmkvZ2Vvcm91dGVyZXBseV9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMv Z2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZXJlcGx5X2VzcmkuY3BwCitpbmRleCA4Y2FkZmIyOS4u OTJiNmJiMTMgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2Vz L2VzcmkvZ2Vvcm91dGVyZXBseV9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lu cy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNyaS5jcHAKK0BAIC00NCw3ICs0NCw4 IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCistLy8gSlNPTiByZWZlcmVuY2U6IGh0dHA6 Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS8jL1JvdXRlX3Nl cnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVjdXRpb24vMDJyMzAwMDAwMDM2MDAwMDAwLworKy8v IEpTT04gcmVmZXJlbmNlOgorKy8vIGh0dHBzOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVs cC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dpdGhfc3luY2hyb25vdXNfZXhlY3V0 aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKyAKKyBHZW9Sb3V0ZVJlcGx5RXNyaTo6R2VvUm91dGVS ZXBseUVzcmkoUU5ldHdvcmtSZXBseSAqcmVwbHksIGNvbnN0IFFHZW9Sb3V0ZVJlcXVlc3QgJnJl cXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFPYmplY3QgKnBh cmVudCkgOgorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMv ZXNyaS9nZW9yb3V0aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3Bs dWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAor aW5kZXggMGU2YmMyYzcuLmVkNjEzZjRiIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1 Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCisr KysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGluZ21h bmFnZXJlbmdpbmVfZXNyaS5jcHAKK0BAIC00OCw3ICs0OCw4IEBAIHN0YXRpYyBjb25zdCBRU3Ry aW5nIGtQcmVmaXhFc3JpKFFTdHJpbmdMaXRlcmFsKCJlc3JpLiIpKTsKKyBzdGF0aWMgY29uc3Qg UVN0cmluZyBrUGFyYW1Vc2VyQWdlbnQoa1ByZWZpeEVzcmkgKyBRU3RyaW5nTGl0ZXJhbCgidXNl cmFnZW50IikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtQYXJhbVRva2VuKGtQcmVmaXhFc3Jp ICsgUVN0cmluZ0xpdGVyYWwoInRva2VuIikpOworIAorLXN0YXRpYyBjb25zdCBRU3RyaW5nIGtV cmxSb3V0aW5nKFFTdHJpbmdMaXRlcmFsKCJodHRwOi8vcm91dGUuYXJjZ2lzLmNvbS9hcmNnaXMv cmVzdC9zZXJ2aWNlcy9Xb3JsZC9Sb3V0ZS9OQVNlcnZlci9Sb3V0ZV9Xb3JsZC9zb2x2ZSIpKTsK KytzdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUm91dGluZyhRU3RyaW5nTGl0ZXJhbCgKKysgICAg ICAgICJodHRwczovL3JvdXRlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQv Um91dGUvTkFTZXJ2ZXIvUm91dGVfV29ybGQvc29sdmUiKSk7CisgCisgR2VvUm91dGluZ01hbmFn ZXJFbmdpbmVFc3JpOjpHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmkoY29uc3QgUVZhcmlhbnRN YXAgJnBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUUdlb1NlcnZpY2VQcm92aWRlcjo6RXJyb3IgKmVycm9yLAorQEAg LTcwLDcgKzcxLDggQEAgR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjp+R2VvUm91dGluZ01h bmFnZXJFbmdpbmVFc3JpKCkKKyB7CisgfQorIAorLS8vIFJFU1QgcmVmZXJlbmNlOiBodHRwOi8v cmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvaW5kZXguaHRtbCMv LzAycjMwMDAwMDAzNjAwMDAwMAorKy8vIFJFU1QgcmVmZXJlbmNlOgorKy8vIGh0dHBzOi8vcmVz b3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvaW5kZXguaHRtbCMvLzAy cjMwMDAwMDAzNjAwMDAwMAorIAorIFFHZW9Sb3V0ZVJlcGx5ICpHZW9Sb3V0aW5nTWFuYWdlckVu Z2luZUVzcmk6OmNhbGN1bGF0ZVJvdXRlKGNvbnN0IFFHZW9Sb3V0ZVJlcXVlc3QgJnJlcXVlc3Qp CisgeworQEAgLTEyNSw3ICsxMjcsNyBAQCB2b2lkIEdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNy aTo6cmVwbHlFcnJvcihRR2VvUm91dGVSZXBseTo6RXJyb3IgZXJyb3JDb2RlLCBjbworIFFTdHJp bmcgR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjpwcmVmZXJlZERpcmVjdGlvbkxhbmdhZ2Uo KQorIHsKKyAgICAgLy8gbGlzdCBvZiBzdXBwb3J0ZWQgbGFuZ2FnZXMgaXMgZGVmaW5lZCBpbjoK Ky0gICAgLy8gaHR0cDovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3Qt YXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAwMzYwMDAwMDAKKysgICAgLy8gaHR0cHM6Ly9yZXNv dXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5odG1sIy8vMDJy MzAwMDAwMDM2MDAwMDAwCisgICAgIGNvbnN0IFFTdHJpbmdMaXN0IHN1cHBvcnRlZExhbmd1YWdl cyA9IHsKKyAgICAgICAgICJhciIsIC8vIEdlbmVyYXRlIGRpcmVjdGlvbnMgaW4gQXJhYmljCisg ICAgICAgICAiY3MiLCAvLyBHZW5lcmF0ZSBkaXJlY3Rpb25zIGluIEN6ZWNoCitkaWZmIC0tZ2l0 IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3RpbGVkbWFwcGlu Z21hbmFnZXJlbmdpbmVfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZp Y2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAoraW5kZXggNWQx NTgzNWQuLjI0MTQ4Zjk1IDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9z ZXJ2aWNlcy9lc3JpL2dlb3RpbGVkbWFwcGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKKysrKyBi L3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW90aWxlZG1hcHBpbmdt YW5hZ2VyZW5naW5lX2VzcmkuY3BwCitAQCAtMjMwLDcgKzIzMCw4IEBAIFFHZW9NYXAgKkdlb1Rp bGVkTWFwcGluZ01hbmFnZXJFbmdpbmVFc3JpOjpjcmVhdGVNYXAoKQorIC8vICR7eX0gPSBZCisg Ly8gJHt0b2tlbn0gPSBUb2tlbgorIAorLS8vIHRlbXBsYXRlID0gJ2h0dHA6Ly9zZXJ2aWNlcy5h cmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9fTWFwL01hcFNl cnZlci90aWxlL3t7en19L3t7eX19L3t7eH19LnBuZycKKysvLyB0ZW1wbGF0ZSA9CisrLy8gJ2h0 dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3Js ZF9Ub3BvX01hcC9NYXBTZXJ2ZXIvdGlsZS97e3p9fS97e3l9fS97e3h9fS5wbmcnCisgCisgYm9v bCBHZW9UaWxlZE1hcHBpbmdNYW5hZ2VyRW5naW5lRXNyaTo6aW5pdGlhbGl6ZU1hcFNvdXJjZXMo UUdlb1NlcnZpY2VQcm92aWRlcjo6RXJyb3IgKmVycm9yLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgKmVycm9yU3Ry aW5nLAorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNy aS9tYXBzLmpzb24gYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvbWFw cy5qc29uCitpbmRleCA4MTY3YWU3ZC4uODYyZTA4N2QgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9u L3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvbWFwcy5qc29uCisrKysgYi9xdGxvY2F0aW9u L3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvbWFwcy5qc29uCitAQCAtNiw4ICs2LDggQEAK KyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQXJjR0lTIE9ubGluZSBXb3JsZCBTdHJlZXQg TWFwIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwKKyAgICAgICAgICAgICAibmlnaHQi OiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxp bmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1N0cmVldF9NYXAvTWFwU2VydmVyIiwK Ky0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3 dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTNiOTMzMzc5ODNlOTQzNmY4ZGI5NTBlMzhh ODYyOWFmJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRw czovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRf U3RyZWV0X01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZj b3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTNi OTMzMzc5ODNlOTQzNmY4ZGI5NTBlMzhhODYyOWFmJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisg ICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTE2LDggKzE2LDggQEAKKyAgICAgICAgICAg ICAiIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgSW1hZ2VyeSIsCisgICAgICAgICAgICAgIm1vYmls ZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVy bCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMv V29ybGRfSW1hZ2VyeS9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0Ijog IiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9 MTBkZjIyNzlmOTY4NGU0YTlmNmE3ZjA4ZmViYWMyYTknPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIK KysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJj R0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfSW1hZ2VyeS9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAg ICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29t L2hvbWUvaXRlbS5odG1sP2lkPTEwZGYyMjc5Zjk2ODRlNGE5ZjZhN2YwOGZlYmFjMmE5Jz5Fc3Jp PC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTI2LDgg KzI2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQXJjR0lTIE9ubGluZSBXb3Js ZCBUZXJyYWluIEJhc2UiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAg ICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIu YXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9UZXJyYWluX0Jhc2Uv TWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJl Zj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWM2MWFkOGFiMDE3ZDQ5 ZTFhODJmNTgwZWUxMjk4OTMxJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAg InVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZp Y2VzL1dvcmxkX1RlcnJhaW5fQmFzZS9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmln aHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRl bS5odG1sP2lkPWM2MWFkOGFiMDE3ZDQ5ZTFhODJmNTgwZWUxMjk4OTMxJz5Fc3JpPC9hPiBjb250 cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTM2LDggKzM2LDggQEAK KyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQXJjR0lTIE9ubGluZSBXb3JsZCBUb3BvZ3Jh cGh5IiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwKKyAgICAgICAgICAgICAibmlnaHQi OiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5l LmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBTZXJ2ZXIiLAorLSAg ICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFy Y2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MzBlNWZlMzE0OWMzNGRmMWJhOTIyZTZmNWJiZjgw OGYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8v c2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVG9wb19N YXAvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEg aHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0zMGU1ZmUzMTQ5 YzM0ZGYxYmE5MjJlNmY1YmJmODA4Zic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAg fSwKKyAKKyAgICAgICAgIHsKK0BAIC00Niw4ICs0Niw4IEBACisgICAgICAgICAgICAgImRlc2Ny aXB0aW9uIjogIlRoaXMgbWFwIHByZXNlbnRzIGxhbmQgY292ZXIgYW5kIGRldGFpbGVkIHRvcG9n cmFwaGljIG1hcHMgZm9yIHRoZSBVbml0ZWQgU3RhdGVzLiIsCisgICAgICAgICAgICAgIm1vYmls ZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVy bCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNl cy9VU0FfVG9wb19NYXBzL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQi OiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9p ZD05OWNkNWZiZDk4OTM0MDI4ODAyYjRmNzk3YzRiMTczMic+RXNyaTwvYT4gY29udHJpYnV0b3Jz IgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29t L0FyY0dJUy9yZXN0L3NlcnZpY2VzL1VTQV9Ub3BvX01hcHMvTWFwU2VydmVyIiwKKysgICAgICAg ICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lz LmNvbS9ob21lL2l0ZW0uaHRtbD9pZD05OWNkNWZiZDk4OTM0MDI4ODAyYjRmNzk3YzRiMTczMic+ RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC01 Niw4ICs1Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk5hdGlvbmFsIEdlb2dy YXBoaWMgV29ybGQgTWFwIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAg ICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2Vydmlj ZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9OYXRHZW9fV29ybGRfTWFw L01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhy ZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1iOWIxYjQyMjE5ODk0 NGZiYmQ1MjUwYjMyNDE2OTFiNic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAg ICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3Nl cnZpY2VzL05hdEdlb19Xb3JsZF9NYXAvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJp Z2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0 ZW0uaHRtbD9pZD1iOWIxYjQyMjE5ODk0NGZiYmQ1MjUwYjMyNDE2OTFiNic+RXNyaTwvYT4gY29u dHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC02Niw4ICs2Niw4IEBA CisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZW1hdGljIGNvbnRlbnQgcHJvdmlkaW5n IGEgbmV1dHJhbCBiYWNrZ3JvdW5kIHdpdGggbWluaW1hbCBjb2xvcnMiLAorICAgICAgICAgICAg ICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAg ICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qv c2VydmljZXMvQ2FudmFzL1dvcmxkX0xpZ2h0X0dyYXlfQmFzZS9NYXBTZXJ2ZXIiLAorLSAgICAg ICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dp cy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9ZWQ3MTJjYjFkYjNlNGJhZTllODUzMjkwNDBmYjlhNDkn PkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2Vy dmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9DYW52YXMvV29ybGRf TGlnaHRfR3JheV9CYXNlL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQi OiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/ aWQ9ZWQ3MTJjYjFkYjNlNGJhZTllODUzMjkwNDBmYjlhNDknPkVzcmk8L2E+IGNvbnRyaWJ1dG9y cyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtNzYsOCArNzYsOCBAQAorICAgICAg ICAgICAgICJkZXNjcmlwdGlvbiI6ICJOYXR1cmFsIEVhcnRoIHBoeXNpY2FsIG1hcCBmb3IgdGhl IHdvcmxkIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5p Z2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29u bGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfUGh5c2ljYWxfTWFwL01hcFNlcnZl ciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6 Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1jNGVjNzIyYTFjZDM0Y2YwYTIzOTA0 YWFkZjg5MjNhMCc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAi aHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3Js ZF9QaHlzaWNhbF9NYXAvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6 ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9p ZD1jNGVjNzIyYTFjZDM0Y2YwYTIzOTA0YWFkZjg5MjNhMCc+RXNyaTwvYT4gY29udHJpYnV0b3Jz IgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC04Niw4ICs4Niw4IEBACisgICAgICAg ICAgICAgImRlc2NyaXB0aW9uIjogIlBvcnRyYXlzIHN1cmZhY2UgZWxldmF0aW9uIGFzIHNoYWRl ZCByZWxpZWYiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAi bmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lz b25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9TaGFkZWRfUmVsaWVmL01hcFNl cnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0 dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD05YzUzNzBkMGI1NGY0ZGUxYjQ4 YTM3OTJkNzM3N2ZmMic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwi OiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9X b3JsZF9TaGFkZWRfUmVsaWVmL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRl eHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0 bWw/aWQ9OWM1MzcwZDBiNTRmNGRlMWI0OGEzNzkyZDczNzdmZjInPkVzcmk8L2E+IGNvbnRyaWJ1 dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtOTYsOCArOTYsOCBAQAorICAg ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIG1hcCBpcyBkZXNpZ25lZCB0byBiZSB1c2Vk IGFzIGEgYmFzZW1hcCBieSBtYXJpbmUgR0lTIHByb2Zlc3Npb25hbHMgYW5kIGFzIGEgcmVmZXJl bmNlIG1hcCBieSBhbnlvbmUgaW50ZXJlc3RlZCBpbiBvY2VhbiBkYXRhIiwKKyAgICAgICAgICAg ICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAg ICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vYXJjZ2lzL3Jlc3Qv c2VydmljZXMvT2NlYW4vV29ybGRfT2NlYW5fQmFzZS9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAg ICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20v aG9tZS9pdGVtLmh0bWw/aWQ9MWUxMjZlNzUyMGY5NDY2YzljYTI4YjhmMjhiNWU1MDAnPkVzcmk8 L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFy Y2dpc29ubGluZS5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvT2NlYW4vV29ybGRfT2NlYW5fQmFz ZS9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBo cmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTFlMTI2ZTc1MjBm OTQ2NmM5Y2EyOGI4ZjI4YjVlNTAwJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9 LAorIAorICAgICAgICAgeworQEAgLTEwNiw4ICsxMDYsOCBAQAorICAgICAgICAgICAgICJkZXNj cmlwdGlvbiI6ICJUaGVtYXRpYyBjb250ZW50IHByb3ZpZGluZyBhIG5ldXRyYWwgYmFja2dyb3Vu ZCB3aXRoIG1pbmltYWwgY29sb3JzIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisg ICAgICAgICAgICAgIm5pZ2h0IjogdHJ1ZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9z ZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL0NhbnZhcy9Xb3Js ZF9EYXJrX0dyYXlfQmFzZS9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0 IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/ aWQ9YTI4NGE5Yjk5YjM0NDZhMzkxMGQ0MTQ0YTUwOTkwZjYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9y cyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNv bS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9DYW52YXMvV29ybGRfRGFya19HcmF5X0Jhc2UvTWFwU2Vy dmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0 cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1hMjg0YTliOTliMzQ0NmEzOTEw ZDQxNDRhNTA5OTBmNic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAg ICAgICAgIHsKK0BAIC0xMTYsOCArMTE2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24i OiAiRGVMb3JtZeKAmXMgdG9wb2dyYXBoaWMgYmFzZW1hcCBpcyBhIHNlYW1sZXNzIGdsb2JhbCBk YXRhIHNldCB0aGF0IHBvcnRyYXlzIHRyYW5zcG9ydGF0aW9uLCBoeWRyb2dyYXBoeSwganVyaXNk aWN0aW9uIGJvdW5kYXJpZXMsIGFuZCBtYWpvciBnZW9ncmFwaGljIGZlYXR1cmVzIiwKKyAgICAg ICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCist ICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lT L3Jlc3Qvc2VydmljZXMvU3BlY2lhbHR5L0RlTG9ybWVfV29ybGRfQmFzZV9NYXAvTWFwU2VydmVy IiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDov L3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWIxNjVjM2RmNDUzZTRiZTZiNWFjNGZk YjI0MWVmZmJlJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJo dHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1NwZWNp YWx0eS9EZUxvcm1lX1dvcmxkX0Jhc2VfTWFwL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNv cHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9t ZS9pdGVtLmh0bWw/aWQ9YjE2NWMzZGY0NTNlNGJlNmI1YWM0ZmRiMjQxZWZmYmUnPkVzcmk8L2E+ IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0KKyAgICAgXQorIH0KK2RpZmYgLS1naXQgYS9xdGxv Y2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxhY2VtYW5hZ2VyZW5naW5lX2Vz cmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL3BsYWNlbWFu YWdlcmVuZ2luZV9lc3JpLmNwcAoraW5kZXggMzg1OGRkZjUuLmFmNjZmMjhlIDEwMDY0NAorLS0t IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL3BsYWNlbWFuYWdlcmVu Z2luZV9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9l c3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorQEAgLTYzLDggKzYzLDEwIEBAIHN0YXRp YyBjb25zdCBRU3RyaW5nIGtDb3VudHJpZXNLZXkoUVN0cmluZ0xpdGVyYWwoImRldGFpbGVkQ291 bnRyaWVzIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtMb2NhbGl6ZWROYW1lc0tleShRU3Ry aW5nTGl0ZXJhbCgibG9jYWxpemVkTmFtZXMiKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga01h eExvY2F0aW9uc0tleShRU3RyaW5nTGl0ZXJhbCgibWF4TG9jYXRpb25zIikpOworIAorLXN0YXRp YyBjb25zdCBRVXJsIGtVcmxHZW9jb2RlU2VydmVyKCJodHRwOi8vZ2VvY29kZS5hcmNnaXMuY29t L2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXI/Zj1wanNvbiIpOworLXN0 YXRpYyBjb25zdCBRVXJsIGtVcmxGaW5kQWRkcmVzc0NhbmRpZGF0ZXMoImh0dHA6Ly9nZW9jb2Rl LmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlci9maW5k QWRkcmVzc0NhbmRpZGF0ZXMiKTsKKytzdGF0aWMgY29uc3QgUVVybCBrVXJsR2VvY29kZVNlcnZl cigKKysgICAgICAgICJodHRwczovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2 aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyP2Y9cGpzb24iKTsKKytzdGF0aWMgY29uc3QgUVVybCBr VXJsRmluZEFkZHJlc3NDYW5kaWRhdGVzKCJodHRwczovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNn aXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC8iCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiR2VvY29kZVNlcnZlci9maW5kQWRkcmVzc0NhbmRpZGF0ZXMiKTsKKyAK KyBQbGFjZU1hbmFnZXJFbmdpbmVFc3JpOjpQbGFjZU1hbmFnZXJFbmdpbmVFc3JpKGNvbnN0IFFW YXJpYW50TWFwICZwYXJhbWV0ZXJzLCBRR2VvU2VydmljZVByb3ZpZGVyOjpFcnJvciAqZXJyb3Is CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5n ICplcnJvclN0cmluZykgOgorU3VibW9kdWxlIHF0bXVsdGltZWRpYSBmMDM0NDA3OS4uMGQ3Y2Mz M2E6CitkaWZmIC0tZ2l0IGEvcXRtdWx0aW1lZGlhL3NyYy9wbHVnaW5zL3B1bHNlYXVkaW8vcWF1 ZGlvaW5wdXRfcHVsc2UuY3BwIGIvcXRtdWx0aW1lZGlhL3NyYy9wbHVnaW5zL3B1bHNlYXVkaW8v cWF1ZGlvaW5wdXRfcHVsc2UuY3BwCitpbmRleCAyYjUzMjUxMzIuLmI2OGI0YWYxYiAxMDA2NDQK Ky0tLSBhL3F0bXVsdGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0X3B1 bHNlLmNwcAorKysrIGIvcXRtdWx0aW1lZGlhL3NyYy9wbHVnaW5zL3B1bHNlYXVkaW8vcWF1ZGlv aW5wdXRfcHVsc2UuY3BwCitAQCAtNDAyLDYgKzQwMiw4IEBAIGludCBRUHVsc2VBdWRpb0lucHV0 OjpieXRlc1JlYWR5KCkgY29uc3QKKyAKKyBxaW50NjQgUVB1bHNlQXVkaW9JbnB1dDo6cmVhZChj aGFyICpkYXRhLCBxaW50NjQgbGVuKQorIHsKKysgICAgUV9BU1NFUlQoZGF0YSAhPSBudWxscHRy IHx8IGxlbiA9PSAwKTsKKysKKyAgICAgbV9ieXRlc0F2YWlsYWJsZSA9IGNoZWNrQnl0ZXNSZWFk eSgpOworIAorICAgICBzZXRFcnJvcihRQXVkaW86Ok5vRXJyb3IpOworQEAgLTQxMSw3ICs0MTMs OCBAQCBxaW50NjQgUVB1bHNlQXVkaW9JbnB1dDo6cmVhZChjaGFyICpkYXRhLCBxaW50NjQgbGVu KQorIAorICAgICBpZiAoIW1fcHVsbE1vZGUgJiYgIW1fdGVtcEJ1ZmZlci5pc0VtcHR5KCkpIHsK KyAgICAgICAgIHJlYWRCeXRlcyA9IHFNaW4oc3RhdGljX2Nhc3Q8aW50PihsZW4pLCBtX3RlbXBC dWZmZXIuc2l6ZSgpKTsKKy0gICAgICAgIG1lbWNweShkYXRhLCBtX3RlbXBCdWZmZXIuY29uc3RE YXRhKCksIHJlYWRCeXRlcyk7CisrICAgICAgICBpZiAocmVhZEJ5dGVzKQorKyAgICAgICAgICAg IG1lbWNweShkYXRhLCBtX3RlbXBCdWZmZXIuY29uc3REYXRhKCksIHJlYWRCeXRlcyk7CisgICAg ICAgICBtX3RvdGFsVGltZVZhbHVlICs9IHJlYWRCeXRlczsKKyAKKyAgICAgICAgIGlmIChyZWFk Qnl0ZXMgPCBtX3RlbXBCdWZmZXIuc2l6ZSgpKSB7CitAQCAtNTAyLDkgKzUwNSwxMCBAQCBxaW50 NjQgUVB1bHNlQXVkaW9JbnB1dDo6cmVhZChjaGFyICpkYXRhLCBxaW50NjQgbGVuKQorIAorIHZv aWQgUVB1bHNlQXVkaW9JbnB1dDo6YXBwbHlWb2x1bWUoY29uc3Qgdm9pZCAqc3JjLCB2b2lkICpk ZXN0LCBpbnQgbGVuKQorIHsKKysgICAgUV9BU1NFUlQoKHNyYyAmJiBkZXN0KSB8fCBsZW4gPT0g MCk7CisgICAgIGlmIChtX3ZvbHVtZSA8IDEuZikKKyAgICAgICAgIFFBdWRpb0hlbHBlckludGVy bmFsOjpxTXVsdGlwbHlTYW1wbGVzKG1fdm9sdW1lLCBtX2Zvcm1hdCwgc3JjLCBkZXN0LCBsZW4p OworLSAgICBlbHNlCisrICAgIGVsc2UgaWYgKGxlbikKKyAgICAgICAgIG1lbWNweShkZXN0LCBz cmMsIGxlbik7CisgfQorIAorU3VibW9kdWxlIHF0cGltIDAyZWZlZjVlLi4uZjlhOGYwZmMgKGNv bW1pdHMgbm90IHByZXNlbnQpCitTdWJtb2R1bGUgcXRxdWljazNkIGI4NWNmNjIyLi40N2RlZmM4 YjoKK2RpZmYgLS1naXQgYS9xdHF1aWNrM2Qvc3JjL3BsdWdpbnMvYXNzZXRpbXBvcnRlcnMvYXNz aW1wL2Fzc2ltcC5wcm8gYi9xdHF1aWNrM2Qvc3JjL3BsdWdpbnMvYXNzZXRpbXBvcnRlcnMvYXNz aW1wL2Fzc2ltcC5wcm8KK2luZGV4IGNhNWM0OTllLi4xNzRhMDc1YiAxMDA2NDQKKy0tLSBhL3F0 cXVpY2szZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9hc3NpbXAvYXNzaW1wLnBybworKysr IGIvcXRxdWljazNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAucHJv CitAQCAtMTAsNyArMTAsNyBAQCBRVF9GT1JfQ09ORklHICs9IGFzc2V0aW1wb3J0ZXJzLXByaXZh dGUKKyBpbmNsdWRlKCQkT1VUX1BXRC8uLi9xdGFzc2V0aW1wb3J0ZXJzLWNvbmZpZy5wcmkpCisg CisgcXRDb25maWcoc3lzdGVtLWFzc2ltcCk6IWlmKGNyb3NzX2NvbXBpbGU6aG9zdF9idWlsZCkg eworLSAgICBRTUFLRV9VU0VfUFJJVkFURSArPSBhc3NpbXAKKysgICAgUU1BS0VfVVNFX1BSSVZB VEUgKz0gcXVpY2szZC1hc3NpbXAKKyB9IGVsc2UgeworICAgICBpbmNsdWRlKC4uLy4uLy4uLzNy ZHBhcnR5L2Fzc2ltcC9hc3NpbXAucHJpKQorIH0KK1N1Ym1vZHVsZSBxdHF1aWNrY29udHJvbHMy IDNhNjU3ZGMwLi41NmNlODIzMzoKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9p bXBvcnRzL3BsYXRmb3JtL3dpZGdldHMvcXdpZGdldHBsYXRmb3JtbWVudS5jcHAgYi9xdHF1aWNr Y29udHJvbHMyL3NyYy9pbXBvcnRzL3BsYXRmb3JtL3dpZGdldHMvcXdpZGdldHBsYXRmb3JtbWVu dS5jcHAKK2luZGV4IGU1ZmU3MzRmNy4uZTM2OTIyNzc1IDEwMDY0NAorLS0tIGEvcXRxdWlja2Nv bnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRzL3F3aWRnZXRwbGF0Zm9ybW1lbnUu Y3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9pbXBvcnRzL3BsYXRmb3JtL3dpZGdldHMv cXdpZGdldHBsYXRmb3JtbWVudS5jcHAKK0BAIC0zOCw2ICszOCw3IEBACisgI2luY2x1ZGUgInF3 aWRnZXRwbGF0Zm9ybW1lbnVpdGVtX3AuaCIKKyAKKyAjaW5jbHVkZSA8UXRHdWkvcXdpbmRvdy5o PgorKyNpbmNsdWRlIDxRdEd1aS9wcml2YXRlL3FoaWdoZHBpc2NhbGluZ19wLmg+CisgI2luY2x1 ZGUgPFF0V2lkZ2V0cy9xbWVudS5oPgorICNpbmNsdWRlIDxRdFdpZGdldHMvcWFjdGlvbi5oPgor IAorQEAgLTE0NSw3ICsxNDYsNyBAQCB2b2lkIFFXaWRnZXRQbGF0Zm9ybU1lbnU6OnNob3dQb3B1 cChjb25zdCBRV2luZG93ICp3aW5kb3csIGNvbnN0IFFSZWN0ICZ0YXJnZXRSZQorIAorICAgICBR UG9pbnQgdGFyZ2V0UG9zID0gdGFyZ2V0UmVjdC5ib3R0b21MZWZ0KCk7CisgICAgIGlmICh3aW5k b3cpCistICAgICAgICB0YXJnZXRQb3MgPSB3aW5kb3ctPm1hcFRvR2xvYmFsKHRhcmdldFBvcyk7 CisrICAgICAgICB0YXJnZXRQb3MgPSB3aW5kb3ctPm1hcFRvR2xvYmFsKFFIaWdoRHBpOjpmcm9t TmF0aXZlTG9jYWxQb3NpdGlvbih0YXJnZXRQb3MsIHdpbmRvdykpOworIAorICAgICBjb25zdCBR V2lkZ2V0UGxhdGZvcm1NZW51SXRlbSAqd2lkZ2V0SXRlbSA9IHFvYmplY3RfY2FzdDxjb25zdCBR V2lkZ2V0UGxhdGZvcm1NZW51SXRlbSAqPihpdGVtKTsKKyAgICAgbV9tZW51LT5wb3B1cCh0YXJn ZXRQb3MsIHdpZGdldEl0ZW0gPyB3aWRnZXRJdGVtLT5hY3Rpb24oKSA6IG51bGxwdHIpOworZGlm ZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0 cmFjdGJ1dHRvbi5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1 aWNrYWJzdHJhY3RidXR0b24uY3BwCitpbmRleCA5NTBlNGUwOTkuLmI4MWZiZWEwYiAxMDA2NDQK Ky0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFj dGJ1dHRvbi5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9x cXVpY2thYnN0cmFjdGJ1dHRvbi5jcHAKK0BAIC0zODcsNiArMzg3LDE3IEBAIHZvaWQgUVF1aWNr QWJzdHJhY3RCdXR0b25Qcml2YXRlOjppdGVtSW1wbGljaXRIZWlnaHRDaGFuZ2VkKFFRdWlja0l0 ZW0gKml0ZW0pCisgICAgICAgICBlbWl0IHEtPmltcGxpY2l0SW5kaWNhdG9ySGVpZ2h0Q2hhbmdl ZCgpOworIH0KKyAKKyt2b2lkIFFRdWlja0Fic3RyYWN0QnV0dG9uUHJpdmF0ZTo6aXRlbURlc3Ry b3llZChRUXVpY2tJdGVtICppdGVtKQorK3sKKysgICAgUV9RKFFRdWlja0Fic3RyYWN0QnV0dG9u KTsKKysgICAgUVF1aWNrQ29udHJvbFByaXZhdGU6Oml0ZW1EZXN0cm95ZWQoaXRlbSk7CisrICAg IGlmIChpdGVtID09IGluZGljYXRvcikgeworKyAgICAgICAgaW5kaWNhdG9yID0gbnVsbHB0cjsK KysgICAgICAgIGVtaXQgcS0+aW1wbGljaXRJbmRpY2F0b3JXaWR0aENoYW5nZWQoKTsKKysgICAg ICAgIGVtaXQgcS0+aW1wbGljaXRJbmRpY2F0b3JIZWlnaHRDaGFuZ2VkKCk7CisrICAgIH0KKyt9 CisrCisgUVF1aWNrQWJzdHJhY3RCdXR0b24gKlFRdWlja0Fic3RyYWN0QnV0dG9uUHJpdmF0ZTo6 ZmluZENoZWNrZWRCdXR0b24oKSBjb25zdAorIHsKKyAgICAgUV9RKGNvbnN0IFFRdWlja0Fic3Ry YWN0QnV0dG9uKTsKK0BAIC0xMTc2LDYgKzExODcsMTIgQEAgUUFjY2Vzc2libGU6OlJvbGUgUVF1 aWNrQWJzdHJhY3RCdXR0b246OmFjY2Vzc2libGVSb2xlKCkgY29uc3QKKyAgICAgfQorICAgICBy ZXR1cm4gUUFjY2Vzc2libGU6OkJ1dHRvbjsKKyB9CisrCisrdm9pZCBRUXVpY2tBYnN0cmFjdEJ1 dHRvbjo6YWNjZXNzaWJsZVByZXNzQWN0aW9uKCkKKyt7CisrICAgIFFfRChRUXVpY2tBYnN0cmFj dEJ1dHRvbik7CisrICAgIGQtPnRyaWdnZXIoKTsKKyt9CisgI2VuZGlmCisgCisgUVRfRU5EX05B TUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVz Mi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wLmggYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3Rl bXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcC5oCitpbmRleCAwZmE0ODk4MGUuLmFiNjYy MjBkMCAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9x cXVpY2thYnN0cmFjdGJ1dHRvbl9wLmgKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNr dGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wLmgKK0BAIC0yMDksNiArMjA5LDcgQEAg cHJvdGVjdGVkOgorICNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKyAgICAgdm9pZCBhY2Nl c3NpYmlsaXR5QWN0aXZlQ2hhbmdlZChib29sIGFjdGl2ZSkgb3ZlcnJpZGU7CisgICAgIFFBY2Nl c3NpYmxlOjpSb2xlIGFjY2Vzc2libGVSb2xlKCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIFFfSU5W T0tBQkxFIHZvaWQgYWNjZXNzaWJsZVByZXNzQWN0aW9uKCk7CisgI2VuZGlmCisgCisgcHJpdmF0 ZToKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1 aWNrYWJzdHJhY3RidXR0b25fcF9wLmggYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBs YXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcF9wLmgKK2luZGV4IDkyOTFjMWE4Ny4uYjcyOTcy MGYyIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3Fx dWlja2Fic3RyYWN0YnV0dG9uX3BfcC5oCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlj a3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcF9wLmgKK0BAIC0xMDksNiArMTA5LDcg QEAgcHVibGljOgorIAorICAgICB2b2lkIGl0ZW1JbXBsaWNpdFdpZHRoQ2hhbmdlZChRUXVpY2tJ dGVtICppdGVtKSBvdmVycmlkZTsKKyAgICAgdm9pZCBpdGVtSW1wbGljaXRIZWlnaHRDaGFuZ2Vk KFFRdWlja0l0ZW0gKml0ZW0pIG92ZXJyaWRlOworKyAgICB2b2lkIGl0ZW1EZXN0cm95ZWQoUVF1 aWNrSXRlbSAqaXRlbSkgb3ZlcnJpZGU7CisgCisgICAgIC8vIGNvcGllZCBmcm9tIHFhYnN0cmFj dGJ1dHRvbi5jcHAKKyAgICAgc3RhdGljIGNvbnN0IGludCBBVVRPX1JFUEVBVF9ERUxBWSA9IDMw MDsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1 aWNrYWN0aW9uLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVp Y2thY3Rpb24uY3BwCitpbmRleCAyMDQxZTc3NDEuLjg2MTBjZGZhZSAxMDA2NDQKKy0tLSBhL3F0 cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thY3Rpb24uY3BwCisrKysg Yi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWN0aW9uLmNwcAor QEAgLTE0NSw3ICsxNDUsNyBAQCBpbnQgUVF1aWNrQWN0aW9uUHJpdmF0ZTo6U2hvcnRjdXRFbnRy eTo6c2hvcnRjdXRJZCgpIGNvbnN0CisgCisgdm9pZCBRUXVpY2tBY3Rpb25Qcml2YXRlOjpTaG9y dGN1dEVudHJ5OjpncmFiKGNvbnN0IFFLZXlTZXF1ZW5jZSAmc2hvcnRjdXQsIGJvb2wgZW5hYmxl ZCkKKyB7CistICAgIGlmIChzaG9ydGN1dC5pc0VtcHR5KCkpCisrICAgIGlmIChzaG9ydGN1dC5p c0VtcHR5KCkgfHwgbV9zaG9ydGN1dElkKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBRdDo6 U2hvcnRjdXRDb250ZXh0IGNvbnRleHQgPSBRdDo6V2luZG93U2hvcnRjdXQ7IC8vIFRPRE8KK2Rp ZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29u dGFpbmVyLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tj b250YWluZXIuY3BwCitpbmRleCBmMzhjMmIwOWMuLjZlZWQyYTAyNCAxMDA2NDQKKy0tLSBhL3F0 cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250YWluZXIuY3BwCisr KysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udGFpbmVy LmNwcAorQEAgLTIyNSw2ICsyMjUsNyBAQCB2b2lkIFFRdWlja0NvbnRhaW5lclByaXZhdGU6OmNs ZWFudXAoKQorICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGNvbnRlbnRNb2RlbCwgJlFRbWxPYmpl Y3RNb2RlbDo6Y291bnRDaGFuZ2VkLCBxLCAmUVF1aWNrQ29udGFpbmVyOjpjb3VudENoYW5nZWQp OworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGNvbnRlbnRNb2RlbCwgJlFRbWxPYmplY3RNb2Rl bDo6Y2hpbGRyZW5DaGFuZ2VkLCBxLCAmUVF1aWNrQ29udGFpbmVyOjpjb250ZW50Q2hpbGRyZW5D aGFuZ2VkKTsKKyAgICAgZGVsZXRlIGNvbnRlbnRNb2RlbDsKKysgICAgY29udGVudE1vZGVsID0g bnVsbHB0cjsKKyB9CisgCisgUVF1aWNrSXRlbSAqUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6aXRl bUF0KGludCBpbmRleCkgY29uc3QKK0BAIC00MzYsNyArNDM3LDcgQEAgdm9pZCBRUXVpY2tDb250 YWluZXJQcml2YXRlOjpjb250ZW50Q2hpbGRyZW5fY2xlYXIoUVFtbExpc3RQcm9wZXJ0eTxRUXVp Y2tJdGVtPgorIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6dXBkYXRlQ29udGVudFdpZHRo KCkKKyB7CisgICAgIFFfUShRUXVpY2tDb250YWluZXIpOworLSAgICBpZiAoaGFzQ29udGVudFdp ZHRoIHx8IHFGdXp6eUNvbXBhcmUoY29udGVudFdpZHRoLCBpbXBsaWNpdENvbnRlbnRXaWR0aCkp CisrICAgIGlmIChoYXNDb250ZW50V2lkdGggfHwgcUZ1enp5Q29tcGFyZShjb250ZW50V2lkdGgs IGltcGxpY2l0Q29udGVudFdpZHRoKSB8fCAhY29udGVudE1vZGVsKQorICAgICAgICAgcmV0dXJu OworIAorICAgICBjb250ZW50V2lkdGggPSBpbXBsaWNpdENvbnRlbnRXaWR0aDsKK0BAIC00NDYs NyArNDQ3LDcgQEAgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjp1cGRhdGVDb250ZW50V2lk dGgoKQorIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6dXBkYXRlQ29udGVudEhlaWdodCgp CisgeworICAgICBRX1EoUVF1aWNrQ29udGFpbmVyKTsKKy0gICAgaWYgKGhhc0NvbnRlbnRIZWln aHQgfHwgcUZ1enp5Q29tcGFyZShjb250ZW50SGVpZ2h0LCBpbXBsaWNpdENvbnRlbnRIZWlnaHQp KQorKyAgICBpZiAoaGFzQ29udGVudEhlaWdodCB8fCBxRnV6enlDb21wYXJlKGNvbnRlbnRIZWln aHQsIGltcGxpY2l0Q29udGVudEhlaWdodCkgfHwgIWNvbnRlbnRNb2RlbCkKKyAgICAgICAgIHJl dHVybjsKKyAKKyAgICAgY29udGVudEhlaWdodCA9IGltcGxpY2l0Q29udGVudEhlaWdodDsKK2Rp ZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29u dHJvbC5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29u dHJvbC5jcHAKK2luZGV4IGJiYmQwZTYyMi4uMWY0YjQ3MzQzIDEwMDY0NAorLS0tIGEvcXRxdWlj a2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwCisrKysgYi9x dHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbC5jcHAKK0BA IC04NDUsNiArODQ1LDEzIEBAIHZvaWQgUVF1aWNrQ29udHJvbFByaXZhdGU6OmV4ZWN1dGVCYWNr Z3JvdW5kKGJvb2wgY29tcGxldGUpCisgICAgICAgICBxdWlja0NvbXBsZXRlRGVmZXJyZWQocSwg YmFja2dyb3VuZE5hbWUoKSwgYmFja2dyb3VuZCk7CisgfQorIAorKy8qCisrICAgIFxpbnRlcm5h bAorKworKyAgICBIaWRlcyBhbiBpdGVtIHRoYXQgd2FzIHJlcGxhY2VkIGJ5IGEgbmV3ZXIgb25l LCByYXRoZXIgdGhhbgorKyAgICBkZWxldGluZyBpdCwgYXMgdGhlIGl0ZW0gaXMgdHlwaWNhbGx5 IGNyZWF0ZWQgaW4gUU1MIGFuZCBoZW5jZQorKyAgICB3ZSBkb24ndCBvd24gaXQuCisrKi8KKyB2 b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjpoaWRlT2xkSXRlbShRUXVpY2tJdGVtICppdGVtKQor IHsKKyAgICAgaWYgKCFpdGVtKQorQEAgLTg2Myw2ICs4NzAsMjkgQEAgdm9pZCBRUXVpY2tDb250 cm9sUHJpdmF0ZTo6aGlkZU9sZEl0ZW0oUVF1aWNrSXRlbSAqaXRlbSkKKyAjZW5kaWYKKyB9Cisg CisrLyoKKysgICAgXGludGVybmFsCisrCisrICAgIE5hbWVkICJ1bmhpZGUiIGJlY2F1c2UgaXQn cyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhbiBpdGVtCisrICAgIHRoYXQgd2FzIHByZXZpb3VzbHkg aGlkZGVuIGJ5IFxsIGhpZGVPbGRJdGVtKCkgd2FudHMgdG8gYmUKKysgICAgc2hvd24gYnkgYSBj b250cm9sIGFnYWluLCBzdWNoIGFzIGEgU2Nyb2xsQmFyIGluIFNjcm9sbFZpZXcuCisrKi8KKyt2 b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjp1bmhpZGVPbGRJdGVtKFFRdWlja0NvbnRyb2wgKmNv bnRyb2wsIFFRdWlja0l0ZW0gKml0ZW0pCisreworKyAgICBRX0FTU0VSVChpdGVtKTsKKysgICAg cUNEZWJ1ZyhsY0l0ZW1NYW5hZ2VtZW50KSA8PCAidW5oaWRpbmcgb2xkIGl0ZW0iIDw8IGl0ZW07 CisrCisrICAgIGl0ZW0tPnNldFZpc2libGUodHJ1ZSk7CisrICAgIGl0ZW0tPnNldFBhcmVudEl0 ZW0oY29udHJvbCk7CisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKyAgICAvLyBB ZGQgdGhlIGl0ZW0gYmFjayBpbiB0byB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLgorKyAgICBRUXVp Y2tBY2Nlc3NpYmxlQXR0YWNoZWQgKmFjY2Vzc2libGUgPSBhY2Nlc3NpYmxlQXR0YWNoZWQoaXRl bSk7CisrICAgIGlmIChhY2Nlc3NpYmxlKQorKyAgICAgICAgYWNjZXNzaWJsZS0+c2V0SWdub3Jl ZChmYWxzZSk7CisrI2VuZGlmCisrfQorKworIHZvaWQgUVF1aWNrQ29udHJvbFByaXZhdGU6OnVw ZGF0ZUJhc2VsaW5lT2Zmc2V0KCkKKyB7CisgICAgIFFfUShRUXVpY2tDb250cm9sKTsKK2RpZmYg LS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJv bF9wX3AuaCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250 cm9sX3BfcC5oCitpbmRleCA4ZTk3OTA3OWUuLmE2ZTYyNGM5MSAxMDA2NDQKKy0tLSBhL3F0cXVp Y2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sX3BfcC5oCisrKysg Yi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbF9wX3Au aAorQEAgLTE3Myw2ICsxNzMsNyBAQCBwdWJsaWM6CisgICAgIHZpcnR1YWwgdm9pZCBleGVjdXRl QmFja2dyb3VuZChib29sIGNvbXBsZXRlID0gZmFsc2UpOworIAorICAgICBzdGF0aWMgdm9pZCBo aWRlT2xkSXRlbShRUXVpY2tJdGVtICppdGVtKTsKKysgICAgc3RhdGljIHZvaWQgdW5oaWRlT2xk SXRlbShRUXVpY2tDb250cm9sICpjb250cm9sLCBRUXVpY2tJdGVtICppdGVtKTsKKyAKKyAgICAg dm9pZCB1cGRhdGVCYXNlbGluZU9mZnNldCgpOworIAorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250 cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tkaWFsb2didXR0b25ib3guY3BwIGIvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxvZ2J1dHRvbmJveC5j cHAKK2luZGV4IGU2ZGIxNGViNS4uNjE5N2QxNTQ3IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxvZ2J1dHRvbmJveC5jcHAKKysrKyBi L3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tkaWFsb2didXR0b25i b3guY3BwCitAQCAtMjM3LDcgKzIzNyw3IEBAIHN0YXRpYyBRUmVjdEYgYWxpZ25lZFJlY3QoUXQ6 OkxheW91dERpcmVjdGlvbiBkaXJlY3Rpb24sIFF0OjpBbGlnbm1lbnQgYWxpZ25tZW50Cisgdm9p ZCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjpyZXNpemVDb250ZW50KCkKKyB7CisgICAg IFFfUShRUXVpY2tEaWFsb2dCdXR0b25Cb3gpOworLSAgICBpZiAoIWNvbnRlbnRJdGVtKQorKyAg ICBpZiAoIWNvbnRlbnRJdGVtIHx8ICFjb250ZW50TW9kZWwpCisgICAgICAgICByZXR1cm47Cisg CisgICAgIFFSZWN0RiBnZW9tZXRyeSA9IHEtPmJvdW5kaW5nUmVjdCgpLmFkanVzdGVkKHEtPmxl ZnRQYWRkaW5nKCksIHEtPnRvcFBhZGRpbmcoKSwgLXEtPnJpZ2h0UGFkZGluZygpLCAtcS0+Ym90 dG9tUGFkZGluZygpKTsKK0BAIC0zMjIsNiArMzIyLDkgQEAgdm9pZCBRUXVpY2tEaWFsb2dCdXR0 b25Cb3hQcml2YXRlOjp1cGRhdGVMYXlvdXQoKQorIHFyZWFsIFFRdWlja0RpYWxvZ0J1dHRvbkJv eFByaXZhdGU6OmdldENvbnRlbnRXaWR0aCgpIGNvbnN0CisgeworICAgICBRX1EoY29uc3QgUVF1 aWNrRGlhbG9nQnV0dG9uQm94KTsKKysgICAgaWYgKCFjb250ZW50TW9kZWwpCisrICAgICAgICBy ZXR1cm4gMDsKKysKKyAgICAgY29uc3QgaW50IGNvdW50ID0gY29udGVudE1vZGVsLT5jb3VudCgp OworICAgICBjb25zdCBxcmVhbCB0b3RhbFNwYWNpbmcgPSBxTWF4KDAsIGNvdW50IC0gMSkgKiBz cGFjaW5nOworICAgICBxcmVhbCB0b3RhbFdpZHRoID0gdG90YWxTcGFjaW5nOworQEAgLTM0MSw2 ICszNDQsOSBAQCBxcmVhbCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjpnZXRDb250ZW50 V2lkdGgoKSBjb25zdAorIHFyZWFsIFFRdWlja0RpYWxvZ0J1dHRvbkJveFByaXZhdGU6OmdldENv bnRlbnRIZWlnaHQoKSBjb25zdAorIHsKKyAgICAgUV9RKGNvbnN0IFFRdWlja0RpYWxvZ0J1dHRv bkJveCk7CisrICAgIGlmICghY29udGVudE1vZGVsKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisg ICAgIGNvbnN0IGludCBjb3VudCA9IGNvbnRlbnRNb2RlbC0+Y291bnQoKTsKKyAgICAgcXJlYWwg bWF4SGVpZ2h0ID0gMDsKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Citk aWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja292 ZXJsYXkuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja292 ZXJsYXkuY3BwCitpbmRleCA5MWJkNTkxODQuLjBjZTUxOGY4NCAxMDA2NDQKKy0tLSBhL3F0cXVp Y2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcAorKysrIGIv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja292ZXJsYXkuY3BwCitA QCAtMzk5LDggKzM5OSwxMSBAQCB2b2lkIFFRdWlja092ZXJsYXk6Oml0ZW1DaGFuZ2UoSXRlbUNo YW5nZSBjaGFuZ2UsIGNvbnN0IEl0ZW1DaGFuZ2VEYXRhICZkYXRhKQorICAgICBRX0QoUVF1aWNr T3ZlcmxheSk7CisgICAgIFFRdWlja0l0ZW06Oml0ZW1DaGFuZ2UoY2hhbmdlLCBkYXRhKTsKKyAK Ky0gICAgaWYgKGNoYW5nZSA9PSBJdGVtQ2hpbGRBZGRlZENoYW5nZSB8fCBjaGFuZ2UgPT0gSXRl bUNoaWxkUmVtb3ZlZENoYW5nZSkKKysgICAgaWYgKGNoYW5nZSA9PSBJdGVtQ2hpbGRBZGRlZENo YW5nZSB8fCBjaGFuZ2UgPT0gSXRlbUNoaWxkUmVtb3ZlZENoYW5nZSkgeworICAgICAgICAgc2V0 VmlzaWJsZSghZC0+YWxsRHJhd2Vycy5pc0VtcHR5KCkgfHwgIWNoaWxkSXRlbXMoKS5pc0VtcHR5 KCkpOworKyAgICAgICAgaWYgKGRhdGEuaXRlbS0+cGFyZW50KCkgPT0gZC0+bW91c2VHcmFiYmVy UG9wdXApCisrICAgICAgICAgICAgZC0+c2V0TW91c2VHcmFiYmVyUG9wdXAobnVsbHB0cik7Cisr ICAgIH0KKyB9CisgCisgdm9pZCBRUXVpY2tPdmVybGF5OjpnZW9tZXRyeUNoYW5nZWQoY29uc3Qg UVJlY3RGICZuZXdHZW9tZXRyeSwgY29uc3QgUVJlY3RGICZvbGRHZW9tZXRyeSkKK2RpZmYgLS1n aXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrc2Nyb2xsYmFy LmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tzY3JvbGxi YXIuY3BwCitpbmRleCA0ZTJmNTA5ZGIuLjFjNGIzMDhjZCAxMDA2NDQKKy0tLSBhL3F0cXVpY2tj b250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tzY3JvbGxiYXIuY3BwCisrKysgYi9x dHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrc2Nyb2xsYmFyLmNwcAor QEAgLTc5Nyw2ICs3OTcsMTQgQEAgdm9pZCBRUXVpY2tTY3JvbGxCYXJBdHRhY2hlZFByaXZhdGU6 OmluaXRIb3Jpem9udGFsKCkKKyAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQgPT0gZmxpY2thYmxl LT5wYXJlbnRJdGVtKCkpCisgICAgICAgICBob3Jpem9udGFsLT5zdGFja0FmdGVyKGZsaWNrYWJs ZSk7CisgCisrICAgIC8vIElmIGEgc2Nyb2xsIGJhciB3YXMgcHJldmlvdXNseSBoaWRkZW4gKGR1 ZSB0byBlLmcuIHNldHRpbmcgYSBuZXcgY29udGVudEl0ZW0KKysgICAgLy8gb24gYSBTY3JvbGxW aWV3KSwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSB1bi1oaWRlIGl0LgorKyAgICAvLyBX ZSBkb24ndCBib3RoZXIgY2hlY2tpbmcgaWYgdGhlIGl0ZW0gaXMgYWN0dWFsbHkgdGhlIG9sZCBv bmUsIGJlY2F1c2UKKysgICAgLy8gaWYgaXQncyBub3QsIGFsbCBvZiB0aGUgdGhpbmdzIHRoZSBm dW5jdGlvbiBkb2VzIChzZXR0aW5nIHBhcmVudCwgdmlzaWJpbGl0eSwgZXRjLikKKysgICAgLy8g c2hvdWxkIGJlIG5vLW9wcyBhbnl3YXkuCisrICAgIGlmIChhdXRvIGNvbnRyb2wgPSBxb2JqZWN0 X2Nhc3Q8UVF1aWNrQ29udHJvbCo+KHFfcHRyLT5wYXJlbnQoKSkpCisrICAgICAgICBRUXVpY2tD b250cm9sUHJpdmF0ZTo6dW5oaWRlT2xkSXRlbShjb250cm9sLCBob3Jpem9udGFsKTsKKysKKyAg ICAgbGF5b3V0SG9yaXpvbnRhbCgpOworICAgICBob3Jpem9udGFsLT5zZXRTaXplKGFyZWEtPnBy b3BlcnR5KCJ3aWR0aFJhdGlvIikudG9SZWFsKCkpOworICAgICBob3Jpem9udGFsLT5zZXRQb3Np dGlvbihhcmVhLT5wcm9wZXJ0eSgieFBvc2l0aW9uIikudG9SZWFsKCkpOworQEAgLTgxOCw2ICs4 MjYsOSBAQCB2b2lkIFFRdWlja1Njcm9sbEJhckF0dGFjaGVkUHJpdmF0ZTo6aW5pdFZlcnRpY2Fs KCkKKyAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQgPT0gZmxpY2thYmxlLT5wYXJlbnRJdGVtKCkp CisgICAgICAgICB2ZXJ0aWNhbC0+c3RhY2tBZnRlcihmbGlja2FibGUpOworIAorKyAgICBpZiAo YXV0byBjb250cm9sID0gcW9iamVjdF9jYXN0PFFRdWlja0NvbnRyb2wqPihxX3B0ci0+cGFyZW50 KCkpKQorKyAgICAgICAgUVF1aWNrQ29udHJvbFByaXZhdGU6OnVuaGlkZU9sZEl0ZW0oY29udHJv bCwgdmVydGljYWwpOworKworICAgICBsYXlvdXRWZXJ0aWNhbCgpOworICAgICB2ZXJ0aWNhbC0+ c2V0U2l6ZShhcmVhLT5wcm9wZXJ0eSgiaGVpZ2h0UmF0aW8iKS50b1JlYWwoKSk7CisgICAgIHZl cnRpY2FsLT5zZXRQb3NpdGlvbihhcmVhLT5wcm9wZXJ0eSgieVBvc2l0aW9uIikudG9SZWFsKCkp OworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRh L3RzdF9zY3JvbGx2aWV3LnFtbCBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9s cy9kYXRhL3RzdF9zY3JvbGx2aWV3LnFtbAoraW5kZXggMGU4YjA4MzUyLi5jZDQ5MzExODQgMTAw NjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rf c2Nyb2xsdmlldy5xbWwKKysrKyBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9s cy9kYXRhL3RzdF9zY3JvbGx2aWV3LnFtbAorQEAgLTU3Niw0ICs1NzYsNTEgQEAgVGVzdENhc2Ug eworICAgICAgICAgdmVyaWZ5KG5ld0hvcml6b250YWxTY3JvbGxCYXIudmlzaWJsZSkKKyAgICAg ICAgIHZlcmlmeSghb2xkSG9yaXpvbnRhbFNjcm9sbEJhci52aXNpYmxlKQorICAgICB9CisrCisr ICAgIENvbXBvbmVudCB7CisrICAgICAgICBpZDogYmluZGluZ1RvQ29udGVudEl0ZW1BbmRTdGFu ZGFsb25lRmxpY2thYmxlCisrCisrICAgICAgICBJdGVtIHsKKysgICAgICAgICAgICB3aWR0aDog MjAwCisrICAgICAgICAgICAgaGVpZ2h0OiAyMDAKKysKKysgICAgICAgICAgICBwcm9wZXJ0eSBh bGlhcyBzY3JvbGxWaWV3OiBzY3JvbGxWaWV3CisrCisrICAgICAgICAgICAgU2Nyb2xsVmlldyB7 CisrICAgICAgICAgICAgICAgIGlkOiBzY3JvbGxWaWV3CisrICAgICAgICAgICAgICAgIGFuY2hv cnMuZmlsbDogcGFyZW50CisrICAgICAgICAgICAgICAgIGNvbnRlbnRJdGVtOiBsaXN0Vmlldwor KworKyAgICAgICAgICAgICAgICBwcm9wZXJ0eSBJdGVtIHNvbWVCaW5kaW5nOiBjb250ZW50SXRl bQorKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBMaXN0VmlldyB7CisrICAgICAgICAgICAg ICAgIGlkOiBsaXN0VmlldworKyAgICAgICAgICAgICAgICBtb2RlbDogMTAKKysgICAgICAgICAg ICAgICAgZGVsZWdhdGU6IEl0ZW1EZWxlZ2F0ZSB7CisrICAgICAgICAgICAgICAgICAgICB0ZXh0 OiBtb2RlbERhdGEKKysgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBsaXN0Vmlldy53aWR0aAor KyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICB9Cisr CisrICAgIC8vIFRlc3RzIHRoYXQgc2Nyb2xsIGJhcnMgc2hvdyB1cCBmb3IgYSBTY3JvbGxWaWV3 IHdoZXJlCisrICAgIC8vIC0gaXRzIGNvbnRlbnRJdGVtIGlzIGRlY2xhcmVkIGFzIGEgc3RhbmRh bG9uZSwgc2VwYXJhdGUgaXRlbQorKyAgICAvLyAtIHRoZXJlIGlzIGEgYmluZGluZyB0byBjb250 ZW50SXRlbSAod2hpY2ggY2F1c2VzIGEgZGVmYXVsdCBGbGlja2FibGUgdG8gYmUgY3JlYXRlZCkK KysgICAgZnVuY3Rpb24gdGVzdF9iaW5kaW5nVG9Db250ZW50SXRlbUFuZFN0YW5kYWxvbmVGbGlj a2FibGUoKSB7CisrICAgICAgICBsZXQgcm9vdCA9IGNyZWF0ZVRlbXBvcmFyeU9iamVjdChiaW5k aW5nVG9Db250ZW50SXRlbUFuZFN0YW5kYWxvbmVGbGlja2FibGUsIHRlc3RDYXNlKQorKyAgICAg ICAgdmVyaWZ5KHJvb3QpCisrCisrICAgICAgICBsZXQgY29udHJvbCA9IHJvb3Quc2Nyb2xsVmll dworKyAgICAgICAgbGV0IHZlcnRpY2FsU2Nyb2xsQmFyID0gY29udHJvbC5TY3JvbGxCYXIudmVy dGljYWwKKysgICAgICAgIGxldCBob3Jpem9udGFsU2Nyb2xsQmFyID0gY29udHJvbC5TY3JvbGxC YXIuaG9yaXpvbnRhbAorKyAgICAgICAgY29tcGFyZSh2ZXJ0aWNhbFNjcm9sbEJhci5wYXJlbnQs IGNvbnRyb2wpCisrICAgICAgICBjb21wYXJlKGhvcml6b250YWxTY3JvbGxCYXIucGFyZW50LCBj b250cm9sKQorKyAgICAgICAgdmVyaWZ5KHZlcnRpY2FsU2Nyb2xsQmFyLnZpc2libGUpCisrICAg ICAgICB2ZXJpZnkoaG9yaXpvbnRhbFNjcm9sbEJhci52aXNpYmxlKQorKworKyAgICAgICAgbW91 c2VEcmFnKHZlcnRpY2FsU2Nyb2xsQmFyLCB2ZXJ0aWNhbFNjcm9sbEJhci53aWR0aCAvIDIsIHZl cnRpY2FsU2Nyb2xsQmFyLmhlaWdodCAvIDIsIDAsIDUwKQorKyAgICAgICAgdmVyaWZ5KHZlcnRp Y2FsU2Nyb2xsQmFyLmFjdGl2ZSkKKysgICAgICAgIHZlcmlmeShob3Jpem9udGFsU2Nyb2xsQmFy LmFjdGl2ZSkKKysgICAgfQorIH0KK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3Rlc3Rz L2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc3dpdGNoLnFtbCBiL3F0cXVpY2tjb250cm9sczIvdGVz dHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zd2l0Y2gucW1sCitpbmRleCBiM2ZhYjQxY2EuLjEw YjZiYWEwMiAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9s cy9kYXRhL3RzdF9zd2l0Y2gucW1sCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8v Y29udHJvbHMvZGF0YS90c3Rfc3dpdGNoLnFtbAorQEAgLTYwOCw0ICs2MDgsMjcgQEAgVGVzdENh c2UgeworICAgICAgICAgbW91c2VDbGljayhjb250cm9sLmluZGljYXRvcikKKyAgICAgICAgIHZl cmlmeShjb250cm9sLmFjdGl2ZUZvY3VzKQorICAgICB9CisrCisrICAgIENvbXBvbmVudCB7Cisr ICAgICAgICBpZDogZGVsZXRpb25PcmRlcjEKKysgICAgICAgIEl0ZW0geworKyAgICAgICAgICAg IEltYWdlIHsgaWQ6IGlubmVySW1hZ2UgfQorKyAgICAgICAgICAgIFN3aXRjaCB7IGluZGljYXRv cjogaW5uZXJJbWFnZSB9CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgQ29tcG9uZW50IHsK KysgICAgICAgIGlkOiBkZWxldGlvbk9yZGVyMgorKyAgICAgICAgSXRlbSB7CisrICAgICAgICAg ICAgU3dpdGNoIHsgaW5kaWNhdG9yOiBpbm5lckltYWdlIH0KKysgICAgICAgICAgICBJbWFnZSB7 IGlkOiBpbm5lckltYWdlIH0KKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBmdW5jdGlvbiB0 ZXN0X2RlbGV0aW9uT3JkZXIoKSB7CisrICAgICAgICB2YXIgY29udHJvbDEgPSBjcmVhdGVUZW1w b3JhcnlPYmplY3QoZGVsZXRpb25PcmRlcjEsIHRlc3RDYXNlKQorKyAgICAgICAgdmVyaWZ5KGNv bnRyb2wxKQorKyAgICAgICAgdmFyIGNvbnRyb2wyID0gY3JlYXRlVGVtcG9yYXJ5T2JqZWN0KGRl bGV0aW9uT3JkZXIyLCB0ZXN0Q2FzZSkKKysgICAgICAgIHZlcmlmeShjb250cm9sMikKKysgICAg fQorIH0KK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9w dXAvZGF0YS9yZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbi5xbWwgYi9xdHF1aWNrY29udHJvbHMy L3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvZGF0YS9yZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbi5x bWwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAuLjllNDU5OGI5ZgorLS0t IC9kZXYvbnVsbAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVw L2RhdGEvcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1sCitAQCAtMCwwICsxLDc4IEBACisr LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQg Q29tcGFueSBMdGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLwor KyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRlc3Qgc3VpdGUgb2YgdGhlIFF0IFRv b2xraXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpCU0QkCisrKiogQ29tbWVyY2lhbCBM aWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBs aWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29t bWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJl IG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5l ZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21w YW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8v d3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24g dXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysq KgorKyoqIEJTRCBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgeW91IG1heSB1c2Ug dGhpcyBmaWxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQlNEIGxpY2Vuc2UKKysqKiBhcyBmb2xs b3dzOgorKyoqCisrKiogIlJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyoqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKysqKiBtZXQ6Cisr KiogICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv dmUgY29weXJpZ2h0CisrKiogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysqKiAgICogUmVkaXN0cmlidXRpb25zIGluIGJp bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysqKiAgICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy IGluCisrKiogICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv dmlkZWQgd2l0aCB0aGUKKysqKiAgICAgZGlzdHJpYnV0aW9uLgorKyoqICAgKiBOZWl0aGVyIHRo ZSBuYW1lIG9mIFRoZSBRdCBDb21wYW55IEx0ZCBub3IgdGhlIG5hbWVzIG9mIGl0cworKyoqICAg ICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz IGRlcml2ZWQKKysqKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKyoqCisrKioKKysqKiBUSElTIFNPRlRXQVJFIElTIFBS T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisrKiogIkFT IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV VCBOT1QKKysqKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKysqKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKyoqIE9XTkVSIE9SIENP TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM LAorKyoqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM VURJTkcsIEJVVCBOT1QKKysqKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKysqKiBEQVRBLCBPUiBQUk9GSVRTOyBP UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKysqKiBU SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ LCBPUiBUT1JUCisrKiogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisrKiogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4iCisrKioKKysqKiAk UVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworK2ltcG9ydCBR dFF1aWNrIDIuMTUKKytpbXBvcnQgUXRRdWljay5Db250cm9scyAyLjE1CisrCisrQXBwbGljYXRp b25XaW5kb3cgeworKyAgICBpZDogd2luZG93CisrICAgIHdpZHRoOiA0MDAKKysgICAgaGVpZ2h0 OiA0MDAKKysgICAgdGl0bGU6ICJyZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbiIKKysKKysgICAg cHJvcGVydHkgYWxpYXMgcG9wdXA6IHBvcHVwCisrICAgIHByb3BlcnR5IGFsaWFzIG1vZGFsUG9w dXA6IG1vZGFsUG9wdXAKKysKKysgICAgUG9wdXAgeworKyAgICAgICAgaWQ6IHBvcHVwCisrICAg ICAgICB5OiBwYXJlbnQuaGVpZ2h0IC0gaGVpZ2h0CisrICAgICAgICB3aWR0aDogNTAKKysgICAg ICAgIGhlaWdodDogNTAKKysgICAgfQorKworKyAgICBQb3B1cCB7CisrICAgICAgICBpZDogbW9k YWxQb3B1cAorKyAgICAgICAgbW9kYWw6IHRydWUKKysgICAgICAgIHk6IHBhcmVudC5oZWlnaHQg LSBoZWlnaHQKKysgICAgICAgIHdpZHRoOiA1MAorKyAgICAgICAgaGVpZ2h0OiA1MAorKyAgICAg ICAgZXhpdDogIFRyYW5zaXRpb24geyBQYXVzZUFuaW1hdGlvbiB7IGR1cmF0aW9uOiAxMDAgfSB9 CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3Fx dWlja3BvcHVwL3RzdF9xcXVpY2twb3B1cC5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1 dG8vcXF1aWNrcG9wdXAvdHN0X3FxdWlja3BvcHVwLmNwcAoraW5kZXggNTQ5NTJkMTI4Li4zZDUw ZTJkZDQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9w dXAvdHN0X3FxdWlja3BvcHVwLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRv L3FxdWlja3BvcHVwL3RzdF9xcXVpY2twb3B1cC5jcHAKK0BAIC0xMDAsNiArMTAwLDcgQEAgcHJp dmF0ZSBzbG90czoKKyAgICAgdm9pZCBpbnZpc2libGVUb29sVGlwT3BlbigpOworICAgICB2b2lk IGNlbnRlckluT3ZlcmxheVdpdGhpblN0YWNrVmlld0l0ZW0oKTsKKyAgICAgdm9pZCBkZXN0cm95 RHVyaW5nRXhpdFRyYW5zaXRpb24oKTsKKysgICAgdm9pZCByZWxlYXNlQWZ0ZXJFeGl0VHJhbnNp dGlvbigpOworIH07CisgCisgdm9pZCB0c3RfUVF1aWNrUG9wdXA6OmluaXRUZXN0Q2FzZSgpCitA QCAtMTU3NSw2ICsxNTc2LDM0IEBAIHZvaWQgdHN0X1FRdWlja1BvcHVwOjpkZXN0cm95RHVyaW5n RXhpdFRyYW5zaXRpb24oKQorICAgICBRVkVSSUZZKCFidXR0b24tPmlzRG93bigpKTsKKyB9Cisg Cisrdm9pZCB0c3RfUVF1aWNrUG9wdXA6OnJlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uKCkKKyt7 CisrICAgIFFRdWlja0FwcGxpY2F0aW9uSGVscGVyIGhlbHBlcih0aGlzLCAicmVsZWFzZUFmdGVy RXhpdFRyYW5zaXRpb24ucW1sIik7CisrICAgIFFWRVJJRlkyKGhlbHBlci5yZWFkeSwgaGVscGVy LmZhaWx1cmVNZXNzYWdlKCkpOworKworKyAgICBRUXVpY2tXaW5kb3cgKndpbmRvdyA9IGhlbHBl ci53aW5kb3c7CisrICAgIHdpbmRvdy0+c2hvdygpOworKyAgICBRVkVSSUZZKFFUZXN0OjpxV2Fp dEZvcldpbmRvd0FjdGl2ZSh3aW5kb3cpKTsKKysKKysgICAgUVF1aWNrT3ZlcmxheSAqb3Zlcmxh eSA9IFFRdWlja092ZXJsYXk6Om92ZXJsYXkod2luZG93KTsKKysgICAgUVF1aWNrUG9wdXAgKm1v ZGFsUG9wdXAgPSB3aW5kb3ctPnByb3BlcnR5KCJtb2RhbFBvcHVwIikudmFsdWU8UVF1aWNrUG9w dXAgKj4oKTsKKysgICAgUVF1aWNrUG9wdXAgKnBvcHVwID0gd2luZG93LT5wcm9wZXJ0eSgicG9w dXAiKS52YWx1ZTxRUXVpY2tQb3B1cCAqPigpOworKworKyAgICBtb2RhbFBvcHVwLT5vcGVuKCk7 CisrICAgIFFUUllfVkVSSUZZKG1vZGFsUG9wdXAtPmlzT3BlbmVkKCkpOworKworKyAgICBRVGVz dDo6bW91c2VQcmVzcyh3aW5kb3csIFF0OjpMZWZ0QnV0dG9uLCBRdDo6Tm9Nb2RpZmllciwgUVBv aW50KDEsIDEpKTsKKysgICAgLy8gd2FpdCB1bnRpbCB0aGUgdHJhbnNpdGlvbiBpcyBmaW5pc2hl ZCBhbmQgdGhlIG92ZXJsYXkgaGlkZXMgaXRzZWxmCisrICAgIFFUUllfVkVSSUZZKCFvdmVybGF5 LT5pc1Zpc2libGUoKSk7CisrICAgIFFUZXN0Ojptb3VzZVJlbGVhc2Uod2luZG93LCBRdDo6TGVm dEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIsIFFQb2ludCgxLCAxKSk7CisrCisrICAgIHBvcHVwLT5v cGVuKCk7CisrICAgIFFUUllfVkVSSUZZKHBvcHVwLT5pc09wZW5lZCgpKTsKKysgICAgUVRlc3Q6 Om1vdXNlQ2xpY2sod2luZG93LCBRdDo6TGVmdEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIsIFFQb2lu dCgxLCAxKSk7CisrICAgIFFUUllfVkVSSUZZKCFwb3B1cC0+aXNPcGVuZWQoKSk7CisrfQorKwor KworIFFURVNUX1FVSUNLQ09OVFJPTFNfTUFJTih0c3RfUVF1aWNrUG9wdXApCisgCisgI2luY2x1 ZGUgInRzdF9xcXVpY2twb3B1cC5tb2MiCitTdWJtb2R1bGUgcXRzY3JpcHQgNWJlOTVmOTYuLi40 ZDhlNGJkMiAoY29tbWl0cyBub3QgcHJlc2VudCkKK1N1Ym1vZHVsZSBxdHNwZWVjaCAxN2ZjOWZk ZS4uMjU1ODQ1ZTI6CitkaWZmIC0tZ2l0IGEvcXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRzL3NwZWVj aGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNwcCBiL3F0c3BlZWNoL3NyYy9wbHVn aW5zL3R0cy9zcGVlY2hkaXNwYXRjaGVyL3F0ZXh0dG9zcGVlY2hfc3BlZWNoZC5jcHAKK2luZGV4 IDZlYjc0YjguLmJjYzdkZDEgMTAwNjQ0CistLS0gYS9xdHNwZWVjaC9zcmMvcGx1Z2lucy90dHMv c3BlZWNoZGlzcGF0Y2hlci9xdGV4dHRvc3BlZWNoX3NwZWVjaGQuY3BwCisrKysgYi9xdHNwZWVj aC9zcmMvcGx1Z2lucy90dHMvc3BlZWNoZGlzcGF0Y2hlci9xdGV4dHRvc3BlZWNoX3NwZWVjaGQu Y3BwCitAQCAtMzU3LDcgKzM1Nyw5IEBAIFFWZWN0b3I8UUxvY2FsZT4gUVRleHRUb1NwZWVjaEVu Z2luZVNwZWVjaGQ6OmF2YWlsYWJsZUxvY2FsZXMoKSBjb25zdAorIAorIFFWZWN0b3I8UVZvaWNl PiBRVGV4dFRvU3BlZWNoRW5naW5lU3BlZWNoZDo6YXZhaWxhYmxlVm9pY2VzKCkgY29uc3QKKyB7 CistICAgIHJldHVybiBtX3ZvaWNlcy52YWx1ZXMobV9jdXJyZW50TG9jYWxlLm5hbWUoKSkudG9W ZWN0b3IoKTsKKysgICAgUUxpc3Q8UVZvaWNlPiByZXN1bHRMaXN0ID0gbV92b2ljZXMudmFsdWVz KG1fY3VycmVudExvY2FsZS5uYW1lKCkpOworKyAgICBzdGQ6OnJldmVyc2UocmVzdWx0TGlzdC5i ZWdpbigpLCByZXN1bHRMaXN0LmVuZCgpKTsKKysgICAgcmV0dXJuIHJlc3VsdExpc3QudG9WZWN0 b3IoKTsKKyB9CisgCisgLy8gV2UgaGF2ZSBubyB3YXkgb2Yga25vd2luZyBvdXIgb3duIGNsaWVu dF9pZCBzaW5jZSBzcGVlY2gtZGlzcGF0Y2hlciBzZWVtcyB0byBiZSBpbmNvbXBsZXRlCitTdWJt b2R1bGUgcXRzdmcgMGMwNTc4MGUuLmE3YTBmMjQ5OgorZGlmZiAtLWdpdCBhL3F0c3ZnL3NyYy9w bHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxlci5jcHAgYi9xdHN2Zy9zcmMvcGx1 Z2lucy9pbWFnZWZvcm1hdHMvc3ZnL3Fzdmdpb2hhbmRsZXIuY3BwCitpbmRleCA1NjFlNzdlLi4x MmUwNTc0IDEwMDY0NAorLS0tIGEvcXRzdmcvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3N2Zy9x c3ZnaW9oYW5kbGVyLmNwcAorKysrIGIvcXRzdmcvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3N2 Zy9xc3ZnaW9oYW5kbGVyLmNwcAorQEAgLTE5MSw2ICsxOTEsOCBAQCBib29sIFFTdmdJT0hhbmRs ZXI6OnJlYWQoUUltYWdlICppbWFnZSkKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAg ICAgICBpZiAoIWZpbmFsU2l6ZS5pc0VtcHR5KCkpIHsKKysgICAgICAgICAgICBpZiAocU1heChm aW5hbFNpemUud2lkdGgoKSwgZmluYWxTaXplLmhlaWdodCgpKSA+IDB4ZmZmZikKKysgICAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBc3N1bWUgY29ycnVwdGVkIGZpbGUKKyAgICAgICAg ICAgICBpbWFnZS0+ZmlsbChkLT5iYWNrQ29sb3IucmdiYSgpKTsKKyAgICAgICAgICAgICBRUGFp bnRlciBwKGltYWdlKTsKKyAgICAgICAgICAgICBkLT5yLnJlbmRlcigmcCwgYm91bmRzKTsKK2Rp ZmYgLS1naXQgYS9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVyLmNwcCBiL3F0c3ZnL3NyYy9zdmcv cXN2Z2hhbmRsZXIuY3BwCitpbmRleCBhNWY4NzdmLi44ZGRhNTYzIDEwMDY0NAorLS0tIGEvcXRz dmcvc3JjL3N2Zy9xc3ZnaGFuZGxlci5jcHAKKysrKyBiL3F0c3ZnL3NyYy9zdmcvcXN2Z2hhbmRs ZXIuY3BwCitAQCAtMTM5Myw5ICsxMzkzLDEwIEBAIHN0YXRpYyB2b2lkIHBhcnNlRm9udChRU3Zn Tm9kZSAqbm9kZSwKKyAgICAgICAgIGNhc2UgRm9udFNpemVOb25lOgorICAgICAgICAgICAgIGJy ZWFrOworICAgICAgICAgY2FzZSBGb250U2l6ZVZhbHVlOiB7CistICAgICAgICAgICAgUVN2Z0hh bmRsZXI6Okxlbmd0aFR5cGUgZHVtbXk7IC8vIHNob3VsZCBhbHdheXMgYmUgcGl4ZWwgc2l6ZQor LSAgICAgICAgICAgIGZvbnRTdHlsZS0+c2V0U2l6ZShxTWluKHBhcnNlTGVuZ3RoKGF0dHJpYnV0 ZXMuZm9udFNpemUsIGR1bW15LCBoYW5kbGVyKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBxcmVhbCgweGZmZmYpKSk7CisrICAgICAgICAgICAgUVN2Z0hhbmRsZXI6Okxl bmd0aFR5cGUgdHlwZTsKKysgICAgICAgICAgICBxcmVhbCBmcyA9IHBhcnNlTGVuZ3RoKGF0dHJp YnV0ZXMuZm9udFNpemUsIHR5cGUsIGhhbmRsZXIpOworKyAgICAgICAgICAgIGZzID0gY29udmVy dFRvUGl4ZWxzKGZzLCB0cnVlLCB0eXBlKTsKKysgICAgICAgICAgICBmb250U3R5bGUtPnNldFNp emUocU1pbihmcywgcXJlYWwoMHhmZmZmKSkpOworICAgICAgICAgfQorICAgICAgICAgICAgIGJy ZWFrOworICAgICAgICAgZGVmYXVsdDoKK0BAIC0yNTEzLDYgKzI1MTQsOCBAQCBzdGF0aWMgYm9v bCBwYXJzZUFuaW1hdGVUcmFuc2Zvcm1Ob2RlKFFTdmdOb2RlICpwYXJlbnQsCisgICAgICAgICAg ICAgKytzOworICAgICAgICAgfQorICAgICB9CisrICAgIGlmICh2YWxzLmNvdW50KCkgJSAzICE9 IDApCisrICAgICAgICByZXR1cm4gZmFsc2U7CisgCisgICAgIGJvb2wgb2sgPSB0cnVlOworICAg ICBpbnQgYmVnaW4gPSBwYXJzZUNsb2NrVmFsdWUoYmVnaW5TdHIsICZvayk7CitAQCAtMjU3Niw2 ICsyNTc5LDggQEAgc3RhdGljIFFTdmdOb2RlICpjcmVhdGVDaXJjbGVOb2RlKFFTdmdOb2RlICpw YXJlbnQsCisgICAgIHFyZWFsIG5jeCA9IHRvRG91YmxlKGN4KTsKKyAgICAgcXJlYWwgbmN5ID0g dG9Eb3VibGUoY3kpOworICAgICBxcmVhbCBuciAgPSB0b0RvdWJsZShyKTsKKysgICAgaWYgKG5y IDwgMC4wKQorKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgCisgICAgIFFSZWN0RiByZWN0KG5j eC1uciwgbmN5LW5yLCBucioyLCBucioyKTsKKyAgICAgUVN2Z05vZGUgKmNpcmNsZSA9IG5ldyBR U3ZnQ2lyY2xlKHBhcmVudCwgcmVjdCk7CitAQCAtMzA0NiwxNSArMzA1MSwxNiBAQCBzdGF0aWMg UVN2Z1N0eWxlUHJvcGVydHkgKmNyZWF0ZVJhZGlhbEdyYWRpZW50Tm9kZShRU3ZnTm9kZSAqbm9k ZSwKKyAKKyAgICAgcXJlYWwgbmN4ID0gMC41OworICAgICBxcmVhbCBuY3kgPSAwLjU7CistICAg IHFyZWFsIG5yICA9IDAuNTsKKyAgICAgaWYgKCFjeC5pc0VtcHR5KCkpCisgICAgICAgICBuY3gg PSB0b0RvdWJsZShjeCk7CisgICAgIGlmICghY3kuaXNFbXB0eSgpKQorICAgICAgICAgbmN5ID0g dG9Eb3VibGUoY3kpOworKworKyAgICBxcmVhbCBuciA9IDAuMDsKKyAgICAgaWYgKCFyLmlzRW1w dHkoKSkKKyAgICAgICAgIG5yID0gdG9Eb3VibGUocik7CistICAgIGlmIChuciA8IDAuNSkKKy0g ICAgICAgIG5yID0gMC41OworKyAgICBpZiAobnIgPD0gMC4wKQorKyAgICAgICAgcmV0dXJuIG51 bGxwdHI7CisgCisgICAgIHFyZWFsIG5meCA9IG5jeDsKKyAgICAgaWYgKCFmeC5pc0VtcHR5KCkp CitAQCAtMzM1MCw3ICszMzU2LDkgQEAgc3RhdGljIFFTdmdOb2RlICpjcmVhdGVUZXh0Tm9kZShR U3ZnTm9kZSAqcGFyZW50LAorICAgICAvLyMjIyBlZGl0YWJsZSBhbmQgcm90YXRlIG5vdCBoYW5k bGVkCisgICAgIFFTdmdIYW5kbGVyOjpMZW5ndGhUeXBlIHR5cGU7CisgICAgIHFyZWFsIG54ID0g cGFyc2VMZW5ndGgoeCwgdHlwZSwgaGFuZGxlcik7CisrICAgIG54ID0gY29udmVydFRvUGl4ZWxz KG54LCB0cnVlLCB0eXBlKTsKKyAgICAgcXJlYWwgbnkgPSBwYXJzZUxlbmd0aCh5LCB0eXBlLCBo YW5kbGVyKTsKKysgICAgbnkgPSBjb252ZXJ0VG9QaXhlbHMobnksIHRydWUsIHR5cGUpOworIAor ICAgICBRU3ZnTm9kZSAqdGV4dCA9IG5ldyBRU3ZnVGV4dChwYXJlbnQsIFFQb2ludEYobngsIG55 KSk7CisgICAgIHJldHVybiB0ZXh0OworQEAgLTM2OTEsOSArMzY5OSw3IEBAIHZvaWQgUVN2Z0hh bmRsZXI6OnBhcnNlKCkKKyAgICAgICAgIGNhc2UgUVhtbFN0cmVhbVJlYWRlcjo6RW5kRWxlbWVu dDoKKyAgICAgICAgICAgICBlbmRFbGVtZW50KHhtbC0+bmFtZSgpKTsKKyAgICAgICAgICAgICAr K3JlbWFpbmluZ1VuZmluaXNoZWRFbGVtZW50czsKKy0gICAgICAgICAgICAvLyBpZiB3ZSBhcmUg dXNpbmcgc29tZWJvZHkgZWxzZSdzIHF4bWxzdHJlYW1yZWFkZXIKKy0gICAgICAgICAgICAvLyB3 ZSBzaG91bGQgbm90IHJlYWQgdW50aWwgdGhlIGVuZCBvZiB0aGUgc3RyZWFtCistICAgICAgICAg ICAgZG9uZSA9ICFtX293bnNSZWFkZXIgJiYgKHhtbC0+bmFtZSgpID09IFFMYXRpbjFTdHJpbmco InN2ZyIpKTsKKysgICAgICAgICAgICBkb25lID0gKHhtbC0+bmFtZSgpID09IFFMYXRpbjFTdHJp bmcoInN2ZyIpKTsKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGNhc2UgUVhtbFN0cmVh bVJlYWRlcjo6Q2hhcmFjdGVyczoKKyAgICAgICAgICAgICBjaGFyYWN0ZXJzKHhtbC0+dGV4dCgp KTsKK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvc3ZnL3FzdmdzdHJ1Y3R1cmUuY3BwIGIvcXRzdmcv c3JjL3N2Zy9xc3Znc3RydWN0dXJlLmNwcAoraW5kZXggYjg5NjA4Yi4uODljOWU0ZSAxMDA2NDQK Ky0tLSBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5jcHAKKysrKyBiL3F0c3ZnL3NyYy9z dmcvcXN2Z3N0cnVjdHVyZS5jcHAKK0BAIC0yNTUsOSArMjU1LDEzIEBAIGlubGluZSBzdGF0aWMg Ym9vbCBpc1N1cHBvcnRlZFN2Z0ZlYXR1cmUoY29uc3QgUVN0cmluZyAmc3RyKQorICAgICB9Owor IAorICAgICBpZiAoc3RyLmxlbmd0aCgpIDw9IE1BWF9XT1JEX0xFTkdUSCAmJiBzdHIubGVuZ3Ro KCkgPj0gTUlOX1dPUkRfTEVOR1RIKSB7CisrICAgICAgICBjb25zdCBjaGFyMTZfdCB1bmljb2Rl NDQgPSBzdHIuYXQoNDQpLnVuaWNvZGUoKTsKKysgICAgICAgIGNvbnN0IGNoYXIxNl90IHVuaWNv ZGU0NSA9IHN0ci5hdCg0NSkudW5pY29kZSgpOworKyAgICAgICAgaWYgKHVuaWNvZGU0NCA+PSBz aXplb2YoYXNzb192YWx1ZXMpIHx8IHVuaWNvZGU0NSA+PSBzaXplb2YoYXNzb192YWx1ZXMpKQor KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIGNvbnN0IGludCBrZXkgPSBzdHIu bGVuZ3RoKCkKKy0gICAgICAgICAgICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3N0ci5hdCg0 NSkudW5pY29kZSgpXQorLSAgICAgICAgICAgICAgICAgICAgICAgICsgYXNzb192YWx1ZXNbc3Ry LmF0KDQ0KS51bmljb2RlKCldOworKyAgICAgICAgICAgICAgICAgICAgICAgICsgYXNzb192YWx1 ZXNbdW5pY29kZTQ1XQorKyAgICAgICAgICAgICAgICAgICAgICAgICsgYXNzb192YWx1ZXNbdW5p Y29kZTQ0XTsKKyAgICAgICAgIGlmIChrZXkgPD0gTUFYX0hBU0hfVkFMVUUgJiYga2V5ID49IDAp CisgICAgICAgICAgICAgcmV0dXJuIHN0ciA9PSBRTGF0aW4xU3RyaW5nKHdvcmRsaXN0W2tleV0p OworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3JjL3N2Zy9xc3ZndGlueWRvY3VtZW50LmNw cCBiL3F0c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAKK2luZGV4IDYzZDA3OTcuLjE5 ZTcxNTQgMTAwNjQ0CistLS0gYS9xdHN2Zy9zcmMvc3ZnL3Fzdmd0aW55ZG9jdW1lbnQuY3BwCisr KysgYi9xdHN2Zy9zcmMvc3ZnL3Fzdmd0aW55ZG9jdW1lbnQuY3BwCitAQCAtNDMzLDggKzQzMywx NiBAQCB2b2lkIFFTdmdUaW55RG9jdW1lbnQ6OmRyYXcoUVBhaW50ZXIgKnAsIFFTdmdFeHRyYVN0 YXRlcyAmKQorICAgICBkcmF3KHApOworIH0KKyAKKytzdGF0aWMgYm9vbCBpc1ZhbGlkTWF0cml4 KGNvbnN0IFFUcmFuc2Zvcm0gJnRyYW5zZm9ybSkKKyt7CisrICAgIHFyZWFsIGRldGVybWluYW50 ID0gdHJhbnNmb3JtLmRldGVybWluYW50KCk7CisrICAgIHJldHVybiBxSXNGaW5pdGUoZGV0ZXJt aW5hbnQpOworK30KKysKKyB2b2lkIFFTdmdUaW55RG9jdW1lbnQ6Om1hcFNvdXJjZVRvVGFyZ2V0 KFFQYWludGVyICpwLCBjb25zdCBRUmVjdEYgJnRhcmdldFJlY3QsIGNvbnN0IFFSZWN0RiAmc291 cmNlUmVjdCkKKyB7CisrICAgIFFUcmFuc2Zvcm0gb2xkVHJhbnNmb3JtID0gcC0+d29ybGRUcmFu c2Zvcm0oKTsKKysKKyAgICAgUVJlY3RGIHRhcmdldCA9IHRhcmdldFJlY3Q7CisgICAgIGlmICh0 YXJnZXQuaXNFbXB0eSgpKSB7CisgICAgICAgICBRUGFpbnREZXZpY2UgKmRldiA9IHAtPmRldmlj ZSgpOworQEAgLTQ4Nyw2ICs0OTUsOSBAQCB2b2lkIFFTdmdUaW55RG9jdW1lbnQ6Om1hcFNvdXJj ZVRvVGFyZ2V0KFFQYWludGVyICpwLCBjb25zdCBRUmVjdEYgJnRhcmdldFJlY3QsCisgICAgICAg ICB9CisgI2VuZGlmCisgICAgIH0KKysKKysgICAgaWYgKCFpc1ZhbGlkTWF0cml4KHAtPndvcmxk VHJhbnNmb3JtKCkpKQorKyAgICAgICAgcC0+c2V0V29ybGRUcmFuc2Zvcm0ob2xkVHJhbnNmb3Jt KTsKKyB9CisgCisgUVJlY3RGIFFTdmdUaW55RG9jdW1lbnQ6OmJvdW5kc09uRWxlbWVudChjb25z dCBRU3RyaW5nICZpZCkgY29uc3QKK2RpZmYgLS1naXQgYS9xdHN2Zy90ZXN0cy9hdXRvL3Fzdmdy ZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcCBiL3F0c3ZnL3Rlc3RzL2F1dG8vcXN2Z3JlbmRl cmVyL3RzdF9xc3ZncmVuZGVyZXIuY3BwCitpbmRleCAzNmM3NmVjLi5kYjcxZTAyIDEwMDY0NAor LS0tIGEvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0X3FzdmdyZW5kZXJlci5jcHAK KysrKyBiL3F0c3ZnL3Rlc3RzL2F1dG8vcXN2Z3JlbmRlcmVyL3RzdF9xc3ZncmVuZGVyZXIuY3Bw CitAQCAtODYsNiArODYsOCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIG9zc19mdXp6XzIz NzMxKCk7CisgICAgIHZvaWQgb3NzX2Z1enpfMjQxMzEoKTsKKyAgICAgdm9pZCBvc3NfZnV6el8y NDczOCgpOworKyAgICB2b2lkIGlsbGVnYWxBbmltYXRlVHJhbnNmb3JtX2RhdGEoKTsKKysgICAg dm9pZCBpbGxlZ2FsQW5pbWF0ZVRyYW5zZm9ybSgpOworIAorICNpZm5kZWYgUVRfTk9fQ09NUFJF U1MKKyAgICAgdm9pZCB0ZXN0R3pMb2FkaW5nKCk7CitAQCAtMTY0Niw1ICsxNjQ4LDIyIEBAIHZv aWQgdHN0X1FTdmdSZW5kZXJlcjo6b3NzX2Z1enpfMjQ3MzgoKQorICAgICBRU3ZnUmVuZGVyZXIo KS5sb2FkKFFCeXRlQXJyYXkoIjxzdmc+PHBhdGggZD1cImEgMiAxZS0yMTIuLi4uLlwiPiIpKTsK KyB9CisgCisrdm9pZCB0c3RfUVN2Z1JlbmRlcmVyOjppbGxlZ2FsQW5pbWF0ZVRyYW5zZm9ybV9k YXRhKCkKKyt7CisrICAgIFFUZXN0OjphZGRDb2x1bW48UUJ5dGVBcnJheT4oInN2ZyIpOworKwor KyAgICBRVGVzdDo6bmV3Um93KCJjYXNlMSIpIDw8IFFCeXRlQXJyYXkoIjxzdmc+PGFuaW1hdGVU cmFuc2Zvcm0gdHlwZT1cInJvdGF0ZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJcIiB2YWx1ZXM9XCI4 LDAsNSwwXCI+Iik7CisrICAgIFFUZXN0OjpuZXdSb3coImNhc2UyIikgPDwgUUJ5dGVBcnJheSgi PHN2Zz48YW5pbWF0ZVRyYW5zZm9ybSB0eXBlPVwicm90YXRlXCIgYmVnaW49XCIxXCIgZHVyPVwi MlwiIHZhbHVlcz1cIjEsMlwiPiIpOworKyAgICBRVGVzdDo6bmV3Um93KCJjYXNlMyIpIDw8IFFC eXRlQXJyYXkoIjxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1cInJvdGF0ZVwiIGJlZ2luPVwi MVwiIGR1cj1cIjJcIiBmcm9tPVwiLi4gNSAyXCIgdG89XCJmXCI+Iik7CisrICAgIFFUZXN0Ojpu ZXdSb3coImNhc2U0IikgPDwgUUJ5dGVBcnJheSgiPHN2Zz48YW5pbWF0ZVRyYW5zZm9ybSB0eXBl PVwic2NhbGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIyXCIgYnk9XCItLSwuLlwiPiIpOworK30KKysK Kyt2b2lkIHRzdF9RU3ZnUmVuZGVyZXI6OmlsbGVnYWxBbmltYXRlVHJhbnNmb3JtKCkKKyt7Cisr ICAgIFFGRVRDSChRQnl0ZUFycmF5LCBzdmcpOworKyAgICBRU3ZnUmVuZGVyZXIgcmVuZGVyZXI7 CisrICAgIFFWRVJJRlkoIXJlbmRlcmVyLmxvYWQoc3ZnKSk7IC8vIGFsc28gc2hvdWxkbid0IGFz c2VydAorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RU3ZnUmVuZGVyZXIpCisgI2luY2x1ZGUgInRz dF9xc3ZncmVuZGVyZXIubW9jIgorU3VibW9kdWxlIHF0dG9vbHMgNjkxNGY3YzguLjA5MGU1MjZl OgorZGlmZiAtLWdpdCBhL3F0dG9vbHMvc3JjL2Fzc2lzdGFudC9xaGVscGdlbmVyYXRvci9oZWxw Z2VuZXJhdG9yLmNwcCBiL3F0dG9vbHMvc3JjL2Fzc2lzdGFudC9xaGVscGdlbmVyYXRvci9oZWxw Z2VuZXJhdG9yLmNwcAoraW5kZXggZmVhYjFlMmQ1Li5jYmZiODI1MDcgMTAwNjQ0CistLS0gYS9x dHRvb2xzL3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5jcHAKKysr KyBiL3F0dG9vbHMvc3JjL2Fzc2lzdGFudC9xaGVscGdlbmVyYXRvci9oZWxwZ2VuZXJhdG9yLmNw cAorQEAgLTQ0NSw3ICs0NDUsOSBAQCBib29sIEhlbHBHZW5lcmF0b3JQcml2YXRlOjppbnNlcnRG aWxlcyhjb25zdCBRU3RyaW5nTGlzdCAmZmlsZXMsIGNvbnN0IFFTdHJpbmcgJgorICAgICBpZiAo ZmlsdGVyU2V0SWQgPCAwKQorICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICArK2ZpbHRlclNl dElkOworLSAgICBmb3IgKGludCBhdHRJZCA6IHFBc0NvbnN0KGZpbHRlckF0dHMpKSB7CisrICAg IFFMaXN0PGludD4gYXR0VmFsdWVzID0gZmlsdGVyQXR0cy52YWx1ZXMoKTsKKysgICAgc3RkOjpz b3J0KGF0dFZhbHVlcy5iZWdpbigpLCBhdHRWYWx1ZXMuZW5kKCkpOworKyAgICBmb3IgKGludCBh dHRJZCA6IHFBc0NvbnN0KGF0dFZhbHVlcykpIHsKKyAgICAgICAgIG1fcXVlcnktPnByZXBhcmUo UUxhdGluMVN0cmluZygiSU5TRVJUIElOVE8gRmlsZUF0dHJpYnV0ZVNldFRhYmxlICIKKyAgICAg ICAgICAgICAiVkFMVUVTKD8sID8pIikpOworICAgICAgICAgbV9xdWVyeS0+YmluZFZhbHVlKDAs IGZpbHRlclNldElkKTsKK1N1Ym1vZHVsZSBxdHdheWxhbmQgZGZiMDEyOWMuLjI5MDRlMWIzOgor ZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2NvbmZpZ3VyZS5qc29uIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvY29uZmlndXJlLmpzb24KK2luZGV4IDJmNDI0NTgwLi4yOTIyMjM1NyAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2NvbmZpZ3VyZS5qc29uCisrKysgYi9x dHdheWxhbmQvc3JjL2NsaWVudC9jb25maWd1cmUuanNvbgorQEAgLTE0OSw4ICsxNDksNyBAQAor ICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZiIKKyAgICAgICAgICAgICAgICAgXQorICAgICAg ICAgICAgIH0sCistICAgICAgICAgICAgImxpYnMiOiAiLWxkcm0iLAorLSAgICAgICAgICAgICJ1 c2UiOiAiZWdsIgorKyAgICAgICAgICAgICJ1c2UiOiAiZHJtIGVnbCIKKyAgICAgICAgIH0sCisg ICAgICAgICAidnVsa2FuLXNlcnZlci1idWZmZXIiOiB7CisgICAgICAgICAgICAgImxhYmVsIjog IlZ1bGthbiBCdWZmZXIgU2hhcmluZyIsCitAQCAtMTY4LDcgKzE2Nyw4IEBACisgICAgICAgICAg ICAgICAgICAgICAiZXhwb3J0QWxsb2NJbmZvLmhhbmRsZVR5cGVzID0gVktfRVhURVJOQUxfTUVN T1JZX0hBTkRMRV9UWVBFX09QQVFVRV9GRF9CSVRfS0hSOyIsCisgICAgICAgICAgICAgICAgICAg ICAicmV0dXJuIDA7IgorICAgICAgICAgICAgICAgICBdCistICAgICAgICAgICAgfQorKyAgICAg ICAgICAgIH0sCisrICAgICAgICAgICAgInVzZSI6ICJ3YXlsYW5kLWNsaWVudCIKKyAgICAgICAg IH0sCisgICAgICAgICAiZWdsXzFfNS13YXlsYW5kIjogeworICAgICAgICAgICAgICJsYWJlbCI6 ICJFR0wgMS41IHdpdGggV2F5bGFuZCBQbGF0Zm9ybSIsCitAQCAtMTgzLDcgKzE4Myw3IEBACisg ICAgICAgICAgICAgICAgICAgICAiZWdsR2V0UGxhdGZvcm1EaXNwbGF5KEVHTF9QTEFURk9STV9X QVlMQU5EX0VYVCwgKHN0cnVjdCB3bF9kaXNwbGF5ICopKG51bGxwdHIpLCBudWxscHRyKTsiCisg ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICJ1c2UiOiAi ZWdsIgorKyAgICAgICAgICAgICJ1c2UiOiAiZWdsIHdheWxhbmQtY2xpZW50IgorICAgICAgICAg fQorICAgICB9LAorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9x d2F5bGFuZGNsaWVudGV4dGVuc2lvbi5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwv cXdheWxhbmRjbGllbnRleHRlbnNpb24uY3BwCitpbmRleCAxMjViMWUxOS4uZWRjY2ZlNjMgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRl bnNpb24uY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGll bnRleHRlbnNpb24uY3BwCitAQCAtNzQsNyArNzQsMTAgQEAgdm9pZCBRV2F5bGFuZENsaWVudEV4 dGVuc2lvblByaXZhdGU6OmhhbmRsZVJlZ2lzdHJ5R2xvYmFsKHZvaWQgKmRhdGEsIDo6d2xfcmVn aXMKKyB2b2lkIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjphZGRSZWdpc3RyeUxpc3RlbmVyKCkK KyB7CisgICAgIFFfRChRV2F5bGFuZENsaWVudEV4dGVuc2lvbik7CistICAgIGQtPndheWxhbmRJ bnRlZ3JhdGlvbi0+ZGlzcGxheSgpLT5hZGRSZWdpc3RyeUxpc3RlbmVyKCZRV2F5bGFuZENsaWVu dEV4dGVuc2lvblByaXZhdGU6OmhhbmRsZVJlZ2lzdHJ5R2xvYmFsLCB0aGlzKTsKKysgICAgaWYg KCFkLT5yZWdpc3RlcmVkKSB7CisrICAgICAgICBkLT53YXlsYW5kSW50ZWdyYXRpb24tPmRpc3Bs YXkoKS0+YWRkUmVnaXN0cnlMaXN0ZW5lcigmUVdheWxhbmRDbGllbnRFeHRlbnNpb25Qcml2YXRl OjpoYW5kbGVSZWdpc3RyeUdsb2JhbCwgdGhpcyk7CisrICAgICAgICBkLT5yZWdpc3RlcmVkID0g dHJ1ZTsKKysgICAgfQorIH0KKyAKKyBRV2F5bGFuZENsaWVudEV4dGVuc2lvbjo6UVdheWxhbmRD bGllbnRFeHRlbnNpb24oY29uc3QgaW50IHZlcikKK0BAIC04OCw2ICs5MSwxMyBAQCBRV2F5bGFu ZENsaWVudEV4dGVuc2lvbjo6UVdheWxhbmRDbGllbnRFeHRlbnNpb24oY29uc3QgaW50IHZlcikK KyAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCAiYWRkUmVnaXN0cnlMaXN0ZW5l ciIsIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyB9CisgCisrUVdheWxhbmRDbGllbnRFeHRlbnNp b246On5RV2F5bGFuZENsaWVudEV4dGVuc2lvbigpCisreworKyAgICBRX0QoUVdheWxhbmRDbGll bnRFeHRlbnNpb24pOworKyAgICBpZiAoZC0+cmVnaXN0ZXJlZCAmJiAhUUNvcmVBcHBsaWNhdGlv bjo6Y2xvc2luZ0Rvd24oKSkKKysgICAgICAgIGQtPndheWxhbmRJbnRlZ3JhdGlvbi0+ZGlzcGxh eSgpLT5yZW1vdmVMaXN0ZW5lcigmUVdheWxhbmRDbGllbnRFeHRlbnNpb25Qcml2YXRlOjpoYW5k bGVSZWdpc3RyeUdsb2JhbCwgdGhpcyk7CisrfQorKworIFF0V2F5bGFuZENsaWVudDo6UVdheWxh bmRJbnRlZ3JhdGlvbiAqUVdheWxhbmRDbGllbnRFeHRlbnNpb246OmludGVncmF0aW9uKCkgY29u c3QKKyB7CisgICAgIFFfRChjb25zdCBRV2F5bGFuZENsaWVudEV4dGVuc2lvbik7CitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9u LmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24u aAoraW5kZXggOTgyNzJlNTcuLjViZDI4Mzk4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmgKKysrKyBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5oCitAQCAtNjMsNiArNjMs NyBAQCBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZENsaWVudEV4dGVuc2lv biA6IHB1YmxpYyBRT2JqZWN0CisgICAgIFFfUFJPUEVSVFkoYm9vbCBhY3RpdmUgUkVBRCBpc0Fj dGl2ZSBOT1RJRlkgYWN0aXZlQ2hhbmdlZCkKKyBwdWJsaWM6CisgICAgIFFXYXlsYW5kQ2xpZW50 RXh0ZW5zaW9uKGNvbnN0IGludCB2ZXJzaW9uKTsKKysgICAgflFXYXlsYW5kQ2xpZW50RXh0ZW5z aW9uKCk7CisgCisgICAgIFF0V2F5bGFuZENsaWVudDo6UVdheWxhbmRJbnRlZ3JhdGlvbiAqaW50 ZWdyYXRpb24oKSBjb25zdDsKKyAgICAgaW50IHZlcnNpb24oKSBjb25zdDsKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb25fcC5o IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uX3Au aAoraW5kZXggNjljYzQ2YTAuLjkwOTFlZmJlIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uX3AuaAorKysrIGIvcXR3YXlsYW5k L3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uX3AuaAorQEAgLTY4LDYg KzY4LDcgQEAgcHVibGljOgorICAgICBRdFdheWxhbmRDbGllbnQ6OlFXYXlsYW5kSW50ZWdyYXRp b24gKndheWxhbmRJbnRlZ3JhdGlvbiA9IG51bGxwdHI7CisgICAgIGludCB2ZXJzaW9uID0gLTE7 CisgICAgIGJvb2wgYWN0aXZlID0gZmFsc2U7CisrICAgIGJvb2wgcmVnaXN0ZXJlZCA9IGZhbHNl OworIH07CisgCisgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdheWxhbmRDbGllbnRF eHRlbnNpb25UZW1wbGF0ZVByaXZhdGUgOiBwdWJsaWMgUVdheWxhbmRDbGllbnRFeHRlbnNpb25Q cml2YXRlCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2 aWNlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZS5jcHAKK2lu ZGV4IDdlMmUzMzA4Li5lM2U2MGVkNSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kZGF0YWRldmljZS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGF0YWRldmljZS5jcHAKK0BAIC03Miw2ICs3Miw4IEBAIFFXYXlsYW5kRGF0YURldmljZTo6 UVdheWxhbmREYXRhRGV2aWNlKFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIgKm1hbmFnZXIsIFFX YXlsCisgCisgUVdheWxhbmREYXRhRGV2aWNlOjp+UVdheWxhbmREYXRhRGV2aWNlKCkKKyB7Cisr ICAgIGlmICh3bF9kYXRhX2RldmljZV9nZXRfdmVyc2lvbihvYmplY3QoKSkgPj0gV0xfREFUQV9E RVZJQ0VfUkVMRUFTRV9TSU5DRV9WRVJTSU9OKQorKyAgICAgICAgcmVsZWFzZSgpOworIH0KKyAK KyBRV2F5bGFuZERhdGFPZmZlciAqUVdheWxhbmREYXRhRGV2aWNlOjpzZWxlY3Rpb25PZmZlcigp IGNvbnN0CitAQCAtMTEwLDcgKzExMiw3IEBAIFFXYXlsYW5kRGF0YU9mZmVyICpRV2F5bGFuZERh dGFEZXZpY2U6OmRyYWdPZmZlcigpIGNvbnN0CisgICAgIHJldHVybiBtX2RyYWdPZmZlci5kYXRh KCk7CisgfQorIAorLWJvb2wgUVdheWxhbmREYXRhRGV2aWNlOjpzdGFydERyYWcoUU1pbWVEYXRh ICptaW1lRGF0YSwgUVdheWxhbmRXaW5kb3cgKmljb24pCisrYm9vbCBRV2F5bGFuZERhdGFEZXZp Y2U6OnN0YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVEYXRhLCBRdDo6RHJvcEFjdGlvbnMgc3VwcG9y dGVkQWN0aW9ucywgUVdheWxhbmRXaW5kb3cgKmljb24pCisgeworICAgICBhdXRvICpzZWF0ID0g bV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKTsKKyAgICAgYXV0byAqb3JpZ2luID0gc2Vh dC0+cG9pbnRlckZvY3VzKCk7CitAQCAtMTIzLDcgKzEyNSwyOCBAQCBib29sIFFXYXlsYW5kRGF0 YURldmljZTo6c3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFFXYXlsYW5kV2luZG93ICpp Y29uKQorICAgICB9CisgCisgICAgIG1fZHJhZ1NvdXJjZS5yZXNldChuZXcgUVdheWxhbmREYXRh U291cmNlKG1fZGlzcGxheS0+ZG5kU2VsZWN0aW9uSGFuZGxlcigpLCBtaW1lRGF0YSkpOworKwor KyAgICBpZiAod2xfZGF0YV9kZXZpY2VfZ2V0X3ZlcnNpb24ob2JqZWN0KCkpID49IDMpCisrICAg ICAgICBtX2RyYWdTb3VyY2UtPnNldF9hY3Rpb25zKGRyb3BBY3Rpb25zVG9XbChzdXBwb3J0ZWRB Y3Rpb25zKSk7CisrCisgICAgIGNvbm5lY3QobV9kcmFnU291cmNlLmRhdGEoKSwgJlFXYXlsYW5k RGF0YVNvdXJjZTo6Y2FuY2VsbGVkLCB0aGlzLCAmUVdheWxhbmREYXRhRGV2aWNlOjpkcmFnU291 cmNlQ2FuY2VsbGVkKTsKKysgICAgY29ubmVjdChtX2RyYWdTb3VyY2UuZGF0YSgpLCAmUVdheWxh bmREYXRhU291cmNlOjpkbmRSZXNwb25zZVVwZGF0ZWQsIHRoaXMsIFt0aGlzXShib29sIGFjY2Vw dGVkLCBRdDo6RHJvcEFjdGlvbiBhY3Rpb24pIHsKKysgICAgICAgICAgICBhdXRvIGRyYWcgPSBz dGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZv cm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpOworKyAgICAgICAgICAgIC8vIGluIG9sZCB2ZXJzaW9u cyBkcm9wIGFjdGlvbiBpcyBub3Qgc2V0LCBzbyB3ZSBndWVzcworKyAgICAgICAgICAgIGlmICh3 bF9kYXRhX3NvdXJjZV9nZXRfdmVyc2lvbihtX2RyYWdTb3VyY2UtPm9iamVjdCgpKSA8IDMpIHsK KysgICAgICAgICAgICAgICAgZHJhZy0+c2V0UmVzcG9uc2UoYWNjZXB0ZWQpOworKyAgICAgICAg ICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlIHJl c3BvbnNlKGFjY2VwdGVkLCBhY3Rpb24pOworKyAgICAgICAgICAgICAgICBkcmFnLT5zZXRSZXNw b25zZShyZXNwb25zZSk7CisrICAgICAgICAgICAgfQorKyAgICB9KTsKKysgICAgY29ubmVjdCht X2RyYWdTb3VyY2UuZGF0YSgpLCAmUVdheWxhbmREYXRhU291cmNlOjpkbmREcm9wcGVkLCB0aGlz LCBbXShib29sIGFjY2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBhY3Rpb24pIHsKKysgICAgICAgIFFQ bGF0Zm9ybURyb3BRdFJlc3BvbnNlIHJlc3BvbnNlKGFjY2VwdGVkLCBhY3Rpb24pOworKyAgICAg ICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBs YXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+c2V0RHJvcFJlc3BvbnNlKHJlc3BvbnNlKTsK KysgICAgfSk7CisrICAgIGNvbm5lY3QobV9kcmFnU291cmNlLmRhdGEoKSwgJlFXYXlsYW5kRGF0 YVNvdXJjZTo6ZmluaXNoZWQsIHRoaXMsIFtdKCkgeworKyAgICAgICAgc3RhdGljX2Nhc3Q8UVdh eWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24o KS0+ZHJhZygpKS0+ZmluaXNoRHJhZygpOworKyAgICB9KTsKKyAKKyAgICAgc3RhcnRfZHJhZyht X2RyYWdTb3VyY2UtPm9iamVjdCgpLCBvcmlnaW4tPndsU3VyZmFjZSgpLCBpY29uLT53bFN1cmZh Y2UoKSwgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+c2VyaWFsKCkpOworICAgICBy ZXR1cm4gdHJ1ZTsKK0BAIC0xNTIsNyArMTc1LDcgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6 OmRhdGFfZGV2aWNlX2Ryb3AoKQorICAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IGRyYWctPnN1 cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNlIGlmIChtX2RyYWdPZmZlcikgeworICAgICAg ICAgZHJhZ0RhdGEgPSBtX2RyYWdPZmZlci0+bWltZURhdGEoKTsKKy0gICAgICAgIHN1cHBvcnRl ZEFjdGlvbnMgPSBRdDo6Q29weUFjdGlvbiB8IFF0OjpNb3ZlQWN0aW9uIHwgUXQ6OkxpbmtBY3Rp b247CisrICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gbV9kcmFnT2ZmZXItPnN1cHBvcnRlZEFj dGlvbnMoKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorQEAgLTE2 Miw3ICsxODUsMTEgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX2Ryb3Ao KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUUd1aUFwcGxpY2F0aW9uOjprZXlib2FyZE1vZGlmaWVycygp KTsKKyAKKyAgICAgaWYgKGRyYWcpIHsKKy0gICAgICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJh ZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWco KSktPmZpbmlzaERyYWcocmVzcG9uc2UpOworKyAgICAgICAgYXV0byBkcmFnID0gIHN0YXRpY19j YXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVn cmF0aW9uKCktPmRyYWcoKSk7CisrICAgICAgICBkcmFnLT5zZXREcm9wUmVzcG9uc2UocmVzcG9u c2UpOworKyAgICAgICAgZHJhZy0+ZmluaXNoRHJhZygpOworKyAgICB9IGVsc2UgaWYgKG1fZHJh Z09mZmVyKSB7CisrICAgICAgICBtX2RyYWdPZmZlci0+ZmluaXNoKCk7CisgICAgIH0KKyB9Cisg CitAQCAtMTg2LDcgKzIxMyw3IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2Rldmlj ZV9lbnRlcih1aW50MzJfdCBzZXJpYWwsIHdsX3N1cmZhY2UgKnN1cmZhY2UsCisgICAgICAgICBz dXBwb3J0ZWRBY3Rpb25zID0gZHJhZy0+c3VwcG9ydGVkQWN0aW9ucygpOworICAgICB9IGVsc2Ug aWYgKG1fZHJhZ09mZmVyKSB7CisgICAgICAgICBkcmFnRGF0YSA9IG1fZHJhZ09mZmVyLT5taW1l RGF0YSgpOworLSAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IFF0OjpDb3B5QWN0aW9uIHwgUXQ6 Ok1vdmVBY3Rpb24gfCBRdDo6TGlua0FjdGlvbjsKKysgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMg PSBtX2RyYWdPZmZlci0+c3VwcG9ydGVkQWN0aW9ucygpOworICAgICB9CisgCisgICAgIGNvbnN0 IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlICZyZXNwb25zZSA9IFFXaW5kb3dTeXN0ZW1JbnRlcmZh Y2U6OmhhbmRsZURyYWcobV9kcmFnV2luZG93LCBkcmFnRGF0YSwgbV9kcmFnUG9pbnQsIHN1cHBv cnRlZEFjdGlvbnMsCitAQCAtMTk3LDExICsyMjQsNyBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmlj ZTo6ZGF0YV9kZXZpY2VfZW50ZXIodWludDMyX3Qgc2VyaWFsLCB3bF9zdXJmYWNlICpzdXJmYWNl LAorICAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblBy aXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+c2V0UmVzcG9uc2UocmVzcG9u c2UpOworICAgICB9CisgCistICAgIGlmIChyZXNwb25zZS5pc0FjY2VwdGVkKCkpIHsKKy0gICAg ICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVyLT5vYmplY3QoKSwgbV9lbnRlclNl cmlhbCwgbV9kcmFnT2ZmZXItPmZpcnN0Rm9ybWF0KCkudG9VdGY4KCkuY29uc3REYXRhKCkpOwor LSAgICB9IGVsc2UgeworLSAgICAgICAgd2xfZGF0YV9vZmZlcl9hY2NlcHQobV9kcmFnT2ZmZXIt Pm9iamVjdCgpLCBtX2VudGVyU2VyaWFsLCBudWxscHRyKTsKKy0gICAgfQorKyAgICBzZW5kUmVz cG9uc2Uoc3VwcG9ydGVkQWN0aW9ucywgcmVzcG9uc2UpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5k RGF0YURldmljZTo6ZGF0YV9kZXZpY2VfbGVhdmUoKQorQEAgLTIzNSwxMCArMjU4LDEwIEBAIHZv aWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9tb3Rpb24odWludDMyX3QgdGltZSwg d2xfZml4ZWRfdCB4LCB3bF9maXhlCisgICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gZHJhZy0+ c3VwcG9ydGVkQWN0aW9ucygpOworICAgICB9IGVsc2UgeworICAgICAgICAgZHJhZ0RhdGEgPSBt X2RyYWdPZmZlci0+bWltZURhdGEoKTsKKy0gICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBRdDo6 Q29weUFjdGlvbiB8IFF0OjpNb3ZlQWN0aW9uIHwgUXQ6OkxpbmtBY3Rpb247CisrICAgICAgICBz dXBwb3J0ZWRBY3Rpb25zID0gbV9kcmFnT2ZmZXItPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAg fQorIAorLSAgICBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSByZXNwb25zZSA9IFFXaW5kb3dTeXN0 ZW1JbnRlcmZhY2U6OmhhbmRsZURyYWcobV9kcmFnV2luZG93LCBkcmFnRGF0YSwgbV9kcmFnUG9p bnQsIHN1cHBvcnRlZEFjdGlvbnMsCisrICAgIGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNl IHJlc3BvbnNlID0gUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlRHJhZyhtX2RyYWdXaW5k b3csIGRyYWdEYXRhLCBtX2RyYWdQb2ludCwgc3VwcG9ydGVkQWN0aW9ucywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFHdWlBcHBsaWNhdGlvbjo6bW91c2VCdXR0b25zKCksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRR3VpQXBwbGljYXRpb246OmtleWJvYXJkTW9kaWZpZXJzKCkpOworIAorQEAgLTI0NiwxMSAr MjY5LDcgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX21vdGlvbih1aW50 MzJfdCB0aW1lLCB3bF9maXhlZF90IHgsIHdsX2ZpeGUKKyAgICAgICAgIHN0YXRpY19jYXN0PFFX YXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9u KCktPmRyYWcoKSktPnNldFJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgfQorIAorLSAgICBpZiAo cmVzcG9uc2UuaXNBY2NlcHRlZCgpKSB7CistICAgICAgICB3bF9kYXRhX29mZmVyX2FjY2VwdCht X2RyYWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG1fZHJhZ09mZmVyLT5maXJzdEZv cm1hdCgpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIHds X2RhdGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVyLT5vYmplY3QoKSwgbV9lbnRlclNlcmlhbCwg bnVsbHB0cik7CistICAgIH0KKysgICAgc2VuZFJlc3BvbnNlKHN1cHBvcnRlZEFjdGlvbnMsIHJl c3BvbnNlKTsKKyB9CisgI2VuZGlmIC8vIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAKK0BAIC0y NzcsMTQgKzI5NiwxMCBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6c2VsZWN0aW9uU291cmNl Q2FuY2VsbGVkKCkKKyAjaWYgUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorIHZvaWQgUVdheWxhbmRE YXRhRGV2aWNlOjpkcmFnU291cmNlQ2FuY2VsbGVkKCkKKyB7CisrICAgIHN0YXRpY19jYXN0PFFX YXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9u KCktPmRyYWcoKSktPmZpbmlzaERyYWcoKTsKKyAgICAgbV9kcmFnU291cmNlLnJlc2V0KCk7Cisg fQorIAorLXZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkcmFnU291cmNlVGFyZ2V0Q2hhbmdlZChj b25zdCBRU3RyaW5nICZtaW1lVHlwZSkKKy17CistICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJh ZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWco KSktPnVwZGF0ZVRhcmdldChtaW1lVHlwZSk7CistfQorLQorIFFQb2ludCBRV2F5bGFuZERhdGFE ZXZpY2U6OmNhbGN1bGF0ZURyYWdQb3NpdGlvbihpbnQgeCwgaW50IHksIFFXaW5kb3cgKnduZCkg Y29uc3QKKyB7CisgICAgIFFQb2ludCBwbnQod2xfZml4ZWRfdG9faW50KHgpLCB3bF9maXhlZF90 b19pbnQoeSkpOworQEAgLTI5Nyw2ICszMTIsMzMgQEAgUVBvaW50IFFXYXlsYW5kRGF0YURldmlj ZTo6Y2FsY3VsYXRlRHJhZ1Bvc2l0aW9uKGludCB4LCBpbnQgeSwgUVdpbmRvdyAqd25kKSBjb24K KyAgICAgfQorICAgICByZXR1cm4gcG50OworIH0KKysKKyt2b2lkIFFXYXlsYW5kRGF0YURldmlj ZTo6c2VuZFJlc3BvbnNlKFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25zLCBjb25zdCBR UGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVzcG9uc2UpCisreworKyAgICBpZiAocmVzcG9uc2Uu aXNBY2NlcHRlZCgpKSB7CisrICAgICAgICBpZiAod2xfZGF0YV9kZXZpY2VfZ2V0X3ZlcnNpb24o b2JqZWN0KCkpID49IDMpCisrICAgICAgICAgICAgbV9kcmFnT2ZmZXItPnNldF9hY3Rpb25zKGRy b3BBY3Rpb25zVG9XbChzdXBwb3J0ZWRBY3Rpb25zKSwgZHJvcEFjdGlvbnNUb1dsKHJlc3BvbnNl LmFjY2VwdGVkQWN0aW9uKCkpKTsKKysKKysgICAgICAgIG1fZHJhZ09mZmVyLT5hY2NlcHQobV9l bnRlclNlcmlhbCwgbV9kcmFnT2ZmZXItPmZpcnN0Rm9ybWF0KCkpOworKyAgICB9IGVsc2Ugewor KyAgICAgICAgbV9kcmFnT2ZmZXItPmFjY2VwdChtX2VudGVyU2VyaWFsLCBRU3RyaW5nKCkpOwor KyAgICB9CisrfQorKworK2ludCBRV2F5bGFuZERhdGFEZXZpY2U6OmRyb3BBY3Rpb25zVG9XbChR dDo6RHJvcEFjdGlvbnMgYWN0aW9ucykKKyt7CisrCisrICAgIGludCB3bEFjdGlvbnMgPSBXTF9E QVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fTk9ORTsKKysgICAgaWYgKGFjdGlvbnMgJiBR dDo6Q29weUFjdGlvbikKKysgICAgICAgIHdsQWN0aW9ucyB8PSBXTF9EQVRBX0RFVklDRV9NQU5B R0VSX0RORF9BQ1RJT05fQ09QWTsKKysgICAgaWYgKGFjdGlvbnMgJiAoUXQ6Ok1vdmVBY3Rpb24g fCBRdDo6VGFyZ2V0TW92ZUFjdGlvbikpCisrICAgICAgICB3bEFjdGlvbnMgfD0gV0xfREFUQV9E RVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX01PVkU7CisrCisrICAgIC8vIHdheWxhbmQgZG9lcyBu b3Qgc3VwcG9ydCBMaW5rQWN0aW9uIGF0IHRoZSB0aW1lIG9mIHdyaXRpbmcKKysgICAgcmV0dXJu IHdsQWN0aW9uczsKKyt9CisrCisrCisgI2VuZGlmIC8vIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkK KyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2 aWNlX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZV9wLmgKK2lu ZGV4IDE2YzNhZDI4Li44MDFkY2MyYyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kZGF0YWRldmljZV9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGF0YWRldmljZV9wLmgKK0BAIC02NCw2ICs2NCw3IEBAIFFUX1JFUVVJUkVfQ09ORklHKHdh eWxhbmRfZGF0YWRldmljZSk7CisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgY2xhc3MgUU1pbWVE YXRhOworK2NsYXNzIFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlOworIGNsYXNzIFFXaW5kb3c7Cisg CisgbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudCB7CitAQCAtODksNyArOTAsNyBAQCBwdWJsaWM6 CisgCisgI2lmIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAgICAgUVdheWxhbmREYXRhT2ZmZXIg KmRyYWdPZmZlcigpIGNvbnN0OworLSAgICBib29sIHN0YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVE YXRhLCBRV2F5bGFuZFdpbmRvdyAqaWNvbik7CisrICAgIGJvb2wgc3RhcnREcmFnKFFNaW1lRGF0 YSAqbWltZURhdGEsIFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25zLCBRV2F5bGFuZFdp bmRvdyAqaWNvbik7CisgICAgIHZvaWQgY2FuY2VsRHJhZygpOworICNlbmRpZgorIAorQEAgLTEw OSwxMyArMTEwLDE2IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAKKyAjaWYgUVRfQ09ORklHKGRyYWdh bmRkcm9wKQorICAgICB2b2lkIGRyYWdTb3VyY2VDYW5jZWxsZWQoKTsKKy0gICAgdm9pZCBkcmFn U291cmNlVGFyZ2V0Q2hhbmdlZChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSk7CisgI2VuZGlmCisg CisgcHJpdmF0ZToKKyAjaWYgUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorICAgICBRUG9pbnQgY2Fs Y3VsYXRlRHJhZ1Bvc2l0aW9uKGludCB4LCBpbnQgeSwgUVdpbmRvdyAqd25kKSBjb25zdDsKKyAj ZW5kaWYKKysgICAgdm9pZCBzZW5kUmVzcG9uc2UoUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFj dGlvbnMsIGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlICZyZXNwb25zZSk7CisrCisrICAg IHN0YXRpYyBpbnQgZHJvcEFjdGlvbnNUb1dsKFF0OjpEcm9wQWN0aW9ucyBkcm9wQWN0aW9ucyk7 CisrCisgCisgICAgIFFXYXlsYW5kRGlzcGxheSAqbV9kaXNwbGF5ID0gbnVsbHB0cjsKKyAgICAg UVdheWxhbmRJbnB1dERldmljZSAqbV9pbnB1dERldmljZSA9IG51bGxwdHI7CitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlci5jcHAgYi9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyLmNwcAoraW5kZXgg MzVkNjczMDcuLjZkYzRmNzdmIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkYXRhZGV2aWNlbWFuYWdlci5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwCitAQCAtNTAsOCArNTAsOCBAQCBRVF9CRUdJTl9O QU1FU1BBQ0UKKyAKKyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xpZW50IHsKKyAKKy1RV2F5bGFuZERh dGFEZXZpY2VNYW5hZ2VyOjpRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKFFXYXlsYW5kRGlzcGxh eSAqZGlzcGxheSwgdWludDMyX3QgaWQpCistICAgIDogd2xfZGF0YV9kZXZpY2VfbWFuYWdlcihk aXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgMSkKKytRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2Vy OjpRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSwgaW50 IHZlcnNpb24sIHVpbnQzMl90IGlkKQorKyAgICA6IHdsX2RhdGFfZGV2aWNlX21hbmFnZXIoZGlz cGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIHFNaW4odmVyc2lvbiwgMykpCisgICAgICwgbV9kaXNw bGF5KGRpc3BsYXkpCisgeworICAgICAvLyBDcmVhdGUgdHJhbnNmZXIgZGV2aWNlcyBmb3IgYWxs IGlucHV0IGRldmljZXMuCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRkYXRhZGV2aWNlbWFuYWdlcl9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRh dGFkZXZpY2VtYW5hZ2VyX3AuaAoraW5kZXggYmQwNWMwZmIuLjUxMGQ5YmU0IDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlcl9wLmgKKysr KyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXJfcC5oCitA QCAtNjgsNyArNjgsNyBAQCBjbGFzcyBRV2F5bGFuZElucHV0RGV2aWNlOworIGNsYXNzIFFfV0FZ TEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIgOiBwdWJsaWMgUXRX YXlsYW5kOjp3bF9kYXRhX2RldmljZV9tYW5hZ2VyCisgeworIHB1YmxpYzoKKy0gICAgUVdheWxh bmREYXRhRGV2aWNlTWFuYWdlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIHVpbnQzMl90IGlk KTsKKysgICAgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcihRV2F5bGFuZERpc3BsYXkgKmRpc3Bs YXksIGludCB2ZXJzaW9uLCB1aW50MzJfdCBpZCk7CisgICAgIH5RV2F5bGFuZERhdGFEZXZpY2VN YW5hZ2VyKCkgb3ZlcnJpZGU7CisgCisgICAgIFFXYXlsYW5kRGF0YURldmljZSAqZ2V0RGF0YURl dmljZShRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmljZSk7CitkaWZmIC0tZ2l0IGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwIGIvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwCitpbmRleCAyMjk3ZThhMS4uZmUwZWE4YzkgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlci5jcHAKKysr KyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyLmNwcAorQEAgLTgyLDYg KzgyLDE1IEBAIFFNaW1lRGF0YSAqUVdheWxhbmREYXRhT2ZmZXI6Om1pbWVEYXRhKCkKKyAgICAg cmV0dXJuIG1fbWltZURhdGEuZGF0YSgpOworIH0KKyAKKytRdDo6RHJvcEFjdGlvbnMgUVdheWxh bmREYXRhT2ZmZXI6OnN1cHBvcnRlZEFjdGlvbnMoKSBjb25zdAorK3sKKysgICAgaWYgKHdsX2Rh dGFfb2ZmZXJfZ2V0X3ZlcnNpb24oY29uc3RfY2FzdDw6OndsX2RhdGFfb2ZmZXIqPihvYmplY3Qo KSkpIDwgMykgeworKyAgICAgICAgcmV0dXJuIFF0OjpNb3ZlQWN0aW9uIHwgUXQ6OkNvcHlBY3Rp b247CisrICAgIH0KKysKKysgICAgcmV0dXJuIG1fc3VwcG9ydGVkQWN0aW9uczsKKyt9CisrCisg dm9pZCBRV2F5bGFuZERhdGFPZmZlcjo6c3RhcnRSZWNlaXZpbmcoY29uc3QgUVN0cmluZyAmbWlt ZVR5cGUsIGludCBmZCkKKyB7CisgICAgIHJlY2VpdmUobWltZVR5cGUsIGZkKTsKK0BAIC05Myw2 ICsxMDIsMjIgQEAgdm9pZCBRV2F5bGFuZERhdGFPZmZlcjo6ZGF0YV9vZmZlcl9vZmZlcihjb25z dCBRU3RyaW5nICZtaW1lX3R5cGUpCisgICAgIG1fbWltZURhdGEtPmFwcGVuZEZvcm1hdChtaW1l X3R5cGUpOworIH0KKyAKKyt2b2lkIFFXYXlsYW5kRGF0YU9mZmVyOjpkYXRhX29mZmVyX2FjdGlv bih1aW50MzJfdCBkbmRfYWN0aW9uKQorK3sKKysgICAgUV9VTlVTRUQoZG5kX2FjdGlvbik7Cisr ICAgIC8vIFRoaXMgaXMgdGhlIGNvbXBvc2l0b3IgdGVsbGluZyB0aGUgZHJhZyB0YXJnZXQgd2hh dCBhY3Rpb24gaXQgc2hvdWxkIHBlcmZvcm0KKysgICAgLy8gSXQgZG9lcyBub3QgbWFwIG5pY2Vs eSBpbnRvIFF0IGZpbmFsIGRyb3Agc2VtYW50aWNzLCBvdGhlciB0aGFuIHByZXRlbmRpbmcgdGhl cmUgaXMgb25seSBvbmUgc3VwcG9ydGVkIGFjdGlvbj8KKyt9CisrCisrdm9pZCBRV2F5bGFuZERh dGFPZmZlcjo6ZGF0YV9vZmZlcl9zb3VyY2VfYWN0aW9ucyh1aW50MzJfdCBzb3VyY2VfYWN0aW9u cykKKyt7CisrICAgIG1fc3VwcG9ydGVkQWN0aW9ucyA9IFF0OjpEcm9wQWN0aW9ucygpOworKyAg ICBpZiAoc291cmNlX2FjdGlvbnMgJiBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05f TU9WRSkKKysgICAgICAgIG1fc3VwcG9ydGVkQWN0aW9ucyB8PSBRdDo6TW92ZUFjdGlvbjsKKysg ICAgaWYgKHNvdXJjZV9hY3Rpb25zICYgV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9O X0NPUFkpCisrICAgICAgICBtX3N1cHBvcnRlZEFjdGlvbnMgfD0gUXQ6OkNvcHlBY3Rpb247Cisr fQorKworIFFXYXlsYW5kTWltZURhdGE6OlFXYXlsYW5kTWltZURhdGEoUVdheWxhbmRBYnN0cmFj dERhdGFPZmZlciAqZGF0YU9mZmVyKQorICAgICA6IG1fZGF0YU9mZmVyKGRhdGFPZmZlcikKKyB7 CitAQCAtMTYzLDE3ICsxODgsMTggQEAgUVZhcmlhbnQgUVdheWxhbmRNaW1lRGF0YTo6cmV0cmll dmVEYXRhX3N5cyhjb25zdCBRU3RyaW5nICZtaW1lVHlwZSwgUVZhcmlhbnQ6OlQKKyAKKyBpbnQg UVdheWxhbmRNaW1lRGF0YTo6cmVhZERhdGEoaW50IGZkLCBRQnl0ZUFycmF5ICZkYXRhKSBjb25z dAorIHsKKy0gICAgZmRfc2V0IHJlYWRzZXQ7CistICAgIEZEX1pFUk8oJnJlYWRzZXQpOworLSAg ICBGRF9TRVQoZmQsICZyZWFkc2V0KTsKKy0gICAgc3RydWN0IHRpbWV2YWwgdGltZW91dDsKKysg ICAgc3RydWN0IHBvbGxmZCByZWFkc2V0OworKyAgICByZWFkc2V0LmZkID0gZmQ7CisrICAgIHJl YWRzZXQuZXZlbnRzID0gUE9MTElOOworKyAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZW91dDsKKyAg ICAgdGltZW91dC50dl9zZWMgPSAxOworLSAgICB0aW1lb3V0LnR2X3VzZWMgPSAwOworKyAgICB0 aW1lb3V0LnR2X25zZWMgPSAwOworKworIAorICAgICBRX0ZPUkVWRVIgeworLSAgICAgICAgaW50 IHJlYWR5ID0gc2VsZWN0KEZEX1NFVFNJWkUsICZyZWFkc2V0LCBudWxscHRyLCBudWxscHRyLCAm dGltZW91dCk7CisrICAgICAgICBpbnQgcmVhZHkgPSBxdF9zYWZlX3BvbGwoJnJlYWRzZXQsIDEs ICZ0aW1lb3V0KTsKKyAgICAgICAgIGlmIChyZWFkeSA8IDApIHsKKy0gICAgICAgICAgICBxV2Fy bmluZygpIDw8ICJRV2F5bGFuZERhdGFPZmZlcjogc2VsZWN0KCkgZmFpbGVkIjsKKysgICAgICAg ICAgICBxV2FybmluZygpIDw8ICJRV2F5bGFuZERhdGFPZmZlcjogcXRfc2FmZV9wb2xsKCkgZmFp bGVkIjsKKyAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICB9IGVsc2UgaWYgKHJlYWR5 ID09IDApIHsKKyAgICAgICAgICAgICBxV2FybmluZygiUVdheWxhbmREYXRhT2ZmZXI6IHRpbWVv dXQgcmVhZGluZyBmcm9tIHBpcGUiKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRhdGFvZmZlcl9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRh dGFvZmZlcl9wLmgKK2luZGV4IDljZjE0ODNjLi42ZjY2NzM5OCAxMDA2NDQKKy0tLSBhL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyX3AuaAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5oCitAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6 CisgICAgIGV4cGxpY2l0IFFXYXlsYW5kRGF0YU9mZmVyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxh eSwgc3RydWN0IDo6d2xfZGF0YV9vZmZlciAqb2ZmZXIpOworICAgICB+UVdheWxhbmREYXRhT2Zm ZXIoKSBvdmVycmlkZTsKKyAgICAgUU1pbWVEYXRhICptaW1lRGF0YSgpIG92ZXJyaWRlOworKyAg ICBRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucygpIGNvbnN0OworIAorICAgICBRU3Ry aW5nIGZpcnN0Rm9ybWF0KCkgY29uc3Q7CisgCitAQCAtODksMTAgKzkwLDEzIEBAIHB1YmxpYzoK KyAKKyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgZGF0YV9vZmZlcl9vZmZlcihjb25zdCBRU3RyaW5n ICZtaW1lX3R5cGUpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfb2ZmZXJfc291cmNlX2FjdGlv bnModWludDMyX3Qgc291cmNlX2FjdGlvbnMpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfb2Zm ZXJfYWN0aW9uKHVpbnQzMl90IGRuZF9hY3Rpb24pIG92ZXJyaWRlOworIAorIHByaXZhdGU6Cisg ICAgIFFXYXlsYW5kRGlzcGxheSAqbV9kaXNwbGF5ID0gbnVsbHB0cjsKKyAgICAgUVNjb3BlZFBv aW50ZXI8UVdheWxhbmRNaW1lRGF0YT4gbV9taW1lRGF0YTsKKysgICAgUXQ6OkRyb3BBY3Rpb25z IG1fc3VwcG9ydGVkQWN0aW9uczsKKyB9OworIAorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRhdGFzb3VyY2UuY3BwCitpbmRleCBmNDUxMjJmYi4uNTU5OWNiZDQgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2UuY3BwCisrKysgYi9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2UuY3BwCitAQCAtMTAxLDcgKzEw MSwzMiBAQCB2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0YV9zb3VyY2Vfc2VuZChjb25zdCBR U3RyaW5nICZtaW1lX3R5cGUsIGludDMyX3QgZmQpCisgCisgdm9pZCBRV2F5bGFuZERhdGFTb3Vy Y2U6OmRhdGFfc291cmNlX3RhcmdldChjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUpCisgeworLSAg ICBRX0VNSVQgdGFyZ2V0Q2hhbmdlZChtaW1lX3R5cGUpOworKyAgICBtX2FjY2VwdGVkID0gIW1p bWVfdHlwZS5pc0VtcHR5KCk7CisrICAgIFFfRU1JVCBkbmRSZXNwb25zZVVwZGF0ZWQobV9hY2Nl cHRlZCwgbV9kcm9wQWN0aW9uKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRh dGFfc291cmNlX2FjdGlvbih1aW50MzJfdCBhY3Rpb24pCisreworKyAgICBRdDo6RHJvcEFjdGlv biBxdEFjdGlvbiA9IFF0OjpJZ25vcmVBY3Rpb247CisrCisrICAgIGlmIChhY3Rpb24gPT0gV0xf REFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX01PVkUpCisrICAgICAgICBxdEFjdGlvbiA9 IFF0OjpNb3ZlQWN0aW9uOworKyAgICBlbHNlIGlmIChhY3Rpb24gPT0gV0xfREFUQV9ERVZJQ0Vf TUFOQUdFUl9ETkRfQUNUSU9OX0NPUFkpCisrICAgICAgICBxdEFjdGlvbiA9IFF0OjpDb3B5QWN0 aW9uOworKworKyAgICBtX2Ryb3BBY3Rpb24gPSBxdEFjdGlvbjsKKysgICAgUV9FTUlUIGRuZFJl c3BvbnNlVXBkYXRlZChtX2FjY2VwdGVkLCBtX2Ryb3BBY3Rpb24pOworK30KKysKKyt2b2lkIFFX YXlsYW5kRGF0YVNvdXJjZTo6ZGF0YV9zb3VyY2VfZG5kX2ZpbmlzaGVkKCkKKyt7CisrICAgIFFf RU1JVCBmaW5pc2hlZCgpOworK30KKysKKyt2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0YV9z b3VyY2VfZG5kX2Ryb3BfcGVyZm9ybWVkKCkKKyt7CisrCisrICAgIFFfRU1JVCBkbmREcm9wcGVk KG1fYWNjZXB0ZWQsIG1fZHJvcEFjdGlvbik7CisgfQorIAorIH0KK2RpZmYgLS1naXQgYS9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2VfcC5oIGIvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkYXRhc291cmNlX3AuaAoraW5kZXggMjVhZmZmNzkuLjk2ZjA3YmMzIDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlX3AuaAor KysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlX3AuaAorQEAgLTc3 LDE3ICs3NywyNSBAQCBwdWJsaWM6CisgICAgIFFNaW1lRGF0YSAqbWltZURhdGEoKSBjb25zdDsK KyAKKyBRX1NJR05BTFM6CistICAgIHZvaWQgdGFyZ2V0Q2hhbmdlZChjb25zdCBRU3RyaW5nICZt aW1lX3R5cGUpOworICAgICB2b2lkIGNhbmNlbGxlZCgpOworKyAgICB2b2lkIGZpbmlzaGVkKCk7 CisrCisrICAgIHZvaWQgZG5kUmVzcG9uc2VVcGRhdGVkKGJvb2wgYWNjZXB0ZWQsIFF0OjpEcm9w QWN0aW9uIGFjdGlvbik7CisrICAgIHZvaWQgZG5kRHJvcHBlZChib29sIGFjY2VwdGVkLCBRdDo6 RHJvcEFjdGlvbiBhY3Rpb24pOworIAorIHByb3RlY3RlZDoKKyAgICAgdm9pZCBkYXRhX3NvdXJj ZV9jYW5jZWxsZWQoKSBvdmVycmlkZTsKKyAgICAgdm9pZCBkYXRhX3NvdXJjZV9zZW5kKGNvbnN0 IFFTdHJpbmcgJm1pbWVfdHlwZSwgaW50MzJfdCBmZCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgZGF0 YV9zb3VyY2VfdGFyZ2V0KGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSkgb3ZlcnJpZGU7CisrICAg IHZvaWQgZGF0YV9zb3VyY2VfZG5kX2Ryb3BfcGVyZm9ybWVkKCkgb3ZlcnJpZGU7CisrICAgIHZv aWQgZGF0YV9zb3VyY2VfZG5kX2ZpbmlzaGVkKCkgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9z b3VyY2VfYWN0aW9uKHVpbnQzMl90IGFjdGlvbikgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAg ICAgUVdheWxhbmREaXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRyOworICAgICBRTWltZURhdGEg Km1fbWltZV9kYXRhID0gbnVsbHB0cjsKKysgICAgYm9vbCBtX2FjY2VwdGVkID0gZmFsc2U7Cisr ICAgIFF0OjpEcm9wQWN0aW9uIG1fZHJvcEFjdGlvbiA9IFF0OjpJZ25vcmVBY3Rpb247CisgfTsK KyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5 LmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheS5jcHAKK2luZGV4IGYx MGMxZjc5Li5jMDFlMjM4YiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGlzcGxheS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxh eS5jcHAKK0BAIC04NSwxMCArODUsMjAzIEBACisgCisgI2luY2x1ZGUgPGVycm5vLmg+CisgCisr I2luY2x1ZGUgPHR1cGxlPiAvLyBmb3Igc3RkOjp0aWUKKysKKytzdGF0aWMgdm9pZCBjaGVja1dh eWxhbmRFcnJvcihzdHJ1Y3Qgd2xfZGlzcGxheSAqZGlzcGxheSkKKyt7CisrICAgIGludCBlY29k ZSA9IHdsX2Rpc3BsYXlfZ2V0X2Vycm9yKGRpc3BsYXkpOworKyAgICBpZiAoKGVjb2RlID09IEVQ SVBFIHx8IGVjb2RlID09IEVDT05OUkVTRVQpKSB7CisrICAgICAgICAvLyBzcGVjaWFsIGNhc2Ug dGhpcyB0byBwcm92aWRlIGEgbmljZXIgZXJyb3IKKysgICAgICAgIHFXYXJuaW5nKCJUaGUgV2F5 bGFuZCBjb25uZWN0aW9uIGJyb2tlLiBEaWQgdGhlIFdheWxhbmQgY29tcG9zaXRvciBkaWU/Iik7 CisrICAgIH0gZWxzZSB7CisrICAgICAgICBxV2FybmluZygiVGhlIFdheWxhbmQgY29ubmVjdGlv biBleHBlcmllbmNlZCBhIGZhdGFsIGVycm9yOiAlcyIsIHN0cmVycm9yKGVjb2RlKSk7CisrICAg IH0KKysgICAgX2V4aXQoMSk7CisrfQorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIG5hbWVz cGFjZSBRdFdheWxhbmRDbGllbnQgeworIAorK2NsYXNzIEV2ZW50VGhyZWFkIDogcHVibGljIFFU aHJlYWQKKyt7CisrICAgIFFfT0JKRUNUCisrcHVibGljOgorKyAgICBlbnVtIE9wZXJhdGluZ01v ZGUgeworKyAgICAgICAgRW1pdFRvRGlzcGF0Y2gsIC8vIEVtaXQgdGhlIHNpZ25hbCwgYWxsb3cg ZGlzcGF0Y2hpbmcgaW4gYSBkaWZmZXJudCB0aHJlYWQuCisrICAgICAgICBTZWxmRGlzcGF0Y2gs IC8vIERpc3BhdGNoIHRoZSBldmVudHMgaW5zaWRlIHRoaXMgdGhyZWFkLgorKyAgICB9OworKwor KyAgICBFdmVudFRocmVhZChzdHJ1Y3Qgd2xfZGlzcGxheSAqIHdsLCBzdHJ1Y3Qgd2xfZXZlbnRf cXVldWUgKiBldl9xdWV1ZSwKKysgICAgICAgICAgICAgICAgT3BlcmF0aW5nTW9kZSBtb2RlKQor KyAgICAgICAgOiBtX2ZkKHdsX2Rpc3BsYXlfZ2V0X2ZkKHdsKSkKKysgICAgICAgICwgbV9waXBl ZmR7IC0xLCAtMSB9CisrICAgICAgICAsIG1fd2xkaXNwbGF5KHdsKQorKyAgICAgICAgLCBtX3ds ZXZxdWV1ZShldl9xdWV1ZSkKKysgICAgICAgICwgbV9tb2RlKG1vZGUpCisrICAgICAgICAsIG1f cmVhZGluZyh0cnVlKQorKyAgICAgICAgLCBtX3F1aXR0aW5nKGZhbHNlKQorKyAgICB7CisrICAg ICAgICBzZXRPYmplY3ROYW1lKFFTdHJpbmdMaXRlcmFsKCJXYXlsYW5kRXZlbnRUaHJlYWQiKSk7 CisrICAgIH0KKysKKysgICAgdm9pZCByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKQorKyAgICB7Cisr ICAgICAgICAvKgorKyAgICAgICAgICogRGlzcGF0Y2ggcGVuZGluZyBldmVudHMgYW5kIGZsdXNo IHRoZSByZXF1ZXN0cyBhdCBsZWFzdCBvbmNlLiBJZiB0aGUgZXZlbnQgdGhyZWFkCisrICAgICAg ICAgKiBpcyBub3QgcmVhZGluZywgdHJ5IHRvIGNhbGwgX3ByZXBhcmVfcmVhZCgpIHRvIGFsbG93 IHRoZSBldmVudCB0aHJlYWQgdG8gcG9sbCgpLgorKyAgICAgICAgICogSWYgdGhhdCBmYWlscywg cmUtdHJ5IGRpc3BhdGNoICYgZmx1c2ggYWdhaW4gdW50aWwgX3ByZXBhcmVfcmVhZCgpIGlzIHN1 Y2Nlc3NmdWwuCisrICAgICAgICAgKgorKyAgICAgICAgICogVGhpcyBhbGxvdyBhbnkgY2FsbCB0 byByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKSB0byBzdGFydCBldmVudCB0aHJlYWQncyBwb2xsaW5n LAorKyAgICAgICAgICogbm90IG9ubHkgdGhlIG9uZSBpc3N1ZWQgZnJvbSBldmVudCB0aHJlYWQn cyB3YWl0Rm9yUmVhZGluZygpLCB3aGljaCBtZWFucyBmdW5jdGlvbnMKKysgICAgICAgICAqIGNh bGxlZCBmcm9tIGRpc3BhdGNoX3BlbmRpbmcoKSBjYW4gc2FmZWx5IHNwaW4gYW4gZXZlbnQgbG9v cC4KKysgICAgICAgICAqLworKyAgICAgICAgZm9yICg7OykgeworKyAgICAgICAgICAgIGlmIChk aXNwYXRjaFF1ZXVlUGVuZGluZygpIDwgMCkgeworKyAgICAgICAgICAgICAgICBjaGVja1dheWxh bmRFcnJvcihtX3dsZGlzcGxheSk7CisrICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAg ICAgICB9CisrCisrICAgICAgICAgICAgd2xfZGlzcGxheV9mbHVzaChtX3dsZGlzcGxheSk7Cisr CisrICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBjaGVjayBpZiBldmVudCB0aHJlYWQgaXMgcmVh ZGluZyBldmVyeSB0aW1lIHdlIGRpc3BhdGNoCisrICAgICAgICAgICAgLy8gc29tZXRoaW5nLCBh cyB0aGF0IG1heSByZWN1cnNpdmVseSBjYWxsIHRoaXMgZnVuY3Rpb24uCisrICAgICAgICAgICAg aWYgKG1fcmVhZGluZy5sb2FkQWNxdWlyZSgpKQorKyAgICAgICAgICAgICAgICBicmVhazsKKysK KysgICAgICAgICAgICBpZiAocHJlcGFyZVJlYWRRdWV1ZSgpID09IDApIHsKKysgICAgICAgICAg ICAgICAgUU11dGV4TG9ja2VyIGwoJm1fbXV0ZXgpOworKyAgICAgICAgICAgICAgICBtX3JlYWRp bmcuc3RvcmVSZWxlYXNlKHRydWUpOworKyAgICAgICAgICAgICAgICBtX2NvbmQud2FrZU9uZSgp OworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICB9Cisr ICAgIH0KKysKKysgICAgdm9pZCBzdG9wKCkKKysgICAgeworKyAgICAgICAgLy8gV2UgaGF2ZSB0 byBib3RoIHdyaXRlIHRvIHRoZSBwaXBlIGFuZCBzZXQgdGhlIGZsYWcsIGFzIHRoZSB0aHJlYWQg bWF5IGJlCisrICAgICAgICAvLyBlaXRoZXIgaW4gdGhlIHBvbGwoKSBvciB3YWl0aW5nIGZvciBf cHJlcGFyZV9yZWFkKCkuCisrICAgICAgICBpZiAobV9waXBlZmRbMV0gIT0gLTEgJiYgd3JpdGUo bV9waXBlZmRbMV0sICJcMCIsIDEpID09IC0xKQorKyAgICAgICAgICAgIHFXYXJuaW5nKCJGYWls ZWQgdG8gd3JpdGUgdG8gdGhlIHBpcGU6ICVzLiIsIHN0cmVycm9yKGVycm5vKSk7CisrCisrICAg ICAgICB7CisrICAgICAgICAgICAgUU11dGV4TG9ja2VyIGwoJm1fbXV0ZXgpOworKyAgICAgICAg ICAgIG1fcXVpdHRpbmcgPSB0cnVlOworKyAgICAgICAgICAgIG1fY29uZC53YWtlT25lKCk7Cisr ICAgICAgICB9CisrCisrICAgICAgICB3YWl0KCk7CisrICAgIH0KKysKKytRX1NJR05BTFM6Cisr ICAgIHZvaWQgbmVlZFJlYWRBbmREaXNwYXRjaCgpOworKworK3Byb3RlY3RlZDoKKysgICAgdm9p ZCBydW4oKSBvdmVycmlkZQorKyAgICB7CisrICAgICAgICAvLyB3ZSB1c2UgdGhpcyBwaXBlIHRv IG1ha2UgdGhlIGxvb3AgZXhpdCBvdGhlcndpc2UgaWYgd2Ugc2ltcGx5IHVzZWQgYSBmbGFnIG9u IHRoZSBsb29wIGNvbmRpdGlvbiwgaWYgc3RvcCgpIGdldHMKKysgICAgICAgIC8vIGNhbGxlZCB3 aGlsZSBwb2xsKCkgaXMgYmxvY2tpbmcgdGhlIHRocmVhZCB3aWxsIG5ldmVyIHF1aXQgc2luY2Ug dGhlcmUgYXJlIG5vIHdheWxhbmQgbWVzc2FnZXMgY29taW5nIGFueW1vcmUuCisrICAgICAgICBz dHJ1Y3QgUGlwZQorKyAgICAgICAgeworKyAgICAgICAgICAgIFBpcGUoaW50ICpmZHMpCisrICAg ICAgICAgICAgICAgIDogZmRzKGZkcykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAg IGlmIChxdF9zYWZlX3BpcGUoZmRzKSAhPSAwKQorKyAgICAgICAgICAgICAgICAgICAgcVdhcm5p bmcoIlBpcGUgY3JlYXRpb24gZmFpbGVkLiBRdWl0dGluZyBtYXkgaGFuZy4iKTsKKysgICAgICAg ICAgICB9CisrICAgICAgICAgICAgflBpcGUoKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgICAgaWYgKGZkc1swXSAhPSAtMSkgeworKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoZmRz WzBdKTsKKysgICAgICAgICAgICAgICAgICAgIGNsb3NlKGZkc1sxXSk7CisrICAgICAgICAgICAg ICAgIH0KKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgaW50ICpmZHM7CisrICAgICAg ICB9IHBpcGUobV9waXBlZmQpOworKworKyAgICAgICAgLy8gTWFrZSB0aGUgbWFpbiB0aHJlYWQg Y2FsbCB3bF9wcmVwYXJlX3JlYWQoKSwgZGlzcGF0Y2ggdGhlIHBlbmRpbmcgbWVzc2FnZXMgYW5k IGZsdXNoIHRoZQorKyAgICAgICAgLy8gb3V0Ym91bmQgb25lcy4gV2FpdCB1bnRpbCBpdCdzIGRv bmUgYmVmb3JlIHByb2NlZWRpbmcsIHVubGVzcyB3ZSdyZSB0b2xkIHRvIHF1aXQuCisrICAgICAg ICB3aGlsZSAod2FpdEZvclJlYWRpbmcoKSkgeworKyAgICAgICAgICAgIHBvbGxmZCBmZHNbMl0g PSB7IHsgbV9mZCwgUE9MTElOLCAwIH0sIHsgbV9waXBlZmRbMF0sIFBPTExJTiwgMCB9IH07Cisr ICAgICAgICAgICAgcG9sbChmZHMsIDIsIC0xKTsKKysKKysgICAgICAgICAgICBpZiAoZmRzWzFd LnJldmVudHMgJiBQT0xMSU4pIHsKKysgICAgICAgICAgICAgICAgLy8gd2UgZG9uJ3QgcmVhbGx5 IGNhcmUgdG8gcmVhZCB0aGUgYnl0ZSB0aGF0IHdhcyB3cml0dGVuIGhlcmUgc2luY2Ugd2UncmUg Y2xvc2luZyBkb3duCisrICAgICAgICAgICAgICAgIHdsX2Rpc3BsYXlfY2FuY2VsX3JlYWQobV93 bGRpc3BsYXkpOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrCisr ICAgICAgICAgICAgaWYgKGZkc1swXS5yZXZlbnRzICYgUE9MTElOKQorKyAgICAgICAgICAgICAg ICB3bF9kaXNwbGF5X3JlYWRfZXZlbnRzKG1fd2xkaXNwbGF5KTsKKysgICAgICAgICAgICAgICAg Ly8gVGhlIHBvbGxsIHdhcyBzdWNjZXNmdWxsIGFuZCB0aGUgZXZlbnQgdGhyZWFkIGRpZCB0aGUg d2xfZGlzcGxheV9yZWFkX2V2ZW50cygpLiBPbiB0aGUgbmV4dCBpdGVyYXRpb24gb2YgdGhlIGxv b3AKKysgICAgICAgICAgICAgICAgLy8gdGhlIGV2ZW50IHNlbnQgdG8gdGhlIG1haW4gdGhyZWFk IHdpbGwgY2F1c2UgaXQgdG8gZGlzcGF0Y2ggdGhlIG1lc3NhZ2VzIGp1c3QgcmVhZCwgdW5sZXNz IHRoZSBsb29wIGV4aXRzIGluIHdoaWNoCisrICAgICAgICAgICAgICAgIC8vIGNhc2Ugd2UgZG9u J3QgY2FyZSBhbnltb3JlIGFib3V0IHRoZW0uCisrICAgICAgICAgICAgZWxzZQorKyAgICAgICAg ICAgICAgICB3bF9kaXNwbGF5X2NhbmNlbF9yZWFkKG1fd2xkaXNwbGF5KTsKKysgICAgICAgIH0K KysgICAgfQorKworK3ByaXZhdGU6CisrICAgIGJvb2wgd2FpdEZvclJlYWRpbmcoKQorKyAgICB7 CisrICAgICAgICBRX0FTU0VSVChRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkgPT0gdGhpcyk7Cisr CisrICAgICAgICBtX3JlYWRpbmcuc3RvcmVSZWxlYXNlKGZhbHNlKTsKKysKKysgICAgICAgIGlm IChtX21vZGUgPT0gU2VsZkRpc3BhdGNoKSB7CisrICAgICAgICAgICAgcmVhZEFuZERpc3BhdGNo RXZlbnRzKCk7CisrICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIFFfRU1JVCBuZWVkUmVh ZEFuZERpc3BhdGNoKCk7CisrCisrICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2soJm1fbXV0 ZXgpOworKyAgICAgICAgICAgIC8vIG1fcmVhZGluZyBtaWdodCBiZSBzZXQgZnJvbSBvdXIgZW1p dCBvciBzb21lIG90aGVyIGludm9jYXRpb24gb2YKKysgICAgICAgICAgICAvLyByZWFkQW5kRGlz cGF0Y2hFdmVudHMoKS4KKysgICAgICAgICAgICB3aGlsZSAoIW1fcmVhZGluZy5sb2FkUmVsYXhl ZCgpICYmICFtX3F1aXR0aW5nKQorKyAgICAgICAgICAgICAgICBtX2NvbmQud2FpdCgmbV9tdXRl eCk7CisrICAgICAgICB9CisrCisrICAgICAgICByZXR1cm4gIW1fcXVpdHRpbmc7CisrICAgIH0K KysKKysgICAgaW50IGRpc3BhdGNoUXVldWVQZW5kaW5nKCkKKysgICAgeworKyAgICAgICAgaWYg KG1fd2xldnF1ZXVlKQorKyAgICAgICAgICAgIHJldHVybiB3bF9kaXNwbGF5X2Rpc3BhdGNoX3F1 ZXVlX3BlbmRpbmcobV93bGRpc3BsYXksIG1fd2xldnF1ZXVlKTsKKysgICAgICAgIGVsc2UKKysg ICAgICAgICAgICByZXR1cm4gd2xfZGlzcGxheV9kaXNwYXRjaF9wZW5kaW5nKG1fd2xkaXNwbGF5 KTsKKysgICAgfQorKworKyAgICBpbnQgcHJlcGFyZVJlYWRRdWV1ZSgpCisrICAgIHsKKysgICAg ICAgIGlmIChtX3dsZXZxdWV1ZSkKKysgICAgICAgICAgICByZXR1cm4gd2xfZGlzcGxheV9wcmVw YXJlX3JlYWRfcXVldWUobV93bGRpc3BsYXksIG1fd2xldnF1ZXVlKTsKKysgICAgICAgIGVsc2UK KysgICAgICAgICAgICByZXR1cm4gd2xfZGlzcGxheV9wcmVwYXJlX3JlYWQobV93bGRpc3BsYXkp OworKyAgICB9CisrCisrICAgIGludCBtX2ZkOworKyAgICBpbnQgbV9waXBlZmRbMl07CisrICAg IHdsX2Rpc3BsYXkgKm1fd2xkaXNwbGF5OworKyAgICB3bF9ldmVudF9xdWV1ZSAqbV93bGV2cXVl dWU7CisrICAgIE9wZXJhdGluZ01vZGUgbV9tb2RlOworKworKyAgICAvKiBDb25jdXJyZW5jeSBu b3RlIHdoZW4gb3BlcmF0aW5nIGluIEVtaXRUb0Rpc3BhdGNoIG1vZGU6CisrICAgICAqIG1fcmVh ZGluZyBpcyBzZXQgdG8gZmFsc2UgaW5zaWRlIGV2ZW50IHRocmVhZCdzIHdhaXRGb3JSZWFkaW5n KCksIGFuZCBpcworKyAgICAgKiBzZXQgdG8gdHJ1ZSBpbnNpZGUgbWFpbiB0aHJlYWQncyByZWFk QW5kRGlzcGF0Y2hFdmVudHMoKS4KKysgICAgICogVGhlIGxvY2sgaXMgbm90IHRha2VuIHdoZW4g c2V0dGluZyBtX3JlYWRpbmcgdG8gZmFsc2UsIGFzIHRoZSBtYWluIHRocmVhZAorKyAgICAgKiBp cyBub3QgYWN0aXZlbHkgd2FpdGluZyBmb3IgaXQgdG8gdHVybiBmYWxzZS4gSG93ZXZlciwgdGhl IGxvY2sgaXMgdGFrZW4KKysgICAgICogaW5zaWRlIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpIGJl Zm9yZSBzZXR0aW5nIG1fcmVhZGluZyB0byB0cnVlLAorKyAgICAgKiBhcyB0aGUgZXZlbnQgdGhy ZWFkIGlzIGFjdGl2ZWx5IHdhaXRpbmcgZm9yIGl0IHVuZGVyIHRoZSB3YWl0IGNvbmRpdGlvbi4K KysgICAgICovCisrCisrICAgIFFBdG9taWNJbnRlZ2VyPGJvb2w+IG1fcmVhZGluZzsKKysgICAg Ym9vbCBtX3F1aXR0aW5nOworKyAgICBRTXV0ZXggbV9tdXRleDsKKysgICAgUVdhaXRDb25kaXRp b24gbV9jb25kOworK307CisrCisgUV9MT0dHSU5HX0NBVEVHT1JZKGxjUXBhV2F5bGFuZCwgInF0 LnFwYS53YXlsYW5kIik7IC8vIGZvciBnZW5lcmFsICh1bmNhdGVnb3JpemVkKSBXYXlsYW5kIHBs YXRmb3JtIGxvZ2dpbmcKKyAKKyBzdHJ1Y3Qgd2xfc3VyZmFjZSAqUVdheWxhbmREaXNwbGF5Ojpj cmVhdGVTdXJmYWNlKHZvaWQgKmhhbmRsZSkKK0BAIC0xNTgsMTcgKzM1MSwxNiBAQCBRV2F5bGFu ZERpc3BsYXk6OlFXYXlsYW5kRGlzcGxheShRV2F5bGFuZEludGVncmF0aW9uICp3YXlsYW5kSW50 ZWdyYXRpb24pCisgICAgIGlmICghbVhrYkNvbnRleHQpCisgICAgICAgICBxQ1dhcm5pbmcobGNR cGFXYXlsYW5kLCAiZmFpbGVkIHRvIGNyZWF0ZSB4a2IgY29udGV4dCIpOworICNlbmRpZgorLQor LSAgICBmb3JjZVJvdW5kVHJpcCgpOworLQorLSAgICBpZiAoIW1XYWl0aW5nU2NyZWVucy5pc0Vt cHR5KCkpIHsKKy0gICAgICAgIC8vIEdpdmUgd2xfb3V0cHV0LmRvbmUgYW5kIHp4ZGdfb3V0cHV0 X3YxLmRvbmUgZXZlbnRzIGEgY2hhbmNlIHRvIGFycml2ZQorLSAgICAgICAgZm9yY2VSb3VuZFRy aXAoKTsKKy0gICAgfQorIH0KKyAKKyBRV2F5bGFuZERpc3BsYXk6On5RV2F5bGFuZERpc3BsYXko dm9pZCkKKyB7CisrICAgIGlmIChtX2V2ZW50VGhyZWFkKQorKyAgICAgICAgbV9ldmVudFRocmVh ZC0+c3RvcCgpOworKworKyAgICBpZiAobV9mcmFtZUV2ZW50UXVldWVUaHJlYWQpCisrICAgICAg ICBtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZC0+c3RvcCgpOworKworICAgICBpZiAobVN5bmNDYWxs YmFjaykKKyAgICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3kobVN5bmNDYWxsYmFjayk7CisgCitA QCAtMTg3LDYgKzM3OSwyMSBAQCBRV2F5bGFuZERpc3BsYXk6On5RV2F5bGFuZERpc3BsYXkodm9p ZCkKKyAjZW5kaWYKKyAgICAgaWYgKG1EaXNwbGF5KQorICAgICAgICAgd2xfZGlzcGxheV9kaXNj b25uZWN0KG1EaXNwbGF5KTsKKysKKysgICAgaWYgKG1fZnJhbWVFdmVudFF1ZXVlKQorKyAgICAg ICAgd2xfZXZlbnRfcXVldWVfZGVzdHJveShtX2ZyYW1lRXZlbnRRdWV1ZSk7CisrfQorKworKy8v IFN0ZXBzIHdoaWNoIGlzIGNhbGxlZCBqdXN0IGFmdGVyIGNvbnN0cnVjdG9yLiBUaGlzIHNlcGFy YXRlcyByZWdpc3RyeV9nbG9iYWwoKSBvdXQgb2YgdGhlIGNvbnN0cnVjdG9yCisrLy8gc28gdGhh dCBmYWN0b3J5IGZ1bmN0aW9ucyBpbiBpbnRlZ3JhdGlvbiBjYW4gYmUgb3ZlcnJpZGRlbi4KKyt2 b2lkIFFXYXlsYW5kRGlzcGxheTo6aW5pdGlhbGl6ZSgpCisreworKyAgICBmb3JjZVJvdW5kVHJp cCgpOworKworKyAgICBpZiAoIW1XYWl0aW5nU2NyZWVucy5pc0VtcHR5KCkpIHsKKysgICAgICAg IC8vIEdpdmUgd2xfb3V0cHV0LmRvbmUgYW5kIHp4ZGdfb3V0cHV0X3YxLmRvbmUgZXZlbnRzIGEg Y2hhbmNlIHRvIGFycml2ZQorKyAgICAgICAgZm9yY2VSb3VuZFRyaXAoKTsKKysgICAgfQorIH0K KyAKKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6ZW5zdXJlU2NyZWVuKCkKK0BAIC0yMDMsOTggKzQx MCwzNyBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6ZW5zdXJlU2NyZWVuKCkKKyAKKyB2b2lkIFFX YXlsYW5kRGlzcGxheTo6Y2hlY2tFcnJvcigpIGNvbnN0CisgeworLSAgICBpbnQgZWNvZGUgPSB3 bF9kaXNwbGF5X2dldF9lcnJvcihtRGlzcGxheSk7CistICAgIGlmICgoZWNvZGUgPT0gRVBJUEUg fHwgZWNvZGUgPT0gRUNPTk5SRVNFVCkpIHsKKy0gICAgICAgIC8vIHNwZWNpYWwgY2FzZSB0aGlz IHRvIHByb3ZpZGUgYSBuaWNlciBlcnJvcgorLSAgICAgICAgcVdhcm5pbmcoIlRoZSBXYXlsYW5k IGNvbm5lY3Rpb24gYnJva2UuIERpZCB0aGUgV2F5bGFuZCBjb21wb3NpdG9yIGRpZT8iKTsKKy0g ICAgfSBlbHNlIHsKKy0gICAgICAgIHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBjb25uZWN0aW9uIGV4 cGVyaWVuY2VkIGEgZmF0YWwgZXJyb3I6ICVzIiwgc3RyZXJyb3IoZWNvZGUpKTsKKy0gICAgfQor LSAgICBfZXhpdCgxKTsKKysgICAgY2hlY2tXYXlsYW5kRXJyb3IobURpc3BsYXkpOworIH0KKyAK KysvLyBDYWxsZWQgaW4gbWFpbiB0aHJlYWQsIGVpdGhlciBmcm9tIHF1ZXVlZCBzaWduYWwgb3Ig ZGlyZWN0bHkuCisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmZsdXNoUmVxdWVzdHMoKQorIHsKKy0g ICAgaWYgKHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkKG1EaXNwbGF5KSA9PSAwKSB7CistICAgICAg ICB3bF9kaXNwbGF5X3JlYWRfZXZlbnRzKG1EaXNwbGF5KTsKKy0gICAgfQorLQorLSAgICBpZiAo d2xfZGlzcGxheV9kaXNwYXRjaF9wZW5kaW5nKG1EaXNwbGF5KSA8IDApCistICAgICAgICBjaGVj a0Vycm9yKCk7CistCistICAgIHsKKy0gICAgICAgIFFSZWFkTG9ja2VyIGxvY2tlcigmbV9mcmFt ZVF1ZXVlTG9jayk7CistICAgICAgICBmb3IgKGNvbnN0IEZyYW1lUXVldWUgJnEgOiBtRXh0ZXJu YWxRdWV1ZXMpIHsKKy0gICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKHEubXV0ZXgpOwor LSAgICAgICAgICAgIHdoaWxlICh3bF9kaXNwbGF5X3ByZXBhcmVfcmVhZF9xdWV1ZShtRGlzcGxh eSwgcS5xdWV1ZSkgIT0gMCkKKy0gICAgICAgICAgICAgICAgd2xfZGlzcGxheV9kaXNwYXRjaF9x dWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBxLnF1ZXVlKTsKKy0gICAgICAgICAgICB3bF9kaXNwbGF5 X3JlYWRfZXZlbnRzKG1EaXNwbGF5KTsKKy0gICAgICAgICAgICB3bF9kaXNwbGF5X2Rpc3BhdGNo X3F1ZXVlX3BlbmRpbmcobURpc3BsYXksIHEucXVldWUpOworLSAgICAgICAgfQorLSAgICB9Cist CistICAgIHdsX2Rpc3BsYXlfZmx1c2gobURpc3BsYXkpOworLX0KKy0KKy12b2lkIFFXYXlsYW5k RGlzcGxheTo6YmxvY2tpbmdSZWFkRXZlbnRzKCkKKy17CistICAgIGlmICh3bF9kaXNwbGF5X2Rp c3BhdGNoKG1EaXNwbGF5KSA8IDApCistICAgICAgICBjaGVja0Vycm9yKCk7CistfQorLQorLXZv aWQgUVdheWxhbmREaXNwbGF5OjpkZXN0cm95RnJhbWVRdWV1ZShjb25zdCBRV2F5bGFuZERpc3Bs YXk6OkZyYW1lUXVldWUgJnEpCisteworLSAgICBRV3JpdGVMb2NrZXIgbG9ja2VyKCZtX2ZyYW1l UXVldWVMb2NrKTsKKy0gICAgYXV0byBpdCA9IHN0ZDo6ZmluZF9pZihtRXh0ZXJuYWxRdWV1ZXMu YmVnaW4oKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBtRXh0ZXJuYWxRdWV1ZXMuZW5k KCksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgWyZxXSAoY29uc3QgUVdheWxhbmREaXNw bGF5OjpGcmFtZVF1ZXVlICZvdGhlcil7IHJldHVybiBvdGhlci5xdWV1ZSA9PSBxLnF1ZXVlOyB9 KTsKKy0gICAgUV9BU1NFUlQoaXQgIT0gbUV4dGVybmFsUXVldWVzLmVuZCgpKTsKKy0gICAgbUV4 dGVybmFsUXVldWVzLmVyYXNlKGl0KTsKKy0gICAgaWYgKHEucXVldWUgIT0gbnVsbHB0cikKKy0g ICAgICAgIHdsX2V2ZW50X3F1ZXVlX2Rlc3Ryb3kocS5xdWV1ZSk7CistICAgIGRlbGV0ZSBxLm11 dGV4OworKyAgICBtX2V2ZW50VGhyZWFkLT5yZWFkQW5kRGlzcGF0Y2hFdmVudHMoKTsKKyB9Cisg CistUVdheWxhbmREaXNwbGF5OjpGcmFtZVF1ZXVlIFFXYXlsYW5kRGlzcGxheTo6Y3JlYXRlRnJh bWVRdWV1ZSgpCisrLy8gV2UgaGF2ZSB0byB3YWl0IHVudGlsIHdlIGhhdmUgYW4gZXZlbnREaXNw YXRjaGVyIGJlZm9yZSBjcmVhdGluZyB0aGUgZXZlbnRUaHJlYWQsCisrLy8gb3RoZXJ3aXNlIGZv cmNlUm91bmRUcmlwKCkgbWF5IGJsb2NrIGluc2lkZSBfZXZlbnRzX3JlYWQoKSBiZWNhdXNlIGV2 ZW50VGhyZWFkIGlzCisrLy8gcG9sbGluZy4KKyt2b2lkIFFXYXlsYW5kRGlzcGxheTo6aW5pdEV2 ZW50VGhyZWFkKCkKKyB7CistICAgIFFXcml0ZUxvY2tlciBsb2NrZXIoJm1fZnJhbWVRdWV1ZUxv Y2spOworLSAgICBGcmFtZVF1ZXVlIHF7Y3JlYXRlRXZlbnRRdWV1ZSgpfTsKKy0gICAgbUV4dGVy bmFsUXVldWVzLmFwcGVuZChxKTsKKy0gICAgcmV0dXJuIHE7CistfQorKyAgICBtX2V2ZW50VGhy ZWFkLnJlc2V0KAorKyAgICAgICAgICAgIG5ldyBFdmVudFRocmVhZChtRGlzcGxheSwgLyogZGVm YXVsdCBxdWV1ZSAqLyBudWxscHRyLCBFdmVudFRocmVhZDo6RW1pdFRvRGlzcGF0Y2gpKTsKKysg ICAgY29ubmVjdChtX2V2ZW50VGhyZWFkLmdldCgpLCAmRXZlbnRUaHJlYWQ6Om5lZWRSZWFkQW5k RGlzcGF0Y2gsIHRoaXMsCisrICAgICAgICAgICAgJlFXYXlsYW5kRGlzcGxheTo6Zmx1c2hSZXF1 ZXN0cywgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworKyAgICBtX2V2ZW50VGhyZWFkLT5zdGFydCgp OworIAorLXdsX2V2ZW50X3F1ZXVlICpRV2F5bGFuZERpc3BsYXk6OmNyZWF0ZUV2ZW50UXVldWUo KQorLXsKKy0gICAgcmV0dXJuIHdsX2Rpc3BsYXlfY3JlYXRlX3F1ZXVlKG1EaXNwbGF5KTsKKysg ICAgLy8gd2xfZGlzcGxheV9kaXNjb25uZWN0KCkgZnJlZSB0aGlzLgorKyAgICBtX2ZyYW1lRXZl bnRRdWV1ZSA9IHdsX2Rpc3BsYXlfY3JlYXRlX3F1ZXVlKG1EaXNwbGF5KTsKKysgICAgbV9mcmFt ZUV2ZW50UXVldWVUaHJlYWQucmVzZXQoCisrICAgICAgICAgICAgbmV3IEV2ZW50VGhyZWFkKG1E aXNwbGF5LCBtX2ZyYW1lRXZlbnRRdWV1ZSwgRXZlbnRUaHJlYWQ6OlNlbGZEaXNwYXRjaCkpOwor KyAgICBtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZC0+c3RhcnQoKTsKKyB9CisgCistdm9pZCBRV2F5 bGFuZERpc3BsYXk6OmRpc3BhdGNoUXVldWVXaGlsZSh3bF9ldmVudF9xdWV1ZSAqcXVldWUsIHN0 ZDo6ZnVuY3Rpb248Ym9vbCAoKT4gY29uZGl0aW9uLCBpbnQgdGltZW91dCkKKyt2b2lkIFFXYXls YW5kRGlzcGxheTo6YmxvY2tpbmdSZWFkRXZlbnRzKCkKKyB7CistICAgIGlmICghY29uZGl0aW9u KCkpCistICAgICAgICByZXR1cm47CistCistICAgIFFFbGFwc2VkVGltZXIgdGltZXI7CistICAg IHRpbWVyLnN0YXJ0KCk7CistICAgIHN0cnVjdCBwb2xsZmQgcEZkID0gcXRfbWFrZV9wb2xsZmQo d2xfZGlzcGxheV9nZXRfZmQobURpc3BsYXkpLCBQT0xMSU4pOworLSAgICB3aGlsZSAodGltZW91 dCA9PSAtMSB8fCB0aW1lci5lbGFwc2VkKCkgPCB0aW1lb3V0KSB7CistICAgICAgICB3aGlsZSAo d2xfZGlzcGxheV9wcmVwYXJlX3JlYWRfcXVldWUobURpc3BsYXksIHF1ZXVlKSAhPSAwKQorLSAg ICAgICAgICAgIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVuZGluZyhtRGlzcGxheSwgcXVl dWUpOworLQorLSAgICAgICAgd2xfZGlzcGxheV9mbHVzaChtRGlzcGxheSk7CistCistICAgICAg ICBjb25zdCBpbnQgcmVtYWluaW5nID0gcU1heCh0aW1lb3V0IC0gdGltZXIuZWxhcHNlZCgpLCAw bGwpOworLSAgICAgICAgY29uc3QgaW50IHBvbGxUaW1lb3V0ID0gdGltZW91dCA9PSAtMSA/IC0x IDogcmVtYWluaW5nOworLSAgICAgICAgaWYgKHF0X3BvbGxfbXNlY3MoJnBGZCwgMSwgcG9sbFRp bWVvdXQpID4gMCkKKy0gICAgICAgICAgICB3bF9kaXNwbGF5X3JlYWRfZXZlbnRzKG1EaXNwbGF5 KTsKKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgICB3bF9kaXNwbGF5X2NhbmNlbF9yZWFkKG1E aXNwbGF5KTsKKy0KKy0gICAgICAgIGlmICh3bF9kaXNwbGF5X2Rpc3BhdGNoX3F1ZXVlX3BlbmRp bmcobURpc3BsYXksIHF1ZXVlKSA8IDApCistICAgICAgICAgICAgY2hlY2tFcnJvcigpOworLQor LSAgICAgICAgaWYgKCFjb25kaXRpb24oKSkKKy0gICAgICAgICAgICBicmVhazsKKy0gICAgfQor KyAgICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaChtRGlzcGxheSkgPCAwKQorKyAgICAgICAgY2hl Y2tXYXlsYW5kRXJyb3IobURpc3BsYXkpOworIH0KKyAKKyBRV2F5bGFuZFNjcmVlbiAqUVdheWxh bmREaXNwbGF5OjpzY3JlZW5Gb3JPdXRwdXQoc3RydWN0IHdsX291dHB1dCAqb3V0cHV0KSBjb25z dAorQEAgLTM0NSw3ICs0OTEsNyBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVnaXN0cnlfZ2xv YmFsKHVpbnQzMl90IGlkLCBjb25zdCBRU3RyaW5nICZpbnRlcmZhY2UsIHVpbgorICAgICBpZiAo aW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ3bF9vdXRwdXQiKSkgeworICAgICAgICAgbVdh aXRpbmdTY3JlZW5zIDw8IG5ldyBRV2F5bGFuZFNjcmVlbih0aGlzLCB2ZXJzaW9uLCBpZCk7Cisg ICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ3bF9jb21wb3NpdG9y IikpIHsKKy0gICAgICAgIG1Db21wb3NpdG9yVmVyc2lvbiA9IHFNaW4oKGludCl2ZXJzaW9uLCAz KTsKKysgICAgICAgIG1Db21wb3NpdG9yVmVyc2lvbiA9IHFNaW4oKGludCl2ZXJzaW9uLCA0KTsK KyAgICAgICAgIG1Db21wb3NpdG9yLmluaXQocmVnaXN0cnksIGlkLCBtQ29tcG9zaXRvclZlcnNp b24pOworICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgid2xfc2ht IikpIHsKKyAgICAgICAgIG1TaG0ucmVzZXQobmV3IFFXYXlsYW5kU2htKHRoaXMsIHZlcnNpb24s IGlkKSk7CitAQCAtMzU0LDcgKzUwMCw3IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZWdpc3Ry eV9nbG9iYWwodWludDMyX3QgaWQsIGNvbnN0IFFTdHJpbmcgJmludGVyZmFjZSwgdWluCisgICAg ICAgICBtSW5wdXREZXZpY2VzLmFwcGVuZChpbnB1dERldmljZSk7CisgI2lmIFFUX0NPTkZJRyh3 YXlsYW5kX2RhdGFkZXZpY2UpCisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdM aXRlcmFsKCJ3bF9kYXRhX2RldmljZV9tYW5hZ2VyIikpIHsKKy0gICAgICAgIG1EbmRTZWxlY3Rp b25IYW5kbGVyLnJlc2V0KG5ldyBRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKHRoaXMsIGlkKSk7 CisrICAgICAgICBtRG5kU2VsZWN0aW9uSGFuZGxlci5yZXNldChuZXcgUVdheWxhbmREYXRhRGV2 aWNlTWFuYWdlcih0aGlzLCB2ZXJzaW9uLCBpZCkpOworICNlbmRpZgorICAgICB9IGVsc2UgaWYg KGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgicXRfc3VyZmFjZV9leHRlbnNpb24iKSkgewor ICAgICAgICAgbVdpbmRvd0V4dGVuc2lvbi5yZXNldChuZXcgUXRXYXlsYW5kOjpxdF9zdXJmYWNl X2V4dGVuc2lvbihyZWdpc3RyeSwgaWQsIDEpKTsKK0BAIC0zNjksNiArNTE1LDggQEAgdm9pZCBR V2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2JhbCh1aW50MzJfdCBpZCwgY29uc3QgUVN0cmlu ZyAmaW50ZXJmYWNlLCB1aW4KKyAjaWYgUVRfQ09ORklHKHdheWxhbmRfY2xpZW50X3ByaW1hcnlf c2VsZWN0aW9uKQorICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgi endwX3ByaW1hcnlfc2VsZWN0aW9uX2RldmljZV9tYW5hZ2VyX3YxIikpIHsKKyAgICAgICAgIG1Q cmltYXJ5U2VsZWN0aW9uTWFuYWdlci5yZXNldChuZXcgUVdheWxhbmRQcmltYXJ5U2VsZWN0aW9u RGV2aWNlTWFuYWdlclYxKHRoaXMsIGlkLCAxKSk7CisrICAgICAgICBmb3IgKFFXYXlsYW5kSW5w dXREZXZpY2UgKmlucHV0RGV2aWNlIDogcUFzQ29uc3QobUlucHV0RGV2aWNlcykpCisrICAgICAg ICAgICAgaW5wdXREZXZpY2UtPnNldFByaW1hcnlTZWxlY3Rpb25EZXZpY2UobVByaW1hcnlTZWxl Y3Rpb25NYW5hZ2VyLT5jcmVhdGVEZXZpY2UoaW5wdXREZXZpY2UpKTsKKyAjZW5kaWYKKyAgICAg fSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoInp3cF90ZXh0X2lucHV0X21h bmFnZXJfdjIiKSAmJiAhbUNsaWVudFNpZGVJbnB1dENvbnRleHRSZXF1ZXN0ZWQpIHsKKyAgICAg ICAgIG1UZXh0SW5wdXRNYW5hZ2VyLnJlc2V0KG5ldyBRdFdheWxhbmQ6Onp3cF90ZXh0X2lucHV0 X21hbmFnZXJfdjIocmVnaXN0cnksIGlkLCAxKSk7CitAQCAtNDI3LDYgKzU3NSwxMyBAQCB2b2lk IFFXYXlsYW5kRGlzcGxheTo6cmVnaXN0cnlfZ2xvYmFsX3JlbW92ZSh1aW50MzJfdCBpZCkKKyAg ICAgICAgICAgICAgICAgICAgIGlucHV0RGV2aWNlLT5zZXRUZXh0SW5wdXQobnVsbHB0cik7Cisg ICAgICAgICAgICAgICAgIG1XYXlsYW5kSW50ZWdyYXRpb24tPnJlY29uZmlndXJlSW5wdXRDb250 ZXh0KCk7CisgICAgICAgICAgICAgfQorKyNpZiBRVF9DT05GSUcod2F5bGFuZF9jbGllbnRfcHJp bWFyeV9zZWxlY3Rpb24pCisrICAgICAgICAgICAgaWYgKGdsb2JhbC5pbnRlcmZhY2UgPT0gUVN0 cmluZ0xpdGVyYWwoInp3cF9wcmltYXJ5X3NlbGVjdGlvbl9kZXZpY2VfbWFuYWdlcl92MSIpKSB7 CisrICAgICAgICAgICAgICAgIG1QcmltYXJ5U2VsZWN0aW9uTWFuYWdlci5yZXNldCgpOworKyAg ICAgICAgICAgICAgICBmb3IgKFFXYXlsYW5kSW5wdXREZXZpY2UgKmlucHV0RGV2aWNlIDogcUFz Q29uc3QobUlucHV0RGV2aWNlcykpCisrICAgICAgICAgICAgICAgICAgICBpbnB1dERldmljZS0+ c2V0UHJpbWFyeVNlbGVjdGlvbkRldmljZShudWxscHRyKTsKKysgICAgICAgICAgICB9CisrI2Vu ZGlmCisgICAgICAgICAgICAgbUdsb2JhbHMucmVtb3ZlQXQoaSk7CisgICAgICAgICAgICAgYnJl YWs7CisgICAgICAgICB9CitAQCAtNDUyLDkgKzYwNywxMCBAQCB2b2lkIFFXYXlsYW5kRGlzcGxh eTo6YWRkUmVnaXN0cnlMaXN0ZW5lcihSZWdpc3RyeUxpc3RlbmVyIGxpc3RlbmVyLCB2b2lkICpk YXRhKQorIAorIHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZW1vdmVMaXN0ZW5lcihSZWdpc3RyeUxp c3RlbmVyIGxpc3RlbmVyLCB2b2lkICpkYXRhKQorIHsKKy0gICAgc3RkOjpyZW1vdmVfaWYobVJl Z2lzdHJ5TGlzdGVuZXJzLmJlZ2luKCksIG1SZWdpc3RyeUxpc3RlbmVycy5lbmQoKSwgWz1dKExp c3RlbmVyIGwpeworKyAgICBhdXRvIGl0ZXIgPSBzdGQ6OnJlbW92ZV9pZihtUmVnaXN0cnlMaXN0 ZW5lcnMuYmVnaW4oKSwgbVJlZ2lzdHJ5TGlzdGVuZXJzLmVuZCgpLCBbPV0oTGlzdGVuZXIgbCl7 CisgICAgICAgICByZXR1cm4gKGwubGlzdGVuZXIgPT0gbGlzdGVuZXIgJiYgbC5kYXRhID09IGRh dGEpOworICAgICB9KTsKKysgICAgbVJlZ2lzdHJ5TGlzdGVuZXJzLmVyYXNlKGl0ZXIsIG1SZWdp c3RyeUxpc3RlbmVycy5lbmQoKSk7CisgfQorIAorIHVpbnQzMl90IFFXYXlsYW5kRGlzcGxheTo6 Y3VycmVudFRpbWVNaWxsaXNlYygpCitAQCAtNDY3LDUwICs2MjMsOSBAQCB1aW50MzJfdCBRV2F5 bGFuZERpc3BsYXk6OmN1cnJlbnRUaW1lTWlsbGlzZWMoKQorICAgICByZXR1cm4gMDsKKyB9Cisg Cistc3RhdGljIHZvaWQKKy1zeW5jX2NhbGxiYWNrKHZvaWQgKmRhdGEsIHN0cnVjdCB3bF9jYWxs YmFjayAqY2FsbGJhY2ssIHVpbnQzMl90IHNlcmlhbCkKKy17CistICAgIFFfVU5VU0VEKHNlcmlh bCkKKy0gICAgYm9vbCAqZG9uZSA9IHN0YXRpY19jYXN0PGJvb2wgKj4oZGF0YSk7CistCistICAg ICpkb25lID0gdHJ1ZTsKKy0KKy0gICAgLy8gSWYgdGhlIHdsX2NhbGxiYWNrIGRvbmUgZXZlbnQg aXMgcmVjZWl2ZWQgYWZ0ZXIgdGhlIGNvbmRpdGlvbiBjaGVjayBpbiB0aGUgd2hpbGUgbG9vcCBp bgorLSAgICAvLyBmb3JjZVJvdW5kVHJpcCgpLCBidXQgYmVmb3JlIHRoZSBjYWxsIHRvIHByb2Nl c3NFdmVudHMsIHRoZSBjYWxsIHRvIHByb2Nlc3NFdmVudHMgbWF5IGJsb2NrCistICAgIC8vIGZv cmV2ZXIgaWYgbm8gbW9yZSBldmVudHMgYXJlIHBvc3RlZCAoZXZlbnRob3VnaCB0aGUgY2FsbGJh Y2sgaXMgaGFuZGxlZCBpbiByZXNwb25zZSB0byB0aGUKKy0gICAgLy8gYWJvdXRUb0Jsb2NrIHNp Z25hbCkuIEhlbmNlLCB3ZSB3YWtlIHVwIHRoZSBldmVudCBkaXNwYXRjaGVyIHNvIGZvcmNlUm91 bmRUcmlwIG1heSByZXR1cm4uCistICAgIC8vIChRVEJVRy02NDY5NikKKy0gICAgaWYgKGF1dG8g KmRpc3BhdGNoZXIgPSBRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCktPmV2ZW50RGlzcGF0Y2hlcigp KQorLSAgICAgICAgZGlzcGF0Y2hlci0+d2FrZVVwKCk7CistCistICAgIHdsX2NhbGxiYWNrX2Rl c3Ryb3koY2FsbGJhY2spOworLX0KKy0KKy1zdGF0aWMgY29uc3Qgc3RydWN0IHdsX2NhbGxiYWNr X2xpc3RlbmVyIHN5bmNfbGlzdGVuZXIgPSB7CistICAgIHN5bmNfY2FsbGJhY2sKKy19OworLQor IHZvaWQgUVdheWxhbmREaXNwbGF5Ojpmb3JjZVJvdW5kVHJpcCgpCisgeworLSAgICAvLyB3bF9k aXNwbGF5X3JvdW5kdHJpcCgpIHdvcmtzIG9uIHRoZSBtYWluIHF1ZXVlIG9ubHksCistICAgIC8v IGJ1dCB3ZSB1c2UgYSBzZXBhcmF0ZSBvbmUsIHNvIGJhc2ljYWxseSByZWltcGxlbWVudCBpdCBo ZXJlCistICAgIGludCByZXQgPSAwOworLSAgICBib29sIGRvbmUgPSBmYWxzZTsKKy0gICAgd2xf Y2FsbGJhY2sgKmNhbGxiYWNrID0gd2xfZGlzcGxheV9zeW5jKG1EaXNwbGF5KTsKKy0gICAgd2xf Y2FsbGJhY2tfYWRkX2xpc3RlbmVyKGNhbGxiYWNrLCAmc3luY19saXN0ZW5lciwgJmRvbmUpOwor LSAgICBmbHVzaFJlcXVlc3RzKCk7CistICAgIGlmIChRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkt PmV2ZW50RGlzcGF0Y2hlcigpKSB7CistICAgICAgICB3aGlsZSAoIWRvbmUgJiYgcmV0ID49IDAp IHsKKy0gICAgICAgICAgICBRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCktPmV2ZW50RGlzcGF0Y2hl cigpLT5wcm9jZXNzRXZlbnRzKFFFdmVudExvb3A6OldhaXRGb3JNb3JlRXZlbnRzKTsKKy0gICAg ICAgICAgICByZXQgPSB3bF9kaXNwbGF5X2Rpc3BhdGNoX3BlbmRpbmcobURpc3BsYXkpOworLSAg ICAgICAgfQorLSAgICB9IGVsc2UgeworLSAgICAgICAgd2hpbGUgKCFkb25lICYmIHJldCA+PSAw KQorLSAgICAgICAgICAgIHJldCA9IHdsX2Rpc3BsYXlfZGlzcGF0Y2gobURpc3BsYXkpOworLSAg ICB9CistCistICAgIGlmIChyZXQgPT0gLTEgJiYgIWRvbmUpCistICAgICAgICB3bF9jYWxsYmFj a19kZXN0cm95KGNhbGxiYWNrKTsKKysgICAgIHdsX2Rpc3BsYXlfcm91bmR0cmlwKG1EaXNwbGF5 KTsKKyB9CisgCisgYm9vbCBRV2F5bGFuZERpc3BsYXk6OnN1cHBvcnRzV2luZG93RGVjb3JhdGlv bigpIGNvbnN0CitAQCAtNTc0LDE0ICs2ODksMTAgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6Omhh bmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kSW5wdXREZXZpY2UgKmlucHV0RGV2aWMK KyAgICAgaWYgKG1MYXN0S2V5Ym9hcmRGb2N1cyA9PSBrZXlib2FyZEZvY3VzKQorICAgICAgICAg cmV0dXJuOworIAorLSAgICBpZiAobVdheWxhbmRJbnRlZ3JhdGlvbi0+bVNoZWxsSW50ZWdyYXRp b24pIHsKKy0gICAgICAgIG1XYXlsYW5kSW50ZWdyYXRpb24tPm1TaGVsbEludGVncmF0aW9uLT5o YW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChrZXlib2FyZEZvY3VzLCBtTGFzdEtleWJvYXJkRm9j dXMpOworLSAgICB9IGVsc2UgeworLSAgICAgICAgaWYgKGtleWJvYXJkRm9jdXMpCistICAgICAg ICAgICAgaGFuZGxlV2luZG93QWN0aXZhdGVkKGtleWJvYXJkRm9jdXMpOworLSAgICAgICAgaWYg KG1MYXN0S2V5Ym9hcmRGb2N1cykKKy0gICAgICAgICAgICBoYW5kbGVXaW5kb3dEZWFjdGl2YXRl ZChtTGFzdEtleWJvYXJkRm9jdXMpOworLSAgICB9CisrICAgIGlmIChrZXlib2FyZEZvY3VzKQor KyAgICAgICAgaGFuZGxlV2luZG93QWN0aXZhdGVkKGtleWJvYXJkRm9jdXMpOworKyAgICBpZiAo bUxhc3RLZXlib2FyZEZvY3VzKQorKyAgICAgICAgaGFuZGxlV2luZG93RGVhY3RpdmF0ZWQobUxh c3RLZXlib2FyZEZvY3VzKTsKKyAKKyAgICAgbUxhc3RLZXlib2FyZEZvY3VzID0ga2V5Ym9hcmRG b2N1czsKKyB9CitAQCAtNjAwLDYgKzcxMSwxOSBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6aGFu ZGxlV2F5bGFuZFN5bmMoKQorICAgICBRV2luZG93ICphY3RpdmVXaW5kb3cgPSBtQWN0aXZlV2lu ZG93cy5lbXB0eSgpID8gbnVsbHB0ciA6IG1BY3RpdmVXaW5kb3dzLmxhc3QoKS0+d2luZG93KCk7 CisgICAgIGlmIChhY3RpdmVXaW5kb3cgIT0gUUd1aUFwcGxpY2F0aW9uOjpmb2N1c1dpbmRvdygp KQorICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlV2luZG93QWN0aXZhdGVk KGFjdGl2ZVdpbmRvdyk7CisrCisrICAgIGlmICghYWN0aXZlV2luZG93KSB7CisrICAgICAgICBp ZiAobGFzdElucHV0RGV2aWNlKCkpIHsKKysjaWYgUVRfQ09ORklHKGNsaXBib2FyZCkKKysgICAg ICAgICAgICBpZiAoYXV0byAqZGF0YURldmljZSA9IGxhc3RJbnB1dERldmljZSgpLT5kYXRhRGV2 aWNlKCkpCisrICAgICAgICAgICAgICAgIGRhdGFEZXZpY2UtPmludmFsaWRhdGVTZWxlY3Rpb25P ZmZlcigpOworKyNlbmRpZgorKyNpZiBRVF9DT05GSUcod2F5bGFuZF9jbGllbnRfcHJpbWFyeV9z ZWxlY3Rpb24pCisrICAgICAgICAgICAgaWYgKGF1dG8gKmRldmljZSA9IGxhc3RJbnB1dERldmlj ZSgpLT5wcmltYXJ5U2VsZWN0aW9uRGV2aWNlKCkpCisrICAgICAgICAgICAgICAgIGRldmljZS0+ aW52YWxpZGF0ZVNlbGVjdGlvbk9mZmVyKCk7CisrI2VuZGlmCisrICAgICAgICB9CisrICAgIH0K KyB9CisgCisgY29uc3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIgUVdheWxhbmREaXNwbGF5OjpzeW5j Q2FsbGJhY2tMaXN0ZW5lciA9IHsKK0BAIC02MjYsNiArNzUwLDEzIEBAIFFXYXlsYW5kSW5wdXRE ZXZpY2UgKlFXYXlsYW5kRGlzcGxheTo6ZGVmYXVsdElucHV0RGV2aWNlKCkgY29uc3QKKyAgICAg cmV0dXJuIG1JbnB1dERldmljZXMuaXNFbXB0eSgpID8gMCA6IG1JbnB1dERldmljZXMuZmlyc3Qo KTsKKyB9CisgCisrYm9vbCBRV2F5bGFuZERpc3BsYXk6OmlzS2V5Ym9hcmRBdmFpbGFibGUoKSBj b25zdAorK3sKKysgICAgcmV0dXJuIHN0ZDo6YW55X29mKAorKyAgICAgICAgICAgIG1JbnB1dERl dmljZXMuY29uc3RCZWdpbigpLCBtSW5wdXREZXZpY2VzLmNvbnN0RW5kKCksCisrICAgICAgICAg ICAgW3RoaXNdKGNvbnN0IFFXYXlsYW5kSW5wdXREZXZpY2UgKmRldmljZSkgeyByZXR1cm4gZGV2 aWNlLT5rZXlib2FyZCgpICE9IG51bGxwdHI7IH0pOworK30KKysKKyAjaWYgUVRfQ09ORklHKGN1 cnNvcikKKyAKKyBRV2F5bGFuZEN1cnNvciAqUVdheWxhbmREaXNwbGF5Ojp3YXlsYW5kQ3Vyc29y KCkKK0BAIC02NTIsNCArNzgzLDYgQEAgUVdheWxhbmRDdXJzb3JUaGVtZSAqUVdheWxhbmREaXNw bGF5Ojpsb2FkQ3Vyc29yVGhlbWUoY29uc3QgUVN0cmluZyAmbmFtZSwgaW50IHAKKyAKKyB9IC8v IG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQKKyAKKysjaW5jbHVkZSAicXdheWxhbmRkaXNwbGF5 Lm1vYyIKKysKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkaXNwbGF5X3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k ZGlzcGxheV9wLmgKK2luZGV4IDNiMDkyYmM4Li40MmJjNjYxZCAxMDA2NDQKKy0tLSBhL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheV9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kZGlzcGxheV9wLmgKK0BAIC0xMDksNiArMTA5LDcgQEAgY2xhc3MgUVdh eWxhbmRTdXJmYWNlOworIGNsYXNzIFFXYXlsYW5kU2hlbGxJbnRlZ3JhdGlvbjsKKyBjbGFzcyBR V2F5bGFuZEN1cnNvcjsKKyBjbGFzcyBRV2F5bGFuZEN1cnNvclRoZW1lOworK2NsYXNzIEV2ZW50 VGhyZWFkOworIAorIHR5cGVkZWYgdm9pZCAoKlJlZ2lzdHJ5TGlzdGVuZXIpKHZvaWQgKmRhdGEs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHdsX3JlZ2lzdHJ5ICpy ZWdpc3RyeSwKK0BAIC0xMjAsMTUgKzEyMSwxMSBAQCBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VY UE9SVCBRV2F5bGFuZERpc3BsYXkgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIFF0V2F5bGFuZAor ICAgICBRX09CSkVDVAorIAorIHB1YmxpYzoKKy0gICAgc3RydWN0IEZyYW1lUXVldWUgeworLSAg ICAgICAgRnJhbWVRdWV1ZSh3bF9ldmVudF9xdWV1ZSAqcSA9IG51bGxwdHIpIDogcXVldWUocSks IG11dGV4KG5ldyBRTXV0ZXgpIHt9CistICAgICAgICB3bF9ldmVudF9xdWV1ZSAqcXVldWU7Cist ICAgICAgICBRTXV0ZXggKm11dGV4OworLSAgICB9OworLQorICAgICBRV2F5bGFuZERpc3BsYXko UVdheWxhbmRJbnRlZ3JhdGlvbiAqd2F5bGFuZEludGVncmF0aW9uKTsKKyAgICAgflFXYXlsYW5k RGlzcGxheSh2b2lkKSBvdmVycmlkZTsKKyAKKysgICAgdm9pZCBpbml0aWFsaXplKCk7CisrCisg I2lmIFFUX0NPTkZJRyh4a2Jjb21tb24pCisgICAgIHN0cnVjdCB4a2JfY29udGV4dCAqeGtiQ29u dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1Ya2JDb250ZXh0LmdldCgpOyB9CisgI2VuZGlmCitAQCAt MjEwLDExICsyMDcsMTEgQEAgcHVibGljOgorICAgICB2b2lkIGhhbmRsZUtleWJvYXJkRm9jdXND aGFuZ2VkKFFXYXlsYW5kSW5wdXREZXZpY2UgKmlucHV0RGV2aWNlKTsKKyAgICAgdm9pZCBoYW5k bGVXaW5kb3dEZXN0cm95ZWQoUVdheWxhbmRXaW5kb3cgKndpbmRvdyk7CisgCistICAgIHdsX2V2 ZW50X3F1ZXVlICpjcmVhdGVFdmVudFF1ZXVlKCk7CistICAgIEZyYW1lUXVldWUgY3JlYXRlRnJh bWVRdWV1ZSgpOworLSAgICB2b2lkIGRlc3Ryb3lGcmFtZVF1ZXVlKGNvbnN0IEZyYW1lUXVldWUg JnEpOworLSAgICB2b2lkIGRpc3BhdGNoUXVldWVXaGlsZSh3bF9ldmVudF9xdWV1ZSAqcXVldWUs IHN0ZDo6ZnVuY3Rpb248Ym9vbCgpPiBjb25kaXRpb24sIGludCB0aW1lb3V0ID0gLTEpOworKyAg ICB3bF9ldmVudF9xdWV1ZSAqZnJhbWVFdmVudFF1ZXVlKCkgeyByZXR1cm4gbV9mcmFtZUV2ZW50 UXVldWU7IH07CisrCisrICAgIGJvb2wgaXNLZXlib2FyZEF2YWlsYWJsZSgpIGNvbnN0OworIAor KyAgICB2b2lkIGluaXRFdmVudFRocmVhZCgpOworIHB1YmxpYyBzbG90czoKKyAgICAgdm9pZCBi bG9ja2luZ1JlYWRFdmVudHMoKTsKKyAgICAgdm9pZCBmbHVzaFJlcXVlc3RzKCk7CitAQCAtMjM3 LDYgKzIzNCw5IEBAIHByaXZhdGU6CisgICAgIH07CisgCisgICAgIHN0cnVjdCB3bF9kaXNwbGF5 ICptRGlzcGxheSA9IG51bGxwdHI7CisrICAgIFFTY29wZWRQb2ludGVyPEV2ZW50VGhyZWFkPiBt X2V2ZW50VGhyZWFkOworKyAgICB3bF9ldmVudF9xdWV1ZSAqbV9mcmFtZUV2ZW50UXVldWUgPSBu dWxscHRyOworKyAgICBRU2NvcGVkUG9pbnRlcjxFdmVudFRocmVhZD4gbV9mcmFtZUV2ZW50UXVl dWVUaHJlYWQ7CisgICAgIFF0V2F5bGFuZDo6d2xfY29tcG9zaXRvciBtQ29tcG9zaXRvcjsKKyAg ICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRTaG0+IG1TaG07CisgICAgIFFMaXN0PFFXYXlsYW5k U2NyZWVuICo+IG1XYWl0aW5nU2NyZWVuczsKK0BAIC0yNzMsMTEgKzI3Myw5IEBAIHByaXZhdGU6 CisgICAgIFFXYXlsYW5kSW5wdXREZXZpY2UgKm1MYXN0SW5wdXREZXZpY2UgPSBudWxscHRyOwor ICAgICBRUG9pbnRlcjxRV2F5bGFuZFdpbmRvdz4gbUxhc3RJbnB1dFdpbmRvdzsKKyAgICAgUVBv aW50ZXI8UVdheWxhbmRXaW5kb3c+IG1MYXN0S2V5Ym9hcmRGb2N1czsKKy0gICAgUVZlY3RvcjxR V2F5bGFuZFdpbmRvdyAqPiBtQWN0aXZlV2luZG93czsKKy0gICAgUVZlY3RvcjxGcmFtZVF1ZXVl PiBtRXh0ZXJuYWxRdWV1ZXM7CisrICAgIFFMaXN0PFFXYXlsYW5kV2luZG93ICo+IG1BY3RpdmVX aW5kb3dzOworICAgICBzdHJ1Y3Qgd2xfY2FsbGJhY2sgKm1TeW5jQ2FsbGJhY2sgPSBudWxscHRy OworICAgICBzdGF0aWMgY29uc3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIgc3luY0NhbGxiYWNrTGlz dGVuZXI7CistICAgIFFSZWFkV3JpdGVMb2NrIG1fZnJhbWVRdWV1ZUxvY2s7CisgCisgICAgIGJv b2wgbUNsaWVudFNpZGVJbnB1dENvbnRleHRSZXF1ZXN0ZWQgPSAhUVBsYXRmb3JtSW5wdXRDb250 ZXh0RmFjdG9yeTo6cmVxdWVzdGVkKCkuaXNOdWxsKCk7CisgCitkaWZmIC0tZ2l0IGEvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmQuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkbmQuY3BwCitpbmRleCA2NTM1YWExNi4uN2M1M2Y1ZmEgMTAwNjQ0CistLS0gYS9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZC5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZG5kLmNwcAorQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBRV2F5bGFuZERyYWc6 OnN0YXJ0RHJhZygpCisgeworICAgICBRQmFzaWNEcmFnOjpzdGFydERyYWcoKTsKKyAgICAgUVdh eWxhbmRXaW5kb3cgKmljb24gPSBzdGF0aWNfY2FzdDxRV2F5bGFuZFdpbmRvdyAqPihzaGFwZWRQ aXhtYXBXaW5kb3coKS0+aGFuZGxlKCkpOworLSAgICBpZiAobV9kaXNwbGF5LT5jdXJyZW50SW5w dXREZXZpY2UoKS0+ZGF0YURldmljZSgpLT5zdGFydERyYWcoZHJhZygpLT5taW1lRGF0YSgpLCBp Y29uKSkgeworKyAgICBpZiAobV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+ZGF0YURl dmljZSgpLT5zdGFydERyYWcoZHJhZygpLT5taW1lRGF0YSgpLCBkcmFnKCktPnN1cHBvcnRlZEFj dGlvbnMoKSwgaWNvbikpIHsKKyAgICAgICAgIGljb24tPmFkZEF0dGFjaE9mZnNldCgtZHJhZygp LT5ob3RTcG90KCkpOworICAgICB9IGVsc2UgeworICAgICAgICAgLy8gQ2FuY2VsbGluZyBpbW1l ZGlhdGVseSBkb2VzIG5vdCB3b3JrLCBzaW5jZSB0aGUgZXZlbnQgbG9vcCBmb3IgUURyYWc6OmV4 ZWMgaXMgc3RhcnRlZAorQEAgLTgwLDYgKzgwLDkgQEAgdm9pZCBRV2F5bGFuZERyYWc6OmNhbmNl bCgpCisgICAgIFFCYXNpY0RyYWc6OmNhbmNlbCgpOworIAorICAgICBtX2Rpc3BsYXktPmN1cnJl bnRJbnB1dERldmljZSgpLT5kYXRhRGV2aWNlKCktPmNhbmNlbERyYWcoKTsKKysKKysgICAgaWYg KGRyYWcoKSkKKysgICAgICAgIGRyYWcoKS0+ZGVsZXRlTGF0ZXIoKTsKKyB9CisgCisgdm9pZCBR V2F5bGFuZERyYWc6Om1vdmUoY29uc3QgUVBvaW50ICZnbG9iYWxQb3MsIFF0OjpNb3VzZUJ1dHRv bnMgYiwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZHMpCitAQCAtMTAzLDMzICsxMDYsNDEgQEAg dm9pZCBRV2F5bGFuZERyYWc6OmVuZERyYWcoKQorICAgICBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1 dERldmljZSgpLT5oYW5kbGVFbmREcmFnKCk7CisgfQorIAorLXZvaWQgUVdheWxhbmREcmFnOjp1 cGRhdGVUYXJnZXQoY29uc3QgUVN0cmluZyAmbWltZVR5cGUpCisrdm9pZCBRV2F5bGFuZERyYWc6 OnNldFJlc3BvbnNlKGJvb2wgYWNjZXB0ZWQpCisgeworLSAgICBzZXRDYW5Ecm9wKCFtaW1lVHlw ZS5pc0VtcHR5KCkpOworLQorLSAgICBpZiAoY2FuRHJvcCgpKSB7CistICAgICAgICB1cGRhdGVD dXJzb3IoZGVmYXVsdEFjdGlvbihkcmFnKCktPnN1cHBvcnRlZEFjdGlvbnMoKSwgbV9kaXNwbGF5 LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+bW9kaWZpZXJzKCkpKTsKKy0gICAgfSBlbHNlIHsKKy0g ICAgICAgIHVwZGF0ZUN1cnNvcihRdDo6SWdub3JlQWN0aW9uKTsKKy0gICAgfQorKyAgICAvLyBU aGlzIG1ldGhvZCBpcyB1c2VkIGZvciBvbGQgRGF0YURldmljZXMgd2hlcmUgdGhlIGRyYWcgYWN0 aW9uIGlzIG5vdCBjb21tdW5pY2F0ZWQKKysgICAgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uID0gZGVm YXVsdEFjdGlvbihkcmFnKCktPnN1cHBvcnRlZEFjdGlvbnMoKSwgbV9kaXNwbGF5LT5jdXJyZW50 SW5wdXREZXZpY2UoKS0+bW9kaWZpZXJzKCkpOworKyAgICBzZXRSZXNwb25zZShRUGxhdGZvcm1E cm9wUXRSZXNwb25zZShhY2NlcHRlZCwgYWN0aW9uKSk7CisgfQorIAorLXZvaWQgUVdheWxhbmRE cmFnOjpzZXRSZXNwb25zZShjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVzcG9uc2Up Cisrdm9pZCBRV2F5bGFuZERyYWc6OnNldFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJl c3BvbnNlICZyZXNwb25zZSkKKyB7CisgICAgIHNldENhbkRyb3AocmVzcG9uc2UuaXNBY2NlcHRl ZCgpKTsKKyAKKyAgICAgaWYgKGNhbkRyb3AoKSkgeworLSAgICAgICAgdXBkYXRlQ3Vyc29yKGRl ZmF1bHRBY3Rpb24oZHJhZygpLT5zdXBwb3J0ZWRBY3Rpb25zKCksIG1fZGlzcGxheS0+Y3VycmVu dElucHV0RGV2aWNlKCktPm1vZGlmaWVycygpKSk7CisrICAgICAgICB1cGRhdGVDdXJzb3IocmVz cG9uc2UuYWNjZXB0ZWRBY3Rpb24oKSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICB1cGRhdGVD dXJzb3IoUXQ6Oklnbm9yZUFjdGlvbik7CisgICAgIH0KKyB9CisgCistdm9pZCBRV2F5bGFuZERy YWc6OmZpbmlzaERyYWcoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKQor K3ZvaWQgUVdheWxhbmREcmFnOjpzZXREcm9wUmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0 UmVzcG9uc2UgJnJlc3BvbnNlKQorIHsKKyAgICAgc2V0RXhlY3V0ZWREcm9wQWN0aW9uKHJlc3Bv bnNlLmFjY2VwdGVkQWN0aW9uKCkpOworK30KKysKKyt2b2lkIFFXYXlsYW5kRHJhZzo6ZmluaXNo RHJhZygpCisreworICAgICBRS2V5RXZlbnQgZXZlbnQoUUV2ZW50OjpLZXlQcmVzcywgUXQ6Oktl eV9Fc2NhcGUsIFF0OjpOb01vZGlmaWVyKTsKKyAgICAgZXZlbnRGaWx0ZXIoc2hhcGVkUGl4bWFw V2luZG93KCksICZldmVudCk7CisrCisrICAgIGlmIChkcmFnKCkpCisrICAgICAgICBkcmFnKCkt PmRlbGV0ZUxhdGVyKCk7CisrfQorKworK2Jvb2wgUVdheWxhbmREcmFnOjpvd25zRHJhZ09iamVj dCgpIGNvbnN0CisreworKyAgICByZXR1cm4gdHJ1ZTsKKyB9CisgCisgfQorZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZG5kX3AuaAoraW5kZXggNDc0ZmUyYWIuLjQ2ZjYyOWFjIDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmRfcC5oCisrKysgYi9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZGRuZF9wLmgKK0BAIC03MSw5ICs3MSwxMCBAQCBwdWJsaWM6Cisg ICAgIFFXYXlsYW5kRHJhZyhRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpOworICAgICB+UVdheWxh bmREcmFnKCkgb3ZlcnJpZGU7CisgCistICAgIHZvaWQgdXBkYXRlVGFyZ2V0KGNvbnN0IFFTdHJp bmcgJm1pbWVUeXBlKTsKKy0gICAgdm9pZCBzZXRSZXNwb25zZShjb25zdCBRUGxhdGZvcm1EcmFn UXRSZXNwb25zZSAmcmVzcG9uc2UpOworLSAgICB2b2lkIGZpbmlzaERyYWcoY29uc3QgUVBsYXRm b3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKysgICAgdm9pZCBzZXRSZXNwb25zZShib29s IGFjY2VwdGVkKTsKKysgICAgdm9pZCBzZXRSZXNwb25zZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRS ZXNwb25zZSAmcmVzcG9uc2UpOworKyAgICB2b2lkIHNldERyb3BSZXNwb25zZShjb25zdCBRUGxh dGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpOworKyAgICB2b2lkIGZpbmlzaERyYWcoKTsK KyAKKyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgc3RhcnREcmFnKCkgb3ZlcnJpZGU7CitAQCAtODIs NiArODMsNyBAQCBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgZHJvcChjb25zdCBRUG9pbnQgJmdsb2Jh bFBvcywgUXQ6Ok1vdXNlQnV0dG9ucyBiLCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kcykgb3Zl cnJpZGU7CisgICAgIHZvaWQgZW5kRHJhZygpIG92ZXJyaWRlOworIAorKyAgICBib29sIG93bnNE cmFnT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAgICAgUVdheWxhbmRE aXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRyOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kaW5wdXRkZXZpY2UuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRpbnB1dGRldmljZS5jcHAKK2luZGV4IDYxM2ZlODYyLi40YjkwZGU4NCAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5wdXRkZXZpY2UuY3BwCisrKysgYi9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGlucHV0ZGV2aWNlLmNwcAorQEAgLTY4NSw2ICs2 ODUsMTEgQEAgcHVibGljOgorIAorIHZvaWQgUVdheWxhbmRJbnB1dERldmljZTo6UG9pbnRlcjo6 cG9pbnRlcl9sZWF2ZSh1aW50MzJfdCB0aW1lLCBzdHJ1Y3Qgd2xfc3VyZmFjZSAqc3VyZmFjZSkK KyB7CisrICAgIGludmFsaWRhdGVGb2N1cygpOworKyAgICBtQnV0dG9ucyA9IFF0OjpOb0J1dHRv bjsKKysKKysgICAgbVBhcmVudC0+bVRpbWUgPSB0aW1lOworKworICAgICAvLyBUaGUgZXZlbnQg bWF5IGFycml2ZSBhZnRlciBkZXN0cm95aW5nIHRoZSB3aW5kb3csIGluZGljYXRlZCBieQorICAg ICAvLyBhIG51bGwgc3VyZmFjZS4KKyAgICAgaWYgKCFzdXJmYWNlKQorQEAgLTY5NiwxMSArNzAx LDYgQEAgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpQb2ludGVyOjpwb2ludGVyX2xlYXZlKHVp bnQzMl90IHRpbWUsIHN0cnVjdCB3bF9zdXJmYWMKKyAKKyAgICAgaWYgKCFRV2F5bGFuZFdpbmRv dzo6bW91c2VHcmFiKCkpCisgICAgICAgICBzZXRGcmFtZUV2ZW50KG5ldyBMZWF2ZUV2ZW50KHdp bmRvdywgbVN1cmZhY2VQb3MsIG1HbG9iYWxQb3MpKTsKKy0KKy0gICAgaW52YWxpZGF0ZUZvY3Vz KCk7CistICAgIG1CdXR0b25zID0gUXQ6Ok5vQnV0dG9uOworLQorLSAgICBtUGFyZW50LT5tVGlt ZSA9IHRpbWU7CisgfQorIAorIGNsYXNzIE1vdGlvbkV2ZW50IDogcHVibGljIFFXYXlsYW5kUG9p bnRlckV2ZW50CitAQCAtMTMwMCwxNCArMTMwMCw2IEBAIHZvaWQgUVdheWxhbmRJbnB1dERldmlj ZTo6S2V5Ym9hcmQ6OmhhbmRsZUZvY3VzRGVzdHJveWVkKCkKKyB2b2lkIFFXYXlsYW5kSW5wdXRE ZXZpY2U6OktleWJvYXJkOjpoYW5kbGVGb2N1c0xvc3QoKQorIHsKKyAgICAgbUZvY3VzID0gbnVs bHB0cjsKKy0jaWYgUVRfQ09ORklHKGNsaXBib2FyZCkKKy0gICAgaWYgKGF1dG8gKmRhdGFEZXZp Y2UgPSBtUGFyZW50LT5kYXRhRGV2aWNlKCkpCistICAgICAgICBkYXRhRGV2aWNlLT5pbnZhbGlk YXRlU2VsZWN0aW9uT2ZmZXIoKTsKKy0jZW5kaWYKKy0jaWYgUVRfQ09ORklHKHdheWxhbmRfY2xp ZW50X3ByaW1hcnlfc2VsZWN0aW9uKQorLSAgICBpZiAoYXV0byAqZGV2aWNlID0gbVBhcmVudC0+ cHJpbWFyeVNlbGVjdGlvbkRldmljZSgpKQorLSAgICAgICAgZGV2aWNlLT5pbnZhbGlkYXRlU2Vs ZWN0aW9uT2ZmZXIoKTsKKy0jZW5kaWYKKyAgICAgbVBhcmVudC0+bVFEaXNwbGF5LT5oYW5kbGVL ZXlib2FyZEZvY3VzQ2hhbmdlZChtUGFyZW50KTsKKyAgICAgbVJlcGVhdFRpbWVyLnN0b3AoKTsK KyB9CitAQCAtMTM5Niw2ICsxMzg4LDcgQEAgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpUb3Vj aDo6dG91Y2hfY2FuY2VsKCkKKyAgICAgaWYgKHRvdWNoRXh0KQorICAgICAgICAgdG91Y2hFeHQt PnRvdWNoQ2FuY2VsZWQoKTsKKyAKKysgICAgbUZvY3VzID0gbnVsbHB0cjsKKyAgICAgUVdpbmRv d1N5c3RlbUludGVyZmFjZTo6aGFuZGxlVG91Y2hDYW5jZWxFdmVudChudWxscHRyLCBtUGFyZW50 LT5tVG91Y2hEZXZpY2UpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k aW50ZWdyYXRpb24uY3BwCitpbmRleCBjNTNjY2I3OC4uNTQ4NjE2MDAgMTAwNjQ0CistLS0gYS9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uLmNwcAorKysrIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbi5jcHAKK0BAIC0xMjUsNiArMTI1LDkg QEAgUVdheWxhbmRJbnRlZ3JhdGlvbjo6UVdheWxhbmRJbnRlZ3JhdGlvbigpCisgI2VuZGlmCisg CisgICAgIHJlY29uZmlndXJlSW5wdXRDb250ZXh0KCk7CisrCisrICAgIFFXYXlsYW5kV2luZG93 OjpmaXhlZFRvcGxldmVsUG9zaXRpb25zID0KKysgICAgICAgICAgICAhcUVudmlyb25tZW50VmFy aWFibGVJc1NldCgiUVRfV0FZTEFORF9ESVNBQkxFX0ZJWEVEX1BPU0lUSU9OUyIpOworIH0KKyAK KyBRV2F5bGFuZEludGVncmF0aW9uOjp+UVdheWxhbmRJbnRlZ3JhdGlvbigpCitAQCAtMTkyLDE0 ICsxOTUsMTggQEAgUUFic3RyYWN0RXZlbnREaXNwYXRjaGVyICpRV2F5bGFuZEludGVncmF0aW9u OjpjcmVhdGVFdmVudERpc3BhdGNoZXIoKSBjb25zdAorIAorIHZvaWQgUVdheWxhbmRJbnRlZ3Jh dGlvbjo6aW5pdGlhbGl6ZSgpCisgeworKyAgICBtRGlzcGxheS0+aW5pdEV2ZW50VGhyZWFkKCk7 CisrCisrICAgIC8vIENhbGwgYWZ0ZXIgZXZlbnREaXNwYXRjaGVyIGlzIGZ1bGx5IGNvbm5lY3Rl ZCwgZm9yIFFXYXlsYW5kRGlzcGxheTo6Zm9yY2VSb3VuZFRyaXAoKQorKyAgICBtRGlzcGxheS0+ aW5pdGlhbGl6ZSgpOworKworKyAgICAvLyBCdXQgdGhlIGFib3V0VG9CbG9jaygpIGFuZCBhd2Fr ZSgpIHNob3VsZCBiZSBjb25uZWN0ZWQgYWZ0ZXIgaW5pdGlhbGl6ZVBsYXRmb3JtKCkuCisrICAg IC8vIE90aGVyd2lzZSB0aGUgY29ubmVjdGVkIGZsdXNoUmVxdWVzdHMoKSBtYXkgY29uc3VtZXMg dXAgYWxsIGV2ZW50cyBiZWZvcmUgcHJvY2Vzc0V2ZW50cyBzdGFydHMgdG8gd2FpdCwKKysgICAg Ly8gc28gdGhhdCBwcm9jZXNzRXZlbnRzKFFFdmVudExvb3A6OldhaXRGb3JNb3JlRXZlbnRzKSBt YXkgYmUgYmxvY2tlZCBpbiB0aGUgZm9yY2VSb3VuZFRyaXAoKS4KKyAgICAgUUFic3RyYWN0RXZl bnREaXNwYXRjaGVyICpkaXNwYXRjaGVyID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6ZXZlbnRE aXNwYXRjaGVyOworICAgICBRT2JqZWN0Ojpjb25uZWN0KGRpc3BhdGNoZXIsIFNJR05BTChhYm91 dFRvQmxvY2soKSksIG1EaXNwbGF5LmRhdGEoKSwgU0xPVChmbHVzaFJlcXVlc3RzKCkpKTsKKyAg ICAgUU9iamVjdDo6Y29ubmVjdChkaXNwYXRjaGVyLCBTSUdOQUwoYXdha2UoKSksIG1EaXNwbGF5 LmRhdGEoKSwgU0xPVChmbHVzaFJlcXVlc3RzKCkpKTsKKyAKKy0gICAgaW50IGZkID0gd2xfZGlz cGxheV9nZXRfZmQobURpc3BsYXktPndsX2Rpc3BsYXkoKSk7CistICAgIFFTb2NrZXROb3RpZmll ciAqc24gPSBuZXcgUVNvY2tldE5vdGlmaWVyKGZkLCBRU29ja2V0Tm90aWZpZXI6OlJlYWQsIG1E aXNwbGF5LmRhdGEoKSk7CistICAgIFFPYmplY3Q6OmNvbm5lY3Qoc24sIFNJR05BTChhY3RpdmF0 ZWQoUVNvY2tldERlc2NyaXB0b3IpKSwgbURpc3BsYXkuZGF0YSgpLCBTTE9UKGZsdXNoUmVxdWVz dHMoKSkpOworLQorICAgICAvLyBRdCBkb2VzIG5vdCBzdXBwb3J0IHJ1bm5pbmcgd2l0aCBubyBz Y3JlZW5zCisgICAgIG1EaXNwbGF5LT5lbnN1cmVTY3JlZW4oKTsKKyB9CitAQCAtMjYyLDYgKzI2 OSwxNCBAQCBRV2F5bGFuZERpc3BsYXkgKlFXYXlsYW5kSW50ZWdyYXRpb246OmRpc3BsYXkoKSBj b25zdAorICAgICByZXR1cm4gbURpc3BsYXkuZGF0YSgpOworIH0KKyAKKytRdDo6S2V5Ym9hcmRN b2RpZmllcnMgUVdheWxhbmRJbnRlZ3JhdGlvbjo6cXVlcnlLZXlib2FyZE1vZGlmaWVycygpIGNv bnN0CisreworKyAgICBpZiAoYXV0byAqc2VhdCA9IG1EaXNwbGF5LT5jdXJyZW50SW5wdXREZXZp Y2UoKSkgeworKyAgICAgICAgcmV0dXJuIHNlYXQtPm1vZGlmaWVycygpOworKyAgICB9CisrICAg IHJldHVybiBRdDo6Tm9Nb2RpZmllcjsKKyt9CisrCisgUUxpc3Q8aW50PiBRV2F5bGFuZEludGVn cmF0aW9uOjpwb3NzaWJsZUtleXMoY29uc3QgUUtleUV2ZW50ICpldmVudCkgY29uc3QKKyB7Cisg ICAgIGlmIChhdXRvICpzZWF0ID0gbURpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpKQorQEAg LTQ3OSw3ICs0OTQsNyBAQCB2b2lkIFFXYXlsYW5kSW50ZWdyYXRpb246OnJlY29uZmlndXJlSW5w dXRDb250ZXh0KCkKKyAgICAgfQorICNlbmRpZgorIAorLSAgICBxQ0RlYnVnKGxjUXBhV2F5bGFu ZCkgPDwgInVzaW5nIGlucHV0IG1ldGhvZDoiIDw8IGlucHV0Q29udGV4dCgpLT5tZXRhT2JqZWN0 KCktPmNsYXNzTmFtZSgpOworKyAgICBxQ0RlYnVnKGxjUXBhV2F5bGFuZCkgPDwgInVzaW5nIGlu cHV0IG1ldGhvZDoiIDw8IChpbnB1dENvbnRleHQoKSA/IGlucHV0Q29udGV4dCgpLT5tZXRhT2Jq ZWN0KCktPmNsYXNzTmFtZSgpIDogIjxub25lPiIpOworIH0KKyAKKyBRV2F5bGFuZFNoZWxsSW50 ZWdyYXRpb24gKlFXYXlsYW5kSW50ZWdyYXRpb246OmNyZWF0ZVNoZWxsSW50ZWdyYXRpb24oY29u c3QgUVN0cmluZyAmaW50ZWdyYXRpb25OYW1lKQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IGZmNzBhZTI1Li43M2I4MDY1OCAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb25fcC5oCisrKysgYi9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uX3AuaAorQEAgLTEwNyw2ICsx MDcsOCBAQCBwdWJsaWM6CisgCisgICAgIFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSgpIGNvbnN0 OworIAorKyAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgcXVlcnlLZXlib2FyZE1vZGlmaWVycygp IGNvbnN0IG92ZXJyaWRlOworKworICAgICBRTGlzdDxpbnQ+IHBvc3NpYmxlS2V5cyhjb25zdCBR S2V5RXZlbnQgKmV2ZW50KSBjb25zdCBvdmVycmlkZTsKKyAKKyAgICAgUVN0cmluZ0xpc3QgdGhl bWVOYW1lcygpIGNvbnN0IG92ZXJyaWRlOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYxLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYxLmNwcAoraW5kZXggODMyZjk2NzguLmVhNTA4Nzcx IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRwcmltYXJ5c2VsZWN0 aW9udjEuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHByaW1hcnlzZWxl Y3Rpb252MS5jcHAKK0BAIC01NCwxMSArNTQsNiBAQCBRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25E ZXZpY2VNYW5hZ2VyVjE6OlFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZU1hbmFnZXJWMQor ICAgICA6IHp3cF9wcmltYXJ5X3NlbGVjdGlvbl9kZXZpY2VfbWFuYWdlcl92MShkaXNwbGF5LT53 bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9uLCB1aW50KDEpKSkKKyAgICAgLCBtX2Rpc3Bs YXkoZGlzcGxheSkKKyB7CistICAgIC8vIENyZWF0ZSBkZXZpY2VzIGZvciBhbGwgc2VhdHMuCist ICAgIC8vIFRoaXMgb25seSB3b3JrcyBpZiB3ZSBnZXQgdGhlIGdsb2JhbCBiZWZvcmUgYWxsIGRl dmljZXMKKy0gICAgY29uc3QgYXV0byBzZWF0cyA9IG1fZGlzcGxheS0+aW5wdXREZXZpY2VzKCk7 CistICAgIGZvciAoYXV0byAqc2VhdCA6IHNlYXRzKQorLSAgICAgICAgc2VhdC0+c2V0UHJpbWFy eVNlbGVjdGlvbkRldmljZShjcmVhdGVEZXZpY2Uoc2VhdCkpOworIH0KKyAKKyBRV2F5bGFuZFBy aW1hcnlTZWxlY3Rpb25EZXZpY2VWMSAqUVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlTWFu YWdlclYxOjpjcmVhdGVEZXZpY2UoUVdheWxhbmRJbnB1dERldmljZSAqc2VhdCkKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbi5jcHAgYi9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbi5jcHAKK2luZGV4IDZjYjMzN2RlLi41NTM3ZGFmZCAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuLmNwcAorKysr IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW4uY3BwCitAQCAtNjAsNyArNjAs NyBAQCBRV2F5bGFuZFhkZ091dHB1dE1hbmFnZXJWMTo6UVdheWxhbmRYZGdPdXRwdXRNYW5hZ2Vy VjEoUVdheWxhbmREaXNwbGF5KiBkaXNwbGF5LAorIH0KKyAKKyBRV2F5bGFuZFNjcmVlbjo6UVdh eWxhbmRTY3JlZW4oUVdheWxhbmREaXNwbGF5ICp3YXlsYW5kRGlzcGxheSwgaW50IHZlcnNpb24s IHVpbnQzMl90IGlkKQorLSAgICA6IFF0V2F5bGFuZDo6d2xfb3V0cHV0KHdheWxhbmREaXNwbGF5 LT53bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9uLCAyKSkKKysgICAgOiBRdFdheWxhbmQ6 OndsX291dHB1dCh3YXlsYW5kRGlzcGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIHFNaW4odmVyc2lv biwgMykpCisgICAgICwgbV9vdXRwdXRJZChpZCkKKyAgICAgLCBtV2F5bGFuZERpc3BsYXkod2F5 bGFuZERpc3BsYXkpCisgICAgICwgbU91dHB1dE5hbWUoUVN0cmluZ0xpdGVyYWwoIlNjcmVlbiUx IikuYXJnKGlkKSkKK0BAIC03Miw3ICs3Miw3IEBAIFFXYXlsYW5kU2NyZWVuOjpRV2F5bGFuZFNj cmVlbihRV2F5bGFuZERpc3BsYXkgKndheWxhbmREaXNwbGF5LCBpbnQgdmVyc2lvbiwgdWluCisg ICAgICAgICBxQ1dhcm5pbmcobGNRcGFXYXlsYW5kKSA8PCAid2xfb3V0cHV0IGRvbmUgZXZlbnQg bm90IHN1cHBvcnRlZCBieSBjb21wb3NpdG9yLCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDw8ICJRU2NyZWVuIG1heSBub3Qgd29yayBjb3JyZWN0bHkiOworICAgICAgICAgbVdh eWxhbmREaXNwbGF5LT5mb3JjZVJvdW5kVHJpcCgpOyAvLyBHaXZlIHRoZSBjb21wb3NpdG9yIGEg Y2hhbmNlIHRvIHNlbmQgZ2VvbWV0cnkgZXRjLgorLSAgICAgICAgbU91dHB1dERvbmUgPSB0cnVl OyAvLyBGYWtlIHRoZSBkb25lIGV2ZW50CisrICAgICAgICBtUHJvY2Vzc2VkRXZlbnRzIHw9IE91 dHB1dERvbmVFdmVudDsgLy8gRmFrZSB0aGUgZG9uZSBldmVudAorICAgICAgICAgbWF5YmVJbml0 aWFsaXplKCk7CisgICAgIH0KKyB9CitAQCAtODEsMTYgKzgxLDI5IEBAIFFXYXlsYW5kU2NyZWVu Ojp+UVdheWxhbmRTY3JlZW4oKQorIHsKKyAgICAgaWYgKHp4ZGdfb3V0cHV0X3YxOjppc0luaXRp YWxpemVkKCkpCisgICAgICAgICB6eGRnX291dHB1dF92MTo6ZGVzdHJveSgpOworKyAgICBpZiAo d2xfb3V0cHV0Ojppc0luaXRpYWxpemVkKCkgJiYgd2xfb3V0cHV0X2dldF92ZXJzaW9uKHdsX291 dHB1dDo6b2JqZWN0KCkpID49IFdMX09VVFBVVF9SRUxFQVNFX1NJTkNFX1ZFUlNJT04pCisrICAg ICAgICB3bF9vdXRwdXQ6OnJlbGVhc2UoKTsKKyt9CisrCisrdWludCBRV2F5bGFuZFNjcmVlbjo6 cmVxdWlyZWRFdmVudHMoKSBjb25zdAorK3sKKysgICAgdWludCByZXQgPSBPdXRwdXREb25lRXZl bnQ7CisrCisrICAgIGlmIChtV2F5bGFuZERpc3BsYXktPnhkZ091dHB1dE1hbmFnZXIoKSkgewor KyAgICAgICAgcmV0IHw9IFhkZ091dHB1dE5hbWVFdmVudDsKKysKKysgICAgICAgIGlmIChtV2F5 bGFuZERpc3BsYXktPnhkZ091dHB1dE1hbmFnZXIoKS0+dmVyc2lvbigpIDwgMykKKysgICAgICAg ICAgICByZXQgfD0gWGRnT3V0cHV0RG9uZUV2ZW50OworKyAgICB9CisrICAgIHJldHVybiByZXQ7 CisgfQorIAorIHZvaWQgUVdheWxhbmRTY3JlZW46Om1heWJlSW5pdGlhbGl6ZSgpCisgeworICAg ICBRX0FTU0VSVCghbUluaXRpYWxpemVkKTsKKyAKKy0gICAgaWYgKCFtT3V0cHV0RG9uZSkKKy0g ICAgICAgIHJldHVybjsKKy0KKy0gICAgaWYgKG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFu YWdlcigpICYmICFtWGRnT3V0cHV0RG9uZSkKKysgICAgY29uc3QgdWludCByZXF1aXJlZEV2ZW50 cyA9IHRoaXMtPnJlcXVpcmVkRXZlbnRzKCk7CisrICAgIGlmICgobVByb2Nlc3NlZEV2ZW50cyAm IHJlcXVpcmVkRXZlbnRzKSAhPSByZXF1aXJlZEV2ZW50cykKKyAgICAgICAgIHJldHVybjsKKyAK KyAgICAgbUluaXRpYWxpemVkID0gdHJ1ZTsKK0BAIC0yNzYsOSArMjg5LDggQEAgdm9pZCBRV2F5 bGFuZFNjcmVlbjo6b3V0cHV0X3NjYWxlKGludDMyX3QgZmFjdG9yKQorIAorIHZvaWQgUVdheWxh bmRTY3JlZW46Om91dHB1dF9kb25lKCkKKyB7CistICAgIG1PdXRwdXREb25lID0gdHJ1ZTsKKy0g ICAgaWYgKHp4ZGdfb3V0cHV0X3YxOjppc0luaXRpYWxpemVkKCkgJiYgbVdheWxhbmREaXNwbGF5 LT54ZGdPdXRwdXRNYW5hZ2VyKCktPnZlcnNpb24oKSA+PSAzKQorLSAgICAgICAgbVhkZ091dHB1 dERvbmUgPSB0cnVlOworKyAgICBtUHJvY2Vzc2VkRXZlbnRzIHw9IE91dHB1dERvbmVFdmVudDsK KysKKyAgICAgaWYgKG1Jbml0aWFsaXplZCkgeworICAgICAgICAgdXBkYXRlT3V0cHV0UHJvcGVy dGllcygpOworICAgICAgICAgaWYgKHp4ZGdfb3V0cHV0X3YxOjppc0luaXRpYWxpemVkKCkpCitA QCAtMzM5LDcgKzM1MSw3IEBAIHZvaWQgUVdheWxhbmRTY3JlZW46Onp4ZGdfb3V0cHV0X3YxX2Rv bmUoKQorICAgICBpZiAoUV9VTkxJS0VMWShtV2F5bGFuZERpc3BsYXktPnhkZ091dHB1dE1hbmFn ZXIoKS0+dmVyc2lvbigpID49IDMpKQorICAgICAgICAgcVdhcm5pbmcobGNRcGFXYXlsYW5kKSA8 PCAienhkZ19vdXRwdXRfdjEuZG9uZSByZWNlaXZlZCBvbiB2ZXJzaW9uIDMgb3IgbmV3ZXIsIHRo aXMgaXMgbW9zdCBsaWtlbHkgYSBidWcgaW4gdGhlIGNvbXBvc2l0b3IiOworIAorLSAgICBtWGRn T3V0cHV0RG9uZSA9IHRydWU7CisrICAgIG1Qcm9jZXNzZWRFdmVudHMgfD0gWGRnT3V0cHV0RG9u ZUV2ZW50OworICAgICBpZiAobUluaXRpYWxpemVkKQorICAgICAgICAgdXBkYXRlWGRnT3V0cHV0 UHJvcGVydGllcygpOworICAgICBlbHNlCitAQCAtMzQ4LDcgKzM2MCwxMSBAQCB2b2lkIFFXYXls YW5kU2NyZWVuOjp6eGRnX291dHB1dF92MV9kb25lKCkKKyAKKyB2b2lkIFFXYXlsYW5kU2NyZWVu Ojp6eGRnX291dHB1dF92MV9uYW1lKGNvbnN0IFFTdHJpbmcgJm5hbWUpCisgeworKyAgICBpZiAo UV9VTkxJS0VMWShtSW5pdGlhbGl6ZWQpKQorKyAgICAgICAgcVdhcm5pbmcobGNRcGFXYXlsYW5k KSA8PCAienhkZ19vdXRwdXRfdjEubmFtZSByZWNlaXZlZCBhZnRlciBvdXRwdXQgaGFzIGJlZW4g aW5pdGlhbGl6ZWQsIHRoaXMgaXMgbW9zdCBsaWtlbHkgYSBidWcgaW4gdGhlIGNvbXBvc2l0b3Ii OworKworICAgICBtT3V0cHV0TmFtZSA9IG5hbWU7CisrICAgIG1Qcm9jZXNzZWRFdmVudHMgfD0g WGRnT3V0cHV0TmFtZUV2ZW50OworIH0KKyAKKyB2b2lkIFFXYXlsYW5kU2NyZWVuOjp1cGRhdGVY ZGdPdXRwdXRQcm9wZXJ0aWVzKCkKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZHNjcmVlbl9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbl9w LmgKK2luZGV4IGRmMWM5NGYyLi4wNTBjZmRjMCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kc2NyZWVuX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRzY3JlZW5fcC5oCitAQCAtMTE2LDYgKzExNiwxMyBAQCBwdWJsaWM6CisgICAgIHN0YXRp YyBRV2F5bGFuZFNjcmVlbiAqZnJvbVdsT3V0cHV0KDo6d2xfb3V0cHV0ICpvdXRwdXQpOworIAor IHByaXZhdGU6CisrICAgIGVudW0gRXZlbnQgOiB1aW50IHsKKysgICAgICAgIFhkZ091dHB1dERv bmVFdmVudCA9IDB4MSwKKysgICAgICAgIE91dHB1dERvbmVFdmVudCA9IDB4MiwKKysgICAgICAg IFhkZ091dHB1dE5hbWVFdmVudCA9IDB4NCwKKysgICAgfTsKKysgICAgdWludCByZXF1aXJlZEV2 ZW50cygpIGNvbnN0OworKworICAgICB2b2lkIG91dHB1dF9tb2RlKHVpbnQzMl90IGZsYWdzLCBp bnQgd2lkdGgsIGludCBoZWlnaHQsIGludCByZWZyZXNoKSBvdmVycmlkZTsKKyAgICAgdm9pZCBv dXRwdXRfZ2VvbWV0cnkoaW50MzJfdCB4LCBpbnQzMl90IHksCisgICAgICAgICAgICAgICAgICAg ICAgICAgIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LAorQEAgLTE0OCw4ICsxNTUsNyBA QCBwcml2YXRlOgorICAgICBRU2l6ZSBtUGh5c2ljYWxTaXplOworICAgICBRU3RyaW5nIG1PdXRw dXROYW1lOworICAgICBRdDo6U2NyZWVuT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiA9IFF0OjpQ cmltYXJ5T3JpZW50YXRpb247CistICAgIGJvb2wgbU91dHB1dERvbmUgPSBmYWxzZTsKKy0gICAg Ym9vbCBtWGRnT3V0cHV0RG9uZSA9IGZhbHNlOworKyAgICB1aW50IG1Qcm9jZXNzZWRFdmVudHMg PSAwOworICAgICBib29sIG1Jbml0aWFsaXplZCA9IGZhbHNlOworIAorICNpZiBRVF9DT05GSUco Y3Vyc29yKQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2htYmFj a2luZ3N0b3JlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2htYmFja2luZ3N0 b3JlLmNwcAoraW5kZXggZGM3ZmY2NzAuLjQxY2ZmZGY3IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmRzaG1iYWNraW5nc3RvcmUuY3BwCisrKysgYi9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAKK0BAIC01Miw2ICs1Miw3IEBA CisgCisgI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3dheWxhbmQtd2F5bGFuZC1j bGllbnQtcHJvdG9jb2wuaD4KKyAKKysjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8dW5p c3RkLmg+CisgI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisgCitAQCAtNjEsNiArNjIsOSBAQAorICMg IGlmbmRlZiBNRkRfQ0xPRVhFQworICMgICAgZGVmaW5lIE1GRF9DTE9FWEVDICAgICAweDAwMDFV CisgIyAgZW5kaWYKKysjICBpZm5kZWYgTUZEX0FMTE9XX1NFQUxJTkcKKysjICAgIGRlZmluZSBN RkRfQUxMT1dfU0VBTElORyAweDAwMDJVCisrIyAgZW5kaWYKKyAjZW5kaWYKKyAKKyBRVF9CRUdJ Tl9OQU1FU1BBQ0UKK0BAIC03NCw4ICs3OCwxMCBAQCBRV2F5bGFuZFNobUJ1ZmZlcjo6UVdheWxh bmRTaG1CdWZmZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LAorICAgICBpbnQgYWxsb2MgPSBz dHJpZGUgKiBzaXplLmhlaWdodCgpOworICAgICBpbnQgZmQgPSAtMTsKKyAKKy0jaWZkZWYgU1lT X21lbWZkX2NyZWF0ZQorLSAgICBmZCA9IHN5c2NhbGwoU1lTX21lbWZkX2NyZWF0ZSwgIndheWxh bmQtc2htIiwgTUZEX0NMT0VYRUMpOworKyNpZiBkZWZpbmVkKFNZU19tZW1mZF9jcmVhdGUpICYm IGRlZmluZWQoRl9TRUFMX1NFQUwpCisrICAgIGZkID0gc3lzY2FsbChTWVNfbWVtZmRfY3JlYXRl LCAid2F5bGFuZC1zaG0iLCBNRkRfQ0xPRVhFQyB8IE1GRF9BTExPV19TRUFMSU5HKTsKKysgICAg aWYgKGZkID49IDApCisrICAgICAgICBmY250bChmZCwgRl9BRERfU0VBTFMsIEZfU0VBTF9TSFJJ TksgfCBGX1NFQUxfU0VBTCk7CisgI2VuZGlmCisgCisgICAgIFFTY29wZWRQb2ludGVyPFFGaWxl PiBmaWxlUG9pbnRlcjsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZHdpbmRvdy5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvdy5jcHAKK2lu ZGV4IGNiODI4NTdhLi5mYjJjNTlkYyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kd2luZG93LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3 aW5kb3cuY3BwCitAQCAtNzYsNyArNzYsNiBAQCBRV2F5bGFuZFdpbmRvdyAqUVdheWxhbmRXaW5k b3c6Om1Nb3VzZUdyYWIgPSBudWxscHRyOworIFFXYXlsYW5kV2luZG93OjpRV2F5bGFuZFdpbmRv dyhRV2luZG93ICp3aW5kb3csIFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSkKKyAgICAgOiBRUGxh dGZvcm1XaW5kb3cod2luZG93KQorICAgICAsIG1EaXNwbGF5KGRpc3BsYXkpCistICAgICwgbUZy YW1lUXVldWUobURpc3BsYXktPmNyZWF0ZUZyYW1lUXVldWUoKSkKKyAgICAgLCBtUmVzaXplQWZ0 ZXJTd2FwKHFFbnZpcm9ubWVudFZhcmlhYmxlSXNTZXQoIlFUX1dBWUxBTkRfUkVTSVpFX0FGVEVS X1NXQVAiKSkKKyB7CisgICAgIHsKK0BAIC05NSw5ICs5NCw2IEBAIFFXYXlsYW5kV2luZG93OjpR V2F5bGFuZFdpbmRvdyhRV2luZG93ICp3aW5kb3csIFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSkK KyAKKyBRV2F5bGFuZFdpbmRvdzo6flFXYXlsYW5kV2luZG93KCkKKyB7CistICAgIG1EaXNwbGF5 LT5kZXN0cm95RnJhbWVRdWV1ZShtRnJhbWVRdWV1ZSk7CistICAgIG1EaXNwbGF5LT5oYW5kbGVX aW5kb3dEZXN0cm95ZWQodGhpcyk7CistCisgICAgIGRlbGV0ZSBtV2luZG93RGVjb3JhdGlvbjsK KyAKKyAgICAgaWYgKG1TdXJmYWNlKQorQEAgLTI0Myw2ICsyMzksNyBAQCBib29sIFFXYXlsYW5k V2luZG93OjpzaG91bGRDcmVhdGVTdWJTdXJmYWNlKCkgY29uc3QKKyAKKyB2b2lkIFFXYXlsYW5k V2luZG93OjpyZXNldCgpCisgeworKyAgICBjbG9zZUNoaWxkUG9wdXBzKCk7CisgICAgIGRlbGV0 ZSBtU2hlbGxTdXJmYWNlOworICAgICBtU2hlbGxTdXJmYWNlID0gbnVsbHB0cjsKKyAgICAgZGVs ZXRlIG1TdWJTdXJmYWNlV2luZG93OworQEAgLTI1NSwxNyArMjUyLDIyIEBAIHZvaWQgUVdheWxh bmRXaW5kb3c6OnJlc2V0KCkKKyAgICAgICAgIG1TdXJmYWNlLnJlc2V0KCk7CisgICAgIH0KKyAK Ky0gICAgaWYgKG1GcmFtZUNhbGxiYWNrKSB7CistICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95 KG1GcmFtZUNhbGxiYWNrKTsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsKKy0g ICAgfQorKyAgICB7CisrICAgICAgICBRTXV0ZXhMb2NrZXIgbG9jaygmbUZyYW1lU3luY011dGV4 KTsKKysgICAgICAgIGlmIChtRnJhbWVDYWxsYmFjaykgeworKyAgICAgICAgICAgIHdsX2NhbGxi YWNrX2Rlc3Ryb3kobUZyYW1lQ2FsbGJhY2spOworKyAgICAgICAgICAgIG1GcmFtZUNhbGxiYWNr ID0gbnVsbHB0cjsKKysgICAgICAgIH0KKyAKKy0gICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGlt ZXIuaW52YWxpZGF0ZSgpOworLSAgICBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgPSBmYWxzZTsK KysgICAgICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmludmFsaWRhdGUoKTsKKysgICAg ICAgIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNlOworKyAgICB9CisgICAgIG1GcmFt ZUNhbGxiYWNrVGltZWRPdXQgPSBmYWxzZTsKKyAKKyAgICAgbU1hc2sgPSBRUmVnaW9uKCk7Cisg ICAgIG1RdWV1ZWRCdWZmZXIgPSBudWxscHRyOworKworKyAgICBtRGlzcGxheS0+aGFuZGxlV2lu ZG93RGVzdHJveWVkKHRoaXMpOworIH0KKyAKKyBRV2F5bGFuZFdpbmRvdyAqUVdheWxhbmRXaW5k b3c6OmZyb21XbFN1cmZhY2UoOjp3bF9zdXJmYWNlICpzdXJmYWNlKQorQEAgLTM1MSwxOSArMzUz LDI1IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21ldHJ5X2hlbHBlcihjb25zdCBRUmVj dCAmcmVjdCkKKyAgICAgfQorIH0KKyAKKy12b2lkIFFXYXlsYW5kV2luZG93OjpzZXRHZW9tZXRy eShjb25zdCBRUmVjdCAmcmVjdCkKKyt2b2lkIFFXYXlsYW5kV2luZG93OjpzZXRHZW9tZXRyeShj b25zdCBRUmVjdCAmcikKKyB7CisrICAgIGF1dG8gcmVjdCA9IHI7CisrICAgIGlmIChmaXhlZFRv cGxldmVsUG9zaXRpb25zICYmICFRUGxhdGZvcm1XaW5kb3c6OnBhcmVudCgpICYmIHdpbmRvdygp LT50eXBlKCkgIT0gUXQ6OlBvcHVwCisrICAgICAgICAmJiB3aW5kb3coKS0+dHlwZSgpICE9IFF0 OjpUb29sVGlwKSB7CisrICAgICAgICByZWN0Lm1vdmVUbyhzY3JlZW4oKS0+Z2VvbWV0cnkoKS50 b3BMZWZ0KCkpOworKyAgICB9CisgICAgIHNldEdlb21ldHJ5X2hlbHBlcihyZWN0KTsKKyAKKyAg ICAgaWYgKHdpbmRvdygpLT5pc1Zpc2libGUoKSAmJiByZWN0LmlzVmFsaWQoKSkgeworICAgICAg ICAgaWYgKG1XaW5kb3dEZWNvcmF0aW9uKQorICAgICAgICAgICAgIG1XaW5kb3dEZWNvcmF0aW9u LT51cGRhdGUoKTsKKyAKKy0gICAgICAgIGlmIChtUmVzaXplQWZ0ZXJTd2FwICYmIHdpbmRvd1R5 cGUoKSA9PSBFZ2wgJiYgbVNlbnRJbml0aWFsUmVzaXplKQorKyAgICAgICAgaWYgKG1SZXNpemVB ZnRlclN3YXAgJiYgd2luZG93VHlwZSgpID09IEVnbCAmJiBtU2VudEluaXRpYWxSZXNpemUpIHsK KysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9jaygmbVJlc2l6ZUxvY2spOworICAgICAgICAg ICAgIG1SZXNpemVEaXJ0eSA9IHRydWU7CistICAgICAgICBlbHNlCisrICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUdlb21ldHJ5Q2hh bmdlKHdpbmRvdygpLCBnZW9tZXRyeSgpKTsKKy0KKysgICAgICAgIH0KKyAgICAgICAgIG1TZW50 SW5pdGlhbFJlc2l6ZSA9IHRydWU7CisgICAgIH0KKyAgICAgUVJlY3QgZXhwb3NlR2VvbWV0cnko UVBvaW50KCksIGdlb21ldHJ5KCkuc2l6ZSgpKTsKK0BAIC0zNzQsNyArMzgyLDcgQEAgdm9pZCBR V2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3QgJnJlY3QpCisgICAgICAgICBt U2hlbGxTdXJmYWNlLT5zZXRXaW5kb3dHZW9tZXRyeSh3aW5kb3dDb250ZW50R2VvbWV0cnkoKSk7 CisgCisgICAgIGlmIChpc09wYXF1ZSgpICYmIG1NYXNrLmlzRW1wdHkoKSkKKy0gICAgICAgIHNl dE9wYXF1ZUFyZWEocmVjdCk7CisrICAgICAgICBzZXRPcGFxdWVBcmVhKFFSZWN0KFFQb2ludCgw LCAwKSwgcmVjdC5zaXplKCkpKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVzaXpl RnJvbUFwcGx5Q29uZmlndXJlKGNvbnN0IFFTaXplICZzaXplV2l0aE1hcmdpbnMsIGNvbnN0IFFQ b2ludCAmb2Zmc2V0KQorQEAgLTM5OSwyMSArNDA3LDYgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6 c2VuZEV4cG9zZUV2ZW50KGNvbnN0IFFSZWN0ICZyZWN0KQorICAgICBtTGFzdEV4cG9zZUdlb21l dHJ5ID0gcmVjdDsKKyB9CisgCistCistc3RhdGljIFFWZWN0b3I8UVBvaW50ZXI8UVdheWxhbmRX aW5kb3c+PiBhY3RpdmVQb3B1cHM7CistCistdm9pZCBRV2F5bGFuZFdpbmRvdzo6Y2xvc2VQb3B1 cHMoUVdheWxhbmRXaW5kb3cgKnBhcmVudCkKKy17CistICAgIHdoaWxlICghYWN0aXZlUG9wdXBz LmlzRW1wdHkoKSkgeworLSAgICAgICAgYXV0byBwb3B1cCA9IGFjdGl2ZVBvcHVwcy50YWtlTGFz dCgpOworLSAgICAgICAgaWYgKHBvcHVwLmlzTnVsbCgpKQorLSAgICAgICAgICAgIGNvbnRpbnVl OworLSAgICAgICAgaWYgKHBvcHVwLmRhdGEoKSA9PSBwYXJlbnQpCistICAgICAgICAgICAgcmV0 dXJuOworLSAgICAgICAgcG9wdXAtPnJlc2V0KCk7CistICAgIH0KKy19CistCisgUVBsYXRmb3Jt U2NyZWVuICpRV2F5bGFuZFdpbmRvdzo6Y2FsY3VsYXRlU2NyZWVuRnJvbVN1cmZhY2VFdmVudHMo KSBjb25zdAorIHsKKyAgICAgUVJlYWRMb2NrZXIgbG9jaygmbVN1cmZhY2VMb2NrKTsKK0BAIC00 MzMsMTAgKzQyNiw3IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldFZpc2libGUoYm9vbCB2aXNp YmxlKQorICAgICBsYXN0VmlzaWJsZSA9IHZpc2libGU7CisgCisgICAgIGlmICh2aXNpYmxlKSB7 CistICAgICAgICBpZiAod2luZG93KCktPnR5cGUoKSA9PSBRdDo6UG9wdXAgfHwgd2luZG93KCkt PnR5cGUoKSA9PSBRdDo6VG9vbFRpcCkKKy0gICAgICAgICAgICBhY3RpdmVQb3B1cHMgPDwgdGhp czsKKyAgICAgICAgIGluaXRXaW5kb3coKTsKKy0gICAgICAgIG1EaXNwbGF5LT5mbHVzaFJlcXVl c3RzKCk7CisgCisgICAgICAgICBzZXRHZW9tZXRyeSh3aW5kb3dHZW9tZXRyeSgpKTsKKyAgICAg ICAgIC8vIERvbid0IGZsdXNoIHRoZSBldmVudHMgaGVyZSwgb3IgZWxzZSB0aGUgbmV3bHkgdmlz aWJsZSB3aW5kb3cgbWF5IHN0YXJ0IGRyYXdpbmcsIGJ1dCBzaW5jZQorQEAgLTQ0NCw3ICs0MzQs NiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKKyAgICAg ICAgIC8vIFFXYXlsYW5kU2htQmFja2luZ1N0b3JlOjpiZWdpblBhaW50KCkuCisgICAgIH0gZWxz ZSB7CisgICAgICAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoKSk7CistICAgICAgICBjbG9zZVBv cHVwcyh0aGlzKTsKKyAgICAgICAgIHJlc2V0KCk7CisgICAgIH0KKyB9CitAQCAtNTU2LDEyICs1 NDUsMTIgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2VuZFJlY3Vyc2l2ZUV4cG9zZUV2ZW50KCkK KyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjphdHRhY2goUVdheWxhbmRCdWZmZXIgKmJ1ZmZlciwg aW50IHgsIGludCB5KQorIHsKKy0gICAgUV9BU1NFUlQoIWJ1ZmZlci0+Y29tbWl0dGVkKCkpOwor ICAgICBRUmVhZExvY2tlciBsb2NrZXIoJm1TdXJmYWNlTG9jayk7CisgICAgIGlmIChtU3VyZmFj ZSA9PSBudWxscHRyKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBpZiAoYnVmZmVyKSB7Cisr ICAgICAgICBRX0FTU0VSVCghYnVmZmVyLT5jb21taXR0ZWQoKSk7CisgICAgICAgICBoYW5kbGVV cGRhdGUoKTsKKyAgICAgICAgIGJ1ZmZlci0+c2V0QnVzeSgpOworIAorQEAgLTU4Myw3ICs1NzIs MTEgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6ZGFtYWdlKGNvbnN0IFFSZWN0ICZyZWN0KQorICAg ICBpZiAobVN1cmZhY2UgPT0gbnVsbHB0cikKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgbVN1 cmZhY2UtPmRhbWFnZShyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWln aHQoKSk7CisrICAgIGNvbnN0IGludCBzID0gc2NhbGUoKTsKKysgICAgaWYgKG1EaXNwbGF5LT5j b21wb3NpdG9yVmVyc2lvbigpID49IDQpCisrICAgICAgICBtU3VyZmFjZS0+ZGFtYWdlX2J1ZmZl cihzICogcmVjdC54KCksIHMgKiByZWN0LnkoKSwgcyAqIHJlY3Qud2lkdGgoKSwgcyAqIHJlY3Qu aGVpZ2h0KCkpOworKyAgICBlbHNlCisrICAgICAgICBtU3VyZmFjZS0+ZGFtYWdlKHJlY3QueCgp LCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyB9CisgCisgdm9pZCBR V2F5bGFuZFdpbmRvdzo6c2FmZUNvbW1pdChRV2F5bGFuZEJ1ZmZlciAqYnVmZmVyLCBjb25zdCBR UmVnaW9uICZkYW1hZ2UpCitAQCAtNjE5LDggKzYxMiwxNCBAQCB2b2lkIFFXYXlsYW5kV2luZG93 Ojpjb21taXQoUVdheWxhbmRCdWZmZXIgKmJ1ZmZlciwgY29uc3QgUVJlZ2lvbiAmZGFtYWdlKQor ICAgICAgICAgcmV0dXJuOworIAorICAgICBhdHRhY2hPZmZzZXQoYnVmZmVyKTsKKy0gICAgZm9y IChjb25zdCBRUmVjdCAmcmVjdDogZGFtYWdlKQorLSAgICAgICAgbVN1cmZhY2UtPmRhbWFnZShy ZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisrICAgIGlm IChtRGlzcGxheS0+Y29tcG9zaXRvclZlcnNpb24oKSA+PSA0KSB7CisrICAgICAgICBjb25zdCBp bnQgcyA9IHNjYWxlKCk7CisrICAgICAgICBmb3IgKGNvbnN0IFFSZWN0ICZyZWN0OiBkYW1hZ2Up CisrICAgICAgICAgICAgbVN1cmZhY2UtPmRhbWFnZV9idWZmZXIocyAqIHJlY3QueCgpLCBzICog cmVjdC55KCksIHMgKiByZWN0LndpZHRoKCksIHMgKiByZWN0LmhlaWdodCgpKTsKKysgICAgfSBl bHNlIHsKKysgICAgICAgIGZvciAoY29uc3QgUVJlY3QgJnJlY3Q6IGRhbWFnZSkKKysgICAgICAg ICAgICBtU3VyZmFjZS0+ZGFtYWdlKHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCBy ZWN0LmhlaWdodCgpKTsKKysgICAgfQorICAgICBRX0FTU0VSVCghYnVmZmVyLT5jb21taXR0ZWQo KSk7CisgICAgIGJ1ZmZlci0+c2V0Q29tbWl0dGVkKCk7CisgICAgIG1TdXJmYWNlLT5jb21taXQo KTsKK0BAIC02MzUsNDIgKzYzNCw1MyBAQCB2b2lkIFFXYXlsYW5kV2luZG93Ojpjb21taXQoKQor IAorIGNvbnN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIFFXYXlsYW5kV2luZG93OjpjYWxsYmFja0xp c3RlbmVyID0geworICAgICBbXSh2b2lkICpkYXRhLCB3bF9jYWxsYmFjayAqY2FsbGJhY2ssIHVp bnQzMl90IHRpbWUpIHsKKy0gICAgICAgIFFfVU5VU0VEKGNhbGxiYWNrKTsKKyAgICAgICAgIFFf VU5VU0VEKHRpbWUpOworICAgICAgICAgYXV0byAqd2luZG93ID0gc3RhdGljX2Nhc3Q8UVdheWxh bmRXaW5kb3cqPihkYXRhKTsKKy0gICAgICAgIHdpbmRvdy0+aGFuZGxlRnJhbWVDYWxsYmFjaygp OworKyAgICAgICAgd2luZG93LT5oYW5kbGVGcmFtZUNhbGxiYWNrKGNhbGxiYWNrKTsKKyAgICAg fQorIH07CisgCistdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlRnJhbWVDYWxsYmFjaygpCisr dm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlRnJhbWVDYWxsYmFjayh3bF9jYWxsYmFjayogY2Fs bGJhY2spCisgeworKyAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOwor KyAgICBpZiAoIW1GcmFtZUNhbGxiYWNrKSB7CisrICAgICAgICAvLyBUaGlzIG1lYW5zIHRoZSBj YWxsYmFjayBpcyBhbHJlYWR5IHVuc2V0IGJ5IFFXYXlsYW5kV2luZG93OjpyZXNldC4KKysgICAg ICAgIC8vIFRoZSB3bF9jYWxsYmFjayBvYmplY3Qgd2lsbCBiZSBkZXN0cm95ZWQgdGhlcmUgdG9v LgorKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrICAgIFFfQVNTRVJUKGNhbGxiYWNrID09IG1G cmFtZUNhbGxiYWNrKTsKKysgICAgd2xfY2FsbGJhY2tfZGVzdHJveShjYWxsYmFjayk7CisrICAg IG1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsKKysKKyAgICAgbVdhaXRpbmdGb3JGcmFtZUNhbGxi YWNrID0gZmFsc2U7CisgICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmludmFsaWRhdGUo KTsKKyAKKyAgICAgLy8gVGhlIHJlc3QgY2FuIHdhaXQgdW50aWwgd2UgY2FuIHJ1biBpdCBvbiB0 aGUgY29ycmVjdCB0aHJlYWQKKy0gICAgaWYgKCFtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5KSB7 CistICAgICAgICBhdXRvIGRvSGFuZGxlRXhwb3NlID0gW3RoaXNdKCkgeworLSAgICAgICAgICAg IGJvb2wgd2FzRXhwb3NlZCA9IGlzRXhwb3NlZCgpOworLSAgICAgICAgICAgIG1GcmFtZUNhbGxi YWNrVGltZWRPdXQgPSBmYWxzZTsKKy0gICAgICAgICAgICBpZiAoIXdhc0V4cG9zZWQgJiYgaXNF eHBvc2VkKCkpIC8vIERpZCBzZXR0aW5nIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgbWFrZSB0aGUg d2luZG93IGV4cG9zZWQ/CistICAgICAgICAgICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdChR UG9pbnQoKSwgZ2VvbWV0cnkoKS5zaXplKCkpKTsKKy0gICAgICAgICAgICBpZiAod2FzRXhwb3Nl ZCAmJiBoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpKQorLSAgICAgICAgICAgICAgICBkZWxpdmVy VXBkYXRlUmVxdWVzdCgpOworLQorLSAgICAgICAgICAgIG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZl cnkgPSBmYWxzZTsKKy0gICAgICAgIH07CisrICAgIGF1dG8gZG9IYW5kbGVFeHBvc2UgPSBbdGhp c10oKSB7CisrICAgICAgICBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5LnN0b3JlUmVsZWFzZShm YWxzZSk7CisrICAgICAgICBib29sIHdhc0V4cG9zZWQgPSBpc0V4cG9zZWQoKTsKKysgICAgICAg IG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSBmYWxzZTsKKysgICAgICAgIGlmICghd2FzRXhwb3Nl ZCAmJiBpc0V4cG9zZWQoKSkgLy8gRGlkIHNldHRpbmcgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCBt YWtlIHRoZSB3aW5kb3cgZXhwb3NlZD8KKysgICAgICAgICAgICBzZW5kRXhwb3NlRXZlbnQoUVJl Y3QoUVBvaW50KCksIGdlb21ldHJ5KCkuc2l6ZSgpKSk7CisrICAgICAgICBpZiAod2FzRXhwb3Nl ZCAmJiBoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpKQorKyAgICAgICAgICAgIGRlbGl2ZXJVcGRh dGVSZXF1ZXN0KCk7CisrICAgIH07CisgCisrICAgIGlmIChtV2FpdGluZ0ZvclVwZGF0ZURlbGl2 ZXJ5LnRlc3RBbmRTZXRBY3F1aXJlKGZhbHNlLCB0cnVlKSkgeworICAgICAgICAgLy8gUXVldWVk IGNvbm5lY3Rpb24sIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBjYWxsIGhhbmRsZVVwZGF0ZSgpIGZy b20gaW5zaWRlIHdhaXRGb3JGcmFtZVN5bmMoKQorICAgICAgICAgLy8gaW4gdGhlIHNpbmdsZS10 aHJlYWRlZCBjYXNlLgorLSAgICAgICAgbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSA9IHRydWU7 CisgICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMsIGRvSGFuZGxlRXhwb3Nl LCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgICAgIH0KKysKKysgICAgbUZyYW1lU3luY1dhaXQu bm90aWZ5X2FsbCgpOworIH0KKyAKKyBib29sIFFXYXlsYW5kV2luZG93Ojp3YWl0Rm9yRnJhbWVT eW5jKGludCB0aW1lb3V0KQorIHsKKy0gICAgUU11dGV4TG9ja2VyIGxvY2tlcihtRnJhbWVRdWV1 ZS5tdXRleCk7CistICAgIG1EaXNwbGF5LT5kaXNwYXRjaFF1ZXVlV2hpbGUobUZyYW1lUXVldWUu cXVldWUsIFsmXSgpIHsgcmV0dXJuIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjazsgfSwgdGltZW91 dCk7CisrICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrCisrICAg IFFEZWFkbGluZVRpbWVyIGRlYWRsaW5lKHRpbWVvdXQpOworKyAgICB3aGlsZSAobVdhaXRpbmdG b3JGcmFtZUNhbGxiYWNrICYmIG1GcmFtZVN5bmNXYWl0LndhaXQoJm1GcmFtZVN5bmNNdXRleCwg ZGVhZGxpbmUpKSB7IH0KKyAKKyAgICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykgewor ICAgICAgICAgcUNEZWJ1ZyhsY1dheWxhbmRCYWNraW5nc3RvcmUpIDw8ICJEaWRuJ3QgcmVjZWl2 ZSBmcmFtZSBjYWxsYmFjayBpbiB0aW1lLCB3aW5kb3cgc2hvdWxkIG5vdyBiZSBpbmV4cG9zZWQi OworQEAgLTg2OCw2ICs4NzgsMTcgQEAgYm9vbCBRV2F5bGFuZFdpbmRvdzo6Y3JlYXRlRGVjb3Jh dGlvbigpCisgICAgICAgICAgICAgc3Vic3VyZi0+c2V0X3Bvc2l0aW9uKHBvcy54KCkgKyBtLmxl ZnQoKSwgcG9zLnkoKSArIG0udG9wKCkpOworICAgICAgICAgfQorICAgICAgICAgc2VuZEV4cG9z ZUV2ZW50KFFSZWN0KFFQb2ludCgpLCBnZW9tZXRyeSgpLnNpemUoKSkpOworKworKyAgICAgICAg Ly8gVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGUgYnVmZmVyIGlzIHJlY3JlYXRlZCwg YnV0IHNpbmNlCisrICAgICAgICAvLyB0aGUgY29udGVudCByZWN0IHJlbWFpbnMgdGhlIHNhbWUs IHRoZSB3aWRnZXRzIHJlbWFpbiB0aGUgc2FtZQorKyAgICAgICAgLy8gc2l6ZSBhbmQgYXJlIG5v dCByZWRyYXduLCBsZWF2aW5nIHRoZSBuZXcgYnVmZmVyIGVtcHR5LiBBcyBhIHNpbXBsZQorKyAg ICAgICAgLy8gd29yay1hcm91bmQsIHdlIHRyaWdnZXIgYSBmdWxsIGV4dHJhIHVwZGF0ZSB3aGVu ZXZlciB0aGUgY2xpZW50LXNpZGUKKysgICAgICAgIC8vIHdpbmRvdyBkZWNvcmF0aW9ucyBhcmUg dG9nZ2xlZCB3aGlsZSB0aGUgd2luZG93IGlzIHNob3dpbmcuCisrICAgICAgICAvLyBOb3RlOiBj cmVhdGVEZWNvcmF0aW9uKCkgaXMgc29tZXRpbWVzIGNhbGxlZCBmcm9tIHRoZSByZW5kZXIgdGhy ZWFkCisrICAgICAgICAvLyBvZiBRdCBRdWljay4gVGhpcyBpcyBlc3NlbnRpYWxseSB3cm9uZyBh bmQgY291bGQgcG90ZW50aWFsbHkgY2F1c2UgcHJvYmxlbXMsCisrICAgICAgICAvLyBidXQgdW50 aWwgdGhlIHVuZGVybHlpbmcgaXNzdWUgaGFzIGJlZW4gZml4ZWQsIHdlIGhhdmUgdG8gdXNlIGlu dm9rZU1ldGhvZCgpCisrICAgICAgICAvLyBoZXJlIHRvIGF2b2lkIGFzc2VydHMuCisrICAgICAg ICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHdpbmRvdygpLCAmUVdpbmRvdzo6cmVxdWVzdFVw ZGF0ZSk7CisgICAgIH0KKyAKKyAgICAgcmV0dXJuIG1XaW5kb3dEZWNvcmF0aW9uOworQEAgLTEw MjMsNiArMTA0NCwxMyBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVTY3JlZW5zQ2hhbmdl ZCgpCisgCisgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdpbmRvd1NjcmVlbkNo YW5nZWQod2luZG93KCksIG5ld1NjcmVlbi0+UVBsYXRmb3JtU2NyZWVuOjpzY3JlZW4oKSk7Cisg ICAgIG1MYXN0UmVwb3J0ZWRTY3JlZW4gPSBuZXdTY3JlZW47CisrICAgIGlmIChmaXhlZFRvcGxl dmVsUG9zaXRpb25zICYmICFRUGxhdGZvcm1XaW5kb3c6OnBhcmVudCgpICYmIHdpbmRvdygpLT50 eXBlKCkgIT0gUXQ6OlBvcHVwCisrICAgICAgICAmJiB3aW5kb3coKS0+dHlwZSgpICE9IFF0OjpU b29sVGlwCisrICAgICAgICAmJiBnZW9tZXRyeSgpLnRvcExlZnQoKSAhPSBuZXdTY3JlZW4tPmdl b21ldHJ5KCkudG9wTGVmdCgpKSB7CisrICAgICAgICBhdXRvIGdlb21ldHJ5ID0gdGhpcy0+Z2Vv bWV0cnkoKTsKKysgICAgICAgIGdlb21ldHJ5Lm1vdmVUbyhuZXdTY3JlZW4tPmdlb21ldHJ5KCku dG9wTGVmdCgpKTsKKysgICAgICAgIHNldEdlb21ldHJ5KGdlb21ldHJ5KTsKKysgICAgfQorIAor ICAgICBpbnQgc2NhbGUgPSBuZXdTY3JlZW4tPmlzUGxhY2Vob2xkZXIoKSA/IDEgOiBzdGF0aWNf Y2FzdDxRV2F5bGFuZFNjcmVlbiAqPihuZXdTY3JlZW4pLT5zY2FsZSgpOworICAgICBpZiAoc2Nh bGUgIT0gbVNjYWxlKSB7CitAQCAtMTA5NCwxMCArMTEyMiwxOCBAQCBib29sIFFXYXlsYW5kV2lu ZG93OjpzZXRNb3VzZUdyYWJFbmFibGVkKGJvb2wgZ3JhYikKKyAgICAgcmV0dXJuIHRydWU7Cisg fQorIAorK1F0OjpXaW5kb3dTdGF0ZXMgUVdheWxhbmRXaW5kb3c6OndpbmRvd1N0YXRlcygpIGNv bnN0CisreworKyAgICByZXR1cm4gbUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRlczsKKyt9CisrCisg dm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlV2luZG93U3RhdGVzQ2hhbmdlZChRdDo6V2luZG93 U3RhdGVzIHN0YXRlcykKKyB7CisgICAgIGNyZWF0ZURlY29yYXRpb24oKTsKKy0gICAgUVdpbmRv d1N5c3RlbUludGVyZmFjZTo6aGFuZGxlV2luZG93U3RhdGVDaGFuZ2VkKHdpbmRvdygpLCBzdGF0 ZXMsIG1MYXN0UmVwb3J0ZWRXaW5kb3dTdGF0ZXMpOworKyAgICBRdDo6V2luZG93U3RhdGVzIHN0 YXRlc1dpdGhvdXRBY3RpdmUgPSBzdGF0ZXMgJiB+UXQ6OldpbmRvd0FjdGl2ZTsKKysgICAgUXQ6 OldpbmRvd1N0YXRlcyBsYXN0U3RhdGVzV2l0aG91dEFjdGl2ZSA9IG1MYXN0UmVwb3J0ZWRXaW5k b3dTdGF0ZXMgJiB+UXQ6OldpbmRvd0FjdGl2ZTsKKysgICAgUVdpbmRvd1N5c3RlbUludGVyZmFj ZTo6aGFuZGxlV2luZG93U3RhdGVDaGFuZ2VkKHdpbmRvdygpLCBzdGF0ZXNXaXRob3V0QWN0aXZl LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGFzdFN0YXRlc1dpdGhvdXRBY3RpdmUpOworICAgICBtTGFzdFJlcG9ydGVkV2luZG93U3RhdGVz ID0gc3RhdGVzOworIH0KKyAKK0BAIC0xMTM5LDE5ICsxMTc1LDI0IEBAIHZvaWQgUVdheWxhbmRX aW5kb3c6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQgKmV2ZW50KQorICAgICBpZiAoZXZlbnQtPnRp bWVySWQoKSAhPSBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkKQorICAgICAgICAg cmV0dXJuOworIAorLSAgICBib29sIGNhbGxiYWNrVGltZXJFeHBpcmVkID0gbUZyYW1lQ2FsbGJh Y2tFbGFwc2VkVGltZXIuaGFzRXhwaXJlZChtRnJhbWVDYWxsYmFja1RpbWVvdXQpOworLSAgICBp ZiAoIW1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQoKSB8fCBjYWxsYmFja1RpbWVy RXhwaXJlZCApIHsKKy0gICAgICAgIGtpbGxUaW1lcihtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2 YWxUaW1lcklkKTsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQg PSAtMTsKKy0gICAgfQorLSAgICBpZiAobUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaXNWYWxp ZCgpICYmIGNhbGxiYWNrVGltZXJFeHBpcmVkKSB7CistICAgICAgICBtRnJhbWVDYWxsYmFja0Vs YXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CisrICAgIHsKKysgICAgICAgIFFNdXRleExvY2tlciBs b2NrKCZtRnJhbWVTeW5jTXV0ZXgpOworIAorLSAgICAgICAgcUNEZWJ1ZyhsY1dheWxhbmRCYWNr aW5nc3RvcmUpIDw8ICJEaWRuJ3QgcmVjZWl2ZSBmcmFtZSBjYWxsYmFjayBpbiB0aW1lLCB3aW5k b3cgc2hvdWxkIG5vdyBiZSBpbmV4cG9zZWQiOworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2tUaW1l ZE91dCA9IHRydWU7CistICAgICAgICBtV2FpdGluZ0ZvclVwZGF0ZSA9IGZhbHNlOworLSAgICAg ICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KCkpOworKyAgICAgICAgYm9vbCBjYWxsYmFja1RpbWVy RXhwaXJlZCA9IG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmhhc0V4cGlyZWQobUZyYW1lQ2Fs bGJhY2tUaW1lb3V0KTsKKysgICAgICAgIGlmICghbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIu aXNWYWxpZCgpIHx8IGNhbGxiYWNrVGltZXJFeHBpcmVkICkgeworKyAgICAgICAgICAgIGtpbGxU aW1lcihtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkKTsKKysgICAgICAgICAgICBt RnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gLTE7CisrICAgICAgICB9CisrICAg ICAgICBpZiAoIW1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQoKSB8fCAhY2FsbGJh Y2tUaW1lckV4cGlyZWQpIHsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisrICAg ICAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CisgICAgIH0KKysK KysgICAgcUNEZWJ1ZyhsY1dheWxhbmRCYWNraW5nc3RvcmUpIDw8ICJEaWRuJ3QgcmVjZWl2ZSBm cmFtZSBjYWxsYmFjayBpbiB0aW1lLCB3aW5kb3cgc2hvdWxkIG5vdyBiZSBpbmV4cG9zZWQiOwor KyAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gdHJ1ZTsKKysgICAgbVdhaXRpbmdGb3JVcGRh dGUgPSBmYWxzZTsKKysgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KCkpOworIH0KKyAKKyB2b2lk IFFXYXlsYW5kV2luZG93OjpyZXF1ZXN0VXBkYXRlKCkKK0BAIC0xMTYwLDggKzEyMDEsMTEgQEAg dm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVxdWVzdFVwZGF0ZSgpCisgICAgIFFfQVNTRVJUKGhhc1Bl bmRpbmdVcGRhdGVSZXF1ZXN0KCkpOyAvLyBzaG91bGQgYmUgc2V0IGJ5IFFQQQorIAorICAgICAv LyBJZiB3ZSBoYXZlIGEgZnJhbWUgY2FsbGJhY2sgYWxsIGlzIGdvb2QgYW5kIHdpbGwgYmUgdGFr ZW4gY2FyZSBvZiB0aGVyZQorLSAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQorLSAg ICAgICAgcmV0dXJuOworKyAgICB7CisrICAgICAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZtRnJh bWVTeW5jTXV0ZXgpOworKyAgICAgICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKysg ICAgICAgICAgICByZXR1cm47CisrICAgIH0KKyAKKyAgICAgLy8gSWYgd2UndmUgYWxyZWFkeSBj YWxsZWQgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKSwgYnV0IGhhdmVuJ3Qgc2VlbiBhbnkgYXR0YWNo K2NvbW1pdC9zd2FwIHlldAorICAgICAvLyBUaGlzIGlzIGEgc29tZXdoYXQgcmVkdW5kYW50IGJl aGF2aW9yIGFuZCBtaWdodCBpbmRpY2F0ZSBhIGJ1ZyBpbiB0aGUgY2FsbGluZyBjb2RlLCBzbyBs b2cKK0BAIC0xMTc0LDcgKzEyMTgsMTIgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVxdWVzdFVw ZGF0ZSgpCisgICAgIC8vIHNvIHVzZSBpbnZva2VNZXRob2QgdG8gZGVsYXkgdGhlIGRlbGl2ZXJ5 IGEgYml0LgorICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMsIFt0aGlzXSB7Cisg ICAgICAgICAvLyBUaGluZ3MgbWlnaHQgaGF2ZSBjaGFuZ2VkIGluIHRoZSBtZWFudGltZQorLSAg ICAgICAgaWYgKGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkgJiYgIW1XYWl0aW5nRm9yRnJhbWVD YWxsYmFjaykKKysgICAgICAgIHsKKysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZt RnJhbWVTeW5jTXV0ZXgpOworKyAgICAgICAgICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJh Y2spCisrICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysgICAgICAgIGlmICho YXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpKQorICAgICAgICAgICAgIGRlbGl2ZXJVcGRhdGVSZXF1 ZXN0KCk7CisgICAgIH0sIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyB9CitAQCAtMTE4NSwxOSAr MTIzNCwxOCBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXF1ZXN0VXBkYXRlKCkKKyB2b2lkIFFX YXlsYW5kV2luZG93OjpoYW5kbGVVcGRhdGUoKQorIHsKKyAgICAgcUNEZWJ1ZyhsY1dheWxhbmRC YWNraW5nc3RvcmUpIDw8ICJoYW5kbGVVcGRhdGUiIDw8IFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQo KTsKKysKKyAgICAgLy8gVE9ETzogU2hvdWxkIHN5bmMgc3Vic3VyZmFjZXMgYXZvaWQgcmVxdWVz dGluZyBmcmFtZSBjYWxsYmFja3M/CisgICAgIFFSZWFkTG9ja2VyIGxvY2soJm1TdXJmYWNlTG9j ayk7CisgICAgIGlmICghbVN1cmZhY2UpCisgICAgICAgICByZXR1cm47CisgCistICAgIGlmICht RnJhbWVDYWxsYmFjaykgeworLSAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShtRnJhbWVDYWxs YmFjayk7CistICAgICAgICBtRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CistICAgIH0KKysgICAg UU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysgICAgaWYgKG1XYWl0aW5n Rm9yRnJhbWVDYWxsYmFjaykKKysgICAgICAgIHJldHVybjsKKyAKKy0gICAgUU11dGV4TG9ja2Vy IGxvY2tlcihtRnJhbWVRdWV1ZS5tdXRleCk7CisgICAgIHN0cnVjdCA6OndsX3N1cmZhY2UgKndy YXBwZWRTdXJmYWNlID0gcmVpbnRlcnByZXRfY2FzdDxzdHJ1Y3QgOjp3bF9zdXJmYWNlICo+KHds X3Byb3h5X2NyZWF0ZV93cmFwcGVyKG1TdXJmYWNlLT5vYmplY3QoKSkpOworLSAgICB3bF9wcm94 eV9zZXRfcXVldWUocmVpbnRlcnByZXRfY2FzdDx3bF9wcm94eSAqPih3cmFwcGVkU3VyZmFjZSks IG1GcmFtZVF1ZXVlLnF1ZXVlKTsKKysgICAgd2xfcHJveHlfc2V0X3F1ZXVlKHJlaW50ZXJwcmV0 X2Nhc3Q8d2xfcHJveHkgKj4od3JhcHBlZFN1cmZhY2UpLCBtRGlzcGxheS0+ZnJhbWVFdmVudFF1 ZXVlKCkpOworICAgICBtRnJhbWVDYWxsYmFjayA9IHdsX3N1cmZhY2VfZnJhbWUod3JhcHBlZFN1 cmZhY2UpOworICAgICB3bF9wcm94eV93cmFwcGVyX2Rlc3Ryb3kod3JhcHBlZFN1cmZhY2UpOwor ICAgICB3bF9jYWxsYmFja19hZGRfbGlzdGVuZXIobUZyYW1lQ2FsbGJhY2ssICZRV2F5bGFuZFdp bmRvdzo6Y2FsbGJhY2tMaXN0ZW5lciwgdGhpcyk7CitAQCAtMTIwNyw2ICsxMjU1LDggQEAgdm9p ZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlVXBkYXRlKCkKKyAgICAgLy8gU3RhcnQgYSB0aW1lciBm b3IgaGFuZGxpbmcgdGhlIGNhc2Ugd2hlbiB0aGUgY29tcG9zaXRvciBzdG9wcyBzZW5kaW5nIGZy YW1lIGNhbGxiYWNrcy4KKyAgICAgaWYgKG1GcmFtZUNhbGxiYWNrVGltZW91dCA+IDApIHsKKyAg ICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgW3RoaXNdIHsKKysgICAgICAg ICAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKworICAgICAgICAg ICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spIHsKKyAgICAgICAgICAgICAgICAgaWYg KG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQgPCAwKQorICAgICAgICAgICAgICAg ICAgICAgbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA9IHN0YXJ0VGltZXIobUZy YW1lQ2FsbGJhY2tUaW1lb3V0KTsKK0BAIC0xMjY3LDYgKzEzMTcsMjAgQEAgdm9pZCBRV2F5bGFu ZFdpbmRvdzo6c2V0T3BhcXVlQXJlYShjb25zdCBRUmVnaW9uICZvcGFxdWVBcmVhKQorICAgICB3 bF9yZWdpb25fZGVzdHJveShyZWdpb24pOworIH0KKyAKKyt2b2lkIFFXYXlsYW5kV2luZG93Ojph ZGRDaGlsZFBvcHVwKFFXYXlsYW5kV2luZG93ICpzdXJmYWNlKSB7CisrICAgIG1DaGlsZFBvcHVw cy5hcHBlbmQoc3VyZmFjZSk7CisrfQorKworK3ZvaWQgUVdheWxhbmRXaW5kb3c6OnJlbW92ZUNo aWxkUG9wdXAoUVdheWxhbmRXaW5kb3cgKnN1cmZhY2UpIHsKKysgICAgbUNoaWxkUG9wdXBzLnJl bW92ZUFsbChzdXJmYWNlKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6Y2xvc2VDaGls ZFBvcHVwcygpIHsKKysgICAgd2hpbGUgKCFtQ2hpbGRQb3B1cHMuaXNFbXB0eSgpKSB7CisrICAg ICAgICBhdXRvIHBvcHVwID0gbUNoaWxkUG9wdXBzLnRha2VMYXN0KCk7CisrICAgICAgICBwb3B1 cC0+cmVzZXQoKTsKKysgICAgfQorK30KKyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAt LWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93X3AuaCBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93X3AuaAoraW5kZXggMDEzMzdjZmYuLjJmMjE5ZDhj IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3dfcC5oCisr KysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvd19wLmgKK0BAIC05OCw2ICs5 OCw5IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRXaW5kb3coUVdpbmRvdyAqd2luZG93LCBRV2F5 bGFuZERpc3BsYXkgKmRpc3BsYXkpOworICAgICB+UVdheWxhbmRXaW5kb3coKSBvdmVycmlkZTsK KyAKKysgICAgLy8gS2VlcCBUb3BsZXZlbHMgcG9zaXRpb24gb24gdGhlIHRvcCBsZWZ0IGNvcm5l ciBvZiB0aGVpciBzY3JlZW4KKysgICAgc3RhdGljIGlubGluZSBib29sIGZpeGVkVG9wbGV2ZWxQ b3NpdGlvbnMgPSB0cnVlOworKworICAgICB2aXJ0dWFsIFdpbmRvd1R5cGUgd2luZG93VHlwZSgp IGNvbnN0ID0gMDsKKyAgICAgdmlydHVhbCB2b2lkIGVuc3VyZVNpemUoKTsKKyAgICAgV0lkIHdp bklkKCkgY29uc3Qgb3ZlcnJpZGU7CitAQCAtMTQ4LDYgKzE1MSw3IEBAIHB1YmxpYzoKKyAgICAg dm9pZCBzZXRXaW5kb3dTdGF0ZShRdDo6V2luZG93U3RhdGVzIHN0YXRlcykgb3ZlcnJpZGU7Cisg ICAgIHZvaWQgc2V0V2luZG93RmxhZ3MoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKSBvdmVycmlkZTsK KyAgICAgdm9pZCBoYW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKFF0OjpXaW5kb3dTdGF0ZXMgc3Rh dGVzKTsKKysgICAgUXQ6OldpbmRvd1N0YXRlcyB3aW5kb3dTdGF0ZXMoKSBjb25zdDsKKyAKKyAg ICAgdm9pZCByYWlzZSgpIG92ZXJyaWRlOworICAgICB2b2lkIGxvd2VyKCkgb3ZlcnJpZGU7CitA QCAtMjA2LDYgKzIxMCwxMCBAQCBwdWJsaWM6CisgICAgIHZvaWQgaGFuZGxlVXBkYXRlKCk7Cisg ICAgIHZvaWQgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKSBvdmVycmlkZTsKKyAKKysgICAgdm9pZCBh ZGRDaGlsZFBvcHVwKFFXYXlsYW5kV2luZG93KiBjaGlsZCk7CisrICAgIHZvaWQgcmVtb3ZlQ2hp bGRQb3B1cChRV2F5bGFuZFdpbmRvdyogY2hpbGQpOworKyAgICB2b2lkIGNsb3NlQ2hpbGRQb3B1 cHMoKTsKKysKKyBwdWJsaWMgc2xvdHM6CisgICAgIHZvaWQgYXBwbHlDb25maWd1cmUoKTsKKyAK K0BAIC0yMTUsNyArMjIzLDExIEBAIHNpZ25hbHM6CisgCisgcHJvdGVjdGVkOgorICAgICBRV2F5 bGFuZERpc3BsYXkgKm1EaXNwbGF5ID0gbnVsbHB0cjsKKysKKysgICAgLy8gbVN1cmZhY2UgY2Fu IGJlIHdyaXR0ZW4gYnkgdGhlIG1haW4gdGhyZWFkLiBPdGhlciB0aHJlYWRzIHNob3VsZCBjbGFp bSBhIHJlYWQgbG9jayBmb3IgYWNjZXNzCisrICAgIG11dGFibGUgUVJlYWRXcml0ZUxvY2sgbVN1 cmZhY2VMb2NrOworICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFuZFN1cmZhY2U+IG1TdXJmYWNl OworKworICAgICBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqbVNoZWxsU3VyZmFjZSA9IG51bGxwdHI7 CisgICAgIFFXYXlsYW5kU3ViU3VyZmFjZSAqbVN1YlN1cmZhY2VXaW5kb3cgPSBudWxscHRyOwor ICAgICBRVmVjdG9yPFFXYXlsYW5kU3ViU3VyZmFjZSAqPiBtQ2hpbGRyZW47CitAQCAtMjI1LDEz ICsyMzcsMTQgQEAgcHJvdGVjdGVkOgorICAgICBRdDo6TW91c2VCdXR0b25zIG1Nb3VzZVByZXNz ZWRJbkNvbnRlbnRBcmVhID0gUXQ6Ok5vQnV0dG9uOworIAorICAgICBXSWQgbVdpbmRvd0lkOwor LSAgICBib29sIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNlOworICAgICBib29sIG1G cmFtZUNhbGxiYWNrVGltZWRPdXQgPSBmYWxzZTsgLy8gV2hldGhlciB0aGUgZnJhbWUgY2FsbGJh Y2sgaGFzIHRpbWVkIG91dAorLSAgICBib29sIG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkgPSBm YWxzZTsKKyAgICAgaW50IG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQgPSAtMTsK Ky0gICAgUUVsYXBzZWRUaW1lciBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lcjsKKy0gICAgc3Ry dWN0IDo6d2xfY2FsbGJhY2sgKm1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsKKy0gICAgUVdheWxh bmREaXNwbGF5OjpGcmFtZVF1ZXVlIG1GcmFtZVF1ZXVlOworKyAgICBRQXRvbWljSW50IG1XYWl0 aW5nRm9yVXBkYXRlRGVsaXZlcnkgPSBmYWxzZTsKKysKKysgICAgYm9vbCBtV2FpdGluZ0ZvckZy YW1lQ2FsbGJhY2sgPSBmYWxzZTsgLy8gUHJvdGVjdGVkIGJ5IG1GcmFtZVN5bmNNdXRleAorKyAg ICBRRWxhcHNlZFRpbWVyIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyOyAvLyBQcm90ZWN0ZWQg YnkgbUZyYW1lU3luY011dGV4CisrICAgIHN0cnVjdCA6OndsX2NhbGxiYWNrICptRnJhbWVDYWxs YmFjayA9IG51bGxwdHI7IC8vIFByb3RlY3RlZCBieSBtRnJhbWVTeW5jTXV0ZXgKKysgICAgUU11 dGV4IG1GcmFtZVN5bmNNdXRleDsKKyAgICAgUVdhaXRDb25kaXRpb24gbUZyYW1lU3luY1dhaXQ7 CisgCisgICAgIC8vIFRydWUgd2hlbiB3ZSBoYXZlIGNhbGxlZCBkZWxpdmVyUmVxdWVzdFVwZGF0 ZSwgYnV0IHRoZSBjbGllbnQgaGFzIG5vdCB5ZXQgYXR0YWNoZWQgYSBuZXcgYnVmZmVyCitAQCAt MjYxLDYgKzI3NCw4IEBAIHByb3RlY3RlZDoKKyAgICAgUVdheWxhbmRCdWZmZXIgKm1RdWV1ZWRC dWZmZXIgPSBudWxscHRyOworICAgICBRUmVnaW9uIG1RdWV1ZWRCdWZmZXJEYW1hZ2U7CisgCisr ICAgIFFMaXN0PFFQb2ludGVyPFFXYXlsYW5kV2luZG93Pj4gbUNoaWxkUG9wdXBzOworKworIHBy aXZhdGU6CisgICAgIHZvaWQgc2V0R2VvbWV0cnlfaGVscGVyKGNvbnN0IFFSZWN0ICZyZWN0KTsK KyAgICAgdm9pZCBpbml0V2luZG93KCk7CitAQCAtMjgzLDEyICsyOTgsMTAgQEAgcHJpdmF0ZToK KyAgICAgUVJlY3QgbUxhc3RFeHBvc2VHZW9tZXRyeTsKKyAKKyAgICAgc3RhdGljIGNvbnN0IHds X2NhbGxiYWNrX2xpc3RlbmVyIGNhbGxiYWNrTGlzdGVuZXI7CistICAgIHZvaWQgaGFuZGxlRnJh bWVDYWxsYmFjaygpOworKyAgICB2b2lkIGhhbmRsZUZyYW1lQ2FsbGJhY2soc3RydWN0IDo6d2xf Y2FsbGJhY2sqIGNhbGxiYWNrKTsKKyAKKyAgICAgc3RhdGljIFFXYXlsYW5kV2luZG93ICptTW91 c2VHcmFiOworIAorLSAgICBtdXRhYmxlIFFSZWFkV3JpdGVMb2NrIG1TdXJmYWNlTG9jazsKKy0K KyAgICAgZnJpZW5kIGNsYXNzIFFXYXlsYW5kU3ViU3VyZmFjZTsKKyB9OworIAorZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3NoZWxsaW50ZWdyYXRpb24vcXdheWxhbmRzaGVsbGlu dGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3NoZWxsaW50ZWdyYXRpb24vcXdh eWxhbmRzaGVsbGludGVncmF0aW9uX3AuaAoraW5kZXggY2NhZDAwNDguLjRjYzliM2I4IDEwMDY0 NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlvbi9xd2F5bGFuZHNo ZWxsaW50ZWdyYXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9zaGVsbGludGVn cmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRlZ3JhdGlvbl9wLmgKK0BAIC03MywxMSArNzMsMTAgQEAg cHVibGljOgorICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgIH0KKyAgICAgdmlydHVhbCBRV2F5 bGFuZFNoZWxsU3VyZmFjZSAqY3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kV2luZG93ICp3aW5k b3cpID0gMDsKKysgICAgLy8ga2VwdCBmb3IgYmluYXJ5IGNvbXBhdCB3aXRoIGxheWVyLXNoZWxs LXF0CisgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFu ZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykgeworLSAgICAgICAg aWYgKG5ld0ZvY3VzKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93QWN0aXZh dGVkKG5ld0ZvY3VzKTsKKy0gICAgICAgIGlmIChvbGRGb2N1cykKKy0gICAgICAgICAgICBtX2Rp c3BsYXktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG9sZEZvY3VzKTsKKysgICAgICAgIFFfVU5V U0VEKG5ld0ZvY3VzKTsKKysgICAgICAgIFFfVU5VU0VEKG9sZEZvY3VzKTsKKyAgICAgfQorICAg ICB2aXJ0dWFsIHZvaWQgKm5hdGl2ZVJlc291cmNlRm9yV2luZG93KGNvbnN0IFFCeXRlQXJyYXkg JnJlc291cmNlLCBRV2luZG93ICp3aW5kb3cpIHsKKyAgICAgICAgIFFfVU5VU0VEKHJlc291cmNl KTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJlLmpzb24g Yi9xdHdheWxhbmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJlLmpzb24KK2luZGV4IGJjZmQ1MjE1 Li5kYTk1ZDA3YiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY29tcG9zaXRvci9jb25maWd1 cmUuanNvbgorKysrIGIvcXR3YXlsYW5kL3NyYy9jb21wb3NpdG9yL2NvbmZpZ3VyZS5qc29uCitA QCAtNyw2ICs3LDMxIEBACisgICAgICJ0ZXN0RGlyIjogIi4uLy4uL2NvbmZpZy50ZXN0cyIsCisg CisgICAgICJsaWJyYXJpZXMiOiB7CisrICAgICAgICAid2F5bGFuZC1jbGllbnQiOiB7CisrICAg ICAgICAgICAgImxhYmVsIjogIldheWxhbmQgY2xpZW50IGxpYnJhcnkiLAorKyAgICAgICAgICAg ICJoZWFkZXJzIjogIndheWxhbmQtdmVyc2lvbi5oIiwKKysgICAgICAgICAgICAidGVzdCI6IHsK KysgICAgICAgICAgICAgICAgIm1haW4iOiBbCisrICAgICAgICAgICAgICAgICAgICAiI2lmIFdB WUxBTkRfVkVSU0lPTl9NQUpPUiA8IDEiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgZXJyb3Ig V2F5bGFuZCAxLjguMCBvciBoaWdoZXIgcmVxdWlyZWQiLAorKyAgICAgICAgICAgICAgICAgICAg IiNlbmRpZiIsCisrICAgICAgICAgICAgICAgICAgICAiI2lmIFdBWUxBTkRfVkVSU0lPTl9NQUpP UiA9PSAxIiwKKysgICAgICAgICAgICAgICAgICAgICIjIGlmIFdBWUxBTkRfVkVSU0lPTl9NSU5P UiA8IDgiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgIGVycm9yIFdheWxhbmQgMS44LjAgb3Ig aGlnaGVyIHJlcXVpcmVkIiwKKysgICAgICAgICAgICAgICAgICAgICIjIGVuZGlmIiwKKysgICAg ICAgICAgICAgICAgICAgICIjIGlmIFdBWUxBTkRfVkVSU0lPTl9NSU5PUiA9PSA4IiwKKysgICAg ICAgICAgICAgICAgICAgICIjICBpZiBXQVlMQU5EX1ZFUlNJT05fTUlDUk8gPCAwIiwKKysgICAg ICAgICAgICAgICAgICAgICIjICAgZXJyb3IgV2F5bGFuZCAxLjguMCBvciBoaWdoZXIgcmVxdWly ZWQiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgIGVuZGlmIiwKKysgICAgICAgICAgICAgICAg ICAgICIjIGVuZGlmIiwKKysgICAgICAgICAgICAgICAgICAgICIjZW5kaWYiCisrICAgICAgICAg ICAgICAgICBdCisrICAgICAgICAgICAgfSwKKysgICAgICAgICAgICAic291cmNlcyI6IFsKKysg ICAgICAgICAgICAgICAgeyAidHlwZSI6ICJwa2dDb25maWciLCAiYXJncyI6ICJ3YXlsYW5kLWNs aWVudCIgfSwKKysgICAgICAgICAgICAgICAgIi1sd2F5bGFuZC1jbGllbnQiCisrICAgICAgICAg ICAgXQorKyAgICAgICAgfSwKKyAgICAgICAgICJ3YXlsYW5kLXNlcnZlciI6IHsKKyAgICAgICAg ICAgICAibGFiZWwiOiAid2F5bGFuZC1zZXJ2ZXIiLAorICAgICAgICAgICAgICJoZWFkZXJzIjog IndheWxhbmQtdmVyc2lvbi5oIiwKK0BAIC0xNTEsOCArMTc2LDcgQEAKKyAgICAgICAgICAgICAg ICAgICAgICIjZW5kaWYiCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICB9LAorLSAg ICAgICAgICAgICJsaWJzIjogIi1sZHJtIiwKKy0gICAgICAgICAgICAidXNlIjogImVnbCIKKysg ICAgICAgICAgICAidXNlIjogImRybSBlZ2wiCisgICAgICAgICB9LAorICAgICAgICAgImRtYWJ1 Zi1jbGllbnQtYnVmZmVyIjogeworICAgICAgICAgICAgICJsYWJlbCI6ICJMaW51eCBDbGllbnQg ZG1hLWJ1ZiBCdWZmZXIgU2hhcmluZyIsCitAQCAtMTc2LDggKzIwMCw3IEBACisgICAgICAgICAg ICAgICAgICAgICAicmV0dXJuIDA7IgorICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAg fSwKKy0gICAgICAgICAgICAibGlicyI6ICItbGRybSIsCistICAgICAgICAgICAgInVzZSI6ICJl Z2wiCisrICAgICAgICAgICAgInVzZSI6ICJkcm0gZWdsIgorICAgICAgICAgfSwKKyAgICAgICAg ICJ2dWxrYW4tc2VydmVyLWJ1ZmZlciI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAiVnVsa2Fu IEJ1ZmZlciBTaGFyaW5nIiwKK0BAIC0xOTUsNyArMjE4LDggQEAKKyAgICAgICAgICAgICAgICAg ICAgICJleHBvcnRBbGxvY0luZm8uaGFuZGxlVHlwZXMgPSBWS19FWFRFUk5BTF9NRU1PUllfSEFO RExFX1RZUEVfT1BBUVVFX0ZEX0JJVF9LSFI7IiwKKyAgICAgICAgICAgICAgICAgICAgICJyZXR1 cm4gMDsiCisgICAgICAgICAgICAgICAgIF0KKy0gICAgICAgICAgICB9CisrICAgICAgICAgICAg fSwKKysgICAgICAgICAgICAidXNlIjogIndheWxhbmQtY2xpZW50IgorICAgICAgICAgfQorICAg ICB9LAorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9j bGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuY3BwIGIvcXR3YXlsYW5kL3NyYy9o YXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5j cHAKK2luZGV4IDc4ODlmNTc1Li42NDE0MDY3MiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMv aGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cu Y3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxh bmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNwcAorQEAgLTQwLDYgKzQwLDcgQEAKKyAjaW5jbHVk ZSAicXdheWxhbmRlZ2x3aW5kb3cuaCIKKyAKKyAjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3By aXZhdGUvcXdheWxhbmRzY3JlZW5fcC5oPgorKyNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQvcHJp dmF0ZS9xd2F5bGFuZHN1cmZhY2VfcC5oPgorICNpbmNsdWRlICJxd2F5bGFuZGdsY29udGV4dC5o IgorIAorICNpbmNsdWRlIDxRdEVnbFN1cHBvcnQvcHJpdmF0ZS9xZWdsY29udmVuaWVuY2VfcC5o PgorQEAgLTEyNCw2ICsxMjUsNyBAQCB2b2lkIFFXYXlsYW5kRWdsV2luZG93Ojp1cGRhdGVTdXJm YWNlKGJvb2wgY3JlYXRlKQorICAgICAgICAgfQorICAgICAgICAgbU9mZnNldCA9IFFQb2ludCgp OworICAgICB9IGVsc2UgeworKyAgICAgICAgUVJlYWRMb2NrZXIgbG9ja2VyKCZtU3VyZmFjZUxv Y2spOworICAgICAgICAgaWYgKG1fd2F5bGFuZEVnbFdpbmRvdykgeworICAgICAgICAgICAgIGlu dCBjdXJyZW50X3dpZHRoLCBjdXJyZW50X2hlaWdodDsKKyAgICAgICAgICAgICBzdGF0aWMgYm9v bCBkaXNhYmxlUmVzaXplQ2hlY2sgPSBxZ2V0ZW52KCJRVF9XQVlMQU5EX0RJU0FCTEVfUkVTSVpF Q0hFQ0siKS50b0ludCgpOworQEAgLTEzMSwxNCArMTMzLDE2IEBAIHZvaWQgUVdheWxhbmRFZ2xX aW5kb3c6OnVwZGF0ZVN1cmZhY2UoYm9vbCBjcmVhdGUpCisgICAgICAgICAgICAgaWYgKCFkaXNh YmxlUmVzaXplQ2hlY2spIHsKKyAgICAgICAgICAgICAgICAgd2xfZWdsX3dpbmRvd19nZXRfYXR0 YWNoZWRfc2l6ZShtX3dheWxhbmRFZ2xXaW5kb3csICZjdXJyZW50X3dpZHRoLCAmY3VycmVudF9o ZWlnaHQpOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBpZiAoZGlzYWJsZVJlc2l6ZUNo ZWNrIHx8IChjdXJyZW50X3dpZHRoICE9IHNpemVXaXRoTWFyZ2lucy53aWR0aCgpIHx8IGN1cnJl bnRfaGVpZ2h0ICE9IHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSkpIHsKKysgICAgICAgICAgICBp ZiAoZGlzYWJsZVJlc2l6ZUNoZWNrIHx8IChjdXJyZW50X3dpZHRoICE9IHNpemVXaXRoTWFyZ2lu cy53aWR0aCgpIHx8IGN1cnJlbnRfaGVpZ2h0ICE9IHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSkg fHwgbV9yZXF1ZXN0ZWRTaXplICE9IHNpemVXaXRoTWFyZ2lucykgeworICAgICAgICAgICAgICAg ICB3bF9lZ2xfd2luZG93X3Jlc2l6ZShtX3dheWxhbmRFZ2xXaW5kb3csIHNpemVXaXRoTWFyZ2lu cy53aWR0aCgpLCBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCksIG1PZmZzZXQueCgpLCBtT2Zmc2V0 LnkoKSk7CisrICAgICAgICAgICAgICAgIG1fcmVxdWVzdGVkU2l6ZSA9IHNpemVXaXRoTWFyZ2lu czsKKyAgICAgICAgICAgICAgICAgbU9mZnNldCA9IFFQb2ludCgpOworIAorICAgICAgICAgICAg ICAgICBtX3Jlc2l6ZSA9IHRydWU7CisgICAgICAgICAgICAgfQorLSAgICAgICAgfSBlbHNlIGlm IChjcmVhdGUgJiYgd2xTdXJmYWNlKCkpIHsKKy0gICAgICAgICAgICBtX3dheWxhbmRFZ2xXaW5k b3cgPSB3bF9lZ2xfd2luZG93X2NyZWF0ZSh3bFN1cmZhY2UoKSwgc2l6ZVdpdGhNYXJnaW5zLndp ZHRoKCksIHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSk7CisrICAgICAgICB9IGVsc2UgaWYgKGNy ZWF0ZSAmJiBtU3VyZmFjZSkgeworKyAgICAgICAgICAgIG1fd2F5bGFuZEVnbFdpbmRvdyA9IHds X2VnbF93aW5kb3dfY3JlYXRlKG1TdXJmYWNlLT5vYmplY3QoKSwgc2l6ZVdpdGhNYXJnaW5zLndp ZHRoKCksIHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSk7CisrICAgICAgICAgICAgbV9yZXF1ZXN0 ZWRTaXplID0gc2l6ZVdpdGhNYXJnaW5zOworICAgICAgICAgfQorIAorICAgICAgICAgaWYgKCFt X2VnbFN1cmZhY2UgJiYgbV93YXlsYW5kRWdsV2luZG93ICYmIGNyZWF0ZSkgeworZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wv cXdheWxhbmRlZ2x3aW5kb3cuaCBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9j bGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuaAoraW5kZXggNWIxZjRkNTYuLjAw NzlkZmVmIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2Ns aWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5oCisrKysgYi9xdHdheWxhbmQvc3Jj L2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93 LmgKK0BAIC04OCw2ICs4OCw3IEBAIHByaXZhdGU6CisgICAgIG11dGFibGUgUU9wZW5HTEZyYW1l YnVmZmVyT2JqZWN0ICptX2NvbnRlbnRGQk8gPSBudWxscHRyOworIAorICAgICBRU3VyZmFjZUZv cm1hdCBtX2Zvcm1hdDsKKysgICAgUVNpemUgbV9yZXF1ZXN0ZWRTaXplOworIH07CisgCisgfQor ZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jb21wb3NpdG9y L2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5oIGIvcXR3YXlsYW5kL3NyYy9o YXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3IvbGludXgtZG1hYnVmLXVuc3RhYmxlLXYxL2xp bnV4ZG1hYnVmLmgKK2luZGV4IDU2YTcxMGMzLi5jNmE4YjZjNiAxMDA2NDQKKy0tLSBhL3F0d2F5 bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jb21wb3NpdG9yL2xpbnV4LWRtYWJ1Zi11bnN0 YWJsZS12MS9saW51eGRtYWJ1Zi5oCisrKysgYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdy YXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFibGUtdjEvbGludXhkbWFidWYuaAor QEAgLTQxLDYgKzQxLDggQEAKKyAjaW5jbHVkZSA8UXRDb3JlL1FUZXh0U3RyZWFtPgorICNpbmNs dWRlIDxRdEd1aS9RT3BlbkdMVGV4dHVyZT4KKyAKKysjaW5jbHVkZSA8YXJyYXk+CisrCisgI2lu Y2x1ZGUgPEVHTC9lZ2wuaD4KKyAjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorIAorZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNvcmF0aW9ucy9icmFkaWVudC9tYWluLmNwcCBi L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNvcmF0aW9ucy9icmFkaWVudC9tYWluLmNwcAoraW5k ZXggZTc1ZmRhM2MuLmZhODg1MTQzIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5z L2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdp bnMvZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAKK0BAIC0xNjQsMTMgKzE2NCwxMCBAQCB2 b2lkIFFXYXlsYW5kQnJhZGllbnREZWNvcmF0aW9uOjpwYWludChRUGFpbnREZXZpY2UgKmRldmlj ZSkKKyAgICAgLy8gV2luZG93IGljb24KKyAgICAgUUljb24gaWNvbiA9IHdheWxhbmRXaW5kb3co KS0+d2luZG93SWNvbigpOworICAgICBpZiAoIWljb24uaXNOdWxsKCkpIHsKKy0gICAgICAgIFFQ aXhtYXAgcGl4bWFwID0gaWNvbi5waXhtYXAoUVNpemUoMTI4LCAxMjgpKTsKKy0gICAgICAgIFFQ aXhtYXAgc2NhbGVkID0gcGl4bWFwLnNjYWxlZCgyMiwgMjIsIFF0OjpJZ25vcmVBc3BlY3RSYXRp bywgUXQ6OlNtb290aFRyYW5zZm9ybWF0aW9uKTsKKy0KKyAgICAgICAgIFFSZWN0RiBpY29uUmVj dCgwLCAwLCAyMiwgMjIpOworLSAgICAgICAgcC5kcmF3UGl4bWFwKGljb25SZWN0LmFkanVzdGVk KG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BBQ0lORywgNCwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5zKCkubGVmdCgpICsgQlVUVE9OX1NQQUNJTkcs IDQpLAorLSAgICAgICAgICAgICAgICAgICAgIHNjYWxlZCwgaWNvblJlY3QpOworKyAgICAgICAg aWNvblJlY3QuYWRqdXN0KG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BBQ0lORywgNCwKKysg ICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5zKCkubGVmdCgpICsgQlVUVE9OX1NQQUNJTkcs IDQpLAorKyAgICAgICAgaWNvbi5wYWludCgmcCwgaWNvblJlY3QudG9SZWN0KCkpOworICAgICB9 CisgCisgICAgIC8vIFdpbmRvdyB0aXRsZQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjUuY3Bw IGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3 YXlsYW5keGRncG9wdXB2NS5jcHAKK2luZGV4IDg1ZDI1ZTNjLi42MGJkZDQ5MSAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9x d2F5bGFuZHhkZ3BvcHVwdjUuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxp bnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1LmNwcAorQEAgLTQ3LDE4 ICs0NywyMSBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xp ZW50IHsKKyAKKy1RV2F5bGFuZFhkZ1BvcHVwVjU6OlFXYXlsYW5kWGRnUG9wdXBWNShzdHJ1Y3Qg Ojp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5bGFuZFdpbmRvdyAqd2luZG93KQorK1FXYXlsYW5k WGRnUG9wdXBWNTo6UVdheWxhbmRYZGdQb3B1cFY1KHN0cnVjdCA6OnhkZ19wb3B1cF92NSAqcG9w dXAsIFFXYXlsYW5kV2luZG93KiBwYXJlbnQsIFFXYXlsYW5kV2luZG93ICp3aW5kb3cpCisgICAg IDogUVdheWxhbmRTaGVsbFN1cmZhY2Uod2luZG93KQorICAgICAsIFF0V2F5bGFuZDo6eGRnX3Bv cHVwX3Y1KHBvcHVwKQorKyAgICAsIG1fcGFyZW50KHBhcmVudCkKKyAgICAgLCBtX3dpbmRvdyh3 aW5kb3cpCisgeworICAgICBpZiAod2luZG93LT5kaXNwbGF5KCktPndpbmRvd0V4dGVuc2lvbigp KQorICAgICAgICAgbV9leHRlbmRlZFdpbmRvdyA9IG5ldyBRV2F5bGFuZEV4dGVuZGVkU3VyZmFj ZSh3aW5kb3cpOworKyAgICBtX3BhcmVudC0+YWRkQ2hpbGRQb3B1cChtX3dpbmRvdyk7CisgfQor IAorIFFXYXlsYW5kWGRnUG9wdXBWNTo6flFXYXlsYW5kWGRnUG9wdXBWNSgpCisgeworICAgICB4 ZGdfcG9wdXBfZGVzdHJveShvYmplY3QoKSk7CisrICAgIG1fcGFyZW50LT5yZW1vdmVDaGlsZFBv cHVwKG1fd2luZG93KTsKKyAgICAgZGVsZXRlIG1fZXh0ZW5kZWRXaW5kb3c7CisgfQorIAorZGlm ZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVs bC12NS9xd2F5bGFuZHhkZ3BvcHVwdjVfcC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NV9wLmgKK2luZGV4IDc0 OTRmNmE2Li5kODVmMTMwYiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjVfcC5oCisrKysgYi9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxh bmR4ZGdwb3B1cHY1X3AuaAorQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgUV9XQVlMQU5EX0NMSUVO VF9FWFBPUlQgUVdheWxhbmRYZGdQb3B1cFY1IDogcHVibGljIFFXYXlsYW5kU2hlbGxTdXJmYWNl CisgeworICAgICBRX09CSkVDVAorIHB1YmxpYzoKKy0gICAgUVdheWxhbmRYZGdQb3B1cFY1KHN0 cnVjdCA6OnhkZ19wb3B1cF92NSAqcG9wdXAsIFFXYXlsYW5kV2luZG93ICp3aW5kb3cpOworKyAg ICBRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6eGRnX3BvcHVwX3Y1ICpwb3B1cCwgUVdheWxh bmRXaW5kb3cqIHBhcmVudCwgUVdheWxhbmRXaW5kb3cgKndpbmRvdyk7CisgICAgIH5RV2F5bGFu ZFhkZ1BvcHVwVjUoKSBvdmVycmlkZTsKKyAKKyBwcm90ZWN0ZWQ6CitAQCAtNzgsNiArNzgsNyBA QCBwcm90ZWN0ZWQ6CisgCisgcHJpdmF0ZToKKyAgICAgUVdheWxhbmRFeHRlbmRlZFN1cmZhY2Ug Km1fZXh0ZW5kZWRXaW5kb3cgPSBudWxscHRyOworKyAgICBRV2F5bGFuZFdpbmRvdyAqbV9wYXJl bnQgPSBudWxscHRyOworICAgICBRV2F5bGFuZFdpbmRvdyAqbV93aW5kb3cgPSBudWxscHRyOwor IH07CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NS5jcHAgYi9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1LmNw cAoraW5kZXggN2UyNDJjNGEuLmRlZjg0NTJhIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9w bHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NS5j cHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVs bC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3BwCitAQCAtODQsNyArODQsNyBAQCBRV2F5bGFuZFhk Z1BvcHVwVjUgKlFXYXlsYW5kWGRnU2hlbGxWNTo6Y3JlYXRlWGRnUG9wdXAoUVdheWxhbmRXaW5k b3cgKndpbmRvdywgUQorICAgICBpbnQgeCA9IHBvc2l0aW9uLngoKSArIHBhcmVudFdpbmRvdy0+ ZnJhbWVNYXJnaW5zKCkubGVmdCgpOworICAgICBpbnQgeSA9IHBvc2l0aW9uLnkoKSArIHBhcmVu dFdpbmRvdy0+ZnJhbWVNYXJnaW5zKCkudG9wKCk7CisgCistICAgIGF1dG8gcG9wdXAgPSBuZXcg UVdheWxhbmRYZGdQb3B1cFY1KGdldF94ZGdfcG9wdXAod2luZG93LT53bFN1cmZhY2UoKSwgcGFy ZW50U3VyZmFjZSwgc2VhdCwgbV9wb3B1cFNlcmlhbCwgeCwgeSksIHdpbmRvdyk7CisrICAgIGF1 dG8gcG9wdXAgPSBuZXcgUVdheWxhbmRYZGdQb3B1cFY1KGdldF94ZGdfcG9wdXAod2luZG93LT53 bFN1cmZhY2UoKSwgcGFyZW50U3VyZmFjZSwgc2VhdCwgbV9wb3B1cFNlcmlhbCwgeCwgeSksIHBh cmVudFdpbmRvdywgd2luZG93KTsKKyAgICAgbV9wb3B1cHMuYXBwZW5kKHdpbmRvdyk7CisgICAg IFFPYmplY3Q6OmNvbm5lY3QocG9wdXAsICZRV2F5bGFuZFhkZ1BvcHVwVjU6OmRlc3Ryb3llZCwg W3RoaXMsIHdpbmRvd10oKXsKKyAgICAgICAgIG1fcG9wdXBzLnJlbW92ZU9uZSh3aW5kb3cpOwor ZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1z aGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbi5jcHAgYi9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1 aW50ZWdyYXRpb24uY3BwCitpbmRleCA0ZTI1OTQ5Zi4uY2ZjNjA5MzkgMTAwNjQ0CistLS0gYS9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxh bmR4ZGdzaGVsbHY1aW50ZWdyYXRpb24uY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMv c2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRp b24uY3BwCitAQCAtODUsMTMgKzg1LDYgQEAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKlFXYXlsYW5k WGRnU2hlbGxWNUludGVncmF0aW9uOjpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmQKKyAgICAg cmV0dXJuIG1feGRnU2hlbGwtPmNyZWF0ZVhkZ1N1cmZhY2Uod2luZG93KTsKKyB9CisgCistdm9p ZCBRV2F5bGFuZFhkZ1NoZWxsVjVJbnRlZ3JhdGlvbjo6aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5n ZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpIHsK Ky0gICAgaWYgKG5ld0ZvY3VzICYmIHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1BvcHVwVjUgKj4o bmV3Rm9jdXMtPnNoZWxsU3VyZmFjZSgpKSkKKy0gICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2lu ZG93QWN0aXZhdGVkKG5ld0ZvY3VzKTsKKy0gICAgaWYgKG9sZEZvY3VzICYmIHFvYmplY3RfY2Fz dDxRV2F5bGFuZFhkZ1BvcHVwVjUgKj4ob2xkRm9jdXMtPnNoZWxsU3VyZmFjZSgpKSkKKy0gICAg ICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQob2xkRm9jdXMpOworLX0KKy0K KyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRl Z3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGct c2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb25fcC5oCitpbmRleCBjZTZiZGI5 ZS4uYWVkODg2NzAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRl Z3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb25fcC5oCisr KysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUv cXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb25fcC5oCitAQCAtNjcsNyArNjcsNiBAQCBwdWJs aWM6CisgICAgIFFXYXlsYW5kWGRnU2hlbGxWNUludGVncmF0aW9uKCkge30KKyAgICAgYm9vbCBp bml0aWFsaXplKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CisgICAgIFFXYXls YW5kU2hlbGxTdXJmYWNlICpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaW5kb3cgKndpbmRv dykgb3ZlcnJpZGU7CistICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxh bmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpIG92ZXJyaWRlOwor IAorIHByaXZhdGU6CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kWGRnU2hlbGxWNT4gbV94 ZGdTaGVsbDsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3Jh dGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2LmNwcCBiL3F0d2F5bGFuZC9zcmMv cGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjYu Y3BwCitpbmRleCA4YzM3MTY2MS4uMTUxYzc4ZTMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2 LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5jcHAKK0BAIC0xNzQsNiArMTc0LDcgQEAgUVdheWxh bmRYZGdTdXJmYWNlVjY6OlBvcHVwOjpQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2VWNiAqeGRnU3Vy ZmFjZSwgUVdheWxhbmRYZGcKKyAgICAgLCBtX3hkZ1N1cmZhY2UoeGRnU3VyZmFjZSkKKyAgICAg LCBtX3BhcmVudChwYXJlbnQpCisgeworKyAgICBtX3BhcmVudC0+d2luZG93KCktPmFkZENoaWxk UG9wdXAobV94ZGdTdXJmYWNlLT53aW5kb3coKSk7CisgfQorIAorIFFXYXlsYW5kWGRnU3VyZmFj ZVY2OjpQb3B1cDo6flBvcHVwKCkKK0BAIC0xODEsNiArMTgyLDggQEAgUVdheWxhbmRYZGdTdXJm YWNlVjY6OlBvcHVwOjp+UG9wdXAoKQorICAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAg ICAgZGVzdHJveSgpOworIAorKyAgICBtX3BhcmVudC0+d2luZG93KCktPnJlbW92ZUNoaWxkUG9w dXAobV94ZGdTdXJmYWNlLT53aW5kb3coKSk7CisrCisgICAgIGlmIChtX2dyYWJiaW5nKSB7Cisg ICAgICAgICBhdXRvICpzaGVsbCA9IG1feGRnU3VyZmFjZS0+bV9zaGVsbDsKKyAgICAgICAgIFFf QVNTRVJUKHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVwID09IHRoaXMpOworZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9x d2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbi5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMv c2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRp b24uY3BwCitpbmRleCAwMzE2NDMxNi4uZThkYThiYTEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVs bHY2aW50ZWdyYXRpb24uY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRl Z3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb24uY3BwCitA QCAtNjgsMjAgKzY4LDYgQEAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKlFXYXlsYW5kWGRnU2hlbGxW NkludGVncmF0aW9uOjpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmQKKyAgICAgcmV0dXJuIG1f eGRnU2hlbGwtPmdldFhkZ1N1cmZhY2Uod2luZG93KTsKKyB9CisgCistdm9pZCBRV2F5bGFuZFhk Z1NoZWxsVjZJbnRlZ3JhdGlvbjo6aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRX aW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpCisteworLSAgICBpZiAo bmV3Rm9jdXMpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1cmZhY2UgPSBxb2JqZWN0X2Nhc3Q8UVdh eWxhbmRYZGdTdXJmYWNlVjYgKj4obmV3Rm9jdXMtPnNoZWxsU3VyZmFjZSgpKTsKKy0gICAgICAg IGlmICh4ZGdTdXJmYWNlICYmICF4ZGdTdXJmYWNlLT5oYW5kbGVzQWN0aXZlU3RhdGUoKSkKKy0g ICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2YXRlZChuZXdGb2N1cyk7Cist ICAgIH0KKy0gICAgaWYgKG9sZEZvY3VzICYmIHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZh Y2VWNiAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKSB7CistICAgICAgICBhdXRvICp4ZGdT dXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZVY2ICo+KG9sZEZvY3VzLT5z aGVsbFN1cmZhY2UoKSk7CistICAgICAgICBpZiAoeGRnU3VyZmFjZSAmJiAheGRnU3VyZmFjZS0+ aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5k b3dEZWFjdGl2YXRlZChvbGRGb2N1cyk7CistICAgIH0KKy19CistCisgfQorIAorIFFUX0VORF9O QU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3Jh dGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb25fcC5oIGIvcXR3 YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5k eGRnc2hlbGx2NmludGVncmF0aW9uX3AuaAoraW5kZXggMjYxZjhjYmIuLmMxYmNkNWM2IDEwMDY0 NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxs LXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2 NmludGVncmF0aW9uX3AuaAorQEAgLTY1LDcgKzY1LDYgQEAgcHVibGljOgorICAgICBRV2F5bGFu ZFhkZ1NoZWxsVjZJbnRlZ3JhdGlvbigpIHt9CisgICAgIGJvb2wgaW5pdGlhbGl6ZShRV2F5bGFu ZERpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOworICAgICBRV2F5bGFuZFNoZWxsU3VyZmFjZSAq Y3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kV2luZG93ICp3aW5kb3cpIG92ZXJyaWRlOworLSAg ICB2b2lkIGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1 cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAg ICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFuZFhkZ1NoZWxsVjY+IG1feGRnU2hlbGw7CitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3 YXlsYW5keGRnc2hlbGwuY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3BwCitpbmRleCBmM2UzYzMzMC4uZmE2ZDU4 MDggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94 ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbC5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lu cy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsLmNwcAorQEAgLTY3 LDExICs2Nyw2IEBAIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2ZWw6OlRvcGxldmVsKFFXYXls YW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSkKKyAKKyBRV2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxl dmVsOjp+VG9wbGV2ZWwoKQorIHsKKy0gICAgaWYgKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2lu ZG93QWN0aXZlKSB7CistICAgICAgICBRV2F5bGFuZFdpbmRvdyAqd2luZG93ID0gbV94ZGdTdXJm YWNlLT53aW5kb3coKTsKKy0gICAgICAgIHdpbmRvdy0+ZGlzcGxheSgpLT5oYW5kbGVXaW5kb3dE ZWFjdGl2YXRlZCh3aW5kb3cpOworLSAgICB9CistCisgICAgIC8vIFRoZSBwcm90b2NvbCBzcGVj IHJlcXVpcmVzIHRoYXQgdGhlIGRlY29yYXRpb24gb2JqZWN0IGlzIGRlbGV0ZWQgYmVmb3JlIHhk Z190b3BsZXZlbC4KKyAgICAgZGVsZXRlIG1fZGVjb3JhdGlvbjsKKyAgICAgbV9kZWNvcmF0aW9u ID0gbnVsbHB0cjsKK0BAIC04NSwxNiArODAsMTUgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6 OlRvcGxldmVsOjphcHBseUNvbmZpZ3VyZSgpCisgICAgIGlmICghKG1fYXBwbGllZC5zdGF0ZXMg JiAoUXQ6OldpbmRvd01heGltaXplZHxRdDo6V2luZG93RnVsbFNjcmVlbikpKQorICAgICAgICAg bV9ub3JtYWxTaXplID0gbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+d2luZG93RnJhbWVHZW9tZXRy eSgpLnNpemUoKTsKKyAKKy0gICAgaWYgKChtX3BlbmRpbmcuc3RhdGVzICYgUXQ6OldpbmRvd0Fj dGl2ZSkgJiYgIShtX2FwcGxpZWQuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkpCisrICAgIGlm ICgobV9wZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpICYmICEobV9hcHBsaWVkLnN0 YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpCisrICAgICAgICAmJiAhbV94ZGdTdXJmYWNlLT5tX3dp bmRvdy0+ZGlzcGxheSgpLT5pc0tleWJvYXJkQXZhaWxhYmxlKCkpCisgICAgICAgICBtX3hkZ1N1 cmZhY2UtPm1fd2luZG93LT5kaXNwbGF5KCktPmhhbmRsZVdpbmRvd0FjdGl2YXRlZChtX3hkZ1N1 cmZhY2UtPm1fd2luZG93KTsKKyAKKy0gICAgaWYgKCEobV9wZW5kaW5nLnN0YXRlcyAmIFF0OjpX aW5kb3dBY3RpdmUpICYmIChtX2FwcGxpZWQuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkpCisr ICAgIGlmICghKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSAmJiAobV9hcHBs aWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpCisrICAgICAgICAmJiAhbV94ZGdTdXJmYWNl LT5tX3dpbmRvdy0+ZGlzcGxheSgpLT5pc0tleWJvYXJkQXZhaWxhYmxlKCkpCisgICAgICAgICBt X3hkZ1N1cmZhY2UtPm1fd2luZG93LT5kaXNwbGF5KCktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVk KG1feGRnU3VyZmFjZS0+bV93aW5kb3cpOworIAorLSAgICAvLyBUT0RPOiBub25lIG9mIHRoZSBv dGhlciBwbHVnaW5zIHNlbmQgV2luZG93QWN0aXZlIGVpdGhlciwgYnV0IGlzIGl0IG9uIHB1cnBv c2U/CistICAgIFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGVzV2l0aG91dEFjdGl2ZSA9IG1fcGVuZGlu Zy5zdGF0ZXMgJiB+UXQ6OldpbmRvd0FjdGl2ZTsKKy0KKy0gICAgbV94ZGdTdXJmYWNlLT5tX3dp bmRvdy0+aGFuZGxlV2luZG93U3RhdGVzQ2hhbmdlZChzdGF0ZXNXaXRob3V0QWN0aXZlKTsKKysg ICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+aGFuZGxlV2luZG93U3RhdGVzQ2hhbmdlZChtX3Bl bmRpbmcuc3RhdGVzKTsKKyAKKyAgICAgaWYgKG1fcGVuZGluZy5zaXplLmlzRW1wdHkoKSkgewor ICAgICAgICAgLy8gQW4gZW1wdHkgc2l6ZSBpbiB0aGUgY29uZmlndXJlIG1lYW5zIGl0J3MgdXAg dG8gdGhlIGNsaWVudCB0byBjaG9vc2UgdGhlIHNpemUKK0BAIC0xMDUsOCArOTksNiBAQCB2b2lk IFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2ZWw6OmFwcGx5Q29uZmlndXJlKCkKKyAgICAgICAg IG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPnJlc2l6ZUZyb21BcHBseUNvbmZpZ3VyZShtX3BlbmRp bmcuc2l6ZSk7CisgICAgIH0KKyAKKy0gICAgbV94ZGdTdXJmYWNlLT5zZXRTaXplSGludHMoKTsK Ky0KKyAgICAgbV9hcHBsaWVkID0gbV9wZW5kaW5nOworICAgICBxQ0RlYnVnKGxjUXBhV2F5bGFu ZCkgPDwgIkFwcGxpZWQgcGVuZGluZyB4ZGdfdG9wbGV2ZWwgY29uZmlndXJlIGV2ZW50OiIgPDwg bV9hcHBsaWVkLnNpemUgPDwgbV9hcHBsaWVkLnN0YXRlczsKKyB9CitAQCAtMjAzLDEyICsxOTUs MTcgQEAgUXRXYXlsYW5kOjp4ZGdfdG9wbGV2ZWw6OnJlc2l6ZV9lZGdlIFFXYXlsYW5kWGRnU3Vy ZmFjZTo6VG9wbGV2ZWw6OmNvbnZlcnRUb1Jlc2kKKyAgICAgICAgICAgICAgICAgfCAoKGVkZ2Vz ICYgUXQ6OlJpZ2h0RWRnZSkgPyByZXNpemVfZWRnZV9yaWdodCA6IDApKTsKKyB9CisgCistUVdh eWxhbmRYZGdTdXJmYWNlOjpQb3B1cDo6UG9wdXAoUVdheWxhbmRYZGdTdXJmYWNlICp4ZGdTdXJm YWNlLCBRV2F5bGFuZFhkZ1N1cmZhY2UgKnBhcmVudCwKKytRV2F5bGFuZFhkZ1N1cmZhY2U6OlBv cHVwOjpQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZhY2UsIFFXYXlsYW5kV2luZG93 ICpwYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXRXYXlsYW5kOjp4 ZGdfcG9zaXRpb25lciAqcG9zaXRpb25lcikKKy0gICAgOiB4ZGdfcG9wdXAoeGRnU3VyZmFjZS0+ Z2V0X3BvcHVwKHBhcmVudC0+b2JqZWN0KCksIHBvc2l0aW9uZXItPm9iamVjdCgpKSkKKy0gICAg LCBtX3hkZ1N1cmZhY2UoeGRnU3VyZmFjZSkKKysgICAgOiBtX3hkZ1N1cmZhY2UoeGRnU3VyZmFj ZSkKKysgICAgLCBtX3BhcmVudFhkZ1N1cmZhY2UocW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3Vy ZmFjZSAqPihwYXJlbnQtPnNoZWxsU3VyZmFjZSgpKSkKKyAgICAgLCBtX3BhcmVudChwYXJlbnQp CisgeworKworKyAgICBpbml0KHhkZ1N1cmZhY2UtPmdldF9wb3B1cChtX3BhcmVudFhkZ1N1cmZh Y2UgPyBtX3BhcmVudFhkZ1N1cmZhY2UtPm9iamVjdCgpIDogbnVsbHB0ciwgcG9zaXRpb25lci0+ b2JqZWN0KCkpKTsKKysgICAgaWYgKG1fcGFyZW50KSB7CisrICAgICAgICBtX3BhcmVudC0+YWRk Q2hpbGRQb3B1cChtX3hkZ1N1cmZhY2UtPndpbmRvdygpKTsKKysgICAgfQorIH0KKyAKKyBRV2F5 bGFuZFhkZ1N1cmZhY2U6OlBvcHVwOjp+UG9wdXAoKQorQEAgLTIxNiwxMCArMjEzLDI0IEBAIFFX YXlsYW5kWGRnU3VyZmFjZTo6UG9wdXA6On5Qb3B1cCgpCisgICAgIGlmIChpc0luaXRpYWxpemVk KCkpCisgICAgICAgICBkZXN0cm95KCk7CisgCisrICAgIGlmIChtX3BhcmVudCkgeworKyAgICAg ICAgbV9wYXJlbnQtPnJlbW92ZUNoaWxkUG9wdXAobV94ZGdTdXJmYWNlLT53aW5kb3coKSk7Cisr ICAgIH0KKysKKyAgICAgaWYgKG1fZ3JhYmJpbmcpIHsKKyAgICAgICAgIGF1dG8gKnNoZWxsID0g bV94ZGdTdXJmYWNlLT5tX3NoZWxsOworICAgICAgICAgUV9BU1NFUlQoc2hlbGwtPm1fdG9wbW9z dEdyYWJiaW5nUG9wdXAgPT0gdGhpcyk7CistICAgICAgICBzaGVsbC0+bV90b3Btb3N0R3JhYmJp bmdQb3B1cCA9IG1fcGFyZW50LT5tX3BvcHVwOworKyAgICAgICAgc2hlbGwtPm1fdG9wbW9zdEdy YWJiaW5nUG9wdXAgPSBtX3BhcmVudFhkZ1N1cmZhY2UgPyBtX3BhcmVudFhkZ1N1cmZhY2UtPm1f cG9wdXAgOiBudWxscHRyOworKyAgICAgICAgbV9ncmFiYmluZyA9IGZhbHNlOworKworKyAgICAg ICAgLy8gU3ludGhlc2l6ZSBRdCBlbnRlci9sZWF2ZSBldmVudHMgZm9yIHBvcHVwCisrICAgICAg ICBRV2luZG93ICpsZWF2ZSA9IG51bGxwdHI7CisrICAgICAgICBpZiAobV94ZGdTdXJmYWNlICYm IG1feGRnU3VyZmFjZS0+d2luZG93KCkpCisrICAgICAgICAgICAgbGVhdmUgPSBtX3hkZ1N1cmZh Y2UtPndpbmRvdygpLT53aW5kb3coKTsKKysgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6 OmhhbmRsZUxlYXZlRXZlbnQobGVhdmUpOworKworKyAgICAgICAgaWYgKFFXaW5kb3cgKmVudGVy ID0gUUd1aUFwcGxpY2F0aW9uOjp0b3BMZXZlbEF0KFFDdXJzb3I6OnBvcygpKSkKKysgICAgICAg ICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVFbnRlckV2ZW50KGVudGVyLCBlbnRl ci0+bWFwRnJvbUdsb2JhbChRQ3Vyc29yOjpwb3MoKSksIFFDdXJzb3I6OnBvcygpKTsKKyAgICAg fQorIH0KKyAKK0BAIC0yNTcsNiArMjY4LDcgQEAgUVdheWxhbmRYZGdTdXJmYWNlOjpRV2F5bGFu ZFhkZ1N1cmZhY2UoUVdheWxhbmRYZGdTaGVsbCAqc2hlbGwsIDo6eGRnX3N1cmZhY2UgKnMKKyAg ICAgICAgICAgICAgICAgbV90b3BsZXZlbC0+c2V0X3BhcmVudChwYXJlbnRYZGdTdXJmYWNlLT5t X3RvcGxldmVsLT5vYmplY3QoKSk7CisgICAgICAgICB9CisgICAgIH0KKysgICAgc2V0U2l6ZUhp bnRzKCk7CisgfQorIAorIFFXYXlsYW5kWGRnU3VyZmFjZTo6flFXYXlsYW5kWGRnU3VyZmFjZSgp CitAQCAtNDAwLDggKzQxMiw2IEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpzZXRQb3B1cChR V2F5bGFuZFdpbmRvdyAqcGFyZW50KQorIHsKKyAgICAgUV9BU1NFUlQoIW1fdG9wbGV2ZWwgJiYg IW1fcG9wdXApOworIAorLSAgICBhdXRvIHBhcmVudFhkZ1N1cmZhY2UgPSBzdGF0aWNfY2FzdDxR V2F5bGFuZFhkZ1N1cmZhY2UgKj4ocGFyZW50LT5zaGVsbFN1cmZhY2UoKSk7CistCisgICAgIGF1 dG8gcG9zaXRpb25lciA9IG5ldyBRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyKG1fc2hlbGwtPmNy ZWF0ZV9wb3NpdGlvbmVyKCkpOworICAgICAvLyBzZXRfcG9wdXAgZXhwZWN0cyBhIHBvc2l0aW9u IHJlbGF0aXZlIHRvIHRoZSBwYXJlbnQKKyAgICAgUVBvaW50IHRyYW5zaWVudFBvcyA9IG1fd2lu ZG93LT5nZW9tZXRyeSgpLnRvcExlZnQoKTsgLy8gdGhpcyBpcyBhYnNvbHV0ZQorQEAgLTQxNCw4 ICs0MjQsOSBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6c2V0UG9wdXAoUVdheWxhbmRXaW5k b3cgKnBhcmVudCkKKyAgICAgcG9zaXRpb25lci0+c2V0X2FuY2hvcihRdFdheWxhbmQ6OnhkZ19w b3NpdGlvbmVyOjphbmNob3JfdG9wX2xlZnQpOworICAgICBwb3NpdGlvbmVyLT5zZXRfZ3Jhdml0 eShRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyOjpncmF2aXR5X2JvdHRvbV9yaWdodCk7CisgICAg IHBvc2l0aW9uZXItPnNldF9zaXplKG1fd2luZG93LT5nZW9tZXRyeSgpLndpZHRoKCksIG1fd2lu ZG93LT5nZW9tZXRyeSgpLmhlaWdodCgpKTsKKy0gICAgbV9wb3B1cCA9IG5ldyBQb3B1cCh0aGlz LCBwYXJlbnRYZGdTdXJmYWNlLCBwb3NpdGlvbmVyKTsKKysgICAgbV9wb3B1cCA9IG5ldyBQb3B1 cCh0aGlzLCBwYXJlbnQsIHBvc2l0aW9uZXIpOworICAgICBwb3NpdGlvbmVyLT5kZXN0cm95KCk7 CisrCisgICAgIGRlbGV0ZSBwb3NpdGlvbmVyOworIH0KKyAKK0BAIC00MzcsNiArNDQ4LDIzIEBA IHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpzZXRHcmFiUG9wdXAoUVdheWxhbmRXaW5kb3cgKnBh cmVudCwgUVdheWxhbmRJbnB1dERldmljCisgICAgIH0KKyAgICAgc2V0UG9wdXAocGFyZW50KTsK KyAgICAgbV9wb3B1cC0+Z3JhYihkZXZpY2UsIHNlcmlhbCk7CisrCisrICAgIC8vIFN5bnRoZXNp emUgUXQgZW50ZXIvbGVhdmUgZXZlbnRzIGZvciBwb3B1cAorKyAgICBpZiAoIXBhcmVudCkKKysg ICAgICAgIHJldHVybjsKKysgICAgUVdpbmRvdyAqY3VycmVudCA9IFFHdWlBcHBsaWNhdGlvbjo6 dG9wTGV2ZWxBdChRQ3Vyc29yOjpwb3MoKSk7CisrICAgIFFXaW5kb3cgKmxlYXZlID0gcGFyZW50 LT53aW5kb3coKTsKKysgICAgaWYgKGN1cnJlbnQgIT0gbGVhdmUpCisrICAgICAgICByZXR1cm47 CisrCisrICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUxlYXZlRXZlbnQobGVhdmUp OworKworKyAgICBRV2luZG93ICplbnRlciA9IG51bGxwdHI7CisrICAgIGlmIChtX3BvcHVwICYm IG1fcG9wdXAtPm1feGRnU3VyZmFjZSAmJiBtX3BvcHVwLT5tX3hkZ1N1cmZhY2UtPndpbmRvdygp KQorKyAgICAgICAgZW50ZXIgPSBtX3BvcHVwLT5tX3hkZ1N1cmZhY2UtPndpbmRvdygpLT53aW5k b3coKTsKKysKKysgICAgaWYgKGVudGVyKQorKyAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFj ZTo6aGFuZGxlRW50ZXJFdmVudChlbnRlciwgZW50ZXItPm1hcEZyb21HbG9iYWwoUUN1cnNvcjo6 cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSk7CisgfQorIAorIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNl Ojp4ZGdfc3VyZmFjZV9jb25maWd1cmUodWludDMyX3Qgc2VyaWFsKQorZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhk Z3NoZWxsX3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1z aGVsbC9xd2F5bGFuZHhkZ3NoZWxsX3AuaAoraW5kZXggOTY3ODUyMDUuLjRiNTE4ZjBhIDEwMDY0 NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxs L3F3YXlsYW5keGRnc2hlbGxfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxp bnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbF9wLmgKK0BAIC0xMzEsMTQgKzEz MSwxNSBAQCBwcml2YXRlOgorIAorICAgICBjbGFzcyBQb3B1cCA6IHB1YmxpYyBRdFdheWxhbmQ6 OnhkZ19wb3B1cCB7CisgICAgIHB1YmxpYzoKKy0gICAgICAgIFBvcHVwKFFXYXlsYW5kWGRnU3Vy ZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRYZGdTdXJmYWNlICpwYXJlbnQsIFF0V2F5bGFuZDo6 eGRnX3Bvc2l0aW9uZXIgKnBvc2l0aW9uZXIpOworKyAgICAgICAgUG9wdXAoUVdheWxhbmRYZGdT dXJmYWNlICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFdpbmRvdyAqcGFyZW50LCBRdFdheWxhbmQ6Onhk Z19wb3NpdGlvbmVyICpwb3NpdGlvbmVyKTsKKyAgICAgICAgIH5Qb3B1cCgpIG92ZXJyaWRlOwor IAorICAgICAgICAgdm9pZCBncmFiKFFXYXlsYW5kSW5wdXREZXZpY2UgKnNlYXQsIHVpbnQgc2Vy aWFsKTsKKyAgICAgICAgIHZvaWQgeGRnX3BvcHVwX3BvcHVwX2RvbmUoKSBvdmVycmlkZTsKKyAK KyAgICAgICAgIFFXYXlsYW5kWGRnU3VyZmFjZSAqbV94ZGdTdXJmYWNlID0gbnVsbHB0cjsKKy0g ICAgICAgIFFXYXlsYW5kWGRnU3VyZmFjZSAqbV9wYXJlbnQgPSBudWxscHRyOworKyAgICAgICAg UVdheWxhbmRYZGdTdXJmYWNlICptX3BhcmVudFhkZ1N1cmZhY2UgPSBudWxscHRyOworKyAgICAg ICAgUVdheWxhbmRXaW5kb3cgKm1fcGFyZW50ID0gbnVsbHB0cjsKKyAgICAgICAgIGJvb2wgbV9n cmFiYmluZyA9IGZhbHNlOworICAgICB9OworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMv cGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdy YXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5jcHAKK2luZGV4IDg3NjlkOTcxLi5kYTBk ZDZhNyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9u L3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb24uY3BwCisrKysgYi9xdHdheWxh bmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVs bGludGVncmF0aW9uLmNwcAorQEAgLTY5LDIwICs2OSw2IEBAIFFXYXlsYW5kU2hlbGxTdXJmYWNl ICpRV2F5bGFuZFhkZ1NoZWxsSW50ZWdyYXRpb246OmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFu ZFdpCisgICAgIHJldHVybiBtX3hkZ1NoZWxsLT5nZXRYZGdTdXJmYWNlKHdpbmRvdyk7CisgfQor IAorLXZvaWQgUVdheWxhbmRYZGdTaGVsbEludGVncmF0aW9uOjpoYW5kbGVLZXlib2FyZEZvY3Vz Q2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1 cykKKy17CistICAgIGlmIChuZXdGb2N1cykgeworLSAgICAgICAgYXV0byAqeGRnU3VyZmFjZSA9 IHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4obmV3Rm9jdXMtPnNoZWxsU3VyZmFj ZSgpKTsKKy0gICAgICAgIGlmICh4ZGdTdXJmYWNlICYmICF4ZGdTdXJmYWNlLT5oYW5kbGVzQWN0 aXZlU3RhdGUoKSkKKy0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2YXRl ZChuZXdGb2N1cyk7CistICAgIH0KKy0gICAgaWYgKG9sZEZvY3VzICYmIHFvYmplY3RfY2FzdDxR V2F5bGFuZFhkZ1N1cmZhY2UgKj4ob2xkRm9jdXMtPnNoZWxsU3VyZmFjZSgpKSkgeworLSAgICAg ICAgYXV0byAqeGRnU3VyZmFjZSA9IHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4o b2xkRm9jdXMtPnNoZWxsU3VyZmFjZSgpKTsKKy0gICAgICAgIGlmICh4ZGdTdXJmYWNlICYmICF4 ZGdTdXJmYWNlLT5oYW5kbGVzQWN0aXZlU3RhdGUoKSkKKy0gICAgICAgICAgICBtX2Rpc3BsYXkt PmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG9sZEZvY3VzKTsKKy0gICAgfQorLX0KKy0KKyB9Cisg CisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb25fcC5o IGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXls YW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IGI2Y2FhNmM5Li4yZjkyOWY5OCAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVs bC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0 aW9uX3AuaAorQEAgLTY1LDcgKzY1LDYgQEAgcHVibGljOgorICAgICBRV2F5bGFuZFhkZ1NoZWxs SW50ZWdyYXRpb24oKSB7fQorICAgICBib29sIGluaXRpYWxpemUoUVdheWxhbmREaXNwbGF5ICpk aXNwbGF5KSBvdmVycmlkZTsKKyAgICAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKmNyZWF0ZVNoZWxs U3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93KSBvdmVycmlkZTsKKy0gICAgdm9pZCBoYW5k bGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5k V2luZG93ICpvbGRGb2N1cykgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAgICAgUVNjb3BlZFBv aW50ZXI8UVdheWxhbmRYZGdTaGVsbD4gbV94ZGdTaGVsbDsKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvc3JjL3NoYXJlZC9xd2F5bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyLmNwcCBiL3F0d2F5 bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXIuY3BwCitpbmRl eCA1MjZkMGVmNC4uZjUwY2NmMzAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3NoYXJlZC9x d2F5bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9z aGFyZWQvcXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlci5jcHAKK0BAIC0zOSw3ICszOSwx MCBAQAorIAorICNpbmNsdWRlICJxd2F5bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyX3AuaCIK KyAKKysjaW5jbHVkZSA8UUJydXNoPgorKyNpbmNsdWRlIDxRR3VpQXBwbGljYXRpb24+CisgI2lu Y2x1ZGUgPFFJbnB1dE1ldGhvZD4KKysjaW5jbHVkZSA8UVBhbGV0dGU+CisgI2luY2x1ZGUgPFFU ZXh0Q2hhckZvcm1hdD4KKyAKKyAjaWZkZWYgUVRfQlVJTERfV0FZTEFORENPTVBPU0lUT1JfTElC CitAQCAtODEsMzIgKzg0LDM4IEBAIHZvaWQgUVdheWxhbmRJbnB1dE1ldGhvZEV2ZW50QnVpbGRl cjo6YWRkUHJlZWRpdFN0eWxpbmcodWludDMyX3QgaW5kZXgsIHVpbnQzMl90CisgICAgIFFUZXh0 Q2hhckZvcm1hdCBmb3JtYXQ7CisgCisgICAgIHN3aXRjaCAoc3R5bGUpIHsKKy0gICAgY2FzZSAw OgorLSAgICBjYXNlIDE6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlM RV9OT05FOgorKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJF RURJVF9TVFlMRV9ERUZBVUxUOgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRf U1RZTEVfVU5ERVJMSU5FOgorICAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7 CisgICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5n bGVVbmRlcmxpbmUpOworICAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRo b2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwg bGVuZ3RoLCBmb3JtYXQpKTsKKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIDI6CistICAgIGNh c2UgMzoKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX0FDVElWRToK KysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX0lOQUNUSVZFOgorICAg ICAgICAgZm9ybWF0LnNldEZvbnRXZWlnaHQoUUZvbnQ6OkJvbGQpOworICAgICAgICAgZm9ybWF0 LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7CisgICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5 bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUpOworICAgICAgICAgbV9wcmVlZGl0 U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2 ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3JtYXQpKTsKKyAgICAgICAgIGJyZWFr OworLSAgICBjYXNlIDQ6CistICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsK Ky0gICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4dENoYXJGb3JtYXQ6OlNpbmds ZVVuZGVybGluZSk7CistICAgICAgICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhv ZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4LCBs ZW5ndGgsIGZvcm1hdCkpOworKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZ TEVfSElHSExJR0hUOgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVf U0VMRUNUSU9OOgorKyAgICAgICAgeworKyAgICAgICAgICAgIGZvcm1hdC5zZXRGb250VW5kZXJs aW5lKHRydWUpOworKyAgICAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4dENo YXJGb3JtYXQ6OlNpbmdsZVVuZGVybGluZSk7CisrICAgICAgICAgICAgUVBhbGV0dGUgcGFsZXR0 ZSA9IHFBcHAtPnBhbGV0dGUoKTsKKysgICAgICAgICAgICBmb3JtYXQuc2V0QmFja2dyb3VuZChR QnJ1c2gocGFsZXR0ZS5jb2xvcihRUGFsZXR0ZTo6QWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0 KSkpOworKyAgICAgICAgICAgIGZvcm1hdC5zZXRGb3JlZ3JvdW5kKFFCcnVzaChwYWxldHRlLmNv bG9yKFFQYWxldHRlOjpBY3RpdmUsIFFQYWxldHRlOjpIaWdobGlnaHRlZFRleHQpKSk7CisrICAg ICAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmli dXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3JtYXQp KTsKKysgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIDU6CisrICAgIGNhc2Ug WldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9JTkNPUlJFQ1Q6CisgICAgICAgICBmb3Jt YXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsKKyAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVT dHlsZShRVGV4dENoYXJGb3JtYXQ6OldhdmVVbmRlcmxpbmUpOworICAgICAgICAgZm9ybWF0LnNl dFVuZGVybGluZUNvbG9yKFFDb2xvcihRdDo6cmVkKSk7CisgICAgICAgICBtX3ByZWVkaXRTdHls ZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6 OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkpOworICAgICAgICAgYnJlYWs7Cist Ly8gICAgY2FzZSBRdFdheWxhbmQ6OndsX3RleHRfaW5wdXQ6OnByZWVkaXRfc3R5bGVfc2VsZWN0 aW9uOgorLS8vICAgIGNhc2UgUXRXYXlsYW5kOjp3bF90ZXh0X2lucHV0OjpwcmVlZGl0X3N0eWxl X25vbmU6CisgICAgIGRlZmF1bHQ6CisgICAgICAgICBicmVhazsKKyAgICAgfQorQEAgLTE1Myw3 ICsxNjIsNyBAQCBRSW5wdXRNZXRob2RFdmVudCBRV2F5bGFuZElucHV0TWV0aG9kRXZlbnRCdWls ZGVyOjpidWlsZFByZWVkaXQoY29uc3QgUVN0cmluZyAmdAorIAorICAgICBpZiAobV9wcmVlZGl0 Q3Vyc29yIDwgMCkgeworICAgICAgICAgYXR0cmlidXRlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZl bnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6Q3Vyc29yLCAwLCAwLCBRVmFyaWFudCgp KSk7CistICAgIH0gZWxzZSBpZiAobV9wcmVlZGl0Q3Vyc29yID4gMCkgeworKyAgICB9IGVsc2Ug eworICAgICAgICAgYXR0cmlidXRlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0 ZShRSW5wdXRNZXRob2RFdmVudDo6Q3Vyc29yLCBpbmRleEZyb21XYXlsYW5kKHRleHQsIG1fcHJl ZWRpdEN1cnNvciksIDEsIFFWYXJpYW50KCkpKTsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kbWltZWhlbHBlci5jcHAgYi9xdHdheWxhbmQvc3Jj L3NoYXJlZC9xd2F5bGFuZG1pbWVoZWxwZXIuY3BwCitpbmRleCBhNWZkZDM0ZC4uZTJmZTE5Mjgg MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZG1pbWVoZWxwZXIuY3Bw CisrKysgYi9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZG1pbWVoZWxwZXIuY3BwCitAQCAt NjAsNyArNjAsNyBAQCBRQnl0ZUFycmF5IFFXYXlsYW5kTWltZUhlbHBlcjo6Z2V0Qnl0ZUFycmF5 KFFNaW1lRGF0YSAqbWltZURhdGEsIGNvbnN0IFFTdHJpbmcgJgorICAgICAgICAgICAgIGJ1Zi5v cGVuKFFJT0RldmljZTo6UmVhZFdyaXRlKTsKKyAgICAgICAgICAgICBRQnl0ZUFycmF5IGZtdCA9 ICJCTVAiOworICAgICAgICAgICAgIGlmIChtaW1lVHlwZS5zdGFydHNXaXRoKFFMYXRpbjFTdHJp bmcoImltYWdlLyIpKSkgeworLSAgICAgICAgICAgICAgICBRQnl0ZUFycmF5IGltZ0ZtdCA9IG1p bWVUeXBlLm1pZCg2KS50b1VwcGVyKCkudG9MYXRpbjEoKTsKKysgICAgICAgICAgICAgICAgUUJ5 dGVBcnJheSBpbWdGbXQgPSBtaW1lVHlwZS5taWQoNikudG9Mb3dlcigpLnRvTGF0aW4xKCk7Cisg ICAgICAgICAgICAgICAgIGlmIChRSW1hZ2VXcml0ZXI6OnN1cHBvcnRlZEltYWdlRm9ybWF0cygp LmNvbnRhaW5zKGltZ0ZtdCkpCisgICAgICAgICAgICAgICAgICAgICBmbXQgPSBpbWdGbXQ7Cisg ICAgICAgICAgICAgfQorQEAgLTc0LDcgKzc0LDcgQEAgUUJ5dGVBcnJheSBRV2F5bGFuZE1pbWVI ZWxwZXI6OmdldEJ5dGVBcnJheShRTWltZURhdGEgKm1pbWVEYXRhLCBjb25zdCBRU3RyaW5nICYK KyAgICAgICAgIFFMaXN0PFFVcmw+IHVybHMgPSBtaW1lRGF0YS0+dXJscygpOworICAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCB1cmxzLmNvdW50KCk7ICsraSkgeworICAgICAgICAgICAgIGNv bnRlbnQuYXBwZW5kKHVybHMuYXQoaSkudG9FbmNvZGVkKCkpOworLSAgICAgICAgICAgIGNvbnRl bnQuYXBwZW5kKCdcbicpOworKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJcclxuIik7Cisg ICAgICAgICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgICBjb250ZW50ID0gbWltZURhdGEtPmRh dGEobWltZVR5cGUpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9k YXRhZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9j bGllbnQvZGF0YWRldmljZXYxL3RzdF9kYXRhZGV2aWNldjEuY3BwCitpbmRleCAxNTY4YjNiOS4u MDY3NDEwZDAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvZGF0YWRl dmljZXYxL3RzdF9kYXRhZGV2aWNldjEuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9j bGllbnQvZGF0YWRldmljZXYxL3RzdF9kYXRhZGV2aWNldjEuY3BwCitAQCAtMzUsNyArMzUsNyBA QAorIAorIHVzaW5nIG5hbWVzcGFjZSBNb2NrQ29tcG9zaXRvcjsKKyAKKy1jb25zdGV4cHIgaW50 IGRhdGFEZXZpY2VWZXJzaW9uID0gMTsKKytjb25zdGV4cHIgaW50IGRhdGFEZXZpY2VWZXJzaW9u ID0gMzsKKyAKKyBjbGFzcyBEYXRhRGV2aWNlQ29tcG9zaXRvciA6IHB1YmxpYyBEZWZhdWx0Q29t cG9zaXRvciB7CisgcHVibGljOgorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2Ns aWVudC9zZWF0djUvdHN0X3NlYXR2NS5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQv c2VhdHY1L3RzdF9zZWF0djUuY3BwCitpbmRleCA5MzEyYzJlNS4uMmVhMzgyZjEgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2VhdHY1L3RzdF9zZWF0djUuY3BwCisr KysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2VhdHY1L3RzdF9zZWF0djUuY3BwCitA QCAtNzMsNiArNzMsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIG11bHRpVG91Y2goKTsK KyAgICAgdm9pZCBtdWx0aVRvdWNoVXBBbmRNb3Rpb25GcmFtZSgpOworICAgICB2b2lkIHRhcEFu ZE1vdmVJblNhbWVGcmFtZSgpOworKyAgICB2b2lkIGNhbmNlbFRvdWNoKCk7CisgfTsKKyAKKyB2 b2lkIHRzdF9zZWF0djU6OmJpbmRzVG9TZWF0KCkKK0BAIC02NDYsNSArNjQ3LDM0IEBAIHZvaWQg dHN0X3NlYXR2NTo6dGFwQW5kTW92ZUluU2FtZUZyYW1lKCkKKyAgICAgUVRSWV9DT01QQVJFKHdp bmRvdy5tX2V2ZW50cy5sYXN0KCkudG91Y2hQb2ludHMuZmlyc3QoKS5zdGF0ZSgpLCBRdDo6VG91 Y2hQb2ludFN0YXRlOjpUb3VjaFBvaW50UmVsZWFzZWQpOworIH0KKyAKKyt2b2lkIHRzdF9zZWF0 djU6OmNhbmNlbFRvdWNoKCkKKyt7CisrICAgIFRvdWNoV2luZG93IHdpbmRvdzsKKysgICAgUUNP TVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdTdXJmYWNlKCkgJiYgeGRnU3VyZmFjZSgpLT5tX2NvbW1p dHRlZENvbmZpZ3VyZVNlcmlhbCk7CisrCisrICAgIGV4ZWMoWz1dIHsKKysgICAgICAgIGF1dG8g KnQgPSB0b3VjaCgpOworKyAgICAgICAgYXV0byAqYyA9IGNsaWVudCgpOworKyAgICAgICAgdC0+ c2VuZERvd24oeGRnVG9wbGV2ZWwoKS0+c3VyZmFjZSgpLCB7MzIsIDMyfSwgMSk7CisrICAgICAg ICB0LT5zZW5kRnJhbWUoYyk7CisrICAgICAgICB0LT5zZW5kQ2FuY2VsKGMpOworKyAgICAgICAg dC0+c2VuZEZyYW1lKGMpOworKyAgICB9KTsKKysKKysgICAgUVRSWV9WRVJJRlkoIXdpbmRvdy5t X2V2ZW50cy5lbXB0eSgpKTsKKysgICAgeworKyAgICAgICAgYXV0byBlID0gd2luZG93Lm1fZXZl bnRzLnRha2VGaXJzdCgpOworKyAgICAgICAgUUNPTVBBUkUoZS50eXBlLCBRRXZlbnQ6OlRvdWNo QmVnaW4pOworKyAgICAgICAgUUNPTVBBUkUoZS50b3VjaFBvaW50U3RhdGVzLCBRdDo6VG91Y2hQ b2ludFByZXNzZWQpOworKyAgICAgICAgUUNPTVBBUkUoZS50b3VjaFBvaW50cy5sZW5ndGgoKSwg MSk7CisrICAgICAgICBRQ09NUEFSRShlLnRvdWNoUG9pbnRzLmZpcnN0KCkucG9zKCksIFFQb2lu dEYoMzItd2luZG93LmZyYW1lTWFyZ2lucygpLmxlZnQoKSwgMzItd2luZG93LmZyYW1lTWFyZ2lu cygpLnRvcCgpKSk7CisrICAgIH0KKysgICAgeworKyAgICAgICAgYXV0byBlID0gd2luZG93Lm1f ZXZlbnRzLnRha2VGaXJzdCgpOworKyAgICAgICAgUUNPTVBBUkUoZS50eXBlLCBRRXZlbnQ6OlRv dWNoQ2FuY2VsKTsKKysgICAgICAgIFFDT01QQVJFKGUudG91Y2hQb2ludHMubGVuZ3RoKCksIDAp OworKyAgICB9CisrfQorKworIFFDT01QT1NJVE9SX1RFU1RfTUFJTih0c3Rfc2VhdHY1KQorICNp bmNsdWRlICJ0c3Rfc2VhdHY1Lm1vYyIKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0 by9jbGllbnQvc2hhcmVkL2NvcmVjb21wb3NpdG9yLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRv L2NsaWVudC9zaGFyZWQvY29yZWNvbXBvc2l0b3IuY3BwCitpbmRleCA1YzZjODNiYS4uZmE5Yjc2 NjIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVj b21wb3NpdG9yLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9j b3JlY29tcG9zaXRvci5jcHAKK0BAIC0yNyw2ICsyNyw3IEBACisgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKyAKKyAjaW5jbHVkZSAiY29yZWNvbXBvc2l0b3IuaCIKKysjaW5jbHVkZSA8dGhyZWFkPgor IAorIG5hbWVzcGFjZSBNb2NrQ29tcG9zaXRvciB7CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuY3BwIGIvcXR3YXlsYW5kL3Rl c3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuY3BwCitpbmRleCAwZDk4ODUyMS4u ZDFhMmU3Y2IgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVk L2NvcmVwcm90b2NvbC5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFy ZWQvY29yZXByb3RvY29sLmNwcAorQEAgLTQ1MSw2ICs0NTEsMTMgQEAgdm9pZCBUb3VjaDo6c2Vu ZEZyYW1lKHdsX2NsaWVudCAqY2xpZW50KQorICAgICAgICAgc2VuZF9mcmFtZShyLT5oYW5kbGUp OworIH0KKyAKKyt2b2lkIFRvdWNoOjpzZW5kQ2FuY2VsKHdsX2NsaWVudCAqY2xpZW50KQorK3sK KysgICAgY29uc3QgYXV0byB0b3VjaFJlc291cmNlcyA9IHJlc291cmNlTWFwKCkudmFsdWVzKGNs aWVudCk7CisrICAgIGZvciAoYXV0byAqciA6IHRvdWNoUmVzb3VyY2VzKQorKyAgICAgICAgc2Vu ZF9jYW5jZWwoci0+aGFuZGxlKTsKKyt9CisrCisgdWludCBLZXlib2FyZDo6c2VuZEVudGVyKFN1 cmZhY2UgKnN1cmZhY2UpCisgeworICAgICBhdXRvIHNlcmlhbCA9IG1fc2VhdC0+bV9jb21wb3Np dG9yLT5uZXh0U2VyaWFsKCk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xp ZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuaCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9z aGFyZWQvY29yZXByb3RvY29sLmgKK2luZGV4IGExYWYxMzdhLi4yMTBkOGRkYiAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmgKKysr KyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmgKK0BA IC0xNTgsNyArMTU4LDcgQEAgY2xhc3MgV2xDb21wb3NpdG9yIDogcHVibGljIEdsb2JhbCwgcHVi bGljIFF0V2F5bGFuZFNlcnZlcjo6d2xfY29tcG9zaXRvcgorIHsKKyAgICAgUV9PQkpFQ1QKKyBw dWJsaWM6CistICAgIGV4cGxpY2l0IFdsQ29tcG9zaXRvcihDb3JlQ29tcG9zaXRvciAqY29tcG9z aXRvciwgaW50IHZlcnNpb24gPSAzKQorKyAgICBleHBsaWNpdCBXbENvbXBvc2l0b3IoQ29yZUNv bXBvc2l0b3IgKmNvbXBvc2l0b3IsIGludCB2ZXJzaW9uID0gNCkKKyAgICAgICAgIDogUXRXYXls YW5kU2VydmVyOjp3bF9jb21wb3NpdG9yKGNvbXBvc2l0b3ItPm1fZGlzcGxheSwgdmVyc2lvbikK KyAgICAgICAgICwgbV9jb21wb3NpdG9yKGNvbXBvc2l0b3IpCisgICAgIHt9CitAQCAtMzY0LDYg KzM2NCw3IEBAIHB1YmxpYzoKKyAgICAgdWludCBzZW5kVXAod2xfY2xpZW50ICpjbGllbnQsIGlu dCBpZCk7CisgICAgIHZvaWQgc2VuZE1vdGlvbih3bF9jbGllbnQgKmNsaWVudCwgY29uc3QgUVBv aW50RiAmcG9zaXRpb24sIGludCBpZCk7CisgICAgIHZvaWQgc2VuZEZyYW1lKHdsX2NsaWVudCAq Y2xpZW50KTsKKysgICAgdm9pZCBzZW5kQ2FuY2VsKHdsX2NsaWVudCAqY2xpZW50KTsKKyAKKyAg ICAgU2VhdCAqbV9zZWF0ID0gbnVsbHB0cjsKKyB9OworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90 ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tjb21wb3NpdG9yLmNwcCBiL3F0d2F5bGFu ZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tjb21wb3NpdG9yLmNwcAoraW5kZXgg YTQxNWNiZjUuLmIxZDNkMDdkIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xp ZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMv YXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2NrY29tcG9zaXRvci5jcHAKK0BAIC0zNDIsNyArMzQy LDcgQEAgQ29tcG9zaXRvcjo6Q29tcG9zaXRvcihNb2NrQ29tcG9zaXRvciAqbW9ja0NvbXBvc2l0 b3IpCisgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgIH0KKyAKKy0gICAgd2xfZ2xv YmFsX2NyZWF0ZShtX2Rpc3BsYXksICZ3bF9jb21wb3NpdG9yX2ludGVyZmFjZSwgMSwgdGhpcywg YmluZENvbXBvc2l0b3IpOworKyAgICB3bF9nbG9iYWxfY3JlYXRlKG1fZGlzcGxheSwgJndsX2Nv bXBvc2l0b3JfaW50ZXJmYWNlLCA0LCB0aGlzLCBiaW5kQ29tcG9zaXRvcik7CisgCisgICAgIG1f ZGF0YV9kZXZpY2VfbWFuYWdlci5yZXNldChuZXcgRGF0YURldmljZU1hbmFnZXIodGhpcywgbV9k aXNwbGF5KSk7CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3No YXJlZF9vbGQvbW9ja3N1cmZhY2UuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3No YXJlZF9vbGQvbW9ja3N1cmZhY2UuY3BwCitpbmRleCBlOWRmNWY5MC4uYzMyNDZlNGEgMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFj ZS5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tz dXJmYWNlLmNwcAorQEAgLTEyNSw2ICsxMjUsMTYgQEAgdm9pZCBTdXJmYWNlOjpzdXJmYWNlX2Rh bWFnZShSZXNvdXJjZSAqcmVzb3VyY2UsCisgICAgIFFfVU5VU0VEKGhlaWdodCk7CisgfQorIAor K3ZvaWQgU3VyZmFjZTo6c3VyZmFjZV9kYW1hZ2VfYnVmZmVyKFJlc291cmNlICpyZXNvdXJjZSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHgsIGludDMyX3Qg eSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisreworKyAgICBRX1VOVVNFRChyZXNv dXJjZSk7CisrICAgIFFfVU5VU0VEKHgpOworKyAgICBRX1VOVVNFRCh5KTsKKysgICAgUV9VTlVT RUQod2lkdGgpOworKyAgICBRX1VOVVNFRChoZWlnaHQpOworK30KKysKKyB2b2lkIFN1cmZhY2U6 OnN1cmZhY2VfZnJhbWUoUmVzb3VyY2UgKnJlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCBjYWxsYmFjaykKKyB7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rl c3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuaCBiL3F0d2F5bGFuZC90ZXN0 cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmgKK2luZGV4IDk0OWRjMjNkLi5k MTc2ODM3ZSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRf b2xkL21vY2tzdXJmYWNlLmgKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFy ZWRfb2xkL21vY2tzdXJmYWNlLmgKK0BAIC02NSw2ICs2NSw4IEBAIHByb3RlY3RlZDoKKyAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd2xfcmVzb3VyY2UgKmJ1ZmZlciwgaW50IHgsIGlu dCB5KSBvdmVycmlkZTsKKyAgICAgdm9pZCBzdXJmYWNlX2RhbWFnZShSZXNvdXJjZSAqcmVzb3Vy Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMy X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KSBvdmVycmlkZTsKKysgICAgdm9pZCBzdXJmYWNlX2Rh bWFnZV9idWZmZXIoUmVzb3VyY2UgKnJlc291cmNlLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln aHQpIG92ZXJyaWRlOworICAgICB2b2lkIHN1cmZhY2VfZnJhbWUoUmVzb3VyY2UgKnJlc291cmNl LAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY2FsbGJhY2spIG92ZXJyaWRlOwor ICAgICB2b2lkIHN1cmZhY2VfY29tbWl0KFJlc291cmNlICpyZXNvdXJjZSkgb3ZlcnJpZGU7Citk aWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3N1cmZhY2UvdHN0X3N1cmZh Y2UuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3N1cmZhY2UvdHN0X3N1cmZhY2Uu Y3BwCitpbmRleCA5NWU0ZTYwOS4uNjBjNjcyY2UgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVz dHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3VyZmFjZS5jcHAKKysrKyBiL3F0d2F5bGFuZC90 ZXN0cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcAorQEAgLTEyOSw2ICsxMjks MTAgQEAgdm9pZCB0c3Rfc3VyZmFjZTo6d2FpdEZvckZyYW1lQ2FsbGJhY2tHbCgpCisgICAgIC8v IE1ha2Ugc3VyZSB3ZSBmb2xsb3cgZnJhbWUgY2FsbGJhY2tzIGZvciBzb21lIGZyYW1lcworICAg ICBmb3IgKGludCBpID0gMDsgaSA8IDU7ICsraSkgeworICAgICAgICAgeGRnUGluZ0FuZFdhaXRG b3JQb25nKCk7IC8vIE1ha2Ugc3VyZSB0aGluZ3MgaGF2ZSBoYXBwZW5lZCBvbiB0aGUgY2xpZW50 CisrICAgICAgICBpZiAoIXFFbnZpcm9ubWVudFZhcmlhYmxlSW50VmFsdWUoIlFUX1dBWUxBTkRf RElTQUJMRV9XSU5ET1dERUNPUkFUSU9OIikgJiYgaSA9PSAwKSB7CisrICAgICAgICAgICAgUUNP TVBBUkUoYnVmZmVyU3B5LmNvdW50KCksIDEpOworKyAgICAgICAgICAgIGJ1ZmZlclNweS5yZW1v dmVGaXJzdCgpOworKyAgICAgICAgfQorICAgICAgICAgZXhlYyhbJl0geworICAgICAgICAgICAg IFFWRVJJRlkoYnVmZmVyU3B5LmVtcHR5KCkpOyAvLyBNYWtlIHN1cmUgbm8gZXh0cmEgYnVmZmVy cyBoYXZlIGFycml2ZWQKKyAgICAgICAgICAgICBRVkVSSUZZKCF4ZGdUb3BsZXZlbCgpLT5zdXJm YWNlKCktPm1fd2FpdGluZ0ZyYW1lQ2FsbGJhY2tzLmVtcHR5KCkpOworZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC94ZGdzaGVsbC90c3RfeGRnc2hlbGwuY3BwIGIvcXR3 YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3hkZ3NoZWxsL3RzdF94ZGdzaGVsbC5jcHAKK2luZGV4 IDIyNzdiYmI4Li43NDc4NzViNCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2Ns aWVudC94ZGdzaGVsbC90c3RfeGRnc2hlbGwuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0 by9jbGllbnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcAorQEAgLTMxLDYgKzMxLDcgQEAKKyAj aW5jbHVkZSA8UXRHdWkvUU9wZW5HTFdpbmRvdz4KKyAjaW5jbHVkZSA8UXRHdWkvcXBhL3FwbGF0 Zm9ybW5hdGl2ZWludGVyZmFjZS5oPgorICNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQvcHJpdmF0 ZS93YXlsYW5kLXdheWxhbmQtY2xpZW50LXByb3RvY29sLmg+CisrI2luY2x1ZGUgPFF0V2F5bGFu ZENsaWVudC9wcml2YXRlL3F3YXlsYW5kd2luZG93X3AuaD4KKyAKKyB1c2luZyBuYW1lc3BhY2Ug TW9ja0NvbXBvc2l0b3I7CisgCitAQCAtNDUsNiArNDYsNyBAQCBwcml2YXRlIHNsb3RzOgorICAg ICB2b2lkIGNvbmZpZ3VyZVN0YXRlcygpOworICAgICB2b2lkIHBvcHVwKCk7CisgICAgIHZvaWQg dG9vbHRpcE9uUG9wdXAoKTsKKysgICAgdm9pZCB0b29sdGlwQW5kU2libGluZ1BvcHVwKCk7Cisg ICAgIHZvaWQgc3dpdGNoUG9wdXBzKCk7CisgICAgIHZvaWQgaGlkZVBvcHVwUGFyZW50KCk7Cisg ICAgIHZvaWQgcG9uZ3MoKTsKK0BAIC0xMzgsNiArMTQwLDcgQEAgdm9pZCB0c3RfeGRnc2hlbGw6 OmNvbmZpZ3VyZVNpemUoKQorIAorIHZvaWQgdHN0X3hkZ3NoZWxsOjpjb25maWd1cmVTdGF0ZXMo KQorIHsKKysgICAgUVZFUklGWShxcHV0ZW52KCJRVF9XQVlMQU5EX0ZSQU1FX0NBTExCQUNLX1RJ TUVPVVQiLCAiMCIpKTsKKyAgICAgUVJhc3RlcldpbmRvdyB3aW5kb3c7CisgICAgIHdpbmRvdy5y ZXNpemUoNjQsIDQ4KTsKKyAgICAgd2luZG93LnNob3coKTsKK0BAIC0xNTQsOSArMTU3LDEyIEBA IHZvaWQgdHN0X3hkZ3NoZWxsOjpjb25maWd1cmVTdGF0ZXMoKQorICAgICAvLyBUb3BsZXZlbCB3 aW5kb3dzIGRvbid0IGtub3cgdGhlaXIgcG9zaXRpb24gb24geGRnLXNoZWxsCisgLy8gICAgUUNP TVBBUkUod2luZG93LmZyYW1lR2VvbWV0cnkoKS50b3BMZWZ0KCksIFFQb2ludCgpKTsgLy8gVE9E TzogdGhpcyBkb2Vzbid0IGN1cnJlbnRseSB3b3JrIHdoZW4gd2luZG93IGRlY29yYXRpb25zIGFy ZSBlbmFibGVkCisgCistLy8gICAgUUVYUEVDVF9GQUlMKCIiLCAiY29uZmlndXJlIGhhcyBhbHJl YWR5IGJlZW4gYWNrZWQsIHdlIHNob3VsZG4ndCBoYXZlIHRvIHdhaXQgZm9yIGlzQWN0aXZlIiwg Q29udGludWUpOworLS8vICAgIFFWRVJJRlkod2luZG93LmlzQWN0aXZlKCkpOworLSAgICBRVFJZ X1ZFUklGWSh3aW5kb3cuaXNBY3RpdmUoKSk7IC8vIEp1c3QgbWFrZSBzdXJlIGl0IGV2ZW50dWFs bHkgZ2V0J3Mgc2V0IGNvcnJlY3RseQorKyAgICAvLyB3aW5kb3cud2luZG93c3RhdGUoKSBpcyBk cml2ZW4gYnkga2V5Ym9hcmQgZm9jdXMsIGhvd2V2ZXIgZm9yIGRlY29yYXRpb25zIHdlIHdhbnQg dG8gZm9sbG93CisrICAgIC8vIFhER1NoZWxsIHRoaXMgaXMgaW50ZXJuYWwgdG8gUXRXYXlsYW5k IHNvIGl0IGlzIHF1ZXJpZWQgZGlyZWN0bHkKKysgICAgYXV0byB3YXlsYW5kV2luZG93ID0gc3Rh dGljX2Nhc3Q8UXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFuZFdpbmRvdyAqPih3aW5kb3cuaGFuZGxl KCkpOworKyAgICBRX0FTU0VSVCh3YXlsYW5kV2luZG93KTsKKysgICAgUVRSWV9WRVJJRlkod2F5 bGFuZFdpbmRvdy0+d2luZG93U3RhdGVzKCkudGVzdEZsYWcoCisrICAgICAgICAgICAgUXQ6Oldp bmRvd0FjdGl2ZSkpOyAvLyBKdXN0IG1ha2Ugc3VyZSBpdCBldmVudHVhbGx5IGdldCdzIHNldCBj b3JyZWN0bHkKKyAKKyAgICAgY29uc3QgUVNpemUgc2NyZWVuU2l6ZSg2NDAsIDQ4MCk7CisgICAg IGNvbnN0IHVpbnQgbWF4aW1pemVkU2VyaWFsID0gZXhlYyhbPV0geworQEAgLTE4Niw2ICsxOTIs NyBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmlndXJlU3RhdGVzKCkKKyAgICAgUUNPTVBBUkUo d2luZG93LndpbmRvd1N0YXRlcygpLCBRdDo6V2luZG93Tm9TdGF0ZSk7CisgICAgIFFDT01QQVJF KHdpbmRvdy5mcmFtZUdlb21ldHJ5KCkuc2l6ZSgpLCB3aW5kb3dlZFNpemUpOworIC8vICAgIFFD T01QQVJFKHdpbmRvdy5mcmFtZUdlb21ldHJ5KCkudG9wTGVmdCgpLCBRUG9pbnQoKSk7IC8vIFRP RE86IHRoaXMgZG9lc24ndCBjdXJyZW50bHkgd29yayB3aGVuIHdpbmRvdyBkZWNvcmF0aW9ucyBh cmUgZW5hYmxlZAorKyAgICBRVkVSSUZZKHF1bnNldGVudigiUVRfV0FZTEFORF9GUkFNRV9DQUxM QkFDS19USU1FT1VUIikpOworIH0KKyAKKyB2b2lkIHRzdF94ZGdzaGVsbDo6cG9wdXAoKQorQEAg LTM0MCw2ICszNDcsOTIgQEAgdm9pZCB0c3RfeGRnc2hlbGw6OnRvb2x0aXBPblBvcHVwKCkKKyAg ICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAoMCksIG51bGxwdHIpOworIH0KKyAK Kyt2b2lkIHRzdF94ZGdzaGVsbDo6dG9vbHRpcEFuZFNpYmxpbmdQb3B1cCgpCisreworKyAgICBj bGFzcyBUb29sVGlwIDogcHVibGljIFFSYXN0ZXJXaW5kb3cgeworKyAgICBwdWJsaWM6CisrICAg ICAgICBleHBsaWNpdCBUb29sVGlwKFFXaW5kb3cgKnBhcmVudCkgeworKyAgICAgICAgICAgIHNl dFRyYW5zaWVudFBhcmVudChwYXJlbnQpOworKyAgICAgICAgICAgIHNldEZsYWdzKFF0OjpUb29s VGlwKTsKKysgICAgICAgICAgICByZXNpemUoMTAwLCAxMDApOworKyAgICAgICAgICAgIHNob3co KTsKKysgICAgICAgIH0KKysgICAgICAgIHZvaWQgbW91c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50 ICpldmVudCkgb3ZlcnJpZGUgeworKyAgICAgICAgICAgIFFSYXN0ZXJXaW5kb3c6Om1vdXNlUHJl c3NFdmVudChldmVudCk7CisrICAgICAgICAgICAgbV9wb3B1cCA9IG5ldyBRUmFzdGVyV2luZG93 OworKyAgICAgICAgICAgIG1fcG9wdXAtPnNldFRyYW5zaWVudFBhcmVudCh0cmFuc2llbnRQYXJl bnQoKSk7CisrICAgICAgICAgICAgbV9wb3B1cC0+c2V0RmxhZ3MoUXQ6OlBvcHVwKTsKKysgICAg ICAgICAgICBtX3BvcHVwLT5yZXNpemUoMTAwLCAxMDApOworKyAgICAgICAgICAgIG1fcG9wdXAt PnNob3coKTsKKysgICAgICAgIH0KKysKKysgICAgICAgIFFSYXN0ZXJXaW5kb3cgKm1fcG9wdXAg PSBudWxscHRyOworKyAgICB9OworKworKyAgICBjbGFzcyBXaW5kb3cgOiBwdWJsaWMgUVJhc3Rl cldpbmRvdyB7CisrICAgIHB1YmxpYzoKKysgICAgICAgIHZvaWQgbW91c2VQcmVzc0V2ZW50KFFN b3VzZUV2ZW50ICpldmVudCkgb3ZlcnJpZGUgeworKyAgICAgICAgICAgIFFSYXN0ZXJXaW5kb3c6 Om1vdXNlUHJlc3NFdmVudChldmVudCk7CisrICAgICAgICAgICAgbV90b29sdGlwID0gbmV3IFRv b2xUaXAodGhpcyk7CisrICAgICAgICB9CisrICAgICAgICBUb29sVGlwICptX3Rvb2x0aXAgPSBu dWxscHRyOworKyAgICB9OworKworKyAgICBXaW5kb3cgd2luZG93OworKyAgICB3aW5kb3cucmVz aXplKDIwMCwgMjAwKTsKKysgICAgd2luZG93LnNob3coKTsKKysKKysgICAgUUNPTVBPU0lUT1Jf VFJZX1ZFUklGWSh4ZGdUb3BsZXZlbCgpKTsKKysgICAgZXhlYyhbPV0geyB4ZGdUb3BsZXZlbCgp LT5zZW5kQ29tcGxldGVDb25maWd1cmUoKTsgfSk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJ RlkoeGRnVG9wbGV2ZWwoKS0+bV94ZGdTdXJmYWNlLT5tX2NvbW1pdHRlZENvbmZpZ3VyZVNlcmlh bCk7CisrCisrICAgIGV4ZWMoWz1dIHsKKysgICAgICAgIGF1dG8gKnN1cmZhY2UgPSB4ZGdUb3Bs ZXZlbCgpLT5zdXJmYWNlKCk7CisrICAgICAgICBhdXRvICpwID0gcG9pbnRlcigpOworKyAgICAg ICAgYXV0byAqYyA9IGNsaWVudCgpOworKyAgICAgICAgcC0+c2VuZEVudGVyKHN1cmZhY2UsIHsx MDAsIDEwMH0pOworKyAgICAgICAgcC0+c2VuZEZyYW1lKGMpOworKyAgICAgICAgcC0+c2VuZEJ1 dHRvbihjbGllbnQoKSwgQlROX0xFRlQsIFBvaW50ZXI6OmJ1dHRvbl9zdGF0ZV9wcmVzc2VkKTsK KysgICAgICAgIHAtPnNlbmRCdXR0b24oY2xpZW50KCksIEJUTl9MRUZULCBQb2ludGVyOjpidXR0 b25fc3RhdGVfcmVsZWFzZWQpOworKyAgICAgICAgcC0+c2VuZEZyYW1lKGMpOworKyAgICAgICAg cC0+c2VuZExlYXZlKHN1cmZhY2UpOworKyAgICAgICAgcC0+c2VuZEZyYW1lKGMpOworKyAgICB9 KTsKKysKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgpKTsKKysgICAgZXhl YyhbPV0geyB4ZGdQb3B1cCgpLT5zZW5kQ29tcGxldGVDb25maWd1cmUoUVJlY3QoMTAwLCAxMDAs IDEwMCwgMTAwKSk7IH0pOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKCkt Pm1feGRnU3VyZmFjZS0+bV9jb21taXR0ZWRDb25maWd1cmVTZXJpYWwpOworKyAgICBRQ09NUE9T SVRPUl9UUllfVkVSSUZZKCF4ZGdQb3B1cCgpLT5tX2dyYWJiZWQpOworKworKyAgICBleGVjKFs9 XSB7CisrICAgICAgICBhdXRvICpzdXJmYWNlID0geGRnUG9wdXAoKS0+c3VyZmFjZSgpOworKyAg ICAgICAgYXV0byAqcCA9IHBvaW50ZXIoKTsKKysgICAgICAgIGF1dG8gKmMgPSBjbGllbnQoKTsK KysgICAgICAgIHAtPnNlbmRFbnRlcihzdXJmYWNlLCB7MTAwLCAxMDB9KTsKKysgICAgICAgIHAt PnNlbmRGcmFtZShjKTsKKysgICAgICAgIHAtPnNlbmRCdXR0b24oY2xpZW50KCksIEJUTl9MRUZU LCBQb2ludGVyOjpidXR0b25fc3RhdGVfcHJlc3NlZCk7CisrICAgICAgICBwLT5zZW5kQnV0dG9u KGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9uX3N0YXRlX3JlbGVhc2VkKTsKKysg ICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgfSk7CisrCisrICAgIFFDT01QT1NJVE9SX1RS WV9WRVJJRlkoeGRnUG9wdXAoMSkpOworKyAgICBleGVjKFs9XSB7IHhkZ1BvcHVwKDEpLT5zZW5k Q29tcGxldGVDb25maWd1cmUoUVJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7IH0pOworKyAgICBR Q09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDEpLT5tX3hkZ1N1cmZhY2UtPm1fY29tbWl0 dGVkQ29uZmlndXJlU2VyaWFsKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1 cCgxKS0+bV9ncmFiYmVkKTsKKysKKysgICAgLy8gQ2xvc2UgdGhlIG1pZGRsZSB0b29sdGlwIChp dCBzaG91bGQgbm90IGNsb3NlIHRoZSBzaWJsaW5nIHBvcHVwKQorKyAgICB3aW5kb3cubV90b29s dGlwLT5jbG9zZSgpOworKworKyAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdQb3B1cCgx KSwgbnVsbHB0cik7CisrICAgIC8vIFZlcmlmeSB0aGUgcmVtYWluaW5nIHhkZyBzdXJmYWNlIGlz IGEgZ3JhYiBwb3B1cC4uCisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMCkp OworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDApLT5tX2dyYWJiZWQpOwor KworKyAgICB3aW5kb3cubV90b29sdGlwLT5tX3BvcHVwLT5jbG9zZSgpOworKyAgICBRQ09NUE9T SVRPUl9UUllfQ09NUEFSRSh4ZGdQb3B1cCgxKSwgbnVsbHB0cik7CisrICAgIFFDT01QT1NJVE9S X1RSWV9DT01QQVJFKHhkZ1BvcHVwKDApLCBudWxscHRyKTsKKyt9CisrCisgLy8gUVRCVUctNjU2 ODAKKyB2b2lkIHRzdF94ZGdzaGVsbDo6c3dpdGNoUG9wdXBzKCkKKyB7CitAQCAtNTA1LDcgKzU5 OCw3IEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjptaW5NYXhTaXplKCkKKyAgICAgd2luZG93LnNob3co KTsKKyAgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdUb3BsZXZlbCgpKTsKKyAKKy0gICAg ZXhlYyhbPV0geyB4ZGdUb3BsZXZlbCgpLT5zZW5kQ29tcGxldGVDb25maWd1cmUoKTsgfSk7Cisr ICAgIC8vIHdlIGRvbid0IHJvdW5kdHJpcCB3aXRoIG91ciBjb25maWd1cmF0aW9uIHRoZSBpbml0 aWFsIGNvbW1pdCBzaG91bGQgYmUgY29ycmVjdAorIAorICAgICBRQ09NUE9TSVRPUl9UUllfQ09N UEFSRSh4ZGdUb3BsZXZlbCgpLT5tX2NvbW1pdHRlZC5taW5TaXplLCBRU2l6ZSgxMDAsIDEwMCkp OworICAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdUb3BsZXZlbCgpLT5tX2NvbW1pdHRl ZC5tYXhTaXplLCBRU2l6ZSgxMDAwLCAxMDAwKSk7CitTdWJtb2R1bGUgcXR3ZWJjaGFubmVsIDYx ODQyMmVlLi5mODk0OTY1NToKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5u ZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVs L3FtZXRhb2JqZWN0cHVibGlzaGVyLmNwcAoraW5kZXggNTM2ZWI1Yy4uODk4ZDc2OSAxMDA2NDQK Ky0tLSBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlci5j cHAKKysrKyBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hl ci5jcHAKK0BAIC0xODYsOCArMTg2LDYgQEAgUV9ERUNMQVJFX1RZUEVJTkZPKE92ZXJsb2FkUmVz b2x1dGlvbkNhbmRpZGF0ZSwgUV9NT1ZBQkxFX1RZUEUpOworIFFNZXRhT2JqZWN0UHVibGlzaGVy OjpRTWV0YU9iamVjdFB1Ymxpc2hlcihRV2ViQ2hhbm5lbCAqd2ViQ2hhbm5lbCkKKyAgICAgOiBR T2JqZWN0KHdlYkNoYW5uZWwpCisgICAgICwgd2ViQ2hhbm5lbCh3ZWJDaGFubmVsKQorLSAgICAs IHNpZ25hbEhhbmRsZXIodGhpcykKKy0gICAgLCBjbGllbnRJc0lkbGUoZmFsc2UpCisgICAgICwg YmxvY2tVcGRhdGVzKGZhbHNlKQorICAgICAsIHByb3BlcnR5VXBkYXRlc0luaXRpYWxpemVkKGZh bHNlKQorIHsKK0BAIC0zMDEsMTcgKzI5OSwxNyBAQCBRSnNvbk9iamVjdCBRTWV0YU9iamVjdFB1 Ymxpc2hlcjo6Y2xhc3NJbmZvRm9yT2JqZWN0KGNvbnN0IFFPYmplY3QgKm9iamVjdCwgUVdlYgor ICAgICByZXR1cm4gZGF0YTsKKyB9CisgCistdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2V0 Q2xpZW50SXNJZGxlKGJvb2wgaXNJZGxlKQorK3ZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNl dENsaWVudElzSWRsZShib29sIGlzSWRsZSwgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAq dHJhbnNwb3J0KQorIHsKKy0gICAgaWYgKGNsaWVudElzSWRsZSA9PSBpc0lkbGUpIHsKKy0gICAg ICAgIHJldHVybjsKKy0gICAgfQorLSAgICBjbGllbnRJc0lkbGUgPSBpc0lkbGU7CistICAgIGlm ICghaXNJZGxlICYmIHRpbWVyLmlzQWN0aXZlKCkpIHsKKy0gICAgICAgIHRpbWVyLnN0b3AoKTsK Ky0gICAgfSBlbHNlIGlmIChpc0lkbGUgJiYgIXRpbWVyLmlzQWN0aXZlKCkpIHsKKy0gICAgICAg IHRpbWVyLnN0YXJ0KFBST1BFUlRZX1VQREFURV9JTlRFUlZBTCwgdGhpcyk7CistICAgIH0KKysg ICAgdHJhbnNwb3J0U3RhdGVbdHJhbnNwb3J0XS5jbGllbnRJc0lkbGUgPSBpc0lkbGU7CisrICAg IGlmIChpc0lkbGUpCisrICAgICAgICBzZW5kRW5xdWV1ZWRQcm9wZXJ0eVVwZGF0ZXModHJhbnNw b3J0KTsKKyt9CisrCisrYm9vbCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aXNDbGllbnRJZGxlKFFX ZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKKyt7CisrICAgIGF1dG8gZm91 bmQgPSB0cmFuc3BvcnRTdGF0ZS5maW5kKHRyYW5zcG9ydCk7CisrICAgIHJldHVybiBmb3VuZCAh PSB0cmFuc3BvcnRTdGF0ZS5lbmQoKSAmJiBmb3VuZC52YWx1ZSgpLmNsaWVudElzSWRsZTsKKyB9 CisgCisgUUpzb25PYmplY3QgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmluaXRpYWxpemVDbGllbnQo UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorQEAgLTMzMyw2ICszMzEs NyBAQCBRSnNvbk9iamVjdCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW5pdGlhbGl6ZUNsaWVudChR V2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0CisgCisgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hl cjo6aW5pdGlhbGl6ZVByb3BlcnR5VXBkYXRlcyhjb25zdCBRT2JqZWN0ICpjb25zdCBvYmplY3Qs IGNvbnN0IFFKc29uT2JqZWN0ICZvYmplY3RJbmZvKQorIHsKKysgICAgYXV0byAqc2lnbmFsSGFu ZGxlciA9IHNpZ25hbEhhbmRsZXJGb3Iob2JqZWN0KTsKKyAgICAgZm9yZWFjaCAoY29uc3QgUUpz b25WYWx1ZSAmcHJvcGVydHlJbmZvVmFyLCBvYmplY3RJbmZvW0tFWV9QUk9QRVJUSUVTXS50b0Fy cmF5KCkpIHsKKyAgICAgICAgIGNvbnN0IFFKc29uQXJyYXkgJnByb3BlcnR5SW5mbyA9IHByb3Bl cnR5SW5mb1Zhci50b0FycmF5KCk7CisgICAgICAgICBpZiAocHJvcGVydHlJbmZvLnNpemUoKSA8 IDIpIHsKK0BAIC0zNTMsMTkgKzM1MiwxOSBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpp bml0aWFsaXplUHJvcGVydHlVcGRhdGVzKGNvbnN0IFFPYmplY3QgKmNvbnN0IG9iamVjdAorIAor ICAgICAgICAgLy8gT25seSBjb25uZWN0IGZvciBhIHByb3BlcnR5IHVwZGF0ZSBvbmNlCisgICAg ICAgICBpZiAoY29ubmVjdGVkUHJvcGVydGllcy5pc0VtcHR5KCkpIHsKKy0gICAgICAgICAgICBz aWduYWxIYW5kbGVyLmNvbm5lY3RUbyhvYmplY3QsIHNpZ25hbEluZGV4KTsKKysgICAgICAgICAg ICBzaWduYWxIYW5kbGVyLT5jb25uZWN0VG8ob2JqZWN0LCBzaWduYWxJbmRleCk7CisgICAgICAg ICB9CisgCisgICAgICAgICBjb25uZWN0ZWRQcm9wZXJ0aWVzLmluc2VydChwcm9wZXJ0eUluZGV4 KTsKKyAgICAgfQorIAorICAgICAvLyBhbHNvIGFsd2F5cyBjb25uZWN0IHRvIGRlc3Ryb3llZCBz aWduYWwKKy0gICAgc2lnbmFsSGFuZGxlci5jb25uZWN0VG8ob2JqZWN0LCBzX2Rlc3Ryb3llZFNp Z25hbEluZGV4KTsKKysgICAgc2lnbmFsSGFuZGxlci0+Y29ubmVjdFRvKG9iamVjdCwgc19kZXN0 cm95ZWRTaWduYWxJbmRleCk7CisgfQorIAorIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNl bmRQZW5kaW5nUHJvcGVydHlVcGRhdGVzKCkKKyB7CistICAgIGlmIChibG9ja1VwZGF0ZXMgfHwg IWNsaWVudElzSWRsZSB8fCBwZW5kaW5nUHJvcGVydHlVcGRhdGVzLmlzRW1wdHkoKSkgeworKyAg ICBpZiAoYmxvY2tVcGRhdGVzKSB7CisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKK0BAIC00 MTUsMTggKzQxNCwxOSBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZW5kUGVuZGluZ1By b3BlcnR5VXBkYXRlcygpCisgCisgICAgIC8vIGRhdGEgZG9lcyBub3QgY29udGFpbiBzcGVjaWZp YyB1cGRhdGVzCisgICAgIGlmICghZGF0YS5pc0VtcHR5KCkpIHsKKy0gICAgICAgIHNldENsaWVu dElzSWRsZShmYWxzZSk7CistCisgICAgICAgICBtZXNzYWdlW0tFWV9EQVRBXSA9IGRhdGE7Cist ICAgICAgICBicm9hZGNhc3RNZXNzYWdlKG1lc3NhZ2UpOworKyAgICAgICAgZW5xdWV1ZUJyb2Fk Y2FzdE1lc3NhZ2UobWVzc2FnZSk7CisgICAgIH0KKyAKKyAgICAgLy8gc2VuZCBldmVyeSBwcm9w ZXJ0eSB1cGRhdGUgd2hpY2ggaXMgbm90IHN1cHBvc2VkIHRvIGJlIGJyb2FkY2FzdGVkCisgICAg IGNvbnN0IFFIYXNoPFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQqLCBRSnNvbkFycmF5Pjo6 Y29uc3RfaXRlcmF0b3Igc3VlbmQgPSBzcGVjaWZpY1VwZGF0ZXMuY29uc3RFbmQoKTsKKyAgICAg Zm9yIChRSGFzaDxRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0KiwgUUpzb25BcnJheT46OmNv bnN0X2l0ZXJhdG9yIGl0ID0gc3BlY2lmaWNVcGRhdGVzLmNvbnN0QmVnaW4oKTsgaXQgIT0gc3Vl bmQ7ICsraXQpIHsKKyAgICAgICAgIG1lc3NhZ2VbS0VZX0RBVEFdID0gaXQudmFsdWUoKTsKKy0g ICAgICAgIGl0LmtleSgpLT5zZW5kTWVzc2FnZShtZXNzYWdlKTsKKysgICAgICAgIGVucXVldWVN ZXNzYWdlKG1lc3NhZ2UsIGl0LmtleSgpKTsKKyAgICAgfQorKworKyAgICBmb3IgKGF1dG8gc3Rh dGUgPSB0cmFuc3BvcnRTdGF0ZS5iZWdpbigpOyBzdGF0ZSAhPSB0cmFuc3BvcnRTdGF0ZS5lbmQo KTsgKytzdGF0ZSkKKysgICAgICAgIHNlbmRFbnF1ZXVlZFByb3BlcnR5VXBkYXRlcyhzdGF0ZS5r ZXkoKSk7CisgfQorIAorIFFWYXJpYW50IFFNZXRhT2JqZWN0UHVibGlzaGVyOjppbnZva2VNZXRo b2QoUU9iamVjdCAqY29uc3Qgb2JqZWN0LCBjb25zdCBRTWV0YU1ldGhvZCAmbWV0aG9kLAorQEAg LTU3Miw3ICs1NzIsNyBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzaWduYWxFbWl0dGVk KGNvbnN0IFFPYmplY3QgKm9iamVjdCwgY29uc3QgaW50IHNpZ25hbAorICAgICAgICAgfQorICAg ICB9IGVsc2UgeworICAgICAgICAgcGVuZGluZ1Byb3BlcnR5VXBkYXRlc1tvYmplY3RdW3NpZ25h bEluZGV4XSA9IGFyZ3VtZW50czsKKy0gICAgICAgIGlmIChjbGllbnRJc0lkbGUgJiYgIWJsb2Nr VXBkYXRlcyAmJiAhdGltZXIuaXNBY3RpdmUoKSkgeworKyAgICAgICAgaWYgKCFibG9ja1VwZGF0 ZXMgJiYgIXRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgICB0aW1lci5zdGFydChQUk9Q RVJUWV9VUERBVEVfSU5URVJWQUwsIHRoaXMpOworICAgICAgICAgfQorICAgICB9CitAQCAtNTkw LDcgKzU5MCw3IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6Om9iamVjdERlc3Ryb3llZChj b25zdCBRT2JqZWN0ICpvYmplY3QpCisgICAgIC8vIG9ubHkgcmVtb3ZlIGZyb20gaGFuZGxlciB3 aGVuIHdlIGluaXRpYWxpemVkIHRoZSBwcm9wZXJ0eSB1cGRhdGVzCisgICAgIC8vIGNmOiBodHRw czovL2J1Z3JlcG9ydHMucXQuaW8vYnJvd3NlL1FUQlVHLTYwMjUwCisgICAgIGlmIChwcm9wZXJ0 eVVwZGF0ZXNJbml0aWFsaXplZCkgeworLSAgICAgICAgc2lnbmFsSGFuZGxlci5yZW1vdmUob2Jq ZWN0KTsKKysgICAgICAgIHNpZ25hbEhhbmRsZXJGb3Iob2JqZWN0KS0+cmVtb3ZlKG9iamVjdCk7 CisgICAgICAgICBzaWduYWxUb1Byb3BlcnR5TWFwLnJlbW92ZShvYmplY3QpOworICAgICB9Cisg ICAgIHBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMucmVtb3ZlKG9iamVjdCk7CitAQCAtODUyLDYgKzg1 Miw1MiBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpicm9hZGNhc3RNZXNzYWdlKGNvbnN0 IFFKc29uT2JqZWN0ICZtZXNzYWdlKSBjb25zdAorICAgICB9CisgfQorIAorK3ZvaWQgUU1ldGFP YmplY3RQdWJsaXNoZXI6OmVucXVldWVCcm9hZGNhc3RNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0 ICZtZXNzYWdlKQorK3sKKysgICAgaWYgKHdlYkNoYW5uZWwtPmRfZnVuYygpLT50cmFuc3BvcnRz LmlzRW1wdHkoKSkgeworKyAgICAgICAgcVdhcm5pbmcoIlFXZWJDaGFubmVsIGlzIG5vdCBjb25u ZWN0ZWQgdG8gYW55IHRyYW5zcG9ydHMsIGNhbm5vdCBzZW5kIG1lc3NhZ2U6ICVzIiwKKysgICAg ICAgICAgICAgICAgIFFKc29uRG9jdW1lbnQobWVzc2FnZSkudG9Kc29uKCkuY29uc3REYXRhKCkp OworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICAgIGZvciAoYXV0byAqdHJhbnNwb3J0 IDogd2ViQ2hhbm5lbC0+ZF9mdW5jKCktPnRyYW5zcG9ydHMpIHsKKysgICAgICAgIGF1dG8gJnN0 YXRlID0gdHJhbnNwb3J0U3RhdGVbdHJhbnNwb3J0XTsKKysgICAgICAgIHN0YXRlLnF1ZXVlZE1l c3NhZ2VzLmFwcGVuZChtZXNzYWdlKTsKKysgICAgfQorK30KKysKKyt2b2lkIFFNZXRhT2JqZWN0 UHVibGlzaGVyOjplbnF1ZXVlTWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRV2ViQ2hhbm5lbEFic3Ry YWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisreworKyAgICBhdXRvICZzdGF0ZSA9IHRyYW5zcG9y dFN0YXRlW3RyYW5zcG9ydF07CisrICAgIHN0YXRlLnF1ZXVlZE1lc3NhZ2VzLmFwcGVuZChtZXNz YWdlKTsKKyt9CisrCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2VuZEVucXVldWVkUHJv cGVydHlVcGRhdGVzKFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKKyt7 CisrICAgIGF1dG8gZm91bmQgPSB0cmFuc3BvcnRTdGF0ZS5maW5kKHRyYW5zcG9ydCk7CisrICAg IGlmIChmb3VuZCAhPSB0cmFuc3BvcnRTdGF0ZS5lbmQoKSAmJiBmb3VuZC52YWx1ZSgpLmNsaWVu dElzSWRsZQorKyAgICAgICAgJiYgIWZvdW5kLnZhbHVlKCkucXVldWVkTWVzc2FnZXMuaXNFbXB0 eSgpKSB7CisrCisrICAgICAgICAvLyBJZiB0aGUgY2xpZW50IGlzIGNvbm5lY3RlZCB3aXRoIGFu IGluLXByb2Nlc3MgdHJhbnNwb3J0LCBpdCBjYW4KKysgICAgICAgIC8vIGhhcHBlbiB0aGF0IGEg bWVzc2FnZSB0cmlnZ2VycyBhIHN1YnNlcXVlbnQgcHJvcGVydHkgY2hhbmdlLiBJbgorKyAgICAg ICAgLy8gdGhhdCBjYXNlLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBxdWV1ZWQgbWVzc2Fn ZXMgaGF2ZSBhbHJlYWR5CisrICAgICAgICAvLyBiZWVuIGNsZWFyZWQ7IG90aGVyd2lzZSB0aGUg cmVjdXJzaXZlIGNhbGwgd2lsbCBzZW5kIGV2ZXJ5dGhpZyBhZ2Fpbi4KKysgICAgICAgIC8vIENh c2UgaW4gcG9pbnQ6IFRoZSBxbWx3ZWJjaGFubmVsIHRlc3RzIGZhaWwgaWYgd2UgZG9uJ3QgY2xl YXIgdGhlCisrICAgICAgICAvLyBxdWV1ZWQgbWVzc2FnZXMgYmVmb3JlIHNlbmRpbmcgdGhlbSBv dXQuCisrICAgICAgICAvLyBGb3IgdGhhdCBzYW1lIHJlYXNvbiBzZXQgdGhlIGNsaWVudCB0byAi YnVzeSIgKGFrYSBub24taWRsZSkganVzdAorKyAgICAgICAgLy8gcmlnaHQgYmVmb3JlIHNlbmRp bmcgb3V0IHRoZSBtZXNzYWdlczsgb3RoZXJ3aXNlIGEgcG90ZW50aWFsCisrICAgICAgICAvLyAi SWRsZSIgdHlwZSBtZXNzYWdlIHdpbGwgbm90IGNvcnJlY3RseSByZXN0b3JlIHRoZSBJZGxlIHN0 YXRlLgorKyAgICAgICAgY29uc3QgYXV0byBtZXNzYWdlcyA9IHN0ZDo6bW92ZShmb3VuZC52YWx1 ZSgpLnF1ZXVlZE1lc3NhZ2VzKTsKKysgICAgICAgIFFfQVNTRVJUKGZvdW5kLnZhbHVlKCkucXVl dWVkTWVzc2FnZXMuaXNFbXB0eSgpKTsKKysgICAgICAgIGZvdW5kLnZhbHVlKCkuY2xpZW50SXNJ ZGxlID0gZmFsc2U7CisrCisrICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJm1lc3NhZ2UgOiBtZXNz YWdlcykgeworKyAgICAgICAgICAgIHRyYW5zcG9ydC0+c2VuZE1lc3NhZ2UobWVzc2FnZSk7Cisr ICAgICAgICB9CisrICAgIH0KKyt9CisrCisgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aGFu ZGxlTWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSwgUVdlYkNoYW5uZWxBYnN0cmFj dFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorIHsKKyAgICAgaWYgKCF3ZWJDaGFubmVsLT5kX2Z1bmMo KS0+dHJhbnNwb3J0cy5jb250YWlucyh0cmFuc3BvcnQpKSB7CitAQCAtODY2LDcgKzkxMiw3IEBA IHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmhhbmRsZU1lc3NhZ2UoY29uc3QgUUpzb25PYmpl Y3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVsCisgCisgICAgIGNvbnN0IE1lc3NhZ2VUeXBlIHR5cGUg PSB0b1R5cGUobWVzc2FnZS52YWx1ZShLRVlfVFlQRSkpOworICAgICBpZiAodHlwZSA9PSBUeXBl SWRsZSkgeworLSAgICAgICAgc2V0Q2xpZW50SXNJZGxlKHRydWUpOworKyAgICAgICAgc2V0Q2xp ZW50SXNJZGxlKHRydWUsIHRyYW5zcG9ydCk7CisgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBl SW5pdCkgeworICAgICAgICAgaWYgKCFtZXNzYWdlLmNvbnRhaW5zKEtFWV9JRCkpIHsKKyAgICAg ICAgICAgICBxV2FybmluZygiSlNPTiBtZXNzYWdlIG9iamVjdCBpcyBtaXNzaW5nIHRoZSBpZCBw cm9wZXJ0eTogJXMiLAorQEAgLTkxMyw5ICs5NTksOSBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlz aGVyOjpoYW5kbGVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLCBRV2ViQ2hhbm5l bAorICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgdHJhbnNwb3J0LT5zZW5k TWVzc2FnZShjcmVhdGVSZXNwb25zZShtZXNzYWdlLnZhbHVlKEtFWV9JRCksIHdyYXBSZXN1bHQo cmVzdWx0LCB0cmFuc3BvcnQpKSk7CisgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlwZUNv bm5lY3RUb1NpZ25hbCkgeworLSAgICAgICAgICAgIHNpZ25hbEhhbmRsZXIuY29ubmVjdFRvKG9i amVjdCwgbWVzc2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgtMSkpOworKyAgICAgICAgICAg IHNpZ25hbEhhbmRsZXJGb3Iob2JqZWN0KS0+Y29ubmVjdFRvKG9iamVjdCwgbWVzc2FnZS52YWx1 ZShLRVlfU0lHTkFMKS50b0ludCgtMSkpOworICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFR5 cGVEaXNjb25uZWN0RnJvbVNpZ25hbCkgeworLSAgICAgICAgICAgIHNpZ25hbEhhbmRsZXIuZGlz Y29ubmVjdEZyb20ob2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9TSUdOQUwpLnRvSW50KC0xKSk7 CisrICAgICAgICAgICAgc2lnbmFsSGFuZGxlckZvcihvYmplY3QpLT5kaXNjb25uZWN0RnJvbShv YmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05BTCkudG9JbnQoLTEpKTsKKyAgICAgICAgIH0g ZWxzZSBpZiAodHlwZSA9PSBUeXBlU2V0UHJvcGVydHkpIHsKKyAgICAgICAgICAgICBzZXRQcm9w ZXJ0eShvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1BST1BFUlRZKS50b0ludCgtMSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS52YWx1ZShLRVlfVkFMVUUpKTsKK0BAIC05MzEs NiArOTc3LDcgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2V0QmxvY2tVcGRhdGVzKGJv b2wgYmxvY2spCisgICAgIGJsb2NrVXBkYXRlcyA9IGJsb2NrOworIAorICAgICBpZiAoIWJsb2Nr VXBkYXRlcykgeworKyAgICAgICAgdGltZXIuc3RhcnQoUFJPUEVSVFlfVVBEQVRFX0lOVEVSVkFM LCB0aGlzKTsKKyAgICAgICAgIHNlbmRQZW5kaW5nUHJvcGVydHlVcGRhdGVzKCk7CisgICAgIH0g ZWxzZSBpZiAodGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICAgdGltZXIuc3RvcCgpOworQEAg LTk0OCw0ICs5OTUsMTUgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6dGltZXJFdmVudChR VGltZXJFdmVudCAqZXZlbnQpCisgICAgIH0KKyB9CisgCisrU2lnbmFsSGFuZGxlcjxRTWV0YU9i amVjdFB1Ymxpc2hlcj4gKlFNZXRhT2JqZWN0UHVibGlzaGVyOjpzaWduYWxIYW5kbGVyRm9yKGNv bnN0IFFPYmplY3QgKm9iamVjdCkKKyt7CisrICAgIGF1dG8gdGhyZWFkID0gb2JqZWN0LT50aHJl YWQoKTsKKysgICAgYXV0byBpdCA9IHNpZ25hbEhhbmRsZXJzLmZpbmQodGhyZWFkKTsKKysgICAg aWYgKGl0ID09IHNpZ25hbEhhbmRsZXJzLmVuZCgpKSB7CisrICAgICAgICBpdCA9IHNpZ25hbEhh bmRsZXJzLmVtcGxhY2UodGhyZWFkLCB0aGlzKS5maXJzdDsKKysgICAgICAgIGl0LT5zZWNvbmQu bW92ZVRvVGhyZWFkKHRocmVhZCk7CisrICAgIH0KKysgICAgcmV0dXJuICZpdC0+c2Vjb25kOwor K30KKysKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3NyYy93 ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaCBiL3F0d2ViY2hhbm5lbC9zcmMvd2Vi Y2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlcl9wLmgKK2luZGV4IGJiZDk4NzUuLjQ3MTNlZjEg MTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJs aXNoZXJfcC5oCisrKysgYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3Rw dWJsaXNoZXJfcC5oCitAQCAtNTksNiArNTksOSBAQAorICNpbmNsdWRlIDxRQmFzaWNUaW1lcj4K KyAjaW5jbHVkZSA8UVBvaW50ZXI+CisgI2luY2x1ZGUgPFFKc29uT2JqZWN0PgorKyNpbmNsdWRl IDxRUXVldWU+CisrCisrI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CisgCisgI2luY2x1ZGUgInF3 ZWJjaGFubmVsZ2xvYmFsLmgiCisgCitAQCAtMTA5LDE3ICsxMTIsMzYgQEAgcHVibGljOgorICAg ICAgKi8KKyAgICAgdm9pZCBicm9hZGNhc3RNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNz YWdlKSBjb25zdDsKKyAKKysgICAgLyoqCisrICAgICAqIEVucXVldWUgdGhlIGdpdmVuIEBwIG1l c3NhZ2UgdG8gYWxsIGtub3duIHRyYW5zcG9ydHMuCisrICAgICAqLworKyAgICB2b2lkIGVucXVl dWVCcm9hZGNhc3RNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlKTsKKysKKysgICAg LyoqCisrICAgICAqIEVucXVldWUgdGhlIGdpdmVuIEBwIG1lc3NhZ2UgdG8gQHAgdHJhbnNwb3J0 LgorKyAgICAgKi8KKysgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAm bWVzc2FnZSwgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKKysKKysg ICAgLyoqCisrICAgICAqIElmIGNsaWVudCBmb3IgZ2l2ZW4gQHAgdHJhbnNwb3J0IGlzIGlkbGUs IHNlbmQgcXVldWVkIG1lc3NhZ2VkIHRvIEBwIHRyYW5zcG9ydCBhbmQgdGhlbiBtYXJrCisrICAg ICAqIHRoZSBjbGllbnQgYXMgbm90IGlkbGUuCisrICAgICAqLworKyAgICB2b2lkIHNlbmRFbnF1 ZXVlZFByb3BlcnR5VXBkYXRlcyhRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3Bv cnQpOworKworICAgICAvKioKKyAgICAgICogU2VyaWFsaXplIHRoZSBRTWV0YU9iamVjdCBvZiBA cCBvYmplY3QgYW5kIHJldHVybiBpdCBpbiBKU09OIGZvcm0uCisgICAgICAqLworICAgICBRSnNv bk9iamVjdCBjbGFzc0luZm9Gb3JPYmplY3QoY29uc3QgUU9iamVjdCAqb2JqZWN0LCBRV2ViQ2hh bm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworIAorICAgICAvKioKKy0gICAgICog U2V0IHRoZSBjbGllbnQgdG8gaWRsZSBvciBidXN5LCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgQHAg aXNJZGxlLgorLSAgICAgKgorLSAgICAgKiBXaGVuIHRoZSB2YWx1ZSBjaGFuZ2VkLCBzdGFydC9z dG9wIHRoZSBwcm9wZXJ0eSB1cGRhdGUgdGltZXIgYWNjb3JkaW5nbHkuCisrICAgICAqIFNldCB0 aGUgY2xpZW50IHRvIGlkbGUgb3IgYnVzeSBmb3IgYSBzaW5nbGUgQHAgdHJhbnNwb3J0LCBiYXNl ZCBvbiB0aGUgdmFsdWUgb2YgQHAgaXNJZGxlLgorKyAgICAgKi8KKysgICAgdm9pZCBzZXRDbGll bnRJc0lkbGUoYm9vbCBpc0lkbGUsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5z cG9ydCk7CisrCisrICAgIC8qKgorKyAgICAgKiBDaGVjayB0aGF0IGNsaWVudCBpcyBpZGxlIGZv ciBAcCB0cmFuc3BvcnQuCisgICAgICAqLworLSAgICB2b2lkIHNldENsaWVudElzSWRsZShib29s IGlzSWRsZSk7CisrICAgIGJvb2wgaXNDbGllbnRJZGxlKFFXZWJDaGFubmVsQWJzdHJhY3RUcmFu c3BvcnQgKnRyYW5zcG9ydCk7CisgCisgICAgIC8qKgorICAgICAgKiBJbml0aWFsaXplIGNsaWVu dHMgYnkgc2VuZGluZyB0aGVtIHRoZSBjbGFzcyBpbmZvcm1hdGlvbiBvZiB0aGUgcmVnaXN0ZXJl ZCBvYmplY3RzLgorQEAgLTI3MiwxMCArMjk0LDE4IEBAIHByaXZhdGU6CisgICAgIGZyaWVuZCBj bGFzcyBUZXN0V2ViQ2hhbm5lbDsKKyAKKyAgICAgUVdlYkNoYW5uZWwgKndlYkNoYW5uZWw7Cist ICAgIFNpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQdWJsaXNoZXI+IHNpZ25hbEhhbmRsZXI7Cisr ICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxjb25zdCBRVGhyZWFkKiwgU2lnbmFsSGFuZGxlcjxRTWV0 YU9iamVjdFB1Ymxpc2hlcj4+IHNpZ25hbEhhbmRsZXJzOworKyAgICBTaWduYWxIYW5kbGVyPFFN ZXRhT2JqZWN0UHVibGlzaGVyPiAqc2lnbmFsSGFuZGxlckZvcihjb25zdCBRT2JqZWN0ICpvYmpl Y3QpOworIAorLSAgICAvLyB0cnVlIHdoZW4gdGhlIGNsaWVudCBpcyBpZGxlLCBmYWxzZSBvdGhl cndpc2UKKy0gICAgYm9vbCBjbGllbnRJc0lkbGU7CisrICAgIHN0cnVjdCBUcmFuc3BvcnRTdGF0 ZQorKyAgICB7CisrICAgICAgICBUcmFuc3BvcnRTdGF0ZSgpIDogY2xpZW50SXNJZGxlKGZhbHNl KSB7IH0KKysgICAgICAgIC8vIHRydWUgd2hlbiB0aGUgY2xpZW50IGlzIGlkbGUsIGZhbHNlIG90 aGVyd2lzZQorKyAgICAgICAgYm9vbCBjbGllbnRJc0lkbGU7CisrICAgICAgICAvLyBtZXNzYWdl cyB0byBzZW5kCisrICAgICAgICBRUXVldWU8UUpzb25PYmplY3Q+IHF1ZXVlZE1lc3NhZ2VzOwor KyAgICB9OworKyAgICBRSGFzaDxRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICosIFRyYW5z cG9ydFN0YXRlPiB0cmFuc3BvcnRTdGF0ZTsKKyAKKyAgICAgLy8gdHJ1ZSB3aGVuIG5vIHByb3Bl cnR5IHVwZGF0ZXMgc2hvdWxkIGJlIHNlbnQsIGZhbHNlIG90aGVyd2lzZQorICAgICBib29sIGJs b2NrVXBkYXRlczsKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvc2ln bmFsaGFuZGxlcl9wLmggYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvc2lnbmFsaGFuZGxl cl9wLmgKK2luZGV4IDI3YWZhZGIuLmQ3NzM3M2MgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwv c3JjL3dlYmNoYW5uZWwvc2lnbmFsaGFuZGxlcl9wLmgKKysrKyBiL3F0d2ViY2hhbm5lbC9zcmMv d2ViY2hhbm5lbC9zaWduYWxoYW5kbGVyX3AuaAorQEAgLTU2LDYgKzU2LDcgQEAKKyAjaW5jbHVk ZSA8UVZlY3Rvcj4KKyAjaW5jbHVkZSA8UU1ldGFNZXRob2Q+CisgI2luY2x1ZGUgPFFEZWJ1Zz4K KysjaW5jbHVkZSA8UVRocmVhZD4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKK0BAIC03MSw2 ICs3Miw3IEBAIHN0YXRpYyBjb25zdCBpbnQgc19kZXN0cm95ZWRTaWduYWxJbmRleCA9IFFPYmpl Y3Q6OnN0YXRpY01ldGFPYmplY3QuaW5kZXhPZk1ldGhvCisgdGVtcGxhdGU8Y2xhc3MgUmVjZWl2 ZXI+CisgY2xhc3MgU2lnbmFsSGFuZGxlciA6IHB1YmxpYyBRT2JqZWN0CisgeworKyAgICBRX0RJ U0FCTEVfQ09QWShTaWduYWxIYW5kbGVyKQorIHB1YmxpYzoKKyAgICAgU2lnbmFsSGFuZGxlcihS ZWNlaXZlciAqcmVjZWl2ZXIsIFFPYmplY3QgKnBhcmVudCA9IDApOworIAorQEAgLTI2OCw2ICsy NzAsNyBAQCBpbnQgU2lnbmFsSGFuZGxlcjxSZWNlaXZlcj46OnF0X21ldGFjYWxsKFFNZXRhT2Jq ZWN0OjpDYWxsIGNhbGwsIGludCBtZXRob2RJZCwgdgorICAgICBpZiAoY2FsbCA9PSBRTWV0YU9i amVjdDo6SW52b2tlTWV0YU1ldGhvZCkgeworICAgICAgICAgY29uc3QgUU9iamVjdCAqb2JqZWN0 ID0gc2VuZGVyKCk7CisgICAgICAgICBRX0FTU0VSVChvYmplY3QpOworKyAgICAgICAgUV9BU1NF UlQoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpID09IG9iamVjdC0+dGhyZWFkKCkpOworICAgICAg ICAgUV9BU1NFUlQoc2VuZGVyU2lnbmFsSW5kZXgoKSA9PSBtZXRob2RJZCk7CisgICAgICAgICBR X0FTU0VSVChtX2Nvbm5lY3Rpb25zQ291bnRlci5jb250YWlucyhvYmplY3QpKTsKKyAgICAgICAg IFFfQVNTRVJUKG1fY29ubmVjdGlvbnNDb3VudGVyLnZhbHVlKG9iamVjdCkuY29udGFpbnMobWV0 aG9kSWQpKTsKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9xbWwvdGVzdHdl YmNoYW5uZWwuY3BwIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vcW1sL3Rlc3R3ZWJjaGFubmVs LmNwcAoraW5kZXggOTg5MTY4Ny4uM2NhODFjMiAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC90 ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5jcHAKKysrKyBiL3F0d2ViY2hhbm5lbC90ZXN0 cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5jcHAKK0BAIC00Niw3ICs0NiwxMSBAQCBUZXN0V2Vi Q2hhbm5lbDo6flRlc3RXZWJDaGFubmVsKCkKKyAKKyBib29sIFRlc3RXZWJDaGFubmVsOjpjbGll bnRJc0lkbGUoKSBjb25zdAorIHsKKy0gICAgcmV0dXJuIFFXZWJDaGFubmVsOjpkX2Z1bmMoKS0+ cHVibGlzaGVyLT5jbGllbnRJc0lkbGU7CisrICAgIGZvciAoYXV0byAqdHJhbnNwb3J0IDogUVdl YkNoYW5uZWw6OmRfZnVuYygpLT50cmFuc3BvcnRzKSB7CisrICAgICAgICBpZiAoUVdlYkNoYW5u ZWw6OmRfZnVuYygpLT5wdWJsaXNoZXItPmlzQ2xpZW50SWRsZSh0cmFuc3BvcnQpKQorKyAgICAg ICAgICAgIHJldHVybiB0cnVlOworKyAgICB9CisrICAgIHJldHVybiBmYWxzZTsKKyB9CisgCisg UVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dl YmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuY3BwIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2Vi Y2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5jcHAKK2luZGV4IDE4MWRhOWUuLjM3Zjk4OWEgMTAwNjQ0 CistLS0gYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVs LmNwcAorKysrIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hh bm5lbC5jcHAKK0BAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6dGVzdFRy YW5zcG9ydFdyYXBPYmplY3RQcm9wZXJ0aWVzKCkKKyAgICAgRHVtbXlUcmFuc3BvcnQgKmR1bW15 VHJhbnNwb3J0ID0gbmV3IER1bW15VHJhbnNwb3J0KHRoaXMpOworICAgICBjaGFubmVsLmNvbm5l Y3RUbyhkdW1teVRyYW5zcG9ydCk7CisgICAgIGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+ aW5pdGlhbGl6ZUNsaWVudChkdW1teVRyYW5zcG9ydCk7CistICAgIGNoYW5uZWwuZF9mdW5jKCkt PnB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUpOworKyAgICBjaGFubmVsLmRfZnVuYygp LT5wdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCBkdW1teVRyYW5zcG9ydCk7CisgCisg ICAgIFFDT01QQVJFKGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+dHJhbnNwb3J0ZWRXcmFw cGVkT2JqZWN0cy5zaXplKCksIDApOworIAorQEAgLTk0Myw4ICs5NDMsNiBAQCB2b2lkIFRlc3RX ZWJDaGFubmVsOjp0ZXN0SW5maW5pdGVSZWN1cnNpb24oKQorIAorIHZvaWQgVGVzdFdlYkNoYW5u ZWw6OnRlc3RBc3luY09iamVjdCgpCisgeworLSAgICBRU0tJUCgiVGhpcyB0ZXN0IGlzIGJyb2tl bi4gU2VlIFFUQlVHLTgwNzI5Iik7CistCisgICAgIFFXZWJDaGFubmVsIGNoYW5uZWw7CisgICAg IGNoYW5uZWwuY29ubmVjdFRvKG1fZHVtbXlUcmFuc3BvcnQpOworIAorQEAgLTk5MCw2ICs5ODgs NTAgQEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6dGVzdEFzeW5jT2JqZWN0KCkKKyAgICAgdGhyZWFk LndhaXQoKTsKKyB9CisgCisrdm9pZCBUZXN0V2ViQ2hhbm5lbDo6dGVzdFByb3BlcnR5TXVsdGlw bGVUcmFuc3BvcnRzKCkKKyt7CisrICAgIER1bW15VHJhbnNwb3J0IHRyYW5zcG9ydDE7CisrICAg IER1bW15VHJhbnNwb3J0IHRyYW5zcG9ydDI7CisrCisrICAgIFFXZWJDaGFubmVsIGNoYW5uZWw7 CisrICAgIFFNZXRhT2JqZWN0UHVibGlzaGVyICpwdWJsaXNoZXIgPSBjaGFubmVsLmRfZnVuYygp LT5wdWJsaXNoZXI7CisrCisrICAgIFRlc3RPYmplY3QgdGVzdE9iajsKKysgICAgdGVzdE9iai5z ZXRPYmplY3ROYW1lKCJ0ZXN0T2JqZWN0Iik7CisrICAgIGNoYW5uZWwucmVnaXN0ZXJPYmplY3Qo dGVzdE9iai5vYmplY3ROYW1lKCksICZ0ZXN0T2JqKTsKKysgICAgY2hhbm5lbC5jb25uZWN0VG8o JnRyYW5zcG9ydDEpOworKyAgICBjaGFubmVsLmNvbm5lY3RUbygmdHJhbnNwb3J0Mik7CisrCisr ICAgIHRlc3RPYmouc2V0UHJvcCgiSGVsbG8iKTsKKysKKysgICAgcHVibGlzaGVyLT5pbml0aWFs aXplQ2xpZW50KCZ0cmFuc3BvcnQxKTsKKysgICAgcHVibGlzaGVyLT5pbml0aWFsaXplQ2xpZW50 KCZ0cmFuc3BvcnQyKTsKKysgICAgcHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgJnRy YW5zcG9ydDEpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNw b3J0MSksIHRydWUpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJh bnNwb3J0MiksIGZhbHNlKTsKKysgICAgUVZFUklGWSh0cmFuc3BvcnQxLm1lc3NhZ2VzU2VudCgp LmlzRW1wdHkoKSk7CisrICAgIFFWRVJJRlkodHJhbnNwb3J0Mi5tZXNzYWdlc1NlbnQoKS5pc0Vt cHR5KCkpOworKworKyAgICB0ZXN0T2JqLnNldFByb3AoIldvcmxkIik7CisrICAgIFFUUllfQ09N UEFSRV9XSVRIX1RJTUVPVVQodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDF1LCAy MDAwKTsKKysgICAgUUNPTVBBUkUodHJhbnNwb3J0Mi5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDB1 KTsKKysgICAgcHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgJnRyYW5zcG9ydDIpOwor KyAgICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5zcG9ydDIubWVzc2FnZXNTZW50KCku c2l6ZSgpLCAxdSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxl KCZ0cmFuc3BvcnQxKSwgZmFsc2UpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50 SWRsZSgmdHJhbnNwb3J0MiksIGZhbHNlKTsKKysKKysgICAgdGVzdE9iai5zZXRQcm9wKCIhISEi KTsKKysgICAgcHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgJnRyYW5zcG9ydDIpOwor KyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MiksIHRydWUp OworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MSksIGZh bHNlKTsKKysgICAgUVRSWV9DT01QQVJFX1dJVEhfVElNRU9VVCh0cmFuc3BvcnQyLm1lc3NhZ2Vz U2VudCgpLnNpemUoKSwgMnUsIDIwMDApOworKyAgICBRQ09NUEFSRSh0cmFuc3BvcnQxLm1lc3Nh Z2VzU2VudCgpLnNpemUoKSwgMXUpOworKyAgICBwdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0 cnVlLCAmdHJhbnNwb3J0MSk7CisrICAgIFFUUllfQ09NUEFSRV9XSVRIX1RJTUVPVVQodHJhbnNw b3J0MS5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDJ1LCAyMDAwKTsKKysgICAgUUNPTVBBUkUocHVi bGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCBmYWxzZSk7CisrICAgIFFDT01QQVJF KHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQyKSwgZmFsc2UpOworK30KKysKKyBj bGFzcyBGdW5jdGlvbldyYXBwZXIgOiBwdWJsaWMgUU9iamVjdAorIHsKKyAgICAgUV9PQkpFQ1QK K0BAIC0xMDgyLDcgKzExMjQsNyBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjpiZW5jaEluaXRpYWxp emVDbGllbnRzKCkKKyAKKyAgICAgICAgIHB1Ymxpc2hlci0+cHJvcGVydHlVcGRhdGVzSW5pdGlh bGl6ZWQgPSBmYWxzZTsKKyAgICAgICAgIHB1Ymxpc2hlci0+c2lnbmFsVG9Qcm9wZXJ0eU1hcC5j bGVhcigpOworLSAgICAgICAgcHVibGlzaGVyLT5zaWduYWxIYW5kbGVyLmNsZWFyKCk7CisrICAg ICAgICBwdWJsaXNoZXItPnNpZ25hbEhhbmRsZXJzLmNsZWFyKCk7CisgICAgIH0KKyB9CisgCitA QCAtMTEwNyw3ICsxMTQ5LDcgQEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6YmVuY2hQcm9wZXJ0eVVw ZGF0ZXMoKQorICAgICAgICAgICAgIG9iai0+Y2hhbmdlKCk7CisgICAgICAgICB9CisgCistICAg ICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPmNsaWVudElzSWRsZSA9IHRydWU7Cisr ICAgICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVl LCBtX2R1bW15VHJhbnNwb3J0KTsKKyAgICAgICAgIGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hl ci0+c2VuZFBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMoKTsKKyAgICAgfQorIH0KK2RpZmYgLS1naXQg YS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmggYi9x dHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmgKK2luZGV4 IGVhZTIxZjQuLmRkNGU2OTAgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93 ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmgKKysrKyBiL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRv L3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaAorQEAgLTM0OCw2ICszNDgsNyBAQCBwcml2YXRl IHNsb3RzOgorICAgICB2b2lkIHRlc3RKc29uVG9WYXJpYW50KCk7CisgICAgIHZvaWQgdGVzdElu ZmluaXRlUmVjdXJzaW9uKCk7CisgICAgIHZvaWQgdGVzdEFzeW5jT2JqZWN0KCk7CisrICAgIHZv aWQgdGVzdFByb3BlcnR5TXVsdGlwbGVUcmFuc3BvcnRzKCk7CisgICAgIHZvaWQgdGVzdERlbGV0 aW9uRHVyaW5nTWV0aG9kSW52b2NhdGlvbl9kYXRhKCk7CisgICAgIHZvaWQgdGVzdERlbGV0aW9u RHVyaW5nTWV0aG9kSW52b2NhdGlvbigpOworIAorU3VibW9kdWxlIHF0d2ViZW5naW5lIGYzMjgw NTRkLi4uMzhlMGRmNmMgKGNvbW1pdHMgbm90IHByZXNlbnQpCitTdWJtb2R1bGUgcXR3ZWJzb2Nr ZXRzIDY1ODUwOTU0Li42M2ZiOGRhMToKK2RpZmYgLS1naXQgYS9xdHdlYnNvY2tldHMvc3JjL3dl YnNvY2tldHMvcXdlYnNvY2tldGRhdGFwcm9jZXNzb3IuY3BwIGIvcXR3ZWJzb2NrZXRzL3NyYy93 ZWJzb2NrZXRzL3F3ZWJzb2NrZXRkYXRhcHJvY2Vzc29yLmNwcAoraW5kZXggMmFmZmRkNS4uOTVm MTE5NCAxMDA2NDQKKy0tLSBhL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0 ZGF0YXByb2Nlc3Nvci5jcHAKKysrKyBiL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vi c29ja2V0ZGF0YXByb2Nlc3Nvci5jcHAKK0BAIC0yNzMsNiArMjczLDcgQEAgdm9pZCBRV2ViU29j a2V0RGF0YVByb2Nlc3Nvcjo6Y2xlYXIoKQorICAgICBpZiAoIW1fcENvbnZlcnRlclN0YXRlKQor ICAgICAgICAgbV9wQ29udmVydGVyU3RhdGUgPSBuZXcgUVRleHRDb2RlYzo6Q29udmVydGVyU3Rh dGUoUVRleHRDb2RlYzo6Q29udmVydEludmFsaWRUb051bGwgfAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVRleHRDb2RlYzo6SWdu b3JlSGVhZGVyKTsKKysgICAgZnJhbWUuY2xlYXIoKTsKKyB9CisgCisgLyohCitkaWZmIC0tZ2l0 IGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRwcm90b2NvbC5jcHAgYi9x dHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldHByb3RvY29sLmNwcAoraW5kZXgg ZGY4N2E5My4uZDA0NjVmMSAxMDA2NDQKKy0tLSBhL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0 cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwCisrKysgYi9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tl dHMvcXdlYnNvY2tldHByb3RvY29sLmNwcAorQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFFXZWJT b2NrZXRQcm90b2NvbDo6bWFzayhjaGFyICpwYXlsb2FkLCBxdWludDY0IHNpemUsIHF1aW50MzIg bWFza2luZ0tleSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpbnQ4KChtYXNraW5n S2V5ICYgMHgwMDAwRkYwMHUpID4+IDgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBx dWludDgoKG1hc2tpbmdLZXkgJiAweDAwMDAwMEZGdSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICB9OworLSAgICBpbnQgaSA9IDA7CisrICAgIHF1aW50NjQgaSA9IDA7CisgICAgIHdoaWxl IChzaXplLS0gPiAwKQorICAgICAgICAgKnBheWxvYWQrKyBePSBtYXNrW2krKyAlIDRdOworIH0K ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlIGIvc3JjcGtncy9xdDUvdGVtcGxhdGUK aW5kZXggODZlYTNlYzJjMTFiOS4uNDE0YjVlNTMyZjkwNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9x dDUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUvdGVtcGxhdGUKQEAgLTIsMTEgKzIsMTEgQEAK ICMKICMgcmV2YnVtcCBsaWJxdHhkZyBhZnRlciBidW1waW5nIHBhdGNoIHZlcnNpb24KIHBrZ25h bWU9cXQ1Ci12ZXJzaW9uPTUuMTUuNysyMDIyMTExOQordmVyc2lvbj01LjE1LjgKK3JldmlzaW9u PTEKK2J1aWxkX3N0eWxlPW1ldGEKICMgY29tbWl0IGY4YzlmYjMwNGJjM2U1M2IzYWEwN2Y5NjJj ZDc0ZTkxNjBkZWNjY2MKICMgYmFzZSByZXBvOiBodHRwczovL2ludmVudC5rZGUub3JnL3F0L3F0 L3F0NQotcmV2aXNpb249NgotYnVpbGRfc3R5bGU9bWV0YQogaG9zdG1ha2VkZXBlbmRzPSJjbWFr ZSBjbGFuZyBmbGV4IHBlcmwgZ2xpYi1kZXZlbCBwa2ctY29uZmlnCiAgcHl0aG9uIHJlMmMgcnVi eSB3aGljaCIKIG1ha2VkZXBlbmRzPSJTREwyLWRldmVsIFZ1bGthbi1IZWFkZXJzIGFsc2EtbGli LWRldmVsIGRvdWJsZS1jb252ZXJzaW9uLWRldmVsCkBAIC0yOSw4ICsyOSw5IEBAIGhvbWVwYWdl PSJodHRwczovL3F0LmlvLyIKICMgdGFyYmFsbCBpcyBnZW5lcmF0ZWQgd2l0aCBgZ2l0IGFyY2hp dmUtYWxsIHF0NS0kdmVyc2lvbi50YXIuZ3pgCiAjIHRvIGtlZXAgdGhlIHNpemUgc21hbGxlciBx dHdlYmVuZ2luZSwgcXR3ZWJ2aWV3LCBxdGRvY2dhbGxlcnksIHF0YWN0aXZlcXQgYW5kIHF0cGlt CiAjIGNhbiBiZSBtYXJrZWQgd2l0aCB0aGUgZXhwb3J0LWlnbm9yZSBhdHRyaWJ1dGUKLWRpc3Rm aWxlcz0iaHR0cHM6Ly92b2lkLmpvaG5ueW5hdG9yLmRldi9kaXN0ZmlsZXMvcXQ1LSR7dmVyc2lv bn0udGFyLmd6IgotY2hlY2tzdW09OWQ1N2FmNDcxYzc4MDI5YTM2MjI3NmI3Yzk5MTA4ZWEwMDlm NTExYmI5YmE2ZmY2Y2I4ODRmNmRkZDI1NWU5ZgorI2Rpc3RmaWxlcz0iaHR0cHM6Ly92b2lkLmpv aG5ueW5hdG9yLmRldi9kaXN0ZmlsZXMvcXQ1LSR7dmVyc2lvbn0udGFyLmd6IgorZGlzdGZpbGVz PSJodHRwczovL2Rvd25sb2FkLnF0LmlvL2FyY2hpdmUvcXQvNS4xNS8ke3ZlcnNpb259L3Npbmds ZS9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLSR7dmVyc2lvbn0udGFyLnh6IgorY2hlY2tz dW09Nzc2YTkzMDJjMzM2NjcxZjk0MDZhNTNiZDMwYjhlMzZmODI1NzQyYjJlYzQ0YTU3YzA4MjE3 YmZmMGZhODZiOQogcHl0aG9uX3ZlcnNpb249MiAjdW52ZXJpZmllZAogcmVwbGFjZXM9InF0NS1k b2M8NS42LjAgcXQ1LXF1aWNrMTw1LjYuMCBxdDUtcXVpY2sxLWRldmVsPDUuNi4wIHF0NS13ZWJr aXQ8NS42LjAgcXQ1LXdlYmtpdC1kZXZlbDw1LjYuMAogIHF0NS1lbmdpbmlvPDUuNy4xIHF0NS1l bmdpbmlvLWRldmVsPDUuNy4xIHF0NS1wbHVnaW4tZ3RrPDUuNy4xIHF0NS1jYW52YXMzZDw1LjEz LjAiCkBAIC0yNDYsNyArMjQ3LDYgQEAgZG9fY29uZmlndXJlKCkgewogCSMgb3B0cys9IiAtdiIK IAlvcHRzKz0iIC1za2lwIHF0d2ViZW5naW5lIgogCW9wdHMrPSIgLXNraXAgcXR3ZWJ2aWV3Igot CW9wdHMrPSIgLXNraXAgcXRkb2NnYWxsZXJ5IgogCW9wdHMrPSIgLXNraXAgcXRwaW0iCiAJb3B0 cys9IiAtc2tpcCBxdHN5c3RlbXMiCiAJb3B0cys9IiAtc2tpcCBxdHNwZWVjaCIKCkZyb20gYjdm M2E4MDBjOTZhODkwNzI5ZjhkM2JkN2UwMzQ1MTc3MDhlNGQ5ZiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY5LzExNV0gcXRhdjogcmV2YnVt cCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3F0YXYvdGVtcGxhdGUgfCA0ICsrLS0K IDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdGF2L3RlbXBsYXRlIGIvc3JjcGtncy9xdGF2L3RlbXBsYXRlCmluZGV4 IDM0YzMwYjJjMGM3OGYuLjJkMDBhZDEwNDM1NWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXRhdi90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0YXYvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ3F0YXYnCiBwa2duYW1lPXF0YXYKIHZlcnNpb249MS4xMy4wCi1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1xbWFrZQogaG9zdG1ha2VkZXBlbmRz PSJxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMiCi1tYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIGxp YmFzcy1kZXZlbCBsaWJvcGVuYWwtZGV2ZWwKK21ha2VkZXBlbmRzPSJmZm1wZWc0LWRldmVsIGxp YmFzcy1kZXZlbCBsaWJvcGVuYWwtZGV2ZWwKICBsaWJ2YS1nbHgtZGV2ZWwgbGliWHYtZGV2ZWwg cHVsc2VhdWRpby1kZXZlbAogIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbCBxdDUtc3ZnLWRldmVsCiAg cXQ1LXF1aWNrY29udHJvbHMiCgpGcm9tIDBkYjUyMjcxZjY4NzgxYzFlZWIxZDhkZTgwYTQ4MmQy NTdkN2YzOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDog W1BBVENIIDA3MC8xMTVdIHF0b3g6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9xdG94L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdG94L3RlbXBsYXRlIGIvc3JjcGtn cy9xdG94L3RlbXBsYXRlCmluZGV4IDM5YzY0M2ZlY2RiNWEuLmJiNzBlN2Y1MTI0MGEgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvcXRveC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0b3gvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdG94JwogcGtnbmFtZT1xdG94 CiB2ZXJzaW9uPTEuMTcuNgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21h a2UKIGNvbmZpZ3VyZV9hcmdzPSItRFVQREFURV9DSEVDSz1PRkYKICAtREdJVF9ERVNDUklCRT0k e3ZlcnNpb259CgpGcm9tIDEzMGYyYTBlNWEwNjExOTFlM2FhNjI1YWIwMDJhYzU2NzQwZGJlNWUg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3 MS8xMTVdIHJldHJvYXJjaDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3Jl dHJvYXJjaC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcmV0cm9hcmNoL3RlbXBsYXRlIGIv c3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUKaW5kZXggMjgwMTZhYTAxMjllNi4uMjBhMTQxNTkx M2JlNSAxMDA2NDQKLS0tIGEvc3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9yZXRyb2FyY2gvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdyZXRyb2FyY2gnCiBwa2duYW1lPXJldHJvYXJjaAogdmVyc2lvbj0xLjE1LjAKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0t cHJlZml4PS91c3IgLS1zeXNjb25mZGlyPS9ldGMgLS1lbmFibGUtbmV0d29ya2luZwogIC0tZW5h YmxlLXVkZXYgLS1kaXNhYmxlLWJ1aWx0aW5mbGFjIC0tZGlzYWJsZS1idWlsdGluZ2xzbGFuZwoK RnJvbSA5OWZiOGEyZTIwZDg1ZjBhOTY2NmU3NGZjZDRhNjQ5YjY0Y2E5ZWJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzIvMTE1XSBzY3Jj cHk6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc2NyY3B5L3RlbXBs YXRlCmluZGV4IGFjMThiYzAzNDE4Y2UuLmYzOWE3ZjY3OGFiMzUgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3Mvc2NyY3B5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2NyY3B5JwogcGtnbmFtZT1zY3JjcHkKIHZl cnNpb249Mi4xLjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBj b25maWd1cmVfYXJncz0iLURjb21waWxlX3NlcnZlcj1mYWxzZQogIC1EcHJlYnVpbHRfc2VydmVy PS91c3Ivc2hhcmUvc2NyY3B5L3NjcmNweS1zZXJ2ZXItdiR7dmVyc2lvbn0iCgpGcm9tIDQ1YzE5 Njk2MTkyNGIzZDExM2YxMTZhNjZjMThhMDE5MjE3NzcyNmUgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3My8xMTVdIHNwZWstYWx0ZXJuYXRp dmU6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9zcGVrLWFsdGVybmF0 aXZlL3RlbXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyks IDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3Rl bXBsYXRlIGIvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlCmluZGV4IGQ2NTA4NmI4 ZjAwOGMuLjA1MjQ2ZjFiOGQwYzggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2 ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUvdGVtcGxhdGUKQEAgLTEs MTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NwZWstYWx0ZXJuYXRpdmUnCiBwa2du YW1lPXNwZWstYWx0ZXJuYXRpdmUKIHZlcnNpb249MC44LjIuMwotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFr ZSBnZXR0ZXh0LWRldmVsIGludGx0b29sIGxpYnRvb2wgcGtnLWNvbmZpZyB3eFdpZGdldHMtY29t bW9uIgotbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCB3eFdpZGdldHMtZ3RrMy1kZXZlbCIKLWRl cGVuZHM9ImZmbXBlZyIKK21ha2VkZXBlbmRzPSJmZm1wZWc0LWRldmVsIHd4V2lkZ2V0cy1ndGsz LWRldmVsIgorZGVwZW5kcz0iZmZtcGVnNCIKIHNob3J0X2Rlc2M9IkFjb3VzdGljIHNwZWN0cnVt IGFuYWx5c2VyIgogbWFpbnRhaW5lcj0iS2FydGlrIFNpbmdoIDxrYXJ0aWsueW53YUBnbWFpbC5j b20+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKCkZyb20gN2M4MzY5N2RjZWIxOGM0NzJl Mzg5YzBmZDIzYzkxNTE3MTA5ZmVlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDc0LzExNV0gc3NyOiByZXZidW1wIGZvciBmZm1wZWc0LTQu NC4zCgotLS0KIHNyY3BrZ3Mvc3NyL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3Ny L3RlbXBsYXRlIGIvc3JjcGtncy9zc3IvdGVtcGxhdGUKaW5kZXggYjA1NWI5ZWMwNzc0YS4uMzQ0 OGNhMTEwZWIwYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9zc3IvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9zc3IvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Nz cicKIHBrZ25hbWU9c3NyCiB2ZXJzaW9uPTAuNC40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9RVDU9T04iCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVn LWRldmVsIGdsdS1kZXZlbCBqYWNrLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKK21ha2VkZXBlbmRz PSJhbHNhLWxpYi1kZXZlbCBmZm1wZWc0LWRldmVsIGdsdS1kZXZlbCBqYWNrLWRldmVsIHB1bHNl YXVkaW8tZGV2ZWwKICBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXgxMWV4dHJhcy1kZXZlbCBsaWJYaW5l cmFtYS1kZXZlbCB2NGwtdXRpbHMtZGV2ZWwiCiBkZXBlbmRzPSJkZXNrdG9wLWZpbGUtdXRpbHMg aGljb2xvci1pY29uLXRoZW1lIgogc2hvcnRfZGVzYz0iU2ltcGxlIFNjcmVlbiBSZWNvcmRlciBm b3IgcHJvZ3JhbXMgYW5kIGdhbWVzIgoKRnJvbSA2ODIzYTRhMDU0Y2Y4MzE4MjI4ZmY2YTUyNDNh YzlmNDYyM2FjMGRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNzUvMTE1XSBzdW1vOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3Mvc3Vtby90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZSBiL3Ny Y3BrZ3Mvc3Vtby90ZW1wbGF0ZQppbmRleCAwZjliOWVjODE1ZjU2Li5hM2ZlMTM0YWE1YWNjIDEw MDY0NAotLS0gYS9zcmNwa2dzL3N1bW8vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zdW1vL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc3VtbycKIHBrZ25hbWU9 c3VtbwogdmVyc2lvbj0xLjEyLjAKLXJldmlzaW9uPTUKK3JldmlzaW9uPTYKIGJ1aWxkX3N0eWxl PWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImxpYmdkYWwtdG9vbHMgcGtnLWNvbmZpZyBzd2lnIHB5 dGhvbjMtc2V0dXB0b29scyIKIG1ha2VkZXBlbmRzPSJweXRob24zLWRldmVsIGZmbXBlZy1kZXZl bCBmb3gtZGV2ZWwgZ2wycHMtZGV2ZWwgbGliZ2RhbC1kZXZlbAoKRnJvbSBlMmQ0NDdhZTExYjNk NDI0YTZlODFlZDZhZjgwMmNjODg3Y2ZjNTM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzYvMTE1XSBzeW5maWc6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAgYW5kIG1sdDcKCi0tLQogc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBh dGNoIHwgNzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9zeW5maWcvdGVt cGxhdGUgICAgICAgICAgICAgIHwgIDYgKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlv bnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9zeW5maWcv cGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zeW5maWcvcGF0Y2hl cy9mZm1wZWc2LnBhdGNoIGIvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjEwNzgwYjQyNzgyZjQKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3N5bmZpZy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKQEAg LTAsMCArMSw3MSBAQAorLS0tIGEvc3JjL21vZHVsZXMvbW9kX2xpYmF2Y29kZWMvdHJndF9hdi5j cHAJMjAyMi0xMC0yNSAwOToxNDoxMi4wMDAwMDAwMDAgLTA0MDAKKysrKyBiL3NyYy9tb2R1bGVz L21vZF9saWJhdmNvZGVjL3RyZ3RfYXYuY3BwCTIwMjMtMDUtMDUgMjE6MzQ6MTcuODk5MTk0NTU5 IC0wNDAwCitAQCAtMzgsNiArNDEsNyBAQAorIGV4dGVybiAiQyIKKyB7CisgI2lmZGVmIEhBVkVf TElCQVZGT1JNQVRfQVZGT1JNQVRfSAorKyMJaW5jbHVkZSA8bGliYXZjb2RlYy9hdmNvZGVjLmg+ CisgIwlpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmZvcm1hdC5oPgorICNlbGlmIGRlZmluZWQoSEFW RV9BVkZPUk1BVF9IKQorICMJaW5jbHVkZSA8YXZmb3JtYXQuaD4KK0BAIC0xNTUsMTEgKzE1Niwx MSBAQAorICAgICB9CisgCisgCWJvb2wgb3Blbl92aWRlb19zdHJlYW0oKSB7CistCQlpZiAoYXZj b2RlY19vcGVuMih2aWRlb19jb250ZXh0LCBOVUxMLCBOVUxMKSA8IDApIHsKKysJCWlmIChhdmNv ZGVjX29wZW4yKHZpZGVvX2NvbnRleHQsIG51bGxwdHIsIG51bGxwdHIpIDwgMCkgeworIAkJCXN5 bmZpZzo6ZXJyb3IoIlRhcmdldF9MaWJBVkNvZGVjOiBjb3VsZCBub3Qgb3BlbiB2aWRlbyBjb2Rl YyIpOworIAkJCS8vIHNlZW1zIHRoZSBjYWxsaW5nIG9mIGF2Y29kZWNfZnJlZV9jb250ZXh0IGFm dGVyIGVycm9yIHdpbGwgY2F1c2UgY3Jhc2gKKyAJCQkvLyBzbyBqdXN0IGZvcmdldCBhYm91dCB0 aGlzIGNvbnRleHQKKy0JCQl2aWRlb19jb250ZXh0ID0gTlVMTDsKKysJCQl2aWRlb19jb250ZXh0 ID0gbnVsbHB0cjsKKyAJCQljbG9zZSgpOworIAkJCXJldHVybiBmYWxzZTsKKyAgICAgICAgIH0K K0BAIC0yMzQsMTUgKzIzNSwyMSBAQAorIAkJY2xvc2UoKTsKKyAKKyAJCWlmICghYXZfcmVnaXN0 ZXJlZCkgeworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1OCAvLyBGRk1QRUcgPCA0 LjAKKyAJCQlhdl9yZWdpc3Rlcl9hbGwoKTsKKysjZW5kaWYKKyAJCQlhdl9yZWdpc3RlcmVkID0g dHJ1ZTsKKyAJCX0KKyAKKyAJCS8vIGd1ZXNzIGZvcm1hdAorLQkJQVZPdXRwdXRGb3JtYXQgKmZv cm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdChOVUxMLCBmaWxlbmFtZS5jX3N0cigpLCBOVUxMKTsKKysj aWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTkgLy8gRkZNUEVHIDwgNS4wCisrCQlBVk91 dHB1dEZvcm1hdCogZm9ybWF0ID0gYXZfZ3Vlc3NfZm9ybWF0KG51bGxwdHIsIGZpbGVuYW1lLmNf c3RyKCksIG51bGxwdHIpOworKyNlbHNlCisrCQljb25zdCBBVk91dHB1dEZvcm1hdCogZm9ybWF0 ID0gYXZfZ3Vlc3NfZm9ybWF0KG51bGxwdHIsIGZpbGVuYW1lLmNfc3RyKCksIG51bGxwdHIpOwor KyNlbmRpZgorIAkJaWYgKCFmb3JtYXQpIHsKKyAJCQlzeW5maWc6Ondhcm5pbmcoIlRhcmdldF9M aWJBVkNvZGVjOiB1bmFibGUgdG8gZ3Vlc3MgdGhlIG91dHB1dCBmb3JtYXQsIGRlZmF1bHRpbmcg dG8gTVBFRyIpOworLQkJCWZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdCgibXBlZyIsIE5VTEwsIE5V TEwpOworKwkJCWZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdCgibXBlZyIsIG51bGxwdHIsIG51bGxw dHIpOworIAkJfQorIAkJaWYgKCFmb3JtYXQpIHsKKyAJCQlzeW5maWc6OmVycm9yKCJUYXJnZXRf TGliQVZDb2RlYzogdW5hYmxlIHRvIGZpbmQgJ21wZWcnIG91dHB1dCBmb3JtYXQiKTsKK0BAIC0y NTQsNiArMjYxLDcgQEAKKyAJCWNvbnRleHQgPSBhdmZvcm1hdF9hbGxvY19jb250ZXh0KCk7Cisg CQlhc3NlcnQoY29udGV4dCk7CisgCQljb250ZXh0LT5vZm9ybWF0ID0gZm9ybWF0OworKyNpZiBM SUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1OCAvLyBGRk1QRUcgPCA0LjAKKyAJCWlmIChmaWxl bmFtZS5zaXplKCkgKyAxID4gc2l6ZW9mKGNvbnRleHQtPmZpbGVuYW1lKSkgeworIAkJCXN5bmZp Zzo6ZXJyb3IoCisgCQkJCSJUYXJnZXRfTGliQVZDb2RlYzogZmlsZW5hbWUgdG9vIGxvbmcsIG1h eCBsZW5ndGggaXMgJWQsIGZpbGVuYW1lIGlzICclcyciLAorQEAgLTI2Myw2ICsyNzEsMTQgQEAK KyAJCQlyZXR1cm4gZmFsc2U7CisgCQl9CisgCQltZW1jcHkoY29udGV4dC0+ZmlsZW5hbWUsIGZp bGVuYW1lLmNfc3RyKCksIGZpbGVuYW1lLnNpemUoKSArIDEpOworKyNlbHNlCisrCQljb250ZXh0 LT51cmwgPSBhdl9zdHJuZHVwKGZpbGVuYW1lLmNfc3RyKCksIGZpbGVuYW1lLnNpemUoKSk7Cisr CQlpZiAoIWNvbnRleHQtPnVybCkgeworKwkJCXN5bmZpZzo6ZXJyb3IoIlRhcmdldF9MaWJBVkNv ZGVjOiBjYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIGZpbGVuYW1lIik7CisrCQkJY2xvc2UoKTsK KysJCQlyZXR1cm4gZmFsc2U7CisrCQl9CisrI2VuZGlmCisgCisgCQlwYWNrZXQgPSBhdl9wYWNr ZXRfYWxsb2MoKTsKKyAJCWFzc2VydChwYWNrZXQpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zeW5m aWcvdGVtcGxhdGUgYi9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQppbmRleCAzMDEwOTU0MWVjNGZj Li43MDNjZmQ3ZWJhYzg0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQpAQCAtMiwxMSArMiwxMSBAQAogIyBTaG91bGQgYmUg a2VwdCBpbiBzeW5jIHdpdGggJ3N5bmZpZ3N0dWRpbycgYW5kICdFVEwnCiBwa2duYW1lPXN5bmZp ZwogdmVyc2lvbj0xLjQuNAotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9Z251 LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0td2l0aC1ib29zdC1saWJkaXI9JHtYQlBTX0NS T1NTX0JBU0V9L3Vzci9saWIiCiBob3N0bWFrZWRlcGVuZHM9ImJvb3N0LWJ1aWxkIEltYWdlTWFn aWNrIHBrZy1jb25maWcgaW50bHRvb2wiCi1tYWtlZGVwZW5kcz0iRVRMIGdldHRleHQtZGV2ZWwg bGlieG1sKystZGV2ZWwgbWx0LWRldmVsIGxpYm1hZ2ljay1kZXZlbAorbWFrZWRlcGVuZHM9IkVU TCBnZXR0ZXh0LWRldmVsIGxpYnhtbCsrLWRldmVsIG1sdDctZGV2ZWwgbGlibWFnaWNrLWRldmVs CiAgbGlibW5nLWRldmVsIGJvb3N0LWJ1aWxkIGJvb3N0LWRldmVsIGxpYm9wZW5leHItZGV2ZWwg ZmZtcGVnLWRldmVsIgogZGVwZW5kcz0iSW1hZ2VNYWdpY2siCiBzaG9ydF9kZXNjPSJDTEkgMkQg dmVjdG9yIGFuZCB0aW1lbGluZS1iYXNlZCBhbmltYXRpb24gc29mdHdhcmUiCkBAIC0yMCw3ICsy MCw3IEBAIENYWEZMQUdTPSItc3RkPWMrKzExIC1ESEFWRV9MT0NBTEVfSD0xIgogCiBzeW5maWct ZGV2ZWxfcGFja2FnZSgpIHsKIAlkZXBlbmRzPSIke3NvdXJjZXBrZ30+PSR7dmVyc2lvbn1fJHty ZXZpc2lvbn0KLQkgbGlib3BlbmV4ci1kZXZlbCBsaWJ4bWwrKy1kZXZlbCBtbHQtZGV2ZWwiCisJ IGxpYm9wZW5leHItZGV2ZWwgbGlieG1sKystZGV2ZWwgbWx0Ny1kZXZlbCIKIAlzaG9ydF9kZXNj Kz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZtb3ZlIHVzci9i aW4vc3luZmlnLWNvbmZpZwoKRnJvbSAwNjY2Zjg5ZWRkNWRmYmUyZjA5MDljMzJlOGI2ZTQ5NmMz MDU0Mjc3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwNzcvMTE1XSB0Z19vd3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy90Z19vd3QvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3RnX293dC90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvdGdfb3d0L3RlbXBsYXRlCmluZGV4IDllYmI2ZjU3YTgzZjQuLjNlNTJkMWZiNTUzZjcg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGdfb3d0 L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndGdfb3d0Jwog cGtnbmFtZT10Z19vd3QKIHZlcnNpb249MC4wLjAuMjAyMzA2MTAKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIF9jb21taXQ9ZGNiNTA2OWZmNzZiZDI5M2U4NjkyODgwNDIwODczN2U2Y2VlMmNjYwog X2xpYnl1dl9jb21taXQ9NzdjMjEyMWY3ZTZiOGU2OTRkNmU5MDhiYmJlOWJlMjQyMTQwOTdkYQog X2Fic2VpbF9jb21taXQ9OGMwYjk0ZTc5M2E2NjQ5NWUwYjFmMzRhNWViMjZiZDdkYzY3MmRiMAoK RnJvbSAzMzQ1ZTQzMTA4ZGQ4ODRjOGQxYTkwMzg5NjJmYWVkMmVlOWI0YzU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzgvMTE1XSB0aW1n OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdGltZy90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZSBiL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZQppbmRl eCAyYTJhYjc2M2QyZmRkLi44ZmI0MzI3NTM1ZWY5IDEwMDY0NAotLS0gYS9zcmNwa2dzL3RpbWcv dGVtcGxhdGUKKysrIGIvc3JjcGtncy90aW1nL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAndGltZycKIHBrZ25hbWU9dGltZwogdmVyc2lvbj0xLjQuNQotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIt RFdJVEhfT1BFTlNMSURFX1NVUFBPUlQ9b2ZmIC1Xbm8tZGV2IgogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIGdpdCIKCkZyb20gYTU0MjIzOWMwMDJiMzIwYTk2YTUzODEyNDE2NDM1NzQ5NTVm Y2MxNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDc5LzExNV0gdHZoZWFkZW5kOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNy Y3BrZ3MvdHZoZWFkZW5kL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdHZoZWFkZW5k L3RlbXBsYXRlIGIvc3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUKaW5kZXggZTZiMTZkN2NjZjNi ZC4uNDZiNTJiNmZiN2Y5NCAxMDA2NDQKLS0tIGEvc3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUK KysrIGIvc3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUKQEAgLTEsMTQgKzEsMTQgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3R2aGVhZGVuZCcKIHBrZ25hbWU9dHZoZWFkZW5kCiB2ZXJzaW9uPTQu Mi44Ci1yZXZpc2lvbj02CityZXZpc2lvbj03CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBj b25maWd1cmVfYXJncz0iLS1lbmFibGUtZHZic2NhbiAtLWRpc2FibGUtZmZtcGVnX3N0YXRpYwog LS1kaXNhYmxlLWhkaG9tZXJ1bl9zdGF0aWMgLS1kaXNhYmxlLWJpbnRyYXlfY2FjaGUgLS1kaXNh YmxlLWxpYngyNjRfc3RhdGljCiAtLWRpc2FibGUtbGlieDI2NV9zdGF0aWMgLS1kaXNhYmxlLWxp YnZweF9zdGF0aWMgLS1kaXNhYmxlLWxpYnRoZW9yYV9zdGF0aWMKIC0tZGlzYWJsZS1saWJ2b3Ji aXNfc3RhdGljIC0tZGlzYWJsZS1saWJmZGthYWNfc3RhdGljIgogaG9zdG1ha2VkZXBlbmRzPSJn ZXR0ZXh0IHBrZy1jb25maWcgcHl0aG9uIGdpdCB3aGljaCIKLW1ha2VkZXBlbmRzPSJhdmFoaS1s aWJzLWRldmVsIG9wZW5zc2wtZGV2ZWwgemxpYi1kZXZlbCBsaWJjdXJsLWRldmVsIGZmbXBlZy1k ZXZlbCIKK21ha2VkZXBlbmRzPSJhdmFoaS1saWJzLWRldmVsIG9wZW5zc2wtZGV2ZWwgemxpYi1k ZXZlbCBsaWJjdXJsLWRldmVsIGZmbXBlZzQtZGV2ZWwiCiBzaG9ydF9kZXNjPSJUViBzdHJlYW1p bmcgc2VydmVyIgogbWFpbnRhaW5lcj0ibGVtbWkgPGxlbW1pQG5lcmQybmVyZC5vcmc+IgogbGlj ZW5zZT0iR1BMLTMuMC1vbmx5IgoKRnJvbSBlNmI5N2VlOWRlNmY2ZjBlY2ZkMjk4MzhjNWQ3YjA0 YTAxNDQyYzVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwODAvMTE1XSB1bnBhcGVyOiB1cGRhdGUgdG8gNy4wLjAuCgotLS0KIHNyY3BrZ3Mv dW5wYXBlci90ZW1wbGF0ZSB8IDE2ICsrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4 IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnBh cGVyL3RlbXBsYXRlIGIvc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlCmluZGV4IDM4ZWQ0N2E1ODQw MTYuLjFmZjkxMGU3MjJhZmMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdW5wYXBlci90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3VucGFwZXIvdGVtcGxhdGUKQEAgLTEsMTMgKzEsMTMgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ3VucGFwZXInCiBwa2duYW1lPXVucGFwZXIKLXZlcnNpb249Ni4xCi1yZXZp c2lvbj0zCi1idWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCit2ZXJzaW9uPTcuMC4wCityZXZpc2lv bj0xCitidWlsZF9zdHlsZT1tZXNvbgoraG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIG1lc29u IGxpYnhzbHQiCittYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHB5dGhvbjMtU3BoaW54Igorc2hv cnRfZGVzYz0iUG9zdC1wcm9jZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVy IgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKLWhvc3RtYWtl ZGVwZW5kcz0icGtnLWNvbmZpZyBsaWJ4c2x0IgotbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCIK LWxpY2Vuc2U9IkdQTC0yIgorbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJo dHRwczovL3d3dy5mbGFtZWV5ZXMuZXUvcHJvamVjdHMvdW5wYXBlciIKLXNob3J0X2Rlc2M9IkEg cG9zdC1wcm9jZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogZGlzdGZp bGVzPSJodHRwczovL3d3dy5mbGFtZWV5ZXMuZXUvZmlsZXMvJHtwa2duYW1lfS0ke3ZlcnNpb259 LnRhci54eiIKLWNoZWNrc3VtPTIzN2M4NGY1ZGE1NDRiM2Y3NzA5ODI3ZjlmMTJjMzdjMzQ2Y2Rm MDI5YjExMjhmYjQ2MzNmOWJhZmE1Y2I5MzAKK2NoZWNrc3VtPTI1NzVmYmJmMjZjMjI3MTlkMWNi ODgyYjU5NjAyYzk5MDBjN2Y3NDcxMThhYzEzMDg4M2Y2MzQxOWJlNDZhODAKCkZyb20gMzEwNGZi ZGI5MTJkZWM0MGU4NDdjMzk0MDk1YTFjOTkxOGExNGM1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDgxLzExNV0gdmJhLW06IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy92YmEtbS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvdmJhLW0vdGVtcGxhdGUgYi9zcmNwa2dzL3ZiYS1tL3RlbXBsYXRlCmluZGV4IDgwOTM0 M2Y0NjVmMjQuLmUzZjc3ODVkZTBkMjMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdmJhLW0vdGVtcGxh dGUKKysrIGIvc3JjcGtncy92YmEtbS90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9 dmJhLW0KIHJldmVydHM9MTI5Ml8yCiB2ZXJzaW9uPTIuMS42Ci1yZXZpc2lvbj0xCityZXZpc2lv bj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1ERU5BQkxFX0dUSz1UUlVF IC1ERU5BQkxFX0ZGTVBFRz1UUlVFIC1ERU5BQkxFX0xJTks9VFJVRSAtRENNQUtFX0JVSUxEX1RZ UEU9UmVsZWFzZSIKIGhvc3RtYWtlZGVwZW5kcz0iZ2V0dGV4dCBwa2ctY29uZmlnIHVuemlwIHpp cCB5YXNtIHd4V2lkZ2V0cy1ndGszLWRldmVsIgoKRnJvbSAwMDM2NzM5Zjk4YzM5YmFjNTI0M2Y5 Nzk0MDM1NThhMzQ1NDFiMTdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwODIvMTE1XSB2aWNlOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4z CgotLS0KIHNyY3BrZ3MvdmljZS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZpY2Uv dGVtcGxhdGUgYi9zcmNwa2dzL3ZpY2UvdGVtcGxhdGUKaW5kZXggZmU5ZDMzYTgxMTk0Ny4uNGJl YWIyYzVmOWViZCAxMDA2NDQKLS0tIGEvc3JjcGtncy92aWNlL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvdmljZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Zp Y2UnCiBwa2duYW1lPXZpY2UKIHZlcnNpb249My43LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIKIAkkKHZvcHRfZW5h YmxlIHNkbDIgc2RsdWkyKQpAQCAtMjYsNyArMjYsNyBAQCBtYWtlZGVwZW5kcz0iCiAJJCh2b3B0 X2lmIGd0azMgZ3RrKzMtZGV2ZWwpCiAJJCh2b3B0X2lmIGd0azMgcHVsc2VhdWRpby1kZXZlbCkK IAkkKHZvcHRfaWYgZ3RrMyBwYW5nby1kZXZlbCkKLQkkKHZvcHRfaWYgZmZtcGVnIGZmbXBlZy1k ZXZlbCkiCisJJCh2b3B0X2lmIGZmbXBlZyBmZm1wZWc0LWRldmVsKSIKIHNob3J0X2Rlc2M9IkVt dWxhdG9yIGZvciBDNjQsIEMxMjgsIENCTS1JSSwgUEVULCBWSUMyMCwgUGx1czQgYW5kIEMxNiIK IG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJH UEwtMi4wLW9yLWxhdGVyIgoKRnJvbSBhNmI2Y2IyYjIzNGI0MTYwMmMyNDg4MWY1YzE0ODc3ZjRi MzUzOGFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwODMvMTE1XSB3YXlwaXBlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3Mvd2F5cGlwZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZSBi L3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZQppbmRleCA1YzQxNjE5MDAwNjBhLi4xYTQ2ZmUyN2Y3 ZDgzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3dheXBpcGUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy93 YXlwaXBlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnd2F5 cGlwZScKIHBrZ25hbWU9d2F5cGlwZQogdmVyc2lvbj0wLjguNAotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9bWVzb24KICMgbHRvIGlzIG9mZiBiZWNhdXNlIGl0IGNhdXNlcyBs aW5raW5nIGVycm9ycyBpbiBhcm12NmwgYW5kIGFybXY3bCAoZHVlIHRvIE5FT04pCiBjb25maWd1 cmVfYXJncz0iLUR3ZXJyb3I9ZmFsc2UgLUR3aXRoX2RtYWJ1Zj1lbmFibGVkIC1Ed2l0aF9sejQ9 ZW5hYmxlZAoKRnJvbSA3ODcyM2IyNjRmODBjOWVhM2Y2ZTg1OGE1M2MxNDkzMjg2Y2VhODM2IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODQv MTE1XSB3Zi1yZWNvcmRlcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3dm LXJlY29yZGVyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0 ZSBiL3NyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUKaW5kZXggZTI3OGViMDAxNjAwZi4uNWQw MTRhNWYyOGFmYiAxMDA2NDQKLS0tIGEvc3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnd2YtcmVjb3JkZXInCiBwa2duYW1lPXdmLXJlY29yZGVyCiB2ZXJzaW9uPTAu My4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2Vk ZXBlbmRzPSJwa2ctY29uZmlnIHNjZG9jIHdheWxhbmQtZGV2ZWwiCiBtYWtlZGVwZW5kcz0id2F5 bGFuZC1wcm90b2NvbHMgd2F5bGFuZC1kZXZlbCBmZm1wZWctZGV2ZWwgeDI2NC1kZXZlbAoKRnJv bSAwZmUzYzdjYzg2NTRlNjQyZDdlYjNmNDU5MTg3MTdlOGI5ZThhZGJlIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODUvMTE1XSB4cHJhOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MveHByYS90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MveHByYS90ZW1wbGF0ZSBiL3NyY3BrZ3MveHByYS90ZW1wbGF0ZQppbmRleCAw YTYzZmRiNmM3NDM3Li5kNWFjYzE5ODFjNWY2IDEwMDY0NAotLS0gYS9zcmNwa2dzL3hwcmEvdGVt cGxhdGUKKysrIGIvc3JjcGtncy94cHJhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAneHByYScKIHBrZ25hbWU9eHByYQogdmVyc2lvbj00LjQuNgotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cHl0aG9uMy1tb2R1bGUKIG1ha2VfYnVpbGRf YXJncz0iLS13aXRob3V0LWN1ZGFfa2VybmVscyAtLXdpdGhvdXQtY3VkYV9yZWJ1aWxkIgogbWFr ZV9pbnN0YWxsX2FyZ3M9IiQodm9wdF93aXRoIGRvY3MpICR7bWFrZV9idWlsZF9hcmdzfSIKCkZy b20gNzZjNWFhMjZkY2MzZDQ1MzMzOTVkODUxNWUyODY3NmUxODUwNjIxMSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAz MSBNYXIgMjAyMyAwOTowNzo0MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg2LzExNV0gbnYtY29k ZWMtaGVhZGVyczogdXBkYXRlIHRvIDEyLjAuMTYuMAoKLS0tCiBzcmNwa2dzL252LWNvZGVjLWhl YWRlcnMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3Rl bXBsYXRlIGIvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlCmluZGV4IDNkNDIyYTYx ZTQ4OTEuLjI1MWUwNTdmODI2ZmIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbnYtY29kZWMtaGVhZGVy cy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUKQEAgLTEs NiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdudi1jb2RlYy1oZWFkZXJzJwogcGtnbmFt ZT1udi1jb2RlYy1oZWFkZXJzCi12ZXJzaW9uPTExLjEuNS4xCit2ZXJzaW9uPTEyLjAuMTYuMAog cmV2aXNpb249MQogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBzaG9ydF9kZXNjPSJGRm1wZWcg dmVyc2lvbiBvZiBoZWFkZXJzIHJlcXVpcmVkIHRvIGludGVyZmFjZSB3aXRoIE52aWRpYXMgY29k ZWMgQVBJcyIKQEAgLTgsNyArOCw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9p ZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJNSVQiCiBob21lcGFnZT0iaHR0cDovL2dpdC52aWRlb2xh bi5vcmcvP3A9ZmZtcGVnL252LWNvZGVjLWhlYWRlcnMuZ2l0IgogZGlzdGZpbGVzPSJodHRwczov L2dpdGh1Yi5jb20vRkZtcGVnL252LWNvZGVjLWhlYWRlcnMvYXJjaGl2ZS9uJHt2ZXJzaW9ufS50 YXIuZ3oiCi1jaGVja3N1bT1kMDk1ZmJkNTZhYTkzNzcyNDcxYTMyM2JlMGViZTY1NTA0YTBmNDNm MDZjNzZhMzBiNmQyNWRhNzdiMDZhZTljCitjaGVja3N1bT0yYTE1MzNiNjVmNTVmOWRhNTI5NTZm YWYwNjI3ZWQzYjc0ODY4YWMwYzdmMjY5OTkwZWRkMjEzNjkxMTNiNDhmCiAKIHBvc3RfaW5zdGFs bCgpIHsKIAlzZWQgLW4gJzQsMjVwJyBpbmNsdWRlL2ZmbnZjb2RlYy9udkVuY29kZUFQSS5oID4g TElDRU5TRQoKRnJvbSA2NjZlYjQ2OWFjYTJlYjI0Zjg3NzliYjg2MTMwYzhjMDUyM2FiNGJiIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBGcmksIDMxIE1hciAyMDIzIDA5OjA4OjQwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODcv MTE1XSBvcGVuaW1hZ2VkZW5vaXNlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbmltYWdl ZGVub2lzZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZQppbmRl eCBkYjVjY2RiMDU1Y2M5Li5jYjkwMDQ1YWZiNjM0IDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5p bWFnZWRlbm9pc2UvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNlL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbmltYWdlZGVub2lz ZScKIHBrZ25hbWU9b3BlbmltYWdlZGVub2lzZQogdmVyc2lvbj0xLjQuMwotcmV2aXNpb249MQor cmV2aXNpb249MgogYXJjaHM9Ing4Nl82NCoiCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2Vk ZXBlbmRzPSJpc3BjIHB5dGhvbjMiCgpGcm9tIDUyZTg1ZTUwZmExZTQ5OWE4MmFjYzc5OTRmNjU3 ZjA4MWI0ZjUwNTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMyBBcHIgMjAyMyAyMzozMTo0NSAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDg4LzExNV0gc2hvdGN1dDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Nob3RjdXQvdGVtcGxh dGUgYi9zcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUKaW5kZXggN2QyYWY3YjA0NzBiNS4uYzQxNmM5 MDZmZjczNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlCisrKyBiL3NyY3Br Z3Mvc2hvdGN1dC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J3Nob3RjdXQnCiBwa2duYW1lPXNob3RjdXQKIHZlcnNpb249MjMuMDUuMTQKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURTSE9UQ1VU X1ZFUlNJT049JHt2ZXJzaW9ufSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDYtdG9v bHMtZGV2ZWwiCgpGcm9tIGU5YzJlMDdlMjNjZDE4ZWJkMmYwNmRkOGI4N2U5Y2M1NWM1ODVjODcg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMyBBcHIgMjAyMyAyMzozMzozMCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg5 LzExNV0gc2hpYm9rZW4yOiByZXZidW1wIGZvciBxdDUtNS4xNS44CgotLS0KIHNyY3BrZ3Mvc2hp Ym9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggfCAxICsKIHNy Y3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQog Y3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1h Y2hpbmVyeS1ieXBhc3MucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NoaWJva2VuMi9wYXRj aGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoIGIvc3JjcGtncy9zaGlib2tlbjIv cGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEy MDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi5lZmNmMzI0OWJkODg1Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5w YXRjaApAQCAtMCwwICsxIEBACisuLi8uLi9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRs aWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlIGIvc3JjcGtncy9zaGlib2tlbjIv dGVtcGxhdGUKaW5kZXggMDg0ZWNjM2JhMWUxYy4uMmEyMTk5ODk5N2ViMSAxMDA2NDQKLS0tIGEv c3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzaGlib2tlbjInCiBwa2du YW1lPXNoaWJva2VuMgogdmVyc2lvbj01LjE1LjcKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIF9w a2duYW1lPSJweXNpZGUtc2V0dXAtb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufSIKIGJ1aWxkX3dy a3NyYz0ic291cmNlcy9zaGlib2tlbjIiCiBidWlsZF9zdHlsZT1jbWFrZQoKRnJvbSBlYTE0NWYw ZWJhMmMzZmE0Y2IwNDVmOGNlOGYwNDU2MDYzMGU3YmNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBNb24sIDMgQXByIDIwMjMg MjM6MzM6NTMgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5MC8xMTVdIHB5dGhvbjMtcHlzaWRlMjog dXBkYXRlIHRvIDUuMTUuOAoKLS0tCiAuLi4vcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5 cGFzcy5wYXRjaCAgICAgIHwgMTUgKysrKysrKysrKysrKysrCiBzcmNwa2dzL3B5dGhvbjMtcHlz aWRlMi90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgIHwgIDkgKysrKystLS0tCiAyIGZpbGVzIGNo YW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5 cGFzcy5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMv aW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRl Mi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjY0YzQyOTU4NDc3NmIKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnkt YnlwYXNzLnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKK1VzaW5nIHRoaXMgcHJldmVudHMgYW4gZXJy b3IgYXJvdW5kIGxpbmUgMjIwIGJlbG93IGl0LgorIkF0dHJpYnV0ZUVycm9yOiBtb2R1bGUgJ2lt cG9ydGxpYicgaGFzIG5vIGF0dHJpYnV0ZSAnbWFjaGluZXJ5JyIKK1RoZSBvbGQgYmFja3VwIGxv Z2ljIGlzIGluIHBsYWNlIGFuZCBjb21waWxlcyB3aXRob3V0IGlzc3Vlcy4KKy0tLSBhL3NvdXJj ZXMvc2hpYm9rZW4yL2xpYnNoaWJva2VuL2VtYmVkL3NpZ25hdHVyZV9ib290c3RyYXAucHkJMjAy My0wNC0wMiAyMzowOTozNC42ODg5MTI0MDIgLTA0MDAKKysrKyBiL3NvdXJjZXMvc2hpYm9rZW4y L2xpYnNoaWJva2VuL2VtYmVkL3NpZ25hdHVyZV9ib290c3RyYXAucHkJMjAyMy0wNC0wMiAyMzox MDowMy4zOTU1Mjk1ODIgLTA0MDAKK0BAIC0xNzAsOSArMTcwLDYgQEAKKworICAgICAjICd6aXBz dHJpbmdfc2VxdWVuY2UnIGNvbWVzIGZyb20gc2lnbmF0dXJlLmNwcAorICAgICB6aXBieXRlcyA9 IGJhc2U2NC5iNjRkZWNvZGUoJycuam9pbih6aXBzdHJpbmdfc2VxdWVuY2UpKQorLSAgICBpZiBz eXMudmVyc2lvbl9pbmZvWzBdID49IDM6CistICAgICAgICB2emlwID0gemlwZmlsZS5aaXBGaWxl KGlvLkJ5dGVzSU8oemlwYnl0ZXMpKQorLSAgICAgICAgcmV0dXJuIHN5cy5tZXRhX3BhdGgsIEVt YmVkZGFibGVaaXBJbXBvcnRlcih2emlwKQorCisgICAgICMgT2xkIHZlcnNpb24gZm9yIFB5dGhv biAyLjcsIG9ubHkuCisgICAgIGltcG9ydCBvcwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9weXRob24z LXB5c2lkZTIvdGVtcGxhdGUgYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQppbmRl eCA1MGU2ZmYyNjBkM2I1Li5iNTBlNjJiZDIxNWQ0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3B5dGhv bjMtcHlzaWRlMi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0 ZQpAQCAtMSwxMSArMSwxMiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHl0aG9uMy1weXNpZGUy JwogcGtnbmFtZT1weXRob24zLXB5c2lkZTIKLXZlcnNpb249NS4xNS41Ci1yZXZpc2lvbj0yCit2 ZXJzaW9uPTUuMTUuOAorcmV2aXNpb249MQogX3BrZ25hbWU9InB5c2lkZS1zZXR1cC1vcGVuc291 cmNlLXNyYy0ke3ZlcnNpb259IgogYnVpbGRfd3Jrc3JjPSJzb3VyY2VzL3B5c2lkZTIiCiBidWls ZF9zdHlsZT1jbWFrZQotY29uZmlndXJlX2FyZ3M9Ii1EUFlUSE9OX0VYRUNVVEFCTEU9L3Vzci9i aW4vcHl0aG9uIgorY29uZmlndXJlX2FyZ3M9Ii1EUFlUSE9OX0VYRUNVVEFCTEU9L3Vzci9iaW4v cHl0aG9uIC1EQ01BS0VfQlVJTERfVFlQRT1Ob25lCisgLURCVUlMRF9URVNUUz1PRkYiCiBob3N0 bWFrZWRlcGVuZHM9ImNtYWtlIHB5dGhvbjMgc2hpYm9rZW4yIgogbWFrZWRlcGVuZHM9InB5dGhv bjMtZGV2ZWwgbGlic2hpYm9rZW4yLWRldmVsIHF0NS1kZXZlbAogIHF0NS1tdWx0aW1lZGlhLWRl dmVsIHF0NS10b29scy1kZXZlbCBxdDUtcGx1Z2luLW15c3FsIHF0NS1wbHVnaW4tb2RiYwpAQCAt MjMsNyArMjQsNyBAQCBtYWludGFpbmVyPSJ5b3BpdG8gPHBpZXJyZS5ib3VyZ2luQGZyZWUuZnI+ IgogbGljZW5zZT0iTEdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93aWtpLnF0 LmlvL1F0X2Zvcl9QeXRob24iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZG93bmxvYWQucXQuaW8vb2Zm aWNpYWxfcmVsZWFzZXMvUXRGb3JQeXRob24vcHlzaWRlMi9QeVNpZGUyLSR7dmVyc2lvbn0tc3Jj LyR7X3BrZ25hbWV9LnRhci54eiIKLWNoZWNrc3VtPTM5MjBhNGZiMzUzMzAwMjYwYzliYzQ2ZmY3 MGYxZmI5NzVjNWU3ZWZhMjJlOWQ1MTIyMjU4ODkyOGNlMTliMzMKK2NoZWNrc3VtPTIzNDM2MzAy YzhkZWI1YjRjYmM3NjliMjA1ZDA5NjA0ZTM4YmE4M2I0MDcwOGVmY2NiN2JkOGM5YWY2ZjZiNWQK IAogYnVpbGRfb3B0aW9ucz0id2ViZW5naW5lIgogZGVzY19vcHRpb25fd2ViZW5naW5lPSJCdWls ZCBRdDUgV2ViRW5naW5lIGJpbmRpbmdzIgoKRnJvbSAxODkyN2Y1NmEyOWIxOTI0YjIyNmU4NjNm MjA3ZDNlM2RhMTYxNzJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMTE6MTQ6MzUgLTA0MDAKU3Vi amVjdDogW1BBVENIIDA5MS8xMTVdIGtvbnF1ZXJvcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tv bnF1ZXJvci90ZW1wbGF0ZSBiL3NyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlCmluZGV4IGQ4ZDBl NzNhNzhhYjIuLmM1YmRiYTYwMWQzYzMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva29ucXVlcm9yL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrb25xdWVyb3InCiBwa2duYW1lPWtvbnF1ZXJvcgogdmVy c2lvbj0yMy4wNC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQog Y29uZmlndXJlX2FyZ3M9Ii1EREVTS1RPUFRPSlNPTl9FWEVDVVRBQkxFPS91c3IvYmluL2Rlc2t0 b3B0b2pzb24iCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMgcHl0aG9uMyBx dDUtaG9zdC10b29scyBxdDUtcW1ha2Uga2RvY3Rvb2xzCi1rY29yZWFkZG9ucyBrY29uZmlnIGdl dHRleHQiCisga2NvcmVhZGRvbnMga2NvbmZpZyBnZXR0ZXh0IgogbWFrZWRlcGVuZHM9InF0NS1k ZXZlbCBxdDUtd2ViZW5naW5lLWRldmVsIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbAogIHF0NS13ZWJj aGFubmVsLWRldmVsIHF0NS1sb2NhdGlvbi1kZXZlbCBrY211dGlscy1kZXZlbCBrZGVsaWJzNHN1 cHBvcnQtZGV2ZWwKICBrYXJjaGl2ZS1kZXZlbCBraHRtbC1kZXZlbCBrZGVzdS1kZXZlbCBrYWN0 aXZpdGllczUtZGV2ZWwiCgpGcm9tIDI0NGM5NzAxYmMyMWFmMjMyYmRlYjE4ODliZDgxZjVlYmQx MzU0OWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIgMjAyMyAxMToxNDo1OCAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDkyLzExNV0gcXQ1LXNwZWVjaDogcmV2YnVtcCBmb3IgcXQ1LTUuMTUuOAoKLS0tCiBzcmNw a2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1zcGVlY2gvdGVt cGxhdGUgYi9zcmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUKaW5kZXggM2VjZDEwZDUwNjUwYy4u MmQ3ZDRkNGQyNDUzNSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvcXQ1LXNwZWVjaC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ3F0NS1zcGVlY2gnCiBwa2duYW1lPXF0NS1zcGVlY2gKIHZlcnNpb249NS4x NS43Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBfY29tbWl0PWQzMmY0YTQ3OWQzOGExMWY1NDc1 OTgwMDRiOTc1ZjQzNTY0MjRhMTYKIGJ1aWxkX3N0eWxlPXFtYWtlCiBjb25maWd1cmVfYXJncz0i LS0gLWZsaXRlIC1mbGl0ZS1hbHNhIC1zcGVlY2hkIgoKRnJvbSBjNjZkZGZkNDdjNjExNmVkMWZj NWM4OWRmYzIxZDc0YWE1ZWRhYjliIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMTg6Mzg6NTAgLTA0 MDAKU3ViamVjdDogW1BBVENIIDA5My8xMTVdIHF0NS1zdHlsZXBsdWdpbnM6IHJldmJ1bXAgZm9y IHF0NS01LjE1LjgKCi0tLQogc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtncy9xdDUtc3R5 bGVwbHVnaW5zL3RlbXBsYXRlCmluZGV4IDk2ZWQ5N2QxMmNkMjQuLjMwZDkzNjYwYTJhNGUgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdxdDUtc3R5bGVwbHVnaW5zJwogcGtnbmFtZT1xdDUtc3R5bGVwbHVnaW5zCiB2ZXJz aW9uPTUuMC4wCi1yZXZpc2lvbj0yMAorcmV2aXNpb249MjEKIF9naXRyZXY9MzM1ZGJlY2UxMDNl MmNiZjZjN2NmODE5YWI2NjcyYzI5NTZiMTdiMwogYnVpbGRfc3R5bGU9cW1ha2UKIGhvc3RtYWtl ZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UiCgpGcm9tIDhkOWRl ZTJkNjFkZmZlMDdjOTBmMGZlNmIxNzMzMjU0MDZjMzAyMjggTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNyBNYXkgMjAy MyAyMDoxNDoxNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk0LzExNV0gbWx0NzogcmV2YnVtcCBm b3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZSB8IDIgKy0KIHNy Y3BrZ3MvbWx0Ny90ZW1wbGF0ZSAgICAgIHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtbGliYXYv dGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQppbmRleCAwNGMzOWJmZjE0ODk2 Li44YzcyZmMzZTk3ZWVlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ2dzdC1saWJhdicKIHBrZ25hbWU9Z3N0LWxpYmF2CiB2ZXJzaW9uPTEuMjIu MgotcmV2aXNpb249MgorcmV2aXNpb249MQogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVw ZW5kcz0icGtnLWNvbmZpZyB5YXNtIgogbWFrZWRlcGVuZHM9Im9yYy1kZXZlbCBnc3QtcGx1Z2lu cy1iYXNlMS1kZXZlbCBmZm1wZWctZGV2ZWwiCmRpZmYgLS1naXQgYS9zcmNwa2dzL21sdDcvdGVt cGxhdGUgYi9zcmNwa2dzL21sdDcvdGVtcGxhdGUKaW5kZXggZGYzZTJjNTU5YWQ2Yy4uNzc1Nzlm YmY2YjYzNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9tbHQ3L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv bWx0Ny90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21sdDcn CiBwa2duYW1lPW1sdDcKIHZlcnNpb249Ny4xNC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EU1dJR19QWVRIT049T04iCiBob3N0 bWFrZWRlcGVuZHM9ImRveHlnZW4gcGtnLWNvbmZpZyBsYWRzcGEtc2RrIHN3aWcgcHl0aG9uMyB3 aGljaAoKRnJvbSAwM2FiNWZhYjU0OGJjMGEzNDBjNTEzNzQ3NzBmNGEwMDM2N2E2ZWNjIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBTdW4sIDcgTWF5IDIwMjMgMjA6MTU6MDMgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5NS8xMTVd IHF0Ni13ZWJlbmdpbmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9xdDYt d2ViZW5naW5lL3RlbXBsYXRlIHwgMSArCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykK CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdGVtcGxhdGUgYi9zcmNwa2dzL3F0 Ni13ZWJlbmdpbmUvdGVtcGxhdGUKaW5kZXggZjk0OGRjOTE5YTE1ZS4uNDM3NzhiNTY4ZDNmMCAx MDA2NDQKLS0tIGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv cXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZQpAQCAtMTQ1LDYgKzE0NSw3IEBAIHByZV9pbnN0YWxsKCkg ewogfQogCiBwb3N0X2luc3RhbGwoKSB7CisJdmxpY2Vuc2UgTElDRU5TRVMvQlNELTMtQ2xhdXNl LnR4dAogCWxvY2FsIF9maWxlCiAJZmluZCAiJHtERVNURElSfSIvdXNyL2xpYi9xdDYvZXhhbXBs ZXMgXAogCQktcGF0aCAnKi9saWIvcXQ2LyoqL2xpYi9xdDYvKicgLXR5cGUgZiB8CgpGcm9tIDYz ZTQ5NWQ5ZTRjOWI5ZGZlYzdmODllZTg4OTExODRmOTMwMDJkOWEgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFRodSwgMTEgTWF5 IDIwMjMgMTQ6MDU6MTQgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5Ni8xMTVdIG9wZW5tdzogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29wZW5tdy90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlIGIvc3JjcGtncy9vcGVubXcvdGVtcGxhdGUKaW5k ZXggMzQ2MjU5MWVjMTc0Zi4uOTM3ODBhZGE1NTFmMCAxMDA2NDQKLS0tIGEvc3JjcGtncy9vcGVu bXcvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVubXcvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVubXcnCiBwa2duYW1lPW9wZW5tdwogdmVyc2lvbj0w LjQ4LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBfcmVjYXN0 X2NvbW1pdD1lNzVhZGY4NmY5MWViMzA4MjIyMDA4NWU0MmRkYTYyNjc5ZjlhM2VhCiBfYnVsbGV0 X3RhZz0zLjE3CgpGcm9tIDZlNjE5ZmFhMjkxZmQ1MDlmMjA2OWI5OGJhMjg1NmRkZWMzZjQxNWEg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFN1biwgMjEgTWF5IDIwMjMgMTI6NDQ6MTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5 Ny8xMTVdIGVsZWN0cm9uMjQ6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9l bGVjdHJvbjI0L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRl IGIvc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlCmluZGV4IDQzMWJhNmIwZjgzMDEuLmU2NzUy NWIzMThkMzMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24yNC90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdlbGVjdHJvbjI0JwogcGtnbmFtZT1lbGVjdHJvbjI0CiB2ZXJzaW9uPTI0LjMuMAot cmV2aXNpb249MQorcmV2aXNpb249MgogX25vZGV2ZXI9MTguMTQuMAogX2Nocm9taXVtdmVyPTEx Mi4wLjU2MTUuMTY1CiBhcmNocz0ieDg2XzY0KiBhYXJjaDY0KiIKCkZyb20gNjJlZmU3ZGFiMDg3 MWM1YWQwOWM0MmIyNjI2M2YwODhkM2JiODM3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU2F0LCAzIEp1biAyMDIzIDA4OjIw OjIyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTgvMTE1XSBndGs0OiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3RrNC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3Rr NC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZQppbmRleCA4NTZkMjlhM2Q1ZGMzLi41 MTI4MjRlNjg5NGU0IDEwMDY0NAotLS0gYS9zcmNwa2dzL2d0azQvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9ndGs0L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn Z3RrNCcKIHBrZ25hbWU9Z3RrNAogdmVyc2lvbj00LjEwLjQKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9oZWxwZXI9ImdpciIKIGNvbmZpZ3VyZV9hcmdz PSItRG1hbi1wYWdlcz10cnVlIC1EZ3RrX2RvYz10cnVlIC1EYnVpbGQtdGVzdHM9ZmFsc2UKCkZy b20gOTMwZTU0NmQ2MWNmNTVhNjgwZmNkNzFmNDJlNzllNmE5ZTUxYjg2NSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA0 IEp1biAyMDIzIDExOjI1OjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTkvMTE1XSBlbGVjdHJv bjE5OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZWxlY3Ryb24xOS90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZWxl Y3Ryb24xOS90ZW1wbGF0ZQppbmRleCAzMDkzMjQ4NTg4NDM4Li4xZjZiN2ZiMTM3NjliIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9lbGVjdHJv bjE5L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZWxlY3Ry b24xOScKIHBrZ25hbWU9ZWxlY3Ryb24xOQogdmVyc2lvbj0xOS4wLjgKLXJldmlzaW9uPTMKK3Jl dmlzaW9uPTQKIF9ub2RldmVyPTE2LjE0LjIKIF9jaHJvbWl1bXZlcj0xMDIuMC41MDA1LjEyNQog YXJjaHM9Ing4Nl82NCogYWFyY2g2NCogcHBjNjRsZSoiCgpGcm9tIGYwZjA0OTdlZjg5YTE5ODY2 OThhMzc2MTRlMTI0NWFlMWMzZTAyMjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNCBKdW4gMjAyMyAxMToyODoyNiAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMTAwLzExNV0gc2lyaWw6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy9zaXJpbC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2lyaWwv dGVtcGxhdGUgYi9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlCmluZGV4IDg0MzMyZjc5ZDA2MGQuLjYy NzUwZGQyNDc1NDggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9zaXJpbC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J3NpcmlsJwogcGtnbmFtZT1zaXJpbAogdmVyc2lvbj0wLjkuMTIKLXJldmlzaW9uPTEwCityZXZp c2lvbj0xMQogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIGludGx0b29sIGF1dG9jb25mIGF1dG9tYWtlIGdldHRleHQtZGV2ZWwiCiBtYWtlZGVw ZW5kcz0iZmZ0dy1kZXZlbCBsaWJjb25maWctZGV2ZWwgbGlib3BlbmN2LWRldmVsIGxpYmZmbXMy LWRldmVsCgpGcm9tIGViNTM3NWE4OWJmMjIzZmVmNDg0YTI3ZmNkMDA4NzBkZmJiNDUwOTQgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFNhdCwgMTAgSnVuIDIwMjMgMDA6NDA6MzkgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwMS8x MTVdIGZyZWVjYWQ6IHJldmJ1bXAgZm9yIHF0NS13ZWJlbmdpbmUtNS4xNS4xMwoKLS0tCiBzcmNw a2dzL2ZyZWVjYWQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUg Yi9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUKaW5kZXggYTRhM2Y1Zjc2YjI5YS4uODYwOGQxNjcw Yzg3ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv ZnJlZWNhZC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Zy ZWVjYWQnCiBwa2duYW1lPWZyZWVjYWQKIHZlcnNpb249MC4yMC4yCi1yZXZpc2lvbj01CityZXZp c2lvbj02CiBidWlsZF9zdHlsZT1jbWFrZQogCiBfaW5zdF9wcmVmaXg9L3Vzci9saWIvJHtwa2du YW1lfQoKRnJvbSAyMGQ1MmZlZDJiMWQwYTcwNWE3ZmNhMmFkOGIwN2EwODMzYzkzZTM4IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBTYXQsIDEwIEp1biAyMDIzIDAwOjU3OjA5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDIvMTE1 XSBxdDYtbXVsdGltZWRpYTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3F0 Ni1tdWx0aW1lZGlhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDYtbXVsdGltZWRpYS90 ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUKaW5kZXggYTY4MzJmZGQ2 OWJmZS4uYzlmZmFjOTE0YWI4ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDYtbXVsdGltZWRpYS90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ2LW11bHRpbWVkaWEnCiBwa2duYW1lPXF0Ni1t dWx0aW1lZGlhCiB2ZXJzaW9uPTYuNS4wCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9z dHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EUVRfRkVBVFVSRV9nc3RyZWFtZXI9T04iCiBo b3N0bWFrZWRlcGVuZHM9InBlcmwgcXQ2LWRlY2xhcmF0aXZlLWhvc3QtdG9vbHMgcGtnLWNvbmZp ZyBxdDYtc2hhZGVydG9vbHMiCgpGcm9tIDRmMTIzYWE0ZTQzOTMzOGZiOWZiYzMzZDUxOTkyYjA0 OWY3ODU5YWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFRodSwgMjIgSnVuIDIwMjMgMTA6MjU6MDIgLTA0MDAKU3ViamVjdDog W1BBVENIIDEwMy8xMTVdIGtkZW5saXZlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3Mva2RlbmxpdmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tkZW5saXZlL3RlbXBs YXRlIGIvc3JjcGtncy9rZGVubGl2ZS90ZW1wbGF0ZQppbmRleCA4OWMwZGNmYjg1NzdmLi43NTQ5 NWIzYTM1ODY5IDEwMDY0NAotLS0gYS9zcmNwa2dzL2tkZW5saXZlL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3Mva2RlbmxpdmUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdrZGVubGl2ZScKIHBrZ25hbWU9a2RlbmxpdmUKIHZlcnNpb249MjMuMDQuMgotcmV2aXNp b249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0iCiAg ZXh0cmEtY21ha2UtbW9kdWxlcyBrY29uZmlnIGtjb3JlYWRkb25zIGtkb2N0b29scyBwa2ctY29u ZmlnIHB5dGhvbjMKCkZyb20gNjliMWNiNDFiNjY0YTk1NDBhNjg0YmUxMzdkZGVkODJlOWU0YWYy MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogVHVlLCA0IEp1bCAyMDIzIDA5OjE4OjIzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAx MDQvMTE1XSBnbWljOiByZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0tLQogc3JjcGtncy9nbWlj L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nbWljL3RlbXBsYXRlIGIvc3JjcGtncy9nbWlj L3RlbXBsYXRlCmluZGV4IDBiYjQwMzRkNWNjODYuLjgwODk1M2U5YjU0M2MgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvZ21pYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dtaWMvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnbWljJwogcGtnbmFtZT1nbWljCiB2ZXJz aW9uPTMuMS42Ci1yZXZpc2lvbj00CityZXZpc2lvbj01CiBfemFydF9oYXNoPTM0ZWJmNmNjZTBi YWZiOThhYmU1N2NlYzgzYzRhMDJjZDFhYmVjYTAKIGNyZWF0ZV93cmtzcmM9eWVzCiBidWlsZF93 cmtzcmM9InNyYyIKCkZyb20gOGZhNjhlNjI5MzY3YTNkYmRjYTQ3Yjc5ODRjZGUwNGUzMmFmZjc2 ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogVHVlLCA0IEp1bCAyMDIzIDA5OjI5OjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAx MDUvMTE1XSBzeW5maWdzdHVkaW86IHJldmJ1bXAgZm9yIHN5bmZpZyBtbHQ3CgotLS0KIHNyY3Br Z3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zeW5maWdzdHVkaW8v dGVtcGxhdGUgYi9zcmNwa2dzL3N5bmZpZ3N0dWRpby90ZW1wbGF0ZQppbmRleCBhZjFjNWEyOTZl ZjBmLi4wOWU0NDJkYTlhNjgwIDEwMDY0NAotLS0gYS9zcmNwa2dzL3N5bmZpZ3N0dWRpby90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL3N5bmZpZ3N0dWRpby90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAK ICMgU2hvdWxkIGJlIGtlcHQgaW4gc3luYyB3aXRoICdzeW5maWcnIGFuZCAnRVRMJwogcGtnbmFt ZT1zeW5maWdzdHVkaW8KIHZlcnNpb249MS40LjQKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1 aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtdXBkYXRl LW1pbWVkYiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBpbnRsdG9vbCBnZXR0ZXh0IHN5 bmZpZyIKCkZyb20gOTliNjNkYmRmNTNhMzQyMGYzN2Q5YmMxNGQ5ZWYzZGJlNDE2NjVlNCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCA0IEp1bCAyMDIzIDEwOjE5OjE3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDYvMTE1 XSBvcGVuaW1hZ2VpbzogcmV2YnVtcCBmb3IgZmZtcGVnNi4wCgotLS0KIHNyY3BrZ3Mvb3Blbmlt YWdlaW8vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRlIGIv c3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1wbGF0ZQppbmRleCA2OWE5ZTIzNzg2OTQyLi5kOGE2YmE1 NmVmZDExIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdvcGVuaW1hZ2VpbycKIHBrZ25hbWU9b3BlbmltYWdlaW8KIHZlcnNpb249Mi40Ljku MAotcmV2aXNpb249NQorcmV2aXNpb249NgogYnVpbGRfc3R5bGU9Y21ha2UKIGJ1aWxkX2hlbHBl cj1xZW11CiBjb25maWd1cmVfYXJncz0iLURVU0VfUVQ9MCAtRFVTRV9QWVRIT049MCAtRE9JSU9f QlVJTERfVEVTVFM9MAoKRnJvbSBkY2QzNzAxZjFlZTIzYjRkMTAxODEzMzhhNWUwZTgxZDU0ODBh NDM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBUdWUsIDQgSnVsIDIwMjMgMTE6MTc6MzcgLTA0MDAKU3ViamVjdDogW1BBVENI IDEwNy8xMTVdIERFTEVURTogaW50ZWxfcGFja2FnZXMKCi0tLQogY29tbW9uL3NobGlicyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyY3BrZ3MvaW50ZWwtZ21tbGli L3RlbXBsYXRlICAgICAgICAgICAgICAgICB8ICAgNiArLQogLi4ubW1vbi1FbmFibGUtTU1DLWlu LWZyZWUta2VybmVsLWJ1aWxkLnBhdGNoIHwgMTI1ICsrKysrKysrKysrKysrKysrKwogc3JjcGtn cy9pbnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUgICAgICAgICAgIHwgICA2ICstCiBzcmNwa2dz L2ludGVsLW1lZGlhLXNkay9wYXRjaGVzL211c2wucGF0Y2ggICAgfCAgMTQgKysKIHNyY3BrZ3Mv aW50ZWwtbWVkaWEtc2RrL3RlbXBsYXRlICAgICAgICAgICAgICB8ICAzNyArKysrKysKIHNyY3Br Z3MvaW50ZWwtbWVkaWEtc2RrL3VwZGF0ZSAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dz L29uZXZwbC1kZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9v bmV2cGwtaW50ZWwtZ3B1LWRldmVsICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3Mvb25l dnBsLWludGVsLWdwdS90ZW1wbGF0ZSAgICAgICAgICAgICB8ICAyNyArKysrCiBzcmNwa2dzL29u ZXZwbC90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgfCAgMzQgKysrKysKIDExIGZpbGVz IGNoYW5nZWQsIDI0OCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3BhdGNoZXMvMDAwMS1NZWRpYS1Db21t b24tRW5hYmxlLU1NQy1pbi1mcmVlLWtlcm5lbC1idWlsZC5wYXRjaAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvaW50ZWwtbWVkaWEtc2RrL3BhdGNoZXMvbXVzbC5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvaW50ZWwtbWVkaWEtc2RrL3RlbXBsYXRlCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdXBkYXRlCiBjcmVhdGUgbW9kZSAxMjAwMDAg c3JjcGtncy9vbmV2cGwtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL29uZXZwbC1p bnRlbC1ncHUtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL29uZXZwbC1pbnRlbC1n cHUvdGVtcGxhdGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL29uZXZwbC90ZW1wbGF0ZQoK ZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IGI3M2NkMjc3 MDU0ZmIuLmIwZmU1NzMyMjE0NzIgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIvY29t bW9uL3NobGlicwpAQCAtNDMzMCw2ICs0MzMwLDggQEAgbGliZ3NvYXBzc2wrKy0yLjguMTI0LnNv IGdzb2FwLTIuOC4xMjRfMQogbGlianhsLnNvLjAuOCBsaWJqeGwtMC44LjJfMQogbGlianhsX2Rl Yy5zby4wLjggbGlianhsLTAuOC4yXzEKIGxpYmp4bF90aHJlYWRzLnNvLjAuOCBsaWJqeGwtMC44 LjJfMQorbGlibWZ4LnNvLjEgbGlibWZ4LTIyLjYuNF8xCitsaWJ2cGwuc28uMiBvbmV2cGwtMjAy My4xLjJfMQogbGlidGV4dC1lbmdpbmUtMC4xLnNvLjAgdGV4dC1lbmdpbmUtMC4xLjFfMQogbGli dm1hZi5zby4xIHZtYWYtMi4zLjFfMQogbGlibGMzLnNvLjEgbGlibGMzLTEuMC4zXzEKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvaW50ZWwtZ21tbGliL3RlbXBsYXRlIGIvc3JjcGtncy9pbnRlbC1nbW1s aWIvdGVtcGxhdGUKaW5kZXggMDRlNDA3YjFkZTRkMy4uMjYwNTIyNjE1MmU1ZCAxMDA2NDQKLS0t IGEvc3JjcGtncy9pbnRlbC1nbW1saWIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9pbnRlbC1nbW1s aWIvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpbnRlbC1n bW1saWInCiBwa2duYW1lPWludGVsLWdtbWxpYgotdmVyc2lvbj0yMi4yLjAKK3ZlcnNpb249MjIu My4zCiByZXZpc2lvbj0xCiBhcmNocz0iaTY4NiogeDg2XzY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtl CkBAIC0xNCwxMSArMTQsMTEgQEAgYnVpbGRfc3R5bGU9Y21ha2UKICMgY29tcGlsZXJzIGZsYWcg aW4gdXNlLgogY29uZmlndXJlX2FyZ3M9Ii1Xbm8tZGV2Igogc2hvcnRfZGVzYz0iSW50ZWwgR3Jh cGhpY3MgTWVtb3J5IE1hbmFnZW1lbnQgTGlicmFyeSIKLW1haW50YWluZXI9Ik9ycGhhbmVkIDxv cnBoYW5Adm9pZGxpbnV4Lm9yZz4iCittYWludGFpbmVyPSJTdGVmYW5vIFJhZ25pIDxzdDNyNGdA cHJvdG9ubWFpbC5jb20+IgogbGljZW5zZT0iTUlUIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHVi LmNvbS9pbnRlbC9nbW1saWIiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9n bW1saWIvYXJjaGl2ZS9pbnRlbC1nbW1saWItJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT0w YjIyNTM4OTRjNmZjODQ1NWI2ZDdjNWU4N2U2NTA0YTc2ZDZmNjBlYTE5MmUxNDQ1YzJmOTMxNjRi ZjUyOWMwCitjaGVja3N1bT04NjY1MWJkMjgwM2M5ZjBhZmQ4MjQ3MWJlYzc4NGU2NWQyYjQxOGRl ZTMxNWEwNTNkMjIyMTVlYjJhNjc5YmU3CiAKIGxpYjMyZGlzYWJsZWQ9eWVzCiAKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3BhdGNoZXMvMDAwMS1NZWRpYS1Db21tb24t RW5hYmxlLU1NQy1pbi1mcmVlLWtlcm5lbC1idWlsZC5wYXRjaCBiL3NyY3BrZ3MvaW50ZWwtbWVk aWEtZHJpdmVyL3BhdGNoZXMvMDAwMS1NZWRpYS1Db21tb24tRW5hYmxlLU1NQy1pbi1mcmVlLWtl cm5lbC1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw Li41MjVmYjY4ODcyMmM4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1k cml2ZXIvcGF0Y2hlcy8wMDAxLU1lZGlhLUNvbW1vbi1FbmFibGUtTU1DLWluLWZyZWUta2VybmVs LWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMTI1IEBACitGcm9tIGU2OGZlYWI3ZGIwMzY4MzhkOTUy MWJhM2I5ZjAwNzE3YzM3YzAyNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYXlZ YW5nIDxqYXkueWFuZ0BpbnRlbC5jb20+CitEYXRlOiBUdWUsIDIxIE1hciAyMDIzIDE3OjE3OjU1 ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIFtNZWRpYSBDb21tb25dIEVuYWJsZSBNTUMgaW4gZnJl ZSBrZXJuZWwgYnVpbGQKKworQWRkIG1tYyBidWlsZCBkZWZpbml0aW9uIGluIGZyZWUga2VybmVs IGJ1aWxkCistLS0KKyBtZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9jb2RlYy9oYWwvbWVkaWFf c3Jjcy5jbWFrZSAgICAgICAgICB8IDIgKy0KKyBtZWRpYV9kcml2ZXIvY21ha2UvbGludXgvbWVk aWFfZmVhdHVyZV9mbGFnc19saW51eC5jbWFrZSAgICAgICB8IDMgKy0tCisgLi4uL21lZGlhX2lu dGVyZmFjZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNwcCAgICAgICAgfCAyICst CisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfY2ZsL21lZGlhX2ludGVyZmFjZXNfZzlfY2ZsLmNw cCAgICAgICAgfCAyICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfZ2xrL21lZGlhX2ludGVy ZmFjZXNfZzlfZ2xrLmNwcCAgICAgICAgfCAyICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlf a2JsL21lZGlhX2ludGVyZmFjZXNfZzlfa2JsLmNwcCAgICAgICAgfCAyICstCisgLi4uL21lZGlh X2ludGVyZmFjZXNfbTlfc2tsL21lZGlhX2ludGVyZmFjZXNfZzlfc2tsLmNwcCAgICAgICAgfCAy ICstCisgNyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisK K2RpZmYgLS1naXQgYS9tZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9jb2RlYy9oYWwvbWVkaWFf c3Jjcy5jbWFrZSBiL21lZGlhX2RyaXZlci9hZ25vc3RpYy9nZW45L2NvZGVjL2hhbC9tZWRpYV9z cmNzLmNtYWtlCitpbmRleCA4YmIzNmJhZmUuLjc4OTAyYTIyZCAxMDA2NDQKKy0tLSBhL21lZGlh X2RyaXZlci9hZ25vc3RpYy9nZW45L2NvZGVjL2hhbC9tZWRpYV9zcmNzLmNtYWtlCisrKysgYi9t ZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9jb2RlYy9oYWwvbWVkaWFfc3Jjcy5jbWFrZQorQEAg LTI3LDcgKzI3LDcgQEAgc2V0KFRNUF8xX0hFQURFUlNfCisgICAgICR7Q01BS0VfQ1VSUkVOVF9M SVNUX0RJUn0vY29kZWNoYWxfaHdfZzlfWC5oCisgKQorIAorLWlmKCR7TU1DX1N1cHBvcnRlZH0g U1RSRVFVQUwgInllcyIpCisraWYoJHtNTUNfU3VwcG9ydGVkfSBTVFJFUVVBTCAieWVzIiBBTkQg RU5BQkxFX05PTkZSRUVfS0VSTkVMUyBBTkQgRU5BQkxFX0tFUk5FTFMpCisgICAgIHNldChUTVBf MV9TT1VSQ0VTXworICAgICAgICAgJHtUTVBfMV9TT1VSQ0VTX30KKyAgICAgICAgICR7Q01BS0Vf Q1VSUkVOVF9MSVNUX0RJUn0vY29kZWNoYWxfbWVtZGVjb21wX2c5LmNwcAorZGlmZiAtLWdpdCBh L21lZGlhX2RyaXZlci9jbWFrZS9saW51eC9tZWRpYV9mZWF0dXJlX2ZsYWdzX2xpbnV4LmNtYWtl IGIvbWVkaWFfZHJpdmVyL2NtYWtlL2xpbnV4L21lZGlhX2ZlYXR1cmVfZmxhZ3NfbGludXguY21h a2UKK2luZGV4IGRlMGNhODUzZi4uODEyMWVhNjBjIDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVy L2NtYWtlL2xpbnV4L21lZGlhX2ZlYXR1cmVfZmxhZ3NfbGludXguY21ha2UKKysrKyBiL21lZGlh X2RyaXZlci9jbWFrZS9saW51eC9tZWRpYV9mZWF0dXJlX2ZsYWdzX2xpbnV4LmNtYWtlCitAQCAt MzUsNyArMzUsNiBAQCBpZihOT1QgRU5BQkxFX0tFUk5FTFMgT1IgTk9UIEVOQUJMRV9OT05GUkVF X0tFUk5FTFMpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoSEVWQ19FbmNvZGVfVk1FX1N1cHBv cnRlZCAibm8iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKE1QRUcyX0VuY29kZV9WTUVfU3Vw cG9ydGVkICJubyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoQ01SVF9IRVZDX0VOQ19GRUlf U3VwcG9ydGVkICJubyIpCistICAgIGJzX3NldF9pZl91bmRlZmluZWQoTU1DX1N1cHBvcnRlZCAi bm8iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKFZDMV9EZWNvZGVfU3VwcG9ydGVkICJubyIp CisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoRGVjb2RlX1Byb2Nlc3NpbmdfU3VwcG9ydGVkICJu byIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoS2VybmVsX0F1dG9fRGVub2lzZV9TdXBwb3J0 ZWQgIm5vIikKK0BAIC00Niw3ICs0NSw2IEBAIGVsc2UoKQorICAgICBic19zZXRfaWZfdW5kZWZp bmVkKEhFVkNfRW5jb2RlX1ZNRV9TdXBwb3J0ZWQgIiR7RW5jb2RlX1ZNRV9TdXBwb3J0ZWR9IikK KyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChNUEVHMl9FbmNvZGVfVk1FX1N1cHBvcnRlZCAiJHtF bmNvZGVfVk1FX1N1cHBvcnRlZH0iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKENNUlRfSEVW Q19FTkNfRkVJX1N1cHBvcnRlZCAieWVzIikKKy0gICAgYnNfc2V0X2lmX3VuZGVmaW5lZChNTUNf U3VwcG9ydGVkICJ5ZXMiKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKFZDMV9EZWNvZGVfU3Vw cG9ydGVkICJ5ZXMiKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKERlY29kZV9Qcm9jZXNzaW5n X1N1cHBvcnRlZCAieWVzIikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChLZXJuZWxfQXV0b19E ZW5vaXNlX1N1cHBvcnRlZCAieWVzIikKK0BAIC02NCw2ICs2Miw3IEBAIGJzX3NldF9pZl91bmRl ZmluZWQoVlA5X0RlY29kZV9TdXBwb3J0ZWQgInllcyIpCisgYnNfc2V0X2lmX3VuZGVmaW5lZChW UF9TRkNfU3VwcG9ydGVkICJ5ZXMiKQorIGJzX3NldF9pZl91bmRlZmluZWQoQ29tbW9uX0VuY29k ZV9TdXBwb3J0ZWQgInllcyIpCisgYnNfc2V0X2lmX3VuZGVmaW5lZChNZWRpYV9TY2FsYWJpbGl0 eV9TdXBwb3J0ZWQgInllcyIpCisrYnNfc2V0X2lmX3VuZGVmaW5lZChNTUNfU3VwcG9ydGVkICJ5 ZXMiKQorIAorICMgZmVhdHVyZXMgY29udHJvbGxlZCBieSBnbG9iYWwgZmxhZyBFbmNvZGVfVkRF bmNfU3VwcG9ydGVkCisgYnNfc2V0X2lmX3VuZGVmaW5lZChBVkNfRW5jb2RlX1ZERW5jX1N1cHBv cnRlZCAiJHtFbmNvZGVfVkRFbmNfU3VwcG9ydGVkfSIpCitkaWZmIC0tZ2l0IGEvbWVkaWFfZHJp dmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2J4dC9tZWRpYV9pbnRlcmZh Y2VzX2c5X2J4dC5jcHAgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVy ZmFjZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNwcAoraW5kZXggM2YzMDZlZTJh Li44ZTRjMGY1MzIgMTAwNjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21l ZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNwcAorKysrIGIv bWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2J4dC9tZWRp YV9pbnRlcmZhY2VzX2c5X2J4dC5jcHAKK0BAIC0xMzUsNyArMTM1LDcgQEAgTU9TX1NUQVRVUyBN aHdJbnRlcmZhY2VzRzlCeHQ6OkluaXRpYWxpemUoCisgCisgICAgIHJldHVybiBNT1NfU1RBVFVT X1NVQ0NFU1M7CisgfQorLSNpZmRlZiBfTU1DX1NVUFBPUlRFRAorKyNpZiBkZWZpbmVkKF9NTUNf U1VQUE9SVEVEKSAmJiBkZWZpbmVkKEVOQUJMRV9LRVJORUxTKSAmJiAhZGVmaW5lZChfRlVMTF9P UEVOX1NPVVJDRSkKKyBzdGF0aWMgYm9vbCBieHRSZWdpc3RlcmVkTW1kID0KKyAgICAgTWVkaWFG YWN0b3J5PHVpbnQzMl90LCBNbWREZXZpY2U+OjoKKyAgICAgUmVnaXN0ZXI8TW1kRGV2aWNlRzlC eHQ+KCh1aW50MzJfdClJR0ZYX0JST1hUT04pOworZGlmZiAtLWdpdCBhL21lZGlhX2RyaXZlci9t ZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9jZmwvbWVkaWFfaW50ZXJmYWNlc19n OV9jZmwuY3BwIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2Vz X205X2NmbC9tZWRpYV9pbnRlcmZhY2VzX2c5X2NmbC5jcHAKK2luZGV4IGI4ZmExZWVjMC4uODRl MGZhZDFkIDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9p bnRlcmZhY2VzX205X2NmbC9tZWRpYV9pbnRlcmZhY2VzX2c5X2NmbC5jcHAKKysrKyBiL21lZGlh X2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9jZmwvbWVkaWFfaW50 ZXJmYWNlc19nOV9jZmwuY3BwCitAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgYm9vbCBjZmxSZWdp c3RlcmVkTWh3ID0KKyAgICAgTWVkaWFGYWN0b3J5PHVpbnQzMl90LCBNaHdJbnRlcmZhY2VzPjo6 CisgICAgIFJlZ2lzdGVyPE1od0ludGVyZmFjZXNHOUtibD4oKHVpbnQzMl90KUlHRlhfQ09GRkVF TEFLRSk7CisgCistI2lmZGVmIF9NTUNfU1VQUE9SVEVECisrI2lmIGRlZmluZWQoX01NQ19TVVBQ T1JURUQpICYmIGRlZmluZWQoRU5BQkxFX0tFUk5FTFMpICYmICFkZWZpbmVkKF9GVUxMX09QRU5f U09VUkNFKQorIHN0YXRpYyBib29sIGNmbFJlZ2lzdGVyZWRNbWQgPQorICAgICBNZWRpYUZhY3Rv cnk8dWludDMyX3QsIE1tZERldmljZT46OgorICAgICBSZWdpc3RlcjxNbWREZXZpY2VHOUtibD4o KHVpbnQzMl90KUlHRlhfQ09GRkVFTEFLRSk7CitkaWZmIC0tZ2l0IGEvbWVkaWFfZHJpdmVyL21l ZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2dsay9tZWRpYV9pbnRlcmZhY2VzX2c5 X2dsay5jcHAgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNf bTlfZ2xrL21lZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNwcAoraW5kZXggZGU4MWU2MDkxLi4yNjM4 Y2IzYTYgMTAwNjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2lu dGVyZmFjZXNfbTlfZ2xrL21lZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNwcAorKysrIGIvbWVkaWFf ZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2dsay9tZWRpYV9pbnRl cmZhY2VzX2c5X2dsay5jcHAKK0BAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBib29sIGdsa1JlZ2lz dGVyZWRNaHcgPQorICAgICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1od0ludGVyZmFjZXM+OjoK KyAgICAgUmVnaXN0ZXI8TWh3SW50ZXJmYWNlc0c5S2JsPigodWludDMyX3QpSUdGWF9HRU1JTklM QUtFKTsKKyAKKy0jaWZkZWYgX01NQ19TVVBQT1JURUQKKysjaWYgZGVmaW5lZChfTU1DX1NVUFBP UlRFRCkgJiYgZGVmaW5lZChFTkFCTEVfS0VSTkVMUykgJiYgIWRlZmluZWQoX0ZVTExfT1BFTl9T T1VSQ0UpCisgc3RhdGljIGJvb2wgZ2xrUmVnaXN0ZXJlZE1tZCA9CisgICAgIE1lZGlhRmFjdG9y eTx1aW50MzJfdCwgTW1kRGV2aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1tZERldmljZUc5S2JsPigo dWludDMyX3QpSUdGWF9HRU1JTklMQUtFKTsKK2RpZmYgLS1naXQgYS9tZWRpYV9kcml2ZXIvbWVk aWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfa2JsL21lZGlhX2ludGVyZmFjZXNfZzlf a2JsLmNwcCBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19t OV9rYmwvbWVkaWFfaW50ZXJmYWNlc19nOV9rYmwuY3BwCitpbmRleCA5OWQ3ODYxODUuLjRlOWM2 ZTdmMSAxMDA2NDQKKy0tLSBhL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50 ZXJmYWNlc19tOV9rYmwvbWVkaWFfaW50ZXJmYWNlc19nOV9rYmwuY3BwCisrKysgYi9tZWRpYV9k cml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfa2JsL21lZGlhX2ludGVy ZmFjZXNfZzlfa2JsLmNwcAorQEAgLTEzMSw3ICsxMzEsNyBAQCBNT1NfU1RBVFVTIE1od0ludGVy ZmFjZXNHOUtibDo6SW5pdGlhbGl6ZSgKKyAKKyAgICAgcmV0dXJuIE1PU19TVEFUVVNfU1VDQ0VT UzsKKyB9CistI2lmZGVmIF9NTUNfU1VQUE9SVEVECisrI2lmIGRlZmluZWQoX01NQ19TVVBQT1JU RUQpICYmIGRlZmluZWQoRU5BQkxFX0tFUk5FTFMpICYmICFkZWZpbmVkKF9GVUxMX09QRU5fU09V UkNFKQorIHN0YXRpYyBib29sIGtibFJlZ2lzdGVyZWRNbWQgPQorICAgICBNZWRpYUZhY3Rvcnk8 dWludDMyX3QsIE1tZERldmljZT46OgorICAgICBSZWdpc3RlcjxNbWREZXZpY2VHOUtibD4oKHVp bnQzMl90KUlHRlhfS0FCWUxBS0UpOworZGlmZiAtLWdpdCBhL21lZGlhX2RyaXZlci9tZWRpYV9p bnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9za2wvbWVkaWFfaW50ZXJmYWNlc19nOV9za2wu Y3BwIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X3Nr bC9tZWRpYV9pbnRlcmZhY2VzX2c5X3NrbC5jcHAKK2luZGV4IGUyNTIwZWRmNy4uNGIwMDEyYzY0 IDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZh Y2VzX205X3NrbC9tZWRpYV9pbnRlcmZhY2VzX2c5X3NrbC5jcHAKKysrKyBiL21lZGlhX2RyaXZl ci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9za2wvbWVkaWFfaW50ZXJmYWNl c19nOV9za2wuY3BwCitAQCAtMTM5LDcgKzEzOSw3IEBAIE1PU19TVEFUVVMgTWh3SW50ZXJmYWNl c0c5U2tsOjpJbml0aWFsaXplKAorIAorICAgICByZXR1cm4gTU9TX1NUQVRVU19TVUNDRVNTOwor IH0KKy0jaWZkZWYgX01NQ19TVVBQT1JURUQKKysjaWYgZGVmaW5lZChfTU1DX1NVUFBPUlRFRCkg JiYgZGVmaW5lZChFTkFCTEVfS0VSTkVMUykgJiYgIWRlZmluZWQoX0ZVTExfT1BFTl9TT1VSQ0Up Cisgc3RhdGljIGJvb2wgc2tsUmVnaXN0ZXJlZE1tZCA9CisgICAgIE1lZGlhRmFjdG9yeTx1aW50 MzJfdCwgTW1kRGV2aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1tZERldmljZUc5U2tsPigodWludDMy X3QpSUdGWF9TS1lMQUtFKTsKKy0tIAorMi40MC4wCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW50 ZWwtbWVkaWEtZHJpdmVyL3RlbXBsYXRlIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvdGVt cGxhdGUKaW5kZXggYTViYWIwNmFjOTQ3Ni4uMTczNWI5MGM2NWNlNSAxMDA2NDQKLS0tIGEvc3Jj cGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9pbnRlbC1tZWRp YS1kcml2ZXIvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdp bnRlbC1tZWRpYS1kcml2ZXInCiBwa2duYW1lPWludGVsLW1lZGlhLWRyaXZlcgotdmVyc2lvbj0y Mi41LjMKK3ZlcnNpb249MjIuNi40CiByZXZpc2lvbj0xCiBhcmNocz0ieDg2XzY0KiIKIGJ1aWxk X3N0eWxlPWNtYWtlCkBAIC04LDExICs4LDExIEBAIGNvbmZpZ3VyZV9hcmdzPSItV25vLWRldiAt REVOQUJMRV9OT05GUkVFX0tFUk5FTFM9JCh2b3B0X2lmIG5vbmZyZWUgT04gT0ZGKSIKIGhvc3Rt YWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJsaWJ2YS1kZXZlbCBsaWJYMTEt ZGV2ZWwgaW50ZWwtZ21tbGliLWRldmVsIGxpYnBjaWFjY2Vzcy1kZXZlbCIKIHNob3J0X2Rlc2M9 IkludGVsIE1lZGlhIERyaXZlciBmb3IgVkFBUEkgKEJyb2Fkd2VsbCspIgotbWFpbnRhaW5lcj0i T3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKK21haW50YWluZXI9IlN0ZWZhbm8gUmFn bmkgPHN0M3I0Z0Bwcm90b25tYWlsLmNvbT4iCiBsaWNlbnNlPSJNSVQsIEJTRC0zLUNsYXVzZSIK IGhvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVyIgogZGlzdGZp bGVzPSJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVyL2FyY2hpdmUvaW50ZWwt bWVkaWEtJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT02NTY1MmIzNjVkNDhiZTNjOWYwYjNj NTYxNTAyOTUyYjkyZWU1ZmNjNTg3NTIwYjg4ZDBkNzUyY2YyYTZhM2I1CitjaGVja3N1bT0wYzA0 YjlkNzRiOTJkZTQxZmQ0MDliNjI5MTNjZTRhZmQ3OTkyMzZjMGI2YmMxOTgzYTQ5Njk5MDc2NGU1 ZDkwCiAKIGJ1aWxkX29wdGlvbnM9Im5vbmZyZWUiCiBkZXNjX29wdGlvbl9ub25mcmVlPSJFbmFi bGUgbm9uZnJlZSBrZXJuZWxzIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsv cGF0Y2hlcy9tdXNsLnBhdGNoIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvcGF0Y2hlcy9tdXNs LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjRhZTcwOTI0 Yjc0NGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ludGVsLW1lZGlhLXNkay9wYXRjaGVz L211c2wucGF0Y2gKQEAgLTAsMCArMSwxNCBAQAorLS0tIGEvdG9vbHMvdHJhY2VyL3RyYWNlci90 cmFjZXJfbGludXguY3BwCTIwMjItMTEtMTggMDM6MDI6NTkuMDAwMDAwMDAwIC0wNTAwCisrKysg Yi90b29scy90cmFjZXIvdHJhY2VyL3RyYWNlcl9saW51eC5jcHAJMjAyMi0xMi0xOCAwMTo0NDo1 MS4zNDE1NDI1NzIgLTA1MDAKK0BAIC0zMiw2ICszMiwxMSBAQAorICNpbmNsdWRlIDxkbGZjbi5o PgorICNpbmNsdWRlICJ0cmFjZXIuaCIKKworKyNpZm5kZWYgUlRMRF9ERUVQQklORAorKy8vIG11 c2wgbmVpdGhlciBkZWZpbmVzIG5vciBjYW4gdXNlIFJUTERfREVFUEJJTkQKKysjZGVmaW5lIFJU TERfREVFUEJJTkQgMAorKyNlbmRpZgorKworICNpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICAj ZGVmaW5lIExJQk1GWEhXICJsaWJtZnhodzMyLnNvLjEiCisgI2VsaWYgZGVmaW5lZChfX3g4Nl82 NF9fKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdGVtcGxhdGUgYi9zcmNw a2dzL2ludGVsLW1lZGlhLXNkay90ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAwLi43YWVhYjUxODAyZjhlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9p bnRlbC1tZWRpYS1zZGsvdGVtcGxhdGUKQEAgLTAsMCArMSwzNyBAQAorIyBUZW1wbGF0ZSBmaWxl IGZvciAnaW50ZWwtbWVkaWEtc2RrJworcGtnbmFtZT1pbnRlbC1tZWRpYS1zZGsKK3ZlcnNpb249 MjIuNi40CityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0eWxlPWNtYWtlCitj b25maWd1cmVfYXJncz0iLVduby1kZXYgLURCVUlMRF9TQU1QTEVTPU9GRiAtREJVSUxEX1RFU1RT PU9OIgoraG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgorbWFrZWRlcGVuZHM9ImxpYnZhLWRl dmVsIGxpYmRybS1kZXZlbCBpbnRlbC1nbW1saWItZGV2ZWwiCitzaG9ydF9kZXNjPSJJbnRlbCBN ZWRpYSBTREsiCittYWludGFpbmVyPSJTdGVmYW5vIFJhZ25pIDxzdDNyNGdAcHJvdG9ubWFpbC5j b20+IgorbGljZW5zZT0iTUlULCBCU0QtMy1DbGF1c2UiCitob21lcGFnZT0iaHR0cHM6Ly9naXRo dWIuY29tL0ludGVsLU1lZGlhLVNESy9NZWRpYVNESyIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRo dWIuY29tL0ludGVsLU1lZGlhLVNESy9NZWRpYVNESy9hcmNoaXZlL3JlZnMvdGFncy9pbnRlbC1t ZWRpYXNkay0ke3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPTE5N2FjZDA1NmY4MWU5ZmYxYzI3 MDY4ZDUwZThjODRjMjAxNGQ5NGM3YWMxN2NhZDY5ZDVjMmQ2MWU0NDVmZDMKKworcG9zdF9pbnN0 YWxsKCkgeworCXZsaWNlbnNlIExJQ0VOU0UKK30KKworbGlibWZ4X3BhY2thZ2UoKSB7CisJZGVw ZW5kcz0iJHttYWtlZGVwZW5kc30gJHtzb3VyY2Vwa2d9LSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0i CisJc2hvcnRfZGVzYz0iSW50ZWwgTWVkaWFTREsgbWZ4IGxpYiIKKwlwa2dfaW5zdGFsbCgpIHsK KwkJdm1vdmUgdXNyL2xpYi9tZngKKwkJdm1vdmUgInVzci9saWIvbGlibWZ4Ki5zbyoiCisJfQor fQorCitsaWJtZngtZGV2ZWxfcGFja2FnZSgpIHsKKwlkZXBlbmRzPSIke21ha2VkZXBlbmRzfSAk e3NvdXJjZXBrZ30tJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gZGV2 ZWxvcG1lbnQgZmlsZXMiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9pbmNsdWRlCisJ CXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRl bC1tZWRpYS1zZGsvdXBkYXRlIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdXBkYXRlCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjQzNGEyYmM2N2Y3YTEKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2ludGVsLW1lZGlhLXNkay91cGRhdGUKQEAgLTAsMCArMSBA QAorcGtnbmFtZT1pbnRlbC1tZWRpYQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbmV2cGwtZGV2ZWwg Yi9zcmNwa2dzL29uZXZwbC1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAw MDAwMDAwLi5lMjMwNjUwMGI0ODcxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9vbmV2cGwt ZGV2ZWwKQEAgLTAsMCArMSBAQAorb25ldnBsClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1LWRldmVsIGIvc3JjcGtncy9vbmV2 cGwtaW50ZWwtZ3B1LWRldmVsCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAw MDAuLjQ3OTIwY2VlY2Y5MTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL29uZXZwbC1pbnRl bC1ncHUtZGV2ZWwKQEAgLTAsMCArMSBAQAorb25ldnBsLWludGVsLWdwdQpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS90ZW1w bGF0ZSBiL3NyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS90ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5mMTRhY2I3MjhhNTRkCi0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1L3RlbXBsYXRlCkBAIC0wLDAgKzEsMjcgQEAKKyMg VGVtcGxhdGUgZmlsZSBmb3IgJ29uZXZwbC1pbnRlbC1ncHUnCitwa2duYW1lPW9uZXZwbC1pbnRl bC1ncHUKK3ZlcnNpb249MjIuNi40CityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxk X3N0eWxlPWNtYWtlCitjb25maWd1cmVfYXJncz0iLVduby1kZXYgLURDTUFLRV9CVUlMRF9UWVBF PVJlbGVhc2UiCitob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHBrZy1jb25maWciCittYWtlZGVwZW5k cz0ibGliZHJtLWRldmVsIGxpYnZhLWRldmVsIG9uZXZwbC1kZXZlbCIKK3Nob3J0X2Rlc2M9IlJ1 bnRpbWUgaW1wbGVtZW50YXRpb24gb2Ygb25lVlBMIEFQSSBmb3IgSW50ZWwgR2VuIEdQVXMiCitt YWludGFpbmVyPSJ6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPiIKK2xpY2Vuc2U9Ik1JVCIKK2hv bWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vb25lYXBpLXNyYy9vbmVWUEwtaW50ZWwtZ3B1Igor Y2hhbmdlbG9nPSJodHRwczovL2dpdGh1Yi5jb20vb25lYXBpLXNyYy9vbmVWUEwtaW50ZWwtZ3B1 L2Jsb2IvbWFpbi9DSEFOR0VMT0cubWQiCitkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9v bmVhcGktc3JjL29uZVZQTC1pbnRlbC1ncHUvYXJjaGl2ZS9yZWZzL3RhZ3MvaW50ZWwtb25ldnBs LSR7dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09NzRiMDk3OWRjYjJhZjFiN2M2OGVkYjhjYmNi MDJkNTM5ZGU1MTEwOTBiMTJmYWM1MDY1MmNiYWNkNzA3YzRlNgorCitwb3N0X2luc3RhbGwoKSB7 CisJdmxpY2Vuc2UgTElDRU5TRQorfQorCitvbmV2cGwtaW50ZWwtZ3B1LWRldmVsX3BhY2thZ2Uo KSB7CisJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgorCXBrZ19pbnN0YWxsKCkg eworCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCX0KK30KZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv b25ldnBsL3RlbXBsYXRlIGIvc3JjcGtncy9vbmV2cGwvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uODVjN2MyZGE4NWNlOQotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3Mvb25ldnBsL3RlbXBsYXRlCkBAIC0wLDAgKzEsMzQgQEAKKyMgVGVtcGxhdGUg ZmlsZSBmb3IgJ29uZXZwbCcKK3BrZ25hbWU9b25ldnBsCit2ZXJzaW9uPTIwMjMuMS4yCityZXZp c2lvbj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0eWxlPWNtYWtlCitjb25maWd1cmVfYXJn cz0iCisJLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgLVduby1kZXYKKwktREJVSUxEX1BZVEhP Tl9CSU5ESU5HOkJPT0w9J09GRicKKwktREJVSUxEX0VYQU1QTEVTOkJPT0w9J09GRicKKwktREJV SUxEX1RFU1RTOkJPT0w9J09OJworCS1ESU5TVEFMTF9FWEFNUExFX0NPREU6Qk9PTD0nT0ZGJyIK K2hvc3RtYWtlZGVwZW5kcz0iY21ha2UgbGliWDExIHB5dGhvbiB3YXlsYW5kLXByb3RvY29scyBw a2ctY29uZmlnIgorbWFrZWRlcGVuZHM9ImxpYnZhLWRldmVsIGxpYlgxMS1kZXZlbCB3YXlsYW5k LWRldmVsIgorc2hvcnRfZGVzYz0iSW50ZWwgb25lQVBJIFZpZGVvIFByb2Nlc3NpbmcgbGlicmFy eSIKK21haW50YWluZXI9InpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+IgorbGljZW5zZT0iTUlU IgoraG9tZXBhZ2U9Imh0dHBzOi8vd3d3LmludGVsLmNvbS9jb250ZW50L3d3dy91cy9lbi9kZXZl bG9wZXIvdG9vbHMvb25lYXBpL29uZXZwbC5odG1sIgorZGlzdGZpbGVzPSJodHRwczovL2dpdGh1 Yi5jb20vb25lYXBpLXNyYy9vbmVWUEwvYXJjaGl2ZS92JHt2ZXJzaW9ufS8ke3BrZ25hbWV9LSR7 dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09YjIyNjFjY2ExNzRjZTE4MTVmM2Q0N2M2NDc5MjFh YjE3ZjY4MjY3YzY5YzFlMjQ0NGZmMjdhYWI3ZDE5OWNiYgorCitwb3N0X2luc3RhbGwoKSB7CisJ dmxpY2Vuc2UgTElDRU5TRQorfQorCitvbmV2cGwtZGV2ZWxfcGFja2FnZSgpIHsKKwlkZXBlbmRz PSIke21ha2VkZXBlbmRzfSAke3NvdXJjZXBrZ30tJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlz aG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJcGtnX2luc3RhbGwoKSB7CisJCXZt b3ZlIHVzci9pbmNsdWRlCisJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCisJCXZtb3ZlICJ1c3Iv bGliLyouc28iCisJfQorfQoKRnJvbSBlM2ZlYTMyNmE0NjZlNjViZTE2ZWUyNjEzZTg2NmQzNGIy Y2IwYzUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBTYXQsIDggSnVsIDIwMjMgMjA6MjA6NTkgLTA0MDAKU3ViamVjdDogW1BB VENIIDEwOC8xMTVdIHRyYWNrZXItbWluZXJzOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0K IHNyY3BrZ3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3RyYWNr ZXItbWluZXJzL3RlbXBsYXRlIGIvc3JjcGtncy90cmFja2VyLW1pbmVycy90ZW1wbGF0ZQppbmRl eCBhNmU1YWE1Nzc3MDI0Li5hYTBmNDQzOTI3Y2RiIDEwMDY0NAotLS0gYS9zcmNwa2dzL3RyYWNr ZXItbWluZXJzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0cmFja2VyLW1pbmVycycKIHBr Z25hbWU9dHJhY2tlci1taW5lcnMKIHZlcnNpb249My41LjAKLXJldmlzaW9uPTQKK3JldmlzaW9u PTUKIGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9oZWxwZXI9cWVtdQogIyBtaXNzaW5nIGxpYmdy c3MgZm9yIG1pbmVyX3JzcwoKRnJvbSBhNDJhN2M4ZmYxZjI1NWFlNjA3ZjNkNzg4Y2QwZWZmOGYw MTRlNjI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBTYXQsIDggSnVsIDIwMjMgMjA6MjE6MjEgLTA0MDAKU3ViamVjdDogW1BB VENIIDEwOS8xMTVdIG1wZDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21w ZC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbXBkL3RlbXBsYXRlIGIvc3JjcGtncy9tcGQv dGVtcGxhdGUKaW5kZXggYjkxNmQ2NTU3MDlhYS4uMDVmYTBmNzkyN2UyZSAxMDA2NDQKLS0tIGEv c3JjcGtncy9tcGQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tcGQvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtcGQnCiBwa2duYW1lPW1wZAogdmVyc2lvbj0w LjIzLjEzCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmln dXJlX2FyZ3M9Ii1Eb3B1cz1lbmFibGVkIC1EbWlrbW9kPWVuYWJsZWQgLURuZWlnaGJvcj10cnVl CiAgLURzb3VuZGNsb3VkPWVuYWJsZWQgLURwaXBlPXRydWUgLUR0d29sYW1lPWVuYWJsZWQgLURi emlwMj1lbmFibGVkCgpGcm9tIDAwZmFjYjNlYjAxYTg3YTE4NzNiNGM0Nzg0MWJlNWJkYWY4NWVh NmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFNhdCwgOCBKdWwgMjAyMyAyMDoyNzoxNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MTEwLzExNV0gbG1zOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbG1zL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbXMvdGVtcGxhdGUgYi9zcmNwa2dzL2xtcy90ZW1w bGF0ZQppbmRleCAyZGY1MmM1MWRiZmU2Li5jYjNlYTVlNThjODBmIDEwMDY0NAotLS0gYS9zcmNw a2dzL2xtcy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xtcy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xtcycKIHBrZ25hbWU9bG1zCiB2ZXJzaW9uPTMuNDAu MAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVw ZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJ3dC1kZXZlbCBmZm1wZWctZGV2ZWwgYm9v c3QtZGV2ZWwgbGliY29uZmlnKystZGV2ZWwgdGFnbGliLWRldmVsIHBhbS1kZXZlbCBsaWJncmFw aGljc21hZ2ljay1kZXZlbCBndGVzdC1kZXZlbCBsaWJhcmNoaXZlLWRldmVsIgoKRnJvbSA5NDUz NzdiNDA0ZGMyZTE0NDMyOWRiZjk2OGYzY2MxZjY3NGU2MmI4IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBNb24sIDE3IEp1bCAy MDIzIDE1OjM3OjQ0IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMTEvMTE1XSBtaXh4eDogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21peHh4L3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9taXh4eC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWl4eHgvdGVtcGxhdGUKaW5kZXggNGI5 ZWEwMGQzZmIzZC4uYTg2MWQxMWE0ODcyNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9taXh4eC90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL21peHh4L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnbWl4eHgnCiBwa2duYW1lPW1peHh4CiB2ZXJzaW9uPTIuMy4zCi1yZXZp c2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1E Q01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIgogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1t b2R1bGVzIHBrZy1jb25maWcgcHJvdG9idWYgcXQ1LWhvc3QtdG9vbHMgcXQ1LWRldmVsIgoKRnJv bSA4NTIxOTAzOWM1YzFmMTE3YzI5MWYxODFiOWNjYWQ4MmEwMTRlZTgwIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBNb24sIDE3 IEp1bCAyMDIzIDE1OjM4OjE0IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMTIvMTE1XSB0ZWxlZ3Jh bS1kZXNrdG9wOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdGVsZWdyYW0t ZGVza3RvcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1w bGF0ZSBiL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQppbmRleCAxOWE2NzIyZjQ2 OTdiLi5hOTQxMjQyNWJmMWExIDEwMDY0NAotLS0gYS9zcmNwa2dzL3RlbGVncmFtLWRlc2t0b3Av dGVtcGxhdGUKKysrIGIvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndGVsZWdyYW0tZGVza3RvcCcKIHBrZ25hbWU9 dGVsZWdyYW0tZGVza3RvcAogdmVyc2lvbj00LjguNAotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIGJ1aWxkX2hlbHBlcj0icWVtdSBnaXIiCiBjb25maWd1cmVfYXJn cz0iLURUREVTS1RPUF9BUElfSUQ9MjA5MjM1CgpGcm9tIDM2Y2FhZTExYjljMGU1ODg4MzFlZGMw YWZiNWVkYTg0NzliOThhMTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMiBBdWcgMjAyMyAxMDoxMzoxNyAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMTEzLzExNV0gbXB2OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0K IHNyY3BrZ3MvbXB2L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tcHYvdGVtcGxhdGUgYi9z cmNwa2dzL21wdi90ZW1wbGF0ZQppbmRleCAxZjcxMDhlMTYyZDA3Li5jMzQwYmVjNGFlYzRjIDEw MDY0NAotLS0gYS9zcmNwa2dzL21wdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21wdi90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21wdicKIHBrZ25hbWU9bXB2 CiB2ZXJzaW9uPTAuMzUuMQotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9bWVz b24KIGNvbmZpZ3VyZV9hcmdzPSItRGNkZGE9ZW5hYmxlZCAtRGR2YmluPWVuYWJsZWQgLURkdmRu YXY9ZW5hYmxlZAogIC1EbGlibXB2PXRydWUgLURjcGx1Z2lucz1lbmFibGVkCgpGcm9tIGJhYzli MmUyZDU4MDllMzQ1OGZkYjZkOTIxY2U5YzZkNWVkOWFlOWYgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMiBBdWcgMjAy MyAxMDoxNDoxMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTE0LzExNV0gZ3N0LXBsdWdpbnMtYmFk MTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUgYi9z cmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUKaW5kZXggMzI2N2E5NzA5NGEyYS4uNDE4 OWYzNjg2ZWUzMiAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLWJhZDEnCiBwa2duYW1lPWdzdC1wbHVn aW5zLWJhZDEKIHZlcnNpb249MS4yMi4yCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9o ZWxwZXI9ImdpciIKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURwYWNrYWdl LW9yaWdpbj1odHRwczovL3ZvaWRsaW51eC5vcmcgLURkb2M9ZGlzYWJsZWQKCkZyb20gNzhiMzZm N2U0NzI2N2MxN2Y0NjI3ZjFmZWY2NDM0ODkxNWVhMjZmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyIEF1ZyAyMDIz IDEwOjE3OjMzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMTUvMTE1XSBsaWJvcGVuc2hvdDogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGlib3BlbnNo b3QvdGVtcGxhdGUKaW5kZXggZTk5MjZlMzExMTQ5NS4uMjNjODEyNjZhODg1MCAxMDA2NDQKLS0t IGEvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpYm9wZW5zaG90 L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGlib3BlbnNo b3QnCiBwa2duYW1lPWxpYm9wZW5zaG90CiB2ZXJzaW9uPTAuMy4wCi1yZXZpc2lvbj0yCityZXZp c2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogIyBCdWlsZHMgZmFpbCB3aXRoIFJ1YnktMi40LjEK IGNvbmZpZ3VyZV9hcmdzPSItREVOQUJMRV9SVUJZPU9GRiAtRFVTRV9TWVNURU1fSlNPTkNQUD1P TiIK --===============2323724578061949937==--