From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 15724 invoked from network); 17 Oct 2023 12:58:26 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 17 Oct 2023 12:58:26 -0000 Content-Type: multipart/mixed; boundary="===============7015502034252233214==" 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: Tue, 17 Oct 2023 14:58:26 +0200 List-Id: Message-ID: <20231017125826.wVNPX1WoUgzSJVKIYcdJc5D7NgZEuuuBagC9Hk_x3dM@z> GitHub notification mails are now in MIME to allow UTF8. --===============7015502034252233214== 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 --===============7015502034252233214== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSBlZDNlZTMyMjE0YTc1MjdkMjA1MDg0MWExYmVmYzYzMzkwNzM4ZTFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4s IDE1IE9jdCAyMDIzIDIxOjE2OjU2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTE1XSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI2ICsrKysrLS0tCiBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoICAgICAgICAgICAgfCA2MCAtLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAxOCAtLS0tLS0KIC4uLmgtbGliYXZj b2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZiB8IDQwIC0tLS0tLS0tLS0tLS0KIC4u Li93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8IDI4IC0tLS0tLS0t LQogc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgMzggKysr KysrLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDE3MyBkZWxldGlv bnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBh dGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12NXRlbC1m bG9hdGluZy1wb2ludC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3Bh dGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJl YWRlb24tdmFhcGktYnVnLnBhdGNoCgpkaWZmIC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2NvbW1v bi9zaGxpYnMKaW5kZXggNjdlY2ZmYjFlZmZhMy4uMmZlY2RiNmU5MDQ5MSAxMDA2NDQKLS0tIGEv Y29tbW9uL3NobGlicworKysgYi9jb21tb24vc2hsaWJzCkBAIC0zODUsMTUgKzM4NSwyMyBAQCBs 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 YXRlCmluZGV4IGQyZjhkZWYwZTI1ZjcuLmMxZjliN2VmZTQwZTMgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvZmZtcGVnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmZtcGVnL3RlbXBsYXRlCkBAIC0xLDE1 ICsxLDE1IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWcnCiAjIGF1ZGFjaXR5IGFsc28g bmVlZHMgdG8gYmUgYnVtcGVkIHdoZW4gYSBuZXcgZmZtcGVnIHZlcnNpb24gYnVtcHMgbGliYXZm b3JtYXQncyBzb25hbWUhCiBwa2duYW1lPWZmbXBlZwotdmVyc2lvbj00LjQuNAotcmV2aXNpb249 MwordmVyc2lvbj02LjAKK3JldmlzaW9uPTEKIHNob3J0X2Rlc2M9IkRlY29kaW5nLCBlbmNvZGlu 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 b3ZlIHVzci9pbmNsdWRlCiAJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCgpGcm9tIDgzNGMzOTRm M2ZlY2M0NmU0OTE2YjM4ZmZmOGVkZmU3MDBiMjBjNGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMTUgT2N0IDIwMjMg MjE6MTc6MjYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwMi8xMTVdIGJhcmVzaXA6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlIGIvc3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlCmluZGV4 IGIyMWUyMjMzNDMxNmUuLjE2YTFiOTgzMDQ3OTAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYmFyZXNp cC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2JhcmVzaXAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdiYXJlc2lwJwogcGtnbmFtZT1iYXJlc2lwCiB2ZXJzaW9u PTIuMTAuMAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3Rt YWtlZGVwZW5kcz0icGtnLWNvbmZpZyBnbGliLWRldmVsIgogbWFrZWRlcGVuZHM9ImxpYmdzbS1k ZXZlbCBsaWJwbmctZGV2ZWwgb3BlbnNzbC1kZXZlbCBsaWJzbmRmaWxlLWRldmVsCgpGcm9tIGU5 OGE2OGYzNWU1ZmQ5Yjk1Mjg5MjY4NTA2NDU0MTNiNWMzZDNhYTAgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMTUgT2N0 IDIwMjMgMjE6MTg6MTQgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwMy8xMTVdIG9wZW5zaG90OiBy ZXZidW1wIGZvciBmZm1wZWc2LjAKCi0tLQogc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUgYi9zcmNwa2dzL29wZW5zaG90L3RlbXBs YXRlCmluZGV4IDhmNDc4NTFlZWYzNTQuLmFmZmI2NTJhOWQ1MDAgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3Mvb3BlbnNob3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5zaG90JwogcGtnbmFtZT1vcGVu c2hvdAogdmVyc2lvbj0zLjAuMAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9 cHl0aG9uMy1tb2R1bGUKIGhvc3RtYWtlZGVwZW5kcz0icHl0aG9uMyBweXRob24zLXNldHVwdG9v bHMiCiBtYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHB5dGhvbjMtUHlRdDUiCgpGcm9tIDU5YWMx Zjg0ZGM4MTMzMGNlZWEwOGI2YzZmZTBjMTU1ZjM4MDZjMTggTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMTUgT2N0IDIw MjMgMjE6MTg6MzYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNC8xMTVdIHN1bW86IHJldmJ1bXAg Zm9yIGZmbXBlZzYuMAoKLS0tCiBzcmNwa2dzL3N1bW8vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3N1bW8vdGVtcGxhdGUgYi9zcmNwa2dzL3N1bW8vdGVtcGxhdGUKaW5kZXggYTNmZTEzNGFh NWFjYy4uYTczMGFmYTlmYWZhOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9zdW1vL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3N1bW8nCiBwa2duYW1lPXN1bW8KIHZlcnNpb249MS4xMi4wCi1yZXZpc2lvbj02City ZXZpc2lvbj03CiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJsaWJnZGFsLXRv b2xzIHBrZy1jb25maWcgc3dpZyBweXRob24zLXNldHVwdG9vbHMiCiBtYWtlZGVwZW5kcz0icHl0 aG9uMy1kZXZlbCBmZm1wZWctZGV2ZWwgZm94LWRldmVsIGdsMnBzLWRldmVsIGxpYmdkYWwtZGV2 ZWwKCkZyb20gNTMyMDQ2NDQ2OTBhMzk0N2E2NDA1YjNhMzUzYzY5ZDY1N2NmMDQ4ZSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAxOTo1NjoyMiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA1LzExNV0g TmV3IHBhY2thZ2U6IGZmbXBlZzQtNC40LjQuCgotLS0KIHNyY3BrZ3MvZmZtcGVnNC1kZXZlbCAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0 aXZlYy5wYXRjaCAgICAgICAgICAgfCAgNjAgKysrKysKIC4uLi9wYXRjaGVzL2FybXY1dGVsLWZs b2F0aW5nLXBvaW50LnBhdGNoICAgICB8ICAxOCArKwogLi4uaC1saWJhdmNvZGVjLWxpYnN2dGF2 MS10ZW5fYml0X2Zvcm1hdC5kaWZmIHwgIDQwICsrKwogLi4uL3dvcmthcm91bmQtbWVzYS1yZWFk ZW9uLXZhYXBpLWJ1Zy5wYXRjaCAgIHwgIDI4ICsrCiBzcmNwa2dzL2ZmbXBlZzQvdGVtcGxhdGUg ICAgICAgICAgICAgICAgICAgICAgfCAyNDAgKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2xp YmF2Y29kZWM0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJh dmRldmljZTQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZm aWx0ZXI0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2Zm9y bWF0NCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJhdnJlc2Ft cGxlNCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZ1dGlsNCAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYnBvc3Rwcm9jNCAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJzd3Jlc2FtcGxlNCAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGlic3dzY2FsZTQgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAxNSBmaWxlcyBjaGFuZ2VkLCAzOTYgaW5zZXJ0 aW9ucygrKQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvZmZtcGVnNC1kZXZlbAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRpdmVjLnBhdGNoCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9p bnQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9wYXRj aC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0X2Zvcm1hdC5kaWZmCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFh cGktYnVnLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRl CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdmNvZGVjNAogY3JlYXRlIG1vZGUgMTIw MDAwIHNyY3BrZ3MvbGliYXZkZXZpY2U0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJh dmZpbHRlcjQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYmF2Zm9ybWF0NAogY3JlYXRl IG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZyZXNhbXBsZTQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBz cmNwa2dzL2xpYmF2dXRpbDQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYnBvc3Rwcm9j NAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGlic3dyZXNhbXBsZTQKIGNyZWF0ZSBtb2Rl IDEyMDAwMCBzcmNwa2dzL2xpYnN3c2NhbGU0CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0 LWRldmVsIGIvc3JjcGtncy9mZm1wZWc0LWRldmVsCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4 IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L2ZmbXBlZzQtZGV2ZWwKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRpdmVjLnBhdGNo IGIvc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uOWM1NzIwMDQ2MzMyMAotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRpdmVjLnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKK3Jl dmVydCBzb21lIGFsdGl2ZWMgc3BlY2lmaWMgY2hhbmdlIG9uIGFsbCBwcGMqIGV4Y2VwdCBwcGM2 NGxlKgorCitxNjY6ICJXZSBzaG91bGQgYWxzbyB0aHJvdyBpbiBhIHJldmVydCBvZiBGRm1wZWcv RkZtcGVnQDNhNTU3YzUgYnV0IG9ubHkKK2NvbmRpdGlvbmFsbHksIGZvciBwcGMqIGJ1dCBub3Qg cHBjNjRsZSogKHRoZSBuZXcgY29kZSBpcyB2YWxpZCBmb3IKK1BPV0VSOCBWU1ggd2hpY2ggTEUg dGFyZ2V0cyBhcyBhIGJhc2VsaW5lIGJ1dCBub3QgQkUpIgorCisKK1RoaXMgcmV2ZXJ0cyBjb21t aXQgM2E1NTdjNWQ4OGI3YjE1YjU5NTRiYTI3NDNmZWJiMDU1NTQ5YjUzNi4KKy0tLQorIGxpYnN3 c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jIHwgMjQgKysrKysrKysrKysrKysrKysrKystLS0t CisgMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2Rp ZmYgLS1naXQgYS9saWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYyBiL2xpYnN3c2NhbGUv cHBjL3l1djJyZ2JfYWx0aXZlYy5jCitpbmRleCA1MzY1NDUyOTNkLi5jMWUyODUyYWRiIDEwMDY0 NAorLS0tIGEvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMKKysrKyBiL2xpYnN3c2Nh bGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCitAQCAtMzA1LDYgKzMwNSw5IEBAIHN0YXRpYyBpbnQg YWx0aXZlY18gIyMgbmFtZShTd3NDb250ZXh0ICpjLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW4s ICAgICAgICAgIFwKKyAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBSMSwgRzEsIEIxOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIHZlY3RvciB1bnNpZ25l ZCBjaGFyIFIsIEcsIEI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgY29uc3QgdmVjdG9yIHVuc2lnbmVk IGNoYXIgKnkxaXZQLCAqeTJpdlAsICp1aXZQLCAqdml2UDsgICAgICAgICAgICAgICAgICBcCisr ICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIGFsaWduX3Blcm07ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgdmVj dG9yIHNpZ25lZCBzaG9ydCBsQ1kgICAgICAgPSBjLT5DWTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgIHZlY3RvciBzaWduZWQgc2hvcnQgbE9ZICAgICAgID0gYy0+ T1k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICB2ZWN0b3Igc2ln bmVkIHNob3J0IGxDUlYgICAgICA9IGMtPkNSVjsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKK0BAIC0zMzUsMTMgKzMzOCwyNiBAQCBzdGF0aWMgaW50IGFsdGl2ZWNfICMjIG5h bWUoU3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAgICAgICAgICBcCisg ICAgICAgICB2ZWNfZHN0c3Qob3V0ZSwgKDB4MDIwMDAwMDIgfCAoKCh3ICogMyArIDMyKSAvIDMy KSA8PCAxNikpLCAxKTsgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg IGZvciAoaiA9IDA7IGogPCB3IC8gMTY7IGorKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCistICAgICAgICAgICAgeTAgPSB2ZWNfeGwoMCwgeTFpKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHkx aXZQID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHkxaTsgICAgICAgICAgICAgICAg ICAgICAgIFwKKysgICAgICAgICAgICB5Mml2UCA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hh ciAqKSB5Mmk7ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgdWl2UCAgPSAo Y29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgdWk7ICAgICAgICAgICAgICAgICAgICAgICAg XAorKyAgICAgICAgICAgIHZpdlAgID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHZp OyAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg ICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkxaSk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHkwID0gKHZlY3RvciB1bnNpZ25lZCBj aGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAg ICAgICAgICAgICB2ZWNfcGVybSh5MWl2UFswXSwgeTFpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAg ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIHkxID0g dmVjX3hsKDAsIHkyaSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKysgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgeTJpKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgeTEgPSAodmVjdG9y IHVuc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor KyAgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHkyaXZQWzBdLCB5Mml2UFsxXSwgYWxpZ25f cGVybSk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAg ICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgwLCB1aSk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB1 aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB1 ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh1aXZQWzBdLCB1aXZQWzFd LCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKy0gICAgICAgICAgICB2ID0gKHZlY3RvciBzaWduZWQgY2hhcikgdmVjX3hsKDAsIHZpKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZl Y19sdnNsKDAsIHZpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAg ICAgICAgICAgIHYgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHZpdlBb MF0sIHZpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICAgICAgICAgIHUgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAg ICAgIHZlY19zdWIodSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCistLSAKKzIuMjcuMAorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hl cy9hcm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVz L2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAuLjlhNTUxNzhjNzRmMGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L2ZmbXBlZzQvcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaApAQCAtMCwwICsx LDE4IEBACistLS0gYS9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTAtMjYgMjE6MDM6 MDMuMDAwMDAwMDAwICswMjAwCisrKysgYi9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTct MTEtMjEgMTE6MDY6NDkuNjAyMjg0NDIyICswMTAwCitAQCAtMzksNiArMzksMTUgQEAKKyAjZW5k aWYKKyAjaW5jbHVkZSA8ZmVudi5oPgorIAorKyNpZiAoRkVfQUxMX0VYQ0VQVCA9PSAwKQorKy8q IEUuZy4gQVJNIHNvZnQgZmxvYXQgZG9lcyBub3QgZGVmaW5lIHRoZXNlICovCisrI2RlZmluZSBG RV9JTlZBTElEICAgIDAKKysjZGVmaW5lIEZFX0RJVkJZWkVSTyAgMAorKyNkZWZpbmUgRkVfT1ZF UkZMT1cgICAwCisrI2RlZmluZSBGRV9VTkRFUkZMT1cgIDAKKysjZGVmaW5lIEZFX0lORVhBQ1Qg ICAgMAorKyNlbmRpZgorKworICNpZiBDT05GSUdfTElCRk9OVENPTkZJRworICNpbmNsdWRlIDxm b250Y29uZmlnL2ZvbnRjb25maWcuaD4KKyAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZt cGVnNC9wYXRjaGVzL3BhdGNoLWxpYmF2Y29kZWMtbGlic3Z0YXYxLXRlbl9iaXRfZm9ybWF0LmRp ZmYgYi9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9wYXRjaC1saWJhdmNvZGVjLWxpYnN2dGF2MS10 ZW5fYml0X2Zvcm1hdC5kaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MDAuLmFhOTQ4ZjdhOGEyZGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZmbXBlZzQvcGF0 Y2hlcy9wYXRjaC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0X2Zvcm1hdC5kaWZmCkBAIC0w LDAgKzEsNDAgQEAKKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor IyBGcm9tIDAzMWYxNTYxY2QyODY1OTZjZGIzNzRkYTMyZjhhYTgxNmNlM2IxMzUgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCisjIEZyb206IENocmlzdG9waGVyIERlZ2F3YSA8Y2hyaXN0b3BoZXIu ZGVnYXdhQGludGVsLmNvbT4KKyMgRGF0ZTogVGh1LCAyMCBPY3QgMjAyMiAyMjo1NToyNyAtMDUw MAorIyBTdWJqZWN0OiBbUEFUQ0hdIGF2Y29kZWMvbGlic3Z0YXYxOiByZW1vdmUgY29tcHJlc3Nl ZF90ZW5fYml0X2Zvcm1hdCBhbmQgc2ltcGxpZnkgYWxsb2NfYnVmZmVyCisjCisjIGNvbXByZXNz ZWRfdGVuX2JpdF9mb3JtYXQgaGFzIGJlZW4gZGVwcmVjYXRlZCB1cHN0cmVhbSBhbmQgaGFzIG5v IGVmZmVjdAorIyBhbmQgY2FuIGJlIHJlbW92ZWQuIFBsdXMsIHRlY2huaWNhbGx5IGl0IHdhcyBu ZXZlciB1c2VkIGluIHRoZSBmaXJzdCBwbGFjZQorIyBzaW5jZSBpdCB3b3VsZCByZXF1aXJlIHRo ZSBhcHAgKGZmbXBlZykgdG8gc2V0IGl0IGFuZCBkbyBhZGRpdGlvbmFsCisjIHByb2Nlc3Npbmcg b2YgdGhlIGlucHV0IGZyYW1lcy4KKyMKKyMgQWxzbyBzaW1wbGlmeSBhbGxvY19idWZmZXIgYnkg cmVtb3ZpbmcgY2FsY3VsYXRpb25zIHJlbGF0aW5nIHRvIHRoZSBub24tZXhpc3RhbnQgcHJvY2Vz c2luZy4KKyMKKyMgU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgRGVnYXdhIDxjaHJpc3RvcGhl ci5kZWdhd2FAaW50ZWwuY29tPgorIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gYS9saWJhdmNvZGVjL2xpYnN2dGF2MS5jCisrKysgYi9saWJhdmNvZGVjL2xp YnN2dGF2MS5jCitAQCAtMTI0LDE2ICsxMjQsMTIgQEAgc3RhdGljIGludCBzdnRfcHJpbnRfZXJy b3Iodm9pZCAqbG9nX2N0eCwgRWJFcnJvclR5cGUgZXJyLAorIAorIHN0YXRpYyBpbnQgYWxsb2Nf YnVmZmVyKEViU3Z0QXYxRW5jQ29uZmlndXJhdGlvbiAqY29uZmlnLCBTdnRDb250ZXh0ICpzdnRf ZW5jKQorIHsKKy0gICAgY29uc3QgaW50ICAgIHBhY2tfbW9kZV8xMGJpdCA9CistICAgICAgICAo Y29uZmlnLT5lbmNvZGVyX2JpdF9kZXB0aCA+IDgpICYmIChjb25maWctPmNvbXByZXNzZWRfdGVu X2JpdF9mb3JtYXQgPT0gMCkgPyAxIDogMDsKKy0gICAgY29uc3Qgc2l6ZV90IGx1bWFfc2l6ZV84 Yml0ICA9CistICAgICAgICBjb25maWctPnNvdXJjZV93aWR0aCAqIGNvbmZpZy0+c291cmNlX2hl aWdodCAqICgxIDw8IHBhY2tfbW9kZV8xMGJpdCk7CistICAgIGNvbnN0IHNpemVfdCBsdW1hX3Np emVfMTBiaXQgPQorLSAgICAgICAgKGNvbmZpZy0+ZW5jb2Rlcl9iaXRfZGVwdGggPiA4ICYmIHBh Y2tfbW9kZV8xMGJpdCA9PSAwKSA/IGx1bWFfc2l6ZV84Yml0IDogMDsKKysgICAgY29uc3Qgc2l6 ZV90IGx1bWFfc2l6ZSA9IGNvbmZpZy0+c291cmNlX3dpZHRoICogY29uZmlnLT5zb3VyY2VfaGVp Z2h0ICoKKysgICAgICAgIChjb25maWctPmVuY29kZXJfYml0X2RlcHRoID4gOCA/IDIgOiAxKTsK KyAKKyAgICAgRWJTdnRJT0Zvcm1hdCAqaW5fZGF0YTsKKyAKKy0gICAgc3Z0X2VuYy0+cmF3X3Np emUgPSAobHVtYV9zaXplXzhiaXQgKyBsdW1hX3NpemVfMTBiaXQpICogMyAvIDI7CisrICAgIHN2 dF9lbmMtPnJhd19zaXplID0gbHVtYV9zaXplICogMyAvIDI7CisgCisgICAgIC8vIGFsbG9jYXRl IGJ1ZmZlciBmb3IgaW4gYW5kIG91dAorICAgICBzdnRfZW5jLT5pbl9idWYgICAgICAgICAgID0g YXZfbWFsbG9jeihzaXplb2YoKnN2dF9lbmMtPmluX2J1ZikpOworLS0gCitHaXRMYWIKKwpkaWZm IC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24t dmFhcGktYnVnLnBhdGNoIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNh LXJlYWRlb24tdmFhcGktYnVnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMDAuLjAwZTNmNjhhNDE1YjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZmbXBl ZzQvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2gKQEAgLTAs MCArMSwyOCBAQAorRnJvbSA4MTFkMjkwODQ0MjA2ZmM3M2RjMzljM2U1YjY3ZDVkODk1YmFlZGY4 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmFpbmVyIEhvY2hlY2tlciA8ZmVybmV0 bWVudGFAb25saW5lLmRlPgorRGF0ZTogU2F0LCAyNiBKYW4gMjAxOSAxOTo0ODozNSArMDEwMAor U3ViamVjdDogW1BBVENIXSBhdmNvZGVjL3ZhYXBpX2gyNjQ6IHNraXAgZGVjb2RlIGlmIHBpYyBo YXMgbm8gc2xpY2VzCisKK1RoaXMgZml4ZXMgLyB3b3JrYXJvdW5kcyBodHRwczovL2J1Z3MuZnJl ZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUzNjguCitJdCB3YXMgaGl0IGZyZXF1ZW50 bHkgd2hlbiB3YXRjaGluZyBoMjY0IGNoYW5uZWxzIHJlY2VpdmVkIHZpYSBEVkItWC4KK0NvcnJl c3BvbmRpbmcga29kaSBidWc6IGh0dHBzOi8vZ2l0aHViLmNvbS94Ym1jL3hibWMvaXNzdWVzLzE1 NzA0CistLS0KKyBsaWJhdmNvZGVjL3ZhYXBpX2gyNjQuYyB8IDUgKysrKysKKyAxIGZpbGUgY2hh bmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZhYXBpX2gy NjQuYyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jCitpbmRleCA1ODU0NTg3YTI1NS4uZjEyZmRj NDU3YTQgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2gyNjQuYworKysrIGIvbGliYXZj b2RlYy92YWFwaV9oMjY0LmMKK0BAIC0zMTcsNiArMzE3LDExIEBAIHN0YXRpYyBpbnQgdmFhcGlf aDI2NF9lbmRfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQorICAgICBIMjY0U2xpY2VDb250 ZXh0ICpzbCA9ICZoLT5zbGljZV9jdHhbMF07CisgICAgIGludCByZXQ7CisgCisrICAgIGlmIChw aWMtPm5iX3NsaWNlcyA9PSAwKSB7CisrICAgICAgICByZXQgPSBBVkVSUk9SX0lOVkFMSUREQVRB OworKyAgICAgICAgZ290byBmaW5pc2g7CisrICAgIH0KKysKKyAgICAgcmV0ID0gZmZfdmFhcGlf ZGVjb2RlX2lzc3VlKGF2Y3R4LCBwaWMpOworICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgIGdv dG8gZmluaXNoOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRlIGIvc3JjcGtn cy9mZm1wZWc0L3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MDAuLmYyYzg1MTY5M2QzNjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZmbXBlZzQvdGVt cGxhdGUKQEAgLTAsMCArMSwyNDAgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZmbXBlZzQnCisj IGF1ZGFjaXR5IGFsc28gbmVlZHMgdG8gYmUgYnVtcGVkIHdoZW4gYSBuZXcgZmZtcGVnIHZlcnNp b24gYnVtcHMgbGliYXZmb3JtYXQncyBzb25hbWUhCitwa2duYW1lPWZmbXBlZzQKK3ZlcnNpb249 NC40LjQKK3JldmlzaW9uPTEKK3Nob3J0X2Rlc2M9IkRlY29kaW5nLCBlbmNvZGluZyBhbmQgc3Ry ZWFtaW5nIHNvZnR3YXJlIC0gZmZtcGVnNCBsaWJyYXJpZXMgb25seSIKK21haW50YWluZXI9Ik9y cGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCitsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVy IgoraG9tZXBhZ2U9Imh0dHBzOi8vd3d3LmZmbXBlZy5vcmciCitjaGFuZ2Vsb2c9Imh0dHBzOi8v cmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9GRm1wZWcvRkZtcGVnL21hc3Rlci9DaGFuZ2Vsb2ci CitkaXN0ZmlsZXM9Imh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvcmVsZWFzZXMvZmZtcGVnLSR7dmVy c2lvbn0udGFyLnh6IgorY2hlY2tzdW09ZTgwYjM4MGQ1OTVjODA5MDYwZjY2Zjk2YTVkODQ5NTEx ZWY0YTc2YTI2Yjc2ZWFjZjU3NzhiOTRjMzU3MDMwOQorCitob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWcgcGVybCIKK21ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGJ6aXAyLWRldmVsIGZyZWV0eXBl LWRldmVsIGFsc2EtbGliLWRldmVsIGxpYlhmaXhlcy1kZXZlbAorIGxpYlhleHQtZGV2ZWwgbGli WHZNQy1kZXZlbCBsaWJ4Y2ItZGV2ZWwgbGFtZS1kZXZlbCBsaWJ0aGVvcmEtZGV2ZWwKKyBsaWJ2 b3JiaXMtZGV2ZWwgeDI2NC1kZXZlbCB4dmlkY29yZS1kZXZlbCBqYWNrLWRldmVsIFNETDItZGV2 ZWwKKyBsaWJjZGlvLXBhcmFub2lhLWRldmVsIGxpYnJ0bXAtZGV2ZWwgbGlibW9kcGx1Zy1kZXZl bCBnbnV0bHMtZGV2ZWwKKyBzcGVleC1kZXZlbCBjZWx0LWRldmVsIGhhcmZidXp6LWRldmVsIGxp YmFzcy1kZXZlbCBvcHVzLWRldmVsIG9jbC1pY2QtZGV2ZWwKKyBsaWJiczJiLWRldmVsIGxpYnZp ZHN0YWItZGV2ZWwgdm1hZi1kZXZlbCAkKHZvcHRfaWYgcHVsc2VhdWRpbyBwdWxzZWF1ZGlvLWRl dmVsKQorICQodm9wdF9pZiB2YWFwaSBsaWJ2YS1kZXZlbCkgJCh2b3B0X2lmIHZkcGF1IGxpYnZk cGF1LWRldmVsKQorICQodm9wdF9pZiB4MjY1IHgyNjUtZGV2ZWwpICQodm9wdF9pZiB2NGwyIHY0 bC11dGlscy1kZXZlbCkKKyAkKHZvcHRfaWYgZmRrX2FhYyBmZGstYWFjLWRldmVsKSAkKHZvcHRf aWYgdnB4IGxpYnZweC1kZXZlbCkKKyAkKHZvcHRfaWYgYW9tIGxpYmFvbS1kZXZlbCkgJCh2b3B0 X2lmIHNuZGlvIHNuZGlvLWRldmVsKQorICQodm9wdF9pZiBkYXYxZCBsaWJkYXYxZC1kZXZlbCkg JCh2b3B0X2lmIHppbWcgemltZy1kZXZlbCkKKyAkKHZvcHRfaWYgd2VicCBsaWJ3ZWJwLWRldmVs KSAkKHZvcHRfaWYgc29mYSBsaWJteXNvZmEtZGV2ZWwpCisgJCh2b3B0X2lmIGRybSBsaWJkcm0t ZGV2ZWwpICQodm9wdF9pZiBzdnRhdjEgbGlic3Z0LWF2MS1kZXZlbCkKKyAkKHZvcHRfaWYgc3J0 IHNydC1kZXZlbCkgJCh2b3B0X2lmIHJpc3QgbGlicmlzdC1kZXZlbCkKKyAkKHZvcHRfaWYgdnVs a2FuICd2dWxrYW4tbG9hZGVyIFZ1bGthbi1IZWFkZXJzJykKKyAkKHZvcHRfaWYgbWZ4ICdsaWJt ZnggbGlibWZ4LWRldmVsJykKKyAkKHZvcHRfaWYgbnZlbmMgbnYtY29kZWMtaGVhZGVycykgJCh2 b3B0X2lmIG52ZGVjIG52LWNvZGVjLWhlYWRlcnMpIgorCitidWlsZF9vcHRpb25zPSJ4MjY1IHY0 bDIgdmFhcGkgdmRwYXUgdnB4IGZka19hYWMgYW9tIG52ZW5jIHNuZGlvIHB1bHNlYXVkaW8KKyBk YXYxZCB6aW1nIHdlYnAgc29mYSB2dWxrYW4gZHJtIHN2dGF2MSBzcnQgcmlzdCBudmRlYyBtZngi CitidWlsZF9vcHRpb25zX2RlZmF1bHQ9IngyNjUgdjRsMiB2cHggYW9tIHNuZGlvIHB1bHNlYXVk aW8gZGF2MWQgd2VicCB2dWxrYW4gZHJtIHNydCByaXN0IgorCitkZXNjX29wdGlvbl9zcnQ9IkVu YWJsZSBzdXBwb3J0IGZvciBTUlQgKFNlY3VyZSwgUmVsaWFibGUsIFRyYW5zcG9ydCkiCitkZXNj X29wdGlvbl9yaXN0PSJFbmFibGUgc3VwcG9ydCBmb3IgUklTVCAoUmVsaWFibGUgSW50ZXJuZXQg U3RyZWFtIFRyYW5zcG9ydCkiCitkZXNjX29wdGlvbl9zb2ZhPSJFbmFibGUgc3VwcG9ydCBmb3Ig QUVTIFNPRkEiCitkZXNjX29wdGlvbl93ZWJwPSJFbmFibGUgc3VwcG9ydCBmb3IgV2ViUCIKKwor Y2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJaTY4NiopCisJCQlob3N0bWFrZWRlcGVu ZHMrPSIgbmFzbSIKKwkJCWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSBudmVu YyBudmRlYyIKKwkJCTs7CisJeDg2XzY0KikKKwkJCWhvc3RtYWtlZGVwZW5kcys9IiBuYXNtIgor CQkJYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG1meCBudmVuYyBudmRlYyIK KwkJCTs7CisJcHBjNjQqKSBidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUiOzsK KwltaXBzKikgQ0ZMQUdTPSItbW5hbj1sZWdhY3kiOzsKK2VzYWMKKworaWYgWyAiJFhCUFNfVEFS R0VUX1dPUkRTSVpFIiAhPSAiMzIiIF07IHRoZW4KKwlidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIg c3Z0YXYxIgorZmkKKworaWYgWyAiJFhCUFNfVEFSR0VUX05PX0FUT01JQzgiIF07IHRoZW4KKwlt YWtlZGVwZW5kcys9IiBsaWJhdG9taWMtZGV2ZWwiCitmaQorCitfYXBwbHlfcGF0Y2goKSB7CisJ bG9jYWwgYXJncz0iJDEiIHBuYW1lPSIkKGJhc2VuYW1lICQyKSIKKworCWlmIFsgISAtZiAiLiR7 cG5hbWV9X2RvbmUiIF07IHRoZW4KKwkJcGF0Y2ggLU4gJGFyZ3MgLWkgJDIKKwkJdG91Y2ggLiR7 cG5hbWV9X2RvbmUKKwlmaQorfQorCitwb3N0X3BhdGNoKCkgeworCWNhc2UgIiRYQlBTX1RBUkdF VF9NQUNISU5FIiBpbgorCQlwcGM2NGxlKikgOzsKKwkJcHBjKikgX2FwcGx5X3BhdGNoIC1wMSAk e0ZJTEVTRElSfS9hbHRpdmVjLnBhdGNoIDs7CisJZXNhYworCisJdnNlZCAtaSBsaWJhdmZpbHRl ci92Zl9saWJ2bWFmLmMgLWUgJ3MhL3Vzci9sb2NhbC9zaGFyZS9tb2RlbC9cKHZtYWZfdjAuNi4x XCkucGtsIS91c3Ivc2hhcmUvdm1hZi9cMS5qc29uIScKK30KKworZG9fY29uZmlndXJlKCkgewor CSMgRml4IGdjYyBvbiB4ODZfNjQtbXVzbCBvbmx5CisJaWYgWyAiJFhCUFNfVEFSR0VUX01BQ0hJ TkUiID0gIng4Nl82NC1tdXNsIiBdOyB0aGVuCisJCXZzZWQgLWkgY29uZmlndXJlIC1lICJzO19j ZmxhZ3Nfc3BlZWQ9Jy1PMyc7X2NmbGFnc19zcGVlZD0nLU8yJzsiCisJZmkKKworCWlmIFsgIiRD Uk9TU19CVUlMRCIgXTsgdGhlbgorCQljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJ CWFybSopIF9hcmNoPSJhcm0iOzsKKwkJCWFhcmNoNjQqKSBfYXJjaD0iYWFyY2g2NCI7OworCQkJ bWlwcyopIF9hcmNoPSJtaXBzIjs7CisJCQlwcGM2NCopIF9hcmNoPSJwcGM2NCI7OworCQkJcHBj KikgX2FyY2g9InBwYyI7OworCQkJKikgX2FyY2g9IiR7WEJQU19UQVJHRVRfTUFDSElORSUlLW11 c2x9Ijs7CisJCWVzYWMKKworCQlfYXJncys9IiAtLWVuYWJsZS1jcm9zcy1jb21waWxlCisJCQkt LXN5c3Jvb3Q9JFhCUFNfQ1JPU1NfQkFTRQorCQkJLS1jcm9zcy1wcmVmaXg9JHtYQlBTX0NST1NT X1RSSVBMRVR9LQorCQkJLS10YXJnZXQtb3M9bGludXggLS1hcmNoPSR7X2FyY2h9IgorCWZpCisK KwljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJcHBjfHBwYy1tdXNsKSBfYXJncys9 IiAtLWRpc2FibGUtYWx0aXZlYyI7OworCWVzYWMKKworCWlmIFsgIiRYQlBTX1RBUkdFVF9OT19B VE9NSUM4IiBdOyB0aGVuCisJCV9hcmdzKz0iIC0tZXh0cmEtbGlicz0tbGF0b21pYyIKKwlmaQor CisJLi9jb25maWd1cmUgLS1wcmVmaXg9L3VzciAtLWRpc2FibGUtZGVidWcgLS1lbmFibGUtZ3Bs IC0tZW5hYmxlLWdudXRscyBcCisJCS0tZGlzYWJsZS1zdHJpcHBpbmcgXAorCQktLWVuYWJsZS1s aWJjZGlvIC0tZW5hYmxlLXZlcnNpb24zIC0tZW5hYmxlLXJ1bnRpbWUtY3B1ZGV0ZWN0IFwKKwkJ LS1lbmFibGUtbGlibXAzbGFtZSAtLWVuYWJsZS1saWJ2b3JiaXMgLS1lbmFibGUtbGlieHZpZCBc CisJCS0tZW5hYmxlLWxpYngyNjQgJCh2b3B0X2VuYWJsZSB2cHggbGlidnB4KSAtLWVuYWJsZS1s aWJ0aGVvcmEgXAorCQktLWVuYWJsZS1zaGFyZWQgLS1lbmFibGUtc3RhdGljIC0tZW5hYmxlLWxp YnhjYiBcCisJCSQodm9wdF9lbmFibGUgcHVsc2VhdWRpbyBsaWJwdWxzZSkgLS1lbmFibGUtbGli ZnJlZXR5cGUgLS1lbmFibGUtbGlibW9kcGx1ZyBcCisJCS0tZW5hYmxlLWxpYnNwZWV4IC0tZW5h YmxlLWxpYmNlbHQgLS1lbmFibGUtbGliYXNzIFwKKwkJLS1lbmFibGUtbGlib3B1cyAtLWVuYWJs ZS1saWJydG1wIC0tZW5hYmxlLWxpYmphY2sgXAorCQkkKHZvcHRfaWYgZmRrX2FhYyAnLS1lbmFi bGUtbm9uZnJlZSAtLWVuYWJsZS1saWJmZGstYWFjJykgXAorCQktLWRpc2FibGUtbGlib3BlbmNv cmVfYW1ybmIgLS1kaXNhYmxlLWxpYm9wZW5jb3JlX2FtcndiIFwKKwkJLS1kaXNhYmxlLWxpYm9w ZW5qcGVnIFwKKwkJLS1lbmFibGUtcG9zdHByb2MgLS1lbmFibGUtb3BlbmNsICR7X2FyZ3N9IC0t ZW5hYmxlLWxpYnZtYWYgJHtfYXJnc30gXAorCQkkKHZvcHRfZW5hYmxlIHgyNjUgbGlieDI2NSkg XAorCQkkKHZvcHRfZW5hYmxlIHY0bDIgbGlidjRsMikgXAorCQkkKHZvcHRfZW5hYmxlIGFvbSBs aWJhb20pICQodm9wdF9lbmFibGUgdmFhcGkpICQodm9wdF9lbmFibGUgdmRwYXUpIFwKKwkJLS1l bmFibGUtbGliYnMyYiAtLWVuYWJsZS1hdnJlc2FtcGxlIC0tZW5hYmxlLWxpYnZpZHN0YWIgXAor CQkkKHZvcHRfZW5hYmxlIGRhdjFkIGxpYmRhdjFkKSBcCisJCSQodm9wdF9lbmFibGUgemltZyBs aWJ6aW1nKSBcCisJCSQodm9wdF9lbmFibGUgd2VicCBsaWJ3ZWJwKSBcCisJCSQodm9wdF9lbmFi bGUgc29mYSBsaWJteXNvZmEpIFwKKwkJJCh2b3B0X2VuYWJsZSB2dWxrYW4pIFwKKwkJJCh2b3B0 X2VuYWJsZSBkcm0gbGliZHJtKSBcCisJCSQodm9wdF9lbmFibGUgc3Z0YXYxIGxpYnN2dGF2MSkg XAorCQkkKHZvcHRfZW5hYmxlIHNydCBsaWJzcnQpIFwKKwkJJCh2b3B0X2VuYWJsZSByaXN0IGxp YnJpc3QpIFwKKwkJJCh2b3B0X2VuYWJsZSBtZnggbGlibWZ4KSBcCisJCSQodm9wdF9pZiBudmVu YyAnLS1lbmFibGUtbnZlbmMnKSBcCisJCSQodm9wdF9pZiBudmRlYyAnLS1lbmFibGUtbnZkZWMn KQorfQorCitkb19idWlsZCgpIHsKKwltYWtlICR7bWFrZWpvYnN9CisJbWFrZSBkb2MvZmZ7bXBl ZyxwbGF5fS4xCit9CisKK2RvX2luc3RhbGwoKSB7CisJbWFrZSBERVNURElSPSR7REVTVERJUn0g aW5zdGFsbCBpbnN0YWxsLW1hbgorCXJtIC1yZiAke0RFU1RESVJ9L3Vzci9iaW4KK30KKworbGli YXZjb2RlYzRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgY29kZWMgbGlicmFyeSIK Kwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYXZjb2RlYy5zby4qIgorCX0K K30KKworbGliYXZkZXZpY2U0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGRldmlj ZSBoYW5kbGluZyBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9s aWJhdmRldmljZS5zby4qIgorCX0KK30KKworbGliYXZyZXNhbXBsZTRfcGFja2FnZSgpIHsKKwlz aG9ydF9kZXNjPSJGRm1wZWcgYXVkaW8gcmVzYW1wbGluZyBsaWJyYXJ5IgorCXBrZ19pbnN0YWxs KCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJhdnJlc2FtcGxlLnNvLioiCisJfQorfQorCitsaWJh dmZvcm1hdDRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgZmlsZSBmb3JtYXQgbGli cmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYXZmb3JtYXQuc28u KiIKKwl9Cit9CisKK2xpYmF2dXRpbDRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcg dXRpbGl0eSBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJh dnV0aWwuc28uKiIKKwl9Cit9CisKK2xpYmF2ZmlsdGVyNF9wYWNrYWdlKCkgeworCXNob3J0X2Rl c2M9IkZGbXBlZyBhdWRpby92aWRlbyBmaWx0ZXIgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsK KwkJdm1vdmUgInVzci9saWIvbGliYXZmaWx0ZXIuc28uKiIKKwl9Cit9CisKK2xpYnBvc3Rwcm9j NF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyB2aWRlbyBwb3N0cHJvY2Vzc2luZyBs aWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJwb3N0cHJvYy5z by4qIgorCX0KK30KKworbGlic3dzY2FsZTRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1w ZWcgdmlkZW8gc2NhbGluZyBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNy L2xpYi9saWJzd3NjYWxlLnNvLioiCisJfQorfQorCitsaWJzd3Jlc2FtcGxlNF9wYWNrYWdlKCkg eworCXNob3J0X2Rlc2M9IkZGbXBlZyB2aWRlbyByZXNhbXBsaW5nIGxpYnJhcnkiCisJcGtnX2lu c3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYnN3cmVzYW1wbGUuc28uKiIKKwl9Cit9CisK K2ZmbXBlZzQtZGV2ZWxfcGFja2FnZSgpIHsKKwlkZXBlbmRzPSIKKwkJbGliYXZjb2RlYzQ+PSR7 dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGliYXZkZXZpY2U0Pj0ke3ZlcnNpb259XyR7cmV2aXNp b259CisJCWxpYmF2Zm9ybWF0ND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJhdnV0aWw0 Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYmF2ZmlsdGVyND49JHt2ZXJzaW9ufV8ke3Jl dmlzaW9ufQorCQlsaWJwb3N0cHJvYzQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGlic3dz Y2FsZTQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGlic3dyZXNhbXBsZTQ+PSR7dmVyc2lv bn1fJHtyZXZpc2lvbn0KKwkJbGliYXZyZXNhbXBsZTQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0i CisJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgorCWNvbmZsaWN0cz0iZmZtcGVn LWRldmVsIgorCWlmIFsgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiA9ICJpNjg2IiBdOyB0aGVuCisJ CSMgL3Vzci9iaW4vc3RyaXA6IGVycm9yOiB0aGUgaW5wdXQgZmlsZSAnL2Rlc3RkaXIvL2ZmbXBl Zy1kZXZlbC00LjQuNC91c3IvbGliL2xpYmF2ZmlsdGVyLmEodmZfYXRhZGVub2lzZS5vKScgaGFz IG5vIHNlY3Rpb25zCisJCW5vc3RyaXBfZmlsZXM9Ii91c3IvbGliL2xpYmF2ZmlsdGVyLmEiCisJ ZmkKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2luY2x1ZGUKKwkJdm1vdmUgdXNyL2xp Yi9wa2djb25maWcKKwkJdm1vdmUgInVzci9saWIvKi5hIgorCQl2bW92ZSAidXNyL2xpYi8qLnNv IgorCQl2bW92ZSB1c3Ivc2hhcmUvZmZtcGVnL2V4YW1wbGVzCisJCXZtb3ZlIHVzci9zaGFyZS9t YW4vbWFuMworCX0KK30KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZjb2RlYzQgYi9zcmNwa2dz L2xpYmF2Y29kZWM0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4 N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2Y29kZWM0CkBAIC0w LDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS9zcmNwa2dzL2xpYmF2ZGV2aWNlNCBiL3NyY3BrZ3MvbGliYXZkZXZpY2U0Cm5ldyBmaWxlIG1v ZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2xpYmF2ZGV2aWNlNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdmZpbHRlcjQg Yi9zcmNwa2dzL2xpYmF2ZmlsdGVyNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAw MDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdmZp bHRlcjQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZmb3JtYXQ0IGIvc3JjcGtncy9saWJhdmZvcm1hdDQK bmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiZQot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZmb3JtYXQ0CkBAIC0wLDAgKzEgQEAKK2Zm bXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xp YmF2cmVzYW1wbGU0IGIvc3JjcGtncy9saWJhdnJlc2FtcGxlNApuZXcgZmlsZSBtb2RlIDEyMDAw MAppbmRleCAwMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9saWJhdnJlc2FtcGxlNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdnV0aWw0IGIvc3JjcGtn cy9saWJhdnV0aWw0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4 N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2dXRpbDQKQEAgLTAs MCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbGlicG9zdHByb2M0IGIvc3JjcGtncy9saWJwb3N0cHJvYzQKbmV3IGZpbGUgbW9k ZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvbGlicG9zdHByb2M0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYnN3cmVzYW1wbGU0 IGIvc3JjcGtncy9saWJzd3Jlc2FtcGxlNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAw MDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJz d3Jlc2FtcGxlNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJzd3NjYWxlNCBiL3NyY3BrZ3MvbGlic3dzY2Fs ZTQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZi ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGlic3dzY2FsZTQKQEAgLTAsMCArMSBAQAor ZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCkZyb20gNDJkZDM4YjNhNmQ2NzVj ZDJhMjM0N2ZkOGRhYTIyODU3NGY3YmJjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAxOTo1OTow NCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA2LzExNV0gb3BlbmN2OiB1cGRhdGUgdG8gNC43LjAu CgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgIHwgMTA0ICsrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3Mvb3BlbmN2L3RlbXBsYXRlIHwgICA4ICsrLS0K IDIgZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2NvbW1vbi9zaGxpYnMKaW5kZXggMmZlY2RiNmU5MDQ5 MS4uYjFiYTE0OTdjODI5NSAxMDA2NDQKLS0tIGEvY29tbW9uL3NobGlicworKysgYi9jb21tb24v c2hsaWJzCkBAIC0yMDg1LDU4ICsyMDg1LDU4IEBAIGxpYmNhcHN0b25lLnNvLjUgY2Fwc3RvbmUt NS4wLjFfMQogbGliaGF2ZWdlLnNvLjIgbGliaGF2ZWdlZC0xLjkuMTFfMQogbGlibmloLnNvLjEg bGlibmloLTEuMC4zXzEKIGxpYm5paC1kYnVzLnNvLjEgbGlibmloLTEuMC4zXzEKLWxpYm9wZW5j dl9xdWFsaXR5LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3JlZy5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9zdXJmYWNlX21hdGNoaW5nLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3hwaG90by5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9mcmVldHlwZS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9m dXp6eS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9oZnMuc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaW1nX2hhc2guc28uNDA2IGxpYm9wZW5jdi00LjYuMF8x Ci1saWJvcGVuY3ZfbGluZV9kZXNjcmlwdG9yLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGli b3BlbmN2X3NhbGllbmN5LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3N0cnVj dHVyZWRfbGlnaHQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfYXJ1Y28uc28u NDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfYmdzZWdtLnNvLjQwNiBsaWJvcGVuY3Yt NC42LjBfMQotbGlib3BlbmN2X2Jpb2luc3BpcmVkLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X2NjYWxpYi5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mYWNl LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3RyYWNraW5nLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3hmZWF0dXJlczJkLnNvLjQwNiBsaWJvcGVuY3YtNC42 LjBfMQotbGlib3BlbmN2X29wdGZsb3cuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVu Y3ZfeGltZ3Byb2Muc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfcGxvdC5zby40 MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl90ZXh0LnNvLjQwNiBsaWJvcGVuY3YtNC42 LjBfMQotbGlib3BlbmN2X21sLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X29i amRldGVjdC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9kbm4uc28uNDA2IGxp Ym9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc2hhcGUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8x Ci1saWJvcGVuY3Zfc3RpdGNoaW5nLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2 X3Bob3RvLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3ZpZGVvLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2NhbGliM2Quc28uNDA2IGxpYm9wZW5jdi00LjYu MF8xCi1saWJvcGVuY3ZfZmVhdHVyZXMyZC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9w ZW5jdl9mbGFubi5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9oaWdoZ3VpLnNv LjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3ZpZGVvaW8uc28uNDA2IGxpYm9wZW5j di00LjYuMF8xCi1saWJvcGVuY3ZfaW1nY29kZWNzLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X2ltZ3Byb2Muc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfY29y ZS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9zdXBlcnJlcy5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl92aWRlb3N0YWIuc28uNDA2IGxpYm9wZW5jdi00LjYu MF8xCi1saWJvcGVuY3ZfZ2FwaS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94 b2JqZGV0ZWN0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2RhdGFzZXRzLnNv LjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Rubl9vYmpkZXRlY3Quc28uNDA2IGxp Ym9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZG5uX3N1cGVycmVzLnNvLjQwNiBsaWJvcGVuY3Yt NC42LjBfMQotbGlib3BlbmN2X2RwbS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5j dl9waGFzZV91bndyYXBwaW5nLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3N0 ZXJlby5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9yYXBpZC5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9pbnRlbnNpdHlfdHJhbnNmb3JtLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2FscGhhbWF0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBf MQotbGlib3BlbmN2X2JhcmNvZGUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zf bWNjLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQorbGlib3BlbmN2X3F1YWxpdHkuc28uNDA3IGxp Ym9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfcmVnLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X3N1cmZhY2VfbWF0Y2hpbmcuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3ZfeHBob3RvLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ZyZWV0eXBl LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Z1enp5LnNvLjQwNyBsaWJvcGVu Y3YtNC43LjBfMQorbGlib3BlbmN2X2hmcy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl9pbWdfaGFzaC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9saW5lX2Rl c2NyaXB0b3Iuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfc2FsaWVuY3kuc28u NDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfc3RydWN0dXJlZF9saWdodC5zby40MDcg bGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9hcnVjby5zby40MDcgbGlib3BlbmN2LTQuNy4w XzEKK2xpYm9wZW5jdl9iZ3NlZ20uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zf YmlvaW5zcGlyZWQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfY2NhbGliLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ZhY2Uuc28uNDA3IGxpYm9wZW5jdi00 LjcuMF8xCitsaWJvcGVuY3ZfdHJhY2tpbmcuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3ZfeGZlYXR1cmVzMmQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfb3B0 Zmxvdy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl94aW1ncHJvYy5zby40MDcg bGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9wbG90LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBf MQorbGlib3BlbmN2X3RleHQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfbWwu c28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfb2JqZGV0ZWN0LnNvLjQwNyBsaWJv cGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Rubi5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xp Ym9wZW5jdl9zaGFwZS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zdGl0Y2hp bmcuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfcGhvdG8uc28uNDA3IGxpYm9w ZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfdmlkZW8uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3ZfY2FsaWIzZC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mZWF0 dXJlczJkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ZsYW5uLnNvLjQwNyBs aWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2hpZ2hndWkuc28uNDA3IGxpYm9wZW5jdi00Ljcu MF8xCitsaWJvcGVuY3ZfdmlkZW9pby5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5j dl9pbWdjb2RlY3Muc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfaW1ncHJvYy5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9jb3JlLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X3N1cGVycmVzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X3ZpZGVvc3RhYi5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9nYXBp LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3hvYmpkZXRlY3Quc28uNDA3IGxp Ym9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZGF0YXNldHMuc28uNDA3IGxpYm9wZW5jdi00Ljcu MF8xCitsaWJvcGVuY3ZfZG5uX29iamRldGVjdC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xp Ym9wZW5jdl9kbm5fc3VwZXJyZXMuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zf ZHBtLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3BoYXNlX3Vud3JhcHBpbmcu c28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfc3RlcmVvLnNvLjQwNyBsaWJvcGVu Y3YtNC43LjBfMQorbGlib3BlbmN2X3JhcGlkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X2ludGVuc2l0eV90cmFuc2Zvcm0uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3ZfYWxwaGFtYXQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYmFyY29k ZS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9tY2Muc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCiBsaWJ1bmljb25mLnNvLjQuNiB3dnN0cmVhbXMtNC42LjFfMjAKIGxpYnd2YmFz ZS5zby40LjYgd3ZzdHJlYW1zLTQuNi4xXzIwCiBsaWJ3dnV0aWxzLnNvLjQuNiB3dnN0cmVhbXMt NC42LjFfMjAKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbmN2L3RlbXBsYXRlIGIvc3JjcGtncy9v cGVuY3YvdGVtcGxhdGUKaW5kZXggOGE3ZWI2YTVkZGM1Yi4uY2U5NGRlOTQyNGQxOCAxMDA2NDQK LS0tIGEvc3JjcGtncy9vcGVuY3YvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVuY3YvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVuY3YnCiBwa2duYW1l PW9wZW5jdgotdmVyc2lvbj00LjYuMAotcmV2aXNpb249NQordmVyc2lvbj00LjcuMAorcmV2aXNp b249MQogY3JlYXRlX3dya3NyYz15ZXMKIGJ1aWxkX3dya3NyYz0ke3BrZ25hbWV9LSR7dmVyc2lv bn0KIGJ1aWxkX3N0eWxlPWNtYWtlCkBAIC0yNCw4ICsyNCw4IEBAIGhvbWVwYWdlPSJodHRwczov L29wZW5jdi5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2 L3dpa2kvQ2hhbmdlTG9nIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29w ZW5jdi9hcmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6CiAgaHR0cHM6Ly9naXRodWIuY29tL29wZW5j di9vcGVuY3ZfY29udHJpYi9hcmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6PmNvbnRyaWIudGFyLmd6 IgotY2hlY2tzdW09IjFlYzFjYmE2NWY5ZjIwZmU1YTQxZmRhMTU4NmUwMWM3MGVhMGM5YTZkN2I2 N2M5ZTEzZWRmMGNmZTIyMzkyNzcKLSAxNzc3ZDVmZDJiNTkwMjljZjUzN2U1ZmQ2ZjhhYTY4ZDcw NzA3NTgyMmY5MGJkZTY4M2ZjZGUwODZmODVmN2E3IgorY2hlY2tzdW09IjhkZjAwNzljZGJlMTc5 NzQ4YTE4ZDQ0NzMxYWY2MmEyNDVhNDVlYmY1MDg1MjIzZGMwMzEzMzk1NGM2NjI5NzMKKyA0MmRm ODQwY2Y5MDU1ZTU5ZDBlMjJjMjQ5Y2ZiMTlmMDQ3NDNlMWJkYWQxMTNkMzFiMTU3M2QzOTM0ZDYy NTg0IgogcGF0Y2hfYXJncz0iLU5wMSAtZCAke2J1aWxkX3dya3NyY30iCiAjIHRlc3RzIGhhbmcg aW5kZW5maW5pdGVseSwgZXZlbiB3aXRoIHRlc3QgZGF0YSBpbmNsdWRlZAogbWFrZV9jaGVjaz1u bwoKRnJvbSA0MWM3YzliYmU2ODA3NTYyNTYxMDEyOTUxZWVhMjJmNmExOWVlMzY3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDE5OjU5OjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDcvMTE1XSBh Y3Rpb25hOiByZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0tLQogc3JjcGtncy9hY3Rpb25hL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hY3Rpb25hL3RlbXBsYXRlIGIvc3JjcGtncy9hY3Rp b25hL3RlbXBsYXRlCmluZGV4IGNmNWYwYjdhMmFlNjEuLjBkODk5MzExZTZkZjcgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2FjdGlvbmEvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhY3Rpb25hJwogcGtnbmFt ZT1hY3Rpb25hCiB2ZXJzaW9uPTMuMTAuMQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRf c3R5bGU9cW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSJQS0dDT05GSUdfT1BFTkNWPW9wZW5jdjQiCiBo b3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LXBsdWdpbi1teXNxbCBxdDUtcW1ha2UgcXQ1 LWhvc3QtdG9vbHMiCgpGcm9tIGYyOGRiMDQzZjEyYTk1NjViNTY4MDQ1YWMyOWEzODJjYTEwNDcz NWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENI IDAwOC8xMTVdIHFpbWd2OiByZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0tLQogc3JjcGtncy9x aW1ndi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUgYi9zcmNwa2dz L3FpbWd2L3RlbXBsYXRlCmluZGV4IDdlYjMwZGIzMzk5MmMuLmRkMzQxZGZlMWJmY2UgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xaW1ndi90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3FpbWd2JwogcGtnbmFtZT1x aW1ndgogdmVyc2lvbj0xLjAuMgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9 Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIkKHZvcHRfaWYgdmlkZW8gLURWSURFT19TVVBQT1JUPU9O IC1EVklERU9fU1VQUE9SVD1PRkYpCiAgJCh2b3B0X2lmIHNjYWxlIC1ET1BFTkNWX1NVUFBPUlQ9 T04gLURPUEVOQ1ZfU1VQUE9SVD1PRkYpCgpGcm9tIGE5ZGE1MDMwZjI3MTYyODRmNGRmZGI0YjY4 NmU4YjY3OTE2YjIyZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3Vi amVjdDogW1BBVENIIDAwOS8xMTVdIHJldHJvc2hhcmU6IHJldmJ1bXAgZm9yIG9wZW5jdi00Ljcu MAoKLS0tCiBzcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Jl dHJvc2hhcmUvdGVtcGxhdGUgYi9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKaW5kZXggYmIx NzU2OTI3N2E3Zi4uNDllMmMxY2JlOGE1MyAxMDA2NDQKLS0tIGEvc3JjcGtncy9yZXRyb3NoYXJl L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcmV0cm9zaGFyZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3JldHJvc2hhcmUnCiBwa2duYW1lPXJldHJvc2hhcmUK IHZlcnNpb249MC42LjYKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPXFtYWtl CiAjWFhYIGJyb2FkY2FzdCBmZWF0dXJlIHJlcXVpcmVzIGFuIGFuY2llbnQgdWRwLWRpc2NvdmVy eS1jcHAgd2hpY2ggZWl0aGVyIG5lZWRzCiAjIHRvIGJlIGZldGNoZWQrcGF0Y2hlZCAoRlRCRlMp IGhlcmUgb3IgcGFja2FnZWQgOi8KCkZyb20gMzliYTJmNDA5ODg1Yzg5NWNiNTVkM2M4NmQ2NTNk ZTg2ZWI1OGYzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDEwLzExNV0gd2FpZnUyeC1jb252ZXJ0ZXItY3BwOiByZXZidW1wIGZvciBvcGVu Y3YtNC43LjAKCi0tLQogc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3dhaWZ1MngtY29udmVydGVyLWNwcC90ZW1wbGF0ZSBiL3NyY3BrZ3Mv d2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRlCmluZGV4IDM2MWI4YTIzYjk0OTcuLmM1YWMx N2ViNTRlYTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnd2FpZnUyeC1jb252ZXJ0ZXItY3BwJwogcGtn bmFtZT13YWlmdTJ4LWNvbnZlcnRlci1jcHAKIHZlcnNpb249NS4yLjQKLXJldmlzaW9uPTIKK3Jl dmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURJTlNUQUxMX01P REVMUz1PTiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gODczMDBlN2Q0YzRi ZTNlYjU0NjhjODYxMjNkYWQ1YTE2YjI4YmI1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MDozOCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDExLzExNV0gdmxjOiByZXZidW1wIGZvciBmZm1w ZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvdmxjL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy92 bGMvdGVtcGxhdGUgYi9zcmNwa2dzL3ZsYy90ZW1wbGF0ZQppbmRleCBiZTU3OWNlMzhmZTM3Li4z OTc0Mjg5OTQ3NDAxIDEwMDY0NAotLS0gYS9zcmNwa2dzL3ZsYy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3ZsYy90ZW1wbGF0ZQpAQCAtMjUsNyArMjUsNyBAQCBsaWIzMmRpc2FibGVkPXllcwogaG9z dG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBsaWJ0b29sIHBrZy1jb25maWcgZmxleCBnZXR0ZXh0IGxp YmdjcnlwdC1kZXZlbAogIGxpdmU1NTUtZGV2ZWwgZ2V0dGV4dC1kZXZlbCAkKHZvcHRfaWYgbHVh IGx1YTUyKSAkKHZvcHRfaWYgY2hyb21lY2FzdCBwcm90b2J1ZikiCiBtYWtlZGVwZW5kcz0iCi0g YXZhaGktbGlicy1kZXZlbCBkYnVzLWdsaWItZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnLWRldmVs IGZyZWVmb250LXR0ZgorIGF2YWhpLWxpYnMtZGV2ZWwgZGJ1cy1nbGliLWRldmVsIGZhYWQyLWRl dmVsIGZmbXBlZzQtZGV2ZWwgZnJlZWZvbnQtdHRmCiAgZ251dGxzLWRldmVsIGphY2stZGV2ZWwg bGliYTUyLWRldmVsIGxpYmFzcy1kZXZlbCBsaWJibHVyYXktZGV2ZWwKICBsaWJjZGlvLWRldmVs IGxpYmRjYS1kZXZlbCBsaWJkdmJwc2ktZGV2ZWwgbGliZHZkbmF2LWRldmVsIGxpYm1hZC1kZXZl bAogIGxpYm1hdHJvc2thLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgbGlibXBjZGVjLWRldmVsIGxp Ym1wZWcyLWRldmVsCgpGcm9tIDY2MGUzMWViNDBjMmQ5N2E3N2I3NDNhMzRiYzgxZjZkYWViZDI4 M2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDA6NTUgLTA0MDAKU3ViamVjdDogW1BBVENI IDAxMi8xMTVdIG9zZzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL29z Zy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlIGIvc3JjcGtncy9vc2cv dGVtcGxhdGUKaW5kZXggYTllYmJkMjg3OTMzYi4uNzU1NzkzZjdlMTFiZiAxMDA2NDQKLS0tIGEv c3JjcGtncy9vc2cvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vc2cvdGVtcGxhdGUKQEAgLTgsNyAr OCw3IEBAIGJ1aWxkX2hlbHBlcj0icWVtdSIKIGNvbmZpZ3VyZV9hcmdzPSItRExJQl9QT1NURklY PSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyB4cmFuZHIiCiBtYWtlZGVwZW5kcz0iTWVz YUxpYi1kZXZlbCBndGtnbGV4dC1kZXZlbCBsaWJjdXJsLWRldmVsIGdpZmxpYi1kZXZlbCBsaWJy c3ZnLWRldmVsCi0gamFzcGVyLWRldmVsIHRpZmYtZGV2ZWwgbGliZ2RhbC1kZXZlbCBsaWJndGEt ZGV2ZWwgZmZtcGVnLWRldmVsIHhpbmUtbGliLWRldmVsCisgamFzcGVyLWRldmVsIHRpZmYtZGV2 ZWwgbGliZ2RhbC1kZXZlbCBsaWJndGEtZGV2ZWwgZmZtcGVnNC1kZXZlbCB4aW5lLWxpYi1kZXZl bAogIFNETDItZGV2ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwKICAkKHZvcHRfaWYgb3BlbmV4 ciBsaWJvcGVuZXhyLWRldmVsKQogICQodm9wdF9pZiBwb3BwbGVyIHBvcHBsZXItZ2xpYi1kZXZl bCkKCkZyb20gOGMxZTRlYWU0NTZkMWEwZmZjOWMyNDlmNTdkYTIzNzY2OTA2M2FhMiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMToxMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDEzLzExNV0g eGluZS1saWI6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy94aW5lLWxp Yi90ZW1wbGF0ZSB8IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAz IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MveGluZS1saWIvdGVtcGxhdGUgYi9z cmNwa2dzL3hpbmUtbGliL3RlbXBsYXRlCmluZGV4IGY3MTNlZmY0OWIwN2MuLmVkNjE5NGMxN2Qx MWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MveGluZS1saWIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy94 aW5lLWxpYi90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3hp bmUtbGliJwogcGtnbmFtZT14aW5lLWxpYgotdmVyc2lvbj0xLjIuMTIKK3ZlcnNpb249MS4yLjEz CiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0i LS1kaXNhYmxlLXZjZCAtLWRpc2FibGUtZ25vbWV2ZnMgLS13aXRob3V0LWVzb3VuZCAtLWRpc2Fi bGUtZHhyMwpAQCAtOCw3ICs4LDcgQEAgY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS12Y2QgLS1k aXNhYmxlLWdub21ldmZzIC0td2l0aG91dC1lc291bmQgLS1kaXNhYmxlLWR4cjMKIGhvc3RtYWtl ZGVwZW5kcz0iYXV0b21ha2UgZ2V0dGV4dC1kZXZlbCBsaWJ0b29sIHBrZy1jb25maWcgcGVybCIK IG1ha2VkZXBlbmRzPSIKICB6bGliLWRldmVsIGFsc2EtbGliLWRldmVsIGxpYnhjYi1kZXZlbCBs aWJTTS1kZXZlbCBsaWJYZXh0LWRldmVsIGxpYlh2LWRldmVsCi0gbGliWHZNQy1kZXZlbCBsaWJh NTItZGV2ZWwgbGlibWFkLWRldmVsIGZmbXBlZy1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCisgbGli WHZNQy1kZXZlbCBsaWJhNTItZGV2ZWwgbGlibWFkLWRldmVsIGZmbXBlZzQtZGV2ZWwgcHVsc2Vh dWRpby1kZXZlbAogIGphY2stZGV2ZWwgc2FtYmEtZGV2ZWwgbGliZmxhYy1kZXZlbCBsaWJtb2Rw bHVnLWRldmVsIGxpYm1wY2RlYy1kZXZlbAogIHNwZWV4LWRldmVsIGxpYnRoZW9yYS1kZXZlbCBs aWJ2b3JiaXMtZGV2ZWwgbGliZGNhLWRldmVsIGZhYWQyLWRldmVsCiAgbGliY2Rpby1kZXZlbCBs aWJibHVyYXktZGV2ZWwgYWFsaWItZGV2ZWwgbGliY2FjYS1kZXZlbCBsaWJYaW5lcmFtYS1kZXZl bApAQCAtMTksNyArMTksNyBAQCBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyLCBMR1BMLTIuMC1v ci1sYXRlciIKIGhvbWVwYWdlPSJodHRwOi8vd3d3LnhpbmUtcHJvamVjdC5vcmciCiBjaGFuZ2Vs b2c9Imh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3hpbmUvZmlsZXMveGluZS1saWIv JHt2ZXJzaW9ufS9SRUFETUUudHh0L3ZpZXciCiBkaXN0ZmlsZXM9IiR7U09VUkNFRk9SR0VfU0lU RX0veGluZS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09ZDYwNjI3MDQ2 OGUxNTQwYzJhODljMGQ3ZjVmZGYxMWUxN2VjYzBjMjY5OGNjMGJjYjEwNjVmZjI2YWJlZTA5OAor Y2hlY2tzdW09NWYxMGQ2ZDcxOGE0YTUxYzE3ZWQxYjMyYjAzMWQ0ZjliODBiMDYxZTgyNzY1MzVi MmJlMzFlNWFjNGI3NWU2ZgogCiBjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KIAlpNjg2 LW11c2wpCgpGcm9tIGNhYWI3NDRkMjIwMTQyYjE4N2UzMzM3NTMzMjBhMDA5ZDRmOWUzYWUgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNC8x MTVdIFFNUGxheTI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9RTVBsYXky L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9RTVBsYXkyL3RlbXBsYXRlIGIvc3JjcGtncy9R TVBsYXkyL3RlbXBsYXRlCmluZGV4IGE2M2UyNzFlZjgzYjguLjVlZTA0MTcxYjUxZTggMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvUU1QbGF5Mi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL1FNUGxheTIvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdRTVBsYXkyJwogcGtn bmFtZT1RTVBsYXkyCiB2ZXJzaW9uPTIzLjA5LjA1Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1xbWFrZSBx dDUtaG9zdC10b29scyIKIG1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWctZGV2ZWwg bGliYXNzLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGliZ21lLWRldmVsCgpGcm9tIGQ3MThiNjYyYmZh MzdjOGM0YmVmZDZhNzZmYzFmZDlmNWZkMjNiNzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNS8xMTVdIGFsc2EtcGx1Z2luczogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtncy9hbHNhLXBsdWdp bnMvdGVtcGxhdGUKaW5kZXggMGJmYTZkOWZkMjY0My4uYTU3MDhhN2Q4MmE4ZiAxMDA2NDQKLS0t IGEvc3JjcGtncy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hbHNhLXBsdWdp bnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhbHNhLXBs dWdpbnMnCiBwa2duYW1lPWFsc2EtcGx1Z2lucwogdmVyc2lvbj0xLjIuNy4xCi1yZXZpc2lvbj0x CityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0i LS1kaXNhYmxlLW1hZW1vLXBsdWdpbiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZy b20gYzNiOWM2MGIzYzY5NzQ1YWNjMDc3YjQyNDVmYmE4NmM1OTliODAxMyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE2LzExNV0gYXJjYW46 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9hcmNhbi90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvYXJjYW4vdGVtcGxhdGUgYi9zcmNwa2dzL2FyY2FuL3RlbXBsYXRlCmlu ZGV4IGVmZDBhZmUxMDU3NmQuLmI5MWU2OTAwZDQyYTEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXJj YW4vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hcmNhbi90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAK ICMgISEga2VlcCBzeW5jZWQgd2l0aDogYWNmZ2ZzIGFjbGlwIGFsb2FkaW1hZ2UKIHBrZ25hbWU9 YXJjYW4KIHZlcnNpb249MC42LjIuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogY3JlYXRlX3dy a3NyYz15ZXMKIGJ1aWxkX3dya3NyYz1hcmNhbi9zcmMKIGJ1aWxkX3N0eWxlPWNtYWtlCgpGcm9t IDkxNTA1YmVhZjljMWYwMDBlMGM3M2Q3MTgyNjZkZmQwMmY4NzNiZTEgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNy8xMTVdIGF0dHJhY3Q6 IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRl IHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXR0cmFjdC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXR0cmFj dC90ZW1wbGF0ZQppbmRleCAyNjE0NGU5MzFhM2M3Li5lNzYwYmYwZDE4YWVjIDEwMDY0NAotLS0g YS9zcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRl CkBAIC0xLDEyICsxLDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhdHRyYWN0JwogcGtnbmFt ZT1hdHRyYWN0CiB2ZXJzaW9uPTIuNi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9z dHlsZT1nbnUtbWFrZWZpbGUKIG1ha2VfYnVpbGRfYXJncz0iVkVSQk9TRT0xIgogbWFrZV91c2Vf ZW52PXllcwogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9IlNGTUwt ZGV2ZWwgZmZtcGVnLWRldmVsIGZvbnRjb25maWctZGV2ZWwgZ2x1LWRldmVsIGxpYmFyY2hpdmUt ZGV2ZWwKK21ha2VkZXBlbmRzPSJTRk1MLWRldmVsIGZmbXBlZzQtZGV2ZWwgZm9udGNvbmZpZy1k ZXZlbCBnbHUtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbAogIGxpYmN1cmwtZGV2ZWwgbGlianBlZy10 dXJiby1kZXZlbCB4aW5lLWxpYiByYXBpZGpzb24gbGliWHJhbmRyLWRldmVsIgogZGVwZW5kcz0i Z2l0Igogc2hvcnRfZGVzYz0iQXR0cmFjdC1Nb2RlIGlzIGEgZ3JhcGhpY2FsIGZyb250ZW5kIGZv ciBlbXVsYXRvcnMiCgpGcm9tIGIzYjYyMmU1NWQ4NzI0MTU3YjJhZWEzMzJlMjI2ZmRjZjdlOGQ1 NWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENI IDAxOC8xMTVdIGF1YmlvOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYXVi aW8vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgMjUgKysrKysrKysrKysrKysrKysrKysrKysrKwog c3JjcGtncy9hdWJpby90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFu Z2VkLCAyNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9hdWJpby9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2F1YmlvL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvYXViaW8vcGF0Y2hlcy9mZm1w ZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmFhY2U0 MWE2ZTZkOWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2F1YmlvL3BhdGNoZXMvZmZtcGVn NS5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIDhhMDU0MjBlNWRkOGM3YjhiMjQ0N2Y4MmRj OTE5NzY1ODc2NTExYjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEJyb3Nz aWVyIDxwaWVtQHBpZW0ub3JnPgorRGF0ZTogVHVlLCAyNSBKYW4gMjAyMiAxODozMDoyNyArMDEw MAorU3ViamVjdDogW1BBVENIXSBbc291cmNlX2F2Y29kZWNdIGRlZmluZSBGRl9BUElfTEFWRl9B VkNUWCBmb3IgbGliYXZjb2RlYyA+CisgNTksIHRoeCBAYmVyb2xpbnV4IChjbG9zZXMgZ2gtMzUz KQorCistLS0KKyBzcmMvaW8vc291cmNlX2F2Y29kZWMuYyB8IDQgKysrKworIDEgZmlsZSBjaGFu Z2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9pby9zb3VyY2VfYXZjb2Rl Yy5jIGIvc3JjL2lvL3NvdXJjZV9hdmNvZGVjLmMKK2luZGV4IGUwYWU5M2I1Li4xNDIxYmQ5YSAx MDA2NDQKKy0tLSBhL3NyYy9pby9zb3VyY2VfYXZjb2RlYy5jCisrKysgYi9zcmMvaW8vc291cmNl X2F2Y29kZWMuYworQEAgLTY4LDYgKzY4LDEwIEBACisgI2RlZmluZSBBVUJJT19BVkNPREVDX01B WF9CVUZGRVJfU0laRSBBVl9JTlBVVF9CVUZGRVJfTUlOX1NJWkUKKyAjZW5kaWYKKyAKKysjaWYg TElCQVZDT0RFQ19WRVJTSU9OX01BSk9SID49IDU5CisrI2RlZmluZSBGRl9BUElfTEFWRl9BVkNU WCAxCisrI2VuZGlmCisrCisgc3RydWN0IF9hdWJpb19zb3VyY2VfYXZjb2RlY190IHsKKyAgIHVp bnRfdCBob3Bfc2l6ZTsKKyAgIHVpbnRfdCBzYW1wbGVyYXRlOwpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9hdWJpby90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXViaW8vdGVtcGxhdGUKaW5kZXggYWQxYzRiMjU2 OTkxNy4uN2Q4NzVjYzAyNTQxYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9hdWJpby90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2F1YmlvL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnYXViaW8nCiBwa2duYW1lPWF1YmlvCiB2ZXJzaW9uPTAuNC45Ci1yZXZpc2lvbj0x CityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT13YWYzCiAjIFhYWCBsYXNoLCBwdXJlIGFuZCBzd2ln IHN1cHBvcnQuCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgdHh0Mm1hbiIKCkZyb20gMzgx MzFjYmJlMzBjZGQ5ZThlMDI1Y2ViMWRjNmU4YmEwMWI3YTBkOSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE5LzExNV0gYXVkYWNpb3VzLXBs dWdpbnM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL2F1ZGFjaW91cy1wbHVnaW5z L3BhdGNoZXMvZmZtcGVnNS5wYXRjaCAgIHwgNDMgKysrKysrKysrKysrKysrKysrKwogc3JjcGtn cy9hdWRhY2lvdXMtcGx1Z2lucy90ZW1wbGF0ZSAgICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMg Y2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gg Yi9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi40ZTVlMzQwOTlkNzFjCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0 Y2gKQEAgLTAsMCArMSw0MyBAQAorY29tbWl0IDI5OGFhMzcxYzU2YzJmNTJjMjVhMzNkOWJkZWM0 OTE4YjExY2ViZGMKK0F1dGhvcjogdGliZXF1YWRvcmlhbiA8dGliZXF1YWRvcmlhbkBwb3N0ZW8u ZGU+CitEYXRlOiAgIFNhdCBNYXIgMTkgMTg6NDA6MTIgMjAyMiArMDEwMAorCisgICAgYXVkYWNp b3VzLXBsdWdpbnM6IHJlYnVpbGQgYWdhaW5zdCBmZm1wZWctNS4wCisKK2RpZmYgLS1naXQgYS9z cmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnLTUuMC5wYXRjaCBiL3NyY3Br Z3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWctNS4wLnBhdGNoCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNjE3YzExMjE1YgorLS0tIC9kZXYvbnVsbAor KysrIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZy01LjAucGF0Y2gK K0BAIC0wLDAgKzEsMzEgQEAKKytGcm9tIGY2MGJlYjQwMGVlYjFlNDc3OGJiZmQ3MzhiYzRhNGNj ZWYzZGU1MzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCisrRnJvbTogSm9obiBMaW5kZ3JlbiA8 am9obkBqbGluZGdyZW4ubmV0PgorK0RhdGU6IFNhdCwgNSBNYXIgMjAyMiAxMjowNTozNCAtMDUw MAorK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggRkZtcGVnIDUuMAorKworKy0tLQor KyBzcmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUuY2MgfCA0ICsrLS0KKysgMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKysKKytkaWZmIC0tZ2l0IGEvc3JjL2Zm YXVkaW8vZmZhdWRpby1jb3JlLmNjIGIvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisraW5k ZXggMTZkYzYzZTNhLi5hMmI5NWZkNmMgMTAwNjQ0CisrLS0tIGEvc3JjL2ZmYXVkaW8vZmZhdWRp by1jb3JlLmNjCisrKysrIGIvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisrQEAgLTI3NCw3 ICsyNzQsNyBAQCBzdGF0aWMgQVZJbnB1dEZvcm1hdCAqIGdldF9mb3JtYXRfYnlfY29udGVudCAo Y29uc3QgY2hhciAqIG5hbWUsIFZGU0ZpbGUgJiBmaWxlKQorKyAgICAgICAgIEFWUHJvYmVEYXRh IGQgPSB7bmFtZSwgYnVmLCBmaWxsZWR9OworKyAgICAgICAgIHNjb3JlID0gdGFyZ2V0OworKyAK KystICAgICAgICBmID0gYXZfcHJvYmVfaW5wdXRfZm9ybWF0MiAoJiBkLCB0cnVlLCAmIHNjb3Jl KTsKKysrICAgICAgICBmID0gKEFWSW5wdXRGb3JtYXQgKikgYXZfcHJvYmVfaW5wdXRfZm9ybWF0 MiAoJiBkLCB0cnVlLCAmIHNjb3JlKTsKKysgICAgICAgICBpZiAoZikKKysgICAgICAgICAgICAg YnJlYWs7CisrIAorK0BAIC0zNDcsNyArMzQ3LDcgQEAgc3RhdGljIGJvb2wgZmluZF9jb2RlYyAo QVZGb3JtYXRDb250ZXh0ICogYywgQ29kZWNJbmZvICogY2luZm8pCisrICNlbmRpZgorKyAgICAg ICAgIGlmIChzdHJlYW0gJiYgc3RyZWFtLT5jb2RlY3BhciAmJiBzdHJlYW0tPmNvZGVjcGFyLT5j b2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTykKKysgICAgICAgICB7CisrLSAgICAgICAg ICAgIEFWQ29kZWMgKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyIChzdHJlYW0tPmNvZGVj cGFyLT5jb2RlY19pZCk7CisrKyAgICAgICAgICAgIEFWQ29kZWMgKiBjb2RlYyA9IChBVkNvZGVj ICopIGF2Y29kZWNfZmluZF9kZWNvZGVyIChzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCk7Cisr IAorKyAgICAgICAgICAgICBpZiAoY29kZWMpCisrICAgICAgICAgICAgIHsKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUgYi9zcmNwa2dzL2F1ZGFjaW91cy1w bHVnaW5zL3RlbXBsYXRlCmluZGV4IDg4Y2JjMTY3MWZjNmEuLmJlZWJmYWU1OWVkNDQgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9h dWRhY2lvdXMtcGx1Z2lucy90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKICNLZWVwIGluIHN5bmMg d2l0aCBhdWRhY2lvdXMhCiBwa2duYW1lPWF1ZGFjaW91cy1wbHVnaW5zCiB2ZXJzaW9uPTQuMy4x Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2Fy Z3M9IiQodm9wdF9ib29sIGd0azMgZ3RrKSAkKHZvcHRfYm9vbCBndGszKQogICQodm9wdF9ib29s IHF0KSAkKHZvcHRfYm9vbCBxdCBxdDYpIgoKRnJvbSAxNmZhNmQwOWJlZTM4NjViOWI0ZWEwM2I3 NzE1YjdiYTFkNTc2M2FjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwMjAvMTE1XSBhdWRhY2l0eTogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQu MwoKLS0tCiBzcmNwa2dzL2F1ZGFjaXR5L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdl ZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv YXVkYWNpdHkvdGVtcGxhdGUgYi9zcmNwa2dzL2F1ZGFjaXR5L3RlbXBsYXRlCmluZGV4IDczMzE0 ZTYyMzJiZDYuLmRmMjZkYjFjMTU4NzMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXVkYWNpdHkvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ2F1ZGFjaXR5JwogcGtnbmFtZT1hdWRhY2l0eQogdmVyc2lvbj0z LjMuMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGJ1aWxkX2hl bHBlcj0iY21ha2Utd3hXaWRnZXRzLWd0azMgcWVtdSIKIGNvbmZpZ3VyZV9hcmdzPSItRGF1ZGFj aXR5X3VzZV9mZm1wZWc9bG9hZGVkIC1EYXVkYWNpdHlfbGliX3ByZWZlcmVuY2U9c3lzdGVtCkBA IC0xMCw3ICsxMCw3IEBAIGNvbmZpZ3VyZV9hcmdzPSItRGF1ZGFjaXR5X3VzZV9mZm1wZWc9bG9h ZGVkIC1EYXVkYWNpdHlfbGliX3ByZWZlcmVuY2U9c3lzdGVtCiAgLURhdWRhY2l0eV9oYXNfdnN0 Mz1ubyIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBnZXR0ZXh0IHB5dGhvbjMiCiBtYWtl ZGVwZW5kcz0id3hXaWRnZXRzLWd0azMtZGV2ZWwgZ3RrKzMtZGV2ZWwgZXhwYXQtZGV2ZWwgbGFt ZS1kZXZlbAotIGxpYnNveHItZGV2ZWwgcG9ydGF1ZGlvLWRldmVsIHNxbGl0ZS1kZXZlbCBsaWJj dXJsLWRldmVsIGZmbXBlZy1kZXZlbAorIGxpYnNveHItZGV2ZWwgcG9ydGF1ZGlvLWRldmVsIHNx bGl0ZS1kZXZlbCBsaWJjdXJsLWRldmVsIGZmbXBlZzQtZGV2ZWwKICBsaWJpZDN0YWctZGV2ZWwg bGlibWFkLWRldmVsIHZhbXAtcGx1Z2luLXNkay1kZXZlbCBsaWJvZ2ctZGV2ZWwKICBsaWJ2b3Ji aXMtZGV2ZWwgbGliZmxhYy1kZXZlbCBsaWx2LWRldmVsIGx2MiBzZXJkLWRldmVsIHNvcmQtZGV2 ZWwKICBzcmF0b20tZGV2ZWwgc3VpbC1kZXZlbCBwb3J0bWlkaS1kZXZlbCBzb3VuZHRvdWNoLWRl dmVsIHR3b2xhbWUtZGV2ZWwKCkZyb20gY2U5OThiYjZmM2YwOGQ4ZGQ4YzQzZTViMTU1NWM1NmU0 MzIxODE5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDIxLzExNV0gYXZpZGVtdXg6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9hdmlkZW11eC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxh dGUgYi9zcmNwa2dzL2F2aWRlbXV4L3RlbXBsYXRlCmluZGV4IDI1M2EwMjQzZTIyNTkuLjU1NzI4 NTk4MmQyYjggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9hdmlkZW11eC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ2F2aWRlbXV4JwogcGtnbmFtZT1hdmlkZW11eAogdmVyc2lvbj0yLjguMAotcmV2aXNpb249 MgorcmV2aXNpb249MwogIyBDYW4ndCBiZSBjb21waWxlZCBmb3IgYWFyY2g2NCwgYXJtKiBvciBt aXBzKgogYXJjaHM9Ing4Nl82NCogaTY4NioiCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHBrZy1j b25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LWRldmVsIHRhciB5YXNtIgoKRnJvbSA3NWFkNWYzNTk4 NzlhNzUyMDEyY2FhOTlmNmE0NmM0NGYzODZlNzg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjIvMTE1XSBibGVuZGVyOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYmxlbmRlci90ZW1wbGF0ZSB8IDQgKystLQogMSBm aWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUKaW5k ZXggZmM2YmQ1ZmUyNWNlMC4uZWVhODk3ZDgyOGE3NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9ibGVu ZGVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYmxlbmRlci90ZW1wbGF0ZQpAQCAtOSw4ICs5LDgg QEAgY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9JTlNUQUxMX1BPUlRBQkxFPU9GRiAtRFdJVEhfUFlU SE9OX0lOU1RBTEw9T0ZGCiAgLURXSVRIX0pBQ0s9T04gLURXSVRIX0NPREVDX0ZGTVBFRz1PTiAt RFdJVEhfQ09ERUNfU05ERklMRT1PTiAtRFdJVEhfT1BFTk1QPU9OCiAgLURXSVRIX0ZGVFczPU9O IC1EV0lUSF9NT0RfT0NFQU5TSU09T04gLURXSVRIX0NZQ0xFU19FTUJSRUU9T0ZGIC1EV0lUSF9P UEVOQ09MT1JJTz1PTgogIC1EV0lUSF9JTUFHRV9PUEVORVhSPU9OIC1EV0lUSF9JTUFHRV9PUEVO SlBFRz1PTiAtRFdJVEhfT1BFTlNVQkRJVj1PTgotIC1EV0lUSF9PUEVOQ09MTEFEQT1PTiAtRFdJ VEhfU1lTVEVNX0dMRVc9T04gLURXSVRIX09QRU5WREI9T04gLURXSVRIX0FMRU1CSUM9T04KLSAt RFdJVEhfR0hPU1RfWDExPU9OIC1EV0lUSF9HSE9TVF9XQVlMQU5EPU9OIC1EV0lUSF9HSE9TVF9M SUJERUNPUj1PTgorIC1EV0lUSF9PUEVOQ09MTEFEQT1PTiAtRFdJVEhfT1BFTlZEQj1PTiAtRFdJ VEhfQUxFTUJJQz1PTgorIC1EV0lUSF9HSE9TVF9YMTE9T04gLURXSVRIX0dIT1NUX1dBWUxBTkQ9 T04gLURXSVRIX0dIT1NUX1dBWUxBTkRfTElCREVDT1I9T04KICAtRFdJVEhfQlVJTERJTkZPPU9G RiAtRFBZVEhPTl9WRVJTSU9OPSR7cHkzX3Zlcn0gLURQWVRIT05fTElCUEFUSD0vdXNyL2xpYgog IC1EUFlUSE9OX0xJQlJBUlk9cHl0aG9uJHtweTNfdmVyfSR7cHkzX2FiaXZlcn0gLURQWVRIT05f SU5DTFVERV9ESVJTPS8ke3B5M19pbmN9CiAgLURXSVRIX1NZU1RFTV9MWk89T04gLURXSVRIX1NZ U1RFTV9FSUdFTjM9T04gLURXSVRIX1NZU1RFTV9GUkVFVFlQRT1PTiIKCkZyb20gNzI1NGY2OWQ5 OTJjYjBhM2MxZGQ1OTNmOGExOWI2NDA3Mjk4YWY1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDIzLzExNV0gY2FudGF0YTogcmV2YnVtcCBm b3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2NhbnRhdGEvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2NhbnRhdGEvdGVtcGxhdGUgYi9zcmNwa2dzL2NhbnRhdGEvdGVtcGxhdGUKaW5kZXgg NGI0MTdkODBkNWMyZC4uOGE5MGFhYTRjMDdhMiAxMDA2NDQKLS0tIGEvc3JjcGtncy9jYW50YXRh L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY2FudGF0YS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2NhbnRhdGEnCiBwa2duYW1lPWNhbnRhdGEKIHZlcnNpb249 Mi41LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIHF0NS10b29scyIK IG1ha2VkZXBlbmRzPSJxdDUtZGV2ZWwgcXQ1LXRvb2xzLWRldmVsIHF0NS1zdmctZGV2ZWwgcXQ1 LXhtbHBhdHRlcm5zLWRldmVsCgpGcm9tIDg1Y2Y0MzdlNGJiMDRhOTdlYjBlYWZlNDdkYmE3NjI3 MjUwODk5N2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDog W1BBVENIIDAyNC8xMTVdIGNjZXh0cmFjdG9yOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgot LS0KIHNyY3BrZ3MvY2NleHRyYWN0b3IvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9j Y2V4dHJhY3Rvci90ZW1wbGF0ZSBiL3NyY3BrZ3MvY2NleHRyYWN0b3IvdGVtcGxhdGUKaW5kZXgg OWFiY2Q4Mjg1MmIyNy4uNmVjY2FkNTg4NWFmOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9jY2V4dHJh Y3Rvci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NjZXh0cmFjdG9yL3RlbXBsYXRlCkBAIC0xLDEy ICsxLDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjY2V4dHJhY3RvcicKIHBrZ25hbWU9Y2Nl eHRyYWN0b3IKIHZlcnNpb249MC45MwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfd3Jr c3JjPSJsaW51eCIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIt LWVuYWJsZS1vY3IgLS1lbmFibGUtaGFyZHN1YngiCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtl IHBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0ibGVwdG9uaWNhLWRldmVsIHRlc3NlcmFjdC1vY3It ZGV2ZWwgZmZtcGVnLWRldmVsIgorbWFrZWRlcGVuZHM9ImxlcHRvbmljYS1kZXZlbCB0ZXNzZXJh Y3Qtb2NyLWRldmVsIGZmbXBlZzQtZGV2ZWwiCiBzaG9ydF9kZXNjPSJFeHRyYWN0IHN1YnRpdGxl cyBmcm9tIHZpZGVvIHN0cmVhbXMiCiBtYWludGFpbmVyPSJuZXdibHVlbW9vbiA8YmxhdW1vbGNo QG1haWxib3gub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCgpGcm9tIGI2ZWJlMWQz NWNkZjkxY2Y2M2FmNmMxN2FlOGZkNmE0NDQ1MWY2N2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyNS8xMTVdIGNocm9tYXByaW50OiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1w ZWc1LnBhdGNoIHwgNTY5ICsrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvY2hyb21hcHJp bnQvdGVtcGxhdGUgICAgICAgICAgICAgIHwgICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDU3MCBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9j aHJvbWFwcmludC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2No cm9tYXByaW50L3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvY2hyb21hcHJpbnQvcGF0 Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MDAuLmE5ZmQzMDdhMjNjOGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2Nocm9tYXByaW50 L3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDU2OSBAQAorRnJvbSA4Y2NhZDY5Mzcx NzdiMWI5MmU0MGFiOGY0NDQ3ZWEyN2JhYzAwOWE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogPT9VVEYtOD9xP0x1az1DMz1BMT1DNT1BMT0yMExhbGluc2s9QzM9QkQ/PSA8bGFsaW5z a3lAZ21haWwuY29tPgorRGF0ZTogRnJpLCA0IE5vdiAyMDIyIDIxOjQ3OjM4ICswMTAwCitTdWJq ZWN0OiBbUEFUQ0hdIFVzZSBGRm1wZWcgNS54ICgjMTIwKQorCisqIFVzZSBGRm1wZWcgNS4xLjIg Zm9yIENJIGJ1aWxkcworCisqIEJ1aWxkIG9uIFVidW50dSAyMC4wNAorCisqIFVwZ3JhZGUgY29k ZSB0byBGRm1wZWcgNS54IEFQSXMKKworKiBPbmx5IHNldCBGRm1wZWcgaW5jbHVkZSBkaXJzIGlm IGJ1aWxkaW5nIHRvb2xzCisKKyogTm8gbG9uZ2VyIG5lZWRlZAorCisqIFVzZSB1YnVudHUgMjAu MDQKKy0tLQorIC5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnltbCAgICAgICAgICAgICAgICAgICB8 ICAgNiArLQorIENNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAxNiAtLQorIHBhY2thZ2UvYnVpbGQuc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgNCArLQorIHNyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmggICAgICAgICAgICB8 ICAgMiAtCisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oIHwg IDcyIC0tLS0tLS0KKyBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxl LmggfCAgMTggKy0KKyBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRlci5oICAgICAgICAgICAg ICAgfCAxOTcgKysrKysrKysrLS0tLS0tLS0tCisgdGVzdHMvQ01ha2VMaXN0cy50eHQgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICA2ICsKKyA4IGZpbGVzIGNoYW5nZWQsIDEyMiBpbnNlcnRp b25zKCspLCAxOTkgZGVsZXRpb25zKC0pCisgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9hdWRpby9m Zm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaAorCitkaWZmIC0tZ2l0IGEvQ01ha2VM aXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggZjhkNmEzMi4uNGRhMjQwNSAxMDA2NDQK Ky0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTg0LDkgKzg0 LDYgQEAgZmluZF9wYWNrYWdlKEZGbXBlZykKKyBpZihGRk1QRUdfTElCUkFSSUVTKQorIAljbWFr ZV9wdXNoX2NoZWNrX3N0YXRlKFJFU0VUKQorIAlzZXQoQ01BS0VfUkVRVUlSRURfTElCUkFSSUVT ICR7RkZNUEVHX0xJQlJBUklFU30gJHtDTUFLRV9USFJFQURfTElCU19JTklUfSAtbG0pCistCWNo ZWNrX2Z1bmN0aW9uX2V4aXN0cyhhdl9wYWNrZXRfdW5yZWYgSEFWRV9BVl9QQUNLRVRfVU5SRUYp CistCWNoZWNrX2Z1bmN0aW9uX2V4aXN0cyhhdl9mcmFtZV9hbGxvYyBIQVZFX0FWX0ZSQU1FX0FM TE9DKQorLQljaGVja19mdW5jdGlvbl9leGlzdHMoYXZfZnJhbWVfZnJlZSBIQVZFX0FWX0ZSQU1F X0ZSRUUpCisgCWNtYWtlX3BvcF9jaGVja19zdGF0ZSgpCisgZW5kaWYoKQorCitAQCAtMTYzLDE0 ICsxNjAsMTEgQEAgbWVzc2FnZShTVEFUVVMgIlVzaW5nICR7RkZUX0xJQn0gZm9yIEZGVCBjYWxj dWxhdGlvbnMiKQorIGlmKE5PVCBBVURJT19QUk9DRVNTT1JfTElCKQorIAlpZihGRk1QRUdfTElC U1dSRVNBTVBMRV9GT1VORCkKKyAJCXNldChBVURJT19QUk9DRVNTT1JfTElCICJzd3Jlc2FtcGxl IikKKy0JZWxzZWlmKEZGTVBFR19MSUJBVlJFU0FNUExFX0ZPVU5EKQorLQkJc2V0KEFVRElPX1BS T0NFU1NPUl9MSUIgImF2cmVzYW1wbGUiKQorIAllbmRpZigpCisgZW5kaWYoKQorCisgaWYoQVVE SU9fUFJPQ0VTU09SX0xJQiBTVFJFUVVBTCAic3dyZXNhbXBsZSIpCisgCWlmKEZGTVBFR19MSUJT V1JFU0FNUExFX0ZPVU5EKQorLQkJc2V0KFVTRV9BVlJFU0FNUExFIE9GRikKKyAJCXNldChVU0Vf U1dSRVNBTVBMRSBPTikKKyAJCXNldChBVURJT19QUk9DRVNTT1JfTElCUkFSSUVTICR7RkZNUEVH X0xJQlNXUkVTQU1QTEVfTElCUkFSSUVTfSkKKyAJCXNldChBVURJT19QUk9DRVNTT1JfSU5DTFVE RV9ESVJTICR7RkZNUEVHX0xJQlNXUkVTQU1QTEVfSU5DTFVERV9ESVJTfSkKK0BAIC0xNzgsMTYg KzE3Miw2IEBAIGlmKEFVRElPX1BST0NFU1NPUl9MSUIgU1RSRVFVQUwgInN3cmVzYW1wbGUiKQor IAkJbWVzc2FnZShGQVRBTF9FUlJPUiAiU2VsZWN0ZWQgJHtBVURJT19QUk9DRVNTT1JfTElCfSBm b3IgYXVkaW8gcHJvY2Vzc2luZywgYnV0IHRoZSBsaWJyYXJ5IGlzIG5vdCBmb3VuZCIpCisgCWVu ZGlmKCkKKyAJbWVzc2FnZShTVEFUVVMgIlVzaW5nICR7QVVESU9fUFJPQ0VTU09SX0xJQn0gZm9y IGF1ZGlvIGNvbnZlcnNpb24iKQorLWVsc2VpZihBVURJT19QUk9DRVNTT1JfTElCIFNUUkVRVUFM ICJhdnJlc2FtcGxlIikKKy0JaWYoRkZNUEVHX0xJQkFWUkVTQU1QTEVfRk9VTkQpCistCQlzZXQo VVNFX0FWUkVTQU1QTEUgT04pCistCQlzZXQoVVNFX1NXUkVTQU1QTEUgT0ZGKQorLQkJc2V0KEFV RElPX1BST0NFU1NPUl9MSUJSQVJJRVMgJHtGRk1QRUdfTElCQVZSRVNBTVBMRV9MSUJSQVJJRVN9 KQorLQkJc2V0KEFVRElPX1BST0NFU1NPUl9JTkNMVURFX0RJUlMgJHtGRk1QRUdfTElCQVZSRVNB TVBMRV9JTkNMVURFX0RJUlN9KQorLQllbHNlKCkKKy0JCW1lc3NhZ2UoRkFUQUxfRVJST1IgIlNl bGVjdGVkICR7QVVESU9fUFJPQ0VTU09SX0xJQn0gZm9yIGF1ZGlvIHByb2Nlc3NpbmcsIGJ1dCB0 aGUgbGlicmFyeSBpcyBub3QgZm91bmQiKQorLQllbmRpZigpCistCW1lc3NhZ2UoU1RBVFVTICJV c2luZyAke0FVRElPX1BST0NFU1NPUl9MSUJ9IGZvciBhdWRpbyBjb252ZXJzaW9uIikKKyBlbHNl KCkKKyAJbWVzc2FnZShTVEFUVVMgIkJ1aWxkaW5nIHdpdGhvdXQgYXVkaW8gY29udmVyc2lvbiBz dXBwb3J0LCBwbGVhc2UgaW5zdGFsbCBGRm1wZWcgd2l0aCBsaWJzd3Jlc2FtcGxlIikKKyBlbmRp ZigpCitkaWZmIC0tZ2l0IGEvcGFja2FnZS9idWlsZC5zaCBiL3BhY2thZ2UvYnVpbGQuc2gKK2lu ZGV4IGRhNjMxYWUuLmI0MWQzNmUgMTAwNzU1CistLS0gYS9wYWNrYWdlL2J1aWxkLnNoCisrKysg Yi9wYWNrYWdlL2J1aWxkLnNoCitAQCAtNyw4ICs3LDggQEAgc2V0IC1ldXgKKworIEJBU0VfRElS PSQoY2QgJChkaXJuYW1lICQwKS8uLiAmJiBwd2QpCisKKy1GRk1QRUdfVkVSU0lPTj00LjQuMQor LUZGTVBFR19CVUlMRF9UQUc9djQuNC4xLTEKKytGRk1QRUdfVkVSU0lPTj01LjEuMgorK0ZGTVBF R19CVUlMRF9UQUc9diR7RkZNUEVHX1ZFUlNJT059LTEKKworIFRNUF9CVUlMRF9ESVI9JEJBU0Vf RElSLyQobWt0ZW1wIC1kIGJ1aWxkLlhYWFhYWFhYKQorIHRyYXAgJ3JtIC1yZiAkVE1QX0JVSUxE X0RJUicgRVhJVAorZGlmZiAtLWdpdCBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29y LmggYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oCitpbmRleCA3NjI4ZmM3Li4z OWY0ZjZkIDEwMDY0NAorLS0tIGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaAor KysrIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaAorQEAgLTEwLDggKzEwLDYg QEAKKworICNpZiBkZWZpbmVkKFVTRV9TV1JFU0FNUExFKQorICNpbmNsdWRlICJhdWRpby9mZm1w ZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaCIKKy0jZWxpZiBkZWZpbmVkKFVTRV9BVlJF U0FNUExFKQorLSNpbmNsdWRlICJhdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1w bGUuaCIKKyAjZWxzZQorICNlcnJvciAibm8gYXVkaW8gcHJvY2Vzc2luZyBsaWJyYXJ5IgorICNl bmRpZgorZGlmZiAtLWdpdCBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVz YW1wbGUuaCBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaAor ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCBiZDg1ZjkyLi4wMDAwMDAwCistLS0gYS9z cmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgKKysrKyAvZGV2L251 bGwKK0BAIC0xLDcyICswLDAgQEAKKy0vLyBDb3B5cmlnaHQgKEMpIDIwMTYgIEx1a2FzIExhbGlu c2t5CistLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLCBzZWUgdGhlIExJQ0VO U0UgZmlsZSBmb3IgZGV0YWlscy4KKy0KKy0jaWZuZGVmIENIUk9NQVBSSU5UX0FVRElPX0ZGTVBF R19BVURJT19QUk9DRVNTT1JfQVZSRVNBTVBMRV9IXworLSNkZWZpbmUgQ0hST01BUFJJTlRfQVVE SU9fRkZNUEVHX0FVRElPX1BST0NFU1NPUl9BVlJFU0FNUExFX0hfCistCistZXh0ZXJuICJDIiB7 CistI2luY2x1ZGUgPGxpYmF2cmVzYW1wbGUvYXZyZXNhbXBsZS5oPgorLX0KKy0KKy1uYW1lc3Bh Y2UgY2hyb21hcHJpbnQgeworLQorLWNsYXNzIEZGbXBlZ0F1ZGlvUHJvY2Vzc29yIHsKKy1wdWJs aWM6CistCUZGbXBlZ0F1ZGlvUHJvY2Vzc29yKCkgeworLQkJbV9yZXNhbXBsZV9jdHggPSBhdnJl c2FtcGxlX2FsbG9jX2NvbnRleHQoKTsKKy0JfQorLQorLQl+RkZtcGVnQXVkaW9Qcm9jZXNzb3Io KSB7CistCQlhdnJlc2FtcGxlX2ZyZWUoJm1fcmVzYW1wbGVfY3R4KTsKKy0JfQorLQorLQl2b2lk IFNldENvbXBhdGlibGVNb2RlKCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgs ICJmaWx0ZXJfc2l6ZSIsIDE2LCAwKTsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4 LCAicGhhc2Vfc2hpZnQiLCA4LCAwKTsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4 LCAibGluZWFyX2ludGVycCIsIDEsIDApOworLQkJYXZfb3B0X3NldF9kb3VibGUobV9yZXNhbXBs ZV9jdHgsICJjdXRvZmYiLCAwLjgsIDApOworLQl9CistCistCXZvaWQgU2V0SW5wdXRDaGFubmVs TGF5b3V0KGludDY0X3QgY2hhbm5lbF9sYXlvdXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVz YW1wbGVfY3R4LCAiaW5fY2hhbm5lbF9sYXlvdXQiLCBjaGFubmVsX2xheW91dCwgMCk7CistCX0K Ky0KKy0Jdm9pZCBTZXRJbnB1dFNhbXBsZUZvcm1hdChBVlNhbXBsZUZvcm1hdCBzYW1wbGVfZm9y bWF0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImluX3NhbXBsZV9mbXQi LCBzYW1wbGVfZm9ybWF0LCAwKTsKKy0JfQorLQorLQl2b2lkIFNldElucHV0U2FtcGxlUmF0ZShp bnQgc2FtcGxlX3JhdGUpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAiaW5f c2FtcGxlX3JhdGUiLCBzYW1wbGVfcmF0ZSwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRPdXRwdXRD aGFubmVsTGF5b3V0KGludDY0X3QgY2hhbm5lbF9sYXlvdXQpIHsKKy0JCWF2X29wdF9zZXRfaW50 KG1fcmVzYW1wbGVfY3R4LCAib3V0X2NoYW5uZWxfbGF5b3V0IiwgY2hhbm5lbF9sYXlvdXQsIDAp OworLQl9CistCistCXZvaWQgU2V0T3V0cHV0U2FtcGxlRm9ybWF0KEFWU2FtcGxlRm9ybWF0IHNh bXBsZV9mb3JtYXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAib3V0X3Nh bXBsZV9mbXQiLCBzYW1wbGVfZm9ybWF0LCAwKTsKKy0JfQorLQorLQl2b2lkIFNldE91dHB1dFNh bXBsZVJhdGUoaW50IHNhbXBsZV9yYXRlKSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxl X2N0eCwgIm91dF9zYW1wbGVfZm10Iiwgc2FtcGxlX3JhdGUsIDApOworLQl9CistCistCWludCBJ bml0KCkgeworLQkJcmV0dXJuIGF2cmVzYW1wbGVfb3BlbihtX3Jlc2FtcGxlX2N0eCk7CistCX0K Ky0KKy0JaW50IENvbnZlcnQodWludDhfdCAqKm91dCwgaW50IG91dF9jb3VudCwgY29uc3QgdWlu dDhfdCAqKmluLCBpbnQgaW5fY291bnQpIHsKKy0JCXJldHVybiBhdnJlc2FtcGxlX2NvbnZlcnQo bV9yZXNhbXBsZV9jdHgsIG91dCwgMCwgb3V0X2NvdW50LCAodWludDhfdCAqKikgaW4sIDAsIGlu X2NvdW50KTsKKy0JfQorLQorLQlpbnQgRmx1c2godWludDhfdCAqKm91dCwgaW50IG91dF9jb3Vu dCkgeworLQkJcmV0dXJuIGF2cmVzYW1wbGVfcmVhZChtX3Jlc2FtcGxlX2N0eCwgb3V0LCBvdXRf Y291bnQpOworLQl9CistCistcHJpdmF0ZToKKy0JQVZBdWRpb1Jlc2FtcGxlQ29udGV4dCAqbV9y ZXNhbXBsZV9jdHggPSBudWxscHRyOworLX07CistCistfTsgLy8gbmFtZXNwYWNlIGNocm9tYXBy aW50CistCistI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9j ZXNzb3Jfc3dyZXNhbXBsZS5oIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dy ZXNhbXBsZS5oCitpbmRleCBiODYyNjZiLi5iMWQ0YmVhIDEwMDY0NAorLS0tIGEvc3JjL2F1ZGlv L2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oCisrKysgYi9zcmMvYXVkaW8vZmZt cGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmgKK0BAIC0yOCwzMCArMjgsMjggQEAgcHVi bGljOgorIAkJYXZfb3B0X3NldF9kb3VibGUobV9zd3JfY3R4LCAiY3V0b2ZmIiwgMC44LCAwKTsK KyAJfQorCistCXZvaWQgU2V0SW5wdXRDaGFubmVsTGF5b3V0KGludDY0X3QgY2hhbm5lbF9sYXlv dXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImljbCIsIGNoYW5uZWxfbGF5b3V0 LCAwKTsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImljaCIsIGF2X2dldF9jaGFubmVs X2xheW91dF9uYl9jaGFubmVscyhjaGFubmVsX2xheW91dCksIDApOworKwl2b2lkIFNldElucHV0 Q2hhbm5lbExheW91dChBVkNoYW5uZWxMYXlvdXQgKmNoYW5uZWxfbGF5b3V0KSB7CisrCQlhdl9v cHRfc2V0X2ludChtX3N3cl9jdHgsICJpbl9jaGFubmVsX2xheW91dCIsIGNoYW5uZWxfbGF5b3V0 LT51Lm1hc2ssIDApOworIAl9CisKKyAJdm9pZCBTZXRJbnB1dFNhbXBsZUZvcm1hdChBVlNhbXBs ZUZvcm1hdCBzYW1wbGVfZm9ybWF0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJp c2YiLCBzYW1wbGVfZm9ybWF0LCAwKTsKKysJCWF2X29wdF9zZXRfc2FtcGxlX2ZtdChtX3N3cl9j dHgsICJpbl9zYW1wbGVfZm10Iiwgc2FtcGxlX2Zvcm1hdCwgMCk7CisgCX0KKworIAl2b2lkIFNl dElucHV0U2FtcGxlUmF0ZShpbnQgc2FtcGxlX3JhdGUpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1f c3dyX2N0eCwgImlzciIsIHNhbXBsZV9yYXRlLCAwKTsKKysJCWF2X29wdF9zZXRfaW50KG1fc3dy X2N0eCwgImluX3NhbXBsZV9yYXRlIiwgc2FtcGxlX3JhdGUsIDApOworIAl9CisKKy0Jdm9pZCBT ZXRPdXRwdXRDaGFubmVsTGF5b3V0KGludDY0X3QgY2hhbm5lbF9sYXlvdXQpIHsKKy0JCWF2X29w dF9zZXRfaW50KG1fc3dyX2N0eCwgIm9jbCIsIGNoYW5uZWxfbGF5b3V0LCAwKTsKKy0JCWF2X29w dF9zZXRfaW50KG1fc3dyX2N0eCwgIm9jaCIsIGF2X2dldF9jaGFubmVsX2xheW91dF9uYl9jaGFu bmVscyhjaGFubmVsX2xheW91dCksIDApOworKwl2b2lkIFNldE91dHB1dENoYW5uZWxMYXlvdXQo QVZDaGFubmVsTGF5b3V0ICpjaGFubmVsX2xheW91dCkgeworKwkJYXZfb3B0X3NldF9pbnQobV9z d3JfY3R4LCAib3V0X2NoYW5uZWxfbGF5b3V0IiwgY2hhbm5lbF9sYXlvdXQtPnUubWFzaywgMCk7 CisgCX0KKworIAl2b2lkIFNldE91dHB1dFNhbXBsZUZvcm1hdChBVlNhbXBsZUZvcm1hdCBzYW1w bGVfZm9ybWF0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJvc2YiLCBzYW1wbGVf Zm9ybWF0LCAwKTsKKysJCWF2X29wdF9zZXRfc2FtcGxlX2ZtdChtX3N3cl9jdHgsICJvdXRfc2Ft cGxlX2ZtdCIsIHNhbXBsZV9mb3JtYXQsIDApOworIAl9CisKKyAJdm9pZCBTZXRPdXRwdXRTYW1w bGVSYXRlKGludCBzYW1wbGVfcmF0ZSkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAi b3NyIiwgc2FtcGxlX3JhdGUsIDApOworKwkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib3V0 X3NhbXBsZV9yYXRlIiwgc2FtcGxlX3JhdGUsIDApOworIAl9CisKKyAJaW50IEluaXQoKSB7Citk aWZmIC0tZ2l0IGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaCBiL3NyYy9hdWRpby9m Zm1wZWdfYXVkaW9fcmVhZGVyLmgKK2luZGV4IDU1NTAxNjQuLjFjNmIzNDYgMTAwNjQ0CistLS0g YS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRlci5oCisrKysgYi9zcmMvYXVkaW8vZmZtcGVn X2F1ZGlvX3JlYWRlci5oCitAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CisgCWJvb2wgUmVhZChj b25zdCBpbnQxNl90ICoqZGF0YSwgc2l6ZV90ICpzaXplKTsKKworIAlib29sIElzT3BlbigpIGNv bnN0IHsgcmV0dXJuIG1fb3BlbmVkOyB9CistCWJvb2wgSXNGaW5pc2hlZCgpIGNvbnN0IHsgcmV0 dXJuIG1fZmluaXNoZWQgJiYgIW1fZ290X2ZyYW1lOyB9CisrCWJvb2wgSXNGaW5pc2hlZCgpIGNv bnN0IHsgcmV0dXJuICFtX2hhc19tb3JlX3BhY2tldHMgJiYgIW1faGFzX21vcmVfZnJhbWVzOyB9 CisKKyAJc3RkOjpzdHJpbmcgR2V0RXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9Cisg CWludCBHZXRFcnJvckNvZGUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yX2NvZGU7IH0KK0BAIC03 NCwyMCArNzQsMTkgQEAgcHJpdmF0ZToKKyAJdWludDhfdCAqbV9jb252ZXJ0X2J1ZmZlclsxXSA9 IHsgbnVsbHB0ciB9OworIAlpbnQgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzID0gMDsKKwor LQlBVklucHV0Rm9ybWF0ICptX2lucHV0X2ZtdCA9IG51bGxwdHI7CisrCWNvbnN0IEFWSW5wdXRG b3JtYXQgKm1faW5wdXRfZm10ID0gbnVsbHB0cjsKKyAJQVZEaWN0aW9uYXJ5ICptX2lucHV0X29w dHMgPSBudWxscHRyOworCisgCUFWRm9ybWF0Q29udGV4dCAqbV9mb3JtYXRfY3R4ID0gbnVsbHB0 cjsKKyAJQVZDb2RlY0NvbnRleHQgKm1fY29kZWNfY3R4ID0gbnVsbHB0cjsKKy0JQVZGcmFtZSAq bV9mcmFtZSA9IG51bGxwdHI7CisgCWludCBtX3N0cmVhbV9pbmRleCA9IC0xOworIAlzdGQ6OnN0 cmluZyBtX2Vycm9yOworIAlpbnQgbV9lcnJvcl9jb2RlID0gMDsKKy0JYm9vbCBtX2ZpbmlzaGVk ID0gZmFsc2U7CisgCWJvb2wgbV9vcGVuZWQgPSBmYWxzZTsKKy0JaW50IG1fZ290X2ZyYW1lID0g MDsKKy0JQVZQYWNrZXQgbV9wYWNrZXQ7CistCUFWUGFja2V0IG1fcGFja2V0MDsKKysJYm9vbCBt X2hhc19tb3JlX3BhY2tldHMgPSB0cnVlOworKwlib29sIG1faGFzX21vcmVfZnJhbWVzID0gdHJ1 ZTsKKysJQVZQYWNrZXQgKm1fcGFja2V0ID0gbnVsbHB0cjsKKysJQVZGcmFtZSAqbV9mcmFtZSA9 IG51bGxwdHI7CisKKyAJaW50IG1fb3V0cHV0X3NhbXBsZV9yYXRlID0gMDsKKyAJaW50IG1fb3V0 cHV0X2NoYW5uZWxzID0gMDsKK0BAIC05OCwxOSArOTcsMTIgQEAgcHJpdmF0ZToKKworIGlubGlu ZSBGRm1wZWdBdWRpb1JlYWRlcjo6RkZtcGVnQXVkaW9SZWFkZXIoKSB7CisgCWF2X2xvZ19zZXRf bGV2ZWwoQVZfTE9HX1FVSUVUKTsKKy0KKy0JYXZfaW5pdF9wYWNrZXQoJm1fcGFja2V0KTsKKy0J bV9wYWNrZXQuZGF0YSA9IG51bGxwdHI7CistCW1fcGFja2V0LnNpemUgPSAwOworLQorLQltX3Bh Y2tldDAgPSBtX3BhY2tldDsKKyB9CisKKyBpbmxpbmUgRkZtcGVnQXVkaW9SZWFkZXI6On5GRm1w ZWdBdWRpb1JlYWRlcigpIHsKKyAJQ2xvc2UoKTsKKyAJYXZfZGljdF9mcmVlKCZtX2lucHV0X29w dHMpOworIAlhdl9mcmVlcCgmbV9jb252ZXJ0X2J1ZmZlclswXSk7CistCWF2X3BhY2tldF91bnJl ZigmbV9wYWNrZXQwKTsKKyB9CisKKyBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6U2V0 SW5wdXRGb3JtYXQoY29uc3QgY2hhciAqbmFtZSkgeworQEAgLTEzNSwxMSArMTI3LDEwIEBAIGlu bGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxl X25hbWUpIHsKKworIAlDbG9zZSgpOworCistICAgIGF2X2luaXRfcGFja2V0KCZtX3BhY2tldCk7 CistCW1fcGFja2V0LmRhdGEgPSBudWxscHRyOworLQltX3BhY2tldC5zaXplID0gMDsKKy0KKy0J bV9wYWNrZXQwID0gbV9wYWNrZXQ7CisrCW1fcGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7Cisr CWlmICghbV9wYWNrZXQpIHsKKysJCXJldHVybiBmYWxzZTsKKysJfQorCisgCXJldCA9IGF2Zm9y bWF0X29wZW5faW5wdXQoJm1fZm9ybWF0X2N0eCwgZmlsZV9uYW1lLmNfc3RyKCksIG1faW5wdXRf Zm10LCAmbV9pbnB1dF9vcHRzKTsKKyAJaWYgKHJldCA8IDApIHsKK0BAIC0xNTMsMjYgKzE0NCwz MSBAQCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6OnN0cmlu ZyAmZmlsZV9uYW1lKSB7CisgCQlyZXR1cm4gZmFsc2U7CisgCX0KKworLQlBVkNvZGVjICpjb2Rl YzsKKysJY29uc3QgQVZDb2RlYyAqY29kZWM7CisgCXJldCA9IGF2X2ZpbmRfYmVzdF9zdHJlYW0o bV9mb3JtYXRfY3R4LCBBVk1FRElBX1RZUEVfQVVESU8sIC0xLCAtMSwgJmNvZGVjLCAwKTsKKyAJ aWYgKHJldCA8IDApIHsKKyAJCVNldEVycm9yKCJDb3VsZCBub3QgZmluZCBhbnkgYXVkaW8gc3Ry ZWFtIGluIHRoZSBmaWxlIiwgcmV0KTsKKyAJCXJldHVybiBmYWxzZTsKKyAJfQorIAltX3N0cmVh bV9pbmRleCA9IHJldDsKKysJYXV0byBzdHJlYW0gPSBtX2Zvcm1hdF9jdHgtPnN0cmVhbXNbbV9z dHJlYW1faW5kZXhdOworCistCW1fY29kZWNfY3R4ID0gbV9mb3JtYXRfY3R4LT5zdHJlYW1zW21f c3RyZWFtX2luZGV4XS0+Y29kZWM7CisrCW1fY29kZWNfY3R4ID0gYXZjb2RlY19hbGxvY19jb250 ZXh0Myhjb2RlYyk7CisgCW1fY29kZWNfY3R4LT5yZXF1ZXN0X3NhbXBsZV9mbXQgPSBBVl9TQU1Q TEVfRk1UX1MxNjsKKworKwlyZXQgPSBhdmNvZGVjX3BhcmFtZXRlcnNfdG9fY29udGV4dChtX2Nv ZGVjX2N0eCwgc3RyZWFtLT5jb2RlY3Bhcik7CisrCWlmIChyZXQgPCAwKSB7CisrCQlTZXRFcnJv cigiQ291bGQgbm90IGNvcHkgdGhlIHN0cmVhbSBwYXJhbWV0ZXJzIiwgcmV0KTsKKysJCXJldHVy biBmYWxzZTsKKysJfQorKworIAlyZXQgPSBhdmNvZGVjX29wZW4yKG1fY29kZWNfY3R4LCBjb2Rl YywgbnVsbHB0cik7CisgCWlmIChyZXQgPCAwKSB7CisgCQlTZXRFcnJvcigiQ291bGQgbm90IG9w ZW4gdGhlIGNvZGVjIiwgcmV0KTsKKyAJCXJldHVybiBmYWxzZTsKKyAJfQorCistCWlmICghbV9j b2RlY19jdHgtPmNoYW5uZWxfbGF5b3V0KSB7CistCQltX2NvZGVjX2N0eC0+Y2hhbm5lbF9sYXlv dXQgPSBhdl9nZXRfZGVmYXVsdF9jaGFubmVsX2xheW91dChtX2NvZGVjX2N0eC0+Y2hhbm5lbHMp OworLQl9CisrCWF2X2R1bXBfZm9ybWF0KG1fZm9ybWF0X2N0eCwgMCwgImZvbyIsIDApOworCisg CW1fZnJhbWUgPSBhdl9mcmFtZV9hbGxvYygpOworIAlpZiAoIW1fZnJhbWUpIHsKK0BAIC0xODMs MTkgKzE3OSwyMyBAQCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBz dGQ6OnN0cmluZyAmZmlsZV9uYW1lKSB7CisgCQltX291dHB1dF9zYW1wbGVfcmF0ZSA9IG1fY29k ZWNfY3R4LT5zYW1wbGVfcmF0ZTsKKyAJfQorCistCWlmICghbV9vdXRwdXRfY2hhbm5lbHMpIHsK Ky0JCW1fb3V0cHV0X2NoYW5uZWxzID0gbV9jb2RlY19jdHgtPmNoYW5uZWxzOworKwlBVkNoYW5u ZWxMYXlvdXQgb3V0cHV0X2NoYW5uZWxfbGF5b3V0OworKwlpZiAobV9vdXRwdXRfY2hhbm5lbHMp IHsKKysJCWF2X2NoYW5uZWxfbGF5b3V0X2RlZmF1bHQoJm91dHB1dF9jaGFubmVsX2xheW91dCwg bV9vdXRwdXRfY2hhbm5lbHMpOworKwl9IGVsc2UgeworKwkJbV9vdXRwdXRfY2hhbm5lbHMgPSBt X2NvZGVjX2N0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOworKwkJYXZfY2hhbm5lbF9sYXlvdXRf ZGVmYXVsdCgmb3V0cHV0X2NoYW5uZWxfbGF5b3V0LCBtX291dHB1dF9jaGFubmVscyk7CisgCX0K KworLQlpZiAobV9jb2RlY19jdHgtPnNhbXBsZV9mbXQgIT0gQVZfU0FNUExFX0ZNVF9TMTYgfHwg bV9jb2RlY19jdHgtPmNoYW5uZWxzICE9IG1fb3V0cHV0X2NoYW5uZWxzIHx8IG1fY29kZWNfY3R4 LT5zYW1wbGVfcmF0ZSAhPSBtX291dHB1dF9zYW1wbGVfcmF0ZSkgeworKwlpZiAobV9jb2RlY19j dHgtPnNhbXBsZV9mbXQgIT0gQVZfU0FNUExFX0ZNVF9TMTYgfHwgbV9jb2RlY19jdHgtPmNoX2xh eW91dC5uYl9jaGFubmVscyAhPSBtX291dHB1dF9jaGFubmVscyB8fCBtX2NvZGVjX2N0eC0+c2Ft cGxlX3JhdGUgIT0gbV9vdXRwdXRfc2FtcGxlX3JhdGUpIHsKKyAJCW1fY29udmVydGVyLnJlc2V0 KG5ldyBGRm1wZWdBdWRpb1Byb2Nlc3NvcigpKTsKKyAJCW1fY29udmVydGVyLT5TZXRDb21wYXRp YmxlTW9kZSgpOworIAkJbV9jb252ZXJ0ZXItPlNldElucHV0U2FtcGxlRm9ybWF0KG1fY29kZWNf Y3R4LT5zYW1wbGVfZm10KTsKKyAJCW1fY29udmVydGVyLT5TZXRJbnB1dFNhbXBsZVJhdGUobV9j b2RlY19jdHgtPnNhbXBsZV9yYXRlKTsKKy0JCW1fY29udmVydGVyLT5TZXRJbnB1dENoYW5uZWxM YXlvdXQobV9jb2RlY19jdHgtPmNoYW5uZWxfbGF5b3V0KTsKKysJCW1fY29udmVydGVyLT5TZXRJ bnB1dENoYW5uZWxMYXlvdXQoJihtX2NvZGVjX2N0eC0+Y2hfbGF5b3V0KSk7CisgCQltX2NvbnZl cnRlci0+U2V0T3V0cHV0U2FtcGxlRm9ybWF0KEFWX1NBTVBMRV9GTVRfUzE2KTsKKyAJCW1fY29u dmVydGVyLT5TZXRPdXRwdXRTYW1wbGVSYXRlKG1fb3V0cHV0X3NhbXBsZV9yYXRlKTsKKy0JCW1f Y29udmVydGVyLT5TZXRPdXRwdXRDaGFubmVsTGF5b3V0KGF2X2dldF9kZWZhdWx0X2NoYW5uZWxf bGF5b3V0KG1fb3V0cHV0X2NoYW5uZWxzKSk7CisrCQltX2NvbnZlcnRlci0+U2V0T3V0cHV0Q2hh bm5lbExheW91dCgmb3V0cHV0X2NoYW5uZWxfbGF5b3V0KTsKKyAJCWF1dG8gcmV0ID0gbV9jb252 ZXJ0ZXItPkluaXQoKTsKKyAJCWlmIChyZXQgIT0gMCkgeworIAkJCVNldEVycm9yKCJDb3VsZCBu b3QgY3JlYXRlIGFuIGF1ZGlvIGNvbnZlcnRlciBpbnN0YW5jZSIsIHJldCk7CitAQCAtMjAzLDEw ICsyMDMsMTEgQEAgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3Rk OjpzdHJpbmcgJmZpbGVfbmFtZSkgeworIAkJfQorIAl9CisKKysJYXZfY2hhbm5lbF9sYXlvdXRf dW5pbml0KCZvdXRwdXRfY2hhbm5lbF9sYXlvdXQpOworKworIAltX29wZW5lZCA9IHRydWU7Cist CW1fZmluaXNoZWQgPSBmYWxzZTsKKy0JbV9nb3RfZnJhbWUgPSAwOworLQltX25iX3BhY2tldHMg PSAwOworKwltX2hhc19tb3JlX3BhY2tldHMgPSB0cnVlOworKwltX2hhc19tb3JlX2ZyYW1lcyA9 IHRydWU7CisgCW1fZGVjb2RlX2Vycm9yID0gMDsKKworIAlyZXR1cm4gdHJ1ZTsKK0BAIC0yMTQs NiArMjE1LDcgQEAgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3Rk OjpzdHJpbmcgJmZpbGVfbmFtZSkgeworCisgaW5saW5lIHZvaWQgRkZtcGVnQXVkaW9SZWFkZXI6 OkNsb3NlKCkgeworIAlhdl9mcmFtZV9mcmVlKCZtX2ZyYW1lKTsKKysJYXZfcGFja2V0X2ZyZWUo Jm1fcGFja2V0KTsKKworIAltX3N0cmVhbV9pbmRleCA9IC0xOworCitAQCAtMjUyLDkxICsyNTQs OTggQEAgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6OlJlYWQoY29uc3QgaW50MTZfdCAq KmRhdGEsIHNpemVfdCAqc2l6ZSkgeworIAkJcmV0dXJuIGZhbHNlOworIAl9CisKKysJKmRhdGEg PSBudWxscHRyOworKwkqc2l6ZSA9IDA7CisrCisgCWludCByZXQ7CisrCWJvb2wgbmVlZHNfcGFj a2V0ID0gZmFsc2U7CisgCXdoaWxlICh0cnVlKSB7CistCQl3aGlsZSAobV9wYWNrZXQuc2l6ZSA8 PSAwKSB7CistCQkJYXZfcGFja2V0X3VucmVmKCZtX3BhY2tldDApOworLQkJCWF2X2luaXRfcGFj a2V0KCZtX3BhY2tldCk7CistCQkJbV9wYWNrZXQuZGF0YSA9IG51bGxwdHI7CistCQkJbV9wYWNr ZXQuc2l6ZSA9IDA7CistCQkJcmV0ID0gYXZfcmVhZF9mcmFtZShtX2Zvcm1hdF9jdHgsICZtX3Bh Y2tldCk7CisrCQl3aGlsZSAobmVlZHNfcGFja2V0ICYmIG1fcGFja2V0LT5zaXplID09IDApIHsK KysJCQlyZXQgPSBhdl9yZWFkX2ZyYW1lKG1fZm9ybWF0X2N0eCwgbV9wYWNrZXQpOworIAkJCWlm IChyZXQgPCAwKSB7CisgCQkJCWlmIChyZXQgPT0gQVZFUlJPUl9FT0YpIHsKKy0JCQkJCW1fZmlu aXNoZWQgPSB0cnVlOworKwkJCQkJbmVlZHNfcGFja2V0ID0gZmFsc2U7CisrCQkJCQltX2hhc19t b3JlX3BhY2tldHMgPSBmYWxzZTsKKyAJCQkJCWJyZWFrOworLQkJCQl9IGVsc2UgeworKwkJCQl9 CisrCQkJCVNldEVycm9yKCJFcnJvciByZWFkaW5nIGZyb20gdGhlIGF1ZGlvIHNvdXJjZSIsIHJl dCk7CisrCQkJCXJldHVybiBmYWxzZTsKKysJCQl9CisrCQkJaWYgKG1fcGFja2V0LT5zdHJlYW1f aW5kZXggPT0gbV9zdHJlYW1faW5kZXgpIHsKKysJCQkJbmVlZHNfcGFja2V0ID0gZmFsc2U7Cisr CQkJfSBlbHNlIHsKKysJCQkJYXZfcGFja2V0X3VucmVmKG1fcGFja2V0KTsKKysJCQl9CisrCQl9 CisrCisrCQlpZiAobV9wYWNrZXQtPnNpemUgIT0gMCkgeworKwkJCXJldCA9IGF2Y29kZWNfc2Vu ZF9wYWNrZXQobV9jb2RlY19jdHgsIG1fcGFja2V0KTsKKysJCQlpZiAocmV0IDwgMCkgeworKwkJ CQlpZiAocmV0ICE9IEFWRVJST1IoRUFHQUlOKSkgeworIAkJCQkJU2V0RXJyb3IoIkVycm9yIHJl YWRpbmcgZnJvbSB0aGUgYXVkaW8gc291cmNlIiwgcmV0KTsKKyAJCQkJCXJldHVybiBmYWxzZTsK KyAJCQkJfQorLQkJCX0KKy0JCQltX3BhY2tldDAgPSBtX3BhY2tldDsKKy0JCQlpZiAobV9wYWNr ZXQuc3RyZWFtX2luZGV4ICE9IG1fc3RyZWFtX2luZGV4KSB7CistCQkJCW1fcGFja2V0LmRhdGEg PSBudWxscHRyOworLQkJCQltX3BhY2tldC5zaXplID0gMDsKKyAJCQl9IGVsc2UgeworLQkJCQlt X25iX3BhY2tldHMrKzsKKysJCQkJYXZfcGFja2V0X3VucmVmKG1fcGFja2V0KTsKKyAJCQl9Cisg CQl9CisKKy0JCXJldCA9IGF2Y29kZWNfZGVjb2RlX2F1ZGlvNChtX2NvZGVjX2N0eCwgbV9mcmFt ZSwgJm1fZ290X2ZyYW1lLCAmbV9wYWNrZXQpOworKwkJcmV0ID0gYXZjb2RlY19yZWNlaXZlX2Zy YW1lKG1fY29kZWNfY3R4LCBtX2ZyYW1lKTsKKyAJCWlmIChyZXQgPCAwKSB7CistCQkJaWYgKG1f ZGVjb2RlX2Vycm9yKSB7CistCQkJCVNldEVycm9yKCJFcnJvciBkZWNvZGluZyBhdWRpbyBmcmFt ZSIsIG1fZGVjb2RlX2Vycm9yKTsKKy0JCQkJcmV0dXJuIGZhbHNlOworKwkJCWlmIChyZXQgPT0g QVZFUlJPUl9FT0YpIHsKKysJCQkJbV9oYXNfbW9yZV9mcmFtZXMgPSBmYWxzZTsKKysJCQl9IGVs c2UgaWYgKHJldCA9PSBBVkVSUk9SKEVBR0FJTikpIHsKKysJCQkJaWYgKG1faGFzX21vcmVfcGFj a2V0cykgeworKwkJCQkJbmVlZHNfcGFja2V0ID0gdHJ1ZTsKKysJCQkJCWNvbnRpbnVlOworKwkJ CQl9IGVsc2UgeworKwkJCQkJbV9oYXNfbW9yZV9mcmFtZXMgPSBmYWxzZTsKKysJCQkJfQorIAkJ CX0KKy0JCQltX2RlY29kZV9lcnJvciA9IHJldDsKKy0JCQltX3BhY2tldC5kYXRhID0gbnVsbHB0 cjsKKy0JCQltX3BhY2tldC5zaXplID0gMDsKKy0JCQljb250aW51ZTsKKysJCQlTZXRFcnJvcigi RXJyb3IgZGVjb2RpbmcgdGhlIGF1ZGlvIHNvdXJjZSIsIHJldCk7CisrCQkJcmV0dXJuIGZhbHNl OworIAkJfQorCistCQlicmVhazsKKy0JfQorLQorLQltX2RlY29kZV9lcnJvciA9IDA7CistCist CWNvbnN0IGludCBkZWNvZGVkID0gc3RkOjptaW4ocmV0LCBtX3BhY2tldC5zaXplKTsKKy0JbV9w YWNrZXQuZGF0YSArPSBkZWNvZGVkOworLQltX3BhY2tldC5zaXplIC09IGRlY29kZWQ7CistCist CWlmIChtX2dvdF9mcmFtZSkgeworLQkJaWYgKG1fY29udmVydGVyKSB7CistCQkJaWYgKG1fZnJh bWUtPm5iX3NhbXBsZXMgPiBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMpIHsKKy0JCQkJaW50 IGxpbnNpemU7CistCQkJCWF2X2ZyZWVwKCZtX2NvbnZlcnRfYnVmZmVyWzBdKTsKKy0JCQkJbV9j b252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzID0gc3RkOjptYXgoMTAyNCAqIDgsIG1fZnJhbWUtPm5i X3NhbXBsZXMpOworLQkJCQlyZXQgPSBhdl9zYW1wbGVzX2FsbG9jKG1fY29udmVydF9idWZmZXIs ICZsaW5zaXplLCBtX2NvZGVjX2N0eC0+Y2hhbm5lbHMsIG1fY29udmVydF9idWZmZXJfbmJfc2Ft cGxlcywgQVZfU0FNUExFX0ZNVF9TMTYsIDEpOworLQkJCQlpZiAocmV0IDwgMCkgeworLQkJCQkJ U2V0RXJyb3IoIkNvdWxkbid0IGFsbG9jYXRlIGF1ZGlvIGNvbnZlcnRlciBidWZmZXIiLCByZXQp OworKwkJaWYgKG1fZnJhbWUtPm5iX3NhbXBsZXMgPiAwKSB7CisrCQkJaWYgKG1fY29udmVydGVy KSB7CisrCQkJCWlmIChtX2ZyYW1lLT5uYl9zYW1wbGVzID4gbV9jb252ZXJ0X2J1ZmZlcl9uYl9z YW1wbGVzKSB7CisrCQkJCQlpbnQgbGluc2l6ZTsKKysJCQkJCWF2X2ZyZWVwKCZtX2NvbnZlcnRf YnVmZmVyWzBdKTsKKysJCQkJCW1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcyA9IHN0ZDo6bWF4 KDEwMjQgKiA4LCBtX2ZyYW1lLT5uYl9zYW1wbGVzKTsKKysJCQkJCXJldCA9IGF2X3NhbXBsZXNf YWxsb2MobV9jb252ZXJ0X2J1ZmZlciwgJmxpbnNpemUsIG1fY29kZWNfY3R4LT5jaF9sYXlvdXQu bmJfY2hhbm5lbHMsIG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcywgQVZfU0FNUExFX0ZNVF9T MTYsIDEpOworKwkJCQkJaWYgKHJldCA8IDApIHsKKysJCQkJCQlTZXRFcnJvcigiQ291bGRuJ3Qg YWxsb2NhdGUgYXVkaW8gY29udmVydGVyIGJ1ZmZlciIsIHJldCk7CisrCQkJCQkJcmV0dXJuIGZh bHNlOworKwkJCQkJfQorKwkJCQl9CisrCQkJCWF1dG8gbmJfc2FtcGxlcyA9IG1fY29udmVydGVy LT5Db252ZXJ0KG1fY29udmVydF9idWZmZXIsIG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcywg KGNvbnN0IHVpbnQ4X3QgKiopIG1fZnJhbWUtPmRhdGEsIG1fZnJhbWUtPm5iX3NhbXBsZXMpOwor KwkJCQlpZiAobmJfc2FtcGxlcyA8IDApIHsKKysJCQkJCVNldEVycm9yKCJDb3VsZG4ndCBjb252 ZXJ0IGF1ZGlvIiwgcmV0KTsKKyAJCQkJCXJldHVybiBmYWxzZTsKKyAJCQkJfQorLQkJCX0KKy0J CQlhdXRvIG5iX3NhbXBsZXMgPSBtX2NvbnZlcnRlci0+Q29udmVydChtX2NvbnZlcnRfYnVmZmVy LCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMsIChjb25zdCB1aW50OF90ICoqKSBtX2ZyYW1l LT5kYXRhLCBtX2ZyYW1lLT5uYl9zYW1wbGVzKTsKKy0JCQlpZiAobmJfc2FtcGxlcyA8IDApIHsK Ky0JCQkJU2V0RXJyb3IoIkNvdWxkbid0IGNvbnZlcnQgYXVkaW8iLCByZXQpOworLQkJCQlyZXR1 cm4gZmFsc2U7CistCQkJfQorLQkJCSpkYXRhID0gKGNvbnN0IGludDE2X3QgKikgbV9jb252ZXJ0 X2J1ZmZlclswXTsKKy0JCQkqc2l6ZSA9IG5iX3NhbXBsZXM7CistCQl9IGVsc2UgeworLQkJCSpk YXRhID0gKGNvbnN0IGludDE2X3QgKikgbV9mcmFtZS0+ZGF0YVswXTsKKy0JCQkqc2l6ZSA9IG1f ZnJhbWUtPm5iX3NhbXBsZXM7CistCQl9CistCX0gZWxzZSB7CistCQlpZiAobV9maW5pc2hlZCAm JiBtX2NvbnZlcnRlcikgeworLQkJCWF1dG8gbmJfc2FtcGxlcyA9IG1fY29udmVydGVyLT5GbHVz aChtX2NvbnZlcnRfYnVmZmVyLCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMpOworLQkJCWlm IChuYl9zYW1wbGVzIDwgMCkgeworLQkJCQlTZXRFcnJvcigiQ291bGRuJ3QgY29udmVydCBhdWRp byIsIHJldCk7CistCQkJCXJldHVybiBmYWxzZTsKKy0JCQl9IGVsc2UgaWYgKG5iX3NhbXBsZXMg PiAwKSB7CistCQkJCW1fZ290X2ZyYW1lID0gMTsKKyAJCQkJKmRhdGEgPSAoY29uc3QgaW50MTZf dCAqKSBtX2NvbnZlcnRfYnVmZmVyWzBdOworIAkJCQkqc2l6ZSA9IG5iX3NhbXBsZXM7CisrCQkJ fSBlbHNlIHsKKysJCQkJKmRhdGEgPSAoY29uc3QgaW50MTZfdCAqKSBtX2ZyYW1lLT5kYXRhWzBd OworKwkJCQkqc2l6ZSA9IG1fZnJhbWUtPm5iX3NhbXBsZXM7CisrCQkJfQorKwkJfSBlbHNlIHsK KysJCQlpZiAobV9jb252ZXJ0ZXIpIHsKKysJCQkJaWYgKElzRmluaXNoZWQoKSkgeworKwkJCQkJ YXV0byBuYl9zYW1wbGVzID0gbV9jb252ZXJ0ZXItPkZsdXNoKG1fY29udmVydF9idWZmZXIsIG1f Y29udmVydF9idWZmZXJfbmJfc2FtcGxlcyk7CisrCQkJCQlpZiAobmJfc2FtcGxlcyA8IDApIHsK KysJCQkJCQlTZXRFcnJvcigiQ291bGRuJ3QgY29udmVydCBhdWRpbyIsIHJldCk7CisrCQkJCQkJ cmV0dXJuIGZhbHNlOworKwkJCQkJfSBlbHNlIGlmIChuYl9zYW1wbGVzID4gMCkgeworKwkJCQkJ CSpkYXRhID0gKGNvbnN0IGludDE2X3QgKikgbV9jb252ZXJ0X2J1ZmZlclswXTsKKysJCQkJCQkq c2l6ZSA9IG5iX3NhbXBsZXM7CisrCQkJCQl9CisrCQkJCX0KKyAJCQl9CisgCQl9CistCX0KKwor LQlyZXR1cm4gdHJ1ZTsKKysJCXJldHVybiB0cnVlOworKwl9CisgfQorCisgaW5saW5lIHZvaWQg RkZtcGVnQXVkaW9SZWFkZXI6OlNldEVycm9yKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIGludCBlcnJu dW0pIHsKK2RpZmYgLS1naXQgYS90ZXN0cy9DTWFrZUxpc3RzLnR4dCBiL3Rlc3RzL0NNYWtlTGlz dHMudHh0CitpbmRleCBhMmI1MTdiLi4xMjNlNjQzIDEwMDY0NAorLS0tIGEvdGVzdHMvQ01ha2VM aXN0cy50eHQKKysrKyBiL3Rlc3RzL0NNYWtlTGlzdHMudHh0CitAQCAtMzgsNiArMzgsMTIgQEAg c2V0KFNSQ1MKKworIGlmKEJVSUxEX1RPT0xTKQorIAlzZXQoU1JDUyAke1NSQ1N9IC4uL3NyYy9h dWRpby9mZm1wZWdfYXVkaW9fcmVhZGVyX3Rlc3QuY3BwKQorKyAgICBpbmNsdWRlX2RpcmVjdG9y aWVzKAorKyAgICAgICAgJHtGRk1QRUdfTElCQVZGT1JNQVRfSU5DTFVERV9ESVJTfQorKyAgICAg ICAgJHtGRk1QRUdfTElCQVZDT0RFQ19JTkNMVURFX0RJUlN9CisrICAgICAgICAke0ZGTVBFR19M SUJBVlVUSUxfSU5DTFVERV9ESVJTfQorKyAgICAgICAgJHtBVURJT19QUk9DRVNTT1JfSU5DTFVE RV9ESVJTfQorKyAgICApCisgCWxpbmtfbGlicmFyaWVzKGZwY2FsY19saWJzKQorIGVuZGlmKCkK KworLS0gCisyLjM4LjEKKworCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9tYXByaW50L3RlbXBs YXRlIGIvc3JjcGtncy9jaHJvbWFwcmludC90ZW1wbGF0ZQppbmRleCA3ZWY3ODM4OTQ5ZjNhLi4x ZjdiYmM3MGEyMmM4IDEwMDY0NAotLS0gYS9zcmNwa2dzL2Nocm9tYXByaW50L3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdjaHJvbWFwcmludCcKIHBrZ25hbWU9Y2hyb21hcHJpbnQKIHZlcnNpb249 MS41LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1 cmVfYXJncz0iLURCVUlMRF9UT09MUz1PTiIKIG1ha2VfY2hlY2tfdGFyZ2V0PSJjaGVjayIKCkZy b20gMGNjMzk5Y2Y5YzdkMTBjMjA3MmRjYjIxZWYzMTMxZDM0NGQxMjljNSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI2LzExNV0gY2hyb21p dW06IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL3BhdGNoZXMvY2hyb21pdW0tMTE4 LWZmbXBlZy00LjQucGF0Y2ggICAgIHwgMjIgLS0tLS0tLS0tCiBzcmNwa2dzL2Nocm9taXVtL3Bh dGNoZXMvZmZtcGVnNS5wYXRjaCAgICAgICAgfCA0NyArKysrKysrKysrKysrKysrKysrCiBzcmNw a2dzL2Nocm9taXVtL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogMyBmaWxl cyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvY2hyb21pdW0tMTE4LWZmbXBlZy00LjQu cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVn NS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS0x MTgtZmZtcGVnLTQuNC5wYXRjaCBiL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS0x MTgtZmZtcGVnLTQuNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU2Yzcz NGQ0ZTAyZS4uMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvY2hy b21pdW0tMTE4LWZmbXBlZy00LjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBA Ci1kaWZmIC0tZ2l0IGEvbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYyBiL21lZGlhL2Zp bHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MKLWluZGV4IGFjNDcxM2IwNzI2OC4uNDkyYTlhMzdkMDk2 IDEwMDY0NAotLS0tIGEvbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwotKysrIGIvbWVk aWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwotQEAgLTQ0Myw3ICs0NDMsNyBAQCB2b2lkIEZG bXBlZ0RlbXV4ZXJTdHJlYW06OkVucXVldWVQYWNrZXQoU2NvcGVkQVZQYWNrZXQgcGFja2V0KSB7 Ci0gICAgIGJ1ZmZlciA9IERlY29kZXJCdWZmZXI6OkNvcHlGcm9tKHBhY2tldC0+ZGF0YSwgcGFj a2V0LT5zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlX2Rh dGEuZGF0YSgpLCBzaWRlX2RhdGEuc2l6ZSgpKTsKLSAgIH0gZWxzZSB7Ci0tICAgIHNpemVfdCBz aWRlX2RhdGFfc2l6ZSA9IDA7Ci0rICAgIGludCBzaWRlX2RhdGFfc2l6ZSA9IDA7Ci0gICAgIHVp bnQ4X3QqIHNpZGVfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAotICAgICAgICAgcGFj a2V0LmdldCgpLCBBVl9QS1RfREFUQV9NQVRST1NLQV9CTE9DS0FERElUSU9OQUwsICZzaWRlX2Rh dGFfc2l6ZSk7Ci0gCi1AQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgRkZtcGVnRGVtdXhlclN0cmVh bTo6RW5xdWV1ZVBhY2tldChTY29wZWRBVlBhY2tldCBwYWNrZXQpIHsKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXQtPnNpemUgLSBkYXRhX29mZnNldCk7Ci0g ICAgIH0KLSAKLS0gICAgc2l6ZV90IHNraXBfc2FtcGxlc19zaXplID0gMDsKLSsgICAgaW50IHNr aXBfc2FtcGxlc19zaXplID0gMDsKLSAgICAgY29uc3QgdWludDMyX3QqIHNraXBfc2FtcGxlc19w dHIgPQotICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGF2X3BhY2tl dF9nZXRfc2lkZV9kYXRhKAotICAgICAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFf U0tJUF9TQU1QTEVTLCAmc2tpcF9zYW1wbGVzX3NpemUpKTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv Y2hyb21pdW0vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVz L2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4u MjRlMmRhMzhlMzRjYQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hl cy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKKy0tLSBhL21lZGlhL2ZpbHRlcnMvZmZt cGVnX2RlbXV4ZXIuY2MJMjAyMy0wMS0yMyAxNzozMzo1Ny4zNjYyMTM4MDUgKzAyMDAKKysrKyBi L21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MJMjAyMy0wMS0yMyAxNzo0MzowOS4yODM0 MzY5ODMgKzAyMDAKK0BAIC05MiwyNCArOTIsMTIgQEAKKyAKKyBzdGF0aWMgYmFzZTo6VGltZURl bHRhIEV4dHJhY3RTdGFydFRpbWUoQVZTdHJlYW0qIHN0cmVhbSkgeworICAgLy8gVGhlIGRlZmF1 bHQgc3RhcnQgdGltZSBpcyB6ZXJvLgorLSAgYmFzZTo6VGltZURlbHRhIHN0YXJ0X3RpbWU7Cisr ICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGltZSA9IGtOb1RpbWVzdGFtcDsKKyAKKyAgIC8vIEZp cnN0IHRyeSB0byB1c2UgIHRoZSB8c3RhcnRfdGltZXwgdmFsdWUgYXMgaXMuCistICBpZiAoc3Ry ZWFtLT5zdGFydF90aW1lICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCkKKysgIGlmIChzdHJlYW0tPnN0 YXJ0X3RpbWUgIT0ga05vRkZtcGVnVGltZXN0YW1wKSAvLyBBVl9OT1BUU19WQUxVRQorICAgICBz dGFydF90aW1lID0gQ29udmVydEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgc3RyZWFt LT5zdGFydF90aW1lKTsKKyAKKy0gIC8vIE5leHQgdHJ5IHRvIHVzZSB0aGUgZmlyc3QgRFRTIHZh bHVlLCBmb3IgY29kZWNzIHdoZXJlIHdlIGtub3cgUFRTID09IERUUworLSAgLy8gKGV4Y2x1ZGVz IGFsbCBIMjZ4IGNvZGVjcykuIFRoZSBzdGFydCB0aW1lIG11c3QgYmUgcmV0dXJuZWQgaW4gUFRT LgorLSAgaWYgKGF2X3N0cmVhbV9nZXRfZmlyc3RfZHRzKHN0cmVhbSkgIT0ga05vRkZtcGVnVGlt ZXN0YW1wICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNf SURfSEVWQyAmJgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVD X0lEX0gyNjQgJiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RF Q19JRF9NUEVHNCkgeworLSAgICBjb25zdCBiYXNlOjpUaW1lRGVsdGEgZmlyc3RfcHRzID0KKy0g ICAgICAgIENvbnZlcnRGcm9tVGltZUJhc2Uoc3RyZWFtLT50aW1lX2Jhc2UsIGF2X3N0cmVhbV9n ZXRfZmlyc3RfZHRzKHN0cmVhbSkpOworLSAgICBpZiAoZmlyc3RfcHRzIDwgc3RhcnRfdGltZSkK Ky0gICAgICBzdGFydF90aW1lID0gZmlyc3RfcHRzOworLSAgfQorLQorICAgcmV0dXJuIHN0YXJ0 X3RpbWU7CisgfQorIAorQEAgLTE1OTcsNyArMTU4NSw3IEBACisgICBmb3IgKGNvbnN0IGF1dG8m IHN0cmVhbSA6IHN0cmVhbXNfKSB7CisgICAgIGlmICghc3RyZWFtIHx8IHN0cmVhbS0+SXNFbmFi bGVkKCkgIT0gZW5hYmxlZCkKKyAgICAgICBjb250aW51ZTsKKy0gICAgaWYgKGF2X3N0cmVhbV9n ZXRfZmlyc3RfZHRzKHN0cmVhbS0+YXZfc3RyZWFtKCkpID09IGtJbnZhbGlkUFRTTWFya2VyKQor KyAgICBpZiAoc3RyZWFtLT5hdl9zdHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxV RSkKKyAgICAgICBjb250aW51ZTsKKyAgICAgaWYgKCFsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0g fHwKKyAgICAgICAgIHN0cmVhbS0+c3RhcnRfdGltZSgpIDwgbG93ZXN0X3N0YXJ0X3RpbWVfc3Ry ZWFtLT5zdGFydF90aW1lKCkpIHsKK0BAIC0xNjE4LDcgKzE2MDYsNyBAQAorICAgICBpZiAoc3Ry ZWFtLT50eXBlKCkgIT0gRGVtdXhlclN0cmVhbTo6VklERU8pCisgICAgICAgY29udGludWU7Cisg CistICAgIGlmIChhdl9zdHJlYW1fZ2V0X2ZpcnN0X2R0cyhzdHJlYW0tPmF2X3N0cmVhbSgpKSA9 PSBrSW52YWxpZFBUU01hcmtlcikKKysgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0 X3RpbWUgPT0gQVZfTk9QVFNfVkFMVUUpCisgICAgICAgY29udGludWU7CisgCisgICAgIGlmICgh c3RyZWFtLT5Jc0VuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxh dGUgYi9zcmNwa2dzL2Nocm9taXVtL3RlbXBsYXRlCmluZGV4IGNjMzY5MTFjZDMzOGQuLmM2M2Vi MzMwZDFkYTggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9jaHJvbWl1bS90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9Y2hyb21pdW0K ICMgU2VlIGh0dHBzOi8vY2hyb21pdW1kYXNoLmFwcHNwb3QuY29tL3JlbGVhc2VzP3BsYXRmb3Jt PUxpbnV4IGZvciB0aGUgbGF0ZXN0IHZlcnNpb24KIHZlcnNpb249MTE4LjAuNTk5My43MAotcmV2 aXNpb249MQorcmV2aXNpb249MgogYXJjaHM9Imk2ODYqIHg4Nl82NCogYWFyY2g2NCogYXJtdjds KiIKIGhvc3RtYWtlZGVwZW5kcz0iCiAgJCh2b3B0X2lmIGNsYW5nICJjbGFuZyBsbGQgbGx2bTE1 IikKCkZyb20gZmNmNTc3N2ZiZGQxOWI2ZDRiNTlmZmI2YzkzZjk0MTcwZDA0Njk5YSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI3LzExNV0g Y211czogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2NtdXMvcGF0Y2hlcy9m Zm1wZWc2LnBhdGNoIHwgMTIgKysrKysrKysrKysrCiBzcmNwa2dzL2NtdXMvdGVtcGxhdGUgICAg ICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBl ZzYucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNo IGIvc3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAwLi5mZmE5NWFiODExMTAxCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApAQCAtMCwwICsxLDEyIEBACistLS0g YS9pcC9mZm1wZWcuYworKysrIGIvaXAvZmZtcGVnLmMKK0BAIC0yMDIsOSArMjAyLDYgQEAgc3Rh dGljIGludCBmZm1wZWdfb3BlbihzdHJ1Y3QgaW5wdXRfcGx1Z2luX2RhdGEgKmlwX2RhdGEpCisg CQkJYnJlYWs7CisgCQl9CisgCistCQlpZiAoY29kZWMtPmNhcGFiaWxpdGllcyAmIEFWX0NPREVD X0NBUF9UUlVOQ0FURUQpCistCQkJY2MtPmZsYWdzIHw9IEFWX0NPREVDX0ZMQUdfVFJVTkNBVEVE OworLQorIAkJaWYgKGF2Y29kZWNfb3BlbjIoY2MsIGNvZGVjLCBOVUxMKSA8IDApIHsKKyAJCQlk X3ByaW50KCJjb3VsZCBub3Qgb3BlbiBjb2RlYzogJWQsICVzXG4iLCBjYy0+Y29kZWNfaWQsIGF2 Y29kZWNfZ2V0X25hbWUoY2MtPmNvZGVjX2lkKSk7CisgCQkJZXJyID0gLUlQX0VSUk9SX1VOU1VQ UE9SVEVEX0ZJTEVfVFlQRTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY211cy90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvY211cy90ZW1wbGF0ZQppbmRleCBkYzhhNWU1ZDQzNGNkLi5mNjY0MDc2MTcwOTYwIDEw MDY0NAotLS0gYS9zcmNwa2dzL2NtdXMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jbXVzL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY211cycKIHBrZ25hbWU9 Y211cwogdmVyc2lvbj0yLjEwLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9InByZWZpeD0vdXNyIExEPSRDQyIKIGhvc3RtYWtl ZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gMmU4NTZmYzcwYTU1NTg2N2YwMGRlNDg5MTA2Yzc5 OWEwNWFiMjhkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDI4LzExNV0gY3lhbnJpcDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2N5YW5yaXAvdGVtcGxh dGUgYi9zcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUKaW5kZXggOTc5NmUzNDYxNjAxYS4uNWRiMzBl MDIwZDE3ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9jeWFucmlwL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvY3lhbnJpcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2N5YW5yaXAnCiBwa2duYW1lPWN5YW5yaXAKIHZlcnNpb249MC45LjAKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWci CiBtYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGliY2Rpby1wYXJhbm9p YS1kZXZlbCBsaWJjdXJsLWRldmVsIGxpYm11c2ljYnJhaW56NS1kZXZlbCIKCkZyb20gMTQ2YzEx YjllNWQwODAwZjhkYWZjZWJkZDFmNjc3NjdkM2Q0MTVlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI5LzExNV0gZGVhZGJlZWY6IHJldmJ1 bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0ZSB8IDQg KystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlIGIvc3JjcGtncy9kZWFkYmVlZi90 ZW1wbGF0ZQppbmRleCBiNjY0YmIxYjliZDlmLi4xNjViM2M3YjljYWQ4IDEwMDY0NAotLS0gYS9z cmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUK QEAgLTEsMTQgKzEsMTQgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2RlYWRiZWVmJwogcGtnbmFt ZT1kZWFkYmVlZgogdmVyc2lvbj0xLjguOAotcmV2aXNpb249MQorcmV2aXNpb249MgogY3JlYXRl X3dya3NyYz15ZXMKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIt LWRpc2FibGUtb3NzIC0tZGlzYWJsZS1sZm0gLS1kaXNhYmxlLW5vdGlmeSAtLWRpc2FibGUtZ3Rr MiIKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgbGlidG9vbCBnZXR0ZXh0IGdldHRleHQtZGV2 ZWwgaW50bHRvb2wgcGtnLWNvbmZpZwogIHlhc20gY2xhbmcgZ2xpYi1kZXZlbCIKIG1ha2VkZXBl bmRzPSIKLSBhbHNhLWxpYi1kZXZlbCBkYnVzLWRldmVsIGZhYWQyLWRldmVsIGZmbXBlZy1kZXZl bCBndGsrMy1kZXZlbCBpbWxpYjItZGV2ZWwKKyBhbHNhLWxpYi1kZXZlbCBkYnVzLWRldmVsIGZh YWQyLWRldmVsIGZmbXBlZzQtZGV2ZWwgZ3RrKzMtZGV2ZWwgaW1saWIyLWRldmVsCiAgamFuc3Nv bi1kZXZlbCBsaWJjZGRiLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGliY3VybC1kZXZlbCBsaWJmbGFj LWRldmVsCiAgbGlibWFkLWRldmVsIGxpYnBuZy1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsIGxp YnNuZGZpbGUtZGV2ZWwgbGlidm9yYmlzLWRldmVsCiAgbGliemlwLWRldmVsIG1wZzEyMy1kZXZl bCBvcHVzZmlsZS1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsIHdhdnBhY2stZGV2ZWwiCgpGcm9tIDQ0 MmMwYjU0NDFlNjc4NzA1OWVhNzY0NzdmNTVjNzgxMmU4NmJhMDAgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzMC8xMTVdIGRvbHBoaW4tZW11 OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlIGIvc3JjcGtncy9kb2xw aGluLWVtdS90ZW1wbGF0ZQppbmRleCBiNGM4YjY0MzY4YTRiLi4wNzA5OTNhYWMzMWQyIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZG9scGhp bi1lbXUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdkb2xw aGluLWVtdScKIHBrZ25hbWU9ZG9scGhpbi1lbXUKIHZlcnNpb249NS4wLjE5MzY4Ci1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBfZG9scGhpbl9jb21taXQ9ZGFkYmViNGJhZTdlN2ZhMjNhZjJiNDZl MGFkZDQxNDMwOTRkYzEwNwogX21nYmFfY29tbWl0PTQ0ZTA3NGExNWU5NjUxNDgxZjdmNjUyYWMw MDZhN2M5ZDU4Y2JlYjkKIF9nb29nbGV0ZXN0X2NvbW1pdD1iZTAzZDAwZjVmMGNjM2E5OTdkMWEz NjhiZWU4YTFmZTkzNjUxZjQ4CgpGcm9tIGI3YzJkMmY1ZmJlMjRiNzlkYzcwMWIzZDhkMGUxN2Iy ZjA1MTIwYTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDog W1BBVENIIDAzMS8xMTVdIGRyb2lkY2FtLW9icy1wbHVnaW46IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3RlbXBsYXRlIGIvc3JjcGtncy9kcm9pZGNhbS1v YnMtcGx1Z2luL3RlbXBsYXRlCmluZGV4IGZjOWM5YmY2YjlkNTQuLmZiMDQ4MDc1NGRmNGQgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvZHJvaWRjYW0tb2JzLXBsdWdpbi90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdkcm9pZGNhbS1vYnMtcGx1Z2luJwogcGtnbmFtZT1kcm9pZGNhbS1vYnMt cGx1Z2luCiB2ZXJzaW9uPTIuMC4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHls ZT1nbnUtbWFrZWZpbGUKIG1ha2VfdXNlX2Vudj15ZXMKIG1ha2VfYnVpbGRfYXJncz0iQUxMT1df U1RBVElDPW5vIgoKRnJvbSAxMTZkM2FlN2VmMWQ1NTFkYWU2ZDIxYzRiODJjMWNjNTZhNTEyZjMw IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw MzIvMTE1XSBkcm9pZGNhbTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Ry b2lkY2FtL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKaW5kZXggMWMzZjFiOGIxZmM2Ny4uMzJhOTIyMGI3OWE0 ZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Ry b2lkY2FtL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZHJv aWRjYW0nCiBwa2duYW1lPWRyb2lkY2FtCiB2ZXJzaW9uPTEuOC4yCi1yZXZpc2lvbj0yCityZXZp c2lvbj0zCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1ha2VfYnVpbGRfYXJncz0iVVNCTVVY RD0tbHVzYm11eGQtMi4wIEpQRUc9LWx0dXJib2pwZWciCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWciCgpGcm9tIGVmNGJlZGY3MGM1ZjY0YWUwMmEwZDE2MWJlNjljZjVlNTc2YjU2ZTcgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzMy8x MTVdIGZmbXBlZ3RodW1ibmFpbGVyOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIC4uLi9m Zm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2ggICB8IDIwMiArKysrKysrKysr KysrKysrKysKIHNyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvdGVtcGxhdGUgICAgICAgICAgICB8 ICAgNiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyMDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMv ZmZtcGVnNi5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0 Y2hlcy9mZm1wZWc2LnBhdGNoIGIvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2Zm bXBlZzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMzYz ZmYzNWEyODQxOQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIv cGF0Y2hlcy9mZm1wZWc2LnBhdGNoCkBAIC0wLDAgKzEsMjAyIEBACistLS0gYS9saWJmZm1wZWd0 aHVtYm5haWxlci9tb3ZpZWRlY29kZXIuY3BwCTIwMTctMTEtMjEgMTQ6MDY6NTcuMDAwMDAwMDAw IC0wNTAwCisrKysgYi9saWJmZm1wZWd0aHVtYm5haWxlci9tb3ZpZWRlY29kZXIuY3BwCTIwMjMt MDUtMDUgMTM6MTQ6NDcuOTQ2NTYwNjY4IC0wNDAwCitAQCAtNDEsMTEgKzQxLDYgQEAKKyBuYW1l c3BhY2UgZmZtcGVndGh1bWJuYWlsZXIKKyB7CisgCistc3RydWN0IFNpbGVuY2VMb2dMZXZlbAor LXsKKy0gICAgU2lsZW5jZUxvZ0xldmVsKCkgeyBhdl9sb2dfc2V0X2xldmVsKEFWX0xPR19RVUlF VCk7IH0KKy19OworLQorIE1vdmllRGVjb2Rlcjo6TW92aWVEZWNvZGVyKEFWRm9ybWF0Q29udGV4 dCogcGF2Q29udGV4dCkKKyA6IG1fVmlkZW9TdHJlYW0oLTEpCisgLCBtX3BGb3JtYXRDb250ZXh0 KHBhdkNvbnRleHQpCitAQCAtNzAsOCArNjUsNiBAQAorIAorIHZvaWQgTW92aWVEZWNvZGVyOjpp bml0aWFsaXplKGNvbnN0IHN0cmluZyYgZmlsZW5hbWUsIGJvb2wgcHJlZmVyRW1iZWRkZWRNZXRh ZGF0YSkKKyB7CistICAgIGF2X3JlZ2lzdGVyX2FsbCgpOworLSAgICBhdmNvZGVjX3JlZ2lzdGVy X2FsbCgpOworICAgICBhdmZvcm1hdF9uZXR3b3JrX2luaXQoKTsKKyAKKyAgICAgc3RyaW5nIGlu cHV0RmlsZSA9IGZpbGVuYW1lID09ICItIiA/ICJwaXBlOiIgOiBmaWxlbmFtZTsKK0BAIC05Nyw4 ICs5MCw3IEBACisgeworICAgICBpZiAobV9wVmlkZW9Db2RlY0NvbnRleHQpCisgICAgIHsKKy0g ICAgICAgIGF2Y29kZWNfY2xvc2UobV9wVmlkZW9Db2RlY0NvbnRleHQpOworLSAgICAgICAgbV9w VmlkZW9Db2RlY0NvbnRleHQgPSBudWxscHRyOworKyAgICAgICAgYXZjb2RlY19mcmVlX2NvbnRl eHQoJm1fcFZpZGVvQ29kZWNDb250ZXh0KTsKKyAgICAgfQorIAorICAgICBpZiAoKCFtX0Zvcm1h dENvbnRleHRXYXNHaXZlbikgJiYgbV9wRm9ybWF0Q29udGV4dCkKK0BAIC0xNTIsMTAgKzE0NCwx MCBAQAorICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG1fcEZvcm1hdENvbnRleHQt Pm5iX3N0cmVhbXM7ICsraSkKKyAgICAgeworICAgICAgICAgQVZTdHJlYW0gKnN0cmVhbSA9IG1f cEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV07CistICAgICAgICBhdXRvIGN0eCA9IG1fcEZvcm1h dENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjOworLSAgICAgICAgaWYgKGN0eC0+Y29kZWNfdHlw ZSA9PSBBVk1FRElBX1RZUEVfVklERU8pCisrICAgICAgICBhdXRvIHBhciA9IG1fcEZvcm1hdENv bnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyOworKyAgICAgICAgaWYgKHBhci0+Y29kZWNfdHlw ZSA9PSBBVk1FRElBX1RZUEVfVklERU8pCisgICAgICAgICB7CistICAgICAgICAgICAgaWYgKCFw cmVmZXJFbWJlZGRlZE1ldGFkYXRhIHx8ICFpc1N0aWxsSW1hZ2VDb2RlYyhjdHgtPmNvZGVjX2lk KSkKKysgICAgICAgICAgICBpZiAoIXByZWZlckVtYmVkZGVkTWV0YWRhdGEgfHwgIWlzU3RpbGxJ bWFnZUNvZGVjKHBhci0+Y29kZWNfaWQpKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgdmlkZW9TdHJlYW1zLnB1c2hfYmFjayhpKTsKKyAgICAgICAgICAgICAgICAgY29udGludWU7 CitAQCAtMjAzLDggKzE5NSw3IEBACisgICAgIH0KKyAKKyAgICAgbV9wVmlkZW9TdHJlYW0gPSBt X3BGb3JtYXRDb250ZXh0LT5zdHJlYW1zW21fVmlkZW9TdHJlYW1dOworLSAgICBtX3BWaWRlb0Nv ZGVjQ29udGV4dCA9IG1fcFZpZGVvU3RyZWFtLT5jb2RlYzsKKy0gICAgbV9wVmlkZW9Db2RlYyA9 IGF2Y29kZWNfZmluZF9kZWNvZGVyKG1fcFZpZGVvQ29kZWNDb250ZXh0LT5jb2RlY19pZCk7Cisr ICAgIG1fcFZpZGVvQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihtX3BWaWRlb1N0cmVhbS0+ Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAKKyAgICAgaWYgKG1fcFZpZGVvQ29kZWMgPT0gbnVsbHB0 cikKKyAgICAgeworQEAgLTIxNCw2ICsyMDUsMjAgQEAKKyAgICAgICAgIHRocm93IGxvZ2ljX2Vy cm9yKCJWaWRlbyBDb2RlYyBub3QgZm91bmQiKTsKKyAgICAgfQorIAorKyAgICBtX3BWaWRlb0Nv ZGVjQ29udGV4dCA9IGF2Y29kZWNfYWxsb2NfY29udGV4dDMobV9wVmlkZW9Db2RlYyk7CisrCisr ICAgIGlmIChtX3BWaWRlb0NvZGVjQ29udGV4dCA9PSBudWxscHRyKQorKyAgICB7CisrICAgICAg ICBkZXN0cm95KCk7CisrICAgICAgICB0aHJvdyBsb2dpY19lcnJvcigiQ291bGQgbm90IGFsbG9j YXRlIHZpZGVvIGNvZGVjIGNvbnRleHQiKTsKKysgICAgfQorKworKyAgICBpZiAoYXZjb2RlY19w YXJhbWV0ZXJzX3RvX2NvbnRleHQobV9wVmlkZW9Db2RlY0NvbnRleHQsIG1fcFZpZGVvU3RyZWFt LT5jb2RlY3BhcikgPCAwKQorKyAgICB7CisrICAgICAgICBkZXN0cm95KCk7CisrICAgICAgICB0 aHJvdyBsb2dpY19lcnJvcigiQ291bGQgbm90IGNvbmZpZ3VyZSB2aWRlbyBjb2RlYyBjb250ZXh0 Iik7CisrICAgIH0KKysKKyAgICAgbV9wVmlkZW9Db2RlY0NvbnRleHQtPndvcmthcm91bmRfYnVn cyA9IDE7CisgCisgICAgIGlmIChhdmNvZGVjX29wZW4yKG1fcFZpZGVvQ29kZWNDb250ZXh0LCBt X3BWaWRlb0NvZGVjLCBudWxscHRyKSA8IDApCitAQCAtMzg2LDEzICszOTEsNiBAQAorIAorIHZv aWQgTW92aWVEZWNvZGVyOjppbml0aWFsaXplRmlsdGVyR3JhcGgoY29uc3QgQVZSYXRpb25hbCYg dGltZUJhc2UsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzaXplLCBib29sIG1haW50YWluQXNwZWN0UmF0 aW8pCisgeworLSAgICBzdGF0aWMgY29uc3QgQVZQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdHNbXSA9 IHsgQVZfUElYX0ZNVF9SR0IyNCwgQVZfUElYX0ZNVF9OT05FIH07CistCistICAgIGF1dG8gZGVs ID0gW10gKEFWQnVmZmVyU2lua1BhcmFtcyogcCkgeyBhdl9mcmVlcChwKTsgfTsKKy0gICAgc3Rk Ojp1bmlxdWVfcHRyPEFWQnVmZmVyU2lua1BhcmFtcywgZGVjbHR5cGUoZGVsKT4gYnVmZmVyc2lu a1BhcmFtcyhhdl9idWZmZXJzaW5rX3BhcmFtc19hbGxvYygpLCBkZWwpOworLQorLSAgICBhdmZp bHRlcl9yZWdpc3Rlcl9hbGwoKTsKKy0KKyAgICAgbV9wRmlsdGVyR3JhcGggPSBhdmZpbHRlcl9n cmFwaF9hbGxvYygpOworICAgICBhc3NlcnQobV9wRmlsdGVyR3JhcGgpOworIAorQEAgLTQwNCwx MCArNDAyLDggQEAKKyAKKyAgICAgY2hlY2tSYyhhdmZpbHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVy KCZtX3BGaWx0ZXJTb3VyY2UsIGF2ZmlsdGVyX2dldF9ieV9uYW1lKCJidWZmZXIiKSwgInRodW1i X2J1ZmZlciIsIHNzLnN0cigpLmNfc3RyKCksIG51bGxwdHIsIG1fcEZpbHRlckdyYXBoKSwKKyAg ICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBmaWx0ZXIgc291cmNlIik7CistICAgIGJ1ZmZl cnNpbmtQYXJhbXMtPnBpeGVsX2ZtdHMgPSBwaXhlbEZvcm1hdHM7CistICAgIGNoZWNrUmMoYXZm aWx0ZXJfZ3JhcGhfY3JlYXRlX2ZpbHRlcigmbV9wRmlsdGVyU2luaywgYXZmaWx0ZXJfZ2V0X2J5 X25hbWUoImJ1ZmZlcnNpbmsiKSwgInRodW1iX2J1ZmZlcnNpbmsiLCBudWxscHRyLCBidWZmZXJz aW5rUGFyYW1zLmdldCgpLCBtX3BGaWx0ZXJHcmFwaCksCisrICAgIGNoZWNrUmMoYXZmaWx0ZXJf Z3JhcGhfY3JlYXRlX2ZpbHRlcigmbV9wRmlsdGVyU2luaywgYXZmaWx0ZXJfZ2V0X2J5X25hbWUo ImJ1ZmZlcnNpbmsiKSwgInRodW1iX2J1ZmZlcnNpbmsiLCBudWxscHRyLCBudWxscHRyLCBtX3BG aWx0ZXJHcmFwaCksCisgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgZmlsdGVyIHNpbmsi KTsKKy0gICAgYnVmZmVyc2lua1BhcmFtcy5yZWxlYXNlKCk7CisgCisgICAgIEFWRmlsdGVyQ29u dGV4dCogeWFkaWZGaWx0ZXIgPSBudWxscHRyOworICAgICBpZiAobV9wRnJhbWUtPmludGVybGFj ZWRfZnJhbWUgIT0gMCkKK0BAIC01MDAsMTUgKzQ5NiwxNSBAQAorICAgICB9CisgCisgICAgIGNo ZWNrUmMoYXZfc2Vla19mcmFtZShtX3BGb3JtYXRDb250ZXh0LCAtMSwgdGltZXN0YW1wLCAwKSwg IlNlZWtpbmcgaW4gdmlkZW8gZmFpbGVkIik7CistICAgIGF2Y29kZWNfZmx1c2hfYnVmZmVycyht X3BGb3JtYXRDb250ZXh0LT5zdHJlYW1zW21fVmlkZW9TdHJlYW1dLT5jb2RlYyk7CisrICAgIGF2 Y29kZWNfZmx1c2hfYnVmZmVycyhtX3BWaWRlb0NvZGVjQ29udGV4dCk7CisgCisgICAgIGludCBr ZXlGcmFtZUF0dGVtcHRzID0gMDsKKy0gICAgYm9vbCBnb3RGcmFtZSA9IDA7CisrICAgIGJvb2wg Z290RnJhbWU7CisgCisgICAgIGRvCisgICAgIHsKKyAgICAgICAgIGludCBjb3VudCA9IDA7Cist ICAgICAgICBnb3RGcmFtZSA9IDA7CisrICAgICAgICBnb3RGcmFtZSA9IGZhbHNlOworIAorICAg ICAgICAgd2hpbGUgKCFnb3RGcmFtZSAmJiBjb3VudCA8IDIwKQorICAgICAgICAgeworQEAgLTU1 MiwxNyArNTQ4LDMzIEBACisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KKyAKKy0gICAg YXZfZnJhbWVfdW5yZWYobV9wRnJhbWUpOworLQorLSAgICBpbnQgZnJhbWVGaW5pc2hlZDsKKysg ICAgaW50IHJjID0gYXZjb2RlY19zZW5kX3BhY2tldChtX3BWaWRlb0NvZGVjQ29udGV4dCwgbV9w UGFja2V0KTsKKysgICAgaWYocmMgPT0gQVZFUlJPUihFQUdBSU4pKQorKyAgICB7CisrICAgICAg ICByYyA9IDA7CisrICAgIH0KKyAKKy0gICAgaW50IGJ5dGVzRGVjb2RlZCA9IGF2Y29kZWNfZGVj b2RlX3ZpZGVvMihtX3BWaWRlb0NvZGVjQ29udGV4dCwgbV9wRnJhbWUsICZmcmFtZUZpbmlzaGVk LCBtX3BQYWNrZXQpOworLSAgICBpZiAoYnl0ZXNEZWNvZGVkIDwgMCkKKysgICAgaWYocmMgPT0g QVZFUlJPUl9FT0YpCisrICAgIHsKKysgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgfQorKyAg ICBlbHNlIGlmKHJjIDwgMCkKKyAgICAgeworLSAgICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIkZh aWxlZCB0byBkZWNvZGUgdmlkZW8gZnJhbWU6IGJ5dGVzRGVjb2RlZCA8IDAiKTsKKysgICAgICAg IHRocm93IGxvZ2ljX2Vycm9yKCJGYWlsZWQgdG8gZGVjb2RlIHZpZGVvIGZyYW1lOiBhdmNvZGVj X3NlbmRfcGFja2V0KCkgPCAwIik7CisgICAgIH0KKyAKKy0gICAgcmV0dXJuIGZyYW1lRmluaXNo ZWQgPiAwOworKyAgICByYyA9IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZShtX3BWaWRlb0NvZGVjQ29u dGV4dCwgbV9wRnJhbWUpOworKyAgICBzd2l0Y2gocmMpCisrICAgIHsKKysgICAgICAgIGNhc2Ug MDoKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysKKysgICAgICAgIGNhc2UgQVZFUlJPUihF QUdBSU4pOgorKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysKKysgICAgICAgIGRlZmF1bHQ6 CisrICAgICAgICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIkZhaWxlZCB0byBkZWNvZGUgdmlkZW8g ZnJhbWU6IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZSgpIDwgMCIpOworKyAgICB9CisgfQorIAorIGJv b2wgTW92aWVEZWNvZGVyOjpnZXRWaWRlb1BhY2tldCgpCitAQCAtNTcwLDggKzU4Miw2IEBACisg ICAgIGJvb2wgZnJhbWVzQXZhaWxhYmxlID0gdHJ1ZTsKKyAgICAgYm9vbCBmcmFtZURlY29kZWQg PSBmYWxzZTsKKyAKKy0gICAgaW50IGF0dGVtcHRzID0gMDsKKy0KKyAgICAgaWYgKG1fcFBhY2tl dCkKKyAgICAgeworICAgICAgICAgYXZfcGFja2V0X3VucmVmKG1fcFBhY2tldCk7CitAQCAtNTgw LDYgKzU5MCw3IEBACisgCisgICAgIG1fcFBhY2tldCA9IG5ldyBBVlBhY2tldCgpOworIAorKwor ICAgICB3aGlsZSAoZnJhbWVzQXZhaWxhYmxlICYmICFmcmFtZURlY29kZWQpCisgICAgIHsKKyAg ICAgICAgIGZyYW1lc0F2YWlsYWJsZSA9IGF2X3JlYWRfZnJhbWUobV9wRm9ybWF0Q29udGV4dCwg bV9wUGFja2V0KSA+PSAwOworQEAgLTY0NCw3ICs2NTUsNyBAQAorIAorIGludDMyX3QgTW92aWVE ZWNvZGVyOjpnZXRTdHJlYW1Sb3RhdGlvbigpCisgeworLSAgICBpbnQzMl90KiBtYXRyaXggPSBy ZWludGVycHJldF9jYXN0PGludDMyX3QqPihhdl9zdHJlYW1fZ2V0X3NpZGVfZGF0YShtX3BWaWRl b1N0cmVhbSwgQVZfUEtUX0RBVEFfRElTUExBWU1BVFJJWCwgbnVsbHB0cikpOworKyAgICBhdXRv IG1hdHJpeCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KGF2X3N0cmVhbV9nZXRfc2lkZV9k YXRhKG1fcFZpZGVvU3RyZWFtLCBBVl9QS1RfREFUQV9ESVNQTEFZTUFUUklYLCBudWxscHRyKSk7 CisgICAgIGlmIChtYXRyaXgpCisgICAgIHsKKyAgICAgICAgIGF1dG8gYW5nbGUgPSBscm91bmQo YXZfZGlzcGxheV9yb3RhdGlvbl9nZXQobWF0cml4KSk7CisKKy0tLSBhL2xpYmZmbXBlZ3RodW1i bmFpbGVyL21vdmllZGVjb2Rlci5oCTIwMTctMTEtMTIgMDQ6MjM6MzguMDAwMDAwMDAwIC0wNTAw CisrKysgYi9saWJmZm1wZWd0aHVtYm5haWxlci9tb3ZpZWRlY29kZXIuaAkyMDIzLTA1LTA1IDEz OjI2OjA3LjA5NTUyOTkxMSAtMDQwMAorQEAgLTc4LDcgKzc4LDcgQEAKKyAgICAgaW50ICAgICAg ICAgICAgICAgICAgICAgbV9WaWRlb1N0cmVhbTsNCisgICAgIEFWRm9ybWF0Q29udGV4dCogICAg ICAgIG1fcEZvcm1hdENvbnRleHQ7DQorICAgICBBVkNvZGVjQ29udGV4dCogICAgICAgICBtX3BW aWRlb0NvZGVjQ29udGV4dDsNCistICAgIEFWQ29kZWMqICAgICAgICAgICAgICAgIG1fcFZpZGVv Q29kZWM7DQorKyAgICBjb25zdCBBVkNvZGVjKiAgICAgICAgICBtX3BWaWRlb0NvZGVjOw0KKyAg ICAgQVZGaWx0ZXJHcmFwaCogICAgICAgICAgbV9wRmlsdGVyR3JhcGg7DQorICAgICBBVkZpbHRl ckNvbnRleHQqICAgICAgICBtX3BGaWx0ZXJTb3VyY2U7DQorICAgICBBVkZpbHRlckNvbnRleHQq ICAgICAgICBtX3BGaWx0ZXJTaW5rOw0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVndGh1bWJu YWlsZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3RlbXBsYXRlCmluZGV4 IDAzOWVlYTc2MjJiMzkuLjM1ZDU0NjAxOGQxMmEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZmZtcGVn dGh1bWJuYWlsZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZmbXBlZ3RodW1ibmFp bGVyJwogcGtnbmFtZT1mZm1wZWd0aHVtYm5haWxlcgogdmVyc2lvbj0yLjIuMgotcmV2aXNpb249 MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNv bmZpZyIKIG1ha2VkZXBlbmRzPSJsaWJwbmctZGV2ZWwgbGlianBlZy10dXJiby1kZXZlbCBmZm1w ZWctZGV2ZWwiCkBAIC05LDggKzksOCBAQCBkZXBlbmRzPSJmZm1wZWciCiBzaG9ydF9kZXNjPSJM aWdodHdlaWdodCB2aWRlbyB0aHVtYm5haWxlciIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBo YW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyIgotaG9tZXBhZ2U9 Imh0dHBzOi8vZ2l0aHViLmNvbS9kaXJrdmRiLyR7cGtnbmFtZX0iCi1kaXN0ZmlsZXM9IiR7aG9t ZXBhZ2V9L3JlbGVhc2VzL2Rvd25sb2FkLyR7dmVyc2lvbn0vJHtwa2duYW1lfS0ke3ZlcnNpb259 LnRhci5iejIiCitob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL2Rpcmt2ZGIiCitkaXN0Zmls ZXM9IiR7aG9tZXBhZ2V9LyR7cGtnbmFtZX0vcmVsZWFzZXMvZG93bmxvYWQvJHt2ZXJzaW9ufS8k e3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLmJ6MiIKIGNoZWNrc3VtPTFjYjI0MDU5YzM4MjIzZjY1 N2IzMDBjODRkZDgwNDkxYjcwNDBkNGI2OTQ3MWM0ZmVhNjliZTg2MmJjOTliNWIKIAogcG9zdF9p bnN0YWxsKCkgewoKRnJvbSBiZWEyYTkxMWNmMTNkMDFjNjI1MGVkZjYwY2Y4MDJmOGYzZTQyN2Vi IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw MzQvMTE1XSBmZm1wZWd0aHVtYnM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZ3RodW1icy90 ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlCmluZGV4IDVmMGI5NDE0ZGFk YWYuLjExYjg4MTkzNTI4ZjQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnZmZtcGVndGh1bWJzJwogcGtnbmFtZT1mZm1wZWd0aHVtYnMK IHZlcnNpb249MjIuMTIuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21h a2UKIGhvc3RtYWtlZGVwZW5kcz0iZXh0cmEtY21ha2UtbW9kdWxlcyBrY29yZWFkZG9ucyBrY29u ZmlnLWRldmVsCiAgcGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UgZ2V0dGV4dCIK CkZyb20gYmIzZTBiMTIzN2ZjNTNhODYyNGZmOGI5MWFmNGY0NWQ3ODBhN2NlZSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM1LzExNV0gZmZt czI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9mZm1zMi9wYXRjaGVzL2Zm bXBlZzUucGF0Y2ggfCA0MjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9m Zm1zMi90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNDI1 IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtczIv cGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9mZm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMTQ3OWZhYmNhZmNi NAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNo CkBAIC0wLDAgKzEsNDI0IEBACitGcm9tIDQ1NjczMTQ5ZTlhMmY1NTg2ODU1YWQ0NzJlMzA1OTA4 NGVhYTM2YjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZXJlayBCdWl0ZW5odWlz IDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNCBNYXkgMjAyMSAxNDo0 MToyMSArMDEwMAorU3ViamVjdDogW1BBVENIXSBVc2UgYXV0byBmb3IgQVZDb2RlYworCitUaGUg Z2VuaXVzZXMgb3ZlciBhdCBGRm1wZWcgZGVjaWRlZCB0byBjb25zdGlmeSB0aGlzIEFQSSwgc28g b2xkCit2ZXJzaW9ucyBvZiB0aGUgbGlicmFyeSB3aWxsIHJldHVybiBBVkNvZGVjICosIHdoaWxl IG5ldyB2ZXJzaW9ucworb2YgdGhlIGxpYmFyeSB3aWxsIHJldHVybiBjb25zdCBBVkNvZGVjICos IHdoaWNoLCBpbiBDKyssIGFyZSBub3QKK09LIHRvIGNvbnZlcnQgYmV0d2Vlbi4KKworUmF0aGVy IHRoYW4gdXNlIHNvbWUgbWFjcm8gaGVsbCBpbiBmZm1zY29tcGF0LmgsIHdlIGNhbiB3b3JrIGFy b3VuZAordGhpcyBieSB1c2luZyBhdXRvLgorCitHcm9zcy4KKworU2lnbmVkLW9mZi1ieTogRGVy ZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CistLS0KKyBzcmMvY29y ZS9hdWRpb3NvdXJjZS5jcHAgfCAyICstCisgc3JjL2NvcmUvaW5kZXhpbmcuY3BwICAgIHwgNiAr KystLS0KKyBzcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2Vk LCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29y ZS9hdWRpb3NvdXJjZS5jcHAgYi9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKK2luZGV4IGU0Y2U5 N2MuLmFjMDk2NjYgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKKysrKyBi L3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAorQEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIEZGTVNf QXVkaW9Tb3VyY2U6Ok9wZW5GaWxlKCkgeworIAorICAgICBMQVZGT3BlbkZpbGUoU291cmNlRmls ZS5jX3N0cigpLCBGb3JtYXRDb250ZXh0LCBUcmFja051bWJlcik7CisgCistICAgIEFWQ29kZWMg KkNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFj a051bWJlcl0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAgIGF1dG8gKkNvZGVjID0gYXZjb2Rl Y19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja051bWJlcl0tPmNvZGVj cGFyLT5jb2RlY19pZCk7CisgICAgIGlmIChDb2RlYyA9PSBudWxscHRyKQorICAgICAgICAgdGhy b3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9ERUNPRElORywgRkZNU19FUlJPUl9DT0RFQywK KyAgICAgICAgICAgICAiQXVkaW8gY29kZWMgbm90IGZvdW5kIik7CitkaWZmIC0tZ2l0IGEvc3Jj L2NvcmUvaW5kZXhpbmcuY3BwIGIvc3JjL2NvcmUvaW5kZXhpbmcuY3BwCitpbmRleCBlNTQ3YzVh Li41OWZiNGU4IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvaW5kZXhpbmcuY3BwCisrKysgYi9zcmMv Y29yZS9pbmRleGluZy5jcHAKK0BAIC0zODQsNyArMzg0LDcgQEAgRkZNU19UcmFja1R5cGUgRkZN U19JbmRleGVyOjpHZXRUcmFja1R5cGUoaW50IFRyYWNrKSB7CisgfQorIAorIGNvbnN0IGNoYXIg KkZGTVNfSW5kZXhlcjo6R2V0VHJhY2tDb2RlYyhpbnQgVHJhY2spIHsKKy0gICAgQVZDb2RlYyAq Y29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNr XS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysgICAgYXV0byAqY29kZWMgPSBhdmNvZGVjX2ZpbmRf ZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lk KTsKKyAgICAgcmV0dXJuIGNvZGVjID8gY29kZWMtPm5hbWUgOiBudWxscHRyOworIH0KKyAKK0BA IC00MDIsNyArNDAyLDcgQEAgRkZNU19JbmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkg eworICAgICAgICAgICAgIFVzZURUUyk7CisgCisgICAgICAgICBpZiAoSW5kZXhNYXNrLmNvdW50 KGkpICYmIEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY190eXBlID09 IEFWTUVESUFfVFlQRV9WSURFTykgeworLSAgICAgICAgICAgIEFWQ29kZWMgKlZpZGVvQ29kZWMg PSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3Bh ci0+Y29kZWNfaWQpOworKyAgICAgICAgICAgIGF1dG8gKlZpZGVvQ29kZWMgPSBhdmNvZGVjX2Zp bmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfaWQp OworICAgICAgICAgICAgIGlmICghVmlkZW9Db2RlYykgeworICAgICAgICAgICAgICAgICBGb3Jt YXRDb250ZXh0LT5zdHJlYW1zW2ldLT5kaXNjYXJkID0gQVZESVNDQVJEX0FMTDsKKyAgICAgICAg ICAgICAgICAgSW5kZXhNYXNrLmVyYXNlKGkpOworQEAgLTQzMyw3ICs0MzMsNyBAQCBGRk1TX0lu ZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgICAgIEluZGV4 TWFzay5pbnNlcnQoaSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgfSBlbHNlIGlmIChJbmRl eE1hc2suY291bnQoaSkgJiYgRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNv ZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElPKSB7CistICAgICAgICAgICAgQVZDb2RlYyAq QXVkaW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNb aV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAgICAgICAgICAgYXV0byAqQXVkaW9Db2RlYyA9 IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFy LT5jb2RlY19pZCk7CisgICAgICAgICAgICAgaWYgKEF1ZGlvQ29kZWMgPT0gbnVsbHB0cikKKyAg ICAgICAgICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9DT0RFQywgRkZN U19FUlJPUl9VTlNVUFBPUlRFRCwKKyAgICAgICAgICAgICAgICAgICAgICJBdWRpbyBjb2RlYyBu b3QgZm91bmQiKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgYi9zcmMv Y29yZS92aWRlb3NvdXJjZS5jcHAKK2luZGV4IGI4ODk5NzAuLjg5NTZjMjIgMTAwNjQ0CistLS0g YS9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKKysrKyBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNw cAorQEAgLTE3MSw3ICsxNzEsNyBAQCBGRk1TX1ZpZGVvU291cmNlOjpGRk1TX1ZpZGVvU291cmNl KGNvbnN0IGNoYXIgKlNvdXJjZUZpbGUsIEZGTVNfSW5kZXggJkluZGV4LCBpbgorIAorICAgICAg ICAgTEFWRk9wZW5GaWxlKFNvdXJjZUZpbGUsIEZvcm1hdENvbnRleHQsIFZpZGVvVHJhY2spOwor IAorLSAgICAgICAgQVZDb2RlYyAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRD b250ZXh0LT5zdHJlYW1zW1ZpZGVvVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAgICAg ICAgYXV0byAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJl YW1zW1ZpZGVvVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworICAgICAgICAgaWYgKENvZGVj ID09IG51bGxwdHIpCisgICAgICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJP Ul9ERUNPRElORywgRkZNU19FUlJPUl9DT0RFQywKKyAgICAgICAgICAgICAgICAgIlZpZGVvIGNv ZGVjIG5vdCBmb3VuZCIpOworLS0gCisyLjQwLjAKKworRnJvbSA5NmNiZjM4ZWE5MzgxODI5YTEz MTRmNDMyYTJjNjA0OTVkY2VmYWFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVy ZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CitEYXRlOiBUdWUsIDQg TWF5IDIwMjEgMTQ6MTI6NDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gYWxsOiBVcGRhdGUgQVZQ YWNrZXQgQVBJIHVzYWdlCisKK0FWUGFja2V0cyBtdXN0IGFsbCBiZSBvbiB0aGUgaGVhcCBub3cs IHNpbmNlIGl0IGlzIG5vIGxvbmdlcgorcGFydCBvZiB0aGUgbGliYXYqIEFCSS4KKworU2lnbmVk LW9mZi1ieTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+Cist LS0KKyBzcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAgfCAxNiArKysrKystLS0tCisgc3JjL2NvcmUv aW5kZXhpbmcuY3BwICAgIHwgNjMgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLQorIHNyYy9jb3JlL2luZGV4aW5nLmggICAgICB8ICA0ICstLQorIHNyYy9jb3JlL3V0aWxz LmNwcCAgICAgICB8ICA2IC0tLS0KKyBzcmMvY29yZS91dGlscy5oICAgICAgICAgfCAgMSAtCisg c3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwIHwgMzAgKysrKysrKysrKy0tLS0tLS0tLQorIDYgZmls ZXMgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1n aXQgYS9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAgYi9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAK K2luZGV4IDM3Y2Y5YWUuLmU0Y2U5N2MgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9hdWRpb3NvdXJj ZS5jcHAKKysrKyBiL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAorQEAgLTI4NSwxMCArMjg1LDE1 IEBAIEZGTVNfQXVkaW9Tb3VyY2U6OkF1ZGlvQmxvY2sgKkZGTVNfQXVkaW9Tb3VyY2U6OkNhY2hl QmxvY2soQ2FjaGVJdGVyYXRvciAmcG9zKSB7CisgaW50IEZGTVNfQXVkaW9Tb3VyY2U6OkRlY29k ZU5leHRCbG9jayhDYWNoZUl0ZXJhdG9yICpwb3MpIHsKKyAgICAgQ3VycmVudEZyYW1lID0gJkZy YW1lc1tQYWNrZXROdW1iZXJdOworIAorLSAgICBBVlBhY2tldCBQYWNrZXQ7CistICAgIGlmICgh UmVhZFBhY2tldCgmUGFja2V0KSkKKysgICAgQVZQYWNrZXQgKlBhY2tldCA9IGF2X3BhY2tldF9h bGxvYygpOworKyAgICBpZiAoIVBhY2tldCkKKysgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9u KEZGTVNfRVJST1JfUEFSU0VSLCBGRk1TX0VSUk9SX0FMTE9DQVRJT05fRkFJTEVELAorKyAgICAg ICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgcGFja2V0LiIpOworKyAgICBpZiAoIVJlYWRQYWNr ZXQoUGFja2V0KSkgeworKyAgICAgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgICAgICAg ICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX1BBUlNFUiwgRkZNU19FUlJPUl9VTktO T1dOLAorICAgICAgICAgICAgICJSZWFkUGFja2V0IHVuZXhwZWN0ZWRseSBmYWlsZWQgdG8gcmVh ZCBhIHBhY2tldCIpOworKyAgICB9CisgCisgICAgIC8vIFJlYWRQYWNrZXQgbWF5IGhhdmUgY2hh bmdlZCB0aGUgcGFja2V0IG51bWJlcgorICAgICBDdXJyZW50RnJhbWUgPSAmRnJhbWVzW1BhY2tl dE51bWJlcl07CitAQCAtMjk3LDggKzMwMiw5IEBAIGludCBGRk1TX0F1ZGlvU291cmNlOjpEZWNv ZGVOZXh0QmxvY2soQ2FjaGVJdGVyYXRvciAqcG9zKSB7CisgICAgIGludCBOdW1iZXJPZlNhbXBs ZXMgPSAwOworICAgICBBdWRpb0Jsb2NrICpDYWNoZWRCbG9jayA9IG51bGxwdHI7CisgICAgIAor LSAgICBpbnQgUmV0ID0gYXZjb2RlY19zZW5kX3BhY2tldChDb2RlY0NvbnRleHQsICZQYWNrZXQp OworLSAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7CisrICAgIGludCBSZXQgPSBhdmNvZGVj X3NlbmRfcGFja2V0KENvZGVjQ29udGV4dCwgUGFja2V0KTsKKysgICAgYXZfcGFja2V0X3VucmVm KFBhY2tldCk7CisrICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworIAorICAgICBhdl9mcmFt ZV91bnJlZihEZWNvZGVGcmFtZSk7CisgICAgIFJldCA9IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZShD b2RlY0NvbnRleHQsIERlY29kZUZyYW1lKTsKK0BAIC01MTMsOCArNTE5LDYgQEAgdm9pZCBGRk1T X0F1ZGlvU291cmNlOjpTZWVrKCkgeworIH0KKyAKKyBib29sIEZGTVNfQXVkaW9Tb3VyY2U6OlJl YWRQYWNrZXQoQVZQYWNrZXQgKlBhY2tldCkgeworLSAgICBJbml0TnVsbFBhY2tldCgqUGFja2V0 KTsKKy0KKyAgICAgd2hpbGUgKGF2X3JlYWRfZnJhbWUoRm9ybWF0Q29udGV4dCwgUGFja2V0KSA+ PSAwKSB7CisgICAgICAgICBpZiAoUGFja2V0LT5zdHJlYW1faW5kZXggPT0gVHJhY2tOdW1iZXIp IHsKKyAgICAgICAgICAgICAvLyBSZXF1aXJlZCBiZWNhdXNlIG5vdCBhbGwgYXVkaW8gcGFja2V0 cywgZXNwZWNpYWxseSBpbiBvZ2csIGhhdmUgYSBwdHMuIFVzZSB0aGUgcHJldmlvdXMgdmFsaWQg cGFja2V0J3MgcHRzIGluc3RlYWQuCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvaW5kZXhpbmcuY3Bw IGIvc3JjL2NvcmUvaW5kZXhpbmcuY3BwCitpbmRleCAyM2ZiOTViLi5lNTQ3YzVhIDEwMDY0NAor LS0tIGEvc3JjL2NvcmUvaW5kZXhpbmcuY3BwCisrKysgYi9zcmMvY29yZS9pbmRleGluZy5jcHAK K0BAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBGRk1TX0luZGV4ZXI6OkNoZWNrQXVkaW9Qcm9wZXJ0 aWVzKGludCBUcmFjaywgQVZDb2RlY0NvbnRleHQgKkNvbnRleHQpIHsKKyAgICAgfQorIH0KKyAK Ky12b2lkIEZGTVNfSW5kZXhlcjo6UGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZp ZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBrdCwgaW50ICpSZXBlYXRQaWN0LAorK3ZvaWQgRkZNU19J bmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBB VlBhY2tldCAqcGt0LCBpbnQgKlJlcGVhdFBpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50ICpGcmFtZVR5cGUsIGJvb2wgKkludmlzaWJsZSwgZW51bSBBVlBpY3R1 cmVTdHJ1Y3R1cmUgKkxhc3RQaWNTdHJ1Y3QpIHsKKyAgICAgaWYgKFZpZGVvQ29udGV4dC5QYXJz ZXIpIHsKKyAgICAgICAgIHVpbnQ4X3QgKk9COworQEAgLTMzMCw4ICszMzAsOCBAQCB2b2lkIEZG TVNfSW5kZXhlcjo6UGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4 dCwgQVZQYWNrZXQgJnBrdAorICAgICAgICAgYXZfcGFyc2VyX3BhcnNlMihWaWRlb0NvbnRleHQu UGFyc2VyLAorICAgICAgICAgICAgIFZpZGVvQ29udGV4dC5Db2RlY0NvbnRleHQsCisgICAgICAg ICAgICAgJk9CLCAmT0JTaXplLAorLSAgICAgICAgICAgIHBrdC5kYXRhLCBwa3Quc2l6ZSwKKy0g ICAgICAgICAgICBwa3QucHRzLCBwa3QuZHRzLCBwa3QucG9zKTsKKysgICAgICAgICAgICBwa3Qt PmRhdGEsIHBrdC0+c2l6ZSwKKysgICAgICAgICAgICBwa3QtPnB0cywgcGt0LT5kdHMsIHBrdC0+ cG9zKTsKKyAKKyAgICAgICAgIC8vIEguMjY0IChQQUZGKSBhbmQgSEVWQyBtYXkgaGF2ZSBvbmUg ZmllbGQgcGVyIHBhY2tldCwgc28gd2UgbmVlZCB0byB0cmFjaworICAgICAgICAgLy8gd2hlbiB3 ZSBoYXZlIGEgZnVsbCBvciBoYWxmIGZyYW1lIGF2YWlsYWJsZSwgYW5kIG1hcmsgb25lIG9mIHRo ZW0gYXMKK0BAIC0zNTEsMTUgKzM1MSwxNSBAQCB2b2lkIEZGTVNfSW5kZXhlcjo6UGFyc2VWaWRl b1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBrdAorIAor ICAgICAgICAgKlJlcGVhdFBpY3QgPSBWaWRlb0NvbnRleHQuUGFyc2VyLT5yZXBlYXRfcGljdDsK KyAgICAgICAgICpGcmFtZVR5cGUgPSBWaWRlb0NvbnRleHQuUGFyc2VyLT5waWN0X3R5cGU7Cist ICAgICAgICAqSW52aXNpYmxlID0gKEluY29tcGxldGVGcmFtZSB8fCBWaWRlb0NvbnRleHQuUGFy c2VyLT5yZXBlYXRfcGljdCA8IDAgfHwgKHBrdC5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQp KTsKKysgICAgICAgICpJbnZpc2libGUgPSAoSW5jb21wbGV0ZUZyYW1lIHx8IFZpZGVvQ29udGV4 dC5QYXJzZXItPnJlcGVhdF9waWN0IDwgMCB8fCAocGt0LT5mbGFncyAmIEFWX1BLVF9GTEFHX0RJ U0NBUkQpKTsKKyAgICAgfSBlbHNlIHsKKy0gICAgICAgICpJbnZpc2libGUgPSAhIShwa3QuZmxh Z3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKTsKKysgICAgICAgICpJbnZpc2libGUgPSAhIShwa3Qt PmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCk7CisgICAgIH0KKyAKKyAgICAgaWYgKFZpZGVv Q29udGV4dC5Db2RlY0NvbnRleHQtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOCkKKy0gICAg ICAgIFBhcnNlVlA4KHBrdC5kYXRhWzBdLCBJbnZpc2libGUsIEZyYW1lVHlwZSk7CisrICAgICAg ICBQYXJzZVZQOChwa3QtPmRhdGFbMF0sIEludmlzaWJsZSwgRnJhbWVUeXBlKTsKKyAgICAgZWxz ZSBpZiAoVmlkZW9Db250ZXh0LkNvZGVjQ29udGV4dC0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf VlA5KQorLSAgICAgICAgUGFyc2VWUDkocGt0LmRhdGFbMF0sIEludmlzaWJsZSwgRnJhbWVUeXBl KTsKKysgICAgICAgIFBhcnNlVlA5KHBrdC0+ZGF0YVswXSwgSW52aXNpYmxlLCBGcmFtZVR5cGUp OworIH0KKyAKKyB2b2lkIEZGTVNfSW5kZXhlcjo6RnJlZSgpIHsKK0BAIC00NTgsMzIgKzQ1OCwz NiBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICB9 CisgICAgIH0KKyAKKy0gICAgQVZQYWNrZXQgUGFja2V0OworLSAgICBJbml0TnVsbFBhY2tldChQ YWNrZXQpOworKyAgICBBVlBhY2tldCAqUGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrICAg IGlmICghUGFja2V0KQorKyAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9D T0RFQywgRkZNU19FUlJPUl9BTExPQ0FUSU9OX0ZBSUxFRCwKKysgICAgICAgICAgICAiQ291bGQg bm90IGFsbG9jYXRlIHBhY2tldC4iKTsKKyAgICAgc3RkOjp2ZWN0b3I8aW50NjRfdD4gTGFzdFZh bGlkVFMoRm9ybWF0Q29udGV4dC0+bmJfc3RyZWFtcywgQVZfTk9QVFNfVkFMVUUpOworIAorICAg ICBpbnQ2NF90IGZpbGVzaXplID0gYXZpb19zaXplKEZvcm1hdENvbnRleHQtPnBiKTsKKyAgICAg ZW51bSBBVlBpY3R1cmVTdHJ1Y3R1cmUgTGFzdFBpY1N0cnVjdCA9IEFWX1BJQ1RVUkVfU1RSVUNU VVJFX1VOS05PV047CistICAgIHdoaWxlIChhdl9yZWFkX2ZyYW1lKEZvcm1hdENvbnRleHQsICZQ YWNrZXQpID49IDApIHsKKysgICAgd2hpbGUgKGF2X3JlYWRfZnJhbWUoRm9ybWF0Q29udGV4dCwg UGFja2V0KSA+PSAwKSB7CisgICAgICAgICAvLyBVcGRhdGUgcHJvZ3Jlc3MKKyAgICAgICAgIC8v IEZvcm1hdENvbnRleHQtPnBiIGNhbiBhcHBhcmVudGx5IGJlIE5VTEwgd2hlbiBvcGVuaW5nIGlt YWdlcy4KKyAgICAgICAgIGlmIChJQyAmJiBGb3JtYXRDb250ZXh0LT5wYikgeworLSAgICAgICAg ICAgIGlmICgoKklDKShGb3JtYXRDb250ZXh0LT5wYi0+cG9zLCBmaWxlc2l6ZSwgSUNQcml2YXRl KSkKKysgICAgICAgICAgICBpZiAoKCpJQykoRm9ybWF0Q29udGV4dC0+cGItPnBvcywgZmlsZXNp emUsIElDUHJpdmF0ZSkpIHsKKysgICAgICAgICAgICAgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tl dCk7CisgICAgICAgICAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfQ0FO Q0VMTEVELCBGRk1TX0VSUk9SX1VTRVIsCisgICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsbGVk IGJ5IHVzZXIiKTsKKysgICAgICAgICAgICB9CisgICAgICAgICB9CistICAgICAgICBpZiAoIUlu ZGV4TWFzay5jb3VudChQYWNrZXQuc3RyZWFtX2luZGV4KSkgeworLSAgICAgICAgICAgIGF2X3Bh Y2tldF91bnJlZigmUGFja2V0KTsKKysgICAgICAgIGlmICghSW5kZXhNYXNrLmNvdW50KFBhY2tl dC0+c3RyZWFtX2luZGV4KSkgeworKyAgICAgICAgICAgIGF2X3BhY2tldF91bnJlZihQYWNrZXQp OworICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgfQorIAorLSAgICAgICAgaW50IFRy YWNrID0gUGFja2V0LnN0cmVhbV9pbmRleDsKKysgICAgICAgIGludCBUcmFjayA9IFBhY2tldC0+ c3RyZWFtX2luZGV4OworICAgICAgICAgRkZNU19UcmFjayAmVHJhY2tJbmZvID0gKCpUcmFja0lu ZGljZXMpW1RyYWNrXTsKKy0gICAgICAgIGJvb2wgS2V5RnJhbWUgPSAhIShQYWNrZXQuZmxhZ3Mg JiBBVl9QS1RfRkxBR19LRVkpOworKyAgICAgICAgYm9vbCBLZXlGcmFtZSA9ICEhKFBhY2tldC0+ ZmxhZ3MgJiBBVl9QS1RfRkxBR19LRVkpOworICAgICAgICAgUmVhZFRTKFBhY2tldCwgTGFzdFZh bGlkVFNbVHJhY2tdLCAoKlRyYWNrSW5kaWNlcylbVHJhY2tdLlVzZURUUyk7CisgCisgICAgICAg ICBpZiAoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5jb2RlY190eXBl ID09IEFWTUVESUFfVFlQRV9WSURFTykgeworLSAgICAgICAgICAgIGludDY0X3QgUFRTID0gVHJh Y2tJbmZvLlVzZURUUyA/IFBhY2tldC5kdHMgOiBQYWNrZXQucHRzOworKyAgICAgICAgICAgIGlu dDY0X3QgUFRTID0gVHJhY2tJbmZvLlVzZURUUyA/IFBhY2tldC0+ZHRzIDogUGFja2V0LT5wdHM7 CisgICAgICAgICAgICAgaWYgKFBUUyA9PSBBVl9OT1BUU19WQUxVRSkgeworICAgICAgICAgICAg ICAgICAvLyBWUHggYWx0LXJlZnMgYXJlIG91dHB1dCBhcyBwYWNrZXRzIHdoaWNoIGxhY2sgdGlt ZXN0bXBzIG9yIGR1cmF0aW9ucywgc2luY2UKKyAgICAgICAgICAgICAgICAgLy8gdGhleSBhcmUg aW52aXNpYmxlLiBDdXJyZW50bHksIHRoZSB0aW1lc3RhbXAgbWFuZ2xpbmcgY29kZSBpbiBsaWJh dmZvcm1hdAorQEAgLTQ5NSw5ICs0OTksMTEgQEAgRkZNU19JbmRleCAqRkZNU19JbmRleGVyOjpE b0luZGV4aW5nKCkgeworICAgICAgICAgICAgICAgICAvLyBGRk1TMiBjdXJyZW50bHkgc29ydHMg cGFja2V0cyBieSBQVFMsIHdoaWNoIHdpbGwgYnJlYWsgZGVjb2RpbmcsIG90aGVyd2lzZS4KKyAg ICAgICAgICAgICAgICAgYm9vbCBIYXNBbHRSZWZzID0gKEZvcm1hdENvbnRleHQtPnN0cmVhbXNb VHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA4IHx8CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNr XS0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOSk7CistICAgICAgICAgICAg ICAgIGlmIChQYWNrZXQuZHVyYXRpb24gPT0gMCAmJiAhSGFzQWx0UmVmcykKKysgICAgICAgICAg ICAgICAgaWYgKFBhY2tldC0+ZHVyYXRpb24gPT0gMCAmJiAhSGFzQWx0UmVmcykgeworKyAgICAg ICAgICAgICAgICAgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgICAgICAgICAgICAgICAg ICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0lOREVYSU5HLCBGRk1TX0VSUk9S X1BBUlNFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBwYWNrZXQgcHRzLCBk dHMsIGFuZCBkdXJhdGlvbiIpOworKyAgICAgICAgICAgICAgICB9CisgCisgICAgICAgICAgICAg ICAgIGlmIChUcmFja0luZm8uZW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgIFBUUyA9IDA7 CitAQCAtNTEzLDcgKzUxOSw3IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGlu ZygpIHsKKyAgICAgICAgICAgICBQYXJzZVZpZGVvUGFja2V0KEFWQ29udGV4dHNbVHJhY2tdLCBQ YWNrZXQsICZSZXBlYXRQaWN0LCAmRnJhbWVUeXBlLCAmSW52aXNpYmxlLCAmTGFzdFBpY1N0cnVj dCk7CisgCisgICAgICAgICAgICAgVHJhY2tJbmZvLkFkZFZpZGVvRnJhbWUoUFRTLCBSZXBlYXRQ aWN0LCBLZXlGcmFtZSwKKy0gICAgICAgICAgICAgICAgRnJhbWVUeXBlLCBQYWNrZXQucG9zLCBJ bnZpc2libGUpOworKyAgICAgICAgICAgICAgICBGcmFtZVR5cGUsIFBhY2tldC0+cG9zLCBJbnZp c2libGUpOworICAgICAgICAgfSBlbHNlIGlmIChGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNr XS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElPKSB7CisgICAgICAg ICAgICAgLy8gRm9yIHZpZGVvIHNlZWtpbmcgdGltZXN0YW1wcyBhcmUgdXNlZCBvbmx5IGlmIGFs bCBwYWNrZXRzIGhhdmUKKyAgICAgICAgICAgICAvLyB0aW1lc3RhbXBzLCB3aGlsZSBmb3IgYXVk aW8gdGhleSdyZSB1c2VkIGlmIGFueSBoYXZlIHRpbWVzdGFtcHMsCitAQCAtNTIyLDI4ICs1Mjgs MjkgQEAgRkZNU19JbmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAg ICAgICAgICBUcmFja0luZm8uSGFzVFMgPSB0cnVlOworIAorICAgICAgICAgICAgIGludDY0X3Qg U3RhcnRTYW1wbGUgPSBBVkNvbnRleHRzW1RyYWNrXS5DdXJyZW50U2FtcGxlOworLSAgICAgICAg ICAgIHVpbnQzMl90IFNhbXBsZUNvdW50ID0gSW5kZXhBdWRpb1BhY2tldChUcmFjaywgJlBhY2tl dCwgQVZDb250ZXh0c1tUcmFja10sICpUcmFja0luZGljZXMpOworKyAgICAgICAgICAgIHVpbnQz Ml90IFNhbXBsZUNvdW50ID0gSW5kZXhBdWRpb1BhY2tldChUcmFjaywgUGFja2V0LCBBVkNvbnRl eHRzW1RyYWNrXSwgKlRyYWNrSW5kaWNlcyk7CisgICAgICAgICAgICAgVHJhY2tJbmZvLlNhbXBs ZVJhdGUgPSBBVkNvbnRleHRzW1RyYWNrXS5Db2RlY0NvbnRleHQtPnNhbXBsZV9yYXRlOworIAor ICAgICAgICAgICAgIFRyYWNrSW5mby5BZGRBdWRpb0ZyYW1lKExhc3RWYWxpZFRTW1RyYWNrXSwK Ky0gICAgICAgICAgICAgICAgU3RhcnRTYW1wbGUsIFNhbXBsZUNvdW50LCBLZXlGcmFtZSwgUGFj a2V0LnBvcywgUGFja2V0LmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCk7CisrICAgICAgICAg ICAgICAgIFN0YXJ0U2FtcGxlLCBTYW1wbGVDb3VudCwgS2V5RnJhbWUsIFBhY2tldC0+cG9zLCBQ YWNrZXQtPmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCk7CisgICAgICAgICB9CisgCistICAg ICAgICBpZiAoIShQYWNrZXQuZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKSkKKy0gICAgICAg ICAgICBUcmFja0luZm8uTGFzdER1cmF0aW9uID0gUGFja2V0LmR1cmF0aW9uOworKyAgICAgICAg aWYgKCEoUGFja2V0LT5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpKQorKyAgICAgICAgICAg IFRyYWNrSW5mby5MYXN0RHVyYXRpb24gPSBQYWNrZXQtPmR1cmF0aW9uOworIAorLSAgICAgICAg YXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworKyAgICAgICAgYXZfcGFja2V0X3VucmVmKFBhY2tl dCk7CisgICAgIH0KKysgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgCisgICAgIFRyYWNr SW5kaWNlcy0+RmluYWxpemUoQVZDb250ZXh0cywgRm9ybWF0Q29udGV4dC0+aWZvcm1hdC0+bmFt ZSk7CisgICAgIHJldHVybiBUcmFja0luZGljZXMucmVsZWFzZSgpOworIH0KKyAKKy12b2lkIEZG TVNfSW5kZXhlcjo6UmVhZFRTKGNvbnN0IEFWUGFja2V0ICZQYWNrZXQsIGludDY0X3QgJlRTLCBi b29sICZVc2VEVFMpIHsKKy0gICAgaWYgKCFVc2VEVFMgJiYgUGFja2V0LnB0cyAhPSBBVl9OT1BU U19WQUxVRSkKKy0gICAgICAgIFRTID0gUGFja2V0LnB0czsKKyt2b2lkIEZGTVNfSW5kZXhlcjo6 UmVhZFRTKGNvbnN0IEFWUGFja2V0ICpQYWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VEVFMp IHsKKysgICAgaWYgKCFVc2VEVFMgJiYgUGFja2V0LT5wdHMgIT0gQVZfTk9QVFNfVkFMVUUpCisr ICAgICAgICBUUyA9IFBhY2tldC0+cHRzOworICAgICBpZiAoVFMgPT0gQVZfTk9QVFNfVkFMVUUp CisgICAgICAgICBVc2VEVFMgPSB0cnVlOworLSAgICBpZiAoVXNlRFRTICYmIFBhY2tldC5kdHMg IT0gQVZfTk9QVFNfVkFMVUUpCistICAgICAgICBUUyA9IFBhY2tldC5kdHM7CisrICAgIGlmIChV c2VEVFMgJiYgUGFja2V0LT5kdHMgIT0gQVZfTk9QVFNfVkFMVUUpCisrICAgICAgICBUUyA9IFBh Y2tldC0+ZHRzOworIH0KK2RpZmYgLS1naXQgYS9zcmMvY29yZS9pbmRleGluZy5oIGIvc3JjL2Nv cmUvaW5kZXhpbmcuaAoraW5kZXggM2NmYzNjMy4uNWMwNjg2OCAxMDA2NDQKKy0tLSBhL3NyYy9j b3JlL2luZGV4aW5nLmgKKysrKyBiL3NyYy9jb3JlL2luZGV4aW5nLmgKK0BAIC04MCwxMCArODAs MTAgQEAgcHJpdmF0ZToKKyAgICAgaW50NjRfdCBGaWxlc2l6ZTsKKyAgICAgdWludDhfdCBEaWdl c3RbMjBdOworIAorLSAgICB2b2lkIFJlYWRUUyhjb25zdCBBVlBhY2tldCAmUGFja2V0LCBpbnQ2 NF90ICZUUywgYm9vbCAmVXNlRFRTKTsKKysgICAgdm9pZCBSZWFkVFMoY29uc3QgQVZQYWNrZXQg KlBhY2tldCwgaW50NjRfdCAmVFMsIGJvb2wgJlVzZURUUyk7CisgICAgIHZvaWQgQ2hlY2tBdWRp b1Byb3BlcnRpZXMoaW50IFRyYWNrLCBBVkNvZGVjQ29udGV4dCAqQ29udGV4dCk7CisgICAgIHVp bnQzMl90IEluZGV4QXVkaW9QYWNrZXQoaW50IFRyYWNrLCBBVlBhY2tldCAqUGFja2V0LCBTaGFy ZWRBVkNvbnRleHQgJkNvbnRleHQsIEZGTVNfSW5kZXggJlRyYWNrSW5kaWNlcyk7CistICAgIHZv aWQgUGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNr ZXQgJnBrdCwgaW50ICpSZXBlYXRQaWN0LCBpbnQgKkZyYW1lVHlwZSwgYm9vbCAqSW52aXNpYmxl LCBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSAqTGFzdFBpY1N0cnVjdCk7CisrICAgIHZvaWQgUGFy c2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgKnBr dCwgaW50ICpSZXBlYXRQaWN0LCBpbnQgKkZyYW1lVHlwZSwgYm9vbCAqSW52aXNpYmxlLCBlbnVt IEFWUGljdHVyZVN0cnVjdHVyZSAqTGFzdFBpY1N0cnVjdCk7CisgICAgIHZvaWQgRnJlZSgpOwor IHB1YmxpYzoKKyAgICAgRkZNU19JbmRleGVyKGNvbnN0IGNoYXIgKkZpbGVuYW1lKTsKK2RpZmYg LS1naXQgYS9zcmMvY29yZS91dGlscy5jcHAgYi9zcmMvY29yZS91dGlscy5jcHAKK2luZGV4IGNl Njc1MzMuLjhhMmU5OTcgMTAwNjQ0CistLS0gYS9zcmMvY29yZS91dGlscy5jcHAKKysrKyBiL3Ny Yy9jb3JlL3V0aWxzLmNwcAorQEAgLTYyLDEyICs2Miw2IEBAIHZvaWQgQ2xlYXJFcnJvckluZm8o RkZNU19FcnJvckluZm8gKkVycm9ySW5mbykgeworICAgICB9CisgfQorIAorLXZvaWQgSW5pdE51 bGxQYWNrZXQoQVZQYWNrZXQgJnBrdCkgeworLSAgICBhdl9pbml0X3BhY2tldCgmcGt0KTsKKy0g ICAgcGt0LmRhdGEgPSBudWxscHRyOworLSAgICBwa3Quc2l6ZSA9IDA7CistfQorLQorIHZvaWQg RmlsbEFQKEZGTVNfQXVkaW9Qcm9wZXJ0aWVzICZBUCwgQVZDb2RlY0NvbnRleHQgKkNUWCwgRkZN U19UcmFjayAmRnJhbWVzKSB7CisgICAgIEFQLlNhbXBsZUZvcm1hdCA9IHN0YXRpY19jYXN0PEZG TVNfU2FtcGxlRm9ybWF0Pihhdl9nZXRfcGFja2VkX3NhbXBsZV9mbXQoQ1RYLT5zYW1wbGVfZm10 KSk7CisgICAgIEFQLkJpdHNQZXJTYW1wbGUgPSBhdl9nZXRfYnl0ZXNfcGVyX3NhbXBsZShDVFgt PnNhbXBsZV9mbXQpICogODsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS91dGlscy5oIGIvc3JjL2Nv cmUvdXRpbHMuaAoraW5kZXggOTgxOWRjNy4uMDAzYWI3OSAxMDA2NDQKKy0tLSBhL3NyYy9jb3Jl L3V0aWxzLmgKKysrKyBiL3NyYy9jb3JlL3V0aWxzLmgKK0BAIC01OCw3ICs1OCw2IEBAIHN0ZDo6 dW5pcXVlX3B0cjxUPiBtYWtlX3VuaXF1ZShBcmdzJiYuLi4gYXJncykgeworIH0KKyAKKyB2b2lk IENsZWFyRXJyb3JJbmZvKEZGTVNfRXJyb3JJbmZvICpFcnJvckluZm8pOworLXZvaWQgSW5pdE51 bGxQYWNrZXQoQVZQYWNrZXQgJnBrdCk7Cisgdm9pZCBGaWxsQVAoRkZNU19BdWRpb1Byb3BlcnRp ZXMgJkFQLCBBVkNvZGVjQ29udGV4dCAqQ1RYLCBGRk1TX1RyYWNrICZGcmFtZXMpOworIAorIHZv aWQgTEFWRk9wZW5GaWxlKGNvbnN0IGNoYXIgKlNvdXJjZUZpbGUsIEFWRm9ybWF0Q29udGV4dCAq JkZvcm1hdENvbnRleHQsIGludCBUcmFjayk7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvdmlkZW9z b3VyY2UuY3BwIGIvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwCitpbmRleCAwNmJkMTYxLi5iODg5 OTcwIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwCisrKysgYi9zcmMvY29y ZS92aWRlb3NvdXJjZS5jcHAKK0BAIC02NzMsMzAgKzY3MywzNCBAQCB2b2lkIEZGTVNfVmlkZW9T b3VyY2U6OkRlY29kZU5leHRGcmFtZShpbnQ2NF90ICZBU3RhcnRUaW1lLCBpbnQ2NF90ICZQb3Mp IHsKKyAgICAgaWYgKEhhc1BlbmRpbmdEZWxheWVkRnJhbWVzKCkpCisgICAgICAgICByZXR1cm47 CisgCistICAgIEFWUGFja2V0IFBhY2tldDsKKy0gICAgSW5pdE51bGxQYWNrZXQoUGFja2V0KTsK Ky0KKy0gICAgd2hpbGUgKFJlYWRGcmFtZSgmUGFja2V0KSA+PSAwKSB7CistICAgICAgICBpZiAo UGFja2V0LnN0cmVhbV9pbmRleCAhPSBWaWRlb1RyYWNrKSB7CistICAgICAgICAgICAgYXZfcGFj a2V0X3VucmVmKCZQYWNrZXQpOworKyAgICBBVlBhY2tldCAqUGFja2V0ID0gYXZfcGFja2V0X2Fs bG9jKCk7CisrICAgIGlmICghUGFja2V0KQorKyAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24o RkZNU19FUlJPUl9ERUNPRElORywgRkZNU19FUlJPUl9BTExPQ0FUSU9OX0ZBSUxFRCwKKysgICAg ICAgICAgICAiQ291bGQgbm90IGFsbG9jYXRlIHBhY2tldC4iKTsKKysKKysgICAgd2hpbGUgKFJl YWRGcmFtZShQYWNrZXQpID49IDApIHsKKysgICAgICAgIGlmIChQYWNrZXQtPnN0cmVhbV9pbmRl eCAhPSBWaWRlb1RyYWNrKSB7CisrICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7 CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9CisgCisgICAgICAgICBpZiAoQVN0 YXJ0VGltZSA8IDApCistICAgICAgICAgICAgQVN0YXJ0VGltZSA9IEZyYW1lcy5Vc2VEVFMgPyBQ YWNrZXQuZHRzIDogUGFja2V0LnB0czsKKysgICAgICAgICAgICBBU3RhcnRUaW1lID0gRnJhbWVz LlVzZURUUyA/IFBhY2tldC0+ZHRzIDogUGFja2V0LT5wdHM7CisgCisgICAgICAgICBpZiAoUG9z IDwgMCkKKy0gICAgICAgICAgICBQb3MgPSBQYWNrZXQucG9zOworKyAgICAgICAgICAgIFBvcyA9 IFBhY2tldC0+cG9zOworIAorLSAgICAgICAgYm9vbCBGcmFtZUZpbmlzaGVkID0gRGVjb2RlUGFj a2V0KCZQYWNrZXQpOworLSAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworLSAgICAg ICAgaWYgKEZyYW1lRmluaXNoZWQpCisrICAgICAgICBib29sIEZyYW1lRmluaXNoZWQgPSBEZWNv ZGVQYWNrZXQoUGFja2V0KTsKKysgICAgICAgIGF2X3BhY2tldF91bnJlZihQYWNrZXQpOworKyAg ICAgICAgaWYgKEZyYW1lRmluaXNoZWQpIHsKKysgICAgICAgICAgICBhdl9wYWNrZXRfZnJlZSgm UGFja2V0KTsKKyAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisgICAgIH0KKyAKKyAg ICAgLy8gRmx1c2ggZmluYWwgZnJhbWVzCistICAgIEluaXROdWxsUGFja2V0KFBhY2tldCk7Cist ICAgIERlY29kZVBhY2tldCgmUGFja2V0KTsKKysgICAgRGVjb2RlUGFja2V0KFBhY2tldCk7Cisr ICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworIH0KKyAKKyBib29sIEZGTVNfVmlkZW9Tb3Vy Y2U6OlNlZWtUbyhpbnQgbiwgaW50IFNlZWtPZmZzZXQpIHsKKy0tIAorMi40MC4wCisKK0Zyb20g YmY5ZTAzZTllMDg1MzRjMDI0ZTVhNzQ0YTY0MzdjNGFhYzE2MDIwMSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb206IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwu Y29tPgorRGF0ZTogVHVlLCA0IE1heSAyMDIxIDE0OjIwOjQ3ICswMTAwCitTdWJqZWN0OiBbUEFU Q0ggMi8zXSBjb25maWd1cmU6IFJlbW92ZSBkZXByZWNhdGVkIEFQSSB1c2UKKworU2lnbmVkLW9m Zi1ieTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CistLS0K KyBjb25maWd1cmUuYWMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJl LmFjCitpbmRleCBiMzVlZjgwYmMuLmQxOTcxNGQwZiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5h YworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTAyLDEwICsxMDIsMTAgQEAgQ0ZMQUdTPSIkX0NG TEFHUyAkRkZNUEVHX0NGTEFHUyIKKworIEFDX0RFRlVOKFtURVNUX0ZGTVBFR10sCisgICAgICAg ICAgW0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKy0gICAgICAgICAgICAjaW5j bHVkZSA8bGliYXZjb2RlYy9hdmNvZGVjLmg+CisrICAgICAgICAgICAgI2luY2x1ZGUgPGxpYmF2 Zm9ybWF0L2F2Zm9ybWF0Lmg+CisgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnN3c2NhbGUvc3dz Y2FsZS5oPgorICAgICAgICAgICAgIF1dLFtbCistICAgICAgICAgICAgICAgIGF2Y29kZWNfcmVn aXN0ZXJfYWxsKCk7CisrICAgICAgICAgICAgICAgIGF2Zm9ybWF0X25ldHdvcmtfaW5pdCgpOwor ICAgICAgICAgICAgICAgICBzd3NjYWxlX3ZlcnNpb24oKTsKKyAgICAgICAgICAgICBdXSldLCBb ZXZhbCAkMT15ZXNdLCBbZXZhbCAkMT1ub10pCisgICAgICAgICBdKQorCmRpZmYgLS1naXQgYS9z cmNwa2dzL2ZmbXMyL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1zMi90ZW1wbGF0ZQppbmRleCAzNjVm NjRkMTBjYmFiLi4xNjQxZWNmNDNiZTViIDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZmbXMyL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvZmZtczIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdmZm1zMicKIHBrZ25hbWU9ZmZtczIKIHZlcnNpb249Mi40MAotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2Fy Z3M9Ii0tZW5hYmxlLXNoYXJlZCAtLWRpc2FibGUtc3RhdGljIgogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIGF1dG9jb25mIGF1dG9tYWtlIGxpYnRvb2wiCgpGcm9tIDc3NTMyYTk1YzE3Y2Vm NWU4ZTllODg1NDVjYmQ0ZDMzYjkzZGFhN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzNi8xMTVdIGZyZWVyZHA6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAKCi0tLQogLi4uL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNo ICAgIHwgNDIgKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDQyIGluc2VydGlv bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2 X2FhMmNiOWFhLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlcmRwL3BhdGNoZXMvZmZt cGVnNl9hYTJjYjlhYS5wYXRjaCBiL3NyY3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEy Y2I5YWEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uYTQz MjRkYTNhODgyMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2Zm bXBlZzZfYWEyY2I5YWEucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSBhYTJjYjlhYTVmZjU1 NjI0MzM1OThiYTE2OGE0NjZlMDc1MmJjYTBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJv bTogYWthbGxhYmV0aCA8YWthbGxhYmV0aEBwb3N0ZW8ubmV0PgorRGF0ZTogVHVlLCAxNCBGZWIg MjAyMyAwNzo0ODo1NCArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXhlZCAjODY4NjogVXBkYXRl IGgyNjQgdG8gdXNlIG5ldyBGRk1QRUcgQVBJCisKKy0tLQorIGNoYW5uZWxzL3RzbWYvY2xpZW50 L2ZmbXBlZy90c21mX2ZmbXBlZy5jIHwgMiArKworIGxpYmZyZWVyZHAvY29kZWMvaDI2NF9mZm1w ZWcuYyAgICAgICAgICAgIHwgMiArKworIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCsp CisKK2RpZmYgLS1naXQgYS9jaGFubmVscy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcu YyBiL2NoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jCitpbmRleCAzMzk0 NjJkODY1Zi4uYmVlYTgwYjdhMWUgMTAwNjQ0CistLS0gYS9jaGFubmVscy90c21mL2NsaWVudC9m Zm1wZWcvdHNtZl9mZm1wZWcuYworKysrIGIvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3Rz bWZfZmZtcGVnLmMKK0BAIC0yMzksOCArMjM5LDEwIEBAIHN0YXRpYyBCT09MIHRzbWZfZmZtcGVn X2luaXRfc3RyZWFtKElUU01GRGVjb2RlciogZGVjb2RlciwgY29uc3QgVFNfQU1fTUVESUFfVFlQ CisgCQl9CisgCX0KKyAKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX0lOVCA8IEFWX1ZFUlNJT05f SU5UKDU5LCAxOCwgMTAwKQorIAlpZiAobWRlY29kZXItPmNvZGVjLT5jYXBhYmlsaXRpZXMgJiBB Vl9DT0RFQ19DQVBfVFJVTkNBVEVEKQorIAkJbWRlY29kZXItPmNvZGVjX2NvbnRleHQtPmZsYWdz IHw9IEFWX0NPREVDX0ZMQUdfVFJVTkNBVEVEOworKyNlbmRpZgorIAorIAlyZXR1cm4gVFJVRTsK KyB9CitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5jIGIvbGliZnJl ZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5jCitpbmRleCA4YTIzZGIyNDczYy4uODk2YTMzMzAxOWIg MTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMKKysrKyBiL2xpYmZy ZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYworQEAgLTYxNSwxMCArNjE1LDEyIEBAIHN0YXRpYyBC T09MIGxpYmF2Y29kZWNfaW5pdChIMjY0X0NPTlRFWFQqIGgyNjQpCisgCQkJZ290byBFWENFUFRJ T047CisgCQl9CisgCisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lO VCg1OSwgMTgsIDEwMCkKKyAJCWlmIChzeXMtPmNvZGVjRGVjb2Rlci0+Y2FwYWJpbGl0aWVzICYg QVZfQ09ERUNfQ0FQX1RSVU5DQVRFRCkKKyAJCXsKKyAJCQlzeXMtPmNvZGVjRGVjb2RlckNvbnRl eHQtPmZsYWdzIHw9IEFWX0NPREVDX0ZMQUdfVFJVTkNBVEVEOworIAkJfQorKyNlbmRpZgorIAor ICNpZmRlZiBXSVRIX1ZBQVBJCisgCgpGcm9tIGMwMDc5NDg5ZWVhOWQ5N2UyYWNiY2Y5NWE4MDAz YTIyODlhN2YwNDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVj dDogW1BBVENIIDAzNy8xMTVdIGdlcmJlcmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nZXJiZXJhL3RlbXBs YXRlIGIvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlCmluZGV4IGFlMTRmMzVjNzY3YzAuLjJkYzBh YzBjZTAzYjUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2dlcmJlcmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdnZXJiZXJhJwogcGtnbmFtZT1nZXJiZXJhCiB2ZXJzaW9uPTEuMTIuMQotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfU1lT VEVNRD0wIC1EV0lUSF9BVkNPREVDPTEiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpG cm9tIGUwOGU3ODY2YjdmM2RlZjVkNWU0MGIzN2UzYTZkZjlhMTVmYzYzNTggTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzOC8xMTVdIGdvbGRl bmRpY3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nb2xkZW5kaWN0L3Rl bXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZSBiL3NyY3Br Z3MvZ29sZGVuZGljdC90ZW1wbGF0ZQppbmRleCBmNGEwNTc1OWY2OTNkLi45N2Y0NDM0N2IwM2E2 IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9n b2xkZW5kaWN0L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn Z29sZGVuZGljdCcKIHBrZ25hbWU9Z29sZGVuZGljdAogdmVyc2lvbj0xLjUuMAotcmV2aXNpb249 MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSJDT05GSUcr PXppbV9zdXBwb3J0IGdvbGRlbmRpY3QucHJvIgogaG9zdG1ha2VkZXBlbmRzPSJxdDUtcW1ha2Ug cGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyIKQEAgLTEwLDcgKzEwLDcgQEAgbWFrZWRlcGVuZHM9 InRpZmYtZGV2ZWwgcXQ1LWRldmVsIGxpYnZvcmJpcy1kZXZlbCB6bGliLWRldmVsCiAgcXQ1LXdl YmtpdC1kZXZlbCBsem8tZGV2ZWwgYnppcDItZGV2ZWwgbGliYW8tZGV2ZWwgcXQ1LXN2Zy1kZXZl bAogIGxpYmViLWRldmVsIHF0NS14MTFleHRyYXMtZGV2ZWwgZmZtcGVnLWRldmVsIGxpYmx6bWEt ZGV2ZWwKICBxdDUtbXVsdGltZWRpYS1kZXZlbCIKLXNob3J0X2Rlc2M9IkEgZmVhdHVyZS1yaWNo IGRpY3Rpb25hcnkgbG9va3VwIHByb2dyYW0iCitzaG9ydF9kZXNjPSJGZWF0dXJlLXJpY2ggZGlj dGlvbmFyeSBsb29rdXAgcHJvZ3JhbSIKIG1haW50YWluZXI9IkpvaG4gPG1lQGpvaG5ueW5hdG9y LmRldj4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHA6Ly9nb2xk ZW5kaWN0Lm9yZy8iCgpGcm9tIDkzNjIwZDgzMzYyMWI4OTViYzdhODMzMjAxZmE1NTMyZTlhOWNk MjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENI IDAzOS8xMTVdIGdzdC1saWJhdjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2dzdC1saWJhdi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRl IGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKaW5kZXggMzc0ODVmNmY2YTllOC4uZjYxMGU5 NjZmMjNjZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9nc3QtbGliYXYvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdnc3QtbGliYXYnCiBwa2duYW1lPWdzdC1saWJhdgogdmVyc2lvbj0xLjIyLjUKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWcgeWFzbSIKIG1ha2VkZXBlbmRzPSJvcmMtZGV2ZWwgZ3N0LXBsdWdpbnMtYmFzZTEt ZGV2ZWwgZmZtcGVnLWRldmVsIgoKRnJvbSA2MTkzYTUxMjBhMjBlNjkzNjI3Mzg0ZjhmZjVhZDAz MWYwMTllZGM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwNDAvMTE1XSBnc3QtcnRzcC1zZXJ2ZXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBs YXRlCmluZGV4IGYyNjZmNDc3N2IzZWEuLjAxMTQ0NGViMjY3MzkgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVy L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LXJ0c3At c2VydmVyJwogcGtnbmFtZT1nc3QtcnRzcC1zZXJ2ZXIKIHZlcnNpb249MS4yMi41Ci1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIHB5dGhvbjMiCiBtYWtlZGVwZW5kcz0iZ2xpYi1kZXZlbCBnc3QtcGx1Z2lucy1iYWQx LWRldmVsIGdvYmplY3QtaW50cm9zcGVjdGlvbgoKRnJvbSBhOTEzNDQxYWM0NGU3YzkzNGJlYTQ4 OGE5OTk4YmJjN2FhMGY4NmU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNDEvMTE1XSBndXZjdmlldzogdXBkYXRlIHRvIDIuMC44LgoKLS0t CiBzcmNwa2dzL2d1dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2ggfCAxMCArKysrKysr KysrCiBzcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgfCAgNSArKy0t LQogMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRj aAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRj aCBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi41MDNjMmFmM2I3OGMxCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9ndXZjdmlldy9wYXRjaGVzL2ZpeC1pbmNsdWRlLnBhdGNoCkBAIC0w LDAgKzEsMTAgQEAKKy0tLSBhL2d1dmN2aWV3L2d1dmN2aWV3LmMKKysrKyBiL2d1dmN2aWV3L2d1 dmN2aWV3LmMKK0BAIC0yOCw2ICsyOCw3IEBACisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2lu Y2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorKyNpbmNsdWRlIDxs b2NhbGUuaD4KKyAKKyAjaW5jbHVkZSAiZ3ZpZXcuaCIKKyAjaW5jbHVkZSAiZ3ZpZXd2NGwyY29y ZS5oIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3V2 Y3ZpZXcvdGVtcGxhdGUKaW5kZXggMzQ1Y2Y2MDA2ZjI0Ni4uODZhN2ZkNjE5NjEyYyAxMDA2NDQK LS0tIGEvc3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2d1dmN2aWV3L3Rl bXBsYXRlCkBAIC0xLDggKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3V2Y3ZpZXcnCiBw a2duYW1lPWd1dmN2aWV3Ci12ZXJzaW9uPTIuMC43Cit2ZXJzaW9uPTIuMC44CiByZXZpc2lvbj0x Ci1jcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJl X2FyZ3M9Ii0tZGlzYWJsZS1zdGF0aWMgLS1kaXNhYmxlLWRlYmlhbi1tZW51IgogaG9zdG1ha2Vk ZXBlbmRzPSJwa2ctY29uZmlnIGludGx0b29sIGF1dG9jb25mIGF1dG9tYWtlIGxpYnRvb2wgZ2xp Yi1kZXZlbCIKQEAgLTE0LDcgKzEzLDcgQEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2 b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0 cDovL2d1dmN2aWV3LnNvdXJjZWZvcmdlLm5ldC8iCiBkaXN0ZmlsZXM9IiR7U09VUkNFRk9SR0Vf U0lURX0vJHtwa2duYW1lfS8ke3BrZ25hbWV9LXNyYy0ke3ZlcnNpb259LnRhci5iejIiCi1jaGVj a3N1bT1mNDdkNTFmYmQwNmU0NGVlYWExYTgyZjRhMTUzYzkyNzUyN2M5MGQ5NDUxNDE5N2E3MGIy OTU2MDI4Y2M4YWQ0CitjaGVja3N1bT1hMjFmNGU0NDgyODY2NjZjZjI3YmFmZWY1MjkwY2M5NTNh MGExNzk2Yjc1MmU1YmJlNTIxMjY2ZGMxMjMwYzgxCiAKIHBvc3RfcGF0Y2goKSB7CiAJc2VkICcz MWEjaW5jbHVkZSA8bG9jYWxlLmg+JyAtaSAgZ3V2Y3ZpZXcvZ3V2Y3ZpZXcuYwoKRnJvbSBjOWM5 MTg5ZmEyNWY1YjMzYWFhMTExM2QxZTBkMDJkNjcwOWQ5YTJmIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDIvMTE1XSBoYW5kYnJha2U6IHVw ZGF0ZSB0byAxLjYuMQoKLS0tCiAuLi4vcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmstZmxh Zy5wYXRjaCAgICB8IDExICsrKysrKy0tLS0tCiAuLi4vaGFuZGJyYWtlL3BhdGNoZXMvbGliaGIt dnBsLWluY2x1ZGUucGF0Y2ggICB8IDE1ICsrKysrKysrKysrKysrKwogc3JjcGtncy9oYW5kYnJh a2UvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgfCAxNyArKysrKysrKysrLS0tLS0tLQog MyBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRl LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2lu Zy14MjY1LWxpbmstZmxhZy5wYXRjaCBiL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvZml4LW1p c3NpbmcteDI2NS1saW5rLWZsYWcucGF0Y2gKaW5kZXggMjZkYjAzODY3YTBjOC4uZDZiYjJlZGE2 MjdhMyAxMDA2NDQKLS0tIGEvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14 MjY1LWxpbmstZmxhZy5wYXRjaAorKysgYi9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2ZpeC1t aXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNoCkBAIC0xLDE0ICsxLDE1IEBACiAtLS0gYS9ndGsv Y29uZmlndXJlLmFjCiArKysgYi9ndGsvY29uZmlndXJlLmFjCiBAQCAtMjAzLDcgKzIwMyw3IEBA Ci0gCisKICBBTV9DT05ESVRJT05BTChbTUlOR1ddLCBbdGVzdCAieCRtaW5nd19mbGFnIiA9ICJ4 eWVzIl0pCi0gCi0tSEJfTElCUz0iJEhCX0xJQlMgLWxoYW5kYnJha2UgLWxhdmZvcm1hdCAtbGF2 ZmlsdGVyIC1sYXZjb2RlYyAtbGF2dXRpbCAtbGRhdjFkIC1sc3dyZXNhbXBsZSAtbHBvc3Rwcm9j IC1sZHZkbmF2IC1sZHZkcmVhZCAtbG1wM2xhbWUgLWx2b3JiaXMgLWx2b3JiaXNlbmMgLWxvZ2cg LWxzd3NjYWxlIC1sdGhlb3JhZW5jIC1sdGhlb3JhZGVjIC1sdnB4IC1seiAtbGJ6MiAtbGJsdXJh eSAtbGFzcyAtbGZvbnRjb25maWcgLWxmcmVldHlwZSAtbHhtbDIgLWxqYW5zc29uIC1sb3B1cyAt bHNwZWV4IC1sdHVyYm9qcGVnIC1sbHptYSAtbHppbWciCi0rSEJfTElCUz0iJEhCX0xJQlMgLWxo YW5kYnJha2UgLWxhdmZvcm1hdCAtbGF2ZmlsdGVyIC1sYXZjb2RlYyAtbGF2dXRpbCAtbGRhdjFk IC1sc3dyZXNhbXBsZSAtbHBvc3Rwcm9jIC1sZHZkbmF2IC1sZHZkcmVhZCAtbG1wM2xhbWUgLWx2 b3JiaXMgLWx2b3JiaXNlbmMgLWxvZ2cgLWxzd3NjYWxlIC1sdGhlb3JhZW5jIC1sdGhlb3JhZGVj IC1sdnB4IC1seiAtbGJ6MiAtbGJsdXJheSAtbGFzcyAtbGZvbnRjb25maWcgLWxmcmVldHlwZSAt bHhtbDIgLWxqYW5zc29uIC1sb3B1cyAtbHNwZWV4IC1sdHVyYm9qcGVnIC1sbHptYSAtbHppbWcg LWxkbCIKKworLUhCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZp bHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAt bGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1s c3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkg LWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxz cGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sU3Z0QXYxRW5jIgorK0hCX0xJQlM9IiRI Ql9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0 aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxt cDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAt bHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1s ZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6 bWEgLWx6aW1nIC1sU3Z0QXYxRW5jIC1sZGwiCiAgSEJfQ1BQRkxBR1M9IiRIQl9DUFBGTEFHUyAk SEJJTkMiCi0gCisKICBQS0dfQ0hFQ0tfTU9EVUxFUyhbeDI2NF0sIFt4MjY0XSwgc3lzX3gyNjQ9 eWVzLCBzeXNfeDI2ND1ubykKKwogLS0tIGEvdGVzdC9tb2R1bGUuZGVmcwogKysrIGIvdGVzdC9t b2R1bGUuZGVmcwogQEAgLTY5LDYgKzY5LDkgQEAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaGFuZGJy YWtlL3BhdGNoZXMvbGliaGItdnBsLWluY2x1ZGUucGF0Y2ggYi9zcmNwa2dzL2hhbmRicmFrZS9w YXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAuLjI5OGY5ZjRhYjI4ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNoCkBAIC0wLDAgKzEsMTUg QEAKKy0tLSBhL2xpYmhiL21vZHVsZS5kZWZzCTIwMjMtMDEtMjIgMTE6MzY6NDkuMDAwMDAwMDAw IC0wNTAwCisrKysgYi9saWJoYi9tb2R1bGUuZGVmcwkyMDIzLTA0LTAzIDIyOjM3OjUyLjM5NTQ2 NzAxMCAtMDQwMAorQEAgLTQ2LDExICs0Niw3IEBACisgTElCSEIuR0NDLkkgKz0gJChMSUJIQi5i dWlsZC8pICQoQ09OVFJJQi5idWlsZC8paW5jbHVkZQorIAorIGlmZXEgKDEsJChGRUFUVVJFLnFz dikpCistICAgIGlmZXEgKCQoSE9TVC5zeXN0ZW0pLGZyZWVic2QpKQorLSAgICAgICAgTElCSEIu R0NDLkkgKz0gJChMT0NBTEJBU0UpL2luY2x1ZGUvdnBsCistICAgIGVsc2UKKy0gICAgICAgIExJ QkhCLkdDQy5JICs9ICQoQ09OVFJJQi5idWlsZC8paW5jbHVkZS92cGwKKy0gICAgZW5kaWYKKysg ICAgTElCSEIuR0NDLkkgKz0gL3Vzci9pbmNsdWRlL3ZwbAorIGVuZGlmCisgCisgaWZuZXEgKCwk KGZpbHRlciAkKEhPU1Quc3lzdGVtKSxmcmVlYnNkIG5ldGJzZCBvcGVuYnNkKSkKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlIGIvc3JjcGtncy9oYW5kYnJha2UvdGVtcGxh dGUKaW5kZXggY2E1ZTQ1NzFlNDljMy4uYzMyY2IxYmZhMzFmNCAxMDA2NDQKLS0tIGEvc3JjcGtn cy9oYW5kYnJha2UvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9oYW5kYnJha2UvdGVtcGxhdGUKQEAg LTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2hhbmRicmFrZScKIHBrZ25hbWU9 aGFuZGJyYWtlCi12ZXJzaW9uPTEuNS4xCit2ZXJzaW9uPTEuNi4xCiByZXZpc2lvbj0xCiBidWls ZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1mb3JjZSAtLWRpc2FibGUt Z3RrLXVwZGF0ZS1jaGVja3MgLS1kaXNhYmxlLWRmLWZldGNoIC0taGFyZGVuCi0gJCh2b3B0X2Vu YWJsZSBmZGtfYWFjIGZkay1hYWMpICQodm9wdF9lbmFibGUgbnZlbmMpIgorICQodm9wdF9lbmFi bGUgZmRrX2FhYyBmZGstYWFjKSAkKHZvcHRfZW5hYmxlIG52ZW5jKSAkKHZvcHRfZW5hYmxlIHFz dikiCiBtYWtlX2J1aWxkX2FyZ3M9Ii1DICR7WEJQU19UUklQTEVUfSIKIG1ha2VfaW5zdGFsbF9h cmdzPSItQyAke1hCUFNfVFJJUExFVH0iCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIGNtYWtl IGdldHRleHQtZGV2ZWwgZ2xpYi1kZXZlbCBpbnRsdG9vbCBsaWJ0b29sIG00IG1lc29uIG5hc20g cGtnLWNvbmZpZyBweXRob24zIgpAQCAtMTIsOCArMTIsMTEgQEAgbWFrZWRlcGVuZHM9ImJ6aXAy LWRldmVsIGZmbXBlZy1kZXZlbCBnc3QtcGx1Z2lucy1iYXNlMS1kZXZlbCBndGsrMy1kZXZlbAog IGphbnNzb24tZGV2ZWwgbGFtZS1kZXZlbCBsaWJhc3MtZGV2ZWwgbGliYmx1cmF5LWRldmVsIGxp YmRhdjFkLWRldmVsCiAgbGliZHZkbmF2LWRldmVsIGxpYmR2ZHJlYWQtZGV2ZWwgbGliZ3VkZXYt ZGV2ZWwgbGlibnVtYS1kZXZlbAogIGxpYnNhbXBsZXJhdGUtZGV2ZWwgbGlidGhlb3JhLWRldmVs IGxpYnZvcmJpcy1kZXZlbCBsaWJ2cHgtZGV2ZWwgbGlieG1sMi1kZXZlbAotIG9wdXMtZGV2ZWwg c3BlZXgtZGV2ZWwgeDI2NC1kZXZlbCB4MjY1LWRldmVsIHppbWctZGV2ZWwKKyBvcHVzLWRldmVs IHNwZWV4LWRldmVsIHgyNjQtZGV2ZWwgeDI2NS1kZXZlbCB6aW1nLWRldmVsIGxpYnN2dC1hdjEt ZGV2ZWwKICAkKHZvcHRfaWYgZmRrX2FhYyBmZGstYWFjLWRldmVsKQorICQodm9wdF9pZiBxc3Yg bGlidmEtZGV2ZWwpCisgJCh2b3B0X2lmIHFzdiBsaWJkcm0tZGV2ZWwpCisgJCh2b3B0X2lmIHFz diBvbmV2cGwtZGV2ZWwpCiAgJCh2b3B0X2lmIG52ZW5jIG52LWNvZGVjLWhlYWRlcnMpIgogZGVw ZW5kcz0iZGVza3RvcC1maWxlLXV0aWxzIGdzdC1wbHVnaW5zLWdvb2QxIGhpY29sb3ItaWNvbi10 aGVtZSIKIHNob3J0X2Rlc2M9Ik11bHRpdGhyZWFkZWQgdmlkZW8gdHJhbnNjb2RlciIKQEAgLTIx LDE1ICsyNCwxNSBAQCBtYWludGFpbmVyPSJFbm5vIEJvbGFuZCA8Z290dG94QHZvaWRsaW51eC5v cmc+IgogbGljZW5zZT0iR1BMLTIuMC1vbmx5IgogaG9tZXBhZ2U9Imh0dHBzOi8vaGFuZGJyYWtl LmZyLyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL0hhbmRCcmFrZS9IYW5kQnJha2Uv cmVsZWFzZXMvZG93bmxvYWQvJHt2ZXJzaW9ufS9IYW5kQnJha2UtJHt2ZXJzaW9ufS1zb3VyY2Uu dGFyLmJ6MiIKLWNoZWNrc3VtPTM5OTlmZTA2ZDUzMDljODE5Nzk5YTczYTk2OGE4ZWMzODQwZTc4 NDBjMmI2NGFmOGY1Y2RiN2ZkOGM5NDMwZjAKK2NoZWNrc3VtPTk0Y2NmZTAzZGI5MTdhOTE2NTAw MDBjNTEwZjdmZDUzZjg0NGRhMTlmMTlhZDRiNGJlMWI4ZjZiYzMxYThkNGMKIG5vY3Jvc3M9eWVz CiAKLWJ1aWxkX29wdGlvbnM9ImZka19hYWMgbnZlbmMiCitidWlsZF9vcHRpb25zPSJmZGtfYWFj IG52ZW5jIHFzdiIKIAogY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCiAJeDg2XzY0Knxp Njg2KikKIAkJQ0ZMQUdTPSItbXNzZSIKLQkJYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJudmVuYyIK KwkJYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJudmVuYyBxc3YiCiAJCTs7CiBlc2FjCiAKQEAgLTM3 LDcgKzQwLDcgQEAgcHJlX2NvbmZpZ3VyZSgpIHsKIAkjIHVzZSBzeXN0ZW0gbGlicmFyaWVzLCBk b24ndCBkb3dubG9hZCB0aGVtCiAJcm0gLXJmIGNvbnRyaWIvCiAJZm9yIG1vZHVsZSBpbiBmZGst YWFjIGZmbXBlZyBsaWJibHVyYXkgbGliZGF2MWQgbGliZHZkbmF2IGxpYmR2ZHJlYWQgbnZlbmMg XAotCQl4MjY1IHppbWc7IGRvCisJCXgyNjUgemltZyBzdnQtYXYxIGxpYnZwbDsgZG8KIAkgICAg dnNlZCAtaSAiL01PRFVMRVMgKz0gY29udHJpYlwvJHttb2R1bGV9L2QiIG1ha2UvaW5jbHVkZS9t YWluLmRlZnMKIAlkb25lCiB9CgpGcm9tIDhkYTNhZGEwOWY5MTlkODFhODU3Yjc5N2VkNzljZmRh ZWY4NzNjM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDog W1BBVENIIDA0My8xMTVdIGhlZGdld2FyczogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0t CiBzcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2hlZGdl d2Fycy90ZW1wbGF0ZSBiL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlCmluZGV4IDE1YTFkZjZk ODg2MWQuLmQxYjcyOTBiZmRjMTkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlCkBAIC0xLDEzICsxLDEzIEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdoZWRnZXdhcnMnCiBwa2duYW1lPWhlZGdld2FycwogdmVyc2lv bj0xLjAuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZp Z3VyZV9hcmdzPSItRE5PU0VSVkVSPTEgLUREQVRBX0lOU1RBTExfRElSPS91c3Ivc2hhcmUvJHtw a2duYW1lfQogIC1EUEhZU0ZTX1NZU1RFTT0xIC1ETUlOSU1BTF9GTEFHUz0xIgogbWFrZV9jbWQ9 bWFrZQogaG9zdG1ha2VkZXBlbmRzPSJsdWE1MSBwa2ctY29uZmlnIHF0NS1xbWFrZSBxdDUtaG9z dC10b29scyIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbHVhNTEtZGV2ZWwgcGh5c2ZzLWRl dmVsIHF0NS10b29scy1kZXZlbCBTREwyX2ltYWdlLWRldmVsCittYWtlZGVwZW5kcz0iZmZtcGVn NC1kZXZlbCBsdWE1MS1kZXZlbCBwaHlzZnMtZGV2ZWwgcXQ1LXRvb2xzLWRldmVsIFNETDJfaW1h Z2UtZGV2ZWwKICBTREwyX21peGVyLWRldmVsIFNETDJfbmV0LWRldmVsIFNETDJfdHRmLWRldmVs IgogZGVwZW5kcz0ibGliZnJlZWdsdXQiCiBzaG9ydF9kZXNjPSJGdW5ueSB0dXJuLWJhc2VkIGFy dGlsbGVyeSBnYW1lLCBmZWF0dXJpbmcgZmlnaHRpbmcgSGVkZ2Vob2dzISIKCkZyb20gYWVmYWJi OGE1YzMzYzRmODM5YjJjMGY1NGRkYTA1NDZhYzRhMGMzMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ0LzExNV0gaWRqYzogcmV2YnVtcCBm b3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2lkamMvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2lkamMvdGVtcGxhdGUgYi9zcmNwa2dzL2lkamMvdGVtcGxhdGUKaW5kZXggYjIwNWU3 NDc0NWZlMS4uMzZhNzViYWY1OTdjNSAxMDA2NDQKLS0tIGEvc3JjcGtncy9pZGpjL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvaWRqYy90ZW1wbGF0ZQpAQCAtNSw3ICs1LDcgQEAgcmV2aXNpb249NAog YnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGdp dCBweXRob24zIGF1dG9tYWtlIGdldHRleHQtZGV2ZWwgbGlidG9vbCIKIG1ha2VkZXBlbmRzPSJs aWJ2b3JiaXMtZGV2ZWwgbGlib2dnLWRldmVsIGphY2stZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZl bAotIGxpYmZsYWMtZGV2ZWwgbGlic25kZmlsZS1kZXZlbCBtcGcxMjMtZGV2ZWwgZmZtcGVnLWRl dmVsIHNwZWV4LWRldmVsCisgbGliZmxhYy1kZXZlbCBsaWJzbmRmaWxlLWRldmVsIG1wZzEyMy1k ZXZlbCBmZm1wZWc0LWRldmVsIHNwZWV4LWRldmVsCiAgZ2xpYi1kZXZlbCBwaXhtYW4tZGV2ZWwg bGFtZS1kZXZlbCBweXRob24zLWdvYmplY3QtZGV2ZWwgbGlic2hvdXQtaWRqYy1kZXZlbAogIG9w dXMtZGV2ZWwgdHdvbGFtZS1kZXZlbCBweXRob24zLW11dGFnZW4gcHl0aG9uMy1kZXZlbCIKIGRl cGVuZHM9InB5dGhvbjMtZ29iamVjdCBweXRob24zLW11dGFnZW4gZGVza3RvcC1maWxlLXV0aWxz IHNoYXJlZC1taW1lLWluZm8gcHl0aG9uMy1kYnVzIGphY2siCgpGcm9tIDFkODY3ZTVjY2M1ZDVk NmQwODc1ZjNlODJlNWE3ODE3OGE4ZTAxMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0NS8xMTVdIGtmaWxlbWV0YWRhdGE1OiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRlIGIvc3JjcGtncy9rZmlsZW1l dGFkYXRhNS90ZW1wbGF0ZQppbmRleCBjMDM0ZDYyZGVlYzhmLi5lNmU5ZmUxMWFhNTVkIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva2Zp bGVtZXRhZGF0YTUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdrZmlsZW1ldGFkYXRhNScKIHBrZ25hbWU9a2ZpbGVtZXRhZGF0YTUKIHZlcnNpb249NS4xMTAu MAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVw ZW5kcz0ia2NvcmVhZGRvbnMgZXh0cmEtY21ha2UtbW9kdWxlcyBwa2ctY29uZmlnIHF0NS1ob3N0 LXRvb2xzIHF0NS1xbWFrZQogIGdldHRleHQga2NvcmVhZGRvbnMgcHl0aG9uMyIKCkZyb20gZGIw OTFiNTg2NmQ0NmYxNzM1MWM5ODdjYmZjYzUxMmU2NDY5YWQ3ZiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ2LzExNV0ga2lkMzogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNo IHwgMTcgKysrKysrKysrKysrKysrKysKIHNyY3BrZ3Mva2lkMy90ZW1wbGF0ZSAgICAgICAgICAg ICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRj aAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2lkMy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNw a2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAuLjEzNWZjNTBlMDdjOWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsMTcgQEAKKyMgaHR0cHM6Ly9h dXIuYXJjaGxpbnV4Lm9yZy9jZ2l0L2F1ci5naXQvZGlmZi9mZm1wZWc1LnBhdGNoP2g9a2lkMy1j bGkmaWQ9MTI0MTBhNzQ5MDY2MTJlN2VmYzBlYzhmYmNlNzM5YjRhMGZlZjdlNworZGlmZiAtLWdp dCBhL3NyYy9wbHVnaW5zL2Fjb3VzdGlkaW1wb3J0L2ZmbXBlZ2ZpbmdlcnByaW50ZGVjb2Rlci5j cHAgYi9zcmMvcGx1Z2lucy9hY291c3RpZGltcG9ydC9mZm1wZWdmaW5nZXJwcmludGRlY29kZXIu Y3BwCitpbmRleCBlMTU2ZDQyNC4uZTEyYjlhYmQgMTAwNjQ0CistLS0gYS9zcmMvcGx1Z2lucy9h Y291c3RpZGltcG9ydC9mZm1wZWdmaW5nZXJwcmludGRlY29kZXIuY3BwCisrKysgYi9zcmMvcGx1 Z2lucy9hY291c3RpZGltcG9ydC9mZm1wZWdmaW5nZXJwcmludGRlY29kZXIuY3BwCitAQCAtMjMy LDcgKzIzMiwxMSBAQCBwcml2YXRlOgorICAgZnJpZW5kIGNsYXNzIEZvcm1hdDsKKyAgIGZyaWVu ZCBjbGFzcyBDb252ZXJ0ZXI7CisgICBBVkNvZGVjQ29udGV4dCogbV9wdHI7CisrI2lmIExJQkFW Q09ERUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lOVCg1OSwgMCwgMCkKKyAgIEFWQ29kZWMq IG1faW1wbDsKKysjZWxzZQorKyAgY29uc3QgQVZDb2RlYyogbV9pbXBsOworKyNlbmRpZgorICAg QVZGcmFtZSogbV9mcmFtZTsKKyAgIGJvb2wgbV9vcGVuZWQ7CisgfTsKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3Mva2lkMy90ZW1wbGF0ZSBiL3NyY3BrZ3Mva2lkMy90ZW1wbGF0ZQppbmRleCA0NTYyMDZk OTBlMTZhLi5mMzJmOWRlY2IwZTdmIDEwMDY0NAotLS0gYS9zcmNwa2dzL2tpZDMvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9raWQzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAna2lkMycKIHBrZ25hbWU9a2lkMwogdmVyc2lvbj0zLjkuMQotcmV2aXNpb249Mgor cmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfQVBQ Uz0nQ0xJOyQodm9wdF9pZiBLREUgS0RFIFF0KScKICAtRFdJVEhfRE9DQk9PS0RJUj0vdXNyL3No YXJlL3hzbC9kb2Nib29rIC1EV0lUSF9GTEFDPSQodm9wdF9pZiBmbGFjIE9OIE9GRikKCkZyb20g Yzg4ZDcwOWI2MmYzNjYwMWJkYTQyMzk1YTJjNGEyZmJjZmM4M2UzOCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ3LzExNV0ga29kaTogcmV2 YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2tvZGkvdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2tvZGkvdGVtcGxhdGUgYi9zcmNwa2dzL2tvZGkvdGVtcGxhdGUKaW5kZXgg OGVmNmJjODVlZDNiNC4uNzg4YTBhYzk3OGFmOCAxMDA2NDQKLS0tIGEvc3JjcGtncy9rb2RpL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3Mva29kaS90ZW1wbGF0ZQpAQCAtNTQsNyArNTQsNyBAQCBtYWtl ZGVwZW5kcz0iCiAgbGlibWFkLWRldmVsIGZvbnRjb25maWctZGV2ZWwgbGliWGluZXJhbWEtZGV2 ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJtbXMtZGV2ZWwKICBlbmNhLWRldmVsIGJvb3N0LWRl dmVsIGxpYmN1cmwtZGV2ZWwgbGlidmEtZGV2ZWwgbGlidmRwYXUtZGV2ZWwgbGliYXNzLWRldmVs CiAgbGliYmx1ZXRvb3RoLWRldmVsIHlhamwtZGV2ZWwgbGlicGxpc3QtZGV2ZWwgbGlicnRtcC1k ZXZlbCB0aW55eG1sLWRldmVsCi0gdGFnbGliLWRldmVsIGxpYmNhcC1kZXZlbCBsYW1lLWRldmVs IGxpYmJsdXJheS1kZXZlbCBsaWJuZnMtZGV2ZWwgZmZtcGVnLWRldmVsCisgdGFnbGliLWRldmVs IGxpYmNhcC1kZXZlbCBsYW1lLWRldmVsIGxpYmJsdXJheS1kZXZlbCBsaWJuZnMtZGV2ZWwgZmZt cGVnNC1kZXZlbAogIGdpZmxpYi1kZXZlbCBsaWJ4c2x0LWRldmVsIGdudXRscy1kZXZlbCBsaWJz c2gtZGV2ZWwgbGlibWljcm9odHRwZC1kZXZlbAogIGxpYmNlYy1kZXZlbCBkY2FkZWMtZGV2ZWwg ZmxhdGJ1ZmZlcnMtZGV2ZWwgZm10LWRldmVsIGxjbXMyLWRldmVsCiAgbGliZnN0cmNtcC1kZXZl bCByYXBpZGpzb24gbGliY2Rpby1wYXJhbm9pYSBzcGRsb2cgbGlid2F5bGFuZHBwLWRldmVsCgpG cm9tIDFhMGU5ZDc1ZWFhNjA3NGQzYWM4OGYwNjc4YThhNDY5YjBmZmU2NjkgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0OC8xMTVdIGtwaXBl d2lyZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2twaXBld2lyZS90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlIGIvc3JjcGtncy9rcGlw ZXdpcmUvdGVtcGxhdGUKaW5kZXggMjE2MDY5NTA3ZjU0Yi4uMTE3M2QzNjM0OGQxNiAxMDA2NDQK LS0tIGEvc3JjcGtncy9rcGlwZXdpcmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9rcGlwZXdpcmUv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrcGlwZXdpcmUn CiBwa2duYW1lPWtwaXBld2lyZQogdmVyc2lvbj01LjI3LjgKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVs ZXMgcGxhc21hLXdheWxhbmQtcHJvdG9jb2xzIGdldHRleHQKICBxdDUtcW1ha2UgcXQ1LWhvc3Qt dG9vbHMgcGtnLWNvbmZpZyB3YXlsYW5kLWRldmVsIGtjb3JlYWRkb25zCgpGcm9tIGNlNzZjMWQ1 YjBhYjJhNjMyMzMxNzZmZGUwZjFmYTE1ZTNhNWMwM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0OS8xMTVdIGxpYmV4dHJhY3RvcjogcmV2 YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBsYXRlIGIvc3JjcGtncy9saWJl eHRyYWN0b3IvdGVtcGxhdGUKaW5kZXggZGRkNDc5MGY5M2U4OC4uMWZiOWNhNTZhOTZhZSAxMDA2 NDQKLS0tIGEvc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9saWJl eHRyYWN0b3IvdGVtcGxhdGUKQEAgLTcsNyArNyw3IEBAIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2Fi bGUtc3RhdGljIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9Inps aWItZGV2ZWwgYnppcDItZGV2ZWwgZXhpdjItZGV2ZWwgdGlmZi1kZXZlbCBsaWJwbmctZGV2ZWwK ICBsaWJqcGVnLXR1cmJvLWRldmVsIGxpYnZvcmJpcy1kZXZlbCBsaWJmbGFjLWRldmVsIGdpZmxp Yi1kZXZlbCBsaWJtcGVnMi1kZXZlbAotIGZmbXBlZy1kZXZlbCBndGsrMy1kZXZlbCBsaWJsdGRs LWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwgZmlsZS1kZXZlbCBsaWJnc2YtZGV2ZWwiCisgZmZtcGVn NC1kZXZlbCBndGsrMy1kZXZlbCBsaWJsdGRsLWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwgZmlsZS1k ZXZlbCBsaWJnc2YtZGV2ZWwiCiBzaG9ydF9kZXNjPSJMaWJyYXJ5IHVzZWQgdG8gZXh0cmFjdCBt ZXRhIGRhdGEgZnJvbSBmaWxlcyIKIG1haW50YWluZXI9Ik1hcnRpbiBSaWVzZSA8Z3JhdWVoYWFy ZUBnbXguZGU+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKCkZyb20gMGYxOTFmM2U0N2I4 OTRhNjBjNzhhZTkyZjE4MTg0Mjc2ZWU0ZDkyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDUwLzExNV0gbGlib3BlbmFsOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbGlib3BlbmFsL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUgYi9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZQpp bmRleCA3NzIxOGY5ZTUzOWRmLi4zZjQ5ZWQ3NWExZmRjIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xp Ym9wZW5hbC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xpYm9wZW5hbCcKIHBrZ25hbWU9bGlib3Bl bmFsCiB2ZXJzaW9uPTEuMjIuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREFMU09GVF9FWEFNUExFUz1PRkYiCiBob3N0bWFrZWRl cGVuZHM9InBrZy1jb25maWciCgpGcm9tIDQ3MzBhMTc5YTQzNjI4MzlhZmQxYWM2ZTE2MDcwMjdl MTk2ZDNiOTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDog W1BBVENIIDA1MS8xMTVdIGxvdWRnYWluOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgMTEgKysrKysrKysrKysKIHNy Y3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUgICAgICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hh bmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2xvdWRnYWluL3Bh dGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAwLi4xNmQ0NTEwZWU5OGZhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sb3VkZ2Fpbi9w YXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0tIGEvc3JjL3NjYW4uYwky MDE5LTA5LTA2IDExOjMxOjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIGIvc3JjL3NjYW4uYwkyMDIz LTAzLTIzIDExOjE1OjQwLjg2Nzk2ODUyMSAtMDQwMAorQEAgLTY5LDggKzY5LDYgQEAKKyAJICog SXQgaXMgbm93IHVzZWxlc3MKKyAJICogaHR0cHM6Ly9naXRodWIuY29tL0ZGbXBlZy9GRm1wZWcv YmxvYi83MGQyNTI2OGMyMWNiZWU1ZjA4MzA0ZGE5NWJlMWY2NDdjNjMwYzE1L2RvYy9BUEljaGFu Z2VzI0w4NgorIAkgKi8KKy0gIGlmIChhdmZvcm1hdF92ZXJzaW9uKCkgPCBBVl9WRVJTSU9OX0lO VCg1OCw5LDEwMCkpCistICAgIGF2X3JlZ2lzdGVyX2FsbCgpOworIAorIAlhdl9sb2dfc2V0X2Nh bGxiYWNrKHNjYW5fYXZfbG9nKTsKKyAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbG91ZGdhaW4vdGVt cGxhdGUgYi9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlCmluZGV4IGRhNGYyZDU2ZTk0YzMuLjRk NmJmMjllZmI0ZmQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUKKysrIGIv c3JjcGtncy9sb3VkZ2Fpbi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ2xvdWRnYWluJwogcGtnbmFtZT1sb3VkZ2FpbgogdmVyc2lvbj0wLjYuOAotcmV2aXNp b249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJsaWJlYnVyMTI4LWRldmVsIHRhZ2xpYi1kZXZlbCBmZm1w ZWctZGV2ZWwiCgpGcm9tIDdkYjUzOGMyZDdhMjdjMmUzNTUxZjY1OGQyNjhjNjdiNzYwMDQwOGUg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA1 Mi8xMTVdIG1lZGlhc3RyZWFtZXI6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3Jj cGtncy9tZWRpYXN0cmVhbWVyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tZWRpYXN0cmVh bWVyL3RlbXBsYXRlIGIvc3JjcGtncy9tZWRpYXN0cmVhbWVyL3RlbXBsYXRlCmluZGV4IGQyOTIx MGMxYmY5YzcuLjFiZGUwMzE0NDNhNTkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWVkaWFzdHJlYW1l ci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUKQEAgLTUsNyAr NSw3IEBAIHJldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURF TkFCTEVfU1RSSUNUPTAgLURFTkFCTEVfVU5JVF9URVNUUz0wIgogaG9zdG1ha2VkZXBlbmRzPSJw eXRob24zIgotbWFrZWRlcGVuZHM9ImJ6cnRwLWRldmVsIGZmbXBlZy1kZXZlbCBnbGV3LWRldmVs IGxpYlh2LWRldmVsIGxpYnNydHAtZGV2ZWwKK21ha2VkZXBlbmRzPSJienJ0cC1kZXZlbCBmZm1w ZWc0LWRldmVsIGdsZXctZGV2ZWwgbGliWHYtZGV2ZWwgbGlic3J0cC1kZXZlbAogIGxpYnVwbnAt ZGV2ZWwgbGlidnB4LWRldmVsIG1iZWR0bHMtZGV2ZWwgb3B1cy1kZXZlbCBvcnRwLWRldmVsIHB1 bHNlYXVkaW8tZGV2ZWwKICBsaWJ0aGVvcmEtZGV2ZWwgc3BlZXgtZGV2ZWwgdjRsLXV0aWxzLWRl dmVsIGJjZzcyOS1kZXZlbCBiY21hdHJvc2thMi1kZXZlbCBsaWJnc20tZGV2ZWwiCiAjIHp4aW5n LWNwcC1kZXZlbCAoMS4yLjAgcHJvYmFibHkgbm90IGNvbXBhdGlibGUsIGNoZWNrIGFnYWluIGFm dGVyIHVwZGFpbmcgeHppbmcpCgpGcm9tIDVmOTExZGU4NTI2NzVlYjY4YzFhOTI2NjI1ZmMxZjNl YzNlNDgyOGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDog W1BBVENIIDA1My8xMTVdIG1nYmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9tZ2JhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tZ2JhL3RlbXBsYXRlIGIvc3JjcGtn cy9tZ2JhL3RlbXBsYXRlCmluZGV4IDU1MTNlM2ZkMTZmM2YuLmY1Yzg3YTQ4OTMwMDIgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvbWdiYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21nYmEvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtZ2JhJwogcGtnbmFtZT1tZ2Jh CiB2ZXJzaW9uPTAuMTAuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21h a2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2Ug ZGVza3RvcC1maWxlLXV0aWxzIgogbWFrZWRlcGVuZHM9IlNETDItZGV2ZWwgZmZtcGVnLWRldmVs IGxpYmVkaXQtZGV2ZWwgbGliZXBveHktZGV2ZWwgbGlibWFnaWNrLWRldmVsCgpGcm9tIGMyOGFj MzE4MGQxOWIyY2NiZTk4MGIxMGQ3MDJjOTFmN2U5MTJiZmIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA1NC8xMTVdIG1pbmlkbG5hOiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlIGIvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0 ZQppbmRleCBkNTUxZTQ5ZWQ0NjUzLi41ZmE5MjlmM2EwYzEyIDEwMDY0NAotLS0gYS9zcmNwa2dz L21pbmlkbG5hL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtaW5pZGxuYScKIHBrZ25hbWU9bWluaWRs bmEKIHZlcnNpb249MS4zLjMKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdu dS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIKICAtLXNiaW5kaXI9L3Vzci9iaW4KCkZyb20g ODY5NDJkOTRjOWNjYWVjN2NiZTdkYmU3OWVmNTcwZDM5Zjc5MzA3ZCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU1LzExNV0gbWx0OiByZXZi dW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvbWx0L3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9tbHQvdGVtcGxhdGUgYi9zcmNwa2dzL21sdC90ZW1wbGF0ZQppbmRleCBmMTRk ZDg1ZDFjOWRjLi5mMGIzYWYxOTNkYjJjIDEwMDY0NAotLS0gYS9zcmNwa2dzL21sdC90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL21sdC90ZW1wbGF0ZQpAQCAtOCw3ICs4LDcgQEAgY29uZmlndXJlX2Fy Z3M9Ii0tcHJlZml4PS91c3IgLS1saWJkaXI9L3Vzci9saWIkWEJQU19UQVJHRVRfV09SRFNJWkUK ICAtLXN3aWctbGFuZ3VhZ2VzPXB5dGhvbiIKIGhvc3RtYWtlZGVwZW5kcz0iZG94eWdlbiBwa2ct Y29uZmlnIGxhZHNwYS1zZGsgc3dpZyBweXRob24zIHdoaWNoIgogIyBYWFg6IG1vdml0IHZpZC5z dGFiCi1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVnLWRldmVsIGd0aystZGV2ZWwg amFjay1kZXZlbCBsYWRzcGEtc2RrCittYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVn NC1kZXZlbCBndGsrLWRldmVsIGphY2stZGV2ZWwgbGFkc3BhLXNkawogIGxpYmV4aWYtZGV2ZWwg bGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJ4bWwyLWRldmVsIHNveC1kZXZlbCBTRExfaW1hZ2UtZGV2 ZWwKICBmZnR3LWRldmVsIGZyZWkwci1wbHVnaW5zIHB5dGhvbjMtZGV2ZWwgcHVsc2VhdWRpby1k ZXZlbCBtb3ZpdC1kZXZlbAogIGxpYnZpZHN0YWItZGV2ZWwiCgpGcm9tIGFhZTQzNzMyZWM1MjMy MWJhZjc3NTI1MjMyOWNkMjUzOWUwZDA4MDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA1Ni8xMTVdIG1vYzogcmV2YnVtcCBmb3IgZmZtcGVn NC00LjQuMwoKLS0tCiBzcmNwa2dzL21vYy90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5n ZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L21vYy90ZW1wbGF0ZSBiL3NyY3BrZ3MvbW9jL3RlbXBsYXRlCmluZGV4IDVhZWQ1ZDM2NTU4ZDMu LmQ4ZGU4MTYwMjZiNjQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbW9jL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvbW9jL3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdtb2MnCiBwa2duYW1lPW1vYwogdmVyc2lvbj0yLjUuMgotcmV2aXNpb249NgorcmV2aXNpb249 NwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IgotbWFrZWRlcGVuZHM9ImRiLWRldmVsIG5jdXJzZXMtZGV2ZWwgbGliY3VybC1kZXZlbCBwb3B0 LWRldmVsIGZmbXBlZy1kZXZlbAorbWFrZWRlcGVuZHM9ImRiLWRldmVsIG5jdXJzZXMtZGV2ZWwg bGliY3VybC1kZXZlbCBwb3B0LWRldmVsIGZmbXBlZzQtZGV2ZWwKICBqYWNrLWRldmVsIGFsc2Et bGliLWRldmVsIGxpYmx0ZGwtZGV2ZWwgbGliZmxhYy1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwKICBs aWJtYWQtZGV2ZWwgbGlibXBjZGVjLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgbGliaWQzdGFnLWRl dmVsIGZhYWQyLWRldmVsCiAgdGFnbGliLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwgd2F2cGFjay1k ZXZlbCBzcGVleC1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsCgpGcm9tIDkxMWNhYTQ5ZjY5MzQ5 NWYwOGE4YzY0NjEzOGYyMmJjMmZjOTc2MWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA1Ny8xMTVdIG1vdGlvbjogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL21vdGlvbi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bW90aW9uL3RlbXBsYXRlIGIvc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUKaW5kZXggM2NmM2MzMDM1 YzViNy4uN2RjYTEyZDg1MWUzMyAxMDA2NDQKLS0tIGEvc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUK KysrIGIvc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdtb3Rpb24nCiBwa2duYW1lPW1vdGlvbgogdmVyc2lvbj00LjUuMQotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBl bmRzPSJhdXRvbWFrZSBwa2ctY29uZmlnIGdldHRleHQtZGV2ZWwgdGFyIgogbWFrZWRlcGVuZHM9 ImZmbXBlZy1kZXZlbCBsaWJtaWNyb2h0dHBkLWRldmVsIHY0bC11dGlscy1kZXZlbCBnZXR0ZXh0 LWRldmVsIgoKRnJvbSA5Mzg3MjEwNTY5MGE3MTNkODcxMDlhYjNlYjkzNTU4M2QwNjQxMjc1IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTgv MTE1XSBub3RjdXJzZXM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9ub3Rj dXJzZXMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0ZSBiL3Ny Y3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlCmluZGV4IDZkZDhhMDkxMzE5ZjcuLjMxMTBjMzBjOWFm ZjIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv bm90Y3Vyc2VzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn bm90Y3Vyc2VzJwogcGtnbmFtZT1ub3RjdXJzZXMKIHZlcnNpb249My4wLjkKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURVU0VfU1RB VElDPU9OICQodm9wdF9ib29sIG1hbiBVU0VfUEFORE9DKSIKIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyAkKHZvcHRfaWYgbWFuIHBhbmRvYykiCgpGcm9tIDE1NDMxNzRlODcxMzI0ZGRlNWIy M2ZmNDhhOTcwMTk3M2RiZTIxYWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0 MDAKU3ViamVjdDogW1BBVENIIDA1OS8xMTVdIG9saXZlOiByZXZidW1wIGZvciBmZm1wZWc0LTQu NC4zCgotLS0KIHNyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9v bGl2ZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUKaW5kZXggMTJhNDY5MzZjOTkw MC4uNWMyOTE3YjljNTEyNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL29saXZlL3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdvbGl2ZScKIHBrZ25hbWU9b2xpdmUKIHZlcnNpb249MC4xLjIKLXJldmlzaW9uPTIK K3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPXFtYWtlCiBob3N0bWFrZWRlcGVuZHM9InF0NS1xbWFr ZSBxdDUtaG9zdC10b29scyBwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9InF0NS1kZXZlbCBxdDUt bXVsdGltZWRpYS1kZXZlbCBxdDUtc3ZnLWRldmVsIGZmbXBlZy1kZXZlbCBmcmVpMHItcGx1Z2lu cyIKK21ha2VkZXBlbmRzPSJxdDUtZGV2ZWwgcXQ1LW11bHRpbWVkaWEtZGV2ZWwgcXQ1LXN2Zy1k ZXZlbCBmZm1wZWc0LWRldmVsIGZyZWkwci1wbHVnaW5zIgogc2hvcnRfZGVzYz0iTm9uLWxpbmVh ciB2aWRlbyBlZGl0b3IiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5v cmc+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKCkZyb20gNWY3NzlmMGQ5NTkzYzFhNjQw ODQwNDkwNjdjNzBiMWY2YjEwYmNhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYwLzExNV0gb214cGxheWVyOiByZXZidW1wIGZvciBmZm1w ZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZp bGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlIGIvc3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUK aW5kZXggOWE2NjY5MGM4M2ViYi4uYTIxYjg3ODg3ODAzNyAxMDA2NDQKLS0tIGEvc3JjcGtncy9v bXhwbGF5ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvbXhwbGF5ZXInCiBwa2duYW1lPW9teHBs YXllcgogdmVyc2lvbj0yMDE5MDEwMgotcmV2aXNpb249MgorcmV2aXNpb249Mwogc2hvcnRfZGVz Yz0iQ29tbWFuZGxpbmUgT01YIHBsYXllciBmb3IgdGhlIFJhc3BiZXJyeSBQaSIKIG1haW50YWlu ZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9y LWxhdGVyIgpAQCAtMTUsNyArMTUsNyBAQCBjaGVja3N1bT1hZjJkOTQ1MGY4OTQ3ODQyZWE4YzQw MWZlOWY3MWVlYzQ0NDAxM2ViYmRlZTI5ZjJhYzgyOGM5YzQ5M2MxMzI5CiBhcmNocz0iYXJtdjZs KiBhcm12N2wqIgogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBob3N0bWFrZWRlcGVuZHM9InJ1 Ynktcm9ubiBwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIHJwaS11c2Vy bGFuZC1kZXZlbCBwY3JlLWRldmVsIGJvb3N0LWRldmVsIGZyZWV0eXBlLWRldmVsIGZmbXBlZy1k ZXZlbCBkYnVzLWRldmVsIgorbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIHJwaS11c2VybGFu ZC1kZXZlbCBwY3JlLWRldmVsIGJvb3N0LWRldmVsIGZyZWV0eXBlLWRldmVsIGZmbXBlZzQtZGV2 ZWwgZGJ1cy1kZXZlbCIKIGRlcGVuZHM9ImZyZWVmb250LXR0ZiIKIAogZG9fYnVpbGQoKSB7CgpG cm9tIGQ5MGI1ODAyNTQ2NDA0ZDRiMWIxNGNkZWVlYjYzOTFjZjM1NjQ3MzggTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2MS8xMTVdIG9wZW50 b29uejogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29wZW50b29uei90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRlIGIvc3JjcGtncy9vcGVu dG9vbnovdGVtcGxhdGUKaW5kZXggZWU5Zjc2MDNmNTVmZC4uM2U4MTgzNGNhMGVkZCAxMDA2NDQK LS0tIGEvc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVudG9vbnov dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVudG9vbnon CiBwa2duYW1lPW9wZW50b29uegogdmVyc2lvbj0xLjYuMAotcmV2aXNpb249MgorcmV2aXNpb249 MwogYnVpbGRfd3Jrc3JjPSJ0b29uei9zb3VyY2VzIgogYnVpbGRfc3R5bGU9Y21ha2UKIG1ha2Vf Y21kPW1ha2UKCkZyb20gNGZkYjIwMmIyZDAzYjM3OTIxZGU1ODU3YjY5NTRiZTBmM2NjYjMzZSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYy LzExNV0gcGlhbm9iYXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9waWFu b2Jhci90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcGlhbm9iYXIvdGVtcGxhdGUgYi9zcmNw a2dzL3BpYW5vYmFyL3RlbXBsYXRlCmluZGV4IGUzZmViYjgyMWE0NTEuLjFlM2RjMWJmOTMwOGUg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcGlhbm9iYXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9waWFu b2Jhci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3BpYW5v YmFyJwogcGtnbmFtZT1waWFub2JhcgogdmVyc2lvbj0yMDIyLjA0LjAxCi1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1ha2VfYnVpbGRfYXJncz0iVj0x IgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSAwOTdhOTEwMTFiMjdlNzVjNjJi MjY1OWQyNjIxZjliMGUxZTliMzVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwNjMvMTE1XSBwcHNzcHA6IHJldmJ1bXAgZm9yIGZmbXBlZzQt NC40LjMKCi0tLQogc3JjcGtncy9wcHNzcHAvdGVtcGxhdGUgfCA3ICsrKy0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9wcHNzcHAvdGVtcGxhdGUgYi9zcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZQppbmRleCAyYzBk ZWQ0OTZlYjk4Li4xMjk0ZWYzYWU2NjljIDEwMDY0NAotLS0gYS9zcmNwa2dzL3Bwc3NwcC90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3Bwc3NwcCcKIHBrZ25hbWU9cHBzc3BwCiB2ZXJzaW9uPTEuMTYuNgot cmV2aXNpb249MQorcmV2aXNpb249MgogX2dsc2xhbmdfY29tbWl0PWIzNGY2MTllMWM4NTgxMGRj YjNjNTc4MTA3ZDJlNDhiYTRlZTJiMzcKIF9TUElSVl9Dcm9zc19jb21taXQ9NDIxMmVlZjY3ZWQw Y2EwNDhjYjcyNmE2NzY3MTg1NTA0ZTc2OTVlNQogX2FybWlwc19jb21taXQ9N2JkMWVjOTNkNDU4 Njk4NWJhMWVmNDIwYjQzYjVlNjIwZjY4Njk1ZQpAQCAtMTUsNyArMTUsNyBAQCBjb25maWd1cmVf YXJncz0iLURIRUFETEVTUz0xIC1EVVNFX1NZU1RFTV9GRk1QRUc9MSAtRFVOSVRURVNUPU9OCiAg LURVU0lOR19RVF9VST0kKHZvcHRfaWYgcXQgT04gT0ZGKSAtRFVTRV9TWVNURU1fWlNURD1PTgog IC1EQVJNSVBTX1VTRV9TVERfRklMRVNZU1RFTT1PTiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNv bmZpZyBweXRob24zICQodm9wdF9pZiBxdCBxdDUtaG9zdC10b29scykiCi1tYWtlZGVwZW5kcz0i emxpYi1kZXZlbCBnbGV3LWRldmVsIGZmbXBlZy1kZXZlbCBsaWJ6aXAtZGV2ZWwKK21ha2VkZXBl bmRzPSJ6bGliLWRldmVsIGdsZXctZGV2ZWwgZmZtcGVnNC1kZXZlbCBsaWJ6aXAtZGV2ZWwKICBz bmFwcHktZGV2ZWwgcmFwaWRqc29uIGxpYnBuZy1kZXZlbCBsaWJ6c3RkLWRldmVsCiAgJCh2b3B0 X2lmIHNkbDIgJ1NETDJfdHRmLWRldmVsIFNETDItZGV2ZWwnKSAkKHZvcHRfaWYgd2F5bGFuZCB3 YXlsYW5kLWRldmVsKQogICQodm9wdF9pZiBxdCAncXQ1LWRldmVsIHF0NS1tdWx0aW1lZGlhLWRl dmVsJykiCkBAIC03Miw3ICs3Miw3IEBAIHBvc3RfZXh0cmFjdCgpIHsKICAgICAgICAgbXYgJHt3 cmtzcmN9L3JjaGVldm9zLSR7X3JjaGVldm9zX2NvbW1pdH0gJHt3cmtzcmN9L2V4dC9yY2hlZXZv cwogfQogCi1wb3N0X3BhdGNoKCl7Citwb3N0X3BhdGNoKCkgewogCSMgZGlzYWJsZSBnaXQgdmVy c2lvbmluZwogCXZzZWQgLWUgJ3N8ZmluZF9wYWNrYWdlKEdpdCl8IyAmfCcgLWkgZ2l0LXZlcnNp b24uY21ha2UKIH0KQEAgLTg1LDcgKzg1LDYgQEAgcG9zdF9jb25maWd1cmUoKSB7CiB9CiAKIGRv X2luc3RhbGwoKSB7Ci0JdmxpY2Vuc2UgTElDRU5TRS5UWFQKIAl2aW5zdGFsbCBpY29ucy9pY29u LnN2ZyA2NDQgdXNyL3NoYXJlL3BpeG1hcHMgcHBzc3BwLnN2ZwogCXZpbnN0YWxsIFF0L1BQU1NQ UC5kZXNrdG9wIDY0NCB1c3Ivc2hhcmUvYXBwbGljYXRpb25zCiAJdmJpbiBidWlsZC9QUFNTUFBI ZWFkbGVzcyBwcHNzcHAtaGVhZGxlc3MKCkZyb20gM2NkYjc1NjgxOTcyNzhiNDY4NTM1ZTY1NWFk NzNlMWQ0MTVjM2NiOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDY0LzExNV0gcHFpdjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL3BxaXYvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3BxaXYvdGVtcGxhdGUgYi9z cmNwa2dzL3BxaXYvdGVtcGxhdGUKaW5kZXggNTQyZmMyN2EyZDMyYS4uOTMwOGQ5NDliNmExYyAx MDA2NDQKLS0tIGEvc3JjcGtncy9wcWl2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcHFpdi90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3BxaXYnCiBwa2duYW1l PXBxaXYKIHZlcnNpb249Mi4xMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 Z251LW1ha2VmaWxlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0i Z2xpYi1kZXZlbCBndGsrMy1kZXZlbCAkKHZvcHRfaWYgZmZtcGVnIGZmbXBlZy1kZXZlbCkKCkZy b20gMmI2ZWYyMzdhZDUwZmZjNTFlOWU3OTg1ZjU2ODE0OTk3OWE0ZGE2NCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY1LzExNV0gcW1tcDog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3FtbXAvdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3FtbXAvdGVtcGxhdGUgYi9zcmNwa2dzL3FtbXAvdGVtcGxhdGUKaW5kZXgg MjZjNjYxZWQxNmJlYS4uYTE1MGQ3NDQxYzdhNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9xbW1wL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3FtbXAnCiBwa2duYW1lPXFtbXAKIHZlcnNpb249MS42LjEKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURV U0VfSEFMOkJPT0w9RkFMU0UgLURRTU1QX0RFRkFVTFRfVUk6U1RSSU5HPXNpbXBsZSIKIGhvc3Rt YWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UiCgpGcm9tIGE1 YzQ1ODVjYjRmNTgwMGU0YzZjOWUyOWZjYjkxYTBlNjAzY2U2MDYgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2Ni8xMTVdIHF0NS13ZWJlbmdp bmU6IHVwZGF0ZSB0byA1LjE1LjEzCgotLS0KIC4uLi9jaHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNw cDE0LnBhdGNoICAgICAgICB8ICAxMSArKwogc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv ZmZtcGVnNS5wYXRjaCAgIHwgMTc5ICsrKysrKysrKysrKysrKysrKwogc3JjcGtncy9xdDUtd2Vi ZW5naW5lL3RlbXBsYXRlICAgICAgICAgICAgICAgIHwgIDEwICstCiAzIGZpbGVzIGNoYW5nZWQs IDE5NSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQu cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9m Zm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv Y2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMDRhZGM1NDBmMmNiYwotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRl cnMtY3BwMTQucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL21lZGlhL2ZpbHRlcnMvQlVJTEQuZ24JMjAyMy0wMi0yNyAxMzozMjo1OS4wMDAwMDAwMDAg LTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL0JVSUxELmdu CTIwMjMtMDQtMDIgMTc6MjE6MzkuMjA0MDY2Mzg0IC0wNDAwCitAQCAtOTYsNiArOTYsOCBAQAor ICAgICAiLy91aS9nZngvZ2VvbWV0cnk6Z2VvbWV0cnkiLAorICAgXQorIAorKyAgY2ZsYWdzX2Nj ID0gWyAiLXN0ZD1jKysxNCIgXQorKworICAgbGlicyA9IFtdCisgCisgICBpZiAocHJvcHJpZXRh cnlfY29kZWNzKSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9m Zm1wZWc1LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5hYzU1ZTE2MzQ0MjNh Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvZmZtcGVn NS5wYXRjaApAQCAtMCwwICsxLDE3OSBAQAorLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21l ZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MJMjAyMy0wNC0wMiAxNjo1MDo1Ny43MzI1NDc0 NDYgLTA0MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBl Z19kZW11eGVyLmNjCTIwMjMtMDQtMDIgMTY6NTA6MDkuNDg2NDc4OTk1IC0wNDAwCitAQCAtNTcs NiArNTcsOCBAQAorIAorIG5hbWVzcGFjZSB7CisgCisrY29uc3RleHByIGludDY0X3Qga1JlbGF0 aXZlVHNCYXNlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oMHg3ZmZlZmZmZmZmZmZmZmZmKTsKKysK KyB2b2lkIFNldEFWU3RyZWFtRGlzY2FyZChBVlN0cmVhbSogc3RyZWFtLCBBVkRpc2NhcmQgZGlz Y2FyZCkgeworICAgRENIRUNLKHN0cmVhbSk7CisgICBzdHJlYW0tPmRpc2NhcmQgPSBkaXNjYXJk OworQEAgLTkwLDI0ICs5MiwxMiBAQAorIAorIHN0YXRpYyBiYXNlOjpUaW1lRGVsdGEgRXh0cmFj dFN0YXJ0VGltZShBVlN0cmVhbSogc3RyZWFtKSB7CisgICAvLyBUaGUgZGVmYXVsdCBzdGFydCB0 aW1lIGlzIHplcm8uCistICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGltZTsKKysgIGJhc2U6OlRp bWVEZWx0YSBzdGFydF90aW1lID0ga05vVGltZXN0YW1wOworIAorICAgLy8gRmlyc3QgdHJ5IHRv IHVzZSAgdGhlIHxzdGFydF90aW1lfCB2YWx1ZSBhcyBpcy4KKyAgIGlmIChzdHJlYW0tPnN0YXJ0 X3RpbWUgIT0ga05vRkZtcGVnVGltZXN0YW1wKQorICAgICBzdGFydF90aW1lID0gQ29udmVydEZy b21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgc3RyZWFtLT5zdGFydF90aW1lKTsKKyAKKy0g IC8vIE5leHQgdHJ5IHRvIHVzZSB0aGUgZmlyc3QgRFRTIHZhbHVlLCBmb3IgY29kZWNzIHdoZXJl IHdlIGtub3cgUFRTID09IERUUworLSAgLy8gKGV4Y2x1ZGVzIGFsbCBIMjZ4IGNvZGVjcykuIFRo ZSBzdGFydCB0aW1lIG11c3QgYmUgcmV0dXJuZWQgaW4gUFRTLgorLSAgaWYgKHN0cmVhbS0+Zmly c3RfZHRzICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCAmJgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXIt PmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0hFVkMgJiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFy LT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IMjY0ICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bh ci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfTVBFRzQpIHsKKy0gICAgY29uc3QgYmFzZTo6VGlt ZURlbHRhIGZpcnN0X3B0cyA9CistICAgICAgICBDb252ZXJ0RnJvbVRpbWVCYXNlKHN0cmVhbS0+ dGltZV9iYXNlLCBzdHJlYW0tPmZpcnN0X2R0cyk7CistICAgIGlmIChmaXJzdF9wdHMgPCBzdGFy dF90aW1lKQorLSAgICAgIHN0YXJ0X3RpbWUgPSBmaXJzdF9wdHM7CistICB9CistCisgICByZXR1 cm4gc3RhcnRfdGltZTsKKyB9CisgCitAQCAtNDA4LDExICszOTgsMTEgQEAKKyAgIHNjb3BlZF9y ZWZwdHI8RGVjb2RlckJ1ZmZlcj4gYnVmZmVyOworIAorICAgaWYgKHR5cGUoKSA9PSBEZW11eGVy U3RyZWFtOjpURVhUKSB7CistICAgIGludCBpZF9zaXplID0gMDsKKysgICAgc2l6ZV90IGlkX3Np emUgPSAwOworICAgICB1aW50OF90KiBpZF9kYXRhID0gYXZfcGFja2V0X2dldF9zaWRlX2RhdGEo CisgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1dFQlZUVF9JREVOVElGSUVSLCAm aWRfc2l6ZSk7CisgCistICAgIGludCBzZXR0aW5nc19zaXplID0gMDsKKysgICAgc2l6ZV90IHNl dHRpbmdzX3NpemUgPSAwOworICAgICB1aW50OF90KiBzZXR0aW5nc19kYXRhID0gYXZfcGFja2V0 X2dldF9zaWRlX2RhdGEoCisgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1dFQlZU VF9TRVRUSU5HUywgJnNldHRpbmdzX3NpemUpOworIAorQEAgLTQyNCw3ICs0MTQsNyBAQAorICAg ICBidWZmZXIgPSBEZWNvZGVyQnVmZmVyOjpDb3B5RnJvbShwYWNrZXQtPmRhdGEsIHBhY2tldC0+ c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZV9kYXRhLmRh dGEoKSwgc2lkZV9kYXRhLnNpemUoKSk7CisgICB9IGVsc2UgeworLSAgICBpbnQgc2lkZV9kYXRh X3NpemUgPSAwOworKyAgICBzaXplX3Qgc2lkZV9kYXRhX3NpemUgPSAwOworICAgICB1aW50OF90 KiBzaWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKKyAgICAgICAgIHBhY2tldC5n ZXQoKSwgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxPQ0tBRERJVElPTkFMLCAmc2lkZV9kYXRhX3Np emUpOworIAorQEAgLTQ4NSw3ICs0NzUsNyBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBhY2tldC0+c2l6ZSAtIGRhdGFfb2Zmc2V0KTsKKyAgICAgfQorIAorLSAg ICBpbnQgc2tpcF9zYW1wbGVzX3NpemUgPSAwOworKyAgICBzaXplX3Qgc2tpcF9zYW1wbGVzX3Np emUgPSAwOworICAgICBjb25zdCB1aW50MzJfdCogc2tpcF9zYW1wbGVzX3B0ciA9CisgICAgICAg ICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXZfcGFja2V0X2dldF9zaWRlX2Rh dGEoCisgICAgICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9TS0lQX1NBTVBMRVMs ICZza2lwX3NhbXBsZXNfc2l6ZSkpOworQEAgLTE1ODcsNiArMTU3Nyw4IEBACisgICBmb3IgKGNv bnN0IGF1dG8mIHN0cmVhbSA6IHN0cmVhbXNfKSB7CisgICAgIGlmICghc3RyZWFtIHx8IHN0cmVh bS0+SXNFbmFibGVkKCkgIT0gZW5hYmxlZCkKKyAgICAgICBjb250aW51ZTsKKysgICAgaWYgKHN0 cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9QVFNfVkFMVUUpCisrICAgICAg Y29udGludWU7CisgICAgIGlmICghbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtIHx8CisgICAgICAg ICBzdHJlYW0tPnN0YXJ0X3RpbWUoKSA8IGxvd2VzdF9zdGFydF90aW1lX3N0cmVhbS0+c3RhcnRf dGltZSgpKSB7CisgICAgICAgbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtID0gc3RyZWFtLmdldCgp OworQEAgLTE2MDQsNiArMTU5Niw4IEBACisgICAgIGlmIChzdHJlYW0gJiYgc3RyZWFtLT50eXBl KCkgPT0gRGVtdXhlclN0cmVhbTo6VklERU8gJiYKKyAgICAgICAgIHN0cmVhbS0+SXNFbmFibGVk KCkpIHsKKyAgICAgICB2aWRlb19zdHJlYW0gPSBzdHJlYW0uZ2V0KCk7CisrICAgICAgaWYgKHN0 cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9QVFNfVkFMVUUpCisrICAgICAg ICBjb250aW51ZTsKKyAgICAgICBpZiAodmlkZW9fc3RyZWFtLT5zdGFydF90aW1lKCkgPD0gc2Vl a190aW1lKSB7CisgICAgICAgICByZXR1cm4gdmlkZW9fc3RyZWFtOworICAgICAgIH0KK2RpZmYg LU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVk aWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uaCBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oCistLS0gYS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uaAkyMDIyLTA1LTIzIDA2OjM4 OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2Zm bXBlZy9mZm1wZWdfY29tbW9uLmgJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTcxOTI3ODggLTA1MDAK K0BAIC0yOSw2ICsyOSw3IEBAIGV4dGVybiAiQyIgeworICNpbmNsdWRlIDxsaWJhdmZvcm1hdC9h dmZvcm1hdC5oPgorICNpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmlvLmg+CisgI2luY2x1ZGUgPGxp YmF2dXRpbC9hdnV0aWwuaD4KKysjaW5jbHVkZSA8bGliYXZ1dGlsL2NoYW5uZWxfbGF5b3V0Lmg+ CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9pbWd1dGlscy5oPgorICNpbmNsdWRlIDxsaWJhdnV0aWwv bG9nLmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9tYXN0ZXJpbmdfZGlzcGxheV9tZXRhZGF0YS5o PgorZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjIHF0d2ViZW5naW5lLTUuMTUu MTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIu Y2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVf cmVhZGVyLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMv M3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRlci5jYwkyMDIy LTA3LTExIDIyOjEyOjQ3LjkxNzE5Mjc4OCAtMDUwMAorQEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBB dWRpb0ZpbGVSZWFkZXI6Ok9wZW5EZW11eGVyKCkgeworIH0KKyAKKyBib29sIEF1ZGlvRmlsZVJl YWRlcjo6T3BlbkRlY29kZXIoKSB7CistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9k ZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNvZGVjKiBjb2Rl YyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisgICBp ZiAoY29kZWMpIHsKKyAgICAgLy8gTVAzIGRlY29kZXMgdG8gUzE2UCB3aGljaCB3ZSBkb24ndCBz dXBwb3J0LCB0ZWxsIGl0IHRvIHVzZSBTMTYgaW5zdGVhZC4KKyAgICAgaWYgKGNvZGVjX2NvbnRl eHRfLT5zYW1wbGVfZm10ID09IEFWX1NBTVBMRV9GTVRfUzE2UCkKK2RpZmYgLU5hdXJwIHF0d2Vi ZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9m Zm1wZWdfYXVkaW9fZGVjb2Rlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRpb19kZWNvZGVyLmNjCistLS0gYS9zcmMv M3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYwky MDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2No cm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2RlY29kZXIuY2MJMjAyMi0wNy0xMSAy MjoxMjo0Ny45MTcxOTI3ODggLTA1MDAKK0BAIC0zMjksNyArMzI5LDcgQEAgYm9vbCBGRm1wZWdB dWRpb0RlY29kZXI6OkNvbmZpZ3VyZURlY29kZQorICAgICB9CisgICB9CisgCistICBBVkNvZGVj KiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7 CisrICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2Nv bnRleHRfLT5jb2RlY19pZCk7CisgICBpZiAoIWNvZGVjIHx8CisgICAgICAgYXZjb2RlY19vcGVu Mihjb2RlY19jb250ZXh0Xy5nZXQoKSwgY29kZWMsICZjb2RlY19vcHRpb25zKSA8IDApIHsKKyAg ICAgRExPRyhFUlJPUikgPDwgIkNvdWxkIG5vdCBpbml0aWFsaXplIGF1ZGlvIGRlY29kZXI6ICIK K2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21p dW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZ2x1ZS5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVlLmNjCistLS0gYS9zcmMv M3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZ2x1ZS5jYwkyMDIyLTA1LTIz IDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21l ZGlhL2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTgxOTI3Nzkg LTA1MDAKK0BAIC01OSw3ICs1OSw2IEBAIHN0YXRpYyBpbnQ2NF90IEFWSU9TZWVrT3BlcmF0aW9u KHZvaWQqIG8KKyB9CisgCisgdm9pZCBGRm1wZWdHbHVlOjpJbml0aWFsaXplRkZtcGVnKCkgewor LSAgYXZfcmVnaXN0ZXJfYWxsKCk7CisgfQorIAorIHN0YXRpYyB2b2lkIExvZ0NvbnRhaW5lcihi b29sIGlzX2xvY2FsX2ZpbGUsCitAQCAtOTUsOSArOTQsNiBAQCBGRm1wZWdHbHVlOjpGRm1wZWdH bHVlKEZGbXBlZ1VSTFByb3RvY29sCisgICAvLyBFbmFibGUgZmFzdCwgYnV0IGluYWNjdXJhdGUg c2Vla3MgZm9yIE1QMy4KKyAgIGZvcm1hdF9jb250ZXh0Xy0+ZmxhZ3MgfD0gQVZGTVRfRkxBR19G QVNUX1NFRUs7CisgCistICAvLyBFbnN1cmVzIHdlIGNhbiByZWFkIG91dCB2YXJpb3VzIG1ldGFk YXRhIGJpdHMgbGlrZSB2cDggYWxwaGEuCistICBmb3JtYXRfY29udGV4dF8tPmZsYWdzIHw9IEFW Rk1UX0ZMQUdfS0VFUF9TSURFX0RBVEE7CistCisgICAvLyBFbnN1cmVzIGZvcm1hdCBwYXJzaW5n IGVycm9ycyB3aWxsIGJhaWwgb3V0LiBGcm9tIGFuIGF1ZGl0IG9uIDExLzIwMTcsIGFsbAorICAg Ly8gaW5zdGFuY2VzIHdlcmUgcmVhbCBmYWlsdXJlcy4gU29sdmVzIGJ1Z3MgbGlrZSBodHRwOi8v Y3JidWcuY29tLzcxMDc5MS4KKyAgIGZvcm1hdF9jb250ZXh0Xy0+ZXJyb3JfcmVjb2duaXRpb24g fD0gQVZfRUZfRVhQTE9ERTsKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9z cmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5j YyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJz L2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVk aWEvZmlsdGVycy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAw MDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMv ZmZtcGVnX3ZpZGVvX2RlY29kZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1 MDAKK0BAIC0zOTEsNyArMzkxLDcgQEAgYm9vbCBGRm1wZWdWaWRlb0RlY29kZXI6OkNvbmZpZ3Vy ZURlY29kZQorICAgaWYgKGRlY29kZV9uYWx1c18pCisgICAgIGNvZGVjX2NvbnRleHRfLT5mbGFn czIgfD0gQVZfQ09ERUNfRkxBRzJfQ0hVTktTOworIAorLSAgQVZDb2RlYyogY29kZWMgPSBhdmNv ZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOworKyAgY29uc3QgQVZD b2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNf aWQpOworICAgaWYgKCFjb2RlYyB8fCBhdmNvZGVjX29wZW4yKGNvZGVjX2NvbnRleHRfLmdldCgp LCBjb2RlYywgTlVMTCkgPCAwKSB7CisgICAgIFJlbGVhc2VGRm1wZWdSZXNvdXJjZXMoKTsKKyAg ICAgcmV0dXJuIGZhbHNlOworZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlhX2ZpbGVfY2hlY2tlci5jYyBx dHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21l ZGlhX2ZpbGVfY2hlY2tlci5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2Zp bHRlcnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAw IC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9tZWRpYV9m aWxlX2NoZWNrZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC02 OCw3ICs2OCw3IEBAIGJvb2wgTWVkaWFGaWxlQ2hlY2tlcjo6U3RhcnQoYmFzZTo6VGltZUQKKyAg ICAgICBhdXRvIGNvbnRleHQgPSBBVlN0cmVhbVRvQVZDb2RlY0NvbnRleHQoZm9ybWF0X2NvbnRl eHQtPnN0cmVhbXNbaV0pOworICAgICAgIGlmICghY29udGV4dCkKKyAgICAgICAgIGNvbnRpbnVl OworLSAgICAgIEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY3AtPmNvZGVj X2lkKTsKKysgICAgICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVy KGNwLT5jb2RlY19pZCk7CisgICAgICAgaWYgKGNvZGVjICYmIGF2Y29kZWNfb3BlbjIoY29udGV4 dC5nZXQoKSwgY29kZWMsIG51bGxwdHIpID49IDApIHsKKyAgICAgICAgIGF1dG8gbG9vcCA9IHN0 ZDo6bWFrZV91bmlxdWU8RkZtcGVnRGVjb2RpbmdMb29wPihjb250ZXh0LmdldCgpKTsKKyAgICAg ICAgIHN0cmVhbV9jb250ZXh0c1tpXSA9IHtzdGQ6Om1vdmUoY29udGV4dCksIHN0ZDo6bW92ZShs b29wKX07CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv aDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNz L2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9k ZWNvZGVyX2ltcGwuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBi L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92aWRlb19j b2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MJMjAyMi0wNy0xMSAyMjoxMjo0 Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC0yMDMsNyArMjAzLDcgQEAgaW50MzJfdCBIMjY0RGVjb2Rl ckltcGw6OkluaXREZWNvZGUoY29ucworICAgLy8gYSBwb2ludGVyIHx0aGlzfC4KKyAgIGF2X2Nv bnRleHRfLT5vcGFxdWUgPSB0aGlzOworIAorLSAgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2Zp bmRfZGVjb2Rlcihhdl9jb250ZXh0Xy0+Y29kZWNfaWQpOworKyAgY29uc3QgQVZDb2RlYyogY29k ZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihhdl9jb250ZXh0Xy0+Y29kZWNfaWQpOworICAgaWYg KCFjb2RlYykgeworICAgICAvLyBUaGlzIGlzIGFuIGluZGljYXRpb24gdGhhdCBGRm1wZWcgaGFz IG5vdCBiZWVuIGluaXRpYWxpemVkIG9yIGl0IGhhcyBub3QKKyAgICAgLy8gYmVlbiBjb21waWxl ZC9pbml0aWFsaXplZCB3aXRoIHRoZSBjb3JyZWN0IHNldCBvZiBjb2RlY3MuCmRpZmYgLS1naXQg YS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUv dGVtcGxhdGUKaW5kZXggODRkZTViMTJlY2RkYS4uYjg5ZmU0YzFhZDUwYSAxMDA2NDQKLS0tIGEv c3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS90ZW1wbGF0ZQpAQCAtMSw5ICsxLDkgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NS13ZWJl bmdpbmUnCiBwa2duYW1lPXF0NS13ZWJlbmdpbmUKLXZlcnNpb249NS4xNS4xMQotcmV2aXNpb249 NQordmVyc2lvbj01LjE1LjEzCityZXZpc2lvbj0xCiBfdmVyc2lvbj0iJHt2ZXJzaW9ufS1sdHMi Ci1fY2hyb21pdW1fY29tbWl0PWJlMzQ5ZWFmNjJlNzc5NTU3OTFkN2JmMjlmODkzZjFlOGEzN2Rh ZjQKK19jaHJvbWl1bV9jb21taXQ9ZTQ4ZGY3ODAzYzdjOThiMGIyNDcxYzk0MDU3ZDMyZTQ0YTMw MWFkNQogYXJjaHM9Ing4Nl82NCogaTY4NiogYXJtdls2N10qIHBwYzY0KiBhYXJjaDY0KiIKIGNy ZWF0ZV93cmtzcmM9eWVzCiBidWlsZF9zdHlsZT1xbWFrZQpAQCAtMzIsOCArMzIsOCBAQCBsaWNl bnNlPSJHUEwtMy4wLW9yLWxhdGVyLCBMR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRw czovL3F0LmlvLyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL3F0L3F0d2ViZW5naW5l L2FyY2hpdmUvdiR7X3ZlcnNpb259LnRhci5negogIGh0dHBzOi8vZ2l0aHViLmNvbS9xdC9xdHdl YmVuZ2luZS1jaHJvbWl1bS9hcmNoaXZlLyR7X2Nocm9taXVtX2NvbW1pdH0udGFyLmd6IgotY2hl Y2tzdW09ImFhNzQ2NjM1NmM0NTBjNWY1ODcwZjk3OWI5M2NkN2U3ZTYyZGExMTY1YzMyOGZmY2Fi MWE5OTI4ZGIxOGFkNjcKLSA2ZjQ3ZWQ4YWI4Y2MwNjI0MTFmNmYyMDZkYTYzNTNiYzgyNjNkNmVk NmQ2MjkwYzY4OWEwNWMwMWQ5MWY2NDZiIgorY2hlY2tzdW09IjRiNTk4MzhlZDc1ZWY3ODhiNTll MWU0MTI1MzVhMGU0MmRkOWQzMTE2NjFmZGVhZGIxOTFiNTgxYmE4MTVjNjMKKyBhOTE2ODY1NjJi MWQ0ZThiMjIwZTBiYmNiYWI1ZmViNjQ2MzBlMmRlOTc0YjM1YWMwMzRiZjM4OGFmNzcxYTZjIgog CiBub19nZW5lcmljX3BrZ2NvbmZpZ19saW5rPXllcwogYnVpbGRfb3B0aW9ucz0ic25kaW8gcGlw ZXdpcmUiCgpGcm9tIGUxZWZlZWEwMjlmOTVkM2Q5MmNkZGI0YTI5MzIzMjE4MjNmYzI0MzcgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2Ny8x MTVdIHF0NTogdXBkYXRlIHRvIDUuMTUuOAoKLS0tCiAuLi5lcnl3aGVyZS1vcGVuc291cmNlLXNy Yy01LjE1Ljgta2Y1LTEucGF0Y2ggfCAxMjkxMyArKysrKysrKysrKysrKysrCiBzcmNwa2dzL3F0 NS90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxMyArLQogMiBmaWxlcyBj aGFuZ2VkLCAxMjkxOSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNyYy01 LjE1Ljgta2Y1LTEucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2 ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoIGIvc3JjcGtncy9xdDUv cGF0Y2hlcy9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi45NjZjOThiY2QzYmIxCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy9xdC1ldmVyeXdoZXJlLW9wZW5z b3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5wYXRjaApAQCAtMCwwICsxLDEyOTEzIEBACitTdWJtaXR0 ZWQgQnk6ICAgICAgICAgICAgUGllcnJlIExhYmFzdGllIDxwaWVycmVfZG90X2xhYmFzdGllX2F0 X25ldWZfZG90X2ZyPgorRGF0ZTogICAgICAgICAgICAgICAgICAgIDIwMjMtMDEtMDUKK0luaXRp YWwgUGFja2FnZSBWZXJzaW9uOiA1LjE1LjgKK1Vwc3RyZWFtIFN0YXR1czogICAgICAgICBBcHBs aWVkIChhY2NvcmRpbmcgdG8gS0RFKQorT3JpZ2luOiAgICAgICAgICAgICAgICAgIEtERSBwYXRj aCBzZXQKK0Rlc2NyaXB0aW9uOiAgICAgICAgICAgICBQYXRjaCBzZXQgbWFpbnRhaW5lZCBieSB0 aGUgS0RFIGZvbGtzCitzZWUgaHR0cHM6Ly9kb3Qua2RlLm9yZy8yMDIxLzA0LzA2L2Fubm91bmNp bmcta2Rlcy1xdC01LXBhdGNoLWNvbGxlY3Rpb24KK1BhdGNoIGdlbmVyYXRlZCB1c2luZyB0aGUg cHJvY2VkdXJlIGluCitodHRwczovL3dpa2kubGludXhmcm9tc2NyYXRjaC5vcmcvYmxmcy90aWNr ZXQvMTc0NzYjY29tbWVudDozCisKK1N1Ym1vZHVsZSBxdGJhc2UgNGVlNGZjMTguLjljZjU4NmQ2 OgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRyb2lkL3FwbGF0Zm9ybWRl ZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRyb2lkL3FwbGF0Zm9ybWRlZnMuaAoraW5k ZXggZjc1YmM0MDkzYi4uMmJkNTk0MTBkNCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2Nv bW1vbi9hbmRyb2lkL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvY29tbW9u L2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oCitAQCAtMTQ0LDExICsxNDQsNyBAQAorICNkZWZpbmUg UVRfU0lHTkFMX0FSR1MgICAgICAgICAgaW50CisgI2RlZmluZSBRVF9TSUdOQUxfSUdOT1JFICAg ICAgICBTSUdfSUdOCisgCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49 IDIpCisgI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZWxzZQor LSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2VuZGlmCisgCisgI2lmIGRl ZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAwKQorICNkZWZpbmUg UVRfU05QUklOVEYgICAgICAgICAgICAgOjpzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9t a3NwZWNzL2ZlYXR1cmVzL21hYy9zZGsubWsgYi9xdGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9tYWMv c2RrLm1rCitpbmRleCBmMzBiNTgzMGI0Li5hMzJjZWFjYjZjIDEwMDY0NAorLS0tIGEvcXRiYXNl L21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5taworKysrIGIvcXRiYXNlL21rc3BlY3MvZmVhdHVy ZXMvbWFjL3Nkay5taworQEAgLTEsNiArMSw2IEBACisgCisgaWZlcSAoJChRVF9NQUNfU0RLX05P X1ZFUlNJT05fQ0hFQ0spLCkKKy0gICAgQ0hFQ0tfU0RLX0NPTU1BTkQgPSAvdXNyL2Jpbi94Y3J1 biAtLXNkayAkKEVYUE9SVF9RTUFLRV9NQUNfU0RLKSAtc2hvdy1zZGstdmVyc2lvbiAyPiYxCisr ICAgIENIRUNLX1NES19DT01NQU5EID0gL3Vzci9iaW4veGNydW4gLS1zZGsgJChFWFBPUlRfUU1B S0VfTUFDX1NESykgLXNob3ctc2RrLXZlcnNpb24gMj4vZGV2L251bGwKKyAgICAgQ1VSUkVOVF9N QUNfU0RLX1ZFUlNJT04gOj0gJChzaGVsbCBERVZFTE9QRVJfRElSPSQoRVhQT1JUX1FNQUtFX1hD T0RFX0RFVkVMT1BFUl9QQVRIKSAkKENIRUNLX1NES19DT01NQU5EKSkKKyAgICAgaWZuZXEgKCQo Q1VSUkVOVF9NQUNfU0RLX1ZFUlNJT04pLCQoRVhQT1JUX1FNQUtFX01BQ19TREtfVkVSU0lPTikp CisgICAgICAgICAjIFdlIGRvbid0IHdhbnQgdG8gY29tcGxhaW4gYWJvdXQgb3V0IG9mIGRhdGUg U0RLIHVubGVzcyB0aGUgdGFyZ2V0IG5lZWRzIHRvIGJlIHJlbWFkZS4KK2RpZmYgLS1naXQgYS9x dGJhc2UvbWtzcGVjcy9saW51eC1jbGFuZy9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVj cy9saW51eC1jbGFuZy9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IGE4MThkOTczZjAuLmMxYWI3MmZi YzYgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51eC1jbGFuZy9xcGxhdGZvcm1kZWZz LmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaAorQEAg LTc5LDE0ICs3OSw2IEBACisgI2RlZmluZSBRVF9VU0VfWE9QRU5fTEZTX0VYVEVOU0lPTlMKKyAj aW5jbHVkZSAiLi4vY29tbW9uL3Bvc2l4L3FwbGF0Zm9ybWRlZnMuaCIKKyAKKy0jdW5kZWYgUVRf U09DS0xFTl9UCistCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49IDIp CistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZWxzZQorLSNk ZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2VuZGlmCistCisgI2lmIGRlZmlu ZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAwKQorICNkZWZpbmUgUVRf U05QUklOVEYgICAgICAgICAgICAgOjpzbnByaW50ZgorICNkZWZpbmUgUVRfVlNOUFJJTlRGICAg ICAgICAgICAgOjp2c25wcmludGYKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9saW51eC1n KysvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbGludXgtZysrL3FwbGF0Zm9ybWRl ZnMuaAoraW5kZXggMTM1MjNmMDcwMi4uNGQyNzUwZDllYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9t a3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2xp bnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgKK0BAIC03OSwxNCArNzksNiBAQAorICNkZWZpbmUgUVRf VVNFX1hPUEVOX0xGU19FWFRFTlNJT05TCisgI2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxh dGZvcm1kZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tMRU5fVAorLQorLSNpZiBkZWZpbmVkKF9f R0xJQkNfXykgJiYgKF9fR0xJQkNfXyA8IDIpCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAg ICAgICBpbnQKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xl bl90CistI2VuZGlmCistCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9T T1VSQ0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAgICAgOjpzbnByaW50 ZgorICNkZWZpbmUgUVRfVlNOUFJJTlRGICAgICAgICAgICAgOjp2c25wcmludGYKK2RpZmYgLS1n aXQgYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sbHZtL3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9t a3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRmb3JtZGVmcy5oCitpbmRleCBkYzc1MGFiMWVmLi5kM2Nj MzliNDdmIDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvbGludXgtbGx2bS9xcGxhdGZvcm1k ZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRmb3JtZGVmcy5oCitA QCAtODAsMTQgKzgwLDYgQEAKKyAjZGVmaW5lIFFUX1VTRV9YT1BFTl9MRlNfRVhURU5TSU9OUwor ICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgorIAorLSN1bmRlZiBR VF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0g MikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNlCist I2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYKKy0KKyAjaWYgZGVm aW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisgI2RlZmluZSBR VF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCisgI2RlZmluZSBRVF9WU05QUklOVEYg ICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4 LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbGludXgtbHNiLWcrKy9x cGxhdGZvcm1kZWZzLmgKK2luZGV4IDRjNGU1M2RhMmEuLjgzYmFmZmIzZTMgMTAwNjQ0CistLS0g YS9xdGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRi YXNlL21rc3BlY3MvbGludXgtbHNiLWcrKy9xcGxhdGZvcm1kZWZzLmgKK0BAIC04NSwxNiArODUs OSBAQAorICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgorIAorICN1 bmRlZiBRVF9PUEVOX0xBUkdFRklMRQorLSN1bmRlZiBRVF9TT0NLTEVOX1QKKyAKKyAjZGVmaW5l IFFUX09QRU5fTEFSR0VGSUxFICAgICAgIDAKKyAKKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYm IChfX0dMSUJDX18gPj0gMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2ts ZW5fdAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5k aWYKKy0KKyAjaWZuZGVmIFNJT0NHSUZCUkRBRERSCisgIyAgZGVmaW5lIFNJT0NHSUZCUkRBRERS IDB4ODkxOQorICNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2x5bnhvcy1nKysv cXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbHlueG9zLWcrKy9xcGxhdGZvcm1kZWZz LmgKK2luZGV4IDQzMzllYTJiMjMuLjYwMDdhZjAwNTUgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtz cGVjcy9seW54b3MtZysrL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbHlu eG9zLWcrKy9xcGxhdGZvcm1kZWZzLmgKK0BAIC03MiwxNCArNzIsNiBAQAorIAorICNpbmNsdWRl ICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgorIAorLSN1bmRlZiBRVF9TT0NLTEVO X1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0gMikKKy0jZGVm aW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNlCistI2RlZmluZSBR VF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYKKy0KKyAjaWYgZGVmaW5lZChfWE9Q RU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5U RiAgICAgICAgICAgICA6OnNucHJpbnRmCisgI2RlZmluZSBRVF9WU05QUklOVEYgICAgICAgICAg ICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvM3JkcGFydHkvYW5nbGUvc3Jj L2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAgYi9xdGJhc2Uvc3JjLzNyZHBhcnR5L2FuZ2xl L3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwCitpbmRleCBjM2MxODQyNThmLi4zMmFm M2Y4ZjI5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy8zcmRwYXJ0eS9hbmdsZS9zcmMvbGliQU5H TEUvSGFuZGxlQWxsb2NhdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy8zcmRwYXJ0eS9hbmdsZS9z cmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcAorQEAgLTEwLDYgKzEwLDcgQEAKKyAjaW5j bHVkZSAibGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmgiCisgCisgI2luY2x1ZGUgPGFsZ29yaXRo bT4KKysjaW5jbHVkZSA8bGltaXRzPgorIAorICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyAK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2ZvcmtmZC9mb3JrZmRfbGludXguYyBi L3F0YmFzZS9zcmMvM3JkcGFydHkvZm9ya2ZkL2ZvcmtmZF9saW51eC5jCitpbmRleCBmZmUwZTlh NWUyLi5iMWY1NDA4ZDExIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy8zcmRwYXJ0eS9mb3JrZmQv Zm9ya2ZkX2xpbnV4LmMKKysrKyBiL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9ya2ZkL2ZvcmtmZF9s aW51eC5jCitAQCAtODIsNyArODIsOCBAQCBzdGF0aWMgaW50IHN5c19jbG9uZSh1bnNpZ25lZCBs b25nIGNsb25lZmxhZ3MsIGludCAqcHRpZCkKKyAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9jbG9u ZSwgY2xvbmVmbGFncywgY2hpbGRfc3RhY2ssIHN0YWNrX3NpemUsIHB0aWQsIG5ld3RscywgY3Rp ZCk7CisgI2VsaWYgZGVmaW5lZChfX2FyY19fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmlu ZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKyAgICAgZGVmaW5lZChf X25kczMyX18pIHx8IGRlZmluZWQoX19ocHBhX18pIHx8IGRlZmluZWQoX19wb3dlcnBjX18pIHx8 IGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZp bmVkKF9feHRlbnNhX18pIHx8IGRlZmluZWQoX19hbHBoYV9fKSB8fCBkZWZpbmVkKF9fcmlzY3Yp CisrICAgIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3h0ZW5zYV9fKSB8fCBkZWZp bmVkKF9fYWxwaGFfXykgfHwgZGVmaW5lZChfX3Jpc2N2KSB8fCBcCisrICAgIGRlZmluZWQoX19s b29uZ2FyY2hfXykKKyAgICAgLyogY3RpZCBhbmQgbmV3dGxzIGFyZSBpbnZlcnRlZCBvbiBDT05G SUdfQ0xPTkVfQkFDS1dBUkRTIGFyY2hpdGVjdHVyZXMsCisgICAgICAqIGJ1dCBzaW5jZSBib3Ro IHZhbHVlcyBhcmUgMCwgdGhlcmUncyBubyBoYXJtLiAqLworICAgICByZXR1cm4gc3lzY2FsbChf X05SX2Nsb25lLCBjbG9uZWZsYWdzLCBjaGlsZF9zdGFjaywgcHRpZCwgY3RpZCwgbmV3dGxzKTsK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2FuZHJvaWQvamFyL3NyYy9vcmcvcXRwcm9qZWN0L3F0 NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEgYi9xdGJhc2Uvc3JjL2FuZHJvaWQvamFyL3NyYy9vcmcv cXRwcm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEKK2luZGV4IDU3OTJiNWIyZjUuLjJm NzQ3NTBmY2YgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2FuZHJvaWQvamFyL3NyYy9vcmcvcXRw cm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEKKysrKyBiL3F0YmFzZS9zcmMvYW5kcm9p ZC9qYXIvc3JjL29yZy9xdHByb2plY3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YQorQEAgLTEx Niw2ICsxMTYsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgcHVibGljIHN0YXRpYyBR dFRocmVhZCBtX3F0VGhyZWFkID0gbmV3IFF0VGhyZWFkKCk7CisgICAgIHByaXZhdGUgc3RhdGlj IEhhc2hNYXA8U3RyaW5nLCBVcmk+IG1fY2FjaGVkVXJpcyA9IG5ldyBIYXNoTWFwPFN0cmluZywg VXJpPigpOworICAgICBwcml2YXRlIHN0YXRpYyBBcnJheUxpc3Q8U3RyaW5nPiBtX2tub3duRGly cyA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOworKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBT dHJpbmcgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlID0gIk5vIHBlcm1pc3Npb25zIHRvIG9wZW4g VXJpIjsKKyAKKyAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgUnVubmFibGUgcnVuUGVuZGluZ0Nw cFJ1bm5hYmxlc1J1bm5hYmxlID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgQE92ZXJyaWRl CitAQCAtMTkzLDExICsxOTQsMTAgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gaXRlclVyaTsKKyAgICAgICAgICAgICB9CisgCistICAgICAgICAg ICAgLy8gQW5kcm9pZCA2IGFuZCBlYXJsaWVyIGNvdWxkIHN0aWxsIG1hbmFnZSB0byBvcGVuIHRo ZSBmaWxlIHNvIHdlIGNhbiByZXR1cm4gdGhlCistICAgICAgICAgICAgLy8gcGFyc2VkIHVyaSBo ZXJlCistICAgICAgICAgICAgaWYgKEJ1aWxkLlZFUlNJT04uU0RLX0lOVCA8IDI0KQorLSAgICAg ICAgICAgICAgICByZXR1cm4gcGFyc2VkVXJpOworLSAgICAgICAgICAgIHJldHVybiBudWxsOwor KyAgICAgICAgICAgIC8vIGlmIHdlIG9ubHkgaGF2ZSB0cmFuc2llbnQgcGVybWlzc2lvbnMgb24g dXJpIGFsbCB0aGUgYWJvdmUgd2lsbCBmYWlsLAorKyAgICAgICAgICAgIC8vIGJ1dCB3ZSB3aWxs IGJlIGFibGUgdG8gcmVhZCB0aGUgZmlsZSBhbnl3YXksIHNvIGNvbnRpbnVlIHdpdGggdXJpIGhl cmUgYW55d2F5CisrICAgICAgICAgICAgLy8gYW5kIGNoZWNrIGZvciBTZWN1cml0eUV4Y2VwdGlv bnMgbGF0ZXIKKysgICAgICAgICAgICByZXR1cm4gcGFyc2VkVXJpOworICAgICAgICAgfSBjYXRj aCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNl KCk7CisgICAgICAgICAgICAgcmV0dXJuIG51bGw7CitAQCAtMjQ0LDcgKzI0NCw3IEBAIHB1Ymxp YyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgaW50IGVycm9yID0gLTE7CisgCisgICAgICAgICBp ZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAgICBMb2cuZShRdFRBRywgIm9wZW5GZEZvckNv bnRlbnRVcmwoKTogTm8gcGVybWlzc2lvbnMgdG8gb3BlbiBVcmkiKTsKKysgICAgICAgICAgICBM b2cuZShRdFRBRywgIm9wZW5GZEZvckNvbnRlbnRVcmwoKTogIiArIE5vUGVybWlzc2lvbkVycm9y TWVzc2FnZSk7CisgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgfQorIAorQEAg LTI1NCwxMiArMjU0LDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgICAgIHJl dHVybiBmZERlc2MuZGV0YWNoRmQoKTsKKyAgICAgICAgIH0gY2F0Y2ggKEZpbGVOb3RGb3VuZEV4 Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAg ICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNl cHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAib3BlbkZkRm9yQ29udGVudFVy bCgpOiBJbnZhbGlkIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7Cist ICAgICAgICAgICAgcmV0dXJuIGVycm9yOworKyAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNl cHRpb24gZSkgeworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1l c3NhZ2UpOworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgICB9CisgCisg ICAgIHB1YmxpYyBzdGF0aWMgbG9uZyBnZXRTaXplKENvbnRleHQgY29udGV4dCwgU3RyaW5nIGNv bnRlbnRVcmwpCitAQCAtMjcwLDcgKzI3MSw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAg ICAgICAgICAgIHVyaSA9IGdldFVyaVdpdGhWYWxpZFBlcm1pc3Npb24oY29udGV4dCwgY29udGVu dFVybCwgInIiKTsKKyAKKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkgeworLSAgICAgICAgICAg IExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSIpOwor KyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAg ICAgICAgICAgIHJldHVybiBzaXplOworICAgICAgICAgfSBlbHNlIGlmICghbV9jYWNoZWRVcmlz LmNvbnRhaW5zS2V5KGNvbnRlbnRVcmwpKSB7CisgICAgICAgICAgICAgbV9jYWNoZWRVcmlzLnB1 dChjb250ZW50VXJsLCB1cmkpOworQEAgLTI4OCwxMiArMjg5LDEzIEBAIHB1YmxpYyBjbGFzcyBR dE5hdGl2ZQorICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsK KyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImdldFNpemUoKTogSW52YWxpZCBVcmkiKTsKKyAg ICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBzaXpl OworICAgICAgICAgfSAgY2F0Y2ggKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsK KyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImdldFNpemUoKTogVW5zdXBwb3J0ZWQgb3BlcmF0 aW9uIGZvciBnaXZlbiBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwor LSAgICAgICAgICAgIHJldHVybiBzaXplOworKyAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNl cHRpb24gZSkgeworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1l c3NhZ2UpOworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJuIHNpemU7CisgICAgIH0KKyAKKyAg ICAgcHVibGljIHN0YXRpYyBib29sZWFuIGNoZWNrRmlsZUV4aXN0cyhDb250ZXh0IGNvbnRleHQs IFN0cmluZyBjb250ZW50VXJsKQorQEAgLTMwMyw3ICszMDUsNyBAQCBwdWJsaWMgY2xhc3MgUXRO YXRpdmUKKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkKKyAgICAgICAgICAgICB1cmkgPSBnZXRV cmlXaXRoVmFsaWRQZXJtaXNzaW9uKGNvbnRleHQsIGNvbnRlbnRVcmwsICJyIik7CisgICAgICAg ICBpZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAgICBMb2cuZShRdFRBRywgImNoZWNrRmls ZUV4aXN0cygpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSIpOworKyAgICAgICAgICAgIExv Zy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgIHJldHVy biBleGlzdHM7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIGlmICghbV9jYWNoZWRV cmlzLmNvbnRhaW5zS2V5KGNvbnRlbnRVcmwpKQorQEAgLTMyMSwxMiArMzIzLDEzIEBAIHB1Ymxp YyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0 aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImNoZWNrRmlsZUV4aXN0cygpOiBJ bnZhbGlkIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAg ICAgICAgcmV0dXJuIGV4aXN0czsKKyAgICAgICAgIH0gY2F0Y2ggKFVuc3VwcG9ydGVkT3BlcmF0 aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImNoZWNrRmlsZUV4 aXN0cygpOiBVbnN1cHBvcnRlZCBvcGVyYXRpb24gZm9yIGdpdmVuIFVyaSIpOworICAgICAgICAg ICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworKyAg ICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAgICAgICAgIExvZy5l KFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgfQorKyAgICAgICAg cmV0dXJuIGV4aXN0czsKKyAgICAgfQorIAorICAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gY2hl Y2tJZldyaXRhYmxlKENvbnRleHQgY29udGV4dCwgU3RyaW5nIGNvbnRlbnRVcmwpCitAQCAtMzQ0 LDcgKzM0Nyw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgICAgIHVyaSA9IGdl dFVyaVdpdGhWYWxpZFBlcm1pc3Npb24oY29udGV4dCwgY29udGVudFVybCwgInIiKTsKKyAgICAg ICAgIH0KKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkgeworLSAgICAgICAgICAgIExvZy5lKFF0 VEFHLCAiaXNEaXIoKTogTm8gcGVybWlzc2lvbnMgdG8gb3BlbiBVcmkiKTsKKysgICAgICAgICAg ICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICBy ZXR1cm4gaXNEaXI7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIGlmICghbV9jYWNo ZWRVcmlzLmNvbnRhaW5zS2V5KGNvbnRlbnRVcmwpKQorQEAgLTM3NCwxMiArMzc3LDEzIEBAIHB1 YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhj ZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImNoZWNrSWZEaXIoKTogSW52 YWxpZCBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIH0gY2F0Y2ggKFVuc3VwcG9ydGVkT3BlcmF0aW9u RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImNoZWNrSWZEaXIoKTog VW5zdXBwb3J0ZWQgb3BlcmF0aW9uIGZvciBnaXZlbiBVcmkiKTsKKyAgICAgICAgICAgICBlLnBy aW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgICAgIH0g Y2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywg Tm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgIH0KKysgICAgICAgIHJldHVybiBm YWxzZTsKKyAgICAgfQorICAgICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGxpc3RDb250ZW50c0Zy b21UcmVlVXJpKENvbnRleHQgY29udGV4dCwgU3RyaW5nIGNvbnRlbnRVcmwpCisgICAgIHsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50cmVkdWNla2VybmVs LmggYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50cmVkdWNla2VybmVsLmgKK2lu ZGV4IDhmOWE5Mzg5NTIuLmE5OGRlZGVmMmUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvbmN1 cnJlbnQvcXRjb25jdXJyZW50cmVkdWNla2VybmVsLmgKKysrKyBiL3F0YmFzZS9zcmMvY29uY3Vy cmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaAorQEAgLTIxMiwxMSArMjEyLDEzIEBAIHB1 YmxpYzoKKyAKKyAgICAgaW5saW5lIGJvb2wgc2hvdWxkVGhyb3R0bGUoKQorICAgICB7CisrICAg ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8UU11dGV4PiBsb2NrZXIobXV0ZXgpOworICAgICAgICAgcmV0 dXJuIChyZXN1bHRzTWFwU2l6ZSA+IChSZWR1Y2VRdWV1ZVRocm90dGxlTGltaXQgKiB0aHJlYWRD b3VudCkpOworICAgICB9CisgCisgICAgIGlubGluZSBib29sIHNob3VsZFN0YXJ0VGhyZWFkKCkK KyAgICAgeworKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPFFNdXRleD4gbG9ja2VyKG11dGV4KTsK KyAgICAgICAgIHJldHVybiAocmVzdWx0c01hcFNpemUgPD0gKFJlZHVjZVF1ZXVlU3RhcnRMaW1p dCAqIHRocmVhZENvdW50KSk7CisgICAgIH0KKyB9OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Y29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwIGIvcXRiYXNlL3NyYy9jb25j dXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKK2luZGV4IGVhNmNlM2FjNDIuLjdm OTFhMmJhNjggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50 dGhyZWFkZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVu dHRocmVhZGVuZ2luZS5jcHAKK0BAIC0xNzYsNiArMTc2LDM5IEBAIHZvaWQgVGhyZWFkRW5naW5l QmFzZTo6c3RhcnRTaW5nbGVUaHJlYWRlZCgpCisgICAgIGZpbmlzaCgpOworIH0KKyAKKyt2b2lk IFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0QmxvY2tpbmcoKQorK3sKKysgICAgc3RhcnQoKTsKKysg ICAgYmFycmllci5hY3F1aXJlKCk7CisrICAgIHN0YXJ0VGhyZWFkcygpOworKworKyAgICBib29s IHRocm90dGxlZCA9IGZhbHNlOworKyNpZm5kZWYgUVRfTk9fRVhDRVBUSU9OUworKyAgICB0cnkg eworKyNlbmRpZgorKyAgICAgICAgd2hpbGUgKHRocmVhZEZ1bmN0aW9uKCkgPT0gVGhyb3R0bGVU aHJlYWQpIHsKKysgICAgICAgICAgICBpZiAodGhyZWFkVGhyb3R0bGVFeGl0KCkpIHsKKysgICAg ICAgICAgICAgICAgdGhyb3R0bGVkID0gdHJ1ZTsKKysgICAgICAgICAgICAgICAgYnJlYWs7Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyNpZm5kZWYgUVRfTk9fRVhDRVBUSU9OUworKyAg ICB9IGNhdGNoIChRRXhjZXB0aW9uICZlKSB7CisrICAgICAgICBoYW5kbGVFeGNlcHRpb24oZSk7 CisrICAgIH0gY2F0Y2ggKC4uLikgeworKyAgICAgICAgaGFuZGxlRXhjZXB0aW9uKFFVbmhhbmRs ZWRFeGNlcHRpb24oKSk7CisrICAgIH0KKysjZW5kaWYKKysKKysgICAgaWYgKHRocm90dGxlZCA9 PSBmYWxzZSkgeworKyAgICAgICAgYmFycmllci5yZWxlYXNlKCk7CisrICAgIH0KKysKKysgICAg YmFycmllci53YWl0KCk7CisrICAgIGZpbmlzaCgpOworKyAgICBleGNlcHRpb25TdG9yZS50aHJv d1Bvc3NpYmxlRXhjZXB0aW9uKCk7CisrfQorKworIHZvaWQgVGhyZWFkRW5naW5lQmFzZTo6c3Rh cnRUaHJlYWQoKQorIHsKKyAgICAgc3RhcnRUaHJlYWRJbnRlcm5hbCgpOworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuaCBiL3F0YmFz ZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuaAoraW5kZXggN2MzMGNl YmRiYy4uYTRjODU0OGNjNCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNv bmN1cnJlbnR0aHJlYWRlbmdpbmUuaAorKysrIGIvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29u Y3VycmVudHRocmVhZGVuZ2luZS5oCitAQCAtOTEsNiArOTEsNyBAQCBwdWJsaWM6CisgICAgIFRo cmVhZEVuZ2luZUJhc2UoKTsKKyAgICAgdmlydHVhbCB+VGhyZWFkRW5naW5lQmFzZSgpOworICAg ICB2b2lkIHN0YXJ0U2luZ2xlVGhyZWFkZWQoKTsKKysgICAgdm9pZCBzdGFydEJsb2NraW5nKCk7 CisgICAgIHZvaWQgc3RhcnRUaHJlYWQoKTsKKyAgICAgYm9vbCBpc0NhbmNlbGVkKCk7CisgICAg IHZvaWQgd2FpdEZvclJlc3VtZSgpOworQEAgLTE0Myw2ICsxNDQsMTUgQEAgcHVibGljOgorICAg ICAgICAgcmV0dXJuIHJlc3VsdCgpOworICAgICB9CisgCisrICAgIC8vIFJ1bnMgdGhlIHVzZXIg YWxnb3JpdGhtIHVzaW5nIG11bHRpcGxlIHRocmVhZHMuCisrICAgIC8vIFRoaXMgZnVuY3Rpb24g YmxvY2tzIHVudGlsIHRoZSBhbGdvcml0aG0gaXMgZmluaXNoZWQsCisrICAgIC8vIGFuZCB0aGVu IHJldHVybnMgdGhlIHJlc3VsdC4KKysgICAgVCAqc3RhcnRCbG9ja2luZygpCisrICAgIHsKKysg ICAgICAgIFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIHJldHVy biByZXN1bHQoKTsKKysgICAgfQorKworICAgICAvLyBSdW5zIHRoZSB1c2VyIGFsZ29yaXRobSB1 c2luZyBtdWx0aXBsZSB0aHJlYWRzLgorICAgICAvLyBEb2VzIG5vdCBibG9jaywgcmV0dXJucyBh IGZ1dHVyZS4KKyAgICAgUUZ1dHVyZTxUPiBzdGFydEFzeW5jaHJvbm91c2x5KCkKK0BAIC0yMjMs NiArMjMzLDEzIEBAIGNsYXNzIFRocmVhZEVuZ2luZVN0YXJ0ZXIgOiBwdWJsaWMgVGhyZWFkRW5n aW5lU3RhcnRlckJhc2U8VD4KKyBwdWJsaWM6CisgICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXIoVHlw ZWRUaHJlYWRFbmdpbmUgKmVuZykKKyAgICAgICAgIDogQmFzZShlbmcpIHsgfQorKworKyAgICBU IHN0YXJ0QmxvY2tpbmcoKQorKyAgICB7CisrICAgICAgICBUIHQgPSAqdGhpcy0+dGhyZWFkRW5n aW5lLT5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBkZWxldGUgdGhpcy0+dGhyZWFkRW5naW5l OworKyAgICAgICAgcmV0dXJuIHQ7CisrICAgIH0KKyB9OworIAorIC8vIEZ1bGwgdGVtcGxhdGUg c3BlY2lhbGl6YXRpb24gd2hlcmUgVCBpcyB2b2lkLgorQEAgLTIzMiw2ICsyNDksMTIgQEAgY2xh c3MgVGhyZWFkRW5naW5lU3RhcnRlcjx2b2lkPiA6IHB1YmxpYyBUaHJlYWRFbmdpbmVTdGFydGVy QmFzZTx2b2lkPgorIHB1YmxpYzoKKyAgICAgVGhyZWFkRW5naW5lU3RhcnRlcihUaHJlYWRFbmdp bmU8dm9pZD4gKl90aHJlYWRFbmdpbmUpCisgICAgICAgICA6IFRocmVhZEVuZ2luZVN0YXJ0ZXJC YXNlPHZvaWQ+KF90aHJlYWRFbmdpbmUpIHt9CisrCisrICAgIHZvaWQgc3RhcnRCbG9ja2luZygp CisrICAgIHsKKysgICAgICAgIHRoaXMtPnRocmVhZEVuZ2luZS0+c3RhcnRCbG9ja2luZygpOwor KyAgICAgICAgZGVsZXRlIHRoaXMtPnRocmVhZEVuZ2luZTsKKysgICAgfQorIH07CisgCisgLy8h IFtxdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUtMV0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvYW5pbWF0aW9uL3F2YXJpYW50YW5pbWF0aW9uLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxp Yi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwCitpbmRleCA5OGIwMmYwMjAyLi5lYWMx NTI0MTA3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2FuaW1hdGlvbi9xdmFyaWFu dGFuaW1hdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9hbmltYXRpb24vcXZhcmlh bnRhbmltYXRpb24uY3BwCitAQCAtMjc2LDcgKzI3Niw5IEBAIHZvaWQgUVZhcmlhbnRBbmltYXRp b25Qcml2YXRlOjpzZXRDdXJyZW50VmFsdWVGb3JQcm9ncmVzcyhjb25zdCBxcmVhbCBwcm9ncmVz cykKKyAKKyAgICAgY29uc3QgcXJlYWwgc3RhcnRQcm9ncmVzcyA9IGN1cnJlbnRJbnRlcnZhbC5z dGFydC5maXJzdDsKKyAgICAgY29uc3QgcXJlYWwgZW5kUHJvZ3Jlc3MgPSBjdXJyZW50SW50ZXJ2 YWwuZW5kLmZpcnN0OworLSAgICBjb25zdCBxcmVhbCBsb2NhbFByb2dyZXNzID0gKHByb2dyZXNz IC0gc3RhcnRQcm9ncmVzcykgLyAoZW5kUHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNzKTsKKysgICAg Y29uc3QgcXJlYWwgbG9jYWxQcm9ncmVzcyA9CisrICAgICAgICAgICAgcUlzTnVsbChwcm9ncmVz cyAtIHN0YXJ0UHJvZ3Jlc3MpID8gMC4wIC8vIGF2b2lkIDAvMCBiZWxvdworKyAgICAgICAgICAg IC8qIGVsc2UgKi8gICAgICAgICAgICAgICAgICAgICAgICA6IChwcm9ncmVzcyAtIHN0YXJ0UHJv Z3Jlc3MpIC8gKGVuZFByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcyk7CisgCisgICAgIFFWYXJpYW50 IHJldCA9IHEtPmludGVycG9sYXRlZChjdXJyZW50SW50ZXJ2YWwuc3RhcnQuc2Vjb25kLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEludGVydmFsLmVuZC5zZWNv bmQsCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xbmFtZXNwYWNlLmgg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FuYW1lc3BhY2UuaAoraW5kZXggYWQ0MTUwYjMx Ny4uYmYxOWIxNjI3YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5h bWVzcGFjZS5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FuYW1lc3BhY2UuaAor QEAgLTE4NjQsNyArMTg2NCw3IEBAIHB1YmxpYzoKKyAgICAgUVRfUV9FTlVNKFRpbWVyVHlwZSkK KyAgICAgUVRfUV9FTlVNKFNjcm9sbFBoYXNlKQorICAgICBRVF9RX0VOVU0oTW91c2VFdmVudFNv dXJjZSkKKy0gICAgUVRfUV9GTEFHKE1vdXNlRXZlbnRGbGFnKQorKyAgICBRVF9RX0ZMQUcoTW91 c2VFdmVudEZsYWdzKQorICAgICBRVF9RX0VOVU0oQ2hlY2tzdW1UeXBlKQorICAgICBRVF9RX0VO VU0oSGlnaERwaVNjYWxlRmFjdG9yUm91bmRpbmdQb2xpY3kpCisgICAgIFFUX1FfRU5VTShUYWJG b2N1c0JlaGF2aW9yKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJh bmRvbS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FyYW5kb20uY3BwCitpbmRleCAx MDY3MmMxZjkyLi4yNWY4N2M3ZTZhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2ds b2JhbC9xcmFuZG9tLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xcmFuZG9t LmNwcAorQEAgLTM4Myw3ICszODMsNiBAQCBzdHJ1Y3QgUVJhbmRvbUdlbmVyYXRvcjo6U3lzdGVt QW5kR2xvYmFsR2VuZXJhdG9ycworIAorICAgICAgICAgY29uc3RleHByIFN5c3RlbUFuZEdsb2Jh bEdlbmVyYXRvcnMgZyA9IHt9OworICAgICAgICAgUV9VTlVTRUQoZyk7CistICAgICAgICBRX1NU QVRJQ19BU1NFUlQoc3RkOjppc19saXRlcmFsX3R5cGU8U3lzdGVtQW5kR2xvYmFsR2VuZXJhdG9y cz46OnZhbHVlKTsKKyAjZW5kaWYKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Y29yZWxpYi9pby9xYnVmZmVyLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xYnVmZmVyLmNw cAoraW5kZXggNTk1ZmNkMjcyNC4uMDMyYzBkZGQ0YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Y29yZWxpYi9pby9xYnVmZmVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FidWZm ZXIuY3BwCitAQCAtNDEsNiArNDEsOCBAQAorICNpbmNsdWRlIDxRdENvcmUvcW1ldGFvYmplY3Qu aD4KKyAjaW5jbHVkZSAicHJpdmF0ZS9xaW9kZXZpY2VfcC5oIgorIAorKyNpbmNsdWRlIDxsaW1p dHM+CisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgLyoqIFFCdWZmZXJQcml2YXRlICoqLwor QEAgLTM2Niw3ICszNjgsOSBAQCBxaW50NjQgUUJ1ZmZlcjo6c2l6ZSgpIGNvbnN0CisgYm9vbCBR QnVmZmVyOjpzZWVrKHFpbnQ2NCBwb3MpCisgeworICAgICBRX0QoUUJ1ZmZlcik7CistICAgIGlm IChwb3MgPiBkLT5idWYtPnNpemUoKSAmJiBpc1dyaXRhYmxlKCkpIHsKKysgICAgY29uc3QgYXV0 byBvbGRCdWZTaXplID0gZC0+YnVmLT5zaXplKCk7CisrICAgIGNvbnN0ZXhwciBxaW50NjQgTWF4 U2Vla1BvcyA9IChzdGQ6Om51bWVyaWNfbGltaXRzPGRlY2x0eXBlKG9sZEJ1ZlNpemUpPjo6bWF4 KSgpOworKyAgICBpZiAocG9zIDw9IE1heFNlZWtQb3MgJiYgcG9zID4gb2xkQnVmU2l6ZSAmJiBp c1dyaXRhYmxlKCkpIHsKKyAgICAgICAgIGlmIChzZWVrKGQtPmJ1Zi0+c2l6ZSgpKSkgeworICAg ICAgICAgICAgIGNvbnN0IHFpbnQ2NCBnYXBTaXplID0gcG9zIC0gZC0+YnVmLT5zaXplKCk7Cisg ICAgICAgICAgICAgaWYgKHdyaXRlKFFCeXRlQXJyYXkoZ2FwU2l6ZSwgMCkpICE9IGdhcFNpemUp IHsKK0BAIC0zNzcsNyArMzgxLDcgQEAgYm9vbCBRQnVmZmVyOjpzZWVrKHFpbnQ2NCBwb3MpCisg ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgfQorICAgICB9IGVsc2UgaWYgKHBv cyA+IGQtPmJ1Zi0+c2l6ZSgpIHx8IHBvcyA8IDApIHsKKy0gICAgICAgIHFXYXJuaW5nKCJRQnVm ZmVyOjpzZWVrOiBJbnZhbGlkIHBvczogJWQiLCBpbnQocG9zKSk7CisrICAgICAgICBxV2Fybmlu ZygiUUJ1ZmZlcjo6c2VlazogSW52YWxpZCBwb3M6ICVsbGQiLCBwb3MpOworICAgICAgICAgcmV0 dXJuIGZhbHNlOworICAgICB9CisgICAgIHJldHVybiBRSU9EZXZpY2U6OnNlZWsocG9zKTsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW1lbmdpbmVfd2luLmNw cCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVuZ2luZV93aW4uY3BwCitpbmRl eCA4MWQzYTcxOTg2Li5jODZlZDFmOWIwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGli L2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9p by9xZmlsZXN5c3RlbWVuZ2luZV93aW4uY3BwCitAQCAtNjY0LDE0ICs2NjQsMTQgQEAgUUZpbGVT eXN0ZW1FbnRyeSBRRmlsZVN5c3RlbUVuZ2luZTo6YWJzb2x1dGVOYW1lKGNvbnN0IFFGaWxlU3lz dGVtRW50cnkgJmVudHJ5KQorICAgICByZXR1cm4gUUZpbGVTeXN0ZW1FbnRyeShyZXQsIFFGaWxl U3lzdGVtRW50cnk6OkZyb21JbnRlcm5hbFBhdGgoKSk7CisgfQorIAorLSNpZiBkZWZpbmVkKFFf Q0NfTUlOR1cpICYmIFdJTlZFUiA8IDB4MDYwMiAvLyAgV2luZG93cyA4IG9ud2FyZHMKKysjaWYg ZGVmaW5lZChRX0NDX01JTkdXKSAmJiBXSU5WRVIgPCAweDA2MDIgJiYgX1dJTjMyX1dJTk5UIDwg X1dJTjMyX1dJTk5UX1dJTjggLy8gIFdpbmRvd3MgOCBvbndhcmRzCisgCisgdHlwZWRlZiBzdHJ1 Y3QgX0ZJTEVfSURfSU5GTyB7CisgICAgIFVMT05HTE9ORyBWb2x1bWVTZXJpYWxOdW1iZXI7Cisg ICAgIEZJTEVfSURfMTI4IEZpbGVJZDsKKyB9IEZJTEVfSURfSU5GTywgKlBGSUxFX0lEX0lORk87 CisgCistI2VuZGlmIC8vIGlmIGRlZmluZWQgKFFfQ0NfTUlOR1cpICYmIFdJTlZFUiA8IDB4MDYw MgorKyNlbmRpZiAvLyBpZiBkZWZpbmVkKFFfQ0NfTUlOR1cpICYmIFdJTlZFUiA8IDB4MDYwMiAm JiBfV0lOMzJfV0lOTlQgPCBfV0lOMzJfV0lOTlRfV0lOOAorIAorIC8vIEZpbGUgSUQgZm9yIFdp bmRvd3MgdXAgdG8gdmVyc2lvbiA3IGFuZCBGQVQzMiBkcml2ZXMKKyBzdGF0aWMgaW5saW5lIFFC eXRlQXJyYXkgZmlsZUlkKEhBTkRMRSBoYW5kbGUpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90aWZ5LmNwcCBiL3F0YmFzZS9zcmMvY29y ZWxpYi9pby9xZmlsZXN5c3RlbXdhdGNoZXJfaW5vdGlmeS5jcHAKK2luZGV4IDk0ZDlkMDZiY2Iu LjI3ZTBiMTNiMGIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0 ZW13YXRjaGVyX2lub3RpZnkuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVz eXN0ZW13YXRjaGVyX2lub3RpZnkuY3BwCitAQCAtMzY2LDcgKzM2Niw5IEBAIHZvaWQgUUlub3Rp ZnlGaWxlU3lzdGVtV2F0Y2hlckVuZ2luZTo6cmVhZEZyb21Jbm90aWZ5KCkKKyAgICAgLy8gcURl YnVnKCJRSW5vdGlmeUZpbGVTeXN0ZW1XYXRjaGVyRW5naW5lOjpyZWFkRnJvbUlub3RpZnkiKTsK KyAKKyAgICAgaW50IGJ1ZmZTaXplID0gMDsKKy0gICAgaW9jdGwoaW5vdGlmeUZkLCBGSU9OUkVB RCwgKGNoYXIgKikgJmJ1ZmZTaXplKTsKKysgICAgaWYgKGlvY3RsKGlub3RpZnlGZCwgRklPTlJF QUQsIChjaGFyICopICZidWZmU2l6ZSkgPT0gLTEgfHwgYnVmZlNpemUgPT0gMCkKKysgICAgICAg IHJldHVybjsKKysKKyAgICAgUVZhckxlbmd0aEFycmF5PGNoYXIsIDQwOTY+IGJ1ZmZlcihidWZm U2l6ZSk7CisgICAgIGJ1ZmZTaXplID0gcmVhZChpbm90aWZ5RmQsIGJ1ZmZlci5kYXRhKCksIGJ1 ZmZTaXplKTsKKyAgICAgY2hhciAqYXQgPSBidWZmZXIuZGF0YSgpOworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvY29yZWxpYi9pby9xbG9ja2ZpbGVfd2luLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxp Yi9pby9xbG9ja2ZpbGVfd2luLmNwcAoraW5kZXggMjc3ZjhkNDIzMC4uMzhlY2VmNTU1MCAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xbG9ja2ZpbGVfd2luLmNwcAorKysrIGIv cXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4uY3BwCitAQCAtNDgsNiArNDgsOCBA QAorICNpbmNsdWRlICJRdENvcmUvcWRlYnVnLmgiCisgI2luY2x1ZGUgIlF0Q29yZS9xdGhyZWFk LmgiCisgCisrI2luY2x1ZGUgInByaXZhdGUvcXN5c3RlbWxpYnJhcnlfcC5oIgorKworIFFUX0JF R0lOX05BTUVTUEFDRQorIAorIHN0YXRpYyBpbmxpbmUgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IHdj aGFyX3QgKmZpbGVOYW1lKQorQEAgLTE1MCw3ICsxNTIsNyBAQCBRU3RyaW5nIFFMb2NrRmlsZVBy aXZhdGU6OnByb2Nlc3NOYW1lQnlQaWQocWludDY0IHBpZCkKKyAjaWYgIWRlZmluZWQoUV9PU19X SU5SVCkKKyAgICAgdHlwZWRlZiBEV09SRCAoV0lOQVBJICpHZXRNb2R1bGVGaWxlTmFtZUV4RnVu YykoSEFORExFLCBITU9EVUxFLCBMUFRTVFIsIERXT1JEKTsKKyAKKy0gICAgSE1PRFVMRSBoUHNh cGkgPSBMb2FkTGlicmFyeUEoInBzYXBpIik7CisrICAgIEhNT0RVTEUgaFBzYXBpID0gUVN5c3Rl bUxpYnJhcnk6OmxvYWQoTCJwc2FwaSIpOworICAgICBpZiAoIWhQc2FwaSkKKyAgICAgICAgIHJl dHVybiBRU3RyaW5nKCk7CisgICAgIEdldE1vZHVsZUZpbGVOYW1lRXhGdW5jIHFHZXRNb2R1bGVG aWxlTmFtZUV4ID0gcmVpbnRlcnByZXRfY2FzdDxHZXRNb2R1bGVGaWxlTmFtZUV4RnVuYz4oCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fwcm9jZXNzX3VuaXguY3BwIGIvcXRi YXNlL3NyYy9jb3JlbGliL2lvL3Fwcm9jZXNzX3VuaXguY3BwCitpbmRleCA1MDM5MGU1N2Y1Li4x NWM4ZjMwNzQ1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fwcm9jZXNzX3Vu aXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5peC5jcHAKK0BA IC0xLDcgKzEsNyBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKyAqKiBDb3B5cmlnaHQg KEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBJbnRl bCBDb3Jwb3JhdGlvbi4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgSW50ZWwgQ29ycG9yYXRpb24u CisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0Q29yZSBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitA QCAtNDIyLDE0ICs0MjIsMTUgQEAgdm9pZCBRUHJvY2Vzc1ByaXZhdGU6OnN0YXJ0UHJvY2Vzcygp CisgICAgIC8vIEFkZCB0aGUgcHJvZ3JhbSBuYW1lIHRvIHRoZSBhcmd1bWVudCBsaXN0LgorICAg ICBhcmd2WzBdID0gbnVsbHB0cjsKKyAgICAgaWYgKCFwcm9ncmFtLmNvbnRhaW5zKFFMYXRpbjFD aGFyKCcvJykpKSB7CisrICAgICAgICAvLyBmaW5kRXhlY3V0YWJsZSgpIHJldHVybnMgaXRzIGFy Z3VtZW50IGlmIGl0J3MgYW4gYWJzb2x1dGUgcGF0aCwKKysgICAgICAgIC8vIG90aGVyd2lzZSBp dCBzZWFyY2hlcyAkUEFUSDsgcmV0dXJucyBlbXB0eSBpZiBub3QgZm91bmQgKHdlIGhhbmRsZQor KyAgICAgICAgLy8gdGhhdCBjYXNlIG11Y2ggbGF0ZXIpCisgICAgICAgICBjb25zdCBRU3RyaW5n ICZleGVGaWxlUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjpmaW5kRXhlY3V0YWJsZShwcm9ncmFtKTsK Ky0gICAgICAgIGlmICghZXhlRmlsZVBhdGguaXNFbXB0eSgpKSB7CistICAgICAgICAgICAgY29u c3QgUUJ5dGVBcnJheSAmdG1wID0gUUZpbGU6OmVuY29kZU5hbWUoZXhlRmlsZVBhdGgpOworLSAg ICAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cCh0bXAuY29uc3REYXRhKCkpOworLSAgICAgICAg fQorLSAgICB9CistICAgIGlmICghYXJndlswXSkKKysgICAgICAgIGNvbnN0IFFCeXRlQXJyYXkg JnRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKGV4ZUZpbGVQYXRoKTsKKysgICAgICAgIGFyZ3ZbMF0g PSA6OnN0cmR1cCh0bXAuY29uc3REYXRhKCkpOworKyAgICB9IGVsc2UgeworICAgICAgICAgYXJn dlswXSA9IDo6c3RyZHVwKGVuY29kZWRQcm9ncmFtTmFtZS5jb25zdERhdGEoKSk7CisrICAgIH0K KyAKKyAgICAgLy8gQWRkIGV2ZXJ5IGFyZ3VtZW50IHRvIHRoZSBsaXN0CisgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgYXJndW1lbnRzLmNvdW50KCk7ICsraSkKK0BAIC05ODMsMTUgKzk4NCwxNiBA QCBib29sIFFQcm9jZXNzUHJpdmF0ZTo6c3RhcnREZXRhY2hlZChxaW50NjQgKnBpZCkKKyAgICAg ICAgICAgICAgICAgZW52cCA9IF9xX2R1cEVudmlyb25tZW50KGVudmlyb25tZW50LmQuY29uc3RE YXRhKCktPnZhcnMsICZlbnZjKTsKKyAgICAgICAgICAgICB9CisgCistICAgICAgICAgICAgUUJ5 dGVBcnJheSB0bXA7CisgICAgICAgICAgICAgaWYgKCFwcm9ncmFtLmNvbnRhaW5zKFFMYXRpbjFD aGFyKCcvJykpKSB7CisrICAgICAgICAgICAgICAgIC8vIGZpbmRFeGVjdXRhYmxlKCkgcmV0dXJu cyBpdHMgYXJndW1lbnQgaWYgaXQncyBhbiBhYnNvbHV0ZSBwYXRoLAorKyAgICAgICAgICAgICAg ICAvLyBvdGhlcndpc2UgaXQgc2VhcmNoZXMgJFBBVEg7IHJldHVybnMgZW1wdHkgaWYgbm90IGZv dW5kICh3ZSBoYW5kbGUKKysgICAgICAgICAgICAgICAgLy8gdGhhdCBjYXNlIG11Y2ggbGF0ZXIp CisgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJmV4ZUZpbGVQYXRoID0gUVN0YW5kYXJk UGF0aHM6OmZpbmRFeGVjdXRhYmxlKHByb2dyYW0pOworLSAgICAgICAgICAgICAgICBpZiAoIWV4 ZUZpbGVQYXRoLmlzRW1wdHkoKSkKKy0gICAgICAgICAgICAgICAgICAgIHRtcCA9IFFGaWxlOjpl bmNvZGVOYW1lKGV4ZUZpbGVQYXRoKTsKKysgICAgICAgICAgICAgICAgY29uc3QgUUJ5dGVBcnJh eSAmdG1wID0gUUZpbGU6OmVuY29kZU5hbWUoZXhlRmlsZVBhdGgpOworKyAgICAgICAgICAgICAg ICBhcmd2WzBdID0gOjpzdHJkdXAodG1wLmNvbnN0RGF0YSgpKTsKKysgICAgICAgICAgICB9IGVs c2UgeworKyAgICAgICAgICAgICAgICBhcmd2WzBdID0gOjpzdHJkdXAoUUZpbGU6OmVuY29kZU5h bWUocHJvZ3JhbSkpOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBpZiAodG1wLmlzRW1w dHkoKSkKKy0gICAgICAgICAgICAgICAgdG1wID0gUUZpbGU6OmVuY29kZU5hbWUocHJvZ3JhbSk7 CistICAgICAgICAgICAgYXJndlswXSA9IHRtcC5kYXRhKCk7CisgCisgICAgICAgICAgICAgaWYg KGVudnApCisgICAgICAgICAgICAgICAgIHF0X3NhZmVfZXhlY3ZlKGFyZ3ZbMF0sIGFyZ3YsIGVu dnApOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3FhYnN0cmFj dGl0ZW1tb2RlbC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJhY3Rp dGVtbW9kZWwuY3BwCitpbmRleCAzYTc5YzUwMmFmLi45OTdhNjM0ZTc2IDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFic3RyYWN0aXRlbW1vZGVsLmNwcAorKysr IGIvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFic3RyYWN0aXRlbW1vZGVsLmNwcAor QEAgLTMxOTYsOSArMzE5Niw4IEBAIGJvb2wgUUFic3RyYWN0SXRlbU1vZGVsOjpiZWdpbk1vdmVD b2x1bW5zKGNvbnN0IFFNb2RlbEluZGV4ICZzb3VyY2VQYXJlbnQsIGludCBzCisgICAgIGRlc3Rp bmF0aW9uQ2hhbmdlLm5lZWRzQWRqdXN0ID0gZGVzdGluYXRpb25QYXJlbnQuaXNWYWxpZCgpICYm IGRlc3RpbmF0aW9uUGFyZW50LnJvdygpID49IHNvdXJjZUxhc3QgJiYgZGVzdGluYXRpb25QYXJl bnQucGFyZW50KCkgPT0gc291cmNlUGFyZW50OworICAgICBkLT5jaGFuZ2VzLnB1c2goZGVzdGlu YXRpb25DaGFuZ2UpOworIAorLSAgICBkLT5pdGVtc0Fib3V0VG9CZU1vdmVkKHNvdXJjZVBhcmVu dCwgc291cmNlRmlyc3QsIHNvdXJjZUxhc3QsIGRlc3RpbmF0aW9uUGFyZW50LCBkZXN0aW5hdGlv bkNoaWxkLCBRdDo6SG9yaXpvbnRhbCk7CistCisgICAgIGVtaXQgY29sdW1uc0Fib3V0VG9CZU1v dmVkKHNvdXJjZVBhcmVudCwgc291cmNlRmlyc3QsIHNvdXJjZUxhc3QsIGRlc3RpbmF0aW9uUGFy ZW50LCBkZXN0aW5hdGlvbkNoaWxkLCBRUHJpdmF0ZVNpZ25hbCgpKTsKKysgICAgZC0+aXRlbXNB Ym91dFRvQmVNb3ZlZChzb3VyY2VQYXJlbnQsIHNvdXJjZUZpcnN0LCBzb3VyY2VMYXN0LCBkZXN0 aW5hdGlvblBhcmVudCwgZGVzdGluYXRpb25DaGlsZCwgUXQ6Okhvcml6b250YWwpOworICAgICBy ZXR1cm4gdHJ1ZTsKKyB9CisgCitAQCAtMzIzMSw3ICszMjMwLDYgQEAgdm9pZCBRQWJzdHJhY3RJ dGVtTW9kZWw6OmVuZE1vdmVDb2x1bW5zKCkKKyAgICAgICBhZGp1c3RlZFNvdXJjZSA9IGNyZWF0 ZUluZGV4KGFkanVzdGVkU291cmNlLnJvdygpLCBhZGp1c3RlZFNvdXJjZS5jb2x1bW4oKSArIG51 bU1vdmVkLCBhZGp1c3RlZFNvdXJjZS5pbnRlcm5hbFBvaW50ZXIoKSk7CisgCisgICAgIGQtPml0 ZW1zTW92ZWQoYWRqdXN0ZWRTb3VyY2UsIHJlbW92ZUNoYW5nZS5maXJzdCwgcmVtb3ZlQ2hhbmdl Lmxhc3QsIGFkanVzdGVkRGVzdGluYXRpb24sIGluc2VydENoYW5nZS5maXJzdCwgUXQ6Okhvcml6 b250YWwpOworLQorICAgICBlbWl0IGNvbHVtbnNNb3ZlZChhZGp1c3RlZFNvdXJjZSwgcmVtb3Zl Q2hhbmdlLmZpcnN0LCByZW1vdmVDaGFuZ2UubGFzdCwgYWRqdXN0ZWREZXN0aW5hdGlvbiwgaW5z ZXJ0Q2hhbmdlLmZpcnN0LCBRUHJpdmF0ZVNpZ25hbCgpKTsKKyB9CisgCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcXNvcnRmaWx0ZXJwcm94eW1vZGVsLmNwcCBi L3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5jcHAK K2luZGV4IGRjNjM3OWQ5ZmIuLmM1ZTI4N2VlODQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnByb3h5bW9kZWwuY3BwCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnByb3h5bW9kZWwuY3BwCitAQCAtOTM5 LDggKzkzOSw5IEBAIHZvaWQgUVNvcnRGaWx0ZXJQcm94eU1vZGVsUHJpdmF0ZTo6aW5zZXJ0X3Nv dXJjZV9pdGVtcygKKyAgICAgICAgICAgICAgICAgcS0+YmVnaW5JbnNlcnRDb2x1bW5zKHByb3h5 X3BhcmVudCwgcHJveHlfc3RhcnQsIHByb3h5X2VuZCk7CisgICAgICAgICB9CisgCistICAgICAg ICBmb3IgKGludCBpID0gMDsgaSA8IHNvdXJjZV9pdGVtcy5zaXplKCk7ICsraSkKKy0gICAgICAg ICAgICBwcm94eV90b19zb3VyY2UuaW5zZXJ0KHByb3h5X3N0YXJ0ICsgaSwgc291cmNlX2l0ZW1z LmF0KGkpKTsKKysgICAgICAgIC8vIFRPRE86IHVzZSB0aGUgcmFuZ2UgUUxpc3Q6Omluc2VydCgp IG92ZXJsb2FkIG9uY2UgaXQgaXMgaW1wbGVtZW50ZWQgKFFUQlVHLTU4NjMzKS4KKysgICAgICAg IHByb3h5X3RvX3NvdXJjZS5pbnNlcnQocHJveHlfc3RhcnQsIHNvdXJjZV9pdGVtcy5zaXplKCks IDApOworKyAgICAgICAgc3RkOjpjb3B5KHNvdXJjZV9pdGVtcy5jYmVnaW4oKSwgc291cmNlX2l0 ZW1zLmNlbmQoKSwgcHJveHlfdG9fc291cmNlLmJlZ2luKCkgKyBwcm94eV9zdGFydCk7CisgCisg ICAgICAgICBidWlsZF9zb3VyY2VfdG9fcHJveHlfbWFwcGluZyhwcm94eV90b19zb3VyY2UsIHNv dXJjZV90b19wcm94eSk7CisgCitAQCAtMzEyMyw4ICszMTI0LDkgQEAgYm9vbCBRU29ydEZpbHRl clByb3h5TW9kZWw6OmZpbHRlckFjY2VwdHNSb3coaW50IHNvdXJjZV9yb3csIGNvbnN0IFFNb2Rl bEluZGV4ICYKKyAKKyAgICAgaWYgKGQtPmZpbHRlcl9kYXRhLmlzRW1wdHkoKSkKKyAgICAgICAg IHJldHVybiB0cnVlOworKworKyAgICBpbnQgY29sdW1uX2NvdW50ID0gZC0+bW9kZWwtPmNvbHVt bkNvdW50KHNvdXJjZV9wYXJlbnQpOworICAgICBpZiAoZC0+ZmlsdGVyX2NvbHVtbiA9PSAtMSkg eworLSAgICAgICAgaW50IGNvbHVtbl9jb3VudCA9IGQtPm1vZGVsLT5jb2x1bW5Db3VudChzb3Vy Y2VfcGFyZW50KTsKKyAgICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IGNvbHVt bl9jb3VudDsgKytjb2x1bW4pIHsKKyAgICAgICAgICAgICBRTW9kZWxJbmRleCBzb3VyY2VfaW5k ZXggPSBkLT5tb2RlbC0+aW5kZXgoc291cmNlX3JvdywgY29sdW1uLCBzb3VyY2VfcGFyZW50KTsK KyAgICAgICAgICAgICBRU3RyaW5nIGtleSA9IGQtPm1vZGVsLT5kYXRhKHNvdXJjZV9pbmRleCwg ZC0+ZmlsdGVyX3JvbGUpLnRvU3RyaW5nKCk7CitAQCAtMzEzMyw5ICszMTM1LDEwIEBAIGJvb2wg UVNvcnRGaWx0ZXJQcm94eU1vZGVsOjpmaWx0ZXJBY2NlcHRzUm93KGludCBzb3VyY2Vfcm93LCBj b25zdCBRTW9kZWxJbmRleCAmCisgICAgICAgICB9CisgICAgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgIH0KKy0gICAgUU1vZGVsSW5kZXggc291cmNlX2luZGV4ID0gZC0+bW9kZWwtPmluZGV4KHNv dXJjZV9yb3csIGQtPmZpbHRlcl9jb2x1bW4sIHNvdXJjZV9wYXJlbnQpOworLSAgICBpZiAoIXNv dXJjZV9pbmRleC5pc1ZhbGlkKCkpIC8vIHRoZSBjb2x1bW4gbWF5IG5vdCBleGlzdAorKworKyAg ICBpZiAoZC0+ZmlsdGVyX2NvbHVtbiA+PSBjb2x1bW5fY291bnQpIC8vIHRoZSBjb2x1bW4gbWF5 IG5vdCBleGlzdAorICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgIFFNb2RlbEluZGV4IHNvdXJj ZV9pbmRleCA9IGQtPm1vZGVsLT5pbmRleChzb3VyY2Vfcm93LCBkLT5maWx0ZXJfY29sdW1uLCBz b3VyY2VfcGFyZW50KTsKKyAgICAgUVN0cmluZyBrZXkgPSBkLT5tb2RlbC0+ZGF0YShzb3VyY2Vf aW5kZXgsIGQtPmZpbHRlcl9yb2xlKS50b1N0cmluZygpOworICAgICByZXR1cm4gZC0+ZmlsdGVy X2RhdGEuaGFzTWF0Y2goa2V5KTsKKyB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGli L2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwv cWNvcmVhcHBsaWNhdGlvbi5jcHAKK2luZGV4IGNhMjg2NGRmODMuLjEzMmIyZWFlNTIgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fjb3JlYXBwbGljYXRpb24uY3BwCisr KysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fjb3JlYXBwbGljYXRpb24uY3BwCitAQCAt MTE1Nyw3ICsxMTU3LDcgQEAgc3RhdGljIGJvb2wgZG9Ob3RpZnkoUU9iamVjdCAqcmVjZWl2ZXIs IFFFdmVudCAqZXZlbnQpCisgYm9vbCBRQ29yZUFwcGxpY2F0aW9uUHJpdmF0ZTo6c2VuZFRocm91 Z2hBcHBsaWNhdGlvbkV2ZW50RmlsdGVycyhRT2JqZWN0ICpyZWNlaXZlciwgUUV2ZW50ICpldmVu dCkKKyB7CisgICAgIC8vIFdlIGNhbid0IGFjY2VzcyB0aGUgYXBwbGljYXRpb24gZXZlbnQgZmls dGVycyBvdXRzaWRlIG9mIHRoZSBtYWluIHRocmVhZCAocmFjZSBjb25kaXRpb25zKQorLSAgICBR X0FTU0VSVChyZWNlaXZlci0+ZF9mdW5jKCktPnRocmVhZERhdGEubG9hZFJlbGF4ZWQoKS0+dGhy ZWFkLmxvYWRBY3F1aXJlKCkgPT0gbWFpblRocmVhZCgpKTsKKysgICAgUV9BU1NFUlQocmVjZWl2 ZXItPmRfZnVuYygpLT50aHJlYWREYXRhLmxvYWRBY3F1aXJlKCktPnRocmVhZC5sb2FkUmVsYXhl ZCgpID09IG1haW5UaHJlYWQoKSk7CisgCisgICAgIGlmIChleHRyYURhdGEpIHsKKyAgICAgICAg IC8vIGFwcGxpY2F0aW9uIGV2ZW50IGZpbHRlcnMgYXJlIG9ubHkgY2FsbGVkIGZvciBvYmplY3Rz IGluIHRoZSBHVUkgdGhyZWFkCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5l bC9xb2JqZWN0LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdC5jcHAKK2lu ZGV4IDFlYjc5MTM4ZDkuLjM2Y2Q3ODBlZTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVs aWIva2VybmVsL3FvYmplY3QuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fv YmplY3QuY3BwCitAQCAtMTAxMCw3ICsxMDEwLDcgQEAgUU9iamVjdDo6flFPYmplY3QoKQorICAg ICAgICAgZW1pdCBkZXN0cm95ZWQodGhpcyk7CisgICAgIH0KKyAKKy0gICAgaWYgKGQtPmRlY2xh cmF0aXZlRGF0YSkgeworKyAgICBpZiAoIWQtPmlzRGVsZXRpbmdDaGlsZHJlbiAmJiBkLT5kZWNs YXJhdGl2ZURhdGEpIHsKKyAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxRQWJzdHJhY3REZWNsYXJh dGl2ZURhdGFJbXBsKj4oZC0+ZGVjbGFyYXRpdmVEYXRhKS0+b3duZWRCeVFtbDEpIHsKKyAgICAg ICAgICAgICBpZiAoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpkZXN0cm95ZWRfcW1sMSkKKyAg ICAgICAgICAgICAgICAgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpkZXN0cm95ZWRfcW1sMShk LT5kZWNsYXJhdGl2ZURhdGEsIHRoaXMpOworQEAgLTE1ODAsNyArMTU4MCw3IEBAIHZvaWQgUU9i amVjdDo6bW92ZVRvVGhyZWFkKFFUaHJlYWQgKnRhcmdldFRocmVhZCkKKyAKKyAgICAgUVRocmVh ZERhdGEgKmN1cnJlbnREYXRhID0gUVRocmVhZERhdGE6OmN1cnJlbnQoKTsKKyAgICAgUVRocmVh ZERhdGEgKnRhcmdldERhdGEgPSB0YXJnZXRUaHJlYWQgPyBRVGhyZWFkRGF0YTo6Z2V0Mih0YXJn ZXRUaHJlYWQpIDogbnVsbHB0cjsKKy0gICAgUVRocmVhZERhdGEgKnRoaXNUaHJlYWREYXRhID0g ZC0+dGhyZWFkRGF0YS5sb2FkUmVsYXhlZCgpOworKyAgICBRVGhyZWFkRGF0YSAqdGhpc1RocmVh ZERhdGEgPSBkLT50aHJlYWREYXRhLmxvYWRBY3F1aXJlKCk7CisgICAgIGlmICghdGhpc1RocmVh ZERhdGEtPnRocmVhZC5sb2FkQWNxdWlyZSgpICYmIGN1cnJlbnREYXRhID09IHRhcmdldERhdGEp IHsKKyAgICAgICAgIC8vIG9uZSBleGNlcHRpb24gdG8gdGhlIHJ1bGU6IHdlIGFsbG93IG1vdmlu ZyBvYmplY3RzIHdpdGggbm8gdGhyZWFkIGFmZmluaXR5IHRvIHRoZSBjdXJyZW50IHRocmVhZAor ICAgICAgICAgY3VycmVudERhdGEgPSBkLT50aHJlYWREYXRhOworQEAgLTI2MjAsNyArMjYyMCw3 IEBAIGludCBRT2JqZWN0OjpyZWNlaXZlcnMoY29uc3QgY2hhciAqc2lnbmFsKSBjb25zdAorICAg ICAgICAgaWYgKCFkLT5pc1NpZ25hbENvbm5lY3RlZChzaWduYWxfaW5kZXgpKQorICAgICAgICAg ICAgIHJldHVybiByZWNlaXZlcnM7CisgCistICAgICAgICBpZiAoZC0+ZGVjbGFyYXRpdmVEYXRh ICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6cmVjZWl2ZXJzKSB7CisrICAgICAgICBpZiAo IWQtPmlzRGVsZXRpbmdDaGlsZHJlbiAmJiBkLT5kZWNsYXJhdGl2ZURhdGEgJiYgUUFic3RyYWN0 RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMpIHsKKyAgICAgICAgICAgICByZWNlaXZlcnMgKz0g UUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMoZC0+ZGVjbGFyYXRpdmVEYXRhLCB0 aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaWduYWxfaW5kZXgpOworICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdF9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2Vy bmVsL3FvYmplY3RfcC5oCitpbmRleCAwYjgyN2E1MmNhLi4xM2ZmYjg4OTk5IDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaAorKysrIGIvcXRiYXNlL3Ny Yy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaAorQEAgLTQ0NCw3ICs0NDQsNyBAQCBpbmxpbmUg dm9pZCBRT2JqZWN0UHJpdmF0ZTo6Y2hlY2tGb3JJbmNvbXBhdGlibGVMaWJyYXJ5VmVyc2lvbihp bnQgdmVyc2lvbikgY29ucworIAorIGlubGluZSBib29sIFFPYmplY3RQcml2YXRlOjppc0RlY2xh cmF0aXZlU2lnbmFsQ29ubmVjdGVkKHVpbnQgc2lnbmFsX2luZGV4KSBjb25zdAorIHsKKy0gICAg cmV0dXJuIGRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmlzU2ln bmFsQ29ubmVjdGVkCisrICAgIHJldHVybiAhaXNEZWxldGluZ0NoaWxkcmVuICYmIGRlY2xhcmF0 aXZlRGF0YSAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmlzU2lnbmFsQ29ubmVjdGVkCisg ICAgICAgICAgICAgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjppc1NpZ25hbENvbm5lY3Rl ZChkZWNsYXJhdGl2ZURhdGEsIHFfZnVuYygpLCBzaWduYWxfaW5kZXgpOworIH0KKyAKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3F0cmFuc2xhdG9yLmNwcCBiL3F0YmFz ZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRyYW5zbGF0b3IuY3BwCitpbmRleCAyODEyZmZiN2VhLi5i YzAxNzdjNWVjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xdHJhbnNs YXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRyYW5zbGF0b3IuY3Bw CitAQCAtOTAyLDcgKzkwMiw3IEBAIHN0YXRpYyBRU3RyaW5nIGdldE1lc3NhZ2UoY29uc3QgdWNo YXIgKm0sIGNvbnN0IHVjaGFyICplbmQsIGNvbnN0IGNoYXIgKmNvbnRleHQsCisgICAgICAgICAg ICAgZ290byBlbmQ7CisgICAgICAgICBjYXNlIFRhZ19UcmFuc2xhdGlvbjogeworICAgICAgICAg ICAgIGludCBsZW4gPSByZWFkMzIobSk7CistICAgICAgICAgICAgaWYgKGxlbiAlIDEpCisrICAg ICAgICAgICAgaWYgKGxlbiAmIDEpCisgICAgICAgICAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7 CisgICAgICAgICAgICAgbSArPSA0OworICAgICAgICAgICAgIGlmICghbnVtZXJ1cy0tKSB7Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlLmNw cCBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS5jcHAKK2luZGV4 IDlkZTIyY2VmMzMuLmZmODY4YTMyNjggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIv bWltZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWlt ZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwCitAQCAtMzg5LDIwICszODksMjMgQEAgUU1pbWVUeXBl IFFNaW1lRGF0YWJhc2VQcml2YXRlOjptaW1lVHlwZUZvckZpbGVOYW1lQW5kRGF0YShjb25zdCBR U3RyaW5nICZmaWxlTmEKKyAgICAgICAgIC8vIERpc2FtYmlndWF0ZSBjb25mbGljdGluZyBleHRl bnNpb25zIChpZiBtYWdpYyBtYXRjaGluZyBmb3VuZCBzb21ldGhpbmcpCisgICAgICAgICBpZiAo Y2FuZGlkYXRlQnlEYXRhLmlzVmFsaWQoKSAmJiBtYWdpY0FjY3VyYWN5ID4gMCkgeworICAgICAg ICAgICAgIGNvbnN0IFFTdHJpbmcgc25pZmZlZE1pbWUgPSBjYW5kaWRhdGVCeURhdGEubmFtZSgp OworLSAgICAgICAgICAgIC8vIElmIHRoZSBzbmlmZmVkTWltZSBtYXRjaGVzIGEgZ2xvYiBtYXRj aCwgdXNlIGl0CisrICAgICAgICAgICAgLy8gSWYgdGhlIHNuaWZmZWRNaW1lIG1hdGNoZXMgYSBo aWdoZXN0LXdlaWdodCBnbG9iIG1hdGNoLCB1c2UgaXQKKyAgICAgICAgICAgICBpZiAoY2FuZGlk YXRlc0J5TmFtZS5tX21hdGNoaW5nTWltZVR5cGVzLmNvbnRhaW5zKHNuaWZmZWRNaW1lKSkgewor ICAgICAgICAgICAgICAgICAqYWNjdXJhY3lQdHIgPSAxMDA7CisgICAgICAgICAgICAgICAgIHJl dHVybiBjYW5kaWRhdGVCeURhdGE7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGZvciAo Y29uc3QgUVN0cmluZyAmbSA6IHFBc0NvbnN0KGNhbmRpZGF0ZXNCeU5hbWUubV9tYXRjaGluZ01p bWVUeXBlcykpIHsKKysgICAgICAgICAgICBmb3IgKGNvbnN0IFFTdHJpbmcgJm0gOiBxQXNDb25z dChjYW5kaWRhdGVzQnlOYW1lLm1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMpKSB7CisgICAgICAgICAg ICAgICAgIGlmIChpbmhlcml0cyhtLCBzbmlmZmVkTWltZSkpIHsKKyAgICAgICAgICAgICAgICAg ICAgIC8vIFdlIGhhdmUgbWFnaWMgKyBwYXR0ZXJuIHBvaW50aW5nIHRvIHRoaXMsIHNvIGl0J3Mg YSBwcmV0dHkgZ29vZCBtYXRjaAorICAgICAgICAgICAgICAgICAgICAgKmFjY3VyYWN5UHRyID0g MTAwOworICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1pbWVUeXBlRm9yTmFtZShtKTsKKyAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAqYWNjdXJhY3lQ dHIgPSBtYWdpY0FjY3VyYWN5OworLSAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVCeURhdGE7 CisrICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXNCeU5hbWUubV9hbGxNYXRjaGluZ01pbWVUeXBl cy5pc0VtcHR5KCkpIHsKKysgICAgICAgICAgICAgICAgLy8gTm8gZ2xvYiwgdXNlIG1hZ2ljCisr ICAgICAgICAgICAgICAgICphY2N1cmFjeVB0ciA9IG1hZ2ljQWNjdXJhY3k7CisrICAgICAgICAg ICAgICAgIHJldHVybiBjYW5kaWRhdGVCeURhdGE7CisrICAgICAgICAgICAgfQorICAgICAgICAg fQorICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9x bWltZWdsb2JwYXR0ZXJuLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVn bG9icGF0dGVybi5jcHAKK2luZGV4IGE4MTExMmQyMjcuLmZhOGY0YzU0NWQgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZ2xvYnBhdHRlcm4uY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZ2xvYnBhdHRlcm4uY3BwCitAQCAt ODMsNyArODMsMTAgQEAgdm9pZCBRTWltZUdsb2JNYXRjaFJlc3VsdDo6YWRkTWF0Y2goY29uc3Qg UVN0cmluZyAmbWltZVR5cGUsIGludCB3ZWlnaHQsIGNvbnN0IFEKKyAgICAgfQorICAgICBpZiAo IW1fbWF0Y2hpbmdNaW1lVHlwZXMuY29udGFpbnMobWltZVR5cGUpKSB7CisgICAgICAgICBtX21h dGNoaW5nTWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7CistICAgICAgICBtX2FsbE1hdGNoaW5n TWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7CisrICAgICAgICBpZiAocmVwbGFjZSkKKysgICAg ICAgICAgICBtX2FsbE1hdGNoaW5nTWltZVR5cGVzLnByZXBlbmQobWltZVR5cGUpOyAvLyBoaWdo ZXN0LXdlaWdodCBmaXJzdAorKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIG1fYWxsTWF0Y2hp bmdNaW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKyAgICAgICAgIG1fa25vd25TdWZmaXhMZW5n dGggPSBrbm93blN1ZmZpeExlbmd0aDsKKyAgICAgfQorIH0KK0BAIC05NCw3ICs5Nyw3IEBAIFFN aW1lR2xvYlBhdHRlcm46OlBhdHRlcm5UeXBlIFFNaW1lR2xvYlBhdHRlcm46OmRldGVjdFBhdHRl cm5UeXBlKGNvbnN0IFFTdHJpbmcKKyAgICAgaWYgKCFwYXR0ZXJuTGVuZ3RoKQorICAgICAgICAg cmV0dXJuIE90aGVyUGF0dGVybjsKKyAKKy0gICAgY29uc3QgYm9vbCBzdGFyQ291bnQgPSBwYXR0 ZXJuLmNvdW50KFFMYXRpbjFDaGFyKCcqJykpID09IDE7CisrICAgIGNvbnN0IGludCBzdGFyQ291 bnQgPSBwYXR0ZXJuLmNvdW50KFFMYXRpbjFDaGFyKCcqJykpOworICAgICBjb25zdCBib29sIGhh c1NxdWFyZUJyYWNrZXQgPSBwYXR0ZXJuLmluZGV4T2YoUUxhdGluMUNoYXIoJ1snKSkgIT0gLTE7 CisgICAgIGNvbnN0IGJvb2wgaGFzUXVlc3Rpb25NYXJrID0gcGF0dGVybi5pbmRleE9mKFFMYXRp bjFDaGFyKCc/JykpICE9IC0xOworIAorQEAgLTEwNiwxMCArMTA5LDEwIEBAIFFNaW1lR2xvYlBh dHRlcm46OlBhdHRlcm5UeXBlIFFNaW1lR2xvYlBhdHRlcm46OmRldGVjdFBhdHRlcm5UeXBlKGNv bnN0IFFTdHJpbmcKKyAgICAgICAgICAgICAvLyBQYXR0ZXJucyBsaWtlICJSRUFETUUqIiAod2Vs bCB0aGlzIGlzIGN1cnJlbnRseSB0aGUgb25seSBvbmUgbGlrZSB0aGF0Li4uKQorICAgICAgICAg ICAgIGlmIChwYXR0ZXJuLmF0KHBhdHRlcm5MZW5ndGggLSAxKSA9PSBRTGF0aW4xQ2hhcignKicp KQorICAgICAgICAgICAgICAgICByZXR1cm4gUHJlZml4UGF0dGVybjsKKy0gICAgICAgIH0KKy0g ICAgICAgIC8vIE5hbWVzIHdpdGhvdXQgYW55IHdpbGRjYXJkcyBsaWtlICJSRUFETUUiCistICAg ICAgICBpZiAoc3RhckNvdW50ID09IDApCisrICAgICAgICB9IGVsc2UgaWYgKHN0YXJDb3VudCA9 PSAwKSB7CisrICAgICAgICAgICAgLy8gTmFtZXMgd2l0aG91dCBhbnkgd2lsZGNhcmRzIGxpa2Ug IlJFQURNRSIKKyAgICAgICAgICAgICByZXR1cm4gTGl0ZXJhbFBhdHRlcm47CisrICAgICAgICB9 CisgICAgIH0KKyAKKyAgICAgaWYgKHBhdHRlcm4gPT0gUUxhdGluMVN0cmluZygiWzAtOV1bMC05 XVswLTldLnZkciIpKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMv cW1pbWVwcm92aWRlci5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJv dmlkZXIuY3BwCitpbmRleCAyNThkZGRmOGNiLi40NjQyZDBmMmQwIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXByb3ZpZGVyLmNwcAorKysrIGIvcXRiYXNl L3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXByb3ZpZGVyLmNwcAorQEAgLTI0NCwxNSArMjQ0 LDE4IEBAIHZvaWQgUU1pbWVCaW5hcnlQcm92aWRlcjo6YWRkRmlsZU5hbWVNYXRjaGVzKGNvbnN0 IFFTdHJpbmcgJmZpbGVOYW1lLCBRTWltZUdsb2JNCisgICAgIGNvbnN0IFFTdHJpbmcgbG93ZXJG aWxlTmFtZSA9IGZpbGVOYW1lLnRvTG93ZXIoKTsKKyAgICAgLy8gQ2hlY2sgbGl0ZXJhbHMgKGUu Zy4gIk1ha2VmaWxlIikKKyAgICAgbWF0Y2hHbG9iTGlzdChyZXN1bHQsIG1fY2FjaGVGaWxlLCBt X2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc0xpdGVyYWxMaXN0T2Zmc2V0KSwgZmlsZU5hbWUpOwor LSAgICAvLyBDaGVjayBjb21wbGV4IGdsb2JzIChlLmcuICJjYWxsZ3JpbmQub3V0WzAtOV0qIikK Ky0gICAgbWF0Y2hHbG9iTGlzdChyZXN1bHQsIG1fY2FjaGVGaWxlLCBtX2NhY2hlRmlsZS0+Z2V0 VWludDMyKFBvc0dsb2JMaXN0T2Zmc2V0KSwgZmlsZU5hbWUpOworICAgICAvLyBDaGVjayB0aGUg dmVyeSBjb21tb24gKi50eHQgY2FzZXMgd2l0aCB0aGUgc3VmZml4IHRyZWUKKy0gICAgY29uc3Qg aW50IHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0ID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQb3NS ZXZlcnNlU3VmZml4VHJlZU9mZnNldCk7CistICAgIGNvbnN0IGludCBudW1Sb290cyA9IG1fY2Fj aGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQpOworLSAgICBjb25zdCBp bnQgZmlyc3RSb290T2Zmc2V0ID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihyZXZlcnNlU3VmZml4 VHJlZU9mZnNldCArIDQpOworLSAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0LCBtX2NhY2hlRmls ZSwgbnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwgbG93ZXJGaWxlTmFtZSwgbG93ZXJGaWxlTmFt ZS5sZW5ndGgoKSAtIDEsIGZhbHNlKTsKKysgICAgaWYgKHJlc3VsdC5tX21hdGNoaW5nTWltZVR5 cGVzLmlzRW1wdHkoKSkgeworKyAgICAgICAgY29uc3QgaW50IHJldmVyc2VTdWZmaXhUcmVlT2Zm c2V0ID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQb3NSZXZlcnNlU3VmZml4VHJlZU9mZnNldCk7 CisrICAgICAgICBjb25zdCBpbnQgbnVtUm9vdHMgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKHJl dmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsKKysgICAgICAgIGNvbnN0IGludCBmaXJzdFJvb3RPZmZz ZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0ICsgNCk7 CisrICAgICAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0LCBtX2NhY2hlRmlsZSwgbnVtUm9vdHMs IGZpcnN0Um9vdE9mZnNldCwgbG93ZXJGaWxlTmFtZSwgbG93ZXJGaWxlTmFtZS5sZW5ndGgoKSAt IDEsIGZhbHNlKTsKKysgICAgICAgIGlmIChyZXN1bHQubV9tYXRjaGluZ01pbWVUeXBlcy5pc0Vt cHR5KCkpCisrICAgICAgICAgICAgbWF0Y2hTdWZmaXhUcmVlKHJlc3VsdCwgbV9jYWNoZUZpbGUs IG51bVJvb3RzLCBmaXJzdFJvb3RPZmZzZXQsIGZpbGVOYW1lLCBmaWxlTmFtZS5sZW5ndGgoKSAt IDEsIHRydWUpOworKyAgICB9CisrICAgIC8vIENoZWNrIGNvbXBsZXggZ2xvYnMgKGUuZy4gImNh bGxncmluZC5vdXRbMC05XSoiIG9yICJSRUFETUUqIikKKyAgICAgaWYgKHJlc3VsdC5tX21hdGNo aW5nTWltZVR5cGVzLmlzRW1wdHkoKSkKKy0gICAgICAgIG1hdGNoU3VmZml4VHJlZShyZXN1bHQs IG1fY2FjaGVGaWxlLCBudW1Sb290cywgZmlyc3RSb290T2Zmc2V0LCBmaWxlTmFtZSwgZmlsZU5h bWUubGVuZ3RoKCkgLSAxLCB0cnVlKTsKKysgICAgICAgIG1hdGNoR2xvYkxpc3QocmVzdWx0LCBt X2NhY2hlRmlsZSwgbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQb3NHbG9iTGlzdE9mZnNldCksIGZp bGVOYW1lKTsKKyB9CisgCisgdm9pZCBRTWltZUJpbmFyeVByb3ZpZGVyOjptYXRjaEdsb2JMaXN0 KFFNaW1lR2xvYk1hdGNoUmVzdWx0ICZyZXN1bHQsIENhY2hlRmlsZSAqY2FjaGVGaWxlLCBpbnQg b2ZmLCBjb25zdCBRU3RyaW5nICZmaWxlTmFtZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvc2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv c2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5jcHAKK2luZGV4IDE3ZTZmMTExYWIuLjJlNDBiNmM4 ZmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xanNvbnBh cnNlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3Fqc29ucGFy c2VyLmNwcAorQEAgLTM3OSwxMCArMzc5LDMwIEBAIGVycm9yOgorICAgICByZXR1cm4gUUNib3JW YWx1ZSgpOworIH0KKyAKKysvLyBXZSBuZWVkIHRvIHJldGFpbiB0aGUgX2xhc3RfIHZhbHVlIGZv ciBhbnkgZHVwbGljYXRlIGtleXMgYW5kIHdlIG5lZWQgdG8gZGVyZWYgY29udGFpbmVycy4KKysv LyBUaGVyZWZvcmUgdGhlIG1hbnVhbCBpbXBsZW1lbnRhdGlvbiBvZiBzdGQ6OnVuaXF1ZSgpLgor K3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBDb21wYXJlLCB0eXBlbmFtZSBB c3NpZ24+Cisrc3RhdGljIEl0ZXJhdG9yIGN1c3RvbUFzc2lnbmluZ1VuaXF1ZUxhc3QoSXRlcmF0 b3IgZmlyc3QsIEl0ZXJhdG9yIGxhc3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ29tcGFyZSBjb21wYXJlLCBBc3NpZ24gYXNzaWduKQorK3sKKysgICAgZmly c3QgPSBzdGQ6OmFkamFjZW50X2ZpbmQoZmlyc3QsIGxhc3QsIGNvbXBhcmUpOworKyAgICBpZiAo Zmlyc3QgPT0gbGFzdCkKKysgICAgICAgIHJldHVybiBsYXN0OworKworKyAgICBJdGVyYXRvciBy ZXN1bHQgPSBmaXJzdDsKKysgICAgd2hpbGUgKCsrZmlyc3QgIT0gbGFzdCkgeworKyAgICAgICAg aWYgKCFjb21wYXJlKCpyZXN1bHQsICpmaXJzdCkpCisrICAgICAgICAgICAgKytyZXN1bHQ7Cisr ICAgICAgICBpZiAocmVzdWx0ICE9IGZpcnN0KQorKyAgICAgICAgICAgIGFzc2lnbigqcmVzdWx0 LCAqZmlyc3QpOworKyAgICB9CisrCisrICAgIHJldHVybiArK3Jlc3VsdDsKKyt9CisrCisgc3Rh dGljIHZvaWQgc29ydENvbnRhaW5lcihRQ2JvckNvbnRhaW5lclByaXZhdGUgKmNvbnRhaW5lcikK KyB7CisgICAgIHVzaW5nIEZvcndhcmQgPSBRSnNvblByaXZhdGU6OktleUl0ZXJhdG9yOworLSAg ICB1c2luZyBSZXZlcnNlID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPEZvcndhcmQ+OworICAgICB1 c2luZyBWYWx1ZSA9IEZvcndhcmQ6OnZhbHVlX3R5cGU7CisgCisgICAgIGF1dG8gY29tcGFyZSA9 IFtjb250YWluZXJdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikKK0BAIC00MjAsMTcg KzQ0MCwzMSBAQCBzdGF0aWMgdm9pZCBzb3J0Q29udGFpbmVyKFFDYm9yQ29udGFpbmVyUHJpdmF0 ZSAqY29udGFpbmVyKQorICAgICAgICAgfQorICAgICB9OworIAorLSAgICBzdGQ6OnNvcnQoRm9y d2FyZChjb250YWluZXItPmVsZW1lbnRzLmJlZ2luKCkpLCBGb3J3YXJkKGNvbnRhaW5lci0+ZWxl bWVudHMuZW5kKCkpLAorLSAgICAgICAgICAgICAgWyZjb21wYXJlXShjb25zdCBWYWx1ZSAmYSwg Y29uc3QgVmFsdWUgJmIpIHsgcmV0dXJuIGNvbXBhcmUoYSwgYikgPCAwOyB9KTsKKysgICAgLy8g VGhlIGVsZW1lbnRzJyBjb250YWluZXJzIGFyZSBvd25lZCBieSB0aGUgb3V0ZXIgY29udGFpbmVy LCBub3QgYnkgdGhlIGVsZW1lbnRzIHRoZW1zZWx2ZXMuCisrICAgIGF1dG8gbW92ZSA9IFtdKEZv cndhcmQ6OnJlZmVyZW5jZSB0YXJnZXQsIEZvcndhcmQ6OnJlZmVyZW5jZSBzb3VyY2UpCisrICAg IHsKKysgICAgICAgIFF0Q2Jvcjo6RWxlbWVudCAmdGFyZ2V0VmFsdWUgPSB0YXJnZXQudmFsdWUo KTsKKysKKysgICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaGFzIGEgY29udGFpbmVyLCBkZXJlZiBp dCBiZWZvcmUgb3ZlcndyaXRpbmcsIHNvIHRoYXQgd2UgZG9uJ3QgbGVhay4KKysgICAgICAgIGlm ICh0YXJnZXRWYWx1ZS5mbGFncyAmIFF0Q2Jvcjo6RWxlbWVudDo6SXNDb250YWluZXIpCisrICAg ICAgICAgICAgdGFyZ2V0VmFsdWUuY29udGFpbmVyLT5kZXJlZigpOworKworKyAgICAgICAgLy8g RG8gbm90IG1vdmUsIHNvIHRoYXQgd2UgY2FuIGNsZWFyIHRoZSB2YWx1ZSBhZnRlcndhcmRzLgor KyAgICAgICAgdGFyZ2V0ID0gc291cmNlOworKworKyAgICAgICAgLy8gQ2xlYXIgdGhlIHNvdXJj ZSB2YWx1ZSwgc28gdGhhdCB3ZSBkb24ndCBzdG9yZSB0aGUgc2FtZSBjb250YWluZXIgdHdpY2Uu CisrICAgICAgICBzb3VyY2UudmFsdWUoKSA9IFF0Q2Jvcjo6RWxlbWVudCgpOworKyAgICB9Owor KworKyAgICBzdGQ6OnN0YWJsZV9zb3J0KAorKyAgICAgICAgICAgICAgICBGb3J3YXJkKGNvbnRh aW5lci0+ZWxlbWVudHMuYmVnaW4oKSksIEZvcndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5lbmQo KSksCisrICAgICAgICAgICAgICAgIFsmY29tcGFyZV0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZh bHVlICZiKSB7IHJldHVybiBjb21wYXJlKGEsIGIpIDwgMDsgfSk7CisgCistICAgIC8vIFdlIG5l ZWQgdG8gcmV0YWluIHRoZSBfbGFzdF8gdmFsdWUgZm9yIGFueSBkdXBsaWNhdGUga2V5cy4gVGhl cmVmb3JlIHRoZSByZXZlcnNlIGRhbmNlIGhlcmUuCistICAgIGF1dG8gaXQgPSBzdGQ6OnVuaXF1 ZShSZXZlcnNlKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpLCBSZXZlcnNlKGNvbnRhaW5lci0+ ZWxlbWVudHMuYmVnaW4oKSksCistICAgICAgICAgICAgICAgICAgICAgICAgICBbJmNvbXBhcmVd KGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikgeworLSAgICAgICAgcmV0dXJuIGNvbXBh cmUoYSwgYikgPT0gMDsKKy0gICAgfSkuYmFzZSgpLmVsZW1lbnRzSXRlcmF0b3IoKTsKKysgICAg Rm9yd2FyZCByZXN1bHQgPSBjdXN0b21Bc3NpZ25pbmdVbmlxdWVMYXN0KAorKyAgICAgICAgICAg ICAgICBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSksICBGb3J3YXJkKGNvbnRh aW5lci0+ZWxlbWVudHMuZW5kKCkpLAorKyAgICAgICAgICAgICAgICBbJmNvbXBhcmVdKGNvbnN0 IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikgeyByZXR1cm4gY29tcGFyZShhLCBiKSA9PSAwOyB9 LCBtb3ZlKTsKKyAKKy0gICAgLy8gVGhlIGVyYXNlIGZyb20gYmVnaW5uaW5nIGlzIGV4cGVuc2l2 ZSBidXQgaG9wZWZ1bGx5IHJhcmUuCistICAgIGNvbnRhaW5lci0+ZWxlbWVudHMuZXJhc2UoY29u dGFpbmVyLT5lbGVtZW50cy5iZWdpbigpLCBpdCk7CisrICAgIGNvbnRhaW5lci0+ZWxlbWVudHMu ZXJhc2UocmVzdWx0LmVsZW1lbnRzSXRlcmF0b3IoKSwgY29udGFpbmVyLT5lbGVtZW50cy5lbmQo KSk7CisgfQorIAorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0 aW9uL3F4bWxzdHJlYW0uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcXht bHN0cmVhbS5jcHAKK2luZGV4IGIyZjg0NjU0NGQuLjdjZDQ1N2JhM2EgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1sc3RyZWFtLmNwcAorKysrIGIvcXRi YXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcXhtbHN0cmVhbS5jcHAKK0BAIC05ODAsNyAr OTgwLDcgQEAgaW5saW5lIHVpbnQgUVhtbFN0cmVhbVJlYWRlclByaXZhdGU6OnBlZWtDaGFyKCkK KyBib29sIFFYbWxTdHJlYW1SZWFkZXJQcml2YXRlOjpzY2FuVW50aWwoY29uc3QgY2hhciAqc3Ry LCBzaG9ydCB0b2tlblRvSW5qZWN0KQorIHsKKyAgICAgaW50IHBvcyA9IHRleHRCdWZmZXIuc2l6 ZSgpOworLSAgICBpbnQgb2xkTGluZU51bWJlciA9IGxpbmVOdW1iZXI7CisrICAgIGNvbnN0IGF1 dG8gb2xkTGluZU51bWJlciA9IGxpbmVOdW1iZXI7CisgCisgICAgIHVpbnQgYzsKKyAgICAgd2hp bGUgKChjID0gZ2V0Q2hhcigpKSAhPSBTdHJlYW1FT0YpIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3Fz dHJpbmcuY3BwCitpbmRleCAzZTg4YWI0ODU5Li44ZGVlYWU0N2JiIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxp Yi90ZXh0L3FzdHJpbmcuY3BwCitAQCAtMTIzMTIsNyArMTIzMTIsNyBAQCBzdGF0aWMgcXNpemV0 eXBlIHFMYXN0SW5kZXhPZihIYXlzdGFjayBoYXlzdGFjazAsIHFzaXpldHlwZSBmcm9tLAorICAg ICBjb25zdCBhdXRvIG5lZWRsZSA9IG5lZWRsZTAuZGF0YSgpOworICAgICBjb25zdCBhdXRvICpl bmQgPSBoYXlzdGFjazsKKyAgICAgaGF5c3RhY2sgKz0gZnJvbTsKKy0gICAgY29uc3Qgc3RkOjpz aXplX3Qgc2xfbWludXNfMSA9IHNsIC0gMTsKKysgICAgY29uc3Qgc3RkOjpzaXplX3Qgc2xfbWlu dXNfMSA9IHNsID8gc2wgLSAxIDogMDsKKyAgICAgY29uc3QgYXV0byAqbiA9IG5lZWRsZSArIHNs X21pbnVzXzE7CisgICAgIGNvbnN0IGF1dG8gKmggPSBoYXlzdGFjayArIHNsX21pbnVzXzE7Cisg ICAgIHN0ZDo6c2l6ZV90IGhhc2hOZWVkbGUgPSAwLCBoYXNoSGF5c3RhY2sgPSAwOworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRvcl9wLmggYi9xdGJh c2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5naXRlcmF0b3JfcC5oCitpbmRleCAyMTk1ODliNmU0 Li4xZDBjNjZjYzc4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmlu Z2l0ZXJhdG9yX3AuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZ2l0ZXJh dG9yX3AuaAorQEAgLTYxLDYgKzYxLDggQEAgY2xhc3MgUVN0cmluZ0l0ZXJhdG9yCisgeworICAg ICBRU3RyaW5nOjpjb25zdF9pdGVyYXRvciBpLCBwb3MsIGU7CisgICAgIFFfU1RBVElDX0FTU0VS VCgoc3RkOjppc19zYW1lPFFTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yLCBjb25zdCBRQ2hhciAqPjo6 dmFsdWUpKTsKKysgICAgc3RhdGljIGJvb2wgbGVzcyhjb25zdCBRQ2hhciAqbGhzLCBjb25zdCBR Q2hhciAqcmhzKSBub2V4Y2VwdAorKyAgICB7IHJldHVybiBzdGQ6Omxlc3M8UVN0cmluZzo6Y29u c3RfaXRlcmF0b3I+e30obGhzLCByaHMpOyB9CisgcHVibGljOgorICAgICBleHBsaWNpdCBRU3Ry aW5nSXRlcmF0b3IoUVN0cmluZ1ZpZXcgc3RyaW5nLCBxc2l6ZXR5cGUgaWR4ID0gMCkKKyAgICAg ICAgIDogaShzdHJpbmcuYmVnaW4oKSksCitAQCAtOTUsNyArOTcsOCBAQCBwdWJsaWM6CisgCisg ICAgIGlubGluZSB2b2lkIHNldFBvc2l0aW9uKFFTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIHBvc2l0 aW9uKQorICAgICB7CistICAgICAgICBRX0FTU0VSVF9YKGkgPD0gcG9zaXRpb24gJiYgcG9zaXRp b24gPD0gZSwgUV9GVU5DX0lORk8sICJwb3NpdGlvbiBvdXQgb2YgYm91bmRzIik7CisrICAgICAg ICBRX0FTU0VSVF9YKCFsZXNzKHBvc2l0aW9uLCBpKSAmJiAhbGVzcyhlLCBwb3NpdGlvbiksCisr ICAgICAgICAgICAgICAgICAgIFFfRlVOQ19JTkZPLCAicG9zaXRpb24gb3V0IG9mIGJvdW5kcyIp OworICAgICAgICAgcG9zID0gcG9zaXRpb247CisgICAgIH0KKyAKK0BAIC0xMDMsNyArMTA2LDcg QEAgcHVibGljOgorIAorICAgICBpbmxpbmUgYm9vbCBoYXNOZXh0KCkgY29uc3QKKyAgICAgewor LSAgICAgICAgcmV0dXJuIHBvcyA8IGU7CisrICAgICAgICByZXR1cm4gbGVzcyhwb3MsIGUpOwor ICAgICB9CisgCisgICAgIGlubGluZSB2b2lkIGFkdmFuY2UoKQorQEAgLTEyMCwxNiArMTIzLDIw IEBAIHB1YmxpYzoKKyAgICAgeworICAgICAgICAgUV9BU1NFUlRfWChoYXNOZXh0KCksIFFfRlVO Q19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4dCBpdGVtIik7CisgCistICAgICAgICBpZiAo UV9VTkxJS0VMWSgocG9zKyspLT5pc0hpZ2hTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9V TkxJS0VMWSgocG9zKyspLT5pc0hpZ2hTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FT U0VSVChoYXNOZXh0KCkgJiYgcG9zLT5pc0xvd1N1cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICAr K3BvczsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICBpbmxpbmUgdWludCBwZWVrTmV4dFVu Y2hlY2tlZCgpIGNvbnN0CisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUX1goaGFzTmV4dCgpLCBR X0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIG5leHQgaXRlbSIpOworIAorLSAgICAgICAg aWYgKFFfVU5MSUtFTFkocG9zLT5pc0hpZ2hTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9V TkxJS0VMWShwb3MtPmlzSGlnaFN1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJU KGxlc3MocG9zICsgMSwgZSkgJiYgcG9zWzFdLmlzTG93U3Vycm9nYXRlKCkpOworICAgICAgICAg ICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KHBvc1swXSwgcG9zWzFdKTsKKysgICAg ICAgIH0KKyAKKyAgICAgICAgIHJldHVybiBwb3MtPnVuaWNvZGUoKTsKKyAgICAgfQorQEAgLTE1 NSw4ICsxNjIsMTAgQEAgcHVibGljOgorICAgICAgICAgUV9BU1NFUlRfWChoYXNOZXh0KCksIFFf RlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4dCBpdGVtIik7CisgCisgICAgICAgICBj b25zdCBRQ2hhciBjdXIgPSAqcG9zKys7CistICAgICAgICBpZiAoUV9VTkxJS0VMWShjdXIuaXNI aWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkoY3VyLmlzSGlnaFN1cnJv Z2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGhhc05leHQoKSAmJiBwb3MtPmlzTG93 U3Vycm9nYXRlKCkpOworICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0 KGN1ciwgKnBvcysrKTsKKysgICAgICAgIH0KKyAgICAgICAgIHJldHVybiBjdXIudW5pY29kZSgp OworICAgICB9CisgCitAQCAtMTY2LDcgKzE3NSw3IEBAIHB1YmxpYzoKKyAKKyAgICAgICAgIGNv bnN0IFFDaGFyIHVjID0gKnBvcysrOworICAgICAgICAgaWYgKFFfVU5MSUtFTFkodWMuaXNTdXJy b2dhdGUoKSkpIHsKKy0gICAgICAgICAgICBpZiAoUV9MSUtFTFkodWMuaXNIaWdoU3Vycm9nYXRl KCkgJiYgcG9zIDwgZSAmJiBwb3MtPmlzTG93U3Vycm9nYXRlKCkpKQorKyAgICAgICAgICAgIGlm IChRX0xJS0VMWSh1Yy5pc0hpZ2hTdXJyb2dhdGUoKSAmJiBoYXNOZXh0KCkgJiYgcG9zLT5pc0xv d1N1cnJvZ2F0ZSgpKSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVU b1VjczQodWMsICpwb3MrKyk7CisgICAgICAgICAgICAgcmV0dXJuIGludmFsaWRBczsKKyAgICAg ICAgIH0KK0BAIC0xNzgsNyArMTg3LDcgQEAgcHVibGljOgorIAorICAgICBpbmxpbmUgYm9vbCBo YXNQcmV2aW91cygpIGNvbnN0CisgICAgIHsKKy0gICAgICAgIHJldHVybiBwb3MgPiBpOworKyAg ICAgICAgcmV0dXJuIGxlc3MoaSwgcG9zKTsKKyAgICAgfQorIAorICAgICBpbmxpbmUgdm9pZCBy ZWNlZGUoKQorQEAgLTE5NiwxNiArMjA1LDIwIEBAIHB1YmxpYzoKKyAgICAgeworICAgICAgICAg UV9BU1NFUlRfWChoYXNQcmV2aW91cygpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBh IHByZXZpb3VzIGl0ZW0iKTsKKyAKKy0gICAgICAgIGlmIChRX1VOTElLRUxZKCgtLXBvcyktPmlz TG93U3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkoKC0tcG9zKS0+aXNMb3dT dXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VSVChoYXNQcmV2aW91cygpICYmIHBv c1stMV0uaXNIaWdoU3Vycm9nYXRlKCkpOworICAgICAgICAgICAgIC0tcG9zOworKyAgICAgICAg fQorICAgICB9CisgCisgICAgIGlubGluZSB1aW50IHBlZWtQcmV2aW91c1VuY2hlY2tlZCgpIGNv bnN0CisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUX1goaGFzUHJldmlvdXMoKSwgUV9GVU5DX0lO Rk8sICJpdGVyYXRvciBoYXNuJ3QgYSBwcmV2aW91cyBpdGVtIik7CisgCistICAgICAgICBpZiAo UV9VTkxJS0VMWShwb3NbLTFdLmlzTG93U3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5M SUtFTFkocG9zWy0xXS5pc0xvd1N1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJU KGxlc3MoaSArIDEsIHBvcykgJiYgcG9zWy0yXS5pc0hpZ2hTdXJyb2dhdGUoKSk7CisgICAgICAg ICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQocG9zWy0yXSwgcG9zWy0xXSk7Cisr ICAgICAgICB9CisgICAgICAgICByZXR1cm4gcG9zWy0xXS51bmljb2RlKCk7CisgICAgIH0KKyAK K0BAIC0yMzAsOCArMjQzLDEwIEBAIHB1YmxpYzoKKyAgICAgICAgIFFfQVNTRVJUX1goaGFzUHJl dmlvdXMoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBwcmV2aW91cyBpdGVtIik7 CisgCisgICAgICAgICBjb25zdCBRQ2hhciBjdXIgPSAqLS1wb3M7CistICAgICAgICBpZiAoUV9V TkxJS0VMWShjdXIuaXNMb3dTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWShj dXIuaXNMb3dTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VSVChoYXNQcmV2aW91 cygpICYmIHBvc1stMV0uaXNIaWdoU3Vycm9nYXRlKCkpOworICAgICAgICAgICAgIHJldHVybiBR Q2hhcjo6c3Vycm9nYXRlVG9VY3M0KCotLXBvcywgY3VyKTsKKysgICAgICAgIH0KKyAgICAgICAg IHJldHVybiBjdXIudW5pY29kZSgpOworICAgICB9CisgCitAQCAtMjQxLDcgKzI1Niw3IEBAIHB1 YmxpYzoKKyAKKyAgICAgICAgIGNvbnN0IFFDaGFyIHVjID0gKi0tcG9zOworICAgICAgICAgaWYg KFFfVU5MSUtFTFkodWMuaXNTdXJyb2dhdGUoKSkpIHsKKy0gICAgICAgICAgICBpZiAoUV9MSUtF TFkodWMuaXNMb3dTdXJyb2dhdGUoKSAmJiBwb3MgPiBpICYmIHBvc1stMV0uaXNIaWdoU3Vycm9n YXRlKCkpKQorKyAgICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5pc0xvd1N1cnJvZ2F0ZSgpICYm IGhhc1ByZXZpb3VzKCkgJiYgcG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSkpCisgICAgICAgICAg ICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KCotLXBvcywgdWMpOworICAgICAg ICAgICAgIHJldHVybiBpbnZhbGlkQXM7CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb3JlbGliL3RocmVhZC9xZnV0ZXhfcC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVh ZC9xZnV0ZXhfcC5oCitpbmRleCBmMjg3Yjc1MmQ3Li5lMjk0NTM3Nzg3IDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xZnV0ZXhfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGhyZWFkL3FmdXRleF9wLmgKK0BAIC01Miw2ICs1Miw3IEBACisgLy8KKyAKKyAjaW5j bHVkZSA8cWdsb2JhbC5oPgorKyNpbmNsdWRlIDxRdENvcmUvcXRzYW5faW1wbC5oPgorIAorIFFU X0JFR0lOX05BTUVTUEFDRQorIAorQEAgLTEwNiwxNiArMTA3LDEzIEBAIG5hbWVzcGFjZSBRdExp bnV4RnV0ZXggeworICAgICBpbmxpbmUgaW50IF9xX2Z1dGV4KGludCAqYWRkciwgaW50IG9wLCBp bnQgdmFsLCBxdWludHB0ciB2YWwyID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg KmFkZHIyID0gbnVsbHB0ciwgaW50IHZhbDMgPSAwKSBub2V4Y2VwdAorICAgICB7CistICAgICAg ICAvLyBBIGZ1dGV4IGNhbGwgZW5zdXJlcyB0b3RhbCBvcmRlcmluZyBvbiB0aGUgZnV0ZXggd29y ZHMKKy0gICAgICAgIC8vIChpbiBlaXRoZXIgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBjYWxs KS4gSW5zdHJ1Y3QgVFNBTiBhY2NvcmRpbmdseSwKKy0gICAgICAgIC8vIGFzIFRTQU4gZG9lcyBu b3QgdW5kZXJzdGFuZCB0aGUgZnV0ZXgoMikgc3lzY2FsbC4KKy0gICAgICAgIF9xX3RzYW5fcmVs ZWFzZShhZGRyLCBhZGRyMik7CisrICAgICAgICBRdFRzYW46OmZ1dGV4UmVsZWFzZShhZGRyLCBh ZGRyMik7CisgCisgICAgICAgICAvLyB3ZSB1c2UgX19OUl9mdXRleCBiZWNhdXNlIHNvbWUgbGli Y3MgKGxpa2UgQW5kcm9pZCdzIGJpb25pYykgZG9uJ3QKKyAgICAgICAgIC8vIHByb3ZpZGUgU1lT X2Z1dGV4IGV0Yy4KKyAgICAgICAgIGludCByZXN1bHQgPSBzeXNjYWxsKF9fTlJfZnV0ZXgsIGFk ZHIsIG9wIHwgRlVURVhfUFJJVkFURV9GTEFHLCB2YWwsIHZhbDIsIGFkZHIyLCB2YWwzKTsKKyAK Ky0gICAgICAgIF9xX3RzYW5fYWNxdWlyZShhZGRyLCBhZGRyMik7CisrICAgICAgICBRdFRzYW46 OmZ1dGV4QWNxdWlyZShhZGRyLCBhZGRyMik7CisgCisgICAgICAgICByZXR1cm4gcmVzdWx0Owor ICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguY3Bw IGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguY3BwCitpbmRleCAzMTBkMWNiMTRm Li43MDk3MTIyZDhlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0 ZXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5jcHAKK0BAIC0x NTIsNiArMTUyLDcgQEAgcHVibGljOgorIAorIC8qIQorICAgICBcZW51bSBRTXV0ZXg6OlJlY3Vy c2lvbk1vZGUKKysgICAgXG9ic29sZXRlIFVzZSBRUmVjdXJzaXZlTXV0ZXggdG8gY3JlYXRlIGEg cmVjdXJzaXZlIG11dGV4LgorIAorICAgICBcdmFsdWUgUmVjdXJzaXZlICBJbiB0aGlzIG1vZGUs IGEgdGhyZWFkIGNhbiBsb2NrIHRoZSBzYW1lIG11dGV4CisgICAgICAgICAgICAgICAgICAgICAg IG11bHRpcGxlIHRpbWVzIGFuZCB0aGUgbXV0ZXggd29uJ3QgYmUgdW5sb2NrZWQKK0BAIC0xNzMs NiArMTc0LDcgQEAgcHVibGljOgorIAorIC8qIQorICAgICBDb25zdHJ1Y3RzIGEgbmV3IG11dGV4 LiBUaGUgbXV0ZXggaXMgY3JlYXRlZCBpbiBhbiB1bmxvY2tlZCBzdGF0ZS4KKysgICAgXG9ic29s ZXRlIFVzZSBRUmVjdXJzaXZlTXV0ZXggdG8gY3JlYXRlIGEgcmVjdXJzaXZlIG11dGV4LgorIAor ICAgICBJZiBcYSBtb2RlIGlzIFFNdXRleDo6UmVjdXJzaXZlLCBhIHRocmVhZCBjYW4gbG9jayB0 aGUgc2FtZSBtdXRleAorICAgICBtdWx0aXBsZSB0aW1lcyBhbmQgdGhlIG11dGV4IHdvbid0IGJl IHVubG9ja2VkIHVudGlsIGEKK0BAIC0xOTcsNyArMTk5LDcgQEAgUU11dGV4OjpRTXV0ZXgoUmVj dXJzaW9uTW9kZSBtb2RlKQorIFFNdXRleDo6flFNdXRleCgpCisgeworICAgICBRTXV0ZXhEYXRh ICpkID0gZF9wdHIubG9hZFJlbGF4ZWQoKTsKKy0gICAgaWYgKGlzUmVjdXJzaXZlKCkpIHsKKysg ICAgaWYgKFFCYXNpY011dGV4Ojppc1JlY3Vyc2l2ZSgpKSB7CisgICAgICAgICBkZWxldGUgc3Rh dGljX2Nhc3Q8UVJlY3Vyc2l2ZU11dGV4UHJpdmF0ZSAqPihkKTsKKyAgICAgfSBlbHNlIGlmIChk KSB7CisgI2lmbmRlZiBRVF9MSU5VWF9GVVRFWAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29y ZWxpYi90aHJlYWQvcW11dGV4LmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5o CitpbmRleCA3M2M5ZTAwNjYzLi4xYmFlNTczYTAzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9j b3JlbGliL3RocmVhZC9xbXV0ZXguaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9x bXV0ZXguaAorQEAgLTQyLDYgKzQyLDcgQEAKKyAKKyAjaW5jbHVkZSA8UXRDb3JlL3FnbG9iYWwu aD4KKyAjaW5jbHVkZSA8UXRDb3JlL3FhdG9taWMuaD4KKysjaW5jbHVkZSA8UXRDb3JlL3F0c2Fu X2ltcGwuaD4KKyAjaW5jbHVkZSA8bmV3PgorIAorICNpZiBfX2hhc19pbmNsdWRlKDxjaHJvbm8+ KQorQEAgLTc3LDE5ICs3OCwzNyBAQCBwdWJsaWM6CisgCisgICAgIC8vIEJhc2ljTG9ja2FibGUg Y29uY2VwdAorICAgICBpbmxpbmUgdm9pZCBsb2NrKCkgUVRfTVVURVhfTE9DS19OT0VYQ0VQVCB7 CisrICAgICAgICBRdFRzYW46Om11dGV4UHJlTG9jayh0aGlzLCAwdSk7CisrCisgICAgICAgICBp ZiAoIWZhc3RUcnlMb2NrKCkpCisgICAgICAgICAgICAgbG9ja0ludGVybmFsKCk7CisrCisrICAg ICAgICBRdFRzYW46Om11dGV4UG9zdExvY2sodGhpcywgMHUsIDApOworICAgICB9CisgCisgICAg IC8vIEJhc2ljTG9ja2FibGUgY29uY2VwdAorICAgICBpbmxpbmUgdm9pZCB1bmxvY2soKSBub2V4 Y2VwdCB7CisgICAgICAgICBRX0FTU0VSVChkX3B0ci5sb2FkUmVsYXhlZCgpKTsgLy9tdXRleCBt dXN0IGJlIGxvY2tlZAorKworKyAgICAgICAgUXRUc2FuOjptdXRleFByZVVubG9jayh0aGlzLCAw dSk7CisrCisgICAgICAgICBpZiAoIWZhc3RUcnlVbmxvY2soKSkKKyAgICAgICAgICAgICB1bmxv Y2tJbnRlcm5hbCgpOworKworKyAgICAgICAgUXRUc2FuOjptdXRleFBvc3RVbmxvY2sodGhpcywg MHUpOworICAgICB9CisgCisgICAgIGJvb2wgdHJ5TG9jaygpIG5vZXhjZXB0IHsKKy0gICAgICAg IHJldHVybiBmYXN0VHJ5TG9jaygpOworKyAgICAgICAgdW5zaWduZWQgdHNhbkZsYWdzID0gUXRU c2FuOjpUcnlMb2NrOworKyAgICAgICAgUXRUc2FuOjptdXRleFByZUxvY2sodGhpcywgdHNhbkZs YWdzKTsKKysKKysgICAgICAgIGNvbnN0IGJvb2wgc3VjY2VzcyA9IGZhc3RUcnlMb2NrKCk7Cisr CisrICAgICAgICBpZiAoIXN1Y2Nlc3MpCisrICAgICAgICAgICAgdHNhbkZsYWdzIHw9IFF0VHNh bjo6VHJ5TG9ja0ZhaWxlZDsKKysgICAgICAgIFF0VHNhbjo6bXV0ZXhQb3N0TG9jayh0aGlzLCB0 c2FuRmxhZ3MsIDApOworKworKyAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgIH0KKyAKKyAg ICAgLy8gTG9ja2FibGUgY29uY2VwdAorQEAgLTEzNCw4ICsxNTMsMTYgQEAgcHVibGljOgorICNl bHNlCisgICAgIFFNdXRleCgpIHsgZF9wdHIuc3RvcmVSZWxheGVkKG51bGxwdHIpOyB9CisgI2Vu ZGlmCisrI2lmIFFUX0RFUFJFQ0FURURfU0lOQ0UoNSwxNSkKKyAgICAgZW51bSBSZWN1cnNpb25N b2RlIHsgTm9uUmVjdXJzaXZlLCBSZWN1cnNpdmUgfTsKKysgICAgUVRfREVQUkVDQVRFRF9WRVJT SU9OX1goNSwgMTUsICJVc2UgUVJlY3Vyc2l2ZU11dGV4IGluc3RlYWQgb2YgYSByZWN1cnNpdmUg UU11dGV4IikKKyAgICAgZXhwbGljaXQgUU11dGV4KFJlY3Vyc2lvbk1vZGUgbW9kZSk7CisrCisr ICAgIFFUX0RFUFJFQ0FURURfVkVSU0lPTl9YKDUsIDE1LCAiVXNlIFFSZWN1cnNpdmVNdXRleCBp bnN0ZWFkIG9mIGEgcmVjdXJzaXZlIFFNdXRleCIpCisrICAgIGJvb2wgaXNSZWN1cnNpdmUoKSBj b25zdCBub2V4Y2VwdAorKyAgICB7IHJldHVybiBRQmFzaWNNdXRleDo6aXNSZWN1cnNpdmUoKTsg fQorKyNlbmRpZgorKworICAgICB+UU11dGV4KCk7CisgCisgICAgIC8vIEJhc2ljTG9ja2FibGUg Y29uY2VwdAorQEAgLTE2Niw5ICsxOTMsNiBAQCBwdWJsaWM6CisgICAgIH0KKyAjZW5kaWYKKyAK Ky0gICAgYm9vbCBpc1JlY3Vyc2l2ZSgpIGNvbnN0IG5vZXhjZXB0CistICAgIHsgcmV0dXJuIFFC YXNpY011dGV4Ojppc1JlY3Vyc2l2ZSgpOyB9CistCisgcHJpdmF0ZToKKyAgICAgUV9ESVNBQkxF X0NPUFkoUU11dGV4KQorICAgICBmcmllbmQgY2xhc3MgUU11dGV4TG9ja2VyOworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXJlYWR3cml0ZWxvY2suY3BwIGIvcXRiYXNl L3NyYy9jb3JlbGliL3RocmVhZC9xcmVhZHdyaXRlbG9jay5jcHAKK2luZGV4IDhjMjg1MDdkNWEu LjlkZDg1MDMxMTYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FyZWFk d3JpdGVsb2NrLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xcmVhZHdyaXRl bG9jay5jcHAKK0BAIC0xNTUsNyArMTU1LDcgQEAgUVJlYWRXcml0ZUxvY2s6OlFSZWFkV3JpdGVM b2NrKFJlY3Vyc2lvbk1vZGUgcmVjdXJzaW9uTW9kZSkKKyAqLworIFFSZWFkV3JpdGVMb2NrOjp+ UVJlYWRXcml0ZUxvY2soKQorIHsKKy0gICAgYXV0byBkID0gZF9wdHIubG9hZFJlbGF4ZWQoKTsK KysgICAgYXV0byBkID0gZF9wdHIubG9hZEFjcXVpcmUoKTsKKyAgICAgaWYgKGlzVW5jb250ZW5k ZWRMb2NrZWQoZCkpIHsKKyAgICAgICAgIHFXYXJuaW5nKCJRUmVhZFdyaXRlTG9jazogZGVzdHJv eWluZyBsb2NrZWQgUVJlYWRXcml0ZUxvY2siKTsKKyAgICAgICAgIHJldHVybjsKK0BAIC00NDUs NyArNDQ1LDcgQEAgdm9pZCBRUmVhZFdyaXRlTG9jazo6dW5sb2NrKCkKKyAvKiEgXGludGVybmFs ICBIZWxwZXIgZm9yIFFXYWl0Q29uZGl0aW9uOjp3YWl0ICovCisgUVJlYWRXcml0ZUxvY2s6OlN0 YXRlRm9yV2FpdENvbmRpdGlvbiBRUmVhZFdyaXRlTG9jazo6c3RhdGVGb3JXYWl0Q29uZGl0aW9u KCkgY29uc3QKKyB7CistICAgIFFSZWFkV3JpdGVMb2NrUHJpdmF0ZSAqZCA9IGRfcHRyLmxvYWRS ZWxheGVkKCk7CisrICAgIFFSZWFkV3JpdGVMb2NrUHJpdmF0ZSAqZCA9IGRfcHRyLmxvYWRBY3F1 aXJlKCk7CisgICAgIHN3aXRjaCAocXVpbnRwdHIoZCkgJiBTdGF0ZU1hc2spIHsKKyAgICAgY2Fz ZSBTdGF0ZUxvY2tlZEZvclJlYWQ6IHJldHVybiBMb2NrZWRGb3JSZWFkOworICAgICBjYXNlIFN0 YXRlTG9ja2VkRm9yV3JpdGU6IHJldHVybiBMb2NrZWRGb3JXcml0ZTsKK0BAIC00NTMsNiArNDUz LDcgQEAgUVJlYWRXcml0ZUxvY2s6OlN0YXRlRm9yV2FpdENvbmRpdGlvbiBRUmVhZFdyaXRlTG9j azo6c3RhdGVGb3JXYWl0Q29uZGl0aW9uKCkgY28KKyAKKyAgICAgaWYgKCFkKQorICAgICAgICAg cmV0dXJuIFVubG9ja2VkOworKyAgICBjb25zdCBhdXRvIGxvY2sgPSBxdF9zY29wZWRfbG9jayhk LT5tdXRleCk7CisgICAgIGlmIChkLT53cml0ZXJDb3VudCA+IDEpCisgICAgICAgICByZXR1cm4g UmVjdXJzaXZlbHlMb2NrZWQ7CisgICAgIGVsc2UgaWYgKGQtPndyaXRlckNvdW50ID09IDEpCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xc2VtYXBob3JlLmNwcCBiL3F0 YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXNlbWFwaG9yZS5jcHAKK2luZGV4IDFkMDFmYzFiMjgu LjNlY2RlZTM3NDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FzZW1h cGhvcmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FzZW1hcGhvcmUuY3Bw CitAQCAtMzU0LDcgKzM1NCwxMiBAQCB2b2lkIFFTZW1hcGhvcmU6OnJlbGVhc2UoaW50IG4pCisg ICAgICAgICBxdWludHB0ciBubiA9IHVuc2lnbmVkKG4pOworICAgICAgICAgaWYgKGZ1dGV4SGFz V2FpdGVyQ291bnQpCisgICAgICAgICAgICAgbm4gfD0gcXVpbnQ2NChubikgPDwgMzI7ICAgIC8v IHRva2VuIGNvdW50IHJlcGxpY2F0ZWQgaW4gaGlnaCB3b3JkCistICAgICAgICBxdWludHB0ciBw cmV2VmFsdWUgPSB1LmZldGNoQW5kQWRkUmVsZWFzZShubik7CisrICAgICAgICBxdWludHB0ciBw cmV2VmFsdWUgPSB1LmxvYWRSZWxheGVkKCk7CisrICAgICAgICBxdWludHB0ciBuZXdWYWx1ZTsK KysgICAgICAgIGRvIHsgLy8gbG9vcCBqdXN0IHRvIGVuc3VyZSB0aGUgb3BlcmF0aW9ucyBhcmUg ZG9uZSBhdG9taWNhbGx5CisrICAgICAgICAgICAgbmV3VmFsdWUgPSBwcmV2VmFsdWUgKyBubjsK KysgICAgICAgICAgICBuZXdWYWx1ZSAmPSAoZnV0ZXhOZWVkc1dha2VBbGxCaXQgLSAxKTsKKysg ICAgICAgIH0gd2hpbGUgKCF1LnRlc3RBbmRTZXRSZWxlYXNlKHByZXZWYWx1ZSwgbmV3VmFsdWUs IHByZXZWYWx1ZSkpOworICAgICAgICAgaWYgKGZ1dGV4TmVlZHNXYWtlKHByZXZWYWx1ZSkpIHsK KyAjaWZkZWYgRlVURVhfT1AKKyAgICAgICAgICAgICBpZiAoZnV0ZXhIYXNXYWl0ZXJDb3VudCkg eworQEAgLTM3Niw3ICszODEsNiBAQCB2b2lkIFFTZW1hcGhvcmU6OnJlbGVhc2UoaW50IG4pCisg ICAgICAgICAgICAgICAgIHF1aW50MzIgb3BhcmcgPSAwOworICAgICAgICAgICAgICAgICBxdWlu dDMyIGNtcCA9IEZVVEVYX09QX0NNUF9ORTsKKyAgICAgICAgICAgICAgICAgcXVpbnQzMiBjbXBh cmcgPSAwOworLSAgICAgICAgICAgICAgICB1LmZldGNoQW5kQW5kUmVsZWFzZShmdXRleE5lZWRz V2FrZUFsbEJpdCAtIDEpOworICAgICAgICAgICAgICAgICBmdXRleFdha2VPcCgqZnV0ZXhMb3cz MigmdSksIG4sIElOVF9NQVgsICpmdXRleEhpZ2gzMigmdSksIEZVVEVYX09QKG9wLCBvcGFyZywg Y21wLCBjbXBhcmcpKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgIH0K K0BAIC0zODgsNyArMzkyLDYgQEAgdm9pZCBRU2VtYXBob3JlOjpyZWxlYXNlKGludCBuKQorICAg ICAgICAgICAgIC8vICAgIGl0cyBhY3F1aXNpdGlvbiBhbnl3YXksIHNvIGl0IGhhcyB0byB3YWl0 OworICAgICAgICAgICAgIC8vIDIpIGl0IGRpZCBub3Qgc2VlIHRoZSBuZXcgY291bnRlciB2YWx1 ZSwgaW4gd2hpY2ggY2FzZSBpdHMKKyAgICAgICAgICAgICAvLyAgICBmdXRleFdhaXQgd2lsbCBm YWlsLgorLSAgICAgICAgICAgIHUuZmV0Y2hBbmRBbmRSZWxlYXNlKGZ1dGV4TmVlZHNXYWtlQWxs Qml0IC0gMSk7CisgICAgICAgICAgICAgaWYgKGZ1dGV4SGFzV2FpdGVyQ291bnQpIHsKKyAgICAg ICAgICAgICAgICAgZnV0ZXhXYWtlQWxsKCpmdXRleExvdzMyKCZ1KSk7CisgICAgICAgICAgICAg ICAgIGZ1dGV4V2FrZUFsbCgqZnV0ZXhIaWdoMzIoJnUpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfcC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVh ZC9xdGhyZWFkX3AuaAoraW5kZXggYjJkMTYyOGU2ZS4uZjMyZjZmMDQ2MCAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmgKKysrKyBiL3F0YmFzZS9zcmMv Y29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmgKK0BAIC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgor ICAgICBpbnQgcmV0dXJuQ29kZTsKKyAKKyAgICAgdWludCBzdGFja1NpemU7CistICAgIFFUaHJl YWQ6OlByaW9yaXR5IHByaW9yaXR5OworKyAgICBzdGQ6OnVuZGVybHlpbmdfdHlwZTxRVGhyZWFk OjpQcmlvcml0eT46OnR5cGUgcHJpb3JpdHk7CisgCisgICAgIHN0YXRpYyBRVGhyZWFkICp0aHJl YWRGb3JJZChpbnQgaWQpOworIAorQEAgLTIxMyw2ICsyMTMsMTMgQEAgcHVibGljOgorICAgICAg ICAgICAgIFFDb3JlQXBwbGljYXRpb246Omluc3RhbmNlKCktPnBvc3RFdmVudChxX3B0ciwgbmV3 IFFFdmVudChRRXZlbnQ6OlF1aXQpKTsKKyAgICAgICAgIH0KKyAgICAgfQorKworKyNpZm5kZWYg UV9PU19JTlRFR1JJVFkKKytwcml2YXRlOgorKyAgICAvLyBVc2VkIGluIFFUaHJlYWQoUHJpdmF0 ZSk6OnN0YXJ0IHRvIGF2b2lkIHJhY3kgYWNjZXNzIHRvIFFPYmplY3Q6Om9iamVjdE5hbWUsCisr ICAgIC8vIHVuc2V0IGFmdGVyd2FyZHMuIE9uIElOVEVHUklUWSB3ZSBzZXQgdGhlIHRocmVhZCBu YW1lIGJlZm9yZSBzdGFydGluZyBpdC4KKysgICAgUVN0cmluZyBvYmplY3ROYW1lOworKyNlbmRp ZgorIH07CisgCisgI2Vsc2UgLy8gUVRfQ09ORklHKHRocmVhZCkKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfdW5peC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3F0aHJlYWRfdW5peC5jcHAKK2luZGV4IDU2YThlMGEwMzguLjYxMDExN2E2NDAg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfdW5peC5jcHAK KysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF91bml4LmNwcAorQEAgLTE2 OSw4ICsxNjksNyBAQCBzdGF0aWMgdm9pZCBzZXRfdGhyZWFkX2RhdGEoUVRocmVhZERhdGEgKmRh dGEpCisgCisgc3RhdGljIHZvaWQgY2xlYXJfdGhyZWFkX2RhdGEoKQorIHsKKy0gICAgY3VycmVu dFRocmVhZERhdGEgPSBudWxscHRyOworLSAgICBwdGhyZWFkX3NldHNwZWNpZmljKGN1cnJlbnRf dGhyZWFkX2RhdGFfa2V5LCBudWxscHRyKTsKKysgICAgc2V0X3RocmVhZF9kYXRhKG51bGxwdHIp OworIH0KKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK0BAIC0yOTYsNyArMjk1LDcgQEAgdm9p ZCAqUVRocmVhZFByaXZhdGU6OnN0YXJ0KHZvaWQgKmFyZykKKyAgICAgICAgICAgICBRTXV0ZXhM b2NrZXIgbG9ja2VyKCZ0aHItPmRfZnVuYygpLT5tdXRleCk7CisgCisgICAgICAgICAgICAgLy8g ZG8gd2UgbmVlZCB0byByZXNldCB0aGUgdGhyZWFkIHByaW9yaXR5PworLSAgICAgICAgICAgIGlm IChpbnQodGhyLT5kX2Z1bmMoKS0+cHJpb3JpdHkpICYgVGhyZWFkUHJpb3JpdHlSZXNldEZsYWcp IHsKKysgICAgICAgICAgICBpZiAodGhyLT5kX2Z1bmMoKS0+cHJpb3JpdHkgJiBUaHJlYWRQcmlv cml0eVJlc2V0RmxhZykgeworICAgICAgICAgICAgICAgICB0aHItPmRfZnVuYygpLT5zZXRQcmlv cml0eShRVGhyZWFkOjpQcmlvcml0eSh0aHItPmRfZnVuYygpLT5wcmlvcml0eSAmIH5UaHJlYWRQ cmlvcml0eVJlc2V0RmxhZykpOworICAgICAgICAgICAgIH0KKyAKK0BAIC0zMTYsMTAgKzMxNSwx MCBAQCB2b2lkICpRVGhyZWFkUHJpdmF0ZTo6c3RhcnQodm9pZCAqYXJnKQorICAgICAgICAgICAg IC8vIFNldHMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLiBXZSBjYW4gb25seSBkbyB0 aGlzCisgICAgICAgICAgICAgLy8gd2hlbiB0aGUgdGhyZWFkIGlzIHN0YXJ0aW5nLCBhcyB3ZSBk b24ndCBoYXZlIGEgY3Jvc3MKKyAgICAgICAgICAgICAvLyBwbGF0Zm9ybSB3YXkgb2Ygc2V0dGlu ZyB0aGUgbmFtZSBvZiBhbiBhcmJpdHJhcnkgdGhyZWFkLgorLSAgICAgICAgICAgIGlmIChRX0xJ S0VMWSh0aHItPm9iamVjdE5hbWUoKS5pc0VtcHR5KCkpKQorKyAgICAgICAgICAgIGlmIChRX0xJ S0VMWSh0aHItPmRfZnVuYygpLT5vYmplY3ROYW1lLmlzRW1wdHkoKSkpCisgICAgICAgICAgICAg ICAgIHNldEN1cnJlbnRUaHJlYWROYW1lKHRoci0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSk7 CisgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICBzZXRDdXJyZW50VGhyZWFkTmFt ZSh0aHItPm9iamVjdE5hbWUoKS50b0xvY2FsOEJpdCgpKTsKKysgICAgICAgICAgICAgICAgc2V0 Q3VycmVudFRocmVhZE5hbWUoc3RkOjpleGNoYW5nZSh0aHItPmRfZnVuYygpLT5vYmplY3ROYW1l LCB7fSkudG9Mb2NhbDhCaXQoKSk7CisgICAgICAgICB9CisgI2VuZGlmCisgCitAQCAtNjcxLDcg KzY3MCw3IEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJpb3JpdHkpCisgICAgICAg ICAgICAgICAgIC8vIGNvdWxkIG5vdCBzZXQgc2NoZWR1bGluZyBoaW50cywgZmFsbGJhY2sgdG8g aW5oZXJpdGluZyB0aGVtCisgICAgICAgICAgICAgICAgIC8vIHdlJ2xsIHRyeSBhZ2FpbiBmcm9t IGluc2lkZSB0aGUgdGhyZWFkCisgICAgICAgICAgICAgICAgIHB0aHJlYWRfYXR0cl9zZXRpbmhl cml0c2NoZWQoJmF0dHIsIFBUSFJFQURfSU5IRVJJVF9TQ0hFRCk7CistICAgICAgICAgICAgICAg IGQtPnByaW9yaXR5ID0gUHJpb3JpdHkocHJpb3JpdHkgfCBUaHJlYWRQcmlvcml0eVJlc2V0Rmxh Zyk7CisrICAgICAgICAgICAgICAgIGQtPnByaW9yaXR5ID0gc3RhdGljX2Nhc3Q8c3RkOjp1bmRl cmx5aW5nX3R5cGU8UVRocmVhZDo6UHJpb3JpdHk+Ojp0eXBlPihwcmlvcml0eSkgfCBUaHJlYWRQ cmlvcml0eVJlc2V0RmxhZzsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICB9CitAQCAtNzAyLDcgKzcwMSwxMCBAQCB2b2lkIFFUaHJlYWQ6OnN0YXJ0KFByaW9y aXR5IHByaW9yaXR5KQorICAgICAgICAgcHRocmVhZF9hdHRyX3NldHRocmVhZG5hbWUoJmF0dHIs IG1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkpOworICAgICBlbHNlCisgICAgICAgICBwdGhyZWFk X2F0dHJfc2V0dGhyZWFkbmFtZSgmYXR0ciwgb2JqZWN0TmFtZSgpLnRvTG9jYWw4Qml0KCkpOwor KyNlbHNlCisrICAgIGQtPm9iamVjdE5hbWUgPSBvYmplY3ROYW1lKCk7CisgI2VuZGlmCisrCisg ICAgIHB0aHJlYWRfdCB0aHJlYWRJZDsKKyAgICAgaW50IGNvZGUgPSBwdGhyZWFkX2NyZWF0ZSgm dGhyZWFkSWQsICZhdHRyLCBRVGhyZWFkUHJpdmF0ZTo6c3RhcnQsIHRoaXMpOworICAgICBpZiAo Y29kZSA9PSBFUEVSTSkgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQv cXRocmVhZF93aW4uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3dpbi5j cHAKK2luZGV4IGJjNzBlMzE3OGEuLjRlNzY5NzI0OTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfd2luLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGli L3RocmVhZC9xdGhyZWFkX3dpbi5jcHAKK0BAIC0zOTQsMTAgKzM5NCw5IEBAIHVuc2lnbmVkIGlu dCBfX3N0ZGNhbGwgUVRfRU5TVVJFX1NUQUNLX0FMSUdORURfRk9SX1NTRSBRVGhyZWFkUHJpdmF0 ZTo6c3RhcnQodm9pCisgCisgI2lmICFkZWZpbmVkKFFUX05PX0RFQlVHKSAmJiBkZWZpbmVkKFFf Q0NfTVNWQykgJiYgIWRlZmluZWQoUV9PU19XSU5SVCkKKyAgICAgLy8gc2V0cyB0aGUgbmFtZSBv ZiB0aGUgY3VycmVudCB0aHJlYWQuCistICAgIFFCeXRlQXJyYXkgb2JqZWN0TmFtZSA9IHRoci0+ b2JqZWN0TmFtZSgpLnRvTG9jYWw4Qml0KCk7CistICAgIHF0X3NldF90aHJlYWRfbmFtZShIQU5E TEUoLTEpLAorLSAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0TmFtZS5pc0VtcHR5KCkgPwor LSAgICAgICAgICAgICAgICAgICAgICAgdGhyLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpIDog b2JqZWN0TmFtZS5jb25zdERhdGEoKSk7CisrICAgIHF0X3NldF90aHJlYWRfbmFtZShIQU5ETEUo LTEpLCB0aHItPmRfZnVuYygpLT5vYmplY3ROYW1lLmlzRW1wdHkoKQorKyAgICAgICAgICAgICAg ICAgICAgICAgID8gdGhyLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpCisrICAgICAgICAgICAg ICAgICAgICAgICAgOiBzdGQ6OmV4Y2hhbmdlKHRoci0+ZF9mdW5jKCktPm9iamVjdE5hbWUsIHt9 KS50b0xvY2FsOEJpdCgpLmNvbnN0RGF0YSgpKTsKKyAjZW5kaWYKKyAKKyAgICAgZW1pdCB0aHIt PnN0YXJ0ZWQoUVRocmVhZDo6UVByaXZhdGVTaWduYWwoKSk7CitAQCAtNTAzLDYgKzUwMiw3IEBA IHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJpb3JpdHkpCisgICAgIGlmIChkLT5ydW5u aW5nKQorICAgICAgICAgcmV0dXJuOworIAorKyAgICBkLT5vYmplY3ROYW1lID0gb2JqZWN0TmFt ZSgpOworICAgICBkLT5ydW5uaW5nID0gdHJ1ZTsKKyAgICAgZC0+ZmluaXNoZWQgPSBmYWxzZTsK KyAgICAgZC0+ZXhpdGVkID0gZmFsc2U7CitAQCAtNTQ4LDcgKzU0OCw3IEBAIHZvaWQgUVRocmVh ZDo6c3RhcnQoUHJpb3JpdHkgcHJpb3JpdHkpCisgCisgICAgIGludCBwcmlvOworICAgICBkLT5w cmlvcml0eSA9IHByaW9yaXR5OworLSAgICBzd2l0Y2ggKGQtPnByaW9yaXR5KSB7CisrICAgIHN3 aXRjaCAocHJpb3JpdHkpIHsKKyAgICAgY2FzZSBJZGxlUHJpb3JpdHk6CisgICAgICAgICBwcmlv ID0gVEhSRUFEX1BSSU9SSVRZX0lETEU7CisgICAgICAgICBicmVhazsKK0BAIC02ODYsNyArNjg2 LDcgQEAgdm9pZCBRVGhyZWFkUHJpdmF0ZTo6c2V0UHJpb3JpdHkoUVRocmVhZDo6UHJpb3JpdHkg dGhyZWFkUHJpb3JpdHkpCisgCisgICAgIGludCBwcmlvOworICAgICBwcmlvcml0eSA9IHRocmVh ZFByaW9yaXR5OworLSAgICBzd2l0Y2ggKHByaW9yaXR5KSB7CisrICAgIHN3aXRjaCAodGhyZWFk UHJpb3JpdHkpIHsKKyAgICAgY2FzZSBRVGhyZWFkOjpJZGxlUHJpb3JpdHk6CisgICAgICAgICBw cmlvID0gVEhSRUFEX1BSSU9SSVRZX0lETEU7CisgICAgICAgICBicmVhazsKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0c2FuX2ltcGwuaCBiL3F0YmFzZS9zcmMvY29y ZWxpYi90aHJlYWQvcXRzYW5faW1wbC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw MDAwMDAwMC4uNTgwYTczOGI5MQorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRiYXNlL3NyYy9jb3Jl bGliL3RocmVhZC9xdHNhbl9pbXBsLmgKK0BAIC0wLDAgKzEsMTE1IEBACisrLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbi4K KysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgS2xhcsOkbHZkYWxlbnMgRGF0YWtvbnN1bHQgQUIsIGEg S0RBQiBHcm91cCBjb21wYW55LCBpbmZvQGtkYWIuY29tLCBhdXRob3IgR2l1c2VwcGUgRCdBbmdl bG8gPGdpdXNlcHBlLmRhbmdlbG9Aa2RhYi5jb20+CisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cu cXQuaW8vbGljZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0Q29y ZSBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpM R1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBob2xkaW5n IHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBh Y2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQg d2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3 aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdl ZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoqIGFuZCBj b25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVy dGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3 LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRh dGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4g dGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93 aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cworKyoqIHdpbGwgYmUgbWV0OiBodHRw czovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCisrKioKKysqKiBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBt YXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorKyoqIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwK KysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92 ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBl YXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNs dWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9s bG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworKworKyNpZm5kZWYgUVRTQU5fSU1QTF9ICisrI2RlZmluZSBRVFNB Tl9JTVBMX0gKKysKKysjaW5jbHVkZSA8UXRDb3JlL3FnbG9iYWwuaD4KKysKKysjaWYgKF9faGFz X2ZlYXR1cmUodGhyZWFkX3Nhbml0aXplcikgfHwgZGVmaW5lZChfX1NBTklUSVpFX1RIUkVBRF9f KSkgJiYgX19oYXNfaW5jbHVkZSg8c2FuaXRpemVyL3RzYW5faW50ZXJmYWNlLmg+KQorKyMgIGRl ZmluZSBRVF9CVUlMRElOR19VTkRFUl9UU0FOCisrIyAgaW5jbHVkZSA8c2FuaXRpemVyL3RzYW5f aW50ZXJmYWNlLmg+CisrI2VuZGlmCisrCisrUVRfQkVHSU5fTkFNRVNQQUNFCisrCisrbmFtZXNw YWNlIFF0VHNhbiB7CisrI2lmZGVmIFFUX0JVSUxESU5HX1VOREVSX1RTQU4KKytpbmxpbmUgdm9p ZCBmdXRleEFjcXVpcmUodm9pZCAqYWRkciwgdm9pZCAqYWRkcjIgPSBudWxscHRyKQorK3sKKysg ICAgLy8gQSBmdXRleCBjYWxsIGVuc3VyZXMgdG90YWwgb3JkZXJpbmcgb24gdGhlIGZ1dGV4IHdv cmRzCisrICAgIC8vIChpbiBlaXRoZXIgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBjYWxsKS4g SW5zdHJ1Y3QgVFNBTiBhY2NvcmRpbmdseSwKKysgICAgLy8gYXMgVFNBTiBkb2VzIG5vdCB1bmRl cnN0YW5kIHRoZSBmdXRleCgyKSBzeXNjYWxsIChvciBlcXVpdmFsZW50KS4KKysgICAgOjpfX3Rz YW5fYWNxdWlyZShhZGRyKTsKKysgICAgaWYgKGFkZHIyKQorKyAgICAgICAgOjpfX3RzYW5fYWNx dWlyZShhZGRyMik7CisrfQorKworK2lubGluZSB2b2lkIGZ1dGV4UmVsZWFzZSh2b2lkICphZGRy LCB2b2lkICphZGRyMiA9IG51bGxwdHIpCisreworKyAgICBpZiAoYWRkcjIpCisrICAgICAgICA6 Ol9fdHNhbl9yZWxlYXNlKGFkZHIyKTsKKysgICAgOjpfX3RzYW5fcmVsZWFzZShhZGRyKTsKKyt9 CisrCisraW5saW5lIHZvaWQgbXV0ZXhQcmVMb2NrKHZvaWQgKmFkZHIsIHVuc2lnbmVkIGZsYWdz KQorK3sKKysgICAgOjpfX3RzYW5fbXV0ZXhfcHJlX2xvY2soYWRkciwgZmxhZ3MpOworK30KKysK KytpbmxpbmUgdm9pZCBtdXRleFBvc3RMb2NrKHZvaWQgKmFkZHIsIHVuc2lnbmVkIGZsYWdzLCBp bnQgcmVjdXJzaW9uKQorK3sKKysgICAgOjpfX3RzYW5fbXV0ZXhfcG9zdF9sb2NrKGFkZHIsIGZs YWdzLCByZWN1cnNpb24pOworK30KKysKKytpbmxpbmUgdm9pZCBtdXRleFByZVVubG9jayh2b2lk ICphZGRyLCB1bnNpZ25lZCBmbGFncykKKyt7CisrICAgIDo6X190c2FuX211dGV4X3ByZV91bmxv Y2soYWRkciwgZmxhZ3MpOworK30KKysKKytpbmxpbmUgdm9pZCBtdXRleFBvc3RVbmxvY2sodm9p ZCAqYWRkciwgdW5zaWduZWQgZmxhZ3MpCisreworKyAgICA6Ol9fdHNhbl9tdXRleF9wb3N0X3Vu bG9jayhhZGRyLCBmbGFncyk7CisrfQorKworK2VudW0gOiB1bnNpZ25lZCB7CisrICAgIE11dGV4 V3JpdGVSZWVudHJhbnQgPSA6Ol9fdHNhbl9tdXRleF93cml0ZV9yZWVudHJhbnQsCisrICAgIFRy eUxvY2sgPSA6Ol9fdHNhbl9tdXRleF90cnlfbG9jaywKKysgICAgVHJ5TG9ja0ZhaWxlZCA9IDo6 X190c2FuX211dGV4X3RyeV9sb2NrX2ZhaWxlZCwKKyt9OworKyNlbHNlCisraW5saW5lIHZvaWQg ZnV0ZXhBY3F1aXJlKHZvaWQgKiwgdm9pZCAqID0gbnVsbHB0cikge30KKytpbmxpbmUgdm9pZCBm dXRleFJlbGVhc2Uodm9pZCAqLCB2b2lkICogPSBudWxscHRyKSB7fQorKworK2VudW0gOiB1bnNp Z25lZCB7CisrICAgIE11dGV4V3JpdGVSZWVudHJhbnQsCisrICAgIFRyeUxvY2ssCisrICAgIFRy eUxvY2tGYWlsZWQsCisrfTsKKytpbmxpbmUgdm9pZCBtdXRleFByZUxvY2sodm9pZCAqLCB1bnNp Z25lZCkge30KKytpbmxpbmUgdm9pZCBtdXRleFBvc3RMb2NrKHZvaWQgKiwgdW5zaWduZWQsIGlu dCkge30KKytpbmxpbmUgdm9pZCBtdXRleFByZVVubG9jayh2b2lkICosIHVuc2lnbmVkKSB7fQor K2lubGluZSB2b2lkIG11dGV4UG9zdFVubG9jayh2b2lkICosIHVuc2lnbmVkKSB7fQorKyNlbmRp ZiAvLyBRVF9CVUlMRElOR19VTkRFUl9UU0FOCisrfSAvLyBuYW1lc3BhY2UgUXRUc2FuCisrCisr UVRfRU5EX05BTUVTUEFDRQorKworKyNlbmRpZiAvLyBRVFNBTl9JTVBMX0gKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3BwIGIvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcAoraW5kZXggODhi MDU4ZjQxMC4uMGYxZGE0ZGM5YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJl YWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJl YWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAKK0BAIC0yMTMsNyArMjEzLDcgQEAgYm9vbCBRV2Fp dENvbmRpdGlvbjo6d2FpdChRTXV0ZXggKm11dGV4LCBRRGVhZGxpbmVUaW1lciBkZWFkbGluZSkK KyB7CisgICAgIGlmICghIG11dGV4KQorICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICBpZiAo bXV0ZXgtPmlzUmVjdXJzaXZlKCkpIHsKKysgICAgaWYgKHN0YXRpY19jYXN0PFFCYXNpY011dGV4 ICo+KG11dGV4KS0+aXNSZWN1cnNpdmUoKSkgeworICAgICAgICAgcVdhcm5pbmcoIlFXYWl0Q29u ZGl0aW9uOiBjYW5ub3Qgd2FpdCBvbiByZWN1cnNpdmUgbXV0ZXhlcyIpOworICAgICAgICAgcmV0 dXJuIGZhbHNlOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUv cWRhdGV0aW1lLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3FkYXRldGltZS5jcHAKK2lu ZGV4IGVjMTI1NjllM2YuLjJjMGIwOTgwNzkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVs aWIvdGltZS9xZGF0ZXRpbWUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xZGF0 ZXRpbWUuY3BwCitAQCAtNDMsNiArNDMsNyBAQAorICNpZiBRVF9DT05GSUcoZGF0ZXRpbWVwYXJz ZXIpCisgI2luY2x1ZGUgInByaXZhdGUvcWRhdGV0aW1lcGFyc2VyX3AuaCIKKyAjZW5kaWYKKysj aW5jbHVkZSA8cHJpdmF0ZS9xbnVtZXJpY19wLmg+CisgCisgI2luY2x1ZGUgInFkYXRhc3RyZWFt LmgiCisgI2luY2x1ZGUgInFzZXQuaCIKK0BAIC0xNDI5LDkgKzE0MzAsMTEgQEAgUURhdGUgUURh dGU6OmFkZERheXMocWludDY0IG5kYXlzKSBjb25zdAorICAgICBpZiAoaXNOdWxsKCkpCisgICAg ICAgICByZXR1cm4gUURhdGUoKTsKKyAKKy0gICAgLy8gRHVlIHRvIGxpbWl0cyBvbiBtaW5KZCgp IGFuZCBtYXhKZCgpIHdlIGtub3cgdGhhdCBhbnkgb3ZlcmZsb3cKKy0gICAgLy8gd2lsbCBiZSBp bnZhbGlkIGFuZCBjYXVnaHQgYnkgZnJvbUp1bGlhbkRheSgpLgorLSAgICByZXR1cm4gZnJvbUp1 bGlhbkRheShqZCArIG5kYXlzKTsKKysgICAgcWludDY0IHI7CisrICAgIGlmIChRX1VOTElLRUxZ KGFkZF9vdmVyZmxvdyhqZCwgbmRheXMsICZyKSkpCisrICAgICAgICByZXR1cm4gUURhdGUoKTsK KysgICAgZWxzZQorKyAgICAgICAgcmV0dXJuIGZyb21KdWxpYW5EYXkocik7CisgfQorIAorIC8q IQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZS5jcHAgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUuY3BwCitpbmRleCAwMzA5ZTQzZTUyLi4z ZDQ1MTY5NmExIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25l LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lLmNwcAorQEAgLTEs NiArMSw2IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorLSoqIENvcHlyaWdodCAoQykg MjAxMyBKb2huIExheXQgPGpsYXl0QGtkZS5vcmc+CisrKiogQ29weXJpZ2h0IChDKSAyMDIwIEpv aG4gTGF5dCA8amxheXRAa2RlLm9yZz4KKyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9s aWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRDb3JlIG1vZHVs ZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC05NzUsOSArOTc1LDE1IEBAIFFMaXN0PFFCeXRlQXJy YXk+IFFUaW1lWm9uZTo6d2luZG93c0lkVG9JYW5hSWRzKGNvbnN0IFFCeXRlQXJyYXkgJndpbmRv d3NJZCwKKyB9CisgCisgI2lmbmRlZiBRVF9OT19EQVRBU1RSRUFNCisrLy8gSW52YWxpZCwgYXMg YW4gSUFOQSBJRDogdG9vIGxvbmcsIHN0YXJ0cyB3aXRoIC0gYW5kIGhhcyBvdGhlciBpbnZhbGlk IGNoYXJhY3RlcnMgaW4gaXQKKytzdGF0aWMgaW5saW5lIFFTdHJpbmcgaW52YWxpZElkKCkgeyBy ZXR1cm4gUVN0cmluZ0xpdGVyYWwoIi1ObyBUaW1lIFpvbmUgU3BlY2lmaWVkISIpOyB9CisrCisg UURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoUURhdGFTdHJlYW0gJmRzLCBjb25zdCBRVGltZVpvbmUg JnR6KQorIHsKKy0gICAgdHouZC0+c2VyaWFsaXplKGRzKTsKKysgICAgaWYgKHR6LmlzVmFsaWQo KSkKKysgICAgICAgIHR6LmQtPnNlcmlhbGl6ZShkcyk7CisrICAgIGVsc2UKKysgICAgICAgIGRz IDw8IGludmFsaWRJZCgpOworICAgICByZXR1cm4gZHM7CisgfQorIAorQEAgLTk4NSw3ICs5OTEs OSBAQCBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PihRRGF0YVN0cmVhbSAmZHMsIFFUaW1lWm9uZSAm dHopCisgeworICAgICBRU3RyaW5nIGlhbmFJZDsKKyAgICAgZHMgPj4gaWFuYUlkOworLSAgICBp ZiAoaWFuYUlkID09IFFMYXRpbjFTdHJpbmcoIk9mZnNldEZyb21VdGMiKSkgeworKyAgICBpZiAo aWFuYUlkID09IGludmFsaWRJZCgpKSB7CisrICAgICAgICB0eiA9IFFUaW1lWm9uZSgpOworKyAg ICB9IGVsc2UgaWYgKGlhbmFJZCA9PSBRTGF0aW4xU3RyaW5nKCJPZmZzZXRGcm9tVXRjIikpIHsK KyAgICAgICAgIGludCB1dGNPZmZzZXQ7CisgICAgICAgICBRU3RyaW5nIG5hbWU7CisgICAgICAg ICBRU3RyaW5nIGFiYnJldmlhdGlvbjsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIv dGltZS9xdGltZXpvbmVwcml2YXRlX3R6LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0 aW1lem9uZXByaXZhdGVfdHouY3BwCitpbmRleCBiMTYxMWQ3ZGRiLi5hN2E2YTcyY2NmIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lcHJpdmF0ZV90ei5jcHAK KysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZXByaXZhdGVfdHouY3BwCitA QCAtNDIsNiArNDIsNyBAQAorICNpbmNsdWRlICJxdGltZXpvbmUuaCIKKyAjaW5jbHVkZSAicXRp bWV6b25lcHJpdmF0ZV9wLmgiCisgI2luY2x1ZGUgInByaXZhdGUvcWxvY2FsZV90b29sc19wLmgi CisrI2luY2x1ZGUgInByaXZhdGUvcWxvY2tpbmdfcC5oIgorIAorICNpbmNsdWRlIDxRdENvcmUv UURhdGFTdHJlYW0+CisgI2luY2x1ZGUgPFF0Q29yZS9RRGF0ZVRpbWU+CitAQCAtNjIsNiArNjMs MTAgQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKysjaWYgUVRfQ09ORklHKGljdSkKKytz dGF0aWMgUUJhc2ljTXV0ZXggc19pY3VfbXV0ZXg7CisrI2VuZGlmCisrCisgLyoKKyAgICAgUHJp dmF0ZQorIAorQEAgLTY3MCw2ICs2NzUsOSBAQCBRVHpUaW1lWm9uZVByaXZhdGU6On5RVHpUaW1l Wm9uZVByaXZhdGUoKQorIAorIFFUelRpbWVab25lUHJpdmF0ZSAqUVR6VGltZVpvbmVQcml2YXRl OjpjbG9uZSgpIGNvbnN0CisgeworKyNpZiBRVF9DT05GSUcoaWN1KQorKyAgICBjb25zdCBhdXRv IGxvY2sgPSBxdF9zY29wZWRfbG9jayhzX2ljdV9tdXRleCk7CisrI2VuZGlmCisgICAgIHJldHVy biBuZXcgUVR6VGltZVpvbmVQcml2YXRlKCp0aGlzKTsKKyB9CisgCitAQCAtOTEzLDEyICs5MjEs MTQgQEAgUVN0cmluZyBRVHpUaW1lWm9uZVByaXZhdGU6OmRpc3BsYXlOYW1lKHFpbnQ2NCBhdE1T ZWNzU2luY2VFcG9jaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgUUxvY2FsZSAmbG9jYWxlKSBjb25zdAorIHsKKyAjaWYgUVRfQ09ORklHKGljdSkKKysg ICAgYXV0byBsb2NrID0gcXRfdW5pcXVlX2xvY2soc19pY3VfbXV0ZXgpOworICAgICBpZiAoIW1f aWN1KQorICAgICAgICAgbV9pY3UgPSBuZXcgUUljdVRpbWVab25lUHJpdmF0ZShtX2lkKTsKKyAg ICAgLy8gVE9ETyBzbWFsbCByaXNrIG1heSBub3QgbWF0Y2ggaWYgdHJhbiB0aW1lcyBkaWZmZXIg ZHVlIHRvIG91dGRhdGVkIGZpbGVzCisgICAgIC8vIFRPRE8gU29tZSB2YWxpZCBUWiBuYW1lcyBh cmUgbm90IHZhbGlkIElDVSBuYW1lcywgdXNlIHRyYW5zbGF0aW9uIHRhYmxlPworICAgICBpZiAo bV9pY3UtPmlzVmFsaWQoKSkKKyAgICAgICAgIHJldHVybiBtX2ljdS0+ZGlzcGxheU5hbWUoYXRN U2Vjc1NpbmNlRXBvY2gsIG5hbWVUeXBlLCBsb2NhbGUpOworKyAgICBsb2NrLnVubG9jaygpOwor ICNlbHNlCisgICAgIFFfVU5VU0VEKG5hbWVUeXBlKQorICAgICBRX1VOVVNFRChsb2NhbGUpCitA QCAtOTMyLDEyICs5NDIsMTQgQEAgUVN0cmluZyBRVHpUaW1lWm9uZVByaXZhdGU6OmRpc3BsYXlO YW1lKFFUaW1lWm9uZTo6VGltZVR5cGUgdGltZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IFFMb2NhbGUgJmxvY2FsZSkgY29uc3QKKyB7CisgI2lm IFFUX0NPTkZJRyhpY3UpCisrICAgIGF1dG8gbG9jayA9IHF0X3VuaXF1ZV9sb2NrKHNfaWN1X211 dGV4KTsKKyAgICAgaWYgKCFtX2ljdSkKKyAgICAgICAgIG1faWN1ID0gbmV3IFFJY3VUaW1lWm9u ZVByaXZhdGUobV9pZCk7CisgICAgIC8vIFRPRE8gc21hbGwgcmlzayBtYXkgbm90IG1hdGNoIGlm IHRyYW4gdGltZXMgZGlmZmVyIGR1ZSB0byBvdXRkYXRlZCBmaWxlcworICAgICAvLyBUT0RPIFNv bWUgdmFsaWQgVFogbmFtZXMgYXJlIG5vdCB2YWxpZCBJQ1UgbmFtZXMsIHVzZSB0cmFuc2xhdGlv biB0YWJsZT8KKyAgICAgaWYgKG1faWN1LT5pc1ZhbGlkKCkpCisgICAgICAgICByZXR1cm4gbV9p Y3UtPmRpc3BsYXlOYW1lKHRpbWVUeXBlLCBuYW1lVHlwZSwgbG9jYWxlKTsKKysgICAgbG9jay51 bmxvY2soKTsKKyAjZWxzZQorICAgICBRX1VOVVNFRCh0aW1lVHlwZSkKKyAgICAgUV9VTlVTRUQo bmFtZVR5cGUpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FhcnJheWRh dGEuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xYXJyYXlkYXRhLmgKK2luZGV4IGRjZDk1 OTI0YzEuLmQwMTczOWU3ZTYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMv cWFycmF5ZGF0YS5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWFycmF5ZGF0YS5o CitAQCAtNDIsNiArNDIsNyBAQAorIAorICNpbmNsdWRlIDxRdENvcmUvcXJlZmNvdW50Lmg+Cisg I2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxjc3RkaW50PgorIAorIFFUX0JFR0lOX05B TUVTUEFDRQorIAorQEAgLTU4LDE0ICs1OSwxNCBAQCBzdHJ1Y3QgUV9DT1JFX0VYUE9SVCBRQXJy YXlEYXRhCisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUKHNpemUgPT0gMAorICAgICAgICAgICAg ICAgICB8fCBvZmZzZXQgPCAwIHx8IHNpemVfdChvZmZzZXQpID49IHNpemVvZihRQXJyYXlEYXRh KSk7CistICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyICo+KHRoaXMpICsgb2Zm c2V0OworKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPiAocmVpbnRlcnBy ZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgb2Zmc2V0KTsKKyAgICAgfQorIAorICAgICBjb25z dCB2b2lkICpkYXRhKCkgY29uc3QKKyAgICAgeworICAgICAgICAgUV9BU1NFUlQoc2l6ZSA9PSAw CisgICAgICAgICAgICAgICAgIHx8IG9mZnNldCA8IDAgfHwgc2l6ZV90KG9mZnNldCkgPj0gc2l6 ZW9mKFFBcnJheURhdGEpKTsKKy0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0 IGNoYXIgKj4odGhpcykgKyBvZmZzZXQ7CisrICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz dDx2b2lkICo+IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykgKyBvZmZzZXQpOwor ICAgICB9CisgCisgICAgIC8vIFRoaXMgcmVmZXJzIHRvIGFycmF5IGRhdGEgbXV0YWJpbGl0eSwg bm90ICJoZWFkZXIgZGF0YSIgcmVwcmVzZW50ZWQgYnkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9x ZnJlZWxpc3RfcC5oCitpbmRleCA1YmEyM2IzNDRiLi45OTc0MTAyMTM2IDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FmcmVlbGlzdF9wLmgKKysrKyBiL3F0YmFzZS9zcmMv Y29yZWxpYi90b29scy9xZnJlZWxpc3RfcC5oCitAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIFFG cmVlTGlzdAorICAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgICAgICB4IC09IHNp emU7CisgICAgICAgICB9CistICAgICAgICBRX0FTU0VSVChmYWxzZSk7CisrICAgICAgICBRX1VO UkVBQ0hBQkxFKCk7CisgICAgICAgICByZXR1cm4gLTE7CisgICAgIH0KKyAKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcXZlcnNpb25udW1iZXIuaCBiL3F0YmFzZS9zcmMv Y29yZWxpYi90b29scy9xdmVyc2lvbm51bWJlci5oCitpbmRleCBkNDNiODZiYTUxLi4yODQzZjJi MDQzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3F2ZXJzaW9ubnVtYmVy LmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51bWJlci5oCitAQCAt MjczLDEwICsyNzMsMTAgQEAgcHVibGljOgorIAorICAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NP UkVfRVhQT1JUIFFTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKyAjaWYgUVRfU1RSSU5HVklFV19M RVZFTCA8IDIKKy0gICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUV9E RUNMX1BVUkVfRlVOQ1RJT04gUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhjb25zdCBRU3RyaW5n ICZzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsKKysgICAgUV9SRVFVSVJFRF9S RVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhjb25z dCBRU3RyaW5nICZzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsKKyAjZW5kaWYK Ky0gICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUV9ERUNMX1BVUkVf RlVOQ1RJT04gUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhRTGF0aW4xU3RyaW5nIHN0cmluZywg aW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworLSAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NP UkVfRVhQT1JUIHN0YXRpYyBRX0RFQ0xfUFVSRV9GVU5DVElPTiBRVmVyc2lvbk51bWJlciBmcm9t U3RyaW5nKFFTdHJpbmdWaWV3IHN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOwor KyAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRVmVyc2lvbk51bWJl ciBmcm9tU3RyaW5nKFFMYXRpbjFTdHJpbmcgc3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVs bHB0cik7CisrICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFWZXJz aW9uTnVtYmVyIGZyb21TdHJpbmcoUVN0cmluZ1ZpZXcgc3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4 ID0gbnVsbHB0cik7CisgCisgcHJpdmF0ZToKKyAjaWZuZGVmIFFUX05PX0RBVEFTVFJFQU0KK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNpbnRlZ3JhdG9yLmNwcCBiL3F0YmFzZS9z cmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3BwCitpbmRleCA1YjY2Y2U5NzFiLi4yOGEzYjBmZmVh IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9kYnVzL3FkYnVzaW50ZWdyYXRvci5jcHAKKysrKyBi L3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3BwCitAQCAtMTEzNSw3ICsxMTM1LDEz IEBAIHZvaWQgUURCdXNDb25uZWN0aW9uUHJpdmF0ZTo6Y2xvc2VDb25uZWN0aW9uKCkKKyAgICAg ICAgIH0KKyAgICAgfQorIAorLSAgICBxRGVsZXRlQWxsKHBlbmRpbmdDYWxscyk7CisrICAgIGZv ciAoYXV0byBpdCA9IHBlbmRpbmdDYWxscy5iZWdpbigpOyBpdCAhPSBwZW5kaW5nQ2FsbHMuZW5k KCk7ICsraXQpIHsKKysgICAgICAgIGF1dG8gY2FsbCA9ICppdDsKKysgICAgICAgIGlmICghY2Fs bC0+cmVmLmRlcmVmKCkpIHsKKysgICAgICAgICAgICBkZWxldGUgY2FsbDsKKysgICAgICAgIH0K KysgICAgfQorKyAgICBwZW5kaW5nQ2FsbHMuY2xlYXIoKTsKKyAKKyAgICAgLy8gRGlzY29ubmVj dCBhbGwgc2lnbmFscyBmcm9tIHNpZ25hbCBob29rcyBhbmQgZnJvbSB0aGUgb2JqZWN0IHRyZWUg dG8KKyAgICAgLy8gYXZvaWQgUU9iamVjdDo6ZGVzdHJveWVkIGJlaW5nIHNlbnQgdG8gZGJ1cyBk YWVtb24gdGhyZWFkIHdoaWNoIGhhcworQEAgLTI1ODQsNiArMjU5MCwxMSBAQCBRREJ1c0Nvbm5l Y3Rpb25Qcml2YXRlOjpmaW5kTWV0YU9iamVjdChjb25zdCBRU3RyaW5nICZzZXJ2aWNlLCBjb25z dCBRU3RyaW5nICZwYQorICAgICAgICAgaWYgKG1vKQorICAgICAgICAgICAgIHJldHVybiBtbzsK KyAgICAgfQorKyAgICBpZiAocGF0aC5pc0VtcHR5KCkpIHsKKysgICAgICAgIGVycm9yID0gUURC dXNFcnJvcihRREJ1c0Vycm9yOjpJbnZhbGlkT2JqZWN0UGF0aCwgUUxhdGluMVN0cmluZygiT2Jq ZWN0IHBhdGggY2Fubm90IGJlIGVtcHR5IikpOworKyAgICAgICAgbGFzdEVycm9yID0gZXJyb3I7 CisrICAgICAgICByZXR1cm4gbnVsbHB0cjsKKysgICAgfQorIAorICAgICAvLyBpbnRyb3NwZWN0 IHRoZSB0YXJnZXQgb2JqZWN0CisgICAgIFFEQnVzTWVzc2FnZSBtc2cgPSBRREJ1c01lc3NhZ2U6 OmNyZWF0ZU1ldGhvZENhbGwoc2VydmljZSwgcGF0aCwKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcCBiL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c21ldGFvYmpl Y3QuY3BwCitpbmRleCA1MjY1NTY4ZjQyLi43ZTlmMGYxYWNjIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9kYnVzL3FkYnVzbWV0YW9iamVjdC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1 c21ldGFvYmplY3QuY3BwCitAQCAtMjEwLDYgKzIxMCw5IEBAIFFEQnVzTWV0YU9iamVjdEdlbmVy YXRvcjo6ZmluZFR5cGUoY29uc3QgUUJ5dGVBcnJheSAmc2lnbmF0dXJlLAorICAgICAgICAgfSBl bHNlIGlmIChzaWduYXR1cmUgPT0gImF7c3N9IikgeworICAgICAgICAgICAgIHJlc3VsdC5uYW1l ID0gIlFNYXA8UVN0cmluZyxRU3RyaW5nPiI7CisgICAgICAgICAgICAgdHlwZSA9IHFNZXRhVHlw ZUlkPFFNYXA8UVN0cmluZywgUVN0cmluZz4gPigpOworKyAgICAgICAgfSBlbHNlIGlmIChzaWdu YXR1cmUgPT0gImFheSIpIHsKKysgICAgICAgICAgICByZXN1bHQubmFtZSA9ICJRQnl0ZUFycmF5 TGlzdCI7CisrICAgICAgICAgICAgdHlwZSA9IHFNZXRhVHlwZUlkPFFCeXRlQXJyYXlMaXN0Pigp OworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICByZXN1bHQubmFtZSA9ICJ7RC1CdXMg dHlwZSBcIiIgKyBzaWduYXR1cmUgKyAiXCJ9IjsKKyAgICAgICAgICAgICB0eXBlID0gcmVnaXN0 ZXJDb21wbGV4REJ1c1R5cGUocmVzdWx0Lm5hbWUpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Z3VpL2FjY2Vzc2libGUvcWFjY2Vzc2libGUuY3BwIGIvcXRiYXNlL3NyYy9ndWkvYWNjZXNzaWJs ZS9xYWNjZXNzaWJsZS5jcHAKK2luZGV4IGQ3MDViZmNjYjUuLjBjYWYzYzgwOGMgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlLmNwcAorKysrIGIvcXRi YXNlL3NyYy9ndWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAKK0BAIC01NCw2ICs1NCw3IEBA CisgI2luY2x1ZGUgPFF0Q29yZS9xZGVidWcuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3Fsb2dnaW5n Y2F0ZWdvcnkuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3FtZXRhb2JqZWN0Lmg+CisrI2luY2x1ZGUg PFF0Q29yZS9wcml2YXRlL3FtZXRhb2JqZWN0X3AuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3FoYXNo Lmg+CisgI2luY2x1ZGUgPHByaXZhdGUvcWZhY3Rvcnlsb2FkZXJfcC5oPgorIAorQEAgLTY4MSw2 ICs2ODIsMjUgQEAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vz c2libGVJbnRlcmZhY2UoUU9iamVjdCAqb2JqZWN0KQorICAgICAvLyBDcmVhdGUgYSBRQWNjZXNz aWJsZUludGVyZmFjZSBmb3IgdGhlIG9iamVjdCBjbGFzcy4gU3RhcnQgYnkgdGhlIG1vc3QKKyAg ICAgLy8gZGVyaXZlZCBjbGFzcyBhbmQgd2FsayB1cCB0aGUgY2xhc3MgaGllcmFyY2h5LgorICAg ICBjb25zdCBRTWV0YU9iamVjdCAqbW8gPSBvYmplY3QtPm1ldGFPYmplY3QoKTsKKysgICAgY29u c3QgYXV0byAqb2JqZWN0UHJpdiA9IFFPYmplY3RQcml2YXRlOjpnZXQob2JqZWN0KTsKKysgICAg LyoKKysgICAgIFdlIGRvIG5vdCB3YW50IHRvIGNhY2hlIGVhY2ggYW5kIGV2ZXJ5IFFNTCBtZXRh b2JqZWN0IChCdXR0b25fUU1MVFlQRV8xMjQsCisrICAgICBCdXR0b25fUU1MVFlQRV8xMjUsIGV0 Yy4pLiBUaG9zZSBkeW5hbWljIG1ldGFvYmplY3RzIHNob3VsZG4ndCBoYXZlIGFuCisrICAgICBh Y2Nlc3NpYmxlIGludGVyZmFjZSBpbiBhbnkgY2FzZS4gSW5zdGVhZCwgd2Ugc3RhcnQgdGhlIHdo b2xlIGNoZWNraW5nCisrICAgICB3aXRoIHRoZSBmaXJzdCBub24tZHluYW1pYyBtZXRhLW9iamVj dC4gVG8gYXZvaWQgcG90ZW50aWFsIHJlZ3Jlc3Npb25zCisrICAgICBpbiBvdGhlciBhcmVhcyBv ZiBRdCB0aGF0IGFsc28gdXNlIGR5bmFtaWMgbWV0YW9iamVjdHMsIHdlIG9ubHkgZG8gdGhpcwor KyAgICAgZm9yIG9iamVjdHMgdGhhdCBhcmUgUU1MLXJlbGF0ZWQgKGFwcHJveGltYXRlZCBieSBj aGVja2luZyB3aGV0aGVyIHRoZXkKKysgICAgIGhhdmUgZGRhdGEgc2V0KS4KKysgICAgKi8KKysg ICAgY29uc3QgYm9vbCBxbWxSZWxhdGVkID0gIW9iamVjdFByaXYtPmlzRGVsZXRpbmdDaGlsZHJl biAmJgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RQcml2LT5kZWNsYXJhdGl2 ZURhdGE7CisrICAgIHdoaWxlIChxbWxSZWxhdGVkICYmIG1vKSB7CisrICAgICAgICBhdXRvIG1v cCA9IFFNZXRhT2JqZWN0UHJpdmF0ZTo6Z2V0KG1vKTsKKysgICAgICAgIGlmICghbW9wIHx8ICEo bW9wLT5mbGFncyAmIER5bmFtaWNNZXRhT2JqZWN0KSkKKysgICAgICAgICAgICBicmVhazsKKysK KysgICAgICAgIG1vID0gbW8tPnN1cGVyQ2xhc3MoKTsKKysgICAgfTsKKyAgICAgd2hpbGUgKG1v KSB7CisgICAgICAgICBjb25zdCBRU3RyaW5nIGNuID0gUUxhdGluMVN0cmluZyhtby0+Y2xhc3NO YW1lKCkpOworIAorQEAgLTY5NiwxNCArNzE2LDE1IEBAIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpR QWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKFFPYmplY3QgKm9iamVjdCkKKyAg ICAgICAgIC8vIEZpbmQgYSBRQWNjZXNzaWJsZVBsdWdpbiAoZmFjdG9yeSkgZm9yIHRoZSBjbGFz cyBuYW1lLiBJZiB0aGVyZSdzCisgICAgICAgICAvLyBubyBlbnRyeSBpbiB0aGUgY2FjaGUgdHJ5 IHRvIGNyZWF0ZSBpdCB1c2luZyB0aGUgcGx1Z2luIGxvYWRlci4KKyAgICAgICAgIGlmICghcUFj Y2Vzc2libGVQbHVnaW5zKCktPmNvbnRhaW5zKGNuKSkgeworKyAgICAgICAgICAgIFFBY2Nlc3Np YmxlUGx1Z2luICpmYWN0b3J5ID0gbnVsbHB0cjsgLy8gMCBtZWFucyAibm8gcGx1Z2luIGZvdW5k Ii4gVGhpcyBpcyBjYWNoZWQgYXMgd2VsbC4KKyAgICAgICAgICAgICBjb25zdCBpbnQgaW5kZXgg PSBsb2FkZXIoKS0+aW5kZXhPZihjbik7CistICAgICAgICAgICAgaWYgKGluZGV4ICE9IC0xKSB7 CistICAgICAgICAgICAgICAgIFFBY2Nlc3NpYmxlUGx1Z2luICpmYWN0b3J5ID0gcW9iamVjdF9j YXN0PFFBY2Nlc3NpYmxlUGx1Z2luICo+KGxvYWRlcigpLT5pbnN0YW5jZShpbmRleCkpOworLSAg ICAgICAgICAgICAgICBxQWNjZXNzaWJsZVBsdWdpbnMoKS0+aW5zZXJ0KGNuLCBmYWN0b3J5KTsK Ky0gICAgICAgICAgICB9CisrICAgICAgICAgICAgaWYgKGluZGV4ICE9IC0xKQorKyAgICAgICAg ICAgICAgICBmYWN0b3J5ID0gcW9iamVjdF9jYXN0PFFBY2Nlc3NpYmxlUGx1Z2luICo+KGxvYWRl cigpLT5pbnN0YW5jZShpbmRleCkpOworKyAgICAgICAgICAgIHFBY2Nlc3NpYmxlUGx1Z2lucygp LT5pbnNlcnQoY24sIGZhY3RvcnkpOworICAgICAgICAgfQorIAorICAgICAgICAgLy8gQXQgdGhp cyBwb2ludCB0aGUgY2FjaGUgc2hvdWxkIGNvbnRhaW4gYSB2YWxpZCBmYWN0b3J5IHBvaW50ZXIg b3IgMDoKKysgICAgICAgIFFfQVNTRVJUKHFBY2Nlc3NpYmxlUGx1Z2lucygpLT5jb250YWlucyhj bikpOworICAgICAgICAgUUFjY2Vzc2libGVQbHVnaW4gKmZhY3RvcnkgPSBxQWNjZXNzaWJsZVBs dWdpbnMoKS0+dmFsdWUoY24pOworICAgICAgICAgaWYgKGZhY3RvcnkpIHsKKyAgICAgICAgICAg ICBRQWNjZXNzaWJsZUludGVyZmFjZSAqcmVzdWx0ID0gZmFjdG9yeS0+Y3JlYXRlKGNuLCBvYmpl Y3QpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3VyZS5qc29uIGIvcXRiYXNl L3NyYy9ndWkvY29uZmlndXJlLmpzb24KK2luZGV4IDFmMDg3OTVjNTcuLjEyYzk1NzQyZDIgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9jb25maWd1cmUuanNvbgorKysrIGIvcXRiYXNlL3Ny Yy9ndWkvY29uZmlndXJlLmpzb24KK0BAIC04MzQsNyArODM0LDggQEAKKyAgICAgICAgICAgICAg ICAgICAgICIvLyBlbWJlZGRlZCBkZXZpY2VzLCBhcmUgbm90IGludGVuZGVkIHRvIGJlIHVzZWQg dG9nZXRoZXIgd2l0aCBYLiBFR0wgc3VwcG9ydCIsCisgICAgICAgICAgICAgICAgICAgICAiLy8g aGFzIHRvIGJlIGRpc2FibGVkIGluIHBsdWdpbnMgbGlrZSB4Y2IgaW4gdGhpcyBjYXNlIHNpbmNl IHRoZSBuYXRpdmUgZGlzcGxheSwiLAorICAgICAgICAgICAgICAgICAgICAgIi8vIHdpbmRvdyBh bmQgcGl4bWFwIHR5cGVzIHdpbGwgYmUgZGlmZmVyZW50IHRoYW4gd2hhdCBhbiBYLWJhc2VkIHBs YXRmb3JtIiwKKy0gICAgICAgICAgICAgICAgICAgICIvLyBwbHVnaW4gd291bGQgZXhwZWN0LiIK KysgICAgICAgICAgICAgICAgICAgICIvLyBwbHVnaW4gd291bGQgZXhwZWN0LiIsCisrICAgICAg ICAgICAgICAgICAgICAiI2RlZmluZSBVU0VfWDExIgorICAgICAgICAgICAgICAgICBdLAorICAg ICAgICAgICAgICAgICAiaW5jbHVkZSI6IFsgIkVHTC9lZ2wuaCIsICJYMTEvWGxpYi5oIiBdLAor ICAgICAgICAgICAgICAgICAibWFpbiI6IFsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9p bWFnZS9xYm1waGFuZGxlci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xYm1waGFuZGxlci5j cHAKK2luZGV4IDk2ZjFlOGNiMWQuLjBlNzNiYmJkYjAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2d1aS9pbWFnZS9xYm1waGFuZGxlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3Fi bXBoYW5kbGVyLmNwcAorQEAgLTE1MCwxNiArMTUwLDQyIEBAIHN0YXRpYyBRRGF0YVN0cmVhbSAm b3BlcmF0b3I8PChRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIgJmJpKQorICAgICBy ZXR1cm4gczsKKyB9CisgCistc3RhdGljIGludCBjYWxjX3NoaWZ0KHVpbnQgbWFzaykKKytzdGF0 aWMgdWludCBjYWxjX3NoaWZ0KHVpbnQgbWFzaykKKyB7CistICAgIGludCByZXN1bHQgPSAwOwor LSAgICB3aGlsZSAobWFzayAmJiAhKG1hc2sgJiAxKSkgeworKyAgICB1aW50IHJlc3VsdCA9IDA7 CisrICAgIHdoaWxlICgobWFzayA+PSAweDEwMCkgfHwgKCEobWFzayAmIDEpICYmIG1hc2spKSB7 CisgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgIG1hc2sgPj49IDE7CisgICAgIH0KKyAgICAg cmV0dXJuIHJlc3VsdDsKKyB9CisgCisrc3RhdGljIHVpbnQgY2FsY19zY2FsZSh1aW50IGxvd19t YXNrKQorK3sKKysgICAgdWludCByZXN1bHQgPSA4OworKyAgICB3aGlsZSAobG93X21hc2sgJiYg cmVzdWx0KSB7CisrICAgICAgICByZXN1bHQtLTsKKysgICAgICAgIGxvd19tYXNrID4+PSAxOwor KyAgICB9CisrICAgIHJldHVybiByZXN1bHQ7CisrfQorKworK3N0YXRpYyBpbmxpbmUgdWludCBh cHBseV9zY2FsZSh1aW50IHZhbHVlLCB1aW50IHNjYWxlKQorK3sKKysgICAgaWYgKCEoc2NhbGUg JiAweDA3KSkgLy8gcmV0dXJuIGltbWVkaWF0ZWx5IGlmIHNjYWxlID09IDggb3IgMAorKyAgICAg ICAgcmV0dXJuIHZhbHVlOworKworKyAgICB1aW50IGZpbGxlZCA9IDggLSBzY2FsZTsKKysgICAg dWludCByZXN1bHQgPSB2YWx1ZSA8PCBzY2FsZTsKKysKKysgICAgZG8geworKyAgICAgICAgcmVz dWx0IHw9IHJlc3VsdCA+PiBmaWxsZWQ7CisrICAgICAgICBmaWxsZWQgPDw9IDE7CisrICAgIH0g d2hpbGUgKGZpbGxlZCA8IDgpOworKworKyAgICByZXR1cm4gcmVzdWx0OworK30KKysKKyBzdGF0 aWMgYm9vbCByZWFkX2RpYl9maWxlaGVhZGVyKFFEYXRhU3RyZWFtICZzLCBCTVBfRklMRUhEUiAm YmYpCisgeworICAgICAvLyByZWFkIEJNUCBmaWxlIGhlYWRlcgorQEAgLTIyMiwxNCArMjQ4LDE0 IEBAIHN0YXRpYyBib29sIHJlYWRfZGliX2JvZHkoUURhdGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9J TkZPSERSICZiaSwgcWludDY0IG9mZnNldCwKKyAgICAgdWludCBncmVlbl9tYXNrID0gMDsKKyAg ICAgdWludCBibHVlX21hc2sgPSAwOworICAgICB1aW50IGFscGhhX21hc2sgPSAwOworLSAgICBp bnQgcmVkX3NoaWZ0ID0gMDsKKy0gICAgaW50IGdyZWVuX3NoaWZ0ID0gMDsKKy0gICAgaW50IGJs dWVfc2hpZnQgPSAwOworLSAgICBpbnQgYWxwaGFfc2hpZnQgPSAwOworLSAgICBpbnQgcmVkX3Nj YWxlID0gMDsKKy0gICAgaW50IGdyZWVuX3NjYWxlID0gMDsKKy0gICAgaW50IGJsdWVfc2NhbGUg PSAwOworLSAgICBpbnQgYWxwaGFfc2NhbGUgPSAwOworKyAgICB1aW50IHJlZF9zaGlmdCA9IDA7 CisrICAgIHVpbnQgZ3JlZW5fc2hpZnQgPSAwOworKyAgICB1aW50IGJsdWVfc2hpZnQgPSAwOwor KyAgICB1aW50IGFscGhhX3NoaWZ0ID0gMDsKKysgICAgdWludCByZWRfc2NhbGUgPSAwOworKyAg ICB1aW50IGdyZWVuX3NjYWxlID0gMDsKKysgICAgdWludCBibHVlX3NjYWxlID0gMDsKKysgICAg dWludCBhbHBoYV9zY2FsZSA9IDA7CisgCisgICAgIGlmICghZC0+aXNTZXF1ZW50aWFsKCkpCisg ICAgICAgICBkLT5zZWVrKHN0YXJ0cG9zICsgQk1QX0ZJTEVIRFJfU0laRSArIGJpLmJpU2l6ZSk7 IC8vIGdvdG8gc3RhcnQgb2YgY29sb3JtYXAgb3IgbWFza3MKK0BAIC0zMDgsMTkgKzMzNCwxOSBA QCBzdGF0aWMgYm9vbCByZWFkX2RpYl9ib2R5KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5G T0hEUiAmYmksIHFpbnQ2NCBvZmZzZXQsCisgICAgICAgICByZWRfc2hpZnQgPSBjYWxjX3NoaWZ0 KHJlZF9tYXNrKTsKKyAgICAgICAgIGlmICgoKHJlZF9tYXNrID4+IHJlZF9zaGlmdCkgKyAxKSA9 PSAwKQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgICAgIHJlZF9zY2FsZSA9IDI1 NiAvICgocmVkX21hc2sgPj4gcmVkX3NoaWZ0KSArIDEpOworKyAgICAgICAgcmVkX3NjYWxlID0g Y2FsY19zY2FsZShyZWRfbWFzayA+PiByZWRfc2hpZnQpOworICAgICAgICAgZ3JlZW5fc2hpZnQg PSBjYWxjX3NoaWZ0KGdyZWVuX21hc2spOworICAgICAgICAgaWYgKCgoZ3JlZW5fbWFzayA+PiBn cmVlbl9zaGlmdCkgKyAxKSA9PSAwKQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAg ICAgIGdyZWVuX3NjYWxlID0gMjU2IC8gKChncmVlbl9tYXNrID4+IGdyZWVuX3NoaWZ0KSArIDEp OworKyAgICAgICAgZ3JlZW5fc2NhbGUgPSBjYWxjX3NjYWxlKGdyZWVuX21hc2sgPj4gZ3JlZW5f c2hpZnQpOworICAgICAgICAgYmx1ZV9zaGlmdCA9IGNhbGNfc2hpZnQoYmx1ZV9tYXNrKTsKKyAg ICAgICAgIGlmICgoKGJsdWVfbWFzayA+PiBibHVlX3NoaWZ0KSArIDEpID09IDApCisgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgYmx1ZV9zY2FsZSA9IDI1NiAvICgoYmx1ZV9t YXNrID4+IGJsdWVfc2hpZnQpICsgMSk7CisrICAgICAgICBibHVlX3NjYWxlID0gY2FsY19zY2Fs ZShibHVlX21hc2sgPj4gYmx1ZV9zaGlmdCk7CisgICAgICAgICBhbHBoYV9zaGlmdCA9IGNhbGNf c2hpZnQoYWxwaGFfbWFzayk7CisgICAgICAgICBpZiAoKChhbHBoYV9tYXNrID4+IGFscGhhX3No aWZ0KSArIDEpID09IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgYWxw aGFfc2NhbGUgPSAyNTYgLyAoKGFscGhhX21hc2sgPj4gYWxwaGFfc2hpZnQpICsgMSk7CisrICAg ICAgICBhbHBoYV9zY2FsZSA9IGNhbGNfc2NhbGUoYWxwaGFfbWFzayA+PiBhbHBoYV9zaGlmdCk7 CisgICAgIH0gZWxzZSBpZiAoY29tcCA9PSBCTVBfUkdCICYmIChuYml0cyA9PSAyNCB8fCBuYml0 cyA9PSAzMikpIHsKKyAgICAgICAgIGJsdWVfbWFzayA9IDB4MDAwMDAwZmY7CisgICAgICAgICBn cmVlbl9tYXNrID0gMHgwMDAwZmYwMDsKK0BAIC0zMjgsMTcgKzM1NCwxNSBAQCBzdGF0aWMgYm9v bCByZWFkX2RpYl9ib2R5KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAmYmksIHFp bnQ2NCBvZmZzZXQsCisgICAgICAgICBibHVlX3NoaWZ0ID0gMDsKKyAgICAgICAgIGdyZWVuX3No aWZ0ID0gODsKKyAgICAgICAgIHJlZF9zaGlmdCA9IDE2OworLSAgICAgICAgYmx1ZV9zY2FsZSA9 IGdyZWVuX3NjYWxlID0gcmVkX3NjYWxlID0gMTsKKysgICAgICAgIGJsdWVfc2NhbGUgPSBncmVl bl9zY2FsZSA9IHJlZF9zY2FsZSA9IDA7CisgICAgIH0gZWxzZSBpZiAoY29tcCA9PSBCTVBfUkdC ICYmIG5iaXRzID09IDE2KSB7CisgICAgICAgICBibHVlX21hc2sgPSAweDAwMWY7CisgICAgICAg ICBncmVlbl9tYXNrID0gMHgwM2UwOworICAgICAgICAgcmVkX21hc2sgPSAweDdjMDA7CisgICAg ICAgICBibHVlX3NoaWZ0ID0gMDsKKy0gICAgICAgIGdyZWVuX3NoaWZ0ID0gMjsKKy0gICAgICAg IHJlZF9zaGlmdCA9IDc7CistICAgICAgICByZWRfc2NhbGUgPSAxOworLSAgICAgICAgZ3JlZW5f c2NhbGUgPSAxOworLSAgICAgICAgYmx1ZV9zY2FsZSA9IDg7CisrICAgICAgICBncmVlbl9zaGlm dCA9IDU7CisrICAgICAgICByZWRfc2hpZnQgPSAxMDsKKysgICAgICAgIGJsdWVfc2NhbGUgPSBn cmVlbl9zY2FsZSA9IHJlZF9zY2FsZSA9IDM7CisgICAgIH0KKyAKKyAjaWYgMAorQEAgLTU0NCwx MCArNTY4LDEwIEBAIHN0YXRpYyBib29sIHJlYWRfZGliX2JvZHkoUURhdGFTdHJlYW0gJnMsIGNv bnN0IEJNUF9JTkZPSERSICZiaSwgcWludDY0IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg IGMgfD0gKih1Y2hhciopKGIrMik8PDE2OworICAgICAgICAgICAgICAgICBpZiAobmJpdHMgPiAy NCkKKyAgICAgICAgICAgICAgICAgICAgIGMgfD0gKih1Y2hhciopKGIrMyk8PDI0OworLSAgICAg ICAgICAgICAgICAqcCsrID0gcVJnYmEoKChjICYgcmVkX21hc2spID4+IHJlZF9zaGlmdCkgKiBy ZWRfc2NhbGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYyAm IGdyZWVuX21hc2spID4+IGdyZWVuX3NoaWZ0KSAqIGdyZWVuX3NjYWxlLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGMgJiBibHVlX21hc2spID4+IGJsdWVfc2hp ZnQpICogYmx1ZV9zY2FsZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdHJhbnNwID8gKChjICYgYWxwaGFfbWFzaykgPj4gYWxwaGFfc2hpZnQpICogYWxwaGFfc2Nh bGUgOiAweGZmKTsKKysgICAgICAgICAgICAgICAgKnArKyA9IHFSZ2JhKGFwcGx5X3NjYWxlKChj ICYgcmVkX21hc2spID4+IHJlZF9zaGlmdCwgcmVkX3NjYWxlKSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFwcGx5X3NjYWxlKChjICYgZ3JlZW5fbWFzaykgPj4gZ3JlZW5fc2hpZnQs IGdyZWVuX3NjYWxlKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5X3NjYWxl KChjICYgYmx1ZV9tYXNrKSA+PiBibHVlX3NoaWZ0LCBibHVlX3NjYWxlKSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRyYW5zcCA/IGFwcGx5X3NjYWxlKChjICYgYWxwaGFfbWFzaykg Pj4gYWxwaGFfc2hpZnQsIGFscGhhX3NjYWxlKSA6IDB4ZmYpOworICAgICAgICAgICAgICAgICBi ICs9IG5iaXRzLzg7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvZ3VpL2ltYWdlL3FpbWFnZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xaW1h Z2UuY3BwCitpbmRleCA3MTUyYWMxNjA3Li4wZGY3NzI1NjRjIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWlt YWdlLmNwcAorQEAgLTQ2OTQsNiArNDY5NCw4IEBAIFFJbWFnZSBRSW1hZ2U6OnNtb290aFNjYWxl ZChpbnQgdywgaW50IGgpIGNvbnN0IHsKKyBzdGF0aWMgUUltYWdlIHJvdGF0ZWQ5MChjb25zdCBR SW1hZ2UgJmltYWdlKQorIHsKKyAgICAgUUltYWdlIG91dChpbWFnZS5oZWlnaHQoKSwgaW1hZ2Uu d2lkdGgoKSwgaW1hZ2UuZm9ybWF0KCkpOworKyAgICBpZiAob3V0LmlzTnVsbCgpKQorKyAgICAg ICAgcmV0dXJuIG91dDsKKyAgICAgY29weU1ldGFkYXRhKCZvdXQsIGltYWdlKTsKKyAgICAgaWYg KGltYWdlLmNvbG9yQ291bnQoKSA+IDApCisgICAgICAgICBvdXQuc2V0Q29sb3JUYWJsZShpbWFn ZS5jb2xvclRhYmxlKCkpOworQEAgLTQ3MjIsNiArNDcyNCw4IEBAIHN0YXRpYyBRSW1hZ2Ugcm90 YXRlZDE4MChjb25zdCBRSW1hZ2UgJmltYWdlKQorICAgICAgICAgcmV0dXJuIGltYWdlLm1pcnJv cmVkKHRydWUsIHRydWUpOworIAorICAgICBRSW1hZ2Ugb3V0KGltYWdlLndpZHRoKCksIGltYWdl LmhlaWdodCgpLCBpbWFnZS5mb3JtYXQoKSk7CisrICAgIGlmIChvdXQuaXNOdWxsKCkpCisrICAg ICAgICByZXR1cm4gb3V0OworICAgICBjb3B5TWV0YWRhdGEoJm91dCwgaW1hZ2UpOworICAgICBp ZiAoaW1hZ2UuY29sb3JDb3VudCgpID4gMCkKKyAgICAgICAgIG91dC5zZXRDb2xvclRhYmxlKGlt YWdlLmNvbG9yVGFibGUoKSk7CitAQCAtNDczNCw2ICs0NzM4LDggQEAgc3RhdGljIFFJbWFnZSBy b3RhdGVkMTgwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgc3RhdGljIFFJbWFnZSByb3RhdGVkMjcw KGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgeworICAgICBRSW1hZ2Ugb3V0KGltYWdlLmhlaWdodCgp LCBpbWFnZS53aWR0aCgpLCBpbWFnZS5mb3JtYXQoKSk7CisrICAgIGlmIChvdXQuaXNOdWxsKCkp CisrICAgICAgICByZXR1cm4gb3V0OworICAgICBjb3B5TWV0YWRhdGEoJm91dCwgaW1hZ2UpOwor ICAgICBpZiAoaW1hZ2UuY29sb3JDb3VudCgpID4gMCkKKyAgICAgICAgIG91dC5zZXRDb2xvclRh YmxlKGltYWdlLmNvbG9yVGFibGUoKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2Vy bmVsL3FjdXJzb3IuY3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FjdXJzb3IuY3BwCitpbmRl eCBkNmNjYWZmOGVkLi40NTUwODgyNDFjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2Vy bmVsL3FjdXJzb3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWN1cnNvci5jcHAK K0BAIC0yNTEsNyArMjUxLDggQEAgdm9pZCBRQ3Vyc29yOjpzZXRQb3MoUVNjcmVlbiAqc2NyZWVu LCBpbnQgeCwgaW50IHkpCisgeworICAgICBpZiAoc2NyZWVuKSB7CisgICAgICAgICBpZiAoUVBs YXRmb3JtQ3Vyc29yICpjdXJzb3IgPSBzY3JlZW4tPmhhbmRsZSgpLT5jdXJzb3IoKSkgeworLSAg ICAgICAgICAgIGNvbnN0IFFQb2ludCBkZXZpY2VQb3MgPSBRSGlnaERwaTo6dG9OYXRpdmVQaXhl bHMoUVBvaW50KHgsIHkpLCBzY3JlZW4pOworKyAgICAgICAgICAgIGNvbnN0IFFQb2ludCBwb3Mo eCwgeSk7CisrICAgICAgICAgICAgY29uc3QgUVBvaW50IGRldmljZVBvcyA9IFFIaWdoRHBpOjp0 b05hdGl2ZVBpeGVscyhwb3MsIHNjcmVlbi0+dmlydHVhbFNpYmxpbmdBdChwb3MpKTsKKyAgICAg ICAgICAgICAvLyBOZWVkIHRvIGNoZWNrLCBzaW5jZSBzb21lIFggc2VydmVycyBnZW5lcmF0ZSBu dWxsIG1vdXNlIG1vdmUKKyAgICAgICAgICAgICAvLyBldmVudHMsIGNhdXNpbmcgbG9vcGluZyBp biBhcHBsaWNhdGlvbnMgd2hpY2ggY2FsbCBzZXRQb3MoKSBvbgorICAgICAgICAgICAgIC8vIGV2 ZXJ5IG1vdXNlIG1vdmUgZXZlbnQuCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVs L3FoaWdoZHBpc2NhbGluZy5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWhpZ2hkcGlzY2Fs aW5nLmNwcAoraW5kZXggOWJiZjI3NzNhOS4uM2FjNGE0ZDhiNiAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvZ3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1 aS9rZXJuZWwvcWhpZ2hkcGlzY2FsaW5nLmNwcAorQEAgLTU4MCw5ICs1ODAsOCBAQCB2b2lkIFFI aWdoRHBpU2NhbGluZzo6c2V0U2NyZWVuRmFjdG9yKFFTY3JlZW4gKnNjcmVlbiwgcXJlYWwgZmFj dG9yKQorICAgICBlbHNlCisgICAgICAgICBxTmFtZWRTY3JlZW5TY2FsZUZhY3RvcnMoKS0+aW5z ZXJ0KG5hbWUsIGZhY3Rvcik7CisgCistICAgIC8vIGhhY2sgdG8gZm9yY2UgcmUtZXZhbHVhdGlv biBvZiBzY3JlZW4gZ2VvbWV0cnkKKyAgICAgaWYgKHNjcmVlbi0+aGFuZGxlKCkpCistICAgICAg ICBzY3JlZW4tPmRfZnVuYygpLT5zZXRQbGF0Zm9ybVNjcmVlbihzY3JlZW4tPmhhbmRsZSgpKTsg Ly8gdXBkYXRlcyBnZW9tZXRyaWVzIGJhc2VkIG9uIHNjYWxlIGZhY3RvcgorKyAgICAgICAgc2Ny ZWVuLT5kX2Z1bmMoKS0+dXBkYXRlTG9naWNhbERwaSgpOworIH0KKyAKKyBRUG9pbnQgUUhpZ2hE cGlTY2FsaW5nOjptYXBQb3NpdGlvblRvTmF0aXZlKGNvbnN0IFFQb2ludCAmcG9zLCBjb25zdCBR UGxhdGZvcm1TY3JlZW4gKnBsYXRmb3JtU2NyZWVuKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Z3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FrZXlz ZXF1ZW5jZS5jcHAKK2luZGV4IGE3NWI4ZWY5MjAuLjRmMmQyOTQ3MzkgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9n dWkva2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAKK0BAIC03MDEsNiArNzAxLDEwIEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgeworICAgICB7IFF0OjpLZXlfVG91Y2hwYWRUb2dnbGUsICBRVF9UUkFOU0xB VEVfTk9PUCgiUVNob3J0Y3V0IiwgIlRvdWNocGFkIFRvZ2dsZSIpIH0sCisgICAgIHsgUXQ6Oktl eV9Ub3VjaHBhZE9uLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJUb3VjaHBhZCBP biIpIH0sCisgICAgIHsgUXQ6OktleV9Ub3VjaHBhZE9mZiwgIFFUX1RSQU5TTEFURV9OT09QKCJR U2hvcnRjdXQiLCAiVG91Y2hwYWQgT2ZmIikgfSwKKysgICAgeyBRdDo6S2V5X1NoaWZ0LCAgUVRf VFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJTaGlmdCIpIH0sCisrICAgIHsgUXQ6OktleV9D b250cm9sLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJDb250cm9sIikgfSwKKysg ICAgeyBRdDo6S2V5X0FsdCwgIFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiQWx0Iikg fSwKKysgICAgeyBRdDo6S2V5X01ldGEsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0Iiwg Ik1ldGEiKSB9LAorIAorIH07Cisgc3RhdGljIFFfQ09OU1RFWFBSIGludCBudW1LZXlOYW1lcyA9 IHNpemVvZiBrZXluYW1lIC8gc2l6ZW9mICprZXluYW1lOworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcXBsYXRmb3Jtc2VydmljZXMuY3BwCitpbmRleCBmZGM2YTZjNGFhLi5hYzQ3Zjk4YzVkIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmNwcAor KysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmNwcAorQEAgLTU1 LDYgKzU1LDE5IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorICAgICBcYnJpZWYgVGhlIFFQbGF0Zm9y bVNlcnZpY2VzIHByb3ZpZGVzIHRoZSBiYWNrZW5kIGZvciBkZXNrdG9wLXJlbGF0ZWQgZnVuY3Rp b25hbGl0eS4KKyAqLworIAorKy8qIQorKyAgICBcZW51bSBRUGxhdGZvcm1TZXJ2aWNlczo6Q2Fw YWJpbGl0eQorKworKyAgICBDYXBhYmlsaXRpZXMgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIGEgc3Bl Y2lmaWMgcGxhdGZvcm0gc2VydmljZSdzIGF2YWlsYWJpbGl0eS4KKysKKysgICAgXHZhbHVlIENv bG9yUGlja2luZ0Zyb21TY3JlZW4gVGhlIHBsYXRmb3JtIG5hdGl2ZWx5IHN1cHBvcnRzIGNvbG9y IHBpY2tpbmcgZnJvbSBzY3JlZW4uCisrICAgIFRoaXMgY2FwYWJpbGl0eSBpbmRpY2F0ZXMgdGhh dCB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgIm9wYXF1ZSIgY29sb3IgcGlja2luZywgd2hlcmUgdGhl CisrICAgIHBsYXRmb3JtIGltcGxlbWVudHMgYSBjb21wbGV0ZSB1c2VyIGV4cGVyaWVuY2UgZm9y IGNvbG9yIHBpY2tpbmcgYW5kIG91dHB1dHMgYSBjb2xvci4KKysgICAgVGhpcyBpcyBpbiBjb250 cmFzdCB0byB0aGUgYXBwbGljYXRpb24gaW1wbGVtZW50aW5nIHRoZSBjb2xvciBwaWNraW5nIHVz ZXIgZXhwZXJpZW5jZQorKyAgICAodGFraW5nIGNhcmUgb2Ygc2hvd2luZyBhIGNyb3NzIGhhaXIs IGluc3RydWN0aW5nIHRoZSBwbGF0Zm9ybSBpbnRlZ3JhdGlvbiB0byBvYnRhaW4KKysgICAgdGhl IGNvbG9yIGF0IGEgZ2l2ZW4gcGl4ZWwsIGV0Yy4pLiBUaGUgcmVsYXRlZCBzZXJ2aWNlIGZ1bmN0 aW9uIGlzIHBpY2tDb2xvcigpLgorKyAqLworKworIFFQbGF0Zm9ybVNlcnZpY2VzOjpRUGxhdGZv cm1TZXJ2aWNlcygpCisgeyB9CisgCitAQCAtODUsNSArOTgsMTYgQEAgUUJ5dGVBcnJheSBRUGxh dGZvcm1TZXJ2aWNlczo6ZGVza3RvcEVudmlyb25tZW50KCkgY29uc3QKKyAgICAgcmV0dXJuIFFC eXRlQXJyYXkoIlVOS05PV04iKTsKKyB9CisgCisrUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2Vy ICpRUGxhdGZvcm1TZXJ2aWNlczo6Y29sb3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50KQorK3sKKysg ICAgUV9VTlVTRUQocGFyZW50KTsKKysgICAgcmV0dXJuIG51bGxwdHI7CisrfQorKworK2Jvb2wg UVBsYXRmb3JtU2VydmljZXM6Omhhc0NhcGFiaWxpdHkoQ2FwYWJpbGl0eSBjYXBhYmlsaXR5KSBj b25zdAorK3sKKysgICAgUV9VTlVTRUQoY2FwYWJpbGl0eSkKKysgICAgcmV0dXJuIGZhbHNlOwor K30KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2Vy bmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmggYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jt c2VydmljZXMuaAoraW5kZXggNWRlOTZjZmE3ZC4uYThiMmE0Y2U3MSAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5oCisrKysgYi9xdGJhc2Uvc3Jj L2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuaAorQEAgLTUwLDE2ICs1MCwzMiBAQAorIC8v CisgCisgI2luY2x1ZGUgPFF0R3VpL3F0Z3VpZ2xvYmFsLmg+CisrI2luY2x1ZGUgPFF0Q29yZS9x b2JqZWN0Lmg+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgY2xhc3MgUVVybDsKKytjbGFz cyBRV2luZG93OworKworK2NsYXNzIFFfR1VJX0VYUE9SVCBRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQ aWNrZXIgOiBwdWJsaWMgUU9iamVjdAorK3sKKysgICAgUV9PQkpFQ1QKKytwdWJsaWM6CisrICAg IHVzaW5nIFFPYmplY3Q6OlFPYmplY3Q7CisrICAgIHZpcnR1YWwgdm9pZCBwaWNrQ29sb3IoKSA9 IDA7CisrUV9TSUdOQUxTOgorKyAgICB2b2lkIGNvbG9yUGlja2VkKGNvbnN0IFFDb2xvciAmY29s b3IpOworK307CisgCisgY2xhc3MgUV9HVUlfRVhQT1JUIFFQbGF0Zm9ybVNlcnZpY2VzCisgewor IHB1YmxpYzoKKyAgICAgUV9ESVNBQkxFX0NPUFlfTU9WRShRUGxhdGZvcm1TZXJ2aWNlcykKKyAK KysgICAgZW51bSBDYXBhYmlsaXR5IHsKKysgICAgICAgIENvbG9yUGlja2luZywKKysgICAgfTsK KysKKyAgICAgUVBsYXRmb3JtU2VydmljZXMoKTsKKyAgICAgdmlydHVhbCB+UVBsYXRmb3JtU2Vy dmljZXMoKSB7IH0KKyAKK0BAIC02Nyw2ICs4MywxMCBAQCBwdWJsaWM6CisgICAgIHZpcnR1YWwg Ym9vbCBvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJsKTsKKyAKKyAgICAgdmlydHVhbCBRQnl0 ZUFycmF5IGRlc2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0OworKworKyAgICB2aXJ0dWFsIGJvb2wg aGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNhcGFiaWxpdHkpIGNvbnN0OworKworKyAgICB2aXJ0 dWFsIFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqY29sb3JQaWNrZXIoUVdpbmRvdyAqcGFy ZW50ID0gbnVsbHB0cik7CisgfTsKKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmNwcCBiL3F0YmFzZS9zcmMvZ3Vp L2tlcm5lbC9xcGxhdGZvcm10aGVtZS5jcHAKK2luZGV4IDcxNTIxYzAzMzkuLjIzMjU4NzMyNDUg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuY3BwCisr KysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuY3BwCitAQCAtMTYzLDYg KzE2Myw4IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAorICAgICBcdmFsdWUgU2hvd1Nob3J0Y3V0 c0luQ29udGV4dE1lbnVzIChib29sKSBXaGV0aGVyIHRvIGRpc3BsYXkgc2hvcnRjdXQga2V5IHNl cXVlbmNlcyBpbiBjb250ZXh0IG1lbnVzLgorIAorKyAgICBcdmFsdWUgQnV0dG9uUHJlc3NLZXlz IChRTGlzdDxRdDo6S2V5PikgQSBsaXN0IG9mIGtleXMgdGhhdCBjYW4gYmUgdXNlZCB0byBwcmVz cyBidXR0b25zIHZpYSBrZXlib2FyZCBpbnB1dC4KKysKKyAgICAgXHNhIHRoZW1lSGludCgpLCBR U3R5bGU6OnBpeGVsTWV0cmljKCkKKyAqLworIAorQEAgLTU2Myw2ICs1NjUsOCBAQCBRVmFyaWFu dCBRUGxhdGZvcm1UaGVtZTo6ZGVmYXVsdFRoZW1lSGludChUaGVtZUhpbnQgaGludCkKKyAgICAg ICAgIH0KKyAgICAgY2FzZSBNb3VzZVF1aWNrU2VsZWN0aW9uVGhyZXNob2xkOgorICAgICAgICAg cmV0dXJuIFFWYXJpYW50KDEwKTsKKysgICAgY2FzZSBCdXR0b25QcmVzc0tleXM6CisrICAgICAg ICByZXR1cm4gUVZhcmlhbnQ6OmZyb21WYWx1ZShRTGlzdDxRdDo6S2V5Pih7IFF0OjpLZXlfU3Bh Y2UsIFF0OjpLZXlfU2VsZWN0IH0pKTsKKyAgICAgfQorICAgICByZXR1cm4gUVZhcmlhbnQoKTsK KyB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmgg Yi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuaAoraW5kZXggMzE4NWZjNDU0 MS4uN2U2YzlkNTc0MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZv cm10aGVtZS5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuaAor QEAgLTEyMCw3ICsxMjAsOCBAQCBwdWJsaWM6CisgICAgICAgICBUb3VjaERvdWJsZVRhcERpc3Rh bmNlLAorICAgICAgICAgU2hvd1Nob3J0Y3V0c0luQ29udGV4dE1lbnVzLAorICAgICAgICAgSWNv bkZhbGxiYWNrU2VhcmNoUGF0aHMsCistICAgICAgICBNb3VzZVF1aWNrU2VsZWN0aW9uVGhyZXNo b2xkCisrICAgICAgICBNb3VzZVF1aWNrU2VsZWN0aW9uVGhyZXNob2xkLAorKyAgICAgICAgQnV0 dG9uUHJlc3NLZXlzCisgICAgIH07CisgCisgICAgIGVudW0gRGlhbG9nVHlwZSB7CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW4uY3BwIGIvcXRiYXNlL3NyYy9ndWkv a2VybmVsL3FzY3JlZW4uY3BwCitpbmRleCA4ZTBlYjM1MTE2Li41ZDE3MmE1OGRkIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW4uY3BwCisrKysgYi9xdGJhc2Uvc3Jj L2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAKK0BAIC03Nyw2ICs3NywxMiBAQCBRU2NyZWVuOjpRU2Ny ZWVuKFFQbGF0Zm9ybVNjcmVlbiAqc2NyZWVuKQorICAgICBkLT5zZXRQbGF0Zm9ybVNjcmVlbihz Y3JlZW4pOworIH0KKyAKKyt2b2lkIFFTY3JlZW5Qcml2YXRlOjp1cGRhdGVMb2dpY2FsRHBpKCkK Kyt7CisrICAgIGxvZ2ljYWxEcGkgPSBRUGxhdGZvcm1TY3JlZW46Om92ZXJyaWRlRHBpKHBsYXRm b3JtU2NyZWVuLT5sb2dpY2FsRHBpKCkpOworKyAgICB1cGRhdGVHZW9tZXRyaWVzV2l0aFNpZ25h bHMoKTsgLy8gdXBkYXRlcyBnZW9tZXRyaWVzIGJhc2VkIG9uIHNjYWxlIGZhY3RvcgorK30KKysK KyB2b2lkIFFTY3JlZW5Qcml2YXRlOjp1cGRhdGVHZW9tZXRyaWVzV2l0aFNpZ25hbHMoKQorIHsK KyAgICAgY29uc3QgUVJlY3Qgb2xkR2VvbWV0cnkgPSBnZW9tZXRyeTsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmggYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwv cXNjcmVlbl9wLmgKK2luZGV4IDdkYTU0MmMyNWUuLmU1MGZjMzE5MGIgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tl cm5lbC9xc2NyZWVuX3AuaAorQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgorICAgICAgICAgZ2Vv bWV0cnkgPSBwbGF0Zm9ybVNjcmVlbi0+ZGV2aWNlSW5kZXBlbmRlbnRHZW9tZXRyeSgpOworICAg ICAgICAgYXZhaWxhYmxlR2VvbWV0cnkgPSBRSGlnaERwaTo6ZnJvbU5hdGl2ZShwbGF0Zm9ybVNj cmVlbi0+YXZhaWxhYmxlR2VvbWV0cnkoKSwgUUhpZ2hEcGlTY2FsaW5nOjpmYWN0b3IocGxhdGZv cm1TY3JlZW4pLCBnZW9tZXRyeS50b3BMZWZ0KCkpOworICAgICB9CisrICAgIHZvaWQgdXBkYXRl TG9naWNhbERwaSgpOworIAorICAgICB2b2lkIHVwZGF0ZVByaW1hcnlPcmllbnRhdGlvbigpOwor ICAgICB2b2lkIHVwZGF0ZUdlb21ldHJpZXNXaXRoU2lnbmFscygpOworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0aW9uc19wLmggYi9xdGJhc2Uvc3JjL2d1 aS9wYWludGluZy9xYmxlbmRmdW5jdGlvbnNfcC5oCitpbmRleCAwODBkYTk4ZWM0Li42OTk3ZDYy YjNjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWJsZW5kZnVuY3Rpb25z X3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWJsZW5kZnVuY3Rpb25zX3AuaAor QEAgLTI0NiwyNSArMjQ2LDMyIEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShE ZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBkdWR4LCBpbnQgZHZkeCwgaW50IGR1ZHksIGludCBkdmR5LCBpbnQgdTAsIGlu dCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmxlbmRlciBibGVuZGVy KQorIHsKKy0gICAgaW50IGZyb21ZID0gcU1heChxUm91bmQodG9wWSksIGNsaXAudG9wKCkpOwor LSAgICBpbnQgdG9ZID0gcU1pbihxUm91bmQoYm90dG9tWSksIGNsaXAudG9wKCkgKyBjbGlwLmhl aWdodCgpKTsKKysgICAgcWludDY0IGZyb21ZID0gcU1heChxUm91bmQodG9wWSksIGNsaXAudG9w KCkpOworKyAgICBxaW50NjQgdG9ZID0gcU1pbihxUm91bmQoYm90dG9tWSksIGNsaXAudG9wKCkg KyBjbGlwLmhlaWdodCgpKTsKKyAgICAgaWYgKGZyb21ZID49IHRvWSkKKyAgICAgICAgIHJldHVy bjsKKyAKKyAgICAgcXJlYWwgbGVmdFNsb3BlID0gKGJvdHRvbUxlZnQueCAtIHRvcExlZnQueCkg LyAoYm90dG9tTGVmdC55IC0gdG9wTGVmdC55KTsKKyAgICAgcXJlYWwgcmlnaHRTbG9wZSA9IChi b3R0b21SaWdodC54IC0gdG9wUmlnaHQueCkgLyAoYm90dG9tUmlnaHQueSAtIHRvcFJpZ2h0Lnkp OworLSAgICBpbnQgZHhfbCA9IGludChsZWZ0U2xvcGUgKiAweDEwMDAwKTsKKy0gICAgaW50IGR4 X3IgPSBpbnQocmlnaHRTbG9wZSAqIDB4MTAwMDApOworLSAgICBpbnQgeF9sID0gaW50KCh0b3BM ZWZ0LnggKyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9wTGVmdC55KSAqIGxlZnRTbG9wZSArIHFy ZWFsKDAuNSkpICogMHgxMDAwMCk7CistICAgIGludCB4X3IgPSBpbnQoKHRvcFJpZ2h0LnggKyAo cXJlYWwoMC41KSArIGZyb21ZIC0gdG9wUmlnaHQueSkgKiByaWdodFNsb3BlICsgcXJlYWwoMC41 KSkgKiAweDEwMDAwKTsKKy0KKy0gICAgaW50IGZyb21YLCB0b1gsIHgxLCB4MiwgdSwgdiwgaSwg aWk7CisrICAgIHFpbnQ2NCBkeF9sID0gcWludDY0KGxlZnRTbG9wZSAqIDB4MTAwMDApOworKyAg ICBxaW50NjQgZHhfciA9IHFpbnQ2NChyaWdodFNsb3BlICogMHgxMDAwMCk7CisrICAgIHFpbnQ2 NCB4X2wgPSBxaW50NjQoKHRvcExlZnQueCArIChxcmVhbCgwLjUpICsgZnJvbVkgLSB0b3BMZWZ0 LnkpICogbGVmdFNsb3BlICsgcXJlYWwoMC41KSkgKiAweDEwMDAwKTsKKysgICAgcWludDY0IHhf ciA9IHFpbnQ2NCgodG9wUmlnaHQueCArIChxcmVhbCgwLjUpICsgZnJvbVkgLSB0b3BSaWdodC55 KSAqIHJpZ2h0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4MTAwMDApOworKworKyAgICBxaW50NjQg c291cmNlUmVjdFRvcCA9IHFpbnQ2NChzb3VyY2VSZWN0LnRvcCgpKTsKKysgICAgcWludDY0IHNv dXJjZVJlY3RMZWZ0ID0gcWludDY0KHNvdXJjZVJlY3QubGVmdCgpKTsKKysgICAgcWludDY0IHNv dXJjZVJlY3RXaWR0aCA9IHFpbnQ2NChzb3VyY2VSZWN0LndpZHRoKCkpOworKyAgICBxaW50NjQg c291cmNlUmVjdEhlaWdodCA9IHFpbnQ2NChzb3VyY2VSZWN0LmhlaWdodCgpKTsKKysgICAgcWlu dDY0IGNsaXBMZWZ0ID0gcWludDY0KGNsaXAubGVmdCgpKTsKKysgICAgcWludDY0IGNsaXBXaWR0 aCA9IHFpbnQ2NChjbGlwLndpZHRoKCkpOworKworKyAgICBxaW50NjQgZnJvbVgsIHRvWCwgeDEs IHgyLCB1LCB2LCBpLCBpaTsKKyAgICAgRGVzdFQgKmxpbmU7CistICAgIGZvciAoaW50IHkgPSBm cm9tWTsgeSA8IHRvWTsgKyt5KSB7CisrICAgIGZvciAocWludDY0IHkgPSBmcm9tWTsgeSA8IHRv WTsgKyt5KSB7CisgICAgICAgICBsaW5lID0gcmVpbnRlcnByZXRfY2FzdDxEZXN0VCAqPihyZWlu dGVycHJldF9jYXN0PHVjaGFyICo+KGRlc3RQaXhlbHMpICsgeSAqIGRicGwpOworIAorLSAgICAg ICAgZnJvbVggPSBxTWF4KHhfbCA+PiAxNiwgY2xpcC5sZWZ0KCkpOworLSAgICAgICAgdG9YID0g cU1pbih4X3IgPj4gMTYsIGNsaXAubGVmdCgpICsgY2xpcC53aWR0aCgpKTsKKysgICAgICAgIGZy b21YID0gcU1heCh4X2wgPj4gMTYsIGNsaXBMZWZ0KTsKKysgICAgICAgIHRvWCA9IHFNaW4oeF9y ID4+IDE2LCBjbGlwTGVmdCArIGNsaXBXaWR0aCk7CisgICAgICAgICBpZiAoZnJvbVggPCB0b1gp IHsKKyAgICAgICAgICAgICAvLyBCZWNhdXNlIG9mIHJvdW5kaW5nLCB3ZSBjYW4gZ2V0IHNvdXJj ZSBjb29yZGluYXRlcyBvdXRzaWRlIHRoZSBzb3VyY2UgaW1hZ2UuCisgICAgICAgICAgICAgLy8g Q2xhbXAgdGhlc2UgY29vcmRpbmF0ZXMgdG8gdGhlIHNvdXJjZSByZWN0IHRvIGF2b2lkIHNlZ21l bnRhdGlvbiBmYXVsdCBhbmQKK0BAIC0yNzUsMTAgKzI4MiwxMCBAQCB2b2lkIHF0X3RyYW5zZm9y bV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBsLAorICAgICAgICAg ICAgIHUgPSB4MSAqIGR1ZHggKyB5ICogZHVkeSArIHUwOworICAgICAgICAgICAgIHYgPSB4MSAq IGR2ZHggKyB5ICogZHZkeSArIHYwOworICAgICAgICAgICAgIGZvciAoOyB4MSA8IHRvWDsgKyt4 MSkgeworLSAgICAgICAgICAgICAgICBpbnQgdXUgPSB1ID4+IDE2OworLSAgICAgICAgICAgICAg ICBpbnQgdnYgPSB2ID4+IDE2OworLSAgICAgICAgICAgICAgICBpZiAodXUgPj0gc291cmNlUmVj dC5sZWZ0KCkgJiYgdXUgPCBzb3VyY2VSZWN0LmxlZnQoKSArIHNvdXJjZVJlY3Qud2lkdGgoKQor LSAgICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNlUmVjdC50b3AoKSAmJiB2diA8IHNv dXJjZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdodCgpKSB7CisrICAgICAgICAgICAgICAg IHFpbnQ2NCB1dSA9IHUgPj4gMTY7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB2diA9IHYgPj4g MTY7CisrICAgICAgICAgICAgICAgIGlmICh1dSA+PSBzb3VyY2VSZWN0TGVmdCAmJiB1dSA8IHNv dXJjZVJlY3RMZWZ0ICsgc291cmNlUmVjdFdpZHRoCisrICAgICAgICAgICAgICAgICAgICAmJiB2 diA+PSBzb3VyY2VSZWN0VG9wICYmIHZ2IDwgc291cmNlUmVjdFRvcCArIHNvdXJjZVJlY3RIZWln aHQpIHsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgIHUgKz0gZHVkeDsKK0BAIC0yOTAsMTAgKzI5NywxMCBAQCB2b2lkIHF0 X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBsLAor ICAgICAgICAgICAgIHUgPSAoeDIgLSAxKSAqIGR1ZHggKyB5ICogZHVkeSArIHUwOworICAgICAg ICAgICAgIHYgPSAoeDIgLSAxKSAqIGR2ZHggKyB5ICogZHZkeSArIHYwOworICAgICAgICAgICAg IGZvciAoOyB4MiA+IHgxOyAtLXgyKSB7CistICAgICAgICAgICAgICAgIGludCB1dSA9IHUgPj4g MTY7CistICAgICAgICAgICAgICAgIGludCB2diA9IHYgPj4gMTY7CistICAgICAgICAgICAgICAg IGlmICh1dSA+PSBzb3VyY2VSZWN0LmxlZnQoKSAmJiB1dSA8IHNvdXJjZVJlY3QubGVmdCgpICsg c291cmNlUmVjdC53aWR0aCgpCistICAgICAgICAgICAgICAgICAgICAmJiB2diA+PSBzb3VyY2VS ZWN0LnRvcCgpICYmIHZ2IDwgc291cmNlUmVjdC50b3AoKSArIHNvdXJjZVJlY3QuaGVpZ2h0KCkp IHsKKysgICAgICAgICAgICAgICAgcWludDY0IHV1ID0gdSA+PiAxNjsKKysgICAgICAgICAgICAg ICAgcWludDY0IHZ2ID0gdiA+PiAxNjsKKysgICAgICAgICAgICAgICAgaWYgKHV1ID49IHNvdXJj ZVJlY3RMZWZ0ICYmIHV1IDwgc291cmNlUmVjdExlZnQgKyBzb3VyY2VSZWN0V2lkdGgKKysgICAg ICAgICAgICAgICAgICAgICYmIHZ2ID49IHNvdXJjZVJlY3RUb3AgJiYgdnYgPCBzb3VyY2VSZWN0 VG9wICsgc291cmNlUmVjdEhlaWdodCkgeworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgdSAtPSBkdWR4OworQEAgLTMwOCw4 ICszMTUsOCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQ aXhlbHMsIGludCBkYnBsLAorICAgICAgICAgICAgIC8vIEJlZ2lubmluZyBvZiB0aGUgc2NhbiBs aW5lLCB3aXRoIHBlci1waXhlbCBjaGVja3MuCisgICAgICAgICAgICAgaSA9IHgxIC0gZnJvbVg7 CisgICAgICAgICAgICAgd2hpbGUgKGkpIHsKKy0gICAgICAgICAgICAgICAgaW50IHV1ID0gcUJv dW5kKHNvdXJjZVJlY3QubGVmdCgpLCB1ID4+IDE2LCBzb3VyY2VSZWN0LmxlZnQoKSArIHNvdXJj ZVJlY3Qud2lkdGgoKSAtIDEpOworLSAgICAgICAgICAgICAgICBpbnQgdnYgPSBxQm91bmQoc291 cmNlUmVjdC50b3AoKSwgdiA+PiAxNiwgc291cmNlUmVjdC50b3AoKSArIHNvdXJjZVJlY3QuaGVp Z2h0KCkgLSAxKTsKKysgICAgICAgICAgICAgICAgcWludDY0IHV1ID0gcUJvdW5kKHNvdXJjZVJl Y3RMZWZ0LCB1ID4+IDE2LCBzb3VyY2VSZWN0TGVmdCArIHNvdXJjZVJlY3RXaWR0aCAtIDEpOwor KyAgICAgICAgICAgICAgICBxaW50NjQgdnYgPSBxQm91bmQoc291cmNlUmVjdFRvcCwgdiA+PiAx Niwgc291cmNlUmVjdFRvcCArIHNvdXJjZVJlY3RIZWlnaHQgLSAxKTsKKyAgICAgICAgICAgICAg ICAgYmxlbmRlci53cml0ZShsaW5lLCByZWludGVycHJldF9jYXN0PGNvbnN0IFNyY1QgKj4ocmVp bnRlcnByZXRfY2FzdDxjb25zdCB1Y2hhciAqPihzcmNQaXhlbHMpICsgdnYgKiBzYnBsKVt1dV0p OworICAgICAgICAgICAgICAgICB1ICs9IGR1ZHg7CisgICAgICAgICAgICAgICAgIHYgKz0gZHZk eDsKK0BAIC0zNDgsOCArMzU1LDggQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1hZ2VfcmFzdGVyaXpl KERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAgICAvLyBFbmQgb2YgdGhl IHNjYW4gbGluZSwgd2l0aCBwZXItcGl4ZWwgY2hlY2tzLgorICAgICAgICAgICAgIGkgPSB0b1gg LSB4MjsKKyAgICAgICAgICAgICB3aGlsZSAoaSkgeworLSAgICAgICAgICAgICAgICBpbnQgdXUg PSBxQm91bmQoc291cmNlUmVjdC5sZWZ0KCksIHUgPj4gMTYsIHNvdXJjZVJlY3QubGVmdCgpICsg c291cmNlUmVjdC53aWR0aCgpIC0gMSk7CistICAgICAgICAgICAgICAgIGludCB2diA9IHFCb3Vu ZChzb3VyY2VSZWN0LnRvcCgpLCB2ID4+IDE2LCBzb3VyY2VSZWN0LnRvcCgpICsgc291cmNlUmVj dC5oZWlnaHQoKSAtIDEpOworKyAgICAgICAgICAgICAgICBxaW50NjQgdXUgPSBxQm91bmQoc291 cmNlUmVjdExlZnQsIHUgPj4gMTYsIHNvdXJjZVJlY3RMZWZ0ICsgc291cmNlUmVjdFdpZHRoIC0g MSk7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB2diA9IHFCb3VuZChzb3VyY2VSZWN0VG9wLCB2 ID4+IDE2LCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhlaWdodCAtIDEpOworICAgICAgICAg ICAgICAgICBibGVuZGVyLndyaXRlKGxpbmUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgU3JjVCAq PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVjaGFyICo+KHNyY1BpeGVscykgKyB2diAqIHNicGwp W3V1XSk7CisgICAgICAgICAgICAgICAgIHUgKz0gZHVkeDsKKyAgICAgICAgICAgICAgICAgdiAr PSBkdmR4OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fjb2xvcnRyY2x1 dF9wLmggYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xY29sb3J0cmNsdXRfcC5oCitpbmRleCA3 NmE2YTYwODAzLi4yNGZkNTIyZTZjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRp bmcvcWNvbG9ydHJjbHV0X3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWNvbG9y dHJjbHV0X3AuaAorQEAgLTExOCw2ICsxMTgsNyBAQCBwdWJsaWM6CisgICAgICAgICByZXR1cm4g UVJnYmE2NDo6ZnJvbVJnYmE2NChyLCBnLCBiLCBxQWxwaGEocmdiMzIpICogMjU3KTsKKyAjZW5k aWYKKyAgICAgfQorKyAgICBRUmdiYTY0IHRvTGluZWFyNjQoUVJnYmE2NCkgY29uc3QgPSBkZWxl dGU7CisgCisgICAgIFFSZ2IgdG9MaW5lYXIoUVJnYiByZ2IzMikgY29uc3QKKyAgICAgeworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FkcmF3aGVscGVyLmNwcCBiL3F0YmFz ZS9zcmMvZ3VpL3BhaW50aW5nL3FkcmF3aGVscGVyLmNwcAoraW5kZXggYTYxNzkzNTA4YS4uNWJh MmQyNzdiNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FkcmF3aGVscGVy LmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIuY3BwCitAQCAt NjA5MSw3ICs2MDkxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFscGhhcmdiYmxlbmRfYXJnYjMy KHF1aW50MzIgKmRzdCwgdWludCBjb3ZlcmFnZSwgY29uc3QgUVJnYmEKKyBzdGF0aWMgaW5saW5l IHZvaWQgcmdiQmxlbmRQaXhlbChRUmdiYTY0ICZkc3QsIGludCBjb3ZlcmFnZSwgUVJnYmE2NCBz bGluZWFyLCBjb25zdCBRQ29sb3JUcmNMdXQgKmNvbG9yUHJvZmlsZSkKKyB7CisgICAgIC8vIERv IGEgZ2FtbWFjb3JyZWN0ZWQgUkdCIGFscGhhYmxlbmQuLi4KKy0gICAgY29uc3QgUVJnYmE2NCBk bGluZWFyID0gY29sb3JQcm9maWxlID8gY29sb3JQcm9maWxlLT50b0xpbmVhcjY0KGRzdCkgOiBk c3Q7CisrICAgIGNvbnN0IFFSZ2JhNjQgZGxpbmVhciA9IGNvbG9yUHJvZmlsZSA/IGNvbG9yUHJv ZmlsZS0+dG9MaW5lYXIoZHN0KSA6IGRzdDsKKyAKKyAgICAgUVJnYmE2NCBibGVuZCA9IHJnYkJs ZW5kKGRsaW5lYXIsIHNsaW5lYXIsIGNvdmVyYWdlKTsKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwCitpbmRleCAyODM5MjNkZTUyLi5mMDhl YjljYmVlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5l X3Jhc3Rlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9y YXN0ZXIuY3BwCitAQCAtNTYwLDMxICs1NjAsNiBAQCB2b2lkIFFSYXN0ZXJQYWludEVuZ2luZTo6 dXBkYXRlTWF0cml4KGNvbnN0IFFUcmFuc2Zvcm0gJm1hdHJpeCkKKyAgICAgUVJhc3RlclBhaW50 RW5naW5lU3RhdGUgKnMgPSBzdGF0ZSgpOworICAgICAvLyBGQUxDT046IGdldCByaWQgb2YgdGhp cyBsaW5lLCBzZWUgZHJhd0ltYWdlIGNhbGwgYmVsb3cuCisgICAgIHMtPm1hdHJpeCA9IG1hdHJp eDsKKy0gICAgUVRyYW5zZm9ybTo6VHJhbnNmb3JtYXRpb25UeXBlIHR4b3AgPSBzLT5tYXRyaXgu dHlwZSgpOworLQorLSAgICBzd2l0Y2ggKHR4b3ApIHsKKy0KKy0gICAgY2FzZSBRVHJhbnNmb3Jt OjpUeE5vbmU6CistICAgICAgICBzLT5mbGFncy5pbnRfeGZvcm0gPSB0cnVlOworLSAgICAgICAg YnJlYWs7CistCistICAgIGNhc2UgUVRyYW5zZm9ybTo6VHhUcmFuc2xhdGU6CistICAgICAgICBz LT5mbGFncy5pbnRfeGZvcm0gPSBxcmVhbChpbnQocy0+bWF0cml4LmR4KCkpKSA9PSBzLT5tYXRy aXguZHgoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBxcmVhbChpbnQocy0+bWF0 cml4LmR5KCkpKSA9PSBzLT5tYXRyaXguZHkoKTsKKy0gICAgICAgIGJyZWFrOworLQorLSAgICBj YXNlIFFUcmFuc2Zvcm06OlR4U2NhbGU6CistICAgICAgICBzLT5mbGFncy5pbnRfeGZvcm0gPSBx cmVhbChpbnQocy0+bWF0cml4LmR4KCkpKSA9PSBzLT5tYXRyaXguZHgoKQorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmJiBxcmVhbChpbnQocy0+bWF0cml4LmR5KCkpKSA9PSBzLT5tYXRy aXguZHkoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBxcmVhbChpbnQocy0+bWF0 cml4Lm0xMSgpKSkgPT0gcy0+bWF0cml4Lm0xMSgpCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICYmIHFyZWFsKGludChzLT5tYXRyaXgubTIyKCkpKSA9PSBzLT5tYXRyaXgubTIyKCk7Cist ICAgICAgICBicmVhazsKKy0KKy0gICAgZGVmYXVsdDogLy8gc2hlYXIgLyBwZXJzcGVjdGl2ZS4u LgorLSAgICAgICAgcy0+ZmxhZ3MuaW50X3hmb3JtID0gZmFsc2U7CistICAgICAgICBicmVhazsK Ky0gICAgfQorLQorICAgICBzLT5mbGFncy50eF9ub3NoZWFyID0gcXRfc2NhbGVGb3JUcmFuc2Zv cm0ocy0+bWF0cml4LCAmcy0+dHhzY2FsZSk7CisgCisgICAgIGVuc3VyZU91dGxpbmVNYXBwZXIo KTsKK0BAIC02MTcsNyArNTkyLDYgQEAgUVJhc3RlclBhaW50RW5naW5lU3RhdGU6OlFSYXN0ZXJQ YWludEVuZ2luZVN0YXRlKCkKKyAgICAgZmxhZ3MuYmlsaW5lYXIgPSBmYWxzZTsKKyAgICAgZmxh Z3MubGVnYWN5X3JvdW5kaW5nID0gZmFsc2U7CisgICAgIGZsYWdzLmZhc3RfdGV4dCA9IHRydWU7 CistICAgIGZsYWdzLmludF94Zm9ybSA9IHRydWU7CisgICAgIGZsYWdzLnR4X25vc2hlYXIgPSB0 cnVlOworICAgICBmbGFncy5mYXN0X2ltYWdlcyA9IHRydWU7CisgCitAQCAtMTc5Myw3ICsxNzY3 LDcgQEAgdm9pZCBRUmFzdGVyUGFpbnRFbmdpbmU6OmZpbGwoY29uc3QgUVZlY3RvclBhdGggJnBh dGgsIGNvbnN0IFFCcnVzaCAmYnJ1c2gpCisgICAgIFFSZWN0RiBjcFJlY3QgPSBwYXRoLmNvbnRy b2xQb2ludFJlY3QoKTsKKyAgICAgY29uc3QgUVJlY3RGIHBhdGhEZXZpY2VSZWN0ID0gcy0+bWF0 cml4Lm1hcFJlY3QoY3BSZWN0KTsKKyAgICAgLy8gU2tpcCBwYXRocyB0aGF0IGJ5IGNvbnNlcnZh dGl2ZSBlc3RpbWF0ZXMgYXJlIGNvbXBsZXRlbHkgb3V0c2lkZSB0aGUgcGFpbnQgZGV2aWNlLgor LSAgICBpZiAoIXBhdGhEZXZpY2VSZWN0LmludGVyc2VjdHMoUVJlY3RGKGQtPmRldmljZVJlY3Qp KSkKKysgICAgaWYgKCFwYXRoRGV2aWNlUmVjdC5pbnRlcnNlY3RzKFFSZWN0RihkLT5kZXZpY2VS ZWN0KSkgfHwgIXBhdGhEZXZpY2VSZWN0LmlzVmFsaWQoKSkKKyAgICAgICAgIHJldHVybjsKKyAK KyAgICAgUHJvY2Vzc1NwYW5zIGJsZW5kID0gZC0+Z2V0QnJ1c2hGdW5jKHBhdGhEZXZpY2VSZWN0 LCAmcy0+YnJ1c2hEYXRhKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9x cGFpbnRlbmdpbmVfcmFzdGVyX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVu Z2luZV9yYXN0ZXJfcC5oCitpbmRleCAwODlhYWRjM2Y3Li5iZjczNjNkNWFhIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlcl9wLmgKKysrKyBi L3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXJfcC5oCitAQCAtMTEx LDcgKzExMSw2IEBAIHB1YmxpYzoKKyAgICAgICAgIHVpbnQgYmlsaW5lYXIgOiAxOworICAgICAg ICAgdWludCBsZWdhY3lfcm91bmRpbmcgOiAxOworICAgICAgICAgdWludCBmYXN0X3RleHQgOiAx OworLSAgICAgICAgdWludCBpbnRfeGZvcm0gOiAxOworICAgICAgICAgdWludCB0eF9ub3NoZWFy IDogMTsKKyAgICAgICAgIHVpbnQgZmFzdF9pbWFnZXMgOiAxOworICAgICB9OworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVycGF0aC5jcHAgYi9xdGJhc2Uvc3Jj L2d1aS9wYWludGluZy9xcGFpbnRlcnBhdGguY3BwCitpbmRleCBmOTU0NGEzMjQxLi5kODBmYWZl YWYxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZXJwYXRoLmNw cAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZXJwYXRoLmNwcAorQEAgLTEy NTMsNyArMTI1Myw3IEBAIHZvaWQgUVBhaW50ZXJQYXRoOjphZGRUZXh0KGNvbnN0IFFQb2ludEYg JnBvaW50LCBjb25zdCBRRm9udCAmZiwgY29uc3QgUVN0cmluZyAmCisgCisgICAgICAgICBpZiAo c2kuYW5hbHlzaXMuZmxhZ3MgPCBRU2NyaXB0QW5hbHlzaXM6OlRhYk9yT2JqZWN0KSB7CisgICAg ICAgICAgICAgUUdseXBoTGF5b3V0IGdseXBocyA9IGVuZy0+c2hhcGVkR2x5cGhzKCZzaSk7Cist ICAgICAgICAgICAgUUZvbnRFbmdpbmUgKmZlID0gZi5kLT5lbmdpbmVGb3JTY3JpcHQoc2kuYW5h bHlzaXMuc2NyaXB0KTsKKysgICAgICAgICAgICBRRm9udEVuZ2luZSAqZmUgPSBlbmctPmZvbnRF bmdpbmUoc2kpOworICAgICAgICAgICAgIFFfQVNTRVJUKGZlKTsKKyAgICAgICAgICAgICBmZS0+ YWRkT3V0bGluZVRvUGF0aCh4LCB5LCBnbHlwaHMsIHRoaXMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2kuYW5hbHlzaXMuYmlkaUxldmVsICUgMgorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYXRoY2xpcHBlcl9wLmggYi9xdGJhc2Uvc3JjL2d1aS9w YWludGluZy9xcGF0aGNsaXBwZXJfcC5oCitpbmRleCA5NDQ0YTg3YjcxLi4xOGY2NGM1ZThjIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhjbGlwcGVyX3AuaAorKysr IGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhjbGlwcGVyX3AuaAorQEAgLTE1Niw3ICsx NTYsNyBAQCBwdWJsaWM6CisgICAgIGludCB2ZXJ0ZXgoRGlyZWN0aW9uIGRpcmVjdGlvbikgY29u c3Q7CisgCisgcHJpdmF0ZToKKy0gICAgaW50IG1fbmV4dFsyXVsyXTsKKysgICAgaW50IG1fbmV4 dFsyXVsyXSA9IHsgeyAtMSwgLTEgfSwgeyAtMSwgLTEgfSB9OworIH07CisgCisgY2xhc3MgUVBh dGhTZWdtZW50cworQEAgLTI5NiwxMCArMjk2LDYgQEAgaW5saW5lIFFQYXRoRWRnZTo6UVBhdGhF ZGdlKGludCBhLCBpbnQgYikKKyAgICAgLCBhbmdsZSgwKQorICAgICAsIGludkFuZ2xlKDApCisg eworLSAgICBtX25leHRbMF1bMF0gPSAtMTsKKy0gICAgbV9uZXh0WzFdWzBdID0gLTE7CistICAg IG1fbmV4dFswXVswXSA9IC0xOworLSAgICBtX25leHRbMV1bMF0gPSAtMTsKKyB9CisgCisgaW5s aW5lIGludCBRUGF0aEVkZ2U6Om5leHQoVHJhdmVyc2FsIHRyYXZlcnNhbCwgRGlyZWN0aW9uIGRp cmVjdGlvbikgY29uc3QKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGRm LmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwZGYuY3BwCitpbmRleCAzMDY2NzQ0ZjFi Li4yYzhkM2MzYjUzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5j cHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwZGYuY3BwCitAQCAtMjc2MCw2ICsy NzYwLDggQEAgaW50IFFQZGZFbmdpbmVQcml2YXRlOjphZGRCcnVzaFBhdHRlcm4oY29uc3QgUVRy YW5zZm9ybSAmbSwgYm9vbCAqc3BlY2lmeUNvbG9yLAorICAgICAgICAgcmV0dXJuIGdyYWRpZW50 QnJ1c2goYnJ1c2gsIG1hdHJpeCwgZ1N0YXRlT2JqZWN0KTsKKyAgICAgfQorIAorKyAgICBtYXRy aXggPSBicnVzaC50cmFuc2Zvcm0oKSAqIG1hdHJpeDsKKysKKyAgICAgaWYgKCghYnJ1c2guaXNP cGFxdWUoKSAmJiBicnVzaC5zdHlsZSgpIDwgUXQ6OkxpbmVhckdyYWRpZW50UGF0dGVybikgfHwg b3BhY2l0eSAhPSAxLjApCisgICAgICAgICAqZ1N0YXRlT2JqZWN0ID0gYWRkQ29uc3RhbnRBbHBo YU9iamVjdChxUm91bmQoYnJ1c2guY29sb3IoKS5hbHBoYSgpICogb3BhY2l0eSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxUm91bmQocGVuLmNvbG9y KCkuYWxwaGEoKSAqIG9wYWNpdHkpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWlu dGluZy9xc3Ryb2tlci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xc3Ryb2tlci5jcHAK K2luZGV4IGNiNWQzOTVlODAuLjNiNjM1N2E4OTMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1 aS9wYWludGluZy9xc3Ryb2tlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fz dHJva2VyLmNwcAorQEAgLTExODIsNiArMTE4Miw3IEBAIHZvaWQgUURhc2hTdHJva2VyOjpwcm9j ZXNzQ3VycmVudFN1YnBhdGgoKQorICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGVudGlyZSBsaW5l IHNob3VsZCBiZSBjbGlwcGVkIGF3YXkgb3Igc2ltcGxpZmllZAorICAgICAgICAgYm9vbCBjbGlw SXQgPSBjbGlwcGluZyAmJiAhbGluZUludGVyc2VjdHNSZWN0KHByZXYsIGUsIGNsaXBfdGwsIGNs aXBfYnIpOworICAgICAgICAgYm9vbCBza2lwRGFzaGluZyA9IGVsZW4gKiBpbnZTdW1MZW5ndGgg PiByZXBldGl0aW9uTGltaXQoKTsKKysgICAgICAgIGludCBtYXhEYXNoZXMgPSBkYXNoQ291bnQ7 CisgICAgICAgICBpZiAoc2tpcERhc2hpbmcgfHwgY2xpcEl0KSB7CisgICAgICAgICAgICAgLy8g Q3V0IGF3YXkgZnVsbCBkYXNoIHNlcXVlbmNlcy4KKyAgICAgICAgICAgICBlbGVuIC09IHN0ZDo6 Zmxvb3IoZWxlbiAqIGludlN1bUxlbmd0aCkgKiBzdW1MZW5ndGg7CitAQCAtMTE5Niw3ICsxMTk3 LDcgQEAgdm9pZCBRRGFzaFN0cm9rZXI6OnByb2Nlc3NDdXJyZW50U3VicGF0aCgpCisgICAgICAg ICAgICAgICAgICAgICBwb3MgPSBlc3RvcDsgLy8gbW92ZSBwb3MgdG8gbmV4dCBwYXRoIGVsZW1l bnQKKyAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAgICAgICAgICB9 IGVsc2UgeyAvLyBEYXNoIGlzIG9uIHRoaXMgbGluZQorLSAgICAgICAgICAgICAgICAgICAgcG9z ID0gZHBvcyArIGVzdGFydDsKKysgICAgICAgICAgICAgICAgICAgIHBvcyA9IC0tbWF4RGFzaGVz ID4gMCA/IGRwb3MgKyBlc3RhcnQgOiBlc3RvcDsKKyAgICAgICAgICAgICAgICAgICAgIGRvbmUg PSBwb3MgPj0gZXN0b3A7CisgICAgICAgICAgICAgICAgICAgICBpZiAoKytpZGFzaCA+PSBkYXNo Q291bnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgaWRhc2ggPSAwOworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24gYi9xdGJhc2Uvc3Jj L2d1aS9wYWludGluZy9xdF9hdHRyaWJ1dGlvbi5qc29uCitpbmRleCA3YjE2ZThjMjExLi4wZTg3 ZDMwYWEyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXRfYXR0cmlidXRp b24uanNvbgorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXRfYXR0cmlidXRpb24uanNv bgorQEAgLTEwLDcgKzEwLDcgQEAKKyAgICAgICAgICJIb21lcGFnZSI6ICJodHRwOi8vd3d3LmZy ZWV0eXBlLm9yZyIsCisgICAgICAgICAiTGljZW5zZSI6ICJGcmVldHlwZSBQcm9qZWN0IExpY2Vu c2Ugb3IgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdjIuMCBvbmx5IiwKKyAgICAgICAgICJM aWNlbnNlSWQiOiAiRlRMIG9yIEdQTC0yLjAiLAorLSAgICAgICAgIkxpY2Vuc2VGaWxlIjogIi4u Ly4uLzNyZHBhcnR5L2ZyZWV0eXBlL2RvY3MvTElDRU5TRS5UWFQiLAorKyAgICAgICAgIkxpY2Vu c2VGaWxlIjogIi4uLy4uLzNyZHBhcnR5L2ZyZWV0eXBlL0xJQ0VOU0UuVFhUIiwKKyAgICAgICAg ICJDb3B5cmlnaHQiOiAiQ29weXJpZ2h0IDIwMDAtMjAxNiBieSBEYXZpZCBUdXJuZXIsIFJvYmVy dCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuIgorICAgICB9LAorICAgICB7CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9wLmggYi9xdGJhc2Uvc3JjL2d1aS9y aGkvcXNoYWRlcl9wX3AuaAoraW5kZXggZWM5ZDI1OTcxZi4uNGE1YTdhNmQ1MSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyX3BfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1 aS9yaGkvcXNoYWRlcl9wX3AuaAorQEAgLTY4LDEzICs2OCwxMyBAQCBzdHJ1Y3QgUV9HVUlfRVhQ T1JUIFFTaGFkZXJQcml2YXRlCisgICAgIHsKKyAgICAgfQorIAorLSAgICBRU2hhZGVyUHJpdmF0 ZShjb25zdCBRU2hhZGVyUHJpdmF0ZSAqb3RoZXIpCisrICAgIFFTaGFkZXJQcml2YXRlKGNvbnN0 IFFTaGFkZXJQcml2YXRlICZvdGhlcikKKyAgICAgICAgIDogcmVmKDEpLAorLSAgICAgICAgICBx c2JWZXJzaW9uKG90aGVyLT5xc2JWZXJzaW9uKSwKKy0gICAgICAgICAgc3RhZ2Uob3RoZXItPnN0 YWdlKSwKKy0gICAgICAgICAgZGVzYyhvdGhlci0+ZGVzYyksCistICAgICAgICAgIHNoYWRlcnMo b3RoZXItPnNoYWRlcnMpLAorLSAgICAgICAgICBiaW5kaW5ncyhvdGhlci0+YmluZGluZ3MpCisr ICAgICAgICAgIHFzYlZlcnNpb24ob3RoZXIucXNiVmVyc2lvbiksCisrICAgICAgICAgIHN0YWdl KG90aGVyLnN0YWdlKSwKKysgICAgICAgICAgZGVzYyhvdGhlci5kZXNjKSwKKysgICAgICAgICAg c2hhZGVycyhvdGhlci5zaGFkZXJzKSwKKysgICAgICAgICAgYmluZGluZ3Mob3RoZXIuYmluZGlu Z3MpCisgICAgIHsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3JoaS9x c2hhZGVyZGVzY3JpcHRpb25fcF9wLmggYi9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcmRlc2Ny aXB0aW9uX3BfcC5oCitpbmRleCBlYzJiMGI2YjRjLi4zZGEzM2E4YTJiIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlwdGlvbl9wX3AuaAorKysrIGIvcXRiYXNl L3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlwdGlvbl9wX3AuaAorQEAgLTYzLDE2ICs2MywxNiBA QCBzdHJ1Y3QgUV9HVUlfRVhQT1JUIFFTaGFkZXJEZXNjcmlwdGlvblByaXZhdGUKKyAgICAgICAg IGxvY2FsU2l6ZVswXSA9IGxvY2FsU2l6ZVsxXSA9IGxvY2FsU2l6ZVsyXSA9IDA7CisgICAgIH0K KyAKKy0gICAgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0ZShjb25zdCBRU2hhZGVyRGVzY3JpcHRp b25Qcml2YXRlICpvdGhlcikKKysgICAgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0ZShjb25zdCBR U2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlICZvdGhlcikKKyAgICAgICAgIDogcmVmKDEpLAorLSAg ICAgICAgICBpblZhcnMob3RoZXItPmluVmFycyksCistICAgICAgICAgIG91dFZhcnMob3RoZXIt Pm91dFZhcnMpLAorLSAgICAgICAgICB1bmlmb3JtQmxvY2tzKG90aGVyLT51bmlmb3JtQmxvY2tz KSwKKy0gICAgICAgICAgcHVzaENvbnN0YW50QmxvY2tzKG90aGVyLT5wdXNoQ29uc3RhbnRCbG9j a3MpLAorLSAgICAgICAgICBzdG9yYWdlQmxvY2tzKG90aGVyLT5zdG9yYWdlQmxvY2tzKSwKKy0g ICAgICAgICAgY29tYmluZWRJbWFnZVNhbXBsZXJzKG90aGVyLT5jb21iaW5lZEltYWdlU2FtcGxl cnMpLAorLSAgICAgICAgICBzdG9yYWdlSW1hZ2VzKG90aGVyLT5zdG9yYWdlSW1hZ2VzKSwKKy0g ICAgICAgICAgbG9jYWxTaXplKG90aGVyLT5sb2NhbFNpemUpCisrICAgICAgICAgIGluVmFycyhv dGhlci5pblZhcnMpLAorKyAgICAgICAgICBvdXRWYXJzKG90aGVyLm91dFZhcnMpLAorKyAgICAg ICAgICB1bmlmb3JtQmxvY2tzKG90aGVyLnVuaWZvcm1CbG9ja3MpLAorKyAgICAgICAgICBwdXNo Q29uc3RhbnRCbG9ja3Mob3RoZXIucHVzaENvbnN0YW50QmxvY2tzKSwKKysgICAgICAgICAgc3Rv cmFnZUJsb2NrcyhvdGhlci5zdG9yYWdlQmxvY2tzKSwKKysgICAgICAgICAgY29tYmluZWRJbWFn ZVNhbXBsZXJzKG90aGVyLmNvbWJpbmVkSW1hZ2VTYW1wbGVycyksCisrICAgICAgICAgIHN0b3Jh Z2VJbWFnZXMob3RoZXIuc3RvcmFnZUltYWdlcyksCisrICAgICAgICAgIGxvY2FsU2l6ZShvdGhl ci5sb2NhbFNpemUpCisgICAgIHsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Z3VpL3RleHQvcWZvbnRkYXRhYmFzZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS90ZXh0L3Fmb250ZGF0 YWJhc2UuY3BwCitpbmRleCBhNjU3YThjNTE2Li40ZmMwMTAwOTU4IDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkv dGV4dC9xZm9udGRhdGFiYXNlLmNwcAorQEAgLTk4Myw3ICs5ODMsNyBAQCBRRm9udEVuZ2luZSAq bG9hZFNpbmdsZUVuZ2luZShpbnQgc2NyaXB0LAorICAgICAgICAgaWYgKHN0eWxlLT5rZXkuc3Ry ZXRjaCAhPSAwICYmIHJlcXVlc3Quc3RyZXRjaCAhPSAwCisgICAgICAgICAgICAgJiYgKHJlcXVl c3Quc3R5bGVOYW1lLmlzRW1wdHkoKSB8fCByZXF1ZXN0LnN0eWxlTmFtZSAhPSBzdHlsZS0+c3R5 bGVOYW1lKSkgeworICAgICAgICAgICAgIGRlZi5zdHJldGNoID0gKHJlcXVlc3Quc3RyZXRjaCAq IDEwMCArIHN0eWxlLT5rZXkuc3RyZXRjaCAvIDIpIC8gc3R5bGUtPmtleS5zdHJldGNoOworLSAg ICAgICAgfSBlbHNlIHsKKysgICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdC5zdHJldGNoID09IFFG b250OjpBbnlTdHJldGNoKSB7CisgICAgICAgICAgICAgZGVmLnN0cmV0Y2ggPSAxMDA7CisgICAg ICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGRvY3VtZW50 bGF5b3V0LmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRkb2N1bWVudGxheW91dC5jcHAK K2luZGV4IGYzZTZlYTIxMDAuLjcyMjY3ZTkzODAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1 aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS90ZXh0 L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwCitAQCAtMjEyMyw3ICsyMTIzLDcgQEAgdm9pZCBRVGV4 dERvY3VtZW50TGF5b3V0UHJpdmF0ZTo6ZHJhd0xpc3RJdGVtKGNvbnN0IFFQb2ludEYgJm9mZnNl dCwgUVBhaW50ZXIgKnAKKyB7CisgICAgIFFfUShjb25zdCBRVGV4dERvY3VtZW50TGF5b3V0KTsK KyAgICAgY29uc3QgUVRleHRCbG9ja0Zvcm1hdCBibG9ja0Zvcm1hdCA9IGJsLmJsb2NrRm9ybWF0 KCk7CistICAgIGNvbnN0IFFUZXh0Q2hhckZvcm1hdCBjaGFyRm9ybWF0ID0gUVRleHRDdXJzb3Io YmwpLmNoYXJGb3JtYXQoKTsKKysgICAgY29uc3QgUVRleHRDaGFyRm9ybWF0IGNoYXJGb3JtYXQg PSBibC5jaGFyRm9ybWF0KCk7CisgICAgIFFGb250IGZvbnQoY2hhckZvcm1hdC5mb250KCkpOwor ICAgICBpZiAocS0+cGFpbnREZXZpY2UoKSkKKyAgICAgICAgIGZvbnQgPSBRRm9udChmb250LCBx LT5wYWludERldmljZSgpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0 ZW5naW5lLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRlbmdpbmUuY3BwCitpbmRleCBj ZTRhYmFjNDcyLi5hNmM2NmU1ZDJkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9x dGV4dGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRlbmdpbmUuY3Bw CitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqCistKiogQ29weXJp Z2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEg VGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vu c2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdEd1aSBtb2R1bGUgb2Yg dGhlIFF0IFRvb2xraXQuCitAQCAtMTU2NSw2ICsxNTY1LDEyIEBAIHZvaWQgUVRleHRFbmdpbmU6 OnNoYXBlVGV4dChpbnQgaXRlbSkgY29uc3QKKyAgICAgICAgIC8vIE92ZXJ3cml0ZSB3aXRoIDAg dG9rZW4gdG8gaW5kaWNhdGUgZmFpbHVyZQorICAgICAgICAgUUdseXBoTGF5b3V0IGcgPSBhdmFp bGFibGVHbHlwaHMoJnNpKTsKKyAgICAgICAgIGcuZ2x5cGhzWzBdID0gMDsKKysgICAgICAgIGcu YXR0cmlidXRlc1swXS5jbHVzdGVyU3RhcnQgPSB0cnVlOworKworKyAgICAgICAgdXNob3J0ICps b2dfY2x1c3RlcnMgPSBsb2dDbHVzdGVycygmc2kpOworKyAgICAgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBpdGVtTGVuZ3RoOyArK2kpCisrICAgICAgICAgICAgbG9nX2NsdXN0ZXJzW2ldID0gMDsK KysKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Z3VpL3V0aWwvcWRlc2t0b3BzZXJ2aWNlcy5jcHAgYi9xdGJhc2Uvc3JjL2d1aS91dGlsL3FkZXNr dG9wc2VydmljZXMuY3BwCitpbmRleCBmYmI2M2E5NDA4Li40ZDVmYWZhYWE3IDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNwcAorKysrIGIvcXRiYXNl L3NyYy9ndWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNwcAorQEAgLTU0LDYgKzU0LDggQEAKKyAj aW5jbHVkZSA8cXBhL3FwbGF0Zm9ybWludGVncmF0aW9uLmg+CisgI2luY2x1ZGUgPHFkaXIuaD4K KyAKKysjaW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcWxvY2tpbmdfcC5oPgorKworIFFUX0JFR0lO X05BTUVTUEFDRQorIAorIGNsYXNzIFFPcGVuVXJsSGFuZGxlclJlZ2lzdHJ5IDogcHVibGljIFFP YmplY3QKK0BAIC04MSw2ICs4Myw3IEBAIFFfR0xPQkFMX1NUQVRJQyhRT3BlblVybEhhbmRsZXJS ZWdpc3RyeSwgaGFuZGxlclJlZ2lzdHJ5KQorIAorIHZvaWQgUU9wZW5VcmxIYW5kbGVyUmVnaXN0 cnk6OmhhbmRsZXJEZXN0cm95ZWQoUU9iamVjdCAqaGFuZGxlcikKKyB7CisrICAgIGNvbnN0IGF1 dG8gbG9jayA9IHF0X3Njb3BlZF9sb2NrKG11dGV4KTsKKyAgICAgSGFuZGxlckhhc2g6Okl0ZXJh dG9yIGl0ID0gaGFuZGxlcnMuYmVnaW4oKTsKKyAgICAgd2hpbGUgKGl0ICE9IGhhbmRsZXJzLmVu ZCgpKSB7CisgICAgICAgICBpZiAoaXQtPnJlY2VpdmVyID09IGhhbmRsZXIpIHsKK0BAIC0yOTQs NyArMjk3LDggQEAgdm9pZCBRRGVza3RvcFNlcnZpY2VzOjpzZXRVcmxIYW5kbGVyKGNvbnN0IFFT dHJpbmcgJnNjaGVtZSwgUU9iamVjdCAqcmVjZWl2ZXIsIGMKKyAgICAgaC5uYW1lID0gbWV0aG9k OworICAgICByZWdpc3RyeS0+aGFuZGxlcnMuaW5zZXJ0KHNjaGVtZS50b0xvd2VyKCksIGgpOwor ICAgICBRT2JqZWN0Ojpjb25uZWN0KHJlY2VpdmVyLCBTSUdOQUwoZGVzdHJveWVkKFFPYmplY3Qq KSksCistICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIFNMT1QoaGFuZGxlckRlc3Ryb3ll ZChRT2JqZWN0KikpKTsKKysgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgU0xPVChoYW5k bGVyRGVzdHJveWVkKFFPYmplY3QqKSksCisrICAgICAgICAgICAgICAgICAgICAgUXQ6OkRpcmVj dENvbm5lY3Rpb24pOworIH0KKyAKKyAvKiEKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS91 dGlsL3Fwa21oYW5kbGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcXBrbWhhbmRsZXIuY3Bw CitpbmRleCBlMGMzYjc1ZWZlLi4zNDE0ZjlkOGJhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9n dWkvdXRpbC9xcGttaGFuZGxlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcXBrbWhh bmRsZXIuY3BwCitAQCAtNTcsNyArNTcsNyBAQCBzdHJ1Y3QgUGttVHlwZQorICAgICBxdWludDMy IGJ5dGVzUGVyQmxvY2s7CisgfTsKKyAKKy1zdGF0aWMgUGttVHlwZSB0eXBlTWFwWzVdID0gewor K3N0YXRpYyBjb25zdGV4cHIgUGttVHlwZSB0eXBlTWFwWzVdID0geworICAgICB7IDB4OEQ2NCwg IDggfSwgICAvLyBHTF9FVEMxX1JHQjhfT0VTCisgICAgIHsgMHg5Mjc0LCAgOCB9LCAgIC8vIEdM X0NPTVBSRVNTRURfUkdCOF9FVEMyCisgICAgIHsgMCwgMCB9LCAgICAgICAgIC8vIHVudXNlZCAo b2Jzb2xldGUpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29y a3JlcGx5ZmlsZWltcGwuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3Jl cGx5ZmlsZWltcGwuY3BwCitpbmRleCBiNmJlOTMxNDdhLi42ZTY5YjRjNGQzIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5ZmlsZWltcGwuY3BwCisr KysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlmaWxlaW1wbC5jcHAK K0BAIC04OSw5ICs4OSwxMCBAQCBRTmV0d29ya1JlcGx5RmlsZUltcGw6OlFOZXR3b3JrUmVwbHlG aWxlSW1wbChRTmV0d29ya0FjY2Vzc01hbmFnZXIgKm1hbmFnZXIsIGNvbgorICAgICAgICAgLy8g d2UgaGFuZGxlIG9ubHkgbG9jYWwgZmlsZXMKKyAgICAgICAgIFFTdHJpbmcgbXNnID0gUUNvcmVB cHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRTmV0d29ya0FjY2Vzc0ZpbGVCYWNrZW5kIiwgIlJlcXVl c3QgZm9yIG9wZW5pbmcgbm9uLWxvY2FsIGZpbGUgJTEiKS5hcmcodXJsLnRvU3RyaW5nKCkpOwor ICAgICAgICAgc2V0RXJyb3IoUU5ldHdvcmtSZXBseTo6UHJvdG9jb2xJbnZhbGlkT3BlcmF0aW9u RXJyb3IsIG1zZyk7CisrICAgICAgICBzZXRGaW5pc2hlZCh0cnVlKTsgLy8gV2UncmUgZmluaXNo ZWQsIHdpbGwgZW1pdCBmaW5pc2hlZCgpIGFmdGVyIGN0b3IgaXMgZG9uZS4KKyAgICAgICAgIFFN ZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgImVycm9yT2NjdXJyZWQiLCBRdDo6UXVldWVk Q29ubmVjdGlvbiwKKyAgICAgICAgICAgICBRX0FSRyhRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJy b3IsIFFOZXR3b3JrUmVwbHk6OlByb3RvY29sSW52YWxpZE9wZXJhdGlvbkVycm9yKSk7CistICAg ICAgICBmaWxlT3BlbkZpbmlzaGVkKGZhbHNlKTsKKysgICAgICAgIFFNZXRhT2JqZWN0OjppbnZv a2VNZXRob2QodGhpcywgW3RoaXNdKCl7IGZpbGVPcGVuRmluaXNoZWQoZmFsc2UpOyB9LCBRdDo6 UXVldWVkQ29ubmVjdGlvbik7CisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAjZW5kaWYKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlpbXBsLmNw cCBiL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWltcGwuY3BwCitpbmRl eCBiY2RmNmVlMmYxLi4zYjZkZWI4MmJkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3Jr L2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9h Y2Nlc3MvcW5ldHdvcmtyZXBseWltcGwuY3BwCitAQCAtNjgwLDcgKzY4MCw3IEBAIHZvaWQgUU5l dHdvcmtSZXBseUltcGxQcml2YXRlOjphcHBlbmREb3duc3RyZWFtRGF0YShRSU9EZXZpY2UgKmRh dGEpCisgICAgIC8vIHJlYWQgdW50aWwgRU9GIGZyb20gZGF0YQorICAgICBpZiAoUV9VTkxJS0VM WShjb3B5RGV2aWNlKSkgeworICAgICAgICAgcUNyaXRpY2FsKCJRTmV0d29ya1JlcGx5SW1wbDog Y29weSBmcm9tIFFJT0RldmljZSBhbHJlYWR5IGluIHByb2dyZXNzIC0tICIKKy0gICAgICAgICAg ICAgICAgICAiYmFja2VuZCBwcm9ibHkgbmVlZHMgdG8gYmUgZml4ZWQiKTsKKysgICAgICAgICAg ICAgICAgICAiYmFja2VuZCBwcm9iYWJseSBuZWVkcyB0byBiZSBmaXhlZCIpOworICAgICAgICAg cmV0dXJuOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5l bC9xYXV0aGVudGljYXRvci5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3FhdXRoZW50 aWNhdG9yLmNwcAoraW5kZXggZDlmZTdiYzQ3Yi4uY2NkMDRiMjk0YSAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0b3IuY3BwCisrKysgYi9xdGJhc2Uv c3JjL25ldHdvcmsva2VybmVsL3FhdXRoZW50aWNhdG9yLmNwcAorQEAgLTUwLDYgKzUwLDcgQEAK KyAjaW5jbHVkZSA8cXN0cmluZy5oPgorICNpbmNsdWRlIDxxZGF0ZXRpbWUuaD4KKyAjaW5jbHVk ZSA8cXJhbmRvbS5oPgorKyNpbmNsdWRlICJwcml2YXRlL3FzeXN0ZW1saWJyYXJ5X3AuaCIKKyAK KyAjaWZkZWYgUV9PU19XSU4KKyAjaW5jbHVkZSA8cW11dGV4Lmg+CitAQCAtMTU2Myw3ICsxNTY0 LDcgQEAgc3RhdGljIGJvb2wgcV9TU1BJX2xpYnJhcnlfbG9hZCgpCisgCisgICAgIC8vIEluaXRp YWxpemUgc2VjdXJpdHkgaW50ZXJmYWNlCisgICAgIGlmIChwU2VjdXJpdHlGdW5jdGlvblRhYmxl ID09IG51bGxwdHIpIHsKKy0gICAgICAgIHNlY3VyaXR5RExMSGFuZGxlID0gTG9hZExpYnJhcnko TCJzZWN1cjMyLmRsbCIpOworKyAgICAgICAgc2VjdXJpdHlETExIYW5kbGUgPSBRU3lzdGVtTGli cmFyeTo6bG9hZChMInNlY3VyMzIiKTsKKyAgICAgICAgIGlmIChzZWN1cml0eURMTEhhbmRsZSAh PSBudWxscHRyKSB7CisgICAgICAgICAgICAgSU5JVF9TRUNVUklUWV9JTlRFUkZBQ0UgcEluaXRT ZWN1cml0eUludGVyZmFjZSA9CisgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8SU5J VF9TRUNVUklUWV9JTlRFUkZBQ0U+KAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9r ZXJuZWwvcWhvc3RpbmZvX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xaG9z dGluZm9fdW5peC5jcHAKK2luZGV4IDliMGEyZWU2NjkuLjczNjc5YzllZjEgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0aW5mb191bml4LmNwcAorKysrIGIvcXRi YXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xaG9zdGluZm9fdW5peC5jcHAKK0BAIC0xMjIsNyArMTIy LDYgQEAgc3RhdGljIFFGdW5jdGlvblBvaW50ZXIgcmVzb2x2ZVN5bWJvbChRTGlicmFyeSAmbGli LCBjb25zdCBjaGFyICpzeW0pCisgCisgTGliUmVzb2x2OjpMaWJSZXNvbHYoKQorIHsKKy0gICAg UUxpYnJhcnkgbGliOworICNpZmRlZiBMSUJSRVNPTFZfU08KKyAgICAgbGliLnNldEZpbGVOYW1l KFFTdHJpbmdMaXRlcmFsKExJQlJFU09MVl9TTykpOworICAgICBpZiAoIWxpYi5sb2FkKCkpCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9xc29ja3M1c29ja2V0ZW5naW5l LmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zb2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAK K2luZGV4IDNhMDQ2ZmQxMTYuLjk3ZmFkY2EwYjMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25l dHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25l dHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUuY3BwCitAQCAtMTI5Niw3ICsxMjk2LDcg QEAgdm9pZCBRU29ja3M1U29ja2V0RW5naW5lUHJpdmF0ZTo6X3FfdWRwU29ja2V0UmVhZE5vdGlm aWNhdGlvbigpCisgICAgICAgICBpbnQgcG9zID0gMDsKKyAgICAgICAgIGNvbnN0IGNoYXIgKmJ1 ZiA9IGluQnVmLmNvbnN0RGF0YSgpOworICAgICAgICAgaWYgKGluQnVmLnNpemUoKSA8IDQpIHsK Ky0gICAgICAgICAgICBRU09DS1M1X0RfREVCVUcgPDwgImJ1Z3VzIHVkcCBkYXRhLCBkaXNjYXJk aW5nIjsKKysgICAgICAgICAgICBRU09DS1M1X0RfREVCVUcgPDwgImJvZ3VzIHVkcCBkYXRhLCBk aXNjYXJkaW5nIjsKKyAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICB9CisgICAgICAgICBR U29ja3M1UmV2aXZlZERhdGFncmFtIGRhdGFncmFtOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv bmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsv c3NsL3Fzc2xjb250ZXh0X29wZW5zc2wuY3BwCitpbmRleCBjOWYyMDJmNTczLi5jOTkyZGE5ZDhl IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsY29udGV4dF9vcGVuc3Ns LmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsY29udGV4dF9vcGVuc3NsLmNw cAorQEAgLTQwOSw3ICs0MDksNyBAQCBpbml0X2NvbnRleHQ6CisgICAgICAgICBicmVhazsKKyAg ICAgY2FzZSBRU3NsOjpEdGxzVjFfME9yTGF0ZXI6CisgICAgICAgICBtaW5WZXJzaW9uID0gRFRM UzFfVkVSU0lPTjsKKy0gICAgICAgIG1heFZlcnNpb24gPSBEVExTX01BWF9WRVJTSU9OOworKyAg ICAgICAgbWF4VmVyc2lvbiA9IDA7CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBRU3NsOjpE dGxzVjFfMjoKKyAgICAgICAgIG1pblZlcnNpb24gPSBEVExTMV8yX1ZFUlNJT047CitAQCAtNDE3 LDcgKzQxNyw3IEBAIGluaXRfY29udGV4dDoKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIFFT c2w6OkR0bHNWMV8yT3JMYXRlcjoKKyAgICAgICAgIG1pblZlcnNpb24gPSBEVExTMV8yX1ZFUlNJ T047CistICAgICAgICBtYXhWZXJzaW9uID0gRFRMU19NQVhfVkVSU0lPTjsKKysgICAgICAgIG1h eFZlcnNpb24gPSAwOworICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUVNzbDo6VGxzVjFfM09y TGF0ZXI6CisgI2lmZGVmIFRMUzFfM19WRVJTSU9OCitAQCAtNDU1LDcgKzQ1NSw3IEBAIGluaXRf Y29udGV4dDoKKyAgICAgfQorIAorICAgICAvLyBFbmFibGUgYnVnIHdvcmthcm91bmRzLgorLSAg ICBsb25nIG9wdGlvbnMgPSBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OnNldHVwT3BlblNzbE9w dGlvbnMoY29uZmlndXJhdGlvbi5wcm90b2NvbCgpLCBjb25maWd1cmF0aW9uLmQtPnNzbE9wdGlv bnMpOworKyAgICBxc3Nsb3B0aW9ucyBvcHRpb25zID0gUVNzbFNvY2tldEJhY2tlbmRQcml2YXRl OjpzZXR1cE9wZW5Tc2xPcHRpb25zKGNvbmZpZ3VyYXRpb24ucHJvdG9jb2woKSwgY29uZmlndXJh dGlvbi5kLT5zc2xPcHRpb25zKTsKKyAgICAgcV9TU0xfQ1RYX3NldF9vcHRpb25zKHNzbENvbnRl eHQtPmN0eCwgb3B0aW9ucyk7CisgCisgICAgIC8vIFRlbGwgT3BlblNTTCB0byByZWxlYXNlIG1l bW9yeSBlYXJseQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGRpZmZp ZWhlbGxtYW5wYXJhbWV0ZXJzX29wZW5zc2wuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9x c3NsZGlmZmllaGVsbG1hbnBhcmFtZXRlcnNfb3BlbnNzbC5jcHAKK2luZGV4IGFhZjg3NDExMzAu LmI1ODkzNTM3MmMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xkaWZm aWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3Jr L3NzbC9xc3NsZGlmZmllaGVsbG1hbnBhcmFtZXRlcnNfb3BlbnNzbC5jcHAKK0BAIC01OSw1NyAr NTksNiBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorLSNpZmRlZiBPUEVOU1NMX05PX0RF UFJFQ0FURURfM18wCistCistc3RhdGljIGludCBxX0RIX2NoZWNrKERIICpkaCwgaW50ICpzdGF0 dXMpCisteworLSAgICAvLyBESF9jaGVjayB3YXMgZmlyc3QgZGVwcmVjYXRlZCBpbiBPcGVuU1NM IDMuMC4wLCBhcyBsb3ctbGV2ZWwKKy0gICAgLy8gQVBJOyB0aGUgRVZQX1BLRVkgZmFtaWx5IG9m IGZ1bmN0aW9ucyB3YXMgYWR2aXNlZCBhcyBhbiBhbHRlcm5hdGl2ZS4KKy0gICAgLy8gQXMgb2Yg bm93IEVWUF9QS0VZX3BhcmFtc19jaGVjayBlbmRzIHVwIGNhbGxpbmcgLi4uIERIX2NoZWNrLAor LSAgICAvLyB3aGljaCBpcyBnb29kIGVub3VnaC4KKy0KKy0gICAgUV9BU1NFUlQoZGgpOworLSAg ICBRX0FTU0VSVChzdGF0dXMpOworLQorLSAgICBFVlBfUEtFWSAqa2V5ID0gcV9FVlBfUEtFWV9u ZXcoKTsKKy0gICAgaWYgKCFrZXkpIHsKKy0gICAgICAgIHFDV2FybmluZyhsY1NzbCwgIkVWUF9Q S0VZX25ldyBmYWlsZWQiKTsKKy0gICAgICAgIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6bG9n QW5kQ2xlYXJFcnJvclF1ZXVlKCk7CistICAgICAgICByZXR1cm4gMDsKKy0gICAgfQorLSAgICBj b25zdCBhdXRvIGtleURlbGV0ZXIgPSBxU2NvcGVHdWFyZChba2V5XSgpeworLSAgICAgICAgcV9F VlBfUEtFWV9mcmVlKGtleSk7CistICAgIH0pOworLSAgICBpZiAoIXFfRVZQX1BLRVlfc2V0MV9E SChrZXksIGRoKSkgeworLSAgICAgICAgcUNXYXJuaW5nKGxjU3NsLCAiRVZQX1BLRVlfc2V0MV9E SCBmYWlsZWQiKTsKKy0gICAgICAgIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6bG9nQW5kQ2xl YXJFcnJvclF1ZXVlKCk7CistICAgICAgICByZXR1cm4gMDsKKy0gICAgfQorLQorLSAgICBFVlBf UEtFWV9DVFggKmtleUN0eCA9IHFfRVZQX1BLRVlfQ1RYX25ldyhrZXksIG51bGxwdHIpOworLSAg ICBpZiAoIWtleUN0eCkgeworLSAgICAgICAgcUNXYXJuaW5nKGxjU3NsLCAiRVZQX1BLRVlfQ1RY X25ldyBmYWlsZWQiKTsKKy0gICAgICAgIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6bG9nQW5k Q2xlYXJFcnJvclF1ZXVlKCk7CistICAgICAgICByZXR1cm4gMDsKKy0gICAgfQorLSAgICBjb25z dCBhdXRvIGN0eERlbGV0ZXIgPSBxU2NvcGVHdWFyZChba2V5Q3R4XXsKKy0gICAgICAgIHFfRVZQ X1BLRVlfQ1RYX2ZyZWUoa2V5Q3R4KTsKKy0gICAgfSk7CistCistICAgIGNvbnN0IGludCByZXN1 bHQgPSBxX0VWUF9QS0VZX3BhcmFtX2NoZWNrKGtleUN0eCk7CistICAgIFFTc2xTb2NrZXRCYWNr ZW5kUHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7CistICAgIC8vIE5vdGU6IHVubGlr ZSBESF9jaGVjaywgd2UgY2Fubm90IG9idGFpbiB0aGUgJ3N0YXR1cycsCistICAgIC8vIGlmIHRo ZSAncmVzdWx0JyBpcyAwIChhY3R1YWxseSB0aGUgcmVzdWx0IGlzIDEgb25seQorLSAgICAvLyBp ZiB0aGlzICdzdGF0dXMnIHdhcyAwKS4gV2UgY291bGQgcHJvYmFibHkgY2hlY2sgdGhlCistICAg IC8vIGVycm9ycyBmcm9tIHRoZSBlcnJvciBxdWV1ZSwgYnV0IGl0J3Mgbm90IG5lZWRlZCBhbnl3 YXkKKy0gICAgLy8gLSBzZWUgdGhlICdpc1NhZmVESCcgYmVsb3csIGhvdyBpdCByZXR1cm5zIGlt bWVkaWF0ZWx5CistICAgIC8vIG9uIDAuCistICAgIFFfVU5VU0VEKHN0YXR1cykKKy0KKy0gICAg cmV0dXJuIHJlc3VsdDsKKy19CistI2VuZGlmIC8vIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAK Ky0KKyBzdGF0aWMgYm9vbCBpc1NhZmVESChESCAqZGgpCisgeworICAgICBpbnQgc3RhdHVzID0g MDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNz bC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbC5jcHAKK2lu ZGV4IDM3ZmFkMmE2OGYuLjhmNjg1OGM4NjcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdv cmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9z c2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcAorQEAgLTU1MCw5ICs1NTAsOSBAQCBzdGF0aWMgdm9p ZCBxX2xvYWRDaXBoZXJzRm9yQ29ubmVjdGlvbihTU0wgKmNvbm5lY3Rpb24sIFFMaXN0PFFTc2xD aXBoZXI+ICZjaXBoZQorIC8vIERlZmluZWQgaW4gcXNzbHNvY2tldC5jcHAKKyB2b2lkIHFfc2V0 RGVmYXVsdER0bHNDaXBoZXJzKGNvbnN0IFFMaXN0PFFTc2xDaXBoZXI+ICZjaXBoZXJzKTsKKyAK Ky1sb25nIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6c2V0dXBPcGVuU3NsT3B0aW9ucyhRU3Ns OjpTc2xQcm90b2NvbCBwcm90b2NvbCwgUVNzbDo6U3NsT3B0aW9ucyBzc2xPcHRpb25zKQorK3Fz c2xvcHRpb25zIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6c2V0dXBPcGVuU3NsT3B0aW9ucyhR U3NsOjpTc2xQcm90b2NvbCBwcm90b2NvbCwgUVNzbDo6U3NsT3B0aW9ucyBzc2xPcHRpb25zKQor IHsKKy0gICAgbG9uZyBvcHRpb25zOworKyAgICBxc3Nsb3B0aW9ucyBvcHRpb25zOworICAgICBp ZiAocHJvdG9jb2wgPT0gUVNzbDo6VGxzVjFTc2xWMykKKyAgICAgICAgIG9wdGlvbnMgPSBTU0xf T1BfQUxMfFNTTF9PUF9OT19TU0x2MnxTU0xfT1BfTk9fU1NMdjM7CisgICAgIGVsc2UgaWYgKHBy b3RvY29sID09IFFTc2w6OlNlY3VyZVByb3RvY29scykKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9wLmggYi9xdGJhc2Uvc3JjL25ldHdvcmsv c3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9wLmgKK2luZGV4IDQxMDNkZTIzZTguLjU1NDc1ODkyNTYg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9w LmgKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3AuaAor QEAgLTEwNyw2ICsxMDcsMTIgQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKysjaWYgZGVm aW5lZChPUEVOU1NMX1ZFUlNJT05fTUFKT1IpICYmIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAz CisrdHlwZWRlZiB1aW50NjRfdCBxc3Nsb3B0aW9uczsKKysjZWxzZQorK3R5cGVkZWYgdW5zaWdu ZWQgbG9uZyBxc3Nsb3B0aW9uczsKKysjZW5kaWYKKysKKyBzdHJ1Y3QgUVNzbEVycm9yRW50cnkg eworICAgICBpbnQgY29kZTsKKyAgICAgaW50IGRlcHRoOworQEAgLTE3MSw3ICsxNzcsNyBAQCBw dWJsaWM6CisgICAgIFFWZWN0b3I8UVNzbEVycm9yPiBvY3NwRXJyb3JzOworICAgICBRQnl0ZUFy cmF5IG9jc3BSZXNwb25zZURlcjsKKyAKKy0gICAgUV9BVVRPVEVTVF9FWFBPUlQgc3RhdGljIGxv bmcgc2V0dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBwcm90b2NvbCwgUVNzbDo6 U3NsT3B0aW9ucyBzc2xPcHRpb25zKTsKKysgICAgUV9BVVRPVEVTVF9FWFBPUlQgc3RhdGljIHFz c2xvcHRpb25zIHNldHVwT3BlblNzbE9wdGlvbnMoUVNzbDo6U3NsUHJvdG9jb2wgcHJvdG9jb2ws IFFTc2w6OlNzbE9wdGlvbnMgc3NsT3B0aW9ucyk7CisgICAgIHN0YXRpYyBRU3NsQ2lwaGVyIFFT c2xDaXBoZXJfZnJvbV9TU0xfQ0lQSEVSKGNvbnN0IFNTTF9DSVBIRVIgKmNpcGhlcik7CisgICAg IHN0YXRpYyBRTGlzdDxRU3NsQ2VydGlmaWNhdGU+IFNUQUNLT0ZYNTA5X3RvX1FTc2xDZXJ0aWZp Y2F0ZXMoU1RBQ0tfT0YoWDUwOSkgKng1MDkpOworICAgICBzdGF0aWMgUUxpc3Q8UVNzbEVycm9y PiB2ZXJpZnkoY29uc3QgUUxpc3Q8UVNzbENlcnRpZmljYXRlPiAmY2VydGlmaWNhdGVDaGFpbiwg Y29uc3QgUVN0cmluZyAmaG9zdE5hbWUpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29y ay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHMuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3Jr L3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5jcHAKK2luZGV4IGU1M2ZiMjc5ZjAuLjQ1 OWNjZDBiMTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRf b3BlbnNzbF9zeW1ib2xzLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29j a2V0X29wZW5zc2xfc3ltYm9scy5jcHAKK0BAIC0xNDgsNyArMTQ4LDYgQEAgREVGSU5FRlVOQyhp bnQsIEVWUF9QS0VZX3VwX3JlZiwgRVZQX1BLRVkgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCisg REVGSU5FRlVOQzIoRVZQX1BLRVlfQ1RYICosIEVWUF9QS0VZX0NUWF9uZXcsIEVWUF9QS0VZICpw a2V5LCBwa2V5LCBFTkdJTkUgKmUsIGUsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisgREVGSU5F RlVOQyhpbnQsIEVWUF9QS0VZX3BhcmFtX2NoZWNrLCBFVlBfUEtFWV9DVFggKmN0eCwgY3R4LCBy ZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkModm9pZCwgRVZQX1BLRVlfQ1RYX2ZyZWUsIEVW UF9QS0VZX0NUWCAqY3R4LCBjdHgsIHJldHVybiwgcmV0dXJuKQorLURFRklORUZVTkMoaW50LCBF VlBfUEtFWV9iYXNlX2lkLCBFVlBfUEtFWSAqYSwgYSwgcmV0dXJuIE5JRF91bmRlZiwgcmV0dXJu KQorIERFRklORUZVTkMoaW50LCBSU0FfYml0cywgUlNBICphLCBhLCByZXR1cm4gMCwgcmV0dXJu KQorIERFRklORUZVTkMoaW50LCBEU0FfYml0cywgRFNBICphLCBhLCByZXR1cm4gMCwgcmV0dXJu KQorIERFRklORUZVTkMoaW50LCBPUEVOU1NMX3NrX251bSwgT1BFTlNTTF9TVEFDSyAqYSwgYSwg cmV0dXJuIC0xLCByZXR1cm4pCitAQCAtMTU4LDcgKzE1Nyw3IEBAIERFRklORUZVTkMyKHZvaWQs IE9QRU5TU0xfc2tfcHVzaCwgT1BFTlNTTF9TVEFDSyAqYSwgYSwgdm9pZCAqYiwgYiwgcmV0dXJu LCBEVU1NCisgREVGSU5FRlVOQyh2b2lkLCBPUEVOU1NMX3NrX2ZyZWUsIE9QRU5TU0xfU1RBQ0sg KmEsIGEsIHJldHVybiwgRFVNTVlBUkcpCisgREVGSU5FRlVOQzIodm9pZCAqLCBPUEVOU1NMX3Nr X3ZhbHVlLCBPUEVOU1NMX1NUQUNLICphLCBhLCBpbnQgYiwgYiwgcmV0dXJuIG51bGxwdHIsIHJl dHVybikKKyBERUZJTkVGVU5DKGludCwgU1NMX3Nlc3Npb25fcmV1c2VkLCBTU0wgKmEsIGEsIHJl dHVybiAwLCByZXR1cm4pCistREVGSU5FRlVOQzIodW5zaWduZWQgbG9uZywgU1NMX0NUWF9zZXRf b3B0aW9ucywgU1NMX0NUWCAqY3R4LCBjdHgsIHVuc2lnbmVkIGxvbmcgb3AsIG9wLCByZXR1cm4g MCwgcmV0dXJuKQorK0RFRklORUZVTkMyKHFzc2xvcHRpb25zLCBTU0xfQ1RYX3NldF9vcHRpb25z LCBTU0xfQ1RYICpjdHgsIGN0eCwgcXNzbG9wdGlvbnMgb3AsIG9wLCByZXR1cm4gMCwgcmV0dXJu KQorIERFRklORUZVTkMoaW50LCBTU0xfQ1RYX2dldF9zZWN1cml0eV9sZXZlbCwgY29uc3QgU1NM X0NUWCAqY3R4LCBjdHgsIHJldHVybiAtMSwgcmV0dXJuKQorIERFRklORUZVTkMyKHZvaWQsIFNT TF9DVFhfc2V0X3NlY3VyaXR5X2xldmVsLCBTU0xfQ1RYICpjdHgsIGN0eCwgaW50IGxldmVsLCBs ZXZlbCwgcmV0dXJuLCByZXR1cm4pCisgI2lmZGVmIFRMUzFfM19WRVJTSU9OCitAQCAtMzcxLDcg KzM3MCwxNSBAQCBERUZJTkVGVU5DKGNvbnN0IFNTTF9DSVBIRVIgKiwgU1NMX2dldF9jdXJyZW50 X2NpcGhlciwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0cgorIERFRklORUZVTkMoaW50LCBTU0xf dmVyc2lvbiwgY29uc3QgU1NMICphLCBhLCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMy KGludCwgU1NMX2dldF9lcnJvciwgU1NMICphLCBhLCBpbnQgYiwgYiwgcmV0dXJuIC0xLCByZXR1 cm4pCisgREVGSU5FRlVOQyhTVEFDS19PRihYNTA5KSAqLCBTU0xfZ2V0X3BlZXJfY2VydF9jaGFp biwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorKworKyNpZiBkZWZpbmVkKE9Q RU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKytERUZJ TkVGVU5DKFg1MDkgKiwgU1NMX2dldDFfcGVlcl9jZXJ0aWZpY2F0ZSwgU1NMICphLCBhLCByZXR1 cm4gbnVsbHB0ciwgcmV0dXJuKQorK0RFRklORUZVTkMoaW50LCBFVlBfUEtFWV9nZXRfYmFzZV9p ZCwgY29uc3QgRVZQX1BLRVkgKnBrZXksIHBrZXksIHJldHVybiAtMSwgcmV0dXJuKQorKyNlbHNl CisgREVGSU5FRlVOQyhYNTA5ICosIFNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZSwgU1NMICphLCBh LCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorK0RFRklORUZVTkMoaW50LCBFVlBfUEtFWV9iYXNl X2lkLCBFVlBfUEtFWSAqYSwgYSwgcmV0dXJuIE5JRF91bmRlZiwgcmV0dXJuKQorKyNlbmRpZiAv LyBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworKworIERFRklORUZVTkMobG9uZywgU1NMX2dl dF92ZXJpZnlfcmVzdWx0LCBjb25zdCBTU0wgKmEsIGEsIHJldHVybiAtMSwgcmV0dXJuKQorIERF RklORUZVTkMoU1NMICosIFNTTF9uZXcsIFNTTF9DVFggKmEsIGEsIHJldHVybiBudWxscHRyLCBy ZXR1cm4pCisgREVGSU5FRlVOQyhTU0xfQ1RYICosIFNTTF9nZXRfU1NMX0NUWCwgU1NMICphLCBh LCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorQEAgLTQ5Miw5ICs0OTksNyBAQCBERUZJTkVGVU5D KERIICosIERIX25ldywgRFVNTVlBUkcsIERVTU1ZQVJHLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJu KQorIERFRklORUZVTkModm9pZCwgREhfZnJlZSwgREggKmRoLCBkaCwgcmV0dXJuLCBEVU1NWUFS RykKKyBERUZJTkVGVU5DMyhESCAqLCBkMmlfREhwYXJhbXMsIERIKiphLCBhLCBjb25zdCB1bnNp Z25lZCBjaGFyICoqcHAsIHBwLCBsb25nIGxlbmd0aCwgbGVuZ3RoLCByZXR1cm4gbnVsbHB0ciwg cmV0dXJuKQorIERFRklORUZVTkMyKGludCwgaTJkX0RIcGFyYW1zLCBESCAqYSwgYSwgdW5zaWdu ZWQgY2hhciAqKnAsIHAsIHJldHVybiAtMSwgcmV0dXJuKQorLSNpZm5kZWYgT1BFTlNTTF9OT19E RVBSRUNBVEVEXzNfMAorIERFRklORUZVTkMyKGludCwgREhfY2hlY2ssIERIICpkaCwgZGgsIGlu dCAqY29kZXMsIGNvZGVzLCByZXR1cm4gMCwgcmV0dXJuKQorLSNlbmRpZiAvLyBPUEVOU1NMX05P X0RFUFJFQ0FURURfM18wCisgREVGSU5FRlVOQzMoQklHTlVNICosIEJOX2JpbjJibiwgY29uc3Qg dW5zaWduZWQgY2hhciAqcywgcywgaW50IGxlbiwgbGVuLCBCSUdOVU0gKnJldCwgcmV0LCByZXR1 cm4gbnVsbHB0ciwgcmV0dXJuKQorIAorICNpZm5kZWYgT1BFTlNTTF9OT19FQworQEAgLTg2OCw3 ICs4NzMsNiBAQCBib29sIHFfcmVzb2x2ZU9wZW5Tc2xTeW1ib2xzKCkKKyAgICAgUkVTT0xWRUZV TkMoRVZQX1BLRVlfQ1RYX25ldykKKyAgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfcGFyYW1fY2hl Y2spCisgICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX0NUWF9mcmVlKQorLSAgICBSRVNPTFZFRlVO QyhFVlBfUEtFWV9iYXNlX2lkKQorICAgICBSRVNPTFZFRlVOQyhSU0FfYml0cykKKyAgICAgUkVT T0xWRUZVTkMoT1BFTlNTTF9za19uZXdfbnVsbCkKKyAgICAgUkVTT0xWRUZVTkMoT1BFTlNTTF9z a19wdXNoKQorQEAgLTExMDcsNyArMTExMSwxNSBAQCBib29sIHFfcmVzb2x2ZU9wZW5Tc2xTeW1i b2xzKCkKKyAgICAgUkVTT0xWRUZVTkMoU1NMX3ZlcnNpb24pCisgICAgIFJFU09MVkVGVU5DKFNT TF9nZXRfZXJyb3IpCisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRfcGVlcl9jZXJ0X2NoYWluKQor KworKyNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9WRVJTSU9O X01BSk9SID49IDMKKysgICAgUkVTT0xWRUZVTkMoU1NMX2dldDFfcGVlcl9jZXJ0aWZpY2F0ZSkK KysgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfZ2V0X2Jhc2VfaWQpCisrI2Vsc2UKKyAgICAgUkVT T0xWRUZVTkMoU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKQorKyAgICBSRVNPTFZFRlVOQyhFVlBf UEtFWV9iYXNlX2lkKQorKyNlbmRpZiAvLyBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworKwor ICAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0X3ZlcmlmeV9yZXN1bHQpCisgICAgIFJFU09MVkVGVU5D KFNTTF9uZXcpCisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRfU1NMX0NUWCkKK0BAIC0xMjA2LDkg KzEyMTgsNyBAQCBib29sIHFfcmVzb2x2ZU9wZW5Tc2xTeW1ib2xzKCkKKyAgICAgUkVTT0xWRUZV TkMoREhfZnJlZSkKKyAgICAgUkVTT0xWRUZVTkMoZDJpX0RIcGFyYW1zKQorICAgICBSRVNPTFZF RlVOQyhpMmRfREhwYXJhbXMpCistI2lmbmRlZiBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisg ICAgIFJFU09MVkVGVU5DKERIX2NoZWNrKQorLSNlbmRpZiAvLyBPUEVOU1NMX05PX0RFUFJFQ0FU RURfM18wCisgICAgIFJFU09MVkVGVU5DKEJOX2JpbjJibikKKyAKKyAjaWZuZGVmIE9QRU5TU0xf Tk9fRUMKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3Bl bnNzbF9zeW1ib2xzX3AuaCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVu c3NsX3N5bWJvbHNfcC5oCitpbmRleCA5NWU4ODk3YTNiLi4yN2FlZmZhMThhIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9sc19wLmgK KysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHNf cC5oCitAQCAtMjM3LDcgKzIzNyw2IEBAIFFfQVVUT1RFU1RfRVhQT1JUIGludCBxX0VWUF9QS0VZ X3VwX3JlZihFVlBfUEtFWSAqYSk7CisgRVZQX1BLRVlfQ1RYICpxX0VWUF9QS0VZX0NUWF9uZXco RVZQX1BLRVkgKnBrZXksIEVOR0lORSAqZSk7Cisgdm9pZCBxX0VWUF9QS0VZX0NUWF9mcmVlKEVW UF9QS0VZX0NUWCAqY3R4KTsKKyBpbnQgcV9FVlBfUEtFWV9wYXJhbV9jaGVjayhFVlBfUEtFWV9D VFggKmN0eCk7CistaW50IHFfRVZQX1BLRVlfYmFzZV9pZChFVlBfUEtFWSAqYSk7CisgaW50IHFf UlNBX2JpdHMoUlNBICphKTsKKyBRX0FVVE9URVNUX0VYUE9SVCBpbnQgcV9PUEVOU1NMX3NrX251 bShPUEVOU1NMX1NUQUNLICphKTsKKyBRX0FVVE9URVNUX0VYUE9SVCB2b2lkIHFfT1BFTlNTTF9z a19wb3BfZnJlZShPUEVOU1NMX1NUQUNLICphLCB2b2lkICgqYikodm9pZCAqKSk7CitAQCAtMjQ2 LDcgKzI0NSw3IEBAIFFfQVVUT1RFU1RfRVhQT1JUIHZvaWQgcV9PUEVOU1NMX3NrX3B1c2goT1BF TlNTTF9TVEFDSyAqc3QsIHZvaWQgKmRhdGEpOworIFFfQVVUT1RFU1RfRVhQT1JUIHZvaWQgcV9P UEVOU1NMX3NrX2ZyZWUoT1BFTlNTTF9TVEFDSyAqYSk7CisgUV9BVVRPVEVTVF9FWFBPUlQgdm9p ZCAqIHFfT1BFTlNTTF9za192YWx1ZShPUEVOU1NMX1NUQUNLICphLCBpbnQgYik7CisgaW50IHFf U1NMX3Nlc3Npb25fcmV1c2VkKFNTTCAqYSk7CistdW5zaWduZWQgbG9uZyBxX1NTTF9DVFhfc2V0 X29wdGlvbnMoU1NMX0NUWCAqY3R4LCB1bnNpZ25lZCBsb25nIG9wKTsKKytxc3Nsb3B0aW9ucyBx X1NTTF9DVFhfc2V0X29wdGlvbnMoU1NMX0NUWCAqY3R4LCBxc3Nsb3B0aW9ucyBvcCk7CisgaW50 IHFfT1BFTlNTTF9pbml0X3NzbCh1aW50NjRfdCBvcHRzLCBjb25zdCBPUEVOU1NMX0lOSVRfU0VU VElOR1MgKnNldHRpbmdzKTsKKyBzaXplX3QgcV9TU0xfZ2V0X2NsaWVudF9yYW5kb20oU1NMICph LCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4pOworIHNpemVfdCBxX1NTTF9TRVNT SU9OX2dldF9tYXN0ZXJfa2V5KGNvbnN0IFNTTF9TRVNTSU9OICpzZXNzaW9uLCB1bnNpZ25lZCBj aGFyICpvdXQsIHNpemVfdCBvdXRsZW4pOworQEAgLTUxMCw3ICs1MDksNiBAQCBjb25zdCBTU0xf Q0lQSEVSICpxX1NTTF9nZXRfY3VycmVudF9jaXBoZXIoU1NMICphKTsKKyBpbnQgcV9TU0xfdmVy c2lvbihjb25zdCBTU0wgKmEpOworIGludCBxX1NTTF9nZXRfZXJyb3IoU1NMICphLCBpbnQgYik7 CisgU1RBQ0tfT0YoWDUwOSkgKnFfU1NMX2dldF9wZWVyX2NlcnRfY2hhaW4oU1NMICphKTsKKy1Y NTA5ICpxX1NTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShTU0wgKmEpOworIGxvbmcgcV9TU0xfZ2V0 X3ZlcmlmeV9yZXN1bHQoY29uc3QgU1NMICphKTsKKyBTU0wgKnFfU1NMX25ldyhTU0xfQ1RYICph KTsKKyBTU0xfQ1RYICpxX1NTTF9nZXRfU1NMX0NUWChTU0wgKmEpOworQEAgLTU4MiwxMCArNTgw LDcgQEAgREggKnFfREhfbmV3KCk7Cisgdm9pZCBxX0RIX2ZyZWUoREggKmRoKTsKKyBESCAqcV9k MmlfREhwYXJhbXMoREggKiphLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqcHAsIGxvbmcgbGVuZ3Ro KTsKKyBpbnQgcV9pMmRfREhwYXJhbXMoREggKmEsIHVuc2lnbmVkIGNoYXIgKipwKTsKKy0KKy0j aWZuZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyBpbnQgcV9ESF9jaGVjayhESCAqZGgs IGludCAqY29kZXMpOworLSNlbmRpZiAvLyBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisgCisg QklHTlVNICpxX0JOX2JpbjJibihjb25zdCB1bnNpZ25lZCBjaGFyICpzLCBpbnQgbGVuLCBCSUdO VU0gKnJldCk7CisgI2RlZmluZSBxX1NTTF9DVFhfc2V0X3RtcF9kaChjdHgsIGRoKSBxX1NTTF9D VFhfY3RybCgoY3R4KSwgU1NMX0NUUkxfU0VUX1RNUF9ESCwgMCwgKGNoYXIgKilkaCkKK0BAIC03 NTQsNiArNzQ5LDE3IEBAIHZvaWQgcV9DUllQVE9fZnJlZSh2b2lkICpzdHIsIGNvbnN0IGNoYXIg KmZpbGUsIGludCBsaW5lKTsKKyBpbnQgcV9TU0xfQ1RYX2dldF9zZWN1cml0eV9sZXZlbChjb25z dCBTU0xfQ1RYICpjdHgpOworIHZvaWQgcV9TU0xfQ1RYX3NldF9zZWN1cml0eV9sZXZlbChTU0xf Q1RYICpjdHgsIGludCBsZXZlbCk7CisgCisrLy8gSGVyZSB3ZSBoYXZlIHRoZSBvbmVzIHRoYXQg bWFrZSBkaWZmZXJlbmNlIGJldHdlZW4gT3BlblNTTCBwcmUvcG9zdCB2MzoKKysjaWYgZGVmaW5l ZChPUEVOU1NMX1ZFUlNJT05fTUFKT1IpICYmIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisr WDUwOSAqcV9TU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRlKFNTTCAqYSk7CisrI2RlZmluZSBxX1NT TF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZSBxX1NTTF9nZXQxX3BlZXJfY2VydGlmaWNhdGUKKytpbnQg cV9FVlBfUEtFWV9nZXRfYmFzZV9pZChjb25zdCBFVlBfUEtFWSAqcGtleSk7CisrI2RlZmluZSBx X0VWUF9QS0VZX2Jhc2VfaWQgcV9FVlBfUEtFWV9nZXRfYmFzZV9pZAorKyNlbHNlCisrWDUwOSAq cV9TU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUoU1NMICphKTsKKytpbnQgcV9FVlBfUEtFWV9iYXNl X2lkKEVWUF9QS0VZICphKTsKKysjZW5kaWYgLy8gT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMK KysKKyBRVF9FTkRfTkFNRVNQQUNFCisgCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2UvcXRfZWdsX3AuaCBiL3F0YmFzZS9zcmMv cGxhdGZvcm1zdXBwb3J0L2VnbGNvbnZlbmllbmNlL3F0X2VnbF9wLmgKK2luZGV4IGJmMzdkMDdm ZDguLmRiZDQyZmI3OTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9l Z2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9y dC9lZ2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oCitAQCAtNjEsNyArNjEsMTEgQEAKKyAjIGlmICFk ZWZpbmVkKFFfT1NfSU5URUdSSVRZKQorICMgIGRlZmluZSBXSU5fSU5URVJGQUNFX0NVU1RPTSAg IC8vIE5WCisgIyBlbmRpZiAvLyBRX09TX0lOVEVHUklUWQorLSNlbmRpZiAgLy8gUVRfRUdMX05P X1gxMQorKyNlbHNlIC8vIFFUX0VHTF9OT19YMTEKKysvLyBJZiBvbmUgaGFzIGFuIGVnbHBsYXRm b3JtLmggd2l0aCBodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL0VHTC1SZWdpc3RyeS9w dWxsLzEzMAorKy8vIHRoYXQgbmVlZHMgVVNFX1gxMSB0byBiZSBkZWZpbmVkLgorKyMgZGVmaW5l IFVTRV9YMTEKKysjZW5kaWYKKyAKKyAjaWZkZWYgUVRfRUdMX1dBWUxBTkQKKyAjIGRlZmluZSBX QVlMQU5EIC8vIE5WCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZm9u dGRhdGFiYXNlcy9mb250Y29uZmlnL3Fmb250Y29uZmlnZGF0YWJhc2UuY3BwIGIvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNlcy9mb250Y29uZmlnL3Fmb250Y29uZmlnZGF0 YWJhc2UuY3BwCitpbmRleCAxNTliNDkwY2UwLi4wMGFhODBjZDU4IDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNlcy9mb250Y29uZmlnL3Fmb250Y29u ZmlnZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0 YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRhYmFzZS5jcHAKK0BAIC01NjcsNiArNTY3 LDggQEAgdm9pZCBRRm9udGNvbmZpZ0RhdGFiYXNlOjpwb3B1bGF0ZUZvbnREYXRhYmFzZSgpCisg ICAgICAgICBmb250cyA9IEZjRm9udExpc3QobnVsbHB0ciwgcGF0dGVybiwgb3MpOworICAgICAg ICAgRmNPYmplY3RTZXREZXN0cm95KG9zKTsKKyAgICAgICAgIEZjUGF0dGVybkRlc3Ryb3kocGF0 dGVybik7CisrICAgICAgICBpZiAoIWZvbnRzKQorKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg fQorIAorICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZvbnRzLT5uZm9udDsgaSsrKQorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29t bW9uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGti Y29tbW9uLmNwcAoraW5kZXggYjcxM2MxOTQ0Ny4uN2NiOWE4Yzc5YSAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uLmNwcAor KysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21t b24uY3BwCitAQCAtOTUsNiArOTUsNyBAQCBzdGF0aWMgY29uc3RleHByIGNvbnN0IGF1dG8gS2V5 VGJsID0gcU1ha2VBcnJheSgKKyAgICAgICAgIFhrYjJRdDxYS0JfS0VZX0NsZWFyLCAgICAgICAg ICAgICAgICAgICBRdDo6S2V5X0RlbGV0ZT4sCisgICAgICAgICBYa2IyUXQ8WEtCX0tFWV9QYXVz ZSwgICAgICAgICAgICAgICAgICAgUXQ6OktleV9QYXVzZT4sCisgICAgICAgICBYa2IyUXQ8WEtC X0tFWV9QcmludCwgICAgICAgICAgICAgICAgICAgUXQ6OktleV9QcmludD4sCisrICAgICAgICBY a2IyUXQ8WEtCX0tFWV9TeXNfUmVxLCAgICAgICAgICAgICAgICAgUXQ6OktleV9TeXNSZXE+LAor ICAgICAgICAgWGtiMlF0PDB4MTAwNUZGNjAsICAgICAgICAgICAgICAgICAgICAgIFF0OjpLZXlf U3lzUmVxPiwgICAgICAgICAvLyBoYXJkY29kZWQgU3VuIFN5c1JlcQorICAgICAgICAgWGtiMlF0 PDB4MTAwN2ZmMDAsICAgICAgICAgICAgICAgICAgICAgIFF0OjpLZXlfU3lzUmVxPiwgICAgICAg ICAvLyBoYXJkY29kZWQgWDM4NiBTeXNSZXEKKyAKK0BAIC00NzEsNyArNDcyLDcgQEAgUVZlY3Rv cjx4a2Jfa2V5c3ltX3Q+IFFYa2JDb21tb246OnRvS2V5c3ltKFFLZXlFdmVudCAqZXZlbnQpCisg ICAgIH0gZWxzZSBpZiAoZXZlbnQtPm1vZGlmaWVycygpICYgUXQ6OktleXBhZE1vZGlmaWVyKSB7 CisgICAgICAgICBpZiAocXRLZXkgPj0gUXQ6OktleV8wICYmIHF0S2V5IDw9IFF0OjpLZXlfOSkK KyAgICAgICAgICAgICBrZXlzeW1zLmFwcGVuZChYS0JfS0VZX0tQXzAgKyAocXRLZXkgLSBRdDo6 S2V5XzApKTsKKy0gICAgfSBlbHNlIGlmIChpc0xhdGluKHF0S2V5KSAmJiBldmVudC0+dGV4dCgp LmlzVXBwZXIoKSkgeworKyAgICB9IGVsc2UgaWYgKGlzTGF0aW4xKHF0S2V5KSAmJiBldmVudC0+ dGV4dCgpLmlzVXBwZXIoKSkgeworICAgICAgICAga2V5c3ltcy5hcHBlbmQocXRLZXkpOworICAg ICB9CisgCitAQCAtNTIzLDcgKzUyNCw3IEBAIGludCBRWGtiQ29tbW9uOjprZXlzeW1Ub1F0S2V5 KHhrYl9rZXlzeW1fdCBrZXlzeW0sIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RpZmllCisgICAg ICAgICAvLyBXaXRoIHN0YW5kYXJkIHNob3J0Y3V0cyB3ZSBzaG91bGQgcHJlZmVyIGEgbGF0aW4g Y2hhcmFjdGVyLCB0aGlzIGlzCisgICAgICAgICAvLyBmb3IgY2hlY2tzIGxpa2UgInNvbWUgcWtl eWV2ZW50ID09IFFLZXlTZXF1ZW5jZTo6Q29weSIgdG8gd29yayBldmVuCisgICAgICAgICAvLyB3 aGVuIHVzaW5nIGZvciBleGFtcGxlICdydXNzaWFuJyBrZXlib2FyZCBsYXlvdXQuCistICAgICAg ICBpZiAoIVFYa2JDb21tb246OmlzTGF0aW4oa2V5c3ltKSkgeworKyAgICAgICAgaWYgKCFRWGti Q29tbW9uOjppc0xhdGluMShrZXlzeW0pKSB7CisgICAgICAgICAgICAgeGtiX2tleXN5bV90IGxh dGluS2V5c3ltID0gUVhrYkNvbW1vbjo6bG9va3VwTGF0aW5LZXlzeW0oc3RhdGUsIGNvZGUpOwor ICAgICAgICAgICAgIGlmIChsYXRpbktleXN5bSAhPSBYS0JfS0VZX05vU3ltYm9sKQorICAgICAg ICAgICAgICAgICBrZXlzeW0gPSBsYXRpbktleXN5bTsKK0BAIC01NDYsNyArNTQ3LDcgQEAgc3Rh dGljIGludCBrZXlzeW1Ub1F0S2V5X2ludGVybmFsKHhrYl9rZXlzeW1fdCBrZXlzeW0sIFF0OjpL ZXlib2FyZE1vZGlmaWVycyBtb2QKKyAgICAgfSBlbHNlIGlmIChrZXlzeW0gPj0gWEtCX0tFWV9L UF8wICYmIGtleXN5bSA8PSBYS0JfS0VZX0tQXzkpIHsKKyAgICAgICAgIC8vIG51bWVyaWMga2V5 cGFkIGtleXMKKyAgICAgICAgIHF0S2V5ID0gUXQ6OktleV8wICsgKGtleXN5bSAtIFhLQl9LRVlf S1BfMCk7CistICAgIH0gZWxzZSBpZiAoUVhrYkNvbW1vbjo6aXNMYXRpbihrZXlzeW0pKSB7Cisr ICAgIH0gZWxzZSBpZiAoUVhrYkNvbW1vbjo6aXNMYXRpbjEoa2V5c3ltKSkgeworICAgICAgICAg cXRLZXkgPSBRWGtiQ29tbW9uOjpxeGtiY29tbW9uX3hrYl9rZXlzeW1fdG9fdXBwZXIoa2V5c3lt KTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIC8vIGNoZWNrIGlmIHdlIGhhdmUgYSBkaXJlY3Qg bWFwcGluZworQEAgLTY3OCw3ICs2NzksNyBAQCBRTGlzdDxpbnQ+IFFYa2JDb21tb246OnBvc3Np YmxlS2V5cyh4a2Jfc3RhdGUgKnN0YXRlLCBjb25zdCBRS2V5RXZlbnQgKmV2ZW50LAorICAgICAg ICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG5lZWRlZE1vZHMgPSBNb2RzVGJsW2ldOworICAgICAg ICAgaWYgKChtb2RpZmllcnMgJiBuZWVkZWRNb2RzKSA9PSBuZWVkZWRNb2RzKSB7CisgICAgICAg ICAgICAgaWYgKGkgPT0gOCkgeworLSAgICAgICAgICAgICAgICBpZiAoaXNMYXRpbihiYXNlUXRL ZXkpKQorKyAgICAgICAgICAgICAgICBpZiAoaXNMYXRpbjEoYmFzZVF0S2V5KSkKKyAgICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAvLyBhZGQgYSBsYXRpbiBr ZXkgYXMgYSBmYWxsIGJhY2sga2V5CisgICAgICAgICAgICAgICAgIHN5bSA9IGxvb2t1cExhdGlu S2V5c3ltKHN0YXRlLCBrZXljb2RlKTsKK0BAIC03MzMsNyArNzM0LDcgQEAgdm9pZCBRWGtiQ29t bW9uOjp2ZXJpZnlIYXNMYXRpbkxheW91dCh4a2Jfa2V5bWFwICprZXltYXApCisgICAgIGZvciAo eGtiX2xheW91dF9pbmRleF90IGxheW91dCA9IDA7IGxheW91dCA8IGxheW91dENvdW50OyArK2xh eW91dCkgeworICAgICAgICAgZm9yICh4a2Jfa2V5Y29kZV90IGNvZGUgPSBtaW5LZXljb2RlOyBj b2RlIDwgbWF4S2V5Y29kZTsgKytjb2RlKSB7CisgICAgICAgICAgICAgeGtiX2tleW1hcF9rZXlf Z2V0X3N5bXNfYnlfbGV2ZWwoa2V5bWFwLCBjb2RlLCBsYXlvdXQsIDAsICZrZXlzeW1zKTsKKy0g ICAgICAgICAgICBpZiAoa2V5c3ltcyAmJiBpc0xhdGluKGtleXN5bXNbMF0pKQorKyAgICAgICAg ICAgIGlmIChrZXlzeW1zICYmIGlzTGF0aW4xKGtleXN5bXNbMF0pKQorICAgICAgICAgICAgICAg ICBuckxhdGluS2V5cysrOworICAgICAgICAgICAgIGlmIChuckxhdGluS2V5cyA+IDEwKSAvLyBh cmJpdHJhcmlseSBjaG9zZW4gdGhyZXNob2xkCisgICAgICAgICAgICAgICAgIHJldHVybjsKK0BA IC03NjYsNyArNzY3LDcgQEAgeGtiX2tleXN5bV90IFFYa2JDb21tb246Omxvb2t1cExhdGluS2V5 c3ltKHhrYl9zdGF0ZSAqc3RhdGUsIHhrYl9rZXljb2RlX3Qga2V5Y28KKyAgICAgICAgIHhrYl9s ZXZlbF9pbmRleF90IGxldmVsID0geGtiX3N0YXRlX2tleV9nZXRfbGV2ZWwoc3RhdGUsIGtleWNv ZGUsIGxheW91dCk7CisgICAgICAgICBpZiAoeGtiX2tleW1hcF9rZXlfZ2V0X3N5bXNfYnlfbGV2 ZWwoa2V5bWFwLCBrZXljb2RlLCBsYXlvdXQsIGxldmVsLCAmc3ltcykgIT0gMSkKKyAgICAgICAg ICAgICBjb250aW51ZTsKKy0gICAgICAgIGlmIChpc0xhdGluKHN5bXNbMF0pKSB7CisrICAgICAg ICBpZiAoaXNMYXRpbjEoc3ltc1swXSkpIHsKKyAgICAgICAgICAgICBzeW0gPSBzeW1zWzBdOwor ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv cGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uX3AuaCBiL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uX3AuaAoraW5kZXgg NTYxZWFlMDNkYi4uODM4OWJkOGY1YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1z dXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uX3AuaAorKysrIGIvcXRiYXNlL3NyYy9w bGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5oCitAQCAtOTQsOCAr OTQsOCBAQCBwdWJsaWM6CisgICAgIHN0YXRpYyB2b2lkIHZlcmlmeUhhc0xhdGluTGF5b3V0KHhr Yl9rZXltYXAgKmtleW1hcCk7CisgICAgIHN0YXRpYyB4a2Jfa2V5c3ltX3QgbG9va3VwTGF0aW5L ZXlzeW0oeGtiX3N0YXRlICpzdGF0ZSwgeGtiX2tleWNvZGVfdCBrZXljb2RlKTsKKyAKKy0gICAg c3RhdGljIGJvb2wgaXNMYXRpbih4a2Jfa2V5c3ltX3Qgc3ltKSB7CistICAgICAgICByZXR1cm4g KChzeW0gPj0gJ2EnICYmIHN5bSA8PSAneicpIHx8IChzeW0gPj0gJ0EnICYmIHN5bSA8PSAnWicp KTsKKysgICAgc3RhdGljIGJvb2wgaXNMYXRpbjEoeGtiX2tleXN5bV90IHN5bSkgeworKyAgICAg ICAgcmV0dXJuIHN5bSA8PSAweGZmOworICAgICB9CisgICAgIHN0YXRpYyBib29sIGlzS2V5cGFk KHhrYl9rZXlzeW1fdCBzeW0pIHsKKyAgICAgICAgIHJldHVybiBzeW0gPj0gWEtCX0tFWV9LUF9T cGFjZSAmJiBzeW0gPD0gWEtCX0tFWV9LUF85OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxh dGZvcm1zdXBwb3J0L2ttc2NvbnZlbmllbmNlL3FrbXNkZXZpY2UuY3BwIGIvcXRiYXNlL3NyYy9w bGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2UvcWttc2RldmljZS5jcHAKK2luZGV4IDhjZDdm OWIzNjguLjQwNmY4NDY2M2YgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9y dC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9y bXN1cHBvcnQva21zY29udmVuaWVuY2UvcWttc2RldmljZS5jcHAKK0BAIC0zMTgsNyArMzE4LDcg QEAgUVBsYXRmb3JtU2NyZWVuICpRS21zRGV2aWNlOjpjcmVhdGVTY3JlZW5Gb3JDb25uZWN0b3Io ZHJtTW9kZVJlc1B0ciByZXNvdXJjZXMsCisgCisgICAgIGlmIChjdXJyZW50IDwgMCAmJiBjcnRj X21vZGUuY2xvY2sgIT0gMCkgeworICAgICAgICAgbW9kZXMgPDwgY3J0Y19tb2RlOworLSAgICAg ICAgY3VycmVudCA9IG1vZGUuc2l6ZSgpIC0gMTsKKysgICAgICAgIGN1cnJlbnQgPSBtb2Rlcy5z aXplKCkgLSAxOworICAgICB9CisgCisgICAgIGlmIChjb25maWd1cmF0aW9uID09IE91dHB1dENv bmZpZ0N1cnJlbnQpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGlu dXhhY2Nlc3NpYmlsaXR5L2F0c3BpYWRhcHRvci5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3Vw cG9ydC9saW51eGFjY2Vzc2liaWxpdHkvYXRzcGlhZGFwdG9yLmNwcAoraW5kZXggOTE1M2ZkMjBi Yi4uMjU1ZWE1ZTMzZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xp bnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRm b3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvYXRzcGlhZGFwdG9yLmNwcAorQEAgLTE5NCw2 ICsxOTQsOSBAQCBRU3RyaW5nIEF0U3BpQWRhcHRvcjo6aW50cm9zcGVjdChjb25zdCBRU3RyaW5n ICZwYXRoKSBjb25zdAorICAgICAgICAgICAgICAgICAiICAgICAgPGFyZyBkaXJlY3Rpb249XCJv dXRcIiB0eXBlPVwiKHNvKVwiLz5cbiIKKyAgICAgICAgICAgICAgICAgIiAgICAgIDxhbm5vdGF0 aW9uIHZhbHVlPVwiUVNwaU9iamVjdFJlZmVyZW5jZVwiIG5hbWU9XCJvcmcucXRwcm9qZWN0LlF0 REJ1cy5RdFR5cGVOYW1lLk91dDBcIi8+XG4iCisgICAgICAgICAgICAgICAgICIgICAgPC9tZXRo b2Q+XG4iCisrICAgICAgICAgICAgICAgICIgICAgPG1ldGhvZCBuYW1lPVwiR2V0QWNjZXNzaWJs ZUlkXCI+XG4iCisrICAgICAgICAgICAgICAgICIgICAgICA8YXJnIGRpcmVjdGlvbj1cIm91dFwi IHR5cGU9XCJzXCIvPlxuIgorKyAgICAgICAgICAgICAgICAiICAgIDwvbWV0aG9kPlxuIgorICAg ICAgICAgICAgICAgICAiICA8L2ludGVyZmFjZT5cbiIKKyAgICAgICAgICAgICAgICAgKTsKKyAK K0BAIC05MTMsOCArOTE2LDE3IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpub3RpZnkoUUFjY2Vzc2li bGVFdmVudCAqZXZlbnQpCisgICAgIH0KKyAgICAgY2FzZSBRQWNjZXNzaWJsZTo6TmFtZUNoYW5n ZWQ6IHsKKyAgICAgICAgIGlmIChzZW5kT2JqZWN0IHx8IHNlbmRPYmplY3RfcHJvcGVydHlfY2hh bmdlIHx8IHNlbmRPYmplY3RfcHJvcGVydHlfY2hhbmdlX2FjY2Vzc2libGVfbmFtZSkgeworLSAg ICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRlcmZhY2UoZXZlbnQtPmFjY2Vzc2li bGVJbnRlcmZhY2UoKSk7CistICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MgPSBwYWNrREJ1 c1NpZ25hbEFyZ3VtZW50cyhRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLW5hbWUiKSwgMCwgMCwg dmFyaWFudEZvclBhdGgocGF0aCkpOworKyAgICAgICAgICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNl ICppZmFjZSA9IGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNlKCk7CisrICAgICAgICAgICAgaWYg KCFpZmFjZSkgeworKyAgICAgICAgICAgICAgICBxQ0RlYnVnKGxjQWNjZXNzaWJpbGl0eUF0c3Bp LAorKyAgICAgICAgICAgICAgICAgICAgICAgICJOYW1lQ2hhbmdlZCBldmVudCBmcm9tIGludmFs aWQgYWNjZXNzaWJsZS4iKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgICAg IH0KKysKKysgICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGlmYWNl KTsKKysgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9IHBhY2tEQnVzU2lnbmFsQXJndW1l bnRzKAorKyAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLW5hbWUiKSwg MCwgMCwKKysgICAgICAgICAgICAgICAgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQo aWZhY2UtPnRleHQoUUFjY2Vzc2libGU6Ok5hbWUpKSkpOworICAgICAgICAgICAgIHNlbmREQnVz U2lnbmFsKHBhdGgsIFFMYXRpbjFTdHJpbmcoQVRTUElfREJVU19JTlRFUkZBQ0VfRVZFTlRfT0JK RUNUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJQcm9wZXJ0 eUNoYW5nZSIpLCBhcmdzKTsKKyAgICAgICAgIH0KK0BAIC05MjIsOCArOTM0LDE3IEBAIHZvaWQg QXRTcGlBZGFwdG9yOjpub3RpZnkoUUFjY2Vzc2libGVFdmVudCAqZXZlbnQpCisgICAgIH0KKyAg ICAgY2FzZSBRQWNjZXNzaWJsZTo6RGVzY3JpcHRpb25DaGFuZ2VkOiB7CisgICAgICAgICBpZiAo c2VuZE9iamVjdCB8fCBzZW5kT2JqZWN0X3Byb3BlcnR5X2NoYW5nZSB8fCBzZW5kT2JqZWN0X3By b3BlcnR5X2NoYW5nZV9hY2Nlc3NpYmxlX2Rlc2NyaXB0aW9uKSB7CistICAgICAgICAgICAgUVN0 cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShldmVudC0+YWNjZXNzaWJsZUludGVyZmFjZSgp KTsKKy0gICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9IHBhY2tEQnVzU2lnbmFsQXJndW1l bnRzKFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtZGVzY3JpcHRpb24iKSwgMCwgMCwgdmFyaWFu dEZvclBhdGgocGF0aCkpOworKyAgICAgICAgICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFj ZSA9IGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNlKCk7CisrICAgICAgICAgICAgaWYgKCFpZmFj ZSkgeworKyAgICAgICAgICAgICAgICBxQ0RlYnVnKGxjQWNjZXNzaWJpbGl0eUF0c3BpLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICJEZXNjcmlwdGlvbkNoYW5nZWQgZXZlbnQgZnJvbSBpbnZh bGlkIGFjY2Vzc2libGUuIik7CisrICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgICAg ICB9CisrCisrICAgICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShpZmFj ZSk7CisrICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MgPSBwYWNrREJ1c1NpZ25hbEFyZ3Vt ZW50cygKKysgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1kZXNjcmlw dGlvbiIpLCAwLCAwLAorKyAgICAgICAgICAgICAgICBRVmFyaWFudDo6ZnJvbVZhbHVlKFFEQnVz VmFyaWFudChpZmFjZS0+dGV4dChRQWNjZXNzaWJsZTo6RGVzY3JpcHRpb24pKSkpOworICAgICAg ICAgICAgIHNlbmREQnVzU2lnbmFsKHBhdGgsIFFMYXRpbjFTdHJpbmcoQVRTUElfREJVU19JTlRF UkZBQ0VfRVZFTlRfT0JKRUNUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4x U3RyaW5nKCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdzKTsKKyAgICAgICAgIH0KK0BAIC0xMDM4LDcg KzEwNTksOSBAQCB2b2lkIEF0U3BpQWRhcHRvcjo6bm90aWZ5KFFBY2Nlc3NpYmxlRXZlbnQgKmV2 ZW50KQorICAgICAgICAgICAgICAgICAvLyBDb21ibyBCb3ggd2l0aCBBVC1TUEkgbGlrZXMgdG8g YmUgc3BlY2lhbAorICAgICAgICAgICAgICAgICAvLyBJdCByZXF1aXJlcyBhIG5hbWUtY2hhbmdl IHRvIHVwZGF0ZSBjYWNoZXMgYW5kIHRoZW4gc2VsZWN0aW9uLWNoYW5nZWQKKyAgICAgICAgICAg ICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShpZmFjZSk7CistICAgICAgICAg ICAgICAgIFFWYXJpYW50TGlzdCBhcmdzMSA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKFFMYXRp bjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIpLCAwLCAwLCB2YXJpYW50Rm9yUGF0aChwYXRoKSk7 CisrICAgICAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzMSA9IHBhY2tEQnVzU2lnbmFsQXJn dW1lbnRzKAorKyAgICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1u YW1lIiksIDAsIDAsCisrICAgICAgICAgICAgICAgICAgICBRVmFyaWFudDo6ZnJvbVZhbHVlKFFE QnVzVmFyaWFudChpZmFjZS0+dGV4dChRQWNjZXNzaWJsZTo6TmFtZSkpKSk7CisgICAgICAgICAg ICAgICAgIHNlbmREQnVzU2lnbmFsKHBhdGgsIFFMYXRpbjFTdHJpbmcoQVRTUElfREJVU19JTlRF UkZBQ0VfRVZFTlRfT0JKRUNUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUxh dGluMVN0cmluZygiUHJvcGVydHlDaGFuZ2UiKSwgYXJnczEpOworICAgICAgICAgICAgICAgICBR VmFyaWFudExpc3QgYXJnczIgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cyhRU3RyaW5nKCksIDAs IDAsIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50KFFWYXJpYW50KDApKSkpOworQEAg LTEzNTgsNiArMTM4MSwyNiBAQCB2b2lkIEF0U3BpQWRhcHRvcjo6cmVnaXN0ZXJBcHBsaWNhdGlv bigpCisgICAgIGRlbGV0ZSByZWdpc3RyeTsKKyB9CisgCisrbmFtZXNwYWNlIHsKKytRU3RyaW5n IGFjY2Vzc2libGVJZEZvckFjY2Vzc2libGUoUUFjY2Vzc2libGVJbnRlcmZhY2UgKmFjY2Vzc2li bGUpCisreworKyAgICBRU3RyaW5nIHJlc3VsdDsKKysgICAgd2hpbGUgKGFjY2Vzc2libGUpIHsK KysgICAgICAgIGlmICghcmVzdWx0LmlzRW1wdHkoKSkKKysgICAgICAgICAgICByZXN1bHQucHJl cGVuZChRTGF0aW4xQ2hhcignLicpKTsKKysgICAgICAgIGlmIChhdXRvIG9iaiA9IGFjY2Vzc2li bGUtPm9iamVjdCgpKSB7CisrICAgICAgICAgICAgY29uc3QgUVN0cmluZyBuYW1lID0gb2JqLT5v YmplY3ROYW1lKCk7CisrICAgICAgICAgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSkKKysgICAgICAg ICAgICAgICAgcmVzdWx0LnByZXBlbmQobmFtZSk7CisrICAgICAgICAgICAgZWxzZQorKyAgICAg ICAgICAgICAgICByZXN1bHQucHJlcGVuZChRU3RyaW5nOjpmcm9tVXRmOChvYmotPm1ldGFPYmpl Y3QoKS0+Y2xhc3NOYW1lKCkpKTsKKysgICAgICAgIH0KKysgICAgICAgIGFjY2Vzc2libGUgPSBh Y2Nlc3NpYmxlLT5wYXJlbnQoKTsKKysgICAgfQorKyAgICByZXR1cm4gcmVzdWx0OworK30KKyt9 IC8vIG5hbWVzcGFjZQorKworIC8vIEFjY2Vzc2libGUKKyBib29sIEF0U3BpQWRhcHRvcjo6YWNj ZXNzaWJsZUludGVyZmFjZShRQWNjZXNzaWJsZUludGVyZmFjZSAqaW50ZXJmYWNlLCBjb25zdCBR U3RyaW5nICZmdW5jdGlvbiwgY29uc3QgUURCdXNNZXNzYWdlICZtZXNzYWdlLCBjb25zdCBRREJ1 c0Nvbm5lY3Rpb24gJmNvbm5lY3Rpb24pCisgeworQEAgLTE0NDEsNiArMTQ4NCw5IEBAIGJvb2wg QXRTcGlBZGFwdG9yOjphY2Nlc3NpYmxlSW50ZXJmYWNlKFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpp bnRlcmZhY2UsIGNvbnN0IFFTCisgICAgICAgICAgICAgY2hpbGRyZW4gPDwgcmVmOworICAgICAg ICAgfQorICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1lc3NhZ2UuY3JlYXRlUmVwbHkoUVZhcmlh bnQ6OmZyb21WYWx1ZShjaGlsZHJlbikpKTsKKysgICAgfSBlbHNlIGlmIChmdW5jdGlvbiA9PSBR TGF0aW4xU3RyaW5nKCJHZXRBY2Nlc3NpYmxlSWQiKSkgeworKyAgICAgICAgc2VuZFJlcGx5KGNv bm5lY3Rpb24sIG1lc3NhZ2UsCisrICAgICAgICAgICAgICAgICAgUVZhcmlhbnQ6OmZyb21WYWx1 ZShRREJ1c1ZhcmlhbnQoYWNjZXNzaWJsZUlkRm9yQWNjZXNzaWJsZShpbnRlcmZhY2UpKSkpOwor ICAgICB9IGVsc2UgeworICAgICAgICAgcUNEZWJ1ZyhsY0FjY2Vzc2liaWxpdHlBdHNwaSkgPDwg IldBUk5JTkc6IEF0U3BpQWRhcHRvcjo6YWNjZXNzaWJsZUludGVyZmFjZSBkb2VzIG5vdCBpbXBs ZW1lbnQgIiA8PCBmdW5jdGlvbiA8PCBtZXNzYWdlLnBhdGgoKTsKKyAgICAgICAgIHJldHVybiBm YWxzZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vz c2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQv bGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9uLmNwcAoraW5kZXggNDVkZGM4ZTQ5Ni4u Y2M3MzRhYmM2MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4 YWNjZXNzaWJpbGl0eS9kYnVzY29ubmVjdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9kYnVzY29ubmVjdGlvbi5jcHAKK0BAIC02OSw2 ICs2OSwyMSBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyBEQnVzQ29ubmVjdGlvbjo6REJ1c0Nvbm5l Y3Rpb24oUU9iamVjdCAqcGFyZW50KQorICAgICA6IFFPYmplY3QocGFyZW50KSwgbV9hMTF5Q29u bmVjdGlvbihRU3RyaW5nKCkpLCBtX2VuYWJsZWQoZmFsc2UpCisgeworKyAgICAvLyBJZiB0aGUg YnVzIGlzIGV4cGxpY2l0bHkgc2V0IHZpYSBlbnYgdmFyIGl0IG92ZXJyaWRlcyBldmVyeXRoaW5n IGVsc2UuCisrICAgIFFCeXRlQXJyYXkgYWRkcmVzc0VudiA9IHFnZXRlbnYoIkFUX1NQSV9CVVNf QUREUkVTUyIpOworKyAgICBpZiAoIWFkZHJlc3NFbnYuaXNFbXB0eSgpKSB7CisrICAgICAgICAv LyBPbmx5IGNvbm5lY3Qgb24gbmV4dCBsb29wIHJ1biwgY29ubmVjdGlvbnMgdG8gb3VyIGVuYWJs ZWQgc2lnbmFsIGFyZQorKyAgICAgICAgLy8gb25seSBlc3RhYmxpc2hlZCBhZnRlciB0aGUgY3Rv ciByZXR1cm5zLgorKyAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCgKKysgICAgICAg ICAgICAgICAgdGhpcywKKysgICAgICAgICAgICAgICAgW3RoaXMsIGFkZHJlc3NFbnZdIHsKKysg ICAgICAgICAgICAgICAgICAgIG1fZW5hYmxlZCA9IHRydWU7CisrICAgICAgICAgICAgICAgICAg ICBjb25uZWN0QTExeUJ1cyhRU3RyaW5nOjpmcm9tTG9jYWw4Qml0KGFkZHJlc3NFbnYpKTsKKysg ICAgICAgICAgICAgICAgfSwKKysgICAgICAgICAgICAgICAgUXQ6OlF1ZXVlZENvbm5lY3Rpb24p OworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisgICAgIC8vIFN0YXJ0IG1vbml0b3Jpbmcg aWYgIm9yZy5hMTF5LkJ1cyIgaXMgcmVnaXN0ZXJlZCBhcyBEQnVzIHNlcnZpY2UuCisgICAgIFFE QnVzQ29ubmVjdGlvbiBjID0gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCk7CisgICAgIGlm ICghYy5pc0Nvbm5lY3RlZCgpKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1 cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXMuY3BwIGIvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4 c2VydmljZXMuY3BwCitpbmRleCAxYTNjYWIyNzVkLi4yYWJlMDM5MTI2IDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1 bml4c2VydmljZXMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNl cy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlcy5jcHAKK0BAIC01MSw2ICs1MSw5IEBA CisgI2luY2x1ZGUgPFF0Q29yZS9RU3RhbmRhcmRQYXRocz4KKyAjaW5jbHVkZSA8UXRDb3JlL1FV cmw+CisgCisrI2luY2x1ZGUgPFF0R3VpL1FHdWlBcHBsaWNhdGlvbj4KKysjaW5jbHVkZSA8UXRH dWkvUVdpbmRvdz4KKysKKyAjaWYgUVRfQ09ORklHKGRidXMpCisgLy8gVGhlc2UgUXRDb3JlIGlu Y2x1ZGVzIGFyZSBuZWVkZWQgZm9yIHhkZy1kZXNrdG9wLXBvcnRhbCBzdXBwb3J0CisgI2luY2x1 ZGUgPFF0Q29yZS9wcml2YXRlL3Fjb3JlX3VuaXhfcC5oPgorQEAgLTU4LDYgKzYxLDggQEAKKyAj aW5jbHVkZSA8UXRDb3JlL1FGaWxlSW5mbz4KKyAjaW5jbHVkZSA8UXRDb3JlL1FVcmxRdWVyeT4K KyAKKysjaW5jbHVkZSA8UXRHdWkvUUNvbG9yPgorKworICNpbmNsdWRlIDxRdERCdXMvUURCdXND b25uZWN0aW9uPgorICNpbmNsdWRlIDxRdERCdXMvUURCdXNNZXNzYWdlPgorICNpbmNsdWRlIDxR dERCdXMvUURCdXNQZW5kaW5nQ2FsbD4KK0BAIC0xNDIsNiArMTQ3LDggQEAgc3RhdGljIGlubGlu ZSBib29sIGRldGVjdFdlYkJyb3dzZXIoY29uc3QgUUJ5dGVBcnJheSAmZGVza3RvcCwKKyAgICAg fQorIAorICAgICBpZiAoZGVza3RvcCA9PSBRQnl0ZUFycmF5KCJLREUiKSkgeworKyAgICAgICAg aWYgKGNoZWNrRXhlY3V0YWJsZShRU3RyaW5nTGl0ZXJhbCgia2RlLW9wZW41IiksIGJyb3dzZXIp KQorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgLy8gS29ucXVlcm9yIGxhdW5j aGVyCisgICAgICAgICBpZiAoY2hlY2tFeGVjdXRhYmxlKFFTdHJpbmdMaXRlcmFsKCJrZm1jbGll bnQiKSwgYnJvd3NlcikpIHsKKyAgICAgICAgICAgICBicm93c2VyLT5hcHBlbmQoUUxhdGluMVN0 cmluZygiIGV4ZWMiKSk7CitAQCAtMjk2LDggKzMwMywxMzUgQEAgc3RhdGljIGlubGluZSBRREJ1 c01lc3NhZ2UgeGRnRGVza3RvcFBvcnRhbFNlbmRFbWFpbChjb25zdCBRVXJsICZ1cmwpCisgCisg ICAgIHJldHVybiBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5jYWxsKG1lc3NhZ2UpOwor IH0KKysKKytuYW1lc3BhY2UgeworK3N0cnVjdCBYREdEZXNrdG9wQ29sb3IKKyt7CisrICAgIGRv dWJsZSByID0gMDsKKysgICAgZG91YmxlIGcgPSAwOworKyAgICBkb3VibGUgYiA9IDA7CisrCisr ICAgIFFDb2xvciB0b1FDb2xvcigpIGNvbnN0CisrICAgIHsKKysgICAgICAgIGNvbnN0ZXhwciBh dXRvIHJnYk1heCA9IDI1NTsKKysgICAgICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGludD4ociAq IHJnYk1heCksIHN0YXRpY19jYXN0PGludD4oZyAqIHJnYk1heCksCisrICAgICAgICAgICAgICAg ICBzdGF0aWNfY2FzdDxpbnQ+KGIgKiByZ2JNYXgpIH07CisrICAgIH0KKyt9OworKworK2NvbnN0 IFFEQnVzQXJndW1lbnQgJm9wZXJhdG9yPj4oY29uc3QgUURCdXNBcmd1bWVudCAmYXJndW1lbnQs IFhER0Rlc2t0b3BDb2xvciAmbXlTdHJ1Y3QpCisreworKyAgICBhcmd1bWVudC5iZWdpblN0cnVj dHVyZSgpOworKyAgICBhcmd1bWVudCA+PiBteVN0cnVjdC5yID4+IG15U3RydWN0LmcgPj4gbXlT dHJ1Y3QuYjsKKysgICAgYXJndW1lbnQuZW5kU3RydWN0dXJlKCk7CisrICAgIHJldHVybiBhcmd1 bWVudDsKKyt9CisrCisrY2xhc3MgWGRnRGVza3RvcFBvcnRhbENvbG9yUGlja2VyIDogcHVibGlj IFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlcgorK3sKKysgICAgUV9PQkpFQ1QKKytwdWJsaWM6 CisrICAgIFhkZ0Rlc2t0b3BQb3J0YWxDb2xvclBpY2tlcihjb25zdCBRU3RyaW5nICZwYXJlbnRX aW5kb3dJZCwgUVdpbmRvdyAqcGFyZW50KQorKyAgICAgICAgOiBRUGxhdGZvcm1TZXJ2aWNlQ29s b3JQaWNrZXIocGFyZW50KSwgbV9wYXJlbnRXaW5kb3dJZChwYXJlbnRXaW5kb3dJZCkKKysgICAg eworKyAgICB9CisrCisrICAgIHZvaWQgcGlja0NvbG9yKCkgb3ZlcnJpZGUKKysgICAgeworKyAg ICAgICAgLy8gREJ1cyBzaWduYXR1cmU6CisrICAgICAgICAvLyBQaWNrQ29sb3IgKElOICAgcyAg ICAgIHBhcmVudF93aW5kb3csCisrICAgICAgICAvLyAgICAgICAgICAgIElOICAgYXtzdn0gIG9w dGlvbnMKKysgICAgICAgIC8vICAgICAgICAgICAgT1VUICBvICAgICAgaGFuZGxlKQorKyAgICAg ICAgLy8gT3B0aW9uczoKKysgICAgICAgIC8vIGhhbmRsZV90b2tlbiAocykgLSAgQSBzdHJpbmcg dGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgQGhhbmRsZS4KKysK KysgICAgICAgIFFEQnVzTWVzc2FnZSBtZXNzYWdlID0gUURCdXNNZXNzYWdlOjpjcmVhdGVNZXRo b2RDYWxsKAorKyAgICAgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9w LnBvcnRhbC5EZXNrdG9wIiksIFFTdHJpbmdMaXRlcmFsKCIvb3JnL2ZyZWVkZXNrdG9wL3BvcnRh bC9kZXNrdG9wIiksCisrICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRl c2t0b3AucG9ydGFsLlNjcmVlbnNob3QiKSwgUVN0cmluZ0xpdGVyYWwoIlBpY2tDb2xvciIpKTsK KysgICAgICAgIG1lc3NhZ2UgPDwgbV9wYXJlbnRXaW5kb3dJZCA8PCBRVmFyaWFudE1hcCgpOwor KworKyAgICAgICAgUURCdXNQZW5kaW5nQ2FsbCBwZW5kaW5nQ2FsbCA9IFFEQnVzQ29ubmVjdGlv bjo6c2Vzc2lvbkJ1cygpLmFzeW5jQ2FsbChtZXNzYWdlKTsKKysgICAgICAgIGF1dG8gd2F0Y2hl ciA9IG5ldyBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcihwZW5kaW5nQ2FsbCwgdGhpcyk7CisrICAg ICAgICBjb25uZWN0KHdhdGNoZXIsICZRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcjo6ZmluaXNoZWQs IHRoaXMsCisrICAgICAgICAgICAgICAgIFt0aGlzXShRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAq d2F0Y2hlcikgeworKyAgICAgICAgICAgICAgICAgICAgd2F0Y2hlci0+ZGVsZXRlTGF0ZXIoKTsK KysgICAgICAgICAgICAgICAgICAgIFFEQnVzUGVuZGluZ1JlcGx5PFFEQnVzT2JqZWN0UGF0aD4g cmVwbHkgPSAqd2F0Y2hlcjsKKysgICAgICAgICAgICAgICAgICAgIGlmIChyZXBseS5pc0Vycm9y KCkpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBxV2FybmluZygiREJ1cyBjYWxsIHRvIHBp Y2sgY29sb3IgZmFpbGVkOiAlcyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cVByaW50YWJsZShyZXBseS5lcnJvcigpLm1lc3NhZ2UoKSkpOworKyAgICAgICAgICAgICAgICAg ICAgICAgIFFfRU1JVCBjb2xvclBpY2tlZCh7fSk7CisrICAgICAgICAgICAgICAgICAgICB9IGVs c2UgeworKyAgICAgICAgICAgICAgICAgICAgICAgIFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1 cygpLmNvbm5lY3QoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nTGl0 ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9wIiksIHJlcGx5LnZhbHVlKCkucGF0 aCgpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9y Zy5mcmVlZGVza3RvcC5wb3J0YWwuUmVxdWVzdCIpLCBRU3RyaW5nTGl0ZXJhbCgiUmVzcG9uc2Ui KSwgdGhpcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsYW5nLWZvcm1h dCBvZmYKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNMT1QoZ290Q29sb3JSZXNw b25zZSh1aW50LFFWYXJpYW50TWFwKSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8vIGNsYW5nLWZvcm1hdCBvbgorKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisrICAgICAg ICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIH0pOworKyAgICB9CisrCisrcHJpdmF0 ZSBRX1NMT1RTOgorKyAgICB2b2lkIGdvdENvbG9yUmVzcG9uc2UodWludCByZXN1bHQsIGNvbnN0 IFFWYXJpYW50TWFwICZtYXApCisrICAgIHsKKysgICAgICAgIGlmIChyZXN1bHQgIT0gMCkKKysg ICAgICAgICAgICByZXR1cm47CisrICAgICAgICBYREdEZXNrdG9wQ29sb3IgY29sb3J7fTsKKysg ICAgICAgIG1hcC52YWx1ZShRU3RyaW5nTGl0ZXJhbCgiY29sb3IiKSkudmFsdWU8UURCdXNBcmd1 bWVudD4oKSA+PiBjb2xvcjsKKysgICAgICAgIFFfRU1JVCBjb2xvclBpY2tlZChjb2xvci50b1FD b2xvcigpKTsKKysgICAgICAgIGRlbGV0ZUxhdGVyKCk7CisrICAgIH0KKysKKytwcml2YXRlOgor KyAgICBjb25zdCBRU3RyaW5nIG1fcGFyZW50V2luZG93SWQ7CisrfTsKKyt9IC8vIG5hbWVzcGFj ZQorKworICNlbmRpZiAvLyBRVF9DT05GSUcoZGJ1cykKKyAKKytRR2VuZXJpY1VuaXhTZXJ2aWNl czo6UUdlbmVyaWNVbml4U2VydmljZXMoKQorK3sKKysjaWYgUVRfQ09ORklHKGRidXMpCisrICAg IGlmIChxRW52aXJvbm1lbnRWYXJpYWJsZUludFZhbHVlKCJRVF9OT19YREdfREVTS1RPUF9QT1JU QUwiKSA+IDApIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKyAgICBRREJ1c01lc3NhZ2Ug bWVzc2FnZSA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRlTWV0aG9kQ2FsbCgKKysgICAgICAgICAgICBR U3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9wIiksIFFTdHJpbmdM aXRlcmFsKCIvb3JnL2ZyZWVkZXNrdG9wL3BvcnRhbC9kZXNrdG9wIiksCisrICAgICAgICAgICAg UVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5EQnVzLlByb3BlcnRpZXMiKSwgUVN0cmlu Z0xpdGVyYWwoIkdldCIpKTsKKysgICAgbWVzc2FnZSA8PCBRU3RyaW5nTGl0ZXJhbCgib3JnLmZy ZWVkZXNrdG9wLnBvcnRhbC5TY3JlZW5zaG90IikKKysgICAgICAgICAgICA8PCBRU3RyaW5nTGl0 ZXJhbCgidmVyc2lvbiIpOworKworKyAgICBRREJ1c1BlbmRpbmdDYWxsIHBlbmRpbmdDYWxsID0g UURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuYXN5bmNDYWxsKG1lc3NhZ2UpOworKyAgICBh dXRvIHdhdGNoZXIgPSBuZXcgUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIocGVuZGluZ0NhbGwpOwor KyAgICBRT2JqZWN0Ojpjb25uZWN0KHdhdGNoZXIsICZRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcjo6 ZmluaXNoZWQsIHdhdGNoZXIsCisrICAgICAgICAgICAgICAgICAgICAgW3RoaXNdKFFEQnVzUGVu ZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVyKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgIHdh dGNoZXItPmRlbGV0ZUxhdGVyKCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgIFFEQnVzUGVu ZGluZ1JlcGx5PFFWYXJpYW50PiByZXBseSA9ICp3YXRjaGVyOworKyAgICAgICAgICAgICAgICAg ICAgICAgICBpZiAoIXJlcGx5LmlzRXJyb3IoKSAmJiByZXBseS52YWx1ZSgpLnRvVUludCgpID49 IDIpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2hhc1NjcmVlbnNob3RQb3J0YWxX aXRoQ29sb3JQaWNraW5nID0gdHJ1ZTsKKysgICAgICAgICAgICAgICAgICAgICB9KTsKKysKKysj ZW5kaWYKKyt9CisrCisrUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpRR2VuZXJpY1VuaXhT ZXJ2aWNlczo6Y29sb3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50KQorK3sKKysjaWYgUVRfQ09ORklH KGRidXMpCisrICAgIC8vIE1ha2UgZG91YmxlIHN1cmUgdGhhdCB3ZSBhcmUgaW4gYSB3YXlsYW5k IGVudmlyb25tZW50LiBJbiBwYXJ0aWN1bGFyIGNoZWNrCisrICAgIC8vIFdBWUxBTkRfRElTUExB WSBzbyBhbHNvIFhXYXlsYW5kIGFwcHMgYmVuZWZpdCBmcm9tIHBvcnRhbC1iYXNlZCBjb2xvciBw aWNraW5nLgorKyAgICAvLyBPdXRzaWRlIHdheWxhbmQgd2UnbGwgcmF0aGVyIHJlbHkgb24gb3Ro ZXIgbWVhbnMgdGhhbiB0aGUgWERHIGRlc2t0b3AgcG9ydGFsLgorKyAgICBpZiAoIXFFbnZpcm9u bWVudFZhcmlhYmxlSXNFbXB0eSgiV0FZTEFORF9ESVNQTEFZIikKKysgICAgICAgIHx8IFFHdWlB cHBsaWNhdGlvbjo6cGxhdGZvcm1OYW1lKCkuc3RhcnRzV2l0aChRTGF0aW4xU3RyaW5nKCJ3YXls YW5kIikpKSB7CisrICAgICAgICByZXR1cm4gbmV3IFhkZ0Rlc2t0b3BQb3J0YWxDb2xvclBpY2tl cihwb3J0YWxXaW5kb3dJZGVudGlmaWVyKHBhcmVudCksIHBhcmVudCk7CisrICAgIH0KKysgICAg cmV0dXJuIG51bGxwdHI7CisrI2Vsc2UKKysgICAgUV9VTlVTRUQocGFyZW50KTsKKysgICAgcmV0 dXJuIG51bGxwdHI7CisrI2VuZGlmCisrfQorKworIFFCeXRlQXJyYXkgUUdlbmVyaWNVbml4U2Vy dmljZXM6OmRlc2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0CisgeworICAgICBzdGF0aWMgY29uc3Qg UUJ5dGVBcnJheSByZXN1bHQgPSBkZXRlY3REZXNrdG9wRW52aXJvbm1lbnQoKTsKK0BAIC0zNTIs NiArNDg2LDggQEAgYm9vbCBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6b3BlbkRvY3VtZW50KGNvbnN0 IFFVcmwgJnVybCkKKyB9CisgCisgI2Vsc2UKKytRR2VuZXJpY1VuaXhTZXJ2aWNlczo6UUdlbmVy aWNVbml4U2VydmljZXMoKSA9IGRlZmF1bHQ7CisrCisgUUJ5dGVBcnJheSBRR2VuZXJpY1VuaXhT ZXJ2aWNlczo6ZGVza3RvcEVudmlyb25tZW50KCkgY29uc3QKKyB7CisgICAgIHJldHVybiBRQnl0 ZUFycmF5TGl0ZXJhbCgiVU5LTk9XTiIpOworQEAgLTM3MSw2ICs1MDcsMzAgQEAgYm9vbCBRR2Vu ZXJpY1VuaXhTZXJ2aWNlczo6b3BlbkRvY3VtZW50KGNvbnN0IFFVcmwgJnVybCkKKyAgICAgcmV0 dXJuIGZhbHNlOworIH0KKyAKKytRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgKlFHZW5lcmlj VW5peFNlcnZpY2VzOjpjb2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQpCisreworKyAgICBRX1VO VVNFRChwYXJlbnQpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisgI2VuZGlmIC8vIFFU X05PX01VTFRJUFJPQ0VTUworIAorK1FTdHJpbmcgUUdlbmVyaWNVbml4U2VydmljZXM6OnBvcnRh bFdpbmRvd0lkZW50aWZpZXIoUVdpbmRvdyAqd2luZG93KQorK3sKKysgICAgaWYgKFFHdWlBcHBs aWNhdGlvbjo6cGxhdGZvcm1OYW1lKCkgPT0gUUxhdGluMVN0cmluZygieGNiIikpCisrICAgICAg ICByZXR1cm4gUVN0cmluZ0xpdGVyYWwoIngxMToiKSArIFFTdHJpbmc6Om51bWJlcih3aW5kb3ct PndpbklkKCksIDE2KTsKKysgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyt9CisrCisrYm9vbCBRR2Vu ZXJpY1VuaXhTZXJ2aWNlczo6aGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNhcGFiaWxpdHkpIGNv bnN0CisreworKyAgICBzd2l0Y2ggKGNhcGFiaWxpdHkpIHsKKysgICAgY2FzZSBDYXBhYmlsaXR5 OjpDb2xvclBpY2tpbmc6CisrICAgICAgICByZXR1cm4gbV9oYXNTY3JlZW5zaG90UG9ydGFsV2l0 aENvbG9yUGlja2luZzsKKysgICAgfQorKyAgICByZXR1cm4gZmFsc2U7CisrfQorKworIFFUX0VO RF9OQU1FU1BBQ0UKKysKKysjaW5jbHVkZSAicWdlbmVyaWN1bml4c2VydmljZXMubW9jIgorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4 L3FnZW5lcmljdW5peHNlcnZpY2VzX3AuaCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3Nl cnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzX3AuaAoraW5kZXggOGFjM2Rl NmYwMy4uMzA5MjRlNjRiZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzX3AuaAorKysrIGIvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4 c2VydmljZXNfcC5oCitAQCAtNTksMTYgKzU5LDIxIEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIGNs YXNzIFFHZW5lcmljVW5peFNlcnZpY2VzIDogcHVibGljIFFQbGF0Zm9ybVNlcnZpY2VzCisgewor IHB1YmxpYzoKKy0gICAgUUdlbmVyaWNVbml4U2VydmljZXMoKSB7fQorKyAgICBRR2VuZXJpY1Vu aXhTZXJ2aWNlcygpOworIAorICAgICBRQnl0ZUFycmF5IGRlc2t0b3BFbnZpcm9ubWVudCgpIGNv bnN0IG92ZXJyaWRlOworIAorKyAgICBib29sIGhhc0NhcGFiaWxpdHkoQ2FwYWJpbGl0eSBjYXBh YmlsaXR5KSBjb25zdCBvdmVycmlkZTsKKyAgICAgYm9vbCBvcGVuVXJsKGNvbnN0IFFVcmwgJnVy bCkgb3ZlcnJpZGU7CisgICAgIGJvb2wgb3BlbkRvY3VtZW50KGNvbnN0IFFVcmwgJnVybCkgb3Zl cnJpZGU7CisrICAgIFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqY29sb3JQaWNrZXIoUVdp bmRvdyAqcGFyZW50ID0gbnVsbHB0cikgb3ZlcnJpZGU7CisrCisrICAgIHZpcnR1YWwgUVN0cmlu ZyBwb3J0YWxXaW5kb3dJZGVudGlmaWVyKFFXaW5kb3cgKndpbmRvdyk7CisgCisgcHJpdmF0ZToK KyAgICAgUVN0cmluZyBtX3dlYkJyb3dzZXI7CisgICAgIFFTdHJpbmcgbV9kb2N1bWVudExhdW5j aGVyOworKyAgICBib29sIG1faGFzU2NyZWVuc2hvdFBvcnRhbFdpdGhDb2xvclBpY2tpbmcgPSBm YWxzZTsKKyB9OworIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29u bmVjdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3Vu aXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbi5jcHAKK2luZGV4IDA5NDcwYmNjYzYuLmNj N2M3ZDRkOGEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMv Z2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbi5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21l bnVjb25uZWN0aW9uLmNwcAorQEAgLTY5LDYgKzY5LDcgQEAgY29uc3QgUVN0cmluZyBNZW51QmFy UGF0aCA9IFFMYXRpbjFTdHJpbmcoIi9NZW51QmFyIik7CisgKi8KKyBRREJ1c01lbnVDb25uZWN0 aW9uOjpRREJ1c01lbnVDb25uZWN0aW9uKFFPYmplY3QgKnBhcmVudCwgY29uc3QgUVN0cmluZyAm c2VydmljZU5hbWUpCisgICAgIDogUU9iamVjdChwYXJlbnQpCisrICAgICwgbV9zZXJ2aWNlTmFt ZShzZXJ2aWNlTmFtZSkKKyAgICAgLCBtX2Nvbm5lY3Rpb24oc2VydmljZU5hbWUuaXNOdWxsKCkg PyBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6IFFEQnVzQ29ubmVjdGlvbjo6Y29ubmVjdFRvQnVzKFFEQnVzQ29u bmVjdGlvbjo6U2Vzc2lvbkJ1cywgc2VydmljZU5hbWUpKQorICAgICAsIG1fZGJ1c1dhdGNoZXIo bmV3IFFEQnVzU2VydmljZVdhdGNoZXIoU3RhdHVzTm90aWZpZXJXYXRjaGVyU2VydmljZSwgbV9j b25uZWN0aW9uLCBRREJ1c1NlcnZpY2VXYXRjaGVyOjpXYXRjaEZvclJlZ2lzdHJhdGlvbiwgdGhp cykpCitAQCAtODMsNiArODQsMTIgQEAgUURCdXNNZW51Q29ubmVjdGlvbjo6UURCdXNNZW51Q29u bmVjdGlvbihRT2JqZWN0ICpwYXJlbnQsIGNvbnN0IFFTdHJpbmcgJnNlcnZpY2UKKyAjZW5kaWYK KyB9CisgCisrUURCdXNNZW51Q29ubmVjdGlvbjo6flFEQnVzTWVudUNvbm5lY3Rpb24oKQorK3sK KysgIGlmICghbV9zZXJ2aWNlTmFtZS5pc0VtcHR5KCkgJiYgbV9jb25uZWN0aW9uLmlzQ29ubmVj dGVkKCkpCisrICAgICAgUURCdXNDb25uZWN0aW9uOjpkaXNjb25uZWN0RnJvbUJ1cyhtX3NlcnZp Y2VOYW1lKTsKKyt9CisrCisgdm9pZCBRREJ1c01lbnVDb25uZWN0aW9uOjpkYnVzRXJyb3IoY29u c3QgUURCdXNFcnJvciAmZXJyb3IpCisgeworICAgICBxV2FybmluZygpIDw8ICJRREJ1c1RyYXlJ Y29uIGVuY291bnRlcmVkIGEgRC1CdXMgZXJyb3I6IiA8PCBlcnJvcjsKK0BAIC0xMDUsMTMgKzEx Miw3IEBAIHZvaWQgUURCdXNNZW51Q29ubmVjdGlvbjo6dW5yZWdpc3RlclRyYXlJY29uTWVudShR REJ1c1RyYXlJY29uICppdGVtKQorIAorIGJvb2wgUURCdXNNZW51Q29ubmVjdGlvbjo6cmVnaXN0 ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKQorIHsKKy0gICAgYm9vbCBzdWNjZXNzID0g Y29ubmVjdGlvbigpLnJlZ2lzdGVyU2VydmljZShpdGVtLT5pbnN0YW5jZUlkKCkpOworLSAgICBp ZiAoIXN1Y2Nlc3MpIHsKKy0gICAgICAgIHFXYXJuaW5nKCkgPDwgImZhaWxlZCB0byByZWdpc3Rl ciBzZXJ2aWNlIiA8PCBpdGVtLT5pbnN0YW5jZUlkKCk7CistICAgICAgICByZXR1cm4gZmFsc2U7 CistICAgIH0KKy0KKy0gICAgc3VjY2VzcyA9IGNvbm5lY3Rpb24oKS5yZWdpc3Rlck9iamVjdChT dGF0dXNOb3RpZmllckl0ZW1QYXRoLCBpdGVtKTsKKysgICAgYm9vbCBzdWNjZXNzID0gY29ubmVj dGlvbigpLnJlZ2lzdGVyT2JqZWN0KFN0YXR1c05vdGlmaWVySXRlbVBhdGgsIGl0ZW0pOworICAg ICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgIHVucmVnaXN0ZXJUcmF5SWNvbihpdGVtKTsKKyAg ICAgICAgIHFXYXJuaW5nKCkgPDwgImZhaWxlZCB0byByZWdpc3RlciIgPDwgaXRlbS0+aW5zdGFu Y2VJZCgpIDw8IFN0YXR1c05vdGlmaWVySXRlbVBhdGg7CitAQCAtMTI2LDIxICsxMjcsMTggQEAg Ym9vbCBRREJ1c01lbnVDb25uZWN0aW9uOjpyZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24g Kml0ZW0pCisgCisgYm9vbCBRREJ1c01lbnVDb25uZWN0aW9uOjpyZWdpc3RlclRyYXlJY29uV2l0 aFdhdGNoZXIoUURCdXNUcmF5SWNvbiAqaXRlbSkKKyB7CisrICAgIFFfVU5VU0VEKGl0ZW0pOwor ICAgICBRREJ1c01lc3NhZ2UgcmVnaXN0ZXJNZXRob2QgPSBRREJ1c01lc3NhZ2U6OmNyZWF0ZU1l dGhvZENhbGwoCisgICAgICAgICAgICAgICAgIFN0YXR1c05vdGlmaWVyV2F0Y2hlclNlcnZpY2Us IFN0YXR1c05vdGlmaWVyV2F0Y2hlclBhdGgsIFN0YXR1c05vdGlmaWVyV2F0Y2hlclNlcnZpY2Us CisgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIlJlZ2lzdGVyU3RhdHVzTm90aWZpZXJJ dGVtIikpOworLSAgICByZWdpc3Rlck1ldGhvZC5zZXRBcmd1bWVudHMoUVZhcmlhbnRMaXN0KCkg PDwgaXRlbS0+aW5zdGFuY2VJZCgpKTsKKysgICAgcmVnaXN0ZXJNZXRob2Quc2V0QXJndW1lbnRz KFFWYXJpYW50TGlzdCgpIDw8IG1fY29ubmVjdGlvbi5iYXNlU2VydmljZSgpKTsKKyAgICAgcmV0 dXJuIG1fY29ubmVjdGlvbi5jYWxsV2l0aENhbGxiYWNrKHJlZ2lzdGVyTWV0aG9kLCB0aGlzLCBT SUdOQUwodHJheUljb25SZWdpc3RlcmVkKCkpLCBTTE9UKGRidXNFcnJvcihRREJ1c0Vycm9yKSkp OworIH0KKyAKKy1ib29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnVucmVnaXN0ZXJUcmF5SWNvbihR REJ1c1RyYXlJY29uICppdGVtKQorK3ZvaWQgUURCdXNNZW51Q29ubmVjdGlvbjo6dW5yZWdpc3Rl clRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pCisgeworICAgICB1bnJlZ2lzdGVyVHJheUlj b25NZW51KGl0ZW0pOworICAgICBjb25uZWN0aW9uKCkudW5yZWdpc3Rlck9iamVjdChTdGF0dXNO b3RpZmllckl0ZW1QYXRoKTsKKy0gICAgYm9vbCBzdWNjZXNzID0gY29ubmVjdGlvbigpLnVucmVn aXN0ZXJTZXJ2aWNlKGl0ZW0tPmluc3RhbmNlSWQoKSk7CistICAgIGlmICghc3VjY2VzcykKKy0g ICAgICAgIHFXYXJuaW5nKCkgPDwgImZhaWxlZCB0byB1bnJlZ2lzdGVyIHNlcnZpY2UiIDw8IGl0 ZW0tPmluc3RhbmNlSWQoKTsKKy0gICAgcmV0dXJuIHN1Y2Nlc3M7CisgfQorICNlbmRpZiAvLyBR VF9OT19TWVNURU1UUkFZSUNPTgorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1z dXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uX3Au aCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVu dS9xZGJ1c21lbnVjb25uZWN0aW9uX3AuaAoraW5kZXggZjQ4NDc5NWZiYi4uOTdiZGZhYmI4NSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5p eC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uX3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbGF0 Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rp b25fcC5oCitAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBRREJ1c01lbnVDb25uZWN0aW9uIDogcHVi bGljIFFPYmplY3QKKyAKKyBwdWJsaWM6CisgICAgIFFEQnVzTWVudUNvbm5lY3Rpb24oUU9iamVj dCAqcGFyZW50ID0gbnVsbHB0ciwgY29uc3QgUVN0cmluZyAmc2VydmljZU5hbWUgPSBRU3RyaW5n KCkpOworKyAgICB+UURCdXNNZW51Q29ubmVjdGlvbigpOworICAgICBRREJ1c0Nvbm5lY3Rpb24g Y29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQorICAgICBRREJ1c1Nl cnZpY2VXYXRjaGVyICpkYnVzV2F0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGJ1c1dhdGNoZXI7 IH0KKyAgICAgYm9vbCBpc1N0YXR1c05vdGlmaWVySG9zdFJlZ2lzdGVyZWQoKSBjb25zdCB7IHJl dHVybiBtX3N0YXR1c05vdGlmaWVySG9zdFJlZ2lzdGVyZWQ7IH0KK0BAIC03OCw3ICs3OSw3IEBA IHB1YmxpYzoKKyAgICAgdm9pZCB1bnJlZ2lzdGVyVHJheUljb25NZW51KFFEQnVzVHJheUljb24g Kml0ZW0pOworICAgICBib29sIHJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSk7 CisgICAgIGJvb2wgcmVnaXN0ZXJUcmF5SWNvbldpdGhXYXRjaGVyKFFEQnVzVHJheUljb24gKml0 ZW0pOworLSAgICBib29sIHVucmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKTsK KysgICAgdm9pZCB1bnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSk7CisgI2Vu ZGlmIC8vIFFUX05PX1NZU1RFTVRSQVlJQ09OCisgCisgUV9TSUdOQUxTOgorQEAgLTkwLDYgKzkx LDcgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIGRidXNFcnJvcihjb25zdCBRREJ1c0Vy cm9yICZlcnJvcik7CisgCisgcHJpdmF0ZToKKysgICAgUVN0cmluZyBtX3NlcnZpY2VOYW1lOwor ICAgICBRREJ1c0Nvbm5lY3Rpb24gbV9jb25uZWN0aW9uOworICAgICBRREJ1c1NlcnZpY2VXYXRj aGVyICptX2RidXNXYXRjaGVyOworICAgICBib29sIG1fc3RhdHVzTm90aWZpZXJIb3N0UmVnaXN0 ZXJlZDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2Vu ZXJpY3VuaXgvZGJ1c3RyYXkvcWRidXN0cmF5aWNvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3RyYXkvcWRidXN0cmF5aWNvbi5jcHAKK2lu ZGV4IGJlZGU3MDk3NWEuLjc2YmZlYzVlNWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRm b3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3RyYXkvcWRidXN0cmF5aWNvbi5jcHAK KysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVz dHJheS9xZGJ1c3RyYXlpY29uLmNwcAorQEAgLTcxLDggKzcxLDEyIEBAIFFfTE9HR0lOR19DQVRF R09SWShxTGNUcmF5LCAicXQucXBhLnRyYXkiKQorIHN0YXRpYyBRU3RyaW5nIGljb25UZW1wUGF0 aCgpCisgeworICAgICBRU3RyaW5nIHRlbXBQYXRoID0gUVN0YW5kYXJkUGF0aHM6OndyaXRhYmxl TG9jYXRpb24oUVN0YW5kYXJkUGF0aHM6OlJ1bnRpbWVMb2NhdGlvbik7CistICAgIGlmICghdGVt cFBhdGguaXNFbXB0eSgpKQorKyAgICBpZiAoIXRlbXBQYXRoLmlzRW1wdHkoKSkgeworKyAgICAg ICAgUVN0cmluZyBmbGF0cGFrSWQgPSBxRW52aXJvbm1lbnRWYXJpYWJsZSgiRkxBVFBBS19JRCIp OworKyAgICAgICAgaWYgKCFmbGF0cGFrSWQuaXNFbXB0eSgpICYmIFFGaWxlSW5mbzo6ZXhpc3Rz KFFMYXRpbjFTdHJpbmcoIi8uZmxhdHBhay1pbmZvIikpKQorKyAgICAgICAgICAgIHRlbXBQYXRo ICs9IFFMYXRpbjFTdHJpbmcoIi9hcHAvIikgKyBmbGF0cGFrSWQ7CisgICAgICAgICByZXR1cm4g dGVtcFBhdGg7CisrICAgIH0KKyAKKyAgICAgdGVtcFBhdGggPSBRU3RhbmRhcmRQYXRoczo6d3Jp dGFibGVMb2NhdGlvbihRU3RhbmRhcmRQYXRoczo6R2VuZXJpY0NhY2hlTG9jYXRpb24pOworIAor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5p eC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhl bWVzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHRoZW1lcy5jcHAKK2luZGV4IGNiMWIzOWRiNjQu LjZlMDFhZjA1MmMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVt ZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVzLmNwcAorKysrIGIvcXRiYXNlL3NyYy9w bGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHRoZW1lcy5jcHAK K0BAIC03NTUsNiArNzU1LDkgQEAgUVZhcmlhbnQgUUdub21lVGhlbWU6OnRoZW1lSGludChRUGxh dGZvcm1UaGVtZTo6VGhlbWVIaW50IGhpbnQpIGNvbnN0CisgICAgICAgICByZXR1cm4gUVZhcmlh bnQoUUNoYXIoMHgyMDIyKSk7CisgICAgIGNhc2UgUVBsYXRmb3JtVGhlbWU6OlVpRWZmZWN0czoK KyAgICAgICAgIHJldHVybiBRVmFyaWFudChpbnQoSG92ZXJFZmZlY3QpKTsKKysgICAgY2FzZSBR UGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzOgorKyAgICAgICAgcmV0dXJuIFFWYXJpYW50 Ojpmcm9tVmFsdWUoCisrICAgICAgICAgICAgICAgIFFMaXN0PFF0OjpLZXk+KHsgUXQ6OktleV9T cGFjZSwgUXQ6OktleV9SZXR1cm4sIFF0OjpLZXlfRW50ZXIsIFF0OjpLZXlfU2VsZWN0IH0pKTsK KyAgICAgZGVmYXVsdDoKKyAgICAgICAgIGJyZWFrOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9hcGkvcWVnbGZzY3Vyc29yLmNwcCBiL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5jcHAKK2lu ZGV4IDk4ZTA1MTk1ZWUuLjFlOTJmNDNkZWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJzb3IuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJzb3IuY3BwCitAQCAtMzQzLDgg KzM0Myw3IEBAIHZvaWQgUUVnbEZTQ3Vyc29yOjpwYWludE9uU2NyZWVuKCkKKyAgICAgLy8gc2Ny ZWVucyBhcmUgc2libGluZ3Mgb2YgZWFjaCBvdGhlci4gV2hlbiBub3QgZW5hYmxlZCwgdGhlIHNp YmxpbmcgbGlzdAorICAgICAvLyBvbmx5IGNvbnRhaW5zIG1fc2NyZWVuIGl0c2VsZi4KKyAgICAg Zm9yIChRUGxhdGZvcm1TY3JlZW4gKnNjcmVlbiA6IG1fc2NyZWVuLT52aXJ0dWFsU2libGluZ3Mo KSkgeworLSAgICAgICAgaWYgKHNjcmVlbi0+Z2VvbWV0cnkoKS5jb250YWlucyhjci50b3BMZWZ0 KCkudG9Qb2ludCgpICsgbV9jdXJzb3IuaG90U3BvdCkKKy0gICAgICAgICAgICAmJiBRT3BlbkdM Q29udGV4dDo6Y3VycmVudENvbnRleHQoKS0+c2NyZWVuKCkgPT0gc2NyZWVuLT5zY3JlZW4oKSkK KysgICAgICAgIGlmIChzY3JlZW4tPmdlb21ldHJ5KCkuY29udGFpbnMoY3IudG9wTGVmdCgpLnRv UG9pbnQoKSArIG1fY3Vyc29yLmhvdFNwb3QpKQorICAgICAgICAgeworICAgICAgICAgICAgIGNy LnRyYW5zbGF0ZSgtc2NyZWVuLT5nZW9tZXRyeSgpLnRvcExlZnQoKSk7CisgICAgICAgICAgICAg Y29uc3QgUVNpemUgc2NyZWVuU2l6ZSA9IHNjcmVlbi0+Z2VvbWV0cnkoKS5zaXplKCk7CitAQCAt NDY4LDExICs0NjcsMTIgQEAgdm9pZCBRRWdsRlNDdXJzb3I6OmRyYXcoY29uc3QgUVJlY3RGICZy KQorIHsKKyAgICAgU3RhdGVTYXZlciBzdGF0ZVNhdmVyOworIAorLSAgICBRRWdsRlNDdXJzb3JE YXRhICZnZnggPSBzdGF0aWNfY2FzdDxRRWdsRlNDb250ZXh0Kj4oUU9wZW5HTENvbnRleHQ6OmN1 cnJlbnRDb250ZXh0KCktPmhhbmRsZSgpKS0+Y3Vyc29yRGF0YTsKKy0gICAgaWYgKCFnZngucHJv Z3JhbSkgeworLSAgICAgICAgLy8gb25lIHRpbWUgaW5pdGlhbGl6YXRpb24KKysgICAgLy8gb25l IHRpbWUgaW5pdGlhbGl6YXRpb24KKysgICAgaWYgKCFRT3BlbkdMRnVuY3Rpb25zOjpkX3B0cikK KyAgICAgICAgIGluaXRpYWxpemVPcGVuR0xGdW5jdGlvbnMoKTsKKyAKKysgICAgUUVnbEZTQ3Vy c29yRGF0YSAmZ2Z4ID0gc3RhdGljX2Nhc3Q8UUVnbEZTQ29udGV4dCo+KFFPcGVuR0xDb250ZXh0 OjpjdXJyZW50Q29udGV4dCgpLT5oYW5kbGUoKSktPmN1cnNvckRhdGE7CisrICAgIGlmICghZ2Z4 LnByb2dyYW0pIHsKKyAgICAgICAgIGNyZWF0ZVNoYWRlclByb2dyYW1zKCk7CisgCisgICAgICAg ICBpZiAoIWdmeC5hdGxhc1RleHR1cmUpIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWludGVncmF0aW9uL2VnbGZzX2ttc19zdXBwb3J0L3Fl Z2xmc2ttc2V2ZW50cmVhZGVyLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWds ZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21zX3N1cHBvcnQvcWVnbGZza21zZXZlbnRyZWFk ZXIuY3BwCitpbmRleCA2NDVhMGFlMmU5Li4zZTBlNDA2ZjFhIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9kZXZpY2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNf c3VwcG9ydC9xZWdsZnNrbXNldmVudHJlYWRlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21zX3N1cHBvcnQvcWVn bGZza21zZXZlbnRyZWFkZXIuY3BwCitAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgUUVnbEZTS21z RXZlbnRSZWFkZXI6OmNyZWF0ZShRRWdsRlNLbXNEZXZpY2UgKmRldmljZSkKKyAKKyAgICAgbV9k ZXZpY2UgPSBkZXZpY2U7CisgCistICAgIHFDRGVidWcocUxjRWdsZnNLbXNEZWJ1ZywgIkluaXRh bGl6aW5nIGV2ZW50IHJlYWRlciBmb3IgZGV2aWNlICVwIGZkICVkIiwKKysgICAgcUNEZWJ1Zyhx TGNFZ2xmc0ttc0RlYnVnLCAiSW5pdGlhbGl6aW5nIGV2ZW50IHJlYWRlciBmb3IgZGV2aWNlICVw IGZkICVkIiwKKyAgICAgICAgICAgICBtX2RldmljZSwgbV9kZXZpY2UtPmZkKCkpOworIAorICAg ICBtX3RocmVhZCA9IG5ldyBRRWdsRlNLbXNFdmVudFJlYWRlclRocmVhZChtX2RldmljZS0+ZmQo KSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4v cW9mZnNjcmVlbmludGVncmF0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv b2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAKK2luZGV4IDE0MWZiNjhhMjMuLmQ0 Mjk0ZDQyNWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNj cmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uY3BwCitAQCAtMTIyLDEx ICsxMjIsMTMgQEAgUU9mZnNjcmVlbkludGVncmF0aW9uOjpRT2Zmc2NyZWVuSW50ZWdyYXRpb24o KQorICNlbmRpZgorICAgICBtX3NlcnZpY2VzLnJlc2V0KG5ldyBRUGxhdGZvcm1TZXJ2aWNlcyk7 CisgCistICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVNjcmVlbkFkZGVkKG5ldyBR T2Zmc2NyZWVuU2NyZWVuKTsKKysgICAgbV9zY3JlZW4gPSBuZXcgUU9mZnNjcmVlblNjcmVlbjsK KysgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlU2NyZWVuQWRkZWQobV9zY3JlZW4p OworIH0KKyAKKyBRT2Zmc2NyZWVuSW50ZWdyYXRpb246On5RT2Zmc2NyZWVuSW50ZWdyYXRpb24o KQorIHsKKysgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlU2NyZWVuUmVtb3ZlZCht X3NjcmVlbik7CisgfQorIAorIHZvaWQgUU9mZnNjcmVlbkludGVncmF0aW9uOjppbml0aWFsaXpl KCkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9x b2Zmc2NyZWVuaW50ZWdyYXRpb24uaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zm c2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5oCitpbmRleCAwZWE5MGY2YzJmLi5mZTAwZmRl MDdjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4v cW9mZnNjcmVlbmludGVncmF0aW9uLmgKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5oCitAQCAtODQsNiArODQsNyBAQCBw cm90ZWN0ZWQ6CisgI2VuZGlmCisgICAgIFFTY29wZWRQb2ludGVyPFFQbGF0Zm9ybUlucHV0Q29u dGV4dD4gbV9pbnB1dENvbnRleHQ7CisgICAgIFFTY29wZWRQb2ludGVyPFFQbGF0Zm9ybVNlcnZp Y2VzPiBtX3NlcnZpY2VzOworKyAgICBRUGxhdGZvcm1TY3JlZW4gKm1fc2NyZWVuOworICAgICBt dXRhYmxlIFFTY29wZWRQb2ludGVyPFFQbGF0Zm9ybU5hdGl2ZUludGVyZmFjZT4gbV9uYXRpdmVJ bnRlcmZhY2U7CisgfTsKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm1zL3dpbmRvd3MvcXdpbmRvd3NnbGNvbnRleHQuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNwcAoraW5kZXggNmZhNWE4YTJiMy4u MWY0OWYwYWVmZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2lu ZG93cy9xd2luZG93c2dsY29udGV4dC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXMvd2luZG93cy9xd2luZG93c2dsY29udGV4dC5jcHAKK0BAIC00OCw2ICs0OCw3IEBACisg I2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1uYXRpdmVpbnRlcmZhY2UuaD4KKyAjaW5jbHVkZSA8UXRQ bGF0Zm9ybUhlYWRlcnMvcXdnbG5hdGl2ZWNvbnRleHQuaD4KKyAKKysjaW5jbHVkZSA8cHJpdmF0 ZS9xc3lzdGVtbGlicmFyeV9wLmg+CisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKyAKKyAjaW5jbHVk ZSA8d2luZ2RpLmg+CitAQCAtMTYyLDE5ICsxNjMsMjUgQEAgUUZ1bmN0aW9uUG9pbnRlciBRV2lu ZG93c09wZW5nbDMyRExMOjpyZXNvbHZlKGNvbnN0IGNoYXIgKm5hbWUpCisgCisgYm9vbCBRV2lu ZG93c09wZW5nbDMyRExMOjppbml0KGJvb2wgc29mdHdhcmVSZW5kZXJpbmcpCisgeworLSAgICBj b25zdCBRQnl0ZUFycmF5IG9wZW5nbDMyID0gUUJ5dGVBcnJheUxpdGVyYWwoIm9wZW5nbDMyLmRs bCIpOworLSAgICBjb25zdCBRQnl0ZUFycmF5IHN3b3BlbmdsID0gUUJ5dGVBcnJheUxpdGVyYWwo Im9wZW5nbDMyc3cuZGxsIik7CisrICAgIGNvbnN0IFFCeXRlQXJyYXkgb3BlbmdsMzIgPSBRQnl0 ZUFycmF5TGl0ZXJhbCgib3BlbmdsMzIiKTsKKysgICAgY29uc3QgUUJ5dGVBcnJheSBzd29wZW5n bCA9IFFCeXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMnN3Iik7CisrICAgIGJvb2wgdXNlU3lzdGVt TGliID0gZmFsc2U7CisgCisgICAgIFFCeXRlQXJyYXkgb3BlbmdsRGxsID0gcWdldGVudigiUVRf T1BFTkdMX0RMTCIpOworLSAgICBpZiAob3BlbmdsRGxsLmlzRW1wdHkoKSkKKysgICAgaWYgKG9w ZW5nbERsbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgIG9wZW5nbERsbCA9IHNvZnR3YXJlUmVuZGVy aW5nID8gc3dvcGVuZ2wgOiBvcGVuZ2wzMjsKKysgICAgICAgIHVzZVN5c3RlbUxpYiA9ICFzb2Z0 d2FyZVJlbmRlcmluZzsKKysgICAgfQorIAorICAgICBvcGVuZ2xEbGwgPSBvcGVuZ2xEbGwudG9M b3dlcigpOworICAgICBtX25vbk9wZW5nbDMyID0gb3BlbmdsRGxsICE9IG9wZW5nbDMyOworIAor ICAgICBxQ0RlYnVnKGxjUXBhR2wpIDw8ICJRdDogVXNpbmcgV0dMIGFuZCBPcGVuR0wgZnJvbSIg PDwgb3BlbmdsRGxsOworIAorLSAgICBtX2xpYiA9IDo6TG9hZExpYnJhcnlBKG9wZW5nbERsbC5j b25zdERhdGEoKSk7CisrICAgIGlmICh1c2VTeXN0ZW1MaWIpCisrICAgICAgICBtX2xpYiA9IFFT eXN0ZW1MaWJyYXJ5Ojpsb2FkKCh3Y2hhcl90KikoUVN0cmluZzo6ZnJvbUxhdGluMShvcGVuZ2xE bGwpLnV0ZjE2KCkpKTsKKysgICAgZWxzZQorKyAgICAgICAgbV9saWIgPSBMb2FkTGlicmFyeUEo b3BlbmdsRGxsLmNvbnN0RGF0YSgpKTsKKyAgICAgaWYgKCFtX2xpYikgeworICAgICAgICAgcUVy cm5vV2FybmluZyg6OkdldExhc3RFcnJvcigpLCAiRmFpbGVkIHRvIGxvYWQgJXMiLCBvcGVuZ2xE bGwuY29uc3REYXRhKCkpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTE4NCw3ICsxOTEs NyBAQCBib29sIFFXaW5kb3dzT3BlbmdsMzJETEw6OmluaXQoYm9vbCBzb2Z0d2FyZVJlbmRlcmlu ZykKKyAgICAgICAgIC8vIExvYWQgb3BlbmdsMzIuZGxsIGFsd2F5cy4gR0RJIGZ1bmN0aW9ucyBs aWtlIENob29zZVBpeGVsRm9ybWF0IGRvCisgICAgICAgICAvLyBHZXRNb2R1bGVIYW5kbGUgZm9y IG9wZW5nbDMyLmRsbCBhbmQgYmVoYXZlIGRpZmZlcmVudGx5IChhbmQgY2FsbCBiYWNrIGludG8K KyAgICAgICAgIC8vIG9wZW5nbDMyKSB3aGVuIHRoZSBtb2R1bGUgaXMgcHJlc2VudC4gVGhpcyBp cyBmaW5lIGZvciBkdW1teSBjb250ZXh0cyBhbmQgd2luZG93cy4KKy0gICAgICAgIDo6TG9hZExp YnJhcnlBKCJvcGVuZ2wzMi5kbGwiKTsKKysgICAgICAgIFFTeXN0ZW1MaWJyYXJ5Ojpsb2FkKEwi b3BlbmdsMzIiKTsKKyAgICAgfQorIAorICAgICB3Z2xDcmVhdGVDb250ZXh0ID0gcmVpbnRlcnBy ZXRfY2FzdDxIR0xSQyAoV0lOQVBJICopKEhEQyk+KHJlc29sdmUoIndnbENyZWF0ZUNvbnRleHQi KSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3 aW5kb3dzb3BlbmdsdGVzdGVyLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2lu ZG93cy9xd2luZG93c29wZW5nbHRlc3Rlci5jcHAKK2luZGV4IGQ3ZDE4NmU4MDQuLjllYjQwMTFi ZjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdp bmRvd3NvcGVuZ2x0ZXN0ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L3dpbmRvd3MvcXdpbmRvd3NvcGVuZ2x0ZXN0ZXIuY3BwCitAQCAtNDksNiArNDksNyBAQAorICNp bmNsdWRlIDxRdENvcmUvcXN0YW5kYXJkcGF0aHMuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3FsaWJy YXJ5aW5mby5oPgorICNpbmNsdWRlIDxRdENvcmUvcWhhc2guaD4KKysjaW5jbHVkZSA8cHJpdmF0 ZS9xc3lzdGVtbGlicmFyeV9wLmg+CisgCisgI2lmbmRlZiBRVF9OT19PUEVOR0wKKyAjaW5jbHVk ZSA8cHJpdmF0ZS9xb3BlbmdsX3AuaD4KK0BAIC0zOTYsNyArMzk3LDcgQEAgYm9vbCBRV2luZG93 c09wZW5HTFRlc3Rlcjo6dGVzdERlc2t0b3BHTCgpCisgCisgICAgIC8vIFRlc3QgIzE6IExvYWQg b3BlbmdsMzIuZGxsIGFuZCB0cnkgdG8gcmVzb2x2ZSBhbiBPcGVuR0wgMiBmdW5jdGlvbi4KKyAg ICAgLy8gVGhpcyB3aWxsIHR5cGljYWxseSBmYWlsIG9uIHN5c3RlbXMgdGhhdCBkbyBub3QgaGF2 ZSBhIHJlYWwgT3BlbkdMIGRyaXZlci4KKy0gICAgbGliID0gTG9hZExpYnJhcnlBKCJvcGVuZ2wz Mi5kbGwiKTsKKysgICAgbGliID0gUVN5c3RlbUxpYnJhcnk6OmxvYWQoTCJvcGVuZ2wzMiIpOwor ICAgICBpZiAobGliKSB7CisgICAgICAgICBDcmVhdGVDb250ZXh0ID0gcmVpbnRlcnByZXRfY2Fz dDxDcmVhdGVDb250ZXh0VHlwZT4oCisgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxRRnVu Y3Rpb25Qb2ludGVyPig6OkdldFByb2NBZGRyZXNzKGxpYiwgIndnbENyZWF0ZUNvbnRleHQiKSkp OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL25hdGl2ZXBh aW50aW5nL3F0ZXNzZWxsYXRvci5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hj Yi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3BwCitpbmRleCAxYWZhMDBjZmM5Li4xMThh ZjZjZTczIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvbmF0 aXZlcGFpbnRpbmcvcXRlc3NlbGxhdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcvcXRlc3NlbGxhdG9yLmNwcAorQEAgLTQxLDYgKzQx LDcgQEAKKyAKKyAjaW5jbHVkZSA8UVJlY3Q+CisgI2luY2x1ZGUgPFFMaXN0PgorKyNpbmNsdWRl IDxRTWFwPgorICNpbmNsdWRlIDxRRGVidWc+CisgCisgI2luY2x1ZGUgPHFtYXRoLmg+CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmNvbm5lY3Rpb24u Y3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmNvbm5lY3Rpb24uY3Bw CitpbmRleCA5ZTJhMzdhNmExLi5lNmUxNzVhMTE4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmNvbm5lY3Rpb24uY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlvbi5jcHAKK0BAIC00ODgsMTIgKzQ4 OCwxMiBAQCB2b2lkIFFYY2JDb25uZWN0aW9uOjpwcmludFhjYkVycm9yKGNvbnN0IGNoYXIgKm1l c3NhZ2UsIHhjYl9nZW5lcmljX2Vycm9yX3QgKmVycgorICAgICB1aW50IGNsYW1wZWRfZXJyb3Jf Y29kZSA9IHFNaW48dWludD4oZXJyb3ItPmVycm9yX2NvZGUsIChzaXplb2YoeGNiX2Vycm9ycykg LyBzaXplb2YoeGNiX2Vycm9yc1swXSkpIC0gMSk7CisgICAgIHVpbnQgY2xhbXBlZF9tYWpvcl9j b2RlID0gcU1pbjx1aW50PihlcnJvci0+bWFqb3JfY29kZSwgKHNpemVvZih4Y2JfcHJvdG9jb2xf cmVxdWVzdF9jb2RlcykgLyBzaXplb2YoeGNiX3Byb3RvY29sX3JlcXVlc3RfY29kZXNbMF0pKSAt IDEpOworIAorLSAgICBxQ1dhcm5pbmcobGNRcGFYY2IsICIlczogJWQgKCVzKSwgc2VxdWVuY2U6 ICVkLCByZXNvdXJjZSBpZDogJWQsIG1ham9yIGNvZGU6ICVkICglcyksIG1pbm9yIGNvZGU6ICVk IiwKKy0gICAgICAgICAgICAgbWVzc2FnZSwKKy0gICAgICAgICAgICAgaW50KGVycm9yLT5lcnJv cl9jb2RlKSwgeGNiX2Vycm9yc1tjbGFtcGVkX2Vycm9yX2NvZGVdLAorLSAgICAgICAgICAgICBp bnQoZXJyb3ItPnNlcXVlbmNlKSwgaW50KGVycm9yLT5yZXNvdXJjZV9pZCksCistICAgICAgICAg ICAgIGludChlcnJvci0+bWFqb3JfY29kZSksIHhjYl9wcm90b2NvbF9yZXF1ZXN0X2NvZGVzW2Ns YW1wZWRfbWFqb3JfY29kZV0sCistICAgICAgICAgICAgIGludChlcnJvci0+bWlub3JfY29kZSkp OworKyAgICBxQ0RlYnVnKGxjUXBhWGNiLCAiJXM6ICVkICglcyksIHNlcXVlbmNlOiAlZCwgcmVz b3VyY2UgaWQ6ICVkLCBtYWpvciBjb2RlOiAlZCAoJXMpLCBtaW5vciBjb2RlOiAlZCIsCisrICAg ICAgICAgICAgbWVzc2FnZSwKKysgICAgICAgICAgICBpbnQoZXJyb3ItPmVycm9yX2NvZGUpLCB4 Y2JfZXJyb3JzW2NsYW1wZWRfZXJyb3JfY29kZV0sCisrICAgICAgICAgICAgaW50KGVycm9yLT5z ZXF1ZW5jZSksIGludChlcnJvci0+cmVzb3VyY2VfaWQpLAorKyAgICAgICAgICAgIGludChlcnJv ci0+bWFqb3JfY29kZSksIHhjYl9wcm90b2NvbF9yZXF1ZXN0X2NvZGVzW2NsYW1wZWRfbWFqb3Jf Y29kZV0sCisrICAgICAgICAgICAgaW50KGVycm9yLT5taW5vcl9jb2RlKSk7CisgfQorIAorIHN0 YXRpYyBRdDo6TW91c2VCdXR0b25zIHRyYW5zbGF0ZU1vdXNlQnV0dG9ucyhpbnQgcykKK0BAIC03 MDIsNiArNzAyLDggQEAgdm9pZCBRWGNiQ29ubmVjdGlvbjo6aGFuZGxlWGNiRXZlbnQoeGNiX2dl bmVyaWNfZXZlbnRfdCAqZXZlbnQpCisgICAgICAgICAgICAgUVhjYlZpcnR1YWxEZXNrdG9wICp2 aXJ0dWFsRGVza3RvcCA9IHZpcnR1YWxEZXNrdG9wRm9yUm9vdFdpbmRvdyhwcm9wZXJ0eU5vdGlm eS0+d2luZG93KTsKKyAgICAgICAgICAgICBpZiAodmlydHVhbERlc2t0b3ApCisgICAgICAgICAg ICAgICAgIHZpcnR1YWxEZXNrdG9wLT51cGRhdGVXb3JrQXJlYSgpOworKyAgICAgICAgfSBlbHNl IGlmIChwcm9wZXJ0eU5vdGlmeS0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpfTkVUX1NVUFBPUlRF RCkpIHsKKysgICAgICAgICAgICBtX3dtU3VwcG9ydC0+dXBkYXRlTmV0V01BdG9tcygpOworICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBIQU5ETEVfUExBVEZPUk1fV0lORE9XX0VWRU5U KHhjYl9wcm9wZXJ0eV9ub3RpZnlfZXZlbnRfdCwgd2luZG93LCBoYW5kbGVQcm9wZXJ0eU5vdGlm eUV2ZW50KTsKKyAgICAgICAgIH0KK0BAIC03NTAsNyArNzUyLDcgQEAgdm9pZCBRWGNiQ29ubmVj dGlvbjo6aGFuZGxlWGNiRXZlbnQoeGNiX2dlbmVyaWNfZXZlbnRfdCAqZXZlbnQpCisgICAgICAg ICAgICAgICAgIGNhc2UgWENCX1hLQl9ORVdfS0VZQk9BUkRfTk9USUZZOiB7CisgICAgICAgICAg ICAgICAgICAgICB4Y2JfeGtiX25ld19rZXlib2FyZF9ub3RpZnlfZXZlbnRfdCAqZXYgPSAmeGti X2V2ZW50LT5uZXdfa2V5Ym9hcmRfbm90aWZ5OworICAgICAgICAgICAgICAgICAgICAgaWYgKGV2 LT5jaGFuZ2VkICYgWENCX1hLQl9OS05fREVUQUlMX0tFWUNPREVTKQorLSAgICAgICAgICAgICAg ICAgICAgICAgIG1fa2V5Ym9hcmQtPnVwZGF0ZUtleW1hcChldik7CisrICAgICAgICAgICAgICAg ICAgICAgICAgbV9rZXlib2FyZC0+dXBkYXRlS2V5bWFwKCk7CisgICAgICAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBkZWZhdWx0Ogor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JpbnRlZ3Jh dGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRp b24uY3BwCitpbmRleCA3Njg2OWNlZDYwLi4wMmQyZWViYjU2IDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmludGVncmF0aW9uLmNwcAorKysrIGIvcXRi YXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmludGVncmF0aW9uLmNwcAorQEAgLTI3 NCw4ICsyNzQsNyBAQCBRUGxhdGZvcm1XaW5kb3cgKlFYY2JJbnRlZ3JhdGlvbjo6Y3JlYXRlRm9y ZWlnbldpbmRvdyhRV2luZG93ICp3aW5kb3csIFdJZCBuYXRpdgorICNpZm5kZWYgUVRfTk9fT1BF TkdMCisgUVBsYXRmb3JtT3BlbkdMQ29udGV4dCAqUVhjYkludGVncmF0aW9uOjpjcmVhdGVQbGF0 Zm9ybU9wZW5HTENvbnRleHQoUU9wZW5HTENvbnRleHQgKmNvbnRleHQpIGNvbnN0CisgeworLSAg ICBRWGNiU2NyZWVuICpzY3JlZW4gPSBzdGF0aWNfY2FzdDxRWGNiU2NyZWVuICo+KGNvbnRleHQt PnNjcmVlbigpLT5oYW5kbGUoKSk7CistICAgIFFYY2JHbEludGVncmF0aW9uICpnbEludGVncmF0 aW9uID0gc2NyZWVuLT5jb25uZWN0aW9uKCktPmdsSW50ZWdyYXRpb24oKTsKKysgICAgUVhjYkds SW50ZWdyYXRpb24gKmdsSW50ZWdyYXRpb24gPSBkZWZhdWx0Q29ubmVjdGlvbigpLT5nbEludGVn cmF0aW9uKCk7CisgICAgIGlmICghZ2xJbnRlZ3JhdGlvbikgeworICAgICAgICAgcVdhcm5pbmco IlFYY2JJbnRlZ3JhdGlvbjogQ2Fubm90IGNyZWF0ZSBwbGF0Zm9ybSBPcGVuR0wgY29udGV4dCwg bmVpdGhlciBHTFggbm9yIEVHTCBhcmUgZW5hYmxlZCIpOworICAgICAgICAgcmV0dXJuIG51bGxw dHI7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtl eWJvYXJkLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2Fy ZC5jcHAKK2luZGV4IGVmZWNkN2UyZDEuLmU4Mjg2MzgxYTIgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuY3BwCisrKysgYi9xdGJhc2Uv c3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuY3BwCitAQCAtMzY1LDE3ICsz NjUsNiBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKHhjYl9tYXBwaW5nX25vdGlm eV9ldmVudF90ICpldmVudCkKKyAgICAgdXBkYXRlS2V5bWFwKCk7CisgfQorIAorLXZvaWQgUVhj YktleWJvYXJkOjp1cGRhdGVLZXltYXAoeGNiX3hrYl9uZXdfa2V5Ym9hcmRfbm90aWZ5X2V2ZW50 X3QgKmV2ZW50KQorLXsKKy0gICAgaWYgKCFldmVudCkKKy0gICAgICAgIHJldHVybjsKKy0KKy0g ICAgaWYgKGV2ZW50LT5kZXZpY2VJRCAhPSBldmVudC0+b2xkRGV2aWNlSUQpCistICAgICAgICBt X2NvbmZpZyA9IGZhbHNlOworLQorLSAgICB1cGRhdGVLZXltYXAoKTsKKy19CistCisgdm9pZCBR WGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCgpCisgeworICAgICBLZXlzeW1Nb2RpZmllck1hcCBr ZXlzeW1Nb2RzOworQEAgLTM4Myw2ICszNzIsOCBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRl S2V5bWFwKCkKKyAgICAgICAgIGtleXN5bU1vZHMgPSBrZXlzeW1zVG9Nb2RpZmllcnMoKTsKKyAg ICAgdXBkYXRlTW9kaWZpZXJzKGtleXN5bU1vZHMpOworIAorKyAgICBtX2NvbmZpZyA9IHRydWU7 CisrCisgICAgIGlmICghbV94a2JDb250ZXh0KSB7CisgICAgICAgICBtX3hrYkNvbnRleHQucmVz ZXQoeGtiX2NvbnRleHRfbmV3KFhLQl9DT05URVhUX05PX0RFRkFVTFRfSU5DTFVERVMpKTsKKyAg ICAgICAgIGlmICghbV94a2JDb250ZXh0KSB7CitAQCAtMzk4LDEzICszODksOCBAQCB2b2lkIFFY Y2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyAgICAgaWYgKGNvbm5lY3Rpb24oKS0+aGFzWEtC KCkpIHsKKyAgICAgICAgIG1feGtiS2V5bWFwLnJlc2V0KHhrYl94MTFfa2V5bWFwX25ld19mcm9t X2RldmljZShtX3hrYkNvbnRleHQuZ2V0KCksIHhjYl9jb25uZWN0aW9uKCksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZV9kZXZp Y2VfaWQsIFhLQl9LRVlNQVBfQ09NUElMRV9OT19GTEFHUykpOworLSAgICAgICAgaWYgKG1feGti S2V5bWFwKSB7CistICAgICAgICAgICAgaWYgKG1fY29uZmlnKQorLSAgICAgICAgICAgICAgICBt X3hrYlN0YXRlLnJlc2V0KHhrYl9zdGF0ZV9uZXcobV94a2JLZXltYXAuZ2V0KCkpKTsKKy0gICAg ICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIG1feGtiU3RhdGUucmVzZXQoeGtiX3gxMV9z dGF0ZV9uZXdfZnJvbV9kZXZpY2UobV94a2JLZXltYXAuZ2V0KCksIHhjYl9jb25uZWN0aW9uKCks IGNvcmVfZGV2aWNlX2lkKSk7CistCistICAgICAgICB9CisrICAgICAgICBpZiAobV94a2JLZXlt YXApCisrICAgICAgICAgICAgbV94a2JTdGF0ZS5yZXNldCh4a2JfeDExX3N0YXRlX25ld19mcm9t X2RldmljZShtX3hrYktleW1hcC5nZXQoKSwgeGNiX2Nvbm5lY3Rpb24oKSwgY29yZV9kZXZpY2Vf aWQpKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIG1feGtiS2V5bWFwLnJlc2V0KGtleW1hcEZy b21Db3JlKGtleXN5bU1vZHMpKTsKKyAgICAgICAgIGlmIChtX3hrYktleW1hcCkKK0BAIC00MjUs OCArNDExLDYgQEAgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCgpCisgICAgIHVwZGF0 ZVhLQk1vZHMoKTsKKyAKKyAgICAgUVhrYkNvbW1vbjo6dmVyaWZ5SGFzTGF0aW5MYXlvdXQobV94 a2JLZXltYXAuZ2V0KCkpOworLQorLSAgICBtX2NvbmZpZyA9IHRydWU7CisgfQorIAorIFFMaXN0 PGludD4gUVhjYktleWJvYXJkOjpwb3NzaWJsZUtleXMoY29uc3QgUUtleUV2ZW50ICpldmVudCkg Y29uc3QKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNi a2V5Ym9hcmQuaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2Fy ZC5oCitpbmRleCBiNjUyYzg1ZmUzLi4wZWUwOGFlZmYyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmgKKysrKyBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5oCitAQCAtNjksNyArNjksNiBAQCBw dWJsaWM6CisgCisgICAgIFF0OjpLZXlib2FyZE1vZGlmaWVycyB0cmFuc2xhdGVNb2RpZmllcnMo aW50IHMpIGNvbnN0OworICAgICB2b2lkIHVwZGF0ZUtleW1hcCh4Y2JfbWFwcGluZ19ub3RpZnlf ZXZlbnRfdCAqZXZlbnQpOworLSAgICB2b2lkIHVwZGF0ZUtleW1hcCh4Y2JfeGtiX25ld19rZXli b2FyZF9ub3RpZnlfZXZlbnRfdCAqZXZlbnQpOworICAgICB2b2lkIHVwZGF0ZUtleW1hcCgpOwor ICAgICBRTGlzdDxpbnQ+IHBvc3NpYmxlS2V5cyhjb25zdCBRS2V5RXZlbnQgKmV2ZW50KSBjb25z dDsKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNi d2luZG93LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cu Y3BwCitpbmRleCBmZmRhN2I2YTU3Li44NjNlOTYxZjRjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAKKysrKyBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuY3BwCitAQCAtNTY0LDExICs1NjQsNiBA QCB2b2lkIFFYY2JXaW5kb3c6OnNldEdlb21ldHJ5KGNvbnN0IFFSZWN0ICZyZWN0KQorIHsKKyAg ICAgUVBsYXRmb3JtV2luZG93OjpzZXRHZW9tZXRyeShyZWN0KTsKKyAKKy0gICAgaWYgKHNob3Vs ZERlZmVyVGFzayhUYXNrOjpTZXRHZW9tZXRyeSkpIHsKKy0gICAgICAgIG1fZGVmZXJyZWRHZW9t ZXRyeSA9IHJlY3Q7CistICAgICAgICByZXR1cm47CistICAgIH0KKy0KKyAgICAgcHJvcGFnYXRl U2l6ZUhpbnRzKCk7CisgCisgICAgIFFYY2JTY3JlZW4gKmN1cnJlbnRTY3JlZW4gPSB4Y2JTY3Jl ZW4oKTsKK0BAIC02OTMsOSArNjg4LDYgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRWaXNpYmxlKGJv b2wgdmlzaWJsZSkKKyAKKyB2b2lkIFFYY2JXaW5kb3c6OnNob3coKQorIHsKKy0gICAgaWYgKHNo b3VsZERlZmVyVGFzayhUYXNrOjpNYXApKQorLSAgICAgICAgcmV0dXJuOworLQorICAgICBpZiAo d2luZG93KCktPmlzVG9wTGV2ZWwoKSkgeworIAorICAgICAgICAgLy8gdXBkYXRlIFdNX05PUk1B TF9ISU5UUworQEAgLTcwNiw3ICs2OTgsNyBAQCB2b2lkIFFYY2JXaW5kb3c6OnNob3coKQorICAg ICAgICAgaWYgKGlzVHJhbnNpZW50KHdpbmRvdygpKSkgeworICAgICAgICAgICAgIGNvbnN0IFFX aW5kb3cgKnRwID0gd2luZG93KCktPnRyYW5zaWVudFBhcmVudCgpOworICAgICAgICAgICAgIGlm ICh0cCAmJiB0cC0+aGFuZGxlKCkpCistICAgICAgICAgICAgICAgIHRyYW5zaWVudFhjYlBhcmVu dCA9IHN0YXRpY19jYXN0PGNvbnN0IFFYY2JXaW5kb3cgKj4odHAtPmhhbmRsZSgpKS0+d2luSWQo KTsKKysgICAgICAgICAgICAgICAgdHJhbnNpZW50WGNiUGFyZW50ID0gdHAtPmhhbmRsZSgpLT53 aW5JZCgpOworICAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gY2xpZW50IGxlYWRlciBpZiB0aGVy ZSBpcyBubyB0cmFuc2llbnQgcGFyZW50LCBlbHNlIG1vZGFsIGRpYWxvZ3MgY2FuCisgICAgICAg ICAgICAgLy8gYmUgaGlkZGVuIGJ5IHRoZWlyIHBhcmVudHMuCisgICAgICAgICAgICAgaWYgKCF0 cmFuc2llbnRYY2JQYXJlbnQpCitAQCAtNzQ2LDEwICs3MzgsNiBAQCB2b2lkIFFYY2JXaW5kb3c6 OnNob3coKQorIAorIHZvaWQgUVhjYldpbmRvdzo6aGlkZSgpCisgeworLSAgICBpZiAoc2hvdWxk RGVmZXJUYXNrKFRhc2s6OlVubWFwKSkKKy0gICAgICAgIHJldHVybjsKKy0KKy0gICAgbV93bVN0 YXRlVmFsaWQgPSBmYWxzZTsKKyAgICAgeGNiX3VubWFwX3dpbmRvdyh4Y2JfY29ubmVjdGlvbigp LCBtX3dpbmRvdyk7CisgCisgICAgIC8vIHNlbmQgc3ludGhldGljIFVubWFwTm90aWZ5IGV2ZW50 IGFjY29yZGluZyB0byBpY2NjbSA0LjEuNAorQEAgLTkwOSw5ICs4OTcsNiBAQCBRWGNiV2luZG93 OjpOZXRXbVN0YXRlcyBRWGNiV2luZG93OjpuZXRXbVN0YXRlcygpCisgCisgdm9pZCBRWGNiV2lu ZG93OjpzZXRXaW5kb3dGbGFncyhRdDo6V2luZG93RmxhZ3MgZmxhZ3MpCisgeworLSAgICBpZiAo c2hvdWxkRGVmZXJUYXNrKFRhc2s6OlNldFdpbmRvd0ZsYWdzKSkKKy0gICAgICAgIHJldHVybjsK Ky0KKyAgICAgUXQ6OldpbmRvd1R5cGUgdHlwZSA9IHN0YXRpY19jYXN0PFF0OjpXaW5kb3dUeXBl PihpbnQoZmxhZ3MgJiBRdDo6V2luZG93VHlwZV9NYXNrKSk7CisgCisgICAgIGlmICh0eXBlID09 IFF0OjpUb29sVGlwKQorQEAgLTk0MSw4ICs5MjYsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldFdp bmRvd0ZsYWdzKFF0OjpXaW5kb3dGbGFncyBmbGFncykKKyAKKyAgICAgc2V0VHJhbnNwYXJlbnRG b3JNb3VzZUV2ZW50cyhmbGFncyAmIFF0OjpXaW5kb3dUcmFuc3BhcmVudEZvcklucHV0KTsKKyAg ICAgdXBkYXRlRG9lc05vdEFjY2VwdEZvY3VzKGZsYWdzICYgUXQ6OldpbmRvd0RvZXNOb3RBY2Nl cHRGb2N1cyk7CistCistICAgIG1faXNXbU1hbmFnZWRXaW5kb3cgPSAhKGZsYWdzICYgUXQ6Olgx MUJ5cGFzc1dpbmRvd01hbmFnZXJIaW50KTsKKyB9CisgCisgdm9pZCBRWGNiV2luZG93OjpzZXRN b3RpZldtSGludHMoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKQorQEAgLTExNDIsOSArMTEyNSw2IEBA IHZvaWQgUVhjYldpbmRvdzo6c2V0V2luZG93U3RhdGUoUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZSkK KyAgICAgaWYgKHN0YXRlID09IG1fd2luZG93U3RhdGUpCisgICAgICAgICByZXR1cm47CisgCist ICAgIGlmIChzaG91bGREZWZlclRhc2soVGFzazo6U2V0V2luZG93U3RhdGUpKQorLSAgICAgICAg cmV0dXJuOworLQorICAgICAvLyB1bnNldCBvbGQgc3RhdGUKKyAgICAgaWYgKG1fd2luZG93U3Rh dGUgJiBRdDo6V2luZG93TWluaW1pemVkKQorICAgICAgICAgeGNiX21hcF93aW5kb3coeGNiX2Nv bm5lY3Rpb24oKSwgbV93aW5kb3cpOworQEAgLTEzNTAsNiArMTMzMCwxMiBAQCB2b2lkIFFYY2JX aW5kb3c6OnNldFdpbmRvd0ljb24oY29uc3QgUUljb24gJmljb24pCisgICAgIH0KKyAKKyAgICAg aWYgKCFpY29uX2RhdGEuaXNFbXB0eSgpKSB7CisrICAgICAgICAvLyBJZ25vcmUgaWNvbiBleGNl ZWRpbmcgbWF4aW11bSB4Y2IgcmVxdWVzdCBsZW5ndGgKKysgICAgICAgIGlmIChpY29uX2RhdGEu c2l6ZSgpID4geGNiX2dldF9tYXhpbXVtX3JlcXVlc3RfbGVuZ3RoKHhjYl9jb25uZWN0aW9uKCkp KSB7CisrICAgICAgICAgICAgcVdhcm5pbmcoIklnbm9yaW5nIHdpbmRvdyBpY29uOiBTaXplICVs bHUgZXhjZWVkcyBtYXhpbXVtIHhjYiByZXF1ZXN0IGxlbmd0aCAldS4iLAorKyAgICAgICAgICAg ICAgICAgICAgIGljb25fZGF0YS5zaXplKCksIHhjYl9nZXRfbWF4aW11bV9yZXF1ZXN0X2xlbmd0 aCh4Y2JfY29ubmVjdGlvbigpKSk7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQor ICAgICAgICAgeGNiX2NoYW5nZV9wcm9wZXJ0eSh4Y2JfY29ubmVjdGlvbigpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBYQ0JfUFJPUF9NT0RFX1JFUExBQ0UsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1fd2luZG93LAorQEAgLTE2MzksNyArMTYyNSw3IEBAIHZvaWQgUVhj YldpbmRvdzo6c2V0V21XaW5kb3dUeXBlKFFYY2JXaW5kb3dGdW5jdGlvbnM6OldtV2luZG93VHlw ZXMgdHlwZXMsIFF0OjpXCisgICAgICAgICBicmVhazsKKyAgICAgfQorIAorLSAgICBpZiAoKGZs YWdzICYgUXQ6OkZyYW1lbGVzc1dpbmRvd0hpbnQpICYmICEodHlwZSAmIFFYY2JXaW5kb3dGdW5j dGlvbnM6OktkZU92ZXJyaWRlKSkgeworKyAgICBpZiAoKGZsYWdzICYgUXQ6OkZyYW1lbGVzc1dp bmRvd0hpbnQpICYmICEodHlwZXMgJiBRWGNiV2luZG93RnVuY3Rpb25zOjpLZGVPdmVycmlkZSkp IHsKKyAgICAgICAgIC8vIG92ZXJyaWRlIG5ldHdtIHR5cGUgLSBxdWljayBhbmQgZWFzeSBmb3Ig S0RFIG5vYm9yZGVyCisgICAgICAgICBhdG9tcy5hcHBlbmQoYXRvbShRWGNiQXRvbTo6X0tERV9O RVRfV01fV0lORE9XX1RZUEVfT1ZFUlJJREUpKTsKKyAgICAgfQorQEAgLTE4OTQsMTAgKzE4ODAs NiBAQCB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZVVubWFwTm90aWZ5RXZlbnQoY29uc3QgeGNiX3Vu bWFwX25vdGlmeV9ldmVudF90ICpldmVudCkKKyAgICAgaWYgKGV2ZW50LT53aW5kb3cgPT0gbV93 aW5kb3cpIHsKKyAgICAgICAgIG1fbWFwcGVkID0gZmFsc2U7CisgICAgICAgICBRV2luZG93U3lz dGVtSW50ZXJmYWNlOjpoYW5kbGVFeHBvc2VFdmVudCh3aW5kb3coKSwgUVJlZ2lvbigpKTsKKy0g ICAgICAgIGlmICghbV9pc1dtTWFuYWdlZFdpbmRvdyB8fCBwYXJlbnQoKSkgeworLSAgICAgICAg ICAgIG1fd21TdGF0ZVZhbGlkID0gdHJ1ZTsKKy0gICAgICAgICAgICBoYW5kbGVEZWZlcnJlZFRh c2tzKCk7CistICAgICAgICB9CisgICAgIH0KKyB9CisgCitAQCAtMjIxMiw5OCArMjE5NCwzMCBA QCB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZUxlYXZlTm90aWZ5RXZlbnQoY29uc3QgeGNiX2xlYXZl X25vdGlmeV9ldmVudF90ICpldmVudCkKKyAgICAgaGFuZGxlTGVhdmVOb3RpZnlFdmVudChldmVu dC0+cm9vdF94LCBldmVudC0+cm9vdF95LCBldmVudC0+bW9kZSwgZXZlbnQtPmRldGFpbCwgZXZl bnQtPnRpbWUpOworIH0KKyAKKy1ib29sIFFYY2JXaW5kb3c6OnNob3VsZERlZmVyVGFzayhUYXNr IHRhc2spCisteworLSAgICBpZiAobV93bVN0YXRlVmFsaWQpCistICAgICAgICByZXR1cm4gZmFs c2U7CistCistICAgIG1fZGVmZXJyZWRUYXNrcy5hcHBlbmQodGFzayk7CistICAgIHJldHVybiB0 cnVlOworLX0KKy0KKy12b2lkIFFYY2JXaW5kb3c6OmhhbmRsZURlZmVycmVkVGFza3MoKQorLXsK Ky0gICAgUV9BU1NFUlQobV93bVN0YXRlVmFsaWQgPT0gdHJ1ZSk7CistICAgIGlmIChtX2RlZmVy cmVkVGFza3MuaXNFbXB0eSgpKQorLSAgICAgICAgcmV0dXJuOworLQorLSAgICBib29sIG1hcCA9 IGZhbHNlOworLSAgICBib29sIHVubWFwID0gZmFsc2U7CistCistICAgIFFWZWN0b3I8VGFzaz4g dGFza3M7CistICAgIGZvciAoYXV0byB0YXNrSXQgPSBtX2RlZmVycmVkVGFza3MucmJlZ2luKCk7 IHRhc2tJdCAhPSBtX2RlZmVycmVkVGFza3MucmVuZCgpOyArK3Rhc2tJdCkgeworLSAgICAgICAg aWYgKCF0YXNrcy5jb250YWlucygqdGFza0l0KSkKKy0gICAgICAgICAgICB0YXNrcy5wcmVwZW5k KCp0YXNrSXQpOworLSAgICB9CistCistICAgIGZvciAoVGFzayB0YXNrIDogdGFza3MpIHsKKy0g ICAgICAgIHN3aXRjaCAodGFzaykgeworLSAgICAgICAgY2FzZSBUYXNrOjpNYXA6CistICAgICAg ICAgICAgbWFwID0gdHJ1ZTsKKy0gICAgICAgICAgICB1bm1hcCA9IGZhbHNlOworLSAgICAgICAg ICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBUYXNrOjpVbm1hcDoKKy0gICAgICAgICAgICB1bm1h cCA9IHRydWU7CistICAgICAgICAgICAgbWFwID0gZmFsc2U7CistICAgICAgICAgICAgYnJlYWs7 CistICAgICAgICBjYXNlIFRhc2s6OlNldEdlb21ldHJ5OgorLSAgICAgICAgICAgIHNldEdlb21l dHJ5KG1fZGVmZXJyZWRHZW9tZXRyeSk7CistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICBj YXNlIFRhc2s6OlNldFdpbmRvd0ZsYWdzOgorLSAgICAgICAgICAgIHNldFdpbmRvd0ZsYWdzKHdp bmRvdygpLT5mbGFncygpKTsKKy0gICAgICAgICAgICBicmVhazsKKy0gICAgICAgIGNhc2UgVGFz azo6U2V0V2luZG93U3RhdGU6CistICAgICAgICAgICAgc2V0V2luZG93U3RhdGUod2luZG93KCkt PndpbmRvd1N0YXRlKCkpOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgfQorLSAgICB9 CistICAgIG1fZGVmZXJyZWRUYXNrcy5jbGVhcigpOworLQorLSAgICBpZiAobWFwKSB7CistICAg ICAgICBRX0FTU0VSVCh1bm1hcCA9PSBmYWxzZSk7CistICAgICAgICBzaG93KCk7CistICAgIH0K Ky0gICAgaWYgKHVubWFwKSB7CistICAgICAgICBRX0FTU0VSVChtYXAgPT0gZmFsc2UpOworLSAg ICAgICAgaGlkZSgpOworLSAgICB9CistfQorLQorIHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlUHJv cGVydHlOb3RpZnlFdmVudChjb25zdCB4Y2JfcHJvcGVydHlfbm90aWZ5X2V2ZW50X3QgKmV2ZW50 KQorIHsKKyAgICAgY29ubmVjdGlvbigpLT5zZXRUaW1lKGV2ZW50LT50aW1lKTsKKyAKKy0gICAg Y29uc3QgYm9vbCB3bVN0YXRlQ2hhbmdlZCA9IGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206 OldNX1NUQVRFKTsKKy0gICAgY29uc3QgYm9vbCBuZXRXbVN0YXRlQ2hhbmdlZCA9IGV2ZW50LT5h dG9tID09IGF0b20oUVhjYkF0b206Ol9ORVRfV01fU1RBVEUpOworLSAgICBpZiAobmV0V21TdGF0 ZUNoYW5nZWQgfHwgd21TdGF0ZUNoYW5nZWQpIHsKKy0gICAgICAgIGlmICh3bVN0YXRlQ2hhbmdl ZCAmJiAhbV93bVN0YXRlVmFsaWQgJiYgbV9pc1dtTWFuYWdlZFdpbmRvdykgeworLSAgICAgICAg ICAgIC8vIElDQ0NNIDQuMS40CistICAgICAgICAgICAgLy8gQ2xpZW50cyB0aGF0IHdhbnQgdG8g cmUtdXNlIGEgY2xpZW50IHdpbmRvdyAoZS5nLiBieSBtYXBwaW5nIGl0IGFnYWluKQorLSAgICAg ICAgICAgIC8vIGFmdGVyIHdpdGhkcmF3aW5nIGl0IG11c3Qgd2FpdCBmb3IgdGhlIHdpdGhkcmF3 YWwgdG8gYmUgY29tcGxldGUgYmVmb3JlCistICAgICAgICAgICAgLy8gcHJvY2VlZGluZy4gVGhl IHByZWZlcnJlZCBtZXRob2QgZm9yIGRvaW5nIHRoaXMgaXMgZm9yIGNsaWVudHMgdG8gd2FpdCBm b3IKKy0gICAgICAgICAgICAvLyBhIHdpbmRvdyBtYW5hZ2VyIHRvIHVwZGF0ZSBvciByZW1vdmUg dGhlIFdNX1NUQVRFIHByb3BlcnR5LgorLSAgICAgICAgICAgIG1fd21TdGF0ZVZhbGlkID0gdHJ1 ZTsKKy0gICAgICAgICAgICBoYW5kbGVEZWZlcnJlZFRhc2tzKCk7CistICAgICAgICB9CistICAg ICAgICBpZiAoZXZlbnQtPnN0YXRlID09IFhDQl9QUk9QRVJUWV9ERUxFVEUpCisrICAgIGNvbnN0 IGJvb2wgcHJvcGVydHlEZWxldGVkID0gZXZlbnQtPnN0YXRlID09IFhDQl9QUk9QRVJUWV9ERUxF VEU7CisrCisrICAgIGlmIChldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpfTkVUX1dNX1NU QVRFKSB8fCBldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSkpIHsKKysgICAg ICAgIGlmIChwcm9wZXJ0eURlbGV0ZWQpCisgICAgICAgICAgICAgcmV0dXJuOworIAorLSAgICAg ICAgaWYgKHdtU3RhdGVDaGFuZ2VkKSB7CisrICAgICAgICBRdDo6V2luZG93U3RhdGVzIG5ld1N0 YXRlID0gUXQ6OldpbmRvd05vU3RhdGU7CisrCisrICAgICAgICBpZiAoZXZlbnQtPmF0b20gPT0g YXRvbShRWGNiQXRvbTo6V01fU1RBVEUpKSB7IC8vIFdNX1NUQVRFOiBRdWljayBjaGVjayBmb3Ig J01pbmltaXplJy4KKyAgICAgICAgICAgICBhdXRvIHJlcGx5ID0gUV9YQ0JfUkVQTFkoeGNiX2dl dF9wcm9wZXJ0eSwgeGNiX2Nvbm5lY3Rpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMCwgbV93aW5kb3csIGF0b20oUVhjYkF0b206OldNX1NUQVRFKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWENCX0FUT01fQU5ZLCAwLCAxMDI0KTsK KyAgICAgICAgICAgICBpZiAocmVwbHkgJiYgcmVwbHktPmZvcm1hdCA9PSAzMiAmJiByZXBseS0+ dHlwZSA9PSBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSkpIHsKKy0gICAgICAgICAgICAgICAgYXV0 byBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgcXVpbnQzMiAqPih4Y2JfZ2V0X3Byb3BlcnR5X3Zh bHVlKHJlcGx5LmdldCgpKSk7CistICAgICAgICAgICAgICAgIGlmIChyZXBseS0+bGVuZ3RoICE9 IDApIHsKKy0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgY2hhbmdlZFRvV2l0aGRyYXdu ID0gZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RBVEVfV0lUSERSQVdOOworLSAgICAgICAgICAg ICAgICAgICAgY29uc3QgYm9vbCBjaGFuZ2VkVG9JY29uaWMgPSBkYXRhWzBdID09IFhDQl9JQ0ND TV9XTV9TVEFURV9JQ09OSUM7CistICAgICAgICAgICAgICAgICAgICBtX21pbmltaXplZCA9IGNo YW5nZWRUb0ljb25pYyB8fCAoY2hhbmdlZFRvV2l0aGRyYXduICYmIG1fbWluaW1pemVkKTsKKy0g ICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBjb25zdCBxdWludDMyICpkYXRhID0g KGNvbnN0IHF1aW50MzIgKil4Y2JfZ2V0X3Byb3BlcnR5X3ZhbHVlKHJlcGx5LmdldCgpKTsKKysg ICAgICAgICAgICAgICAgaWYgKHJlcGx5LT5sZW5ndGggIT0gMCkKKysgICAgICAgICAgICAgICAg ICAgIG1fbWluaW1pemVkID0gKGRhdGFbMF0gPT0gWENCX0lDQ0NNX1dNX1NUQVRFX0lDT05JQwor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGRhdGFbMF0gPT0gWENCX0lD Q0NNX1dNX1NUQVRFX1dJVEhEUkFXTiAmJiBtX21pbmltaXplZCkpOworICAgICAgICAgICAgIH0K KyAgICAgICAgIH0KKyAKKy0gICAgICAgIC8vIF9ORVRfV01fU1RBVEUgaGFuZGxpbmcKKy0gICAg ICAgIFF0OjpXaW5kb3dTdGF0ZXMgbmV3U3RhdGUgPSBRdDo6V2luZG93Tm9TdGF0ZTsKKyAgICAg ICAgIGNvbnN0IE5ldFdtU3RhdGVzIHN0YXRlcyA9IG5ldFdtU3RhdGVzKCk7CisgICAgICAgICAv LyBfTkVUX1dNX1NUQVRFX0hJRERFTiBzaG91bGQgYmUgc2V0IGJ5IHRoZSBXaW5kb3cgTWFuYWdl ciB0byBpbmRpY2F0ZSB0aGF0IGEgd2luZG93IHdvdWxkCisgICAgICAgICAvLyBub3QgYmUgdmlz aWJsZSBvbiB0aGUgc2NyZWVuIGlmIGl0cyBkZXNrdG9wL3ZpZXdwb3J0IHdlcmUgYWN0aXZlIGFu ZCBpdHMgY29vcmRpbmF0ZXMgd2VyZQorQEAgLTIzMjUsNiArMjIzOSw3IEBAIHZvaWQgUVhjYldp bmRvdzo6aGFuZGxlUHJvcGVydHlOb3RpZnlFdmVudChjb25zdCB4Y2JfcHJvcGVydHlfbm90aWZ5 X2V2ZW50X3QgKmV2CisgICAgICAgICAgICAgaWYgKChtX3dpbmRvd1N0YXRlICYgUXQ6OldpbmRv d01pbmltaXplZCkgJiYgY29ubmVjdGlvbigpLT5tb3VzZUdyYWJiZXIoKSA9PSB0aGlzKQorICAg ICAgICAgICAgICAgICBjb25uZWN0aW9uKCktPnNldE1vdXNlR3JhYmJlcihudWxscHRyKTsKKyAg ICAgICAgIH0KKysgICAgICAgIHJldHVybjsKKyAgICAgfSBlbHNlIGlmIChldmVudC0+YXRvbSA9 PSBhdG9tKFFYY2JBdG9tOjpfTkVUX0ZSQU1FX0VYVEVOVFMpKSB7CisgICAgICAgICBtX2RpcnR5 RnJhbWVNYXJnaW5zID0gdHJ1ZTsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaAoraW5kZXggNTVhZjkyNzliMS4uNmY1YzFmNWVkOSAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaAor KysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5oCitAQCAt NzQsMTQgKzc0LDYgQEAgcHVibGljOgorIAorICAgICBRX0RFQ0xBUkVfRkxBR1MoTmV0V21TdGF0 ZXMsIE5ldFdtU3RhdGUpCisgCistICAgIGVudW0gVGFzayB7CistICAgICAgICBNYXAsCistICAg ICAgICBVbm1hcCwKKy0gICAgICAgIFNldEdlb21ldHJ5LAorLSAgICAgICAgU2V0V2luZG93Rmxh Z3MsCistICAgICAgICBTZXRXaW5kb3dTdGF0ZQorLSAgICB9OworLQorICAgICBRWGNiV2luZG93 KFFXaW5kb3cgKndpbmRvdyk7CisgICAgIH5RWGNiV2luZG93KCk7CisgCitAQCAtMTUxLDkgKzE0 Myw2IEBAIHB1YmxpYzoKKyAKKyAgICAgUVhjYldpbmRvdyAqdG9XaW5kb3coKSBvdmVycmlkZTsK KyAKKy0gICAgYm9vbCBzaG91bGREZWZlclRhc2soVGFzayB0YXNrKTsKKy0gICAgdm9pZCBoYW5k bGVEZWZlcnJlZFRhc2tzKCk7CistCisgICAgIHZvaWQgaGFuZGxlTW91c2VFdmVudCh4Y2JfdGlt ZXN0YW1wX3QgdGltZSwgY29uc3QgUVBvaW50ICZsb2NhbCwgY29uc3QgUVBvaW50ICZnbG9iYWws CisgICAgICAgICAgICAgICAgICAgICAgICAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kaWZp ZXJzLCBRRXZlbnQ6OlR5cGUgdHlwZSwgUXQ6Ok1vdXNlRXZlbnRTb3VyY2Ugc291cmNlKTsKKyAK K0BAIC0yOTIsMTEgKzI4MSw2IEBAIHByb3RlY3RlZDoKKyAgICAgaW50IG1fc3dhcEludGVydmFs ID0gLTE7CisgCisgICAgIHFyZWFsIG1fc2l6ZUhpbnRzU2NhbGVGYWN0b3IgPSAxLjA7CistCist ICAgIGJvb2wgbV93bVN0YXRlVmFsaWQgPSB0cnVlOworLSAgICBRVmVjdG9yPFRhc2s+IG1fZGVm ZXJyZWRUYXNrczsKKy0gICAgYm9vbCBtX2lzV21NYW5hZ2VkV2luZG93ID0gdHJ1ZTsKKy0gICAg UVJlY3QgbV9kZWZlcnJlZEdlb21ldHJ5OworIH07CisgCisgY2xhc3MgUVhjYkZvcmVpZ25XaW5k b3cgOiBwdWJsaWMgUVhjYldpbmRvdworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm10aGVtZXMvZ3RrMy9xZ3RrM21lbnUuY3BwCitpbmRleCBkOWQxMTdmYWViLi42NDBiNDlk YWEwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL2d0azMv cWd0azNtZW51LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL2d0 azMvcWd0azNtZW51LmNwcAorQEAgLTg1LDYgKzg1LDcgQEAgUUd0azNNZW51SXRlbTo6UUd0azNN ZW51SXRlbSgpCisgICAgICAgbV9jaGVja2FibGUoZmFsc2UpLAorICAgICAgIG1fY2hlY2tlZChm YWxzZSksCisgICAgICAgbV9lbmFibGVkKHRydWUpLAorKyAgICAgIG1fZXhjbHVzaXZlKGZhbHNl KSwKKyAgICAgICBtX3VuZGVybGluZShmYWxzZSksCisgICAgICAgbV9pbnZhbGlkKHRydWUpLAor ICAgICAgIG1fbWVudShudWxscHRyKSwKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFs b2cuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0 YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcAoraW5kZXggMDA0OGJiYzFlNi4uMzk2 ZTdmNmQxYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94 ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZy5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNr dG9wcG9ydGFsZmlsZWRpYWxvZy5jcHAKK0BAIC0xMDIsMTUgKzEwMiwxMiBAQCBjb25zdCBRREJ1 c0FyZ3VtZW50ICZvcGVyYXRvciA+Pihjb25zdCBRREJ1c0FyZ3VtZW50ICZhcmcsIFFYZGdEZXNr dG9wUG9ydGFsRmlsZQorIGNsYXNzIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUK KyB7CisgcHVibGljOgorLSAgICBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlKFFQ bGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cpCisrICAgIFFYZGdEZXNr dG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUoUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0 aXZlRmlsZURpYWxvZywgdWludCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pCisgICAgICAgICA6 IG5hdGl2ZUZpbGVEaWFsb2cobmF0aXZlRmlsZURpYWxvZykKKysgICAgICAgICwgZmlsZUNob29z ZXJQb3J0YWxWZXJzaW9uKGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikKKyAgICAgeyB9CisgCist ICAgIFdJZCB3aW5JZCA9IDA7CistICAgIGJvb2wgZGlyZWN0b3J5TW9kZSA9IGZhbHNlOworLSAg ICBib29sIG1vZGFsID0gZmFsc2U7CistICAgIGJvb2wgbXVsdGlwbGVGaWxlcyA9IGZhbHNlOwor LSAgICBib29sIHNhdmVGaWxlID0gZmFsc2U7CisrICAgIFFFdmVudExvb3AgbG9vcDsKKyAgICAg UVN0cmluZyBhY2NlcHRMYWJlbDsKKyAgICAgUVN0cmluZyBkaXJlY3Rvcnk7CisgICAgIFFTdHJp bmcgdGl0bGU7CitAQCAtMTIxLDE5ICsxMTgsMjcgQEAgcHVibGljOgorICAgICBRU3RyaW5nIHNl bGVjdGVkTWltZVR5cGVGaWx0ZXI7CisgICAgIFFTdHJpbmcgc2VsZWN0ZWROYW1lRmlsdGVyOwor ICAgICBRU3RyaW5nTGlzdCBzZWxlY3RlZEZpbGVzOworLSAgICBRUGxhdGZvcm1GaWxlRGlhbG9n SGVscGVyICpuYXRpdmVGaWxlRGlhbG9nID0gbnVsbHB0cjsKKysgICAgc3RkOjp1bmlxdWVfcHRy PFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXI+IG5hdGl2ZUZpbGVEaWFsb2c7CisrICAgIHVpbnQg ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uID0gMDsKKysgICAgYm9vbCBmYWlsZWRUb09wZW4gPSBm YWxzZTsKKysgICAgYm9vbCBkaXJlY3RvcnlNb2RlID0gZmFsc2U7CisrICAgIGJvb2wgbXVsdGlw bGVGaWxlcyA9IGZhbHNlOworKyAgICBib29sIHNhdmVGaWxlID0gZmFsc2U7CisgfTsKKyAKKy1R WGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OlFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhR UGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nKQorK1FYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZzo6UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKFFQbGF0Zm9ybUZp bGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2csIHVpbnQgZmlsZUNob29zZXJQb3J0YWxW ZXJzaW9uKQorICAgICA6IFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIoKQorLSAgICAsIGRfcHRy KG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlKG5hdGl2ZUZpbGVEaWFsb2cp KQorKyAgICAsIGRfcHRyKG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlKG5h dGl2ZUZpbGVEaWFsb2csIGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikpCisgeworICAgICBRX0Qo UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKyAgICAgaWYgKGQtPm5hdGl2ZUZpbGVE aWFsb2cpIHsKKy0gICAgICAgIGNvbm5lY3QoZC0+bmF0aXZlRmlsZURpYWxvZywgU0lHTkFMKGFj Y2VwdCgpKSwgdGhpcywgU0lHTkFMKGFjY2VwdCgpKSk7CistICAgICAgICBjb25uZWN0KGQtPm5h dGl2ZUZpbGVEaWFsb2csIFNJR05BTChyZWplY3QoKSksIHRoaXMsIFNJR05BTChyZWplY3QoKSkp OworKyAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxlRGlhbG9nLmdldCgpLCBTSUdOQUwoYWNj ZXB0KCkpLCB0aGlzLCBTSUdOQUwoYWNjZXB0KCkpKTsKKysgICAgICAgIGNvbm5lY3QoZC0+bmF0 aXZlRmlsZURpYWxvZy5nZXQoKSwgU0lHTkFMKHJlamVjdCgpKSwgdGhpcywgU0lHTkFMKHJlamVj dCgpKSk7CisgICAgIH0KKysKKysgICAgZC0+bG9vcC5jb25uZWN0KHRoaXMsIFNJR05BTChhY2Nl cHQoKSksIFNMT1QocXVpdCgpKSk7CisrICAgIGQtPmxvb3AuY29ubmVjdCh0aGlzLCBTSUdOQUwo cmVqZWN0KCkpLCBTTE9UKHF1aXQoKSkpOworIH0KKyAKKyBRWGRnRGVza3RvcFBvcnRhbEZpbGVE aWFsb2c6On5RWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coKQorQEAgLTE3Nyw3ICsxODIsNyBA QCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6aW5pdGlhbGl6ZURpYWxvZygpCisg ICAgIHNldERpcmVjdG9yeShvcHRpb25zKCktPmluaXRpYWxEaXJlY3RvcnkoKSk7CisgfQorIAor LXZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKCkKKyt2b2lkIFFY ZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6b3BlblBvcnRhbChRdDo6V2luZG93RmxhZ3Mgd2lu ZG93RmxhZ3MsIFF0OjpXaW5kb3dNb2RhbGl0eSB3aW5kb3dNb2RhbGl0eSwgUVdpbmRvdyAqcGFy ZW50KQorIHsKKyAgICAgUV9EKFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisgCitAQCAt MTg1LDEzICsxOTAsMTMgQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Q b3J0YWwoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCIvb3JnL2ZyZWVkZXNrdG9wL3BvcnRhbC9kZXNrdG9w IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFMYXRpbjFTdHJpbmcoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuRmlsZUNob29zZXIi KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZC0+c2F2ZUZpbGUgPyBRTGF0aW4xU3RyaW5nKCJTYXZlRmlsZSIpIDogUUxhdGluMVN0 cmluZygiT3BlbkZpbGUiKSk7CistICAgIFFTdHJpbmcgcGFyZW50V2luZG93SWQgPSBRTGF0aW4x U3RyaW5nKCJ4MTE6IikgKyBRU3RyaW5nOjpudW1iZXIoZC0+d2luSWQsIDE2KTsKKysgICAgUVN0 cmluZyBwYXJlbnRXaW5kb3dJZCA9IFFMYXRpbjFTdHJpbmcoIngxMToiKSArIFFTdHJpbmc6Om51 bWJlcihwYXJlbnQgPyBwYXJlbnQtPndpbklkKCkgOiAwLCAxNik7CisgCisgICAgIFFWYXJpYW50 TWFwIG9wdGlvbnM7CisgICAgIGlmICghZC0+YWNjZXB0TGFiZWwuaXNFbXB0eSgpKQorICAgICAg ICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygiYWNjZXB0X2xhYmVsIiksIGQtPmFjY2Vw dExhYmVsKTsKKyAKKy0gICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygibW9kYWwiKSwg ZC0+bW9kYWwpOworKyAgICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJtb2RhbCIpLCB3 aW5kb3dNb2RhbGl0eSAhPSBRdDo6Tm9uTW9kYWwpOworICAgICBvcHRpb25zLmluc2VydChRTGF0 aW4xU3RyaW5nKCJtdWx0aXBsZSIpLCBkLT5tdWx0aXBsZUZpbGVzKTsKKyAgICAgb3B0aW9ucy5p bnNlcnQoUUxhdGluMVN0cmluZygiZGlyZWN0b3J5IiksIGQtPmRpcmVjdG9yeU1vZGUpOworIAor QEAgLTI5MCwxMCArMjk1LDE4IEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpv cGVuUG9ydGFsKCkKKyAKKyAgICAgUURCdXNQZW5kaW5nQ2FsbCBwZW5kaW5nQ2FsbCA9IFFEQnVz Q29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmFzeW5jQ2FsbChtZXNzYWdlKTsKKyAgICAgUURCdXNQ ZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIgPSBuZXcgUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIo cGVuZGluZ0NhbGwpOworLSAgICBjb25uZWN0KHdhdGNoZXIsICZRREJ1c1BlbmRpbmdDYWxsV2F0 Y2hlcjo6ZmluaXNoZWQsIHRoaXMsIFt0aGlzXSAoUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndh dGNoZXIpIHsKKysgICAgY29ubmVjdCh3YXRjaGVyLCAmUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXI6 OmZpbmlzaGVkLCB0aGlzLCBbPV0gKFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVyKSB7 CisgICAgICAgICBRREJ1c1BlbmRpbmdSZXBseTxRREJ1c09iamVjdFBhdGg+IHJlcGx5ID0gKndh dGNoZXI7CistICAgICAgICBpZiAocmVwbHkuaXNFcnJvcigpKSB7CistICAgICAgICAgICAgUV9F TUlUIHJlamVjdCgpOworKyAgICAgICAgLy8gQW55IGVycm9yIG1lYW5zIHRoZSBkaWFsb2cgaXMg bm90IHNob3duIGFuZCB3ZSBuZWVkIHRvIGZhbGxiYWNrCisrICAgICAgICBkLT5mYWlsZWRUb09w ZW4gPSByZXBseS5pc0Vycm9yKCk7CisrICAgICAgICBpZiAoZC0+ZmFpbGVkVG9PcGVuKSB7Cisr ICAgICAgICAgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cpIHsKKysgICAgICAgICAgICAgICAg ZC0+bmF0aXZlRmlsZURpYWxvZy0+c2hvdyh3aW5kb3dGbGFncywgd2luZG93TW9kYWxpdHksIHBh cmVudCk7CisrICAgICAgICAgICAgICAgIGlmIChkLT5sb29wLmlzUnVubmluZygpKQorKyAgICAg ICAgICAgICAgICAgICAgZC0+bmF0aXZlRmlsZURpYWxvZy0+ZXhlYygpOworKyAgICAgICAgICAg IH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIFFfRU1JVCByZWplY3QoKTsKKysgICAgICAgICAg ICB9CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIFFEQnVzQ29ubmVjdGlvbjo6c2Vz c2lvbkJ1cygpLmNvbm5lY3QobnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlcGx5LnZhbHVlKCkucGF0aCgpLAorQEAgLTMwMiw2ICsz MTUsNyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6b3BlblBvcnRhbCgpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChn b3RSZXNwb25zZSh1aW50LFFWYXJpYW50TWFwKSkpOworICAgICAgICAgfQorKyAgICAgICAgd2F0 Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKyAgICAgfSk7CisgfQorIAorQEAgLTMyNiw3ICszNDAsNyBA QCBRVXJsIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6ZGlyZWN0b3J5KCkgY29uc3QKKyB7 CisgICAgIFFfRChjb25zdCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAorLSAgICBp ZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxl RGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmls ZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpKQorKyAgICBpZiAoZC0+bmF0aXZlRmlsZURp YWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9nKCkpCisgICAgICAgICByZXR1cm4gZC0+bmF0aXZl RmlsZURpYWxvZy0+ZGlyZWN0b3J5KCk7CisgCisgICAgIHJldHVybiBkLT5kaXJlY3Rvcnk7CitA QCAtMzQ4LDcgKzM2Miw3IEBAIFFMaXN0PFFVcmw+IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxv Zzo6c2VsZWN0ZWRGaWxlcygpIGNvbnN0CisgeworICAgICBRX0QoY29uc3QgUVhkZ0Rlc2t0b3BQ b3J0YWxGaWxlRGlhbG9nKTsKKyAKKy0gICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgKG9w dGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeSB8fCBv cHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnlPbmx5 KSkKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgdXNlTmF0aXZlRmlsZURpYWxvZygp KQorICAgICAgICAgcmV0dXJuIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPnNlbGVjdGVkRmlsZXMoKTsK KyAKKyAgICAgUUxpc3Q8UVVybD4gZmlsZXM7CitAQCAtNDAzLDE2ICs0MTcsMTMgQEAgdm9pZCBR WGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OmV4ZWMoKQorIHsKKyAgICAgUV9EKFFYZGdEZXNr dG9wUG9ydGFsRmlsZURpYWxvZyk7CisgCistICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYm IChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3Rvcnkg fHwgb3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5 T25seSkpIHsKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgdXNlTmF0aXZlRmlsZURp YWxvZygpKSB7CisgICAgICAgICBkLT5uYXRpdmVGaWxlRGlhbG9nLT5leGVjKCk7CisgICAgICAg ICByZXR1cm47CisgICAgIH0KKyAKKyAgICAgLy8gSEFDSyB3ZSBoYXZlIHRvIGF2b2lkIHJldHVy bmluZyB1bnRpbCB3ZSBlbWl0IHRoYXQgdGhlIGRpYWxvZyB3YXMgYWNjZXB0ZWQgb3IgcmVqZWN0 ZWQKKy0gICAgUUV2ZW50TG9vcCBsb29wOworLSAgICBsb29wLmNvbm5lY3QodGhpcywgU0lHTkFM KGFjY2VwdCgpKSwgU0xPVChxdWl0KCkpKTsKKy0gICAgbG9vcC5jb25uZWN0KHRoaXMsIFNJR05B TChyZWplY3QoKSksIFNMT1QocXVpdCgpKSk7CistICAgIGxvb3AuZXhlYygpOworKyAgICBkLT5s b29wLmV4ZWMoKTsKKyB9CisgCisgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Omhp ZGUoKQorQEAgLTQyOSwxMyArNDQwLDEwIEBAIGJvb2wgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlh bG9nOjpzaG93KFF0OjpXaW5kb3dGbGFncyB3aW5kb3dGbGFncywgUXQ6OldpbmRvd01vCisgCisg ICAgIGluaXRpYWxpemVEaWFsb2coKTsKKyAKKy0gICAgZC0+bW9kYWwgPSB3aW5kb3dNb2RhbGl0 eSAhPSBRdDo6Tm9uTW9kYWw7CistICAgIGQtPndpbklkID0gcGFyZW50ID8gcGFyZW50LT53aW5J ZCgpIDogMDsKKy0KKy0gICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgKG9wdGlvbnMoKS0+ ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeSB8fCBvcHRpb25zKCkt PmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnlPbmx5KSkKKysgICAg aWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgdXNlTmF0aXZlRmlsZURpYWxvZyhPcGVuRmFsbGJh Y2spKQorICAgICAgICAgcmV0dXJuIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPnNob3cod2luZG93Rmxh Z3MsIHdpbmRvd01vZGFsaXR5LCBwYXJlbnQpOworIAorLSAgICBvcGVuUG9ydGFsKCk7CisrICAg IG9wZW5Qb3J0YWwod2luZG93RmxhZ3MsIHdpbmRvd01vZGFsaXR5LCBwYXJlbnQpOworIAorICAg ICByZXR1cm4gdHJ1ZTsKKyB9CitAQCAtNDY1LDQgKzQ3MywyMSBAQCB2b2lkIFFYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZzo6Z290UmVzcG9uc2UodWludCByZXNwb25zZSwgY29uc3QgUVZhcmlh bnRNYXAgJgorICAgICB9CisgfQorIAorK2Jvb2wgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9n Ojp1c2VOYXRpdmVGaWxlRGlhbG9nKFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6RmFsbGJh Y2tUeXBlIGZhbGxiYWNrVHlwZSkgY29uc3QKKyt7CisrICAgIFFfRChjb25zdCBRWGRnRGVza3Rv cFBvcnRhbEZpbGVEaWFsb2cpOworKworKyAgICBpZiAoZC0+ZmFpbGVkVG9PcGVuICYmIGZhbGxi YWNrVHlwZSAhPSBPcGVuRmFsbGJhY2spCisrICAgICAgICByZXR1cm4gdHJ1ZTsKKysKKysgICAg aWYgKGQtPmZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbiA8IDMpIHsKKysgICAgICAgIGlmIChvcHRp b25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnkpCisrICAg ICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgICAgICBlbHNlIGlmIChvcHRpb25zKCktPmZpbGVN b2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnlPbmx5KQorKyAgICAgICAgICAg IHJldHVybiB0cnVlOworKyAgICB9CisrCisrICAgIHJldHVybiBmYWxzZTsKKyt9CisrCisgUVRf RU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRo ZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZ19wLmggYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVz a3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oCitpbmRleCA0ZjRkZTk2ZWNmLi42NWUyMmE1Y2YyIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bw b3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nX3AuaAorKysrIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxm aWxlZGlhbG9nX3AuaAorQEAgLTUxLDYgKzUxLDExIEBAIGNsYXNzIFFYZGdEZXNrdG9wUG9ydGFs RmlsZURpYWxvZyA6IHB1YmxpYyBRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyCisgICAgIFFfT0JK RUNUCisgICAgIFFfREVDTEFSRV9QUklWQVRFKFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZykK KyBwdWJsaWM6CisrICAgIGVudW0gRmFsbGJhY2tUeXBlIHsKKysgICAgICAgIEdlbmVyaWNGYWxs YmFjaywKKysgICAgICAgIE9wZW5GYWxsYmFjaworKyAgICB9OworKworICAgICBlbnVtIENvbmRp dGlvblR5cGUgOiB1aW50IHsKKyAgICAgICAgIEdsb2JhbFBhdHRlcm4gPSAwLAorICAgICAgICAg TWltZVR5cGUgPSAxCitAQCAtNjksNyArNzQsNyBAQCBwdWJsaWM6CisgICAgIH07CisgICAgIHR5 cGVkZWYgUVZlY3RvcjxGaWx0ZXI+IEZpbHRlckxpc3Q7CisgCistICAgIFFYZGdEZXNrdG9wUG9y dGFsRmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9n ID0gbnVsbHB0cik7CisrICAgIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhRUGxhdGZvcm1G aWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nID0gbnVsbHB0ciwgdWludCBmaWxlQ2hv b3NlclBvcnRhbFZlcnNpb24gPSAwKTsKKyAgICAgflFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxv ZygpOworIAorICAgICBib29sIGRlZmF1bHROYW1lRmlsdGVyRGlzYWJsZXMoKSBjb25zdCBvdmVy cmlkZTsKK0BAIC05Miw3ICs5Nyw4IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAKKyBwcml2YXRlOgor ICAgICB2b2lkIGluaXRpYWxpemVEaWFsb2coKTsKKy0gICAgdm9pZCBvcGVuUG9ydGFsKCk7Cisr ICAgIHZvaWQgb3BlblBvcnRhbChRdDo6V2luZG93RmxhZ3Mgd2luZG93RmxhZ3MsIFF0OjpXaW5k b3dNb2RhbGl0eSB3aW5kb3dNb2RhbGl0eSwgUVdpbmRvdyAqcGFyZW50KTsKKysgICAgYm9vbCB1 c2VOYXRpdmVGaWxlRGlhbG9nKEZhbGxiYWNrVHlwZSBmYWxsYmFja1R5cGUgPSBHZW5lcmljRmFs bGJhY2spIGNvbnN0OworIAorICAgICBRU2NvcGVkUG9pbnRlcjxRWGRnRGVza3RvcFBvcnRhbEZp bGVEaWFsb2dQcml2YXRlPiBkX3B0cjsKKyB9OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsdGhl bWUuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0 YWwvcXhkZ2Rlc2t0b3Bwb3J0YWx0aGVtZS5jcHAKK2luZGV4IGZiMzI0YWZiZDguLmI4MDk1MDMx MjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVz a3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWx0 aGVtZS5jcHAKK0BAIC0xMTEsNiArMTExLDcgQEAgUVhkZ0Rlc2t0b3BQb3J0YWxUaGVtZTo6UVhk Z0Rlc2t0b3BQb3J0YWxUaGVtZSgpCisgICAgICAgICBpZiAocmVwbHkuaXNWYWxpZCgpKSB7Cisg ICAgICAgICAgICAgZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uID0gcmVwbHkudmFsdWUoKS50 b1VJbnQoKTsKKyAgICAgICAgIH0KKysgICAgICAgIHdhdGNoZXItPmRlbGV0ZUxhdGVyKCk7Cisg ICAgIH0pOworIH0KKyAKK0BAIC0xNTIsMTEgKzE1MywxMiBAQCBRUGxhdGZvcm1EaWFsb2dIZWxw ZXIqIFFYZGdEZXNrdG9wUG9ydGFsVGhlbWU6OmNyZWF0ZVBsYXRmb3JtRGlhbG9nSGVscGVyKERp YWxvZworIHsKKyAgICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFsVGhlbWUpOworIAorLSAg ICBpZiAodHlwZSA9PSBGaWxlRGlhbG9nKSB7CisrICAgIGlmICh0eXBlID09IEZpbGVEaWFsb2cg JiYgZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKSB7CisgICAgICAgICAvLyBPbGRlciB2ZXJz aW9ucyBvZiBGaWxlQ2hvb3NlciBwb3J0YWwgZG9uJ3Qgc3VwcG9ydCBvcGVuaW5nIGRpcmVjdG9y aWVzLCB0aGVyZWZvcmUgd2UgZmFsbGJhY2sKKyAgICAgICAgIC8vIHRvIG5hdGl2ZSBmaWxlIGRp YWxvZyBvcGVuZWQgaW5zaWRlIHRoZSBzYW5kYm94IHRvIG9wZW4gYSBkaXJlY3RvcnkuCistICAg ICAgICBpZiAoZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uIDwgMyAmJiBkLT5iYXNlVGhlbWUt PnVzZVBsYXRmb3JtTmF0aXZlRGlhbG9nKHR5cGUpKQorLSAgICAgICAgICAgIHJldHVybiBuZXcg UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKHN0YXRpY19jYXN0PFFQbGF0Zm9ybUZpbGVEaWFs b2dIZWxwZXIqPihkLT5iYXNlVGhlbWUtPmNyZWF0ZVBsYXRmb3JtRGlhbG9nSGVscGVyKHR5cGUp KSk7CisrICAgICAgICBpZiAoZC0+YmFzZVRoZW1lLT51c2VQbGF0Zm9ybU5hdGl2ZURpYWxvZyh0 eXBlKSkKKysgICAgICAgICAgICByZXR1cm4gbmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxv ZyhzdGF0aWNfY2FzdDxRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyKj4oZC0+YmFzZVRoZW1lLT5j cmVhdGVQbGF0Zm9ybURpYWxvZ0hlbHBlcih0eXBlKSksCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9u KTsKKyAKKyAgICAgICAgIHJldHVybiBuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOwor ICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBz L3FjdXBzcHJpbnRlbmdpbmUuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9j dXBzL3FjdXBzcHJpbnRlbmdpbmUuY3BwCitpbmRleCA0M2Q1ZTExOWFkLi4xZjljYmM0NTY1IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJp bnRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMv cWN1cHNwcmludGVuZ2luZS5jcHAKK0BAIC04OSw4ICs4OSwxMCBAQCB2b2lkIFFDdXBzUHJpbnRF bmdpbmU6OnNldFByb3BlcnR5KFByaW50RW5naW5lUHJvcGVydHlLZXkga2V5LCBjb25zdCBRVmFy aWFudCAmdgorICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUFBLX0R1cGxleDogeworICAgICAg ICAgUVByaW50OjpEdXBsZXhNb2RlIG1vZGUgPSBRUHJpbnQ6OkR1cGxleE1vZGUodmFsdWUudG9J bnQoKSk7CistICAgICAgICBpZiAobW9kZSAhPSBkLT5kdXBsZXggJiYgZC0+bV9wcmludERldmlj ZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5zKG1vZGUpKQorKyAgICAgICAgaWYgKGQt Pm1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkRHVwbGV4TW9kZXMoKS5jb250YWlucyhtb2RlKSkgewor ICAgICAgICAgICAgIGQtPmR1cGxleCA9IG1vZGU7CisrICAgICAgICAgICAgZC0+ZHVwbGV4UmVx dWVzdGVkRXhwbGljaXRseSA9IHRydWU7CisrICAgICAgICB9CisgICAgICAgICBicmVhazsKKyAg ICAgfQorICAgICBjYXNlIFBQS19QcmludGVyTmFtZToKK0BAIC0yNzcsOSArMjc5LDEyIEBAIHZv aWQgUUN1cHNQcmludEVuZ2luZVByaXZhdGU6OmNoYW5nZVByaW50ZXIoY29uc3QgUVN0cmluZyAm bmV3UHJpbnRlcikKKyAgICAgbV9wcmludERldmljZS5zd2FwKHByaW50RGV2aWNlKTsKKyAgICAg cHJpbnRlck5hbWUgPSBtX3ByaW50RGV2aWNlLmlkKCk7CisgCistICAgIC8vIENoZWNrIGlmIG5l dyBwcmludGVyIHN1cHBvcnRzIGN1cnJlbnQgc2V0dGluZ3MsIG90aGVyd2lzZSB1cyBkZWZhdWx0 cworLSAgICBpZiAoZHVwbGV4ICE9IFFQcmludDo6RHVwbGV4QXV0byAmJiAhbV9wcmludERldmlj ZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5zKGR1cGxleCkpCisrICAgIC8vIGluIGNh c2UgYSBkdXBsZXggdmFsdWUgd2FzIGV4cGxpY2l0bHkgc2V0LCBjaGVjayBpZiBuZXcgcHJpbnRl ciBzdXBwb3J0cyBjdXJyZW50IHZhbHVlLAorKyAgICAvLyBvdGhlcndpc2UgdXNlIGRldmljZSBk ZWZhdWx0CisrICAgIGlmICghZHVwbGV4UmVxdWVzdGVkRXhwbGljaXRseSB8fCAhbV9wcmludERl dmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5zKGR1cGxleCkpIHsKKyAgICAgICAg IGR1cGxleCA9IG1fcHJpbnREZXZpY2UuZGVmYXVsdER1cGxleE1vZGUoKTsKKysgICAgICAgIGR1 cGxleFJlcXVlc3RlZEV4cGxpY2l0bHkgPSBmYWxzZTsKKysgICAgfQorICAgICBRUHJpbnQ6OkNv bG9yTW9kZSBjb2xvck1vZGUgPSBncmF5c2NhbGUgPyBRUHJpbnQ6OkdyYXlTY2FsZSA6IFFQcmlu dDo6Q29sb3I7CisgICAgIGlmICghbV9wcmludERldmljZS5zdXBwb3J0ZWRDb2xvck1vZGVzKCku Y29udGFpbnMoY29sb3JNb2RlKSkKKyAgICAgICAgIGdyYXlzY2FsZSA9IG1fcHJpbnREZXZpY2Uu ZGVmYXVsdENvbG9yTW9kZSgpID09IFFQcmludDo6R3JheVNjYWxlOworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lX3AuaCBi L3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lX3Au aAoraW5kZXggYzAyMWIwYzY0My4uOGY4MWZlNDc4ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv cGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lX3AuaAorKysrIGIvcXRi YXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmVfcC5oCitA QCAtMTAwLDYgKzEwMCw3IEBAIHByaXZhdGU6CisgICAgIFFTdHJpbmdMaXN0IGN1cHNPcHRpb25z OworICAgICBRU3RyaW5nIGN1cHNUZW1wRmlsZTsKKyAgICAgUVByaW50OjpEdXBsZXhNb2RlIGR1 cGxleDsKKysgICAgYm9vbCBkdXBsZXhSZXF1ZXN0ZWRFeHBsaWNpdGx5ID0gZmFsc2U7CisgfTsK KyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3Nx bGRyaXZlcnMvaWJhc2UvcXNxbF9pYmFzZS5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJp dmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcAoraW5kZXggNjdlNzE1NGZhNi4uNDA4NzYxNTJlNSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL2liYXNlL3FzcWxfaWJh c2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9pYmFzZS9xc3FsX2li YXNlLmNwcAorQEAgLTgxNyw3ICs4MTcsNyBAQCBib29sIFFJQmFzZVJlc3VsdFByaXZhdGU6Ondy aXRlQXJyYXkoaW50IGNvbHVtbiwgY29uc3QgUUxpc3Q8UVZhcmlhbnQ+ICZsaXN0KQorICAgICBi YS5yZXNpemUoaW50KGJ1ZkxlbikpOworIAorICAgICBpZiAobGlzdC5zaXplKCkgPiBhcnJheVNp emUpIHsKKy0gICAgICAgIGVycm9yID0gUUxhdGluMVN0cmluZygiQXJyYXkgc2l6ZSBtaXNzbWF0 Y2g6IHNpemUgb2YgJTEgaXMgJTIsIHNpemUgb2YgcHJvdmlkZWQgbGlzdCBpcyAlMyIpOworKyAg ICAgICAgZXJyb3IgPSBRTGF0aW4xU3RyaW5nKCJBcnJheSBzaXplIG1pc21hdGNoOiBzaXplIG9m ICUxIGlzICUyLCBzaXplIG9mIHByb3ZpZGVkIGxpc3QgaXMgJTMiKTsKKyAgICAgICAgIGVycm9y ID0gZXJyb3IuYXJnKFFMYXRpbjFTdHJpbmcoc3FsbmFtZSkpLmFyZyhhcnJheVNpemUpLmFyZyhs aXN0LnNpemUoKSk7CisgICAgICAgICBxLT5zZXRMYXN0RXJyb3IoUVNxbEVycm9yKGVycm9yLCBR TGF0aW4xU3RyaW5nKCIiKSwgUVNxbEVycm9yOjpTdGF0ZW1lbnRFcnJvcikpOworICAgICAgICAg cmV0dXJuIGZhbHNlOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJz L215c3FsL3FzcWxfbXlzcWwuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvbXlz cWwvcXNxbF9teXNxbC5jcHAKK2luZGV4IDdjYTA1NWVlYTIuLjZiYzlkNDY3NTUgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9teXNxbC9xc3FsX215c3FsLmNwcAor KysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvbXlzcWwvcXNxbF9teXNxbC5jcHAK K0BAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgorICAgICBzdHJ1Y3QgUU15RmllbGQKKyAgICAg eworICAgICAgICAgY2hhciAqb3V0RmllbGQgPSBudWxscHRyOworLSAgICAgICAgTVlTUUxfRklF TEQgKm15RmllbGQgPSBudWxscHRyOworKyAgICAgICAgY29uc3QgTVlTUUxfRklFTEQgKm15Rmll bGQgPSBudWxscHRyOworICAgICAgICAgUU1ldGFUeXBlOjpUeXBlIHR5cGUgPSBRTWV0YVR5cGU6 OlVua25vd25UeXBlOworICAgICAgICAgbXlfYm9vbCBudWxsSW5kaWNhdG9yID0gZmFsc2U7Cisg ICAgICAgICB1bG9uZyBidWZMZW5ndGggPSAwdWw7CitAQCAtMzYxLDcgKzM2MSw3IEBAIHN0YXRp YyBib29sIHFJc0ludGVnZXIoaW50IHQpCisgdm9pZCBRTVlTUUxSZXN1bHRQcml2YXRlOjpiaW5k QmxvYnMoKQorIHsKKyAgICAgaW50IGk7CistICAgIE1ZU1FMX0ZJRUxEICpmaWVsZEluZm87Cisr ICAgIGNvbnN0IE1ZU1FMX0ZJRUxEICpmaWVsZEluZm87CisgICAgIE1ZU1FMX0JJTkQgKmJpbmQ7 CisgCisgICAgIGZvcihpID0gMDsgaSA8IGZpZWxkcy5jb3VudCgpOyArK2kpIHsKK0BAIC0zNzks NyArMzc5LDYgQEAgdm9pZCBRTVlTUUxSZXN1bHRQcml2YXRlOjpiaW5kQmxvYnMoKQorIGJvb2wg UU1ZU1FMUmVzdWx0UHJpdmF0ZTo6YmluZEluVmFsdWVzKCkKKyB7CisgICAgIE1ZU1FMX0JJTkQg KmJpbmQ7CistICAgIGNoYXIgKmZpZWxkOworICAgICBpbnQgaSA9IDA7CisgCisgICAgIGlmICgh bWV0YSkKK0BAIC0zOTIsMzUgKzM5MSwzNCBAQCBib29sIFFNWVNRTFJlc3VsdFByaXZhdGU6OmJp bmRJblZhbHVlcygpCisgICAgIGluQmluZHMgPSBuZXcgTVlTUUxfQklORFtmaWVsZHMuc2l6ZSgp XTsKKyAgICAgbWVtc2V0KGluQmluZHMsIDAsIGZpZWxkcy5zaXplKCkgKiBzaXplb2YoTVlTUUxf QklORCkpOworIAorLSAgICBNWVNRTF9GSUVMRCAqZmllbGRJbmZvOworKyAgICBjb25zdCBNWVNR TF9GSUVMRCAqZmllbGRJbmZvOworIAorICAgICB3aGlsZSgoZmllbGRJbmZvID0gbXlzcWxfZmV0 Y2hfZmllbGQobWV0YSkpKSB7CisrICAgICAgICBiaW5kID0gJmluQmluZHNbaV07CisrCisgICAg ICAgICBRTXlGaWVsZCAmZiA9IGZpZWxkc1tpXTsKKyAgICAgICAgIGYubXlGaWVsZCA9IGZpZWxk SW5mbzsKKy0KKysgICAgICAgIGJpbmQtPmJ1ZmZlcl9sZW5ndGggPSBmLmJ1Zkxlbmd0aCA9IGZp ZWxkSW5mby0+bGVuZ3RoICsgMTsKKysgICAgICAgIGJpbmQtPmJ1ZmZlcl90eXBlID0gZmllbGRJ bmZvLT50eXBlOworICAgICAgICAgZi50eXBlID0gcURlY29kZU1ZU1FMVHlwZShmaWVsZEluZm8t PnR5cGUsIGZpZWxkSW5mby0+ZmxhZ3MpOworICAgICAgICAgaWYgKHFJc0Jsb2IoZmllbGRJbmZv LT50eXBlKSkgeworICAgICAgICAgICAgIC8vIHRoZSBzaXplIG9mIGEgYmxvYi1maWVsZCBpcyBh dmFpbGFibGUgYXMgc29vbiBhcyB3ZSBjYWxsCisgICAgICAgICAgICAgLy8gbXlzcWxfc3RtdF9z dG9yZV9yZXN1bHQoKQorICAgICAgICAgICAgIC8vIGFmdGVyIG15c3FsX3N0bXRfZXhlYygpIGlu IFFNWVNRTFJlc3VsdDo6ZXhlYygpCistICAgICAgICAgICAgZmllbGRJbmZvLT5sZW5ndGggPSAw OworKyAgICAgICAgICAgIGJpbmQtPmJ1ZmZlcl9sZW5ndGggPSBmLmJ1Zkxlbmd0aCA9IDA7Cisg ICAgICAgICAgICAgaGFzQmxvYnMgPSB0cnVlOworICAgICAgICAgfSBlbHNlIGlmIChxSXNJbnRl Z2VyKGYudHlwZSkpIHsKKy0gICAgICAgICAgICBmaWVsZEluZm8tPmxlbmd0aCA9IDg7CisrICAg ICAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYuYnVmTGVuZ3RoID0gODsKKyAgICAgICAg IH0gZWxzZSB7CistICAgICAgICAgICAgZmllbGRJbmZvLT50eXBlID0gTVlTUUxfVFlQRV9TVFJJ Tkc7CisrICAgICAgICAgICAgYmluZC0+YnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX1NUUklORzsK KyAgICAgICAgIH0KKy0gICAgICAgIGJpbmQgPSAmaW5CaW5kc1tpXTsKKy0gICAgICAgIGZpZWxk ID0gbmV3IGNoYXJbZmllbGRJbmZvLT5sZW5ndGggKyAxXTsKKy0gICAgICAgIG1lbXNldChmaWVs ZCwgMCwgZmllbGRJbmZvLT5sZW5ndGggKyAxKTsKKyAKKy0gICAgICAgIGJpbmQtPmJ1ZmZlcl90 eXBlID0gZmllbGRJbmZvLT50eXBlOworLSAgICAgICAgYmluZC0+YnVmZmVyID0gZmllbGQ7Cist ICAgICAgICBiaW5kLT5idWZmZXJfbGVuZ3RoID0gZi5idWZMZW5ndGggPSBmaWVsZEluZm8tPmxl bmd0aCArIDE7CisgICAgICAgICBiaW5kLT5pc19udWxsID0gJmYubnVsbEluZGljYXRvcjsKKyAg ICAgICAgIGJpbmQtPmxlbmd0aCA9ICZmLmJ1Zkxlbmd0aDsKKyAgICAgICAgIGJpbmQtPmlzX3Vu c2lnbmVkID0gZmllbGRJbmZvLT5mbGFncyAmIFVOU0lHTkVEX0ZMQUcgPyAxIDogMDsKKy0gICAg ICAgIGYub3V0RmllbGQ9ZmllbGQ7CisrCisrICAgICAgICBjaGFyICpmaWVsZCA9IG5ldyBjaGFy W2JpbmQtPmJ1ZmZlcl9sZW5ndGggKyAxXXt9OworKyAgICAgICAgYmluZC0+YnVmZmVyID0gZi5v dXRGaWVsZCA9IGZpZWxkOworIAorICAgICAgICAgKytpOworICAgICB9CitAQCAtMTM2OSwyMCAr MTM2NywyMCBAQCBib29sIFFNWVNRTERyaXZlcjo6b3Blbihjb25zdCBRU3RyaW5nJiBkYiwKKyAg ICAgfQorIAorICNpZiBNWVNRTF9WRVJTSU9OX0lEID49IDUwMDA3CistICAgIGlmIChteXNxbF9n ZXRfY2xpZW50X3ZlcnNpb24oKSA+PSA1MDUwMyAmJiBteXNxbF9nZXRfc2VydmVyX3ZlcnNpb24o ZC0+bXlzcWwpID49IDUwNTAzKSB7CistICAgICAgICAvLyBmb3JjZSB0aGUgY29tbXVuaWNhdGlv biB0byBiZSB1dGY4bWI0IChvbmx5IHV0ZjhtYjQgc3VwcG9ydHMgNC1ieXRlIGNoYXJhY3RlcnMp CistICAgICAgICBteXNxbF9zZXRfY2hhcmFjdGVyX3NldChkLT5teXNxbCwgInV0ZjhtYjQiKTsK KysgICAgLy8gZm9yY2UgdGhlIGNvbW11bmljYXRpb24gdG8gYmUgdXRmOG1iNCAob25seSB1dGY4 bWI0IHN1cHBvcnRzIDQtYnl0ZSBjaGFyYWN0ZXJzKQorKyAgICBpZiAobXlzcWxfc2V0X2NoYXJh Y3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4bWI0IikpIHsKKysgICAgICAgIC8vIHRoaXMgZmFpbGVk LCB0cnkgZm9yY2luZyBpdCB0byB1dGYgKEJNUCBvbmx5KQorKyAgICAgICAgaWYgKG15c3FsX3Nl dF9jaGFyYWN0ZXJfc2V0KGQtPm15c3FsLCAidXRmOCIpKQorKyAgICAgICAgICAgIHFXYXJuaW5n KCkgPDwgIk15U1FMOiBVbmFibGUgdG8gc2V0IHRoZSBjbGllbnQgY2hhcmFjdGVyIHNldCB0byB1 dGY4LiI7CisgI2lmIFFUX0NPTkZJRyh0ZXh0Y29kZWMpCistICAgICAgICBkLT50YyA9IFFUZXh0 Q29kZWM6OmNvZGVjRm9yTmFtZSgiVVRGLTgiKTsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAg ICBkLT50YyA9IGNvZGVjKGQtPm15c3FsKTsKKyAjZW5kaWYKKy0gICAgfSBlbHNlCistICAgIHsK Ky0gICAgICAgIC8vIGZvcmNlIHRoZSBjb21tdW5pY2F0aW9uIHRvIGJlIHV0ZjgKKy0gICAgICAg IG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3FsLCAidXRmOCIpOworKyAgICB9CisgI2lm IFFUX0NPTkZJRyh0ZXh0Y29kZWMpCistICAgICAgICBkLT50YyA9IGNvZGVjKGQtPm15c3FsKTsK KysgICAgZWxzZQorKyAgICAgICAgZC0+dGMgPSBRVGV4dENvZGVjOjpjb2RlY0Zvck5hbWUoIlVU Ri04Iik7CisgI2VuZGlmCistICAgIH0KKyAjZW5kaWYgIC8vIE1ZU1FMX1ZFUlNJT05fSUQgPj0g NTAwMDcKKyAKKyAgICAgZC0+cHJlcGFyZWRRdWVyeXNFbmFibGVkID0gY2hlY2tQcmVwYXJlZFF1 ZXJpZXMoZC0+bXlzcWwpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvaW1hZ2VzL3ByaW50LTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL3ByaW50ZXItMjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBm cm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnQtMjQucG5nCityZW5hbWUg dG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludGVyLTI0LnBuZworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50LTMyLnBu ZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50ZXItMzIucG5n CitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvcHJpbnQtMzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL2ltYWdlcy9wcmludGVyLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0yNC5wbmcgYi9xdGJhc2Uvc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0yNC5wbmcKK3Np bWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dz L2ltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9y dC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0yNC5wbmcKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMzIu cG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1m YWNpbmctMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmlu dHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTMyLnBuZworcmVuYW1lIHRv IHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMzIucG5n CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmll dy1wYWdlLW11bHRpLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3Jl bmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW11bHRp LTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1w YWdlcy1vdmVydmlldy0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9y dC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVsdGktMzIucG5nIGIvcXRiYXNlL3NyYy9wcmlu dHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0zMi5wbmcKK3NpbWls YXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2lt YWdlcy92aWV3LXBhZ2UtbXVsdGktMzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTMyLnBuZworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1vbmUtMjQucG5n IGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1zaW5n bGUtMjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1 cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW9uZS0yNC5wbmcKK3JlbmFtZSB0byBzcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTI0LnBuZworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFn ZS1vbmUtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmll dy1wYWdlcy1zaW5nbGUtMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9t IHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW9uZS0zMi5wbmcKK3Jl bmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xl LTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL2ZpdC1wYWdlLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL3pvb20tZml0LXBhZ2UtMjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBm cm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXBhZ2UtMjQucG5nCityZW5h bWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC1wYWdlLTI0LnBu ZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2Zp dC1wYWdlLTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pv b20tZml0LXBhZ2UtMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNy Yy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXBhZ2UtMzIucG5nCityZW5hbWUgdG8g c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC1wYWdlLTMyLnBuZworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC13aWR0 aC0yNC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZp dC13aWR0aC0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtd2lkdGgtMjQucG5nCityZW5hbWUgdG8gc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC13aWR0aC0yNC5wbmcKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtd2lkdGgt MzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQt d2lkdGgtMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmlu dHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXdpZHRoLTMyLnBuZworcmVuYW1lIHRvIHNyYy9w cmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtd2lkdGgtMzIucG5nCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcGFnZXNldHVwZGlhbG9nX3Vu aXguY3BwIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcGFnZXNldHVwZGlhbG9n X3VuaXguY3BwCitpbmRleCA3OGU1YjhkMWVmLi4yYTI4NTE2NzE5IDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcGFnZXNldHVwZGlhbG9nX3VuaXguY3BwCisr KysgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0dXBkaWFsb2dfdW5p eC5jcHAKK0BAIC01MzIsNiArNTMyLDcgQEAgdm9pZCBRUGFnZVNldHVwV2lkZ2V0Ojp1cGRhdGVX aWRnZXQoKQorIHZvaWQgUVBhZ2VTZXR1cFdpZGdldDo6c2V0dXBQcmludGVyKCkgY29uc3QKKyB7 CisgICAgIG1fcHJpbnRlci0+c2V0UGFnZUxheW91dChtX3BhZ2VMYXlvdXQpOworKyAgICBtX3By aW50ZXItPnNldFBhZ2VPcmllbnRhdGlvbihtX3BhZ2VMYXlvdXQub3JpZW50YXRpb24oKSk7Cisg I2lmIFFUX0NPTkZJRyhjdXBzKQorICAgICBRQ1VQU1N1cHBvcnQ6OlBhZ2VzUGVyU2hlZXQgcGFn ZXNQZXJTaGVldCA9IHF2YXJpYW50X2Nhc3Q8UUNVUFNTdXBwb3J0OjpQYWdlc1BlclNoZWV0Piht X3VpLnBhZ2VzUGVyU2hlZXRDb21iby0+Y3VycmVudERhdGEoKQorICk7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2cucXJjIGIvcXRiYXNl L3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2cucXJjCitpbmRleCA1YTU3OWJh YTU1Li4xMGI4ZTFkMzQxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9xcHJpbnRkaWFsb2cucXJjCisrKysgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL3FwcmludGRpYWxvZy5xcmMKK0BAIC0xLDkgKzEsOSBAQAorIDwhRE9DVFlQRSBSQ0M+PFJD QyB2ZXJzaW9uPSIxLjAiPgorIDxxcmVzb3VyY2UgcHJlZml4PSIvcXQtcHJvamVjdC5vcmcvZGlh bG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nIj4KKy08ZmlsZT5pbWFnZXMvZml0LXBhZ2UtMjQucG5n PC9maWxlPgorLTxmaWxlPmltYWdlcy9maXQtcGFnZS0zMi5wbmc8L2ZpbGU+CistPGZpbGU+aW1h Z2VzL2ZpdC13aWR0aC0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL2ZpdC13aWR0aC0zMi5w bmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pvb20tZml0LXBhZ2UtMjQucG5nPC9maWxlPgorKzxm aWxlPmltYWdlcy96b29tLWZpdC1wYWdlLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvem9v bS1maXQtd2lkdGgtMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy96b29tLWZpdC13aWR0aC0z Mi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL2dvLWZpcnN0LTI0LnBuZzwvZmlsZT4KKyA8Zmls ZT5pbWFnZXMvZ28tZmlyc3QtMzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy9nby1sYXN0LTI0 LnBuZzwvZmlsZT4KK0BAIC0xOCwxNCArMTgsMTQgQEAKKyA8ZmlsZT5pbWFnZXMvbGF5b3V0LXBv cnRyYWl0LTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvcGFnZS1zZXR1cC0yNC5wbmc8L2Zp bGU+CisgPGZpbGU+aW1hZ2VzL3BhZ2Utc2V0dXAtMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdl cy9wcmludC0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ByaW50LTMyLnBuZzwvZmlsZT4K Ky08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW11bHRpLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFn ZXMvdmlldy1wYWdlLW11bHRpLTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdl LW9uZS0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1vbmUtMzIucG5nPC9m aWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMjQucG5nPC9maWxlPgorLTxmaWxl PmltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy9wcmlu dGVyLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvcHJpbnRlci0zMi5wbmc8L2ZpbGU+Cisr PGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMjQucG5nPC9maWxlPgorKzxmaWxlPmlt YWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmll dy1wYWdlcy1zaW5nbGUtMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLXNp bmdsZS0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTI0LnBu ZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMzIucG5nPC9maWxlPgor IDxmaWxlPmltYWdlcy96b29tLWluLTI0LnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvem9vbS1p bi0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3pvb20tb3V0LTI0LnBuZzwvZmlsZT4KK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZ191 bml4LmNwcCBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nX3Vu aXguY3BwCitpbmRleCBjNWI4NDVmNGVjLi41YTViYTFkMGE4IDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5peC5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nX3VuaXguY3BwCitAQCAt NzAyLDEzICs3MDIsMTQgQEAgdm9pZCBRUHJpbnREaWFsb2dQcml2YXRlOjpzZWxlY3RQcmludGVy KGNvbnN0IFFQcmludGVyOjpPdXRwdXRGb3JtYXQgb3V0cHV0Rm9ybWEKKyAgICAgICAgIGVsc2UK KyAgICAgICAgICAgICBvcHRpb25zLmdyYXlzY2FsZS0+c2V0Q2hlY2tlZCh0cnVlKTsKKyAKKy0g ICAgICAgIC8vIGtlZXAgZHVwbGV4IHZhbHVlIGV4cGxpY2l0bHkgc2V0IGJ5IHVzZXIsIGlmIGFu eSwgYW5kIHNlbGVjdGVkIHByaW50ZXIgc3VwcG9ydHMgaXQ7CistICAgICAgICAvLyB1c2UgZGV2 aWNlIGRlZmF1bHQgb3RoZXJ3aXNlCisrICAgICAgICAvLyBkdXBsZXggcHJpb3JpdGllcyB0byBi ZSBhcyBmb2xsb3dzOgorKyAgICAgICAgLy8gMSkgYSB1c2VyLXNlbGVjdGVkIGR1cGxleCB2YWx1 ZSBpbiB0aGUgZGlhbG9nIGhhcyBoaWdoZXN0IHByb3JpdHkKKysgICAgICAgIC8vIDIpIGR1cGxl eCB2YWx1ZSBzZXQgaW4gdGhlIFFQcmludGVyCisgICAgICAgICBRUHJpbnQ6OkR1cGxleE1vZGUg ZHVwbGV4OworICAgICAgICAgaWYgKGV4cGxpY2l0RHVwbGV4TW9kZSAhPSBRUHJpbnQ6OkR1cGxl eEF1dG8gJiYgc3VwcG9ydGVkRHVwbGV4TW9kZS5jb250YWlucyhleHBsaWNpdER1cGxleE1vZGUp KQorICAgICAgICAgICAgIGR1cGxleCA9IGV4cGxpY2l0RHVwbGV4TW9kZTsKKyAgICAgICAgIGVs c2UKKy0gICAgICAgICAgICBkdXBsZXggPSB0b3AtPmQtPm1fY3VycmVudFByaW50RGV2aWNlLmRl ZmF1bHREdXBsZXhNb2RlKCk7CisrICAgICAgICAgICAgZHVwbGV4ID0gc3RhdGljX2Nhc3Q8UVBy aW50OjpEdXBsZXhNb2RlPihwLT5kdXBsZXgoKSk7CisgICAgICAgICBzd2l0Y2ggKGR1cGxleCkg eworICAgICAgICAgY2FzZSBRUHJpbnQ6OkR1cGxleE5vbmU6CisgICAgICAgICAgICAgb3B0aW9u cy5ub0R1cGxleC0+c2V0Q2hlY2tlZCh0cnVlKTsgYnJlYWs7CitAQCAtMTI0MiwxMCArMTI0Mywx MCBAQCB2b2lkIFFVbml4UHJpbnRXaWRnZXRQcml2YXRlOjpfcV9wcmludGVyQ2hhbmdlZChpbnQg aW5kZXgpCisgICAgICAgICAgICAgUVN0cmluZyBmaWxlbmFtZSA9IHdpZGdldC5maWxlbmFtZS0+ dGV4dCgpOworICAgICAgICAgICAgIHdpZGdldC5maWxlbmFtZS0+c2V0VGV4dChmaWxlbmFtZSk7 CisgICAgICAgICAgICAgd2lkZ2V0LmxPdXRwdXQtPnNldEVuYWJsZWQodHJ1ZSk7CistICAgICAg ICAgICAgaWYgKG9wdGlvbnNQYW5lKQorLSAgICAgICAgICAgICAgICBvcHRpb25zUGFuZS0+c2Vs ZWN0UHJpbnRlcihRUHJpbnRlcjo6UGRmRm9ybWF0KTsKKyAgICAgICAgICAgICBwcmludGVyLT5z ZXRPdXRwdXRGb3JtYXQoUVByaW50ZXI6OlBkZkZvcm1hdCk7CisgICAgICAgICAgICAgbV9jdXJy ZW50UHJpbnREZXZpY2UgPSBRUHJpbnREZXZpY2UoKTsKKysgICAgICAgICAgICBpZiAob3B0aW9u c1BhbmUpCisrICAgICAgICAgICAgICAgIG9wdGlvbnNQYW5lLT5zZWxlY3RQcmludGVyKFFQcmlu dGVyOjpQZGZGb3JtYXQpOworICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0KKyAgICAg fQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50cHJl dmlld2RpYWxvZy5jcHAgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludHBy ZXZpZXdkaWFsb2cuY3BwCitpbmRleCAzOTU3NWQ1ZjU3Li4yM2I3ZTg5NTM4IDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nLmNw cAorKysrIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlh bG9nLmNwcAorQEAgLTM1Miw3ICszNTIsNyBAQCB2b2lkIFFQcmludFByZXZpZXdEaWFsb2dQcml2 YXRlOjppbml0KFFQcmludGVyICpfcHJpbnRlcikKKyBzdGF0aWMgaW5saW5lIHZvaWQgcXRfc2V0 dXBBY3Rpb25JY29uKFFBY3Rpb24gKmFjdGlvbiwgUUxhdGluMVN0cmluZyBuYW1lKQorIHsKKyAg ICAgUUxhdGluMVN0cmluZyBpbWFnZVByZWZpeCgiOi9xdC1wcm9qZWN0Lm9yZy9kaWFsb2dzL3Fw cmludHByZXZpZXdkaWFsb2cvaW1hZ2VzLyIpOworLSAgICBRSWNvbiBpY29uOworKyAgICBRSWNv biBpY29uID0gUUljb246OmZyb21UaGVtZShuYW1lKTsKKyAgICAgaWNvbi5hZGRGaWxlKGltYWdl UHJlZml4ICsgbmFtZSArIFFMYXRpbjFTdHJpbmcoIi0yNC5wbmciKSwgUVNpemUoMjQsIDI0KSk7 CisgICAgIGljb24uYWRkRmlsZShpbWFnZVByZWZpeCArIG5hbWUgKyBRTGF0aW4xU3RyaW5nKCIt MzIucG5nIiksIFFTaXplKDMyLCAzMikpOworICAgICBhY3Rpb24tPnNldEljb24oaWNvbik7CitA QCAtMzgzLDggKzM4Myw4IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZhdGU6OnNldHVw QWN0aW9ucygpCisgICAgIGZpdFBhZ2VBY3Rpb24tPnNldE9iamVjdE5hbWUoUUxhdGluMVN0cmlu ZygiZml0UGFnZUFjdGlvbiIpKTsKKyAgICAgZml0V2lkdGhBY3Rpb24tPnNldENoZWNrYWJsZSh0 cnVlKTsKKyAgICAgZml0UGFnZUFjdGlvbi0+c2V0Q2hlY2thYmxlKHRydWUpOworLSAgICBxdF9z ZXR1cEFjdGlvbkljb24oZml0V2lkdGhBY3Rpb24sIFFMYXRpbjFTdHJpbmcoImZpdC13aWR0aCIp KTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKGZpdFBhZ2VBY3Rpb24sIFFMYXRpbjFTdHJpbmco ImZpdC1wYWdlIikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24oZml0V2lkdGhBY3Rpb24sIFFM YXRpbjFTdHJpbmcoInpvb20tZml0LXdpZHRoIikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24o Zml0UGFnZUFjdGlvbiwgUUxhdGluMVN0cmluZygiem9vbS1maXQtcGFnZSIpKTsKKyAgICAgUU9i amVjdDo6Y29ubmVjdChmaXRHcm91cCwgU0lHTkFMKHRyaWdnZXJlZChRQWN0aW9uKikpLCBxLCBT TE9UKF9xX2ZpdChRQWN0aW9uKikpKTsKKyAKKyAgICAgLy8gWm9vbQorQEAgLTQxMCw5ICs0MTAs OSBAQCB2b2lkIFFQcmludFByZXZpZXdEaWFsb2dQcml2YXRlOjpzZXR1cEFjdGlvbnMoKQorICAg ICBzaW5nbGVNb2RlQWN0aW9uID0gbW9kZUdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlv bjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlNob3cgc2luZ2xlIHBhZ2UiKSk7 CisgICAgIGZhY2luZ01vZGVBY3Rpb24gPSBtb2RlR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxp Y2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAiU2hvdyBmYWNpbmcgcGFn ZXMiKSk7CisgICAgIG92ZXJ2aWV3TW9kZUFjdGlvbiA9IG1vZGVHcm91cC0+YWRkQWN0aW9uKFFD b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxvZyIsICJTaG93IG92 ZXJ2aWV3IG9mIGFsbCBwYWdlcyIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKHNpbmdsZU1v ZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZS1vbmUiKSk7CistICAgIHF0X3NldHVw QWN0aW9uSWNvbihmYWNpbmdNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2aWV3LXBhZ2Utc2lk ZWQiKSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihvdmVydmlld01vZGVBY3Rpb24sIFFMYXRp bjFTdHJpbmcoInZpZXctcGFnZS1tdWx0aSIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29uKHNp bmdsZU1vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZXMtc2luZ2xlIikpOworKyAg ICBxdF9zZXR1cEFjdGlvbkljb24oZmFjaW5nTW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmll dy1wYWdlcy1mYWNpbmciKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihvdmVydmlld01vZGVB Y3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZXMtb3ZlcnZpZXciKSk7CisgICAgIHNpbmds ZU1vZGVBY3Rpb24tPnNldE9iamVjdE5hbWUoUUxhdGluMVN0cmluZygic2luZ2xlTW9kZUFjdGlv biIpKTsKKyAgICAgZmFjaW5nTW9kZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShRTGF0aW4xU3RyaW5n KCJmYWNpbmdNb2RlQWN0aW9uIikpOworICAgICBvdmVydmlld01vZGVBY3Rpb24tPnNldE9iamVj dE5hbWUoUUxhdGluMVN0cmluZygib3ZlcnZpZXdNb2RlQWN0aW9uIikpOworQEAgLTQyNiw3ICs0 MjYsNyBAQCB2b2lkIFFQcmludFByZXZpZXdEaWFsb2dQcml2YXRlOjpzZXR1cEFjdGlvbnMoKQor ICAgICBwcmludGVyR3JvdXAgPSBuZXcgUUFjdGlvbkdyb3VwKHEpOworICAgICBwcmludEFjdGlv biA9IHByaW50ZXJHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgi UVByaW50UHJldmlld0RpYWxvZyIsICJQcmludCIpKTsKKyAgICAgcGFnZVNldHVwQWN0aW9uID0g cHJpbnRlckdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJp bnRQcmV2aWV3RGlhbG9nIiwgIlBhZ2Ugc2V0dXAiKSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNv bihwcmludEFjdGlvbiwgUUxhdGluMVN0cmluZygicHJpbnQiKSk7CisrICAgIHF0X3NldHVwQWN0 aW9uSWNvbihwcmludEFjdGlvbiwgUUxhdGluMVN0cmluZygicHJpbnRlciIpKTsKKyAgICAgcXRf c2V0dXBBY3Rpb25JY29uKHBhZ2VTZXR1cEFjdGlvbiwgUUxhdGluMVN0cmluZygicGFnZS1zZXR1 cCIpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChwcmludEFjdGlvbiwgU0lHTkFMKHRyaWdnZXJl ZChib29sKSksIHEsIFNMT1QoX3FfcHJpbnQoKSkpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHBh Z2VTZXR1cEFjdGlvbiwgU0lHTkFMKHRyaWdnZXJlZChib29sKSksIHEsIFNMT1QoX3FfcGFnZVNl dHVwKCkpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5LmNw cCBiL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVlcnkuY3BwCitpbmRleCAzMmM2MTY2Yzc5 Li42MGFmZWYxMGMzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVy eS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVlcnkuY3BwCitAQCAtMSw2 ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqCistKiogQ29weXJpZ2h0IChDKSAy MDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGhlIFF0IENv bXBhbnkgTHRkLgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAq KgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFNxbCBtb2R1bGUgb2YgdGhlIFF0IFRv b2xraXQuCitAQCAtMzc3LDYgKzM3NywxMCBAQCBib29sIFFTcWxRdWVyeTo6ZXhlYyhjb25zdCBR U3RyaW5nJiBxdWVyeSkKKyAgICAgUUVsYXBzZWRUaW1lciB0OworICAgICB0LnN0YXJ0KCk7Cisg I2VuZGlmCisrICAgIGlmICghZHJpdmVyKCkpIHsKKysgICAgICAgIHFXYXJuaW5nKCJRU3FsUXVl cnk6OmV4ZWM6IGNhbGxlZCBiZWZvcmUgZHJpdmVyIGhhcyBiZWVuIHNldCB1cCIpOworKyAgICAg ICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisgICAgIGlmIChkLT5yZWYubG9hZFJlbGF4ZWQoKSAh PSAxKSB7CisgICAgICAgICBib29sIGZvID0gaXNGb3J3YXJkT25seSgpOworICAgICAgICAgKnRo aXMgPSBRU3FsUXVlcnkoZHJpdmVyKCktPmNyZWF0ZVJlc3VsdCgpKTsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcCBiL3F0YmFzZS9z cmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCitpbmRleCA4ZWZiOWM1M2Q0 Li5jZTA2MmY2NmQ3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy90ZXN0bGliL3FhYnN0cmFjdGl0 ZW1tb2RlbHRlc3Rlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVt bW9kZWx0ZXN0ZXIuY3BwCitAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgUUFic3RyYWN0SXRlbU1v ZGVsVGVzdGVyUHJpdmF0ZTo6cGFyZW50KCkKKyAKKyAgICAgLy8gQ29tbW9uIGVycm9yIHRlc3Qg IzIsIG1ha2Ugc3VyZSB0aGF0IGEgc2Vjb25kIGxldmVsIGluZGV4IGhhcyBhIHBhcmVudAorICAg ICAvLyB0aGF0IGlzIHRoZSBmaXJzdCBsZXZlbCBpbmRleC4KKy0gICAgaWYgKG1vZGVsLT5yb3dD b3VudCh0b3BJbmRleCkgPiAwKSB7CisrICAgIGlmIChtb2RlbC0+cm93Q291bnQodG9wSW5kZXgp ID4gMCAmJiBtb2RlbC0+Y29sdW1uQ291bnQodG9wSW5kZXgpID4gMCkgeworICAgICAgICAgUU1v ZGVsSW5kZXggY2hpbGRJbmRleCA9IG1vZGVsLT5pbmRleCgwLCAwLCB0b3BJbmRleCk7CisgICAg ICAgICBNT0RFTFRFU1RFUl9WRVJJRlkoY2hpbGRJbmRleC5pc1ZhbGlkKCkpOworICAgICAgICAg TU9ERUxURVNURVJfQ09NUEFSRShtb2RlbC0+cGFyZW50KGNoaWxkSW5kZXgpLCB0b3BJbmRleCk7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy90ZXN0bGliL3Fhc2NpaWtleS5jcHAgYi9xdGJhc2Uv c3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcAoraW5kZXggOWEzMDhkYTJiYy4uOTM0OThiMjU2ZiAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xYXNjaWlrZXkuY3BwCisrKysgYi9xdGJh c2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcAorQEAgLTQ5OCw2ICs0OTgsMTEgQEAgY2hhciBR VGVzdDo6a2V5VG9Bc2NpaShRdDo6S2V5IGtleSkKKyAgICAgY2FzZSBRdDo6S2V5X0xhdW5jaEUg OiByZXR1cm4gMDsgLy8gPSAweDEwYjAsCisgICAgIGNhc2UgUXQ6OktleV9MYXVuY2hGIDogcmV0 dXJuIDA7IC8vID0gMHgxMGIxLAorIAorKyAgICAvLyBLZXlwYWQgbmF2aWdhdGlvbiBrZXlzCisr ICAgIGNhc2UgUXQ6OktleV9TZWxlY3QgOiByZXR1cm4gMDsgLy8gPSAweDAxMDEwMDAwCisrICAg IGNhc2UgUXQ6OktleV9ZZXMgOiByZXR1cm4gMDsgLy8gPSAweDAxMDEwMDAxCisrICAgIGNhc2Ug UXQ6OktleV9ObyA6IHJldHVybiAwOyAvLyA9IDB4MDEwMTAwMDIKKysKKyAgICAgZGVmYXVsdDog UVRFU1RfQVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7CisgICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy90ZXN0bGliL3F0ZXN0cmVzdWx0LmNwcCBiL3F0YmFzZS9zcmMvdGVzdGxpYi9x dGVzdHJlc3VsdC5jcHAKK2luZGV4IDg4MDI4YWFjNmUuLjJlODk5MzA3NzYgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3Rl c3RsaWIvcXRlc3RyZXN1bHQuY3BwCitAQCAtMjUxLDcgKzI1MSw4IEBAIGJvb2wgUVRlc3RSZXN1 bHQ6OnZlcmlmeShib29sIHN0YXRlbWVudCwgY29uc3QgY2hhciAqc3RhdGVtZW50U3RyLAorIHsK KyAgICAgUVRFU1RfQVNTRVJUKHN0YXRlbWVudFN0cik7CisgCistICAgIGNoYXIgbXNnWzEwMjRd ID0geydcMCd9OworKyAgICBjaGFyIG1zZ1sxMDI0XTsKKysgICAgbXNnWzBdID0gJ1wwJzsKKyAK KyAgICAgaWYgKFFUZXN0TG9nOjp2ZXJib3NlTGV2ZWwoKSA+PSAyKSB7CisgICAgICAgICBxc25w cmludGYobXNnLCAxMDI0LCAiUVZFUklGWSglcykiLCBzdGF0ZW1lbnRTdHIpOworQEAgLTMwOSw3 ICszMTAsOCBAQCBzdGF0aWMgYm9vbCBjb21wYXJlSGVscGVyKGJvb2wgc3VjY2VzcywgY29uc3Qg Y2hhciAqZmFpbHVyZU1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFzVmFs dWVzID0gdHJ1ZSkKKyB7CisgICAgIGNvbnN0IHNpemVfdCBtYXhNc2dMZW4gPSAxMDI0OworLSAg ICBjaGFyIG1zZ1ttYXhNc2dMZW5dID0geydcMCd9OworKyAgICBjaGFyIG1zZ1ttYXhNc2dMZW5d OworKyAgICBtc2dbMF0gPSAnXDAnOworIAorICAgICBRVEVTVF9BU1NFUlQoZXhwZWN0ZWQpOwor ICAgICBRVEVTVF9BU1NFUlQoYWN0dWFsKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdl dHMvZGlhbG9ncy9xY29sb3JkaWFsb2cuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2RpYWxvZ3Mv cWNvbG9yZGlhbG9nLmNwcAoraW5kZXggNDI0NzczMTI3NS4uY2IzMjViZTg1YyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fjb2xvcmRpYWxvZy5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fjb2xvcmRpYWxvZy5jcHAKK0BAIC03OCw3ICs3OCwx MCBAQAorICNpbmNsdWRlICJxd2luZG93LmgiCisgCisgI2luY2x1ZGUgInByaXZhdGUvcWRpYWxv Z19wLmgiCisrI2luY2x1ZGUgInByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaCIKKyAKKysjaW5j bHVkZSA8cXBhL3FwbGF0Zm9ybXNlcnZpY2VzLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1p bnRlZ3JhdGlvbi5oPgorICNpbmNsdWRlIDxhbGdvcml0aG0+CisgCisgUVRfQkVHSU5fTkFNRVNQ QUNFCitAQCAtMTYxMSw2ICsxNjE0LDIwIEBAIHZvaWQgUUNvbG9yRGlhbG9nUHJpdmF0ZTo6X3Ff bmV3U3RhbmRhcmQoaW50IHIsIGludCBjKQorIHZvaWQgUUNvbG9yRGlhbG9nUHJpdmF0ZTo6X3Ff cGlja1NjcmVlbkNvbG9yKCkKKyB7CisgICAgIFFfUShRQ29sb3JEaWFsb2cpOworKworKyAgICBh dXRvICpwbGF0Zm9ybVNlcnZpY2VzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1J bnRlZ3JhdGlvbigpLT5zZXJ2aWNlcygpOworKyAgICBpZiAocGxhdGZvcm1TZXJ2aWNlcy0+aGFz Q2FwYWJpbGl0eShRUGxhdGZvcm1TZXJ2aWNlczo6Q2FwYWJpbGl0eTo6Q29sb3JQaWNraW5nKSkg eworKyAgICAgICAgaWYgKGF1dG8gKmNvbG9yUGlja2VyID0gcGxhdGZvcm1TZXJ2aWNlcy0+Y29s b3JQaWNrZXIocS0+d2luZG93SGFuZGxlKCkpKSB7CisrICAgICAgICAgICAgcS0+Y29ubmVjdChj b2xvclBpY2tlciwgJlFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlcjo6Y29sb3JQaWNrZWQsIHEs CisrICAgICAgICAgICAgICAgICAgICAgICBbcSwgY29sb3JQaWNrZXJdKGNvbnN0IFFDb2xvciAm Y29sb3IpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvclBpY2tlci0+ZGVsZXRl TGF0ZXIoKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBxLT5zZXRDdXJyZW50Q29sb3Io Y29sb3IpOworKyAgICAgICAgICAgICAgICAgICAgICAgfSk7CisrICAgICAgICAgICAgY29sb3JQ aWNrZXItPnBpY2tDb2xvcigpOworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysg ICAgfQorKworICAgICBpZiAoIWNvbG9yUGlja2luZ0V2ZW50RmlsdGVyKQorICAgICAgICAgY29s b3JQaWNraW5nRXZlbnRGaWx0ZXIgPSBuZXcgUUNvbG9yUGlja2luZ0V2ZW50RmlsdGVyKHRoaXMs IHEpOworICAgICBxLT5pbnN0YWxsRXZlbnRGaWx0ZXIoY29sb3JQaWNraW5nRXZlbnRGaWx0ZXIp OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWFic3RyYWN0aXRl bWRlbGVnYXRlLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWFic3RyYWN0aXRl bWRlbGVnYXRlLmNwcAoraW5kZXggZTEyMDgxN2VkYy4uOGVhMzZiNTQyNyAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWFic3RyYWN0aXRlbWRlbGVnYXRlLmNwcAor KysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJhY3RpdGVtZGVsZWdhdGUu Y3BwCitAQCAtNDAwLDEyICs0MDAsNyBAQCBib29sIFFBYnN0cmFjdEl0ZW1EZWxlZ2F0ZTo6aGVs cEV2ZW50KFFIZWxwRXZlbnQgKmV2ZW50LAorICAgICAgICAgY29uc3QgUVN0cmluZyB0b29sdGlw ID0gaW5kZXguaXNWYWxpZCgpID8KKyAgICAgICAgICAgICAgIGQtPnRleHRGb3JSb2xlKFF0OjpU b29sVGlwUm9sZSwgaW5kZXguZGF0YShRdDo6VG9vbFRpcFJvbGUpLCBvcHRpb24ubG9jYWxlLCBw cmVjaXNpb24pIDoKKyAgICAgICAgICAgICAgIFFTdHJpbmcoKTsKKy0gICAgICAgIFFSZWN0IHJl Y3Q7CistICAgICAgICBpZiAoaW5kZXguaXNWYWxpZCgpKSB7CistICAgICAgICAgICAgY29uc3Qg UVJlY3QgciA9IHZpZXctPnZpc3VhbFJlY3QoaW5kZXgpOworLSAgICAgICAgICAgIHJlY3QgPSBR UmVjdCh2aWV3LT5tYXBUb0dsb2JhbChyLnRvcExlZnQoKSksIHIuc2l6ZSgpKTsKKy0gICAgICAg IH0KKy0gICAgICAgIFFUb29sVGlwOjpzaG93VGV4dChoZS0+Z2xvYmFsUG9zKCksIHRvb2x0aXAs IHZpZXcsIHJlY3QpOworKyAgICAgICAgUVRvb2xUaXA6OnNob3dUZXh0KGhlLT5nbG9iYWxQb3Mo KSwgdG9vbHRpcCwgdmlldy0+dmlld3BvcnQoKSwgb3B0aW9uLnJlY3QpOworICAgICAgICAgZXZl bnQtPnNldEFjY2VwdGVkKCF0b29sdGlwLmlzRW1wdHkoKSk7CisgICAgICAgICBicmVhazsKKyAg ICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FsaXN0 dmlldy5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FsaXN0dmlldy5jcHAKK2lu ZGV4IDJiMzQ0NzY2NDIuLmVlYmZhYTAzMGUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdl dHMvaXRlbXZpZXdzL3FsaXN0dmlldy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVt dmlld3MvcWxpc3R2aWV3LmNwcAorQEAgLTMzODYsNiArMzM4Niw3IEBAIHZvaWQgUUljb25Nb2Rl Vmlld0Jhc2U6OnVwZGF0ZUNvbnRlbnRzU2l6ZSgpCisgKi8KKyB2b2lkIFFMaXN0Vmlldzo6Y3Vy cmVudENoYW5nZWQoY29uc3QgUU1vZGVsSW5kZXggJmN1cnJlbnQsIGNvbnN0IFFNb2RlbEluZGV4 ICZwcmV2aW91cykKKyB7CisrICAgIFFBYnN0cmFjdEl0ZW1WaWV3OjpjdXJyZW50Q2hhbmdlZChj dXJyZW50LCBwcmV2aW91cyk7CisgI2lmbmRlZiBRVF9OT19BQ0NFU1NJQklMSVRZCisgICAgIGlm IChRQWNjZXNzaWJsZTo6aXNBY3RpdmUoKSkgeworICAgICAgICAgaWYgKGN1cnJlbnQuaXNWYWxp ZCgpKSB7CitAQCAtMzM5Niw3ICszMzk3LDYgQEAgdm9pZCBRTGlzdFZpZXc6OmN1cnJlbnRDaGFu Z2VkKGNvbnN0IFFNb2RlbEluZGV4ICZjdXJyZW50LCBjb25zdCBRTW9kZWxJbmRleCAmcHIKKyAg ICAgICAgIH0KKyAgICAgfQorICNlbmRpZgorLSAgICBRQWJzdHJhY3RJdGVtVmlldzo6Y3VycmVu dENoYW5nZWQoY3VycmVudCwgcHJldmlvdXMpOworIH0KKyAKKyAvKiEKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcuY3BwIGIvcXRiYXNlL3NyYy93 aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3LmNwcAoraW5kZXggOTM0YWM1ODFiMi4uZjc5YmIy NDI0OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmll dy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy5jcHAK K0BAIC0xMDEzLDYgKzEwMTMsNyBAQCB2b2lkIFFUYWJsZVZpZXdQcml2YXRlOjpkcmF3Q2VsbChR UGFpbnRlciAqcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uVmlld0l0ZW0gJgorIGludCBRVGFi bGVWaWV3UHJpdmF0ZTo6d2lkdGhIaW50Rm9ySW5kZXgoY29uc3QgUU1vZGVsSW5kZXggJmluZGV4 LCBpbnQgaGludCwgY29uc3QgUVN0eWxlT3B0aW9uVmlld0l0ZW0gJm9wdGlvbikgY29uc3QKKyB7 CisgICAgIFFfUShjb25zdCBRVGFibGVWaWV3KTsKKysgICAgY29uc3QgaW50IG9sZEhpbnQgPSBo aW50OworICAgICBRV2lkZ2V0ICplZGl0b3IgPSBlZGl0b3JGb3JJbmRleChpbmRleCkud2lkZ2V0 LmRhdGEoKTsKKyAgICAgaWYgKGVkaXRvciAmJiBwZXJzaXN0ZW50LmNvbnRhaW5zKGVkaXRvcikp IHsKKyAgICAgICAgIGhpbnQgPSBxTWF4KGhpbnQsIGVkaXRvci0+c2l6ZUhpbnQoKS53aWR0aCgp KTsKK0BAIC0xMDIxLDYgKzEwMjIsMTcgQEAgaW50IFFUYWJsZVZpZXdQcml2YXRlOjp3aWR0aEhp bnRGb3JJbmRleChjb25zdCBRTW9kZWxJbmRleCAmaW5kZXgsIGludCBoaW50LCBjb24KKyAgICAg ICAgIGhpbnQgPSBxQm91bmQobWluLCBoaW50LCBtYXgpOworICAgICB9CisgICAgIGhpbnQgPSBx TWF4KGhpbnQsIHEtPml0ZW1EZWxlZ2F0ZShpbmRleCktPnNpemVIaW50KG9wdGlvbiwgaW5kZXgp LndpZHRoKCkpOworKworKyAgICBpZiAoaGFzU3BhbnMoKSkgeworKyAgICAgICAgYXV0byBzcGFu ID0gc3BhbnMuc3BhbkF0KGluZGV4LmNvbHVtbigpLCBpbmRleC5yb3coKSk7CisrICAgICAgICBp ZiAoc3BhbiAmJiBzcGFuLT5tX2xlZnQgPT0gaW5kZXguY29sdW1uKCkgJiYgc3Bhbi0+bV90b3Ag PT0gaW5kZXgucm93KCkpIHsKKysgICAgICAgICAgICAvLyBzcGFucyBhcmUgc2NyZXdlZCB1cCB3 aGVuIHNlY3Rpb25zIGFyZSBtb3ZlZAorKyAgICAgICAgICAgIGNvbnN0IGF1dG8gbGVmdCA9IGxv Z2ljYWxDb2x1bW4oc3Bhbi0+bV9sZWZ0KTsKKysgICAgICAgICAgICBmb3IgKGludCBpID0gMTsg aSA8PSBzcGFuLT53aWR0aCgpOyArK2kpCisrICAgICAgICAgICAgICAgaGludCAtPSBxLT5jb2x1 bW5XaWR0aCh2aXN1YWxDb2x1bW4obGVmdCArIGkpKTsKKysgICAgICAgIH0KKysgICAgICAgIGhp bnQgPSBzdGQ6Om1heChoaW50LCBvbGRIaW50KTsKKysgICAgfQorICAgICByZXR1cm4gaGludDsK KyB9CisgCitAQCAtMTA1Myw2ICsxMDY1LDExIEBAIGludCBRVGFibGVWaWV3UHJpdmF0ZTo6aGVp Z2h0SGludEZvckluZGV4KGNvbnN0IFFNb2RlbEluZGV4ICZpbmRleCwgaW50IGhpbnQsIFFTCisg ICAgICAgICBvcHRpb24ucmVjdC5zZXRIZWlnaHQoaGVpZ2h0KTsKKyAgICAgICAgIG9wdGlvbi5y ZWN0LnNldFgocS0+Y29sdW1uVmlld3BvcnRQb3NpdGlvbihpbmRleC5jb2x1bW4oKSkpOworICAg ICAgICAgb3B0aW9uLnJlY3Quc2V0V2lkdGgocS0+Y29sdW1uV2lkdGgoaW5kZXguY29sdW1uKCkp KTsKKysgICAgICAgIGlmIChoYXNTcGFucygpKSB7CisrICAgICAgICAgICAgYXV0byBzcGFuID0g c3BhbnMuc3BhbkF0KGluZGV4LmNvbHVtbigpLCBpbmRleC5yb3coKSk7CisrICAgICAgICAgICAg aWYgKHNwYW4gJiYgc3Bhbi0+bV9sZWZ0ID09IGluZGV4LmNvbHVtbigpICYmIHNwYW4tPm1fdG9w ID09IGluZGV4LnJvdygpKQorKyAgICAgICAgICAgICAgICBvcHRpb24ucmVjdC5zZXRXaWR0aChz dGQ6Om1heChvcHRpb24ucmVjdC53aWR0aCgpLCB2aXN1YWxTcGFuUmVjdCgqc3Bhbikud2lkdGgo KSkpOworKyAgICAgICAgfQorICAgICAgICAgLy8gMXB4IGxlc3Mgc3BhY2Ugd2hlbiBncmlkIGlz IHNob3duIChzZWUgZHJhd0NlbGwpCisgICAgICAgICBpZiAoc2hvd0dyaWQpCisgICAgICAgICAg ICAgb3B0aW9uLnJlY3Quc2V0V2lkdGgob3B0aW9uLnJlY3Qud2lkdGgoKSAtIDEpOworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcWFjdGlvbi5oIGIvcXRiYXNlL3NyYy93 aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmgKK2luZGV4IDI1OGExZWEwYTAuLjczN2MxZTgyODUgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3FhY3Rpb24uaAorKysrIGIvcXRi YXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmgKK0BAIC04MSw3ICs4MSw3IEBAIGNsYXNz IFFfV0lER0VUU19FWFBPUlQgUUFjdGlvbiA6IHB1YmxpYyBRT2JqZWN0CisgICAgIFFfUFJPUEVS VFkoTWVudVJvbGUgbWVudVJvbGUgUkVBRCBtZW51Um9sZSBXUklURSBzZXRNZW51Um9sZSBOT1RJ RlkgY2hhbmdlZCkKKyAgICAgUV9QUk9QRVJUWShib29sIGljb25WaXNpYmxlSW5NZW51IFJFQUQg aXNJY29uVmlzaWJsZUluTWVudSBXUklURSBzZXRJY29uVmlzaWJsZUluTWVudSBOT1RJRlkgY2hh bmdlZCkKKyAgICAgUV9QUk9QRVJUWShib29sIHNob3J0Y3V0VmlzaWJsZUluQ29udGV4dE1lbnUg UkVBRCBpc1Nob3J0Y3V0VmlzaWJsZUluQ29udGV4dE1lbnUgV1JJVEUgc2V0U2hvcnRjdXRWaXNp YmxlSW5Db250ZXh0TWVudSBOT1RJRlkgY2hhbmdlZCkKKy0gICAgUV9QUk9QRVJUWShQcmlvcml0 eSBwcmlvcml0eSBSRUFEIHByaW9yaXR5IFdSSVRFIHNldFByaW9yaXR5KQorKyAgICBRX1BST1BF UlRZKFByaW9yaXR5IHByaW9yaXR5IFJFQUQgcHJpb3JpdHkgV1JJVEUgc2V0UHJpb3JpdHkgTk9U SUZZIGNoYW5nZWQpCisgCisgcHVibGljOgorICAgICAvLyBub3RlIHRoaXMgaXMgY29waWVkIGlu dG8gcXBsYXRmb3JtbWVudS5oLCB3aGljaCBtdXN0IHN0YXkgaW4gc3luYworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdl dHMva2VybmVsL3F3aWRnZXQuY3BwCitpbmRleCA5ZWJhMWUwMDFlLi4yNmY2ZDI3ZTE4IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0LmNwcAorKysrIGIvcXRi YXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0LmNwcAorQEAgLTUyOTYsNyArNTI5Niw3IEBA IHZvaWQgUVdpZGdldFByaXZhdGU6OmRyYXdXaWRnZXQoUVBhaW50RGV2aWNlICpwZGV2LCBjb25z dCBRUmVnaW9uICZyZ24sIGNvbnN0IFFQCisgICAgICAgICBRV2lkZ2V0RWZmZWN0U291cmNlUHJp dmF0ZSAqc291cmNlZCA9IHN0YXRpY19jYXN0PFFXaWRnZXRFZmZlY3RTb3VyY2VQcml2YXRlICo+ CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHNvdXJjZS0+ZF9mdW5jKCkpOworICAgICAgICAgaWYgKCFzb3VyY2VkLT5jb250ZXh0KSB7 CistICAgICAgICAgICAgY29uc3QgUVJlZ2lvbiBlZmZlY3RSZ24ocmduLmJvdW5kaW5nUmVjdCgp KTsKKysgICAgICAgICAgICBjb25zdCBRUmVnaW9uIGVmZmVjdFJnbigoZmxhZ3MgJiBVc2VFZmZl Y3RSZWdpb25Cb3VuZHMpID8gcmduLmJvdW5kaW5nUmVjdCgpIDogcmduKTsKKyAgICAgICAgICAg ICBRV2lkZ2V0UGFpbnRDb250ZXh0IGNvbnRleHQocGRldiwgZWZmZWN0UmduLCBvZmZzZXQsIGZs YWdzLCBzaGFyZWRQYWludGVyLCByZXBhaW50TWFuYWdlcik7CisgICAgICAgICAgICAgc291cmNl ZC0+Y29udGV4dCA9ICZjb250ZXh0OworICAgICAgICAgICAgIGlmICghc2hhcmVkUGFpbnRlcikg eworQEAgLTUzMjgsNiArNTMyOCw3IEBAIHZvaWQgUVdpZGdldFByaXZhdGU6OmRyYXdXaWRnZXQo UVBhaW50RGV2aWNlICpwZGV2LCBjb25zdCBRUmVnaW9uICZyZ24sIGNvbnN0IFFQCisgICAgICAg ICB9CisgICAgIH0KKyAjZW5kaWYgLy8gUVRfQ09ORklHKGdyYXBoaWNzZWZmZWN0KQorKyAgICBm bGFncyA9IGZsYWdzICYgflVzZUVmZmVjdFJlZ2lvbkJvdW5kczsKKyAKKyAgICAgY29uc3QgYm9v bCBhbHNvT25TY3JlZW4gPSBmbGFncyAmIERyYXdQYWludE9uU2NyZWVuOworICAgICBjb25zdCBi b29sIHJlY3Vyc2l2ZSA9IGZsYWdzICYgRHJhd1JlY3Vyc2l2ZTsKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRfcC5oIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tl cm5lbC9xd2lkZ2V0X3AuaAoraW5kZXggZWVmNmI4ZmEyYy4uYzQzMmY0YjVkNSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmgKKysrKyBiL3F0YmFzZS9z cmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmgKK0BAIC0yMjksNyArMjI5LDggQEAgcHVibGlj OgorICAgICAgICAgRG9udFN1YnRyYWN0T3BhcXVlQ2hpbGRyZW4gPSAweDEwLAorICAgICAgICAg RG9udERyYXdPcGFxdWVDaGlsZHJlbiA9IDB4MjAsCisgICAgICAgICBEb250RHJhd05hdGl2ZUNo aWxkcmVuID0gMHg0MCwKKy0gICAgICAgIERvbnRTZXRDb21wb3NpdGlvbk1vZGUgPSAweDgwCisr ICAgICAgICBEb250U2V0Q29tcG9zaXRpb25Nb2RlID0gMHg4MCwKKysgICAgICAgIFVzZUVmZmVj dFJlZ2lvbkJvdW5kcyA9IDB4MTAwCisgICAgIH07CisgICAgIFFfREVDTEFSRV9GTEFHUyhEcmF3 V2lkZ2V0RmxhZ3MsIERyYXdXaWRnZXRGbGFnKQorICAgICBRX0ZMQUcoRHJhd1dpZGdldEZsYWdz KQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldHJlcGFpbnRt YW5hZ2VyLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldHJlcGFpbnRtYW5h Z2VyLmNwcAoraW5kZXggMDI4ODBiMzRkYS4uMGQ0NGUxMzI2ZCAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldHJlcGFpbnRtYW5hZ2VyLmNwcAorKysrIGIvcXRi YXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWludG1hbmFnZXIuY3BwCitAQCAtMTAx OCw3ICsxMDE4LDggQEAgdm9pZCBRV2lkZ2V0UmVwYWludE1hbmFnZXI6OnBhaW50QW5kRmx1c2go KQorIAorICAgICAvLyBQYWludCB0aGUgcmVzdCB3aXRoIGNvbXBvc2l0aW9uLgorICAgICBpZiAo cmVwYWludEFsbFdpZGdldHMgfHwgIWRpcnR5Q29weS5pc0VtcHR5KCkpIHsKKy0gICAgICAgIFFX aWRnZXRQcml2YXRlOjpEcmF3V2lkZ2V0RmxhZ3MgZmxhZ3MgPSBRV2lkZ2V0UHJpdmF0ZTo6RHJh d0FzUm9vdCB8IFFXaWRnZXRQcml2YXRlOjpEcmF3UmVjdXJzaXZlOworKyAgICAgICAgUVdpZGdl dFByaXZhdGU6OkRyYXdXaWRnZXRGbGFncyBmbGFncyA9IFFXaWRnZXRQcml2YXRlOjpEcmF3QXNS b290IHwgUVdpZGdldFByaXZhdGU6OkRyYXdSZWN1cnNpdmUKKysgICAgICAgICAgICAgICAgfCBR V2lkZ2V0UHJpdmF0ZTo6VXNlRWZmZWN0UmVnaW9uQm91bmRzOworICAgICAgICAgdGx3LT5kX2Z1 bmMoKS0+ZHJhd1dpZGdldChzdG9yZS0+cGFpbnREZXZpY2UoKSwgZGlydHlDb3B5LCBRUG9pbnQo KSwgZmxhZ3MsIG51bGxwdHIsIHRoaXMpOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy93aWRnZXRzL3N0eWxlcy9xZnVzaW9uc3R5bGUuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRz L3N0eWxlcy9xZnVzaW9uc3R5bGUuY3BwCitpbmRleCBmNDM0NWQ5N2M0Li45NjI5MTJjODM4IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3N0eWxlcy9xZnVzaW9uc3R5bGUuY3BwCisr KysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVzL3FmdXNpb25zdHlsZS5jcHAKK0BAIC0xNzcy LDE0ICsxNzcyLDYgQEAgdm9pZCBRRnVzaW9uU3R5bGU6OmRyYXdDb250cm9sKENvbnRyb2xFbGVt ZW50IGVsZW1lbnQsIGNvbnN0IFFTdHlsZU9wdGlvbiAqb3B0aW8KKyAgICAgICAgICAgICBwcm94 eSgpLT5kcmF3Q29udHJvbChDRV9QdXNoQnV0dG9uTGFiZWwsICZzdWJvcHQsIHBhaW50ZXIsIHdp ZGdldCk7CisgICAgICAgICB9CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSBDRV9QdXNoQnV0 dG9uTGFiZWw6CistICAgICAgICBpZiAoY29uc3QgUVN0eWxlT3B0aW9uQnV0dG9uICpidXR0b24g PSBxc3R5bGVvcHRpb25fY2FzdDxjb25zdCBRU3R5bGVPcHRpb25CdXR0b24gKj4ob3B0aW9uKSkg eworLSAgICAgICAgICAgIFFTdHlsZU9wdGlvbkJ1dHRvbiBiKCpidXR0b24pOworLSAgICAgICAg ICAgIC8vIG5vIFBNX0J1dHRvblNoaWZ0SG9yaXpvbnRhbCBhbmQgUE1fQnV0dG9uU2hpZnRWZXJ0 aWNhbCBmb3IgZnVzaW9uIHN0eWxlCistICAgICAgICAgICAgYi5zdGF0ZSAmPSB+KFN0YXRlX09u IHwgU3RhdGVfU3Vua2VuKTsKKy0gICAgICAgICAgICBRQ29tbW9uU3R5bGU6OmRyYXdDb250cm9s KGVsZW1lbnQsICZiLCBwYWludGVyLCB3aWRnZXQpOworLSAgICAgICAgfQorLSAgICAgICAgYnJl YWs7CisgICAgIGNhc2UgQ0VfTWVudUJhckVtcHR5QXJlYToKKyAgICAgICAgIHBhaW50ZXItPnNh dmUoKTsKKyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy91dGlsL3Fjb21w bGV0ZXIuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3V0aWwvcWNvbXBsZXRlci5jcHAKK2luZGV4 IDE4YjI0MDYzZDguLmVmNzIwN2E4YTMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMv dXRpbC9xY29tcGxldGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3V0aWwvcWNvbXBs ZXRlci5jcHAKK0BAIC0xMTIwLDYgKzExMjAsOCBAQCB2b2lkIFFDb21wbGV0ZXI6OnNldE1vZGVs KFFBYnN0cmFjdEl0ZW1Nb2RlbCAqbW9kZWwpCisgeworICAgICBRX0QoUUNvbXBsZXRlcik7Cisg ICAgIFFBYnN0cmFjdEl0ZW1Nb2RlbCAqb2xkTW9kZWwgPSBkLT5wcm94eS0+c291cmNlTW9kZWwo KTsKKysgICAgaWYgKG9sZE1vZGVsID09IG1vZGVsKQorKyAgICAgICAgcmV0dXJuOworICNpZiBR VF9DT05GSUcoZmlsZXN5c3RlbW1vZGVsKQorICAgICBpZiAocW9iamVjdF9jYXN0PGNvbnN0IFFG aWxlU3lzdGVtTW9kZWwgKj4ob2xkTW9kZWwpKQorICAgICAgICAgc2V0Q29tcGxldGlvblJvbGUo UXQ6OkVkaXRSb2xlKTsgLy8gUVRCVUctNTQ2NDIsIGNsZWFyIEZpbGVOYW1lUm9sZSBzZXQgYnkg UUZpbGVTeXN0ZW1Nb2RlbAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRz L3FhYnN0cmFjdGJ1dHRvbi5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJh Y3RidXR0b24uY3BwCitpbmRleCBhMTI4YjIzOTUwLi5kYzQwYmY2MmZiIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uLmNwcAorKysrIGIvcXRi YXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uLmNwcAorQEAgLTU2LDYgKzU2 LDcgQEAKKyAjaWZuZGVmIFFUX05PX0FDQ0VTU0lCSUxJVFkKKyAjaW5jbHVkZSAicWFjY2Vzc2li bGUuaCIKKyAjZW5kaWYKKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisgCisgI2lu Y2x1ZGUgPGFsZ29yaXRobT4KKyAKK0BAIC0xMDc2LDE5ICsxMDc3LDE5IEBAIHZvaWQgUUFic3Ry YWN0QnV0dG9uOjprZXlQcmVzc0V2ZW50KFFLZXlFdmVudCAqZSkKKyB7CisgICAgIFFfRChRQWJz dHJhY3RCdXR0b24pOworICAgICBib29sIG5leHQgPSB0cnVlOworLSAgICBzd2l0Y2ggKGUtPmtl eSgpKSB7CistICAgIGNhc2UgUXQ6OktleV9FbnRlcjoKKy0gICAgY2FzZSBRdDo6S2V5X1JldHVy bjoKKy0gICAgICAgIGUtPmlnbm9yZSgpOworLSAgICAgICAgYnJlYWs7CistICAgIGNhc2UgUXQ6 OktleV9TZWxlY3Q6CistICAgIGNhc2UgUXQ6OktleV9TcGFjZToKKy0gICAgICAgIGlmICghZS0+ aXNBdXRvUmVwZWF0KCkpIHsKKy0gICAgICAgICAgICBzZXREb3duKHRydWUpOworLSAgICAgICAg ICAgIHJlcGFpbnQoKTsKKy0gICAgICAgICAgICBkLT5lbWl0UHJlc3NlZCgpOworLSAgICAgICAg fQorLSAgICAgICAgYnJlYWs7CisrCisrICAgIGNvbnN0IGF1dG8ga2V5ID0gc3RhdGljX2Nhc3Q8 UXQ6OktleT4oZS0+a2V5KCkpOworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFH dWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRv blByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52 YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlu cyhrZXkpICYmICFlLT5pc0F1dG9SZXBlYXQoKSkgeworKyAgICAgICAgc2V0RG93bih0cnVlKTsK KysgICAgICAgIHJlcGFpbnQoKTsKKysgICAgICAgIGQtPmVtaXRQcmVzc2VkKCk7CisrICAgICAg ICByZXR1cm47CisrICAgIH0KKysKKysgICAgc3dpdGNoIChrZXkpIHsKKyAgICAgY2FzZSBRdDo6 S2V5X1VwOgorICAgICAgICAgbmV4dCA9IGZhbHNlOworICAgICAgICAgUV9GQUxMVEhST1VHSCgp OworQEAgLTExNTMsMTUgKzExNTQsMTUgQEAgdm9pZCBRQWJzdHJhY3RCdXR0b246OmtleVJlbGVh c2VFdmVudChRS2V5RXZlbnQgKmUpCisgICAgIGlmICghZS0+aXNBdXRvUmVwZWF0KCkpCisgICAg ICAgICBkLT5yZXBlYXRUaW1lci5zdG9wKCk7CisgCistICAgIHN3aXRjaCAoZS0+a2V5KCkpIHsK Ky0gICAgY2FzZSBRdDo6S2V5X1NlbGVjdDoKKy0gICAgY2FzZSBRdDo6S2V5X1NwYWNlOgorLSAg ICAgICAgaWYgKCFlLT5pc0F1dG9SZXBlYXQoKSAmJiBkLT5kb3duKQorLSAgICAgICAgICAgIGQt PmNsaWNrKCk7CistICAgICAgICBicmVhazsKKy0gICAgZGVmYXVsdDoKKy0gICAgICAgIGUtPmln bm9yZSgpOworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlv blByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxR dDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhzdGF0aWNfY2Fz dDxRdDo6S2V5PihlLT5rZXkoKSkpICYmICFlLT5pc0F1dG9SZXBlYXQoKSAmJiBkLT5kb3duKSB7 CisrICAgICAgICBkLT5jbGljaygpOworKyAgICAgICAgcmV0dXJuOworICAgICB9CisrCisrICAg IGUtPmlnbm9yZSgpOworIH0KKyAKKyAvKiFccmVpbXAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3guY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdl dHMvcWNvbWJvYm94LmNwcAoraW5kZXggN2E0OTZjMjdlMC4uMGEzZDk2NjQ3YiAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5jcHAKK0BAIC0zMzUyLDcgKzMzNTIsMjMg QEAgdm9pZCBRQ29tYm9Cb3g6OmtleVByZXNzRXZlbnQoUUtleUV2ZW50ICplKQorIAorICAgICBN b3ZlIG1vdmUgPSBOb01vdmU7CisgICAgIGludCBuZXdJbmRleCA9IGN1cnJlbnRJbmRleCgpOwor LSAgICBzd2l0Y2ggKGUtPmtleSgpKSB7CisrCisrICAgIGJvb2wgcHJlc3NMaWtlQnV0dG9uID0g IWQtPmxpbmVFZGl0OworKyNpZmRlZiBRVF9LRVlQQURfTkFWSUdBVElPTgorKyAgICBwcmVzc0xp a2VCdXR0b24gfD0gUUFwcGxpY2F0aW9uUHJpdmF0ZTo6a2V5cGFkTmF2aWdhdGlvbkVuYWJsZWQo KSAmJiAhaGFzRWRpdEZvY3VzKCk7CisrI2VuZGlmCisrICAgIGF1dG8ga2V5ID0gc3RhdGljX2Nh c3Q8UXQ6OktleT4oZS0+a2V5KCkpOworKyAgICBpZiAocHJlc3NMaWtlQnV0dG9uKSB7CisrICAg ICAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6 OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0 OjpLZXk+PigpOworKyAgICAgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhrZXkpKSB7 CisrICAgICAgICAgICAgc2hvd1BvcHVwKCk7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAg ICAgfQorKyAgICB9CisrCisrICAgIHN3aXRjaCAoa2V5KSB7CisgICAgIGNhc2UgUXQ6OktleV9V cDoKKyAgICAgICAgIGlmIChlLT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIpCisg ICAgICAgICAgICAgYnJlYWs7IC8vIHBhc3MgdG8gbGluZSBlZGl0IGZvciBhdXRvIGNvbXBsZXRp b24KK0BAIC0zMzk0LDI2ICszNDEwLDExIEBAIHZvaWQgUUNvbWJvQm94OjprZXlQcmVzc0V2ZW50 KFFLZXlFdmVudCAqZSkKKyAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICB9CisgICAgICAg ICBicmVhazsKKy0gICAgY2FzZSBRdDo6S2V5X1NwYWNlOgorLSAgICAgICAgaWYgKCFkLT5saW5l RWRpdCkgeworLSAgICAgICAgICAgIHNob3dQb3B1cCgpOworLSAgICAgICAgICAgIHJldHVybjsK Ky0gICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworLSAgICBjYXNlIFF0OjpLZXlfRW50ZXI6Cist ICAgIGNhc2UgUXQ6OktleV9SZXR1cm46CisgICAgIGNhc2UgUXQ6OktleV9Fc2NhcGU6CisgICAg ICAgICBpZiAoIWQtPmxpbmVFZGl0KQorICAgICAgICAgICAgIGUtPmlnbm9yZSgpOworICAgICAg ICAgYnJlYWs7CisgI2lmZGVmIFFUX0tFWVBBRF9OQVZJR0FUSU9OCistICAgIGNhc2UgUXQ6Oktl eV9TZWxlY3Q6CistICAgICAgICBpZiAoUUFwcGxpY2F0aW9uUHJpdmF0ZTo6a2V5cGFkTmF2aWdh dGlvbkVuYWJsZWQoKQorLSAgICAgICAgICAgICAgICAmJiAoIWhhc0VkaXRGb2N1cygpIHx8ICFk LT5saW5lRWRpdCkpIHsKKy0gICAgICAgICAgICBzaG93UG9wdXAoKTsKKy0gICAgICAgICAgICBy ZXR1cm47CistICAgICAgICB9CistICAgICAgICBicmVhazsKKyAgICAgY2FzZSBRdDo6S2V5X0xl ZnQ6CisgICAgIGNhc2UgUXQ6OktleV9SaWdodDoKKyAgICAgICAgIGlmIChRQXBwbGljYXRpb25Q cml2YXRlOjprZXlwYWROYXZpZ2F0aW9uRW5hYmxlZCgpICYmICFoYXNFZGl0Rm9jdXMoKSkKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZGF0ZXRpbWVlZGl0X3AuaCBi L3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRldGltZWVkaXRfcC5oCitpbmRleCBkMzZi NmY4ZjlhLi5lMGRmNWI1MTU4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdl dHMvcWRhdGV0aW1lZWRpdF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fk YXRldGltZWVkaXRfcC5oCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICoqCistKiogQ29weXJpZ2h0IChDKSAyMDE4IFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5 cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRhY3Q6IGh0dHBzOi8v d3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBR dFdpZGdldHMgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lk Z2V0cy9xZ3JvdXBib3guY3BwCitpbmRleCAwMmEwYmVkMzI1Li4zZjNlY2NjMzcwIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94LmNwcAorKysrIGIvcXRi YXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94LmNwcAorQEAgLTU0LDYgKzU0LDggQEAK KyAjaW5jbHVkZSAicWFjY2Vzc2libGUuaCIKKyAjZW5kaWYKKyAjaW5jbHVkZSA8cHJpdmF0ZS9x d2lkZ2V0X3AuaD4KKysjaW5jbHVkZSA8cHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorKyNp bmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAKKyAjaW5jbHVkZSAicWRlYnVnLmgiCisg CitAQCAtMzYwLDcgKzM2MiwxMCBAQCBib29sIFFHcm91cEJveDo6ZXZlbnQoUUV2ZW50ICplKQor ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgIGNhc2UgUUV2ZW50OjpLZXlQcmVzczogeworICAg ICAgICAgUUtleUV2ZW50ICprID0gc3RhdGljX2Nhc3Q8UUtleUV2ZW50Kj4oZSk7CistICAgICAg ICBpZiAoIWstPmlzQXV0b1JlcGVhdCgpICYmIChrLT5rZXkoKSA9PSBRdDo6S2V5X1NlbGVjdCB8 fCBrLT5rZXkoKSA9PSBRdDo6S2V5X1NwYWNlKSkgeworKyAgICAgICAgY29uc3QgYXV0byBidXR0 b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChR UGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgICAg IGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKHN0YXRp Y19jYXN0PFF0OjpLZXk+KGstPmtleSgpKSkpIHsKKyAgICAgICAgICAgICBkLT5wcmVzc2VkQ29u dHJvbCA9IFFTdHlsZTo6U0NfR3JvdXBCb3hDaGVja0JveDsKKyAgICAgICAgICAgICB1cGRhdGUo c3R5bGUoKS0+c3ViQ29udHJvbFJlY3QoUVN0eWxlOjpDQ19Hcm91cEJveCwgJmJveCwgUVN0eWxl OjpTQ19Hcm91cEJveENoZWNrQm94LCB0aGlzKSk7CisgICAgICAgICAgICAgcmV0dXJuIHRydWU7 CitAQCAtMzY5LDcgKzM3NCwxMCBAQCBib29sIFFHcm91cEJveDo6ZXZlbnQoUUV2ZW50ICplKQor ICAgICB9CisgICAgIGNhc2UgUUV2ZW50OjpLZXlSZWxlYXNlOiB7CisgICAgICAgICBRS2V5RXZl bnQgKmsgPSBzdGF0aWNfY2FzdDxRS2V5RXZlbnQqPihlKTsKKy0gICAgICAgIGlmICghay0+aXNB dXRvUmVwZWF0KCkgJiYgKGstPmtleSgpID09IFF0OjpLZXlfU2VsZWN0IHx8IGstPmtleSgpID09 IFF0OjpLZXlfU3BhY2UpKSB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9 IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1l OjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAgaWYgKCFrLT5pc0F1 dG9SZXBlYXQoKSAmJiBidXR0b25QcmVzc0tleXMuY29udGFpbnMoc3RhdGljX2Nhc3Q8UXQ6Oktl eT4oay0+a2V5KCkpKSkgeworICAgICAgICAgICAgIGJvb2wgdG9nZ2xlID0gKGQtPnByZXNzZWRD b250cm9sID09IFFTdHlsZTo6U0NfR3JvdXBCb3hMYWJlbAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHx8IGQtPnByZXNzZWRDb250cm9sID09IFFTdHlsZTo6U0NfR3JvdXBCb3hDaGVja0Jv eCk7CisgICAgICAgICAgICAgZC0+cHJlc3NlZENvbnRyb2wgPSBRU3R5bGU6OlNDX05vbmU7Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWxhYmVsLmNwcCBiL3F0YmFz ZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAKK2luZGV4IDMwZmY4MGNiYjAuLmNmMjYw NWMxN2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xbGFiZWwuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xbGFiZWwuY3BwCitAQCAtNDIxLDkg KzQyMSw2IEBAIHZvaWQgUUxhYmVsOjpzZXRQaXhtYXAoY29uc3QgUVBpeG1hcCAmcGl4bWFwKQor ICAgICAgICAgZC0+cGl4bWFwID0gbmV3IFFQaXhtYXAocGl4bWFwKTsKKyAgICAgfQorIAorLSAg ICBpZiAoZC0+cGl4bWFwLT5kZXB0aCgpID09IDEgJiYgIWQtPnBpeG1hcC0+bWFzaygpKQorLSAg ICAgICAgZC0+cGl4bWFwLT5zZXRNYXNrKCooKFFCaXRtYXAgKilkLT5waXhtYXApKTsKKy0KKyAg ICAgZC0+dXBkYXRlTGFiZWwoKTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRn ZXRzL3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93 aWRnZXRzL3F0b29sYmFyYXJlYWxheW91dC5jcHAKK2luZGV4IDQ5M2MwOTRjYzEuLmQ1ZjRiNTkw MTcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xdG9vbGJhcmFyZWFs YXlvdXQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xdG9vbGJhcmFyZWFs YXlvdXQuY3BwCitAQCAtMTM2Nyw3ICsxMzY3LDcgQEAgYm9vbCBRVG9vbEJhckFyZWFMYXlvdXQ6 OnJlc3RvcmVTdGF0ZShRRGF0YVN0cmVhbSAmc3RyZWFtLCBjb25zdCBRTGlzdDxRVG9vbEJhcioK KyAgICAgICAgICAgICAgICAgaXRlbS53aWRnZXRJdGVtID0gbmV3IFFXaWRnZXRJdGVtVjIodG9v bEJhcik7CisgICAgICAgICAgICAgICAgIHRvb2xCYXItPnNldE9yaWVudGF0aW9uKGZsb2F0aW5n ID8gKChzaG93biAmIDIpID8gUXQ6OlZlcnRpY2FsIDogUXQ6Okhvcml6b250YWwpIDogZG9jay5v KTsKKyAgICAgICAgICAgICAgICAgdG9vbEJhci0+c2V0VmlzaWJsZShzaG93biAmIDEpOworLSAg ICAgICAgICAgICAgICB0b29sQmFyLT5kX2Z1bmMoKS0+c2V0V2luZG93U3RhdGUoZmxvYXRpbmcs IHRydWUsIHJlY3QpOworKyAgICAgICAgICAgICAgICB0b29sQmFyLT5kX2Z1bmMoKS0+c2V0V2lu ZG93U3RhdGUoZmxvYXRpbmcsIGZhbHNlLCByZWN0KTsKKyAKKyAgICAgICAgICAgICAgICAgaXRl bS5wcmVmZXJyZWRTaXplID0gaXRlbS5zaXplOworICAgICAgICAgICAgICAgICBsaW5lLnRvb2xC YXJJdGVtcy5hcHBlbmQoaXRlbSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29u Y3VycmVudC9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsL3RzdF9xdGNvbmN1cnJlbnRpdGVyYXRl a2VybmVsLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50aXRl cmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC5jcHAKK2luZGV4IDIxMmMw YTJlMTMuLjNjNzdiMWJhMGIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJy ZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3VycmVudGl0ZXJhdGVrZXJu ZWwuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudGl0 ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwuY3BwCitAQCAtMTI2LDgg KzEyNiw3IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2VybmVs OjppbnN0YW50aWF0ZSgpCisgeworLSAgICBhdXRvIGZ1dHVyZSA9IHN0YXJ0VGhyZWFkRW5naW5l KG5ldyBQcmludEZvcigwLCA0MCkpLnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgZnV0dXJl LndhaXRGb3JGaW5pc2hlZCgpOworKyAgICBzdGFydFRocmVhZEVuZ2luZShuZXcgUHJpbnRGb3Io MCwgNDApKS5zdGFydEJsb2NraW5nKCk7CisgICAgIFFDT01QQVJFKGl0ZXJhdGlvbnMubG9hZFJl bGF4ZWQoKSwgNDApOworIH0KKyAKK0BAIC0xNjYsMTAgKzE2NSw4IEBAIHZvaWQgdHN0X1F0Q29u Y3VycmVudEl0ZXJhdGVLZXJuZWw6OnN0cmVzc3Rlc3QoKQorICAgICBjb25zdCBpbnQgdGltZXMg PSA1MDsKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aW1lczsgKytpKSB7CisgICAgICAgICBj b3VudGVyLnN0b3JlUmVsYXhlZCgwKTsKKy0gICAgICAgIC8vIFRocmVhZEVuZ2luZSB3aWxsIGRl bGV0ZSBmIHdoZW4gaXQgZmluaXNoZXMKKy0gICAgICAgIGF1dG8gZiA9IG5ldyBDb3VudEZvcigw LCBpdGVyYXRpb25zKTsKKy0gICAgICAgIGF1dG8gZnV0dXJlID0gZi0+c3RhcnRBc3luY2hyb25v dXNseSgpOworLSAgICAgICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgpOworKyAgICAgICAgQ291 bnRGb3IgZigwLCBpdGVyYXRpb25zKTsKKysgICAgICAgIGYuc3RhcnRCbG9ja2luZygpOworICAg ICAgICAgUUNPTVBBUkUoY291bnRlci5sb2FkUmVsYXhlZCgpLCBpdGVyYXRpb25zKTsKKyAgICAg fQorIH0KK0BAIC0xNzcsMTEgKzE3NCw4IEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVL ZXJuZWw6OnN0cmVzc3Rlc3QoKQorIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6 Om5vSXRlcmF0aW9ucygpCisgeworICAgICBjb25zdCBpbnQgdGltZXMgPSAyMDAwMDsKKy0gICAg Zm9yIChpbnQgaSA9IDA7IGkgPCB0aW1lczsgKytpKSB7CistICAgICAgICBhdXRvIGZ1dHVyZSA9 IHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBJdGVyYXRlS2VybmVsPFRlc3RJdGVyYXRvciwgdm9pZD4o MCwgMCkpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN0YXJ0QXN5bmNocm9ub3Vz bHkoKTsKKy0gICAgICAgIGZ1dHVyZS53YWl0Rm9yRmluaXNoZWQoKTsKKy0gICAgfQorKyAgICBm b3IgKGludCBpID0gMDsgaSA8IHRpbWVzOyArK2kpCisrICAgICAgICBzdGFydFRocmVhZEVuZ2lu ZShuZXcgSXRlcmF0ZUtlcm5lbDxUZXN0SXRlcmF0b3IsIHZvaWQ+KDAsIDApKS5zdGFydEJsb2Nr aW5nKCk7CisgfQorIAorIFFNdXRleCB0aHJlYWRzTXV0ZXg7CitAQCAtMjM2LDEwICsyMzAsOCBA QCB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2VybmVsOjp0aHJvdHRsaW5nKCkKKyAKKyAg ICAgdGhyZWFkcy5jbGVhcigpOworIAorLSAgICAvLyBUaHJlYWRFbmdpbmUgd2lsbCBkZWxldGUg ZiB3aGVuIGl0IGZpbmlzaGVzCistICAgIGF1dG8gZiA9IG5ldyBUaHJvdHRsZUZvcigwLCB0b3Rh bEl0ZXJhdGlvbnMpOworLSAgICBhdXRvIGZ1dHVyZSA9IGYtPnN0YXJ0QXN5bmNocm9ub3VzbHko KTsKKy0gICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgpOworKyAgICBUaHJvdHRsZUZvciBmKDAs IHRvdGFsSXRlcmF0aW9ucyk7CisrICAgIGYuc3RhcnRCbG9ja2luZygpOworIAorICAgICBRQ09N UEFSRShpdGVyYXRpb25zLmxvYWRSZWxheGVkKCksIHRvdGFsSXRlcmF0aW9ucyk7CisgCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRl bmdpbmUvdHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0 by9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS90c3RfcXRjb25jdXJyZW50dGhy ZWFkZW5naW5lLmNwcAoraW5kZXggYWM3YmU3YWNkZC4uODFiYzY0YzhkOSAxMDA2NDQKKy0tLSBh L3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3Rz dF9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9j b25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS90c3RfcXRjb25jdXJyZW50dGhyZWFk ZW5naW5lLmNwcAorQEAgLTY1LDkgKzY1LDE2IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENv bmN1cnJlbnRUaHJlYWRFbmdpbmU6OnJ1bkRpcmVjdGx5KCkKKyB7CistICAgIFByaW50VXNlciAq ZW5naW5lID0gbmV3IFByaW50VXNlcigpOworLSAgICBRRnV0dXJlPHZvaWQ+IGYgPSBlbmdpbmUt PnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgZi53YWl0Rm9yRmluaXNoZWQoKTsKKysgICAg eworKyAgICAgICAgUHJpbnRVc2VyIGVuZ2luZTsKKysgICAgICAgIGVuZ2luZS5zdGFydFNpbmds ZVRocmVhZGVkKCk7CisrICAgICAgICBlbmdpbmUuc3RhcnRCbG9ja2luZygpOworKyAgICB9Cisr ICAgIHsKKysgICAgICAgIFByaW50VXNlciAqZW5naW5lID0gbmV3IFByaW50VXNlcigpOworKyAg ICAgICAgUUZ1dHVyZTx2b2lkPiBmID0gZW5naW5lLT5zdGFydEFzeW5jaHJvbm91c2x5KCk7Cisr ICAgICAgICBmLndhaXRGb3JGaW5pc2hlZCgpOworKyAgICB9CisgfQorIAorIGNsYXNzIFN0cmlu Z1Jlc3VsdFVzZXIgOiBwdWJsaWMgVGhyZWFkRW5naW5lPFFTdHJpbmc+CitAQCAtOTksMTAgKzEw Niw4IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnJl c3VsdCgpCisgeworLSAgICAvLyBUaHJlYWRFbmdpbmUgd2lsbCBkZWxldGUgJ2VuZ2luZScgd2hl biBpdCBmaW5pc2hlcworLSAgICBhdXRvIGVuZ2luZSA9IG5ldyBTdHJpbmdSZXN1bHRVc2VyKCk7 CistICAgIGF1dG8gZnV0dXJlID0gZW5naW5lLT5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAg IFFDT01QQVJFKGZ1dHVyZS5yZXN1bHQoKSwgUVN0cmluZygiRm9vIikpOworKyAgICBTdHJpbmdS ZXN1bHRVc2VyIGVuZ2luZTsKKysgICAgUUNPTVBBUkUoKmVuZ2luZS5zdGFydEJsb2NraW5nKCks IFFTdHJpbmcoIkZvbyIpKTsKKyB9CisgCisgY2xhc3MgVm9pZFJlc3VsdFVzZXIgOiBwdWJsaWMg VGhyZWFkRW5naW5lPHZvaWQ+CitAQCAtMTI4LDkgKzEzMywxNyBAQCBwdWJsaWM6CisgCisgdm9p ZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpydW5UaHJvdWdoU3RhcnRlcigpCisgewor LSAgICBUaHJlYWRFbmdpbmVTdGFydGVyPFFTdHJpbmc+IHN0YXJ0ZXIgPSBzdGFydFRocmVhZEVu Z2luZShuZXcgU3RyaW5nUmVzdWx0VXNlcigpKTsKKy0gICAgUUZ1dHVyZTxRU3RyaW5nPiBmID0g c3RhcnRlci5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgIFFDT01QQVJFKGYucmVzdWx0KCks IFFTdHJpbmcoIkZvbyIpKTsKKysgICAgeworKyAgICAgICAgVGhyZWFkRW5naW5lU3RhcnRlcjxR U3RyaW5nPiBzdGFydGVyID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IFN0cmluZ1Jlc3VsdFVzZXIo KSk7CisrICAgICAgICBRRnV0dXJlPFFTdHJpbmc+ICBmID0gc3RhcnRlci5zdGFydEFzeW5jaHJv bm91c2x5KCk7CisrICAgICAgICBRQ09NUEFSRShmLnJlc3VsdCgpLCBRU3RyaW5nKCJGb28iKSk7 CisrICAgIH0KKysKKysgICAgeworKyAgICAgICAgVGhyZWFkRW5naW5lU3RhcnRlcjxRU3RyaW5n PiBzdGFydGVyID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IFN0cmluZ1Jlc3VsdFVzZXIoKSk7Cisr ICAgICAgICBRU3RyaW5nIHN0ciA9IHN0YXJ0ZXIuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAg UUNPTVBBUkUoc3RyLCBRU3RyaW5nKCJGb28iKSk7CisrICAgIH0KKyB9CisgCisgY2xhc3MgQ2Fu Y2VsVXNlciA6IHB1YmxpYyBUaHJlYWRFbmdpbmU8dm9pZD4KK0BAIC0yMTMsNiArMjI2LDEyIEBA IHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6dGhyb3R0bGUoKQorICAgICAgICAg Zi53YWl0Rm9yRmluaXNoZWQoKTsKKyAgICAgICAgIFFDT01QQVJFKGNvdW50LmxvYWRSZWxheGVk KCksIDApOworICAgICB9CisrCisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0czsgKytp KSB7CisrICAgICAgICBUaHJvdHRsZUFsd2F5c1VzZXIgdDsKKysgICAgICAgIHQuc3RhcnRCbG9j a2luZygpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQubG9hZFJlbGF4ZWQoKSwgMCk7CisrICAg IH0KKyB9CisgCisgUVNldDxRVGhyZWFkICo+IHRocmVhZHM7CitAQCAtMjQ5LDE3ICsyNjgsMzUg QEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjp0aHJlYWRDb3VudCgpCisgewor ICAgICBjb25zdCBpbnQgcmVwZWF0cyA9IDEwOworICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJl cGVhdHM7ICsraSkgeworKyAgICAgICAgVGhyZWFkQ291bnRVc2VyIHQ7CisrICAgICAgICB0LnN0 YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGludCBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKysg ICAgICAgIGludCBjb3VudF9leHBlY3RlZCA9IFFUaHJlYWRQb29sOjpnbG9iYWxJbnN0YW5jZSgp LT5tYXhUaHJlYWRDb3VudCgpICsgMTsgLy8gKzEgZm9yIHRoZSBtYWluIHRocmVhZC4KKysgICAg ICAgIGlmIChjb3VudCAhPSBjb3VudF9leHBlY3RlZCkKKysgICAgICAgICAgICBRRVhQRUNUX0ZB SUwoIiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKysgICAgICAgIFFDT01QQVJFKGNvdW50LCBj b3VudF9leHBlY3RlZCk7CisrCisgICAgICAgICAobmV3IFRocmVhZENvdW50VXNlcigpKS0+c3Rh cnRBc3luY2hyb25vdXNseSgpLndhaXRGb3JGaW5pc2hlZCgpOworLSAgICAgICAgY29uc3QgYXV0 byBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKy0gICAgICAgIGNvbnN0IGF1dG8gbWF4VGhyZWFk Q291bnQgPSBRVGhyZWFkUG9vbDo6Z2xvYmFsSW5zdGFuY2UoKS0+bWF4VGhyZWFkQ291bnQoKTsK Ky0gICAgICAgIFFWRVJJRlkoY291bnQgPD0gbWF4VGhyZWFkQ291bnQpOworLSAgICAgICAgUVZF UklGWSghdGhyZWFkcy5jb250YWlucyhRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkpKTsKKysgICAg ICAgIGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgY291bnRfZXhwZWN0ZWQgPSBR VGhyZWFkUG9vbDo6Z2xvYmFsSW5zdGFuY2UoKS0+bWF4VGhyZWFkQ291bnQoKTsKKysgICAgICAg IGlmIChjb3VudCAhPSBjb3VudF9leHBlY3RlZCkKKysgICAgICAgICAgICBRRVhQRUNUX0ZBSUwo IiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKysgICAgICAgIFFDT01QQVJFKGNvdW50LCBjb3Vu dF9leHBlY3RlZCk7CisgICAgIH0KKyAKKyAgICAgLy8gU2V0IHRoZSBmaW5pc2ggZmxhZyBpbW1l ZGlhdGVseSwgdGhpcyBzaG91bGQgZ2l2ZSB1cyBvbmUgdGhyZWFkIG9ubHkuCisgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgcmVwZWF0czsgKytpKSB7CisrICAgICAgICBUaHJlYWRDb3VudFVzZXIg dCh0cnVlIC8qZmluaXNoSW1tZWRpYXRlbHkqLyk7CisrICAgICAgICB0LnN0YXJ0QmxvY2tpbmco KTsKKysgICAgICAgIGludCBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKysgICAgICAgIGlmIChj b3VudCAhPSAxKQorKyAgICAgICAgICAgIFFFWFBFQ1RfRkFJTCgiIiwgIlFUQlVHLTIzMzMzIiwg QWJvcnQpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQsIDEpOworKworICAgICAgICAgKG5ldyBU aHJlYWRDb3VudFVzZXIodHJ1ZSAvKmZpbmlzaEltbWVkaWF0ZWx5Ki8pKS0+c3RhcnRBc3luY2hy b25vdXNseSgpLndhaXRGb3JGaW5pc2hlZCgpOworLSAgICAgICAgY29uc3QgYXV0byBjb3VudCA9 IHRocmVhZHMuY291bnQoKTsKKysgICAgICAgIGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAg ICAgICAgaWYgKGNvdW50ICE9IDEpCisrICAgICAgICAgICAgUUVYUEVDVF9GQUlMKCIiLCAiUVRC VUctMjMzMzMiLCBBYm9ydCk7CisgICAgICAgICBRQ09NUEFSRShjb3VudCwgMSk7CisgICAgICAg ICBRVkVSSUZZKCF0aHJlYWRzLmNvbnRhaW5zKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSkpOwor ICAgICB9CitAQCAtNDAwLDYgKzQzNyw3IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENvbmN1 cnJlbnRUaHJlYWRFbmdpbmU6OmV4Y2VwdGlvbnMoKQorIHsKKysgICAgLy8gQXN5bmNocm9ub3Vz IG1vZGU6CisgICAgIHsKKyAgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7CisgICAgICAgICB0 cnkgIHsKK0BAIC00MTIsNiArNDUwLDMyIEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVu Z2luZTo6ZXhjZXB0aW9ucygpCisgICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdl dCBleGNlcHRpb24iKTsKKyAgICAgfQorIAorKyAgICAvLyBCbG9ja2luZyBtb2RlOgorKyAgICAv LyB0ZXN0IHRocm93aW5nIHRoZSBleGNlcHRpb24gZnJvbSBhIHdvcmtlciB0aHJlYWQuCisrICAg IHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7CisrICAgICAgICB0cnkgIHsKKysgICAg ICAgICAgICBRdENvbmN1cnJlbnRFeGNlcHRpb25UaHJvd2VyIGUoUVRocmVhZDo6Y3VycmVudFRo cmVhZCgpKTsKKysgICAgICAgICAgICBlLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIH0gY2F0 Y2ggKGNvbnN0IFFFeGNlcHRpb24gJikgeworKyAgICAgICAgICAgIGNhdWdodCA9IHRydWU7Cisr ICAgICAgICB9CisrICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRp b24iKTsKKysgICAgfQorKworKyAgICAvLyB0ZXN0IHRocm93aW5nIHRoZSBleGNlcHRpb24gZnJv bSB0aGUgbWFpbiB0aHJlYWQgKGRpZmZlcmVudCBjb2RlIHBhdGgpCisrICAgIHsKKysgICAgICAg IGJvb2wgY2F1Z2h0ID0gZmFsc2U7CisrICAgICAgICB0cnkgIHsKKysgICAgICAgICAgICBRdENv bmN1cnJlbnRFeGNlcHRpb25UaHJvd2VyIGUoMCk7CisrICAgICAgICAgICAgZS5zdGFydEJsb2Nr aW5nKCk7CisrICAgICAgICB9IGNhdGNoIChjb25zdCBRRXhjZXB0aW9uICYpIHsKKysgICAgICAg ICAgICBjYXVnaHQgPSB0cnVlOworKyAgICAgICAgfQorKyAgICAgICAgUVZFUklGWTIoY2F1Z2h0 LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7CisrICAgIH0KKysKKysgICAgLy8gQXN5bmNocm9u b3VzIG1vZGU6CisgICAgIHsKKyAgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7CisgICAgICAg ICB0cnkgIHsKK0BAIC00MjMsNiArNDg3LDMxIEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVh ZEVuZ2luZTo6ZXhjZXB0aW9ucygpCisgICAgICAgICB9CisgICAgICAgICBRVkVSSUZZMihjYXVn aHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKyAgICAgfQorKworKyAgICAvLyBCbG9ja2lu ZyBtb2RlOgorKyAgICAvLyB0ZXN0IHRocm93aW5nIHRoZSBleGNlcHRpb24gZnJvbSBhIHdvcmtl ciB0aHJlYWQuCisrICAgIHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7CisrICAgICAg ICB0cnkgIHsKKysgICAgICAgICAgICBVbnJlbGF0ZWRFeGNlcHRpb25UaHJvd2VyIGUoUVRocmVh ZDo6Y3VycmVudFRocmVhZCgpKTsKKysgICAgICAgICAgICBlLnN0YXJ0QmxvY2tpbmcoKTsKKysg ICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFVbmhhbmRsZWRFeGNlcHRpb24gJikgeworKyAgICAgICAg ICAgIGNhdWdodCA9IHRydWU7CisrICAgICAgICB9CisrICAgICAgICBRVkVSSUZZMihjYXVnaHQs ICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKysgICAgfQorKworKyAgICAvLyB0ZXN0IHRocm93 aW5nIHRoZSBleGNlcHRpb24gZnJvbSB0aGUgbWFpbiB0aHJlYWQgKGRpZmZlcmVudCBjb2RlIHBh dGgpCisrICAgIHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7CisrICAgICAgICB0cnkg IHsKKysgICAgICAgICAgICBVbnJlbGF0ZWRFeGNlcHRpb25UaHJvd2VyIGUoMCk7CisrICAgICAg ICAgICAgZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9IGNhdGNoIChjb25zdCBRVW5oYW5k bGVkRXhjZXB0aW9uICYpIHsKKysgICAgICAgICAgICBjYXVnaHQgPSB0cnVlOworKyAgICAgICAg fQorKyAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7Cisr ICAgIH0KKyB9CisgCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29y ZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVs aWIvaW8vcWJ1ZmZlci90c3RfcWJ1ZmZlci5jcHAKK2luZGV4IDQ5Njg3NDIxMTAuLmY0YzNmYjcx MWQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3FidWZmZXIvdHN0 X3FidWZmZXIuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3FidWZmZXIv dHN0X3FidWZmZXIuY3BwCitAQCAtNDIsNiArNDIsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2 b2lkIHdyaXRlQmxvY2tfZGF0YSgpOworICAgICB2b2lkIHdyaXRlQmxvY2soKTsKKyAgICAgdm9p ZCBzZWVrKCk7CisrICAgIHZvaWQgaW52YWxpZFNlZWtzKCk7CisgICAgIHZvaWQgc2Vla1Rlc3Rf ZGF0YSgpOworICAgICB2b2lkIHNlZWtUZXN0KCk7CisgICAgIHZvaWQgcmVhZF9yYXdkYXRhKCk7 CitAQCAtMjg2LDYgKzI4NywyOSBAQCB2b2lkIHRzdF9RQnVmZmVyOjpzZWVrKCkKKyAgICAgUUNP TVBBUkUoYnVmZmVyLnNpemUoKSwgcG9zKTsKKyB9CisgCisrdm9pZCB0c3RfUUJ1ZmZlcjo6aW52 YWxpZFNlZWtzKCkKKyt7CisrICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKHFzaXpldHlwZSkgPT0g c2l6ZW9mKHFpbnQ2NCkpIHsKKysgICAgICAgIC8vIHNpemVvZihxc2l6ZXR5cGUpID09IHNpemVv ZihxaW50NjQpLCBzbyArMSB3b3VsZCBvdmVyZmxvdworKyAgICAgICAgUVNLSVAoIlRoaXMgaXMg YSAzMi1iaXQtb25seSB0ZXN0LiIpOworKyAgICB9IGVsc2UgeworKyAgICAgICAgUUJ1ZmZlciBi dWZmZXI7CisrICAgICAgICBidWZmZXIub3BlbihRSU9EZXZpY2U6OldyaXRlT25seSk7CisrICAg ICAgICBRQ09NUEFSRShidWZmZXIuYnVmZmVyKCkuc2l6ZSgpLCBxc2l6ZXR5cGUoMCkpOworKyAg ICAgICAgUUNPTVBBUkUoYnVmZmVyLnBvcygpLCBxaW50NjQoMCkpOworKyAgICAgICAgY29uc3Rl eHByIHFpbnQ2NCBNYXhRQnl0ZUFycmF5Q2FwYWNpdHkgPSAoc3RkOjpudW1lcmljX2xpbWl0czxx c2l6ZXR5cGU+OjptYXgpKCk7CisrICAgICAgICAvLyB0aGlzIHNob3VsZCBmYWlsIGZhc3QsIG5v dCBhZnRlciB0cnlpbmcgdG8gYWxsb2NhdGUgbmVhcmx5IDIgR2lCIG9mIGRhdGEsCisrICAgICAg ICAvLyBwb3RlbnRpYWxseSBjcmFzaGluZyBpbiB0aGUgcHJvY2VzczoKKysgICAgICAgIFFWRVJJ RlkoIWJ1ZmZlci5zZWVrKDIgKiBNYXhRQnl0ZUFycmF5Q2FwYWNpdHkgLSAxKSk7CisrICAgICAg ICBRQ09NUEFSRShidWZmZXIuYnVmZmVyKCkuc2l6ZSgpLCBxc2l6ZXR5cGUoMCkpOworKyAgICAg ICAgUUNPTVBBUkUoYnVmZmVyLnBvcygpLCBxaW50NjQoMCkpOworKyAgICAgICAgLy8gZGl0dG86 CisrICAgICAgICBRVkVSSUZZKCFidWZmZXIuc2VlayhNYXhRQnl0ZUFycmF5Q2FwYWNpdHkgKyAx KSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIuYnVmZmVyKCkuc2l6ZSgpLCBxc2l6ZXR5cGUo MCkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLnBvcygpLCBxaW50NjQoMCkpOworKyAgICB9 CisrfQorKworIHZvaWQgdHN0X1FCdWZmZXI6OnNlZWtUZXN0X2RhdGEoKQorIHsKKyAgICAgd3Jp dGVCbG9ja19kYXRhKCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9p by9xaW9kZXZpY2UvdHN0X3Fpb2RldmljZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGli L2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNwcAoraW5kZXggZGE1MzI3NTk0Yy4uNGEwNGUw ZjdjNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWlvZGV2aWNl L3RzdF9xaW9kZXZpY2UuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fp b2RldmljZS90c3RfcWlvZGV2aWNlLmNwcAorQEAgLTU2MSw3ICs1NjEsOCBAQCBwcm90ZWN0ZWQ6 CisgICAgIHFpbnQ2NCByZWFkRGF0YShjaGFyICpkYXRhLCBxaW50NjQgbWF4U2l6ZSkgb3ZlcnJp ZGUKKyAgICAgeworICAgICAgICAgbWF4U2l6ZSA9IHFNaW4obWF4U2l6ZSwgcWludDY0KGJ1Zi0+ c2l6ZSgpIC0gb2Zmc2V0KSk7CistICAgICAgICBtZW1jcHkoZGF0YSwgYnVmLT5jb25zdERhdGEo KSArIG9mZnNldCwgbWF4U2l6ZSk7CisrICAgICAgICBpZiAobWF4U2l6ZSA+IDApCisrICAgICAg ICAgICAgbWVtY3B5KGRhdGEsIGJ1Zi0+Y29uc3REYXRhKCkgKyBvZmZzZXQsIG1heFNpemUpOwor ICAgICAgICAgb2Zmc2V0ICs9IG1heFNpemU7CisgICAgICAgICByZXR1cm4gbWF4U2l6ZTsKKyAg ICAgfQorQEAgLTYwNCwxMyArNjA1LDE1IEBAIHByb3RlY3RlZDoKKyAgICAgcWludDY0IHJlYWRE YXRhKGNoYXIgKmRhdGEsIHFpbnQ2NCBtYXhTaXplKSBvdmVycmlkZQorICAgICB7CisgICAgICAg ICBtYXhTaXplID0gcU1pbihtYXhTaXplLCBxaW50NjQoYnVmLnNpemUoKSAtIHBvcygpKSk7Cist ICAgICAgICBtZW1jcHkoZGF0YSwgYnVmLmNvbnN0RGF0YSgpICsgcG9zKCksIG1heFNpemUpOwor KyAgICAgICAgaWYgKG1heFNpemUgPiAwKQorKyAgICAgICAgICAgIG1lbWNweShkYXRhLCBidWYu Y29uc3REYXRhKCkgKyBwb3MoKSwgbWF4U2l6ZSk7CisgICAgICAgICByZXR1cm4gbWF4U2l6ZTsK KyAgICAgfQorICAgICBxaW50NjQgd3JpdGVEYXRhKGNvbnN0IGNoYXIgKmRhdGEsIHFpbnQ2NCBt YXhTaXplKSBvdmVycmlkZQorICAgICB7CisgICAgICAgICBtYXhTaXplID0gcU1pbihtYXhTaXpl LCBxaW50NjQoYnVmLnNpemUoKSAtIHBvcygpKSk7CistICAgICAgICBtZW1jcHkoYnVmLmRhdGEo KSArIHBvcygpLCBkYXRhLCBtYXhTaXplKTsKKysgICAgICAgIGlmIChtYXhTaXplID4gMCkKKysg ICAgICAgICAgICBtZW1jcHkoYnVmLmRhdGEoKSArIHBvcygpLCBkYXRhLCBtYXhTaXplKTsKKyAg ICAgICAgIHJldHVybiBtYXhTaXplOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3RfcXByb2Nlc3MuY3BwIGIvcXRiYXNlL3Rl c3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3RfcXByb2Nlc3MuY3BwCitpbmRleCBkYjYw YmVhZDY0Li5mMzQ1YTQ0NDE0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxp Yi9pby9xcHJvY2Vzcy90c3RfcXByb2Nlc3MuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9j b3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAKK0BAIC0xLDcgKzEsOCBAQAorIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKioKKyAqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENv bXBhbnkgTHRkLgorLSoqIENvcHlyaWdodCAoQykgMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbi4KKysq KiBDb3B5cmlnaHQgKEMpIDIwMjAgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAo QykgMjAyMiBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5p by9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGVzdCBzdWl0 ZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC0xNTAsNiArMTUxLDggQEAgcHJpdmF0ZSBzbG90czoK KyAgICAgdm9pZCBzdGFydFN0b3BTdGFydFN0b3BCdWZmZXJzKCk7CisgICAgIHZvaWQgcHJvY2Vz c0V2ZW50c0luQVJlYWR5UmVhZFNsb3RfZGF0YSgpOworICAgICB2b2lkIHByb2Nlc3NFdmVudHNJ bkFSZWFkeVJlYWRTbG90KCk7CisrICAgIHZvaWQgc3RhcnRGcm9tQ3VycmVudFdvcmtpbmdEaXJf ZGF0YSgpOworKyAgICB2b2lkIHN0YXJ0RnJvbUN1cnJlbnRXb3JraW5nRGlyKCk7CisgCisgICAg IC8vIGtlZXAgdGhlc2UgYXQgdGhlIGVuZCwgc2luY2UgdGhleSB1c2UgbG90cyBvZiBwcm9jZXNz ZXMgYW5kIHNvbWV0aW1lcworICAgICAvLyBjYXVzZWQgb2JzY3VyZSBmYWlsdXJlcyB0byBvY2N1 ciBpbiB0ZXN0cyB0aGF0IGZvbGxvd2VkIHRoZW0gKGVzcC4gb24gdGhlIE1hYykKK0BAIC0yNzMx LDUgKzI3MzQsOTQgQEAgdm9pZCB0c3RfUVByb2Nlc3M6OmZpbmlzaFByb2Nlc3NCZWZvcmVSZWFk aW5nRG9uZV9kZXByZWNhdGVkKCkKKyAKKyAjZW5kaWYKKyAKKytlbnVtIGNsYXNzIENoZGlyTW9k ZSB7CisrICAgIE5vbmUgPSAwLAorKyAgICBJblBhcmVudCwKKysgICAgSW5DaGlsZAorK307Cisr UV9ERUNMQVJFX01FVEFUWVBFKENoZGlyTW9kZSkKKysKKyt2b2lkIHRzdF9RUHJvY2Vzczo6c3Rh cnRGcm9tQ3VycmVudFdvcmtpbmdEaXJfZGF0YSgpCisreworKyAgICBxUmVnaXN0ZXJNZXRhVHlw ZTxDaGRpck1vZGU+KCk7CisrICAgIFFUZXN0OjphZGRDb2x1bW48UVN0cmluZz4oInByb2dyYW1Q cmVmaXgiKTsKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxDaGRpck1vZGU+KCJjaGRpck1vZGUiKTsK KysgICAgUVRlc3Q6OmFkZENvbHVtbjxib29sPigic3VjY2VzcyIpOworKworKyAgICBjb25zdGV4 cHIgYm9vbCBJc1dpbmRvd3MgPSB0cnVlCisrI2lmZGVmIFFfT1NfVU5JWAorKyAgICAgICAgICAg ICYmIGZhbHNlCisrI2VuZGlmCisrICAgICAgICAgICAgOworKworKyAgICAvLyBiYXNlbGluZTog dHJ5aW5nIHRvIGV4ZWN1dGUgdGhlIGRpcmVjdG9yeSwgdGhpcyBjYW4ndCBwb3NzaWJseSBzdWNj ZWVkIQorKyAgICBRVGVzdDo6bmV3Um93KCJwbGFpbi1zYW1lLWN3ZCIpIDw8IFFTdHJpbmcoKSA8 PCBDaGRpck1vZGU6Ok5vbmUgPDwgZmFsc2U7CisrCisrICAgIC8vIGNyb3NzLXBsYXRmb3JtIGJl aGF2aW9yOiBuZWl0aGVyIE9TIHNlYXJjaGVzIHRoZSBzZXRXb3JraW5nRGlyZWN0b3J5KCkKKysg ICAgLy8gZGlyIHdpdGhvdXQgIi4vIgorKyAgICBRVGVzdDo6bmV3Um93KCJwbGFpbi1jaGlsZC1j aGRpciIpIDw8IFFTdHJpbmcoKSA8PCBDaGRpck1vZGU6OkluQ2hpbGQgPDwgZmFsc2U7CisrCisr ICAgIC8vIGNyb3NzLXBsYXRmb3JtIGJlaGF2aW9yOiBib3RoIE9TZXMgc2VhcmNoIHRoZSBwYXJl bnQncyBDV0Qgd2l0aCAiLi8iCisrICAgIFFUZXN0OjpuZXdSb3coInByZWZpeGVkLXBhcmVudC1j aGRpciIpIDw8ICIuLyIgPDwgQ2hkaXJNb2RlOjpJblBhcmVudCA8PCB0cnVlOworKworKyAgICAv LyBvcHBvc2l0ZSBiZWhhdmlvcnM6IFdpbmRvd3Mgc2VhcmNoZXMgdGhlIHBhcmVudCdzIENXRCBh bmQgVW5peCBzZWFyY2hlcworKyAgICAvLyB0aGUgY2hpbGQncyB3aXRoICIuLyIKKysgICAgUVRl c3Q6Om5ld1JvdygicHJlZml4ZWQtY2hpbGQtY2hkaXIiKSA8PCAiLi8iIDw8IENoZGlyTW9kZTo6 SW5DaGlsZCA8PCAhSXNXaW5kb3dzOworKworKyAgICAvLyBXaW5kb3dzIHNlYXJjaGVzIHRoZSBw YXJlbnQncyBDV0Qgd2l0aG91dCAiLi8iCisrICAgIFFUZXN0OjpuZXdSb3coInBsYWluLXBhcmVu dC1jaGRpciIpIDw8IFFTdHJpbmcoKSA8PCBDaGRpck1vZGU6OkluUGFyZW50IDw8IElzV2luZG93 czsKKyt9CisrCisrdm9pZCB0c3RfUVByb2Nlc3M6OnN0YXJ0RnJvbUN1cnJlbnRXb3JraW5nRGly KCkKKyt7CisrICAgIFFGRVRDSChRU3RyaW5nLCBwcm9ncmFtUHJlZml4KTsKKysgICAgUUZFVENI KENoZGlyTW9kZSwgY2hkaXJNb2RlKTsKKysgICAgUUZFVENIKGJvb2wsIHN1Y2Nlc3MpOworKwor KyAgICBRUHJvY2VzcyBwcm9jZXNzOworKyAgICBxUmVnaXN0ZXJNZXRhVHlwZTxRUHJvY2Vzczo6 UHJvY2Vzc0Vycm9yPigpOworKyAgICBRU2lnbmFsU3B5IGVycm9yU3B5KCZwcm9jZXNzLCAmUVBy b2Nlc3M6OmVycm9yT2NjdXJyZWQpOworKyAgICBRVkVSSUZZKGVycm9yU3B5LmlzVmFsaWQoKSk7 CisrCisrICAgIC8vIGJvdGggdGhlIGRpciBuYW1lIGFuZCB0aGUgZXhlY3V0YWJsZSBuYW1lCisr ICAgIGNvbnN0IFFTdHJpbmcgdGFyZ2V0ID0gUVN0cmluZ0xpdGVyYWwoInRlc3RQcm9jZXNzTm9y bWFsIik7CisrICAgIHByb2Nlc3Muc2V0UHJvZ3JhbShwcm9ncmFtUHJlZml4ICsgdGFyZ2V0KTsK KysKKysjaWZkZWYgUV9PU19VTklYCisrICAgIC8vIFJlc2V0IFBBVEgsIHRvIGJlIHN1cmUgaXQg ZG9lc24ndCBjb250YWluIC4gb3IgdGhlIGVtcHR5IHBhdGguCisrICAgIC8vIFdlIGNhbid0IGRv IHRoaXMgb24gV2luZG93cyBiZWNhdXNlIERMTHMgYXJlIHNlYXJjaGVkIGluIFBBVEgKKysgICAg Ly8gYW5kIFdpbmRvd3MgYWx3YXlzIHNlYXJjaGVzICIuIiBhbnl3YXkuCisrICAgIGF1dG8gcmVz dG9yZUVudiA9IHFTY29wZUd1YXJkKFtvbGQgPSBxZ2V0ZW52KCJQQVRIIildIHsKKysgICAgICAg IHFwdXRlbnYoIlBBVEgiLCBvbGQpOworKyAgICB9KTsKKysgICAgcXB1dGVudigiUEFUSCIsICIv Iik7CisrI2VuZGlmCisrCisrICAgIHN3aXRjaCAoY2hkaXJNb2RlKSB7CisrICAgIGNhc2UgQ2hk aXJNb2RlOjpJblBhcmVudDogeworKyAgICAgICAgYXV0byByZXN0b3JlQ3dkID0gcVNjb3BlR3Vh cmQoW29sZCA9IFFEaXI6OmN1cnJlbnRQYXRoKCldIHsKKysgICAgICAgICAgICBRRGlyOjpzZXRD dXJyZW50KG9sZCk7CisrICAgICAgICB9KTsKKysgICAgICAgIFFWRVJJRlkoUURpcjo6c2V0Q3Vy cmVudCh0YXJnZXQpKTsKKysgICAgICAgIHByb2Nlc3Muc3RhcnQoKTsKKysgICAgICAgIGJyZWFr OworKyAgICB9CisrICAgIGNhc2UgQ2hkaXJNb2RlOjpJbkNoaWxkOgorKyAgICAgICAgcHJvY2Vz cy5zZXRXb3JraW5nRGlyZWN0b3J5KHRhcmdldCk7CisrICAgICAgICBRX0ZBTExUSFJPVUdIKCk7 CisrICAgIGNhc2UgQ2hkaXJNb2RlOjpOb25lOgorKyAgICAgICAgcHJvY2Vzcy5zdGFydCgpOwor KyAgICAgICAgYnJlYWs7CisrICAgIH0KKysKKysgICAgUUNPTVBBUkUocHJvY2Vzcy53YWl0Rm9y U3RhcnRlZCgpLCBzdWNjZXNzKTsKKysgICAgUUNPTVBBUkUoZXJyb3JTcHkuY291bnQoKSwgaW50 KCFzdWNjZXNzKSk7CisrICAgIGlmIChzdWNjZXNzKSB7CisrICAgICAgICBRVkVSSUZZKHByb2Nl c3Mud2FpdEZvckZpbmlzaGVkKCkpOworKyAgICB9IGVsc2UgeworKyAgICAgICAgUUNPTVBBUkUo cHJvY2Vzcy5lcnJvcigpLCBRUHJvY2Vzczo6RmFpbGVkVG9TdGFydCk7CisrICAgIH0KKyt9Cisr CisgUVRFU1RfTUFJTih0c3RfUVByb2Nlc3MpCisgI2luY2x1ZGUgInRzdF9xcHJvY2Vzcy5tb2Mi CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pdGVtbW9kZWxzL3Fjb25j YXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwu Y3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pdGVtbW9kZWxzL3Fjb25jYXRlbmF0ZXRh Ymxlc3Byb3h5bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwuY3BwCitpbmRl eCBlMWVhN2E0NTUyLi45MDk3MmNhYTU3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8v Y29yZWxpYi9pdGVtbW9kZWxzL3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwvdHN0X3Fjb25j YXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3Jl bGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC90c3RfcWNvbmNhdGVu YXRldGFibGVzcHJveHltb2RlbC5jcHAKK0BAIC0xMTcsNiArMTE3LDcgQEAgcHJpdmF0ZSBRX1NM T1RTOgorICAgICB2b2lkIHNob3VsZFByb3BhZ2F0ZURyb3BBZnRlckxhc3RSb3dfZGF0YSgpOwor ICAgICB2b2lkIHNob3VsZFByb3BhZ2F0ZURyb3BBZnRlckxhc3RSb3coKTsKKyAgICAgdm9pZCBx dGJ1ZzkxNzg4KCk7CisrICAgIHZvaWQgcXRidWc5MTg3OCgpOworIAorIHByaXZhdGU6CisgICAg IFFTdGFuZGFyZEl0ZW1Nb2RlbCBtb2Q7CitAQCAtODQzLDYgKzg0NCwyMiBAQCB2b2lkIHRzdF9R Q29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsOjpxdGJ1ZzkxNzg4KCkKKyAgICAgUUNPTVBBUkUo cHJveHlDb25jYXQuY29sdW1uQ291bnQoKSwgMCk7CisgfQorIAorK3ZvaWQgdHN0X1FDb25jYXRl bmF0ZVRhYmxlc1Byb3h5TW9kZWw6OnF0YnVnOTE4NzgoKQorK3sKKysgICAgUVN0YW5kYXJkSXRl bU1vZGVsIG07CisrICAgIG0uc2V0Um93Q291bnQoNCk7CisrICAgIG0uc2V0Q29sdW1uQ291bnQo NCk7CisrCisrICAgIFFDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWwgcG07CisrICAgIFFTb3J0 RmlsdGVyUHJveHlNb2RlbCBwcm94eUZpbHRlcjsKKysgICAgcHJveHlGaWx0ZXIuc2V0U291cmNl TW9kZWwoJnBtKTsKKysgICAgcHJveHlGaWx0ZXIuc2V0RmlsdGVyRml4ZWRTdHJpbmcoInNvbWV0 aGluZyIpOworKyAgICBwbS5hZGRTb3VyY2VNb2RlbCgmbSk7ICAvLyBUaGlzIHNob3VsZCBub3Qg YXNzZXJ0CisrCisrICAgIFFDT01QQVJFKHBtLmNvbHVtbkNvdW50KCksIDQpOworKyAgICBRQ09N UEFSRShwbS5yb3dDb3VudCgpLCA0KTsKKyt9CisrCisgUVRFU1RfR1VJTEVTU19NQUlOKHRzdF9R Q29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsKQorIAorICNpbmNsdWRlICJ0c3RfcWNvbmNhdGVu YXRldGFibGVzcHJveHltb2RlbC5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8v Y29yZWxpYi9rZXJuZWwvcW9iamVjdC90c3RfcW9iamVjdC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0LmNwcAoraW5kZXggOWJkNjZjMDgz NS4uZWQ0YTBiYWU1ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIva2Vy bmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3Jl bGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0LmNwcAorQEAgLTE1OCw2ICsxNTgsNyBAQCBw cml2YXRlIHNsb3RzOgorICAgICB2b2lkIG51bGxSZWNlaXZlcigpOworICAgICB2b2lkIGZ1bmN0 b3JSZWZlcmVuY2VzQ29ubmVjdGlvbigpOworICAgICB2b2lkIGRpc2Nvbm5lY3REaXNjb25uZWN0 cygpOworKyAgICB2b2lkIGRlY2xhcmF0aXZlRGF0YSgpOworIH07CisgCisgc3RydWN0IFFPYmpl Y3RDcmVhdGVkT25TaHV0ZG93bgorQEAgLTc2NzksNSArNzY4MCw4MSBAQCB2b2lkIHRzdF9RT2Jq ZWN0OjpkaXNjb25uZWN0RGlzY29ubmVjdHMoKQorIFFfU1RBVElDX0FTU0VSVChRdFByaXZhdGU6 Okhhc1FfT0JKRUNUX01hY3JvPHRzdF9RT2JqZWN0Pjo6VmFsdWUpOworIFFfU1RBVElDX0FTU0VS VCghUXRQcml2YXRlOjpIYXNRX09CSkVDVF9NYWNybzxTaWJsaW5nRGVsZXRlcj46OlZhbHVlKTsK KyAKKysjaWZkZWYgUVRfQlVJTERfSU5URVJOQUwKKysvKgorKyAgICBTaW5jZSBRT2JqZWN0UHJp dmF0ZSBzdG9yZXMgdGhlIGRlY2xhcmF0aXZlRGF0YSBwb2ludGVyIGluIGEgdW5pb24gd2l0aCB0 aGUgcG9pbnRlcgorKyAgICB0byB0aGUgY3VycmVudGx5IGRlc3Ryb3llZCBjaGlsZCwgY2FsbHMg dG8gdGhlIFF0RGVjbGFyYXRpdmUgaGFuZGxlcnMgbmVlZCB0byBiZQorKyAgICBjb3JyZWN0bHkg Z3VhcmRlZC4gUVRCVUctMTA1Mjg2CisrKi8KKytuYW1lc3BhY2UgUXREZWNsYXJhdGl2ZSB7Cisr c3RhdGljIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqdGhlRGF0YTsKKysKKytzdGF0aWMgdm9p ZCBkZXN0cm95ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICpkYXRhLCBRT2JqZWN0ICopCisr eworKyAgICBRQ09NUEFSRShkYXRhLCB0aGVEYXRhKTsKKyt9Cisrc3RhdGljIHZvaWQgc2lnbmFs RW1pdHRlZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKmRhdGEsIFFPYmplY3QgKiwgaW50LCB2 b2lkICoqKQorK3sKKysgICAgUUNPTVBBUkUoZGF0YSwgdGhlRGF0YSk7CisrfQorKy8vIHdlIGNh bid0IHVzZSBRQ09NUEFSRSBpbiB0aGUgbmV4dCB0d28gZnVuY3Rpb25zLCBhcyB0aGV5IGRvbid0 IHJldHVybiB2b2lkCisrc3RhdGljIGludCByZWNlaXZlcnMoUUFic3RyYWN0RGVjbGFyYXRpdmVE YXRhICpkYXRhLCBjb25zdCBRT2JqZWN0ICosIGludCkKKyt7CisrICAgIFFUZXN0OjpxQ29tcGFy ZShkYXRhLCB0aGVEYXRhLCAiZGF0YSIsICJ0aGVEYXRhIiwgX19GSUxFX18sIF9fTElORV9fKTsK KysgICAgcmV0dXJuIDA7CisrfQorK3N0YXRpYyBib29sIGlzU2lnbmFsQ29ubmVjdGVkKFFBYnN0 cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgY29uc3QgUU9iamVjdCAqLCBpbnQpCisreworKyAg ICBRVGVzdDo6cUNvbXBhcmUoZGF0YSwgdGhlRGF0YSwgImRhdGEiLCAidGhlRGF0YSIsIF9fRklM RV9fLCBfX0xJTkVfXyk7CisrICAgIHJldHVybiB0cnVlOworK30KKysKKytjbGFzcyBPYmplY3Qg OiBwdWJsaWMgUU9iamVjdAorK3sKKysgICAgUV9PQkpFQ1QKKytwdWJsaWM6CisrICAgIHVzaW5n IFFPYmplY3Q6OlFPYmplY3Q7CisrICAgIH5PYmplY3QoKQorKyAgICB7CisrICAgICAgICBpZiAo T2JqZWN0ICpwID0gc3RhdGljX2Nhc3Q8T2JqZWN0ICo+KHBhcmVudCgpKSkKKysgICAgICAgICAg ICBwLT5lbWl0U2lnbmFsKCk7CisrICAgIH0KKysKKysgICAgdm9pZCBlbWl0U2lnbmFsKCkKKysg ICAgeworKyAgICAgICAgZW1pdCB0aGVTaWduYWwoKTsKKysgICAgfQorKworK3NpZ25hbHM6Cisr ICAgIHZvaWQgdGhlU2lnbmFsKCk7CisrfTsKKysKKyt9CisrI2VuZGlmCisrCisrdm9pZCB0c3Rf UU9iamVjdDo6ZGVjbGFyYXRpdmVEYXRhKCkKKyt7CisrI2lmZGVmIFFUX0JVSUxEX0lOVEVSTkFM CisrICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNrIGRlc3Ryb3llZChRQWJzdHJhY3REZWNsYXJhdGl2 ZURhdGE6OmRlc3Ryb3llZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0 RGVjbGFyYXRpdmU6OmRlc3Ryb3llZCk7CisrICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNrIHNpZ25h bEVtaXR0ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpzaWduYWxFbWl0dGVkLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0RGVjbGFyYXRpdmU6OnNpZ25hbEVt aXR0ZWQpOworKyAgICBRU2NvcGVkVmFsdWVSb2xsYmFjayByZWNlaXZlcnMoUUFic3RyYWN0RGVj bGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRdERlY2xhcmF0aXZlOjpyZWNlaXZlcnMpOworKyAgICBRU2NvcGVkVmFsdWVSb2xsYmFj ayBpc1NpZ25hbENvbm5lY3RlZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmlzU2lnbmFsQ29u bmVjdGVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdERl Y2xhcmF0aXZlOjppc1NpZ25hbENvbm5lY3RlZCk7CisrCisrICAgIFF0RGVjbGFyYXRpdmU6Ok9i amVjdCBwOworKyAgICBRT2JqZWN0UHJpdmF0ZSAqcHJpdiA9IFFPYmplY3RQcml2YXRlOjpnZXQo JnApOworKyAgICBwcml2LT5kZWNsYXJhdGl2ZURhdGEgPSBRdERlY2xhcmF0aXZlOjp0aGVEYXRh ID0gbmV3IFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTsKKysKKysgICAgY29ubmVjdCgmcCwgJlF0 RGVjbGFyYXRpdmU6Ok9iamVjdDo6dGhlU2lnbmFsLCAmcCwgW117CisrICAgIH0pOworKworKyAg ICBRdERlY2xhcmF0aXZlOjpPYmplY3QgKmNoaWxkID0gbmV3IFF0RGVjbGFyYXRpdmU6Ok9iamVj dDsKKysgICAgY2hpbGQtPnNldFBhcmVudCgmcCk7CisrI2VuZGlmCisrfQorKworIFFURVNUX01B SU4odHN0X1FPYmplY3QpCisgI2luY2x1ZGUgInRzdF9xb2JqZWN0Lm1vYyIKK2RpZmYgLS1naXQg YS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlL3RzdF9x bWltZWRhdGFiYXNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVzL3Ft aW1lZGF0YWJhc2UvdHN0X3FtaW1lZGF0YWJhc2UuY3BwCitpbmRleCAwZWE0MjJlY2JjLi4xYTMy NTY1MzRiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9taW1ldHlwZXMv cW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9h dXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UvdHN0X3FtaW1lZGF0YWJhc2UuY3Bw CitAQCAtNzAsMTUgKzcwLDE1IEBAIHN0YXRpYyBpbmxpbmUgUVN0cmluZyB0ZXN0U3VpdGVXYXJu aW5nKCkKKyAKKyAgICAgUVN0cmluZyByZXN1bHQ7CisgICAgIFFUZXh0U3RyZWFtIHN0cigmcmVz dWx0KTsKKy0gICAgc3RyIDw8ICJcbkNhbm5vdCBmaW5kIHRoZSBzaGFyZWQtbWltZS1pbmZvIHRl c3Qgc3VpdGVcbnN0YXJ0aW5nIGZyb206ICIKKysgICAgc3RyIDw8ICJcbkNhbm5vdCBmaW5kIHRo ZSBzaGFyZWQtbWltZS1pbmZvIHRlc3Qgc3VpdGVcbmluIHRoZSBwYXJlbnQgb2Y6ICIKKyAgICAg ICAgIDw8IFFEaXI6OnRvTmF0aXZlU2VwYXJhdG9ycyhRRGlyOjpjdXJyZW50UGF0aCgpKSA8PCAi XG4iCisgICAgICAgICAgICAiY2QgIiA8PCBRRGlyOjp0b05hdGl2ZVNlcGFyYXRvcnMoUVN0cmlu Z0xpdGVyYWwoInRlc3RzL2F1dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZSIpKSA8 PCAiXG4iCistICAgICAgICAgICAid2dldCBodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcveGRn L3NoYXJlZC1taW1lLWluZm8vc25hcHNob3QvUmVsZWFzZS0xLTEwLnppcFxuIgorLSAgICAgICAg ICAgInVuemlwIFJlbGVhc2UtMS0xMC56aXBcbiI7CisrICAgICAgICAgICAid2dldCBodHRwczov L2dpdGxhYi5mcmVlZGVza3RvcC5vcmcveGRnL3NoYXJlZC1taW1lLWluZm8vLS9hcmNoaXZlLzIu MS9zaGFyZWQtbWltZS1pbmZvLTIuMS56aXBcbiIKKysgICAgICAgICAgICJ1bnppcCBzaGFyZWQt bWltZS1pbmZvLTIuMS56aXBcbiI7CisgI2lmZGVmIFFfT1NfV0lOCistICAgIHN0ciA8PCAibWtk aXIgdGVzdGZpbGVzXG54Y29weSAvcyBSZWxlYXNlLTEtMTAgcy1tLWlcbiI7CisrICAgIHN0ciA8 PCAibWtkaXIgdGVzdGZpbGVzXG54Y29weSAvcyBzaGFyZWQtbWltZS1pbmZvLTIuMSBzLW0taVxu IjsKKyAjZWxzZQorLSAgICBzdHIgPDwgImxuIC1zIFJlbGVhc2UtMS0xMCBzLW0taVxuIjsKKysg ICAgc3RyIDw8ICJsbiAtcyBzaGFyZWQtbWltZS1pbmZvLTIuMSBzLW0taVxuIjsKKyAjZW5kaWYK KyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CitAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgdHN0X1FN aW1lRGF0YWJhc2U6OmluaXRUZXN0Q2FzZSgpCisgICAgIFFWRVJJRlkyKGNvcHlSZXNvdXJjZUZp bGUoeG1sRmlsZU5hbWUsIHhtbFRhcmdldEZpbGVOYW1lLCAmZXJyb3JNZXNzYWdlKSwgcVByaW50 YWJsZShlcnJvck1lc3NhZ2UpKTsKKyAjZW5kaWYKKyAKKy0gICAgbV90ZXN0U3VpdGUgPSBRRklO RFRFU1REQVRBKCJzLW0taS90ZXN0cyIpOworKyAgICBtX3Rlc3RTdWl0ZSA9IFFGSU5EVEVTVERB VEEoInMtbS1pL3Rlc3RzL21pbWUtZGV0ZWN0aW9uIik7CisgICAgIGlmIChtX3Rlc3RTdWl0ZS5p c0VtcHR5KCkpCisgICAgICAgICBxV2FybmluZygiJXMiLCBxUHJpbnRhYmxlKHRlc3RTdWl0ZVdh cm5pbmcoKSkpOworIAorQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIHRzdF9RTWltZURhdGFiYXNl OjphbGxNaW1lVHlwZXMoKQorICAgICBRVkVSSUZZKCFsc3QuaXNFbXB0eSgpKTsKKyAKKyAgICAg Ly8gSGFyZGNvZGluZyB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBjaGVjayBib3RoIHByb3ZpZGVy cyBmaW5kIHRoZSBzYW1lIG51bWJlciBvZiBtaW1ldHlwZXMuCistICAgIFFDT01QQVJFKGxzdC5j b3VudCgpLCA3NzkpOworKyAgICBRQ09NUEFSRShsc3QuY291bnQoKSwgODExKTsKKyAKKyAgICAg Zm9yZWFjaCAoY29uc3QgUU1pbWVUeXBlICZtaW1lLCBsc3QpIHsKKyAgICAgICAgIGNvbnN0IFFT dHJpbmcgbmFtZSA9IG1pbWUubmFtZSgpOworQEAgLTYzMSwxMCArNjMxLDkgQEAgdm9pZCB0c3Rf UU1pbWVEYXRhYmFzZTo6c3VmZml4ZXNfZGF0YSgpCisgCisgICAgIFFUZXN0OjpuZXdSb3coIm1p bWV0eXBlIHdpdGggYSBzaW5nbGUgcGF0dGVybiIpIDw8ICJhcHBsaWNhdGlvbi9wZGYiIDw8ICIq LnBkZiIgPDwgInBkZiI7CisgICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggbXVsdGlw bGUgcGF0dGVybnMiKSA8PCAiYXBwbGljYXRpb24veC1rcHJlc2VudGVyIiA8PCAiKi5rcHI7Ki5r cHQiIDw8ICJrcHIiOworLSAgICBRVGVzdDo6bmV3Um93KCJqcGVnIikgPDwgImltYWdlL2pwZWci IDw8ICIqLmpwZTsqLmpwZzsqLmpwZWciIDw8ICJqcGVnIjsKKy0gICAgLy9pZiAoS01pbWVUeXBl OjpzaGFyZWRNaW1lSW5mb1ZlcnNpb24oKSA+IEtERV9NQUtFX1ZFUlNJT04oMCwgNjAsIDApKSB7 CistICAgICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIG1hbnkgcGF0dGVybnMiKSA8 PCAiYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0IiA8PCAiKi53cDsqLndwNDsqLndwNTsqLndw NjsqLndwZDsqLndwcCIgPDwgIndwIjsKKy0gICAgLy99CisrICAgIC8vIFRoZSBwcmVmZXJyZWQg c3VmZml4IGZvciBpbWFnZS9qcGVnIGlzICouanBnLCBhcyBwZXIgaHR0cHM6Ly9idWdzLmtkZS5v cmcvc2hvd19idWcuY2dpP2lkPTE3NjczNworKyAgICBRVGVzdDo6bmV3Um93KCJqcGVnIikgPDwg ImltYWdlL2pwZWciIDw8ICIqLmpwZTsqLmpwZzsqLmpwZWciIDw8ICJqcGciOworKyAgICBRVGVz dDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIG1hbnkgcGF0dGVybnMiKSA8PCAiYXBwbGljYXRpb24v dm5kLndvcmRwZXJmZWN0IiA8PCAiKi53cDsqLndwNDsqLndwNTsqLndwNjsqLndwZDsqLndwcCIg PDwgIndwIjsKKyAgICAgUVRlc3Q6Om5ld1Jvdygib2FzaXMgdGV4dCBtaW1ldHlwZSIpIDw8ICJh cHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQiIDw8ICIqLm9kdCIgPDwgIm9k dCI7CisgICAgIFFUZXN0OjpuZXdSb3coIm9hc2lzIHByZXNlbnRhdGlvbiBtaW1ldHlwZSIpIDw8 ICJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRhdGlvbiIgPDwgIiou b2RwIiA8PCAib2RwIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygibWltZXR5cGUgd2l0aCBtdWx0aXBs ZSBwYXR0ZXJucyIpIDw8ICJ0ZXh0L3BsYWluIiA8PCAiKi5hc2M7Ki50eHQ7Kix2IiA8PCAidHh0 IjsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3NlcmlhbGl6YXRpb24v anNvbi90c3RfcXRqc29uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvc2VyaWFsaXph dGlvbi9qc29uL3RzdF9xdGpzb24uY3BwCitpbmRleCAzZTU4ZGQwM2NjLi5jOGY4MmVmNWQ1IDEw MDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9zZXJpYWxpemF0aW9uL2pzb24v dHN0X3F0anNvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvc2VyaWFsaXph dGlvbi9qc29uL3RzdF9xdGpzb24uY3BwCitAQCAtMTc2LDYgKzE3Niw4IEBAIHByaXZhdGUgUV9T TE9UUzoKKyAgICAgdm9pZCBmcm9tVG9WYXJpYW50Q29udmVyc2lvbnNfZGF0YSgpOworICAgICB2 b2lkIGZyb21Ub1ZhcmlhbnRDb252ZXJzaW9ucygpOworIAorKyAgICB2b2lkIG5vTGVha09uTmFt ZUNsYXNoKCk7CisrCisgcHJpdmF0ZToKKyAgICAgUVN0cmluZyB0ZXN0RGF0YURpcjsKKyB9Owor QEAgLTM2ODUsNSArMzY4NywyMyBAQCB2b2lkIHRzdF9RdEpzb246OmZyb21Ub1ZhcmlhbnRDb252 ZXJzaW9ucygpCisgICAgIH0KKyB9CisgCisrdm9pZCB0c3RfUXRKc29uOjpub0xlYWtPbk5hbWVD bGFzaCgpCisreworKyAgICBRSnNvbkRvY3VtZW50IGRvYyA9IFFKc29uRG9jdW1lbnQ6OmZyb21K c29uKCJ7XCJcIjp7XCJcIjowfSxcIlwiOjB9Iik7CisrICAgIFFWRVJJRlkoIWRvYy5pc051bGwo KSk7CisrICAgIGNvbnN0IFFKc29uT2JqZWN0IG9iaiA9IGRvYy5vYmplY3QoKTsKKysKKysgICAg Ly8gUmVtb3ZlZCB0aGUgZHVwbGljYXRlIGtleS4KKysgICAgUUNPTVBBUkUob2JqLmxlbmd0aCgp LCAxKTsKKysKKysgICAgLy8gUmV0YWluZWQgdGhlIGxhc3Qgb2YgdGhlIGR1cGxpY2F0ZXMuCisr ICAgIGNvbnN0IFFKc29uVmFsdWUgdmFsID0gb2JqLmJlZ2luKCkudmFsdWUoKTsKKysgICAgUVZF UklGWSh2YWwuaXNEb3VibGUoKSk7CisrICAgIFFDT01QQVJFKHZhbC50b0RvdWJsZSgpLCAwLjAp OworKworKyAgICAvLyBJdCBzaG91bGQgbm90IGxlYWsuCisrICAgIC8vIEluIHBhcnRpY3VsYXIg aXQgc2hvdWxkIG5vdCBmb3JnZXQgdG8gZGVyZWYgdGhlIGNvbnRhaW5lciBmb3IgdGhlIGlubmVy IG9iamVjdC4KKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUXRKc29uKQorICNpbmNsdWRlICJ0c3Rf cXRqc29uLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3RpbWUv cXRpbWV6b25lL3RzdF9xdGltZXpvbmUuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi90 aW1lL3F0aW1lem9uZS90c3RfcXRpbWV6b25lLmNwcAoraW5kZXggYTU5YjU4ZDU3Zi4uMjQxYzNl ODRhYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvdGltZS9xdGltZXpv bmUvdHN0X3F0aW1lem9uZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvdGlt ZS9xdGltZXpvbmUvdHN0X3F0aW1lem9uZS5jcHAKK0BAIC02Myw2ICs2Myw3IEBAIHByaXZhdGUg c2xvdHM6CisgICAgIHZvaWQgaXNWYWxpZElkX2RhdGEoKTsKKyAgICAgdm9pZCBpc1ZhbGlkSWQo KTsKKyAgICAgdm9pZCBtYWxmb3JtZWQoKTsKKysgICAgdm9pZCBzZXJpYWxpemUoKTsKKyAgICAg Ly8gQmFja2VuZCB0ZXN0cworICAgICB2b2lkIHV0Y1Rlc3QoKTsKKyAgICAgdm9pZCBpY3VUZXN0 KCk7CitAQCAtOTQ3LDYgKzk0OCwzMyBAQCB2b2lkIHRzdF9RVGltZVpvbmU6Om1hbGZvcm1lZCgp CisgICAgICAgICBiYXJmLm9mZnNldEZyb21VdGMobm93KTsKKyB9CisgCisrdm9pZCB0c3RfUVRp bWVab25lOjpzZXJpYWxpemUoKQorK3sKKysgICAgaW50IHBhcnRzID0gMDsKKysjaWZuZGVmIFFU X05PX0RFQlVHX1NUUkVBTQorKyAgICBxRGVidWcoKSA8PCBRVGltZVpvbmUoKTsgLy8gdG8gdmVy aWZ5IG5vIGNyYXNoCisrICAgIHBhcnRzKys7CisrI2VuZGlmCisrI2lmbmRlZiBRVF9OT19EQVRB U1RSRUFNCisrICAgIFFCeXRlQXJyYXkgYmxvYjsKKysgICAgeworKyAgICAgICAgUURhdGFTdHJl YW0gc3RyZWFtKCZibG9iLCBRSU9EZXZpY2U6OldyaXRlT25seSk7CisrICAgICAgICBzdHJlYW0g PDwgUVRpbWVab25lKCJFdXJvcGUvT3NsbyIpIDw8IFFUaW1lWm9uZSg0MjApIDw8IFFUaW1lWm9u ZSgpIDw8IHFpbnQ2NCgtMSk7CisrICAgIH0KKysgICAgUURhdGFTdHJlYW0gc3RyZWFtKCZibG9i LCBRSU9EZXZpY2U6OlJlYWRPbmx5KTsKKysgICAgUVRpbWVab25lIGludmFsaWQsIG9mZnNldCwg b3NsbzsKKysgICAgcWludDY0IG1pbnVzb25lOworKyAgICBzdHJlYW0gPj4gb3NsbyA+PiBvZmZz ZXQgPj4gaW52YWxpZCA+PiBtaW51c29uZTsKKysgICAgUUNPTVBBUkUob3NsbywgUVRpbWVab25l KCJFdXJvcGUvT3NsbyIpKTsKKysgICAgUUNPTVBBUkUob2Zmc2V0LCBRVGltZVpvbmUoNDIwKSk7 CisrICAgIFFWRVJJRlkoIWludmFsaWQuaXNWYWxpZCgpKTsKKysgICAgUUNPTVBBUkUobWludXNv bmUsIHFpbnQ2NCgtMSkpOworKyAgICBwYXJ0cysrOworKyNlbmRpZgorKyAgICBpZiAoIXBhcnRz KQorKyAgICAgICAgUVNLSVAoIk5vIHNlcmlhbGl6YXRpb24gZW5hYmxlZCIpOworK30KKysKKyB2 b2lkIHRzdF9RVGltZVpvbmU6OnV0Y1Rlc3QoKQorIHsKKyAjaWZkZWYgUVRfQlVJTERfSU5URVJO QUwKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9kYnVzL3FkYnVzaW50ZXJmYWNlL3Rz dF9xZGJ1c2ludGVyZmFjZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9kYnVzL3FkYnVzaW50ZXJm YWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5jcHAKK2luZGV4IDA1NDgwYzZkZDIuLjcwZjRjNzU3NTYg MTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9kYnVzL3FkYnVzaW50ZXJmYWNlL3RzdF9x ZGJ1c2ludGVyZmFjZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMvcWRidXNpbnRl cmZhY2UvdHN0X3FkYnVzaW50ZXJmYWNlLmNwcAorQEAgLTMyNCw2ICszMjQsMTMgQEAgdm9pZCB0 c3RfUURCdXNJbnRlcmZhY2U6Om5vdFZhbGlkKCkKKyAKKyAgICAgUVZFUklGWSghaW50ZXJmYWNl LmlzVmFsaWQoKSk7CisgICAgIFFWRVJJRlkoIVFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QoJmlu dGVyZmFjZSwgIkxpc3ROYW1lcyIsIFF0OjpEaXJlY3RDb25uZWN0aW9uKSk7CisrCisrICAgIC8v IFdpdGggYSBjb25uZWN0aW9uLCBidXQgZW1wdHkvbnVsbCBzZXJ2aWNlIGFuZCBwYXRoIHNwZWNp ZmllZAorKyAgICBRREJ1c0Nvbm5lY3Rpb24gY29uID0gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9u QnVzKCk7CisrICAgIFFWRVJJRlkoY29uLmlzQ29ubmVjdGVkKCkpOworKyAgICBRREJ1c0ludGVy ZmFjZSBpZmFjZSh7fSwge30sIHt9LCBjb24pOworKyAgICBRVkVSSUZZKCFpZmFjZS5pc1ZhbGlk KCkpOworKyAgICBRVkVSSUZZKCFRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKCZpbnRlcmZhY2Us ICJMaXN0TmFtZXMiLCBRdDo6RGlyZWN0Q29ubmVjdGlvbikpOworIH0KKyAKKyB2b2lkIHRzdF9R REJ1c0ludGVyZmFjZTo6bm90VmFsaWREZXJpdmVkKCkKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVz dHMvYXV0by9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3RfcWtleXNlcXVlbmNlLmNwcCBiL3F0 YmFzZS90ZXN0cy9hdXRvL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlL3RzdF9xa2V5c2VxdWVuY2Uu Y3BwCitpbmRleCA4NzQ0NjhjOTU0Li4wNGNlYjRhYjY1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rl c3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UvdHN0X3FrZXlzZXF1ZW5jZS5jcHAKKysr KyBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlL3RzdF9xa2V5c2Vx dWVuY2UuY3BwCitAQCAtNTA3LDYgKzUwNywxMCBAQCB2b2lkIHRzdF9RS2V5U2VxdWVuY2U6OnRv U3RyaW5nRnJvbUtleWNvZGVfZGF0YSgpCisgICAgIFFUZXN0OjpuZXdSb3coIkN0cmwrQWx0K051 bStEZWwiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OkNvbnRyb2xNb2RpZmllciB8IFF0OjpBbHRNb2Rp ZmllciB8IFF0OjpLZXlwYWRNb2RpZmllciB8IFF0OjpLZXlfRGVsZXRlKSA8PCAiQ3RybCtBbHQr TnVtK0RlbCI7CisgICAgIFFUZXN0OjpuZXdSb3coIkN0cmwrSW5zIikgPDwgUUtleVNlcXVlbmNl KFF0OjpDb250cm9sTW9kaWZpZXIgfCBRdDo6S2V5X0luc2VydCkgPDwgIkN0cmwrSW5zIjsKKyAg ICAgUVRlc3Q6Om5ld1JvdygiQ3RybCtOdW0rSW5zKDEpIikgPDwgUUtleVNlcXVlbmNlKFF0OjpL ZXlfSW5zZXJ0IHwgUXQ6OktleXBhZE1vZGlmaWVyIHwgUXQ6OkNvbnRyb2xNb2RpZmllcikgPDwg IkN0cmwrTnVtK0lucyI7CisrICAgIFFUZXN0OjpuZXdSb3coIkN0cmwiKSA8PCBRS2V5U2VxdWVu Y2UoUXQ6OktleV9Db250cm9sKSA8PCAiQ29udHJvbCI7CisrICAgIFFUZXN0OjpuZXdSb3coIkFs dCIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X0FsdCkgPDwgIkFsdCI7CisrICAgIFFUZXN0Ojpu ZXdSb3coIlNoaWZ0IikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfU2hpZnQpIDw8ICJTaGlmdCI7 CisrICAgIFFUZXN0OjpuZXdSb3coIk1ldGEiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9NZXRh KSA8PCAiTWV0YSI7CisgfQorIAorIHZvaWQgdHN0X1FLZXlTZXF1ZW5jZTo6dG9TdHJpbmdGcm9t S2V5Y29kZSgpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL3RleHQvcWZvbnRk YXRhYmFzZS90c3RfcWZvbnRkYXRhYmFzZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9ndWkvdGV4 dC9xZm9udGRhdGFiYXNlL3RzdF9xZm9udGRhdGFiYXNlLmNwcAoraW5kZXggMTVlMGVjYWRhYS4u YjRlY2E3NDI4MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS90ZXh0L3Fmb250 ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9n dWkvdGV4dC9xZm9udGRhdGFiYXNlL3RzdF9xZm9udGRhdGFiYXNlLmNwcAorQEAgLTgxLDYgKzgx LDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCByZWdpc3Rlck9wZW5UeXBlUHJlZmVycmVk TmFtZXNTeXN0ZW0oKTsKKyAgICAgdm9pZCByZWdpc3Rlck9wZW5UeXBlUHJlZmVycmVkTmFtZXNB cHBsaWNhdGlvbigpOworIAorKyAgICB2b2lkIHN0cmV0Y2hSZXNwZWN0ZWQoKTsKKysKKyBwcml2 YXRlOgorICAgICBRU3RyaW5nIG1fbGVkRm9udDsKKyAgICAgUVN0cmluZyBtX3Rlc3RGb250Owor QEAgLTM1NSw2ICszNTcsMjggQEAgc3RhdGljIFFTdHJpbmcgdGVzdFN0cmluZygpCisgICAgIHJl dHVybiBRU3RyaW5nTGl0ZXJhbCgiZm9vIGJhciIpOworIH0KKyAKKyt2b2lkIHRzdF9RRm9udERh dGFiYXNlOjpzdHJldGNoUmVzcGVjdGVkKCkKKyt7CisrICAgIGludCBpdGFsaWNJZCA9IFFGb250 RGF0YWJhc2U6OmFkZEFwcGxpY2F0aW9uRm9udChtX3Rlc3RGb250SXRhbGljKTsKKysgICAgUVZF UklGWShpdGFsaWNJZCAhPSAtMSk7CisrCisrICAgIFFWRVJJRlkoIVFGb250RGF0YWJhc2U6OmFw cGxpY2F0aW9uRm9udEZhbWlsaWVzKGl0YWxpY0lkKS5pc0VtcHR5KCkpOworKworKyAgICBRU3Ry aW5nIGl0YWxpY0ZvbnROYW1lID0gUUZvbnREYXRhYmFzZTo6YXBwbGljYXRpb25Gb250RmFtaWxp ZXMoaXRhbGljSWQpLmZpcnN0KCk7CisrCisrICAgIFFGb250IGl0YWxpY0ZvbnQgPSBRRm9udERh dGFiYXNlKCkuZm9udChpdGFsaWNGb250TmFtZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFTdHJpbmc6OmZyb21MYXRpbjEoIkl0YWxpYyIpLCAxNCk7Cisr ICAgIFFWRVJJRlkoaXRhbGljRm9udC5pdGFsaWMoKSk7CisrCisrICAgIFFGb250IGl0YWxpY1N0 cmV0Y2hlZEZvbnQgPSBpdGFsaWNGb250OworKyAgICBpdGFsaWNTdHJldGNoZWRGb250LnNldFN0 cmV0Y2goIDQwMCApOworKworKyAgICBRVkVSSUZZKFFGb250TWV0cmljc0YoaXRhbGljRm9udCku aG9yaXpvbnRhbEFkdmFuY2UoUVN0cmluZ0xpdGVyYWwoImZvb2JhciIpKSA8CisrICAgICAgICAg ICAgUUZvbnRNZXRyaWNzRihpdGFsaWNTdHJldGNoZWRGb250KS5ob3Jpem9udGFsQWR2YW5jZShR U3RyaW5nTGl0ZXJhbCgiZm9vYmFyIikpKTsKKysKKysgICAgUUZvbnREYXRhYmFzZTo6cmVtb3Zl QXBwbGljYXRpb25Gb250KGl0YWxpY0lkKTsKKyt9CisrCisgdm9pZCB0c3RfUUZvbnREYXRhYmFz ZTo6Y29uZGVuc2VkRm9udFdpZHRoTm9Gb250TWVyZ2luZygpCisgeworICAgICBpbnQgcmVndWxh ckZvbnRJZCA9IFFGb250RGF0YWJhc2U6OmFkZEFwcGxpY2F0aW9uRm9udChtX3Rlc3RGb250KTsK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3Jl cGx5L3RzdF9xbmV0d29ya3JlcGx5LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNj ZXNzL3FuZXR3b3JrcmVwbHkvdHN0X3FuZXR3b3JrcmVwbHkuY3BwCitpbmRleCAzZDRhMDk0YzQz Li5iNDIzZTExYTk5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9hY2Nl c3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBseS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0 cy9hdXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHkvdHN0X3FuZXR3b3JrcmVwbHkuY3Bw CitAQCAtMjgxLDYgKzI4MSw3IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAgICAgdm9pZCBpb0dldEZy b21GaWxlU3BlY2lhbCgpOworICAgICB2b2lkIGlvR2V0RnJvbUZpbGVfZGF0YSgpOworICAgICB2 b2lkIGlvR2V0RnJvbUZpbGUoKTsKKysgICAgdm9pZCBpb0dldEZyb21GaWxlVXJsKCk7CisgICAg IHZvaWQgaW9HZXRGcm9tRnRwX2RhdGEoKTsKKyAgICAgdm9pZCBpb0dldEZyb21GdHAoKTsKKyAg ICAgdm9pZCBpb0dldEZyb21GdHBXaXRoUmV1c2UoKTsKK0BAIC0zMzAwLDYgKzMzMDEsMTggQEAg dm9pZCB0c3RfUU5ldHdvcmtSZXBseTo6aW9HZXRGcm9tRmlsZSgpCisgICAgIFFDT01QQVJFKHJl YWRlci5kYXRhLCBkYXRhKTsKKyB9CisgCisrdm9pZCB0c3RfUU5ldHdvcmtSZXBseTo6aW9HZXRG cm9tRmlsZVVybCgpCisreworKyAgICAvLyBUaGlzIGltbWVkaWF0ZWx5IGZhaWxzIG9uIG5vbi13 aW5kb3dzIHBsYXRmb3JtczoKKysgICAgUU5ldHdvcmtSZXF1ZXN0IHJlcXVlc3QoUVVybCgiZmls ZTovL3VuYy1zZXJ2ZXIvc29tZS9wYXRoIikpOworKyAgICBRTmV0d29ya1JlcGx5UHRyIHJlcGx5 KG1hbmFnZXIuZ2V0KHJlcXVlc3QpKTsKKysgICAgUVNpZ25hbFNweSBmaW5pc2hlZFNweShyZXBs eS5nZXQoKSwgJlFOZXR3b3JrUmVwbHk6OmZpbmlzaGVkKTsKKysgICAgLy8gUVRCVUctMTA1NjE4 OiBUaGlzIHdvdWxkLCBvbiBub24tV2luZG93cyBwbGF0Zm9ybXMsIG5ldmVyIGhhcHBlbiBiZWNh dXNlIHRoZSBzaWduYWwKKysgICAgLy8gd2FzIGVtaXR0ZWQgYmVmb3JlIHRoZSBjb25zdHJ1Y3Rv ciBmaW5pc2hlZCwgbGVhdmluZyBubyBjaGFuY2UgYXQgYWxsIHRvIGNvbm5lY3QgdG8gdGhlCisr ICAgIC8vIHNpZ25hbAorKyAgICBRVkVSSUZZKGZpbmlzaGVkU3B5LndhaXQoKSk7CisrfQorKwor IHZvaWQgdHN0X1FOZXR3b3JrUmVwbHk6OmlvR2V0RnJvbUZ0cF9kYXRhKCkKKyB7CisgICAgIFFU ZXN0OjphZGRDb2x1bW48UVN0cmluZz4oImZpbGVOYW1lIik7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5jZXJ0IGIvcXRi YXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5jZXJ0Citp bmRleCAwNjlmYTZiMzQxLi40Y2M0ZDlhNWVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1 dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5jZXJ0CisrKysgYi9xdGJhc2Uv dGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmNlcnQKK0BAIC0x LDc1ICsxLDM0IEBACistQ2VydGlmaWNhdGU6CistICAgIERhdGE6CistICAgICAgICBWZXJzaW9u OiAzICgweDIpCistICAgICAgICBTZXJpYWwgTnVtYmVyOiAwICgweDApCistICAgICAgICBTaWdu YXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRpb24KKy0gICAgICAgIElzc3Vlcjog Qz1OTywgU1Q9T3NsbywgTD1OeWRhbGVuLCBPPU5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg c3Vic2lkaWFyeSgtaWVzKSwgT1U9RGV2ZWxvcG1lbnQsIENOPWZsdWtlLnRyb2xsLm5vL2VtYWls QWRkcmVzcz1haGFuc3NlbkB0cm9sbHRlY2guY29tCistICAgICAgICBWYWxpZGl0eQorLSAgICAg ICAgICAgIE5vdCBCZWZvcmU6IERlYyAgNCAwMToxMDozMiAyMDA3IEdNVAorLSAgICAgICAgICAg IE5vdCBBZnRlciA6IEFwciAyMSAwMToxMDozMiAyMDM1IEdNVAorLSAgICAgICAgU3ViamVjdDog Qz1OTywgU1Q9T3NsbywgTz1Ob2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko LWllcyksIE9VPURldmVsb3BtZW50LCBDTj1mbHVrZS50cm9sbC5ubworLSAgICAgICAgU3ViamVj dCBQdWJsaWMgS2V5IEluZm86CistICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJz YUVuY3J5cHRpb24KKy0gICAgICAgICAgICBSU0EgUHVibGljIEtleTogKDEwMjQgYml0KQorLSAg ICAgICAgICAgICAgICBNb2R1bHVzICgxMDI0IGJpdCk6CistICAgICAgICAgICAgICAgICAgICAw MDphNzpjODphMDo0YTpjNDoxOTowNToxYjo2NjpiYTozMjplMjpkMjpmMToKKy0gICAgICAgICAg ICAgICAgICAgIDFjOjZmOjE3OjgyOmU0OjM5OjJlOjAxOjUxOjkwOmRiOjA0OjM0OjMyOjExOgor LSAgICAgICAgICAgICAgICAgICAgMjE6YzI6MGQ6NmY6NTk6ZDg6NTM6OTA6NTQ6M2Y6ODM6OGY6 YTk6ZDM6YjM6CistICAgICAgICAgICAgICAgICAgICBkNTplZToxYTo5Yjo4MDphZTpjMzoyNTpj OTo1ZTphNTphZjo0Yjo2MDowNToKKy0gICAgICAgICAgICAgICAgICAgIGFhOmEwOmQxOjkxOjAx OjFmOmNhOjA0OjgzOmUzOjU4OjFjOjk5OjMyOjQ1OgorLSAgICAgICAgICAgICAgICAgICAgODQ6 NzA6NzI6NTg6MDM6OTg6NGE6NjM6OGI6NDE6ZjU6MDg6NDk6ZDI6OTE6CistICAgICAgICAgICAg ICAgICAgICAwMjo2MDo2YjplNDo2NDpmZTpkZDphMDphYTo3NDowODplOTozNDo0Yzo5MToKKy0g ICAgICAgICAgICAgICAgICAgIDVmOjEyOjNkOjM3OjRkOjU0OjJjOmFkOjdmOjViOjk4OjYwOjM2 OjAyOjhjOgorLSAgICAgICAgICAgICAgICAgICAgM2I6ZjY6NDU6ZjM6Mjc6NmE6OWI6OTQ6OWQK Ky0gICAgICAgICAgICAgICAgRXhwb25lbnQ6IDY1NTM3ICgweDEwMDAxKQorLSAgICAgICAgWDUw OXYzIGV4dGVuc2lvbnM6CistICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRzOiAK Ky0gICAgICAgICAgICAgICAgQ0E6RkFMU0UKKy0gICAgICAgICAgICBOZXRzY2FwZSBDb21tZW50 OiAKKy0gICAgICAgICAgICAgICAgT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUKKy0gICAg ICAgICAgICBYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmllcjogCistICAgICAgICAgICAgICAg IDIxOjg1OjA0OjNEOjIzOjAxOjY2OkU1OkY3OjlGOjFBOjg0OjI0OjhBOkFGOjBBOjc5OkY0OkU1 OkFDCistICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmllcjogCistICAg ICAgICAgICAgICAgIERpck5hbWU6L0M9Tk8vU1Q9T3Nsby9MPU55ZGFsZW4vTz1Ob2tpYSBDb3Jw b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykvT1U9RGV2ZWxvcG1lbnQvQ049Zmx1 a2UudHJvbGwubm8vZW1haWxBZGRyZXNzPWFoYW5zc2VuQHRyb2xsdGVjaC5jb20KKy0gICAgICAg ICAgICAgICAgc2VyaWFsOjhFOkE4OkI0OkU4OjkxOkI3OjU0OjJFCistCistICAgIFNpZ25hdHVy ZSBBbGdvcml0aG06IHNoYTFXaXRoUlNBRW5jcnlwdGlvbgorLSAgICAgICAgNmQ6NTc6NWY6ZDE6 MDU6NDM6ZjA6NjI6MDU6ZWM6MmE6NzE6YTU6ZGM6MTk6MDg6ZjI6YzQ6CistICAgICAgICBhNjpi ZDpiYjoyNTpkOTpjYTo4OTowMTowZTplNDpjZjoxZjpjMTo4YzpjODoyNDoxODozNToKKy0gICAg ICAgIDUzOjU5OjdiOmMwOjQzOmI0OjMyOmU2Ojk4OmIyOmE2OmVmOjE1OjA1OjBiOjQ4OjVmOmUx OgorLSAgICAgICAgYTA6MGM6OTc6YTk6YTE6Nzc6ZDg6MzU6MTg6MzA6YmM6YTk6OGY6ZDM6Yjc6 NTQ6Yzc6ZjE6CistICAgICAgICBhOTo5ZTo1ZDplNjoxOTpiZjpmNjozYzo1YjoyYjpkODplNDoz ZTo2MjoxODo4ODo4YjpkMzoKKy0gICAgICAgIDI0OmUxOjQwOjliOjBjOmU2OjI5OjE2OjYyOmFi OmVhOjA1OjI0OjcwOjM2OmFhOjU1OjkzOgorLSAgICAgICAgZWY6MDI6ODE6MWI6MjM6MTA6YTI6 MDQ6ZWI6NTY6OTU6NzU6ZmM6Zjg6OTQ6YjE6NWQ6NDI6CistICAgICAgICBjNTozZjozNjo0NDo4 NTo1ZDozYToyZTo5MDo0Njo4YTphMjpiOTo2Zjo4NzphZTowYzoxNToKKy0gICAgICAgIDQwOjE5 OjMxOjkwOmZjOjNiOjI1OmJiOmFlOmYxOjY2OjEzOjBkOjg1OjkwOmQ5OjQ5OjM0OgorLSAgICAg ICAgOGY6ZjI6NWQ6Zjk6N2E6ZGI6NGQ6NWQ6Mjc6ZjY6NzY6OWQ6MzU6OGM6MDY6YTY6NGM6YTM6 CistICAgICAgICBiMTpiMjpiNjo2ZjoxZDpkNzphMzowMDpmZDo3MjplYjo5ZTplYTo0NDphMTph ZjoyMTozNDoKKy0gICAgICAgIDdkOmM3OjQyOmUyOjQ5OjkxOjE5OjhiOmMwOmFkOmJhOjgyOjgw OmE4OjcxOjcwOmY0OjM1OgorLSAgICAgICAgMzE6OTE6NjM6ODQ6MjA6OTU6ZTk6NjA6YWY6NjQ6 OGI6Y2M6ZmY6M2Q6OGE6NzY6NzQ6M2Q6CistICAgICAgICBjODo1NTo2ZDplNDo4ZTpjMzoyYjox YzplODo0MjoxODphZTo5ZjplNjo2Yjo5YzozNDowNjoKKy0gICAgICAgIGVjOjZhOmYyOmMzCisg LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCistTUlJRUV6Q0NBdnVnQXdJQkFnSUJBREFOQmdr cWhraUc5dzBCQVFVRkFEQ0JuREVMTUFrR0ExVUVCaE1DVGs4eAorLURUQUxCZ05WQkFnVEJFOXpi Rzh4RURBT0JnTlZCQWNUQjA1NVpHRnNaVzR4RmpBVUJnTlZCQW9URFZSeWIyeHMKKy1kR1ZqYUNC QlUwRXhGREFTQmdOVkJBc1RDMFJsZG1Wc2IzQnRaVzUwTVJjd0ZRWURWUVFERXc1bWJIVnJaUzUw CistY205c2JDNXViekVsTUNNR0NTcUdTSWIzRFFFSkFSWVdZV2hoYm5OelpXNUFkSEp2Ykd4MFpX Tm9MbU52YlRBZQorLUZ3MHdOekV5TURRd01URXdNekphRncwek5UQTBNakV3TVRFd016SmFNR014 Q3pBSkJnTlZCQVlUQWs1UE1RMHcKKy1Dd1lEVlFRSUV3UlBjMnh2TVJZd0ZBWURWUVFLRXcxVWNt OXNiSFJsWTJnZ1FWTkJNUlF3RWdZRFZRUUxFd3RFCistWlhabGJHOXdiV1Z1ZERFWE1CVUdBMVVF QXhNT1pteDFhMlV1ZEhKdmJHd3VibTh3Z1o4d0RRWUpLb1pJaHZjTgorLUFRRUJCUUFEZ1kwQU1J R0pBb0dCQUtmSW9FckVHUVViWnJveTR0THhIRzhYZ3VRNUxnRlJrTnNFTkRJUkljSU4KKy1iMW5Z VTVCVVA0T1BxZE96MWU0YW00Q3V3eVhKWHFXdlMyQUZxcURSa1FFZnlnU0Q0MWdjbVRKRmhIQnlX QU9ZCistU21PTFFmVUlTZEtSQW1CcjVHVCszYUNxZEFqcE5FeVJYeEk5TjAxVUxLMS9XNWhnTmdL TU8vWkY4eWRxbTVTZAorLUFnTUJBQUdqZ2dFYU1JSUJGakFKQmdOVkhSTUVBakFBTUN3R0NXQ0dT QUdHK0VJQkRRUWZGaDFQY0dWdVUxTk0KKy1JRWRsYm1WeVlYUmxaQ0JEWlhKMGFXWnBZMkYwWlRB ZEJnTlZIUTRFRmdRVUlZVUVQU01CWnVYM254cUVKSXF2CistQ25uMDVhd3dnYnNHQTFVZEl3U0Jz ekNCc0tHQm9xU0JuekNCbkRFTE1Ba0dBMVVFQmhNQ1RrOHhEVEFMQmdOVgorLUJBZ1RCRTl6Ykc4 eEVEQU9CZ05WQkFjVEIwNTVaR0ZzWlc0eEZqQVVCZ05WQkFvVERWUnliMnhzZEdWamFDQkIKKy1V MEV4RkRBU0JnTlZCQXNUQzBSbGRtVnNiM0J0Wlc1ME1SY3dGUVlEVlFRREV3NW1iSFZyWlM1MGNt OXNiQzV1CistYnpFbE1DTUdDU3FHU0liM0RRRUpBUllXWVdoaGJuTnpaVzVBZEhKdmJHeDBaV05v TG1OdmJZSUpBSTZvdE9pUgorLXQxUXVNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUJ0VjEvUkJV UHdZZ1hzS25HbDNCa0k4c1NtdmJzbDJjcUoKKy1BUTdrengvQmpNZ2tHRFZUV1h2QVE3UXk1cGl5 cHU4VkJRdElYK0dnREplcG9YZllOUmd3dkttUDA3ZFV4L0dwCistbmwzbUdiLzJQRnNyMk9RK1lo aUlpOU1rNFVDYkRPWXBGbUtyNmdVa2NEYXFWWlB2QW9FYkl4Q2lCT3RXbFhYOAorLStKU3hYVUxG UHpaRWhWMDZMcEJHaXFLNWI0ZXVEQlZBR1RHUS9Ec2x1Njd4WmhNTmhaRFpTVFNQOGwzNWV0dE4K Ky1YU2YyZHAwMWpBYW1US094c3JadkhkZWpBUDF5NjU3cVJLR3ZJVFI5eDBMaVNaRVppOEN0dW9L QXFIRnc5RFV4Cista1dPRUlKWHBZSzlraTh6L1BZcDJkRDNJVlcza2pzTXJIT2hDR0s2ZjVtdWNO QWJzYXZMRAorK01JSUY2ekNDQTlPZ0F3SUJBZ0lVZm85YW1KdEpHV3FXRTZmK1NrQU84NXprR3I0 d0RRWUpLb1pJaHZjTkFRRUwKKytCUUF3Z1lNeEN6QUpCZ05WQkFZVEFrNVBNUTB3Q3dZRFZRUUlE QVJQYzJ4dk1RMHdDd1lEVlFRSERBUlBjMnh2CisrTVJjd0ZRWURWUVFLREE1VWFHVWdVWFFnUTI5 dGNHRnVlVEVNTUFvR0ExVUVDd3dEVWlaRU1SSXdFQVlEVlFRRAorK0RBbElNaUJVWlhOMFpYSXhH ekFaQmdrcWhraUc5dzBCQ1FFV0RHMXBibWx0YVVCeGRDNXBiekFnRncweU1ERXcKKytNall4TWpB eE16RmFHQTh5TVRJd01UQXdNakV5TURFek1Wb3dnWU14Q3pBSkJnTlZCQVlUQWs1UE1RMHdDd1lE CisrVlFRSURBUlBjMnh2TVEwd0N3WURWUVFIREFSUGMyeHZNUmN3RlFZRFZRUUtEQTVVYUdVZ1VY UWdRMjl0Y0dGdQorK2VURU1NQW9HQTFVRUN3d0RVaVpFTVJJd0VBWURWUVFEREFsSU1pQlVaWE4w WlhJeEd6QVpCZ2txaGtpRzl3MEIKKytDUUVXREcxcGJtbHRhVUJ4ZEM1cGJ6Q0NBaUl3RFFZSktv WklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCCisrQU9pVXA1K0U0YmxvdUtIN3ErclZOUjhO b1lYMlhrQlcrcStycHkxenU1c3NSU3picXhBakR4OWRraHQ3UWxuZgorK1ZsRFQwMEp2cE9XZGV1 UG9uNTkxNWVkUVJzWTRVbmw2bUtIMjlyYTNPdFVhMS95Q0pYc0dWSlRLQ2o3azRCeGIKKys1bVp6 Yi9mVGxabnRNTGRUSUJNZlVidzYyRktpcjFXaktJY0o5ZkNvRzhKYUdlS1ZPNFJoNXAwZXpkNFVV VUlkCisrcjFCWGw1TnFkcXkydlRNc0VEbmpPc0QzZWdrdjhJMlNLTjRPNm4vQzN3V1lwTU9XWVpr R29aaUt6N3JKcy9pLworK2V6N2JzVjdKbHdkelRsaHBKemtjT1NWRkJQNkpsRU94VE5OeFoxd3RL eTdQdFpHbXNTU0FUcTJlNitidzM4QWUKKytPcDBYbnp6cWNHanRERG9mQm1UN09GelpXalM5VlpT NitET09lMlFIV2xlMW5DSGNIeUg0a3U2SVJsc3I5eGtSCisrTkFJbE9mbnZISHhxSlVlbm9lYVo0 b1FEakNCS1MxS1h5Z0pPL3RMN0JMVFFWbi94SzFFbVB2S05uanpXazR0UgorK1BuaWJVaGhzNTYz NXFwT1UvWVBxRkJoMUpqVnJ1WmJzV2NEQWhSY2V3MHV4T05YT2E5RSs0bHR0UTl5U1lhMUEKKytM dldxSnVBWDdndTJCc0JNTHlxZm04MTFZbkE3Q0lGTXlPK0hscW1rTEZmdjVML3hJUkFYUjdsMjZZ R08wVndYCisrQ0dqTWZ6NE5WUE1Na2U0bkI3cWE5TmtwWFFCUUtNbXMzUXpkNUpXMEh5OVJ1ajVP OEdQY0ZabVYwdHdqZDF1SgorK1BEL2NBamtXTGFYamROc0oxNlFXYzJuZ2hRUlM2SFlxS1JYNmor Q1hPeHVwQWdNQkFBR2pVekJSTUIwR0ExVWQKKytEZ1FXQkJSU0NPVTU4ajlOSlprTWFtdDYyM3F5 Q3JoTjNUQWZCZ05WSFNNRUdEQVdnQlJTQ09VNThqOU5KWmtNCisrYW10NjIzcXlDcmhOM1RBUEJn TlZIUk1CQWY4RUJUQURBUUgvTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElDQVFDcQorK3E0anhzV2VO RHY1TnExNGhKdEY5SEIrWkw2NHpjWnRSakpQMVlnTnMwUXBwS0lDbWpQT0wybklNR21JL2pLcnMK KyswZUdBTC85WFhOVkhQeG0xT1BPbmN2aW1NTW1VNmVtWmZwTWRFdFRmS1A0MytQZzlIZ0tSakxv UXA0MDZ2R2VRCisrOGtpL21iQmhySXRWUGdFbTN0dTJBRkEwMlhUWWkrWXhDSTlrUlpMR2tNM0Zi Z3RPdVRMUGwwWjl5K2tpUGM5RgorK3VDU0MwM2FuQkVxdit2RFNJOCt3T0R5bVEvSUozSnl6MWx4 SVJEZnA0cUFla215MGpVMmM5MVZPSEhFbU9tcXEKKytrcXlnR0ZSZHdiZTk5bTl5UDYzcjZxMGI1 SzNYMlVuSjZibnMwaG1Ud1RoWXdwVlBYTFU4amRhVGRkYk11a04yCisrL0VmOTZUc3c4bldPRU9Q TXlTSE9USVBnd3laUnAyNmIwa0E5RW1oTHdPUDQwMVN4WFZRQ21TUm10d05hZ210ZworK2pKS21a b1lCTisvL0Q0NWliSzh6NlEwb09tOVArV2hmL3VVWGVoY1J4Qnh5VjN4ejdrMHdLR1FiSGovZGR3 Y3kKKytJVW9JTjRsckFsaWIrbEsxNzBrVEtOMzUyUERtcnBvMmdtSXpQRXNmdXJLQUlNU2VsRGw2 SCtraWgxNkJ0Wjh5CisrTno2Zmg5U29xcmczT1NBd2FyZThweFY3azUxY3JCTW9QTE43OEtvUlY4 TUZDSzRLN0ZkZHE0clJJU3E2aGlYcQorK3IxbnNqb0VQdUtNOWh1cHJtWlZaZTl0NVljRGEySSt3 YjNJaUUzdXdwWmJBZGFMRHlRNW42Ri9xcHNpSWtaWG4KKytndGNGN29xcEc1b1lyd0NjWjUzeS9l elVnVWc3UGxTejJYd0FHdlF0Z2c9PQorIC0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KK2RpZmYg LS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2Zs dWtlLmtleSBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMv Zmx1a2Uua2V5CitpbmRleCA5ZDE2NjRkNjA5Li4zMzdjZTU0MWE2IDEwMDY0NAorLS0tIGEvcXRi YXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5rZXkKKysr KyBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2Uu a2V5CitAQCAtMSwxNSArMSw1MiBAQAorLS0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0K Ky1NSUlDWEFJQkFBS0JnUUNueUtCS3hCa0ZHMmE2TXVMUzhSeHZGNExrT1M0QlVaRGJCRFF5RVNI Q0RXOVoyRk9RCistVkQrRGo2blRzOVh1R3B1QXJzTWx5VjZscjB0Z0JhcWcwWkVCSDhvRWcrTllI Smt5UllSd2NsZ0RtRXBqaTBIMQorLUNFblNrUUpnYStSay90MmdxblFJNlRSTWtWOFNQVGROVkN5 dGYxdVlZRFlDakR2MlJmTW5hcHVVblFJREFRQUIKKy1Bb0dBTkZ6TGthblRlU0dORk0wdXR0Qmlw RlQ5RjRhMDBkcUh6NkpuTzd6WEFUMjZJNXI4c1UxcHFRQmI2dUx6CistLytRejVad2s4UlVBUWNz TVJnSmV0dVBRVWIwSlpqRjZEdXYyNGhOYXpxWEJDdTdBWnpVZW5qYWZ3bUtDLzhyaQorLUtwWDNm VHdxemZ6aS8vRktHZ2JYUTgweXlrU1NsaURMM2tuL2RyQVR4c0xDZ1FFQ1FRRFhoRUZXTEowdlZa MXMKKy0xRWtmKzNOSVRFK0RSMTZYK0xRNFc2dnlFSEFqVGJhTld0Y1RLZEFXTEEybDZONFdBQVBZ U2k2YXdtK3pNeHg0CistVm9tVlRzamRBa0VBeDB6K2U3bmF0TGVGY3JycThwYlUrd2E2U0FQMVZm aFFXS2l0eEwxZTd1L1FPOTBOQ3B4RQorLW9RWUt6TWttbXBPT0ZqUXdFTUF5MWR2Rk1ibTRMSGxl d1FKQUMva3NEQmFVY1FISHFqa3RDdHJVYjhyVmpBeVcKKy1BOGxzY2NrZUIyZkVZeUc1SjZkSlZh WTRDbE5PT3M1eU1EUzJBZmsxRjZIL3hLdnRRLzVDekluQS9RSkFURHViCistSytCUFU4ak85cStn cHVJaTNWSVpkdXBzc1ZHbUNnT2JWQ0hMYWtHNHVPMDR5OUl5UGhWOWxBOXRBTHRvSWY0YworLVZJ dnY1ZldHWEJyWjQ4a1pBUUpCQUptVkNkelF4ZDlMWkk1dnhpalVDajVFSTRlK3g1RFJxVlV2eVA4 S0NackMKKy1BaU55b0RQODVUK2hCWmFTWEszYVlHcFZ3ZWx5ajNidm8xR3JUTndOV0x3PQorLS0t LS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCisrLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0t CisrTUlJSlFnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NDU3d3Z2drb0FnRUFBb0lDQVFEb2xL ZWZoT0c1YUxpaAorKys2dnExVFVmRGFHRjlsNUFWdnF2cTZjdGM3dWJMRVVzMjZzUUl3OGZYWkli ZTBKWjMxWlEwOU5DYjZUbG5YcmoKKys2SitmZGVYblVFYkdPRko1ZXBpaDl2YTJ0enJWR3RmOGdp VjdCbFNVeWdvKzVPQWNXK1ptYzIvMzA1V1o3VEMzCisrVXlBVEgxRzhPdGhTb3E5Vm95aUhDZlh3 cUJ2Q1dobmlsVHVFWWVhZEhzM2VGRkZDSGE5UVY1ZVRhbmFzdHIwegorK0xCQTU0enJBOTNvSkwv Q05raWplRHVwL3d0OEZtS1REbG1HWkJxR1lpcys2eWJQNHYzcysyN0ZleVpjSGMwNVkKKythU2M1 SERrbFJRVCtpWlJEc1V6VGNXZGNMU3N1ejdXUnByRWtnRTZ0bnV2bThOL0FIanFkRjU4ODZuQm83 UXc2CisrSHdaayt6aGMyVm8wdlZXVXV2Z3pqbnRrQjFwWHRad2gzQjhoK0pMdWlFWmJLL2NaRVRR Q0pUbjU3eHg4YWlWSAorK3A2SG1tZUtFQTR3Z1NrdFNsOG9DVHY3Uyt3UzAwRlovOFN0UkpqN3lq WjQ4MXBPTFVUNTRtMUlZYk9ldCthcVQKKytsUDJENmhRWWRTWTFhN21XN0ZuQXdJVVhIc05Mc1Rq VnptdlJQdUpiYlVQY2ttR3RRQzcxcWliZ0YrNEx0Z2JBCisrVEM4cW41dk5kV0p3T3dpQlRNanZo NWFwcEN4WDcrUy84U0VRRjBlNWR1bUJqdEZjRndob3pIOCtEVlR6REpIdQorK0p3ZTZtdlRaS1Yw QVVDakpyTjBNM2VTVnRCOHZVYm8rVHZCajNCV1psZExjSTNkYmlUdy8zQUk1RmkybDQzVGIKKytD ZGVrRm5OcDRJVUVVdWgyS2lrVitvL2dsenNicVFJREFRQUJBb0lDQUZ3MXE2dHI1STQ4dlk3REYr clhzdUxuCisrNVpVV0UxSVE2ZnpCNGxyNzJuSnYvOUVFR25NZ1l6dDlQcE1Vc0Q2dmRDcEJnUzJD MCs2UkhBckZ6SnROQStSTQorK2lITElHN0s3NzAydmV5ci94QngvTXdpU2xNZU12L1hwa0Z4Vkk2 RTZza01HRzJzM0FNWHhLdkpUeTVDcFJ4K0kKKytlUUZ5TEcrWWExWDJsZ0plcy9xKy9DcEFIa09q Q09wY0x5U1FDNU5aNzRxNzM0VjduU2RtbitaczN0WUVoK08vCisrZWl1d1RQL2o1YjM4VGU1dlZU cUR4VGNpSlBtbGptWExDd2EwTjEwMGxXbGJjcHZ3OHFicWlUSTJKbTNYQ2JVRQorK0F6SGpXOXZt ckYzY1JTMWZYeEtGR1NodzNTUnFsa2J4amZlV29pOHFEUFVCUzRtOExPcjhxRzlXbzVOZm9uMHoK Kyt6TFA0YmNpM3pIRHZWY2FhWnJyc1VCcy95WmJnK0Rna2ExRG1YN2VrbWVjY3IyeVRkS0RGZ1B1 cFlVeXhWYlRsCisrYTlaTEp5c2pGRDdyZ0J2MVpjbEhvbkxwNlZibStab1RxdnRlbzRpa0F5Nkw5 UnRCV0oyM1hFSzM0UGtQLytjNQorKzJ2V1phT3JualNlQkhiRmNlOGNkSlN4cVdwUCtlU0NJNUk5 WGJEcllGSXNRL2dxS2d0ekRLeTJpaEoyWThTVEwKKyt5TzRoeUZQRmp4YytHZzQvUDJQcG1UNUNZ MnR5NDRNMEJXcytKR1c5NkNKUHJycGxmMmxtUVVRSmo1TFpZNjZYCisrWi80QzlMN1pZdEtaK2Jz NVN2VTQ2eVd1Z0F2UVpYMjJYbTl4TFhXeVZYUmR4M2JqKzNNM2ZEbkY5ZGkvemRiaAorK0NnTHg3 b1dQTnJYYzdGQ2Fqbm45QW9JQkFRRDVGTVl3UnB3OU5XVDlXRHhRd3grY1NJNEljYmQ4OEJ5VFc2 M1MKKytMemVSd1pBMEo5L1Nmd08rYUJSdXB6YzlHa0dYQ2laY0dNdzNBR3NDdGlnOHlGbHc4RTVL bnpON0tsZnRETW5NCisrOU5VeHh6bFI4VndLeUxuWmZHN3NEVGwwNTdabFV1am5xaG10L0Y4Rjdk SXk3RlZPMWRFLzhubmdBK0ZZVENPRworK1VaZEdqd3lCRGxETTBKSmRVV0dZM3hzbHV0Y3BDRE41 bXpTVEtqeTlkck12SW1Bc2hSYXd4UkY2V0Jwbjd2cjIKKytuQzZ2Y2lxZngxTXp4MXZ5azBKbTBp bGF5ZERkTE1BRGp0L2lMNE5rcjBCRXM0aytVelFpS0R3cDhndTdhYlExCisrZUJmeGQ5SWFyNGh0 UWEySTFFd2w2UDAxRy9xK1pZd2dIaEo5UlZuNEF4UVhlZklMQW9JQkFRRHZDb3VPUmRRWAorK0M4 d3N5cDdNd1hsRi8zTlFlTk41LytCMm1oYnhyQk9mN1BtTUNYTG5rUldjandKdHp5cFdGcUowc3Fh aS8yKzAKKyticWJNY2pYNW1hVDhzdFQyc2hsM3pYZS9FanQyZTNUQllwYzF0eXVzZXM4S2I1Qk1V OGh1NnRUZDNHMkNNWHBECisrZFQ2RFZlbUpaQ1R0d2o5YUJOSXhTaXp2bGdNb2xKbkNwemhQbmxm SFNJNkUrZzNtL0xUVG8zSHdiak1Tdy9VcQorK2lyZ2pPcEkyd1NCQjZMWlBTZ2p2ZmNZUFJ5V1Vr MTZMNEE1dVNYMGNBRG5vdkRGTGE1L2gwd0p2Ti9Pb0NTUWcKKytyTENYRzVFMThFeUw1V2M1OEJD WTFadnhtakczbFF0Z1B4WXUySndjMzZSL3kvSktseFc1c3VFUjVaTnBiYkQ0CisrdU95VHQyVnhN UTJiQW9JQkFRQzUrTXpSRnFkby9BamZMNVk1SnJiZlZUelhDVERhMDl4Q0dkMTZaVTYwUVRXTgor Kys0ZWQvcitvMXNVS3FVY1JGQjJNekVNLzJEUUJqUXBaQi9DYkVXdldhMVhKV1h4eXBYYm93dmVa VStRcU9ubU4KKyt1UXZqOFdMeUEzbytQTkY5ZTlRdmF1d0NySHBuOFZweGJ0UFd1YVlvS25VRnJl RlpaUXhIaFBHeFJCSVMySk9aCisrZURyVDhaYVdua0NraDFBWnA1c21RNzFMT3ByU2xtS3JnNGpk MUdqQ1ZNeFFSNU41S1hidHl2ME9UQ1ovVUZxSworKzJhUkJzTVB5SmdrYUJDaGtaUExSY0t3Yysv d2xRUngxZkhRYjE0RE5UQXBNeG9YRk83ZU93cW1Pa3BBdDlpeWwKKytTQkl3b1MwVVVJNWFiODgr YkJtWE52S2N1RmROdVE0bm93VEpVbjlwQW9JQkFETU5rSUxCWFN2UzVEZUl5dU8yCisrU3AxdGtv WlVWKzVOZlBZM3NNREszS0lpYmFXLyt0K0VPQlpvNEw3dEtRQ2I4dlJ6bDIxbW1zZnhmZ1JhUERi agorKzNyM3R2OWcwYjRZTHh4Qnk1MnBGc2NqL3NvWFJhaTE3U1M3VVp3QTJRSytYemdEWWJEY0xO QzZtSXNUUUc0R3gKKytkc1drMy96czNLdVVTUWFlaG13cldLK2ZJVUszOGMxcExLOHY3TG94ckxr cXhsSHdaMDRSdGhIdzhLVHRoSDdYCisrUG5sMUowTEY4Q1NlT3lmV0xTdVBVZmtUMEdFenB0bk5I cEViYUhmUU02UjZlYUdoVkpQRjZBWm1lNHk2WVlnZworK20yaWhoU3QxbjBYVkVXcEhZV2p4Rnkz bUsybXo3NXVuRkM0TE0rTkVZMnAyenVVUW9DdzdOam5ZM1FZcmZDbngKKytyUk1DZ2dFQVhlWHNN U0xGamp5dW9MN2lLYkF4bzUySEQvUDBmQm95NThMeVJjd2ZOVnIwbHZZYW40cFlFeCtvCisrS2lq SWg5SzE2UHFYWlhLTUE5djAwM0IrdWxtRjhiSjdTZGRDWjVOR3ZuRmhVVERlNERkVEtncDJSdXdR M0JzYworKzNza1BJRGJoVkVUeU9MQ3R5czM0VVNIcnE4VS8wRGxHWTNlTFJmeHc5R25iS3hTQkdh L0tFdS9xUUxQTlVvNTAKKys3eEhaRGc3R0tlQzNrcU5KZXFLTTlya3AwVnpJR2tFbmFEOTEyN0xl TkRtRVJEZmZ0eEp6Rm9DL1RIdlVCTGZVCisrNlN1czJaWXdSRThWRnZLQzMwUTQ1dC9jNTRYM0l1 aFl2QXVpQ3VUbXlmRTRydXl6eU93S3poVWtlZUxxMUFQWAorK2cwdmVGYnlmemxKMHE4cXpEL2lm ZnFxSWEyWlNtUT09CisrLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQorZGlmZiAtLWdpdCBhL3F0 YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3NpYmlsaXR5bGludXgvdHN0X3FhY2Nlc3NpYmls aXR5bGludXguY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51 eC90c3RfcWFjY2Vzc2liaWxpdHlsaW51eC5jcHAKK2luZGV4IDdiYTM3MTVlMTMuLjc1MmFhMTIy ZjYgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9vdGhlci9xYWNjZXNzaWJpbGl0eWxp bnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8v b3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3RfcWFjY2Vzc2liaWxpdHlsaW51eC5jcHAKK0BA IC0xNzksNiArMTc5LDcgQEAgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlMaW51eDo6aW5pdFRlc3RD YXNlKCkKKyAgICAgUVZFUklGWSghYWRkcmVzcy5pc0VtcHR5KCkpOworIAorICAgICBtX3dpbmRv dyA9IG5ldyBBY2Nlc3NpYmxlVGVzdFdpbmRvdygpOworKyAgICBtX3dpbmRvdy0+c2V0T2JqZWN0 TmFtZSgibWFpbldpbmRvdyJfTDEpOworICAgICBtX3dpbmRvdy0+c2hvdygpOworIAorICAgICBR VkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQobV93aW5kb3cpKTsKK0BAIC0yMzYs OCArMjM3LDExIEBAIGJvb2wgaGFzU3RhdGUoUURCdXNJbnRlcmZhY2UgKmludGVyZmFjZSwgQXRz cGlTdGF0ZVR5cGUgc3RhdGUpCisgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlMaW51eDo6dGVzdExh YmVsKCkKKyB7CisgICAgIFFMYWJlbCAqbCA9IG5ldyBRTGFiZWwobV93aW5kb3cpOworKyAgICBs LT5zZXRPYmplY3ROYW1lKCJ0aGVPYmplY3ROYW1lIl9MMSk7CisgICAgIGwtPnNldFRleHQoIkhl bGxvIEExMXkiKTsKKyAgICAgbV93aW5kb3ctPmFkZFdpZGdldChsKTsKKysgICAgYXV0byBhMTF5 RW1wdHkgPSBuZXcgUUxhYmVsKG1fd2luZG93KTsKKysgICAgbV93aW5kb3ctPmFkZFdpZGdldChs KTsKKyAKKyAgICAgLy8gQXBwbGljYXRpb24KKyAgICAgUUNPTVBBUkUoZ2V0UGFyZW50KG1haW5X aW5kb3cpLCBRTGF0aW4xU3RyaW5nKEFUU1BJX0RCVVNfUEFUSF9ST09UKSk7CitAQCAtMjQ5LDYg KzI1Myw4IEBAIHZvaWQgdHN0X1FBY2Nlc3NpYmlsaXR5TGludXg6OnRlc3RMYWJlbCgpCisgICAg IFFDT01QQVJFKGdldENoaWxkcmVuKGxhYmVsSW50ZXJmYWNlKS5jb3VudCgpLCAwKTsKKyAgICAg UUNPTVBBUkUobGFiZWxJbnRlcmZhY2UtPmNhbGwoUURCdXM6OkJsb2NrLCAiR2V0Um9sZU5hbWUi KS5hcmd1bWVudHMoKS5maXJzdCgpLnRvU3RyaW5nKCksIFFMYXRpbjFTdHJpbmcoImxhYmVsIikp OworICAgICBRQ09NUEFSRShsYWJlbEludGVyZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ssICJHZXRS b2xlIikuYXJndW1lbnRzKCkuZmlyc3QoKS50b1VJbnQoKSwgMjl1KTsKKysgICAgUUNPTVBBUkUo bGFiZWxJbnRlcmZhY2UtPmNhbGwoUURCdXM6OkJsb2NrLCAiR2V0QWNjZXNzaWJsZUlkIikuYXJn dW1lbnRzKCkuZmlyc3QoKS50b1N0cmluZygpLAorKyAgICAgICAgICAgICBRTGF0aW4xU3RyaW5n KCJtYWluV2luZG93LnRoZU9iamVjdE5hbWUiKSk7CisgICAgIFFDT01QQVJFKGdldFBhcmVudChs YWJlbEludGVyZmFjZSksIG1haW5XaW5kb3ctPnBhdGgoKSk7CisgICAgIFFWRVJJRlkoIWhhc1N0 YXRlKGxhYmVsSW50ZXJmYWNlLCBBVFNQSV9TVEFURV9FRElUQUJMRSkpOworICAgICBRVkVSSUZZ KGhhc1N0YXRlKGxhYmVsSW50ZXJmYWNlLCBBVFNQSV9TVEFURV9SRUFEX09OTFkpKTsKK0BAIC0y NTYsNyArMjYyLDEyIEBAIHZvaWQgdHN0X1FBY2Nlc3NpYmlsaXR5TGludXg6OnRlc3RMYWJlbCgp CisgICAgIGwtPnNldFRleHQoIk5ldyB0ZXh0Iik7CisgICAgIFFDT01QQVJFKGxhYmVsSW50ZXJm YWNlLT5wcm9wZXJ0eSgiTmFtZSIpLnRvU3RyaW5nKCksIGwtPnRleHQoKSk7CisgCisrICAgIGF1 dG8gKmExMXlFbXB0eUludGVyZmFjZSA9IGdldEludGVyZmFjZShjaGlsZHJlbi5hdCgxKSwgIm9y Zy5hMTF5LmF0c3BpLkFjY2Vzc2libGUiKTsKKysgICAgUUNPTVBBUkUoYTExeUVtcHR5SW50ZXJm YWNlLT5jYWxsKFFEQnVzOjpCbG9jaywgIkdldEFjY2Vzc2libGVJZCIpLmFyZ3VtZW50cygpLmZp cnN0KCkudG9TdHJpbmcoKSwKKysgICAgICAgICAgICAgUUxhdGluMVN0cmluZygibWFpbldpbmRv dy5RTGFiZWwiKSk7CisrCisgICAgIG1fd2luZG93LT5jbGVhckNoaWxkcmVuKCk7CisrICAgIGRl bGV0ZSBhMTF5RW1wdHlJbnRlcmZhY2U7CisgICAgIGRlbGV0ZSBsYWJlbEludGVyZmFjZTsKKyB9 CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5lbC9xc3FscXVlcnkv dHN0X3FzcWxxdWVyeS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9zcWwva2VybmVsL3FzcWxxdWVy eS90c3RfcXNxbHF1ZXJ5LmNwcAoraW5kZXggNzZkZjYxYzg5Mi4uNmQ2ZDY1Yjc5MSAxMDA2NDQK Ky0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5L3RzdF9xc3FscXVl cnkuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9zcWwva2VybmVsL3FzcWxxdWVyeS90c3Rf cXNxbHF1ZXJ5LmNwcAorQEAgLTEsNiArMSw2IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq KgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29weXJp Z2h0IChDKSAyMDIyIFRoZSBRdCBDb21wYW55IEx0ZC4KKyAqKiBDb250YWN0OiBodHRwczovL3d3 dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGVz dCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC02OCw2ICs2OCw4IEBAIHByaXZhdGUgc2xv dHM6CisgICAgIHZvaWQgcXVlcnlfZXhlYygpOworICAgICB2b2lkIGV4ZWNFcnJvclJlY292ZXJ5 X2RhdGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9CisgICAgIHZvaWQgZXhlY0Vycm9yUmVjb3Zlcnko KTsKKysgICAgdm9pZCBwcmVtYXR1cmVFeGVjX2RhdGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9Cisr ICAgIHZvaWQgcHJlbWF0dXJlRXhlYygpOworICAgICB2b2lkIGZpcnN0X2RhdGEoKSB7IGdlbmVy aWNfZGF0YSgpOyB9CisgICAgIHZvaWQgZmlyc3QoKTsKKyAgICAgdm9pZCBuZXh0X2RhdGEoKSB7 IGdlbmVyaWNfZGF0YSgpOyB9CitAQCAtMjc3MCw2ICsyNzcyLDM1IEBAIHZvaWQgdHN0X1FTcWxR dWVyeTo6ZXhlY0Vycm9yUmVjb3ZlcnkoKQorICAgICBRVkVSSUZZX1NRTCggcSwgZXhlYygpICk7 CisgfQorIAorK3ZvaWQgdHN0X1FTcWxRdWVyeTo6cHJlbWF0dXJlRXhlYygpCisreworKyAgICBR RkVUQ0goUVN0cmluZywgZGJOYW1lKTsKKysgICAgLy8gV2Ugb25seSB3YW50IHRoZSBlbmdpbmUg bmFtZSwgZm9yIGFkZERhdGFiYXNlKCk6CisrICAgIGludCBjdXQgPSBkYk5hbWUuaW5kZXhPZihR Q2hhcignQCcpKTsKKysgICAgaWYgKGN1dCA8IDApCisrICAgICAgICBRU0tJUCgiRmFpbGVkIHRv IHBhcnNlIGRhdGFiYXNlIHR5cGUgb3V0IG9mIG5hbWUiKTsKKysgICAgZGJOYW1lLnRydW5jYXRl KGN1dCk7CisrICAgIGN1dCA9IGRiTmFtZS5pbmRleE9mKFFDaGFyKCdfJykpOworKyAgICBpZiAo Y3V0ID49IDApCisrICAgICAgICBkYk5hbWUgPSBkYk5hbWUubWlkKGN1dCArIDEpOworKworKyAg ICBhdXRvIGRiID0gUVNxbERhdGFiYXNlOjphZGREYXRhYmFzZShkYk5hbWUpOworKyAgICBRU3Fs UXVlcnkgcShkYik7CisrCisrICAgIFFUZXN0OjppZ25vcmVNZXNzYWdlKFF0V2FybmluZ01zZywK KysgICAgICAgICAgICAgICAgICAgICAgICAgIlFTcWxEYXRhYmFzZVByaXZhdGU6OnJlbW92ZURh dGFiYXNlOiBjb25uZWN0aW9uICIKKysgICAgICAgICAgICAgICAgICAgICAgICAgIidxdF9zcWxf ZGVmYXVsdF9jb25uZWN0aW9uJyBpcyBzdGlsbCBpbiB1c2UsIGFsbCAiCisrICAgICAgICAgICAg ICAgICAgICAgICAgICJxdWVyaWVzIHdpbGwgY2Vhc2UgdG8gd29yay4iKTsKKysgICAgUVRlc3Q6 Omlnbm9yZU1lc3NhZ2UoUXRXYXJuaW5nTXNnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAi UVNxbERhdGFiYXNlUHJpdmF0ZTo6YWRkRGF0YWJhc2U6IGR1cGxpY2F0ZSBjb25uZWN0aW9uIG5h bWUgIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAiJ3F0X3NxbF9kZWZhdWx0X2Nvbm5lY3Rp b24nLCBvbGQgY29ubmVjdGlvbiByZW1vdmVkLiIpOworKyAgICBhdXRvIG90aGVyRGIgPSBRU3Fs RGF0YWJhc2U6OmFkZERhdGFiYXNlKGRiTmFtZSk7CisrCisrICAgIFFUZXN0OjppZ25vcmVNZXNz YWdlKFF0V2FybmluZ01zZywgIlFTcWxRdWVyeTo6ZXhlYzogY2FsbGVkIGJlZm9yZSBkcml2ZXIg aGFzIGJlZW4gc2V0IHVwIik7CisrICAgIC8vIFFUQlVHLTEwMDAzNzogc2hvdWxkbid0IGNyYXNo ICEKKysgICAgUVZFUklGWSghcS5leGVjKCJzZWxlY3Qgc3R1ZmYgZnJvbSBUaGVWb2lkIikpOwor K30KKysKKyB2b2lkIHRzdF9RU3FsUXVlcnk6Omxhc3RJbnNlcnRJZCgpCisgeworICAgICBRRkVU Q0goIFFTdHJpbmcsIGRiTmFtZSApOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rl c3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0 ZXIuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0 ZXIvdHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKK2luZGV4IDRhYTNmOGQ2MGIuLmQy MDUwYTYxYWEgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFj dGl0ZW1tb2RlbHRlc3Rlci90c3RfcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAorKysrIGIv cXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIvdHN0X3Fh YnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKK0BAIC0xMTUsNiArMTE1LDEwIEBAIHZvaWQgdHN0 X1FBYnN0cmFjdEl0ZW1Nb2RlbFRlc3Rlcjo6c3RhbmRhcmRJdGVtTW9kZWxaZXJvQ29sdW1ucygp CisgICAgIC8vIFFUQlVHLTkyODg2CisgICAgIG1vZGVsLmluc2VydFJvd3MoMCwgNSk7CisgICAg IG1vZGVsLnJlbW92ZVJvd3MoMSwgMik7CisrCisrICAgIGNvbnN0IFFNb2RlbEluZGV4IHBhcmVu dEluZGV4ID0gbW9kZWwuaW5kZXgoMCwgMCk7CisrICAgIG1vZGVsLmluc2VydFJvd3MoMCwgNSwg cGFyZW50SW5kZXgpOworKyAgICBtb2RlbC5yZW1vdmVSb3dzKDEsIDIsIHBhcmVudEluZGV4KTsK KyB9CisgCisgdm9pZCB0c3RfUUFic3RyYWN0SXRlbU1vZGVsVGVzdGVyOjp0ZXN0SW5zZXJ0VGhy b3VnaFByb3h5KCkKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvYWxs bW9jc19iYXNlbGluZV9pbi5qc29uIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1v Y3NfYmFzZWxpbmVfaW4uanNvbgoraW5kZXggMTJhNGEyMmExOS4uY2U1MThlNzhmYiAxMDA2NDQK Ky0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9hbGxtb2NzX2Jhc2VsaW5lX2luLmpz b24KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9hbGxtb2NzX2Jhc2VsaW5lX2lu Lmpzb24KK0BAIC02NjgsNTAgKzY2OCw2IEBACisgICAgICAgICAiaW5wdXRGaWxlIjogInRhc2sx OTI1NTIuaCIsCisgICAgICAgICAib3V0cHV0UmV2aXNpb24iOiA2NworICAgICB9LAorLSAgICB7 CistICAgICAgICAiY2xhc3NlcyI6IFsKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAg ICJjbGFzc05hbWUiOiAiSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiIsCistICAgICAg ICAgICAgICAgICJvYmplY3QiOiB0cnVlLAorLSAgICAgICAgICAgICAgICAicXVhbGlmaWVkQ2xh c3NOYW1lIjogIklubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24iLAorLSAgICAgICAgICAg ICAgICAic2xvdHMiOiBbCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAg ICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJu YW1lIjogImEiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQi CistICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAg ICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAibmFtZSI6ICJiIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuVHlw ZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAgICAgICAg IHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAg ICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYyIsCistICAgICAgICAgICAgICAgICAgICAgICAg InJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAgICAgICAgIH0sCistICAgICAgICAg ICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMi LAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImQiLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiCistICAgICAgICAgICAgICAgICAgICB9LAor LSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3Mi OiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlIiwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAg ICAgICAgfQorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICAic3VwZXJDbGFz c2VzIjogWworLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAg ICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJR T2JqZWN0IgorLSAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICBdCistICAg ICAgICAgICAgfQorLSAgICAgICAgXSwKKy0gICAgICAgICJpbnB1dEZpbGUiOiAidGFzazE4OTk5 Ni5oIiwKKy0gICAgICAgICJvdXRwdXRSZXZpc2lvbiI6IDY3CistICAgIH0sCisgICAgIHsKKyAg ICAgICAgICJjbGFzc2VzIjogWworICAgICAgICAgICAgIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv dGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBybyBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21v Yy9tb2MucHJvCitpbmRleCBjMzI0YjNhOGNkLi40YWNlYjc4ZGMwIDEwMDY0NAorLS0tIGEvcXRi YXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL21vYy5wcm8KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRv L3Rvb2xzL21vYy9tb2MucHJvCitAQCAtMTUsNyArMTUsNyBAQCBjcm9zc19jb21waWxlOiBERUZJ TkVTICs9IE1PQ19DUk9TU19DT01QSUxFRAorIEhFQURFUlMgKz0gdXNpbmctbmFtZXNwYWNlcy5o IG5vLWtleXdvcmRzLmggdGFzazg3ODgzLmggYy1jb21tZW50cy5oIGJhY2tzbGFzaC1uZXdsaW5l cy5oIG9sZHN0eWxlLWNhc3RzLmggXAorICAgICAgICAgICAgc2xvdHMtd2l0aC12b2lkLXRlbXBs YXRlLmggcWludm9rYWJsZS5oIG5hbWVzcGFjZWQtZmxhZ3MuaCB0cmlncmFwaHMuaCBcCisgICAg ICAgICAgICBlc2NhcGVzLWluLXN0cmluZy1saXRlcmFscy5oIGNzdHlsZS1lbnVtcy5oIHFwcml2 YXRlc2xvdHMuaCBnYWRnZXR3aXRobm9lbnVtcy5oIFwKKy0gICAgICAgICAgIGRpci1pbi1pbmNs dWRlLXBhdGguaCBzaW5nbGVfZnVuY3Rpb25fa2V5d29yZC5oIHRhc2sxOTI1NTIuaCB0YXNrMTg5 OTk2LmggXAorKyAgICAgICAgICAgZGlyLWluLWluY2x1ZGUtcGF0aC5oIHNpbmdsZV9mdW5jdGlv bl9rZXl3b3JkLmggdGFzazE5MjU1Mi5oIFwKKyAgICAgICAgICAgIHRhc2syMzQ5MDkuaCB0YXNr MjQwMzY4LmggcHVyZS12aXJ0dWFsLXNpZ25hbHMuaCBjeHgxMS1lbnVtcy5oIFwKKyAgICAgICAg ICAgIGN4eDExLWZpbmFsLWNsYXNzZXMuaCBcCisgICAgICAgICAgICBjeHgxMS1leHBsaWNpdC1v dmVycmlkZS1jb250cm9sLmggXAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xz L21vYy90YXNrMTg5OTk2LmggYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdGFzazE4OTk5 Ni5oCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IGY5NGEwNTFiM2EuLjAwMDAwMDAw MDAKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90YXNrMTg5OTk2LmgKKysrKyAv ZGV2L251bGwKK0BAIC0xLDQ3ICswLDAgQEAKKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSoqCist KiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKy0qKiBDb250YWN0OiBo dHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCistKioKKy0qKiBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4KKy0qKgorLSoqICRRVF9CRUdJTl9M SUNFTlNFOkdQTC1FWENFUFQkCistKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCistKiogTGlj ZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMg ZmlsZSBpbgorLSoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVl bWVudCBwcm92aWRlZCB3aXRoIHRoZQorLSoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBp biBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorLSoqIGEgd3JpdHRlbiBh Z3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRl cm1zCistKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRp dGlvbnMuIEZvciBmdXJ0aGVyCistKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0g YXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKy0qKgorLSoqIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIFVzYWdlCistKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1 c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCistKiogR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCistKiogRm91bmRh dGlvbiB3aXRoIGV4Y2VwdGlvbnMgYXMgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BM My1FWENFUFQKKy0qKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxl YXNlIHJldmlldyB0aGUgZm9sbG93aW5nCistKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorLSoqIGJlIG1ldDog aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCistKioKKy0qKiAkUVRf RU5EX0xJQ0VOU0UkCistKioKKy0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLS8vIGlubGluZSBmdW5j dGlvbnMgY2FuIGhhdmUgdGhyb3cgZGVjbGFyYXRpb25zCistCistI2lmbmRlZiBUQVNLMTg5OTk2 X0gKKy0jZGVmaW5lIFRBU0sxODk5OTZfSAorLQorLSNpbmNsdWRlIDxRT2JqZWN0PgorLQorLWNs YXNzIElubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24gOiBwdWJsaWMgUU9iamVjdAorLXsK Ky0gICAgUV9PQkpFQ1QKKy0KKy1wdWJsaWMgc2xvdHM6CistICAgIHZvaWQgYSgpIHRocm93KCkg eyB9CistICAgIHZvaWQgYigpIGNvbnN0IHRocm93KCkgeyB9CistICAgIHZvaWQgYygpIHRocm93 KCk7CistICAgIHZvaWQgZCgpIHRocm93KGludCkgeyB9CistICAgIHZvaWQgZSgpIGNvbnN0IHRo cm93KGludCxkb3VibGUpIHsgfQorLX07CistCistI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3RzdF9tb2MuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9v bHMvbW9jL3RzdF9tb2MuY3BwCitpbmRleCBjNzE2YWVhZDIxLi4xNWRkOWU0MWU1IDEwMDY0NAor LS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3RzdF9tb2MuY3BwCisrKysgYi9xdGJh c2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAKK0BAIC02MzEsNyArNjMxLDYgQEAg cHVibGljOgorIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgaW5pdFRlc3RDYXNlKCk7CisgCist ICAgIHZvaWQgc2xvdFdpdGhFeGNlcHRpb24oKSB0aHJvdyhNeVN0cnVjdCk7CisgICAgIHZvaWQg ZG9udFN0cmlwTmFtZXNwYWNlcygpOworICAgICB2b2lkIG9sZFN0eWxlQ2FzdHMoKTsKKyAgICAg dm9pZCB3YXJuT25FeHRyYVNpZ25hbFNsb3RRdWFsaWZpYWN0aW9uKCk7CitAQCAtNjczLDcgKzY3 Miw2IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgdGVtcGxhdGVHdEd0KCk7CisgICAgIHZv aWQgcXByaXZhdGVzbG90cygpOworICAgICB2b2lkIHFwcml2YXRlcHJvcGVydGllcygpOworLSAg ICB2b2lkIGlubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24oKTsKKyAgICAgdm9pZCB3YXJu T25Qcm9wZXJ0eVdpdGhvdXRSRUFEKCk7CisgICAgIHZvaWQgY29uc3RydWN0b3JzKCk7CisgICAg IHZvaWQgdHlwZW5hbWVXaXRoVW5zaWduZWQoKTsKK0BAIC03ODQsMTIgKzc4Miw2IEBAIHZvaWQg dHN0X01vYzo6aW5pdFRlc3RDYXNlKCkKKyAjZW5kaWYKKyB9CisgCistdm9pZCB0c3RfTW9jOjpz bG90V2l0aEV4Y2VwdGlvbigpIHRocm93KE15U3RydWN0KQorLXsKKy0gICAgLy8gYmUgaGFwcHkK Ky0gICAgUVZFUklGWSh0cnVlKTsKKy19CistCisgdm9pZCB0c3RfTW9jOjpkb250U3RyaXBOYW1l c3BhY2VzKCkKKyB7CisgICAgIFNlbmRlciBzZW5kZXI7CitAQCAtODI0LDcgKzgxNiw3IEBAIHZv aWQgdHN0X01vYzo6b2xkU3R5bGVDYXN0cygpCisgCisgICAgIFFTdHJpbmdMaXN0IGFyZ3M7Cisg ICAgIGFyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysiIDw8ICItV29sZC1zdHlsZS1jYXN0IiA8 PCAiLUkiIDw8ICIuIgorLSAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8i IDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8ICItIjsKKysgICAg ICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAi LWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8PCAiLSI7CisgICAgIHByb2Muc3RhcnQoImdjYyIsIGFy Z3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7CisgICAgIHByb2Mud3Jp dGUobW9jT3V0KTsKK0BAIC04OTQsNyArODg2LDcgQEAgdm9pZCB0c3RfTW9jOjppbnB1dEZpbGVO YW1lV2l0aERvdHNCdXROb0V4dGVuc2lvbigpCisgCisgICAgIFFTdHJpbmdMaXN0IGFyZ3M7Cisg ICAgIGFyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysiIDw8ICItSSIgPDwgIi4uIgorLSAgICAg ICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICIt ZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8ICItIjsKKysgICAgICAgICA8PCAiLUkiIDw8IHF0SW5j bHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzF6 IiA8PCAiLSI7CisgICAgIHByb2Muc3RhcnQoImdjYyIsIGFyZ3MpOworICAgICBRVkVSSUZZKHBy b2Mud2FpdEZvclN0YXJ0ZWQoKSk7CisgICAgIHByb2Mud3JpdGUobW9jT3V0KTsKK0BAIC0xMTc0 LDcgKzExNjYsNyBAQCB2b2lkIHRzdF9Nb2M6Omlnbm9yZU9wdGlvbkNsYXNoZXMoKQorICAgICBR U3RyaW5nTGlzdCBnY2NBcmdzOworICAgICBnY2NBcmdzIDw8ICItYyIgPDwgIi14IiA8PCAiYysr IiA8PCAiLUkiIDw8ICIuLiIKKyAgICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwg Ii1JIiA8PCBpbmNsdWRlRGlyIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIKKy0gICAgICAgICA8PCAi LWZQSUMiIDw8ICItc3RkPWMrKzExIiA8PCAgIi0iOworKyAgICAgICAgIDw8ICItZlBJQyIgPDwg Ii1zdGQ9YysrMXoiIDw8ICAiLSI7CisgICAgIHByb2Muc3RhcnQoImdjYyIsIGdjY0FyZ3MpOwor ICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7CisgICAgIHByb2Mud3JpdGUobW9j T3V0KTsKK0BAIC0xNTkzLDIxICsxNTg1LDYgQEAgdm9pZCB0c3RfTW9jOjpxcHJpdmF0ZXByb3Bl cnRpZXMoKQorIAorIH0KKyAKKy0jaW5jbHVkZSAidGFzazE4OTk5Ni5oIgorLQorLXZvaWQgSW5s aW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbjo6YygpIHRocm93KCkge30KKy0KKy12b2lkIHRz dF9Nb2M6OmlubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24oKQorLXsKKy0gICAgSW5saW5l U2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiB0c3Q7CistICAgIGNvbnN0IFFNZXRhT2JqZWN0ICpt b2JqID0gdHN0Lm1ldGFPYmplY3QoKTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgi YSgpIikgIT0gLTEpOworLSAgICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90KCJiKCkiKSAhPSAt MSk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3QoImMoKSIpICE9IC0xKTsKKy0gICAg UVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgiZCgpIikgIT0gLTEpOworLSAgICBRVkVSSUZZKG1v YmotPmluZGV4T2ZTbG90KCJlKCkiKSAhPSAtMSk7CistfQorLQorIHZvaWQgdHN0X01vYzo6d2Fy bk9uUHJvcGVydHlXaXRob3V0UkVBRCgpCisgeworICNpZmRlZiBNT0NfQ1JPU1NfQ09NUElMRUQK K0BAIC0xODY5LDcgKzE4NDYsNyBAQCB2b2lkIHRzdF9Nb2M6Om5vdGlmeUVycm9yKCkKKyAKKyAg ICAgUVN0cmluZ0xpc3QgYXJnczsKKyAgICAgYXJncyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIg PDwgIi1JIiA8PCAiLiIKKy0gICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1v IiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzExIiA8PCAiLSI7CisrICAg ICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwg Ii1mUElDIiA8PCAiLXN0ZD1jKysxeiIgPDwgIi0iOworICAgICBwcm9jLnN0YXJ0KCJnY2MiLCBh cmdzKTsKKyAgICAgUVZFUklGWShwcm9jLndhaXRGb3JTdGFydGVkKCkpOworICAgICBwcm9jLndy aXRlKG1vY091dCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVt dmlld3MvcWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRv L3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9xaGVhZGVydmlldy5jcHAKK2luZGV4 IGMzNTVlZTk2NjUuLjg4YzA5ZGU4ZTAgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL2l0ZW12aWV3cy9xaGVhZGVydmlldy90c3RfcWhlYWRlcnZpZXcuY3BwCisrKysgYi9x dGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xaGVhZGVydmlldy90c3RfcWhlYWRl cnZpZXcuY3BwCitAQCAtMjUxLDYgKzI1MSw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQg dGVzdFJlc2V0Q2FjaGVkU2l6ZUhpbnQoKTsKKyAgICAgdm9pZCBzdGF0dXNUaXBzKCk7CisgICAg IHZvaWQgdGVzdFJlbW92aW5nQ29sdW1uc1ZpYUxheW91dENoYW5nZWQoKTsKKysgICAgdm9pZCB0 ZXN0TW9kZWxNb3ZpbmdDb2x1bW5zKCk7CisgCisgcHJvdGVjdGVkOgorICAgICB2b2lkIHNldHVw VGVzdERhdGEoYm9vbCB1c2VfcmVzZXRfbW9kZWwgPSBmYWxzZSk7CitAQCAtMzYwLDYgKzM2MSwx MiBAQCBwdWJsaWM6CisgICAgICAgICBlbmRSZW1vdmVDb2x1bW5zKCk7CisgICAgIH0KKyAKKysg ICAgdm9pZCBtb3ZlQ29sdW1uKGludCBmcm9tLCBpbnQgdG8pCisrICAgIHsKKysgICAgICAgIGJl Z2luTW92ZUNvbHVtbnMoUU1vZGVsSW5kZXgoKSwgZnJvbSwgZnJvbSwgUU1vZGVsSW5kZXgoKSwg dG8pOworKyAgICAgICAgZW5kTW92ZUNvbHVtbnMoKTsKKysgICAgfQorKworICAgICB2b2lkIGNs ZWFudXAoKQorICAgICB7CisgICAgICAgICBlbWl0IGxheW91dEFib3V0VG9CZUNoYW5nZWQoKTsK K0BAIC0zNjI3LDUgKzM2MzQsMTggQEAgdm9pZCB0c3RfUUhlYWRlclZpZXc6OnRlc3RSZW1vdmlu Z0NvbHVtbnNWaWFMYXlvdXRDaGFuZ2VkKCkKKyAgICAgLy8gVGhlIG1haW4gcG9pbnQgb2YgdGhp cyB0ZXN0IGlzIHRoYXQgdGhlIHNlY3Rpb24tc2l6ZSByZXN0b3JpbmcgY29kZSBkaWRuJ3QgZ28g b3V0IG9mIGJvdW5kcy4KKyB9CisgCisrdm9pZCB0c3RfUUhlYWRlclZpZXc6OnRlc3RNb2RlbE1v dmluZ0NvbHVtbnMoKQorK3sKKysgICAgUXRUZXN0TW9kZWwgbW9kZWwoMTAsIDEwKTsKKysgICAg UUhlYWRlclZpZXcgaHYoUXQ6Okhvcml6b250YWwpOworKyAgICBodi5zZXRNb2RlbCgmbW9kZWwp OworKyAgICBodi5yZXNpemVTZWN0aW9ucyhRSGVhZGVyVmlldzo6UmVzaXplVG9Db250ZW50cyk7 CisrICAgIGh2LnNob3coKTsKKysKKysgICAgUVBlcnNpc3RlbnRNb2RlbEluZGV4IGluZGV4MyA9 IG1vZGVsLmluZGV4KDAsIDMpOworKyAgICBtb2RlbC5tb3ZlQ29sdW1uKDMsIDEpOworKyAgICBR Q09NUEFSRShpbmRleDMuY29sdW1uKCksIDEpOworK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RSGVh ZGVyVmlldykKKyAjaW5jbHVkZSAidHN0X3FoZWFkZXJ2aWV3Lm1vYyIKK2RpZmYgLS1naXQgYS9x dGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3L3RzdF9xdGFibGV2 aWV3LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcv dHN0X3F0YWJsZXZpZXcuY3BwCitpbmRleCA3NjEzNTdiMjUyLi4wNmJiNzA2MDc0IDEwMDY0NAor LS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy90c3Rf cXRhYmxldmlldy5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdz L3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3BwCitAQCAtMzk3LDYgKzM5Nyw3IEBAIHByaXZh dGUgc2xvdHM6CisgICAgIHZvaWQgY2hlY2tIZWFkZXJNaW5TaXplKCk7CisgCisgICAgIHZvaWQg cmVzaXplVG9Db250ZW50cygpOworKyAgICB2b2lkIHJlc2l6ZVRvQ29udGVudHNTcGFucygpOwor IAorICAgICB2b2lkIHRhYkZvY3VzKCk7CisgICAgIHZvaWQgYmlnTW9kZWwoKTsKK0BAIC0zNzIx LDYgKzM3MjIsNzAgQEAgdm9pZCB0c3RfUVRhYmxlVmlldzo6cmVzaXplVG9Db250ZW50cygpCisg CisgfQorIAorKworK2NsYXNzIFNwYW5Nb2RlbCA6IHB1YmxpYyBRQWJzdHJhY3RUYWJsZU1vZGVs CisreworK3B1YmxpYzoKKysgICAgU3Bhbk1vZGVsKGJvb2wgc2VjdGlvbnNNb3ZlZCkKKysgICAg ICAgIDogX3NlY3Rpb25zTW92ZWQoc2VjdGlvbnNNb3ZlZCkKKysgICAge30KKysgICAgaW50IGNv bHVtbkNvdW50KGNvbnN0IFFNb2RlbEluZGV4ICYgPSB7fSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1 cm4gMjsgfQorKyAgICBpbnQgcm93Q291bnQoY29uc3QgUU1vZGVsSW5kZXggJiA9IHt9KSBjb25z dCBvdmVycmlkZSB7IHJldHVybiAxOyB9CisrICAgIFFWYXJpYW50IGRhdGEoY29uc3QgUU1vZGVs SW5kZXggJmlkeCwgaW50IHJvbGUgPSBRdDo6RGlzcGxheVJvbGUpIGNvbnN0IG92ZXJyaWRlCisr ICAgIHsKKysgICAgICAgIGlmIChyb2xlICE9IFF0OjpEaXNwbGF5Um9sZSkKKysgICAgICAgICAg ICByZXR1cm4gUVZhcmlhbnQoKTsKKysgICAgICAgIGNvbnN0IGludCBjb2wgPSBfc2VjdGlvbnNN b3ZlZCA/IDEgLSBpZHguY29sdW1uKCkgOiBpZHguY29sdW1uKCk7CisrICAgICAgICBpZiAoY29s ID09IDApCisrICAgICAgICAgICAgcmV0dXJuICJMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwg Y29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRp ZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4iOworKyAgICAgICAgcmV0dXJu IFFWYXJpYW50KCk7CisrICAgIH0KKytwcml2YXRlOgorKyAgICBib29sIF9zZWN0aW9uc01vdmVk OworK307CisrCisrCisrdm9pZCB0c3RfUVRhYmxlVmlldzo6cmVzaXplVG9Db250ZW50c1NwYW5z KCkKKyt7CisrICAgIFNwYW5Nb2RlbCBtb2RlbDEoZmFsc2UpOworKyAgICBTcGFuTW9kZWwgbW9k ZWwyKHRydWUpOworKyAgICBRVGFibGVWaWV3IHZpZXcxLCB2aWV3MiwgdmlldzM7CisrICAgIHZp ZXcxLnNldE1vZGVsKCZtb2RlbDEpOworKyAgICB2aWV3Mi5zZXRNb2RlbCgmbW9kZWwyKTsKKysg ICAgdmlldzIuaG9yaXpvbnRhbEhlYWRlcigpLT5tb3ZlU2VjdGlvbigwLCAxKTsKKysgICAgdmll dzMuc2V0TW9kZWwoJm1vZGVsMSk7CisrCisrICAgIHZpZXcxLnNldFNwYW4oMCwgMCwgMSwgMik7 CisrICAgIHZpZXcyLnNldFNwYW4oMCwgMSwgMSwgMik7CisrICAgIHZpZXcxLnNob3coKTsKKysg ICAgdmlldzIuc2hvdygpOworKyAgICB2aWV3My5zaG93KCk7CisrICAgIFFWRVJJRlkoUVRlc3Q6 OnFXYWl0Rm9yV2luZG93RXhwb3NlZCgmdmlldzEpKTsKKysgICAgUVZFUklGWShRVGVzdDo6cVdh aXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3MikpOworKyAgICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZv cldpbmRvd0V4cG9zZWQoJnZpZXczKSk7CisrICAgIHZpZXcxLnNldENvbHVtbldpZHRoKDAsIDEw MCk7CisrICAgIHZpZXcxLnNldENvbHVtbldpZHRoKDEsIDEwMCk7CisrICAgIHZpZXcyLnNldENv bHVtbldpZHRoKDAsIDEwMCk7CisrICAgIHZpZXcyLnNldENvbHVtbldpZHRoKDEsIDEwMCk7Cisr ICAgIHZpZXczLnNldENvbHVtbldpZHRoKDAsIDIwMCk7CisrCisrICAgIHZpZXcxLnJlc2l6ZVJv d1RvQ29udGVudHMoMCk7CisrICAgIHZpZXcyLnJlc2l6ZVJvd1RvQ29udGVudHMoMCk7CisrICAg IHZpZXczLnJlc2l6ZVJvd1RvQ29udGVudHMoMCk7CisrICAgIFFDT01QQVJFKHZpZXcxLnJvd0hl aWdodCgwKSwgdmlldzMucm93SGVpZ2h0KDApKTsKKysgICAgUUNPTVBBUkUodmlldzIucm93SGVp Z2h0KDApLCB2aWV3My5yb3dIZWlnaHQoMCkpOworKworKyAgICB2aWV3My5yZXNpemVDb2x1bW5U b0NvbnRlbnRzKDApOworKyAgICB2aWV3My5yZXNpemVSb3dUb0NvbnRlbnRzKDApOworKyAgICAv LyBoZWlnaHQgc2hvdWxkIGJlIG9ubHkgMSB0ZXh0IGxpbmUgZm9yIGVhc3kgdGVzdGluZworKyAg ICB2aWV3MS5zZXRSb3dIZWlnaHQoMCwgdmlldzMudmVydGljYWxIZWFkZXIoKS0+c2VjdGlvblNp emUoMCkpOworKyAgICB2aWV3Mi5zZXRSb3dIZWlnaHQoMCwgdmlldzMudmVydGljYWxIZWFkZXIo KS0+c2VjdGlvblNpemUoMCkpOworKyAgICB2aWV3MS5yZXNpemVDb2x1bW5Ub0NvbnRlbnRzKDAp OworKyAgICB2aWV3Mi5yZXNpemVDb2x1bW5Ub0NvbnRlbnRzKDEpOworKyAgICBRQ09NUEFSRSh2 aWV3MS5jb2x1bW5XaWR0aCgwKSwgdmlldzMuY29sdW1uV2lkdGgoMCkgLSB2aWV3MS5jb2x1bW5X aWR0aCgxKSk7CisrICAgIFFDT01QQVJFKHZpZXcyLmNvbHVtbldpZHRoKDApLCB2aWV3My5jb2x1 bW5XaWR0aCgwKSAtIHZpZXcyLmNvbHVtbldpZHRoKDEpKTsKKyt9CisrCisgUVRfQkVHSU5fTkFN RVNQQUNFCisgZXh0ZXJuIGJvb2wgUV9XSURHRVRTX0VYUE9SVCBxdF90YWJfYWxsX3dpZGdldHMo KTsgLy8gcWFwcGxpY2F0aW9uLmNwcAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9x dGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2tlcm5lbC9xYXBwbGljYXRpb24vdHN0X3FhcHBsaWNh dGlvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2tlcm5lbC9xYXBwbGljYXRpb24v dHN0X3FhcHBsaWNhdGlvbi5jcHAKK2luZGV4IGEzYjhlZjc4ZDguLjQ5NTVjZWJkNWQgMTAwNjQ0 CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2tlcm5lbC9xYXBwbGljYXRpb24vdHN0 X3FhcHBsaWNhdGlvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVs L3FhcHBsaWNhdGlvbi90c3RfcWFwcGxpY2F0aW9uLmNwcAorQEAgLTE0OTgsNyArMTQ5OCw3IEBA IHZvaWQgdHN0X1FBcHBsaWNhdGlvbjo6ZGVza3RvcFNldHRpbmdzQXdhcmUoKQorICAgICBlbnZp cm9ubWVudCArPSBRTGF0aW4xU3RyaW5nKCJRVF9NQUNfRElTQUJMRV9GT1JFR1JPVU5EX0FQUExJ Q0FUSU9OX1RSQU5TRk9STT0xIik7CisgICAgIHRlc3RQcm9jZXNzLnNldEVudmlyb25tZW50KGVu dmlyb25tZW50KTsKKyAjZW5kaWYKKy0gICAgdGVzdFByb2Nlc3Muc3RhcnQoImRlc2t0b3BzZXR0 aW5nc2F3YXJlX2hlbHBlciIpOworKyAgICB0ZXN0UHJvY2Vzcy5zdGFydCgiLi9kZXNrdG9wc2V0 dGluZ3Nhd2FyZV9oZWxwZXIiKTsKKyAgICAgUVZFUklGWTIodGVzdFByb2Nlc3Mud2FpdEZvclN0 YXJ0ZWQoKSwKKyAgICAgICAgICAgICAgcVByaW50YWJsZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJD YW5ub3Qgc3RhcnQgJ2Rlc2t0b3BzZXR0aW5nc2F3YXJlX2hlbHBlcic6ICUxIikuYXJnKHRlc3RQ cm9jZXNzLmVycm9yU3RyaW5nKCkpKSk7CisgICAgIFFWRVJJRlkodGVzdFByb2Nlc3Mud2FpdEZv ckZpbmlzaGVkKDEwMDAwKSk7CitAQCAtMjQ1Miw3ICsyNDUyLDcgQEAgdm9pZCB0c3RfUUFwcGxp Y2F0aW9uOjpxdGJ1Z18xMjY3MygpCisgI2lmIFFUX0NPTkZJRyhwcm9jZXNzKQorICAgICBRUHJv Y2VzcyB0ZXN0UHJvY2VzczsKKyAgICAgUVN0cmluZ0xpc3QgYXJndW1lbnRzOworLSAgICB0ZXN0 UHJvY2Vzcy5zdGFydCgibW9kYWxfaGVscGVyIiwgYXJndW1lbnRzKTsKKysgICAgdGVzdFByb2Nl c3Muc3RhcnQoIi4vbW9kYWxfaGVscGVyIiwgYXJndW1lbnRzKTsKKyAgICAgUVZFUklGWTIodGVz dFByb2Nlc3Mud2FpdEZvclN0YXJ0ZWQoKSwKKyAgICAgICAgICAgICAgcVByaW50YWJsZShRU3Ry aW5nOjpmcm9tTGF0aW4xKCJDYW5ub3Qgc3RhcnQgJ21vZGFsX2hlbHBlcic6ICUxIikuYXJnKHRl c3RQcm9jZXNzLmVycm9yU3RyaW5nKCkpKSk7CisgICAgIFFWRVJJRlkodGVzdFByb2Nlc3Mud2Fp dEZvckZpbmlzaGVkKDIwMDAwKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lk Z2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi90c3RfcWFic3RyYWN0YnV0dG9uLmNwcCBiL3F0 YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24vdHN0X3FhYnN0 cmFjdGJ1dHRvbi5jcHAKK2luZGV4IGViMTA4YTQwZGUuLmRjYTU1MjhjMWIgMTAwNjQ0CistLS0g YS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uL3RzdF9x YWJzdHJhY3RidXR0b24uY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdl dHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0b24uY3BwCitAQCAtNDEsNiArNDEs NyBAQAorIAorICNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmg+CisgI2luY2x1 ZGUgPHFwYS9xcGxhdGZvcm1pbnRlZ3JhdGlvbi5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3Jt dGhlbWUuaD4KKyAKKyBjbGFzcyB0c3RfUUFic3RyYWN0QnV0dG9uIDogcHVibGljIFFPYmplY3QK KyB7CitAQCAtNzYsNiArNzcsOCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGtleU5hdmln YXRpb24oKTsKKyAjZW5kaWYKKyAKKysgICAgdm9pZCBidXR0b25QcmVzc0tleXMoKTsKKysKKyBw cm90ZWN0ZWQgc2xvdHM6CisgICAgIHZvaWQgb25DbGlja2VkKCk7CisgICAgIHZvaWQgb25Ub2dn bGVkKCBib29sIG9uICk7CitAQCAtMjY5LDcgKzI3MiwxMyBAQCB2b2lkIHRzdF9RQWJzdHJhY3RC dXR0b246OnNldEF1dG9SZXBlYXQoKQorICAgICAgICAgUUNPTVBBUkUocHJlc3NfY291bnQsIGNs aWNrX2NvdW50KTsKKyAgICAgICAgIFFWRVJJRlkoY2xpY2tfY291bnQgPiAxKTsKKyAgICAgICAg IGJyZWFrOworLSAgICBjYXNlIDQ6CisrICAgIGNhc2UgNDogeworKyAgICAgICAgY29uc3QgYXV0 byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1l KCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1l SGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysg ICAgICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRlcikpIHsKKysg ICAgICAgICAgICBRU0tJUCgicGxhdGZvcm0gdGhlbWUgaGFzIEtleV9FbnRlciBpbiBCdXR0b25Q cmVzc0tleXMiKTsKKysgICAgICAgIH0KKyAgICAgICAgIC8vIGNoZWNrIHRoYXQgcHJlc3Npbmcg RU5URVIgaGFzIG5vIGVmZmVjdCB3aGVuIGF1dG9yZXBlYXQgaXMgZmFsc2UKKyAgICAgICAgIHRl c3RXaWRnZXQtPnNldERvd24oIGZhbHNlICk7CisgICAgICAgICB0ZXN0V2lkZ2V0LT5zZXRBdXRv UmVwZWF0KCBmYWxzZSApOworQEAgLTI4Niw3ICsyOTUsMTQgQEAgdm9pZCB0c3RfUUFic3RyYWN0 QnV0dG9uOjpzZXRBdXRvUmVwZWF0KCkKKyAKKyAgICAgICAgIFFWRVJJRlkoIGNsaWNrX2NvdW50 ID09IDAgKTsKKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIDU6CisrICAgIH0KKysgICAgY2Fz ZSA1OiB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNh dGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVz c0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZh bHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250 YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgICAgIFFTS0lQKCJwbGF0Zm9ybSB0aGVt ZSBoYXMgS2V5X0VudGVyIGluIEJ1dHRvblByZXNzS2V5cyIpOworKyAgICAgICAgfQorICAgICAg ICAgLy8gY2hlY2sgdGhhdCBwcmVzc2luZyBFTlRFUiBoYXMgbm8gZWZmZWN0IHdoZW4gYXV0b3Jl cGVhdCBpcyB0cnVlCisgICAgICAgICB0ZXN0V2lkZ2V0LT5zZXREb3duKCBmYWxzZSApOworICAg ICAgICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCggdHJ1ZSApOworQEAgLTMwNCw2ICszMjAs NyBAQCB2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OnNldEF1dG9SZXBlYXQoKQorIAorICAgICAg ICAgUVZFUklGWSggY2xpY2tfY291bnQgPT0gMCApOworICAgICAgICAgYnJlYWs7CisrICAgIH0K KyAgICAgY2FzZSA2OgorICAgICAgICAgLy8gdmVyaWZ5IGF1dG9yZXBlYXQgaXMgb2ZmIGJ5IGRl ZmF1bHQuCisgICAgICAgICBNeUJ1dHRvbiB0bXAoIDApOworQEAgLTY1MSw1ICs2NjgsMTYgQEAg dm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjprZXlOYXZpZ2F0aW9uKCkKKyB9CisgI2VuZGlmCisg Cisrdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjpidXR0b25QcmVzc0tleXMoKQorK3sKKysgICAg Y29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0 Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7Cisr ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYnV0dG9uUHJlc3NLZXlzLmxlbmd0aCgpOyArK2kpIHsK KysgICAgICAgIFFUZXN0OjprZXlDbGljayh0ZXN0V2lkZ2V0LCBidXR0b25QcmVzc0tleXNbaV0p OworKyAgICAgICAgUUNPTVBBUkUoY2xpY2tfY291bnQsIGkgKyAxKTsKKysgICAgfQorK30KKysK KyBRVEVTVF9NQUlOKHRzdF9RQWJzdHJhY3RCdXR0b24pCisgI2luY2x1ZGUgInRzdF9xYWJzdHJh Y3RidXR0b24ubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lk Z2V0cy9xY29tYm9ib3gvdHN0X3Fjb21ib2JveC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRn ZXRzL3dpZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9ib3guY3BwCitpbmRleCAzMjQzNzA1MGY1 Li40NmI1YWY2ZDYzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRn ZXRzL3Fjb21ib2JveC90c3RfcWNvbWJvYm94LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC90c3RfcWNvbWJvYm94LmNwcAorQEAgLTE2OCw2ICsx NjgsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGNoZWNrTWVudUl0ZW1Qb3NXaGVuU3R5 bGVTaGVldElzU2V0KCk7CisgICAgIHZvaWQgY2hlY2tFbWJlZGRlZExpbmVFZGl0V2hlblN0eWxl U2hlZXRJc1NldCgpOworICAgICB2b2lkIHByb3BhZ2F0ZVN0eWxlQ2hhbmdlcygpOworKyAgICB2 b2lkIGJ1dHRvblByZXNzS2V5cygpOworIAorIHByaXZhdGU6CisgICAgIFBsYXRmb3JtSW5wdXRD b250ZXh0IG1fcGxhdGZvcm1JbnB1dENvbnRleHQ7CitAQCAtMTY4Miw2ICsxNjgzLDE2IEBAIHZv aWQgdHN0X1FDb21ib0JveDo6c2V0TW9kZWwoKQorICAgICBRQ09NUEFSRShib3gucm9vdE1vZGVs SW5kZXgoKSwgcm9vdE1vZGVsSW5kZXgpOworICAgICBib3guc2V0TW9kZWwoYm94Lm1vZGVsKCkp OworICAgICBRQ09NUEFSRShib3gucm9vdE1vZGVsSW5kZXgoKSwgcm9vdE1vZGVsSW5kZXgpOwor KworKyAgICAvLyBjaGVjayB0aGF0IHNldHRpbmcgdGhlIHNhbWUgbW9kZWwgYXMgdGhlIGNvbXBs ZXRlcidzIGRvZXNuJ3QgY3Jhc2gKKysgICAgUUNvbXBsZXRlciAqY29tcGxldGVyID0gbmV3IFFD b21wbGV0ZXIoJmJveCk7CisrICAgIGJveC5zZXRFZGl0YWJsZSh0cnVlKTsKKysgICAgYm94LnNl dENvbXBsZXRlcihjb21wbGV0ZXIpOworKyAgICBhdXRvICpsaXN0TW9kZWwgPSBuZXcgUVN0cmlu Z0xpc3RNb2RlbCh7ICJvbmUiLCAidHdvIiB9LCBjb21wbGV0ZXIpOworKyAgICBjb21wbGV0ZXIt PnNldE1vZGVsKGxpc3RNb2RlbCk7CisrICAgIFFDT01QQVJFKGxpc3RNb2RlbC0+cm93Q291bnQo KSwgMik7IC8vIG1ha2Ugc3VyZSBpdCB3YXNuJ3QgZGVsZXRlZAorKyAgICBib3guc2V0TW9kZWwo bGlzdE1vZGVsKTsKKysgICAgUUNPTVBBUkUobGlzdE1vZGVsLT5yb3dDb3VudCgpLCAyKTsgLy8g bWFrZSBzdXJlIGl0IHdhc24ndCBkZWxldGVkCisgfQorIAorIHZvaWQgdHN0X1FDb21ib0JveDo6 c2V0Q3VzdG9tTW9kZWxBbmRWaWV3KCkKK0BAIC0zNjMyLDUgKzM2NDMsMjQgQEAgdm9pZCB0c3Rf UUNvbWJvQm94Ojpwcm9wYWdhdGVTdHlsZUNoYW5nZXMoKQorICAgICBRVkVSSUZZKGZyYW1lU3R5 bGUuaW5xdWlyZWQpOworIH0KKyAKKyt2b2lkIHRzdF9RQ29tYm9Cb3g6OmJ1dHRvblByZXNzS2V5 cygpCisreworKyAgICBRQ29tYm9Cb3ggY29tYm9Cb3g7CisrICAgIGNvbWJvQm94LnNldEVkaXRh YmxlKGZhbHNlKTsKKysgICAgY29tYm9Cb3guYWRkSXRlbShRU3RyaW5nOjpudW1iZXIoMSkpOwor KyAgICBjb21ib0JveC5hZGRJdGVtKFFTdHJpbmc6Om51bWJlcigyKSk7CisrICAgIGNvbnN0IGF1 dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVt ZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGlu dChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBmb3Ig KGludCBpID0gMDsgaSA8IGJ1dHRvblByZXNzS2V5cy5sZW5ndGgoKTsgKytpKSB7CisrICAgICAg ICBRVGVzdDo6a2V5Q2xpY2soJmNvbWJvQm94LCBidXR0b25QcmVzc0tleXNbaV0pOworKyAgICAg ICAgLy8gT24gc29tZSBwbGF0Zm9ybXMsIGEgd2luZG93IHdpbGwgbm90IGJlIGltbWVkaWF0ZWx5 IHZpc2libGUsCisrICAgICAgICAvLyBidXQgdGFrZSBzb21lIGV2ZW50LWxvb3AgaXRlcmF0aW9u cyB0byBjb21wbGV0ZS4KKysgICAgICAgIC8vIFVzaW5nIFFUUllfVkVSSUZZIHRvIGRlYWwgd2l0 aCB0aGF0LgorKyAgICAgICAgUVRSWV9WRVJJRlkoY29tYm9Cb3gudmlldygpLT5pc1Zpc2libGUo KSk7CisrICAgICAgICBjb21ib0JveC5oaWRlUG9wdXAoKTsKKysgICAgfQorK30KKysKKyBRVEVT VF9NQUlOKHRzdF9RQ29tYm9Cb3gpCisgI2luY2x1ZGUgInRzdF9xY29tYm9ib3gubW9jIgorZGlm ZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmti dXR0b24vcWNvbW1hbmRsaW5rYnV0dG9uLnBybyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMv d2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vcWNvbW1hbmRsaW5rYnV0dG9uLnBybworaW5kZXgg YmUzY2ZjZDEwNC4uYzIyOGZkZmNjYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vcWNvbW1hbmRsaW5rYnV0dG9uLnBybwor KysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRv bi9xY29tbWFuZGxpbmtidXR0b24ucHJvCitAQCAtMSw2ICsxLDYgQEAKKyBDT05GSUcgKz0gdGVz dGNhc2UKKyBUQVJHRVQgPSB0c3RfcWNvbW1hbmRsaW5rYnV0dG9uCistUVQgKz0gd2lkZ2V0cyB0 ZXN0bGliCisrUVQgKz0gd2lkZ2V0cyB0ZXN0bGliIGd1aS1wcml2YXRlCisgU09VUkNFUyAgKz0g dHN0X3Fjb21tYW5kbGlua2J1dHRvbi5jcHAKKyAKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVz dHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3RzdF9xY29tbWFuZGxp bmtidXR0b24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5k bGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcAoraW5kZXggMDA0NGQzM2M2Ni4u NGNmMDYyOTZlNCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0 cy9xY29tbWFuZGxpbmtidXR0b24vdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5jcHAKKysrKyBiL3F0 YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vdHN0X3Fj b21tYW5kbGlua2J1dHRvbi5jcHAKK0BAIC00MCw2ICs0MCw5IEBACisgI2luY2x1ZGUgPFFHcmlk TGF5b3V0PgorICNpbmNsdWRlIDxRUGFpbnRlcj4KKyAKKysjaW5jbHVkZSA8cHJpdmF0ZS9xZ3Vp YXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKysKKyBj bGFzcyB0c3RfUUNvbW1hbmRMaW5rQnV0dG9uIDogcHVibGljIFFPYmplY3QKKyB7CisgICAgIFFf T0JKRUNUCitAQCAtMjIzLDYgKzIyNiwxMyBAQCB2b2lkIHRzdF9RQ29tbWFuZExpbmtCdXR0b246 OnNldEF1dG9SZXBlYXQoKQorICAgICAvLyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBu byBlZmZlY3QKKyAgICAgcmVzZXRDb3VudGVycygpOworICAgICB0ZXN0V2lkZ2V0LT5zZXREb3du KCBmYWxzZSApOworKyAgICAvLyBTa2lwIGFmdGVyIHJlc2V0IGlmIEJ1dHRvblByZXNzS2V5cyBo YXMgS2V5X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxp Y2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NL ZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFM aXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpL ZXlfRW50ZXIpKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKyAgICAgdGVzdFdpZGdldC0+ c2V0QXV0b1JlcGVhdCggZmFsc2UgKTsKKyAgICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0 LCBRdDo6S2V5X0VudGVyICk7CisgCitAQCAtMjU1LDYgKzI2NSwxNCBAQCB2b2lkIHRzdF9RQ29t bWFuZExpbmtCdXR0b246OnByZXNzZWQoKQorICAgICBRQ09NUEFSRSggcHJlc3NfY291bnQsICh1 aW50KTEgKTsKKyAgICAgUUNPTVBBUkUoIHJlbGVhc2VfY291bnQsICh1aW50KTEgKTsKKyAKKysg ICAgLy8gU2tpcCBpZiBCdXR0b25QcmVzc0tleXMgaGFzIEtleV9FbnRlcgorKyAgICBjb25zdCBh dXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhl bWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhp bnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYg KGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgcmV0 dXJuOworKyAgICB9CisrCisgICAgIFFUZXN0OjprZXlQcmVzcyggdGVzdFdpZGdldCxRdDo6S2V5 X0VudGVyICk7CisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwgKHVpbnQpMSApOworICAgICBR Q09NUEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvcWdyb3VwYm94LnBybyBiL3F0YmFz ZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvcWdyb3VwYm94LnBybworaW5k ZXggNGE1ZTc2ZmY2NS4uYTIzNWZhMWZhYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRv L3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvcWdyb3VwYm94LnBybworKysrIGIvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gucHJvCitAQCAtMSw2 ICsxLDYgQEAKKyBDT05GSUcgKz0gdGVzdGNhc2UKKyBUQVJHRVQgPSB0c3RfcWdyb3VwYm94Cist UVQgKz0gd2lkZ2V0cyB0ZXN0bGliCisrUVQgKz0gd2lkZ2V0cyB0ZXN0bGliIGd1aS1wcml2YXRl CisgU09VUkNFUyAgKz0gdHN0X3Fncm91cGJveC5jcHAKKyAKKyAKK2RpZmYgLS1naXQgYS9xdGJh c2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3RzdF9xZ3JvdXBib3guY3Bw IGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC90c3RfcWdyb3Vw Ym94LmNwcAoraW5kZXggNGZiNWQyNjJjYS4uZDhkNzU2MmI3MyAxMDA2NDQKKy0tLSBhL3F0YmFz ZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvdHN0X3Fncm91cGJveC5jcHAK KysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvdHN0X3Fn cm91cGJveC5jcHAKK0BAIC0zNSw2ICszNSw5IEBACisgI2luY2x1ZGUgPFFSYWRpb0J1dHRvbj4K KyAjaW5jbHVkZSA8UURpYWxvZz4KKyAKKysjaW5jbHVkZSA8cHJpdmF0ZS9xZ3VpYXBwbGljYXRp b25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKysKKyAjaW5jbHVkZSAi cWdyb3VwYm94LmgiCisgCisgY2xhc3MgdHN0X1FHcm91cEJveCA6IHB1YmxpYyBRT2JqZWN0CitA QCAtNjksNiArNzIsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHByb3BhZ2F0ZUZvY3Vz KCk7CisgICAgIHZvaWQgdGFza19RVEJVR18xOTE3MF9pZ25vcmVNb3VzZVJlbGVhc2VFdmVudCgp OworICAgICB2b2lkIHRhc2tfUVRCVUdfMTU1MTlfcHJvcGFnYXRlTW91c2VFdmVudHMoKTsKKysg ICAgdm9pZCBidXR0b25QcmVzc0tleXMoKTsKKyAKKyBwcml2YXRlOgorICAgICBib29sIGNoZWNr ZWQ7CitAQCAtNjEwLDYgKzYxNCwyMCBAQCB2b2lkIHRzdF9RR3JvdXBCb3g6OnRhc2tfUVRCVUdf MTU1MTlfcHJvcGFnYXRlTW91c2VFdmVudHMoKQorICAgICBRQ09NUEFSRShwYXJlbnQubW91c2VN b3ZlZCwgdHJ1ZSk7CisgfQorIAorK3ZvaWQgdHN0X1FHcm91cEJveDo6YnV0dG9uUHJlc3NLZXlz KCkKKyt7CisrICAgIFFHcm91cEJveCBncm91cEJveDsKKysgICAgZ3JvdXBCb3guc2V0Q2hlY2th YmxlKHRydWUpOworKyAgICBRU2lnbmFsU3B5IGNsaWNrZWRTcHkoJmdyb3VwQm94LCAmUUdyb3Vw Qm94OjpjbGlja2VkKTsKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBw bGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVz c0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8 UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYnV0dG9uUHJlc3NL ZXlzLmxlbmd0aCgpOyArK2kpIHsKKysgICAgICAgIFFUZXN0OjprZXlDbGljaygmZ3JvdXBCb3gs IGJ1dHRvblByZXNzS2V5c1tpXSk7CisrICAgICAgICBRQ09NUEFSRShjbGlja2VkU3B5Lmxlbmd0 aCgpLCBpICsgMSk7CisrICAgIH0KKyt9CisrCisgdm9pZCB0c3RfUUdyb3VwQm94OjpzZW5kTW91 c2VNb3ZlRXZlbnQoUVdpZGdldCAqd2lkZ2V0LCBjb25zdCBRUG9pbnQgJmxvY2FsUG9zKQorIHsK KyAgICAgLy8gU2VuZCBhIE1vdXNlTW92ZSBldmVudCB3aXRob3V0IGFjdHVhbGx5IG1vdmluZyB0 aGUgcG9pbnRlcgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0 cy9xcHVzaGJ1dHRvbi9xcHVzaGJ1dHRvbi5wcm8gYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRz L3dpZGdldHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24ucHJvCitpbmRleCAzNTNhZDA2Y2EyLi5l NTVmNjE0OGYyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRz L3FwdXNoYnV0dG9uL3FwdXNoYnV0dG9uLnBybworKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lk Z2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3FwdXNoYnV0dG9uLnBybworQEAgLTEsNiArMSw2IEBA CisgQ09ORklHICs9IHRlc3RjYXNlCisgVEFSR0VUID0gdHN0X3FwdXNoYnV0dG9uCistUVQgKz0g d2lkZ2V0cyB0ZXN0bGliCisrUVQgKz0gd2lkZ2V0cyB0ZXN0bGliIGd1aS1wcml2YXRlCisgU09V UkNFUyAgKz0gdHN0X3FwdXNoYnV0dG9uLmNwcAorIAorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi90c3RfcXB1c2hidXR0b24uY3Bw IGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVz aGJ1dHRvbi5jcHAKK2luZGV4IGU4MTg1MTRhNzkuLjQwNDNlOTMyNmEgMTAwNjQ0CistLS0gYS9x dGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vdHN0X3FwdXNoYnV0 dG9uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0 dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAKK0BAIC00MSw2ICs0MSw5IEBACisgI2luY2x1ZGUgPFFT dHlsZUZhY3Rvcnk+CisgI2luY2x1ZGUgPFFUYWJXaWRnZXQ+CisgCisrI2luY2x1ZGUgPHByaXZh dGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+ CisrCisgY2xhc3MgdHN0X1FQdXNoQnV0dG9uIDogcHVibGljIFFPYmplY3QKKyB7CisgUV9PQkpF Q1QKK0BAIC0yMTIsNiArMjE1LDEzIEBAIHZvaWQgdHN0X1FQdXNoQnV0dG9uOjphdXRvUmVwZWF0 KCkKKyAgICAgLy8gY2hlY2sgdGhhdCBwcmVzc2luZyBFTlRFUiBoYXMgbm8gZWZmZWN0CisgICAg IHJlc2V0Q291bnRlcnMoKTsKKyAgICAgdGVzdFdpZGdldC0+c2V0RG93biggZmFsc2UgKTsKKysg ICAgLy8gU2tpcCBhZnRlciByZXNldCBpZiBCdXR0b25QcmVzc0tleXMgaGFzIEtleV9FbnRlcgor KyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6 OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4o KTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgewor KyAgICAgICAgcmV0dXJuOworKyAgICB9CisgICAgIHRlc3RXaWRnZXQtPnNldEF1dG9SZXBlYXQo IGZhbHNlICk7CisgICAgIFFUZXN0OjprZXlQcmVzcyggdGVzdFdpZGdldCwgUXQ6OktleV9FbnRl ciApOworIAorQEAgLTI0Nyw2ICsyNTcsMTQgQEAgdm9pZCB0c3RfUVB1c2hCdXR0b246OnByZXNz ZWQoKQorICAgICBRQ09NUEFSRSggcHJlc3NfY291bnQsICh1aW50KTEgKTsKKyAgICAgUUNPTVBB UkUoIHJlbGVhc2VfY291bnQsICh1aW50KTEgKTsKKyAKKysgICAgLy8gU2tpcCBpZiBCdXR0b25Q cmVzc0tleXMgaGFzIEtleV9FbnRlcgorKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9 IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1 dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250 YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisgICAg IFFUZXN0OjprZXlQcmVzcyggdGVzdFdpZGdldCxRdDo6S2V5X0VudGVyICk7CisgICAgIFFDT01Q QVJFKCBwcmVzc19jb3VudCwgKHVpbnQpMSApOworICAgICBRQ09NUEFSRSggcmVsZWFzZV9jb3Vu dCwgKHVpbnQpMSApOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9tYW51YWwvcmhpL2N1YmVt YXBfcmVuZGVyL2J1aWxkc2hhZGVyLmJhdCBiL3F0YmFzZS90ZXN0cy9tYW51YWwvcmhpL2N1YmVt YXBfcmVuZGVyL2J1aWxkc2hhZGVyLmJhdAorb2xkIG1vZGUgMTAwNzU1CituZXcgbW9kZSAxMDA2 NDQKK1N1Ym1vZHVsZSBxdGNvbm5lY3Rpdml0eSBlOTU3ZDQ4MS4uMDU2Mjk0YzA6CitkaWZmIC0t Z2l0IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9ibHVlei9oY2ltYW5hZ2VyLmNwcCBi L3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXovaGNpbWFuYWdlci5jcHAKK2luZGV4 IGUyNjM1ZmFlLi5hOGI4ZTNiOSAxMDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVl dG9vdGgvYmx1ZXovaGNpbWFuYWdlci5jcHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVl dG9vdGgvYmx1ZXovaGNpbWFuYWdlci5jcHAKK0BAIC01NjMsOSArNTYzLDExIEBAIHZvaWQgSGNp TWFuYWdlcjo6aGFuZGxlSGNpQWNsUGFja2V0KGNvbnN0IHF1aW50OCAqZGF0YSwgaW50IHNpemUp CisgCisgdm9pZCBIY2lNYW5hZ2VyOjpoYW5kbGVMZU1ldGFFdmVudChjb25zdCBxdWludDggKmRh dGEpCisgeworLSAgICAvLyBTcGVjIHY0LjIsIFZvbCAyLCBwYXJ0IEUsIDcuNy42NWZmCisrICAg IC8vIFNwZWMgdjUuMywgVm9sIDQsIHBhcnQgRSwgNy43LjY1LioKKyAgICAgc3dpdGNoICgqZGF0 YSkgeworLSAgICBjYXNlIDB4MTogeworKyAgICBjYXNlIDB4MTogLy8gSENJX0xFX0Nvbm5lY3Rp b25fQ29tcGxldGUKKysgICAgY2FzZSAweEE6IC8vIEhDSV9MRV9FbmhhbmNlZF9Db25uZWN0aW9u X0NvbXBsZXRlCisrICAgIHsKKyAgICAgICAgIGNvbnN0IHF1aW50MTYgaGFuZGxlID0gYnRfZ2V0 X2xlMTYoZGF0YSArIDIpOworICAgICAgICAgZW1pdCBjb25uZWN0aW9uQ29tcGxldGUoaGFuZGxl KTsKKyAgICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVl dG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3ZlcnlhZ2VudF9ibHVlei5jcHAgYi9xdGNvbm5l Y3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzZXJ2aWNlZGlzY292ZXJ5YWdlbnRfYmx1 ZXouY3BwCitpbmRleCA2YTkzMTQzYi4uNGExOGNmYzcgMTAwNjQ0CistLS0gYS9xdGNvbm5lY3Rp dml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzZXJ2aWNlZGlzY292ZXJ5YWdlbnRfYmx1ZXou Y3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzZXJ2aWNl ZGlzY292ZXJ5YWdlbnRfYmx1ZXouY3BwCitAQCAtMzIwLDcgKzMyMCwxMCBAQCB2b2lkIFFCbHVl dG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnRQcml2YXRlOjpfcV9maW5pc2hTZHBTY2FuKFFCbHVl dG9vdGhTZXJ2aWNlRAorICAgICAgICAgICAgIGZvciAoY29uc3QgUUJsdWV0b290aFV1aWQgJmlk IDogc2VydmljZUNsYXNzVXVpZHMpIHsKKyAgICAgICAgICAgICAgICAgaWYgKGlkLm1pbmltdW1T aXplKCkgPT0gMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VJbmZvLnNldFNlcnZp Y2VVdWlkKGlkKTsKKy0gICAgICAgICAgICAgICAgICAgIHNlcnZpY2VJbmZvLnNldFNlcnZpY2VO YW1lKFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnQ6OnRyKCJDdXN0b20gU2VydmljZSIp KTsKKysgICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlSW5mby5zZXJ2aWNlTmFtZSgpLmlz RW1wdHkoKSkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VJbmZvLnNldFNlcnZp Y2VOYW1lKAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFCbHVldG9vdGhT ZXJ2aWNlRGlzY292ZXJ5QWdlbnQ6OnRyKCJDdXN0b20gU2VydmljZSIpKTsKKysgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIFFCbHVldG9vdGhTZXJ2aWNlSW5mbzo6 U2VxdWVuY2UgbW9kU2VxID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZUlu Zm8uYXR0cmlidXRlKFFCbHVldG9vdGhTZXJ2aWNlSW5mbzo6U2VydmljZUNsYXNzSWRzKS52YWx1 ZTxRQmx1ZXRvb3RoU2VydmljZUluZm86OlNlcXVlbmNlPigpOworICAgICAgICAgICAgICAgICAg ICAgbW9kU2VxLnJlbW92ZU9uZShRVmFyaWFudDo6ZnJvbVZhbHVlKGlkKSk7CitAQCAtMzM0LDgg KzMzNywxMCBAQCB2b2lkIFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnRQcml2YXRlOjpf cV9maW5pc2hTZHBTY2FuKFFCbHVldG9vdGhTZXJ2aWNlRAorICAgICAgICAgICAgICAgICBxQ0Rl YnVnKFFUX0JUX0JMVUVaKSA8PCAiRGlzY292ZXJlZCBzZXJ2aWNlcyIgPDwgZGlzY292ZXJlZERl dmljZXMuYXQoMCkuYWRkcmVzcygpLnRvU3RyaW5nKCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPDwgc2VydmljZUluZm8uc2VydmljZU5hbWUoKSA8PCBzZXJ2aWNlSW5m by5zZXJ2aWNlVXVpZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8 ICI+Pj4iIDw8IHNlcnZpY2VJbmZvLnNlcnZpY2VDbGFzc1V1aWRzKCk7CistCistICAgICAgICAg ICAgICAgIGVtaXQgcS0+c2VydmljZURpc2NvdmVyZWQoc2VydmljZUluZm8pOworKyAgICAgICAg ICAgICAgICAvLyBVc2UgcXVldWVkIGNvbm5lY3Rpb24gdG8gYWxsb3cgdXMgZmluaXNoIHRoZSBz ZXJ2aWNlIGxvb3Bpbmc7IHRoZSBhcHBsaWNhdGlvbgorKyAgICAgICAgICAgICAgICAvLyBtaWdo dCBjYWxsIHN0b3AoKSB3aGVuIGl0IGhhcyBkZXRlY3RlZCB0aGUgc2VydmljZS1vZi1pbnRlcmVz dC4KKysgICAgICAgICAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZChxLCAic2Vydmlj ZURpc2NvdmVyZWQiLCBRdDo6UXVldWVkQ29ubmVjdGlvbiwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRX0FSRyhRQmx1ZXRvb3RoU2VydmljZUluZm8sIHNlcnZp Y2VJbmZvKSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICB9CitkaWZmIC0tZ2l0 IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0LmNwcCBiL3F0 Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldC5jcHAKK2luZGV4IGU0 ZDg1NDQ3Li5hYWRkNDc1NSAxMDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9v dGgvcWJsdWV0b290aHNvY2tldC5jcHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9v dGgvcWJsdWV0b290aHNvY2tldC5jcHAKK0BAIC01OTMsNyArNTkzLDcgQEAgdm9pZCBRQmx1ZXRv b3RoU29ja2V0OjpzZXRTb2NrZXRTdGF0ZShRQmx1ZXRvb3RoU29ja2V0OjpTb2NrZXRTdGF0ZSBz dGF0ZSkKKyBib29sIFFCbHVldG9vdGhTb2NrZXQ6OmNhblJlYWRMaW5lKCkgY29uc3QKKyB7Cisg ICAgIFFfRChjb25zdCBRQmx1ZXRvb3RoU29ja2V0QmFzZSk7CistICAgIHJldHVybiBkLT5jYW5S ZWFkTGluZSgpOworKyAgICByZXR1cm4gZC0+Y2FuUmVhZExpbmUoKSB8fCBRSU9EZXZpY2U6OmNh blJlYWRMaW5lKCk7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0Y29ubmVjdGl2aXR5L3Ny Yy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRidXMuY3BwIGIvcXRjb25uZWN0aXZp dHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAKK2luZGV4IDA4 NGFhOTU4Li5kNmFhMTdhNyAxMDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9v dGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRidXMuY3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS9z cmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXRfYmx1ZXpkYnVzLmNwcAorQEAgLTI4NCw2ICsy ODQsMTAgQEAgdm9pZCBRQmx1ZXRvb3RoU29ja2V0UHJpdmF0ZUJsdWV6REJ1czo6Y29ubmVjdFRv U2VydmljZSgKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorKyAgICBpZiAoc2VydmljZS5z b2NrZXRQcm90b2NvbCgpICE9IFFCbHVldG9vdGhTZXJ2aWNlSW5mbzo6UHJvdG9jb2w6OlVua25v d25Qcm90b2NvbCkKKysgICAgICAgIHNvY2tldFR5cGUgPSBzZXJ2aWNlLnNvY2tldFByb3RvY29s KCk7CisrICAgIHFDRGVidWcoUVRfQlRfQkxVRVopIDw8ICJTb2NrZXQgcHJvdG9jb2wgdXNlZDoi IDw8IHNvY2tldFR5cGU7CisrCisgICAgIGNvbm5lY3RUb1NlcnZpY2Uoc2VydmljZS5kZXZpY2Uo KS5hZGRyZXNzKCksIHRhcmdldFNlcnZpY2UsIG9wZW5Nb2RlKTsKKyB9CisgCitkaWZmIC0tZ2l0 IGEvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRvb3Roc29ja2V0L3RzdF9xYmx1ZXRv b3Roc29ja2V0LmNwcCBiL3F0Y29ubmVjdGl2aXR5L3Rlc3RzL2F1dG8vcWJsdWV0b290aHNvY2tl dC90c3RfcWJsdWV0b290aHNvY2tldC5jcHAKK2luZGV4IDA1YmMxYTBmLi5hN2I1ZWYxZiAxMDA2 NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5L3Rlc3RzL2F1dG8vcWJsdWV0b290aHNvY2tldC90c3Rf cWJsdWV0b290aHNvY2tldC5jcHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5L3Rlc3RzL2F1dG8vcWJs dWV0b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5jcHAKK0BAIC0xNDIsNyArMTQyLDcg QEAgdm9pZCB0c3RfUUJsdWV0b290aFNvY2tldDo6aW5pdFRlc3RDYXNlKCkKKyAgICAgcURlYnVn KCkgPDwgIlN0YXJ0aW5nIGRpc2NvdmVyeSI7CisgCisgICAgIHNkYS0+c2V0VXVpZEZpbHRlcihR Qmx1ZXRvb3RoVXVpZChRU3RyaW5nKFRFU1RfU0VSVklDRV9VVUlEKSkpOworLSAgICBzZGEtPnN0 YXJ0KFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnQ6Ok1pbmltYWxEaXNjb3ZlcnkpOwor KyAgICBzZGEtPnN0YXJ0KFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnQ6OkZ1bGxEaXNj b3ZlcnkpOworIAorICAgICBmb3IgKGludCBjb25uZWN0VGltZSA9IE1heENvbm5lY3RUaW1lOyAh ZG9uZV9kaXNjb3ZlcnkgJiYgY29ubmVjdFRpbWUgPiAwOyBjb25uZWN0VGltZSAtPSAxMDAwKQor ICAgICAgICAgUVRlc3Q6OnFXYWl0KDEwMDApOworU3VibW9kdWxlIHF0ZGVjbGFyYXRpdmUgZjU3 MDFmMGQuLjhkZWZlN2JmOgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9jb21t b24vcXFtbGpzZml4ZWRwb29sYXJyYXlfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2NvbW1v bi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmgKK2luZGV4IGI2NWI5OTRkNmMuLjE1YThjZDY4Nzgg MTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvY29tbW9uL3FxbWxqc2ZpeGVkcG9v bGFycmF5X3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2NvbW1vbi9xcW1sanNmaXhl ZHBvb2xhcnJheV9wLmgKK0BAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKKyAgICAgICAgIGlmIChR VHlwZUluZm88VD46OmlzQ29tcGxleCkgeworICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgICAgICAgbmV3IChkYXRhICsgaSkgVCh2ZWN0b3Iu YXQoaSkpOworLSAgICAgICAgfSBlbHNlIHsKKysgICAgICAgIH0gZWxzZSBpZiAoY291bnQpIHsK KyAgICAgICAgICAgICBtZW1jcHkoZGF0YSwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHZlY3Rv ci5jb25zdERhdGEoKSksIGNvdW50ICogc2l6ZW9mKFQpKTsKKyAgICAgICAgIH0KKyAgICAgfQor ZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9qc3J1bnRpbWUvcXY0cW9iamVjdHdy YXBwZXIuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pzcnVudGltZS9xdjRxb2JqZWN0d3Jh cHBlci5jcHAKK2luZGV4IGU1N2NkZDgyNzguLjk0NjEzNTk4YWYgMTAwNjQ0CistLS0gYS9xdGRl Y2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmplY3R3cmFwcGVyLmNwcAorKysrIGIv cXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pzcnVudGltZS9xdjRxb2JqZWN0d3JhcHBlci5jcHAKK0BA IC0xMTQ1LDggKzExNDUsNyBAQCB2b2lkIEhlYXA6OlFPYmplY3RXcmFwcGVyOjptYXJrT2JqZWN0 cyhIZWFwOjpCYXNlICp0aGF0LCBRVjQ6Ok1hcmtTdGFjayAqbWFya1N0YQorIHZvaWQgUU9iamVj dFdyYXBwZXI6OmRlc3Ryb3lPYmplY3QoYm9vbCBsYXN0Q2FsbCkKKyB7CisgICAgIEhlYXA6OlFP YmplY3RXcmFwcGVyICpoID0gZCgpOworLSAgICBpZiAoIWgtPmludGVybmFsQ2xhc3MpCistICAg ICAgICByZXR1cm47IC8vIGRlc3Ryb3lPYmplY3QgYWxyZWFkeSBnb3QgY2FsbGVkCisrICAgIFFf QVNTRVJUKGgtPmludGVybmFsQ2xhc3MpOworIAorICAgICBpZiAoaC0+b2JqZWN0KCkpIHsKKyAg ICAgICAgIFFRbWxEYXRhICpkZGF0YSA9IFFRbWxEYXRhOjpnZXQoaC0+b2JqZWN0KCksIGZhbHNl KTsKK0BAIC0xMTc2LDcgKzExNzUsNyBAQCB2b2lkIFFPYmplY3RXcmFwcGVyOjpkZXN0cm95T2Jq ZWN0KGJvb2wgbGFzdENhbGwpCisgICAgICAgICB9CisgICAgIH0KKyAKKy0gICAgaC0+fkRhdGEo KTsKKysgICAgaC0+ZGVzdHJveSgpOworIH0KKyAKKyAKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0 aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9tZW1v cnkvcXY0bW0uY3BwCitpbmRleCAwNmNhZjA0ZTVhLi5kYTE0OWE2N2M0IDEwMDY0NAorLS0tIGEv cXRkZWNsYXJhdGl2ZS9zcmMvcW1sL21lbW9yeS9xdjRtbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRp dmUvc3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwCitAQCAtOTgxLDcgKzk4MSw3IEBAIHZvaWQgTWVt b3J5TWFuYWdlcjo6c3dlZXAoYm9vbCBsYXN0U3dlZXAsIENsYXNzRGVzdHJveVN0YXRzQ2FsbGJh Y2sgY2xhc3NDb3VudFB0CisgCisgICAgIGlmIChNdWx0aXBseVdyYXBwZWRRT2JqZWN0TWFwICpt dWx0aXBseVdyYXBwZWRRT2JqZWN0cyA9IGVuZ2luZS0+bV9tdWx0aXBseVdyYXBwZWRRT2JqZWN0 cykgeworICAgICAgICAgZm9yIChNdWx0aXBseVdyYXBwZWRRT2JqZWN0TWFwOjpJdGVyYXRvciBp dCA9IG11bHRpcGx5V3JhcHBlZFFPYmplY3RzLT5iZWdpbigpOyBpdCAhPSBtdWx0aXBseVdyYXBw ZWRRT2JqZWN0cy0+ZW5kKCk7KSB7CistICAgICAgICAgICAgaWYgKCFpdC52YWx1ZSgpLmlzTnVs bE9yVW5kZWZpbmVkKCkpCisrICAgICAgICAgICAgaWYgKGl0LnZhbHVlKCkuaXNOdWxsT3JVbmRl ZmluZWQoKSkKKyAgICAgICAgICAgICAgICAgaXQgPSBtdWx0aXBseVdyYXBwZWRRT2JqZWN0cy0+ ZXJhc2UoaXQpOworICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgKytpdDsKK2Rp ZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWwu Y3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAor aW5kZXggMjA3OWE4ZWQwNC4uYTU3N2NiMjM1MSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUv c3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUv c3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKK0BAIC0zODksNiArMzg5LDEyIEBA IHZvaWQgUVFtbERlbGVnYXRlTW9kZWxQcml2YXRlOjpjb25uZWN0VG9BYnN0cmFjdEl0ZW1Nb2Rl bCgpCisgICAgICAgICAgICAgICAgICAgICAgIHEsICBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChf cV9yb3dzUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworICAgICBxbWxvYmplY3RfY29u bmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKHJvd3NBYm91dFRvQmVSZW1vdmVk KFFNb2RlbEluZGV4LGludCxpbnQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgcSwgIFFRbWxE ZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX3Jvd3NBYm91dFRvQmVSZW1vdmVkKFFNb2RlbEluZGV4LGlu dCxpbnQpKSk7CisrICAgIHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVs LCBTSUdOQUwoY29sdW1uc0luc2VydGVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwKKysgICAgICAg ICAgICAgICAgICAgICAgcSwgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3FfY29sdW1uc0luc2Vy dGVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIHFtbG9iamVjdF9jb25uZWN0KGFpbSwg UUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoY29sdW1uc1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50 LGludCkpLAorKyAgICAgICAgICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwgU0xP VChfcV9jb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBxbWxvYmpl Y3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKGNvbHVtbnNNb3ZlZChR TW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpLAorKyAgICAgICAgICAgICAgICAg ICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9jb2x1bW5zTW92ZWQoUU1vZGVsSW5k ZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSk7CisgICAgIHFtbG9iamVjdF9jb25uZWN0KGFp bSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoZGF0YUNoYW5nZWQoUU1vZGVsSW5kZXgsUU1v ZGVsSW5kZXgsUVZlY3RvcjxpbnQ+KSksCisgICAgICAgICAgICAgICAgICAgICAgIHEsIFFRbWxE ZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2RhdGFDaGFuZ2VkKFFNb2RlbEluZGV4LFFNb2RlbEluZGV4 LFFWZWN0b3I8aW50PikpKTsKKyAgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJ dGVtTW9kZWwsIFNJR05BTChyb3dzTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRl eCxpbnQpKSwKK0BAIC00MTMsNiArNDE5LDEyIEBAIHZvaWQgUVFtbERlbGVnYXRlTW9kZWxQcml2 YXRlOjpkaXNjb25uZWN0RnJvbUFic3RyYWN0SXRlbU1vZGVsKCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICBxLCBTTE9UKF9xX3Jvd3NBYm91dFRvQmVSZW1vdmVkKFFNb2RlbEluZGV4LGludCxp bnQpKSk7CisgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwocm93c1JlbW92ZWQo UU1vZGVsSW5kZXgsaW50LGludCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHEsIFNMT1Qo X3Ffcm93c1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgUU9iamVjdDo6ZGlz Y29ubmVjdChhaW0sIFNJR05BTChjb2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5kZXgsaW50LGludCkp LCBxLAorKyAgICAgICAgICAgICAgICAgICAgICAgIFNMT1QoX3FfY29sdW1uc0luc2VydGVkKFFN b2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdO QUwoY29sdW1uc1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLCBxLAorKyAgICAgICAgICAg ICAgICAgICAgICAgIFNMT1QoX3FfY29sdW1uc1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkp KTsKKysgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChjb2x1bW5zTW92ZWQoUU1v ZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSwgcSwKKysgICAgICAgICAgICAgICAg ICAgICAgICBTTE9UKF9xX2NvbHVtbnNNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbElu ZGV4LGludCkpKTsKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChkYXRhQ2hh bmdlZChRTW9kZWxJbmRleCxRTW9kZWxJbmRleCxRVmVjdG9yPGludD4pKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICBxLCBTTE9UKF9xX2RhdGFDaGFuZ2VkKFFNb2RlbEluZGV4LFFNb2RlbElu ZGV4LFFWZWN0b3I8aW50PikpKTsKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05B TChyb3dzTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSwKK0BAIC0x OTczLDYgKzE5ODUsMzggQEAgdm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3Ffcm93c01vdmVkKAor ICAgICB9CisgfQorIAorK3ZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2NvbHVtbnNJbnNlcnRl ZChjb25zdCBRTW9kZWxJbmRleCAmcGFyZW50LCBpbnQgYmVnaW4sIGludCBlbmQpCisreworKyAg ICBRX0QoUVFtbERlbGVnYXRlTW9kZWwpOworKyAgICBRX1VOVVNFRChlbmQpOworKyAgICBpZiAo cGFyZW50ID09IGQtPm1fYWRhcHRvck1vZGVsLnJvb3RJbmRleCAmJiBiZWdpbiA9PSAwKSB7Cisr ICAgICAgICAvLyBtYXJrIGFsbCBpdGVtcyBhcyBjaGFuZ2VkCisrICAgICAgICBfcV9pdGVtc0No YW5nZWQoMCwgZC0+bV9jb3VudCwgUVZlY3RvcjxpbnQ+KCkpOworKyAgICB9CisrfQorKworK3Zv aWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2NvbHVtbnNSZW1vdmVkKGNvbnN0IFFNb2RlbEluZGV4 ICZwYXJlbnQsIGludCBiZWdpbiwgaW50IGVuZCkKKyt7CisrICAgIFFfRChRUW1sRGVsZWdhdGVN b2RlbCk7CisrICAgIFFfVU5VU0VEKGVuZCk7CisrICAgIGlmIChwYXJlbnQgPT0gZC0+bV9hZGFw dG9yTW9kZWwucm9vdEluZGV4ICYmIGJlZ2luID09IDApIHsKKysgICAgICAgIC8vIG1hcmsgYWxs IGl0ZW1zIGFzIGNoYW5nZWQKKysgICAgICAgIF9xX2l0ZW1zQ2hhbmdlZCgwLCBkLT5tX2NvdW50 LCBRVmVjdG9yPGludD4oKSk7CisrICAgIH0KKyt9CisrCisrdm9pZCBRUW1sRGVsZWdhdGVNb2Rl bDo6X3FfY29sdW1uc01vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICZwYXJlbnQsIGludCBzdGFydCwg aW50IGVuZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg UU1vZGVsSW5kZXggJmRlc3RpbmF0aW9uLCBpbnQgY29sdW1uKQorK3sKKysgICAgUV9EKFFRbWxE ZWxlZ2F0ZU1vZGVsKTsKKysgICAgUV9VTlVTRUQoZW5kKTsKKysgICAgaWYgKChwYXJlbnQgPT0g ZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYmIHN0YXJ0ID09IDApCisrICAgICAgICB8fCAo ZGVzdGluYXRpb24gPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYmIGNvbHVtbiA9PSAw KSkgeworKyAgICAgICAgLy8gbWFyayBhbGwgaXRlbXMgYXMgY2hhbmdlZAorKyAgICAgICAgX3Ff aXRlbXNDaGFuZ2VkKDAsIGQtPm1fY291bnQsIFFWZWN0b3I8aW50PigpKTsKKysgICAgfQorK30K KysKKyB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9kYXRhQ2hhbmdlZChjb25zdCBRTW9kZWxJ bmRleCAmYmVnaW4sIGNvbnN0IFFNb2RlbEluZGV4ICZlbmQsIGNvbnN0IFFWZWN0b3I8aW50PiAm cm9sZXMpCisgeworICAgICBRX0QoUVFtbERlbGVnYXRlTW9kZWwpOworZGlmZiAtLWdpdCBhL3F0 ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbF9wLmggYi9xdGRlY2xh cmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWxfcC5oCitpbmRleCA4YWFiNGJh ZGNhLi5kMTQwYmZiYWFmIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxz L3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxz L3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaAorQEAgLTE1Miw2ICsxNTIsOSBAQCBwcml2YXRlIFFfU0xP VFM6CisgICAgIHZvaWQgX3FfaXRlbXNNb3ZlZChpbnQgZnJvbSwgaW50IHRvLCBpbnQgY291bnQp OworICAgICB2b2lkIF9xX21vZGVsUmVzZXQoKTsKKyAgICAgdm9pZCBfcV9yb3dzSW5zZXJ0ZWQo Y29uc3QgUU1vZGVsSW5kZXggJixpbnQsaW50KTsKKysgICAgdm9pZCBfcV9jb2x1bW5zSW5zZXJ0 ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBpbnQpOworKyAgICB2b2lkIF9xX2NvbHVtbnNS ZW1vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCwgaW50KTsKKysgICAgdm9pZCBfcV9jb2x1 bW5zTW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBpbnQsIGNvbnN0IFFNb2RlbEluZGV4 ICYsIGludCk7CisgICAgIHZvaWQgX3Ffcm93c0Fib3V0VG9CZVJlbW92ZWQoY29uc3QgUU1vZGVs SW5kZXggJnBhcmVudCwgaW50IGJlZ2luLCBpbnQgZW5kKTsKKyAgICAgdm9pZCBfcV9yb3dzUmVt b3ZlZChjb25zdCBRTW9kZWxJbmRleCAmLGludCxpbnQpOworICAgICB2b2lkIF9xX3Jvd3NNb3Zl ZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCwgY29uc3QgUU1vZGVsSW5kZXggJiwgaW50 KTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nl c3NpYmxlcXVpY2tpdGVtLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUv cWFjY2Vzc2libGVxdWlja2l0ZW0uY3BwCitpbmRleCA4NTcxOWZkYzgwLi43OGUyYWIzMDJjIDEw MDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJs ZXF1aWNraXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUv cWFjY2Vzc2libGVxdWlja2l0ZW0uY3BwCitAQCAtNDYsNiArNDYsNyBAQAorICNpbmNsdWRlICJR dFF1aWNrL3ByaXZhdGUvcXF1aWNrdGV4dGlucHV0X3AuaCIKKyAjaW5jbHVkZSAiUXRRdWljay9w cml2YXRlL3FxdWlja2FjY2Vzc2libGVhdHRhY2hlZF9wLmgiCisgI2luY2x1ZGUgIlF0UXVpY2sv cXF1aWNrdGV4dGRvY3VtZW50LmgiCisrI2luY2x1ZGUgIlF0UXVpY2svcXF1aWNrcmVuZGVyY29u dHJvbC5oIgorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorICNpZiBRVF9DT05GSUcoYWNjZXNzaWJp bGl0eSkKK0BAIC01Nyw3ICs1OCwxOSBAQCBRQWNjZXNzaWJsZVF1aWNrSXRlbTo6UUFjY2Vzc2li bGVRdWlja0l0ZW0oUVF1aWNrSXRlbSAqaXRlbSkKKyAKKyBRV2luZG93ICpRQWNjZXNzaWJsZVF1 aWNrSXRlbTo6d2luZG93KCkgY29uc3QKKyB7CistICAgIHJldHVybiBpdGVtKCktPndpbmRvdygp OworKyAgICBRUXVpY2tXaW5kb3cgKndpbmRvdyA9IGl0ZW0oKS0+d2luZG93KCk7CisrCisrICAg IC8vIEZvciBRUXVpY2tXaWRnZXQgdGhlIGFib3ZlIHdpbmRvdyB3aWxsIGJlIHRoZSBvZmZzY3Jl ZW4gUVF1aWNrV2luZG93LAorKyAgICAvLyB3aGljaCBpcyBub3QgYSBwYXJ0IG9mIHRoZSBhY2Nl c3NpYmlsaXR5IHRyZWUuIERldGVjdCB0aGlzIGNhc2UgYW5kCisrICAgIC8vIHJldHVybiB0aGUg d2luZG93IGZvciB0aGUgUVF1aWNrV2lkZ2V0IGluc3RlYWQuCisrICAgIGlmICh3aW5kb3cgJiYg IXdpbmRvdy0+aGFuZGxlKCkpIHsKKysgICAgICAgIGlmIChRUXVpY2tSZW5kZXJDb250cm9sICpy ZW5kZXJDb250cm9sID0gUVF1aWNrV2luZG93UHJpdmF0ZTo6Z2V0KHdpbmRvdyktPnJlbmRlckNv bnRyb2wpIHsKKysgICAgICAgICAgICBpZiAoUVdpbmRvdyAqcmVuZGVyV2luZG93ID0gcmVuZGVy Q29udHJvbC0+cmVuZGVyV2luZG93KG51bGxwdHIpKQorKyAgICAgICAgICAgICAgICByZXR1cm4g cmVuZGVyV2luZG93OworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIHJldHVybiB3aW5kb3c7 CisgfQorIAorIGludCBRQWNjZXNzaWJsZVF1aWNrSXRlbTo6Y2hpbGRDb3VudCgpIGNvbnN0CitA QCAtMTEzLDE5ICsxMjYsMTUgQEAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVp Y2tJdGVtOjpjaGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3QKKyBRQWNjZXNzaWJsZUludGVyZmFj ZSAqUUFjY2Vzc2libGVRdWlja0l0ZW06OnBhcmVudCgpIGNvbnN0CisgeworICAgICBRUXVpY2tJ dGVtICpwYXJlbnQgPSBpdGVtKCktPnBhcmVudEl0ZW0oKTsKKy0gICAgUVF1aWNrV2luZG93ICp3 aW5kb3cgPSBpdGVtKCktPndpbmRvdygpOworLSAgICBRUXVpY2tJdGVtICpjaSA9IHdpbmRvdyA/ IHdpbmRvdy0+Y29udGVudEl0ZW0oKSA6IG51bGxwdHI7CisrICAgIFFRdWlja1dpbmRvdyAqaXRl bVdpbmRvdyA9IGl0ZW0oKS0+d2luZG93KCk7CisrICAgIFFRdWlja0l0ZW0gKmNpID0gaXRlbVdp bmRvdyA/IGl0ZW1XaW5kb3ctPmNvbnRlbnRJdGVtKCkgOiBudWxscHRyOworICAgICB3aGlsZSAo cGFyZW50ICYmICFRUXVpY2tJdGVtUHJpdmF0ZTo6Z2V0KHBhcmVudCktPmlzQWNjZXNzaWJsZSAm JiBwYXJlbnQgIT0gY2kpCisgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudEl0ZW0oKTsK KyAKKyAgICAgaWYgKHBhcmVudCkgeworICAgICAgICAgaWYgKHBhcmVudCA9PSBjaSkgeworLSAg ICAgICAgICAgIC8vIEp1bXAgb3V0IHRvIHRoZSBzY2VuZSB3aWRnZXQgaWYgdGhlIHBhcmVudCBp cyB0aGUgcm9vdCBpdGVtLgorLSAgICAgICAgICAgIC8vIFRoZXJlIGFyZSB0d28gcm9vdCBpdGVt cywgUVF1aWNrV2luZG93Ojpyb290SXRlbSBhbmQKKy0gICAgICAgICAgICAvLyBRUXVpY2tWaWV3 OjpkZWNsYXJhdGl2ZVJvb3QuIFRoZSBmb3JtZXIgaXMgdGhlIHRydWUgcm9vdCBpdGVtLAorLSAg ICAgICAgICAgIC8vIGJ1dCBpcyBub3QgYSBwYXJ0IG9mIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUu IENoZWNrIGlmIHdlIGhpdAorLSAgICAgICAgICAgIC8vIGl0IGhlcmUgYW5kIHJldHVybiBhbiBp bnRlcmZhY2UgZm9yIHRoZSBzY2VuZSBpbnN0ZWFkLgorLSAgICAgICAgICAgIHJldHVybiBRQWNj ZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKHdpbmRvdyk7CisrICAgICAgICAgICAg Ly8gSnVtcCBvdXQgdG8gdGhlIHdpbmRvdyBpZiB0aGUgcGFyZW50IGlzIHRoZSByb290IGl0ZW0K KysgICAgICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OnF1ZXJ5QWNjZXNzaWJsZUludGVyZmFj ZSh3aW5kb3coKSk7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIHdoaWxlIChwYXJl bnQgJiYgIXBhcmVudC0+ZF9mdW5jKCktPmlzQWNjZXNzaWJsZSkKKyAgICAgICAgICAgICAgICAg cGFyZW50ID0gcGFyZW50LT5wYXJlbnRJdGVtKCk7CitAQCAtMTg4LDcgKzE5Nyw3IEBAIFFBY2Nl c3NpYmxlOjpTdGF0ZSBRQWNjZXNzaWJsZVF1aWNrSXRlbTo6c3RhdGUoKSBjb25zdAorICAgICBR UmVjdCB2aWV3UmVjdF8gPSB2aWV3UmVjdCgpOworICAgICBRUmVjdCBpdGVtUmVjdCA9IHJlY3Qo KTsKKyAKKy0gICAgaWYgKHZpZXdSZWN0Xy5pc051bGwoKSB8fCBpdGVtUmVjdC5pc051bGwoKSB8 fCAhaXRlbSgpLT53aW5kb3coKSB8fCAhaXRlbSgpLT53aW5kb3coKS0+aXNWaXNpYmxlKCkgfHwh aXRlbSgpLT5pc1Zpc2libGUoKSB8fCBxRnV6enlJc051bGwoaXRlbSgpLT5vcGFjaXR5KCkpKQor KyAgICBpZiAodmlld1JlY3RfLmlzTnVsbCgpIHx8IGl0ZW1SZWN0LmlzTnVsbCgpIHx8ICF3aW5k b3coKSB8fCAhd2luZG93KCktPmlzVmlzaWJsZSgpIHx8IWl0ZW0oKS0+aXNWaXNpYmxlKCkgfHwg cUZ1enp5SXNOdWxsKGl0ZW0oKS0+b3BhY2l0eSgpKSkKKyAgICAgICAgIHN0YXRlLmludmlzaWJs ZSA9IHRydWU7CisgICAgIGlmICghdmlld1JlY3RfLmludGVyc2VjdHMoaXRlbVJlY3QpKQorICAg ICAgICAgc3RhdGUub2Zmc2NyZWVuID0gdHJ1ZTsKK0BAIC0yMDEsNiArMjEwLDEwIEBAIFFBY2Nl c3NpYmxlOjpTdGF0ZSBRQWNjZXNzaWJsZVF1aWNrSXRlbTo6c3RhdGUoKSBjb25zdAorICAgICBp ZiAocm9sZSgpID09IFFBY2Nlc3NpYmxlOjpFZGl0YWJsZVRleHQpCisgICAgICAgICBpZiAoYXV0 byB0aSA9IHFvYmplY3RfY2FzdDxRUXVpY2tUZXh0SW5wdXQgKj4oaXRlbSgpKSkKKyAgICAgICAg ICAgICBzdGF0ZS5wYXNzd29yZEVkaXQgPSB0aS0+ZWNob01vZGUoKSAhPSBRUXVpY2tUZXh0SW5w dXQ6Ok5vcm1hbDsKKysgICAgaWYgKCFpdGVtKCktPmlzRW5hYmxlZCgpKSB7CisrICAgICAgICBz dGF0ZS5mb2N1c2FibGUgPSBmYWxzZTsKKysgICAgICAgIHN0YXRlLmRpc2FibGVkID0gdHJ1ZTsK KysgICAgfQorICAgICByZXR1cm4gc3RhdGU7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5oIGIvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmgK K2luZGV4IDM5ZmZjYWYzOWMuLjhiYWEwMTMzMGMgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZl L3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3AuaAorKysrIGIvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmgK K0BAIC01OCw3ICs1OCw3IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAorICNpZiBRVF9DT05GSUco YWNjZXNzaWJpbGl0eSkKKyAKKy1jbGFzcyBRQWNjZXNzaWJsZVF1aWNrV2luZG93IDogcHVibGlj IFFBY2Nlc3NpYmxlT2JqZWN0CisrY2xhc3MgUV9RVUlDS19FWFBPUlQgUUFjY2Vzc2libGVRdWlj a1dpbmRvdyA6IHB1YmxpYyBRQWNjZXNzaWJsZU9iamVjdAorIHsKKyBwdWJsaWM6CisgICAgIFFB Y2Nlc3NpYmxlUXVpY2tXaW5kb3coUVF1aWNrV2luZG93ICpvYmplY3QpOworZGlmZiAtLWdpdCBh L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2RyYWcuY3BwIGIvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrZHJhZy5jcHAKK2luZGV4IDgzMjFmY2ZlZWQuLjM4 MzA3OGIzYjkgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVp Y2tkcmFnLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrZHJh Zy5jcHAKK0BAIC00ODEsNyArNDgxLDkgQEAgdm9pZCBRUXVpY2tEcmFnQXR0YWNoZWQ6OnNldEtl eXMoY29uc3QgUVN0cmluZ0xpc3QgJmtleXMpCisgICAgIFxxbWxhdHRhY2hlZHByb3BlcnR5IHN0 cmluZ2xpc3QgUXRRdWljazo6RHJhZzo6bWltZURhdGEKKyAgICAgXHNpbmNlIDUuMgorIAorLSAg ICBUaGlzIHByb3BlcnR5IGhvbGRzIGEgbWFwIG9mIG1pbWVEYXRhIHRoYXQgaXMgdXNlZCBkdXJp bmcgc3RhcnREcmFnLgorKyAgICBUaGlzIHByb3BlcnR5IGhvbGRzIGEgbWFwIGZyb20gbWltZSB0 eXBlIHRvIGRhdGEgdGhhdCBpcyB1c2VkIGR1cmluZyBzdGFydERyYWcuCisrICAgIFRoZSBtaW1l IGRhdGEgbmVlZHMgdG8gYmUgYSBcYyBzdHJpbmcsIG9yIGFuIFxjIEFycmF5QnVmZmVyIHdpdGgg dGhlIGRhdGEgZW5jb2RlZAorKyAgICBhY2NvcmRpbmcgdG8gdGhlIG1pbWUgdHlwZS4KKyAqLwor IAorIFFWYXJpYW50TWFwIFFRdWlja0RyYWdBdHRhY2hlZDo6bWltZURhdGEoKSBjb25zdAorQEAg LTc2Niw4ICs3NjgsMTIgQEAgUXQ6OkRyb3BBY3Rpb24gUVF1aWNrRHJhZ0F0dGFjaGVkUHJpdmF0 ZTo6c3RhcnREcmFnKFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3QKKyAgICAgUURyYWcgKmRy YWcgPSBuZXcgUURyYWcoc291cmNlID8gc291cmNlIDogcSk7CisgICAgIFFNaW1lRGF0YSAqbWlt ZURhdGEgPSBuZXcgUU1pbWVEYXRhKCk7CisgCistICAgIGZvciAoYXV0byBpdCA9IGV4dGVybmFs TWltZURhdGEuY2JlZ2luKCksIGVuZCA9IGV4dGVybmFsTWltZURhdGEuY2VuZCgpOyBpdCAhPSBl bmQ7ICsraXQpCistICAgICAgICBtaW1lRGF0YS0+c2V0RGF0YShpdC5rZXkoKSwgaXQudmFsdWUo KS50b1N0cmluZygpLnRvVXRmOCgpKTsKKysgICAgZm9yIChhdXRvIGl0ID0gZXh0ZXJuYWxNaW1l RGF0YS5jYmVnaW4oKSwgZW5kID0gZXh0ZXJuYWxNaW1lRGF0YS5jZW5kKCk7IGl0ICE9IGVuZDsg KytpdCkgeworKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PFFNZXRhVHlwZTo6VHlwZT4oaXQudmFs dWUoKS50eXBlKCkpID09IFFNZXRhVHlwZTo6UUJ5dGVBcnJheSkKKysgICAgICAgICAgICBtaW1l RGF0YS0+c2V0RGF0YShpdC5rZXkoKSwgaXQudmFsdWUoKS50b0J5dGVBcnJheSgpKTsKKysgICAg ICAgIGVsc2UKKysgICAgICAgICAgICBtaW1lRGF0YS0+c2V0RGF0YShpdC5rZXkoKSwgaXQudmFs dWUoKS50b1N0cmluZygpLnRvVXRmOCgpKTsKKysgICAgfQorIAorICAgICBkcmFnLT5zZXRNaW1l RGF0YShtaW1lRGF0YSk7CisgICAgIGlmIChwaXhtYXBMb2FkZXIuaXNSZWFkeSgpKSB7CitkaWZm IC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbS5jcHAgYi9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtLmNwcAoraW5kZXggNzVmMTQ1 NzgxNi4uZGVjMGFlMTlhZSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0 ZW1zL3FxdWlja2l0ZW0uY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9x cXVpY2tpdGVtLmNwcAorQEAgLTU5LDYgKzU5LDcgQEAKKyAjaW5jbHVkZSA8UXRDb3JlL3ByaXZh dGUvcW51bWVyaWNfcC5oPgorICNpbmNsdWRlIDxRdEd1aS9xcGEvcXBsYXRmb3JtdGhlbWUuaD4K KyAjaW5jbHVkZSA8UXRDb3JlL3Fsb2dnaW5nY2F0ZWdvcnkuaD4KKysjaW5jbHVkZSA8UXRDb3Jl L3ByaXZhdGUvcWR1cGxpY2F0ZXRyYWNrZXJfcC5oPgorIAorICNpbmNsdWRlIDxwcml2YXRlL3Fx bWxnbG9iYWxfcC5oPgorICNpbmNsdWRlIDxwcml2YXRlL3FxbWxlbmdpbmVfcC5oPgorQEAgLTIz MjYsNiArMjMyNyw3IEBAIFFRdWlja0l0ZW06OlFRdWlja0l0ZW0oUVF1aWNrSXRlbVByaXZhdGUg JmRkLCBRUXVpY2tJdGVtICpwYXJlbnQpCisgUVF1aWNrSXRlbTo6flFRdWlja0l0ZW0oKQorIHsK KyAgICAgUV9EKFFRdWlja0l0ZW0pOworKyAgICBkLT5pbkRlc3RydWN0b3IgPSB0cnVlOworIAor ICAgICBpZiAoZC0+d2luZG93UmVmQ291bnQgPiAxKQorICAgICAgICAgZC0+d2luZG93UmVmQ291 bnQgPSAxOyAvLyBNYWtlIHN1cmUgd2luZG93IGlzIHNldCB0byBudWxsIGluIG5leHQgY2FsbCB0 byBkZXJlZldpbmRvdygpLgorQEAgLTI1MjYsNiArMjUyOCw3IEBAIFFRdWlja0l0ZW0qIFFRdWlj a0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW4oUVF1aWNrSXRlbSAqaXRl bSwgYm9vCisgICAgIFFRdWlja0l0ZW0gKmN1cnJlbnQgPSBpdGVtOworICAgICBxQ0RlYnVnKERC R19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hh aW46IHN0YXJ0SXRlbToiIDw8IHN0YXJ0SXRlbTsKKyAgICAgcUNEZWJ1ZyhEQkdfRk9DVVMpIDw8 ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluOiBmaXJzdEZy b21JdGVtOiIgPDwgZmlyc3RGcm9tSXRlbTsKKysgICAgUUR1cGxpY2F0ZVRyYWNrZXI8UVF1aWNr SXRlbSAqPiBjeWNsZURldGVjdG9yOworICAgICBkbyB7CisgICAgICAgICBxQ0RlYnVnKERCR19G T0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46 IGN1cnJlbnQ6IiA8PCBjdXJyZW50OworICAgICAgICAgcUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJR UXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluOiBmcm9tOiIgPDwg ZnJvbTsKK0BAIC0yNTkyLDcgKzI1OTUsMTAgQEAgUVF1aWNrSXRlbSogUVF1aWNrSXRlbVByaXZh dGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbihRUXVpY2tJdGVtICppdGVtLCBib28KKyAg ICAgICAgIC8vIHRyYXZlcnNlZCBhbGwgb2YgdGhlIGNoYWluIChieSBjb21wYXJlIHRoZSBbY3Vy cmVudF0gaXRlbSB3aXRoIFtzdGFydEl0ZW1dKQorICAgICAgICAgLy8gU2luY2UgdGhlIFtzdGFy dEl0ZW1dIG1pZ2h0IGJlIHByb21vdGVkIHRvIGl0cyBwYXJlbnQgaWYgaXQgaXMgaW52aXNpYmxl LAorICAgICAgICAgLy8gd2Ugc3RpbGwgaGF2ZSB0byBjaGVjayBbY3VycmVudF0gaXRlbSB3aXRo IG9yaWdpbmFsIHN0YXJ0IGl0ZW0KKy0gICAgICAgIGlmICgoY3VycmVudCA9PSBzdGFydEl0ZW0g fHwgY3VycmVudCA9PSBvcmlnaW5hbFN0YXJ0SXRlbSkgJiYgZnJvbSA9PSBmaXJzdEZyb21JdGVt KSB7CisrICAgICAgICAvLyBXZSBtaWdodCBhbHNvIHJ1biBpbnRvIGEgY3ljbGUgYmVmb3JlIHdl IHJlYWNoIGZpcnN0RnJvbUl0ZW0gYWdhaW4KKysgICAgICAgIC8vIGJ1dCBub3RlIHRoYXQgd2Ug aGF2ZSB0byBpZ25vcmUgY3VycmVudCBpZiB3ZSBhcmUgbWVhbnQgdG8gc2tpcCBpdAorKyAgICAg ICAgaWYgKCgoY3VycmVudCA9PSBzdGFydEl0ZW0gfHwgY3VycmVudCA9PSBvcmlnaW5hbFN0YXJ0 SXRlbSkgJiYgZnJvbSA9PSBmaXJzdEZyb21JdGVtKSB8fAorKyAgICAgICAgICAgICAgICAoIXNr aXAgJiYgY3ljbGVEZXRlY3Rvci5oYXNTZWVuKGN1cnJlbnQpKSkgeworICAgICAgICAgICAgIC8v IHdyYXBwZWQgYXJvdW5kLCBhdm9pZCBlbmRsZXNzIGxvb3BzCisgICAgICAgICAgICAgaWYgKGl0 ZW0gPT0gY29udGVudEl0ZW0pIHsKKyAgICAgICAgICAgICAgICAgcUNEZWJ1ZyhEQkdfRk9DVVMp IDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluOiBsb29w ZWQsIHJldHVybiBjb250ZW50SXRlbSI7CitAQCAtMjY4OSw5ICsyNjk1LDggQEAgdm9pZCBRUXVp Y2tJdGVtOjpzZXRQYXJlbnRJdGVtKFFRdWlja0l0ZW0gKnBhcmVudEl0ZW0pCisgCisgICAgICAg ICBjb25zdCBib29sIHdhc1Zpc2libGUgPSBpc1Zpc2libGUoKTsKKyAgICAgICAgIG9wLT5yZW1v dmVDaGlsZCh0aGlzKTsKKy0gICAgICAgIGlmICh3YXNWaXNpYmxlKSB7CisrICAgICAgICBpZiAo d2FzVmlzaWJsZSAmJiAhb3AtPmluRGVzdHJ1Y3RvcikKKyAgICAgICAgICAgICBlbWl0IG9sZFBh cmVudEl0ZW0tPnZpc2libGVDaGlsZHJlbkNoYW5nZWQoKTsKKy0gICAgICAgIH0KKyAgICAgfSBl bHNlIGlmIChkLT53aW5kb3cpIHsKKyAgICAgICAgIFFRdWlja1dpbmRvd1ByaXZhdGU6OmdldChk LT53aW5kb3cpLT5wYXJlbnRsZXNzSXRlbXMucmVtb3ZlKHRoaXMpOworICAgICB9CitAQCAtMjc2 OCw4ICsyNzczLDkgQEAgdm9pZCBRUXVpY2tJdGVtOjpzZXRQYXJlbnRJdGVtKFFRdWlja0l0ZW0g KnBhcmVudEl0ZW0pCisgCisgICAgIGQtPml0ZW1DaGFuZ2UoSXRlbVBhcmVudEhhc0NoYW5nZWQs IGQtPnBhcmVudEl0ZW0pOworIAorLSAgICBlbWl0IHBhcmVudENoYW5nZWQoZC0+cGFyZW50SXRl bSk7CistICAgIGlmIChpc1Zpc2libGUoKSAmJiBkLT5wYXJlbnRJdGVtKQorKyAgICBpZiAoIWQt PmluRGVzdHJ1Y3RvcikKKysgICAgICAgIGVtaXQgcGFyZW50Q2hhbmdlZChkLT5wYXJlbnRJdGVt KTsKKysgICAgaWYgKGlzVmlzaWJsZSgpICYmIGQtPnBhcmVudEl0ZW0gJiYgIVFRdWlja0l0ZW1Q cml2YXRlOjpnZXQoZC0+cGFyZW50SXRlbSktPmluRGVzdHJ1Y3RvcikKKyAgICAgICAgIGVtaXQg ZC0+cGFyZW50SXRlbS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworIH0KKyAKK0BAIC0yOTY1 LDcgKzI5NzEsOCBAQCB2b2lkIFFRdWlja0l0ZW1Qcml2YXRlOjpyZW1vdmVDaGlsZChRUXVpY2tJ dGVtICpjaGlsZCkKKyAKKyAgICAgaXRlbUNoYW5nZShRUXVpY2tJdGVtOjpJdGVtQ2hpbGRSZW1v dmVkQ2hhbmdlLCBjaGlsZCk7CisgCistICAgIGVtaXQgcS0+Y2hpbGRyZW5DaGFuZ2VkKCk7Cisr ICAgIGlmICghaW5EZXN0cnVjdG9yKQorKyAgICAgICAgZW1pdCBxLT5jaGlsZHJlbkNoYW5nZWQo KTsKKyB9CisgCisgdm9pZCBRUXVpY2tJdGVtUHJpdmF0ZTo6cmVmV2luZG93KFFRdWlja1dpbmRv dyAqYykKK0BAIC0zMTk0LDYgKzMyMDEsNyBAQCBRUXVpY2tJdGVtUHJpdmF0ZTo6UVF1aWNrSXRl bVByaXZhdGUoKQorICAgICAsIHRvdWNoRW5hYmxlZChmYWxzZSkKKyAjZW5kaWYKKyAgICAgLCBo YXNDdXJzb3JIYW5kbGVyKGZhbHNlKQorKyAgICAsIGluRGVzdHJ1Y3RvcihmYWxzZSkKKyAgICAg LCBkaXJ0eUF0dHJpYnV0ZXMoMCkKKyAgICAgLCBuZXh0RGlydHlJdGVtKG51bGxwdHIpCisgICAg ICwgcHJldkRpcnR5SXRlbShudWxscHRyKQorQEAgLTUxMjAsNiArNTEyOCwxMyBAQCB2b2lkIFFR dWlja0l0ZW06OmNvbXBvbmVudENvbXBsZXRlKCkKKyAgICAgICAgIGQtPmFkZFRvRGlydHlMaXN0 KCk7CisgICAgICAgICBRUXVpY2tXaW5kb3dQcml2YXRlOjpnZXQoZC0+d2luZG93KS0+ZGlydHlJ dGVtKHRoaXMpOworICAgICB9CisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKyAg ICBpZiAoZC0+aXNBY2Nlc3NpYmxlICYmIGQtPmVmZmVjdGl2ZVZpc2libGUpIHsKKysgICAgICAg IFFBY2Nlc3NpYmxlRXZlbnQgZXYodGhpcywgUUFjY2Vzc2libGU6Ok9iamVjdFNob3cpOworKyAg ICAgICAgUUFjY2Vzc2libGU6OnVwZGF0ZUFjY2Vzc2liaWxpdHkoJmV2KTsKKysgICAgfQorKyNl bmRpZgorIH0KKyAKKyBRUXVpY2tTdGF0ZUdyb3VwICpRUXVpY2tJdGVtUHJpdmF0ZTo6X3N0YXRl cygpCitAQCAtNjEwNiw5ICs2MTIxLDExIEBAIGJvb2wgUVF1aWNrSXRlbVByaXZhdGU6OnNldEVm ZmVjdGl2ZVZpc2libGVSZWN1cihib29sIG5ld0VmZmVjdGl2ZVZpc2libGUpCisgICAgICAgICBR QWNjZXNzaWJsZTo6dXBkYXRlQWNjZXNzaWJpbGl0eSgmZXYpOworICAgICB9CisgI2VuZGlmCist ICAgIGVtaXQgcS0+dmlzaWJsZUNoYW5nZWQoKTsKKy0gICAgaWYgKGNoaWxkVmlzaWJpbGl0eUNo YW5nZWQpCistICAgICAgICBlbWl0IHEtPnZpc2libGVDaGlsZHJlbkNoYW5nZWQoKTsKKysgICAg aWYgKCFpbkRlc3RydWN0b3IpIHsKKysgICAgICAgIGVtaXQgcS0+dmlzaWJsZUNoYW5nZWQoKTsK KysgICAgICAgIGlmIChjaGlsZFZpc2liaWxpdHlDaGFuZ2VkKQorKyAgICAgICAgICAgIGVtaXQg cS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworKyAgICB9CisgCisgICAgIHJldHVybiB0cnVl OyAgICAvLyBlZmZlY3RpdmUgdmlzaWJpbGl0eSBESUQgY2hhbmdlCisgfQorQEAgLTYxNTcsNiAr NjE3NCwxNSBAQCB2b2lkIFFRdWlja0l0ZW1Qcml2YXRlOjpzZXRFZmZlY3RpdmVFbmFibGVSZWN1 cihRUXVpY2tJdGVtICpzY29wZSwgYm9vbCBuZXdFZmZlYworICAgICB9CisgCisgICAgIGl0ZW1D aGFuZ2UoUVF1aWNrSXRlbTo6SXRlbUVuYWJsZWRIYXNDaGFuZ2VkLCBlZmZlY3RpdmVFbmFibGUp OworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysgICAgaWYgKGlzQWNjZXNzaWJsZSkg eworKyAgICAgICAgUUFjY2Vzc2libGU6OlN0YXRlIGNoYW5nZWRTdGF0ZTsKKysgICAgICAgIGNo YW5nZWRTdGF0ZS5kaXNhYmxlZCA9IHRydWU7CisrICAgICAgICBjaGFuZ2VkU3RhdGUuZm9jdXNh YmxlID0gdHJ1ZTsKKysgICAgICAgIFFBY2Nlc3NpYmxlU3RhdGVDaGFuZ2VFdmVudCBldihxLCBj aGFuZ2VkU3RhdGUpOworKyAgICAgICAgUUFjY2Vzc2libGU6OnVwZGF0ZUFjY2Vzc2liaWxpdHko JmV2KTsKKysgICAgfQorKyNlbmRpZgorICAgICBlbWl0IHEtPmVuYWJsZWRDaGFuZ2VkKCk7Cisg fQorIAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0 ZW1fcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbV9wLmgKK2lu ZGV4IDg0MWQ5MWJiNDAuLmFkZThmYjYxZjIgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVp Y2svaXRlbXMvcXF1aWNraXRlbV9wLmgKK0BAIC00NzIsNiArNDcyLDcgQEAgcHVibGljOgorICAg ICBib29sIHJlcGxheWluZ1ByZXNzRXZlbnQ6MTsKKyAgICAgYm9vbCB0b3VjaEVuYWJsZWQ6MTsK KyAgICAgYm9vbCBoYXNDdXJzb3JIYW5kbGVyOjE7CisrICAgIHF1aW50MzIgaW5EZXN0cnVjdG9y OjE7IC8vIGhhcyBlbnRlcmVkIH5RUXVpY2tJdGVtCisgCisgICAgIGVudW0gRGlydHlUeXBlIHsK KyAgICAgICAgIFRyYW5zZm9ybU9yaWdpbiAgICAgICAgID0gMHgwMDAwMDAwMSwKK2RpZmYgLS1n aXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtdmlldy5jcHAgYi9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtdmlldy5jcHAKK2luZGV4IDAx MGEwMTUyZTEuLmY4YWQxNjhhMTcgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj ay9pdGVtcy9xcXVpY2tpdGVtdmlldy5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr L2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcAorQEAgLTE3ODUsNyArMTc4NSw3IEBAIHZvaWQgUVF1 aWNrSXRlbVZpZXdQcml2YXRlOjpyZWZpbGwocXJlYWwgZnJvbSwgcXJlYWwgdG8pCisgCisgICAg IGRvIHsKKyAgICAgICAgIGJ1ZmZlclBhdXNlLnN0b3AoKTsKKy0gICAgICAgIGlmIChjdXJyZW50 Q2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpIHx8IGJ1ZmZlcmVkQ2hhbmdlcy5oYXNQZW5kaW5n Q2hhbmdlcygpKSB7CisrICAgICAgICBpZiAoY3VycmVudENoYW5nZXMuaGFzUGVuZGluZ0NoYW5n ZXMoKSB8fCBidWZmZXJlZENoYW5nZXMuaGFzUGVuZGluZ0NoYW5nZXMoKSB8fCBjdXJyZW50Q2hh bmdlcy5hY3RpdmUpIHsKKyAgICAgICAgICAgICBjdXJyZW50Q2hhbmdlcy5yZXNldCgpOworICAg ICAgICAgICAgIGJ1ZmZlcmVkQ2hhbmdlcy5yZXNldCgpOworICAgICAgICAgICAgIHJlbGVhc2VW aXNpYmxlSXRlbXMocmV1c2FibGVGbGFnKTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9x dWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmgKK2luZGV4IGZiYTM4M2UyNjguLjBkNjM2 MTg2MjIgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tt b3VzZWFyZWFfcF9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlj a21vdXNlYXJlYV9wX3AuaAorQEAgLTYxLDcgKzYxLDYgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisg CisgY2xhc3MgUVF1aWNrTW91c2VFdmVudDsKKyBjbGFzcyBRUXVpY2tNb3VzZUFyZWE7CistY2xh c3MgUVF1aWNrUG9pbnRlck1hc2s7CisgY2xhc3MgUVF1aWNrTW91c2VBcmVhUHJpdmF0ZSA6IHB1 YmxpYyBRUXVpY2tJdGVtUHJpdmF0ZQorIHsKKyAgICAgUV9ERUNMQVJFX1BVQkxJQyhRUXVpY2tN b3VzZUFyZWEpCitAQCAtMTAwLDcgKzk5LDYgQEAgcHVibGljOgorICNpZiBRVF9DT05GSUcocXVp Y2tfZHJhZ2FuZGRyb3ApCisgICAgIFFRdWlja0RyYWcgKmRyYWc7CisgI2VuZGlmCistICAgIFFQ b2ludGVyPFFRdWlja1BvaW50ZXJNYXNrPiBtYXNrOworICAgICBRUG9pbnRGIHN0YXJ0U2NlbmU7 CisgICAgIFFQb2ludEYgdGFyZ2V0U3RhcnRQb3M7CisgICAgIFFQb2ludEYgbGFzdFBvczsKK2Rp ZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2t0ZXh0LmNwcCBi L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja3RleHQuY3BwCitpbmRleCA2MjMw MTg2OTMzLi5lODIzY2ExMDk1IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2sv aXRlbXMvcXF1aWNrdGV4dC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1z L3FxdWlja3RleHQuY3BwCitAQCAtMjE2OCw3ICsyMTY4LDcgQEAgdm9pZCBRUXVpY2tUZXh0Ojpy ZXNldE1heGltdW1MaW5lQ291bnQoKQorICAgICA8aW1nIHNyYz0iIiBhbGlnbj0idG9wLG1pZGRs ZSxib3R0b20iIHdpZHRoPSIiIGhlaWdodD0iIj4gLSBpbmxpbmUgaW1hZ2VzCisgICAgIDxvbCB0 eXBlPSIiPiwgPHVsIHR5cGU9IiI+IGFuZCA8bGk+IC0gb3JkZXJlZCBhbmQgdW5vcmRlcmVkIGxp c3RzCisgICAgIDxwcmU+PC9wcmU+IC0gcHJlZm9ybWF0dGVkCistICAgICZndDsgJmx0OyAmYW1w OworKyAgICAmZ3Q7ICZsdDsgJmFtcDsgJnF1b3Q7ICZuYnNwOyAmYXBvczsKKyAgICAgXGVuZGNv ZGUKKyAKKyAgICAgXGMgVGV4dC5TdHlsZWRUZXh0IHBhcnNlciBpcyBzdHJpY3QsIHJlcXVpcmlu ZyB0YWdzIHRvIGJlIGNvcnJlY3RseSBuZXN0ZWQuCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0YW5jZWZpZWxkZ2x5cGhjYWNoZS5jcHAg Yi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRn bHlwaGNhY2hlLmNwcAoraW5kZXggZWI0ZGIwZjg1ZS4uMjMyNWEyNjY1YiAxMDA2NDQKKy0tLSBh L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgvcXNncmhpZGlzdGFuY2VmaWVsZGds eXBoY2FjaGUuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9zY2VuZWdyYXBoL3Fz Z3JoaWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcAorQEAgLTQ0Niw3ICs0NDYsNyBAQCBib29s IFFTR1JoaURpc3RhbmNlRmllbGRHbHlwaENhY2hlOjpsb2FkUHJlZ2VuZXJhdGVkQ2FjaGUoY29u c3QgUVJhd0ZvbnQgJmZvbnQpCisgCisgICAgICAgICBjb25zdCBjaGFyICp0ZXh0dXJlUmVjb3Jk ID0gYWxsb2NhdG9yRGF0YTsKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGV4dHVyZUNv dW50OyArK2ksIHRleHR1cmVSZWNvcmQgKz0gUXRkZjo6VGV4dHVyZVJlY29yZFNpemUpIHsKKy0g ICAgICAgICAgICBpZiAodGV4dHVyZVJlY29yZCArIFF0ZGY6OlRleHR1cmVSZWNvcmRTaXplID4g cXRkZlRhYmxlRW5kKSB7CisrICAgICAgICAgICAgaWYgKHF0ZGZUYWJsZUVuZCAtIHRleHR1cmVS ZWNvcmQgPCBRdGRmOjpUZXh0dXJlUmVjb3JkU2l6ZSkgeworICAgICAgICAgICAgICAgICBxV2Fy bmluZygicXRkZiB0YWJsZSB0b28gc21hbGwgaW4gZm9udCAnJXMnLiIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHFQcmludGFibGUoZm9udC5mYW1pbHlOYW1lKCkpKTsKKyAgICAgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTQ2Miw3ICs0NjIsNyBAQCBib29sIFFTR1JoaURpc3Rh bmNlRmllbGRHbHlwaENhY2hlOjpsb2FkUHJlZ2VuZXJhdGVkQ2FjaGUoY29uc3QgUVJhd0ZvbnQg JmZvbnQpCisgCisgICAgICAgICBjb25zdCBjaGFyICpnbHlwaFJlY29yZCA9IHRleHR1cmVSZWNv cmQ7CisgICAgICAgICBmb3IgKHF1aW50MzIgaSA9IDA7IGkgPCBnbHlwaENvdW50OyArK2ksIGds eXBoUmVjb3JkICs9IFF0ZGY6OkdseXBoUmVjb3JkU2l6ZSkgeworLSAgICAgICAgICAgIGlmIChn bHlwaFJlY29yZCArIFF0ZGY6OkdseXBoUmVjb3JkU2l6ZSA+IHF0ZGZUYWJsZUVuZCkgeworKyAg ICAgICAgICAgIGlmIChxdGRmVGFibGVFbmQgLSBnbHlwaFJlY29yZCA8IFF0ZGY6OiBHbHlwaFJl Y29yZFNpemUpIHsKKyAgICAgICAgICAgICAgICAgcVdhcm5pbmcoInF0ZGYgdGFibGUgdG9vIHNt YWxsIGluIGZvbnQgJyVzJy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBxUHJpbnRhYmxl KGZvbnQuZmFtaWx5TmFtZSgpKSk7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKK0BA IC01MTIsOCArNTEyLDggQEAgYm9vbCBRU0dSaGlEaXN0YW5jZUZpZWxkR2x5cGhDYWNoZTo6bG9h ZFByZWdlbmVyYXRlZENhY2hlKGNvbnN0IFFSYXdGb250ICZmb250KQorIAorICAgICAgICAgICAg IGludCB3aWR0aCA9IHRleEluZm8tPmFsbG9jYXRlZEFyZWEud2lkdGgoKTsKKyAgICAgICAgICAg ICBpbnQgaGVpZ2h0ID0gdGV4SW5mby0+YWxsb2NhdGVkQXJlYS5oZWlnaHQoKTsKKy0gICAgICAg ICAgICBxaW50NjQgc2l6ZSA9IHdpZHRoICogaGVpZ2h0OworLSAgICAgICAgICAgIGlmIChyZWlu dGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4odGV4dHVyZURhdGEgKyBzaXplKSA+IHF0ZGZUYWJs ZUVuZCkgeworKyAgICAgICAgICAgIHFpbnQ2NCBzaXplID0gcWludDY0KHdpZHRoKSAqIGhlaWdo dDsKKysgICAgICAgICAgICBpZiAocXRkZlRhYmxlRW5kIC0gcmVpbnRlcnByZXRfY2FzdDxjb25z dCBjaGFyICo+KHRleHR1cmVEYXRhKSA8IHNpemUpIHsKKyAgICAgICAgICAgICAgICAgcVdhcm5p bmcoInF0ZGYgdGFibGUgdG9vIHNtYWxsIGluIGZvbnQgJyVzJy4iLAorICAgICAgICAgICAgICAg ICAgICAgICAgICBxUHJpbnRhYmxlKGZvbnQuZmFtaWx5TmFtZSgpKSk7CisgICAgICAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay91 dGlsL3FxdWlja3N0eWxlZHRleHQuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9x cXVpY2tzdHlsZWR0ZXh0LmNwcAoraW5kZXggZDUzMWZjOTIwNS4uYTI1YWY5MDQxNCAxMDA2NDQK Ky0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0aWwvcXF1aWNrc3R5bGVkdGV4dC5jcHAK KysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0aWwvcXF1aWNrc3R5bGVkdGV4dC5jcHAK K0BAIC01NjQsNiArNTY0LDggQEAgdm9pZCBRUXVpY2tTdHlsZWRUZXh0UHJpdmF0ZTo6cGFyc2VF bnRpdHkoY29uc3QgUUNoYXIgKiZjaCwgY29uc3QgUVN0cmluZyAmdGV4dEkKKyAgICAgICAgICAg ICAgICAgdGV4dE91dCArPSBRQ2hhcig2MCk7CisgICAgICAgICAgICAgZWxzZSBpZiAoZW50aXR5 ID09IFFMYXRpbjFTdHJpbmcoImFtcCIpKQorICAgICAgICAgICAgICAgICB0ZXh0T3V0ICs9IFFD aGFyKDM4KTsKKysgICAgICAgICAgICBlbHNlIGlmIChlbnRpdHkgPT0gUUxhdGluMVN0cmluZygi YXBvcyIpKQorKyAgICAgICAgICAgICAgICB0ZXh0T3V0ICs9IFFDaGFyKDM5KTsKKyAgICAgICAg ICAgICBlbHNlIGlmIChlbnRpdHkgPT0gUUxhdGluMVN0cmluZygicXVvdCIpKQorICAgICAgICAg ICAgICAgICB0ZXh0T3V0ICs9IFFDaGFyKDM0KTsKKyAgICAgICAgICAgICBlbHNlIGlmIChlbnRp dHkgPT0gUUxhdGluMVN0cmluZygibmJzcCIpKQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0LmNwcCBiL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0LmNwcAorbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjhhMWM5MDE4ODAKKy0tLSAvZGV2L251bGwK KysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lk Z2V0LmNwcAorQEAgLTAsMCArMSwxMTAgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyoqCisr KiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb250YWN0OiBo dHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRfQkVH SU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExpY2Vu c2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZp bGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1l bnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4g YWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdy ZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJt cworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRp b25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0 IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5 IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiogR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl CisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMg aW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmll dyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cworKyoqIHdpbGwg YmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCisrKioK KysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHks IHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorKyoqIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUg R05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZl cnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlvbi4gVGhlIGxp Y2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0 aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQ TDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJl dmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1ldDogaHR0cHM6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0cHM6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0Uk CisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpbmNsdWRlICJxYWNjZXNzaWJsZXF1 aWNrd2lkZ2V0X3AuaCIKKysKKysjaW5jbHVkZSAicXF1aWNrd2lkZ2V0X3AuaCIKKysKKytRVF9C RUdJTl9OQU1FU1BBQ0UKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrCisrUUFj Y2Vzc2libGVRdWlja1dpZGdldDo6UUFjY2Vzc2libGVRdWlja1dpZGdldChRUXVpY2tXaWRnZXQq IHdpZGdldCkKKys6IFFBY2Nlc3NpYmxlV2lkZ2V0KHdpZGdldCkKKyssIG1fYWNjZXNzaWJsZVdp bmRvdyhRUXVpY2tXaWRnZXRQcml2YXRlOjpnZXQod2lkZ2V0KS0+b2Zmc2NyZWVuV2luZG93KQor K3sKKysgICAgLy8gTk9URTogbV9hY2Nlc3NpYmxlV2luZG93IGlzIGEgUUFjY2Vzc2libGVRdWlj a1dpbmRvdywgYW5kIG5vdCBhCisrICAgIC8vIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3Jl ZW5XaW5kb3cgKGRlZmluZWQgYmVsb3cpLiBUaGlzIG1lYW5zCisrICAgIC8vIGl0IHdpbGwgcmV0 dXJuIHRoZSBRdWljayBpdGVtIGNoaWxkIGludGVyZmFjZXMsIHdoaWNoIGlzIHdoYXQncyBuZWVk ZWQgaGVyZQorKyAgICAvLyAodW5saWtlIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5X aW5kb3csIHdoaWNoIHdpbGwgcmVwb3J0IDAgY2hpbGRyZW4pLgorK30KKysKKytRQWNjZXNzaWJs ZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja1dpZGdldDo6Y2hpbGQoaW50IGluZGV4KSBjb25z dAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5jaGlsZChpbmRleCk7CisrfQor KworK2ludCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjpjaGlsZENvdW50KCkgY29uc3QKKyt7Cisr ICAgIHJldHVybiBtX2FjY2Vzc2libGVXaW5kb3cuY2hpbGRDb3VudCgpOworK30KKysKKytpbnQg UUFjY2Vzc2libGVRdWlja1dpZGdldDo6aW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50 ZXJmYWNlICppZmFjZSkgY29uc3QKKyt7CisrICAgIHJldHVybiBtX2FjY2Vzc2libGVXaW5kb3cu aW5kZXhPZkNoaWxkKGlmYWNlKTsKKyt9CisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nl c3NpYmxlUXVpY2tXaWRnZXQ6OmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdAorK3sKKysgICAg cmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5jaGlsZEF0KHgsIHkpOworK30KKysKKytRQWNjZXNz aWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zm c2NyZWVuV2luZG93KFFRdWlja1dpbmRvdyAqd2luZG93KQorKzpRQWNjZXNzaWJsZVF1aWNrV2lu ZG93KHdpbmRvdykKKyt7CisrCisrfQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNz aWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpjaGlsZChpbnQgaW5kZXgpIGNvbnN0Cisr eworKyAgICBRX1VOVVNFRChpbmRleCk7CisrICAgIHJldHVybiBudWxscHRyOworK30KKysKKytp bnQgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6Y2hpbGRDb3VudCgpIGNv bnN0CisreworKyAgICByZXR1cm4gMDsKKyt9CisrCisraW50IFFBY2Nlc3NpYmxlUXVpY2tXaWRn ZXRPZmZzY3JlZW5XaW5kb3c6OmluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNzaWJsZUludGVyZmFj ZSAqaWZhY2UpIGNvbnN0CisreworKyAgICBRX1VOVVNFRChpZmFjZSk7CisrICAgIHJldHVybiAt MTsKKyt9CisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRP ZmZzY3JlZW5XaW5kb3c6OlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OmNo aWxkQXQoaW50IHgsIGludCB5KSBjb25zdAorK3sKKysgICAgUV9VTlVTRUQoeCk7CisrICAgIFFf VU5VU0VEKHkpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisrI2VuZGlmIC8vIGFjY2Vz c2liaWxpdHkKKysKKytRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5oIGIvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5oCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uN2MyYWI5MzBlMAorLS0tIC9kZXYvbnVs bAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3 aWRnZXRfcC5oCitAQCAtMCwwICsxLDk1IEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysqKgor KyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29udGFjdDog aHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQg b2YgdGhlIFF0UXVpY2sgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFUX0JF R0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNl bnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBm aWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVt ZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGlu IGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCisrKiogYSB3cml0dGVuIGFn cmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVy bXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0 aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBh dCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoqCisrKiogR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1h eSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlcgorKyoqIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwz IGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZp ZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bworKyoqIGVuc3VyZSB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMKKysqKiB3aWxs IGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgorKyoq CisrKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5 LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKysqKiBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhl IEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2 ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQorKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBs aWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRh dGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5H UEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSBy ZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKKysqKiBiZSBtZXQ6IGh0dHBz Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAorKyoqIGh0dHBzOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNF JAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjaWZuZGVmIFFBQ0NFU1NJQkxFUVVJ Q0tXSURHRVRfSAorKyNkZWZpbmUgUUFDQ0VTU0lCTEVRVUlDS1dJREdFVF9ICisrCisrLy8KKysv LyAgVyBBIFIgTiBJIE4gRworKy8vICAtLS0tLS0tLS0tLS0tCisrLy8KKysvLyBUaGlzIGZpbGUg aXMgbm90IHBhcnQgb2YgdGhlIFF0IEFQSS4gIEl0IGV4aXN0cyBwdXJlbHkgYXMgYW4KKysvLyBp bXBsZW1lbnRhdGlvbiBkZXRhaWwuICBUaGlzIGhlYWRlciBmaWxlIG1heSBjaGFuZ2UgZnJvbSB2 ZXJzaW9uIHRvCisrLy8gdmVyc2lvbiB3aXRob3V0IG5vdGljZSwgb3IgZXZlbiBiZSByZW1vdmVk LgorKy8vCisrLy8gV2UgbWVhbiBpdC4KKysvLworKworKyNpbmNsdWRlICJxcXVpY2t3aWRnZXQu aCIKKysjaW5jbHVkZSA8UXRXaWRnZXRzL3FhY2Nlc3NpYmxld2lkZ2V0Lmg+CisrCisrI2luY2x1 ZGUgPHByaXZhdGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5oPgorKworK1FUX0JFR0lOX05BTUVT UEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysKKysvLyBUaGVzZSBjbGFz c2VzIGltcGxlbWVudCB0aGUgUVF1aWNrV2lnZXQgYWNjZXNzaWJpbGl0eSBzd2l0Y2hhcm9vLAor Ky8vIHdoZXJlIHRoZSBjaGlsZCBpdGVtcyBvZiB0aGUgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2lu ZG93IGFyZSByZXBvcnRlZAorKy8vIGFzIGNoaWxkIGFjY2Vzc2libGUgaW50ZXJmYWNlcyBvZiB0 aGUgUUFjY2Vzc2libGVRdWlja1dpZGdldC4KKytjbGFzcyBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0 OiBwdWJsaWMgUUFjY2Vzc2libGVXaWRnZXQKKyt7CisrcHVibGljOgorKyAgICBRQWNjZXNzaWJs ZVF1aWNrV2lkZ2V0KFFRdWlja1dpZGdldCogd2lkZ2V0KTsKKysKKysgICAgUUFjY2Vzc2libGVJ bnRlcmZhY2UgKmNoaWxkKGludCBpbmRleCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGludCBjaGls ZENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGludCBpbmRleE9mQ2hpbGQoY29uc3QgUUFj Y2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdCBvdmVycmlkZTsKKysgICAgUUFjY2Vzc2li bGVJbnRlcmZhY2UgKmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdCBvdmVycmlkZTsKKysKKytw cml2YXRlOgorKyAgICBRQWNjZXNzaWJsZVF1aWNrV2luZG93IG1fYWNjZXNzaWJsZVdpbmRvdzsK KysgICAgUV9ESVNBQkxFX0NPUFkoUUFjY2Vzc2libGVRdWlja1dpZGdldCkKKyt9OworKworK2Ns YXNzIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6IHB1YmxpYyBRQWNjZXNz aWJsZVF1aWNrV2luZG93CisreworK3B1YmxpYzoKKysgICAgUUFjY2Vzc2libGVRdWlja1dpZGdl dE9mZnNjcmVlbldpbmRvdyhRUXVpY2tXaW5kb3cgKndpbmRvdyk7CisrICAgIFFBY2Nlc3NpYmxl SW50ZXJmYWNlICpjaGlsZChpbnQgaW5kZXgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBpbnQgY2hp bGRDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBpbnQgaW5kZXhPZkNoaWxkKGNvbnN0IFFB Y2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIFFBY2Nlc3Np YmxlSW50ZXJmYWNlICpjaGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3Qgb3ZlcnJpZGU7CisrfTsK KysKKysjZW5kaWYgLy8gYWNjZXNzaWJpbGl0eQorKworK1FUX0VORF9OQU1FU1BBQ0UKKysKKysj ZW5kaWYKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vz c2libGVxdWlja3dpZGdldGZhY3RvcnkuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRn ZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5LmNwcAorbmV3IGZpbGUgbW9kZSAxMDA2 NDQKK2luZGV4IDAwMDAwMDAwMDAuLjdiYTg4YTE3NjkKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9y eS5jcHAKK0BAIC0wLDAgKzEsNjAgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyoqCisrKiog Q29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb250YWN0OiBodHRw czovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRfQkVHSU5f TElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExpY2Vuc2Vl cyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUg aW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQg cHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNj b3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVt ZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcwor KyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25z LiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0 dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJl IHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiogR2VuZXJhbCBQdWJs aWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisr KiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5j bHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0 aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cworKyoqIHdpbGwgYmUg bWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCisrKioKKysq KiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRo aXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorKyoqIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUgR05V IEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNp b24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vu c2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9u IGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMK KysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmll dyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1ldDogaHR0cHM6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0cHM6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0UkCisr KioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpbmNsdWRlICJxYWNjZXNzaWJsZXF1aWNr d2lkZ2V0ZmFjdG9yeV9wLmgiCisrI2luY2x1ZGUgInFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5o IgorKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0 eSkKKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqcUFjY2Vzc2libGVRdWlja1dpZGdldEZhY3Rv cnkoY29uc3QgUVN0cmluZyAmY2xhc3NuYW1lLCBRT2JqZWN0ICpvYmplY3QpCisreworKyAgICBp ZiAoY2xhc3NuYW1lID09IFFMYXRpbjFTdHJpbmcoIlFRdWlja1dpZGdldCIpKSB7CisrICAgICAg ICByZXR1cm4gbmV3IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQocW9iamVjdF9jYXN0PFFRdWlja1dp ZGdldCAqPihvYmplY3QpKTsKKysgICAgfSBlbHNlIGlmIChjbGFzc25hbWUgPT0gUUxhdGluMVN0 cmluZygiUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93IikpIHsKKysgICAgICAgIHJldHVybiBu ZXcgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhxb2JqZWN0X2Nhc3Q8UVF1 aWNrV2luZG93ICo+KG9iamVjdCkpOworKyAgICB9CisrICAgIHJldHVybiAwOworK30KKysKKysj ZW5kaWYgLy8gYWNjZXNzaWJpbGl0eQorKworK1FUX0VORF9OQU1FU1BBQ0UKKysKK2RpZmYgLS1n aXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdl dGZhY3RvcnlfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxl cXVpY2t3aWRnZXRmYWN0b3J5X3AuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAw MDAwMDAuLjhjNjNiMDlmODEKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgKK0BAIC0wLDAg KzEsNjYgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAy MDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9s aWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRRdWljayBtb2R1 bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAor KyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlk IGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRh bmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0 aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRo ZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91 IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRp b25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgor KyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0Lmlv L2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug VXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJz aW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBh bmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisr KiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGlu Zm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cworKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUg dXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQ dWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkg dGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcg aW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBp biB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5n CisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9n cGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLworKworKyNpbmNsdWRlIDxRdEd1aS9xYWNjZXNzaWJsZS5oPgorKworKyNpZm5k ZWYgUUFDQ0VTU0lCTEVRVUlDS1dJREdFVEZBQ1RPUllfSAorKyNkZWZpbmUgUUFDQ0VTU0lCTEVR VUlDS1dJREdFVEZBQ1RPUllfSAorKworKy8vCisrLy8gIFcgQSBSIE4gSSBOIEcKKysvLyAgLS0t LS0tLS0tLS0tLQorKy8vCisrLy8gVGhpcyBmaWxlIGlzIG5vdCBwYXJ0IG9mIHRoZSBRdCBBUEku ICBJdCBleGlzdHMgcHVyZWx5IGFzIGFuCisrLy8gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVGhp cyBoZWFkZXIgZmlsZSBtYXkgY2hhbmdlIGZyb20gdmVyc2lvbiB0bworKy8vIHZlcnNpb24gd2l0 aG91dCBub3RpY2UsIG9yIGV2ZW4gYmUgcmVtb3ZlZC4KKysvLworKy8vIFdlIG1lYW4gaXQuCisr Ly8KKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxp dHkpCisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKnFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRGYWN0 b3J5KGNvbnN0IFFTdHJpbmcgJmNsYXNzbmFtZSwgUU9iamVjdCAqb2JqZWN0KTsKKysKKysjZW5k aWYKKysKKytRVF9FTkRfTkFNRVNQQUNFCisrCisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRkZWNs YXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldC5jcHAgYi9xdGRlY2xhcmF0aXZl L3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcAoraW5kZXggMzk3ODBmOGRlMy4uOWM5 N2I0MzUxOCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVp Y2t3aWRnZXQuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNr d2lkZ2V0LmNwcAorQEAgLTM5LDYgKzM5LDcgQEAKKyAKKyAjaW5jbHVkZSAicXF1aWNrd2lkZ2V0 LmgiCisgI2luY2x1ZGUgInFxdWlja3dpZGdldF9wLmgiCisrI2luY2x1ZGUgInFhY2Nlc3NpYmxl cXVpY2t3aWRnZXRmYWN0b3J5X3AuaCIKKyAKKyAjaW5jbHVkZSAicHJpdmF0ZS9xcXVpY2t3aW5k b3dfcC5oIgorICNpbmNsdWRlICJwcml2YXRlL3FxdWlja2l0ZW1fcC5oIgorQEAgLTc1LDkgKzc2 LDE2IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisrUVF1aWNrV2lkZ2V0T2Zmc2NyZWVu V2luZG93OjpRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3coUVF1aWNrV2luZG93UHJpdmF0ZSAm ZGQsIFFRdWlja1JlbmRlckNvbnRyb2wgKmNvbnRyb2wpCisrOlFRdWlja1dpbmRvdyhkZCwgY29u dHJvbCkKKyt7CisrICAgIHNldFRpdGxlKFFTdHJpbmc6OmZyb21MYXRpbjEoIk9mZnNjcmVlbiIp KTsKKysgICAgc2V0T2JqZWN0TmFtZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJRUXVpY2tPZmZTY3Jl ZW5XaW5kb3ciKSk7CisrfQorKworIC8vIG92ZXJyaWRlIHNldFZpc2JsZSB0byBwcmV2ZW50IGFj Y2lkZW50YWwgb2Zmc2NyZWVuIHdpbmRvdyBiZWluZyBjcmVhdGVkCisgLy8gYnkgYmFzZSBjbGFz cy4KKy1jbGFzcyBRUXVpY2tPZmZjcmVlbldpbmRvd1ByaXZhdGU6IHB1YmxpYyBRUXVpY2tXaW5k b3dQcml2YXRlIHsKKytjbGFzcyBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3dQcml2YXRlOiBw dWJsaWMgUVF1aWNrV2luZG93UHJpdmF0ZSB7CisgcHVibGljOgorICAgICB2b2lkIHNldFZpc2li bGUoYm9vbCB2aXNpYmxlKSBvdmVycmlkZSB7CisgICAgICAgICBRX1EoUVdpbmRvdyk7CitAQCAt MTA1LDkgKzExMyw4IEBAIHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6aW5pdChRUW1sRW5naW5l KiBlKQorICAgICBRX1EoUVF1aWNrV2lkZ2V0KTsKKyAKKyAgICAgcmVuZGVyQ29udHJvbCA9IG5l dyBRUXVpY2tXaWRnZXRSZW5kZXJDb250cm9sKHEpOworLSAgICBvZmZzY3JlZW5XaW5kb3cgPSBu ZXcgUVF1aWNrV2luZG93KCpuZXcgUVF1aWNrT2ZmY3JlZW5XaW5kb3dQcml2YXRlKCkscmVuZGVy Q29udHJvbCk7CistICAgIG9mZnNjcmVlbldpbmRvdy0+c2V0VGl0bGUoUVN0cmluZzo6ZnJvbUxh dGluMSgiT2Zmc2NyZWVuIikpOworLSAgICBvZmZzY3JlZW5XaW5kb3ctPnNldE9iamVjdE5hbWUo UVN0cmluZzo6ZnJvbUxhdGluMSgiUVF1aWNrT2ZmU2NyZWVuV2luZG93IikpOworKyAgICBvZmZz Y3JlZW5XaW5kb3cgPSBuZXcgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KCpuZXcgUVF1aWNr V2lkZ2V0T2Zmc2NyZWVuV2luZG93UHJpdmF0ZSgpLCByZW5kZXJDb250cm9sKTsKKysgICAgb2Zm c2NyZWVuV2luZG93LT5zZXRTY3JlZW4ocS0+c2NyZWVuKCkpOworICAgICAvLyBEbyBub3QgY2Fs bCBjcmVhdGUoKSBvbiBvZmZzY3JlZW5XaW5kb3cuCisgCisgICAgIC8vIENoZWNrIGlmIHRoZSBT b2Z0d2FyZSBBZGFwdGF0aW9uIGlzIGJlaW5nIHVzZWQKK0BAIC0xMzgsNiArMTQ1LDEwIEBAIHZv aWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6aW5pdChRUW1sRW5naW5lKiBlKQorICAgICBRV2lkZ2V0 Ojpjb25uZWN0KG9mZnNjcmVlbldpbmRvdywgJlFRdWlja1dpbmRvdzo6Zm9jdXNPYmplY3RDaGFu Z2VkLCBxLCAmUVF1aWNrV2lkZ2V0Ojpwcm9wYWdhdGVGb2N1c09iamVjdENoYW5nZWQpOworICAg ICBRT2JqZWN0Ojpjb25uZWN0KHJlbmRlckNvbnRyb2wsIFNJR05BTChyZW5kZXJSZXF1ZXN0ZWQo KSksIHEsIFNMT1QodHJpZ2dlclVwZGF0ZSgpKSk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocmVu ZGVyQ29udHJvbCwgU0lHTkFMKHNjZW5lQ2hhbmdlZCgpKSwgcSwgU0xPVCh0cmlnZ2VyVXBkYXRl KCkpKTsKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrICAgIFFBY2Nlc3NpYmxl OjppbnN0YWxsRmFjdG9yeSgmcUFjY2Vzc2libGVRdWlja1dpZGdldEZhY3RvcnkpOworKyNlbmRp ZgorIH0KKyAKKyB2b2lkIFFRdWlja1dpZGdldFByaXZhdGU6OmVuc3VyZUVuZ2luZSgpIGNvbnN0 CitAQCAtOTAxLDkgKzkxMiw3IEBAIHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6Y3JlYXRlQ29u dGV4dCgpCisgCisgICAgICAgICBjb250ZXh0ID0gbmV3IFFPcGVuR0xDb250ZXh0OworICAgICAg ICAgY29udGV4dC0+c2V0Rm9ybWF0KG9mZnNjcmVlbldpbmRvdy0+cmVxdWVzdGVkRm9ybWF0KCkp OworLSAgICAgICAgY29uc3QgUVdpbmRvdyAqd2luID0gcS0+d2luZG93KCktPndpbmRvd0hhbmRs ZSgpOworLSAgICAgICAgaWYgKHdpbiAmJiB3aW4tPnNjcmVlbigpKQorLSAgICAgICAgICAgIGNv bnRleHQtPnNldFNjcmVlbih3aW4tPnNjcmVlbigpKTsKKysgICAgICAgIGNvbnRleHQtPnNldFNj cmVlbihxLT5zY3JlZW4oKSk7CisgICAgICAgICBRT3BlbkdMQ29udGV4dCAqc2hhcmVDb250ZXh0 ID0gcXRfZ2xfZ2xvYmFsX3NoYXJlX2NvbnRleHQoKTsKKyAgICAgICAgIGlmICghc2hhcmVDb250 ZXh0KQorICAgICAgICAgICAgIHNoYXJlQ29udGV4dCA9IFFXaWRnZXRQcml2YXRlOjpnZXQocS0+ d2luZG93KCkpLT5zaGFyZUNvbnRleHQoKTsKK0BAIC0xNTIwLDE5ICsxNTI5LDE2IEBAIGJvb2wg UVF1aWNrV2lkZ2V0OjpldmVudChRRXZlbnQgKmUpCisgICAgICAgICBkLT5oYW5kbGVXaW5kb3dD aGFuZ2UoKTsKKyAgICAgICAgIGJyZWFrOworIAorLSAgICBjYXNlIFFFdmVudDo6U2NyZWVuQ2hh bmdlSW50ZXJuYWw6CistICAgICAgICBpZiAoUVdpbmRvdyAqd2luZG93ID0gdGhpcy0+d2luZG93 KCktPndpbmRvd0hhbmRsZSgpKSB7CistICAgICAgICAgICAgUVNjcmVlbiAqbmV3U2NyZWVuID0g d2luZG93LT5zY3JlZW4oKTsKKy0KKy0gICAgICAgICAgICBpZiAoZC0+b2Zmc2NyZWVuV2luZG93 KQorLSAgICAgICAgICAgICAgICBkLT5vZmZzY3JlZW5XaW5kb3ctPnNldFNjcmVlbihuZXdTY3Jl ZW4pOworLSAgICAgICAgICAgIGlmIChkLT5vZmZzY3JlZW5TdXJmYWNlKQorLSAgICAgICAgICAg ICAgICBkLT5vZmZzY3JlZW5TdXJmYWNlLT5zZXRTY3JlZW4obmV3U2NyZWVuKTsKKysgICAgY2Fz ZSBRRXZlbnQ6OlNjcmVlbkNoYW5nZUludGVybmFsOiB7CisrICAgICAgICBRU2NyZWVuICpuZXdT Y3JlZW4gPSBzY3JlZW4oKTsKKysgICAgICAgIGlmIChkLT5vZmZzY3JlZW5XaW5kb3cpCisrICAg ICAgICAgICAgZC0+b2Zmc2NyZWVuV2luZG93LT5zZXRTY3JlZW4obmV3U2NyZWVuKTsKKysgICAg ICAgIGlmIChkLT5vZmZzY3JlZW5TdXJmYWNlKQorKyAgICAgICAgICAgIGQtPm9mZnNjcmVlblN1 cmZhY2UtPnNldFNjcmVlbihuZXdTY3JlZW4pOworICNpZiBRVF9DT05GSUcob3BlbmdsKQorLSAg ICAgICAgICAgIGlmIChkLT5jb250ZXh0KQorLSAgICAgICAgICAgICAgICBkLT5jb250ZXh0LT5z ZXRTY3JlZW4obmV3U2NyZWVuKTsKKysgICAgICAgIGlmIChkLT5jb250ZXh0KQorKyAgICAgICAg ICAgIGQtPmNvbnRleHQtPnNldFNjcmVlbihuZXdTY3JlZW4pOworICNlbmRpZgorLSAgICAgICAg fQorIAorICAgICAgICAgaWYgKGQtPnVzZVNvZnR3YXJlUmVuZGVyZXIKKyAjaWYgUVRfQ09ORklH KG9wZW5nbCkKK0BAIC0xNTQ1LDcgKzE1NTEsNyBAQCBib29sIFFRdWlja1dpZGdldDo6ZXZlbnQo UUV2ZW50ICplKQorICAgICAgICAgICAgIGQtPnJlbmRlcih0cnVlKTsKKyAgICAgICAgIH0KKyAg ICAgICAgIGJyZWFrOworLQorKyAgICB9CisgICAgIGNhc2UgUUV2ZW50OjpTaG93OgorICAgICBj YXNlIFFFdmVudDo6TW92ZToKKyAgICAgICAgIGQtPnVwZGF0ZVBvc2l0aW9uKCk7CitkaWZmIC0t Z2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldF9wLmggYi9x dGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0X3AuaAoraW5kZXggODgx ZjdmOTIyMC4uMWE5NDZiY2M3MSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr d2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dp ZGdldHMvcXF1aWNrd2lkZ2V0X3AuaAorQEAgLTE0OCw2ICsxNDgsMTQgQEAgcHVibGljOgorICAg ICBib29sIGZvcmNlRnVsbFVwZGF0ZTsKKyB9OworIAorK2NsYXNzIFFRdWlja1dpZGdldE9mZnNj cmVlbldpbmRvdzogcHVibGljIFFRdWlja1dpbmRvdworK3sKKysgICAgUV9PQkpFQ1QKKysKKytw dWJsaWM6CisrICAgIFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhRUXVpY2tXaW5kb3dQcml2 YXRlICZkZCwgUVF1aWNrUmVuZGVyQ29udHJvbCAqY29udHJvbCk7CisrfTsKKysKKyBRVF9FTkRf TkFNRVNQQUNFCisgCisgI2VuZGlmIC8vIFFRdWlja1dpZGdldF9QX0gKK2RpZmYgLS1naXQgYS9x dGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXVpY2t3aWRnZXRzLnBybyBiL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMucHJvCitpbmRleCAyNDM4ZTU3N2Fl Li44NWQxNTZiOGEzIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRz L3F1aWNrd2lkZ2V0cy5wcm8KKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9x dWlja3dpZGdldHMucHJvCitAQCAtNyw5ICs3LDEzIEBAIERFRklORVMgICArPSBRVF9OT19VUkxf Q0FTVF9GUk9NX1NUUklORyBRVF9OT19JTlRFR0VSX0VWRU5UX0NPT1JESU5BVEVTIFFUX05PX0ZP CisgSEVBREVSUyArPSBcCisgICAgIHFxdWlja3dpZGdldC5oIFwKKyAgICAgcXF1aWNrd2lkZ2V0 X3AuaCBcCistICAgIHF0cXVpY2t3aWRnZXRzZ2xvYmFsLmgKKysgICAgcXRxdWlja3dpZGdldHNn bG9iYWwuaCBcCisrICAgIHFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5oIFwKKysgICAgcWFjY2Vz c2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oCisgCisgU09VUkNFUyArPSBcCistICAgIHFxdWlj a3dpZGdldC5jcHAKKysgICAgcXF1aWNrd2lkZ2V0LmNwcCBcCisrICAgIHFhY2Nlc3NpYmxlcXVp Y2t3aWRnZXQuY3BwIFwKKysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnkuY3BwCisg CisgbG9hZChxdF9tb2R1bGUpCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRv L3FtbC9xanNlbmdpbmUvdHN0X3Fqc2VuZ2luZS5jcHAgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1 dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcAoraW5kZXggM2I3ZDc0ZGY2My4uYjc1 YmY4MjBkNSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcWpzZW5n aW5lL3RzdF9xanNlbmdpbmUuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1s L3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcAorQEAgLTEwMiw2ICsxMDIsNyBAQCBwcml2YXRl IHNsb3RzOgorICAgICB2b2lkIHZhbHVlQ29udmVyc2lvbl9SZWd1bGFyRXhwcmVzc2lvbigpOwor ICAgICB2b2lkIGNhc3RXaXRoTXVsdGlwbGVJbmhlcml0YW5jZSgpOworICAgICB2b2lkIGNvbGxl Y3RHYXJiYWdlKCk7CisrICAgIHZvaWQgY29sbGVjdEdhcmJhZ2VOZXN0ZWRXcmFwcGVyc1R3b0Vu Z2luZXMoKTsKKyAgICAgdm9pZCBnY1dpdGhOZXN0ZWREYXRhU3RydWN0dXJlKCk7CisgICAgIHZv aWQgc3RhY2t0cmFjZSgpOworICAgICB2b2lkIG51bWJlclBhcnNpbmdfZGF0YSgpOworQEAgLTE4 MDksNiArMTgxMCw0NCBAQCB2b2lkIHRzdF9RSlNFbmdpbmU6OmNvbGxlY3RHYXJiYWdlKCkKKyAg ICAgUVZFUklGWShwdHIuaXNOdWxsKCkpOworIH0KKyAKKytjbGFzcyBUZXN0T2JqZWN0Q29udGFp bmVyIDogcHVibGljIFFPYmplY3QKKyt7CisrICAgIFFfT0JKRUNUCisrICAgIFFfUFJPUEVSVFko UU9iamVjdCAqZHVtbXkgTUVNQkVSIG1fZHVtbXkgQ09OU1RBTlQpCisrCisrcHVibGljOgorKyAg ICBUZXN0T2JqZWN0Q29udGFpbmVyKCkgOiBtX2R1bW15KG5ldyBRT2JqZWN0KHRoaXMpKSB7fQor KworK3ByaXZhdGU6CisrICAgIFFPYmplY3QgKm1fZHVtbXk7CisrfTsKKysKKyt2b2lkIHRzdF9R SlNFbmdpbmU6OmNvbGxlY3RHYXJiYWdlTmVzdGVkV3JhcHBlcnNUd29FbmdpbmVzKCkKKyt7Cisr ICAgIFFKU0VuZ2luZSBlbmdpbmUxOworKyAgICBRSlNFbmdpbmUgZW5naW5lMjsKKysKKysgICAg VGVzdE9iamVjdENvbnRhaW5lciBjb250YWluZXI7CisrICAgIFFRbWxFbmdpbmU6OnNldE9iamVj dE93bmVyc2hpcCgmY29udGFpbmVyLCBRUW1sRW5naW5lOjpDcHBPd25lcnNoaXApOworKworKyAg ICBlbmdpbmUxLmdsb2JhbE9iamVjdCgpLnNldFByb3BlcnR5KCJmb29iYXIiLCBlbmdpbmUxLm5l d1FPYmplY3QoJmNvbnRhaW5lcikpOworKyAgICBlbmdpbmUyLmdsb2JhbE9iamVjdCgpLnNldFBy b3BlcnR5KCJmb29iYXIiLCBlbmdpbmUyLm5ld1FPYmplY3QoJmNvbnRhaW5lcikpOworKworKyAg ICBlbmdpbmUxLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6ID0gNDIiKTsKKysgICAgZW5naW5l Mi5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiA9IDQzIik7CisrCisrICAgIFFDT01QQVJFKGVu Z2luZTEuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXoiKS50b0ludCgpLCA0Mik7CisrICAgIFFD T01QQVJFKGVuZ2luZTIuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXoiKS50b0ludCgpLCA0Myk7 CisrCisrICAgIGVuZ2luZTEuY29sbGVjdEdhcmJhZ2UoKTsKKysgICAgZW5naW5lMi5jb2xsZWN0 R2FyYmFnZSgpOworKworKyAgICAvLyBUaGUgR0Mgc2hvdWxkIG5vdCBjb2xsZWN0IGR1bW15IG9i amVjdCB3cmFwcGVycyBuZWl0aGVyIGluIGVuZ2luZTEgbm9yIGVuZ2luZTIsIHdlCisrICAgIC8v IHZlcmlmeSB0aGF0IGJ5IGNoZWNraW5nIHdoZXRoZXIgdGhlIGJheiBwcm9wZXJ0eSBzdGlsbCBo YXMgaXRzIHByZXZpb3VzIHZhbHVlLgorKyAgICBRQ09NUEFSRShlbmdpbmUxLmV2YWx1YXRlKCJm b29iYXIuZHVtbXkuYmF6IikudG9JbnQoKSwgNDIpOworKyAgICBRQ09NUEFSRShlbmdpbmUyLmV2 YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6IikudG9JbnQoKSwgNDMpOworK30KKysKKyB2b2lkIHRz dF9RSlNFbmdpbmU6OmdjV2l0aE5lc3RlZERhdGFTdHJ1Y3R1cmUoKQorIHsKKyAgICAgLy8gVGhl IEdDIG11c3QgYmUgYWJsZSB0byB0cmF2ZXJzZSBkZWVwbHkgbmVzdGVkIG9iamVjdHMsIG90aGVy d2lzZSB0aGlzCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1s ZGVsZWdhdGVtb2RlbC9kYXRhL3JlZHJhd1Vwb25Db2x1bW5DaGFuZ2UucW1sIGIvcXRkZWNsYXJh dGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC9kYXRhL3JlZHJhd1Vwb25Db2x1 bW5DaGFuZ2UucW1sCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjA2 MTMzYmIzOQorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3Ft bC9xcW1sZGVsZWdhdGVtb2RlbC9kYXRhL3JlZHJhd1Vwb25Db2x1bW5DaGFuZ2UucW1sCitAQCAt MCwwICsxLDExIEBACisraW1wb3J0IFF0UXVpY2sgMi44CisrCisrTGlzdFZpZXcgeworKyAgICBp ZDogcm9vdAorKyAgICB3aWR0aDogMjAwCisrICAgIGhlaWdodDogMjAwCisrCisrICAgIGRlbGVn YXRlOiBUZXh0IHsKKysgICAgICAgIHRleHQ6IGRpc3BsYXkKKysgICAgfQorK30KK2RpZmYgLS1n aXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL3RzdF9x cW1sZGVsZWdhdGVtb2RlbC5jcHAgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxk ZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKK2luZGV4IDM1ZjFlMmM5NGQu LjE3MjI0NDc4MzAgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fx bWxkZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKKysrKyBiL3F0ZGVjbGFy YXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1v ZGVsLmNwcAorQEAgLTI3LDYgKzI3LDggQEAKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAorICNp bmNsdWRlIDxRdFRlc3QvcXRlc3QuaD4KKysjaW5jbHVkZSA8UXRDb3JlL1FDb25jYXRlbmF0ZVRh Ymxlc1Byb3h5TW9kZWw+CisrI2luY2x1ZGUgPFF0R3VpL1FTdGFuZGFyZEl0ZW1Nb2RlbD4KKyAj aW5jbHVkZSA8UXRRbWwvcXFtbGNvbXBvbmVudC5oPgorICNpbmNsdWRlIDxRdFFtbE1vZGVscy9w cml2YXRlL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaD4KKyAjaW5jbHVkZSA8UXRRdWljay9xcXVpY2t2 aWV3Lmg+CitAQCAtNDcsNiArNDksNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGZpbHRl ck9uR3JvdXBfcmVtb3ZlV2hlbkNvbXBsZXRlZCgpOworICAgICB2b2lkIHF0YnVnXzg2MDE3KCk7 CisgICAgIHZvaWQgY29udGV4dEFjY2Vzc2VkQnlIYW5kbGVyKCk7CisrICAgIHZvaWQgcmVkcmF3 VXBvbkNvbHVtbkNoYW5nZSgpOworIH07CisgCisgY2xhc3MgQWJzdHJhY3RJdGVtTW9kZWwgOiBw dWJsaWMgUUFic3RyYWN0SXRlbU1vZGVsCitAQCAtMTg2LDYgKzE4OSwzMCBAQCB2b2lkIHRzdF9R UW1sRGVsZWdhdGVNb2RlbDo6Y29udGV4dEFjY2Vzc2VkQnlIYW5kbGVyKCkKKyAgICAgUVZFUklG WShyb290LT5wcm9wZXJ0eSgid29ya3MiKS50b0Jvb2woKSk7CisgfQorIAorK3ZvaWQgdHN0X1FR bWxEZWxlZ2F0ZU1vZGVsOjpyZWRyYXdVcG9uQ29sdW1uQ2hhbmdlKCkKKyt7CisrICAgIFFTdGFu ZGFyZEl0ZW1Nb2RlbCBtMTsKKysgICAgbTEuYXBwZW5kUm93KHsKKysgICAgICAgICAgICBuZXcg UVN0YW5kYXJkSXRlbSgiQmFuYW5hIiksCisrICAgICAgICAgICAgbmV3IFFTdGFuZGFyZEl0ZW0o IkNvY29udXQiKSwKKysgICAgfSk7CisrCisrICAgIFFRdWlja1ZpZXcgdmlldyh0ZXN0RmlsZVVy bCgicmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwiKSk7CisrICAgIFFDT01QQVJFKHZpZXcuc3Rh dHVzKCksIFFRdWlja1ZpZXc6OlJlYWR5KTsKKysgICAgdmlldy5zaG93KCk7CisrICAgIFFRdWlj a0l0ZW0gKnJvb3QgPSB2aWV3LnJvb3RPYmplY3QoKTsKKysgICAgcm9vdC0+c2V0UHJvcGVydHko Im1vZGVsIiwgUVZhcmlhbnQ6OmZyb21WYWx1ZTxRT2JqZWN0ICo+KCZtMSkpOworKworKyAgICBR T2JqZWN0ICppdGVtID0gcm9vdC0+cHJvcGVydHkoImN1cnJlbnRJdGVtIikudmFsdWU8UU9iamVj dCAqPigpOworKyAgICBRVkVSSUZZKGl0ZW0pOworKyAgICBRQ09NUEFSRShpdGVtLT5wcm9wZXJ0 eSgidGV4dCIpLnRvU3RyaW5nKCksICJCYW5hbmEiKTsKKysKKysgICAgUVZFUklGWShyb290KTsK KysgICAgbTEucmVtb3ZlQ29sdW1uKDApOworKworKyAgICBRQ09NUEFSRShpdGVtLT5wcm9wZXJ0 eSgidGV4dCIpLnRvU3RyaW5nKCksICJDb2NvbnV0Iik7CisrfQorKworIFFURVNUX01BSU4odHN0 X1FRbWxEZWxlZ2F0ZU1vZGVsKQorIAorICNpbmNsdWRlICJ0c3RfcXFtbGRlbGVnYXRlbW9kZWwu bW9jIgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXY0bW0vdHN0 X3F2NG1tLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXY0bW0vdHN0X3F2NG1t LmNwcAoraW5kZXggNWQ2MzVhYTYzYi4uODI0ZmQ4OWU1YiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFy YXRpdmUvdGVzdHMvYXV0by9xbWwvcXY0bW0vdHN0X3F2NG1tLmNwcAorKysrIGIvcXRkZWNsYXJh dGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0uY3BwCitAQCAtNzYsMTAgKzc2LDEw IEBAIHZvaWQgdHN0X3F2NG1tOjptdWx0aVdyYXBwZWRRT2JqZWN0cygpCisgICAgICAgICBRQ09N UEFSRShlbmdpbmUxLm1lbW9yeU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZh bHVlLnNpemUoKSwgMSk7CisgICAgICAgICBRQ09NUEFSRShlbmdpbmUyLm1lbW9yeU1hbmFnZXIt Pm1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNpemUoKSwgMCk7CisgCistICAgICAg ICAvLyBNb3ZlcyB0aGUgYWRkaXRpb25hbCBXZWFrVmFsdWUgZnJvbSBtX211bHRpcGx5V3JhcHBl ZFFPYmplY3RzIHRvCistICAgICAgICAvLyBtX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1 ZS4gSXQncyBzdGlsbCBhbGl2ZSBhZnRlciBhbGwuCisrICAgICAgICAvLyBUaGUgYWRkaXRpb25h bCBXZWFrVmFsdWUgZnJvbSBtX211bHRpcGx5V3JhcHBlZFFPYmplY3RzIGhhc24ndCBiZWVuIG1v dmVkCisrICAgICAgICAvLyB0byBtX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZSB5ZXQu IEl0J3Mgc3RpbGwgYWxpdmUgYWZ0ZXIgYWxsLgorICAgICAgICAgZW5naW5lMS5tZW1vcnlNYW5h Z2VyLT5ydW5HQygpOworLSAgICAgICAgUUNPTVBBUkUoZW5naW5lMS5tZW1vcnlNYW5hZ2VyLT5t X3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZS5zaXplKCksIDIpOworKyAgICAgICAgUUNP TVBBUkUoZW5naW5lMS5tZW1vcnlNYW5hZ2VyLT5tX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJW YWx1ZS5zaXplKCksIDEpOworIAorICAgICAgICAgLy8gZW5naW5lMiBkb2Vzbid0IG93biB0aGUg b2JqZWN0IGFzIGVuZ2luZTEgd2FzIHRoZSBmaXJzdCB0byB3cmFwIGl0IGFib3ZlLgorICAgICAg ICAgLy8gVGhlcmVmb3JlLCBubyBlZmZlY3QgaGVyZS4KK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0 aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvZGF0YS9hY3RpdmVGb2N1c09uVGFiX2lu ZmluaXRlTG9vcDMucW1sIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0 ZW0yL2RhdGEvYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AzLnFtbAorbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjg4OWU0ODBmM2IKKy0tLSAvZGV2L251bGwKKysr KyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi9kYXRhL2FjdGl2 ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wMy5xbWwKK0BAIC0wLDAgKzEsMTMgQEAKKytpbXBvcnQg UXRRdWljayAyLjYKKysKKytJdGVtIHsKKysgICAgdmlzaWJsZTogdHJ1ZQorKyAgICBJdGVtIHsK KysgICAgICAgIHZpc2libGU6IGZhbHNlCisrICAgICAgICBJdGVtIHsKKysgICAgICAgICAgICBv YmplY3ROYW1lOiAiaGlkZGVuQ2hpbGQiCisrICAgICAgICAgICAgYWN0aXZlRm9jdXNPblRhYjog dHJ1ZQorKyAgICAgICAgICAgIGZvY3VzOiB0cnVlCisrICAgICAgICB9CisrICAgIH0KKyt9Citk aWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL3Rz dF9xcXVpY2tpdGVtLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tp dGVtMi90c3RfcXF1aWNraXRlbS5jcHAKK2luZGV4IGM4ZjI1MWRiZTEuLmM4ZWYzNmVlNjggMTAw NjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvdHN0 X3FxdWlja2l0ZW0uY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1 aWNraXRlbTIvdHN0X3FxdWlja2l0ZW0uY3BwCitAQCAtNjcsNiArNjcsNyBAQCBwcml2YXRlIHNs b3RzOgorICAgICB2b2lkIGFjdGl2ZUZvY3VzT25UYWIxMCgpOworICAgICB2b2lkIGFjdGl2ZUZv Y3VzT25UYWJfaW5maW5pdGVMb29wX2RhdGEoKTsKKyAgICAgdm9pZCBhY3RpdmVGb2N1c09uVGFi X2luZmluaXRlTG9vcCgpOworKyAgICB2b2lkIGFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29w Q29udHJvbHMoKTsKKyAKKyAgICAgdm9pZCBuZXh0SXRlbUluRm9jdXNDaGFpbigpOworICAgICB2 b2lkIG5leHRJdGVtSW5Gb2N1c0NoYWluMigpOworQEAgLTEwNTcsNiArMTA1OCwxNyBAQCB2b2lk IHRzdF9RUXVpY2tJdGVtOjphY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcCgpCisgICAgIFFD T01QQVJFKGl0ZW0sIHdpbmRvdy0+cm9vdE9iamVjdCgpKTsKKyB9CisgCisrCisrdm9pZCB0c3Rf UVF1aWNrSXRlbTo6YWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3BDb250cm9scygpCisrewor KyAgICBhdXRvIHNvdXJjZSA9IHRlc3RGaWxlVXJsKCJhY3RpdmVGb2N1c09uVGFiX2luZmluaXRl TG9vcDMucW1sIik7CisrICAgIFFTY29wZWRQb2ludGVyPFFRdWlja1ZpZXc+d2luZG93KG5ldyBR UXVpY2tWaWV3KCkpOworKyAgICB3aW5kb3ctPnNldFNvdXJjZShzb3VyY2UpOworKyAgICB3aW5k b3ctPnNob3coKTsKKysgICAgUVZFUklGWSh3aW5kb3ctPmVycm9ycygpLmlzRW1wdHkoKSk7Cisr ICAgIFFUZXN0OjprZXlDbGljayh3aW5kb3cuZ2V0KCksIFF0OjpLZXlfVGFiKTsgLy8gc2hvdWxk IG5vdCBoYW5nCisrfQorKworIHZvaWQgdHN0X1FRdWlja0l0ZW06Om5leHRJdGVtSW5Gb2N1c0No YWluKCkKKyB7CisgICAgIGlmICghcXRfdGFiX2FsbF93aWRnZXRzKCkpCitTdWJtb2R1bGUgcXRk b2MgYzBjN2JmMDcuLi43OWQ2ZWY2OToKK1N1Ym1vZHVsZSBxdGltYWdlZm9ybWF0cyAyZGNmMjg5 OS4uYWJlNDRjMGY6CitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1h Z2Vmb3JtYXRzL2ljbnMvcWljbnNoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVn aW5zL2ltYWdlZm9ybWF0cy9pY25zL3FpY25zaGFuZGxlci5jcHAKK2luZGV4IGRkZTc4M2MuLjFi ZjkwNzQgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1h dHMvaWNucy9xaWNuc2hhbmRsZXIuY3BwCisrKysgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lu cy9pbWFnZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRsZXIuY3BwCitAQCAtNDYyLDggKzQ2MiwxMiBA QCBzdGF0aWMgYm9vbCBwYXJzZUljb25FbnRyeUluZm8oSUNOU0VudHJ5ICZpY29uKQorICAgICBp ZiAoaXNJY29uQ29tcHJlc3NlZChpY29uKSkKKyAgICAgICAgIHJldHVybiB0cnVlOworICAgICAv LyBJY29uIGRlcHRoOgorLSAgICBpZiAoIWRlcHRoLmlzRW1wdHkoKSkKKy0gICAgICAgIGljb24u ZGVwdGggPSBJQ05TRW50cnk6OkRlcHRoKGRlcHRoLnRvVUludCgpKTsKKysgICAgaWYgKCFkZXB0 aC5pc0VtcHR5KCkpIHsKKysgICAgICAgIGNvbnN0IHVpbnQgZGVwdGhVSW50ID0gZGVwdGgudG9V SW50KCk7CisrICAgICAgICBpZiAoZGVwdGhVSW50ID4gMzIpCisrICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworKyAgICAgICAgaWNvbi5kZXB0aCA9IElDTlNFbnRyeTo6RGVwdGgoZGVwdGhVSW50 KTsKKysgICAgfQorICAgICAvLyBUcnkgbW9ubyBpZiBkZXB0aCBub3QgZm91bmQKKyAgICAgaWYg KGljb24uZGVwdGggPT0gSUNOU0VudHJ5OjpEZXB0aFVua25vd24pCisgICAgICAgICBpY29uLmRl cHRoID0gSUNOU0VudHJ5OjpEZXB0aE1vbm87CitAQCAtNTE1LDYgKzUxOSw5IEBAIHN0YXRpYyBi b29sIHBhcnNlSWNvbkVudHJ5SW5mbyhJQ05TRW50cnkgJmljb24pCisgICAgICAgICB9CisgICAg ICAgICBpY29uLmhlaWdodCA9IGljb24ud2lkdGg7CisgICAgIH0KKysgICAgLy8gU2FuaXR5IGNo ZWNrCisrICAgIGlmIChpY29uLndpZHRoID09IDAgfHwgaWNvbi53aWR0aCA+IDQwOTYpCisrICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgIHJldHVybiB0cnVlOworIH0KKyAKK0BAIC02ODUsNyAr NjkyLDcgQEAgYm9vbCBRSUNOU0hhbmRsZXI6OmNhblJlYWQoKSBjb25zdAorIGJvb2wgUUlDTlNI YW5kbGVyOjpyZWFkKFFJbWFnZSAqb3V0SW1hZ2UpCisgeworICAgICBRSW1hZ2UgaW1nOworLSAg ICBpZiAoIWVuc3VyZVNjYW5uZWQoKSkgeworKyAgICBpZiAoIWVuc3VyZVNjYW5uZWQoKSB8fCBt X2N1cnJlbnRJY29uSW5kZXggPj0gbV9pY29ucy5zaXplKCkpIHsKKyAgICAgICAgIHFXYXJuaW5n KCJRSUNOU0hhbmRsZXI6OnJlYWQoKTogVGhlIGRldmljZSB3YXNuJ3QgcGFyc2VkIHByb3Blcmx5 ISIpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CitAQCAtODkyLDcgKzg5OSw3IEBA IGJvb2wgUUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNlKCkKKyAgICAgICAgICAgICByZXR1cm4gZmFs c2U7CisgCisgICAgICAgICBjb25zdCBxaW50NjQgYmxvY2tEYXRhT2Zmc2V0ID0gZGV2aWNlKCkt PnBvcygpOworLSAgICAgICAgaWYgKCFpc0Jsb2NrSGVhZGVyVmFsaWQoYmxvY2tIZWFkZXIpKSB7 CisrICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChibG9ja0hlYWRlciwgSUNOU0Jsb2Nr SGVhZGVyU2l6ZSArIGZpbGVsZW5ndGggLSBibG9ja0RhdGFPZmZzZXQpKSB7CisgICAgICAgICAg ICAgcVdhcm5pbmcoIlFJQ05TSGFuZGxlcjo6c2NhbkRldmljZSgpOiBGYWlsZWQsIGJhZCBoZWFk ZXIgYXQgcG9zICVzLiBPU1R5cGUgXCIlc1wiLCBsZW5ndGggJXUiLAorICAgICAgICAgICAgICAg ICAgICAgIFFCeXRlQXJyYXk6Om51bWJlcihibG9ja0RhdGFPZmZzZXQpLmNvbnN0RGF0YSgpLAor ICAgICAgICAgICAgICAgICAgICAgIG5hbWVGcm9tT1NUeXBlKGJsb2NrSGVhZGVyLm9zdHlwZSku Y29uc3REYXRhKCksIGJsb2NrSGVhZGVyLmxlbmd0aCk7CitAQCAtOTI3LDExICs5MzQsMTQgQEAg Ym9vbCBRSUNOU0hhbmRsZXI6OnNjYW5EZXZpY2UoKQorICAgICAgICAgY2FzZSBJQ05TQmxvY2tI ZWFkZXI6OlR5cGVPZHJwOgorICAgICAgICAgICAgIC8vIEljbnMgY29udGFpbmVyIHNlZW1zIHRv IGhhdmUgYW4gZW1iZWRkZWQgaWNvbiB2YXJpYW50IGNvbnRhaW5lcgorICAgICAgICAgICAgIC8v IExldCdzIHN0YXJ0IGEgc2NhbiBmb3IgZW50cmllcworLSAgICAgICAgICAgIHdoaWxlIChkZXZp Y2UoKS0+cG9zKCkgPCBuZXh0QmxvY2tPZmZzZXQpIHsKKysgICAgICAgICAgICB3aGlsZSAoIXN0 cmVhbS5hdEVuZCgpICYmIGRldmljZSgpLT5wb3MoKSA8IG5leHRCbG9ja09mZnNldCkgeworICAg ICAgICAgICAgICAgICBJQ05TQmxvY2tIZWFkZXIgaWNvbjsKKyAgICAgICAgICAgICAgICAgc3Ry ZWFtID4+IGljb247CisrICAgICAgICAgICAgICAgIGlmIChzdHJlYW0uc3RhdHVzKCkgIT0gUURh dGFTdHJlYW06Ok9rKQorKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgICAgICAgICAvLyBDaGVjayBmb3IgaW5jb3JyZWN0IHZhcmlhbnQgZW50cnkgaGVhZGVyIGFu ZCBzdG9wIHNjYW4KKy0gICAgICAgICAgICAgICAgaWYgKCFpc0Jsb2NrSGVhZGVyVmFsaWQoaWNv biwgYmxvY2tEYXRhTGVuZ3RoKSkKKysgICAgICAgICAgICAgICAgcXVpbnQ2NCByZW1haW5pbmcg PSBibG9ja0RhdGFMZW5ndGggLSAoZGV2aWNlKCktPnBvcygpIC0gYmxvY2tEYXRhT2Zmc2V0KTsK KysgICAgICAgICAgICAgICAgaWYgKCFpc0Jsb2NrSGVhZGVyVmFsaWQoaWNvbiwgSUNOU0Jsb2Nr SGVhZGVyU2l6ZSArIHJlbWFpbmluZykpCisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgICAgICAgICAgaWYgKCFhZGRFbnRyeShpY29uLCBkZXZpY2UoKS0+cG9zKCksIGJsb2Nr SGVhZGVyLm9zdHlwZSkpCisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CitAQCAt MTAwMyw3ICsxMDEzLDcgQEAgYm9vbCBRSUNOU0hhbmRsZXI6OnNjYW5EZXZpY2UoKQorICAgICAg ICAgICAgIGJyZWFrOworICAgICAgICAgfQorICAgICB9CistICAgIHJldHVybiB0cnVlOworKyAg ICByZXR1cm4gKG1faWNvbnMuc2l6ZSgpID4gMCk7CisgfQorIAorIGNvbnN0IElDTlNFbnRyeSAm UUlDTlNIYW5kbGVyOjpnZXRJY29uTWFzayhjb25zdCBJQ05TRW50cnkgJmljb24pIGNvbnN0Citk aWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2pwMi9x anAyaGFuZGxlci5jcHAgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMv anAyL3FqcDJoYW5kbGVyLmNwcAoraW5kZXggNTA4MjAyMy4uY2IzNDM3NCAxMDA2NDQKKy0tLSBh L3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9qcDIvcWpwMmhhbmRsZXIu Y3BwCisrKysgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvanAyL3Fq cDJoYW5kbGVyLmNwcAorQEAgLTQzLDYgKzQzLDcgQEAKKyAjaW5jbHVkZSAicWltYWdlLmgiCisg I2luY2x1ZGUgInF2YXJpYW50LmgiCisgI2luY2x1ZGUgInFjb2xvci5oIgorKyNpbmNsdWRlICJx aW1hZ2VyZWFkZXIuaCIKKyAKKyAjaW5jbHVkZSA8amFzcGVyL2phc3Blci5oPgorICNpbmNsdWRl IDxtYXRoLmg+IC8vIGZvciBwb3cKK0BAIC0zMzMsMTYgKzMzNCw0NiBAQCBwcml2YXRlOgorIEpw ZWcyMDAwSmFzcGVyUmVhZGVyOjpKcGVnMjAwMEphc3BlclJlYWRlcihRSU9EZXZpY2UgKmlvZCwg U3ViRm9ybWF0IGZvcm1hdCkKKyAgICAgOiBqYXNwZXJPayh0cnVlKSwgaW9EZXZpY2UoaW9kKSwg Zm9ybWF0KGZvcm1hdCksIGhhc0FscGhhKGZhbHNlKQorIHsKKysjaWYgSkFTX1ZFUlNJT05fTUFK T1IgPCAzCisgICAgIGlmIChqYXNfaW5pdCgpKSB7CisgICAgICAgICBqYXNwZXJPayA9IGZhbHNl OworICAgICAgICAgcURlYnVnKCJKYXNwZXIgTGlicmFyeSBpbml0aWFsaXphdGlvbiBmYWlsZWQi KTsKKyAgICAgfQorKyNlbHNlCisrICAgIGphc19jb25mX2NsZWFyKCk7CisrI2lmIFFUX1ZFUlNJ T04gPj0gUVRfVkVSU0lPTl9DSEVDSyg2LCAwLCAwKQorKyAgICBqYXNfY29uZl9zZXRfbWF4X21l bV91c2FnZShRSW1hZ2VSZWFkZXI6OmFsbG9jYXRpb25MaW1pdCgpICogMTAyNCAqIDEwMjQpOwor KyNlbHNlCisrICAgIC8vIDEyOE1CIHNlZW1zIHRvIGJlIGVub3VnaC4KKysgICAgamFzX2NvbmZf c2V0X21heF9tZW1fdXNhZ2UoMTI4ICogMTAyNCAqIDEwMjQpOworKyNlbmRpZgorKyAgICBpZiAo amFzX2luaXRfbGlicmFyeSgpKSB7CisrICAgICAgICBqYXNwZXJPayA9IGZhbHNlOworKyAgICAg ICAgcURlYnVnKCJKYXNwZXIgbGlicmFyeSBpbml0aWFsaXphdGlvbiBmYWlsZWQiKTsKKysgICAg fQorKyAgICBpZiAoamFzX2luaXRfdGhyZWFkKCkpIHsKKysgICAgICAgIGphc19jbGVhbnVwX2xp YnJhcnkoKTsKKysgICAgICAgIGphc3Blck9rID0gZmFsc2U7CisrICAgICAgICBxRGVidWcoIkph c3BlciB0aHJlYWQgaW5pdGlhbGl6YXRpb24gZmFpbGVkIik7CisrICAgIH0KKysjZW5kaWYKKyB9 CisgCisgSnBlZzIwMDBKYXNwZXJSZWFkZXI6On5KcGVnMjAwMEphc3BlclJlYWRlcigpCisgewor KyNpZiBKQVNfVkVSU0lPTl9NQUpPUiA8IDMKKyAgICAgaWYgKGphc3Blck9rKQorICAgICAgICAg amFzX2NsZWFudXAoKTsKKysjZWxzZQorKyAgICBpZiAoamFzcGVyT2spIHsKKysgICAgICAgIGlm IChqYXNfY2xlYW51cF90aHJlYWQoKSkgeworKyAgICAgICAgICAgIHFEZWJ1ZygiSmFzcGVyIHRo cmVhZCBjbGVhbnVwIGZhaWxlZCIpOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKGphc19jbGVh bnVwX2xpYnJhcnkoKSkgeworKyAgICAgICAgICAgIHFEZWJ1ZygiSmFzcGVyIGxpYnJhcnkgY2xl YW51cCBmYWlsZWQiKTsKKysgICAgICAgIH0KKysgICAgfQorKyNlbmRpZgorIH0KKyAKKyAvKiEg XGludGVybmFsCitAQCAtODU3LDcgKzg4OCw3IEBAIGJvb2wgSnBlZzIwMDBKYXNwZXJSZWFkZXI6 OndyaXRlKGNvbnN0IFFJbWFnZSAmaW1hZ2UsIGludCBxdWFsaXR5KQorICAgICB9CisgCisgICAg IC8vIE9wZW4gYW4gZW1wdHkgamFzcGVyIHN0cmVhbSB0aGF0IGdyb3dzIGF1dG9tYXRpY2FsbHkK Ky0gICAgamFzX3N0cmVhbV90ICogbWVtb3J5X3N0cmVhbSA9IGphc19zdHJlYW1fbWVtb3Blbigw LCAtMSk7CisrICAgIGphc19zdHJlYW1fdCAqIG1lbW9yeV9zdHJlYW0gPSBqYXNfc3RyZWFtX21l bW9wZW4oMCwgMCk7CisgCisgICAgIC8vIEphc3BlciB3YW50cyBhIG5vbi1jb25zdCBzdHJpbmcu CisgICAgIGNoYXIgKnN0ciA9IHFzdHJkdXAoamFzcGVyRm9ybWF0U3RyaW5nLnRvTGF0aW4xKCku Y29uc3REYXRhKCkpOworZGlmZiAtLWdpdCBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2lt YWdlZm9ybWF0cy90aWZmL3F0aWZmaGFuZGxlci5jcHAgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1 Z2lucy9pbWFnZWZvcm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIuY3BwCitpbmRleCAxMzg2NzUwLi5h Yzg5NTZjIDEwMDY0NAorLS0tIGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3Jt YXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNwcAorKysrIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdp bnMvaW1hZ2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNwcAorQEAgLTM2MSw2ICszNjEsOCBA QCBib29sIFFUaWZmSGFuZGxlcjo6cmVhZChRSW1hZ2UgKmltYWdlKQorICAgICB9CisgCisgICAg IFRJRkYgKmNvbnN0IHRpZmYgPSBkLT50aWZmOworKyAgICBpZiAoVElGRklzVGlsZWQodGlmZikg JiYgVElGRlRpbGVTaXplNjQodGlmZikgPiB1aW50NjRfdChpbWFnZS0+c2l6ZUluQnl0ZXMoKSkp IC8vIENvcnJ1cHQgaW1hZ2UKKysgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgY29uc3QgcXVp bnQzMiB3aWR0aCA9IGQtPnNpemUud2lkdGgoKTsKKyAgICAgY29uc3QgcXVpbnQzMiBoZWlnaHQg PSBkLT5zaXplLmhlaWdodCgpOworIAorZGlmZiAtLWdpdCBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9w bHVnaW5zL2ltYWdlZm9ybWF0cy93ZWJwL3F3ZWJwaGFuZGxlci5jcHAgYi9xdGltYWdlZm9ybWF0 cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvd2VicC9xd2VicGhhbmRsZXIuY3BwCitpbmRleCA4 MmQzOGNiLi5kMDJlYjA1IDEwMDY0NAorLS0tIGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMv aW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNwcAorKysrIGIvcXRpbWFnZWZvcm1hdHMv c3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNwcAorQEAgLTQ1LDYg KzQ1LDcgQEAKKyAjaW5jbHVkZSA8cWRlYnVnLmg+CisgI2luY2x1ZGUgPHFwYWludGVyLmg+Cisg I2luY2x1ZGUgPHF2YXJpYW50Lmg+CisrI2luY2x1ZGUgPFF0RW5kaWFuPgorIAorIHN0YXRpYyBj b25zdCBpbnQgcmlmZkhlYWRlclNpemUgPSAxMjsgLy8gUklGRl9IRUFERVJfU0laRSBmcm9tIHdl YnAvZm9ybWF0X2NvbnN0YW50cy5oCisgCitAQCAtMTAyLDIxICsxMDMsMjMgQEAgYm9vbCBRV2Vi cEhhbmRsZXI6OmVuc3VyZVNjYW5uZWQoKSBjb25zdAorIAorICAgICBtX3NjYW5TdGF0ZSA9IFNj YW5FcnJvcjsKKyAKKy0gICAgaWYgKGRldmljZSgpLT5pc1NlcXVlbnRpYWwoKSkgeworLSAgICAg ICAgcVdhcm5pbmcoKSA8PCAiU2VxdWVudGlhbCBkZXZpY2VzIGFyZSBub3Qgc3VwcG9ydGVkIjsK KysgICAgUVdlYnBIYW5kbGVyICp0aGF0ID0gY29uc3RfY2FzdDxRV2VicEhhbmRsZXIgKj4odGhp cyk7CisrICAgIGNvbnN0IGludCBoZWFkZXJCeXRlc05lZWRlZCA9IHNpemVvZihXZWJQQml0c3Ry ZWFtRmVhdHVyZXMpOworKyAgICBRQnl0ZUFycmF5IGhlYWRlciA9IGRldmljZSgpLT5wZWVrKGhl YWRlckJ5dGVzTmVlZGVkKTsKKysgICAgaWYgKGhlYWRlci5zaXplKCkgPCBoZWFkZXJCeXRlc05l ZWRlZCkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgfQorIAorLSAgICBxaW50NjQgb2xk UG9zID0gZGV2aWNlKCktPnBvcygpOworLSAgICBkZXZpY2UoKS0+c2VlaygwKTsKKy0KKy0gICAg UVdlYnBIYW5kbGVyICp0aGF0ID0gY29uc3RfY2FzdDxRV2VicEhhbmRsZXIgKj4odGhpcyk7Cist ICAgIFFCeXRlQXJyYXkgaGVhZGVyID0gZGV2aWNlKCktPnBlZWsoc2l6ZW9mKFdlYlBCaXRzdHJl YW1GZWF0dXJlcykpOworKyAgICAvLyBXZSBkbyBubyByYW5kb20gYWNjZXNzIGR1cmluZyBkZWNv ZGluZywganVzdCBhIHJlYWRBbGwoKSBvZiB0aGUgd2hvbGUgaW1hZ2UgZmlsZS4gU28gaWYKKysg ICAgLy8gaWYgaXQgaXMgYWxsIGF2YWlsYWJsZSBhbHJlYWR5LCB3ZSBjYW4gYWNjZXB0IGEgc2Vx dWVudGlhbCBkZXZpY2UuIFRoZSByaWZmIGhlYWRlciBjb250YWlucworKyAgICAvLyB0aGUgZmls ZSBzaXplIG1pbnVzIDggYnl0ZXMgaGVhZGVyCisrICAgIHFpbnQ2NCBieXRlU2l6ZSA9IHFGcm9t TGl0dGxlRW5kaWFuPHF1aW50MzI+KGhlYWRlci5jb25zdERhdGEoKSArIDQpOworKyAgICBpZiAo ZGV2aWNlKCktPmlzU2VxdWVudGlhbCgpICYmIGRldmljZSgpLT5ieXRlc0F2YWlsYWJsZSgpIDwg Ynl0ZVNpemUgKyA4KSB7CisrICAgICAgICBxV2FybmluZygpIDw8ICJRV2VicEhhbmRsZXI6IElu c3VmZmljaWVudCBkYXRhIGF2YWlsYWJsZSBpbiBzZXF1ZW50aWFsIGRldmljZSI7CisrICAgICAg ICByZXR1cm4gZmFsc2U7CisrICAgIH0KKyAgICAgaWYgKFdlYlBHZXRGZWF0dXJlcygoY29uc3Qg dWludDhfdCopaGVhZGVyLmNvbnN0RGF0YSgpLCBoZWFkZXIuc2l6ZSgpLCAmKHRoYXQtPm1fZmVh dHVyZXMpKSA9PSBWUDhfU1RBVFVTX09LKSB7CisgICAgICAgICBpZiAobV9mZWF0dXJlcy5oYXNf YW5pbWF0aW9uKSB7CisgICAgICAgICAgICAgLy8gRm9yIGFuaW1hdGlvbiwgd2UgaGF2ZSB0byBy ZWFkIGFuZCBzY2FuIHdob2xlIGZpbGUgdG8gZGV0ZXJtaW5lIGxvb3AgY291bnQgYW5kIGltYWdl cyBjb3VudAorLSAgICAgICAgICAgIGRldmljZSgpLT5zZWVrKG9sZFBvcyk7CistCisgICAgICAg ICAgICAgaWYgKHRoYXQtPmVuc3VyZURlbXV4ZXIoKSkgeworICAgICAgICAgICAgICAgICB0aGF0 LT5tX2xvb3AgPSBXZWJQRGVtdXhHZXRJKG1fZGVtdXhlciwgV0VCUF9GRl9MT09QX0NPVU5UKTsK KyAgICAgICAgICAgICAgICAgdGhhdC0+bV9mcmFtZUNvdW50ID0gV2ViUERlbXV4R2V0SShtX2Rl bXV4ZXIsIFdFQlBfRkZfRlJBTUVfQ09VTlQpOworQEAgLTEyNiwxNyArMTI5LDEzIEBAIGJvb2wg UVdlYnBIYW5kbGVyOjplbnN1cmVTY2FubmVkKCkgY29uc3QKKyAgICAgICAgICAgICAgICAgaWYg KHRoYXQtPm1fZmVhdHVyZXMuaGFzX2FscGhhKQorICAgICAgICAgICAgICAgICAgICAgdGhhdC0+ bV9jb21wb3NpdGVkLT5maWxsKFF0Ojp0cmFuc3BhcmVudCk7CisgCistICAgICAgICAgICAgICAg IC8vIFdlIGRvIG5vdCByZXNldCBkZXZpY2UgcG9zaXRpb24gc2luY2Ugd2UgaGF2ZSByZWFkIGlu IGFsbCBkYXRhCisgICAgICAgICAgICAgICAgIG1fc2NhblN0YXRlID0gU2NhblN1Y2Nlc3M7Cist ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgbV9zY2FuU3RhdGUgPSBTY2FuU3VjY2VzczsKKyAgICAgICAg IH0KKyAgICAgfQorIAorLSAgICBkZXZpY2UoKS0+c2VlayhvbGRQb3MpOworLQorICAgICByZXR1 cm4gbV9zY2FuU3RhdGUgPT0gU2NhblN1Y2Nlc3M7CisgfQorIAorQEAgLTE1OSw3ICsxNTgsNyBA QCBib29sIFFXZWJwSGFuZGxlcjo6ZW5zdXJlRGVtdXhlcigpCisgCisgYm9vbCBRV2VicEhhbmRs ZXI6OnJlYWQoUUltYWdlICppbWFnZSkKKyB7CistICAgIGlmICghZW5zdXJlU2Nhbm5lZCgpIHx8 IGRldmljZSgpLT5pc1NlcXVlbnRpYWwoKSB8fCAhZW5zdXJlRGVtdXhlcigpKQorKyAgICBpZiAo IWVuc3VyZVNjYW5uZWQoKSB8fCAhZW5zdXJlRGVtdXhlcigpKQorICAgICAgICAgcmV0dXJuIGZh bHNlOworIAorICAgICBRUmVjdCBwcmV2RnJhbWVSZWN0OworU3VibW9kdWxlIHF0bG9jYXRpb24g OThhNWM1MTEuLmY5OTFlMjhjOgorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9u L2NvbmZpZ3VyZS5qc29uIGIvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vY29uZmlndXJlLmpzb24K K2luZGV4IDZkMDFhOWEzLi5kMWU2MjNhMSAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL2xv Y2F0aW9uL2NvbmZpZ3VyZS5qc29uCisrKysgYi9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9jb25m aWd1cmUuanNvbgorQEAgLTksNyArOSw3IEBACisgICAgICAgICAgICAgImxhYmVsIjogIlF0Lmxh YnMubG9jYXRpb24gZXhwZXJpbWVudGFsIFFNTCBwbHVnaW4iLAorICAgICAgICAgICAgICJwdXJw b3NlIjogIlByb3ZpZGVzIGV4cGVyaW1lbnRhbCBRdExvY2F0aW9uIFFNTCB0eXBlcyIsCisgICAg ICAgICAgICAgInNlY3Rpb24iOiAiTG9jYXRpb24iLAorLSAgICAgICAgICAgICJjb25kaXRpb24i OiAiY29uZmlnLm9wZW5nbCIsCisrICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJmZWF0dXJlcy5v cGVuZ2wiLAorICAgICAgICAgICAgICJvdXRwdXQiOiBbICJwcml2YXRlRmVhdHVyZSIgXQorICAg ICAgICAgfSwKKyAgICAgICAgICJnZW9zZXJ2aWNlc19vc20iOiB7CitkaWZmIC0tZ2l0IGEvcXRs b2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cvcWdlb21hcG9iamVjdHFzZ3N1cHBvcnQuY3Bw IGIvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cvcWdlb21hcG9iamVjdHFzZ3N1cHBv cnQuY3BwCitpbmRleCBhOTc4NTczZC4uMTFlMTQ2NmYgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9u L3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0cXNnc3VwcG9ydC5jcHAKKysrKyBi L3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmplY3Rxc2dzdXBwb3J0 LmNwcAorQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFFHZW9NYXBPYmplY3RRU0dTdXBwb3J0Ojp1 cGRhdGVNYXBPYmplY3RzKFFTR05vZGUgKnJvb3QsIFFRdWlja1dpbmRvdyAqd2luZAorICAgICBp ZiAoIXJvb3QpCisgICAgICAgICByZXR1cm47CisgCistICAgIGlmIChtX21hcE9iamVjdHNSb290 Tm9kZSAmJiBtX21hcE9iamVjdHNSb290Tm9kZS0+cGFyZW50KCkpCisrICAgIGlmIChtX21hcE9i amVjdHNSb290Tm9kZSAmJiAhbV9tYXBPYmplY3RzUm9vdE5vZGUtPnBhcmVudCgpKQorICAgICAg ICAgcm9vdC0+YXBwZW5kQ2hpbGROb2RlKG1fbWFwT2JqZWN0c1Jvb3ROb2RlLmdldCgpKTsKKyAK KyAgICAgaWYgKCFtX21hcE9iamVjdHNSb290Tm9kZSkgeworZGlmZiAtLWdpdCBhL3F0bG9jYXRp b24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2Vz cmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb2NvZGlu Z21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDVhNDA0NjdlLi5kMTIzYzZhOCAxMDA2NDQK Ky0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9jb2Rpbmdt YW5hZ2VyZW5naW5lX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3Nl cnZpY2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorQEAgLTU5LDggKzU5 LDEwIEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtQcmVmaXhF c3JpKFFTdHJpbmdMaXRlcmFsKCJlc3JpLiIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrUGFy YW1Vc2VyQWdlbnQoa1ByZWZpeEVzcmkgKyBRU3RyaW5nTGl0ZXJhbCgidXNlcmFnZW50IikpOwor IAorLXN0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxHZW9jb2RlKFFTdHJpbmdMaXRlcmFsKCJodHRw Oi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVT ZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIikpOworLXN0YXRpYyBjb25zdCBRU3RyaW5nIGtV cmxSZXZlcnNlR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgiaHR0cDovL2dlb2NvZGUuYXJjZ2lzLmNv bS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyL3JldmVyc2VHZW9jb2Rl IikpOworK3N0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxHZW9jb2RlKFFTdHJpbmdMaXRlcmFsKCJo dHRwczovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy8iCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldvcmxkL0dlb2NvZGVT ZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIikpOworK3N0YXRpYyBjb25zdCBRU3RyaW5nIGtV cmxSZXZlcnNlR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgKKysgICAgICAgICJodHRwczovL2dlb2Nv ZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyL3Jl dmVyc2VHZW9jb2RlIikpOworIAorIHN0YXRpYyBRU3RyaW5nIGFkZHJlc3NUb1F1ZXJ5KGNvbnN0 IFFHZW9BZGRyZXNzICZhZGRyZXNzKQorIHsKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9w bHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29ucGFyc2VyX2VzcmkuY3BwIGIvcXRs b2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlanNvbnBhcnNlcl9l c3JpLmNwcAoraW5kZXggMTc0OTJkOTQuLjk2YzEyYjFiIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlv bi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlanNvbnBhcnNlcl9lc3JpLmNw cAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRl anNvbnBhcnNlcl9lc3JpLmNwcAorQEAgLTQ2LDcgKzQ2LDggQEAKKyAKKyBRVF9CRUdJTl9OQU1F U1BBQ0UKKyAKKy0vLyBKU09OIHJlZmVyZW5jZTogaHR0cDovL3Jlc291cmNlcy5hcmNnaXMuY29t L2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVfc2VydmljZV93aXRoX3N5bmNocm9ub3Vz X2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAvCisrLy8gSlNPTiByZWZlcmVuY2U6CisrLy8g aHR0cHM6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS8jL1Jv dXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVjdXRpb24vMDJyMzAwMDAwMDM2MDAwMDAw LworIAorIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtFcnJvck1lc3NhZ2UoUVN0cmluZ0xpdGVyYWwo IkVycm9yICUxOiAlMi4iKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga0Vycm9ySnNvbihRU3Ry aW5nTGl0ZXJhbCgiRXJyb3I6IGludmFsaWRlIEpTT04gZG9jdW1lbnQuIikpOworZGlmZiAtLWdp dCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZXJlcGx5 X2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3Jv dXRlcmVwbHlfZXNyaS5jcHAKK2luZGV4IDhjYWRmYjI5Li45MmI2YmIxMyAxMDA2NDQKKy0tLSBh L3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZXJlcGx5X2Vz cmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vv cm91dGVyZXBseV9lc3JpLmNwcAorQEAgLTQ0LDcgKzQ0LDggQEAKKyAKKyBRVF9CRUdJTl9OQU1F U1BBQ0UKKyAKKy0vLyBKU09OIHJlZmVyZW5jZTogaHR0cDovL3Jlc291cmNlcy5hcmNnaXMuY29t L2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVfc2VydmljZV93aXRoX3N5bmNocm9ub3Vz X2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAvCisrLy8gSlNPTiByZWZlcmVuY2U6CisrLy8g aHR0cHM6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS8jL1Jv dXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVjdXRpb24vMDJyMzAwMDAwMDM2MDAwMDAw LworIAorIEdlb1JvdXRlUmVwbHlFc3JpOjpHZW9Sb3V0ZVJlcGx5RXNyaShRTmV0d29ya1JlcGx5 ICpyZXBseSwgY29uc3QgUUdlb1JvdXRlUmVxdWVzdCAmcmVxdWVzdCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUU9iamVjdCAqcGFyZW50KSA6CitkaWZmIC0tZ2l0IGEv cXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5hZ2Vy ZW5naW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3Jp L2dlb3JvdXRpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitpbmRleCAwZTZiYzJjNy4uZWQ2MTNm NGIgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2Vzcmkv Z2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3Bs dWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAor QEAgLTQ4LDcgKzQ4LDggQEAgc3RhdGljIGNvbnN0IFFTdHJpbmcga1ByZWZpeEVzcmkoUVN0cmlu Z0xpdGVyYWwoImVzcmkuIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtQYXJhbVVzZXJBZ2Vu dChrUHJlZml4RXNyaSArIFFTdHJpbmdMaXRlcmFsKCJ1c2VyYWdlbnQiKSk7Cisgc3RhdGljIGNv bnN0IFFTdHJpbmcga1BhcmFtVG9rZW4oa1ByZWZpeEVzcmkgKyBRU3RyaW5nTGl0ZXJhbCgidG9r ZW4iKSk7CisgCistc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybFJvdXRpbmcoUVN0cmluZ0xpdGVy YWwoImh0dHA6Ly9yb3V0ZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL1Jv dXRlL05BU2VydmVyL1JvdXRlX1dvcmxkL3NvbHZlIikpOworK3N0YXRpYyBjb25zdCBRU3RyaW5n IGtVcmxSb3V0aW5nKFFTdHJpbmdMaXRlcmFsKAorKyAgICAgICAgImh0dHBzOi8vcm91dGUuYXJj Z2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9Sb3V0ZS9OQVNlcnZlci9Sb3V0ZV9X b3JsZC9zb2x2ZSIpKTsKKyAKKyBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6Okdlb1JvdXRp bmdNYW5hZ2VyRW5naW5lRXNyaShjb25zdCBRVmFyaWFudE1hcCAmcGFyYW1ldGVycywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRR2Vv U2VydmljZVByb3ZpZGVyOjpFcnJvciAqZXJyb3IsCitAQCAtNzAsNyArNzEsOCBAQCBHZW9Sb3V0 aW5nTWFuYWdlckVuZ2luZUVzcmk6On5HZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmkoKQorIHsK KyB9CisgCistLy8gUkVTVCByZWZlcmVuY2U6IGh0dHA6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9l bi9oZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5odG1sIy8vMDJyMzAwMDAwMDM2MDAwMDAwCisr Ly8gUkVTVCByZWZlcmVuY2U6CisrLy8gaHR0cHM6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9o ZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5odG1sIy8vMDJyMzAwMDAwMDM2MDAwMDAwCisgCisg UUdlb1JvdXRlUmVwbHkgKkdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaTo6Y2FsY3VsYXRlUm91 dGUoY29uc3QgUUdlb1JvdXRlUmVxdWVzdCAmcmVxdWVzdCkKKyB7CitAQCAtMTI1LDcgKzEyNyw3 IEBAIHZvaWQgR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjpyZXBseUVycm9yKFFHZW9Sb3V0 ZVJlcGx5OjpFcnJvciBlcnJvckNvZGUsIGNvCisgUVN0cmluZyBHZW9Sb3V0aW5nTWFuYWdlckVu Z2luZUVzcmk6OnByZWZlcmVkRGlyZWN0aW9uTGFuZ2FnZSgpCisgeworICAgICAvLyBsaXN0IG9m IHN1cHBvcnRlZCBsYW5nYWdlcyBpcyBkZWZpbmVkIGluOgorLSAgICAvLyBodHRwOi8vcmVzb3Vy Y2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvaW5kZXguaHRtbCMvLzAycjMw MDAwMDAzNjAwMDAwMAorKyAgICAvLyBodHRwczovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hl bHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAwMzYwMDAwMDAKKyAgICAg Y29uc3QgUVN0cmluZ0xpc3Qgc3VwcG9ydGVkTGFuZ3VhZ2VzID0geworICAgICAgICAgImFyIiwg Ly8gR2VuZXJhdGUgZGlyZWN0aW9ucyBpbiBBcmFiaWMKKyAgICAgICAgICJjcyIsIC8vIEdlbmVy YXRlIGRpcmVjdGlvbnMgaW4gQ3plY2gKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVn aW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNw cCBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW90aWxlZG1hcHBp bmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitpbmRleCA1ZDE1ODM1ZC4uMjQxNDhmOTUgMTAwNjQ0 CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRt YXBwaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lu cy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3RpbGVkbWFwcGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAK K0BAIC0yMzAsNyArMjMwLDggQEAgUUdlb01hcCAqR2VvVGlsZWRNYXBwaW5nTWFuYWdlckVuZ2lu ZUVzcmk6OmNyZWF0ZU1hcCgpCisgLy8gJHt5fSA9IFkKKyAvLyAke3Rva2VufSA9IFRva2VuCisg CistLy8gdGVtcGxhdGUgPSAnaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lT L3Jlc3Qvc2VydmljZXMvV29ybGRfVG9wb19NYXAvTWFwU2VydmVyL3RpbGUve3t6fX0ve3t5fX0v e3t4fX0ucG5nJworKy8vIHRlbXBsYXRlID0KKysvLyAnaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNv bmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9fTWFwL01hcFNlcnZlci90 aWxlL3t7en19L3t7eX19L3t7eH19LnBuZycKKyAKKyBib29sIEdlb1RpbGVkTWFwcGluZ01hbmFn ZXJFbmdpbmVFc3JpOjppbml0aWFsaXplTWFwU291cmNlcyhRR2VvU2VydmljZVByb3ZpZGVyOjpF cnJvciAqZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVN0cmluZyAqZXJyb3JTdHJpbmcsCitkaWZmIC0tZ2l0IGEvcXRs b2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL21hcHMuanNvbiBiL3F0bG9jYXRp b24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBzLmpzb24KK2luZGV4IDgxNjdhZTdk Li44NjJlMDg3ZCAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2Vydmlj ZXMvZXNyaS9tYXBzLmpzb24KKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2Vydmlj ZXMvZXNyaS9tYXBzLmpzb24KK0BAIC02LDggKzYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlw dGlvbiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIFN0cmVldCBNYXAiLAorICAgICAgICAgICAgICJt b2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAg ICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2Vy dmljZXMvV29ybGRfU3RyZWV0X01hcC9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmln aHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVt Lmh0bWw/aWQ9M2I5MzMzNzk4M2U5NDM2ZjhkYjk1MGUzOGE4NjI5YWYnPkVzcmk8L2E+IGNvbnRy aWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25s aW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9TdHJlZXRfTWFwL01hcFNlcnZlciIs CisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8v d3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9M2I5MzMzNzk4M2U5NDM2ZjhkYjk1MGUz OGE4NjI5YWYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAg ICB7CitAQCAtMTYsOCArMTYsOCBAQAorICAgICAgICAgICAgICIiOiAiQXJjR0lTIE9ubGluZSBX b3JsZCBJbWFnZXJ5IiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwKKyAgICAgICAgICAg ICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJj Z2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9JbWFnZXJ5L01hcFNlcnZl ciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6 Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0xMGRmMjI3OWY5Njg0ZTRhOWY2YTdm MDhmZWJhYzJhOSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAi aHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3Js ZF9JbWFnZXJ5L01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNv cHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MTBk ZjIyNzlmOTY4NGU0YTlmNmE3ZjA4ZmViYWMyYTknPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAg ICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMjYsOCArMjYsOCBAQAorICAgICAgICAgICAg ICJkZXNjcmlwdGlvbiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIFRlcnJhaW4gQmFzZSIsCisgICAg ICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAor LSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJ Uy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RlcnJhaW5fQmFzZS9NYXBTZXJ2ZXIiLAorLSAgICAgICAg ICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5j b20vaG9tZS9pdGVtLmh0bWw/aWQ9YzYxYWQ4YWIwMTdkNDllMWE4MmY1ODBlZTEyOTg5MzEnPkVz cmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVy LmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVGVycmFpbl9CYXNl L01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhy ZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YzYxYWQ4YWIwMTdk NDllMWE4MmY1ODBlZTEyOTg5MzEnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0s CisgCisgICAgICAgICB7CitAQCAtMzYsOCArMzYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlw dGlvbiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIFRvcG9ncmFwaHkiLAorICAgICAgICAgICAgICJt b2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAg ICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZp Y2VzL1dvcmxkX1RvcG9fTWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRl eHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRt bD9pZD0zMGU1ZmUzMTQ5YzM0ZGYxYmE5MjJlNmY1YmJmODA4Zic+RXNyaTwvYT4gY29udHJpYnV0 b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNv bS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBTZXJ2ZXIiLAorKyAgICAg ICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNn aXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTMwZTVmZTMxNDljMzRkZjFiYTkyMmU2ZjViYmY4MDhm Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAg LTQ2LDggKzQ2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBtYXAgcHJl c2VudHMgbGFuZCBjb3ZlciBhbmQgZGV0YWlsZWQgdG9wb2dyYXBoaWMgbWFwcyBmb3IgdGhlIFVu aXRlZCBTdGF0ZXMuIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwKKyAgICAgICAgICAg ICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2aWNlcy5h cmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1VTQV9Ub3BvX01hcHMvTWFwU2Vy dmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0 cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTk5Y2Q1ZmJkOTg5MzQwMjg4MDJi NGY3OTdjNGIxNzMyJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6 ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMv VVNBX1RvcG9fTWFwcy9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0Ijog IiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lk PTk5Y2Q1ZmJkOTg5MzQwMjg4MDJiNGY3OTdjNGIxNzMyJz5Fc3JpPC9hPiBjb250cmlidXRvcnMi CisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTU2LDggKzU2LDggQEAKKyAgICAgICAg ICAgICAiZGVzY3JpcHRpb24iOiAiTmF0aW9uYWwgR2VvZ3JhcGhpYyBXb3JsZCBNYXAiLAorICAg ICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwK Ky0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0Fy Y0dJUy9yZXN0L3NlcnZpY2VzL05hdEdlb19Xb3JsZF9NYXAvTWFwU2VydmVyIiwKKy0gICAgICAg ICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMu Y29tL2hvbWUvaXRlbS5odG1sP2lkPWI5YjFiNDIyMTk4OTQ0ZmJiZDUyNTBiMzI0MTY5MWI2Jz5F c3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZp Y2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvTmF0R2VvX1dvcmxkX01h cC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBo cmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWI5YjFiNDIyMTk4 OTQ0ZmJiZDUyNTBiMzI0MTY5MWI2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9 LAorIAorICAgICAgICAgeworQEAgLTY2LDggKzY2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3Jp cHRpb24iOiAiVGhlbWF0aWMgY29udGVudCBwcm92aWRpbmcgYSBuZXV0cmFsIGJhY2tncm91bmQg d2l0aCBtaW5pbWFsIGNvbG9ycyIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IHRydWUsCisgICAg ICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2Vy dmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9DYW52YXMvV29ybGRf TGlnaHRfR3JheV9CYXNlL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQi OiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9p ZD1lZDcxMmNiMWRiM2U0YmFlOWU4NTMyOTA0MGZiOWE0OSc+RXNyaTwvYT4gY29udHJpYnV0b3Jz IgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29t L0FyY0dJUy9yZXN0L3NlcnZpY2VzL0NhbnZhcy9Xb3JsZF9MaWdodF9HcmF5X0Jhc2UvTWFwU2Vy dmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0 cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1lZDcxMmNiMWRiM2U0YmFlOWU4 NTMyOTA0MGZiOWE0OSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAg ICAgICAgIHsKK0BAIC03Niw4ICs3Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog Ik5hdHVyYWwgRWFydGggcGh5c2ljYWwgbWFwIGZvciB0aGUgd29ybGQiLAorICAgICAgICAgICAg ICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAg ICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9z ZXJ2aWNlcy9Xb3JsZF9QaHlzaWNhbF9NYXAvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29w eXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUv aXRlbS5odG1sP2lkPWM0ZWM3MjJhMWNkMzRjZjBhMjM5MDRhYWRmODkyM2EwJz5Fc3JpPC9hPiBj b250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNv bmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1BoeXNpY2FsX01hcC9NYXBTZXJ2 ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRw czovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWM0ZWM3MjJhMWNkMzRjZjBhMjM5 MDRhYWRmODkyM2EwJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAg ICAgICAgeworQEAgLTg2LDggKzg2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi UG9ydHJheXMgc3VyZmFjZSBlbGV2YXRpb24gYXMgc2hhZGVkIHJlbGllZiIsCisgICAgICAgICAg ICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAg ICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0 L3NlcnZpY2VzL1dvcmxkX1NoYWRlZF9SZWxpZWYvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAi Y29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hv bWUvaXRlbS5odG1sP2lkPTljNTM3MGQwYjU0ZjRkZTFiNDhhMzc5MmQ3Mzc3ZmYyJz5Fc3JpPC9h PiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNn aXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1NoYWRlZF9SZWxpZWYvTWFw U2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0n aHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD05YzUzNzBkMGI1NGY0ZGUx YjQ4YTM3OTJkNzM3N2ZmMic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAK KyAgICAgICAgIHsKK0BAIC05Niw4ICs5Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9u IjogIlRoaXMgbWFwIGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQgYXMgYSBiYXNlbWFwIGJ5IG1hcmlu ZSBHSVMgcHJvZmVzc2lvbmFscyBhbmQgYXMgYSByZWZlcmVuY2UgbWFwIGJ5IGFueW9uZSBpbnRl cmVzdGVkIGluIG9jZWFuIGRhdGEiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAg ICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9z ZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9PY2Vhbi9Xb3JsZF9P Y2Vhbl9CYXNlL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNv cHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0xZTEy NmU3NTIwZjk0NjZjOWNhMjhiOGYyOGI1ZTUwMCc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAg ICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9hcmNnaXMv cmVzdC9zZXJ2aWNlcy9PY2Vhbi9Xb3JsZF9PY2Vhbl9CYXNlL01hcFNlcnZlciIsCisrICAgICAg ICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dp cy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MWUxMjZlNzUyMGY5NDY2YzljYTI4YjhmMjhiNWU1MDAn PkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAt MTA2LDggKzEwNiw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZW1hdGljIGNv bnRlbnQgcHJvdmlkaW5nIGEgbmV1dHJhbCBiYWNrZ3JvdW5kIHdpdGggbWluaW1hbCBjb2xvcnMi LAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiB0 cnVlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5j b20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dvcmxkX0RhcmtfR3JheV9CYXNlL01hcFNl cnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0 dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1hMjg0YTliOTliMzQ0NmEzOTEw ZDQxNDRhNTA5OTBmNic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwi OiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2Vz L0NhbnZhcy9Xb3JsZF9EYXJrX0dyYXlfQmFzZS9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJj b3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hv bWUvaXRlbS5odG1sP2lkPWEyODRhOWI5OWIzNDQ2YTM5MTBkNDE0NGE1MDk5MGY2Jz5Fc3JpPC9h PiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTExNiw4ICsx MTYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZUxvcm1l4oCZcyB0b3BvZ3Jh cGhpYyBiYXNlbWFwIGlzIGEgc2VhbWxlc3MgZ2xvYmFsIGRhdGEgc2V0IHRoYXQgcG9ydHJheXMg dHJhbnNwb3J0YXRpb24sIGh5ZHJvZ3JhcGh5LCBqdXJpc2RpY3Rpb24gYm91bmRhcmllcywgYW5k IG1ham9yIGdlb2dyYXBoaWMgZmVhdHVyZXMiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxz ZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0 dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9TcGVjaWFs dHkvRGVMb3JtZV9Xb3JsZF9CYXNlX01hcC9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5 cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9p dGVtLmh0bWw/aWQ9YjE2NWMzZGY0NTNlNGJlNmI1YWM0ZmRiMjQxZWZmYmUnPkVzcmk8L2E+IGNv bnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29u bGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvU3BlY2lhbHR5L0RlTG9ybWVfV29ybGRfQmFz ZV9NYXAvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsg PGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1iMTY1YzNk ZjQ1M2U0YmU2YjVhYzRmZGIyNDFlZmZiZSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAg ICAgfQorICAgICBdCisgfQorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vv c2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3Ny Yy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxhY2VtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitp bmRleCAzODU4ZGRmNS4uYWY2NmYyOGUgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVn aW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxhY2VtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCisrKysgYi9x dGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxhY2VtYW5hZ2VyZW5naW5l X2VzcmkuY3BwCitAQCAtNjMsOCArNjMsMTAgQEAgc3RhdGljIGNvbnN0IFFTdHJpbmcga0NvdW50 cmllc0tleShRU3RyaW5nTGl0ZXJhbCgiZGV0YWlsZWRDb3VudHJpZXMiKSk7Cisgc3RhdGljIGNv bnN0IFFTdHJpbmcga0xvY2FsaXplZE5hbWVzS2V5KFFTdHJpbmdMaXRlcmFsKCJsb2NhbGl6ZWRO YW1lcyIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrTWF4TG9jYXRpb25zS2V5KFFTdHJpbmdM aXRlcmFsKCJtYXhMb2NhdGlvbnMiKSk7CisgCistc3RhdGljIGNvbnN0IFFVcmwga1VybEdlb2Nv ZGVTZXJ2ZXIoImh0dHA6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMv V29ybGQvR2VvY29kZVNlcnZlcj9mPXBqc29uIik7Cistc3RhdGljIGNvbnN0IFFVcmwga1VybEZp bmRBZGRyZXNzQ2FuZGlkYXRlcygiaHR0cDovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVz dC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyL2ZpbmRBZGRyZXNzQ2FuZGlkYXRlcyIpOwor K3N0YXRpYyBjb25zdCBRVXJsIGtVcmxHZW9jb2RlU2VydmVyKAorKyAgICAgICAgImh0dHBzOi8v Z2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2 ZXI/Zj1wanNvbiIpOworK3N0YXRpYyBjb25zdCBRVXJsIGtVcmxGaW5kQWRkcmVzc0NhbmRpZGF0 ZXMoImh0dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxk LyIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZW9jb2Rl U2VydmVyL2ZpbmRBZGRyZXNzQ2FuZGlkYXRlcyIpOworIAorIFBsYWNlTWFuYWdlckVuZ2luZUVz cmk6OlBsYWNlTWFuYWdlckVuZ2luZUVzcmkoY29uc3QgUVZhcmlhbnRNYXAgJnBhcmFtZXRlcnMs IFFHZW9TZXJ2aWNlUHJvdmlkZXI6OkVycm9yICplcnJvciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgKmVycm9yU3RyaW5nKSA6CitTdWJt b2R1bGUgcXRtdWx0aW1lZGlhIGYwMzQ0MDc5Li4wZDdjYzMzYToKK2RpZmYgLS1naXQgYS9xdG11 bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9xYXVkaW9pbnB1dF9wdWxzZS5jcHAgYi9x dG11bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9xYXVkaW9pbnB1dF9wdWxzZS5jcHAK K2luZGV4IDJiNTMyNTEzMi4uYjY4YjRhZjFiIDEwMDY0NAorLS0tIGEvcXRtdWx0aW1lZGlhL3Ny Yy9wbHVnaW5zL3B1bHNlYXVkaW8vcWF1ZGlvaW5wdXRfcHVsc2UuY3BwCisrKysgYi9xdG11bHRp bWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9xYXVkaW9pbnB1dF9wdWxzZS5jcHAKK0BAIC00 MDIsNiArNDAyLDggQEAgaW50IFFQdWxzZUF1ZGlvSW5wdXQ6OmJ5dGVzUmVhZHkoKSBjb25zdAor IAorIHFpbnQ2NCBRUHVsc2VBdWRpb0lucHV0OjpyZWFkKGNoYXIgKmRhdGEsIHFpbnQ2NCBsZW4p CisgeworKyAgICBRX0FTU0VSVChkYXRhICE9IG51bGxwdHIgfHwgbGVuID09IDApOworKworICAg ICBtX2J5dGVzQXZhaWxhYmxlID0gY2hlY2tCeXRlc1JlYWR5KCk7CisgCisgICAgIHNldEVycm9y KFFBdWRpbzo6Tm9FcnJvcik7CitAQCAtNDExLDcgKzQxMyw4IEBAIHFpbnQ2NCBRUHVsc2VBdWRp b0lucHV0OjpyZWFkKGNoYXIgKmRhdGEsIHFpbnQ2NCBsZW4pCisgCisgICAgIGlmICghbV9wdWxs TW9kZSAmJiAhbV90ZW1wQnVmZmVyLmlzRW1wdHkoKSkgeworICAgICAgICAgcmVhZEJ5dGVzID0g cU1pbihzdGF0aWNfY2FzdDxpbnQ+KGxlbiksIG1fdGVtcEJ1ZmZlci5zaXplKCkpOworLSAgICAg ICAgbWVtY3B5KGRhdGEsIG1fdGVtcEJ1ZmZlci5jb25zdERhdGEoKSwgcmVhZEJ5dGVzKTsKKysg ICAgICAgIGlmIChyZWFkQnl0ZXMpCisrICAgICAgICAgICAgbWVtY3B5KGRhdGEsIG1fdGVtcEJ1 ZmZlci5jb25zdERhdGEoKSwgcmVhZEJ5dGVzKTsKKyAgICAgICAgIG1fdG90YWxUaW1lVmFsdWUg Kz0gcmVhZEJ5dGVzOworIAorICAgICAgICAgaWYgKHJlYWRCeXRlcyA8IG1fdGVtcEJ1ZmZlci5z aXplKCkpIHsKK0BAIC01MDIsOSArNTA1LDEwIEBAIHFpbnQ2NCBRUHVsc2VBdWRpb0lucHV0Ojpy ZWFkKGNoYXIgKmRhdGEsIHFpbnQ2NCBsZW4pCisgCisgdm9pZCBRUHVsc2VBdWRpb0lucHV0Ojph cHBseVZvbHVtZShjb25zdCB2b2lkICpzcmMsIHZvaWQgKmRlc3QsIGludCBsZW4pCisgeworKyAg ICBRX0FTU0VSVCgoc3JjICYmIGRlc3QpIHx8IGxlbiA9PSAwKTsKKyAgICAgaWYgKG1fdm9sdW1l IDwgMS5mKQorICAgICAgICAgUUF1ZGlvSGVscGVySW50ZXJuYWw6OnFNdWx0aXBseVNhbXBsZXMo bV92b2x1bWUsIG1fZm9ybWF0LCBzcmMsIGRlc3QsIGxlbik7CistICAgIGVsc2UKKysgICAgZWxz ZSBpZiAobGVuKQorICAgICAgICAgbWVtY3B5KGRlc3QsIHNyYywgbGVuKTsKKyB9CisgCitTdWJt b2R1bGUgcXRwaW0gMDJlZmVmNWUuLi5mOWE4ZjBmYyAoY29tbWl0cyBub3QgcHJlc2VudCkKK1N1 Ym1vZHVsZSBxdHF1aWNrM2QgYjg1Y2Y2MjIuLjQ3ZGVmYzhiOgorZGlmZiAtLWdpdCBhL3F0cXVp Y2szZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9hc3NpbXAvYXNzaW1wLnBybyBiL3F0cXVp Y2szZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9hc3NpbXAvYXNzaW1wLnBybworaW5kZXgg Y2E1YzQ5OWUuLjE3NGEwNzViIDEwMDY0NAorLS0tIGEvcXRxdWljazNkL3NyYy9wbHVnaW5zL2Fz c2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAucHJvCisrKysgYi9xdHF1aWNrM2Qvc3JjL3BsdWdp bnMvYXNzZXRpbXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8KK0BAIC0xMCw3ICsxMCw3IEBAIFFU X0ZPUl9DT05GSUcgKz0gYXNzZXRpbXBvcnRlcnMtcHJpdmF0ZQorIGluY2x1ZGUoJCRPVVRfUFdE Ly4uL3F0YXNzZXRpbXBvcnRlcnMtY29uZmlnLnByaSkKKyAKKyBxdENvbmZpZyhzeXN0ZW0tYXNz aW1wKTohaWYoY3Jvc3NfY29tcGlsZTpob3N0X2J1aWxkKSB7CistICAgIFFNQUtFX1VTRV9QUklW QVRFICs9IGFzc2ltcAorKyAgICBRTUFLRV9VU0VfUFJJVkFURSArPSBxdWljazNkLWFzc2ltcAor IH0gZWxzZSB7CisgICAgIGluY2x1ZGUoLi4vLi4vLi4vM3JkcGFydHkvYXNzaW1wL2Fzc2ltcC5w cmkpCisgfQorU3VibW9kdWxlIHF0cXVpY2tjb250cm9sczIgM2E2NTdkYzAuLjU2Y2U4MjMzOgor ZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL2ltcG9ydHMvcGxhdGZvcm0vd2lkZ2V0 cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL2ltcG9ydHMv cGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNwcAoraW5kZXggZTVmZTczNGY3 Li5lMzY5MjI3NzUgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9pbXBvcnRzL3Bs YXRmb3JtL3dpZGdldHMvcXdpZGdldHBsYXRmb3JtbWVudS5jcHAKKysrKyBiL3F0cXVpY2tjb250 cm9sczIvc3JjL2ltcG9ydHMvcGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNw cAorQEAgLTM4LDYgKzM4LDcgQEAKKyAjaW5jbHVkZSAicXdpZGdldHBsYXRmb3JtbWVudWl0ZW1f cC5oIgorIAorICNpbmNsdWRlIDxRdEd1aS9xd2luZG93Lmg+CisrI2luY2x1ZGUgPFF0R3VpL3By aXZhdGUvcWhpZ2hkcGlzY2FsaW5nX3AuaD4KKyAjaW5jbHVkZSA8UXRXaWRnZXRzL3FtZW51Lmg+ CisgI2luY2x1ZGUgPFF0V2lkZ2V0cy9xYWN0aW9uLmg+CisgCitAQCAtMTQ1LDcgKzE0Niw3IEBA IHZvaWQgUVdpZGdldFBsYXRmb3JtTWVudTo6c2hvd1BvcHVwKGNvbnN0IFFXaW5kb3cgKndpbmRv dywgY29uc3QgUVJlY3QgJnRhcmdldFJlCisgCisgICAgIFFQb2ludCB0YXJnZXRQb3MgPSB0YXJn ZXRSZWN0LmJvdHRvbUxlZnQoKTsKKyAgICAgaWYgKHdpbmRvdykKKy0gICAgICAgIHRhcmdldFBv cyA9IHdpbmRvdy0+bWFwVG9HbG9iYWwodGFyZ2V0UG9zKTsKKysgICAgICAgIHRhcmdldFBvcyA9 IHdpbmRvdy0+bWFwVG9HbG9iYWwoUUhpZ2hEcGk6OmZyb21OYXRpdmVMb2NhbFBvc2l0aW9uKHRh cmdldFBvcywgd2luZG93KSk7CisgCisgICAgIGNvbnN0IFFXaWRnZXRQbGF0Zm9ybU1lbnVJdGVt ICp3aWRnZXRJdGVtID0gcW9iamVjdF9jYXN0PGNvbnN0IFFXaWRnZXRQbGF0Zm9ybU1lbnVJdGVt ICo+KGl0ZW0pOworICAgICBtX21lbnUtPnBvcHVwKHRhcmdldFBvcywgd2lkZ2V0SXRlbSA/IHdp ZGdldEl0ZW0tPmFjdGlvbigpIDogbnVsbHB0cik7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uLmNwcCBiL3F0cXVp Y2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbi5jcHAK K2luZGV4IDk1MGU0ZTA5OS4uYjgxZmJlYTBiIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xz Mi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uLmNwcAorKysrIGIvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uLmNw cAorQEAgLTM4Nyw2ICszODcsMTcgQEAgdm9pZCBRUXVpY2tBYnN0cmFjdEJ1dHRvblByaXZhdGU6 Oml0ZW1JbXBsaWNpdEhlaWdodENoYW5nZWQoUVF1aWNrSXRlbSAqaXRlbSkKKyAgICAgICAgIGVt aXQgcS0+aW1wbGljaXRJbmRpY2F0b3JIZWlnaHRDaGFuZ2VkKCk7CisgfQorIAorK3ZvaWQgUVF1 aWNrQWJzdHJhY3RCdXR0b25Qcml2YXRlOjppdGVtRGVzdHJveWVkKFFRdWlja0l0ZW0gKml0ZW0p CisreworKyAgICBRX1EoUVF1aWNrQWJzdHJhY3RCdXR0b24pOworKyAgICBRUXVpY2tDb250cm9s UHJpdmF0ZTo6aXRlbURlc3Ryb3llZChpdGVtKTsKKysgICAgaWYgKGl0ZW0gPT0gaW5kaWNhdG9y KSB7CisrICAgICAgICBpbmRpY2F0b3IgPSBudWxscHRyOworKyAgICAgICAgZW1pdCBxLT5pbXBs aWNpdEluZGljYXRvcldpZHRoQ2hhbmdlZCgpOworKyAgICAgICAgZW1pdCBxLT5pbXBsaWNpdElu ZGljYXRvckhlaWdodENoYW5nZWQoKTsKKysgICAgfQorK30KKysKKyBRUXVpY2tBYnN0cmFjdEJ1 dHRvbiAqUVF1aWNrQWJzdHJhY3RCdXR0b25Qcml2YXRlOjpmaW5kQ2hlY2tlZEJ1dHRvbigpIGNv bnN0CisgeworICAgICBRX1EoY29uc3QgUVF1aWNrQWJzdHJhY3RCdXR0b24pOworQEAgLTExNzYs NiArMTE4NywxMiBAQCBRQWNjZXNzaWJsZTo6Um9sZSBRUXVpY2tBYnN0cmFjdEJ1dHRvbjo6YWNj ZXNzaWJsZVJvbGUoKSBjb25zdAorICAgICB9CisgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6QnV0 dG9uOworIH0KKysKKyt2b2lkIFFRdWlja0Fic3RyYWN0QnV0dG9uOjphY2Nlc3NpYmxlUHJlc3NB Y3Rpb24oKQorK3sKKysgICAgUV9EKFFRdWlja0Fic3RyYWN0QnV0dG9uKTsKKysgICAgZC0+dHJp Z2dlcigpOworK30KKyAjZW5kaWYKKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9u X3AuaCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFj dGJ1dHRvbl9wLmgKK2luZGV4IDBmYTQ4OTgwZS4uYWI2NjIyMGQwIDEwMDY0NAorLS0tIGEvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3Au aAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3Ry YWN0YnV0dG9uX3AuaAorQEAgLTIwOSw2ICsyMDksNyBAQCBwcm90ZWN0ZWQ6CisgI2lmIFFUX0NP TkZJRyhhY2Nlc3NpYmlsaXR5KQorICAgICB2b2lkIGFjY2Vzc2liaWxpdHlBY3RpdmVDaGFuZ2Vk KGJvb2wgYWN0aXZlKSBvdmVycmlkZTsKKyAgICAgUUFjY2Vzc2libGU6OlJvbGUgYWNjZXNzaWJs ZVJvbGUoKSBjb25zdCBvdmVycmlkZTsKKysgICAgUV9JTlZPS0FCTEUgdm9pZCBhY2Nlc3NpYmxl UHJlc3NBY3Rpb24oKTsKKyAjZW5kaWYKKyAKKyBwcml2YXRlOgorZGlmZiAtLWdpdCBhL3F0cXVp Y2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wX3Au aCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1 dHRvbl9wX3AuaAoraW5kZXggOTI5MWMxYTg3Li5iNzI5NzIwZjIgMTAwNjQ0CistLS0gYS9xdHF1 aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcF9w LmgKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0 cmFjdGJ1dHRvbl9wX3AuaAorQEAgLTEwOSw2ICsxMDksNyBAQCBwdWJsaWM6CisgCisgICAgIHZv aWQgaXRlbUltcGxpY2l0V2lkdGhDaGFuZ2VkKFFRdWlja0l0ZW0gKml0ZW0pIG92ZXJyaWRlOwor ICAgICB2b2lkIGl0ZW1JbXBsaWNpdEhlaWdodENoYW5nZWQoUVF1aWNrSXRlbSAqaXRlbSkgb3Zl cnJpZGU7CisrICAgIHZvaWQgaXRlbURlc3Ryb3llZChRUXVpY2tJdGVtICppdGVtKSBvdmVycmlk ZTsKKyAKKyAgICAgLy8gY29waWVkIGZyb20gcWFic3RyYWN0YnV0dG9uLmNwcAorICAgICBzdGF0 aWMgY29uc3QgaW50IEFVVE9fUkVQRUFUX0RFTEFZID0gMzAwOworZGlmZiAtLWdpdCBhL3F0cXVp Y2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thY3Rpb24uY3BwIGIvcXRxdWlj a2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAKK2luZGV4IDIw NDFlNzc0MS4uODYxMGNkZmFlIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVp Y2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3Jj L3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thY3Rpb24uY3BwCitAQCAtMTQ1LDcgKzE0NSw3IEBAIGlu dCBRUXVpY2tBY3Rpb25Qcml2YXRlOjpTaG9ydGN1dEVudHJ5OjpzaG9ydGN1dElkKCkgY29uc3QK KyAKKyB2b2lkIFFRdWlja0FjdGlvblByaXZhdGU6OlNob3J0Y3V0RW50cnk6OmdyYWIoY29uc3Qg UUtleVNlcXVlbmNlICZzaG9ydGN1dCwgYm9vbCBlbmFibGVkKQorIHsKKy0gICAgaWYgKHNob3J0 Y3V0LmlzRW1wdHkoKSkKKysgICAgaWYgKHNob3J0Y3V0LmlzRW1wdHkoKSB8fCBtX3Nob3J0Y3V0 SWQpCisgICAgICAgICByZXR1cm47CisgCisgICAgIFF0OjpTaG9ydGN1dENvbnRleHQgY29udGV4 dCA9IFF0OjpXaW5kb3dTaG9ydGN1dDsgLy8gVE9ETworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250 cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250YWluZXIuY3BwIGIvcXRxdWlja2Nv bnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAKK2luZGV4IGYz OGMyYjA5Yy4uNmVlZDJhMDI0IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVp Y2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIv c3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250YWluZXIuY3BwCitAQCAtMjI1LDYgKzIyNSw3 IEBAIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6Y2xlYW51cCgpCisgICAgIFFPYmplY3Q6 OmRpc2Nvbm5lY3QoY29udGVudE1vZGVsLCAmUVFtbE9iamVjdE1vZGVsOjpjb3VudENoYW5nZWQs IHEsICZRUXVpY2tDb250YWluZXI6OmNvdW50Q2hhbmdlZCk7CisgICAgIFFPYmplY3Q6OmRpc2Nv bm5lY3QoY29udGVudE1vZGVsLCAmUVFtbE9iamVjdE1vZGVsOjpjaGlsZHJlbkNoYW5nZWQsIHEs ICZRUXVpY2tDb250YWluZXI6OmNvbnRlbnRDaGlsZHJlbkNoYW5nZWQpOworICAgICBkZWxldGUg Y29udGVudE1vZGVsOworKyAgICBjb250ZW50TW9kZWwgPSBudWxscHRyOworIH0KKyAKKyBRUXVp Y2tJdGVtICpRUXVpY2tDb250YWluZXJQcml2YXRlOjppdGVtQXQoaW50IGluZGV4KSBjb25zdAor QEAgLTQzNiw3ICs0MzcsNyBAQCB2b2lkIFFRdWlja0NvbnRhaW5lclByaXZhdGU6OmNvbnRlbnRD aGlsZHJlbl9jbGVhcihRUW1sTGlzdFByb3BlcnR5PFFRdWlja0l0ZW0+Cisgdm9pZCBRUXVpY2tD b250YWluZXJQcml2YXRlOjp1cGRhdGVDb250ZW50V2lkdGgoKQorIHsKKyAgICAgUV9RKFFRdWlj a0NvbnRhaW5lcik7CistICAgIGlmIChoYXNDb250ZW50V2lkdGggfHwgcUZ1enp5Q29tcGFyZShj b250ZW50V2lkdGgsIGltcGxpY2l0Q29udGVudFdpZHRoKSkKKysgICAgaWYgKGhhc0NvbnRlbnRX aWR0aCB8fCBxRnV6enlDb21wYXJlKGNvbnRlbnRXaWR0aCwgaW1wbGljaXRDb250ZW50V2lkdGgp IHx8ICFjb250ZW50TW9kZWwpCisgICAgICAgICByZXR1cm47CisgCisgICAgIGNvbnRlbnRXaWR0 aCA9IGltcGxpY2l0Q29udGVudFdpZHRoOworQEAgLTQ0Niw3ICs0NDcsNyBAQCB2b2lkIFFRdWlj a0NvbnRhaW5lclByaXZhdGU6OnVwZGF0ZUNvbnRlbnRXaWR0aCgpCisgdm9pZCBRUXVpY2tDb250 YWluZXJQcml2YXRlOjp1cGRhdGVDb250ZW50SGVpZ2h0KCkKKyB7CisgICAgIFFfUShRUXVpY2tD b250YWluZXIpOworLSAgICBpZiAoaGFzQ29udGVudEhlaWdodCB8fCBxRnV6enlDb21wYXJlKGNv bnRlbnRIZWlnaHQsIGltcGxpY2l0Q29udGVudEhlaWdodCkpCisrICAgIGlmIChoYXNDb250ZW50 SGVpZ2h0IHx8IHFGdXp6eUNvbXBhcmUoY29udGVudEhlaWdodCwgaW1wbGljaXRDb250ZW50SGVp Z2h0KSB8fCAhY29udGVudE1vZGVsKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBjb250ZW50 SGVpZ2h0ID0gaW1wbGljaXRDb250ZW50SGVpZ2h0OworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250 cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sLmNwcCBiL3F0cXVpY2tjb250 cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sLmNwcAoraW5kZXggYmJiZDBl NjIyLi4xZjRiNDczNDMgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3Rl bXBsYXRlczIvcXF1aWNrY29udHJvbC5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1 aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sLmNwcAorQEAgLTg0NSw2ICs4NDUsMTMgQEAgdm9p ZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6ZXhlY3V0ZUJhY2tncm91bmQoYm9vbCBjb21wbGV0ZSkK KyAgICAgICAgIHF1aWNrQ29tcGxldGVEZWZlcnJlZChxLCBiYWNrZ3JvdW5kTmFtZSgpLCBiYWNr Z3JvdW5kKTsKKyB9CisgCisrLyoKKysgICAgXGludGVybmFsCisrCisrICAgIEhpZGVzIGFuIGl0 ZW0gdGhhdCB3YXMgcmVwbGFjZWQgYnkgYSBuZXdlciBvbmUsIHJhdGhlciB0aGFuCisrICAgIGRl bGV0aW5nIGl0LCBhcyB0aGUgaXRlbSBpcyB0eXBpY2FsbHkgY3JlYXRlZCBpbiBRTUwgYW5kIGhl bmNlCisrICAgIHdlIGRvbid0IG93biBpdC4KKysqLworIHZvaWQgUVF1aWNrQ29udHJvbFByaXZh dGU6OmhpZGVPbGRJdGVtKFFRdWlja0l0ZW0gKml0ZW0pCisgeworICAgICBpZiAoIWl0ZW0pCitA QCAtODYzLDYgKzg3MCwyOSBAQCB2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjpoaWRlT2xkSXRl bShRUXVpY2tJdGVtICppdGVtKQorICNlbmRpZgorIH0KKyAKKysvKgorKyAgICBcaW50ZXJuYWwK KysKKysgICAgTmFtZWQgInVuaGlkZSIgYmVjYXVzZSBpdCdzIHVzZWQgZm9yIGNhc2VzIHdoZXJl IGFuIGl0ZW0KKysgICAgdGhhdCB3YXMgcHJldmlvdXNseSBoaWRkZW4gYnkgXGwgaGlkZU9sZEl0 ZW0oKSB3YW50cyB0byBiZQorKyAgICBzaG93biBieSBhIGNvbnRyb2wgYWdhaW4sIHN1Y2ggYXMg YSBTY3JvbGxCYXIgaW4gU2Nyb2xsVmlldy4KKysqLworK3ZvaWQgUVF1aWNrQ29udHJvbFByaXZh dGU6OnVuaGlkZU9sZEl0ZW0oUVF1aWNrQ29udHJvbCAqY29udHJvbCwgUVF1aWNrSXRlbSAqaXRl bSkKKyt7CisrICAgIFFfQVNTRVJUKGl0ZW0pOworKyAgICBxQ0RlYnVnKGxjSXRlbU1hbmFnZW1l bnQpIDw8ICJ1bmhpZGluZyBvbGQgaXRlbSIgPDwgaXRlbTsKKysKKysgICAgaXRlbS0+c2V0Vmlz aWJsZSh0cnVlKTsKKysgICAgaXRlbS0+c2V0UGFyZW50SXRlbShjb250cm9sKTsKKysKKysjaWYg UVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrICAgIC8vIEFkZCB0aGUgaXRlbSBiYWNrIGluIHRv IHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisrICAgIFFRdWlja0FjY2Vzc2libGVBdHRhY2hlZCAq YWNjZXNzaWJsZSA9IGFjY2Vzc2libGVBdHRhY2hlZChpdGVtKTsKKysgICAgaWYgKGFjY2Vzc2li bGUpCisrICAgICAgICBhY2Nlc3NpYmxlLT5zZXRJZ25vcmVkKGZhbHNlKTsKKysjZW5kaWYKKyt9 CisrCisgdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dXBkYXRlQmFzZWxpbmVPZmZzZXQoKQor IHsKKyAgICAgUV9RKFFRdWlja0NvbnRyb2wpOworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9s czIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sX3BfcC5oIGIvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmgKK2luZGV4IDhlOTc5 MDc5ZS4uYTZlNjI0YzkxIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0 ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmgKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3Jj L3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sX3BfcC5oCitAQCAtMTczLDYgKzE3Myw3IEBA IHB1YmxpYzoKKyAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVCYWNrZ3JvdW5kKGJvb2wgY29tcGxl dGUgPSBmYWxzZSk7CisgCisgICAgIHN0YXRpYyB2b2lkIGhpZGVPbGRJdGVtKFFRdWlja0l0ZW0g Kml0ZW0pOworKyAgICBzdGF0aWMgdm9pZCB1bmhpZGVPbGRJdGVtKFFRdWlja0NvbnRyb2wgKmNv bnRyb2wsIFFRdWlja0l0ZW0gKml0ZW0pOworIAorICAgICB2b2lkIHVwZGF0ZUJhc2VsaW5lT2Zm c2V0KCk7CisgCitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0 ZXMyL3FxdWlja2RpYWxvZ2J1dHRvbmJveC5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlj a3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcAoraW5kZXggZTZkYjE0ZWI1Li42 MTk3ZDE1NDcgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRl czIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMv cXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxvZ2J1dHRvbmJveC5jcHAKK0BAIC0yMzcsNyArMjM3 LDcgQEAgc3RhdGljIFFSZWN0RiBhbGlnbmVkUmVjdChRdDo6TGF5b3V0RGlyZWN0aW9uIGRpcmVj dGlvbiwgUXQ6OkFsaWdubWVudCBhbGlnbm1lbnQKKyB2b2lkIFFRdWlja0RpYWxvZ0J1dHRvbkJv eFByaXZhdGU6OnJlc2l6ZUNvbnRlbnQoKQorIHsKKyAgICAgUV9RKFFRdWlja0RpYWxvZ0J1dHRv bkJveCk7CistICAgIGlmICghY29udGVudEl0ZW0pCisrICAgIGlmICghY29udGVudEl0ZW0gfHwg IWNvbnRlbnRNb2RlbCkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgUVJlY3RGIGdlb21ldHJ5 ID0gcS0+Ym91bmRpbmdSZWN0KCkuYWRqdXN0ZWQocS0+bGVmdFBhZGRpbmcoKSwgcS0+dG9wUGFk ZGluZygpLCAtcS0+cmlnaHRQYWRkaW5nKCksIC1xLT5ib3R0b21QYWRkaW5nKCkpOworQEAgLTMy Miw2ICszMjIsOSBAQCB2b2lkIFFRdWlja0RpYWxvZ0J1dHRvbkJveFByaXZhdGU6OnVwZGF0ZUxh eW91dCgpCisgcXJlYWwgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6Z2V0Q29udGVudFdp ZHRoKCkgY29uc3QKKyB7CisgICAgIFFfUShjb25zdCBRUXVpY2tEaWFsb2dCdXR0b25Cb3gpOwor KyAgICBpZiAoIWNvbnRlbnRNb2RlbCkKKysgICAgICAgIHJldHVybiAwOworKworICAgICBjb25z dCBpbnQgY291bnQgPSBjb250ZW50TW9kZWwtPmNvdW50KCk7CisgICAgIGNvbnN0IHFyZWFsIHRv dGFsU3BhY2luZyA9IHFNYXgoMCwgY291bnQgLSAxKSAqIHNwYWNpbmc7CisgICAgIHFyZWFsIHRv dGFsV2lkdGggPSB0b3RhbFNwYWNpbmc7CitAQCAtMzQxLDYgKzM0NCw5IEBAIHFyZWFsIFFRdWlj a0RpYWxvZ0J1dHRvbkJveFByaXZhdGU6OmdldENvbnRlbnRXaWR0aCgpIGNvbnN0CisgcXJlYWwg UVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6Z2V0Q29udGVudEhlaWdodCgpIGNvbnN0Cisg eworICAgICBRX1EoY29uc3QgUVF1aWNrRGlhbG9nQnV0dG9uQm94KTsKKysgICAgaWYgKCFjb250 ZW50TW9kZWwpCisrICAgICAgICByZXR1cm4gMDsKKysKKyAgICAgY29uc3QgaW50IGNvdW50ID0g Y29udGVudE1vZGVsLT5jb3VudCgpOworICAgICBxcmVhbCBtYXhIZWlnaHQgPSAwOworICAgICBm b3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrb3ZlcmxheS5jcHAgYi9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrb3ZlcmxheS5jcHAKK2luZGV4IDkxYmQ1 OTE4NC4uMGNlNTE4Zjg0IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0 ZW1wbGF0ZXMyL3FxdWlja292ZXJsYXkuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9x dWlja3RlbXBsYXRlczIvcXF1aWNrb3ZlcmxheS5jcHAKK0BAIC0zOTksOCArMzk5LDExIEBAIHZv aWQgUVF1aWNrT3ZlcmxheTo6aXRlbUNoYW5nZShJdGVtQ2hhbmdlIGNoYW5nZSwgY29uc3QgSXRl bUNoYW5nZURhdGEgJmRhdGEpCisgICAgIFFfRChRUXVpY2tPdmVybGF5KTsKKyAgICAgUVF1aWNr SXRlbTo6aXRlbUNoYW5nZShjaGFuZ2UsIGRhdGEpOworIAorLSAgICBpZiAoY2hhbmdlID09IEl0 ZW1DaGlsZEFkZGVkQ2hhbmdlIHx8IGNoYW5nZSA9PSBJdGVtQ2hpbGRSZW1vdmVkQ2hhbmdlKQor KyAgICBpZiAoY2hhbmdlID09IEl0ZW1DaGlsZEFkZGVkQ2hhbmdlIHx8IGNoYW5nZSA9PSBJdGVt Q2hpbGRSZW1vdmVkQ2hhbmdlKSB7CisgICAgICAgICBzZXRWaXNpYmxlKCFkLT5hbGxEcmF3ZXJz LmlzRW1wdHkoKSB8fCAhY2hpbGRJdGVtcygpLmlzRW1wdHkoKSk7CisrICAgICAgICBpZiAoZGF0 YS5pdGVtLT5wYXJlbnQoKSA9PSBkLT5tb3VzZUdyYWJiZXJQb3B1cCkKKysgICAgICAgICAgICBk LT5zZXRNb3VzZUdyYWJiZXJQb3B1cChudWxscHRyKTsKKysgICAgfQorIH0KKyAKKyB2b2lkIFFR dWlja092ZXJsYXk6Omdlb21ldHJ5Q2hhbmdlZChjb25zdCBRUmVjdEYgJm5ld0dlb21ldHJ5LCBj b25zdCBRUmVjdEYgJm9sZEdlb21ldHJ5KQorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIv c3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tzY3JvbGxiYXIuY3BwIGIvcXRxdWlja2NvbnRyb2xz Mi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAKK2luZGV4IDRlMmY1MDlk Yi4uMWM0YjMwOGNkIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1w bGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1 aWNrdGVtcGxhdGVzMi9xcXVpY2tzY3JvbGxiYXIuY3BwCitAQCAtNzk3LDYgKzc5NywxNCBAQCB2 b2lkIFFRdWlja1Njcm9sbEJhckF0dGFjaGVkUHJpdmF0ZTo6aW5pdEhvcml6b250YWwoKQorICAg ICBpZiAocGFyZW50ICYmIHBhcmVudCA9PSBmbGlja2FibGUtPnBhcmVudEl0ZW0oKSkKKyAgICAg ICAgIGhvcml6b250YWwtPnN0YWNrQWZ0ZXIoZmxpY2thYmxlKTsKKyAKKysgICAgLy8gSWYgYSBz Y3JvbGwgYmFyIHdhcyBwcmV2aW91c2x5IGhpZGRlbiAoZHVlIHRvIGUuZy4gc2V0dGluZyBhIG5l dyBjb250ZW50SXRlbQorKyAgICAvLyBvbiBhIFNjcm9sbFZpZXcpLCB3ZSBuZWVkIHRvIG1ha2Ug c3VyZSB0aGF0IHdlIHVuLWhpZGUgaXQuCisrICAgIC8vIFdlIGRvbid0IGJvdGhlciBjaGVja2lu ZyBpZiB0aGUgaXRlbSBpcyBhY3R1YWxseSB0aGUgb2xkIG9uZSwgYmVjYXVzZQorKyAgICAvLyBp ZiBpdCdzIG5vdCwgYWxsIG9mIHRoZSB0aGluZ3MgdGhlIGZ1bmN0aW9uIGRvZXMgKHNldHRpbmcg cGFyZW50LCB2aXNpYmlsaXR5LCBldGMuKQorKyAgICAvLyBzaG91bGQgYmUgbm8tb3BzIGFueXdh eS4KKysgICAgaWYgKGF1dG8gY29udHJvbCA9IHFvYmplY3RfY2FzdDxRUXVpY2tDb250cm9sKj4o cV9wdHItPnBhcmVudCgpKSkKKysgICAgICAgIFFRdWlja0NvbnRyb2xQcml2YXRlOjp1bmhpZGVP bGRJdGVtKGNvbnRyb2wsIGhvcml6b250YWwpOworKworICAgICBsYXlvdXRIb3Jpem9udGFsKCk7 CisgICAgIGhvcml6b250YWwtPnNldFNpemUoYXJlYS0+cHJvcGVydHkoIndpZHRoUmF0aW8iKS50 b1JlYWwoKSk7CisgICAgIGhvcml6b250YWwtPnNldFBvc2l0aW9uKGFyZWEtPnByb3BlcnR5KCJ4 UG9zaXRpb24iKS50b1JlYWwoKSk7CitAQCAtODE4LDYgKzgyNiw5IEBAIHZvaWQgUVF1aWNrU2Ny b2xsQmFyQXR0YWNoZWRQcml2YXRlOjppbml0VmVydGljYWwoKQorICAgICBpZiAocGFyZW50ICYm IHBhcmVudCA9PSBmbGlja2FibGUtPnBhcmVudEl0ZW0oKSkKKyAgICAgICAgIHZlcnRpY2FsLT5z dGFja0FmdGVyKGZsaWNrYWJsZSk7CisgCisrICAgIGlmIChhdXRvIGNvbnRyb2wgPSBxb2JqZWN0 X2Nhc3Q8UVF1aWNrQ29udHJvbCo+KHFfcHRyLT5wYXJlbnQoKSkpCisrICAgICAgICBRUXVpY2tD b250cm9sUHJpdmF0ZTo6dW5oaWRlT2xkSXRlbShjb250cm9sLCB2ZXJ0aWNhbCk7CisrCisgICAg IGxheW91dFZlcnRpY2FsKCk7CisgICAgIHZlcnRpY2FsLT5zZXRTaXplKGFyZWEtPnByb3BlcnR5 KCJoZWlnaHRSYXRpbyIpLnRvUmVhbCgpKTsKKyAgICAgdmVydGljYWwtPnNldFBvc2l0aW9uKGFy ZWEtPnByb3BlcnR5KCJ5UG9zaXRpb24iKS50b1JlYWwoKSk7CitkaWZmIC0tZ2l0IGEvcXRxdWlj a2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3Njcm9sbHZpZXcucW1sIGIv cXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3Njcm9sbHZpZXcu cW1sCitpbmRleCAwZThiMDgzNTIuLmNkNDkzMTE4NCAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250 cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zY3JvbGx2aWV3LnFtbAorKysrIGIv cXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3Njcm9sbHZpZXcu cW1sCitAQCAtNTc2LDQgKzU3Niw1MSBAQCBUZXN0Q2FzZSB7CisgICAgICAgICB2ZXJpZnkobmV3 SG9yaXpvbnRhbFNjcm9sbEJhci52aXNpYmxlKQorICAgICAgICAgdmVyaWZ5KCFvbGRIb3Jpem9u dGFsU2Nyb2xsQmFyLnZpc2libGUpCisgICAgIH0KKysKKysgICAgQ29tcG9uZW50IHsKKysgICAg ICAgIGlkOiBiaW5kaW5nVG9Db250ZW50SXRlbUFuZFN0YW5kYWxvbmVGbGlja2FibGUKKysKKysg ICAgICAgIEl0ZW0geworKyAgICAgICAgICAgIHdpZHRoOiAyMDAKKysgICAgICAgICAgICBoZWln aHQ6IDIwMAorKworKyAgICAgICAgICAgIHByb3BlcnR5IGFsaWFzIHNjcm9sbFZpZXc6IHNjcm9s bFZpZXcKKysKKysgICAgICAgICAgICBTY3JvbGxWaWV3IHsKKysgICAgICAgICAgICAgICAgaWQ6 IHNjcm9sbFZpZXcKKysgICAgICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKysgICAg ICAgICAgICAgICAgY29udGVudEl0ZW06IGxpc3RWaWV3CisrCisrICAgICAgICAgICAgICAgIHBy b3BlcnR5IEl0ZW0gc29tZUJpbmRpbmc6IGNvbnRlbnRJdGVtCisrICAgICAgICAgICAgfQorKyAg ICAgICAgICAgIExpc3RWaWV3IHsKKysgICAgICAgICAgICAgICAgaWQ6IGxpc3RWaWV3CisrICAg ICAgICAgICAgICAgIG1vZGVsOiAxMAorKyAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogSXRlbURl bGVnYXRlIHsKKysgICAgICAgICAgICAgICAgICAgIHRleHQ6IG1vZGVsRGF0YQorKyAgICAgICAg ICAgICAgICAgICAgd2lkdGg6IGxpc3RWaWV3LndpZHRoCisrICAgICAgICAgICAgICAgIH0KKysg ICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgLy8gVGVzdHMgdGhhdCBz Y3JvbGwgYmFycyBzaG93IHVwIGZvciBhIFNjcm9sbFZpZXcgd2hlcmUKKysgICAgLy8gLSBpdHMg Y29udGVudEl0ZW0gaXMgZGVjbGFyZWQgYXMgYSBzdGFuZGFsb25lLCBzZXBhcmF0ZSBpdGVtCisr ICAgIC8vIC0gdGhlcmUgaXMgYSBiaW5kaW5nIHRvIGNvbnRlbnRJdGVtICh3aGljaCBjYXVzZXMg YSBkZWZhdWx0IEZsaWNrYWJsZSB0byBiZSBjcmVhdGVkKQorKyAgICBmdW5jdGlvbiB0ZXN0X2Jp bmRpbmdUb0NvbnRlbnRJdGVtQW5kU3RhbmRhbG9uZUZsaWNrYWJsZSgpIHsKKysgICAgICAgIGxl dCByb290ID0gY3JlYXRlVGVtcG9yYXJ5T2JqZWN0KGJpbmRpbmdUb0NvbnRlbnRJdGVtQW5kU3Rh bmRhbG9uZUZsaWNrYWJsZSwgdGVzdENhc2UpCisrICAgICAgICB2ZXJpZnkocm9vdCkKKysKKysg ICAgICAgIGxldCBjb250cm9sID0gcm9vdC5zY3JvbGxWaWV3CisrICAgICAgICBsZXQgdmVydGlj YWxTY3JvbGxCYXIgPSBjb250cm9sLlNjcm9sbEJhci52ZXJ0aWNhbAorKyAgICAgICAgbGV0IGhv cml6b250YWxTY3JvbGxCYXIgPSBjb250cm9sLlNjcm9sbEJhci5ob3Jpem9udGFsCisrICAgICAg ICBjb21wYXJlKHZlcnRpY2FsU2Nyb2xsQmFyLnBhcmVudCwgY29udHJvbCkKKysgICAgICAgIGNv bXBhcmUoaG9yaXpvbnRhbFNjcm9sbEJhci5wYXJlbnQsIGNvbnRyb2wpCisrICAgICAgICB2ZXJp ZnkodmVydGljYWxTY3JvbGxCYXIudmlzaWJsZSkKKysgICAgICAgIHZlcmlmeShob3Jpem9udGFs U2Nyb2xsQmFyLnZpc2libGUpCisrCisrICAgICAgICBtb3VzZURyYWcodmVydGljYWxTY3JvbGxC YXIsIHZlcnRpY2FsU2Nyb2xsQmFyLndpZHRoIC8gMiwgdmVydGljYWxTY3JvbGxCYXIuaGVpZ2h0 IC8gMiwgMCwgNTApCisrICAgICAgICB2ZXJpZnkodmVydGljYWxTY3JvbGxCYXIuYWN0aXZlKQor KyAgICAgICAgdmVyaWZ5KGhvcml6b250YWxTY3JvbGxCYXIuYWN0aXZlKQorKyAgICB9CisgfQor ZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3Rz dF9zd2l0Y2gucW1sIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEv dHN0X3N3aXRjaC5xbWwKK2luZGV4IGIzZmFiNDFjYS4uMTBiNmJhYTAyIDEwMDY0NAorLS0tIGEv cXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3N3aXRjaC5xbWwK KysrKyBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zd2l0 Y2gucW1sCitAQCAtNjA4LDQgKzYwOCwyNyBAQCBUZXN0Q2FzZSB7CisgICAgICAgICBtb3VzZUNs aWNrKGNvbnRyb2wuaW5kaWNhdG9yKQorICAgICAgICAgdmVyaWZ5KGNvbnRyb2wuYWN0aXZlRm9j dXMpCisgICAgIH0KKysKKysgICAgQ29tcG9uZW50IHsKKysgICAgICAgIGlkOiBkZWxldGlvbk9y ZGVyMQorKyAgICAgICAgSXRlbSB7CisrICAgICAgICAgICAgSW1hZ2UgeyBpZDogaW5uZXJJbWFn ZSB9CisrICAgICAgICAgICAgU3dpdGNoIHsgaW5kaWNhdG9yOiBpbm5lckltYWdlIH0KKysgICAg ICAgIH0KKysgICAgfQorKworKyAgICBDb21wb25lbnQgeworKyAgICAgICAgaWQ6IGRlbGV0aW9u T3JkZXIyCisrICAgICAgICBJdGVtIHsKKysgICAgICAgICAgICBTd2l0Y2ggeyBpbmRpY2F0b3I6 IGlubmVySW1hZ2UgfQorKyAgICAgICAgICAgIEltYWdlIHsgaWQ6IGlubmVySW1hZ2UgfQorKyAg ICAgICAgfQorKyAgICB9CisrCisrICAgIGZ1bmN0aW9uIHRlc3RfZGVsZXRpb25PcmRlcigpIHsK KysgICAgICAgIHZhciBjb250cm9sMSA9IGNyZWF0ZVRlbXBvcmFyeU9iamVjdChkZWxldGlvbk9y ZGVyMSwgdGVzdENhc2UpCisrICAgICAgICB2ZXJpZnkoY29udHJvbDEpCisrICAgICAgICB2YXIg Y29udHJvbDIgPSBjcmVhdGVUZW1wb3JhcnlPYmplY3QoZGVsZXRpb25PcmRlcjIsIHRlc3RDYXNl KQorKyAgICAgICAgdmVyaWZ5KGNvbnRyb2wyKQorKyAgICB9CisgfQorZGlmZiAtLWdpdCBhL3F0 cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC9kYXRhL3JlbGVhc2VBZnRlckV4 aXRUcmFuc2l0aW9uLnFtbCBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1 cC9kYXRhL3JlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uLnFtbAorbmV3IGZpbGUgbW9kZSAxMDA2 NDQKK2luZGV4IDAwMDAwMDAwMC4uOWU0NTk4YjlmCistLS0gL2Rldi9udWxsCisrKysgYi9xdHF1 aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvZGF0YS9yZWxlYXNlQWZ0ZXJFeGl0 VHJhbnNpdGlvbi5xbWwKK0BAIC0wLDAgKzEsNzggQEAKKysvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor KyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb250 YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9C RUdJTl9MSUNFTlNFOkJTRCQKKysqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNl bnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBm aWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVt ZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGlu IGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCisrKiogYSB3cml0dGVuIGFn cmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVy bXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0 aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBh dCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoqCisrKiogQlNEIExpY2Vuc2UgVXNh Z2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBCU0QgbGljZW5zZQorKyoqIGFzIGZvbGxvd3M6CisrKioKKysqKiAiUmVkaXN0 cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo b3V0CisrKiogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv bGxvd2luZyBjb25kaXRpb25zIGFyZQorKyoqIG1ldDoKKysqKiAgICogUmVkaXN0cmlidXRpb25z IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysqKiAgICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyLgorKyoqICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1 Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyoqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKysqKiAgICAgdGhlIGRvY3Vt ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyoqICAg ICBkaXN0cmlidXRpb24uCisrKiogICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgVGhlIFF0IENvbXBh bnkgTHRkIG5vciB0aGUgbmFtZXMgb2YgaXRzCisrKiogICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUg dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorKyoqICAgICBmcm9t IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u CisrKioKKysqKgorKyoqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKysqKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKyoqIExJTUlURUQgVE8s IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP UgorKyoqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT SEFMTCBUSEUgQ09QWVJJR0hUCisrKiogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisrKiogU1BFQ0lBTCwgRVhFTVBM QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKyoqIExJ TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP U1MgT0YgVVNFLAorKyoqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKyoqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKysqKiAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI RSBVU0UKKysqKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ QklMSVRZIE9GIFNVQ0ggREFNQUdFLiIKKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgor KyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisrCisraW1wb3J0IFF0UXVpY2sgMi4xNQorK2ltcG9ydCBR dFF1aWNrLkNvbnRyb2xzIDIuMTUKKysKKytBcHBsaWNhdGlvbldpbmRvdyB7CisrICAgIGlkOiB3 aW5kb3cKKysgICAgd2lkdGg6IDQwMAorKyAgICBoZWlnaHQ6IDQwMAorKyAgICB0aXRsZTogInJl bGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uIgorKworKyAgICBwcm9wZXJ0eSBhbGlhcyBwb3B1cDog cG9wdXAKKysgICAgcHJvcGVydHkgYWxpYXMgbW9kYWxQb3B1cDogbW9kYWxQb3B1cAorKworKyAg ICBQb3B1cCB7CisrICAgICAgICBpZDogcG9wdXAKKysgICAgICAgIHk6IHBhcmVudC5oZWlnaHQg LSBoZWlnaHQKKysgICAgICAgIHdpZHRoOiA1MAorKyAgICAgICAgaGVpZ2h0OiA1MAorKyAgICB9 CisrCisrICAgIFBvcHVwIHsKKysgICAgICAgIGlkOiBtb2RhbFBvcHVwCisrICAgICAgICBtb2Rh bDogdHJ1ZQorKyAgICAgICAgeTogcGFyZW50LmhlaWdodCAtIGhlaWdodAorKyAgICAgICAgd2lk dGg6IDUwCisrICAgICAgICBoZWlnaHQ6IDUwCisrICAgICAgICBleGl0OiAgVHJhbnNpdGlvbiB7 IFBhdXNlQW5pbWF0aW9uIHsgZHVyYXRpb246IDEwMCB9IH0KKysgICAgfQorK30KK2RpZmYgLS1n aXQgYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvdHN0X3FxdWlja3Bv cHVwLmNwcCBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC90c3RfcXF1 aWNrcG9wdXAuY3BwCitpbmRleCA1NDk1MmQxMjguLjNkNTBlMmRkNCAxMDA2NDQKKy0tLSBhL3F0 cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC90c3RfcXF1aWNrcG9wdXAuY3Bw CisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvdHN0X3FxdWlj a3BvcHVwLmNwcAorQEAgLTEwMCw2ICsxMDAsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lk IGludmlzaWJsZVRvb2xUaXBPcGVuKCk7CisgICAgIHZvaWQgY2VudGVySW5PdmVybGF5V2l0aGlu U3RhY2tWaWV3SXRlbSgpOworICAgICB2b2lkIGRlc3Ryb3lEdXJpbmdFeGl0VHJhbnNpdGlvbigp OworKyAgICB2b2lkIHJlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uKCk7CisgfTsKKyAKKyB2b2lk IHRzdF9RUXVpY2tQb3B1cDo6aW5pdFRlc3RDYXNlKCkKK0BAIC0xNTc1LDYgKzE1NzYsMzQgQEAg dm9pZCB0c3RfUVF1aWNrUG9wdXA6OmRlc3Ryb3lEdXJpbmdFeGl0VHJhbnNpdGlvbigpCisgICAg IFFWRVJJRlkoIWJ1dHRvbi0+aXNEb3duKCkpOworIH0KKyAKKyt2b2lkIHRzdF9RUXVpY2tQb3B1 cDo6cmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24oKQorK3sKKysgICAgUVF1aWNrQXBwbGljYXRp b25IZWxwZXIgaGVscGVyKHRoaXMsICJyZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbi5xbWwiKTsK KysgICAgUVZFUklGWTIoaGVscGVyLnJlYWR5LCBoZWxwZXIuZmFpbHVyZU1lc3NhZ2UoKSk7Cisr CisrICAgIFFRdWlja1dpbmRvdyAqd2luZG93ID0gaGVscGVyLndpbmRvdzsKKysgICAgd2luZG93 LT5zaG93KCk7CisrICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93QWN0aXZlKHdpbmRv dykpOworKworKyAgICBRUXVpY2tPdmVybGF5ICpvdmVybGF5ID0gUVF1aWNrT3ZlcmxheTo6b3Zl cmxheSh3aW5kb3cpOworKyAgICBRUXVpY2tQb3B1cCAqbW9kYWxQb3B1cCA9IHdpbmRvdy0+cHJv cGVydHkoIm1vZGFsUG9wdXAiKS52YWx1ZTxRUXVpY2tQb3B1cCAqPigpOworKyAgICBRUXVpY2tQ b3B1cCAqcG9wdXAgPSB3aW5kb3ctPnByb3BlcnR5KCJwb3B1cCIpLnZhbHVlPFFRdWlja1BvcHVw ICo+KCk7CisrCisrICAgIG1vZGFsUG9wdXAtPm9wZW4oKTsKKysgICAgUVRSWV9WRVJJRlkobW9k YWxQb3B1cC0+aXNPcGVuZWQoKSk7CisrCisrICAgIFFUZXN0Ojptb3VzZVByZXNzKHdpbmRvdywg UXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyLCBRUG9pbnQoMSwgMSkpOworKyAgICAvLyB3 YWl0IHVudGlsIHRoZSB0cmFuc2l0aW9uIGlzIGZpbmlzaGVkIGFuZCB0aGUgb3ZlcmxheSBoaWRl cyBpdHNlbGYKKysgICAgUVRSWV9WRVJJRlkoIW92ZXJsYXktPmlzVmlzaWJsZSgpKTsKKysgICAg UVRlc3Q6Om1vdXNlUmVsZWFzZSh3aW5kb3csIFF0OjpMZWZ0QnV0dG9uLCBRdDo6Tm9Nb2RpZmll ciwgUVBvaW50KDEsIDEpKTsKKysKKysgICAgcG9wdXAtPm9wZW4oKTsKKysgICAgUVRSWV9WRVJJ RlkocG9wdXAtPmlzT3BlbmVkKCkpOworKyAgICBRVGVzdDo6bW91c2VDbGljayh3aW5kb3csIFF0 OjpMZWZ0QnV0dG9uLCBRdDo6Tm9Nb2RpZmllciwgUVBvaW50KDEsIDEpKTsKKysgICAgUVRSWV9W RVJJRlkoIXBvcHVwLT5pc09wZW5lZCgpKTsKKyt9CisrCisrCisgUVRFU1RfUVVJQ0tDT05UUk9M U19NQUlOKHRzdF9RUXVpY2tQb3B1cCkKKyAKKyAjaW5jbHVkZSAidHN0X3FxdWlja3BvcHVwLm1v YyIKK1N1Ym1vZHVsZSBxdHNjcmlwdCA1YmU5NWY5Ni4uLjRkOGU0YmQyIChjb21taXRzIG5vdCBw cmVzZW50KQorU3VibW9kdWxlIHF0c3BlZWNoIDE3ZmM5ZmRlLi4yNTU4NDVlMjoKK2RpZmYgLS1n aXQgYS9xdHNwZWVjaC9zcmMvcGx1Z2lucy90dHMvc3BlZWNoZGlzcGF0Y2hlci9xdGV4dHRvc3Bl ZWNoX3NwZWVjaGQuY3BwIGIvcXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRzL3NwZWVjaGRpc3BhdGNo ZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNwcAoraW5kZXggNmViNzRiOC4uYmNjN2RkMSAxMDA2 NDQKKy0tLSBhL3F0c3BlZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hkaXNwYXRjaGVyL3F0ZXh0 dG9zcGVlY2hfc3BlZWNoZC5jcHAKKysrKyBiL3F0c3BlZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVl Y2hkaXNwYXRjaGVyL3F0ZXh0dG9zcGVlY2hfc3BlZWNoZC5jcHAKK0BAIC0zNTcsNyArMzU3LDkg QEAgUVZlY3RvcjxRTG9jYWxlPiBRVGV4dFRvU3BlZWNoRW5naW5lU3BlZWNoZDo6YXZhaWxhYmxl TG9jYWxlcygpIGNvbnN0CisgCisgUVZlY3RvcjxRVm9pY2U+IFFUZXh0VG9TcGVlY2hFbmdpbmVT cGVlY2hkOjphdmFpbGFibGVWb2ljZXMoKSBjb25zdAorIHsKKy0gICAgcmV0dXJuIG1fdm9pY2Vz LnZhbHVlcyhtX2N1cnJlbnRMb2NhbGUubmFtZSgpKS50b1ZlY3RvcigpOworKyAgICBRTGlzdDxR Vm9pY2U+IHJlc3VsdExpc3QgPSBtX3ZvaWNlcy52YWx1ZXMobV9jdXJyZW50TG9jYWxlLm5hbWUo KSk7CisrICAgIHN0ZDo6cmV2ZXJzZShyZXN1bHRMaXN0LmJlZ2luKCksIHJlc3VsdExpc3QuZW5k KCkpOworKyAgICByZXR1cm4gcmVzdWx0TGlzdC50b1ZlY3RvcigpOworIH0KKyAKKyAvLyBXZSBo YXZlIG5vIHdheSBvZiBrbm93aW5nIG91ciBvd24gY2xpZW50X2lkIHNpbmNlIHNwZWVjaC1kaXNw YXRjaGVyIHNlZW1zIHRvIGJlIGluY29tcGxldGUKK1N1Ym1vZHVsZSBxdHN2ZyAwYzA1NzgwZS4u YTdhMGYyNDk6CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3N2 Zy9xc3ZnaW9oYW5kbGVyLmNwcCBiL3F0c3ZnL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcv cXN2Z2lvaGFuZGxlci5jcHAKK2luZGV4IDU2MWU3N2UuLjEyZTA1NzQgMTAwNjQ0CistLS0gYS9x dHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvc3ZnL3Fzdmdpb2hhbmRsZXIuY3BwCisrKysg Yi9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvc3ZnL3Fzdmdpb2hhbmRsZXIuY3BwCitA QCAtMTkxLDYgKzE5MSw4IEBAIGJvb2wgUVN2Z0lPSGFuZGxlcjo6cmVhZChRSW1hZ2UgKmltYWdl KQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIGlmICghZmluYWxTaXplLmlz RW1wdHkoKSkgeworKyAgICAgICAgICAgIGlmIChxTWF4KGZpbmFsU2l6ZS53aWR0aCgpLCBmaW5h bFNpemUuaGVpZ2h0KCkpID4gMHhmZmZmKQorKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7 IC8vIEFzc3VtZSBjb3JydXB0ZWQgZmlsZQorICAgICAgICAgICAgIGltYWdlLT5maWxsKGQtPmJh Y2tDb2xvci5yZ2JhKCkpOworICAgICAgICAgICAgIFFQYWludGVyIHAoaW1hZ2UpOworICAgICAg ICAgICAgIGQtPnIucmVuZGVyKCZwLCBib3VuZHMpOworZGlmZiAtLWdpdCBhL3F0c3ZnL3NyYy9z dmcvcXN2Z2hhbmRsZXIuY3BwIGIvcXRzdmcvc3JjL3N2Zy9xc3ZnaGFuZGxlci5jcHAKK2luZGV4 IGE1Zjg3N2YuLjhkZGE1NjMgMTAwNjQ0CistLS0gYS9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVy LmNwcAorKysrIGIvcXRzdmcvc3JjL3N2Zy9xc3ZnaGFuZGxlci5jcHAKK0BAIC0xMzkzLDkgKzEz OTMsMTAgQEAgc3RhdGljIHZvaWQgcGFyc2VGb250KFFTdmdOb2RlICpub2RlLAorICAgICAgICAg Y2FzZSBGb250U2l6ZU5vbmU6CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBjYXNlIEZv bnRTaXplVmFsdWU6IHsKKy0gICAgICAgICAgICBRU3ZnSGFuZGxlcjo6TGVuZ3RoVHlwZSBkdW1t eTsgLy8gc2hvdWxkIGFsd2F5cyBiZSBwaXhlbCBzaXplCistICAgICAgICAgICAgZm9udFN0eWxl LT5zZXRTaXplKHFNaW4ocGFyc2VMZW5ndGgoYXR0cmlidXRlcy5mb250U2l6ZSwgZHVtbXksIGhh bmRsZXIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFyZWFsKDB4ZmZm ZikpKTsKKysgICAgICAgICAgICBRU3ZnSGFuZGxlcjo6TGVuZ3RoVHlwZSB0eXBlOworKyAgICAg ICAgICAgIHFyZWFsIGZzID0gcGFyc2VMZW5ndGgoYXR0cmlidXRlcy5mb250U2l6ZSwgdHlwZSwg aGFuZGxlcik7CisrICAgICAgICAgICAgZnMgPSBjb252ZXJ0VG9QaXhlbHMoZnMsIHRydWUsIHR5 cGUpOworKyAgICAgICAgICAgIGZvbnRTdHlsZS0+c2V0U2l6ZShxTWluKGZzLCBxcmVhbCgweGZm ZmYpKSk7CisgICAgICAgICB9CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBkZWZhdWx0 OgorQEAgLTI1MTMsNiArMjUxNCw4IEBAIHN0YXRpYyBib29sIHBhcnNlQW5pbWF0ZVRyYW5zZm9y bU5vZGUoUVN2Z05vZGUgKnBhcmVudCwKKyAgICAgICAgICAgICArK3M7CisgICAgICAgICB9Cisg ICAgIH0KKysgICAgaWYgKHZhbHMuY291bnQoKSAlIDMgIT0gMCkKKysgICAgICAgIHJldHVybiBm YWxzZTsKKyAKKyAgICAgYm9vbCBvayA9IHRydWU7CisgICAgIGludCBiZWdpbiA9IHBhcnNlQ2xv Y2tWYWx1ZShiZWdpblN0ciwgJm9rKTsKK0BAIC0yNTc2LDYgKzI1NzksOCBAQCBzdGF0aWMgUVN2 Z05vZGUgKmNyZWF0ZUNpcmNsZU5vZGUoUVN2Z05vZGUgKnBhcmVudCwKKyAgICAgcXJlYWwgbmN4 ID0gdG9Eb3VibGUoY3gpOworICAgICBxcmVhbCBuY3kgPSB0b0RvdWJsZShjeSk7CisgICAgIHFy ZWFsIG5yICA9IHRvRG91YmxlKHIpOworKyAgICBpZiAobnIgPCAwLjApCisrICAgICAgICByZXR1 cm4gbnVsbHB0cjsKKyAKKyAgICAgUVJlY3RGIHJlY3QobmN4LW5yLCBuY3ktbnIsIG5yKjIsIG5y KjIpOworICAgICBRU3ZnTm9kZSAqY2lyY2xlID0gbmV3IFFTdmdDaXJjbGUocGFyZW50LCByZWN0 KTsKK0BAIC0zMDQ2LDE1ICszMDUxLDE2IEBAIHN0YXRpYyBRU3ZnU3R5bGVQcm9wZXJ0eSAqY3Jl YXRlUmFkaWFsR3JhZGllbnROb2RlKFFTdmdOb2RlICpub2RlLAorIAorICAgICBxcmVhbCBuY3gg PSAwLjU7CisgICAgIHFyZWFsIG5jeSA9IDAuNTsKKy0gICAgcXJlYWwgbnIgID0gMC41OworICAg ICBpZiAoIWN4LmlzRW1wdHkoKSkKKyAgICAgICAgIG5jeCA9IHRvRG91YmxlKGN4KTsKKyAgICAg aWYgKCFjeS5pc0VtcHR5KCkpCisgICAgICAgICBuY3kgPSB0b0RvdWJsZShjeSk7CisrCisrICAg IHFyZWFsIG5yID0gMC4wOworICAgICBpZiAoIXIuaXNFbXB0eSgpKQorICAgICAgICAgbnIgPSB0 b0RvdWJsZShyKTsKKy0gICAgaWYgKG5yIDwgMC41KQorLSAgICAgICAgbnIgPSAwLjU7CisrICAg IGlmIChuciA8PSAwLjApCisrICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAKKyAgICAgcXJlYWwg bmZ4ID0gbmN4OworICAgICBpZiAoIWZ4LmlzRW1wdHkoKSkKK0BAIC0zMzUwLDcgKzMzNTYsOSBA QCBzdGF0aWMgUVN2Z05vZGUgKmNyZWF0ZVRleHROb2RlKFFTdmdOb2RlICpwYXJlbnQsCisgICAg IC8vIyMjIGVkaXRhYmxlIGFuZCByb3RhdGUgbm90IGhhbmRsZWQKKyAgICAgUVN2Z0hhbmRsZXI6 Okxlbmd0aFR5cGUgdHlwZTsKKyAgICAgcXJlYWwgbnggPSBwYXJzZUxlbmd0aCh4LCB0eXBlLCBo YW5kbGVyKTsKKysgICAgbnggPSBjb252ZXJ0VG9QaXhlbHMobngsIHRydWUsIHR5cGUpOworICAg ICBxcmVhbCBueSA9IHBhcnNlTGVuZ3RoKHksIHR5cGUsIGhhbmRsZXIpOworKyAgICBueSA9IGNv bnZlcnRUb1BpeGVscyhueSwgdHJ1ZSwgdHlwZSk7CisgCisgICAgIFFTdmdOb2RlICp0ZXh0ID0g bmV3IFFTdmdUZXh0KHBhcmVudCwgUVBvaW50RihueCwgbnkpKTsKKyAgICAgcmV0dXJuIHRleHQ7 CitAQCAtMzY5MSw5ICszNjk5LDcgQEAgdm9pZCBRU3ZnSGFuZGxlcjo6cGFyc2UoKQorICAgICAg ICAgY2FzZSBRWG1sU3RyZWFtUmVhZGVyOjpFbmRFbGVtZW50OgorICAgICAgICAgICAgIGVuZEVs ZW1lbnQoeG1sLT5uYW1lKCkpOworICAgICAgICAgICAgICsrcmVtYWluaW5nVW5maW5pc2hlZEVs ZW1lbnRzOworLSAgICAgICAgICAgIC8vIGlmIHdlIGFyZSB1c2luZyBzb21lYm9keSBlbHNlJ3Mg cXhtbHN0cmVhbXJlYWRlcgorLSAgICAgICAgICAgIC8vIHdlIHNob3VsZCBub3QgcmVhZCB1bnRp bCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0KKy0gICAgICAgICAgICBkb25lID0gIW1fb3duc1JlYWRl ciAmJiAoeG1sLT5uYW1lKCkgPT0gUUxhdGluMVN0cmluZygic3ZnIikpOworKyAgICAgICAgICAg IGRvbmUgPSAoeG1sLT5uYW1lKCkgPT0gUUxhdGluMVN0cmluZygic3ZnIikpOworICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgY2FzZSBRWG1sU3RyZWFtUmVhZGVyOjpDaGFyYWN0ZXJzOgor ICAgICAgICAgICAgIGNoYXJhY3RlcnMoeG1sLT50ZXh0KCkpOworZGlmZiAtLWdpdCBhL3F0c3Zn L3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5jcHAgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdzdHJ1Y3R1cmUu Y3BwCitpbmRleCBiODk2MDhiLi44OWM5ZTRlIDEwMDY0NAorLS0tIGEvcXRzdmcvc3JjL3N2Zy9x c3Znc3RydWN0dXJlLmNwcAorKysrIGIvcXRzdmcvc3JjL3N2Zy9xc3Znc3RydWN0dXJlLmNwcAor QEAgLTI1NSw5ICsyNTUsMTMgQEAgaW5saW5lIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkU3ZnRmVh dHVyZShjb25zdCBRU3RyaW5nICZzdHIpCisgICAgIH07CisgCisgICAgIGlmIChzdHIubGVuZ3Ro KCkgPD0gTUFYX1dPUkRfTEVOR1RIICYmIHN0ci5sZW5ndGgoKSA+PSBNSU5fV09SRF9MRU5HVEgp IHsKKysgICAgICAgIGNvbnN0IGNoYXIxNl90IHVuaWNvZGU0NCA9IHN0ci5hdCg0NCkudW5pY29k ZSgpOworKyAgICAgICAgY29uc3QgY2hhcjE2X3QgdW5pY29kZTQ1ID0gc3RyLmF0KDQ1KS51bmlj b2RlKCk7CisrICAgICAgICBpZiAodW5pY29kZTQ0ID49IHNpemVvZihhc3NvX3ZhbHVlcykgfHwg dW5pY29kZTQ1ID49IHNpemVvZihhc3NvX3ZhbHVlcykpCisrICAgICAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICAgICAgY29uc3QgaW50IGtleSA9IHN0ci5sZW5ndGgoKQorLSAgICAgICAgICAg ICAgICAgICAgICAgICsgYXNzb192YWx1ZXNbc3RyLmF0KDQ1KS51bmljb2RlKCldCistICAgICAg ICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1tzdHIuYXQoNDQpLnVuaWNvZGUoKV07Cisr ICAgICAgICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1t1bmljb2RlNDVdCisrICAgICAg ICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1t1bmljb2RlNDRdOworICAgICAgICAgaWYg KGtleSA8PSBNQVhfSEFTSF9WQUxVRSAmJiBrZXkgPj0gMCkKKyAgICAgICAgICAgICByZXR1cm4g c3RyID09IFFMYXRpbjFTdHJpbmcod29yZGxpc3Rba2V5XSk7CisgICAgIH0KK2RpZmYgLS1naXQg YS9xdHN2Zy9zcmMvc3ZnL3Fzdmd0aW55ZG9jdW1lbnQuY3BwIGIvcXRzdmcvc3JjL3N2Zy9xc3Zn dGlueWRvY3VtZW50LmNwcAoraW5kZXggNjNkMDc5Ny4uMTllNzE1NCAxMDA2NDQKKy0tLSBhL3F0 c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAKKysrKyBiL3F0c3ZnL3NyYy9zdmcvcXN2 Z3Rpbnlkb2N1bWVudC5jcHAKK0BAIC00MzMsOCArNDMzLDE2IEBAIHZvaWQgUVN2Z1RpbnlEb2N1 bWVudDo6ZHJhdyhRUGFpbnRlciAqcCwgUVN2Z0V4dHJhU3RhdGVzICYpCisgICAgIGRyYXcocCk7 CisgfQorIAorK3N0YXRpYyBib29sIGlzVmFsaWRNYXRyaXgoY29uc3QgUVRyYW5zZm9ybSAmdHJh bnNmb3JtKQorK3sKKysgICAgcXJlYWwgZGV0ZXJtaW5hbnQgPSB0cmFuc2Zvcm0uZGV0ZXJtaW5h bnQoKTsKKysgICAgcmV0dXJuIHFJc0Zpbml0ZShkZXRlcm1pbmFudCk7CisrfQorKworIHZvaWQg UVN2Z1RpbnlEb2N1bWVudDo6bWFwU291cmNlVG9UYXJnZXQoUVBhaW50ZXIgKnAsIGNvbnN0IFFS ZWN0RiAmdGFyZ2V0UmVjdCwgY29uc3QgUVJlY3RGICZzb3VyY2VSZWN0KQorIHsKKysgICAgUVRy YW5zZm9ybSBvbGRUcmFuc2Zvcm0gPSBwLT53b3JsZFRyYW5zZm9ybSgpOworKworICAgICBRUmVj dEYgdGFyZ2V0ID0gdGFyZ2V0UmVjdDsKKyAgICAgaWYgKHRhcmdldC5pc0VtcHR5KCkpIHsKKyAg ICAgICAgIFFQYWludERldmljZSAqZGV2ID0gcC0+ZGV2aWNlKCk7CitAQCAtNDg3LDYgKzQ5NSw5 IEBAIHZvaWQgUVN2Z1RpbnlEb2N1bWVudDo6bWFwU291cmNlVG9UYXJnZXQoUVBhaW50ZXIgKnAs IGNvbnN0IFFSZWN0RiAmdGFyZ2V0UmVjdCwKKyAgICAgICAgIH0KKyAjZW5kaWYKKyAgICAgfQor KworKyAgICBpZiAoIWlzVmFsaWRNYXRyaXgocC0+d29ybGRUcmFuc2Zvcm0oKSkpCisrICAgICAg ICBwLT5zZXRXb3JsZFRyYW5zZm9ybShvbGRUcmFuc2Zvcm0pOworIH0KKyAKKyBRUmVjdEYgUVN2 Z1RpbnlEb2N1bWVudDo6Ym91bmRzT25FbGVtZW50KGNvbnN0IFFTdHJpbmcgJmlkKSBjb25zdAor ZGlmZiAtLWdpdCBhL3F0c3ZnL3Rlc3RzL2F1dG8vcXN2Z3JlbmRlcmVyL3RzdF9xc3ZncmVuZGVy ZXIuY3BwIGIvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0X3FzdmdyZW5kZXJlci5j cHAKK2luZGV4IDM2Yzc2ZWMuLmRiNzFlMDIgMTAwNjQ0CistLS0gYS9xdHN2Zy90ZXN0cy9hdXRv L3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcAorKysrIGIvcXRzdmcvdGVzdHMvYXV0 by9xc3ZncmVuZGVyZXIvdHN0X3FzdmdyZW5kZXJlci5jcHAKK0BAIC04Niw2ICs4Niw4IEBAIHBy aXZhdGUgc2xvdHM6CisgICAgIHZvaWQgb3NzX2Z1enpfMjM3MzEoKTsKKyAgICAgdm9pZCBvc3Nf ZnV6el8yNDEzMSgpOworICAgICB2b2lkIG9zc19mdXp6XzI0NzM4KCk7CisrICAgIHZvaWQgaWxs ZWdhbEFuaW1hdGVUcmFuc2Zvcm1fZGF0YSgpOworKyAgICB2b2lkIGlsbGVnYWxBbmltYXRlVHJh bnNmb3JtKCk7CisgCisgI2lmbmRlZiBRVF9OT19DT01QUkVTUworICAgICB2b2lkIHRlc3RHekxv YWRpbmcoKTsKK0BAIC0xNjQ2LDUgKzE2NDgsMjIgQEAgdm9pZCB0c3RfUVN2Z1JlbmRlcmVyOjpv c3NfZnV6el8yNDczOCgpCisgICAgIFFTdmdSZW5kZXJlcigpLmxvYWQoUUJ5dGVBcnJheSgiPHN2 Zz48cGF0aCBkPVwiYSAyIDFlLTIxMi4uLi4uXCI+IikpOworIH0KKyAKKyt2b2lkIHRzdF9RU3Zn UmVuZGVyZXI6OmlsbGVnYWxBbmltYXRlVHJhbnNmb3JtX2RhdGEoKQorK3sKKysgICAgUVRlc3Q6 OmFkZENvbHVtbjxRQnl0ZUFycmF5Pigic3ZnIik7CisrCisrICAgIFFUZXN0OjpuZXdSb3coImNh c2UxIikgPDwgUUJ5dGVBcnJheSgiPHN2Zz48YW5pbWF0ZVRyYW5zZm9ybSB0eXBlPVwicm90YXRl XCIgYmVnaW49XCIxXCIgZHVyPVwiMlwiIHZhbHVlcz1cIjgsMCw1LDBcIj4iKTsKKysgICAgUVRl c3Q6Om5ld1JvdygiY2FzZTIiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJhbnNmb3Jt IHR5cGU9XCJyb3RhdGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIyXCIgdmFsdWVzPVwiMSwyXCI+Iik7 CisrICAgIFFUZXN0OjpuZXdSb3coImNhc2UzIikgPDwgUUJ5dGVBcnJheSgiPHN2Zz48YW5pbWF0 ZVRyYW5zZm9ybSB0eXBlPVwicm90YXRlXCIgYmVnaW49XCIxXCIgZHVyPVwiMlwiIGZyb209XCIu LiA1IDJcIiB0bz1cImZcIj4iKTsKKysgICAgUVRlc3Q6Om5ld1JvdygiY2FzZTQiKSA8PCBRQnl0 ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJhbnNmb3JtIHR5cGU9XCJzY2FsZVwiIGJlZ2luPVwiMVwi IGR1cj1cIjJcIiBieT1cIi0tLC4uXCI+Iik7CisrfQorKworK3ZvaWQgdHN0X1FTdmdSZW5kZXJl cjo6aWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm0oKQorK3sKKysgICAgUUZFVENIKFFCeXRlQXJyYXks IHN2Zyk7CisrICAgIFFTdmdSZW5kZXJlciByZW5kZXJlcjsKKysgICAgUVZFUklGWSghcmVuZGVy ZXIubG9hZChzdmcpKTsgLy8gYWxzbyBzaG91bGRuJ3QgYXNzZXJ0CisrfQorKworIFFURVNUX01B SU4odHN0X1FTdmdSZW5kZXJlcikKKyAjaW5jbHVkZSAidHN0X3FzdmdyZW5kZXJlci5tb2MiCitT dWJtb2R1bGUgcXR0b29scyA2OTE0ZjdjOC4uMDkwZTUyNmU6CitkaWZmIC0tZ2l0IGEvcXR0b29s cy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0b3IuY3BwIGIvcXR0b29s cy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0b3IuY3BwCitpbmRleCBm ZWFiMWUyZDUuLmNiZmI4MjUwNyAxMDA2NDQKKy0tLSBhL3F0dG9vbHMvc3JjL2Fzc2lzdGFudC9x aGVscGdlbmVyYXRvci9oZWxwZ2VuZXJhdG9yLmNwcAorKysrIGIvcXR0b29scy9zcmMvYXNzaXN0 YW50L3FoZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0b3IuY3BwCitAQCAtNDQ1LDcgKzQ0NSw5IEBA IGJvb2wgSGVscEdlbmVyYXRvclByaXZhdGU6Omluc2VydEZpbGVzKGNvbnN0IFFTdHJpbmdMaXN0 ICZmaWxlcywgY29uc3QgUVN0cmluZyAmCisgICAgIGlmIChmaWx0ZXJTZXRJZCA8IDApCisgICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgICsrZmlsdGVyU2V0SWQ7CistICAgIGZvciAoaW50IGF0 dElkIDogcUFzQ29uc3QoZmlsdGVyQXR0cykpIHsKKysgICAgUUxpc3Q8aW50PiBhdHRWYWx1ZXMg PSBmaWx0ZXJBdHRzLnZhbHVlcygpOworKyAgICBzdGQ6OnNvcnQoYXR0VmFsdWVzLmJlZ2luKCks IGF0dFZhbHVlcy5lbmQoKSk7CisrICAgIGZvciAoaW50IGF0dElkIDogcUFzQ29uc3QoYXR0VmFs dWVzKSkgeworICAgICAgICAgbV9xdWVyeS0+cHJlcGFyZShRTGF0aW4xU3RyaW5nKCJJTlNFUlQg SU5UTyBGaWxlQXR0cmlidXRlU2V0VGFibGUgIgorICAgICAgICAgICAgICJWQUxVRVMoPywgPyki KSk7CisgICAgICAgICBtX3F1ZXJ5LT5iaW5kVmFsdWUoMCwgZmlsdGVyU2V0SWQpOworU3VibW9k dWxlIHF0d2F5bGFuZCBkZmIwMTI5Yy4uMjkwNGUxYjM6CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3NyYy9jbGllbnQvY29uZmlndXJlLmpzb24gYi9xdHdheWxhbmQvc3JjL2NsaWVudC9jb25maWd1 cmUuanNvbgoraW5kZXggMmY0MjQ1ODAuLjI5MjIyMzU3IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5k L3NyYy9jbGllbnQvY29uZmlndXJlLmpzb24KKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2Nv bmZpZ3VyZS5qc29uCitAQCAtMTQ5LDggKzE0OSw3IEBACisgICAgICAgICAgICAgICAgICAgICAi I2VuZGlmIgorICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgfSwKKy0gICAgICAgICAg ICAibGlicyI6ICItbGRybSIsCistICAgICAgICAgICAgInVzZSI6ICJlZ2wiCisrICAgICAgICAg ICAgInVzZSI6ICJkcm0gZWdsIgorICAgICAgICAgfSwKKyAgICAgICAgICJ2dWxrYW4tc2VydmVy LWJ1ZmZlciI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAiVnVsa2FuIEJ1ZmZlciBTaGFyaW5n IiwKK0BAIC0xNjgsNyArMTY3LDggQEAKKyAgICAgICAgICAgICAgICAgICAgICJleHBvcnRBbGxv Y0luZm8uaGFuZGxlVHlwZXMgPSBWS19FWFRFUk5BTF9NRU1PUllfSEFORExFX1RZUEVfT1BBUVVF X0ZEX0JJVF9LSFI7IiwKKyAgICAgICAgICAgICAgICAgICAgICJyZXR1cm4gMDsiCisgICAgICAg ICAgICAgICAgIF0KKy0gICAgICAgICAgICB9CisrICAgICAgICAgICAgfSwKKysgICAgICAgICAg ICAidXNlIjogIndheWxhbmQtY2xpZW50IgorICAgICAgICAgfSwKKyAgICAgICAgICJlZ2xfMV81 LXdheWxhbmQiOiB7CisgICAgICAgICAgICAgImxhYmVsIjogIkVHTCAxLjUgd2l0aCBXYXlsYW5k IFBsYXRmb3JtIiwKK0BAIC0xODMsNyArMTgzLDcgQEAKKyAgICAgICAgICAgICAgICAgICAgICJl Z2xHZXRQbGF0Zm9ybURpc3BsYXkoRUdMX1BMQVRGT1JNX1dBWUxBTkRfRVhULCAoc3RydWN0IHds X2Rpc3BsYXkgKikobnVsbHB0ciksIG51bGxwdHIpOyIKKyAgICAgICAgICAgICAgICAgXQorICAg ICAgICAgICAgIH0sCistICAgICAgICAgICAgInVzZSI6ICJlZ2wiCisrICAgICAgICAgICAgInVz ZSI6ICJlZ2wgd2F5bGFuZC1jbGllbnQiCisgICAgICAgICB9CisgICAgIH0sCisgCitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9u LmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lv bi5jcHAKK2luZGV4IDEyNWIxZTE5Li5lZGNjZmU2MyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9z cmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5jcHAKKysrKyBiL3F0d2F5 bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5jcHAKK0BAIC03 NCw3ICs3NCwxMCBAQCB2b2lkIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxl UmVnaXN0cnlHbG9iYWwodm9pZCAqZGF0YSwgOjp3bF9yZWdpcworIHZvaWQgUVdheWxhbmRDbGll bnRFeHRlbnNpb246OmFkZFJlZ2lzdHJ5TGlzdGVuZXIoKQorIHsKKyAgICAgUV9EKFFXYXlsYW5k Q2xpZW50RXh0ZW5zaW9uKTsKKy0gICAgZC0+d2F5bGFuZEludGVncmF0aW9uLT5kaXNwbGF5KCkt PmFkZFJlZ2lzdHJ5TGlzdGVuZXIoJlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFu ZGxlUmVnaXN0cnlHbG9iYWwsIHRoaXMpOworKyAgICBpZiAoIWQtPnJlZ2lzdGVyZWQpIHsKKysg ICAgICAgIGQtPndheWxhbmRJbnRlZ3JhdGlvbi0+ZGlzcGxheSgpLT5hZGRSZWdpc3RyeUxpc3Rl bmVyKCZRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6OmhhbmRsZVJlZ2lzdHJ5R2xvYmFs LCB0aGlzKTsKKysgICAgICAgIGQtPnJlZ2lzdGVyZWQgPSB0cnVlOworKyAgICB9CisgfQorIAor IFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjpRV2F5bGFuZENsaWVudEV4dGVuc2lvbihjb25zdCBp bnQgdmVyKQorQEAgLTg4LDYgKzkxLDEzIEBAIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjpRV2F5 bGFuZENsaWVudEV4dGVuc2lvbihjb25zdCBpbnQgdmVyKQorICAgICBRTWV0YU9iamVjdDo6aW52 b2tlTWV0aG9kKHRoaXMsICJhZGRSZWdpc3RyeUxpc3RlbmVyIiwgUXQ6OlF1ZXVlZENvbm5lY3Rp b24pOworIH0KKyAKKytRV2F5bGFuZENsaWVudEV4dGVuc2lvbjo6flFXYXlsYW5kQ2xpZW50RXh0 ZW5zaW9uKCkKKyt7CisrICAgIFFfRChRV2F5bGFuZENsaWVudEV4dGVuc2lvbik7CisrICAgIGlm IChkLT5yZWdpc3RlcmVkICYmICFRQ29yZUFwcGxpY2F0aW9uOjpjbG9zaW5nRG93bigpKQorKyAg ICAgICAgZC0+d2F5bGFuZEludGVncmF0aW9uLT5kaXNwbGF5KCktPnJlbW92ZUxpc3RlbmVyKCZR V2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6OmhhbmRsZVJlZ2lzdHJ5R2xvYmFsLCB0aGlz KTsKKyt9CisrCisgUXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFuZEludGVncmF0aW9uICpRV2F5bGFu ZENsaWVudEV4dGVuc2lvbjo6aW50ZWdyYXRpb24oKSBjb25zdAorIHsKKyAgICAgUV9EKGNvbnN0 IFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uaCBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5oCitpbmRleCA5ODI3MmU1Ny4uNWJk MjgzOTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRj bGllbnRleHRlbnNpb24uaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXls YW5kY2xpZW50ZXh0ZW5zaW9uLmgKK0BAIC02Myw2ICs2Myw3IEBAIGNsYXNzIFFfV0FZTEFORF9D TElFTlRfRVhQT1JUIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uIDogcHVibGljIFFPYmplY3QKKyAg ICAgUV9QUk9QRVJUWShib29sIGFjdGl2ZSBSRUFEIGlzQWN0aXZlIE5PVElGWSBhY3RpdmVDaGFu Z2VkKQorIHB1YmxpYzoKKyAgICAgUVdheWxhbmRDbGllbnRFeHRlbnNpb24oY29uc3QgaW50IHZl cnNpb24pOworKyAgICB+UVdheWxhbmRDbGllbnRFeHRlbnNpb24oKTsKKyAKKyAgICAgUXRXYXls YW5kQ2xpZW50OjpRV2F5bGFuZEludGVncmF0aW9uICppbnRlZ3JhdGlvbigpIGNvbnN0OworICAg ICBpbnQgdmVyc2lvbigpIGNvbnN0OworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50 L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb25fcC5oCitpbmRleCA2OWNjNDZhMC4uOTA5 MWVmYmUgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRj bGllbnRleHRlbnNpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdh eWxhbmRjbGllbnRleHRlbnNpb25fcC5oCitAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CisgICAg IFF0V2F5bGFuZENsaWVudDo6UVdheWxhbmRJbnRlZ3JhdGlvbiAqd2F5bGFuZEludGVncmF0aW9u ID0gbnVsbHB0cjsKKyAgICAgaW50IHZlcnNpb24gPSAtMTsKKyAgICAgYm9vbCBhY3RpdmUgPSBm YWxzZTsKKysgICAgYm9vbCByZWdpc3RlcmVkID0gZmFsc2U7CisgfTsKKyAKKyBjbGFzcyBRX1dB WUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZENsaWVudEV4dGVuc2lvblRlbXBsYXRlUHJpdmF0 ZSA6IHB1YmxpYyBRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGUKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2UuY3BwIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlLmNwcAoraW5kZXggN2UyZTMzMDguLmUzZTYwZWQ1 IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlLmNw cAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlLmNwcAorQEAg LTcyLDYgKzcyLDggQEAgUVdheWxhbmREYXRhRGV2aWNlOjpRV2F5bGFuZERhdGFEZXZpY2UoUVdh eWxhbmREYXRhRGV2aWNlTWFuYWdlciAqbWFuYWdlciwgUVdheWwKKyAKKyBRV2F5bGFuZERhdGFE ZXZpY2U6On5RV2F5bGFuZERhdGFEZXZpY2UoKQorIHsKKysgICAgaWYgKHdsX2RhdGFfZGV2aWNl X2dldF92ZXJzaW9uKG9iamVjdCgpKSA+PSBXTF9EQVRBX0RFVklDRV9SRUxFQVNFX1NJTkNFX1ZF UlNJT04pCisrICAgICAgICByZWxlYXNlKCk7CisgfQorIAorIFFXYXlsYW5kRGF0YU9mZmVyICpR V2F5bGFuZERhdGFEZXZpY2U6OnNlbGVjdGlvbk9mZmVyKCkgY29uc3QKK0BAIC0xMTAsNyArMTEy LDcgQEAgUVdheWxhbmREYXRhT2ZmZXIgKlFXYXlsYW5kRGF0YURldmljZTo6ZHJhZ09mZmVyKCkg Y29uc3QKKyAgICAgcmV0dXJuIG1fZHJhZ09mZmVyLmRhdGEoKTsKKyB9CisgCistYm9vbCBRV2F5 bGFuZERhdGFEZXZpY2U6OnN0YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVEYXRhLCBRV2F5bGFuZFdp bmRvdyAqaWNvbikKKytib29sIFFXYXlsYW5kRGF0YURldmljZTo6c3RhcnREcmFnKFFNaW1lRGF0 YSAqbWltZURhdGEsIFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25zLCBRV2F5bGFuZFdp bmRvdyAqaWNvbikKKyB7CisgICAgIGF1dG8gKnNlYXQgPSBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1 dERldmljZSgpOworICAgICBhdXRvICpvcmlnaW4gPSBzZWF0LT5wb2ludGVyRm9jdXMoKTsKK0BA IC0xMjMsNyArMTI1LDI4IEBAIGJvb2wgUVdheWxhbmREYXRhRGV2aWNlOjpzdGFydERyYWcoUU1p bWVEYXRhICptaW1lRGF0YSwgUVdheWxhbmRXaW5kb3cgKmljb24pCisgICAgIH0KKyAKKyAgICAg bV9kcmFnU291cmNlLnJlc2V0KG5ldyBRV2F5bGFuZERhdGFTb3VyY2UobV9kaXNwbGF5LT5kbmRT ZWxlY3Rpb25IYW5kbGVyKCksIG1pbWVEYXRhKSk7CisrCisrICAgIGlmICh3bF9kYXRhX2Rldmlj ZV9nZXRfdmVyc2lvbihvYmplY3QoKSkgPj0gMykKKysgICAgICAgIG1fZHJhZ1NvdXJjZS0+c2V0 X2FjdGlvbnMoZHJvcEFjdGlvbnNUb1dsKHN1cHBvcnRlZEFjdGlvbnMpKTsKKysKKyAgICAgY29u bmVjdChtX2RyYWdTb3VyY2UuZGF0YSgpLCAmUVdheWxhbmREYXRhU291cmNlOjpjYW5jZWxsZWQs IHRoaXMsICZRV2F5bGFuZERhdGFEZXZpY2U6OmRyYWdTb3VyY2VDYW5jZWxsZWQpOworKyAgICBj b25uZWN0KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6OmRuZFJlc3Bv bnNlVXBkYXRlZCwgdGhpcywgW3RoaXNdKGJvb2wgYWNjZXB0ZWQsIFF0OjpEcm9wQWN0aW9uIGFj dGlvbikgeworKyAgICAgICAgICAgIGF1dG8gZHJhZyA9IHN0YXRpY19jYXN0PFFXYXlsYW5kRHJh ZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWco KSk7CisrICAgICAgICAgICAgLy8gaW4gb2xkIHZlcnNpb25zIGRyb3AgYWN0aW9uIGlzIG5vdCBz ZXQsIHNvIHdlIGd1ZXNzCisrICAgICAgICAgICAgaWYgKHdsX2RhdGFfc291cmNlX2dldF92ZXJz aW9uKG1fZHJhZ1NvdXJjZS0+b2JqZWN0KCkpIDwgMykgeworKyAgICAgICAgICAgICAgICBkcmFn LT5zZXRSZXNwb25zZShhY2NlcHRlZCk7CisrICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAg ICAgICAgICAgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgcmVzcG9uc2UoYWNjZXB0ZWQsIGFjdGlv bik7CisrICAgICAgICAgICAgICAgIGRyYWctPnNldFJlc3BvbnNlKHJlc3BvbnNlKTsKKysgICAg ICAgICAgICB9CisrICAgIH0pOworKyAgICBjb25uZWN0KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZR V2F5bGFuZERhdGFTb3VyY2U6OmRuZERyb3BwZWQsIHRoaXMsIFtdKGJvb2wgYWNjZXB0ZWQsIFF0 OjpEcm9wQWN0aW9uIGFjdGlvbikgeworKyAgICAgICAgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2Ug cmVzcG9uc2UoYWNjZXB0ZWQsIGFjdGlvbik7CisrICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFu ZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5k cmFnKCkpLT5zZXREcm9wUmVzcG9uc2UocmVzcG9uc2UpOworKyAgICB9KTsKKysgICAgY29ubmVj dChtX2RyYWdTb3VyY2UuZGF0YSgpLCAmUVdheWxhbmREYXRhU291cmNlOjpmaW5pc2hlZCwgdGhp cywgW10oKSB7CisrICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxp Y2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5maW5pc2hEcmFn KCk7CisrICAgIH0pOworIAorICAgICBzdGFydF9kcmFnKG1fZHJhZ1NvdXJjZS0+b2JqZWN0KCks IG9yaWdpbi0+d2xTdXJmYWNlKCksIGljb24tPndsU3VyZmFjZSgpLCBtX2Rpc3BsYXktPmN1cnJl bnRJbnB1dERldmljZSgpLT5zZXJpYWwoKSk7CisgICAgIHJldHVybiB0cnVlOworQEAgLTE1Miw3 ICsxNzUsNyBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfZHJvcCgpCisg ICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gZHJhZy0+c3VwcG9ydGVkQWN0aW9ucygpOworICAg ICB9IGVsc2UgaWYgKG1fZHJhZ09mZmVyKSB7CisgICAgICAgICBkcmFnRGF0YSA9IG1fZHJhZ09m ZmVyLT5taW1lRGF0YSgpOworLSAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IFF0OjpDb3B5QWN0 aW9uIHwgUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6TGlua0FjdGlvbjsKKysgICAgICAgIHN1cHBvcnRl ZEFjdGlvbnMgPSBtX2RyYWdPZmZlci0+c3VwcG9ydGVkQWN0aW9ucygpOworICAgICB9IGVsc2Ug eworICAgICAgICAgcmV0dXJuOworICAgICB9CitAQCAtMTYyLDcgKzE4NSwxMSBAQCB2b2lkIFFX YXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfZHJvcCgpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR R3VpQXBwbGljYXRpb246OmtleWJvYXJkTW9kaWZpZXJzKCkpOworIAorICAgICBpZiAoZHJhZykg eworLSAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblBy aXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+ZmluaXNoRHJhZyhyZXNwb25z ZSk7CisrICAgICAgICBhdXRvIGRyYWcgPSAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFH dWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKTsKKysg ICAgICAgIGRyYWctPnNldERyb3BSZXNwb25zZShyZXNwb25zZSk7CisrICAgICAgICBkcmFnLT5m aW5pc2hEcmFnKCk7CisrICAgIH0gZWxzZSBpZiAobV9kcmFnT2ZmZXIpIHsKKysgICAgICAgIG1f ZHJhZ09mZmVyLT5maW5pc2goKTsKKyAgICAgfQorIH0KKyAKK0BAIC0xODYsNyArMjEzLDcgQEAg dm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX2VudGVyKHVpbnQzMl90IHNlcmlh bCwgd2xfc3VyZmFjZSAqc3VyZmFjZSwKKyAgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBkcmFn LT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxzZSBpZiAobV9kcmFnT2ZmZXIpIHsKKyAg ICAgICAgIGRyYWdEYXRhID0gbV9kcmFnT2ZmZXItPm1pbWVEYXRhKCk7CistICAgICAgICBzdXBw b3J0ZWRBY3Rpb25zID0gUXQ6OkNvcHlBY3Rpb24gfCBRdDo6TW92ZUFjdGlvbiB8IFF0OjpMaW5r QWN0aW9uOworKyAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IG1fZHJhZ09mZmVyLT5zdXBwb3J0 ZWRBY3Rpb25zKCk7CisgICAgIH0KKyAKKyAgICAgY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9u c2UgJnJlc3BvbnNlID0gUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlRHJhZyhtX2RyYWdX aW5kb3csIGRyYWdEYXRhLCBtX2RyYWdQb2ludCwgc3VwcG9ydGVkQWN0aW9ucywKK0BAIC0xOTcs MTEgKzIyNCw3IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9lbnRlcih1 aW50MzJfdCBzZXJpYWwsIHdsX3N1cmZhY2UgKnN1cmZhY2UsCisgICAgICAgICBzdGF0aWNfY2Fz dDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3Jh dGlvbigpLT5kcmFnKCkpLT5zZXRSZXNwb25zZShyZXNwb25zZSk7CisgICAgIH0KKyAKKy0gICAg aWYgKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSkgeworLSAgICAgICAgd2xfZGF0YV9vZmZlcl9hY2Nl cHQobV9kcmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVyU2VyaWFsLCBtX2RyYWdPZmZlci0+Zmly c3RGb3JtYXQoKS50b1V0ZjgoKS5jb25zdERhdGEoKSk7CistICAgIH0gZWxzZSB7CistICAgICAg ICB3bF9kYXRhX29mZmVyX2FjY2VwdChtX2RyYWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJp YWwsIG51bGxwdHIpOworLSAgICB9CisrICAgIHNlbmRSZXNwb25zZShzdXBwb3J0ZWRBY3Rpb25z LCByZXNwb25zZSk7CisgfQorIAorIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2Rldmlj ZV9sZWF2ZSgpCitAQCAtMjM1LDEwICsyNTgsMTAgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6 OmRhdGFfZGV2aWNlX21vdGlvbih1aW50MzJfdCB0aW1lLCB3bF9maXhlZF90IHgsIHdsX2ZpeGUK KyAgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBkcmFnLT5zdXBwb3J0ZWRBY3Rpb25zKCk7Cisg ICAgIH0gZWxzZSB7CisgICAgICAgICBkcmFnRGF0YSA9IG1fZHJhZ09mZmVyLT5taW1lRGF0YSgp OworLSAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IFF0OjpDb3B5QWN0aW9uIHwgUXQ6Ok1vdmVB Y3Rpb24gfCBRdDo6TGlua0FjdGlvbjsKKysgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBtX2Ry YWdPZmZlci0+c3VwcG9ydGVkQWN0aW9ucygpOworICAgICB9CisgCistICAgIFFQbGF0Zm9ybURy YWdRdFJlc3BvbnNlIHJlc3BvbnNlID0gUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlRHJh ZyhtX2RyYWdXaW5kb3csIGRyYWdEYXRhLCBtX2RyYWdQb2ludCwgc3VwcG9ydGVkQWN0aW9ucywK KysgICAgY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgcmVzcG9uc2UgPSBRV2luZG93U3lz dGVtSW50ZXJmYWNlOjpoYW5kbGVEcmFnKG1fZHJhZ1dpbmRvdywgZHJhZ0RhdGEsIG1fZHJhZ1Bv aW50LCBzdXBwb3J0ZWRBY3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUd1aUFwcGxpY2F0aW9u Ojptb3VzZUJ1dHRvbnMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHdWlBcHBsaWNhdGlvbjo6a2V5 Ym9hcmRNb2RpZmllcnMoKSk7CisgCitAQCAtMjQ2LDExICsyNjksNyBAQCB2b2lkIFFXYXlsYW5k RGF0YURldmljZTo6ZGF0YV9kZXZpY2VfbW90aW9uKHVpbnQzMl90IHRpbWUsIHdsX2ZpeGVkX3Qg eCwgd2xfZml4ZQorICAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBs aWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+c2V0UmVzcG9u c2UocmVzcG9uc2UpOworICAgICB9CisgCistICAgIGlmIChyZXNwb25zZS5pc0FjY2VwdGVkKCkp IHsKKy0gICAgICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVyLT5vYmplY3QoKSwg bV9lbnRlclNlcmlhbCwgbV9kcmFnT2ZmZXItPmZpcnN0Rm9ybWF0KCkudG9VdGY4KCkuY29uc3RE YXRhKCkpOworLSAgICB9IGVsc2UgeworLSAgICAgICAgd2xfZGF0YV9vZmZlcl9hY2NlcHQobV9k cmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVyU2VyaWFsLCBudWxscHRyKTsKKy0gICAgfQorKyAg ICBzZW5kUmVzcG9uc2Uoc3VwcG9ydGVkQWN0aW9ucywgcmVzcG9uc2UpOworIH0KKyAjZW5kaWYg Ly8gUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorIAorQEAgLTI3NywxNCArMjk2LDEwIEBAIHZvaWQg UVdheWxhbmREYXRhRGV2aWNlOjpzZWxlY3Rpb25Tb3VyY2VDYW5jZWxsZWQoKQorICNpZiBRVF9D T05GSUcoZHJhZ2FuZGRyb3ApCisgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRyYWdTb3VyY2VD YW5jZWxsZWQoKQorIHsKKysgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBs aWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+ZmluaXNoRHJh ZygpOworICAgICBtX2RyYWdTb3VyY2UucmVzZXQoKTsKKyB9CisgCistdm9pZCBRV2F5bGFuZERh dGFEZXZpY2U6OmRyYWdTb3VyY2VUYXJnZXRDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBl KQorLXsKKy0gICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblBy aXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+dXBkYXRlVGFyZ2V0KG1pbWVU eXBlKTsKKy19CistCisgUVBvaW50IFFXYXlsYW5kRGF0YURldmljZTo6Y2FsY3VsYXRlRHJhZ1Bv c2l0aW9uKGludCB4LCBpbnQgeSwgUVdpbmRvdyAqd25kKSBjb25zdAorIHsKKyAgICAgUVBvaW50 IHBudCh3bF9maXhlZF90b19pbnQoeCksIHdsX2ZpeGVkX3RvX2ludCh5KSk7CitAQCAtMjk3LDYg KzMxMiwzMyBAQCBRUG9pbnQgUVdheWxhbmREYXRhRGV2aWNlOjpjYWxjdWxhdGVEcmFnUG9zaXRp b24oaW50IHgsIGludCB5LCBRV2luZG93ICp3bmQpIGNvbgorICAgICB9CisgICAgIHJldHVybiBw bnQ7CisgfQorKworK3ZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpzZW5kUmVzcG9uc2UoUXQ6OkRy b3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNl ICZyZXNwb25zZSkKKyt7CisrICAgIGlmIChyZXNwb25zZS5pc0FjY2VwdGVkKCkpIHsKKysgICAg ICAgIGlmICh3bF9kYXRhX2RldmljZV9nZXRfdmVyc2lvbihvYmplY3QoKSkgPj0gMykKKysgICAg ICAgICAgICBtX2RyYWdPZmZlci0+c2V0X2FjdGlvbnMoZHJvcEFjdGlvbnNUb1dsKHN1cHBvcnRl ZEFjdGlvbnMpLCBkcm9wQWN0aW9uc1RvV2wocmVzcG9uc2UuYWNjZXB0ZWRBY3Rpb24oKSkpOwor KworKyAgICAgICAgbV9kcmFnT2ZmZXItPmFjY2VwdChtX2VudGVyU2VyaWFsLCBtX2RyYWdPZmZl ci0+Zmlyc3RGb3JtYXQoKSk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBtX2RyYWdPZmZlci0+ YWNjZXB0KG1fZW50ZXJTZXJpYWwsIFFTdHJpbmcoKSk7CisrICAgIH0KKyt9CisrCisraW50IFFX YXlsYW5kRGF0YURldmljZTo6ZHJvcEFjdGlvbnNUb1dsKFF0OjpEcm9wQWN0aW9ucyBhY3Rpb25z KQorK3sKKysKKysgICAgaW50IHdsQWN0aW9ucyA9IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5E X0FDVElPTl9OT05FOworKyAgICBpZiAoYWN0aW9ucyAmIFF0OjpDb3B5QWN0aW9uKQorKyAgICAg ICAgd2xBY3Rpb25zIHw9IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9DT1BZOwor KyAgICBpZiAoYWN0aW9ucyAmIChRdDo6TW92ZUFjdGlvbiB8IFF0OjpUYXJnZXRNb3ZlQWN0aW9u KSkKKysgICAgICAgIHdsQWN0aW9ucyB8PSBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJ T05fTU9WRTsKKysKKysgICAgLy8gd2F5bGFuZCBkb2VzIG5vdCBzdXBwb3J0IExpbmtBY3Rpb24g YXQgdGhlIHRpbWUgb2Ygd3JpdGluZworKyAgICByZXR1cm4gd2xBY3Rpb25zOworK30KKysKKysK KyAjZW5kaWYgLy8gUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorIAorIH0KK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5oIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlX3AuaAoraW5kZXggMTZjM2FkMjguLjgwMWRjYzJj IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlX3Au aAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlX3AuaAorQEAg LTY0LDYgKzY0LDcgQEAgUVRfUkVRVUlSRV9DT05GSUcod2F5bGFuZF9kYXRhZGV2aWNlKTsKKyBR VF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBjbGFzcyBRTWltZURhdGE7CisrY2xhc3MgUVBsYXRmb3Jt RHJhZ1F0UmVzcG9uc2U7CisgY2xhc3MgUVdpbmRvdzsKKyAKKyBuYW1lc3BhY2UgUXRXYXlsYW5k Q2xpZW50IHsKK0BAIC04OSw3ICs5MCw3IEBAIHB1YmxpYzoKKyAKKyAjaWYgUVRfQ09ORklHKGRy YWdhbmRkcm9wKQorICAgICBRV2F5bGFuZERhdGFPZmZlciAqZHJhZ09mZmVyKCkgY29uc3Q7Cist ICAgIGJvb2wgc3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFFXYXlsYW5kV2luZG93ICpp Y29uKTsKKysgICAgYm9vbCBzdGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUXQ6OkRyb3BB Y3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIFFXYXlsYW5kV2luZG93ICppY29uKTsKKyAgICAgdm9p ZCBjYW5jZWxEcmFnKCk7CisgI2VuZGlmCisgCitAQCAtMTA5LDEzICsxMTAsMTYgQEAgcHJpdmF0 ZSBRX1NMT1RTOgorIAorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgICAgIHZvaWQgZHJh Z1NvdXJjZUNhbmNlbGxlZCgpOworLSAgICB2b2lkIGRyYWdTb3VyY2VUYXJnZXRDaGFuZ2VkKGNv bnN0IFFTdHJpbmcgJm1pbWVUeXBlKTsKKyAjZW5kaWYKKyAKKyBwcml2YXRlOgorICNpZiBRVF9D T05GSUcoZHJhZ2FuZGRyb3ApCisgICAgIFFQb2ludCBjYWxjdWxhdGVEcmFnUG9zaXRpb24oaW50 IHgsIGludCB5LCBRV2luZG93ICp3bmQpIGNvbnN0OworICNlbmRpZgorKyAgICB2b2lkIHNlbmRS ZXNwb25zZShRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgY29uc3QgUVBsYXRmb3Jt RHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKysKKysgICAgc3RhdGljIGludCBkcm9wQWN0aW9u c1RvV2woUXQ6OkRyb3BBY3Rpb25zIGRyb3BBY3Rpb25zKTsKKysKKyAKKyAgICAgUVdheWxhbmRE aXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRyOworICAgICBRV2F5bGFuZElucHV0RGV2aWNlICpt X2lucHV0RGV2aWNlID0gbnVsbHB0cjsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwCitpbmRleCAzNWQ2NzMwNy4uNmRjNGY3N2YgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2Vy LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdl ci5jcHAKK0BAIC01MCw4ICs1MCw4IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIG5hbWVzcGFj ZSBRdFdheWxhbmRDbGllbnQgeworIAorLVFXYXlsYW5kRGF0YURldmljZU1hbmFnZXI6OlFXYXls YW5kRGF0YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCB1aW50MzJfdCBp ZCkKKy0gICAgOiB3bF9kYXRhX2RldmljZV9tYW5hZ2VyKGRpc3BsYXktPndsX3JlZ2lzdHJ5KCks IGlkLCAxKQorK1FXYXlsYW5kRGF0YURldmljZU1hbmFnZXI6OlFXYXlsYW5kRGF0YURldmljZU1h bmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCBpbnQgdmVyc2lvbiwgdWludDMyX3QgaWQp CisrICAgIDogd2xfZGF0YV9kZXZpY2VfbWFuYWdlcihkaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBp ZCwgcU1pbih2ZXJzaW9uLCAzKSkKKyAgICAgLCBtX2Rpc3BsYXkoZGlzcGxheSkKKyB7CisgICAg IC8vIENyZWF0ZSB0cmFuc2ZlciBkZXZpY2VzIGZvciBhbGwgaW5wdXQgZGV2aWNlcy4KK2RpZmYg LS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3Au aCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXJfcC5oCitp bmRleCBiZDA1YzBmYi4uNTEwZDliZTQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlcl9wLmgKK0BAIC02OCw3ICs2OCw3IEBAIGNsYXNz IFFXYXlsYW5kSW5wdXREZXZpY2U7CisgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdh eWxhbmREYXRhRGV2aWNlTWFuYWdlciA6IHB1YmxpYyBRdFdheWxhbmQ6OndsX2RhdGFfZGV2aWNl X21hbmFnZXIKKyB7CisgcHVibGljOgorLSAgICBRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKFFX YXlsYW5kRGlzcGxheSAqZGlzcGxheSwgdWludDMyX3QgaWQpOworKyAgICBRV2F5bGFuZERhdGFE ZXZpY2VNYW5hZ2VyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSwgaW50IHZlcnNpb24sIHVpbnQz Ml90IGlkKTsKKyAgICAgflFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIoKSBvdmVycmlkZTsKKyAK KyAgICAgUVdheWxhbmREYXRhRGV2aWNlICpnZXREYXRhRGV2aWNlKFFXYXlsYW5kSW5wdXREZXZp Y2UgKmlucHV0RGV2aWNlKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRhdGFvZmZlci5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZl ci5jcHAKK2luZGV4IDIyOTdlOGExLi5mZTBlYThjOSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwCitAQCAtODIsNiArODIsMTUgQEAgUU1pbWVEYXRhICpR V2F5bGFuZERhdGFPZmZlcjo6bWltZURhdGEoKQorICAgICByZXR1cm4gbV9taW1lRGF0YS5kYXRh KCk7CisgfQorIAorK1F0OjpEcm9wQWN0aW9ucyBRV2F5bGFuZERhdGFPZmZlcjo6c3VwcG9ydGVk QWN0aW9ucygpIGNvbnN0CisreworKyAgICBpZiAod2xfZGF0YV9vZmZlcl9nZXRfdmVyc2lvbihj b25zdF9jYXN0PDo6d2xfZGF0YV9vZmZlcio+KG9iamVjdCgpKSkgPCAzKSB7CisrICAgICAgICBy ZXR1cm4gUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6Q29weUFjdGlvbjsKKysgICAgfQorKworKyAgICBy ZXR1cm4gbV9zdXBwb3J0ZWRBY3Rpb25zOworK30KKysKKyB2b2lkIFFXYXlsYW5kRGF0YU9mZmVy OjpzdGFydFJlY2VpdmluZyhjb25zdCBRU3RyaW5nICZtaW1lVHlwZSwgaW50IGZkKQorIHsKKyAg ICAgcmVjZWl2ZShtaW1lVHlwZSwgZmQpOworQEAgLTkzLDYgKzEwMiwyMiBAQCB2b2lkIFFXYXls YW5kRGF0YU9mZmVyOjpkYXRhX29mZmVyX29mZmVyKGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSkK KyAgICAgbV9taW1lRGF0YS0+YXBwZW5kRm9ybWF0KG1pbWVfdHlwZSk7CisgfQorIAorK3ZvaWQg UVdheWxhbmREYXRhT2ZmZXI6OmRhdGFfb2ZmZXJfYWN0aW9uKHVpbnQzMl90IGRuZF9hY3Rpb24p CisreworKyAgICBRX1VOVVNFRChkbmRfYWN0aW9uKTsKKysgICAgLy8gVGhpcyBpcyB0aGUgY29t cG9zaXRvciB0ZWxsaW5nIHRoZSBkcmFnIHRhcmdldCB3aGF0IGFjdGlvbiBpdCBzaG91bGQgcGVy Zm9ybQorKyAgICAvLyBJdCBkb2VzIG5vdCBtYXAgbmljZWx5IGludG8gUXQgZmluYWwgZHJvcCBz ZW1hbnRpY3MsIG90aGVyIHRoYW4gcHJldGVuZGluZyB0aGVyZSBpcyBvbmx5IG9uZSBzdXBwb3J0 ZWQgYWN0aW9uPworK30KKysKKyt2b2lkIFFXYXlsYW5kRGF0YU9mZmVyOjpkYXRhX29mZmVyX3Nv dXJjZV9hY3Rpb25zKHVpbnQzMl90IHNvdXJjZV9hY3Rpb25zKQorK3sKKysgICAgbV9zdXBwb3J0 ZWRBY3Rpb25zID0gUXQ6OkRyb3BBY3Rpb25zKCk7CisrICAgIGlmIChzb3VyY2VfYWN0aW9ucyAm IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9NT1ZFKQorKyAgICAgICAgbV9zdXBw b3J0ZWRBY3Rpb25zIHw9IFF0OjpNb3ZlQWN0aW9uOworKyAgICBpZiAoc291cmNlX2FjdGlvbnMg JiBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fQ09QWSkKKysgICAgICAgIG1fc3Vw cG9ydGVkQWN0aW9ucyB8PSBRdDo6Q29weUFjdGlvbjsKKyt9CisrCisgUVdheWxhbmRNaW1lRGF0 YTo6UVdheWxhbmRNaW1lRGF0YShRV2F5bGFuZEFic3RyYWN0RGF0YU9mZmVyICpkYXRhT2ZmZXIp CisgICAgIDogbV9kYXRhT2ZmZXIoZGF0YU9mZmVyKQorIHsKK0BAIC0xNjMsMTcgKzE4OCwxOCBA QCBRVmFyaWFudCBRV2F5bGFuZE1pbWVEYXRhOjpyZXRyaWV2ZURhdGFfc3lzKGNvbnN0IFFTdHJp bmcgJm1pbWVUeXBlLCBRVmFyaWFudDo6VAorIAorIGludCBRV2F5bGFuZE1pbWVEYXRhOjpyZWFk RGF0YShpbnQgZmQsIFFCeXRlQXJyYXkgJmRhdGEpIGNvbnN0CisgeworLSAgICBmZF9zZXQgcmVh ZHNldDsKKy0gICAgRkRfWkVSTygmcmVhZHNldCk7CistICAgIEZEX1NFVChmZCwgJnJlYWRzZXQp OworLSAgICBzdHJ1Y3QgdGltZXZhbCB0aW1lb3V0OworKyAgICBzdHJ1Y3QgcG9sbGZkIHJlYWRz ZXQ7CisrICAgIHJlYWRzZXQuZmQgPSBmZDsKKysgICAgcmVhZHNldC5ldmVudHMgPSBQT0xMSU47 CisrICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lb3V0OworICAgICB0aW1lb3V0LnR2X3NlYyA9IDE7 CistICAgIHRpbWVvdXQudHZfdXNlYyA9IDA7CisrICAgIHRpbWVvdXQudHZfbnNlYyA9IDA7Cisr CisgCisgICAgIFFfRk9SRVZFUiB7CistICAgICAgICBpbnQgcmVhZHkgPSBzZWxlY3QoRkRfU0VU U0laRSwgJnJlYWRzZXQsIG51bGxwdHIsIG51bGxwdHIsICZ0aW1lb3V0KTsKKysgICAgICAgIGlu dCByZWFkeSA9IHF0X3NhZmVfcG9sbCgmcmVhZHNldCwgMSwgJnRpbWVvdXQpOworICAgICAgICAg aWYgKHJlYWR5IDwgMCkgeworLSAgICAgICAgICAgIHFXYXJuaW5nKCkgPDwgIlFXYXlsYW5kRGF0 YU9mZmVyOiBzZWxlY3QoKSBmYWlsZWQiOworKyAgICAgICAgICAgIHFXYXJuaW5nKCkgPDwgIlFX YXlsYW5kRGF0YU9mZmVyOiBxdF9zYWZlX3BvbGwoKSBmYWlsZWQiOworICAgICAgICAgICAgIHJl dHVybiAtMTsKKyAgICAgICAgIH0gZWxzZSBpZiAocmVhZHkgPT0gMCkgeworICAgICAgICAgICAg IHFXYXJuaW5nKCJRV2F5bGFuZERhdGFPZmZlcjogdGltZW91dCByZWFkaW5nIGZyb20gcGlwZSIp OworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyX3Au aCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyX3AuaAoraW5kZXggOWNm MTQ4M2MuLjZmNjY3Mzk4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRkYXRhb2ZmZXJfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFv ZmZlcl9wLmgKK0BAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKKyAgICAgZXhwbGljaXQgUVdheWxh bmREYXRhT2ZmZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCBzdHJ1Y3QgOjp3bF9kYXRhX29m ZmVyICpvZmZlcik7CisgICAgIH5RV2F5bGFuZERhdGFPZmZlcigpIG92ZXJyaWRlOworICAgICBR TWltZURhdGEgKm1pbWVEYXRhKCkgb3ZlcnJpZGU7CisrICAgIFF0OjpEcm9wQWN0aW9ucyBzdXBw b3J0ZWRBY3Rpb25zKCkgY29uc3Q7CisgCisgICAgIFFTdHJpbmcgZmlyc3RGb3JtYXQoKSBjb25z dDsKKyAKK0BAIC04OSwxMCArOTAsMTMgQEAgcHVibGljOgorIAorIHByb3RlY3RlZDoKKyAgICAg dm9pZCBkYXRhX29mZmVyX29mZmVyKGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSkgb3ZlcnJpZGU7 CisrICAgIHZvaWQgZGF0YV9vZmZlcl9zb3VyY2VfYWN0aW9ucyh1aW50MzJfdCBzb3VyY2VfYWN0 aW9ucykgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9vZmZlcl9hY3Rpb24odWludDMyX3QgZG5k X2FjdGlvbikgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAgICAgUVdheWxhbmREaXNwbGF5ICpt X2Rpc3BsYXkgPSBudWxscHRyOworICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFuZE1pbWVEYXRh PiBtX21pbWVEYXRhOworKyAgICBRdDo6RHJvcEFjdGlvbnMgbV9zdXBwb3J0ZWRBY3Rpb25zOwor IH07CisgCisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRh c291cmNlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZS5jcHAK K2luZGV4IGY0NTEyMmZiLi41NTk5Y2JkNCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZGF0YXNvdXJjZS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kZGF0YXNvdXJjZS5jcHAKK0BAIC0xMDEsNyArMTAxLDMyIEBAIHZvaWQgUVdheWxhbmRE YXRhU291cmNlOjpkYXRhX3NvdXJjZV9zZW5kKGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSwgaW50 MzJfdCBmZCkKKyAKKyB2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0YV9zb3VyY2VfdGFyZ2V0 KGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSkKKyB7CistICAgIFFfRU1JVCB0YXJnZXRDaGFuZ2Vk KG1pbWVfdHlwZSk7CisrICAgIG1fYWNjZXB0ZWQgPSAhbWltZV90eXBlLmlzRW1wdHkoKTsKKysg ICAgUV9FTUlUIGRuZFJlc3BvbnNlVXBkYXRlZChtX2FjY2VwdGVkLCBtX2Ryb3BBY3Rpb24pOwor K30KKysKKyt2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0YV9zb3VyY2VfYWN0aW9uKHVpbnQz Ml90IGFjdGlvbikKKyt7CisrICAgIFF0OjpEcm9wQWN0aW9uIHF0QWN0aW9uID0gUXQ6Oklnbm9y ZUFjdGlvbjsKKysKKysgICAgaWYgKGFjdGlvbiA9PSBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RO RF9BQ1RJT05fTU9WRSkKKysgICAgICAgIHF0QWN0aW9uID0gUXQ6Ok1vdmVBY3Rpb247CisrICAg IGVsc2UgaWYgKGFjdGlvbiA9PSBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fQ09Q WSkKKysgICAgICAgIHF0QWN0aW9uID0gUXQ6OkNvcHlBY3Rpb247CisrCisrICAgIG1fZHJvcEFj dGlvbiA9IHF0QWN0aW9uOworKyAgICBRX0VNSVQgZG5kUmVzcG9uc2VVcGRhdGVkKG1fYWNjZXB0 ZWQsIG1fZHJvcEFjdGlvbik7CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRh X3NvdXJjZV9kbmRfZmluaXNoZWQoKQorK3sKKysgICAgUV9FTUlUIGZpbmlzaGVkKCk7CisrfQor KworK3ZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV9kbmRfZHJvcF9wZXJmb3Jt ZWQoKQorK3sKKysKKysgICAgUV9FTUlUIGRuZERyb3BwZWQobV9hY2NlcHRlZCwgbV9kcm9wQWN0 aW9uKTsKKyB9CisgCisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGF0YXNvdXJjZV9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3Vy Y2VfcC5oCitpbmRleCAyNWFmZmY3OS4uOTZmMDdiYzMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2VfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGRhdGFzb3VyY2VfcC5oCitAQCAtNzcsMTcgKzc3LDI1IEBAIHB1YmxpYzoK KyAgICAgUU1pbWVEYXRhICptaW1lRGF0YSgpIGNvbnN0OworIAorIFFfU0lHTkFMUzoKKy0gICAg dm9pZCB0YXJnZXRDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSk7CisgICAgIHZvaWQg Y2FuY2VsbGVkKCk7CisrICAgIHZvaWQgZmluaXNoZWQoKTsKKysKKysgICAgdm9pZCBkbmRSZXNw b25zZVVwZGF0ZWQoYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uKTsKKysgICAg dm9pZCBkbmREcm9wcGVkKGJvb2wgYWNjZXB0ZWQsIFF0OjpEcm9wQWN0aW9uIGFjdGlvbik7Cisg CisgcHJvdGVjdGVkOgorICAgICB2b2lkIGRhdGFfc291cmNlX2NhbmNlbGxlZCgpIG92ZXJyaWRl OworICAgICB2b2lkIGRhdGFfc291cmNlX3NlbmQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlLCBp bnQzMl90IGZkKSBvdmVycmlkZTsKKyAgICAgdm9pZCBkYXRhX3NvdXJjZV90YXJnZXQoY29uc3Qg UVN0cmluZyAmbWltZV90eXBlKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRhX3NvdXJjZV9kbmRf ZHJvcF9wZXJmb3JtZWQoKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRhX3NvdXJjZV9kbmRfZmlu aXNoZWQoKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRhX3NvdXJjZV9hY3Rpb24odWludDMyX3Qg YWN0aW9uKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFuZERpc3BsYXkgKm1f ZGlzcGxheSA9IG51bGxwdHI7CisgICAgIFFNaW1lRGF0YSAqbV9taW1lX2RhdGEgPSBudWxscHRy OworKyAgICBib29sIG1fYWNjZXB0ZWQgPSBmYWxzZTsKKysgICAgUXQ6OkRyb3BBY3Rpb24gbV9k cm9wQWN0aW9uID0gUXQ6Oklnbm9yZUFjdGlvbjsKKyB9OworIAorIH0KK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwIGIvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkaXNwbGF5LmNwcAoraW5kZXggZjEwYzFmNzkuLmMwMWUyMzhiIDEwMDY0 NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5LmNwcAorKysrIGIv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5LmNwcAorQEAgLTg1LDEwICs4NSwy MDMgQEAKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAKKysjaW5jbHVkZSA8dHVwbGU+IC8vIGZv ciBzdGQ6OnRpZQorKworK3N0YXRpYyB2b2lkIGNoZWNrV2F5bGFuZEVycm9yKHN0cnVjdCB3bF9k aXNwbGF5ICpkaXNwbGF5KQorK3sKKysgICAgaW50IGVjb2RlID0gd2xfZGlzcGxheV9nZXRfZXJy b3IoZGlzcGxheSk7CisrICAgIGlmICgoZWNvZGUgPT0gRVBJUEUgfHwgZWNvZGUgPT0gRUNPTk5S RVNFVCkpIHsKKysgICAgICAgIC8vIHNwZWNpYWwgY2FzZSB0aGlzIHRvIHByb3ZpZGUgYSBuaWNl ciBlcnJvcgorKyAgICAgICAgcVdhcm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24gYnJva2Uu IERpZCB0aGUgV2F5bGFuZCBjb21wb3NpdG9yIGRpZT8iKTsKKysgICAgfSBlbHNlIHsKKysgICAg ICAgIHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBjb25uZWN0aW9uIGV4cGVyaWVuY2VkIGEgZmF0YWwg ZXJyb3I6ICVzIiwgc3RyZXJyb3IoZWNvZGUpKTsKKysgICAgfQorKyAgICBfZXhpdCgxKTsKKyt9 CisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudCB7 CisgCisrY2xhc3MgRXZlbnRUaHJlYWQgOiBwdWJsaWMgUVRocmVhZAorK3sKKysgICAgUV9PQkpF Q1QKKytwdWJsaWM6CisrICAgIGVudW0gT3BlcmF0aW5nTW9kZSB7CisrICAgICAgICBFbWl0VG9E aXNwYXRjaCwgLy8gRW1pdCB0aGUgc2lnbmFsLCBhbGxvdyBkaXNwYXRjaGluZyBpbiBhIGRpZmZl cm50IHRocmVhZC4KKysgICAgICAgIFNlbGZEaXNwYXRjaCwgLy8gRGlzcGF0Y2ggdGhlIGV2ZW50 cyBpbnNpZGUgdGhpcyB0aHJlYWQuCisrICAgIH07CisrCisrICAgIEV2ZW50VGhyZWFkKHN0cnVj dCB3bF9kaXNwbGF5ICogd2wsIHN0cnVjdCB3bF9ldmVudF9xdWV1ZSAqIGV2X3F1ZXVlLAorKyAg ICAgICAgICAgICAgICBPcGVyYXRpbmdNb2RlIG1vZGUpCisrICAgICAgICA6IG1fZmQod2xfZGlz cGxheV9nZXRfZmQod2wpKQorKyAgICAgICAgLCBtX3BpcGVmZHsgLTEsIC0xIH0KKysgICAgICAg ICwgbV93bGRpc3BsYXkod2wpCisrICAgICAgICAsIG1fd2xldnF1ZXVlKGV2X3F1ZXVlKQorKyAg ICAgICAgLCBtX21vZGUobW9kZSkKKysgICAgICAgICwgbV9yZWFkaW5nKHRydWUpCisrICAgICAg ICAsIG1fcXVpdHRpbmcoZmFsc2UpCisrICAgIHsKKysgICAgICAgIHNldE9iamVjdE5hbWUoUVN0 cmluZ0xpdGVyYWwoIldheWxhbmRFdmVudFRocmVhZCIpKTsKKysgICAgfQorKworKyAgICB2b2lk IHJlYWRBbmREaXNwYXRjaEV2ZW50cygpCisrICAgIHsKKysgICAgICAgIC8qCisrICAgICAgICAg KiBEaXNwYXRjaCBwZW5kaW5nIGV2ZW50cyBhbmQgZmx1c2ggdGhlIHJlcXVlc3RzIGF0IGxlYXN0 IG9uY2UuIElmIHRoZSBldmVudCB0aHJlYWQKKysgICAgICAgICAqIGlzIG5vdCByZWFkaW5nLCB0 cnkgdG8gY2FsbCBfcHJlcGFyZV9yZWFkKCkgdG8gYWxsb3cgdGhlIGV2ZW50IHRocmVhZCB0byBw b2xsKCkuCisrICAgICAgICAgKiBJZiB0aGF0IGZhaWxzLCByZS10cnkgZGlzcGF0Y2ggJiBmbHVz aCBhZ2FpbiB1bnRpbCBfcHJlcGFyZV9yZWFkKCkgaXMgc3VjY2Vzc2Z1bC4KKysgICAgICAgICAq CisrICAgICAgICAgKiBUaGlzIGFsbG93IGFueSBjYWxsIHRvIHJlYWRBbmREaXNwYXRjaEV2ZW50 cygpIHRvIHN0YXJ0IGV2ZW50IHRocmVhZCdzIHBvbGxpbmcsCisrICAgICAgICAgKiBub3Qgb25s eSB0aGUgb25lIGlzc3VlZCBmcm9tIGV2ZW50IHRocmVhZCdzIHdhaXRGb3JSZWFkaW5nKCksIHdo aWNoIG1lYW5zIGZ1bmN0aW9ucworKyAgICAgICAgICogY2FsbGVkIGZyb20gZGlzcGF0Y2hfcGVu ZGluZygpIGNhbiBzYWZlbHkgc3BpbiBhbiBldmVudCBsb29wLgorKyAgICAgICAgICovCisrICAg ICAgICBmb3IgKDs7KSB7CisrICAgICAgICAgICAgaWYgKGRpc3BhdGNoUXVldWVQZW5kaW5nKCkg PCAwKSB7CisrICAgICAgICAgICAgICAgIGNoZWNrV2F5bGFuZEVycm9yKG1fd2xkaXNwbGF5KTsK KysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAg ICB3bF9kaXNwbGF5X2ZsdXNoKG1fd2xkaXNwbGF5KTsKKysKKysgICAgICAgICAgICAvLyBXZSBo YXZlIHRvIGNoZWNrIGlmIGV2ZW50IHRocmVhZCBpcyByZWFkaW5nIGV2ZXJ5IHRpbWUgd2UgZGlz cGF0Y2gKKysgICAgICAgICAgICAvLyBzb21ldGhpbmcsIGFzIHRoYXQgbWF5IHJlY3Vyc2l2ZWx5 IGNhbGwgdGhpcyBmdW5jdGlvbi4KKysgICAgICAgICAgICBpZiAobV9yZWFkaW5nLmxvYWRBY3F1 aXJlKCkpCisrICAgICAgICAgICAgICAgIGJyZWFrOworKworKyAgICAgICAgICAgIGlmIChwcmVw YXJlUmVhZFF1ZXVlKCkgPT0gMCkgeworKyAgICAgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbCgm bV9tdXRleCk7CisrICAgICAgICAgICAgICAgIG1fcmVhZGluZy5zdG9yZVJlbGVhc2UodHJ1ZSk7 CisrICAgICAgICAgICAgICAgIG1fY29uZC53YWtlT25lKCk7CisrICAgICAgICAgICAgICAgIGJy ZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgfQorKworKyAgICB2b2lkIHN0 b3AoKQorKyAgICB7CisrICAgICAgICAvLyBXZSBoYXZlIHRvIGJvdGggd3JpdGUgdG8gdGhlIHBp cGUgYW5kIHNldCB0aGUgZmxhZywgYXMgdGhlIHRocmVhZCBtYXkgYmUKKysgICAgICAgIC8vIGVp dGhlciBpbiB0aGUgcG9sbCgpIG9yIHdhaXRpbmcgZm9yIF9wcmVwYXJlX3JlYWQoKS4KKysgICAg ICAgIGlmIChtX3BpcGVmZFsxXSAhPSAtMSAmJiB3cml0ZShtX3BpcGVmZFsxXSwgIlwwIiwgMSkg PT0gLTEpCisrICAgICAgICAgICAgcVdhcm5pbmcoIkZhaWxlZCB0byB3cml0ZSB0byB0aGUgcGlw ZTogJXMuIiwgc3RyZXJyb3IoZXJybm8pKTsKKysKKysgICAgICAgIHsKKysgICAgICAgICAgICBR TXV0ZXhMb2NrZXIgbCgmbV9tdXRleCk7CisrICAgICAgICAgICAgbV9xdWl0dGluZyA9IHRydWU7 CisrICAgICAgICAgICAgbV9jb25kLndha2VPbmUoKTsKKysgICAgICAgIH0KKysKKysgICAgICAg IHdhaXQoKTsKKysgICAgfQorKworK1FfU0lHTkFMUzoKKysgICAgdm9pZCBuZWVkUmVhZEFuZERp c3BhdGNoKCk7CisrCisrcHJvdGVjdGVkOgorKyAgICB2b2lkIHJ1bigpIG92ZXJyaWRlCisrICAg IHsKKysgICAgICAgIC8vIHdlIHVzZSB0aGlzIHBpcGUgdG8gbWFrZSB0aGUgbG9vcCBleGl0IG90 aGVyd2lzZSBpZiB3ZSBzaW1wbHkgdXNlZCBhIGZsYWcgb24gdGhlIGxvb3AgY29uZGl0aW9uLCBp ZiBzdG9wKCkgZ2V0cworKyAgICAgICAgLy8gY2FsbGVkIHdoaWxlIHBvbGwoKSBpcyBibG9ja2lu ZyB0aGUgdGhyZWFkIHdpbGwgbmV2ZXIgcXVpdCBzaW5jZSB0aGVyZSBhcmUgbm8gd2F5bGFuZCBt ZXNzYWdlcyBjb21pbmcgYW55bW9yZS4KKysgICAgICAgIHN0cnVjdCBQaXBlCisrICAgICAgICB7 CisrICAgICAgICAgICAgUGlwZShpbnQgKmZkcykKKysgICAgICAgICAgICAgICAgOiBmZHMoZmRz KQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgaWYgKHF0X3NhZmVfcGlwZShmZHMp ICE9IDApCisrICAgICAgICAgICAgICAgICAgICBxV2FybmluZygiUGlwZSBjcmVhdGlvbiBmYWls ZWQuIFF1aXR0aW5nIG1heSBoYW5nLiIpOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICB+ UGlwZSgpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBpZiAoZmRzWzBdICE9IC0x KSB7CisrICAgICAgICAgICAgICAgICAgICBjbG9zZShmZHNbMF0pOworKyAgICAgICAgICAgICAg ICAgICAgY2xvc2UoZmRzWzFdKTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0K KysKKysgICAgICAgICAgICBpbnQgKmZkczsKKysgICAgICAgIH0gcGlwZShtX3BpcGVmZCk7Cisr CisrICAgICAgICAvLyBNYWtlIHRoZSBtYWluIHRocmVhZCBjYWxsIHdsX3ByZXBhcmVfcmVhZCgp LCBkaXNwYXRjaCB0aGUgcGVuZGluZyBtZXNzYWdlcyBhbmQgZmx1c2ggdGhlCisrICAgICAgICAv LyBvdXRib3VuZCBvbmVzLiBXYWl0IHVudGlsIGl0J3MgZG9uZSBiZWZvcmUgcHJvY2VlZGluZywg dW5sZXNzIHdlJ3JlIHRvbGQgdG8gcXVpdC4KKysgICAgICAgIHdoaWxlICh3YWl0Rm9yUmVhZGlu ZygpKSB7CisrICAgICAgICAgICAgcG9sbGZkIGZkc1syXSA9IHsgeyBtX2ZkLCBQT0xMSU4sIDAg fSwgeyBtX3BpcGVmZFswXSwgUE9MTElOLCAwIH0gfTsKKysgICAgICAgICAgICBwb2xsKGZkcywg MiwgLTEpOworKworKyAgICAgICAgICAgIGlmIChmZHNbMV0ucmV2ZW50cyAmIFBPTExJTikgewor KyAgICAgICAgICAgICAgICAvLyB3ZSBkb24ndCByZWFsbHkgY2FyZSB0byByZWFkIHRoZSBieXRl IHRoYXQgd2FzIHdyaXR0ZW4gaGVyZSBzaW5jZSB3ZSdyZSBjbG9zaW5nIGRvd24KKysgICAgICAg ICAgICAgICAgd2xfZGlzcGxheV9jYW5jZWxfcmVhZChtX3dsZGlzcGxheSk7CisrICAgICAgICAg ICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBpZiAoZmRzWzBd LnJldmVudHMgJiBQT0xMSU4pCisrICAgICAgICAgICAgICAgIHdsX2Rpc3BsYXlfcmVhZF9ldmVu dHMobV93bGRpc3BsYXkpOworKyAgICAgICAgICAgICAgICAvLyBUaGUgcG9sbGwgd2FzIHN1Y2Nl c2Z1bGwgYW5kIHRoZSBldmVudCB0aHJlYWQgZGlkIHRoZSB3bF9kaXNwbGF5X3JlYWRfZXZlbnRz KCkuIE9uIHRoZSBuZXh0IGl0ZXJhdGlvbiBvZiB0aGUgbG9vcAorKyAgICAgICAgICAgICAgICAv LyB0aGUgZXZlbnQgc2VudCB0byB0aGUgbWFpbiB0aHJlYWQgd2lsbCBjYXVzZSBpdCB0byBkaXNw YXRjaCB0aGUgbWVzc2FnZXMganVzdCByZWFkLCB1bmxlc3MgdGhlIGxvb3AgZXhpdHMgaW4gd2hp Y2gKKysgICAgICAgICAgICAgICAgLy8gY2FzZSB3ZSBkb24ndCBjYXJlIGFueW1vcmUgYWJvdXQg dGhlbS4KKysgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgICAgIHdsX2Rpc3BsYXlfY2Fu Y2VsX3JlYWQobV93bGRpc3BsYXkpOworKyAgICAgICAgfQorKyAgICB9CisrCisrcHJpdmF0ZToK KysgICAgYm9vbCB3YWl0Rm9yUmVhZGluZygpCisrICAgIHsKKysgICAgICAgIFFfQVNTRVJUKFFU aHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSA9PSB0aGlzKTsKKysKKysgICAgICAgIG1fcmVhZGluZy5z dG9yZVJlbGVhc2UoZmFsc2UpOworKworKyAgICAgICAgaWYgKG1fbW9kZSA9PSBTZWxmRGlzcGF0 Y2gpIHsKKysgICAgICAgICAgICByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKTsKKysgICAgICAgIH0g ZWxzZSB7CisrICAgICAgICAgICAgUV9FTUlUIG5lZWRSZWFkQW5kRGlzcGF0Y2goKTsKKysKKysg ICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9jaygmbV9tdXRleCk7CisrICAgICAgICAgICAgLy8g bV9yZWFkaW5nIG1pZ2h0IGJlIHNldCBmcm9tIG91ciBlbWl0IG9yIHNvbWUgb3RoZXIgaW52b2Nh dGlvbiBvZgorKyAgICAgICAgICAgIC8vIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpLgorKyAgICAg ICAgICAgIHdoaWxlICghbV9yZWFkaW5nLmxvYWRSZWxheGVkKCkgJiYgIW1fcXVpdHRpbmcpCisr ICAgICAgICAgICAgICAgIG1fY29uZC53YWl0KCZtX211dGV4KTsKKysgICAgICAgIH0KKysKKysg ICAgICAgIHJldHVybiAhbV9xdWl0dGluZzsKKysgICAgfQorKworKyAgICBpbnQgZGlzcGF0Y2hR dWV1ZVBlbmRpbmcoKQorKyAgICB7CisrICAgICAgICBpZiAobV93bGV2cXVldWUpCisrICAgICAg ICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVuZGluZyhtX3dsZGlzcGxh eSwgbV93bGV2cXVldWUpOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIHJldHVybiB3bF9k aXNwbGF5X2Rpc3BhdGNoX3BlbmRpbmcobV93bGRpc3BsYXkpOworKyAgICB9CisrCisrICAgIGlu dCBwcmVwYXJlUmVhZFF1ZXVlKCkKKysgICAgeworKyAgICAgICAgaWYgKG1fd2xldnF1ZXVlKQor KyAgICAgICAgICAgIHJldHVybiB3bF9kaXNwbGF5X3ByZXBhcmVfcmVhZF9xdWV1ZShtX3dsZGlz cGxheSwgbV93bGV2cXVldWUpOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIHJldHVybiB3 bF9kaXNwbGF5X3ByZXBhcmVfcmVhZChtX3dsZGlzcGxheSk7CisrICAgIH0KKysKKysgICAgaW50 IG1fZmQ7CisrICAgIGludCBtX3BpcGVmZFsyXTsKKysgICAgd2xfZGlzcGxheSAqbV93bGRpc3Bs YXk7CisrICAgIHdsX2V2ZW50X3F1ZXVlICptX3dsZXZxdWV1ZTsKKysgICAgT3BlcmF0aW5nTW9k ZSBtX21vZGU7CisrCisrICAgIC8qIENvbmN1cnJlbmN5IG5vdGUgd2hlbiBvcGVyYXRpbmcgaW4g RW1pdFRvRGlzcGF0Y2ggbW9kZToKKysgICAgICogbV9yZWFkaW5nIGlzIHNldCB0byBmYWxzZSBp bnNpZGUgZXZlbnQgdGhyZWFkJ3Mgd2FpdEZvclJlYWRpbmcoKSwgYW5kIGlzCisrICAgICAqIHNl dCB0byB0cnVlIGluc2lkZSBtYWluIHRocmVhZCdzIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpLgor KyAgICAgKiBUaGUgbG9jayBpcyBub3QgdGFrZW4gd2hlbiBzZXR0aW5nIG1fcmVhZGluZyB0byBm YWxzZSwgYXMgdGhlIG1haW4gdGhyZWFkCisrICAgICAqIGlzIG5vdCBhY3RpdmVseSB3YWl0aW5n IGZvciBpdCB0byB0dXJuIGZhbHNlLiBIb3dldmVyLCB0aGUgbG9jayBpcyB0YWtlbgorKyAgICAg KiBpbnNpZGUgcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkgYmVmb3JlIHNldHRpbmcgbV9yZWFkaW5n IHRvIHRydWUsCisrICAgICAqIGFzIHRoZSBldmVudCB0aHJlYWQgaXMgYWN0aXZlbHkgd2FpdGlu ZyBmb3IgaXQgdW5kZXIgdGhlIHdhaXQgY29uZGl0aW9uLgorKyAgICAgKi8KKysKKysgICAgUUF0 b21pY0ludGVnZXI8Ym9vbD4gbV9yZWFkaW5nOworKyAgICBib29sIG1fcXVpdHRpbmc7CisrICAg IFFNdXRleCBtX211dGV4OworKyAgICBRV2FpdENvbmRpdGlvbiBtX2NvbmQ7CisrfTsKKysKKyBR X0xPR0dJTkdfQ0FURUdPUlkobGNRcGFXYXlsYW5kLCAicXQucXBhLndheWxhbmQiKTsgLy8gZm9y IGdlbmVyYWwgKHVuY2F0ZWdvcml6ZWQpIFdheWxhbmQgcGxhdGZvcm0gbG9nZ2luZworIAorIHN0 cnVjdCB3bF9zdXJmYWNlICpRV2F5bGFuZERpc3BsYXk6OmNyZWF0ZVN1cmZhY2Uodm9pZCAqaGFu ZGxlKQorQEAgLTE1OCwxNyArMzUxLDE2IEBAIFFXYXlsYW5kRGlzcGxheTo6UVdheWxhbmREaXNw bGF5KFFXYXlsYW5kSW50ZWdyYXRpb24gKndheWxhbmRJbnRlZ3JhdGlvbikKKyAgICAgaWYgKCFt WGtiQ29udGV4dCkKKyAgICAgICAgIHFDV2FybmluZyhsY1FwYVdheWxhbmQsICJmYWlsZWQgdG8g Y3JlYXRlIHhrYiBjb250ZXh0Iik7CisgI2VuZGlmCistCistICAgIGZvcmNlUm91bmRUcmlwKCk7 CistCistICAgIGlmICghbVdhaXRpbmdTY3JlZW5zLmlzRW1wdHkoKSkgeworLSAgICAgICAgLy8g R2l2ZSB3bF9vdXRwdXQuZG9uZSBhbmQgenhkZ19vdXRwdXRfdjEuZG9uZSBldmVudHMgYSBjaGFu Y2UgdG8gYXJyaXZlCistICAgICAgICBmb3JjZVJvdW5kVHJpcCgpOworLSAgICB9CisgfQorIAor IFFXYXlsYW5kRGlzcGxheTo6flFXYXlsYW5kRGlzcGxheSh2b2lkKQorIHsKKysgICAgaWYgKG1f ZXZlbnRUaHJlYWQpCisrICAgICAgICBtX2V2ZW50VGhyZWFkLT5zdG9wKCk7CisrCisrICAgIGlm IChtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZCkKKysgICAgICAgIG1fZnJhbWVFdmVudFF1ZXVlVGhy ZWFkLT5zdG9wKCk7CisrCisgICAgIGlmIChtU3luY0NhbGxiYWNrKQorICAgICAgICAgd2xfY2Fs bGJhY2tfZGVzdHJveShtU3luY0NhbGxiYWNrKTsKKyAKK0BAIC0xODcsNiArMzc5LDIxIEBAIFFX YXlsYW5kRGlzcGxheTo6flFXYXlsYW5kRGlzcGxheSh2b2lkKQorICNlbmRpZgorICAgICBpZiAo bURpc3BsYXkpCisgICAgICAgICB3bF9kaXNwbGF5X2Rpc2Nvbm5lY3QobURpc3BsYXkpOworKwor KyAgICBpZiAobV9mcmFtZUV2ZW50UXVldWUpCisrICAgICAgICB3bF9ldmVudF9xdWV1ZV9kZXN0 cm95KG1fZnJhbWVFdmVudFF1ZXVlKTsKKyt9CisrCisrLy8gU3RlcHMgd2hpY2ggaXMgY2FsbGVk IGp1c3QgYWZ0ZXIgY29uc3RydWN0b3IuIFRoaXMgc2VwYXJhdGVzIHJlZ2lzdHJ5X2dsb2JhbCgp IG91dCBvZiB0aGUgY29uc3RydWN0b3IKKysvLyBzbyB0aGF0IGZhY3RvcnkgZnVuY3Rpb25zIGlu IGludGVncmF0aW9uIGNhbiBiZSBvdmVycmlkZGVuLgorK3ZvaWQgUVdheWxhbmREaXNwbGF5Ojpp bml0aWFsaXplKCkKKyt7CisrICAgIGZvcmNlUm91bmRUcmlwKCk7CisrCisrICAgIGlmICghbVdh aXRpbmdTY3JlZW5zLmlzRW1wdHkoKSkgeworKyAgICAgICAgLy8gR2l2ZSB3bF9vdXRwdXQuZG9u ZSBhbmQgenhkZ19vdXRwdXRfdjEuZG9uZSBldmVudHMgYSBjaGFuY2UgdG8gYXJyaXZlCisrICAg ICAgICBmb3JjZVJvdW5kVHJpcCgpOworKyAgICB9CisgfQorIAorIHZvaWQgUVdheWxhbmREaXNw bGF5OjplbnN1cmVTY3JlZW4oKQorQEAgLTIwMyw5OCArNDEwLDM3IEBAIHZvaWQgUVdheWxhbmRE aXNwbGF5OjplbnN1cmVTY3JlZW4oKQorIAorIHZvaWQgUVdheWxhbmREaXNwbGF5OjpjaGVja0Vy cm9yKCkgY29uc3QKKyB7CistICAgIGludCBlY29kZSA9IHdsX2Rpc3BsYXlfZ2V0X2Vycm9yKG1E aXNwbGF5KTsKKy0gICAgaWYgKChlY29kZSA9PSBFUElQRSB8fCBlY29kZSA9PSBFQ09OTlJFU0VU KSkgeworLSAgICAgICAgLy8gc3BlY2lhbCBjYXNlIHRoaXMgdG8gcHJvdmlkZSBhIG5pY2VyIGVy cm9yCistICAgICAgICBxV2FybmluZygiVGhlIFdheWxhbmQgY29ubmVjdGlvbiBicm9rZS4gRGlk IHRoZSBXYXlsYW5kIGNvbXBvc2l0b3IgZGllPyIpOworLSAgICB9IGVsc2UgeworLSAgICAgICAg cVdhcm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24gZXhwZXJpZW5jZWQgYSBmYXRhbCBlcnJv cjogJXMiLCBzdHJlcnJvcihlY29kZSkpOworLSAgICB9CistICAgIF9leGl0KDEpOworKyAgICBj aGVja1dheWxhbmRFcnJvcihtRGlzcGxheSk7CisgfQorIAorKy8vIENhbGxlZCBpbiBtYWluIHRo cmVhZCwgZWl0aGVyIGZyb20gcXVldWVkIHNpZ25hbCBvciBkaXJlY3RseS4KKyB2b2lkIFFXYXls YW5kRGlzcGxheTo6Zmx1c2hSZXF1ZXN0cygpCisgeworLSAgICBpZiAod2xfZGlzcGxheV9wcmVw YXJlX3JlYWQobURpc3BsYXkpID09IDApIHsKKy0gICAgICAgIHdsX2Rpc3BsYXlfcmVhZF9ldmVu dHMobURpc3BsYXkpOworLSAgICB9CistCistICAgIGlmICh3bF9kaXNwbGF5X2Rpc3BhdGNoX3Bl bmRpbmcobURpc3BsYXkpIDwgMCkKKy0gICAgICAgIGNoZWNrRXJyb3IoKTsKKy0KKy0gICAgewor LSAgICAgICAgUVJlYWRMb2NrZXIgbG9ja2VyKCZtX2ZyYW1lUXVldWVMb2NrKTsKKy0gICAgICAg IGZvciAoY29uc3QgRnJhbWVRdWV1ZSAmcSA6IG1FeHRlcm5hbFF1ZXVlcykgeworLSAgICAgICAg ICAgIFFNdXRleExvY2tlciBsb2NrZXIocS5tdXRleCk7CistICAgICAgICAgICAgd2hpbGUgKHds X2Rpc3BsYXlfcHJlcGFyZV9yZWFkX3F1ZXVlKG1EaXNwbGF5LCBxLnF1ZXVlKSAhPSAwKQorLSAg ICAgICAgICAgICAgICB3bF9kaXNwbGF5X2Rpc3BhdGNoX3F1ZXVlX3BlbmRpbmcobURpc3BsYXks IHEucXVldWUpOworLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMobURpc3BsYXkp OworLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVuZGluZyhtRGlzcGxh eSwgcS5xdWV1ZSk7CistICAgICAgICB9CistICAgIH0KKy0KKy0gICAgd2xfZGlzcGxheV9mbHVz aChtRGlzcGxheSk7CistfQorLQorLXZvaWQgUVdheWxhbmREaXNwbGF5OjpibG9ja2luZ1JlYWRF dmVudHMoKQorLXsKKy0gICAgaWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2gobURpc3BsYXkpIDwgMCkK Ky0gICAgICAgIGNoZWNrRXJyb3IoKTsKKy19CistCistdm9pZCBRV2F5bGFuZERpc3BsYXk6OmRl c3Ryb3lGcmFtZVF1ZXVlKGNvbnN0IFFXYXlsYW5kRGlzcGxheTo6RnJhbWVRdWV1ZSAmcSkKKy17 CistICAgIFFXcml0ZUxvY2tlciBsb2NrZXIoJm1fZnJhbWVRdWV1ZUxvY2spOworLSAgICBhdXRv IGl0ID0gc3RkOjpmaW5kX2lmKG1FeHRlcm5hbFF1ZXVlcy5iZWdpbigpLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1FeHRlcm5hbFF1ZXVlcy5lbmQoKSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICBbJnFdIChjb25zdCBRV2F5bGFuZERpc3BsYXk6OkZyYW1lUXVldWUgJm90aGVy KXsgcmV0dXJuIG90aGVyLnF1ZXVlID09IHEucXVldWU7IH0pOworLSAgICBRX0FTU0VSVChpdCAh PSBtRXh0ZXJuYWxRdWV1ZXMuZW5kKCkpOworLSAgICBtRXh0ZXJuYWxRdWV1ZXMuZXJhc2UoaXQp OworLSAgICBpZiAocS5xdWV1ZSAhPSBudWxscHRyKQorLSAgICAgICAgd2xfZXZlbnRfcXVldWVf ZGVzdHJveShxLnF1ZXVlKTsKKy0gICAgZGVsZXRlIHEubXV0ZXg7CisrICAgIG1fZXZlbnRUaHJl YWQtPnJlYWRBbmREaXNwYXRjaEV2ZW50cygpOworIH0KKyAKKy1RV2F5bGFuZERpc3BsYXk6OkZy YW1lUXVldWUgUVdheWxhbmREaXNwbGF5OjpjcmVhdGVGcmFtZVF1ZXVlKCkKKysvLyBXZSBoYXZl IHRvIHdhaXQgdW50aWwgd2UgaGF2ZSBhbiBldmVudERpc3BhdGNoZXIgYmVmb3JlIGNyZWF0aW5n IHRoZSBldmVudFRocmVhZCwKKysvLyBvdGhlcndpc2UgZm9yY2VSb3VuZFRyaXAoKSBtYXkgYmxv Y2sgaW5zaWRlIF9ldmVudHNfcmVhZCgpIGJlY2F1c2UgZXZlbnRUaHJlYWQgaXMKKysvLyBwb2xs aW5nLgorK3ZvaWQgUVdheWxhbmREaXNwbGF5Ojppbml0RXZlbnRUaHJlYWQoKQorIHsKKy0gICAg UVdyaXRlTG9ja2VyIGxvY2tlcigmbV9mcmFtZVF1ZXVlTG9jayk7CistICAgIEZyYW1lUXVldWUg cXtjcmVhdGVFdmVudFF1ZXVlKCl9OworLSAgICBtRXh0ZXJuYWxRdWV1ZXMuYXBwZW5kKHEpOwor LSAgICByZXR1cm4gcTsKKy19CisrICAgIG1fZXZlbnRUaHJlYWQucmVzZXQoCisrICAgICAgICAg ICAgbmV3IEV2ZW50VGhyZWFkKG1EaXNwbGF5LCAvKiBkZWZhdWx0IHF1ZXVlICovIG51bGxwdHIs IEV2ZW50VGhyZWFkOjpFbWl0VG9EaXNwYXRjaCkpOworKyAgICBjb25uZWN0KG1fZXZlbnRUaHJl YWQuZ2V0KCksICZFdmVudFRocmVhZDo6bmVlZFJlYWRBbmREaXNwYXRjaCwgdGhpcywKKysgICAg ICAgICAgICAmUVdheWxhbmREaXNwbGF5OjpmbHVzaFJlcXVlc3RzLCBRdDo6UXVldWVkQ29ubmVj dGlvbik7CisrICAgIG1fZXZlbnRUaHJlYWQtPnN0YXJ0KCk7CisgCistd2xfZXZlbnRfcXVldWUg KlFXYXlsYW5kRGlzcGxheTo6Y3JlYXRlRXZlbnRRdWV1ZSgpCisteworLSAgICByZXR1cm4gd2xf ZGlzcGxheV9jcmVhdGVfcXVldWUobURpc3BsYXkpOworKyAgICAvLyB3bF9kaXNwbGF5X2Rpc2Nv bm5lY3QoKSBmcmVlIHRoaXMuCisrICAgIG1fZnJhbWVFdmVudFF1ZXVlID0gd2xfZGlzcGxheV9j cmVhdGVfcXVldWUobURpc3BsYXkpOworKyAgICBtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZC5yZXNl dCgKKysgICAgICAgICAgICBuZXcgRXZlbnRUaHJlYWQobURpc3BsYXksIG1fZnJhbWVFdmVudFF1 ZXVlLCBFdmVudFRocmVhZDo6U2VsZkRpc3BhdGNoKSk7CisrICAgIG1fZnJhbWVFdmVudFF1ZXVl VGhyZWFkLT5zdGFydCgpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kRGlzcGxheTo6ZGlzcGF0Y2hR dWV1ZVdoaWxlKHdsX2V2ZW50X3F1ZXVlICpxdWV1ZSwgc3RkOjpmdW5jdGlvbjxib29sICgpPiBj b25kaXRpb24sIGludCB0aW1lb3V0KQorK3ZvaWQgUVdheWxhbmREaXNwbGF5OjpibG9ja2luZ1Jl YWRFdmVudHMoKQorIHsKKy0gICAgaWYgKCFjb25kaXRpb24oKSkKKy0gICAgICAgIHJldHVybjsK Ky0KKy0gICAgUUVsYXBzZWRUaW1lciB0aW1lcjsKKy0gICAgdGltZXIuc3RhcnQoKTsKKy0gICAg c3RydWN0IHBvbGxmZCBwRmQgPSBxdF9tYWtlX3BvbGxmZCh3bF9kaXNwbGF5X2dldF9mZChtRGlz cGxheSksIFBPTExJTik7CistICAgIHdoaWxlICh0aW1lb3V0ID09IC0xIHx8IHRpbWVyLmVsYXBz ZWQoKSA8IHRpbWVvdXQpIHsKKy0gICAgICAgIHdoaWxlICh3bF9kaXNwbGF5X3ByZXBhcmVfcmVh ZF9xdWV1ZShtRGlzcGxheSwgcXVldWUpICE9IDApCistICAgICAgICAgICAgd2xfZGlzcGxheV9k aXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBxdWV1ZSk7CistCistICAgICAgICB3bF9k aXNwbGF5X2ZsdXNoKG1EaXNwbGF5KTsKKy0KKy0gICAgICAgIGNvbnN0IGludCByZW1haW5pbmcg PSBxTWF4KHRpbWVvdXQgLSB0aW1lci5lbGFwc2VkKCksIDBsbCk7CistICAgICAgICBjb25zdCBp bnQgcG9sbFRpbWVvdXQgPSB0aW1lb3V0ID09IC0xID8gLTEgOiByZW1haW5pbmc7CistICAgICAg ICBpZiAocXRfcG9sbF9tc2VjcygmcEZkLCAxLCBwb2xsVGltZW91dCkgPiAwKQorLSAgICAgICAg ICAgIHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMobURpc3BsYXkpOworLSAgICAgICAgZWxzZQorLSAg ICAgICAgICAgIHdsX2Rpc3BsYXlfY2FuY2VsX3JlYWQobURpc3BsYXkpOworLQorLSAgICAgICAg aWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVuZGluZyhtRGlzcGxheSwgcXVldWUpIDwg MCkKKy0gICAgICAgICAgICBjaGVja0Vycm9yKCk7CistCistICAgICAgICBpZiAoIWNvbmRpdGlv bigpKQorLSAgICAgICAgICAgIGJyZWFrOworLSAgICB9CisrICAgIGlmICh3bF9kaXNwbGF5X2Rp c3BhdGNoKG1EaXNwbGF5KSA8IDApCisrICAgICAgICBjaGVja1dheWxhbmRFcnJvcihtRGlzcGxh eSk7CisgfQorIAorIFFXYXlsYW5kU2NyZWVuICpRV2F5bGFuZERpc3BsYXk6OnNjcmVlbkZvck91 dHB1dChzdHJ1Y3Qgd2xfb3V0cHV0ICpvdXRwdXQpIGNvbnN0CitAQCAtMzQ1LDcgKzQ5MSw3IEBA IHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZWdpc3RyeV9nbG9iYWwodWludDMyX3QgaWQsIGNvbnN0 IFFTdHJpbmcgJmludGVyZmFjZSwgdWluCisgICAgIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xp dGVyYWwoIndsX291dHB1dCIpKSB7CisgICAgICAgICBtV2FpdGluZ1NjcmVlbnMgPDwgbmV3IFFX YXlsYW5kU2NyZWVuKHRoaXMsIHZlcnNpb24sIGlkKTsKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZh Y2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX2NvbXBvc2l0b3IiKSkgeworLSAgICAgICAgbUNvbXBv c2l0b3JWZXJzaW9uID0gcU1pbigoaW50KXZlcnNpb24sIDMpOworKyAgICAgICAgbUNvbXBvc2l0 b3JWZXJzaW9uID0gcU1pbigoaW50KXZlcnNpb24sIDQpOworICAgICAgICAgbUNvbXBvc2l0b3Iu aW5pdChyZWdpc3RyeSwgaWQsIG1Db21wb3NpdG9yVmVyc2lvbik7CisgICAgIH0gZWxzZSBpZiAo aW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ3bF9zaG0iKSkgeworICAgICAgICAgbVNobS5y ZXNldChuZXcgUVdheWxhbmRTaG0odGhpcywgdmVyc2lvbiwgaWQpKTsKK0BAIC0zNTQsNyArNTAw LDcgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2JhbCh1aW50MzJfdCBpZCwg Y29uc3QgUVN0cmluZyAmaW50ZXJmYWNlLCB1aW4KKyAgICAgICAgIG1JbnB1dERldmljZXMuYXBw ZW5kKGlucHV0RGV2aWNlKTsKKyAjaWYgUVRfQ09ORklHKHdheWxhbmRfZGF0YWRldmljZSkKKyAg ICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX2RhdGFfZGV2aWNl X21hbmFnZXIiKSkgeworLSAgICAgICAgbURuZFNlbGVjdGlvbkhhbmRsZXIucmVzZXQobmV3IFFX YXlsYW5kRGF0YURldmljZU1hbmFnZXIodGhpcywgaWQpKTsKKysgICAgICAgIG1EbmRTZWxlY3Rp b25IYW5kbGVyLnJlc2V0KG5ldyBRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKHRoaXMsIHZlcnNp b24sIGlkKSk7CisgI2VuZGlmCisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdM aXRlcmFsKCJxdF9zdXJmYWNlX2V4dGVuc2lvbiIpKSB7CisgICAgICAgICBtV2luZG93RXh0ZW5z aW9uLnJlc2V0KG5ldyBRdFdheWxhbmQ6OnF0X3N1cmZhY2VfZXh0ZW5zaW9uKHJlZ2lzdHJ5LCBp ZCwgMSkpOworQEAgLTM2OSw2ICs1MTUsOCBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVnaXN0 cnlfZ2xvYmFsKHVpbnQzMl90IGlkLCBjb25zdCBRU3RyaW5nICZpbnRlcmZhY2UsIHVpbgorICNp ZiBRVF9DT05GSUcod2F5bGFuZF9jbGllbnRfcHJpbWFyeV9zZWxlY3Rpb24pCisgICAgIH0gZWxz ZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ6d3BfcHJpbWFyeV9zZWxlY3Rpb25f ZGV2aWNlX21hbmFnZXJfdjEiKSkgeworICAgICAgICAgbVByaW1hcnlTZWxlY3Rpb25NYW5hZ2Vy LnJlc2V0KG5ldyBRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjEodGhpcywg aWQsIDEpKTsKKysgICAgICAgIGZvciAoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpY2Ug OiBxQXNDb25zdChtSW5wdXREZXZpY2VzKSkKKysgICAgICAgICAgICBpbnB1dERldmljZS0+c2V0 UHJpbWFyeVNlbGVjdGlvbkRldmljZShtUHJpbWFyeVNlbGVjdGlvbk1hbmFnZXItPmNyZWF0ZURl dmljZShpbnB1dERldmljZSkpOworICNlbmRpZgorICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9 PSBRU3RyaW5nTGl0ZXJhbCgiendwX3RleHRfaW5wdXRfbWFuYWdlcl92MiIpICYmICFtQ2xpZW50 U2lkZUlucHV0Q29udGV4dFJlcXVlc3RlZCkgeworICAgICAgICAgbVRleHRJbnB1dE1hbmFnZXIu cmVzZXQobmV3IFF0V2F5bGFuZDo6endwX3RleHRfaW5wdXRfbWFuYWdlcl92MihyZWdpc3RyeSwg aWQsIDEpKTsKK0BAIC00MjcsNiArNTc1LDEzIEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZWdp c3RyeV9nbG9iYWxfcmVtb3ZlKHVpbnQzMl90IGlkKQorICAgICAgICAgICAgICAgICAgICAgaW5w dXREZXZpY2UtPnNldFRleHRJbnB1dChudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgbVdheWxh bmRJbnRlZ3JhdGlvbi0+cmVjb25maWd1cmVJbnB1dENvbnRleHQoKTsKKyAgICAgICAgICAgICB9 CisrI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3NlbGVjdGlvbikKKysgICAg ICAgICAgICBpZiAoZ2xvYmFsLmludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgiendwX3ByaW1h cnlfc2VsZWN0aW9uX2RldmljZV9tYW5hZ2VyX3YxIikpIHsKKysgICAgICAgICAgICAgICAgbVBy aW1hcnlTZWxlY3Rpb25NYW5hZ2VyLnJlc2V0KCk7CisrICAgICAgICAgICAgICAgIGZvciAoUVdh eWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpY2UgOiBxQXNDb25zdChtSW5wdXREZXZpY2VzKSkK KysgICAgICAgICAgICAgICAgICAgIGlucHV0RGV2aWNlLT5zZXRQcmltYXJ5U2VsZWN0aW9uRGV2 aWNlKG51bGxwdHIpOworKyAgICAgICAgICAgIH0KKysjZW5kaWYKKyAgICAgICAgICAgICBtR2xv YmFscy5yZW1vdmVBdChpKTsKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KK0BAIC00 NTIsOSArNjA3LDEwIEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjphZGRSZWdpc3RyeUxpc3RlbmVy KFJlZ2lzdHJ5TGlzdGVuZXIgbGlzdGVuZXIsIHZvaWQgKmRhdGEpCisgCisgdm9pZCBRV2F5bGFu ZERpc3BsYXk6OnJlbW92ZUxpc3RlbmVyKFJlZ2lzdHJ5TGlzdGVuZXIgbGlzdGVuZXIsIHZvaWQg KmRhdGEpCisgeworLSAgICBzdGQ6OnJlbW92ZV9pZihtUmVnaXN0cnlMaXN0ZW5lcnMuYmVnaW4o KSwgbVJlZ2lzdHJ5TGlzdGVuZXJzLmVuZCgpLCBbPV0oTGlzdGVuZXIgbCl7CisrICAgIGF1dG8g aXRlciA9IHN0ZDo6cmVtb3ZlX2lmKG1SZWdpc3RyeUxpc3RlbmVycy5iZWdpbigpLCBtUmVnaXN0 cnlMaXN0ZW5lcnMuZW5kKCksIFs9XShMaXN0ZW5lciBsKXsKKyAgICAgICAgIHJldHVybiAobC5s aXN0ZW5lciA9PSBsaXN0ZW5lciAmJiBsLmRhdGEgPT0gZGF0YSk7CisgICAgIH0pOworKyAgICBt UmVnaXN0cnlMaXN0ZW5lcnMuZXJhc2UoaXRlciwgbVJlZ2lzdHJ5TGlzdGVuZXJzLmVuZCgpKTsK KyB9CisgCisgdWludDMyX3QgUVdheWxhbmREaXNwbGF5OjpjdXJyZW50VGltZU1pbGxpc2VjKCkK K0BAIC00NjcsNTAgKzYyMyw5IEBAIHVpbnQzMl90IFFXYXlsYW5kRGlzcGxheTo6Y3VycmVudFRp bWVNaWxsaXNlYygpCisgICAgIHJldHVybiAwOworIH0KKyAKKy1zdGF0aWMgdm9pZAorLXN5bmNf Y2FsbGJhY2sodm9pZCAqZGF0YSwgc3RydWN0IHdsX2NhbGxiYWNrICpjYWxsYmFjaywgdWludDMy X3Qgc2VyaWFsKQorLXsKKy0gICAgUV9VTlVTRUQoc2VyaWFsKQorLSAgICBib29sICpkb25lID0g c3RhdGljX2Nhc3Q8Ym9vbCAqPihkYXRhKTsKKy0KKy0gICAgKmRvbmUgPSB0cnVlOworLQorLSAg ICAvLyBJZiB0aGUgd2xfY2FsbGJhY2sgZG9uZSBldmVudCBpcyByZWNlaXZlZCBhZnRlciB0aGUg Y29uZGl0aW9uIGNoZWNrIGluIHRoZSB3aGlsZSBsb29wIGluCistICAgIC8vIGZvcmNlUm91bmRU cmlwKCksIGJ1dCBiZWZvcmUgdGhlIGNhbGwgdG8gcHJvY2Vzc0V2ZW50cywgdGhlIGNhbGwgdG8g cHJvY2Vzc0V2ZW50cyBtYXkgYmxvY2sKKy0gICAgLy8gZm9yZXZlciBpZiBubyBtb3JlIGV2ZW50 cyBhcmUgcG9zdGVkIChldmVudGhvdWdoIHRoZSBjYWxsYmFjayBpcyBoYW5kbGVkIGluIHJlc3Bv bnNlIHRvIHRoZQorLSAgICAvLyBhYm91dFRvQmxvY2sgc2lnbmFsKS4gSGVuY2UsIHdlIHdha2Ug dXAgdGhlIGV2ZW50IGRpc3BhdGNoZXIgc28gZm9yY2VSb3VuZFRyaXAgbWF5IHJldHVybi4KKy0g ICAgLy8gKFFUQlVHLTY0Njk2KQorLSAgICBpZiAoYXV0byAqZGlzcGF0Y2hlciA9IFFUaHJlYWQ6 OmN1cnJlbnRUaHJlYWQoKS0+ZXZlbnREaXNwYXRjaGVyKCkpCistICAgICAgICBkaXNwYXRjaGVy LT53YWtlVXAoKTsKKy0KKy0gICAgd2xfY2FsbGJhY2tfZGVzdHJveShjYWxsYmFjayk7CistfQor LQorLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIgc3luY19saXN0ZW5l ciA9IHsKKy0gICAgc3luY19jYWxsYmFjaworLX07CistCisgdm9pZCBRV2F5bGFuZERpc3BsYXk6 OmZvcmNlUm91bmRUcmlwKCkKKyB7CistICAgIC8vIHdsX2Rpc3BsYXlfcm91bmR0cmlwKCkgd29y a3Mgb24gdGhlIG1haW4gcXVldWUgb25seSwKKy0gICAgLy8gYnV0IHdlIHVzZSBhIHNlcGFyYXRl IG9uZSwgc28gYmFzaWNhbGx5IHJlaW1wbGVtZW50IGl0IGhlcmUKKy0gICAgaW50IHJldCA9IDA7 CistICAgIGJvb2wgZG9uZSA9IGZhbHNlOworLSAgICB3bF9jYWxsYmFjayAqY2FsbGJhY2sgPSB3 bF9kaXNwbGF5X3N5bmMobURpc3BsYXkpOworLSAgICB3bF9jYWxsYmFja19hZGRfbGlzdGVuZXIo Y2FsbGJhY2ssICZzeW5jX2xpc3RlbmVyLCAmZG9uZSk7CistICAgIGZsdXNoUmVxdWVzdHMoKTsK Ky0gICAgaWYgKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKS0+ZXZlbnREaXNwYXRjaGVyKCkpIHsK Ky0gICAgICAgIHdoaWxlICghZG9uZSAmJiByZXQgPj0gMCkgeworLSAgICAgICAgICAgIFFUaHJl YWQ6OmN1cnJlbnRUaHJlYWQoKS0+ZXZlbnREaXNwYXRjaGVyKCktPnByb2Nlc3NFdmVudHMoUUV2 ZW50TG9vcDo6V2FpdEZvck1vcmVFdmVudHMpOworLSAgICAgICAgICAgIHJldCA9IHdsX2Rpc3Bs YXlfZGlzcGF0Y2hfcGVuZGluZyhtRGlzcGxheSk7CistICAgICAgICB9CistICAgIH0gZWxzZSB7 CistICAgICAgICB3aGlsZSAoIWRvbmUgJiYgcmV0ID49IDApCistICAgICAgICAgICAgcmV0ID0g d2xfZGlzcGxheV9kaXNwYXRjaChtRGlzcGxheSk7CistICAgIH0KKy0KKy0gICAgaWYgKHJldCA9 PSAtMSAmJiAhZG9uZSkKKy0gICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3koY2FsbGJhY2spOwor KyAgICAgd2xfZGlzcGxheV9yb3VuZHRyaXAobURpc3BsYXkpOworIH0KKyAKKyBib29sIFFXYXls YW5kRGlzcGxheTo6c3VwcG9ydHNXaW5kb3dEZWNvcmF0aW9uKCkgY29uc3QKK0BAIC01NzQsMTQg KzY4OSwxMCBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5n ZWQoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpYworICAgICBpZiAobUxhc3RLZXlib2Fy ZEZvY3VzID09IGtleWJvYXJkRm9jdXMpCisgICAgICAgICByZXR1cm47CisgCistICAgIGlmICht V2F5bGFuZEludGVncmF0aW9uLT5tU2hlbGxJbnRlZ3JhdGlvbikgeworLSAgICAgICAgbVdheWxh bmRJbnRlZ3JhdGlvbi0+bVNoZWxsSW50ZWdyYXRpb24tPmhhbmRsZUtleWJvYXJkRm9jdXNDaGFu Z2VkKGtleWJvYXJkRm9jdXMsIG1MYXN0S2V5Ym9hcmRGb2N1cyk7CistICAgIH0gZWxzZSB7Cist ICAgICAgICBpZiAoa2V5Ym9hcmRGb2N1cykKKy0gICAgICAgICAgICBoYW5kbGVXaW5kb3dBY3Rp dmF0ZWQoa2V5Ym9hcmRGb2N1cyk7CistICAgICAgICBpZiAobUxhc3RLZXlib2FyZEZvY3VzKQor LSAgICAgICAgICAgIGhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG1MYXN0S2V5Ym9hcmRGb2N1cyk7 CistICAgIH0KKysgICAgaWYgKGtleWJvYXJkRm9jdXMpCisrICAgICAgICBoYW5kbGVXaW5kb3dB Y3RpdmF0ZWQoa2V5Ym9hcmRGb2N1cyk7CisrICAgIGlmIChtTGFzdEtleWJvYXJkRm9jdXMpCisr ICAgICAgICBoYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChtTGFzdEtleWJvYXJkRm9jdXMpOworIAor ICAgICBtTGFzdEtleWJvYXJkRm9jdXMgPSBrZXlib2FyZEZvY3VzOworIH0KK0BAIC02MDAsNiAr NzExLDE5IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpoYW5kbGVXYXlsYW5kU3luYygpCisgICAg IFFXaW5kb3cgKmFjdGl2ZVdpbmRvdyA9IG1BY3RpdmVXaW5kb3dzLmVtcHR5KCkgPyBudWxscHRy IDogbUFjdGl2ZVdpbmRvd3MubGFzdCgpLT53aW5kb3coKTsKKyAgICAgaWYgKGFjdGl2ZVdpbmRv dyAhPSBRR3VpQXBwbGljYXRpb246OmZvY3VzV2luZG93KCkpCisgICAgICAgICBRV2luZG93U3lz dGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dBY3RpdmF0ZWQoYWN0aXZlV2luZG93KTsKKysKKysg ICAgaWYgKCFhY3RpdmVXaW5kb3cpIHsKKysgICAgICAgIGlmIChsYXN0SW5wdXREZXZpY2UoKSkg eworKyNpZiBRVF9DT05GSUcoY2xpcGJvYXJkKQorKyAgICAgICAgICAgIGlmIChhdXRvICpkYXRh RGV2aWNlID0gbGFzdElucHV0RGV2aWNlKCktPmRhdGFEZXZpY2UoKSkKKysgICAgICAgICAgICAg ICAgZGF0YURldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9mZmVyKCk7CisrI2VuZGlmCisrI2lm IFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3NlbGVjdGlvbikKKysgICAgICAgICAg ICBpZiAoYXV0byAqZGV2aWNlID0gbGFzdElucHV0RGV2aWNlKCktPnByaW1hcnlTZWxlY3Rpb25E ZXZpY2UoKSkKKysgICAgICAgICAgICAgICAgZGV2aWNlLT5pbnZhbGlkYXRlU2VsZWN0aW9uT2Zm ZXIoKTsKKysjZW5kaWYKKysgICAgICAgIH0KKysgICAgfQorIH0KKyAKKyBjb25zdCB3bF9jYWxs YmFja19saXN0ZW5lciBRV2F5bGFuZERpc3BsYXk6OnN5bmNDYWxsYmFja0xpc3RlbmVyID0gewor QEAgLTYyNiw2ICs3NTAsMTMgQEAgUVdheWxhbmRJbnB1dERldmljZSAqUVdheWxhbmREaXNwbGF5 OjpkZWZhdWx0SW5wdXREZXZpY2UoKSBjb25zdAorICAgICByZXR1cm4gbUlucHV0RGV2aWNlcy5p c0VtcHR5KCkgPyAwIDogbUlucHV0RGV2aWNlcy5maXJzdCgpOworIH0KKyAKKytib29sIFFXYXls YW5kRGlzcGxheTo6aXNLZXlib2FyZEF2YWlsYWJsZSgpIGNvbnN0CisreworKyAgICByZXR1cm4g c3RkOjphbnlfb2YoCisrICAgICAgICAgICAgbUlucHV0RGV2aWNlcy5jb25zdEJlZ2luKCksIG1J bnB1dERldmljZXMuY29uc3RFbmQoKSwKKysgICAgICAgICAgICBbdGhpc10oY29uc3QgUVdheWxh bmRJbnB1dERldmljZSAqZGV2aWNlKSB7IHJldHVybiBkZXZpY2UtPmtleWJvYXJkKCkgIT0gbnVs bHB0cjsgfSk7CisrfQorKworICNpZiBRVF9DT05GSUcoY3Vyc29yKQorIAorIFFXYXlsYW5kQ3Vy c29yICpRV2F5bGFuZERpc3BsYXk6OndheWxhbmRDdXJzb3IoKQorQEAgLTY1Miw0ICs3ODMsNiBA QCBRV2F5bGFuZEN1cnNvclRoZW1lICpRV2F5bGFuZERpc3BsYXk6OmxvYWRDdXJzb3JUaGVtZShj b25zdCBRU3RyaW5nICZuYW1lLCBpbnQgcAorIAorIH0gLy8gbmFtZXNwYWNlIFF0V2F5bGFuZENs aWVudAorIAorKyNpbmNsdWRlICJxd2F5bGFuZGRpc3BsYXkubW9jIgorKworIFFUX0VORF9OQU1F U1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXlf cC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5X3AuaAoraW5kZXggM2Iw OTJiYzguLjQyYmM2NjFkIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRkaXNwbGF5X3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5 X3AuaAorQEAgLTEwOSw2ICsxMDksNyBAQCBjbGFzcyBRV2F5bGFuZFN1cmZhY2U7CisgY2xhc3Mg UVdheWxhbmRTaGVsbEludGVncmF0aW9uOworIGNsYXNzIFFXYXlsYW5kQ3Vyc29yOworIGNsYXNz IFFXYXlsYW5kQ3Vyc29yVGhlbWU7CisrY2xhc3MgRXZlbnRUaHJlYWQ7CisgCisgdHlwZWRlZiB2 b2lkICgqUmVnaXN0cnlMaXN0ZW5lcikodm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3Qgd2xfcmVnaXN0cnkgKnJlZ2lzdHJ5LAorQEAgLTEyMCwxNSAr MTIxLDExIEBAIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kRGlzcGxheSA6 IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgUXRXYXlsYW5kCisgICAgIFFfT0JKRUNUCisgCisgcHVi bGljOgorLSAgICBzdHJ1Y3QgRnJhbWVRdWV1ZSB7CistICAgICAgICBGcmFtZVF1ZXVlKHdsX2V2 ZW50X3F1ZXVlICpxID0gbnVsbHB0cikgOiBxdWV1ZShxKSwgbXV0ZXgobmV3IFFNdXRleCkge30K Ky0gICAgICAgIHdsX2V2ZW50X3F1ZXVlICpxdWV1ZTsKKy0gICAgICAgIFFNdXRleCAqbXV0ZXg7 CistICAgIH07CistCisgICAgIFFXYXlsYW5kRGlzcGxheShRV2F5bGFuZEludGVncmF0aW9uICp3 YXlsYW5kSW50ZWdyYXRpb24pOworICAgICB+UVdheWxhbmREaXNwbGF5KHZvaWQpIG92ZXJyaWRl OworIAorKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKysKKyAjaWYgUVRfQ09ORklHKHhrYmNvbW1v bikKKyAgICAgc3RydWN0IHhrYl9jb250ZXh0ICp4a2JDb250ZXh0KCkgY29uc3QgeyByZXR1cm4g bVhrYkNvbnRleHQuZ2V0KCk7IH0KKyAjZW5kaWYKK0BAIC0yMTAsMTEgKzIwNywxMSBAQCBwdWJs aWM6CisgICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRJbnB1dERl dmljZSAqaW5wdXREZXZpY2UpOworICAgICB2b2lkIGhhbmRsZVdpbmRvd0Rlc3Ryb3llZChRV2F5 bGFuZFdpbmRvdyAqd2luZG93KTsKKyAKKy0gICAgd2xfZXZlbnRfcXVldWUgKmNyZWF0ZUV2ZW50 UXVldWUoKTsKKy0gICAgRnJhbWVRdWV1ZSBjcmVhdGVGcmFtZVF1ZXVlKCk7CistICAgIHZvaWQg ZGVzdHJveUZyYW1lUXVldWUoY29uc3QgRnJhbWVRdWV1ZSAmcSk7CistICAgIHZvaWQgZGlzcGF0 Y2hRdWV1ZVdoaWxlKHdsX2V2ZW50X3F1ZXVlICpxdWV1ZSwgc3RkOjpmdW5jdGlvbjxib29sKCk+ IGNvbmRpdGlvbiwgaW50IHRpbWVvdXQgPSAtMSk7CisrICAgIHdsX2V2ZW50X3F1ZXVlICpmcmFt ZUV2ZW50UXVldWUoKSB7IHJldHVybiBtX2ZyYW1lRXZlbnRRdWV1ZTsgfTsKKysKKysgICAgYm9v bCBpc0tleWJvYXJkQXZhaWxhYmxlKCkgY29uc3Q7CisgCisrICAgIHZvaWQgaW5pdEV2ZW50VGhy ZWFkKCk7CisgcHVibGljIHNsb3RzOgorICAgICB2b2lkIGJsb2NraW5nUmVhZEV2ZW50cygpOwor ICAgICB2b2lkIGZsdXNoUmVxdWVzdHMoKTsKK0BAIC0yMzcsNiArMjM0LDkgQEAgcHJpdmF0ZToK KyAgICAgfTsKKyAKKyAgICAgc3RydWN0IHdsX2Rpc3BsYXkgKm1EaXNwbGF5ID0gbnVsbHB0cjsK KysgICAgUVNjb3BlZFBvaW50ZXI8RXZlbnRUaHJlYWQ+IG1fZXZlbnRUaHJlYWQ7CisrICAgIHds X2V2ZW50X3F1ZXVlICptX2ZyYW1lRXZlbnRRdWV1ZSA9IG51bGxwdHI7CisrICAgIFFTY29wZWRQ b2ludGVyPEV2ZW50VGhyZWFkPiBtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZDsKKyAgICAgUXRXYXls YW5kOjp3bF9jb21wb3NpdG9yIG1Db21wb3NpdG9yOworICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5 bGFuZFNobT4gbVNobTsKKyAgICAgUUxpc3Q8UVdheWxhbmRTY3JlZW4gKj4gbVdhaXRpbmdTY3Jl ZW5zOworQEAgLTI3MywxMSArMjczLDkgQEAgcHJpdmF0ZToKKyAgICAgUVdheWxhbmRJbnB1dERl dmljZSAqbUxhc3RJbnB1dERldmljZSA9IG51bGxwdHI7CisgICAgIFFQb2ludGVyPFFXYXlsYW5k V2luZG93PiBtTGFzdElucHV0V2luZG93OworICAgICBRUG9pbnRlcjxRV2F5bGFuZFdpbmRvdz4g bUxhc3RLZXlib2FyZEZvY3VzOworLSAgICBRVmVjdG9yPFFXYXlsYW5kV2luZG93ICo+IG1BY3Rp dmVXaW5kb3dzOworLSAgICBRVmVjdG9yPEZyYW1lUXVldWU+IG1FeHRlcm5hbFF1ZXVlczsKKysg ICAgUUxpc3Q8UVdheWxhbmRXaW5kb3cgKj4gbUFjdGl2ZVdpbmRvd3M7CisgICAgIHN0cnVjdCB3 bF9jYWxsYmFjayAqbVN5bmNDYWxsYmFjayA9IG51bGxwdHI7CisgICAgIHN0YXRpYyBjb25zdCB3 bF9jYWxsYmFja19saXN0ZW5lciBzeW5jQ2FsbGJhY2tMaXN0ZW5lcjsKKy0gICAgUVJlYWRXcml0 ZUxvY2sgbV9mcmFtZVF1ZXVlTG9jazsKKyAKKyAgICAgYm9vbCBtQ2xpZW50U2lkZUlucHV0Q29u dGV4dFJlcXVlc3RlZCA9ICFRUGxhdGZvcm1JbnB1dENvbnRleHRGYWN0b3J5OjpyZXF1ZXN0ZWQo KS5pc051bGwoKTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGRuZC5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZC5jcHAKK2luZGV4IDY1 MzVhYTE2Li43YzUzZjVmYSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZG5kLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmQuY3BwCitA QCAtNjYsNyArNjYsNyBAQCB2b2lkIFFXYXlsYW5kRHJhZzo6c3RhcnREcmFnKCkKKyB7CisgICAg IFFCYXNpY0RyYWc6OnN0YXJ0RHJhZygpOworICAgICBRV2F5bGFuZFdpbmRvdyAqaWNvbiA9IHN0 YXRpY19jYXN0PFFXYXlsYW5kV2luZG93ICo+KHNoYXBlZFBpeG1hcFdpbmRvdygpLT5oYW5kbGUo KSk7CistICAgIGlmIChtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5kYXRhRGV2aWNl KCktPnN0YXJ0RHJhZyhkcmFnKCktPm1pbWVEYXRhKCksIGljb24pKSB7CisrICAgIGlmIChtX2Rp c3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5kYXRhRGV2aWNlKCktPnN0YXJ0RHJhZyhkcmFn KCktPm1pbWVEYXRhKCksIGRyYWcoKS0+c3VwcG9ydGVkQWN0aW9ucygpLCBpY29uKSkgeworICAg ICAgICAgaWNvbi0+YWRkQXR0YWNoT2Zmc2V0KC1kcmFnKCktPmhvdFNwb3QoKSk7CisgICAgIH0g ZWxzZSB7CisgICAgICAgICAvLyBDYW5jZWxsaW5nIGltbWVkaWF0ZWx5IGRvZXMgbm90IHdvcmss IHNpbmNlIHRoZSBldmVudCBsb29wIGZvciBRRHJhZzo6ZXhlYyBpcyBzdGFydGVkCitAQCAtODAs NiArODAsOSBAQCB2b2lkIFFXYXlsYW5kRHJhZzo6Y2FuY2VsKCkKKyAgICAgUUJhc2ljRHJhZzo6 Y2FuY2VsKCk7CisgCisgICAgIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPmRhdGFE ZXZpY2UoKS0+Y2FuY2VsRHJhZygpOworKworKyAgICBpZiAoZHJhZygpKQorKyAgICAgICAgZHJh ZygpLT5kZWxldGVMYXRlcigpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5kRHJhZzo6bW92ZShjb25z dCBRUG9pbnQgJmdsb2JhbFBvcywgUXQ6Ok1vdXNlQnV0dG9ucyBiLCBRdDo6S2V5Ym9hcmRNb2Rp ZmllcnMgbW9kcykKK0BAIC0xMDMsMzMgKzEwNiw0MSBAQCB2b2lkIFFXYXlsYW5kRHJhZzo6ZW5k RHJhZygpCisgICAgIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPmhhbmRsZUVuZERy YWcoKTsKKyB9CisgCistdm9pZCBRV2F5bGFuZERyYWc6OnVwZGF0ZVRhcmdldChjb25zdCBRU3Ry aW5nICZtaW1lVHlwZSkKKyt2b2lkIFFXYXlsYW5kRHJhZzo6c2V0UmVzcG9uc2UoYm9vbCBhY2Nl cHRlZCkKKyB7CistICAgIHNldENhbkRyb3AoIW1pbWVUeXBlLmlzRW1wdHkoKSk7CistCistICAg IGlmIChjYW5Ecm9wKCkpIHsKKy0gICAgICAgIHVwZGF0ZUN1cnNvcihkZWZhdWx0QWN0aW9uKGRy YWcoKS0+c3VwcG9ydGVkQWN0aW9ucygpLCBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgp LT5tb2RpZmllcnMoKSkpOworLSAgICB9IGVsc2UgeworLSAgICAgICAgdXBkYXRlQ3Vyc29yKFF0 OjpJZ25vcmVBY3Rpb24pOworLSAgICB9CisrICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgZm9y IG9sZCBEYXRhRGV2aWNlcyB3aGVyZSB0aGUgZHJhZyBhY3Rpb24gaXMgbm90IGNvbW11bmljYXRl ZAorKyAgICBRdDo6RHJvcEFjdGlvbiBhY3Rpb24gPSBkZWZhdWx0QWN0aW9uKGRyYWcoKS0+c3Vw cG9ydGVkQWN0aW9ucygpLCBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5tb2RpZmll cnMoKSk7CisrICAgIHNldFJlc3BvbnNlKFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlKGFjY2VwdGVk LCBhY3Rpb24pKTsKKyB9CisgCistdm9pZCBRV2F5bGFuZERyYWc6OnNldFJlc3BvbnNlKGNvbnN0 IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlICZyZXNwb25zZSkKKyt2b2lkIFFXYXlsYW5kRHJhZzo6 c2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKQorIHsK KyAgICAgc2V0Q2FuRHJvcChyZXNwb25zZS5pc0FjY2VwdGVkKCkpOworIAorICAgICBpZiAoY2Fu RHJvcCgpKSB7CistICAgICAgICB1cGRhdGVDdXJzb3IoZGVmYXVsdEFjdGlvbihkcmFnKCktPnN1 cHBvcnRlZEFjdGlvbnMoKSwgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+bW9kaWZp ZXJzKCkpKTsKKysgICAgICAgIHVwZGF0ZUN1cnNvcihyZXNwb25zZS5hY2NlcHRlZEFjdGlvbigp KTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIHVwZGF0ZUN1cnNvcihRdDo6SWdub3JlQWN0aW9u KTsKKyAgICAgfQorIH0KKyAKKy12b2lkIFFXYXlsYW5kRHJhZzo6ZmluaXNoRHJhZyhjb25zdCBR UGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpCisrdm9pZCBRV2F5bGFuZERyYWc6OnNl dERyb3BSZXNwb25zZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpCisg eworICAgICBzZXRFeGVjdXRlZERyb3BBY3Rpb24ocmVzcG9uc2UuYWNjZXB0ZWRBY3Rpb24oKSk7 CisrfQorKworK3ZvaWQgUVdheWxhbmREcmFnOjpmaW5pc2hEcmFnKCkKKyt7CisgICAgIFFLZXlF dmVudCBldmVudChRRXZlbnQ6OktleVByZXNzLCBRdDo6S2V5X0VzY2FwZSwgUXQ6Ok5vTW9kaWZp ZXIpOworICAgICBldmVudEZpbHRlcihzaGFwZWRQaXhtYXBXaW5kb3coKSwgJmV2ZW50KTsKKysK KysgICAgaWYgKGRyYWcoKSkKKysgICAgICAgIGRyYWcoKS0+ZGVsZXRlTGF0ZXIoKTsKKyt9Cisr CisrYm9vbCBRV2F5bGFuZERyYWc6Om93bnNEcmFnT2JqZWN0KCkgY29uc3QKKyt7CisrICAgIHJl dHVybiB0cnVlOworIH0KKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRkbmRfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmRfcC5oCitp bmRleCA0NzRmZTJhYi4uNDZmNjI5YWMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRuZF9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5k X3AuaAorQEAgLTcxLDkgKzcxLDEwIEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmREcmFnKFFXYXls YW5kRGlzcGxheSAqZGlzcGxheSk7CisgICAgIH5RV2F5bGFuZERyYWcoKSBvdmVycmlkZTsKKyAK Ky0gICAgdm9pZCB1cGRhdGVUYXJnZXQoY29uc3QgUVN0cmluZyAmbWltZVR5cGUpOworLSAgICB2 b2lkIHNldFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlICZyZXNwb25zZSk7 CistICAgIHZvaWQgZmluaXNoRHJhZyhjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVz cG9uc2UpOworKyAgICB2b2lkIHNldFJlc3BvbnNlKGJvb2wgYWNjZXB0ZWQpOworKyAgICB2b2lk IHNldFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSk7Cisr ICAgIHZvaWQgc2V0RHJvcFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZy ZXNwb25zZSk7CisrICAgIHZvaWQgZmluaXNoRHJhZygpOworIAorIHByb3RlY3RlZDoKKyAgICAg dm9pZCBzdGFydERyYWcoKSBvdmVycmlkZTsKK0BAIC04Miw2ICs4Myw3IEBAIHByb3RlY3RlZDoK KyAgICAgdm9pZCBkcm9wKGNvbnN0IFFQb2ludCAmZ2xvYmFsUG9zLCBRdDo6TW91c2VCdXR0b25z IGIsIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RzKSBvdmVycmlkZTsKKyAgICAgdm9pZCBlbmRE cmFnKCkgb3ZlcnJpZGU7CisgCisrICAgIGJvb2wgb3duc0RyYWdPYmplY3QoKSBjb25zdCBvdmVy cmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFuZERpc3BsYXkgKm1fZGlzcGxheSA9IG51 bGxwdHI7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnB1dGRl dmljZS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGlucHV0ZGV2aWNlLmNwcAor aW5kZXggNjEzZmU4NjIuLjRiOTBkZTg0IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kaW5wdXRkZXZpY2UuY3BwCitAQCAtNjg1LDYgKzY4NSwxMSBAQCBwdWJsaWM6CisgCisg dm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpQb2ludGVyOjpwb2ludGVyX2xlYXZlKHVpbnQzMl90 IHRpbWUsIHN0cnVjdCB3bF9zdXJmYWNlICpzdXJmYWNlKQorIHsKKysgICAgaW52YWxpZGF0ZUZv Y3VzKCk7CisrICAgIG1CdXR0b25zID0gUXQ6Ok5vQnV0dG9uOworKworKyAgICBtUGFyZW50LT5t VGltZSA9IHRpbWU7CisrCisgICAgIC8vIFRoZSBldmVudCBtYXkgYXJyaXZlIGFmdGVyIGRlc3Ry b3lpbmcgdGhlIHdpbmRvdywgaW5kaWNhdGVkIGJ5CisgICAgIC8vIGEgbnVsbCBzdXJmYWNlLgor ICAgICBpZiAoIXN1cmZhY2UpCitAQCAtNjk2LDExICs3MDEsNiBAQCB2b2lkIFFXYXlsYW5kSW5w dXREZXZpY2U6OlBvaW50ZXI6OnBvaW50ZXJfbGVhdmUodWludDMyX3QgdGltZSwgc3RydWN0IHds X3N1cmZhYworIAorICAgICBpZiAoIVFXYXlsYW5kV2luZG93Ojptb3VzZUdyYWIoKSkKKyAgICAg ICAgIHNldEZyYW1lRXZlbnQobmV3IExlYXZlRXZlbnQod2luZG93LCBtU3VyZmFjZVBvcywgbUds b2JhbFBvcykpOworLQorLSAgICBpbnZhbGlkYXRlRm9jdXMoKTsKKy0gICAgbUJ1dHRvbnMgPSBR dDo6Tm9CdXR0b247CistCistICAgIG1QYXJlbnQtPm1UaW1lID0gdGltZTsKKyB9CisgCisgY2xh c3MgTW90aW9uRXZlbnQgOiBwdWJsaWMgUVdheWxhbmRQb2ludGVyRXZlbnQKK0BAIC0xMzAwLDE0 ICsxMzAwLDYgQEAgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpLZXlib2FyZDo6aGFuZGxlRm9j dXNEZXN0cm95ZWQoKQorIHZvaWQgUVdheWxhbmRJbnB1dERldmljZTo6S2V5Ym9hcmQ6OmhhbmRs ZUZvY3VzTG9zdCgpCisgeworICAgICBtRm9jdXMgPSBudWxscHRyOworLSNpZiBRVF9DT05GSUco Y2xpcGJvYXJkKQorLSAgICBpZiAoYXV0byAqZGF0YURldmljZSA9IG1QYXJlbnQtPmRhdGFEZXZp Y2UoKSkKKy0gICAgICAgIGRhdGFEZXZpY2UtPmludmFsaWRhdGVTZWxlY3Rpb25PZmZlcigpOwor LSNlbmRpZgorLSNpZiBRVF9DT05GSUcod2F5bGFuZF9jbGllbnRfcHJpbWFyeV9zZWxlY3Rpb24p CistICAgIGlmIChhdXRvICpkZXZpY2UgPSBtUGFyZW50LT5wcmltYXJ5U2VsZWN0aW9uRGV2aWNl KCkpCistICAgICAgICBkZXZpY2UtPmludmFsaWRhdGVTZWxlY3Rpb25PZmZlcigpOworLSNlbmRp ZgorICAgICBtUGFyZW50LT5tUURpc3BsYXktPmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKG1Q YXJlbnQpOworICAgICBtUmVwZWF0VGltZXIuc3RvcCgpOworIH0KK0BAIC0xMzk2LDYgKzEzODgs NyBAQCB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OlRvdWNoOjp0b3VjaF9jYW5jZWwoKQorICAg ICBpZiAodG91Y2hFeHQpCisgICAgICAgICB0b3VjaEV4dC0+dG91Y2hDYW5jZWxlZCgpOworIAor KyAgICBtRm9jdXMgPSBudWxscHRyOworICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5k bGVUb3VjaENhbmNlbEV2ZW50KG51bGxwdHIsIG1QYXJlbnQtPm1Ub3VjaERldmljZSk7CisgfQor IAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb24u Y3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbi5jcHAKK2luZGV4 IGM1M2NjYjc4Li41NDg2MTYwMCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kaW50ZWdyYXRpb24uY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGludGVncmF0aW9uLmNwcAorQEAgLTEyNSw2ICsxMjUsOSBAQCBRV2F5bGFuZEludGVncmF0aW9u OjpRV2F5bGFuZEludGVncmF0aW9uKCkKKyAjZW5kaWYKKyAKKyAgICAgcmVjb25maWd1cmVJbnB1 dENvbnRleHQoKTsKKysKKysgICAgUVdheWxhbmRXaW5kb3c6OmZpeGVkVG9wbGV2ZWxQb3NpdGlv bnMgPQorKyAgICAgICAgICAgICFxRW52aXJvbm1lbnRWYXJpYWJsZUlzU2V0KCJRVF9XQVlMQU5E X0RJU0FCTEVfRklYRURfUE9TSVRJT05TIik7CisgfQorIAorIFFXYXlsYW5kSW50ZWdyYXRpb246 On5RV2F5bGFuZEludGVncmF0aW9uKCkKK0BAIC0xOTIsMTQgKzE5NSwxOCBAQCBRQWJzdHJhY3RF dmVudERpc3BhdGNoZXIgKlFXYXlsYW5kSW50ZWdyYXRpb246OmNyZWF0ZUV2ZW50RGlzcGF0Y2hl cigpIGNvbnN0CisgCisgdm9pZCBRV2F5bGFuZEludGVncmF0aW9uOjppbml0aWFsaXplKCkKKyB7 CisrICAgIG1EaXNwbGF5LT5pbml0RXZlbnRUaHJlYWQoKTsKKysKKysgICAgLy8gQ2FsbCBhZnRl ciBldmVudERpc3BhdGNoZXIgaXMgZnVsbHkgY29ubmVjdGVkLCBmb3IgUVdheWxhbmREaXNwbGF5 Ojpmb3JjZVJvdW5kVHJpcCgpCisrICAgIG1EaXNwbGF5LT5pbml0aWFsaXplKCk7CisrCisrICAg IC8vIEJ1dCB0aGUgYWJvdXRUb0Jsb2NrKCkgYW5kIGF3YWtlKCkgc2hvdWxkIGJlIGNvbm5lY3Rl ZCBhZnRlciBpbml0aWFsaXplUGxhdGZvcm0oKS4KKysgICAgLy8gT3RoZXJ3aXNlIHRoZSBjb25u ZWN0ZWQgZmx1c2hSZXF1ZXN0cygpIG1heSBjb25zdW1lcyB1cCBhbGwgZXZlbnRzIGJlZm9yZSBw cm9jZXNzRXZlbnRzIHN0YXJ0cyB0byB3YWl0LAorKyAgICAvLyBzbyB0aGF0IHByb2Nlc3NFdmVu dHMoUUV2ZW50TG9vcDo6V2FpdEZvck1vcmVFdmVudHMpIG1heSBiZSBibG9ja2VkIGluIHRoZSBm b3JjZVJvdW5kVHJpcCgpLgorICAgICBRQWJzdHJhY3RFdmVudERpc3BhdGNoZXIgKmRpc3BhdGNo ZXIgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpldmVudERpc3BhdGNoZXI7CisgICAgIFFPYmpl Y3Q6OmNvbm5lY3QoZGlzcGF0Y2hlciwgU0lHTkFMKGFib3V0VG9CbG9jaygpKSwgbURpc3BsYXku ZGF0YSgpLCBTTE9UKGZsdXNoUmVxdWVzdHMoKSkpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KGRp c3BhdGNoZXIsIFNJR05BTChhd2FrZSgpKSwgbURpc3BsYXkuZGF0YSgpLCBTTE9UKGZsdXNoUmVx dWVzdHMoKSkpOworIAorLSAgICBpbnQgZmQgPSB3bF9kaXNwbGF5X2dldF9mZChtRGlzcGxheS0+ d2xfZGlzcGxheSgpKTsKKy0gICAgUVNvY2tldE5vdGlmaWVyICpzbiA9IG5ldyBRU29ja2V0Tm90 aWZpZXIoZmQsIFFTb2NrZXROb3RpZmllcjo6UmVhZCwgbURpc3BsYXkuZGF0YSgpKTsKKy0gICAg UU9iamVjdDo6Y29ubmVjdChzbiwgU0lHTkFMKGFjdGl2YXRlZChRU29ja2V0RGVzY3JpcHRvcikp LCBtRGlzcGxheS5kYXRhKCksIFNMT1QoZmx1c2hSZXF1ZXN0cygpKSk7CistCisgICAgIC8vIFF0 IGRvZXMgbm90IHN1cHBvcnQgcnVubmluZyB3aXRoIG5vIHNjcmVlbnMKKyAgICAgbURpc3BsYXkt PmVuc3VyZVNjcmVlbigpOworIH0KK0BAIC0yNjIsNiArMjY5LDE0IEBAIFFXYXlsYW5kRGlzcGxh eSAqUVdheWxhbmRJbnRlZ3JhdGlvbjo6ZGlzcGxheSgpIGNvbnN0CisgICAgIHJldHVybiBtRGlz cGxheS5kYXRhKCk7CisgfQorIAorK1F0OjpLZXlib2FyZE1vZGlmaWVycyBRV2F5bGFuZEludGVn cmF0aW9uOjpxdWVyeUtleWJvYXJkTW9kaWZpZXJzKCkgY29uc3QKKyt7CisrICAgIGlmIChhdXRv ICpzZWF0ID0gbURpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpKSB7CisrICAgICAgICByZXR1 cm4gc2VhdC0+bW9kaWZpZXJzKCk7CisrICAgIH0KKysgICAgcmV0dXJuIFF0OjpOb01vZGlmaWVy OworK30KKysKKyBRTGlzdDxpbnQ+IFFXYXlsYW5kSW50ZWdyYXRpb246OnBvc3NpYmxlS2V5cyhj b25zdCBRS2V5RXZlbnQgKmV2ZW50KSBjb25zdAorIHsKKyAgICAgaWYgKGF1dG8gKnNlYXQgPSBt RGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCkpCitAQCAtNDc5LDcgKzQ5NCw3IEBAIHZvaWQg UVdheWxhbmRJbnRlZ3JhdGlvbjo6cmVjb25maWd1cmVJbnB1dENvbnRleHQoKQorICAgICB9Cisg I2VuZGlmCisgCistICAgIHFDRGVidWcobGNRcGFXYXlsYW5kKSA8PCAidXNpbmcgaW5wdXQgbWV0 aG9kOiIgPDwgaW5wdXRDb250ZXh0KCktPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCk7CisrICAg IHFDRGVidWcobGNRcGFXYXlsYW5kKSA8PCAidXNpbmcgaW5wdXQgbWV0aG9kOiIgPDwgKGlucHV0 Q29udGV4dCgpID8gaW5wdXRDb250ZXh0KCktPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkgOiAi PG5vbmU+Iik7CisgfQorIAorIFFXYXlsYW5kU2hlbGxJbnRlZ3JhdGlvbiAqUVdheWxhbmRJbnRl Z3JhdGlvbjo6Y3JlYXRlU2hlbGxJbnRlZ3JhdGlvbihjb25zdCBRU3RyaW5nICZpbnRlZ3JhdGlv bk5hbWUpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3Jh dGlvbl9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uX3AuaAor aW5kZXggZmY3MGFlMjUuLjczYjgwNjU4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kaW50ZWdyYXRpb25fcC5oCitAQCAtMTA3LDYgKzEwNyw4IEBAIHB1YmxpYzoKKyAKKyAg ICAgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KCkgY29uc3Q7CisgCisrICAgIFF0OjpLZXlib2Fy ZE1vZGlmaWVycyBxdWVyeUtleWJvYXJkTW9kaWZpZXJzKCkgY29uc3Qgb3ZlcnJpZGU7CisrCisg ICAgIFFMaXN0PGludD4gcG9zc2libGVLZXlzKGNvbnN0IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0 IG92ZXJyaWRlOworIAorICAgICBRU3RyaW5nTGlzdCB0aGVtZU5hbWVzKCkgY29uc3Qgb3ZlcnJp ZGU7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRwcmltYXJ5c2Vs ZWN0aW9udjEuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRwcmltYXJ5c2VsZWN0 aW9udjEuY3BwCitpbmRleCA4MzJmOTY3OC4uZWE1MDg3NzEgMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZHByaW1hcnlzZWxlY3Rpb252MS5jcHAKKysrKyBiL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYxLmNwcAorQEAgLTU0LDEx ICs1NCw2IEBAIFFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZU1hbmFnZXJWMTo6UVdheWxh bmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlTWFuYWdlclYxCisgICAgIDogendwX3ByaW1hcnlfc2Vs ZWN0aW9uX2RldmljZV9tYW5hZ2VyX3YxKGRpc3BsYXktPndsX3JlZ2lzdHJ5KCksIGlkLCBxTWlu KHZlcnNpb24sIHVpbnQoMSkpKQorICAgICAsIG1fZGlzcGxheShkaXNwbGF5KQorIHsKKy0gICAg Ly8gQ3JlYXRlIGRldmljZXMgZm9yIGFsbCBzZWF0cy4KKy0gICAgLy8gVGhpcyBvbmx5IHdvcmtz IGlmIHdlIGdldCB0aGUgZ2xvYmFsIGJlZm9yZSBhbGwgZGV2aWNlcworLSAgICBjb25zdCBhdXRv IHNlYXRzID0gbV9kaXNwbGF5LT5pbnB1dERldmljZXMoKTsKKy0gICAgZm9yIChhdXRvICpzZWF0 IDogc2VhdHMpCistICAgICAgICBzZWF0LT5zZXRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlKGNyZWF0 ZURldmljZShzZWF0KSk7CisgfQorIAorIFFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZVYx ICpRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjE6OmNyZWF0ZURldmljZShR V2F5bGFuZElucHV0RGV2aWNlICpzZWF0KQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kc2NyZWVuLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2Ny ZWVuLmNwcAoraW5kZXggNmNiMzM3ZGUuLjU1MzdkYWZkIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW4uY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZHNjcmVlbi5jcHAKK0BAIC02MCw3ICs2MCw3IEBAIFFXYXlsYW5kWGRnT3V0cHV0 TWFuYWdlclYxOjpRV2F5bGFuZFhkZ091dHB1dE1hbmFnZXJWMShRV2F5bGFuZERpc3BsYXkqIGRp c3BsYXksCisgfQorIAorIFFXYXlsYW5kU2NyZWVuOjpRV2F5bGFuZFNjcmVlbihRV2F5bGFuZERp c3BsYXkgKndheWxhbmREaXNwbGF5LCBpbnQgdmVyc2lvbiwgdWludDMyX3QgaWQpCistICAgIDog UXRXYXlsYW5kOjp3bF9vdXRwdXQod2F5bGFuZERpc3BsYXktPndsX3JlZ2lzdHJ5KCksIGlkLCBx TWluKHZlcnNpb24sIDIpKQorKyAgICA6IFF0V2F5bGFuZDo6d2xfb3V0cHV0KHdheWxhbmREaXNw bGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9uLCAzKSkKKyAgICAgLCBtX291dHB1 dElkKGlkKQorICAgICAsIG1XYXlsYW5kRGlzcGxheSh3YXlsYW5kRGlzcGxheSkKKyAgICAgLCBt T3V0cHV0TmFtZShRU3RyaW5nTGl0ZXJhbCgiU2NyZWVuJTEiKS5hcmcoaWQpKQorQEAgLTcyLDcg KzcyLDcgQEAgUVdheWxhbmRTY3JlZW46OlFXYXlsYW5kU2NyZWVuKFFXYXlsYW5kRGlzcGxheSAq d2F5bGFuZERpc3BsYXksIGludCB2ZXJzaW9uLCB1aW4KKyAgICAgICAgIHFDV2FybmluZyhsY1Fw YVdheWxhbmQpIDw8ICJ3bF9vdXRwdXQgZG9uZSBldmVudCBub3Qgc3VwcG9ydGVkIGJ5IGNvbXBv c2l0b3IsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlFTY3JlZW4gbWF5 IG5vdCB3b3JrIGNvcnJlY3RseSI7CisgICAgICAgICBtV2F5bGFuZERpc3BsYXktPmZvcmNlUm91 bmRUcmlwKCk7IC8vIEdpdmUgdGhlIGNvbXBvc2l0b3IgYSBjaGFuY2UgdG8gc2VuZCBnZW9tZXRy eSBldGMuCistICAgICAgICBtT3V0cHV0RG9uZSA9IHRydWU7IC8vIEZha2UgdGhlIGRvbmUgZXZl bnQKKysgICAgICAgIG1Qcm9jZXNzZWRFdmVudHMgfD0gT3V0cHV0RG9uZUV2ZW50OyAvLyBGYWtl IHRoZSBkb25lIGV2ZW50CisgICAgICAgICBtYXliZUluaXRpYWxpemUoKTsKKyAgICAgfQorIH0K K0BAIC04MSwxNiArODEsMjkgQEAgUVdheWxhbmRTY3JlZW46On5RV2F5bGFuZFNjcmVlbigpCisg eworICAgICBpZiAoenhkZ19vdXRwdXRfdjE6OmlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgIHp4 ZGdfb3V0cHV0X3YxOjpkZXN0cm95KCk7CisrICAgIGlmICh3bF9vdXRwdXQ6OmlzSW5pdGlhbGl6 ZWQoKSAmJiB3bF9vdXRwdXRfZ2V0X3ZlcnNpb24od2xfb3V0cHV0OjpvYmplY3QoKSkgPj0gV0xf T1VUUFVUX1JFTEVBU0VfU0lOQ0VfVkVSU0lPTikKKysgICAgICAgIHdsX291dHB1dDo6cmVsZWFz ZSgpOworK30KKysKKyt1aW50IFFXYXlsYW5kU2NyZWVuOjpyZXF1aXJlZEV2ZW50cygpIGNvbnN0 CisreworKyAgICB1aW50IHJldCA9IE91dHB1dERvbmVFdmVudDsKKysKKysgICAgaWYgKG1XYXls YW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigpKSB7CisrICAgICAgICByZXQgfD0gWGRnT3V0 cHV0TmFtZUV2ZW50OworKworKyAgICAgICAgaWYgKG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0 TWFuYWdlcigpLT52ZXJzaW9uKCkgPCAzKQorKyAgICAgICAgICAgIHJldCB8PSBYZGdPdXRwdXRE b25lRXZlbnQ7CisrICAgIH0KKysgICAgcmV0dXJuIHJldDsKKyB9CisgCisgdm9pZCBRV2F5bGFu ZFNjcmVlbjo6bWF5YmVJbml0aWFsaXplKCkKKyB7CisgICAgIFFfQVNTRVJUKCFtSW5pdGlhbGl6 ZWQpOworIAorLSAgICBpZiAoIW1PdXRwdXREb25lKQorLSAgICAgICAgcmV0dXJuOworLQorLSAg ICBpZiAobVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCkgJiYgIW1YZGdPdXRwdXRE b25lKQorKyAgICBjb25zdCB1aW50IHJlcXVpcmVkRXZlbnRzID0gdGhpcy0+cmVxdWlyZWRFdmVu dHMoKTsKKysgICAgaWYgKChtUHJvY2Vzc2VkRXZlbnRzICYgcmVxdWlyZWRFdmVudHMpICE9IHJl cXVpcmVkRXZlbnRzKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBtSW5pdGlhbGl6ZWQgPSB0 cnVlOworQEAgLTI3Niw5ICsyODksOCBAQCB2b2lkIFFXYXlsYW5kU2NyZWVuOjpvdXRwdXRfc2Nh bGUoaW50MzJfdCBmYWN0b3IpCisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6b3V0cHV0X2RvbmUo KQorIHsKKy0gICAgbU91dHB1dERvbmUgPSB0cnVlOworLSAgICBpZiAoenhkZ19vdXRwdXRfdjE6 OmlzSW5pdGlhbGl6ZWQoKSAmJiBtV2F5bGFuZERpc3BsYXktPnhkZ091dHB1dE1hbmFnZXIoKS0+ dmVyc2lvbigpID49IDMpCistICAgICAgICBtWGRnT3V0cHV0RG9uZSA9IHRydWU7CisrICAgIG1Q cm9jZXNzZWRFdmVudHMgfD0gT3V0cHV0RG9uZUV2ZW50OworKworICAgICBpZiAobUluaXRpYWxp emVkKSB7CisgICAgICAgICB1cGRhdGVPdXRwdXRQcm9wZXJ0aWVzKCk7CisgICAgICAgICBpZiAo enhkZ19vdXRwdXRfdjE6OmlzSW5pdGlhbGl6ZWQoKSkKK0BAIC0zMzksNyArMzUxLDcgQEAgdm9p ZCBRV2F5bGFuZFNjcmVlbjo6enhkZ19vdXRwdXRfdjFfZG9uZSgpCisgICAgIGlmIChRX1VOTElL RUxZKG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigpLT52ZXJzaW9uKCkgPj0gMykp CisgICAgICAgICBxV2FybmluZyhsY1FwYVdheWxhbmQpIDw8ICJ6eGRnX291dHB1dF92MS5kb25l IHJlY2VpdmVkIG9uIHZlcnNpb24gMyBvciBuZXdlciwgdGhpcyBpcyBtb3N0IGxpa2VseSBhIGJ1 ZyBpbiB0aGUgY29tcG9zaXRvciI7CisgCistICAgIG1YZGdPdXRwdXREb25lID0gdHJ1ZTsKKysg ICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBYZGdPdXRwdXREb25lRXZlbnQ7CisgICAgIGlmIChtSW5p dGlhbGl6ZWQpCisgICAgICAgICB1cGRhdGVYZGdPdXRwdXRQcm9wZXJ0aWVzKCk7CisgICAgIGVs c2UKK0BAIC0zNDgsNyArMzYwLDExIEBAIHZvaWQgUVdheWxhbmRTY3JlZW46Onp4ZGdfb3V0cHV0 X3YxX2RvbmUoKQorIAorIHZvaWQgUVdheWxhbmRTY3JlZW46Onp4ZGdfb3V0cHV0X3YxX25hbWUo Y29uc3QgUVN0cmluZyAmbmFtZSkKKyB7CisrICAgIGlmIChRX1VOTElLRUxZKG1Jbml0aWFsaXpl ZCkpCisrICAgICAgICBxV2FybmluZyhsY1FwYVdheWxhbmQpIDw8ICJ6eGRnX291dHB1dF92MS5u YW1lIHJlY2VpdmVkIGFmdGVyIG91dHB1dCBoYXMgYmVlbiBpbml0aWFsaXplZCwgdGhpcyBpcyBt b3N0IGxpa2VseSBhIGJ1ZyBpbiB0aGUgY29tcG9zaXRvciI7CisrCisgICAgIG1PdXRwdXROYW1l ID0gbmFtZTsKKysgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBYZGdPdXRwdXROYW1lRXZlbnQ7Cisg fQorIAorIHZvaWQgUVdheWxhbmRTY3JlZW46OnVwZGF0ZVhkZ091dHB1dFByb3BlcnRpZXMoKQor ZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuX3AuaCBiL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuX3AuaAoraW5kZXggZGYxYzk0ZjIuLjA1 MGNmZGMwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW5f cC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbl9wLmgKK0BAIC0x MTYsNiArMTE2LDEzIEBAIHB1YmxpYzoKKyAgICAgc3RhdGljIFFXYXlsYW5kU2NyZWVuICpmcm9t V2xPdXRwdXQoOjp3bF9vdXRwdXQgKm91dHB1dCk7CisgCisgcHJpdmF0ZToKKysgICAgZW51bSBF dmVudCA6IHVpbnQgeworKyAgICAgICAgWGRnT3V0cHV0RG9uZUV2ZW50ID0gMHgxLAorKyAgICAg ICAgT3V0cHV0RG9uZUV2ZW50ID0gMHgyLAorKyAgICAgICAgWGRnT3V0cHV0TmFtZUV2ZW50ID0g MHg0LAorKyAgICB9OworKyAgICB1aW50IHJlcXVpcmVkRXZlbnRzKCkgY29uc3Q7CisrCisgICAg IHZvaWQgb3V0cHV0X21vZGUodWludDMyX3QgZmxhZ3MsIGludCB3aWR0aCwgaW50IGhlaWdodCwg aW50IHJlZnJlc2gpIG92ZXJyaWRlOworICAgICB2b2lkIG91dHB1dF9nZW9tZXRyeShpbnQzMl90 IHgsIGludDMyX3QgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB3aWR0aCwg aW50MzJfdCBoZWlnaHQsCitAQCAtMTQ4LDggKzE1NSw3IEBAIHByaXZhdGU6CisgICAgIFFTaXpl IG1QaHlzaWNhbFNpemU7CisgICAgIFFTdHJpbmcgbU91dHB1dE5hbWU7CisgICAgIFF0OjpTY3Jl ZW5PcmllbnRhdGlvbiBtX29yaWVudGF0aW9uID0gUXQ6OlByaW1hcnlPcmllbnRhdGlvbjsKKy0g ICAgYm9vbCBtT3V0cHV0RG9uZSA9IGZhbHNlOworLSAgICBib29sIG1YZGdPdXRwdXREb25lID0g ZmFsc2U7CisrICAgIHVpbnQgbVByb2Nlc3NlZEV2ZW50cyA9IDA7CisgICAgIGJvb2wgbUluaXRp YWxpemVkID0gZmFsc2U7CisgCisgI2lmIFFUX0NPTkZJRyhjdXJzb3IpCitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzaG1iYWNraW5nc3RvcmUuY3BwIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRzaG1iYWNraW5nc3RvcmUuY3BwCitpbmRleCBkYzdmZjY3 MC4uNDFjZmZkZjcgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNo bWJhY2tpbmdzdG9yZS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2ht YmFja2luZ3N0b3JlLmNwcAorQEAgLTUyLDYgKzUyLDcgQEAKKyAKKyAjaW5jbHVkZSA8UXRXYXls YW5kQ2xpZW50L3ByaXZhdGUvd2F5bGFuZC13YXlsYW5kLWNsaWVudC1wcm90b2NvbC5oPgorIAor KyNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8c3lz L21tYW4uaD4KKyAKK0BAIC02MSw2ICs2Miw5IEBACisgIyAgaWZuZGVmIE1GRF9DTE9FWEVDCisg IyAgICBkZWZpbmUgTUZEX0NMT0VYRUMgICAgIDB4MDAwMVUKKyAjICBlbmRpZgorKyMgIGlmbmRl ZiBNRkRfQUxMT1dfU0VBTElORworKyMgICAgZGVmaW5lIE1GRF9BTExPV19TRUFMSU5HIDB4MDAw MlUKKysjICBlbmRpZgorICNlbmRpZgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorQEAgLTc0LDgg Kzc4LDEwIEBAIFFXYXlsYW5kU2htQnVmZmVyOjpRV2F5bGFuZFNobUJ1ZmZlcihRV2F5bGFuZERp c3BsYXkgKmRpc3BsYXksCisgICAgIGludCBhbGxvYyA9IHN0cmlkZSAqIHNpemUuaGVpZ2h0KCk7 CisgICAgIGludCBmZCA9IC0xOworIAorLSNpZmRlZiBTWVNfbWVtZmRfY3JlYXRlCistICAgIGZk ID0gc3lzY2FsbChTWVNfbWVtZmRfY3JlYXRlLCAid2F5bGFuZC1zaG0iLCBNRkRfQ0xPRVhFQyk7 CisrI2lmIGRlZmluZWQoU1lTX21lbWZkX2NyZWF0ZSkgJiYgZGVmaW5lZChGX1NFQUxfU0VBTCkK KysgICAgZmQgPSBzeXNjYWxsKFNZU19tZW1mZF9jcmVhdGUsICJ3YXlsYW5kLXNobSIsIE1GRF9D TE9FWEVDIHwgTUZEX0FMTE9XX1NFQUxJTkcpOworKyAgICBpZiAoZmQgPj0gMCkKKysgICAgICAg IGZjbnRsKGZkLCBGX0FERF9TRUFMUywgRl9TRUFMX1NIUklOSyB8IEZfU0VBTF9TRUFMKTsKKyAj ZW5kaWYKKyAKKyAgICAgUVNjb3BlZFBvaW50ZXI8UUZpbGU+IGZpbGVQb2ludGVyOworZGlmZiAt LWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNwcCBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNwcAoraW5kZXggY2I4Mjg1N2EuLmZiMmM1OWRj IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3cuY3BwCisr KysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvdy5jcHAKK0BAIC03Niw3ICs3 Niw2IEBAIFFXYXlsYW5kV2luZG93ICpRV2F5bGFuZFdpbmRvdzo6bU1vdXNlR3JhYiA9IG51bGxw dHI7CisgUVdheWxhbmRXaW5kb3c6OlFXYXlsYW5kV2luZG93KFFXaW5kb3cgKndpbmRvdywgUVdh eWxhbmREaXNwbGF5ICpkaXNwbGF5KQorICAgICA6IFFQbGF0Zm9ybVdpbmRvdyh3aW5kb3cpCisg ICAgICwgbURpc3BsYXkoZGlzcGxheSkKKy0gICAgLCBtRnJhbWVRdWV1ZShtRGlzcGxheS0+Y3Jl YXRlRnJhbWVRdWV1ZSgpKQorICAgICAsIG1SZXNpemVBZnRlclN3YXAocUVudmlyb25tZW50VmFy aWFibGVJc1NldCgiUVRfV0FZTEFORF9SRVNJWkVfQUZURVJfU1dBUCIpKQorIHsKKyAgICAgewor QEAgLTk1LDkgKzk0LDYgQEAgUVdheWxhbmRXaW5kb3c6OlFXYXlsYW5kV2luZG93KFFXaW5kb3cg KndpbmRvdywgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KQorIAorIFFXYXlsYW5kV2luZG93Ojp+ UVdheWxhbmRXaW5kb3coKQorIHsKKy0gICAgbURpc3BsYXktPmRlc3Ryb3lGcmFtZVF1ZXVlKG1G cmFtZVF1ZXVlKTsKKy0gICAgbURpc3BsYXktPmhhbmRsZVdpbmRvd0Rlc3Ryb3llZCh0aGlzKTsK Ky0KKyAgICAgZGVsZXRlIG1XaW5kb3dEZWNvcmF0aW9uOworIAorICAgICBpZiAobVN1cmZhY2Up CitAQCAtMjQzLDYgKzIzOSw3IEBAIGJvb2wgUVdheWxhbmRXaW5kb3c6OnNob3VsZENyZWF0ZVN1 YlN1cmZhY2UoKSBjb25zdAorIAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlc2V0KCkKKyB7Cisr ICAgIGNsb3NlQ2hpbGRQb3B1cHMoKTsKKyAgICAgZGVsZXRlIG1TaGVsbFN1cmZhY2U7CisgICAg IG1TaGVsbFN1cmZhY2UgPSBudWxscHRyOworICAgICBkZWxldGUgbVN1YlN1cmZhY2VXaW5kb3c7 CitAQCAtMjU1LDE3ICsyNTIsMjIgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVzZXQoKQorICAg ICAgICAgbVN1cmZhY2UucmVzZXQoKTsKKyAgICAgfQorIAorLSAgICBpZiAobUZyYW1lQ2FsbGJh Y2spIHsKKy0gICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3kobUZyYW1lQ2FsbGJhY2spOworLSAg ICAgICAgbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOworLSAgICB9CisrICAgIHsKKysgICAgICAg IFFNdXRleExvY2tlciBsb2NrKCZtRnJhbWVTeW5jTXV0ZXgpOworKyAgICAgICAgaWYgKG1GcmFt ZUNhbGxiYWNrKSB7CisrICAgICAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShtRnJhbWVDYWxs YmFjayk7CisrICAgICAgICAgICAgbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOworKyAgICAgICAg fQorIAorLSAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CistICAg IG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNlOworKyAgICAgICAgbUZyYW1lQ2FsbGJh Y2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworKyAgICAgICAgbVdhaXRpbmdGb3JGcmFtZUNh bGxiYWNrID0gZmFsc2U7CisrICAgIH0KKyAgICAgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9IGZh bHNlOworIAorICAgICBtTWFzayA9IFFSZWdpb24oKTsKKyAgICAgbVF1ZXVlZEJ1ZmZlciA9IG51 bGxwdHI7CisrCisrICAgIG1EaXNwbGF5LT5oYW5kbGVXaW5kb3dEZXN0cm95ZWQodGhpcyk7Cisg fQorIAorIFFXYXlsYW5kV2luZG93ICpRV2F5bGFuZFdpbmRvdzo6ZnJvbVdsU3VyZmFjZSg6Onds X3N1cmZhY2UgKnN1cmZhY2UpCitAQCAtMzUxLDE5ICszNTMsMjUgQEAgdm9pZCBRV2F5bGFuZFdp bmRvdzo6c2V0R2VvbWV0cnlfaGVscGVyKGNvbnN0IFFSZWN0ICZyZWN0KQorICAgICB9CisgfQor IAorLXZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21ldHJ5KGNvbnN0IFFSZWN0ICZyZWN0KQor K3ZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21ldHJ5KGNvbnN0IFFSZWN0ICZyKQorIHsKKysg ICAgYXV0byByZWN0ID0gcjsKKysgICAgaWYgKGZpeGVkVG9wbGV2ZWxQb3NpdGlvbnMgJiYgIVFQ bGF0Zm9ybVdpbmRvdzo6cGFyZW50KCkgJiYgd2luZG93KCktPnR5cGUoKSAhPSBRdDo6UG9wdXAK KysgICAgICAgICYmIHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6OlRvb2xUaXApIHsKKysgICAgICAg IHJlY3QubW92ZVRvKHNjcmVlbigpLT5nZW9tZXRyeSgpLnRvcExlZnQoKSk7CisrICAgIH0KKyAg ICAgc2V0R2VvbWV0cnlfaGVscGVyKHJlY3QpOworIAorICAgICBpZiAod2luZG93KCktPmlzVmlz aWJsZSgpICYmIHJlY3QuaXNWYWxpZCgpKSB7CisgICAgICAgICBpZiAobVdpbmRvd0RlY29yYXRp b24pCisgICAgICAgICAgICAgbVdpbmRvd0RlY29yYXRpb24tPnVwZGF0ZSgpOworIAorLSAgICAg ICAgaWYgKG1SZXNpemVBZnRlclN3YXAgJiYgd2luZG93VHlwZSgpID09IEVnbCAmJiBtU2VudElu aXRpYWxSZXNpemUpCisrICAgICAgICBpZiAobVJlc2l6ZUFmdGVyU3dhcCAmJiB3aW5kb3dUeXBl KCkgPT0gRWdsICYmIG1TZW50SW5pdGlhbFJlc2l6ZSkgeworKyAgICAgICAgICAgIFFNdXRleExv Y2tlciBsb2NrKCZtUmVzaXplTG9jayk7CisgICAgICAgICAgICAgbVJlc2l6ZURpcnR5ID0gdHJ1 ZTsKKy0gICAgICAgIGVsc2UKKysgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgUVdpbmRv d1N5c3RlbUludGVyZmFjZTo6aGFuZGxlR2VvbWV0cnlDaGFuZ2Uod2luZG93KCksIGdlb21ldHJ5 KCkpOworLQorKyAgICAgICAgfQorICAgICAgICAgbVNlbnRJbml0aWFsUmVzaXplID0gdHJ1ZTsK KyAgICAgfQorICAgICBRUmVjdCBleHBvc2VHZW9tZXRyeShRUG9pbnQoKSwgZ2VvbWV0cnkoKS5z aXplKCkpOworQEAgLTM3NCw3ICszODIsNyBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZXRHZW9t ZXRyeShjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgICAgIG1TaGVsbFN1cmZhY2UtPnNldFdpbmRv d0dlb21ldHJ5KHdpbmRvd0NvbnRlbnRHZW9tZXRyeSgpKTsKKyAKKyAgICAgaWYgKGlzT3BhcXVl KCkgJiYgbU1hc2suaXNFbXB0eSgpKQorLSAgICAgICAgc2V0T3BhcXVlQXJlYShyZWN0KTsKKysg ICAgICAgIHNldE9wYXF1ZUFyZWEoUVJlY3QoUVBvaW50KDAsIDApLCByZWN0LnNpemUoKSkpOwor IH0KKyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXNpemVGcm9tQXBwbHlDb25maWd1cmUoY29u c3QgUVNpemUgJnNpemVXaXRoTWFyZ2lucywgY29uc3QgUVBvaW50ICZvZmZzZXQpCitAQCAtMzk5 LDIxICs0MDcsNiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZW5kRXhwb3NlRXZlbnQoY29uc3Qg UVJlY3QgJnJlY3QpCisgICAgIG1MYXN0RXhwb3NlR2VvbWV0cnkgPSByZWN0OworIH0KKyAKKy0K Ky1zdGF0aWMgUVZlY3RvcjxRUG9pbnRlcjxRV2F5bGFuZFdpbmRvdz4+IGFjdGl2ZVBvcHVwczsK Ky0KKy12b2lkIFFXYXlsYW5kV2luZG93OjpjbG9zZVBvcHVwcyhRV2F5bGFuZFdpbmRvdyAqcGFy ZW50KQorLXsKKy0gICAgd2hpbGUgKCFhY3RpdmVQb3B1cHMuaXNFbXB0eSgpKSB7CistICAgICAg ICBhdXRvIHBvcHVwID0gYWN0aXZlUG9wdXBzLnRha2VMYXN0KCk7CistICAgICAgICBpZiAocG9w dXAuaXNOdWxsKCkpCistICAgICAgICAgICAgY29udGludWU7CistICAgICAgICBpZiAocG9wdXAu ZGF0YSgpID09IHBhcmVudCkKKy0gICAgICAgICAgICByZXR1cm47CistICAgICAgICBwb3B1cC0+ cmVzZXQoKTsKKy0gICAgfQorLX0KKy0KKyBRUGxhdGZvcm1TY3JlZW4gKlFXYXlsYW5kV2luZG93 OjpjYWxjdWxhdGVTY3JlZW5Gcm9tU3VyZmFjZUV2ZW50cygpIGNvbnN0CisgeworICAgICBRUmVh ZExvY2tlciBsb2NrKCZtU3VyZmFjZUxvY2spOworQEAgLTQzMywxMCArNDI2LDcgQEAgdm9pZCBR V2F5bGFuZFdpbmRvdzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCisgICAgIGxhc3RWaXNpYmxl ID0gdmlzaWJsZTsKKyAKKyAgICAgaWYgKHZpc2libGUpIHsKKy0gICAgICAgIGlmICh3aW5kb3co KS0+dHlwZSgpID09IFF0OjpQb3B1cCB8fCB3aW5kb3coKS0+dHlwZSgpID09IFF0OjpUb29sVGlw KQorLSAgICAgICAgICAgIGFjdGl2ZVBvcHVwcyA8PCB0aGlzOworICAgICAgICAgaW5pdFdpbmRv dygpOworLSAgICAgICAgbURpc3BsYXktPmZsdXNoUmVxdWVzdHMoKTsKKyAKKyAgICAgICAgIHNl dEdlb21ldHJ5KHdpbmRvd0dlb21ldHJ5KCkpOworICAgICAgICAgLy8gRG9uJ3QgZmx1c2ggdGhl IGV2ZW50cyBoZXJlLCBvciBlbHNlIHRoZSBuZXdseSB2aXNpYmxlIHdpbmRvdyBtYXkgc3RhcnQg ZHJhd2luZywgYnV0IHNpbmNlCitAQCAtNDQ0LDcgKzQzNCw2IEBAIHZvaWQgUVdheWxhbmRXaW5k b3c6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQorICAgICAgICAgLy8gUVdheWxhbmRTaG1CYWNr aW5nU3RvcmU6OmJlZ2luUGFpbnQoKS4KKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIHNlbmRFeHBv c2VFdmVudChRUmVjdCgpKTsKKy0gICAgICAgIGNsb3NlUG9wdXBzKHRoaXMpOworICAgICAgICAg cmVzZXQoKTsKKyAgICAgfQorIH0KK0BAIC01NTYsMTIgKzU0NSwxMiBAQCB2b2lkIFFXYXlsYW5k V2luZG93OjpzZW5kUmVjdXJzaXZlRXhwb3NlRXZlbnQoKQorIAorIHZvaWQgUVdheWxhbmRXaW5k b3c6OmF0dGFjaChRV2F5bGFuZEJ1ZmZlciAqYnVmZmVyLCBpbnQgeCwgaW50IHkpCisgeworLSAg ICBRX0FTU0VSVCghYnVmZmVyLT5jb21taXR0ZWQoKSk7CisgICAgIFFSZWFkTG9ja2VyIGxvY2tl cigmbVN1cmZhY2VMb2NrKTsKKyAgICAgaWYgKG1TdXJmYWNlID09IG51bGxwdHIpCisgICAgICAg ICByZXR1cm47CisgCisgICAgIGlmIChidWZmZXIpIHsKKysgICAgICAgIFFfQVNTRVJUKCFidWZm ZXItPmNvbW1pdHRlZCgpKTsKKyAgICAgICAgIGhhbmRsZVVwZGF0ZSgpOworICAgICAgICAgYnVm ZmVyLT5zZXRCdXN5KCk7CisgCitAQCAtNTgzLDcgKzU3MiwxMSBAQCB2b2lkIFFXYXlsYW5kV2lu ZG93OjpkYW1hZ2UoY29uc3QgUVJlY3QgJnJlY3QpCisgICAgIGlmIChtU3VyZmFjZSA9PSBudWxs cHRyKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBtU3VyZmFjZS0+ZGFtYWdlKHJlY3QueCgp LCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKysgICAgY29uc3QgaW50 IHMgPSBzY2FsZSgpOworKyAgICBpZiAobURpc3BsYXktPmNvbXBvc2l0b3JWZXJzaW9uKCkgPj0g NCkKKysgICAgICAgIG1TdXJmYWNlLT5kYW1hZ2VfYnVmZmVyKHMgKiByZWN0LngoKSwgcyAqIHJl Y3QueSgpLCBzICogcmVjdC53aWR0aCgpLCBzICogcmVjdC5oZWlnaHQoKSk7CisrICAgIGVsc2UK KysgICAgICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRo KCksIHJlY3QuaGVpZ2h0KCkpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpzYWZlQ29t bWl0KFFXYXlsYW5kQnVmZmVyICpidWZmZXIsIGNvbnN0IFFSZWdpb24gJmRhbWFnZSkKK0BAIC02 MTksOCArNjEyLDE0IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmNvbW1pdChRV2F5bGFuZEJ1ZmZl ciAqYnVmZmVyLCBjb25zdCBRUmVnaW9uICZkYW1hZ2UpCisgICAgICAgICByZXR1cm47CisgCisg ICAgIGF0dGFjaE9mZnNldChidWZmZXIpOworLSAgICBmb3IgKGNvbnN0IFFSZWN0ICZyZWN0OiBk YW1hZ2UpCistICAgICAgICBtU3VyZmFjZS0+ZGFtYWdlKHJlY3QueCgpLCByZWN0LnkoKSwgcmVj dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKysgICAgaWYgKG1EaXNwbGF5LT5jb21wb3NpdG9y VmVyc2lvbigpID49IDQpIHsKKysgICAgICAgIGNvbnN0IGludCBzID0gc2NhbGUoKTsKKysgICAg ICAgIGZvciAoY29uc3QgUVJlY3QgJnJlY3Q6IGRhbWFnZSkKKysgICAgICAgICAgICBtU3VyZmFj ZS0+ZGFtYWdlX2J1ZmZlcihzICogcmVjdC54KCksIHMgKiByZWN0LnkoKSwgcyAqIHJlY3Qud2lk dGgoKSwgcyAqIHJlY3QuaGVpZ2h0KCkpOworKyAgICB9IGVsc2UgeworKyAgICAgICAgZm9yIChj b25zdCBRUmVjdCAmcmVjdDogZGFtYWdlKQorKyAgICAgICAgICAgIG1TdXJmYWNlLT5kYW1hZ2Uo cmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworKyAgICB9 CisgICAgIFFfQVNTRVJUKCFidWZmZXItPmNvbW1pdHRlZCgpKTsKKyAgICAgYnVmZmVyLT5zZXRD b21taXR0ZWQoKTsKKyAgICAgbVN1cmZhY2UtPmNvbW1pdCgpOworQEAgLTYzNSw0MiArNjM0LDUz IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmNvbW1pdCgpCisgCisgY29uc3Qgd2xfY2FsbGJhY2tf bGlzdGVuZXIgUVdheWxhbmRXaW5kb3c6OmNhbGxiYWNrTGlzdGVuZXIgPSB7CisgICAgIFtdKHZv aWQgKmRhdGEsIHdsX2NhbGxiYWNrICpjYWxsYmFjaywgdWludDMyX3QgdGltZSkgeworLSAgICAg ICAgUV9VTlVTRUQoY2FsbGJhY2spOworICAgICAgICAgUV9VTlVTRUQodGltZSk7CisgICAgICAg ICBhdXRvICp3aW5kb3cgPSBzdGF0aWNfY2FzdDxRV2F5bGFuZFdpbmRvdyo+KGRhdGEpOworLSAg ICAgICAgd2luZG93LT5oYW5kbGVGcmFtZUNhbGxiYWNrKCk7CisrICAgICAgICB3aW5kb3ctPmhh bmRsZUZyYW1lQ2FsbGJhY2soY2FsbGJhY2spOworICAgICB9CisgfTsKKyAKKy12b2lkIFFXYXls YW5kV2luZG93OjpoYW5kbGVGcmFtZUNhbGxiYWNrKCkKKyt2b2lkIFFXYXlsYW5kV2luZG93Ojpo YW5kbGVGcmFtZUNhbGxiYWNrKHdsX2NhbGxiYWNrKiBjYWxsYmFjaykKKyB7CisrICAgIFFNdXRl eExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrICAgIGlmICghbUZyYW1lQ2FsbGJh Y2spIHsKKysgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGNhbGxiYWNrIGlzIGFscmVhZHkgdW5z ZXQgYnkgUVdheWxhbmRXaW5kb3c6OnJlc2V0LgorKyAgICAgICAgLy8gVGhlIHdsX2NhbGxiYWNr IG9iamVjdCB3aWxsIGJlIGRlc3Ryb3llZCB0aGVyZSB0b28uCisrICAgICAgICByZXR1cm47Cisr ICAgIH0KKysgICAgUV9BU1NFUlQoY2FsbGJhY2sgPT0gbUZyYW1lQ2FsbGJhY2spOworKyAgICB3 bF9jYWxsYmFja19kZXN0cm95KGNhbGxiYWNrKTsKKysgICAgbUZyYW1lQ2FsbGJhY2sgPSBudWxs cHRyOworKworICAgICBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgPSBmYWxzZTsKKyAgICAgbUZy YW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworIAorICAgICAvLyBUaGUgcmVz dCBjYW4gd2FpdCB1bnRpbCB3ZSBjYW4gcnVuIGl0IG9uIHRoZSBjb3JyZWN0IHRocmVhZAorLSAg ICBpZiAoIW1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkpIHsKKy0gICAgICAgIGF1dG8gZG9IYW5k bGVFeHBvc2UgPSBbdGhpc10oKSB7CistICAgICAgICAgICAgYm9vbCB3YXNFeHBvc2VkID0gaXNF eHBvc2VkKCk7CistICAgICAgICAgICAgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9IGZhbHNlOwor LSAgICAgICAgICAgIGlmICghd2FzRXhwb3NlZCAmJiBpc0V4cG9zZWQoKSkgLy8gRGlkIHNldHRp bmcgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCBtYWtlIHRoZSB3aW5kb3cgZXhwb3NlZD8KKy0gICAg ICAgICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KFFQb2ludCgpLCBnZW9tZXRyeSgpLnNp emUoKSkpOworLSAgICAgICAgICAgIGlmICh3YXNFeHBvc2VkICYmIGhhc1BlbmRpbmdVcGRhdGVS ZXF1ZXN0KCkpCistICAgICAgICAgICAgICAgIGRlbGl2ZXJVcGRhdGVSZXF1ZXN0KCk7CistCist ICAgICAgICAgICAgbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSA9IGZhbHNlOworLSAgICAgICAg fTsKKysgICAgYXV0byBkb0hhbmRsZUV4cG9zZSA9IFt0aGlzXSgpIHsKKysgICAgICAgIG1XYWl0 aW5nRm9yVXBkYXRlRGVsaXZlcnkuc3RvcmVSZWxlYXNlKGZhbHNlKTsKKysgICAgICAgIGJvb2wg d2FzRXhwb3NlZCA9IGlzRXhwb3NlZCgpOworKyAgICAgICAgbUZyYW1lQ2FsbGJhY2tUaW1lZE91 dCA9IGZhbHNlOworKyAgICAgICAgaWYgKCF3YXNFeHBvc2VkICYmIGlzRXhwb3NlZCgpKSAvLyBE aWQgc2V0dGluZyBtRnJhbWVDYWxsYmFja1RpbWVkT3V0IG1ha2UgdGhlIHdpbmRvdyBleHBvc2Vk PworKyAgICAgICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdChRUG9pbnQoKSwgZ2VvbWV0cnko KS5zaXplKCkpKTsKKysgICAgICAgIGlmICh3YXNFeHBvc2VkICYmIGhhc1BlbmRpbmdVcGRhdGVS ZXF1ZXN0KCkpCisrICAgICAgICAgICAgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKTsKKysgICAgfTsK KyAKKysgICAgaWYgKG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkudGVzdEFuZFNldEFjcXVpcmUo ZmFsc2UsIHRydWUpKSB7CisgICAgICAgICAvLyBRdWV1ZWQgY29ubmVjdGlvbiwgdG8gbWFrZSBz dXJlIHdlIGRvbid0IGNhbGwgaGFuZGxlVXBkYXRlKCkgZnJvbSBpbnNpZGUgd2FpdEZvckZyYW1l U3luYygpCisgICAgICAgICAvLyBpbiB0aGUgc2luZ2xlLXRocmVhZGVkIGNhc2UuCistICAgICAg ICBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gdHJ1ZTsKKyAgICAgICAgIFFNZXRhT2JqZWN0 OjppbnZva2VNZXRob2QodGhpcywgZG9IYW5kbGVFeHBvc2UsIFF0OjpRdWV1ZWRDb25uZWN0aW9u KTsKKyAgICAgfQorKworKyAgICBtRnJhbWVTeW5jV2FpdC5ub3RpZnlfYWxsKCk7CisgfQorIAor IGJvb2wgUVdheWxhbmRXaW5kb3c6OndhaXRGb3JGcmFtZVN5bmMoaW50IHRpbWVvdXQpCisgewor LSAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKG1GcmFtZVF1ZXVlLm11dGV4KTsKKy0gICAgbURpc3Bs YXktPmRpc3BhdGNoUXVldWVXaGlsZShtRnJhbWVRdWV1ZS5xdWV1ZSwgWyZdKCkgeyByZXR1cm4g bVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrOyB9LCB0aW1lb3V0KTsKKysgICAgUU11dGV4TG9ja2Vy IGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysKKysgICAgUURlYWRsaW5lVGltZXIgZGVhZGxp bmUodGltZW91dCk7CisrICAgIHdoaWxlIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgJiYgbUZy YW1lU3luY1dhaXQud2FpdCgmbUZyYW1lU3luY011dGV4LCBkZWFkbGluZSkpIHsgfQorIAorICAg ICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKSB7CisgICAgICAgICBxQ0RlYnVnKGxjV2F5 bGFuZEJhY2tpbmdzdG9yZSkgPDwgIkRpZG4ndCByZWNlaXZlIGZyYW1lIGNhbGxiYWNrIGluIHRp bWUsIHdpbmRvdyBzaG91bGQgbm93IGJlIGluZXhwb3NlZCI7CitAQCAtODY4LDYgKzg3OCwxNyBA QCBib29sIFFXYXlsYW5kV2luZG93OjpjcmVhdGVEZWNvcmF0aW9uKCkKKyAgICAgICAgICAgICBz dWJzdXJmLT5zZXRfcG9zaXRpb24ocG9zLngoKSArIG0ubGVmdCgpLCBwb3MueSgpICsgbS50b3Ao KSk7CisgICAgICAgICB9CisgICAgICAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoUVBvaW50KCks IGdlb21ldHJ5KCkuc2l6ZSgpKSk7CisrCisrICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lhbCBj YXNlIHdoZXJlIHRoZSBidWZmZXIgaXMgcmVjcmVhdGVkLCBidXQgc2luY2UKKysgICAgICAgIC8v IHRoZSBjb250ZW50IHJlY3QgcmVtYWlucyB0aGUgc2FtZSwgdGhlIHdpZGdldHMgcmVtYWluIHRo ZSBzYW1lCisrICAgICAgICAvLyBzaXplIGFuZCBhcmUgbm90IHJlZHJhd24sIGxlYXZpbmcgdGhl IG5ldyBidWZmZXIgZW1wdHkuIEFzIGEgc2ltcGxlCisrICAgICAgICAvLyB3b3JrLWFyb3VuZCwg d2UgdHJpZ2dlciBhIGZ1bGwgZXh0cmEgdXBkYXRlIHdoZW5ldmVyIHRoZSBjbGllbnQtc2lkZQor KyAgICAgICAgLy8gd2luZG93IGRlY29yYXRpb25zIGFyZSB0b2dnbGVkIHdoaWxlIHRoZSB3aW5k b3cgaXMgc2hvd2luZy4KKysgICAgICAgIC8vIE5vdGU6IGNyZWF0ZURlY29yYXRpb24oKSBpcyBz b21ldGltZXMgY2FsbGVkIGZyb20gdGhlIHJlbmRlciB0aHJlYWQKKysgICAgICAgIC8vIG9mIFF0 IFF1aWNrLiBUaGlzIGlzIGVzc2VudGlhbGx5IHdyb25nIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBj YXVzZSBwcm9ibGVtcywKKysgICAgICAgIC8vIGJ1dCB1bnRpbCB0aGUgdW5kZXJseWluZyBpc3N1 ZSBoYXMgYmVlbiBmaXhlZCwgd2UgaGF2ZSB0byB1c2UgaW52b2tlTWV0aG9kKCkKKysgICAgICAg IC8vIGhlcmUgdG8gYXZvaWQgYXNzZXJ0cy4KKysgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VN ZXRob2Qod2luZG93KCksICZRV2luZG93OjpyZXF1ZXN0VXBkYXRlKTsKKyAgICAgfQorIAorICAg ICByZXR1cm4gbVdpbmRvd0RlY29yYXRpb247CitAQCAtMTAyMyw2ICsxMDQ0LDEzIEBAIHZvaWQg UVdheWxhbmRXaW5kb3c6OmhhbmRsZVNjcmVlbnNDaGFuZ2VkKCkKKyAKKyAgICAgUVdpbmRvd1N5 c3RlbUludGVyZmFjZTo6aGFuZGxlV2luZG93U2NyZWVuQ2hhbmdlZCh3aW5kb3coKSwgbmV3U2Ny ZWVuLT5RUGxhdGZvcm1TY3JlZW46OnNjcmVlbigpKTsKKyAgICAgbUxhc3RSZXBvcnRlZFNjcmVl biA9IG5ld1NjcmVlbjsKKysgICAgaWYgKGZpeGVkVG9wbGV2ZWxQb3NpdGlvbnMgJiYgIVFQbGF0 Zm9ybVdpbmRvdzo6cGFyZW50KCkgJiYgd2luZG93KCktPnR5cGUoKSAhPSBRdDo6UG9wdXAKKysg ICAgICAgICYmIHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6OlRvb2xUaXAKKysgICAgICAgICYmIGdl b21ldHJ5KCkudG9wTGVmdCgpICE9IG5ld1NjcmVlbi0+Z2VvbWV0cnkoKS50b3BMZWZ0KCkpIHsK KysgICAgICAgIGF1dG8gZ2VvbWV0cnkgPSB0aGlzLT5nZW9tZXRyeSgpOworKyAgICAgICAgZ2Vv bWV0cnkubW92ZVRvKG5ld1NjcmVlbi0+Z2VvbWV0cnkoKS50b3BMZWZ0KCkpOworKyAgICAgICAg c2V0R2VvbWV0cnkoZ2VvbWV0cnkpOworKyAgICB9CisgCisgICAgIGludCBzY2FsZSA9IG5ld1Nj cmVlbi0+aXNQbGFjZWhvbGRlcigpID8gMSA6IHN0YXRpY19jYXN0PFFXYXlsYW5kU2NyZWVuICo+ KG5ld1NjcmVlbiktPnNjYWxlKCk7CisgICAgIGlmIChzY2FsZSAhPSBtU2NhbGUpIHsKK0BAIC0x MDk0LDEwICsxMTIyLDE4IEBAIGJvb2wgUVdheWxhbmRXaW5kb3c6OnNldE1vdXNlR3JhYkVuYWJs ZWQoYm9vbCBncmFiKQorICAgICByZXR1cm4gdHJ1ZTsKKyB9CisgCisrUXQ6OldpbmRvd1N0YXRl cyBRV2F5bGFuZFdpbmRvdzo6d2luZG93U3RhdGVzKCkgY29uc3QKKyt7CisrICAgIHJldHVybiBt TGFzdFJlcG9ydGVkV2luZG93U3RhdGVzOworK30KKysKKyB2b2lkIFFXYXlsYW5kV2luZG93Ojpo YW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGVzKQorIHsKKyAg ICAgY3JlYXRlRGVjb3JhdGlvbigpOworLSAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5k bGVXaW5kb3dTdGF0ZUNoYW5nZWQod2luZG93KCksIHN0YXRlcywgbUxhc3RSZXBvcnRlZFdpbmRv d1N0YXRlcyk7CisrICAgIFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGVzV2l0aG91dEFjdGl2ZSA9IHN0 YXRlcyAmIH5RdDo6V2luZG93QWN0aXZlOworKyAgICBRdDo6V2luZG93U3RhdGVzIGxhc3RTdGF0 ZXNXaXRob3V0QWN0aXZlID0gbUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRlcyAmIH5RdDo6V2luZG93 QWN0aXZlOworKyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dTdGF0ZUNo YW5nZWQod2luZG93KCksIHN0YXRlc1dpdGhvdXRBY3RpdmUsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0U3RhdGVzV2l0aG91dEFjdGl2 ZSk7CisgICAgIG1MYXN0UmVwb3J0ZWRXaW5kb3dTdGF0ZXMgPSBzdGF0ZXM7CisgfQorIAorQEAg LTExMzksMTkgKzExNzUsMjQgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6dGltZXJFdmVudChRVGlt ZXJFdmVudCAqZXZlbnQpCisgICAgIGlmIChldmVudC0+dGltZXJJZCgpICE9IG1GcmFtZUNhbGxi YWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQpCisgICAgICAgICByZXR1cm47CisgCistICAgIGJvb2wg Y2FsbGJhY2tUaW1lckV4cGlyZWQgPSBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5oYXNFeHBp cmVkKG1GcmFtZUNhbGxiYWNrVGltZW91dCk7CistICAgIGlmICghbUZyYW1lQ2FsbGJhY2tFbGFw c2VkVGltZXIuaXNWYWxpZCgpIHx8IGNhbGxiYWNrVGltZXJFeHBpcmVkICkgeworLSAgICAgICAg a2lsbFRpbWVyKG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQpOworLSAgICAgICAg bUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA9IC0xOworLSAgICB9CistICAgIGlm IChtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pc1ZhbGlkKCkgJiYgY2FsbGJhY2tUaW1lckV4 cGlyZWQpIHsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmludmFsaWRhdGUo KTsKKysgICAgeworKyAgICAgICAgUU11dGV4TG9ja2VyIGxvY2soJm1GcmFtZVN5bmNNdXRleCk7 CisgCistICAgICAgICBxQ0RlYnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9yZSkgPDwgIkRpZG4ndCBy ZWNlaXZlIGZyYW1lIGNhbGxiYWNrIGluIHRpbWUsIHdpbmRvdyBzaG91bGQgbm93IGJlIGluZXhw b3NlZCI7CistICAgICAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gdHJ1ZTsKKy0gICAgICAg IG1XYWl0aW5nRm9yVXBkYXRlID0gZmFsc2U7CistICAgICAgICBzZW5kRXhwb3NlRXZlbnQoUVJl Y3QoKSk7CisrICAgICAgICBib29sIGNhbGxiYWNrVGltZXJFeHBpcmVkID0gbUZyYW1lQ2FsbGJh Y2tFbGFwc2VkVGltZXIuaGFzRXhwaXJlZChtRnJhbWVDYWxsYmFja1RpbWVvdXQpOworKyAgICAg ICAgaWYgKCFtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pc1ZhbGlkKCkgfHwgY2FsbGJhY2tU aW1lckV4cGlyZWQgKSB7CisrICAgICAgICAgICAga2lsbFRpbWVyKG1GcmFtZUNhbGxiYWNrQ2hl Y2tJbnRlcnZhbFRpbWVySWQpOworKyAgICAgICAgICAgIG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRl cnZhbFRpbWVySWQgPSAtMTsKKysgICAgICAgIH0KKysgICAgICAgIGlmICghbUZyYW1lQ2FsbGJh Y2tFbGFwc2VkVGltZXIuaXNWYWxpZCgpIHx8ICFjYWxsYmFja1RpbWVyRXhwaXJlZCkgeworKyAg ICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysgICAgICAgIG1GcmFtZUNhbGxiYWNrRWxh cHNlZFRpbWVyLmludmFsaWRhdGUoKTsKKyAgICAgfQorKworKyAgICBxQ0RlYnVnKGxjV2F5bGFu ZEJhY2tpbmdzdG9yZSkgPDwgIkRpZG4ndCByZWNlaXZlIGZyYW1lIGNhbGxiYWNrIGluIHRpbWUs IHdpbmRvdyBzaG91bGQgbm93IGJlIGluZXhwb3NlZCI7CisrICAgIG1GcmFtZUNhbGxiYWNrVGlt ZWRPdXQgPSB0cnVlOworKyAgICBtV2FpdGluZ0ZvclVwZGF0ZSA9IGZhbHNlOworKyAgICBzZW5k RXhwb3NlRXZlbnQoUVJlY3QoKSk7CisgfQorIAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlcXVl c3RVcGRhdGUoKQorQEAgLTExNjAsOCArMTIwMSwxMSBAQCB2b2lkIFFXYXlsYW5kV2luZG93Ojpy ZXF1ZXN0VXBkYXRlKCkKKyAgICAgUV9BU1NFUlQoaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSk7 IC8vIHNob3VsZCBiZSBzZXQgYnkgUVBBCisgCisgICAgIC8vIElmIHdlIGhhdmUgYSBmcmFtZSBj YWxsYmFjayBhbGwgaXMgZ29vZCBhbmQgd2lsbCBiZSB0YWtlbiBjYXJlIG9mIHRoZXJlCistICAg IGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCistICAgICAgICByZXR1cm47CisrICAgIHsK KysgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrICAgICAg ICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQorKyAgICAgICAgICAgIHJldHVybjsKKysg ICAgfQorIAorICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGNhbGxlZCBkZWxpdmVyVXBkYXRlUmVx dWVzdCgpLCBidXQgaGF2ZW4ndCBzZWVuIGFueSBhdHRhY2grY29tbWl0L3N3YXAgeWV0CisgICAg IC8vIFRoaXMgaXMgYSBzb21ld2hhdCByZWR1bmRhbnQgYmVoYXZpb3IgYW5kIG1pZ2h0IGluZGlj YXRlIGEgYnVnIGluIHRoZSBjYWxsaW5nIGNvZGUsIHNvIGxvZworQEAgLTExNzQsNyArMTIxOCwx MiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXF1ZXN0VXBkYXRlKCkKKyAgICAgLy8gc28gdXNl IGludm9rZU1ldGhvZCB0byBkZWxheSB0aGUgZGVsaXZlcnkgYSBiaXQuCisgICAgIFFNZXRhT2Jq ZWN0OjppbnZva2VNZXRob2QodGhpcywgW3RoaXNdIHsKKyAgICAgICAgIC8vIFRoaW5ncyBtaWdo dCBoYXZlIGNoYW5nZWQgaW4gdGhlIG1lYW50aW1lCistICAgICAgICBpZiAoaGFzUGVuZGluZ1Vw ZGF0ZVJlcXVlc3QoKSAmJiAhbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQorKyAgICAgICAgewor KyAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrICAg ICAgICAgICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKysgICAgICAgICAgICAgICAg cmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0 KCkpCisgICAgICAgICAgICAgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKTsKKyAgICAgfSwgUXQ6OlF1 ZXVlZENvbm5lY3Rpb24pOworIH0KK0BAIC0xMTg1LDE5ICsxMjM0LDE4IEBAIHZvaWQgUVdheWxh bmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorIHZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZVVw ZGF0ZSgpCisgeworICAgICBxQ0RlYnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9yZSkgPDwgImhhbmRs ZVVwZGF0ZSIgPDwgUVRocmVhZDo6Y3VycmVudFRocmVhZCgpOworKworICAgICAvLyBUT0RPOiBT aG91bGQgc3luYyBzdWJzdXJmYWNlcyBhdm9pZCByZXF1ZXN0aW5nIGZyYW1lIGNhbGxiYWNrcz8K KyAgICAgUVJlYWRMb2NrZXIgbG9jaygmbVN1cmZhY2VMb2NrKTsKKyAgICAgaWYgKCFtU3VyZmFj ZSkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYgKG1GcmFtZUNhbGxiYWNrKSB7CistICAg ICAgICB3bF9jYWxsYmFja19kZXN0cm95KG1GcmFtZUNhbGxiYWNrKTsKKy0gICAgICAgIG1GcmFt ZUNhbGxiYWNrID0gbnVsbHB0cjsKKy0gICAgfQorKyAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZt RnJhbWVTeW5jTXV0ZXgpOworKyAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQorKyAg ICAgICAgcmV0dXJuOworIAorLSAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKG1GcmFtZVF1ZXVlLm11 dGV4KTsKKyAgICAgc3RydWN0IDo6d2xfc3VyZmFjZSAqd3JhcHBlZFN1cmZhY2UgPSByZWludGVy cHJldF9jYXN0PHN0cnVjdCA6OndsX3N1cmZhY2UgKj4od2xfcHJveHlfY3JlYXRlX3dyYXBwZXIo bVN1cmZhY2UtPm9iamVjdCgpKSk7CistICAgIHdsX3Byb3h5X3NldF9xdWV1ZShyZWludGVycHJl dF9jYXN0PHdsX3Byb3h5ICo+KHdyYXBwZWRTdXJmYWNlKSwgbUZyYW1lUXVldWUucXVldWUpOwor KyAgICB3bF9wcm94eV9zZXRfcXVldWUocmVpbnRlcnByZXRfY2FzdDx3bF9wcm94eSAqPih3cmFw cGVkU3VyZmFjZSksIG1EaXNwbGF5LT5mcmFtZUV2ZW50UXVldWUoKSk7CisgICAgIG1GcmFtZUNh bGxiYWNrID0gd2xfc3VyZmFjZV9mcmFtZSh3cmFwcGVkU3VyZmFjZSk7CisgICAgIHdsX3Byb3h5 X3dyYXBwZXJfZGVzdHJveSh3cmFwcGVkU3VyZmFjZSk7CisgICAgIHdsX2NhbGxiYWNrX2FkZF9s aXN0ZW5lcihtRnJhbWVDYWxsYmFjaywgJlFXYXlsYW5kV2luZG93OjpjYWxsYmFja0xpc3RlbmVy LCB0aGlzKTsKK0BAIC0xMjA3LDYgKzEyNTUsOCBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpoYW5k bGVVcGRhdGUoKQorICAgICAvLyBTdGFydCBhIHRpbWVyIGZvciBoYW5kbGluZyB0aGUgY2FzZSB3 aGVuIHRoZSBjb21wb3NpdG9yIHN0b3BzIHNlbmRpbmcgZnJhbWUgY2FsbGJhY2tzLgorICAgICBp ZiAobUZyYW1lQ2FsbGJhY2tUaW1lb3V0ID4gMCkgeworICAgICAgICAgUU1ldGFPYmplY3Q6Omlu dm9rZU1ldGhvZCh0aGlzLCBbdGhpc10geworKyAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2Nr ZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrCisgICAgICAgICAgICAgaWYgKG1XYWl0aW5nRm9yRnJh bWVDYWxsYmFjaykgeworICAgICAgICAgICAgICAgICBpZiAobUZyYW1lQ2FsbGJhY2tDaGVja0lu dGVydmFsVGltZXJJZCA8IDApCisgICAgICAgICAgICAgICAgICAgICBtRnJhbWVDYWxsYmFja0No ZWNrSW50ZXJ2YWxUaW1lcklkID0gc3RhcnRUaW1lcihtRnJhbWVDYWxsYmFja1RpbWVvdXQpOwor QEAgLTEyNjcsNiArMTMxNywyMCBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZXRPcGFxdWVBcmVh KGNvbnN0IFFSZWdpb24gJm9wYXF1ZUFyZWEpCisgICAgIHdsX3JlZ2lvbl9kZXN0cm95KHJlZ2lv bik7CisgfQorIAorK3ZvaWQgUVdheWxhbmRXaW5kb3c6OmFkZENoaWxkUG9wdXAoUVdheWxhbmRX aW5kb3cgKnN1cmZhY2UpIHsKKysgICAgbUNoaWxkUG9wdXBzLmFwcGVuZChzdXJmYWNlKTsKKyt9 CisrCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVtb3ZlQ2hpbGRQb3B1cChRV2F5bGFuZFdpbmRv dyAqc3VyZmFjZSkgeworKyAgICBtQ2hpbGRQb3B1cHMucmVtb3ZlQWxsKHN1cmZhY2UpOworK30K KysKKyt2b2lkIFFXYXlsYW5kV2luZG93OjpjbG9zZUNoaWxkUG9wdXBzKCkgeworKyAgICB3aGls ZSAoIW1DaGlsZFBvcHVwcy5pc0VtcHR5KCkpIHsKKysgICAgICAgIGF1dG8gcG9wdXAgPSBtQ2hp bGRQb3B1cHMudGFrZUxhc3QoKTsKKysgICAgICAgIHBvcHVwLT5yZXNldCgpOworKyAgICB9Cisr fQorIH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmR3aW5kb3dfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3 aW5kb3dfcC5oCitpbmRleCAwMTMzN2NmZi4uMmYyMTlkOGMgMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvd19wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kd2luZG93X3AuaAorQEAgLTk4LDYgKzk4LDkgQEAgcHVibGljOgorICAgICBR V2F5bGFuZFdpbmRvdyhRV2luZG93ICp3aW5kb3csIFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSk7 CisgICAgIH5RV2F5bGFuZFdpbmRvdygpIG92ZXJyaWRlOworIAorKyAgICAvLyBLZWVwIFRvcGxl dmVscyBwb3NpdGlvbiBvbiB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZWlyIHNjcmVlbgorKyAg ICBzdGF0aWMgaW5saW5lIGJvb2wgZml4ZWRUb3BsZXZlbFBvc2l0aW9ucyA9IHRydWU7CisrCisg ICAgIHZpcnR1YWwgV2luZG93VHlwZSB3aW5kb3dUeXBlKCkgY29uc3QgPSAwOworICAgICB2aXJ0 dWFsIHZvaWQgZW5zdXJlU2l6ZSgpOworICAgICBXSWQgd2luSWQoKSBjb25zdCBvdmVycmlkZTsK K0BAIC0xNDgsNiArMTUxLDcgQEAgcHVibGljOgorICAgICB2b2lkIHNldFdpbmRvd1N0YXRlKFF0 OjpXaW5kb3dTdGF0ZXMgc3RhdGVzKSBvdmVycmlkZTsKKyAgICAgdm9pZCBzZXRXaW5kb3dGbGFn cyhRdDo6V2luZG93RmxhZ3MgZmxhZ3MpIG92ZXJyaWRlOworICAgICB2b2lkIGhhbmRsZVdpbmRv d1N0YXRlc0NoYW5nZWQoUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXMpOworKyAgICBRdDo6V2luZG93 U3RhdGVzIHdpbmRvd1N0YXRlcygpIGNvbnN0OworIAorICAgICB2b2lkIHJhaXNlKCkgb3ZlcnJp ZGU7CisgICAgIHZvaWQgbG93ZXIoKSBvdmVycmlkZTsKK0BAIC0yMDYsNiArMjEwLDEwIEBAIHB1 YmxpYzoKKyAgICAgdm9pZCBoYW5kbGVVcGRhdGUoKTsKKyAgICAgdm9pZCBkZWxpdmVyVXBkYXRl UmVxdWVzdCgpIG92ZXJyaWRlOworIAorKyAgICB2b2lkIGFkZENoaWxkUG9wdXAoUVdheWxhbmRX aW5kb3cqIGNoaWxkKTsKKysgICAgdm9pZCByZW1vdmVDaGlsZFBvcHVwKFFXYXlsYW5kV2luZG93 KiBjaGlsZCk7CisrICAgIHZvaWQgY2xvc2VDaGlsZFBvcHVwcygpOworKworIHB1YmxpYyBzbG90 czoKKyAgICAgdm9pZCBhcHBseUNvbmZpZ3VyZSgpOworIAorQEAgLTIxNSw3ICsyMjMsMTEgQEAg c2lnbmFsczoKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIFFXYXlsYW5kRGlzcGxheSAqbURpc3BsYXkg PSBudWxscHRyOworKworKyAgICAvLyBtU3VyZmFjZSBjYW4gYmUgd3JpdHRlbiBieSB0aGUgbWFp biB0aHJlYWQuIE90aGVyIHRocmVhZHMgc2hvdWxkIGNsYWltIGEgcmVhZCBsb2NrIGZvciBhY2Nl c3MKKysgICAgbXV0YWJsZSBRUmVhZFdyaXRlTG9jayBtU3VyZmFjZUxvY2s7CisgICAgIFFTY29w ZWRQb2ludGVyPFFXYXlsYW5kU3VyZmFjZT4gbVN1cmZhY2U7CisrCisgICAgIFFXYXlsYW5kU2hl bGxTdXJmYWNlICptU2hlbGxTdXJmYWNlID0gbnVsbHB0cjsKKyAgICAgUVdheWxhbmRTdWJTdXJm YWNlICptU3ViU3VyZmFjZVdpbmRvdyA9IG51bGxwdHI7CisgICAgIFFWZWN0b3I8UVdheWxhbmRT dWJTdXJmYWNlICo+IG1DaGlsZHJlbjsKK0BAIC0yMjUsMTMgKzIzNywxNCBAQCBwcm90ZWN0ZWQ6 CisgICAgIFF0OjpNb3VzZUJ1dHRvbnMgbU1vdXNlUHJlc3NlZEluQ29udGVudEFyZWEgPSBRdDo6 Tm9CdXR0b247CisgCisgICAgIFdJZCBtV2luZG93SWQ7CistICAgIGJvb2wgbVdhaXRpbmdGb3JG cmFtZUNhbGxiYWNrID0gZmFsc2U7CisgICAgIGJvb2wgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9 IGZhbHNlOyAvLyBXaGV0aGVyIHRoZSBmcmFtZSBjYWxsYmFjayBoYXMgdGltZWQgb3V0CistICAg IGJvb2wgbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSA9IGZhbHNlOworICAgICBpbnQgbUZyYW1l Q2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA9IC0xOworLSAgICBRRWxhcHNlZFRpbWVyIG1G cmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyOworLSAgICBzdHJ1Y3QgOjp3bF9jYWxsYmFjayAqbUZy YW1lQ2FsbGJhY2sgPSBudWxscHRyOworLSAgICBRV2F5bGFuZERpc3BsYXk6OkZyYW1lUXVldWUg bUZyYW1lUXVldWU7CisrICAgIFFBdG9taWNJbnQgbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSA9 IGZhbHNlOworKworKyAgICBib29sIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNlOyAv LyBQcm90ZWN0ZWQgYnkgbUZyYW1lU3luY011dGV4CisrICAgIFFFbGFwc2VkVGltZXIgbUZyYW1l Q2FsbGJhY2tFbGFwc2VkVGltZXI7IC8vIFByb3RlY3RlZCBieSBtRnJhbWVTeW5jTXV0ZXgKKysg ICAgc3RydWN0IDo6d2xfY2FsbGJhY2sgKm1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsgLy8gUHJv dGVjdGVkIGJ5IG1GcmFtZVN5bmNNdXRleAorKyAgICBRTXV0ZXggbUZyYW1lU3luY011dGV4Owor ICAgICBRV2FpdENvbmRpdGlvbiBtRnJhbWVTeW5jV2FpdDsKKyAKKyAgICAgLy8gVHJ1ZSB3aGVu IHdlIGhhdmUgY2FsbGVkIGRlbGl2ZXJSZXF1ZXN0VXBkYXRlLCBidXQgdGhlIGNsaWVudCBoYXMg bm90IHlldCBhdHRhY2hlZCBhIG5ldyBidWZmZXIKK0BAIC0yNjEsNiArMjc0LDggQEAgcHJvdGVj dGVkOgorICAgICBRV2F5bGFuZEJ1ZmZlciAqbVF1ZXVlZEJ1ZmZlciA9IG51bGxwdHI7CisgICAg IFFSZWdpb24gbVF1ZXVlZEJ1ZmZlckRhbWFnZTsKKyAKKysgICAgUUxpc3Q8UVBvaW50ZXI8UVdh eWxhbmRXaW5kb3c+PiBtQ2hpbGRQb3B1cHM7CisrCisgcHJpdmF0ZToKKyAgICAgdm9pZCBzZXRH ZW9tZXRyeV9oZWxwZXIoY29uc3QgUVJlY3QgJnJlY3QpOworICAgICB2b2lkIGluaXRXaW5kb3co KTsKK0BAIC0yODMsMTIgKzI5OCwxMCBAQCBwcml2YXRlOgorICAgICBRUmVjdCBtTGFzdEV4cG9z ZUdlb21ldHJ5OworIAorICAgICBzdGF0aWMgY29uc3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIgY2Fs bGJhY2tMaXN0ZW5lcjsKKy0gICAgdm9pZCBoYW5kbGVGcmFtZUNhbGxiYWNrKCk7CisrICAgIHZv aWQgaGFuZGxlRnJhbWVDYWxsYmFjayhzdHJ1Y3QgOjp3bF9jYWxsYmFjayogY2FsbGJhY2spOwor IAorICAgICBzdGF0aWMgUVdheWxhbmRXaW5kb3cgKm1Nb3VzZUdyYWI7CisgCistICAgIG11dGFi bGUgUVJlYWRXcml0ZUxvY2sgbVN1cmZhY2VMb2NrOworLQorICAgICBmcmllbmQgY2xhc3MgUVdh eWxhbmRTdWJTdXJmYWNlOworIH07CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvc2hlbGxpbnRlZ3JhdGlvbi9xd2F5bGFuZHNoZWxsaW50ZWdyYXRpb25fcC5oIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlvbi9xd2F5bGFuZHNoZWxsaW50ZWdyYXRpb25f cC5oCitpbmRleCBjY2FkMDA0OC4uNGNjOWIzYjggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3Jj L2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRlZ3JhdGlvbl9wLmgKKysr KyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3NoZWxsaW50ZWdyYXRpb24vcXdheWxhbmRzaGVsbGlu dGVncmF0aW9uX3AuaAorQEAgLTczLDExICs3MywxMCBAQCBwdWJsaWM6CisgICAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICAgfQorICAgICB2aXJ0dWFsIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpjcmVh dGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaW5kb3cgKndpbmRvdykgPSAwOworKyAgICAvLyBrZXB0 IGZvciBiaW5hcnkgY29tcGF0IHdpdGggbGF5ZXItc2hlbGwtcXQKKyAgICAgdmlydHVhbCB2b2lk IGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdh eWxhbmRXaW5kb3cgKm9sZEZvY3VzKSB7CistICAgICAgICBpZiAobmV3Rm9jdXMpCistICAgICAg ICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobmV3Rm9jdXMpOworLSAgICAg ICAgaWYgKG9sZEZvY3VzKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93RGVh Y3RpdmF0ZWQob2xkRm9jdXMpOworKyAgICAgICAgUV9VTlVTRUQobmV3Rm9jdXMpOworKyAgICAg ICAgUV9VTlVTRUQob2xkRm9jdXMpOworICAgICB9CisgICAgIHZpcnR1YWwgdm9pZCAqbmF0aXZl UmVzb3VyY2VGb3JXaW5kb3coY29uc3QgUUJ5dGVBcnJheSAmcmVzb3VyY2UsIFFXaW5kb3cgKndp bmRvdykgeworICAgICAgICAgUV9VTlVTRUQocmVzb3VyY2UpOworZGlmZiAtLWdpdCBhL3F0d2F5 bGFuZC9zcmMvY29tcG9zaXRvci9jb25maWd1cmUuanNvbiBiL3F0d2F5bGFuZC9zcmMvY29tcG9z aXRvci9jb25maWd1cmUuanNvbgoraW5kZXggYmNmZDUyMTUuLmRhOTVkMDdiIDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9jb21wb3NpdG9yL2NvbmZpZ3VyZS5qc29uCisrKysgYi9xdHdheWxh bmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJlLmpzb24KK0BAIC03LDYgKzcsMzEgQEAKKyAgICAg InRlc3REaXIiOiAiLi4vLi4vY29uZmlnLnRlc3RzIiwKKyAKKyAgICAgImxpYnJhcmllcyI6IHsK KysgICAgICAgICJ3YXlsYW5kLWNsaWVudCI6IHsKKysgICAgICAgICAgICAibGFiZWwiOiAiV2F5 bGFuZCBjbGllbnQgbGlicmFyeSIsCisrICAgICAgICAgICAgImhlYWRlcnMiOiAid2F5bGFuZC12 ZXJzaW9uLmgiLAorKyAgICAgICAgICAgICJ0ZXN0IjogeworKyAgICAgICAgICAgICAgICAibWFp biI6IFsKKysgICAgICAgICAgICAgICAgICAgICIjaWYgV0FZTEFORF9WRVJTSU9OX01BSk9SIDwg MSIsCisrICAgICAgICAgICAgICAgICAgICAiIyBlcnJvciBXYXlsYW5kIDEuOC4wIG9yIGhpZ2hl ciByZXF1aXJlZCIsCisrICAgICAgICAgICAgICAgICAgICAiI2VuZGlmIiwKKysgICAgICAgICAg ICAgICAgICAgICIjaWYgV0FZTEFORF9WRVJTSU9OX01BSk9SID09IDEiLAorKyAgICAgICAgICAg ICAgICAgICAgIiMgaWYgV0FZTEFORF9WRVJTSU9OX01JTk9SIDwgOCIsCisrICAgICAgICAgICAg ICAgICAgICAiIyAgZXJyb3IgV2F5bGFuZCAxLjguMCBvciBoaWdoZXIgcmVxdWlyZWQiLAorKyAg ICAgICAgICAgICAgICAgICAgIiMgZW5kaWYiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgaWYg V0FZTEFORF9WRVJTSU9OX01JTk9SID09IDgiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgIGlm IFdBWUxBTkRfVkVSU0lPTl9NSUNSTyA8IDAiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgICBl cnJvciBXYXlsYW5kIDEuOC4wIG9yIGhpZ2hlciByZXF1aXJlZCIsCisrICAgICAgICAgICAgICAg ICAgICAiIyAgZW5kaWYiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgZW5kaWYiLAorKyAgICAg ICAgICAgICAgICAgICAgIiNlbmRpZiIKKysgICAgICAgICAgICAgICAgIF0KKysgICAgICAgICAg ICB9LAorKyAgICAgICAgICAgICJzb3VyY2VzIjogWworKyAgICAgICAgICAgICAgICB7ICJ0eXBl IjogInBrZ0NvbmZpZyIsICJhcmdzIjogIndheWxhbmQtY2xpZW50IiB9LAorKyAgICAgICAgICAg ICAgICAiLWx3YXlsYW5kLWNsaWVudCIKKysgICAgICAgICAgICBdCisrICAgICAgICB9LAorICAg ICAgICAgIndheWxhbmQtc2VydmVyIjogeworICAgICAgICAgICAgICJsYWJlbCI6ICJ3YXlsYW5k LXNlcnZlciIsCisgICAgICAgICAgICAgImhlYWRlcnMiOiAid2F5bGFuZC12ZXJzaW9uLmgiLAor QEAgLTE1MSw4ICsxNzYsNyBAQAorICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZiIKKyAgICAg ICAgICAgICAgICAgXQorICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgImxpYnMiOiAiLWxk cm0iLAorLSAgICAgICAgICAgICJ1c2UiOiAiZWdsIgorKyAgICAgICAgICAgICJ1c2UiOiAiZHJt IGVnbCIKKyAgICAgICAgIH0sCisgICAgICAgICAiZG1hYnVmLWNsaWVudC1idWZmZXIiOiB7Cisg ICAgICAgICAgICAgImxhYmVsIjogIkxpbnV4IENsaWVudCBkbWEtYnVmIEJ1ZmZlciBTaGFyaW5n IiwKK0BAIC0xNzYsOCArMjAwLDcgQEAKKyAgICAgICAgICAgICAgICAgICAgICJyZXR1cm4gMDsi CisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICJsaWJz IjogIi1sZHJtIiwKKy0gICAgICAgICAgICAidXNlIjogImVnbCIKKysgICAgICAgICAgICAidXNl IjogImRybSBlZ2wiCisgICAgICAgICB9LAorICAgICAgICAgInZ1bGthbi1zZXJ2ZXItYnVmZmVy IjogeworICAgICAgICAgICAgICJsYWJlbCI6ICJWdWxrYW4gQnVmZmVyIFNoYXJpbmciLAorQEAg LTE5NSw3ICsyMTgsOCBAQAorICAgICAgICAgICAgICAgICAgICAgImV4cG9ydEFsbG9jSW5mby5o YW5kbGVUeXBlcyA9IFZLX0VYVEVSTkFMX01FTU9SWV9IQU5ETEVfVFlQRV9PUEFRVUVfRkRfQklU X0tIUjsiLAorICAgICAgICAgICAgICAgICAgICAgInJldHVybiAwOyIKKyAgICAgICAgICAgICAg ICAgXQorLSAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9LAorKyAgICAgICAgICAgICJ1c2Ui OiAid2F5bGFuZC1jbGllbnQiCisgICAgICAgICB9CisgICAgIH0sCisgCitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5 bGFuZGVnbHdpbmRvdy5jcHAgYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xp ZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNwcAoraW5kZXggNzg4OWY1NzUuLjY0 MTQwNjcyIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2Ns aWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5jcHAKKysrKyBiL3F0d2F5bGFuZC9z cmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5k b3cuY3BwCitAQCAtNDAsNiArNDAsNyBAQAorICNpbmNsdWRlICJxd2F5bGFuZGVnbHdpbmRvdy5o IgorIAorICNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQvcHJpdmF0ZS9xd2F5bGFuZHNjcmVlbl9w Lmg+CisrI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3F3YXlsYW5kc3VyZmFjZV9w Lmg+CisgI2luY2x1ZGUgInF3YXlsYW5kZ2xjb250ZXh0LmgiCisgCisgI2luY2x1ZGUgPFF0RWds U3VwcG9ydC9wcml2YXRlL3FlZ2xjb252ZW5pZW5jZV9wLmg+CitAQCAtMTI0LDYgKzEyNSw3IEBA IHZvaWQgUVdheWxhbmRFZ2xXaW5kb3c6OnVwZGF0ZVN1cmZhY2UoYm9vbCBjcmVhdGUpCisgICAg ICAgICB9CisgICAgICAgICBtT2Zmc2V0ID0gUVBvaW50KCk7CisgICAgIH0gZWxzZSB7CisrICAg ICAgICBRUmVhZExvY2tlciBsb2NrZXIoJm1TdXJmYWNlTG9jayk7CisgICAgICAgICBpZiAobV93 YXlsYW5kRWdsV2luZG93KSB7CisgICAgICAgICAgICAgaW50IGN1cnJlbnRfd2lkdGgsIGN1cnJl bnRfaGVpZ2h0OworICAgICAgICAgICAgIHN0YXRpYyBib29sIGRpc2FibGVSZXNpemVDaGVjayA9 IHFnZXRlbnYoIlFUX1dBWUxBTkRfRElTQUJMRV9SRVNJWkVDSEVDSyIpLnRvSW50KCk7CitAQCAt MTMxLDE0ICsxMzMsMTYgQEAgdm9pZCBRV2F5bGFuZEVnbFdpbmRvdzo6dXBkYXRlU3VyZmFjZShi b29sIGNyZWF0ZSkKKyAgICAgICAgICAgICBpZiAoIWRpc2FibGVSZXNpemVDaGVjaykgeworICAg ICAgICAgICAgICAgICB3bF9lZ2xfd2luZG93X2dldF9hdHRhY2hlZF9zaXplKG1fd2F5bGFuZEVn bFdpbmRvdywgJmN1cnJlbnRfd2lkdGgsICZjdXJyZW50X2hlaWdodCk7CisgICAgICAgICAgICAg fQorLSAgICAgICAgICAgIGlmIChkaXNhYmxlUmVzaXplQ2hlY2sgfHwgKGN1cnJlbnRfd2lkdGgg IT0gc2l6ZVdpdGhNYXJnaW5zLndpZHRoKCkgfHwgY3VycmVudF9oZWlnaHQgIT0gc2l6ZVdpdGhN YXJnaW5zLmhlaWdodCgpKSkgeworKyAgICAgICAgICAgIGlmIChkaXNhYmxlUmVzaXplQ2hlY2sg fHwgKGN1cnJlbnRfd2lkdGggIT0gc2l6ZVdpdGhNYXJnaW5zLndpZHRoKCkgfHwgY3VycmVudF9o ZWlnaHQgIT0gc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKSB8fCBtX3JlcXVlc3RlZFNpemUgIT0g c2l6ZVdpdGhNYXJnaW5zKSB7CisgICAgICAgICAgICAgICAgIHdsX2VnbF93aW5kb3dfcmVzaXpl KG1fd2F5bGFuZEVnbFdpbmRvdywgc2l6ZVdpdGhNYXJnaW5zLndpZHRoKCksIHNpemVXaXRoTWFy Z2lucy5oZWlnaHQoKSwgbU9mZnNldC54KCksIG1PZmZzZXQueSgpKTsKKysgICAgICAgICAgICAg ICAgbV9yZXF1ZXN0ZWRTaXplID0gc2l6ZVdpdGhNYXJnaW5zOworICAgICAgICAgICAgICAgICBt T2Zmc2V0ID0gUVBvaW50KCk7CisgCisgICAgICAgICAgICAgICAgIG1fcmVzaXplID0gdHJ1ZTsK KyAgICAgICAgICAgICB9CistICAgICAgICB9IGVsc2UgaWYgKGNyZWF0ZSAmJiB3bFN1cmZhY2Uo KSkgeworLSAgICAgICAgICAgIG1fd2F5bGFuZEVnbFdpbmRvdyA9IHdsX2VnbF93aW5kb3dfY3Jl YXRlKHdsU3VyZmFjZSgpLCBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSwgc2l6ZVdpdGhNYXJnaW5z LmhlaWdodCgpKTsKKysgICAgICAgIH0gZWxzZSBpZiAoY3JlYXRlICYmIG1TdXJmYWNlKSB7Cisr ICAgICAgICAgICAgbV93YXlsYW5kRWdsV2luZG93ID0gd2xfZWdsX3dpbmRvd19jcmVhdGUobVN1 cmZhY2UtPm9iamVjdCgpLCBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSwgc2l6ZVdpdGhNYXJnaW5z LmhlaWdodCgpKTsKKysgICAgICAgICAgICBtX3JlcXVlc3RlZFNpemUgPSBzaXplV2l0aE1hcmdp bnM7CisgICAgICAgICB9CisgCisgICAgICAgICBpZiAoIW1fZWdsU3VyZmFjZSAmJiBtX3dheWxh bmRFZ2xXaW5kb3cgJiYgY3JlYXRlKSB7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9oYXJk d2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5oIGIv cXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5 bGFuZGVnbHdpbmRvdy5oCitpbmRleCA1YjFmNGQ1Ni4uMDA3OWRmZWYgMTAwNjQ0CistLS0gYS9x dHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXls YW5kZWdsd2luZG93LmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9j bGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuaAorQEAgLTg4LDYgKzg4LDcgQEAg cHJpdmF0ZToKKyAgICAgbXV0YWJsZSBRT3BlbkdMRnJhbWVidWZmZXJPYmplY3QgKm1fY29udGVu dEZCTyA9IG51bGxwdHI7CisgCisgICAgIFFTdXJmYWNlRm9ybWF0IG1fZm9ybWF0OworKyAgICBR U2l6ZSBtX3JlcXVlc3RlZFNpemU7CisgfTsKKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3IvbGludXgtZG1hYnVmLXVuc3RhYmxl LXYxL2xpbnV4ZG1hYnVmLmggYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY29t cG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFibGUtdjEvbGludXhkbWFidWYuaAoraW5kZXggNTZh NzEwYzMuLmM2YThiNmM2IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVn cmF0aW9uL2NvbXBvc2l0b3IvbGludXgtZG1hYnVmLXVuc3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmgK KysrKyBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jb21wb3NpdG9yL2xpbnV4 LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5oCitAQCAtNDEsNiArNDEsOCBAQAorICNp bmNsdWRlIDxRdENvcmUvUVRleHRTdHJlYW0+CisgI2luY2x1ZGUgPFF0R3VpL1FPcGVuR0xUZXh0 dXJlPgorIAorKyNpbmNsdWRlIDxhcnJheT4KKysKKyAjaW5jbHVkZSA8RUdML2VnbC5oPgorICNp bmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVn aW5zL2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5z L2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3BwCitpbmRleCBlNzVmZGEzYy4uZmE4ODUxNDMg MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvZGVjb3JhdGlvbnMvYnJhZGllbnQv bWFpbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNvcmF0aW9ucy9icmFkaWVu dC9tYWluLmNwcAorQEAgLTE2NCwxMyArMTY0LDEwIEBAIHZvaWQgUVdheWxhbmRCcmFkaWVudERl Y29yYXRpb246OnBhaW50KFFQYWludERldmljZSAqZGV2aWNlKQorICAgICAvLyBXaW5kb3cgaWNv bgorICAgICBRSWNvbiBpY29uID0gd2F5bGFuZFdpbmRvdygpLT53aW5kb3dJY29uKCk7CisgICAg IGlmICghaWNvbi5pc051bGwoKSkgeworLSAgICAgICAgUVBpeG1hcCBwaXhtYXAgPSBpY29uLnBp eG1hcChRU2l6ZSgxMjgsIDEyOCkpOworLSAgICAgICAgUVBpeG1hcCBzY2FsZWQgPSBwaXhtYXAu c2NhbGVkKDIyLCAyMiwgUXQ6Oklnbm9yZUFzcGVjdFJhdGlvLCBRdDo6U21vb3RoVHJhbnNmb3Jt YXRpb24pOworLQorICAgICAgICAgUVJlY3RGIGljb25SZWN0KDAsIDAsIDIyLCAyMik7CistICAg ICAgICBwLmRyYXdQaXhtYXAoaWNvblJlY3QuYWRqdXN0ZWQobWFyZ2lucygpLmxlZnQoKSArIEJV VFRPTl9TUEFDSU5HLCA0LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BBQ0lORywgNCksCistICAgICAgICAgICAgICAg ICAgICAgc2NhbGVkLCBpY29uUmVjdCk7CisrICAgICAgICBpY29uUmVjdC5hZGp1c3QobWFyZ2lu cygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0LAorKyAgICAgICAgICAgICAgICAgICAgICAg IG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BBQ0lORywgNCksCisrICAgICAgICBpY29uLnBh aW50KCZwLCBpY29uUmVjdC50b1JlY3QoKSk7CisgICAgIH0KKyAKKyAgICAgLy8gV2luZG93IHRp dGxlCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24v eGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NS5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1LmNwcAor aW5kZXggODVkMjVlM2MuLjYwYmRkNDkxIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVn aW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NS5jcHAK KysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12 NS9xd2F5bGFuZHhkZ3BvcHVwdjUuY3BwCitAQCAtNDcsMTggKzQ3LDIxIEBAIFFUX0JFR0lOX05B TUVTUEFDRQorIAorIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQgeworIAorLVFXYXlsYW5kWGRn UG9wdXBWNTo6UVdheWxhbmRYZGdQb3B1cFY1KHN0cnVjdCA6OnhkZ19wb3B1cF92NSAqcG9wdXAs IFFXYXlsYW5kV2luZG93ICp3aW5kb3cpCisrUVdheWxhbmRYZGdQb3B1cFY1OjpRV2F5bGFuZFhk Z1BvcHVwVjUoc3RydWN0IDo6eGRnX3BvcHVwX3Y1ICpwb3B1cCwgUVdheWxhbmRXaW5kb3cqIHBh cmVudCwgUVdheWxhbmRXaW5kb3cgKndpbmRvdykKKyAgICAgOiBRV2F5bGFuZFNoZWxsU3VyZmFj ZSh3aW5kb3cpCisgICAgICwgUXRXYXlsYW5kOjp4ZGdfcG9wdXBfdjUocG9wdXApCisrICAgICwg bV9wYXJlbnQocGFyZW50KQorICAgICAsIG1fd2luZG93KHdpbmRvdykKKyB7CisgICAgIGlmICh3 aW5kb3ctPmRpc3BsYXkoKS0+d2luZG93RXh0ZW5zaW9uKCkpCisgICAgICAgICBtX2V4dGVuZGVk V2luZG93ID0gbmV3IFFXYXlsYW5kRXh0ZW5kZWRTdXJmYWNlKHdpbmRvdyk7CisrICAgIG1fcGFy ZW50LT5hZGRDaGlsZFBvcHVwKG1fd2luZG93KTsKKyB9CisgCisgUVdheWxhbmRYZGdQb3B1cFY1 Ojp+UVdheWxhbmRYZGdQb3B1cFY1KCkKKyB7CisgICAgIHhkZ19wb3B1cF9kZXN0cm95KG9iamVj dCgpKTsKKysgICAgbV9wYXJlbnQtPnJlbW92ZUNoaWxkUG9wdXAobV93aW5kb3cpOworICAgICBk ZWxldGUgbV9leHRlbmRlZFdpbmRvdzsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Ny Yy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2 NV9wLmggYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwt djUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaAoraW5kZXggNzQ5NGY2YTYuLmQ4NWYxMzBiIDEwMDY0 NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxs LXY1L3F3YXlsYW5keGRncG9wdXB2NV9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjVfcC5oCitAQCAt NzAsNyArNzAsNyBAQCBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZFhkZ1Bv cHVwVjUgOiBwdWJsaWMgUVdheWxhbmRTaGVsbFN1cmZhY2UKKyB7CisgICAgIFFfT0JKRUNUCisg cHVibGljOgorLSAgICBRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6eGRnX3BvcHVwX3Y1ICpw b3B1cCwgUVdheWxhbmRXaW5kb3cgKndpbmRvdyk7CisrICAgIFFXYXlsYW5kWGRnUG9wdXBWNShz dHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5bGFuZFdpbmRvdyogcGFyZW50LCBRV2F5 bGFuZFdpbmRvdyAqd2luZG93KTsKKyAgICAgflFXYXlsYW5kWGRnUG9wdXBWNSgpIG92ZXJyaWRl OworIAorIHByb3RlY3RlZDoKK0BAIC03OCw2ICs3OCw3IEBAIHByb3RlY3RlZDoKKyAKKyBwcml2 YXRlOgorICAgICBRV2F5bGFuZEV4dGVuZGVkU3VyZmFjZSAqbV9leHRlbmRlZFdpbmRvdyA9IG51 bGxwdHI7CisrICAgIFFXYXlsYW5kV2luZG93ICptX3BhcmVudCA9IG51bGxwdHI7CisgICAgIFFX YXlsYW5kV2luZG93ICptX3dpbmRvdyA9IG51bGxwdHI7CisgfTsKKyAKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxh bmR4ZGdzaGVsbHY1LmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9u L3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3BwCitpbmRleCA3ZTI0MmM0YS4uZGVm ODQ1MmEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlv bi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1LmNwcAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2 NS5jcHAKK0BAIC04NCw3ICs4NCw3IEBAIFFXYXlsYW5kWGRnUG9wdXBWNSAqUVdheWxhbmRYZGdT aGVsbFY1OjpjcmVhdGVYZGdQb3B1cChRV2F5bGFuZFdpbmRvdyAqd2luZG93LCBRCisgICAgIGlu dCB4ID0gcG9zaXRpb24ueCgpICsgcGFyZW50V2luZG93LT5mcmFtZU1hcmdpbnMoKS5sZWZ0KCk7 CisgICAgIGludCB5ID0gcG9zaXRpb24ueSgpICsgcGFyZW50V2luZG93LT5mcmFtZU1hcmdpbnMo KS50b3AoKTsKKyAKKy0gICAgYXV0byBwb3B1cCA9IG5ldyBRV2F5bGFuZFhkZ1BvcHVwVjUoZ2V0 X3hkZ19wb3B1cCh3aW5kb3ctPndsU3VyZmFjZSgpLCBwYXJlbnRTdXJmYWNlLCBzZWF0LCBtX3Bv cHVwU2VyaWFsLCB4LCB5KSwgd2luZG93KTsKKysgICAgYXV0byBwb3B1cCA9IG5ldyBRV2F5bGFu ZFhkZ1BvcHVwVjUoZ2V0X3hkZ19wb3B1cCh3aW5kb3ctPndsU3VyZmFjZSgpLCBwYXJlbnRTdXJm YWNlLCBzZWF0LCBtX3BvcHVwU2VyaWFsLCB4LCB5KSwgcGFyZW50V2luZG93LCB3aW5kb3cpOwor ICAgICBtX3BvcHVwcy5hcHBlbmQod2luZG93KTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChwb3B1 cCwgJlFXYXlsYW5kWGRnUG9wdXBWNTo6ZGVzdHJveWVkLCBbdGhpcywgd2luZG93XSgpeworICAg ICAgICAgbV9wb3B1cHMucmVtb3ZlT25lKHdpbmRvdyk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hl bGx2NWludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbi5jcHAKK2luZGV4 IDRlMjU5NDlmLi5jZmM2MDkzOSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlv bi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1z aGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbi5jcHAKK0BAIC04NSwxMyArODUs NiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqUVdheWxhbmRYZGdTaGVsbFY1SW50ZWdyYXRpb246 OmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZAorICAgICByZXR1cm4gbV94ZGdTaGVsbC0+Y3Jl YXRlWGRnU3VyZmFjZSh3aW5kb3cpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kWGRnU2hlbGxWNUlu dGVncmF0aW9uOjpoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3 Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykgeworLSAgICBpZiAobmV3Rm9jdXMgJiYg cW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnUG9wdXBWNSAqPihuZXdGb2N1cy0+c2hlbGxTdXJmYWNl KCkpKQorLSAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobmV3Rm9jdXMp OworLSAgICBpZiAob2xkRm9jdXMgJiYgcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnUG9wdXBWNSAq PihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKQorLSAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVX aW5kb3dEZWFjdGl2YXRlZChvbGRGb2N1cyk7CistfQorLQorIH0KKyAKKyBRVF9FTkRfTkFNRVNQ QUNFCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24v eGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFu ZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3No ZWxsdjVpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IGNlNmJkYjllLi5hZWQ4ODY3MCAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9x d2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRl Z3JhdGlvbl9wLmgKK0BAIC02Nyw3ICs2Nyw2IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRYZGdT aGVsbFY1SW50ZWdyYXRpb24oKSB7fQorICAgICBib29sIGluaXRpYWxpemUoUVdheWxhbmREaXNw bGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKyAgICAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKmNyZWF0 ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93KSBvdmVycmlkZTsKKy0gICAgdm9p ZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFX YXlsYW5kV2luZG93ICpvbGRGb2N1cykgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAgICAgUVNj b3BlZFBvaW50ZXI8UVdheWxhbmRYZGdTaGVsbFY1PiBtX3hkZ1NoZWxsOworZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5 bGFuZHhkZ3NoZWxsdjYuY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5jcHAKK2luZGV4IDhjMzcxNjYxLi4x NTFjNzhlMyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjYuY3BwCisrKysgYi9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVs bHY2LmNwcAorQEAgLTE3NCw2ICsxNzQsNyBAQCBRV2F5bGFuZFhkZ1N1cmZhY2VWNjo6UG9wdXA6 OlBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZVY2ICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFhkZworICAg ICAsIG1feGRnU3VyZmFjZSh4ZGdTdXJmYWNlKQorICAgICAsIG1fcGFyZW50KHBhcmVudCkKKyB7 CisrICAgIG1fcGFyZW50LT53aW5kb3coKS0+YWRkQ2hpbGRQb3B1cChtX3hkZ1N1cmZhY2UtPndp bmRvdygpKTsKKyB9CisgCisgUVdheWxhbmRYZGdTdXJmYWNlVjY6OlBvcHVwOjp+UG9wdXAoKQor QEAgLTE4MSw2ICsxODIsOCBAQCBRV2F5bGFuZFhkZ1N1cmZhY2VWNjo6UG9wdXA6On5Qb3B1cCgp CisgICAgIGlmIChpc0luaXRpYWxpemVkKCkpCisgICAgICAgICBkZXN0cm95KCk7CisgCisrICAg IG1fcGFyZW50LT53aW5kb3coKS0+cmVtb3ZlQ2hpbGRQb3B1cChtX3hkZ1N1cmZhY2UtPndpbmRv dygpKTsKKysKKyAgICAgaWYgKG1fZ3JhYmJpbmcpIHsKKyAgICAgICAgIGF1dG8gKnNoZWxsID0g bV94ZGdTdXJmYWNlLT5tX3NoZWxsOworICAgICAgICAgUV9BU1NFUlQoc2hlbGwtPm1fdG9wbW9z dEdyYWJiaW5nUG9wdXAgPT0gdGhpcyk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVn aW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVn cmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1z aGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbi5jcHAKK2luZGV4IDAzMTY0MzE2 Li5lOGRhOGJhMSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVn cmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbi5jcHAKKysr KyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9x d2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbi5jcHAKK0BAIC02OCwyMCArNjgsNiBAQCBRV2F5 bGFuZFNoZWxsU3VyZmFjZSAqUVdheWxhbmRYZGdTaGVsbFY2SW50ZWdyYXRpb246OmNyZWF0ZVNo ZWxsU3VyZmFjZShRV2F5bGFuZAorICAgICByZXR1cm4gbV94ZGdTaGVsbC0+Z2V0WGRnU3VyZmFj ZSh3aW5kb3cpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kWGRnU2hlbGxWNkludGVncmF0aW9uOjpo YW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXls YW5kV2luZG93ICpvbGRGb2N1cykKKy17CistICAgIGlmIChuZXdGb2N1cykgeworLSAgICAgICAg YXV0byAqeGRnU3VyZmFjZSA9IHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2VWNiAqPihu ZXdGb2N1cy0+c2hlbGxTdXJmYWNlKCkpOworLSAgICAgICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhk Z1N1cmZhY2UtPmhhbmRsZXNBY3RpdmVTdGF0ZSgpKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+ aGFuZGxlV2luZG93QWN0aXZhdGVkKG5ld0ZvY3VzKTsKKy0gICAgfQorLSAgICBpZiAob2xkRm9j dXMgJiYgcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZVY2ICo+KG9sZEZvY3VzLT5zaGVs bFN1cmZhY2UoKSkpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1cmZhY2UgPSBxb2JqZWN0X2Nhc3Q8 UVdheWxhbmRYZGdTdXJmYWNlVjYgKj4ob2xkRm9jdXMtPnNoZWxsU3VyZmFjZSgpKTsKKy0gICAg ICAgIGlmICh4ZGdTdXJmYWNlICYmICF4ZGdTdXJmYWNlLT5oYW5kbGVzQWN0aXZlU3RhdGUoKSkK Ky0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG9sZEZvY3Vz KTsKKy0gICAgfQorLX0KKy0KKyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5 bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hl bGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb25f cC5oCitpbmRleCAyNjFmOGNiYi4uYzFiY2Q1YzYgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2 aW50ZWdyYXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3Jh dGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb25fcC5oCitAQCAt NjUsNyArNjUsNiBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kWGRnU2hlbGxWNkludGVncmF0aW9u KCkge30KKyAgICAgYm9vbCBpbml0aWFsaXplKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSkgb3Zl cnJpZGU7CisgICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpjcmVhdGVTaGVsbFN1cmZhY2UoUVdh eWxhbmRXaW5kb3cgKndpbmRvdykgb3ZlcnJpZGU7CistICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRG b2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xk Rm9jdXMpIG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXls YW5kWGRnU2hlbGxWNj4gbV94ZGdTaGVsbDsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbC5jcHAgYi9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4 ZGdzaGVsbC5jcHAKK2luZGV4IGYzZTNjMzMwLi5mYTZkNTgwOCAxMDA2NDQKKy0tLSBhL3F0d2F5 bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3No ZWxsLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRn LXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3BwCitAQCAtNjcsMTEgKzY3LDYgQEAgUVdheWxhbmRY ZGdTdXJmYWNlOjpUb3BsZXZlbDo6VG9wbGV2ZWwoUVdheWxhbmRYZGdTdXJmYWNlICp4ZGdTdXJm YWNlKQorIAorIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2ZWw6On5Ub3BsZXZlbCgpCisgewor LSAgICBpZiAobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpIHsKKy0gICAgICAg IFFXYXlsYW5kV2luZG93ICp3aW5kb3cgPSBtX3hkZ1N1cmZhY2UtPndpbmRvdygpOworLSAgICAg ICAgd2luZG93LT5kaXNwbGF5KCktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKHdpbmRvdyk7Cist ICAgIH0KKy0KKyAgICAgLy8gVGhlIHByb3RvY29sIHNwZWMgcmVxdWlyZXMgdGhhdCB0aGUgZGVj b3JhdGlvbiBvYmplY3QgaXMgZGVsZXRlZCBiZWZvcmUgeGRnX3RvcGxldmVsLgorICAgICBkZWxl dGUgbV9kZWNvcmF0aW9uOworICAgICBtX2RlY29yYXRpb24gPSBudWxscHRyOworQEAgLTg1LDE2 ICs4MCwxNSBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2ZWw6OmFwcGx5Q29uZmln dXJlKCkKKyAgICAgaWYgKCEobV9hcHBsaWVkLnN0YXRlcyAmIChRdDo6V2luZG93TWF4aW1pemVk fFF0OjpXaW5kb3dGdWxsU2NyZWVuKSkpCisgICAgICAgICBtX25vcm1hbFNpemUgPSBtX3hkZ1N1 cmZhY2UtPm1fd2luZG93LT53aW5kb3dGcmFtZUdlb21ldHJ5KCkuc2l6ZSgpOworIAorLSAgICBp ZiAoKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSAmJiAhKG1fYXBwbGllZC5z dGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSkKKysgICAgaWYgKChtX3BlbmRpbmcuc3RhdGVzICYg UXQ6OldpbmRvd0FjdGl2ZSkgJiYgIShtX2FwcGxpZWQuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2 ZSkKKysgICAgICAgICYmICFtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5kaXNwbGF5KCktPmlzS2V5 Ym9hcmRBdmFpbGFibGUoKSkKKyAgICAgICAgIG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmRpc3Bs YXkoKS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG1feGRnU3VyZmFjZS0+bV93aW5kb3cpOworIAor LSAgICBpZiAoIShtX3BlbmRpbmcuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgJiYgKG1fYXBw bGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSkKKysgICAgaWYgKCEobV9wZW5kaW5nLnN0 YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpICYmIChtX2FwcGxpZWQuc3RhdGVzICYgUXQ6OldpbmRv d0FjdGl2ZSkKKysgICAgICAgICYmICFtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5kaXNwbGF5KCkt PmlzS2V5Ym9hcmRBdmFpbGFibGUoKSkKKyAgICAgICAgIG1feGRnU3VyZmFjZS0+bV93aW5kb3ct PmRpc3BsYXkoKS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQobV94ZGdTdXJmYWNlLT5tX3dpbmRv dyk7CisgCistICAgIC8vIFRPRE86IG5vbmUgb2YgdGhlIG90aGVyIHBsdWdpbnMgc2VuZCBXaW5k b3dBY3RpdmUgZWl0aGVyLCBidXQgaXMgaXQgb24gcHVycG9zZT8KKy0gICAgUXQ6OldpbmRvd1N0 YXRlcyBzdGF0ZXNXaXRob3V0QWN0aXZlID0gbV9wZW5kaW5nLnN0YXRlcyAmIH5RdDo6V2luZG93 QWN0aXZlOworLQorLSAgICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5oYW5kbGVXaW5kb3dTdGF0 ZXNDaGFuZ2VkKHN0YXRlc1dpdGhvdXRBY3RpdmUpOworKyAgICBtX3hkZ1N1cmZhY2UtPm1fd2lu ZG93LT5oYW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKG1fcGVuZGluZy5zdGF0ZXMpOworIAorICAg ICBpZiAobV9wZW5kaW5nLnNpemUuaXNFbXB0eSgpKSB7CisgICAgICAgICAvLyBBbiBlbXB0eSBz aXplIGluIHRoZSBjb25maWd1cmUgbWVhbnMgaXQncyB1cCB0byB0aGUgY2xpZW50IHRvIGNob29z ZSB0aGUgc2l6ZQorQEAgLTEwNSw4ICs5OSw2IEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpU b3BsZXZlbDo6YXBwbHlDb25maWd1cmUoKQorICAgICAgICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRv dy0+cmVzaXplRnJvbUFwcGx5Q29uZmlndXJlKG1fcGVuZGluZy5zaXplKTsKKyAgICAgfQorIAor LSAgICBtX3hkZ1N1cmZhY2UtPnNldFNpemVIaW50cygpOworLQorICAgICBtX2FwcGxpZWQgPSBt X3BlbmRpbmc7CisgICAgIHFDRGVidWcobGNRcGFXYXlsYW5kKSA8PCAiQXBwbGllZCBwZW5kaW5n IHhkZ190b3BsZXZlbCBjb25maWd1cmUgZXZlbnQ6IiA8PCBtX2FwcGxpZWQuc2l6ZSA8PCBtX2Fw cGxpZWQuc3RhdGVzOworIH0KK0BAIC0yMDMsMTIgKzE5NSwxNyBAQCBRdFdheWxhbmQ6OnhkZ190 b3BsZXZlbDo6cmVzaXplX2VkZ2UgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6Y29udmVy dFRvUmVzaQorICAgICAgICAgICAgICAgICB8ICgoZWRnZXMgJiBRdDo6UmlnaHRFZGdlKSA/IHJl c2l6ZV9lZGdlX3JpZ2h0IDogMCkpOworIH0KKyAKKy1RV2F5bGFuZFhkZ1N1cmZhY2U6OlBvcHVw OjpQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZhY2UsIFFXYXlsYW5kWGRnU3VyZmFj ZSAqcGFyZW50LAorK1FXYXlsYW5kWGRnU3VyZmFjZTo6UG9wdXA6OlBvcHVwKFFXYXlsYW5kWGRn U3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRXaW5kb3cgKnBhcmVudCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyICpwb3NpdGlv bmVyKQorLSAgICA6IHhkZ19wb3B1cCh4ZGdTdXJmYWNlLT5nZXRfcG9wdXAocGFyZW50LT5vYmpl Y3QoKSwgcG9zaXRpb25lci0+b2JqZWN0KCkpKQorLSAgICAsIG1feGRnU3VyZmFjZSh4ZGdTdXJm YWNlKQorKyAgICA6IG1feGRnU3VyZmFjZSh4ZGdTdXJmYWNlKQorKyAgICAsIG1fcGFyZW50WGRn U3VyZmFjZShxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KHBhcmVudC0+c2hlbGxT dXJmYWNlKCkpKQorICAgICAsIG1fcGFyZW50KHBhcmVudCkKKyB7CisrCisrICAgIGluaXQoeGRn U3VyZmFjZS0+Z2V0X3BvcHVwKG1fcGFyZW50WGRnU3VyZmFjZSA/IG1fcGFyZW50WGRnU3VyZmFj ZS0+b2JqZWN0KCkgOiBudWxscHRyLCBwb3NpdGlvbmVyLT5vYmplY3QoKSkpOworKyAgICBpZiAo bV9wYXJlbnQpIHsKKysgICAgICAgIG1fcGFyZW50LT5hZGRDaGlsZFBvcHVwKG1feGRnU3VyZmFj ZS0+d2luZG93KCkpOworKyAgICB9CisgfQorIAorIFFXYXlsYW5kWGRnU3VyZmFjZTo6UG9wdXA6 On5Qb3B1cCgpCitAQCAtMjE2LDEwICsyMTMsMjQgQEAgUVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1 cDo6flBvcHVwKCkKKyAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgIGRlc3Ryb3ko KTsKKyAKKysgICAgaWYgKG1fcGFyZW50KSB7CisrICAgICAgICBtX3BhcmVudC0+cmVtb3ZlQ2hp bGRQb3B1cChtX3hkZ1N1cmZhY2UtPndpbmRvdygpKTsKKysgICAgfQorKworICAgICBpZiAobV9n cmFiYmluZykgeworICAgICAgICAgYXV0byAqc2hlbGwgPSBtX3hkZ1N1cmZhY2UtPm1fc2hlbGw7 CisgICAgICAgICBRX0FTU0VSVChzaGVsbC0+bV90b3Btb3N0R3JhYmJpbmdQb3B1cCA9PSB0aGlz KTsKKy0gICAgICAgIHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVwID0gbV9wYXJlbnQtPm1f cG9wdXA7CisrICAgICAgICBzaGVsbC0+bV90b3Btb3N0R3JhYmJpbmdQb3B1cCA9IG1fcGFyZW50 WGRnU3VyZmFjZSA/IG1fcGFyZW50WGRnU3VyZmFjZS0+bV9wb3B1cCA6IG51bGxwdHI7CisrICAg ICAgICBtX2dyYWJiaW5nID0gZmFsc2U7CisrCisrICAgICAgICAvLyBTeW50aGVzaXplIFF0IGVu dGVyL2xlYXZlIGV2ZW50cyBmb3IgcG9wdXAKKysgICAgICAgIFFXaW5kb3cgKmxlYXZlID0gbnVs bHB0cjsKKysgICAgICAgIGlmIChtX3hkZ1N1cmZhY2UgJiYgbV94ZGdTdXJmYWNlLT53aW5kb3co KSkKKysgICAgICAgICAgICBsZWF2ZSA9IG1feGRnU3VyZmFjZS0+d2luZG93KCktPndpbmRvdygp OworKyAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlTGVhdmVFdmVudChsZWF2 ZSk7CisrCisrICAgICAgICBpZiAoUVdpbmRvdyAqZW50ZXIgPSBRR3VpQXBwbGljYXRpb246OnRv cExldmVsQXQoUUN1cnNvcjo6cG9zKCkpKQorKyAgICAgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRl cmZhY2U6OmhhbmRsZUVudGVyRXZlbnQoZW50ZXIsIGVudGVyLT5tYXBGcm9tR2xvYmFsKFFDdXJz b3I6OnBvcygpKSwgUUN1cnNvcjo6cG9zKCkpOworICAgICB9CisgfQorIAorQEAgLTI1Nyw2ICsy NjgsNyBAQCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlFXYXlsYW5kWGRnU3VyZmFjZShRV2F5bGFuZFhk Z1NoZWxsICpzaGVsbCwgOjp4ZGdfc3VyZmFjZSAqcworICAgICAgICAgICAgICAgICBtX3RvcGxl dmVsLT5zZXRfcGFyZW50KHBhcmVudFhkZ1N1cmZhY2UtPm1fdG9wbGV2ZWwtPm9iamVjdCgpKTsK KyAgICAgICAgIH0KKyAgICAgfQorKyAgICBzZXRTaXplSGludHMoKTsKKyB9CisgCisgUVdheWxh bmRYZGdTdXJmYWNlOjp+UVdheWxhbmRYZGdTdXJmYWNlKCkKK0BAIC00MDAsOCArNDEyLDYgQEAg dm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OnNldFBvcHVwKFFXYXlsYW5kV2luZG93ICpwYXJlbnQp CisgeworICAgICBRX0FTU0VSVCghbV90b3BsZXZlbCAmJiAhbV9wb3B1cCk7CisgCistICAgIGF1 dG8gcGFyZW50WGRnU3VyZmFjZSA9IHN0YXRpY19jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihw YXJlbnQtPnNoZWxsU3VyZmFjZSgpKTsKKy0KKyAgICAgYXV0byBwb3NpdGlvbmVyID0gbmV3IFF0 V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXIobV9zaGVsbC0+Y3JlYXRlX3Bvc2l0aW9uZXIoKSk7Cisg ICAgIC8vIHNldF9wb3B1cCBleHBlY3RzIGEgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIHBhcmVu dAorICAgICBRUG9pbnQgdHJhbnNpZW50UG9zID0gbV93aW5kb3ctPmdlb21ldHJ5KCkudG9wTGVm dCgpOyAvLyB0aGlzIGlzIGFic29sdXRlCitAQCAtNDE0LDggKzQyNCw5IEBAIHZvaWQgUVdheWxh bmRYZGdTdXJmYWNlOjpzZXRQb3B1cChRV2F5bGFuZFdpbmRvdyAqcGFyZW50KQorICAgICBwb3Np dGlvbmVyLT5zZXRfYW5jaG9yKFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXI6OmFuY2hvcl90b3Bf bGVmdCk7CisgICAgIHBvc2l0aW9uZXItPnNldF9ncmF2aXR5KFF0V2F5bGFuZDo6eGRnX3Bvc2l0 aW9uZXI6OmdyYXZpdHlfYm90dG9tX3JpZ2h0KTsKKyAgICAgcG9zaXRpb25lci0+c2V0X3NpemUo bV93aW5kb3ctPmdlb21ldHJ5KCkud2lkdGgoKSwgbV93aW5kb3ctPmdlb21ldHJ5KCkuaGVpZ2h0 KCkpOworLSAgICBtX3BvcHVwID0gbmV3IFBvcHVwKHRoaXMsIHBhcmVudFhkZ1N1cmZhY2UsIHBv c2l0aW9uZXIpOworKyAgICBtX3BvcHVwID0gbmV3IFBvcHVwKHRoaXMsIHBhcmVudCwgcG9zaXRp b25lcik7CisgICAgIHBvc2l0aW9uZXItPmRlc3Ryb3koKTsKKysKKyAgICAgZGVsZXRlIHBvc2l0 aW9uZXI7CisgfQorIAorQEAgLTQzNyw2ICs0NDgsMjMgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1cmZh Y2U6OnNldEdyYWJQb3B1cChRV2F5bGFuZFdpbmRvdyAqcGFyZW50LCBRV2F5bGFuZElucHV0RGV2 aWMKKyAgICAgfQorICAgICBzZXRQb3B1cChwYXJlbnQpOworICAgICBtX3BvcHVwLT5ncmFiKGRl dmljZSwgc2VyaWFsKTsKKysKKysgICAgLy8gU3ludGhlc2l6ZSBRdCBlbnRlci9sZWF2ZSBldmVu dHMgZm9yIHBvcHVwCisrICAgIGlmICghcGFyZW50KQorKyAgICAgICAgcmV0dXJuOworKyAgICBR V2luZG93ICpjdXJyZW50ID0gUUd1aUFwcGxpY2F0aW9uOjp0b3BMZXZlbEF0KFFDdXJzb3I6OnBv cygpKTsKKysgICAgUVdpbmRvdyAqbGVhdmUgPSBwYXJlbnQtPndpbmRvdygpOworKyAgICBpZiAo Y3VycmVudCAhPSBsZWF2ZSkKKysgICAgICAgIHJldHVybjsKKysKKysgICAgUVdpbmRvd1N5c3Rl bUludGVyZmFjZTo6aGFuZGxlTGVhdmVFdmVudChsZWF2ZSk7CisrCisrICAgIFFXaW5kb3cgKmVu dGVyID0gbnVsbHB0cjsKKysgICAgaWYgKG1fcG9wdXAgJiYgbV9wb3B1cC0+bV94ZGdTdXJmYWNl ICYmIG1fcG9wdXAtPm1feGRnU3VyZmFjZS0+d2luZG93KCkpCisrICAgICAgICBlbnRlciA9IG1f cG9wdXAtPm1feGRnU3VyZmFjZS0+d2luZG93KCktPndpbmRvdygpOworKworKyAgICBpZiAoZW50 ZXIpCisrICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVFbnRlckV2ZW50KGVu dGVyLCBlbnRlci0+bWFwRnJvbUdsb2JhbChRQ3Vyc29yOjpwb3MoKSksIFFDdXJzb3I6OnBvcygp KTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OnhkZ19zdXJmYWNlX2NvbmZpZ3Vy ZSh1aW50MzJfdCBzZXJpYWwpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxfcC5oIGIvcXR3YXlsYW5k L3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxf cC5oCitpbmRleCA5Njc4NTIwNS4uNGI1MThmMGEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbF9wLmgK KysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9x d2F5bGFuZHhkZ3NoZWxsX3AuaAorQEAgLTEzMSwxNCArMTMxLDE1IEBAIHByaXZhdGU6CisgCisg ICAgIGNsYXNzIFBvcHVwIDogcHVibGljIFF0V2F5bGFuZDo6eGRnX3BvcHVwIHsKKyAgICAgcHVi bGljOgorLSAgICAgICAgUG9wdXAoUVdheWxhbmRYZGdTdXJmYWNlICp4ZGdTdXJmYWNlLCBRV2F5 bGFuZFhkZ1N1cmZhY2UgKnBhcmVudCwgUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lciAqcG9zaXRp b25lcik7CisrICAgICAgICBQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZhY2UsIFFX YXlsYW5kV2luZG93ICpwYXJlbnQsIFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXIgKnBvc2l0aW9u ZXIpOworICAgICAgICAgflBvcHVwKCkgb3ZlcnJpZGU7CisgCisgICAgICAgICB2b2lkIGdyYWIo UVdheWxhbmRJbnB1dERldmljZSAqc2VhdCwgdWludCBzZXJpYWwpOworICAgICAgICAgdm9pZCB4 ZGdfcG9wdXBfcG9wdXBfZG9uZSgpIG92ZXJyaWRlOworIAorICAgICAgICAgUVdheWxhbmRYZGdT dXJmYWNlICptX3hkZ1N1cmZhY2UgPSBudWxscHRyOworLSAgICAgICAgUVdheWxhbmRYZGdTdXJm YWNlICptX3BhcmVudCA9IG51bGxwdHI7CisrICAgICAgICBRV2F5bGFuZFhkZ1N1cmZhY2UgKm1f cGFyZW50WGRnU3VyZmFjZSA9IG51bGxwdHI7CisrICAgICAgICBRV2F5bGFuZFdpbmRvdyAqbV9w YXJlbnQgPSBudWxscHRyOworICAgICAgICAgYm9vbCBtX2dyYWJiaW5nID0gZmFsc2U7CisgICAg IH07CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5jcHAgYi9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGlu dGVncmF0aW9uLmNwcAoraW5kZXggODc2OWQ5NzEuLmRhMGRkNmE3IDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRn c2hlbGxpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGlu dGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb24uY3BwCitAQCAt NjksMjAgKzY5LDYgQEAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKlFXYXlsYW5kWGRnU2hlbGxJbnRl Z3JhdGlvbjo6Y3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kV2kKKyAgICAgcmV0dXJuIG1feGRn U2hlbGwtPmdldFhkZ1N1cmZhY2Uod2luZG93KTsKKyB9CisgCistdm9pZCBRV2F5bGFuZFhkZ1No ZWxsSW50ZWdyYXRpb246OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93 ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKQorLXsKKy0gICAgaWYgKG5ld0Zv Y3VzKSB7CistICAgICAgICBhdXRvICp4ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXlsYW5k WGRnU3VyZmFjZSAqPihuZXdGb2N1cy0+c2hlbGxTdXJmYWNlKCkpOworLSAgICAgICAgaWYgKHhk Z1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNBY3RpdmVTdGF0ZSgpKQorLSAgICAgICAg ICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG5ld0ZvY3VzKTsKKy0gICAgfQor LSAgICBpZiAob2xkRm9jdXMgJiYgcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihv bGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKSB7CistICAgICAgICBhdXRvICp4ZGdTdXJmYWNlID0g cW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNl KCkpOworLSAgICAgICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNBY3Rp dmVTdGF0ZSgpKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93RGVhY3RpdmF0 ZWQob2xkRm9jdXMpOworLSAgICB9CistfQorLQorIH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitk aWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9u X3AuaAoraW5kZXggYjZjYWE2YzkuLjJmOTI5Zjk4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRl Z3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9u L3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb25fcC5oCitAQCAtNjUsNyArNjUs NiBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kWGRnU2hlbGxJbnRlZ3JhdGlvbigpIHt9CisgICAg IGJvb2wgaW5pdGlhbGl6ZShRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOworICAg ICBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqY3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kV2luZG93 ICp3aW5kb3cpIG92ZXJyaWRlOworLSAgICB2b2lkIGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2Vk KFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSBvdmVy cmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFuZFhkZ1NoZWxs PiBtX3hkZ1NoZWxsOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5k aW5wdXRtZXRob2RldmVudGJ1aWxkZXIuY3BwIGIvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxh bmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlci5jcHAKK2luZGV4IDUyNmQwZWY0Li5mNTBjY2YzMCAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kaW5wdXRtZXRob2RldmVu dGJ1aWxkZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZGlucHV0bWV0 aG9kZXZlbnRidWlsZGVyLmNwcAorQEAgLTM5LDcgKzM5LDEwIEBACisgCisgI2luY2x1ZGUgInF3 YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXJfcC5oIgorIAorKyNpbmNsdWRlIDxRQnJ1c2g+ CisrI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4KKyAjaW5jbHVkZSA8UUlucHV0TWV0aG9kPgor KyNpbmNsdWRlIDxRUGFsZXR0ZT4KKyAjaW5jbHVkZSA8UVRleHRDaGFyRm9ybWF0PgorIAorICNp ZmRlZiBRVF9CVUlMRF9XQVlMQU5EQ09NUE9TSVRPUl9MSUIKK0BAIC04MSwzMiArODQsMzggQEAg dm9pZCBRV2F5bGFuZElucHV0TWV0aG9kRXZlbnRCdWlsZGVyOjphZGRQcmVlZGl0U3R5bGluZyh1 aW50MzJfdCBpbmRleCwgdWludDMyX3QKKyAgICAgUVRleHRDaGFyRm9ybWF0IGZvcm1hdDsKKyAK KyAgICAgc3dpdGNoIChzdHlsZSkgeworLSAgICBjYXNlIDA6CistICAgIGNhc2UgMToKKysgICAg Y2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX05PTkU6CisrICAgICAgICBicmVh azsKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX0RFRkFVTFQ6Cisr ICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9VTkRFUkxJTkU6CisgICAg ICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsKKyAgICAgICAgIGZvcm1hdC5zZXRV bmRlcmxpbmVTdHlsZShRVGV4dENoYXJGb3JtYXQ6OlNpbmdsZVVuZGVybGluZSk7CisgICAgICAg ICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlu cHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkpOworICAg ICAgICAgYnJlYWs7CistICAgIGNhc2UgMjoKKy0gICAgY2FzZSAzOgorKyAgICBjYXNlIFpXUF9U RVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfQUNUSVZFOgorKyAgICBjYXNlIFpXUF9URVhUX0lO UFVUX1YyX1BSRUVESVRfU1RZTEVfSU5BQ1RJVkU6CisgICAgICAgICBmb3JtYXQuc2V0Rm9udFdl aWdodChRRm9udDo6Qm9sZCk7CisgICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVl KTsKKyAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4dENoYXJGb3JtYXQ6OlNp bmdsZVVuZGVybGluZSk7CisgICAgICAgICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1l dGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4 LCBsZW5ndGgsIGZvcm1hdCkpOworICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgNDoKKy0gICAg ICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworLSAgICAgICAgZm9ybWF0LnNldFVu ZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2luZ2xlVW5kZXJsaW5lKTsKKy0gICAgICAg IG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5w dXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisrICAg IGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9ISUdITElHSFQ6CisrICAgIGNh c2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9TRUxFQ1RJT046CisrICAgICAgICB7 CisrICAgICAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7CisrICAgICAgICAg ICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2luZ2xlVW5kZXJs aW5lKTsKKysgICAgICAgICAgICBRUGFsZXR0ZSBwYWxldHRlID0gcUFwcC0+cGFsZXR0ZSgpOwor KyAgICAgICAgICAgIGZvcm1hdC5zZXRCYWNrZ3JvdW5kKFFCcnVzaChwYWxldHRlLmNvbG9yKFFQ YWxldHRlOjpBY3RpdmUsIFFQYWxldHRlOjpIaWdobGlnaHQpKSk7CisrICAgICAgICAgICAgZm9y bWF0LnNldEZvcmVncm91bmQoUUJydXNoKHBhbGV0dGUuY29sb3IoUVBhbGV0dGU6OkFjdGl2ZSwg UVBhbGV0dGU6OkhpZ2hsaWdodGVkVGV4dCkpKTsKKysgICAgICAgICAgICBtX3ByZWVkaXRTdHls ZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6 OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkpOworKyAgICAgICAgfQorICAgICAg ICAgYnJlYWs7CistICAgIGNhc2UgNToKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVF RElUX1NUWUxFX0lOQ09SUkVDVDoKKyAgICAgICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRy dWUpOworICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6 V2F2ZVVuZGVybGluZSk7CisgICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lQ29sb3IoUUNvbG9y KFF0OjpyZWQpKTsKKyAgICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9k RXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxl bmd0aCwgZm9ybWF0KSk7CisgICAgICAgICBicmVhazsKKy0vLyAgICBjYXNlIFF0V2F5bGFuZDo6 d2xfdGV4dF9pbnB1dDo6cHJlZWRpdF9zdHlsZV9zZWxlY3Rpb246CistLy8gICAgY2FzZSBRdFdh eWxhbmQ6OndsX3RleHRfaW5wdXQ6OnByZWVkaXRfc3R5bGVfbm9uZToKKyAgICAgZGVmYXVsdDoK KyAgICAgICAgIGJyZWFrOworICAgICB9CitAQCAtMTUzLDcgKzE2Miw3IEBAIFFJbnB1dE1ldGhv ZEV2ZW50IFFXYXlsYW5kSW5wdXRNZXRob2RFdmVudEJ1aWxkZXI6OmJ1aWxkUHJlZWRpdChjb25z dCBRU3RyaW5nICZ0CisgCisgICAgIGlmIChtX3ByZWVkaXRDdXJzb3IgPCAwKSB7CisgICAgICAg ICBhdHRyaWJ1dGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1l dGhvZEV2ZW50OjpDdXJzb3IsIDAsIDAsIFFWYXJpYW50KCkpKTsKKy0gICAgfSBlbHNlIGlmICht X3ByZWVkaXRDdXJzb3IgPiAwKSB7CisrICAgIH0gZWxzZSB7CisgICAgICAgICBhdHRyaWJ1dGVz LmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpD dXJzb3IsIGluZGV4RnJvbVdheWxhbmQodGV4dCwgbV9wcmVlZGl0Q3Vyc29yKSwgMSwgUVZhcmlh bnQoKSkpOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdh eWxhbmRtaW1laGVscGVyLmNwcCBiL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kbWltZWhl bHBlci5jcHAKK2luZGV4IGE1ZmRkMzRkLi5lMmZlMTkyOCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvc2hhcmVkL3F3YXlsYW5kbWltZWhlbHBlci5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMv c2hhcmVkL3F3YXlsYW5kbWltZWhlbHBlci5jcHAKK0BAIC02MCw3ICs2MCw3IEBAIFFCeXRlQXJy YXkgUVdheWxhbmRNaW1lSGVscGVyOjpnZXRCeXRlQXJyYXkoUU1pbWVEYXRhICptaW1lRGF0YSwg Y29uc3QgUVN0cmluZyAmCisgICAgICAgICAgICAgYnVmLm9wZW4oUUlPRGV2aWNlOjpSZWFkV3Jp dGUpOworICAgICAgICAgICAgIFFCeXRlQXJyYXkgZm10ID0gIkJNUCI7CisgICAgICAgICAgICAg aWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoUUxhdGluMVN0cmluZygiaW1hZ2UvIikpKSB7CistICAg ICAgICAgICAgICAgIFFCeXRlQXJyYXkgaW1nRm10ID0gbWltZVR5cGUubWlkKDYpLnRvVXBwZXIo KS50b0xhdGluMSgpOworKyAgICAgICAgICAgICAgICBRQnl0ZUFycmF5IGltZ0ZtdCA9IG1pbWVU eXBlLm1pZCg2KS50b0xvd2VyKCkudG9MYXRpbjEoKTsKKyAgICAgICAgICAgICAgICAgaWYgKFFJ bWFnZVdyaXRlcjo6c3VwcG9ydGVkSW1hZ2VGb3JtYXRzKCkuY29udGFpbnMoaW1nRm10KSkKKyAg ICAgICAgICAgICAgICAgICAgIGZtdCA9IGltZ0ZtdDsKKyAgICAgICAgICAgICB9CitAQCAtNzQs NyArNzQsNyBAQCBRQnl0ZUFycmF5IFFXYXlsYW5kTWltZUhlbHBlcjo6Z2V0Qnl0ZUFycmF5KFFN aW1lRGF0YSAqbWltZURhdGEsIGNvbnN0IFFTdHJpbmcgJgorICAgICAgICAgUUxpc3Q8UVVybD4g dXJscyA9IG1pbWVEYXRhLT51cmxzKCk7CisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHVy bHMuY291bnQoKTsgKytpKSB7CisgICAgICAgICAgICAgY29udGVudC5hcHBlbmQodXJscy5hdChp KS50b0VuY29kZWQoKSk7CistICAgICAgICAgICAgY29udGVudC5hcHBlbmQoJ1xuJyk7CisrICAg ICAgICAgICAgY29udGVudC5hcHBlbmQoIlxyXG4iKTsKKyAgICAgICAgIH0KKyAgICAgfSBlbHNl IHsKKyAgICAgICAgIGNvbnRlbnQgPSBtaW1lRGF0YS0+ZGF0YShtaW1lVHlwZSk7CitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZpY2V2MS90c3RfZGF0YWRl dmljZXYxLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9kYXRhZGV2aWNldjEvdHN0 X2RhdGFkZXZpY2V2MS5jcHAKK2luZGV4IDE1NjhiM2I5Li4wNjc0MTBkMCAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9kYXRhZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2 MS5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9kYXRhZGV2aWNldjEvdHN0 X2RhdGFkZXZpY2V2MS5jcHAKK0BAIC0zNSw3ICszNSw3IEBACisgCisgdXNpbmcgbmFtZXNwYWNl IE1vY2tDb21wb3NpdG9yOworIAorLWNvbnN0ZXhwciBpbnQgZGF0YURldmljZVZlcnNpb24gPSAx OworK2NvbnN0ZXhwciBpbnQgZGF0YURldmljZVZlcnNpb24gPSAzOworIAorIGNsYXNzIERhdGFE ZXZpY2VDb21wb3NpdG9yIDogcHVibGljIERlZmF1bHRDb21wb3NpdG9yIHsKKyBwdWJsaWM6Citk aWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1 LmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUvdHN0X3NlYXR2NS5jcHAK K2luZGV4IDkzMTJjMmU1Li4yZWEzODJmMSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9h dXRvL2NsaWVudC9zZWF0djUvdHN0X3NlYXR2NS5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9h dXRvL2NsaWVudC9zZWF0djUvdHN0X3NlYXR2NS5jcHAKK0BAIC03Myw2ICs3Myw3IEBAIHByaXZh dGUgc2xvdHM6CisgICAgIHZvaWQgbXVsdGlUb3VjaCgpOworICAgICB2b2lkIG11bHRpVG91Y2hV cEFuZE1vdGlvbkZyYW1lKCk7CisgICAgIHZvaWQgdGFwQW5kTW92ZUluU2FtZUZyYW1lKCk7Cisr ICAgIHZvaWQgY2FuY2VsVG91Y2goKTsKKyB9OworIAorIHZvaWQgdHN0X3NlYXR2NTo6YmluZHNU b1NlYXQoKQorQEAgLTY0Niw1ICs2NDcsMzQgQEAgdm9pZCB0c3Rfc2VhdHY1Ojp0YXBBbmRNb3Zl SW5TYW1lRnJhbWUoKQorICAgICBRVFJZX0NPTVBBUkUod2luZG93Lm1fZXZlbnRzLmxhc3QoKS50 b3VjaFBvaW50cy5maXJzdCgpLnN0YXRlKCksIFF0OjpUb3VjaFBvaW50U3RhdGU6OlRvdWNoUG9p bnRSZWxlYXNlZCk7CisgfQorIAorK3ZvaWQgdHN0X3NlYXR2NTo6Y2FuY2VsVG91Y2goKQorK3sK KysgICAgVG91Y2hXaW5kb3cgd2luZG93OworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhk Z1N1cmZhY2UoKSAmJiB4ZGdTdXJmYWNlKCktPm1fY29tbWl0dGVkQ29uZmlndXJlU2VyaWFsKTsK KysKKysgICAgZXhlYyhbPV0geworKyAgICAgICAgYXV0byAqdCA9IHRvdWNoKCk7CisrICAgICAg ICBhdXRvICpjID0gY2xpZW50KCk7CisrICAgICAgICB0LT5zZW5kRG93bih4ZGdUb3BsZXZlbCgp LT5zdXJmYWNlKCksIHszMiwgMzJ9LCAxKTsKKysgICAgICAgIHQtPnNlbmRGcmFtZShjKTsKKysg ICAgICAgIHQtPnNlbmRDYW5jZWwoYyk7CisrICAgICAgICB0LT5zZW5kRnJhbWUoYyk7CisrICAg IH0pOworKworKyAgICBRVFJZX1ZFUklGWSghd2luZG93Lm1fZXZlbnRzLmVtcHR5KCkpOworKyAg ICB7CisrICAgICAgICBhdXRvIGUgPSB3aW5kb3cubV9ldmVudHMudGFrZUZpcnN0KCk7CisrICAg ICAgICBRQ09NUEFSRShlLnR5cGUsIFFFdmVudDo6VG91Y2hCZWdpbik7CisrICAgICAgICBRQ09N UEFSRShlLnRvdWNoUG9pbnRTdGF0ZXMsIFF0OjpUb3VjaFBvaW50UHJlc3NlZCk7CisrICAgICAg ICBRQ09NUEFSRShlLnRvdWNoUG9pbnRzLmxlbmd0aCgpLCAxKTsKKysgICAgICAgIFFDT01QQVJF KGUudG91Y2hQb2ludHMuZmlyc3QoKS5wb3MoKSwgUVBvaW50RigzMi13aW5kb3cuZnJhbWVNYXJn aW5zKCkubGVmdCgpLCAzMi13aW5kb3cuZnJhbWVNYXJnaW5zKCkudG9wKCkpKTsKKysgICAgfQor KyAgICB7CisrICAgICAgICBhdXRvIGUgPSB3aW5kb3cubV9ldmVudHMudGFrZUZpcnN0KCk7Cisr ICAgICAgICBRQ09NUEFSRShlLnR5cGUsIFFFdmVudDo6VG91Y2hDYW5jZWwpOworKyAgICAgICAg UUNPTVBBUkUoZS50b3VjaFBvaW50cy5sZW5ndGgoKSwgMCk7CisrICAgIH0KKyt9CisrCisgUUNP TVBPU0lUT1JfVEVTVF9NQUlOKHRzdF9zZWF0djUpCisgI2luY2x1ZGUgInRzdF9zZWF0djUubW9j IgorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZWNv bXBvc2l0b3IuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlY29t cG9zaXRvci5jcHAKK2luZGV4IDVjNmM4M2JhLi5mYTliNzY2MiAxMDA2NDQKKy0tLSBhL3F0d2F5 bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZWNvbXBvc2l0b3IuY3BwCisrKysgYi9x dHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVjb21wb3NpdG9yLmNwcAorQEAg LTI3LDYgKzI3LDcgQEAKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAorICNpbmNsdWRlICJjb3Jl Y29tcG9zaXRvci5oIgorKyNpbmNsdWRlIDx0aHJlYWQ+CisgCisgbmFtZXNwYWNlIE1vY2tDb21w b3NpdG9yIHsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hh cmVkL2NvcmVwcm90b2NvbC5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVk L2NvcmVwcm90b2NvbC5jcHAKK2luZGV4IDBkOTg4NTIxLi5kMWEyZTdjYiAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmNwcAorKysr IGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuY3BwCitA QCAtNDUxLDYgKzQ1MSwxMyBAQCB2b2lkIFRvdWNoOjpzZW5kRnJhbWUod2xfY2xpZW50ICpjbGll bnQpCisgICAgICAgICBzZW5kX2ZyYW1lKHItPmhhbmRsZSk7CisgfQorIAorK3ZvaWQgVG91Y2g6 OnNlbmRDYW5jZWwod2xfY2xpZW50ICpjbGllbnQpCisreworKyAgICBjb25zdCBhdXRvIHRvdWNo UmVzb3VyY2VzID0gcmVzb3VyY2VNYXAoKS52YWx1ZXMoY2xpZW50KTsKKysgICAgZm9yIChhdXRv ICpyIDogdG91Y2hSZXNvdXJjZXMpCisrICAgICAgICBzZW5kX2NhbmNlbChyLT5oYW5kbGUpOwor K30KKysKKyB1aW50IEtleWJvYXJkOjpzZW5kRW50ZXIoU3VyZmFjZSAqc3VyZmFjZSkKKyB7Cisg ICAgIGF1dG8gc2VyaWFsID0gbV9zZWF0LT5tX2NvbXBvc2l0b3ItPm5leHRTZXJpYWwoKTsKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2Nv bC5oIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuaAor aW5kZXggYTFhZjEzN2EuLjIxMGQ4ZGRiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1 dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuaAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1 dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuaAorQEAgLTE1OCw3ICsxNTgsNyBAQCBjbGFz cyBXbENvbXBvc2l0b3IgOiBwdWJsaWMgR2xvYmFsLCBwdWJsaWMgUXRXYXlsYW5kU2VydmVyOjp3 bF9jb21wb3NpdG9yCisgeworICAgICBRX09CSkVDVAorIHB1YmxpYzoKKy0gICAgZXhwbGljaXQg V2xDb21wb3NpdG9yKENvcmVDb21wb3NpdG9yICpjb21wb3NpdG9yLCBpbnQgdmVyc2lvbiA9IDMp CisrICAgIGV4cGxpY2l0IFdsQ29tcG9zaXRvcihDb3JlQ29tcG9zaXRvciAqY29tcG9zaXRvciwg aW50IHZlcnNpb24gPSA0KQorICAgICAgICAgOiBRdFdheWxhbmRTZXJ2ZXI6OndsX2NvbXBvc2l0 b3IoY29tcG9zaXRvci0+bV9kaXNwbGF5LCB2ZXJzaW9uKQorICAgICAgICAgLCBtX2NvbXBvc2l0 b3IoY29tcG9zaXRvcikKKyAgICAge30KK0BAIC0zNjQsNiArMzY0LDcgQEAgcHVibGljOgorICAg ICB1aW50IHNlbmRVcCh3bF9jbGllbnQgKmNsaWVudCwgaW50IGlkKTsKKyAgICAgdm9pZCBzZW5k TW90aW9uKHdsX2NsaWVudCAqY2xpZW50LCBjb25zdCBRUG9pbnRGICZwb3NpdGlvbiwgaW50IGlk KTsKKyAgICAgdm9pZCBzZW5kRnJhbWUod2xfY2xpZW50ICpjbGllbnQpOworKyAgICB2b2lkIHNl bmRDYW5jZWwod2xfY2xpZW50ICpjbGllbnQpOworIAorICAgICBTZWF0ICptX3NlYXQgPSBudWxs cHRyOworIH07CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJl ZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3No YXJlZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwCitpbmRleCBhNDE1Y2JmNS4uYjFkM2QwN2QgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2NrY29t cG9zaXRvci5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xk L21vY2tjb21wb3NpdG9yLmNwcAorQEAgLTM0Miw3ICszNDIsNyBAQCBDb21wb3NpdG9yOjpDb21w b3NpdG9yKE1vY2tDb21wb3NpdG9yICptb2NrQ29tcG9zaXRvcikKKyAgICAgICAgIGV4aXQoRVhJ VF9GQUlMVVJFKTsKKyAgICAgfQorIAorLSAgICB3bF9nbG9iYWxfY3JlYXRlKG1fZGlzcGxheSwg JndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCAxLCB0aGlzLCBiaW5kQ29tcG9zaXRvcik7CisrICAg IHdsX2dsb2JhbF9jcmVhdGUobV9kaXNwbGF5LCAmd2xfY29tcG9zaXRvcl9pbnRlcmZhY2UsIDQs IHRoaXMsIGJpbmRDb21wb3NpdG9yKTsKKyAKKyAgICAgbV9kYXRhX2RldmljZV9tYW5hZ2VyLnJl c2V0KG5ldyBEYXRhRGV2aWNlTWFuYWdlcih0aGlzLCBtX2Rpc3BsYXkpKTsKKyAKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5j cHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5j cHAKK2luZGV4IGU5ZGY1ZjkwLi5jMzI0NmU0YSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0 cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmNwcAorKysrIGIvcXR3YXlsYW5k L3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuY3BwCitAQCAtMTI1LDYg KzEyNSwxNiBAQCB2b2lkIFN1cmZhY2U6OnN1cmZhY2VfZGFtYWdlKFJlc291cmNlICpyZXNvdXJj ZSwKKyAgICAgUV9VTlVTRUQoaGVpZ2h0KTsKKyB9CisgCisrdm9pZCBTdXJmYWNlOjpzdXJmYWNl X2RhbWFnZV9idWZmZXIoUmVzb3VyY2UgKnJlc291cmNlLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQz Ml90IGhlaWdodCkKKyt7CisrICAgIFFfVU5VU0VEKHJlc291cmNlKTsKKysgICAgUV9VTlVTRUQo eCk7CisrICAgIFFfVU5VU0VEKHkpOworKyAgICBRX1VOVVNFRCh3aWR0aCk7CisrICAgIFFfVU5V U0VEKGhlaWdodCk7CisrfQorKworIHZvaWQgU3VyZmFjZTo6c3VyZmFjZV9mcmFtZShSZXNvdXJj ZSAqcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGNhbGxi YWNrKQorIHsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVk X29sZC9tb2Nrc3VyZmFjZS5oIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9v bGQvbW9ja3N1cmZhY2UuaAoraW5kZXggOTQ5ZGMyM2QuLmQxNzY4MzdlIDEwMDY0NAorLS0tIGEv cXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuaAorKysr IGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuaAor QEAgLTY1LDYgKzY1LDggQEAgcHJvdGVjdGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCB3bF9yZXNvdXJjZSAqYnVmZmVyLCBpbnQgeCwgaW50IHkpIG92ZXJyaWRlOworICAgICB2 b2lkIHN1cmZhY2VfZGFtYWdlKFJlc291cmNlICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln aHQpIG92ZXJyaWRlOworKyAgICB2b2lkIHN1cmZhY2VfZGFtYWdlX2J1ZmZlcihSZXNvdXJjZSAq cmVzb3VyY2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgeCwgaW50 MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkgb3ZlcnJpZGU7CisgICAgIHZv aWQgc3VyZmFjZV9mcmFtZShSZXNvdXJjZSAqcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAg ICAgICB1aW50MzJfdCBjYWxsYmFjaykgb3ZlcnJpZGU7CisgICAgIHZvaWQgc3VyZmFjZV9jb21t aXQoUmVzb3VyY2UgKnJlc291cmNlKSBvdmVycmlkZTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQv dGVzdHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3VyZmFjZS5jcHAgYi9xdHdheWxhbmQvdGVz dHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3VyZmFjZS5jcHAKK2luZGV4IDk1ZTRlNjA5Li42 MGM2NzJjZSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zdXJmYWNl L3RzdF9zdXJmYWNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3N1cmZh Y2UvdHN0X3N1cmZhY2UuY3BwCitAQCAtMTI5LDYgKzEyOSwxMCBAQCB2b2lkIHRzdF9zdXJmYWNl Ojp3YWl0Rm9yRnJhbWVDYWxsYmFja0dsKCkKKyAgICAgLy8gTWFrZSBzdXJlIHdlIGZvbGxvdyBm cmFtZSBjYWxsYmFja3MgZm9yIHNvbWUgZnJhbWVzCisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg NTsgKytpKSB7CisgICAgICAgICB4ZGdQaW5nQW5kV2FpdEZvclBvbmcoKTsgLy8gTWFrZSBzdXJl IHRoaW5ncyBoYXZlIGhhcHBlbmVkIG9uIHRoZSBjbGllbnQKKysgICAgICAgIGlmICghcUVudmly b25tZW50VmFyaWFibGVJbnRWYWx1ZSgiUVRfV0FZTEFORF9ESVNBQkxFX1dJTkRPV0RFQ09SQVRJ T04iKSAmJiBpID09IDApIHsKKysgICAgICAgICAgICBRQ09NUEFSRShidWZmZXJTcHkuY291bnQo KSwgMSk7CisrICAgICAgICAgICAgYnVmZmVyU3B5LnJlbW92ZUZpcnN0KCk7CisrICAgICAgICB9 CisgICAgICAgICBleGVjKFsmXSB7CisgICAgICAgICAgICAgUVZFUklGWShidWZmZXJTcHkuZW1w dHkoKSk7IC8vIE1ha2Ugc3VyZSBubyBleHRyYSBidWZmZXJzIGhhdmUgYXJyaXZlZAorICAgICAg ICAgICAgIFFWRVJJRlkoIXhkZ1RvcGxldmVsKCktPnN1cmZhY2UoKS0+bV93YWl0aW5nRnJhbWVD YWxsYmFja3MuZW1wdHkoKSk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xp ZW50L3hkZ3NoZWxsL3RzdF94ZGdzaGVsbC5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGll bnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcAoraW5kZXggMjI3N2JiYjguLjc0Nzg3NWI0IDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3hkZ3NoZWxsL3RzdF94ZGdz aGVsbC5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC94ZGdzaGVsbC90c3Rf eGRnc2hlbGwuY3BwCitAQCAtMzEsNiArMzEsNyBAQAorICNpbmNsdWRlIDxRdEd1aS9RT3BlbkdM V2luZG93PgorICNpbmNsdWRlIDxRdEd1aS9xcGEvcXBsYXRmb3JtbmF0aXZlaW50ZXJmYWNlLmg+ CisgI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3dheWxhbmQtd2F5bGFuZC1jbGll bnQtcHJvdG9jb2wuaD4KKysjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvcXdheWxh bmR3aW5kb3dfcC5oPgorIAorIHVzaW5nIG5hbWVzcGFjZSBNb2NrQ29tcG9zaXRvcjsKKyAKK0BA IC00NSw2ICs0Niw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgY29uZmlndXJlU3RhdGVz KCk7CisgICAgIHZvaWQgcG9wdXAoKTsKKyAgICAgdm9pZCB0b29sdGlwT25Qb3B1cCgpOworKyAg ICB2b2lkIHRvb2x0aXBBbmRTaWJsaW5nUG9wdXAoKTsKKyAgICAgdm9pZCBzd2l0Y2hQb3B1cHMo KTsKKyAgICAgdm9pZCBoaWRlUG9wdXBQYXJlbnQoKTsKKyAgICAgdm9pZCBwb25ncygpOworQEAg LTEzOCw2ICsxNDAsNyBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmlndXJlU2l6ZSgpCisgCisg dm9pZCB0c3RfeGRnc2hlbGw6OmNvbmZpZ3VyZVN0YXRlcygpCisgeworKyAgICBRVkVSSUZZKHFw dXRlbnYoIlFUX1dBWUxBTkRfRlJBTUVfQ0FMTEJBQ0tfVElNRU9VVCIsICIwIikpOworICAgICBR UmFzdGVyV2luZG93IHdpbmRvdzsKKyAgICAgd2luZG93LnJlc2l6ZSg2NCwgNDgpOworICAgICB3 aW5kb3cuc2hvdygpOworQEAgLTE1NCw5ICsxNTcsMTIgQEAgdm9pZCB0c3RfeGRnc2hlbGw6OmNv bmZpZ3VyZVN0YXRlcygpCisgICAgIC8vIFRvcGxldmVsIHdpbmRvd3MgZG9uJ3Qga25vdyB0aGVp ciBwb3NpdGlvbiBvbiB4ZGctc2hlbGwKKyAvLyAgICBRQ09NUEFSRSh3aW5kb3cuZnJhbWVHZW9t ZXRyeSgpLnRvcExlZnQoKSwgUVBvaW50KCkpOyAvLyBUT0RPOiB0aGlzIGRvZXNuJ3QgY3VycmVu dGx5IHdvcmsgd2hlbiB3aW5kb3cgZGVjb3JhdGlvbnMgYXJlIGVuYWJsZWQKKyAKKy0vLyAgICBR RVhQRUNUX0ZBSUwoIiIsICJjb25maWd1cmUgaGFzIGFscmVhZHkgYmVlbiBhY2tlZCwgd2Ugc2hv dWxkbid0IGhhdmUgdG8gd2FpdCBmb3IgaXNBY3RpdmUiLCBDb250aW51ZSk7CistLy8gICAgUVZF UklGWSh3aW5kb3cuaXNBY3RpdmUoKSk7CistICAgIFFUUllfVkVSSUZZKHdpbmRvdy5pc0FjdGl2 ZSgpKTsgLy8gSnVzdCBtYWtlIHN1cmUgaXQgZXZlbnR1YWxseSBnZXQncyBzZXQgY29ycmVjdGx5 CisrICAgIC8vIHdpbmRvdy53aW5kb3dzdGF0ZSgpIGlzIGRyaXZlbiBieSBrZXlib2FyZCBmb2N1 cywgaG93ZXZlciBmb3IgZGVjb3JhdGlvbnMgd2Ugd2FudCB0byBmb2xsb3cKKysgICAgLy8gWERH U2hlbGwgdGhpcyBpcyBpbnRlcm5hbCB0byBRdFdheWxhbmQgc28gaXQgaXMgcXVlcmllZCBkaXJl Y3RseQorKyAgICBhdXRvIHdheWxhbmRXaW5kb3cgPSBzdGF0aWNfY2FzdDxRdFdheWxhbmRDbGll bnQ6OlFXYXlsYW5kV2luZG93ICo+KHdpbmRvdy5oYW5kbGUoKSk7CisrICAgIFFfQVNTRVJUKHdh eWxhbmRXaW5kb3cpOworKyAgICBRVFJZX1ZFUklGWSh3YXlsYW5kV2luZG93LT53aW5kb3dTdGF0 ZXMoKS50ZXN0RmxhZygKKysgICAgICAgICAgICBRdDo6V2luZG93QWN0aXZlKSk7IC8vIEp1c3Qg bWFrZSBzdXJlIGl0IGV2ZW50dWFsbHkgZ2V0J3Mgc2V0IGNvcnJlY3RseQorIAorICAgICBjb25z dCBRU2l6ZSBzY3JlZW5TaXplKDY0MCwgNDgwKTsKKyAgICAgY29uc3QgdWludCBtYXhpbWl6ZWRT ZXJpYWwgPSBleGVjKFs9XSB7CitAQCAtMTg2LDYgKzE5Miw3IEBAIHZvaWQgdHN0X3hkZ3NoZWxs Ojpjb25maWd1cmVTdGF0ZXMoKQorICAgICBRQ09NUEFSRSh3aW5kb3cud2luZG93U3RhdGVzKCks IFF0OjpXaW5kb3dOb1N0YXRlKTsKKyAgICAgUUNPTVBBUkUod2luZG93LmZyYW1lR2VvbWV0cnko KS5zaXplKCksIHdpbmRvd2VkU2l6ZSk7CisgLy8gICAgUUNPTVBBUkUod2luZG93LmZyYW1lR2Vv bWV0cnkoKS50b3BMZWZ0KCksIFFQb2ludCgpKTsgLy8gVE9ETzogdGhpcyBkb2Vzbid0IGN1cnJl bnRseSB3b3JrIHdoZW4gd2luZG93IGRlY29yYXRpb25zIGFyZSBlbmFibGVkCisrICAgIFFWRVJJ RlkocXVuc2V0ZW52KCJRVF9XQVlMQU5EX0ZSQU1FX0NBTExCQUNLX1RJTUVPVVQiKSk7CisgfQor IAorIHZvaWQgdHN0X3hkZ3NoZWxsOjpwb3B1cCgpCitAQCAtMzQwLDYgKzM0Nyw5MiBAQCB2b2lk IHRzdF94ZGdzaGVsbDo6dG9vbHRpcE9uUG9wdXAoKQorICAgICBRQ09NUE9TSVRPUl9UUllfQ09N UEFSRSh4ZGdQb3B1cCgwKSwgbnVsbHB0cik7CisgfQorIAorK3ZvaWQgdHN0X3hkZ3NoZWxsOjp0 b29sdGlwQW5kU2libGluZ1BvcHVwKCkKKyt7CisrICAgIGNsYXNzIFRvb2xUaXAgOiBwdWJsaWMg UVJhc3RlcldpbmRvdyB7CisrICAgIHB1YmxpYzoKKysgICAgICAgIGV4cGxpY2l0IFRvb2xUaXAo UVdpbmRvdyAqcGFyZW50KSB7CisrICAgICAgICAgICAgc2V0VHJhbnNpZW50UGFyZW50KHBhcmVu dCk7CisrICAgICAgICAgICAgc2V0RmxhZ3MoUXQ6OlRvb2xUaXApOworKyAgICAgICAgICAgIHJl c2l6ZSgxMDAsIDEwMCk7CisrICAgICAgICAgICAgc2hvdygpOworKyAgICAgICAgfQorKyAgICAg ICAgdm9pZCBtb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQgKmV2ZW50KSBvdmVycmlkZSB7Cisr ICAgICAgICAgICAgUVJhc3RlcldpbmRvdzo6bW91c2VQcmVzc0V2ZW50KGV2ZW50KTsKKysgICAg ICAgICAgICBtX3BvcHVwID0gbmV3IFFSYXN0ZXJXaW5kb3c7CisrICAgICAgICAgICAgbV9wb3B1 cC0+c2V0VHJhbnNpZW50UGFyZW50KHRyYW5zaWVudFBhcmVudCgpKTsKKysgICAgICAgICAgICBt X3BvcHVwLT5zZXRGbGFncyhRdDo6UG9wdXApOworKyAgICAgICAgICAgIG1fcG9wdXAtPnJlc2l6 ZSgxMDAsIDEwMCk7CisrICAgICAgICAgICAgbV9wb3B1cC0+c2hvdygpOworKyAgICAgICAgfQor KworKyAgICAgICAgUVJhc3RlcldpbmRvdyAqbV9wb3B1cCA9IG51bGxwdHI7CisrICAgIH07Cisr CisrICAgIGNsYXNzIFdpbmRvdyA6IHB1YmxpYyBRUmFzdGVyV2luZG93IHsKKysgICAgcHVibGlj OgorKyAgICAgICAgdm9pZCBtb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQgKmV2ZW50KSBvdmVy cmlkZSB7CisrICAgICAgICAgICAgUVJhc3RlcldpbmRvdzo6bW91c2VQcmVzc0V2ZW50KGV2ZW50 KTsKKysgICAgICAgICAgICBtX3Rvb2x0aXAgPSBuZXcgVG9vbFRpcCh0aGlzKTsKKysgICAgICAg IH0KKysgICAgICAgIFRvb2xUaXAgKm1fdG9vbHRpcCA9IG51bGxwdHI7CisrICAgIH07CisrCisr ICAgIFdpbmRvdyB3aW5kb3c7CisrICAgIHdpbmRvdy5yZXNpemUoMjAwLCAyMDApOworKyAgICB3 aW5kb3cuc2hvdygpOworKworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1RvcGxldmVs KCkpOworKyAgICBleGVjKFs9XSB7IHhkZ1RvcGxldmVsKCktPnNlbmRDb21wbGV0ZUNvbmZpZ3Vy ZSgpOyB9KTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdUb3BsZXZlbCgpLT5tX3hk Z1N1cmZhY2UtPm1fY29tbWl0dGVkQ29uZmlndXJlU2VyaWFsKTsKKysKKysgICAgZXhlYyhbPV0g eworKyAgICAgICAgYXV0byAqc3VyZmFjZSA9IHhkZ1RvcGxldmVsKCktPnN1cmZhY2UoKTsKKysg ICAgICAgIGF1dG8gKnAgPSBwb2ludGVyKCk7CisrICAgICAgICBhdXRvICpjID0gY2xpZW50KCk7 CisrICAgICAgICBwLT5zZW5kRW50ZXIoc3VyZmFjZSwgezEwMCwgMTAwfSk7CisrICAgICAgICBw LT5zZW5kRnJhbWUoYyk7CisrICAgICAgICBwLT5zZW5kQnV0dG9uKGNsaWVudCgpLCBCVE5fTEVG VCwgUG9pbnRlcjo6YnV0dG9uX3N0YXRlX3ByZXNzZWQpOworKyAgICAgICAgcC0+c2VuZEJ1dHRv bihjbGllbnQoKSwgQlROX0xFRlQsIFBvaW50ZXI6OmJ1dHRvbl9zdGF0ZV9yZWxlYXNlZCk7Cisr ICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgICAgICBwLT5zZW5kTGVhdmUoc3VyZmFjZSk7 CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgIH0pOworKworKyAgICBRQ09NUE9TSVRP Ul9UUllfVkVSSUZZKHhkZ1BvcHVwKCkpOworKyAgICBleGVjKFs9XSB7IHhkZ1BvcHVwKCktPnNl bmRDb21wbGV0ZUNvbmZpZ3VyZShRUmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsgfSk7CisrICAg IFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoKS0+bV94ZGdTdXJmYWNlLT5tX2NvbW1p dHRlZENvbmZpZ3VyZVNlcmlhbCk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoIXhkZ1Bv cHVwKCktPm1fZ3JhYmJlZCk7CisrCisrICAgIGV4ZWMoWz1dIHsKKysgICAgICAgIGF1dG8gKnN1 cmZhY2UgPSB4ZGdQb3B1cCgpLT5zdXJmYWNlKCk7CisrICAgICAgICBhdXRvICpwID0gcG9pbnRl cigpOworKyAgICAgICAgYXV0byAqYyA9IGNsaWVudCgpOworKyAgICAgICAgcC0+c2VuZEVudGVy KHN1cmZhY2UsIHsxMDAsIDEwMH0pOworKyAgICAgICAgcC0+c2VuZEZyYW1lKGMpOworKyAgICAg ICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xFRlQsIFBvaW50ZXI6OmJ1dHRvbl9zdGF0 ZV9wcmVzc2VkKTsKKysgICAgICAgIHAtPnNlbmRCdXR0b24oY2xpZW50KCksIEJUTl9MRUZULCBQ b2ludGVyOjpidXR0b25fc3RhdGVfcmVsZWFzZWQpOworKyAgICAgICAgcC0+c2VuZEZyYW1lKGMp OworKyAgICB9KTsKKysKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgxKSk7 CisrICAgIGV4ZWMoWz1dIHsgeGRnUG9wdXAoMSktPnNlbmRDb21wbGV0ZUNvbmZpZ3VyZShRUmVj dCgxMDAsIDEwMCwgMTAwLCAxMDApKTsgfSk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlko eGRnUG9wdXAoMSktPm1feGRnU3VyZmFjZS0+bV9jb21taXR0ZWRDb25maWd1cmVTZXJpYWwpOwor KyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDEpLT5tX2dyYWJiZWQpOworKwor KyAgICAvLyBDbG9zZSB0aGUgbWlkZGxlIHRvb2x0aXAgKGl0IHNob3VsZCBub3QgY2xvc2UgdGhl IHNpYmxpbmcgcG9wdXApCisrICAgIHdpbmRvdy5tX3Rvb2x0aXAtPmNsb3NlKCk7CisrCisrICAg IFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1BvcHVwKDEpLCBudWxscHRyKTsKKysgICAgLy8g VmVyaWZ5IHRoZSByZW1haW5pbmcgeGRnIHN1cmZhY2UgaXMgYSBncmFiIHBvcHVwLi4KKysgICAg UUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgwKSk7CisrICAgIFFDT01QT1NJVE9SX1RS WV9WRVJJRlkoeGRnUG9wdXAoMCktPm1fZ3JhYmJlZCk7CisrCisrICAgIHdpbmRvdy5tX3Rvb2x0 aXAtPm1fcG9wdXAtPmNsb3NlKCk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1Bv cHVwKDEpLCBudWxscHRyKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAo MCksIG51bGxwdHIpOworK30KKysKKyAvLyBRVEJVRy02NTY4MAorIHZvaWQgdHN0X3hkZ3NoZWxs Ojpzd2l0Y2hQb3B1cHMoKQorIHsKK0BAIC01MDUsNyArNTk4LDcgQEAgdm9pZCB0c3RfeGRnc2hl bGw6Om1pbk1heFNpemUoKQorICAgICB3aW5kb3cuc2hvdygpOworICAgICBRQ09NUE9TSVRPUl9U UllfVkVSSUZZKHhkZ1RvcGxldmVsKCkpOworIAorLSAgICBleGVjKFs9XSB7IHhkZ1RvcGxldmVs KCktPnNlbmRDb21wbGV0ZUNvbmZpZ3VyZSgpOyB9KTsKKysgICAgLy8gd2UgZG9uJ3Qgcm91bmR0 cmlwIHdpdGggb3VyIGNvbmZpZ3VyYXRpb24gdGhlIGluaXRpYWwgY29tbWl0IHNob3VsZCBiZSBj b3JyZWN0CisgCisgICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1RvcGxldmVsKCktPm1f Y29tbWl0dGVkLm1pblNpemUsIFFTaXplKDEwMCwgMTAwKSk7CisgICAgIFFDT01QT1NJVE9SX1RS WV9DT01QQVJFKHhkZ1RvcGxldmVsKCktPm1fY29tbWl0dGVkLm1heFNpemUsIFFTaXplKDEwMDAs IDEwMDApKTsKK1N1Ym1vZHVsZSBxdHdlYmNoYW5uZWwgNjE4NDIyZWUuLmY4OTQ5NjU1OgorZGlm ZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hl ci5jcHAgYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIu Y3BwCitpbmRleCA1MzZlYjVjLi44OThkNzY5IDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3Ny Yy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyLmNwcAorKysrIGIvcXR3ZWJjaGFubmVs L3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyLmNwcAorQEAgLTE4Niw4ICsxODYs NiBAQCBRX0RFQ0xBUkVfVFlQRUlORk8oT3ZlcmxvYWRSZXNvbHV0aW9uQ2FuZGlkYXRlLCBRX01P VkFCTEVfVFlQRSk7CisgUU1ldGFPYmplY3RQdWJsaXNoZXI6OlFNZXRhT2JqZWN0UHVibGlzaGVy KFFXZWJDaGFubmVsICp3ZWJDaGFubmVsKQorICAgICA6IFFPYmplY3Qod2ViQ2hhbm5lbCkKKyAg ICAgLCB3ZWJDaGFubmVsKHdlYkNoYW5uZWwpCistICAgICwgc2lnbmFsSGFuZGxlcih0aGlzKQor LSAgICAsIGNsaWVudElzSWRsZShmYWxzZSkKKyAgICAgLCBibG9ja1VwZGF0ZXMoZmFsc2UpCisg ICAgICwgcHJvcGVydHlVcGRhdGVzSW5pdGlhbGl6ZWQoZmFsc2UpCisgeworQEAgLTMwMSwxNyAr Mjk5LDE3IEBAIFFKc29uT2JqZWN0IFFNZXRhT2JqZWN0UHVibGlzaGVyOjpjbGFzc0luZm9Gb3JP YmplY3QoY29uc3QgUU9iamVjdCAqb2JqZWN0LCBRV2ViCisgICAgIHJldHVybiBkYXRhOworIH0K KyAKKy12b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZXRDbGllbnRJc0lkbGUoYm9vbCBpc0lk bGUpCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2V0Q2xpZW50SXNJZGxlKGJvb2wgaXNJ ZGxlLCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisgeworLSAgICBp ZiAoY2xpZW50SXNJZGxlID09IGlzSWRsZSkgeworLSAgICAgICAgcmV0dXJuOworLSAgICB9Cist ICAgIGNsaWVudElzSWRsZSA9IGlzSWRsZTsKKy0gICAgaWYgKCFpc0lkbGUgJiYgdGltZXIuaXNB Y3RpdmUoKSkgeworLSAgICAgICAgdGltZXIuc3RvcCgpOworLSAgICB9IGVsc2UgaWYgKGlzSWRs ZSAmJiAhdGltZXIuaXNBY3RpdmUoKSkgeworLSAgICAgICAgdGltZXIuc3RhcnQoUFJPUEVSVFlf VVBEQVRFX0lOVEVSVkFMLCB0aGlzKTsKKy0gICAgfQorKyAgICB0cmFuc3BvcnRTdGF0ZVt0cmFu c3BvcnRdLmNsaWVudElzSWRsZSA9IGlzSWRsZTsKKysgICAgaWYgKGlzSWRsZSkKKysgICAgICAg IHNlbmRFbnF1ZXVlZFByb3BlcnR5VXBkYXRlcyh0cmFuc3BvcnQpOworK30KKysKKytib29sIFFN ZXRhT2JqZWN0UHVibGlzaGVyOjppc0NsaWVudElkbGUoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5z cG9ydCAqdHJhbnNwb3J0KQorK3sKKysgICAgYXV0byBmb3VuZCA9IHRyYW5zcG9ydFN0YXRlLmZp bmQodHJhbnNwb3J0KTsKKysgICAgcmV0dXJuIGZvdW5kICE9IHRyYW5zcG9ydFN0YXRlLmVuZCgp ICYmIGZvdW5kLnZhbHVlKCkuY2xpZW50SXNJZGxlOworIH0KKyAKKyBRSnNvbk9iamVjdCBRTWV0 YU9iamVjdFB1Ymxpc2hlcjo6aW5pdGlhbGl6ZUNsaWVudChRV2ViQ2hhbm5lbEFic3RyYWN0VHJh bnNwb3J0ICp0cmFuc3BvcnQpCitAQCAtMzMzLDYgKzMzMSw3IEBAIFFKc29uT2JqZWN0IFFNZXRh T2JqZWN0UHVibGlzaGVyOjppbml0aWFsaXplQ2xpZW50KFFXZWJDaGFubmVsQWJzdHJhY3RUcmFu c3BvcnQKKyAKKyB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjppbml0aWFsaXplUHJvcGVydHlV cGRhdGVzKGNvbnN0IFFPYmplY3QgKmNvbnN0IG9iamVjdCwgY29uc3QgUUpzb25PYmplY3QgJm9i amVjdEluZm8pCisgeworKyAgICBhdXRvICpzaWduYWxIYW5kbGVyID0gc2lnbmFsSGFuZGxlckZv cihvYmplY3QpOworICAgICBmb3JlYWNoIChjb25zdCBRSnNvblZhbHVlICZwcm9wZXJ0eUluZm9W YXIsIG9iamVjdEluZm9bS0VZX1BST1BFUlRJRVNdLnRvQXJyYXkoKSkgeworICAgICAgICAgY29u c3QgUUpzb25BcnJheSAmcHJvcGVydHlJbmZvID0gcHJvcGVydHlJbmZvVmFyLnRvQXJyYXkoKTsK KyAgICAgICAgIGlmIChwcm9wZXJ0eUluZm8uc2l6ZSgpIDwgMikgeworQEAgLTM1MywxOSArMzUy LDE5IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmluaXRpYWxpemVQcm9wZXJ0eVVwZGF0 ZXMoY29uc3QgUU9iamVjdCAqY29uc3Qgb2JqZWN0CisgCisgICAgICAgICAvLyBPbmx5IGNvbm5l Y3QgZm9yIGEgcHJvcGVydHkgdXBkYXRlIG9uY2UKKyAgICAgICAgIGlmIChjb25uZWN0ZWRQcm9w ZXJ0aWVzLmlzRW1wdHkoKSkgeworLSAgICAgICAgICAgIHNpZ25hbEhhbmRsZXIuY29ubmVjdFRv KG9iamVjdCwgc2lnbmFsSW5kZXgpOworKyAgICAgICAgICAgIHNpZ25hbEhhbmRsZXItPmNvbm5l Y3RUbyhvYmplY3QsIHNpZ25hbEluZGV4KTsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIGNvbm5l Y3RlZFByb3BlcnRpZXMuaW5zZXJ0KHByb3BlcnR5SW5kZXgpOworICAgICB9CisgCisgICAgIC8v IGFsc28gYWx3YXlzIGNvbm5lY3QgdG8gZGVzdHJveWVkIHNpZ25hbAorLSAgICBzaWduYWxIYW5k bGVyLmNvbm5lY3RUbyhvYmplY3QsIHNfZGVzdHJveWVkU2lnbmFsSW5kZXgpOworKyAgICBzaWdu YWxIYW5kbGVyLT5jb25uZWN0VG8ob2JqZWN0LCBzX2Rlc3Ryb3llZFNpZ25hbEluZGV4KTsKKyB9 CisgCisgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2VuZFBlbmRpbmdQcm9wZXJ0eVVwZGF0 ZXMoKQorIHsKKy0gICAgaWYgKGJsb2NrVXBkYXRlcyB8fCAhY2xpZW50SXNJZGxlIHx8IHBlbmRp bmdQcm9wZXJ0eVVwZGF0ZXMuaXNFbXB0eSgpKSB7CisrICAgIGlmIChibG9ja1VwZGF0ZXMpIHsK KyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorQEAgLTQxNSwxOCArNDE0LDE5IEBAIHZvaWQg UU1ldGFPYmplY3RQdWJsaXNoZXI6OnNlbmRQZW5kaW5nUHJvcGVydHlVcGRhdGVzKCkKKyAKKyAg ICAgLy8gZGF0YSBkb2VzIG5vdCBjb250YWluIHNwZWNpZmljIHVwZGF0ZXMKKyAgICAgaWYgKCFk YXRhLmlzRW1wdHkoKSkgeworLSAgICAgICAgc2V0Q2xpZW50SXNJZGxlKGZhbHNlKTsKKy0KKyAg ICAgICAgIG1lc3NhZ2VbS0VZX0RBVEFdID0gZGF0YTsKKy0gICAgICAgIGJyb2FkY2FzdE1lc3Nh Z2UobWVzc2FnZSk7CisrICAgICAgICBlbnF1ZXVlQnJvYWRjYXN0TWVzc2FnZShtZXNzYWdlKTsK KyAgICAgfQorIAorICAgICAvLyBzZW5kIGV2ZXJ5IHByb3BlcnR5IHVwZGF0ZSB3aGljaCBpcyBu b3Qgc3VwcG9zZWQgdG8gYmUgYnJvYWRjYXN0ZWQKKyAgICAgY29uc3QgUUhhc2g8UVdlYkNoYW5u ZWxBYnN0cmFjdFRyYW5zcG9ydCosIFFKc29uQXJyYXk+Ojpjb25zdF9pdGVyYXRvciBzdWVuZCA9 IHNwZWNpZmljVXBkYXRlcy5jb25zdEVuZCgpOworICAgICBmb3IgKFFIYXNoPFFXZWJDaGFubmVs QWJzdHJhY3RUcmFuc3BvcnQqLCBRSnNvbkFycmF5Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzcGVj aWZpY1VwZGF0ZXMuY29uc3RCZWdpbigpOyBpdCAhPSBzdWVuZDsgKytpdCkgeworICAgICAgICAg bWVzc2FnZVtLRVlfREFUQV0gPSBpdC52YWx1ZSgpOworLSAgICAgICAgaXQua2V5KCktPnNlbmRN ZXNzYWdlKG1lc3NhZ2UpOworKyAgICAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZSwgaXQua2V5 KCkpOworICAgICB9CisrCisrICAgIGZvciAoYXV0byBzdGF0ZSA9IHRyYW5zcG9ydFN0YXRlLmJl Z2luKCk7IHN0YXRlICE9IHRyYW5zcG9ydFN0YXRlLmVuZCgpOyArK3N0YXRlKQorKyAgICAgICAg c2VuZEVucXVldWVkUHJvcGVydHlVcGRhdGVzKHN0YXRlLmtleSgpKTsKKyB9CisgCisgUVZhcmlh bnQgUU1ldGFPYmplY3RQdWJsaXNoZXI6Omludm9rZU1ldGhvZChRT2JqZWN0ICpjb25zdCBvYmpl Y3QsIGNvbnN0IFFNZXRhTWV0aG9kICZtZXRob2QsCitAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQg UU1ldGFPYmplY3RQdWJsaXNoZXI6OnNpZ25hbEVtaXR0ZWQoY29uc3QgUU9iamVjdCAqb2JqZWN0 LCBjb25zdCBpbnQgc2lnbmFsCisgICAgICAgICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgICBw ZW5kaW5nUHJvcGVydHlVcGRhdGVzW29iamVjdF1bc2lnbmFsSW5kZXhdID0gYXJndW1lbnRzOwor LSAgICAgICAgaWYgKGNsaWVudElzSWRsZSAmJiAhYmxvY2tVcGRhdGVzICYmICF0aW1lci5pc0Fj dGl2ZSgpKSB7CisrICAgICAgICBpZiAoIWJsb2NrVXBkYXRlcyAmJiAhdGltZXIuaXNBY3RpdmUo KSkgeworICAgICAgICAgICAgIHRpbWVyLnN0YXJ0KFBST1BFUlRZX1VQREFURV9JTlRFUlZBTCwg dGhpcyk7CisgICAgICAgICB9CisgICAgIH0KK0BAIC01OTAsNyArNTkwLDcgQEAgdm9pZCBRTWV0 YU9iamVjdFB1Ymxpc2hlcjo6b2JqZWN0RGVzdHJveWVkKGNvbnN0IFFPYmplY3QgKm9iamVjdCkK KyAgICAgLy8gb25seSByZW1vdmUgZnJvbSBoYW5kbGVyIHdoZW4gd2UgaW5pdGlhbGl6ZWQgdGhl IHByb3BlcnR5IHVwZGF0ZXMKKyAgICAgLy8gY2Y6IGh0dHBzOi8vYnVncmVwb3J0cy5xdC5pby9i cm93c2UvUVRCVUctNjAyNTAKKyAgICAgaWYgKHByb3BlcnR5VXBkYXRlc0luaXRpYWxpemVkKSB7 CistICAgICAgICBzaWduYWxIYW5kbGVyLnJlbW92ZShvYmplY3QpOworKyAgICAgICAgc2lnbmFs SGFuZGxlckZvcihvYmplY3QpLT5yZW1vdmUob2JqZWN0KTsKKyAgICAgICAgIHNpZ25hbFRvUHJv cGVydHlNYXAucmVtb3ZlKG9iamVjdCk7CisgICAgIH0KKyAgICAgcGVuZGluZ1Byb3BlcnR5VXBk YXRlcy5yZW1vdmUob2JqZWN0KTsKK0BAIC04NTIsNiArODUyLDUyIEBAIHZvaWQgUU1ldGFPYmpl Y3RQdWJsaXNoZXI6OmJyb2FkY2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2Up IGNvbnN0CisgICAgIH0KKyB9CisgCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6ZW5xdWV1 ZUJyb2FkY2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UpCisreworKyAgICBp ZiAod2ViQ2hhbm5lbC0+ZF9mdW5jKCktPnRyYW5zcG9ydHMuaXNFbXB0eSgpKSB7CisrICAgICAg ICBxV2FybmluZygiUVdlYkNoYW5uZWwgaXMgbm90IGNvbm5lY3RlZCB0byBhbnkgdHJhbnNwb3J0 cywgY2Fubm90IHNlbmQgbWVzc2FnZTogJXMiLAorKyAgICAgICAgICAgICAgICAgUUpzb25Eb2N1 bWVudChtZXNzYWdlKS50b0pzb24oKS5jb25zdERhdGEoKSk7CisrICAgICAgICByZXR1cm47Cisr ICAgIH0KKysKKysgICAgZm9yIChhdXRvICp0cmFuc3BvcnQgOiB3ZWJDaGFubmVsLT5kX2Z1bmMo KS0+dHJhbnNwb3J0cykgeworKyAgICAgICAgYXV0byAmc3RhdGUgPSB0cmFuc3BvcnRTdGF0ZVt0 cmFuc3BvcnRdOworKyAgICAgICAgc3RhdGUucXVldWVkTWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2Up OworKyAgICB9CisrfQorKworK3ZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmVucXVldWVNZXNz YWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9y dCkKKyt7CisrICAgIGF1dG8gJnN0YXRlID0gdHJhbnNwb3J0U3RhdGVbdHJhbnNwb3J0XTsKKysg ICAgc3RhdGUucXVldWVkTWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpOworK30KKysKKyt2b2lkIFFN ZXRhT2JqZWN0UHVibGlzaGVyOjpzZW5kRW5xdWV1ZWRQcm9wZXJ0eVVwZGF0ZXMoUVdlYkNoYW5u ZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorK3sKKysgICAgYXV0byBmb3VuZCA9IHRy YW5zcG9ydFN0YXRlLmZpbmQodHJhbnNwb3J0KTsKKysgICAgaWYgKGZvdW5kICE9IHRyYW5zcG9y dFN0YXRlLmVuZCgpICYmIGZvdW5kLnZhbHVlKCkuY2xpZW50SXNJZGxlCisrICAgICAgICAmJiAh Zm91bmQudmFsdWUoKS5xdWV1ZWRNZXNzYWdlcy5pc0VtcHR5KCkpIHsKKysKKysgICAgICAgIC8v IElmIHRoZSBjbGllbnQgaXMgY29ubmVjdGVkIHdpdGggYW4gaW4tcHJvY2VzcyB0cmFuc3BvcnQs IGl0IGNhbgorKyAgICAgICAgLy8gaGFwcGVuIHRoYXQgYSBtZXNzYWdlIHRyaWdnZXJzIGEgc3Vi c2VxdWVudCBwcm9wZXJ0eSBjaGFuZ2UuIEluCisrICAgICAgICAvLyB0aGF0IGNhc2UsIHdlIG5l ZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHF1ZXVlZCBtZXNzYWdlcyBoYXZlIGFscmVhZHkKKysgICAg ICAgIC8vIGJlZW4gY2xlYXJlZDsgb3RoZXJ3aXNlIHRoZSByZWN1cnNpdmUgY2FsbCB3aWxsIHNl bmQgZXZlcnl0aGlnIGFnYWluLgorKyAgICAgICAgLy8gQ2FzZSBpbiBwb2ludDogVGhlIHFtbHdl YmNoYW5uZWwgdGVzdHMgZmFpbCBpZiB3ZSBkb24ndCBjbGVhciB0aGUKKysgICAgICAgIC8vIHF1 ZXVlZCBtZXNzYWdlcyBiZWZvcmUgc2VuZGluZyB0aGVtIG91dC4KKysgICAgICAgIC8vIEZvciB0 aGF0IHNhbWUgcmVhc29uIHNldCB0aGUgY2xpZW50IHRvICJidXN5IiAoYWthIG5vbi1pZGxlKSBq dXN0CisrICAgICAgICAvLyByaWdodCBiZWZvcmUgc2VuZGluZyBvdXQgdGhlIG1lc3NhZ2VzOyBv dGhlcndpc2UgYSBwb3RlbnRpYWwKKysgICAgICAgIC8vICJJZGxlIiB0eXBlIG1lc3NhZ2Ugd2ls bCBub3QgY29ycmVjdGx5IHJlc3RvcmUgdGhlIElkbGUgc3RhdGUuCisrICAgICAgICBjb25zdCBh dXRvIG1lc3NhZ2VzID0gc3RkOjptb3ZlKGZvdW5kLnZhbHVlKCkucXVldWVkTWVzc2FnZXMpOwor KyAgICAgICAgUV9BU1NFUlQoZm91bmQudmFsdWUoKS5xdWV1ZWRNZXNzYWdlcy5pc0VtcHR5KCkp OworKyAgICAgICAgZm91bmQudmFsdWUoKS5jbGllbnRJc0lkbGUgPSBmYWxzZTsKKysKKysgICAg ICAgIGZvciAoY29uc3QgYXV0byAmbWVzc2FnZSA6IG1lc3NhZ2VzKSB7CisrICAgICAgICAgICAg dHJhbnNwb3J0LT5zZW5kTWVzc2FnZShtZXNzYWdlKTsKKysgICAgICAgIH0KKysgICAgfQorK30K KysKKyB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpoYW5kbGVNZXNzYWdlKGNvbnN0IFFKc29u T2JqZWN0ICZtZXNzYWdlLCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQp CisgeworICAgICBpZiAoIXdlYkNoYW5uZWwtPmRfZnVuYygpLT50cmFuc3BvcnRzLmNvbnRhaW5z KHRyYW5zcG9ydCkpIHsKK0BAIC04NjYsNyArOTEyLDcgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxp c2hlcjo6aGFuZGxlTWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSwgUVdlYkNoYW5u ZWwKKyAKKyAgICAgY29uc3QgTWVzc2FnZVR5cGUgdHlwZSA9IHRvVHlwZShtZXNzYWdlLnZhbHVl KEtFWV9UWVBFKSk7CisgICAgIGlmICh0eXBlID09IFR5cGVJZGxlKSB7CistICAgICAgICBzZXRD bGllbnRJc0lkbGUodHJ1ZSk7CisrICAgICAgICBzZXRDbGllbnRJc0lkbGUodHJ1ZSwgdHJhbnNw b3J0KTsKKyAgICAgfSBlbHNlIGlmICh0eXBlID09IFR5cGVJbml0KSB7CisgICAgICAgICBpZiAo IW1lc3NhZ2UuY29udGFpbnMoS0VZX0lEKSkgeworICAgICAgICAgICAgIHFXYXJuaW5nKCJKU09O IG1lc3NhZ2Ugb2JqZWN0IGlzIG1pc3NpbmcgdGhlIGlkIHByb3BlcnR5OiAlcyIsCitAQCAtOTEz LDkgKzk1OSw5IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmhhbmRsZU1lc3NhZ2UoY29u c3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVsCisgICAgICAgICAgICAgICAgIHJl dHVybjsKKyAgICAgICAgICAgICB0cmFuc3BvcnQtPnNlbmRNZXNzYWdlKGNyZWF0ZVJlc3BvbnNl KG1lc3NhZ2UudmFsdWUoS0VZX0lEKSwgd3JhcFJlc3VsdChyZXN1bHQsIHRyYW5zcG9ydCkpKTsK KyAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBlQ29ubmVjdFRvU2lnbmFsKSB7CistICAg ICAgICAgICAgc2lnbmFsSGFuZGxlci5jb25uZWN0VG8ob2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtF WV9TSUdOQUwpLnRvSW50KC0xKSk7CisrICAgICAgICAgICAgc2lnbmFsSGFuZGxlckZvcihvYmpl Y3QpLT5jb25uZWN0VG8ob2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9TSUdOQUwpLnRvSW50KC0x KSk7CisgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlwZURpc2Nvbm5lY3RGcm9tU2lnbmFs KSB7CistICAgICAgICAgICAgc2lnbmFsSGFuZGxlci5kaXNjb25uZWN0RnJvbShvYmplY3QsIG1l c3NhZ2UudmFsdWUoS0VZX1NJR05BTCkudG9JbnQoLTEpKTsKKysgICAgICAgICAgICBzaWduYWxI YW5kbGVyRm9yKG9iamVjdCktPmRpc2Nvbm5lY3RGcm9tKG9iamVjdCwgbWVzc2FnZS52YWx1ZShL RVlfU0lHTkFMKS50b0ludCgtMSkpOworICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFR5cGVT ZXRQcm9wZXJ0eSkgeworICAgICAgICAgICAgIHNldFByb3BlcnR5KG9iamVjdCwgbWVzc2FnZS52 YWx1ZShLRVlfUFJPUEVSVFkpLnRvSW50KC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBt ZXNzYWdlLnZhbHVlKEtFWV9WQUxVRSkpOworQEAgLTkzMSw2ICs5NzcsNyBAQCB2b2lkIFFNZXRh T2JqZWN0UHVibGlzaGVyOjpzZXRCbG9ja1VwZGF0ZXMoYm9vbCBibG9jaykKKyAgICAgYmxvY2tV cGRhdGVzID0gYmxvY2s7CisgCisgICAgIGlmICghYmxvY2tVcGRhdGVzKSB7CisrICAgICAgICB0 aW1lci5zdGFydChQUk9QRVJUWV9VUERBVEVfSU5URVJWQUwsIHRoaXMpOworICAgICAgICAgc2Vu ZFBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMoKTsKKyAgICAgfSBlbHNlIGlmICh0aW1lci5pc0FjdGl2 ZSgpKSB7CisgICAgICAgICB0aW1lci5zdG9wKCk7CitAQCAtOTQ4LDQgKzk5NSwxNSBAQCB2b2lk IFFNZXRhT2JqZWN0UHVibGlzaGVyOjp0aW1lckV2ZW50KFFUaW1lckV2ZW50ICpldmVudCkKKyAg ICAgfQorIH0KKyAKKytTaWduYWxIYW5kbGVyPFFNZXRhT2JqZWN0UHVibGlzaGVyPiAqUU1ldGFP YmplY3RQdWJsaXNoZXI6OnNpZ25hbEhhbmRsZXJGb3IoY29uc3QgUU9iamVjdCAqb2JqZWN0KQor K3sKKysgICAgYXV0byB0aHJlYWQgPSBvYmplY3QtPnRocmVhZCgpOworKyAgICBhdXRvIGl0ID0g c2lnbmFsSGFuZGxlcnMuZmluZCh0aHJlYWQpOworKyAgICBpZiAoaXQgPT0gc2lnbmFsSGFuZGxl cnMuZW5kKCkpIHsKKysgICAgICAgIGl0ID0gc2lnbmFsSGFuZGxlcnMuZW1wbGFjZSh0aHJlYWQs IHRoaXMpLmZpcnN0OworKyAgICAgICAgaXQtPnNlY29uZC5tb3ZlVG9UaHJlYWQodGhyZWFkKTsK KysgICAgfQorKyAgICByZXR1cm4gJml0LT5zZWNvbmQ7CisrfQorKworIFFUX0VORF9OQU1FU1BB Q0UKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3Rw dWJsaXNoZXJfcC5oIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVi bGlzaGVyX3AuaAoraW5kZXggYmJkOTg3NS4uNDcxM2VmMSAxMDA2NDQKKy0tLSBhL3F0d2ViY2hh bm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlcl9wLmgKKysrKyBiL3F0d2Vi Y2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlcl9wLmgKK0BAIC01OSw2 ICs1OSw5IEBACisgI2luY2x1ZGUgPFFCYXNpY1RpbWVyPgorICNpbmNsdWRlIDxRUG9pbnRlcj4K KyAjaW5jbHVkZSA8UUpzb25PYmplY3Q+CisrI2luY2x1ZGUgPFFRdWV1ZT4KKysKKysjaW5jbHVk ZSA8dW5vcmRlcmVkX21hcD4KKyAKKyAjaW5jbHVkZSAicXdlYmNoYW5uZWxnbG9iYWwuaCIKKyAK K0BAIC0xMDksMTcgKzExMiwzNiBAQCBwdWJsaWM6CisgICAgICAqLworICAgICB2b2lkIGJyb2Fk Y2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UpIGNvbnN0OworIAorKyAgICAv KioKKysgICAgICogRW5xdWV1ZSB0aGUgZ2l2ZW4gQHAgbWVzc2FnZSB0byBhbGwga25vd24gdHJh bnNwb3J0cy4KKysgICAgICovCisrICAgIHZvaWQgZW5xdWV1ZUJyb2FkY2FzdE1lc3NhZ2UoY29u c3QgUUpzb25PYmplY3QgJm1lc3NhZ2UpOworKworKyAgICAvKioKKysgICAgICogRW5xdWV1ZSB0 aGUgZ2l2ZW4gQHAgbWVzc2FnZSB0byBAcCB0cmFuc3BvcnQuCisrICAgICAqLworKyAgICB2b2lk IGVucXVldWVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLCBRV2ViQ2hhbm5lbEFi c3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworKworKyAgICAvKioKKysgICAgICogSWYgY2xp ZW50IGZvciBnaXZlbiBAcCB0cmFuc3BvcnQgaXMgaWRsZSwgc2VuZCBxdWV1ZWQgbWVzc2FnZWQg dG8gQHAgdHJhbnNwb3J0IGFuZCB0aGVuIG1hcmsKKysgICAgICogdGhlIGNsaWVudCBhcyBub3Qg aWRsZS4KKysgICAgICovCisrICAgIHZvaWQgc2VuZEVucXVldWVkUHJvcGVydHlVcGRhdGVzKFFX ZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisrCisgICAgIC8qKgorICAg ICAgKiBTZXJpYWxpemUgdGhlIFFNZXRhT2JqZWN0IG9mIEBwIG9iamVjdCBhbmQgcmV0dXJuIGl0 IGluIEpTT04gZm9ybS4KKyAgICAgICovCisgICAgIFFKc29uT2JqZWN0IGNsYXNzSW5mb0Zvck9i amVjdChjb25zdCBRT2JqZWN0ICpvYmplY3QsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQg KnRyYW5zcG9ydCk7CisgCisgICAgIC8qKgorLSAgICAgKiBTZXQgdGhlIGNsaWVudCB0byBpZGxl IG9yIGJ1c3ksIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiBAcCBpc0lkbGUuCistICAgICAqCistICAg ICAqIFdoZW4gdGhlIHZhbHVlIGNoYW5nZWQsIHN0YXJ0L3N0b3AgdGhlIHByb3BlcnR5IHVwZGF0 ZSB0aW1lciBhY2NvcmRpbmdseS4KKysgICAgICogU2V0IHRoZSBjbGllbnQgdG8gaWRsZSBvciBi dXN5IGZvciBhIHNpbmdsZSBAcCB0cmFuc3BvcnQsIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiBAcCBp c0lkbGUuCisrICAgICAqLworKyAgICB2b2lkIHNldENsaWVudElzSWRsZShib29sIGlzSWRsZSwg UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKKysKKysgICAgLyoqCisr ICAgICAqIENoZWNrIHRoYXQgY2xpZW50IGlzIGlkbGUgZm9yIEBwIHRyYW5zcG9ydC4KKyAgICAg ICovCistICAgIHZvaWQgc2V0Q2xpZW50SXNJZGxlKGJvb2wgaXNJZGxlKTsKKysgICAgYm9vbCBp c0NsaWVudElkbGUoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKKyAK KyAgICAgLyoqCisgICAgICAqIEluaXRpYWxpemUgY2xpZW50cyBieSBzZW5kaW5nIHRoZW0gdGhl IGNsYXNzIGluZm9ybWF0aW9uIG9mIHRoZSByZWdpc3RlcmVkIG9iamVjdHMuCitAQCAtMjcyLDEw ICsyOTQsMTggQEAgcHJpdmF0ZToKKyAgICAgZnJpZW5kIGNsYXNzIFRlc3RXZWJDaGFubmVsOwor IAorICAgICBRV2ViQ2hhbm5lbCAqd2ViQ2hhbm5lbDsKKy0gICAgU2lnbmFsSGFuZGxlcjxRTWV0 YU9iamVjdFB1Ymxpc2hlcj4gc2lnbmFsSGFuZGxlcjsKKysgICAgc3RkOjp1bm9yZGVyZWRfbWFw PGNvbnN0IFFUaHJlYWQqLCBTaWduYWxIYW5kbGVyPFFNZXRhT2JqZWN0UHVibGlzaGVyPj4gc2ln bmFsSGFuZGxlcnM7CisrICAgIFNpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQdWJsaXNoZXI+ICpz aWduYWxIYW5kbGVyRm9yKGNvbnN0IFFPYmplY3QgKm9iamVjdCk7CisgCistICAgIC8vIHRydWUg d2hlbiB0aGUgY2xpZW50IGlzIGlkbGUsIGZhbHNlIG90aGVyd2lzZQorLSAgICBib29sIGNsaWVu dElzSWRsZTsKKysgICAgc3RydWN0IFRyYW5zcG9ydFN0YXRlCisrICAgIHsKKysgICAgICAgIFRy YW5zcG9ydFN0YXRlKCkgOiBjbGllbnRJc0lkbGUoZmFsc2UpIHsgfQorKyAgICAgICAgLy8gdHJ1 ZSB3aGVuIHRoZSBjbGllbnQgaXMgaWRsZSwgZmFsc2Ugb3RoZXJ3aXNlCisrICAgICAgICBib29s IGNsaWVudElzSWRsZTsKKysgICAgICAgIC8vIG1lc3NhZ2VzIHRvIHNlbmQKKysgICAgICAgIFFR dWV1ZTxRSnNvbk9iamVjdD4gcXVldWVkTWVzc2FnZXM7CisrICAgIH07CisrICAgIFFIYXNoPFFX ZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKiwgVHJhbnNwb3J0U3RhdGU+IHRyYW5zcG9ydFN0 YXRlOworIAorICAgICAvLyB0cnVlIHdoZW4gbm8gcHJvcGVydHkgdXBkYXRlcyBzaG91bGQgYmUg c2VudCwgZmFsc2Ugb3RoZXJ3aXNlCisgICAgIGJvb2wgYmxvY2tVcGRhdGVzOworZGlmZiAtLWdp dCBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9zaWduYWxoYW5kbGVyX3AuaCBiL3F0d2Vi Y2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9zaWduYWxoYW5kbGVyX3AuaAoraW5kZXggMjdhZmFkYi4u ZDc3MzczYyAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9zaWduYWxo YW5kbGVyX3AuaAorKysrIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25hbGhhbmRs ZXJfcC5oCitAQCAtNTYsNiArNTYsNyBAQAorICNpbmNsdWRlIDxRVmVjdG9yPgorICNpbmNsdWRl IDxRTWV0YU1ldGhvZD4KKyAjaW5jbHVkZSA8UURlYnVnPgorKyNpbmNsdWRlIDxRVGhyZWFkPgor IAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorQEAgLTcxLDYgKzcyLDcgQEAgc3RhdGljIGNvbnN0 IGludCBzX2Rlc3Ryb3llZFNpZ25hbEluZGV4ID0gUU9iamVjdDo6c3RhdGljTWV0YU9iamVjdC5p bmRleE9mTWV0aG8KKyB0ZW1wbGF0ZTxjbGFzcyBSZWNlaXZlcj4KKyBjbGFzcyBTaWduYWxIYW5k bGVyIDogcHVibGljIFFPYmplY3QKKyB7CisrICAgIFFfRElTQUJMRV9DT1BZKFNpZ25hbEhhbmRs ZXIpCisgcHVibGljOgorICAgICBTaWduYWxIYW5kbGVyKFJlY2VpdmVyICpyZWNlaXZlciwgUU9i amVjdCAqcGFyZW50ID0gMCk7CisgCitAQCAtMjY4LDYgKzI3MCw3IEBAIGludCBTaWduYWxIYW5k bGVyPFJlY2VpdmVyPjo6cXRfbWV0YWNhbGwoUU1ldGFPYmplY3Q6OkNhbGwgY2FsbCwgaW50IG1l dGhvZElkLCB2CisgICAgIGlmIChjYWxsID09IFFNZXRhT2JqZWN0OjpJbnZva2VNZXRhTWV0aG9k KSB7CisgICAgICAgICBjb25zdCBRT2JqZWN0ICpvYmplY3QgPSBzZW5kZXIoKTsKKyAgICAgICAg IFFfQVNTRVJUKG9iamVjdCk7CisrICAgICAgICBRX0FTU0VSVChRVGhyZWFkOjpjdXJyZW50VGhy ZWFkKCkgPT0gb2JqZWN0LT50aHJlYWQoKSk7CisgICAgICAgICBRX0FTU0VSVChzZW5kZXJTaWdu YWxJbmRleCgpID09IG1ldGhvZElkKTsKKyAgICAgICAgIFFfQVNTRVJUKG1fY29ubmVjdGlvbnND b3VudGVyLmNvbnRhaW5zKG9iamVjdCkpOworICAgICAgICAgUV9BU1NFUlQobV9jb25uZWN0aW9u c0NvdW50ZXIudmFsdWUob2JqZWN0KS5jb250YWlucyhtZXRob2RJZCkpOworZGlmZiAtLWdpdCBh L3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5jcHAgYi9xdHdlYmNo YW5uZWwvdGVzdHMvYXV0by9xbWwvdGVzdHdlYmNoYW5uZWwuY3BwCitpbmRleCA5ODkxNjg3Li4z Y2E4MWMyIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vcW1sL3Rlc3R3ZWJj aGFubmVsLmNwcAorKysrIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vcW1sL3Rlc3R3ZWJjaGFu bmVsLmNwcAorQEAgLTQ2LDcgKzQ2LDExIEBAIFRlc3RXZWJDaGFubmVsOjp+VGVzdFdlYkNoYW5u ZWwoKQorIAorIGJvb2wgVGVzdFdlYkNoYW5uZWw6OmNsaWVudElzSWRsZSgpIGNvbnN0Cisgewor LSAgICByZXR1cm4gUVdlYkNoYW5uZWw6OmRfZnVuYygpLT5wdWJsaXNoZXItPmNsaWVudElzSWRs ZTsKKysgICAgZm9yIChhdXRvICp0cmFuc3BvcnQgOiBRV2ViQ2hhbm5lbDo6ZF9mdW5jKCktPnRy YW5zcG9ydHMpIHsKKysgICAgICAgIGlmIChRV2ViQ2hhbm5lbDo6ZF9mdW5jKCktPnB1Ymxpc2hl ci0+aXNDbGllbnRJZGxlKHRyYW5zcG9ydCkpCisrICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisr ICAgIH0KKysgICAgcmV0dXJuIGZhbHNlOworIH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZm IC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5l bC5jcHAgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVs LmNwcAoraW5kZXggMTgxZGE5ZS4uMzdmOTg5YSAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC90 ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuY3BwCisrKysgYi9xdHdlYmNoYW5u ZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmNwcAorQEAgLTc4NSw3ICs3 ODUsNyBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0VHJhbnNwb3J0V3JhcE9iamVjdFByb3Bl cnRpZXMoKQorICAgICBEdW1teVRyYW5zcG9ydCAqZHVtbXlUcmFuc3BvcnQgPSBuZXcgRHVtbXlU cmFuc3BvcnQodGhpcyk7CisgICAgIGNoYW5uZWwuY29ubmVjdFRvKGR1bW15VHJhbnNwb3J0KTsK KyAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5pbml0aWFsaXplQ2xpZW50KGR1bW15 VHJhbnNwb3J0KTsKKy0gICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5zZXRDbGllbnRJ c0lkbGUodHJ1ZSk7CisrICAgIGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+c2V0Q2xpZW50 SXNJZGxlKHRydWUsIGR1bW15VHJhbnNwb3J0KTsKKyAKKyAgICAgUUNPTVBBUkUoY2hhbm5lbC5k X2Z1bmMoKS0+cHVibGlzaGVyLT50cmFuc3BvcnRlZFdyYXBwZWRPYmplY3RzLnNpemUoKSwgMCk7 CisgCitAQCAtOTQzLDggKzk0Myw2IEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RJbmZpbml0 ZVJlY3Vyc2lvbigpCisgCisgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6dGVzdEFzeW5jT2JqZWN0KCkK KyB7CistICAgIFFTS0lQKCJUaGlzIHRlc3QgaXMgYnJva2VuLiBTZWUgUVRCVUctODA3MjkiKTsK Ky0KKyAgICAgUVdlYkNoYW5uZWwgY2hhbm5lbDsKKyAgICAgY2hhbm5lbC5jb25uZWN0VG8obV9k dW1teVRyYW5zcG9ydCk7CisgCitAQCAtOTkwLDYgKzk4OCw1MCBAQCB2b2lkIFRlc3RXZWJDaGFu bmVsOjp0ZXN0QXN5bmNPYmplY3QoKQorICAgICB0aHJlYWQud2FpdCgpOworIH0KKyAKKyt2b2lk IFRlc3RXZWJDaGFubmVsOjp0ZXN0UHJvcGVydHlNdWx0aXBsZVRyYW5zcG9ydHMoKQorK3sKKysg ICAgRHVtbXlUcmFuc3BvcnQgdHJhbnNwb3J0MTsKKysgICAgRHVtbXlUcmFuc3BvcnQgdHJhbnNw b3J0MjsKKysKKysgICAgUVdlYkNoYW5uZWwgY2hhbm5lbDsKKysgICAgUU1ldGFPYmplY3RQdWJs aXNoZXIgKnB1Ymxpc2hlciA9IGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlcjsKKysKKysgICAg VGVzdE9iamVjdCB0ZXN0T2JqOworKyAgICB0ZXN0T2JqLnNldE9iamVjdE5hbWUoInRlc3RPYmpl Y3QiKTsKKysgICAgY2hhbm5lbC5yZWdpc3Rlck9iamVjdCh0ZXN0T2JqLm9iamVjdE5hbWUoKSwg JnRlc3RPYmopOworKyAgICBjaGFubmVsLmNvbm5lY3RUbygmdHJhbnNwb3J0MSk7CisrICAgIGNo YW5uZWwuY29ubmVjdFRvKCZ0cmFuc3BvcnQyKTsKKysKKysgICAgdGVzdE9iai5zZXRQcm9wKCJI ZWxsbyIpOworKworKyAgICBwdWJsaXNoZXItPmluaXRpYWxpemVDbGllbnQoJnRyYW5zcG9ydDEp OworKyAgICBwdWJsaXNoZXItPmluaXRpYWxpemVDbGllbnQoJnRyYW5zcG9ydDIpOworKyAgICBw dWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0MSk7CisrICAgIFFDT01Q QVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQxKSwgdHJ1ZSk7CisrICAgIFFD T01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQyKSwgZmFsc2UpOworKyAg ICBRVkVSSUZZKHRyYW5zcG9ydDEubWVzc2FnZXNTZW50KCkuaXNFbXB0eSgpKTsKKysgICAgUVZF UklGWSh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLmlzRW1wdHkoKSk7CisrCisrICAgIHRlc3RP Ymouc2V0UHJvcCgiV29ybGQiKTsKKysgICAgUVRSWV9DT01QQVJFX1dJVEhfVElNRU9VVCh0cmFu c3BvcnQxLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMXUsIDIwMDApOworKyAgICBRQ09NUEFSRSh0 cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMHUpOworKyAgICBwdWJsaXNoZXItPnNl dENsaWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0Mik7CisrICAgIFFUUllfQ09NUEFSRV9XSVRI X1RJTUVPVVQodHJhbnNwb3J0Mi5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDF1LCAyMDAwKTsKKysg ICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCBmYWxzZSk7 CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQyKSwgZmFs c2UpOworKworKyAgICB0ZXN0T2JqLnNldFByb3AoIiEhISIpOworKyAgICBwdWJsaXNoZXItPnNl dENsaWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0Mik7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hl ci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQyKSwgdHJ1ZSk7CisrICAgIFFDT01QQVJFKHB1Ymxp c2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQxKSwgZmFsc2UpOworKyAgICBRVFJZX0NPTVBB UkVfV0lUSF9USU1FT1VUKHRyYW5zcG9ydDIubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAydSwgMjAw MCk7CisrICAgIFFDT01QQVJFKHRyYW5zcG9ydDEubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAxdSk7 CisrICAgIHB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQxKTsKKysg ICAgUVRSWV9DT01QQVJFX1dJVEhfVElNRU9VVCh0cmFuc3BvcnQxLm1lc3NhZ2VzU2VudCgpLnNp emUoKSwgMnUsIDIwMDApOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgm dHJhbnNwb3J0MSksIGZhbHNlKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElk bGUoJnRyYW5zcG9ydDIpLCBmYWxzZSk7CisrfQorKworIGNsYXNzIEZ1bmN0aW9uV3JhcHBlciA6 IHB1YmxpYyBRT2JqZWN0CisgeworICAgICBRX09CSkVDVAorQEAgLTEwODIsNyArMTEyNCw3IEBA IHZvaWQgVGVzdFdlYkNoYW5uZWw6OmJlbmNoSW5pdGlhbGl6ZUNsaWVudHMoKQorIAorICAgICAg ICAgcHVibGlzaGVyLT5wcm9wZXJ0eVVwZGF0ZXNJbml0aWFsaXplZCA9IGZhbHNlOworICAgICAg ICAgcHVibGlzaGVyLT5zaWduYWxUb1Byb3BlcnR5TWFwLmNsZWFyKCk7CistICAgICAgICBwdWJs aXNoZXItPnNpZ25hbEhhbmRsZXIuY2xlYXIoKTsKKysgICAgICAgIHB1Ymxpc2hlci0+c2lnbmFs SGFuZGxlcnMuY2xlYXIoKTsKKyAgICAgfQorIH0KKyAKK0BAIC0xMTA3LDcgKzExNDksNyBAQCB2 b2lkIFRlc3RXZWJDaGFubmVsOjpiZW5jaFByb3BlcnR5VXBkYXRlcygpCisgICAgICAgICAgICAg b2JqLT5jaGFuZ2UoKTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGNoYW5uZWwuZF9mdW5jKCkt PnB1Ymxpc2hlci0+Y2xpZW50SXNJZGxlID0gdHJ1ZTsKKysgICAgICAgIGNoYW5uZWwuZF9mdW5j KCktPnB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsIG1fZHVtbXlUcmFuc3BvcnQpOwor ICAgICAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5zZW5kUGVuZGluZ1Byb3BlcnR5 VXBkYXRlcygpOworICAgICB9CisgfQorZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC90ZXN0cy9h dXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaCBiL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRv L3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaAoraW5kZXggZWFlMjFmNC4uZGQ0ZTY5MCAxMDA2 NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5u ZWwuaAorKysrIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hh bm5lbC5oCitAQCAtMzQ4LDYgKzM0OCw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgdGVz dEpzb25Ub1ZhcmlhbnQoKTsKKyAgICAgdm9pZCB0ZXN0SW5maW5pdGVSZWN1cnNpb24oKTsKKyAg ICAgdm9pZCB0ZXN0QXN5bmNPYmplY3QoKTsKKysgICAgdm9pZCB0ZXN0UHJvcGVydHlNdWx0aXBs ZVRyYW5zcG9ydHMoKTsKKyAgICAgdm9pZCB0ZXN0RGVsZXRpb25EdXJpbmdNZXRob2RJbnZvY2F0 aW9uX2RhdGEoKTsKKyAgICAgdm9pZCB0ZXN0RGVsZXRpb25EdXJpbmdNZXRob2RJbnZvY2F0aW9u KCk7CisgCitTdWJtb2R1bGUgcXR3ZWJlbmdpbmUgZjMyODA1NGQuLi4zOGUwZGY2YyAoY29tbWl0 cyBub3QgcHJlc2VudCkKK1N1Ym1vZHVsZSBxdHdlYnNvY2tldHMgNjU4NTA5NTQuLjYzZmI4ZGEx OgorZGlmZiAtLWdpdCBhL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0ZGF0 YXByb2Nlc3Nvci5jcHAgYi9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRh dGFwcm9jZXNzb3IuY3BwCitpbmRleCAyYWZmZGQ1Li45NWYxMTk0IDEwMDY0NAorLS0tIGEvcXR3 ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRkYXRhcHJvY2Vzc29yLmNwcAorKysr IGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRkYXRhcHJvY2Vzc29yLmNw cAorQEAgLTI3Myw2ICsyNzMsNyBAQCB2b2lkIFFXZWJTb2NrZXREYXRhUHJvY2Vzc29yOjpjbGVh cigpCisgICAgIGlmICghbV9wQ29udmVydGVyU3RhdGUpCisgICAgICAgICBtX3BDb252ZXJ0ZXJT dGF0ZSA9IG5ldyBRVGV4dENvZGVjOjpDb252ZXJ0ZXJTdGF0ZShRVGV4dENvZGVjOjpDb252ZXJ0 SW52YWxpZFRvTnVsbCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVGV4dENvZGVjOjpJZ25vcmVIZWFkZXIpOworKyAgICBmcmFt ZS5jbGVhcigpOworIH0KKyAKKyAvKiEKK2RpZmYgLS1naXQgYS9xdHdlYnNvY2tldHMvc3JjL3dl YnNvY2tldHMvcXdlYnNvY2tldHByb3RvY29sLmNwcCBiL3F0d2Vic29ja2V0cy9zcmMvd2Vic29j a2V0cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwCitpbmRleCBkZjg3YTkzLi5kMDQ2NWYxIDEwMDY0 NAorLS0tIGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRwcm90b2NvbC5j cHAKKysrKyBiL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0cHJvdG9jb2wu Y3BwCitAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgUVdlYlNvY2tldFByb3RvY29sOjptYXNrKGNo YXIgKnBheWxvYWQsIHF1aW50NjQgc2l6ZSwgcXVpbnQzMiBtYXNraW5nS2V5KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBxdWludDgoKG1hc2tpbmdLZXkgJiAweDAwMDBGRjAwdSkgPj4g OCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aW50OCgobWFza2luZ0tleSAmIDB4 MDAwMDAwRkZ1KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CistICAgIGludCBpID0g MDsKKysgICAgcXVpbnQ2NCBpID0gMDsKKyAgICAgd2hpbGUgKHNpemUtLSA+IDApCisgICAgICAg ICAqcGF5bG9hZCsrIF49IG1hc2tbaSsrICUgNF07CisgfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9x dDUvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQppbmRleCBiNjYxMmRmZmViMWI5Li5h MGQzMDM2YWY3OWE0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3F0NS90ZW1wbGF0ZQpAQCAtMiwxMSArMiwxMSBAQAogIwogIyByZXZidW1wIGxpYnF0eGRn IGFmdGVyIGJ1bXBpbmcgcGF0Y2ggdmVyc2lvbgogcGtnbmFtZT1xdDUKLXZlcnNpb249NS4xNS43 KzIwMjIxMTE5Cit2ZXJzaW9uPTUuMTUuOAorcmV2aXNpb249MQorYnVpbGRfc3R5bGU9bWV0YQog IyBjb21taXQgZjhjOWZiMzA0YmMzZTUzYjNhYTA3Zjk2MmNkNzRlOTE2MGRlY2NjYwogIyBiYXNl IHJlcG86IGh0dHBzOi8vaW52ZW50LmtkZS5vcmcvcXQvcXQvcXQ1Ci1yZXZpc2lvbj03Ci1idWls ZF9zdHlsZT1tZXRhCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIGNsYW5nIGZsZXggcGVybCBnbGli LWRldmVsIHBrZy1jb25maWcKICBweXRob24zIHJlMmMgcnVieSB3aGljaCIKIG1ha2VkZXBlbmRz PSJTREwyLWRldmVsIFZ1bGthbi1IZWFkZXJzIGFsc2EtbGliLWRldmVsIGRvdWJsZS1jb252ZXJz aW9uLWRldmVsCkBAIC0yOSw5ICsyOSw5IEBAIGhvbWVwYWdlPSJodHRwczovL3F0LmlvLyIKICMg dGFyYmFsbCBpcyBnZW5lcmF0ZWQgd2l0aCBgZ2l0IGFyY2hpdmUtYWxsIHF0NS0kdmVyc2lvbi50 YXIuZ3pgCiAjIHRvIGtlZXAgdGhlIHNpemUgc21hbGxlciBxdHdlYmVuZ2luZSwgcXR3ZWJ2aWV3 LCBxdGRvY2dhbGxlcnksIHF0YWN0aXZlcXQgYW5kIHF0cGltCiAjIGNhbiBiZSBtYXJrZWQgd2l0 aCB0aGUgZXhwb3J0LWlnbm9yZSBhdHRyaWJ1dGUKLWRpc3RmaWxlcz0iaHR0cHM6Ly92b2lkLmpv aG5ueW5hdG9yLmRldi9kaXN0ZmlsZXMvcXQ1LSR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09 OWQ1N2FmNDcxYzc4MDI5YTM2MjI3NmI3Yzk5MTA4ZWEwMDlmNTExYmI5YmE2ZmY2Y2I4ODRmNmRk ZDI1NWU5ZgotcHl0aG9uX3ZlcnNpb249MworZGlzdGZpbGVzPSJodHRwczovL2Rvd25sb2FkLnF0 LmlvL2FyY2hpdmUvcXQvNS4xNS8ke3ZlcnNpb259L3NpbmdsZS9xdC1ldmVyeXdoZXJlLW9wZW5z b3VyY2Utc3JjLSR7dmVyc2lvbn0udGFyLnh6IgorY2hlY2tzdW09Nzc2YTkzMDJjMzM2NjcxZjk0 MDZhNTNiZDMwYjhlMzZmODI1NzQyYjJlYzQ0YTU3YzA4MjE3YmZmMGZhODZiOQorcHl0aG9uX3Zl cnNpb249MiAjdW52ZXJpZmllZAogcmVwbGFjZXM9InF0NS1kb2M8NS42LjAgcXQ1LXF1aWNrMTw1 LjYuMCBxdDUtcXVpY2sxLWRldmVsPDUuNi4wIHF0NS13ZWJraXQ8NS42LjAgcXQ1LXdlYmtpdC1k ZXZlbDw1LjYuMAogIHF0NS1lbmdpbmlvPDUuNy4xIHF0NS1lbmdpbmlvLWRldmVsPDUuNy4xIHF0 NS1wbHVnaW4tZ3RrPDUuNy4xIHF0NS1jYW52YXMzZDw1LjEzLjAiCiBsaWIzMm1vZGU9ZnVsbApA QCAtMjQ2LDcgKzI0Niw2IEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkjIG9wdHMrPSIgLXYiCiAJb3B0 cys9IiAtc2tpcCBxdHdlYmVuZ2luZSIKIAlvcHRzKz0iIC1za2lwIHF0d2VidmlldyIKLQlvcHRz Kz0iIC1za2lwIHF0ZG9jZ2FsbGVyeSIKIAlvcHRzKz0iIC1za2lwIHF0cGltIgogCW9wdHMrPSIg LXNraXAgcXRzeXN0ZW1zIgogCW9wdHMrPSIgLXNraXAgcXRzcGVlY2giCgpGcm9tIDJhNmQ2YmZh ZjBhNGZjMmEyMjYzOWJmOWE4ZGZhZDc4ZGRlNDhhYTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2OC8xMTVdIHF0YXY6IHJldmJ1bXAgZm9y IGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9xdGF2L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZp bGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvcXRhdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXRhdi90ZW1wbGF0ZQppbmRleCAzNGMz MGIyYzBjNzhmLi4yZDAwYWQxMDQzNTVlIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0YXYvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9xdGF2L3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdxdGF2JwogcGtnbmFtZT1xdGF2CiB2ZXJzaW9uPTEuMTMuMAotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icXQ1 LXFtYWtlIHF0NS1ob3N0LXRvb2xzIgotbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBsaWJhc3Mt ZGV2ZWwgbGlib3BlbmFsLWRldmVsCittYWtlZGVwZW5kcz0iZmZtcGVnNC1kZXZlbCBsaWJhc3Mt ZGV2ZWwgbGlib3BlbmFsLWRldmVsCiAgbGlidmEtZ2x4LWRldmVsIGxpYlh2LWRldmVsIHB1bHNl YXVkaW8tZGV2ZWwKICBxdDUtZGVjbGFyYXRpdmUtZGV2ZWwgcXQ1LXN2Zy1kZXZlbAogIHF0NS1x dWlja2NvbnRyb2xzIgoKRnJvbSA1NGQzMmM2MjU1YTE1ZjU0MDQyYjNkNjRiM2U5MmJjYzVjY2M3 MDVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwNjkvMTE1XSBxdG94OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcXRv eC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXRveC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXRv eC90ZW1wbGF0ZQppbmRleCAzOWM2NDNmZWNkYjVhLi5iYjcwZTdmNTEyNDBhIDEwMDY0NAotLS0g YS9zcmNwa2dzL3F0b3gvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdG94L3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXRveCcKIHBrZ25hbWU9cXRveAogdmVy c2lvbj0xLjE3LjYKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBj b25maWd1cmVfYXJncz0iLURVUERBVEVfQ0hFQ0s9T0ZGCiAgLURHSVRfREVTQ1JJQkU9JHt2ZXJz aW9ufQoKRnJvbSAyYWZiZTc5Mjc4OGEzMjZjOTYzODQ5MmIxYjljMzc0Y2VmNjBmM2NmIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzAvMTE1 XSByZXRyb2FyY2g6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9yZXRyb2Fy Y2gvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZSBiL3NyY3Br Z3MvcmV0cm9hcmNoL3RlbXBsYXRlCmluZGV4IDQ1YjAyNTk3ZGU0MWEuLjUwNzgwNWVhOGQ4MTkg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmV0cm9hcmNoL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcmV0 cm9hcmNoL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncmV0 cm9hcmNoJwogcGtnbmFtZT1yZXRyb2FyY2gKIHZlcnNpb249MS4xNS4wCi1yZXZpc2lvbj00City ZXZpc2lvbj01CiBidWlsZF9zdHlsZT1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLXByZWZp eD0vdXNyIC0tc3lzY29uZmRpcj0vZXRjIC0tZW5hYmxlLW5ldHdvcmtpbmcKICAtLWVuYWJsZS11 ZGV2IC0tZGlzYWJsZS1idWlsdGluZmxhYyAtLWRpc2FibGUtYnVpbHRpbmdsc2xhbmcKCkZyb20g Y2RkNzhkYjYzMmQ1ZGNjZjBlODczM2RjMmU3MjlmYTZkY2MyNzFlMCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDcxLzExNV0gc2NyY3B5OiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUgYi9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZQpp bmRleCBhYzE4YmMwMzQxOGNlLi5mMzlhN2Y2NzhhYjM1IDEwMDY0NAotLS0gYS9zcmNwa2dzL3Nj cmNweS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NjcmNweScKIHBrZ25hbWU9c2NyY3B5CiB2ZXJzaW9u PTIuMS4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmln dXJlX2FyZ3M9Ii1EY29tcGlsZV9zZXJ2ZXI9ZmFsc2UKICAtRHByZWJ1aWx0X3NlcnZlcj0vdXNy L3NoYXJlL3NjcmNweS9zY3JjcHktc2VydmVyLXYke3ZlcnNpb259IgoKRnJvbSBlNDE0M2VmZmEx YTYyZjkyMDI3YmZhODY5NjMzZWVhOTkzMzM3ODhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDE3IE9jdCAyMDIzIDA4 OjU0OjExIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzIvMTE1XSBOZXcgcGFja2FnZTogc3BleC14 IHJlcGxhY2VzIHNwZWstYWx0ZXJuYXRpdmUgZm9yCiBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv c3Blay1hbHRlcm5hdGl2ZSAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIHNyY3BrZ3Mve3Nw ZWstYWx0ZXJuYXRpdmUgPT4gc3Blay14fS90ZW1wbGF0ZSB8IDIyICsrKysrKysrKysrKy0tLS0t LS0KIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUKIHJlbmFtZSBzcmNwa2dz L3tzcGVrLWFsdGVybmF0aXZlID0+IHNwZWsteH0vdGVtcGxhdGUgKDUyJSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUgYi9zcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUKbmV3 IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uNzY2NDgyMzZkYTcwMQotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZQpAQCAtMCwwICsxIEBACitz cGVrLXgKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Nw ZWstYWx0ZXJuYXRpdmUvdGVtcGxhdGUgYi9zcmNwa2dzL3NwZWsteC90ZW1wbGF0ZQpzaW1pbGFy aXR5IGluZGV4IDUyJQpyZW5hbWUgZnJvbSBzcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUvdGVtcGxh dGUKcmVuYW1lIHRvIHNyY3BrZ3Mvc3Blay14L3RlbXBsYXRlCmluZGV4IGQ3YjU1Yzc3NmIxZDQu LjNkZWQ2YzJjMzIzZTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL3NwZWsteC90ZW1wbGF0ZQpAQCAtMSwxOCArMSwxOCBAQAotIyBU ZW1wbGF0ZSBmaWxlIGZvciAnc3Blay1hbHRlcm5hdGl2ZScKLXBrZ25hbWU9c3Blay1hbHRlcm5h dGl2ZQotdmVyc2lvbj0wLjguMi4zCi1yZXZpc2lvbj0yCisjIFRlbXBsYXRlIGZpbGUgZm9yICdz cGVrLXgnCitwa2duYW1lPXNwZWsteAordmVyc2lvbj0wLjkuMworcmV2aXNpb249MQogYnVpbGRf c3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBnZXR0ZXh0LWRl dmVsIGludGx0b29sIGxpYnRvb2wgcGtnLWNvbmZpZwogIHd4V2lkZ2V0cy1jb21tb24gd3hXaWRn ZXRzLWd0azMtZGV2ZWwiCiBtYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHd4V2lkZ2V0cy1ndGsz LWRldmVsIgogZGVwZW5kcz0iZmZtcGVnIgogc2hvcnRfZGVzYz0iQWNvdXN0aWMgc3BlY3RydW0g YW5hbHlzZXIiCi1tYWludGFpbmVyPSJLYXJ0aWsgU2luZ2ggPGthcnRpay55bndhQGdtYWlsLmNv bT4iCittYWludGFpbmVyPSJ6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPiIKIGxpY2Vuc2U9IkdQ TC0zLjAtb3ItbGF0ZXIiCi1ob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL3dpdGhtb3J0ZW4v c3Blay1hbHRlcm5hdGl2ZSIKLWRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL3dpdGhtb3J0 ZW4vc3Blay1hbHRlcm5hdGl2ZS9hcmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09 IjAwN2JhNGI4NGEzMTBiMDc4ZTM3OGFhODRjOGU4MDc4M2RiNTgyMTQzN2E3NTdhNDg4YzNlY2Vj Mzc3ZTZiMmEiCitob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL01pa2VXYW5nMDAwMDAwL3Nw ZWsteCIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL01pa2VXYW5nMDAwMDAwL3NwZWst eC9hcmNoaXZlL3Yke3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPSI3ZjRiMTA5OTAzMzMzY2Rk MzEwYWIyYjkxNzZmMGRjNDlhNTY1ODkxMzc2ZTI4MWEyMzNkMzQyY2VkZjkwZWY3IgogCiBDWFhG TEFHUz0iLURfTEFSR0VGSUxFX1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IgogCkBAIC0y MiwzICsyMiw5IEBAIGV4cG9ydCBXWF9DT05GSUdfTkFNRT0id3gtY29uZmlnLWd0azMiCiBwcmVf Y29uZmlndXJlKCkgewogCU5PQ09ORklHVVJFPTEgLi9hdXRvZ2VuLnNoCiB9CisKK3NwZWstYWx0 ZXJuYXRpdmVfcGFja2FnZSgpIHsKKwlkZXBlbmRzPSJzcGVrLXgiCisJc2hvcnRfZGVzYys9IiAt IHRyYW5zaXRpb25hbCBkdW1teSBwYWNrYWdlIgorCWJ1aWxkX3N0eWxlPW1ldGEKK30KCkZyb20g ZjJjOGJiZmUyMTg0ODMyOWE1YWMzZGFmZDVhOTZjNWZjNGI2ZGQ4MyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDczLzExNV0gc3NyOiByZXZi dW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvc3NyL3RlbXBsYXRlIHwgNCArKy0t CiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3Mvc3NyL3RlbXBsYXRlIGIvc3JjcGtncy9zc3IvdGVtcGxhdGUKaW5kZXgg YjA1NWI5ZWMwNzc0YS4uMzQ0OGNhMTEwZWIwYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9zc3IvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9zc3IvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTEgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3NzcicKIHBrZ25hbWU9c3NyCiB2ZXJzaW9uPTAuNC40Ci1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lU SF9RVDU9T04iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iYWxz YS1saWItZGV2ZWwgZmZtcGVnLWRldmVsIGdsdS1kZXZlbCBqYWNrLWRldmVsIHB1bHNlYXVkaW8t ZGV2ZWwKK21ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWc0LWRldmVsIGdsdS1kZXZl bCBqYWNrLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKICBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXgxMWV4 dHJhcy1kZXZlbCBsaWJYaW5lcmFtYS1kZXZlbCB2NGwtdXRpbHMtZGV2ZWwiCiBkZXBlbmRzPSJk ZXNrdG9wLWZpbGUtdXRpbHMgaGljb2xvci1pY29uLXRoZW1lIgogc2hvcnRfZGVzYz0iU2ltcGxl IFNjcmVlbiBSZWNvcmRlciBmb3IgcHJvZ3JhbXMgYW5kIGdhbWVzIgoKRnJvbSBlOTUyZjU1NTcz YjJiODc1YTBjNmUxZDE5ZWMyMjYwYTI2MmUzZDlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzQvMTE1XSBzeW5maWc6IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAgYW5kIG1sdDcKCi0tLQogc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2 LnBhdGNoIHwgNzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9zeW5maWcv dGVtcGxhdGUgICAgICAgICAgICAgIHwgIDYgKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDc0IGluc2Vy dGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9zeW5m aWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zeW5maWcvcGF0 Y2hlcy9mZm1wZWc2LnBhdGNoIGIvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjEwNzgwYjQyNzgyZjQK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3N5bmZpZy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gK QEAgLTAsMCArMSw3MSBAQAorLS0tIGEvc3JjL21vZHVsZXMvbW9kX2xpYmF2Y29kZWMvdHJndF9h di5jcHAJMjAyMi0xMC0yNSAwOToxNDoxMi4wMDAwMDAwMDAgLTA0MDAKKysrKyBiL3NyYy9tb2R1 bGVzL21vZF9saWJhdmNvZGVjL3RyZ3RfYXYuY3BwCTIwMjMtMDUtMDUgMjE6MzQ6MTcuODk5MTk0 NTU5IC0wNDAwCitAQCAtMzgsNiArNDEsNyBAQAorIGV4dGVybiAiQyIKKyB7CisgI2lmZGVmIEhB VkVfTElCQVZGT1JNQVRfQVZGT1JNQVRfSAorKyMJaW5jbHVkZSA8bGliYXZjb2RlYy9hdmNvZGVj Lmg+CisgIwlpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmZvcm1hdC5oPgorICNlbGlmIGRlZmluZWQo SEFWRV9BVkZPUk1BVF9IKQorICMJaW5jbHVkZSA8YXZmb3JtYXQuaD4KK0BAIC0xNTUsMTEgKzE1 NiwxMSBAQAorICAgICB9CisgCisgCWJvb2wgb3Blbl92aWRlb19zdHJlYW0oKSB7CistCQlpZiAo YXZjb2RlY19vcGVuMih2aWRlb19jb250ZXh0LCBOVUxMLCBOVUxMKSA8IDApIHsKKysJCWlmIChh dmNvZGVjX29wZW4yKHZpZGVvX2NvbnRleHQsIG51bGxwdHIsIG51bGxwdHIpIDwgMCkgeworIAkJ CXN5bmZpZzo6ZXJyb3IoIlRhcmdldF9MaWJBVkNvZGVjOiBjb3VsZCBub3Qgb3BlbiB2aWRlbyBj b2RlYyIpOworIAkJCS8vIHNlZW1zIHRoZSBjYWxsaW5nIG9mIGF2Y29kZWNfZnJlZV9jb250ZXh0 IGFmdGVyIGVycm9yIHdpbGwgY2F1c2UgY3Jhc2gKKyAJCQkvLyBzbyBqdXN0IGZvcmdldCBhYm91 dCB0aGlzIGNvbnRleHQKKy0JCQl2aWRlb19jb250ZXh0ID0gTlVMTDsKKysJCQl2aWRlb19jb250 ZXh0ID0gbnVsbHB0cjsKKyAJCQljbG9zZSgpOworIAkJCXJldHVybiBmYWxzZTsKKyAgICAgICAg IH0KK0BAIC0yMzQsMTUgKzIzNSwyMSBAQAorIAkJY2xvc2UoKTsKKyAKKyAJCWlmICghYXZfcmVn aXN0ZXJlZCkgeworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1OCAvLyBGRk1QRUcg PCA0LjAKKyAJCQlhdl9yZWdpc3Rlcl9hbGwoKTsKKysjZW5kaWYKKyAJCQlhdl9yZWdpc3RlcmVk ID0gdHJ1ZTsKKyAJCX0KKyAKKyAJCS8vIGd1ZXNzIGZvcm1hdAorLQkJQVZPdXRwdXRGb3JtYXQg KmZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdChOVUxMLCBmaWxlbmFtZS5jX3N0cigpLCBOVUxMKTsK KysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTkgLy8gRkZNUEVHIDwgNS4wCisrCQlB Vk91dHB1dEZvcm1hdCogZm9ybWF0ID0gYXZfZ3Vlc3NfZm9ybWF0KG51bGxwdHIsIGZpbGVuYW1l LmNfc3RyKCksIG51bGxwdHIpOworKyNlbHNlCisrCQljb25zdCBBVk91dHB1dEZvcm1hdCogZm9y bWF0ID0gYXZfZ3Vlc3NfZm9ybWF0KG51bGxwdHIsIGZpbGVuYW1lLmNfc3RyKCksIG51bGxwdHIp OworKyNlbmRpZgorIAkJaWYgKCFmb3JtYXQpIHsKKyAJCQlzeW5maWc6Ondhcm5pbmcoIlRhcmdl dF9MaWJBVkNvZGVjOiB1bmFibGUgdG8gZ3Vlc3MgdGhlIG91dHB1dCBmb3JtYXQsIGRlZmF1bHRp bmcgdG8gTVBFRyIpOworLQkJCWZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdCgibXBlZyIsIE5VTEws IE5VTEwpOworKwkJCWZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdCgibXBlZyIsIG51bGxwdHIsIG51 bGxwdHIpOworIAkJfQorIAkJaWYgKCFmb3JtYXQpIHsKKyAJCQlzeW5maWc6OmVycm9yKCJUYXJn ZXRfTGliQVZDb2RlYzogdW5hYmxlIHRvIGZpbmQgJ21wZWcnIG91dHB1dCBmb3JtYXQiKTsKK0BA IC0yNTQsNiArMjYxLDcgQEAKKyAJCWNvbnRleHQgPSBhdmZvcm1hdF9hbGxvY19jb250ZXh0KCk7 CisgCQlhc3NlcnQoY29udGV4dCk7CisgCQljb250ZXh0LT5vZm9ybWF0ID0gZm9ybWF0OworKyNp ZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1OCAvLyBGRk1QRUcgPCA0LjAKKyAJCWlmIChm aWxlbmFtZS5zaXplKCkgKyAxID4gc2l6ZW9mKGNvbnRleHQtPmZpbGVuYW1lKSkgeworIAkJCXN5 bmZpZzo6ZXJyb3IoCisgCQkJCSJUYXJnZXRfTGliQVZDb2RlYzogZmlsZW5hbWUgdG9vIGxvbmcs IG1heCBsZW5ndGggaXMgJWQsIGZpbGVuYW1lIGlzICclcyciLAorQEAgLTI2Myw2ICsyNzEsMTQg QEAKKyAJCQlyZXR1cm4gZmFsc2U7CisgCQl9CisgCQltZW1jcHkoY29udGV4dC0+ZmlsZW5hbWUs IGZpbGVuYW1lLmNfc3RyKCksIGZpbGVuYW1lLnNpemUoKSArIDEpOworKyNlbHNlCisrCQljb250 ZXh0LT51cmwgPSBhdl9zdHJuZHVwKGZpbGVuYW1lLmNfc3RyKCksIGZpbGVuYW1lLnNpemUoKSk7 CisrCQlpZiAoIWNvbnRleHQtPnVybCkgeworKwkJCXN5bmZpZzo6ZXJyb3IoIlRhcmdldF9MaWJB VkNvZGVjOiBjYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIGZpbGVuYW1lIik7CisrCQkJY2xvc2Uo KTsKKysJCQlyZXR1cm4gZmFsc2U7CisrCQl9CisrI2VuZGlmCisgCisgCQlwYWNrZXQgPSBhdl9w YWNrZXRfYWxsb2MoKTsKKyAJCWFzc2VydChwYWNrZXQpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9z eW5maWcvdGVtcGxhdGUgYi9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQppbmRleCAzMDEwOTU0MWVj NGZjLi43MDNjZmQ3ZWJhYzg0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQpAQCAtMiwxMSArMiwxMSBAQAogIyBTaG91bGQg YmUga2VwdCBpbiBzeW5jIHdpdGggJ3N5bmZpZ3N0dWRpbycgYW5kICdFVEwnCiBwa2duYW1lPXN5 bmZpZwogdmVyc2lvbj0xLjQuNAotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9 Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0td2l0aC1ib29zdC1saWJkaXI9JHtYQlBT X0NST1NTX0JBU0V9L3Vzci9saWIiCiBob3N0bWFrZWRlcGVuZHM9ImJvb3N0LWJ1aWxkIEltYWdl TWFnaWNrIHBrZy1jb25maWcgaW50bHRvb2wiCi1tYWtlZGVwZW5kcz0iRVRMIGdldHRleHQtZGV2 ZWwgbGlieG1sKystZGV2ZWwgbWx0LWRldmVsIGxpYm1hZ2ljay1kZXZlbAorbWFrZWRlcGVuZHM9 IkVUTCBnZXR0ZXh0LWRldmVsIGxpYnhtbCsrLWRldmVsIG1sdDctZGV2ZWwgbGlibWFnaWNrLWRl dmVsCiAgbGlibW5nLWRldmVsIGJvb3N0LWJ1aWxkIGJvb3N0LWRldmVsIGxpYm9wZW5leHItZGV2 ZWwgZmZtcGVnLWRldmVsIgogZGVwZW5kcz0iSW1hZ2VNYWdpY2siCiBzaG9ydF9kZXNjPSJDTEkg MkQgdmVjdG9yIGFuZCB0aW1lbGluZS1iYXNlZCBhbmltYXRpb24gc29mdHdhcmUiCkBAIC0yMCw3 ICsyMCw3IEBAIENYWEZMQUdTPSItc3RkPWMrKzExIC1ESEFWRV9MT0NBTEVfSD0xIgogCiBzeW5m aWctZGV2ZWxfcGFja2FnZSgpIHsKIAlkZXBlbmRzPSIke3NvdXJjZXBrZ30+PSR7dmVyc2lvbn1f JHtyZXZpc2lvbn0KLQkgbGlib3BlbmV4ci1kZXZlbCBsaWJ4bWwrKy1kZXZlbCBtbHQtZGV2ZWwi CisJIGxpYm9wZW5leHItZGV2ZWwgbGlieG1sKystZGV2ZWwgbWx0Ny1kZXZlbCIKIAlzaG9ydF9k ZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZtb3ZlIHVz ci9iaW4vc3luZmlnLWNvbmZpZwoKRnJvbSAzYTZjN2VmZjZkN2E4Y2E2MTMwYzQxMTEwMmM0ZTgw OGJiN2I4YWFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwNzUvMTE1XSB0aW1nOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3MvdGltZy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZSBiL3NyY3Br Z3MvdGltZy90ZW1wbGF0ZQppbmRleCAyYTJhYjc2M2QyZmRkLi44ZmI0MzI3NTM1ZWY5IDEwMDY0 NAotLS0gYS9zcmNwa2dzL3RpbWcvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90aW1nL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndGltZycKIHBrZ25hbWU9dGlt ZwogdmVyc2lvbj0xLjQuNQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21h a2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfT1BFTlNMSURFX1NVUFBPUlQ9b2ZmIC1Xbm8tZGV2 IgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGdpdCIKCkZyb20gZWFmMjlmYjJkNzdlMDBh ZDY1ZGQxZjc4OTAxOGFmZjY1YzUxNDk2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1 MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDc2LzExNV0gdHZoZWFkZW5kOiByZXZidW1wIGZvciBm Zm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvdHZoZWFkZW5kL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUgYi9zcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQpp bmRleCA5YWVhN2RlNGVjNzA1Li4wMTJkMzFjNDg3OWZmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3R2 aGVhZGVuZC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQpAQCAtOCw3 ICs4LDcgQEAgY29uZmlndXJlX2FyZ3M9Ii0tZW5hYmxlLWR2YnNjYW4gLS1kaXNhYmxlLWZmbXBl Z19zdGF0aWMKIC0tZGlzYWJsZS1saWJ4MjY1X3N0YXRpYyAtLWRpc2FibGUtbGlidnB4X3N0YXRp YyAtLWRpc2FibGUtbGlidGhlb3JhX3N0YXRpYwogLS1kaXNhYmxlLWxpYnZvcmJpc19zdGF0aWMg LS1kaXNhYmxlLWxpYmZka2FhY19zdGF0aWMiCiBob3N0bWFrZWRlcGVuZHM9ImdldHRleHQgcGtn LWNvbmZpZyBweXRob24zIGdpdCB3aGljaCIKLW1ha2VkZXBlbmRzPSJhdmFoaS1saWJzLWRldmVs IG9wZW5zc2wtZGV2ZWwgemxpYi1kZXZlbCBsaWJjdXJsLWRldmVsIGZmbXBlZy1kZXZlbCIKK21h a2VkZXBlbmRzPSJhdmFoaS1saWJzLWRldmVsIG9wZW5zc2wtZGV2ZWwgemxpYi1kZXZlbCBsaWJj dXJsLWRldmVsIGZmbXBlZzQtZGV2ZWwiCiBzaG9ydF9kZXNjPSJUViBzdHJlYW1pbmcgc2VydmVy IgogbWFpbnRhaW5lcj0ibGVtbWkgPGxlbW1pQG5lcmQybmVyZC5vcmc+IgogbGljZW5zZT0iR1BM LTMuMC1vbmx5IgoKRnJvbSBlNTAwNDc1OGQ3ZmIxNDc0YzAzNDkyOGQwMWFhZWZhYmFhYjEzNGQw IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw NzcvMTE1XSB1bnBhcGVyOiB1cGRhdGUgdG8gNy4wLjAuCgotLS0KIHNyY3BrZ3MvdW5wYXBlci90 ZW1wbGF0ZSB8IDE2ICsrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlv bnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnBhcGVyL3RlbXBs YXRlIGIvc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlCmluZGV4IDM4ZWQ0N2E1ODQwMTYuLjFmZjkx MGU3MjJhZmMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdW5wYXBlci90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3VucGFwZXIvdGVtcGxhdGUKQEAgLTEsMTMgKzEsMTMgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ3VucGFwZXInCiBwa2duYW1lPXVucGFwZXIKLXZlcnNpb249Ni4xCi1yZXZpc2lvbj0zCi1i dWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCit2ZXJzaW9uPTcuMC4wCityZXZpc2lvbj0xCitidWls ZF9zdHlsZT1tZXNvbgoraG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIG1lc29uIGxpYnhzbHQi CittYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHB5dGhvbjMtU3BoaW54Igorc2hvcnRfZGVzYz0i UG9zdC1wcm9jZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogbWFpbnRh aW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKLWhvc3RtYWtlZGVwZW5kcz0i cGtnLWNvbmZpZyBsaWJ4c2x0IgotbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCIKLWxpY2Vuc2U9 IkdQTC0yIgorbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3d3 dy5mbGFtZWV5ZXMuZXUvcHJvamVjdHMvdW5wYXBlciIKLXNob3J0X2Rlc2M9IkEgcG9zdC1wcm9j ZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogZGlzdGZpbGVzPSJodHRw czovL3d3dy5mbGFtZWV5ZXMuZXUvZmlsZXMvJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci54eiIK LWNoZWNrc3VtPTIzN2M4NGY1ZGE1NDRiM2Y3NzA5ODI3ZjlmMTJjMzdjMzQ2Y2RmMDI5YjExMjhm YjQ2MzNmOWJhZmE1Y2I5MzAKK2NoZWNrc3VtPTI1NzVmYmJmMjZjMjI3MTlkMWNiODgyYjU5NjAy Yzk5MDBjN2Y3NDcxMThhYzEzMDg4M2Y2MzQxOWJlNDZhODAKCkZyb20gNjA1YTE2N2VjMTUzMWIw M2ZhZGY3Nzk4NzBkOWM4ZWUxZjY1NWRkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1 MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDc4LzExNV0gdmJhLW06IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy92YmEtbS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmJh LW0vdGVtcGxhdGUgYi9zcmNwa2dzL3ZiYS1tL3RlbXBsYXRlCmluZGV4IDljNzFjZWZlM2Y4ZGQu LjIyMjNkMjk3YzMxZjUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdmJhLW0vdGVtcGxhdGUKKysrIGIv c3JjcGtncy92YmEtbS90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9dmJhLW0KIHJl dmVydHM9MTI5Ml8yCiB2ZXJzaW9uPTIuMS43Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWls ZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1ERU5BQkxFX0dUSz1UUlVFIC1ERU5BQkxF X0ZGTVBFRz1UUlVFIC1ERU5BQkxFX0xJTks9VFJVRSAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFz ZSIKIGhvc3RtYWtlZGVwZW5kcz0iZ2V0dGV4dCBwa2ctY29uZmlnIHVuemlwIHppcCB5YXNtIHd4 V2lkZ2V0cy1ndGszLWRldmVsIgoKRnJvbSBhMDE4OGU1ZDY5MTkxYThlOTE3N2EyZDUyNGRhOTJm Nzc3Mzg0MzIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwNzkvMTE1XSB2aWNlOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNy Y3BrZ3MvdmljZS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZpY2UvdGVtcGxhdGUg Yi9zcmNwa2dzL3ZpY2UvdGVtcGxhdGUKaW5kZXggZmU5ZDMzYTgxMTk0Ny4uNGJlYWIyYzVmOWVi ZCAxMDA2NDQKLS0tIGEvc3JjcGtncy92aWNlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdmljZS90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3ZpY2UnCiBwa2du YW1lPXZpY2UKIHZlcnNpb249My43LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0 eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIKIAkkKHZvcHRfZW5hYmxlIHNkbDIg c2RsdWkyKQpAQCAtMjYsNyArMjYsNyBAQCBtYWtlZGVwZW5kcz0iCiAJJCh2b3B0X2lmIGd0azMg Z3RrKzMtZGV2ZWwpCiAJJCh2b3B0X2lmIGd0azMgcHVsc2VhdWRpby1kZXZlbCkKIAkkKHZvcHRf aWYgZ3RrMyBwYW5nby1kZXZlbCkKLQkkKHZvcHRfaWYgZmZtcGVnIGZmbXBlZy1kZXZlbCkiCisJ JCh2b3B0X2lmIGZmbXBlZyBmZm1wZWc0LWRldmVsKSIKIHNob3J0X2Rlc2M9IkVtdWxhdG9yIGZv ciBDNjQsIEMxMjgsIENCTS1JSSwgUEVULCBWSUMyMCwgUGx1czQgYW5kIEMxNiIKIG1haW50YWlu ZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9y LWxhdGVyIgoKRnJvbSA2NjM2ODIxYjYwM2U2Mzg0YTI4MzJjZGYzMzc4MTc0ZDM1NzAyM2RjIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODAv MTE1XSB3YXlwaXBlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvd2F5cGlw ZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mv d2F5cGlwZS90ZW1wbGF0ZQppbmRleCA2ZGE4OGIyMWJmMmExLi40ZGE4MDU4NDAwYjU4IDEwMDY0 NAotLS0gYS9zcmNwa2dzL3dheXBpcGUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy93YXlwaXBlL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnd2F5cGlwZScKIHBr Z25hbWU9d2F5cGlwZQogdmVyc2lvbj0wLjguNgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9bWVzb24KICMgbHRvIGlzIG9mZiBiZWNhdXNlIGl0IGNhdXNlcyBsaW5raW5nIGVy cm9ycyBpbiBhcm12NmwgYW5kIGFybXY3bCAoZHVlIHRvIE5FT04pCiBjb25maWd1cmVfYXJncz0i LUR3ZXJyb3I9ZmFsc2UgLUR3aXRoX2RtYWJ1Zj1lbmFibGVkIC1Ed2l0aF9sejQ9ZW5hYmxlZAoK RnJvbSBiMTc4OGZmZGUzZDU0NjgxNTBiZjBiMjMwNTNmNGY1NjBmNzRiYTdmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODEvMTE1XSB3Zi1y ZWNvcmRlcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3dmLXJlY29yZGVy L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0ZSBiL3NyY3Br Z3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUKaW5kZXggY2RmOGQyNmRjYjhlMS4uMDhmOTg2YjAzMTAw NiAxMDA2NDQKLS0tIGEvc3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3dmLXJlY29yZGVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnd2YtcmVjb3JkZXInCiBwa2duYW1lPXdmLXJlY29yZGVyCiB2ZXJzaW9uPTAuNC4xCi1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIHNjZG9jIHdheWxhbmQtZGV2ZWwiCiBtYWtlZGVwZW5kcz0id2F5bGFuZC1wcm90 b2NvbHMgd2F5bGFuZC1kZXZlbCBmZm1wZWctZGV2ZWwgbGliZ2JtLWRldmVsIHgyNjQtZGV2ZWwK CkZyb20gZTQxODA5ODkxZjNkZjUyMjY1MDgzODgxZDBjMmVjMzViNGVhMTQ3MCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDgyLzExNV0geHBy YTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3hwcmEvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3hwcmEvdGVtcGxhdGUgYi9zcmNwa2dzL3hwcmEvdGVtcGxhdGUKaW5k ZXggMzk0NzE4YjU2ZjY4Ni4uMzRmYmZmOWIyZjFhZSAxMDA2NDQKLS0tIGEvc3JjcGtncy94cHJh L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MveHByYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ3hwcmEnCiBwa2duYW1lPXhwcmEKIHZlcnNpb249NS4wLjMKLXJl dmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXB5dGhvbjMtbW9kdWxlCiBtYWtlX2J1 aWxkX2FyZ3M9Ii0td2l0aG91dC1jdWRhX2tlcm5lbHMgLS13aXRob3V0LWN1ZGFfcmVidWlsZCIK IG1ha2VfaW5zdGFsbF9hcmdzPSIkKHZvcHRfd2l0aCBkb2NzKSAke21ha2VfYnVpbGRfYXJnc30i CgpGcm9tIDcxZmExZTlkYTQ0Mjg1YjgwZDkyMDVmMDJjMjVkZmJhM2RiYjE3OTAgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZy aSwgMzEgTWFyIDIwMjMgMDk6MDc6NDAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4My8xMTVdIG52 LWNvZGVjLWhlYWRlcnM6IHVwZGF0ZSB0byAxMi4wLjE2LjAKCi0tLQogc3JjcGtncy9udi1jb2Rl Yy1oZWFkZXJzL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbnYtY29kZWMtaGVhZGVy cy90ZW1wbGF0ZSBiL3NyY3BrZ3MvbnYtY29kZWMtaGVhZGVycy90ZW1wbGF0ZQppbmRleCAzZDQy MmE2MWU0ODkxLi4yNTFlMDU3ZjgyNmZiIDEwMDY0NAotLS0gYS9zcmNwa2dzL252LWNvZGVjLWhl YWRlcnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlCkBA IC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbnYtY29kZWMtaGVhZGVycycKIHBr Z25hbWU9bnYtY29kZWMtaGVhZGVycwotdmVyc2lvbj0xMS4xLjUuMQordmVyc2lvbj0xMi4wLjE2 LjAKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogc2hvcnRfZGVzYz0iRkZt cGVnIHZlcnNpb24gb2YgaGVhZGVycyByZXF1aXJlZCB0byBpbnRlcmZhY2Ugd2l0aCBOdmlkaWFz IGNvZGVjIEFQSXMiCkBAIC04LDcgKzgsNyBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFu QHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iTUlUIgogaG9tZXBhZ2U9Imh0dHA6Ly9naXQudmlk ZW9sYW4ub3JnLz9wPWZmbXBlZy9udi1jb2RlYy1oZWFkZXJzLmdpdCIKIGRpc3RmaWxlcz0iaHR0 cHM6Ly9naXRodWIuY29tL0ZGbXBlZy9udi1jb2RlYy1oZWFkZXJzL2FyY2hpdmUvbiR7dmVyc2lv bn0udGFyLmd6IgotY2hlY2tzdW09ZDA5NWZiZDU2YWE5Mzc3MjQ3MWEzMjNiZTBlYmU2NTUwNGEw ZjQzZjA2Yzc2YTMwYjZkMjVkYTc3YjA2YWU5YworY2hlY2tzdW09MmExNTMzYjY1ZjU1ZjlkYTUy OTU2ZmFmMDYyN2VkM2I3NDg2OGFjMGM3ZjI2OTk5MGVkZDIxMzY5MTEzYjQ4ZgogCiBwb3N0X2lu c3RhbGwoKSB7CiAJc2VkIC1uICc0LDI1cCcgaW5jbHVkZS9mZm52Y29kZWMvbnZFbmNvZGVBUEku aCA+IExJQ0VOU0UKCkZyb20gYTEwZDk4NDgyMjQ4NTAyODU1NjFjMGQ1YmRiOGFhMTlmNzA4ODk3 YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAzMSBNYXIgMjAyMyAwOTowODo0MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDg0LzExNV0gb3BlbmltYWdlZGVub2lzZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5p bWFnZWRlbm9pc2UvdGVtcGxhdGUgYi9zcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUK aW5kZXggYjc5MjgxM2RiYTdjMi4uMTA5ZGViMTcxYzNmNyAxMDA2NDQKLS0tIGEvc3JjcGtncy9v cGVuaW1hZ2VkZW5vaXNlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5pbWFnZWRl bm9pc2UnCiBwa2duYW1lPW9wZW5pbWFnZWRlbm9pc2UKIHZlcnNpb249MS40LjMKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGFyY2hzPSJ4ODZfNjQqIgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3Rt YWtlZGVwZW5kcz0iaXNwYyBweXRob24zIgoKRnJvbSA0MjIzMjlkMzgyMWUyNTAxM2Q0OGE5ZjQ1 NDRhMmI4YmJkYjA4MWMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBNb24sIDMgQXByIDIwMjMgMjM6MzE6NDUgLTA0MDAKU3Vi amVjdDogW1BBVENIIDA4NS8xMTVdIHNob3RjdXQ6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zaG90Y3V0L3Rl bXBsYXRlIGIvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlCmluZGV4IDdkMmFmN2IwNDcwYjUuLmM0 MTZjOTA2ZmY3MzQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc2hvdGN1dC90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdzaG90Y3V0JwogcGtnbmFtZT1zaG90Y3V0CiB2ZXJzaW9uPTIzLjA1LjE0Ci1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EU0hP VENVVF9WRVJTSU9OPSR7dmVyc2lvbn0iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ2 LXRvb2xzLWRldmVsIgoKRnJvbSA1MWY3OGRiOWY3ZTE4MTBiZTNhMDgzNzdmYmI2NmM0YmIzODM1 MjUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBNb24sIDMgQXByIDIwMjMgMjM6MzM6MzAgLTA0MDAKU3ViamVjdDogW1BBVENI IDA4Ni8xMTVdIHNoaWJva2VuMjogcmV2YnVtcCBmb3IgcXQ1LTUuMTUuOAoKLS0tCiBzcmNwa2dz L3NoaWJva2VuMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoIHwgMSAr CiBzcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL2ltcG9ydGxp Yi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zaGlib2tlbjIv cGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaCBiL3NyY3BrZ3Mvc2hpYm9r ZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uZWZjZjMyNDliZDg4NQotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBh c3MucGF0Y2gKQEAgLTAsMCArMSBAQAorLi4vLi4vcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvaW1w b3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS9zcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc2hpYm9r ZW4yL3RlbXBsYXRlCmluZGV4IDg4M2Q2YTA4NGQ4NjguLmYzYzA2ZWMyNDVhMWYgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2hpYm9rZW4yL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2hpYm9rZW4yJwog cGtnbmFtZT1zaGlib2tlbjIKIHZlcnNpb249NS4xNS4xMAotcmV2aXNpb249MQorcmV2aXNpb249 MgogX3BrZ25hbWU9InB5c2lkZS1zZXR1cC1vcGVuc291cmNlLXNyYy0ke3ZlcnNpb259IgogYnVp bGRfd3Jrc3JjPSJzb3VyY2VzL3NoaWJva2VuMiIKIGJ1aWxkX3N0eWxlPWNtYWtlCgpGcm9tIGY0 NWNlYTJhMTQ5YzUzMjE4NTljY2QzYmQyMGQwYzA3Y2JhZGQ4NjYgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMyBBcHIg MjAyMyAyMzozMzo1MyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg3LzExNV0gcHl0aG9uMy1weXNp ZGUyOiByZXZidW1wIGZvciBxdDUtNS4xNS44CgotLS0KIC4uLi9wYXRjaGVzL2ltcG9ydGxpYi1t YWNoaW5lcnktYnlwYXNzLnBhdGNoICAgICAgfCAxNSArKysrKysrKysrKysrKysKIHNyY3BrZ3Mv cHl0aG9uMy1weXNpZGUyL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxl cyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5 LWJ5cGFzcy5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3BhdGNo ZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggYi9zcmNwa2dzL3B5dGhvbjMtcHlz aWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjY0YzQyOTU4NDc3NmIKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5l cnktYnlwYXNzLnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKK1VzaW5nIHRoaXMgcHJldmVudHMgYW4g ZXJyb3IgYXJvdW5kIGxpbmUgMjIwIGJlbG93IGl0LgorIkF0dHJpYnV0ZUVycm9yOiBtb2R1bGUg J2ltcG9ydGxpYicgaGFzIG5vIGF0dHJpYnV0ZSAnbWFjaGluZXJ5JyIKK1RoZSBvbGQgYmFja3Vw IGxvZ2ljIGlzIGluIHBsYWNlIGFuZCBjb21waWxlcyB3aXRob3V0IGlzc3Vlcy4KKy0tLSBhL3Nv dXJjZXMvc2hpYm9rZW4yL2xpYnNoaWJva2VuL2VtYmVkL3NpZ25hdHVyZV9ib290c3RyYXAucHkJ MjAyMy0wNC0wMiAyMzowOTozNC42ODg5MTI0MDIgLTA0MDAKKysrKyBiL3NvdXJjZXMvc2hpYm9r ZW4yL2xpYnNoaWJva2VuL2VtYmVkL3NpZ25hdHVyZV9ib290c3RyYXAucHkJMjAyMy0wNC0wMiAy MzoxMDowMy4zOTU1Mjk1ODIgLTA0MDAKK0BAIC0xNzAsOSArMTcwLDYgQEAKKworICAgICAjICd6 aXBzdHJpbmdfc2VxdWVuY2UnIGNvbWVzIGZyb20gc2lnbmF0dXJlLmNwcAorICAgICB6aXBieXRl cyA9IGJhc2U2NC5iNjRkZWNvZGUoJycuam9pbih6aXBzdHJpbmdfc2VxdWVuY2UpKQorLSAgICBp ZiBzeXMudmVyc2lvbl9pbmZvWzBdID49IDM6CistICAgICAgICB2emlwID0gemlwZmlsZS5aaXBG aWxlKGlvLkJ5dGVzSU8oemlwYnl0ZXMpKQorLSAgICAgICAgcmV0dXJuIHN5cy5tZXRhX3BhdGgs IEVtYmVkZGFibGVaaXBJbXBvcnRlcih2emlwKQorCisgICAgICMgT2xkIHZlcnNpb24gZm9yIFB5 dGhvbiAyLjcsIG9ubHkuCisgICAgIGltcG9ydCBvcwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9weXRo b24zLXB5c2lkZTIvdGVtcGxhdGUgYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQpp bmRleCAyNDllZmE5MDk4ODQyLi41MjYyNjQzNmNlNzVmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3B5 dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3B5dGhvbjMtcHlzaWRl MicKIHBrZ25hbWU9cHl0aG9uMy1weXNpZGUyCiB2ZXJzaW9uPTUuMTUuMTAKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIF9wa2duYW1lPSJweXNpZGUtc2V0dXAtb3BlbnNvdXJjZS1zcmMtJHt2ZXJz aW9ufSIKIGJ1aWxkX3dya3NyYz0ic291cmNlcy9weXNpZGUyIgogYnVpbGRfc3R5bGU9Y21ha2UK CkZyb20gZGViNTJkZDhlYWM5NTA1YjliOWFlN2QyNTFmMGQxODY2ODdjZGMyMSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogVHVl LCA0IEFwciAyMDIzIDExOjE0OjM1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODgvMTE1XSBrb25x dWVyb3I6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9rb25xdWVyb3IvdGVt cGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9rb25xdWVyb3IvdGVtcGxhdGUgYi9zcmNwa2dz L2tvbnF1ZXJvci90ZW1wbGF0ZQppbmRleCBhYmZhNTllNmI3ZGVkLi4zY2MyOWMxMmRjMWRiIDEw MDY0NAotLS0gYS9zcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tvbnF1 ZXJvci90ZW1wbGF0ZQpAQCAtMSwxMSArMSwxMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna29u cXVlcm9yJwogcGtnbmFtZT1rb25xdWVyb3IKIHZlcnNpb249MjMuMDguMgotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRERFU0tUT1BU T0pTT05fRVhFQ1VUQUJMRT0vdXNyL2Jpbi9kZXNrdG9wdG9qc29uIgogaG9zdG1ha2VkZXBlbmRz PSJleHRyYS1jbWFrZS1tb2R1bGVzIHB5dGhvbjMgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIGtk b2N0b29scwota2NvcmVhZGRvbnMga2NvbmZpZyBnZXR0ZXh0IgorIGtjb3JlYWRkb25zIGtjb25m aWcgZ2V0dGV4dCIKIG1ha2VkZXBlbmRzPSJxdDUtZGV2ZWwgcXQ1LXdlYmVuZ2luZS1kZXZlbCBx dDUtZGVjbGFyYXRpdmUtZGV2ZWwKICBxdDUtd2ViY2hhbm5lbC1kZXZlbCBxdDUtbG9jYXRpb24t ZGV2ZWwga2NtdXRpbHMtZGV2ZWwga2RlbGliczRzdXBwb3J0LWRldmVsCiAga2FyY2hpdmUtZGV2 ZWwga2h0bWwtZGV2ZWwga2Rlc3UtZGV2ZWwga2FjdGl2aXRpZXM1LWRldmVsIgoKRnJvbSBlM2M2 ZDUwNDExOWE1MWM5ZjBlYmZjYTA4N2U2YWQ4Mzg3YmM1YTdlIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgQXByIDIw MjMgMTE6MTQ6NTggLTA0MDAKU3ViamVjdDogW1BBVENIIDA4OS8xMTVdIHF0NS1zcGVlY2g6IHJl dmJ1bXAgZm9yIHF0NS01LjE1LjgKCi0tLQogc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlIGIvc3JjcGtncy9xdDUtc3BlZWNo L3RlbXBsYXRlCmluZGV4IDNlY2QxMGQ1MDY1MGMuLjJkN2Q0ZDRkMjQ1MzUgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvcXQ1LXNwZWVjaC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS1zcGVlY2gvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUtc3BlZWNoJwog cGtnbmFtZT1xdDUtc3BlZWNoCiB2ZXJzaW9uPTUuMTUuNwotcmV2aXNpb249MgorcmV2aXNpb249 MwogX2NvbW1pdD1kMzJmNGE0NzlkMzhhMTFmNTQ3NTk4MDA0Yjk3NWY0MzU2NDI0YTE2CiBidWls ZF9zdHlsZT1xbWFrZQogY29uZmlndXJlX2FyZ3M9Ii0tIC1mbGl0ZSAtZmxpdGUtYWxzYSAtc3Bl ZWNoZCIKCkZyb20gNGNkMzJlMzM4ZWU5ZGQxYzI4ZjkwOGU5NGI0NzA3NDIwYWU2ZWE0OSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCA0IEFwciAyMDIzIDE4OjM4OjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTAvMTE1 XSBxdDUtc3R5bGVwbHVnaW5zOiByZXZidW1wIGZvciBxdDUtNS4xNS44CgotLS0KIHNyY3BrZ3Mv cXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXN0eWxlcGx1 Z2lucy90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQppbmRleCA5 NmVkOTdkMTJjZDI0Li4zMGQ5MzY2MGEyYTRlIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS1zdHls ZXBsdWdpbnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1LXN0eWxlcGx1Z2lucycK IHBrZ25hbWU9cXQ1LXN0eWxlcGx1Z2lucwogdmVyc2lvbj01LjAuMAotcmV2aXNpb249MjAKK3Jl dmlzaW9uPTIxCiBfZ2l0cmV2PTMzNWRiZWNlMTAzZTJjYmY2YzdjZjgxOWFiNjY3MmMyOTU2YjE3 YjMKIGJ1aWxkX3N0eWxlPXFtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LWhv c3QtdG9vbHMgcXQ1LXFtYWtlIgoKRnJvbSA2NWU5Njc1NTQ4NTQ2OTcxZGEyZjg4NjRjZjk2Zjhh Y2UwZjI4Y2QwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBTdW4sIDcgTWF5IDIwMjMgMjA6MTU6MDMgLTA0MDAKU3ViamVjdDog W1BBVENIIDA5MS8xMTVdIHF0Ni13ZWJlbmdpbmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlIHwgMSArCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKykKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdGVtcGxh dGUgYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdGVtcGxhdGUKaW5kZXggYTkyYjA2YzZmMGNjYS4u MTRhOWJmYzA4MjkzNSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZQpAQCAtMTQ2LDYgKzE0Niw3IEBA IHByZV9pbnN0YWxsKCkgewogfQogCiBwb3N0X2luc3RhbGwoKSB7CisJdmxpY2Vuc2UgTElDRU5T RVMvQlNELTMtQ2xhdXNlLnR4dAogCWxvY2FsIF9maWxlCiAJZmluZCAiJHtERVNURElSfSIvdXNy L2xpYi9xdDYvZXhhbXBsZXMgXAogCQktcGF0aCAnKi9saWIvcXQ2LyoqL2xpYi9xdDYvKicgLXR5 cGUgZiB8CgpGcm9tIGEwMWQ0ZWM4MWQ5ZmFlMzNjZDY4ZWNlMzJkOGE2MTM4YTk5ZDE3MjMgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFN1biwgMjEgTWF5IDIwMjMgMTI6NDQ6MTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5Mi8x MTVdIGVsZWN0cm9uMjQ6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9lbGVj dHJvbjI0L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlIGIv c3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlCmluZGV4IDU5ZTA3OGE3YjQ3Y2IuLmE5Yzg2NWMx OWM5ODkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24yNC90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdlbGVjdHJvbjI0JwogcGtnbmFtZT1lbGVjdHJvbjI0CiB2ZXJzaW9uPTI0LjMuMAotcmV2 aXNpb249MQorcmV2aXNpb249MgogX25vZGV2ZXI9MTguMTQuMAogX2Nocm9taXVtdmVyPTExMi4w LjU2MTUuMTY1CiBhcmNocz0ieDg2XzY0KiBhYXJjaDY0KiIKCkZyb20gOGU1ZGNlMTI4OTJlNDVl MDE0ZjU0ZmFiMTZjYmEyMDkyNTI3NDE2MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU2F0LCAzIEp1biAyMDIzIDA4OjIwOjIy IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTMvMTE1XSBndGs0OiByZXZidW1wIGZvciBmZm1wZWct Ni4wCgotLS0KIHNyY3BrZ3MvZ3RrNC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3RrNC90 ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZQppbmRleCA2YTRlMjAzNTdhODZmLi5lYzBj MTNkMmNjNWIwIDEwMDY0NAotLS0gYS9zcmNwa2dzL2d0azQvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9ndGs0L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3Rr NCcKIHBrZ25hbWU9Z3RrNAogdmVyc2lvbj00LjEyLjMKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9oZWxwZXI9ImdpciIKIGNvbmZpZ3VyZV9hcmdzPSIt RG1hbi1wYWdlcz10cnVlIC1EZG9jdW1lbnRhdGlvbj10cnVlIC1EYnVpbGQtdGVzdHM9ZmFsc2UK CkZyb20gMWJiMjhjMTdiNzc1NjE3MDM3OTQzMDczMTU1MTAzN2M0NTI5MzYxOSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3Vu LCA0IEp1biAyMDIzIDExOjI1OjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTQvMTE1XSBlbGVj dHJvbjE5OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZWxlY3Ryb24xOS90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZSBiL3NyY3BrZ3Mv ZWxlY3Ryb24xOS90ZW1wbGF0ZQppbmRleCA0YjQwZGUyMGEzZmUyLi5iMThiYzc5MmM4MjIxIDEw MDY0NAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9lbGVj dHJvbjE5L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZWxl Y3Ryb24xOScKIHBrZ25hbWU9ZWxlY3Ryb24xOQogdmVyc2lvbj0xOS4wLjgKLXJldmlzaW9uPTMK K3JldmlzaW9uPTQKIF9ub2RldmVyPTE2LjE0LjIKIF9jaHJvbWl1bXZlcj0xMDIuMC41MDA1LjEy NQogYXJjaHM9Ing4Nl82NCogYWFyY2g2NCogcHBjNjRsZSoiCgpGcm9tIGVlYWQzYzU1MWVjMDEz MTQ5YWIzZDJmOTkwZTg2ZDhiODMwMzhiZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNCBKdW4gMjAyMyAxMToyODoy NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk1LzExNV0gc2lyaWw6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9zaXJpbC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2ly aWwvdGVtcGxhdGUgYi9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlCmluZGV4IDg0MzMyZjc5ZDA2MGQu LjYyNzUwZGQyNDc1NDggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9zaXJpbC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ3NpcmlsJwogcGtnbmFtZT1zaXJpbAogdmVyc2lvbj0wLjkuMTIKLXJldmlzaW9uPTEwCity ZXZpc2lvbj0xMQogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIGludGx0b29sIGF1dG9jb25mIGF1dG9tYWtlIGdldHRleHQtZGV2ZWwiCiBtYWtl ZGVwZW5kcz0iZmZ0dy1kZXZlbCBsaWJjb25maWctZGV2ZWwgbGlib3BlbmN2LWRldmVsIGxpYmZm bXMyLWRldmVsCgpGcm9tIDYwY2RmMjdkODdhOTk0Y2MwYTU3NDg0NzQyMGRmNTFhOTQ1ZTA2MDgg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMTAgSnVuIDIwMjMgMDA6NTc6MDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5 Ni8xMTVdIHF0Ni1tdWx0aW1lZGlhOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni1tdWx0aW1l ZGlhL3RlbXBsYXRlIGIvc3JjcGtncy9xdDYtbXVsdGltZWRpYS90ZW1wbGF0ZQppbmRleCAyY2Y5 OTdiMjI3YTQ1Li5jYTM5NTM0YWZiN2YzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0Ni1tdWx0aW1l ZGlhL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDYtbXVsdGltZWRpYScKIHBrZ25hbWU9 cXQ2LW11bHRpbWVkaWEKIHZlcnNpb249Ni41LjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1 aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURRVF9GRUFUVVJFX2dzdHJlYW1lcj1P TiIKIGhvc3RtYWtlZGVwZW5kcz0icGVybCBxdDYtZGVjbGFyYXRpdmUtaG9zdC10b29scyBwa2ct Y29uZmlnIHF0Ni1zaGFkZXJ0b29scyIKCkZyb20gNTA4MWZiZTcxMGE1NGE1NjI2MzExOTJjY2Jj ZGRmODg1NDMyZTk1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogVGh1LCAyMiBKdW4gMjAyMyAxMDoyNTowMiAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDk3LzExNV0ga2RlbmxpdmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9rZGVubGl2ZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2RlbmxpdmUv dGVtcGxhdGUgYi9zcmNwa2dzL2tkZW5saXZlL3RlbXBsYXRlCmluZGV4IGVjNWZlNzU4NjA5NDgu LmU2OWVjZmYzMWYyNzIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva2RlbmxpdmUvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9rZGVubGl2ZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2tkZW5saXZlJwogcGtnbmFtZT1rZGVubGl2ZQogdmVyc2lvbj0yMy4wOC4yCi1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRz PSIKICBleHRyYS1jbWFrZS1tb2R1bGVzIGtjb25maWcga2NvcmVhZGRvbnMga2RvY3Rvb2xzIHBr Zy1jb25maWcgcHl0aG9uMwoKRnJvbSA3ODgzN2E3NGEzOWI5NDUyNzkyYWQ4ODNmNjM3ZDEzYjNl NDA0YzMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBUdWUsIDQgSnVsIDIwMjMgMDk6MTg6MjMgLTA0MDAKU3ViamVjdDogW1BB VENIIDA5OC8xMTVdIGdtaWM6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dz L2dtaWMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dtaWMvdGVtcGxhdGUgYi9zcmNwa2dz L2dtaWMvdGVtcGxhdGUKaW5kZXggMGJiNDAzNGQ1Y2M4Ni4uODA4OTUzZTliNTQzYyAxMDA2NDQK LS0tIGEvc3JjcGtncy9nbWljL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ21pYy90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dtaWMnCiBwa2duYW1lPWdtaWMK IHZlcnNpb249My4xLjYKLXJldmlzaW9uPTQKK3JldmlzaW9uPTUKIF96YXJ0X2hhc2g9MzRlYmY2 Y2NlMGJhZmI5OGFiZTU3Y2VjODNjNGEwMmNkMWFiZWNhMAogY3JlYXRlX3dya3NyYz15ZXMKIGJ1 aWxkX3dya3NyYz0ic3JjIgoKRnJvbSBmOTU4MTA4MzczMjU2NjEzMzdiNDc3NTYzZjA2MTNhNWJi MmJlMTVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBUdWUsIDQgSnVsIDIwMjMgMDk6Mjk6NTIgLTA0MDAKU3ViamVjdDogW1BB VENIIDA5OS8xMTVdIHN5bmZpZ3N0dWRpbzogcmV2YnVtcCBmb3Igc3luZmlnIG1sdDcKCi0tLQog c3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3N5bmZpZ3N0 dWRpby90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCmluZGV4IGFmMWM1 YTI5NmVmMGYuLjA5ZTQ0MmRhOWE2ODAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3luZmlnc3R1ZGlv L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCkBAIC0yLDcgKzIs NyBAQAogIyBTaG91bGQgYmUga2VwdCBpbiBzeW5jIHdpdGggJ3N5bmZpZycgYW5kICdFVEwnCiBw a2duYW1lPXN5bmZpZ3N0dWRpbwogdmVyc2lvbj0xLjQuNAotcmV2aXNpb249MworcmV2aXNpb249 NAogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS11 cGRhdGUtbWltZWRiIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGludGx0b29sIGdldHRl eHQgc3luZmlnIgoKRnJvbSAzZGZiNWRiYzMyZmRjOWRmN2YyMDFmY2JiMDJhNTI5YzFjMmNmZTQ4 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBUdWUsIDQgSnVsIDIwMjMgMTE6MTc6MzcgLTA0MDAKU3ViamVjdDogW1BBVENIIDEw MC8xMTVdIERFTEVURTogaW50ZWxfcGFja2FnZXMKCi0tLQogY29tbW9uL3NobGlicyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyY3BrZ3MvaW50ZWwtZ21tbGliL3Rl bXBsYXRlICAgICAgICAgICAgICAgICB8ICAgNiArLQogLi4ubW1vbi1FbmFibGUtTU1DLWluLWZy ZWUta2VybmVsLWJ1aWxkLnBhdGNoIHwgMTI1ICsrKysrKysrKysrKysrKysrKwogc3JjcGtncy9p bnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUgICAgICAgICAgIHwgICA2ICstCiBzcmNwa2dzL2lu dGVsLW1lZGlhLXNkay9wYXRjaGVzL211c2wucGF0Y2ggICAgfCAgMTQgKysKIHNyY3BrZ3MvaW50 ZWwtbWVkaWEtc2RrL3RlbXBsYXRlICAgICAgICAgICAgICB8ICAzNyArKysrKysKIHNyY3BrZ3Mv aW50ZWwtbWVkaWEtc2RrL3VwZGF0ZSAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xp Ym1meCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJt ZngtZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3Mvb25ldnBs LWRldmVsICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL29uZXZwbC1p bnRlbC1ncHUtZGV2ZWwgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9vbmV2cGwtaW50 ZWwtZ3B1L3RlbXBsYXRlICAgICAgICAgICAgIHwgIDI3ICsrKysKIHNyY3BrZ3Mvb25ldnBsL3Rl bXBsYXRlICAgICAgICAgICAgICAgICAgICAgICB8ICAzNCArKysrKwogMTMgZmlsZXMgY2hhbmdl ZCwgMjUwIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvcGF0Y2hlcy8wMDAxLU1lZGlhLUNvbW1vbi1FbmFi bGUtTU1DLWluLWZyZWUta2VybmVsLWJ1aWxkLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9pbnRlbC1tZWRpYS1zZGsvcGF0Y2hlcy9tdXNsLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdGVtcGxhdGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2ludGVsLW1lZGlhLXNkay91cGRhdGUKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dz L2xpYm1meAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGlibWZ4LWRldmVsCiBjcmVhdGUg bW9kZSAxMjAwMDAgc3JjcGtncy9vbmV2cGwtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNw a2dzL29uZXZwbC1pbnRlbC1ncHUtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL29u ZXZwbC1pbnRlbC1ncHUvdGVtcGxhdGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL29uZXZw bC90ZW1wbGF0ZQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmlu ZGV4IGIxYmExNDk3YzgyOTUuLjI0YzhkYzRiMjM1NGQgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxp YnMKKysrIGIvY29tbW9uL3NobGlicwpAQCAtNDI1Myw2ICs0MjUzLDggQEAgbGliZ3NvYXBzc2wr Ky0yLjguMTI0LnNvIGdzb2FwLTIuOC4xMjRfMQogbGlianhsLnNvLjAuOCBsaWJqeGwtMC44LjJf MQogbGlianhsX2RlYy5zby4wLjggbGlianhsLTAuOC4yXzEKIGxpYmp4bF90aHJlYWRzLnNvLjAu OCBsaWJqeGwtMC44LjJfMQorbGlibWZ4LnNvLjEgbGlibWZ4LTIyLjYuNF8xCitsaWJ2cGwuc28u MiBvbmV2cGwtMjAyMy4xLjJfMQogbGlidGV4dC1lbmdpbmUtMC4xLnNvLjAgdGV4dC1lbmdpbmUt MC4xLjFfMQogbGlidm1hZi5zby4xIHZtYWYtMi4zLjFfMQogbGlibGMzLnNvLjEgbGlibGMzLTEu MC4zXzEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW50ZWwtZ21tbGliL3RlbXBsYXRlIGIvc3JjcGtn cy9pbnRlbC1nbW1saWIvdGVtcGxhdGUKaW5kZXggMDRlNDA3YjFkZTRkMy4uMjYwNTIyNjE1MmU1 ZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9pbnRlbC1nbW1saWIvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9pbnRlbC1nbW1saWIvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdpbnRlbC1nbW1saWInCiBwa2duYW1lPWludGVsLWdtbWxpYgotdmVyc2lvbj0yMi4yLjAK K3ZlcnNpb249MjIuMy4zCiByZXZpc2lvbj0xCiBhcmNocz0iaTY4NiogeDg2XzY0KiIKIGJ1aWxk X3N0eWxlPWNtYWtlCkBAIC0xNCwxMSArMTQsMTEgQEAgYnVpbGRfc3R5bGU9Y21ha2UKICMgY29t cGlsZXJzIGZsYWcgaW4gdXNlLgogY29uZmlndXJlX2FyZ3M9Ii1Xbm8tZGV2Igogc2hvcnRfZGVz Yz0iSW50ZWwgR3JhcGhpY3MgTWVtb3J5IE1hbmFnZW1lbnQgTGlicmFyeSIKLW1haW50YWluZXI9 Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCittYWludGFpbmVyPSJTdGVmYW5vIFJh Z25pIDxzdDNyNGdAcHJvdG9ubWFpbC5jb20+IgogbGljZW5zZT0iTUlUIgogaG9tZXBhZ2U9Imh0 dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9nbW1saWIiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHVi LmNvbS9pbnRlbC9nbW1saWIvYXJjaGl2ZS9pbnRlbC1nbW1saWItJHt2ZXJzaW9ufS50YXIuZ3oi Ci1jaGVja3N1bT0wYjIyNTM4OTRjNmZjODQ1NWI2ZDdjNWU4N2U2NTA0YTc2ZDZmNjBlYTE5MmUx NDQ1YzJmOTMxNjRiZjUyOWMwCitjaGVja3N1bT04NjY1MWJkMjgwM2M5ZjBhZmQ4MjQ3MWJlYzc4 NGU2NWQyYjQxOGRlZTMxNWEwNTNkMjIyMTVlYjJhNjc5YmU3CiAKIGxpYjMyZGlzYWJsZWQ9eWVz CiAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3BhdGNoZXMvMDAwMS1N ZWRpYS1Db21tb24tRW5hYmxlLU1NQy1pbi1mcmVlLWtlcm5lbC1idWlsZC5wYXRjaCBiL3NyY3Br Z3MvaW50ZWwtbWVkaWEtZHJpdmVyL3BhdGNoZXMvMDAwMS1NZWRpYS1Db21tb24tRW5hYmxlLU1N Qy1pbi1mcmVlLWtlcm5lbC1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAwLi41MjVmYjY4ODcyMmM4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9p bnRlbC1tZWRpYS1kcml2ZXIvcGF0Y2hlcy8wMDAxLU1lZGlhLUNvbW1vbi1FbmFibGUtTU1DLWlu LWZyZWUta2VybmVsLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMTI1IEBACitGcm9tIGU2OGZlYWI3 ZGIwMzY4MzhkOTUyMWJhM2I5ZjAwNzE3YzM3YzAyNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBKYXlZYW5nIDxqYXkueWFuZ0BpbnRlbC5jb20+CitEYXRlOiBUdWUsIDIxIE1hciAy MDIzIDE3OjE3OjU1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIFtNZWRpYSBDb21tb25dIEVuYWJs ZSBNTUMgaW4gZnJlZSBrZXJuZWwgYnVpbGQKKworQWRkIG1tYyBidWlsZCBkZWZpbml0aW9uIGlu IGZyZWUga2VybmVsIGJ1aWxkCistLS0KKyBtZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9jb2Rl Yy9oYWwvbWVkaWFfc3Jjcy5jbWFrZSAgICAgICAgICB8IDIgKy0KKyBtZWRpYV9kcml2ZXIvY21h a2UvbGludXgvbWVkaWFfZmVhdHVyZV9mbGFnc19saW51eC5jbWFrZSAgICAgICB8IDMgKy0tCisg Li4uL21lZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNwcCAg ICAgICAgfCAyICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfY2ZsL21lZGlhX2ludGVyZmFj ZXNfZzlfY2ZsLmNwcCAgICAgICAgfCAyICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfZ2xr L21lZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNwcCAgICAgICAgfCAyICstCisgLi4uL21lZGlhX2lu dGVyZmFjZXNfbTlfa2JsL21lZGlhX2ludGVyZmFjZXNfZzlfa2JsLmNwcCAgICAgICAgfCAyICst CisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfc2tsL21lZGlhX2ludGVyZmFjZXNfZzlfc2tsLmNw cCAgICAgICAgfCAyICstCisgNyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9jb2Rl Yy9oYWwvbWVkaWFfc3Jjcy5jbWFrZSBiL21lZGlhX2RyaXZlci9hZ25vc3RpYy9nZW45L2NvZGVj L2hhbC9tZWRpYV9zcmNzLmNtYWtlCitpbmRleCA4YmIzNmJhZmUuLjc4OTAyYTIyZCAxMDA2NDQK Ky0tLSBhL21lZGlhX2RyaXZlci9hZ25vc3RpYy9nZW45L2NvZGVjL2hhbC9tZWRpYV9zcmNzLmNt YWtlCisrKysgYi9tZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9jb2RlYy9oYWwvbWVkaWFfc3Jj cy5jbWFrZQorQEAgLTI3LDcgKzI3LDcgQEAgc2V0KFRNUF8xX0hFQURFUlNfCisgICAgICR7Q01B S0VfQ1VSUkVOVF9MSVNUX0RJUn0vY29kZWNoYWxfaHdfZzlfWC5oCisgKQorIAorLWlmKCR7TU1D X1N1cHBvcnRlZH0gU1RSRVFVQUwgInllcyIpCisraWYoJHtNTUNfU3VwcG9ydGVkfSBTVFJFUVVB TCAieWVzIiBBTkQgRU5BQkxFX05PTkZSRUVfS0VSTkVMUyBBTkQgRU5BQkxFX0tFUk5FTFMpCisg ICAgIHNldChUTVBfMV9TT1VSQ0VTXworICAgICAgICAgJHtUTVBfMV9TT1VSQ0VTX30KKyAgICAg ICAgICR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vY29kZWNoYWxfbWVtZGVjb21wX2c5LmNwcAor ZGlmZiAtLWdpdCBhL21lZGlhX2RyaXZlci9jbWFrZS9saW51eC9tZWRpYV9mZWF0dXJlX2ZsYWdz X2xpbnV4LmNtYWtlIGIvbWVkaWFfZHJpdmVyL2NtYWtlL2xpbnV4L21lZGlhX2ZlYXR1cmVfZmxh Z3NfbGludXguY21ha2UKK2luZGV4IGRlMGNhODUzZi4uODEyMWVhNjBjIDEwMDY0NAorLS0tIGEv bWVkaWFfZHJpdmVyL2NtYWtlL2xpbnV4L21lZGlhX2ZlYXR1cmVfZmxhZ3NfbGludXguY21ha2UK KysrKyBiL21lZGlhX2RyaXZlci9jbWFrZS9saW51eC9tZWRpYV9mZWF0dXJlX2ZsYWdzX2xpbnV4 LmNtYWtlCitAQCAtMzUsNyArMzUsNiBAQCBpZihOT1QgRU5BQkxFX0tFUk5FTFMgT1IgTk9UIEVO QUJMRV9OT05GUkVFX0tFUk5FTFMpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoSEVWQ19FbmNv ZGVfVk1FX1N1cHBvcnRlZCAibm8iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKE1QRUcyX0Vu Y29kZV9WTUVfU3VwcG9ydGVkICJubyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoQ01SVF9I RVZDX0VOQ19GRUlfU3VwcG9ydGVkICJubyIpCistICAgIGJzX3NldF9pZl91bmRlZmluZWQoTU1D X1N1cHBvcnRlZCAibm8iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKFZDMV9EZWNvZGVfU3Vw cG9ydGVkICJubyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoRGVjb2RlX1Byb2Nlc3Npbmdf U3VwcG9ydGVkICJubyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoS2VybmVsX0F1dG9fRGVu b2lzZV9TdXBwb3J0ZWQgIm5vIikKK0BAIC00Niw3ICs0NSw2IEBAIGVsc2UoKQorICAgICBic19z ZXRfaWZfdW5kZWZpbmVkKEhFVkNfRW5jb2RlX1ZNRV9TdXBwb3J0ZWQgIiR7RW5jb2RlX1ZNRV9T dXBwb3J0ZWR9IikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChNUEVHMl9FbmNvZGVfVk1FX1N1 cHBvcnRlZCAiJHtFbmNvZGVfVk1FX1N1cHBvcnRlZH0iKQorICAgICBic19zZXRfaWZfdW5kZWZp bmVkKENNUlRfSEVWQ19FTkNfRkVJX1N1cHBvcnRlZCAieWVzIikKKy0gICAgYnNfc2V0X2lmX3Vu ZGVmaW5lZChNTUNfU3VwcG9ydGVkICJ5ZXMiKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKFZD MV9EZWNvZGVfU3VwcG9ydGVkICJ5ZXMiKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKERlY29k ZV9Qcm9jZXNzaW5nX1N1cHBvcnRlZCAieWVzIikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChL ZXJuZWxfQXV0b19EZW5vaXNlX1N1cHBvcnRlZCAieWVzIikKK0BAIC02NCw2ICs2Miw3IEBAIGJz X3NldF9pZl91bmRlZmluZWQoVlA5X0RlY29kZV9TdXBwb3J0ZWQgInllcyIpCisgYnNfc2V0X2lm X3VuZGVmaW5lZChWUF9TRkNfU3VwcG9ydGVkICJ5ZXMiKQorIGJzX3NldF9pZl91bmRlZmluZWQo Q29tbW9uX0VuY29kZV9TdXBwb3J0ZWQgInllcyIpCisgYnNfc2V0X2lmX3VuZGVmaW5lZChNZWRp YV9TY2FsYWJpbGl0eV9TdXBwb3J0ZWQgInllcyIpCisrYnNfc2V0X2lmX3VuZGVmaW5lZChNTUNf U3VwcG9ydGVkICJ5ZXMiKQorIAorICMgZmVhdHVyZXMgY29udHJvbGxlZCBieSBnbG9iYWwgZmxh ZyBFbmNvZGVfVkRFbmNfU3VwcG9ydGVkCisgYnNfc2V0X2lmX3VuZGVmaW5lZChBVkNfRW5jb2Rl X1ZERW5jX1N1cHBvcnRlZCAiJHtFbmNvZGVfVkRFbmNfU3VwcG9ydGVkfSIpCitkaWZmIC0tZ2l0 IGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2J4dC9t ZWRpYV9pbnRlcmZhY2VzX2c5X2J4dC5jcHAgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNl L21lZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNwcAoraW5k ZXggM2YzMDZlZTJhLi44ZTRjMGY1MzIgMTAwNjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvbWVkaWFf aW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0 LmNwcAorKysrIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2Vz X205X2J4dC9tZWRpYV9pbnRlcmZhY2VzX2c5X2J4dC5jcHAKK0BAIC0xMzUsNyArMTM1LDcgQEAg TU9TX1NUQVRVUyBNaHdJbnRlcmZhY2VzRzlCeHQ6OkluaXRpYWxpemUoCisgCisgICAgIHJldHVy biBNT1NfU1RBVFVTX1NVQ0NFU1M7CisgfQorLSNpZmRlZiBfTU1DX1NVUFBPUlRFRAorKyNpZiBk ZWZpbmVkKF9NTUNfU1VQUE9SVEVEKSAmJiBkZWZpbmVkKEVOQUJMRV9LRVJORUxTKSAmJiAhZGVm aW5lZChfRlVMTF9PUEVOX1NPVVJDRSkKKyBzdGF0aWMgYm9vbCBieHRSZWdpc3RlcmVkTW1kID0K KyAgICAgTWVkaWFGYWN0b3J5PHVpbnQzMl90LCBNbWREZXZpY2U+OjoKKyAgICAgUmVnaXN0ZXI8 TW1kRGV2aWNlRzlCeHQ+KCh1aW50MzJfdClJR0ZYX0JST1hUT04pOworZGlmZiAtLWdpdCBhL21l ZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9jZmwvbWVkaWFf aW50ZXJmYWNlc19nOV9jZmwuY3BwIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRp YV9pbnRlcmZhY2VzX205X2NmbC9tZWRpYV9pbnRlcmZhY2VzX2c5X2NmbC5jcHAKK2luZGV4IGI4 ZmExZWVjMC4uODRlMGZhZDFkIDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVy ZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2NmbC9tZWRpYV9pbnRlcmZhY2VzX2c5X2NmbC5jcHAK KysrKyBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9j ZmwvbWVkaWFfaW50ZXJmYWNlc19nOV9jZmwuY3BwCitAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMg Ym9vbCBjZmxSZWdpc3RlcmVkTWh3ID0KKyAgICAgTWVkaWFGYWN0b3J5PHVpbnQzMl90LCBNaHdJ bnRlcmZhY2VzPjo6CisgICAgIFJlZ2lzdGVyPE1od0ludGVyZmFjZXNHOUtibD4oKHVpbnQzMl90 KUlHRlhfQ09GRkVFTEFLRSk7CisgCistI2lmZGVmIF9NTUNfU1VQUE9SVEVECisrI2lmIGRlZmlu ZWQoX01NQ19TVVBQT1JURUQpICYmIGRlZmluZWQoRU5BQkxFX0tFUk5FTFMpICYmICFkZWZpbmVk KF9GVUxMX09QRU5fU09VUkNFKQorIHN0YXRpYyBib29sIGNmbFJlZ2lzdGVyZWRNbWQgPQorICAg ICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1tZERldmljZT46OgorICAgICBSZWdpc3RlcjxNbWRE ZXZpY2VHOUtibD4oKHVpbnQzMl90KUlHRlhfQ09GRkVFTEFLRSk7CitkaWZmIC0tZ2l0IGEvbWVk aWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2dsay9tZWRpYV9p bnRlcmZhY2VzX2c5X2dsay5jcHAgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlh X2ludGVyZmFjZXNfbTlfZ2xrL21lZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNwcAoraW5kZXggZGU4 MWU2MDkxLi4yNjM4Y2IzYTYgMTAwNjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJm YWNlL21lZGlhX2ludGVyZmFjZXNfbTlfZ2xrL21lZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNwcAor KysrIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2ds ay9tZWRpYV9pbnRlcmZhY2VzX2c5X2dsay5jcHAKK0BAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBi b29sIGdsa1JlZ2lzdGVyZWRNaHcgPQorICAgICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1od0lu dGVyZmFjZXM+OjoKKyAgICAgUmVnaXN0ZXI8TWh3SW50ZXJmYWNlc0c5S2JsPigodWludDMyX3Qp SUdGWF9HRU1JTklMQUtFKTsKKyAKKy0jaWZkZWYgX01NQ19TVVBQT1JURUQKKysjaWYgZGVmaW5l ZChfTU1DX1NVUFBPUlRFRCkgJiYgZGVmaW5lZChFTkFCTEVfS0VSTkVMUykgJiYgIWRlZmluZWQo X0ZVTExfT1BFTl9TT1VSQ0UpCisgc3RhdGljIGJvb2wgZ2xrUmVnaXN0ZXJlZE1tZCA9CisgICAg IE1lZGlhRmFjdG9yeTx1aW50MzJfdCwgTW1kRGV2aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1tZERl dmljZUc5S2JsPigodWludDMyX3QpSUdGWF9HRU1JTklMQUtFKTsKK2RpZmYgLS1naXQgYS9tZWRp YV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfa2JsL21lZGlhX2lu dGVyZmFjZXNfZzlfa2JsLmNwcCBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFf aW50ZXJmYWNlc19tOV9rYmwvbWVkaWFfaW50ZXJmYWNlc19nOV9rYmwuY3BwCitpbmRleCA5OWQ3 ODYxODUuLjRlOWM2ZTdmMSAxMDA2NDQKKy0tLSBhL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZh Y2UvbWVkaWFfaW50ZXJmYWNlc19tOV9rYmwvbWVkaWFfaW50ZXJmYWNlc19nOV9rYmwuY3BwCisr KysgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfa2Js L21lZGlhX2ludGVyZmFjZXNfZzlfa2JsLmNwcAorQEAgLTEzMSw3ICsxMzEsNyBAQCBNT1NfU1RB VFVTIE1od0ludGVyZmFjZXNHOUtibDo6SW5pdGlhbGl6ZSgKKyAKKyAgICAgcmV0dXJuIE1PU19T VEFUVVNfU1VDQ0VTUzsKKyB9CistI2lmZGVmIF9NTUNfU1VQUE9SVEVECisrI2lmIGRlZmluZWQo X01NQ19TVVBQT1JURUQpICYmIGRlZmluZWQoRU5BQkxFX0tFUk5FTFMpICYmICFkZWZpbmVkKF9G VUxMX09QRU5fU09VUkNFKQorIHN0YXRpYyBib29sIGtibFJlZ2lzdGVyZWRNbWQgPQorICAgICBN ZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1tZERldmljZT46OgorICAgICBSZWdpc3RlcjxNbWREZXZp Y2VHOUtibD4oKHVpbnQzMl90KUlHRlhfS0FCWUxBS0UpOworZGlmZiAtLWdpdCBhL21lZGlhX2Ry aXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9za2wvbWVkaWFfaW50ZXJm YWNlc19nOV9za2wuY3BwIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRl cmZhY2VzX205X3NrbC9tZWRpYV9pbnRlcmZhY2VzX2c5X3NrbC5jcHAKK2luZGV4IGUyNTIwZWRm Ny4uNGIwMDEyYzY0IDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9t ZWRpYV9pbnRlcmZhY2VzX205X3NrbC9tZWRpYV9pbnRlcmZhY2VzX2c5X3NrbC5jcHAKKysrKyBi L21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9za2wvbWVk aWFfaW50ZXJmYWNlc19nOV9za2wuY3BwCitAQCAtMTM5LDcgKzEzOSw3IEBAIE1PU19TVEFUVVMg TWh3SW50ZXJmYWNlc0c5U2tsOjpJbml0aWFsaXplKAorIAorICAgICByZXR1cm4gTU9TX1NUQVRV U19TVUNDRVNTOworIH0KKy0jaWZkZWYgX01NQ19TVVBQT1JURUQKKysjaWYgZGVmaW5lZChfTU1D X1NVUFBPUlRFRCkgJiYgZGVmaW5lZChFTkFCTEVfS0VSTkVMUykgJiYgIWRlZmluZWQoX0ZVTExf T1BFTl9TT1VSQ0UpCisgc3RhdGljIGJvb2wgc2tsUmVnaXN0ZXJlZE1tZCA9CisgICAgIE1lZGlh RmFjdG9yeTx1aW50MzJfdCwgTW1kRGV2aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1tZERldmljZUc5 U2tsPigodWludDMyX3QpSUdGWF9TS1lMQUtFKTsKKy0tIAorMi40MC4wCisKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3RlbXBsYXRlIGIvc3JjcGtncy9pbnRlbC1tZWRp YS1kcml2ZXIvdGVtcGxhdGUKaW5kZXggYTViYWIwNmFjOTQ3Ni4uMTczNWI5MGM2NWNlNSAxMDA2 NDQKLS0tIGEvc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9pbnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdpbnRlbC1tZWRpYS1kcml2ZXInCiBwa2duYW1lPWludGVsLW1lZGlhLWRyaXZl cgotdmVyc2lvbj0yMi41LjMKK3ZlcnNpb249MjIuNi40CiByZXZpc2lvbj0xCiBhcmNocz0ieDg2 XzY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCkBAIC04LDExICs4LDExIEBAIGNvbmZpZ3VyZV9hcmdz PSItV25vLWRldiAtREVOQUJMRV9OT05GUkVFX0tFUk5FTFM9JCh2b3B0X2lmIG5vbmZyZWUgT04g T0ZGKSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJsaWJ2YS1k ZXZlbCBsaWJYMTEtZGV2ZWwgaW50ZWwtZ21tbGliLWRldmVsIGxpYnBjaWFjY2Vzcy1kZXZlbCIK IHNob3J0X2Rlc2M9IkludGVsIE1lZGlhIERyaXZlciBmb3IgVkFBUEkgKEJyb2Fkd2VsbCspIgot bWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKK21haW50YWluZXI9 IlN0ZWZhbm8gUmFnbmkgPHN0M3I0Z0Bwcm90b25tYWlsLmNvbT4iCiBsaWNlbnNlPSJNSVQsIEJT RC0zLUNsYXVzZSIKIGhvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJp dmVyIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVyL2Fy Y2hpdmUvaW50ZWwtbWVkaWEtJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT02NTY1MmIzNjVk NDhiZTNjOWYwYjNjNTYxNTAyOTUyYjkyZWU1ZmNjNTg3NTIwYjg4ZDBkNzUyY2YyYTZhM2I1Citj aGVja3N1bT0wYzA0YjlkNzRiOTJkZTQxZmQ0MDliNjI5MTNjZTRhZmQ3OTkyMzZjMGI2YmMxOTgz YTQ5Njk5MDc2NGU1ZDkwCiAKIGJ1aWxkX29wdGlvbnM9Im5vbmZyZWUiCiBkZXNjX29wdGlvbl9u b25mcmVlPSJFbmFibGUgbm9uZnJlZSBrZXJuZWxzIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRl bC1tZWRpYS1zZGsvcGF0Y2hlcy9tdXNsLnBhdGNoIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsv cGF0Y2hlcy9tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MDAuLjRhZTcwOTI0Yjc0NGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ludGVsLW1lZGlh LXNkay9wYXRjaGVzL211c2wucGF0Y2gKQEAgLTAsMCArMSwxNCBAQAorLS0tIGEvdG9vbHMvdHJh Y2VyL3RyYWNlci90cmFjZXJfbGludXguY3BwCTIwMjItMTEtMTggMDM6MDI6NTkuMDAwMDAwMDAw IC0wNTAwCisrKysgYi90b29scy90cmFjZXIvdHJhY2VyL3RyYWNlcl9saW51eC5jcHAJMjAyMi0x Mi0xOCAwMTo0NDo1MS4zNDE1NDI1NzIgLTA1MDAKK0BAIC0zMiw2ICszMiwxMSBAQAorICNpbmNs dWRlIDxkbGZjbi5oPgorICNpbmNsdWRlICJ0cmFjZXIuaCIKKworKyNpZm5kZWYgUlRMRF9ERUVQ QklORAorKy8vIG11c2wgbmVpdGhlciBkZWZpbmVzIG5vciBjYW4gdXNlIFJUTERfREVFUEJJTkQK KysjZGVmaW5lIFJUTERfREVFUEJJTkQgMAorKyNlbmRpZgorKworICNpZiBkZWZpbmVkKF9faTM4 Nl9fKQorICAgICAjZGVmaW5lIExJQk1GWEhXICJsaWJtZnhodzMyLnNvLjEiCisgI2VsaWYgZGVm aW5lZChfX3g4Nl82NF9fKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdGVt cGxhdGUgYi9zcmNwa2dzL2ludGVsLW1lZGlhLXNkay90ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi43YWVhYjUxODAyZjhlCi0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdGVtcGxhdGUKQEAgLTAsMCArMSwzNyBAQAorIyBU ZW1wbGF0ZSBmaWxlIGZvciAnaW50ZWwtbWVkaWEtc2RrJworcGtnbmFtZT1pbnRlbC1tZWRpYS1z ZGsKK3ZlcnNpb249MjIuNi40CityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0 eWxlPWNtYWtlCitjb25maWd1cmVfYXJncz0iLVduby1kZXYgLURCVUlMRF9TQU1QTEVTPU9GRiAt REJVSUxEX1RFU1RTPU9OIgoraG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgorbWFrZWRlcGVu ZHM9ImxpYnZhLWRldmVsIGxpYmRybS1kZXZlbCBpbnRlbC1nbW1saWItZGV2ZWwiCitzaG9ydF9k ZXNjPSJJbnRlbCBNZWRpYSBTREsiCittYWludGFpbmVyPSJTdGVmYW5vIFJhZ25pIDxzdDNyNGdA cHJvdG9ubWFpbC5jb20+IgorbGljZW5zZT0iTUlULCBCU0QtMy1DbGF1c2UiCitob21lcGFnZT0i aHR0cHM6Ly9naXRodWIuY29tL0ludGVsLU1lZGlhLVNESy9NZWRpYVNESyIKK2Rpc3RmaWxlcz0i aHR0cHM6Ly9naXRodWIuY29tL0ludGVsLU1lZGlhLVNESy9NZWRpYVNESy9hcmNoaXZlL3JlZnMv dGFncy9pbnRlbC1tZWRpYXNkay0ke3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPTE5N2FjZDA1 NmY4MWU5ZmYxYzI3MDY4ZDUwZThjODRjMjAxNGQ5NGM3YWMxN2NhZDY5ZDVjMmQ2MWU0NDVmZDMK KworcG9zdF9pbnN0YWxsKCkgeworCXZsaWNlbnNlIExJQ0VOU0UKK30KKworbGlibWZ4X3BhY2th Z2UoKSB7CisJZGVwZW5kcz0iJHttYWtlZGVwZW5kc30gJHtzb3VyY2Vwa2d9LSR7dmVyc2lvbn1f JHtyZXZpc2lvbn0iCisJc2hvcnRfZGVzYz0iSW50ZWwgTWVkaWFTREsgbWZ4IGxpYiIKKwlwa2df aW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2xpYi9tZngKKwkJdm1vdmUgInVzci9saWIvbGlibWZ4 Ki5zbyoiCisJfQorfQorCitsaWJtZngtZGV2ZWxfcGFja2FnZSgpIHsKKwlkZXBlbmRzPSIke21h a2VkZXBlbmRzfSAke3NvdXJjZXBrZ30tJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9k ZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVz ci9pbmNsdWRlCisJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCisJfQorfQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdXBkYXRlIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsv dXBkYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjQzNGEyYmM2 N2Y3YTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ludGVsLW1lZGlhLXNkay91cGRhdGUK QEAgLTAsMCArMSBAQAorcGtnbmFtZT1pbnRlbC1tZWRpYQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9s aWJtZnggYi9zcmNwa2dzL2xpYm1meApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAw MDAwMDAwLi44ZmZjNzA5OWMyMjcyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJtZngK QEAgLTAsMCArMSBAQAoraW50ZWwtbWVkaWEtc2RrClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJtZngtZGV2ZWwgYi9zcmNwa2dzL2xpYm1meC1kZXZl bApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ZmZjNzA5OWMyMjcy Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJtZngtZGV2ZWwKQEAgLTAsMCArMSBAQAor aW50ZWwtbWVkaWEtc2RrClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9vbmV2cGwtZGV2ZWwgYi9zcmNwa2dzL29uZXZwbC1kZXZlbApuZXcgZmlsZSBtb2Rl IDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi5lMjMwNjUwMGI0ODcxCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9vbmV2cGwtZGV2ZWwKQEAgLTAsMCArMSBAQAorb25ldnBsClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1 LWRldmVsIGIvc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1LWRldmVsCm5ldyBmaWxlIG1vZGUgMTIw MDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjQ3OTIwY2VlY2Y5MTkKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL29uZXZwbC1pbnRlbC1ncHUtZGV2ZWwKQEAgLTAsMCArMSBAQAorb25ldnBsLWlu dGVsLWdwdQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv b25ldnBsLWludGVsLWdwdS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS90ZW1w bGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5mMTRhY2I3Mjhh NTRkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1L3RlbXBsYXRl CkBAIC0wLDAgKzEsMjcgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ29uZXZwbC1pbnRlbC1ncHUn Citwa2duYW1lPW9uZXZwbC1pbnRlbC1ncHUKK3ZlcnNpb249MjIuNi40CityZXZpc2lvbj0xCith cmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0eWxlPWNtYWtlCitjb25maWd1cmVfYXJncz0iLVduby1k ZXYgLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UiCitob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHBr Zy1jb25maWciCittYWtlZGVwZW5kcz0ibGliZHJtLWRldmVsIGxpYnZhLWRldmVsIG9uZXZwbC1k ZXZlbCIKK3Nob3J0X2Rlc2M9IlJ1bnRpbWUgaW1wbGVtZW50YXRpb24gb2Ygb25lVlBMIEFQSSBm b3IgSW50ZWwgR2VuIEdQVXMiCittYWludGFpbmVyPSJ6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PiIKK2xpY2Vuc2U9Ik1JVCIKK2hvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vb25lYXBpLXNy Yy9vbmVWUEwtaW50ZWwtZ3B1IgorY2hhbmdlbG9nPSJodHRwczovL2dpdGh1Yi5jb20vb25lYXBp LXNyYy9vbmVWUEwtaW50ZWwtZ3B1L2Jsb2IvbWFpbi9DSEFOR0VMT0cubWQiCitkaXN0ZmlsZXM9 Imh0dHBzOi8vZ2l0aHViLmNvbS9vbmVhcGktc3JjL29uZVZQTC1pbnRlbC1ncHUvYXJjaGl2ZS9y ZWZzL3RhZ3MvaW50ZWwtb25ldnBsLSR7dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09NzRiMDk3 OWRjYjJhZjFiN2M2OGVkYjhjYmNiMDJkNTM5ZGU1MTEwOTBiMTJmYWM1MDY1MmNiYWNkNzA3YzRl NgorCitwb3N0X2luc3RhbGwoKSB7CisJdmxpY2Vuc2UgTElDRU5TRQorfQorCitvbmV2cGwtaW50 ZWwtZ3B1LWRldmVsX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZp bGVzIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCX0KK30K ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb25ldnBsL3RlbXBsYXRlIGIvc3JjcGtncy9vbmV2cGwvdGVt cGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uODVjN2MyZGE4 NWNlOQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mvb25ldnBsL3RlbXBsYXRlCkBAIC0wLDAg KzEsMzQgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ29uZXZwbCcKK3BrZ25hbWU9b25ldnBsCit2 ZXJzaW9uPTIwMjMuMS4yCityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0eWxl PWNtYWtlCitjb25maWd1cmVfYXJncz0iCisJLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgLVdu by1kZXYKKwktREJVSUxEX1BZVEhPTl9CSU5ESU5HOkJPT0w9J09GRicKKwktREJVSUxEX0VYQU1Q TEVTOkJPT0w9J09GRicKKwktREJVSUxEX1RFU1RTOkJPT0w9J09OJworCS1ESU5TVEFMTF9FWEFN UExFX0NPREU6Qk9PTD0nT0ZGJyIKK2hvc3RtYWtlZGVwZW5kcz0iY21ha2UgbGliWDExIHB5dGhv biB3YXlsYW5kLXByb3RvY29scyBwa2ctY29uZmlnIgorbWFrZWRlcGVuZHM9ImxpYnZhLWRldmVs IGxpYlgxMS1kZXZlbCB3YXlsYW5kLWRldmVsIgorc2hvcnRfZGVzYz0iSW50ZWwgb25lQVBJIFZp ZGVvIFByb2Nlc3NpbmcgbGlicmFyeSIKK21haW50YWluZXI9InpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+IgorbGljZW5zZT0iTUlUIgoraG9tZXBhZ2U9Imh0dHBzOi8vd3d3LmludGVsLmNvbS9j b250ZW50L3d3dy91cy9lbi9kZXZlbG9wZXIvdG9vbHMvb25lYXBpL29uZXZwbC5odG1sIgorZGlz dGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vb25lYXBpLXNyYy9vbmVWUEwvYXJjaGl2ZS92JHt2 ZXJzaW9ufS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09YjIyNjFjY2Ex NzRjZTE4MTVmM2Q0N2M2NDc5MjFhYjE3ZjY4MjY3YzY5YzFlMjQ0NGZmMjdhYWI3ZDE5OWNiYgor Citwb3N0X2luc3RhbGwoKSB7CisJdmxpY2Vuc2UgTElDRU5TRQorfQorCitvbmV2cGwtZGV2ZWxf cGFja2FnZSgpIHsKKwlkZXBlbmRzPSIke21ha2VkZXBlbmRzfSAke3NvdXJjZXBrZ30tJHt2ZXJz aW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9pbmNsdWRlCisJCXZtb3ZlIHVzci9saWIvcGtn Y29uZmlnCisJCXZtb3ZlICJ1c3IvbGliLyouc28iCisJfQorfQoKRnJvbSBlZjU1NTM4ZWMzM2Ez NzJmYmY1ODU3OTU1MTFjZjNmZDRkNDYxY2U1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTYXQsIDggSnVsIDIwMjMgMjA6MjA6 NTkgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwMS8xMTVdIHRyYWNrZXItbWluZXJzOiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3RyYWNrZXItbWluZXJzL3RlbXBsYXRlIGIvc3JjcGtncy90cmFja2Vy LW1pbmVycy90ZW1wbGF0ZQppbmRleCAwYjk3ZjQ3NDg5ZjgxLi5mMTk2ZDJiZjllNGE0IDEwMDY0 NAotLS0gYS9zcmNwa2dzL3RyYWNrZXItbWluZXJzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdHJh Y2tlci1taW5lcnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICd0cmFja2VyLW1pbmVycycKIHBrZ25hbWU9dHJhY2tlci1taW5lcnMKIHZlcnNpb249My42LjEK LXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9oZWxwZXI9 cWVtdQogIyBtaXNzaW5nIGxpYmdyc3MgZm9yIG1pbmVyX3JzcwoKRnJvbSA2ZDAwNzA5ZmU3ZjY4 ODA2MGZlMmVlNDVlZjc3ZDJlM2NhYjM2NTAyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTYXQsIDggSnVsIDIwMjMgMjA6MjE6 MjEgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwMi8xMTVdIG1wZDogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL21wZC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbXBkL3Rl bXBsYXRlIGIvc3JjcGtncy9tcGQvdGVtcGxhdGUKaW5kZXggYWJiZWI0MjNhMTAwMi4uMWJjYTJl ODc3YTM4MCAxMDA2NDQKLS0tIGEvc3JjcGtncy9tcGQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9t cGQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtcGQnCiBw a2duYW1lPW1wZAogdmVyc2lvbj0wLjIzLjE0Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWls ZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1Eb3B1cz1lbmFibGVkIC1EbWlrbW9kPWVu YWJsZWQgLURuZWlnaGJvcj10cnVlCiAgLURzb3VuZGNsb3VkPWVuYWJsZWQgLURwaXBlPXRydWUg LUR0d29sYW1lPWVuYWJsZWQgLURiemlwMj1lbmFibGVkCgpGcm9tIDQ3YjI0Yzk1NzUxNTBmZTRk ZWE2Mzk4ZTI3YTNhZTNlNTY1MzcxZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTcgSnVsIDIwMjMgMTU6Mzc6NDQg LTA0MDAKU3ViamVjdDogW1BBVENIIDEwMy8xMTVdIG1peHh4OiByZXZidW1wIGZvciBmZm1wZWct Ni4wCgotLS0KIHNyY3BrZ3MvbWl4eHgvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21peHh4 L3RlbXBsYXRlIGIvc3JjcGtncy9taXh4eC90ZW1wbGF0ZQppbmRleCAyMzgwMDY3NmJmZDA5Li42 OTIxOTk2ZTRlNzdiIDEwMDY0NAotLS0gYS9zcmNwa2dzL21peHh4L3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvbWl4eHgvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdtaXh4eCcKIHBrZ25hbWU9bWl4eHgKIHZlcnNpb249Mi4zLjMKLXJldmlzaW9uPTUKK3Jldmlz aW9uPTYKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURDTUFLRV9CVUlMRF9U WVBFPVJlbGVhc2UiCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMgcGtnLWNv bmZpZyBwcm90b2J1ZiBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UiCgpGcm9tIGY4ZDkzNmI4MmRh Y2ZjZTY2YzM2NjQ2YjVlOWJmYmI2MDc5YWY1MTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6 MDk6MzYgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwNC8xMTVdIG11c2lrY3ViZTogcmV2YnVtcCBm b3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL211c2lrY3ViZS90ZW1wbGF0ZSB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlIGIvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUK aW5kZXggMWY3OGFkYTE0NTFiNi4uZDllNjE4NmU2Njk3YiAxMDA2NDQKLS0tIGEvc3JjcGtncy9t dXNpa2N1YmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtdXNpa2N1YmUnCiBwa2duYW1lPW11c2lr Y3ViZQogdmVyc2lvbj0zLjAuMAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9 Y21ha2UKIG1ha2VfY21kPW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRE5PX05DVVJTRVNXPTEiCgpG cm9tIDRlMWY4MTRiZTU5OGEzZTcwOTA2ZjE4ZjBhY2M3ZmQ5ZGRjYjhlOTQgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MzAgQXVnIDIwMjMgMDk6MTA6MDIgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwNS8xMTVdIHRnX293 dDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3RnX293dC90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlIGIvc3JjcGtncy90Z19vd3QvdGVtcGxh dGUKaW5kZXggNTBiYzgzMTBiODg1OS4uYzkzMjYyZDVjNWRlNiAxMDA2NDQKLS0tIGEvc3JjcGtn cy90Z19vd3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90Z19vd3QvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0Z19vd3QnCiBwa2duYW1lPXRnX293dAogdmVy c2lvbj0wLjAuMC4yMDIzMDkyMQotcmV2aXNpb249MQorcmV2aXNpb249MgogX2NvbW1pdD0zYmIz ZDc1NzY4MWU2Y2M1MTM1YWVjNjUyOWE3NTNkYzNkY2RjZmI5CiBfbGlieXV2X2NvbW1pdD0wNDgy MWQxZTdkNjA4NDU1MjVlOGRiNTVjN2JjZDQxZWY1YmU5NDA2CiBfYWJzZWlsX2NvbW1pdD04YzBi OTRlNzkzYTY2NDk1ZTBiMWYzNGE1ZWIyNmJkN2RjNjcyZGIwCgpGcm9tIDJiZWE3NzNjZmE4YTQ4 NzE1NDA2YzU2NWNjYTk0NzJhZTdlZjY1NTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6MTA6 NDQgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwNi8xMTVdIHRlbGVncmFtLWRlc2t0b3A6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlIGIvc3JjcGtncy90 ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlCmluZGV4IDI2YTE2N2JlZmQ5ODAuLjViMDkzODYxZTk2 ZTggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICd0ZWxlZ3JhbS1kZXNrdG9wJwogcGtnbmFtZT10ZWxlZ3JhbS1kZXNrdG9w CiB2ZXJzaW9uPTQuMTAuMQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21h a2UKIGJ1aWxkX2hlbHBlcj0icWVtdSBnaXIiCiBjb25maWd1cmVfYXJncz0iLURUREVTS1RPUF9B UElfSUQ9MjA5MjM1CgpGcm9tIDdmZjI5YWZlYzkyMDU2Njg2YTBjODZiMmNhMzRkZmFmNTliZGJm YzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6MTE6MTMgLTA0MDAKU3ViamVjdDogW1BBVENI IDEwNy8xMTVdIG1wdjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21wdi90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbXB2L3RlbXBsYXRlIGIvc3JjcGtncy9tcHYvdGVt cGxhdGUKaW5kZXggOTMzYzIyYmFlMmVkMi4uMzAxYTc3YWQyMjk3MSAxMDA2NDQKLS0tIGEvc3Jj cGtncy9tcHYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tcHYvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtcHYnCiBwa2duYW1lPW1wdgogdmVyc2lvbj0wLjM2 LjAKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVf YXJncz0iLURjZGRhPWVuYWJsZWQgLURkdmJpbj1lbmFibGVkIC1EZHZkbmF2PWVuYWJsZWQKICAt RGxpYm1wdj10cnVlIC1EY3BsdWdpbnM9ZW5hYmxlZAoKRnJvbSBjZjBkMjJkZmVmOWNhNDU2ZTA5 ZWFhMmViZDdmZmE2MGFiY2U2NzgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDMwIEF1ZyAyMDIzIDA5OjExOjQ1IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAxMDgvMTE1XSBnc3QtcGx1Z2lucy1iYWQxOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LXBs dWdpbnMtYmFkMS90ZW1wbGF0ZQppbmRleCAyYmYyZjRiMDY0MmZlLi4wZmFmY2I2NTU1Mzk1IDEw MDY0NAotLS0gYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnZ3N0LXBsdWdpbnMtYmFkMScKIHBrZ25hbWU9Z3N0LXBsdWdpbnMtYmFkMQogdmVy c2lvbj0xLjIyLjUKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX2hlbHBlcj0iZ2lyIgog YnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRHBhY2thZ2Utb3JpZ2luPWh0dHBz Oi8vdm9pZGxpbnV4Lm9yZyAtRGRvYz1kaXNhYmxlZAoKRnJvbSAxYTEzODRjZDEyOWFjNWQxZWI4 MjBlOGQwOTIyYjA4MzEzZDg3YTI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDMwIEF1ZyAyMDIzIDA5OjEyOjA5IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAxMDkvMTE1XSBvcGVubXc6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy9vcGVubXcvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5t dy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCmluZGV4IDBhYmY1ZmY3Y2RiZWMu LmI1NzE4MGYxYTQ0NDYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnb3Blbm13JwogcGtnbmFtZT1vcGVubXcKIHZlcnNpb249MC40OC4wCi1yZXZpc2lvbj0y CityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogX3JlY2FzdF9jb21taXQ9ZTc1YWRmODZm OTFlYjMwODIyMjAwODVlNDJkZGE2MjY3OWY5YTNlYQogX2J1bGxldF90YWc9My4xNwoKRnJvbSBl MzhkZmMzYWY4ZDQ0NjhkN2YwOTQyZWI4MmFmMDZhODc2OTE2YjcwIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDMwIEF1 ZyAyMDIzIDA5OjE0OjUzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMTAvMTE1XSBsbXM6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9sbXMvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xtcy90ZW1wbGF0ZSBiL3NyY3BrZ3MvbG1zL3RlbXBsYXRlCmluZGV4IDM5ZDM0ZjYy OTY1YzguLmViOTFkMmNhMjc1ZjMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbG1zL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvbG1zL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnbG1zJwogcGtnbmFtZT1sbXMKIHZlcnNpb249My40MC4wCi1yZXZpc2lvbj0yCityZXZp c2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgog bWFrZWRlcGVuZHM9Ind0LWRldmVsIGZmbXBlZy1kZXZlbCBib29zdC1kZXZlbCBsaWJjb25maWcr Ky1kZXZlbCB0YWdsaWItZGV2ZWwgcGFtLWRldmVsIGxpYmdyYXBoaWNzbWFnaWNrLWRldmVsIGd0 ZXN0LWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwiCgpGcm9tIDQxYTUwNTllZmI5NTJlOTlhNDEwZjY2 MGNjMjIxY2NlY2EzZWNmN2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6MTU6MTQgLTA0MDAK U3ViamVjdDogW1BBVENIIDExMS8xMTVdIG9wZW5pbWFnZWlvOiByZXZidW1wIGZvciBmZm1wZWct Ni4wCgotLS0KIHNyY3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L29wZW5pbWFnZWlvL3RlbXBsYXRlIGIvc3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1wbGF0ZQppbmRl eCBkOGE2YmE1NmVmZDExLi5kN2FkNzk1NjNhMmFmIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5p bWFnZWlvL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVuaW1hZ2VpbycKIHBrZ25hbWU9b3Bl bmltYWdlaW8KIHZlcnNpb249Mi40LjkuMAotcmV2aXNpb249NgorcmV2aXNpb249NwogYnVpbGRf c3R5bGU9Y21ha2UKIGJ1aWxkX2hlbHBlcj1xZW11CiBjb25maWd1cmVfYXJncz0iLURVU0VfUVQ9 MCAtRFVTRV9QWVRIT049MCAtRE9JSU9fQlVJTERfVEVTVFM9MAoKRnJvbSBkMThhNThiNjNmMGMw M2IzYmJmNmRkMzJiNDU5NTY2ZDJiZDM1MjRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDMwIEF1ZyAyMDIzIDA5OjE4 OjE4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMTIvMTE1XSBmcmVlY2FkOiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZnJlZWNhZC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZnJlZWNhZC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZnJlZWNhZC90ZW1wbGF0ZQppbmRleCBjMTM1 NzAxZTM4YjlhLi43MDU0OTllOTk3MmE2IDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZyZWVjYWQvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnZnJlZWNhZCcKIHBrZ25hbWU9ZnJlZWNhZAogdmVyc2lvbj0wLjIw LjIKLXJldmlzaW9uPTcKK3JldmlzaW9uPTgKIGJ1aWxkX3dya3NyYz0iRnJlZUNBRC0ke3ZlcnNp b259IgogYnVpbGRfc3R5bGU9Y21ha2UKIHB5Y29tcGlsZV9kaXJzPSJ1c3IvbGliLyR7cGtnbmFt ZX0vTW9kIgoKRnJvbSA3YWJjYjIyN2U1NWY2MTBiZTg0MWIzMzY3MjlhNGYxZDgxNTExNThiIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBTdW4sIDE1IE9jdCAyMDIzIDIxOjQwOjM5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMTMv MTE1XSBvYnM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9vYnMvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL29icy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb2JzL3RlbXBsYXRl CmluZGV4IGI0M2IxMGVmOTM1ZTkuLjVkMWQ1ZTg4NzQwOWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv b2JzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb2JzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnb2JzJwogcGtnbmFtZT1vYnMKIHZlcnNpb249MjkuMS4zCi1y ZXZpc2lvbj0yCityZXZpc2lvbj0zCiBhcmNocz0iaTY4NiogeDg2XzY0KiBwcGM2NGxlKiBhYXJj aDY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURPQlNfVkVSU0lPTl9P VkVSUklERT0ke3ZlcnNpb259IC1ERU5BQkxFX0pBQ0s9T04KCkZyb20gYjFhNTI0YzRhMGEyMmJj YTg3ZjE1OTZiMjU4OTY5OGUzNDJmODZjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAxNSBPY3QgMjAyMyAyMTo0Njo0 NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTE0LzExNV0gbWx0NzogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL21sdDcvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21sdDcv dGVtcGxhdGUgYi9zcmNwa2dzL21sdDcvdGVtcGxhdGUKaW5kZXggNzc1NzlmYmY2YjYzNC4uMGEy YTI3MDI1NDRmZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9tbHQ3L3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvbWx0Ny90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21s dDcnCiBwa2duYW1lPW1sdDcKIHZlcnNpb249Ny4xNC4wCi1yZXZpc2lvbj0yCityZXZpc2lvbj0z CiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EU1dJR19QWVRIT049T04iCiBo b3N0bWFrZWRlcGVuZHM9ImRveHlnZW4gcGtnLWNvbmZpZyBsYWRzcGEtc2RrIHN3aWcgcHl0aG9u MyB3aGljaAoKRnJvbSBhZDQ5ODhlODFlZGNlNTdiNTM2NGM4ZThjZWQ0NmM0ZWY0OTgxZjcyIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBTdW4sIDE1IE9jdCAyMDIzIDIxOjQ3OjE4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMTUv MTE1XSBsaWJvcGVuc2hvdDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2xp Ym9wZW5zaG90L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0 ZSBiL3NyY3BrZ3MvbGlib3BlbnNob3QvdGVtcGxhdGUKaW5kZXggOGU1N2M1ZjU5MjE2OS4uN2E4 ZjQ1MjBlNzg5MiAxMDA2NDQKLS0tIGEvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnbGlib3BlbnNob3QnCiBwa2duYW1lPWxpYm9wZW5zaG90CiB2ZXJzaW9uPTAu My4wCi1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1jbWFrZQogIyBCdWlsZHMg ZmFpbCB3aXRoIFJ1YnktMi40LjEKIGNvbmZpZ3VyZV9hcmdzPSItREVOQUJMRV9SVUJZPU9GRiAt RFVTRV9TWVNURU1fSlNPTkNQUD1PTiIK --===============7015502034252233214==--