From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 12862 invoked from network); 30 Aug 2023 13:18:56 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 30 Aug 2023 13:18:56 -0000 Content-Type: multipart/mixed; boundary="===============5700558282248833895==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_ffmpeg6_split?= To: ml@inbox.vuxu.org From: zlice Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Wed, 30 Aug 2023 15:18:55 +0200 List-Id: Message-ID: <20230830131855.VjlOBHrHdeofRAQbmyP5PGx8gSK0t5oZeBjMjGMKwmc@z> GitHub notification mails are now in MIME to allow UTF8. --===============5700558282248833895== 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 --===============5700558282248833895== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSAwYTNhOWU2MzNjYmU3ZGYxYjNlYjAxZGIyODQxYmVjMWFiMDcyM2MyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDE5OjU1OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTE1XSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI2ICsrKysrLS0tCiBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoICAgICAgICAgICAgfCA2MCAtLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAxOCAtLS0tLS0KIC4uLmgtbGliYXZj b2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZiB8IDQwIC0tLS0tLS0tLS0tLS0KIC4u Li93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8IDI4IC0tLS0tLS0t LQogc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgMzggKysr KysrLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDE3MyBkZWxldGlv bnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBh dGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12NXRlbC1m bG9hdGluZy1wb2ludC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3Bh dGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJl YWRlb24tdmFhcGktYnVnLnBhdGNoCgpkaWZmIC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2NvbW1v bi9zaGxpYnMKaW5kZXggNjE2Nzg1YmRiNDc3OC4uZTE0OTY2NzEzOGNiZCAxMDA2NDQKLS0tIGEv Y29tbW9uL3NobGlicworKysgYi9jb21tb24vc2hsaWJzCkBAIC0zODYsMTUgKzM4NiwyMyBAQCBs aWJpZDN0YWcuc28uMCBsaWJpZDN0YWctMC4xNS4xYl8xCiBsaWJnaWYuc28uNyBnaWZsaWItNS4x LjBfMQogbGliSW1saWIyLnNvLjEgaW1saWIyLTEuNC4yXzEKIGxpYm1wM2xhbWUuc28uMCBsYW1l LTMuOTguMl8xCi1saWJhdmRldmljZS5zby41OCBsaWJhdmRldmljZS00LjBfMQotbGliYXZmb3Jt YXQuc28uNTggbGliYXZmb3JtYXQtNC4wXzEKLWxpYnN3c2NhbGUuc28uNSBsaWJzd3NjYWxlLTQu MF8xCi1saWJzd3Jlc2FtcGxlLnNvLjMgbGlic3dyZXNhbXBsZS00LjBfMQotbGliYXZyZXNhbXBs ZS5zby40IGxpYmF2cmVzYW1wbGUtNC4wXzEKLWxpYnBvc3Rwcm9jLnNvLjU1IGxpYnBvc3Rwcm9j LTQuMF8xCi1saWJhdmNvZGVjLnNvLjU4IGxpYmF2Y29kZWMtNC4wXzEKLWxpYmF2dXRpbC5zby41 NiBsaWJhdnV0aWwtNC4wXzEKLWxpYmF2ZmlsdGVyLnNvLjcgbGliYXZmaWx0ZXItNC4wXzEKK2xp YmF2ZGV2aWNlLnNvLjYwIGxpYmF2ZGV2aWNlLTYuMF8xCitsaWJhdmZvcm1hdC5zby42MCBsaWJh dmZvcm1hdC02LjBfMQorbGlic3dzY2FsZS5zby43IGxpYnN3c2NhbGUtNi4wXzEKK2xpYnN3cmVz YW1wbGUuc28uNCBsaWJzd3Jlc2FtcGxlLTYuMF8xCitsaWJwb3N0cHJvYy5zby41NyBsaWJwb3N0 cHJvYy02LjBfMQorbGliYXZjb2RlYy5zby42MCBsaWJhdmNvZGVjLTYuMF8xCitsaWJhdnV0aWwu c28uNTggbGliYXZ1dGlsLTYuMF8xCitsaWJhdmZpbHRlci5zby45IGxpYmF2ZmlsdGVyLTYuMF8x CitsaWJhdmRldmljZS5zby41OCBsaWJhdmRldmljZTQtNC4wXzEKK2xpYmF2Zm9ybWF0LnNvLjU4 IGxpYmF2Zm9ybWF0NC00LjBfMQorbGlic3dzY2FsZS5zby41IGxpYnN3c2NhbGU0LTQuMF8xCits aWJzd3Jlc2FtcGxlLnNvLjMgbGlic3dyZXNhbXBsZTQtNC4wXzEKK2xpYmF2cmVzYW1wbGUuc28u NCBsaWJhdnJlc2FtcGxlNC00LjBfMQorbGlicG9zdHByb2Muc28uNTUgbGlicG9zdHByb2M0LTQu MF8xCitsaWJhdmNvZGVjLnNvLjU4IGxpYmF2Y29kZWM0LTQuMF8xCitsaWJhdnV0aWwuc28uNTYg bGliYXZ1dGlsNC00LjBfMQorbGliYXZmaWx0ZXIuc28uNyBsaWJhdmZpbHRlcjQtNC4wXzEKIGxp YlNETC0xLjIuc28uMCBTREwtMS4yLjE0XzEKIGxpYlNETF9pbWFnZS0xLjIuc28uMCBTRExfaW1h Z2UtMS4yLjEwXzEKIGxpYngyNjQuc28uMTU3IHgyNjQtMjAxOTA1MDcuMjI0NV8xCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBhdGNoIGIvc3JjcGtncy9mZm1wZWcv ZmlsZXMvYWx0aXZlYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM1NzIw MDQ2MzMyMC4uMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotcmV2ZXJ0IHNvbWUgYWx0aXZl YyBzcGVjaWZpYyBjaGFuZ2Ugb24gYWxsIHBwYyogZXhjZXB0IHBwYzY0bGUqCi0KLXE2NjogIldl IHNob3VsZCBhbHNvIHRocm93IGluIGEgcmV2ZXJ0IG9mIEZGbXBlZy9GRm1wZWdAM2E1NTdjNSBi dXQgb25seQotY29uZGl0aW9uYWxseSwgZm9yIHBwYyogYnV0IG5vdCBwcGM2NGxlKiAodGhlIG5l dyBjb2RlIGlzIHZhbGlkIGZvcgotUE9XRVI4IFZTWCB3aGljaCBMRSB0YXJnZXRzIGFzIGEgYmFz ZWxpbmUgYnV0IG5vdCBCRSkiCi0KLQotVGhpcyByZXZlcnRzIGNvbW1pdCAzYTU1N2M1ZDg4Yjdi MTViNTk1NGJhMjc0M2ZlYmIwNTU1NDliNTM2LgotLS0tCi0gbGlic3dzY2FsZS9wcGMveXV2MnJn Yl9hbHRpdmVjLmMgfCAyNCArKysrKysrKysrKysrKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdl ZCwgMjAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYnN3 c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jIGIvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRp dmVjLmMKLWluZGV4IDUzNjU0NTI5M2QuLmMxZTI4NTJhZGIgMTAwNjQ0Ci0tLS0gYS9saWJzd3Nj YWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYwotKysrIGIvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9h bHRpdmVjLmMKLUBAIC0zMDUsNiArMzA1LDkgQEAgc3RhdGljIGludCBhbHRpdmVjXyAjIyBuYW1l KFN3c0NvbnRleHQgKmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAgICAgXAotICAg ICB2ZWN0b3Igc2lnbmVkIHNob3J0IFIxLCBHMSwgQjE7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgUiwgRywgQjsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgICBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqeTFpdlAsICp5 Mml2UCwgKnVpdlAsICp2aXZQOyAgICAgICAgICAgICAgICAgIFwKLSsgICAgdmVjdG9yIHVuc2ln bmVkIGNoYXIgYWxpZ25fcGVybTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0 IGxDWSAgICAgICA9IGMtPkNZOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBsT1kgICAgICAgPSBjLT5PWTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciBzaWduZWQgc2hvcnQgbENSViAg ICAgID0gYy0+Q1JWOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTMz NSwxMyArMzM4LDI2IEBAIHN0YXRpYyBpbnQgYWx0aXZlY18gIyMgbmFtZShTd3NDb250ZXh0ICpj LCBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW4sICAgICAgICAgIFwKLSAgICAgICAgIHZlY19kc3Rz dChvdXRlLCAoMHgwMjAwMDAwMiB8ICgoKHcgKiAzICsgMzIpIC8gMzIpIDw8IDE2KSksIDEpOyAg ICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgZm9yIChqID0gMDsgaiA8 IHcgLyAxNjsgaisrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LS0gICAgICAgICAgICB5MCA9IHZlY194bCgwLCB5MWkpOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgeTFpdlAgPSAoY29uc3QgdmVj dG9yIHVuc2lnbmVkIGNoYXIgKikgeTFpOyAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAg ICAgICAgIHkyaXZQID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHkyaTsgICAgICAg ICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB1aXZQICA9IChjb25zdCB2ZWN0b3IgdW5z aWduZWQgY2hhciAqKSB1aTsgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAg dml2UCAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgdmk7ICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICBhbGlnbl9w ZXJtID0gdmVjX2x2c2woMCwgeTFpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICAgICAgICAgICAgeTAgPSAodmVjdG9yIHVuc2lnbmVkIGNoYXIpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgIHZlY19w ZXJtKHkxaXZQWzBdLCB5MWl2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgeTEgPSB2ZWNfeGwoMCwgeTJpKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAg ICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB5MmkpOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB5MSA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcikg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAg ICAgICAgdmVjX3Blcm0oeTJpdlBbMF0sIHkyaXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAg ICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICB1ID0gKHZlY3Rv ciBzaWduZWQgY2hhcikgdmVjX3hsKDAsIHVpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHVpKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHUgPSAodmVjdG9yIHNpZ25l ZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAg ICAgICAgICAgICAgICAgIHZlY19wZXJtKHVpdlBbMF0sIHVpdlBbMV0sIGFsaWduX3Blcm0pOyAg ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAg IHYgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdmkpOyAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgdmkpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgdiA9ICh2 ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKyAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odml2UFswXSwgdml2UFsxXSwgYWxp Z25fcGVybSk7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgdmVjX3N1Yih1LCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0tIAotMi4y Ny4wCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRp bmctcG9pbnQucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5n LXBvaW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTU1MTc4Yzc0ZjBm Li4wMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxv YXRpbmctcG9pbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0tLS0gYS9s aWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTAtMjYgMjE6MDM6MDMuMDAwMDAwMDAwICsw MjAwCi0rKysgYi9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTEtMjEgMTE6MDY6NDku NjAyMjg0NDIyICswMTAwCi1AQCAtMzksNiArMzksMTUgQEAKLSAjZW5kaWYKLSAjaW5jbHVkZSA8 ZmVudi5oPgotIAotKyNpZiAoRkVfQUxMX0VYQ0VQVCA9PSAwKQotKy8qIEUuZy4gQVJNIHNvZnQg ZmxvYXQgZG9lcyBub3QgZGVmaW5lIHRoZXNlICovCi0rI2RlZmluZSBGRV9JTlZBTElEICAgIDAK LSsjZGVmaW5lIEZFX0RJVkJZWkVSTyAgMAotKyNkZWZpbmUgRkVfT1ZFUkZMT1cgICAwCi0rI2Rl ZmluZSBGRV9VTkRFUkZMT1cgIDAKLSsjZGVmaW5lIEZFX0lORVhBQ1QgICAgMAotKyNlbmRpZgot KwotICNpZiBDT05GSUdfTElCRk9OVENPTkZJRwotICNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRj b25maWcuaD4KLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvcGF0 Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZiBiL3NyY3BrZ3MvZmZt cGVnL3BhdGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlm ZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE5NDhmN2E4YTJkZi4uMDAwMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3BhdGNoLWxpYmF2Y29kZWMtbGlic3Z0 YXYxLXRlbl9iaXRfZm9ybWF0LmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0j PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgRnJvbSAwMzFmMTU2 MWNkMjg2NTk2Y2RiMzc0ZGEzMmY4YWE4MTZjZTNiMTM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotIyBGcm9tOiBDaHJpc3RvcGhlciBEZWdhd2EgPGNocmlzdG9waGVyLmRlZ2F3YUBpbnRlbC5j b20+Ci0jIERhdGU6IFRodSwgMjAgT2N0IDIwMjIgMjI6NTU6MjcgLTA1MDAKLSMgU3ViamVjdDog W1BBVENIXSBhdmNvZGVjL2xpYnN2dGF2MTogcmVtb3ZlIGNvbXByZXNzZWRfdGVuX2JpdF9mb3Jt YXQgYW5kIHNpbXBsaWZ5IGFsbG9jX2J1ZmZlcgotIwotIyBjb21wcmVzc2VkX3Rlbl9iaXRfZm9y bWF0IGhhcyBiZWVuIGRlcHJlY2F0ZWQgdXBzdHJlYW0gYW5kIGhhcyBubyBlZmZlY3QKLSMgYW5k IGNhbiBiZSByZW1vdmVkLiBQbHVzLCB0ZWNobmljYWxseSBpdCB3YXMgbmV2ZXIgdXNlZCBpbiB0 aGUgZmlyc3QgcGxhY2UKLSMgc2luY2UgaXQgd291bGQgcmVxdWlyZSB0aGUgYXBwIChmZm1wZWcp IHRvIHNldCBpdCBhbmQgZG8gYWRkaXRpb25hbAotIyBwcm9jZXNzaW5nIG9mIHRoZSBpbnB1dCBm cmFtZXMuCi0jCi0jIEFsc28gc2ltcGxpZnkgYWxsb2NfYnVmZmVyIGJ5IHJlbW92aW5nIGNhbGN1 bGF0aW9ucyByZWxhdGluZyB0byB0aGUgbm9uLWV4aXN0YW50IHByb2Nlc3NpbmcuCi0jCi0jIFNp Z25lZC1vZmYtYnk6IENocmlzdG9waGVyIERlZ2F3YSA8Y2hyaXN0b3BoZXIuZGVnYXdhQGludGVs LmNvbT4KLSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEv bGliYXZjb2RlYy9saWJzdnRhdjEuYwotKysrIGIvbGliYXZjb2RlYy9saWJzdnRhdjEuYwotQEAg LTEyNCwxNiArMTI0LDEyIEBAIHN0YXRpYyBpbnQgc3Z0X3ByaW50X2Vycm9yKHZvaWQgKmxvZ19j dHgsIEViRXJyb3JUeXBlIGVyciwKLSAKLSBzdGF0aWMgaW50IGFsbG9jX2J1ZmZlcihFYlN2dEF2 MUVuY0NvbmZpZ3VyYXRpb24gKmNvbmZpZywgU3Z0Q29udGV4dCAqc3Z0X2VuYykKLSB7Ci0tICAg IGNvbnN0IGludCAgICBwYWNrX21vZGVfMTBiaXQgPQotLSAgICAgICAgKGNvbmZpZy0+ZW5jb2Rl cl9iaXRfZGVwdGggPiA4KSAmJiAoY29uZmlnLT5jb21wcmVzc2VkX3Rlbl9iaXRfZm9ybWF0ID09 IDApID8gMSA6IDA7Ci0tICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemVfOGJpdCAgPQotLSAgICAg ICAgY29uZmlnLT5zb3VyY2Vfd2lkdGggKiBjb25maWctPnNvdXJjZV9oZWlnaHQgKiAoMSA8PCBw YWNrX21vZGVfMTBiaXQpOwotLSAgICBjb25zdCBzaXplX3QgbHVtYV9zaXplXzEwYml0ID0KLS0g ICAgICAgIChjb25maWctPmVuY29kZXJfYml0X2RlcHRoID4gOCAmJiBwYWNrX21vZGVfMTBiaXQg PT0gMCkgPyBsdW1hX3NpemVfOGJpdCA6IDA7Ci0rICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemUg PSBjb25maWctPnNvdXJjZV93aWR0aCAqIGNvbmZpZy0+c291cmNlX2hlaWdodCAqCi0rICAgICAg ICAoY29uZmlnLT5lbmNvZGVyX2JpdF9kZXB0aCA+IDggPyAyIDogMSk7Ci0gCi0gICAgIEViU3Z0 SU9Gb3JtYXQgKmluX2RhdGE7Ci0gCi0tICAgIHN2dF9lbmMtPnJhd19zaXplID0gKGx1bWFfc2l6 ZV84Yml0ICsgbHVtYV9zaXplXzEwYml0KSAqIDMgLyAyOwotKyAgICBzdnRfZW5jLT5yYXdfc2l6 ZSA9IGx1bWFfc2l6ZSAqIDMgLyAyOwotIAotICAgICAvLyBhbGxvY2F0ZSBidWZmZXIgZm9yIGlu IGFuZCBvdXQKLSAgICAgc3Z0X2VuYy0+aW5fYnVmICAgICAgICAgICA9IGF2X21hbGxvY3ooc2l6 ZW9mKCpzdnRfZW5jLT5pbl9idWYpKTsKLS0tIAotR2l0TGFiCi0KZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNo IGIvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1i dWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwZTNmNjhhNDE1YjguLjAw MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2Et cmVhZGVvbi12YWFwaS1idWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1G cm9tIDgxMWQyOTA4NDQyMDZmYzczZGMzOWMzZTViNjdkNWQ4OTViYWVkZjggTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCi1Gcm9tOiBSYWluZXIgSG9jaGVja2VyIDxmZXJuZXRtZW50YUBvbmxpbmUu ZGU+Ci1EYXRlOiBTYXQsIDI2IEphbiAyMDE5IDE5OjQ4OjM1ICswMTAwCi1TdWJqZWN0OiBbUEFU Q0hdIGF2Y29kZWMvdmFhcGlfaDI2NDogc2tpcCBkZWNvZGUgaWYgcGljIGhhcyBubyBzbGljZXMK LQotVGhpcyBmaXhlcyAvIHdvcmthcm91bmRzIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcv c2hvd19idWcuY2dpP2lkPTEwNTM2OC4KLUl0IHdhcyBoaXQgZnJlcXVlbnRseSB3aGVuIHdhdGNo aW5nIGgyNjQgY2hhbm5lbHMgcmVjZWl2ZWQgdmlhIERWQi1YLgotQ29ycmVzcG9uZGluZyBrb2Rp IGJ1ZzogaHR0cHM6Ly9naXRodWIuY29tL3hibWMveGJtYy9pc3N1ZXMvMTU3MDQKLS0tLQotIGxp YmF2Y29kZWMvdmFhcGlfaDI2NC5jIHwgNSArKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2Vy dGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jIGIvbGliYXZj b2RlYy92YWFwaV9oMjY0LmMKLWluZGV4IDU4NTQ1ODdhMjU1Li5mMTJmZGM0NTdhNCAxMDA2NDQK LS0tLSBhL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jCi0rKysgYi9saWJhdmNvZGVjL3ZhYXBpX2gy NjQuYwotQEAgLTMxNyw2ICszMTcsMTEgQEAgc3RhdGljIGludCB2YWFwaV9oMjY0X2VuZF9mcmFt ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgpCi0gICAgIEgyNjRTbGljZUNvbnRleHQgKnNsID0gJmgt PnNsaWNlX2N0eFswXTsKLSAgICAgaW50IHJldDsKLSAKLSsgICAgaWYgKHBpYy0+bmJfc2xpY2Vz ID09IDApIHsKLSsgICAgICAgIHJldCA9IEFWRVJST1JfSU5WQUxJRERBVEE7Ci0rICAgICAgICBn b3RvIGZpbmlzaDsKLSsgICAgfQotKwotICAgICByZXQgPSBmZl92YWFwaV9kZWNvZGVfaXNzdWUo YXZjdHgsIHBpYyk7Ci0gICAgIGlmIChyZXQgPCAwKQotICAgICAgICAgZ290byBmaW5pc2g7CmRp ZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZy90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVnL3RlbXBs YXRlCmluZGV4IGFlMjY0OTZlNzkyOTMuLmMxZjliN2VmZTQwZTMgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvZmZtcGVnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmZtcGVnL3RlbXBsYXRlCkBAIC0xLDE1 ICsxLDE1IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWcnCiAjIGF1ZGFjaXR5IGFsc28g bmVlZHMgdG8gYmUgYnVtcGVkIHdoZW4gYSBuZXcgZmZtcGVnIHZlcnNpb24gYnVtcHMgbGliYXZm b3JtYXQncyBzb25hbWUhCiBwa2duYW1lPWZmbXBlZwotdmVyc2lvbj00LjQuNAotcmV2aXNpb249 MgordmVyc2lvbj02LjAKK3JldmlzaW9uPTEKIHNob3J0X2Rlc2M9IkRlY29kaW5nLCBlbmNvZGlu ZyBhbmQgc3RyZWFtaW5nIHNvZnR3YXJlIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2 b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0 cHM6Ly93d3cuZmZtcGVnLm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNv bnRlbnQuY29tL0ZGbXBlZy9GRm1wZWcvbWFzdGVyL0NoYW5nZWxvZyIKIGRpc3RmaWxlcz0iaHR0 cHM6Ly93d3cuZmZtcGVnLm9yZy9yZWxlYXNlcy9mZm1wZWctJHt2ZXJzaW9ufS50YXIueHoiCi1j aGVja3N1bT1lODBiMzgwZDU5NWM4MDkwNjBmNjZmOTZhNWQ4NDk1MTFlZjRhNzZhMjZiNzZlYWNm NTc3OGI5NGMzNTcwMzA5CitjaGVja3N1bT01N2JlODdjMjJkOWI0OWMxMTJiNmQyNGJjNjdkNDI1 MDg2NjBlNmI3MThiM2RiODljNDRlNDdlMjg5MTM3MDgyCiAKIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyBwZXJsIgogbWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5 cGUtZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGliWGZpeGVzLWRldmVsCkBAIC0yNiwxMiArMjYsMTMg QEAgbWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgYWxz YS1saWItZGV2ZWwgbGliWGZpeGVzLWRldmUKICAkKHZvcHRfaWYgd2VicCBsaWJ3ZWJwLWRldmVs KSAkKHZvcHRfaWYgc29mYSBsaWJteXNvZmEtZGV2ZWwpCiAgJCh2b3B0X2lmIGRybSBsaWJkcm0t ZGV2ZWwpICQodm9wdF9pZiBzdnRhdjEgbGlic3Z0LWF2MS1kZXZlbCkKICAkKHZvcHRfaWYgc3J0 IHNydC1kZXZlbCkgJCh2b3B0X2lmIHJpc3QgbGlicmlzdC1kZXZlbCkKLSAkKHZvcHRfaWYgdnVs a2FuICd2dWxrYW4tbG9hZGVyIFZ1bGthbi1IZWFkZXJzJykKKyAkKHZvcHRfaWYgdnVsa2FuICd2 dWxrYW4tbG9hZGVyIFZ1bGthbi1IZWFkZXJzIFZ1bGthbi1Ub29scyBWdWxrYW4tVmFsaWRhdGlv bkxheWVycycpCisgJCh2b3B0X2lmIG9uZXZwbCAnb25ldnBsIG9uZXZwbC1kZXZlbCcpCiAgJCh2 b3B0X2lmIG52ZW5jIG52LWNvZGVjLWhlYWRlcnMpICQodm9wdF9pZiBudmRlYyBudi1jb2RlYy1o ZWFkZXJzKSIKIGRlcGVuZHM9ImZmcGxheT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAogYnVp bGRfb3B0aW9ucz0ieDI2NSB2NGwyIHZhYXBpIHZkcGF1IHZweCBmZGtfYWFjIGFvbSBudmVuYyBz bmRpbyBwdWxzZWF1ZGlvCi0gZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEg c3J0IHJpc3QgbnZkZWMiCisgZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEg c3J0IHJpc3QgbnZkZWMgb25ldnBsIgogYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJ4MjY1IHY0bDIg dnB4IGFvbSBzbmRpbyBwdWxzZWF1ZGlvIGRhdjFkIHdlYnAgdnVsa2FuIGRybSBzcnQgcmlzdCIK IGRlc2Nfb3B0aW9uX3NydD0iRW5hYmxlIHN1cHBvcnQgZm9yIFNSVCAoU2VjdXJlLCBSZWxpYWJs ZSwgVHJhbnNwb3J0KSIKIGRlc2Nfb3B0aW9uX3Jpc3Q9IkVuYWJsZSBzdXBwb3J0IGZvciBSSVNU IChSZWxpYWJsZSBJbnRlcm5ldCBTdHJlYW0gVHJhbnNwb3J0KSIKQEAgLTM5LDkgKzQwLDEzIEBA IGRlc2Nfb3B0aW9uX3NvZmE9IkVuYWJsZSBzdXBwb3J0IGZvciBBRVMgU09GQSIKIGRlc2Nfb3B0 aW9uX3dlYnA9IkVuYWJsZSBzdXBwb3J0IGZvciBXZWJQIgogCiBjYXNlICIkWEJQU19UQVJHRVRf TUFDSElORSIgaW4KLQlpNjg2Knx4ODZfNjQqKQotCQlob3N0bWFrZWRlcGVuZHMrPSIgbmFzbSIK KwlpNjg2KikKIAkJYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5jIG52 ZGVjIgorCQlob3N0bWFrZWRlcGVuZHMrPSIgbmFzbSIKKwkJOzsKKwl4ODZfNjQqKQorCQlob3N0 bWFrZWRlcGVuZHMrPSIgbmFzbSIKKwkJYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZk cGF1IG52ZW5jIG52ZGVjIG9uZXZwbCIKIAkJOzsKIAlwcGM2NCopIGJ1aWxkX29wdGlvbnNfZGVm YXVsdCs9IiB2YWFwaSB2ZHBhdSI7OwogCW1pcHMqKSBDRkxBR1M9Ii1tbmFuPWxlZ2FjeSI7OwpA QCAtMTE1LDE4ICsxMjAsMTkgQEAgZG9fY29uZmlndXJlKCkgewogCQkkKHZvcHRfZW5hYmxlIHgy NjUgbGlieDI2NSkgXAogCQkkKHZvcHRfZW5hYmxlIHY0bDIgbGlidjRsMikgXAogCQkkKHZvcHRf ZW5hYmxlIGFvbSBsaWJhb20pICQodm9wdF9lbmFibGUgdmFhcGkpICQodm9wdF9lbmFibGUgdmRw YXUpIFwKLQkJLS1lbmFibGUtbGliYnMyYiAtLWVuYWJsZS1hdnJlc2FtcGxlIC0tZW5hYmxlLWxp YnZpZHN0YWIgXAorCQktLWVuYWJsZS1saWJiczJiIC0tZW5hYmxlLWxpYnZpZHN0YWIgXAogCQkk KHZvcHRfZW5hYmxlIGRhdjFkIGxpYmRhdjFkKSBcCiAJCSQodm9wdF9lbmFibGUgemltZyBsaWJ6 aW1nKSBcCiAJCSQodm9wdF9lbmFibGUgd2VicCBsaWJ3ZWJwKSBcCiAJCSQodm9wdF9lbmFibGUg c29mYSBsaWJteXNvZmEpIFwKIAkJJCh2b3B0X2VuYWJsZSB2dWxrYW4pIFwKKwkJJCh2b3B0X2Vu YWJsZSBvbmV2cGwgbGlidnBsKSBcCiAJCSQodm9wdF9lbmFibGUgZHJtIGxpYmRybSkgXAogCQkk KHZvcHRfZW5hYmxlIHN2dGF2MSBsaWJzdnRhdjEpIFwKIAkJJCh2b3B0X2VuYWJsZSBzcnQgbGli c3J0KSBcCiAJCSQodm9wdF9lbmFibGUgcmlzdCBsaWJyaXN0KSBcCi0JCSQodm9wdF9pZiBudmVu YyAnLS1lbmFibGUtbnZlbmMnKSBcCi0JCSQodm9wdF9pZiBudmRlYyAnLS1lbmFibGUtbnZkZWMn KQorCQkkKHZvcHRfZW5hYmxlIG52ZW5jIG52ZW5jKSBcCisJCSQodm9wdF9lbmFibGUgbnZkZWMg bnZkZWMpCiB9CiAKIGRvX2J1aWxkKCkgewpAQCAtMTUzLDEwICsxNTksOCBAQCBsaWJhdmRldmlj ZV9wYWNrYWdlKCkgewogfQogCiBsaWJhdnJlc2FtcGxlX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVz Yz0iRkZtcGVnIGF1ZGlvIHJlc2FtcGxpbmcgbGlicmFyeSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJ dm1vdmUgInVzci9saWIvbGliYXZyZXNhbXBsZS5zby4qIgotCX0KKwlzaG9ydF9kZXNjPSJQYWNr YWdlIGRlcHJlY2F0ZWQsIHJlbW92YWwgbmVlZGVkIgorCWJ1aWxkX3N0eWxlPW1ldGEKIH0KIAog bGliYXZmb3JtYXRfcGFja2FnZSgpIHsKQEAgLTIxMCwxNSArMjE0LDEzIEBAIGZmbXBlZy1kZXZl bF9wYWNrYWdlKCkgewogCQlsaWJhdmZpbHRlcj49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQogCQls aWJwb3N0cHJvYz49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQogCQlsaWJzd3NjYWxlPj0ke3ZlcnNp b259XyR7cmV2aXNpb259Ci0JCWxpYnN3cmVzYW1wbGU+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0K LQkJbGliYXZyZXNhbXBsZT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwkJbGlic3dyZXNhbXBs ZT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQg ZmlsZXMiCi0KKwljb25mbGljdHM9ImZmbXBlZzQtZGV2ZWwiCiAJaWYgWyAiJFhCUFNfVEFSR0VU X01BQ0hJTkUiID0gImk2ODYiIF07IHRoZW4KIAkJIyAvdXNyL2Jpbi9zdHJpcDogZXJyb3I6IHRo ZSBpbnB1dCBmaWxlICcvZGVzdGRpci8vZmZtcGVnLWRldmVsLTQuNC40L3Vzci9saWIvbGliYXZm aWx0ZXIuYSh2Zl9hdGFkZW5vaXNlLm8pJyBoYXMgbm8gc2VjdGlvbnMKIAkJbm9zdHJpcF9maWxl cz0iL3Vzci9saWIvbGliYXZmaWx0ZXIuYSIKIAlmaQotCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZt b3ZlIHVzci9pbmNsdWRlCiAJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCgpGcm9tIDUzZDk2ZDc1 MmI2M2E5YmRiNThlNmVkM2VmYjY2N2FiMTc5ZDc0NDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MTk6NTY6MjIgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwMi8xMTVdIE5ldyBwYWNrYWdlOiBmZm1w ZWc0LTQuNC40LgoKLS0tCiBzcmNwa2dzL2ZmbXBlZzQtZGV2ZWwgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2ggICAgICAg ICAgIHwgIDYwICsrKysrCiAuLi4vcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRj aCAgICAgfCAgMTggKysKIC4uLmgtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQu ZGlmZiB8ICA0MCArKysKIC4uLi93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0 Y2ggICB8ICAyOCArKwogc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRlICAgICAgICAgICAgICAgICAg ICAgIHwgMjQwICsrKysrKysrKysrKysrKysrKwogc3JjcGtncy9saWJhdmNvZGVjNCAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZkZXZpY2U0ICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2ZmlsdGVyNCAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJhdmZvcm1hdDQgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZyZXNhbXBsZTQgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2dXRpbDQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJwb3N0cHJvYzQgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGlic3dyZXNhbXBsZTQgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYnN3c2NhbGU0ICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDEgKwogMTUgZmlsZXMgY2hhbmdlZCwgMzk2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEyMDAwMCBzcmNwa2dzL2ZmbXBlZzQtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2ZmbXBlZzQvZmlsZXMvYWx0aXZlYy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvZmZtcGVnNC9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJz dnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZt cGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZQogY3JlYXRlIG1vZGUgMTIw MDAwIHNyY3BrZ3MvbGliYXZjb2RlYzQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYmF2 ZGV2aWNlNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZmaWx0ZXI0CiBjcmVhdGUg bW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdmZvcm1hdDQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNw a2dzL2xpYmF2cmVzYW1wbGU0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdnV0aWw0 CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJwb3N0cHJvYzQKIGNyZWF0ZSBtb2RlIDEy MDAwMCBzcmNwa2dzL2xpYnN3cmVzYW1wbGU0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9s aWJzd3NjYWxlNAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbCBiL3NyY3BrZ3Mv ZmZtcGVnNC1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44 ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0LWRldmVsCkBA IC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0aXZlYy5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVn NC9maWxlcy9hbHRpdmVjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMDAuLjljNTcyMDA0NjMzMjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZmbXBlZzQv ZmlsZXMvYWx0aXZlYy5wYXRjaApAQCAtMCwwICsxLDYwIEBACityZXZlcnQgc29tZSBhbHRpdmVj IHNwZWNpZmljIGNoYW5nZSBvbiBhbGwgcHBjKiBleGNlcHQgcHBjNjRsZSoKKworcTY2OiAiV2Ug c2hvdWxkIGFsc28gdGhyb3cgaW4gYSByZXZlcnQgb2YgRkZtcGVnL0ZGbXBlZ0AzYTU1N2M1IGJ1 dCBvbmx5Citjb25kaXRpb25hbGx5LCBmb3IgcHBjKiBidXQgbm90IHBwYzY0bGUqICh0aGUgbmV3 IGNvZGUgaXMgdmFsaWQgZm9yCitQT1dFUjggVlNYIHdoaWNoIExFIHRhcmdldHMgYXMgYSBiYXNl bGluZSBidXQgbm90IEJFKSIKKworCitUaGlzIHJldmVydHMgY29tbWl0IDNhNTU3YzVkODhiN2Ix NWI1OTU0YmEyNzQzZmViYjA1NTU0OWI1MzYuCistLS0KKyBsaWJzd3NjYWxlL3BwYy95dXYycmdi X2FsdGl2ZWMuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2Vk LCAyMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlic3dz Y2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMgYi9saWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2 ZWMuYworaW5kZXggNTM2NTQ1MjkzZC4uYzFlMjg1MmFkYiAxMDA2NDQKKy0tLSBhL2xpYnN3c2Nh bGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCisrKysgYi9saWJzd3NjYWxlL3BwYy95dXYycmdiX2Fs dGl2ZWMuYworQEAgLTMwNSw2ICszMDUsOSBAQCBzdGF0aWMgaW50IGFsdGl2ZWNfICMjIG5hbWUo U3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAgICAgICAgICBcCisgICAg IHZlY3RvciBzaWduZWQgc2hvcnQgUjEsIEcxLCBCMTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBSLCBHLCBCOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisrICAgIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICp5MWl2UCwgKnky aXZQLCAqdWl2UCwgKnZpdlA7ICAgICAgICAgICAgICAgICAgXAorKyAgICB2ZWN0b3IgdW5zaWdu ZWQgY2hhciBhbGlnbl9wZXJtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIHZlY3RvciBzaWduZWQgc2hvcnQg bENZICAgICAgID0gYy0+Q1k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor ICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxPWSAgICAgICA9IGMtPk9ZOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBsQ1JWICAg ICAgPSBjLT5DUlY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitAQCAtMzM1 LDEzICszMzgsMjYgQEAgc3RhdGljIGludCBhbHRpdmVjXyAjIyBuYW1lKFN3c0NvbnRleHQgKmMs IGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAgICAgXAorICAgICAgICAgdmVjX2RzdHN0 KG91dGUsICgweDAyMDAwMDAyIHwgKCgodyAqIDMgKyAzMikgLyAzMikgPDwgMTYpKSwgMSk7ICAg ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICBmb3IgKGogPSAwOyBqIDwg dyAvIDE2OyBqKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor LSAgICAgICAgICAgIHkwID0gdmVjX3hsKDAsIHkxaSk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB5MWl2UCA9IChjb25zdCB2ZWN0 b3IgdW5zaWduZWQgY2hhciAqKSB5MWk7ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAg ICAgICAgeTJpdlAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgeTJpOyAgICAgICAg ICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHVpdlAgID0gKGNvbnN0IHZlY3RvciB1bnNp Z25lZCBjaGFyICopIHVpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB2 aXZQICA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB2aTsgICAgICAgICAgICAgICAg ICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIGFsaWduX3Bl cm0gPSB2ZWNfbHZzbCgwLCB5MWkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKysgICAgICAgICAgICB5MCA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcikgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgdmVjX3Bl cm0oeTFpdlBbMF0sIHkxaXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICB5MSA9IHZlY194bCgwLCB5MmkpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAg ICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkyaSk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHkxID0gKHZlY3RvciB1bnNpZ25lZCBjaGFyKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAg ICAgICB2ZWNfcGVybSh5Mml2UFswXSwgeTJpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAgICAg ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIHUgPSAodmVjdG9y IHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdWkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KysgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgdWkpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVk IGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAg ICAgICAgICAgICAgICAgdmVjX3Blcm0odWl2UFswXSwgdWl2UFsxXSwgYWxpZ25fcGVybSk7ICAg ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAg diA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgwLCB2aSk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB2aSk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB2ID0gKHZl Y3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisrICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh2aXZQWzBdLCB2aXZQWzFdLCBhbGln bl9wZXJtKTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICB2ZWNfc3ViKHUsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLS0gCisyLjI3 LjAKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRp bmctcG9pbnQucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGlu Zy1wb2ludC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi45 YTU1MTc4Yzc0ZjBmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMv YXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorLS0tIGEvbGli YXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTEwLTI2IDIxOjAzOjAzLjAwMDAwMDAwMCArMDIw MAorKysrIGIvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTExLTIxIDExOjA2OjQ5LjYw MjI4NDQyMiArMDEwMAorQEAgLTM5LDYgKzM5LDE1IEBACisgI2VuZGlmCisgI2luY2x1ZGUgPGZl bnYuaD4KKyAKKysjaWYgKEZFX0FMTF9FWENFUFQgPT0gMCkKKysvKiBFLmcuIEFSTSBzb2Z0IGZs b2F0IGRvZXMgbm90IGRlZmluZSB0aGVzZSAqLworKyNkZWZpbmUgRkVfSU5WQUxJRCAgICAwCisr I2RlZmluZSBGRV9ESVZCWVpFUk8gIDAKKysjZGVmaW5lIEZFX09WRVJGTE9XICAgMAorKyNkZWZp bmUgRkVfVU5ERVJGTE9XICAwCisrI2RlZmluZSBGRV9JTkVYQUNUICAgIDAKKysjZW5kaWYKKysK KyAjaWYgQ09ORklHX0xJQkZPTlRDT05GSUcKKyAjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250Y29u ZmlnLmg+CisgI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9wYXRj aC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0X2Zvcm1hdC5kaWZmIGIvc3JjcGtncy9mZm1w ZWc0L3BhdGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlm ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5hYTk0OGY3YThhMmRm Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvcGF0Y2gtbGliYXZj b2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgpAQCAtMCwwICsxLDQwIEBACisjPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRnJvbSAwMzFmMTU2MWNk Mjg2NTk2Y2RiMzc0ZGEzMmY4YWE4MTZjZTNiMTM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor IyBGcm9tOiBDaHJpc3RvcGhlciBEZWdhd2EgPGNocmlzdG9waGVyLmRlZ2F3YUBpbnRlbC5jb20+ CisjIERhdGU6IFRodSwgMjAgT2N0IDIwMjIgMjI6NTU6MjcgLTA1MDAKKyMgU3ViamVjdDogW1BB VENIXSBhdmNvZGVjL2xpYnN2dGF2MTogcmVtb3ZlIGNvbXByZXNzZWRfdGVuX2JpdF9mb3JtYXQg YW5kIHNpbXBsaWZ5IGFsbG9jX2J1ZmZlcgorIworIyBjb21wcmVzc2VkX3Rlbl9iaXRfZm9ybWF0 IGhhcyBiZWVuIGRlcHJlY2F0ZWQgdXBzdHJlYW0gYW5kIGhhcyBubyBlZmZlY3QKKyMgYW5kIGNh biBiZSByZW1vdmVkLiBQbHVzLCB0ZWNobmljYWxseSBpdCB3YXMgbmV2ZXIgdXNlZCBpbiB0aGUg Zmlyc3QgcGxhY2UKKyMgc2luY2UgaXQgd291bGQgcmVxdWlyZSB0aGUgYXBwIChmZm1wZWcpIHRv IHNldCBpdCBhbmQgZG8gYWRkaXRpb25hbAorIyBwcm9jZXNzaW5nIG9mIHRoZSBpbnB1dCBmcmFt ZXMuCisjCisjIEFsc28gc2ltcGxpZnkgYWxsb2NfYnVmZmVyIGJ5IHJlbW92aW5nIGNhbGN1bGF0 aW9ucyByZWxhdGluZyB0byB0aGUgbm9uLWV4aXN0YW50IHByb2Nlc3NpbmcuCisjCisjIFNpZ25l ZC1vZmYtYnk6IENocmlzdG9waGVyIERlZ2F3YSA8Y2hyaXN0b3BoZXIuZGVnYXdhQGludGVsLmNv bT4KKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGEvbGli YXZjb2RlYy9saWJzdnRhdjEuYworKysrIGIvbGliYXZjb2RlYy9saWJzdnRhdjEuYworQEAgLTEy NCwxNiArMTI0LDEyIEBAIHN0YXRpYyBpbnQgc3Z0X3ByaW50X2Vycm9yKHZvaWQgKmxvZ19jdHgs IEViRXJyb3JUeXBlIGVyciwKKyAKKyBzdGF0aWMgaW50IGFsbG9jX2J1ZmZlcihFYlN2dEF2MUVu Y0NvbmZpZ3VyYXRpb24gKmNvbmZpZywgU3Z0Q29udGV4dCAqc3Z0X2VuYykKKyB7CistICAgIGNv bnN0IGludCAgICBwYWNrX21vZGVfMTBiaXQgPQorLSAgICAgICAgKGNvbmZpZy0+ZW5jb2Rlcl9i aXRfZGVwdGggPiA4KSAmJiAoY29uZmlnLT5jb21wcmVzc2VkX3Rlbl9iaXRfZm9ybWF0ID09IDAp ID8gMSA6IDA7CistICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemVfOGJpdCAgPQorLSAgICAgICAg Y29uZmlnLT5zb3VyY2Vfd2lkdGggKiBjb25maWctPnNvdXJjZV9oZWlnaHQgKiAoMSA8PCBwYWNr X21vZGVfMTBiaXQpOworLSAgICBjb25zdCBzaXplX3QgbHVtYV9zaXplXzEwYml0ID0KKy0gICAg ICAgIChjb25maWctPmVuY29kZXJfYml0X2RlcHRoID4gOCAmJiBwYWNrX21vZGVfMTBiaXQgPT0g MCkgPyBsdW1hX3NpemVfOGJpdCA6IDA7CisrICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemUgPSBj b25maWctPnNvdXJjZV93aWR0aCAqIGNvbmZpZy0+c291cmNlX2hlaWdodCAqCisrICAgICAgICAo Y29uZmlnLT5lbmNvZGVyX2JpdF9kZXB0aCA+IDggPyAyIDogMSk7CisgCisgICAgIEViU3Z0SU9G b3JtYXQgKmluX2RhdGE7CisgCistICAgIHN2dF9lbmMtPnJhd19zaXplID0gKGx1bWFfc2l6ZV84 Yml0ICsgbHVtYV9zaXplXzEwYml0KSAqIDMgLyAyOworKyAgICBzdnRfZW5jLT5yYXdfc2l6ZSA9 IGx1bWFfc2l6ZSAqIDMgLyAyOworIAorICAgICAvLyBhbGxvY2F0ZSBidWZmZXIgZm9yIGluIGFu ZCBvdXQKKyAgICAgc3Z0X2VuYy0+aW5fYnVmICAgICAgICAgICA9IGF2X21hbGxvY3ooc2l6ZW9m KCpzdnRfZW5jLT5pbl9idWYpKTsKKy0tIAorR2l0TGFiCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv ZmZtcGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaCBi L3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1 Zy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4wMGUzZjY4 YTQxNWI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvd29ya2Fy b3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20g ODExZDI5MDg0NDIwNmZjNzNkYzM5YzNlNWI2N2Q1ZDg5NWJhZWRmOCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb206IFJhaW5lciBIb2NoZWNrZXIgPGZlcm5ldG1lbnRhQG9ubGluZS5kZT4K K0RhdGU6IFNhdCwgMjYgSmFuIDIwMTkgMTk6NDg6MzUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0g YXZjb2RlYy92YWFwaV9oMjY0OiBza2lwIGRlY29kZSBpZiBwaWMgaGFzIG5vIHNsaWNlcworCitU aGlzIGZpeGVzIC8gd29ya2Fyb3VuZHMgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93 X2J1Zy5jZ2k/aWQ9MTA1MzY4LgorSXQgd2FzIGhpdCBmcmVxdWVudGx5IHdoZW4gd2F0Y2hpbmcg aDI2NCBjaGFubmVscyByZWNlaXZlZCB2aWEgRFZCLVguCitDb3JyZXNwb25kaW5nIGtvZGkgYnVn OiBodHRwczovL2dpdGh1Yi5jb20veGJtYy94Ym1jL2lzc3Vlcy8xNTcwNAorLS0tCisgbGliYXZj b2RlYy92YWFwaV9oMjY0LmMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9u cygrKQorCitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMgYi9saWJhdmNvZGVj L3ZhYXBpX2gyNjQuYworaW5kZXggNTg1NDU4N2EyNTUuLmYxMmZkYzQ1N2E0IDEwMDY0NAorLS0t IGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKKysrKyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5j CitAQCAtMzE3LDYgKzMxNywxMSBAQCBzdGF0aWMgaW50IHZhYXBpX2gyNjRfZW5kX2ZyYW1lKEFW Q29kZWNDb250ZXh0ICphdmN0eCkKKyAgICAgSDI2NFNsaWNlQ29udGV4dCAqc2wgPSAmaC0+c2xp Y2VfY3R4WzBdOworICAgICBpbnQgcmV0OworIAorKyAgICBpZiAocGljLT5uYl9zbGljZXMgPT0g MCkgeworKyAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsKKysgICAgICAgIGdvdG8g ZmluaXNoOworKyAgICB9CisrCisgICAgIHJldCA9IGZmX3ZhYXBpX2RlY29kZV9pc3N1ZShhdmN0 eCwgcGljKTsKKyAgICAgaWYgKHJldCA8IDApCisgICAgICAgICBnb3RvIGZpbmlzaDsKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0 ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5mMmM4NTE2OTNkMzY3 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRlCkBAIC0wLDAgKzEs MjQwIEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWc0JworIyBhdWRhY2l0eSBhbHNvIG5l ZWRzIHRvIGJlIGJ1bXBlZCB3aGVuIGEgbmV3IGZmbXBlZyB2ZXJzaW9uIGJ1bXBzIGxpYmF2Zm9y bWF0J3Mgc29uYW1lIQorcGtnbmFtZT1mZm1wZWc0Cit2ZXJzaW9uPTQuNC40CityZXZpc2lvbj0x CitzaG9ydF9kZXNjPSJEZWNvZGluZywgZW5jb2RpbmcgYW5kIHN0cmVhbWluZyBzb2Z0d2FyZSAt IGZmbXBlZzQgbGlicmFyaWVzIG9ubHkiCittYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZv aWRsaW51eC5vcmc+IgorbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKK2hvbWVwYWdlPSJodHRw czovL3d3dy5mZm1wZWcub3JnIgorY2hhbmdlbG9nPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29u dGVudC5jb20vRkZtcGVnL0ZGbXBlZy9tYXN0ZXIvQ2hhbmdlbG9nIgorZGlzdGZpbGVzPSJodHRw czovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzL2ZmbXBlZy0ke3ZlcnNpb259LnRhci54eiIKK2No ZWNrc3VtPWU4MGIzODBkNTk1YzgwOTA2MGY2NmY5NmE1ZDg0OTUxMWVmNGE3NmEyNmI3NmVhY2Y1 Nzc4Yjk0YzM1NzAzMDkKKworaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHBlcmwiCittYWtl ZGVwZW5kcz0iemxpYi1kZXZlbCBiemlwMi1kZXZlbCBmcmVldHlwZS1kZXZlbCBhbHNhLWxpYi1k ZXZlbCBsaWJYZml4ZXMtZGV2ZWwKKyBsaWJYZXh0LWRldmVsIGxpYlh2TUMtZGV2ZWwgbGlieGNi LWRldmVsIGxhbWUtZGV2ZWwgbGlidGhlb3JhLWRldmVsCisgbGlidm9yYmlzLWRldmVsIHgyNjQt ZGV2ZWwgeHZpZGNvcmUtZGV2ZWwgamFjay1kZXZlbCBTREwyLWRldmVsCisgbGliY2Rpby1wYXJh bm9pYS1kZXZlbCBsaWJydG1wLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgZ251dGxzLWRldmVsCisg c3BlZXgtZGV2ZWwgY2VsdC1kZXZlbCBoYXJmYnV6ei1kZXZlbCBsaWJhc3MtZGV2ZWwgb3B1cy1k ZXZlbCBvY2wtaWNkLWRldmVsCisgbGliYnMyYi1kZXZlbCBsaWJ2aWRzdGFiLWRldmVsIHZtYWYt ZGV2ZWwgJCh2b3B0X2lmIHB1bHNlYXVkaW8gcHVsc2VhdWRpby1kZXZlbCkKKyAkKHZvcHRfaWYg dmFhcGkgbGlidmEtZGV2ZWwpICQodm9wdF9pZiB2ZHBhdSBsaWJ2ZHBhdS1kZXZlbCkKKyAkKHZv cHRfaWYgeDI2NSB4MjY1LWRldmVsKSAkKHZvcHRfaWYgdjRsMiB2NGwtdXRpbHMtZGV2ZWwpCisg JCh2b3B0X2lmIGZka19hYWMgZmRrLWFhYy1kZXZlbCkgJCh2b3B0X2lmIHZweCBsaWJ2cHgtZGV2 ZWwpCisgJCh2b3B0X2lmIGFvbSBsaWJhb20tZGV2ZWwpICQodm9wdF9pZiBzbmRpbyBzbmRpby1k ZXZlbCkKKyAkKHZvcHRfaWYgZGF2MWQgbGliZGF2MWQtZGV2ZWwpICQodm9wdF9pZiB6aW1nIHpp bWctZGV2ZWwpCisgJCh2b3B0X2lmIHdlYnAgbGlid2VicC1kZXZlbCkgJCh2b3B0X2lmIHNvZmEg bGlibXlzb2ZhLWRldmVsKQorICQodm9wdF9pZiBkcm0gbGliZHJtLWRldmVsKSAkKHZvcHRfaWYg c3Z0YXYxIGxpYnN2dC1hdjEtZGV2ZWwpCisgJCh2b3B0X2lmIHNydCBzcnQtZGV2ZWwpICQodm9w dF9pZiByaXN0IGxpYnJpc3QtZGV2ZWwpCisgJCh2b3B0X2lmIHZ1bGthbiAndnVsa2FuLWxvYWRl ciBWdWxrYW4tSGVhZGVycycpCisgJCh2b3B0X2lmIG1meCAnbGlibWZ4IGxpYm1meC1kZXZlbCcp CisgJCh2b3B0X2lmIG52ZW5jIG52LWNvZGVjLWhlYWRlcnMpICQodm9wdF9pZiBudmRlYyBudi1j b2RlYy1oZWFkZXJzKSIKKworYnVpbGRfb3B0aW9ucz0ieDI2NSB2NGwyIHZhYXBpIHZkcGF1IHZw eCBmZGtfYWFjIGFvbSBudmVuYyBzbmRpbyBwdWxzZWF1ZGlvCisgZGF2MWQgemltZyB3ZWJwIHNv ZmEgdnVsa2FuIGRybSBzdnRhdjEgc3J0IHJpc3QgbnZkZWMgbWZ4IgorYnVpbGRfb3B0aW9uc19k ZWZhdWx0PSJ4MjY1IHY0bDIgdnB4IGFvbSBzbmRpbyBwdWxzZWF1ZGlvIGRhdjFkIHdlYnAgdnVs a2FuIGRybSBzcnQgcmlzdCIKKworZGVzY19vcHRpb25fc3J0PSJFbmFibGUgc3VwcG9ydCBmb3Ig U1JUIChTZWN1cmUsIFJlbGlhYmxlLCBUcmFuc3BvcnQpIgorZGVzY19vcHRpb25fcmlzdD0iRW5h YmxlIHN1cHBvcnQgZm9yIFJJU1QgKFJlbGlhYmxlIEludGVybmV0IFN0cmVhbSBUcmFuc3BvcnQp IgorZGVzY19vcHRpb25fc29mYT0iRW5hYmxlIHN1cHBvcnQgZm9yIEFFUyBTT0ZBIgorZGVzY19v cHRpb25fd2VicD0iRW5hYmxlIHN1cHBvcnQgZm9yIFdlYlAiCisKK2Nhc2UgIiRYQlBTX1RBUkdF VF9NQUNISU5FIiBpbgorCWk2ODYqKQorCQkJaG9zdG1ha2VkZXBlbmRzKz0iIG5hc20iCisJCQli dWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUgbnZlbmMgbnZkZWMiCisJCQk7Owor CXg4Nl82NCopCisJCQlob3N0bWFrZWRlcGVuZHMrPSIgbmFzbSIKKwkJCWJ1aWxkX29wdGlvbnNf ZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSBtZnggbnZlbmMgbnZkZWMiCisJCQk7OworCXBwYzY0Kikg YnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1Ijs7CisJbWlwcyopIENGTEFHUz0i LW1uYW49bGVnYWN5Ijs7Citlc2FjCisKK2lmIFsgIiRYQlBTX1RBUkdFVF9XT1JEU0laRSIgIT0g IjMyIiBdOyB0aGVuCisJYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHN2dGF2MSIKK2ZpCisKK2lm IFsgIiRYQlBTX1RBUkdFVF9OT19BVE9NSUM4IiBdOyB0aGVuCisJbWFrZWRlcGVuZHMrPSIgbGli YXRvbWljLWRldmVsIgorZmkKKworX2FwcGx5X3BhdGNoKCkgeworCWxvY2FsIGFyZ3M9IiQxIiBw bmFtZT0iJChiYXNlbmFtZSAkMikiCisKKwlpZiBbICEgLWYgIi4ke3BuYW1lfV9kb25lIiBdOyB0 aGVuCisJCXBhdGNoIC1OICRhcmdzIC1pICQyCisJCXRvdWNoIC4ke3BuYW1lfV9kb25lCisJZmkK K30KKworcG9zdF9wYXRjaCgpIHsKKwljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJ cHBjNjRsZSopIDs7CisJCXBwYyopIF9hcHBseV9wYXRjaCAtcDEgJHtGSUxFU0RJUn0vYWx0aXZl Yy5wYXRjaCA7OworCWVzYWMKKworCXZzZWQgLWkgbGliYXZmaWx0ZXIvdmZfbGlidm1hZi5jIC1l ICdzIS91c3IvbG9jYWwvc2hhcmUvbW9kZWwvXCh2bWFmX3YwLjYuMVwpLnBrbCEvdXNyL3NoYXJl L3ZtYWYvXDEuanNvbiEnCit9CisKK2RvX2NvbmZpZ3VyZSgpIHsKKwkjIEZpeCBnY2Mgb24geDg2 XzY0LW11c2wgb25seQorCWlmIFsgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiA9ICJ4ODZfNjQtbXVz bCIgXTsgdGhlbgorCQl2c2VkIC1pIGNvbmZpZ3VyZSAtZSAicztfY2ZsYWdzX3NwZWVkPSctTzMn O19jZmxhZ3Nfc3BlZWQ9Jy1PMic7IgorCWZpCisKKwlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRo ZW4KKwkJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCQlhcm0qKSBfYXJjaD0iYXJt Ijs7CisJCQlhYXJjaDY0KikgX2FyY2g9ImFhcmNoNjQiOzsKKwkJCW1pcHMqKSBfYXJjaD0ibWlw cyI7OworCQkJcHBjNjQqKSBfYXJjaD0icHBjNjQiOzsKKwkJCXBwYyopIF9hcmNoPSJwcGMiOzsK KwkJCSopIF9hcmNoPSIke1hCUFNfVEFSR0VUX01BQ0hJTkUlJS1tdXNsfSI7OworCQllc2FjCisK KwkJX2FyZ3MrPSIgLS1lbmFibGUtY3Jvc3MtY29tcGlsZQorCQkJLS1zeXNyb290PSRYQlBTX0NS T1NTX0JBU0UKKwkJCS0tY3Jvc3MtcHJlZml4PSR7WEJQU19DUk9TU19UUklQTEVUfS0KKwkJCS0t dGFyZ2V0LW9zPWxpbnV4IC0tYXJjaD0ke19hcmNofSIKKwlmaQorCisJY2FzZSAiJFhCUFNfVEFS R0VUX01BQ0hJTkUiIGluCisJCXBwY3xwcGMtbXVzbCkgX2FyZ3MrPSIgLS1kaXNhYmxlLWFsdGl2 ZWMiOzsKKwllc2FjCisKKwlpZiBbICIkWEJQU19UQVJHRVRfTk9fQVRPTUlDOCIgXTsgdGhlbgor CQlfYXJncys9IiAtLWV4dHJhLWxpYnM9LWxhdG9taWMiCisJZmkKKworCS4vY29uZmlndXJlIC0t cHJlZml4PS91c3IgLS1kaXNhYmxlLWRlYnVnIC0tZW5hYmxlLWdwbCAtLWVuYWJsZS1nbnV0bHMg XAorCQktLWRpc2FibGUtc3RyaXBwaW5nIFwKKwkJLS1lbmFibGUtbGliY2RpbyAtLWVuYWJsZS12 ZXJzaW9uMyAtLWVuYWJsZS1ydW50aW1lLWNwdWRldGVjdCBcCisJCS0tZW5hYmxlLWxpYm1wM2xh bWUgLS1lbmFibGUtbGlidm9yYmlzIC0tZW5hYmxlLWxpYnh2aWQgXAorCQktLWVuYWJsZS1saWJ4 MjY0ICQodm9wdF9lbmFibGUgdnB4IGxpYnZweCkgLS1lbmFibGUtbGlidGhlb3JhIFwKKwkJLS1l bmFibGUtc2hhcmVkIC0tZW5hYmxlLXN0YXRpYyAtLWVuYWJsZS1saWJ4Y2IgXAorCQkkKHZvcHRf ZW5hYmxlIHB1bHNlYXVkaW8gbGlicHVsc2UpIC0tZW5hYmxlLWxpYmZyZWV0eXBlIC0tZW5hYmxl LWxpYm1vZHBsdWcgXAorCQktLWVuYWJsZS1saWJzcGVleCAtLWVuYWJsZS1saWJjZWx0IC0tZW5h YmxlLWxpYmFzcyBcCisJCS0tZW5hYmxlLWxpYm9wdXMgLS1lbmFibGUtbGlicnRtcCAtLWVuYWJs ZS1saWJqYWNrIFwKKwkJJCh2b3B0X2lmIGZka19hYWMgJy0tZW5hYmxlLW5vbmZyZWUgLS1lbmFi bGUtbGliZmRrLWFhYycpIFwKKwkJLS1kaXNhYmxlLWxpYm9wZW5jb3JlX2Ftcm5iIC0tZGlzYWJs ZS1saWJvcGVuY29yZV9hbXJ3YiBcCisJCS0tZGlzYWJsZS1saWJvcGVuanBlZyBcCisJCS0tZW5h YmxlLXBvc3Rwcm9jIC0tZW5hYmxlLW9wZW5jbCAke19hcmdzfSAtLWVuYWJsZS1saWJ2bWFmICR7 X2FyZ3N9IFwKKwkJJCh2b3B0X2VuYWJsZSB4MjY1IGxpYngyNjUpIFwKKwkJJCh2b3B0X2VuYWJs ZSB2NGwyIGxpYnY0bDIpIFwKKwkJJCh2b3B0X2VuYWJsZSBhb20gbGliYW9tKSAkKHZvcHRfZW5h YmxlIHZhYXBpKSAkKHZvcHRfZW5hYmxlIHZkcGF1KSBcCisJCS0tZW5hYmxlLWxpYmJzMmIgLS1l bmFibGUtYXZyZXNhbXBsZSAtLWVuYWJsZS1saWJ2aWRzdGFiIFwKKwkJJCh2b3B0X2VuYWJsZSBk YXYxZCBsaWJkYXYxZCkgXAorCQkkKHZvcHRfZW5hYmxlIHppbWcgbGliemltZykgXAorCQkkKHZv cHRfZW5hYmxlIHdlYnAgbGlid2VicCkgXAorCQkkKHZvcHRfZW5hYmxlIHNvZmEgbGlibXlzb2Zh KSBcCisJCSQodm9wdF9lbmFibGUgdnVsa2FuKSBcCisJCSQodm9wdF9lbmFibGUgZHJtIGxpYmRy bSkgXAorCQkkKHZvcHRfZW5hYmxlIHN2dGF2MSBsaWJzdnRhdjEpIFwKKwkJJCh2b3B0X2VuYWJs ZSBzcnQgbGlic3J0KSBcCisJCSQodm9wdF9lbmFibGUgcmlzdCBsaWJyaXN0KSBcCisJCSQodm9w dF9lbmFibGUgbWZ4IGxpYm1meCkgXAorCQkkKHZvcHRfaWYgbnZlbmMgJy0tZW5hYmxlLW52ZW5j JykgXAorCQkkKHZvcHRfaWYgbnZkZWMgJy0tZW5hYmxlLW52ZGVjJykKK30KKworZG9fYnVpbGQo KSB7CisJbWFrZSAke21ha2Vqb2JzfQorCW1ha2UgZG9jL2Zme21wZWcscGxheX0uMQorfQorCitk b19pbnN0YWxsKCkgeworCW1ha2UgREVTVERJUj0ke0RFU1RESVJ9IGluc3RhbGwgaW5zdGFsbC1t YW4KKwlybSAtcmYgJHtERVNURElSfS91c3IvYmluCit9CisKK2xpYmF2Y29kZWM0X3BhY2thZ2Uo KSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGNvZGVjIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7 CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2Y29kZWMuc28uKiIKKwl9Cit9CisKK2xpYmF2ZGV2aWNl NF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyBkZXZpY2UgaGFuZGxpbmcgbGlicmFy eSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYXZkZXZpY2Uuc28uKiIK Kwl9Cit9CisKK2xpYmF2cmVzYW1wbGU0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVn IGF1ZGlvIHJlc2FtcGxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVz ci9saWIvbGliYXZyZXNhbXBsZS5zby4qIgorCX0KK30KKworbGliYXZmb3JtYXQ0X3BhY2thZ2Uo KSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGZpbGUgZm9ybWF0IGxpYnJhcnkiCisJcGtnX2luc3Rh bGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2Zm9ybWF0LnNvLioiCisJfQorfQorCitsaWJh dnV0aWw0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIHV0aWxpdHkgbGlicmFyeSIK Kwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYXZ1dGlsLnNvLioiCisJfQor fQorCitsaWJhdmZpbHRlcjRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgYXVkaW8v dmlkZW8gZmlsdGVyIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGli L2xpYmF2ZmlsdGVyLnNvLioiCisJfQorfQorCitsaWJwb3N0cHJvYzRfcGFja2FnZSgpIHsKKwlz aG9ydF9kZXNjPSJGRm1wZWcgdmlkZW8gcG9zdHByb2Nlc3NpbmcgbGlicmFyeSIKKwlwa2dfaW5z dGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGlicG9zdHByb2Muc28uKiIKKwl9Cit9CisKK2xp YnN3c2NhbGU0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIHZpZGVvIHNjYWxpbmcg bGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGlic3dzY2FsZS5z by4qIgorCX0KK30KKworbGlic3dyZXNhbXBsZTRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJG Rm1wZWcgdmlkZW8gcmVzYW1wbGluZyBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92 ZSAidXNyL2xpYi9saWJzd3Jlc2FtcGxlLnNvLioiCisJfQorfQorCitmZm1wZWc0LWRldmVsX3Bh Y2thZ2UoKSB7CisJZGVwZW5kcz0iCisJCWxpYmF2Y29kZWM0Pj0ke3ZlcnNpb259XyR7cmV2aXNp b259CisJCWxpYmF2ZGV2aWNlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJhdmZvcm1h dDQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGliYXZ1dGlsND49JHt2ZXJzaW9ufV8ke3Jl dmlzaW9ufQorCQlsaWJhdmZpbHRlcjQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGlicG9z dHByb2M0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYnN3c2NhbGU0Pj0ke3ZlcnNpb259 XyR7cmV2aXNpb259CisJCWxpYnN3cmVzYW1wbGU0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJ CWxpYmF2cmVzYW1wbGU0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXNob3J0X2Rlc2MrPSIg LSBkZXZlbG9wbWVudCBmaWxlcyIKKwljb25mbGljdHM9ImZmbXBlZy1kZXZlbCIKKwlpZiBbICIk WEJQU19UQVJHRVRfTUFDSElORSIgPSAiaTY4NiIgXTsgdGhlbgorCQkjIC91c3IvYmluL3N0cmlw OiBlcnJvcjogdGhlIGlucHV0IGZpbGUgJy9kZXN0ZGlyLy9mZm1wZWctZGV2ZWwtNC40LjQvdXNy L2xpYi9saWJhdmZpbHRlci5hKHZmX2F0YWRlbm9pc2UubyknIGhhcyBubyBzZWN0aW9ucworCQlu b3N0cmlwX2ZpbGVzPSIvdXNyL2xpYi9saWJhdmZpbHRlci5hIgorCWZpCisJcGtnX2luc3RhbGwo KSB7CisJCXZtb3ZlIHVzci9pbmNsdWRlCisJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCisJCXZt b3ZlICJ1c3IvbGliLyouYSIKKwkJdm1vdmUgInVzci9saWIvKi5zbyIKKwkJdm1vdmUgdXNyL3No YXJlL2ZmbXBlZy9leGFtcGxlcworCQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjMKKwl9Cit9CmRp ZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2Y29kZWM0IGIvc3JjcGtncy9saWJhdmNvZGVjNApuZXcg ZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdmNvZGVjNApAQCAtMCwwICsxIEBACitmZm1wZWc0 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdmRl dmljZTQgYi9zcmNwa2dzL2xpYmF2ZGV2aWNlNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAw MDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9s aWJhdmRldmljZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZmaWx0ZXI0IGIvc3JjcGtncy9saWJhdmZp bHRlcjQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3 YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZmaWx0ZXI0CkBAIC0wLDAgKzEg QEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNw a2dzL2xpYmF2Zm9ybWF0NCBiL3NyY3BrZ3MvbGliYXZmb3JtYXQ0Cm5ldyBmaWxlIG1vZGUgMTIw MDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL2xpYmF2Zm9ybWF0NApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdnJlc2FtcGxlNCBiL3Ny Y3BrZ3MvbGliYXZyZXNhbXBsZTQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAw MDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZyZXNh bXBsZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZ1dGlsNCBiL3NyY3BrZ3MvbGliYXZ1dGlsNApuZXcg ZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdnV0aWw0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYnBvc3Rw cm9jNCBiL3NyY3BrZ3MvbGlicG9zdHByb2M0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAw MDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xp YnBvc3Rwcm9jNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJzd3Jlc2FtcGxlNCBiL3NyY3BrZ3MvbGlic3dy ZXNhbXBsZTQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1 NGU3YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGlic3dyZXNhbXBsZTQKQEAgLTAs MCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbGlic3dzY2FsZTQgYi9zcmNwa2dzL2xpYnN3c2NhbGU0Cm5ldyBmaWxlIG1vZGUg MTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL2xpYnN3c2NhbGU0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCgpGcm9tIDdmZmE2MDc4YmY2NWFmNjA2ZWVlNzUyYWIwZWZkNDhm YWZiMTRiMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6MDQgLTA0MDAKU3ViamVjdDog W1BBVENIIDAwMy8xMTVdIG9wZW5jdjogdXBkYXRlIHRvIDQuNy4wLgoKLS0tCiBjb21tb24vc2hs aWJzICAgICAgICAgICB8IDEwNCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tCiBzcmNwa2dzL29wZW5jdi90ZW1wbGF0ZSB8ICAgOCArKy0tCiAyIGZpbGVzIGNoYW5nZWQs IDU2IGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9z aGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IGUxNDk2NjcxMzhjYmQuLjJjM2Q5OWY3NTk1YzEg MTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIvY29tbW9uL3NobGlicwpAQCAtMjExMiw1 OCArMjExMiw1OCBAQCBsaWJjYXBzdG9uZS5zby40IGNhcHN0b25lLTQuMF8xCiBsaWJoYXZlZ2Uu c28uMiBsaWJoYXZlZ2VkLTEuOS4xMV8xCiBsaWJuaWguc28uMSBsaWJuaWgtMS4wLjNfMQogbGli bmloLWRidXMuc28uMSBsaWJuaWgtMS4wLjNfMQotbGlib3BlbmN2X3F1YWxpdHkuc28uNDA2IGxp Ym9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfcmVnLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X3N1cmZhY2VfbWF0Y2hpbmcuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJv cGVuY3ZfeHBob3RvLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ZyZWV0eXBl LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Z1enp5LnNvLjQwNiBsaWJvcGVu Y3YtNC42LjBfMQotbGlib3BlbmN2X2hmcy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9w ZW5jdl9pbWdfaGFzaC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9saW5lX2Rl c2NyaXB0b3Iuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc2FsaWVuY3kuc28u NDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3RydWN0dXJlZF9saWdodC5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9hcnVjby5zby40MDYgbGlib3BlbmN2LTQuNi4w XzEKLWxpYm9wZW5jdl9iZ3NlZ20uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zf YmlvaW5zcGlyZWQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfY2NhbGliLnNv LjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ZhY2Uuc28uNDA2IGxpYm9wZW5jdi00 LjYuMF8xCi1saWJvcGVuY3ZfdHJhY2tpbmcuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJv cGVuY3ZfeGZlYXR1cmVzMmQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfb3B0 Zmxvdy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94aW1ncHJvYy5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9wbG90LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBf MQotbGlib3BlbmN2X3RleHQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfbWwu c28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfb2JqZGV0ZWN0LnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Rubi5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxp Ym9wZW5jdl9zaGFwZS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9zdGl0Y2hp bmcuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfcGhvdG8uc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdmlkZW8uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1s aWJvcGVuY3ZfY2FsaWIzZC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mZWF0 dXJlczJkLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ZsYW5uLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2hpZ2hndWkuc28uNDA2IGxpYm9wZW5jdi00LjYu MF8xCi1saWJvcGVuY3ZfdmlkZW9pby5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5j dl9pbWdjb2RlY3Muc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaW1ncHJvYy5z by40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9jb3JlLnNvLjQwNiBsaWJvcGVuY3Yt NC42LjBfMQotbGlib3BlbmN2X3N1cGVycmVzLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGli b3BlbmN2X3ZpZGVvc3RhYi5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9nYXBp LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3hvYmpkZXRlY3Quc28uNDA2IGxp Ym9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZGF0YXNldHMuc28uNDA2IGxpYm9wZW5jdi00LjYu MF8xCi1saWJvcGVuY3ZfZG5uX29iamRldGVjdC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxp Ym9wZW5jdl9kbm5fc3VwZXJyZXMuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zf ZHBtLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3BoYXNlX3Vud3JhcHBpbmcu c28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3RlcmVvLnNvLjQwNiBsaWJvcGVu Y3YtNC42LjBfMQotbGlib3BlbmN2X3JhcGlkLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGli b3BlbmN2X2ludGVuc2l0eV90cmFuc2Zvcm0uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJv cGVuY3ZfYWxwaGFtYXQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfYmFyY29k ZS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9tY2Muc28uNDA2IGxpYm9wZW5j di00LjYuMF8xCitsaWJvcGVuY3ZfcXVhbGl0eS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xp Ym9wZW5jdl9yZWcuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfc3VyZmFjZV9t YXRjaGluZy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl94cGhvdG8uc28uNDA3 IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZnJlZXR5cGUuc28uNDA3IGxpYm9wZW5jdi00 LjcuMF8xCitsaWJvcGVuY3ZfZnV6enkuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVu Y3ZfaGZzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ltZ19oYXNoLnNvLjQw NyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2xpbmVfZGVzY3JpcHRvci5zby40MDcgbGli b3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zYWxpZW5jeS5zby40MDcgbGlib3BlbmN2LTQuNy4w XzEKK2xpYm9wZW5jdl9zdHJ1Y3R1cmVkX2xpZ2h0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X2FydWNvLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Jnc2Vn bS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9iaW9pbnNwaXJlZC5zby40MDcg bGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9jY2FsaWIuc28uNDA3IGxpYm9wZW5jdi00Ljcu MF8xCitsaWJvcGVuY3ZfZmFjZS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl90 cmFja2luZy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl94ZmVhdHVyZXMyZC5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9vcHRmbG93LnNvLjQwNyBsaWJvcGVu Y3YtNC43LjBfMQorbGlib3BlbmN2X3hpbWdwcm9jLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X3Bsb3Quc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfdGV4dC5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9tbC5zby40MDcgbGlib3BlbmN2LTQu Ny4wXzEKK2xpYm9wZW5jdl9vYmpkZXRlY3Quc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3ZfZG5uLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3NoYXBlLnNvLjQw NyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N0aXRjaGluZy5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl9waG90by5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl92aWRlby5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9jYWxpYjNkLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ZlYXR1cmVzMmQuc28uNDA3IGxpYm9w ZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZmxhbm4uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3ZfaGlnaGd1aS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl92aWRl b2lvLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ltZ2NvZGVjcy5zby40MDcg bGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9pbWdwcm9jLnNvLjQwNyBsaWJvcGVuY3YtNC43 LjBfMQorbGlib3BlbmN2X2NvcmUuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zf c3VwZXJyZXMuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfdmlkZW9zdGFiLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2dhcGkuc28uNDA3IGxpYm9wZW5jdi00 LjcuMF8xCitsaWJvcGVuY3ZfeG9iamRldGVjdC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xp Ym9wZW5jdl9kYXRhc2V0cy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9kbm5f b2JqZGV0ZWN0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Rubl9zdXBlcnJl cy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9kcG0uc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3ZfcGhhc2VfdW53cmFwcGluZy5zby40MDcgbGlib3BlbmN2LTQu Ny4wXzEKK2xpYm9wZW5jdl9zdGVyZW8uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVu Y3ZfcmFwaWQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfaW50ZW5zaXR5X3Ry YW5zZm9ybS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9hbHBoYW1hdC5zby40 MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9iYXJjb2RlLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X21jYy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKIGxpYnVuaWNv bmYuc28uNC42IHd2c3RyZWFtcy00LjYuMV8yMAogbGlid3ZiYXNlLnNvLjQuNiB3dnN0cmVhbXMt NC42LjFfMjAKIGxpYnd2dXRpbHMuc28uNC42IHd2c3RyZWFtcy00LjYuMV8yMApkaWZmIC0tZ2l0 IGEvc3JjcGtncy9vcGVuY3YvdGVtcGxhdGUgYi9zcmNwa2dzL29wZW5jdi90ZW1wbGF0ZQppbmRl eCA2MjIyNjk3OGZhM2UwLi45M2I1OGNiNmFmMTQ2IDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5j di90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5jdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5jdicKIHBrZ25hbWU9b3BlbmN2Ci12ZXJzaW9uPTQu Ni4wCi1yZXZpc2lvbj00Cit2ZXJzaW9uPTQuNy4wCityZXZpc2lvbj0xCiBjcmVhdGVfd3Jrc3Jj PXllcwogYnVpbGRfd3Jrc3JjPSR7cGtnbmFtZX0tJHt2ZXJzaW9ufQogYnVpbGRfc3R5bGU9Y21h a2UKQEAgLTI0LDggKzI0LDggQEAgaG9tZXBhZ2U9Imh0dHBzOi8vb3BlbmN2Lm9yZyIKIGNoYW5n ZWxvZz0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3Yvd2lraS9DaGFuZ2VMb2ciCiBk aXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2L2FyY2hpdmUvJHt2ZXJz aW9ufS50YXIuZ3oKICBodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdl9jb250cmliL2Fy Y2hpdmUvJHt2ZXJzaW9ufS50YXIuZ3o+Y29udHJpYi50YXIuZ3oiCi1jaGVja3N1bT0iMWVjMWNi YTY1ZjlmMjBmZTVhNDFmZGExNTg2ZTAxYzcwZWEwYzlhNmQ3YjY3YzllMTNlZGYwY2ZlMjIzOTI3 NwotIDE3NzdkNWZkMmI1OTAyOWNmNTM3ZTVmZDZmOGFhNjhkNzA3MDc1ODIyZjkwYmRlNjgzZmNk ZTA4NmY4NWY3YTciCitjaGVja3N1bT0iOGRmMDA3OWNkYmUxNzk3NDhhMThkNDQ3MzFhZjYyYTI0 NWE0NWViZjUwODUyMjNkYzAzMTMzOTU0YzY2Mjk3MworIDQyZGY4NDBjZjkwNTVlNTlkMGUyMmMy NDljZmIxOWYwNDc0M2UxYmRhZDExM2QzMWIxNTczZDM5MzRkNjI1ODQiCiBwYXRjaF9hcmdzPSIt TnAxIC1kICR7YnVpbGRfd3Jrc3JjfSIKICMgdGVzdHMgaGFuZyBpbmRlbmZpbml0ZWx5LCBldmVu IHdpdGggdGVzdCBkYXRhIGluY2x1ZGVkCiBtYWtlX2NoZWNrPW5vCgpGcm9tIDgzYTNhYjIxY2E4 MjYzZTI0YmJmY2JkMDUzNmE5MzA4YmI2YjE3ZDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6 NTk6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNC8xMTVdIGFjdGlvbmE6IHJldmJ1bXAgZm9y IG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUgYi9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUKaW5kZXgg Y2Y1ZjBiN2EyYWU2MS4uMGQ4OTkzMTFlNmRmNyAxMDA2NDQKLS0tIGEvc3JjcGtncy9hY3Rpb25h L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2FjdGlvbmEnCiBwa2duYW1lPWFjdGlvbmEKIHZlcnNpb249 My4xMC4xCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1xbWFrZQogY29uZmln dXJlX2FyZ3M9IlBLR0NPTkZJR19PUEVOQ1Y9b3BlbmN2NCIKIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyBxdDUtcGx1Z2luLW15c3FsIHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKCkZyb20g N2RkOGVlNmVhNWNjMTQ5YmYyMmU3MGUzNWZiNTkzZmFhOGYzMDlmNCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA1LzExNV0gcWltZ3Y6IHJl dmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL3FpbWd2L3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUKaW5k ZXggN2ViMzBkYjMzOTkyYy4uZGQzNDFkZmUxYmZjZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xaW1n di90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3FpbWd2L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAncWltZ3YnCiBwa2duYW1lPXFpbWd2CiB2ZXJzaW9uPTEuMC4y Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2Fy Z3M9IiQodm9wdF9pZiB2aWRlbyAtRFZJREVPX1NVUFBPUlQ9T04gLURWSURFT19TVVBQT1JUPU9G RikKICAkKHZvcHRfaWYgc2NhbGUgLURPUEVOQ1ZfU1VQUE9SVD1PTiAtRE9QRU5DVl9TVVBQT1JU PU9GRikKCkZyb20gNjAwNmY3Y2FlNjY0Yjk5MzBmOGI1NWU5ZTMxZTgyNWYwM2U5OWFkNSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA2LzEx NV0gcmV0cm9zaGFyZTogcmV2YnVtcCBmb3Igb3BlbmN2LTQuNy4wCgotLS0KIHNyY3BrZ3MvcmV0 cm9zaGFyZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcmV0cm9zaGFyZS90ZW1wbGF0ZSBi L3NyY3BrZ3MvcmV0cm9zaGFyZS90ZW1wbGF0ZQppbmRleCBiYjE3NTY5Mjc3YTdmLi40OWUyYzFj YmU4YTUzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9yZXRyb3NoYXJlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAncmV0cm9zaGFyZScKIHBrZ25hbWU9cmV0cm9zaGFyZQogdmVyc2lvbj0wLjYuNgotcmV2 aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9cW1ha2UKICNYWFggYnJvYWRjYXN0IGZl YXR1cmUgcmVxdWlyZXMgYW4gYW5jaWVudCB1ZHAtZGlzY292ZXJ5LWNwcCB3aGljaCBlaXRoZXIg bmVlZHMKICMgdG8gYmUgZmV0Y2hlZCtwYXRjaGVkIChGVEJGUykgaGVyZSBvciBwYWNrYWdlZCA6 LwoKRnJvbSBiOGVhYWJjNWUyMjBjNTZlNTQ5MTlkMWRjYTNiMzFiNTJlNzIzZWZmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDE5OjU5OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDcvMTE1XSB3 YWlmdTJ4LWNvbnZlcnRlci1jcHA6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNw a2dzL3dhaWZ1MngtY29udmVydGVyLWNwcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2Fp ZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRlIGIvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1j cHAvdGVtcGxhdGUKaW5kZXggOGMwOTVkMGQ3YmFiYS4uYWE1MmQ4Yzk4MWE4NCAxMDA2NDQKLS0t IGEvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKKysrIGIvc3JjcGtncy93 YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICd3YWlmdTJ4LWNvbnZlcnRlci1jcHAnCiBwa2duYW1lPXdhaWZ1MngtY29udmVy dGVyLWNwcAogdmVyc2lvbj01LjIuNAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5 bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRElOU1RBTExfTU9ERUxTPU9OIgogaG9zdG1ha2Vk ZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSAwMDlkMTBmNjA3YTI3Njg5MTVmNWU4MzA2OTJlMDc4 Y2Y1YjhjMjUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAwOjM4IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwMDgvMTE1XSB2bGM6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3Jj cGtncy92bGMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZsYy90ZW1wbGF0ZSBiL3NyY3Br Z3MvdmxjL3RlbXBsYXRlCmluZGV4IGJlNTc5Y2UzOGZlMzcuLjM5NzQyODk5NDc0MDEgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvdmxjL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdmxjL3RlbXBsYXRlCkBA IC0yNSw3ICsyNSw3IEBAIGxpYjMyZGlzYWJsZWQ9eWVzCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9t YWtlIGxpYnRvb2wgcGtnLWNvbmZpZyBmbGV4IGdldHRleHQgbGliZ2NyeXB0LWRldmVsCiAgbGl2 ZTU1NS1kZXZlbCBnZXR0ZXh0LWRldmVsICQodm9wdF9pZiBsdWEgbHVhNTIpICQodm9wdF9pZiBj aHJvbWVjYXN0IHByb3RvYnVmKSIKIG1ha2VkZXBlbmRzPSIKLSBhdmFoaS1saWJzLWRldmVsIGRi dXMtZ2xpYi1kZXZlbCBmYWFkMi1kZXZlbCBmZm1wZWctZGV2ZWwgZnJlZWZvbnQtdHRmCisgYXZh aGktbGlicy1kZXZlbCBkYnVzLWdsaWItZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnNC1kZXZlbCBm cmVlZm9udC10dGYKICBnbnV0bHMtZGV2ZWwgamFjay1kZXZlbCBsaWJhNTItZGV2ZWwgbGliYXNz LWRldmVsIGxpYmJsdXJheS1kZXZlbAogIGxpYmNkaW8tZGV2ZWwgbGliZGNhLWRldmVsIGxpYmR2 YnBzaS1kZXZlbCBsaWJkdmRuYXYtZGV2ZWwgbGlibWFkLWRldmVsCiAgbGlibWF0cm9za2EtZGV2 ZWwgbGlibW9kcGx1Zy1kZXZlbCBsaWJtcGNkZWMtZGV2ZWwgbGlibXBlZzItZGV2ZWwKCkZyb20g OTE4NDVmNWZmMmY0ZTYzY2I1ZWZjNGNjNGViY2QxYzU5OTIzMWI0ZCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMDo1NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA5LzExNV0gb3NnOiByZXZi dW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvb3NnL3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9vc2cvdGVtcGxhdGUgYi9zcmNwa2dzL29zZy90ZW1wbGF0ZQppbmRleCBhOWVi YmQyODc5MzNiLi43NTU3OTNmN2UxMWJmIDEwMDY0NAotLS0gYS9zcmNwa2dzL29zZy90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL29zZy90ZW1wbGF0ZQpAQCAtOCw3ICs4LDcgQEAgYnVpbGRfaGVscGVy PSJxZW11IgogY29uZmlndXJlX2FyZ3M9Ii1ETElCX1BPU1RGSVg9IgogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIHhyYW5kciIKIG1ha2VkZXBlbmRzPSJNZXNhTGliLWRldmVsIGd0a2dsZXh0 LWRldmVsIGxpYmN1cmwtZGV2ZWwgZ2lmbGliLWRldmVsIGxpYnJzdmctZGV2ZWwKLSBqYXNwZXIt ZGV2ZWwgdGlmZi1kZXZlbCBsaWJnZGFsLWRldmVsIGxpYmd0YS1kZXZlbCBmZm1wZWctZGV2ZWwg eGluZS1saWItZGV2ZWwKKyBqYXNwZXItZGV2ZWwgdGlmZi1kZXZlbCBsaWJnZGFsLWRldmVsIGxp Ymd0YS1kZXZlbCBmZm1wZWc0LWRldmVsIHhpbmUtbGliLWRldmVsCiAgU0RMMi1kZXZlbCBnc3Qt cGx1Z2lucy1iYXNlMS1kZXZlbAogICQodm9wdF9pZiBvcGVuZXhyIGxpYm9wZW5leHItZGV2ZWwp CiAgJCh2b3B0X2lmIHBvcHBsZXIgcG9wcGxlci1nbGliLWRldmVsKQoKRnJvbSBmYTMzODhkNmE1 NjU1MDRlM2Y4ODE0MmVjYjM5NDE5ZjUyNjA4ZDU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjEzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTAvMTE1XSB4aW5lLWxpYjogcmV2YnVtcCBm b3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3hpbmUtbGliL3RlbXBsYXRlIHwgNiArKyst LS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZSBiL3NyY3BrZ3MveGluZS1saWIvdGVt cGxhdGUKaW5kZXggZjcxM2VmZjQ5YjA3Yy4uZWQ2MTk0YzE3ZDExZSAxMDA2NDQKLS0tIGEvc3Jj cGtncy94aW5lLWxpYi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3hpbmUtbGliL3RlbXBsYXRlCkBA IC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAneGluZS1saWInCiBwa2duYW1lPXhp bmUtbGliCi12ZXJzaW9uPTEuMi4xMgordmVyc2lvbj0xLjIuMTMKIHJldmlzaW9uPTEKIGJ1aWxk X3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtdmNkIC0tZGlz YWJsZS1nbm9tZXZmcyAtLXdpdGhvdXQtZXNvdW5kIC0tZGlzYWJsZS1keHIzCkBAIC04LDcgKzgs NyBAQCBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLXZjZCAtLWRpc2FibGUtZ25vbWV2ZnMgLS13 aXRob3V0LWVzb3VuZCAtLWRpc2FibGUtZHhyMwogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBn ZXR0ZXh0LWRldmVsIGxpYnRvb2wgcGtnLWNvbmZpZyBwZXJsIgogbWFrZWRlcGVuZHM9IgogIHps aWItZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGlieGNiLWRldmVsIGxpYlNNLWRldmVsIGxpYlhleHQt ZGV2ZWwgbGliWHYtZGV2ZWwKLSBsaWJYdk1DLWRldmVsIGxpYmE1Mi1kZXZlbCBsaWJtYWQtZGV2 ZWwgZmZtcGVnLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKKyBsaWJYdk1DLWRldmVsIGxpYmE1Mi1k ZXZlbCBsaWJtYWQtZGV2ZWwgZmZtcGVnNC1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCiAgamFjay1k ZXZlbCBzYW1iYS1kZXZlbCBsaWJmbGFjLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgbGlibXBjZGVj LWRldmVsCiAgc3BlZXgtZGV2ZWwgbGlidGhlb3JhLWRldmVsIGxpYnZvcmJpcy1kZXZlbCBsaWJk Y2EtZGV2ZWwgZmFhZDItZGV2ZWwKICBsaWJjZGlvLWRldmVsIGxpYmJsdXJheS1kZXZlbCBhYWxp Yi1kZXZlbCBsaWJjYWNhLWRldmVsIGxpYlhpbmVyYW1hLWRldmVsCkBAIC0xOSw3ICsxOSw3IEBA IGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIsIExHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9 Imh0dHA6Ly93d3cueGluZS1wcm9qZWN0Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9zb3VyY2Vm b3JnZS5uZXQvcHJvamVjdHMveGluZS9maWxlcy94aW5lLWxpYi8ke3ZlcnNpb259L1JFQURNRS50 eHQvdmlldyIKIGRpc3RmaWxlcz0iJHtTT1VSQ0VGT1JHRV9TSVRFfS94aW5lLyR7cGtnbmFtZX0t JHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT1kNjA2MjcwNDY4ZTE1NDBjMmE4OWMwZDdmNWZk ZjExZTE3ZWNjMGMyNjk4Y2MwYmNiMTA2NWZmMjZhYmVlMDk4CitjaGVja3N1bT01ZjEwZDZkNzE4 YTRhNTFjMTdlZDFiMzJiMDMxZDRmOWI4MGIwNjFlODI3NjUzNWIyYmUzMWU1YWM0Yjc1ZTZmCiAK IGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgogCWk2ODYtbXVzbCkKCkZyb20gY2FiMzhi ZjI4YzZkOGU2MDFkZTJjZjRhMzg3ZWVlZmMxOWFmNGM5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDExLzExNV0gUU1QbGF5MjogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgYi9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUKaW5k ZXggNjNlYzJiNWI1M2QwNC4uZjI3NmViZDY3MmFjNyAxMDA2NDQKLS0tIGEvc3JjcGtncy9RTVBs YXkyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvUU1QbGF5Mi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ1FNUGxheTInCiBwa2duYW1lPVFNUGxheTIKIHZlcnNp b249MjMuMDguMDgKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBo b3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIgogbWFr ZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZy1kZXZlbCBsaWJhc3MtZGV2ZWwgbGliY2Rp by1kZXZlbCBsaWJnbWUtZGV2ZWwKCkZyb20gZGM3MzdkZTNmZDU5MTgzMjc3NGQyNTA3YWFiNzIw Yjk2OGNiNjRjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDEyLzExNV0gYWxzYS1wbHVnaW5zOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hbHNh LXBsdWdpbnMvdGVtcGxhdGUgYi9zcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZQppbmRleCAw YmZhNmQ5ZmQyNjQzLi5hNTcwOGE3ZDgyYThmIDEwMDY0NAotLS0gYS9zcmNwa2dzL2Fsc2EtcGx1 Z2lucy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Fsc2EtcGx1Z2lucycKIHBrZ25hbWU9YWxz YS1wbHVnaW5zCiB2ZXJzaW9uPTEuMi43LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxk X3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtbWFlbW8tcGx1 Z2luIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSBiOWY5MTgyZTlhNjE5Mzk5 YmQ0ZDJiMjcwYTljNzMyYjk3NmY5ZjI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTMvMTE1XSBhcmNhbjogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL2FyY2FuL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hcmNh bi90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXJjYW4vdGVtcGxhdGUKaW5kZXggODUzZTE2ZmNhZDM5MS4u NmIyZGE2ZmE2ZTYyZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9hcmNhbi90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2FyY2FuL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogIyAhISBrZWVwIHN5bmNlZCB3 aXRoOiBhY2ZnZnMgYWNsaXAgYWxvYWRpbWFnZQogcGtnbmFtZT1hcmNhbgogdmVyc2lvbj0wLjYu Mi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jr c3JjPWFyY2FuL3NyYwogYnVpbGRfc3R5bGU9Y21ha2UKCkZyb20gMWZjYjA3ODQ5NGI0YjI1Y2Zh ODAzN2I0ZGFiNjQzZGE5YTU5MTZmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE0LzExNV0gYXR0cmFjdDogcmV2YnVtcCBmb3IgZmZtcGVn NC00LjQuMwoKLS0tCiBzcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9hdHRyYWN0L3RlbXBsYXRlIGIvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlCmluZGV4IDI2 MTQ0ZTkzMWEzYzcuLmU3NjBiZjBkMThhZWMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXR0cmFjdC90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUKQEAgLTEsMTIgKzEsMTIgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F0dHJhY3QnCiBwa2duYW1lPWF0dHJhY3QKIHZlcnNpb249 Mi42LjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQog bWFrZV9idWlsZF9hcmdzPSJWRVJCT1NFPTEiCiBtYWtlX3VzZV9lbnY9eWVzCiBob3N0bWFrZWRl cGVuZHM9InBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iU0ZNTC1kZXZlbCBmZm1wZWctZGV2ZWwg Zm9udGNvbmZpZy1kZXZlbCBnbHUtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbAorbWFrZWRlcGVuZHM9 IlNGTUwtZGV2ZWwgZmZtcGVnNC1kZXZlbCBmb250Y29uZmlnLWRldmVsIGdsdS1kZXZlbCBsaWJh cmNoaXZlLWRldmVsCiAgbGliY3VybC1kZXZlbCBsaWJqcGVnLXR1cmJvLWRldmVsIHhpbmUtbGli IHJhcGlkanNvbiBsaWJYcmFuZHItZGV2ZWwiCiBkZXBlbmRzPSJnaXQiCiBzaG9ydF9kZXNjPSJB dHRyYWN0LU1vZGUgaXMgYSBncmFwaGljYWwgZnJvbnRlbmQgZm9yIGVtdWxhdG9ycyIKCkZyb20g ZDAxMzE4NzUyMTk3OWFiYzliOTExOTgwYTg2NWVlNzUyOWUwYjI3MSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE1LzExNV0gYXViaW86IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9hdWJpby9wYXRjaGVzL2ZmbXBlZzUu cGF0Y2ggfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2F1YmlvL3RlbXBs YXRlICAgICAgICAgICAgICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2F1YmlvL3BhdGNo ZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXViaW8vcGF0Y2hlcy9mZm1w ZWc1LnBhdGNoIGIvc3JjcGtncy9hdWJpby9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uYWFjZTQxYTZlNmQ5YQotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvYXViaW8vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEs MjUgQEAKK0Zyb20gOGEwNTQyMGU1ZGQ4YzdiOGIyNDQ3ZjgyZGM5MTk3NjU4NzY1MTFiMyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWwgQnJvc3NpZXIgPHBpZW1AcGllbS5vcmc+ CitEYXRlOiBUdWUsIDI1IEphbiAyMDIyIDE4OjMwOjI3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hd IFtzb3VyY2VfYXZjb2RlY10gZGVmaW5lIEZGX0FQSV9MQVZGX0FWQ1RYIGZvciBsaWJhdmNvZGVj ID4KKyA1OSwgdGh4IEBiZXJvbGludXggKGNsb3NlcyBnaC0zNTMpCisKKy0tLQorIHNyYy9pby9z b3VyY2VfYXZjb2RlYy5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygr KQorCitkaWZmIC0tZ2l0IGEvc3JjL2lvL3NvdXJjZV9hdmNvZGVjLmMgYi9zcmMvaW8vc291cmNl X2F2Y29kZWMuYworaW5kZXggZTBhZTkzYjUuLjE0MjFiZDlhIDEwMDY0NAorLS0tIGEvc3JjL2lv L3NvdXJjZV9hdmNvZGVjLmMKKysrKyBiL3NyYy9pby9zb3VyY2VfYXZjb2RlYy5jCitAQCAtNjgs NiArNjgsMTAgQEAKKyAjZGVmaW5lIEFVQklPX0FWQ09ERUNfTUFYX0JVRkZFUl9TSVpFIEFWX0lO UFVUX0JVRkZFUl9NSU5fU0laRQorICNlbmRpZgorIAorKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05f TUFKT1IgPj0gNTkKKysjZGVmaW5lIEZGX0FQSV9MQVZGX0FWQ1RYIDEKKysjZW5kaWYKKysKKyBz dHJ1Y3QgX2F1YmlvX3NvdXJjZV9hdmNvZGVjX3QgeworICAgdWludF90IGhvcF9zaXplOworICAg dWludF90IHNhbXBsZXJhdGU7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1YmlvL3RlbXBsYXRlIGIv c3JjcGtncy9hdWJpby90ZW1wbGF0ZQppbmRleCBhZDFjNGIyNTY5OTE3Li43ZDg3NWNjMDI1NDFh IDEwMDY0NAotLS0gYS9zcmNwa2dzL2F1YmlvL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYXViaW8v dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhdWJpbycKIHBr Z25hbWU9YXViaW8KIHZlcnNpb249MC40LjkKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxk X3N0eWxlPXdhZjMKICMgWFhYIGxhc2gsIHB1cmUgYW5kIHN3aWcgc3VwcG9ydC4KIGhvc3RtYWtl ZGVwZW5kcz0icGtnLWNvbmZpZyB0eHQybWFuIgoKRnJvbSBlNzdmMGQ0YmY0NWQzNzU4ODJlMzJh YTQyZGJmNzA5YTU4ODQ3ZTk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMTYvMTE1XSBhdWRhY2lvdXMtcGx1Z2luczogcmV2YnVtcCBmb3Ig ZmZtcGVnLTYuMAoKLS0tCiAuLi4vYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBh dGNoICAgfCA0MyArKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5z L3RlbXBsYXRlICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9hdWRhY2lv dXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1 ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvYXVkYWNpb3Vz LXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAuLjRlNWUzNDA5OWQ3MWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDQzIEBA Citjb21taXQgMjk4YWEzNzFjNTZjMmY1MmMyNWEzM2Q5YmRlYzQ5MThiMTFjZWJkYworQXV0aG9y OiB0aWJlcXVhZG9yaWFuIDx0aWJlcXVhZG9yaWFuQHBvc3Rlby5kZT4KK0RhdGU6ICAgU2F0IE1h ciAxOSAxODo0MDoxMiAyMDIyICswMTAwCisKKyAgICBhdWRhY2lvdXMtcGx1Z2luczogcmVidWls ZCBhZ2FpbnN0IGZmbXBlZy01LjAKKworZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXVkYWNpb3VzLXBs dWdpbnMvcGF0Y2hlcy9mZm1wZWctNS4wLnBhdGNoIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lu cy9wYXRjaGVzL2ZmbXBlZy01LjAucGF0Y2gKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwMDAwLi42MTdjMTEyMTViCistLS0gL2Rldi9udWxsCisrKysgYi9zcmNwa2dzL2F1ZGFj aW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnLTUuMC5wYXRjaAorQEAgLTAsMCArMSwzMSBAQAor K0Zyb20gZjYwYmViNDAwZWViMWU0Nzc4YmJmZDczOGJjNGE0Y2NlZjNkZTUzOSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKKytGcm9tOiBKb2huIExpbmRncmVuIDxqb2huQGpsaW5kZ3Jlbi5uZXQ+ CisrRGF0ZTogU2F0LCA1IE1hciAyMDIyIDEyOjA1OjM0IC0wNTAwCisrU3ViamVjdDogW1BBVENI XSBGaXggYnVpbGQgd2l0aCBGRm1wZWcgNS4wCisrCisrLS0tCisrIHNyYy9mZmF1ZGlvL2ZmYXVk aW8tY29yZS5jYyB8IDQgKystLQorKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAy IGRlbGV0aW9ucygtKQorKworK2RpZmYgLS1naXQgYS9zcmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUu Y2MgYi9zcmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUuY2MKKytpbmRleCAxNmRjNjNlM2EuLmEyYjk1 ZmQ2YyAxMDA2NDQKKystLS0gYS9zcmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUuY2MKKysrKysgYi9z cmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUuY2MKKytAQCAtMjc0LDcgKzI3NCw3IEBAIHN0YXRpYyBB VklucHV0Rm9ybWF0ICogZ2V0X2Zvcm1hdF9ieV9jb250ZW50IChjb25zdCBjaGFyICogbmFtZSwg VkZTRmlsZSAmIGZpbGUpCisrICAgICAgICAgQVZQcm9iZURhdGEgZCA9IHtuYW1lLCBidWYsIGZp bGxlZH07CisrICAgICAgICAgc2NvcmUgPSB0YXJnZXQ7CisrIAorKy0gICAgICAgIGYgPSBhdl9w cm9iZV9pbnB1dF9mb3JtYXQyICgmIGQsIHRydWUsICYgc2NvcmUpOworKysgICAgICAgIGYgPSAo QVZJbnB1dEZvcm1hdCAqKSBhdl9wcm9iZV9pbnB1dF9mb3JtYXQyICgmIGQsIHRydWUsICYgc2Nv cmUpOworKyAgICAgICAgIGlmIChmKQorKyAgICAgICAgICAgICBicmVhazsKKysgCisrQEAgLTM0 Nyw3ICszNDcsNyBAQCBzdGF0aWMgYm9vbCBmaW5kX2NvZGVjIChBVkZvcm1hdENvbnRleHQgKiBj LCBDb2RlY0luZm8gKiBjaW5mbykKKysgI2VuZGlmCisrICAgICAgICAgaWYgKHN0cmVhbSAmJiBz dHJlYW0tPmNvZGVjcGFyICYmIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJ QV9UWVBFX0FVRElPKQorKyAgICAgICAgIHsKKystICAgICAgICAgICAgQVZDb2RlYyAqIGNvZGVj ID0gYXZjb2RlY19maW5kX2RlY29kZXIgKHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysr ICAgICAgICAgICAgQVZDb2RlYyAqIGNvZGVjID0gKEFWQ29kZWMgKikgYXZjb2RlY19maW5kX2Rl Y29kZXIgKHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysgCisrICAgICAgICAgICAgIGlm IChjb2RlYykKKysgICAgICAgICAgICAgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdWRhY2lvdXMt cGx1Z2lucy90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUKaW5k ZXggODhjYmMxNjcxZmM2YS4uYmVlYmZhZTU5ZWQ0NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9hdWRh Y2lvdXMtcGx1Z2lucy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3Rl bXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogI0tlZXAgaW4gc3luYyB3aXRoIGF1ZGFjaW91cyEKIHBr Z25hbWU9YXVkYWNpb3VzLXBsdWdpbnMKIHZlcnNpb249NC4zLjEKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iJCh2b3B0X2Jvb2wgZ3Rr MyBndGspICQodm9wdF9ib29sIGd0azMpCiAgJCh2b3B0X2Jvb2wgcXQpICQodm9wdF9ib29sIHF0 IHF0NikiCgpGcm9tIDcyMjBlM2E2ZGU0N2Y4MWI1ZWQ0NjgyODJjMmY0NzgyNDJmMWUxYzUgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNy8x MTVdIGF1ZGFjaXR5OiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvYXVk YWNpdHkvdGVtcGxhdGUgfCA1ICsrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp LCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUg Yi9zcmNwa2dzL2F1ZGFjaXR5L3RlbXBsYXRlCmluZGV4IDI4ZTljNGEzNTI4ZjEuLjRlNTEyNWJh ZTAzYjkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9hdWRhY2l0eS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2F1ZGFjaXR5JwogcGtnbmFtZT1hdWRhY2l0eQogdmVyc2lvbj0yLjQuMQotcmV2aXNpb249Mgor cmV2aXNpb249MwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0t d2l0aC1mZm1wZWc9c3lzdGVtIC0td2l0aC1saWJzbmRmaWxlPXN5c3RlbSAtLXdpdGgtZXhwYXQ9 c3lzdGVtCiAgLS13aXRoLWxpYnNveHI9c3lzdGVtIC0td2l0aC1sYW1lPXN5c3RlbSAtLXdpdGgt bHYyPXN5c3RlbSBhY19jdl9wYXRoX1dYX0NPTkZJRz13eC1jb25maWctZ3RrMyIKQEAgLTksNyAr OSw3IEBAIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBjbWFrZSBnZXR0ZXh0IGxpYnRvb2wg bTQgd2hpY2giCiBtYWtlZGVwZW5kcz0iamFjay1kZXZlbCB3eFdpZGdldHMtZ3RrMy1kZXZlbCBn dGsrMy1kZXZlbAogIGxpYm1hZC1kZXZlbCBzb3VuZHRvdWNoLWRldmVsIGxpYnNveHItZGV2ZWwK ICB2YW1wLXBsdWdpbi1zZGstZGV2ZWwgbGFtZS1kZXZlbCBsaWJpZDN0YWctZGV2ZWwgbGliZmxh Yy1kZXZlbAotIGZmbXBlZy1kZXZlbCB0d29sYW1lLWRldmVsIHNlcmQtZGV2ZWwgbHYyIGxpbHYt ZGV2ZWwgc3VpbC1kZXZlbCIKKyBmZm1wZWc0LWRldmVsIHR3b2xhbWUtZGV2ZWwgc2VyZC1kZXZl bCBsdjIgbGlsdi1kZXZlbCBzdWlsLWRldmVsIgogZGVwZW5kcz0iZGVza3RvcC1maWxlLXV0aWxz IGhpY29sb3ItaWNvbi10aGVtZSIKIHNob3J0X2Rlc2M9IkdyYXBoaWNhbCBjcm9zcy1wbGF0Zm9y bSBhdWRpbyBlZGl0b3IiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5v cmc+IgpAQCAtMzIsNSArMzIsNCBAQCBwb3N0X2luc3RhbGwoKSB7CiAJdmNvcHkgcGx1Zy1pbnMg L3Vzci9zaGFyZS9hdWRhY2l0eQogCiAJcm0gJHtERVNURElSfS91c3Ivc2hhcmUvZG9jL2F1ZGFj aXR5L0xJQ0VOU0UudHh0Ci0JdmxpY2Vuc2UgTElDRU5TRS50eHQgTElDRU5TRQogfQoKRnJvbSBh MWQzMzUyMTllNzAzMjE0MWYxMmUzMjJiNzYxY2Q1MWYyY2MxMmJiIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTgvMTE1XSBhdmlkZW11eDog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2F2aWRlbXV4L3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXZpZGVtdXgvdGVt cGxhdGUKaW5kZXggMjUzYTAyNDNlMjI1OS4uNTU3Mjg1OTgyZDJiOCAxMDA2NDQKLS0tIGEvc3Jj cGtncy9hdmlkZW11eC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2F2aWRlbXV4L3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYXZpZGVtdXgnCiBwa2duYW1lPWF2 aWRlbXV4CiB2ZXJzaW9uPTIuOC4wCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiAjIENhbid0IGJl IGNvbXBpbGVkIGZvciBhYXJjaDY0LCBhcm0qIG9yIG1pcHMqCiBhcmNocz0ieDg2XzY0KiBpNjg2 KiIKIGhvc3RtYWtlZGVwZW5kcz0iY21ha2UgcGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUt ZGV2ZWwgdGFyIHlhc20iCgpGcm9tIDNkMDc2NTRhYTQ3ODQ3NWYxNmYzYTE3YmZmODk0MDU4YWNj YWVmMjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BB VENIIDAxOS8xMTVdIGJhcmVzaXA6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9iYXJlc2lwL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlIGIv c3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlCmluZGV4IGYxYmQxODE3MDQ4YjUuLmIyMWUyMjMzNDMx NmUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Jh cmVzaXAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdiYXJl c2lwJwogcGtnbmFtZT1iYXJlc2lwCiB2ZXJzaW9uPTIuMTAuMAotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBnbGli LWRldmVsIgogbWFrZWRlcGVuZHM9ImxpYmdzbS1kZXZlbCBsaWJwbmctZGV2ZWwgb3BlbnNzbC1k ZXZlbCBsaWJzbmRmaWxlLWRldmVsCgpGcm9tIGJjMDc5YjZkNDBhMmVhNTIxYjRjYTdjZTA3Njli NTYxOTYwN2IxMjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVj dDogW1BBVENIIDAyMC8xMTVdIGJsZW5kZXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmxlbmRlci90 ZW1wbGF0ZSBiL3NyY3BrZ3MvYmxlbmRlci90ZW1wbGF0ZQppbmRleCA1NWVkYzg0ZWIxMTA4Li4z NTAwYWQ5NWFkOThiIDEwMDY0NAotLS0gYS9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlCkBAIC05LDggKzksOCBAQCBjb25maWd1cmVfYXJncz0i LURXSVRIX0lOU1RBTExfUE9SVEFCTEU9T0ZGIC1EV0lUSF9QWVRIT05fSU5TVEFMTD1PRkYKICAt RFdJVEhfSkFDSz1PTiAtRFdJVEhfQ09ERUNfRkZNUEVHPU9OIC1EV0lUSF9DT0RFQ19TTkRGSUxF PU9OIC1EV0lUSF9PUEVOTVA9T04KICAtRFdJVEhfRkZUVzM9T04gLURXSVRIX01PRF9PQ0VBTlNJ TT1PTiAtRFdJVEhfQ1lDTEVTX0VNQlJFRT1PRkYgLURXSVRIX09QRU5DT0xPUklPPU9OCiAgLURX SVRIX0lNQUdFX09QRU5FWFI9T04gLURXSVRIX0lNQUdFX09QRU5KUEVHPU9OIC1EV0lUSF9PUEVO U1VCRElWPU9OCi0gLURXSVRIX09QRU5DT0xMQURBPU9OIC1EV0lUSF9TWVNURU1fR0xFVz1PTiAt RFdJVEhfT1BFTlZEQj1PTiAtRFdJVEhfQUxFTUJJQz1PTgotIC1EV0lUSF9HSE9TVF9YMTE9T04g LURXSVRIX0dIT1NUX1dBWUxBTkQ9T04gLURXSVRIX0dIT1NUX0xJQkRFQ09SPU9OCisgLURXSVRI X09QRU5DT0xMQURBPU9OIC1EV0lUSF9PUEVOVkRCPU9OIC1EV0lUSF9BTEVNQklDPU9OCisgLURX SVRIX0dIT1NUX1gxMT1PTiAtRFdJVEhfR0hPU1RfV0FZTEFORD1PTiAtRFdJVEhfR0hPU1RfV0FZ TEFORF9MSUJERUNPUj1PTgogIC1EV0lUSF9CVUlMRElORk89T0ZGIC1EUFlUSE9OX1ZFUlNJT049 JHtweTNfdmVyfSAtRFBZVEhPTl9MSUJQQVRIPS91c3IvbGliCiAgLURQWVRIT05fTElCUkFSWT1w eXRob24ke3B5M192ZXJ9JHtweTNfYWJpdmVyfSAtRFBZVEhPTl9JTkNMVURFX0RJUlM9LyR7cHkz X2luY30KICAtRFdJVEhfU1lTVEVNX0xaTz1PTiAtRFdJVEhfU1lTVEVNX0VJR0VOMz1PTiAtRFdJ VEhfU1lTVEVNX0ZSRUVUWVBFPU9OIgoKRnJvbSA4OTJlNDllNjgzMWY4ZjNmODBjNTUwYmM4Nzlj YmQwZWZlNGM3Y2ZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMjEvMTE1XSBjYW50YXRhOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0K IHNyY3BrZ3MvY2FudGF0YS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2FudGF0YS90ZW1w bGF0ZSBiL3NyY3BrZ3MvY2FudGF0YS90ZW1wbGF0ZQppbmRleCA0YjQxN2Q4MGQ1YzJkLi44YTkw YWFhNGMwN2EyIDEwMDY0NAotLS0gYS9zcmNwa2dzL2NhbnRhdGEvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9jYW50YXRhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnY2FudGF0YScKIHBrZ25hbWU9Y2FudGF0YQogdmVyc2lvbj0yLjUuMAotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZp ZyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMgcXQ1LXRvb2xzIgogbWFrZWRlcGVuZHM9InF0NS1k ZXZlbCBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBxdDUteG1scGF0dGVybnMtZGV2ZWwK CkZyb20gNjczNzhlZjdkODI0NzY3MjFlMGU2ZjBmNDZhZWI0ZTQyZGY3Y2Q2NiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDIyLzExNV0gY2Nl eHRyYWN0b3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9jY2V4dHJh Y3Rvci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NjZXh0cmFjdG9yL3RlbXBsYXRl IGIvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZQppbmRleCA5YWJjZDgyODUyYjI3Li42ZWNj YWQ1ODg1YWY5IDEwMDY0NAotLS0gYS9zcmNwa2dzL2NjZXh0cmFjdG9yL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvY2NleHRyYWN0b3IvdGVtcGxhdGUKQEAgLTEsMTIgKzEsMTIgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ2NjZXh0cmFjdG9yJwogcGtnbmFtZT1jY2V4dHJhY3RvcgogdmVyc2lvbj0w LjkzCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF93cmtzcmM9ImxpbnV4IgogYnVpbGRf c3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZW5hYmxlLW9jciAtLWVuYWJs ZS1oYXJkc3VieCIKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgcGtnLWNvbmZpZyIKLW1ha2Vk ZXBlbmRzPSJsZXB0b25pY2EtZGV2ZWwgdGVzc2VyYWN0LW9jci1kZXZlbCBmZm1wZWctZGV2ZWwi CittYWtlZGVwZW5kcz0ibGVwdG9uaWNhLWRldmVsIHRlc3NlcmFjdC1vY3ItZGV2ZWwgZmZtcGVn NC1kZXZlbCIKIHNob3J0X2Rlc2M9IkV4dHJhY3Qgc3VidGl0bGVzIGZyb20gdmlkZW8gc3RyZWFt cyIKIG1haW50YWluZXI9Im5ld2JsdWVtb29uIDxibGF1bW9sY2hAbWFpbGJveC5vcmc+IgogbGlj ZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKCkZyb20gNTU1Y2E0OGVlYzNlMDhhNWRjMTRkNzBkZjQz ZWE5MDlmZWVmOGM5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDIzLzExNV0gY2hyb21hcHJpbnQ6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9jaHJvbWFwcmludC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggfCA1NjkgKysr KysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9jaHJvbWFwcmludC90ZW1wbGF0ZSAgICAgICAg ICAgICAgfCAgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNTcwIGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Nocm9tYXByaW50L3BhdGNoZXMv ZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9m Zm1wZWc1LnBhdGNoIGIvc3JjcGtncy9jaHJvbWFwcmludC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uYTlmZDMwN2EyM2M4YQot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBh dGNoCkBAIC0wLDAgKzEsNTY5IEBACitGcm9tIDhjY2FkNjkzNzE3N2IxYjkyZTQwYWI4ZjQ0NDdl YTI3YmFjMDA5YTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/THVr PUMzPUExPUM1PUExPTIwTGFsaW5zaz1DMz1CRD89IDxsYWxpbnNreUBnbWFpbC5jb20+CitEYXRl OiBGcmksIDQgTm92IDIwMjIgMjE6NDc6MzggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIEZG bXBlZyA1LnggKCMxMjApCisKKyogVXNlIEZGbXBlZyA1LjEuMiBmb3IgQ0kgYnVpbGRzCisKKyog QnVpbGQgb24gVWJ1bnR1IDIwLjA0CisKKyogVXBncmFkZSBjb2RlIHRvIEZGbXBlZyA1LnggQVBJ cworCisqIE9ubHkgc2V0IEZGbXBlZyBpbmNsdWRlIGRpcnMgaWYgYnVpbGRpbmcgdG9vbHMKKwor KiBObyBsb25nZXIgbmVlZGVkCisKKyogVXNlIHVidW50dSAyMC4wNAorLS0tCisgLmdpdGh1Yi93 b3JrZmxvd3MvYnVpbGQueW1sICAgICAgICAgICAgICAgICAgIHwgICA2ICstCisgQ01ha2VMaXN0 cy50eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2IC0tCisgcGFja2FnZS9i dWlsZC5zaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCisgc3JjL2F1ZGlv L2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaCAgICAgICAgICAgIHwgICAyIC0KKyBzcmMvYXVkaW8v ZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmggfCAgNzIgLS0tLS0tLQorIHNyYy9h dWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaCB8ICAxOCArLQorIHNyYy9h dWRpby9mZm1wZWdfYXVkaW9fcmVhZGVyLmggICAgICAgICAgICAgICB8IDE5NyArKysrKysrKyst LS0tLS0tLS0KKyB0ZXN0cy9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDYgKworIDggZmlsZXMgY2hhbmdlZCwgMTIyIGluc2VydGlvbnMoKyksIDE5OSBkZWxldGlv bnMoLSkKKyBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNz b3JfYXZyZXNhbXBsZS5oCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlz dHMudHh0CitpbmRleCBmOGQ2YTMyLi40ZGEyNDA1IDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50 eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtODQsOSArODQsNiBAQCBmaW5kX3BhY2thZ2Uo RkZtcGVnKQorIGlmKEZGTVBFR19MSUJSQVJJRVMpCisgCWNtYWtlX3B1c2hfY2hlY2tfc3RhdGUo UkVTRVQpCisgCXNldChDTUFLRV9SRVFVSVJFRF9MSUJSQVJJRVMgJHtGRk1QRUdfTElCUkFSSUVT fSAke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9IC1sbSkKKy0JY2hlY2tfZnVuY3Rpb25fZXhpc3Rz KGF2X3BhY2tldF91bnJlZiBIQVZFX0FWX1BBQ0tFVF9VTlJFRikKKy0JY2hlY2tfZnVuY3Rpb25f ZXhpc3RzKGF2X2ZyYW1lX2FsbG9jIEhBVkVfQVZfRlJBTUVfQUxMT0MpCistCWNoZWNrX2Z1bmN0 aW9uX2V4aXN0cyhhdl9mcmFtZV9mcmVlIEhBVkVfQVZfRlJBTUVfRlJFRSkKKyAJY21ha2VfcG9w X2NoZWNrX3N0YXRlKCkKKyBlbmRpZigpCisKK0BAIC0xNjMsMTQgKzE2MCwxMSBAQCBtZXNzYWdl KFNUQVRVUyAiVXNpbmcgJHtGRlRfTElCfSBmb3IgRkZUIGNhbGN1bGF0aW9ucyIpCisgaWYoTk9U IEFVRElPX1BST0NFU1NPUl9MSUIpCisgCWlmKEZGTVBFR19MSUJTV1JFU0FNUExFX0ZPVU5EKQor IAkJc2V0KEFVRElPX1BST0NFU1NPUl9MSUIgInN3cmVzYW1wbGUiKQorLQllbHNlaWYoRkZNUEVH X0xJQkFWUkVTQU1QTEVfRk9VTkQpCistCQlzZXQoQVVESU9fUFJPQ0VTU09SX0xJQiAiYXZyZXNh bXBsZSIpCisgCWVuZGlmKCkKKyBlbmRpZigpCisKKyBpZihBVURJT19QUk9DRVNTT1JfTElCIFNU UkVRVUFMICJzd3Jlc2FtcGxlIikKKyAJaWYoRkZNUEVHX0xJQlNXUkVTQU1QTEVfRk9VTkQpCist CQlzZXQoVVNFX0FWUkVTQU1QTEUgT0ZGKQorIAkJc2V0KFVTRV9TV1JFU0FNUExFIE9OKQorIAkJ c2V0KEFVRElPX1BST0NFU1NPUl9MSUJSQVJJRVMgJHtGRk1QRUdfTElCU1dSRVNBTVBMRV9MSUJS QVJJRVN9KQorIAkJc2V0KEFVRElPX1BST0NFU1NPUl9JTkNMVURFX0RJUlMgJHtGRk1QRUdfTElC U1dSRVNBTVBMRV9JTkNMVURFX0RJUlN9KQorQEAgLTE3OCwxNiArMTcyLDYgQEAgaWYoQVVESU9f UFJPQ0VTU09SX0xJQiBTVFJFUVVBTCAic3dyZXNhbXBsZSIpCisgCQltZXNzYWdlKEZBVEFMX0VS Uk9SICJTZWxlY3RlZCAke0FVRElPX1BST0NFU1NPUl9MSUJ9IGZvciBhdWRpbyBwcm9jZXNzaW5n LCBidXQgdGhlIGxpYnJhcnkgaXMgbm90IGZvdW5kIikKKyAJZW5kaWYoKQorIAltZXNzYWdlKFNU QVRVUyAiVXNpbmcgJHtBVURJT19QUk9DRVNTT1JfTElCfSBmb3IgYXVkaW8gY29udmVyc2lvbiIp CistZWxzZWlmKEFVRElPX1BST0NFU1NPUl9MSUIgU1RSRVFVQUwgImF2cmVzYW1wbGUiKQorLQlp ZihGRk1QRUdfTElCQVZSRVNBTVBMRV9GT1VORCkKKy0JCXNldChVU0VfQVZSRVNBTVBMRSBPTikK Ky0JCXNldChVU0VfU1dSRVNBTVBMRSBPRkYpCistCQlzZXQoQVVESU9fUFJPQ0VTU09SX0xJQlJB UklFUyAke0ZGTVBFR19MSUJBVlJFU0FNUExFX0xJQlJBUklFU30pCistCQlzZXQoQVVESU9fUFJP Q0VTU09SX0lOQ0xVREVfRElSUyAke0ZGTVBFR19MSUJBVlJFU0FNUExFX0lOQ0xVREVfRElSU30p CistCWVsc2UoKQorLQkJbWVzc2FnZShGQVRBTF9FUlJPUiAiU2VsZWN0ZWQgJHtBVURJT19QUk9D RVNTT1JfTElCfSBmb3IgYXVkaW8gcHJvY2Vzc2luZywgYnV0IHRoZSBsaWJyYXJ5IGlzIG5vdCBm b3VuZCIpCistCWVuZGlmKCkKKy0JbWVzc2FnZShTVEFUVVMgIlVzaW5nICR7QVVESU9fUFJPQ0VT U09SX0xJQn0gZm9yIGF1ZGlvIGNvbnZlcnNpb24iKQorIGVsc2UoKQorIAltZXNzYWdlKFNUQVRV UyAiQnVpbGRpbmcgd2l0aG91dCBhdWRpbyBjb252ZXJzaW9uIHN1cHBvcnQsIHBsZWFzZSBpbnN0 YWxsIEZGbXBlZyB3aXRoIGxpYnN3cmVzYW1wbGUiKQorIGVuZGlmKCkKK2RpZmYgLS1naXQgYS9w YWNrYWdlL2J1aWxkLnNoIGIvcGFja2FnZS9idWlsZC5zaAoraW5kZXggZGE2MzFhZS4uYjQxZDM2 ZSAxMDA3NTUKKy0tLSBhL3BhY2thZ2UvYnVpbGQuc2gKKysrKyBiL3BhY2thZ2UvYnVpbGQuc2gK K0BAIC03LDggKzcsOCBAQCBzZXQgLWV1eAorCisgQkFTRV9ESVI9JChjZCAkKGRpcm5hbWUgJDAp Ly4uICYmIHB3ZCkKKworLUZGTVBFR19WRVJTSU9OPTQuNC4xCistRkZNUEVHX0JVSUxEX1RBRz12 NC40LjEtMQorK0ZGTVBFR19WRVJTSU9OPTUuMS4yCisrRkZNUEVHX0JVSUxEX1RBRz12JHtGRk1Q RUdfVkVSU0lPTn0tMQorCisgVE1QX0JVSUxEX0RJUj0kQkFTRV9ESVIvJChta3RlbXAgLWQgYnVp bGQuWFhYWFhYWFgpCisgdHJhcCAncm0gLXJmICRUTVBfQlVJTERfRElSJyBFWElUCitkaWZmIC0t Z2l0IGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaCBiL3NyYy9hdWRpby9mZm1w ZWdfYXVkaW9fcHJvY2Vzc29yLmgKK2luZGV4IDc2MjhmYzcuLjM5ZjRmNmQgMTAwNjQ0CistLS0g YS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oCisrKysgYi9zcmMvYXVkaW8vZmZt cGVnX2F1ZGlvX3Byb2Nlc3Nvci5oCitAQCAtMTAsOCArMTAsNiBAQAorCisgI2lmIGRlZmluZWQo VVNFX1NXUkVTQU1QTEUpCisgI2luY2x1ZGUgImF1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jf c3dyZXNhbXBsZS5oIgorLSNlbGlmIGRlZmluZWQoVVNFX0FWUkVTQU1QTEUpCistI2luY2x1ZGUg ImF1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oIgorICNlbHNlCisgI2Vy cm9yICJubyBhdWRpbyBwcm9jZXNzaW5nIGxpYnJhcnkiCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEv c3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oIGIvc3JjL2F1ZGlv L2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oCitkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKK2luZGV4IGJkODVmOTIuLjAwMDAwMDAKKy0tLSBhL3NyYy9hdWRpby9mZm1wZWdfYXVk aW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaAorKysrIC9kZXYvbnVsbAorQEAgLTEsNzIgKzAsMCBA QAorLS8vIENvcHlyaWdodCAoQykgMjAxNiAgTHVrYXMgTGFsaW5za3kKKy0vLyBEaXN0cmlidXRl ZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UsIHNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxz LgorLQorLSNpZm5kZWYgQ0hST01BUFJJTlRfQVVESU9fRkZNUEVHX0FVRElPX1BST0NFU1NPUl9B VlJFU0FNUExFX0hfCistI2RlZmluZSBDSFJPTUFQUklOVF9BVURJT19GRk1QRUdfQVVESU9fUFJP Q0VTU09SX0FWUkVTQU1QTEVfSF8KKy0KKy1leHRlcm4gIkMiIHsKKy0jaW5jbHVkZSA8bGliYXZy ZXNhbXBsZS9hdnJlc2FtcGxlLmg+CistfQorLQorLW5hbWVzcGFjZSBjaHJvbWFwcmludCB7Cist CistY2xhc3MgRkZtcGVnQXVkaW9Qcm9jZXNzb3IgeworLXB1YmxpYzoKKy0JRkZtcGVnQXVkaW9Q cm9jZXNzb3IoKSB7CistCQltX3Jlc2FtcGxlX2N0eCA9IGF2cmVzYW1wbGVfYWxsb2NfY29udGV4 dCgpOworLQl9CistCistCX5GRm1wZWdBdWRpb1Byb2Nlc3NvcigpIHsKKy0JCWF2cmVzYW1wbGVf ZnJlZSgmbV9yZXNhbXBsZV9jdHgpOworLQl9CistCistCXZvaWQgU2V0Q29tcGF0aWJsZU1vZGUo KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImZpbHRlcl9zaXplIiwgMTYs IDApOworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJwaGFzZV9zaGlmdCIsIDgs IDApOworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJsaW5lYXJfaW50ZXJwIiwg MSwgMCk7CistCQlhdl9vcHRfc2V0X2RvdWJsZShtX3Jlc2FtcGxlX2N0eCwgImN1dG9mZiIsIDAu OCwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRJbnB1dENoYW5uZWxMYXlvdXQoaW50NjRfdCBjaGFu bmVsX2xheW91dCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJpbl9jaGFu bmVsX2xheW91dCIsIGNoYW5uZWxfbGF5b3V0LCAwKTsKKy0JfQorLQorLQl2b2lkIFNldElucHV0 U2FtcGxlRm9ybWF0KEFWU2FtcGxlRm9ybWF0IHNhbXBsZV9mb3JtYXQpIHsKKy0JCWF2X29wdF9z ZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAiaW5fc2FtcGxlX2ZtdCIsIHNhbXBsZV9mb3JtYXQsIDAp OworLQl9CistCistCXZvaWQgU2V0SW5wdXRTYW1wbGVSYXRlKGludCBzYW1wbGVfcmF0ZSkgewor LQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJpbl9zYW1wbGVfcmF0ZSIsIHNhbXBs ZV9yYXRlLCAwKTsKKy0JfQorLQorLQl2b2lkIFNldE91dHB1dENoYW5uZWxMYXlvdXQoaW50NjRf dCBjaGFubmVsX2xheW91dCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJv dXRfY2hhbm5lbF9sYXlvdXQiLCBjaGFubmVsX2xheW91dCwgMCk7CistCX0KKy0KKy0Jdm9pZCBT ZXRPdXRwdXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkgeworLQkJ YXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJvdXRfc2FtcGxlX2ZtdCIsIHNhbXBsZV9m b3JtYXQsIDApOworLQl9CistCistCXZvaWQgU2V0T3V0cHV0U2FtcGxlUmF0ZShpbnQgc2FtcGxl X3JhdGUpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAib3V0X3NhbXBsZV9m bXQiLCBzYW1wbGVfcmF0ZSwgMCk7CistCX0KKy0KKy0JaW50IEluaXQoKSB7CistCQlyZXR1cm4g YXZyZXNhbXBsZV9vcGVuKG1fcmVzYW1wbGVfY3R4KTsKKy0JfQorLQorLQlpbnQgQ29udmVydCh1 aW50OF90ICoqb3V0LCBpbnQgb3V0X2NvdW50LCBjb25zdCB1aW50OF90ICoqaW4sIGludCBpbl9j b3VudCkgeworLQkJcmV0dXJuIGF2cmVzYW1wbGVfY29udmVydChtX3Jlc2FtcGxlX2N0eCwgb3V0 LCAwLCBvdXRfY291bnQsICh1aW50OF90ICoqKSBpbiwgMCwgaW5fY291bnQpOworLQl9CistCist CWludCBGbHVzaCh1aW50OF90ICoqb3V0LCBpbnQgb3V0X2NvdW50KSB7CistCQlyZXR1cm4gYXZy ZXNhbXBsZV9yZWFkKG1fcmVzYW1wbGVfY3R4LCBvdXQsIG91dF9jb3VudCk7CistCX0KKy0KKy1w cml2YXRlOgorLQlBVkF1ZGlvUmVzYW1wbGVDb250ZXh0ICptX3Jlc2FtcGxlX2N0eCA9IG51bGxw dHI7CistfTsKKy0KKy19OyAvLyBuYW1lc3BhY2UgY2hyb21hcHJpbnQKKy0KKy0jZW5kaWYKK2Rp ZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmgg Yi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmgKK2luZGV4IGI4 NjI2NmIuLmIxZDRiZWEgMTAwNjQ0CistLS0gYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nl c3Nvcl9zd3Jlc2FtcGxlLmgKKysrKyBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29y X3N3cmVzYW1wbGUuaAorQEAgLTI4LDMwICsyOCwyOCBAQCBwdWJsaWM6CisgCQlhdl9vcHRfc2V0 X2RvdWJsZShtX3N3cl9jdHgsICJjdXRvZmYiLCAwLjgsIDApOworIAl9CisKKy0Jdm9pZCBTZXRJ bnB1dENoYW5uZWxMYXlvdXQoaW50NjRfdCBjaGFubmVsX2xheW91dCkgeworLQkJYXZfb3B0X3Nl dF9pbnQobV9zd3JfY3R4LCAiaWNsIiwgY2hhbm5lbF9sYXlvdXQsIDApOworLQkJYXZfb3B0X3Nl dF9pbnQobV9zd3JfY3R4LCAiaWNoIiwgYXZfZ2V0X2NoYW5uZWxfbGF5b3V0X25iX2NoYW5uZWxz KGNoYW5uZWxfbGF5b3V0KSwgMCk7CisrCXZvaWQgU2V0SW5wdXRDaGFubmVsTGF5b3V0KEFWQ2hh bm5lbExheW91dCAqY2hhbm5lbF9sYXlvdXQpIHsKKysJCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0 eCwgImluX2NoYW5uZWxfbGF5b3V0IiwgY2hhbm5lbF9sYXlvdXQtPnUubWFzaywgMCk7CisgCX0K KworIAl2b2lkIFNldElucHV0U2FtcGxlRm9ybWF0KEFWU2FtcGxlRm9ybWF0IHNhbXBsZV9mb3Jt YXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImlzZiIsIHNhbXBsZV9mb3JtYXQs IDApOworKwkJYXZfb3B0X3NldF9zYW1wbGVfZm10KG1fc3dyX2N0eCwgImluX3NhbXBsZV9mbXQi LCBzYW1wbGVfZm9ybWF0LCAwKTsKKyAJfQorCisgCXZvaWQgU2V0SW5wdXRTYW1wbGVSYXRlKGlu dCBzYW1wbGVfcmF0ZSkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaXNyIiwgc2Ft cGxlX3JhdGUsIDApOworKwkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaW5fc2FtcGxlX3Jh dGUiLCBzYW1wbGVfcmF0ZSwgMCk7CisgCX0KKworLQl2b2lkIFNldE91dHB1dENoYW5uZWxMYXlv dXQoaW50NjRfdCBjaGFubmVsX2xheW91dCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4 LCAib2NsIiwgY2hhbm5lbF9sYXlvdXQsIDApOworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4 LCAib2NoIiwgYXZfZ2V0X2NoYW5uZWxfbGF5b3V0X25iX2NoYW5uZWxzKGNoYW5uZWxfbGF5b3V0 KSwgMCk7CisrCXZvaWQgU2V0T3V0cHV0Q2hhbm5lbExheW91dChBVkNoYW5uZWxMYXlvdXQgKmNo YW5uZWxfbGF5b3V0KSB7CisrCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJvdXRfY2hhbm5l bF9sYXlvdXQiLCBjaGFubmVsX2xheW91dC0+dS5tYXNrLCAwKTsKKyAJfQorCisgCXZvaWQgU2V0 T3V0cHV0U2FtcGxlRm9ybWF0KEFWU2FtcGxlRm9ybWF0IHNhbXBsZV9mb3JtYXQpIHsKKy0JCWF2 X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm9zZiIsIHNhbXBsZV9mb3JtYXQsIDApOworKwkJYXZf b3B0X3NldF9zYW1wbGVfZm10KG1fc3dyX2N0eCwgIm91dF9zYW1wbGVfZm10Iiwgc2FtcGxlX2Zv cm1hdCwgMCk7CisgCX0KKworIAl2b2lkIFNldE91dHB1dFNhbXBsZVJhdGUoaW50IHNhbXBsZV9y YXRlKSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJvc3IiLCBzYW1wbGVfcmF0ZSwg MCk7CisrCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJvdXRfc2FtcGxlX3JhdGUiLCBzYW1w bGVfcmF0ZSwgMCk7CisgCX0KKworIAlpbnQgSW5pdCgpIHsKK2RpZmYgLS1naXQgYS9zcmMvYXVk aW8vZmZtcGVnX2F1ZGlvX3JlYWRlci5oIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIu aAoraW5kZXggNTU1MDE2NC4uMWM2YjM0NiAxMDA2NDQKKy0tLSBhL3NyYy9hdWRpby9mZm1wZWdf YXVkaW9fcmVhZGVyLmgKKysrKyBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcmVhZGVyLmgKK0BA IC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKKyAJYm9vbCBSZWFkKGNvbnN0IGludDE2X3QgKipkYXRh LCBzaXplX3QgKnNpemUpOworCisgCWJvb2wgSXNPcGVuKCkgY29uc3QgeyByZXR1cm4gbV9vcGVu ZWQ7IH0KKy0JYm9vbCBJc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9maW5pc2hlZCAmJiAh bV9nb3RfZnJhbWU7IH0KKysJYm9vbCBJc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gIW1faGFz X21vcmVfcGFja2V0cyAmJiAhbV9oYXNfbW9yZV9mcmFtZXM7IH0KKworIAlzdGQ6OnN0cmluZyBH ZXRFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KKyAJaW50IEdldEVycm9yQ29kZSgp IGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JfY29kZTsgfQorQEAgLTc0LDIwICs3NCwxOSBAQCBwcml2 YXRlOgorIAl1aW50OF90ICptX2NvbnZlcnRfYnVmZmVyWzFdID0geyBudWxscHRyIH07CisgCWlu dCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMgPSAwOworCistCUFWSW5wdXRGb3JtYXQgKm1f aW5wdXRfZm10ID0gbnVsbHB0cjsKKysJY29uc3QgQVZJbnB1dEZvcm1hdCAqbV9pbnB1dF9mbXQg PSBudWxscHRyOworIAlBVkRpY3Rpb25hcnkgKm1faW5wdXRfb3B0cyA9IG51bGxwdHI7CisKKyAJ QVZGb3JtYXRDb250ZXh0ICptX2Zvcm1hdF9jdHggPSBudWxscHRyOworIAlBVkNvZGVjQ29udGV4 dCAqbV9jb2RlY19jdHggPSBudWxscHRyOworLQlBVkZyYW1lICptX2ZyYW1lID0gbnVsbHB0cjsK KyAJaW50IG1fc3RyZWFtX2luZGV4ID0gLTE7CisgCXN0ZDo6c3RyaW5nIG1fZXJyb3I7CisgCWlu dCBtX2Vycm9yX2NvZGUgPSAwOworLQlib29sIG1fZmluaXNoZWQgPSBmYWxzZTsKKyAJYm9vbCBt X29wZW5lZCA9IGZhbHNlOworLQlpbnQgbV9nb3RfZnJhbWUgPSAwOworLQlBVlBhY2tldCBtX3Bh Y2tldDsKKy0JQVZQYWNrZXQgbV9wYWNrZXQwOworKwlib29sIG1faGFzX21vcmVfcGFja2V0cyA9 IHRydWU7CisrCWJvb2wgbV9oYXNfbW9yZV9mcmFtZXMgPSB0cnVlOworKwlBVlBhY2tldCAqbV9w YWNrZXQgPSBudWxscHRyOworKwlBVkZyYW1lICptX2ZyYW1lID0gbnVsbHB0cjsKKworIAlpbnQg bV9vdXRwdXRfc2FtcGxlX3JhdGUgPSAwOworIAlpbnQgbV9vdXRwdXRfY2hhbm5lbHMgPSAwOwor QEAgLTk4LDE5ICs5NywxMiBAQCBwcml2YXRlOgorCisgaW5saW5lIEZGbXBlZ0F1ZGlvUmVhZGVy OjpGRm1wZWdBdWRpb1JlYWRlcigpIHsKKyAJYXZfbG9nX3NldF9sZXZlbChBVl9MT0dfUVVJRVQp OworLQorLQlhdl9pbml0X3BhY2tldCgmbV9wYWNrZXQpOworLQltX3BhY2tldC5kYXRhID0gbnVs bHB0cjsKKy0JbV9wYWNrZXQuc2l6ZSA9IDA7CistCistCW1fcGFja2V0MCA9IG1fcGFja2V0Owor IH0KKworIGlubGluZSBGRm1wZWdBdWRpb1JlYWRlcjo6fkZGbXBlZ0F1ZGlvUmVhZGVyKCkgewor IAlDbG9zZSgpOworIAlhdl9kaWN0X2ZyZWUoJm1faW5wdXRfb3B0cyk7CisgCWF2X2ZyZWVwKCZt X2NvbnZlcnRfYnVmZmVyWzBdKTsKKy0JYXZfcGFja2V0X3VucmVmKCZtX3BhY2tldDApOworIH0K KworIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpTZXRJbnB1dEZvcm1hdChjb25zdCBj aGFyICpuYW1lKSB7CitAQCAtMTM1LDExICsxMjcsMTAgQEAgaW5saW5lIGJvb2wgRkZtcGVnQXVk aW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZpbGVfbmFtZSkgeworCisgCUNsb3Nl KCk7CisKKy0gICAgYXZfaW5pdF9wYWNrZXQoJm1fcGFja2V0KTsKKy0JbV9wYWNrZXQuZGF0YSA9 IG51bGxwdHI7CistCW1fcGFja2V0LnNpemUgPSAwOworLQorLQltX3BhY2tldDAgPSBtX3BhY2tl dDsKKysJbV9wYWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKysJaWYgKCFtX3BhY2tldCkgewor KwkJcmV0dXJuIGZhbHNlOworKwl9CisKKyAJcmV0ID0gYXZmb3JtYXRfb3Blbl9pbnB1dCgmbV9m b3JtYXRfY3R4LCBmaWxlX25hbWUuY19zdHIoKSwgbV9pbnB1dF9mbXQsICZtX2lucHV0X29wdHMp OworIAlpZiAocmV0IDwgMCkgeworQEAgLTE1MywyNiArMTQ0LDMxIEBAIGlubGluZSBib29sIEZG bXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKyAJ CXJldHVybiBmYWxzZTsKKyAJfQorCistCUFWQ29kZWMgKmNvZGVjOworKwljb25zdCBBVkNvZGVj ICpjb2RlYzsKKyAJcmV0ID0gYXZfZmluZF9iZXN0X3N0cmVhbShtX2Zvcm1hdF9jdHgsIEFWTUVE SUFfVFlQRV9BVURJTywgLTEsIC0xLCAmY29kZWMsIDApOworIAlpZiAocmV0IDwgMCkgeworIAkJ U2V0RXJyb3IoIkNvdWxkIG5vdCBmaW5kIGFueSBhdWRpbyBzdHJlYW0gaW4gdGhlIGZpbGUiLCBy ZXQpOworIAkJcmV0dXJuIGZhbHNlOworIAl9CisgCW1fc3RyZWFtX2luZGV4ID0gcmV0OworKwlh dXRvIHN0cmVhbSA9IG1fZm9ybWF0X2N0eC0+c3RyZWFtc1ttX3N0cmVhbV9pbmRleF07CisKKy0J bV9jb2RlY19jdHggPSBtX2Zvcm1hdF9jdHgtPnN0cmVhbXNbbV9zdHJlYW1faW5kZXhdLT5jb2Rl YzsKKysJbV9jb2RlY19jdHggPSBhdmNvZGVjX2FsbG9jX2NvbnRleHQzKGNvZGVjKTsKKyAJbV9j b2RlY19jdHgtPnJlcXVlc3Rfc2FtcGxlX2ZtdCA9IEFWX1NBTVBMRV9GTVRfUzE2OworCisrCXJl dCA9IGF2Y29kZWNfcGFyYW1ldGVyc190b19jb250ZXh0KG1fY29kZWNfY3R4LCBzdHJlYW0tPmNv ZGVjcGFyKTsKKysJaWYgKHJldCA8IDApIHsKKysJCVNldEVycm9yKCJDb3VsZCBub3QgY29weSB0 aGUgc3RyZWFtIHBhcmFtZXRlcnMiLCByZXQpOworKwkJcmV0dXJuIGZhbHNlOworKwl9CisrCisg CXJldCA9IGF2Y29kZWNfb3BlbjIobV9jb2RlY19jdHgsIGNvZGVjLCBudWxscHRyKTsKKyAJaWYg KHJldCA8IDApIHsKKyAJCVNldEVycm9yKCJDb3VsZCBub3Qgb3BlbiB0aGUgY29kZWMiLCByZXQp OworIAkJcmV0dXJuIGZhbHNlOworIAl9CisKKy0JaWYgKCFtX2NvZGVjX2N0eC0+Y2hhbm5lbF9s YXlvdXQpIHsKKy0JCW1fY29kZWNfY3R4LT5jaGFubmVsX2xheW91dCA9IGF2X2dldF9kZWZhdWx0 X2NoYW5uZWxfbGF5b3V0KG1fY29kZWNfY3R4LT5jaGFubmVscyk7CistCX0KKysJYXZfZHVtcF9m b3JtYXQobV9mb3JtYXRfY3R4LCAwLCAiZm9vIiwgMCk7CisKKyAJbV9mcmFtZSA9IGF2X2ZyYW1l X2FsbG9jKCk7CisgCWlmICghbV9mcmFtZSkgeworQEAgLTE4MywxOSArMTc5LDIzIEBAIGlubGlu ZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxlX25h bWUpIHsKKyAJCW1fb3V0cHV0X3NhbXBsZV9yYXRlID0gbV9jb2RlY19jdHgtPnNhbXBsZV9yYXRl OworIAl9CisKKy0JaWYgKCFtX291dHB1dF9jaGFubmVscykgeworLQkJbV9vdXRwdXRfY2hhbm5l bHMgPSBtX2NvZGVjX2N0eC0+Y2hhbm5lbHM7CisrCUFWQ2hhbm5lbExheW91dCBvdXRwdXRfY2hh bm5lbF9sYXlvdXQ7CisrCWlmIChtX291dHB1dF9jaGFubmVscykgeworKwkJYXZfY2hhbm5lbF9s YXlvdXRfZGVmYXVsdCgmb3V0cHV0X2NoYW5uZWxfbGF5b3V0LCBtX291dHB1dF9jaGFubmVscyk7 CisrCX0gZWxzZSB7CisrCQltX291dHB1dF9jaGFubmVscyA9IG1fY29kZWNfY3R4LT5jaF9sYXlv dXQubmJfY2hhbm5lbHM7CisrCQlhdl9jaGFubmVsX2xheW91dF9kZWZhdWx0KCZvdXRwdXRfY2hh bm5lbF9sYXlvdXQsIG1fb3V0cHV0X2NoYW5uZWxzKTsKKyAJfQorCistCWlmIChtX2NvZGVjX2N0 eC0+c2FtcGxlX2ZtdCAhPSBBVl9TQU1QTEVfRk1UX1MxNiB8fCBtX2NvZGVjX2N0eC0+Y2hhbm5l bHMgIT0gbV9vdXRwdXRfY2hhbm5lbHMgfHwgbV9jb2RlY19jdHgtPnNhbXBsZV9yYXRlICE9IG1f b3V0cHV0X3NhbXBsZV9yYXRlKSB7CisrCWlmIChtX2NvZGVjX2N0eC0+c2FtcGxlX2ZtdCAhPSBB Vl9TQU1QTEVfRk1UX1MxNiB8fCBtX2NvZGVjX2N0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzICE9 IG1fb3V0cHV0X2NoYW5uZWxzIHx8IG1fY29kZWNfY3R4LT5zYW1wbGVfcmF0ZSAhPSBtX291dHB1 dF9zYW1wbGVfcmF0ZSkgeworIAkJbV9jb252ZXJ0ZXIucmVzZXQobmV3IEZGbXBlZ0F1ZGlvUHJv Y2Vzc29yKCkpOworIAkJbV9jb252ZXJ0ZXItPlNldENvbXBhdGlibGVNb2RlKCk7CisgCQltX2Nv bnZlcnRlci0+U2V0SW5wdXRTYW1wbGVGb3JtYXQobV9jb2RlY19jdHgtPnNhbXBsZV9mbXQpOwor IAkJbV9jb252ZXJ0ZXItPlNldElucHV0U2FtcGxlUmF0ZShtX2NvZGVjX2N0eC0+c2FtcGxlX3Jh dGUpOworLQkJbV9jb252ZXJ0ZXItPlNldElucHV0Q2hhbm5lbExheW91dChtX2NvZGVjX2N0eC0+ Y2hhbm5lbF9sYXlvdXQpOworKwkJbV9jb252ZXJ0ZXItPlNldElucHV0Q2hhbm5lbExheW91dCgm KG1fY29kZWNfY3R4LT5jaF9sYXlvdXQpKTsKKyAJCW1fY29udmVydGVyLT5TZXRPdXRwdXRTYW1w bGVGb3JtYXQoQVZfU0FNUExFX0ZNVF9TMTYpOworIAkJbV9jb252ZXJ0ZXItPlNldE91dHB1dFNh bXBsZVJhdGUobV9vdXRwdXRfc2FtcGxlX3JhdGUpOworLQkJbV9jb252ZXJ0ZXItPlNldE91dHB1 dENoYW5uZWxMYXlvdXQoYXZfZ2V0X2RlZmF1bHRfY2hhbm5lbF9sYXlvdXQobV9vdXRwdXRfY2hh bm5lbHMpKTsKKysJCW1fY29udmVydGVyLT5TZXRPdXRwdXRDaGFubmVsTGF5b3V0KCZvdXRwdXRf Y2hhbm5lbF9sYXlvdXQpOworIAkJYXV0byByZXQgPSBtX2NvbnZlcnRlci0+SW5pdCgpOworIAkJ aWYgKHJldCAhPSAwKSB7CisgCQkJU2V0RXJyb3IoIkNvdWxkIG5vdCBjcmVhdGUgYW4gYXVkaW8g Y29udmVydGVyIGluc3RhbmNlIiwgcmV0KTsKK0BAIC0yMDMsMTAgKzIwMywxMSBAQCBpbmxpbmUg Ym9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6OnN0cmluZyAmZmlsZV9uYW1l KSB7CisgCQl9CisgCX0KKworKwlhdl9jaGFubmVsX2xheW91dF91bmluaXQoJm91dHB1dF9jaGFu bmVsX2xheW91dCk7CisrCisgCW1fb3BlbmVkID0gdHJ1ZTsKKy0JbV9maW5pc2hlZCA9IGZhbHNl OworLQltX2dvdF9mcmFtZSA9IDA7CistCW1fbmJfcGFja2V0cyA9IDA7CisrCW1faGFzX21vcmVf cGFja2V0cyA9IHRydWU7CisrCW1faGFzX21vcmVfZnJhbWVzID0gdHJ1ZTsKKyAJbV9kZWNvZGVf ZXJyb3IgPSAwOworCisgCXJldHVybiB0cnVlOworQEAgLTIxNCw2ICsyMTUsNyBAQCBpbmxpbmUg Ym9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6OnN0cmluZyAmZmlsZV9uYW1l KSB7CisKKyBpbmxpbmUgdm9pZCBGRm1wZWdBdWRpb1JlYWRlcjo6Q2xvc2UoKSB7CisgCWF2X2Zy YW1lX2ZyZWUoJm1fZnJhbWUpOworKwlhdl9wYWNrZXRfZnJlZSgmbV9wYWNrZXQpOworCisgCW1f c3RyZWFtX2luZGV4ID0gLTE7CisKK0BAIC0yNTIsOTEgKzI1NCw5OCBAQCBpbmxpbmUgYm9vbCBG Rm1wZWdBdWRpb1JlYWRlcjo6UmVhZChjb25zdCBpbnQxNl90ICoqZGF0YSwgc2l6ZV90ICpzaXpl KSB7CisgCQlyZXR1cm4gZmFsc2U7CisgCX0KKworKwkqZGF0YSA9IG51bGxwdHI7CisrCSpzaXpl ID0gMDsKKysKKyAJaW50IHJldDsKKysJYm9vbCBuZWVkc19wYWNrZXQgPSBmYWxzZTsKKyAJd2hp bGUgKHRydWUpIHsKKy0JCXdoaWxlIChtX3BhY2tldC5zaXplIDw9IDApIHsKKy0JCQlhdl9wYWNr ZXRfdW5yZWYoJm1fcGFja2V0MCk7CistCQkJYXZfaW5pdF9wYWNrZXQoJm1fcGFja2V0KTsKKy0J CQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JCQltX3BhY2tldC5zaXplID0gMDsKKy0JCQly ZXQgPSBhdl9yZWFkX2ZyYW1lKG1fZm9ybWF0X2N0eCwgJm1fcGFja2V0KTsKKysJCXdoaWxlIChu ZWVkc19wYWNrZXQgJiYgbV9wYWNrZXQtPnNpemUgPT0gMCkgeworKwkJCXJldCA9IGF2X3JlYWRf ZnJhbWUobV9mb3JtYXRfY3R4LCBtX3BhY2tldCk7CisgCQkJaWYgKHJldCA8IDApIHsKKyAJCQkJ aWYgKHJldCA9PSBBVkVSUk9SX0VPRikgeworLQkJCQkJbV9maW5pc2hlZCA9IHRydWU7CisrCQkJ CQluZWVkc19wYWNrZXQgPSBmYWxzZTsKKysJCQkJCW1faGFzX21vcmVfcGFja2V0cyA9IGZhbHNl OworIAkJCQkJYnJlYWs7CistCQkJCX0gZWxzZSB7CisrCQkJCX0KKysJCQkJU2V0RXJyb3IoIkVy cm9yIHJlYWRpbmcgZnJvbSB0aGUgYXVkaW8gc291cmNlIiwgcmV0KTsKKysJCQkJcmV0dXJuIGZh bHNlOworKwkJCX0KKysJCQlpZiAobV9wYWNrZXQtPnN0cmVhbV9pbmRleCA9PSBtX3N0cmVhbV9p bmRleCkgeworKwkJCQluZWVkc19wYWNrZXQgPSBmYWxzZTsKKysJCQl9IGVsc2UgeworKwkJCQlh dl9wYWNrZXRfdW5yZWYobV9wYWNrZXQpOworKwkJCX0KKysJCX0KKysKKysJCWlmIChtX3BhY2tl dC0+c2l6ZSAhPSAwKSB7CisrCQkJcmV0ID0gYXZjb2RlY19zZW5kX3BhY2tldChtX2NvZGVjX2N0 eCwgbV9wYWNrZXQpOworKwkJCWlmIChyZXQgPCAwKSB7CisrCQkJCWlmIChyZXQgIT0gQVZFUlJP UihFQUdBSU4pKSB7CisgCQkJCQlTZXRFcnJvcigiRXJyb3IgcmVhZGluZyBmcm9tIHRoZSBhdWRp byBzb3VyY2UiLCByZXQpOworIAkJCQkJcmV0dXJuIGZhbHNlOworIAkJCQl9CistCQkJfQorLQkJ CW1fcGFja2V0MCA9IG1fcGFja2V0OworLQkJCWlmIChtX3BhY2tldC5zdHJlYW1faW5kZXggIT0g bV9zdHJlYW1faW5kZXgpIHsKKy0JCQkJbV9wYWNrZXQuZGF0YSA9IG51bGxwdHI7CistCQkJCW1f cGFja2V0LnNpemUgPSAwOworIAkJCX0gZWxzZSB7CistCQkJCW1fbmJfcGFja2V0cysrOworKwkJ CQlhdl9wYWNrZXRfdW5yZWYobV9wYWNrZXQpOworIAkJCX0KKyAJCX0KKworLQkJcmV0ID0gYXZj b2RlY19kZWNvZGVfYXVkaW80KG1fY29kZWNfY3R4LCBtX2ZyYW1lLCAmbV9nb3RfZnJhbWUsICZt X3BhY2tldCk7CisrCQlyZXQgPSBhdmNvZGVjX3JlY2VpdmVfZnJhbWUobV9jb2RlY19jdHgsIG1f ZnJhbWUpOworIAkJaWYgKHJldCA8IDApIHsKKy0JCQlpZiAobV9kZWNvZGVfZXJyb3IpIHsKKy0J CQkJU2V0RXJyb3IoIkVycm9yIGRlY29kaW5nIGF1ZGlvIGZyYW1lIiwgbV9kZWNvZGVfZXJyb3Ip OworLQkJCQlyZXR1cm4gZmFsc2U7CisrCQkJaWYgKHJldCA9PSBBVkVSUk9SX0VPRikgeworKwkJ CQltX2hhc19tb3JlX2ZyYW1lcyA9IGZhbHNlOworKwkJCX0gZWxzZSBpZiAocmV0ID09IEFWRVJS T1IoRUFHQUlOKSkgeworKwkJCQlpZiAobV9oYXNfbW9yZV9wYWNrZXRzKSB7CisrCQkJCQluZWVk c19wYWNrZXQgPSB0cnVlOworKwkJCQkJY29udGludWU7CisrCQkJCX0gZWxzZSB7CisrCQkJCQlt X2hhc19tb3JlX2ZyYW1lcyA9IGZhbHNlOworKwkJCQl9CisgCQkJfQorLQkJCW1fZGVjb2RlX2Vy cm9yID0gcmV0OworLQkJCW1fcGFja2V0LmRhdGEgPSBudWxscHRyOworLQkJCW1fcGFja2V0LnNp emUgPSAwOworLQkJCWNvbnRpbnVlOworKwkJCVNldEVycm9yKCJFcnJvciBkZWNvZGluZyB0aGUg YXVkaW8gc291cmNlIiwgcmV0KTsKKysJCQlyZXR1cm4gZmFsc2U7CisgCQl9CisKKy0JCWJyZWFr OworLQl9CistCistCW1fZGVjb2RlX2Vycm9yID0gMDsKKy0KKy0JY29uc3QgaW50IGRlY29kZWQg PSBzdGQ6Om1pbihyZXQsIG1fcGFja2V0LnNpemUpOworLQltX3BhY2tldC5kYXRhICs9IGRlY29k ZWQ7CistCW1fcGFja2V0LnNpemUgLT0gZGVjb2RlZDsKKy0KKy0JaWYgKG1fZ290X2ZyYW1lKSB7 CistCQlpZiAobV9jb252ZXJ0ZXIpIHsKKy0JCQlpZiAobV9mcmFtZS0+bmJfc2FtcGxlcyA+IG1f Y29udmVydF9idWZmZXJfbmJfc2FtcGxlcykgeworLQkJCQlpbnQgbGluc2l6ZTsKKy0JCQkJYXZf ZnJlZXAoJm1fY29udmVydF9idWZmZXJbMF0pOworLQkJCQltX2NvbnZlcnRfYnVmZmVyX25iX3Nh bXBsZXMgPSBzdGQ6Om1heCgxMDI0ICogOCwgbV9mcmFtZS0+bmJfc2FtcGxlcyk7CistCQkJCXJl dCA9IGF2X3NhbXBsZXNfYWxsb2MobV9jb252ZXJ0X2J1ZmZlciwgJmxpbnNpemUsIG1fY29kZWNf Y3R4LT5jaGFubmVscywgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzLCBBVl9TQU1QTEVfRk1U X1MxNiwgMSk7CistCQkJCWlmIChyZXQgPCAwKSB7CistCQkJCQlTZXRFcnJvcigiQ291bGRuJ3Qg YWxsb2NhdGUgYXVkaW8gY29udmVydGVyIGJ1ZmZlciIsIHJldCk7CisrCQlpZiAobV9mcmFtZS0+ bmJfc2FtcGxlcyA+IDApIHsKKysJCQlpZiAobV9jb252ZXJ0ZXIpIHsKKysJCQkJaWYgKG1fZnJh bWUtPm5iX3NhbXBsZXMgPiBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMpIHsKKysJCQkJCWlu dCBsaW5zaXplOworKwkJCQkJYXZfZnJlZXAoJm1fY29udmVydF9idWZmZXJbMF0pOworKwkJCQkJ bV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzID0gc3RkOjptYXgoMTAyNCAqIDgsIG1fZnJhbWUt Pm5iX3NhbXBsZXMpOworKwkJCQkJcmV0ID0gYXZfc2FtcGxlc19hbGxvYyhtX2NvbnZlcnRfYnVm ZmVyLCAmbGluc2l6ZSwgbV9jb2RlY19jdHgtPmNoX2xheW91dC5uYl9jaGFubmVscywgbV9jb252 ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzLCBBVl9TQU1QTEVfRk1UX1MxNiwgMSk7CisrCQkJCQlpZiAo cmV0IDwgMCkgeworKwkJCQkJCVNldEVycm9yKCJDb3VsZG4ndCBhbGxvY2F0ZSBhdWRpbyBjb252 ZXJ0ZXIgYnVmZmVyIiwgcmV0KTsKKysJCQkJCQlyZXR1cm4gZmFsc2U7CisrCQkJCQl9CisrCQkJ CX0KKysJCQkJYXV0byBuYl9zYW1wbGVzID0gbV9jb252ZXJ0ZXItPkNvbnZlcnQobV9jb252ZXJ0 X2J1ZmZlciwgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzLCAoY29uc3QgdWludDhfdCAqKikg bV9mcmFtZS0+ZGF0YSwgbV9mcmFtZS0+bmJfc2FtcGxlcyk7CisrCQkJCWlmIChuYl9zYW1wbGVz IDwgMCkgeworKwkJCQkJU2V0RXJyb3IoIkNvdWxkbid0IGNvbnZlcnQgYXVkaW8iLCByZXQpOwor IAkJCQkJcmV0dXJuIGZhbHNlOworIAkJCQl9CistCQkJfQorLQkJCWF1dG8gbmJfc2FtcGxlcyA9 IG1fY29udmVydGVyLT5Db252ZXJ0KG1fY29udmVydF9idWZmZXIsIG1fY29udmVydF9idWZmZXJf bmJfc2FtcGxlcywgKGNvbnN0IHVpbnQ4X3QgKiopIG1fZnJhbWUtPmRhdGEsIG1fZnJhbWUtPm5i X3NhbXBsZXMpOworLQkJCWlmIChuYl9zYW1wbGVzIDwgMCkgeworLQkJCQlTZXRFcnJvcigiQ291 bGRuJ3QgY29udmVydCBhdWRpbyIsIHJldCk7CistCQkJCXJldHVybiBmYWxzZTsKKy0JCQl9Cist CQkJKmRhdGEgPSAoY29uc3QgaW50MTZfdCAqKSBtX2NvbnZlcnRfYnVmZmVyWzBdOworLQkJCSpz aXplID0gbmJfc2FtcGxlczsKKy0JCX0gZWxzZSB7CistCQkJKmRhdGEgPSAoY29uc3QgaW50MTZf dCAqKSBtX2ZyYW1lLT5kYXRhWzBdOworLQkJCSpzaXplID0gbV9mcmFtZS0+bmJfc2FtcGxlczsK Ky0JCX0KKy0JfSBlbHNlIHsKKy0JCWlmIChtX2ZpbmlzaGVkICYmIG1fY29udmVydGVyKSB7Cist CQkJYXV0byBuYl9zYW1wbGVzID0gbV9jb252ZXJ0ZXItPkZsdXNoKG1fY29udmVydF9idWZmZXIs IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcyk7CistCQkJaWYgKG5iX3NhbXBsZXMgPCAwKSB7 CistCQkJCVNldEVycm9yKCJDb3VsZG4ndCBjb252ZXJ0IGF1ZGlvIiwgcmV0KTsKKy0JCQkJcmV0 dXJuIGZhbHNlOworLQkJCX0gZWxzZSBpZiAobmJfc2FtcGxlcyA+IDApIHsKKy0JCQkJbV9nb3Rf ZnJhbWUgPSAxOworIAkJCQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1fY29udmVydF9idWZm ZXJbMF07CisgCQkJCSpzaXplID0gbmJfc2FtcGxlczsKKysJCQl9IGVsc2UgeworKwkJCQkqZGF0 YSA9IChjb25zdCBpbnQxNl90ICopIG1fZnJhbWUtPmRhdGFbMF07CisrCQkJCSpzaXplID0gbV9m cmFtZS0+bmJfc2FtcGxlczsKKysJCQl9CisrCQl9IGVsc2UgeworKwkJCWlmIChtX2NvbnZlcnRl cikgeworKwkJCQlpZiAoSXNGaW5pc2hlZCgpKSB7CisrCQkJCQlhdXRvIG5iX3NhbXBsZXMgPSBt X2NvbnZlcnRlci0+Rmx1c2gobV9jb252ZXJ0X2J1ZmZlciwgbV9jb252ZXJ0X2J1ZmZlcl9uYl9z YW1wbGVzKTsKKysJCQkJCWlmIChuYl9zYW1wbGVzIDwgMCkgeworKwkJCQkJCVNldEVycm9yKCJD b3VsZG4ndCBjb252ZXJ0IGF1ZGlvIiwgcmV0KTsKKysJCQkJCQlyZXR1cm4gZmFsc2U7CisrCQkJ CQl9IGVsc2UgaWYgKG5iX3NhbXBsZXMgPiAwKSB7CisrCQkJCQkJKmRhdGEgPSAoY29uc3QgaW50 MTZfdCAqKSBtX2NvbnZlcnRfYnVmZmVyWzBdOworKwkJCQkJCSpzaXplID0gbmJfc2FtcGxlczsK KysJCQkJCX0KKysJCQkJfQorIAkJCX0KKyAJCX0KKy0JfQorCistCXJldHVybiB0cnVlOworKwkJ cmV0dXJuIHRydWU7CisrCX0KKyB9CisKKyBpbmxpbmUgdm9pZCBGRm1wZWdBdWRpb1JlYWRlcjo6 U2V0RXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSwgaW50IGVycm51bSkgeworZGlmZiAtLWdpdCBh L3Rlc3RzL0NNYWtlTGlzdHMudHh0IGIvdGVzdHMvQ01ha2VMaXN0cy50eHQKK2luZGV4IGEyYjUx N2IuLjEyM2U2NDMgMTAwNjQ0CistLS0gYS90ZXN0cy9DTWFrZUxpc3RzLnR4dAorKysrIGIvdGVz dHMvQ01ha2VMaXN0cy50eHQKK0BAIC0zOCw2ICszOCwxMiBAQCBzZXQoU1JDUworCisgaWYoQlVJ TERfVE9PTFMpCisgCXNldChTUkNTICR7U1JDU30gLi4vc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19y ZWFkZXJfdGVzdC5jcHApCisrICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoCisrICAgICAgICAke0ZG TVBFR19MSUJBVkZPUk1BVF9JTkNMVURFX0RJUlN9CisrICAgICAgICAke0ZGTVBFR19MSUJBVkNP REVDX0lOQ0xVREVfRElSU30KKysgICAgICAgICR7RkZNUEVHX0xJQkFWVVRJTF9JTkNMVURFX0RJ UlN9CisrICAgICAgICAke0FVRElPX1BST0NFU1NPUl9JTkNMVURFX0RJUlN9CisrICAgICkKKyAJ bGlua19saWJyYXJpZXMoZnBjYWxjX2xpYnMpCisgZW5kaWYoKQorCistLSAKKzIuMzguMQorCisK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUgYi9zcmNwa2dzL2Nocm9t YXByaW50L3RlbXBsYXRlCmluZGV4IDdlZjc4Mzg5NDlmM2EuLjFmN2JiYzcwYTIyYzggMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jaHJvbWFw cmludC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Nocm9t YXByaW50JwogcGtnbmFtZT1jaHJvbWFwcmludAogdmVyc2lvbj0xLjUuMQotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREJVSUxEX1RP T0xTPU9OIgogbWFrZV9jaGVja190YXJnZXQ9ImNoZWNrIgoKRnJvbSBlMzIzMWJlOWM4MmJmMzc0 NThiODQ0NzhiMjYyMzIyNGZkYmZjMjk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjQvMTE1XSBjaHJvbWl1bTogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWctNC40LnBhdGNoICAg ICAgfCAzNiAtLS0tLS0tLS0tLS0tLQogc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUu cGF0Y2ggICAgICAgIHwgNDcgKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9jaHJvbWl1bS90 ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIDMgZmlsZXMgY2hhbmdlZCwgNDgg aW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9jaHJvbWl1bS9wYXRjaGVzL2Nocm9taXVtLTkzLWZmbXBlZy00LjQucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWctNC40LnBh dGNoIGIvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2Nocm9taXVtLTkzLWZmbXBlZy00LjQucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZWM3MzZmOThiYzcuLjAwMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2Nocm9taXVtLTkzLWZmbXBlZy00 LjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1kaWZmIC0tZ2l0IGEvbWVk aWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYyBiL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4 ZXIuY2MKLWluZGV4IGFjNDcxM2IwNzI2OC4uNDkyYTlhMzdkMDk2IDEwMDY0NAotLS0tIGEvbWVk aWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwotKysrIGIvbWVkaWEvZmlsdGVycy9mZm1wZWdf ZGVtdXhlci5jYwotQEAgLTQyNywxMSArNDI3LDExIEBAIHZvaWQgRkZtcGVnRGVtdXhlclN0cmVh bTo6RW5xdWV1ZVBhY2tldChTY29wZWRBVlBhY2tldCBwYWNrZXQpIHsKLSAgIHNjb3BlZF9yZWZw dHI8RGVjb2RlckJ1ZmZlcj4gYnVmZmVyOwotIAotICAgaWYgKHR5cGUoKSA9PSBEZW11eGVyU3Ry ZWFtOjpURVhUKSB7Ci0tICAgIHNpemVfdCBpZF9zaXplID0gMDsKLSsgICAgaW50IGlkX3NpemUg PSAwOwotICAgICB1aW50OF90KiBpZF9kYXRhID0gYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCi0g ICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1dFQlZUVF9JREVOVElGSUVSLCAmaWRf c2l6ZSk7Ci0gCi0tICAgIHNpemVfdCBzZXR0aW5nc19zaXplID0gMDsKLSsgICAgaW50IHNldHRp bmdzX3NpemUgPSAwOwotICAgICB1aW50OF90KiBzZXR0aW5nc19kYXRhID0gYXZfcGFja2V0X2dl dF9zaWRlX2RhdGEoCi0gICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1dFQlZUVF9T RVRUSU5HUywgJnNldHRpbmdzX3NpemUpOwotIAotQEAgLTQ0Myw3ICs0NDMsNyBAQCB2b2lkIEZG 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 dGUgYi9zcmNwa2dzL2Nocm9taXVtL3RlbXBsYXRlCmluZGV4IDdmZDBmOTRmYTdiNWUuLmNkMTU2 MTkzMzgzMTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9jaHJvbWl1bS90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9Y2hyb21pdW0K ICMgU2VlIGh0dHBzOi8vY2hyb21pdW1kYXNoLmFwcHNwb3QuY29tL3JlbGVhc2VzP3BsYXRmb3Jt PUxpbnV4IGZvciB0aGUgbGF0ZXN0IHZlcnNpb24KIHZlcnNpb249MTE2LjAuNTg0NS45NgotcmV2 aXNpb249MQorcmV2aXNpb249MgogYXJjaHM9Imk2ODYqIHg4Nl82NCogYWFyY2g2NCogYXJtdjds KiIKIGhvc3RtYWtlZGVwZW5kcz0iCiAgJCh2b3B0X2lmIGNsYW5nICJjbGFuZyBsbGQgbGx2bTE1 IikKCkZyb20gY2JiZDI1NjhlYWJhZWQ3ZDViZjcwYjcxNDQyMGE4MjNmYjI3ODk2YiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI1LzExNV0g Y211czogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2NtdXMvcGF0Y2hlcy9m Zm1wZWc2LnBhdGNoIHwgMTIgKysrKysrKysrKysrCiBzcmNwa2dzL2NtdXMvdGVtcGxhdGUgICAg ICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBl ZzYucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNo IGIvc3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAwLi5mZmE5NWFiODExMTAxCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApAQCAtMCwwICsxLDEyIEBACistLS0g YS9pcC9mZm1wZWcuYworKysrIGIvaXAvZmZtcGVnLmMKK0BAIC0yMDIsOSArMjAyLDYgQEAgc3Rh dGljIGludCBmZm1wZWdfb3BlbihzdHJ1Y3QgaW5wdXRfcGx1Z2luX2RhdGEgKmlwX2RhdGEpCisg CQkJYnJlYWs7CisgCQl9CisgCistCQlpZiAoY29kZWMtPmNhcGFiaWxpdGllcyAmIEFWX0NPREVD X0NBUF9UUlVOQ0FURUQpCistCQkJY2MtPmZsYWdzIHw9IEFWX0NPREVDX0ZMQUdfVFJVTkNBVEVE OworLQorIAkJaWYgKGF2Y29kZWNfb3BlbjIoY2MsIGNvZGVjLCBOVUxMKSA8IDApIHsKKyAJCQlk X3ByaW50KCJjb3VsZCBub3Qgb3BlbiBjb2RlYzogJWQsICVzXG4iLCBjYy0+Y29kZWNfaWQsIGF2 Y29kZWNfZ2V0X25hbWUoY2MtPmNvZGVjX2lkKSk7CisgCQkJZXJyID0gLUlQX0VSUk9SX1VOU1VQ UE9SVEVEX0ZJTEVfVFlQRTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY211cy90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvY211cy90ZW1wbGF0ZQppbmRleCAwZmRjZWM0NjFjMjE3Li42YzA3ZTI1ZTZkNzI3IDEw MDY0NAotLS0gYS9zcmNwa2dzL2NtdXMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jbXVzL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY211cycKIHBrZ25hbWU9 Y211cwogdmVyc2lvbj0yLjEwLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9InByZWZpeD0vdXNyIExEPSRDQyIKIGhvc3RtYWtl ZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gOGJiZTRmMjc3Y2FiNzk0MTZlYTZmYWFmNmI4ZDI2 ODUzODJlODcxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDI2LzExNV0gY3lhbnJpcDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2N5YW5yaXAvdGVtcGxh dGUgYi9zcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUKaW5kZXggOTc5NmUzNDYxNjAxYS4uNWRiMzBl MDIwZDE3ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9jeWFucmlwL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvY3lhbnJpcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2N5YW5yaXAnCiBwa2duYW1lPWN5YW5yaXAKIHZlcnNpb249MC45LjAKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWci CiBtYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGliY2Rpby1wYXJhbm9p YS1kZXZlbCBsaWJjdXJsLWRldmVsIGxpYm11c2ljYnJhaW56NS1kZXZlbCIKCkZyb20gNTczYWVk ZTc5NjU4YTQzZGMzNjYxOGY2MTUwMjc0YjQ4ZWQ0ZDE0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI3LzExNV0gZGVhZGJlZWY6IHJldmJ1 bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0ZSB8IDQg KystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlIGIvc3JjcGtncy9kZWFkYmVlZi90 ZW1wbGF0ZQppbmRleCBiNjY0YmIxYjliZDlmLi4xNjViM2M3YjljYWQ4IDEwMDY0NAotLS0gYS9z cmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUK QEAgLTEsMTQgKzEsMTQgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2RlYWRiZWVmJwogcGtnbmFt ZT1kZWFkYmVlZgogdmVyc2lvbj0xLjguOAotcmV2aXNpb249MQorcmV2aXNpb249MgogY3JlYXRl X3dya3NyYz15ZXMKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIt LWRpc2FibGUtb3NzIC0tZGlzYWJsZS1sZm0gLS1kaXNhYmxlLW5vdGlmeSAtLWRpc2FibGUtZ3Rr MiIKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgbGlidG9vbCBnZXR0ZXh0IGdldHRleHQtZGV2 ZWwgaW50bHRvb2wgcGtnLWNvbmZpZwogIHlhc20gY2xhbmcgZ2xpYi1kZXZlbCIKIG1ha2VkZXBl bmRzPSIKLSBhbHNhLWxpYi1kZXZlbCBkYnVzLWRldmVsIGZhYWQyLWRldmVsIGZmbXBlZy1kZXZl bCBndGsrMy1kZXZlbCBpbWxpYjItZGV2ZWwKKyBhbHNhLWxpYi1kZXZlbCBkYnVzLWRldmVsIGZh YWQyLWRldmVsIGZmbXBlZzQtZGV2ZWwgZ3RrKzMtZGV2ZWwgaW1saWIyLWRldmVsCiAgamFuc3Nv bi1kZXZlbCBsaWJjZGRiLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGliY3VybC1kZXZlbCBsaWJmbGFj LWRldmVsCiAgbGlibWFkLWRldmVsIGxpYnBuZy1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsIGxp YnNuZGZpbGUtZGV2ZWwgbGlidm9yYmlzLWRldmVsCiAgbGliemlwLWRldmVsIG1wZzEyMy1kZXZl bCBvcHVzZmlsZS1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsIHdhdnBhY2stZGV2ZWwiCgpGcm9tIGY4 ZTZjNjk2MDQyODMyYjkwNjA1OGQ1YzM1YzFhNGRiN2U4OTEzMjggTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyOC8xMTVdIGRvbHBoaW4tZW11 OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlIGIvc3JjcGtncy9kb2xw aGluLWVtdS90ZW1wbGF0ZQppbmRleCBiNGM4YjY0MzY4YTRiLi4wNzA5OTNhYWMzMWQyIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZG9scGhp bi1lbXUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdkb2xw aGluLWVtdScKIHBrZ25hbWU9ZG9scGhpbi1lbXUKIHZlcnNpb249NS4wLjE5MzY4Ci1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBfZG9scGhpbl9jb21taXQ9ZGFkYmViNGJhZTdlN2ZhMjNhZjJiNDZl MGFkZDQxNDMwOTRkYzEwNwogX21nYmFfY29tbWl0PTQ0ZTA3NGExNWU5NjUxNDgxZjdmNjUyYWMw MDZhN2M5ZDU4Y2JlYjkKIF9nb29nbGV0ZXN0X2NvbW1pdD1iZTAzZDAwZjVmMGNjM2E5OTdkMWEz NjhiZWU4YTFmZTkzNjUxZjQ4CgpGcm9tIDY3OWM3NTBlNDhiYjgzZTgxY2E1ZGJjZGYzNjc5OTJh NDQyNGE3MjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDog W1BBVENIIDAyOS8xMTVdIGRyb2lkY2FtLW9icy1wbHVnaW46IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3RlbXBsYXRlIGIvc3JjcGtncy9kcm9pZGNhbS1v YnMtcGx1Z2luL3RlbXBsYXRlCmluZGV4IGZjOWM5YmY2YjlkNTQuLmZiMDQ4MDc1NGRmNGQgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvZHJvaWRjYW0tb2JzLXBsdWdpbi90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdkcm9pZGNhbS1vYnMtcGx1Z2luJwogcGtnbmFtZT1kcm9pZGNhbS1vYnMt cGx1Z2luCiB2ZXJzaW9uPTIuMC4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHls ZT1nbnUtbWFrZWZpbGUKIG1ha2VfdXNlX2Vudj15ZXMKIG1ha2VfYnVpbGRfYXJncz0iQUxMT1df U1RBVElDPW5vIgoKRnJvbSAwMDFkMzQ5MzhkM2M2Y2FkMTA2MmRmNTZiYzIzYjAzMmNiYWI3MmFl IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw MzAvMTE1XSBkcm9pZGNhbTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Ry b2lkY2FtL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKaW5kZXggMWMzZjFiOGIxZmM2Ny4uMzJhOTIyMGI3OWE0 ZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Ry b2lkY2FtL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZHJv aWRjYW0nCiBwa2duYW1lPWRyb2lkY2FtCiB2ZXJzaW9uPTEuOC4yCi1yZXZpc2lvbj0yCityZXZp c2lvbj0zCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1ha2VfYnVpbGRfYXJncz0iVVNCTVVY RD0tbHVzYm11eGQtMi4wIEpQRUc9LWx0dXJib2pwZWciCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWciCgpGcm9tIDc1ZmM2NzM3MzMxYTU4YmVmZjA2ZDk4NzkwZDQwNWNhYzA0YmM1NmYgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzMS8x 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 bnN0YWxsKCkgewoKRnJvbSBkNTk4YzZhNjk4N2MzMjU5Mjk3NTNlMmE2OWNlZmRkNDQ1OTY1OWU5 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw MzIvMTE1XSBmZm1wZWd0aHVtYnM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZ3RodW1icy90 ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlCmluZGV4IDVmMGI5NDE0ZGFk YWYuLjExYjg4MTkzNTI4ZjQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnZmZtcGVndGh1bWJzJwogcGtnbmFtZT1mZm1wZWd0aHVtYnMK IHZlcnNpb249MjIuMTIuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21h a2UKIGhvc3RtYWtlZGVwZW5kcz0iZXh0cmEtY21ha2UtbW9kdWxlcyBrY29yZWFkZG9ucyBrY29u ZmlnLWRldmVsCiAgcGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UgZ2V0dGV4dCIK CkZyb20gNWI4MWI0MmFkMWM4NzBiYjdhMjZmNTkzNDZkOWJlMjcxNWIyNGJlYSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDMzLzExNV0gZmZt 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 cmNwa2dzL2ZmbXMyL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1zMi90ZW1wbGF0ZQppbmRleCA4MzQ4 MjEyMzExMWZjLi5lMjRhOGEwOThlNDQ1IDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZmbXMyL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvZmZtczIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdmZm1zMicKIHBrZ25hbWU9ZmZtczIKIHZlcnNpb249Mi40MAotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2Fy Z3M9Ii0tZW5hYmxlLXNoYXJlZCAtLWRpc2FibGUtc3RhdGljIgogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIGF1dG9jb25mIGF1dG9tYWtlIGxpYnRvb2wiCgpGcm9tIDIyNzgyMmI2NTEyNWQx MDE1NDIxYzcxOGQzNDQ2YTQwYThhNDliYmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzNC8xMTVdIGZyZWVyZHA6IHJldmJ1bXAgZm9yIGZm 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 ICNpZmRlZiBXSVRIX1ZBQVBJCisgCgpGcm9tIGQ2ZGU0N2NhYTQ1NWIzNWEyMWI4NzAyNzliMGQy NDcyODY2MGJjZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVj dDogW1BBVENIIDAzNS8xMTVdIGdlcmJlcmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nZXJiZXJhL3RlbXBs YXRlIGIvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlCmluZGV4IGFlMTRmMzVjNzY3YzAuLjJkYzBh YzBjZTAzYjUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2dlcmJlcmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdnZXJiZXJhJwogcGtnbmFtZT1nZXJiZXJhCiB2ZXJzaW9uPTEuMTIuMQotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfU1lT VEVNRD0wIC1EV0lUSF9BVkNPREVDPTEiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpG cm9tIDFhNGFhMDVjMjcxNjgyNzVmZmFmMTliYWI4NDlmZjMwZGI5M2JjNjggTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzNi8xMTVdIGdvbGRl bmRpY3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nb2xkZW5kaWN0L3Rl bXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZSBiL3NyY3Br Z3MvZ29sZGVuZGljdC90ZW1wbGF0ZQppbmRleCBmNGEwNTc1OWY2OTNkLi45N2Y0NDM0N2IwM2E2 IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9n b2xkZW5kaWN0L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn Z29sZGVuZGljdCcKIHBrZ25hbWU9Z29sZGVuZGljdAogdmVyc2lvbj0xLjUuMAotcmV2aXNpb249 MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSJDT05GSUcr PXppbV9zdXBwb3J0IGdvbGRlbmRpY3QucHJvIgogaG9zdG1ha2VkZXBlbmRzPSJxdDUtcW1ha2Ug cGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyIKQEAgLTEwLDcgKzEwLDcgQEAgbWFrZWRlcGVuZHM9 InRpZmYtZGV2ZWwgcXQ1LWRldmVsIGxpYnZvcmJpcy1kZXZlbCB6bGliLWRldmVsCiAgcXQ1LXdl YmtpdC1kZXZlbCBsem8tZGV2ZWwgYnppcDItZGV2ZWwgbGliYW8tZGV2ZWwgcXQ1LXN2Zy1kZXZl bAogIGxpYmViLWRldmVsIHF0NS14MTFleHRyYXMtZGV2ZWwgZmZtcGVnLWRldmVsIGxpYmx6bWEt ZGV2ZWwKICBxdDUtbXVsdGltZWRpYS1kZXZlbCIKLXNob3J0X2Rlc2M9IkEgZmVhdHVyZS1yaWNo IGRpY3Rpb25hcnkgbG9va3VwIHByb2dyYW0iCitzaG9ydF9kZXNjPSJGZWF0dXJlLXJpY2ggZGlj dGlvbmFyeSBsb29rdXAgcHJvZ3JhbSIKIG1haW50YWluZXI9IkpvaG4gPG1lQGpvaG5ueW5hdG9y LmRldj4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHA6Ly9nb2xk ZW5kaWN0Lm9yZy8iCgpGcm9tIGRkM2Q1OTlhYWMxODdhYmQ2NDJkMmZlZDUxMzI4Mjg1YjNlMThj YmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENI IDAzNy8xMTVdIGdzdC1saWJhdjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2dzdC1saWJhdi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRl IGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKaW5kZXggOGM3MmZjM2U5N2VlZS4uMDRjMzli ZmYxNDg5NiAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9nc3QtbGliYXYvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdnc3QtbGliYXYnCiBwa2duYW1lPWdzdC1saWJhdgogdmVyc2lvbj0xLjIyLjIKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWcgeWFzbSIKIG1ha2VkZXBlbmRzPSJvcmMtZGV2ZWwgZ3N0LXBsdWdpbnMtYmFzZTEt ZGV2ZWwgZmZtcGVnLWRldmVsIgoKRnJvbSA1Yjc1YTY2YjNmNWRjZWE5ZWQyMTU1ZjMxODg3YzRi N2M0ZDZlZDVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwMzgvMTE1XSBnc3QtcnRzcC1zZXJ2ZXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBs YXRlCmluZGV4IDJmMGMwYzQ1ZmY4MjAuLjk4MGZkNzJjZGQ0YzUgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVy L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LXJ0c3At c2VydmVyJwogcGtnbmFtZT1nc3QtcnRzcC1zZXJ2ZXIKIHZlcnNpb249MS4yMi4yCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIHB5dGhvbjMiCiBtYWtlZGVwZW5kcz0iZ2xpYi1kZXZlbCBnc3QtcGx1Z2lucy1iYWQx LWRldmVsIGdvYmplY3QtaW50cm9zcGVjdGlvbgoKRnJvbSBiMzM2Y2EyZjNiOGMzOGI2NjQ1NWVm NjQyMjNlZmNlMjM1NjczMTAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMzkvMTE1XSBndXZjdmlldzogdXBkYXRlIHRvIDIuMC44LgoKLS0t 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+JyAtaSAgZ3V2Y3ZpZXcvZ3V2Y3ZpZXcuYwoKRnJvbSBjYmQ1 ZDMyMDYwMTdmNTE0YjdlMmViYmRkZDU5NjUyNWY5ZWYyYTg0IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDAvMTE1XSBoYW5kYnJha2U6IHVw 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 YWluLmRlZnMKIAlkb25lCiB9CgpGcm9tIGNlYWRjZTkwMGRjNmEyNmZkODAwMDY4OTg2ODBiZTg0 MDAzMGViZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDog W1BBVENIIDA0MS8xMTVdIGhlZGdld2FyczogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0t CiBzcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2hlZGdl d2Fycy90ZW1wbGF0ZSBiL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlCmluZGV4IDE1YTFkZjZk ODg2MWQuLmQxYjcyOTBiZmRjMTkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlCkBAIC0xLDEzICsxLDEzIEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdoZWRnZXdhcnMnCiBwa2duYW1lPWhlZGdld2FycwogdmVyc2lv bj0xLjAuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZp Z3VyZV9hcmdzPSItRE5PU0VSVkVSPTEgLUREQVRBX0lOU1RBTExfRElSPS91c3Ivc2hhcmUvJHtw a2duYW1lfQogIC1EUEhZU0ZTX1NZU1RFTT0xIC1ETUlOSU1BTF9GTEFHUz0xIgogbWFrZV9jbWQ9 bWFrZQogaG9zdG1ha2VkZXBlbmRzPSJsdWE1MSBwa2ctY29uZmlnIHF0NS1xbWFrZSBxdDUtaG9z dC10b29scyIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbHVhNTEtZGV2ZWwgcGh5c2ZzLWRl dmVsIHF0NS10b29scy1kZXZlbCBTREwyX2ltYWdlLWRldmVsCittYWtlZGVwZW5kcz0iZmZtcGVn NC1kZXZlbCBsdWE1MS1kZXZlbCBwaHlzZnMtZGV2ZWwgcXQ1LXRvb2xzLWRldmVsIFNETDJfaW1h Z2UtZGV2ZWwKICBTREwyX21peGVyLWRldmVsIFNETDJfbmV0LWRldmVsIFNETDJfdHRmLWRldmVs IgogZGVwZW5kcz0ibGliZnJlZWdsdXQiCiBzaG9ydF9kZXNjPSJGdW5ueSB0dXJuLWJhc2VkIGFy dGlsbGVyeSBnYW1lLCBmZWF0dXJpbmcgZmlnaHRpbmcgSGVkZ2Vob2dzISIKCkZyb20gZDg4ZWI0 YjJkMDYwOWIzZTZkOTg1NDIzMGY3MmJlMWI2NTQzYjM0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQyLzExNV0gaWRqYzogcmV2YnVtcCBm b3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2lkamMvdGVtcGxhdGUgfCA0ICsrLS0KIDEg ZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9pZGpjL3RlbXBsYXRlIGIvc3JjcGtncy9pZGpjL3RlbXBsYXRlCmluZGV4IGRm NjAzMThiM2RiOTYuLjM2YTc1YmFmNTk3YzUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaWRqYy90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2lkamMvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTEgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2lkamMnCiBwa2duYW1lPWlkamMKIHZlcnNpb249MC45LjEKLXJldmlz aW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGhvc3RtYWtlZGVw ZW5kcz0icGtnLWNvbmZpZyBnaXQgcHl0aG9uMyBhdXRvbWFrZSBnZXR0ZXh0LWRldmVsIGxpYnRv b2wiCiBtYWtlZGVwZW5kcz0ibGlidm9yYmlzLWRldmVsIGxpYm9nZy1kZXZlbCBqYWNrLWRldmVs IGxpYnNhbXBsZXJhdGUtZGV2ZWwKLSBsaWJmbGFjLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwgbXBn MTIzLWRldmVsIGZmbXBlZy1kZXZlbCBzcGVleC1kZXZlbAorIGxpYmZsYWMtZGV2ZWwgbGlic25k ZmlsZS1kZXZlbCBtcGcxMjMtZGV2ZWwgZmZtcGVnNC1kZXZlbCBzcGVleC1kZXZlbAogIGdsaWIt ZGV2ZWwgcGl4bWFuLWRldmVsIGxhbWUtZGV2ZWwgcHl0aG9uMy1nb2JqZWN0LWRldmVsIGxpYnNo b3V0LWlkamMtZGV2ZWwKICBvcHVzLWRldmVsIHR3b2xhbWUtZGV2ZWwgcHl0aG9uMy1tdXRhZ2Vu IHB5dGhvbjMtZGV2ZWwiCiBkZXBlbmRzPSJweXRob24zLWdvYmplY3QgcHl0aG9uMy1tdXRhZ2Vu IGRlc2t0b3AtZmlsZS11dGlscyBzaGFyZWQtbWltZS1pbmZvIHB5dGhvbjMtZGJ1cyBqYWNrIgoK RnJvbSA0YjIzODIyM2Q2YTBhNTI2MmFlOTY5YjkwY2VkZWZlOWVjZjUyMjVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDMvMTE1XSBrZmls ZW1ldGFkYXRhNTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2tmaWxlbWV0 YWRhdGE1L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0 ZSBiL3NyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUKaW5kZXggYzNlM2ViMTE2YTY3Yi4u MzBmZmMzMWIxY2I2YiAxMDA2NDQKLS0tIGEvc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAna2ZpbGVtZXRhZGF0YTUnCiBwa2duYW1lPWtmaWxlbWV0YWRh dGE1CiB2ZXJzaW9uPTUuMTA4LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9Imtjb3JlYWRkb25zIGV4dHJhLWNtYWtlLW1vZHVsZXMg cGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UKICBnZXR0ZXh0IGtjb3JlYWRkb25z IHB5dGhvbjMiCgpGcm9tIDBmNmZmMTk1NWRlMGE3ZTI2ZjdjNGZiNWU4MzY0ZTJjOWZjYzliMjMg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0 NC8xMTVdIGtpZDM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9raWQzL3Bh dGNoZXMvZmZtcGVnNS5wYXRjaCB8IDE3ICsrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2tpZDMv dGVtcGxhdGUgICAgICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mva2lkMy9w YXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tpZDMvcGF0Y2hlcy9m Zm1wZWc1LnBhdGNoIGIvc3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4xMzVmYzUwZTA3YzliCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsx LDE3IEBACisjIGh0dHBzOi8vYXVyLmFyY2hsaW51eC5vcmcvY2dpdC9hdXIuZ2l0L2RpZmYvZmZt cGVnNS5wYXRjaD9oPWtpZDMtY2xpJmlkPTEyNDEwYTc0OTA2NjEyZTdlZmMwZWM4ZmJjZTczOWI0 YTBmZWY3ZTcKK2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9hY291c3RpZGltcG9ydC9mZm1wZWdm aW5nZXJwcmludGRlY29kZXIuY3BwIGIvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZtcGVn ZmluZ2VycHJpbnRkZWNvZGVyLmNwcAoraW5kZXggZTE1NmQ0MjQuLmUxMmI5YWJkIDEwMDY0NAor LS0tIGEvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVy LmNwcAorKysrIGIvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRk ZWNvZGVyLmNwcAorQEAgLTIzMiw3ICsyMzIsMTEgQEAgcHJpdmF0ZToKKyAgIGZyaWVuZCBjbGFz cyBGb3JtYXQ7CisgICBmcmllbmQgY2xhc3MgQ29udmVydGVyOworICAgQVZDb2RlY0NvbnRleHQq IG1fcHRyOworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fSU5UIDwgQVZfVkVSU0lPTl9JTlQoNTks IDAsIDApCisgICBBVkNvZGVjKiBtX2ltcGw7CisrI2Vsc2UKKysgIGNvbnN0IEFWQ29kZWMqIG1f aW1wbDsKKysjZW5kaWYKKyAgIEFWRnJhbWUqIG1fZnJhbWU7CisgICBib29sIG1fb3BlbmVkOwor IH07CmRpZmYgLS1naXQgYS9zcmNwa2dzL2tpZDMvdGVtcGxhdGUgYi9zcmNwa2dzL2tpZDMvdGVt cGxhdGUKaW5kZXggNDU2MjA2ZDkwZTE2YS4uZjMyZjlkZWNiMGU3ZiAxMDA2NDQKLS0tIGEvc3Jj cGtncy9raWQzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva2lkMy90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2tpZDMnCiBwa2duYW1lPWtpZDMKIHZlcnNpb249 My45LjEKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1 cmVfYXJncz0iLURXSVRIX0FQUFM9J0NMSTskKHZvcHRfaWYgS0RFIEtERSBRdCknCiAgLURXSVRI X0RPQ0JPT0tESVI9L3Vzci9zaGFyZS94c2wvZG9jYm9vayAtRFdJVEhfRkxBQz0kKHZvcHRfaWYg ZmxhYyBPTiBPRkYpCgpGcm9tIGIxMjY3ZGE3NDE4NmIwMmRjM2ViYjEzM2FjYjQxNWUxYWY5MWRi N2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENI IDA0NS8xMTVdIGtvZGk6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9r b2RpL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9rb2RpL3RlbXBsYXRlIGIvc3JjcGtncy9r b2RpL3RlbXBsYXRlCmluZGV4IGU4NjJmNDhhMzlmNDguLjI1NzQ0ZjY5MTA3ZjQgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3Mva29kaS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tvZGkvdGVtcGxhdGUKQEAg LTU0LDcgKzU0LDcgQEAgbWFrZWRlcGVuZHM9IgogIGxpYm1hZC1kZXZlbCBmb250Y29uZmlnLWRl dmVsIGxpYlhpbmVyYW1hLWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwgbGlibW1zLWRldmVsCiAg ZW5jYS1kZXZlbCBib29zdC1kZXZlbCBsaWJjdXJsLWRldmVsIGxpYnZhLWRldmVsIGxpYnZkcGF1 LWRldmVsIGxpYmFzcy1kZXZlbAogIGxpYmJsdWV0b290aC1kZXZlbCB5YWpsLWRldmVsIGxpYnBs aXN0LWRldmVsIGxpYnJ0bXAtZGV2ZWwgdGlueXhtbC1kZXZlbAotIHRhZ2xpYi1kZXZlbCBsaWJj YXAtZGV2ZWwgbGFtZS1kZXZlbCBsaWJibHVyYXktZGV2ZWwgbGlibmZzLWRldmVsIGZmbXBlZy1k ZXZlbAorIHRhZ2xpYi1kZXZlbCBsaWJjYXAtZGV2ZWwgbGFtZS1kZXZlbCBsaWJibHVyYXktZGV2 ZWwgbGlibmZzLWRldmVsIGZmbXBlZzQtZGV2ZWwKICBnaWZsaWItZGV2ZWwgbGlieHNsdC1kZXZl bCBnbnV0bHMtZGV2ZWwgbGlic3NoLWRldmVsIGxpYm1pY3JvaHR0cGQtZGV2ZWwKICBsaWJjZWMt ZGV2ZWwgZGNhZGVjLWRldmVsIGZsYXRidWZmZXJzLWRldmVsIGZtdC1kZXZlbCBsY21zMi1kZXZl bAogIGxpYmZzdHJjbXAtZGV2ZWwgcmFwaWRqc29uIGxpYmNkaW8tcGFyYW5vaWEgc3BkbG9nIGxp YndheWxhbmRwcC1kZXZlbAoKRnJvbSA0NzFjZjJiNGZkYzQwZmEzY2U1ODMwNzg4ZWRkZjI2MTI4 MGE5NjNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwNDYvMTE1XSBrcGlwZXdpcmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9rcGlwZXdpcmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2twaXBld2lyZS90ZW1w bGF0ZSBiL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlCmluZGV4IGRiNGU0MmYwZDQ1NmEuLjIz MzRiZjg2NzgwNjIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAna3BpcGV3aXJlJwogcGtnbmFtZT1rcGlwZXdpcmUKIHZlcnNpb249NS4yNy42Ci1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRz PSJleHRyYS1jbWFrZS1tb2R1bGVzIHBsYXNtYS13YXlsYW5kLXByb3RvY29scyBnZXR0ZXh0CiAg cXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIHBrZy1jb25maWcgd2F5bGFuZC1kZXZlbCBrY29yZWFk ZG9ucwoKRnJvbSAyMmFjZDkwZmIxMjI2ZWU5ODdmNjA2MmQ4YWYwZWZjZDQxNDMwMTdiIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDcvMTE1 XSBsaWJleHRyYWN0b3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9s aWJleHRyYWN0b3IvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1w bGF0ZSBiL3NyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBsYXRlCmluZGV4IGRkZDQ3OTBmOTNlODgu LjFmYjljYTU2YTk2YWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBsYXRlCkBAIC03LDcgKzcsNyBAQCBjb25m aWd1cmVfYXJncz0iLS1kaXNhYmxlLXN0YXRpYyIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZp ZyIKIG1ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGJ6aXAyLWRldmVsIGV4aXYyLWRldmVsIHRpZmYt ZGV2ZWwgbGlicG5nLWRldmVsCiAgbGlianBlZy10dXJiby1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwg bGliZmxhYy1kZXZlbCBnaWZsaWItZGV2ZWwgbGlibXBlZzItZGV2ZWwKLSBmZm1wZWctZGV2ZWwg Z3RrKzMtZGV2ZWwgbGlibHRkbC1kZXZlbCBsaWJhcmNoaXZlLWRldmVsIGZpbGUtZGV2ZWwgbGli Z3NmLWRldmVsIgorIGZmbXBlZzQtZGV2ZWwgZ3RrKzMtZGV2ZWwgbGlibHRkbC1kZXZlbCBsaWJh cmNoaXZlLWRldmVsIGZpbGUtZGV2ZWwgbGliZ3NmLWRldmVsIgogc2hvcnRfZGVzYz0iTGlicmFy eSB1c2VkIHRvIGV4dHJhY3QgbWV0YSBkYXRhIGZyb20gZmlsZXMiCiBtYWludGFpbmVyPSJNYXJ0 aW4gUmllc2UgPGdyYXVlaGFhcmVAZ214LmRlPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIi CgpGcm9tIGMzNmU2ZmFkMGViZDM3ZTE2MThhM2FjNzk2ODlmNzMzYTM5ZDhjN2MgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0OC8xMTVdIGxp Ym9wZW5hbDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2xpYm9wZW5hbC90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlib3BlbmFsL3RlbXBsYXRlIGIvc3JjcGtncy9s aWJvcGVuYWwvdGVtcGxhdGUKaW5kZXggNzcyMThmOWU1MzlkZi4uM2Y0OWVkNzVhMWZkYyAxMDA2 NDQKLS0tIGEvc3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9saWJvcGVu YWwvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsaWJvcGVu YWwnCiBwa2duYW1lPWxpYm9wZW5hbAogdmVyc2lvbj0xLjIyLjIKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURBTFNPRlRfRVhBTVBM RVM9T0ZGIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSAwNGNjNGRhNDdlMmY0 MThiMzY4NmEyOWQ0MjNiN2NiZGYzYTM1ZmNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDkvMTE1XSBsb3VkZ2FpbjogcmV2YnVtcCBmb3Ig ZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2xvdWRnYWluL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8 IDExICsrKysrKysrKysrCiBzcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlICAgICAgICAgICAgICB8 ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xvdWRnYWluL3BhdGNoZXMvZmZtcGVnNS5wYXRj aAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIv c3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMTZkNDUxMGVlOThmYQotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAK Ky0tLSBhL3NyYy9zY2FuLmMJMjAxOS0wOS0wNiAxMTozMToxOS4wMDAwMDAwMDAgLTA0MDAKKysr KyBiL3NyYy9zY2FuLmMJMjAyMy0wMy0yMyAxMToxNTo0MC44Njc5Njg1MjEgLTA0MDAKK0BAIC02 OSw4ICs2OSw2IEBACisgCSAqIEl0IGlzIG5vdyB1c2VsZXNzCisgCSAqIGh0dHBzOi8vZ2l0aHVi LmNvbS9GRm1wZWcvRkZtcGVnL2Jsb2IvNzBkMjUyNjhjMjFjYmVlNWYwODMwNGRhOTViZTFmNjQ3 YzYzMGMxNS9kb2MvQVBJY2hhbmdlcyNMODYKKyAJICovCistICBpZiAoYXZmb3JtYXRfdmVyc2lv bigpIDwgQVZfVkVSU0lPTl9JTlQoNTgsOSwxMDApKQorLSAgICBhdl9yZWdpc3Rlcl9hbGwoKTsK KyAKKyAJYXZfbG9nX3NldF9jYWxsYmFjayhzY2FuX2F2X2xvZyk7CisgCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlIGIvc3JjcGtncy9sb3VkZ2Fpbi90ZW1wbGF0ZQppbmRl eCBkYTRmMmQ1NmU5NGMzLi40ZDZiZjI5ZWZiNGZkIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xvdWRn YWluL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsb3VkZ2FpbicKIHBrZ25hbWU9bG91ZGdhaW4KIHZl cnNpb249MC42LjgKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBo b3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0ibGliZWJ1cjEyOC1kZXZl bCB0YWdsaWItZGV2ZWwgZmZtcGVnLWRldmVsIgoKRnJvbSAxNjEyMTlkMDIwM2JjM2MwY2IzZDk1 MDE1NDBkMTI1OTE0MDE4YWY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNTAvMTE1XSBtZWRpYXN0cmVhbWVyOiByZXZidW1wIGZvciBmZm1w ZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZSB8IDQgKystLQog MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUgYi9zcmNwa2dzL21lZGlhc3RyZWFt ZXIvdGVtcGxhdGUKaW5kZXggZDBlOTdlODU4ZTI5YS4uMWJkZTAzMTQ0M2E1OSAxMDA2NDQKLS0t IGEvc3JjcGtncy9tZWRpYXN0cmVhbWVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWVkaWFzdHJl YW1lci90ZW1wbGF0ZQpAQCAtMSwxMSArMSwxMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWVk aWFzdHJlYW1lcicKIHBrZ25hbWU9bWVkaWFzdHJlYW1lcgogdmVyc2lvbj01LjIuNgotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREVO QUJMRV9TVFJJQ1Q9MCAtREVOQUJMRV9VTklUX1RFU1RTPTAiCiBob3N0bWFrZWRlcGVuZHM9InB5 dGhvbjMiCi1tYWtlZGVwZW5kcz0iYnpydHAtZGV2ZWwgZmZtcGVnLWRldmVsIGdsZXctZGV2ZWwg bGliWHYtZGV2ZWwgbGlic3J0cC1kZXZlbAorbWFrZWRlcGVuZHM9ImJ6cnRwLWRldmVsIGZmbXBl ZzQtZGV2ZWwgZ2xldy1kZXZlbCBsaWJYdi1kZXZlbCBsaWJzcnRwLWRldmVsCiAgbGlidXBucC1k ZXZlbCBsaWJ2cHgtZGV2ZWwgbWJlZHRscy1kZXZlbCBvcHVzLWRldmVsIG9ydHAtZGV2ZWwgcHVs c2VhdWRpby1kZXZlbAogIGxpYnRoZW9yYS1kZXZlbCBzcGVleC1kZXZlbCB2NGwtdXRpbHMtZGV2 ZWwgYmNnNzI5LWRldmVsIGJjbWF0cm9za2EyLWRldmVsIGxpYmdzbS1kZXZlbCIKICMgenhpbmct Y3BwLWRldmVsICgxLjIuMCBwcm9iYWJseSBub3QgY29tcGF0aWJsZSwgY2hlY2sgYWdhaW4gYWZ0 ZXIgdXBkYWluZyB4emluZykKCkZyb20gZDI3MzQ3Y2M4ZmEwYmY3NDVkMTgxMDk3N2EwNjA3NzU1 MWU3NGNjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDUxLzExNV0gbWdiYTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L21nYmEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21nYmEvdGVtcGxhdGUgYi9zcmNwa2dz L21nYmEvdGVtcGxhdGUKaW5kZXggNGFmMDg1MTg4YmY0NC4uMDFlYzQxNzZiZDYwMiAxMDA2NDQK LS0tIGEvc3JjcGtncy9tZ2JhL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWdiYS90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21nYmEnCiBwa2duYW1lPW1nYmEK IHZlcnNpb249MC4xMC4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFr ZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSBk ZXNrdG9wLWZpbGUtdXRpbHMiCiBtYWtlZGVwZW5kcz0iU0RMMi1kZXZlbCBmZm1wZWctZGV2ZWwg bGliZWRpdC1kZXZlbCBsaWJlcG94eS1kZXZlbCBsaWJtYWdpY2stZGV2ZWwKCkZyb20gOTBjMzBl ZTYwZThiNTdjODI2OWUzN2IxNGY0ODAwNTFlODlkNWYyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDUyLzExNV0gbWluaWRsbmE6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUgYi9zcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRl CmluZGV4IGQ1NTFlNDllZDQ2NTMuLjVmYTkyOWYzYTBjMTIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv bWluaWRsbmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21pbmlkbG5hJwogcGtnbmFtZT1taW5pZGxu YQogdmVyc2lvbj0xLjMuMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251 LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9IgogIC0tc2JpbmRpcj0vdXNyL2JpbgoKRnJvbSA1 NTk5ZWFmMDZkZTEzYmZkYTFhMTI5OTcxNTdmNWFlYjJkNTM5MzJlIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTMvMTE1XSBtbHQ6IHJldmJ1 bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9tbHQvdGVtcGxhdGUgfCA0ICsrLS0K IDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9tbHQvdGVtcGxhdGUgYi9zcmNwa2dzL21sdC90ZW1wbGF0ZQppbmRleCA1 YWQxOTk0NjFlNjk0Li5mMGIzYWYxOTNkYjJjIDEwMDY0NAotLS0gYS9zcmNwa2dzL21sdC90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL21sdC90ZW1wbGF0ZQpAQCAtMSwxNCArMSwxNCBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnbWx0JwogcGtnbmFtZT1tbHQKIHZlcnNpb249Ni4yNi4xCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIt LXByZWZpeD0vdXNyIC0tbGliZGlyPS91c3IvbGliJFhCUFNfVEFSR0VUX1dPUkRTSVpFCiAgLS1l bmFibGUtZ3BsIC0tZW5hYmxlLWdwbDMgLS1kaXNhYmxlLXN3ZmRlYyAtLXdpdGhvdXQta2RlCiAg LS1zd2lnLWxhbmd1YWdlcz1weXRob24iCiBob3N0bWFrZWRlcGVuZHM9ImRveHlnZW4gcGtnLWNv bmZpZyBsYWRzcGEtc2RrIHN3aWcgcHl0aG9uMyB3aGljaCIKICMgWFhYOiBtb3ZpdCB2aWQuc3Rh YgotbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZy1kZXZlbCBndGsrLWRldmVsIGph Y2stZGV2ZWwgbGFkc3BhLXNkaworbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZzQt ZGV2ZWwgZ3RrKy1kZXZlbCBqYWNrLWRldmVsIGxhZHNwYS1zZGsKICBsaWJleGlmLWRldmVsIGxp YnNhbXBsZXJhdGUtZGV2ZWwgbGlieG1sMi1kZXZlbCBzb3gtZGV2ZWwgU0RMX2ltYWdlLWRldmVs CiAgZmZ0dy1kZXZlbCBmcmVpMHItcGx1Z2lucyBweXRob24zLWRldmVsIHB1bHNlYXVkaW8tZGV2 ZWwgbW92aXQtZGV2ZWwKICBsaWJ2aWRzdGFiLWRldmVsIgoKRnJvbSA4ZjdkNGRkOGExNTJkMTQ2 ZTFhZDA5ZTA4ZGViNzI5NzJlMzhlNTljIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTQvMTE1XSBtb2M6IHJldmJ1bXAgZm9yIGZmbXBlZzQt NC40LjMKCi0tLQogc3JjcGtncy9tb2MvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9t b2MvdGVtcGxhdGUgYi9zcmNwa2dzL21vYy90ZW1wbGF0ZQppbmRleCA1YWVkNWQzNjU1OGQzLi5k OGRlODE2MDI2YjY0IDEwMDY0NAotLS0gYS9zcmNwa2dzL21vYy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL21vYy90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn bW9jJwogcGtnbmFtZT1tb2MKIHZlcnNpb249Mi41LjIKLXJldmlzaW9uPTYKK3JldmlzaW9uPTcK IGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIK LW1ha2VkZXBlbmRzPSJkYi1kZXZlbCBuY3Vyc2VzLWRldmVsIGxpYmN1cmwtZGV2ZWwgcG9wdC1k ZXZlbCBmZm1wZWctZGV2ZWwKK21ha2VkZXBlbmRzPSJkYi1kZXZlbCBuY3Vyc2VzLWRldmVsIGxp YmN1cmwtZGV2ZWwgcG9wdC1kZXZlbCBmZm1wZWc0LWRldmVsCiAgamFjay1kZXZlbCBhbHNhLWxp Yi1kZXZlbCBsaWJsdGRsLWRldmVsIGxpYmZsYWMtZGV2ZWwgbGlidm9yYmlzLWRldmVsCiAgbGli bWFkLWRldmVsIGxpYm1wY2RlYy1kZXZlbCBsaWJtb2RwbHVnLWRldmVsIGxpYmlkM3RhZy1kZXZl bCBmYWFkMi1kZXZlbAogIHRhZ2xpYi1kZXZlbCBsaWJzbmRmaWxlLWRldmVsIHdhdnBhY2stZGV2 ZWwgc3BlZXgtZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbAoKRnJvbSBkNTc1MzQ0YjM2MTk1ZTg0 NDQ2YjNjOWVjNWRkYmEwYWNlYTMwNjBkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTUvMTE1XSBtb3Rpb246IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21v dGlvbi90ZW1wbGF0ZSBiL3NyY3BrZ3MvbW90aW9uL3RlbXBsYXRlCmluZGV4IDNjZjNjMzAzNWM1 YjcuLjdkY2ExMmQ4NTFlMzMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbW90aW9uL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvbW90aW9uL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnbW90aW9uJwogcGtnbmFtZT1tb3Rpb24KIHZlcnNpb249NC41LjEKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5k cz0iYXV0b21ha2UgcGtnLWNvbmZpZyBnZXR0ZXh0LWRldmVsIHRhciIKIG1ha2VkZXBlbmRzPSJm Zm1wZWctZGV2ZWwgbGlibWljcm9odHRwZC1kZXZlbCB2NGwtdXRpbHMtZGV2ZWwgZ2V0dGV4dC1k ZXZlbCIKCkZyb20gYWM2Mjg1NTQ3MzczNTNhNmYyMmNiZjhjODI4ZTc0YjU1NDdmZDBhYyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU2LzEx NV0gbm90Y3Vyc2VzOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvbm90Y3Vy c2VzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ub3RjdXJzZXMvdGVtcGxhdGUgYi9zcmNw a2dzL25vdGN1cnNlcy90ZW1wbGF0ZQppbmRleCA2ZGQ4YTA5MTMxOWY3Li4zMTEwYzMwYzlhZmYy IDEwMDY0NAotLS0gYS9zcmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL25v dGN1cnNlcy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ25v dGN1cnNlcycKIHBrZ25hbWU9bm90Y3Vyc2VzCiB2ZXJzaW9uPTMuMC45Ci1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EVVNFX1NUQVRJ Qz1PTiAkKHZvcHRfYm9vbCBtYW4gVVNFX1BBTkRPQykiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWcgJCh2b3B0X2lmIG1hbiBwYW5kb2MpIgoKRnJvbSBlNmRkNDNjMTIzN2U3NGM5Njg1YmU1 MzY4ODhkNTMwZDM4YTc0ZjE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNTcvMTE1XSBvYnM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9vYnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29icy90ZW1wbGF0ZSBi L3NyY3BrZ3Mvb2JzL3RlbXBsYXRlCmluZGV4IDdiNjljNjMwZDMwZDQuLjJjOGQ2OGQ3MWYzYTEg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb2JzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb2JzL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb2JzJwogcGtnbmFtZT1v YnMKIHZlcnNpb249MjkuMS4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0iaTY4Niog eDg2XzY0KiBwcGM2NGxlKiBhYXJjaDY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVf YXJncz0iLURPQlNfVkVSU0lPTl9PVkVSUklERT0ke3ZlcnNpb259IC1ERU5BQkxFX0pBQ0s9T04K CkZyb20gN2UxYzJlOGZhMzYzMzFmMmY1YWI4OWQ3ZmVhOGM4NWFjYzRhMGFiNCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU4LzExNV0gb2xp dmU6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9vbGl2ZS90ZW1wbGF0 ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29saXZlL3RlbXBsYXRlIGIvc3JjcGtncy9vbGl2ZS90 ZW1wbGF0ZQppbmRleCAxMmE0NjkzNmM5OTAwLi41YzI5MTdiOWM1MTI0IDEwMDY0NAotLS0gYS9z cmNwa2dzL29saXZlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUKQEAgLTEs MTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29saXZlJwogcGtnbmFtZT1vbGl2ZQog dmVyc2lvbj0wLjEuMgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9cW1ha2UK IGhvc3RtYWtlZGVwZW5kcz0icXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIHBrZy1jb25maWciCi1t YWtlZGVwZW5kcz0icXQ1LWRldmVsIHF0NS1tdWx0aW1lZGlhLWRldmVsIHF0NS1zdmctZGV2ZWwg ZmZtcGVnLWRldmVsIGZyZWkwci1wbHVnaW5zIgorbWFrZWRlcGVuZHM9InF0NS1kZXZlbCBxdDUt bXVsdGltZWRpYS1kZXZlbCBxdDUtc3ZnLWRldmVsIGZmbXBlZzQtZGV2ZWwgZnJlaTByLXBsdWdp bnMiCiBzaG9ydF9kZXNjPSJOb24tbGluZWFyIHZpZGVvIGVkaXRvciIKIG1haW50YWluZXI9Ik9y cGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVy IgoKRnJvbSBmMGJhZjRjODZhM2FiODVjNjExNmVkODU3YzkwNWM3ZGNkNTNkMWQ2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTkvMTE1XSBv bXhwbGF5ZXI6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9vbXhwbGF5 ZXIvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUgYi9z cmNwa2dzL29teHBsYXllci90ZW1wbGF0ZQppbmRleCA5YTY2NjkwYzgzZWJiLi5hMjFiODc4ODc4 MDM3IDEwMDY0NAotLS0gYS9zcmNwa2dzL29teHBsYXllci90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L29teHBsYXllci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J29teHBsYXllcicKIHBrZ25hbWU9b214cGxheWVyCiB2ZXJzaW9uPTIwMTkwMTAyCi1yZXZpc2lv bj0yCityZXZpc2lvbj0zCiBzaG9ydF9kZXNjPSJDb21tYW5kbGluZSBPTVggcGxheWVyIGZvciB0 aGUgUmFzcGJlcnJ5IFBpIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgu b3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCkBAIC0xNSw3ICsxNSw3IEBAIGNoZWNr c3VtPWFmMmQ5NDUwZjg5NDc4NDJlYThjNDAxZmU5ZjcxZWVjNDQ0MDEzZWJiZGVlMjlmMmFjODI4 YzljNDkzYzEzMjkKIGFyY2hzPSJhcm12NmwqIGFybXY3bCoiCiBidWlsZF9zdHlsZT1nbnUtbWFr ZWZpbGUKIGhvc3RtYWtlZGVwZW5kcz0icnVieS1yb25uIHBrZy1jb25maWciCi1tYWtlZGVwZW5k cz0iYWxzYS1saWItZGV2ZWwgcnBpLXVzZXJsYW5kLWRldmVsIHBjcmUtZGV2ZWwgYm9vc3QtZGV2 ZWwgZnJlZXR5cGUtZGV2ZWwgZmZtcGVnLWRldmVsIGRidXMtZGV2ZWwiCittYWtlZGVwZW5kcz0i YWxzYS1saWItZGV2ZWwgcnBpLXVzZXJsYW5kLWRldmVsIHBjcmUtZGV2ZWwgYm9vc3QtZGV2ZWwg ZnJlZXR5cGUtZGV2ZWwgZmZtcGVnNC1kZXZlbCBkYnVzLWRldmVsIgogZGVwZW5kcz0iZnJlZWZv bnQtdHRmIgogCiBkb19idWlsZCgpIHsKCkZyb20gNTM2ZTUyZTAzODM0NjU2MDNjNTE4ZDllNDMy NjU3NzQ2Yjc2YmYyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDYwLzExNV0gb3BlbnNob3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbnNob3Qv dGVtcGxhdGUgYi9zcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlCmluZGV4IDVkMmFkZWJhMjY5ZmQu LjhmNDc4NTFlZWYzNTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ29wZW5zaG90JwogcGtnbmFtZT1vcGVuc2hvdAogdmVyc2lvbj0zLjAuMAotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cHl0aG9uMy1tb2R1bGUKIGhvc3RtYWtl ZGVwZW5kcz0icHl0aG9uMyBweXRob24zLXNldHVwdG9vbHMiCiBtYWtlZGVwZW5kcz0iZmZtcGVn LWRldmVsIHB5dGhvbjMtUHlRdDUiCgpGcm9tIDQ2NzExZTM2Y2E2ZjQ5ODYzZmVlNjEwODRjNjY2 ZjRmOWJlYjNkZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVj dDogW1BBVENIIDA2MS8xMTVdIG9wZW50b29uejogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbnRvb256 L3RlbXBsYXRlIGIvc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUKaW5kZXggZWU5Zjc2MDNmNTVm ZC4uM2U4MTgzNGNhMGVkZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUK KysrIGIvc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdvcGVudG9vbnonCiBwa2duYW1lPW9wZW50b29uegogdmVyc2lvbj0xLjYu MAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfd3Jrc3JjPSJ0b29uei9zb3VyY2VzIgog YnVpbGRfc3R5bGU9Y21ha2UKIG1ha2VfY21kPW1ha2UKCkZyb20gZDljZGYyODg0NGRiYTM0NDUz NWYxZTRhMDYxNDg3NjY1MjU1YjZmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYyLzExNV0gcGlhbm9iYXI6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cGlhbm9iYXIvdGVtcGxhdGUgYi9zcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRlCmluZGV4IGUzZmVi YjgyMWE0NTEuLjFlM2RjMWJmOTMwOGUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcGlhbm9iYXIvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ3BpYW5vYmFyJwogcGtnbmFtZT1waWFub2JhcgogdmVyc2lvbj0y MDIyLjA0LjAxCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZp bGUKIG1ha2VfYnVpbGRfYXJncz0iVj0xIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoK RnJvbSA0MDY3MWI3NjJhNmNjYzUzODg2NTk0ZTlkZmQ3MzYzNWZmMWNmNTM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjMvMTE1XSBwcHNz cHA6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9wcHNzcHAvdGVtcGxh dGUgfCA3ICsrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9wcHNzcHAvdGVtcGxhdGUgYi9zcmNwa2dzL3Bw c3NwcC90ZW1wbGF0ZQppbmRleCA4NjUxMWVmNTE1ZGVhLi5kNTZkNWMzN2Q1ODQ4IDEwMDY0NAot LS0gYS9zcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Bwc3NwcC90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Bwc3NwcCcKIHBrZ25hbWU9 cHBzc3BwCiB2ZXJzaW9uPTEuMTUuNAotcmV2aXNpb249MQorcmV2aXNpb249MgogX2dsc2xhbmdf Y29tbWl0PWIzNGY2MTllMWM4NTgxMGRjYjNjNTc4MTA3ZDJlNDhiYTRlZTJiMzcKIF9TUElSVl9D cm9zc19jb21taXQ9NDIxMmVlZjY3ZWQwY2EwNDhjYjcyNmE2NzY3MTg1NTA0ZTc2OTVlNQogX2Fy bWlwc19jb21taXQ9N2JkMWVjOTNkNDU4Njk4NWJhMWVmNDIwYjQzYjVlNjIwZjY4Njk1ZQpAQCAt MTQsNyArMTQsNyBAQCBjb25maWd1cmVfYXJncz0iLURIRUFETEVTUz0xIC1EVVNFX1NZU1RFTV9G Rk1QRUc9MSAtRFVOSVRURVNUPU9OCiAgLURVU0lOR19RVF9VST0kKHZvcHRfaWYgcXQgT04gT0ZG KSAtRFVTRV9TWVNURU1fWlNURD1PTgogIC1EQVJNSVBTX1VTRV9TVERfRklMRVNZU1RFTT1PTiIK IGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBweXRob24zICQodm9wdF9pZiBxdCBxdDUtaG9z dC10b29scykiCi1tYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBnbGV3LWRldmVsIGZmbXBlZy1kZXZl bCBsaWJ6aXAtZGV2ZWwKK21ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGdsZXctZGV2ZWwgZmZtcGVn NC1kZXZlbCBsaWJ6aXAtZGV2ZWwKICBzbmFwcHktZGV2ZWwgcmFwaWRqc29uIGxpYnBuZy1kZXZl bCBsaWJ6c3RkLWRldmVsCiAgJCh2b3B0X2lmIHNkbDIgU0RMMi1kZXZlbCkgJCh2b3B0X2lmIHdh eWxhbmQgd2F5bGFuZC1kZXZlbCkKICAkKHZvcHRfaWYgcXQgJ3F0NS1kZXZlbCBxdDUtbXVsdGlt ZWRpYS1kZXZlbCcpIgpAQCAtNjgsMTMgKzY4LDEyIEBAIHBvc3RfZXh0cmFjdCgpIHsKIAogfQog Ci1wb3N0X3BhdGNoKCl7Citwb3N0X3BhdGNoKCkgewogCSMgZGlzYWJsZSBnaXQgdmVyc2lvbmlu ZwogCXZzZWQgLWUgJ3N8ZmluZF9wYWNrYWdlKEdpdCl8IyAmfCcgLWkgZ2l0LXZlcnNpb24uY21h a2UKIH0KIAogZG9faW5zdGFsbCgpIHsKLQl2bGljZW5zZSBMSUNFTlNFLlRYVAogCXZpbnN0YWxs IGljb25zL2ljb24uc3ZnIDY0NCB1c3Ivc2hhcmUvcGl4bWFwcyBwcHNzcHAuc3ZnCiAJdmluc3Rh bGwgUXQvUFBTU1BQLmRlc2t0b3AgNjQ0IHVzci9zaGFyZS9hcHBsaWNhdGlvbnMKIAl2YmluIGJ1 aWxkL1BQU1NQUEhlYWRsZXNzIHBwc3NwcC1oZWFkbGVzcwoKRnJvbSA2MzYwMzlkMjliZmNjZDM5 NTMwMjMwMTVkMDdhZDU0ZmY4M2JmZjE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUw IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjQvMTE1XSBwcWl2OiByZXZidW1wIGZvciBmZm1wZWct Ni4wCgotLS0KIHNyY3BrZ3MvcHFpdi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHFpdi90 ZW1wbGF0ZSBiL3NyY3BrZ3MvcHFpdi90ZW1wbGF0ZQppbmRleCA1NDJmYzI3YTJkMzJhLi45MzA4 ZDk0OWI2YTFjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3BxaXYvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9wcWl2L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHFp dicKIHBrZ25hbWU9cHFpdgogdmVyc2lvbj0yLjEyCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1h a2VkZXBlbmRzPSJnbGliLWRldmVsIGd0ayszLWRldmVsICQodm9wdF9pZiBmZm1wZWcgZmZtcGVn LWRldmVsKQoKRnJvbSA4MmM0MmQ5MzM5YWNmY2MyZjFlZjBiMWYyYWU0NTBiZDU1ZmY1ZmJjIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjUv MTE1XSBxbW1wOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcW1tcC90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcW1tcC90ZW1w bGF0ZQppbmRleCAyNmM2NjFlZDE2YmVhLi5hMTUwZDc0NDFjN2E2IDEwMDY0NAotLS0gYS9zcmNw a2dzL3FtbXAvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xbW1wL3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncW1tcCcKIHBrZ25hbWU9cW1tcAogdmVyc2lvbj0x LjYuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3Vy ZV9hcmdzPSItRFVTRV9IQUw6Qk9PTD1GQUxTRSAtRFFNTVBfREVGQVVMVF9VSTpTVFJJTkc9c2lt cGxlIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFr ZSIKCkZyb20gNDJlYWNmYzIyZjg5YTE0YmZjOGM2ZDA1MmU4ZTRlNGU1ZTViMTczMCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY2LzExNV0g cXQ1LXdlYmVuZ2luZTogdXBkYXRlIHRvIDUuMTUuMTMKCi0tLQogLi4uL2Nocm9taXVtLW1lZGlh LWZpbHRlcnMtY3BwMTQucGF0Y2ggICAgICAgIHwgIDExICsrCiBzcmNwa2dzL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoICAgfCAxNzkgKysrKysrKysrKysrKysrKysrCiBzcmNw a2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUgICAgICAgICAgICAgICAgfCAgMTAgKy0KIDMgZmls ZXMgY2hhbmdlZCwgMTk1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvY2hyb21pdW0tbWVkaWEtZmls dGVycy1jcHAxNC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy9jaHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNwcDE0LnBhdGNoIGIvc3JjcGtncy9x dDUtd2ViZW5naW5lL3BhdGNoZXMvY2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4wNGFkYzU0MGYyY2JjCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvY2hyb21pdW0t bWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaApAQCAtMCwwICsxLDExIEBACistLS0gYS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9CVUlMRC5nbgkyMDIzLTAyLTI3IDEzOjMyOjU5 LjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRl cnMvQlVJTEQuZ24JMjAyMy0wNC0wMiAxNzoyMTozOS4yMDQwNjYzODQgLTA0MDAKK0BAIC05Niw2 ICs5Niw4IEBACisgICAgICIvL3VpL2dmeC9nZW9tZXRyeTpnZW9tZXRyeSIsCisgICBdCisgCisr ICBjZmxhZ3NfY2MgPSBbICItc3RkPWMrKzE0IiBdCisrCisgICBsaWJzID0gW10KKyAKKyAgIGlm IChwcm9wcmlldGFyeV9jb2RlY3MpIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9m Zm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmFj NTVlMTYzNDQyM2EKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0 Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsMTc5IEBACistLS0gYS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwkyMDIzLTA0LTAyIDE2OjUw OjU3LjczMjU0NzQ0NiAtMDQwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2Zp bHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MJMjAyMy0wNC0wMiAxNjo1MDowOS40ODY0Nzg5OTUgLTA0 MDAKK0BAIC01Nyw2ICs1Nyw4IEBACisgCisgbmFtZXNwYWNlIHsKKyAKKytjb25zdGV4cHIgaW50 NjRfdCBrUmVsYXRpdmVUc0Jhc2UgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PigweDdmZmVmZmZmZmZm ZmZmZmYpOworKworIHZvaWQgU2V0QVZTdHJlYW1EaXNjYXJkKEFWU3RyZWFtKiBzdHJlYW0sIEFW RGlzY2FyZCBkaXNjYXJkKSB7CisgICBEQ0hFQ0soc3RyZWFtKTsKKyAgIHN0cmVhbS0+ZGlzY2Fy ZCA9IGRpc2NhcmQ7CitAQCAtOTAsMjQgKzkyLDEyIEBACisgCisgc3RhdGljIGJhc2U6OlRpbWVE ZWx0YSBFeHRyYWN0U3RhcnRUaW1lKEFWU3RyZWFtKiBzdHJlYW0pIHsKKyAgIC8vIFRoZSBkZWZh dWx0IHN0YXJ0IHRpbWUgaXMgemVyby4KKy0gIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90aW1lOwor KyAgYmFzZTo6VGltZURlbHRhIHN0YXJ0X3RpbWUgPSBrTm9UaW1lc3RhbXA7CisgCisgICAvLyBG aXJzdCB0cnkgdG8gdXNlICB0aGUgfHN0YXJ0X3RpbWV8IHZhbHVlIGFzIGlzLgorICAgaWYgKHN0 cmVhbS0+c3RhcnRfdGltZSAhPSBrTm9GRm1wZWdUaW1lc3RhbXApCisgICAgIHN0YXJ0X3RpbWUg PSBDb252ZXJ0RnJvbVRpbWVCYXNlKHN0cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0tPnN0YXJ0X3Rp bWUpOworIAorLSAgLy8gTmV4dCB0cnkgdG8gdXNlIHRoZSBmaXJzdCBEVFMgdmFsdWUsIGZvciBj b2RlY3Mgd2hlcmUgd2Uga25vdyBQVFMgPT0gRFRTCistICAvLyAoZXhjbHVkZXMgYWxsIEgyNngg Y29kZWNzKS4gVGhlIHN0YXJ0IHRpbWUgbXVzdCBiZSByZXR1cm5lZCBpbiBQVFMuCistICBpZiAo c3RyZWFtLT5maXJzdF9kdHMgIT0ga05vRkZtcGVnVGltZXN0YW1wICYmCistICAgICAgc3RyZWFt LT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSEVWQyAmJgorLSAgICAgIHN0cmVh bS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0gyNjQgJiYKKy0gICAgICBzdHJl YW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9NUEVHNCkgeworLSAgICBjb25z dCBiYXNlOjpUaW1lRGVsdGEgZmlyc3RfcHRzID0KKy0gICAgICAgIENvbnZlcnRGcm9tVGltZUJh c2Uoc3RyZWFtLT50aW1lX2Jhc2UsIHN0cmVhbS0+Zmlyc3RfZHRzKTsKKy0gICAgaWYgKGZpcnN0 X3B0cyA8IHN0YXJ0X3RpbWUpCistICAgICAgc3RhcnRfdGltZSA9IGZpcnN0X3B0czsKKy0gIH0K Ky0KKyAgIHJldHVybiBzdGFydF90aW1lOworIH0KKyAKK0BAIC00MDgsMTEgKzM5OCwxMSBAQAor ICAgc2NvcGVkX3JlZnB0cjxEZWNvZGVyQnVmZmVyPiBidWZmZXI7CisgCisgICBpZiAodHlwZSgp ID09IERlbXV4ZXJTdHJlYW06OlRFWFQpIHsKKy0gICAgaW50IGlkX3NpemUgPSAwOworKyAgICBz aXplX3QgaWRfc2l6ZSA9IDA7CisgICAgIHVpbnQ4X3QqIGlkX2RhdGEgPSBhdl9wYWNrZXRfZ2V0 X3NpZGVfZGF0YSgKKyAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfV0VCVlRUX0lE RU5USUZJRVIsICZpZF9zaXplKTsKKyAKKy0gICAgaW50IHNldHRpbmdzX3NpemUgPSAwOworKyAg ICBzaXplX3Qgc2V0dGluZ3Nfc2l6ZSA9IDA7CisgICAgIHVpbnQ4X3QqIHNldHRpbmdzX2RhdGEg PSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKKyAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtU X0RBVEFfV0VCVlRUX1NFVFRJTkdTLCAmc2V0dGluZ3Nfc2l6ZSk7CisgCitAQCAtNDI0LDcgKzQx NCw3IEBACisgICAgIGJ1ZmZlciA9IERlY29kZXJCdWZmZXI6OkNvcHlGcm9tKHBhY2tldC0+ZGF0 YSwgcGFja2V0LT5zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aWRlX2RhdGEuZGF0YSgpLCBzaWRlX2RhdGEuc2l6ZSgpKTsKKyAgIH0gZWxzZSB7CistICAgIGlu dCBzaWRlX2RhdGFfc2l6ZSA9IDA7CisrICAgIHNpemVfdCBzaWRlX2RhdGFfc2l6ZSA9IDA7Cisg ICAgIHVpbnQ4X3QqIHNpZGVfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAg ICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9NQVRST1NLQV9CTE9DS0FERElUSU9OQUwsICZz aWRlX2RhdGFfc2l6ZSk7CisgCitAQCAtNDg1LDcgKzQ3NSw3IEBACisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0LT5zaXplIC0gZGF0YV9vZmZzZXQpOworICAg ICB9CisgCistICAgIGludCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7CisrICAgIHNpemVfdCBza2lw X3NhbXBsZXNfc2l6ZSA9IDA7CisgICAgIGNvbnN0IHVpbnQzMl90KiBza2lwX3NhbXBsZXNfcHRy ID0KKyAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdl9wYWNrZXRf Z2V0X3NpZGVfZGF0YSgKKyAgICAgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1NL SVBfU0FNUExFUywgJnNraXBfc2FtcGxlc19zaXplKSk7CitAQCAtMTU4Nyw2ICsxNTc3LDggQEAK KyAgIGZvciAoY29uc3QgYXV0byYgc3RyZWFtIDogc3RyZWFtc18pIHsKKyAgICAgaWYgKCFzdHJl YW0gfHwgc3RyZWFtLT5Jc0VuYWJsZWQoKSAhPSBlbmFibGVkKQorICAgICAgIGNvbnRpbnVlOwor KyAgICBpZiAoc3RyZWFtLT5hdl9zdHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxV RSkKKysgICAgICBjb250aW51ZTsKKyAgICAgaWYgKCFsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0g fHwKKyAgICAgICAgIHN0cmVhbS0+c3RhcnRfdGltZSgpIDwgbG93ZXN0X3N0YXJ0X3RpbWVfc3Ry ZWFtLT5zdGFydF90aW1lKCkpIHsKKyAgICAgICBsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0gPSBz dHJlYW0uZ2V0KCk7CitAQCAtMTYwNCw2ICsxNTk2LDggQEAKKyAgICAgaWYgKHN0cmVhbSAmJiBz dHJlYW0tPnR5cGUoKSA9PSBEZW11eGVyU3RyZWFtOjpWSURFTyAmJgorICAgICAgICAgc3RyZWFt LT5Jc0VuYWJsZWQoKSkgeworICAgICAgIHZpZGVvX3N0cmVhbSA9IHN0cmVhbS5nZXQoKTsKKysg ICAgICBpZiAoc3RyZWFtLT5hdl9zdHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxV RSkKKysgICAgICAgIGNvbnRpbnVlOworICAgICAgIGlmICh2aWRlb19zdHJlYW0tPnN0YXJ0X3Rp bWUoKSA8PSBzZWVrX3RpbWUpIHsKKyAgICAgICAgIHJldHVybiB2aWRlb19zdHJlYW07CisgICAg ICAgfQorZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oIHF0d2ViZW5naW5lLTUuMTUuMTAv c3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmgKKy0tLSBh L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oCTIwMjIt MDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21p dW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uaAkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxNzE5 Mjc4OCAtMDUwMAorQEAgLTI5LDYgKzI5LDcgQEAgZXh0ZXJuICJDIiB7CisgI2luY2x1ZGUgPGxp YmF2Zm9ybWF0L2F2Zm9ybWF0Lmg+CisgI2luY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2aW8uaD4KKyAj aW5jbHVkZSA8bGliYXZ1dGlsL2F2dXRpbC5oPgorKyNpbmNsdWRlIDxsaWJhdnV0aWwvY2hhbm5l bF9sYXlvdXQuaD4KKyAjaW5jbHVkZSA8bGliYXZ1dGlsL2ltZ3V0aWxzLmg+CisgI2luY2x1ZGUg PGxpYmF2dXRpbC9sb2cuaD4KKyAjaW5jbHVkZSA8bGliYXZ1dGlsL21hc3RlcmluZ19kaXNwbGF5 X21ldGFkYXRhLmg+CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MgcXR3ZWJl bmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9hdWRpb19m aWxlX3JlYWRlci5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMv YXVkaW9fZmlsZV9yZWFkZXIuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAK KysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVh ZGVyLmNjCTIwMjItMDctMTEgMjI6MTI6NDcuOTE3MTkyNzg4IC0wNTAwCitAQCAtODUsNyArODUs NyBAQCBib29sIEF1ZGlvRmlsZVJlYWRlcjo6T3BlbkRlbXV4ZXIoKSB7CisgfQorIAorIGJvb2wg QXVkaW9GaWxlUmVhZGVyOjpPcGVuRGVjb2RlcigpIHsKKy0gIEFWQ29kZWMqIGNvZGVjID0gYXZj b2RlY19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKysgIGNvbnN0IEFW Q29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVj X2lkKTsKKyAgIGlmIChjb2RlYykgeworICAgICAvLyBNUDMgZGVjb2RlcyB0byBTMTZQIHdoaWNo IHdlIGRvbid0IHN1cHBvcnQsIHRlbGwgaXQgdG8gdXNlIFMxNiBpbnN0ZWFkLgorICAgICBpZiAo Y29kZWNfY29udGV4dF8tPnNhbXBsZV9mbXQgPT0gQVZfU0FNUExFX0ZNVF9TMTZQKQorZGlmZiAt TmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRp YS9maWx0ZXJzL2ZmbXBlZ19hdWRpb19kZWNvZGVyLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2RlY29kZXIuY2MK Ky0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRpb19k ZWNvZGVyLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMv M3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYwky MDIyLTA3LTExIDIyOjEyOjQ3LjkxNzE5Mjc4OCAtMDUwMAorQEAgLTMyOSw3ICszMjksNyBAQCBi b29sIEZGbXBlZ0F1ZGlvRGVjb2Rlcjo6Q29uZmlndXJlRGVjb2RlCisgICAgIH0KKyAgIH0KKyAK Ky0gIEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8t PmNvZGVjX2lkKTsKKysgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29k ZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKyAgIGlmICghY29kZWMgfHwKKyAgICAgICBh dmNvZGVjX29wZW4yKGNvZGVjX2NvbnRleHRfLmdldCgpLCBjb2RlYywgJmNvZGVjX29wdGlvbnMp IDwgMCkgeworICAgICBETE9HKEVSUk9SKSA8PCAiQ291bGQgbm90IGluaXRpYWxpemUgYXVkaW8g ZGVjb2RlcjogIgorZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVlLmNjIHF0d2ViZW5naW5lLTUu MTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MK Ky0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVlLmNj CTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkv Y2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZ2x1ZS5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3 LjkxODE5Mjc3OSAtMDUwMAorQEAgLTU5LDcgKzU5LDYgQEAgc3RhdGljIGludDY0X3QgQVZJT1Nl ZWtPcGVyYXRpb24odm9pZCogbworIH0KKyAKKyB2b2lkIEZGbXBlZ0dsdWU6OkluaXRpYWxpemVG Rm1wZWcoKSB7CistICBhdl9yZWdpc3Rlcl9hbGwoKTsKKyB9CisgCisgc3RhdGljIHZvaWQgTG9n Q29udGFpbmVyKGJvb2wgaXNfbG9jYWxfZmlsZSwKK0BAIC05NSw5ICs5NCw2IEBAIEZGbXBlZ0ds dWU6OkZGbXBlZ0dsdWUoRkZtcGVnVVJMUHJvdG9jb2wKKyAgIC8vIEVuYWJsZSBmYXN0LCBidXQg aW5hY2N1cmF0ZSBzZWVrcyBmb3IgTVAzLgorICAgZm9ybWF0X2NvbnRleHRfLT5mbGFncyB8PSBB VkZNVF9GTEFHX0ZBU1RfU0VFSzsKKyAKKy0gIC8vIEVuc3VyZXMgd2UgY2FuIHJlYWQgb3V0IHZh cmlvdXMgbWV0YWRhdGEgYml0cyBsaWtlIHZwOCBhbHBoYS4KKy0gIGZvcm1hdF9jb250ZXh0Xy0+ ZmxhZ3MgfD0gQVZGTVRfRkxBR19LRUVQX1NJREVfREFUQTsKKy0KKyAgIC8vIEVuc3VyZXMgZm9y bWF0IHBhcnNpbmcgZXJyb3JzIHdpbGwgYmFpbCBvdXQuIEZyb20gYW4gYXVkaXQgb24gMTEvMjAx NywgYWxsCisgICAvLyBpbnN0YW5jZXMgd2VyZSByZWFsIGZhaWx1cmVzLiBTb2x2ZXMgYnVncyBs aWtlIGh0dHA6Ly9jcmJ1Zy5jb20vNzEwNzkxLgorICAgZm9ybWF0X2NvbnRleHRfLT5lcnJvcl9y ZWNvZ25pdGlvbiB8PSBBVl9FRl9FWFBMT0RFOworZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4x NS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRl b19kZWNvZGVyLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21l ZGlhL2ZpbHRlcnMvZmZtcGVnX3ZpZGVvX2RlY29kZXIuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjCTIwMjItMDUtMjMg MDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVk aWEvZmlsdGVycy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3Ljkx ODE5Mjc3OSAtMDUwMAorQEAgLTM5MSw3ICszOTEsNyBAQCBib29sIEZGbXBlZ1ZpZGVvRGVjb2Rl cjo6Q29uZmlndXJlRGVjb2RlCisgICBpZiAoZGVjb2RlX25hbHVzXykKKyAgICAgY29kZWNfY29u dGV4dF8tPmZsYWdzMiB8PSBBVl9DT0RFQ19GTEFHMl9DSFVOS1M7CisgCistICBBVkNvZGVjKiBj b2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7Cisr ICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRl eHRfLT5jb2RlY19pZCk7CisgICBpZiAoIWNvZGVjIHx8IGF2Y29kZWNfb3BlbjIoY29kZWNfY29u dGV4dF8uZ2V0KCksIGNvZGVjLCBOVUxMKSA8IDApIHsKKyAgICAgUmVsZWFzZUZGbXBlZ1Jlc291 cmNlcygpOworICAgICByZXR1cm4gZmFsc2U7CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1 LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9j aGVja2VyLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlh L2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21p dW0vbWVkaWEvZmlsdGVycy9tZWRpYV9maWxlX2NoZWNrZXIuY2MJMjAyMi0wNS0yMyAwNjozODo0 MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0 ZXJzL21lZGlhX2ZpbGVfY2hlY2tlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3OSAt MDUwMAorQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBNZWRpYUZpbGVDaGVja2VyOjpTdGFydChiYXNl OjpUaW1lRAorICAgICAgIGF1dG8gY29udGV4dCA9IEFWU3RyZWFtVG9BVkNvZGVjQ29udGV4dChm b3JtYXRfY29udGV4dC0+c3RyZWFtc1tpXSk7CisgICAgICAgaWYgKCFjb250ZXh0KQorICAgICAg ICAgY29udGludWU7CistICAgICAgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rl cihjcC0+Y29kZWNfaWQpOworKyAgICAgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19m aW5kX2RlY29kZXIoY3AtPmNvZGVjX2lkKTsKKyAgICAgICBpZiAoY29kZWMgJiYgYXZjb2RlY19v cGVuMihjb250ZXh0LmdldCgpLCBjb2RlYywgbnVsbHB0cikgPj0gMCkgeworICAgICAgICAgYXV0 byBsb29wID0gc3RkOjptYWtlX3VuaXF1ZTxGRm1wZWdEZWNvZGluZ0xvb3A+KGNvbnRleHQuZ2V0 KCkpOworICAgICAgICAgc3RyZWFtX2NvbnRleHRzW2ldID0ge3N0ZDo6bW92ZShjb250ZXh0KSwg c3RkOjptb3ZlKGxvb3ApfTsKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvdmlkZW9fY29k aW5nL2NvZGVjcy9oMjY0L2gyNjRfZGVjb2Rlcl9pbXBsLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2Nv ZGluZy9jb2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYworLS0tIGEvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3Mv aDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAt MDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1 bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYwkyMDIyLTA3 LTExIDIyOjEyOjQ3LjkxODE5Mjc3OSAtMDUwMAorQEAgLTIwMyw3ICsyMDMsNyBAQCBpbnQzMl90 IEgyNjREZWNvZGVySW1wbDo6SW5pdERlY29kZShjb25zCisgICAvLyBhIHBvaW50ZXIgfHRoaXN8 LgorICAgYXZfY29udGV4dF8tPm9wYXF1ZSA9IHRoaXM7CisgCistICBBVkNvZGVjKiBjb2RlYyA9 IGF2Y29kZWNfZmluZF9kZWNvZGVyKGF2X2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBB VkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGF2X2NvbnRleHRfLT5jb2RlY19p ZCk7CisgICBpZiAoIWNvZGVjKSB7CisgICAgIC8vIFRoaXMgaXMgYW4gaW5kaWNhdGlvbiB0aGF0 IEZGbXBlZyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgb3IgaXQgaGFzIG5vdAorICAgICAvLyBi ZWVuIGNvbXBpbGVkL2luaXRpYWxpemVkIHdpdGggdGhlIGNvcnJlY3Qgc2V0IG9mIGNvZGVjcy4K ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1 LXdlYmVuZ2luZS90ZW1wbGF0ZQppbmRleCA2NzlkMGZhMmFkODRiLi5iODlmZTRjMWFkNTBhIDEw MDY0NAotLS0gYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9x dDUtd2ViZW5naW5lL3RlbXBsYXRlCkBAIC0xLDkgKzEsOSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAncXQ1LXdlYmVuZ2luZScKIHBrZ25hbWU9cXQ1LXdlYmVuZ2luZQotdmVyc2lvbj01LjE1LjEx Ci1yZXZpc2lvbj00Cit2ZXJzaW9uPTUuMTUuMTMKK3JldmlzaW9uPTEKIF92ZXJzaW9uPSIke3Zl cnNpb259LWx0cyIKLV9jaHJvbWl1bV9jb21taXQ9YmUzNDllYWY2MmU3Nzk1NTc5MWQ3YmYyOWY4 OTNmMWU4YTM3ZGFmNAorX2Nocm9taXVtX2NvbW1pdD1lNDhkZjc4MDNjN2M5OGIwYjI0NzFjOTQw NTdkMzJlNDRhMzAxYWQ1CiBhcmNocz0ieDg2XzY0KiBpNjg2KiBhcm12WzY3XSogcHBjNjQqIGFh cmNoNjQqIgogY3JlYXRlX3dya3NyYz15ZXMKIGJ1aWxkX3N0eWxlPXFtYWtlCkBAIC0zMiw4ICsz Miw4IEBAIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIsIExHUEwtMy4wLW9yLWxhdGVyIgogaG9t ZXBhZ2U9Imh0dHBzOi8vcXQuaW8vIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vcXQv cXR3ZWJlbmdpbmUvYXJjaGl2ZS92JHtfdmVyc2lvbn0udGFyLmd6CiAgaHR0cHM6Ly9naXRodWIu Y29tL3F0L3F0d2ViZW5naW5lLWNocm9taXVtL2FyY2hpdmUvJHtfY2hyb21pdW1fY29tbWl0fS50 YXIuZ3oiCi1jaGVja3N1bT0iYWE3NDY2MzU2YzQ1MGM1ZjU4NzBmOTc5YjkzY2Q3ZTdlNjJkYTEx NjVjMzI4ZmZjYWIxYTk5MjhkYjE4YWQ2NwotIDZmNDdlZDhhYjhjYzA2MjQxMWY2ZjIwNmRhNjM1 M2JjODI2M2Q2ZWQ2ZDYyOTBjNjg5YTA1YzAxZDkxZjY0NmIiCitjaGVja3N1bT0iNGI1OTgzOGVk NzVlZjc4OGI1OWUxZTQxMjUzNWEwZTQyZGQ5ZDMxMTY2MWZkZWFkYjE5MWI1ODFiYTgxNWM2Mwor IGE5MTY4NjU2MmIxZDRlOGIyMjBlMGJiY2JhYjVmZWI2NDYzMGUyZGU5NzRiMzVhYzAzNGJmMzg4 YWY3NzFhNmMiCiAKIG5vX2dlbmVyaWNfcGtnY29uZmlnX2xpbms9eWVzCiBidWlsZF9vcHRpb25z PSJzbmRpbyBwaXBld2lyZSIKCkZyb20gZTJhMDNiMjI0ZWYxOTU3OGVhMDI2ZmI2M2JlZWJlZWY4 MWI0NGIxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDY3LzExNV0gcXQ1OiB1cGRhdGUgdG8gNS4xNS44CgotLS0KIC4uLmVyeXdoZXJlLW9w ZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5wYXRjaCB8IDEyOTEzICsrKysrKysrKysrKysrKysK IHNyY3BrZ3MvcXQ1L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEyICst CiAyIGZpbGVzIGNoYW5nZWQsIDEyOTE5IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy9xdC1ldmVyeXdoZXJlLW9wZW5z b3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3Bh dGNoZXMvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNyYy01LjE1Ljgta2Y1LTEucGF0Y2ggYi9z cmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtm NS0xLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjk2NmM5 OGJjZDNiYjEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2ZXJ5 d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoCkBAIC0wLDAgKzEsMTI5MTMg QEAKK1N1Ym1pdHRlZCBCeTogICAgICAgICAgICBQaWVycmUgTGFiYXN0aWUgPHBpZXJyZV9kb3Rf bGFiYXN0aWVfYXRfbmV1Zl9kb3RfZnI+CitEYXRlOiAgICAgICAgICAgICAgICAgICAgMjAyMy0w MS0wNQorSW5pdGlhbCBQYWNrYWdlIFZlcnNpb246IDUuMTUuOAorVXBzdHJlYW0gU3RhdHVzOiAg ICAgICAgIEFwcGxpZWQgKGFjY29yZGluZyB0byBLREUpCitPcmlnaW46ICAgICAgICAgICAgICAg ICAgS0RFIHBhdGNoIHNldAorRGVzY3JpcHRpb246ICAgICAgICAgICAgIFBhdGNoIHNldCBtYWlu dGFpbmVkIGJ5IHRoZSBLREUgZm9sa3MKK3NlZSBodHRwczovL2RvdC5rZGUub3JnLzIwMjEvMDQv MDYvYW5ub3VuY2luZy1rZGVzLXF0LTUtcGF0Y2gtY29sbGVjdGlvbgorUGF0Y2ggZ2VuZXJhdGVk IHVzaW5nIHRoZSBwcm9jZWR1cmUgaW4KK2h0dHBzOi8vd2lraS5saW51eGZyb21zY3JhdGNoLm9y Zy9ibGZzL3RpY2tldC8xNzQ3NiNjb21tZW50OjMKKworU3VibW9kdWxlIHF0YmFzZSA0ZWU0ZmMx OC4uOWNmNTg2ZDY6CitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJvaWQv cXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3Jt ZGVmcy5oCitpbmRleCBmNzViYzQwOTNiLi4yYmQ1OTQxMGQ0IDEwMDY0NAorLS0tIGEvcXRiYXNl L21rc3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtz cGVjcy9jb21tb24vYW5kcm9pZC9xcGxhdGZvcm1kZWZzLmgKK0BAIC0xNDQsMTEgKzE0NCw3IEBA CisgI2RlZmluZSBRVF9TSUdOQUxfQVJHUyAgICAgICAgICBpbnQKKyAjZGVmaW5lIFFUX1NJR05B TF9JR05PUkUgICAgICAgIFNJR19JR04KKyAKKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChf X0dMSUJDX18gPj0gMikKKyAjZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5f dAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYK KyAKKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDAp CisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5tayBiL3F0YmFzZS9ta3NwZWNzL2Zl YXR1cmVzL21hYy9zZGsubWsKK2luZGV4IGYzMGI1ODMwYjQuLmEzMmNlYWNiNmMgMTAwNjQ0Cist LS0gYS9xdGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9tYWMvc2RrLm1rCisrKysgYi9xdGJhc2UvbWtz cGVjcy9mZWF0dXJlcy9tYWMvc2RrLm1rCitAQCAtMSw2ICsxLDYgQEAKKyAKKyBpZmVxICgkKFFU X01BQ19TREtfTk9fVkVSU0lPTl9DSEVDSyksKQorLSAgICBDSEVDS19TREtfQ09NTUFORCA9IC91 c3IvYmluL3hjcnVuIC0tc2RrICQoRVhQT1JUX1FNQUtFX01BQ19TREspIC1zaG93LXNkay12ZXJz aW9uIDI+JjEKKysgICAgQ0hFQ0tfU0RLX0NPTU1BTkQgPSAvdXNyL2Jpbi94Y3J1biAtLXNkayAk KEVYUE9SVF9RTUFLRV9NQUNfU0RLKSAtc2hvdy1zZGstdmVyc2lvbiAyPi9kZXYvbnVsbAorICAg ICBDVVJSRU5UX01BQ19TREtfVkVSU0lPTiA6PSAkKHNoZWxsIERFVkVMT1BFUl9ESVI9JChFWFBP UlRfUU1BS0VfWENPREVfREVWRUxPUEVSX1BBVEgpICQoQ0hFQ0tfU0RLX0NPTU1BTkQpKQorICAg ICBpZm5lcSAoJChDVVJSRU5UX01BQ19TREtfVkVSU0lPTiksJChFWFBPUlRfUU1BS0VfTUFDX1NE S19WRVJTSU9OKSkKKyAgICAgICAgICMgV2UgZG9uJ3Qgd2FudCB0byBjb21wbGFpbiBhYm91dCBv dXQgb2YgZGF0ZSBTREsgdW5sZXNzIHRoZSB0YXJnZXQgbmVlZHMgdG8gYmUgcmVtYWRlLgorZGlm ZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaCBiL3F0 YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggYTgxOGQ5NzNm MC4uYzFhYjcyZmJjNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5nL3Fw bGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtY2xhbmcvcXBsYXRmb3Jt ZGVmcy5oCitAQCAtNzksMTQgKzc5LDYgQEAKKyAjZGVmaW5lIFFUX1VTRV9YT1BFTl9MRlNfRVhU RU5TSU9OUworICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgorIAor LSN1bmRlZiBRVF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dM SUJDX18gPj0gMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAor LSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYKKy0K KyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisg I2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCisgI2RlZmluZSBRVF9W U05QUklOVEYgICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3Nw ZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51eC1nKysv cXBsYXRmb3JtZGVmcy5oCitpbmRleCAxMzUyM2YwNzAyLi40ZDI3NTBkOWVjIDEwMDY0NAorLS0t IGEvcXRiYXNlL21rc3BlY3MvbGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNl L21rc3BlY3MvbGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTc5LDE0ICs3OSw2IEBACisg I2RlZmluZSBRVF9VU0VfWE9QRU5fTEZTX0VYVEVOU0lPTlMKKyAjaW5jbHVkZSAiLi4vY29tbW9u L3Bvc2l4L3FwbGF0Zm9ybWRlZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCistCistI2lm IGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fIDwgMikKKy0jZGVmaW5lIFFUX1NPQ0tM RU5fVCAgICAgICAgICAgIGludAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAg ICAgICBzb2NrbGVuX3QKKy0jZW5kaWYKKy0KKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAm JiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAg ICA6OnNucHJpbnRmCisgI2RlZmluZSBRVF9WU05QUklOVEYgICAgICAgICAgICA6OnZzbnByaW50 ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRmb3JtZGVmcy5o IGIvcXRiYXNlL21rc3BlY3MvbGludXgtbGx2bS9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IGRjNzUw YWIxZWYuLmQzY2MzOWI0N2YgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sbHZt L3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtbGx2bS9xcGxhdGZv cm1kZWZzLmgKK0BAIC04MCwxNCArODAsNiBAQAorICNkZWZpbmUgUVRfVVNFX1hPUEVOX0xGU19F WFRFTlNJT05TCisgI2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisg CistI3VuZGVmIFFUX1NPQ0tMRU5fVAorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9f R0xJQkNfXyA+PSAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90 CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgor LQorICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkK KyAjZGVmaW5lIFFUX1NOUFJJTlRGICAgICAgICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFU X1ZTTlBSSU5URiAgICAgICAgICAgIDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21r c3BlY3MvbGludXgtbHNiLWcrKy9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51 eC1sc2ItZysrL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggNGM0ZTUzZGEyYS4uODNiYWZmYjNlMyAx MDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5o CisrKysgYi9xdGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3FwbGF0Zm9ybWRlZnMuaAorQEAg LTg1LDE2ICs4NSw5IEBACisgI2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZz LmgiCisgCisgI3VuZGVmIFFUX09QRU5fTEFSR0VGSUxFCistI3VuZGVmIFFUX1NPQ0tMRU5fVAor IAorICNkZWZpbmUgUVRfT1BFTl9MQVJHRUZJTEUgICAgICAgMAorIAorLSNpZiBkZWZpbmVkKF9f R0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAg ICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAg IGludAorLSNlbmRpZgorLQorICNpZm5kZWYgU0lPQ0dJRkJSREFERFIKKyAjICBkZWZpbmUgU0lP Q0dJRkJSREFERFIgMHg4OTE5CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3Mv bHlueG9zLWcrKy9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysrL3Fw bGF0Zm9ybWRlZnMuaAoraW5kZXggNDMzOWVhMmIyMy4uNjAwN2FmMDA1NSAxMDA2NDQKKy0tLSBh L3F0YmFzZS9ta3NwZWNzL2x5bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2Uv bWtzcGVjcy9seW54b3MtZysrL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTcyLDE0ICs3Miw2IEBACisg CisgI2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVm IFFUX1NPQ0tMRU5fVAorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+ PSAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UK Ky0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgorLQorICNpZiBk ZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5l IFFUX1NOUFJJTlRGICAgICAgICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFUX1ZTTlBSSU5U RiAgICAgICAgICAgIDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy8zcmRwYXJ0 eS9hbmdsZS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcCBiL3F0YmFzZS9zcmMvM3Jk cGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAKK2luZGV4IGMzYzE4 NDI1OGYuLjMyYWYzZjhmMjkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2FuZ2xl L3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjLzNyZHBh cnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwCitAQCAtMTAsNiArMTAs NyBAQAorICNpbmNsdWRlICJsaWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuaCIKKyAKKyAjaW5jbHVk ZSA8YWxnb3JpdGhtPgorKyNpbmNsdWRlIDxsaW1pdHM+CisgCisgI2luY2x1ZGUgImNvbW1vbi9k ZWJ1Zy5oIgorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9ya2ZkL2Zvcmtm ZF9saW51eC5jIGIvcXRiYXNlL3NyYy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMKK2lu ZGV4IGZmZTBlOWE1ZTIuLmIxZjU0MDhkMTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjLzNyZHBh cnR5L2ZvcmtmZC9mb3JrZmRfbGludXguYworKysrIGIvcXRiYXNlL3NyYy8zcmRwYXJ0eS9mb3Jr ZmQvZm9ya2ZkX2xpbnV4LmMKK0BAIC04Miw3ICs4Miw4IEBAIHN0YXRpYyBpbnQgc3lzX2Nsb25l KHVuc2lnbmVkIGxvbmcgY2xvbmVmbGFncywgaW50ICpwdGlkKQorICAgICByZXR1cm4gc3lzY2Fs bChfX05SX2Nsb25lLCBjbG9uZWZsYWdzLCBjaGlsZF9zdGFjaywgc3RhY2tfc2l6ZSwgcHRpZCwg bmV3dGxzLCBjdGlkKTsKKyAjZWxpZiBkZWZpbmVkKF9fYXJjX18pIHx8IGRlZmluZWQoX19hcm1f XykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorICAg ICBkZWZpbmVkKF9fbmRzMzJfXykgfHwgZGVmaW5lZChfX2hwcGFfXykgfHwgZGVmaW5lZChfX3Bv d2VycGNfXykgfHwgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX194dGVuc2FfXykgfHwgZGVmaW5lZChfX2FscGhhX18pIHx8IGRlZmlu ZWQoX19yaXNjdikKKysgICAgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9feHRlbnNh X18pIHx8IGRlZmluZWQoX19hbHBoYV9fKSB8fCBkZWZpbmVkKF9fcmlzY3YpIHx8IFwKKysgICAg ZGVmaW5lZChfX2xvb25nYXJjaF9fKQorICAgICAvKiBjdGlkIGFuZCBuZXd0bHMgYXJlIGludmVy dGVkIG9uIENPTkZJR19DTE9ORV9CQUNLV0FSRFMgYXJjaGl0ZWN0dXJlcywKKyAgICAgICogYnV0 IHNpbmNlIGJvdGggdmFsdWVzIGFyZSAwLCB0aGVyZSdzIG5vIGhhcm0uICovCisgICAgIHJldHVy biBzeXNjYWxsKF9fTlJfY2xvbmUsIGNsb25lZmxhZ3MsIGNoaWxkX3N0YWNrLCBwdGlkLCBjdGlk LCBuZXd0bHMpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9x dHByb2plY3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YSBiL3F0YmFzZS9zcmMvYW5kcm9pZC9q YXIvc3JjL29yZy9xdHByb2plY3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YQoraW5kZXggNTc5 MmI1YjJmNS4uMmY3NDc1MGZjZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIv c3JjL29yZy9xdHByb2plY3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YQorKysrIGIvcXRiYXNl L3NyYy9hbmRyb2lkL2phci9zcmMvb3JnL3F0cHJvamVjdC9xdDUvYW5kcm9pZC9RdE5hdGl2ZS5q YXZhCitAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICBwdWJs aWMgc3RhdGljIFF0VGhyZWFkIG1fcXRUaHJlYWQgPSBuZXcgUXRUaHJlYWQoKTsKKyAgICAgcHJp dmF0ZSBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFVyaT4gbV9jYWNoZWRVcmlzID0gbmV3IEhhc2hN YXA8U3RyaW5nLCBVcmk+KCk7CisgICAgIHByaXZhdGUgc3RhdGljIEFycmF5TGlzdDxTdHJpbmc+ IG1fa25vd25EaXJzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisrICAgIHByaXZhdGUgc3Rh dGljIGZpbmFsIFN0cmluZyBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UgPSAiTm8gcGVybWlzc2lv bnMgdG8gb3BlbiBVcmkiOworIAorICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBSdW5uYWJsZSBy dW5QZW5kaW5nQ3BwUnVubmFibGVzUnVubmFibGUgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAg ICBAT3ZlcnJpZGUKK0BAIC0xOTMsMTEgKzE5NCwxMCBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUK KyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVyVXJpOworICAgICAgICAgICAgIH0KKyAK Ky0gICAgICAgICAgICAvLyBBbmRyb2lkIDYgYW5kIGVhcmxpZXIgY291bGQgc3RpbGwgbWFuYWdl IHRvIG9wZW4gdGhlIGZpbGUgc28gd2UgY2FuIHJldHVybiB0aGUKKy0gICAgICAgICAgICAvLyBw YXJzZWQgdXJpIGhlcmUKKy0gICAgICAgICAgICBpZiAoQnVpbGQuVkVSU0lPTi5TREtfSU5UIDwg MjQpCistICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWRVcmk7CistICAgICAgICAgICAgcmV0 dXJuIG51bGw7CisrICAgICAgICAgICAgLy8gaWYgd2Ugb25seSBoYXZlIHRyYW5zaWVudCBwZXJt aXNzaW9ucyBvbiB1cmkgYWxsIHRoZSBhYm92ZSB3aWxsIGZhaWwsCisrICAgICAgICAgICAgLy8g YnV0IHdlIHdpbGwgYmUgYWJsZSB0byByZWFkIHRoZSBmaWxlIGFueXdheSwgc28gY29udGludWUg d2l0aCB1cmkgaGVyZSBhbnl3YXkKKysgICAgICAgICAgICAvLyBhbmQgY2hlY2sgZm9yIFNlY3Vy aXR5RXhjZXB0aW9ucyBsYXRlcgorKyAgICAgICAgICAgIHJldHVybiBwYXJzZWRVcmk7CisgICAg ICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgZS5wcmlu dFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgICByZXR1cm4gbnVsbDsKK0BAIC0yNDQsNyArMjQ0 LDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICBpbnQgZXJyb3IgPSAtMTsKKyAK KyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkgeworLSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAi b3BlbkZkRm9yQ29udGVudFVybCgpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSIpOworKyAg ICAgICAgICAgIExvZy5lKFF0VEFHLCAib3BlbkZkRm9yQ29udGVudFVybCgpOiAiICsgTm9QZXJt aXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAg ICB9CisgCitAQCAtMjU0LDEyICsyNTQsMTMgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAg ICAgICAgICAgcmV0dXJuIGZkRGVzYy5kZXRhY2hGZCgpOworICAgICAgICAgfSBjYXRjaCAoRmls ZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgp OworLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxB cmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJvcGVuRmRG b3JDb250ZW50VXJsKCk6IEludmFsaWQgVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNr VHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZXJyb3I7CisrICAgICAgICB9IGNhdGNoIChT ZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlz c2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4gZXJyb3I7Cisg ICAgIH0KKyAKKyAgICAgcHVibGljIHN0YXRpYyBsb25nIGdldFNpemUoQ29udGV4dCBjb250ZXh0 LCBTdHJpbmcgY29udGVudFVybCkKK0BAIC0yNzAsNyArMjcxLDcgQEAgcHVibGljIGNsYXNzIFF0 TmF0aXZlCisgICAgICAgICAgICAgdXJpID0gZ2V0VXJpV2l0aFZhbGlkUGVybWlzc2lvbihjb250 ZXh0LCBjb250ZW50VXJsLCAiciIpOworIAorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKSB7Cist ICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJnZXRTaXplKCk6IE5vIHBlcm1pc3Npb25zIHRvIG9w ZW4gVXJpIik7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVz c2FnZSk7CisgICAgICAgICAgICAgcmV0dXJuIHNpemU7CisgICAgICAgICB9IGVsc2UgaWYgKCFt X2NhY2hlZFVyaXMuY29udGFpbnNLZXkoY29udGVudFVybCkpIHsKKyAgICAgICAgICAgICBtX2Nh Y2hlZFVyaXMucHV0KGNvbnRlbnRVcmwsIHVyaSk7CitAQCAtMjg4LDEyICsyODksMTMgQEAgcHVi bGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNl cHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgpOiBJbnZhbGlk IFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAg cmV0dXJuIHNpemU7CisgICAgICAgICB9ICBjYXRjaCAoVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNl cHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgpOiBVbnN1cHBv cnRlZCBvcGVyYXRpb24gZm9yIGdpdmVuIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFj a1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIHNpemU7CisrICAgICAgICB9IGNhdGNoIChT ZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlz c2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4gc2l6ZTsKKyAg ICAgfQorIAorICAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gY2hlY2tGaWxlRXhpc3RzKENvbnRl eHQgY29udGV4dCwgU3RyaW5nIGNvbnRlbnRVcmwpCitAQCAtMzAzLDcgKzMwNSw3IEBAIHB1Ymxp YyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKQorICAgICAgICAgICAg IHVyaSA9IGdldFVyaVdpdGhWYWxpZFBlcm1pc3Npb24oY29udGV4dCwgY29udGVudFVybCwgInIi KTsKKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkgeworLSAgICAgICAgICAgIExvZy5lKFF0VEFH LCAiY2hlY2tGaWxlRXhpc3RzKCk6IE5vIHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIik7CisrICAg ICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAg ICAgICAgcmV0dXJuIGV4aXN0czsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgaWYg KCFtX2NhY2hlZFVyaXMuY29udGFpbnNLZXkoY29udGVudFVybCkpCitAQCAtMzIxLDEyICszMjMs MTMgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJn dW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tGaWxl RXhpc3RzKCk6IEludmFsaWQgVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2Uo KTsKKy0gICAgICAgICAgICByZXR1cm4gZXhpc3RzOworICAgICAgICAgfSBjYXRjaCAoVW5zdXBw b3J0ZWRPcGVyYXRpb25FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAi Y2hlY2tGaWxlRXhpc3RzKCk6IFVuc3VwcG9ydGVkIG9wZXJhdGlvbiBmb3IgZ2l2ZW4gVXJpIik7 CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4g ZmFsc2U7CisrICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisrICAgICAg ICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICB9 CisrICAgICAgICByZXR1cm4gZXhpc3RzOworICAgICB9CisgCisgICAgIHB1YmxpYyBzdGF0aWMg Ym9vbGVhbiBjaGVja0lmV3JpdGFibGUoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVy bCkKK0BAIC0zNDQsNyArMzQ3LDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICAg ICAgdXJpID0gZ2V0VXJpV2l0aFZhbGlkUGVybWlzc2lvbihjb250ZXh0LCBjb250ZW50VXJsLCAi ciIpOworICAgICAgICAgfQorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKSB7CistICAgICAgICAg ICAgTG9nLmUoUXRUQUcsICJpc0RpcigpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSIpOwor KyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAg ICAgICAgICAgIHJldHVybiBpc0RpcjsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg aWYgKCFtX2NhY2hlZFVyaXMuY29udGFpbnNLZXkoY29udGVudFVybCkpCitAQCAtMzc0LDEyICsz NzcsMTMgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICB9IGNhdGNoIChJbGxlZ2Fs QXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tJ ZkRpcigpOiBJbnZhbGlkIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7 CistICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0 ZWRPcGVyYXRpb25FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hl Y2tJZkRpcigpOiBVbnN1cHBvcnRlZCBvcGVyYXRpb24gZm9yIGdpdmVuIFVyaSIpOworICAgICAg ICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor KyAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAgICAgICAgIExv Zy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgfQorKyAgICAg ICAgcmV0dXJuIGZhbHNlOworICAgICB9CisgICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gbGlz dENvbnRlbnRzRnJvbVRyZWVVcmkoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVybCkK KyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRy ZWR1Y2VrZXJuZWwuaCBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2Vr ZXJuZWwuaAoraW5kZXggOGY5YTkzODk1Mi4uYTk4ZGVkZWYyZSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaAorKysrIGIvcXRiYXNl L3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHJlZHVjZWtlcm5lbC5oCitAQCAtMjEyLDExICsy MTIsMTMgQEAgcHVibGljOgorIAorICAgICBpbmxpbmUgYm9vbCBzaG91bGRUaHJvdHRsZSgpCisg ICAgIHsKKysgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxRTXV0ZXg+IGxvY2tlcihtdXRleCk7Cisg ICAgICAgICByZXR1cm4gKHJlc3VsdHNNYXBTaXplID4gKFJlZHVjZVF1ZXVlVGhyb3R0bGVMaW1p dCAqIHRocmVhZENvdW50KSk7CisgICAgIH0KKyAKKyAgICAgaW5saW5lIGJvb2wgc2hvdWxkU3Rh cnRUaHJlYWQoKQorICAgICB7CisrICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8UU11dGV4PiBsb2Nr ZXIobXV0ZXgpOworICAgICAgICAgcmV0dXJuIChyZXN1bHRzTWFwU2l6ZSA8PSAoUmVkdWNlUXVl dWVTdGFydExpbWl0ICogdGhyZWFkQ291bnQpKTsKKyAgICAgfQorIH07CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAgYi9xdGJh c2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAoraW5kZXggZWE2 Y2UzYWM0Mi4uN2Y5MWEyYmE2OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9x dGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQv cXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAorQEAgLTE3Niw2ICsxNzYsMzkgQEAgdm9pZCBU aHJlYWRFbmdpbmVCYXNlOjpzdGFydFNpbmdsZVRocmVhZGVkKCkKKyAgICAgZmluaXNoKCk7Cisg fQorIAorK3ZvaWQgVGhyZWFkRW5naW5lQmFzZTo6c3RhcnRCbG9ja2luZygpCisreworKyAgICBz dGFydCgpOworKyAgICBiYXJyaWVyLmFjcXVpcmUoKTsKKysgICAgc3RhcnRUaHJlYWRzKCk7Cisr CisrICAgIGJvb2wgdGhyb3R0bGVkID0gZmFsc2U7CisrI2lmbmRlZiBRVF9OT19FWENFUFRJT05T CisrICAgIHRyeSB7CisrI2VuZGlmCisrICAgICAgICB3aGlsZSAodGhyZWFkRnVuY3Rpb24oKSA9 PSBUaHJvdHRsZVRocmVhZCkgeworKyAgICAgICAgICAgIGlmICh0aHJlYWRUaHJvdHRsZUV4aXQo KSkgeworKyAgICAgICAgICAgICAgICB0aHJvdHRsZWQgPSB0cnVlOworKyAgICAgICAgICAgICAg ICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrI2lmbmRlZiBRVF9OT19FWENF UFRJT05TCisrICAgIH0gY2F0Y2ggKFFFeGNlcHRpb24gJmUpIHsKKysgICAgICAgIGhhbmRsZUV4 Y2VwdGlvbihlKTsKKysgICAgfSBjYXRjaCAoLi4uKSB7CisrICAgICAgICBoYW5kbGVFeGNlcHRp b24oUVVuaGFuZGxlZEV4Y2VwdGlvbigpKTsKKysgICAgfQorKyNlbmRpZgorKworKyAgICBpZiAo dGhyb3R0bGVkID09IGZhbHNlKSB7CisrICAgICAgICBiYXJyaWVyLnJlbGVhc2UoKTsKKysgICAg fQorKworKyAgICBiYXJyaWVyLndhaXQoKTsKKysgICAgZmluaXNoKCk7CisrICAgIGV4Y2VwdGlv blN0b3JlLnRocm93UG9zc2libGVFeGNlcHRpb24oKTsKKyt9CisrCisgdm9pZCBUaHJlYWRFbmdp bmVCYXNlOjpzdGFydFRocmVhZCgpCisgeworICAgICBzdGFydFRocmVhZEludGVybmFsKCk7Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2lu ZS5oIGIvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5oCitp bmRleCA3YzMwY2ViZGJjLi5hNGM4NTQ4Y2M0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb25j dXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5oCisrKysgYi9xdGJhc2Uvc3JjL2NvbmN1 cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmgKK0BAIC05MSw2ICs5MSw3IEBAIHB1Ymxp YzoKKyAgICAgVGhyZWFkRW5naW5lQmFzZSgpOworICAgICB2aXJ0dWFsIH5UaHJlYWRFbmdpbmVC YXNlKCk7CisgICAgIHZvaWQgc3RhcnRTaW5nbGVUaHJlYWRlZCgpOworKyAgICB2b2lkIHN0YXJ0 QmxvY2tpbmcoKTsKKyAgICAgdm9pZCBzdGFydFRocmVhZCgpOworICAgICBib29sIGlzQ2FuY2Vs ZWQoKTsKKyAgICAgdm9pZCB3YWl0Rm9yUmVzdW1lKCk7CitAQCAtMTQzLDYgKzE0NCwxNSBAQCBw dWJsaWM6CisgICAgICAgICByZXR1cm4gcmVzdWx0KCk7CisgICAgIH0KKyAKKysgICAgLy8gUnVu cyB0aGUgdXNlciBhbGdvcml0aG0gdXNpbmcgbXVsdGlwbGUgdGhyZWFkcy4KKysgICAgLy8gVGhp cyBmdW5jdGlvbiBibG9ja3MgdW50aWwgdGhlIGFsZ29yaXRobSBpcyBmaW5pc2hlZCwKKysgICAg Ly8gYW5kIHRoZW4gcmV0dXJucyB0aGUgcmVzdWx0LgorKyAgICBUICpzdGFydEJsb2NraW5nKCkK KysgICAgeworKyAgICAgICAgVGhyZWFkRW5naW5lQmFzZTo6c3RhcnRCbG9ja2luZygpOworKyAg ICAgICAgcmV0dXJuIHJlc3VsdCgpOworKyAgICB9CisrCisgICAgIC8vIFJ1bnMgdGhlIHVzZXIg YWxnb3JpdGhtIHVzaW5nIG11bHRpcGxlIHRocmVhZHMuCisgICAgIC8vIERvZXMgbm90IGJsb2Nr LCByZXR1cm5zIGEgZnV0dXJlLgorICAgICBRRnV0dXJlPFQ+IHN0YXJ0QXN5bmNocm9ub3VzbHko KQorQEAgLTIyMyw2ICsyMzMsMTMgQEAgY2xhc3MgVGhyZWFkRW5naW5lU3RhcnRlciA6IHB1Ymxp YyBUaHJlYWRFbmdpbmVTdGFydGVyQmFzZTxUPgorIHB1YmxpYzoKKyAgICAgVGhyZWFkRW5naW5l U3RhcnRlcihUeXBlZFRocmVhZEVuZ2luZSAqZW5nKQorICAgICAgICAgOiBCYXNlKGVuZykgeyB9 CisrCisrICAgIFQgc3RhcnRCbG9ja2luZygpCisrICAgIHsKKysgICAgICAgIFQgdCA9ICp0aGlz LT50aHJlYWRFbmdpbmUtPnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGRlbGV0ZSB0aGlzLT50 aHJlYWRFbmdpbmU7CisrICAgICAgICByZXR1cm4gdDsKKysgICAgfQorIH07CisgCisgLy8gRnVs bCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiB3aGVyZSBUIGlzIHZvaWQuCitAQCAtMjMyLDYgKzI0 OSwxMiBAQCBjbGFzcyBUaHJlYWRFbmdpbmVTdGFydGVyPHZvaWQ+IDogcHVibGljIFRocmVhZEVu Z2luZVN0YXJ0ZXJCYXNlPHZvaWQ+CisgcHVibGljOgorICAgICBUaHJlYWRFbmdpbmVTdGFydGVy KFRocmVhZEVuZ2luZTx2b2lkPiAqX3RocmVhZEVuZ2luZSkKKyAgICAgICAgIDogVGhyZWFkRW5n aW5lU3RhcnRlckJhc2U8dm9pZD4oX3RocmVhZEVuZ2luZSkge30KKysKKysgICAgdm9pZCBzdGFy dEJsb2NraW5nKCkKKysgICAgeworKyAgICAgICAgdGhpcy0+dGhyZWFkRW5naW5lLT5zdGFydEJs b2NraW5nKCk7CisrICAgICAgICBkZWxldGUgdGhpcy0+dGhyZWFkRW5naW5lOworKyAgICB9Cisg fTsKKyAKKyAvLyEgW3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS0xXQorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvY29yZWxpYi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwIGIvcXRiYXNl L3NyYy9jb3JlbGliL2FuaW1hdGlvbi9xdmFyaWFudGFuaW1hdGlvbi5jcHAKK2luZGV4IDk4YjAy ZjAyMDIuLmVhYzE1MjQxMDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0 aW9uL3F2YXJpYW50YW5pbWF0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2FuaW1h dGlvbi9xdmFyaWFudGFuaW1hdGlvbi5jcHAKK0BAIC0yNzYsNyArMjc2LDkgQEAgdm9pZCBRVmFy aWFudEFuaW1hdGlvblByaXZhdGU6OnNldEN1cnJlbnRWYWx1ZUZvclByb2dyZXNzKGNvbnN0IHFy ZWFsIHByb2dyZXNzKQorIAorICAgICBjb25zdCBxcmVhbCBzdGFydFByb2dyZXNzID0gY3VycmVu dEludGVydmFsLnN0YXJ0LmZpcnN0OworICAgICBjb25zdCBxcmVhbCBlbmRQcm9ncmVzcyA9IGN1 cnJlbnRJbnRlcnZhbC5lbmQuZmlyc3Q7CistICAgIGNvbnN0IHFyZWFsIGxvY2FsUHJvZ3Jlc3Mg PSAocHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNzKSAvIChlbmRQcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jl c3MpOworKyAgICBjb25zdCBxcmVhbCBsb2NhbFByb2dyZXNzID0KKysgICAgICAgICAgICBxSXNO dWxsKHByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcykgPyAwLjAgLy8gYXZvaWQgMC8wIGJlbG93Cisr ICAgICAgICAgICAgLyogZWxzZSAqLyAgICAgICAgICAgICAgICAgICAgICAgIDogKHByb2dyZXNz IC0gc3RhcnRQcm9ncmVzcykgLyAoZW5kUHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNzKTsKKyAKKyAg ICAgUVZhcmlhbnQgcmV0ID0gcS0+aW50ZXJwb2xhdGVkKGN1cnJlbnRJbnRlcnZhbC5zdGFydC5z ZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50SW50ZXJ2 YWwuZW5kLnNlY29uZCwKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3Fu YW1lc3BhY2UuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5oCitpbmRl eCBhZDQxNTBiMzE3Li5iZjE5YjE2MjdiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGli L2dsb2JhbC9xbmFtZXNwYWNlLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5h bWVzcGFjZS5oCitAQCAtMTg2NCw3ICsxODY0LDcgQEAgcHVibGljOgorICAgICBRVF9RX0VOVU0o VGltZXJUeXBlKQorICAgICBRVF9RX0VOVU0oU2Nyb2xsUGhhc2UpCisgICAgIFFUX1FfRU5VTShN b3VzZUV2ZW50U291cmNlKQorLSAgICBRVF9RX0ZMQUcoTW91c2VFdmVudEZsYWcpCisrICAgIFFU X1FfRkxBRyhNb3VzZUV2ZW50RmxhZ3MpCisgICAgIFFUX1FfRU5VTShDaGVja3N1bVR5cGUpCisg ICAgIFFUX1FfRU5VTShIaWdoRHBpU2NhbGVGYWN0b3JSb3VuZGluZ1BvbGljeSkKKyAgICAgUVRf UV9FTlVNKFRhYkZvY3VzQmVoYXZpb3IpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGli L2dsb2JhbC9xcmFuZG9tLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5j cHAKK2luZGV4IDEwNjcyYzFmOTIuLjI1Zjg3YzdlNmEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvZ2xvYmFsL3FyYW5kb20uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xv YmFsL3FyYW5kb20uY3BwCitAQCAtMzgzLDcgKzM4Myw2IEBAIHN0cnVjdCBRUmFuZG9tR2VuZXJh dG9yOjpTeXN0ZW1BbmRHbG9iYWxHZW5lcmF0b3JzCisgCisgICAgICAgICBjb25zdGV4cHIgU3lz dGVtQW5kR2xvYmFsR2VuZXJhdG9ycyBnID0ge307CisgICAgICAgICBRX1VOVVNFRChnKTsKKy0g ICAgICAgIFFfU1RBVElDX0FTU0VSVChzdGQ6OmlzX2xpdGVyYWxfdHlwZTxTeXN0ZW1BbmRHbG9i YWxHZW5lcmF0b3JzPjo6dmFsdWUpOworICNlbmRpZgorICAgICB9CisgCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9jb3JlbGliL2lvL3FidWZmZXIuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lv L3FidWZmZXIuY3BwCitpbmRleCA1OTVmY2QyNzI0Li4wMzJjMGRkZDRiIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9jb3JlbGliL2lvL3FidWZmZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvaW8vcWJ1ZmZlci5jcHAKK0BAIC00MSw2ICs0MSw4IEBACisgI2luY2x1ZGUgPFF0Q29yZS9x bWV0YW9iamVjdC5oPgorICNpbmNsdWRlICJwcml2YXRlL3Fpb2RldmljZV9wLmgiCisgCisrI2lu Y2x1ZGUgPGxpbWl0cz4KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyAvKiogUUJ1ZmZlclBy aXZhdGUgKiovCitAQCAtMzY2LDcgKzM2OCw5IEBAIHFpbnQ2NCBRQnVmZmVyOjpzaXplKCkgY29u c3QKKyBib29sIFFCdWZmZXI6OnNlZWsocWludDY0IHBvcykKKyB7CisgICAgIFFfRChRQnVmZmVy KTsKKy0gICAgaWYgKHBvcyA+IGQtPmJ1Zi0+c2l6ZSgpICYmIGlzV3JpdGFibGUoKSkgeworKyAg ICBjb25zdCBhdXRvIG9sZEJ1ZlNpemUgPSBkLT5idWYtPnNpemUoKTsKKysgICAgY29uc3RleHBy IHFpbnQ2NCBNYXhTZWVrUG9zID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8ZGVjbHR5cGUob2xkQnVm U2l6ZSk+OjptYXgpKCk7CisrICAgIGlmIChwb3MgPD0gTWF4U2Vla1BvcyAmJiBwb3MgPiBvbGRC dWZTaXplICYmIGlzV3JpdGFibGUoKSkgeworICAgICAgICAgaWYgKHNlZWsoZC0+YnVmLT5zaXpl KCkpKSB7CisgICAgICAgICAgICAgY29uc3QgcWludDY0IGdhcFNpemUgPSBwb3MgLSBkLT5idWYt PnNpemUoKTsKKyAgICAgICAgICAgICBpZiAod3JpdGUoUUJ5dGVBcnJheShnYXBTaXplLCAwKSkg IT0gZ2FwU2l6ZSkgeworQEAgLTM3Nyw3ICszODEsNyBAQCBib29sIFFCdWZmZXI6OnNlZWsocWlu dDY0IHBvcykKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICB9CisgICAgIH0g ZWxzZSBpZiAocG9zID4gZC0+YnVmLT5zaXplKCkgfHwgcG9zIDwgMCkgeworLSAgICAgICAgcVdh cm5pbmcoIlFCdWZmZXI6OnNlZWs6IEludmFsaWQgcG9zOiAlZCIsIGludChwb3MpKTsKKysgICAg ICAgIHFXYXJuaW5nKCJRQnVmZmVyOjpzZWVrOiBJbnZhbGlkIHBvczogJWxsZCIsIHBvcyk7Cisg ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KKyAgICAgcmV0dXJuIFFJT0RldmljZTo6c2Vl ayhwb3MpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVu Z2luZV93aW4uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtZW5naW5lX3dp bi5jcHAKK2luZGV4IDgxZDNhNzE5ODYuLmM4NmVkMWY5YjAgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW1lbmdpbmVfd2luLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAKK0BAIC02NjQsMTQgKzY2NCwx NCBAQCBRRmlsZVN5c3RlbUVudHJ5IFFGaWxlU3lzdGVtRW5naW5lOjphYnNvbHV0ZU5hbWUoY29u c3QgUUZpbGVTeXN0ZW1FbnRyeSAmZW50cnkpCisgICAgIHJldHVybiBRRmlsZVN5c3RlbUVudHJ5 KHJldCwgUUZpbGVTeXN0ZW1FbnRyeTo6RnJvbUludGVybmFsUGF0aCgpKTsKKyB9CisgCistI2lm IGRlZmluZWQoUV9DQ19NSU5HVykgJiYgV0lOVkVSIDwgMHgwNjAyIC8vICBXaW5kb3dzIDggb253 YXJkcworKyNpZiBkZWZpbmVkKFFfQ0NfTUlOR1cpICYmIFdJTlZFUiA8IDB4MDYwMiAmJiBfV0lO MzJfV0lOTlQgPCBfV0lOMzJfV0lOTlRfV0lOOCAvLyAgV2luZG93cyA4IG9ud2FyZHMKKyAKKyB0 eXBlZGVmIHN0cnVjdCBfRklMRV9JRF9JTkZPIHsKKyAgICAgVUxPTkdMT05HIFZvbHVtZVNlcmlh bE51bWJlcjsKKyAgICAgRklMRV9JRF8xMjggRmlsZUlkOworIH0gRklMRV9JRF9JTkZPLCAqUEZJ TEVfSURfSU5GTzsKKyAKKy0jZW5kaWYgLy8gaWYgZGVmaW5lZCAoUV9DQ19NSU5HVykgJiYgV0lO VkVSIDwgMHgwNjAyCisrI2VuZGlmIC8vIGlmIGRlZmluZWQoUV9DQ19NSU5HVykgJiYgV0lOVkVS IDwgMHgwNjAyICYmIF9XSU4zMl9XSU5OVCA8IF9XSU4zMl9XSU5OVF9XSU44CisgCisgLy8gRmls ZSBJRCBmb3IgV2luZG93cyB1cCB0byB2ZXJzaW9uIDcgYW5kIEZBVDMyIGRyaXZlcworIHN0YXRp YyBpbmxpbmUgUUJ5dGVBcnJheSBmaWxlSWQoSEFORExFIGhhbmRsZSkKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnkuY3BwIGIvcXRi YXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90aWZ5LmNwcAoraW5kZXgg OTRkOWQwNmJjYi4uMjdlMGIxM2IwYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9p by9xZmlsZXN5c3RlbXdhdGNoZXJfaW5vdGlmeS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxp Yi9pby9xZmlsZXN5c3RlbXdhdGNoZXJfaW5vdGlmeS5jcHAKK0BAIC0zNjYsNyArMzY2LDkgQEAg dm9pZCBRSW5vdGlmeUZpbGVTeXN0ZW1XYXRjaGVyRW5naW5lOjpyZWFkRnJvbUlub3RpZnkoKQor ICAgICAvLyBxRGVidWcoIlFJbm90aWZ5RmlsZVN5c3RlbVdhdGNoZXJFbmdpbmU6OnJlYWRGcm9t SW5vdGlmeSIpOworIAorICAgICBpbnQgYnVmZlNpemUgPSAwOworLSAgICBpb2N0bChpbm90aWZ5 RmQsIEZJT05SRUFELCAoY2hhciAqKSAmYnVmZlNpemUpOworKyAgICBpZiAoaW9jdGwoaW5vdGlm eUZkLCBGSU9OUkVBRCwgKGNoYXIgKikgJmJ1ZmZTaXplKSA9PSAtMSB8fCBidWZmU2l6ZSA9PSAw KQorKyAgICAgICAgcmV0dXJuOworKworICAgICBRVmFyTGVuZ3RoQXJyYXk8Y2hhciwgNDA5Nj4g YnVmZmVyKGJ1ZmZTaXplKTsKKyAgICAgYnVmZlNpemUgPSByZWFkKGlub3RpZnlGZCwgYnVmZmVy LmRhdGEoKSwgYnVmZlNpemUpOworICAgICBjaGFyICphdCA9IGJ1ZmZlci5kYXRhKCk7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4uY3BwIGIvcXRiYXNl L3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4uY3BwCitpbmRleCAyNzdmOGQ0MjMwLi4zOGVj ZWY1NTUwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4u Y3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWxvY2tmaWxlX3dpbi5jcHAKK0BAIC00 OCw2ICs0OCw4IEBACisgI2luY2x1ZGUgIlF0Q29yZS9xZGVidWcuaCIKKyAjaW5jbHVkZSAiUXRD b3JlL3F0aHJlYWQuaCIKKyAKKysjaW5jbHVkZSAicHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmgi CisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgc3RhdGljIGlubGluZSBib29sIGZpbGVFeGlz dHMoY29uc3Qgd2NoYXJfdCAqZmlsZU5hbWUpCitAQCAtMTUwLDcgKzE1Miw3IEBAIFFTdHJpbmcg UUxvY2tGaWxlUHJpdmF0ZTo6cHJvY2Vzc05hbWVCeVBpZChxaW50NjQgcGlkKQorICNpZiAhZGVm aW5lZChRX09TX1dJTlJUKQorICAgICB0eXBlZGVmIERXT1JEIChXSU5BUEkgKkdldE1vZHVsZUZp bGVOYW1lRXhGdW5jKShIQU5ETEUsIEhNT0RVTEUsIExQVFNUUiwgRFdPUkQpOworIAorLSAgICBI TU9EVUxFIGhQc2FwaSA9IExvYWRMaWJyYXJ5QSgicHNhcGkiKTsKKysgICAgSE1PRFVMRSBoUHNh cGkgPSBRU3lzdGVtTGlicmFyeTo6bG9hZChMInBzYXBpIik7CisgICAgIGlmICghaFBzYXBpKQor ICAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICAgR2V0TW9kdWxlRmlsZU5hbWVFeEZ1bmMg cUdldE1vZHVsZUZpbGVOYW1lRXggPSByZWludGVycHJldF9jYXN0PEdldE1vZHVsZUZpbGVOYW1l RXhGdW5jPigKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5p eC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5peC5jcHAKK2luZGV4IDUw MzkwZTU3ZjUuLjE1YzhmMzA3NDUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8v cXByb2Nlc3NfdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xcHJvY2Vzc191 bml4LmNwcAorQEAgLTEsNyArMSw3IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorICoq IENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCistKiogQ29weXJpZ2h0IChD KSAyMDE2IEludGVsIENvcnBvcmF0aW9uLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBJbnRlbCBD b3Jwb3JhdGlvbi4KKyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisg KioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRDb3JlIG1vZHVsZSBvZiB0aGUgUXQg VG9vbGtpdC4KK0BAIC00MjIsMTQgKzQyMiwxNSBAQCB2b2lkIFFQcm9jZXNzUHJpdmF0ZTo6c3Rh cnRQcm9jZXNzKCkKKyAgICAgLy8gQWRkIHRoZSBwcm9ncmFtIG5hbWUgdG8gdGhlIGFyZ3VtZW50 IGxpc3QuCisgICAgIGFyZ3ZbMF0gPSBudWxscHRyOworICAgICBpZiAoIXByb2dyYW0uY29udGFp bnMoUUxhdGluMUNoYXIoJy8nKSkpIHsKKysgICAgICAgIC8vIGZpbmRFeGVjdXRhYmxlKCkgcmV0 dXJucyBpdHMgYXJndW1lbnQgaWYgaXQncyBhbiBhYnNvbHV0ZSBwYXRoLAorKyAgICAgICAgLy8g b3RoZXJ3aXNlIGl0IHNlYXJjaGVzICRQQVRIOyByZXR1cm5zIGVtcHR5IGlmIG5vdCBmb3VuZCAo d2UgaGFuZGxlCisrICAgICAgICAvLyB0aGF0IGNhc2UgbXVjaCBsYXRlcikKKyAgICAgICAgIGNv bnN0IFFTdHJpbmcgJmV4ZUZpbGVQYXRoID0gUVN0YW5kYXJkUGF0aHM6OmZpbmRFeGVjdXRhYmxl KHByb2dyYW0pOworLSAgICAgICAgaWYgKCFleGVGaWxlUGF0aC5pc0VtcHR5KCkpIHsKKy0gICAg ICAgICAgICBjb25zdCBRQnl0ZUFycmF5ICZ0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShleGVGaWxl UGF0aCk7CistICAgICAgICAgICAgYXJndlswXSA9IDo6c3RyZHVwKHRtcC5jb25zdERhdGEoKSk7 CistICAgICAgICB9CistICAgIH0KKy0gICAgaWYgKCFhcmd2WzBdKQorKyAgICAgICAgY29uc3Qg UUJ5dGVBcnJheSAmdG1wID0gUUZpbGU6OmVuY29kZU5hbWUoZXhlRmlsZVBhdGgpOworKyAgICAg ICAgYXJndlswXSA9IDo6c3RyZHVwKHRtcC5jb25zdERhdGEoKSk7CisrICAgIH0gZWxzZSB7Cisg ICAgICAgICBhcmd2WzBdID0gOjpzdHJkdXAoZW5jb2RlZFByb2dyYW1OYW1lLmNvbnN0RGF0YSgp KTsKKysgICAgfQorIAorICAgICAvLyBBZGQgZXZlcnkgYXJndW1lbnQgdG8gdGhlIGxpc3QKKyAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd1bWVudHMuY291bnQoKTsgKytpKQorQEAgLTk4Mywx NSArOTg0LDE2IEBAIGJvb2wgUVByb2Nlc3NQcml2YXRlOjpzdGFydERldGFjaGVkKHFpbnQ2NCAq cGlkKQorICAgICAgICAgICAgICAgICBlbnZwID0gX3FfZHVwRW52aXJvbm1lbnQoZW52aXJvbm1l bnQuZC5jb25zdERhdGEoKS0+dmFycywgJmVudmMpOworICAgICAgICAgICAgIH0KKyAKKy0gICAg ICAgICAgICBRQnl0ZUFycmF5IHRtcDsKKyAgICAgICAgICAgICBpZiAoIXByb2dyYW0uY29udGFp bnMoUUxhdGluMUNoYXIoJy8nKSkpIHsKKysgICAgICAgICAgICAgICAgLy8gZmluZEV4ZWN1dGFi bGUoKSByZXR1cm5zIGl0cyBhcmd1bWVudCBpZiBpdCdzIGFuIGFic29sdXRlIHBhdGgsCisrICAg ICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBpdCBzZWFyY2hlcyAkUEFUSDsgcmV0dXJucyBlbXB0 eSBpZiBub3QgZm91bmQgKHdlIGhhbmRsZQorKyAgICAgICAgICAgICAgICAvLyB0aGF0IGNhc2Ug bXVjaCBsYXRlcikKKyAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmZXhlRmlsZVBhdGgg PSBRU3RhbmRhcmRQYXRoczo6ZmluZEV4ZWN1dGFibGUocHJvZ3JhbSk7CistICAgICAgICAgICAg ICAgIGlmICghZXhlRmlsZVBhdGguaXNFbXB0eSgpKQorLSAgICAgICAgICAgICAgICAgICAgdG1w ID0gUUZpbGU6OmVuY29kZU5hbWUoZXhlRmlsZVBhdGgpOworKyAgICAgICAgICAgICAgICBjb25z dCBRQnl0ZUFycmF5ICZ0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShleGVGaWxlUGF0aCk7CisrICAg ICAgICAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cCh0bXAuY29uc3REYXRhKCkpOworKyAgICAg ICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cChRRmls ZTo6ZW5jb2RlTmFtZShwcm9ncmFtKSk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGlm ICh0bXAuaXNFbXB0eSgpKQorLSAgICAgICAgICAgICAgICB0bXAgPSBRRmlsZTo6ZW5jb2RlTmFt ZShwcm9ncmFtKTsKKy0gICAgICAgICAgICBhcmd2WzBdID0gdG1wLmRhdGEoKTsKKyAKKyAgICAg ICAgICAgICBpZiAoZW52cCkKKyAgICAgICAgICAgICAgICAgcXRfc2FmZV9leGVjdmUoYXJndlsw XSwgYXJndiwgZW52cCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2Rl bHMvcWFic3RyYWN0aXRlbW1vZGVsLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxz L3FhYnN0cmFjdGl0ZW1tb2RlbC5jcHAKK2luZGV4IDNhNzljNTAyYWYuLjk5N2E2MzRlNzYgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJhY3RpdGVtbW9k ZWwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJhY3RpdGVt bW9kZWwuY3BwCitAQCAtMzE5Niw5ICszMTk2LDggQEAgYm9vbCBRQWJzdHJhY3RJdGVtTW9kZWw6 OmJlZ2luTW92ZUNvbHVtbnMoY29uc3QgUU1vZGVsSW5kZXggJnNvdXJjZVBhcmVudCwgaW50IHMK KyAgICAgZGVzdGluYXRpb25DaGFuZ2UubmVlZHNBZGp1c3QgPSBkZXN0aW5hdGlvblBhcmVudC5p c1ZhbGlkKCkgJiYgZGVzdGluYXRpb25QYXJlbnQucm93KCkgPj0gc291cmNlTGFzdCAmJiBkZXN0 aW5hdGlvblBhcmVudC5wYXJlbnQoKSA9PSBzb3VyY2VQYXJlbnQ7CisgICAgIGQtPmNoYW5nZXMu cHVzaChkZXN0aW5hdGlvbkNoYW5nZSk7CisgCistICAgIGQtPml0ZW1zQWJvdXRUb0JlTW92ZWQo c291cmNlUGFyZW50LCBzb3VyY2VGaXJzdCwgc291cmNlTGFzdCwgZGVzdGluYXRpb25QYXJlbnQs IGRlc3RpbmF0aW9uQ2hpbGQsIFF0OjpIb3Jpem9udGFsKTsKKy0KKyAgICAgZW1pdCBjb2x1bW5z QWJvdXRUb0JlTW92ZWQoc291cmNlUGFyZW50LCBzb3VyY2VGaXJzdCwgc291cmNlTGFzdCwgZGVz dGluYXRpb25QYXJlbnQsIGRlc3RpbmF0aW9uQ2hpbGQsIFFQcml2YXRlU2lnbmFsKCkpOworKyAg ICBkLT5pdGVtc0Fib3V0VG9CZU1vdmVkKHNvdXJjZVBhcmVudCwgc291cmNlRmlyc3QsIHNvdXJj ZUxhc3QsIGRlc3RpbmF0aW9uUGFyZW50LCBkZXN0aW5hdGlvbkNoaWxkLCBRdDo6SG9yaXpvbnRh bCk7CisgICAgIHJldHVybiB0cnVlOworIH0KKyAKK0BAIC0zMjMxLDcgKzMyMzAsNiBAQCB2b2lk IFFBYnN0cmFjdEl0ZW1Nb2RlbDo6ZW5kTW92ZUNvbHVtbnMoKQorICAgICAgIGFkanVzdGVkU291 cmNlID0gY3JlYXRlSW5kZXgoYWRqdXN0ZWRTb3VyY2Uucm93KCksIGFkanVzdGVkU291cmNlLmNv bHVtbigpICsgbnVtTW92ZWQsIGFkanVzdGVkU291cmNlLmludGVybmFsUG9pbnRlcigpKTsKKyAK KyAgICAgZC0+aXRlbXNNb3ZlZChhZGp1c3RlZFNvdXJjZSwgcmVtb3ZlQ2hhbmdlLmZpcnN0LCBy ZW1vdmVDaGFuZ2UubGFzdCwgYWRqdXN0ZWREZXN0aW5hdGlvbiwgaW5zZXJ0Q2hhbmdlLmZpcnN0 LCBRdDo6SG9yaXpvbnRhbCk7CistCisgICAgIGVtaXQgY29sdW1uc01vdmVkKGFkanVzdGVkU291 cmNlLCByZW1vdmVDaGFuZ2UuZmlyc3QsIHJlbW92ZUNoYW5nZS5sYXN0LCBhZGp1c3RlZERlc3Rp bmF0aW9uLCBpbnNlcnRDaGFuZ2UuZmlyc3QsIFFQcml2YXRlU2lnbmFsKCkpOworIH0KKyAKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnByb3h5 bW9kZWwuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcXNvcnRmaWx0ZXJwcm94 eW1vZGVsLmNwcAoraW5kZXggZGM2Mzc5ZDlmYi4uYzVlMjg3ZWU4NCAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5jcHAKKysr KyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5j cHAKK0BAIC05MzksOCArOTM5LDkgQEAgdm9pZCBRU29ydEZpbHRlclByb3h5TW9kZWxQcml2YXRl OjppbnNlcnRfc291cmNlX2l0ZW1zKAorICAgICAgICAgICAgICAgICBxLT5iZWdpbkluc2VydENv bHVtbnMocHJveHlfcGFyZW50LCBwcm94eV9zdGFydCwgcHJveHlfZW5kKTsKKyAgICAgICAgIH0K KyAKKy0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc291cmNlX2l0ZW1zLnNpemUoKTsgKytp KQorLSAgICAgICAgICAgIHByb3h5X3RvX3NvdXJjZS5pbnNlcnQocHJveHlfc3RhcnQgKyBpLCBz b3VyY2VfaXRlbXMuYXQoaSkpOworKyAgICAgICAgLy8gVE9ETzogdXNlIHRoZSByYW5nZSBRTGlz dDo6aW5zZXJ0KCkgb3ZlcmxvYWQgb25jZSBpdCBpcyBpbXBsZW1lbnRlZCAoUVRCVUctNTg2MzMp LgorKyAgICAgICAgcHJveHlfdG9fc291cmNlLmluc2VydChwcm94eV9zdGFydCwgc291cmNlX2l0 ZW1zLnNpemUoKSwgMCk7CisrICAgICAgICBzdGQ6OmNvcHkoc291cmNlX2l0ZW1zLmNiZWdpbigp LCBzb3VyY2VfaXRlbXMuY2VuZCgpLCBwcm94eV90b19zb3VyY2UuYmVnaW4oKSArIHByb3h5X3N0 YXJ0KTsKKyAKKyAgICAgICAgIGJ1aWxkX3NvdXJjZV90b19wcm94eV9tYXBwaW5nKHByb3h5X3Rv X3NvdXJjZSwgc291cmNlX3RvX3Byb3h5KTsKKyAKK0BAIC0zMTIzLDggKzMxMjQsOSBAQCBib29s IFFTb3J0RmlsdGVyUHJveHlNb2RlbDo6ZmlsdGVyQWNjZXB0c1JvdyhpbnQgc291cmNlX3Jvdywg Y29uc3QgUU1vZGVsSW5kZXggJgorIAorICAgICBpZiAoZC0+ZmlsdGVyX2RhdGEuaXNFbXB0eSgp KQorICAgICAgICAgcmV0dXJuIHRydWU7CisrCisrICAgIGludCBjb2x1bW5fY291bnQgPSBkLT5t b2RlbC0+Y29sdW1uQ291bnQoc291cmNlX3BhcmVudCk7CisgICAgIGlmIChkLT5maWx0ZXJfY29s dW1uID09IC0xKSB7CistICAgICAgICBpbnQgY29sdW1uX2NvdW50ID0gZC0+bW9kZWwtPmNvbHVt bkNvdW50KHNvdXJjZV9wYXJlbnQpOworICAgICAgICAgZm9yIChpbnQgY29sdW1uID0gMDsgY29s dW1uIDwgY29sdW1uX2NvdW50OyArK2NvbHVtbikgeworICAgICAgICAgICAgIFFNb2RlbEluZGV4 IHNvdXJjZV9pbmRleCA9IGQtPm1vZGVsLT5pbmRleChzb3VyY2Vfcm93LCBjb2x1bW4sIHNvdXJj ZV9wYXJlbnQpOworICAgICAgICAgICAgIFFTdHJpbmcga2V5ID0gZC0+bW9kZWwtPmRhdGEoc291 cmNlX2luZGV4LCBkLT5maWx0ZXJfcm9sZSkudG9TdHJpbmcoKTsKK0BAIC0zMTMzLDkgKzMxMzUs MTAgQEAgYm9vbCBRU29ydEZpbHRlclByb3h5TW9kZWw6OmZpbHRlckFjY2VwdHNSb3coaW50IHNv dXJjZV9yb3csIGNvbnN0IFFNb2RlbEluZGV4ICYKKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVy biBmYWxzZTsKKyAgICAgfQorLSAgICBRTW9kZWxJbmRleCBzb3VyY2VfaW5kZXggPSBkLT5tb2Rl bC0+aW5kZXgoc291cmNlX3JvdywgZC0+ZmlsdGVyX2NvbHVtbiwgc291cmNlX3BhcmVudCk7Cist ICAgIGlmICghc291cmNlX2luZGV4LmlzVmFsaWQoKSkgLy8gdGhlIGNvbHVtbiBtYXkgbm90IGV4 aXN0CisrCisrICAgIGlmIChkLT5maWx0ZXJfY29sdW1uID49IGNvbHVtbl9jb3VudCkgLy8gdGhl IGNvbHVtbiBtYXkgbm90IGV4aXN0CisgICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgUU1vZGVs SW5kZXggc291cmNlX2luZGV4ID0gZC0+bW9kZWwtPmluZGV4KHNvdXJjZV9yb3csIGQtPmZpbHRl cl9jb2x1bW4sIHNvdXJjZV9wYXJlbnQpOworICAgICBRU3RyaW5nIGtleSA9IGQtPm1vZGVsLT5k YXRhKHNvdXJjZV9pbmRleCwgZC0+ZmlsdGVyX3JvbGUpLnRvU3RyaW5nKCk7CisgICAgIHJldHVy biBkLT5maWx0ZXJfZGF0YS5oYXNNYXRjaChrZXkpOworIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2NvcmVsaWIva2VybmVsL3Fjb3JlYXBwbGljYXRpb24uY3BwIGIvcXRiYXNlL3NyYy9jb3Jl bGliL2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcAoraW5kZXggY2EyODY0ZGY4My4uMTMyYjJl YWU1MiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNh dGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlv bi5jcHAKK0BAIC0xMTU3LDcgKzExNTcsNyBAQCBzdGF0aWMgYm9vbCBkb05vdGlmeShRT2JqZWN0 ICpyZWNlaXZlciwgUUV2ZW50ICpldmVudCkKKyBib29sIFFDb3JlQXBwbGljYXRpb25Qcml2YXRl OjpzZW5kVGhyb3VnaEFwcGxpY2F0aW9uRXZlbnRGaWx0ZXJzKFFPYmplY3QgKnJlY2VpdmVyLCBR RXZlbnQgKmV2ZW50KQorIHsKKyAgICAgLy8gV2UgY2FuJ3QgYWNjZXNzIHRoZSBhcHBsaWNhdGlv biBldmVudCBmaWx0ZXJzIG91dHNpZGUgb2YgdGhlIG1haW4gdGhyZWFkIChyYWNlIGNvbmRpdGlv bnMpCistICAgIFFfQVNTRVJUKHJlY2VpdmVyLT5kX2Z1bmMoKS0+dGhyZWFkRGF0YS5sb2FkUmVs YXhlZCgpLT50aHJlYWQubG9hZEFjcXVpcmUoKSA9PSBtYWluVGhyZWFkKCkpOworKyAgICBRX0FT U0VSVChyZWNlaXZlci0+ZF9mdW5jKCktPnRocmVhZERhdGEubG9hZEFjcXVpcmUoKS0+dGhyZWFk LmxvYWRSZWxheGVkKCkgPT0gbWFpblRocmVhZCgpKTsKKyAKKyAgICAgaWYgKGV4dHJhRGF0YSkg eworICAgICAgICAgLy8gYXBwbGljYXRpb24gZXZlbnQgZmlsdGVycyBhcmUgb25seSBjYWxsZWQg Zm9yIG9iamVjdHMgaW4gdGhlIEdVSSB0aHJlYWQKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2Nv cmVsaWIva2VybmVsL3FvYmplY3QuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2Jq ZWN0LmNwcAoraW5kZXggMWViNzkxMzhkOS4uMzZjZDc4MGVlMSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxp Yi9rZXJuZWwvcW9iamVjdC5jcHAKK0BAIC0xMDEwLDcgKzEwMTAsNyBAQCBRT2JqZWN0Ojp+UU9i amVjdCgpCisgICAgICAgICBlbWl0IGRlc3Ryb3llZCh0aGlzKTsKKyAgICAgfQorIAorLSAgICBp ZiAoZC0+ZGVjbGFyYXRpdmVEYXRhKSB7CisrICAgIGlmICghZC0+aXNEZWxldGluZ0NoaWxkcmVu ICYmIGQtPmRlY2xhcmF0aXZlRGF0YSkgeworICAgICAgICAgaWYgKHN0YXRpY19jYXN0PFFBYnN0 cmFjdERlY2xhcmF0aXZlRGF0YUltcGwqPihkLT5kZWNsYXJhdGl2ZURhdGEpLT5vd25lZEJ5UW1s MSkgeworICAgICAgICAgICAgIGlmIChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmRlc3Ryb3ll ZF9xbWwxKQorICAgICAgICAgICAgICAgICBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmRlc3Ry b3llZF9xbWwxKGQtPmRlY2xhcmF0aXZlRGF0YSwgdGhpcyk7CitAQCAtMTU4MCw3ICsxNTgwLDcg QEAgdm9pZCBRT2JqZWN0Ojptb3ZlVG9UaHJlYWQoUVRocmVhZCAqdGFyZ2V0VGhyZWFkKQorIAor ICAgICBRVGhyZWFkRGF0YSAqY3VycmVudERhdGEgPSBRVGhyZWFkRGF0YTo6Y3VycmVudCgpOwor ICAgICBRVGhyZWFkRGF0YSAqdGFyZ2V0RGF0YSA9IHRhcmdldFRocmVhZCA/IFFUaHJlYWREYXRh OjpnZXQyKHRhcmdldFRocmVhZCkgOiBudWxscHRyOworLSAgICBRVGhyZWFkRGF0YSAqdGhpc1Ro cmVhZERhdGEgPSBkLT50aHJlYWREYXRhLmxvYWRSZWxheGVkKCk7CisrICAgIFFUaHJlYWREYXRh ICp0aGlzVGhyZWFkRGF0YSA9IGQtPnRocmVhZERhdGEubG9hZEFjcXVpcmUoKTsKKyAgICAgaWYg KCF0aGlzVGhyZWFkRGF0YS0+dGhyZWFkLmxvYWRBY3F1aXJlKCkgJiYgY3VycmVudERhdGEgPT0g dGFyZ2V0RGF0YSkgeworICAgICAgICAgLy8gb25lIGV4Y2VwdGlvbiB0byB0aGUgcnVsZTogd2Ug YWxsb3cgbW92aW5nIG9iamVjdHMgd2l0aCBubyB0aHJlYWQgYWZmaW5pdHkgdG8gdGhlIGN1cnJl bnQgdGhyZWFkCisgICAgICAgICBjdXJyZW50RGF0YSA9IGQtPnRocmVhZERhdGE7CitAQCAtMjYy MCw3ICsyNjIwLDcgQEAgaW50IFFPYmplY3Q6OnJlY2VpdmVycyhjb25zdCBjaGFyICpzaWduYWwp IGNvbnN0CisgICAgICAgICBpZiAoIWQtPmlzU2lnbmFsQ29ubmVjdGVkKHNpZ25hbF9pbmRleCkp CisgICAgICAgICAgICAgcmV0dXJuIHJlY2VpdmVyczsKKyAKKy0gICAgICAgIGlmIChkLT5kZWNs YXJhdGl2ZURhdGEgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMpIHsKKysg ICAgICAgIGlmICghZC0+aXNEZWxldGluZ0NoaWxkcmVuICYmIGQtPmRlY2xhcmF0aXZlRGF0YSAm JiBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycykgeworICAgICAgICAgICAgIHJl Y2VpdmVycyArPSBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycyhkLT5kZWNsYXJh dGl2ZURhdGEsIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbF9pbmRleCk7CisgICAgICAgICB9CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaCBiL3F0YmFzZS9zcmMv Y29yZWxpYi9rZXJuZWwvcW9iamVjdF9wLmgKK2luZGV4IDBiODI3YTUyY2EuLjEzZmZiODg5OTkg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oCisrKysg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oCitAQCAtNDQ0LDcgKzQ0NCw3 IEBAIGlubGluZSB2b2lkIFFPYmplY3RQcml2YXRlOjpjaGVja0ZvckluY29tcGF0aWJsZUxpYnJh cnlWZXJzaW9uKGludCB2ZXJzaW9uKSBjb25zCisgCisgaW5saW5lIGJvb2wgUU9iamVjdFByaXZh dGU6OmlzRGVjbGFyYXRpdmVTaWduYWxDb25uZWN0ZWQodWludCBzaWduYWxfaW5kZXgpIGNvbnN0 CisgeworLSAgICByZXR1cm4gZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZl RGF0YTo6aXNTaWduYWxDb25uZWN0ZWQKKysgICAgcmV0dXJuICFpc0RlbGV0aW5nQ2hpbGRyZW4g JiYgZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6aXNTaWduYWxD b25uZWN0ZWQKKyAgICAgICAgICAgICAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmlzU2ln bmFsQ29ubmVjdGVkKGRlY2xhcmF0aXZlRGF0YSwgcV9mdW5jKCksIHNpZ25hbF9pbmRleCk7Cisg fQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRyYW5zbGF0b3Iu Y3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xdHJhbnNsYXRvci5jcHAKK2luZGV4IDI4 MTJmZmI3ZWEuLmJjMDE3N2M1ZWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2Vy bmVsL3F0cmFuc2xhdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xdHJh bnNsYXRvci5jcHAKK0BAIC05MDIsNyArOTAyLDcgQEAgc3RhdGljIFFTdHJpbmcgZ2V0TWVzc2Fn ZShjb25zdCB1Y2hhciAqbSwgY29uc3QgdWNoYXIgKmVuZCwgY29uc3QgY2hhciAqY29udGV4dCwK KyAgICAgICAgICAgICBnb3RvIGVuZDsKKyAgICAgICAgIGNhc2UgVGFnX1RyYW5zbGF0aW9uOiB7 CisgICAgICAgICAgICAgaW50IGxlbiA9IHJlYWQzMihtKTsKKy0gICAgICAgICAgICBpZiAobGVu ICUgMSkKKysgICAgICAgICAgICBpZiAobGVuICYgMSkKKyAgICAgICAgICAgICAgICAgcmV0dXJu IFFTdHJpbmcoKTsKKyAgICAgICAgICAgICBtICs9IDQ7CisgICAgICAgICAgICAgaWYgKCFudW1l cnVzLS0pIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1l ZGF0YWJhc2UuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNl LmNwcAoraW5kZXggOWRlMjJjZWYzMy4uZmY4NjhhMzI2OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Y29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS5jcHAKK0BAIC0zODksMjAgKzM4OSwyMyBA QCBRTWltZVR5cGUgUU1pbWVEYXRhYmFzZVByaXZhdGU6Om1pbWVUeXBlRm9yRmlsZU5hbWVBbmRE YXRhKGNvbnN0IFFTdHJpbmcgJmZpbGVOYQorICAgICAgICAgLy8gRGlzYW1iaWd1YXRlIGNvbmZs aWN0aW5nIGV4dGVuc2lvbnMgKGlmIG1hZ2ljIG1hdGNoaW5nIGZvdW5kIHNvbWV0aGluZykKKyAg ICAgICAgIGlmIChjYW5kaWRhdGVCeURhdGEuaXNWYWxpZCgpICYmIG1hZ2ljQWNjdXJhY3kgPiAw KSB7CisgICAgICAgICAgICAgY29uc3QgUVN0cmluZyBzbmlmZmVkTWltZSA9IGNhbmRpZGF0ZUJ5 RGF0YS5uYW1lKCk7CistICAgICAgICAgICAgLy8gSWYgdGhlIHNuaWZmZWRNaW1lIG1hdGNoZXMg YSBnbG9iIG1hdGNoLCB1c2UgaXQKKysgICAgICAgICAgICAvLyBJZiB0aGUgc25pZmZlZE1pbWUg bWF0Y2hlcyBhIGhpZ2hlc3Qtd2VpZ2h0IGdsb2IgbWF0Y2gsIHVzZSBpdAorICAgICAgICAgICAg IGlmIChjYW5kaWRhdGVzQnlOYW1lLm1fbWF0Y2hpbmdNaW1lVHlwZXMuY29udGFpbnMoc25pZmZl ZE1pbWUpKSB7CisgICAgICAgICAgICAgICAgICphY2N1cmFjeVB0ciA9IDEwMDsKKyAgICAgICAg ICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUJ5RGF0YTsKKyAgICAgICAgICAgICB9CistICAgICAg ICAgICAgZm9yIChjb25zdCBRU3RyaW5nICZtIDogcUFzQ29uc3QoY2FuZGlkYXRlc0J5TmFtZS5t X21hdGNoaW5nTWltZVR5cGVzKSkgeworKyAgICAgICAgICAgIGZvciAoY29uc3QgUVN0cmluZyAm bSA6IHFBc0NvbnN0KGNhbmRpZGF0ZXNCeU5hbWUubV9hbGxNYXRjaGluZ01pbWVUeXBlcykpIHsK KyAgICAgICAgICAgICAgICAgaWYgKGluaGVyaXRzKG0sIHNuaWZmZWRNaW1lKSkgeworICAgICAg ICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBtYWdpYyArIHBhdHRlcm4gcG9pbnRpbmcgdG8gdGhp cywgc28gaXQncyBhIHByZXR0eSBnb29kIG1hdGNoCisgICAgICAgICAgICAgICAgICAgICAqYWNj dXJhY3lQdHIgPSAxMDA7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWltZVR5cGVGb3JO YW1lKG0pOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAg ICphY2N1cmFjeVB0ciA9IG1hZ2ljQWNjdXJhY3k7CistICAgICAgICAgICAgcmV0dXJuIGNhbmRp ZGF0ZUJ5RGF0YTsKKysgICAgICAgICAgICBpZiAoY2FuZGlkYXRlc0J5TmFtZS5tX2FsbE1hdGNo aW5nTWltZVR5cGVzLmlzRW1wdHkoKSkgeworKyAgICAgICAgICAgICAgICAvLyBObyBnbG9iLCB1 c2UgbWFnaWMKKysgICAgICAgICAgICAgICAgKmFjY3VyYWN5UHRyID0gbWFnaWNBY2N1cmFjeTsK KysgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUJ5RGF0YTsKKysgICAgICAgICAgICB9 CisgICAgICAgICB9CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIv bWltZXR5cGVzL3FtaW1lZ2xvYnBhdHRlcm4uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0 eXBlcy9xbWltZWdsb2JwYXR0ZXJuLmNwcAoraW5kZXggYTgxMTEyZDIyNy4uZmE4ZjRjNTQ1ZCAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVy bi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVy bi5jcHAKK0BAIC04Myw3ICs4MywxMCBAQCB2b2lkIFFNaW1lR2xvYk1hdGNoUmVzdWx0OjphZGRN YXRjaChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSwgaW50IHdlaWdodCwgY29uc3QgUQorICAgICB9 CisgICAgIGlmICghbV9tYXRjaGluZ01pbWVUeXBlcy5jb250YWlucyhtaW1lVHlwZSkpIHsKKyAg ICAgICAgIG1fbWF0Y2hpbmdNaW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKy0gICAgICAgIG1f YWxsTWF0Y2hpbmdNaW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKysgICAgICAgIGlmIChyZXBs YWNlKQorKyAgICAgICAgICAgIG1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMucHJlcGVuZChtaW1lVHlw ZSk7IC8vIGhpZ2hlc3Qtd2VpZ2h0IGZpcnN0CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAg bV9hbGxNYXRjaGluZ01pbWVUeXBlcy5hcHBlbmQobWltZVR5cGUpOworICAgICAgICAgbV9rbm93 blN1ZmZpeExlbmd0aCA9IGtub3duU3VmZml4TGVuZ3RoOworICAgICB9CisgfQorQEAgLTk0LDcg Kzk3LDcgQEAgUU1pbWVHbG9iUGF0dGVybjo6UGF0dGVyblR5cGUgUU1pbWVHbG9iUGF0dGVybjo6 ZGV0ZWN0UGF0dGVyblR5cGUoY29uc3QgUVN0cmluZworICAgICBpZiAoIXBhdHRlcm5MZW5ndGgp CisgICAgICAgICByZXR1cm4gT3RoZXJQYXR0ZXJuOworIAorLSAgICBjb25zdCBib29sIHN0YXJD b3VudCA9IHBhdHRlcm4uY291bnQoUUxhdGluMUNoYXIoJyonKSkgPT0gMTsKKysgICAgY29uc3Qg aW50IHN0YXJDb3VudCA9IHBhdHRlcm4uY291bnQoUUxhdGluMUNoYXIoJyonKSk7CisgICAgIGNv bnN0IGJvb2wgaGFzU3F1YXJlQnJhY2tldCA9IHBhdHRlcm4uaW5kZXhPZihRTGF0aW4xQ2hhcign WycpKSAhPSAtMTsKKyAgICAgY29uc3QgYm9vbCBoYXNRdWVzdGlvbk1hcmsgPSBwYXR0ZXJuLmlu ZGV4T2YoUUxhdGluMUNoYXIoJz8nKSkgIT0gLTE7CisgCitAQCAtMTA2LDEwICsxMDksMTAgQEAg UU1pbWVHbG9iUGF0dGVybjo6UGF0dGVyblR5cGUgUU1pbWVHbG9iUGF0dGVybjo6ZGV0ZWN0UGF0 dGVyblR5cGUoY29uc3QgUVN0cmluZworICAgICAgICAgICAgIC8vIFBhdHRlcm5zIGxpa2UgIlJF QURNRSoiICh3ZWxsIHRoaXMgaXMgY3VycmVudGx5IHRoZSBvbmx5IG9uZSBsaWtlIHRoYXQuLi4p CisgICAgICAgICAgICAgaWYgKHBhdHRlcm4uYXQocGF0dGVybkxlbmd0aCAtIDEpID09IFFMYXRp bjFDaGFyKCcqJykpCisgICAgICAgICAgICAgICAgIHJldHVybiBQcmVmaXhQYXR0ZXJuOworLSAg ICAgICAgfQorLSAgICAgICAgLy8gTmFtZXMgd2l0aG91dCBhbnkgd2lsZGNhcmRzIGxpa2UgIlJF QURNRSIKKy0gICAgICAgIGlmIChzdGFyQ291bnQgPT0gMCkKKysgICAgICAgIH0gZWxzZSBpZiAo c3RhckNvdW50ID09IDApIHsKKysgICAgICAgICAgICAvLyBOYW1lcyB3aXRob3V0IGFueSB3aWxk Y2FyZHMgbGlrZSAiUkVBRE1FIgorICAgICAgICAgICAgIHJldHVybiBMaXRlcmFsUGF0dGVybjsK KysgICAgICAgIH0KKyAgICAgfQorIAorICAgICBpZiAocGF0dGVybiA9PSBRTGF0aW4xU3RyaW5n KCJbMC05XVswLTldWzAtOV0udmRyIikpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGli L21pbWV0eXBlcy9xbWltZXByb3ZpZGVyLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlw ZXMvcW1pbWVwcm92aWRlci5jcHAKK2luZGV4IDI1OGRkZGY4Y2IuLjQ2NDJkMGYyZDAgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3BwCisr KysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3BwCitAQCAt MjQ0LDE1ICsyNDQsMTggQEAgdm9pZCBRTWltZUJpbmFyeVByb3ZpZGVyOjphZGRGaWxlTmFtZU1h dGNoZXMoY29uc3QgUVN0cmluZyAmZmlsZU5hbWUsIFFNaW1lR2xvYk0KKyAgICAgY29uc3QgUVN0 cmluZyBsb3dlckZpbGVOYW1lID0gZmlsZU5hbWUudG9Mb3dlcigpOworICAgICAvLyBDaGVjayBs aXRlcmFscyAoZS5nLiAiTWFrZWZpbGUiKQorICAgICBtYXRjaEdsb2JMaXN0KHJlc3VsdCwgbV9j YWNoZUZpbGUsIG1fY2FjaGVGaWxlLT5nZXRVaW50MzIoUG9zTGl0ZXJhbExpc3RPZmZzZXQpLCBm aWxlTmFtZSk7CistICAgIC8vIENoZWNrIGNvbXBsZXggZ2xvYnMgKGUuZy4gImNhbGxncmluZC5v dXRbMC05XSoiKQorLSAgICBtYXRjaEdsb2JMaXN0KHJlc3VsdCwgbV9jYWNoZUZpbGUsIG1fY2Fj aGVGaWxlLT5nZXRVaW50MzIoUG9zR2xvYkxpc3RPZmZzZXQpLCBmaWxlTmFtZSk7CisgICAgIC8v IENoZWNrIHRoZSB2ZXJ5IGNvbW1vbiAqLnR4dCBjYXNlcyB3aXRoIHRoZSBzdWZmaXggdHJlZQor LSAgICBjb25zdCBpbnQgcmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0 VWludDMyKFBvc1JldmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsKKy0gICAgY29uc3QgaW50IG51bVJv b3RzID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihyZXZlcnNlU3VmZml4VHJlZU9mZnNldCk7Cist ICAgIGNvbnN0IGludCBmaXJzdFJvb3RPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKHJl dmVyc2VTdWZmaXhUcmVlT2Zmc2V0ICsgNCk7CistICAgIG1hdGNoU3VmZml4VHJlZShyZXN1bHQs IG1fY2FjaGVGaWxlLCBudW1Sb290cywgZmlyc3RSb290T2Zmc2V0LCBsb3dlckZpbGVOYW1lLCBs b3dlckZpbGVOYW1lLmxlbmd0aCgpIC0gMSwgZmFsc2UpOworKyAgICBpZiAocmVzdWx0Lm1fbWF0 Y2hpbmdNaW1lVHlwZXMuaXNFbXB0eSgpKSB7CisrICAgICAgICBjb25zdCBpbnQgcmV2ZXJzZVN1 ZmZpeFRyZWVPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc1JldmVyc2VTdWZmaXhU cmVlT2Zmc2V0KTsKKysgICAgICAgIGNvbnN0IGludCBudW1Sb290cyA9IG1fY2FjaGVGaWxlLT5n ZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQpOworKyAgICAgICAgY29uc3QgaW50IGZp cnN0Um9vdE9mZnNldCA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRyZWVP ZmZzZXQgKyA0KTsKKysgICAgICAgIG1hdGNoU3VmZml4VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxl LCBudW1Sb290cywgZmlyc3RSb290T2Zmc2V0LCBsb3dlckZpbGVOYW1lLCBsb3dlckZpbGVOYW1l Lmxlbmd0aCgpIC0gMSwgZmFsc2UpOworKyAgICAgICAgaWYgKHJlc3VsdC5tX21hdGNoaW5nTWlt ZVR5cGVzLmlzRW1wdHkoKSkKKysgICAgICAgICAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0LCBt X2NhY2hlRmlsZSwgbnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwgZmlsZU5hbWUsIGZpbGVOYW1l Lmxlbmd0aCgpIC0gMSwgdHJ1ZSk7CisrICAgIH0KKysgICAgLy8gQ2hlY2sgY29tcGxleCBnbG9i cyAoZS5nLiAiY2FsbGdyaW5kLm91dFswLTldKiIgb3IgIlJFQURNRSoiKQorICAgICBpZiAocmVz dWx0Lm1fbWF0Y2hpbmdNaW1lVHlwZXMuaXNFbXB0eSgpKQorLSAgICAgICAgbWF0Y2hTdWZmaXhU cmVlKHJlc3VsdCwgbV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJvb3RPZmZzZXQsIGZpbGVO YW1lLCBmaWxlTmFtZS5sZW5ndGgoKSAtIDEsIHRydWUpOworKyAgICAgICAgbWF0Y2hHbG9iTGlz dChyZXN1bHQsIG1fY2FjaGVGaWxlLCBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc0dsb2JMaXN0 T2Zmc2V0KSwgZmlsZU5hbWUpOworIH0KKyAKKyB2b2lkIFFNaW1lQmluYXJ5UHJvdmlkZXI6Om1h dGNoR2xvYkxpc3QoUU1pbWVHbG9iTWF0Y2hSZXN1bHQgJnJlc3VsdCwgQ2FjaGVGaWxlICpjYWNo ZUZpbGUsIGludCBvZmYsIGNvbnN0IFFTdHJpbmcgJmZpbGVOYW1lKQorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcCBiL3F0YmFzZS9z cmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcAoraW5kZXggMTdlNmYxMTFh Yi4uMmU0MGI2YzhmYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0 aW9uL3Fqc29ucGFyc2VyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRp b24vcWpzb25wYXJzZXIuY3BwCitAQCAtMzc5LDEwICszNzksMzAgQEAgZXJyb3I6CisgICAgIHJl dHVybiBRQ2JvclZhbHVlKCk7CisgfQorIAorKy8vIFdlIG5lZWQgdG8gcmV0YWluIHRoZSBfbGFz dF8gdmFsdWUgZm9yIGFueSBkdXBsaWNhdGUga2V5cyBhbmQgd2UgbmVlZCB0byBkZXJlZiBjb250 YWluZXJzLgorKy8vIFRoZXJlZm9yZSB0aGUgbWFudWFsIGltcGxlbWVudGF0aW9uIG9mIHN0ZDo6 dW5pcXVlKCkuCisrdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIENvbXBhcmUs IHR5cGVuYW1lIEFzc2lnbj4KKytzdGF0aWMgSXRlcmF0b3IgY3VzdG9tQXNzaWduaW5nVW5pcXVl TGFzdChJdGVyYXRvciBmaXJzdCwgSXRlcmF0b3IgbGFzdCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBDb21wYXJlIGNvbXBhcmUsIEFzc2lnbiBhc3NpZ24pCisr eworKyAgICBmaXJzdCA9IHN0ZDo6YWRqYWNlbnRfZmluZChmaXJzdCwgbGFzdCwgY29tcGFyZSk7 CisrICAgIGlmIChmaXJzdCA9PSBsYXN0KQorKyAgICAgICAgcmV0dXJuIGxhc3Q7CisrCisrICAg IEl0ZXJhdG9yIHJlc3VsdCA9IGZpcnN0OworKyAgICB3aGlsZSAoKytmaXJzdCAhPSBsYXN0KSB7 CisrICAgICAgICBpZiAoIWNvbXBhcmUoKnJlc3VsdCwgKmZpcnN0KSkKKysgICAgICAgICAgICAr K3Jlc3VsdDsKKysgICAgICAgIGlmIChyZXN1bHQgIT0gZmlyc3QpCisrICAgICAgICAgICAgYXNz aWduKCpyZXN1bHQsICpmaXJzdCk7CisrICAgIH0KKysKKysgICAgcmV0dXJuICsrcmVzdWx0Owor K30KKysKKyBzdGF0aWMgdm9pZCBzb3J0Q29udGFpbmVyKFFDYm9yQ29udGFpbmVyUHJpdmF0ZSAq Y29udGFpbmVyKQorIHsKKyAgICAgdXNpbmcgRm9yd2FyZCA9IFFKc29uUHJpdmF0ZTo6S2V5SXRl cmF0b3I7CistICAgIHVzaW5nIFJldmVyc2UgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Rm9yd2Fy ZD47CisgICAgIHVzaW5nIFZhbHVlID0gRm9yd2FyZDo6dmFsdWVfdHlwZTsKKyAKKyAgICAgYXV0 byBjb21wYXJlID0gW2NvbnRhaW5lcl0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKQor QEAgLTQyMCwxNyArNDQwLDMxIEBAIHN0YXRpYyB2b2lkIHNvcnRDb250YWluZXIoUUNib3JDb250 YWluZXJQcml2YXRlICpjb250YWluZXIpCisgICAgICAgICB9CisgICAgIH07CisgCistICAgIHN0 ZDo6c29ydChGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSksIEZvcndhcmQoY29u dGFpbmVyLT5lbGVtZW50cy5lbmQoKSksCistICAgICAgICAgICAgICBbJmNvbXBhcmVdKGNvbnN0 IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikgeyByZXR1cm4gY29tcGFyZShhLCBiKSA8IDA7IH0p OworKyAgICAvLyBUaGUgZWxlbWVudHMnIGNvbnRhaW5lcnMgYXJlIG93bmVkIGJ5IHRoZSBvdXRl ciBjb250YWluZXIsIG5vdCBieSB0aGUgZWxlbWVudHMgdGhlbXNlbHZlcy4KKysgICAgYXV0byBt b3ZlID0gW10oRm9yd2FyZDo6cmVmZXJlbmNlIHRhcmdldCwgRm9yd2FyZDo6cmVmZXJlbmNlIHNv dXJjZSkKKysgICAgeworKyAgICAgICAgUXRDYm9yOjpFbGVtZW50ICZ0YXJnZXRWYWx1ZSA9IHRh cmdldC52YWx1ZSgpOworKworKyAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBoYXMgYSBjb250YWlu ZXIsIGRlcmVmIGl0IGJlZm9yZSBvdmVyd3JpdGluZywgc28gdGhhdCB3ZSBkb24ndCBsZWFrLgor KyAgICAgICAgaWYgKHRhcmdldFZhbHVlLmZsYWdzICYgUXRDYm9yOjpFbGVtZW50OjpJc0NvbnRh aW5lcikKKysgICAgICAgICAgICB0YXJnZXRWYWx1ZS5jb250YWluZXItPmRlcmVmKCk7CisrCisr ICAgICAgICAvLyBEbyBub3QgbW92ZSwgc28gdGhhdCB3ZSBjYW4gY2xlYXIgdGhlIHZhbHVlIGFm dGVyd2FyZHMuCisrICAgICAgICB0YXJnZXQgPSBzb3VyY2U7CisrCisrICAgICAgICAvLyBDbGVh ciB0aGUgc291cmNlIHZhbHVlLCBzbyB0aGF0IHdlIGRvbid0IHN0b3JlIHRoZSBzYW1lIGNvbnRh aW5lciB0d2ljZS4KKysgICAgICAgIHNvdXJjZS52YWx1ZSgpID0gUXRDYm9yOjpFbGVtZW50KCk7 CisrICAgIH07CisrCisrICAgIHN0ZDo6c3RhYmxlX3NvcnQoCisrICAgICAgICAgICAgICAgIEZv cndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpKSwgRm9yd2FyZChjb250YWluZXItPmVs ZW1lbnRzLmVuZCgpKSwKKysgICAgICAgICAgICAgICAgWyZjb21wYXJlXShjb25zdCBWYWx1ZSAm YSwgY29uc3QgVmFsdWUgJmIpIHsgcmV0dXJuIGNvbXBhcmUoYSwgYikgPCAwOyB9KTsKKyAKKy0g ICAgLy8gV2UgbmVlZCB0byByZXRhaW4gdGhlIF9sYXN0XyB2YWx1ZSBmb3IgYW55IGR1cGxpY2F0 ZSBrZXlzLiBUaGVyZWZvcmUgdGhlIHJldmVyc2UgZGFuY2UgaGVyZS4KKy0gICAgYXV0byBpdCA9 IHN0ZDo6dW5pcXVlKFJldmVyc2UoY29udGFpbmVyLT5lbGVtZW50cy5lbmQoKSksIFJldmVyc2Uo Y29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg IFsmY29tcGFyZV0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7CistICAgICAgICBy ZXR1cm4gY29tcGFyZShhLCBiKSA9PSAwOworLSAgICB9KS5iYXNlKCkuZWxlbWVudHNJdGVyYXRv cigpOworKyAgICBGb3J3YXJkIHJlc3VsdCA9IGN1c3RvbUFzc2lnbmluZ1VuaXF1ZUxhc3QoCisr ICAgICAgICAgICAgICAgIEZvcndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpKSwgIEZv cndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5lbmQoKSksCisrICAgICAgICAgICAgICAgIFsmY29t cGFyZV0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7IHJldHVybiBjb21wYXJlKGEs IGIpID09IDA7IH0sIG1vdmUpOworIAorLSAgICAvLyBUaGUgZXJhc2UgZnJvbSBiZWdpbm5pbmcg aXMgZXhwZW5zaXZlIGJ1dCBob3BlZnVsbHkgcmFyZS4KKy0gICAgY29udGFpbmVyLT5lbGVtZW50 cy5lcmFzZShjb250YWluZXItPmVsZW1lbnRzLmJlZ2luKCksIGl0KTsKKysgICAgY29udGFpbmVy LT5lbGVtZW50cy5lcmFzZShyZXN1bHQuZWxlbWVudHNJdGVyYXRvcigpLCBjb250YWluZXItPmVs ZW1lbnRzLmVuZCgpKTsKKyB9CisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGli L3NlcmlhbGl6YXRpb24vcXhtbHN0cmVhbS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFs aXphdGlvbi9xeG1sc3RyZWFtLmNwcAoraW5kZXggYjJmODQ2NTQ0ZC4uN2NkNDU3YmEzYSAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3Bw CisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1sc3RyZWFtLmNwcAor QEAgLTk4MCw3ICs5ODAsNyBAQCBpbmxpbmUgdWludCBRWG1sU3RyZWFtUmVhZGVyUHJpdmF0ZTo6 cGVla0NoYXIoKQorIGJvb2wgUVhtbFN0cmVhbVJlYWRlclByaXZhdGU6OnNjYW5VbnRpbChjb25z dCBjaGFyICpzdHIsIHNob3J0IHRva2VuVG9JbmplY3QpCisgeworICAgICBpbnQgcG9zID0gdGV4 dEJ1ZmZlci5zaXplKCk7CistICAgIGludCBvbGRMaW5lTnVtYmVyID0gbGluZU51bWJlcjsKKysg ICAgY29uc3QgYXV0byBvbGRMaW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAKKyAgICAgdWludCBj OworICAgICB3aGlsZSAoKGMgPSBnZXRDaGFyKCkpICE9IFN0cmVhbUVPRikgeworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmcuY3BwIGIvcXRiYXNlL3NyYy9jb3Jl bGliL3RleHQvcXN0cmluZy5jcHAKK2luZGV4IDNlODhhYjQ4NTkuLjhkZWVhZTQ3YmIgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcAorKysrIGIvcXRiYXNl L3NyYy9jb3JlbGliL3RleHQvcXN0cmluZy5jcHAKK0BAIC0xMjMxMiw3ICsxMjMxMiw3IEBAIHN0 YXRpYyBxc2l6ZXR5cGUgcUxhc3RJbmRleE9mKEhheXN0YWNrIGhheXN0YWNrMCwgcXNpemV0eXBl IGZyb20sCisgICAgIGNvbnN0IGF1dG8gbmVlZGxlID0gbmVlZGxlMC5kYXRhKCk7CisgICAgIGNv bnN0IGF1dG8gKmVuZCA9IGhheXN0YWNrOworICAgICBoYXlzdGFjayArPSBmcm9tOworLSAgICBj b25zdCBzdGQ6OnNpemVfdCBzbF9taW51c18xID0gc2wgLSAxOworKyAgICBjb25zdCBzdGQ6OnNp emVfdCBzbF9taW51c18xID0gc2wgPyBzbCAtIDEgOiAwOworICAgICBjb25zdCBhdXRvICpuID0g bmVlZGxlICsgc2xfbWludXNfMTsKKyAgICAgY29uc3QgYXV0byAqaCA9IGhheXN0YWNrICsgc2xf bWludXNfMTsKKyAgICAgc3RkOjpzaXplX3QgaGFzaE5lZWRsZSA9IDAsIGhhc2hIYXlzdGFjayA9 IDA7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZ2l0ZXJhdG9y X3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRvcl9wLmgKK2luZGV4 IDIxOTU4OWI2ZTQuLjFkMGM2NmNjNzggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIv dGV4dC9xc3RyaW5naXRlcmF0b3JfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9x c3RyaW5naXRlcmF0b3JfcC5oCitAQCAtNjEsNiArNjEsOCBAQCBjbGFzcyBRU3RyaW5nSXRlcmF0 b3IKKyB7CisgICAgIFFTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIGksIHBvcywgZTsKKyAgICAgUV9T VEFUSUNfQVNTRVJUKChzdGQ6OmlzX3NhbWU8UVN0cmluZzo6Y29uc3RfaXRlcmF0b3IsIGNvbnN0 IFFDaGFyICo+Ojp2YWx1ZSkpOworKyAgICBzdGF0aWMgYm9vbCBsZXNzKGNvbnN0IFFDaGFyICps aHMsIGNvbnN0IFFDaGFyICpyaHMpIG5vZXhjZXB0CisrICAgIHsgcmV0dXJuIHN0ZDo6bGVzczxR U3RyaW5nOjpjb25zdF9pdGVyYXRvcj57fShsaHMsIHJocyk7IH0KKyBwdWJsaWM6CisgICAgIGV4 cGxpY2l0IFFTdHJpbmdJdGVyYXRvcihRU3RyaW5nVmlldyBzdHJpbmcsIHFzaXpldHlwZSBpZHgg PSAwKQorICAgICAgICAgOiBpKHN0cmluZy5iZWdpbigpKSwKK0BAIC05NSw3ICs5Nyw4IEBAIHB1 YmxpYzoKKyAKKyAgICAgaW5saW5lIHZvaWQgc2V0UG9zaXRpb24oUVN0cmluZzo6Y29uc3RfaXRl cmF0b3IgcG9zaXRpb24pCisgICAgIHsKKy0gICAgICAgIFFfQVNTRVJUX1goaSA8PSBwb3NpdGlv biAmJiBwb3NpdGlvbiA8PSBlLCBRX0ZVTkNfSU5GTywgInBvc2l0aW9uIG91dCBvZiBib3VuZHMi KTsKKysgICAgICAgIFFfQVNTRVJUX1goIWxlc3MocG9zaXRpb24sIGkpICYmICFsZXNzKGUsIHBv c2l0aW9uKSwKKysgICAgICAgICAgICAgICAgICAgUV9GVU5DX0lORk8sICJwb3NpdGlvbiBvdXQg b2YgYm91bmRzIik7CisgICAgICAgICBwb3MgPSBwb3NpdGlvbjsKKyAgICAgfQorIAorQEAgLTEw Myw3ICsxMDYsNyBAQCBwdWJsaWM6CisgCisgICAgIGlubGluZSBib29sIGhhc05leHQoKSBjb25z dAorICAgICB7CistICAgICAgICByZXR1cm4gcG9zIDwgZTsKKysgICAgICAgIHJldHVybiBsZXNz KHBvcywgZSk7CisgICAgIH0KKyAKKyAgICAgaW5saW5lIHZvaWQgYWR2YW5jZSgpCitAQCAtMTIw LDE2ICsxMjMsMjAgQEAgcHVibGljOgorICAgICB7CisgICAgICAgICBRX0FTU0VSVF9YKGhhc05l eHQoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBuZXh0IGl0ZW0iKTsKKyAKKy0g ICAgICAgIGlmIChRX1VOTElLRUxZKChwb3MrKyktPmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAg ICAgIGlmIChRX1VOTElLRUxZKChwb3MrKyktPmlzSGlnaFN1cnJvZ2F0ZSgpKSkgeworKyAgICAg ICAgICAgIFFfQVNTRVJUKGhhc05leHQoKSAmJiBwb3MtPmlzTG93U3Vycm9nYXRlKCkpOworICAg ICAgICAgICAgICsrcG9zOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIGlubGluZSB1aW50 IHBlZWtOZXh0VW5jaGVja2VkKCkgY29uc3QKKyAgICAgeworICAgICAgICAgUV9BU1NFUlRfWCho YXNOZXh0KCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4dCBpdGVtIik7Cisg CistICAgICAgICBpZiAoUV9VTkxJS0VMWShwb3MtPmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAg ICAgIGlmIChRX1VOTElLRUxZKHBvcy0+aXNIaWdoU3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAg ICAgUV9BU1NFUlQobGVzcyhwb3MgKyAxLCBlKSAmJiBwb3NbMV0uaXNMb3dTdXJyb2dhdGUoKSk7 CisgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQocG9zWzBdLCBwb3Nb MV0pOworKyAgICAgICAgfQorIAorICAgICAgICAgcmV0dXJuIHBvcy0+dW5pY29kZSgpOworICAg ICB9CitAQCAtMTU1LDggKzE2MiwxMCBAQCBwdWJsaWM6CisgICAgICAgICBRX0FTU0VSVF9YKGhh c05leHQoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBuZXh0IGl0ZW0iKTsKKyAK KyAgICAgICAgIGNvbnN0IFFDaGFyIGN1ciA9ICpwb3MrKzsKKy0gICAgICAgIGlmIChRX1VOTElL RUxZKGN1ci5pc0hpZ2hTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWShjdXIu aXNIaWdoU3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQoaGFzTmV4dCgpICYm IHBvcy0+aXNMb3dTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJy b2dhdGVUb1VjczQoY3VyLCAqcG9zKyspOworKyAgICAgICAgfQorICAgICAgICAgcmV0dXJuIGN1 ci51bmljb2RlKCk7CisgICAgIH0KKyAKK0BAIC0xNjYsNyArMTc1LDcgQEAgcHVibGljOgorIAor ICAgICAgICAgY29uc3QgUUNoYXIgdWMgPSAqcG9zKys7CisgICAgICAgICBpZiAoUV9VTkxJS0VM WSh1Yy5pc1N1cnJvZ2F0ZSgpKSkgeworLSAgICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5pc0hp Z2hTdXJyb2dhdGUoKSAmJiBwb3MgPCBlICYmIHBvcy0+aXNMb3dTdXJyb2dhdGUoKSkpCisrICAg ICAgICAgICAgaWYgKFFfTElLRUxZKHVjLmlzSGlnaFN1cnJvZ2F0ZSgpICYmIGhhc05leHQoKSAm JiBwb3MtPmlzTG93U3Vycm9nYXRlKCkpKQorICAgICAgICAgICAgICAgICByZXR1cm4gUUNoYXI6 OnN1cnJvZ2F0ZVRvVWNzNCh1YywgKnBvcysrKTsKKyAgICAgICAgICAgICByZXR1cm4gaW52YWxp ZEFzOworICAgICAgICAgfQorQEAgLTE3OCw3ICsxODcsNyBAQCBwdWJsaWM6CisgCisgICAgIGlu bGluZSBib29sIGhhc1ByZXZpb3VzKCkgY29uc3QKKyAgICAgeworLSAgICAgICAgcmV0dXJuIHBv cyA+IGk7CisrICAgICAgICByZXR1cm4gbGVzcyhpLCBwb3MpOworICAgICB9CisgCisgICAgIGlu bGluZSB2b2lkIHJlY2VkZSgpCitAQCAtMTk2LDE2ICsyMDUsMjAgQEAgcHVibGljOgorICAgICB7 CisgICAgICAgICBRX0FTU0VSVF9YKGhhc1ByZXZpb3VzKCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0 b3IgaGFzbid0IGEgcHJldmlvdXMgaXRlbSIpOworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFko KC0tcG9zKS0+aXNMb3dTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWSgoLS1w b3MpLT5pc0xvd1N1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGhhc1ByZXZp b3VzKCkgJiYgcG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgLS1wb3M7 CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgaW5saW5lIHVpbnQgcGVla1ByZXZpb3VzVW5j aGVja2VkKCkgY29uc3QKKyAgICAgeworICAgICAgICAgUV9BU1NFUlRfWChoYXNQcmV2aW91cygp LCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIHByZXZpb3VzIGl0ZW0iKTsKKyAKKy0g ICAgICAgIGlmIChRX1VOTElLRUxZKHBvc1stMV0uaXNMb3dTdXJyb2dhdGUoKSkpCisrICAgICAg ICBpZiAoUV9VTkxJS0VMWShwb3NbLTFdLmlzTG93U3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAg ICAgUV9BU1NFUlQobGVzcyhpICsgMSwgcG9zKSAmJiBwb3NbLTJdLmlzSGlnaFN1cnJvZ2F0ZSgp KTsKKyAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNChwb3NbLTJdLCBw b3NbLTFdKTsKKysgICAgICAgIH0KKyAgICAgICAgIHJldHVybiBwb3NbLTFdLnVuaWNvZGUoKTsK KyAgICAgfQorIAorQEAgLTIzMCw4ICsyNDMsMTAgQEAgcHVibGljOgorICAgICAgICAgUV9BU1NF UlRfWChoYXNQcmV2aW91cygpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIHByZXZp b3VzIGl0ZW0iKTsKKyAKKyAgICAgICAgIGNvbnN0IFFDaGFyIGN1ciA9ICotLXBvczsKKy0gICAg ICAgIGlmIChRX1VOTElLRUxZKGN1ci5pc0xvd1N1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChR X1VOTElLRUxZKGN1ci5pc0xvd1N1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJU KGhhc1ByZXZpb3VzKCkgJiYgcG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSk7CisgICAgICAgICAg ICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQoKi0tcG9zLCBjdXIpOworKyAgICAgICAg fQorICAgICAgICAgcmV0dXJuIGN1ci51bmljb2RlKCk7CisgICAgIH0KKyAKK0BAIC0yNDEsNyAr MjU2LDcgQEAgcHVibGljOgorIAorICAgICAgICAgY29uc3QgUUNoYXIgdWMgPSAqLS1wb3M7Cisg ICAgICAgICBpZiAoUV9VTkxJS0VMWSh1Yy5pc1N1cnJvZ2F0ZSgpKSkgeworLSAgICAgICAgICAg IGlmIChRX0xJS0VMWSh1Yy5pc0xvd1N1cnJvZ2F0ZSgpICYmIHBvcyA+IGkgJiYgcG9zWy0xXS5p c0hpZ2hTdXJyb2dhdGUoKSkpCisrICAgICAgICAgICAgaWYgKFFfTElLRUxZKHVjLmlzTG93U3Vy cm9nYXRlKCkgJiYgaGFzUHJldmlvdXMoKSAmJiBwb3NbLTFdLmlzSGlnaFN1cnJvZ2F0ZSgpKSkK KyAgICAgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQoKi0tcG9zLCB1 Yyk7CisgICAgICAgICAgICAgcmV0dXJuIGludmFsaWRBczsKKyAgICAgICAgIH0KK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmggYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGhyZWFkL3FmdXRleF9wLmgKK2luZGV4IGYyODdiNzUyZDcuLmUyOTQ1Mzc3ODcgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmgKKysrKyBiL3F0 YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcWZ1dGV4X3AuaAorQEAgLTUyLDYgKzUyLDcgQEAKKyAv LworIAorICNpbmNsdWRlIDxxZ2xvYmFsLmg+CisrI2luY2x1ZGUgPFF0Q29yZS9xdHNhbl9pbXBs Lmg+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCitAQCAtMTA2LDE2ICsxMDcsMTMgQEAgbmFt ZXNwYWNlIFF0TGludXhGdXRleCB7CisgICAgIGlubGluZSBpbnQgX3FfZnV0ZXgoaW50ICphZGRy LCBpbnQgb3AsIGludCB2YWwsIHF1aW50cHRyIHZhbDIgPSAwLAorICAgICAgICAgICAgICAgICAg ICAgICAgIGludCAqYWRkcjIgPSBudWxscHRyLCBpbnQgdmFsMyA9IDApIG5vZXhjZXB0CisgICAg IHsKKy0gICAgICAgIC8vIEEgZnV0ZXggY2FsbCBlbnN1cmVzIHRvdGFsIG9yZGVyaW5nIG9uIHRo ZSBmdXRleCB3b3JkcworLSAgICAgICAgLy8gKGluIGVpdGhlciBzdWNjZXNzIG9yIGZhaWx1cmUg b2YgdGhlIGNhbGwpLiBJbnN0cnVjdCBUU0FOIGFjY29yZGluZ2x5LAorLSAgICAgICAgLy8gYXMg VFNBTiBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoZSBmdXRleCgyKSBzeXNjYWxsLgorLSAgICAgICAg X3FfdHNhbl9yZWxlYXNlKGFkZHIsIGFkZHIyKTsKKysgICAgICAgIFF0VHNhbjo6ZnV0ZXhSZWxl YXNlKGFkZHIsIGFkZHIyKTsKKyAKKyAgICAgICAgIC8vIHdlIHVzZSBfX05SX2Z1dGV4IGJlY2F1 c2Ugc29tZSBsaWJjcyAobGlrZSBBbmRyb2lkJ3MgYmlvbmljKSBkb24ndAorICAgICAgICAgLy8g cHJvdmlkZSBTWVNfZnV0ZXggZXRjLgorICAgICAgICAgaW50IHJlc3VsdCA9IHN5c2NhbGwoX19O Ul9mdXRleCwgYWRkciwgb3AgfCBGVVRFWF9QUklWQVRFX0ZMQUcsIHZhbCwgdmFsMiwgYWRkcjIs IHZhbDMpOworIAorLSAgICAgICAgX3FfdHNhbl9hY3F1aXJlKGFkZHIsIGFkZHIyKTsKKysgICAg ICAgIFF0VHNhbjo6ZnV0ZXhBY3F1aXJlKGFkZHIsIGFkZHIyKTsKKyAKKyAgICAgICAgIHJldHVy biByZXN1bHQ7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFk L3FtdXRleC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5jcHAKK2luZGV4 IDMxMGQxY2IxNGYuLjcwOTcxMjJkOGUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIv dGhyZWFkL3FtdXRleC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4 LmNwcAorQEAgLTE1Miw2ICsxNTIsNyBAQCBwdWJsaWM6CisgCisgLyohCisgICAgIFxlbnVtIFFN dXRleDo6UmVjdXJzaW9uTW9kZQorKyAgICBcb2Jzb2xldGUgVXNlIFFSZWN1cnNpdmVNdXRleCB0 byBjcmVhdGUgYSByZWN1cnNpdmUgbXV0ZXguCisgCisgICAgIFx2YWx1ZSBSZWN1cnNpdmUgIElu IHRoaXMgbW9kZSwgYSB0aHJlYWQgY2FuIGxvY2sgdGhlIHNhbWUgbXV0ZXgKKyAgICAgICAgICAg ICAgICAgICAgICAgbXVsdGlwbGUgdGltZXMgYW5kIHRoZSBtdXRleCB3b24ndCBiZSB1bmxvY2tl ZAorQEAgLTE3Myw2ICsxNzQsNyBAQCBwdWJsaWM6CisgCisgLyohCisgICAgIENvbnN0cnVjdHMg YSBuZXcgbXV0ZXguIFRoZSBtdXRleCBpcyBjcmVhdGVkIGluIGFuIHVubG9ja2VkIHN0YXRlLgor KyAgICBcb2Jzb2xldGUgVXNlIFFSZWN1cnNpdmVNdXRleCB0byBjcmVhdGUgYSByZWN1cnNpdmUg bXV0ZXguCisgCisgICAgIElmIFxhIG1vZGUgaXMgUU11dGV4OjpSZWN1cnNpdmUsIGEgdGhyZWFk IGNhbiBsb2NrIHRoZSBzYW1lIG11dGV4CisgICAgIG11bHRpcGxlIHRpbWVzIGFuZCB0aGUgbXV0 ZXggd29uJ3QgYmUgdW5sb2NrZWQgdW50aWwgYQorQEAgLTE5Nyw3ICsxOTksNyBAQCBRTXV0ZXg6 OlFNdXRleChSZWN1cnNpb25Nb2RlIG1vZGUpCisgUU11dGV4Ojp+UU11dGV4KCkKKyB7CisgICAg IFFNdXRleERhdGEgKmQgPSBkX3B0ci5sb2FkUmVsYXhlZCgpOworLSAgICBpZiAoaXNSZWN1cnNp dmUoKSkgeworKyAgICBpZiAoUUJhc2ljTXV0ZXg6OmlzUmVjdXJzaXZlKCkpIHsKKyAgICAgICAg IGRlbGV0ZSBzdGF0aWNfY2FzdDxRUmVjdXJzaXZlTXV0ZXhQcml2YXRlICo+KGQpOworICAgICB9 IGVsc2UgaWYgKGQpIHsKKyAjaWZuZGVmIFFUX0xJTlVYX0ZVVEVYCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJl YWQvcW11dGV4LmgKK2luZGV4IDczYzllMDA2NjMuLjFiYWU1NzNhMDMgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3FtdXRleC5oCitAQCAtNDIsNiArNDIsNyBAQAorIAorICNpbmNsdWRlIDxRdENv cmUvcWdsb2JhbC5oPgorICNpbmNsdWRlIDxRdENvcmUvcWF0b21pYy5oPgorKyNpbmNsdWRlIDxR dENvcmUvcXRzYW5faW1wbC5oPgorICNpbmNsdWRlIDxuZXc+CisgCisgI2lmIF9faGFzX2luY2x1 ZGUoPGNocm9ubz4pCitAQCAtNzcsMTkgKzc4LDM3IEBAIHB1YmxpYzoKKyAKKyAgICAgLy8gQmFz aWNMb2NrYWJsZSBjb25jZXB0CisgICAgIGlubGluZSB2b2lkIGxvY2soKSBRVF9NVVRFWF9MT0NL X05PRVhDRVBUIHsKKysgICAgICAgIFF0VHNhbjo6bXV0ZXhQcmVMb2NrKHRoaXMsIDB1KTsKKysK KyAgICAgICAgIGlmICghZmFzdFRyeUxvY2soKSkKKyAgICAgICAgICAgICBsb2NrSW50ZXJuYWwo KTsKKysKKysgICAgICAgIFF0VHNhbjo6bXV0ZXhQb3N0TG9jayh0aGlzLCAwdSwgMCk7CisgICAg IH0KKyAKKyAgICAgLy8gQmFzaWNMb2NrYWJsZSBjb25jZXB0CisgICAgIGlubGluZSB2b2lkIHVu bG9jaygpIG5vZXhjZXB0IHsKKyAgICAgICAgIFFfQVNTRVJUKGRfcHRyLmxvYWRSZWxheGVkKCkp OyAvL211dGV4IG11c3QgYmUgbG9ja2VkCisrCisrICAgICAgICBRdFRzYW46Om11dGV4UHJlVW5s b2NrKHRoaXMsIDB1KTsKKysKKyAgICAgICAgIGlmICghZmFzdFRyeVVubG9jaygpKQorICAgICAg ICAgICAgIHVubG9ja0ludGVybmFsKCk7CisrCisrICAgICAgICBRdFRzYW46Om11dGV4UG9zdFVu bG9jayh0aGlzLCAwdSk7CisgICAgIH0KKyAKKyAgICAgYm9vbCB0cnlMb2NrKCkgbm9leGNlcHQg eworLSAgICAgICAgcmV0dXJuIGZhc3RUcnlMb2NrKCk7CisrICAgICAgICB1bnNpZ25lZCB0c2Fu RmxhZ3MgPSBRdFRzYW46OlRyeUxvY2s7CisrICAgICAgICBRdFRzYW46Om11dGV4UHJlTG9jayh0 aGlzLCB0c2FuRmxhZ3MpOworKworKyAgICAgICAgY29uc3QgYm9vbCBzdWNjZXNzID0gZmFzdFRy eUxvY2soKTsKKysKKysgICAgICAgIGlmICghc3VjY2VzcykKKysgICAgICAgICAgICB0c2FuRmxh Z3MgfD0gUXRUc2FuOjpUcnlMb2NrRmFpbGVkOworKyAgICAgICAgUXRUc2FuOjptdXRleFBvc3RM b2NrKHRoaXMsIHRzYW5GbGFncywgMCk7CisrCisrICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAg ICAgfQorIAorICAgICAvLyBMb2NrYWJsZSBjb25jZXB0CitAQCAtMTM0LDggKzE1MywxNiBAQCBw dWJsaWM6CisgI2Vsc2UKKyAgICAgUU11dGV4KCkgeyBkX3B0ci5zdG9yZVJlbGF4ZWQobnVsbHB0 cik7IH0KKyAjZW5kaWYKKysjaWYgUVRfREVQUkVDQVRFRF9TSU5DRSg1LDE1KQorICAgICBlbnVt IFJlY3Vyc2lvbk1vZGUgeyBOb25SZWN1cnNpdmUsIFJlY3Vyc2l2ZSB9OworKyAgICBRVF9ERVBS RUNBVEVEX1ZFUlNJT05fWCg1LCAxNSwgIlVzZSBRUmVjdXJzaXZlTXV0ZXggaW5zdGVhZCBvZiBh IHJlY3Vyc2l2ZSBRTXV0ZXgiKQorICAgICBleHBsaWNpdCBRTXV0ZXgoUmVjdXJzaW9uTW9kZSBt b2RlKTsKKysKKysgICAgUVRfREVQUkVDQVRFRF9WRVJTSU9OX1goNSwgMTUsICJVc2UgUVJlY3Vy c2l2ZU11dGV4IGluc3RlYWQgb2YgYSByZWN1cnNpdmUgUU11dGV4IikKKysgICAgYm9vbCBpc1Jl Y3Vyc2l2ZSgpIGNvbnN0IG5vZXhjZXB0CisrICAgIHsgcmV0dXJuIFFCYXNpY011dGV4Ojppc1Jl Y3Vyc2l2ZSgpOyB9CisrI2VuZGlmCisrCisgICAgIH5RTXV0ZXgoKTsKKyAKKyAgICAgLy8gQmFz aWNMb2NrYWJsZSBjb25jZXB0CitAQCAtMTY2LDkgKzE5Myw2IEBAIHB1YmxpYzoKKyAgICAgfQor ICNlbmRpZgorIAorLSAgICBib29sIGlzUmVjdXJzaXZlKCkgY29uc3Qgbm9leGNlcHQKKy0gICAg eyByZXR1cm4gUUJhc2ljTXV0ZXg6OmlzUmVjdXJzaXZlKCk7IH0KKy0KKyBwcml2YXRlOgorICAg ICBRX0RJU0FCTEVfQ09QWShRTXV0ZXgpCisgICAgIGZyaWVuZCBjbGFzcyBRTXV0ZXhMb2NrZXI7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xcmVhZHdyaXRlbG9jay5j cHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcAoraW5kZXgg OGMyODUwN2Q1YS4uOWRkODUwMzExNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90 aHJlYWQvcXJlYWR3cml0ZWxvY2suY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFk L3FyZWFkd3JpdGVsb2NrLmNwcAorQEAgLTE1NSw3ICsxNTUsNyBAQCBRUmVhZFdyaXRlTG9jazo6 UVJlYWRXcml0ZUxvY2soUmVjdXJzaW9uTW9kZSByZWN1cnNpb25Nb2RlKQorICovCisgUVJlYWRX cml0ZUxvY2s6On5RUmVhZFdyaXRlTG9jaygpCisgeworLSAgICBhdXRvIGQgPSBkX3B0ci5sb2Fk UmVsYXhlZCgpOworKyAgICBhdXRvIGQgPSBkX3B0ci5sb2FkQWNxdWlyZSgpOworICAgICBpZiAo aXNVbmNvbnRlbmRlZExvY2tlZChkKSkgeworICAgICAgICAgcVdhcm5pbmcoIlFSZWFkV3JpdGVM b2NrOiBkZXN0cm95aW5nIGxvY2tlZCBRUmVhZFdyaXRlTG9jayIpOworICAgICAgICAgcmV0dXJu OworQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIFFSZWFkV3JpdGVMb2NrOjp1bmxvY2soKQorIC8q ISBcaW50ZXJuYWwgIEhlbHBlciBmb3IgUVdhaXRDb25kaXRpb246OndhaXQgKi8KKyBRUmVhZFdy aXRlTG9jazo6U3RhdGVGb3JXYWl0Q29uZGl0aW9uIFFSZWFkV3JpdGVMb2NrOjpzdGF0ZUZvcldh aXRDb25kaXRpb24oKSBjb25zdAorIHsKKy0gICAgUVJlYWRXcml0ZUxvY2tQcml2YXRlICpkID0g ZF9wdHIubG9hZFJlbGF4ZWQoKTsKKysgICAgUVJlYWRXcml0ZUxvY2tQcml2YXRlICpkID0gZF9w dHIubG9hZEFjcXVpcmUoKTsKKyAgICAgc3dpdGNoIChxdWludHB0cihkKSAmIFN0YXRlTWFzaykg eworICAgICBjYXNlIFN0YXRlTG9ja2VkRm9yUmVhZDogcmV0dXJuIExvY2tlZEZvclJlYWQ7Cisg ICAgIGNhc2UgU3RhdGVMb2NrZWRGb3JXcml0ZTogcmV0dXJuIExvY2tlZEZvcldyaXRlOworQEAg LTQ1Myw2ICs0NTMsNyBAQCBRUmVhZFdyaXRlTG9jazo6U3RhdGVGb3JXYWl0Q29uZGl0aW9uIFFS ZWFkV3JpdGVMb2NrOjpzdGF0ZUZvcldhaXRDb25kaXRpb24oKSBjbworIAorICAgICBpZiAoIWQp CisgICAgICAgICByZXR1cm4gVW5sb2NrZWQ7CisrICAgIGNvbnN0IGF1dG8gbG9jayA9IHF0X3Nj b3BlZF9sb2NrKGQtPm11dGV4KTsKKyAgICAgaWYgKGQtPndyaXRlckNvdW50ID4gMSkKKyAgICAg ICAgIHJldHVybiBSZWN1cnNpdmVseUxvY2tlZDsKKyAgICAgZWxzZSBpZiAoZC0+d3JpdGVyQ291 bnQgPT0gMSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FzZW1hcGhv cmUuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xc2VtYXBob3JlLmNwcAoraW5kZXgg MWQwMWZjMWIyOC4uM2VjZGVlMzc0NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90 aHJlYWQvcXNlbWFwaG9yZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXNl bWFwaG9yZS5jcHAKK0BAIC0zNTQsNyArMzU0LDEyIEBAIHZvaWQgUVNlbWFwaG9yZTo6cmVsZWFz ZShpbnQgbikKKyAgICAgICAgIHF1aW50cHRyIG5uID0gdW5zaWduZWQobik7CisgICAgICAgICBp ZiAoZnV0ZXhIYXNXYWl0ZXJDb3VudCkKKyAgICAgICAgICAgICBubiB8PSBxdWludDY0KG5uKSA8 PCAzMjsgICAgLy8gdG9rZW4gY291bnQgcmVwbGljYXRlZCBpbiBoaWdoIHdvcmQKKy0gICAgICAg IHF1aW50cHRyIHByZXZWYWx1ZSA9IHUuZmV0Y2hBbmRBZGRSZWxlYXNlKG5uKTsKKysgICAgICAg IHF1aW50cHRyIHByZXZWYWx1ZSA9IHUubG9hZFJlbGF4ZWQoKTsKKysgICAgICAgIHF1aW50cHRy IG5ld1ZhbHVlOworKyAgICAgICAgZG8geyAvLyBsb29wIGp1c3QgdG8gZW5zdXJlIHRoZSBvcGVy YXRpb25zIGFyZSBkb25lIGF0b21pY2FsbHkKKysgICAgICAgICAgICBuZXdWYWx1ZSA9IHByZXZW YWx1ZSArIG5uOworKyAgICAgICAgICAgIG5ld1ZhbHVlICY9IChmdXRleE5lZWRzV2FrZUFsbEJp dCAtIDEpOworKyAgICAgICAgfSB3aGlsZSAoIXUudGVzdEFuZFNldFJlbGVhc2UocHJldlZhbHVl LCBuZXdWYWx1ZSwgcHJldlZhbHVlKSk7CisgICAgICAgICBpZiAoZnV0ZXhOZWVkc1dha2UocHJl dlZhbHVlKSkgeworICNpZmRlZiBGVVRFWF9PUAorICAgICAgICAgICAgIGlmIChmdXRleEhhc1dh aXRlckNvdW50KSB7CitAQCAtMzc2LDcgKzM4MSw2IEBAIHZvaWQgUVNlbWFwaG9yZTo6cmVsZWFz ZShpbnQgbikKKyAgICAgICAgICAgICAgICAgcXVpbnQzMiBvcGFyZyA9IDA7CisgICAgICAgICAg ICAgICAgIHF1aW50MzIgY21wID0gRlVURVhfT1BfQ01QX05FOworICAgICAgICAgICAgICAgICBx dWludDMyIGNtcGFyZyA9IDA7CistICAgICAgICAgICAgICAgIHUuZmV0Y2hBbmRBbmRSZWxlYXNl KGZ1dGV4TmVlZHNXYWtlQWxsQml0IC0gMSk7CisgICAgICAgICAgICAgICAgIGZ1dGV4V2FrZU9w KCpmdXRleExvdzMyKCZ1KSwgbiwgSU5UX01BWCwgKmZ1dGV4SGlnaDMyKCZ1KSwgRlVURVhfT1Ao b3AsIG9wYXJnLCBjbXAsIGNtcGFyZykpOworICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg ICAgICAgICAgfQorQEAgLTM4OCw3ICszOTIsNiBAQCB2b2lkIFFTZW1hcGhvcmU6OnJlbGVhc2Uo aW50IG4pCisgICAgICAgICAgICAgLy8gICAgaXRzIGFjcXVpc2l0aW9uIGFueXdheSwgc28gaXQg aGFzIHRvIHdhaXQ7CisgICAgICAgICAgICAgLy8gMikgaXQgZGlkIG5vdCBzZWUgdGhlIG5ldyBj b3VudGVyIHZhbHVlLCBpbiB3aGljaCBjYXNlIGl0cworICAgICAgICAgICAgIC8vICAgIGZ1dGV4 V2FpdCB3aWxsIGZhaWwuCistICAgICAgICAgICAgdS5mZXRjaEFuZEFuZFJlbGVhc2UoZnV0ZXhO ZWVkc1dha2VBbGxCaXQgLSAxKTsKKyAgICAgICAgICAgICBpZiAoZnV0ZXhIYXNXYWl0ZXJDb3Vu dCkgeworICAgICAgICAgICAgICAgICBmdXRleFdha2VBbGwoKmZ1dGV4TG93MzIoJnUpKTsKKyAg ICAgICAgICAgICAgICAgZnV0ZXhXYWtlQWxsKCpmdXRleEhpZ2gzMigmdSkpOworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmggYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGhyZWFkL3F0aHJlYWRfcC5oCitpbmRleCBiMmQxNjI4ZTZlLi5mMzJmNmYwNDYwIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaAorKysrIGIv cXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaAorQEAgLTE3NCw3ICsxNzQsNyBA QCBwdWJsaWM6CisgICAgIGludCByZXR1cm5Db2RlOworIAorICAgICB1aW50IHN0YWNrU2l6ZTsK Ky0gICAgUVRocmVhZDo6UHJpb3JpdHkgcHJpb3JpdHk7CisrICAgIHN0ZDo6dW5kZXJseWluZ190 eXBlPFFUaHJlYWQ6OlByaW9yaXR5Pjo6dHlwZSBwcmlvcml0eTsKKyAKKyAgICAgc3RhdGljIFFU aHJlYWQgKnRocmVhZEZvcklkKGludCBpZCk7CisgCitAQCAtMjEzLDYgKzIxMywxMyBAQCBwdWJs aWM6CisgICAgICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6aW5zdGFuY2UoKS0+cG9zdEV2ZW50 KHFfcHRyLCBuZXcgUUV2ZW50KFFFdmVudDo6UXVpdCkpOworICAgICAgICAgfQorICAgICB9Cisr CisrI2lmbmRlZiBRX09TX0lOVEVHUklUWQorK3ByaXZhdGU6CisrICAgIC8vIFVzZWQgaW4gUVRo cmVhZChQcml2YXRlKTo6c3RhcnQgdG8gYXZvaWQgcmFjeSBhY2Nlc3MgdG8gUU9iamVjdDo6b2Jq ZWN0TmFtZSwKKysgICAgLy8gdW5zZXQgYWZ0ZXJ3YXJkcy4gT24gSU5URUdSSVRZIHdlIHNldCB0 aGUgdGhyZWFkIG5hbWUgYmVmb3JlIHN0YXJ0aW5nIGl0LgorKyAgICBRU3RyaW5nIG9iamVjdE5h bWU7CisrI2VuZGlmCisgfTsKKyAKKyAjZWxzZSAvLyBRVF9DT05GSUcodGhyZWFkKQorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF91bml4LmNwcCBiL3F0YmFz ZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF91bml4LmNwcAoraW5kZXggNTZhOGUwYTAzOC4u NjEwMTE3YTY0MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVh ZF91bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3VuaXgu Y3BwCitAQCAtMTY5LDggKzE2OSw3IEBAIHN0YXRpYyB2b2lkIHNldF90aHJlYWRfZGF0YShRVGhy ZWFkRGF0YSAqZGF0YSkKKyAKKyBzdGF0aWMgdm9pZCBjbGVhcl90aHJlYWRfZGF0YSgpCisgewor LSAgICBjdXJyZW50VGhyZWFkRGF0YSA9IG51bGxwdHI7CistICAgIHB0aHJlYWRfc2V0c3BlY2lm aWMoY3VycmVudF90aHJlYWRfZGF0YV9rZXksIG51bGxwdHIpOworKyAgICBzZXRfdGhyZWFkX2Rh dGEobnVsbHB0cik7CisgfQorIAorIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorQEAgLTI5Niw3ICsy OTUsNyBAQCB2b2lkICpRVGhyZWFkUHJpdmF0ZTo6c3RhcnQodm9pZCAqYXJnKQorICAgICAgICAg ICAgIFFNdXRleExvY2tlciBsb2NrZXIoJnRoci0+ZF9mdW5jKCktPm11dGV4KTsKKyAKKyAgICAg ICAgICAgICAvLyBkbyB3ZSBuZWVkIHRvIHJlc2V0IHRoZSB0aHJlYWQgcHJpb3JpdHk/CistICAg ICAgICAgICAgaWYgKGludCh0aHItPmRfZnVuYygpLT5wcmlvcml0eSkgJiBUaHJlYWRQcmlvcml0 eVJlc2V0RmxhZykgeworKyAgICAgICAgICAgIGlmICh0aHItPmRfZnVuYygpLT5wcmlvcml0eSAm IFRocmVhZFByaW9yaXR5UmVzZXRGbGFnKSB7CisgICAgICAgICAgICAgICAgIHRoci0+ZF9mdW5j KCktPnNldFByaW9yaXR5KFFUaHJlYWQ6OlByaW9yaXR5KHRoci0+ZF9mdW5jKCktPnByaW9yaXR5 ICYgflRocmVhZFByaW9yaXR5UmVzZXRGbGFnKSk7CisgICAgICAgICAgICAgfQorIAorQEAgLTMx NiwxMCArMzE1LDEwIEBAIHZvaWQgKlFUaHJlYWRQcml2YXRlOjpzdGFydCh2b2lkICphcmcpCisg ICAgICAgICAgICAgLy8gU2V0cyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0aHJlYWQuIFdlIGNh biBvbmx5IGRvIHRoaXMKKyAgICAgICAgICAgICAvLyB3aGVuIHRoZSB0aHJlYWQgaXMgc3RhcnRp bmcsIGFzIHdlIGRvbid0IGhhdmUgYSBjcm9zcworICAgICAgICAgICAgIC8vIHBsYXRmb3JtIHdh eSBvZiBzZXR0aW5nIHRoZSBuYW1lIG9mIGFuIGFyYml0cmFyeSB0aHJlYWQuCistICAgICAgICAg ICAgaWYgKFFfTElLRUxZKHRoci0+b2JqZWN0TmFtZSgpLmlzRW1wdHkoKSkpCisrICAgICAgICAg ICAgaWYgKFFfTElLRUxZKHRoci0+ZF9mdW5jKCktPm9iamVjdE5hbWUuaXNFbXB0eSgpKSkKKyAg ICAgICAgICAgICAgICAgc2V0Q3VycmVudFRocmVhZE5hbWUodGhyLT5tZXRhT2JqZWN0KCktPmNs YXNzTmFtZSgpKTsKKyAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIHNldEN1cnJl bnRUaHJlYWROYW1lKHRoci0+b2JqZWN0TmFtZSgpLnRvTG9jYWw4Qml0KCkpOworKyAgICAgICAg ICAgICAgICBzZXRDdXJyZW50VGhyZWFkTmFtZShzdGQ6OmV4Y2hhbmdlKHRoci0+ZF9mdW5jKCkt Pm9iamVjdE5hbWUsIHt9KS50b0xvY2FsOEJpdCgpKTsKKyAgICAgICAgIH0KKyAjZW5kaWYKKyAK K0BAIC02NzEsNyArNjcwLDcgQEAgdm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0 eSkKKyAgICAgICAgICAgICAgICAgLy8gY291bGQgbm90IHNldCBzY2hlZHVsaW5nIGhpbnRzLCBm YWxsYmFjayB0byBpbmhlcml0aW5nIHRoZW0KKyAgICAgICAgICAgICAgICAgLy8gd2UnbGwgdHJ5 IGFnYWluIGZyb20gaW5zaWRlIHRoZSB0aHJlYWQKKyAgICAgICAgICAgICAgICAgcHRocmVhZF9h dHRyX3NldGluaGVyaXRzY2hlZCgmYXR0ciwgUFRIUkVBRF9JTkhFUklUX1NDSEVEKTsKKy0gICAg ICAgICAgICAgICAgZC0+cHJpb3JpdHkgPSBQcmlvcml0eShwcmlvcml0eSB8IFRocmVhZFByaW9y aXR5UmVzZXRGbGFnKTsKKysgICAgICAgICAgICAgICAgZC0+cHJpb3JpdHkgPSBzdGF0aWNfY2Fz dDxzdGQ6OnVuZGVybHlpbmdfdHlwZTxRVGhyZWFkOjpQcmlvcml0eT46OnR5cGU+KHByaW9yaXR5 KSB8IFRocmVhZFByaW9yaXR5UmVzZXRGbGFnOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgIH0KK0BAIC03MDIsNyArNzAxLDEwIEBAIHZvaWQgUVRocmVhZDo6 c3RhcnQoUHJpb3JpdHkgcHJpb3JpdHkpCisgICAgICAgICBwdGhyZWFkX2F0dHJfc2V0dGhyZWFk bmFtZSgmYXR0ciwgbWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSk7CisgICAgIGVsc2UKKyAgICAg ICAgIHB0aHJlYWRfYXR0cl9zZXR0aHJlYWRuYW1lKCZhdHRyLCBvYmplY3ROYW1lKCkudG9Mb2Nh bDhCaXQoKSk7CisrI2Vsc2UKKysgICAgZC0+b2JqZWN0TmFtZSA9IG9iamVjdE5hbWUoKTsKKyAj ZW5kaWYKKysKKyAgICAgcHRocmVhZF90IHRocmVhZElkOworICAgICBpbnQgY29kZSA9IHB0aHJl YWRfY3JlYXRlKCZ0aHJlYWRJZCwgJmF0dHIsIFFUaHJlYWRQcml2YXRlOjpzdGFydCwgdGhpcyk7 CisgICAgIGlmIChjb2RlID09IEVQRVJNKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3Jl bGliL3RocmVhZC9xdGhyZWFkX3dpbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0 aHJlYWRfd2luLmNwcAoraW5kZXggYmM3MGUzMTc4YS4uNGU3Njk3MjQ5OCAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF93aW4uY3BwCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfd2luLmNwcAorQEAgLTM5NCwxMCArMzk0LDkgQEAg dW5zaWduZWQgaW50IF9fc3RkY2FsbCBRVF9FTlNVUkVfU1RBQ0tfQUxJR05FRF9GT1JfU1NFIFFU aHJlYWRQcml2YXRlOjpzdGFydCh2b2kKKyAKKyAjaWYgIWRlZmluZWQoUVRfTk9fREVCVUcpICYm IGRlZmluZWQoUV9DQ19NU1ZDKSAmJiAhZGVmaW5lZChRX09TX1dJTlJUKQorICAgICAvLyBzZXRz IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHRocmVhZC4KKy0gICAgUUJ5dGVBcnJheSBvYmplY3RO YW1lID0gdGhyLT5vYmplY3ROYW1lKCkudG9Mb2NhbDhCaXQoKTsKKy0gICAgcXRfc2V0X3RocmVh ZF9uYW1lKEhBTkRMRSgtMSksCistICAgICAgICAgICAgICAgICAgICAgICBvYmplY3ROYW1lLmlz RW1wdHkoKSA/CistICAgICAgICAgICAgICAgICAgICAgICB0aHItPm1ldGFPYmplY3QoKS0+Y2xh c3NOYW1lKCkgOiBvYmplY3ROYW1lLmNvbnN0RGF0YSgpKTsKKysgICAgcXRfc2V0X3RocmVhZF9u YW1lKEhBTkRMRSgtMSksIHRoci0+ZF9mdW5jKCktPm9iamVjdE5hbWUuaXNFbXB0eSgpCisrICAg ICAgICAgICAgICAgICAgICAgICAgPyB0aHItPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkKKysg ICAgICAgICAgICAgICAgICAgICAgICA6IHN0ZDo6ZXhjaGFuZ2UodGhyLT5kX2Z1bmMoKS0+b2Jq ZWN0TmFtZSwge30pLnRvTG9jYWw4Qml0KCkuY29uc3REYXRhKCkpOworICNlbmRpZgorIAorICAg ICBlbWl0IHRoci0+c3RhcnRlZChRVGhyZWFkOjpRUHJpdmF0ZVNpZ25hbCgpKTsKK0BAIC01MDMs NiArNTAyLDcgQEAgdm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAgICAg aWYgKGQtPnJ1bm5pbmcpCisgICAgICAgICByZXR1cm47CisgCisrICAgIGQtPm9iamVjdE5hbWUg PSBvYmplY3ROYW1lKCk7CisgICAgIGQtPnJ1bm5pbmcgPSB0cnVlOworICAgICBkLT5maW5pc2hl ZCA9IGZhbHNlOworICAgICBkLT5leGl0ZWQgPSBmYWxzZTsKK0BAIC01NDgsNyArNTQ4LDcgQEAg dm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAKKyAgICAgaW50IHByaW87 CisgICAgIGQtPnByaW9yaXR5ID0gcHJpb3JpdHk7CistICAgIHN3aXRjaCAoZC0+cHJpb3JpdHkp IHsKKysgICAgc3dpdGNoIChwcmlvcml0eSkgeworICAgICBjYXNlIElkbGVQcmlvcml0eToKKyAg ICAgICAgIHByaW8gPSBUSFJFQURfUFJJT1JJVFlfSURMRTsKKyAgICAgICAgIGJyZWFrOworQEAg LTY4Niw3ICs2ODYsNyBAQCB2b2lkIFFUaHJlYWRQcml2YXRlOjpzZXRQcmlvcml0eShRVGhyZWFk OjpQcmlvcml0eSB0aHJlYWRQcmlvcml0eSkKKyAKKyAgICAgaW50IHByaW87CisgICAgIHByaW9y aXR5ID0gdGhyZWFkUHJpb3JpdHk7CistICAgIHN3aXRjaCAocHJpb3JpdHkpIHsKKysgICAgc3dp dGNoICh0aHJlYWRQcmlvcml0eSkgeworICAgICBjYXNlIFFUaHJlYWQ6OklkbGVQcmlvcml0eToK KyAgICAgICAgIHByaW8gPSBUSFJFQURfUFJJT1JJVFlfSURMRTsKKyAgICAgICAgIGJyZWFrOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRzYW5faW1wbC5oIGIvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdHNhbl9pbXBsLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwMDAwLi41ODBhNzM4YjkxCistLS0gL2Rldi9udWxsCisrKysgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0c2FuX2ltcGwuaAorQEAgLTAsMCArMSwxMTUgQEAKKysv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENv cnBvcmF0aW9uLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBLbGFyw6RsdmRhbGVucyBEYXRha29u c3VsdCBBQiwgYSBLREFCIEdyb3VwIGNvbXBhbnksIGluZm9Aa2RhYi5jb20sIGF1dGhvciBHaXVz ZXBwZSBEJ0FuZ2VsbyA8Z2l1c2VwcGUuZGFuZ2Vsb0BrZGFiLmNvbT4KKysqKiBDb250YWN0OiBo dHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgUXRDb3JlIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJ Tl9MSUNFTlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5z ZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmls ZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVu dCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBh Y2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3Jl ZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1z CisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlv bnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQg aHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkg YmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK KysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBp bmNsdWRlZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3 IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBi ZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgor KyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwg dGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBH TlUgR2VuZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVy c2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGlj ZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRp b24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BM MworKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2 aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczov L3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5n bnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQK KysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2lmbmRlZiBRVFNBTl9JTVBMX0gKKysj ZGVmaW5lIFFUU0FOX0lNUExfSAorKworKyNpbmNsdWRlIDxRdENvcmUvcWdsb2JhbC5oPgorKwor KyNpZiAoX19oYXNfZmVhdHVyZSh0aHJlYWRfc2FuaXRpemVyKSB8fCBkZWZpbmVkKF9fU0FOSVRJ WkVfVEhSRUFEX18pKSAmJiBfX2hhc19pbmNsdWRlKDxzYW5pdGl6ZXIvdHNhbl9pbnRlcmZhY2Uu aD4pCisrIyAgZGVmaW5lIFFUX0JVSUxESU5HX1VOREVSX1RTQU4KKysjICBpbmNsdWRlIDxzYW5p dGl6ZXIvdHNhbl9pbnRlcmZhY2UuaD4KKysjZW5kaWYKKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UK KysKKytuYW1lc3BhY2UgUXRUc2FuIHsKKysjaWZkZWYgUVRfQlVJTERJTkdfVU5ERVJfVFNBTgor K2lubGluZSB2b2lkIGZ1dGV4QWNxdWlyZSh2b2lkICphZGRyLCB2b2lkICphZGRyMiA9IG51bGxw dHIpCisreworKyAgICAvLyBBIGZ1dGV4IGNhbGwgZW5zdXJlcyB0b3RhbCBvcmRlcmluZyBvbiB0 aGUgZnV0ZXggd29yZHMKKysgICAgLy8gKGluIGVpdGhlciBzdWNjZXNzIG9yIGZhaWx1cmUgb2Yg dGhlIGNhbGwpLiBJbnN0cnVjdCBUU0FOIGFjY29yZGluZ2x5LAorKyAgICAvLyBhcyBUU0FOIGRv ZXMgbm90IHVuZGVyc3RhbmQgdGhlIGZ1dGV4KDIpIHN5c2NhbGwgKG9yIGVxdWl2YWxlbnQpLgor KyAgICA6Ol9fdHNhbl9hY3F1aXJlKGFkZHIpOworKyAgICBpZiAoYWRkcjIpCisrICAgICAgICA6 Ol9fdHNhbl9hY3F1aXJlKGFkZHIyKTsKKyt9CisrCisraW5saW5lIHZvaWQgZnV0ZXhSZWxlYXNl KHZvaWQgKmFkZHIsIHZvaWQgKmFkZHIyID0gbnVsbHB0cikKKyt7CisrICAgIGlmIChhZGRyMikK KysgICAgICAgIDo6X190c2FuX3JlbGVhc2UoYWRkcjIpOworKyAgICA6Ol9fdHNhbl9yZWxlYXNl KGFkZHIpOworK30KKysKKytpbmxpbmUgdm9pZCBtdXRleFByZUxvY2sodm9pZCAqYWRkciwgdW5z aWduZWQgZmxhZ3MpCisreworKyAgICA6Ol9fdHNhbl9tdXRleF9wcmVfbG9jayhhZGRyLCBmbGFn cyk7CisrfQorKworK2lubGluZSB2b2lkIG11dGV4UG9zdExvY2sodm9pZCAqYWRkciwgdW5zaWdu ZWQgZmxhZ3MsIGludCByZWN1cnNpb24pCisreworKyAgICA6Ol9fdHNhbl9tdXRleF9wb3N0X2xv Y2soYWRkciwgZmxhZ3MsIHJlY3Vyc2lvbik7CisrfQorKworK2lubGluZSB2b2lkIG11dGV4UHJl VW5sb2NrKHZvaWQgKmFkZHIsIHVuc2lnbmVkIGZsYWdzKQorK3sKKysgICAgOjpfX3RzYW5fbXV0 ZXhfcHJlX3VubG9jayhhZGRyLCBmbGFncyk7CisrfQorKworK2lubGluZSB2b2lkIG11dGV4UG9z dFVubG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncykKKyt7CisrICAgIDo6X190c2FuX211 dGV4X3Bvc3RfdW5sb2NrKGFkZHIsIGZsYWdzKTsKKyt9CisrCisrZW51bSA6IHVuc2lnbmVkIHsK KysgICAgTXV0ZXhXcml0ZVJlZW50cmFudCA9IDo6X190c2FuX211dGV4X3dyaXRlX3JlZW50cmFu dCwKKysgICAgVHJ5TG9jayA9IDo6X190c2FuX211dGV4X3RyeV9sb2NrLAorKyAgICBUcnlMb2Nr RmFpbGVkID0gOjpfX3RzYW5fbXV0ZXhfdHJ5X2xvY2tfZmFpbGVkLAorK307CisrI2Vsc2UKKytp bmxpbmUgdm9pZCBmdXRleEFjcXVpcmUodm9pZCAqLCB2b2lkICogPSBudWxscHRyKSB7fQorK2lu bGluZSB2b2lkIGZ1dGV4UmVsZWFzZSh2b2lkICosIHZvaWQgKiA9IG51bGxwdHIpIHt9CisrCisr ZW51bSA6IHVuc2lnbmVkIHsKKysgICAgTXV0ZXhXcml0ZVJlZW50cmFudCwKKysgICAgVHJ5TG9j aywKKysgICAgVHJ5TG9ja0ZhaWxlZCwKKyt9OworK2lubGluZSB2b2lkIG11dGV4UHJlTG9jayh2 b2lkICosIHVuc2lnbmVkKSB7fQorK2lubGluZSB2b2lkIG11dGV4UG9zdExvY2sodm9pZCAqLCB1 bnNpZ25lZCwgaW50KSB7fQorK2lubGluZSB2b2lkIG11dGV4UHJlVW5sb2NrKHZvaWQgKiwgdW5z aWduZWQpIHt9CisraW5saW5lIHZvaWQgbXV0ZXhQb3N0VW5sb2NrKHZvaWQgKiwgdW5zaWduZWQp IHt9CisrI2VuZGlmIC8vIFFUX0JVSUxESU5HX1VOREVSX1RTQU4KKyt9IC8vIG5hbWVzcGFjZSBR dFRzYW4KKysKKytRVF9FTkRfTkFNRVNQQUNFCisrCisrI2VuZGlmIC8vIFFUU0FOX0lNUExfSAor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRpb25fdW5p eC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3Bw CitpbmRleCA4OGIwNThmNDEwLi4wZjFkYTRkYzliIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9j b3JlbGliL3RocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9j b3JlbGliL3RocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcAorQEAgLTIxMyw3ICsyMTMsNyBA QCBib29sIFFXYWl0Q29uZGl0aW9uOjp3YWl0KFFNdXRleCAqbXV0ZXgsIFFEZWFkbGluZVRpbWVy IGRlYWRsaW5lKQorIHsKKyAgICAgaWYgKCEgbXV0ZXgpCisgICAgICAgICByZXR1cm4gZmFsc2U7 CistICAgIGlmIChtdXRleC0+aXNSZWN1cnNpdmUoKSkgeworKyAgICBpZiAoc3RhdGljX2Nhc3Q8 UUJhc2ljTXV0ZXggKj4obXV0ZXgpLT5pc1JlY3Vyc2l2ZSgpKSB7CisgICAgICAgICBxV2Fybmlu ZygiUVdhaXRDb25kaXRpb246IGNhbm5vdCB3YWl0IG9uIHJlY3Vyc2l2ZSBtdXRleGVzIik7Cisg ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGltZS9xZGF0ZXRpbWUuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcWRhdGV0 aW1lLmNwcAoraW5kZXggZWMxMjU2OWUzZi4uMmMwYjA5ODA3OSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvY29yZWxpYi90aW1lL3FkYXRldGltZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxp Yi90aW1lL3FkYXRldGltZS5jcHAKK0BAIC00Myw2ICs0Myw3IEBACisgI2lmIFFUX0NPTkZJRyhk YXRldGltZXBhcnNlcikKKyAjaW5jbHVkZSAicHJpdmF0ZS9xZGF0ZXRpbWVwYXJzZXJfcC5oIgor ICNlbmRpZgorKyNpbmNsdWRlIDxwcml2YXRlL3FudW1lcmljX3AuaD4KKyAKKyAjaW5jbHVkZSAi cWRhdGFzdHJlYW0uaCIKKyAjaW5jbHVkZSAicXNldC5oIgorQEAgLTE0MjksOSArMTQzMCwxMSBA QCBRRGF0ZSBRRGF0ZTo6YWRkRGF5cyhxaW50NjQgbmRheXMpIGNvbnN0CisgICAgIGlmIChpc051 bGwoKSkKKyAgICAgICAgIHJldHVybiBRRGF0ZSgpOworIAorLSAgICAvLyBEdWUgdG8gbGltaXRz IG9uIG1pbkpkKCkgYW5kIG1heEpkKCkgd2Uga25vdyB0aGF0IGFueSBvdmVyZmxvdworLSAgICAv LyB3aWxsIGJlIGludmFsaWQgYW5kIGNhdWdodCBieSBmcm9tSnVsaWFuRGF5KCkuCistICAgIHJl dHVybiBmcm9tSnVsaWFuRGF5KGpkICsgbmRheXMpOworKyAgICBxaW50NjQgcjsKKysgICAgaWYg KFFfVU5MSUtFTFkoYWRkX292ZXJmbG93KGpkLCBuZGF5cywgJnIpKSkKKysgICAgICAgIHJldHVy biBRRGF0ZSgpOworKyAgICBlbHNlCisrICAgICAgICByZXR1cm4gZnJvbUp1bGlhbkRheShyKTsK KyB9CisgCisgLyohCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6 b25lLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZS5jcHAKK2luZGV4IDAz MDllNDNlNTIuLjNkNDUxNjk2YTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGlt ZS9xdGltZXpvbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUu Y3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqCistKiogQ29w eXJpZ2h0IChDKSAyMDEzIEpvaG4gTGF5dCA8amxheXRAa2RlLm9yZz4KKysqKiBDb3B5cmlnaHQg KEMpIDIwMjAgSm9obiBMYXl0IDxqbGF5dEBrZGUub3JnPgorICoqIENvbnRhY3Q6IGh0dHBzOi8v d3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBR dENvcmUgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTk3NSw5ICs5NzUsMTUgQEAgUUxp c3Q8UUJ5dGVBcnJheT4gUVRpbWVab25lOjp3aW5kb3dzSWRUb0lhbmFJZHMoY29uc3QgUUJ5dGVB cnJheSAmd2luZG93c0lkLAorIH0KKyAKKyAjaWZuZGVmIFFUX05PX0RBVEFTVFJFQU0KKysvLyBJ bnZhbGlkLCBhcyBhbiBJQU5BIElEOiB0b28gbG9uZywgc3RhcnRzIHdpdGggLSBhbmQgaGFzIG90 aGVyIGludmFsaWQgY2hhcmFjdGVycyBpbiBpdAorK3N0YXRpYyBpbmxpbmUgUVN0cmluZyBpbnZh bGlkSWQoKSB7IHJldHVybiBRU3RyaW5nTGl0ZXJhbCgiLU5vIFRpbWUgWm9uZSBTcGVjaWZpZWQh Iik7IH0KKysKKyBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChRRGF0YVN0cmVhbSAmZHMsIGNvbnN0 IFFUaW1lWm9uZSAmdHopCisgeworLSAgICB0ei5kLT5zZXJpYWxpemUoZHMpOworKyAgICBpZiAo dHouaXNWYWxpZCgpKQorKyAgICAgICAgdHouZC0+c2VyaWFsaXplKGRzKTsKKysgICAgZWxzZQor KyAgICAgICAgZHMgPDwgaW52YWxpZElkKCk7CisgICAgIHJldHVybiBkczsKKyB9CisgCitAQCAt OTg1LDcgKzk5MSw5IEBAIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KFFEYXRhU3RyZWFtICZkcywg UVRpbWVab25lICZ0eikKKyB7CisgICAgIFFTdHJpbmcgaWFuYUlkOworICAgICBkcyA+PiBpYW5h SWQ7CistICAgIGlmIChpYW5hSWQgPT0gUUxhdGluMVN0cmluZygiT2Zmc2V0RnJvbVV0YyIpKSB7 CisrICAgIGlmIChpYW5hSWQgPT0gaW52YWxpZElkKCkpIHsKKysgICAgICAgIHR6ID0gUVRpbWVa b25lKCk7CisrICAgIH0gZWxzZSBpZiAoaWFuYUlkID09IFFMYXRpbjFTdHJpbmcoIk9mZnNldEZy b21VdGMiKSkgeworICAgICAgICAgaW50IHV0Y09mZnNldDsKKyAgICAgICAgIFFTdHJpbmcgbmFt ZTsKKyAgICAgICAgIFFTdHJpbmcgYWJicmV2aWF0aW9uOworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvY29yZWxpYi90aW1lL3F0aW1lem9uZXByaXZhdGVfdHouY3BwIGIvcXRiYXNlL3NyYy9jb3Jl bGliL3RpbWUvcXRpbWV6b25lcHJpdmF0ZV90ei5jcHAKK2luZGV4IGIxNjExZDdkZGIuLmE3YTZh NzJjY2YgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2 YXRlX3R6LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lcHJpdmF0 ZV90ei5jcHAKK0BAIC00Miw2ICs0Miw3IEBACisgI2luY2x1ZGUgInF0aW1lem9uZS5oIgorICNp bmNsdWRlICJxdGltZXpvbmVwcml2YXRlX3AuaCIKKyAjaW5jbHVkZSAicHJpdmF0ZS9xbG9jYWxl X3Rvb2xzX3AuaCIKKysjaW5jbHVkZSAicHJpdmF0ZS9xbG9ja2luZ19wLmgiCisgCisgI2luY2x1 ZGUgPFF0Q29yZS9RRGF0YVN0cmVhbT4KKyAjaW5jbHVkZSA8UXRDb3JlL1FEYXRlVGltZT4KK0BA IC02Miw2ICs2MywxMCBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorKyNpZiBRVF9DT05G SUcoaWN1KQorK3N0YXRpYyBRQmFzaWNNdXRleCBzX2ljdV9tdXRleDsKKysjZW5kaWYKKysKKyAv KgorICAgICBQcml2YXRlCisgCitAQCAtNjcwLDYgKzY3NSw5IEBAIFFUelRpbWVab25lUHJpdmF0 ZTo6flFUelRpbWVab25lUHJpdmF0ZSgpCisgCisgUVR6VGltZVpvbmVQcml2YXRlICpRVHpUaW1l Wm9uZVByaXZhdGU6OmNsb25lKCkgY29uc3QKKyB7CisrI2lmIFFUX0NPTkZJRyhpY3UpCisrICAg IGNvbnN0IGF1dG8gbG9jayA9IHF0X3Njb3BlZF9sb2NrKHNfaWN1X211dGV4KTsKKysjZW5kaWYK KyAgICAgcmV0dXJuIG5ldyBRVHpUaW1lWm9uZVByaXZhdGUoKnRoaXMpOworIH0KKyAKK0BAIC05 MTMsMTIgKzkyMSwxNCBAQCBRU3RyaW5nIFFUelRpbWVab25lUHJpdmF0ZTo6ZGlzcGxheU5hbWUo cWludDY0IGF0TVNlY3NTaW5jZUVwb2NoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBRTG9jYWxlICZsb2NhbGUpIGNvbnN0CisgeworICNpZiBRVF9DT05G SUcoaWN1KQorKyAgICBhdXRvIGxvY2sgPSBxdF91bmlxdWVfbG9jayhzX2ljdV9tdXRleCk7Cisg ICAgIGlmICghbV9pY3UpCisgICAgICAgICBtX2ljdSA9IG5ldyBRSWN1VGltZVpvbmVQcml2YXRl KG1faWQpOworICAgICAvLyBUT0RPIHNtYWxsIHJpc2sgbWF5IG5vdCBtYXRjaCBpZiB0cmFuIHRp bWVzIGRpZmZlciBkdWUgdG8gb3V0ZGF0ZWQgZmlsZXMKKyAgICAgLy8gVE9ETyBTb21lIHZhbGlk IFRaIG5hbWVzIGFyZSBub3QgdmFsaWQgSUNVIG5hbWVzLCB1c2UgdHJhbnNsYXRpb24gdGFibGU/ CisgICAgIGlmIChtX2ljdS0+aXNWYWxpZCgpKQorICAgICAgICAgcmV0dXJuIG1faWN1LT5kaXNw bGF5TmFtZShhdE1TZWNzU2luY2VFcG9jaCwgbmFtZVR5cGUsIGxvY2FsZSk7CisrICAgIGxvY2su dW5sb2NrKCk7CisgI2Vsc2UKKyAgICAgUV9VTlVTRUQobmFtZVR5cGUpCisgICAgIFFfVU5VU0VE KGxvY2FsZSkKK0BAIC05MzIsMTIgKzk0MiwxNCBAQCBRU3RyaW5nIFFUelRpbWVab25lUHJpdmF0 ZTo6ZGlzcGxheU5hbWUoUVRpbWVab25lOjpUaW1lVHlwZSB0aW1lVHlwZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUxvY2FsZSAmbG9jYWxlKSBjb25z dAorIHsKKyAjaWYgUVRfQ09ORklHKGljdSkKKysgICAgYXV0byBsb2NrID0gcXRfdW5pcXVlX2xv Y2soc19pY3VfbXV0ZXgpOworICAgICBpZiAoIW1faWN1KQorICAgICAgICAgbV9pY3UgPSBuZXcg UUljdVRpbWVab25lUHJpdmF0ZShtX2lkKTsKKyAgICAgLy8gVE9ETyBzbWFsbCByaXNrIG1heSBu b3QgbWF0Y2ggaWYgdHJhbiB0aW1lcyBkaWZmZXIgZHVlIHRvIG91dGRhdGVkIGZpbGVzCisgICAg IC8vIFRPRE8gU29tZSB2YWxpZCBUWiBuYW1lcyBhcmUgbm90IHZhbGlkIElDVSBuYW1lcywgdXNl IHRyYW5zbGF0aW9uIHRhYmxlPworICAgICBpZiAobV9pY3UtPmlzVmFsaWQoKSkKKyAgICAgICAg IHJldHVybiBtX2ljdS0+ZGlzcGxheU5hbWUodGltZVR5cGUsIG5hbWVUeXBlLCBsb2NhbGUpOwor KyAgICBsb2NrLnVubG9jaygpOworICNlbHNlCisgICAgIFFfVU5VU0VEKHRpbWVUeXBlKQorICAg ICBRX1VOVVNFRChuYW1lVHlwZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9v bHMvcWFycmF5ZGF0YS5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FhcnJheWRhdGEuaAor aW5kZXggZGNkOTU5MjRjMS4uZDAxNzM5ZTdlNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29y ZWxpYi90b29scy9xYXJyYXlkYXRhLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9x YXJyYXlkYXRhLmgKK0BAIC00Miw2ICs0Miw3IEBACisgCisgI2luY2x1ZGUgPFF0Q29yZS9xcmVm Y291bnQuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPGNzdGRpbnQ+CisgCisg UVRfQkVHSU5fTkFNRVNQQUNFCisgCitAQCAtNTgsMTQgKzU5LDE0IEBAIHN0cnVjdCBRX0NPUkVf RVhQT1JUIFFBcnJheURhdGEKKyAgICAgeworICAgICAgICAgUV9BU1NFUlQoc2l6ZSA9PSAwCisg ICAgICAgICAgICAgICAgIHx8IG9mZnNldCA8IDAgfHwgc2l6ZV90KG9mZnNldCkgPj0gc2l6ZW9m KFFBcnJheURhdGEpKTsKKy0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIgKj4o dGhpcykgKyBvZmZzZXQ7CisrICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+ IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykgKyBvZmZzZXQpOworICAgICB9Cisg CisgICAgIGNvbnN0IHZvaWQgKmRhdGEoKSBjb25zdAorICAgICB7CisgICAgICAgICBRX0FTU0VS VChzaXplID09IDAKKyAgICAgICAgICAgICAgICAgfHwgb2Zmc2V0IDwgMCB8fCBzaXplX3Qob2Zm c2V0KSA+PSBzaXplb2YoUUFycmF5RGF0YSkpOworLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0 X2Nhc3Q8Y29uc3QgY2hhciAqPih0aGlzKSArIG9mZnNldDsKKysgICAgICAgIHJldHVybiByZWlu dGVycHJldF9jYXN0PHZvaWQgKj4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSAr IG9mZnNldCk7CisgICAgIH0KKyAKKyAgICAgLy8gVGhpcyByZWZlcnMgdG8gYXJyYXkgZGF0YSBt dXRhYmlsaXR5LCBub3QgImhlYWRlciBkYXRhIiByZXByZXNlbnRlZCBieQorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xZnJlZWxpc3RfcC5oIGIvcXRiYXNlL3NyYy9jb3Jl bGliL3Rvb2xzL3FmcmVlbGlzdF9wLmgKK2luZGV4IDViYTIzYjM0NGIuLjk5NzQxMDIxMzYgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3AuaAorKysrIGIv cXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FmcmVlbGlzdF9wLmgKK0BAIC0xNjEsNyArMTYxLDcg QEAgY2xhc3MgUUZyZWVMaXN0CisgICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAg ICAgIHggLT0gc2l6ZTsKKyAgICAgICAgIH0KKy0gICAgICAgIFFfQVNTRVJUKGZhbHNlKTsKKysg ICAgICAgIFFfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorIAor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51bWJlci5oIGIv cXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3F2ZXJzaW9ubnVtYmVyLmgKK2luZGV4IGQ0M2I4NmJh NTEuLjI4NDNmMmIwNDMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcXZl cnNpb25udW1iZXIuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3F2ZXJzaW9ubnVt YmVyLmgKK0BAIC0yNzMsMTAgKzI3MywxMCBAQCBwdWJsaWM6CisgCisgICAgIFFfUkVRVUlSRURf UkVTVUxUIFFfQ09SRV9FWFBPUlQgUVN0cmluZyB0b1N0cmluZygpIGNvbnN0OworICNpZiBRVF9T VFJJTkdWSUVXX0xFVkVMIDwgMgorLSAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JU IHN0YXRpYyBRX0RFQ0xfUFVSRV9GVU5DVElPTiBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKGNv bnN0IFFTdHJpbmcgJnN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworKyAgICBR X1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRVmVyc2lvbk51bWJlciBmcm9t U3RyaW5nKGNvbnN0IFFTdHJpbmcgJnN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIp OworICNlbmRpZgorLSAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBR X0RFQ0xfUFVSRV9GVU5DVElPTiBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKFFMYXRpbjFTdHJp bmcgc3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CistICAgIFFfUkVRVUlSRURf UkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFfREVDTF9QVVJFX0ZVTkNUSU9OIFFWZXJzaW9u TnVtYmVyIGZyb21TdHJpbmcoUVN0cmluZ1ZpZXcgc3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0g bnVsbHB0cik7CisrICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFW ZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoUUxhdGluMVN0cmluZyBzdHJpbmcsIGludCAqc3VmZml4 SW5kZXggPSBudWxscHRyKTsKKysgICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBz dGF0aWMgUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhRU3RyaW5nVmlldyBzdHJpbmcsIGludCAq c3VmZml4SW5kZXggPSBudWxscHRyKTsKKyAKKyBwcml2YXRlOgorICNpZm5kZWYgUVRfTk9fREFU QVNUUkVBTQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3Bw IGIvcXRiYXNlL3NyYy9kYnVzL3FkYnVzaW50ZWdyYXRvci5jcHAKK2luZGV4IDViNjZjZTk3MWIu LjI4YTNiMGZmZWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNpbnRlZ3JhdG9y LmNwcAorKysrIGIvcXRiYXNlL3NyYy9kYnVzL3FkYnVzaW50ZWdyYXRvci5jcHAKK0BAIC0xMTM1 LDcgKzExMzUsMTMgQEAgdm9pZCBRREJ1c0Nvbm5lY3Rpb25Qcml2YXRlOjpjbG9zZUNvbm5lY3Rp b24oKQorICAgICAgICAgfQorICAgICB9CisgCistICAgIHFEZWxldGVBbGwocGVuZGluZ0NhbGxz KTsKKysgICAgZm9yIChhdXRvIGl0ID0gcGVuZGluZ0NhbGxzLmJlZ2luKCk7IGl0ICE9IHBlbmRp bmdDYWxscy5lbmQoKTsgKytpdCkgeworKyAgICAgICAgYXV0byBjYWxsID0gKml0OworKyAgICAg ICAgaWYgKCFjYWxsLT5yZWYuZGVyZWYoKSkgeworKyAgICAgICAgICAgIGRlbGV0ZSBjYWxsOwor KyAgICAgICAgfQorKyAgICB9CisrICAgIHBlbmRpbmdDYWxscy5jbGVhcigpOworIAorICAgICAv LyBEaXNjb25uZWN0IGFsbCBzaWduYWxzIGZyb20gc2lnbmFsIGhvb2tzIGFuZCBmcm9tIHRoZSBv YmplY3QgdHJlZSB0bworICAgICAvLyBhdm9pZCBRT2JqZWN0OjpkZXN0cm95ZWQgYmVpbmcgc2Vu dCB0byBkYnVzIGRhZW1vbiB0aHJlYWQgd2hpY2ggaGFzCitAQCAtMjU4NCw2ICsyNTkwLDExIEBA IFFEQnVzQ29ubmVjdGlvblByaXZhdGU6OmZpbmRNZXRhT2JqZWN0KGNvbnN0IFFTdHJpbmcgJnNl cnZpY2UsIGNvbnN0IFFTdHJpbmcgJnBhCisgICAgICAgICBpZiAobW8pCisgICAgICAgICAgICAg cmV0dXJuIG1vOworICAgICB9CisrICAgIGlmIChwYXRoLmlzRW1wdHkoKSkgeworKyAgICAgICAg ZXJyb3IgPSBRREJ1c0Vycm9yKFFEQnVzRXJyb3I6OkludmFsaWRPYmplY3RQYXRoLCBRTGF0aW4x U3RyaW5nKCJPYmplY3QgcGF0aCBjYW5ub3QgYmUgZW1wdHkiKSk7CisrICAgICAgICBsYXN0RXJy b3IgPSBlcnJvcjsKKysgICAgICAgIHJldHVybiBudWxscHRyOworKyAgICB9CisgCisgICAgIC8v IGludHJvc3BlY3QgdGhlIHRhcmdldCBvYmplY3QKKyAgICAgUURCdXNNZXNzYWdlIG1zZyA9IFFE QnVzTWVzc2FnZTo6Y3JlYXRlTWV0aG9kQ2FsbChzZXJ2aWNlLCBwYXRoLAorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c21ldGFvYmplY3QuY3BwIGIvcXRiYXNlL3NyYy9kYnVzL3Fk YnVzbWV0YW9iamVjdC5jcHAKK2luZGV4IDUyNjU1NjhmNDIuLjdlOWYwZjFhY2MgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9kYnVzL3FkYnVzbWV0YW9iamVjdC5jcHAKK0BAIC0yMTAsNiArMjEwLDkgQEAgUURCdXNNZXRh T2JqZWN0R2VuZXJhdG9yOjpmaW5kVHlwZShjb25zdCBRQnl0ZUFycmF5ICZzaWduYXR1cmUsCisg ICAgICAgICB9IGVsc2UgaWYgKHNpZ25hdHVyZSA9PSAiYXtzc30iKSB7CisgICAgICAgICAgICAg cmVzdWx0Lm5hbWUgPSAiUU1hcDxRU3RyaW5nLFFTdHJpbmc+IjsKKyAgICAgICAgICAgICB0eXBl ID0gcU1ldGFUeXBlSWQ8UU1hcDxRU3RyaW5nLCBRU3RyaW5nPiA+KCk7CisrICAgICAgICB9IGVs c2UgaWYgKHNpZ25hdHVyZSA9PSAiYWF5IikgeworKyAgICAgICAgICAgIHJlc3VsdC5uYW1lID0g IlFCeXRlQXJyYXlMaXN0IjsKKysgICAgICAgICAgICB0eXBlID0gcU1ldGFUeXBlSWQ8UUJ5dGVB cnJheUxpc3Q+KCk7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIHJlc3VsdC5uYW1l ID0gIntELUJ1cyB0eXBlIFwiIiArIHNpZ25hdHVyZSArICJcIn0iOworICAgICAgICAgICAgIHR5 cGUgPSByZWdpc3RlckNvbXBsZXhEQnVzVHlwZShyZXN1bHQubmFtZSk7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9ndWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAgYi9xdGJhc2Uvc3JjL2d1 aS9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlLmNwcAoraW5kZXggZDcwNWJmY2NiNS4uMGNhZjNjODA4 YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFjY2Vzc2libGUuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlLmNwcAorQEAgLTU0 LDYgKzU0LDcgQEAKKyAjaW5jbHVkZSA8UXRDb3JlL3FkZWJ1Zy5oPgorICNpbmNsdWRlIDxRdENv cmUvcWxvZ2dpbmdjYXRlZ29yeS5oPgorICNpbmNsdWRlIDxRdENvcmUvcW1ldGFvYmplY3QuaD4K KysjaW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcW1ldGFvYmplY3RfcC5oPgorICNpbmNsdWRlIDxR dENvcmUvcWhhc2guaD4KKyAjaW5jbHVkZSA8cHJpdmF0ZS9xZmFjdG9yeWxvYWRlcl9wLmg+Cisg CitAQCAtNjgxLDYgKzY4MiwyNSBAQCBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGU6 OnF1ZXJ5QWNjZXNzaWJsZUludGVyZmFjZShRT2JqZWN0ICpvYmplY3QpCisgICAgIC8vIENyZWF0 ZSBhIFFBY2Nlc3NpYmxlSW50ZXJmYWNlIGZvciB0aGUgb2JqZWN0IGNsYXNzLiBTdGFydCBieSB0 aGUgbW9zdAorICAgICAvLyBkZXJpdmVkIGNsYXNzIGFuZCB3YWxrIHVwIHRoZSBjbGFzcyBoaWVy YXJjaHkuCisgICAgIGNvbnN0IFFNZXRhT2JqZWN0ICptbyA9IG9iamVjdC0+bWV0YU9iamVjdCgp OworKyAgICBjb25zdCBhdXRvICpvYmplY3RQcml2ID0gUU9iamVjdFByaXZhdGU6OmdldChvYmpl Y3QpOworKyAgICAvKgorKyAgICAgV2UgZG8gbm90IHdhbnQgdG8gY2FjaGUgZWFjaCBhbmQgZXZl cnkgUU1MIG1ldGFvYmplY3QgKEJ1dHRvbl9RTUxUWVBFXzEyNCwKKysgICAgIEJ1dHRvbl9RTUxU WVBFXzEyNSwgZXRjLikuIFRob3NlIGR5bmFtaWMgbWV0YW9iamVjdHMgc2hvdWxkbid0IGhhdmUg YW4KKysgICAgIGFjY2Vzc2libGUgaW50ZXJmYWNlIGluIGFueSBjYXNlLiBJbnN0ZWFkLCB3ZSBz dGFydCB0aGUgd2hvbGUgY2hlY2tpbmcKKysgICAgIHdpdGggdGhlIGZpcnN0IG5vbi1keW5hbWlj IG1ldGEtb2JqZWN0LiBUbyBhdm9pZCBwb3RlbnRpYWwgcmVncmVzc2lvbnMKKysgICAgIGluIG90 aGVyIGFyZWFzIG9mIFF0IHRoYXQgYWxzbyB1c2UgZHluYW1pYyBtZXRhb2JqZWN0cywgd2Ugb25s eSBkbyB0aGlzCisrICAgICBmb3Igb2JqZWN0cyB0aGF0IGFyZSBRTUwtcmVsYXRlZCAoYXBwcm94 aW1hdGVkIGJ5IGNoZWNraW5nIHdoZXRoZXIgdGhleQorKyAgICAgaGF2ZSBkZGF0YSBzZXQpLgor KyAgICAqLworKyAgICBjb25zdCBib29sIHFtbFJlbGF0ZWQgPSAhb2JqZWN0UHJpdi0+aXNEZWxl dGluZ0NoaWxkcmVuICYmCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFByaXYt PmRlY2xhcmF0aXZlRGF0YTsKKysgICAgd2hpbGUgKHFtbFJlbGF0ZWQgJiYgbW8pIHsKKysgICAg ICAgIGF1dG8gbW9wID0gUU1ldGFPYmplY3RQcml2YXRlOjpnZXQobW8pOworKyAgICAgICAgaWYg KCFtb3AgfHwgIShtb3AtPmZsYWdzICYgRHluYW1pY01ldGFPYmplY3QpKQorKyAgICAgICAgICAg IGJyZWFrOworKworKyAgICAgICAgbW8gPSBtby0+c3VwZXJDbGFzcygpOworKyAgICB9OworICAg ICB3aGlsZSAobW8pIHsKKyAgICAgICAgIGNvbnN0IFFTdHJpbmcgY24gPSBRTGF0aW4xU3RyaW5n KG1vLT5jbGFzc05hbWUoKSk7CisgCitAQCAtNjk2LDE0ICs3MTYsMTUgQEAgUUFjY2Vzc2libGVJ bnRlcmZhY2UgKlFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2UoUU9iamVjdCAq b2JqZWN0KQorICAgICAgICAgLy8gRmluZCBhIFFBY2Nlc3NpYmxlUGx1Z2luIChmYWN0b3J5KSBm b3IgdGhlIGNsYXNzIG5hbWUuIElmIHRoZXJlJ3MKKyAgICAgICAgIC8vIG5vIGVudHJ5IGluIHRo ZSBjYWNoZSB0cnkgdG8gY3JlYXRlIGl0IHVzaW5nIHRoZSBwbHVnaW4gbG9hZGVyLgorICAgICAg ICAgaWYgKCFxQWNjZXNzaWJsZVBsdWdpbnMoKS0+Y29udGFpbnMoY24pKSB7CisrICAgICAgICAg ICAgUUFjY2Vzc2libGVQbHVnaW4gKmZhY3RvcnkgPSBudWxscHRyOyAvLyAwIG1lYW5zICJubyBw bHVnaW4gZm91bmQiLiBUaGlzIGlzIGNhY2hlZCBhcyB3ZWxsLgorICAgICAgICAgICAgIGNvbnN0 IGludCBpbmRleCA9IGxvYWRlcigpLT5pbmRleE9mKGNuKTsKKy0gICAgICAgICAgICBpZiAoaW5k ZXggIT0gLTEpIHsKKy0gICAgICAgICAgICAgICAgUUFjY2Vzc2libGVQbHVnaW4gKmZhY3Rvcnkg PSBxb2JqZWN0X2Nhc3Q8UUFjY2Vzc2libGVQbHVnaW4gKj4obG9hZGVyKCktPmluc3RhbmNlKGlu ZGV4KSk7CistICAgICAgICAgICAgICAgIHFBY2Nlc3NpYmxlUGx1Z2lucygpLT5pbnNlcnQoY24s IGZhY3RvcnkpOworLSAgICAgICAgICAgIH0KKysgICAgICAgICAgICBpZiAoaW5kZXggIT0gLTEp CisrICAgICAgICAgICAgICAgIGZhY3RvcnkgPSBxb2JqZWN0X2Nhc3Q8UUFjY2Vzc2libGVQbHVn aW4gKj4obG9hZGVyKCktPmluc3RhbmNlKGluZGV4KSk7CisrICAgICAgICAgICAgcUFjY2Vzc2li bGVQbHVnaW5zKCktPmluc2VydChjbiwgZmFjdG9yeSk7CisgICAgICAgICB9CisgCisgICAgICAg ICAvLyBBdCB0aGlzIHBvaW50IHRoZSBjYWNoZSBzaG91bGQgY29udGFpbiBhIHZhbGlkIGZhY3Rv cnkgcG9pbnRlciBvciAwOgorKyAgICAgICAgUV9BU1NFUlQocUFjY2Vzc2libGVQbHVnaW5zKCkt PmNvbnRhaW5zKGNuKSk7CisgICAgICAgICBRQWNjZXNzaWJsZVBsdWdpbiAqZmFjdG9yeSA9IHFB Y2Nlc3NpYmxlUGx1Z2lucygpLT52YWx1ZShjbik7CisgICAgICAgICBpZiAoZmFjdG9yeSkgewor ICAgICAgICAgICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpyZXN1bHQgPSBmYWN0b3J5LT5jcmVh dGUoY24sIG9iamVjdCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJlLmpz b24gYi9xdGJhc2Uvc3JjL2d1aS9jb25maWd1cmUuanNvbgoraW5kZXggMWYwODc5NWM1Ny4uMTJj OTU3NDJkMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3VyZS5qc29uCisrKysg Yi9xdGJhc2Uvc3JjL2d1aS9jb25maWd1cmUuanNvbgorQEAgLTgzNCw3ICs4MzQsOCBAQAorICAg ICAgICAgICAgICAgICAgICAgIi8vIGVtYmVkZGVkIGRldmljZXMsIGFyZSBub3QgaW50ZW5kZWQg dG8gYmUgdXNlZCB0b2dldGhlciB3aXRoIFguIEVHTCBzdXBwb3J0IiwKKyAgICAgICAgICAgICAg ICAgICAgICIvLyBoYXMgdG8gYmUgZGlzYWJsZWQgaW4gcGx1Z2lucyBsaWtlIHhjYiBpbiB0aGlz IGNhc2Ugc2luY2UgdGhlIG5hdGl2ZSBkaXNwbGF5LCIsCisgICAgICAgICAgICAgICAgICAgICAi Ly8gd2luZG93IGFuZCBwaXhtYXAgdHlwZXMgd2lsbCBiZSBkaWZmZXJlbnQgdGhhbiB3aGF0IGFu IFgtYmFzZWQgcGxhdGZvcm0iLAorLSAgICAgICAgICAgICAgICAgICAgIi8vIHBsdWdpbiB3b3Vs ZCBleHBlY3QuIgorKyAgICAgICAgICAgICAgICAgICAgIi8vIHBsdWdpbiB3b3VsZCBleHBlY3Qu IiwKKysgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIFVTRV9YMTEiCisgICAgICAgICAgICAg ICAgIF0sCisgICAgICAgICAgICAgICAgICJpbmNsdWRlIjogWyAiRUdML2VnbC5oIiwgIlgxMS9Y bGliLmgiIF0sCisgICAgICAgICAgICAgICAgICJtYWluIjogWworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvZ3VpL2ltYWdlL3FibXBoYW5kbGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3Fi bXBoYW5kbGVyLmNwcAoraW5kZXggOTZmMWU4Y2IxZC4uMGU3M2JiYmRiMCAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FibXBoYW5kbGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9n dWkvaW1hZ2UvcWJtcGhhbmRsZXIuY3BwCitAQCAtMTUwLDE2ICsxNTAsNDIgQEAgc3RhdGljIFFE YXRhU3RyZWFtICZvcGVyYXRvcjw8KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAm YmkpCisgICAgIHJldHVybiBzOworIH0KKyAKKy1zdGF0aWMgaW50IGNhbGNfc2hpZnQodWludCBt YXNrKQorK3N0YXRpYyB1aW50IGNhbGNfc2hpZnQodWludCBtYXNrKQorIHsKKy0gICAgaW50IHJl c3VsdCA9IDA7CistICAgIHdoaWxlIChtYXNrICYmICEobWFzayAmIDEpKSB7CisrICAgIHVpbnQg cmVzdWx0ID0gMDsKKysgICAgd2hpbGUgKChtYXNrID49IDB4MTAwKSB8fCAoIShtYXNrICYgMSkg JiYgbWFzaykpIHsKKyAgICAgICAgIHJlc3VsdCsrOworICAgICAgICAgbWFzayA+Pj0gMTsKKyAg ICAgfQorICAgICByZXR1cm4gcmVzdWx0OworIH0KKyAKKytzdGF0aWMgdWludCBjYWxjX3NjYWxl KHVpbnQgbG93X21hc2spCisreworKyAgICB1aW50IHJlc3VsdCA9IDg7CisrICAgIHdoaWxlIChs b3dfbWFzayAmJiByZXN1bHQpIHsKKysgICAgICAgIHJlc3VsdC0tOworKyAgICAgICAgbG93X21h c2sgPj49IDE7CisrICAgIH0KKysgICAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisrc3RhdGljIGlu bGluZSB1aW50IGFwcGx5X3NjYWxlKHVpbnQgdmFsdWUsIHVpbnQgc2NhbGUpCisreworKyAgICBp ZiAoIShzY2FsZSAmIDB4MDcpKSAvLyByZXR1cm4gaW1tZWRpYXRlbHkgaWYgc2NhbGUgPT0gOCBv ciAwCisrICAgICAgICByZXR1cm4gdmFsdWU7CisrCisrICAgIHVpbnQgZmlsbGVkID0gOCAtIHNj YWxlOworKyAgICB1aW50IHJlc3VsdCA9IHZhbHVlIDw8IHNjYWxlOworKworKyAgICBkbyB7Cisr ICAgICAgICByZXN1bHQgfD0gcmVzdWx0ID4+IGZpbGxlZDsKKysgICAgICAgIGZpbGxlZCA8PD0g MTsKKysgICAgfSB3aGlsZSAoZmlsbGVkIDwgOCk7CisrCisrICAgIHJldHVybiByZXN1bHQ7Cisr fQorKworIHN0YXRpYyBib29sIHJlYWRfZGliX2ZpbGVoZWFkZXIoUURhdGFTdHJlYW0gJnMsIEJN UF9GSUxFSERSICZiZikKKyB7CisgICAgIC8vIHJlYWQgQk1QIGZpbGUgaGVhZGVyCitAQCAtMjIy LDE0ICsyNDgsMTQgQEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9keShRRGF0YVN0cmVhbSAmcywg Y29uc3QgQk1QX0lORk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAorICAgICB1aW50IGdyZWVuX21h c2sgPSAwOworICAgICB1aW50IGJsdWVfbWFzayA9IDA7CisgICAgIHVpbnQgYWxwaGFfbWFzayA9 IDA7CistICAgIGludCByZWRfc2hpZnQgPSAwOworLSAgICBpbnQgZ3JlZW5fc2hpZnQgPSAwOwor LSAgICBpbnQgYmx1ZV9zaGlmdCA9IDA7CistICAgIGludCBhbHBoYV9zaGlmdCA9IDA7CistICAg IGludCByZWRfc2NhbGUgPSAwOworLSAgICBpbnQgZ3JlZW5fc2NhbGUgPSAwOworLSAgICBpbnQg Ymx1ZV9zY2FsZSA9IDA7CistICAgIGludCBhbHBoYV9zY2FsZSA9IDA7CisrICAgIHVpbnQgcmVk X3NoaWZ0ID0gMDsKKysgICAgdWludCBncmVlbl9zaGlmdCA9IDA7CisrICAgIHVpbnQgYmx1ZV9z aGlmdCA9IDA7CisrICAgIHVpbnQgYWxwaGFfc2hpZnQgPSAwOworKyAgICB1aW50IHJlZF9zY2Fs ZSA9IDA7CisrICAgIHVpbnQgZ3JlZW5fc2NhbGUgPSAwOworKyAgICB1aW50IGJsdWVfc2NhbGUg PSAwOworKyAgICB1aW50IGFscGhhX3NjYWxlID0gMDsKKyAKKyAgICAgaWYgKCFkLT5pc1NlcXVl bnRpYWwoKSkKKyAgICAgICAgIGQtPnNlZWsoc3RhcnRwb3MgKyBCTVBfRklMRUhEUl9TSVpFICsg YmkuYmlTaXplKTsgLy8gZ290byBzdGFydCBvZiBjb2xvcm1hcCBvciBtYXNrcworQEAgLTMwOCwx OSArMzM0LDE5IEBAIHN0YXRpYyBib29sIHJlYWRfZGliX2JvZHkoUURhdGFTdHJlYW0gJnMsIGNv bnN0IEJNUF9JTkZPSERSICZiaSwgcWludDY0IG9mZnNldCwKKyAgICAgICAgIHJlZF9zaGlmdCA9 IGNhbGNfc2hpZnQocmVkX21hc2spOworICAgICAgICAgaWYgKCgocmVkX21hc2sgPj4gcmVkX3No aWZ0KSArIDEpID09IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgcmVk X3NjYWxlID0gMjU2IC8gKChyZWRfbWFzayA+PiByZWRfc2hpZnQpICsgMSk7CisrICAgICAgICBy ZWRfc2NhbGUgPSBjYWxjX3NjYWxlKHJlZF9tYXNrID4+IHJlZF9zaGlmdCk7CisgICAgICAgICBn cmVlbl9zaGlmdCA9IGNhbGNfc2hpZnQoZ3JlZW5fbWFzayk7CisgICAgICAgICBpZiAoKChncmVl bl9tYXNrID4+IGdyZWVuX3NoaWZ0KSArIDEpID09IDApCisgICAgICAgICAgICAgcmV0dXJuIGZh bHNlOworLSAgICAgICAgZ3JlZW5fc2NhbGUgPSAyNTYgLyAoKGdyZWVuX21hc2sgPj4gZ3JlZW5f c2hpZnQpICsgMSk7CisrICAgICAgICBncmVlbl9zY2FsZSA9IGNhbGNfc2NhbGUoZ3JlZW5fbWFz ayA+PiBncmVlbl9zaGlmdCk7CisgICAgICAgICBibHVlX3NoaWZ0ID0gY2FsY19zaGlmdChibHVl X21hc2spOworICAgICAgICAgaWYgKCgoYmx1ZV9tYXNrID4+IGJsdWVfc2hpZnQpICsgMSkgPT0g MCkKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgICAgICBibHVlX3NjYWxlID0gMjU2 IC8gKChibHVlX21hc2sgPj4gYmx1ZV9zaGlmdCkgKyAxKTsKKysgICAgICAgIGJsdWVfc2NhbGUg PSBjYWxjX3NjYWxlKGJsdWVfbWFzayA+PiBibHVlX3NoaWZ0KTsKKyAgICAgICAgIGFscGhhX3No aWZ0ID0gY2FsY19zaGlmdChhbHBoYV9tYXNrKTsKKyAgICAgICAgIGlmICgoKGFscGhhX21hc2sg Pj4gYWxwaGFfc2hpZnQpICsgMSkgPT0gMCkKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cist ICAgICAgICBhbHBoYV9zY2FsZSA9IDI1NiAvICgoYWxwaGFfbWFzayA+PiBhbHBoYV9zaGlmdCkg KyAxKTsKKysgICAgICAgIGFscGhhX3NjYWxlID0gY2FsY19zY2FsZShhbHBoYV9tYXNrID4+IGFs cGhhX3NoaWZ0KTsKKyAgICAgfSBlbHNlIGlmIChjb21wID09IEJNUF9SR0IgJiYgKG5iaXRzID09 IDI0IHx8IG5iaXRzID09IDMyKSkgeworICAgICAgICAgYmx1ZV9tYXNrID0gMHgwMDAwMDBmZjsK KyAgICAgICAgIGdyZWVuX21hc2sgPSAweDAwMDBmZjAwOworQEAgLTMyOCwxNyArMzU0LDE1IEBA IHN0YXRpYyBib29sIHJlYWRfZGliX2JvZHkoUURhdGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZP SERSICZiaSwgcWludDY0IG9mZnNldCwKKyAgICAgICAgIGJsdWVfc2hpZnQgPSAwOworICAgICAg ICAgZ3JlZW5fc2hpZnQgPSA4OworICAgICAgICAgcmVkX3NoaWZ0ID0gMTY7CistICAgICAgICBi bHVlX3NjYWxlID0gZ3JlZW5fc2NhbGUgPSByZWRfc2NhbGUgPSAxOworKyAgICAgICAgYmx1ZV9z Y2FsZSA9IGdyZWVuX3NjYWxlID0gcmVkX3NjYWxlID0gMDsKKyAgICAgfSBlbHNlIGlmIChjb21w ID09IEJNUF9SR0IgJiYgbmJpdHMgPT0gMTYpIHsKKyAgICAgICAgIGJsdWVfbWFzayA9IDB4MDAx ZjsKKyAgICAgICAgIGdyZWVuX21hc2sgPSAweDAzZTA7CisgICAgICAgICByZWRfbWFzayA9IDB4 N2MwMDsKKyAgICAgICAgIGJsdWVfc2hpZnQgPSAwOworLSAgICAgICAgZ3JlZW5fc2hpZnQgPSAy OworLSAgICAgICAgcmVkX3NoaWZ0ID0gNzsKKy0gICAgICAgIHJlZF9zY2FsZSA9IDE7CistICAg ICAgICBncmVlbl9zY2FsZSA9IDE7CistICAgICAgICBibHVlX3NjYWxlID0gODsKKysgICAgICAg IGdyZWVuX3NoaWZ0ID0gNTsKKysgICAgICAgIHJlZF9zaGlmdCA9IDEwOworKyAgICAgICAgYmx1 ZV9zY2FsZSA9IGdyZWVuX3NjYWxlID0gcmVkX3NjYWxlID0gMzsKKyAgICAgfQorIAorICNpZiAw CitAQCAtNTQ0LDEwICs1NjgsMTAgQEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9keShRRGF0YVN0 cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAorICAgICAgICAg ICAgICAgICAgICAgYyB8PSAqKHVjaGFyKikoYisyKTw8MTY7CisgICAgICAgICAgICAgICAgIGlm IChuYml0cyA+IDI0KQorICAgICAgICAgICAgICAgICAgICAgYyB8PSAqKHVjaGFyKikoYiszKTw8 MjQ7CistICAgICAgICAgICAgICAgICpwKysgPSBxUmdiYSgoKGMgJiByZWRfbWFzaykgPj4gcmVk X3NoaWZ0KSAqIHJlZF9zY2FsZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKChjICYgZ3JlZW5fbWFzaykgPj4gZ3JlZW5fc2hpZnQpICogZ3JlZW5fc2NhbGUsCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYyAmIGJsdWVfbWFzaykg Pj4gYmx1ZV9zaGlmdCkgKiBibHVlX3NjYWxlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0cmFuc3AgPyAoKGMgJiBhbHBoYV9tYXNrKSA+PiBhbHBoYV9zaGlmdCkg KiBhbHBoYV9zY2FsZSA6IDB4ZmYpOworKyAgICAgICAgICAgICAgICAqcCsrID0gcVJnYmEoYXBw bHlfc2NhbGUoKGMgJiByZWRfbWFzaykgPj4gcmVkX3NoaWZ0LCByZWRfc2NhbGUpLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlfc2NhbGUoKGMgJiBncmVlbl9tYXNrKSA+PiBn cmVlbl9zaGlmdCwgZ3JlZW5fc2NhbGUpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YXBwbHlfc2NhbGUoKGMgJiBibHVlX21hc2spID4+IGJsdWVfc2hpZnQsIGJsdWVfc2NhbGUpLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwID8gYXBwbHlfc2NhbGUoKGMgJiBh bHBoYV9tYXNrKSA+PiBhbHBoYV9zaGlmdCwgYWxwaGFfc2NhbGUpIDogMHhmZik7CisgICAgICAg ICAgICAgICAgIGIgKz0gbmJpdHMvODsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcCBiL3F0YmFzZS9zcmMvZ3Vp L2ltYWdlL3FpbWFnZS5jcHAKK2luZGV4IDcxNTJhYzE2MDcuLjBkZjc3MjU2NGMgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xaW1hZ2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1 aS9pbWFnZS9xaW1hZ2UuY3BwCitAQCAtNDY5NCw2ICs0Njk0LDggQEAgUUltYWdlIFFJbWFnZTo6 c21vb3RoU2NhbGVkKGludCB3LCBpbnQgaCkgY29uc3QgeworIHN0YXRpYyBRSW1hZ2Ugcm90YXRl ZDkwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgeworICAgICBRSW1hZ2Ugb3V0KGltYWdlLmhlaWdo dCgpLCBpbWFnZS53aWR0aCgpLCBpbWFnZS5mb3JtYXQoKSk7CisrICAgIGlmIChvdXQuaXNOdWxs KCkpCisrICAgICAgICByZXR1cm4gb3V0OworICAgICBjb3B5TWV0YWRhdGEoJm91dCwgaW1hZ2Up OworICAgICBpZiAoaW1hZ2UuY29sb3JDb3VudCgpID4gMCkKKyAgICAgICAgIG91dC5zZXRDb2xv clRhYmxlKGltYWdlLmNvbG9yVGFibGUoKSk7CitAQCAtNDcyMiw2ICs0NzI0LDggQEAgc3RhdGlj IFFJbWFnZSByb3RhdGVkMTgwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgICAgICAgICByZXR1cm4g aW1hZ2UubWlycm9yZWQodHJ1ZSwgdHJ1ZSk7CisgCisgICAgIFFJbWFnZSBvdXQoaW1hZ2Uud2lk dGgoKSwgaW1hZ2UuaGVpZ2h0KCksIGltYWdlLmZvcm1hdCgpKTsKKysgICAgaWYgKG91dC5pc051 bGwoKSkKKysgICAgICAgIHJldHVybiBvdXQ7CisgICAgIGNvcHlNZXRhZGF0YSgmb3V0LCBpbWFn ZSk7CisgICAgIGlmIChpbWFnZS5jb2xvckNvdW50KCkgPiAwKQorICAgICAgICAgb3V0LnNldENv bG9yVGFibGUoaW1hZ2UuY29sb3JUYWJsZSgpKTsKK0BAIC00NzM0LDYgKzQ3MzgsOCBAQCBzdGF0 aWMgUUltYWdlIHJvdGF0ZWQxODAoY29uc3QgUUltYWdlICZpbWFnZSkKKyBzdGF0aWMgUUltYWdl IHJvdGF0ZWQyNzAoY29uc3QgUUltYWdlICZpbWFnZSkKKyB7CisgICAgIFFJbWFnZSBvdXQoaW1h Z2UuaGVpZ2h0KCksIGltYWdlLndpZHRoKCksIGltYWdlLmZvcm1hdCgpKTsKKysgICAgaWYgKG91 dC5pc051bGwoKSkKKysgICAgICAgIHJldHVybiBvdXQ7CisgICAgIGNvcHlNZXRhZGF0YSgmb3V0 LCBpbWFnZSk7CisgICAgIGlmIChpbWFnZS5jb2xvckNvdW50KCkgPiAwKQorICAgICAgICAgb3V0 LnNldENvbG9yVGFibGUoaW1hZ2UuY29sb3JUYWJsZSgpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2d1aS9rZXJuZWwvcWN1cnNvci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWN1cnNv ci5jcHAKK2luZGV4IGQ2Y2NhZmY4ZWQuLjQ1NTA4ODI0MWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2d1aS9rZXJuZWwvcWN1cnNvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9x Y3Vyc29yLmNwcAorQEAgLTI1MSw3ICsyNTEsOCBAQCB2b2lkIFFDdXJzb3I6OnNldFBvcyhRU2Ny ZWVuICpzY3JlZW4sIGludCB4LCBpbnQgeSkKKyB7CisgICAgIGlmIChzY3JlZW4pIHsKKyAgICAg ICAgIGlmIChRUGxhdGZvcm1DdXJzb3IgKmN1cnNvciA9IHNjcmVlbi0+aGFuZGxlKCktPmN1cnNv cigpKSB7CistICAgICAgICAgICAgY29uc3QgUVBvaW50IGRldmljZVBvcyA9IFFIaWdoRHBpOjp0 b05hdGl2ZVBpeGVscyhRUG9pbnQoeCwgeSksIHNjcmVlbik7CisrICAgICAgICAgICAgY29uc3Qg UVBvaW50IHBvcyh4LCB5KTsKKysgICAgICAgICAgICBjb25zdCBRUG9pbnQgZGV2aWNlUG9zID0g UUhpZ2hEcGk6OnRvTmF0aXZlUGl4ZWxzKHBvcywgc2NyZWVuLT52aXJ0dWFsU2libGluZ0F0KHBv cykpOworICAgICAgICAgICAgIC8vIE5lZWQgdG8gY2hlY2ssIHNpbmNlIHNvbWUgWCBzZXJ2ZXJz IGdlbmVyYXRlIG51bGwgbW91c2UgbW92ZQorICAgICAgICAgICAgIC8vIGV2ZW50cywgY2F1c2lu ZyBsb29waW5nIGluIGFwcGxpY2F0aW9ucyB3aGljaCBjYWxsIHNldFBvcygpIG9uCisgICAgICAg ICAgICAgLy8gZXZlcnkgbW91c2UgbW92ZSBldmVudC4KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2d1aS9rZXJuZWwvcWhpZ2hkcGlzY2FsaW5nLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9x aGlnaGRwaXNjYWxpbmcuY3BwCitpbmRleCA5YmJmMjc3M2E5Li4zYWM0YTRkOGI2IDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvZ3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcuY3BwCitAQCAtNTgwLDkgKzU4MCw4 IEBAIHZvaWQgUUhpZ2hEcGlTY2FsaW5nOjpzZXRTY3JlZW5GYWN0b3IoUVNjcmVlbiAqc2NyZWVu LCBxcmVhbCBmYWN0b3IpCisgICAgIGVsc2UKKyAgICAgICAgIHFOYW1lZFNjcmVlblNjYWxlRmFj dG9ycygpLT5pbnNlcnQobmFtZSwgZmFjdG9yKTsKKyAKKy0gICAgLy8gaGFjayB0byBmb3JjZSBy ZS1ldmFsdWF0aW9uIG9mIHNjcmVlbiBnZW9tZXRyeQorICAgICBpZiAoc2NyZWVuLT5oYW5kbGUo KSkKKy0gICAgICAgIHNjcmVlbi0+ZF9mdW5jKCktPnNldFBsYXRmb3JtU2NyZWVuKHNjcmVlbi0+ aGFuZGxlKCkpOyAvLyB1cGRhdGVzIGdlb21ldHJpZXMgYmFzZWQgb24gc2NhbGUgZmFjdG9yCisr ICAgICAgICBzY3JlZW4tPmRfZnVuYygpLT51cGRhdGVMb2dpY2FsRHBpKCk7CisgfQorIAorIFFQ b2ludCBRSGlnaERwaVNjYWxpbmc6Om1hcFBvc2l0aW9uVG9OYXRpdmUoY29uc3QgUVBvaW50ICZw b3MsIGNvbnN0IFFQbGF0Zm9ybVNjcmVlbiAqcGxhdGZvcm1TY3JlZW4pCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9r ZXJuZWwvcWtleXNlcXVlbmNlLmNwcAoraW5kZXggYTc1YjhlZjkyMC4uNGYyZDI5NDczOSAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3BwCisrKysgYi9x dGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlLmNwcAorQEAgLTcwMSw2ICs3MDEsMTAg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCB7CisgICAgIHsgUXQ6OktleV9Ub3VjaHBhZFRvZ2dsZSwg IFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiVG91Y2hwYWQgVG9nZ2xlIikgfSwKKyAg ICAgeyBRdDo6S2V5X1RvdWNocGFkT24sICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0Iiwg IlRvdWNocGFkIE9uIikgfSwKKyAgICAgeyBRdDo6S2V5X1RvdWNocGFkT2ZmLCAgUVRfVFJBTlNM QVRFX05PT1AoIlFTaG9ydGN1dCIsICJUb3VjaHBhZCBPZmYiKSB9LAorKyAgICB7IFF0OjpLZXlf U2hpZnQsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlNoaWZ0IikgfSwKKysgICAg eyBRdDo6S2V5X0NvbnRyb2wsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIkNvbnRy b2wiKSB9LAorKyAgICB7IFF0OjpLZXlfQWx0LCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1 dCIsICJBbHQiKSB9LAorKyAgICB7IFF0OjpLZXlfTWV0YSwgIFFUX1RSQU5TTEFURV9OT09QKCJR U2hvcnRjdXQiLCAiTWV0YSIpIH0sCisgCisgfTsKKyBzdGF0aWMgUV9DT05TVEVYUFIgaW50IG51 bUtleU5hbWVzID0gc2l6ZW9mIGtleW5hbWUgLyBzaXplb2YgKmtleW5hbWU7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmNwcCBiL3F0YmFzZS9z cmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAKK2luZGV4IGZkYzZhNmM0YWEuLmFj NDdmOThjNWQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2Vy dmljZXMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMu Y3BwCitAQCAtNTUsNiArNTUsMTkgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgICAgIFxicmllZiBU aGUgUVBsYXRmb3JtU2VydmljZXMgcHJvdmlkZXMgdGhlIGJhY2tlbmQgZm9yIGRlc2t0b3AtcmVs YXRlZCBmdW5jdGlvbmFsaXR5LgorICovCisgCisrLyohCisrICAgIFxlbnVtIFFQbGF0Zm9ybVNl cnZpY2VzOjpDYXBhYmlsaXR5CisrCisrICAgIENhcGFiaWxpdGllcyBhcmUgdXNlZCB0byBkZXRl cm1pbmUgYSBzcGVjaWZpYyBwbGF0Zm9ybSBzZXJ2aWNlJ3MgYXZhaWxhYmlsaXR5LgorKworKyAg ICBcdmFsdWUgQ29sb3JQaWNraW5nRnJvbVNjcmVlbiBUaGUgcGxhdGZvcm0gbmF0aXZlbHkgc3Vw cG9ydHMgY29sb3IgcGlja2luZyBmcm9tIHNjcmVlbi4KKysgICAgVGhpcyBjYXBhYmlsaXR5IGlu ZGljYXRlcyB0aGF0IHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyAib3BhcXVlIiBjb2xvciBwaWNraW5n LCB3aGVyZSB0aGUKKysgICAgcGxhdGZvcm0gaW1wbGVtZW50cyBhIGNvbXBsZXRlIHVzZXIgZXhw ZXJpZW5jZSBmb3IgY29sb3IgcGlja2luZyBhbmQgb3V0cHV0cyBhIGNvbG9yLgorKyAgICBUaGlz IGlzIGluIGNvbnRyYXN0IHRvIHRoZSBhcHBsaWNhdGlvbiBpbXBsZW1lbnRpbmcgdGhlIGNvbG9y IHBpY2tpbmcgdXNlciBleHBlcmllbmNlCisrICAgICh0YWtpbmcgY2FyZSBvZiBzaG93aW5nIGEg Y3Jvc3MgaGFpciwgaW5zdHJ1Y3RpbmcgdGhlIHBsYXRmb3JtIGludGVncmF0aW9uIHRvIG9idGFp bgorKyAgICB0aGUgY29sb3IgYXQgYSBnaXZlbiBwaXhlbCwgZXRjLikuIFRoZSByZWxhdGVkIHNl cnZpY2UgZnVuY3Rpb24gaXMgcGlja0NvbG9yKCkuCisrICovCisrCisgUVBsYXRmb3JtU2Vydmlj ZXM6OlFQbGF0Zm9ybVNlcnZpY2VzKCkKKyB7IH0KKyAKK0BAIC04NSw1ICs5OCwxNiBAQCBRQnl0 ZUFycmF5IFFQbGF0Zm9ybVNlcnZpY2VzOjpkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdAorICAg ICByZXR1cm4gUUJ5dGVBcnJheSgiVU5LTk9XTiIpOworIH0KKyAKKytRUGxhdGZvcm1TZXJ2aWNl Q29sb3JQaWNrZXIgKlFQbGF0Zm9ybVNlcnZpY2VzOjpjb2xvclBpY2tlcihRV2luZG93ICpwYXJl bnQpCisreworKyAgICBRX1VOVVNFRChwYXJlbnQpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKyt9 CisrCisrYm9vbCBRUGxhdGZvcm1TZXJ2aWNlczo6aGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNh cGFiaWxpdHkpIGNvbnN0CisreworKyAgICBRX1VOVVNFRChjYXBhYmlsaXR5KQorKyAgICByZXR1 cm4gZmFsc2U7CisrfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuaCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5l bC9xcGxhdGZvcm1zZXJ2aWNlcy5oCitpbmRleCA1ZGU5NmNmYTdkLi5hOGIyYTRjZTcxIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmgKKysrKyBi L3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5oCitAQCAtNTAsMTYgKzUw LDMyIEBACisgLy8KKyAKKyAjaW5jbHVkZSA8UXRHdWkvcXRndWlnbG9iYWwuaD4KKysjaW5jbHVk ZSA8UXRDb3JlL3FvYmplY3QuaD4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBjbGFzcyBR VXJsOworK2NsYXNzIFFXaW5kb3c7CisrCisrY2xhc3MgUV9HVUlfRVhQT1JUIFFQbGF0Zm9ybVNl cnZpY2VDb2xvclBpY2tlciA6IHB1YmxpYyBRT2JqZWN0CisreworKyAgICBRX09CSkVDVAorK3B1 YmxpYzoKKysgICAgdXNpbmcgUU9iamVjdDo6UU9iamVjdDsKKysgICAgdmlydHVhbCB2b2lkIHBp Y2tDb2xvcigpID0gMDsKKytRX1NJR05BTFM6CisrICAgIHZvaWQgY29sb3JQaWNrZWQoY29uc3Qg UUNvbG9yICZjb2xvcik7CisrfTsKKyAKKyBjbGFzcyBRX0dVSV9FWFBPUlQgUVBsYXRmb3JtU2Vy dmljZXMKKyB7CisgcHVibGljOgorICAgICBRX0RJU0FCTEVfQ09QWV9NT1ZFKFFQbGF0Zm9ybVNl cnZpY2VzKQorIAorKyAgICBlbnVtIENhcGFiaWxpdHkgeworKyAgICAgICAgQ29sb3JQaWNraW5n LAorKyAgICB9OworKworICAgICBRUGxhdGZvcm1TZXJ2aWNlcygpOworICAgICB2aXJ0dWFsIH5R UGxhdGZvcm1TZXJ2aWNlcygpIHsgfQorIAorQEAgLTY3LDYgKzgzLDEwIEBAIHB1YmxpYzoKKyAg ICAgdmlydHVhbCBib29sIG9wZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwpOworIAorICAgICB2 aXJ0dWFsIFFCeXRlQXJyYXkgZGVza3RvcEVudmlyb25tZW50KCkgY29uc3Q7CisrCisrICAgIHZp cnR1YWwgYm9vbCBoYXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkgY29uc3Q7Cisr CisrICAgIHZpcnR1YWwgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpjb2xvclBpY2tlcihR V2luZG93ICpwYXJlbnQgPSBudWxscHRyKTsKKyB9OworIAorIFFUX0VORF9OQU1FU1BBQ0UKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuY3BwIGIvcXRi YXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmNwcAoraW5kZXggNzE1MjFjMDMzOS4u MjMyNTg3MzI0NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10 aGVtZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5jcHAK K0BAIC0xNjMsNiArMTYzLDggQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgICAgIFx2YWx1ZSBT aG93U2hvcnRjdXRzSW5Db250ZXh0TWVudXMgKGJvb2wpIFdoZXRoZXIgdG8gZGlzcGxheSBzaG9y dGN1dCBrZXkgc2VxdWVuY2VzIGluIGNvbnRleHQgbWVudXMuCisgCisrICAgIFx2YWx1ZSBCdXR0 b25QcmVzc0tleXMgKFFMaXN0PFF0OjpLZXk+KSBBIGxpc3Qgb2Yga2V5cyB0aGF0IGNhbiBiZSB1 c2VkIHRvIHByZXNzIGJ1dHRvbnMgdmlhIGtleWJvYXJkIGlucHV0LgorKworICAgICBcc2EgdGhl bWVIaW50KCksIFFTdHlsZTo6cGl4ZWxNZXRyaWMoKQorICovCisgCitAQCAtNTYzLDYgKzU2NSw4 IEBAIFFWYXJpYW50IFFQbGF0Zm9ybVRoZW1lOjpkZWZhdWx0VGhlbWVIaW50KFRoZW1lSGludCBo aW50KQorICAgICAgICAgfQorICAgICBjYXNlIE1vdXNlUXVpY2tTZWxlY3Rpb25UaHJlc2hvbGQ6 CisgICAgICAgICByZXR1cm4gUVZhcmlhbnQoMTApOworKyAgICBjYXNlIEJ1dHRvblByZXNzS2V5 czoKKysgICAgICAgIHJldHVybiBRVmFyaWFudDo6ZnJvbVZhbHVlKFFMaXN0PFF0OjpLZXk+KHsg UXQ6OktleV9TcGFjZSwgUXQ6OktleV9TZWxlY3QgfSkpOworICAgICB9CisgICAgIHJldHVybiBR VmFyaWFudCgpOworIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRm b3JtdGhlbWUuaCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5oCitpbmRl eCAzMTg1ZmM0NTQxLi43ZTZjOWQ1NzQwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2Vy bmVsL3FwbGF0Zm9ybXRoZW1lLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZv cm10aGVtZS5oCitAQCAtMTIwLDcgKzEyMCw4IEBAIHB1YmxpYzoKKyAgICAgICAgIFRvdWNoRG91 YmxlVGFwRGlzdGFuY2UsCisgICAgICAgICBTaG93U2hvcnRjdXRzSW5Db250ZXh0TWVudXMsCisg ICAgICAgICBJY29uRmFsbGJhY2tTZWFyY2hQYXRocywKKy0gICAgICAgIE1vdXNlUXVpY2tTZWxl Y3Rpb25UaHJlc2hvbGQKKysgICAgICAgIE1vdXNlUXVpY2tTZWxlY3Rpb25UaHJlc2hvbGQsCisr ICAgICAgICBCdXR0b25QcmVzc0tleXMKKyAgICAgfTsKKyAKKyAgICAgZW51bSBEaWFsb2dUeXBl IHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAgYi9xdGJh c2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAKK2luZGV4IDhlMGViMzUxMTYuLjVkMTcyYTU4 ZGQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAKKysrKyBi L3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuLmNwcAorQEAgLTc3LDYgKzc3LDEyIEBAIFFT Y3JlZW46OlFTY3JlZW4oUVBsYXRmb3JtU2NyZWVuICpzY3JlZW4pCisgICAgIGQtPnNldFBsYXRm b3JtU2NyZWVuKHNjcmVlbik7CisgfQorIAorK3ZvaWQgUVNjcmVlblByaXZhdGU6OnVwZGF0ZUxv Z2ljYWxEcGkoKQorK3sKKysgICAgbG9naWNhbERwaSA9IFFQbGF0Zm9ybVNjcmVlbjo6b3ZlcnJp ZGVEcGkocGxhdGZvcm1TY3JlZW4tPmxvZ2ljYWxEcGkoKSk7CisrICAgIHVwZGF0ZUdlb21ldHJp ZXNXaXRoU2lnbmFscygpOyAvLyB1cGRhdGVzIGdlb21ldHJpZXMgYmFzZWQgb24gc2NhbGUgZmFj dG9yCisrfQorKworIHZvaWQgUVNjcmVlblByaXZhdGU6OnVwZGF0ZUdlb21ldHJpZXNXaXRoU2ln bmFscygpCisgeworICAgICBjb25zdCBRUmVjdCBvbGRHZW9tZXRyeSA9IGdlb21ldHJ5OworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaCBiL3F0YmFzZS9zcmMv Z3VpL2tlcm5lbC9xc2NyZWVuX3AuaAoraW5kZXggN2RhNTQyYzI1ZS4uZTUwZmMzMTkwYiAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaAorKysrIGIvcXRiYXNl L3NyYy9ndWkva2VybmVsL3FzY3JlZW5fcC5oCitAQCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6Cisg ICAgICAgICBnZW9tZXRyeSA9IHBsYXRmb3JtU2NyZWVuLT5kZXZpY2VJbmRlcGVuZGVudEdlb21l dHJ5KCk7CisgICAgICAgICBhdmFpbGFibGVHZW9tZXRyeSA9IFFIaWdoRHBpOjpmcm9tTmF0aXZl KHBsYXRmb3JtU2NyZWVuLT5hdmFpbGFibGVHZW9tZXRyeSgpLCBRSGlnaERwaVNjYWxpbmc6OmZh Y3RvcihwbGF0Zm9ybVNjcmVlbiksIGdlb21ldHJ5LnRvcExlZnQoKSk7CisgICAgIH0KKysgICAg dm9pZCB1cGRhdGVMb2dpY2FsRHBpKCk7CisgCisgICAgIHZvaWQgdXBkYXRlUHJpbWFyeU9yaWVu dGF0aW9uKCk7CisgICAgIHZvaWQgdXBkYXRlR2VvbWV0cmllc1dpdGhTaWduYWxzKCk7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWJsZW5kZnVuY3Rpb25zX3AuaCBiL3F0 YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0aW9uc19wLmgKK2luZGV4IDA4MGRhOThl YzQuLjY5OTdkNjJiM2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxl bmRmdW5jdGlvbnNfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxlbmRmdW5j dGlvbnNfcC5oCitAQCAtMjQ2LDI1ICsyNDYsMzIgQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1hZ2Vf cmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGR1ZHgsIGludCBkdmR4LCBpbnQgZHVkeSwgaW50IGR2ZHks IGludCB1MCwgaW50IHYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbGVu ZGVyIGJsZW5kZXIpCisgeworLSAgICBpbnQgZnJvbVkgPSBxTWF4KHFSb3VuZCh0b3BZKSwgY2xp cC50b3AoKSk7CistICAgIGludCB0b1kgPSBxTWluKHFSb3VuZChib3R0b21ZKSwgY2xpcC50b3Ao KSArIGNsaXAuaGVpZ2h0KCkpOworKyAgICBxaW50NjQgZnJvbVkgPSBxTWF4KHFSb3VuZCh0b3BZ KSwgY2xpcC50b3AoKSk7CisrICAgIHFpbnQ2NCB0b1kgPSBxTWluKHFSb3VuZChib3R0b21ZKSwg Y2xpcC50b3AoKSArIGNsaXAuaGVpZ2h0KCkpOworICAgICBpZiAoZnJvbVkgPj0gdG9ZKQorICAg ICAgICAgcmV0dXJuOworIAorICAgICBxcmVhbCBsZWZ0U2xvcGUgPSAoYm90dG9tTGVmdC54IC0g dG9wTGVmdC54KSAvIChib3R0b21MZWZ0LnkgLSB0b3BMZWZ0LnkpOworICAgICBxcmVhbCByaWdo dFNsb3BlID0gKGJvdHRvbVJpZ2h0LnggLSB0b3BSaWdodC54KSAvIChib3R0b21SaWdodC55IC0g dG9wUmlnaHQueSk7CistICAgIGludCBkeF9sID0gaW50KGxlZnRTbG9wZSAqIDB4MTAwMDApOwor LSAgICBpbnQgZHhfciA9IGludChyaWdodFNsb3BlICogMHgxMDAwMCk7CistICAgIGludCB4X2wg PSBpbnQoKHRvcExlZnQueCArIChxcmVhbCgwLjUpICsgZnJvbVkgLSB0b3BMZWZ0LnkpICogbGVm dFNsb3BlICsgcXJlYWwoMC41KSkgKiAweDEwMDAwKTsKKy0gICAgaW50IHhfciA9IGludCgodG9w UmlnaHQueCArIChxcmVhbCgwLjUpICsgZnJvbVkgLSB0b3BSaWdodC55KSAqIHJpZ2h0U2xvcGUg KyBxcmVhbCgwLjUpKSAqIDB4MTAwMDApOworLQorLSAgICBpbnQgZnJvbVgsIHRvWCwgeDEsIHgy LCB1LCB2LCBpLCBpaTsKKysgICAgcWludDY0IGR4X2wgPSBxaW50NjQobGVmdFNsb3BlICogMHgx MDAwMCk7CisrICAgIHFpbnQ2NCBkeF9yID0gcWludDY0KHJpZ2h0U2xvcGUgKiAweDEwMDAwKTsK KysgICAgcWludDY0IHhfbCA9IHFpbnQ2NCgodG9wTGVmdC54ICsgKHFyZWFsKDAuNSkgKyBmcm9t WSAtIHRvcExlZnQueSkgKiBsZWZ0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4MTAwMDApOworKyAg ICBxaW50NjQgeF9yID0gcWludDY0KCh0b3BSaWdodC54ICsgKHFyZWFsKDAuNSkgKyBmcm9tWSAt IHRvcFJpZ2h0LnkpICogcmlnaHRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgxMDAwMCk7CisrCisr ICAgIHFpbnQ2NCBzb3VyY2VSZWN0VG9wID0gcWludDY0KHNvdXJjZVJlY3QudG9wKCkpOworKyAg ICBxaW50NjQgc291cmNlUmVjdExlZnQgPSBxaW50NjQoc291cmNlUmVjdC5sZWZ0KCkpOworKyAg ICBxaW50NjQgc291cmNlUmVjdFdpZHRoID0gcWludDY0KHNvdXJjZVJlY3Qud2lkdGgoKSk7Cisr ICAgIHFpbnQ2NCBzb3VyY2VSZWN0SGVpZ2h0ID0gcWludDY0KHNvdXJjZVJlY3QuaGVpZ2h0KCkp OworKyAgICBxaW50NjQgY2xpcExlZnQgPSBxaW50NjQoY2xpcC5sZWZ0KCkpOworKyAgICBxaW50 NjQgY2xpcFdpZHRoID0gcWludDY0KGNsaXAud2lkdGgoKSk7CisrCisrICAgIHFpbnQ2NCBmcm9t WCwgdG9YLCB4MSwgeDIsIHUsIHYsIGksIGlpOworICAgICBEZXN0VCAqbGluZTsKKy0gICAgZm9y IChpbnQgeSA9IGZyb21ZOyB5IDwgdG9ZOyArK3kpIHsKKysgICAgZm9yIChxaW50NjQgeSA9IGZy b21ZOyB5IDwgdG9ZOyArK3kpIHsKKyAgICAgICAgIGxpbmUgPSByZWludGVycHJldF9jYXN0PERl c3RUICo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWNoYXIgKj4oZGVzdFBpeGVscykgKyB5ICogZGJwbCk7 CisgCistICAgICAgICBmcm9tWCA9IHFNYXgoeF9sID4+IDE2LCBjbGlwLmxlZnQoKSk7CistICAg ICAgICB0b1ggPSBxTWluKHhfciA+PiAxNiwgY2xpcC5sZWZ0KCkgKyBjbGlwLndpZHRoKCkpOwor KyAgICAgICAgZnJvbVggPSBxTWF4KHhfbCA+PiAxNiwgY2xpcExlZnQpOworKyAgICAgICAgdG9Y ID0gcU1pbih4X3IgPj4gMTYsIGNsaXBMZWZ0ICsgY2xpcFdpZHRoKTsKKyAgICAgICAgIGlmIChm cm9tWCA8IHRvWCkgeworICAgICAgICAgICAgIC8vIEJlY2F1c2Ugb2Ygcm91bmRpbmcsIHdlIGNh biBnZXQgc291cmNlIGNvb3JkaW5hdGVzIG91dHNpZGUgdGhlIHNvdXJjZSBpbWFnZS4KKyAgICAg ICAgICAgICAvLyBDbGFtcCB0aGVzZSBjb29yZGluYXRlcyB0byB0aGUgc291cmNlIHJlY3QgdG8g YXZvaWQgc2VnbWVudGF0aW9uIGZhdWx0IGFuZAorQEAgLTI3NSwxMCArMjgyLDEwIEBAIHZvaWQg cXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGws CisgICAgICAgICAgICAgdSA9IHgxICogZHVkeCArIHkgKiBkdWR5ICsgdTA7CisgICAgICAgICAg ICAgdiA9IHgxICogZHZkeCArIHkgKiBkdmR5ICsgdjA7CisgICAgICAgICAgICAgZm9yICg7IHgx IDwgdG9YOyArK3gxKSB7CistICAgICAgICAgICAgICAgIGludCB1dSA9IHUgPj4gMTY7CistICAg ICAgICAgICAgICAgIGludCB2diA9IHYgPj4gMTY7CistICAgICAgICAgICAgICAgIGlmICh1dSA+ PSBzb3VyY2VSZWN0LmxlZnQoKSAmJiB1dSA8IHNvdXJjZVJlY3QubGVmdCgpICsgc291cmNlUmVj dC53aWR0aCgpCistICAgICAgICAgICAgICAgICAgICAmJiB2diA+PSBzb3VyY2VSZWN0LnRvcCgp ICYmIHZ2IDwgc291cmNlUmVjdC50b3AoKSArIHNvdXJjZVJlY3QuaGVpZ2h0KCkpIHsKKysgICAg ICAgICAgICAgICAgcWludDY0IHV1ID0gdSA+PiAxNjsKKysgICAgICAgICAgICAgICAgcWludDY0 IHZ2ID0gdiA+PiAxNjsKKysgICAgICAgICAgICAgICAgaWYgKHV1ID49IHNvdXJjZVJlY3RMZWZ0 ICYmIHV1IDwgc291cmNlUmVjdExlZnQgKyBzb3VyY2VSZWN0V2lkdGgKKysgICAgICAgICAgICAg ICAgICAgICYmIHZ2ID49IHNvdXJjZVJlY3RUb3AgJiYgdnYgPCBzb3VyY2VSZWN0VG9wICsgc291 cmNlUmVjdEhlaWdodCkgeworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgdSArPSBkdWR4OworQEAgLTI5MCwxMCArMjk3LDEw IEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywg aW50IGRicGwsCisgICAgICAgICAgICAgdSA9ICh4MiAtIDEpICogZHVkeCArIHkgKiBkdWR5ICsg dTA7CisgICAgICAgICAgICAgdiA9ICh4MiAtIDEpICogZHZkeCArIHkgKiBkdmR5ICsgdjA7Cisg ICAgICAgICAgICAgZm9yICg7IHgyID4geDE7IC0teDIpIHsKKy0gICAgICAgICAgICAgICAgaW50 IHV1ID0gdSA+PiAxNjsKKy0gICAgICAgICAgICAgICAgaW50IHZ2ID0gdiA+PiAxNjsKKy0gICAg ICAgICAgICAgICAgaWYgKHV1ID49IHNvdXJjZVJlY3QubGVmdCgpICYmIHV1IDwgc291cmNlUmVj dC5sZWZ0KCkgKyBzb3VyY2VSZWN0LndpZHRoKCkKKy0gICAgICAgICAgICAgICAgICAgICYmIHZ2 ID49IHNvdXJjZVJlY3QudG9wKCkgJiYgdnYgPCBzb3VyY2VSZWN0LnRvcCgpICsgc291cmNlUmVj dC5oZWlnaHQoKSkgeworKyAgICAgICAgICAgICAgICBxaW50NjQgdXUgPSB1ID4+IDE2OworKyAg ICAgICAgICAgICAgICBxaW50NjQgdnYgPSB2ID4+IDE2OworKyAgICAgICAgICAgICAgICBpZiAo dXUgPj0gc291cmNlUmVjdExlZnQgJiYgdXUgPCBzb3VyY2VSZWN0TGVmdCArIHNvdXJjZVJlY3RX aWR0aAorKyAgICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNlUmVjdFRvcCAmJiB2diA8 IHNvdXJjZVJlY3RUb3AgKyBzb3VyY2VSZWN0SGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB1IC09IGR1ZHg7 CitAQCAtMzA4LDggKzMxNSw4IEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShE ZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisgICAgICAgICAgICAgLy8gQmVnaW5uaW5nIG9m IHRoZSBzY2FuIGxpbmUsIHdpdGggcGVyLXBpeGVsIGNoZWNrcy4KKyAgICAgICAgICAgICBpID0g eDEgLSBmcm9tWDsKKyAgICAgICAgICAgICB3aGlsZSAoaSkgeworLSAgICAgICAgICAgICAgICBp bnQgdXUgPSBxQm91bmQoc291cmNlUmVjdC5sZWZ0KCksIHUgPj4gMTYsIHNvdXJjZVJlY3QubGVm dCgpICsgc291cmNlUmVjdC53aWR0aCgpIC0gMSk7CistICAgICAgICAgICAgICAgIGludCB2diA9 IHFCb3VuZChzb3VyY2VSZWN0LnRvcCgpLCB2ID4+IDE2LCBzb3VyY2VSZWN0LnRvcCgpICsgc291 cmNlUmVjdC5oZWlnaHQoKSAtIDEpOworKyAgICAgICAgICAgICAgICBxaW50NjQgdXUgPSBxQm91 bmQoc291cmNlUmVjdExlZnQsIHUgPj4gMTYsIHNvdXJjZVJlY3RMZWZ0ICsgc291cmNlUmVjdFdp ZHRoIC0gMSk7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB2diA9IHFCb3VuZChzb3VyY2VSZWN0 VG9wLCB2ID4+IDE2LCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhlaWdodCAtIDEpOworICAg ICAgICAgICAgICAgICBibGVuZGVyLndyaXRlKGxpbmUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg U3JjVCAqPihyZWludGVycHJldF9jYXN0PGNvbnN0IHVjaGFyICo+KHNyY1BpeGVscykgKyB2diAq IHNicGwpW3V1XSk7CisgICAgICAgICAgICAgICAgIHUgKz0gZHVkeDsKKyAgICAgICAgICAgICAg ICAgdiArPSBkdmR4OworQEAgLTM0OCw4ICszNTUsOCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFn ZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBsLAorICAgICAgICAgICAgIC8v IEVuZCBvZiB0aGUgc2NhbiBsaW5lLCB3aXRoIHBlci1waXhlbCBjaGVja3MuCisgICAgICAgICAg ICAgaSA9IHRvWCAtIHgyOworICAgICAgICAgICAgIHdoaWxlIChpKSB7CistICAgICAgICAgICAg ICAgIGludCB1dSA9IHFCb3VuZChzb3VyY2VSZWN0LmxlZnQoKSwgdSA+PiAxNiwgc291cmNlUmVj dC5sZWZ0KCkgKyBzb3VyY2VSZWN0LndpZHRoKCkgLSAxKTsKKy0gICAgICAgICAgICAgICAgaW50 IHZ2ID0gcUJvdW5kKHNvdXJjZVJlY3QudG9wKCksIHYgPj4gMTYsIHNvdXJjZVJlY3QudG9wKCkg KyBzb3VyY2VSZWN0LmhlaWdodCgpIC0gMSk7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB1dSA9 IHFCb3VuZChzb3VyY2VSZWN0TGVmdCwgdSA+PiAxNiwgc291cmNlUmVjdExlZnQgKyBzb3VyY2VS ZWN0V2lkdGggLSAxKTsKKysgICAgICAgICAgICAgICAgcWludDY0IHZ2ID0gcUJvdW5kKHNvdXJj ZVJlY3RUb3AsIHYgPj4gMTYsIHNvdXJjZVJlY3RUb3AgKyBzb3VyY2VSZWN0SGVpZ2h0IC0gMSk7 CisgICAgICAgICAgICAgICAgIGJsZW5kZXIud3JpdGUobGluZSwgcmVpbnRlcnByZXRfY2FzdDxj b25zdCBTcmNUICo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWNoYXIgKj4oc3JjUGl4ZWxzKSAr IHZ2ICogc2JwbClbdXVdKTsKKyAgICAgICAgICAgICAgICAgdSArPSBkdWR4OworICAgICAgICAg ICAgICAgICB2ICs9IGR2ZHg7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cWNvbG9ydHJjbHV0X3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fjb2xvcnRyY2x1dF9w LmgKK2luZGV4IDc2YTZhNjA4MDMuLjI0ZmQ1MjJlNmMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2d1aS9wYWludGluZy9xY29sb3J0cmNsdXRfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWlu dGluZy9xY29sb3J0cmNsdXRfcC5oCitAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKKyAgICAg ICAgIHJldHVybiBRUmdiYTY0Ojpmcm9tUmdiYTY0KHIsIGcsIGIsIHFBbHBoYShyZ2IzMikgKiAy NTcpOworICNlbmRpZgorICAgICB9CisrICAgIFFSZ2JhNjQgdG9MaW5lYXI2NChRUmdiYTY0KSBj b25zdCA9IGRlbGV0ZTsKKyAKKyAgICAgUVJnYiB0b0xpbmVhcihRUmdiIHJnYjMyKSBjb25zdAor ICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIu Y3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIuY3BwCitpbmRleCBhNjE3 OTM1MDhhLi41YmEyZDI3N2I3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cWRyYXdoZWxwZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xZHJhd2hlbHBl ci5jcHAKK0BAIC02MDkxLDcgKzYwOTEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWxwaGFyZ2Ji bGVuZF9hcmdiMzIocXVpbnQzMiAqZHN0LCB1aW50IGNvdmVyYWdlLCBjb25zdCBRUmdiYQorIHN0 YXRpYyBpbmxpbmUgdm9pZCByZ2JCbGVuZFBpeGVsKFFSZ2JhNjQgJmRzdCwgaW50IGNvdmVyYWdl LCBRUmdiYTY0IHNsaW5lYXIsIGNvbnN0IFFDb2xvclRyY0x1dCAqY29sb3JQcm9maWxlKQorIHsK KyAgICAgLy8gRG8gYSBnYW1tYWNvcnJlY3RlZCBSR0IgYWxwaGFibGVuZC4uLgorLSAgICBjb25z dCBRUmdiYTY0IGRsaW5lYXIgPSBjb2xvclByb2ZpbGUgPyBjb2xvclByb2ZpbGUtPnRvTGluZWFy NjQoZHN0KSA6IGRzdDsKKysgICAgY29uc3QgUVJnYmE2NCBkbGluZWFyID0gY29sb3JQcm9maWxl ID8gY29sb3JQcm9maWxlLT50b0xpbmVhcihkc3QpIDogZHN0OworIAorICAgICBRUmdiYTY0IGJs ZW5kID0gcmdiQmxlbmQoZGxpbmVhciwgc2xpbmVhciwgY292ZXJhZ2UpOworIAorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwIGIvcXRi YXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAKK2luZGV4IDI4Mzky M2RlNTIuLmYwOGViOWNiZWUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9x cGFpbnRlbmdpbmVfcmFzdGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBh aW50ZW5naW5lX3Jhc3Rlci5jcHAKK0BAIC01NjAsMzEgKzU2MCw2IEBAIHZvaWQgUVJhc3RlclBh aW50RW5naW5lOjp1cGRhdGVNYXRyaXgoY29uc3QgUVRyYW5zZm9ybSAmbWF0cml4KQorICAgICBR UmFzdGVyUGFpbnRFbmdpbmVTdGF0ZSAqcyA9IHN0YXRlKCk7CisgICAgIC8vIEZBTENPTjogZ2V0 IHJpZCBvZiB0aGlzIGxpbmUsIHNlZSBkcmF3SW1hZ2UgY2FsbCBiZWxvdy4KKyAgICAgcy0+bWF0 cml4ID0gbWF0cml4OworLSAgICBRVHJhbnNmb3JtOjpUcmFuc2Zvcm1hdGlvblR5cGUgdHhvcCA9 IHMtPm1hdHJpeC50eXBlKCk7CistCistICAgIHN3aXRjaCAodHhvcCkgeworLQorLSAgICBjYXNl IFFUcmFuc2Zvcm06OlR4Tm9uZToKKy0gICAgICAgIHMtPmZsYWdzLmludF94Zm9ybSA9IHRydWU7 CistICAgICAgICBicmVhazsKKy0KKy0gICAgY2FzZSBRVHJhbnNmb3JtOjpUeFRyYW5zbGF0ZToK Ky0gICAgICAgIHMtPmZsYWdzLmludF94Zm9ybSA9IHFyZWFsKGludChzLT5tYXRyaXguZHgoKSkp ID09IHMtPm1hdHJpeC5keCgpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHFyZWFs KGludChzLT5tYXRyaXguZHkoKSkpID09IHMtPm1hdHJpeC5keSgpOworLSAgICAgICAgYnJlYWs7 CistCistICAgIGNhc2UgUVRyYW5zZm9ybTo6VHhTY2FsZToKKy0gICAgICAgIHMtPmZsYWdzLmlu dF94Zm9ybSA9IHFyZWFsKGludChzLT5tYXRyaXguZHgoKSkpID09IHMtPm1hdHJpeC5keCgpCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5tYXRyaXguZHkoKSkp ID09IHMtPm1hdHJpeC5keSgpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHFyZWFs KGludChzLT5tYXRyaXgubTExKCkpKSA9PSBzLT5tYXRyaXgubTExKCkKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgJiYgcXJlYWwoaW50KHMtPm1hdHJpeC5tMjIoKSkpID09IHMtPm1hdHJp eC5tMjIoKTsKKy0gICAgICAgIGJyZWFrOworLQorLSAgICBkZWZhdWx0OiAvLyBzaGVhciAvIHBl cnNwZWN0aXZlLi4uCistICAgICAgICBzLT5mbGFncy5pbnRfeGZvcm0gPSBmYWxzZTsKKy0gICAg ICAgIGJyZWFrOworLSAgICB9CistCisgICAgIHMtPmZsYWdzLnR4X25vc2hlYXIgPSBxdF9zY2Fs ZUZvclRyYW5zZm9ybShzLT5tYXRyaXgsICZzLT50eHNjYWxlKTsKKyAKKyAgICAgZW5zdXJlT3V0 bGluZU1hcHBlcigpOworQEAgLTYxNyw3ICs1OTIsNiBAQCBRUmFzdGVyUGFpbnRFbmdpbmVTdGF0 ZTo6UVJhc3RlclBhaW50RW5naW5lU3RhdGUoKQorICAgICBmbGFncy5iaWxpbmVhciA9IGZhbHNl OworICAgICBmbGFncy5sZWdhY3lfcm91bmRpbmcgPSBmYWxzZTsKKyAgICAgZmxhZ3MuZmFzdF90 ZXh0ID0gdHJ1ZTsKKy0gICAgZmxhZ3MuaW50X3hmb3JtID0gdHJ1ZTsKKyAgICAgZmxhZ3MudHhf bm9zaGVhciA9IHRydWU7CisgICAgIGZsYWdzLmZhc3RfaW1hZ2VzID0gdHJ1ZTsKKyAKK0BAIC0x NzkzLDcgKzE3NjcsNyBAQCB2b2lkIFFSYXN0ZXJQYWludEVuZ2luZTo6ZmlsbChjb25zdCBRVmVj dG9yUGF0aCAmcGF0aCwgY29uc3QgUUJydXNoICZicnVzaCkKKyAgICAgUVJlY3RGIGNwUmVjdCA9 IHBhdGguY29udHJvbFBvaW50UmVjdCgpOworICAgICBjb25zdCBRUmVjdEYgcGF0aERldmljZVJl Y3QgPSBzLT5tYXRyaXgubWFwUmVjdChjcFJlY3QpOworICAgICAvLyBTa2lwIHBhdGhzIHRoYXQg YnkgY29uc2VydmF0aXZlIGVzdGltYXRlcyBhcmUgY29tcGxldGVseSBvdXRzaWRlIHRoZSBwYWlu dCBkZXZpY2UuCistICAgIGlmICghcGF0aERldmljZVJlY3QuaW50ZXJzZWN0cyhRUmVjdEYoZC0+ ZGV2aWNlUmVjdCkpKQorKyAgICBpZiAoIXBhdGhEZXZpY2VSZWN0LmludGVyc2VjdHMoUVJlY3RG KGQtPmRldmljZVJlY3QpKSB8fCAhcGF0aERldmljZVJlY3QuaXNWYWxpZCgpKQorICAgICAgICAg cmV0dXJuOworIAorICAgICBQcm9jZXNzU3BhbnMgYmxlbmQgPSBkLT5nZXRCcnVzaEZ1bmMocGF0 aERldmljZVJlY3QsICZzLT5icnVzaERhdGEpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXJfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRp bmcvcXBhaW50ZW5naW5lX3Jhc3Rlcl9wLmgKK2luZGV4IDA4OWFhZGMzZjcuLmJmNzM2M2Q1YWEg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVy X3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlcl9w LmgKK0BAIC0xMTEsNyArMTExLDYgQEAgcHVibGljOgorICAgICAgICAgdWludCBiaWxpbmVhciA6 IDE7CisgICAgICAgICB1aW50IGxlZ2FjeV9yb3VuZGluZyA6IDE7CisgICAgICAgICB1aW50IGZh c3RfdGV4dCA6IDE7CistICAgICAgICB1aW50IGludF94Zm9ybSA6IDE7CisgICAgICAgICB1aW50 IHR4X25vc2hlYXIgOiAxOworICAgICAgICAgdWludCBmYXN0X2ltYWdlcyA6IDE7CisgICAgIH07 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZXJwYXRoLmNwcCBi L3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVycGF0aC5jcHAKK2luZGV4IGY5NTQ0YTMy NDEuLmQ4MGZhZmVhZjEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFp bnRlcnBhdGguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlcnBhdGgu Y3BwCitAQCAtMTI1Myw3ICsxMjUzLDcgQEAgdm9pZCBRUGFpbnRlclBhdGg6OmFkZFRleHQoY29u c3QgUVBvaW50RiAmcG9pbnQsIGNvbnN0IFFGb250ICZmLCBjb25zdCBRU3RyaW5nICYKKyAKKyAg ICAgICAgIGlmIChzaS5hbmFseXNpcy5mbGFncyA8IFFTY3JpcHRBbmFseXNpczo6VGFiT3JPYmpl Y3QpIHsKKyAgICAgICAgICAgICBRR2x5cGhMYXlvdXQgZ2x5cGhzID0gZW5nLT5zaGFwZWRHbHlw aHMoJnNpKTsKKy0gICAgICAgICAgICBRRm9udEVuZ2luZSAqZmUgPSBmLmQtPmVuZ2luZUZvclNj cmlwdChzaS5hbmFseXNpcy5zY3JpcHQpOworKyAgICAgICAgICAgIFFGb250RW5naW5lICpmZSA9 IGVuZy0+Zm9udEVuZ2luZShzaSk7CisgICAgICAgICAgICAgUV9BU1NFUlQoZmUpOworICAgICAg ICAgICAgIGZlLT5hZGRPdXRsaW5lVG9QYXRoKHgsIHksIGdseXBocywgdGhpcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaS5hbmFseXNpcy5iaWRpTGV2ZWwgJSAyCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhjbGlwcGVyX3AuaCBiL3F0YmFz ZS9zcmMvZ3VpL3BhaW50aW5nL3FwYXRoY2xpcHBlcl9wLmgKK2luZGV4IDk0NDRhODdiNzEuLjE4 ZjY0YzVlOGMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBw ZXJfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBwZXJfcC5oCitA QCAtMTU2LDcgKzE1Niw3IEBAIHB1YmxpYzoKKyAgICAgaW50IHZlcnRleChEaXJlY3Rpb24gZGly ZWN0aW9uKSBjb25zdDsKKyAKKyBwcml2YXRlOgorLSAgICBpbnQgbV9uZXh0WzJdWzJdOworKyAg ICBpbnQgbV9uZXh0WzJdWzJdID0geyB7IC0xLCAtMSB9LCB7IC0xLCAtMSB9IH07CisgfTsKKyAK KyBjbGFzcyBRUGF0aFNlZ21lbnRzCitAQCAtMjk2LDEwICsyOTYsNiBAQCBpbmxpbmUgUVBhdGhF ZGdlOjpRUGF0aEVkZ2UoaW50IGEsIGludCBiKQorICAgICAsIGFuZ2xlKDApCisgICAgICwgaW52 QW5nbGUoMCkKKyB7CistICAgIG1fbmV4dFswXVswXSA9IC0xOworLSAgICBtX25leHRbMV1bMF0g PSAtMTsKKy0gICAgbV9uZXh0WzBdWzBdID0gLTE7CistICAgIG1fbmV4dFsxXVswXSA9IC0xOwor IH0KKyAKKyBpbmxpbmUgaW50IFFQYXRoRWRnZTo6bmV4dChUcmF2ZXJzYWwgdHJhdmVyc2FsLCBE aXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3Bh aW50aW5nL3FwZGYuY3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAKK2luZGV4 IDMwNjY3NDRmMWIuLjJjOGQzYzNiNTMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWlu dGluZy9xcGRmLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAKK0BA IC0yNzYwLDYgKzI3NjAsOCBAQCBpbnQgUVBkZkVuZ2luZVByaXZhdGU6OmFkZEJydXNoUGF0dGVy bihjb25zdCBRVHJhbnNmb3JtICZtLCBib29sICpzcGVjaWZ5Q29sb3IsCisgICAgICAgICByZXR1 cm4gZ3JhZGllbnRCcnVzaChicnVzaCwgbWF0cml4LCBnU3RhdGVPYmplY3QpOworICAgICB9Cisg CisrICAgIG1hdHJpeCA9IGJydXNoLnRyYW5zZm9ybSgpICogbWF0cml4OworKworICAgICBpZiAo KCFicnVzaC5pc09wYXF1ZSgpICYmIGJydXNoLnN0eWxlKCkgPCBRdDo6TGluZWFyR3JhZGllbnRQ YXR0ZXJuKSB8fCBvcGFjaXR5ICE9IDEuMCkKKyAgICAgICAgICpnU3RhdGVPYmplY3QgPSBhZGRD b25zdGFudEFscGhhT2JqZWN0KHFSb3VuZChicnVzaC5jb2xvcigpLmFscGhhKCkgKiBvcGFjaXR5 KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFSb3Vu ZChwZW4uY29sb3IoKS5hbHBoYSgpICogb3BhY2l0eSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvZ3VpL3BhaW50aW5nL3FzdHJva2VyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fz dHJva2VyLmNwcAoraW5kZXggY2I1ZDM5NWU4MC4uM2I2MzU3YTg5MyAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FzdHJva2VyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcXN0cm9rZXIuY3BwCitAQCAtMTE4Miw2ICsxMTgyLDcgQEAgdm9pZCBRRGFzaFN0 cm9rZXI6OnByb2Nlc3NDdXJyZW50U3VicGF0aCgpCisgICAgICAgICAvLyBDaGVjayBpZiB0aGUg ZW50aXJlIGxpbmUgc2hvdWxkIGJlIGNsaXBwZWQgYXdheSBvciBzaW1wbGlmaWVkCisgICAgICAg ICBib29sIGNsaXBJdCA9IGNsaXBwaW5nICYmICFsaW5lSW50ZXJzZWN0c1JlY3QocHJldiwgZSwg Y2xpcF90bCwgY2xpcF9icik7CisgICAgICAgICBib29sIHNraXBEYXNoaW5nID0gZWxlbiAqIGlu dlN1bUxlbmd0aCA+IHJlcGV0aXRpb25MaW1pdCgpOworKyAgICAgICAgaW50IG1heERhc2hlcyA9 IGRhc2hDb3VudDsKKyAgICAgICAgIGlmIChza2lwRGFzaGluZyB8fCBjbGlwSXQpIHsKKyAgICAg ICAgICAgICAvLyBDdXQgYXdheSBmdWxsIGRhc2ggc2VxdWVuY2VzLgorICAgICAgICAgICAgIGVs ZW4gLT0gc3RkOjpmbG9vcihlbGVuICogaW52U3VtTGVuZ3RoKSAqIHN1bUxlbmd0aDsKK0BAIC0x MTk2LDcgKzExOTcsNyBAQCB2b2lkIFFEYXNoU3Ryb2tlcjo6cHJvY2Vzc0N1cnJlbnRTdWJwYXRo KCkKKyAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGVzdG9wOyAvLyBtb3ZlIHBvcyB0byBuZXh0 IHBhdGggZWxlbWVudAorICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAg ICAgICAgICAgIH0gZWxzZSB7IC8vIERhc2ggaXMgb24gdGhpcyBsaW5lCistICAgICAgICAgICAg ICAgICAgICBwb3MgPSBkcG9zICsgZXN0YXJ0OworKyAgICAgICAgICAgICAgICAgICAgcG9zID0g LS1tYXhEYXNoZXMgPiAwID8gZHBvcyArIGVzdGFydCA6IGVzdG9wOworICAgICAgICAgICAgICAg ICAgICAgZG9uZSA9IHBvcyA+PSBlc3RvcDsKKyAgICAgICAgICAgICAgICAgICAgIGlmICgrK2lk YXNoID49IGRhc2hDb3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZGFzaCA9IDA7Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXRfYXR0cmlidXRpb24uanNvbiBi L3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24KK2luZGV4IDdiMTZl OGMyMTEuLjBlODdkMzBhYTIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9x dF9hdHRyaWJ1dGlvbi5qc29uCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xdF9hdHRy aWJ1dGlvbi5qc29uCitAQCAtMTAsNyArMTAsNyBAQAorICAgICAgICAgIkhvbWVwYWdlIjogImh0 dHA6Ly93d3cuZnJlZXR5cGUub3JnIiwKKyAgICAgICAgICJMaWNlbnNlIjogIkZyZWV0eXBlIFBy b2plY3QgTGljZW5zZSBvciBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mi4wIG9ubHkiLAor ICAgICAgICAgIkxpY2Vuc2VJZCI6ICJGVEwgb3IgR1BMLTIuMCIsCistICAgICAgICAiTGljZW5z ZUZpbGUiOiAiLi4vLi4vM3JkcGFydHkvZnJlZXR5cGUvZG9jcy9MSUNFTlNFLlRYVCIsCisrICAg ICAgICAiTGljZW5zZUZpbGUiOiAiLi4vLi4vM3JkcGFydHkvZnJlZXR5cGUvTElDRU5TRS5UWFQi LAorICAgICAgICAgIkNvcHlyaWdodCI6ICJDb3B5cmlnaHQgMjAwMC0yMDE2IGJ5IERhdmlkIFR1 cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4iCisgICAgIH0sCisgICAg IHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3AuaCBiL3F0YmFz ZS9zcmMvZ3VpL3JoaS9xc2hhZGVyX3BfcC5oCitpbmRleCBlYzlkMjU5NzFmLi40YTVhN2E2ZDUx IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9wLmgKKysrKyBiL3F0 YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyX3BfcC5oCitAQCAtNjgsMTMgKzY4LDEzIEBAIHN0cnVj dCBRX0dVSV9FWFBPUlQgUVNoYWRlclByaXZhdGUKKyAgICAgeworICAgICB9CisgCistICAgIFFT aGFkZXJQcml2YXRlKGNvbnN0IFFTaGFkZXJQcml2YXRlICpvdGhlcikKKysgICAgUVNoYWRlclBy aXZhdGUoY29uc3QgUVNoYWRlclByaXZhdGUgJm90aGVyKQorICAgICAgICAgOiByZWYoMSksCist ICAgICAgICAgIHFzYlZlcnNpb24ob3RoZXItPnFzYlZlcnNpb24pLAorLSAgICAgICAgICBzdGFn ZShvdGhlci0+c3RhZ2UpLAorLSAgICAgICAgICBkZXNjKG90aGVyLT5kZXNjKSwKKy0gICAgICAg ICAgc2hhZGVycyhvdGhlci0+c2hhZGVycyksCistICAgICAgICAgIGJpbmRpbmdzKG90aGVyLT5i aW5kaW5ncykKKysgICAgICAgICAgcXNiVmVyc2lvbihvdGhlci5xc2JWZXJzaW9uKSwKKysgICAg ICAgICAgc3RhZ2Uob3RoZXIuc3RhZ2UpLAorKyAgICAgICAgICBkZXNjKG90aGVyLmRlc2MpLAor KyAgICAgICAgICBzaGFkZXJzKG90aGVyLnNoYWRlcnMpLAorKyAgICAgICAgICBiaW5kaW5ncyhv dGhlci5iaW5kaW5ncykKKyAgICAgeworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlwdGlvbl9wX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9x c2hhZGVyZGVzY3JpcHRpb25fcF9wLmgKK2luZGV4IGVjMmIwYjZiNGMuLjNkYTMzYThhMmIgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oCisr KysgYi9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oCitAQCAtNjMs MTYgKzYzLDE2IEBAIHN0cnVjdCBRX0dVSV9FWFBPUlQgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0 ZQorICAgICAgICAgbG9jYWxTaXplWzBdID0gbG9jYWxTaXplWzFdID0gbG9jYWxTaXplWzJdID0g MDsKKyAgICAgfQorIAorLSAgICBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlKGNvbnN0IFFTaGFk ZXJEZXNjcmlwdGlvblByaXZhdGUgKm90aGVyKQorKyAgICBRU2hhZGVyRGVzY3JpcHRpb25Qcml2 YXRlKGNvbnN0IFFTaGFkZXJEZXNjcmlwdGlvblByaXZhdGUgJm90aGVyKQorICAgICAgICAgOiBy ZWYoMSksCistICAgICAgICAgIGluVmFycyhvdGhlci0+aW5WYXJzKSwKKy0gICAgICAgICAgb3V0 VmFycyhvdGhlci0+b3V0VmFycyksCistICAgICAgICAgIHVuaWZvcm1CbG9ja3Mob3RoZXItPnVu aWZvcm1CbG9ja3MpLAorLSAgICAgICAgICBwdXNoQ29uc3RhbnRCbG9ja3Mob3RoZXItPnB1c2hD b25zdGFudEJsb2NrcyksCistICAgICAgICAgIHN0b3JhZ2VCbG9ja3Mob3RoZXItPnN0b3JhZ2VC bG9ja3MpLAorLSAgICAgICAgICBjb21iaW5lZEltYWdlU2FtcGxlcnMob3RoZXItPmNvbWJpbmVk SW1hZ2VTYW1wbGVycyksCistICAgICAgICAgIHN0b3JhZ2VJbWFnZXMob3RoZXItPnN0b3JhZ2VJ bWFnZXMpLAorLSAgICAgICAgICBsb2NhbFNpemUob3RoZXItPmxvY2FsU2l6ZSkKKysgICAgICAg ICAgaW5WYXJzKG90aGVyLmluVmFycyksCisrICAgICAgICAgIG91dFZhcnMob3RoZXIub3V0VmFy cyksCisrICAgICAgICAgIHVuaWZvcm1CbG9ja3Mob3RoZXIudW5pZm9ybUJsb2NrcyksCisrICAg ICAgICAgIHB1c2hDb25zdGFudEJsb2NrcyhvdGhlci5wdXNoQ29uc3RhbnRCbG9ja3MpLAorKyAg ICAgICAgICBzdG9yYWdlQmxvY2tzKG90aGVyLnN0b3JhZ2VCbG9ja3MpLAorKyAgICAgICAgICBj b21iaW5lZEltYWdlU2FtcGxlcnMob3RoZXIuY29tYmluZWRJbWFnZVNhbXBsZXJzKSwKKysgICAg ICAgICAgc3RvcmFnZUltYWdlcyhvdGhlci5zdG9yYWdlSW1hZ2VzKSwKKysgICAgICAgICAgbG9j YWxTaXplKG90aGVyLmxvY2FsU2l6ZSkKKyAgICAgeworICAgICB9CisgCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3Rl eHQvcWZvbnRkYXRhYmFzZS5jcHAKK2luZGV4IGE2NTdhOGM1MTYuLjRmYzAxMDA5NTggMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3BwCisrKysgYi9xdGJh c2Uvc3JjL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3BwCitAQCAtOTgzLDcgKzk4Myw3IEBAIFFG b250RW5naW5lICpsb2FkU2luZ2xlRW5naW5lKGludCBzY3JpcHQsCisgICAgICAgICBpZiAoc3R5 bGUtPmtleS5zdHJldGNoICE9IDAgJiYgcmVxdWVzdC5zdHJldGNoICE9IDAKKyAgICAgICAgICAg ICAmJiAocmVxdWVzdC5zdHlsZU5hbWUuaXNFbXB0eSgpIHx8IHJlcXVlc3Quc3R5bGVOYW1lICE9 IHN0eWxlLT5zdHlsZU5hbWUpKSB7CisgICAgICAgICAgICAgZGVmLnN0cmV0Y2ggPSAocmVxdWVz dC5zdHJldGNoICogMTAwICsgc3R5bGUtPmtleS5zdHJldGNoIC8gMikgLyBzdHlsZS0+a2V5LnN0 cmV0Y2g7CistICAgICAgICB9IGVsc2UgeworKyAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnN0 cmV0Y2ggPT0gUUZvbnQ6OkFueVN0cmV0Y2gpIHsKKyAgICAgICAgICAgICBkZWYuc3RyZXRjaCA9 IDEwMDsKKyAgICAgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0 ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGRvY3VtZW50 bGF5b3V0LmNwcAoraW5kZXggZjNlNmVhMjEwMC4uNzIyNjdlOTM4MCAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRkb2N1bWVudGxheW91dC5jcHAKKysrKyBiL3F0YmFzZS9z cmMvZ3VpL3RleHQvcXRleHRkb2N1bWVudGxheW91dC5jcHAKK0BAIC0yMTIzLDcgKzIxMjMsNyBA QCB2b2lkIFFUZXh0RG9jdW1lbnRMYXlvdXRQcml2YXRlOjpkcmF3TGlzdEl0ZW0oY29uc3QgUVBv aW50RiAmb2Zmc2V0LCBRUGFpbnRlciAqcAorIHsKKyAgICAgUV9RKGNvbnN0IFFUZXh0RG9jdW1l bnRMYXlvdXQpOworICAgICBjb25zdCBRVGV4dEJsb2NrRm9ybWF0IGJsb2NrRm9ybWF0ID0gYmwu YmxvY2tGb3JtYXQoKTsKKy0gICAgY29uc3QgUVRleHRDaGFyRm9ybWF0IGNoYXJGb3JtYXQgPSBR VGV4dEN1cnNvcihibCkuY2hhckZvcm1hdCgpOworKyAgICBjb25zdCBRVGV4dENoYXJGb3JtYXQg Y2hhckZvcm1hdCA9IGJsLmNoYXJGb3JtYXQoKTsKKyAgICAgUUZvbnQgZm9udChjaGFyRm9ybWF0 LmZvbnQoKSk7CisgICAgIGlmIChxLT5wYWludERldmljZSgpKQorICAgICAgICAgZm9udCA9IFFG b250KGZvbnQsIHEtPnBhaW50RGV2aWNlKCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3Vp L3RleHQvcXRleHRlbmdpbmUuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5j cHAKK2luZGV4IGNlNGFiYWM0NzIuLmE2YzY2ZTVkMmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2d1aS90ZXh0L3F0ZXh0ZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4 dGVuZ2luZS5jcHAKK0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioK Ky0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdo dCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cu cXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0R3Vp IG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC0xNTY1LDYgKzE1NjUsMTIgQEAgdm9pZCBR VGV4dEVuZ2luZTo6c2hhcGVUZXh0KGludCBpdGVtKSBjb25zdAorICAgICAgICAgLy8gT3Zlcndy aXRlIHdpdGggMCB0b2tlbiB0byBpbmRpY2F0ZSBmYWlsdXJlCisgICAgICAgICBRR2x5cGhMYXlv dXQgZyA9IGF2YWlsYWJsZUdseXBocygmc2kpOworICAgICAgICAgZy5nbHlwaHNbMF0gPSAwOwor KyAgICAgICAgZy5hdHRyaWJ1dGVzWzBdLmNsdXN0ZXJTdGFydCA9IHRydWU7CisrCisrICAgICAg ICB1c2hvcnQgKmxvZ19jbHVzdGVycyA9IGxvZ0NsdXN0ZXJzKCZzaSk7CisrICAgICAgICBmb3Ig KGludCBpID0gMDsgaSA8IGl0ZW1MZW5ndGg7ICsraSkKKysgICAgICAgICAgICBsb2dfY2x1c3Rl cnNbaV0gPSAwOworKworICAgICAgICAgcmV0dXJuOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNwcCBiL3F0YmFzZS9zcmMvZ3Vp L3V0aWwvcWRlc2t0b3BzZXJ2aWNlcy5jcHAKK2luZGV4IGZiYjYzYTk0MDguLjRkNWZhZmFhYTcg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwCisr KysgYi9xdGJhc2Uvc3JjL2d1aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwCitAQCAtNTQsNiAr NTQsOCBAQAorICNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtaW50ZWdyYXRpb24uaD4KKyAjaW5jbHVk ZSA8cWRpci5oPgorIAorKyNpbmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9xbG9ja2luZ19wLmg+Cisr CisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgY2xhc3MgUU9wZW5VcmxIYW5kbGVyUmVnaXN0cnkg OiBwdWJsaWMgUU9iamVjdAorQEAgLTgxLDYgKzgzLDcgQEAgUV9HTE9CQUxfU1RBVElDKFFPcGVu VXJsSGFuZGxlclJlZ2lzdHJ5LCBoYW5kbGVyUmVnaXN0cnkpCisgCisgdm9pZCBRT3BlblVybEhh bmRsZXJSZWdpc3RyeTo6aGFuZGxlckRlc3Ryb3llZChRT2JqZWN0ICpoYW5kbGVyKQorIHsKKysg ICAgY29uc3QgYXV0byBsb2NrID0gcXRfc2NvcGVkX2xvY2sobXV0ZXgpOworICAgICBIYW5kbGVy SGFzaDo6SXRlcmF0b3IgaXQgPSBoYW5kbGVycy5iZWdpbigpOworICAgICB3aGlsZSAoaXQgIT0g aGFuZGxlcnMuZW5kKCkpIHsKKyAgICAgICAgIGlmIChpdC0+cmVjZWl2ZXIgPT0gaGFuZGxlcikg eworQEAgLTI5NCw3ICsyOTcsOCBAQCB2b2lkIFFEZXNrdG9wU2VydmljZXM6OnNldFVybEhhbmRs ZXIoY29uc3QgUVN0cmluZyAmc2NoZW1lLCBRT2JqZWN0ICpyZWNlaXZlciwgYworICAgICBoLm5h bWUgPSBtZXRob2Q7CisgICAgIHJlZ2lzdHJ5LT5oYW5kbGVycy5pbnNlcnQoc2NoZW1lLnRvTG93 ZXIoKSwgaCk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocmVjZWl2ZXIsIFNJR05BTChkZXN0cm95 ZWQoUU9iamVjdCopKSwKKy0gICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgU0xPVChoYW5k bGVyRGVzdHJveWVkKFFPYmplY3QqKSkpOworKyAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5 LCBTTE9UKGhhbmRsZXJEZXN0cm95ZWQoUU9iamVjdCopKSwKKysgICAgICAgICAgICAgICAgICAg ICBRdDo6RGlyZWN0Q29ubmVjdGlvbik7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvZ3VpL3V0aWwvcXBrbWhhbmRsZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGtt aGFuZGxlci5jcHAKK2luZGV4IGUwYzNiNzVlZmUuLjM0MTRmOWQ4YmEgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2d1aS91dGlsL3Fwa21oYW5kbGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkv dXRpbC9xcGttaGFuZGxlci5jcHAKK0BAIC01Nyw3ICs1Nyw3IEBAIHN0cnVjdCBQa21UeXBlCisg ICAgIHF1aW50MzIgYnl0ZXNQZXJCbG9jazsKKyB9OworIAorLXN0YXRpYyBQa21UeXBlIHR5cGVN YXBbNV0gPSB7Cisrc3RhdGljIGNvbnN0ZXhwciBQa21UeXBlIHR5cGVNYXBbNV0gPSB7CisgICAg IHsgMHg4RDY0LCAgOCB9LCAgIC8vIEdMX0VUQzFfUkdCOF9PRVMKKyAgICAgeyAweDkyNzQsICA4 IH0sICAgLy8gR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIKKyAgICAgeyAwLCAwIH0sICAgICAgICAg Ly8gdW51c2VkIChvYnNvbGV0ZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNj ZXNzL3FuZXR3b3JrcmVwbHlmaWxlaW1wbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNz L3FuZXR3b3JrcmVwbHlmaWxlaW1wbC5jcHAKK2luZGV4IGI2YmU5MzE0N2EuLjZlNjliNGM0ZDMg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlmaWxl aW1wbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWZp bGVpbXBsLmNwcAorQEAgLTg5LDkgKzg5LDEwIEBAIFFOZXR3b3JrUmVwbHlGaWxlSW1wbDo6UU5l dHdvcmtSZXBseUZpbGVJbXBsKFFOZXR3b3JrQWNjZXNzTWFuYWdlciAqbWFuYWdlciwgY29uCisg ICAgICAgICAvLyB3ZSBoYW5kbGUgb25seSBsb2NhbCBmaWxlcworICAgICAgICAgUVN0cmluZyBt c2cgPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFOZXR3b3JrQWNjZXNzRmlsZUJhY2tl bmQiLCAiUmVxdWVzdCBmb3Igb3BlbmluZyBub24tbG9jYWwgZmlsZSAlMSIpLmFyZyh1cmwudG9T dHJpbmcoKSk7CisgICAgICAgICBzZXRFcnJvcihRTmV0d29ya1JlcGx5OjpQcm90b2NvbEludmFs aWRPcGVyYXRpb25FcnJvciwgbXNnKTsKKysgICAgICAgIHNldEZpbmlzaGVkKHRydWUpOyAvLyBX ZSdyZSBmaW5pc2hlZCwgd2lsbCBlbWl0IGZpbmlzaGVkKCkgYWZ0ZXIgY3RvciBpcyBkb25lLgor ICAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCAiZXJyb3JPY2N1cnJlZCIs IFF0OjpRdWV1ZWRDb25uZWN0aW9uLAorICAgICAgICAgICAgIFFfQVJHKFFOZXR3b3JrUmVwbHk6 Ok5ldHdvcmtFcnJvciwgUU5ldHdvcmtSZXBseTo6UHJvdG9jb2xJbnZhbGlkT3BlcmF0aW9uRXJy b3IpKTsKKy0gICAgICAgIGZpbGVPcGVuRmluaXNoZWQoZmFsc2UpOworKyAgICAgICAgUU1ldGFP YmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCBbdGhpc10oKXsgZmlsZU9wZW5GaW5pc2hlZChmYWxz ZSk7IH0sIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQor ICNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmty ZXBseWltcGwuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1w bC5jcHAKK2luZGV4IGJjZGY2ZWUyZjEuLjNiNmRlYjgyYmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlpbXBsLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAKK0BAIC02ODAsNyArNjgwLDcg QEAgdm9pZCBRTmV0d29ya1JlcGx5SW1wbFByaXZhdGU6OmFwcGVuZERvd25zdHJlYW1EYXRhKFFJ T0RldmljZSAqZGF0YSkKKyAgICAgLy8gcmVhZCB1bnRpbCBFT0YgZnJvbSBkYXRhCisgICAgIGlm IChRX1VOTElLRUxZKGNvcHlEZXZpY2UpKSB7CisgICAgICAgICBxQ3JpdGljYWwoIlFOZXR3b3Jr UmVwbHlJbXBsOiBjb3B5IGZyb20gUUlPRGV2aWNlIGFscmVhZHkgaW4gcHJvZ3Jlc3MgLS0gIgor LSAgICAgICAgICAgICAgICAgICJiYWNrZW5kIHByb2JseSBuZWVkcyB0byBiZSBmaXhlZCIpOwor KyAgICAgICAgICAgICAgICAgICJiYWNrZW5kIHByb2JhYmx5IG5lZWRzIHRvIGJlIGZpeGVkIik7 CisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25l dHdvcmsva2VybmVsL3FhdXRoZW50aWNhdG9yLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9rZXJu ZWwvcWF1dGhlbnRpY2F0b3IuY3BwCitpbmRleCBkOWZlN2JjNDdiLi5jY2QwNGIyOTRhIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRvci5jcHAKKysr KyBiL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0b3IuY3BwCitAQCAtNTAs NiArNTAsNyBAQAorICNpbmNsdWRlIDxxc3RyaW5nLmg+CisgI2luY2x1ZGUgPHFkYXRldGltZS5o PgorICNpbmNsdWRlIDxxcmFuZG9tLmg+CisrI2luY2x1ZGUgInByaXZhdGUvcXN5c3RlbWxpYnJh cnlfcC5oIgorIAorICNpZmRlZiBRX09TX1dJTgorICNpbmNsdWRlIDxxbXV0ZXguaD4KK0BAIC0x NTYzLDcgKzE1NjQsNyBAQCBzdGF0aWMgYm9vbCBxX1NTUElfbGlicmFyeV9sb2FkKCkKKyAKKyAg ICAgLy8gSW5pdGlhbGl6ZSBzZWN1cml0eSBpbnRlcmZhY2UKKyAgICAgaWYgKHBTZWN1cml0eUZ1 bmN0aW9uVGFibGUgPT0gbnVsbHB0cikgeworLSAgICAgICAgc2VjdXJpdHlETExIYW5kbGUgPSBM b2FkTGlicmFyeShMInNlY3VyMzIuZGxsIik7CisrICAgICAgICBzZWN1cml0eURMTEhhbmRsZSA9 IFFTeXN0ZW1MaWJyYXJ5Ojpsb2FkKEwic2VjdXIzMiIpOworICAgICAgICAgaWYgKHNlY3VyaXR5 RExMSGFuZGxlICE9IG51bGxwdHIpIHsKKyAgICAgICAgICAgICBJTklUX1NFQ1VSSVRZX0lOVEVS RkFDRSBwSW5pdFNlY3VyaXR5SW50ZXJmYWNlID0KKyAgICAgICAgICAgICAgICAgcmVpbnRlcnBy ZXRfY2FzdDxJTklUX1NFQ1VSSVRZX0lOVEVSRkFDRT4oCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9uZXR3b3JrL2tlcm5lbC9xaG9zdGluZm9fdW5peC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsv a2VybmVsL3Fob3N0aW5mb191bml4LmNwcAoraW5kZXggOWIwYTJlZTY2OS4uNzM2NzljOWVmMSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZvX3VuaXguY3Bw CisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0aW5mb191bml4LmNwcAorQEAg LTEyMiw3ICsxMjIsNiBAQCBzdGF0aWMgUUZ1bmN0aW9uUG9pbnRlciByZXNvbHZlU3ltYm9sKFFM aWJyYXJ5ICZsaWIsIGNvbnN0IGNoYXIgKnN5bSkKKyAKKyBMaWJSZXNvbHY6OkxpYlJlc29sdigp CisgeworLSAgICBRTGlicmFyeSBsaWI7CisgI2lmZGVmIExJQlJFU09MVl9TTworICAgICBsaWIu c2V0RmlsZU5hbWUoUVN0cmluZ0xpdGVyYWwoTElCUkVTT0xWX1NPKSk7CisgICAgIGlmICghbGli LmxvYWQoKSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fzb2NrczVz b2NrZXRlbmdpbmUuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9xc29ja3M1c29ja2V0 ZW5naW5lLmNwcAoraW5kZXggM2EwNDZmZDExNi4uOTdmYWRjYTBiMyAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvbmV0d29yay9zb2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvbmV0d29yay9zb2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAKK0BAIC0xMjk2 LDcgKzEyOTYsNyBAQCB2b2lkIFFTb2NrczVTb2NrZXRFbmdpbmVQcml2YXRlOjpfcV91ZHBTb2Nr ZXRSZWFkTm90aWZpY2F0aW9uKCkKKyAgICAgICAgIGludCBwb3MgPSAwOworICAgICAgICAgY29u c3QgY2hhciAqYnVmID0gaW5CdWYuY29uc3REYXRhKCk7CisgICAgICAgICBpZiAoaW5CdWYuc2l6 ZSgpIDwgNCkgeworLSAgICAgICAgICAgIFFTT0NLUzVfRF9ERUJVRyA8PCAiYnVndXMgdWRwIGRh dGEsIGRpc2NhcmRpbmciOworKyAgICAgICAgICAgIFFTT0NLUzVfRF9ERUJVRyA8PCAiYm9ndXMg dWRwIGRhdGEsIGRpc2NhcmRpbmciOworICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0K KyAgICAgICAgIFFTb2NrczVSZXZpdmVkRGF0YWdyYW0gZGF0YWdyYW07CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsY29udGV4dF9vcGVuc3NsLmNwcCBiL3F0YmFzZS9z cmMvbmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAKK2luZGV4IGM5ZjIwMmY1NzMu LmM5OTJkYTlkOGUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250 ZXh0X29wZW5zc2wuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0 X29wZW5zc2wuY3BwCitAQCAtNDA5LDcgKzQwOSw3IEBAIGluaXRfY29udGV4dDoKKyAgICAgICAg IGJyZWFrOworICAgICBjYXNlIFFTc2w6OkR0bHNWMV8wT3JMYXRlcjoKKyAgICAgICAgIG1pblZl cnNpb24gPSBEVExTMV9WRVJTSU9OOworLSAgICAgICAgbWF4VmVyc2lvbiA9IERUTFNfTUFYX1ZF UlNJT047CisrICAgICAgICBtYXhWZXJzaW9uID0gMDsKKyAgICAgICAgIGJyZWFrOworICAgICBj YXNlIFFTc2w6OkR0bHNWMV8yOgorICAgICAgICAgbWluVmVyc2lvbiA9IERUTFMxXzJfVkVSU0lP TjsKK0BAIC00MTcsNyArNDE3LDcgQEAgaW5pdF9jb250ZXh0OgorICAgICAgICAgYnJlYWs7Cisg ICAgIGNhc2UgUVNzbDo6RHRsc1YxXzJPckxhdGVyOgorICAgICAgICAgbWluVmVyc2lvbiA9IERU TFMxXzJfVkVSU0lPTjsKKy0gICAgICAgIG1heFZlcnNpb24gPSBEVExTX01BWF9WRVJTSU9OOwor KyAgICAgICAgbWF4VmVyc2lvbiA9IDA7CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBRU3Ns OjpUbHNWMV8zT3JMYXRlcjoKKyAjaWZkZWYgVExTMV8zX1ZFUlNJT04KK0BAIC00NTUsNyArNDU1 LDcgQEAgaW5pdF9jb250ZXh0OgorICAgICB9CisgCisgICAgIC8vIEVuYWJsZSBidWcgd29ya2Fy b3VuZHMuCistICAgIGxvbmcgb3B0aW9ucyA9IFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6c2V0 dXBPcGVuU3NsT3B0aW9ucyhjb25maWd1cmF0aW9uLnByb3RvY29sKCksIGNvbmZpZ3VyYXRpb24u ZC0+c3NsT3B0aW9ucyk7CisrICAgIHFzc2xvcHRpb25zIG9wdGlvbnMgPSBRU3NsU29ja2V0QmFj a2VuZFByaXZhdGU6OnNldHVwT3BlblNzbE9wdGlvbnMoY29uZmlndXJhdGlvbi5wcm90b2NvbCgp LCBjb25maWd1cmF0aW9uLmQtPnNzbE9wdGlvbnMpOworICAgICBxX1NTTF9DVFhfc2V0X29wdGlv bnMoc3NsQ29udGV4dC0+Y3R4LCBvcHRpb25zKTsKKyAKKyAgICAgLy8gVGVsbCBPcGVuU1NMIHRv IHJlbGVhc2UgbWVtb3J5IGVhcmx5CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3Nz bC9xc3NsZGlmZmllaGVsbG1hbnBhcmFtZXRlcnNfb3BlbnNzbC5jcHAgYi9xdGJhc2Uvc3JjL25l dHdvcmsvc3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcAoraW5kZXgg YWFmODc0MTEzMC4uYjU4OTM1MzcyYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9z c2wvcXNzbGRpZmZpZWhlbGxtYW5wYXJhbWV0ZXJzX29wZW5zc2wuY3BwCisrKysgYi9xdGJhc2Uv c3JjL25ldHdvcmsvc3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcAor QEAgLTU5LDU3ICs1OSw2IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCistI2lmZGVmIE9Q RU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKy0KKy1zdGF0aWMgaW50IHFfREhfY2hlY2soREggKmRo LCBpbnQgKnN0YXR1cykKKy17CistICAgIC8vIERIX2NoZWNrIHdhcyBmaXJzdCBkZXByZWNhdGVk IGluIE9wZW5TU0wgMy4wLjAsIGFzIGxvdy1sZXZlbAorLSAgICAvLyBBUEk7IHRoZSBFVlBfUEtF WSBmYW1pbHkgb2YgZnVuY3Rpb25zIHdhcyBhZHZpc2VkIGFzIGFuIGFsdGVybmF0aXZlLgorLSAg ICAvLyBBcyBvZiBub3cgRVZQX1BLRVlfcGFyYW1zX2NoZWNrIGVuZHMgdXAgY2FsbGluZyAuLi4g REhfY2hlY2ssCistICAgIC8vIHdoaWNoIGlzIGdvb2QgZW5vdWdoLgorLQorLSAgICBRX0FTU0VS VChkaCk7CistICAgIFFfQVNTRVJUKHN0YXR1cyk7CistCistICAgIEVWUF9QS0VZICprZXkgPSBx X0VWUF9QS0VZX25ldygpOworLSAgICBpZiAoIWtleSkgeworLSAgICAgICAgcUNXYXJuaW5nKGxj U3NsLCAiRVZQX1BLRVlfbmV3IGZhaWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJhY2tlbmRQ cml2YXRlOjpsb2dBbmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVybiAwOworLSAg ICB9CistICAgIGNvbnN0IGF1dG8ga2V5RGVsZXRlciA9IHFTY29wZUd1YXJkKFtrZXldKCl7Cist ICAgICAgICBxX0VWUF9QS0VZX2ZyZWUoa2V5KTsKKy0gICAgfSk7CistICAgIGlmICghcV9FVlBf UEtFWV9zZXQxX0RIKGtleSwgZGgpKSB7CistICAgICAgICBxQ1dhcm5pbmcobGNTc2wsICJFVlBf UEtFWV9zZXQxX0RIIGZhaWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRl Ojpsb2dBbmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVybiAwOworLSAgICB9Cist CistICAgIEVWUF9QS0VZX0NUWCAqa2V5Q3R4ID0gcV9FVlBfUEtFWV9DVFhfbmV3KGtleSwgbnVs bHB0cik7CistICAgIGlmICgha2V5Q3R4KSB7CistICAgICAgICBxQ1dhcm5pbmcobGNTc2wsICJF VlBfUEtFWV9DVFhfbmV3IGZhaWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJhY2tlbmRQcml2 YXRlOjpsb2dBbmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVybiAwOworLSAgICB9 CistICAgIGNvbnN0IGF1dG8gY3R4RGVsZXRlciA9IHFTY29wZUd1YXJkKFtrZXlDdHhdeworLSAg ICAgICAgcV9FVlBfUEtFWV9DVFhfZnJlZShrZXlDdHgpOworLSAgICB9KTsKKy0KKy0gICAgY29u c3QgaW50IHJlc3VsdCA9IHFfRVZQX1BLRVlfcGFyYW1fY2hlY2soa2V5Q3R4KTsKKy0gICAgUVNz bFNvY2tldEJhY2tlbmRQcml2YXRlOjpsb2dBbmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgLy8g Tm90ZTogdW5saWtlIERIX2NoZWNrLCB3ZSBjYW5ub3Qgb2J0YWluIHRoZSAnc3RhdHVzJywKKy0g ICAgLy8gaWYgdGhlICdyZXN1bHQnIGlzIDAgKGFjdHVhbGx5IHRoZSByZXN1bHQgaXMgMSBvbmx5 CistICAgIC8vIGlmIHRoaXMgJ3N0YXR1cycgd2FzIDApLiBXZSBjb3VsZCBwcm9iYWJseSBjaGVj ayB0aGUKKy0gICAgLy8gZXJyb3JzIGZyb20gdGhlIGVycm9yIHF1ZXVlLCBidXQgaXQncyBub3Qg bmVlZGVkIGFueXdheQorLSAgICAvLyAtIHNlZSB0aGUgJ2lzU2FmZURIJyBiZWxvdywgaG93IGl0 IHJldHVybnMgaW1tZWRpYXRlbHkKKy0gICAgLy8gb24gMC4KKy0gICAgUV9VTlVTRUQoc3RhdHVz KQorLQorLSAgICByZXR1cm4gcmVzdWx0OworLX0KKy0jZW5kaWYgLy8gT1BFTlNTTF9OT19ERVBS RUNBVEVEXzNfMAorLQorIHN0YXRpYyBib29sIGlzU2FmZURIKERIICpkaCkKKyB7CisgICAgIGlu dCBzdGF0dXMgPSAwOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNv Y2tldF9vcGVuc3NsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVu c3NsLmNwcAoraW5kZXggMzdmYWQyYTY4Zi4uOGY2ODU4Yzg2NyAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2wuY3BwCitAQCAtNTUwLDkgKzU1MCw5IEBA IHN0YXRpYyB2b2lkIHFfbG9hZENpcGhlcnNGb3JDb25uZWN0aW9uKFNTTCAqY29ubmVjdGlvbiwg UUxpc3Q8UVNzbENpcGhlcj4gJmNpcGhlCisgLy8gRGVmaW5lZCBpbiBxc3Nsc29ja2V0LmNwcAor IHZvaWQgcV9zZXREZWZhdWx0RHRsc0NpcGhlcnMoY29uc3QgUUxpc3Q8UVNzbENpcGhlcj4gJmNp cGhlcnMpOworIAorLWxvbmcgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xP cHRpb25zKFFTc2w6OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRpb25zIHNzbE9w dGlvbnMpCisrcXNzbG9wdGlvbnMgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5T c2xPcHRpb25zKFFTc2w6OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRpb25zIHNz bE9wdGlvbnMpCisgeworLSAgICBsb25nIG9wdGlvbnM7CisrICAgIHFzc2xvcHRpb25zIG9wdGlv bnM7CisgICAgIGlmIChwcm90b2NvbCA9PSBRU3NsOjpUbHNWMVNzbFYzKQorICAgICAgICAgb3B0 aW9ucyA9IFNTTF9PUF9BTEx8U1NMX09QX05PX1NTTHYyfFNTTF9PUF9OT19TU0x2MzsKKyAgICAg ZWxzZSBpZiAocHJvdG9jb2wgPT0gUVNzbDo6U2VjdXJlUHJvdG9jb2xzKQorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3AuaCBiL3F0YmFzZS9z cmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3AuaAoraW5kZXggNDEwM2RlMjNlOC4u NTU0NzU4OTI1NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tl dF9vcGVuc3NsX3AuaAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29w ZW5zc2xfcC5oCitAQCAtMTA3LDYgKzEwNywxMiBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQor IAorKyNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9WRVJTSU9O X01BSk9SID49IDMKKyt0eXBlZGVmIHVpbnQ2NF90IHFzc2xvcHRpb25zOworKyNlbHNlCisrdHlw ZWRlZiB1bnNpZ25lZCBsb25nIHFzc2xvcHRpb25zOworKyNlbmRpZgorKworIHN0cnVjdCBRU3Ns RXJyb3JFbnRyeSB7CisgICAgIGludCBjb2RlOworICAgICBpbnQgZGVwdGg7CitAQCAtMTcxLDcg KzE3Nyw3IEBAIHB1YmxpYzoKKyAgICAgUVZlY3RvcjxRU3NsRXJyb3I+IG9jc3BFcnJvcnM7Cisg ICAgIFFCeXRlQXJyYXkgb2NzcFJlc3BvbnNlRGVyOworIAorLSAgICBRX0FVVE9URVNUX0VYUE9S VCBzdGF0aWMgbG9uZyBzZXR1cE9wZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFByb3RvY29sIHByb3Rv Y29sLCBRU3NsOjpTc2xPcHRpb25zIHNzbE9wdGlvbnMpOworKyAgICBRX0FVVE9URVNUX0VYUE9S VCBzdGF0aWMgcXNzbG9wdGlvbnMgc2V0dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2Nv bCBwcm90b2NvbCwgUVNzbDo6U3NsT3B0aW9ucyBzc2xPcHRpb25zKTsKKyAgICAgc3RhdGljIFFT c2xDaXBoZXIgUVNzbENpcGhlcl9mcm9tX1NTTF9DSVBIRVIoY29uc3QgU1NMX0NJUEhFUiAqY2lw aGVyKTsKKyAgICAgc3RhdGljIFFMaXN0PFFTc2xDZXJ0aWZpY2F0ZT4gU1RBQ0tPRlg1MDlfdG9f UVNzbENlcnRpZmljYXRlcyhTVEFDS19PRihYNTA5KSAqeDUwOSk7CisgICAgIHN0YXRpYyBRTGlz dDxRU3NsRXJyb3I+IHZlcmlmeShjb25zdCBRTGlzdDxRU3NsQ2VydGlmaWNhdGU+ICZjZXJ0aWZp Y2F0ZUNoYWluLCBjb25zdCBRU3RyaW5nICZob3N0TmFtZSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5jcHAgYi9xdGJhc2Uv c3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNwcAoraW5kZXggZTUz ZmIyNzlmMC4uNDU5Y2NkMGIxOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wv cXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsv c3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNwcAorQEAgLTE0OCw3ICsxNDgsNiBAQCBE RUZJTkVGVU5DKGludCwgRVZQX1BLRVlfdXBfcmVmLCBFVlBfUEtFWSAqYSwgYSwgcmV0dXJuIDAs IHJldHVybikKKyBERUZJTkVGVU5DMihFVlBfUEtFWV9DVFggKiwgRVZQX1BLRVlfQ1RYX25ldywg RVZQX1BLRVkgKnBrZXksIHBrZXksIEVOR0lORSAqZSwgZSwgcmV0dXJuIG51bGxwdHIsIHJldHVy bikKKyBERUZJTkVGVU5DKGludCwgRVZQX1BLRVlfcGFyYW1fY2hlY2ssIEVWUF9QS0VZX0NUWCAq Y3R4LCBjdHgsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQyh2b2lkLCBFVlBfUEtFWV9D VFhfZnJlZSwgRVZQX1BLRVlfQ1RYICpjdHgsIGN0eCwgcmV0dXJuLCByZXR1cm4pCistREVGSU5F RlVOQyhpbnQsIEVWUF9QS0VZX2Jhc2VfaWQsIEVWUF9QS0VZICphLCBhLCByZXR1cm4gTklEX3Vu ZGVmLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIFJTQV9iaXRzLCBSU0EgKmEsIGEsIHJldHVy biAwLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIERTQV9iaXRzLCBEU0EgKmEsIGEsIHJldHVy biAwLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIE9QRU5TU0xfc2tfbnVtLCBPUEVOU1NMX1NU QUNLICphLCBhLCByZXR1cm4gLTEsIHJldHVybikKK0BAIC0xNTgsNyArMTU3LDcgQEAgREVGSU5F RlVOQzIodm9pZCwgT1BFTlNTTF9za19wdXNoLCBPUEVOU1NMX1NUQUNLICphLCBhLCB2b2lkICpi LCBiLCByZXR1cm4sIERVTU0KKyBERUZJTkVGVU5DKHZvaWQsIE9QRU5TU0xfc2tfZnJlZSwgT1BF TlNTTF9TVEFDSyAqYSwgYSwgcmV0dXJuLCBEVU1NWUFSRykKKyBERUZJTkVGVU5DMih2b2lkICos IE9QRU5TU0xfc2tfdmFsdWUsIE9QRU5TU0xfU1RBQ0sgKmEsIGEsIGludCBiLCBiLCByZXR1cm4g bnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBTU0xfc2Vzc2lvbl9yZXVzZWQsIFNT TCAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikKKy1ERUZJTkVGVU5DMih1bnNpZ25lZCBsb25nLCBT U0xfQ1RYX3NldF9vcHRpb25zLCBTU0xfQ1RYICpjdHgsIGN0eCwgdW5zaWduZWQgbG9uZyBvcCwg b3AsIHJldHVybiAwLCByZXR1cm4pCisrREVGSU5FRlVOQzIocXNzbG9wdGlvbnMsIFNTTF9DVFhf c2V0X29wdGlvbnMsIFNTTF9DVFggKmN0eCwgY3R4LCBxc3Nsb3B0aW9ucyBvcCwgb3AsIHJldHVy biAwLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIFNTTF9DVFhfZ2V0X3NlY3VyaXR5X2xldmVs LCBjb25zdCBTU0xfQ1RYICpjdHgsIGN0eCwgcmV0dXJuIC0xLCByZXR1cm4pCisgREVGSU5FRlVO QzIodm9pZCwgU1NMX0NUWF9zZXRfc2VjdXJpdHlfbGV2ZWwsIFNTTF9DVFggKmN0eCwgY3R4LCBp bnQgbGV2ZWwsIGxldmVsLCByZXR1cm4sIHJldHVybikKKyAjaWZkZWYgVExTMV8zX1ZFUlNJT04K K0BAIC0zNzEsNyArMzcwLDE1IEBAIERFRklORUZVTkMoY29uc3QgU1NMX0NJUEhFUiAqLCBTU0xf Z2V0X2N1cnJlbnRfY2lwaGVyLCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyCisgREVGSU5FRlVO QyhpbnQsIFNTTF92ZXJzaW9uLCBjb25zdCBTU0wgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCisg REVGSU5FRlVOQzIoaW50LCBTU0xfZ2V0X2Vycm9yLCBTU0wgKmEsIGEsIGludCBiLCBiLCByZXR1 cm4gLTEsIHJldHVybikKKyBERUZJTkVGVU5DKFNUQUNLX09GKFg1MDkpICosIFNTTF9nZXRfcGVl cl9jZXJ0X2NoYWluLCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisrCisrI2lm IGRlZmluZWQoT1BFTlNTTF9WRVJTSU9OX01BSk9SKSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1Ig Pj0gMworK0RFRklORUZVTkMoWDUwOSAqLCBTU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRlLCBTU0wg KmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisrREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZ X2dldF9iYXNlX2lkLCBjb25zdCBFVlBfUEtFWSAqcGtleSwgcGtleSwgcmV0dXJuIC0xLCByZXR1 cm4pCisrI2Vsc2UKKyBERUZJTkVGVU5DKFg1MDkgKiwgU1NMX2dldF9wZWVyX2NlcnRpZmljYXRl LCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisrREVGSU5FRlVOQyhpbnQsIEVW UF9QS0VZX2Jhc2VfaWQsIEVWUF9QS0VZICphLCBhLCByZXR1cm4gTklEX3VuZGVmLCByZXR1cm4p CisrI2VuZGlmIC8vIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrCisgREVGSU5FRlVOQyhs b25nLCBTU0xfZ2V0X3ZlcmlmeV9yZXN1bHQsIGNvbnN0IFNTTCAqYSwgYSwgcmV0dXJuIC0xLCBy ZXR1cm4pCisgREVGSU5FRlVOQyhTU0wgKiwgU1NMX25ldywgU1NMX0NUWCAqYSwgYSwgcmV0dXJu IG51bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5DKFNTTF9DVFggKiwgU1NMX2dldF9TU0xfQ1RY LCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCitAQCAtNDkyLDkgKzQ5OSw3IEBA IERFRklORUZVTkMoREggKiwgREhfbmV3LCBEVU1NWUFSRywgRFVNTVlBUkcsIHJldHVybiBudWxs cHRyLCByZXR1cm4pCisgREVGSU5FRlVOQyh2b2lkLCBESF9mcmVlLCBESCAqZGgsIGRoLCByZXR1 cm4sIERVTU1ZQVJHKQorIERFRklORUZVTkMzKERIICosIGQyaV9ESHBhcmFtcywgREgqKmEsIGEs IGNvbnN0IHVuc2lnbmVkIGNoYXIgKipwcCwgcHAsIGxvbmcgbGVuZ3RoLCBsZW5ndGgsIHJldHVy biBudWxscHRyLCByZXR1cm4pCisgREVGSU5FRlVOQzIoaW50LCBpMmRfREhwYXJhbXMsIERIICph LCBhLCB1bnNpZ25lZCBjaGFyICoqcCwgcCwgcmV0dXJuIC0xLCByZXR1cm4pCistI2lmbmRlZiBP UEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisgREVGSU5FRlVOQzIoaW50LCBESF9jaGVjaywgREgg KmRoLCBkaCwgaW50ICpjb2RlcywgY29kZXMsIHJldHVybiAwLCByZXR1cm4pCistI2VuZGlmIC8v IE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyBERUZJTkVGVU5DMyhCSUdOVU0gKiwgQk5fYmlu MmJuLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzLCBzLCBpbnQgbGVuLCBsZW4sIEJJR05VTSAqcmV0 LCByZXQsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisgCisgI2lmbmRlZiBPUEVOU1NMX05PX0VD CitAQCAtODY4LDcgKzg3Myw2IEBAIGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5bWJvbHMoKQorICAg ICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9DVFhfbmV3KQorICAgICBSRVNPTFZFRlVOQyhFVlBfUEtF WV9wYXJhbV9jaGVjaykKKyAgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfQ1RYX2ZyZWUpCistICAg IFJFU09MVkVGVU5DKEVWUF9QS0VZX2Jhc2VfaWQpCisgICAgIFJFU09MVkVGVU5DKFJTQV9iaXRz KQorICAgICBSRVNPTFZFRlVOQyhPUEVOU1NMX3NrX25ld19udWxsKQorICAgICBSRVNPTFZFRlVO QyhPUEVOU1NMX3NrX3B1c2gpCitAQCAtMTEwNyw3ICsxMTExLDE1IEBAIGJvb2wgcV9yZXNvbHZl T3BlblNzbFN5bWJvbHMoKQorICAgICBSRVNPTFZFRlVOQyhTU0xfdmVyc2lvbikKKyAgICAgUkVT T0xWRUZVTkMoU1NMX2dldF9lcnJvcikKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9wZWVyX2Nl cnRfY2hhaW4pCisrCisrI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJTSU9OX01BSk9SKSAmJiBPUEVO U1NMX1ZFUlNJT05fTUFKT1IgPj0gMworKyAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0MV9wZWVyX2Nl cnRpZmljYXRlKQorKyAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9nZXRfYmFzZV9pZCkKKysjZWxz ZQorICAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUpCisrICAgIFJFU09M VkVGVU5DKEVWUF9QS0VZX2Jhc2VfaWQpCisrI2VuZGlmIC8vIE9QRU5TU0xfVkVSU0lPTl9NQUpP UiA+PSAzCisrCisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRfdmVyaWZ5X3Jlc3VsdCkKKyAgICAg UkVTT0xWRUZVTkMoU1NMX25ldykKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9TU0xfQ1RYKQor QEAgLTEyMDYsOSArMTIxOCw3IEBAIGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5bWJvbHMoKQorICAg ICBSRVNPTFZFRlVOQyhESF9mcmVlKQorICAgICBSRVNPTFZFRlVOQyhkMmlfREhwYXJhbXMpCisg ICAgIFJFU09MVkVGVU5DKGkyZF9ESHBhcmFtcykKKy0jaWZuZGVmIE9QRU5TU0xfTk9fREVQUkVD QVRFRF8zXzAKKyAgICAgUkVTT0xWRUZVTkMoREhfY2hlY2spCistI2VuZGlmIC8vIE9QRU5TU0xf Tk9fREVQUkVDQVRFRF8zXzAKKyAgICAgUkVTT0xWRUZVTkMoQk5fYmluMmJuKQorIAorICNpZm5k ZWYgT1BFTlNTTF9OT19FQworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNz bHNvY2tldF9vcGVuc3NsX3N5bWJvbHNfcC5oIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Ns c29ja2V0X29wZW5zc2xfc3ltYm9sc19wLmgKK2luZGV4IDk1ZTg4OTdhM2IuLjI3YWVmZmExOGEg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9z eW1ib2xzX3AuaAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5z c2xfc3ltYm9sc19wLmgKK0BAIC0yMzcsNyArMjM3LDYgQEAgUV9BVVRPVEVTVF9FWFBPUlQgaW50 IHFfRVZQX1BLRVlfdXBfcmVmKEVWUF9QS0VZICphKTsKKyBFVlBfUEtFWV9DVFggKnFfRVZQX1BL RVlfQ1RYX25ldyhFVlBfUEtFWSAqcGtleSwgRU5HSU5FICplKTsKKyB2b2lkIHFfRVZQX1BLRVlf Q1RYX2ZyZWUoRVZQX1BLRVlfQ1RYICpjdHgpOworIGludCBxX0VWUF9QS0VZX3BhcmFtX2NoZWNr KEVWUF9QS0VZX0NUWCAqY3R4KTsKKy1pbnQgcV9FVlBfUEtFWV9iYXNlX2lkKEVWUF9QS0VZICph KTsKKyBpbnQgcV9SU0FfYml0cyhSU0EgKmEpOworIFFfQVVUT1RFU1RfRVhQT1JUIGludCBxX09Q RU5TU0xfc2tfbnVtKE9QRU5TU0xfU1RBQ0sgKmEpOworIFFfQVVUT1RFU1RfRVhQT1JUIHZvaWQg cV9PUEVOU1NMX3NrX3BvcF9mcmVlKE9QRU5TU0xfU1RBQ0sgKmEsIHZvaWQgKCpiKSh2b2lkICop KTsKK0BAIC0yNDYsNyArMjQ1LDcgQEAgUV9BVVRPVEVTVF9FWFBPUlQgdm9pZCBxX09QRU5TU0xf c2tfcHVzaChPUEVOU1NMX1NUQUNLICpzdCwgdm9pZCAqZGF0YSk7CisgUV9BVVRPVEVTVF9FWFBP UlQgdm9pZCBxX09QRU5TU0xfc2tfZnJlZShPUEVOU1NMX1NUQUNLICphKTsKKyBRX0FVVE9URVNU X0VYUE9SVCB2b2lkICogcV9PUEVOU1NMX3NrX3ZhbHVlKE9QRU5TU0xfU1RBQ0sgKmEsIGludCBi KTsKKyBpbnQgcV9TU0xfc2Vzc2lvbl9yZXVzZWQoU1NMICphKTsKKy11bnNpZ25lZCBsb25nIHFf U1NMX0NUWF9zZXRfb3B0aW9ucyhTU0xfQ1RYICpjdHgsIHVuc2lnbmVkIGxvbmcgb3ApOworK3Fz c2xvcHRpb25zIHFfU1NMX0NUWF9zZXRfb3B0aW9ucyhTU0xfQ1RYICpjdHgsIHFzc2xvcHRpb25z IG9wKTsKKyBpbnQgcV9PUEVOU1NMX2luaXRfc3NsKHVpbnQ2NF90IG9wdHMsIGNvbnN0IE9QRU5T U0xfSU5JVF9TRVRUSU5HUyAqc2V0dGluZ3MpOworIHNpemVfdCBxX1NTTF9nZXRfY2xpZW50X3Jh bmRvbShTU0wgKmEsIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbik7Cisgc2l6ZV90 IHFfU1NMX1NFU1NJT05fZ2V0X21hc3Rlcl9rZXkoY29uc3QgU1NMX1NFU1NJT04gKnNlc3Npb24s IHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbik7CitAQCAtNTEwLDcgKzUwOSw2IEBA IGNvbnN0IFNTTF9DSVBIRVIgKnFfU1NMX2dldF9jdXJyZW50X2NpcGhlcihTU0wgKmEpOworIGlu dCBxX1NTTF92ZXJzaW9uKGNvbnN0IFNTTCAqYSk7CisgaW50IHFfU1NMX2dldF9lcnJvcihTU0wg KmEsIGludCBiKTsKKyBTVEFDS19PRihYNTA5KSAqcV9TU0xfZ2V0X3BlZXJfY2VydF9jaGFpbihT U0wgKmEpOworLVg1MDkgKnFfU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKFNTTCAqYSk7CisgbG9u ZyBxX1NTTF9nZXRfdmVyaWZ5X3Jlc3VsdChjb25zdCBTU0wgKmEpOworIFNTTCAqcV9TU0xfbmV3 KFNTTF9DVFggKmEpOworIFNTTF9DVFggKnFfU1NMX2dldF9TU0xfQ1RYKFNTTCAqYSk7CitAQCAt NTgyLDEwICs1ODAsNyBAQCBESCAqcV9ESF9uZXcoKTsKKyB2b2lkIHFfREhfZnJlZShESCAqZGgp OworIERIICpxX2QyaV9ESHBhcmFtcyhESCAqKmEsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKipwcCwg bG9uZyBsZW5ndGgpOworIGludCBxX2kyZF9ESHBhcmFtcyhESCAqYSwgdW5zaWduZWQgY2hhciAq KnApOworLQorLSNpZm5kZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIGludCBxX0RIX2No ZWNrKERIICpkaCwgaW50ICpjb2Rlcyk7CistI2VuZGlmIC8vIE9QRU5TU0xfTk9fREVQUkVDQVRF RF8zXzAKKyAKKyBCSUdOVU0gKnFfQk5fYmluMmJuKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMsIGlu dCBsZW4sIEJJR05VTSAqcmV0KTsKKyAjZGVmaW5lIHFfU1NMX0NUWF9zZXRfdG1wX2RoKGN0eCwg ZGgpIHFfU1NMX0NUWF9jdHJsKChjdHgpLCBTU0xfQ1RSTF9TRVRfVE1QX0RILCAwLCAoY2hhciAq KWRoKQorQEAgLTc1NCw2ICs3NDksMTcgQEAgdm9pZCBxX0NSWVBUT19mcmVlKHZvaWQgKnN0ciwg Y29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUpOworIGludCBxX1NTTF9DVFhfZ2V0X3NlY3VyaXR5 X2xldmVsKGNvbnN0IFNTTF9DVFggKmN0eCk7Cisgdm9pZCBxX1NTTF9DVFhfc2V0X3NlY3VyaXR5 X2xldmVsKFNTTF9DVFggKmN0eCwgaW50IGxldmVsKTsKKyAKKysvLyBIZXJlIHdlIGhhdmUgdGhl IG9uZXMgdGhhdCBtYWtlIGRpZmZlcmVuY2UgYmV0d2VlbiBPcGVuU1NMIHByZS9wb3N0IHYzOgor KyNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9WRVJTSU9OX01B Sk9SID49IDMKKytYNTA5ICpxX1NTTF9nZXQxX3BlZXJfY2VydGlmaWNhdGUoU1NMICphKTsKKysj ZGVmaW5lIHFfU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlIHFfU1NMX2dldDFfcGVlcl9jZXJ0aWZp Y2F0ZQorK2ludCBxX0VWUF9QS0VZX2dldF9iYXNlX2lkKGNvbnN0IEVWUF9QS0VZICpwa2V5KTsK KysjZGVmaW5lIHFfRVZQX1BLRVlfYmFzZV9pZCBxX0VWUF9QS0VZX2dldF9iYXNlX2lkCisrI2Vs c2UKKytYNTA5ICpxX1NTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShTU0wgKmEpOworK2ludCBxX0VW UF9QS0VZX2Jhc2VfaWQoRVZQX1BLRVkgKmEpOworKyNlbmRpZiAvLyBPUEVOU1NMX1ZFUlNJT05f TUFKT1IgPj0gMworKworIFFUX0VORF9OQU1FU1BBQ0UKKyAKKyAjZW5kaWYKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oIGIv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2UvcXRfZWdsX3AuaAoraW5k ZXggYmYzN2QwN2ZkOC4uZGJkNDJmYjc5OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L2VnbGNvbnZlbmllbmNlL3F0X2VnbF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGxh dGZvcm1zdXBwb3J0L2VnbGNvbnZlbmllbmNlL3F0X2VnbF9wLmgKK0BAIC02MSw3ICs2MSwxMSBA QAorICMgaWYgIWRlZmluZWQoUV9PU19JTlRFR1JJVFkpCisgIyAgZGVmaW5lIFdJTl9JTlRFUkZB Q0VfQ1VTVE9NICAgLy8gTlYKKyAjIGVuZGlmIC8vIFFfT1NfSU5URUdSSVRZCistI2VuZGlmICAv LyBRVF9FR0xfTk9fWDExCisrI2Vsc2UgLy8gUVRfRUdMX05PX1gxMQorKy8vIElmIG9uZSBoYXMg YW4gZWdscGxhdGZvcm0uaCB3aXRoIGh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvRUdM LVJlZ2lzdHJ5L3B1bGwvMTMwCisrLy8gdGhhdCBuZWVkcyBVU0VfWDExIHRvIGJlIGRlZmluZWQu CisrIyBkZWZpbmUgVVNFX1gxMQorKyNlbmRpZgorIAorICNpZmRlZiBRVF9FR0xfV0FZTEFORAor ICMgZGVmaW5lIFdBWUxBTkQgLy8gTlYKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRhYmFzZS5jcHAg Yi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZv bnRjb25maWdkYXRhYmFzZS5jcHAKK2luZGV4IDE1OWI0OTBjZTAuLjAwYWE4MGNkNTggMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25m aWcvcWZvbnRjb25maWdkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L2ZvbnRkYXRhYmFzZXMvZm9udGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNlLmNwcAorQEAg LTU2Nyw2ICs1NjcsOCBAQCB2b2lkIFFGb250Y29uZmlnRGF0YWJhc2U6OnBvcHVsYXRlRm9udERh dGFiYXNlKCkKKyAgICAgICAgIGZvbnRzID0gRmNGb250TGlzdChudWxscHRyLCBwYXR0ZXJuLCBv cyk7CisgICAgICAgICBGY09iamVjdFNldERlc3Ryb3kob3MpOworICAgICAgICAgRmNQYXR0ZXJu RGVzdHJveShwYXR0ZXJuKTsKKysgICAgICAgIGlmICghZm9udHMpCisrICAgICAgICAgICAgcmV0 dXJuOworICAgICB9CisgCisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZm9udHMtPm5mb250OyBp KyspCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29t bW9uL3F4a2Jjb21tb24uY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGti Y29tbW9uL3F4a2Jjb21tb24uY3BwCitpbmRleCBiNzEzYzE5NDQ3Li43Y2I5YThjNzlhIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jj b21tb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21t b24vcXhrYmNvbW1vbi5jcHAKK0BAIC05NSw2ICs5NSw3IEBAIHN0YXRpYyBjb25zdGV4cHIgY29u c3QgYXV0byBLZXlUYmwgPSBxTWFrZUFycmF5KAorICAgICAgICAgWGtiMlF0PFhLQl9LRVlfQ2xl YXIsICAgICAgICAgICAgICAgICAgIFF0OjpLZXlfRGVsZXRlPiwKKyAgICAgICAgIFhrYjJRdDxY S0JfS0VZX1BhdXNlLCAgICAgICAgICAgICAgICAgICBRdDo6S2V5X1BhdXNlPiwKKyAgICAgICAg IFhrYjJRdDxYS0JfS0VZX1ByaW50LCAgICAgICAgICAgICAgICAgICBRdDo6S2V5X1ByaW50PiwK KysgICAgICAgIFhrYjJRdDxYS0JfS0VZX1N5c19SZXEsICAgICAgICAgICAgICAgICBRdDo6S2V5 X1N5c1JlcT4sCisgICAgICAgICBYa2IyUXQ8MHgxMDA1RkY2MCwgICAgICAgICAgICAgICAgICAg ICAgUXQ6OktleV9TeXNSZXE+LCAgICAgICAgIC8vIGhhcmRjb2RlZCBTdW4gU3lzUmVxCisgICAg ICAgICBYa2IyUXQ8MHgxMDA3ZmYwMCwgICAgICAgICAgICAgICAgICAgICAgUXQ6OktleV9TeXNS ZXE+LCAgICAgICAgIC8vIGhhcmRjb2RlZCBYMzg2IFN5c1JlcQorIAorQEAgLTQ3MSw3ICs0NzIs NyBAQCBRVmVjdG9yPHhrYl9rZXlzeW1fdD4gUVhrYkNvbW1vbjo6dG9LZXlzeW0oUUtleUV2ZW50 ICpldmVudCkKKyAgICAgfSBlbHNlIGlmIChldmVudC0+bW9kaWZpZXJzKCkgJiBRdDo6S2V5cGFk TW9kaWZpZXIpIHsKKyAgICAgICAgIGlmIChxdEtleSA+PSBRdDo6S2V5XzAgJiYgcXRLZXkgPD0g UXQ6OktleV85KQorICAgICAgICAgICAgIGtleXN5bXMuYXBwZW5kKFhLQl9LRVlfS1BfMCArIChx dEtleSAtIFF0OjpLZXlfMCkpOworLSAgICB9IGVsc2UgaWYgKGlzTGF0aW4ocXRLZXkpICYmIGV2 ZW50LT50ZXh0KCkuaXNVcHBlcigpKSB7CisrICAgIH0gZWxzZSBpZiAoaXNMYXRpbjEocXRLZXkp ICYmIGV2ZW50LT50ZXh0KCkuaXNVcHBlcigpKSB7CisgICAgICAgICBrZXlzeW1zLmFwcGVuZChx dEtleSk7CisgICAgIH0KKyAKK0BAIC01MjMsNyArNTI0LDcgQEAgaW50IFFYa2JDb21tb246Omtl eXN5bVRvUXRLZXkoeGtiX2tleXN5bV90IGtleXN5bSwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1v ZGlmaWUKKyAgICAgICAgIC8vIFdpdGggc3RhbmRhcmQgc2hvcnRjdXRzIHdlIHNob3VsZCBwcmVm ZXIgYSBsYXRpbiBjaGFyYWN0ZXIsIHRoaXMgaXMKKyAgICAgICAgIC8vIGZvciBjaGVja3MgbGlr ZSAic29tZSBxa2V5ZXZlbnQgPT0gUUtleVNlcXVlbmNlOjpDb3B5IiB0byB3b3JrIGV2ZW4KKyAg ICAgICAgIC8vIHdoZW4gdXNpbmcgZm9yIGV4YW1wbGUgJ3J1c3NpYW4nIGtleWJvYXJkIGxheW91 dC4KKy0gICAgICAgIGlmICghUVhrYkNvbW1vbjo6aXNMYXRpbihrZXlzeW0pKSB7CisrICAgICAg ICBpZiAoIVFYa2JDb21tb246OmlzTGF0aW4xKGtleXN5bSkpIHsKKyAgICAgICAgICAgICB4a2Jf a2V5c3ltX3QgbGF0aW5LZXlzeW0gPSBRWGtiQ29tbW9uOjpsb29rdXBMYXRpbktleXN5bShzdGF0 ZSwgY29kZSk7CisgICAgICAgICAgICAgaWYgKGxhdGluS2V5c3ltICE9IFhLQl9LRVlfTm9TeW1i b2wpCisgICAgICAgICAgICAgICAgIGtleXN5bSA9IGxhdGluS2V5c3ltOworQEAgLTU0Niw3ICs1 NDcsNyBAQCBzdGF0aWMgaW50IGtleXN5bVRvUXRLZXlfaW50ZXJuYWwoeGtiX2tleXN5bV90IGtl eXN5bSwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZAorICAgICB9IGVsc2UgaWYgKGtleXN5bSA+ PSBYS0JfS0VZX0tQXzAgJiYga2V5c3ltIDw9IFhLQl9LRVlfS1BfOSkgeworICAgICAgICAgLy8g bnVtZXJpYyBrZXlwYWQga2V5cworICAgICAgICAgcXRLZXkgPSBRdDo6S2V5XzAgKyAoa2V5c3lt IC0gWEtCX0tFWV9LUF8wKTsKKy0gICAgfSBlbHNlIGlmIChRWGtiQ29tbW9uOjppc0xhdGluKGtl eXN5bSkpIHsKKysgICAgfSBlbHNlIGlmIChRWGtiQ29tbW9uOjppc0xhdGluMShrZXlzeW0pKSB7 CisgICAgICAgICBxdEtleSA9IFFYa2JDb21tb246OnF4a2Jjb21tb25feGtiX2tleXN5bV90b191 cHBlcihrZXlzeW0pOworICAgICB9IGVsc2UgeworICAgICAgICAgLy8gY2hlY2sgaWYgd2UgaGF2 ZSBhIGRpcmVjdCBtYXBwaW5nCitAQCAtNjc4LDcgKzY3OSw3IEBAIFFMaXN0PGludD4gUVhrYkNv bW1vbjo6cG9zc2libGVLZXlzKHhrYl9zdGF0ZSAqc3RhdGUsIGNvbnN0IFFLZXlFdmVudCAqZXZl bnQsCisgICAgICAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbmVlZGVkTW9kcyA9IE1vZHNUYmxb aV07CisgICAgICAgICBpZiAoKG1vZGlmaWVycyAmIG5lZWRlZE1vZHMpID09IG5lZWRlZE1vZHMp IHsKKyAgICAgICAgICAgICBpZiAoaSA9PSA4KSB7CistICAgICAgICAgICAgICAgIGlmIChpc0xh dGluKGJhc2VRdEtleSkpCisrICAgICAgICAgICAgICAgIGlmIChpc0xhdGluMShiYXNlUXRLZXkp KQorICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgIC8vIGFk ZCBhIGxhdGluIGtleSBhcyBhIGZhbGwgYmFjayBrZXkKKyAgICAgICAgICAgICAgICAgc3ltID0g bG9va3VwTGF0aW5LZXlzeW0oc3RhdGUsIGtleWNvZGUpOworQEAgLTczMyw3ICs3MzQsNyBAQCB2 b2lkIFFYa2JDb21tb246OnZlcmlmeUhhc0xhdGluTGF5b3V0KHhrYl9rZXltYXAgKmtleW1hcCkK KyAgICAgZm9yICh4a2JfbGF5b3V0X2luZGV4X3QgbGF5b3V0ID0gMDsgbGF5b3V0IDwgbGF5b3V0 Q291bnQ7ICsrbGF5b3V0KSB7CisgICAgICAgICBmb3IgKHhrYl9rZXljb2RlX3QgY29kZSA9IG1p bktleWNvZGU7IGNvZGUgPCBtYXhLZXljb2RlOyArK2NvZGUpIHsKKyAgICAgICAgICAgICB4a2Jf a2V5bWFwX2tleV9nZXRfc3ltc19ieV9sZXZlbChrZXltYXAsIGNvZGUsIGxheW91dCwgMCwgJmtl eXN5bXMpOworLSAgICAgICAgICAgIGlmIChrZXlzeW1zICYmIGlzTGF0aW4oa2V5c3ltc1swXSkp CisrICAgICAgICAgICAgaWYgKGtleXN5bXMgJiYgaXNMYXRpbjEoa2V5c3ltc1swXSkpCisgICAg ICAgICAgICAgICAgIG5yTGF0aW5LZXlzKys7CisgICAgICAgICAgICAgaWYgKG5yTGF0aW5LZXlz ID4gMTApIC8vIGFyYml0cmFyaWx5IGNob3NlbiB0aHJlc2hvbGQKKyAgICAgICAgICAgICAgICAg cmV0dXJuOworQEAgLTc2Niw3ICs3NjcsNyBAQCB4a2Jfa2V5c3ltX3QgUVhrYkNvbW1vbjo6bG9v a3VwTGF0aW5LZXlzeW0oeGtiX3N0YXRlICpzdGF0ZSwgeGtiX2tleWNvZGVfdCBrZXljbworICAg ICAgICAgeGtiX2xldmVsX2luZGV4X3QgbGV2ZWwgPSB4a2Jfc3RhdGVfa2V5X2dldF9sZXZlbChz dGF0ZSwga2V5Y29kZSwgbGF5b3V0KTsKKyAgICAgICAgIGlmICh4a2Jfa2V5bWFwX2tleV9nZXRf c3ltc19ieV9sZXZlbChrZXltYXAsIGtleWNvZGUsIGxheW91dCwgbGV2ZWwsICZzeW1zKSAhPSAx KQorICAgICAgICAgICAgIGNvbnRpbnVlOworLSAgICAgICAgaWYgKGlzTGF0aW4oc3ltc1swXSkp IHsKKysgICAgICAgIGlmIChpc0xhdGluMShzeW1zWzBdKSkgeworICAgICAgICAgICAgIHN5bSA9 IHN5bXNbMF07CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5o IGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25f cC5oCitpbmRleCA1NjFlYWUwM2RiLi44Mzg5YmQ4ZjVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5oCisrKysgYi9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbl9wLmgK K0BAIC05NCw4ICs5NCw4IEBAIHB1YmxpYzoKKyAgICAgc3RhdGljIHZvaWQgdmVyaWZ5SGFzTGF0 aW5MYXlvdXQoeGtiX2tleW1hcCAqa2V5bWFwKTsKKyAgICAgc3RhdGljIHhrYl9rZXlzeW1fdCBs b29rdXBMYXRpbktleXN5bSh4a2Jfc3RhdGUgKnN0YXRlLCB4a2Jfa2V5Y29kZV90IGtleWNvZGUp OworIAorLSAgICBzdGF0aWMgYm9vbCBpc0xhdGluKHhrYl9rZXlzeW1fdCBzeW0pIHsKKy0gICAg ICAgIHJldHVybiAoKHN5bSA+PSAnYScgJiYgc3ltIDw9ICd6JykgfHwgKHN5bSA+PSAnQScgJiYg c3ltIDw9ICdaJykpOworKyAgICBzdGF0aWMgYm9vbCBpc0xhdGluMSh4a2Jfa2V5c3ltX3Qgc3lt KSB7CisrICAgICAgICByZXR1cm4gc3ltIDw9IDB4ZmY7CisgICAgIH0KKyAgICAgc3RhdGljIGJv b2wgaXNLZXlwYWQoeGtiX2tleXN5bV90IHN5bSkgeworICAgICAgICAgcmV0dXJuIHN5bSA+PSBY S0JfS0VZX0tQX1NwYWNlICYmIHN5bSA8PSBYS0JfS0VZX0tQXzk7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2UvcWttc2RldmljZS5jcHAgYi9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcAor aW5kZXggOGNkN2Y5YjM2OC4uNDA2Zjg0NjYzZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxh dGZvcm1zdXBwb3J0L2ttc2NvbnZlbmllbmNlL3FrbXNkZXZpY2UuY3BwCisrKysgYi9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcAorQEAgLTMx OCw3ICszMTgsNyBAQCBRUGxhdGZvcm1TY3JlZW4gKlFLbXNEZXZpY2U6OmNyZWF0ZVNjcmVlbkZv ckNvbm5lY3Rvcihkcm1Nb2RlUmVzUHRyIHJlc291cmNlcywKKyAKKyAgICAgaWYgKGN1cnJlbnQg PCAwICYmIGNydGNfbW9kZS5jbG9jayAhPSAwKSB7CisgICAgICAgICBtb2RlcyA8PCBjcnRjX21v ZGU7CistICAgICAgICBjdXJyZW50ID0gbW9kZS5zaXplKCkgLSAxOworKyAgICAgICAgY3VycmVu dCA9IG1vZGVzLnNpemUoKSAtIDE7CisgICAgIH0KKyAKKyAgICAgaWYgKGNvbmZpZ3VyYXRpb24g PT0gT3V0cHV0Q29uZmlnQ3VycmVudCkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvYXRzcGlhZGFwdG9yLmNwcCBiL3F0YmFzZS9zcmMv cGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3BwCitpbmRl eCA5MTUzZmQyMGJiLi4yNTVlYTVlMzNlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9y bXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2F0c3BpYWRhcHRvci5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3Bw CitAQCAtMTk0LDYgKzE5NCw5IEBAIFFTdHJpbmcgQXRTcGlBZGFwdG9yOjppbnRyb3NwZWN0KGNv bnN0IFFTdHJpbmcgJnBhdGgpIGNvbnN0CisgICAgICAgICAgICAgICAgICIgICAgICA8YXJnIGRp cmVjdGlvbj1cIm91dFwiIHR5cGU9XCIoc28pXCIvPlxuIgorICAgICAgICAgICAgICAgICAiICAg ICAgPGFubm90YXRpb24gdmFsdWU9XCJRU3BpT2JqZWN0UmVmZXJlbmNlXCIgbmFtZT1cIm9yZy5x dHByb2plY3QuUXREQnVzLlF0VHlwZU5hbWUuT3V0MFwiLz5cbiIKKyAgICAgICAgICAgICAgICAg IiAgICA8L21ldGhvZD5cbiIKKysgICAgICAgICAgICAgICAgIiAgICA8bWV0aG9kIG5hbWU9XCJH ZXRBY2Nlc3NpYmxlSWRcIj5cbiIKKysgICAgICAgICAgICAgICAgIiAgICAgIDxhcmcgZGlyZWN0 aW9uPVwib3V0XCIgdHlwZT1cInNcIi8+XG4iCisrICAgICAgICAgICAgICAgICIgICAgPC9tZXRo b2Q+XG4iCisgICAgICAgICAgICAgICAgICIgIDwvaW50ZXJmYWNlPlxuIgorICAgICAgICAgICAg ICAgICApOworIAorQEAgLTkxMyw4ICs5MTYsMTcgQEAgdm9pZCBBdFNwaUFkYXB0b3I6Om5vdGlm eShRQWNjZXNzaWJsZUV2ZW50ICpldmVudCkKKyAgICAgfQorICAgICBjYXNlIFFBY2Nlc3NpYmxl OjpOYW1lQ2hhbmdlZDogeworICAgICAgICAgaWYgKHNlbmRPYmplY3QgfHwgc2VuZE9iamVjdF9w cm9wZXJ0eV9jaGFuZ2UgfHwgc2VuZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2VfYWNjZXNzaWJsZV9u YW1lKSB7CistICAgICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShldmVu dC0+YWNjZXNzaWJsZUludGVyZmFjZSgpKTsKKy0gICAgICAgICAgICBRVmFyaWFudExpc3QgYXJn cyA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtbmFt ZSIpLCAwLCAwLCB2YXJpYW50Rm9yUGF0aChwYXRoKSk7CisrICAgICAgICAgICAgUUFjY2Vzc2li bGVJbnRlcmZhY2UgKmlmYWNlID0gZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKTsKKysgICAg ICAgICAgICBpZiAoIWlmYWNlKSB7CisrICAgICAgICAgICAgICAgIHFDRGVidWcobGNBY2Nlc3Np YmlsaXR5QXRzcGksCisrICAgICAgICAgICAgICAgICAgICAgICAgIk5hbWVDaGFuZ2VkIGV2ZW50 IGZyb20gaW52YWxpZCBhY2Nlc3NpYmxlLiIpOworKyAgICAgICAgICAgICAgICByZXR1cm47Cisr ICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRl cmZhY2UoaWZhY2UpOworKyAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RCdXNT aWduYWxBcmd1bWVudHMoCisrICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoImFjY2Vzc2li bGUtbmFtZSIpLCAwLCAwLAorKyAgICAgICAgICAgICAgICBRVmFyaWFudDo6ZnJvbVZhbHVlKFFE QnVzVmFyaWFudChpZmFjZS0+dGV4dChRQWNjZXNzaWJsZTo6TmFtZSkpKSk7CisgICAgICAgICAg ICAgc2VuZERCdXNTaWduYWwocGF0aCwgUUxhdGluMVN0cmluZyhBVFNQSV9EQlVTX0lOVEVSRkFD RV9FVkVOVF9PQkpFQ1QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJp bmcoIlByb3BlcnR5Q2hhbmdlIiksIGFyZ3MpOworICAgICAgICAgfQorQEAgLTkyMiw4ICs5MzQs MTcgQEAgdm9pZCBBdFNwaUFkYXB0b3I6Om5vdGlmeShRQWNjZXNzaWJsZUV2ZW50ICpldmVudCkK KyAgICAgfQorICAgICBjYXNlIFFBY2Nlc3NpYmxlOjpEZXNjcmlwdGlvbkNoYW5nZWQ6IHsKKyAg ICAgICAgIGlmIChzZW5kT2JqZWN0IHx8IHNlbmRPYmplY3RfcHJvcGVydHlfY2hhbmdlIHx8IHNl bmRPYmplY3RfcHJvcGVydHlfY2hhbmdlX2FjY2Vzc2libGVfZGVzY3JpcHRpb24pIHsKKy0gICAg ICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGV2ZW50LT5hY2Nlc3NpYmxl SW50ZXJmYWNlKCkpOworLSAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RCdXNT aWduYWxBcmd1bWVudHMoUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1kZXNjcmlwdGlvbiIpLCAw LCAwLCB2YXJpYW50Rm9yUGF0aChwYXRoKSk7CisrICAgICAgICAgICAgUUFjY2Vzc2libGVJbnRl cmZhY2UgKmlmYWNlID0gZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKTsKKysgICAgICAgICAg ICBpZiAoIWlmYWNlKSB7CisrICAgICAgICAgICAgICAgIHFDRGVidWcobGNBY2Nlc3NpYmlsaXR5 QXRzcGksCisrICAgICAgICAgICAgICAgICAgICAgICAgIkRlc2NyaXB0aW9uQ2hhbmdlZCBldmVu dCBmcm9tIGludmFsaWQgYWNjZXNzaWJsZS4iKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuOwor KyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50 ZXJmYWNlKGlmYWNlKTsKKysgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9IHBhY2tEQnVz U2lnbmFsQXJndW1lbnRzKAorKyAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJhY2Nlc3Np YmxlLWRlc2NyaXB0aW9uIiksIDAsIDAsCisrICAgICAgICAgICAgICAgIFFWYXJpYW50Ojpmcm9t VmFsdWUoUURCdXNWYXJpYW50KGlmYWNlLT50ZXh0KFFBY2Nlc3NpYmxlOjpEZXNjcmlwdGlvbikp KSk7CisgICAgICAgICAgICAgc2VuZERCdXNTaWduYWwocGF0aCwgUUxhdGluMVN0cmluZyhBVFNQ SV9EQlVTX0lOVEVSRkFDRV9FVkVOVF9PQkpFQ1QpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFMYXRpbjFTdHJpbmcoIlByb3BlcnR5Q2hhbmdlIiksIGFyZ3MpOworICAgICAgICAgfQor QEAgLTEwMzgsNyArMTA1OSw5IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpub3RpZnkoUUFjY2Vzc2li bGVFdmVudCAqZXZlbnQpCisgICAgICAgICAgICAgICAgIC8vIENvbWJvIEJveCB3aXRoIEFULVNQ SSBsaWtlcyB0byBiZSBzcGVjaWFsCisgICAgICAgICAgICAgICAgIC8vIEl0IHJlcXVpcmVzIGEg bmFtZS1jaGFuZ2UgdG8gdXBkYXRlIGNhY2hlcyBhbmQgdGhlbiBzZWxlY3Rpb24tY2hhbmdlZAor ICAgICAgICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGlmYWNlKTsK Ky0gICAgICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MxID0gcGFja0RCdXNTaWduYWxBcmd1 bWVudHMoUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsIHZhcmlhbnRGb3JQ YXRoKHBhdGgpKTsKKysgICAgICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MxID0gcGFja0RC dXNTaWduYWxBcmd1bWVudHMoCisrICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJh Y2Nlc3NpYmxlLW5hbWUiKSwgMCwgMCwKKysgICAgICAgICAgICAgICAgICAgIFFWYXJpYW50Ojpm cm9tVmFsdWUoUURCdXNWYXJpYW50KGlmYWNlLT50ZXh0KFFBY2Nlc3NpYmxlOjpOYW1lKSkpKTsK KyAgICAgICAgICAgICAgICAgc2VuZERCdXNTaWduYWwocGF0aCwgUUxhdGluMVN0cmluZyhBVFNQ SV9EQlVTX0lOVEVSRkFDRV9FVkVOVF9PQkpFQ1QpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRTGF0aW4xU3RyaW5nKCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdzMSk7CisgICAgICAg ICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzMiA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKFFT dHJpbmcoKSwgMCwgMCwgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoUVZhcmlhbnQo MCkpKSk7CitAQCAtMTM1OCw2ICsxMzgxLDI2IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpyZWdpc3Rl ckFwcGxpY2F0aW9uKCkKKyAgICAgZGVsZXRlIHJlZ2lzdHJ5OworIH0KKyAKKytuYW1lc3BhY2Ug eworK1FTdHJpbmcgYWNjZXNzaWJsZUlkRm9yQWNjZXNzaWJsZShRQWNjZXNzaWJsZUludGVyZmFj ZSAqYWNjZXNzaWJsZSkKKyt7CisrICAgIFFTdHJpbmcgcmVzdWx0OworKyAgICB3aGlsZSAoYWNj ZXNzaWJsZSkgeworKyAgICAgICAgaWYgKCFyZXN1bHQuaXNFbXB0eSgpKQorKyAgICAgICAgICAg IHJlc3VsdC5wcmVwZW5kKFFMYXRpbjFDaGFyKCcuJykpOworKyAgICAgICAgaWYgKGF1dG8gb2Jq ID0gYWNjZXNzaWJsZS0+b2JqZWN0KCkpIHsKKysgICAgICAgICAgICBjb25zdCBRU3RyaW5nIG5h bWUgPSBvYmotPm9iamVjdE5hbWUoKTsKKysgICAgICAgICAgICBpZiAoIW5hbWUuaXNFbXB0eSgp KQorKyAgICAgICAgICAgICAgICByZXN1bHQucHJlcGVuZChuYW1lKTsKKysgICAgICAgICAgICBl bHNlCisrICAgICAgICAgICAgICAgIHJlc3VsdC5wcmVwZW5kKFFTdHJpbmc6OmZyb21VdGY4KG9i ai0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSkpOworKyAgICAgICAgfQorKyAgICAgICAgYWNj ZXNzaWJsZSA9IGFjY2Vzc2libGUtPnBhcmVudCgpOworKyAgICB9CisrICAgIHJldHVybiByZXN1 bHQ7CisrfQorK30gLy8gbmFtZXNwYWNlCisrCisgLy8gQWNjZXNzaWJsZQorIGJvb2wgQXRTcGlB ZGFwdG9yOjphY2Nlc3NpYmxlSW50ZXJmYWNlKFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppbnRlcmZh Y2UsIGNvbnN0IFFTdHJpbmcgJmZ1bmN0aW9uLCBjb25zdCBRREJ1c01lc3NhZ2UgJm1lc3NhZ2Us IGNvbnN0IFFEQnVzQ29ubmVjdGlvbiAmY29ubmVjdGlvbikKKyB7CitAQCAtMTQ0MSw2ICsxNDg0 LDkgQEAgYm9vbCBBdFNwaUFkYXB0b3I6OmFjY2Vzc2libGVJbnRlcmZhY2UoUUFjY2Vzc2libGVJ bnRlcmZhY2UgKmludGVyZmFjZSwgY29uc3QgUVMKKyAgICAgICAgICAgICBjaGlsZHJlbiA8PCBy ZWY7CisgICAgICAgICB9CisgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWVzc2FnZS5jcmVhdGVS ZXBseShRVmFyaWFudDo6ZnJvbVZhbHVlKGNoaWxkcmVuKSkpOworKyAgICB9IGVsc2UgaWYgKGZ1 bmN0aW9uID09IFFMYXRpbjFTdHJpbmcoIkdldEFjY2Vzc2libGVJZCIpKSB7CisrICAgICAgICBz ZW5kUmVwbHkoY29ubmVjdGlvbiwgbWVzc2FnZSwKKysgICAgICAgICAgICAgICAgICBRVmFyaWFu dDo6ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChhY2Nlc3NpYmxlSWRGb3JBY2Nlc3NpYmxlKGludGVy ZmFjZSkpKSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICBxQ0RlYnVnKGxjQWNjZXNzaWJpbGl0 eUF0c3BpKSA8PCAiV0FSTklORzogQXRTcGlBZGFwdG9yOjphY2Nlc3NpYmxlSW50ZXJmYWNlIGRv ZXMgbm90IGltcGxlbWVudCAiIDw8IGZ1bmN0aW9uIDw8IG1lc3NhZ2UucGF0aCgpOworICAgICAg ICAgcmV0dXJuIGZhbHNlOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L2xpbnV4YWNjZXNzaWJpbGl0eS9kYnVzY29ubmVjdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRm b3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3BwCitpbmRleCA0 NWRkYzhlNDk2Li5jYzczNGFiYzYzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1 cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9uLmNwcAorKysrIGIvcXRiYXNl L3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9uLmNw cAorQEAgLTY5LDYgKzY5LDIxIEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIERCdXNDb25uZWN0aW9u OjpEQnVzQ29ubmVjdGlvbihRT2JqZWN0ICpwYXJlbnQpCisgICAgIDogUU9iamVjdChwYXJlbnQp LCBtX2ExMXlDb25uZWN0aW9uKFFTdHJpbmcoKSksIG1fZW5hYmxlZChmYWxzZSkKKyB7CisrICAg IC8vIElmIHRoZSBidXMgaXMgZXhwbGljaXRseSBzZXQgdmlhIGVudiB2YXIgaXQgb3ZlcnJpZGVz IGV2ZXJ5dGhpbmcgZWxzZS4KKysgICAgUUJ5dGVBcnJheSBhZGRyZXNzRW52ID0gcWdldGVudigi QVRfU1BJX0JVU19BRERSRVNTIik7CisrICAgIGlmICghYWRkcmVzc0Vudi5pc0VtcHR5KCkpIHsK KysgICAgICAgIC8vIE9ubHkgY29ubmVjdCBvbiBuZXh0IGxvb3AgcnVuLCBjb25uZWN0aW9ucyB0 byBvdXIgZW5hYmxlZCBzaWduYWwgYXJlCisrICAgICAgICAvLyBvbmx5IGVzdGFibGlzaGVkIGFm dGVyIHRoZSBjdG9yIHJldHVybnMuCisrICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9k KAorKyAgICAgICAgICAgICAgICB0aGlzLAorKyAgICAgICAgICAgICAgICBbdGhpcywgYWRkcmVz c0Vudl0geworKyAgICAgICAgICAgICAgICAgICAgbV9lbmFibGVkID0gdHJ1ZTsKKysgICAgICAg ICAgICAgICAgICAgIGNvbm5lY3RBMTF5QnVzKFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoYWRkcmVz c0VudikpOworKyAgICAgICAgICAgICAgICB9LAorKyAgICAgICAgICAgICAgICBRdDo6UXVldWVk Q29ubmVjdGlvbik7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKyAgICAgLy8gU3RhcnQg bW9uaXRvcmluZyBpZiAib3JnLmExMXkuQnVzIiBpcyByZWdpc3RlcmVkIGFzIERCdXMgc2Vydmlj ZS4KKyAgICAgUURCdXNDb25uZWN0aW9uIGMgPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMo KTsKKyAgICAgaWYgKCFjLmlzQ29ubmVjdGVkKCkpIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNl cy5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9x Z2VuZXJpY3VuaXhzZXJ2aWNlcy5jcHAKK2luZGV4IDFhM2NhYjI3NWQuLjJhYmUwMzkxMjYgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5p eC9xZ2VuZXJpY3VuaXhzZXJ2aWNlcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNwcAorQEAgLTUx LDYgKzUxLDkgQEAKKyAjaW5jbHVkZSA8UXRDb3JlL1FTdGFuZGFyZFBhdGhzPgorICNpbmNsdWRl IDxRdENvcmUvUVVybD4KKyAKKysjaW5jbHVkZSA8UXRHdWkvUUd1aUFwcGxpY2F0aW9uPgorKyNp bmNsdWRlIDxRdEd1aS9RV2luZG93PgorKworICNpZiBRVF9DT05GSUcoZGJ1cykKKyAvLyBUaGVz ZSBRdENvcmUgaW5jbHVkZXMgYXJlIG5lZWRlZCBmb3IgeGRnLWRlc2t0b3AtcG9ydGFsIHN1cHBv cnQKKyAjaW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcWNvcmVfdW5peF9wLmg+CitAQCAtNTgsNiAr NjEsOCBAQAorICNpbmNsdWRlIDxRdENvcmUvUUZpbGVJbmZvPgorICNpbmNsdWRlIDxRdENvcmUv UVVybFF1ZXJ5PgorIAorKyNpbmNsdWRlIDxRdEd1aS9RQ29sb3I+CisrCisgI2luY2x1ZGUgPFF0 REJ1cy9RREJ1c0Nvbm5lY3Rpb24+CisgI2luY2x1ZGUgPFF0REJ1cy9RREJ1c01lc3NhZ2U+Cisg I2luY2x1ZGUgPFF0REJ1cy9RREJ1c1BlbmRpbmdDYWxsPgorQEAgLTE0Miw2ICsxNDcsOCBAQCBz dGF0aWMgaW5saW5lIGJvb2wgZGV0ZWN0V2ViQnJvd3Nlcihjb25zdCBRQnl0ZUFycmF5ICZkZXNr dG9wLAorICAgICB9CisgCisgICAgIGlmIChkZXNrdG9wID09IFFCeXRlQXJyYXkoIktERSIpKSB7 CisrICAgICAgICBpZiAoY2hlY2tFeGVjdXRhYmxlKFFTdHJpbmdMaXRlcmFsKCJrZGUtb3BlbjUi KSwgYnJvd3NlcikpCisrICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAvLyBLb25x dWVyb3IgbGF1bmNoZXIKKyAgICAgICAgIGlmIChjaGVja0V4ZWN1dGFibGUoUVN0cmluZ0xpdGVy YWwoImtmbWNsaWVudCIpLCBicm93c2VyKSkgeworICAgICAgICAgICAgIGJyb3dzZXItPmFwcGVu ZChRTGF0aW4xU3RyaW5nKCIgZXhlYyIpKTsKK0BAIC0yOTYsOCArMzAzLDEzNSBAQCBzdGF0aWMg aW5saW5lIFFEQnVzTWVzc2FnZSB4ZGdEZXNrdG9wUG9ydGFsU2VuZEVtYWlsKGNvbnN0IFFVcmwg JnVybCkKKyAKKyAgICAgcmV0dXJuIFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmNhbGwo bWVzc2FnZSk7CisgfQorKworK25hbWVzcGFjZSB7Cisrc3RydWN0IFhER0Rlc2t0b3BDb2xvcgor K3sKKysgICAgZG91YmxlIHIgPSAwOworKyAgICBkb3VibGUgZyA9IDA7CisrICAgIGRvdWJsZSBi ID0gMDsKKysKKysgICAgUUNvbG9yIHRvUUNvbG9yKCkgY29uc3QKKysgICAgeworKyAgICAgICAg Y29uc3RleHByIGF1dG8gcmdiTWF4ID0gMjU1OworKyAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nh c3Q8aW50PihyICogcmdiTWF4KSwgc3RhdGljX2Nhc3Q8aW50PihnICogcmdiTWF4KSwKKysgICAg ICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oYiAqIHJnYk1heCkgfTsKKysgICAgfQorK307 CisrCisrY29uc3QgUURCdXNBcmd1bWVudCAmb3BlcmF0b3I+Pihjb25zdCBRREJ1c0FyZ3VtZW50 ICZhcmd1bWVudCwgWERHRGVza3RvcENvbG9yICZteVN0cnVjdCkKKyt7CisrICAgIGFyZ3VtZW50 LmJlZ2luU3RydWN0dXJlKCk7CisrICAgIGFyZ3VtZW50ID4+IG15U3RydWN0LnIgPj4gbXlTdHJ1 Y3QuZyA+PiBteVN0cnVjdC5iOworKyAgICBhcmd1bWVudC5lbmRTdHJ1Y3R1cmUoKTsKKysgICAg cmV0dXJuIGFyZ3VtZW50OworK30KKysKKytjbGFzcyBYZGdEZXNrdG9wUG9ydGFsQ29sb3JQaWNr ZXIgOiBwdWJsaWMgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyCisreworKyAgICBRX09CSkVD VAorK3B1YmxpYzoKKysgICAgWGRnRGVza3RvcFBvcnRhbENvbG9yUGlja2VyKGNvbnN0IFFTdHJp bmcgJnBhcmVudFdpbmRvd0lkLCBRV2luZG93ICpwYXJlbnQpCisrICAgICAgICA6IFFQbGF0Zm9y bVNlcnZpY2VDb2xvclBpY2tlcihwYXJlbnQpLCBtX3BhcmVudFdpbmRvd0lkKHBhcmVudFdpbmRv d0lkKQorKyAgICB7CisrICAgIH0KKysKKysgICAgdm9pZCBwaWNrQ29sb3IoKSBvdmVycmlkZQor KyAgICB7CisrICAgICAgICAvLyBEQnVzIHNpZ25hdHVyZToKKysgICAgICAgIC8vIFBpY2tDb2xv ciAoSU4gICBzICAgICAgcGFyZW50X3dpbmRvdywKKysgICAgICAgIC8vICAgICAgICAgICAgSU4g ICBhe3N2fSAgb3B0aW9ucworKyAgICAgICAgLy8gICAgICAgICAgICBPVVQgIG8gICAgICBoYW5k bGUpCisrICAgICAgICAvLyBPcHRpb25zOgorKyAgICAgICAgLy8gaGFuZGxlX3Rva2VuIChzKSAt ICBBIHN0cmluZyB0aGF0IHdpbGwgYmUgdXNlZCBhcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBA aGFuZGxlLgorKworKyAgICAgICAgUURCdXNNZXNzYWdlIG1lc3NhZ2UgPSBRREJ1c01lc3NhZ2U6 OmNyZWF0ZU1ldGhvZENhbGwoCisrICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcu ZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiKSwgUVN0cmluZ0xpdGVyYWwoIi9vcmcvZnJlZWRl c2t0b3AvcG9ydGFsL2Rlc2t0b3AiKSwKKysgICAgICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwo Im9yZy5mcmVlZGVza3RvcC5wb3J0YWwuU2NyZWVuc2hvdCIpLCBRU3RyaW5nTGl0ZXJhbCgiUGlj a0NvbG9yIikpOworKyAgICAgICAgbWVzc2FnZSA8PCBtX3BhcmVudFdpbmRvd0lkIDw8IFFWYXJp YW50TWFwKCk7CisrCisrICAgICAgICBRREJ1c1BlbmRpbmdDYWxsIHBlbmRpbmdDYWxsID0gUURC dXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuYXN5bmNDYWxsKG1lc3NhZ2UpOworKyAgICAgICAg YXV0byB3YXRjaGVyID0gbmV3IFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyKHBlbmRpbmdDYWxsLCB0 aGlzKTsKKysgICAgICAgIGNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVy OjpmaW5pc2hlZCwgdGhpcywKKysgICAgICAgICAgICAgICAgW3RoaXNdKFFEQnVzUGVuZGluZ0Nh bGxXYXRjaGVyICp3YXRjaGVyKSB7CisrICAgICAgICAgICAgICAgICAgICB3YXRjaGVyLT5kZWxl dGVMYXRlcigpOworKyAgICAgICAgICAgICAgICAgICAgUURCdXNQZW5kaW5nUmVwbHk8UURCdXNP YmplY3RQYXRoPiByZXBseSA9ICp3YXRjaGVyOworKyAgICAgICAgICAgICAgICAgICAgaWYgKHJl cGx5LmlzRXJyb3IoKSkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJEQnVz IGNhbGwgdG8gcGljayBjb2xvciBmYWlsZWQ6ICVzIiwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBxUHJpbnRhYmxlKHJlcGx5LmVycm9yKCkubWVzc2FnZSgpKSk7CisrICAgICAg ICAgICAgICAgICAgICAgICAgUV9FTUlUIGNvbG9yUGlja2VkKHt9KTsKKysgICAgICAgICAgICAg ICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgUURCdXNDb25uZWN0aW9u OjpzZXNzaW9uQnVzKCkuY29ubmVjdCgKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiKSwgcmVwbHku dmFsdWUoKS5wYXRoKCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5n TGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5SZXF1ZXN0IiksIFFTdHJpbmdMaXRlcmFs KCJSZXNwb25zZSIpLCB0aGlzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g Y2xhbmctZm9ybWF0IG9mZgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChn b3RDb2xvclJlc3BvbnNlKHVpbnQsUVZhcmlhbnRNYXApKQorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCisrICAgICAgICAgICAgICAgICAgICAgICAg KTsKKysgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgfSk7CisrICAgIH0K KysKKytwcml2YXRlIFFfU0xPVFM6CisrICAgIHZvaWQgZ290Q29sb3JSZXNwb25zZSh1aW50IHJl c3VsdCwgY29uc3QgUVZhcmlhbnRNYXAgJm1hcCkKKysgICAgeworKyAgICAgICAgaWYgKHJlc3Vs dCAhPSAwKQorKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIFhER0Rlc2t0b3BDb2xvciBj b2xvcnt9OworKyAgICAgICAgbWFwLnZhbHVlKFFTdHJpbmdMaXRlcmFsKCJjb2xvciIpKS52YWx1 ZTxRREJ1c0FyZ3VtZW50PigpID4+IGNvbG9yOworKyAgICAgICAgUV9FTUlUIGNvbG9yUGlja2Vk KGNvbG9yLnRvUUNvbG9yKCkpOworKyAgICAgICAgZGVsZXRlTGF0ZXIoKTsKKysgICAgfQorKwor K3ByaXZhdGU6CisrICAgIGNvbnN0IFFTdHJpbmcgbV9wYXJlbnRXaW5kb3dJZDsKKyt9OworK30g Ly8gbmFtZXNwYWNlCisrCisgI2VuZGlmIC8vIFFUX0NPTkZJRyhkYnVzKQorIAorK1FHZW5lcmlj VW5peFNlcnZpY2VzOjpRR2VuZXJpY1VuaXhTZXJ2aWNlcygpCisreworKyNpZiBRVF9DT05GSUco ZGJ1cykKKysgICAgaWYgKHFFbnZpcm9ubWVudFZhcmlhYmxlSW50VmFsdWUoIlFUX05PX1hER19E RVNLVE9QX1BPUlRBTCIpID4gMCkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrICAgIFFE QnVzTWVzc2FnZSBtZXNzYWdlID0gUURCdXNNZXNzYWdlOjpjcmVhdGVNZXRob2RDYWxsKAorKyAg ICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3Ai KSwgUVN0cmluZ0xpdGVyYWwoIi9vcmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0b3AiKSwKKysg ICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLkRCdXMuUHJvcGVydGll cyIpLCBRU3RyaW5nTGl0ZXJhbCgiR2V0IikpOworKyAgICBtZXNzYWdlIDw8IFFTdHJpbmdMaXRl cmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLlNjcmVlbnNob3QiKQorKyAgICAgICAgICAgIDw8 IFFTdHJpbmdMaXRlcmFsKCJ2ZXJzaW9uIik7CisrCisrICAgIFFEQnVzUGVuZGluZ0NhbGwgcGVu ZGluZ0NhbGwgPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5hc3luY0NhbGwobWVzc2Fn ZSk7CisrICAgIGF1dG8gd2F0Y2hlciA9IG5ldyBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcihwZW5k aW5nQ2FsbCk7CisrICAgIFFPYmplY3Q6OmNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0Nh bGxXYXRjaGVyOjpmaW5pc2hlZCwgd2F0Y2hlciwKKysgICAgICAgICAgICAgICAgICAgICBbdGhp c10oUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIpIHsKKysgICAgICAgICAgICAgICAg ICAgICAgICAgd2F0Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKysgICAgICAgICAgICAgICAgICAgICAg ICAgUURCdXNQZW5kaW5nUmVwbHk8UVZhcmlhbnQ+IHJlcGx5ID0gKndhdGNoZXI7CisrICAgICAg ICAgICAgICAgICAgICAgICAgIGlmICghcmVwbHkuaXNFcnJvcigpICYmIHJlcGx5LnZhbHVlKCku dG9VSW50KCkgPj0gMikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faGFzU2NyZWVu c2hvdFBvcnRhbFdpdGhDb2xvclBpY2tpbmcgPSB0cnVlOworKyAgICAgICAgICAgICAgICAgICAg IH0pOworKworKyNlbmRpZgorK30KKysKKytRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgKlFH ZW5lcmljVW5peFNlcnZpY2VzOjpjb2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQpCisreworKyNp ZiBRVF9DT05GSUcoZGJ1cykKKysgICAgLy8gTWFrZSBkb3VibGUgc3VyZSB0aGF0IHdlIGFyZSBp biBhIHdheWxhbmQgZW52aXJvbm1lbnQuIEluIHBhcnRpY3VsYXIgY2hlY2sKKysgICAgLy8gV0FZ TEFORF9ESVNQTEFZIHNvIGFsc28gWFdheWxhbmQgYXBwcyBiZW5lZml0IGZyb20gcG9ydGFsLWJh c2VkIGNvbG9yIHBpY2tpbmcuCisrICAgIC8vIE91dHNpZGUgd2F5bGFuZCB3ZSdsbCByYXRoZXIg cmVseSBvbiBvdGhlciBtZWFucyB0aGFuIHRoZSBYREcgZGVza3RvcCBwb3J0YWwuCisrICAgIGlm ICghcUVudmlyb25tZW50VmFyaWFibGVJc0VtcHR5KCJXQVlMQU5EX0RJU1BMQVkiKQorKyAgICAg ICAgfHwgUUd1aUFwcGxpY2F0aW9uOjpwbGF0Zm9ybU5hbWUoKS5zdGFydHNXaXRoKFFMYXRpbjFT dHJpbmcoIndheWxhbmQiKSkpIHsKKysgICAgICAgIHJldHVybiBuZXcgWGRnRGVza3RvcFBvcnRh bENvbG9yUGlja2VyKHBvcnRhbFdpbmRvd0lkZW50aWZpZXIocGFyZW50KSwgcGFyZW50KTsKKysg ICAgfQorKyAgICByZXR1cm4gbnVsbHB0cjsKKysjZWxzZQorKyAgICBRX1VOVVNFRChwYXJlbnQp OworKyAgICByZXR1cm4gbnVsbHB0cjsKKysjZW5kaWYKKyt9CisrCisgUUJ5dGVBcnJheSBRR2Vu ZXJpY1VuaXhTZXJ2aWNlczo6ZGVza3RvcEVudmlyb25tZW50KCkgY29uc3QKKyB7CisgICAgIHN0 YXRpYyBjb25zdCBRQnl0ZUFycmF5IHJlc3VsdCA9IGRldGVjdERlc2t0b3BFbnZpcm9ubWVudCgp OworQEAgLTM1Miw2ICs0ODYsOCBAQCBib29sIFFHZW5lcmljVW5peFNlcnZpY2VzOjpvcGVuRG9j dW1lbnQoY29uc3QgUVVybCAmdXJsKQorIH0KKyAKKyAjZWxzZQorK1FHZW5lcmljVW5peFNlcnZp Y2VzOjpRR2VuZXJpY1VuaXhTZXJ2aWNlcygpID0gZGVmYXVsdDsKKysKKyBRQnl0ZUFycmF5IFFH ZW5lcmljVW5peFNlcnZpY2VzOjpkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdAorIHsKKyAgICAg cmV0dXJuIFFCeXRlQXJyYXlMaXRlcmFsKCJVTktOT1dOIik7CitAQCAtMzcxLDYgKzUwNywzMCBA QCBib29sIFFHZW5lcmljVW5peFNlcnZpY2VzOjpvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJs KQorICAgICByZXR1cm4gZmFsc2U7CisgfQorIAorK1FQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tl ciAqUUdlbmVyaWNVbml4U2VydmljZXM6OmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCkKKyt7 CisrICAgIFFfVU5VU0VEKHBhcmVudCk7CisrICAgIHJldHVybiBudWxscHRyOworK30KKysKKyAj ZW5kaWYgLy8gUVRfTk9fTVVMVElQUk9DRVNTCisgCisrUVN0cmluZyBRR2VuZXJpY1VuaXhTZXJ2 aWNlczo6cG9ydGFsV2luZG93SWRlbnRpZmllcihRV2luZG93ICp3aW5kb3cpCisreworKyAgICBp ZiAoUUd1aUFwcGxpY2F0aW9uOjpwbGF0Zm9ybU5hbWUoKSA9PSBRTGF0aW4xU3RyaW5nKCJ4Y2Ii KSkKKysgICAgICAgIHJldHVybiBRU3RyaW5nTGl0ZXJhbCgieDExOiIpICsgUVN0cmluZzo6bnVt YmVyKHdpbmRvdy0+d2luSWQoKSwgMTYpOworKyAgICByZXR1cm4gUVN0cmluZygpOworK30KKysK Kytib29sIFFHZW5lcmljVW5peFNlcnZpY2VzOjpoYXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2Fw YWJpbGl0eSkgY29uc3QKKyt7CisrICAgIHN3aXRjaCAoY2FwYWJpbGl0eSkgeworKyAgICBjYXNl IENhcGFiaWxpdHk6OkNvbG9yUGlja2luZzoKKysgICAgICAgIHJldHVybiBtX2hhc1NjcmVlbnNo b3RQb3J0YWxXaXRoQ29sb3JQaWNraW5nOworKyAgICB9CisrICAgIHJldHVybiBmYWxzZTsKKyt9 CisrCisgUVRfRU5EX05BTUVTUEFDRQorKworKyNpbmNsdWRlICJxZ2VuZXJpY3VuaXhzZXJ2aWNl cy5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMv Z2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oIGIvcXRiYXNlL3NyYy9wbGF0Zm9y bXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oCitp bmRleCA4YWMzZGU2ZjAzLi4zMDkyNGU2NGJkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0 Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5o CisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9x Z2VuZXJpY3VuaXhzZXJ2aWNlc19wLmgKK0BAIC01OSwxNiArNTksMjEgQEAgUVRfQkVHSU5fTkFN RVNQQUNFCisgY2xhc3MgUUdlbmVyaWNVbml4U2VydmljZXMgOiBwdWJsaWMgUVBsYXRmb3JtU2Vy dmljZXMKKyB7CisgcHVibGljOgorLSAgICBRR2VuZXJpY1VuaXhTZXJ2aWNlcygpIHt9CisrICAg IFFHZW5lcmljVW5peFNlcnZpY2VzKCk7CisgCisgICAgIFFCeXRlQXJyYXkgZGVza3RvcEVudmly b25tZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgCisrICAgIGJvb2wgaGFzQ2FwYWJpbGl0eShDYXBh YmlsaXR5IGNhcGFiaWxpdHkpIGNvbnN0IG92ZXJyaWRlOworICAgICBib29sIG9wZW5VcmwoY29u c3QgUVVybCAmdXJsKSBvdmVycmlkZTsKKyAgICAgYm9vbCBvcGVuRG9jdW1lbnQoY29uc3QgUVVy bCAmdXJsKSBvdmVycmlkZTsKKysgICAgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpjb2xv clBpY2tlcihRV2luZG93ICpwYXJlbnQgPSBudWxscHRyKSBvdmVycmlkZTsKKysKKysgICAgdmly dHVhbCBRU3RyaW5nIHBvcnRhbFdpbmRvd0lkZW50aWZpZXIoUVdpbmRvdyAqd2luZG93KTsKKyAK KyBwcml2YXRlOgorICAgICBRU3RyaW5nIG1fd2ViQnJvd3NlcjsKKyAgICAgUVN0cmluZyBtX2Rv Y3VtZW50TGF1bmNoZXI7CisrICAgIGJvb2wgbV9oYXNTY3JlZW5zaG90UG9ydGFsV2l0aENvbG9y UGlja2luZyA9IGZhbHNlOworIH07CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9x ZGJ1c21lbnVjb25uZWN0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1l cy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcAoraW5kZXggMDk0 NzBiY2NjNi4uY2M3YzdkNGQ4YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcAor KysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNt ZW51L3FkYnVzbWVudWNvbm5lY3Rpb24uY3BwCitAQCAtNjksNiArNjksNyBAQCBjb25zdCBRU3Ry aW5nIE1lbnVCYXJQYXRoID0gUUxhdGluMVN0cmluZygiL01lbnVCYXIiKTsKKyAqLworIFFEQnVz TWVudUNvbm5lY3Rpb246OlFEQnVzTWVudUNvbm5lY3Rpb24oUU9iamVjdCAqcGFyZW50LCBjb25z dCBRU3RyaW5nICZzZXJ2aWNlTmFtZSkKKyAgICAgOiBRT2JqZWN0KHBhcmVudCkKKysgICAgLCBt X3NlcnZpY2VOYW1lKHNlcnZpY2VOYW1lKQorICAgICAsIG1fY29ubmVjdGlvbihzZXJ2aWNlTmFt ZS5pc051bGwoKSA/IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogUURCdXNDb25uZWN0aW9uOjpjb25uZWN0VG9C dXMoUURCdXNDb25uZWN0aW9uOjpTZXNzaW9uQnVzLCBzZXJ2aWNlTmFtZSkpCisgICAgICwgbV9k YnVzV2F0Y2hlcihuZXcgUURCdXNTZXJ2aWNlV2F0Y2hlcihTdGF0dXNOb3RpZmllcldhdGNoZXJT ZXJ2aWNlLCBtX2Nvbm5lY3Rpb24sIFFEQnVzU2VydmljZVdhdGNoZXI6OldhdGNoRm9yUmVnaXN0 cmF0aW9uLCB0aGlzKSkKK0BAIC04Myw2ICs4NCwxMiBAQCBRREJ1c01lbnVDb25uZWN0aW9uOjpR REJ1c01lbnVDb25uZWN0aW9uKFFPYmplY3QgKnBhcmVudCwgY29uc3QgUVN0cmluZyAmc2Vydmlj ZQorICNlbmRpZgorIH0KKyAKKytRREJ1c01lbnVDb25uZWN0aW9uOjp+UURCdXNNZW51Q29ubmVj dGlvbigpCisreworKyAgaWYgKCFtX3NlcnZpY2VOYW1lLmlzRW1wdHkoKSAmJiBtX2Nvbm5lY3Rp b24uaXNDb25uZWN0ZWQoKSkKKysgICAgICBRREJ1c0Nvbm5lY3Rpb246OmRpc2Nvbm5lY3RGcm9t QnVzKG1fc2VydmljZU5hbWUpOworK30KKysKKyB2b2lkIFFEQnVzTWVudUNvbm5lY3Rpb246OmRi dXNFcnJvcihjb25zdCBRREJ1c0Vycm9yICZlcnJvcikKKyB7CisgICAgIHFXYXJuaW5nKCkgPDwg IlFEQnVzVHJheUljb24gZW5jb3VudGVyZWQgYSBELUJ1cyBlcnJvcjoiIDw8IGVycm9yOworQEAg LTEwNSwxMyArMTEyLDcgQEAgdm9pZCBRREJ1c01lbnVDb25uZWN0aW9uOjp1bnJlZ2lzdGVyVHJh eUljb25NZW51KFFEQnVzVHJheUljb24gKml0ZW0pCisgCisgYm9vbCBRREJ1c01lbnVDb25uZWN0 aW9uOjpyZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pCisgeworLSAgICBib29s IHN1Y2Nlc3MgPSBjb25uZWN0aW9uKCkucmVnaXN0ZXJTZXJ2aWNlKGl0ZW0tPmluc3RhbmNlSWQo KSk7CistICAgIGlmICghc3VjY2VzcykgeworLSAgICAgICAgcVdhcm5pbmcoKSA8PCAiZmFpbGVk IHRvIHJlZ2lzdGVyIHNlcnZpY2UiIDw8IGl0ZW0tPmluc3RhbmNlSWQoKTsKKy0gICAgICAgIHJl dHVybiBmYWxzZTsKKy0gICAgfQorLQorLSAgICBzdWNjZXNzID0gY29ubmVjdGlvbigpLnJlZ2lz dGVyT2JqZWN0KFN0YXR1c05vdGlmaWVySXRlbVBhdGgsIGl0ZW0pOworKyAgICBib29sIHN1Y2Nl c3MgPSBjb25uZWN0aW9uKCkucmVnaXN0ZXJPYmplY3QoU3RhdHVzTm90aWZpZXJJdGVtUGF0aCwg aXRlbSk7CisgICAgIGlmICghc3VjY2VzcykgeworICAgICAgICAgdW5yZWdpc3RlclRyYXlJY29u KGl0ZW0pOworICAgICAgICAgcVdhcm5pbmcoKSA8PCAiZmFpbGVkIHRvIHJlZ2lzdGVyIiA8PCBp dGVtLT5pbnN0YW5jZUlkKCkgPDwgU3RhdHVzTm90aWZpZXJJdGVtUGF0aDsKK0BAIC0xMjYsMjEg KzEyNywxOCBAQCBib29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnJlZ2lzdGVyVHJheUljb24oUURC dXNUcmF5SWNvbiAqaXRlbSkKKyAKKyBib29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnJlZ2lzdGVy VHJheUljb25XaXRoV2F0Y2hlcihRREJ1c1RyYXlJY29uICppdGVtKQorIHsKKysgICAgUV9VTlVT RUQoaXRlbSk7CisgICAgIFFEQnVzTWVzc2FnZSByZWdpc3Rlck1ldGhvZCA9IFFEQnVzTWVzc2Fn ZTo6Y3JlYXRlTWV0aG9kQ2FsbCgKKyAgICAgICAgICAgICAgICAgU3RhdHVzTm90aWZpZXJXYXRj aGVyU2VydmljZSwgU3RhdHVzTm90aWZpZXJXYXRjaGVyUGF0aCwgU3RhdHVzTm90aWZpZXJXYXRj aGVyU2VydmljZSwKKyAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUmVnaXN0ZXJTdGF0 dXNOb3RpZmllckl0ZW0iKSk7CistICAgIHJlZ2lzdGVyTWV0aG9kLnNldEFyZ3VtZW50cyhRVmFy aWFudExpc3QoKSA8PCBpdGVtLT5pbnN0YW5jZUlkKCkpOworKyAgICByZWdpc3Rlck1ldGhvZC5z ZXRBcmd1bWVudHMoUVZhcmlhbnRMaXN0KCkgPDwgbV9jb25uZWN0aW9uLmJhc2VTZXJ2aWNlKCkp OworICAgICByZXR1cm4gbV9jb25uZWN0aW9uLmNhbGxXaXRoQ2FsbGJhY2socmVnaXN0ZXJNZXRo b2QsIHRoaXMsIFNJR05BTCh0cmF5SWNvblJlZ2lzdGVyZWQoKSksIFNMT1QoZGJ1c0Vycm9yKFFE QnVzRXJyb3IpKSk7CisgfQorIAorLWJvb2wgUURCdXNNZW51Q29ubmVjdGlvbjo6dW5yZWdpc3Rl clRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pCisrdm9pZCBRREJ1c01lbnVDb25uZWN0aW9u Ojp1bnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSkKKyB7CisgICAgIHVucmVn aXN0ZXJUcmF5SWNvbk1lbnUoaXRlbSk7CisgICAgIGNvbm5lY3Rpb24oKS51bnJlZ2lzdGVyT2Jq ZWN0KFN0YXR1c05vdGlmaWVySXRlbVBhdGgpOworLSAgICBib29sIHN1Y2Nlc3MgPSBjb25uZWN0 aW9uKCkudW5yZWdpc3RlclNlcnZpY2UoaXRlbS0+aW5zdGFuY2VJZCgpKTsKKy0gICAgaWYgKCFz dWNjZXNzKQorLSAgICAgICAgcVdhcm5pbmcoKSA8PCAiZmFpbGVkIHRvIHVucmVnaXN0ZXIgc2Vy dmljZSIgPDwgaXRlbS0+aW5zdGFuY2VJZCgpOworLSAgICByZXR1cm4gc3VjY2VzczsKKyB9Cisg I2VuZGlmIC8vIFFUX05PX1NZU1RFTVRSQVlJQ09OCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNv bm5lY3Rpb25fcC5oIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1 bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oCitpbmRleCBmNDg0Nzk1ZmJiLi45 N2JkZmFiYjg1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVz L2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oCisrKysgYi9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNt ZW51Y29ubmVjdGlvbl9wLmgKK0BAIC03MCw2ICs3MCw3IEBAIGNsYXNzIFFEQnVzTWVudUNvbm5l Y3Rpb24gOiBwdWJsaWMgUU9iamVjdAorIAorIHB1YmxpYzoKKyAgICAgUURCdXNNZW51Q29ubmVj dGlvbihRT2JqZWN0ICpwYXJlbnQgPSBudWxscHRyLCBjb25zdCBRU3RyaW5nICZzZXJ2aWNlTmFt ZSA9IFFTdHJpbmcoKSk7CisrICAgIH5RREJ1c01lbnVDb25uZWN0aW9uKCk7CisgICAgIFFEQnVz Q29ubmVjdGlvbiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9Cisg ICAgIFFEQnVzU2VydmljZVdhdGNoZXIgKmRidXNXYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9k YnVzV2F0Y2hlcjsgfQorICAgICBib29sIGlzU3RhdHVzTm90aWZpZXJIb3N0UmVnaXN0ZXJlZCgp IGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzTm90aWZpZXJIb3N0UmVnaXN0ZXJlZDsgfQorQEAgLTc4 LDcgKzc5LDcgQEAgcHVibGljOgorICAgICB2b2lkIHVucmVnaXN0ZXJUcmF5SWNvbk1lbnUoUURC dXNUcmF5SWNvbiAqaXRlbSk7CisgICAgIGJvb2wgcmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJ Y29uICppdGVtKTsKKyAgICAgYm9vbCByZWdpc3RlclRyYXlJY29uV2l0aFdhdGNoZXIoUURCdXNU cmF5SWNvbiAqaXRlbSk7CistICAgIGJvb2wgdW5yZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUlj b24gKml0ZW0pOworKyAgICB2b2lkIHVucmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICpp dGVtKTsKKyAjZW5kaWYgLy8gUVRfTk9fU1lTVEVNVFJBWUlDT04KKyAKKyBRX1NJR05BTFM6CitA QCAtOTAsNiArOTEsNyBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgZGJ1c0Vycm9yKGNv bnN0IFFEQnVzRXJyb3IgJmVycm9yKTsKKyAKKyBwcml2YXRlOgorKyAgICBRU3RyaW5nIG1fc2Vy dmljZU5hbWU7CisgICAgIFFEQnVzQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247CisgICAgIFFEQnVz U2VydmljZVdhdGNoZXIgKm1fZGJ1c1dhdGNoZXI7CisgICAgIGJvb2wgbV9zdGF0dXNOb3RpZmll ckhvc3RSZWdpc3RlcmVkOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcCBiL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlp Y29uLmNwcAoraW5kZXggYmVkZTcwOTc1YS4uNzZiZmVjNWU1YSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3Ry YXlpY29uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVy aWN1bml4L2RidXN0cmF5L3FkYnVzdHJheWljb24uY3BwCitAQCAtNzEsOCArNzEsMTIgQEAgUV9M T0dHSU5HX0NBVEVHT1JZKHFMY1RyYXksICJxdC5xcGEudHJheSIpCisgc3RhdGljIFFTdHJpbmcg aWNvblRlbXBQYXRoKCkKKyB7CisgICAgIFFTdHJpbmcgdGVtcFBhdGggPSBRU3RhbmRhcmRQYXRo czo6d3JpdGFibGVMb2NhdGlvbihRU3RhbmRhcmRQYXRoczo6UnVudGltZUxvY2F0aW9uKTsKKy0g ICAgaWYgKCF0ZW1wUGF0aC5pc0VtcHR5KCkpCisrICAgIGlmICghdGVtcFBhdGguaXNFbXB0eSgp KSB7CisrICAgICAgICBRU3RyaW5nIGZsYXRwYWtJZCA9IHFFbnZpcm9ubWVudFZhcmlhYmxlKCJG TEFUUEFLX0lEIik7CisrICAgICAgICBpZiAoIWZsYXRwYWtJZC5pc0VtcHR5KCkgJiYgUUZpbGVJ bmZvOjpleGlzdHMoUUxhdGluMVN0cmluZygiLy5mbGF0cGFrLWluZm8iKSkpCisrICAgICAgICAg ICAgdGVtcFBhdGggKz0gUUxhdGluMVN0cmluZygiL2FwcC8iKSArIGZsYXRwYWtJZDsKKyAgICAg ICAgIHJldHVybiB0ZW1wUGF0aDsKKysgICAgfQorIAorICAgICB0ZW1wUGF0aCA9IFFTdGFuZGFy ZFBhdGhzOjp3cml0YWJsZUxvY2F0aW9uKFFTdGFuZGFyZFBhdGhzOjpHZW5lcmljQ2FjaGVMb2Nh dGlvbik7CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVz L2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHRoZW1lcy5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVzLmNwcAoraW5kZXgg Y2IxYjM5ZGI2NC4uNmUwMWFmMDUyYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1z dXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4 dGhlbWVzLmNwcAorQEAgLTc1NSw2ICs3NTUsOSBAQCBRVmFyaWFudCBRR25vbWVUaGVtZTo6dGhl bWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpUaGVtZUhpbnQgaGludCkgY29uc3QKKyAgICAgICAgIHJl dHVybiBRVmFyaWFudChRQ2hhcigweDIwMjIpKTsKKyAgICAgY2FzZSBRUGxhdGZvcm1UaGVtZTo6 VWlFZmZlY3RzOgorICAgICAgICAgcmV0dXJuIFFWYXJpYW50KGludChIb3ZlckVmZmVjdCkpOwor KyAgICBjYXNlIFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXM6CisrICAgICAgICByZXR1 cm4gUVZhcmlhbnQ6OmZyb21WYWx1ZSgKKysgICAgICAgICAgICAgICAgUUxpc3Q8UXQ6OktleT4o eyBRdDo6S2V5X1NwYWNlLCBRdDo6S2V5X1JldHVybiwgUXQ6OktleV9FbnRlciwgUXQ6OktleV9T ZWxlY3QgfSkpOworICAgICBkZWZhdWx0OgorICAgICAgICAgYnJlYWs7CisgICAgIH0KK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJz b3IuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9hcGkvcWVnbGZzY3Vy c29yLmNwcAoraW5kZXggOThlMDUxOTVlZS4uMWU5MmY0M2RlYyAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5jcHAKKysrKyBi L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5jcHAK K0BAIC0zNDMsOCArMzQzLDcgQEAgdm9pZCBRRWdsRlNDdXJzb3I6OnBhaW50T25TY3JlZW4oKQor ICAgICAvLyBzY3JlZW5zIGFyZSBzaWJsaW5ncyBvZiBlYWNoIG90aGVyLiBXaGVuIG5vdCBlbmFi bGVkLCB0aGUgc2libGluZyBsaXN0CisgICAgIC8vIG9ubHkgY29udGFpbnMgbV9zY3JlZW4gaXRz ZWxmLgorICAgICBmb3IgKFFQbGF0Zm9ybVNjcmVlbiAqc2NyZWVuIDogbV9zY3JlZW4tPnZpcnR1 YWxTaWJsaW5ncygpKSB7CistICAgICAgICBpZiAoc2NyZWVuLT5nZW9tZXRyeSgpLmNvbnRhaW5z KGNyLnRvcExlZnQoKS50b1BvaW50KCkgKyBtX2N1cnNvci5ob3RTcG90KQorLSAgICAgICAgICAg ICYmIFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpLT5zY3JlZW4oKSA9PSBzY3JlZW4t PnNjcmVlbigpKQorKyAgICAgICAgaWYgKHNjcmVlbi0+Z2VvbWV0cnkoKS5jb250YWlucyhjci50 b3BMZWZ0KCkudG9Qb2ludCgpICsgbV9jdXJzb3IuaG90U3BvdCkpCisgICAgICAgICB7CisgICAg ICAgICAgICAgY3IudHJhbnNsYXRlKC1zY3JlZW4tPmdlb21ldHJ5KCkudG9wTGVmdCgpKTsKKyAg ICAgICAgICAgICBjb25zdCBRU2l6ZSBzY3JlZW5TaXplID0gc2NyZWVuLT5nZW9tZXRyeSgpLnNp emUoKTsKK0BAIC00NjgsMTEgKzQ2NywxMiBAQCB2b2lkIFFFZ2xGU0N1cnNvcjo6ZHJhdyhjb25z dCBRUmVjdEYgJnIpCisgeworICAgICBTdGF0ZVNhdmVyIHN0YXRlU2F2ZXI7CisgCistICAgIFFF Z2xGU0N1cnNvckRhdGEgJmdmeCA9IHN0YXRpY19jYXN0PFFFZ2xGU0NvbnRleHQqPihRT3BlbkdM Q29udGV4dDo6Y3VycmVudENvbnRleHQoKS0+aGFuZGxlKCkpLT5jdXJzb3JEYXRhOworLSAgICBp ZiAoIWdmeC5wcm9ncmFtKSB7CistICAgICAgICAvLyBvbmUgdGltZSBpbml0aWFsaXphdGlvbgor KyAgICAvLyBvbmUgdGltZSBpbml0aWFsaXphdGlvbgorKyAgICBpZiAoIVFPcGVuR0xGdW5jdGlv bnM6OmRfcHRyKQorICAgICAgICAgaW5pdGlhbGl6ZU9wZW5HTEZ1bmN0aW9ucygpOworIAorKyAg ICBRRWdsRlNDdXJzb3JEYXRhICZnZnggPSBzdGF0aWNfY2FzdDxRRWdsRlNDb250ZXh0Kj4oUU9w ZW5HTENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCktPmhhbmRsZSgpKS0+Y3Vyc29yRGF0YTsKKysg ICAgaWYgKCFnZngucHJvZ3JhbSkgeworICAgICAgICAgY3JlYXRlU2hhZGVyUHJvZ3JhbXMoKTsK KyAKKyAgICAgICAgIGlmICghZ2Z4LmF0bGFzVGV4dHVyZSkgeworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21z X3N1cHBvcnQvcWVnbGZza21zZXZlbnRyZWFkZXIuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy9lZ2xmcy9kZXZpY2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNr bXNldmVudHJlYWRlci5jcHAKK2luZGV4IDY0NWEwYWUyZTkuLjNlMGU0MDZmMWEgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWludGVncmF0aW9u L2VnbGZzX2ttc19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVyLmNwcAorKysrIGIvcXRiYXNl L3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9kZXZpY2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNf c3VwcG9ydC9xZWdsZnNrbXNldmVudHJlYWRlci5jcHAKK0BAIC0xNzksNyArMTc5LDcgQEAgdm9p ZCBRRWdsRlNLbXNFdmVudFJlYWRlcjo6Y3JlYXRlKFFFZ2xGU0ttc0RldmljZSAqZGV2aWNlKQor IAorICAgICBtX2RldmljZSA9IGRldmljZTsKKyAKKy0gICAgcUNEZWJ1ZyhxTGNFZ2xmc0ttc0Rl YnVnLCAiSW5pdGFsaXppbmcgZXZlbnQgcmVhZGVyIGZvciBkZXZpY2UgJXAgZmQgJWQiLAorKyAg ICBxQ0RlYnVnKHFMY0VnbGZzS21zRGVidWcsICJJbml0aWFsaXppbmcgZXZlbnQgcmVhZGVyIGZv ciBkZXZpY2UgJXAgZmQgJWQiLAorICAgICAgICAgICAgIG1fZGV2aWNlLCBtX2RldmljZS0+ZmQo KSk7CisgCisgICAgIG1fdGhyZWFkID0gbmV3IFFFZ2xGU0ttc0V2ZW50UmVhZGVyVGhyZWFkKG1f ZGV2aWNlLT5mZCgpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmNwcAoraW5kZXggMTQx ZmI2OGEyMy4uZDQyOTRkNDI1YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAK K0BAIC0xMjIsMTEgKzEyMiwxMyBAQCBRT2Zmc2NyZWVuSW50ZWdyYXRpb246OlFPZmZzY3JlZW5J bnRlZ3JhdGlvbigpCisgI2VuZGlmCisgICAgIG1fc2VydmljZXMucmVzZXQobmV3IFFQbGF0Zm9y bVNlcnZpY2VzKTsKKyAKKy0gICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlU2NyZWVu QWRkZWQobmV3IFFPZmZzY3JlZW5TY3JlZW4pOworKyAgICBtX3NjcmVlbiA9IG5ldyBRT2Zmc2Ny ZWVuU2NyZWVuOworKyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVTY3JlZW5BZGRl ZChtX3NjcmVlbik7CisgfQorIAorIFFPZmZzY3JlZW5JbnRlZ3JhdGlvbjo6flFPZmZzY3JlZW5J bnRlZ3JhdGlvbigpCisgeworKyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVTY3Jl ZW5SZW1vdmVkKG1fc2NyZWVuKTsKKyB9CisgCisgdm9pZCBRT2Zmc2NyZWVuSW50ZWdyYXRpb246 OmluaXRpYWxpemUoKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv b2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmgKK2luZGV4IDBlYTkwZjZj MmYuLmZlMDBmZGUwN2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uaAorKysrIGIvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmgKK0BAIC04NCw2 ICs4NCw3IEBAIHByb3RlY3RlZDoKKyAjZW5kaWYKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVBsYXRm b3JtSW5wdXRDb250ZXh0PiBtX2lucHV0Q29udGV4dDsKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVBs YXRmb3JtU2VydmljZXM+IG1fc2VydmljZXM7CisrICAgIFFQbGF0Zm9ybVNjcmVlbiAqbV9zY3Jl ZW47CisgICAgIG11dGFibGUgUVNjb3BlZFBvaW50ZXI8UVBsYXRmb3JtTmF0aXZlSW50ZXJmYWNl PiBtX25hdGl2ZUludGVyZmFjZTsKKyB9OworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c2dsY29udGV4dC5jcHAgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NnbGNvbnRleHQuY3BwCitpbmRleCA2 ZmE1YThhMmIzLi4xZjQ5ZjBhZWZkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNwcAorKysrIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNwcAorQEAgLTQ4LDYg KzQ4LDcgQEAKKyAjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybW5hdGl2ZWludGVyZmFjZS5oPgorICNp bmNsdWRlIDxRdFBsYXRmb3JtSGVhZGVycy9xd2dsbmF0aXZlY29udGV4dC5oPgorIAorKyNpbmNs dWRlIDxwcml2YXRlL3FzeXN0ZW1saWJyYXJ5X3AuaD4KKyAjaW5jbHVkZSA8YWxnb3JpdGhtPgor IAorICNpbmNsdWRlIDx3aW5nZGkuaD4KK0BAIC0xNjIsMTkgKzE2MywyNSBAQCBRRnVuY3Rpb25Q b2ludGVyIFFXaW5kb3dzT3BlbmdsMzJETEw6OnJlc29sdmUoY29uc3QgY2hhciAqbmFtZSkKKyAK KyBib29sIFFXaW5kb3dzT3BlbmdsMzJETEw6OmluaXQoYm9vbCBzb2Z0d2FyZVJlbmRlcmluZykK KyB7CistICAgIGNvbnN0IFFCeXRlQXJyYXkgb3BlbmdsMzIgPSBRQnl0ZUFycmF5TGl0ZXJhbCgi b3BlbmdsMzIuZGxsIik7CistICAgIGNvbnN0IFFCeXRlQXJyYXkgc3dvcGVuZ2wgPSBRQnl0ZUFy cmF5TGl0ZXJhbCgib3BlbmdsMzJzdy5kbGwiKTsKKysgICAgY29uc3QgUUJ5dGVBcnJheSBvcGVu Z2wzMiA9IFFCeXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMiIpOworKyAgICBjb25zdCBRQnl0ZUFy cmF5IHN3b3BlbmdsID0gUUJ5dGVBcnJheUxpdGVyYWwoIm9wZW5nbDMyc3ciKTsKKysgICAgYm9v bCB1c2VTeXN0ZW1MaWIgPSBmYWxzZTsKKyAKKyAgICAgUUJ5dGVBcnJheSBvcGVuZ2xEbGwgPSBx Z2V0ZW52KCJRVF9PUEVOR0xfRExMIik7CistICAgIGlmIChvcGVuZ2xEbGwuaXNFbXB0eSgpKQor KyAgICBpZiAob3BlbmdsRGxsLmlzRW1wdHkoKSkgeworICAgICAgICAgb3BlbmdsRGxsID0gc29m dHdhcmVSZW5kZXJpbmcgPyBzd29wZW5nbCA6IG9wZW5nbDMyOworKyAgICAgICAgdXNlU3lzdGVt TGliID0gIXNvZnR3YXJlUmVuZGVyaW5nOworKyAgICB9CisgCisgICAgIG9wZW5nbERsbCA9IG9w ZW5nbERsbC50b0xvd2VyKCk7CisgICAgIG1fbm9uT3BlbmdsMzIgPSBvcGVuZ2xEbGwgIT0gb3Bl bmdsMzI7CisgCisgICAgIHFDRGVidWcobGNRcGFHbCkgPDwgIlF0OiBVc2luZyBXR0wgYW5kIE9w ZW5HTCBmcm9tIiA8PCBvcGVuZ2xEbGw7CisgCistICAgIG1fbGliID0gOjpMb2FkTGlicmFyeUEo b3BlbmdsRGxsLmNvbnN0RGF0YSgpKTsKKysgICAgaWYgKHVzZVN5c3RlbUxpYikKKysgICAgICAg IG1fbGliID0gUVN5c3RlbUxpYnJhcnk6OmxvYWQoKHdjaGFyX3QqKShRU3RyaW5nOjpmcm9tTGF0 aW4xKG9wZW5nbERsbCkudXRmMTYoKSkpOworKyAgICBlbHNlCisrICAgICAgICBtX2xpYiA9IExv YWRMaWJyYXJ5QShvcGVuZ2xEbGwuY29uc3REYXRhKCkpOworICAgICBpZiAoIW1fbGliKSB7Cisg ICAgICAgICBxRXJybm9XYXJuaW5nKDo6R2V0TGFzdEVycm9yKCksICJGYWlsZWQgdG8gbG9hZCAl cyIsIG9wZW5nbERsbC5jb25zdERhdGEoKSk7CisgICAgICAgICByZXR1cm4gZmFsc2U7CitAQCAt MTg0LDcgKzE5MSw3IEBAIGJvb2wgUVdpbmRvd3NPcGVuZ2wzMkRMTDo6aW5pdChib29sIHNvZnR3 YXJlUmVuZGVyaW5nKQorICAgICAgICAgLy8gTG9hZCBvcGVuZ2wzMi5kbGwgYWx3YXlzLiBHREkg ZnVuY3Rpb25zIGxpa2UgQ2hvb3NlUGl4ZWxGb3JtYXQgZG8KKyAgICAgICAgIC8vIEdldE1vZHVs ZUhhbmRsZSBmb3Igb3BlbmdsMzIuZGxsIGFuZCBiZWhhdmUgZGlmZmVyZW50bHkgKGFuZCBjYWxs IGJhY2sgaW50bworICAgICAgICAgLy8gb3BlbmdsMzIpIHdoZW4gdGhlIG1vZHVsZSBpcyBwcmVz ZW50LiBUaGlzIGlzIGZpbmUgZm9yIGR1bW15IGNvbnRleHRzIGFuZCB3aW5kb3dzLgorLSAgICAg ICAgOjpMb2FkTGlicmFyeUEoIm9wZW5nbDMyLmRsbCIpOworKyAgICAgICAgUVN5c3RlbUxpYnJh cnk6OmxvYWQoTCJvcGVuZ2wzMiIpOworICAgICB9CisgCisgICAgIHdnbENyZWF0ZUNvbnRleHQg PSByZWludGVycHJldF9jYXN0PEhHTFJDIChXSU5BUEkgKikoSERDKT4ocmVzb2x2ZSgid2dsQ3Jl YXRlQ29udGV4dCIpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L3dpbmRvd3MvcXdpbmRvd3NvcGVuZ2x0ZXN0ZXIuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzb3BlbmdsdGVzdGVyLmNwcAoraW5kZXggZDdkMTg2ZTgw NC4uOWViNDAxMWJmMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv d2luZG93cy9xd2luZG93c29wZW5nbHRlc3Rlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c29wZW5nbHRlc3Rlci5jcHAKK0BAIC00OSw2ICs0 OSw3IEBACisgI2luY2x1ZGUgPFF0Q29yZS9xc3RhbmRhcmRwYXRocy5oPgorICNpbmNsdWRlIDxR dENvcmUvcWxpYnJhcnlpbmZvLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xaGFzaC5oPgorKyNpbmNs dWRlIDxwcml2YXRlL3FzeXN0ZW1saWJyYXJ5X3AuaD4KKyAKKyAjaWZuZGVmIFFUX05PX09QRU5H TAorICNpbmNsdWRlIDxwcml2YXRlL3FvcGVuZ2xfcC5oPgorQEAgLTM5Niw3ICszOTcsNyBAQCBi b29sIFFXaW5kb3dzT3BlbkdMVGVzdGVyOjp0ZXN0RGVza3RvcEdMKCkKKyAKKyAgICAgLy8gVGVz dCAjMTogTG9hZCBvcGVuZ2wzMi5kbGwgYW5kIHRyeSB0byByZXNvbHZlIGFuIE9wZW5HTCAyIGZ1 bmN0aW9uLgorICAgICAvLyBUaGlzIHdpbGwgdHlwaWNhbGx5IGZhaWwgb24gc3lzdGVtcyB0aGF0 IGRvIG5vdCBoYXZlIGEgcmVhbCBPcGVuR0wgZHJpdmVyLgorLSAgICBsaWIgPSBMb2FkTGlicmFy eUEoIm9wZW5nbDMyLmRsbCIpOworKyAgICBsaWIgPSBRU3lzdGVtTGlicmFyeTo6bG9hZChMIm9w ZW5nbDMyIik7CisgICAgIGlmIChsaWIpIHsKKyAgICAgICAgIENyZWF0ZUNvbnRleHQgPSByZWlu dGVycHJldF9jYXN0PENyZWF0ZUNvbnRleHRUeXBlPigKKyAgICAgICAgICAgICByZWludGVycHJl dF9jYXN0PFFGdW5jdGlvblBvaW50ZXI+KDo6R2V0UHJvY0FkZHJlc3MobGliLCAid2dsQ3JlYXRl Q29udGV4dCIpKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94 Y2IvbmF0aXZlcGFpbnRpbmcvcXRlc3NlbGxhdG9yLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMveGNiL25hdGl2ZXBhaW50aW5nL3F0ZXNzZWxsYXRvci5jcHAKK2luZGV4IDFhZmEw MGNmYzkuLjExOGFmNmNlNzMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm1zL3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3BwCitA QCAtNDEsNiArNDEsNyBAQAorIAorICNpbmNsdWRlIDxRUmVjdD4KKyAjaW5jbHVkZSA8UUxpc3Q+ CisrI2luY2x1ZGUgPFFNYXA+CisgI2luY2x1ZGUgPFFEZWJ1Zz4KKyAKKyAjaW5jbHVkZSA8cW1h dGguaD4KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNi Y29ubmVjdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29u bmVjdGlvbi5jcHAKK2luZGV4IDllMmEzN2E2YTEuLmU2ZTE3NWExMTggMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlvbi5jcHAKKysrKyBi L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0aW9uLmNwcAorQEAg LTQ4OCwxMiArNDg4LDEyIEBAIHZvaWQgUVhjYkNvbm5lY3Rpb246OnByaW50WGNiRXJyb3IoY29u c3QgY2hhciAqbWVzc2FnZSwgeGNiX2dlbmVyaWNfZXJyb3JfdCAqZXJyCisgICAgIHVpbnQgY2xh bXBlZF9lcnJvcl9jb2RlID0gcU1pbjx1aW50PihlcnJvci0+ZXJyb3JfY29kZSwgKHNpemVvZih4 Y2JfZXJyb3JzKSAvIHNpemVvZih4Y2JfZXJyb3JzWzBdKSkgLSAxKTsKKyAgICAgdWludCBjbGFt cGVkX21ham9yX2NvZGUgPSBxTWluPHVpbnQ+KGVycm9yLT5tYWpvcl9jb2RlLCAoc2l6ZW9mKHhj Yl9wcm90b2NvbF9yZXF1ZXN0X2NvZGVzKSAvIHNpemVvZih4Y2JfcHJvdG9jb2xfcmVxdWVzdF9j b2Rlc1swXSkpIC0gMSk7CisgCistICAgIHFDV2FybmluZyhsY1FwYVhjYiwgIiVzOiAlZCAoJXMp LCBzZXF1ZW5jZTogJWQsIHJlc291cmNlIGlkOiAlZCwgbWFqb3IgY29kZTogJWQgKCVzKSwgbWlu b3IgY29kZTogJWQiLAorLSAgICAgICAgICAgICBtZXNzYWdlLAorLSAgICAgICAgICAgICBpbnQo ZXJyb3ItPmVycm9yX2NvZGUpLCB4Y2JfZXJyb3JzW2NsYW1wZWRfZXJyb3JfY29kZV0sCistICAg ICAgICAgICAgIGludChlcnJvci0+c2VxdWVuY2UpLCBpbnQoZXJyb3ItPnJlc291cmNlX2lkKSwK Ky0gICAgICAgICAgICAgaW50KGVycm9yLT5tYWpvcl9jb2RlKSwgeGNiX3Byb3RvY29sX3JlcXVl c3RfY29kZXNbY2xhbXBlZF9tYWpvcl9jb2RlXSwKKy0gICAgICAgICAgICAgaW50KGVycm9yLT5t aW5vcl9jb2RlKSk7CisrICAgIHFDRGVidWcobGNRcGFYY2IsICIlczogJWQgKCVzKSwgc2VxdWVu Y2U6ICVkLCByZXNvdXJjZSBpZDogJWQsIG1ham9yIGNvZGU6ICVkICglcyksIG1pbm9yIGNvZGU6 ICVkIiwKKysgICAgICAgICAgICBtZXNzYWdlLAorKyAgICAgICAgICAgIGludChlcnJvci0+ZXJy b3JfY29kZSksIHhjYl9lcnJvcnNbY2xhbXBlZF9lcnJvcl9jb2RlXSwKKysgICAgICAgICAgICBp bnQoZXJyb3ItPnNlcXVlbmNlKSwgaW50KGVycm9yLT5yZXNvdXJjZV9pZCksCisrICAgICAgICAg ICAgaW50KGVycm9yLT5tYWpvcl9jb2RlKSwgeGNiX3Byb3RvY29sX3JlcXVlc3RfY29kZXNbY2xh bXBlZF9tYWpvcl9jb2RlXSwKKysgICAgICAgICAgICBpbnQoZXJyb3ItPm1pbm9yX2NvZGUpKTsK KyB9CisgCisgc3RhdGljIFF0OjpNb3VzZUJ1dHRvbnMgdHJhbnNsYXRlTW91c2VCdXR0b25zKGlu dCBzKQorQEAgLTcwMiw2ICs3MDIsOCBAQCB2b2lkIFFYY2JDb25uZWN0aW9uOjpoYW5kbGVYY2JF dmVudCh4Y2JfZ2VuZXJpY19ldmVudF90ICpldmVudCkKKyAgICAgICAgICAgICBRWGNiVmlydHVh bERlc2t0b3AgKnZpcnR1YWxEZXNrdG9wID0gdmlydHVhbERlc2t0b3BGb3JSb290V2luZG93KHBy b3BlcnR5Tm90aWZ5LT53aW5kb3cpOworICAgICAgICAgICAgIGlmICh2aXJ0dWFsRGVza3RvcCkK KyAgICAgICAgICAgICAgICAgdmlydHVhbERlc2t0b3AtPnVwZGF0ZVdvcmtBcmVhKCk7CisrICAg ICAgICB9IGVsc2UgaWYgKHByb3BlcnR5Tm90aWZ5LT5hdG9tID09IGF0b20oUVhjYkF0b206Ol9O RVRfU1VQUE9SVEVEKSkgeworKyAgICAgICAgICAgIG1fd21TdXBwb3J0LT51cGRhdGVOZXRXTUF0 b21zKCk7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIEhBTkRMRV9QTEFURk9STV9X SU5ET1dfRVZFTlQoeGNiX3Byb3BlcnR5X25vdGlmeV9ldmVudF90LCB3aW5kb3csIGhhbmRsZVBy b3BlcnR5Tm90aWZ5RXZlbnQpOworICAgICAgICAgfQorQEAgLTc1MCw3ICs3NTIsNyBAQCB2b2lk IFFYY2JDb25uZWN0aW9uOjpoYW5kbGVYY2JFdmVudCh4Y2JfZ2VuZXJpY19ldmVudF90ICpldmVu dCkKKyAgICAgICAgICAgICAgICAgY2FzZSBYQ0JfWEtCX05FV19LRVlCT0FSRF9OT1RJRlk6IHsK KyAgICAgICAgICAgICAgICAgICAgIHhjYl94a2JfbmV3X2tleWJvYXJkX25vdGlmeV9ldmVudF90 ICpldiA9ICZ4a2JfZXZlbnQtPm5ld19rZXlib2FyZF9ub3RpZnk7CisgICAgICAgICAgICAgICAg ICAgICBpZiAoZXYtPmNoYW5nZWQgJiBYQ0JfWEtCX05LTl9ERVRBSUxfS0VZQ09ERVMpCistICAg ICAgICAgICAgICAgICAgICAgICAgbV9rZXlib2FyZC0+dXBkYXRlS2V5bWFwKGV2KTsKKysgICAg ICAgICAgICAgICAgICAgICAgICBtX2tleWJvYXJkLT51cGRhdGVLZXltYXAoKTsKKyAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg IGRlZmF1bHQ6CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2Iv cXhjYmludGVncmF0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4 Y2JpbnRlZ3JhdGlvbi5jcHAKK2luZGV4IDc2ODY5Y2VkNjAuLjAyZDJlZWJiNTYgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRpb24uY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRpb24u Y3BwCitAQCAtMjc0LDggKzI3NCw3IEBAIFFQbGF0Zm9ybVdpbmRvdyAqUVhjYkludGVncmF0aW9u OjpjcmVhdGVGb3JlaWduV2luZG93KFFXaW5kb3cgKndpbmRvdywgV0lkIG5hdGl2CisgI2lmbmRl ZiBRVF9OT19PUEVOR0wKKyBRUGxhdGZvcm1PcGVuR0xDb250ZXh0ICpRWGNiSW50ZWdyYXRpb246 OmNyZWF0ZVBsYXRmb3JtT3BlbkdMQ29udGV4dChRT3BlbkdMQ29udGV4dCAqY29udGV4dCkgY29u c3QKKyB7CistICAgIFFYY2JTY3JlZW4gKnNjcmVlbiA9IHN0YXRpY19jYXN0PFFYY2JTY3JlZW4g Kj4oY29udGV4dC0+c2NyZWVuKCktPmhhbmRsZSgpKTsKKy0gICAgUVhjYkdsSW50ZWdyYXRpb24g KmdsSW50ZWdyYXRpb24gPSBzY3JlZW4tPmNvbm5lY3Rpb24oKS0+Z2xJbnRlZ3JhdGlvbigpOwor KyAgICBRWGNiR2xJbnRlZ3JhdGlvbiAqZ2xJbnRlZ3JhdGlvbiA9IGRlZmF1bHRDb25uZWN0aW9u KCktPmdsSW50ZWdyYXRpb24oKTsKKyAgICAgaWYgKCFnbEludGVncmF0aW9uKSB7CisgICAgICAg ICBxV2FybmluZygiUVhjYkludGVncmF0aW9uOiBDYW5ub3QgY3JlYXRlIHBsYXRmb3JtIE9wZW5H TCBjb250ZXh0LCBuZWl0aGVyIEdMWCBub3IgRUdMIGFyZSBlbmFibGVkIik7CisgICAgICAgICBy ZXR1cm4gbnVsbHB0cjsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L3hjYi9xeGNia2V5Ym9hcmQuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2Iv cXhjYmtleWJvYXJkLmNwcAoraW5kZXggZWZlY2Q3ZTJkMS4uZTgyODYzODFhMiAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAKKysr KyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAKK0BA IC0zNjUsMTcgKzM2NSw2IEBAIHZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoeGNiX21h cHBpbmdfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorICAgICB1cGRhdGVLZXltYXAoKTsKKyB9Cisg Cistdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCh4Y2JfeGtiX25ld19rZXlib2FyZF9u b3RpZnlfZXZlbnRfdCAqZXZlbnQpCisteworLSAgICBpZiAoIWV2ZW50KQorLSAgICAgICAgcmV0 dXJuOworLQorLSAgICBpZiAoZXZlbnQtPmRldmljZUlEICE9IGV2ZW50LT5vbGREZXZpY2VJRCkK Ky0gICAgICAgIG1fY29uZmlnID0gZmFsc2U7CistCistICAgIHVwZGF0ZUtleW1hcCgpOworLX0K Ky0KKyB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyB7CisgICAgIEtleXN5bU1v ZGlmaWVyTWFwIGtleXN5bU1vZHM7CitAQCAtMzgzLDYgKzM3Miw4IEBAIHZvaWQgUVhjYktleWJv YXJkOjp1cGRhdGVLZXltYXAoKQorICAgICAgICAga2V5c3ltTW9kcyA9IGtleXN5bXNUb01vZGlm aWVycygpOworICAgICB1cGRhdGVNb2RpZmllcnMoa2V5c3ltTW9kcyk7CisgCisrICAgIG1fY29u ZmlnID0gdHJ1ZTsKKysKKyAgICAgaWYgKCFtX3hrYkNvbnRleHQpIHsKKyAgICAgICAgIG1feGti Q29udGV4dC5yZXNldCh4a2JfY29udGV4dF9uZXcoWEtCX0NPTlRFWFRfTk9fREVGQVVMVF9JTkNM VURFUykpOworICAgICAgICAgaWYgKCFtX3hrYkNvbnRleHQpIHsKK0BAIC0zOTgsMTMgKzM4OSw4 IEBAIHZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoKQorICAgICBpZiAoY29ubmVjdGlv bigpLT5oYXNYS0IoKSkgeworICAgICAgICAgbV94a2JLZXltYXAucmVzZXQoeGtiX3gxMV9rZXlt YXBfbmV3X2Zyb21fZGV2aWNlKG1feGtiQ29udGV4dC5nZXQoKSwgeGNiX2Nvbm5lY3Rpb24oKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb3JlX2RldmljZV9pZCwgWEtCX0tFWU1BUF9DT01QSUxFX05PX0ZMQUdTKSk7CistICAgICAg ICBpZiAobV94a2JLZXltYXApIHsKKy0gICAgICAgICAgICBpZiAobV9jb25maWcpCistICAgICAg ICAgICAgICAgIG1feGtiU3RhdGUucmVzZXQoeGtiX3N0YXRlX25ldyhtX3hrYktleW1hcC5nZXQo KSkpOworLSAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgbV94a2JTdGF0ZS5yZXNl dCh4a2JfeDExX3N0YXRlX25ld19mcm9tX2RldmljZShtX3hrYktleW1hcC5nZXQoKSwgeGNiX2Nv bm5lY3Rpb24oKSwgY29yZV9kZXZpY2VfaWQpKTsKKy0KKy0gICAgICAgIH0KKysgICAgICAgIGlm IChtX3hrYktleW1hcCkKKysgICAgICAgICAgICBtX3hrYlN0YXRlLnJlc2V0KHhrYl94MTFfc3Rh dGVfbmV3X2Zyb21fZGV2aWNlKG1feGtiS2V5bWFwLmdldCgpLCB4Y2JfY29ubmVjdGlvbigpLCBj b3JlX2RldmljZV9pZCkpOworICAgICB9IGVsc2UgeworICAgICAgICAgbV94a2JLZXltYXAucmVz ZXQoa2V5bWFwRnJvbUNvcmUoa2V5c3ltTW9kcykpOworICAgICAgICAgaWYgKG1feGtiS2V5bWFw KQorQEAgLTQyNSw4ICs0MTEsNiBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkK KyAgICAgdXBkYXRlWEtCTW9kcygpOworIAorICAgICBRWGtiQ29tbW9uOjp2ZXJpZnlIYXNMYXRp bkxheW91dChtX3hrYktleW1hcC5nZXQoKSk7CistCistICAgIG1fY29uZmlnID0gdHJ1ZTsKKyB9 CisgCisgUUxpc3Q8aW50PiBRWGNiS2V5Ym9hcmQ6OnBvc3NpYmxlS2V5cyhjb25zdCBRS2V5RXZl bnQgKmV2ZW50KSBjb25zdAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMveGNiL3F4Y2JrZXlib2FyZC5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2Iv cXhjYmtleWJvYXJkLmgKK2luZGV4IGI2NTJjODVmZTMuLjBlZTA4YWVmZjIgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuaAorKysrIGIv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmgKK0BAIC02OSw3 ICs2OSw2IEBAIHB1YmxpYzoKKyAKKyAgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIHRyYW5zbGF0 ZU1vZGlmaWVycyhpbnQgcykgY29uc3Q7CisgICAgIHZvaWQgdXBkYXRlS2V5bWFwKHhjYl9tYXBw aW5nX25vdGlmeV9ldmVudF90ICpldmVudCk7CistICAgIHZvaWQgdXBkYXRlS2V5bWFwKHhjYl94 a2JfbmV3X2tleWJvYXJkX25vdGlmeV9ldmVudF90ICpldmVudCk7CisgICAgIHZvaWQgdXBkYXRl S2V5bWFwKCk7CisgICAgIFFMaXN0PGludD4gcG9zc2libGVLZXlzKGNvbnN0IFFLZXlFdmVudCAq ZXZlbnQpIGNvbnN0OworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMveGNiL3F4Y2J3aW5kb3cuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2Iv cXhjYndpbmRvdy5jcHAKK2luZGV4IGZmZGE3YjZhNTcuLjg2M2U5NjFmNGMgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmNwcAorKysrIGIv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAKK0BAIC01NjQs MTEgKzU2NCw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3QgJnJl Y3QpCisgeworICAgICBRUGxhdGZvcm1XaW5kb3c6OnNldEdlb21ldHJ5KHJlY3QpOworIAorLSAg ICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6OlNldEdlb21ldHJ5KSkgeworLSAgICAgICAgbV9k ZWZlcnJlZEdlb21ldHJ5ID0gcmVjdDsKKy0gICAgICAgIHJldHVybjsKKy0gICAgfQorLQorICAg ICBwcm9wYWdhdGVTaXplSGludHMoKTsKKyAKKyAgICAgUVhjYlNjcmVlbiAqY3VycmVudFNjcmVl biA9IHhjYlNjcmVlbigpOworQEAgLTY5Myw5ICs2ODgsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNl dFZpc2libGUoYm9vbCB2aXNpYmxlKQorIAorIHZvaWQgUVhjYldpbmRvdzo6c2hvdygpCisgewor LSAgICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6Ok1hcCkpCistICAgICAgICByZXR1cm47Cist CisgICAgIGlmICh3aW5kb3coKS0+aXNUb3BMZXZlbCgpKSB7CisgCisgICAgICAgICAvLyB1cGRh dGUgV01fTk9STUFMX0hJTlRTCitAQCAtNzA2LDcgKzY5OCw3IEBAIHZvaWQgUVhjYldpbmRvdzo6 c2hvdygpCisgICAgICAgICBpZiAoaXNUcmFuc2llbnQod2luZG93KCkpKSB7CisgICAgICAgICAg ICAgY29uc3QgUVdpbmRvdyAqdHAgPSB3aW5kb3coKS0+dHJhbnNpZW50UGFyZW50KCk7CisgICAg ICAgICAgICAgaWYgKHRwICYmIHRwLT5oYW5kbGUoKSkKKy0gICAgICAgICAgICAgICAgdHJhbnNp ZW50WGNiUGFyZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgUVhjYldpbmRvdyAqPih0cC0+aGFuZGxl KCkpLT53aW5JZCgpOworKyAgICAgICAgICAgICAgICB0cmFuc2llbnRYY2JQYXJlbnQgPSB0cC0+ aGFuZGxlKCktPndpbklkKCk7CisgICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBjbGllbnQgbGVh ZGVyIGlmIHRoZXJlIGlzIG5vIHRyYW5zaWVudCBwYXJlbnQsIGVsc2UgbW9kYWwgZGlhbG9ncyBj YW4KKyAgICAgICAgICAgICAvLyBiZSBoaWRkZW4gYnkgdGhlaXIgcGFyZW50cy4KKyAgICAgICAg ICAgICBpZiAoIXRyYW5zaWVudFhjYlBhcmVudCkKK0BAIC03NDYsMTAgKzczOCw2IEBAIHZvaWQg UVhjYldpbmRvdzo6c2hvdygpCisgCisgdm9pZCBRWGNiV2luZG93OjpoaWRlKCkKKyB7CistICAg IGlmIChzaG91bGREZWZlclRhc2soVGFzazo6VW5tYXApKQorLSAgICAgICAgcmV0dXJuOworLQor LSAgICBtX3dtU3RhdGVWYWxpZCA9IGZhbHNlOworICAgICB4Y2JfdW5tYXBfd2luZG93KHhjYl9j b25uZWN0aW9uKCksIG1fd2luZG93KTsKKyAKKyAgICAgLy8gc2VuZCBzeW50aGV0aWMgVW5tYXBO b3RpZnkgZXZlbnQgYWNjb3JkaW5nIHRvIGljY2NtIDQuMS40CitAQCAtOTA5LDkgKzg5Nyw2IEBA IFFYY2JXaW5kb3c6Ok5ldFdtU3RhdGVzIFFYY2JXaW5kb3c6Om5ldFdtU3RhdGVzKCkKKyAKKyB2 b2lkIFFYY2JXaW5kb3c6OnNldFdpbmRvd0ZsYWdzKFF0OjpXaW5kb3dGbGFncyBmbGFncykKKyB7 CistICAgIGlmIChzaG91bGREZWZlclRhc2soVGFzazo6U2V0V2luZG93RmxhZ3MpKQorLSAgICAg ICAgcmV0dXJuOworLQorICAgICBRdDo6V2luZG93VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8UXQ6 OldpbmRvd1R5cGU+KGludChmbGFncyAmIFF0OjpXaW5kb3dUeXBlX01hc2spKTsKKyAKKyAgICAg aWYgKHR5cGUgPT0gUXQ6OlRvb2xUaXApCitAQCAtOTQxLDggKzkyNiw2IEBAIHZvaWQgUVhjYldp bmRvdzo6c2V0V2luZG93RmxhZ3MoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKQorIAorICAgICBzZXRU cmFuc3BhcmVudEZvck1vdXNlRXZlbnRzKGZsYWdzICYgUXQ6OldpbmRvd1RyYW5zcGFyZW50Rm9y SW5wdXQpOworICAgICB1cGRhdGVEb2VzTm90QWNjZXB0Rm9jdXMoZmxhZ3MgJiBRdDo6V2luZG93 RG9lc05vdEFjY2VwdEZvY3VzKTsKKy0KKy0gICAgbV9pc1dtTWFuYWdlZFdpbmRvdyA9ICEoZmxh Z3MgJiBRdDo6WDExQnlwYXNzV2luZG93TWFuYWdlckhpbnQpOworIH0KKyAKKyB2b2lkIFFYY2JX aW5kb3c6OnNldE1vdGlmV21IaW50cyhRdDo6V2luZG93RmxhZ3MgZmxhZ3MpCitAQCAtMTE0Miw5 ICsxMTI1LDYgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dTdGF0ZShRdDo6V2luZG93U3Rh dGVzIHN0YXRlKQorICAgICBpZiAoc3RhdGUgPT0gbV93aW5kb3dTdGF0ZSkKKyAgICAgICAgIHJl dHVybjsKKyAKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpTZXRXaW5kb3dTdGF0ZSkp CistICAgICAgICByZXR1cm47CistCisgICAgIC8vIHVuc2V0IG9sZCBzdGF0ZQorICAgICBpZiAo bV93aW5kb3dTdGF0ZSAmIFF0OjpXaW5kb3dNaW5pbWl6ZWQpCisgICAgICAgICB4Y2JfbWFwX3dp bmRvdyh4Y2JfY29ubmVjdGlvbigpLCBtX3dpbmRvdyk7CitAQCAtMTM1MCw2ICsxMzMwLDEyIEBA IHZvaWQgUVhjYldpbmRvdzo6c2V0V2luZG93SWNvbihjb25zdCBRSWNvbiAmaWNvbikKKyAgICAg fQorIAorICAgICBpZiAoIWljb25fZGF0YS5pc0VtcHR5KCkpIHsKKysgICAgICAgIC8vIElnbm9y ZSBpY29uIGV4Y2VlZGluZyBtYXhpbXVtIHhjYiByZXF1ZXN0IGxlbmd0aAorKyAgICAgICAgaWYg KGljb25fZGF0YS5zaXplKCkgPiB4Y2JfZ2V0X21heGltdW1fcmVxdWVzdF9sZW5ndGgoeGNiX2Nv bm5lY3Rpb24oKSkpIHsKKysgICAgICAgICAgICBxV2FybmluZygiSWdub3Jpbmcgd2luZG93IGlj b246IFNpemUgJWxsdSBleGNlZWRzIG1heGltdW0geGNiIHJlcXVlc3QgbGVuZ3RoICV1LiIsCisr ICAgICAgICAgICAgICAgICAgICAgaWNvbl9kYXRhLnNpemUoKSwgeGNiX2dldF9tYXhpbXVtX3Jl cXVlc3RfbGVuZ3RoKHhjYl9jb25uZWN0aW9uKCkpKTsKKysgICAgICAgICAgICByZXR1cm47Cisr ICAgICAgICB9CisgICAgICAgICB4Y2JfY2hhbmdlX3Byb3BlcnR5KHhjYl9jb25uZWN0aW9uKCks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhDQl9QUk9QX01PREVfUkVQTEFDRSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93aW5kb3csCitAQCAtMTYzOSw3ICsxNjI1LDcg QEAgdm9pZCBRWGNiV2luZG93OjpzZXRXbVdpbmRvd1R5cGUoUVhjYldpbmRvd0Z1bmN0aW9uczo6 V21XaW5kb3dUeXBlcyB0eXBlcywgUXQ6OlcKKyAgICAgICAgIGJyZWFrOworICAgICB9CisgCist ICAgIGlmICgoZmxhZ3MgJiBRdDo6RnJhbWVsZXNzV2luZG93SGludCkgJiYgISh0eXBlICYgUVhj YldpbmRvd0Z1bmN0aW9uczo6S2RlT3ZlcnJpZGUpKSB7CisrICAgIGlmICgoZmxhZ3MgJiBRdDo6 RnJhbWVsZXNzV2luZG93SGludCkgJiYgISh0eXBlcyAmIFFYY2JXaW5kb3dGdW5jdGlvbnM6Oktk ZU92ZXJyaWRlKSkgeworICAgICAgICAgLy8gb3ZlcnJpZGUgbmV0d20gdHlwZSAtIHF1aWNrIGFu ZCBlYXN5IGZvciBLREUgbm9ib3JkZXIKKyAgICAgICAgIGF0b21zLmFwcGVuZChhdG9tKFFYY2JB dG9tOjpfS0RFX05FVF9XTV9XSU5ET1dfVFlQRV9PVkVSUklERSkpOworICAgICB9CitAQCAtMTg5 NCwxMCArMTg4MCw2IEBAIHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlVW5tYXBOb3RpZnlFdmVudChj b25zdCB4Y2JfdW5tYXBfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorICAgICBpZiAoZXZlbnQtPndp bmRvdyA9PSBtX3dpbmRvdykgeworICAgICAgICAgbV9tYXBwZWQgPSBmYWxzZTsKKyAgICAgICAg IFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUV4cG9zZUV2ZW50KHdpbmRvdygpLCBRUmVn aW9uKCkpOworLSAgICAgICAgaWYgKCFtX2lzV21NYW5hZ2VkV2luZG93IHx8IHBhcmVudCgpKSB7 CistICAgICAgICAgICAgbV93bVN0YXRlVmFsaWQgPSB0cnVlOworLSAgICAgICAgICAgIGhhbmRs ZURlZmVycmVkVGFza3MoKTsKKy0gICAgICAgIH0KKyAgICAgfQorIH0KKyAKK0BAIC0yMjEyLDk4 ICsyMTk0LDMwIEBAIHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlTGVhdmVOb3RpZnlFdmVudChjb25z dCB4Y2JfbGVhdmVfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorICAgICBoYW5kbGVMZWF2ZU5vdGlm eUV2ZW50KGV2ZW50LT5yb290X3gsIGV2ZW50LT5yb290X3ksIGV2ZW50LT5tb2RlLCBldmVudC0+ ZGV0YWlsLCBldmVudC0+dGltZSk7CisgfQorIAorLWJvb2wgUVhjYldpbmRvdzo6c2hvdWxkRGVm ZXJUYXNrKFRhc2sgdGFzaykKKy17CistICAgIGlmIChtX3dtU3RhdGVWYWxpZCkKKy0gICAgICAg IHJldHVybiBmYWxzZTsKKy0KKy0gICAgbV9kZWZlcnJlZFRhc2tzLmFwcGVuZCh0YXNrKTsKKy0g ICAgcmV0dXJuIHRydWU7CistfQorLQorLXZvaWQgUVhjYldpbmRvdzo6aGFuZGxlRGVmZXJyZWRU YXNrcygpCisteworLSAgICBRX0FTU0VSVChtX3dtU3RhdGVWYWxpZCA9PSB0cnVlKTsKKy0gICAg aWYgKG1fZGVmZXJyZWRUYXNrcy5pc0VtcHR5KCkpCistICAgICAgICByZXR1cm47CistCistICAg IGJvb2wgbWFwID0gZmFsc2U7CistICAgIGJvb2wgdW5tYXAgPSBmYWxzZTsKKy0KKy0gICAgUVZl Y3RvcjxUYXNrPiB0YXNrczsKKy0gICAgZm9yIChhdXRvIHRhc2tJdCA9IG1fZGVmZXJyZWRUYXNr cy5yYmVnaW4oKTsgdGFza0l0ICE9IG1fZGVmZXJyZWRUYXNrcy5yZW5kKCk7ICsrdGFza0l0KSB7 CistICAgICAgICBpZiAoIXRhc2tzLmNvbnRhaW5zKCp0YXNrSXQpKQorLSAgICAgICAgICAgIHRh c2tzLnByZXBlbmQoKnRhc2tJdCk7CistICAgIH0KKy0KKy0gICAgZm9yIChUYXNrIHRhc2sgOiB0 YXNrcykgeworLSAgICAgICAgc3dpdGNoICh0YXNrKSB7CistICAgICAgICBjYXNlIFRhc2s6Ok1h cDoKKy0gICAgICAgICAgICBtYXAgPSB0cnVlOworLSAgICAgICAgICAgIHVubWFwID0gZmFsc2U7 CistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICBjYXNlIFRhc2s6OlVubWFwOgorLSAgICAg ICAgICAgIHVubWFwID0gdHJ1ZTsKKy0gICAgICAgICAgICBtYXAgPSBmYWxzZTsKKy0gICAgICAg ICAgICBicmVhazsKKy0gICAgICAgIGNhc2UgVGFzazo6U2V0R2VvbWV0cnk6CistICAgICAgICAg ICAgc2V0R2VvbWV0cnkobV9kZWZlcnJlZEdlb21ldHJ5KTsKKy0gICAgICAgICAgICBicmVhazsK Ky0gICAgICAgIGNhc2UgVGFzazo6U2V0V2luZG93RmxhZ3M6CistICAgICAgICAgICAgc2V0V2lu ZG93RmxhZ3Mod2luZG93KCktPmZsYWdzKCkpOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAg ICAgY2FzZSBUYXNrOjpTZXRXaW5kb3dTdGF0ZToKKy0gICAgICAgICAgICBzZXRXaW5kb3dTdGF0 ZSh3aW5kb3coKS0+d2luZG93U3RhdGUoKSk7CistICAgICAgICAgICAgYnJlYWs7CistICAgICAg ICB9CistICAgIH0KKy0gICAgbV9kZWZlcnJlZFRhc2tzLmNsZWFyKCk7CistCistICAgIGlmICht YXApIHsKKy0gICAgICAgIFFfQVNTRVJUKHVubWFwID09IGZhbHNlKTsKKy0gICAgICAgIHNob3co KTsKKy0gICAgfQorLSAgICBpZiAodW5tYXApIHsKKy0gICAgICAgIFFfQVNTRVJUKG1hcCA9PSBm YWxzZSk7CistICAgICAgICBoaWRlKCk7CistICAgIH0KKy19CistCisgdm9pZCBRWGNiV2luZG93 OjpoYW5kbGVQcm9wZXJ0eU5vdGlmeUV2ZW50KGNvbnN0IHhjYl9wcm9wZXJ0eV9ub3RpZnlfZXZl bnRfdCAqZXZlbnQpCisgeworICAgICBjb25uZWN0aW9uKCktPnNldFRpbWUoZXZlbnQtPnRpbWUp OworIAorLSAgICBjb25zdCBib29sIHdtU3RhdGVDaGFuZ2VkID0gZXZlbnQtPmF0b20gPT0gYXRv bShRWGNiQXRvbTo6V01fU1RBVEUpOworLSAgICBjb25zdCBib29sIG5ldFdtU3RhdGVDaGFuZ2Vk ID0gZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6X05FVF9XTV9TVEFURSk7CistICAgIGlm IChuZXRXbVN0YXRlQ2hhbmdlZCB8fCB3bVN0YXRlQ2hhbmdlZCkgeworLSAgICAgICAgaWYgKHdt U3RhdGVDaGFuZ2VkICYmICFtX3dtU3RhdGVWYWxpZCAmJiBtX2lzV21NYW5hZ2VkV2luZG93KSB7 CistICAgICAgICAgICAgLy8gSUNDQ00gNC4xLjQKKy0gICAgICAgICAgICAvLyBDbGllbnRzIHRo YXQgd2FudCB0byByZS11c2UgYSBjbGllbnQgd2luZG93IChlLmcuIGJ5IG1hcHBpbmcgaXQgYWdh aW4pCistICAgICAgICAgICAgLy8gYWZ0ZXIgd2l0aGRyYXdpbmcgaXQgbXVzdCB3YWl0IGZvciB0 aGUgd2l0aGRyYXdhbCB0byBiZSBjb21wbGV0ZSBiZWZvcmUKKy0gICAgICAgICAgICAvLyBwcm9j ZWVkaW5nLiBUaGUgcHJlZmVycmVkIG1ldGhvZCBmb3IgZG9pbmcgdGhpcyBpcyBmb3IgY2xpZW50 cyB0byB3YWl0IGZvcgorLSAgICAgICAgICAgIC8vIGEgd2luZG93IG1hbmFnZXIgdG8gdXBkYXRl IG9yIHJlbW92ZSB0aGUgV01fU1RBVEUgcHJvcGVydHkuCistICAgICAgICAgICAgbV93bVN0YXRl VmFsaWQgPSB0cnVlOworLSAgICAgICAgICAgIGhhbmRsZURlZmVycmVkVGFza3MoKTsKKy0gICAg ICAgIH0KKy0gICAgICAgIGlmIChldmVudC0+c3RhdGUgPT0gWENCX1BST1BFUlRZX0RFTEVURSkK KysgICAgY29uc3QgYm9vbCBwcm9wZXJ0eURlbGV0ZWQgPSBldmVudC0+c3RhdGUgPT0gWENCX1BS T1BFUlRZX0RFTEVURTsKKysKKysgICAgaWYgKGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206 Ol9ORVRfV01fU1RBVEUpIHx8IGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206OldNX1NUQVRF KSkgeworKyAgICAgICAgaWYgKHByb3BlcnR5RGVsZXRlZCkKKyAgICAgICAgICAgICByZXR1cm47 CisgCistICAgICAgICBpZiAod21TdGF0ZUNoYW5nZWQpIHsKKysgICAgICAgIFF0OjpXaW5kb3dT dGF0ZXMgbmV3U3RhdGUgPSBRdDo6V2luZG93Tm9TdGF0ZTsKKysKKysgICAgICAgIGlmIChldmVu dC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSkpIHsgLy8gV01fU1RBVEU6IFF1aWNr IGNoZWNrIGZvciAnTWluaW1pemUnLgorICAgICAgICAgICAgIGF1dG8gcmVwbHkgPSBRX1hDQl9S RVBMWSh4Y2JfZ2V0X3Byb3BlcnR5LCB4Y2JfY29ubmVjdGlvbigpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAwLCBtX3dpbmRvdywgYXRvbShRWGNiQXRvbTo6V01fU1RB VEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYQ0JfQVRPTV9BTlks IDAsIDEwMjQpOworICAgICAgICAgICAgIGlmIChyZXBseSAmJiByZXBseS0+Zm9ybWF0ID09IDMy ICYmIHJlcGx5LT50eXBlID09IGF0b20oUVhjYkF0b206OldNX1NUQVRFKSkgeworLSAgICAgICAg ICAgICAgICBhdXRvIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBxdWludDMyICo+KHhjYl9nZXRf cHJvcGVydHlfdmFsdWUocmVwbHkuZ2V0KCkpKTsKKy0gICAgICAgICAgICAgICAgaWYgKHJlcGx5 LT5sZW5ndGggIT0gMCkgeworLSAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBjaGFuZ2Vk VG9XaXRoZHJhd24gPSBkYXRhWzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9XSVRIRFJBV047Cist ICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIGNoYW5nZWRUb0ljb25pYyA9IGRhdGFbMF0g PT0gWENCX0lDQ0NNX1dNX1NUQVRFX0lDT05JQzsKKy0gICAgICAgICAgICAgICAgICAgIG1fbWlu aW1pemVkID0gY2hhbmdlZFRvSWNvbmljIHx8IChjaGFuZ2VkVG9XaXRoZHJhd24gJiYgbV9taW5p bWl6ZWQpOworLSAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGNvbnN0IHF1aW50 MzIgKmRhdGEgPSAoY29uc3QgcXVpbnQzMiAqKXhjYl9nZXRfcHJvcGVydHlfdmFsdWUocmVwbHku Z2V0KCkpOworKyAgICAgICAgICAgICAgICBpZiAocmVwbHktPmxlbmd0aCAhPSAwKQorKyAgICAg ICAgICAgICAgICAgICAgbV9taW5pbWl6ZWQgPSAoZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RB VEVfSUNPTklDCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoZGF0YVsw XSA9PSBYQ0JfSUNDQ01fV01fU1RBVEVfV0lUSERSQVdOICYmIG1fbWluaW1pemVkKSk7CisgICAg ICAgICAgICAgfQorICAgICAgICAgfQorIAorLSAgICAgICAgLy8gX05FVF9XTV9TVEFURSBoYW5k bGluZworLSAgICAgICAgUXQ6OldpbmRvd1N0YXRlcyBuZXdTdGF0ZSA9IFF0OjpXaW5kb3dOb1N0 YXRlOworICAgICAgICAgY29uc3QgTmV0V21TdGF0ZXMgc3RhdGVzID0gbmV0V21TdGF0ZXMoKTsK KyAgICAgICAgIC8vIF9ORVRfV01fU1RBVEVfSElEREVOIHNob3VsZCBiZSBzZXQgYnkgdGhlIFdp bmRvdyBNYW5hZ2VyIHRvIGluZGljYXRlIHRoYXQgYSB3aW5kb3cgd291bGQKKyAgICAgICAgIC8v IG5vdCBiZSB2aXNpYmxlIG9uIHRoZSBzY3JlZW4gaWYgaXRzIGRlc2t0b3Avdmlld3BvcnQgd2Vy ZSBhY3RpdmUgYW5kIGl0cyBjb29yZGluYXRlcyB3ZXJlCitAQCAtMjMyNSw2ICsyMjM5LDcgQEAg dm9pZCBRWGNiV2luZG93OjpoYW5kbGVQcm9wZXJ0eU5vdGlmeUV2ZW50KGNvbnN0IHhjYl9wcm9w ZXJ0eV9ub3RpZnlfZXZlbnRfdCAqZXYKKyAgICAgICAgICAgICBpZiAoKG1fd2luZG93U3RhdGUg JiBRdDo6V2luZG93TWluaW1pemVkKSAmJiBjb25uZWN0aW9uKCktPm1vdXNlR3JhYmJlcigpID09 IHRoaXMpCisgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24oKS0+c2V0TW91c2VHcmFiYmVyKG51 bGxwdHIpOworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJuOworICAgICB9IGVsc2UgaWYgKGV2 ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206Ol9ORVRfRlJBTUVfRVhURU5UUykpIHsKKyAgICAg ICAgIG1fZGlydHlGcmFtZU1hcmdpbnMgPSB0cnVlOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5oIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5oCitpbmRleCA1NWFmOTI3OWIxLi42ZjVj MWY1ZWQ5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhj YndpbmRvdy5oCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2lu ZG93LmgKK0BAIC03NCwxNCArNzQsNiBAQCBwdWJsaWM6CisgCisgICAgIFFfREVDTEFSRV9GTEFH UyhOZXRXbVN0YXRlcywgTmV0V21TdGF0ZSkKKyAKKy0gICAgZW51bSBUYXNrIHsKKy0gICAgICAg IE1hcCwKKy0gICAgICAgIFVubWFwLAorLSAgICAgICAgU2V0R2VvbWV0cnksCistICAgICAgICBT ZXRXaW5kb3dGbGFncywKKy0gICAgICAgIFNldFdpbmRvd1N0YXRlCistICAgIH07CistCisgICAg IFFYY2JXaW5kb3coUVdpbmRvdyAqd2luZG93KTsKKyAgICAgflFYY2JXaW5kb3coKTsKKyAKK0BA IC0xNTEsOSArMTQzLDYgQEAgcHVibGljOgorIAorICAgICBRWGNiV2luZG93ICp0b1dpbmRvdygp IG92ZXJyaWRlOworIAorLSAgICBib29sIHNob3VsZERlZmVyVGFzayhUYXNrIHRhc2spOworLSAg ICB2b2lkIGhhbmRsZURlZmVycmVkVGFza3MoKTsKKy0KKyAgICAgdm9pZCBoYW5kbGVNb3VzZUV2 ZW50KHhjYl90aW1lc3RhbXBfdCB0aW1lLCBjb25zdCBRUG9pbnQgJmxvY2FsLCBjb25zdCBRUG9p bnQgJmdsb2JhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0OjpLZXlib2FyZE1vZGlm aWVycyBtb2RpZmllcnMsIFFFdmVudDo6VHlwZSB0eXBlLCBRdDo6TW91c2VFdmVudFNvdXJjZSBz b3VyY2UpOworIAorQEAgLTI5MiwxMSArMjgxLDYgQEAgcHJvdGVjdGVkOgorICAgICBpbnQgbV9z d2FwSW50ZXJ2YWwgPSAtMTsKKyAKKyAgICAgcXJlYWwgbV9zaXplSGludHNTY2FsZUZhY3RvciA9 IDEuMDsKKy0KKy0gICAgYm9vbCBtX3dtU3RhdGVWYWxpZCA9IHRydWU7CistICAgIFFWZWN0b3I8 VGFzaz4gbV9kZWZlcnJlZFRhc2tzOworLSAgICBib29sIG1faXNXbU1hbmFnZWRXaW5kb3cgPSB0 cnVlOworLSAgICBRUmVjdCBtX2RlZmVycmVkR2VvbWV0cnk7CisgfTsKKyAKKyBjbGFzcyBRWGNi Rm9yZWlnbldpbmRvdyA6IHB1YmxpYyBRWGNiV2luZG93CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL2d0azMvcWd0azNtZW51LmNwcCBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAKK2luZGV4IGQ5ZDExN2Zh ZWIuLjY0MGI0OWRhYTAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10 aGVtZXMvZ3RrMy9xZ3RrM21lbnUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm10aGVtZXMvZ3RrMy9xZ3RrM21lbnUuY3BwCitAQCAtODUsNiArODUsNyBAQCBRR3RrM01lbnVJ dGVtOjpRR3RrM01lbnVJdGVtKCkKKyAgICAgICBtX2NoZWNrYWJsZShmYWxzZSksCisgICAgICAg bV9jaGVja2VkKGZhbHNlKSwKKyAgICAgICBtX2VuYWJsZWQodHJ1ZSksCisrICAgICAgbV9leGNs dXNpdmUoZmFsc2UpLAorICAgICAgIG1fdW5kZXJsaW5lKGZhbHNlKSwKKyAgICAgICBtX2ludmFs aWQodHJ1ZSksCisgICAgICAgbV9tZW51KG51bGxwdHIpLAorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9y dGFsZmlsZWRpYWxvZy5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRn ZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2cuY3BwCitpbmRleCAwMDQ4 YmJjMWU2Li4zOTZlN2Y2ZDFjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNw cAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0 YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcAorQEAgLTEwMiwxNSArMTAyLDEyIEBA IGNvbnN0IFFEQnVzQXJndW1lbnQgJm9wZXJhdG9yID4+KGNvbnN0IFFEQnVzQXJndW1lbnQgJmFy ZywgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlCisgY2xhc3MgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlh bG9nUHJpdmF0ZQorIHsKKyBwdWJsaWM6CistICAgIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxv Z1ByaXZhdGUoUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZykKKysg ICAgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZShRUGxhdGZvcm1GaWxlRGlhbG9n SGVscGVyICpuYXRpdmVGaWxlRGlhbG9nLCB1aW50IGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikK KyAgICAgICAgIDogbmF0aXZlRmlsZURpYWxvZyhuYXRpdmVGaWxlRGlhbG9nKQorKyAgICAgICAg LCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24oZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKQorICAg ICB7IH0KKyAKKy0gICAgV0lkIHdpbklkID0gMDsKKy0gICAgYm9vbCBkaXJlY3RvcnlNb2RlID0g ZmFsc2U7CistICAgIGJvb2wgbW9kYWwgPSBmYWxzZTsKKy0gICAgYm9vbCBtdWx0aXBsZUZpbGVz ID0gZmFsc2U7CistICAgIGJvb2wgc2F2ZUZpbGUgPSBmYWxzZTsKKysgICAgUUV2ZW50TG9vcCBs b29wOworICAgICBRU3RyaW5nIGFjY2VwdExhYmVsOworICAgICBRU3RyaW5nIGRpcmVjdG9yeTsK KyAgICAgUVN0cmluZyB0aXRsZTsKK0BAIC0xMjEsMTkgKzExOCwyNyBAQCBwdWJsaWM6CisgICAg IFFTdHJpbmcgc2VsZWN0ZWRNaW1lVHlwZUZpbHRlcjsKKyAgICAgUVN0cmluZyBzZWxlY3RlZE5h bWVGaWx0ZXI7CisgICAgIFFTdHJpbmdMaXN0IHNlbGVjdGVkRmlsZXM7CistICAgIFFQbGF0Zm9y bUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cgPSBudWxscHRyOworKyAgICBzdGQ6 OnVuaXF1ZV9wdHI8UVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcj4gbmF0aXZlRmlsZURpYWxvZzsK KysgICAgdWludCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPSAwOworKyAgICBib29sIGZhaWxl ZFRvT3BlbiA9IGZhbHNlOworKyAgICBib29sIGRpcmVjdG9yeU1vZGUgPSBmYWxzZTsKKysgICAg Ym9vbCBtdWx0aXBsZUZpbGVzID0gZmFsc2U7CisrICAgIGJvb2wgc2F2ZUZpbGUgPSBmYWxzZTsK KyB9OworIAorLVFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6UVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cpCisr UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2co UVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZywgdWludCBmaWxlQ2hv b3NlclBvcnRhbFZlcnNpb24pCisgICAgIDogUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcigpCist ICAgICwgZF9wdHIobmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUobmF0aXZl RmlsZURpYWxvZykpCisrICAgICwgZF9wdHIobmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxv Z1ByaXZhdGUobmF0aXZlRmlsZURpYWxvZywgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKSkKKyB7 CisgICAgIFFfRChRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAorICAgICBpZiAoZC0+ bmF0aXZlRmlsZURpYWxvZykgeworLSAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxlRGlhbG9n LCBTSUdOQUwoYWNjZXB0KCkpLCB0aGlzLCBTSUdOQUwoYWNjZXB0KCkpKTsKKy0gICAgICAgIGNv bm5lY3QoZC0+bmF0aXZlRmlsZURpYWxvZywgU0lHTkFMKHJlamVjdCgpKSwgdGhpcywgU0lHTkFM KHJlamVjdCgpKSk7CisrICAgICAgICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2cuZ2V0KCks IFNJR05BTChhY2NlcHQoKSksIHRoaXMsIFNJR05BTChhY2NlcHQoKSkpOworKyAgICAgICAgY29u bmVjdChkLT5uYXRpdmVGaWxlRGlhbG9nLmdldCgpLCBTSUdOQUwocmVqZWN0KCkpLCB0aGlzLCBT SUdOQUwocmVqZWN0KCkpKTsKKyAgICAgfQorKworKyAgICBkLT5sb29wLmNvbm5lY3QodGhpcywg U0lHTkFMKGFjY2VwdCgpKSwgU0xPVChxdWl0KCkpKTsKKysgICAgZC0+bG9vcC5jb25uZWN0KHRo aXMsIFNJR05BTChyZWplY3QoKSksIFNMT1QocXVpdCgpKSk7CisgfQorIAorIFFYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZzo6flFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZygpCitAQCAtMTc3 LDcgKzE4Miw3IEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjppbml0aWFsaXpl RGlhbG9nKCkKKyAgICAgc2V0RGlyZWN0b3J5KG9wdGlvbnMoKS0+aW5pdGlhbERpcmVjdG9yeSgp KTsKKyB9CisgCistdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwo KQorK3ZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKFF0OjpXaW5k b3dGbGFncyB3aW5kb3dGbGFncywgUXQ6OldpbmRvd01vZGFsaXR5IHdpbmRvd01vZGFsaXR5LCBR V2luZG93ICpwYXJlbnQpCisgeworICAgICBRX0QoUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9n KTsKKyAKK0BAIC0xODUsMTMgKzE5MCwxMyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURp YWxvZzo6b3BlblBvcnRhbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIi9vcmcvZnJlZWRlc2t0b3AvcG9y dGFsL2Rlc2t0b3AiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5G aWxlQ2hvb3NlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkLT5zYXZlRmlsZSA/IFFMYXRpbjFTdHJpbmcoIlNhdmVGaWxlIikg OiBRTGF0aW4xU3RyaW5nKCJPcGVuRmlsZSIpKTsKKy0gICAgUVN0cmluZyBwYXJlbnRXaW5kb3dJ ZCA9IFFMYXRpbjFTdHJpbmcoIngxMToiKSArIFFTdHJpbmc6Om51bWJlcihkLT53aW5JZCwgMTYp OworKyAgICBRU3RyaW5nIHBhcmVudFdpbmRvd0lkID0gUUxhdGluMVN0cmluZygieDExOiIpICsg UVN0cmluZzo6bnVtYmVyKHBhcmVudCA/IHBhcmVudC0+d2luSWQoKSA6IDAsIDE2KTsKKyAKKyAg ICAgUVZhcmlhbnRNYXAgb3B0aW9uczsKKyAgICAgaWYgKCFkLT5hY2NlcHRMYWJlbC5pc0VtcHR5 KCkpCisgICAgICAgICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJhY2NlcHRfbGFiZWwi KSwgZC0+YWNjZXB0TGFiZWwpOworIAorLSAgICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5n KCJtb2RhbCIpLCBkLT5tb2RhbCk7CisrICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJpbmco Im1vZGFsIiksIHdpbmRvd01vZGFsaXR5ICE9IFF0OjpOb25Nb2RhbCk7CisgICAgIG9wdGlvbnMu aW5zZXJ0KFFMYXRpbjFTdHJpbmcoIm11bHRpcGxlIiksIGQtPm11bHRpcGxlRmlsZXMpOworICAg ICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJkaXJlY3RvcnkiKSwgZC0+ZGlyZWN0b3J5 TW9kZSk7CisgCitAQCAtMjkwLDEwICsyOTUsMTggQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZp bGVEaWFsb2c6Om9wZW5Qb3J0YWwoKQorIAorICAgICBRREJ1c1BlbmRpbmdDYWxsIHBlbmRpbmdD YWxsID0gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuYXN5bmNDYWxsKG1lc3NhZ2UpOwor ICAgICBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlciA9IG5ldyBRREJ1c1BlbmRpbmdD YWxsV2F0Y2hlcihwZW5kaW5nQ2FsbCk7CistICAgIGNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVu ZGluZ0NhbGxXYXRjaGVyOjpmaW5pc2hlZCwgdGhpcywgW3RoaXNdIChRREJ1c1BlbmRpbmdDYWxs V2F0Y2hlciAqd2F0Y2hlcikgeworKyAgICBjb25uZWN0KHdhdGNoZXIsICZRREJ1c1BlbmRpbmdD YWxsV2F0Y2hlcjo6ZmluaXNoZWQsIHRoaXMsIFs9XSAoUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIg KndhdGNoZXIpIHsKKyAgICAgICAgIFFEQnVzUGVuZGluZ1JlcGx5PFFEQnVzT2JqZWN0UGF0aD4g cmVwbHkgPSAqd2F0Y2hlcjsKKy0gICAgICAgIGlmIChyZXBseS5pc0Vycm9yKCkpIHsKKy0gICAg ICAgICAgICBRX0VNSVQgcmVqZWN0KCk7CisrICAgICAgICAvLyBBbnkgZXJyb3IgbWVhbnMgdGhl IGRpYWxvZyBpcyBub3Qgc2hvd24gYW5kIHdlIG5lZWQgdG8gZmFsbGJhY2sKKysgICAgICAgIGQt PmZhaWxlZFRvT3BlbiA9IHJlcGx5LmlzRXJyb3IoKTsKKysgICAgICAgIGlmIChkLT5mYWlsZWRU b09wZW4pIHsKKysgICAgICAgICAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZykgeworKyAgICAg ICAgICAgICAgICBkLT5uYXRpdmVGaWxlRGlhbG9nLT5zaG93KHdpbmRvd0ZsYWdzLCB3aW5kb3dN b2RhbGl0eSwgcGFyZW50KTsKKysgICAgICAgICAgICAgICAgaWYgKGQtPmxvb3AuaXNSdW5uaW5n KCkpCisrICAgICAgICAgICAgICAgICAgICBkLT5uYXRpdmVGaWxlRGlhbG9nLT5leGVjKCk7Cisr ICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgUV9FTUlUIHJlamVjdCgpOwor KyAgICAgICAgICAgIH0KKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgUURCdXNDb25u ZWN0aW9uOjpzZXNzaW9uQnVzKCkuY29ubmVjdChudWxscHRyLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHkudmFsdWUoKS5wYXRoKCksCitA QCAtMzAyLDYgKzMxNSw3IEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVu UG9ydGFsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTTE9UKGdvdFJlc3BvbnNlKHVpbnQsUVZhcmlhbnRNYXApKSk7CisgICAgICAgICB9Cisr ICAgICAgICB3YXRjaGVyLT5kZWxldGVMYXRlcigpOworICAgICB9KTsKKyB9CisgCitAQCAtMzI2 LDcgKzM0MCw3IEBAIFFVcmwgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpkaXJlY3Rvcnko KSBjb25zdAorIHsKKyAgICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7 CisgCistICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVNb2Rl KCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxlTW9k ZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkpCisrICAgIGlmIChkLT5u YXRpdmVGaWxlRGlhbG9nICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2coKSkKKyAgICAgICAgIHJldHVy biBkLT5uYXRpdmVGaWxlRGlhbG9nLT5kaXJlY3RvcnkoKTsKKyAKKyAgICAgcmV0dXJuIGQtPmRp cmVjdG9yeTsKK0BAIC0zNDgsNyArMzYyLDcgQEAgUUxpc3Q8UVVybD4gUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nOjpzZWxlY3RlZEZpbGVzKCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBR WGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURp YWxvZyAmJiAob3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGly ZWN0b3J5IHx8IG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRp cmVjdG9yeU9ubHkpKQorKyAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVG aWxlRGlhbG9nKCkpCisgICAgICAgICByZXR1cm4gZC0+bmF0aXZlRmlsZURpYWxvZy0+c2VsZWN0 ZWRGaWxlcygpOworIAorICAgICBRTGlzdDxRVXJsPiBmaWxlczsKK0BAIC00MDMsMTYgKzQxNywx MyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6ZXhlYygpCisgeworICAgICBR X0QoUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKy0gICAgaWYgKGQtPm5hdGl2ZUZp bGVEaWFsb2cgJiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6 OkRpcmVjdG9yeSB8fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25z OjpEaXJlY3RvcnlPbmx5KSkgeworKyAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VO YXRpdmVGaWxlRGlhbG9nKCkpIHsKKyAgICAgICAgIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPmV4ZWMo KTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorICAgICAvLyBIQUNLIHdlIGhhdmUgdG8g YXZvaWQgcmV0dXJuaW5nIHVudGlsIHdlIGVtaXQgdGhhdCB0aGUgZGlhbG9nIHdhcyBhY2NlcHRl ZCBvciByZWplY3RlZAorLSAgICBRRXZlbnRMb29wIGxvb3A7CistICAgIGxvb3AuY29ubmVjdCh0 aGlzLCBTSUdOQUwoYWNjZXB0KCkpLCBTTE9UKHF1aXQoKSkpOworLSAgICBsb29wLmNvbm5lY3Qo dGhpcywgU0lHTkFMKHJlamVjdCgpKSwgU0xPVChxdWl0KCkpKTsKKy0gICAgbG9vcC5leGVjKCk7 CisrICAgIGQtPmxvb3AuZXhlYygpOworIH0KKyAKKyB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmls ZURpYWxvZzo6aGlkZSgpCitAQCAtNDI5LDEzICs0NDAsMTAgQEAgYm9vbCBRWGRnRGVza3RvcFBv cnRhbEZpbGVEaWFsb2c6OnNob3coUXQ6OldpbmRvd0ZsYWdzIHdpbmRvd0ZsYWdzLCBRdDo6V2lu ZG93TW8KKyAKKyAgICAgaW5pdGlhbGl6ZURpYWxvZygpOworIAorLSAgICBkLT5tb2RhbCA9IHdp bmRvd01vZGFsaXR5ICE9IFF0OjpOb25Nb2RhbDsKKy0gICAgZC0+d2luSWQgPSBwYXJlbnQgPyBw YXJlbnQtPndpbklkKCkgOiAwOworLQorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAo b3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8 IG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9u bHkpKQorKyAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9n KE9wZW5GYWxsYmFjaykpCisgICAgICAgICByZXR1cm4gZC0+bmF0aXZlRmlsZURpYWxvZy0+c2hv dyh3aW5kb3dGbGFncywgd2luZG93TW9kYWxpdHksIHBhcmVudCk7CisgCistICAgIG9wZW5Qb3J0 YWwoKTsKKysgICAgb3BlblBvcnRhbCh3aW5kb3dGbGFncywgd2luZG93TW9kYWxpdHksIHBhcmVu dCk7CisgCisgICAgIHJldHVybiB0cnVlOworIH0KK0BAIC00NjUsNCArNDczLDIxIEBAIHZvaWQg UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpnb3RSZXNwb25zZSh1aW50IHJlc3BvbnNlLCBj b25zdCBRVmFyaWFudE1hcCAmCisgICAgIH0KKyB9CisgCisrYm9vbCBRWGRnRGVza3RvcFBvcnRh bEZpbGVEaWFsb2c6OnVzZU5hdGl2ZUZpbGVEaWFsb2coUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlh bG9nOjpGYWxsYmFja1R5cGUgZmFsbGJhY2tUeXBlKSBjb25zdAorK3sKKysgICAgUV9EKGNvbnN0 IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisrCisrICAgIGlmIChkLT5mYWlsZWRUb09w ZW4gJiYgZmFsbGJhY2tUeXBlICE9IE9wZW5GYWxsYmFjaykKKysgICAgICAgIHJldHVybiB0cnVl OworKworKyAgICBpZiAoZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uIDwgMykgeworKyAgICAg ICAgaWYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVj dG9yeSkKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgICAgIGVsc2UgaWYgKG9wdGlv bnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpCisr ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgIH0KKysKKysgICAgcmV0dXJuIGZhbHNlOwor K30KKysKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlh bG9nX3AuaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9y dGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZ19wLmgKK2luZGV4IDRmNGRlOTZlY2YuLjY1 ZTIyYTVjZjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMv eGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oCisrKysgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVz a3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oCitAQCAtNTEsNiArNTEsMTEgQEAgY2xhc3MgUVhkZ0Rl c2t0b3BQb3J0YWxGaWxlRGlhbG9nIDogcHVibGljIFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIK KyAgICAgUV9PQkpFQ1QKKyAgICAgUV9ERUNMQVJFX1BSSVZBVEUoUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nKQorIHB1YmxpYzoKKysgICAgZW51bSBGYWxsYmFja1R5cGUgeworKyAgICAgICAg R2VuZXJpY0ZhbGxiYWNrLAorKyAgICAgICAgT3BlbkZhbGxiYWNrCisrICAgIH07CisrCisgICAg IGVudW0gQ29uZGl0aW9uVHlwZSA6IHVpbnQgeworICAgICAgICAgR2xvYmFsUGF0dGVybiA9IDAs CisgICAgICAgICBNaW1lVHlwZSA9IDEKK0BAIC02OSw3ICs3NCw3IEBAIHB1YmxpYzoKKyAgICAg fTsKKyAgICAgdHlwZWRlZiBRVmVjdG9yPEZpbHRlcj4gRmlsdGVyTGlzdDsKKyAKKy0gICAgUVhk Z0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2 ZUZpbGVEaWFsb2cgPSBudWxscHRyKTsKKysgICAgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9n KFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cgPSBudWxscHRyLCB1 aW50IGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbiA9IDApOworICAgICB+UVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nKCk7CisgCisgICAgIGJvb2wgZGVmYXVsdE5hbWVGaWx0ZXJEaXNhYmxlcygp IGNvbnN0IG92ZXJyaWRlOworQEAgLTkyLDcgKzk3LDggQEAgcHJpdmF0ZSBRX1NMT1RTOgorIAor IHByaXZhdGU6CisgICAgIHZvaWQgaW5pdGlhbGl6ZURpYWxvZygpOworLSAgICB2b2lkIG9wZW5Q b3J0YWwoKTsKKysgICAgdm9pZCBvcGVuUG9ydGFsKFF0OjpXaW5kb3dGbGFncyB3aW5kb3dGbGFn cywgUXQ6OldpbmRvd01vZGFsaXR5IHdpbmRvd01vZGFsaXR5LCBRV2luZG93ICpwYXJlbnQpOwor KyAgICBib29sIHVzZU5hdGl2ZUZpbGVEaWFsb2coRmFsbGJhY2tUeXBlIGZhbGxiYWNrVHlwZSA9 IEdlbmVyaWNGYWxsYmFjaykgY29uc3Q7CisgCisgICAgIFFTY29wZWRQb2ludGVyPFFYZGdEZXNr dG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGU+IGRfcHRyOworIH07CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0 b3Bwb3J0YWx0aGVtZS5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRn ZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNwcAoraW5kZXggZmIzMjRhZmJk OC4uYjgwOTUwMzEyMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRo ZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsdGhlbWUuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVz a3RvcHBvcnRhbHRoZW1lLmNwcAorQEAgLTExMSw2ICsxMTEsNyBAQCBRWGRnRGVza3RvcFBvcnRh bFRoZW1lOjpRWGRnRGVza3RvcFBvcnRhbFRoZW1lKCkKKyAgICAgICAgIGlmIChyZXBseS5pc1Zh bGlkKCkpIHsKKyAgICAgICAgICAgICBkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPSByZXBs eS52YWx1ZSgpLnRvVUludCgpOworICAgICAgICAgfQorKyAgICAgICAgd2F0Y2hlci0+ZGVsZXRl TGF0ZXIoKTsKKyAgICAgfSk7CisgfQorIAorQEAgLTE1MiwxMSArMTUzLDEyIEBAIFFQbGF0Zm9y bURpYWxvZ0hlbHBlciogUVhkZ0Rlc2t0b3BQb3J0YWxUaGVtZTo6Y3JlYXRlUGxhdGZvcm1EaWFs b2dIZWxwZXIoRGlhbG9nCisgeworICAgICBRX0QoY29uc3QgUVhkZ0Rlc2t0b3BQb3J0YWxUaGVt ZSk7CisgCistICAgIGlmICh0eXBlID09IEZpbGVEaWFsb2cpIHsKKysgICAgaWYgKHR5cGUgPT0g RmlsZURpYWxvZyAmJiBkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pIHsKKyAgICAgICAgIC8v IE9sZGVyIHZlcnNpb25zIG9mIEZpbGVDaG9vc2VyIHBvcnRhbCBkb24ndCBzdXBwb3J0IG9wZW5p bmcgZGlyZWN0b3JpZXMsIHRoZXJlZm9yZSB3ZSBmYWxsYmFjaworICAgICAgICAgLy8gdG8gbmF0 aXZlIGZpbGUgZGlhbG9nIG9wZW5lZCBpbnNpZGUgdGhlIHNhbmRib3ggdG8gb3BlbiBhIGRpcmVj dG9yeS4KKy0gICAgICAgIGlmIChkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPCAzICYmIGQt PmJhc2VUaGVtZS0+dXNlUGxhdGZvcm1OYXRpdmVEaWFsb2codHlwZSkpCistICAgICAgICAgICAg cmV0dXJuIG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coc3RhdGljX2Nhc3Q8UVBsYXRm b3JtRmlsZURpYWxvZ0hlbHBlcio+KGQtPmJhc2VUaGVtZS0+Y3JlYXRlUGxhdGZvcm1EaWFsb2dI ZWxwZXIodHlwZSkpKTsKKysgICAgICAgIGlmIChkLT5iYXNlVGhlbWUtPnVzZVBsYXRmb3JtTmF0 aXZlRGlhbG9nKHR5cGUpKQorKyAgICAgICAgICAgIHJldHVybiBuZXcgUVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nKHN0YXRpY19jYXN0PFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIqPihkLT5i YXNlVGhlbWUtPmNyZWF0ZVBsYXRmb3JtRGlhbG9nSGVscGVyKHR5cGUpKSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5maWxlQ2hvb3NlclBv cnRhbFZlcnNpb24pOworIAorICAgICAgICAgcmV0dXJuIG5ldyBRWGRnRGVza3RvcFBvcnRhbEZp bGVEaWFsb2c7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRz dXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJp bnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZS5jcHAKK2luZGV4IDQzZDVlMTE5YWQuLjFm OWNiYzQ1NjUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1 cHMvcWN1cHNwcmludGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1 cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lLmNwcAorQEAgLTg5LDggKzg5LDEwIEBAIHZvaWQg UUN1cHNQcmludEVuZ2luZTo6c2V0UHJvcGVydHkoUHJpbnRFbmdpbmVQcm9wZXJ0eUtleSBrZXks IGNvbnN0IFFWYXJpYW50ICZ2CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBQUEtfRHVwbGV4 OiB7CisgICAgICAgICBRUHJpbnQ6OkR1cGxleE1vZGUgbW9kZSA9IFFQcmludDo6RHVwbGV4TW9k ZSh2YWx1ZS50b0ludCgpKTsKKy0gICAgICAgIGlmIChtb2RlICE9IGQtPmR1cGxleCAmJiBkLT5t X3ByaW50RGV2aWNlLnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMobW9kZSkpCisrICAg ICAgICBpZiAoZC0+bV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5z KG1vZGUpKSB7CisgICAgICAgICAgICAgZC0+ZHVwbGV4ID0gbW9kZTsKKysgICAgICAgICAgICBk LT5kdXBsZXhSZXF1ZXN0ZWRFeHBsaWNpdGx5ID0gdHJ1ZTsKKysgICAgICAgIH0KKyAgICAgICAg IGJyZWFrOworICAgICB9CisgICAgIGNhc2UgUFBLX1ByaW50ZXJOYW1lOgorQEAgLTI3Nyw5ICsy NzksMTIgQEAgdm9pZCBRQ3Vwc1ByaW50RW5naW5lUHJpdmF0ZTo6Y2hhbmdlUHJpbnRlcihjb25z dCBRU3RyaW5nICZuZXdQcmludGVyKQorICAgICBtX3ByaW50RGV2aWNlLnN3YXAocHJpbnREZXZp Y2UpOworICAgICBwcmludGVyTmFtZSA9IG1fcHJpbnREZXZpY2UuaWQoKTsKKyAKKy0gICAgLy8g Q2hlY2sgaWYgbmV3IHByaW50ZXIgc3VwcG9ydHMgY3VycmVudCBzZXR0aW5ncywgb3RoZXJ3aXNl IHVzIGRlZmF1bHRzCistICAgIGlmIChkdXBsZXggIT0gUVByaW50OjpEdXBsZXhBdXRvICYmICFt X3ByaW50RGV2aWNlLnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMoZHVwbGV4KSkKKysg ICAgLy8gaW4gY2FzZSBhIGR1cGxleCB2YWx1ZSB3YXMgZXhwbGljaXRseSBzZXQsIGNoZWNrIGlm IG5ldyBwcmludGVyIHN1cHBvcnRzIGN1cnJlbnQgdmFsdWUsCisrICAgIC8vIG90aGVyd2lzZSB1 c2UgZGV2aWNlIGRlZmF1bHQKKysgICAgaWYgKCFkdXBsZXhSZXF1ZXN0ZWRFeHBsaWNpdGx5IHx8 ICFtX3ByaW50RGV2aWNlLnN1cHBvcnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMoZHVwbGV4KSkg eworICAgICAgICAgZHVwbGV4ID0gbV9wcmludERldmljZS5kZWZhdWx0RHVwbGV4TW9kZSgpOwor KyAgICAgICAgZHVwbGV4UmVxdWVzdGVkRXhwbGljaXRseSA9IGZhbHNlOworKyAgICB9CisgICAg IFFQcmludDo6Q29sb3JNb2RlIGNvbG9yTW9kZSA9IGdyYXlzY2FsZSA/IFFQcmludDo6R3JheVNj YWxlIDogUVByaW50OjpDb2xvcjsKKyAgICAgaWYgKCFtX3ByaW50RGV2aWNlLnN1cHBvcnRlZENv bG9yTW9kZXMoKS5jb250YWlucyhjb2xvck1vZGUpKQorICAgICAgICAgZ3JheXNjYWxlID0gbV9w cmludERldmljZS5kZWZhdWx0Q29sb3JNb2RlKCkgPT0gUVByaW50OjpHcmF5U2NhbGU7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRl bmdpbmVfcC5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJp bnRlbmdpbmVfcC5oCitpbmRleCBjMDIxYjBjNjQzLi44ZjgxZmU0NzhkIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmVfcC5o CisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVu Z2luZV9wLmgKK0BAIC0xMDAsNiArMTAwLDcgQEAgcHJpdmF0ZToKKyAgICAgUVN0cmluZ0xpc3Qg Y3Vwc09wdGlvbnM7CisgICAgIFFTdHJpbmcgY3Vwc1RlbXBGaWxlOworICAgICBRUHJpbnQ6OkR1 cGxleE1vZGUgZHVwbGV4OworKyAgICBib29sIGR1cGxleFJlcXVlc3RlZEV4cGxpY2l0bHkgPSBm YWxzZTsKKyB9OworIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3BsdWdpbnMvc3FsZHJpdmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcCBiL3F0YmFzZS9zcmMvcGx1 Z2lucy9zcWxkcml2ZXJzL2liYXNlL3FzcWxfaWJhc2UuY3BwCitpbmRleCA2N2U3MTU0ZmE2Li40 MDg3NjE1MmU1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJh c2UvcXNxbF9pYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL2li YXNlL3FzcWxfaWJhc2UuY3BwCitAQCAtODE3LDcgKzgxNyw3IEBAIGJvb2wgUUlCYXNlUmVzdWx0 UHJpdmF0ZTo6d3JpdGVBcnJheShpbnQgY29sdW1uLCBjb25zdCBRTGlzdDxRVmFyaWFudD4gJmxp c3QpCisgICAgIGJhLnJlc2l6ZShpbnQoYnVmTGVuKSk7CisgCisgICAgIGlmIChsaXN0LnNpemUo KSA+IGFycmF5U2l6ZSkgeworLSAgICAgICAgZXJyb3IgPSBRTGF0aW4xU3RyaW5nKCJBcnJheSBz aXplIG1pc3NtYXRjaDogc2l6ZSBvZiAlMSBpcyAlMiwgc2l6ZSBvZiBwcm92aWRlZCBsaXN0IGlz ICUzIik7CisrICAgICAgICBlcnJvciA9IFFMYXRpbjFTdHJpbmcoIkFycmF5IHNpemUgbWlzbWF0 Y2g6IHNpemUgb2YgJTEgaXMgJTIsIHNpemUgb2YgcHJvdmlkZWQgbGlzdCBpcyAlMyIpOworICAg ICAgICAgZXJyb3IgPSBlcnJvci5hcmcoUUxhdGluMVN0cmluZyhzcWxuYW1lKSkuYXJnKGFycmF5 U2l6ZSkuYXJnKGxpc3Quc2l6ZSgpKTsKKyAgICAgICAgIHEtPnNldExhc3RFcnJvcihRU3FsRXJy b3IoZXJyb3IsIFFMYXRpbjFTdHJpbmcoIiIpLCBRU3FsRXJyb3I6OlN0YXRlbWVudEVycm9yKSk7 CisgICAgICAgICByZXR1cm4gZmFsc2U7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5z L3NxbGRyaXZlcnMvbXlzcWwvcXNxbF9teXNxbC5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvc3Fs ZHJpdmVycy9teXNxbC9xc3FsX215c3FsLmNwcAoraW5kZXggN2NhMDU1ZWVhMi4uNmJjOWQ0Njc1 NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL215c3FsL3FzcWxf bXlzcWwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9teXNxbC9xc3Fs X215c3FsLmNwcAorQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CisgICAgIHN0cnVjdCBRTXlG aWVsZAorICAgICB7CisgICAgICAgICBjaGFyICpvdXRGaWVsZCA9IG51bGxwdHI7CistICAgICAg ICBNWVNRTF9GSUVMRCAqbXlGaWVsZCA9IG51bGxwdHI7CisrICAgICAgICBjb25zdCBNWVNRTF9G SUVMRCAqbXlGaWVsZCA9IG51bGxwdHI7CisgICAgICAgICBRTWV0YVR5cGU6OlR5cGUgdHlwZSA9 IFFNZXRhVHlwZTo6VW5rbm93blR5cGU7CisgICAgICAgICBteV9ib29sIG51bGxJbmRpY2F0b3Ig PSBmYWxzZTsKKyAgICAgICAgIHVsb25nIGJ1Zkxlbmd0aCA9IDB1bDsKK0BAIC0zNjEsNyArMzYx LDcgQEAgc3RhdGljIGJvb2wgcUlzSW50ZWdlcihpbnQgdCkKKyB2b2lkIFFNWVNRTFJlc3VsdFBy aXZhdGU6OmJpbmRCbG9icygpCisgeworICAgICBpbnQgaTsKKy0gICAgTVlTUUxfRklFTEQgKmZp ZWxkSW5mbzsKKysgICAgY29uc3QgTVlTUUxfRklFTEQgKmZpZWxkSW5mbzsKKyAgICAgTVlTUUxf QklORCAqYmluZDsKKyAKKyAgICAgZm9yKGkgPSAwOyBpIDwgZmllbGRzLmNvdW50KCk7ICsraSkg eworQEAgLTM3OSw3ICszNzksNiBAQCB2b2lkIFFNWVNRTFJlc3VsdFByaXZhdGU6OmJpbmRCbG9i cygpCisgYm9vbCBRTVlTUUxSZXN1bHRQcml2YXRlOjpiaW5kSW5WYWx1ZXMoKQorIHsKKyAgICAg TVlTUUxfQklORCAqYmluZDsKKy0gICAgY2hhciAqZmllbGQ7CisgICAgIGludCBpID0gMDsKKyAK KyAgICAgaWYgKCFtZXRhKQorQEAgLTM5MiwzNSArMzkxLDM0IEBAIGJvb2wgUU1ZU1FMUmVzdWx0 UHJpdmF0ZTo6YmluZEluVmFsdWVzKCkKKyAgICAgaW5CaW5kcyA9IG5ldyBNWVNRTF9CSU5EW2Zp ZWxkcy5zaXplKCldOworICAgICBtZW1zZXQoaW5CaW5kcywgMCwgZmllbGRzLnNpemUoKSAqIHNp emVvZihNWVNRTF9CSU5EKSk7CisgCistICAgIE1ZU1FMX0ZJRUxEICpmaWVsZEluZm87CisrICAg IGNvbnN0IE1ZU1FMX0ZJRUxEICpmaWVsZEluZm87CisgCisgICAgIHdoaWxlKChmaWVsZEluZm8g PSBteXNxbF9mZXRjaF9maWVsZChtZXRhKSkpIHsKKysgICAgICAgIGJpbmQgPSAmaW5CaW5kc1tp XTsKKysKKyAgICAgICAgIFFNeUZpZWxkICZmID0gZmllbGRzW2ldOworICAgICAgICAgZi5teUZp ZWxkID0gZmllbGRJbmZvOworLQorKyAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYuYnVm TGVuZ3RoID0gZmllbGRJbmZvLT5sZW5ndGggKyAxOworKyAgICAgICAgYmluZC0+YnVmZmVyX3R5 cGUgPSBmaWVsZEluZm8tPnR5cGU7CisgICAgICAgICBmLnR5cGUgPSBxRGVjb2RlTVlTUUxUeXBl KGZpZWxkSW5mby0+dHlwZSwgZmllbGRJbmZvLT5mbGFncyk7CisgICAgICAgICBpZiAocUlzQmxv YihmaWVsZEluZm8tPnR5cGUpKSB7CisgICAgICAgICAgICAgLy8gdGhlIHNpemUgb2YgYSBibG9i LWZpZWxkIGlzIGF2YWlsYWJsZSBhcyBzb29uIGFzIHdlIGNhbGwKKyAgICAgICAgICAgICAvLyBt eXNxbF9zdG10X3N0b3JlX3Jlc3VsdCgpCisgICAgICAgICAgICAgLy8gYWZ0ZXIgbXlzcWxfc3Rt dF9leGVjKCkgaW4gUU1ZU1FMUmVzdWx0OjpleGVjKCkKKy0gICAgICAgICAgICBmaWVsZEluZm8t Pmxlbmd0aCA9IDA7CisrICAgICAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYuYnVmTGVu Z3RoID0gMDsKKyAgICAgICAgICAgICBoYXNCbG9icyA9IHRydWU7CisgICAgICAgICB9IGVsc2Ug aWYgKHFJc0ludGVnZXIoZi50eXBlKSkgeworLSAgICAgICAgICAgIGZpZWxkSW5mby0+bGVuZ3Ro ID0gODsKKysgICAgICAgICAgICBiaW5kLT5idWZmZXJfbGVuZ3RoID0gZi5idWZMZW5ndGggPSA4 OworICAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICBmaWVsZEluZm8tPnR5cGUgPSBNWVNR TF9UWVBFX1NUUklORzsKKysgICAgICAgICAgICBiaW5kLT5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZ UEVfU1RSSU5HOworICAgICAgICAgfQorLSAgICAgICAgYmluZCA9ICZpbkJpbmRzW2ldOworLSAg ICAgICAgZmllbGQgPSBuZXcgY2hhcltmaWVsZEluZm8tPmxlbmd0aCArIDFdOworLSAgICAgICAg bWVtc2V0KGZpZWxkLCAwLCBmaWVsZEluZm8tPmxlbmd0aCArIDEpOworIAorLSAgICAgICAgYmlu ZC0+YnVmZmVyX3R5cGUgPSBmaWVsZEluZm8tPnR5cGU7CistICAgICAgICBiaW5kLT5idWZmZXIg PSBmaWVsZDsKKy0gICAgICAgIGJpbmQtPmJ1ZmZlcl9sZW5ndGggPSBmLmJ1Zkxlbmd0aCA9IGZp ZWxkSW5mby0+bGVuZ3RoICsgMTsKKyAgICAgICAgIGJpbmQtPmlzX251bGwgPSAmZi5udWxsSW5k aWNhdG9yOworICAgICAgICAgYmluZC0+bGVuZ3RoID0gJmYuYnVmTGVuZ3RoOworICAgICAgICAg YmluZC0+aXNfdW5zaWduZWQgPSBmaWVsZEluZm8tPmZsYWdzICYgVU5TSUdORURfRkxBRyA/IDEg OiAwOworLSAgICAgICAgZi5vdXRGaWVsZD1maWVsZDsKKysKKysgICAgICAgIGNoYXIgKmZpZWxk ID0gbmV3IGNoYXJbYmluZC0+YnVmZmVyX2xlbmd0aCArIDFde307CisrICAgICAgICBiaW5kLT5i dWZmZXIgPSBmLm91dEZpZWxkID0gZmllbGQ7CisgCisgICAgICAgICArK2k7CisgICAgIH0KK0BA IC0xMzY5LDIwICsxMzY3LDIwIEBAIGJvb2wgUU1ZU1FMRHJpdmVyOjpvcGVuKGNvbnN0IFFTdHJp bmcmIGRiLAorICAgICB9CisgCisgI2lmIE1ZU1FMX1ZFUlNJT05fSUQgPj0gNTAwMDcKKy0gICAg aWYgKG15c3FsX2dldF9jbGllbnRfdmVyc2lvbigpID49IDUwNTAzICYmIG15c3FsX2dldF9zZXJ2 ZXJfdmVyc2lvbihkLT5teXNxbCkgPj0gNTA1MDMpIHsKKy0gICAgICAgIC8vIGZvcmNlIHRoZSBj b21tdW5pY2F0aW9uIHRvIGJlIHV0ZjhtYjQgKG9ubHkgdXRmOG1iNCBzdXBwb3J0cyA0LWJ5dGUg Y2hhcmFjdGVycykKKy0gICAgICAgIG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3FsLCAi dXRmOG1iNCIpOworKyAgICAvLyBmb3JjZSB0aGUgY29tbXVuaWNhdGlvbiB0byBiZSB1dGY4bWI0 IChvbmx5IHV0ZjhtYjQgc3VwcG9ydHMgNC1ieXRlIGNoYXJhY3RlcnMpCisrICAgIGlmIChteXNx bF9zZXRfY2hhcmFjdGVyX3NldChkLT5teXNxbCwgInV0ZjhtYjQiKSkgeworKyAgICAgICAgLy8g dGhpcyBmYWlsZWQsIHRyeSBmb3JjaW5nIGl0IHRvIHV0ZiAoQk1QIG9ubHkpCisrICAgICAgICBp ZiAobXlzcWxfc2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4IikpCisrICAgICAgICAg ICAgcVdhcm5pbmcoKSA8PCAiTXlTUUw6IFVuYWJsZSB0byBzZXQgdGhlIGNsaWVudCBjaGFyYWN0 ZXIgc2V0IHRvIHV0ZjguIjsKKyAjaWYgUVRfQ09ORklHKHRleHRjb2RlYykKKy0gICAgICAgIGQt PnRjID0gUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lKCJVVEYtOCIpOworKyAgICAgICAgZWxzZQor KyAgICAgICAgICAgIGQtPnRjID0gY29kZWMoZC0+bXlzcWwpOworICNlbmRpZgorLSAgICB9IGVs c2UKKy0gICAgeworLSAgICAgICAgLy8gZm9yY2UgdGhlIGNvbW11bmljYXRpb24gdG8gYmUgdXRm OAorLSAgICAgICAgbXlzcWxfc2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4Iik7Cisr ICAgIH0KKyAjaWYgUVRfQ09ORklHKHRleHRjb2RlYykKKy0gICAgICAgIGQtPnRjID0gY29kZWMo ZC0+bXlzcWwpOworKyAgICBlbHNlCisrICAgICAgICBkLT50YyA9IFFUZXh0Q29kZWM6OmNvZGVj Rm9yTmFtZSgiVVRGLTgiKTsKKyAjZW5kaWYKKy0gICAgfQorICNlbmRpZiAgLy8gTVlTUUxfVkVS U0lPTl9JRCA+PSA1MDAwNworIAorICAgICBkLT5wcmVwYXJlZFF1ZXJ5c0VuYWJsZWQgPSBjaGVj a1ByZXBhcmVkUXVlcmllcyhkLT5teXNxbCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmlu dHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnQtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1 cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnRlci0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAw JQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludC0yNC5w bmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50ZXItMjQu cG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMv cHJpbnQtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJp bnRlci0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludC0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50ZXItMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTI0LnBuZyBi L3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5n LTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0yNC5wbmcKK3JlbmFtZSB0byBzcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTI0LnBuZworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFn ZS1zaWRlZC0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92 aWV3LXBhZ2VzLWZhY2luZy0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZy b20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMzIucG5n CityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZh Y2luZy0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dz L2ltYWdlcy92aWV3LXBhZ2UtbXVsdGktMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0yNC5wbmcKK3NpbWlsYXJpdHkgaW5k ZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3 LXBhZ2UtbXVsdGktMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2lt YWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0zMi5wbmcgYi9xdGJh c2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTMy LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMzIucG5nCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdl LW9uZS0yNC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3 LXBhZ2VzLXNpbmdsZS0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20g c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTI0LnBuZworcmVu YW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUt MjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvdmlldy1wYWdlLW9uZS0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dz L2ltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQor cmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25l LTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1w YWdlcy1zaW5nbGUtMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvZml0LXBhZ2UtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtcGFnZS0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAw JQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0y NC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0 LXBhZ2UtMjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9pbWFnZXMvZml0LXBhZ2UtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9pbWFnZXMvem9vbS1maXQtcGFnZS0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVu YW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0zMi5wbmcK K3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2Ut MzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvZml0LXdpZHRoLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL3pvb20tZml0LXdpZHRoLTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUg ZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC13aWR0aC0yNC5wbmcKK3Jl bmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXdpZHRoLTI0 LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2Vz L2ZpdC13aWR0aC0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdl cy96b29tLWZpdC13aWR0aC0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZy b20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtd2lkdGgtMzIucG5nCityZW5h bWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC13aWR0aC0zMi5w bmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0 dXBkaWFsb2dfdW5peC5jcHAgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdl c2V0dXBkaWFsb2dfdW5peC5jcHAKK2luZGV4IDc4ZTViOGQxZWYuLjJhMjg1MTY3MTkgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0dXBkaWFsb2df dW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBhZ2VzZXR1 cGRpYWxvZ191bml4LmNwcAorQEAgLTUzMiw2ICs1MzIsNyBAQCB2b2lkIFFQYWdlU2V0dXBXaWRn ZXQ6OnVwZGF0ZVdpZGdldCgpCisgdm9pZCBRUGFnZVNldHVwV2lkZ2V0OjpzZXR1cFByaW50ZXIo KSBjb25zdAorIHsKKyAgICAgbV9wcmludGVyLT5zZXRQYWdlTGF5b3V0KG1fcGFnZUxheW91dCk7 CisrICAgIG1fcHJpbnRlci0+c2V0UGFnZU9yaWVudGF0aW9uKG1fcGFnZUxheW91dC5vcmllbnRh dGlvbigpKTsKKyAjaWYgUVRfQ09ORklHKGN1cHMpCisgICAgIFFDVVBTU3VwcG9ydDo6UGFnZXNQ ZXJTaGVldCBwYWdlc1BlclNoZWV0ID0gcXZhcmlhbnRfY2FzdDxRQ1VQU1N1cHBvcnQ6OlBhZ2Vz UGVyU2hlZXQ+KG1fdWkucGFnZXNQZXJTaGVldENvbWJvLT5jdXJyZW50RGF0YSgpCisgKTsKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5x cmMgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5xcmMKK2lu ZGV4IDVhNTc5YmFhNTUuLjEwYjhlMWQzNDEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5xcmMKKysrKyBiL3F0YmFzZS9zcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nLnFyYworQEAgLTEsOSArMSw5IEBACisgPCFET0NU WVBFIFJDQz48UkNDIHZlcnNpb249IjEuMCI+CisgPHFyZXNvdXJjZSBwcmVmaXg9Ii9xdC1wcm9q ZWN0Lm9yZy9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2ciPgorLTxmaWxlPmltYWdlcy9maXQt cGFnZS0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL2ZpdC1wYWdlLTMyLnBuZzwvZmlsZT4K Ky08ZmlsZT5pbWFnZXMvZml0LXdpZHRoLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvZml0 LXdpZHRoLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvem9vbS1maXQtcGFnZS0yNC5wbmc8 L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pvb20tZml0LXBhZ2UtMzIucG5nPC9maWxlPgorKzxmaWxl PmltYWdlcy96b29tLWZpdC13aWR0aC0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pvb20t Zml0LXdpZHRoLTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvZ28tZmlyc3QtMjQucG5nPC9m aWxlPgorIDxmaWxlPmltYWdlcy9nby1maXJzdC0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2Vz L2dvLWxhc3QtMjQucG5nPC9maWxlPgorQEAgLTE4LDE0ICsxOCwxNCBAQAorIDxmaWxlPmltYWdl cy9sYXlvdXQtcG9ydHJhaXQtMzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy9wYWdlLXNldHVw LTI0LnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvcGFnZS1zZXR1cC0zMi5wbmc8L2ZpbGU+Cist PGZpbGU+aW1hZ2VzL3ByaW50LTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvcHJpbnQtMzIu cG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2UtbXVsdGktMjQucG5nPC9maWxlPgor LTxmaWxlPmltYWdlcy92aWV3LXBhZ2UtbXVsdGktMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdl cy92aWV3LXBhZ2Utb25lLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW9u ZS0zMi5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0yNC5wbmc8L2Zp bGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+ aW1hZ2VzL3ByaW50ZXItMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy9wcmludGVyLTMyLnBu ZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0yNC5wbmc8L2ZpbGU+ CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMzIucG5nPC9maWxlPgorKzxmaWxl PmltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3Zp ZXctcGFnZXMtc2luZ2xlLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1m YWNpbmctMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0zMi5w bmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3pvb20taW4tMjQucG5nPC9maWxlPgorIDxmaWxlPmlt YWdlcy96b29tLWluLTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvem9vbS1vdXQtMjQucG5n PC9maWxlPgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBy aW50ZGlhbG9nX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJp bnRkaWFsb2dfdW5peC5jcHAKK2luZGV4IGM1Yjg0NWY0ZWMuLjVhNWJhMWQwYTggMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZ191bml4LmNw cAorKysrIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5p eC5jcHAKK0BAIC03MDIsMTMgKzcwMiwxNCBAQCB2b2lkIFFQcmludERpYWxvZ1ByaXZhdGU6OnNl bGVjdFByaW50ZXIoY29uc3QgUVByaW50ZXI6Ok91dHB1dEZvcm1hdCBvdXRwdXRGb3JtYQorICAg ICAgICAgZWxzZQorICAgICAgICAgICAgIG9wdGlvbnMuZ3JheXNjYWxlLT5zZXRDaGVja2VkKHRy dWUpOworIAorLSAgICAgICAgLy8ga2VlcCBkdXBsZXggdmFsdWUgZXhwbGljaXRseSBzZXQgYnkg dXNlciwgaWYgYW55LCBhbmQgc2VsZWN0ZWQgcHJpbnRlciBzdXBwb3J0cyBpdDsKKy0gICAgICAg IC8vIHVzZSBkZXZpY2UgZGVmYXVsdCBvdGhlcndpc2UKKysgICAgICAgIC8vIGR1cGxleCBwcmlv cml0aWVzIHRvIGJlIGFzIGZvbGxvd3M6CisrICAgICAgICAvLyAxKSBhIHVzZXItc2VsZWN0ZWQg ZHVwbGV4IHZhbHVlIGluIHRoZSBkaWFsb2cgaGFzIGhpZ2hlc3QgcHJvcml0eQorKyAgICAgICAg Ly8gMikgZHVwbGV4IHZhbHVlIHNldCBpbiB0aGUgUVByaW50ZXIKKyAgICAgICAgIFFQcmludDo6 RHVwbGV4TW9kZSBkdXBsZXg7CisgICAgICAgICBpZiAoZXhwbGljaXREdXBsZXhNb2RlICE9IFFQ cmludDo6RHVwbGV4QXV0byAmJiBzdXBwb3J0ZWREdXBsZXhNb2RlLmNvbnRhaW5zKGV4cGxpY2l0 RHVwbGV4TW9kZSkpCisgICAgICAgICAgICAgZHVwbGV4ID0gZXhwbGljaXREdXBsZXhNb2RlOwor ICAgICAgICAgZWxzZQorLSAgICAgICAgICAgIGR1cGxleCA9IHRvcC0+ZC0+bV9jdXJyZW50UHJp bnREZXZpY2UuZGVmYXVsdER1cGxleE1vZGUoKTsKKysgICAgICAgICAgICBkdXBsZXggPSBzdGF0 aWNfY2FzdDxRUHJpbnQ6OkR1cGxleE1vZGU+KHAtPmR1cGxleCgpKTsKKyAgICAgICAgIHN3aXRj aCAoZHVwbGV4KSB7CisgICAgICAgICBjYXNlIFFQcmludDo6RHVwbGV4Tm9uZToKKyAgICAgICAg ICAgICBvcHRpb25zLm5vRHVwbGV4LT5zZXRDaGVja2VkKHRydWUpOyBicmVhazsKK0BAIC0xMjQy LDEwICsxMjQzLDEwIEBAIHZvaWQgUVVuaXhQcmludFdpZGdldFByaXZhdGU6Ol9xX3ByaW50ZXJD aGFuZ2VkKGludCBpbmRleCkKKyAgICAgICAgICAgICBRU3RyaW5nIGZpbGVuYW1lID0gd2lkZ2V0 LmZpbGVuYW1lLT50ZXh0KCk7CisgICAgICAgICAgICAgd2lkZ2V0LmZpbGVuYW1lLT5zZXRUZXh0 KGZpbGVuYW1lKTsKKyAgICAgICAgICAgICB3aWRnZXQubE91dHB1dC0+c2V0RW5hYmxlZCh0cnVl KTsKKy0gICAgICAgICAgICBpZiAob3B0aW9uc1BhbmUpCistICAgICAgICAgICAgICAgIG9wdGlv bnNQYW5lLT5zZWxlY3RQcmludGVyKFFQcmludGVyOjpQZGZGb3JtYXQpOworICAgICAgICAgICAg IHByaW50ZXItPnNldE91dHB1dEZvcm1hdChRUHJpbnRlcjo6UGRmRm9ybWF0KTsKKyAgICAgICAg ICAgICBtX2N1cnJlbnRQcmludERldmljZSA9IFFQcmludERldmljZSgpOworKyAgICAgICAgICAg IGlmIChvcHRpb25zUGFuZSkKKysgICAgICAgICAgICAgICAgb3B0aW9uc1BhbmUtPnNlbGVjdFBy aW50ZXIoUVByaW50ZXI6OlBkZkZvcm1hdCk7CisgICAgICAgICAgICAgcmV0dXJuOworICAgICAg ICAgfQorICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9xcHJpbnRwcmV2aWV3ZGlhbG9nLmNwcCBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvcXByaW50cHJldmlld2RpYWxvZy5jcHAKK2luZGV4IDM5NTc1ZDVmNTcuLjIzYjdlODk1Mzgg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludHByZXZp ZXdkaWFsb2cuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3Fwcmlu dHByZXZpZXdkaWFsb2cuY3BwCitAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgUVByaW50UHJldmll d0RpYWxvZ1ByaXZhdGU6OmluaXQoUVByaW50ZXIgKl9wcmludGVyKQorIHN0YXRpYyBpbmxpbmUg dm9pZCBxdF9zZXR1cEFjdGlvbkljb24oUUFjdGlvbiAqYWN0aW9uLCBRTGF0aW4xU3RyaW5nIG5h bWUpCisgeworICAgICBRTGF0aW4xU3RyaW5nIGltYWdlUHJlZml4KCI6L3F0LXByb2plY3Qub3Jn L2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy9pbWFnZXMvIik7CistICAgIFFJY29uIGljb247 CisrICAgIFFJY29uIGljb24gPSBRSWNvbjo6ZnJvbVRoZW1lKG5hbWUpOworICAgICBpY29uLmFk ZEZpbGUoaW1hZ2VQcmVmaXggKyBuYW1lICsgUUxhdGluMVN0cmluZygiLTI0LnBuZyIpLCBRU2l6 ZSgyNCwgMjQpKTsKKyAgICAgaWNvbi5hZGRGaWxlKGltYWdlUHJlZml4ICsgbmFtZSArIFFMYXRp bjFTdHJpbmcoIi0zMi5wbmciKSwgUVNpemUoMzIsIDMyKSk7CisgICAgIGFjdGlvbi0+c2V0SWNv bihpY29uKTsKK0BAIC0zODMsOCArMzgzLDggQEAgdm9pZCBRUHJpbnRQcmV2aWV3RGlhbG9nUHJp dmF0ZTo6c2V0dXBBY3Rpb25zKCkKKyAgICAgZml0UGFnZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShR TGF0aW4xU3RyaW5nKCJmaXRQYWdlQWN0aW9uIikpOworICAgICBmaXRXaWR0aEFjdGlvbi0+c2V0 Q2hlY2thYmxlKHRydWUpOworICAgICBmaXRQYWdlQWN0aW9uLT5zZXRDaGVja2FibGUodHJ1ZSk7 CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihmaXRXaWR0aEFjdGlvbiwgUUxhdGluMVN0cmluZygi Zml0LXdpZHRoIikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oZml0UGFnZUFjdGlvbiwgUUxh dGluMVN0cmluZygiZml0LXBhZ2UiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihmaXRXaWR0 aEFjdGlvbiwgUUxhdGluMVN0cmluZygiem9vbS1maXQtd2lkdGgiKSk7CisrICAgIHF0X3NldHVw QWN0aW9uSWNvbihmaXRQYWdlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ6b29tLWZpdC1wYWdlIikp OworICAgICBRT2JqZWN0Ojpjb25uZWN0KGZpdEdyb3VwLCBTSUdOQUwodHJpZ2dlcmVkKFFBY3Rp b24qKSksIHEsIFNMT1QoX3FfZml0KFFBY3Rpb24qKSkpOworIAorICAgICAvLyBab29tCitAQCAt NDEwLDkgKzQxMCw5IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZhdGU6OnNldHVwQWN0 aW9ucygpCisgICAgIHNpbmdsZU1vZGVBY3Rpb24gPSBtb2RlR3JvdXAtPmFkZEFjdGlvbihRQ29y ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAiU2hvdyBzaW5n bGUgcGFnZSIpKTsKKyAgICAgZmFjaW5nTW9kZUFjdGlvbiA9IG1vZGVHcm91cC0+YWRkQWN0aW9u KFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxvZyIsICJTaG93 IGZhY2luZyBwYWdlcyIpKTsKKyAgICAgb3ZlcnZpZXdNb2RlQWN0aW9uID0gbW9kZUdyb3VwLT5h ZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9n IiwgIlNob3cgb3ZlcnZpZXcgb2YgYWxsIHBhZ2VzIikpOworLSAgICBxdF9zZXR1cEFjdGlvbklj b24oc2luZ2xlTW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlLW9uZSIpKTsKKy0g ICAgcXRfc2V0dXBBY3Rpb25JY29uKGZhY2luZ01vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZp ZXctcGFnZS1zaWRlZCIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKG92ZXJ2aWV3TW9kZUFj dGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlLW11bHRpIikpOworKyAgICBxdF9zZXR1cEFj dGlvbkljb24oc2luZ2xlTW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlcy1zaW5n bGUiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihmYWNpbmdNb2RlQWN0aW9uLCBRTGF0aW4x U3RyaW5nKCJ2aWV3LXBhZ2VzLWZhY2luZyIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29uKG92 ZXJ2aWV3TW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlcy1vdmVydmlldyIpKTsK KyAgICAgc2luZ2xlTW9kZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShRTGF0aW4xU3RyaW5nKCJzaW5n bGVNb2RlQWN0aW9uIikpOworICAgICBmYWNpbmdNb2RlQWN0aW9uLT5zZXRPYmplY3ROYW1lKFFM YXRpbjFTdHJpbmcoImZhY2luZ01vZGVBY3Rpb24iKSk7CisgICAgIG92ZXJ2aWV3TW9kZUFjdGlv bi0+c2V0T2JqZWN0TmFtZShRTGF0aW4xU3RyaW5nKCJvdmVydmlld01vZGVBY3Rpb24iKSk7CitA QCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZhdGU6OnNldHVw QWN0aW9ucygpCisgICAgIHByaW50ZXJHcm91cCA9IG5ldyBRQWN0aW9uR3JvdXAocSk7CisgICAg IHByaW50QWN0aW9uID0gcHJpbnRlckdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6 dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlByaW50IikpOworICAgICBwYWdlU2V0 dXBBY3Rpb24gPSBwcmludGVyR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFu c2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAiUGFnZSBzZXR1cCIpKTsKKy0gICAgcXRfc2V0 dXBBY3Rpb25JY29uKHByaW50QWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJwcmludCIpKTsKKysgICAg cXRfc2V0dXBBY3Rpb25JY29uKHByaW50QWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJwcmludGVyIikp OworICAgICBxdF9zZXR1cEFjdGlvbkljb24ocGFnZVNldHVwQWN0aW9uLCBRTGF0aW4xU3RyaW5n KCJwYWdlLXNldHVwIikpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHByaW50QWN0aW9uLCBTSUdO QUwodHJpZ2dlcmVkKGJvb2wpKSwgcSwgU0xPVChfcV9wcmludCgpKSk7CisgICAgIFFPYmplY3Q6 OmNvbm5lY3QocGFnZVNldHVwQWN0aW9uLCBTSUdOQUwodHJpZ2dlcmVkKGJvb2wpKSwgcSwgU0xP VChfcV9wYWdlU2V0dXAoKSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9x c3FscXVlcnkuY3BwIGIvcXRiYXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5jcHAKK2luZGV4 IDMyYzYxNjZjNzkuLjYwYWZlZjEwYzMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3NxbC9rZXJu ZWwvcXNxbHF1ZXJ5LmNwcAorKysrIGIvcXRiYXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5j cHAKK0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5 cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAy MiBUaGUgUXQgQ29tcGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGlj ZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0U3FsIG1vZHVsZSBv ZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC0zNzcsNiArMzc3LDEwIEBAIGJvb2wgUVNxbFF1ZXJ5Ojpl eGVjKGNvbnN0IFFTdHJpbmcmIHF1ZXJ5KQorICAgICBRRWxhcHNlZFRpbWVyIHQ7CisgICAgIHQu c3RhcnQoKTsKKyAjZW5kaWYKKysgICAgaWYgKCFkcml2ZXIoKSkgeworKyAgICAgICAgcVdhcm5p bmcoIlFTcWxRdWVyeTo6ZXhlYzogY2FsbGVkIGJlZm9yZSBkcml2ZXIgaGFzIGJlZW4gc2V0IHVw Iik7CisrICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKyAgICAgaWYgKGQtPnJlZi5sb2Fk UmVsYXhlZCgpICE9IDEpIHsKKyAgICAgICAgIGJvb2wgZm8gPSBpc0ZvcndhcmRPbmx5KCk7Cisg ICAgICAgICAqdGhpcyA9IFFTcWxRdWVyeShkcml2ZXIoKS0+Y3JlYXRlUmVzdWx0KCkpOworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3Bw IGIvcXRiYXNlL3NyYy90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKK2luZGV4 IDhlZmI5YzUzZDQuLmNlMDYyZjY2ZDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Rlc3RsaWIv cWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy90ZXN0bGliL3Fh YnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKK0BAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBRQWJz dHJhY3RJdGVtTW9kZWxUZXN0ZXJQcml2YXRlOjpwYXJlbnQoKQorIAorICAgICAvLyBDb21tb24g ZXJyb3IgdGVzdCAjMiwgbWFrZSBzdXJlIHRoYXQgYSBzZWNvbmQgbGV2ZWwgaW5kZXggaGFzIGEg cGFyZW50CisgICAgIC8vIHRoYXQgaXMgdGhlIGZpcnN0IGxldmVsIGluZGV4LgorLSAgICBpZiAo bW9kZWwtPnJvd0NvdW50KHRvcEluZGV4KSA+IDApIHsKKysgICAgaWYgKG1vZGVsLT5yb3dDb3Vu dCh0b3BJbmRleCkgPiAwICYmIG1vZGVsLT5jb2x1bW5Db3VudCh0b3BJbmRleCkgPiAwKSB7Cisg ICAgICAgICBRTW9kZWxJbmRleCBjaGlsZEluZGV4ID0gbW9kZWwtPmluZGV4KDAsIDAsIHRvcElu ZGV4KTsKKyAgICAgICAgIE1PREVMVEVTVEVSX1ZFUklGWShjaGlsZEluZGV4LmlzVmFsaWQoKSk7 CisgICAgICAgICBNT0RFTFRFU1RFUl9DT01QQVJFKG1vZGVsLT5wYXJlbnQoY2hpbGRJbmRleCks IHRvcEluZGV4KTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNw cCBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xYXNjaWlrZXkuY3BwCitpbmRleCA5YTMwOGRhMmJjLi45 MzQ5OGIyNTZmIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy90ZXN0bGliL3Fhc2NpaWtleS5jcHAK KysrKyBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xYXNjaWlrZXkuY3BwCitAQCAtNDk4LDYgKzQ5OCwx MSBAQCBjaGFyIFFUZXN0OjprZXlUb0FzY2lpKFF0OjpLZXkga2V5KQorICAgICBjYXNlIFF0OjpL ZXlfTGF1bmNoRSA6IHJldHVybiAwOyAvLyA9IDB4MTBiMCwKKyAgICAgY2FzZSBRdDo6S2V5X0xh dW5jaEYgOiByZXR1cm4gMDsgLy8gPSAweDEwYjEsCisgCisrICAgIC8vIEtleXBhZCBuYXZpZ2F0 aW9uIGtleXMKKysgICAgY2FzZSBRdDo6S2V5X1NlbGVjdCA6IHJldHVybiAwOyAvLyA9IDB4MDEw MTAwMDAKKysgICAgY2FzZSBRdDo6S2V5X1llcyA6IHJldHVybiAwOyAvLyA9IDB4MDEwMTAwMDEK KysgICAgY2FzZSBRdDo6S2V5X05vIDogcmV0dXJuIDA7IC8vID0gMHgwMTAxMDAwMgorKworICAg ICBkZWZhdWx0OiBRVEVTVF9BU1NFUlQoZmFsc2UpOyByZXR1cm4gMDsKKyAgICAgfQorIH0KK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3BwIGIvcXRiYXNlL3Ny Yy90ZXN0bGliL3F0ZXN0cmVzdWx0LmNwcAoraW5kZXggODgwMjhhYWM2ZS4uMmU4OTkzMDc3NiAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAKK0BAIC0yNTEsNyArMjUxLDggQEAgYm9v bCBRVGVzdFJlc3VsdDo6dmVyaWZ5KGJvb2wgc3RhdGVtZW50LCBjb25zdCBjaGFyICpzdGF0ZW1l bnRTdHIsCisgeworICAgICBRVEVTVF9BU1NFUlQoc3RhdGVtZW50U3RyKTsKKyAKKy0gICAgY2hh ciBtc2dbMTAyNF0gPSB7J1wwJ307CisrICAgIGNoYXIgbXNnWzEwMjRdOworKyAgICBtc2dbMF0g PSAnXDAnOworIAorICAgICBpZiAoUVRlc3RMb2c6OnZlcmJvc2VMZXZlbCgpID49IDIpIHsKKyAg ICAgICAgIHFzbnByaW50Zihtc2csIDEwMjQsICJRVkVSSUZZKCVzKSIsIHN0YXRlbWVudFN0cik7 CitAQCAtMzA5LDcgKzMxMCw4IEBAIHN0YXRpYyBib29sIGNvbXBhcmVIZWxwZXIoYm9vbCBzdWNj ZXNzLCBjb25zdCBjaGFyICpmYWlsdXJlTXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg Ym9vbCBoYXNWYWx1ZXMgPSB0cnVlKQorIHsKKyAgICAgY29uc3Qgc2l6ZV90IG1heE1zZ0xlbiA9 IDEwMjQ7CistICAgIGNoYXIgbXNnW21heE1zZ0xlbl0gPSB7J1wwJ307CisrICAgIGNoYXIgbXNn W21heE1zZ0xlbl07CisrICAgIG1zZ1swXSA9ICdcMCc7CisgCisgICAgIFFURVNUX0FTU0VSVChl eHBlY3RlZCk7CisgICAgIFFURVNUX0FTU0VSVChhY3R1YWwpOworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fjb2xvcmRpYWxvZy5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdl dHMvZGlhbG9ncy9xY29sb3JkaWFsb2cuY3BwCitpbmRleCA0MjQ3NzMxMjc1Li5jYjMyNWJlODVj IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNw cAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNwcAorQEAg LTc4LDcgKzc4LDEwIEBACisgI2luY2x1ZGUgInF3aW5kb3cuaCIKKyAKKyAjaW5jbHVkZSAicHJp dmF0ZS9xZGlhbG9nX3AuaCIKKysjaW5jbHVkZSAicHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5o IgorIAorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3Jtc2VydmljZXMuaD4KKysjaW5jbHVkZSA8cXBh L3FwbGF0Zm9ybWludGVncmF0aW9uLmg+CisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKyAKKyBRVF9C RUdJTl9OQU1FU1BBQ0UKK0BAIC0xNjExLDYgKzE2MTQsMjAgQEAgdm9pZCBRQ29sb3JEaWFsb2dQ cml2YXRlOjpfcV9uZXdTdGFuZGFyZChpbnQgciwgaW50IGMpCisgdm9pZCBRQ29sb3JEaWFsb2dQ cml2YXRlOjpfcV9waWNrU2NyZWVuQ29sb3IoKQorIHsKKyAgICAgUV9RKFFDb2xvckRpYWxvZyk7 CisrCisrICAgIGF1dG8gKnBsYXRmb3JtU2VydmljZXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRl OjpwbGF0Zm9ybUludGVncmF0aW9uKCktPnNlcnZpY2VzKCk7CisrICAgIGlmIChwbGF0Zm9ybVNl cnZpY2VzLT5oYXNDYXBhYmlsaXR5KFFQbGF0Zm9ybVNlcnZpY2VzOjpDYXBhYmlsaXR5OjpDb2xv clBpY2tpbmcpKSB7CisrICAgICAgICBpZiAoYXV0byAqY29sb3JQaWNrZXIgPSBwbGF0Zm9ybVNl cnZpY2VzLT5jb2xvclBpY2tlcihxLT53aW5kb3dIYW5kbGUoKSkpIHsKKysgICAgICAgICAgICBx LT5jb25uZWN0KGNvbG9yUGlja2VyLCAmUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyOjpjb2xv clBpY2tlZCwgcSwKKysgICAgICAgICAgICAgICAgICAgICAgIFtxLCBjb2xvclBpY2tlcl0oY29u c3QgUUNvbG9yICZjb2xvcikgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yUGlj a2VyLT5kZWxldGVMYXRlcigpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHEtPnNldEN1 cnJlbnRDb2xvcihjb2xvcik7CisrICAgICAgICAgICAgICAgICAgICAgICB9KTsKKysgICAgICAg ICAgICBjb2xvclBpY2tlci0+cGlja0NvbG9yKCk7CisrICAgICAgICAgICAgcmV0dXJuOworKyAg ICAgICAgfQorKyAgICB9CisrCisgICAgIGlmICghY29sb3JQaWNraW5nRXZlbnRGaWx0ZXIpCisg ICAgICAgICBjb2xvclBpY2tpbmdFdmVudEZpbHRlciA9IG5ldyBRQ29sb3JQaWNraW5nRXZlbnRG aWx0ZXIodGhpcywgcSk7CisgICAgIHEtPmluc3RhbGxFdmVudEZpbHRlcihjb2xvclBpY2tpbmdF dmVudEZpbHRlcik7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9x YWJzdHJhY3RpdGVtZGVsZWdhdGUuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9x YWJzdHJhY3RpdGVtZGVsZWdhdGUuY3BwCitpbmRleCBlMTIwODE3ZWRjLi44ZWEzNmI1NDI3IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJhY3RpdGVtZGVs ZWdhdGUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FhYnN0cmFjdGl0 ZW1kZWxlZ2F0ZS5jcHAKK0BAIC00MDAsMTIgKzQwMCw3IEBAIGJvb2wgUUFic3RyYWN0SXRlbURl bGVnYXRlOjpoZWxwRXZlbnQoUUhlbHBFdmVudCAqZXZlbnQsCisgICAgICAgICBjb25zdCBRU3Ry aW5nIHRvb2x0aXAgPSBpbmRleC5pc1ZhbGlkKCkgPworICAgICAgICAgICAgICAgZC0+dGV4dEZv clJvbGUoUXQ6OlRvb2xUaXBSb2xlLCBpbmRleC5kYXRhKFF0OjpUb29sVGlwUm9sZSksIG9wdGlv bi5sb2NhbGUsIHByZWNpc2lvbikgOgorICAgICAgICAgICAgICAgUVN0cmluZygpOworLSAgICAg ICAgUVJlY3QgcmVjdDsKKy0gICAgICAgIGlmIChpbmRleC5pc1ZhbGlkKCkpIHsKKy0gICAgICAg ICAgICBjb25zdCBRUmVjdCByID0gdmlldy0+dmlzdWFsUmVjdChpbmRleCk7CistICAgICAgICAg ICAgcmVjdCA9IFFSZWN0KHZpZXctPm1hcFRvR2xvYmFsKHIudG9wTGVmdCgpKSwgci5zaXplKCkp OworLSAgICAgICAgfQorLSAgICAgICAgUVRvb2xUaXA6OnNob3dUZXh0KGhlLT5nbG9iYWxQb3Mo KSwgdG9vbHRpcCwgdmlldywgcmVjdCk7CisrICAgICAgICBRVG9vbFRpcDo6c2hvd1RleHQoaGUt Pmdsb2JhbFBvcygpLCB0b29sdGlwLCB2aWV3LT52aWV3cG9ydCgpLCBvcHRpb24ucmVjdCk7Cisg ICAgICAgICBldmVudC0+c2V0QWNjZXB0ZWQoIXRvb2x0aXAuaXNFbXB0eSgpKTsKKyAgICAgICAg IGJyZWFrOworICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVt dmlld3MvcWxpc3R2aWV3LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2 aWV3LmNwcAoraW5kZXggMmIzNDQ3NjY0Mi4uZWViZmFhMDMwZSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNwcAorKysrIGIvcXRiYXNlL3NyYy93 aWRnZXRzL2l0ZW12aWV3cy9xbGlzdHZpZXcuY3BwCitAQCAtMzM4Niw2ICszMzg2LDcgQEAgdm9p ZCBRSWNvbk1vZGVWaWV3QmFzZTo6dXBkYXRlQ29udGVudHNTaXplKCkKKyAqLworIHZvaWQgUUxp c3RWaWV3OjpjdXJyZW50Q2hhbmdlZChjb25zdCBRTW9kZWxJbmRleCAmY3VycmVudCwgY29uc3Qg UU1vZGVsSW5kZXggJnByZXZpb3VzKQorIHsKKysgICAgUUFic3RyYWN0SXRlbVZpZXc6OmN1cnJl bnRDaGFuZ2VkKGN1cnJlbnQsIHByZXZpb3VzKTsKKyAjaWZuZGVmIFFUX05PX0FDQ0VTU0lCSUxJ VFkKKyAgICAgaWYgKFFBY2Nlc3NpYmxlOjppc0FjdGl2ZSgpKSB7CisgICAgICAgICBpZiAoY3Vy cmVudC5pc1ZhbGlkKCkpIHsKK0BAIC0zMzk2LDcgKzMzOTcsNiBAQCB2b2lkIFFMaXN0Vmlldzo6 Y3VycmVudENoYW5nZWQoY29uc3QgUU1vZGVsSW5kZXggJmN1cnJlbnQsIGNvbnN0IFFNb2RlbElu ZGV4ICZwcgorICAgICAgICAgfQorICAgICB9CisgI2VuZGlmCistICAgIFFBYnN0cmFjdEl0ZW1W aWV3OjpjdXJyZW50Q2hhbmdlZChjdXJyZW50LCBwcmV2aW91cyk7CisgfQorIAorIC8qIQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy5jcHAgYi9x dGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcuY3BwCitpbmRleCA5MzRhYzU4 MWIyLi5mNzliYjI0MjQ5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3 cy9xdGFibGV2aWV3LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xdGFi bGV2aWV3LmNwcAorQEAgLTEwMTMsNiArMTAxMyw3IEBAIHZvaWQgUVRhYmxlVmlld1ByaXZhdGU6 OmRyYXdDZWxsKFFQYWludGVyICpwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25WaWV3SXRlbSAm CisgaW50IFFUYWJsZVZpZXdQcml2YXRlOjp3aWR0aEhpbnRGb3JJbmRleChjb25zdCBRTW9kZWxJ bmRleCAmaW5kZXgsIGludCBoaW50LCBjb25zdCBRU3R5bGVPcHRpb25WaWV3SXRlbSAmb3B0aW9u KSBjb25zdAorIHsKKyAgICAgUV9RKGNvbnN0IFFUYWJsZVZpZXcpOworKyAgICBjb25zdCBpbnQg b2xkSGludCA9IGhpbnQ7CisgICAgIFFXaWRnZXQgKmVkaXRvciA9IGVkaXRvckZvckluZGV4KGlu ZGV4KS53aWRnZXQuZGF0YSgpOworICAgICBpZiAoZWRpdG9yICYmIHBlcnNpc3RlbnQuY29udGFp bnMoZWRpdG9yKSkgeworICAgICAgICAgaGludCA9IHFNYXgoaGludCwgZWRpdG9yLT5zaXplSGlu dCgpLndpZHRoKCkpOworQEAgLTEwMjEsNiArMTAyMiwxNyBAQCBpbnQgUVRhYmxlVmlld1ByaXZh dGU6OndpZHRoSGludEZvckluZGV4KGNvbnN0IFFNb2RlbEluZGV4ICZpbmRleCwgaW50IGhpbnQs IGNvbgorICAgICAgICAgaGludCA9IHFCb3VuZChtaW4sIGhpbnQsIG1heCk7CisgICAgIH0KKyAg ICAgaGludCA9IHFNYXgoaGludCwgcS0+aXRlbURlbGVnYXRlKGluZGV4KS0+c2l6ZUhpbnQob3B0 aW9uLCBpbmRleCkud2lkdGgoKSk7CisrCisrICAgIGlmIChoYXNTcGFucygpKSB7CisrICAgICAg ICBhdXRvIHNwYW4gPSBzcGFucy5zcGFuQXQoaW5kZXguY29sdW1uKCksIGluZGV4LnJvdygpKTsK KysgICAgICAgIGlmIChzcGFuICYmIHNwYW4tPm1fbGVmdCA9PSBpbmRleC5jb2x1bW4oKSAmJiBz cGFuLT5tX3RvcCA9PSBpbmRleC5yb3coKSkgeworKyAgICAgICAgICAgIC8vIHNwYW5zIGFyZSBz Y3Jld2VkIHVwIHdoZW4gc2VjdGlvbnMgYXJlIG1vdmVkCisrICAgICAgICAgICAgY29uc3QgYXV0 byBsZWZ0ID0gbG9naWNhbENvbHVtbihzcGFuLT5tX2xlZnQpOworKyAgICAgICAgICAgIGZvciAo aW50IGkgPSAxOyBpIDw9IHNwYW4tPndpZHRoKCk7ICsraSkKKysgICAgICAgICAgICAgICBoaW50 IC09IHEtPmNvbHVtbldpZHRoKHZpc3VhbENvbHVtbihsZWZ0ICsgaSkpOworKyAgICAgICAgfQor KyAgICAgICAgaGludCA9IHN0ZDo6bWF4KGhpbnQsIG9sZEhpbnQpOworKyAgICB9CisgICAgIHJl dHVybiBoaW50OworIH0KKyAKK0BAIC0xMDUzLDYgKzEwNjUsMTEgQEAgaW50IFFUYWJsZVZpZXdQ cml2YXRlOjpoZWlnaHRIaW50Rm9ySW5kZXgoY29uc3QgUU1vZGVsSW5kZXggJmluZGV4LCBpbnQg aGludCwgUVMKKyAgICAgICAgIG9wdGlvbi5yZWN0LnNldEhlaWdodChoZWlnaHQpOworICAgICAg ICAgb3B0aW9uLnJlY3Quc2V0WChxLT5jb2x1bW5WaWV3cG9ydFBvc2l0aW9uKGluZGV4LmNvbHVt bigpKSk7CisgICAgICAgICBvcHRpb24ucmVjdC5zZXRXaWR0aChxLT5jb2x1bW5XaWR0aChpbmRl eC5jb2x1bW4oKSkpOworKyAgICAgICAgaWYgKGhhc1NwYW5zKCkpIHsKKysgICAgICAgICAgICBh dXRvIHNwYW4gPSBzcGFucy5zcGFuQXQoaW5kZXguY29sdW1uKCksIGluZGV4LnJvdygpKTsKKysg ICAgICAgICAgICBpZiAoc3BhbiAmJiBzcGFuLT5tX2xlZnQgPT0gaW5kZXguY29sdW1uKCkgJiYg c3Bhbi0+bV90b3AgPT0gaW5kZXgucm93KCkpCisrICAgICAgICAgICAgICAgIG9wdGlvbi5yZWN0 LnNldFdpZHRoKHN0ZDo6bWF4KG9wdGlvbi5yZWN0LndpZHRoKCksIHZpc3VhbFNwYW5SZWN0KCpz cGFuKS53aWR0aCgpKSk7CisrICAgICAgICB9CisgICAgICAgICAvLyAxcHggbGVzcyBzcGFjZSB3 aGVuIGdyaWQgaXMgc2hvd24gKHNlZSBkcmF3Q2VsbCkKKyAgICAgICAgIGlmIChzaG93R3JpZCkK KyAgICAgICAgICAgICBvcHRpb24ucmVjdC5zZXRXaWR0aChvcHRpb24ucmVjdC53aWR0aCgpIC0g MSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmggYi9x dGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3FhY3Rpb24uaAoraW5kZXggMjU4YTFlYTBhMC4uNzM3 YzFlODI4NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcWFjdGlvbi5o CisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3FhY3Rpb24uaAorQEAgLTgxLDcgKzgx LDcgQEAgY2xhc3MgUV9XSURHRVRTX0VYUE9SVCBRQWN0aW9uIDogcHVibGljIFFPYmplY3QKKyAg ICAgUV9QUk9QRVJUWShNZW51Um9sZSBtZW51Um9sZSBSRUFEIG1lbnVSb2xlIFdSSVRFIHNldE1l bnVSb2xlIE5PVElGWSBjaGFuZ2VkKQorICAgICBRX1BST1BFUlRZKGJvb2wgaWNvblZpc2libGVJ bk1lbnUgUkVBRCBpc0ljb25WaXNpYmxlSW5NZW51IFdSSVRFIHNldEljb25WaXNpYmxlSW5NZW51 IE5PVElGWSBjaGFuZ2VkKQorICAgICBRX1BST1BFUlRZKGJvb2wgc2hvcnRjdXRWaXNpYmxlSW5D b250ZXh0TWVudSBSRUFEIGlzU2hvcnRjdXRWaXNpYmxlSW5Db250ZXh0TWVudSBXUklURSBzZXRT aG9ydGN1dFZpc2libGVJbkNvbnRleHRNZW51IE5PVElGWSBjaGFuZ2VkKQorLSAgICBRX1BST1BF UlRZKFByaW9yaXR5IHByaW9yaXR5IFJFQUQgcHJpb3JpdHkgV1JJVEUgc2V0UHJpb3JpdHkpCisr ICAgIFFfUFJPUEVSVFkoUHJpb3JpdHkgcHJpb3JpdHkgUkVBRCBwcmlvcml0eSBXUklURSBzZXRQ cmlvcml0eSBOT1RJRlkgY2hhbmdlZCkKKyAKKyBwdWJsaWM6CisgICAgIC8vIG5vdGUgdGhpcyBp cyBjb3BpZWQgaW50byBxcGxhdGZvcm1tZW51LmgsIHdoaWNoIG11c3Qgc3RheSBpbiBzeW5jCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0LmNwcCBiL3F0YmFz ZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldC5jcHAKK2luZGV4IDllYmExZTAwMWUuLjI2ZjZk MjdlMTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQuY3BwCitAQCAtNTI5Niw3 ICs1Mjk2LDcgQEAgdm9pZCBRV2lkZ2V0UHJpdmF0ZTo6ZHJhd1dpZGdldChRUGFpbnREZXZpY2Ug KnBkZXYsIGNvbnN0IFFSZWdpb24gJnJnbiwgY29uc3QgUVAKKyAgICAgICAgIFFXaWRnZXRFZmZl Y3RTb3VyY2VQcml2YXRlICpzb3VyY2VkID0gc3RhdGljX2Nhc3Q8UVdpZGdldEVmZmVjdFNvdXJj ZVByaXZhdGUgKj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoc291cmNlLT5kX2Z1bmMoKSk7CisgICAgICAgICBpZiAoIXNvdXJjZWQt PmNvbnRleHQpIHsKKy0gICAgICAgICAgICBjb25zdCBRUmVnaW9uIGVmZmVjdFJnbihyZ24uYm91 bmRpbmdSZWN0KCkpOworKyAgICAgICAgICAgIGNvbnN0IFFSZWdpb24gZWZmZWN0UmduKChmbGFn cyAmIFVzZUVmZmVjdFJlZ2lvbkJvdW5kcykgPyByZ24uYm91bmRpbmdSZWN0KCkgOiByZ24pOwor ICAgICAgICAgICAgIFFXaWRnZXRQYWludENvbnRleHQgY29udGV4dChwZGV2LCBlZmZlY3RSZ24s IG9mZnNldCwgZmxhZ3MsIHNoYXJlZFBhaW50ZXIsIHJlcGFpbnRNYW5hZ2VyKTsKKyAgICAgICAg ICAgICBzb3VyY2VkLT5jb250ZXh0ID0gJmNvbnRleHQ7CisgICAgICAgICAgICAgaWYgKCFzaGFy ZWRQYWludGVyKSB7CitAQCAtNTMyOCw2ICs1MzI4LDcgQEAgdm9pZCBRV2lkZ2V0UHJpdmF0ZTo6 ZHJhd1dpZGdldChRUGFpbnREZXZpY2UgKnBkZXYsIGNvbnN0IFFSZWdpb24gJnJnbiwgY29uc3Qg UVAKKyAgICAgICAgIH0KKyAgICAgfQorICNlbmRpZiAvLyBRVF9DT05GSUcoZ3JhcGhpY3NlZmZl Y3QpCisrICAgIGZsYWdzID0gZmxhZ3MgJiB+VXNlRWZmZWN0UmVnaW9uQm91bmRzOworIAorICAg ICBjb25zdCBib29sIGFsc29PblNjcmVlbiA9IGZsYWdzICYgRHJhd1BhaW50T25TY3JlZW47Cisg ICAgIGNvbnN0IGJvb2wgcmVjdXJzaXZlID0gZmxhZ3MgJiBEcmF3UmVjdXJzaXZlOworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmggYi9xdGJhc2Uvc3Jj L3dpZGdldHMva2VybmVsL3F3aWRnZXRfcC5oCitpbmRleCBlZWY2YjhmYTJjLi5jNDMyZjRiNWQ1 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaAorKysr IGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaAorQEAgLTIyOSw3ICsyMjks OCBAQCBwdWJsaWM6CisgICAgICAgICBEb250U3VidHJhY3RPcGFxdWVDaGlsZHJlbiA9IDB4MTAs CisgICAgICAgICBEb250RHJhd09wYXF1ZUNoaWxkcmVuID0gMHgyMCwKKyAgICAgICAgIERvbnRE cmF3TmF0aXZlQ2hpbGRyZW4gPSAweDQwLAorLSAgICAgICAgRG9udFNldENvbXBvc2l0aW9uTW9k ZSA9IDB4ODAKKysgICAgICAgIERvbnRTZXRDb21wb3NpdGlvbk1vZGUgPSAweDgwLAorKyAgICAg ICAgVXNlRWZmZWN0UmVnaW9uQm91bmRzID0gMHgxMDAKKyAgICAgfTsKKyAgICAgUV9ERUNMQVJF X0ZMQUdTKERyYXdXaWRnZXRGbGFncywgRHJhd1dpZGdldEZsYWcpCisgICAgIFFfRkxBRyhEcmF3 V2lkZ2V0RmxhZ3MpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lk Z2V0cmVwYWludG1hbmFnZXIuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0 cmVwYWludG1hbmFnZXIuY3BwCitpbmRleCAwMjg4MGIzNGRhLi4wZDQ0ZTEzMjZkIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWludG1hbmFnZXIuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRyZXBhaW50bWFuYWdlci5j cHAKK0BAIC0xMDE4LDcgKzEwMTgsOCBAQCB2b2lkIFFXaWRnZXRSZXBhaW50TWFuYWdlcjo6cGFp bnRBbmRGbHVzaCgpCisgCisgICAgIC8vIFBhaW50IHRoZSByZXN0IHdpdGggY29tcG9zaXRpb24u CisgICAgIGlmIChyZXBhaW50QWxsV2lkZ2V0cyB8fCAhZGlydHlDb3B5LmlzRW1wdHkoKSkgewor LSAgICAgICAgUVdpZGdldFByaXZhdGU6OkRyYXdXaWRnZXRGbGFncyBmbGFncyA9IFFXaWRnZXRQ cml2YXRlOjpEcmF3QXNSb290IHwgUVdpZGdldFByaXZhdGU6OkRyYXdSZWN1cnNpdmU7CisrICAg ICAgICBRV2lkZ2V0UHJpdmF0ZTo6RHJhd1dpZGdldEZsYWdzIGZsYWdzID0gUVdpZGdldFByaXZh dGU6OkRyYXdBc1Jvb3QgfCBRV2lkZ2V0UHJpdmF0ZTo6RHJhd1JlY3Vyc2l2ZQorKyAgICAgICAg ICAgICAgICB8IFFXaWRnZXRQcml2YXRlOjpVc2VFZmZlY3RSZWdpb25Cb3VuZHM7CisgICAgICAg ICB0bHctPmRfZnVuYygpLT5kcmF3V2lkZ2V0KHN0b3JlLT5wYWludERldmljZSgpLCBkaXJ0eUNv cHksIFFQb2ludCgpLCBmbGFncywgbnVsbHB0ciwgdGhpcyk7CisgICAgIH0KKyAKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVzL3FmdXNpb25zdHlsZS5jcHAgYi9xdGJhc2Uv c3JjL3dpZGdldHMvc3R5bGVzL3FmdXNpb25zdHlsZS5jcHAKK2luZGV4IGY0MzQ1ZDk3YzQuLjk2 MjkxMmM4MzggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVzL3FmdXNpb25z dHlsZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1c2lvbnN0eWxlLmNw cAorQEAgLTE3NzIsMTQgKzE3NzIsNiBAQCB2b2lkIFFGdXNpb25TdHlsZTo6ZHJhd0NvbnRyb2wo Q29udHJvbEVsZW1lbnQgZWxlbWVudCwgY29uc3QgUVN0eWxlT3B0aW9uICpvcHRpbworICAgICAg ICAgICAgIHByb3h5KCktPmRyYXdDb250cm9sKENFX1B1c2hCdXR0b25MYWJlbCwgJnN1Ym9wdCwg cGFpbnRlciwgd2lkZ2V0KTsKKyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNl IENFX1B1c2hCdXR0b25MYWJlbDoKKy0gICAgICAgIGlmIChjb25zdCBRU3R5bGVPcHRpb25CdXR0 b24gKmJ1dHRvbiA9IHFzdHlsZW9wdGlvbl9jYXN0PGNvbnN0IFFTdHlsZU9wdGlvbkJ1dHRvbiAq PihvcHRpb24pKSB7CistICAgICAgICAgICAgUVN0eWxlT3B0aW9uQnV0dG9uIGIoKmJ1dHRvbik7 CistICAgICAgICAgICAgLy8gbm8gUE1fQnV0dG9uU2hpZnRIb3Jpem9udGFsIGFuZCBQTV9CdXR0 b25TaGlmdFZlcnRpY2FsIGZvciBmdXNpb24gc3R5bGUKKy0gICAgICAgICAgICBiLnN0YXRlICY9 IH4oU3RhdGVfT24gfCBTdGF0ZV9TdW5rZW4pOworLSAgICAgICAgICAgIFFDb21tb25TdHlsZTo6 ZHJhd0NvbnRyb2woZWxlbWVudCwgJmIsIHBhaW50ZXIsIHdpZGdldCk7CistICAgICAgICB9Cist ICAgICAgICBicmVhazsKKyAgICAgY2FzZSBDRV9NZW51QmFyRW1wdHlBcmVhOgorICAgICAgICAg cGFpbnRlci0+c2F2ZSgpOworICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRz L3V0aWwvcWNvbXBsZXRlci5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVy LmNwcAoraW5kZXggMThiMjQwNjNkOC4uZWY3MjA3YThhMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvd2lkZ2V0cy91dGlsL3Fjb21wbGV0ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMv dXRpbC9xY29tcGxldGVyLmNwcAorQEAgLTExMjAsNiArMTEyMCw4IEBAIHZvaWQgUUNvbXBsZXRl cjo6c2V0TW9kZWwoUUFic3RyYWN0SXRlbU1vZGVsICptb2RlbCkKKyB7CisgICAgIFFfRChRQ29t cGxldGVyKTsKKyAgICAgUUFic3RyYWN0SXRlbU1vZGVsICpvbGRNb2RlbCA9IGQtPnByb3h5LT5z b3VyY2VNb2RlbCgpOworKyAgICBpZiAob2xkTW9kZWwgPT0gbW9kZWwpCisrICAgICAgICByZXR1 cm47CisgI2lmIFFUX0NPTkZJRyhmaWxlc3lzdGVtbW9kZWwpCisgICAgIGlmIChxb2JqZWN0X2Nh c3Q8Y29uc3QgUUZpbGVTeXN0ZW1Nb2RlbCAqPihvbGRNb2RlbCkpCisgICAgICAgICBzZXRDb21w bGV0aW9uUm9sZShRdDo6RWRpdFJvbGUpOyAvLyBRVEJVRy01NDY0MiwgY2xlYXIgRmlsZU5hbWVS b2xlIHNldCBieSBRRmlsZVN5c3RlbU1vZGVsCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRn ZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRn ZXRzL3FhYnN0cmFjdGJ1dHRvbi5jcHAKK2luZGV4IGExMjhiMjM5NTAuLmRjNDBiZjYyZmIgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3BwCitA QCAtNTYsNiArNTYsNyBAQAorICNpZm5kZWYgUVRfTk9fQUNDRVNTSUJJTElUWQorICNpbmNsdWRl ICJxYWNjZXNzaWJsZS5oIgorICNlbmRpZgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUu aD4KKyAKKyAjaW5jbHVkZSA8YWxnb3JpdGhtPgorIAorQEAgLTEwNzYsMTkgKzEwNzcsMTkgQEAg dm9pZCBRQWJzdHJhY3RCdXR0b246OmtleVByZXNzRXZlbnQoUUtleUV2ZW50ICplKQorIHsKKyAg ICAgUV9EKFFBYnN0cmFjdEJ1dHRvbik7CisgICAgIGJvb2wgbmV4dCA9IHRydWU7CistICAgIHN3 aXRjaCAoZS0+a2V5KCkpIHsKKy0gICAgY2FzZSBRdDo6S2V5X0VudGVyOgorLSAgICBjYXNlIFF0 OjpLZXlfUmV0dXJuOgorLSAgICAgICAgZS0+aWdub3JlKCk7CistICAgICAgICBicmVhazsKKy0g ICAgY2FzZSBRdDo6S2V5X1NlbGVjdDoKKy0gICAgY2FzZSBRdDo6S2V5X1NwYWNlOgorLSAgICAg ICAgaWYgKCFlLT5pc0F1dG9SZXBlYXQoKSkgeworLSAgICAgICAgICAgIHNldERvd24odHJ1ZSk7 CistICAgICAgICAgICAgcmVwYWludCgpOworLSAgICAgICAgICAgIGQtPmVtaXRQcmVzc2VkKCk7 CistICAgICAgICB9CistICAgICAgICBicmVhazsKKysKKysgICAgY29uc3QgYXV0byBrZXkgPSBz dGF0aWNfY2FzdDxRdDo6S2V5PihlLT5rZXkoKSk7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJl c3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1U aGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NL ZXlzLmNvbnRhaW5zKGtleSkgJiYgIWUtPmlzQXV0b1JlcGVhdCgpKSB7CisrICAgICAgICBzZXRE b3duKHRydWUpOworKyAgICAgICAgcmVwYWludCgpOworKyAgICAgICAgZC0+ZW1pdFByZXNzZWQo KTsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKworKyAgICBzd2l0Y2ggKGtleSkgeworICAg ICBjYXNlIFF0OjpLZXlfVXA6CisgICAgICAgICBuZXh0ID0gZmFsc2U7CisgICAgICAgICBRX0ZB TExUSFJPVUdIKCk7CitAQCAtMTE1MywxNSArMTE1NCwxNSBAQCB2b2lkIFFBYnN0cmFjdEJ1dHRv bjo6a2V5UmVsZWFzZUV2ZW50KFFLZXlFdmVudCAqZSkKKyAgICAgaWYgKCFlLT5pc0F1dG9SZXBl YXQoKSkKKyAgICAgICAgIGQtPnJlcGVhdFRpbWVyLnN0b3AoKTsKKyAKKy0gICAgc3dpdGNoIChl LT5rZXkoKSkgeworLSAgICBjYXNlIFF0OjpLZXlfU2VsZWN0OgorLSAgICBjYXNlIFF0OjpLZXlf U3BhY2U6CistICAgICAgICBpZiAoIWUtPmlzQXV0b1JlcGVhdCgpICYmIGQtPmRvd24pCistICAg ICAgICAgICAgZC0+Y2xpY2soKTsKKy0gICAgICAgIGJyZWFrOworLSAgICBkZWZhdWx0OgorLSAg ICAgICAgZS0+aWdub3JlKCk7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1 aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9u UHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZh bHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5z KHN0YXRpY19jYXN0PFF0OjpLZXk+KGUtPmtleSgpKSkgJiYgIWUtPmlzQXV0b1JlcGVhdCgpICYm IGQtPmRvd24pIHsKKysgICAgICAgIGQtPmNsaWNrKCk7CisrICAgICAgICByZXR1cm47CisgICAg IH0KKysKKysgICAgZS0+aWdub3JlKCk7CisgfQorIAorIC8qIVxyZWltcAorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5jcHAgYi9xdGJhc2Uvc3JjL3dp ZGdldHMvd2lkZ2V0cy9xY29tYm9ib3guY3BwCitpbmRleCA3YTQ5NmMyN2UwLi4wYTNkOTY2NDdi IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcAor KysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcAorQEAgLTMzNTIs NyArMzM1MiwyMyBAQCB2b2lkIFFDb21ib0JveDo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQgKmUp CisgCisgICAgIE1vdmUgbW92ZSA9IE5vTW92ZTsKKyAgICAgaW50IG5ld0luZGV4ID0gY3VycmVu dEluZGV4KCk7CistICAgIHN3aXRjaCAoZS0+a2V5KCkpIHsKKysKKysgICAgYm9vbCBwcmVzc0xp a2VCdXR0b24gPSAhZC0+bGluZUVkaXQ7CisrI2lmZGVmIFFUX0tFWVBBRF9OQVZJR0FUSU9OCisr ICAgIHByZXNzTGlrZUJ1dHRvbiB8PSBRQXBwbGljYXRpb25Qcml2YXRlOjprZXlwYWROYXZpZ2F0 aW9uRW5hYmxlZCgpICYmICFoYXNFZGl0Rm9jdXMoKTsKKysjZW5kaWYKKysgICAgYXV0byBrZXkg PSBzdGF0aWNfY2FzdDxRdDo6S2V5PihlLT5rZXkoKSk7CisrICAgIGlmIChwcmVzc0xpa2VCdXR0 b24pIHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0 aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNz S2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFs dWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRh aW5zKGtleSkpIHsKKysgICAgICAgICAgICBzaG93UG9wdXAoKTsKKysgICAgICAgICAgICByZXR1 cm47CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgc3dpdGNoIChrZXkpIHsKKyAgICAgY2Fz ZSBRdDo6S2V5X1VwOgorICAgICAgICAgaWYgKGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xN b2RpZmllcikKKyAgICAgICAgICAgICBicmVhazsgLy8gcGFzcyB0byBsaW5lIGVkaXQgZm9yIGF1 dG8gY29tcGxldGlvbgorQEAgLTMzOTQsMjYgKzM0MTAsMTEgQEAgdm9pZCBRQ29tYm9Cb3g6Omtl eVByZXNzRXZlbnQoUUtleUV2ZW50ICplKQorICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg IH0KKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIFF0OjpLZXlfU3BhY2U6CistICAgICAgICBp ZiAoIWQtPmxpbmVFZGl0KSB7CistICAgICAgICAgICAgc2hvd1BvcHVwKCk7CistICAgICAgICAg ICAgcmV0dXJuOworLSAgICAgICAgfQorLSAgICAgICAgYnJlYWs7CistICAgIGNhc2UgUXQ6Oktl eV9FbnRlcjoKKy0gICAgY2FzZSBRdDo6S2V5X1JldHVybjoKKyAgICAgY2FzZSBRdDo6S2V5X0Vz Y2FwZToKKyAgICAgICAgIGlmICghZC0+bGluZUVkaXQpCisgICAgICAgICAgICAgZS0+aWdub3Jl KCk7CisgICAgICAgICBicmVhazsKKyAjaWZkZWYgUVRfS0VZUEFEX05BVklHQVRJT04KKy0gICAg Y2FzZSBRdDo6S2V5X1NlbGVjdDoKKy0gICAgICAgIGlmIChRQXBwbGljYXRpb25Qcml2YXRlOjpr ZXlwYWROYXZpZ2F0aW9uRW5hYmxlZCgpCistICAgICAgICAgICAgICAgICYmICghaGFzRWRpdEZv Y3VzKCkgfHwgIWQtPmxpbmVFZGl0KSkgeworLSAgICAgICAgICAgIHNob3dQb3B1cCgpOworLSAg ICAgICAgICAgIHJldHVybjsKKy0gICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworICAgICBjYXNl IFF0OjpLZXlfTGVmdDoKKyAgICAgY2FzZSBRdDo6S2V5X1JpZ2h0OgorICAgICAgICAgaWYgKFFB cHBsaWNhdGlvblByaXZhdGU6OmtleXBhZE5hdmlnYXRpb25FbmFibGVkKCkgJiYgIWhhc0VkaXRG b2N1cygpKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRldGlt ZWVkaXRfcC5oIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRpdF9wLmgK K2luZGV4IGQzNmI2ZjhmOWEuLmUwZGY1YjUxNTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dp ZGdldHMvd2lkZ2V0cy9xZGF0ZXRpbWVlZGl0X3AuaAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRz L3dpZGdldHMvcWRhdGV0aW1lZWRpdF9wLmgKK0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTggVGhlIFF0IENvbXBhbnkgTHRk LgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisgKiogQ29udGFj dDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBh cnQgb2YgdGhlIFF0V2lkZ2V0cyBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94LmNwcCBiL3F0YmFzZS9zcmMv d2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC5jcHAKK2luZGV4IDAyYTBiZWQzMjUuLjNmM2VjY2Mz NzAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3BwCitAQCAtNTQs NiArNTQsOCBAQAorICNpbmNsdWRlICJxYWNjZXNzaWJsZS5oIgorICNlbmRpZgorICNpbmNsdWRl IDxwcml2YXRlL3F3aWRnZXRfcC5oPgorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlv bl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorIAorICNpbmNsdWRlICJx ZGVidWcuaCIKKyAKK0BAIC0zNjAsNyArMzYyLDEwIEBAIGJvb2wgUUdyb3VwQm94OjpldmVudChR RXZlbnQgKmUpCisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgY2FzZSBRRXZlbnQ6OktleVBy ZXNzOiB7CisgICAgICAgICBRS2V5RXZlbnQgKmsgPSBzdGF0aWNfY2FzdDxRS2V5RXZlbnQqPihl KTsKKy0gICAgICAgIGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgKGstPmtleSgpID09IFF0OjpL ZXlfU2VsZWN0IHx8IGstPmtleSgpID09IFF0OjpLZXlfU3BhY2UpKSB7CisrICAgICAgICBjb25z dCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3Jt VGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+Pigp OworKyAgICAgICAgaWYgKCFrLT5pc0F1dG9SZXBlYXQoKSAmJiBidXR0b25QcmVzc0tleXMuY29u dGFpbnMoc3RhdGljX2Nhc3Q8UXQ6OktleT4oay0+a2V5KCkpKSkgeworICAgICAgICAgICAgIGQt PnByZXNzZWRDb250cm9sID0gUVN0eWxlOjpTQ19Hcm91cEJveENoZWNrQm94OworICAgICAgICAg ICAgIHVwZGF0ZShzdHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5bGU6OkNDX0dyb3VwQm94LCAm Ym94LCBRU3R5bGU6OlNDX0dyb3VwQm94Q2hlY2tCb3gsIHRoaXMpKTsKKyAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKK0BAIC0zNjksNyArMzc0LDEwIEBAIGJvb2wgUUdyb3VwQm94OjpldmVudChR RXZlbnQgKmUpCisgICAgIH0KKyAgICAgY2FzZSBRRXZlbnQ6OktleVJlbGVhc2U6IHsKKyAgICAg ICAgIFFLZXlFdmVudCAqayA9IHN0YXRpY19jYXN0PFFLZXlFdmVudCo+KGUpOworLSAgICAgICAg aWYgKCFrLT5pc0F1dG9SZXBlYXQoKSAmJiAoay0+a2V5KCkgPT0gUXQ6OktleV9TZWxlY3QgfHwg ay0+a2V5KCkgPT0gUXQ6OktleV9TcGFjZSkpIHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9u UHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBs YXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBp ZiAoIWstPmlzQXV0b1JlcGVhdCgpICYmIGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhzdGF0aWNf Y2FzdDxRdDo6S2V5PihrLT5rZXkoKSkpKSB7CisgICAgICAgICAgICAgYm9vbCB0b2dnbGUgPSAo ZC0+cHJlc3NlZENvbnRyb2wgPT0gUVN0eWxlOjpTQ19Hcm91cEJveExhYmVsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfHwgZC0+cHJlc3NlZENvbnRyb2wgPT0gUVN0eWxlOjpTQ19Hcm91 cEJveENoZWNrQm94KTsKKyAgICAgICAgICAgICBkLT5wcmVzc2VkQ29udHJvbCA9IFFTdHlsZTo6 U0NfTm9uZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xbGFiZWwu Y3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWxhYmVsLmNwcAoraW5kZXggMzBmZjgw Y2JiMC4uY2YyNjA1YzE3YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRz L3FsYWJlbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAK K0BAIC00MjEsOSArNDIxLDYgQEAgdm9pZCBRTGFiZWw6OnNldFBpeG1hcChjb25zdCBRUGl4bWFw ICZwaXhtYXApCisgICAgICAgICBkLT5waXhtYXAgPSBuZXcgUVBpeG1hcChwaXhtYXApOworICAg ICB9CisgCistICAgIGlmIChkLT5waXhtYXAtPmRlcHRoKCkgPT0gMSAmJiAhZC0+cGl4bWFwLT5t YXNrKCkpCistICAgICAgICBkLT5waXhtYXAtPnNldE1hc2soKigoUUJpdG1hcCAqKWQtPnBpeG1h cCkpOworLQorICAgICBkLT51cGRhdGVMYWJlbCgpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3BwIGIvcXRiYXNlL3Ny Yy93aWRnZXRzL3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcAoraW5kZXggNDkzYzA5NGNj MS4uZDVmNGI1OTAxNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0 b29sYmFyYXJlYWxheW91dC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0 b29sYmFyYXJlYWxheW91dC5jcHAKK0BAIC0xMzY3LDcgKzEzNjcsNyBAQCBib29sIFFUb29sQmFy QXJlYUxheW91dDo6cmVzdG9yZVN0YXRlKFFEYXRhU3RyZWFtICZzdHJlYW0sIGNvbnN0IFFMaXN0 PFFUb29sQmFyKgorICAgICAgICAgICAgICAgICBpdGVtLndpZGdldEl0ZW0gPSBuZXcgUVdpZGdl dEl0ZW1WMih0b29sQmFyKTsKKyAgICAgICAgICAgICAgICAgdG9vbEJhci0+c2V0T3JpZW50YXRp b24oZmxvYXRpbmcgPyAoKHNob3duICYgMikgPyBRdDo6VmVydGljYWwgOiBRdDo6SG9yaXpvbnRh bCkgOiBkb2NrLm8pOworICAgICAgICAgICAgICAgICB0b29sQmFyLT5zZXRWaXNpYmxlKHNob3du ICYgMSk7CistICAgICAgICAgICAgICAgIHRvb2xCYXItPmRfZnVuYygpLT5zZXRXaW5kb3dTdGF0 ZShmbG9hdGluZywgdHJ1ZSwgcmVjdCk7CisrICAgICAgICAgICAgICAgIHRvb2xCYXItPmRfZnVu YygpLT5zZXRXaW5kb3dTdGF0ZShmbG9hdGluZywgZmFsc2UsIHJlY3QpOworIAorICAgICAgICAg ICAgICAgICBpdGVtLnByZWZlcnJlZFNpemUgPSBpdGVtLnNpemU7CisgICAgICAgICAgICAgICAg IGxpbmUudG9vbEJhckl0ZW1zLmFwcGVuZChpdGVtKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVz dHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3Vy cmVudGl0ZXJhdGVrZXJuZWwuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNv bmN1cnJlbnRpdGVyYXRla2VybmVsL3RzdF9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsLmNwcAor aW5kZXggMjEyYzBhMmUxMy4uM2M3N2IxYmEwYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9h dXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50 aXRlcmF0ZWtlcm5lbC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRj b25jdXJyZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC5jcHAK K0BAIC0xMjYsOCArMTI2LDcgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0 ZXJhdGVLZXJuZWw6Omluc3RhbnRpYXRlKCkKKyB7CistICAgIGF1dG8gZnV0dXJlID0gc3RhcnRU aHJlYWRFbmdpbmUobmV3IFByaW50Rm9yKDAsIDQwKSkuc3RhcnRBc3luY2hyb25vdXNseSgpOwor LSAgICBmdXR1cmUud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIHN0YXJ0VGhyZWFkRW5naW5lKG5l dyBQcmludEZvcigwLCA0MCkpLnN0YXJ0QmxvY2tpbmcoKTsKKyAgICAgUUNPTVBBUkUoaXRlcmF0 aW9ucy5sb2FkUmVsYXhlZCgpLCA0MCk7CisgfQorIAorQEAgLTE2NiwxMCArMTY1LDggQEAgdm9p ZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6c3RyZXNzdGVzdCgpCisgICAgIGNvbnN0 IGludCB0aW1lcyA9IDUwOworICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbWVzOyArK2kpIHsK KyAgICAgICAgIGNvdW50ZXIuc3RvcmVSZWxheGVkKDApOworLSAgICAgICAgLy8gVGhyZWFkRW5n aW5lIHdpbGwgZGVsZXRlIGYgd2hlbiBpdCBmaW5pc2hlcworLSAgICAgICAgYXV0byBmID0gbmV3 IENvdW50Rm9yKDAsIGl0ZXJhdGlvbnMpOworLSAgICAgICAgYXV0byBmdXR1cmUgPSBmLT5zdGFy dEFzeW5jaHJvbm91c2x5KCk7CistICAgICAgICBmdXR1cmUud2FpdEZvckZpbmlzaGVkKCk7Cisr ICAgICAgICBDb3VudEZvciBmKDAsIGl0ZXJhdGlvbnMpOworKyAgICAgICAgZi5zdGFydEJsb2Nr aW5nKCk7CisgICAgICAgICBRQ09NUEFSRShjb3VudGVyLmxvYWRSZWxheGVkKCksIGl0ZXJhdGlv bnMpOworICAgICB9CisgfQorQEAgLTE3NywxMSArMTc0LDggQEAgdm9pZCB0c3RfUXRDb25jdXJy ZW50SXRlcmF0ZUtlcm5lbDo6c3RyZXNzdGVzdCgpCisgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRl cmF0ZUtlcm5lbDo6bm9JdGVyYXRpb25zKCkKKyB7CisgICAgIGNvbnN0IGludCB0aW1lcyA9IDIw MDAwOworLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbWVzOyArK2kpIHsKKy0gICAgICAgIGF1 dG8gZnV0dXJlID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IEl0ZXJhdGVLZXJuZWw8VGVzdEl0ZXJh dG9yLCB2b2lkPigwLCAwKSkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RhcnRB c3luY2hyb25vdXNseSgpOworLSAgICAgICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgpOworLSAg ICB9CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGltZXM7ICsraSkKKysgICAgICAgIHN0YXJ0 VGhyZWFkRW5naW5lKG5ldyBJdGVyYXRlS2VybmVsPFRlc3RJdGVyYXRvciwgdm9pZD4oMCwgMCkp LnN0YXJ0QmxvY2tpbmcoKTsKKyB9CisgCisgUU11dGV4IHRocmVhZHNNdXRleDsKK0BAIC0yMzYs MTAgKzIzMCw4IEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6OnRocm90dGxp bmcoKQorIAorICAgICB0aHJlYWRzLmNsZWFyKCk7CisgCistICAgIC8vIFRocmVhZEVuZ2luZSB3 aWxsIGRlbGV0ZSBmIHdoZW4gaXQgZmluaXNoZXMKKy0gICAgYXV0byBmID0gbmV3IFRocm90dGxl Rm9yKDAsIHRvdGFsSXRlcmF0aW9ucyk7CistICAgIGF1dG8gZnV0dXJlID0gZi0+c3RhcnRBc3lu Y2hyb25vdXNseSgpOworLSAgICBmdXR1cmUud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIFRocm90 dGxlRm9yIGYoMCwgdG90YWxJdGVyYXRpb25zKTsKKysgICAgZi5zdGFydEJsb2NraW5nKCk7Cisg CisgICAgIFFDT01QQVJFKGl0ZXJhdGlvbnMubG9hZFJlbGF4ZWQoKSwgdG90YWxJdGVyYXRpb25z KTsKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3Vy cmVudHRocmVhZGVuZ2luZS90c3RfcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcCBiL3F0YmFz ZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNv bmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwCitpbmRleCBhYzdiZTdhY2RkLi44MWJjNjRjOGQ5IDEw MDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJl YWRlbmdpbmUvdHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS90 ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNvbmN1 cnJlbnR0aHJlYWRlbmdpbmUuY3BwCitAQCAtNjUsOSArNjUsMTYgQEAgcHVibGljOgorIAorIHZv aWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6cnVuRGlyZWN0bHkoKQorIHsKKy0gICAg UHJpbnRVc2VyICplbmdpbmUgPSBuZXcgUHJpbnRVc2VyKCk7CistICAgIFFGdXR1cmU8dm9pZD4g ZiA9IGVuZ2luZS0+c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICBmLndhaXRGb3JGaW5pc2hl ZCgpOworKyAgICB7CisrICAgICAgICBQcmludFVzZXIgZW5naW5lOworKyAgICAgICAgZW5naW5l LnN0YXJ0U2luZ2xlVGhyZWFkZWQoKTsKKysgICAgICAgIGVuZ2luZS5zdGFydEJsb2NraW5nKCk7 CisrICAgIH0KKysgICAgeworKyAgICAgICAgUHJpbnRVc2VyICplbmdpbmUgPSBuZXcgUHJpbnRV c2VyKCk7CisrICAgICAgICBRRnV0dXJlPHZvaWQ+IGYgPSBlbmdpbmUtPnN0YXJ0QXN5bmNocm9u b3VzbHkoKTsKKysgICAgICAgIGYud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIH0KKyB9CisgCisg Y2xhc3MgU3RyaW5nUmVzdWx0VXNlciA6IHB1YmxpYyBUaHJlYWRFbmdpbmU8UVN0cmluZz4KK0BA IC05OSwxMCArMTA2LDggQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVh ZEVuZ2luZTo6cmVzdWx0KCkKKyB7CistICAgIC8vIFRocmVhZEVuZ2luZSB3aWxsIGRlbGV0ZSAn ZW5naW5lJyB3aGVuIGl0IGZpbmlzaGVzCistICAgIGF1dG8gZW5naW5lID0gbmV3IFN0cmluZ1Jl c3VsdFVzZXIoKTsKKy0gICAgYXV0byBmdXR1cmUgPSBlbmdpbmUtPnN0YXJ0QXN5bmNocm9ub3Vz bHkoKTsKKy0gICAgUUNPTVBBUkUoZnV0dXJlLnJlc3VsdCgpLCBRU3RyaW5nKCJGb28iKSk7Cisr ICAgIFN0cmluZ1Jlc3VsdFVzZXIgZW5naW5lOworKyAgICBRQ09NUEFSRSgqZW5naW5lLnN0YXJ0 QmxvY2tpbmcoKSwgUVN0cmluZygiRm9vIikpOworIH0KKyAKKyBjbGFzcyBWb2lkUmVzdWx0VXNl ciA6IHB1YmxpYyBUaHJlYWRFbmdpbmU8dm9pZD4KK0BAIC0xMjgsOSArMTMzLDE3IEBAIHB1Ymxp YzoKKyAKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnJ1blRocm91Z2hTdGFy dGVyKCkKKyB7CistICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXI8UVN0cmluZz4gc3RhcnRlciA9IHN0 YXJ0VGhyZWFkRW5naW5lKG5ldyBTdHJpbmdSZXN1bHRVc2VyKCkpOworLSAgICBRRnV0dXJlPFFT dHJpbmc+IGYgPSBzdGFydGVyLnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgUUNPTVBBUkUo Zi5yZXN1bHQoKSwgUVN0cmluZygiRm9vIikpOworKyAgICB7CisrICAgICAgICBUaHJlYWRFbmdp bmVTdGFydGVyPFFTdHJpbmc+IHN0YXJ0ZXIgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgU3RyaW5n UmVzdWx0VXNlcigpKTsKKysgICAgICAgIFFGdXR1cmU8UVN0cmluZz4gIGYgPSBzdGFydGVyLnN0 YXJ0QXN5bmNocm9ub3VzbHkoKTsKKysgICAgICAgIFFDT01QQVJFKGYucmVzdWx0KCksIFFTdHJp bmcoIkZvbyIpKTsKKysgICAgfQorKworKyAgICB7CisrICAgICAgICBUaHJlYWRFbmdpbmVTdGFy dGVyPFFTdHJpbmc+IHN0YXJ0ZXIgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgU3RyaW5nUmVzdWx0 VXNlcigpKTsKKysgICAgICAgIFFTdHJpbmcgc3RyID0gc3RhcnRlci5zdGFydEJsb2NraW5nKCk7 CisrICAgICAgICBRQ09NUEFSRShzdHIsIFFTdHJpbmcoIkZvbyIpKTsKKysgICAgfQorIH0KKyAK KyBjbGFzcyBDYW5jZWxVc2VyIDogcHVibGljIFRocmVhZEVuZ2luZTx2b2lkPgorQEAgLTIxMyw2 ICsyMjYsMTIgQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjp0aHJvdHRsZSgp CisgICAgICAgICBmLndhaXRGb3JGaW5pc2hlZCgpOworICAgICAgICAgUUNPTVBBUkUoY291bnQu bG9hZFJlbGF4ZWQoKSwgMCk7CisgICAgIH0KKysKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBy ZXBlYXRzOyArK2kpIHsKKysgICAgICAgIFRocm90dGxlQWx3YXlzVXNlciB0OworKyAgICAgICAg dC5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudC5sb2FkUmVsYXhlZCgp LCAwKTsKKysgICAgfQorIH0KKyAKKyBRU2V0PFFUaHJlYWQgKj4gdGhyZWFkczsKK0BAIC0yNDks MTcgKzI2OCwzNSBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnRocmVhZENv dW50KCkKKyB7CisgICAgIGNvbnN0IGludCByZXBlYXRzID0gMTA7CisgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgcmVwZWF0czsgKytpKSB7CisrICAgICAgICBUaHJlYWRDb3VudFVzZXIgdDsKKysg ICAgICAgIHQuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgaW50IGNvdW50ID0gdGhyZWFkcy5j b3VudCgpOworKyAgICAgICAgaW50IGNvdW50X2V4cGVjdGVkID0gUVRocmVhZFBvb2w6Omdsb2Jh bEluc3RhbmNlKCktPm1heFRocmVhZENvdW50KCkgKyAxOyAvLyArMSBmb3IgdGhlIG1haW4gdGhy ZWFkLgorKyAgICAgICAgaWYgKGNvdW50ICE9IGNvdW50X2V4cGVjdGVkKQorKyAgICAgICAgICAg IFFFWFBFQ1RfRkFJTCgiIiwgIlFUQlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAgICAgUUNPTVBB UkUoY291bnQsIGNvdW50X2V4cGVjdGVkKTsKKysKKyAgICAgICAgIChuZXcgVGhyZWFkQ291bnRV c2VyKCkpLT5zdGFydEFzeW5jaHJvbm91c2x5KCkud2FpdEZvckZpbmlzaGVkKCk7CistICAgICAg ICBjb25zdCBhdXRvIGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworLSAgICAgICAgY29uc3QgYXV0 byBtYXhUaHJlYWRDb3VudCA9IFFUaHJlYWRQb29sOjpnbG9iYWxJbnN0YW5jZSgpLT5tYXhUaHJl YWRDb3VudCgpOworLSAgICAgICAgUVZFUklGWShjb3VudCA8PSBtYXhUaHJlYWRDb3VudCk7Cist ICAgICAgICBRVkVSSUZZKCF0aHJlYWRzLmNvbnRhaW5zKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQo KSkpOworKyAgICAgICAgY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBjb3VudF9l eHBlY3RlZCA9IFFUaHJlYWRQb29sOjpnbG9iYWxJbnN0YW5jZSgpLT5tYXhUaHJlYWRDb3VudCgp OworKyAgICAgICAgaWYgKGNvdW50ICE9IGNvdW50X2V4cGVjdGVkKQorKyAgICAgICAgICAgIFFF WFBFQ1RfRkFJTCgiIiwgIlFUQlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAgICAgUUNPTVBBUkUo Y291bnQsIGNvdW50X2V4cGVjdGVkKTsKKyAgICAgfQorIAorICAgICAvLyBTZXQgdGhlIGZpbmlz aCBmbGFnIGltbWVkaWF0ZWx5LCB0aGlzIHNob3VsZCBnaXZlIHVzIG9uZSB0aHJlYWQgb25seS4K KyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXRzOyArK2kpIHsKKysgICAgICAgIFRocmVh ZENvdW50VXNlciB0KHRydWUgLypmaW5pc2hJbW1lZGlhdGVseSovKTsKKysgICAgICAgIHQuc3Rh cnRCbG9ja2luZygpOworKyAgICAgICAgaW50IGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAg ICAgICAgaWYgKGNvdW50ICE9IDEpCisrICAgICAgICAgICAgUUVYUEVDVF9GQUlMKCIiLCAiUVRC VUctMjMzMzMiLCBBYm9ydCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudCwgMSk7CisrCisgICAg ICAgICAobmV3IFRocmVhZENvdW50VXNlcih0cnVlIC8qZmluaXNoSW1tZWRpYXRlbHkqLykpLT5z dGFydEFzeW5jaHJvbm91c2x5KCkud2FpdEZvckZpbmlzaGVkKCk7CistICAgICAgICBjb25zdCBh dXRvIGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgY291bnQgPSB0aHJlYWRzLmNv dW50KCk7CisrICAgICAgICBpZiAoY291bnQgIT0gMSkKKysgICAgICAgICAgICBRRVhQRUNUX0ZB SUwoIiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKyAgICAgICAgIFFDT01QQVJFKGNvdW50LCAx KTsKKyAgICAgICAgIFFWRVJJRlkoIXRocmVhZHMuY29udGFpbnMoUVRocmVhZDo6Y3VycmVudFRo cmVhZCgpKSk7CisgICAgIH0KK0BAIC00MDAsNiArNDM3LDcgQEAgcHVibGljOgorIAorIHZvaWQg dHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6ZXhjZXB0aW9ucygpCisgeworKyAgICAvLyBB c3luY2hyb25vdXMgbW9kZToKKyAgICAgeworICAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsK KyAgICAgICAgIHRyeSAgeworQEAgLTQxMiw2ICs0NTAsMzIgQEAgdm9pZCB0c3RfUXRDb25jdXJy ZW50VGhyZWFkRW5naW5lOjpleGNlcHRpb25zKCkKKyAgICAgICAgIFFWRVJJRlkyKGNhdWdodCwg ImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworICAgICB9CisgCisrICAgIC8vIEJsb2NraW5nIG1v ZGU6CisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIGEgd29ya2VyIHRo cmVhZC4KKysgICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRy eSAgeworKyAgICAgICAgICAgIFF0Q29uY3VycmVudEV4Y2VwdGlvblRocm93ZXIgZShRVGhyZWFk OjpjdXJyZW50VGhyZWFkKCkpOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9ja2luZygpOworKyAg ICAgICAgfSBjYXRjaCAoY29uc3QgUUV4Y2VwdGlvbiAmKSB7CisrICAgICAgICAgICAgY2F1Z2h0 ID0gdHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3Qg Z2V0IGV4Y2VwdGlvbiIpOworKyAgICB9CisrCisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4 Y2VwdGlvbiBmcm9tIHRoZSBtYWluIHRocmVhZCAoZGlmZmVyZW50IGNvZGUgcGF0aCkKKysgICAg eworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAgeworKyAgICAg ICAgICAgIFF0Q29uY3VycmVudEV4Y2VwdGlvblRocm93ZXIgZSgwKTsKKysgICAgICAgICAgICBl LnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFFeGNlcHRpb24gJikg eworKyAgICAgICAgICAgIGNhdWdodCA9IHRydWU7CisrICAgICAgICB9CisrICAgICAgICBRVkVS SUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKysgICAgfQorKworKyAgICAv LyBBc3luY2hyb25vdXMgbW9kZToKKyAgICAgeworICAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxz ZTsKKyAgICAgICAgIHRyeSAgeworQEAgLTQyMyw2ICs0ODcsMzEgQEAgdm9pZCB0c3RfUXRDb25j dXJyZW50VGhyZWFkRW5naW5lOjpleGNlcHRpb25zKCkKKyAgICAgICAgIH0KKyAgICAgICAgIFFW RVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworICAgICB9CisrCisrICAg IC8vIEJsb2NraW5nIG1vZGU6CisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBm cm9tIGEgd29ya2VyIHRocmVhZC4KKysgICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxz ZTsKKysgICAgICAgIHRyeSAgeworKyAgICAgICAgICAgIFVucmVsYXRlZEV4Y2VwdGlvblRocm93 ZXIgZShRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkpOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9j a2luZygpOworKyAgICAgICAgfSBjYXRjaCAoY29uc3QgUVVuaGFuZGxlZEV4Y2VwdGlvbiAmKSB7 CisrICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIFFWRVJJ RlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworKyAgICB9CisrCisrICAgIC8v IHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZSBtYWluIHRocmVhZCAoZGlmZmVy ZW50IGNvZGUgcGF0aCkKKysgICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysg ICAgICAgIHRyeSAgeworKyAgICAgICAgICAgIFVucmVsYXRlZEV4Y2VwdGlvblRocm93ZXIgZSgw KTsKKysgICAgICAgICAgICBlLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNv bnN0IFFVbmhhbmRsZWRFeGNlcHRpb24gJikgeworKyAgICAgICAgICAgIGNhdWdodCA9IHRydWU7 CisrICAgICAgICB9CisrICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNl cHRpb24iKTsKKysgICAgfQorIH0KKyAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVz dHMvYXV0by9jb3JlbGliL2lvL3FidWZmZXIvdHN0X3FidWZmZXIuY3BwIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vY29yZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcAoraW5kZXggNDk2ODc0MjEx MC4uZjRjM2ZiNzExZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8v cWJ1ZmZlci90c3RfcWJ1ZmZlci5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIv aW8vcWJ1ZmZlci90c3RfcWJ1ZmZlci5jcHAKK0BAIC00Miw2ICs0Miw3IEBAIHByaXZhdGUgc2xv dHM6CisgICAgIHZvaWQgd3JpdGVCbG9ja19kYXRhKCk7CisgICAgIHZvaWQgd3JpdGVCbG9jaygp OworICAgICB2b2lkIHNlZWsoKTsKKysgICAgdm9pZCBpbnZhbGlkU2Vla3MoKTsKKyAgICAgdm9p ZCBzZWVrVGVzdF9kYXRhKCk7CisgICAgIHZvaWQgc2Vla1Rlc3QoKTsKKyAgICAgdm9pZCByZWFk X3Jhd2RhdGEoKTsKK0BAIC0yODYsNiArMjg3LDI5IEBAIHZvaWQgdHN0X1FCdWZmZXI6OnNlZWso KQorICAgICBRQ09NUEFSRShidWZmZXIuc2l6ZSgpLCBwb3MpOworIH0KKyAKKyt2b2lkIHRzdF9R QnVmZmVyOjppbnZhbGlkU2Vla3MoKQorK3sKKysgICAgaWYgY29uc3RleHByIChzaXplb2YocXNp emV0eXBlKSA9PSBzaXplb2YocWludDY0KSkgeworKyAgICAgICAgLy8gc2l6ZW9mKHFzaXpldHlw ZSkgPT0gc2l6ZW9mKHFpbnQ2NCksIHNvICsxIHdvdWxkIG92ZXJmbG93CisrICAgICAgICBRU0tJ UCgiVGhpcyBpcyBhIDMyLWJpdC1vbmx5IHRlc3QuIik7CisrICAgIH0gZWxzZSB7CisrICAgICAg ICBRQnVmZmVyIGJ1ZmZlcjsKKysgICAgICAgIGJ1ZmZlci5vcGVuKFFJT0RldmljZTo6V3JpdGVP bmx5KTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCksIHFzaXpldHlw ZSgwKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgwKSk7CisrICAg ICAgICBjb25zdGV4cHIgcWludDY0IE1heFFCeXRlQXJyYXlDYXBhY2l0eSA9IChzdGQ6Om51bWVy aWNfbGltaXRzPHFzaXpldHlwZT46Om1heCkoKTsKKysgICAgICAgIC8vIHRoaXMgc2hvdWxkIGZh aWwgZmFzdCwgbm90IGFmdGVyIHRyeWluZyB0byBhbGxvY2F0ZSBuZWFybHkgMiBHaUIgb2YgZGF0 YSwKKysgICAgICAgIC8vIHBvdGVudGlhbGx5IGNyYXNoaW5nIGluIHRoZSBwcm9jZXNzOgorKyAg ICAgICAgUVZFUklGWSghYnVmZmVyLnNlZWsoMiAqIE1heFFCeXRlQXJyYXlDYXBhY2l0eSAtIDEp KTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCksIHFzaXpldHlwZSgw KSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgwKSk7CisrICAgICAg ICAvLyBkaXR0bzoKKysgICAgICAgIFFWRVJJRlkoIWJ1ZmZlci5zZWVrKE1heFFCeXRlQXJyYXlD YXBhY2l0eSArIDEpKTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCks IHFzaXpldHlwZSgwKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgw KSk7CisrICAgIH0KKyt9CisrCisgdm9pZCB0c3RfUUJ1ZmZlcjo6c2Vla1Rlc3RfZGF0YSgpCisg eworICAgICB3cml0ZUJsb2NrX2RhdGEoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNwcCBiL3F0YmFzZS90ZXN0cy9h dXRvL2NvcmVsaWIvaW8vcWlvZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwCitpbmRleCBkYTUzMjc1 OTRjLi40YTA0ZTBmN2M2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9p by9xaW9kZXZpY2UvdHN0X3Fpb2RldmljZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2Nv cmVsaWIvaW8vcWlvZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwCitAQCAtNTYxLDcgKzU2MSw4IEBA IHByb3RlY3RlZDoKKyAgICAgcWludDY0IHJlYWREYXRhKGNoYXIgKmRhdGEsIHFpbnQ2NCBtYXhT aXplKSBvdmVycmlkZQorICAgICB7CisgICAgICAgICBtYXhTaXplID0gcU1pbihtYXhTaXplLCBx aW50NjQoYnVmLT5zaXplKCkgLSBvZmZzZXQpKTsKKy0gICAgICAgIG1lbWNweShkYXRhLCBidWYt PmNvbnN0RGF0YSgpICsgb2Zmc2V0LCBtYXhTaXplKTsKKysgICAgICAgIGlmIChtYXhTaXplID4g MCkKKysgICAgICAgICAgICBtZW1jcHkoZGF0YSwgYnVmLT5jb25zdERhdGEoKSArIG9mZnNldCwg bWF4U2l6ZSk7CisgICAgICAgICBvZmZzZXQgKz0gbWF4U2l6ZTsKKyAgICAgICAgIHJldHVybiBt YXhTaXplOworICAgICB9CitAQCAtNjA0LDEzICs2MDUsMTUgQEAgcHJvdGVjdGVkOgorICAgICBx aW50NjQgcmVhZERhdGEoY2hhciAqZGF0YSwgcWludDY0IG1heFNpemUpIG92ZXJyaWRlCisgICAg IHsKKyAgICAgICAgIG1heFNpemUgPSBxTWluKG1heFNpemUsIHFpbnQ2NChidWYuc2l6ZSgpIC0g cG9zKCkpKTsKKy0gICAgICAgIG1lbWNweShkYXRhLCBidWYuY29uc3REYXRhKCkgKyBwb3MoKSwg bWF4U2l6ZSk7CisrICAgICAgICBpZiAobWF4U2l6ZSA+IDApCisrICAgICAgICAgICAgbWVtY3B5 KGRhdGEsIGJ1Zi5jb25zdERhdGEoKSArIHBvcygpLCBtYXhTaXplKTsKKyAgICAgICAgIHJldHVy biBtYXhTaXplOworICAgICB9CisgICAgIHFpbnQ2NCB3cml0ZURhdGEoY29uc3QgY2hhciAqZGF0 YSwgcWludDY0IG1heFNpemUpIG92ZXJyaWRlCisgICAgIHsKKyAgICAgICAgIG1heFNpemUgPSBx TWluKG1heFNpemUsIHFpbnQ2NChidWYuc2l6ZSgpIC0gcG9zKCkpKTsKKy0gICAgICAgIG1lbWNw eShidWYuZGF0YSgpICsgcG9zKCksIGRhdGEsIG1heFNpemUpOworKyAgICAgICAgaWYgKG1heFNp emUgPiAwKQorKyAgICAgICAgICAgIG1lbWNweShidWYuZGF0YSgpICsgcG9zKCksIGRhdGEsIG1h eFNpemUpOworICAgICAgICAgcmV0dXJuIG1heFNpemU7CisgICAgIH0KKyAKK2RpZmYgLS1naXQg YS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAg Yi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAK K2luZGV4IGRiNjBiZWFkNjQuLmYzNDVhNDQ0MTQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMv YXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAKKysrKyBiL3F0YmFzZS90 ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcXByb2Nlc3MvdHN0X3Fwcm9jZXNzLmNwcAorQEAgLTEsNyAr MSw4IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorICoqIENvcHlyaWdodCAoQykgMjAy MSBUaGUgUXQgQ29tcGFueSBMdGQuCistKiogQ29weXJpZ2h0IChDKSAyMDIwIEludGVsIENvcnBv cmF0aW9uLgorKyoqIENvcHlyaWdodCAoQykgMjAyMCBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiog Q29weXJpZ2h0IChDKSAyMDIyIEludGVsIENvcnBvcmF0aW9uLgorICoqIENvbnRhY3Q6IGh0dHBz Oi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTE1MCw2ICsxNTEsOCBAQCBwcml2 YXRlIHNsb3RzOgorICAgICB2b2lkIHN0YXJ0U3RvcFN0YXJ0U3RvcEJ1ZmZlcnMoKTsKKyAgICAg dm9pZCBwcm9jZXNzRXZlbnRzSW5BUmVhZHlSZWFkU2xvdF9kYXRhKCk7CisgICAgIHZvaWQgcHJv Y2Vzc0V2ZW50c0luQVJlYWR5UmVhZFNsb3QoKTsKKysgICAgdm9pZCBzdGFydEZyb21DdXJyZW50 V29ya2luZ0Rpcl9kYXRhKCk7CisrICAgIHZvaWQgc3RhcnRGcm9tQ3VycmVudFdvcmtpbmdEaXIo KTsKKyAKKyAgICAgLy8ga2VlcCB0aGVzZSBhdCB0aGUgZW5kLCBzaW5jZSB0aGV5IHVzZSBsb3Rz IG9mIHByb2Nlc3NlcyBhbmQgc29tZXRpbWVzCisgICAgIC8vIGNhdXNlZCBvYnNjdXJlIGZhaWx1 cmVzIHRvIG9jY3VyIGluIHRlc3RzIHRoYXQgZm9sbG93ZWQgdGhlbSAoZXNwLiBvbiB0aGUgTWFj KQorQEAgLTI3MzEsNSArMjczNCw5NCBAQCB2b2lkIHRzdF9RUHJvY2Vzczo6ZmluaXNoUHJvY2Vz c0JlZm9yZVJlYWRpbmdEb25lX2RlcHJlY2F0ZWQoKQorIAorICNlbmRpZgorIAorK2VudW0gY2xh c3MgQ2hkaXJNb2RlIHsKKysgICAgTm9uZSA9IDAsCisrICAgIEluUGFyZW50LAorKyAgICBJbkNo aWxkCisrfTsKKytRX0RFQ0xBUkVfTUVUQVRZUEUoQ2hkaXJNb2RlKQorKworK3ZvaWQgdHN0X1FQ cm9jZXNzOjpzdGFydEZyb21DdXJyZW50V29ya2luZ0Rpcl9kYXRhKCkKKyt7CisrICAgIHFSZWdp c3Rlck1ldGFUeXBlPENoZGlyTW9kZT4oKTsKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxRU3RyaW5n PigicHJvZ3JhbVByZWZpeCIpOworKyAgICBRVGVzdDo6YWRkQ29sdW1uPENoZGlyTW9kZT4oImNo ZGlyTW9kZSIpOworKyAgICBRVGVzdDo6YWRkQ29sdW1uPGJvb2w+KCJzdWNjZXNzIik7CisrCisr ICAgIGNvbnN0ZXhwciBib29sIElzV2luZG93cyA9IHRydWUKKysjaWZkZWYgUV9PU19VTklYCisr ICAgICAgICAgICAgJiYgZmFsc2UKKysjZW5kaWYKKysgICAgICAgICAgICA7CisrCisrICAgIC8v IGJhc2VsaW5lOiB0cnlpbmcgdG8gZXhlY3V0ZSB0aGUgZGlyZWN0b3J5LCB0aGlzIGNhbid0IHBv c3NpYmx5IHN1Y2NlZWQhCisrICAgIFFUZXN0OjpuZXdSb3coInBsYWluLXNhbWUtY3dkIikgPDwg UVN0cmluZygpIDw8IENoZGlyTW9kZTo6Tm9uZSA8PCBmYWxzZTsKKysKKysgICAgLy8gY3Jvc3Mt cGxhdGZvcm0gYmVoYXZpb3I6IG5laXRoZXIgT1Mgc2VhcmNoZXMgdGhlIHNldFdvcmtpbmdEaXJl Y3RvcnkoKQorKyAgICAvLyBkaXIgd2l0aG91dCAiLi8iCisrICAgIFFUZXN0OjpuZXdSb3coInBs YWluLWNoaWxkLWNoZGlyIikgPDwgUVN0cmluZygpIDw8IENoZGlyTW9kZTo6SW5DaGlsZCA8PCBm YWxzZTsKKysKKysgICAgLy8gY3Jvc3MtcGxhdGZvcm0gYmVoYXZpb3I6IGJvdGggT1NlcyBzZWFy Y2ggdGhlIHBhcmVudCdzIENXRCB3aXRoICIuLyIKKysgICAgUVRlc3Q6Om5ld1JvdygicHJlZml4 ZWQtcGFyZW50LWNoZGlyIikgPDwgIi4vIiA8PCBDaGRpck1vZGU6OkluUGFyZW50IDw8IHRydWU7 CisrCisrICAgIC8vIG9wcG9zaXRlIGJlaGF2aW9yczogV2luZG93cyBzZWFyY2hlcyB0aGUgcGFy ZW50J3MgQ1dEIGFuZCBVbml4IHNlYXJjaGVzCisrICAgIC8vIHRoZSBjaGlsZCdzIHdpdGggIi4v IgorKyAgICBRVGVzdDo6bmV3Um93KCJwcmVmaXhlZC1jaGlsZC1jaGRpciIpIDw8ICIuLyIgPDwg Q2hkaXJNb2RlOjpJbkNoaWxkIDw8ICFJc1dpbmRvd3M7CisrCisrICAgIC8vIFdpbmRvd3Mgc2Vh cmNoZXMgdGhlIHBhcmVudCdzIENXRCB3aXRob3V0ICIuLyIKKysgICAgUVRlc3Q6Om5ld1Jvdygi cGxhaW4tcGFyZW50LWNoZGlyIikgPDwgUVN0cmluZygpIDw8IENoZGlyTW9kZTo6SW5QYXJlbnQg PDwgSXNXaW5kb3dzOworK30KKysKKyt2b2lkIHRzdF9RUHJvY2Vzczo6c3RhcnRGcm9tQ3VycmVu dFdvcmtpbmdEaXIoKQorK3sKKysgICAgUUZFVENIKFFTdHJpbmcsIHByb2dyYW1QcmVmaXgpOwor KyAgICBRRkVUQ0goQ2hkaXJNb2RlLCBjaGRpck1vZGUpOworKyAgICBRRkVUQ0goYm9vbCwgc3Vj Y2Vzcyk7CisrCisrICAgIFFQcm9jZXNzIHByb2Nlc3M7CisrICAgIHFSZWdpc3Rlck1ldGFUeXBl PFFQcm9jZXNzOjpQcm9jZXNzRXJyb3I+KCk7CisrICAgIFFTaWduYWxTcHkgZXJyb3JTcHkoJnBy b2Nlc3MsICZRUHJvY2Vzczo6ZXJyb3JPY2N1cnJlZCk7CisrICAgIFFWRVJJRlkoZXJyb3JTcHku aXNWYWxpZCgpKTsKKysKKysgICAgLy8gYm90aCB0aGUgZGlyIG5hbWUgYW5kIHRoZSBleGVjdXRh YmxlIG5hbWUKKysgICAgY29uc3QgUVN0cmluZyB0YXJnZXQgPSBRU3RyaW5nTGl0ZXJhbCgidGVz dFByb2Nlc3NOb3JtYWwiKTsKKysgICAgcHJvY2Vzcy5zZXRQcm9ncmFtKHByb2dyYW1QcmVmaXgg KyB0YXJnZXQpOworKworKyNpZmRlZiBRX09TX1VOSVgKKysgICAgLy8gUmVzZXQgUEFUSCwgdG8g YmUgc3VyZSBpdCBkb2Vzbid0IGNvbnRhaW4gLiBvciB0aGUgZW1wdHkgcGF0aC4KKysgICAgLy8g V2UgY2FuJ3QgZG8gdGhpcyBvbiBXaW5kb3dzIGJlY2F1c2UgRExMcyBhcmUgc2VhcmNoZWQgaW4g UEFUSAorKyAgICAvLyBhbmQgV2luZG93cyBhbHdheXMgc2VhcmNoZXMgIi4iIGFueXdheS4KKysg ICAgYXV0byByZXN0b3JlRW52ID0gcVNjb3BlR3VhcmQoW29sZCA9IHFnZXRlbnYoIlBBVEgiKV0g eworKyAgICAgICAgcXB1dGVudigiUEFUSCIsIG9sZCk7CisrICAgIH0pOworKyAgICBxcHV0ZW52 KCJQQVRIIiwgIi8iKTsKKysjZW5kaWYKKysKKysgICAgc3dpdGNoIChjaGRpck1vZGUpIHsKKysg ICAgY2FzZSBDaGRpck1vZGU6OkluUGFyZW50OiB7CisrICAgICAgICBhdXRvIHJlc3RvcmVDd2Qg PSBxU2NvcGVHdWFyZChbb2xkID0gUURpcjo6Y3VycmVudFBhdGgoKV0geworKyAgICAgICAgICAg IFFEaXI6OnNldEN1cnJlbnQob2xkKTsKKysgICAgICAgIH0pOworKyAgICAgICAgUVZFUklGWShR RGlyOjpzZXRDdXJyZW50KHRhcmdldCkpOworKyAgICAgICAgcHJvY2Vzcy5zdGFydCgpOworKyAg ICAgICAgYnJlYWs7CisrICAgIH0KKysgICAgY2FzZSBDaGRpck1vZGU6OkluQ2hpbGQ6CisrICAg ICAgICBwcm9jZXNzLnNldFdvcmtpbmdEaXJlY3RvcnkodGFyZ2V0KTsKKysgICAgICAgIFFfRkFM TFRIUk9VR0goKTsKKysgICAgY2FzZSBDaGRpck1vZGU6Ok5vbmU6CisrICAgICAgICBwcm9jZXNz LnN0YXJ0KCk7CisrICAgICAgICBicmVhazsKKysgICAgfQorKworKyAgICBRQ09NUEFSRShwcm9j ZXNzLndhaXRGb3JTdGFydGVkKCksIHN1Y2Nlc3MpOworKyAgICBRQ09NUEFSRShlcnJvclNweS5j b3VudCgpLCBpbnQoIXN1Y2Nlc3MpKTsKKysgICAgaWYgKHN1Y2Nlc3MpIHsKKysgICAgICAgIFFW RVJJRlkocHJvY2Vzcy53YWl0Rm9yRmluaXNoZWQoKSk7CisrICAgIH0gZWxzZSB7CisrICAgICAg ICBRQ09NUEFSRShwcm9jZXNzLmVycm9yKCksIFFQcm9jZXNzOjpGYWlsZWRUb1N0YXJ0KTsKKysg ICAgfQorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RUHJvY2VzcykKKyAjaW5jbHVkZSAidHN0X3Fw cm9jZXNzLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0ZW1t b2RlbHMvcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFibGVz cHJveHltb2RlbC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNv bmNhdGVuYXRldGFibGVzcHJveHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2Rl bC5jcHAKK2luZGV4IGUxZWE3YTQ1NTIuLjkwOTcyY2FhNTcgMTAwNjQ0CistLS0gYS9xdGJhc2Uv dGVzdHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2Rl bC90c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0 cy9hdXRvL2NvcmVsaWIvaXRlbW1vZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsL3Rz dF9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsLmNwcAorQEAgLTExNyw2ICsxMTcsNyBAQCBw cml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgc2hvdWxkUHJvcGFnYXRlRHJvcEFmdGVyTGFzdFJv d19kYXRhKCk7CisgICAgIHZvaWQgc2hvdWxkUHJvcGFnYXRlRHJvcEFmdGVyTGFzdFJvdygpOwor ICAgICB2b2lkIHF0YnVnOTE3ODgoKTsKKysgICAgdm9pZCBxdGJ1ZzkxODc4KCk7CisgCisgcHJp dmF0ZToKKyAgICAgUVN0YW5kYXJkSXRlbU1vZGVsIG1vZDsKK0BAIC04NDMsNiArODQ0LDIyIEBA IHZvaWQgdHN0X1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWw6OnF0YnVnOTE3ODgoKQorICAg ICBRQ09NUEFSRShwcm94eUNvbmNhdC5jb2x1bW5Db3VudCgpLCAwKTsKKyB9CisgCisrdm9pZCB0 c3RfUUNvbmNhdGVuYXRlVGFibGVzUHJveHlNb2RlbDo6cXRidWc5MTg3OCgpCisreworKyAgICBR U3RhbmRhcmRJdGVtTW9kZWwgbTsKKysgICAgbS5zZXRSb3dDb3VudCg0KTsKKysgICAgbS5zZXRD b2x1bW5Db3VudCg0KTsKKysKKysgICAgUUNvbmNhdGVuYXRlVGFibGVzUHJveHlNb2RlbCBwbTsK KysgICAgUVNvcnRGaWx0ZXJQcm94eU1vZGVsIHByb3h5RmlsdGVyOworKyAgICBwcm94eUZpbHRl ci5zZXRTb3VyY2VNb2RlbCgmcG0pOworKyAgICBwcm94eUZpbHRlci5zZXRGaWx0ZXJGaXhlZFN0 cmluZygic29tZXRoaW5nIik7CisrICAgIHBtLmFkZFNvdXJjZU1vZGVsKCZtKTsgIC8vIFRoaXMg c2hvdWxkIG5vdCBhc3NlcnQKKysKKysgICAgUUNPTVBBUkUocG0uY29sdW1uQ291bnQoKSwgNCk7 CisrICAgIFFDT01QQVJFKHBtLnJvd0NvdW50KCksIDQpOworK30KKysKKyBRVEVTVF9HVUlMRVNT X01BSU4odHN0X1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWwpCisgCisgI2luY2x1ZGUgInRz dF9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2Uv dGVzdHMvYXV0by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0LmNwcCBiL3F0YmFz ZS90ZXN0cy9hdXRvL2NvcmVsaWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3BwCitpbmRl eCA5YmQ2NmMwODM1Li5lZDRhMGJhZTVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8v Y29yZWxpYi9rZXJuZWwvcW9iamVjdC90c3RfcW9iamVjdC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0 cy9hdXRvL2NvcmVsaWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3BwCitAQCAtMTU4LDYg KzE1OCw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgbnVsbFJlY2VpdmVyKCk7CisgICAg IHZvaWQgZnVuY3RvclJlZmVyZW5jZXNDb25uZWN0aW9uKCk7CisgICAgIHZvaWQgZGlzY29ubmVj dERpc2Nvbm5lY3RzKCk7CisrICAgIHZvaWQgZGVjbGFyYXRpdmVEYXRhKCk7CisgfTsKKyAKKyBz dHJ1Y3QgUU9iamVjdENyZWF0ZWRPblNodXRkb3duCitAQCAtNzY3OSw1ICs3NjgwLDgxIEBAIHZv aWQgdHN0X1FPYmplY3Q6OmRpc2Nvbm5lY3REaXNjb25uZWN0cygpCisgUV9TVEFUSUNfQVNTRVJU KFF0UHJpdmF0ZTo6SGFzUV9PQkpFQ1RfTWFjcm88dHN0X1FPYmplY3Q+OjpWYWx1ZSk7CisgUV9T VEFUSUNfQVNTRVJUKCFRdFByaXZhdGU6Okhhc1FfT0JKRUNUX01hY3JvPFNpYmxpbmdEZWxldGVy Pjo6VmFsdWUpOworIAorKyNpZmRlZiBRVF9CVUlMRF9JTlRFUk5BTAorKy8qCisrICAgIFNpbmNl IFFPYmplY3RQcml2YXRlIHN0b3JlcyB0aGUgZGVjbGFyYXRpdmVEYXRhIHBvaW50ZXIgaW4gYSB1 bmlvbiB3aXRoIHRoZSBwb2ludGVyCisrICAgIHRvIHRoZSBjdXJyZW50bHkgZGVzdHJveWVkIGNo aWxkLCBjYWxscyB0byB0aGUgUXREZWNsYXJhdGl2ZSBoYW5kbGVycyBuZWVkIHRvIGJlCisrICAg IGNvcnJlY3RseSBndWFyZGVkLiBRVEJVRy0xMDUyODYKKysqLworK25hbWVzcGFjZSBRdERlY2xh cmF0aXZlIHsKKytzdGF0aWMgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICp0aGVEYXRhOworKwor K3N0YXRpYyB2b2lkIGRlc3Ryb3llZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKmRhdGEsIFFP YmplY3QgKikKKyt7CisrICAgIFFDT01QQVJFKGRhdGEsIHRoZURhdGEpOworK30KKytzdGF0aWMg dm9pZCBzaWduYWxFbWl0dGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgUU9iamVj dCAqLCBpbnQsIHZvaWQgKiopCisreworKyAgICBRQ09NUEFSRShkYXRhLCB0aGVEYXRhKTsKKyt9 CisrLy8gd2UgY2FuJ3QgdXNlIFFDT01QQVJFIGluIHRoZSBuZXh0IHR3byBmdW5jdGlvbnMsIGFz IHRoZXkgZG9uJ3QgcmV0dXJuIHZvaWQKKytzdGF0aWMgaW50IHJlY2VpdmVycyhRQWJzdHJhY3RE ZWNsYXJhdGl2ZURhdGEgKmRhdGEsIGNvbnN0IFFPYmplY3QgKiwgaW50KQorK3sKKysgICAgUVRl c3Q6OnFDb21wYXJlKGRhdGEsIHRoZURhdGEsICJkYXRhIiwgInRoZURhdGEiLCBfX0ZJTEVfXywg X19MSU5FX18pOworKyAgICByZXR1cm4gMDsKKyt9Cisrc3RhdGljIGJvb2wgaXNTaWduYWxDb25u ZWN0ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICpkYXRhLCBjb25zdCBRT2JqZWN0ICosIGlu dCkKKyt7CisrICAgIFFUZXN0OjpxQ29tcGFyZShkYXRhLCB0aGVEYXRhLCAiZGF0YSIsICJ0aGVE YXRhIiwgX19GSUxFX18sIF9fTElORV9fKTsKKysgICAgcmV0dXJuIHRydWU7CisrfQorKworK2Ns YXNzIE9iamVjdCA6IHB1YmxpYyBRT2JqZWN0CisreworKyAgICBRX09CSkVDVAorK3B1YmxpYzoK KysgICAgdXNpbmcgUU9iamVjdDo6UU9iamVjdDsKKysgICAgfk9iamVjdCgpCisrICAgIHsKKysg ICAgICAgIGlmIChPYmplY3QgKnAgPSBzdGF0aWNfY2FzdDxPYmplY3QgKj4ocGFyZW50KCkpKQor KyAgICAgICAgICAgIHAtPmVtaXRTaWduYWwoKTsKKysgICAgfQorKworKyAgICB2b2lkIGVtaXRT aWduYWwoKQorKyAgICB7CisrICAgICAgICBlbWl0IHRoZVNpZ25hbCgpOworKyAgICB9CisrCisr c2lnbmFsczoKKysgICAgdm9pZCB0aGVTaWduYWwoKTsKKyt9OworKworK30KKysjZW5kaWYKKysK Kyt2b2lkIHRzdF9RT2JqZWN0OjpkZWNsYXJhdGl2ZURhdGEoKQorK3sKKysjaWZkZWYgUVRfQlVJ TERfSU5URVJOQUwKKysgICAgUVNjb3BlZFZhbHVlUm9sbGJhY2sgZGVzdHJveWVkKFFBYnN0cmFj dERlY2xhcmF0aXZlRGF0YTo6ZGVzdHJveWVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUXREZWNsYXJhdGl2ZTo6ZGVzdHJveWVkKTsKKysgICAgUVNjb3BlZFZhbHVlUm9s bGJhY2sgc2lnbmFsRW1pdHRlZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnNpZ25hbEVtaXR0 ZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXREZWNsYXJhdGl2 ZTo6c2lnbmFsRW1pdHRlZCk7CisrICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNrIHJlY2VpdmVycyhR QWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycywKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFF0RGVjbGFyYXRpdmU6OnJlY2VpdmVycyk7CisrICAgIFFTY29wZWRW YWx1ZVJvbGxiYWNrIGlzU2lnbmFsQ29ubmVjdGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6 aXNTaWduYWxDb25uZWN0ZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFF0RGVjbGFyYXRpdmU6OmlzU2lnbmFsQ29ubmVjdGVkKTsKKysKKysgICAgUXREZWNs YXJhdGl2ZTo6T2JqZWN0IHA7CisrICAgIFFPYmplY3RQcml2YXRlICpwcml2ID0gUU9iamVjdFBy aXZhdGU6OmdldCgmcCk7CisrICAgIHByaXYtPmRlY2xhcmF0aXZlRGF0YSA9IFF0RGVjbGFyYXRp dmU6OnRoZURhdGEgPSBuZXcgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOworKworKyAgICBjb25u ZWN0KCZwLCAmUXREZWNsYXJhdGl2ZTo6T2JqZWN0Ojp0aGVTaWduYWwsICZwLCBbXXsKKysgICAg fSk7CisrCisrICAgIFF0RGVjbGFyYXRpdmU6Ok9iamVjdCAqY2hpbGQgPSBuZXcgUXREZWNsYXJh dGl2ZTo6T2JqZWN0OworKyAgICBjaGlsZC0+c2V0UGFyZW50KCZwKTsKKysjZW5kaWYKKyt9Cisr CisgUVRFU1RfTUFJTih0c3RfUU9iamVjdCkKKyAjaW5jbHVkZSAidHN0X3FvYmplY3QubW9jIgor ZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0 YWJhc2UvdHN0X3FtaW1lZGF0YWJhc2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9t aW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAKK2luZGV4IDBlYTQy MmVjYmMuLjFhMzI1NjUzNGIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGli L21pbWV0eXBlcy9xbWltZWRhdGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNwcAorKysrIGIvcXRi YXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3RfcW1pbWVk YXRhYmFzZS5jcHAKK0BAIC03MCwxNSArNzAsMTUgQEAgc3RhdGljIGlubGluZSBRU3RyaW5nIHRl c3RTdWl0ZVdhcm5pbmcoKQorIAorICAgICBRU3RyaW5nIHJlc3VsdDsKKyAgICAgUVRleHRTdHJl YW0gc3RyKCZyZXN1bHQpOworLSAgICBzdHIgPDwgIlxuQ2Fubm90IGZpbmQgdGhlIHNoYXJlZC1t aW1lLWluZm8gdGVzdCBzdWl0ZVxuc3RhcnRpbmcgZnJvbTogIgorKyAgICBzdHIgPDwgIlxuQ2Fu bm90IGZpbmQgdGhlIHNoYXJlZC1taW1lLWluZm8gdGVzdCBzdWl0ZVxuaW4gdGhlIHBhcmVudCBv ZjogIgorICAgICAgICAgPDwgUURpcjo6dG9OYXRpdmVTZXBhcmF0b3JzKFFEaXI6OmN1cnJlbnRQ YXRoKCkpIDw8ICJcbiIKKyAgICAgICAgICAgICJjZCAiIDw8IFFEaXI6OnRvTmF0aXZlU2VwYXJh dG9ycyhRU3RyaW5nTGl0ZXJhbCgidGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRh dGFiYXNlIikpIDw8ICJcbiIKKy0gICAgICAgICAgICJ3Z2V0IGh0dHA6Ly9jZ2l0LmZyZWVkZXNr dG9wLm9yZy94ZGcvc2hhcmVkLW1pbWUtaW5mby9zbmFwc2hvdC9SZWxlYXNlLTEtMTAuemlwXG4i CistICAgICAgICAgICAidW56aXAgUmVsZWFzZS0xLTEwLnppcFxuIjsKKysgICAgICAgICAgICJ3 Z2V0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy94ZGcvc2hhcmVkLW1pbWUtaW5mby8t L2FyY2hpdmUvMi4xL3NoYXJlZC1taW1lLWluZm8tMi4xLnppcFxuIgorKyAgICAgICAgICAgInVu emlwIHNoYXJlZC1taW1lLWluZm8tMi4xLnppcFxuIjsKKyAjaWZkZWYgUV9PU19XSU4KKy0gICAg c3RyIDw8ICJta2RpciB0ZXN0ZmlsZXNcbnhjb3B5IC9zIFJlbGVhc2UtMS0xMCBzLW0taVxuIjsK KysgICAgc3RyIDw8ICJta2RpciB0ZXN0ZmlsZXNcbnhjb3B5IC9zIHNoYXJlZC1taW1lLWluZm8t Mi4xIHMtbS1pXG4iOworICNlbHNlCistICAgIHN0ciA8PCAibG4gLXMgUmVsZWFzZS0xLTEwIHMt bS1pXG4iOworKyAgICBzdHIgPDwgImxuIC1zIHNoYXJlZC1taW1lLWluZm8tMi4xIHMtbS1pXG4i OworICNlbmRpZgorICAgICByZXR1cm4gcmVzdWx0OworIH0KK0BAIC0xNTQsNyArMTU0LDcgQEAg dm9pZCB0c3RfUU1pbWVEYXRhYmFzZTo6aW5pdFRlc3RDYXNlKCkKKyAgICAgUVZFUklGWTIoY29w eVJlc291cmNlRmlsZSh4bWxGaWxlTmFtZSwgeG1sVGFyZ2V0RmlsZU5hbWUsICZlcnJvck1lc3Nh Z2UpLCBxUHJpbnRhYmxlKGVycm9yTWVzc2FnZSkpOworICNlbmRpZgorIAorLSAgICBtX3Rlc3RT dWl0ZSA9IFFGSU5EVEVTVERBVEEoInMtbS1pL3Rlc3RzIik7CisrICAgIG1fdGVzdFN1aXRlID0g UUZJTkRURVNUREFUQSgicy1tLWkvdGVzdHMvbWltZS1kZXRlY3Rpb24iKTsKKyAgICAgaWYgKG1f dGVzdFN1aXRlLmlzRW1wdHkoKSkKKyAgICAgICAgIHFXYXJuaW5nKCIlcyIsIHFQcmludGFibGUo dGVzdFN1aXRlV2FybmluZygpKSk7CisgCitAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgdHN0X1FN aW1lRGF0YWJhc2U6OmFsbE1pbWVUeXBlcygpCisgICAgIFFWRVJJRlkoIWxzdC5pc0VtcHR5KCkp OworIAorICAgICAvLyBIYXJkY29kaW5nIHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGNoZWNrIGJv dGggcHJvdmlkZXJzIGZpbmQgdGhlIHNhbWUgbnVtYmVyIG9mIG1pbWV0eXBlcy4KKy0gICAgUUNP TVBBUkUobHN0LmNvdW50KCksIDc3OSk7CisrICAgIFFDT01QQVJFKGxzdC5jb3VudCgpLCA4MTEp OworIAorICAgICBmb3JlYWNoIChjb25zdCBRTWltZVR5cGUgJm1pbWUsIGxzdCkgeworICAgICAg ICAgY29uc3QgUVN0cmluZyBuYW1lID0gbWltZS5uYW1lKCk7CitAQCAtNjMxLDEwICs2MzEsOSBA QCB2b2lkIHRzdF9RTWltZURhdGFiYXNlOjpzdWZmaXhlc19kYXRhKCkKKyAKKyAgICAgUVRlc3Q6 Om5ld1JvdygibWltZXR5cGUgd2l0aCBhIHNpbmdsZSBwYXR0ZXJuIikgPDwgImFwcGxpY2F0aW9u L3BkZiIgPDwgIioucGRmIiA8PCAicGRmIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygibWltZXR5cGUg d2l0aCBtdWx0aXBsZSBwYXR0ZXJucyIpIDw8ICJhcHBsaWNhdGlvbi94LWtwcmVzZW50ZXIiIDw8 ICIqLmtwcjsqLmtwdCIgPDwgImtwciI7CistICAgIFFUZXN0OjpuZXdSb3coImpwZWciKSA8PCAi aW1hZ2UvanBlZyIgPDwgIiouanBlOyouanBnOyouanBlZyIgPDwgImpwZWciOworLSAgICAvL2lm IChLTWltZVR5cGU6OnNoYXJlZE1pbWVJbmZvVmVyc2lvbigpID4gS0RFX01BS0VfVkVSU0lPTigw LCA2MCwgMCkpIHsKKy0gICAgICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggbWFueSBw YXR0ZXJucyIpIDw8ICJhcHBsaWNhdGlvbi92bmQud29yZHBlcmZlY3QiIDw8ICIqLndwOyoud3A0 Oyoud3A1Oyoud3A2Oyoud3BkOyoud3BwIiA8PCAid3AiOworLSAgICAvL30KKysgICAgLy8gVGhl IHByZWZlcnJlZCBzdWZmaXggZm9yIGltYWdlL2pwZWcgaXMgKi5qcGcsIGFzIHBlciBodHRwczov L2J1Z3Mua2RlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NzM3CisrICAgIFFUZXN0OjpuZXdSb3co ImpwZWciKSA8PCAiaW1hZ2UvanBlZyIgPDwgIiouanBlOyouanBnOyouanBlZyIgPDwgImpwZyI7 CisrICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggbWFueSBwYXR0ZXJucyIpIDw8ICJh cHBsaWNhdGlvbi92bmQud29yZHBlcmZlY3QiIDw8ICIqLndwOyoud3A0Oyoud3A1Oyoud3A2Oyou d3BkOyoud3BwIiA8PCAid3AiOworICAgICBRVGVzdDo6bmV3Um93KCJvYXNpcyB0ZXh0IG1pbWV0 eXBlIikgPDwgImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dCIgPDwgIiou b2R0IiA8PCAib2R0IjsKKyAgICAgUVRlc3Q6Om5ld1Jvdygib2FzaXMgcHJlc2VudGF0aW9uIG1p bWV0eXBlIikgPDwgImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0 aW9uIiA8PCAiKi5vZHAiIDw8ICJvZHAiOworICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3 aXRoIG11bHRpcGxlIHBhdHRlcm5zIikgPDwgInRleHQvcGxhaW4iIDw8ICIqLmFzYzsqLnR4dDsq LHYiIDw8ICJ0eHQiOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvc2Vy aWFsaXphdGlvbi9qc29uL3RzdF9xdGpzb24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxp Yi9zZXJpYWxpemF0aW9uL2pzb24vdHN0X3F0anNvbi5jcHAKK2luZGV4IDNlNThkZDAzY2MuLmM4 ZjgyZWY1ZDUgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3NlcmlhbGl6 YXRpb24vanNvbi90c3RfcXRqc29uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxp Yi9zZXJpYWxpemF0aW9uL2pzb24vdHN0X3F0anNvbi5jcHAKK0BAIC0xNzYsNiArMTc2LDggQEAg cHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIGZyb21Ub1ZhcmlhbnRDb252ZXJzaW9uc19kYXRh KCk7CisgICAgIHZvaWQgZnJvbVRvVmFyaWFudENvbnZlcnNpb25zKCk7CisgCisrICAgIHZvaWQg bm9MZWFrT25OYW1lQ2xhc2goKTsKKysKKyBwcml2YXRlOgorICAgICBRU3RyaW5nIHRlc3REYXRh RGlyOworIH07CitAQCAtMzY4NSw1ICszNjg3LDIzIEBAIHZvaWQgdHN0X1F0SnNvbjo6ZnJvbVRv VmFyaWFudENvbnZlcnNpb25zKCkKKyAgICAgfQorIH0KKyAKKyt2b2lkIHRzdF9RdEpzb246Om5v TGVha09uTmFtZUNsYXNoKCkKKyt7CisrICAgIFFKc29uRG9jdW1lbnQgZG9jID0gUUpzb25Eb2N1 bWVudDo6ZnJvbUpzb24oIntcIlwiOntcIlwiOjB9LFwiXCI6MH0iKTsKKysgICAgUVZFUklGWSgh ZG9jLmlzTnVsbCgpKTsKKysgICAgY29uc3QgUUpzb25PYmplY3Qgb2JqID0gZG9jLm9iamVjdCgp OworKworKyAgICAvLyBSZW1vdmVkIHRoZSBkdXBsaWNhdGUga2V5LgorKyAgICBRQ09NUEFSRShv YmoubGVuZ3RoKCksIDEpOworKworKyAgICAvLyBSZXRhaW5lZCB0aGUgbGFzdCBvZiB0aGUgZHVw bGljYXRlcy4KKysgICAgY29uc3QgUUpzb25WYWx1ZSB2YWwgPSBvYmouYmVnaW4oKS52YWx1ZSgp OworKyAgICBRVkVSSUZZKHZhbC5pc0RvdWJsZSgpKTsKKysgICAgUUNPTVBBUkUodmFsLnRvRG91 YmxlKCksIDAuMCk7CisrCisrICAgIC8vIEl0IHNob3VsZCBub3QgbGVhay4KKysgICAgLy8gSW4g cGFydGljdWxhciBpdCBzaG91bGQgbm90IGZvcmdldCB0byBkZXJlZiB0aGUgY29udGFpbmVyIGZv ciB0aGUgaW5uZXIgb2JqZWN0LgorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RdEpzb24pCisgI2lu Y2x1ZGUgInRzdF9xdGpzb24ubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2Nv cmVsaWIvdGltZS9xdGltZXpvbmUvdHN0X3F0aW1lem9uZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL3RpbWUvcXRpbWV6b25lL3RzdF9xdGltZXpvbmUuY3BwCitpbmRleCBhNTliNThk NTdmLi4yNDFjM2U4NGFjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi90 aW1lL3F0aW1lem9uZS90c3RfcXRpbWV6b25lLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8v Y29yZWxpYi90aW1lL3F0aW1lem9uZS90c3RfcXRpbWV6b25lLmNwcAorQEAgLTYzLDYgKzYzLDcg QEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBpc1ZhbGlkSWRfZGF0YSgpOworICAgICB2b2lk IGlzVmFsaWRJZCgpOworICAgICB2b2lkIG1hbGZvcm1lZCgpOworKyAgICB2b2lkIHNlcmlhbGl6 ZSgpOworICAgICAvLyBCYWNrZW5kIHRlc3RzCisgICAgIHZvaWQgdXRjVGVzdCgpOworICAgICB2 b2lkIGljdVRlc3QoKTsKK0BAIC05NDcsNiArOTQ4LDMzIEBAIHZvaWQgdHN0X1FUaW1lWm9uZTo6 bWFsZm9ybWVkKCkKKyAgICAgICAgIGJhcmYub2Zmc2V0RnJvbVV0Yyhub3cpOworIH0KKyAKKyt2 b2lkIHRzdF9RVGltZVpvbmU6OnNlcmlhbGl6ZSgpCisreworKyAgICBpbnQgcGFydHMgPSAwOwor KyNpZm5kZWYgUVRfTk9fREVCVUdfU1RSRUFNCisrICAgIHFEZWJ1ZygpIDw8IFFUaW1lWm9uZSgp OyAvLyB0byB2ZXJpZnkgbm8gY3Jhc2gKKysgICAgcGFydHMrKzsKKysjZW5kaWYKKysjaWZuZGVm IFFUX05PX0RBVEFTVFJFQU0KKysgICAgUUJ5dGVBcnJheSBibG9iOworKyAgICB7CisrICAgICAg ICBRRGF0YVN0cmVhbSBzdHJlYW0oJmJsb2IsIFFJT0RldmljZTo6V3JpdGVPbmx5KTsKKysgICAg ICAgIHN0cmVhbSA8PCBRVGltZVpvbmUoIkV1cm9wZS9Pc2xvIikgPDwgUVRpbWVab25lKDQyMCkg PDwgUVRpbWVab25lKCkgPDwgcWludDY0KC0xKTsKKysgICAgfQorKyAgICBRRGF0YVN0cmVhbSBz dHJlYW0oJmJsb2IsIFFJT0RldmljZTo6UmVhZE9ubHkpOworKyAgICBRVGltZVpvbmUgaW52YWxp ZCwgb2Zmc2V0LCBvc2xvOworKyAgICBxaW50NjQgbWludXNvbmU7CisrICAgIHN0cmVhbSA+PiBv c2xvID4+IG9mZnNldCA+PiBpbnZhbGlkID4+IG1pbnVzb25lOworKyAgICBRQ09NUEFSRShvc2xv LCBRVGltZVpvbmUoIkV1cm9wZS9Pc2xvIikpOworKyAgICBRQ09NUEFSRShvZmZzZXQsIFFUaW1l Wm9uZSg0MjApKTsKKysgICAgUVZFUklGWSghaW52YWxpZC5pc1ZhbGlkKCkpOworKyAgICBRQ09N UEFSRShtaW51c29uZSwgcWludDY0KC0xKSk7CisrICAgIHBhcnRzKys7CisrI2VuZGlmCisrICAg IGlmICghcGFydHMpCisrICAgICAgICBRU0tJUCgiTm8gc2VyaWFsaXphdGlvbiBlbmFibGVkIik7 CisrfQorKworIHZvaWQgdHN0X1FUaW1lWm9uZTo6dXRjVGVzdCgpCisgeworICNpZmRlZiBRVF9C VUlMRF9JTlRFUk5BTAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMvcWRidXNp bnRlcmZhY2UvdHN0X3FkYnVzaW50ZXJmYWNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMv cWRidXNpbnRlcmZhY2UvdHN0X3FkYnVzaW50ZXJmYWNlLmNwcAoraW5kZXggMDU0ODBjNmRkMi4u NzBmNGM3NTc1NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMvcWRidXNpbnRl cmZhY2UvdHN0X3FkYnVzaW50ZXJmYWNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZGJ1 cy9xZGJ1c2ludGVyZmFjZS90c3RfcWRidXNpbnRlcmZhY2UuY3BwCitAQCAtMzI0LDYgKzMyNCwx MyBAQCB2b2lkIHRzdF9RREJ1c0ludGVyZmFjZTo6bm90VmFsaWQoKQorIAorICAgICBRVkVSSUZZ KCFpbnRlcmZhY2UuaXNWYWxpZCgpKTsKKyAgICAgUVZFUklGWSghUU1ldGFPYmplY3Q6Omludm9r ZU1ldGhvZCgmaW50ZXJmYWNlLCAiTGlzdE5hbWVzIiwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pKTsK KysKKysgICAgLy8gV2l0aCBhIGNvbm5lY3Rpb24sIGJ1dCBlbXB0eS9udWxsIHNlcnZpY2UgYW5k IHBhdGggc3BlY2lmaWVkCisrICAgIFFEQnVzQ29ubmVjdGlvbiBjb24gPSBRREJ1c0Nvbm5lY3Rp b246OnNlc3Npb25CdXMoKTsKKysgICAgUVZFUklGWShjb24uaXNDb25uZWN0ZWQoKSk7CisrICAg IFFEQnVzSW50ZXJmYWNlIGlmYWNlKHt9LCB7fSwge30sIGNvbik7CisrICAgIFFWRVJJRlkoIWlm YWNlLmlzVmFsaWQoKSk7CisrICAgIFFWRVJJRlkoIVFNZXRhT2JqZWN0OjppbnZva2VNZXRob2Qo JmludGVyZmFjZSwgIkxpc3ROYW1lcyIsIFF0OjpEaXJlY3RDb25uZWN0aW9uKSk7CisgfQorIAor IHZvaWQgdHN0X1FEQnVzSW50ZXJmYWNlOjpub3RWYWxpZERlcml2ZWQoKQorZGlmZiAtLWdpdCBh L3F0YmFzZS90ZXN0cy9hdXRvL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlL3RzdF9xa2V5c2VxdWVu Y2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UvdHN0X3Fr ZXlzZXF1ZW5jZS5jcHAKK2luZGV4IDg3NDQ2OGM5NTQuLjA0Y2ViNGFiNjUgMTAwNjQ0CistLS0g YS9xdGJhc2UvdGVzdHMvYXV0by9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3RfcWtleXNlcXVl bmNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2Uv dHN0X3FrZXlzZXF1ZW5jZS5jcHAKK0BAIC01MDcsNiArNTA3LDEwIEBAIHZvaWQgdHN0X1FLZXlT ZXF1ZW5jZTo6dG9TdHJpbmdGcm9tS2V5Y29kZV9kYXRhKCkKKyAgICAgUVRlc3Q6Om5ld1Jvdygi Q3RybCtBbHQrTnVtK0RlbCIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6Q29udHJvbE1vZGlmaWVyIHwg UXQ6OkFsdE1vZGlmaWVyIHwgUXQ6OktleXBhZE1vZGlmaWVyIHwgUXQ6OktleV9EZWxldGUpIDw8 ICJDdHJsK0FsdCtOdW0rRGVsIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCtJbnMiKSA8PCBR S2V5U2VxdWVuY2UoUXQ6OkNvbnRyb2xNb2RpZmllciB8IFF0OjpLZXlfSW5zZXJ0KSA8PCAiQ3Ry bCtJbnMiOworICAgICBRVGVzdDo6bmV3Um93KCJDdHJsK051bStJbnMoMSkiKSA8PCBRS2V5U2Vx dWVuY2UoUXQ6OktleV9JbnNlcnQgfCBRdDo6S2V5cGFkTW9kaWZpZXIgfCBRdDo6Q29udHJvbE1v ZGlmaWVyKSA8PCAiQ3RybCtOdW0rSW5zIjsKKysgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCIpIDw8 IFFLZXlTZXF1ZW5jZShRdDo6S2V5X0NvbnRyb2wpIDw8ICJDb250cm9sIjsKKysgICAgUVRlc3Q6 Om5ld1JvdygiQWx0IikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfQWx0KSA8PCAiQWx0IjsKKysg ICAgUVRlc3Q6Om5ld1JvdygiU2hpZnQiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9TaGlmdCkg PDwgIlNoaWZ0IjsKKysgICAgUVRlc3Q6Om5ld1JvdygiTWV0YSIpIDw8IFFLZXlTZXF1ZW5jZShR dDo6S2V5X01ldGEpIDw8ICJNZXRhIjsKKyB9CisgCisgdm9pZCB0c3RfUUtleVNlcXVlbmNlOjp0 b1N0cmluZ0Zyb21LZXljb2RlKCkKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9ndWkv dGV4dC9xZm9udGRhdGFiYXNlL3RzdF9xZm9udGRhdGFiYXNlLmNwcCBiL3F0YmFzZS90ZXN0cy9h dXRvL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwCitpbmRleCAx NWUwZWNhZGFhLi5iNGVjYTc0MjgzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3Vp L3RleHQvcWZvbnRkYXRhYmFzZS90c3RfcWZvbnRkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS90 ZXN0cy9hdXRvL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwCitA QCAtODEsNiArODEsOCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHJlZ2lzdGVyT3BlblR5 cGVQcmVmZXJyZWROYW1lc1N5c3RlbSgpOworICAgICB2b2lkIHJlZ2lzdGVyT3BlblR5cGVQcmVm ZXJyZWROYW1lc0FwcGxpY2F0aW9uKCk7CisgCisrICAgIHZvaWQgc3RyZXRjaFJlc3BlY3RlZCgp OworKworIHByaXZhdGU6CisgICAgIFFTdHJpbmcgbV9sZWRGb250OworICAgICBRU3RyaW5nIG1f dGVzdEZvbnQ7CitAQCAtMzU1LDYgKzM1NywyOCBAQCBzdGF0aWMgUVN0cmluZyB0ZXN0U3RyaW5n KCkKKyAgICAgcmV0dXJuIFFTdHJpbmdMaXRlcmFsKCJmb28gYmFyIik7CisgfQorIAorK3ZvaWQg dHN0X1FGb250RGF0YWJhc2U6OnN0cmV0Y2hSZXNwZWN0ZWQoKQorK3sKKysgICAgaW50IGl0YWxp Y0lkID0gUUZvbnREYXRhYmFzZTo6YWRkQXBwbGljYXRpb25Gb250KG1fdGVzdEZvbnRJdGFsaWMp OworKyAgICBRVkVSSUZZKGl0YWxpY0lkICE9IC0xKTsKKysKKysgICAgUVZFUklGWSghUUZvbnRE YXRhYmFzZTo6YXBwbGljYXRpb25Gb250RmFtaWxpZXMoaXRhbGljSWQpLmlzRW1wdHkoKSk7Cisr CisrICAgIFFTdHJpbmcgaXRhbGljRm9udE5hbWUgPSBRRm9udERhdGFiYXNlOjphcHBsaWNhdGlv bkZvbnRGYW1pbGllcyhpdGFsaWNJZCkuZmlyc3QoKTsKKysKKysgICAgUUZvbnQgaXRhbGljRm9u dCA9IFFGb250RGF0YWJhc2UoKS5mb250KGl0YWxpY0ZvbnROYW1lLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZzo6ZnJvbUxhdGluMSgiSXRhbGlj IiksIDE0KTsKKysgICAgUVZFUklGWShpdGFsaWNGb250Lml0YWxpYygpKTsKKysKKysgICAgUUZv bnQgaXRhbGljU3RyZXRjaGVkRm9udCA9IGl0YWxpY0ZvbnQ7CisrICAgIGl0YWxpY1N0cmV0Y2hl ZEZvbnQuc2V0U3RyZXRjaCggNDAwICk7CisrCisrICAgIFFWRVJJRlkoUUZvbnRNZXRyaWNzRihp dGFsaWNGb250KS5ob3Jpem9udGFsQWR2YW5jZShRU3RyaW5nTGl0ZXJhbCgiZm9vYmFyIikpIDwK KysgICAgICAgICAgICBRRm9udE1ldHJpY3NGKGl0YWxpY1N0cmV0Y2hlZEZvbnQpLmhvcml6b250 YWxBZHZhbmNlKFFTdHJpbmdMaXRlcmFsKCJmb29iYXIiKSkpOworKworKyAgICBRRm9udERhdGFi YXNlOjpyZW1vdmVBcHBsaWNhdGlvbkZvbnQoaXRhbGljSWQpOworK30KKysKKyB2b2lkIHRzdF9R Rm9udERhdGFiYXNlOjpjb25kZW5zZWRGb250V2lkdGhOb0ZvbnRNZXJnaW5nKCkKKyB7CisgICAg IGludCByZWd1bGFyRm9udElkID0gUUZvbnREYXRhYmFzZTo6YWRkQXBwbGljYXRpb25Gb250KG1f dGVzdEZvbnQpOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNjZXNz L3FuZXR3b3JrcmVwbHkvdHN0X3FuZXR3b3JrcmVwbHkuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8v bmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBseS5jcHAKK2luZGV4 IDNkNGEwOTRjNDMuLmI0MjNlMTFhOTkgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9u ZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5LmNwcAorKysrIGIv cXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdv cmtyZXBseS5jcHAKK0BAIC0yODEsNiArMjgxLDcgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2 b2lkIGlvR2V0RnJvbUZpbGVTcGVjaWFsKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRmlsZV9kYXRh KCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRmlsZSgpOworKyAgICB2b2lkIGlvR2V0RnJvbUZpbGVV cmwoKTsKKyAgICAgdm9pZCBpb0dldEZyb21GdHBfZGF0YSgpOworICAgICB2b2lkIGlvR2V0RnJv bUZ0cCgpOworICAgICB2b2lkIGlvR2V0RnJvbUZ0cFdpdGhSZXVzZSgpOworQEAgLTMzMDAsNiAr MzMwMSwxOCBAQCB2b2lkIHRzdF9RTmV0d29ya1JlcGx5Ojppb0dldEZyb21GaWxlKCkKKyAgICAg UUNPTVBBUkUocmVhZGVyLmRhdGEsIGRhdGEpOworIH0KKyAKKyt2b2lkIHRzdF9RTmV0d29ya1Jl cGx5Ojppb0dldEZyb21GaWxlVXJsKCkKKyt7CisrICAgIC8vIFRoaXMgaW1tZWRpYXRlbHkgZmFp bHMgb24gbm9uLXdpbmRvd3MgcGxhdGZvcm1zOgorKyAgICBRTmV0d29ya1JlcXVlc3QgcmVxdWVz dChRVXJsKCJmaWxlOi8vdW5jLXNlcnZlci9zb21lL3BhdGgiKSk7CisrICAgIFFOZXR3b3JrUmVw bHlQdHIgcmVwbHkobWFuYWdlci5nZXQocmVxdWVzdCkpOworKyAgICBRU2lnbmFsU3B5IGZpbmlz aGVkU3B5KHJlcGx5LmdldCgpLCAmUU5ldHdvcmtSZXBseTo6ZmluaXNoZWQpOworKyAgICAvLyBR VEJVRy0xMDU2MTg6IFRoaXMgd291bGQsIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3JtcywgbmV2ZXIg aGFwcGVuIGJlY2F1c2UgdGhlIHNpZ25hbAorKyAgICAvLyB3YXMgZW1pdHRlZCBiZWZvcmUgdGhl IGNvbnN0cnVjdG9yIGZpbmlzaGVkLCBsZWF2aW5nIG5vIGNoYW5jZSBhdCBhbGwgdG8gY29ubmVj dCB0byB0aGUKKysgICAgLy8gc2lnbmFsCisrICAgIFFWRVJJRlkoZmluaXNoZWRTcHkud2FpdCgp KTsKKyt9CisrCisgdm9pZCB0c3RfUU5ldHdvcmtSZXBseTo6aW9HZXRGcm9tRnRwX2RhdGEoKQor IHsKKyAgICAgUVRlc3Q6OmFkZENvbHVtbjxRU3RyaW5nPigiZmlsZU5hbWUiKTsKK2RpZmYgLS1n aXQgYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtl LmNlcnQgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2Zs dWtlLmNlcnQKK2luZGV4IDA2OWZhNmIzNDEuLjRjYzRkOWE1ZWEgMTAwNjQ0CistLS0gYS9xdGJh c2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmNlcnQKKysr KyBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2Uu Y2VydAorQEAgLTEsNzUgKzEsMzQgQEAKKy1DZXJ0aWZpY2F0ZToKKy0gICAgRGF0YToKKy0gICAg ICAgIFZlcnNpb246IDMgKDB4MikKKy0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDAgKDB4MCkKKy0g ICAgICAgIFNpZ25hdHVyZSBBbGdvcml0aG06IHNoYTFXaXRoUlNBRW5jcnlwdGlvbgorLSAgICAg ICAgSXNzdWVyOiBDPU5PLCBTVD1Pc2xvLCBMPU55ZGFsZW4sIE89Tm9raWEgQ29ycG9yYXRpb24g YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLCBPVT1EZXZlbG9wbWVudCwgQ049Zmx1a2UudHJv bGwubm8vZW1haWxBZGRyZXNzPWFoYW5zc2VuQHRyb2xsdGVjaC5jb20KKy0gICAgICAgIFZhbGlk aXR5CistICAgICAgICAgICAgTm90IEJlZm9yZTogRGVjICA0IDAxOjEwOjMyIDIwMDcgR01UCist ICAgICAgICAgICAgTm90IEFmdGVyIDogQXByIDIxIDAxOjEwOjMyIDIwMzUgR01UCistICAgICAg ICBTdWJqZWN0OiBDPU5PLCBTVD1Pc2xvLCBPPU5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg c3Vic2lkaWFyeSgtaWVzKSwgT1U9RGV2ZWxvcG1lbnQsIENOPWZsdWtlLnRyb2xsLm5vCistICAg ICAgICBTdWJqZWN0IFB1YmxpYyBLZXkgSW5mbzoKKy0gICAgICAgICAgICBQdWJsaWMgS2V5IEFs Z29yaXRobTogcnNhRW5jcnlwdGlvbgorLSAgICAgICAgICAgIFJTQSBQdWJsaWMgS2V5OiAoMTAy NCBiaXQpCistICAgICAgICAgICAgICAgIE1vZHVsdXMgKDEwMjQgYml0KToKKy0gICAgICAgICAg ICAgICAgICAgIDAwOmE3OmM4OmEwOjRhOmM0OjE5OjA1OjFiOjY2OmJhOjMyOmUyOmQyOmYxOgor LSAgICAgICAgICAgICAgICAgICAgMWM6NmY6MTc6ODI6ZTQ6Mzk6MmU6MDE6NTE6OTA6ZGI6MDQ6 MzQ6MzI6MTE6CistICAgICAgICAgICAgICAgICAgICAyMTpjMjowZDo2Zjo1OTpkODo1Mzo5MDo1 NDozZjo4Mzo4ZjphOTpkMzpiMzoKKy0gICAgICAgICAgICAgICAgICAgIGQ1OmVlOjFhOjliOjgw OmFlOmMzOjI1OmM5OjVlOmE1OmFmOjRiOjYwOjA1OgorLSAgICAgICAgICAgICAgICAgICAgYWE6 YTA6ZDE6OTE6MDE6MWY6Y2E6MDQ6ODM6ZTM6NTg6MWM6OTk6MzI6NDU6CistICAgICAgICAgICAg ICAgICAgICA4NDo3MDo3Mjo1ODowMzo5ODo0YTo2Mzo4Yjo0MTpmNTowODo0OTpkMjo5MToKKy0g ICAgICAgICAgICAgICAgICAgIDAyOjYwOjZiOmU0OjY0OmZlOmRkOmEwOmFhOjc0OjA4OmU5OjM0 OjRjOjkxOgorLSAgICAgICAgICAgICAgICAgICAgNWY6MTI6M2Q6Mzc6NGQ6NTQ6MmM6YWQ6N2Y6 NWI6OTg6NjA6MzY6MDI6OGM6CistICAgICAgICAgICAgICAgICAgICAzYjpmNjo0NTpmMzoyNzo2 YTo5Yjo5NDo5ZAorLSAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCist ICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoKKy0gICAgICAgICAgICBYNTA5djMgQmFzaWMgQ29u c3RyYWludHM6IAorLSAgICAgICAgICAgICAgICBDQTpGQUxTRQorLSAgICAgICAgICAgIE5ldHNj YXBlIENvbW1lbnQ6IAorLSAgICAgICAgICAgICAgICBPcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZp Y2F0ZQorLSAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKKy0gICAg ICAgICAgICAgICAgMjE6ODU6MDQ6M0Q6MjM6MDE6NjY6RTU6Rjc6OUY6MUE6ODQ6MjQ6OEE6QUY6 MEE6Nzk6RjQ6RTU6QUMKKy0gICAgICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlm aWVyOiAKKy0gICAgICAgICAgICAgICAgRGlyTmFtZTovQz1OTy9TVD1Pc2xvL0w9TnlkYWxlbi9P PU5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS9PVT1EZXZlbG9w bWVudC9DTj1mbHVrZS50cm9sbC5uby9lbWFpbEFkZHJlc3M9YWhhbnNzZW5AdHJvbGx0ZWNoLmNv bQorLSAgICAgICAgICAgICAgICBzZXJpYWw6OEU6QTg6QjQ6RTg6OTE6Qjc6NTQ6MkUKKy0KKy0g ICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCistICAgICAgICA2 ZDo1Nzo1ZjpkMTowNTo0MzpmMDo2MjowNTplYzoyYTo3MTphNTpkYzoxOTowODpmMjpjNDoKKy0g ICAgICAgIGE2OmJkOmJiOjI1OmQ5OmNhOjg5OjAxOjBlOmU0OmNmOjFmOmMxOjhjOmM4OjI0OjE4 OjM1OgorLSAgICAgICAgNTM6NTk6N2I6YzA6NDM6YjQ6MzI6ZTY6OTg6YjI6YTY6ZWY6MTU6MDU6 MGI6NDg6NWY6ZTE6CistICAgICAgICBhMDowYzo5NzphOTphMTo3NzpkODozNToxODozMDpiYzph OTo4ZjpkMzpiNzo1NDpjNzpmMToKKy0gICAgICAgIGE5OjllOjVkOmU2OjE5OmJmOmY2OjNjOjVi OjJiOmQ4OmU0OjNlOjYyOjE4Ojg4OjhiOmQzOgorLSAgICAgICAgMjQ6ZTE6NDA6OWI6MGM6ZTY6 Mjk6MTY6NjI6YWI6ZWE6MDU6MjQ6NzA6MzY6YWE6NTU6OTM6CistICAgICAgICBlZjowMjo4MTox YjoyMzoxMDphMjowNDplYjo1Njo5NTo3NTpmYzpmODo5NDpiMTo1ZDo0MjoKKy0gICAgICAgIGM1 OjNmOjM2OjQ0Ojg1OjVkOjNhOjJlOjkwOjQ2OjhhOmEyOmI5OjZmOjg3OmFlOjBjOjE1OgorLSAg ICAgICAgNDA6MTk6MzE6OTA6ZmM6M2I6MjU6YmI6YWU6ZjE6NjY6MTM6MGQ6ODU6OTA6ZDk6NDk6 MzQ6CistICAgICAgICA4ZjpmMjo1ZDpmOTo3YTpkYjo0ZDo1ZDoyNzpmNjo3Njo5ZDozNTo4Yzow NjphNjo0YzphMzoKKy0gICAgICAgIGIxOmIyOmI2OjZmOjFkOmQ3OmEzOjAwOmZkOjcyOmViOjll OmVhOjQ0OmExOmFmOjIxOjM0OgorLSAgICAgICAgN2Q6Yzc6NDI6ZTI6NDk6OTE6MTk6OGI6YzA6 YWQ6YmE6ODI6ODA6YTg6NzE6NzA6ZjQ6MzU6CistICAgICAgICAzMTo5MTo2Mzo4NDoyMDo5NTpl OTo2MDphZjo2NDo4YjpjYzpmZjozZDo4YTo3Njo3NDozZDoKKy0gICAgICAgIGM4OjU1OjZkOmU0 OjhlOmMzOjJiOjFjOmU4OjQyOjE4OmFlOjlmOmU2OjZiOjljOjM0OjA2OgorLSAgICAgICAgZWM6 NmE6ZjI6YzMKKyAtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KKy1NSUlFRXpDQ0F2dWdBd0lC QWdJQkFEQU5CZ2txaGtpRzl3MEJBUVVGQURDQm5ERUxNQWtHQTFVRUJoTUNUazh4CistRFRBTEJn TlZCQWdUQkU5emJHOHhFREFPQmdOVkJBY1RCMDU1WkdGc1pXNHhGakFVQmdOVkJBb1REVlJ5YjJ4 cworLWRHVmphQ0JCVTBFeEZEQVNCZ05WQkFzVEMwUmxkbVZzYjNCdFpXNTBNUmN3RlFZRFZRUURF dzVtYkhWclpTNTAKKy1jbTlzYkM1dWJ6RWxNQ01HQ1NxR1NJYjNEUUVKQVJZV1lXaGhibk56Wlc1 QWRISnZiR3gwWldOb0xtTnZiVEFlCistRncwd056RXlNRFF3TVRFd016SmFGdzB6TlRBME1qRXdN VEV3TXpKYU1HTXhDekFKQmdOVkJBWVRBazVQTVEwdworLUN3WURWUVFJRXdSUGMyeHZNUll3RkFZ RFZRUUtFdzFVY205c2JIUmxZMmdnUVZOQk1SUXdFZ1lEVlFRTEV3dEUKKy1aWFpsYkc5d2JXVnVk REVYTUJVR0ExVUVBeE1PWm14MWEyVXVkSEp2Ykd3dWJtOHdnWjh3RFFZSktvWklodmNOCistQVFF QkJRQURnWTBBTUlHSkFvR0JBS2ZJb0VyRUdRVWJacm95NHRMeEhHOFhndVE1TGdGUmtOc0VORElS SWNJTgorLWIxbllVNUJVUDRPUHFkT3oxZTRhbTRDdXd5WEpYcVd2UzJBRnFxRFJrUUVmeWdTRDQx Z2NtVEpGaEhCeVdBT1kKKy1TbU9MUWZVSVNkS1JBbUJyNUdUKzNhQ3FkQWpwTkV5Ulh4STlOMDFV TEsxL1c1aGdOZ0tNTy9aRjh5ZHFtNVNkCistQWdNQkFBR2pnZ0VhTUlJQkZqQUpCZ05WSFJNRUFq QUFNQ3dHQ1dDR1NBR0crRUlCRFFRZkZoMVBjR1Z1VTFOTQorLUlFZGxibVZ5WVhSbFpDQkRaWEow YVdacFkyRjBaVEFkQmdOVkhRNEVGZ1FVSVlVRVBTTUJadVgzbnhxRUpJcXYKKy1Dbm4wNWF3d2di c0dBMVVkSXdTQnN6Q0JzS0dCb3FTQm56Q0JuREVMTUFrR0ExVUVCaE1DVGs4eERUQUxCZ05WCist QkFnVEJFOXpiRzh4RURBT0JnTlZCQWNUQjA1NVpHRnNaVzR4RmpBVUJnTlZCQW9URFZSeWIyeHNk R1ZqYUNCQgorLVUwRXhGREFTQmdOVkJBc1RDMFJsZG1Wc2IzQnRaVzUwTVJjd0ZRWURWUVFERXc1 bWJIVnJaUzUwY205c2JDNXUKKy1iekVsTUNNR0NTcUdTSWIzRFFFSkFSWVdZV2hoYm5OelpXNUFk SEp2Ykd4MFpXTm9MbU52YllJSkFJNm90T2lSCistdDFRdU1BMEdDU3FHU0liM0RRRUJCUVVBQTRJ QkFRQnRWMS9SQlVQd1lnWHNLbkdsM0JrSThzU212YnNsMmNxSgorLUFRN2t6eC9Cak1na0dEVlRX WHZBUTdReTVwaXlwdThWQlF0SVgrR2dESmVwb1hmWU5SZ3d2S21QMDdkVXgvR3AKKy1ubDNtR2Iv MlBGc3IyT1ErWWhpSWk5TWs0VUNiRE9ZcEZtS3I2Z1VrY0RhcVZaUHZBb0ViSXhDaUJPdFdsWFg4 CistK0pTeFhVTEZQelpFaFYwNkxwQkdpcUs1YjRldURCVkFHVEdRL0RzbHU2N3haaE1OaFpEWlNU U1A4bDM1ZXR0TgorLVhTZjJkcDAxakFhbVRLT3hzclp2SGRlakFQMXk2NTdxUktHdklUUjl4MExp U1pFWmk4Q3R1b0tBcUhGdzlEVXgKKy1rV09FSUpYcFlLOWtpOHovUFlwMmREM0lWVzNranNNckhP aENHSzZmNW11Y05BYnNhdkxECisrTUlJRjZ6Q0NBOU9nQXdJQkFnSVVmbzlhbUp0SkdXcVdFNmYr U2tBTzg1emtHcjR3RFFZSktvWklodmNOQVFFTAorK0JRQXdnWU14Q3pBSkJnTlZCQVlUQWs1UE1R MHdDd1lEVlFRSURBUlBjMnh2TVEwd0N3WURWUVFIREFSUGMyeHYKKytNUmN3RlFZRFZRUUtEQTVV YUdVZ1VYUWdRMjl0Y0dGdWVURU1NQW9HQTFVRUN3d0RVaVpFTVJJd0VBWURWUVFECisrREFsSU1p QlVaWE4wWlhJeEd6QVpCZ2txaGtpRzl3MEJDUUVXREcxcGJtbHRhVUJ4ZEM1cGJ6QWdGdzB5TURF dworK01qWXhNakF4TXpGYUdBOHlNVEl3TVRBd01qRXlNREV6TVZvd2dZTXhDekFKQmdOVkJBWVRB azVQTVEwd0N3WUQKKytWUVFJREFSUGMyeHZNUTB3Q3dZRFZRUUhEQVJQYzJ4dk1SY3dGUVlEVlFR S0RBNVVhR1VnVVhRZ1EyOXRjR0Z1CisrZVRFTU1Bb0dBMVVFQ3d3RFVpWkVNUkl3RUFZRFZRUURE QWxJTWlCVVpYTjBaWEl4R3pBWkJna3Foa2lHOXcwQgorK0NRRVdERzFwYm1sdGFVQnhkQzVwYnpD Q0FpSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnSVBBRENDQWdvQ2dnSUIKKytBT2lVcDUrRTRibG91 S0g3cStyVk5SOE5vWVgyWGtCVytxK3JweTF6dTVzc1JTemJxeEFqRHg5ZGtodDdRbG5mCisrVmxE VDAwSnZwT1dkZXVQb241OTE1ZWRRUnNZNFVubDZtS0gyOXJhM090VWExL3lDSlhzR1ZKVEtDajdr NEJ4YgorKzVtWnpiL2ZUbFpudE1MZFRJQk1mVWJ3NjJGS2lyMVdqS0ljSjlmQ29HOEphR2VLVk80 Umg1cDBlemQ0VVVVSWQKKytyMUJYbDVOcWRxeTJ2VE1zRURuak9zRDNlZ2t2OEkyU0tONE82bi9D M3dXWXBNT1dZWmtHb1ppS3o3ckpzL2kvCisrZXo3YnNWN0psd2R6VGxocEp6a2NPU1ZGQlA2SmxF T3hUTk54WjF3dEt5N1B0Wkdtc1NTQVRxMmU2K2J3MzhBZQorK09wMFhuenpxY0dqdEREb2ZCbVQ3 T0Z6WldqUzlWWlM2K0RPT2UyUUhXbGUxbkNIY0h5SDRrdTZJUmxzcjl4a1IKKytOQUlsT2ZudkhI eHFKVWVub2VhWjRvUURqQ0JLUzFLWHlnSk8vdEw3QkxUUVZuL3hLMUVtUHZLTm5qeldrNHRSCisr UG5pYlVoaHM1NjM1cXBPVS9ZUHFGQmgxSmpWcnVaYnNXY0RBaFJjZXcwdXhPTlhPYTlFKzRsdHRR OXlTWWExQQorK0x2V3FKdUFYN2d1MkJzQk1MeXFmbTgxMVluQTdDSUZNeU8rSGxxbWtMRmZ2NUwv eElSQVhSN2wyNllHTzBWd1gKKytDR2pNZno0TlZQTU1rZTRuQjdxYTlOa3BYUUJRS01tczNRemQ1 SlcwSHk5UnVqNU84R1BjRlptVjB0d2pkMXVKCisrUEQvY0Fqa1dMYVhqZE5zSjE2UVdjMm5naFFS UzZIWXFLUlg2aitDWE94dXBBZ01CQUFHalV6QlJNQjBHQTFVZAorK0RnUVdCQlJTQ09VNThqOU5K WmtNYW10NjIzcXlDcmhOM1RBZkJnTlZIU01FR0RBV2dCUlNDT1U1OGo5Tkpaa00KKythbXQ2MjNx eUNyaE4zVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUNBUUNx CisrcTRqeHNXZU5EdjVOcTE0aEp0RjlIQitaTDY0emNadFJqSlAxWWdOczBRcHBLSUNtalBPTDJu SU1HbUkvaktycworKzBlR0FMLzlYWE5WSFB4bTFPUE9uY3ZpbU1NbVU2ZW1aZnBNZEV0VGZLUDQz K1BnOUhnS1JqTG9RcDQwNnZHZVEKKys4a2kvbWJCaHJJdFZQZ0VtM3R1MkFGQTAyWFRZaStZeENJ OWtSWkxHa00zRmJndE91VExQbDBaOXkra2lQYzlGCisrdUNTQzAzYW5CRXF2K3ZEU0k4K3dPRHlt US9JSjNKeXoxbHhJUkRmcDRxQWVrbXkwalUyYzkxVk9ISEVtT21xcQorK2txeWdHRlJkd2JlOTlt OXlQNjNyNnEwYjVLM1gyVW5KNmJuczBobVR3VGhZd3BWUFhMVThqZGFUZGRiTXVrTjIKKysvRWY5 NlRzdzhuV09FT1BNeVNIT1RJUGd3eVpScDI2YjBrQTlFbWhMd09QNDAxU3hYVlFDbVNSbXR3TmFn bXRnCisrakpLbVpvWUJOKy8vRDQ1aWJLOHo2UTBvT205UCtXaGYvdVVYZWhjUnhCeHlWM3h6N2sw d0tHUWJIai9kZHdjeQorK0lVb0lONGxyQWxpYitsSzE3MGtUS04zNTJQRG1ycG8yZ21JelBFc2Z1 cktBSU1TZWxEbDZIK2tpaDE2QnRaOHkKKytOejZmaDlTb3FyZzNPU0F3YXJlOHB4VjdrNTFjckJN b1BMTjc4S29SVjhNRkNLNEs3RmRkcTRyUklTcTZoaVhxCisrcjFuc2pvRVB1S005aHVwcm1aVlpl OXQ1WWNEYTJJK3diM0lpRTN1d3BaYkFkYUxEeVE1bjZGL3Fwc2lJa1pYbgorK2d0Y0Y3b3FwRzVv WXJ3Q2NaNTN5L2V6VWdVZzdQbFN6Mlh3QUd2UXRnZz09CisgLS0tLS1FTkQgQ0VSVElGSUNBVEUt LS0tLQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2Nr ZXQvY2VydHMvZmx1a2Uua2V5IGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNv Y2tldC9jZXJ0cy9mbHVrZS5rZXkKK2luZGV4IDlkMTY2NGQ2MDkuLjMzN2NlNTQxYTYgMTAwNjQ0 CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2Zs dWtlLmtleQorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9j ZXJ0cy9mbHVrZS5rZXkKK0BAIC0xLDE1ICsxLDUyIEBACistLS0tLS1CRUdJTiBSU0EgUFJJVkFU RSBLRVktLS0tLQorLU1JSUNYQUlCQUFLQmdRQ255S0JLeEJrRkcyYTZNdUxTOFJ4dkY0TGtPUzRC VVpEYkJEUXlFU0hDRFc5WjJGT1EKKy1WRCtEajZuVHM5WHVHcHVBcnNNbHlWNmxyMHRnQmFxZzBa RUJIOG9FZytOWUhKa3lSWVJ3Y2xnRG1FcGppMEgxCistQ0VuU2tRSmdhK1JrL3QyZ3FuUUk2VFJN a1Y4U1BUZE5WQ3l0ZjF1WVlEWUNqRHYyUmZNbmFwdVVuUUlEQVFBQgorLUFvR0FORnpMa2FuVGVT R05GTTB1dHRCaXBGVDlGNGEwMGRxSHo2Sm5PN3pYQVQyNkk1cjhzVTFwcVFCYjZ1THoKKy0vK1F6 NVp3azhSVUFRY3NNUmdKZXR1UFFVYjBKWmpGNkR1djI0aE5henFYQkN1N0FaelVlbmphZndtS0Mv OHJpCistS3BYM2ZUd3F6ZnppLy9GS0dnYlhRODB5eWtTU2xpREwza24vZHJBVHhzTENnUUVDUVFE WGhFRldMSjB2VloxcworLTFFa2YrM05JVEUrRFIxNlgrTFE0VzZ2eUVIQWpUYmFOV3RjVEtkQVdM QTJsNk40V0FBUFlTaTZhd20rek14eDQKKy1Wb21WVHNqZEFrRUF4MHorZTduYXRMZUZjcnJxOHBi VSt3YTZTQVAxVmZoUVdLaXR4TDFlN3UvUU85ME5DcHhFCistb1FZS3pNa21tcE9PRmpRd0VNQXkx ZHZGTWJtNExIbGV3UUpBQy9rc0RCYVVjUUhIcWprdEN0clViOHJWakF5VworLUE4bHNjY2tlQjJm RVl5RzVKNmRKVmFZNENsTk9PczV5TURTMkFmazFGNkgveEt2dFEvNUN6SW5BL1FKQVREdWIKKy1L K0JQVThqTzlxK2dwdUlpM1ZJWmR1cHNzVkdtQ2dPYlZDSExha0c0dU8wNHk5SXlQaFY5bEE5dEFM dG9JZjRjCistVkl2djVmV0dYQnJaNDhrWkFRSkJBSm1WQ2R6UXhkOUxaSTV2eGlqVUNqNUVJNGUr eDVEUnFWVXZ5UDhLQ1pyQworLUFpTnlvRFA4NVQraEJaYVNYSzNhWUdwVndlbHlqM2J2bzFHclRO d05XTHc9CistLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KKystLS0tLUJFR0lOIFBSSVZB VEUgS0VZLS0tLS0KKytNSUlKUWdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTd3dnZ2tvQWdF QUFvSUNBUURvbEtlZmhPRzVhTGloCisrKzZ2cTFUVWZEYUdGOWw1QVZ2cXZxNmN0Yzd1YkxFVXMy NnNRSXc4ZlhaSWJlMEpaMzFaUTA5TkNiNlRsblhyagorKzZKK2ZkZVhuVUViR09GSjVlcGloOXZh MnR6clZHdGY4Z2lWN0JsU1V5Z28rNU9BY1crWm1jMi8zMDVXWjdUQzMKKytVeUFUSDFHOE90aFNv cTlWb3lpSENmWHdxQnZDV2huaWxUdUVZZWFkSHMzZUZGRkNIYTlRVjVlVGFuYXN0cjB6CisrTEJB NTR6ckE5M29KTC9DTmtpamVEdXAvd3Q4Rm1LVERsbUdaQnFHWWlzKzZ5YlA0djNzKzI3RmV5WmNI YzA1WQorK2FTYzVIRGtsUlFUK2laUkRzVXpUY1dkY0xTc3V6N1dScHJFa2dFNnRudXZtOE4vQUhq cWRGNTg4Nm5CbzdRdzYKKytId1prK3poYzJWbzB2VldVdXZnempudGtCMXBYdFp3aDNCOGgrSkx1 aUVaYksvY1pFVFFDSlRuNTd4eDhhaVZICisrcDZIbW1lS0VBNHdnU2t0U2w4b0NUdjdTK3dTMDBG Wi84U3RSSmo3eWpaNDgxcE9MVVQ1NG0xSVliT2V0K2FxVAorK2xQMkQ2aFFZZFNZMWE3bVc3Rm5B d0lVWEhzTkxzVGpWem12UlB1SmJiVVBja21HdFFDNzFxaWJnRis0THRnYkEKKytUQzhxbjV2TmRX SndPd2lCVE1qdmg1YXBwQ3hYNytTLzhTRVFGMGU1ZHVtQmp0RmNGd2hvekg4K0RWVHpESkh1Cisr SndlNm12VFpLVjBBVUNqSnJOME0zZVNWdEI4dlVibytUdkJqM0JXWmxkTGNJM2RiaVR3LzNBSTVG aTJsNDNUYgorK0NkZWtGbk5wNElVRVV1aDJLaWtWK28vZ2x6c2JxUUlEQVFBQkFvSUNBRncxcTZ0 cjVJNDh2WTdERityWHN1TG4KKys1WlVXRTFJUTZmekI0bHI3Mm5Kdi85RUVHbk1nWXp0OVBwTVVz RDZ2ZENwQmdTMkMwKzZSSEFyRnpKdE5BK1JNCisraUhMSUc3Szc3MDJ2ZXlyL3hCeC9Nd2lTbE1l TXYvWHBrRnhWSTZFNnNrTUdHMnMzQU1YeEt2SlR5NUNwUngrSQorK2VRRnlMRytZYTFYMmxnSmVz L3ErL0NwQUhrT2pDT3BjTHlTUUM1Tlo3NHE3MzRWN25TZG1uK1pzM3RZRWgrTy8KKytlaXV3VFAv ajViMzhUZTV2VlRxRHhUY2lKUG1sam1YTEN3YTBOMTAwbFdsYmNwdnc4cWJxaVRJMkptM1hDYlVF CisrQXpIalc5dm1yRjNjUlMxZlh4S0ZHU2h3M1NScWxrYnhqZmVXb2k4cURQVUJTNG04TE9yOHFH OVdvNU5mb24wegorK3pMUDRiY2kzekhEdlZjYWFacnJzVUJzL3laYmcrRGdrYTFEbVg3ZWttZWNj cjJ5VGRLREZnUHVwWVV5eFZiVGwKKythOVpMSnlzakZEN3JnQnYxWmNsSG9uTHA2VmJtK1pvVHF2 dGVvNGlrQXk2TDlSdEJXSjIzWEVLMzRQa1AvK2M1CisrMnZXWmFPcm5qU2VCSGJGY2U4Y2RKU3hx V3BQK2VTQ0k1STlYYkRyWUZJc1EvZ3FLZ3R6REt5MmloSjJZOFNUTAorK3lPNGh5RlBGanhjK0dn NC9QMlBwbVQ1Q1kydHk0NE0wQldzK0pHVzk2Q0pQcnJwbGYybG1RVVFKajVMWlk2NlgKKytaLzRD OUw3Wll0S1orYnM1U3ZVNDZ5V3VnQXZRWlgyMlhtOXhMWFd5VlhSZHgzYmorM00zZkRuRjlkaS96 ZGJoCisrQ2dMeDdvV1BOclhjN0ZDYWpubjlBb0lCQVFENUZNWXdScHc5TldUOVdEeFF3eCtjU0k0 SWNiZDg4QnlUVzYzUworK0x6ZVJ3WkEwSjkvU2Z3TythQlJ1cHpjOUdrR1hDaVpjR013M0FHc0N0 aWc4eUZsdzhFNUtuek43S2xmdERNbk0KKys5TlV4eHpsUjhWd0t5TG5aZkc3c0RUbDA1N1psVXVq bnFobXQvRjhGN2RJeTdGVk8xZEUvOG5uZ0ErRllUQ09HCisrVVpkR2p3eUJEbERNMEpKZFVXR1kz eHNsdXRjcENETjVtelNUS2p5OWRyTXZJbUFzaFJhd3hSRjZXQnBuN3ZyMgorK25DNnZjaXFmeDFN engxdnlrMEptMGlsYXlkRGRMTUFEanQvaUw0TmtyMEJFczRrK1V6UWlLRHdwOGd1N2FiUTEKKytl QmZ4ZDlJYXI0aHRRYTJJMUV3bDZQMDFHL3ErWll3Z0hoSjlSVm40QXhRWGVmSUxBb0lCQVFEdkNv dU9SZFFYCisrQzh3c3lwN013WGxGLzNOUWVOTjUvK0IybWhieHJCT2Y3UG1NQ1hMbmtSV2Nqd0p0 enlwV0ZxSjBzcWFpLzIrMAorK2JxYk1jalg1bWFUOHN0VDJzaGwzelhlL0VqdDJlM1RCWXBjMXR5 dXNlczhLYjVCTVU4aHU2dFRkM0cyQ01YcEQKKytkVDZEVmVtSlpDVHR3ajlhQk5JeFNpenZsZ01v bEpuQ3B6aFBubGZIU0k2RStnM20vTFRUbzNId2JqTVN3L1VxCisraXJnak9wSTJ3U0JCNkxaUFNn anZmY1lQUnlXVWsxNkw0QTV1U1gwY0FEbm92REZMYTUvaDB3SnZOL09vQ1NRZworK3JMQ1hHNUUx OEV5TDVXYzU4QkNZMVp2eG1qRzNsUXRnUHhZdTJKd2MzNlIveS9KS2x4VzVzdUVSNVpOcGJiRDQK Kyt1T3lUdDJWeE1RMmJBb0lCQVFDNStNelJGcWRvL0FqZkw1WTVKcmJmVlR6WENURGEwOXhDR2Qx NlpVNjBRVFdOCisrKzRlZC9yK28xc1VLcVVjUkZCMk16RU0vMkRRQmpRcFpCL0NiRVd2V2ExWEpX WHh5cFhib3d2ZVpVK1FxT25tTgorK3VRdmo4V0x5QTNvK1BORjllOVF2YXV3Q3JIcG44VnB4YnRQ V3VhWW9LblVGcmVGWlpReEhoUEd4UkJJUzJKT1oKKytlRHJUOFphV25rQ2toMUFacDVzbVE3MUxP cHJTbG1Lcmc0amQxR2pDVk14UVI1TjVLWGJ0eXYwT1RDWi9VRnFLCisrMmFSQnNNUHlKZ2thQkNo a1pQTFJjS3djKy93bFFSeDFmSFFiMTRETlRBcE14b1hGTzdlT3dxbU9rcEF0OWl5bAorK1NCSXdv UzBVVUk1YWI4OCtiQm1YTnZLY3VGZE51UTRub3dUSlVuOXBBb0lCQURNTmtJTEJYU3ZTNURlSXl1 TzIKKytTcDF0a29aVVYrNU5mUFkzc01ESzNLSWliYVcvK3QrRU9CWm80TDd0S1FDYjh2UnpsMjFt bXNmeGZnUmFQRGJqCisrM3IzdHY5ZzBiNFlMeHhCeTUycEZzY2ovc29YUmFpMTdTUzdVWndBMlFL K1h6Z0RZYkRjTE5DNm1Jc1RRRzRHeAorK2RzV2szL3pzM0t1VVNRYWVobXdyV0srZklVSzM4YzFw TEs4djdMb3hyTGtxeGxId1owNFJ0aEh3OEtUdGhIN1gKKytQbmwxSjBMRjhDU2VPeWZXTFN1UFVm a1QwR0V6cHRuTkhwRWJhSGZRTTZSNmVhR2hWSlBGNkFabWU0eTZZWWdnCisrbTJpaGhTdDFuMFhW RVdwSFlXanhGeTNtSzJtejc1dW5GQzRMTStORVkycDJ6dVVRb0N3N05qblkzUVlyZkNueAorK3JS TUNnZ0VBWGVYc01TTEZqanl1b0w3aUtiQXhvNTJIRC9QMGZCb3k1OEx5UmN3Zk5WcjBsdllhbjRw WUV4K28KKytLaWpJaDlLMTZQcVhaWEtNQTl2MDAzQit1bG1GOGJKN1NkZENaNU5Hdm5GaFVURGU0 RGRUS2dwMlJ1d1EzQnNjCisrM3NrUElEYmhWRVR5T0xDdHlzMzRVU0hycThVLzBEbEdZM2VMUmZ4 dzlHbmJLeFNCR2EvS0V1L3FRTFBOVW81MAorKzd4SFpEZzdHS2VDM2txTkplcUtNOXJrcDBWeklH a0VuYUQ5MTI3TGVORG1FUkRmZnR4SnpGb0MvVEh2VUJMZlUKKys2U3VzMlpZd1JFOFZGdktDMzBR NDV0L2M1NFgzSXVoWXZBdWlDdVRteWZFNHJ1eXp5T3dLemhVa2VlTHExQVBYCisrZzB2ZUZieWZ6 bEowcThxekQvaWZmcXFJYTJaU21RPT0KKystLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3Rf cWFjY2Vzc2liaWxpdHlsaW51eC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9vdGhlci9xYWNjZXNz aWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcAoraW5kZXggN2JhMzcxNWUx My4uNzUyYWExMjJmNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nl c3NpYmlsaXR5bGludXgvdHN0X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwCisrKysgYi9xdGJhc2Uv dGVzdHMvYXV0by9vdGhlci9xYWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxp bnV4LmNwcAorQEAgLTE3OSw2ICsxNzksNyBAQCB2b2lkIHRzdF9RQWNjZXNzaWJpbGl0eUxpbnV4 Ojppbml0VGVzdENhc2UoKQorICAgICBRVkVSSUZZKCFhZGRyZXNzLmlzRW1wdHkoKSk7CisgCisg ICAgIG1fd2luZG93ID0gbmV3IEFjY2Vzc2libGVUZXN0V2luZG93KCk7CisrICAgIG1fd2luZG93 LT5zZXRPYmplY3ROYW1lKCJtYWluV2luZG93Il9MMSk7CisgICAgIG1fd2luZG93LT5zaG93KCk7 CisgCisgICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZChtX3dpbmRvdykp OworQEAgLTIzNiw4ICsyMzcsMTEgQEAgYm9vbCBoYXNTdGF0ZShRREJ1c0ludGVyZmFjZSAqaW50 ZXJmYWNlLCBBdHNwaVN0YXRlVHlwZSBzdGF0ZSkKKyB2b2lkIHRzdF9RQWNjZXNzaWJpbGl0eUxp bnV4Ojp0ZXN0TGFiZWwoKQorIHsKKyAgICAgUUxhYmVsICpsID0gbmV3IFFMYWJlbChtX3dpbmRv dyk7CisrICAgIGwtPnNldE9iamVjdE5hbWUoInRoZU9iamVjdE5hbWUiX0wxKTsKKyAgICAgbC0+ c2V0VGV4dCgiSGVsbG8gQTExeSIpOworICAgICBtX3dpbmRvdy0+YWRkV2lkZ2V0KGwpOworKyAg ICBhdXRvIGExMXlFbXB0eSA9IG5ldyBRTGFiZWwobV93aW5kb3cpOworKyAgICBtX3dpbmRvdy0+ YWRkV2lkZ2V0KGwpOworIAorICAgICAvLyBBcHBsaWNhdGlvbgorICAgICBRQ09NUEFSRShnZXRQ YXJlbnQobWFpbldpbmRvdyksIFFMYXRpbjFTdHJpbmcoQVRTUElfREJVU19QQVRIX1JPT1QpKTsK K0BAIC0yNDksNiArMjUzLDggQEAgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlMaW51eDo6dGVzdExh YmVsKCkKKyAgICAgUUNPTVBBUkUoZ2V0Q2hpbGRyZW4obGFiZWxJbnRlcmZhY2UpLmNvdW50KCks IDApOworICAgICBRQ09NUEFSRShsYWJlbEludGVyZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ssICJH ZXRSb2xlTmFtZSIpLmFyZ3VtZW50cygpLmZpcnN0KCkudG9TdHJpbmcoKSwgUUxhdGluMVN0cmlu ZygibGFiZWwiKSk7CisgICAgIFFDT01QQVJFKGxhYmVsSW50ZXJmYWNlLT5jYWxsKFFEQnVzOjpC bG9jaywgIkdldFJvbGUiKS5hcmd1bWVudHMoKS5maXJzdCgpLnRvVUludCgpLCAyOXUpOworKyAg ICBRQ09NUEFSRShsYWJlbEludGVyZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ssICJHZXRBY2Nlc3Np YmxlSWQiKS5hcmd1bWVudHMoKS5maXJzdCgpLnRvU3RyaW5nKCksCisrICAgICAgICAgICAgIFFM YXRpbjFTdHJpbmcoIm1haW5XaW5kb3cudGhlT2JqZWN0TmFtZSIpKTsKKyAgICAgUUNPTVBBUkUo Z2V0UGFyZW50KGxhYmVsSW50ZXJmYWNlKSwgbWFpbldpbmRvdy0+cGF0aCgpKTsKKyAgICAgUVZF UklGWSghaGFzU3RhdGUobGFiZWxJbnRlcmZhY2UsIEFUU1BJX1NUQVRFX0VESVRBQkxFKSk7Cisg ICAgIFFWRVJJRlkoaGFzU3RhdGUobGFiZWxJbnRlcmZhY2UsIEFUU1BJX1NUQVRFX1JFQURfT05M WSkpOworQEAgLTI1Niw3ICsyNjIsMTIgQEAgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlMaW51eDo6 dGVzdExhYmVsKCkKKyAgICAgbC0+c2V0VGV4dCgiTmV3IHRleHQiKTsKKyAgICAgUUNPTVBBUkUo bGFiZWxJbnRlcmZhY2UtPnByb3BlcnR5KCJOYW1lIikudG9TdHJpbmcoKSwgbC0+dGV4dCgpKTsK KyAKKysgICAgYXV0byAqYTExeUVtcHR5SW50ZXJmYWNlID0gZ2V0SW50ZXJmYWNlKGNoaWxkcmVu LmF0KDEpLCAib3JnLmExMXkuYXRzcGkuQWNjZXNzaWJsZSIpOworKyAgICBRQ09NUEFSRShhMTF5 RW1wdHlJbnRlcmZhY2UtPmNhbGwoUURCdXM6OkJsb2NrLCAiR2V0QWNjZXNzaWJsZUlkIikuYXJn dW1lbnRzKCkuZmlyc3QoKS50b1N0cmluZygpLAorKyAgICAgICAgICAgICBRTGF0aW4xU3RyaW5n KCJtYWluV2luZG93LlFMYWJlbCIpKTsKKysKKyAgICAgbV93aW5kb3ctPmNsZWFyQ2hpbGRyZW4o KTsKKysgICAgZGVsZXRlIGExMXlFbXB0eUludGVyZmFjZTsKKyAgICAgZGVsZXRlIGxhYmVsSW50 ZXJmYWNlOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9zcWwva2VybmVs L3FzcWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJu ZWwvcXNxbHF1ZXJ5L3RzdF9xc3FscXVlcnkuY3BwCitpbmRleCA3NmRmNjFjODkyLi42ZDZkNjVi NzkxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5lbC9xc3FscXVlcnkv dHN0X3FzcWxxdWVyeS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwvcXNx bHF1ZXJ5L3RzdF9xc3FscXVlcnkuY3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorICoqCistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4K KysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRhY3Q6 IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTY4LDYgKzY4LDggQEAg cHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBxdWVyeV9leGVjKCk7CisgICAgIHZvaWQgZXhlY0Vy cm9yUmVjb3ZlcnlfZGF0YSgpIHsgZ2VuZXJpY19kYXRhKCk7IH0KKyAgICAgdm9pZCBleGVjRXJy b3JSZWNvdmVyeSgpOworKyAgICB2b2lkIHByZW1hdHVyZUV4ZWNfZGF0YSgpIHsgZ2VuZXJpY19k YXRhKCk7IH0KKysgICAgdm9pZCBwcmVtYXR1cmVFeGVjKCk7CisgICAgIHZvaWQgZmlyc3RfZGF0 YSgpIHsgZ2VuZXJpY19kYXRhKCk7IH0KKyAgICAgdm9pZCBmaXJzdCgpOworICAgICB2b2lkIG5l eHRfZGF0YSgpIHsgZ2VuZXJpY19kYXRhKCk7IH0KK0BAIC0yNzcwLDYgKzI3NzIsMzUgQEAgdm9p ZCB0c3RfUVNxbFF1ZXJ5OjpleGVjRXJyb3JSZWNvdmVyeSgpCisgICAgIFFWRVJJRllfU1FMKCBx LCBleGVjKCkgKTsKKyB9CisgCisrdm9pZCB0c3RfUVNxbFF1ZXJ5OjpwcmVtYXR1cmVFeGVjKCkK Kyt7CisrICAgIFFGRVRDSChRU3RyaW5nLCBkYk5hbWUpOworKyAgICAvLyBXZSBvbmx5IHdhbnQg dGhlIGVuZ2luZSBuYW1lLCBmb3IgYWRkRGF0YWJhc2UoKToKKysgICAgaW50IGN1dCA9IGRiTmFt ZS5pbmRleE9mKFFDaGFyKCdAJykpOworKyAgICBpZiAoY3V0IDwgMCkKKysgICAgICAgIFFTS0lQ KCJGYWlsZWQgdG8gcGFyc2UgZGF0YWJhc2UgdHlwZSBvdXQgb2YgbmFtZSIpOworKyAgICBkYk5h bWUudHJ1bmNhdGUoY3V0KTsKKysgICAgY3V0ID0gZGJOYW1lLmluZGV4T2YoUUNoYXIoJ18nKSk7 CisrICAgIGlmIChjdXQgPj0gMCkKKysgICAgICAgIGRiTmFtZSA9IGRiTmFtZS5taWQoY3V0ICsg MSk7CisrCisrICAgIGF1dG8gZGIgPSBRU3FsRGF0YWJhc2U6OmFkZERhdGFiYXNlKGRiTmFtZSk7 CisrICAgIFFTcWxRdWVyeSBxKGRiKTsKKysKKysgICAgUVRlc3Q6Omlnbm9yZU1lc3NhZ2UoUXRX YXJuaW5nTXNnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAiUVNxbERhdGFiYXNlUHJpdmF0 ZTo6cmVtb3ZlRGF0YWJhc2U6IGNvbm5lY3Rpb24gIgorKyAgICAgICAgICAgICAgICAgICAgICAg ICAiJ3F0X3NxbF9kZWZhdWx0X2Nvbm5lY3Rpb24nIGlzIHN0aWxsIGluIHVzZSwgYWxsICIKKysg ICAgICAgICAgICAgICAgICAgICAgICAgInF1ZXJpZXMgd2lsbCBjZWFzZSB0byB3b3JrLiIpOwor KyAgICBRVGVzdDo6aWdub3JlTWVzc2FnZShRdFdhcm5pbmdNc2csCisrICAgICAgICAgICAgICAg ICAgICAgICAgICJRU3FsRGF0YWJhc2VQcml2YXRlOjphZGREYXRhYmFzZTogZHVwbGljYXRlIGNv bm5lY3Rpb24gbmFtZSAiCisrICAgICAgICAgICAgICAgICAgICAgICAgICIncXRfc3FsX2RlZmF1 bHRfY29ubmVjdGlvbicsIG9sZCBjb25uZWN0aW9uIHJlbW92ZWQuIik7CisrICAgIGF1dG8gb3Ro ZXJEYiA9IFFTcWxEYXRhYmFzZTo6YWRkRGF0YWJhc2UoZGJOYW1lKTsKKysKKysgICAgUVRlc3Q6 Omlnbm9yZU1lc3NhZ2UoUXRXYXJuaW5nTXNnLCAiUVNxbFF1ZXJ5OjpleGVjOiBjYWxsZWQgYmVm b3JlIGRyaXZlciBoYXMgYmVlbiBzZXQgdXAiKTsKKysgICAgLy8gUVRCVUctMTAwMDM3OiBzaG91 bGRuJ3QgY3Jhc2ggIQorKyAgICBRVkVSSUZZKCFxLmV4ZWMoInNlbGVjdCBzdHVmZiBmcm9tIFRo ZVZvaWQiKSk7CisrfQorKworIHZvaWQgdHN0X1FTcWxRdWVyeTo6bGFzdEluc2VydElkKCkKKyB7 CisgICAgIFFGRVRDSCggUVN0cmluZywgZGJOYW1lICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0 ZW1tb2RlbHRlc3Rlci5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFjdGl0 ZW1tb2RlbHRlc3Rlci90c3RfcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAoraW5kZXggNGFh M2Y4ZDYwYi4uZDIwNTBhNjFhYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rlc3Rs aWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIu Y3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRl c3Rlci90c3RfcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAorQEAgLTExNSw2ICsxMTUsMTAg QEAgdm9pZCB0c3RfUUFic3RyYWN0SXRlbU1vZGVsVGVzdGVyOjpzdGFuZGFyZEl0ZW1Nb2RlbFpl cm9Db2x1bW5zKCkKKyAgICAgLy8gUVRCVUctOTI4ODYKKyAgICAgbW9kZWwuaW5zZXJ0Um93cygw LCA1KTsKKyAgICAgbW9kZWwucmVtb3ZlUm93cygxLCAyKTsKKysKKysgICAgY29uc3QgUU1vZGVs SW5kZXggcGFyZW50SW5kZXggPSBtb2RlbC5pbmRleCgwLCAwKTsKKysgICAgbW9kZWwuaW5zZXJ0 Um93cygwLCA1LCBwYXJlbnRJbmRleCk7CisrICAgIG1vZGVsLnJlbW92ZVJvd3MoMSwgMiwgcGFy ZW50SW5kZXgpOworIH0KKyAKKyB2b2lkIHRzdF9RQWJzdHJhY3RJdGVtTW9kZWxUZXN0ZXI6OnRl c3RJbnNlcnRUaHJvdWdoUHJveHkoKQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rv b2xzL21vYy9hbGxtb2NzX2Jhc2VsaW5lX2luLmpzb24gYi9xdGJhc2UvdGVzdHMvYXV0by90b29s cy9tb2MvYWxsbW9jc19iYXNlbGluZV9pbi5qc29uCitpbmRleCAxMmE0YTIyYTE5Li5jZTUxOGU3 OGZiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1vY3NfYmFz ZWxpbmVfaW4uanNvbgorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1vY3Nf YmFzZWxpbmVfaW4uanNvbgorQEAgLTY2OCw1MCArNjY4LDYgQEAKKyAgICAgICAgICJpbnB1dEZp bGUiOiAidGFzazE5MjU1Mi5oIiwKKyAgICAgICAgICJvdXRwdXRSZXZpc2lvbiI6IDY3CisgICAg IH0sCistICAgIHsKKy0gICAgICAgICJjbGFzc2VzIjogWworLSAgICAgICAgICAgIHsKKy0gICAg ICAgICAgICAgICAgImNsYXNzTmFtZSI6ICJJbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9u IiwKKy0gICAgICAgICAgICAgICAgIm9iamVjdCI6IHRydWUsCistICAgICAgICAgICAgICAgICJx dWFsaWZpZWRDbGFzc05hbWUiOiAiSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiIsCist ICAgICAgICAgICAgICAgICJzbG90cyI6IFsKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAg ICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAgICAgICAgICAg ICAgICAgICAgIm5hbWUiOiAiYSIsCistICAgICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5 cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgICAgICAg ICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICJuYW1lIjogImIiLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICJyZXR1cm5UeXBlIjogInZvaWQiCistICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAg ICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGlj IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjIiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfSwK Ky0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNz IjogInB1YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZCIsCistICAg ICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAg ICAgICAgIH0sCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAg ICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjog ImUiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiCistICAg ICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAg ICJzdXBlckNsYXNzZXMiOiBbCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAg ICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICJuYW1lIjogIlFPYmplY3QiCistICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAg ICAgIF0KKy0gICAgICAgICAgICB9CistICAgICAgICBdLAorLSAgICAgICAgImlucHV0RmlsZSI6 ICJ0YXNrMTg5OTk2LmgiLAorLSAgICAgICAgIm91dHB1dFJldmlzaW9uIjogNjcKKy0gICAgfSwK KyAgICAgeworICAgICAgICAgImNsYXNzZXMiOiBbCisgICAgICAgICAgICAgeworZGlmZiAtLWdp dCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9tb2MucHJvIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vdG9vbHMvbW9jL21vYy5wcm8KK2luZGV4IGMzMjRiM2E4Y2QuLjRhY2ViNzhkYzAgMTAwNjQ0 CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBybworKysrIGIvcXRiYXNl L3Rlc3RzL2F1dG8vdG9vbHMvbW9jL21vYy5wcm8KK0BAIC0xNSw3ICsxNSw3IEBAIGNyb3NzX2Nv bXBpbGU6IERFRklORVMgKz0gTU9DX0NST1NTX0NPTVBJTEVECisgSEVBREVSUyArPSB1c2luZy1u YW1lc3BhY2VzLmggbm8ta2V5d29yZHMuaCB0YXNrODc4ODMuaCBjLWNvbW1lbnRzLmggYmFja3Ns YXNoLW5ld2xpbmVzLmggb2xkc3R5bGUtY2FzdHMuaCBcCisgICAgICAgICAgICBzbG90cy13aXRo LXZvaWQtdGVtcGxhdGUuaCBxaW52b2thYmxlLmggbmFtZXNwYWNlZC1mbGFncy5oIHRyaWdyYXBo cy5oIFwKKyAgICAgICAgICAgIGVzY2FwZXMtaW4tc3RyaW5nLWxpdGVyYWxzLmggY3N0eWxlLWVu dW1zLmggcXByaXZhdGVzbG90cy5oIGdhZGdldHdpdGhub2VudW1zLmggXAorLSAgICAgICAgICAg ZGlyLWluLWluY2x1ZGUtcGF0aC5oIHNpbmdsZV9mdW5jdGlvbl9rZXl3b3JkLmggdGFzazE5MjU1 Mi5oIHRhc2sxODk5OTYuaCBcCisrICAgICAgICAgICBkaXItaW4taW5jbHVkZS1wYXRoLmggc2lu Z2xlX2Z1bmN0aW9uX2tleXdvcmQuaCB0YXNrMTkyNTUyLmggXAorICAgICAgICAgICAgdGFzazIz NDkwOS5oIHRhc2syNDAzNjguaCBwdXJlLXZpcnR1YWwtc2lnbmFscy5oIGN4eDExLWVudW1zLmgg XAorICAgICAgICAgICAgY3h4MTEtZmluYWwtY2xhc3Nlcy5oIFwKKyAgICAgICAgICAgIGN4eDEx LWV4cGxpY2l0LW92ZXJyaWRlLWNvbnRyb2wuaCBcCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3Rz L2F1dG8vdG9vbHMvbW9jL3Rhc2sxODk5OTYuaCBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21v Yy90YXNrMTg5OTk2LmgKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggZjk0YTA1MWIz YS4uMDAwMDAwMDAwMAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3Rhc2sxODk5 OTYuaAorKysrIC9kZXYvbnVsbAorQEAgLTEsNDcgKzAsMCBAQAorLS8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCistKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorLSoq IENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKy0qKgorLSoqIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorLSoqCistKiog JFFUX0JFR0lOX0xJQ0VOU0U6R1BMLUVYQ0VQVCQKKy0qKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNh Z2UKKy0qKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1h eSB1c2UgdGhpcyBmaWxlIGluCistKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxp Y2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCistKiogU29mdHdhcmUgb3IsIGFsdGVy bmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCistKiog YSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBs aWNlbnNpbmcgdGVybXMKKy0qKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8v dGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKy0qKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNv bnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorLSoqCistKiogR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKy0qKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZp bGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKy0qKiBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK Ky0qKiBGb3VuZGF0aW9uIHdpdGggZXhjZXB0aW9ucyBhcyBhcHBlYXJpbmcgaW4gdGhlIGZpbGUg TElDRU5TRS5HUEwzLUVYQ0VQVAorLSoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhp cyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKy0qKiBpbmZvcm1hdGlvbiB0byBl bnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCist KiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKy0q KgorLSoqICRRVF9FTkRfTElDRU5TRSQKKy0qKgorLSoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistLy8g aW5saW5lIGZ1bmN0aW9ucyBjYW4gaGF2ZSB0aHJvdyBkZWNsYXJhdGlvbnMKKy0KKy0jaWZuZGVm IFRBU0sxODk5OTZfSAorLSNkZWZpbmUgVEFTSzE4OTk5Nl9ICistCistI2luY2x1ZGUgPFFPYmpl Y3Q+CistCistY2xhc3MgSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiA6IHB1YmxpYyBR T2JqZWN0CisteworLSAgICBRX09CSkVDVAorLQorLXB1YmxpYyBzbG90czoKKy0gICAgdm9pZCBh KCkgdGhyb3coKSB7IH0KKy0gICAgdm9pZCBiKCkgY29uc3QgdGhyb3coKSB7IH0KKy0gICAgdm9p ZCBjKCkgdGhyb3coKTsKKy0gICAgdm9pZCBkKCkgdGhyb3coaW50KSB7IH0KKy0gICAgdm9pZCBl KCkgY29uc3QgdGhyb3coaW50LGRvdWJsZSkgeyB9CistfTsKKy0KKy0jZW5kaWYKK2RpZmYgLS1n aXQgYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAgYi9xdGJhc2UvdGVz dHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAKK2luZGV4IGM3MTZhZWFkMjEuLjE1ZGQ5ZTQx ZTUgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAK KysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90c3RfbW9jLmNwcAorQEAgLTYzMSw3 ICs2MzEsNiBAQCBwdWJsaWM6CisgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBpbml0VGVzdENh c2UoKTsKKyAKKy0gICAgdm9pZCBzbG90V2l0aEV4Y2VwdGlvbigpIHRocm93KE15U3RydWN0KTsK KyAgICAgdm9pZCBkb250U3RyaXBOYW1lc3BhY2VzKCk7CisgICAgIHZvaWQgb2xkU3R5bGVDYXN0 cygpOworICAgICB2b2lkIHdhcm5PbkV4dHJhU2lnbmFsU2xvdFF1YWxpZmlhY3Rpb24oKTsKK0BA IC02NzMsNyArNjcyLDYgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB0ZW1wbGF0ZUd0R3Qo KTsKKyAgICAgdm9pZCBxcHJpdmF0ZXNsb3RzKCk7CisgICAgIHZvaWQgcXByaXZhdGVwcm9wZXJ0 aWVzKCk7CistICAgIHZvaWQgaW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbigpOworICAg ICB2b2lkIHdhcm5PblByb3BlcnR5V2l0aG91dFJFQUQoKTsKKyAgICAgdm9pZCBjb25zdHJ1Y3Rv cnMoKTsKKyAgICAgdm9pZCB0eXBlbmFtZVdpdGhVbnNpZ25lZCgpOworQEAgLTc4NCwxMiArNzgy LDYgQEAgdm9pZCB0c3RfTW9jOjppbml0VGVzdENhc2UoKQorICNlbmRpZgorIH0KKyAKKy12b2lk IHRzdF9Nb2M6OnNsb3RXaXRoRXhjZXB0aW9uKCkgdGhyb3coTXlTdHJ1Y3QpCisteworLSAgICAv LyBiZSBoYXBweQorLSAgICBRVkVSSUZZKHRydWUpOworLX0KKy0KKyB2b2lkIHRzdF9Nb2M6OmRv bnRTdHJpcE5hbWVzcGFjZXMoKQorIHsKKyAgICAgU2VuZGVyIHNlbmRlcjsKK0BAIC04MjQsNyAr ODE2LDcgQEAgdm9pZCB0c3RfTW9jOjpvbGRTdHlsZUNhc3RzKCkKKyAKKyAgICAgUVN0cmluZ0xp c3QgYXJnczsKKyAgICAgYXJncyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1Xb2xkLXN0 eWxlLWNhc3QiIDw8ICItSSIgPDwgIi4iCistICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQ YXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxMSIgPDwg Ii0iOworKyAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2 L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMXoiIDw8ICItIjsKKyAgICAgcHJvYy5zdGFy dCgiZ2NjIiwgYXJncyk7CisgICAgIFFWRVJJRlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAg ICAgcHJvYy53cml0ZShtb2NPdXQpOworQEAgLTg5NCw3ICs4ODYsNyBAQCB2b2lkIHRzdF9Nb2M6 OmlucHV0RmlsZU5hbWVXaXRoRG90c0J1dE5vRXh0ZW5zaW9uKCkKKyAKKyAgICAgUVN0cmluZ0xp c3QgYXJnczsKKyAgICAgYXJncyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1JIiA8PCAi Li4iCistICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYv bnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxMSIgPDwgIi0iOworKyAgICAgICAgIDw8ICIt SSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwg Ii1zdGQ9YysrMXoiIDw8ICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwgYXJncyk7CisgICAg IFFWRVJJRlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53cml0ZShtb2NPdXQp OworQEAgLTExNzQsNyArMTE2Niw3IEBAIHZvaWQgdHN0X01vYzo6aWdub3JlT3B0aW9uQ2xhc2hl cygpCisgICAgIFFTdHJpbmdMaXN0IGdjY0FyZ3M7CisgICAgIGdjY0FyZ3MgPDwgIi1jIiA8PCAi LXgiIDw8ICJjKysiIDw8ICItSSIgPDwgIi4uIgorICAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNs dWRlUGF0aCA8PCAiLUkiIDw8IGluY2x1ZGVEaXIgPDwgIi1vIiA8PCAiL2Rldi9udWxsIgorLSAg ICAgICAgIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8ICAiLSI7CisrICAgICAgICAgPDwg Ii1mUElDIiA8PCAiLXN0ZD1jKysxeiIgPDwgICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwg Z2NjQXJncyk7CisgICAgIFFWRVJJRlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJv Yy53cml0ZShtb2NPdXQpOworQEAgLTE1OTMsMjEgKzE1ODUsNiBAQCB2b2lkIHRzdF9Nb2M6OnFw cml2YXRlcHJvcGVydGllcygpCisgCisgfQorIAorLSNpbmNsdWRlICJ0YXNrMTg5OTk2LmgiCist Cistdm9pZCBJbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uOjpjKCkgdGhyb3coKSB7fQor LQorLXZvaWQgdHN0X01vYzo6aW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbigpCistewor LSAgICBJbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uIHRzdDsKKy0gICAgY29uc3QgUU1l dGFPYmplY3QgKm1vYmogPSB0c3QubWV0YU9iamVjdCgpOworLSAgICBRVkVSSUZZKG1vYmotPmlu ZGV4T2ZTbG90KCJhKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3Qo ImIoKSIpICE9IC0xKTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgiYygpIikgIT0g LTEpOworLSAgICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90KCJkKCkiKSAhPSAtMSk7CistICAg IFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3QoImUoKSIpICE9IC0xKTsKKy19CistCisgdm9pZCB0 c3RfTW9jOjp3YXJuT25Qcm9wZXJ0eVdpdGhvdXRSRUFEKCkKKyB7CisgI2lmZGVmIE1PQ19DUk9T U19DT01QSUxFRAorQEAgLTE4NjksNyArMTg0Niw3IEBAIHZvaWQgdHN0X01vYzo6bm90aWZ5RXJy b3IoKQorIAorICAgICBRU3RyaW5nTGlzdCBhcmdzOworICAgICBhcmdzIDw8ICItYyIgPDwgIi14 IiA8PCAiYysrIiA8PCAiLUkiIDw8ICIuIgorLSAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRl UGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8 ICItIjsKKysgICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rl di9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8PCAiLSI7CisgICAgIHByb2Muc3Rh cnQoImdjYyIsIGFyZ3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7Cisg ICAgIHByb2Mud3JpdGUobW9jT3V0KTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL2l0ZW12aWV3cy9xaGVhZGVydmlldy90c3RfcWhlYWRlcnZpZXcuY3BwIGIvcXRiYXNl L3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3 LmNwcAoraW5kZXggYzM1NWVlOTY2NS4uODhjMDlkZThlMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9xaGVhZGVydmlldy5j cHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3 L3RzdF9xaGVhZGVydmlldy5jcHAKK0BAIC0yNTEsNiArMjUxLDcgQEAgcHJpdmF0ZSBzbG90czoK KyAgICAgdm9pZCB0ZXN0UmVzZXRDYWNoZWRTaXplSGludCgpOworICAgICB2b2lkIHN0YXR1c1Rp cHMoKTsKKyAgICAgdm9pZCB0ZXN0UmVtb3ZpbmdDb2x1bW5zVmlhTGF5b3V0Q2hhbmdlZCgpOwor KyAgICB2b2lkIHRlc3RNb2RlbE1vdmluZ0NvbHVtbnMoKTsKKyAKKyBwcm90ZWN0ZWQ6CisgICAg IHZvaWQgc2V0dXBUZXN0RGF0YShib29sIHVzZV9yZXNldF9tb2RlbCA9IGZhbHNlKTsKK0BAIC0z NjAsNiArMzYxLDEyIEBAIHB1YmxpYzoKKyAgICAgICAgIGVuZFJlbW92ZUNvbHVtbnMoKTsKKyAg ICAgfQorIAorKyAgICB2b2lkIG1vdmVDb2x1bW4oaW50IGZyb20sIGludCB0bykKKysgICAgewor KyAgICAgICAgYmVnaW5Nb3ZlQ29sdW1ucyhRTW9kZWxJbmRleCgpLCBmcm9tLCBmcm9tLCBRTW9k ZWxJbmRleCgpLCB0byk7CisrICAgICAgICBlbmRNb3ZlQ29sdW1ucygpOworKyAgICB9CisrCisg ICAgIHZvaWQgY2xlYW51cCgpCisgICAgIHsKKyAgICAgICAgIGVtaXQgbGF5b3V0QWJvdXRUb0Jl Q2hhbmdlZCgpOworQEAgLTM2MjcsNSArMzYzNCwxOCBAQCB2b2lkIHRzdF9RSGVhZGVyVmlldzo6 dGVzdFJlbW92aW5nQ29sdW1uc1ZpYUxheW91dENoYW5nZWQoKQorICAgICAvLyBUaGUgbWFpbiBw b2ludCBvZiB0aGlzIHRlc3QgaXMgdGhhdCB0aGUgc2VjdGlvbi1zaXplIHJlc3RvcmluZyBjb2Rl IGRpZG4ndCBnbyBvdXQgb2YgYm91bmRzLgorIH0KKyAKKyt2b2lkIHRzdF9RSGVhZGVyVmlldzo6 dGVzdE1vZGVsTW92aW5nQ29sdW1ucygpCisreworKyAgICBRdFRlc3RNb2RlbCBtb2RlbCgxMCwg MTApOworKyAgICBRSGVhZGVyVmlldyBodihRdDo6SG9yaXpvbnRhbCk7CisrICAgIGh2LnNldE1v ZGVsKCZtb2RlbCk7CisrICAgIGh2LnJlc2l6ZVNlY3Rpb25zKFFIZWFkZXJWaWV3OjpSZXNpemVU b0NvbnRlbnRzKTsKKysgICAgaHYuc2hvdygpOworKworKyAgICBRUGVyc2lzdGVudE1vZGVsSW5k ZXggaW5kZXgzID0gbW9kZWwuaW5kZXgoMCwgMyk7CisrICAgIG1vZGVsLm1vdmVDb2x1bW4oMywg MSk7CisrICAgIFFDT01QQVJFKGluZGV4My5jb2x1bW4oKSwgMSk7CisrfQorKworIFFURVNUX01B SU4odHN0X1FIZWFkZXJWaWV3KQorICNpbmNsdWRlICJ0c3RfcWhlYWRlcnZpZXcubW9jIgorZGlm ZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcv dHN0X3F0YWJsZXZpZXcuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3Mv cXRhYmxldmlldy90c3RfcXRhYmxldmlldy5jcHAKK2luZGV4IDc2MTM1N2IyNTIuLjA2YmI3MDYw NzQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xdGFi bGV2aWV3L3RzdF9xdGFibGV2aWV3LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0 cy9pdGVtdmlld3MvcXRhYmxldmlldy90c3RfcXRhYmxldmlldy5jcHAKK0BAIC0zOTcsNiArMzk3 LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBjaGVja0hlYWRlck1pblNpemUoKTsKKyAK KyAgICAgdm9pZCByZXNpemVUb0NvbnRlbnRzKCk7CisrICAgIHZvaWQgcmVzaXplVG9Db250ZW50 c1NwYW5zKCk7CisgCisgICAgIHZvaWQgdGFiRm9jdXMoKTsKKyAgICAgdm9pZCBiaWdNb2RlbCgp OworQEAgLTM3MjEsNiArMzcyMiw3MCBAQCB2b2lkIHRzdF9RVGFibGVWaWV3OjpyZXNpemVUb0Nv bnRlbnRzKCkKKyAKKyB9CisgCisrCisrY2xhc3MgU3Bhbk1vZGVsIDogcHVibGljIFFBYnN0cmFj dFRhYmxlTW9kZWwKKyt7CisrcHVibGljOgorKyAgICBTcGFuTW9kZWwoYm9vbCBzZWN0aW9uc01v dmVkKQorKyAgICAgICAgOiBfc2VjdGlvbnNNb3ZlZChzZWN0aW9uc01vdmVkKQorKyAgICB7fQor KyAgICBpbnQgY29sdW1uQ291bnQoY29uc3QgUU1vZGVsSW5kZXggJiA9IHt9KSBjb25zdCBvdmVy cmlkZSB7IHJldHVybiAyOyB9CisrICAgIGludCByb3dDb3VudChjb25zdCBRTW9kZWxJbmRleCAm ID0ge30pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDE7IH0KKysgICAgUVZhcmlhbnQgZGF0YShj b25zdCBRTW9kZWxJbmRleCAmaWR4LCBpbnQgcm9sZSA9IFF0OjpEaXNwbGF5Um9sZSkgY29uc3Qg b3ZlcnJpZGUKKysgICAgeworKyAgICAgICAgaWYgKHJvbGUgIT0gUXQ6OkRpc3BsYXlSb2xlKQor KyAgICAgICAgICAgIHJldHVybiBRVmFyaWFudCgpOworKyAgICAgICAgY29uc3QgaW50IGNvbCA9 IF9zZWN0aW9uc01vdmVkID8gMSAtIGlkeC5jb2x1bW4oKSA6IGlkeC5jb2x1bW4oKTsKKysgICAg ICAgIGlmIChjb2wgPT0gMCkKKysgICAgICAgICAgICByZXR1cm4gIkxvcmVtIGlwc3VtIGRvbG9y IHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRl bXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiI7CisrICAg ICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKysgICAgfQorK3ByaXZhdGU6CisrICAgIGJvb2wgX3Nl Y3Rpb25zTW92ZWQ7CisrfTsKKysKKysKKyt2b2lkIHRzdF9RVGFibGVWaWV3OjpyZXNpemVUb0Nv bnRlbnRzU3BhbnMoKQorK3sKKysgICAgU3Bhbk1vZGVsIG1vZGVsMShmYWxzZSk7CisrICAgIFNw YW5Nb2RlbCBtb2RlbDIodHJ1ZSk7CisrICAgIFFUYWJsZVZpZXcgdmlldzEsIHZpZXcyLCB2aWV3 MzsKKysgICAgdmlldzEuc2V0TW9kZWwoJm1vZGVsMSk7CisrICAgIHZpZXcyLnNldE1vZGVsKCZt b2RlbDIpOworKyAgICB2aWV3Mi5ob3Jpem9udGFsSGVhZGVyKCktPm1vdmVTZWN0aW9uKDAsIDEp OworKyAgICB2aWV3My5zZXRNb2RlbCgmbW9kZWwxKTsKKysKKysgICAgdmlldzEuc2V0U3Bhbigw LCAwLCAxLCAyKTsKKysgICAgdmlldzIuc2V0U3BhbigwLCAxLCAxLCAyKTsKKysgICAgdmlldzEu c2hvdygpOworKyAgICB2aWV3Mi5zaG93KCk7CisrICAgIHZpZXczLnNob3coKTsKKysgICAgUVZF UklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3MSkpOworKyAgICBRVkVSSUZZ KFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXcyKSk7CisrICAgIFFWRVJJRlkoUVRl c3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZCgmdmlldzMpKTsKKysgICAgdmlldzEuc2V0Q29sdW1u V2lkdGgoMCwgMTAwKTsKKysgICAgdmlldzEuc2V0Q29sdW1uV2lkdGgoMSwgMTAwKTsKKysgICAg dmlldzIuc2V0Q29sdW1uV2lkdGgoMCwgMTAwKTsKKysgICAgdmlldzIuc2V0Q29sdW1uV2lkdGgo MSwgMTAwKTsKKysgICAgdmlldzMuc2V0Q29sdW1uV2lkdGgoMCwgMjAwKTsKKysKKysgICAgdmll dzEucmVzaXplUm93VG9Db250ZW50cygwKTsKKysgICAgdmlldzIucmVzaXplUm93VG9Db250ZW50 cygwKTsKKysgICAgdmlldzMucmVzaXplUm93VG9Db250ZW50cygwKTsKKysgICAgUUNPTVBBUkUo dmlldzEucm93SGVpZ2h0KDApLCB2aWV3My5yb3dIZWlnaHQoMCkpOworKyAgICBRQ09NUEFSRSh2 aWV3Mi5yb3dIZWlnaHQoMCksIHZpZXczLnJvd0hlaWdodCgwKSk7CisrCisrICAgIHZpZXczLnJl c2l6ZUNvbHVtblRvQ29udGVudHMoMCk7CisrICAgIHZpZXczLnJlc2l6ZVJvd1RvQ29udGVudHMo MCk7CisrICAgIC8vIGhlaWdodCBzaG91bGQgYmUgb25seSAxIHRleHQgbGluZSBmb3IgZWFzeSB0 ZXN0aW5nCisrICAgIHZpZXcxLnNldFJvd0hlaWdodCgwLCB2aWV3My52ZXJ0aWNhbEhlYWRlcigp LT5zZWN0aW9uU2l6ZSgwKSk7CisrICAgIHZpZXcyLnNldFJvd0hlaWdodCgwLCB2aWV3My52ZXJ0 aWNhbEhlYWRlcigpLT5zZWN0aW9uU2l6ZSgwKSk7CisrICAgIHZpZXcxLnJlc2l6ZUNvbHVtblRv Q29udGVudHMoMCk7CisrICAgIHZpZXcyLnJlc2l6ZUNvbHVtblRvQ29udGVudHMoMSk7CisrICAg IFFDT01QQVJFKHZpZXcxLmNvbHVtbldpZHRoKDApLCB2aWV3My5jb2x1bW5XaWR0aCgwKSAtIHZp ZXcxLmNvbHVtbldpZHRoKDEpKTsKKysgICAgUUNPTVBBUkUodmlldzIuY29sdW1uV2lkdGgoMCks IHZpZXczLmNvbHVtbldpZHRoKDApIC0gdmlldzIuY29sdW1uV2lkdGgoMSkpOworK30KKysKKyBR VF9CRUdJTl9OQU1FU1BBQ0UKKyBleHRlcm4gYm9vbCBRX1dJREdFVFNfRVhQT1JUIHF0X3RhYl9h bGxfd2lkZ2V0cygpOyAvLyBxYXBwbGljYXRpb24uY3BwCisgUVRfRU5EX05BTUVTUEFDRQorZGlm ZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90 c3RfcWFwcGxpY2F0aW9uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3Fh cHBsaWNhdGlvbi90c3RfcWFwcGxpY2F0aW9uLmNwcAoraW5kZXggYTNiOGVmNzhkOC4uNDk1NWNl YmQ1ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBs aWNhdGlvbi90c3RfcWFwcGxpY2F0aW9uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lk Z2V0cy9rZXJuZWwvcWFwcGxpY2F0aW9uL3RzdF9xYXBwbGljYXRpb24uY3BwCitAQCAtMTQ5OCw3 ICsxNDk4LDcgQEAgdm9pZCB0c3RfUUFwcGxpY2F0aW9uOjpkZXNrdG9wU2V0dGluZ3NBd2FyZSgp CisgICAgIGVudmlyb25tZW50ICs9IFFMYXRpbjFTdHJpbmcoIlFUX01BQ19ESVNBQkxFX0ZPUkVH Uk9VTkRfQVBQTElDQVRJT05fVFJBTlNGT1JNPTEiKTsKKyAgICAgdGVzdFByb2Nlc3Muc2V0RW52 aXJvbm1lbnQoZW52aXJvbm1lbnQpOworICNlbmRpZgorLSAgICB0ZXN0UHJvY2Vzcy5zdGFydCgi ZGVza3RvcHNldHRpbmdzYXdhcmVfaGVscGVyIik7CisrICAgIHRlc3RQcm9jZXNzLnN0YXJ0KCIu L2Rlc2t0b3BzZXR0aW5nc2F3YXJlX2hlbHBlciIpOworICAgICBRVkVSSUZZMih0ZXN0UHJvY2Vz cy53YWl0Rm9yU3RhcnRlZCgpLAorICAgICAgICAgICAgICBxUHJpbnRhYmxlKFFTdHJpbmc6OmZy b21MYXRpbjEoIkNhbm5vdCBzdGFydCAnZGVza3RvcHNldHRpbmdzYXdhcmVfaGVscGVyJzogJTEi KS5hcmcodGVzdFByb2Nlc3MuZXJyb3JTdHJpbmcoKSkpKTsKKyAgICAgUVZFUklGWSh0ZXN0UHJv Y2Vzcy53YWl0Rm9yRmluaXNoZWQoMTAwMDApKTsKK0BAIC0yNDUyLDcgKzI0NTIsNyBAQCB2b2lk IHRzdF9RQXBwbGljYXRpb246OnF0YnVnXzEyNjczKCkKKyAjaWYgUVRfQ09ORklHKHByb2Nlc3Mp CisgICAgIFFQcm9jZXNzIHRlc3RQcm9jZXNzOworICAgICBRU3RyaW5nTGlzdCBhcmd1bWVudHM7 CistICAgIHRlc3RQcm9jZXNzLnN0YXJ0KCJtb2RhbF9oZWxwZXIiLCBhcmd1bWVudHMpOworKyAg ICB0ZXN0UHJvY2Vzcy5zdGFydCgiLi9tb2RhbF9oZWxwZXIiLCBhcmd1bWVudHMpOworICAgICBR VkVSSUZZMih0ZXN0UHJvY2Vzcy53YWl0Rm9yU3RhcnRlZCgpLAorICAgICAgICAgICAgICBxUHJp bnRhYmxlKFFTdHJpbmc6OmZyb21MYXRpbjEoIkNhbm5vdCBzdGFydCAnbW9kYWxfaGVscGVyJzog JTEiKS5hcmcodGVzdFByb2Nlc3MuZXJyb3JTdHJpbmcoKSkpKTsKKyAgICAgUVZFUklGWSh0ZXN0 UHJvY2Vzcy53YWl0Rm9yRmluaXNoZWQoMjAwMDApKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVz dHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0 b24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRv bi90c3RfcWFic3RyYWN0YnV0dG9uLmNwcAoraW5kZXggZWIxMDhhNDBkZS4uZGNhNTUyOGMxYiAx MDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3Ri dXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAKK0BA IC00MSw2ICs0MSw3IEBACisgCisgI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3Au aD4KKyAjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybWludGVncmF0aW9uLmg+CisrI2luY2x1ZGUgPHFw YS9xcGxhdGZvcm10aGVtZS5oPgorIAorIGNsYXNzIHRzdF9RQWJzdHJhY3RCdXR0b24gOiBwdWJs aWMgUU9iamVjdAorIHsKK0BAIC03Niw2ICs3Nyw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZv aWQga2V5TmF2aWdhdGlvbigpOworICNlbmRpZgorIAorKyAgICB2b2lkIGJ1dHRvblByZXNzS2V5 cygpOworKworIHByb3RlY3RlZCBzbG90czoKKyAgICAgdm9pZCBvbkNsaWNrZWQoKTsKKyAgICAg dm9pZCBvblRvZ2dsZWQoIGJvb2wgb24gKTsKK0BAIC0yNjksNyArMjcyLDEzIEBAIHZvaWQgdHN0 X1FBYnN0cmFjdEJ1dHRvbjo6c2V0QXV0b1JlcGVhdCgpCisgICAgICAgICBRQ09NUEFSRShwcmVz c19jb3VudCwgY2xpY2tfY291bnQpOworICAgICAgICAgUVZFUklGWShjbGlja19jb3VudCA+IDEp OworICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgNDoKKysgICAgY2FzZSA0OiB7CisrICAgICAg ICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBs YXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpL ZXk+PigpOworKyAgICAgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0Vu dGVyKSkgeworKyAgICAgICAgICAgIFFTS0lQKCJwbGF0Zm9ybSB0aGVtZSBoYXMgS2V5X0VudGVy IGluIEJ1dHRvblByZXNzS2V5cyIpOworKyAgICAgICAgfQorICAgICAgICAgLy8gY2hlY2sgdGhh dCBwcmVzc2luZyBFTlRFUiBoYXMgbm8gZWZmZWN0IHdoZW4gYXV0b3JlcGVhdCBpcyBmYWxzZQor ICAgICAgICAgdGVzdFdpZGdldC0+c2V0RG93biggZmFsc2UgKTsKKyAgICAgICAgIHRlc3RXaWRn ZXQtPnNldEF1dG9SZXBlYXQoIGZhbHNlICk7CitAQCAtMjg2LDcgKzI5NSwxNCBAQCB2b2lkIHRz dF9RQWJzdHJhY3RCdXR0b246OnNldEF1dG9SZXBlYXQoKQorIAorICAgICAgICAgUVZFUklGWSgg Y2xpY2tfY291bnQgPT0gMCApOworICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgNToKKysgICAg fQorKyAgICBjYXNlIDU6IHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0g UUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6 OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoYnV0dG9uUHJl c3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICAgICAgUVNLSVAoInBs YXRmb3JtIHRoZW1lIGhhcyBLZXlfRW50ZXIgaW4gQnV0dG9uUHJlc3NLZXlzIik7CisrICAgICAg ICB9CisgICAgICAgICAvLyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBubyBlZmZlY3Qg d2hlbiBhdXRvcmVwZWF0IGlzIHRydWUKKyAgICAgICAgIHRlc3RXaWRnZXQtPnNldERvd24oIGZh bHNlICk7CisgICAgICAgICB0ZXN0V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCB0cnVlICk7CitAQCAt MzA0LDYgKzMyMCw3IEBAIHZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6c2V0QXV0b1JlcGVhdCgp CisgCisgICAgICAgICBRVkVSSUZZKCBjbGlja19jb3VudCA9PSAwICk7CisgICAgICAgICBicmVh azsKKysgICAgfQorICAgICBjYXNlIDY6CisgICAgICAgICAvLyB2ZXJpZnkgYXV0b3JlcGVhdCBp cyBvZmYgYnkgZGVmYXVsdC4KKyAgICAgICAgIE15QnV0dG9uIHRtcCggMCk7CitAQCAtNjUxLDUg KzY2OCwxNiBAQCB2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OmtleU5hdmlnYXRpb24oKQorIH0K KyAjZW5kaWYKKyAKKyt2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OmJ1dHRvblByZXNzS2V5cygp CisreworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblBy aXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6 S2V5Pj4oKTsKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBidXR0b25QcmVzc0tleXMubGVuZ3Ro KCk7ICsraSkgeworKyAgICAgICAgUVRlc3Q6OmtleUNsaWNrKHRlc3RXaWRnZXQsIGJ1dHRvblBy ZXNzS2V5c1tpXSk7CisrICAgICAgICBRQ09NUEFSRShjbGlja19jb3VudCwgaSArIDEpOworKyAg ICB9CisrfQorKworIFFURVNUX01BSU4odHN0X1FBYnN0cmFjdEJ1dHRvbikKKyAjaW5jbHVkZSAi dHN0X3FhYnN0cmFjdGJ1dHRvbi5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC90c3RfcWNvbWJvYm94LmNwcCBiL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3gvdHN0X3Fjb21ib2JveC5jcHAKK2luZGV4 IDMyNDM3MDUwZjUuLjQ2YjVhZjZkNjMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9ib3guY3BwCisrKysgYi9xdGJhc2Uv dGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9ib3guY3BwCitA QCAtMTY4LDYgKzE2OCw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgY2hlY2tNZW51SXRl bVBvc1doZW5TdHlsZVNoZWV0SXNTZXQoKTsKKyAgICAgdm9pZCBjaGVja0VtYmVkZGVkTGluZUVk aXRXaGVuU3R5bGVTaGVldElzU2V0KCk7CisgICAgIHZvaWQgcHJvcGFnYXRlU3R5bGVDaGFuZ2Vz KCk7CisrICAgIHZvaWQgYnV0dG9uUHJlc3NLZXlzKCk7CisgCisgcHJpdmF0ZToKKyAgICAgUGxh dGZvcm1JbnB1dENvbnRleHQgbV9wbGF0Zm9ybUlucHV0Q29udGV4dDsKK0BAIC0xNjgyLDYgKzE2 ODMsMTYgQEAgdm9pZCB0c3RfUUNvbWJvQm94OjpzZXRNb2RlbCgpCisgICAgIFFDT01QQVJFKGJv eC5yb290TW9kZWxJbmRleCgpLCByb290TW9kZWxJbmRleCk7CisgICAgIGJveC5zZXRNb2RlbChi b3gubW9kZWwoKSk7CisgICAgIFFDT01QQVJFKGJveC5yb290TW9kZWxJbmRleCgpLCByb290TW9k ZWxJbmRleCk7CisrCisrICAgIC8vIGNoZWNrIHRoYXQgc2V0dGluZyB0aGUgc2FtZSBtb2RlbCBh cyB0aGUgY29tcGxldGVyJ3MgZG9lc24ndCBjcmFzaAorKyAgICBRQ29tcGxldGVyICpjb21wbGV0 ZXIgPSBuZXcgUUNvbXBsZXRlcigmYm94KTsKKysgICAgYm94LnNldEVkaXRhYmxlKHRydWUpOwor KyAgICBib3guc2V0Q29tcGxldGVyKGNvbXBsZXRlcik7CisrICAgIGF1dG8gKmxpc3RNb2RlbCA9 IG5ldyBRU3RyaW5nTGlzdE1vZGVsKHsgIm9uZSIsICJ0d28iIH0sIGNvbXBsZXRlcik7CisrICAg IGNvbXBsZXRlci0+c2V0TW9kZWwobGlzdE1vZGVsKTsKKysgICAgUUNPTVBBUkUobGlzdE1vZGVs LT5yb3dDb3VudCgpLCAyKTsgLy8gbWFrZSBzdXJlIGl0IHdhc24ndCBkZWxldGVkCisrICAgIGJv eC5zZXRNb2RlbChsaXN0TW9kZWwpOworKyAgICBRQ09NUEFSRShsaXN0TW9kZWwtPnJvd0NvdW50 KCksIDIpOyAvLyBtYWtlIHN1cmUgaXQgd2Fzbid0IGRlbGV0ZWQKKyB9CisgCisgdm9pZCB0c3Rf UUNvbWJvQm94OjpzZXRDdXN0b21Nb2RlbEFuZFZpZXcoKQorQEAgLTM2MzIsNSArMzY0MywyNCBA QCB2b2lkIHRzdF9RQ29tYm9Cb3g6OnByb3BhZ2F0ZVN0eWxlQ2hhbmdlcygpCisgICAgIFFWRVJJ RlkoZnJhbWVTdHlsZS5pbnF1aXJlZCk7CisgfQorIAorK3ZvaWQgdHN0X1FDb21ib0JveDo6YnV0 dG9uUHJlc3NLZXlzKCkKKyt7CisrICAgIFFDb21ib0JveCBjb21ib0JveDsKKysgICAgY29tYm9C b3guc2V0RWRpdGFibGUoZmFsc2UpOworKyAgICBjb21ib0JveC5hZGRJdGVtKFFTdHJpbmc6Om51 bWJlcigxKSk7CisrICAgIGNvbWJvQm94LmFkZEl0ZW0oUVN0cmluZzo6bnVtYmVyKDIpKTsKKysg ICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpw bGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7 CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYnV0dG9uUHJlc3NLZXlzLmxlbmd0aCgpOyArK2kp IHsKKysgICAgICAgIFFUZXN0OjprZXlDbGljaygmY29tYm9Cb3gsIGJ1dHRvblByZXNzS2V5c1tp XSk7CisrICAgICAgICAvLyBPbiBzb21lIHBsYXRmb3JtcywgYSB3aW5kb3cgd2lsbCBub3QgYmUg aW1tZWRpYXRlbHkgdmlzaWJsZSwKKysgICAgICAgIC8vIGJ1dCB0YWtlIHNvbWUgZXZlbnQtbG9v cCBpdGVyYXRpb25zIHRvIGNvbXBsZXRlLgorKyAgICAgICAgLy8gVXNpbmcgUVRSWV9WRVJJRlkg dG8gZGVhbCB3aXRoIHRoYXQuCisrICAgICAgICBRVFJZX1ZFUklGWShjb21ib0JveC52aWV3KCkt PmlzVmlzaWJsZSgpKTsKKysgICAgICAgIGNvbWJvQm94LmhpZGVQb3B1cCgpOworKyAgICB9Cisr fQorKworIFFURVNUX01BSU4odHN0X1FDb21ib0JveCkKKyAjaW5jbHVkZSAidHN0X3Fjb21ib2Jv eC5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fj b21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJvIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24u cHJvCitpbmRleCBiZTNjZmNkMTA0Li5jMjI4ZmRmY2NhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmti dXR0b24ucHJvCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1h bmRsaW5rYnV0dG9uL3Fjb21tYW5kbGlua2J1dHRvbi5wcm8KK0BAIC0xLDYgKzEsNiBAQAorIENP TkZJRyArPSB0ZXN0Y2FzZQorIFRBUkdFVCA9IHRzdF9xY29tbWFuZGxpbmtidXR0b24KKy1RVCAr PSB3aWRnZXRzIHRlc3RsaWIKKytRVCArPSB3aWRnZXRzIHRlc3RsaWIgZ3VpLXByaXZhdGUKKyBT T1VSQ0VTICArPSB0c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcAorIAorIAorZGlmZiAtLWdpdCBh L3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vdHN0 X3Fjb21tYW5kbGlua2J1dHRvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdl dHMvcWNvbW1hbmRsaW5rYnV0dG9uL3RzdF9xY29tbWFuZGxpbmtidXR0b24uY3BwCitpbmRleCAw MDQ0ZDMzYzY2Li40Y2YwNjI5NmU0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lk Z2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNw cAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1 dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcAorQEAgLTQwLDYgKzQwLDkgQEAKKyAjaW5j bHVkZSA8UUdyaWRMYXlvdXQ+CisgI2luY2x1ZGUgPFFQYWludGVyPgorIAorKyNpbmNsdWRlIDxw cml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVt ZS5oPgorKworIGNsYXNzIHRzdF9RQ29tbWFuZExpbmtCdXR0b24gOiBwdWJsaWMgUU9iamVjdAor IHsKKyAgICAgUV9PQkpFQ1QKK0BAIC0yMjMsNiArMjI2LDEzIEBAIHZvaWQgdHN0X1FDb21tYW5k TGlua0J1dHRvbjo6c2V0QXV0b1JlcGVhdCgpCisgICAgIC8vIGNoZWNrIHRoYXQgcHJlc3Npbmcg RU5URVIgaGFzIG5vIGVmZmVjdAorICAgICByZXNldENvdW50ZXJzKCk7CisgICAgIHRlc3RXaWRn ZXQtPnNldERvd24oIGZhbHNlICk7CisrICAgIC8vIFNraXAgYWZ0ZXIgcmVzZXQgaWYgQnV0dG9u UHJlc3NLZXlzIGhhcyBLZXlfRW50ZXIKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMg PSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpC dXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29u dGFpbnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorICAgICB0 ZXN0V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCBmYWxzZSApOworICAgICBRVGVzdDo6a2V5UHJlc3Mo IHRlc3RXaWRnZXQsIFF0OjpLZXlfRW50ZXIgKTsKKyAKK0BAIC0yNTUsNiArMjY1LDE0IEBAIHZv aWQgdHN0X1FDb21tYW5kTGlua0J1dHRvbjo6cHJlc3NlZCgpCisgICAgIFFDT01QQVJFKCBwcmVz c19jb3VudCwgKHVpbnQpMSApOworICAgICBRQ09NUEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQp MSApOworIAorKyAgICAvLyBTa2lwIGlmIEJ1dHRvblByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisr ICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6 cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+Pigp OworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7Cisr ICAgICAgICByZXR1cm47CisrICAgIH0KKysKKyAgICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lk Z2V0LFF0OjpLZXlfRW50ZXIgKTsKKyAgICAgUUNPTVBBUkUoIHByZXNzX2NvdW50LCAodWludCkx ICk7CisgICAgIFFDT01QQVJFKCByZWxlYXNlX2NvdW50LCAodWludCkxICk7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gu cHJvIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBi b3gucHJvCitpbmRleCA0YTVlNzZmZjY1Li5hMjM1ZmExZmFjIDEwMDY0NAorLS0tIGEvcXRiYXNl L3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gucHJvCisrKysg Yi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3Fncm91cGJveC5w cm8KK0BAIC0xLDYgKzEsNiBAQAorIENPTkZJRyArPSB0ZXN0Y2FzZQorIFRBUkdFVCA9IHRzdF9x Z3JvdXBib3gKKy1RVCArPSB3aWRnZXRzIHRlc3RsaWIKKytRVCArPSB3aWRnZXRzIHRlc3RsaWIg Z3VpLXByaXZhdGUKKyBTT1VSQ0VTICArPSB0c3RfcWdyb3VwYm94LmNwcAorIAorIAorZGlmZiAt LWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvdHN0X3Fn cm91cGJveC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94 L3RzdF9xZ3JvdXBib3guY3BwCitpbmRleCA0ZmI1ZDI2MmNhLi5kOGQ3NTYyYjczIDEwMDY0NAor LS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC90c3RfcWdy b3VwYm94LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91 cGJveC90c3RfcWdyb3VwYm94LmNwcAorQEAgLTM1LDYgKzM1LDkgQEAKKyAjaW5jbHVkZSA8UVJh ZGlvQnV0dG9uPgorICNpbmNsdWRlIDxRRGlhbG9nPgorIAorKyNpbmNsdWRlIDxwcml2YXRlL3Fn dWlhcHBsaWNhdGlvbl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorKwor ICNpbmNsdWRlICJxZ3JvdXBib3guaCIKKyAKKyBjbGFzcyB0c3RfUUdyb3VwQm94IDogcHVibGlj IFFPYmplY3QKK0BAIC02OSw2ICs3Miw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgcHJv cGFnYXRlRm9jdXMoKTsKKyAgICAgdm9pZCB0YXNrX1FUQlVHXzE5MTcwX2lnbm9yZU1vdXNlUmVs ZWFzZUV2ZW50KCk7CisgICAgIHZvaWQgdGFza19RVEJVR18xNTUxOV9wcm9wYWdhdGVNb3VzZUV2 ZW50cygpOworKyAgICB2b2lkIGJ1dHRvblByZXNzS2V5cygpOworIAorIHByaXZhdGU6CisgICAg IGJvb2wgY2hlY2tlZDsKK0BAIC02MTAsNiArNjE0LDIwIEBAIHZvaWQgdHN0X1FHcm91cEJveDo6 dGFza19RVEJVR18xNTUxOV9wcm9wYWdhdGVNb3VzZUV2ZW50cygpCisgICAgIFFDT01QQVJFKHBh cmVudC5tb3VzZU1vdmVkLCB0cnVlKTsKKyB9CisgCisrdm9pZCB0c3RfUUdyb3VwQm94OjpidXR0 b25QcmVzc0tleXMoKQorK3sKKysgICAgUUdyb3VwQm94IGdyb3VwQm94OworKyAgICBncm91cEJv eC5zZXRDaGVja2FibGUodHJ1ZSk7CisrICAgIFFTaWduYWxTcHkgY2xpY2tlZFNweSgmZ3JvdXBC b3gsICZRR3JvdXBCb3g6OmNsaWNrZWQpOworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5 cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6 OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBi dXR0b25QcmVzc0tleXMubGVuZ3RoKCk7ICsraSkgeworKyAgICAgICAgUVRlc3Q6OmtleUNsaWNr KCZncm91cEJveCwgYnV0dG9uUHJlc3NLZXlzW2ldKTsKKysgICAgICAgIFFDT01QQVJFKGNsaWNr ZWRTcHkubGVuZ3RoKCksIGkgKyAxKTsKKysgICAgfQorK30KKysKKyB2b2lkIHRzdF9RR3JvdXBC b3g6OnNlbmRNb3VzZU1vdmVFdmVudChRV2lkZ2V0ICp3aWRnZXQsIGNvbnN0IFFQb2ludCAmbG9j YWxQb3MpCisgeworICAgICAvLyBTZW5kIGEgTW91c2VNb3ZlIGV2ZW50IHdpdGhvdXQgYWN0dWFs bHkgbW92aW5nIHRoZSBwb2ludGVyCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lk Z2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3FwdXNoYnV0dG9uLnBybyBiL3F0YmFzZS90ZXN0cy9h dXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi9xcHVzaGJ1dHRvbi5wcm8KK2luZGV4IDM1 M2FkMDZjYTIuLmU1NWY2MTQ4ZjIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRn ZXRzL3dpZGdldHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24ucHJvCisrKysgYi9xdGJhc2UvdGVz dHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24ucHJvCitAQCAt MSw2ICsxLDYgQEAKKyBDT05GSUcgKz0gdGVzdGNhc2UKKyBUQVJHRVQgPSB0c3RfcXB1c2hidXR0 b24KKy1RVCArPSB3aWRnZXRzIHRlc3RsaWIKKytRVCArPSB3aWRnZXRzIHRlc3RsaWIgZ3VpLXBy aXZhdGUKKyBTT1VSQ0VTICArPSB0c3RfcXB1c2hidXR0b24uY3BwCisgCisgCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVz aGJ1dHRvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0 b24vdHN0X3FwdXNoYnV0dG9uLmNwcAoraW5kZXggZTgxODUxNGE3OS4uNDA0M2U5MzI2YSAxMDA2 NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi90 c3RfcXB1c2hidXR0b24uY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdl dHMvcXB1c2hidXR0b24vdHN0X3FwdXNoYnV0dG9uLmNwcAorQEAgLTQxLDYgKzQxLDkgQEAKKyAj aW5jbHVkZSA8UVN0eWxlRmFjdG9yeT4KKyAjaW5jbHVkZSA8UVRhYldpZGdldD4KKyAKKysjaW5j bHVkZSA8cHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRm b3JtdGhlbWUuaD4KKysKKyBjbGFzcyB0c3RfUVB1c2hCdXR0b24gOiBwdWJsaWMgUU9iamVjdAor IHsKKyBRX09CSkVDVAorQEAgLTIxMiw2ICsyMTUsMTMgQEAgdm9pZCB0c3RfUVB1c2hCdXR0b246 OmF1dG9SZXBlYXQoKQorICAgICAvLyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBubyBl ZmZlY3QKKyAgICAgcmVzZXRDb3VudGVycygpOworICAgICB0ZXN0V2lkZ2V0LT5zZXREb3duKCBm YWxzZSApOworKyAgICAvLyBTa2lwIGFmdGVyIHJlc2V0IGlmIEJ1dHRvblByZXNzS2V5cyBoYXMg S2V5X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0 aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlz KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0 PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlf RW50ZXIpKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKyAgICAgdGVzdFdpZGdldC0+c2V0 QXV0b1JlcGVhdCggZmFsc2UgKTsKKyAgICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0LCBR dDo6S2V5X0VudGVyICk7CisgCitAQCAtMjQ3LDYgKzI1NywxNCBAQCB2b2lkIHRzdF9RUHVzaEJ1 dHRvbjo6cHJlc3NlZCgpCisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwgKHVpbnQpMSApOwor ICAgICBRQ09NUEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworIAorKyAgICAvLyBTa2lw IGlmIEJ1dHRvblByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0dG9u UHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZv cm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJl c3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICByZXR1cm47CisrICAg IH0KKysKKyAgICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0LFF0OjpLZXlfRW50ZXIgKTsK KyAgICAgUUNPTVBBUkUoIHByZXNzX2NvdW50LCAodWludCkxICk7CisgICAgIFFDT01QQVJFKCBy ZWxlYXNlX2NvdW50LCAodWludCkxICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL21hbnVh bC9yaGkvY3ViZW1hcF9yZW5kZXIvYnVpbGRzaGFkZXIuYmF0IGIvcXRiYXNlL3Rlc3RzL21hbnVh bC9yaGkvY3ViZW1hcF9yZW5kZXIvYnVpbGRzaGFkZXIuYmF0CitvbGQgbW9kZSAxMDA3NTUKK25l dyBtb2RlIDEwMDY0NAorU3VibW9kdWxlIHF0Y29ubmVjdGl2aXR5IGU5NTdkNDgxLi4wNTYyOTRj MDoKK2RpZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL2JsdWV6L2hjaW1h bmFnZXIuY3BwIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9ibHVlei9oY2ltYW5hZ2Vy LmNwcAoraW5kZXggZTI2MzVmYWUuLmE4YjhlM2I5IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZp dHkvc3JjL2JsdWV0b290aC9ibHVlei9oY2ltYW5hZ2VyLmNwcAorKysrIGIvcXRjb25uZWN0aXZp dHkvc3JjL2JsdWV0b290aC9ibHVlei9oY2ltYW5hZ2VyLmNwcAorQEAgLTU2Myw5ICs1NjMsMTEg QEAgdm9pZCBIY2lNYW5hZ2VyOjpoYW5kbGVIY2lBY2xQYWNrZXQoY29uc3QgcXVpbnQ4ICpkYXRh LCBpbnQgc2l6ZSkKKyAKKyB2b2lkIEhjaU1hbmFnZXI6OmhhbmRsZUxlTWV0YUV2ZW50KGNvbnN0 IHF1aW50OCAqZGF0YSkKKyB7CistICAgIC8vIFNwZWMgdjQuMiwgVm9sIDIsIHBhcnQgRSwgNy43 LjY1ZmYKKysgICAgLy8gU3BlYyB2NS4zLCBWb2wgNCwgcGFydCBFLCA3LjcuNjUuKgorICAgICBz d2l0Y2ggKCpkYXRhKSB7CistICAgIGNhc2UgMHgxOiB7CisrICAgIGNhc2UgMHgxOiAvLyBIQ0lf TEVfQ29ubmVjdGlvbl9Db21wbGV0ZQorKyAgICBjYXNlIDB4QTogLy8gSENJX0xFX0VuaGFuY2Vk X0Nvbm5lY3Rpb25fQ29tcGxldGUKKysgICAgeworICAgICAgICAgY29uc3QgcXVpbnQxNiBoYW5k bGUgPSBidF9nZXRfbGUxNihkYXRhICsgMik7CisgICAgICAgICBlbWl0IGNvbm5lY3Rpb25Db21w bGV0ZShoYW5kbGUpOworICAgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZp dHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50X2JsdWV6LmNw cCBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3Zl cnlhZ2VudF9ibHVlei5jcHAKK2luZGV4IDZhOTMxNDNiLi40YTE4Y2ZjNyAxMDA2NDQKKy0tLSBh L3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3Zlcnlh Z2VudF9ibHVlei5jcHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0 b290aHNlcnZpY2VkaXNjb3ZlcnlhZ2VudF9ibHVlei5jcHAKK0BAIC0zMjAsNyArMzIwLDEwIEBA IHZvaWQgUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudFByaXZhdGU6Ol9xX2ZpbmlzaFNk cFNjYW4oUUJsdWV0b290aFNlcnZpY2VECisgICAgICAgICAgICAgZm9yIChjb25zdCBRQmx1ZXRv b3RoVXVpZCAmaWQgOiBzZXJ2aWNlQ2xhc3NVdWlkcykgeworICAgICAgICAgICAgICAgICBpZiAo aWQubWluaW11bVNpemUoKSA9PSAxNikgeworICAgICAgICAgICAgICAgICAgICAgc2VydmljZUlu Zm8uc2V0U2VydmljZVV1aWQoaWQpOworLSAgICAgICAgICAgICAgICAgICAgc2VydmljZUluZm8u c2V0U2VydmljZU5hbWUoUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6dHIoIkN1c3Rv bSBTZXJ2aWNlIikpOworKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2VJbmZvLnNlcnZp Y2VOYW1lKCkuaXNFbXB0eSgpKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZUlu Zm8uc2V0U2VydmljZU5hbWUoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6dHIoIkN1c3RvbSBTZXJ2aWNlIikpOwor KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgUUJsdWV0b290aFNl cnZpY2VJbmZvOjpTZXF1ZW5jZSBtb2RTZXEgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZXJ2aWNlSW5mby5hdHRyaWJ1dGUoUUJsdWV0b290aFNlcnZpY2VJbmZvOjpTZXJ2aWNlQ2xh c3NJZHMpLnZhbHVlPFFCbHVldG9vdGhTZXJ2aWNlSW5mbzo6U2VxdWVuY2U+KCk7CisgICAgICAg ICAgICAgICAgICAgICBtb2RTZXEucmVtb3ZlT25lKFFWYXJpYW50Ojpmcm9tVmFsdWUoaWQpKTsK K0BAIC0zMzQsOCArMzM3LDEwIEBAIHZvaWQgUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2Vu dFByaXZhdGU6Ol9xX2ZpbmlzaFNkcFNjYW4oUUJsdWV0b290aFNlcnZpY2VECisgICAgICAgICAg ICAgICAgIHFDRGVidWcoUVRfQlRfQkxVRVopIDw8ICJEaXNjb3ZlcmVkIHNlcnZpY2VzIiA8PCBk aXNjb3ZlcmVkRGV2aWNlcy5hdCgwKS5hZGRyZXNzKCkudG9TdHJpbmcoKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzZXJ2aWNlSW5mby5zZXJ2aWNlTmFtZSgpIDw8 IHNlcnZpY2VJbmZvLnNlcnZpY2VVdWlkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPDwgIj4+PiIgPDwgc2VydmljZUluZm8uc2VydmljZUNsYXNzVXVpZHMoKTsKKy0K Ky0gICAgICAgICAgICAgICAgZW1pdCBxLT5zZXJ2aWNlRGlzY292ZXJlZChzZXJ2aWNlSW5mbyk7 CisrICAgICAgICAgICAgICAgIC8vIFVzZSBxdWV1ZWQgY29ubmVjdGlvbiB0byBhbGxvdyB1cyBm aW5pc2ggdGhlIHNlcnZpY2UgbG9vcGluZzsgdGhlIGFwcGxpY2F0aW9uCisrICAgICAgICAgICAg ICAgIC8vIG1pZ2h0IGNhbGwgc3RvcCgpIHdoZW4gaXQgaGFzIGRldGVjdGVkIHRoZSBzZXJ2aWNl LW9mLWludGVyZXN0LgorKyAgICAgICAgICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9k KHEsICJzZXJ2aWNlRGlzY292ZXJlZCIsIFF0OjpRdWV1ZWRDb25uZWN0aW9uLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFfQVJHKFFCbHVldG9vdGhTZXJ2aWNl SW5mbywgc2VydmljZUluZm8pKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgIH0K K2RpZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2Nr ZXQuY3BwIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0LmNw cAoraW5kZXggZTRkODU0NDcuLmFhZGQ0NzU1IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkv c3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0LmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkv c3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0LmNwcAorQEAgLTU5Myw3ICs1OTMsNyBAQCB2 b2lkIFFCbHVldG9vdGhTb2NrZXQ6OnNldFNvY2tldFN0YXRlKFFCbHVldG9vdGhTb2NrZXQ6OlNv Y2tldFN0YXRlIHN0YXRlKQorIGJvb2wgUUJsdWV0b290aFNvY2tldDo6Y2FuUmVhZExpbmUoKSBj b25zdAorIHsKKyAgICAgUV9EKGNvbnN0IFFCbHVldG9vdGhTb2NrZXRCYXNlKTsKKy0gICAgcmV0 dXJuIGQtPmNhblJlYWRMaW5lKCk7CisrICAgIHJldHVybiBkLT5jYW5SZWFkTGluZSgpIHx8IFFJ T0RldmljZTo6Y2FuUmVhZExpbmUoKTsKKyB9CisgCisgLyohCitkaWZmIC0tZ2l0IGEvcXRjb25u ZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAgYi9x dGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXRfYmx1ZXpkYnVzLmNw cAoraW5kZXggMDg0YWE5NTguLmQ2YWExN2E3IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkv c3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAKKysrKyBiL3F0Y29u bmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRidXMuY3BwCitA QCAtMjg0LDYgKzI4NCwxMCBAQCB2b2lkIFFCbHVldG9vdGhTb2NrZXRQcml2YXRlQmx1ZXpEQnVz Ojpjb25uZWN0VG9TZXJ2aWNlKAorICAgICAgICAgcmV0dXJuOworICAgICB9CisgCisrICAgIGlm IChzZXJ2aWNlLnNvY2tldFByb3RvY29sKCkgIT0gUUJsdWV0b290aFNlcnZpY2VJbmZvOjpQcm90 b2NvbDo6VW5rbm93blByb3RvY29sKQorKyAgICAgICAgc29ja2V0VHlwZSA9IHNlcnZpY2Uuc29j a2V0UHJvdG9jb2woKTsKKysgICAgcUNEZWJ1ZyhRVF9CVF9CTFVFWikgPDwgIlNvY2tldCBwcm90 b2NvbCB1c2VkOiIgPDwgc29ja2V0VHlwZTsKKysKKyAgICAgY29ubmVjdFRvU2VydmljZShzZXJ2 aWNlLmRldmljZSgpLmFkZHJlc3MoKSwgdGFyZ2V0U2VydmljZSwgb3Blbk1vZGUpOworIH0KKyAK K2RpZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2NrZXQv dHN0X3FibHVldG9vdGhzb2NrZXQuY3BwIGIvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1 ZXRvb3Roc29ja2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcAoraW5kZXggMDViYzFhMGYuLmE3 YjVlZjFmIDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRvb3Ro c29ja2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvdGVz dHMvYXV0by9xYmx1ZXRvb3Roc29ja2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcAorQEAgLTE0 Miw3ICsxNDIsNyBAQCB2b2lkIHRzdF9RQmx1ZXRvb3RoU29ja2V0Ojppbml0VGVzdENhc2UoKQor ICAgICBxRGVidWcoKSA8PCAiU3RhcnRpbmcgZGlzY292ZXJ5IjsKKyAKKyAgICAgc2RhLT5zZXRV dWlkRmlsdGVyKFFCbHVldG9vdGhVdWlkKFFTdHJpbmcoVEVTVF9TRVJWSUNFX1VVSUQpKSk7Cist ICAgIHNkYS0+c3RhcnQoUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6TWluaW1hbERp c2NvdmVyeSk7CisrICAgIHNkYS0+c3RhcnQoUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2Vu dDo6RnVsbERpc2NvdmVyeSk7CisgCisgICAgIGZvciAoaW50IGNvbm5lY3RUaW1lID0gTWF4Q29u bmVjdFRpbWU7ICFkb25lX2Rpc2NvdmVyeSAmJiBjb25uZWN0VGltZSA+IDA7IGNvbm5lY3RUaW1l IC09IDEwMDApCisgICAgICAgICBRVGVzdDo6cVdhaXQoMTAwMCk7CitTdWJtb2R1bGUgcXRkZWNs YXJhdGl2ZSBmNTcwMWYwZC4uOGRlZmU3YmY6CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9z cmMvcW1sL2NvbW1vbi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmggYi9xdGRlY2xhcmF0aXZlL3Ny Yy9xbWwvY29tbW9uL3FxbWxqc2ZpeGVkcG9vbGFycmF5X3AuaAoraW5kZXggYjY1Yjk5NGQ2Yy4u MTVhOGNkNjg3OCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9jb21tb24vcXFt bGpzZml4ZWRwb29sYXJyYXlfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvY29tbW9u L3FxbWxqc2ZpeGVkcG9vbGFycmF5X3AuaAorQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgorICAg ICAgICAgaWYgKFFUeXBlSW5mbzxUPjo6aXNDb21wbGV4KSB7CisgICAgICAgICAgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgICAgICBuZXcgKGRhdGEgKyBp KSBUKHZlY3Rvci5hdChpKSk7CistICAgICAgICB9IGVsc2UgeworKyAgICAgICAgfSBlbHNlIGlm IChjb3VudCkgeworICAgICAgICAgICAgIG1lbWNweShkYXRhLCBzdGF0aWNfY2FzdDxjb25zdCB2 b2lkKj4odmVjdG9yLmNvbnN0RGF0YSgpKSwgY291bnQgKiBzaXplb2YoVCkpOworICAgICAgICAg fQorICAgICB9CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pzcnVudGltZS9x djRxb2JqZWN0d3JhcHBlci5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2 NHFvYmplY3R3cmFwcGVyLmNwcAoraW5kZXggZTU3Y2RkODI3OC4uOTQ2MTM1OThhZiAxMDA2NDQK Ky0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9qc3J1bnRpbWUvcXY0cW9iamVjdHdyYXBwZXIu Y3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmplY3R3cmFw cGVyLmNwcAorQEAgLTExNDUsOCArMTE0NSw3IEBAIHZvaWQgSGVhcDo6UU9iamVjdFdyYXBwZXI6 Om1hcmtPYmplY3RzKEhlYXA6OkJhc2UgKnRoYXQsIFFWNDo6TWFya1N0YWNrICptYXJrU3RhCisg dm9pZCBRT2JqZWN0V3JhcHBlcjo6ZGVzdHJveU9iamVjdChib29sIGxhc3RDYWxsKQorIHsKKyAg ICAgSGVhcDo6UU9iamVjdFdyYXBwZXIgKmggPSBkKCk7CistICAgIGlmICghaC0+aW50ZXJuYWxD bGFzcykKKy0gICAgICAgIHJldHVybjsgLy8gZGVzdHJveU9iamVjdCBhbHJlYWR5IGdvdCBjYWxs ZWQKKysgICAgUV9BU1NFUlQoaC0+aW50ZXJuYWxDbGFzcyk7CisgCisgICAgIGlmIChoLT5vYmpl Y3QoKSkgeworICAgICAgICAgUVFtbERhdGEgKmRkYXRhID0gUVFtbERhdGE6OmdldChoLT5vYmpl Y3QoKSwgZmFsc2UpOworQEAgLTExNzYsNyArMTE3NSw3IEBAIHZvaWQgUU9iamVjdFdyYXBwZXI6 OmRlc3Ryb3lPYmplY3QoYm9vbCBsYXN0Q2FsbCkKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAg ICBoLT5+RGF0YSgpOworKyAgICBoLT5kZXN0cm95KCk7CisgfQorIAorIAorZGlmZiAtLWdpdCBh L3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcW1sL21lbW9yeS9xdjRtbS5jcHAKK2luZGV4IDA2Y2FmMDRlNWEuLmRhMTQ5YTY3YzQgMTAw NjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNwcAorKysrIGIv cXRkZWNsYXJhdGl2ZS9zcmMvcW1sL21lbW9yeS9xdjRtbS5jcHAKK0BAIC05ODEsNyArOTgxLDcg QEAgdm9pZCBNZW1vcnlNYW5hZ2VyOjpzd2VlcChib29sIGxhc3RTd2VlcCwgQ2xhc3NEZXN0cm95 U3RhdHNDYWxsYmFjayBjbGFzc0NvdW50UHQKKyAKKyAgICAgaWYgKE11bHRpcGx5V3JhcHBlZFFP YmplY3RNYXAgKm11bHRpcGx5V3JhcHBlZFFPYmplY3RzID0gZW5naW5lLT5tX211bHRpcGx5V3Jh cHBlZFFPYmplY3RzKSB7CisgICAgICAgICBmb3IgKE11bHRpcGx5V3JhcHBlZFFPYmplY3RNYXA6 Okl0ZXJhdG9yIGl0ID0gbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IG11 bHRpcGx5V3JhcHBlZFFPYmplY3RzLT5lbmQoKTspIHsKKy0gICAgICAgICAgICBpZiAoIWl0LnZh bHVlKCkuaXNOdWxsT3JVbmRlZmluZWQoKSkKKysgICAgICAgICAgICBpZiAoaXQudmFsdWUoKS5p c051bGxPclVuZGVmaW5lZCgpKQorICAgICAgICAgICAgICAgICBpdCA9IG11bHRpcGx5V3JhcHBl ZFFPYmplY3RzLT5lcmFzZShpdCk7CisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg ICArK2l0OworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVs ZWdhdGVtb2RlbC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRl bW9kZWwuY3BwCitpbmRleCAyMDc5YThlZDA0Li5hNTc3Y2IyMzUxIDEwMDY0NAorLS0tIGEvcXRk ZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorKysrIGIvcXRk ZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorQEAgLTM4OSw2 ICszODksMTIgQEAgdm9pZCBRUW1sRGVsZWdhdGVNb2RlbFByaXZhdGU6OmNvbm5lY3RUb0Fic3Ry YWN0SXRlbU1vZGVsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgcSwgIFFRbWxEZWxlZ2F0ZU1v ZGVsLCBTTE9UKF9xX3Jvd3NSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisgICAgIHFt bG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwocm93c0Fib3V0 VG9CZVJlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLAorICAgICAgICAgICAgICAgICAgICAg ICBxLCAgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3Ffcm93c0Fib3V0VG9CZVJlbW92ZWQoUU1v ZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJh Y3RJdGVtTW9kZWwsIFNJR05BTChjb2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5kZXgsaW50LGludCkp LAorKyAgICAgICAgICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9j b2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgcW1sb2JqZWN0X2Nv bm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChjb2x1bW5zUmVtb3ZlZChRTW9k ZWxJbmRleCxpbnQsaW50KSksCisrICAgICAgICAgICAgICAgICAgICAgIHEsIFFRbWxEZWxlZ2F0 ZU1vZGVsLCBTTE9UKF9xX2NvbHVtbnNSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7Cisr ICAgIHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoY29s dW1uc01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSksCisrICAgICAg ICAgICAgICAgICAgICAgIHEsIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2NvbHVtbnNNb3Zl ZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpKTsKKyAgICAgcW1sb2JqZWN0 X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChkYXRhQ2hhbmdlZChRTW9k ZWxJbmRleCxRTW9kZWxJbmRleCxRVmVjdG9yPGludD4pKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgcSwgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3FfZGF0YUNoYW5nZWQoUU1vZGVsSW5kZXgs UU1vZGVsSW5kZXgsUVZlY3RvcjxpbnQ+KSkpOworICAgICBxbWxvYmplY3RfY29ubmVjdChhaW0s IFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKHJvd3NNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50 LFFNb2RlbEluZGV4LGludCkpLAorQEAgLTQxMyw2ICs0MTksMTIgQEAgdm9pZCBRUW1sRGVsZWdh dGVNb2RlbFByaXZhdGU6OmRpc2Nvbm5lY3RGcm9tQWJzdHJhY3RJdGVtTW9kZWwoKQorICAgICAg ICAgICAgICAgICAgICAgICAgIHEsIFNMT1QoX3Ffcm93c0Fib3V0VG9CZVJlbW92ZWQoUU1vZGVs SW5kZXgsaW50LGludCkpKTsKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChy b3dzUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgcSwgU0xPVChfcV9yb3dzUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBR T2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKGNvbHVtbnNJbnNlcnRlZChRTW9kZWxJbmRl eCxpbnQsaW50KSksIHEsCisrICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChfcV9jb2x1bW5z SW5zZXJ0ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgUU9iamVjdDo6ZGlzY29ubmVj dChhaW0sIFNJR05BTChjb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSksIHEsCisr ICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChfcV9jb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRl eCxpbnQsaW50KSkpOworKyAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKGNvbHVt bnNNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpLCBxLAorKyAgICAg ICAgICAgICAgICAgICAgICAgIFNMT1QoX3FfY29sdW1uc01vdmVkKFFNb2RlbEluZGV4LGludCxp bnQsUU1vZGVsSW5kZXgsaW50KSkpOworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lH TkFMKGRhdGFDaGFuZ2VkKFFNb2RlbEluZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50PikpLAor ICAgICAgICAgICAgICAgICAgICAgICAgIHEsIFNMT1QoX3FfZGF0YUNoYW5nZWQoUU1vZGVsSW5k ZXgsUU1vZGVsSW5kZXgsUVZlY3RvcjxpbnQ+KSkpOworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0 KGFpbSwgU0lHTkFMKHJvd3NNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGlu dCkpLAorQEAgLTE5NzMsNiArMTk4NSwzOCBAQCB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9y b3dzTW92ZWQoCisgICAgIH0KKyB9CisgCisrdm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3FfY29s dW1uc0luc2VydGVkKGNvbnN0IFFNb2RlbEluZGV4ICZwYXJlbnQsIGludCBiZWdpbiwgaW50IGVu ZCkKKyt7CisrICAgIFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7CisrICAgIFFfVU5VU0VEKGVuZCk7 CisrICAgIGlmIChwYXJlbnQgPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYmIGJlZ2lu ID09IDApIHsKKysgICAgICAgIC8vIG1hcmsgYWxsIGl0ZW1zIGFzIGNoYW5nZWQKKysgICAgICAg IF9xX2l0ZW1zQ2hhbmdlZCgwLCBkLT5tX2NvdW50LCBRVmVjdG9yPGludD4oKSk7CisrICAgIH0K Kyt9CisrCisrdm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3FfY29sdW1uc1JlbW92ZWQoY29uc3Qg UU1vZGVsSW5kZXggJnBhcmVudCwgaW50IGJlZ2luLCBpbnQgZW5kKQorK3sKKysgICAgUV9EKFFR bWxEZWxlZ2F0ZU1vZGVsKTsKKysgICAgUV9VTlVTRUQoZW5kKTsKKysgICAgaWYgKHBhcmVudCA9 PSBkLT5tX2FkYXB0b3JNb2RlbC5yb290SW5kZXggJiYgYmVnaW4gPT0gMCkgeworKyAgICAgICAg Ly8gbWFyayBhbGwgaXRlbXMgYXMgY2hhbmdlZAorKyAgICAgICAgX3FfaXRlbXNDaGFuZ2VkKDAs IGQtPm1fY291bnQsIFFWZWN0b3I8aW50PigpKTsKKysgICAgfQorK30KKysKKyt2b2lkIFFRbWxE ZWxlZ2F0ZU1vZGVsOjpfcV9jb2x1bW5zTW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCwg aW50IHN0YXJ0LCBpbnQgZW5kLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBRTW9kZWxJbmRleCAmZGVzdGluYXRpb24sIGludCBjb2x1bW4pCisreworKyAg ICBRX0QoUVFtbERlbGVnYXRlTW9kZWwpOworKyAgICBRX1VOVVNFRChlbmQpOworKyAgICBpZiAo KHBhcmVudCA9PSBkLT5tX2FkYXB0b3JNb2RlbC5yb290SW5kZXggJiYgc3RhcnQgPT0gMCkKKysg ICAgICAgIHx8IChkZXN0aW5hdGlvbiA9PSBkLT5tX2FkYXB0b3JNb2RlbC5yb290SW5kZXggJiYg Y29sdW1uID09IDApKSB7CisrICAgICAgICAvLyBtYXJrIGFsbCBpdGVtcyBhcyBjaGFuZ2VkCisr ICAgICAgICBfcV9pdGVtc0NoYW5nZWQoMCwgZC0+bV9jb3VudCwgUVZlY3RvcjxpbnQ+KCkpOwor KyAgICB9CisrfQorKworIHZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2RhdGFDaGFuZ2VkKGNv bnN0IFFNb2RlbEluZGV4ICZiZWdpbiwgY29uc3QgUU1vZGVsSW5kZXggJmVuZCwgY29uc3QgUVZl Y3RvcjxpbnQ+ICZyb2xlcykKKyB7CisgICAgIFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7CitkaWZm IC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsX3Au aCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbF9wLmgKK2lu ZGV4IDhhYWI0YmFkY2EuLmQxNDBiZmJhYWYgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Ny Yy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWxfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3Ny Yy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWxfcC5oCitAQCAtMTUyLDYgKzE1Miw5IEBAIHBy aXZhdGUgUV9TTE9UUzoKKyAgICAgdm9pZCBfcV9pdGVtc01vdmVkKGludCBmcm9tLCBpbnQgdG8s IGludCBjb3VudCk7CisgICAgIHZvaWQgX3FfbW9kZWxSZXNldCgpOworICAgICB2b2lkIF9xX3Jv d3NJbnNlcnRlZChjb25zdCBRTW9kZWxJbmRleCAmLGludCxpbnQpOworKyAgICB2b2lkIF9xX2Nv bHVtbnNJbnNlcnRlZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCk7CisrICAgIHZvaWQg X3FfY29sdW1uc1JlbW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBpbnQpOworKyAgICB2 b2lkIF9xX2NvbHVtbnNNb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCwgY29uc3Qg UU1vZGVsSW5kZXggJiwgaW50KTsKKyAgICAgdm9pZCBfcV9yb3dzQWJvdXRUb0JlUmVtb3ZlZChj b25zdCBRTW9kZWxJbmRleCAmcGFyZW50LCBpbnQgYmVnaW4sIGludCBlbmQpOworICAgICB2b2lk IF9xX3Jvd3NSZW1vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICYsaW50LGludCk7CisgICAgIHZvaWQg X3Ffcm93c01vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCwgaW50LCBjb25zdCBRTW9kZWxJ bmRleCAmLCBpbnQpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vz c2libGUvcWFjY2Vzc2libGVxdWlja2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2sv YWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNraXRlbS5jcHAKK2luZGV4IDg1NzE5ZmRjODAuLjc4 ZTJhYjMwMmMgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxl L3FhY2Nlc3NpYmxlcXVpY2tpdGVtLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2sv YWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNraXRlbS5jcHAKK0BAIC00Niw2ICs0Niw3IEBACisg I2luY2x1ZGUgIlF0UXVpY2svcHJpdmF0ZS9xcXVpY2t0ZXh0aW5wdXRfcC5oIgorICNpbmNsdWRl ICJRdFF1aWNrL3ByaXZhdGUvcXF1aWNrYWNjZXNzaWJsZWF0dGFjaGVkX3AuaCIKKyAjaW5jbHVk ZSAiUXRRdWljay9xcXVpY2t0ZXh0ZG9jdW1lbnQuaCIKKysjaW5jbHVkZSAiUXRRdWljay9xcXVp Y2tyZW5kZXJjb250cm9sLmgiCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgI2lmIFFUX0NPTkZJ RyhhY2Nlc3NpYmlsaXR5KQorQEAgLTU3LDcgKzU4LDE5IEBAIFFBY2Nlc3NpYmxlUXVpY2tJdGVt OjpRQWNjZXNzaWJsZVF1aWNrSXRlbShRUXVpY2tJdGVtICppdGVtKQorIAorIFFXaW5kb3cgKlFB Y2Nlc3NpYmxlUXVpY2tJdGVtOjp3aW5kb3coKSBjb25zdAorIHsKKy0gICAgcmV0dXJuIGl0ZW0o KS0+d2luZG93KCk7CisrICAgIFFRdWlja1dpbmRvdyAqd2luZG93ID0gaXRlbSgpLT53aW5kb3co KTsKKysKKysgICAgLy8gRm9yIFFRdWlja1dpZGdldCB0aGUgYWJvdmUgd2luZG93IHdpbGwgYmUg dGhlIG9mZnNjcmVlbiBRUXVpY2tXaW5kb3csCisrICAgIC8vIHdoaWNoIGlzIG5vdCBhIHBhcnQg b2YgdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4gRGV0ZWN0IHRoaXMgY2FzZSBhbmQKKysgICAgLy8g cmV0dXJuIHRoZSB3aW5kb3cgZm9yIHRoZSBRUXVpY2tXaWRnZXQgaW5zdGVhZC4KKysgICAgaWYg KHdpbmRvdyAmJiAhd2luZG93LT5oYW5kbGUoKSkgeworKyAgICAgICAgaWYgKFFRdWlja1JlbmRl ckNvbnRyb2wgKnJlbmRlckNvbnRyb2wgPSBRUXVpY2tXaW5kb3dQcml2YXRlOjpnZXQod2luZG93 KS0+cmVuZGVyQ29udHJvbCkgeworKyAgICAgICAgICAgIGlmIChRV2luZG93ICpyZW5kZXJXaW5k b3cgPSByZW5kZXJDb250cm9sLT5yZW5kZXJXaW5kb3cobnVsbHB0cikpCisrICAgICAgICAgICAg ICAgIHJldHVybiByZW5kZXJXaW5kb3c7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgcmV0 dXJuIHdpbmRvdzsKKyB9CisgCisgaW50IFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpjaGlsZENvdW50 KCkgY29uc3QKK0BAIC0xMTMsMTkgKzEyNiwxNSBAQCBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFj Y2Vzc2libGVRdWlja0l0ZW06OmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdAorIFFBY2Nlc3Np YmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrSXRlbTo6cGFyZW50KCkgY29uc3QKKyB7Cisg ICAgIFFRdWlja0l0ZW0gKnBhcmVudCA9IGl0ZW0oKS0+cGFyZW50SXRlbSgpOworLSAgICBRUXVp Y2tXaW5kb3cgKndpbmRvdyA9IGl0ZW0oKS0+d2luZG93KCk7CistICAgIFFRdWlja0l0ZW0gKmNp ID0gd2luZG93ID8gd2luZG93LT5jb250ZW50SXRlbSgpIDogbnVsbHB0cjsKKysgICAgUVF1aWNr V2luZG93ICppdGVtV2luZG93ID0gaXRlbSgpLT53aW5kb3coKTsKKysgICAgUVF1aWNrSXRlbSAq Y2kgPSBpdGVtV2luZG93ID8gaXRlbVdpbmRvdy0+Y29udGVudEl0ZW0oKSA6IG51bGxwdHI7Cisg ICAgIHdoaWxlIChwYXJlbnQgJiYgIVFRdWlja0l0ZW1Qcml2YXRlOjpnZXQocGFyZW50KS0+aXNB Y2Nlc3NpYmxlICYmIHBhcmVudCAhPSBjaSkKKyAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFy ZW50SXRlbSgpOworIAorICAgICBpZiAocGFyZW50KSB7CisgICAgICAgICBpZiAocGFyZW50ID09 IGNpKSB7CistICAgICAgICAgICAgLy8gSnVtcCBvdXQgdG8gdGhlIHNjZW5lIHdpZGdldCBpZiB0 aGUgcGFyZW50IGlzIHRoZSByb290IGl0ZW0uCistICAgICAgICAgICAgLy8gVGhlcmUgYXJlIHR3 byByb290IGl0ZW1zLCBRUXVpY2tXaW5kb3c6OnJvb3RJdGVtIGFuZAorLSAgICAgICAgICAgIC8v IFFRdWlja1ZpZXc6OmRlY2xhcmF0aXZlUm9vdC4gVGhlIGZvcm1lciBpcyB0aGUgdHJ1ZSByb290 IGl0ZW0sCistICAgICAgICAgICAgLy8gYnV0IGlzIG5vdCBhIHBhcnQgb2YgdGhlIGFjY2Vzc2li aWxpdHkgdHJlZS4gQ2hlY2sgaWYgd2UgaGl0CistICAgICAgICAgICAgLy8gaXQgaGVyZSBhbmQg cmV0dXJuIGFuIGludGVyZmFjZSBmb3IgdGhlIHNjZW5lIGluc3RlYWQuCistICAgICAgICAgICAg cmV0dXJuIFFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uod2luZG93KTsKKysg ICAgICAgICAgICAvLyBKdW1wIG91dCB0byB0aGUgd2luZG93IGlmIHRoZSBwYXJlbnQgaXMgdGhl IHJvb3QgaXRlbQorKyAgICAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3Np YmxlSW50ZXJmYWNlKHdpbmRvdygpKTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg d2hpbGUgKHBhcmVudCAmJiAhcGFyZW50LT5kX2Z1bmMoKS0+aXNBY2Nlc3NpYmxlKQorICAgICAg ICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudEl0ZW0oKTsKK0BAIC0xODgsNyArMTk3 LDcgQEAgUUFjY2Vzc2libGU6OlN0YXRlIFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpzdGF0ZSgpIGNv bnN0CisgICAgIFFSZWN0IHZpZXdSZWN0XyA9IHZpZXdSZWN0KCk7CisgICAgIFFSZWN0IGl0ZW1S ZWN0ID0gcmVjdCgpOworIAorLSAgICBpZiAodmlld1JlY3RfLmlzTnVsbCgpIHx8IGl0ZW1SZWN0 LmlzTnVsbCgpIHx8ICFpdGVtKCktPndpbmRvdygpIHx8ICFpdGVtKCktPndpbmRvdygpLT5pc1Zp c2libGUoKSB8fCFpdGVtKCktPmlzVmlzaWJsZSgpIHx8IHFGdXp6eUlzTnVsbChpdGVtKCktPm9w YWNpdHkoKSkpCisrICAgIGlmICh2aWV3UmVjdF8uaXNOdWxsKCkgfHwgaXRlbVJlY3QuaXNOdWxs KCkgfHwgIXdpbmRvdygpIHx8ICF3aW5kb3coKS0+aXNWaXNpYmxlKCkgfHwhaXRlbSgpLT5pc1Zp c2libGUoKSB8fCBxRnV6enlJc051bGwoaXRlbSgpLT5vcGFjaXR5KCkpKQorICAgICAgICAgc3Rh dGUuaW52aXNpYmxlID0gdHJ1ZTsKKyAgICAgaWYgKCF2aWV3UmVjdF8uaW50ZXJzZWN0cyhpdGVt UmVjdCkpCisgICAgICAgICBzdGF0ZS5vZmZzY3JlZW4gPSB0cnVlOworQEAgLTIwMSw2ICsyMTAs MTAgQEAgUUFjY2Vzc2libGU6OlN0YXRlIFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpzdGF0ZSgpIGNv bnN0CisgICAgIGlmIChyb2xlKCkgPT0gUUFjY2Vzc2libGU6OkVkaXRhYmxlVGV4dCkKKyAgICAg ICAgIGlmIChhdXRvIHRpID0gcW9iamVjdF9jYXN0PFFRdWlja1RleHRJbnB1dCAqPihpdGVtKCkp KQorICAgICAgICAgICAgIHN0YXRlLnBhc3N3b3JkRWRpdCA9IHRpLT5lY2hvTW9kZSgpICE9IFFR dWlja1RleHRJbnB1dDo6Tm9ybWFsOworKyAgICBpZiAoIWl0ZW0oKS0+aXNFbmFibGVkKCkpIHsK KysgICAgICAgIHN0YXRlLmZvY3VzYWJsZSA9IGZhbHNlOworKyAgICAgICAgc3RhdGUuZGlzYWJs ZWQgPSB0cnVlOworKyAgICB9CisgICAgIHJldHVybiBzdGF0ZTsKKyB9CisgCitkaWZmIC0tZ2l0 IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNrdmll d19wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVp Y2t2aWV3X3AuaAoraW5kZXggMzlmZmNhZjM5Yy4uOGJhYTAxMzMwYyAxMDA2NDQKKy0tLSBhL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5o CisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVp Y2t2aWV3X3AuaAorQEAgLTU4LDcgKzU4LDcgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgI2lm IFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorIAorLWNsYXNzIFFBY2Nlc3NpYmxlUXVpY2tXaW5k b3cgOiBwdWJsaWMgUUFjY2Vzc2libGVPYmplY3QKKytjbGFzcyBRX1FVSUNLX0VYUE9SVCBRQWNj ZXNzaWJsZVF1aWNrV2luZG93IDogcHVibGljIFFBY2Nlc3NpYmxlT2JqZWN0CisgeworIHB1Ymxp YzoKKyAgICAgUUFjY2Vzc2libGVRdWlja1dpbmRvdyhRUXVpY2tXaW5kb3cgKm9iamVjdCk7Citk aWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrZHJhZy5jcHAg Yi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcAoraW5kZXggODMy MWZjZmVlZC4uMzgzMDc4YjNiOSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr L2l0ZW1zL3FxdWlja2RyYWcuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVt cy9xcXVpY2tkcmFnLmNwcAorQEAgLTQ4MSw3ICs0ODEsOSBAQCB2b2lkIFFRdWlja0RyYWdBdHRh Y2hlZDo6c2V0S2V5cyhjb25zdCBRU3RyaW5nTGlzdCAma2V5cykKKyAgICAgXHFtbGF0dGFjaGVk cHJvcGVydHkgc3RyaW5nbGlzdCBRdFF1aWNrOjpEcmFnOjptaW1lRGF0YQorICAgICBcc2luY2Ug NS4yCisgCistICAgIFRoaXMgcHJvcGVydHkgaG9sZHMgYSBtYXAgb2YgbWltZURhdGEgdGhhdCBp cyB1c2VkIGR1cmluZyBzdGFydERyYWcuCisrICAgIFRoaXMgcHJvcGVydHkgaG9sZHMgYSBtYXAg ZnJvbSBtaW1lIHR5cGUgdG8gZGF0YSB0aGF0IGlzIHVzZWQgZHVyaW5nIHN0YXJ0RHJhZy4KKysg ICAgVGhlIG1pbWUgZGF0YSBuZWVkcyB0byBiZSBhIFxjIHN0cmluZywgb3IgYW4gXGMgQXJyYXlC dWZmZXIgd2l0aCB0aGUgZGF0YSBlbmNvZGVkCisrICAgIGFjY29yZGluZyB0byB0aGUgbWltZSB0 eXBlLgorICovCisgCisgUVZhcmlhbnRNYXAgUVF1aWNrRHJhZ0F0dGFjaGVkOjptaW1lRGF0YSgp IGNvbnN0CitAQCAtNzY2LDggKzc2OCwxMiBAQCBRdDo6RHJvcEFjdGlvbiBRUXVpY2tEcmFnQXR0 YWNoZWRQcml2YXRlOjpzdGFydERyYWcoUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdAorICAg ICBRRHJhZyAqZHJhZyA9IG5ldyBRRHJhZyhzb3VyY2UgPyBzb3VyY2UgOiBxKTsKKyAgICAgUU1p bWVEYXRhICptaW1lRGF0YSA9IG5ldyBRTWltZURhdGEoKTsKKyAKKy0gICAgZm9yIChhdXRvIGl0 ID0gZXh0ZXJuYWxNaW1lRGF0YS5jYmVnaW4oKSwgZW5kID0gZXh0ZXJuYWxNaW1lRGF0YS5jZW5k KCk7IGl0ICE9IGVuZDsgKytpdCkKKy0gICAgICAgIG1pbWVEYXRhLT5zZXREYXRhKGl0LmtleSgp LCBpdC52YWx1ZSgpLnRvU3RyaW5nKCkudG9VdGY4KCkpOworKyAgICBmb3IgKGF1dG8gaXQgPSBl eHRlcm5hbE1pbWVEYXRhLmNiZWdpbigpLCBlbmQgPSBleHRlcm5hbE1pbWVEYXRhLmNlbmQoKTsg aXQgIT0gZW5kOyArK2l0KSB7CisrICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8UU1ldGFUeXBlOjpU eXBlPihpdC52YWx1ZSgpLnR5cGUoKSkgPT0gUU1ldGFUeXBlOjpRQnl0ZUFycmF5KQorKyAgICAg ICAgICAgIG1pbWVEYXRhLT5zZXREYXRhKGl0LmtleSgpLCBpdC52YWx1ZSgpLnRvQnl0ZUFycmF5 KCkpOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIG1pbWVEYXRhLT5zZXREYXRhKGl0Lmtl eSgpLCBpdC52YWx1ZSgpLnRvU3RyaW5nKCkudG9VdGY4KCkpOworKyAgICB9CisgCisgICAgIGRy YWctPnNldE1pbWVEYXRhKG1pbWVEYXRhKTsKKyAgICAgaWYgKHBpeG1hcExvYWRlci5pc1JlYWR5 KCkpIHsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tp dGVtLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3BwCitp bmRleCA3NWYxNDU3ODE2Li5kZWMwYWUxOWFlIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3BwCitAQCAtNTksNiArNTksNyBAQAorICNpbmNsdWRlIDxR dENvcmUvcHJpdmF0ZS9xbnVtZXJpY19wLmg+CisgI2luY2x1ZGUgPFF0R3VpL3FwYS9xcGxhdGZv cm10aGVtZS5oPgorICNpbmNsdWRlIDxRdENvcmUvcWxvZ2dpbmdjYXRlZ29yeS5oPgorKyNpbmNs dWRlIDxRdENvcmUvcHJpdmF0ZS9xZHVwbGljYXRldHJhY2tlcl9wLmg+CisgCisgI2luY2x1ZGUg PHByaXZhdGUvcXFtbGdsb2JhbF9wLmg+CisgI2luY2x1ZGUgPHByaXZhdGUvcXFtbGVuZ2luZV9w Lmg+CitAQCAtMjMyNiw2ICsyMzI3LDcgQEAgUVF1aWNrSXRlbTo6UVF1aWNrSXRlbShRUXVpY2tJ dGVtUHJpdmF0ZSAmZGQsIFFRdWlja0l0ZW0gKnBhcmVudCkKKyBRUXVpY2tJdGVtOjp+UVF1aWNr SXRlbSgpCisgeworICAgICBRX0QoUVF1aWNrSXRlbSk7CisrICAgIGQtPmluRGVzdHJ1Y3RvciA9 IHRydWU7CisgCisgICAgIGlmIChkLT53aW5kb3dSZWZDb3VudCA+IDEpCisgICAgICAgICBkLT53 aW5kb3dSZWZDb3VudCA9IDE7IC8vIE1ha2Ugc3VyZSB3aW5kb3cgaXMgc2V0IHRvIG51bGwgaW4g bmV4dCBjYWxsIHRvIGRlcmVmV2luZG93KCkuCitAQCAtMjUyNiw2ICsyNTI4LDcgQEAgUVF1aWNr SXRlbSogUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbihRUXVp Y2tJdGVtICppdGVtLCBib28KKyAgICAgUVF1aWNrSXRlbSAqY3VycmVudCA9IGl0ZW07CisgICAg IHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUlu VGFiRm9jdXNDaGFpbjogc3RhcnRJdGVtOiIgPDwgc3RhcnRJdGVtOworICAgICBxQ0RlYnVnKERC R19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hh aW46IGZpcnN0RnJvbUl0ZW06IiA8PCBmaXJzdEZyb21JdGVtOworKyAgICBRRHVwbGljYXRlVHJh Y2tlcjxRUXVpY2tJdGVtICo+IGN5Y2xlRGV0ZWN0b3I7CisgICAgIGRvIHsKKyAgICAgICAgIHFD RGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFi Rm9jdXNDaGFpbjogY3VycmVudDoiIDw8IGN1cnJlbnQ7CisgICAgICAgICBxQ0RlYnVnKERCR19G T0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46 IGZyb206IiA8PCBmcm9tOworQEAgLTI1OTIsNyArMjU5NSwxMCBAQCBRUXVpY2tJdGVtKiBRUXVp Y2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluKFFRdWlja0l0ZW0gKml0 ZW0sIGJvbworICAgICAgICAgLy8gdHJhdmVyc2VkIGFsbCBvZiB0aGUgY2hhaW4gKGJ5IGNvbXBh cmUgdGhlIFtjdXJyZW50XSBpdGVtIHdpdGggW3N0YXJ0SXRlbV0pCisgICAgICAgICAvLyBTaW5j ZSB0aGUgW3N0YXJ0SXRlbV0gbWlnaHQgYmUgcHJvbW90ZWQgdG8gaXRzIHBhcmVudCBpZiBpdCBp cyBpbnZpc2libGUsCisgICAgICAgICAvLyB3ZSBzdGlsbCBoYXZlIHRvIGNoZWNrIFtjdXJyZW50 XSBpdGVtIHdpdGggb3JpZ2luYWwgc3RhcnQgaXRlbQorLSAgICAgICAgaWYgKChjdXJyZW50ID09 IHN0YXJ0SXRlbSB8fCBjdXJyZW50ID09IG9yaWdpbmFsU3RhcnRJdGVtKSAmJiBmcm9tID09IGZp cnN0RnJvbUl0ZW0pIHsKKysgICAgICAgIC8vIFdlIG1pZ2h0IGFsc28gcnVuIGludG8gYSBjeWNs ZSBiZWZvcmUgd2UgcmVhY2ggZmlyc3RGcm9tSXRlbSBhZ2FpbgorKyAgICAgICAgLy8gYnV0IG5v dGUgdGhhdCB3ZSBoYXZlIHRvIGlnbm9yZSBjdXJyZW50IGlmIHdlIGFyZSBtZWFudCB0byBza2lw IGl0CisrICAgICAgICBpZiAoKChjdXJyZW50ID09IHN0YXJ0SXRlbSB8fCBjdXJyZW50ID09IG9y aWdpbmFsU3RhcnRJdGVtKSAmJiBmcm9tID09IGZpcnN0RnJvbUl0ZW0pIHx8CisrICAgICAgICAg ICAgICAgICghc2tpcCAmJiBjeWNsZURldGVjdG9yLmhhc1NlZW4oY3VycmVudCkpKSB7CisgICAg ICAgICAgICAgLy8gd3JhcHBlZCBhcm91bmQsIGF2b2lkIGVuZGxlc3MgbG9vcHMKKyAgICAgICAg ICAgICBpZiAoaXRlbSA9PSBjb250ZW50SXRlbSkgeworICAgICAgICAgICAgICAgICBxQ0RlYnVn KERCR19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3Vz Q2hhaW46IGxvb3BlZCwgcmV0dXJuIGNvbnRlbnRJdGVtIjsKK0BAIC0yNjg5LDkgKzI2OTUsOCBA QCB2b2lkIFFRdWlja0l0ZW06OnNldFBhcmVudEl0ZW0oUVF1aWNrSXRlbSAqcGFyZW50SXRlbSkK KyAKKyAgICAgICAgIGNvbnN0IGJvb2wgd2FzVmlzaWJsZSA9IGlzVmlzaWJsZSgpOworICAgICAg ICAgb3AtPnJlbW92ZUNoaWxkKHRoaXMpOworLSAgICAgICAgaWYgKHdhc1Zpc2libGUpIHsKKysg ICAgICAgIGlmICh3YXNWaXNpYmxlICYmICFvcC0+aW5EZXN0cnVjdG9yKQorICAgICAgICAgICAg IGVtaXQgb2xkUGFyZW50SXRlbS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworLSAgICAgICAg fQorICAgICB9IGVsc2UgaWYgKGQtPndpbmRvdykgeworICAgICAgICAgUVF1aWNrV2luZG93UHJp dmF0ZTo6Z2V0KGQtPndpbmRvdyktPnBhcmVudGxlc3NJdGVtcy5yZW1vdmUodGhpcyk7CisgICAg IH0KK0BAIC0yNzY4LDggKzI3NzMsOSBAQCB2b2lkIFFRdWlja0l0ZW06OnNldFBhcmVudEl0ZW0o UVF1aWNrSXRlbSAqcGFyZW50SXRlbSkKKyAKKyAgICAgZC0+aXRlbUNoYW5nZShJdGVtUGFyZW50 SGFzQ2hhbmdlZCwgZC0+cGFyZW50SXRlbSk7CisgCistICAgIGVtaXQgcGFyZW50Q2hhbmdlZChk LT5wYXJlbnRJdGVtKTsKKy0gICAgaWYgKGlzVmlzaWJsZSgpICYmIGQtPnBhcmVudEl0ZW0pCisr ICAgIGlmICghZC0+aW5EZXN0cnVjdG9yKQorKyAgICAgICAgZW1pdCBwYXJlbnRDaGFuZ2VkKGQt PnBhcmVudEl0ZW0pOworKyAgICBpZiAoaXNWaXNpYmxlKCkgJiYgZC0+cGFyZW50SXRlbSAmJiAh UVF1aWNrSXRlbVByaXZhdGU6OmdldChkLT5wYXJlbnRJdGVtKS0+aW5EZXN0cnVjdG9yKQorICAg ICAgICAgZW1pdCBkLT5wYXJlbnRJdGVtLT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CisgfQor IAorQEAgLTI5NjUsNyArMjk3MSw4IEBAIHZvaWQgUVF1aWNrSXRlbVByaXZhdGU6OnJlbW92ZUNo aWxkKFFRdWlja0l0ZW0gKmNoaWxkKQorIAorICAgICBpdGVtQ2hhbmdlKFFRdWlja0l0ZW06Okl0 ZW1DaGlsZFJlbW92ZWRDaGFuZ2UsIGNoaWxkKTsKKyAKKy0gICAgZW1pdCBxLT5jaGlsZHJlbkNo YW5nZWQoKTsKKysgICAgaWYgKCFpbkRlc3RydWN0b3IpCisrICAgICAgICBlbWl0IHEtPmNoaWxk cmVuQ2hhbmdlZCgpOworIH0KKyAKKyB2b2lkIFFRdWlja0l0ZW1Qcml2YXRlOjpyZWZXaW5kb3co UVF1aWNrV2luZG93ICpjKQorQEAgLTMxOTQsNiArMzIwMSw3IEBAIFFRdWlja0l0ZW1Qcml2YXRl OjpRUXVpY2tJdGVtUHJpdmF0ZSgpCisgICAgICwgdG91Y2hFbmFibGVkKGZhbHNlKQorICNlbmRp ZgorICAgICAsIGhhc0N1cnNvckhhbmRsZXIoZmFsc2UpCisrICAgICwgaW5EZXN0cnVjdG9yKGZh bHNlKQorICAgICAsIGRpcnR5QXR0cmlidXRlcygwKQorICAgICAsIG5leHREaXJ0eUl0ZW0obnVs bHB0cikKKyAgICAgLCBwcmV2RGlydHlJdGVtKG51bGxwdHIpCitAQCAtNTEyMCw2ICs1MTI4LDEz IEBAIHZvaWQgUVF1aWNrSXRlbTo6Y29tcG9uZW50Q29tcGxldGUoKQorICAgICAgICAgZC0+YWRk VG9EaXJ0eUxpc3QoKTsKKyAgICAgICAgIFFRdWlja1dpbmRvd1ByaXZhdGU6OmdldChkLT53aW5k b3cpLT5kaXJ0eUl0ZW0odGhpcyk7CisgICAgIH0KKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2li aWxpdHkpCisrICAgIGlmIChkLT5pc0FjY2Vzc2libGUgJiYgZC0+ZWZmZWN0aXZlVmlzaWJsZSkg eworKyAgICAgICAgUUFjY2Vzc2libGVFdmVudCBldih0aGlzLCBRQWNjZXNzaWJsZTo6T2JqZWN0 U2hvdyk7CisrICAgICAgICBRQWNjZXNzaWJsZTo6dXBkYXRlQWNjZXNzaWJpbGl0eSgmZXYpOwor KyAgICB9CisrI2VuZGlmCisgfQorIAorIFFRdWlja1N0YXRlR3JvdXAgKlFRdWlja0l0ZW1Qcml2 YXRlOjpfc3RhdGVzKCkKK0BAIC02MTA2LDkgKzYxMjEsMTEgQEAgYm9vbCBRUXVpY2tJdGVtUHJp dmF0ZTo6c2V0RWZmZWN0aXZlVmlzaWJsZVJlY3VyKGJvb2wgbmV3RWZmZWN0aXZlVmlzaWJsZSkK KyAgICAgICAgIFFBY2Nlc3NpYmxlOjp1cGRhdGVBY2Nlc3NpYmlsaXR5KCZldik7CisgICAgIH0K KyAjZW5kaWYKKy0gICAgZW1pdCBxLT52aXNpYmxlQ2hhbmdlZCgpOworLSAgICBpZiAoY2hpbGRW aXNpYmlsaXR5Q2hhbmdlZCkKKy0gICAgICAgIGVtaXQgcS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdl ZCgpOworKyAgICBpZiAoIWluRGVzdHJ1Y3RvcikgeworKyAgICAgICAgZW1pdCBxLT52aXNpYmxl Q2hhbmdlZCgpOworKyAgICAgICAgaWYgKGNoaWxkVmlzaWJpbGl0eUNoYW5nZWQpCisrICAgICAg ICAgICAgZW1pdCBxLT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CisrICAgIH0KKyAKKyAgICAg cmV0dXJuIHRydWU7ICAgIC8vIGVmZmVjdGl2ZSB2aXNpYmlsaXR5IERJRCBjaGFuZ2UKKyB9CitA QCAtNjE1Nyw2ICs2MTc0LDE1IEBAIHZvaWQgUVF1aWNrSXRlbVByaXZhdGU6OnNldEVmZmVjdGl2 ZUVuYWJsZVJlY3VyKFFRdWlja0l0ZW0gKnNjb3BlLCBib29sIG5ld0VmZmVjCisgICAgIH0KKyAK KyAgICAgaXRlbUNoYW5nZShRUXVpY2tJdGVtOjpJdGVtRW5hYmxlZEhhc0NoYW5nZWQsIGVmZmVj dGl2ZUVuYWJsZSk7CisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKyAgICBpZiAoaXNB Y2Nlc3NpYmxlKSB7CisrICAgICAgICBRQWNjZXNzaWJsZTo6U3RhdGUgY2hhbmdlZFN0YXRlOwor KyAgICAgICAgY2hhbmdlZFN0YXRlLmRpc2FibGVkID0gdHJ1ZTsKKysgICAgICAgIGNoYW5nZWRT dGF0ZS5mb2N1c2FibGUgPSB0cnVlOworKyAgICAgICAgUUFjY2Vzc2libGVTdGF0ZUNoYW5nZUV2 ZW50IGV2KHEsIGNoYW5nZWRTdGF0ZSk7CisrICAgICAgICBRQWNjZXNzaWJsZTo6dXBkYXRlQWNj ZXNzaWJpbGl0eSgmZXYpOworKyAgICB9CisrI2VuZGlmCisgICAgIGVtaXQgcS0+ZW5hYmxlZENo YW5nZWQoKTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRl bXMvcXF1aWNraXRlbV9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tp dGVtX3AuaAoraW5kZXggODQxZDkxYmI0MC4uYWRlOGZiNjFmMiAxMDA2NDQKKy0tLSBhL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW1fcC5oCisrKysgYi9xdGRlY2xhcmF0 aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaAorQEAgLTQ3Miw2ICs0NzIsNyBAQCBw dWJsaWM6CisgICAgIGJvb2wgcmVwbGF5aW5nUHJlc3NFdmVudDoxOworICAgICBib29sIHRvdWNo RW5hYmxlZDoxOworICAgICBib29sIGhhc0N1cnNvckhhbmRsZXI6MTsKKysgICAgcXVpbnQzMiBp bkRlc3RydWN0b3I6MTsgLy8gaGFzIGVudGVyZWQgflFRdWlja0l0ZW0KKyAKKyAgICAgZW51bSBE aXJ0eVR5cGUgeworICAgICAgICAgVHJhbnNmb3JtT3JpZ2luICAgICAgICAgPSAweDAwMDAwMDAx LAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12 aWV3LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNw cAoraW5kZXggMDEwYTAxNTJlMS4uZjhhZDE2OGExNyAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbXZpZXcuY3BwCitAQCAtMTc4NSw3ICsxNzg1LDcg QEAgdm9pZCBRUXVpY2tJdGVtVmlld1ByaXZhdGU6OnJlZmlsbChxcmVhbCBmcm9tLCBxcmVhbCB0 bykKKyAKKyAgICAgZG8geworICAgICAgICAgYnVmZmVyUGF1c2Uuc3RvcCgpOworLSAgICAgICAg aWYgKGN1cnJlbnRDaGFuZ2VzLmhhc1BlbmRpbmdDaGFuZ2VzKCkgfHwgYnVmZmVyZWRDaGFuZ2Vz Lmhhc1BlbmRpbmdDaGFuZ2VzKCkpIHsKKysgICAgICAgIGlmIChjdXJyZW50Q2hhbmdlcy5oYXNQ ZW5kaW5nQ2hhbmdlcygpIHx8IGJ1ZmZlcmVkQ2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpIHx8 IGN1cnJlbnRDaGFuZ2VzLmFjdGl2ZSkgeworICAgICAgICAgICAgIGN1cnJlbnRDaGFuZ2VzLnJl c2V0KCk7CisgICAgICAgICAgICAgYnVmZmVyZWRDaGFuZ2VzLnJlc2V0KCk7CisgICAgICAgICAg ICAgcmVsZWFzZVZpc2libGVJdGVtcyhyZXVzYWJsZUZsYWcpOworZGlmZiAtLWdpdCBhL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaCBiL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaAoraW5kZXggZmJhMzgz ZTI2OC4uMGQ2MzYxODYyMiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0 ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2sv aXRlbXMvcXF1aWNrbW91c2VhcmVhX3BfcC5oCitAQCAtNjEsNyArNjEsNiBAQCBRVF9CRUdJTl9O QU1FU1BBQ0UKKyAKKyBjbGFzcyBRUXVpY2tNb3VzZUV2ZW50OworIGNsYXNzIFFRdWlja01vdXNl QXJlYTsKKy1jbGFzcyBRUXVpY2tQb2ludGVyTWFzazsKKyBjbGFzcyBRUXVpY2tNb3VzZUFyZWFQ cml2YXRlIDogcHVibGljIFFRdWlja0l0ZW1Qcml2YXRlCisgeworICAgICBRX0RFQ0xBUkVfUFVC TElDKFFRdWlja01vdXNlQXJlYSkKK0BAIC0xMDAsNyArOTksNiBAQCBwdWJsaWM6CisgI2lmIFFU X0NPTkZJRyhxdWlja19kcmFnYW5kZHJvcCkKKyAgICAgUVF1aWNrRHJhZyAqZHJhZzsKKyAjZW5k aWYKKy0gICAgUVBvaW50ZXI8UVF1aWNrUG9pbnRlck1hc2s+IG1hc2s7CisgICAgIFFQb2ludEYg c3RhcnRTY2VuZTsKKyAgICAgUVBvaW50RiB0YXJnZXRTdGFydFBvczsKKyAgICAgUVBvaW50RiBs YXN0UG9zOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlj a3RleHQuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4dC5jcHAK K2luZGV4IDYyMzAxODY5MzMuLmU4MjNjYTEwOTUgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZl L3NyYy9xdWljay9pdGVtcy9xcXVpY2t0ZXh0LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2svaXRlbXMvcXF1aWNrdGV4dC5jcHAKK0BAIC0yMTY4LDcgKzIxNjgsNyBAQCB2b2lkIFFR dWlja1RleHQ6OnJlc2V0TWF4aW11bUxpbmVDb3VudCgpCisgICAgIDxpbWcgc3JjPSIiIGFsaWdu PSJ0b3AsbWlkZGxlLGJvdHRvbSIgd2lkdGg9IiIgaGVpZ2h0PSIiPiAtIGlubGluZSBpbWFnZXMK KyAgICAgPG9sIHR5cGU9IiI+LCA8dWwgdHlwZT0iIj4gYW5kIDxsaT4gLSBvcmRlcmVkIGFuZCB1 bm9yZGVyZWQgbGlzdHMKKyAgICAgPHByZT48L3ByZT4gLSBwcmVmb3JtYXR0ZWQKKy0gICAgJmd0 OyAmbHQ7ICZhbXA7CisrICAgICZndDsgJmx0OyAmYW1wOyAmcXVvdDsgJm5ic3A7ICZhcG9zOwor ICAgICBcZW5kY29kZQorIAorICAgICBcYyBUZXh0LlN0eWxlZFRleHQgcGFyc2VyIGlzIHN0cmlj dCwgcmVxdWlyaW5nIHRhZ3MgdG8gYmUgY29ycmVjdGx5IG5lc3RlZC4KK2RpZmYgLS1naXQgYS9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRnbHlw aGNhY2hlLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgvcXNncmhpZGlz dGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwCitpbmRleCBlYjRkYjBmODVlLi4yMzI1YTI2NjViIDEw MDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0 YW5jZWZpZWxkZ2x5cGhjYWNoZS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3Nj ZW5lZ3JhcGgvcXNncmhpZGlzdGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwCitAQCAtNDQ2LDcgKzQ0 Niw3IEBAIGJvb2wgUVNHUmhpRGlzdGFuY2VGaWVsZEdseXBoQ2FjaGU6OmxvYWRQcmVnZW5lcmF0 ZWRDYWNoZShjb25zdCBRUmF3Rm9udCAmZm9udCkKKyAKKyAgICAgICAgIGNvbnN0IGNoYXIgKnRl eHR1cmVSZWNvcmQgPSBhbGxvY2F0b3JEYXRhOworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg PCB0ZXh0dXJlQ291bnQ7ICsraSwgdGV4dHVyZVJlY29yZCArPSBRdGRmOjpUZXh0dXJlUmVjb3Jk U2l6ZSkgeworLSAgICAgICAgICAgIGlmICh0ZXh0dXJlUmVjb3JkICsgUXRkZjo6VGV4dHVyZVJl Y29yZFNpemUgPiBxdGRmVGFibGVFbmQpIHsKKysgICAgICAgICAgICBpZiAocXRkZlRhYmxlRW5k IC0gdGV4dHVyZVJlY29yZCA8IFF0ZGY6OlRleHR1cmVSZWNvcmRTaXplKSB7CisgICAgICAgICAg ICAgICAgIHFXYXJuaW5nKCJxdGRmIHRhYmxlIHRvbyBzbWFsbCBpbiBmb250ICclcycuIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgcVByaW50YWJsZShmb250LmZhbWlseU5hbWUoKSkpOwor ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CitAQCAtNDYyLDcgKzQ2Miw3IEBAIGJvb2wg UVNHUmhpRGlzdGFuY2VGaWVsZEdseXBoQ2FjaGU6OmxvYWRQcmVnZW5lcmF0ZWRDYWNoZShjb25z dCBRUmF3Rm9udCAmZm9udCkKKyAKKyAgICAgICAgIGNvbnN0IGNoYXIgKmdseXBoUmVjb3JkID0g dGV4dHVyZVJlY29yZDsKKyAgICAgICAgIGZvciAocXVpbnQzMiBpID0gMDsgaSA8IGdseXBoQ291 bnQ7ICsraSwgZ2x5cGhSZWNvcmQgKz0gUXRkZjo6R2x5cGhSZWNvcmRTaXplKSB7CistICAgICAg ICAgICAgaWYgKGdseXBoUmVjb3JkICsgUXRkZjo6R2x5cGhSZWNvcmRTaXplID4gcXRkZlRhYmxl RW5kKSB7CisrICAgICAgICAgICAgaWYgKHF0ZGZUYWJsZUVuZCAtIGdseXBoUmVjb3JkIDwgUXRk Zjo6IEdseXBoUmVjb3JkU2l6ZSkgeworICAgICAgICAgICAgICAgICBxV2FybmluZygicXRkZiB0 YWJsZSB0b28gc21hbGwgaW4gZm9udCAnJXMnLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg IHFQcmludGFibGUoZm9udC5mYW1pbHlOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworQEAgLTUxMiw4ICs1MTIsOCBAQCBib29sIFFTR1JoaURpc3RhbmNlRmllbGRHbHlw aENhY2hlOjpsb2FkUHJlZ2VuZXJhdGVkQ2FjaGUoY29uc3QgUVJhd0ZvbnQgJmZvbnQpCisgCisg ICAgICAgICAgICAgaW50IHdpZHRoID0gdGV4SW5mby0+YWxsb2NhdGVkQXJlYS53aWR0aCgpOwor ICAgICAgICAgICAgIGludCBoZWlnaHQgPSB0ZXhJbmZvLT5hbGxvY2F0ZWRBcmVhLmhlaWdodCgp OworLSAgICAgICAgICAgIHFpbnQ2NCBzaXplID0gd2lkdGggKiBoZWlnaHQ7CistICAgICAgICAg ICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPih0ZXh0dXJlRGF0YSArIHNpemUp ID4gcXRkZlRhYmxlRW5kKSB7CisrICAgICAgICAgICAgcWludDY0IHNpemUgPSBxaW50NjQod2lk dGgpICogaGVpZ2h0OworKyAgICAgICAgICAgIGlmIChxdGRmVGFibGVFbmQgLSByZWludGVycHJl dF9jYXN0PGNvbnN0IGNoYXIgKj4odGV4dHVyZURhdGEpIDwgc2l6ZSkgeworICAgICAgICAgICAg ICAgICBxV2FybmluZygicXRkZiB0YWJsZSB0b28gc21hbGwgaW4gZm9udCAnJXMnLiIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgIHFQcmludGFibGUoZm9udC5mYW1pbHlOYW1lKCkpKTsKKyAg ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrL3V0aWwvcXF1aWNrc3R5bGVkdGV4dC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9x dWljay91dGlsL3FxdWlja3N0eWxlZHRleHQuY3BwCitpbmRleCBkNTMxZmM5MjA1Li5hMjVhZjkw NDE0IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHls ZWR0ZXh0LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHls ZWR0ZXh0LmNwcAorQEAgLTU2NCw2ICs1NjQsOCBAQCB2b2lkIFFRdWlja1N0eWxlZFRleHRQcml2 YXRlOjpwYXJzZUVudGl0eShjb25zdCBRQ2hhciAqJmNoLCBjb25zdCBRU3RyaW5nICZ0ZXh0SQor ICAgICAgICAgICAgICAgICB0ZXh0T3V0ICs9IFFDaGFyKDYwKTsKKyAgICAgICAgICAgICBlbHNl IGlmIChlbnRpdHkgPT0gUUxhdGluMVN0cmluZygiYW1wIikpCisgICAgICAgICAgICAgICAgIHRl eHRPdXQgKz0gUUNoYXIoMzgpOworKyAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0 aW4xU3RyaW5nKCJhcG9zIikpCisrICAgICAgICAgICAgICAgIHRleHRPdXQgKz0gUUNoYXIoMzkp OworICAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3RyaW5nKCJxdW90Iikp CisgICAgICAgICAgICAgICAgIHRleHRPdXQgKz0gUUNoYXIoMzQpOworICAgICAgICAgICAgIGVs c2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3RyaW5nKCJuYnNwIikpCitkaWZmIC0tZ2l0IGEvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwIGIv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3Bw CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uOGExYzkwMTg4MAorLS0t IC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3Np YmxlcXVpY2t3aWRnZXQuY3BwCitAQCAtMCwwICsxLDExMCBAQAorKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoq IENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIHRoZSBRdFF1aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgor KyoqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdl CisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkg dXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNl bnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5h dGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEg d3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGlj ZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rl cm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250 YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRo aXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysq KiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElD RU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQ bGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRz CisrKiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAu aHRtbC4KKysqKgorKyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0 ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBv cHRpb24pIHRoZSBHTlUgR2VuZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBh bnkgbGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0 aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQor KyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5k IExJQ0VOU0UuR1BMMworKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxl LiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUg bWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBo dHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9F TkRfTElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2luY2x1ZGUgInFh Y2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5oIgorKworKyNpbmNsdWRlICJxcXVpY2t3aWRnZXRfcC5o IgorKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0 eSkKKysKKytRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0KFFR dWlja1dpZGdldCogd2lkZ2V0KQorKzogUUFjY2Vzc2libGVXaWRnZXQod2lkZ2V0KQorKywgbV9h Y2Nlc3NpYmxlV2luZG93KFFRdWlja1dpZGdldFByaXZhdGU6OmdldCh3aWRnZXQpLT5vZmZzY3Jl ZW5XaW5kb3cpCisreworKyAgICAvLyBOT1RFOiBtX2FjY2Vzc2libGVXaW5kb3cgaXMgYSBRQWNj ZXNzaWJsZVF1aWNrV2luZG93LCBhbmQgbm90IGEKKysgICAgLy8gUUFjY2Vzc2libGVRdWlja1dp ZGdldE9mZnNjcmVlbldpbmRvdyAoZGVmaW5lZCBiZWxvdykuIFRoaXMgbWVhbnMKKysgICAgLy8g aXQgd2lsbCByZXR1cm4gdGhlIFF1aWNrIGl0ZW0gY2hpbGQgaW50ZXJmYWNlcywgd2hpY2ggaXMg d2hhdCdzIG5lZWRlZCBoZXJlCisrICAgIC8vICh1bmxpa2UgUUFjY2Vzc2libGVRdWlja1dpZGdl dE9mZnNjcmVlbldpbmRvdywgd2hpY2ggd2lsbCByZXBvcnQgMCBjaGlsZHJlbikuCisrfQorKwor K1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjpjaGlsZChpbnQg aW5kZXgpIGNvbnN0CisreworKyAgICByZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93LmNoaWxkKGlu ZGV4KTsKKyt9CisrCisraW50IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OmNoaWxkQ291bnQoKSBj b25zdAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5jaGlsZENvdW50KCk7Cisr fQorKworK2ludCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjppbmRleE9mQ2hpbGQoY29uc3QgUUFj Y2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNz aWJsZVdpbmRvdy5pbmRleE9mQ2hpbGQoaWZhY2UpOworK30KKysKKytRQWNjZXNzaWJsZUludGVy ZmFjZSAqUUFjY2Vzc2libGVRdWlja1dpZGdldDo6Y2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0 CisreworKyAgICByZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93LmNoaWxkQXQoeCwgeSk7CisrfQor KworK1FBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OlFBY2Nlc3NpYmxlUXVp Y2tXaWRnZXRPZmZzY3JlZW5XaW5kb3coUVF1aWNrV2luZG93ICp3aW5kb3cpCisrOlFBY2Nlc3Np YmxlUXVpY2tXaW5kb3cod2luZG93KQorK3sKKysKKyt9CisrCisrUUFjY2Vzc2libGVJbnRlcmZh Y2UgKlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OmNoaWxkKGludCBpbmRl eCkgY29uc3QKKyt7CisrICAgIFFfVU5VU0VEKGluZGV4KTsKKysgICAgcmV0dXJuIG51bGxwdHI7 CisrfQorKworK2ludCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpjaGls ZENvdW50KCkgY29uc3QKKyt7CisrICAgIHJldHVybiAwOworK30KKysKKytpbnQgUUFjY2Vzc2li bGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6aW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3Np YmxlSW50ZXJmYWNlICppZmFjZSkgY29uc3QKKyt7CisrICAgIFFfVU5VU0VEKGlmYWNlKTsKKysg ICAgcmV0dXJuIC0xOworK30KKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVR dWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6UUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVl bldpbmRvdzo6Y2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0CisreworKyAgICBRX1VOVVNFRCh4 KTsKKysgICAgUV9VTlVTRUQoeSk7CisrICAgIHJldHVybiBudWxscHRyOworK30KKysKKysjZW5k aWYgLy8gYWNjZXNzaWJpbGl0eQorKworK1FUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9x dGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmgg Yi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldF9w LmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43YzJhYjkzMGUwCist LS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vz c2libGVxdWlja3dpZGdldF9wLmgKK0BAIC0wLDAgKzEsOTUgQEAKKysvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysq KiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioK KysqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2Fn ZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5 IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGlj ZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJu YXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBh IHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxp Y2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90 ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29u dGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0 aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisr KiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJ Q0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4g UGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50 cworKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4w Lmh0bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFs dGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIg b3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3Ig YW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRh dGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK KysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFu ZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmls ZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJl IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJl IG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiog aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRf RU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpZm5kZWYgUUFD Q0VTU0lCTEVRVUlDS1dJREdFVF9ICisrI2RlZmluZSBRQUNDRVNTSUJMRVFVSUNLV0lER0VUX0gK KysKKysvLworKy8vICBXIEEgUiBOIEkgTiBHCisrLy8gIC0tLS0tLS0tLS0tLS0KKysvLworKy8v IFRoaXMgZmlsZSBpcyBub3QgcGFydCBvZiB0aGUgUXQgQVBJLiAgSXQgZXhpc3RzIHB1cmVseSBh cyBhbgorKy8vIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFRoaXMgaGVhZGVyIGZpbGUgbWF5IGNo YW5nZSBmcm9tIHZlcnNpb24gdG8KKysvLyB2ZXJzaW9uIHdpdGhvdXQgbm90aWNlLCBvciBldmVu IGJlIHJlbW92ZWQuCisrLy8KKysvLyBXZSBtZWFuIGl0LgorKy8vCisrCisrI2luY2x1ZGUgInFx dWlja3dpZGdldC5oIgorKyNpbmNsdWRlIDxRdFdpZGdldHMvcWFjY2Vzc2libGV3aWRnZXQuaD4K KysKKysjaW5jbHVkZSA8cHJpdmF0ZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmg+CisrCisrUVRf QkVHSU5fTkFNRVNQQUNFCisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKworKy8v IFRoZXNlIGNsYXNzZXMgaW1wbGVtZW50IHRoZSBRUXVpY2tXaWdldCBhY2Nlc3NpYmlsaXR5IHN3 aXRjaGFyb28sCisrLy8gd2hlcmUgdGhlIGNoaWxkIGl0ZW1zIG9mIHRoZSBRUXVpY2tXaWRnZXRP ZmZzY3JlZW5XaW5kb3cgYXJlIHJlcG9ydGVkCisrLy8gYXMgY2hpbGQgYWNjZXNzaWJsZSBpbnRl cmZhY2VzIG9mIHRoZSBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0LgorK2NsYXNzIFFBY2Nlc3NpYmxl UXVpY2tXaWRnZXQ6IHB1YmxpYyBRQWNjZXNzaWJsZVdpZGdldAorK3sKKytwdWJsaWM6CisrICAg IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQoUVF1aWNrV2lkZ2V0KiB3aWRnZXQpOworKworKyAgICBR QWNjZXNzaWJsZUludGVyZmFjZSAqY2hpbGQoaW50IGluZGV4KSBjb25zdCBvdmVycmlkZTsKKysg ICAgaW50IGNoaWxkQ291bnQoKSBjb25zdCBvdmVycmlkZTsKKysgICAgaW50IGluZGV4T2ZDaGls ZChjb25zdCBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UpIGNvbnN0IG92ZXJyaWRlOworKyAg ICBRQWNjZXNzaWJsZUludGVyZmFjZSAqY2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0IG92ZXJy aWRlOworKworK3ByaXZhdGU6CisrICAgIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cgbV9hY2Nlc3Np YmxlV2luZG93OworKyAgICBRX0RJU0FCTEVfQ09QWShRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0KQor K307CisrCisrY2xhc3MgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzogcHVi bGljIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cKKyt7CisrcHVibGljOgorKyAgICBRQWNjZXNzaWJs ZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KFFRdWlja1dpbmRvdyAqd2luZG93KTsKKysgICAg UUFjY2Vzc2libGVJbnRlcmZhY2UgKmNoaWxkKGludCBpbmRleCkgY29uc3Qgb3ZlcnJpZGU7Cisr ICAgIGludCBjaGlsZENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGludCBpbmRleE9mQ2hp bGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdCBvdmVycmlkZTsKKysg ICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdCBvdmVy cmlkZTsKKyt9OworKworKyNlbmRpZiAvLyBhY2Nlc3NpYmlsaXR5CisrCisrUVRfRU5EX05BTUVT UEFDRQorKworKyNlbmRpZgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lk Z2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeS5jcHAgYi9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnkuY3BwCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uN2JhODhhMTc2OQorLS0tIC9kZXYvbnVs bAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3 aWRnZXRmYWN0b3J5LmNwcAorQEAgLTAsMCArMSw2MCBAQAorKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENv bnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIHRoZSBRdFF1aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoq ICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisr KiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNl IHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNl IGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2 ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3Jp dHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5z aW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1z LWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0 IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMg ZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5T RS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVh c2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisr Kiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRt bC4KKysqKgorKyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJu YXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V CisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRp b24pIHRoZSBHTlUgR2VuZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkg bGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9u LiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoq IEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJ Q0VOU0UuR1BMMworKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQ bGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0 OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRw czovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRf TElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2luY2x1ZGUgInFhY2Nl c3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaCIKKysjaW5jbHVkZSAicWFjY2Vzc2libGVxdWlj a3dpZGdldF9wLmgiCisrCisrUVRfQkVHSU5fTkFNRVNQQUNFCisrCisrI2lmIFFUX0NPTkZJRyhh Y2Nlc3NpYmlsaXR5KQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpxQWNjZXNzaWJsZVF1aWNr V2lkZ2V0RmFjdG9yeShjb25zdCBRU3RyaW5nICZjbGFzc25hbWUsIFFPYmplY3QgKm9iamVjdCkK Kyt7CisrICAgIGlmIChjbGFzc25hbWUgPT0gUUxhdGluMVN0cmluZygiUVF1aWNrV2lkZ2V0Iikp IHsKKysgICAgICAgIHJldHVybiBuZXcgUUFjY2Vzc2libGVRdWlja1dpZGdldChxb2JqZWN0X2Nh c3Q8UVF1aWNrV2lkZ2V0ICo+KG9iamVjdCkpOworKyAgICB9IGVsc2UgaWYgKGNsYXNzbmFtZSA9 PSBRTGF0aW4xU3RyaW5nKCJRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3ciKSkgeworKyAgICAg ICAgcmV0dXJuIG5ldyBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KHFvYmpl Y3RfY2FzdDxRUXVpY2tXaW5kb3cgKj4ob2JqZWN0KSk7CisrICAgIH0KKysgICAgcmV0dXJuIDA7 CisrfQorKworKyNlbmRpZiAvLyBhY2Nlc3NpYmlsaXR5CisrCisrUVRfRU5EX05BTUVTUEFDRQor KworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJs ZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMv cWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAor aW5kZXggMDAwMDAwMDAwMC4uOGM2M2IwOWY4MQorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNs YXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3Au aAorQEAgLTAsMCArMSw2NiBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5 cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8v d3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBR dFF1aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNF TlNFOkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhv bGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgor KyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92 aWRlZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRh bmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQg YmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiog YW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZv ciBmdXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6 Ly93d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNl ZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBG b3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRl ZCBpbiB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBm b2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6 IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBm aWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2Vu ZXJhbAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBh cHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMg YXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5k IGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoq IGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRo ZSBmb2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5n bnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgor KyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisrCisrI2luY2x1ZGUgPFF0R3VpL3FhY2Nlc3NpYmxlLmg+ CisrCisrI2lmbmRlZiBRQUNDRVNTSUJMRVFVSUNLV0lER0VURkFDVE9SWV9ICisrI2RlZmluZSBR QUNDRVNTSUJMRVFVSUNLV0lER0VURkFDVE9SWV9ICisrCisrLy8KKysvLyAgVyBBIFIgTiBJIE4g RworKy8vICAtLS0tLS0tLS0tLS0tCisrLy8KKysvLyBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2Yg dGhlIFF0IEFQSS4gIEl0IGV4aXN0cyBwdXJlbHkgYXMgYW4KKysvLyBpbXBsZW1lbnRhdGlvbiBk ZXRhaWwuICBUaGlzIGhlYWRlciBmaWxlIG1heSBjaGFuZ2UgZnJvbSB2ZXJzaW9uIHRvCisrLy8g dmVyc2lvbiB3aXRob3V0IG5vdGljZSwgb3IgZXZlbiBiZSByZW1vdmVkLgorKy8vCisrLy8gV2Ug bWVhbiBpdC4KKysvLworKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05GSUco YWNjZXNzaWJpbGl0eSkKKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqcUFjY2Vzc2libGVRdWlj a1dpZGdldEZhY3RvcnkoY29uc3QgUVN0cmluZyAmY2xhc3NuYW1lLCBRT2JqZWN0ICpvYmplY3Qp OworKworKyNlbmRpZgorKworK1FUX0VORF9OQU1FU1BBQ0UKKysKKysjZW5kaWYKK2RpZmYgLS1n aXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcCBiL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3BwCitpbmRleCAzOTc4 MGY4ZGUzLi45Yzk3YjQzNTE4IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3 aWRnZXRzL3FxdWlja3dpZGdldC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lk Z2V0cy9xcXVpY2t3aWRnZXQuY3BwCitAQCAtMzksNiArMzksNyBAQAorIAorICNpbmNsdWRlICJx cXVpY2t3aWRnZXQuaCIKKyAjaW5jbHVkZSAicXF1aWNrd2lkZ2V0X3AuaCIKKysjaW5jbHVkZSAi cWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oIgorIAorICNpbmNsdWRlICJwcml2YXRl L3FxdWlja3dpbmRvd19wLmgiCisgI2luY2x1ZGUgInByaXZhdGUvcXF1aWNraXRlbV9wLmgiCitA QCAtNzUsOSArNzYsMTYgQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKytRUXVpY2tXaWRn ZXRPZmZzY3JlZW5XaW5kb3c6OlFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhRUXVpY2tXaW5k b3dQcml2YXRlICZkZCwgUVF1aWNrUmVuZGVyQ29udHJvbCAqY29udHJvbCkKKys6UVF1aWNrV2lu ZG93KGRkLCBjb250cm9sKQorK3sKKysgICAgc2V0VGl0bGUoUVN0cmluZzo6ZnJvbUxhdGluMSgi T2Zmc2NyZWVuIikpOworKyAgICBzZXRPYmplY3ROYW1lKFFTdHJpbmc6OmZyb21MYXRpbjEoIlFR dWlja09mZlNjcmVlbldpbmRvdyIpKTsKKyt9CisrCisgLy8gb3ZlcnJpZGUgc2V0VmlzYmxlIHRv IHByZXZlbnQgYWNjaWRlbnRhbCBvZmZzY3JlZW4gd2luZG93IGJlaW5nIGNyZWF0ZWQKKyAvLyBi eSBiYXNlIGNsYXNzLgorLWNsYXNzIFFRdWlja09mZmNyZWVuV2luZG93UHJpdmF0ZTogcHVibGlj IFFRdWlja1dpbmRvd1ByaXZhdGUgeworK2NsYXNzIFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRv d1ByaXZhdGU6IHB1YmxpYyBRUXVpY2tXaW5kb3dQcml2YXRlIHsKKyBwdWJsaWM6CisgICAgIHZv aWQgc2V0VmlzaWJsZShib29sIHZpc2libGUpIG92ZXJyaWRlIHsKKyAgICAgICAgIFFfUShRV2lu ZG93KTsKK0BAIC0xMDUsOSArMTEzLDggQEAgdm9pZCBRUXVpY2tXaWRnZXRQcml2YXRlOjppbml0 KFFRbWxFbmdpbmUqIGUpCisgICAgIFFfUShRUXVpY2tXaWRnZXQpOworIAorICAgICByZW5kZXJD b250cm9sID0gbmV3IFFRdWlja1dpZGdldFJlbmRlckNvbnRyb2wocSk7CistICAgIG9mZnNjcmVl bldpbmRvdyA9IG5ldyBRUXVpY2tXaW5kb3coKm5ldyBRUXVpY2tPZmZjcmVlbldpbmRvd1ByaXZh dGUoKSxyZW5kZXJDb250cm9sKTsKKy0gICAgb2Zmc2NyZWVuV2luZG93LT5zZXRUaXRsZShRU3Ry aW5nOjpmcm9tTGF0aW4xKCJPZmZzY3JlZW4iKSk7CistICAgIG9mZnNjcmVlbldpbmRvdy0+c2V0 T2JqZWN0TmFtZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJRUXVpY2tPZmZTY3JlZW5XaW5kb3ciKSk7 CisrICAgIG9mZnNjcmVlbldpbmRvdyA9IG5ldyBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3co Km5ldyBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3dQcml2YXRlKCksIHJlbmRlckNvbnRyb2wp OworKyAgICBvZmZzY3JlZW5XaW5kb3ctPnNldFNjcmVlbihxLT5zY3JlZW4oKSk7CisgICAgIC8v IERvIG5vdCBjYWxsIGNyZWF0ZSgpIG9uIG9mZnNjcmVlbldpbmRvdy4KKyAKKyAgICAgLy8gQ2hl Y2sgaWYgdGhlIFNvZnR3YXJlIEFkYXB0YXRpb24gaXMgYmVpbmcgdXNlZAorQEAgLTEzOCw2ICsx NDUsMTAgQEAgdm9pZCBRUXVpY2tXaWRnZXRQcml2YXRlOjppbml0KFFRbWxFbmdpbmUqIGUpCisg ICAgIFFXaWRnZXQ6OmNvbm5lY3Qob2Zmc2NyZWVuV2luZG93LCAmUVF1aWNrV2luZG93Ojpmb2N1 c09iamVjdENoYW5nZWQsIHEsICZRUXVpY2tXaWRnZXQ6OnByb3BhZ2F0ZUZvY3VzT2JqZWN0Q2hh bmdlZCk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocmVuZGVyQ29udHJvbCwgU0lHTkFMKHJlbmRl clJlcXVlc3RlZCgpKSwgcSwgU0xPVCh0cmlnZ2VyVXBkYXRlKCkpKTsKKyAgICAgUU9iamVjdDo6 Y29ubmVjdChyZW5kZXJDb250cm9sLCBTSUdOQUwoc2NlbmVDaGFuZ2VkKCkpLCBxLCBTTE9UKHRy aWdnZXJVcGRhdGUoKSkpOworKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysgICAg UUFjY2Vzc2libGU6Omluc3RhbGxGYWN0b3J5KCZxQWNjZXNzaWJsZVF1aWNrV2lkZ2V0RmFjdG9y eSk7CisrI2VuZGlmCisgfQorIAorIHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6ZW5zdXJlRW5n aW5lKCkgY29uc3QKK0BAIC05MDEsOSArOTEyLDcgQEAgdm9pZCBRUXVpY2tXaWRnZXRQcml2YXRl OjpjcmVhdGVDb250ZXh0KCkKKyAKKyAgICAgICAgIGNvbnRleHQgPSBuZXcgUU9wZW5HTENvbnRl eHQ7CisgICAgICAgICBjb250ZXh0LT5zZXRGb3JtYXQob2Zmc2NyZWVuV2luZG93LT5yZXF1ZXN0 ZWRGb3JtYXQoKSk7CistICAgICAgICBjb25zdCBRV2luZG93ICp3aW4gPSBxLT53aW5kb3coKS0+ d2luZG93SGFuZGxlKCk7CistICAgICAgICBpZiAod2luICYmIHdpbi0+c2NyZWVuKCkpCistICAg ICAgICAgICAgY29udGV4dC0+c2V0U2NyZWVuKHdpbi0+c2NyZWVuKCkpOworKyAgICAgICAgY29u dGV4dC0+c2V0U2NyZWVuKHEtPnNjcmVlbigpKTsKKyAgICAgICAgIFFPcGVuR0xDb250ZXh0ICpz aGFyZUNvbnRleHQgPSBxdF9nbF9nbG9iYWxfc2hhcmVfY29udGV4dCgpOworICAgICAgICAgaWYg KCFzaGFyZUNvbnRleHQpCisgICAgICAgICAgICAgc2hhcmVDb250ZXh0ID0gUVdpZGdldFByaXZh dGU6OmdldChxLT53aW5kb3coKSktPnNoYXJlQ29udGV4dCgpOworQEAgLTE1MjAsMTkgKzE1Mjks MTYgQEAgYm9vbCBRUXVpY2tXaWRnZXQ6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAgICAgIGQtPmhh bmRsZVdpbmRvd0NoYW5nZSgpOworICAgICAgICAgYnJlYWs7CisgCistICAgIGNhc2UgUUV2ZW50 OjpTY3JlZW5DaGFuZ2VJbnRlcm5hbDoKKy0gICAgICAgIGlmIChRV2luZG93ICp3aW5kb3cgPSB0 aGlzLT53aW5kb3coKS0+d2luZG93SGFuZGxlKCkpIHsKKy0gICAgICAgICAgICBRU2NyZWVuICpu ZXdTY3JlZW4gPSB3aW5kb3ctPnNjcmVlbigpOworLQorLSAgICAgICAgICAgIGlmIChkLT5vZmZz Y3JlZW5XaW5kb3cpCistICAgICAgICAgICAgICAgIGQtPm9mZnNjcmVlbldpbmRvdy0+c2V0U2Ny ZWVuKG5ld1NjcmVlbik7CistICAgICAgICAgICAgaWYgKGQtPm9mZnNjcmVlblN1cmZhY2UpCist ICAgICAgICAgICAgICAgIGQtPm9mZnNjcmVlblN1cmZhY2UtPnNldFNjcmVlbihuZXdTY3JlZW4p OworKyAgICBjYXNlIFFFdmVudDo6U2NyZWVuQ2hhbmdlSW50ZXJuYWw6IHsKKysgICAgICAgIFFT Y3JlZW4gKm5ld1NjcmVlbiA9IHNjcmVlbigpOworKyAgICAgICAgaWYgKGQtPm9mZnNjcmVlbldp bmRvdykKKysgICAgICAgICAgICBkLT5vZmZzY3JlZW5XaW5kb3ctPnNldFNjcmVlbihuZXdTY3Jl ZW4pOworKyAgICAgICAgaWYgKGQtPm9mZnNjcmVlblN1cmZhY2UpCisrICAgICAgICAgICAgZC0+ b2Zmc2NyZWVuU3VyZmFjZS0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisgI2lmIFFUX0NPTkZJRyhv cGVuZ2wpCistICAgICAgICAgICAgaWYgKGQtPmNvbnRleHQpCistICAgICAgICAgICAgICAgIGQt PmNvbnRleHQtPnNldFNjcmVlbihuZXdTY3JlZW4pOworKyAgICAgICAgaWYgKGQtPmNvbnRleHQp CisrICAgICAgICAgICAgZC0+Y29udGV4dC0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisgI2VuZGlm CistICAgICAgICB9CisgCisgICAgICAgICBpZiAoZC0+dXNlU29mdHdhcmVSZW5kZXJlcgorICNp ZiBRVF9DT05GSUcob3BlbmdsKQorQEAgLTE1NDUsNyArMTU1MSw3IEBAIGJvb2wgUVF1aWNrV2lk Z2V0OjpldmVudChRRXZlbnQgKmUpCisgICAgICAgICAgICAgZC0+cmVuZGVyKHRydWUpOworICAg ICAgICAgfQorICAgICAgICAgYnJlYWs7CistCisrICAgIH0KKyAgICAgY2FzZSBRRXZlbnQ6OlNo b3c6CisgICAgIGNhc2UgUUV2ZW50OjpNb3ZlOgorICAgICAgICAgZC0+dXBkYXRlUG9zaXRpb24o KTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lk Z2V0X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5o CitpbmRleCA4ODFmN2Y5MjIwLi4xYTk0NmJjYzcxIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldF9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oCitAQCAtMTQ4LDYgKzE0OCwxNCBAQCBw dWJsaWM6CisgICAgIGJvb2wgZm9yY2VGdWxsVXBkYXRlOworIH07CisgCisrY2xhc3MgUVF1aWNr V2lkZ2V0T2Zmc2NyZWVuV2luZG93OiBwdWJsaWMgUVF1aWNrV2luZG93CisreworKyAgICBRX09C SkVDVAorKworK3B1YmxpYzoKKysgICAgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KFFRdWlj a1dpbmRvd1ByaXZhdGUgJmRkLCBRUXVpY2tSZW5kZXJDb250cm9sICpjb250cm9sKTsKKyt9Owor KworIFFUX0VORF9OQU1FU1BBQ0UKKyAKKyAjZW5kaWYgLy8gUVF1aWNrV2lkZ2V0X1BfSAorZGlm ZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMucHJv IGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8KK2luZGV4 IDI0MzhlNTc3YWUuLjg1ZDE1NmI4YTMgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9x dWlja3dpZGdldHMvcXVpY2t3aWRnZXRzLnBybworKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVp Y2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8KK0BAIC03LDkgKzcsMTMgQEAgREVGSU5FUyAgICs9 IFFUX05PX1VSTF9DQVNUX0ZST01fU1RSSU5HIFFUX05PX0lOVEVHRVJfRVZFTlRfQ09PUkRJTkFU RVMgUVRfTk9fRk8KKyBIRUFERVJTICs9IFwKKyAgICAgcXF1aWNrd2lkZ2V0LmggXAorICAgICBx cXVpY2t3aWRnZXRfcC5oIFwKKy0gICAgcXRxdWlja3dpZGdldHNnbG9iYWwuaAorKyAgICBxdHF1 aWNrd2lkZ2V0c2dsb2JhbC5oIFwKKysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmggXAor KyAgICBxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgKKyAKKyBTT1VSQ0VTICs9IFwK Ky0gICAgcXF1aWNrd2lkZ2V0LmNwcAorKyAgICBxcXVpY2t3aWRnZXQuY3BwIFwKKysgICAgcWFj Y2Vzc2libGVxdWlja3dpZGdldC5jcHAgXAorKyAgICBxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFj dG9yeS5jcHAKKyAKKyBsb2FkKHF0X21vZHVsZSkKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZl L3Rlc3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcCBiL3F0ZGVjbGFyYXRp dmUvdGVzdHMvYXV0by9xbWwvcWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwCitpbmRleCAzYjdk NzRkZjYzLi5iNzViZjgyMGQ1IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRv L3FtbC9xanNlbmdpbmUvdHN0X3Fqc2VuZ2luZS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVz dHMvYXV0by9xbWwvcWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwCitAQCAtMTAyLDYgKzEwMiw3 IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgdmFsdWVDb252ZXJzaW9uX1JlZ3VsYXJFeHBy ZXNzaW9uKCk7CisgICAgIHZvaWQgY2FzdFdpdGhNdWx0aXBsZUluaGVyaXRhbmNlKCk7CisgICAg IHZvaWQgY29sbGVjdEdhcmJhZ2UoKTsKKysgICAgdm9pZCBjb2xsZWN0R2FyYmFnZU5lc3RlZFdy YXBwZXJzVHdvRW5naW5lcygpOworICAgICB2b2lkIGdjV2l0aE5lc3RlZERhdGFTdHJ1Y3R1cmUo KTsKKyAgICAgdm9pZCBzdGFja3RyYWNlKCk7CisgICAgIHZvaWQgbnVtYmVyUGFyc2luZ19kYXRh KCk7CitAQCAtMTgwOSw2ICsxODEwLDQ0IEBAIHZvaWQgdHN0X1FKU0VuZ2luZTo6Y29sbGVjdEdh cmJhZ2UoKQorICAgICBRVkVSSUZZKHB0ci5pc051bGwoKSk7CisgfQorIAorK2NsYXNzIFRlc3RP YmplY3RDb250YWluZXIgOiBwdWJsaWMgUU9iamVjdAorK3sKKysgICAgUV9PQkpFQ1QKKysgICAg UV9QUk9QRVJUWShRT2JqZWN0ICpkdW1teSBNRU1CRVIgbV9kdW1teSBDT05TVEFOVCkKKysKKytw dWJsaWM6CisrICAgIFRlc3RPYmplY3RDb250YWluZXIoKSA6IG1fZHVtbXkobmV3IFFPYmplY3Qo dGhpcykpIHt9CisrCisrcHJpdmF0ZToKKysgICAgUU9iamVjdCAqbV9kdW1teTsKKyt9OworKwor K3ZvaWQgdHN0X1FKU0VuZ2luZTo6Y29sbGVjdEdhcmJhZ2VOZXN0ZWRXcmFwcGVyc1R3b0VuZ2lu ZXMoKQorK3sKKysgICAgUUpTRW5naW5lIGVuZ2luZTE7CisrICAgIFFKU0VuZ2luZSBlbmdpbmUy OworKworKyAgICBUZXN0T2JqZWN0Q29udGFpbmVyIGNvbnRhaW5lcjsKKysgICAgUVFtbEVuZ2lu ZTo6c2V0T2JqZWN0T3duZXJzaGlwKCZjb250YWluZXIsIFFRbWxFbmdpbmU6OkNwcE93bmVyc2hp cCk7CisrCisrICAgIGVuZ2luZTEuZ2xvYmFsT2JqZWN0KCkuc2V0UHJvcGVydHkoImZvb2JhciIs IGVuZ2luZTEubmV3UU9iamVjdCgmY29udGFpbmVyKSk7CisrICAgIGVuZ2luZTIuZ2xvYmFsT2Jq ZWN0KCkuc2V0UHJvcGVydHkoImZvb2JhciIsIGVuZ2luZTIubmV3UU9iamVjdCgmY29udGFpbmVy KSk7CisrCisrICAgIGVuZ2luZTEuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXogPSA0MiIpOwor KyAgICBlbmdpbmUyLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6ID0gNDMiKTsKKysKKysgICAg UUNPTVBBUkUoZW5naW5lMS5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiIpLnRvSW50KCksIDQy KTsKKysgICAgUUNPTVBBUkUoZW5naW5lMi5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiIpLnRv SW50KCksIDQzKTsKKysKKysgICAgZW5naW5lMS5jb2xsZWN0R2FyYmFnZSgpOworKyAgICBlbmdp bmUyLmNvbGxlY3RHYXJiYWdlKCk7CisrCisrICAgIC8vIFRoZSBHQyBzaG91bGQgbm90IGNvbGxl Y3QgZHVtbXkgb2JqZWN0IHdyYXBwZXJzIG5laXRoZXIgaW4gZW5naW5lMSBub3IgZW5naW5lMiwg d2UKKysgICAgLy8gdmVyaWZ5IHRoYXQgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgYmF6IHByb3Bl cnR5IHN0aWxsIGhhcyBpdHMgcHJldmlvdXMgdmFsdWUuCisrICAgIFFDT01QQVJFKGVuZ2luZTEu ZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXoiKS50b0ludCgpLCA0Mik7CisrICAgIFFDT01QQVJF KGVuZ2luZTIuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXoiKS50b0ludCgpLCA0Myk7CisrfQor KworIHZvaWQgdHN0X1FKU0VuZ2luZTo6Z2NXaXRoTmVzdGVkRGF0YVN0cnVjdHVyZSgpCisgewor ICAgICAvLyBUaGUgR0MgbXVzdCBiZSBhYmxlIHRvIHRyYXZlcnNlIGRlZXBseSBuZXN0ZWQgb2Jq ZWN0cywgb3RoZXJ3aXNlIHRoaXMKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1 dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL2RhdGEvcmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwg Yi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL2RhdGEvcmVk cmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwMDAwLi4yMDYxMzNiYjM5CistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rl c3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL2RhdGEvcmVkcmF3VXBvbkNvbHVtbkNoYW5n ZS5xbWwKK0BAIC0wLDAgKzEsMTEgQEAKKytpbXBvcnQgUXRRdWljayAyLjgKKysKKytMaXN0Vmll dyB7CisrICAgIGlkOiByb290CisrICAgIHdpZHRoOiAyMDAKKysgICAgaGVpZ2h0OiAyMDAKKysK KysgICAgZGVsZWdhdGU6IFRleHQgeworKyAgICAgICAgdGV4dDogZGlzcGxheQorKyAgICB9Cisr fQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRl bW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0 by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAoraW5kZXgg MzVmMWUyYzk0ZC4uMTcyMjQ0NzgzMCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMv YXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorKysr IGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC90c3RfcXFt bGRlbGVnYXRlbW9kZWwuY3BwCitAQCAtMjcsNiArMjcsOCBAQAorICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisgCisgI2luY2x1ZGUgPFF0VGVzdC9xdGVzdC5oPgorKyNpbmNsdWRlIDxRdENvcmUvUUNv bmNhdGVuYXRlVGFibGVzUHJveHlNb2RlbD4KKysjaW5jbHVkZSA8UXRHdWkvUVN0YW5kYXJkSXRl bU1vZGVsPgorICNpbmNsdWRlIDxRdFFtbC9xcW1sY29tcG9uZW50Lmg+CisgI2luY2x1ZGUgPFF0 UW1sTW9kZWxzL3ByaXZhdGUvcXFtbGRlbGVnYXRlbW9kZWxfcC5oPgorICNpbmNsdWRlIDxRdFF1 aWNrL3FxdWlja3ZpZXcuaD4KK0BAIC00Nyw2ICs0OSw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAg IHZvaWQgZmlsdGVyT25Hcm91cF9yZW1vdmVXaGVuQ29tcGxldGVkKCk7CisgICAgIHZvaWQgcXRi dWdfODYwMTcoKTsKKyAgICAgdm9pZCBjb250ZXh0QWNjZXNzZWRCeUhhbmRsZXIoKTsKKysgICAg dm9pZCByZWRyYXdVcG9uQ29sdW1uQ2hhbmdlKCk7CisgfTsKKyAKKyBjbGFzcyBBYnN0cmFjdEl0 ZW1Nb2RlbCA6IHB1YmxpYyBRQWJzdHJhY3RJdGVtTW9kZWwKK0BAIC0xODYsNiArMTg5LDMwIEBA IHZvaWQgdHN0X1FRbWxEZWxlZ2F0ZU1vZGVsOjpjb250ZXh0QWNjZXNzZWRCeUhhbmRsZXIoKQor ICAgICBRVkVSSUZZKHJvb3QtPnByb3BlcnR5KCJ3b3JrcyIpLnRvQm9vbCgpKTsKKyB9CisgCisr dm9pZCB0c3RfUVFtbERlbGVnYXRlTW9kZWw6OnJlZHJhd1Vwb25Db2x1bW5DaGFuZ2UoKQorK3sK KysgICAgUVN0YW5kYXJkSXRlbU1vZGVsIG0xOworKyAgICBtMS5hcHBlbmRSb3coeworKyAgICAg ICAgICAgIG5ldyBRU3RhbmRhcmRJdGVtKCJCYW5hbmEiKSwKKysgICAgICAgICAgICBuZXcgUVN0 YW5kYXJkSXRlbSgiQ29jb251dCIpLAorKyAgICB9KTsKKysKKysgICAgUVF1aWNrVmlldyB2aWV3 KHRlc3RGaWxlVXJsKCJyZWRyYXdVcG9uQ29sdW1uQ2hhbmdlLnFtbCIpKTsKKysgICAgUUNPTVBB UkUodmlldy5zdGF0dXMoKSwgUVF1aWNrVmlldzo6UmVhZHkpOworKyAgICB2aWV3LnNob3coKTsK KysgICAgUVF1aWNrSXRlbSAqcm9vdCA9IHZpZXcucm9vdE9iamVjdCgpOworKyAgICByb290LT5z ZXRQcm9wZXJ0eSgibW9kZWwiLCBRVmFyaWFudDo6ZnJvbVZhbHVlPFFPYmplY3QgKj4oJm0xKSk7 CisrCisrICAgIFFPYmplY3QgKml0ZW0gPSByb290LT5wcm9wZXJ0eSgiY3VycmVudEl0ZW0iKS52 YWx1ZTxRT2JqZWN0ICo+KCk7CisrICAgIFFWRVJJRlkoaXRlbSk7CisrICAgIFFDT01QQVJFKGl0 ZW0tPnByb3BlcnR5KCJ0ZXh0IikudG9TdHJpbmcoKSwgIkJhbmFuYSIpOworKworKyAgICBRVkVS SUZZKHJvb3QpOworKyAgICBtMS5yZW1vdmVDb2x1bW4oMCk7CisrCisrICAgIFFDT01QQVJFKGl0 ZW0tPnByb3BlcnR5KCJ0ZXh0IikudG9TdHJpbmcoKSwgIkNvY29udXQiKTsKKyt9CisrCisgUVRF U1RfTUFJTih0c3RfUVFtbERlbGVnYXRlTW9kZWwpCisgCisgI2luY2x1ZGUgInRzdF9xcW1sZGVs ZWdhdGVtb2RlbC5tb2MiCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3Ft bC9xdjRtbS90c3RfcXY0bW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRt bS90c3RfcXY0bW0uY3BwCitpbmRleCA1ZDYzNWFhNjNiLi44MjRmZDg5ZTViIDEwMDY0NAorLS0t IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0uY3BwCisrKysg Yi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRtbS5jcHAKK0BAIC03 NiwxMCArNzYsMTAgQEAgdm9pZCB0c3RfcXY0bW06Om11bHRpV3JhcHBlZFFPYmplY3RzKCkKKyAg ICAgICAgIFFDT01QQVJFKGVuZ2luZTEubWVtb3J5TWFuYWdlci0+bV9wZW5kaW5nRnJlZWRPYmpl Y3RXcmFwcGVyVmFsdWUuc2l6ZSgpLCAxKTsKKyAgICAgICAgIFFDT01QQVJFKGVuZ2luZTIubWVt b3J5TWFuYWdlci0+bV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuc2l6ZSgpLCAwKTsK KyAKKy0gICAgICAgIC8vIE1vdmVzIHRoZSBhZGRpdGlvbmFsIFdlYWtWYWx1ZSBmcm9tIG1fbXVs dGlwbHlXcmFwcGVkUU9iamVjdHMgdG8KKy0gICAgICAgIC8vIG1fcGVuZGluZ0ZyZWVkT2JqZWN0 V3JhcHBlclZhbHVlLiBJdCdzIHN0aWxsIGFsaXZlIGFmdGVyIGFsbC4KKysgICAgICAgIC8vIFRo ZSBhZGRpdGlvbmFsIFdlYWtWYWx1ZSBmcm9tIG1fbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMgaGFz bid0IGJlZW4gbW92ZWQKKysgICAgICAgIC8vIHRvIG1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBl clZhbHVlIHlldC4gSXQncyBzdGlsbCBhbGl2ZSBhZnRlciBhbGwuCisgICAgICAgICBlbmdpbmUx Lm1lbW9yeU1hbmFnZXItPnJ1bkdDKCk7CistICAgICAgICBRQ09NUEFSRShlbmdpbmUxLm1lbW9y eU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNpemUoKSwgMik7Cisr ICAgICAgICBRQ09NUEFSRShlbmdpbmUxLm1lbW9yeU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVkT2Jq ZWN0V3JhcHBlclZhbHVlLnNpemUoKSwgMSk7CisgCisgICAgICAgICAvLyBlbmdpbmUyIGRvZXNu J3Qgb3duIHRoZSBvYmplY3QgYXMgZW5naW5lMSB3YXMgdGhlIGZpcnN0IHRvIHdyYXAgaXQgYWJv dmUuCisgICAgICAgICAvLyBUaGVyZWZvcmUsIG5vIGVmZmVjdCBoZXJlLgorZGlmZiAtLWdpdCBh L3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi9kYXRhL2FjdGl2ZUZv Y3VzT25UYWJfaW5maW5pdGVMb29wMy5xbWwgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVp Y2svcXF1aWNraXRlbTIvZGF0YS9hY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcDMucW1sCitu ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uODg5ZTQ4MGYzYgorLS0tIC9k ZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0y L2RhdGEvYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AzLnFtbAorQEAgLTAsMCArMSwxMyBA QAorK2ltcG9ydCBRdFF1aWNrIDIuNgorKworK0l0ZW0geworKyAgICB2aXNpYmxlOiB0cnVlCisr ICAgIEl0ZW0geworKyAgICAgICAgdmlzaWJsZTogZmFsc2UKKysgICAgICAgIEl0ZW0geworKyAg ICAgICAgICAgIG9iamVjdE5hbWU6ICJoaWRkZW5DaGlsZCIKKysgICAgICAgICAgICBhY3RpdmVG b2N1c09uVGFiOiB0cnVlCisrICAgICAgICAgICAgZm9jdXM6IHRydWUKKysgICAgICAgIH0KKysg ICAgfQorK30KK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1 aWNraXRlbTIvdHN0X3FxdWlja2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1 aWNrL3FxdWlja2l0ZW0yL3RzdF9xcXVpY2tpdGVtLmNwcAoraW5kZXggYzhmMjUxZGJlMS4uYzhl ZjM2ZWU2OCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVp Y2tpdGVtMi90c3RfcXF1aWNraXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0 by9xdWljay9xcXVpY2tpdGVtMi90c3RfcXF1aWNraXRlbS5jcHAKK0BAIC02Nyw2ICs2Nyw3IEBA IHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYjEwKCk7CisgICAgIHZv aWQgYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3BfZGF0YSgpOworICAgICB2b2lkIGFjdGl2 ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wKCk7CisrICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYl9p bmZpbml0ZUxvb3BDb250cm9scygpOworIAorICAgICB2b2lkIG5leHRJdGVtSW5Gb2N1c0NoYWlu KCk7CisgICAgIHZvaWQgbmV4dEl0ZW1JbkZvY3VzQ2hhaW4yKCk7CitAQCAtMTA1Nyw2ICsxMDU4 LDE3IEBAIHZvaWQgdHN0X1FRdWlja0l0ZW06OmFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29w KCkKKyAgICAgUUNPTVBBUkUoaXRlbSwgd2luZG93LT5yb290T2JqZWN0KCkpOworIH0KKyAKKysK Kyt2b2lkIHRzdF9RUXVpY2tJdGVtOjphY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcENvbnRy b2xzKCkKKyt7CisrICAgIGF1dG8gc291cmNlID0gdGVzdEZpbGVVcmwoImFjdGl2ZUZvY3VzT25U YWJfaW5maW5pdGVMb29wMy5xbWwiKTsKKysgICAgUVNjb3BlZFBvaW50ZXI8UVF1aWNrVmlldz53 aW5kb3cobmV3IFFRdWlja1ZpZXcoKSk7CisrICAgIHdpbmRvdy0+c2V0U291cmNlKHNvdXJjZSk7 CisrICAgIHdpbmRvdy0+c2hvdygpOworKyAgICBRVkVSSUZZKHdpbmRvdy0+ZXJyb3JzKCkuaXNF bXB0eSgpKTsKKysgICAgUVRlc3Q6OmtleUNsaWNrKHdpbmRvdy5nZXQoKSwgUXQ6OktleV9UYWIp OyAvLyBzaG91bGQgbm90IGhhbmcKKyt9CisrCisgdm9pZCB0c3RfUVF1aWNrSXRlbTo6bmV4dEl0 ZW1JbkZvY3VzQ2hhaW4oKQorIHsKKyAgICAgaWYgKCFxdF90YWJfYWxsX3dpZGdldHMoKSkKK1N1 Ym1vZHVsZSBxdGRvYyBjMGM3YmYwNy4uLjc5ZDZlZjY5OgorU3VibW9kdWxlIHF0aW1hZ2Vmb3Jt YXRzIDJkY2YyODk5Li5hYmU0NGMwZjoKK2RpZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMv cGx1Z2lucy9pbWFnZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRsZXIuY3BwIGIvcXRpbWFnZWZvcm1h dHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWljbnNoYW5kbGVyLmNwcAoraW5kZXgg ZGRlNzgzYy4uMWJmOTA3NCAxMDA2NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5z L2ltYWdlZm9ybWF0cy9pY25zL3FpY25zaGFuZGxlci5jcHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRz L3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9pY25zL3FpY25zaGFuZGxlci5jcHAKK0BAIC00NjIs OCArNDYyLDEyIEBAIHN0YXRpYyBib29sIHBhcnNlSWNvbkVudHJ5SW5mbyhJQ05TRW50cnkgJmlj b24pCisgICAgIGlmIChpc0ljb25Db21wcmVzc2VkKGljb24pKQorICAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgIC8vIEljb24gZGVwdGg6CistICAgIGlmICghZGVwdGguaXNFbXB0eSgpKQorLSAg ICAgICAgaWNvbi5kZXB0aCA9IElDTlNFbnRyeTo6RGVwdGgoZGVwdGgudG9VSW50KCkpOworKyAg ICBpZiAoIWRlcHRoLmlzRW1wdHkoKSkgeworKyAgICAgICAgY29uc3QgdWludCBkZXB0aFVJbnQg PSBkZXB0aC50b1VJbnQoKTsKKysgICAgICAgIGlmIChkZXB0aFVJbnQgPiAzMikKKysgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICBpY29uLmRlcHRoID0gSUNOU0VudHJ5OjpEZXB0 aChkZXB0aFVJbnQpOworKyAgICB9CisgICAgIC8vIFRyeSBtb25vIGlmIGRlcHRoIG5vdCBmb3Vu ZAorICAgICBpZiAoaWNvbi5kZXB0aCA9PSBJQ05TRW50cnk6OkRlcHRoVW5rbm93bikKKyAgICAg ICAgIGljb24uZGVwdGggPSBJQ05TRW50cnk6OkRlcHRoTW9ubzsKK0BAIC01MTUsNiArNTE5LDkg QEAgc3RhdGljIGJvb2wgcGFyc2VJY29uRW50cnlJbmZvKElDTlNFbnRyeSAmaWNvbikKKyAgICAg ICAgIH0KKyAgICAgICAgIGljb24uaGVpZ2h0ID0gaWNvbi53aWR0aDsKKyAgICAgfQorKyAgICAv LyBTYW5pdHkgY2hlY2sKKysgICAgaWYgKGljb24ud2lkdGggPT0gMCB8fCBpY29uLndpZHRoID4g NDA5NikKKysgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgcmV0dXJuIHRydWU7CisgfQorIAor QEAgLTY4NSw3ICs2OTIsNyBAQCBib29sIFFJQ05TSGFuZGxlcjo6Y2FuUmVhZCgpIGNvbnN0Cisg Ym9vbCBRSUNOU0hhbmRsZXI6OnJlYWQoUUltYWdlICpvdXRJbWFnZSkKKyB7CisgICAgIFFJbWFn ZSBpbWc7CistICAgIGlmICghZW5zdXJlU2Nhbm5lZCgpKSB7CisrICAgIGlmICghZW5zdXJlU2Nh bm5lZCgpIHx8IG1fY3VycmVudEljb25JbmRleCA+PSBtX2ljb25zLnNpemUoKSkgeworICAgICAg ICAgcVdhcm5pbmcoIlFJQ05TSGFuZGxlcjo6cmVhZCgpOiBUaGUgZGV2aWNlIHdhc24ndCBwYXJz ZWQgcHJvcGVybHkhIik7CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KK0BAIC04OTIs NyArODk5LDcgQEAgYm9vbCBRSUNOU0hhbmRsZXI6OnNjYW5EZXZpY2UoKQorICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKKyAKKyAgICAgICAgIGNvbnN0IHFpbnQ2NCBibG9ja0RhdGFPZmZzZXQg PSBkZXZpY2UoKS0+cG9zKCk7CistICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChibG9j a0hlYWRlcikpIHsKKysgICAgICAgIGlmICghaXNCbG9ja0hlYWRlclZhbGlkKGJsb2NrSGVhZGVy LCBJQ05TQmxvY2tIZWFkZXJTaXplICsgZmlsZWxlbmd0aCAtIGJsb2NrRGF0YU9mZnNldCkpIHsK KyAgICAgICAgICAgICBxV2FybmluZygiUUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNlKCk6IEZhaWxl ZCwgYmFkIGhlYWRlciBhdCBwb3MgJXMuIE9TVHlwZSBcIiVzXCIsIGxlbmd0aCAldSIsCisgICAg ICAgICAgICAgICAgICAgICAgUUJ5dGVBcnJheTo6bnVtYmVyKGJsb2NrRGF0YU9mZnNldCkuY29u c3REYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgbmFtZUZyb21PU1R5cGUoYmxvY2tIZWFk ZXIub3N0eXBlKS5jb25zdERhdGEoKSwgYmxvY2tIZWFkZXIubGVuZ3RoKTsKK0BAIC05MjcsMTEg KzkzNCwxNCBAQCBib29sIFFJQ05TSGFuZGxlcjo6c2NhbkRldmljZSgpCisgICAgICAgICBjYXNl IElDTlNCbG9ja0hlYWRlcjo6VHlwZU9kcnA6CisgICAgICAgICAgICAgLy8gSWNucyBjb250YWlu ZXIgc2VlbXMgdG8gaGF2ZSBhbiBlbWJlZGRlZCBpY29uIHZhcmlhbnQgY29udGFpbmVyCisgICAg ICAgICAgICAgLy8gTGV0J3Mgc3RhcnQgYSBzY2FuIGZvciBlbnRyaWVzCistICAgICAgICAgICAg d2hpbGUgKGRldmljZSgpLT5wb3MoKSA8IG5leHRCbG9ja09mZnNldCkgeworKyAgICAgICAgICAg IHdoaWxlICghc3RyZWFtLmF0RW5kKCkgJiYgZGV2aWNlKCktPnBvcygpIDwgbmV4dEJsb2NrT2Zm c2V0KSB7CisgICAgICAgICAgICAgICAgIElDTlNCbG9ja0hlYWRlciBpY29uOworICAgICAgICAg ICAgICAgICBzdHJlYW0gPj4gaWNvbjsKKysgICAgICAgICAgICAgICAgaWYgKHN0cmVhbS5zdGF0 dXMoKSAhPSBRRGF0YVN0cmVhbTo6T2spCisrICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBpbmNvcnJlY3QgdmFyaWFudCBlbnRy eSBoZWFkZXIgYW5kIHN0b3Agc2NhbgorLSAgICAgICAgICAgICAgICBpZiAoIWlzQmxvY2tIZWFk ZXJWYWxpZChpY29uLCBibG9ja0RhdGFMZW5ndGgpKQorKyAgICAgICAgICAgICAgICBxdWludDY0 IHJlbWFpbmluZyA9IGJsb2NrRGF0YUxlbmd0aCAtIChkZXZpY2UoKS0+cG9zKCkgLSBibG9ja0Rh dGFPZmZzZXQpOworKyAgICAgICAgICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChpY29u LCBJQ05TQmxvY2tIZWFkZXJTaXplICsgcmVtYWluaW5nKSkKKyAgICAgICAgICAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgICAgICAgICBpZiAoIWFkZEVudHJ5KGljb24sIGRldmljZSgpLT5w b3MoKSwgYmxvY2tIZWFkZXIub3N0eXBlKSkKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm YWxzZTsKK0BAIC0xMDAzLDcgKzEwMTMsNyBAQCBib29sIFFJQ05TSGFuZGxlcjo6c2NhbkRldmlj ZSgpCisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgcmV0dXJu IHRydWU7CisrICAgIHJldHVybiAobV9pY29ucy5zaXplKCkgPiAwKTsKKyB9CisgCisgY29uc3Qg SUNOU0VudHJ5ICZRSUNOU0hhbmRsZXI6OmdldEljb25NYXNrKGNvbnN0IElDTlNFbnRyeSAmaWNv bikgY29uc3QKK2RpZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZv cm1hdHMvanAyL3FqcDJoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2lt YWdlZm9ybWF0cy9qcDIvcWpwMmhhbmRsZXIuY3BwCitpbmRleCA1MDgyMDIzLi5jYjM0Mzc0IDEw MDY0NAorLS0tIGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2pwMi9x anAyaGFuZGxlci5jcHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9y bWF0cy9qcDIvcWpwMmhhbmRsZXIuY3BwCitAQCAtNDMsNiArNDMsNyBAQAorICNpbmNsdWRlICJx aW1hZ2UuaCIKKyAjaW5jbHVkZSAicXZhcmlhbnQuaCIKKyAjaW5jbHVkZSAicWNvbG9yLmgiCisr I2luY2x1ZGUgInFpbWFnZXJlYWRlci5oIgorIAorICNpbmNsdWRlIDxqYXNwZXIvamFzcGVyLmg+ CisgI2luY2x1ZGUgPG1hdGguaD4gLy8gZm9yIHBvdworQEAgLTMzMywxNiArMzM0LDQ2IEBAIHBy aXZhdGU6CisgSnBlZzIwMDBKYXNwZXJSZWFkZXI6OkpwZWcyMDAwSmFzcGVyUmVhZGVyKFFJT0Rl dmljZSAqaW9kLCBTdWJGb3JtYXQgZm9ybWF0KQorICAgICA6IGphc3Blck9rKHRydWUpLCBpb0Rl dmljZShpb2QpLCBmb3JtYXQoZm9ybWF0KSwgaGFzQWxwaGEoZmFsc2UpCisgeworKyNpZiBKQVNf VkVSU0lPTl9NQUpPUiA8IDMKKyAgICAgaWYgKGphc19pbml0KCkpIHsKKyAgICAgICAgIGphc3Bl ck9rID0gZmFsc2U7CisgICAgICAgICBxRGVidWcoIkphc3BlciBMaWJyYXJ5IGluaXRpYWxpemF0 aW9uIGZhaWxlZCIpOworICAgICB9CisrI2Vsc2UKKysgICAgamFzX2NvbmZfY2xlYXIoKTsKKysj aWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDYsIDAsIDApCisrICAgIGphc19jb25m X3NldF9tYXhfbWVtX3VzYWdlKFFJbWFnZVJlYWRlcjo6YWxsb2NhdGlvbkxpbWl0KCkgKiAxMDI0 ICogMTAyNCk7CisrI2Vsc2UKKysgICAgLy8gMTI4TUIgc2VlbXMgdG8gYmUgZW5vdWdoLgorKyAg ICBqYXNfY29uZl9zZXRfbWF4X21lbV91c2FnZSgxMjggKiAxMDI0ICogMTAyNCk7CisrI2VuZGlm CisrICAgIGlmIChqYXNfaW5pdF9saWJyYXJ5KCkpIHsKKysgICAgICAgIGphc3Blck9rID0gZmFs c2U7CisrICAgICAgICBxRGVidWcoIkphc3BlciBsaWJyYXJ5IGluaXRpYWxpemF0aW9uIGZhaWxl ZCIpOworKyAgICB9CisrICAgIGlmIChqYXNfaW5pdF90aHJlYWQoKSkgeworKyAgICAgICAgamFz X2NsZWFudXBfbGlicmFyeSgpOworKyAgICAgICAgamFzcGVyT2sgPSBmYWxzZTsKKysgICAgICAg IHFEZWJ1ZygiSmFzcGVyIHRocmVhZCBpbml0aWFsaXphdGlvbiBmYWlsZWQiKTsKKysgICAgfQor KyNlbmRpZgorIH0KKyAKKyBKcGVnMjAwMEphc3BlclJlYWRlcjo6fkpwZWcyMDAwSmFzcGVyUmVh ZGVyKCkKKyB7CisrI2lmIEpBU19WRVJTSU9OX01BSk9SIDwgMworICAgICBpZiAoamFzcGVyT2sp CisgICAgICAgICBqYXNfY2xlYW51cCgpOworKyNlbHNlCisrICAgIGlmIChqYXNwZXJPaykgewor KyAgICAgICAgaWYgKGphc19jbGVhbnVwX3RocmVhZCgpKSB7CisrICAgICAgICAgICAgcURlYnVn KCJKYXNwZXIgdGhyZWFkIGNsZWFudXAgZmFpbGVkIik7CisrICAgICAgICB9CisrICAgICAgICBp ZiAoamFzX2NsZWFudXBfbGlicmFyeSgpKSB7CisrICAgICAgICAgICAgcURlYnVnKCJKYXNwZXIg bGlicmFyeSBjbGVhbnVwIGZhaWxlZCIpOworKyAgICAgICAgfQorKyAgICB9CisrI2VuZGlmCisg fQorIAorIC8qISBcaW50ZXJuYWwKK0BAIC04NTcsNyArODg4LDcgQEAgYm9vbCBKcGVnMjAwMEph c3BlclJlYWRlcjo6d3JpdGUoY29uc3QgUUltYWdlICZpbWFnZSwgaW50IHF1YWxpdHkpCisgICAg IH0KKyAKKyAgICAgLy8gT3BlbiBhbiBlbXB0eSBqYXNwZXIgc3RyZWFtIHRoYXQgZ3Jvd3MgYXV0 b21hdGljYWxseQorLSAgICBqYXNfc3RyZWFtX3QgKiBtZW1vcnlfc3RyZWFtID0gamFzX3N0cmVh bV9tZW1vcGVuKDAsIC0xKTsKKysgICAgamFzX3N0cmVhbV90ICogbWVtb3J5X3N0cmVhbSA9IGph c19zdHJlYW1fbWVtb3BlbigwLCAwKTsKKyAKKyAgICAgLy8gSmFzcGVyIHdhbnRzIGEgbm9uLWNv bnN0IHN0cmluZy4KKyAgICAgY2hhciAqc3RyID0gcXN0cmR1cChqYXNwZXJGb3JtYXRTdHJpbmcu dG9MYXRpbjEoKS5jb25zdERhdGEoKSk7CitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3Jj L3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3Jt YXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0aWZmaGFuZGxlci5jcHAKK2luZGV4 IDEzODY3NTAuLmFjODk1NmMgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lu cy9pbWFnZWZvcm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIuY3BwCisrKysgYi9xdGltYWdlZm9ybWF0 cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIuY3BwCitAQCAtMzYx LDYgKzM2MSw4IEBAIGJvb2wgUVRpZmZIYW5kbGVyOjpyZWFkKFFJbWFnZSAqaW1hZ2UpCisgICAg IH0KKyAKKyAgICAgVElGRiAqY29uc3QgdGlmZiA9IGQtPnRpZmY7CisrICAgIGlmIChUSUZGSXNU aWxlZCh0aWZmKSAmJiBUSUZGVGlsZVNpemU2NCh0aWZmKSA+IHVpbnQ2NF90KGltYWdlLT5zaXpl SW5CeXRlcygpKSkgLy8gQ29ycnVwdCBpbWFnZQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICBjb25zdCBxdWludDMyIHdpZHRoID0gZC0+c2l6ZS53aWR0aCgpOworICAgICBjb25zdCBxdWlu dDMyIGhlaWdodCA9IGQtPnNpemUuaGVpZ2h0KCk7CisgCitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZv cm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNwcCBiL3F0 aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy93ZWJwL3F3ZWJwaGFuZGxlci5j cHAKK2luZGV4IDgyZDM4Y2IuLmQwMmViMDUgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9z cmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvd2VicC9xd2VicGhhbmRsZXIuY3BwCisrKysgYi9xdGlt YWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvd2VicC9xd2VicGhhbmRsZXIuY3Bw CitAQCAtNDUsNiArNDUsNyBAQAorICNpbmNsdWRlIDxxZGVidWcuaD4KKyAjaW5jbHVkZSA8cXBh aW50ZXIuaD4KKyAjaW5jbHVkZSA8cXZhcmlhbnQuaD4KKysjaW5jbHVkZSA8UXRFbmRpYW4+Cisg Cisgc3RhdGljIGNvbnN0IGludCByaWZmSGVhZGVyU2l6ZSA9IDEyOyAvLyBSSUZGX0hFQURFUl9T SVpFIGZyb20gd2VicC9mb3JtYXRfY29uc3RhbnRzLmgKKyAKK0BAIC0xMDIsMjEgKzEwMywyMyBA QCBib29sIFFXZWJwSGFuZGxlcjo6ZW5zdXJlU2Nhbm5lZCgpIGNvbnN0CisgCisgICAgIG1fc2Nh blN0YXRlID0gU2NhbkVycm9yOworIAorLSAgICBpZiAoZGV2aWNlKCktPmlzU2VxdWVudGlhbCgp KSB7CistICAgICAgICBxV2FybmluZygpIDw8ICJTZXF1ZW50aWFsIGRldmljZXMgYXJlIG5vdCBz dXBwb3J0ZWQiOworKyAgICBRV2VicEhhbmRsZXIgKnRoYXQgPSBjb25zdF9jYXN0PFFXZWJwSGFu ZGxlciAqPih0aGlzKTsKKysgICAgY29uc3QgaW50IGhlYWRlckJ5dGVzTmVlZGVkID0gc2l6ZW9m KFdlYlBCaXRzdHJlYW1GZWF0dXJlcyk7CisrICAgIFFCeXRlQXJyYXkgaGVhZGVyID0gZGV2aWNl KCktPnBlZWsoaGVhZGVyQnl0ZXNOZWVkZWQpOworKyAgICBpZiAoaGVhZGVyLnNpemUoKSA8IGhl YWRlckJ5dGVzTmVlZGVkKQorICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICB9CisgCistICAg IHFpbnQ2NCBvbGRQb3MgPSBkZXZpY2UoKS0+cG9zKCk7CistICAgIGRldmljZSgpLT5zZWVrKDAp OworLQorLSAgICBRV2VicEhhbmRsZXIgKnRoYXQgPSBjb25zdF9jYXN0PFFXZWJwSGFuZGxlciAq Pih0aGlzKTsKKy0gICAgUUJ5dGVBcnJheSBoZWFkZXIgPSBkZXZpY2UoKS0+cGVlayhzaXplb2Yo V2ViUEJpdHN0cmVhbUZlYXR1cmVzKSk7CisrICAgIC8vIFdlIGRvIG5vIHJhbmRvbSBhY2Nlc3Mg ZHVyaW5nIGRlY29kaW5nLCBqdXN0IGEgcmVhZEFsbCgpIG9mIHRoZSB3aG9sZSBpbWFnZSBmaWxl LiBTbyBpZgorKyAgICAvLyBpZiBpdCBpcyBhbGwgYXZhaWxhYmxlIGFscmVhZHksIHdlIGNhbiBh Y2NlcHQgYSBzZXF1ZW50aWFsIGRldmljZS4gVGhlIHJpZmYgaGVhZGVyIGNvbnRhaW5zCisrICAg IC8vIHRoZSBmaWxlIHNpemUgbWludXMgOCBieXRlcyBoZWFkZXIKKysgICAgcWludDY0IGJ5dGVT aXplID0gcUZyb21MaXR0bGVFbmRpYW48cXVpbnQzMj4oaGVhZGVyLmNvbnN0RGF0YSgpICsgNCk7 CisrICAgIGlmIChkZXZpY2UoKS0+aXNTZXF1ZW50aWFsKCkgJiYgZGV2aWNlKCktPmJ5dGVzQXZh aWxhYmxlKCkgPCBieXRlU2l6ZSArIDgpIHsKKysgICAgICAgIHFXYXJuaW5nKCkgPDwgIlFXZWJw SGFuZGxlcjogSW5zdWZmaWNpZW50IGRhdGEgYXZhaWxhYmxlIGluIHNlcXVlbnRpYWwgZGV2aWNl IjsKKysgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgfQorICAgICBpZiAoV2ViUEdldEZlYXR1 cmVzKChjb25zdCB1aW50OF90KiloZWFkZXIuY29uc3REYXRhKCksIGhlYWRlci5zaXplKCksICYo dGhhdC0+bV9mZWF0dXJlcykpID09IFZQOF9TVEFUVVNfT0spIHsKKyAgICAgICAgIGlmIChtX2Zl YXR1cmVzLmhhc19hbmltYXRpb24pIHsKKyAgICAgICAgICAgICAvLyBGb3IgYW5pbWF0aW9uLCB3 ZSBoYXZlIHRvIHJlYWQgYW5kIHNjYW4gd2hvbGUgZmlsZSB0byBkZXRlcm1pbmUgbG9vcCBjb3Vu dCBhbmQgaW1hZ2VzIGNvdW50CistICAgICAgICAgICAgZGV2aWNlKCktPnNlZWsob2xkUG9zKTsK Ky0KKyAgICAgICAgICAgICBpZiAodGhhdC0+ZW5zdXJlRGVtdXhlcigpKSB7CisgICAgICAgICAg ICAgICAgIHRoYXQtPm1fbG9vcCA9IFdlYlBEZW11eEdldEkobV9kZW11eGVyLCBXRUJQX0ZGX0xP T1BfQ09VTlQpOworICAgICAgICAgICAgICAgICB0aGF0LT5tX2ZyYW1lQ291bnQgPSBXZWJQRGVt dXhHZXRJKG1fZGVtdXhlciwgV0VCUF9GRl9GUkFNRV9DT1VOVCk7CitAQCAtMTI2LDE3ICsxMjks MTMgQEAgYm9vbCBRV2VicEhhbmRsZXI6OmVuc3VyZVNjYW5uZWQoKSBjb25zdAorICAgICAgICAg ICAgICAgICBpZiAodGhhdC0+bV9mZWF0dXJlcy5oYXNfYWxwaGEpCisgICAgICAgICAgICAgICAg ICAgICB0aGF0LT5tX2NvbXBvc2l0ZWQtPmZpbGwoUXQ6OnRyYW5zcGFyZW50KTsKKyAKKy0gICAg ICAgICAgICAgICAgLy8gV2UgZG8gbm90IHJlc2V0IGRldmljZSBwb3NpdGlvbiBzaW5jZSB3ZSBo YXZlIHJlYWQgaW4gYWxsIGRhdGEKKyAgICAgICAgICAgICAgICAgbV9zY2FuU3RhdGUgPSBTY2Fu U3VjY2VzczsKKy0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgfQor ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBtX3NjYW5TdGF0ZSA9IFNjYW5TdWNjZXNz OworICAgICAgICAgfQorICAgICB9CisgCistICAgIGRldmljZSgpLT5zZWVrKG9sZFBvcyk7Cist CisgICAgIHJldHVybiBtX3NjYW5TdGF0ZSA9PSBTY2FuU3VjY2VzczsKKyB9CisgCitAQCAtMTU5 LDcgKzE1OCw3IEBAIGJvb2wgUVdlYnBIYW5kbGVyOjplbnN1cmVEZW11eGVyKCkKKyAKKyBib29s IFFXZWJwSGFuZGxlcjo6cmVhZChRSW1hZ2UgKmltYWdlKQorIHsKKy0gICAgaWYgKCFlbnN1cmVT Y2FubmVkKCkgfHwgZGV2aWNlKCktPmlzU2VxdWVudGlhbCgpIHx8ICFlbnN1cmVEZW11eGVyKCkp CisrICAgIGlmICghZW5zdXJlU2Nhbm5lZCgpIHx8ICFlbnN1cmVEZW11eGVyKCkpCisgICAgICAg ICByZXR1cm4gZmFsc2U7CisgCisgICAgIFFSZWN0IHByZXZGcmFtZVJlY3Q7CitTdWJtb2R1bGUg cXRsb2NhdGlvbiA5OGE1YzUxMS4uZjk5MWUyOGM6CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9z cmMvbG9jYXRpb24vY29uZmlndXJlLmpzb24gYi9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9jb25m aWd1cmUuanNvbgoraW5kZXggNmQwMWE5YTMuLmQxZTYyM2ExIDEwMDY0NAorLS0tIGEvcXRsb2Nh dGlvbi9zcmMvbG9jYXRpb24vY29uZmlndXJlLmpzb24KKysrKyBiL3F0bG9jYXRpb24vc3JjL2xv Y2F0aW9uL2NvbmZpZ3VyZS5qc29uCitAQCAtOSw3ICs5LDcgQEAKKyAgICAgICAgICAgICAibGFi ZWwiOiAiUXQubGFicy5sb2NhdGlvbiBleHBlcmltZW50YWwgUU1MIHBsdWdpbiIsCisgICAgICAg ICAgICAgInB1cnBvc2UiOiAiUHJvdmlkZXMgZXhwZXJpbWVudGFsIFF0TG9jYXRpb24gUU1MIHR5 cGVzIiwKKyAgICAgICAgICAgICAic2VjdGlvbiI6ICJMb2NhdGlvbiIsCistICAgICAgICAgICAg ImNvbmRpdGlvbiI6ICJjb25maWcub3BlbmdsIiwKKysgICAgICAgICAgICAiY29uZGl0aW9uIjog ImZlYXR1cmVzLm9wZW5nbCIsCisgICAgICAgICAgICAgIm91dHB1dCI6IFsgInByaXZhdGVGZWF0 dXJlIiBdCisgICAgICAgICB9LAorICAgICAgICAgImdlb3NlcnZpY2VzX29zbSI6IHsKK2RpZmYg LS1naXQgYS9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0cXNn c3VwcG9ydC5jcHAgYi9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2Jq ZWN0cXNnc3VwcG9ydC5jcHAKK2luZGV4IGE5Nzg1NzNkLi4xMWUxNDY2ZiAxMDA2NDQKKy0tLSBh L3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmplY3Rxc2dzdXBwb3J0 LmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cvcWdlb21hcG9iamVj dHFzZ3N1cHBvcnQuY3BwCitAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgUUdlb01hcE9iamVjdFFT R1N1cHBvcnQ6OnVwZGF0ZU1hcE9iamVjdHMoUVNHTm9kZSAqcm9vdCwgUVF1aWNrV2luZG93ICp3 aW5kCisgICAgIGlmICghcm9vdCkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYgKG1fbWFw T2JqZWN0c1Jvb3ROb2RlICYmIG1fbWFwT2JqZWN0c1Jvb3ROb2RlLT5wYXJlbnQoKSkKKysgICAg aWYgKG1fbWFwT2JqZWN0c1Jvb3ROb2RlICYmICFtX21hcE9iamVjdHNSb290Tm9kZS0+cGFyZW50 KCkpCisgICAgICAgICByb290LT5hcHBlbmRDaGlsZE5vZGUobV9tYXBPYmplY3RzUm9vdE5vZGUu Z2V0KCkpOworIAorICAgICBpZiAoIW1fbWFwT2JqZWN0c1Jvb3ROb2RlKSB7CitkaWZmIC0tZ2l0 IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb2NvZGluZ21hbmFn ZXJlbmdpbmVfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2Vz cmkvZ2VvY29kaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAoraW5kZXggNWE0MDQ2N2UuLmQxMjNj NmE4IDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3Jp L2dlb2NvZGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3Bs dWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitA QCAtNTksOCArNTksMTAgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgc3RhdGljIGNvbnN0IFFTdHJp bmcga1ByZWZpeEVzcmkoUVN0cmluZ0xpdGVyYWwoImVzcmkuIikpOworIHN0YXRpYyBjb25zdCBR U3RyaW5nIGtQYXJhbVVzZXJBZ2VudChrUHJlZml4RXNyaSArIFFTdHJpbmdMaXRlcmFsKCJ1c2Vy YWdlbnQiKSk7CisgCistc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybEdlb2NvZGUoUVN0cmluZ0xp dGVyYWwoImh0dHA6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29y bGQvR2VvY29kZVNlcnZlci9maW5kQWRkcmVzc0NhbmRpZGF0ZXMiKSk7Cistc3RhdGljIGNvbnN0 IFFTdHJpbmcga1VybFJldmVyc2VHZW9jb2RlKFFTdHJpbmdMaXRlcmFsKCJodHRwOi8vZ2VvY29k ZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvcmV2 ZXJzZUdlb2NvZGUiKSk7Cisrc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybEdlb2NvZGUoUVN0cmlu Z0xpdGVyYWwoImh0dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2Vz LyIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV29y bGQvR2VvY29kZVNlcnZlci9maW5kQWRkcmVzc0NhbmRpZGF0ZXMiKSk7Cisrc3RhdGljIGNvbnN0 IFFTdHJpbmcga1VybFJldmVyc2VHZW9jb2RlKFFTdHJpbmdMaXRlcmFsKAorKyAgICAgICAgImh0 dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2Nv ZGVTZXJ2ZXIvcmV2ZXJzZUdlb2NvZGUiKSk7CisgCisgc3RhdGljIFFTdHJpbmcgYWRkcmVzc1Rv UXVlcnkoY29uc3QgUUdlb0FkZHJlc3MgJmFkZHJlc3MpCisgeworZGlmZiAtLWdpdCBhL3F0bG9j YXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNy aS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVq c29ucGFyc2VyX2VzcmkuY3BwCitpbmRleCAxNzQ5MmQ5NC4uOTZjMTJiMWIgMTAwNjQ0CistLS0g YS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29ucGFy c2VyX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2Vz cmkvZ2Vvcm91dGVqc29ucGFyc2VyX2VzcmkuY3BwCitAQCAtNDYsNyArNDYsOCBAQAorIAorIFFU X0JFR0lOX05BTUVTUEFDRQorIAorLS8vIEpTT04gcmVmZXJlbmNlOiBodHRwOi8vcmVzb3VyY2Vz LmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dpdGhf c3luY2hyb25vdXNfZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKysvLyBKU09OIHJlZmVy ZW5jZToKKysvLyBodHRwczovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJl c3QtYXBpLyMvUm91dGVfc2VydmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAw MDAwMzYwMDAwMDAvCisgCisgc3RhdGljIGNvbnN0IFFTdHJpbmcga0Vycm9yTWVzc2FnZShRU3Ry aW5nTGl0ZXJhbCgiRXJyb3IgJTE6ICUyLiIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrRXJy b3JKc29uKFFTdHJpbmdMaXRlcmFsKCJFcnJvcjogaW52YWxpZGUgSlNPTiBkb2N1bWVudC4iKSk7 CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dl b3JvdXRlcmVwbHlfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2Vz L2VzcmkvZ2Vvcm91dGVyZXBseV9lc3JpLmNwcAoraW5kZXggOGNhZGZiMjkuLjkyYjZiYjEzIDEw MDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3Jv dXRlcmVwbHlfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2Vydmlj ZXMvZXNyaS9nZW9yb3V0ZXJlcGx5X2VzcmkuY3BwCitAQCAtNDQsNyArNDQsOCBAQAorIAorIFFU X0JFR0lOX05BTUVTUEFDRQorIAorLS8vIEpTT04gcmVmZXJlbmNlOiBodHRwOi8vcmVzb3VyY2Vz LmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dpdGhf c3luY2hyb25vdXNfZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKysvLyBKU09OIHJlZmVy ZW5jZToKKysvLyBodHRwczovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJl c3QtYXBpLyMvUm91dGVfc2VydmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAw MDAwMzYwMDAwMDAvCisgCisgR2VvUm91dGVSZXBseUVzcmk6Okdlb1JvdXRlUmVwbHlFc3JpKFFO ZXR3b3JrUmVwbHkgKnJlcGx5LCBjb25zdCBRR2VvUm91dGVSZXF1ZXN0ICZyZXF1ZXN0LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRT2JqZWN0ICpwYXJlbnQpIDoKK2Rp ZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91 dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3Nl cnZpY2VzL2VzcmkvZ2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDBlNmJj MmM3Li5lZDYxM2Y0YiAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2Vy dmljZXMvZXNyaS9nZW9yb3V0aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysrIGIvcXRsb2Nh dGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5hZ2VyZW5naW5l X2VzcmkuY3BwCitAQCAtNDgsNyArNDgsOCBAQCBzdGF0aWMgY29uc3QgUVN0cmluZyBrUHJlZml4 RXNyaShRU3RyaW5nTGl0ZXJhbCgiZXNyaS4iKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1Bh cmFtVXNlckFnZW50KGtQcmVmaXhFc3JpICsgUVN0cmluZ0xpdGVyYWwoInVzZXJhZ2VudCIpKTsK KyBzdGF0aWMgY29uc3QgUVN0cmluZyBrUGFyYW1Ub2tlbihrUHJlZml4RXNyaSArIFFTdHJpbmdM aXRlcmFsKCJ0b2tlbiIpKTsKKyAKKy1zdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUm91dGluZyhR U3RyaW5nTGl0ZXJhbCgiaHR0cDovL3JvdXRlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2Vydmlj ZXMvV29ybGQvUm91dGUvTkFTZXJ2ZXIvUm91dGVfV29ybGQvc29sdmUiKSk7Cisrc3RhdGljIGNv bnN0IFFTdHJpbmcga1VybFJvdXRpbmcoUVN0cmluZ0xpdGVyYWwoCisrICAgICAgICAiaHR0cHM6 Ly9yb3V0ZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL1JvdXRlL05BU2Vy dmVyL1JvdXRlX1dvcmxkL3NvbHZlIikpOworIAorIEdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNy aTo6R2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpKGNvbnN0IFFWYXJpYW50TWFwICZwYXJhbWV0 ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFHZW9TZXJ2aWNlUHJvdmlkZXI6OkVycm9yICplcnJvciwKK0BAIC03MCw3ICs3MSw4 IEBAIEdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaTo6fkdlb1JvdXRpbmdNYW5hZ2VyRW5naW5l RXNyaSgpCisgeworIH0KKyAKKy0vLyBSRVNUIHJlZmVyZW5jZTogaHR0cDovL3Jlc291cmNlcy5h cmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAw MzYwMDAwMDAKKysvLyBSRVNUIHJlZmVyZW5jZToKKysvLyBodHRwczovL3Jlc291cmNlcy5hcmNn aXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAwMzYw MDAwMDAKKyAKKyBRR2VvUm91dGVSZXBseSAqR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjpj YWxjdWxhdGVSb3V0ZShjb25zdCBRR2VvUm91dGVSZXF1ZXN0ICZyZXF1ZXN0KQorIHsKK0BAIC0x MjUsNyArMTI3LDcgQEAgdm9pZCBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6OnJlcGx5RXJy b3IoUUdlb1JvdXRlUmVwbHk6OkVycm9yIGVycm9yQ29kZSwgY28KKyBRU3RyaW5nIEdlb1JvdXRp bmdNYW5hZ2VyRW5naW5lRXNyaTo6cHJlZmVyZWREaXJlY3Rpb25MYW5nYWdlKCkKKyB7CisgICAg IC8vIGxpc3Qgb2Ygc3VwcG9ydGVkIGxhbmdhZ2VzIGlzIGRlZmluZWQgaW46CistICAgIC8vIGh0 dHA6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5o dG1sIy8vMDJyMzAwMDAwMDM2MDAwMDAwCisrICAgIC8vIGh0dHBzOi8vcmVzb3VyY2VzLmFyY2dp cy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvaW5kZXguaHRtbCMvLzAycjMwMDAwMDAzNjAw MDAwMAorICAgICBjb25zdCBRU3RyaW5nTGlzdCBzdXBwb3J0ZWRMYW5ndWFnZXMgPSB7CisgICAg ICAgICAiYXIiLCAvLyBHZW5lcmF0ZSBkaXJlY3Rpb25zIGluIEFyYWJpYworICAgICAgICAgImNz IiwgLy8gR2VuZXJhdGUgZGlyZWN0aW9ucyBpbiBDemVjaAorZGlmZiAtLWdpdCBhL3F0bG9jYXRp b24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW90aWxlZG1hcHBpbmdtYW5hZ2VyZW5n aW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dl b3RpbGVkbWFwcGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDVkMTU4MzVkLi4yNDE0 OGY5NSAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNy aS9nZW90aWxlZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9u L3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVuZ2lu ZV9lc3JpLmNwcAorQEAgLTIzMCw3ICsyMzAsOCBAQCBRR2VvTWFwICpHZW9UaWxlZE1hcHBpbmdN YW5hZ2VyRW5naW5lRXNyaTo6Y3JlYXRlTWFwKCkKKyAvLyAke3l9ID0gWQorIC8vICR7dG9rZW59 ID0gVG9rZW4KKyAKKy0vLyB0ZW1wbGF0ZSA9ICdodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5l LmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBTZXJ2ZXIvdGlsZS97 e3p9fS97e3l9fS97e3h9fS5wbmcnCisrLy8gdGVtcGxhdGUgPQorKy8vICdodHRwczovL3NlcnZp Y2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVG9wb19NYXAv TWFwU2VydmVyL3RpbGUve3t6fX0ve3t5fX0ve3t4fX0ucG5nJworIAorIGJvb2wgR2VvVGlsZWRN YXBwaW5nTWFuYWdlckVuZ2luZUVzcmk6OmluaXRpYWxpemVNYXBTb3VyY2VzKFFHZW9TZXJ2aWNl UHJvdmlkZXI6OkVycm9yICplcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nICplcnJvclN0cmluZywKK2RpZmYg LS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvbWFwcy5qc29u IGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL21hcHMuanNvbgoraW5k ZXggODE2N2FlN2QuLjg2MmUwODdkIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lu cy9nZW9zZXJ2aWNlcy9lc3JpL21hcHMuanNvbgorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lu cy9nZW9zZXJ2aWNlcy9lc3JpL21hcHMuanNvbgorQEAgLTYsOCArNiw4IEBACisgICAgICAgICAg ICAgImRlc2NyaXB0aW9uIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgU3RyZWV0IE1hcCIsCisgICAg ICAgICAgICAgIm1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCist ICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNH SVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9TdHJlZXRfTWFwL01hcFNlcnZlciIsCistICAgICAgICAg ICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNv bS9ob21lL2l0ZW0uaHRtbD9pZD0zYjkzMzM3OTgzZTk0MzZmOGRiOTUwZTM4YTg2MjlhZic+RXNy aTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNl cy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1N0cmVldF9NYXAv TWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJl Zj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0zYjkzMzM3OTgzZTk0 MzZmOGRiOTUwZTM4YTg2MjlhZic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwK KyAKKyAgICAgICAgIHsKK0BAIC0xNiw4ICsxNiw4IEBACisgICAgICAgICAgICAgIiI6ICJBcmNH SVMgT25saW5lIFdvcmxkIEltYWdlcnkiLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAor ICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDov L3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX0ltYWdl cnkvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEg aHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTEwZGYyMjc5Zjk2 ODRlNGE5ZjZhN2YwOGZlYmFjMmE5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAg ICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3Nl cnZpY2VzL1dvcmxkX0ltYWdlcnkvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0 VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0u aHRtbD9pZD0xMGRmMjI3OWY5Njg0ZTRhOWY2YTdmMDhmZWJhYzJhOSc+RXNyaTwvYT4gY29udHJp YnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0yNiw4ICsyNiw4IEBACisg ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgVGVycmFpbiBC YXNlIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0 IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGlu ZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVGVycmFpbl9CYXNlL01hcFNlcnZlciIs CistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93 d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1jNjFhZDhhYjAxN2Q0OWUxYTgyZjU4MGVl MTI5ODkzMSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0 cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9U ZXJyYWluX0Jhc2UvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICIm Y29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1j NjFhZDhhYjAxN2Q0OWUxYTgyZjU4MGVlMTI5ODkzMSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgor ICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0zNiw4ICszNiw4IEBACisgICAgICAgICAg ICAgImRlc2NyaXB0aW9uIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgVG9wb2dyYXBoeSIsCisgICAg ICAgICAgICAgIm1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCist ICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lT L3Jlc3Qvc2VydmljZXMvV29ybGRfVG9wb19NYXAvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAi Y29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hv bWUvaXRlbS5odG1sP2lkPTMwZTVmZTMxNDljMzRkZjFiYTkyMmU2ZjViYmY4MDhmJz5Fc3JpPC9h PiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNn aXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9fTWFwL01hcFNlcnZl ciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBz Oi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MzBlNWZlMzE0OWMzNGRmMWJhOTIy ZTZmNWJiZjgwOGYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAg ICAgICB7CitAQCAtNDYsOCArNDYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJU aGlzIG1hcCBwcmVzZW50cyBsYW5kIGNvdmVyIGFuZCBkZXRhaWxlZCB0b3BvZ3JhcGhpYyBtYXBz IGZvciB0aGUgVW5pdGVkIFN0YXRlcy4iLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAor ICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDov L3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvVVNBX1RvcG9f TWFwcy9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8 YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9OTljZDVmYmQ5 ODkzNDAyODgwMmI0Zjc5N2M0YjE3MzInPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAg ICAgICAidXJsIjogImh0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVz dC9zZXJ2aWNlcy9VU0FfVG9wb19NYXBzL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHly aWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9p dGVtLmh0bWw/aWQ9OTljZDVmYmQ5ODkzNDAyODgwMmI0Zjc5N2M0YjE3MzInPkVzcmk8L2E+IGNv bnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtNTYsOCArNTYsOCBA QAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJOYXRpb25hbCBHZW9ncmFwaGljIFdvcmxk IE1hcCIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdo dCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29u bGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvTmF0R2VvX1dvcmxkX01hcC9NYXBTZXJ2ZXIi LAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8v d3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjliMWI0MjIxOTg5NDRmYmJkNTI1MGIz MjQxNjkxYjYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0 dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9OYXRH ZW9fV29ybGRfTWFwL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAi JmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9 YjliMWI0MjIxOTg5NDRmYmJkNTI1MGIzMjQxNjkxYjYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIK KyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtNjYsOCArNjYsOCBAQAorICAgICAgICAg ICAgICJkZXNjcmlwdGlvbiI6ICJUaGVtYXRpYyBjb250ZW50IHByb3ZpZGluZyBhIG5ldXRyYWwg YmFja2dyb3VuZCB3aXRoIG1pbmltYWwgY29sb3JzIiwKKyAgICAgICAgICAgICAibW9iaWxlIjog dHJ1ZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjog Imh0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL0Nh bnZhcy9Xb3JsZF9MaWdodF9HcmF5X0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29w eXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUv aXRlbS5odG1sP2lkPWVkNzEyY2IxZGIzZTRiYWU5ZTg1MzI5MDQwZmI5YTQ5Jz5Fc3JpPC9hPiBj b250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dp c29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dvcmxkX0xpZ2h0X0dyYXlf QmFzZS9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8 YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWVkNzEyY2Ix ZGIzZTRiYWU5ZTg1MzI5MDQwZmI5YTQ5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAg ICB9LAorIAorICAgICAgICAgeworQEAgLTc2LDggKzc2LDggQEAKKyAgICAgICAgICAgICAiZGVz Y3JpcHRpb24iOiAiTmF0dXJhbCBFYXJ0aCBwaHlzaWNhbCBtYXAgZm9yIHRoZSB3b3JsZCIsCisg ICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNl LAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0Fy Y0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1BoeXNpY2FsX01hcC9NYXBTZXJ2ZXIiLAorLSAgICAg ICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dp cy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YzRlYzcyMmExY2QzNGNmMGEyMzkwNGFhZGY4OTIzYTAn PkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2Vy dmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfUGh5c2ljYWxf TWFwL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxh IGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YzRlYzcyMmEx Y2QzNGNmMGEyMzkwNGFhZGY4OTIzYTAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAg IH0sCisgCisgICAgICAgICB7CitAQCAtODYsOCArODYsOCBAQAorICAgICAgICAgICAgICJkZXNj cmlwdGlvbiI6ICJQb3J0cmF5cyBzdXJmYWNlIGVsZXZhdGlvbiBhcyBzaGFkZWQgcmVsaWVmIiwK KyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFs c2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20v QXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfU2hhZGVkX1JlbGllZi9NYXBTZXJ2ZXIiLAorLSAg ICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFy Y2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9OWM1MzcwZDBiNTRmNGRlMWI0OGEzNzkyZDczNzdm ZjInPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8v c2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfU2hhZGVk X1JlbGllZi9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5 OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTljNTM3 MGQwYjU0ZjRkZTFiNDhhMzc5MmQ3Mzc3ZmYyJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAg ICAgICB9LAorIAorICAgICAgICAgeworQEAgLTk2LDggKzk2LDggQEAKKyAgICAgICAgICAgICAi ZGVzY3JpcHRpb24iOiAiVGhpcyBtYXAgaXMgZGVzaWduZWQgdG8gYmUgdXNlZCBhcyBhIGJhc2Vt YXAgYnkgbWFyaW5lIEdJUyBwcm9mZXNzaW9uYWxzIGFuZCBhcyBhIHJlZmVyZW5jZSBtYXAgYnkg YW55b25lIGludGVyZXN0ZWQgaW4gb2NlYW4gZGF0YSIsCisgICAgICAgICAgICAgIm1vYmlsZSI6 IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwi OiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL09j ZWFuL1dvcmxkX09jZWFuX0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0 VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5o dG1sP2lkPTFlMTI2ZTc1MjBmOTQ2NmM5Y2EyOGI4ZjI4YjVlNTAwJz5Fc3JpPC9hPiBjb250cmli dXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUu Y29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL09jZWFuL1dvcmxkX09jZWFuX0Jhc2UvTWFwU2VydmVy IiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6 Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0xZTEyNmU3NTIwZjk0NjZjOWNhMjhi OGYyOGI1ZTUwMCc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAg ICAgIHsKK0BAIC0xMDYsOCArMTA2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi VGhlbWF0aWMgY29udGVudCBwcm92aWRpbmcgYSBuZXV0cmFsIGJhY2tncm91bmQgd2l0aCBtaW5p bWFsIGNvbG9ycyIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAg ICJuaWdodCI6IHRydWUsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmljZXMuYXJj Z2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9DYW52YXMvV29ybGRfRGFya19HcmF5 X0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsg PGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWEyODRhOWI5 OWIzNDQ2YTM5MTBkNDE0NGE1MDk5MGY2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAg ICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jl c3Qvc2VydmljZXMvQ2FudmFzL1dvcmxkX0RhcmtfR3JheV9CYXNlL01hcFNlcnZlciIsCisrICAg ICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFy Y2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YTI4NGE5Yjk5YjM0NDZhMzkxMGQ0MTQ0YTUwOTkw ZjYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitA QCAtMTE2LDggKzExNiw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRlTG9ybWXi gJlzIHRvcG9ncmFwaGljIGJhc2VtYXAgaXMgYSBzZWFtbGVzcyBnbG9iYWwgZGF0YSBzZXQgdGhh dCBwb3J0cmF5cyB0cmFuc3BvcnRhdGlvbiwgaHlkcm9ncmFwaHksIGp1cmlzZGljdGlvbiBib3Vu ZGFyaWVzLCBhbmQgbWFqb3IgZ2VvZ3JhcGhpYyBmZWF0dXJlcyIsCisgICAgICAgICAgICAgIm1v YmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAg ICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZp Y2VzL1NwZWNpYWx0eS9EZUxvcm1lX1dvcmxkX0Jhc2VfTWFwL01hcFNlcnZlciIsCistICAgICAg ICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lz LmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1iMTY1YzNkZjQ1M2U0YmU2YjVhYzRmZGIyNDFlZmZiZSc+ RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2 ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9TcGVjaWFsdHkvRGVMb3Jt ZV9Xb3JsZF9CYXNlX01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0 IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1s P2lkPWIxNjVjM2RmNDUzZTRiZTZiNWFjNGZkYjI0MWVmZmJlJz5Fc3JpPC9hPiBjb250cmlidXRv cnMiCisgICAgICAgICB9CisgICAgIF0KKyB9CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMv cGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcCBiL3F0 bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVf ZXNyaS5jcHAKK2luZGV4IDM4NThkZGY1Li5hZjY2ZjI4ZSAxMDA2NDQKKy0tLSBhL3F0bG9jYXRp b24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNyaS5j cHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1h bmFnZXJlbmdpbmVfZXNyaS5jcHAKK0BAIC02Myw4ICs2MywxMCBAQCBzdGF0aWMgY29uc3QgUVN0 cmluZyBrQ291bnRyaWVzS2V5KFFTdHJpbmdMaXRlcmFsKCJkZXRhaWxlZENvdW50cmllcyIpKTsK KyBzdGF0aWMgY29uc3QgUVN0cmluZyBrTG9jYWxpemVkTmFtZXNLZXkoUVN0cmluZ0xpdGVyYWwo ImxvY2FsaXplZE5hbWVzIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtNYXhMb2NhdGlvbnNL ZXkoUVN0cmluZ0xpdGVyYWwoIm1heExvY2F0aW9ucyIpKTsKKyAKKy1zdGF0aWMgY29uc3QgUVVy bCBrVXJsR2VvY29kZVNlcnZlcigiaHR0cDovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVz dC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyP2Y9cGpzb24iKTsKKy1zdGF0aWMgY29uc3Qg UVVybCBrVXJsRmluZEFkZHJlc3NDYW5kaWRhdGVzKCJodHRwOi8vZ2VvY29kZS5hcmNnaXMuY29t L2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5k aWRhdGVzIik7Cisrc3RhdGljIGNvbnN0IFFVcmwga1VybEdlb2NvZGVTZXJ2ZXIoCisrICAgICAg ICAiaHR0cHM6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQv R2VvY29kZVNlcnZlcj9mPXBqc29uIik7Cisrc3RhdGljIGNvbnN0IFFVcmwga1VybEZpbmRBZGRy ZXNzQ2FuZGlkYXRlcygiaHR0cHM6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2Vy dmljZXMvV29ybGQvIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIkdlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIik7CisgCisgUGxhY2VNYW5h Z2VyRW5naW5lRXNyaTo6UGxhY2VNYW5hZ2VyRW5naW5lRXNyaShjb25zdCBRVmFyaWFudE1hcCAm cGFyYW1ldGVycywgUUdlb1NlcnZpY2VQcm92aWRlcjo6RXJyb3IgKmVycm9yLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyAqZXJyb3JTdHJp bmcpIDoKK1N1Ym1vZHVsZSBxdG11bHRpbWVkaWEgZjAzNDQwNzkuLjBkN2NjMzNhOgorZGlmZiAt LWdpdCBhL3F0bXVsdGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0X3B1 bHNlLmNwcCBiL3F0bXVsdGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0 X3B1bHNlLmNwcAoraW5kZXggMmI1MzI1MTMyLi5iNjhiNGFmMWIgMTAwNjQ0CistLS0gYS9xdG11 bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9xYXVkaW9pbnB1dF9wdWxzZS5jcHAKKysr KyBiL3F0bXVsdGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0X3B1bHNl LmNwcAorQEAgLTQwMiw2ICs0MDIsOCBAQCBpbnQgUVB1bHNlQXVkaW9JbnB1dDo6Ynl0ZXNSZWFk eSgpIGNvbnN0CisgCisgcWludDY0IFFQdWxzZUF1ZGlvSW5wdXQ6OnJlYWQoY2hhciAqZGF0YSwg cWludDY0IGxlbikKKyB7CisrICAgIFFfQVNTRVJUKGRhdGEgIT0gbnVsbHB0ciB8fCBsZW4gPT0g MCk7CisrCisgICAgIG1fYnl0ZXNBdmFpbGFibGUgPSBjaGVja0J5dGVzUmVhZHkoKTsKKyAKKyAg ICAgc2V0RXJyb3IoUUF1ZGlvOjpOb0Vycm9yKTsKK0BAIC00MTEsNyArNDEzLDggQEAgcWludDY0 IFFQdWxzZUF1ZGlvSW5wdXQ6OnJlYWQoY2hhciAqZGF0YSwgcWludDY0IGxlbikKKyAKKyAgICAg aWYgKCFtX3B1bGxNb2RlICYmICFtX3RlbXBCdWZmZXIuaXNFbXB0eSgpKSB7CisgICAgICAgICBy ZWFkQnl0ZXMgPSBxTWluKHN0YXRpY19jYXN0PGludD4obGVuKSwgbV90ZW1wQnVmZmVyLnNpemUo KSk7CistICAgICAgICBtZW1jcHkoZGF0YSwgbV90ZW1wQnVmZmVyLmNvbnN0RGF0YSgpLCByZWFk Qnl0ZXMpOworKyAgICAgICAgaWYgKHJlYWRCeXRlcykKKysgICAgICAgICAgICBtZW1jcHkoZGF0 YSwgbV90ZW1wQnVmZmVyLmNvbnN0RGF0YSgpLCByZWFkQnl0ZXMpOworICAgICAgICAgbV90b3Rh bFRpbWVWYWx1ZSArPSByZWFkQnl0ZXM7CisgCisgICAgICAgICBpZiAocmVhZEJ5dGVzIDwgbV90 ZW1wQnVmZmVyLnNpemUoKSkgeworQEAgLTUwMiw5ICs1MDUsMTAgQEAgcWludDY0IFFQdWxzZUF1 ZGlvSW5wdXQ6OnJlYWQoY2hhciAqZGF0YSwgcWludDY0IGxlbikKKyAKKyB2b2lkIFFQdWxzZUF1 ZGlvSW5wdXQ6OmFwcGx5Vm9sdW1lKGNvbnN0IHZvaWQgKnNyYywgdm9pZCAqZGVzdCwgaW50IGxl bikKKyB7CisrICAgIFFfQVNTRVJUKChzcmMgJiYgZGVzdCkgfHwgbGVuID09IDApOworICAgICBp ZiAobV92b2x1bWUgPCAxLmYpCisgICAgICAgICBRQXVkaW9IZWxwZXJJbnRlcm5hbDo6cU11bHRp cGx5U2FtcGxlcyhtX3ZvbHVtZSwgbV9mb3JtYXQsIHNyYywgZGVzdCwgbGVuKTsKKy0gICAgZWxz ZQorKyAgICBlbHNlIGlmIChsZW4pCisgICAgICAgICBtZW1jcHkoZGVzdCwgc3JjLCBsZW4pOwor IH0KKyAKK1N1Ym1vZHVsZSBxdHBpbSAwMmVmZWY1ZS4uLmY5YThmMGZjIChjb21taXRzIG5vdCBw cmVzZW50KQorU3VibW9kdWxlIHF0cXVpY2szZCBiODVjZjYyMi4uNDdkZWZjOGI6CitkaWZmIC0t Z2l0IGEvcXRxdWljazNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAu cHJvIGIvcXRxdWljazNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAu cHJvCitpbmRleCBjYTVjNDk5ZS4uMTc0YTA3NWIgMTAwNjQ0CistLS0gYS9xdHF1aWNrM2Qvc3Jj L3BsdWdpbnMvYXNzZXRpbXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8KKysrKyBiL3F0cXVpY2sz ZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9hc3NpbXAvYXNzaW1wLnBybworQEAgLTEwLDcg KzEwLDcgQEAgUVRfRk9SX0NPTkZJRyArPSBhc3NldGltcG9ydGVycy1wcml2YXRlCisgaW5jbHVk ZSgkJE9VVF9QV0QvLi4vcXRhc3NldGltcG9ydGVycy1jb25maWcucHJpKQorIAorIHF0Q29uZmln KHN5c3RlbS1hc3NpbXApOiFpZihjcm9zc19jb21waWxlOmhvc3RfYnVpbGQpIHsKKy0gICAgUU1B S0VfVVNFX1BSSVZBVEUgKz0gYXNzaW1wCisrICAgIFFNQUtFX1VTRV9QUklWQVRFICs9IHF1aWNr M2QtYXNzaW1wCisgfSBlbHNlIHsKKyAgICAgaW5jbHVkZSguLi8uLi8uLi8zcmRwYXJ0eS9hc3Np bXAvYXNzaW1wLnByaSkKKyB9CitTdWJtb2R1bGUgcXRxdWlja2NvbnRyb2xzMiAzYTY1N2RjMC4u NTZjZTgyMzM6CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0 Zm9ybS93aWRnZXRzL3F3aWRnZXRwbGF0Zm9ybW1lbnUuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9z cmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRzL3F3aWRnZXRwbGF0Zm9ybW1lbnUuY3BwCitpbmRl eCBlNWZlNzM0ZjcuLmUzNjkyMjc3NSAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3Jj L2ltcG9ydHMvcGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNwcAorKysrIGIv cXRxdWlja2NvbnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRzL3F3aWRnZXRwbGF0 Zm9ybW1lbnUuY3BwCitAQCAtMzgsNiArMzgsNyBAQAorICNpbmNsdWRlICJxd2lkZ2V0cGxhdGZv cm1tZW51aXRlbV9wLmgiCisgCisgI2luY2x1ZGUgPFF0R3VpL3F3aW5kb3cuaD4KKysjaW5jbHVk ZSA8UXRHdWkvcHJpdmF0ZS9xaGlnaGRwaXNjYWxpbmdfcC5oPgorICNpbmNsdWRlIDxRdFdpZGdl dHMvcW1lbnUuaD4KKyAjaW5jbHVkZSA8UXRXaWRnZXRzL3FhY3Rpb24uaD4KKyAKK0BAIC0xNDUs NyArMTQ2LDcgQEAgdm9pZCBRV2lkZ2V0UGxhdGZvcm1NZW51OjpzaG93UG9wdXAoY29uc3QgUVdp bmRvdyAqd2luZG93LCBjb25zdCBRUmVjdCAmdGFyZ2V0UmUKKyAKKyAgICAgUVBvaW50IHRhcmdl dFBvcyA9IHRhcmdldFJlY3QuYm90dG9tTGVmdCgpOworICAgICBpZiAod2luZG93KQorLSAgICAg ICAgdGFyZ2V0UG9zID0gd2luZG93LT5tYXBUb0dsb2JhbCh0YXJnZXRQb3MpOworKyAgICAgICAg dGFyZ2V0UG9zID0gd2luZG93LT5tYXBUb0dsb2JhbChRSGlnaERwaTo6ZnJvbU5hdGl2ZUxvY2Fs UG9zaXRpb24odGFyZ2V0UG9zLCB3aW5kb3cpKTsKKyAKKyAgICAgY29uc3QgUVdpZGdldFBsYXRm b3JtTWVudUl0ZW0gKndpZGdldEl0ZW0gPSBxb2JqZWN0X2Nhc3Q8Y29uc3QgUVdpZGdldFBsYXRm b3JtTWVudUl0ZW0gKj4oaXRlbSk7CisgICAgIG1fbWVudS0+cG9wdXAodGFyZ2V0UG9zLCB3aWRn ZXRJdGVtID8gd2lkZ2V0SXRlbS0+YWN0aW9uKCkgOiBudWxscHRyKTsKK2RpZmYgLS1naXQgYS9x dHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24u Y3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0 YnV0dG9uLmNwcAoraW5kZXggOTUwZTRlMDk5Li5iODFmYmVhMGIgMTAwNjQ0CistLS0gYS9xdHF1 aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24uY3Bw CisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJh Y3RidXR0b24uY3BwCitAQCAtMzg3LDYgKzM4NywxNyBAQCB2b2lkIFFRdWlja0Fic3RyYWN0QnV0 dG9uUHJpdmF0ZTo6aXRlbUltcGxpY2l0SGVpZ2h0Q2hhbmdlZChRUXVpY2tJdGVtICppdGVtKQor ICAgICAgICAgZW1pdCBxLT5pbXBsaWNpdEluZGljYXRvckhlaWdodENoYW5nZWQoKTsKKyB9Cisg Cisrdm9pZCBRUXVpY2tBYnN0cmFjdEJ1dHRvblByaXZhdGU6Oml0ZW1EZXN0cm95ZWQoUVF1aWNr SXRlbSAqaXRlbSkKKyt7CisrICAgIFFfUShRUXVpY2tBYnN0cmFjdEJ1dHRvbik7CisrICAgIFFR dWlja0NvbnRyb2xQcml2YXRlOjppdGVtRGVzdHJveWVkKGl0ZW0pOworKyAgICBpZiAoaXRlbSA9 PSBpbmRpY2F0b3IpIHsKKysgICAgICAgIGluZGljYXRvciA9IG51bGxwdHI7CisrICAgICAgICBl bWl0IHEtPmltcGxpY2l0SW5kaWNhdG9yV2lkdGhDaGFuZ2VkKCk7CisrICAgICAgICBlbWl0IHEt PmltcGxpY2l0SW5kaWNhdG9ySGVpZ2h0Q2hhbmdlZCgpOworKyAgICB9CisrfQorKworIFFRdWlj a0Fic3RyYWN0QnV0dG9uICpRUXVpY2tBYnN0cmFjdEJ1dHRvblByaXZhdGU6OmZpbmRDaGVja2Vk QnV0dG9uKCkgY29uc3QKKyB7CisgICAgIFFfUShjb25zdCBRUXVpY2tBYnN0cmFjdEJ1dHRvbik7 CitAQCAtMTE3Niw2ICsxMTg3LDEyIEBAIFFBY2Nlc3NpYmxlOjpSb2xlIFFRdWlja0Fic3RyYWN0 QnV0dG9uOjphY2Nlc3NpYmxlUm9sZSgpIGNvbnN0CisgICAgIH0KKyAgICAgcmV0dXJuIFFBY2Nl c3NpYmxlOjpCdXR0b247CisgfQorKworK3ZvaWQgUVF1aWNrQWJzdHJhY3RCdXR0b246OmFjY2Vz c2libGVQcmVzc0FjdGlvbigpCisreworKyAgICBRX0QoUVF1aWNrQWJzdHJhY3RCdXR0b24pOwor KyAgICBkLT50cmlnZ2VyKCk7CisrfQorICNlbmRpZgorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2Rp ZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJz dHJhY3RidXR0b25fcC5oIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3Fx dWlja2Fic3RyYWN0YnV0dG9uX3AuaAoraW5kZXggMGZhNDg5ODBlLi5hYjY2MjIwZDAgMTAwNjQ0 CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJh Y3RidXR0b25fcC5oCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIv cXF1aWNrYWJzdHJhY3RidXR0b25fcC5oCitAQCAtMjA5LDYgKzIwOSw3IEBAIHByb3RlY3RlZDoK KyAjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisgICAgIHZvaWQgYWNjZXNzaWJpbGl0eUFj dGl2ZUNoYW5nZWQoYm9vbCBhY3RpdmUpIG92ZXJyaWRlOworICAgICBRQWNjZXNzaWJsZTo6Um9s ZSBhY2Nlc3NpYmxlUm9sZSgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBRX0lOVk9LQUJMRSB2b2lk IGFjY2Vzc2libGVQcmVzc0FjdGlvbigpOworICNlbmRpZgorIAorIHByaXZhdGU6CitkaWZmIC0t Z2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0 YnV0dG9uX3BfcC5oIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlj a2Fic3RyYWN0YnV0dG9uX3BfcC5oCitpbmRleCA5MjkxYzFhODcuLmI3Mjk3MjBmMiAxMDA2NDQK Ky0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFj dGJ1dHRvbl9wX3AuaAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMy L3FxdWlja2Fic3RyYWN0YnV0dG9uX3BfcC5oCitAQCAtMTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoK KyAKKyAgICAgdm9pZCBpdGVtSW1wbGljaXRXaWR0aENoYW5nZWQoUVF1aWNrSXRlbSAqaXRlbSkg b3ZlcnJpZGU7CisgICAgIHZvaWQgaXRlbUltcGxpY2l0SGVpZ2h0Q2hhbmdlZChRUXVpY2tJdGVt ICppdGVtKSBvdmVycmlkZTsKKysgICAgdm9pZCBpdGVtRGVzdHJveWVkKFFRdWlja0l0ZW0gKml0 ZW0pIG92ZXJyaWRlOworIAorICAgICAvLyBjb3BpZWQgZnJvbSBxYWJzdHJhY3RidXR0b24uY3Bw CisgICAgIHN0YXRpYyBjb25zdCBpbnQgQVVUT19SRVBFQVRfREVMQVkgPSAzMDA7CitkaWZmIC0t Z2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5j cHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWN0aW9uLmNw cAoraW5kZXggMjA0MWU3NzQxLi44NjEwY2RmYWUgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJv bHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWN0aW9uLmNwcAorKysrIGIvcXRxdWlja2Nv bnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAKK0BAIC0xNDUsNyAr MTQ1LDcgQEAgaW50IFFRdWlja0FjdGlvblByaXZhdGU6OlNob3J0Y3V0RW50cnk6OnNob3J0Y3V0 SWQoKSBjb25zdAorIAorIHZvaWQgUVF1aWNrQWN0aW9uUHJpdmF0ZTo6U2hvcnRjdXRFbnRyeTo6 Z3JhYihjb25zdCBRS2V5U2VxdWVuY2UgJnNob3J0Y3V0LCBib29sIGVuYWJsZWQpCisgeworLSAg ICBpZiAoc2hvcnRjdXQuaXNFbXB0eSgpKQorKyAgICBpZiAoc2hvcnRjdXQuaXNFbXB0eSgpIHx8 IG1fc2hvcnRjdXRJZCkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgUXQ6OlNob3J0Y3V0Q29u dGV4dCBjb250ZXh0ID0gUXQ6OldpbmRvd1Nob3J0Y3V0OyAvLyBUT0RPCitkaWZmIC0tZ2l0IGEv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAg Yi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udGFpbmVyLmNw cAoraW5kZXggZjM4YzJiMDljLi42ZWVkMmEwMjQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJv bHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udGFpbmVyLmNwcAorKysrIGIvcXRxdWlj a2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAKK0BAIC0y MjUsNiArMjI1LDcgQEAgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjpjbGVhbnVwKCkKKyAg ICAgUU9iamVjdDo6ZGlzY29ubmVjdChjb250ZW50TW9kZWwsICZRUW1sT2JqZWN0TW9kZWw6OmNv dW50Q2hhbmdlZCwgcSwgJlFRdWlja0NvbnRhaW5lcjo6Y291bnRDaGFuZ2VkKTsKKyAgICAgUU9i amVjdDo6ZGlzY29ubmVjdChjb250ZW50TW9kZWwsICZRUW1sT2JqZWN0TW9kZWw6OmNoaWxkcmVu Q2hhbmdlZCwgcSwgJlFRdWlja0NvbnRhaW5lcjo6Y29udGVudENoaWxkcmVuQ2hhbmdlZCk7Cisg ICAgIGRlbGV0ZSBjb250ZW50TW9kZWw7CisrICAgIGNvbnRlbnRNb2RlbCA9IG51bGxwdHI7Cisg fQorIAorIFFRdWlja0l0ZW0gKlFRdWlja0NvbnRhaW5lclByaXZhdGU6Oml0ZW1BdChpbnQgaW5k ZXgpIGNvbnN0CitAQCAtNDM2LDcgKzQzNyw3IEBAIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0 ZTo6Y29udGVudENoaWxkcmVuX2NsZWFyKFFRbWxMaXN0UHJvcGVydHk8UVF1aWNrSXRlbT4KKyB2 b2lkIFFRdWlja0NvbnRhaW5lclByaXZhdGU6OnVwZGF0ZUNvbnRlbnRXaWR0aCgpCisgeworICAg ICBRX1EoUVF1aWNrQ29udGFpbmVyKTsKKy0gICAgaWYgKGhhc0NvbnRlbnRXaWR0aCB8fCBxRnV6 enlDb21wYXJlKGNvbnRlbnRXaWR0aCwgaW1wbGljaXRDb250ZW50V2lkdGgpKQorKyAgICBpZiAo aGFzQ29udGVudFdpZHRoIHx8IHFGdXp6eUNvbXBhcmUoY29udGVudFdpZHRoLCBpbXBsaWNpdENv bnRlbnRXaWR0aCkgfHwgIWNvbnRlbnRNb2RlbCkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAg Y29udGVudFdpZHRoID0gaW1wbGljaXRDb250ZW50V2lkdGg7CitAQCAtNDQ2LDcgKzQ0Nyw3IEBA IHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6dXBkYXRlQ29udGVudFdpZHRoKCkKKyB2b2lk IFFRdWlja0NvbnRhaW5lclByaXZhdGU6OnVwZGF0ZUNvbnRlbnRIZWlnaHQoKQorIHsKKyAgICAg UV9RKFFRdWlja0NvbnRhaW5lcik7CistICAgIGlmIChoYXNDb250ZW50SGVpZ2h0IHx8IHFGdXp6 eUNvbXBhcmUoY29udGVudEhlaWdodCwgaW1wbGljaXRDb250ZW50SGVpZ2h0KSkKKysgICAgaWYg KGhhc0NvbnRlbnRIZWlnaHQgfHwgcUZ1enp5Q29tcGFyZShjb250ZW50SGVpZ2h0LCBpbXBsaWNp dENvbnRlbnRIZWlnaHQpIHx8ICFjb250ZW50TW9kZWwpCisgICAgICAgICByZXR1cm47CisgCisg ICAgIGNvbnRlbnRIZWlnaHQgPSBpbXBsaWNpdENvbnRlbnRIZWlnaHQ7CitkaWZmIC0tZ2l0IGEv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwIGIv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwCitp bmRleCBiYmJkMGU2MjIuLjFmNGI0NzM0MyAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIv c3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sLmNwcAorKysrIGIvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwCitAQCAtODQ1LDYgKzg0 NSwxMyBAQCB2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjpleGVjdXRlQmFja2dyb3VuZChib29s IGNvbXBsZXRlKQorICAgICAgICAgcXVpY2tDb21wbGV0ZURlZmVycmVkKHEsIGJhY2tncm91bmRO YW1lKCksIGJhY2tncm91bmQpOworIH0KKyAKKysvKgorKyAgICBcaW50ZXJuYWwKKysKKysgICAg SGlkZXMgYW4gaXRlbSB0aGF0IHdhcyByZXBsYWNlZCBieSBhIG5ld2VyIG9uZSwgcmF0aGVyIHRo YW4KKysgICAgZGVsZXRpbmcgaXQsIGFzIHRoZSBpdGVtIGlzIHR5cGljYWxseSBjcmVhdGVkIGlu IFFNTCBhbmQgaGVuY2UKKysgICAgd2UgZG9uJ3Qgb3duIGl0LgorKyovCisgdm9pZCBRUXVpY2tD b250cm9sUHJpdmF0ZTo6aGlkZU9sZEl0ZW0oUVF1aWNrSXRlbSAqaXRlbSkKKyB7CisgICAgIGlm ICghaXRlbSkKK0BAIC04NjMsNiArODcwLDI5IEBAIHZvaWQgUVF1aWNrQ29udHJvbFByaXZhdGU6 OmhpZGVPbGRJdGVtKFFRdWlja0l0ZW0gKml0ZW0pCisgI2VuZGlmCisgfQorIAorKy8qCisrICAg IFxpbnRlcm5hbAorKworKyAgICBOYW1lZCAidW5oaWRlIiBiZWNhdXNlIGl0J3MgdXNlZCBmb3Ig Y2FzZXMgd2hlcmUgYW4gaXRlbQorKyAgICB0aGF0IHdhcyBwcmV2aW91c2x5IGhpZGRlbiBieSBc bCBoaWRlT2xkSXRlbSgpIHdhbnRzIHRvIGJlCisrICAgIHNob3duIGJ5IGEgY29udHJvbCBhZ2Fp biwgc3VjaCBhcyBhIFNjcm9sbEJhciBpbiBTY3JvbGxWaWV3LgorKyovCisrdm9pZCBRUXVpY2tD b250cm9sUHJpdmF0ZTo6dW5oaWRlT2xkSXRlbShRUXVpY2tDb250cm9sICpjb250cm9sLCBRUXVp Y2tJdGVtICppdGVtKQorK3sKKysgICAgUV9BU1NFUlQoaXRlbSk7CisrICAgIHFDRGVidWcobGNJ dGVtTWFuYWdlbWVudCkgPDwgInVuaGlkaW5nIG9sZCBpdGVtIiA8PCBpdGVtOworKworKyAgICBp dGVtLT5zZXRWaXNpYmxlKHRydWUpOworKyAgICBpdGVtLT5zZXRQYXJlbnRJdGVtKGNvbnRyb2wp OworKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysgICAgLy8gQWRkIHRoZSBpdGVt IGJhY2sgaW4gdG8gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4KKysgICAgUVF1aWNrQWNjZXNzaWJs ZUF0dGFjaGVkICphY2Nlc3NpYmxlID0gYWNjZXNzaWJsZUF0dGFjaGVkKGl0ZW0pOworKyAgICBp ZiAoYWNjZXNzaWJsZSkKKysgICAgICAgIGFjY2Vzc2libGUtPnNldElnbm9yZWQoZmFsc2UpOwor KyNlbmRpZgorK30KKysKKyB2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjp1cGRhdGVCYXNlbGlu ZU9mZnNldCgpCisgeworICAgICBRX1EoUVF1aWNrQ29udHJvbCk7CitkaWZmIC0tZ2l0IGEvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmggYi9x dHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbF9wX3AuaAor aW5kZXggOGU5NzkwNzllLi5hNmU2MjRjOTEgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMy L3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbF9wX3AuaAorKysrIGIvcXRxdWlja2Nv bnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmgKK0BAIC0xNzMs NiArMTczLDcgQEAgcHVibGljOgorICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUJhY2tncm91bmQo Ym9vbCBjb21wbGV0ZSA9IGZhbHNlKTsKKyAKKyAgICAgc3RhdGljIHZvaWQgaGlkZU9sZEl0ZW0o UVF1aWNrSXRlbSAqaXRlbSk7CisrICAgIHN0YXRpYyB2b2lkIHVuaGlkZU9sZEl0ZW0oUVF1aWNr Q29udHJvbCAqY29udHJvbCwgUVF1aWNrSXRlbSAqaXRlbSk7CisgCisgICAgIHZvaWQgdXBkYXRl QmFzZWxpbmVPZmZzZXQoKTsKKyAKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9x dWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcCBiL3F0cXVpY2tjb250cm9s czIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tkaWFsb2didXR0b25ib3guY3BwCitpbmRleCBl NmRiMTRlYjUuLjYxOTdkMTU0NyAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1 aWNrdGVtcGxhdGVzMi9xcXVpY2tkaWFsb2didXR0b25ib3guY3BwCisrKysgYi9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcAorQEAg LTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgUVJlY3RGIGFsaWduZWRSZWN0KFF0OjpMYXlvdXREaXJl Y3Rpb24gZGlyZWN0aW9uLCBRdDo6QWxpZ25tZW50IGFsaWdubWVudAorIHZvaWQgUVF1aWNrRGlh bG9nQnV0dG9uQm94UHJpdmF0ZTo6cmVzaXplQ29udGVudCgpCisgeworICAgICBRX1EoUVF1aWNr RGlhbG9nQnV0dG9uQm94KTsKKy0gICAgaWYgKCFjb250ZW50SXRlbSkKKysgICAgaWYgKCFjb250 ZW50SXRlbSB8fCAhY29udGVudE1vZGVsKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBRUmVj dEYgZ2VvbWV0cnkgPSBxLT5ib3VuZGluZ1JlY3QoKS5hZGp1c3RlZChxLT5sZWZ0UGFkZGluZygp LCBxLT50b3BQYWRkaW5nKCksIC1xLT5yaWdodFBhZGRpbmcoKSwgLXEtPmJvdHRvbVBhZGRpbmco KSk7CitAQCAtMzIyLDYgKzMyMiw5IEBAIHZvaWQgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0 ZTo6dXBkYXRlTGF5b3V0KCkKKyBxcmVhbCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjpn ZXRDb250ZW50V2lkdGgoKSBjb25zdAorIHsKKyAgICAgUV9RKGNvbnN0IFFRdWlja0RpYWxvZ0J1 dHRvbkJveCk7CisrICAgIGlmICghY29udGVudE1vZGVsKQorKyAgICAgICAgcmV0dXJuIDA7Cisr CisgICAgIGNvbnN0IGludCBjb3VudCA9IGNvbnRlbnRNb2RlbC0+Y291bnQoKTsKKyAgICAgY29u c3QgcXJlYWwgdG90YWxTcGFjaW5nID0gcU1heCgwLCBjb3VudCAtIDEpICogc3BhY2luZzsKKyAg ICAgcXJlYWwgdG90YWxXaWR0aCA9IHRvdGFsU3BhY2luZzsKK0BAIC0zNDEsNiArMzQ0LDkgQEAg cXJlYWwgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6Z2V0Q29udGVudFdpZHRoKCkgY29u c3QKKyBxcmVhbCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjpnZXRDb250ZW50SGVpZ2h0 KCkgY29uc3QKKyB7CisgICAgIFFfUShjb25zdCBRUXVpY2tEaWFsb2dCdXR0b25Cb3gpOworKyAg ICBpZiAoIWNvbnRlbnRNb2RlbCkKKysgICAgICAgIHJldHVybiAwOworKworICAgICBjb25zdCBp bnQgY291bnQgPSBjb250ZW50TW9kZWwtPmNvdW50KCk7CisgICAgIHFyZWFsIG1heEhlaWdodCA9 IDA7CisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworZGlmZiAtLWdpdCBh L3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcCBi L3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcAor aW5kZXggOTFiZDU5MTg0Li4wY2U1MThmODQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMy L3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrb3ZlcmxheS5jcHAKKysrKyBiL3F0cXVpY2tjb250 cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcAorQEAgLTM5OSw4ICsz OTksMTEgQEAgdm9pZCBRUXVpY2tPdmVybGF5OjppdGVtQ2hhbmdlKEl0ZW1DaGFuZ2UgY2hhbmdl LCBjb25zdCBJdGVtQ2hhbmdlRGF0YSAmZGF0YSkKKyAgICAgUV9EKFFRdWlja092ZXJsYXkpOwor ICAgICBRUXVpY2tJdGVtOjppdGVtQ2hhbmdlKGNoYW5nZSwgZGF0YSk7CisgCistICAgIGlmIChj aGFuZ2UgPT0gSXRlbUNoaWxkQWRkZWRDaGFuZ2UgfHwgY2hhbmdlID09IEl0ZW1DaGlsZFJlbW92 ZWRDaGFuZ2UpCisrICAgIGlmIChjaGFuZ2UgPT0gSXRlbUNoaWxkQWRkZWRDaGFuZ2UgfHwgY2hh bmdlID09IEl0ZW1DaGlsZFJlbW92ZWRDaGFuZ2UpIHsKKyAgICAgICAgIHNldFZpc2libGUoIWQt PmFsbERyYXdlcnMuaXNFbXB0eSgpIHx8ICFjaGlsZEl0ZW1zKCkuaXNFbXB0eSgpKTsKKysgICAg ICAgIGlmIChkYXRhLml0ZW0tPnBhcmVudCgpID09IGQtPm1vdXNlR3JhYmJlclBvcHVwKQorKyAg ICAgICAgICAgIGQtPnNldE1vdXNlR3JhYmJlclBvcHVwKG51bGxwdHIpOworKyAgICB9CisgfQor IAorIHZvaWQgUVF1aWNrT3ZlcmxheTo6Z2VvbWV0cnlDaGFuZ2VkKGNvbnN0IFFSZWN0RiAmbmV3 R2VvbWV0cnksIGNvbnN0IFFSZWN0RiAmb2xkR2VvbWV0cnkpCitkaWZmIC0tZ2l0IGEvcXRxdWlj a2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAgYi9xdHF1 aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrc2Nyb2xsYmFyLmNwcAoraW5k ZXggNGUyZjUwOWRiLi4xYzRiMzA4Y2QgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3Ny Yy9xdWlja3RlbXBsYXRlczIvcXF1aWNrc2Nyb2xsYmFyLmNwcAorKysrIGIvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAKK0BAIC03OTcsNiAr Nzk3LDE0IEBAIHZvaWQgUVF1aWNrU2Nyb2xsQmFyQXR0YWNoZWRQcml2YXRlOjppbml0SG9yaXpv bnRhbCgpCisgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50ID09IGZsaWNrYWJsZS0+cGFyZW50SXRl bSgpKQorICAgICAgICAgaG9yaXpvbnRhbC0+c3RhY2tBZnRlcihmbGlja2FibGUpOworIAorKyAg ICAvLyBJZiBhIHNjcm9sbCBiYXIgd2FzIHByZXZpb3VzbHkgaGlkZGVuIChkdWUgdG8gZS5nLiBz ZXR0aW5nIGEgbmV3IGNvbnRlbnRJdGVtCisrICAgIC8vIG9uIGEgU2Nyb2xsVmlldyksIHdlIG5l ZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgdW4taGlkZSBpdC4KKysgICAgLy8gV2UgZG9uJ3QgYm90 aGVyIGNoZWNraW5nIGlmIHRoZSBpdGVtIGlzIGFjdHVhbGx5IHRoZSBvbGQgb25lLCBiZWNhdXNl CisrICAgIC8vIGlmIGl0J3Mgbm90LCBhbGwgb2YgdGhlIHRoaW5ncyB0aGUgZnVuY3Rpb24gZG9l cyAoc2V0dGluZyBwYXJlbnQsIHZpc2liaWxpdHksIGV0Yy4pCisrICAgIC8vIHNob3VsZCBiZSBu by1vcHMgYW55d2F5LgorKyAgICBpZiAoYXV0byBjb250cm9sID0gcW9iamVjdF9jYXN0PFFRdWlj a0NvbnRyb2wqPihxX3B0ci0+cGFyZW50KCkpKQorKyAgICAgICAgUVF1aWNrQ29udHJvbFByaXZh dGU6OnVuaGlkZU9sZEl0ZW0oY29udHJvbCwgaG9yaXpvbnRhbCk7CisrCisgICAgIGxheW91dEhv cml6b250YWwoKTsKKyAgICAgaG9yaXpvbnRhbC0+c2V0U2l6ZShhcmVhLT5wcm9wZXJ0eSgid2lk dGhSYXRpbyIpLnRvUmVhbCgpKTsKKyAgICAgaG9yaXpvbnRhbC0+c2V0UG9zaXRpb24oYXJlYS0+ cHJvcGVydHkoInhQb3NpdGlvbiIpLnRvUmVhbCgpKTsKK0BAIC04MTgsNiArODI2LDkgQEAgdm9p ZCBRUXVpY2tTY3JvbGxCYXJBdHRhY2hlZFByaXZhdGU6OmluaXRWZXJ0aWNhbCgpCisgICAgIGlm IChwYXJlbnQgJiYgcGFyZW50ID09IGZsaWNrYWJsZS0+cGFyZW50SXRlbSgpKQorICAgICAgICAg dmVydGljYWwtPnN0YWNrQWZ0ZXIoZmxpY2thYmxlKTsKKyAKKysgICAgaWYgKGF1dG8gY29udHJv bCA9IHFvYmplY3RfY2FzdDxRUXVpY2tDb250cm9sKj4ocV9wdHItPnBhcmVudCgpKSkKKysgICAg ICAgIFFRdWlja0NvbnRyb2xQcml2YXRlOjp1bmhpZGVPbGRJdGVtKGNvbnRyb2wsIHZlcnRpY2Fs KTsKKysKKyAgICAgbGF5b3V0VmVydGljYWwoKTsKKyAgICAgdmVydGljYWwtPnNldFNpemUoYXJl YS0+cHJvcGVydHkoImhlaWdodFJhdGlvIikudG9SZWFsKCkpOworICAgICB2ZXJ0aWNhbC0+c2V0 UG9zaXRpb24oYXJlYS0+cHJvcGVydHkoInlQb3NpdGlvbiIpLnRvUmVhbCgpKTsKK2RpZmYgLS1n aXQgYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc2Nyb2xs dmlldy5xbWwgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rf c2Nyb2xsdmlldy5xbWwKK2luZGV4IDBlOGIwODM1Mi4uY2Q0OTMxMTg0IDEwMDY0NAorLS0tIGEv cXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3Njcm9sbHZpZXcu cW1sCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rf c2Nyb2xsdmlldy5xbWwKK0BAIC01NzYsNCArNTc2LDUxIEBAIFRlc3RDYXNlIHsKKyAgICAgICAg IHZlcmlmeShuZXdIb3Jpem9udGFsU2Nyb2xsQmFyLnZpc2libGUpCisgICAgICAgICB2ZXJpZnko IW9sZEhvcml6b250YWxTY3JvbGxCYXIudmlzaWJsZSkKKyAgICAgfQorKworKyAgICBDb21wb25l bnQgeworKyAgICAgICAgaWQ6IGJpbmRpbmdUb0NvbnRlbnRJdGVtQW5kU3RhbmRhbG9uZUZsaWNr YWJsZQorKworKyAgICAgICAgSXRlbSB7CisrICAgICAgICAgICAgd2lkdGg6IDIwMAorKyAgICAg ICAgICAgIGhlaWdodDogMjAwCisrCisrICAgICAgICAgICAgcHJvcGVydHkgYWxpYXMgc2Nyb2xs Vmlldzogc2Nyb2xsVmlldworKworKyAgICAgICAgICAgIFNjcm9sbFZpZXcgeworKyAgICAgICAg ICAgICAgICBpZDogc2Nyb2xsVmlldworKyAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBh cmVudAorKyAgICAgICAgICAgICAgICBjb250ZW50SXRlbTogbGlzdFZpZXcKKysKKysgICAgICAg ICAgICAgICAgcHJvcGVydHkgSXRlbSBzb21lQmluZGluZzogY29udGVudEl0ZW0KKysgICAgICAg ICAgICB9CisrICAgICAgICAgICAgTGlzdFZpZXcgeworKyAgICAgICAgICAgICAgICBpZDogbGlz dFZpZXcKKysgICAgICAgICAgICAgICAgbW9kZWw6IDEwCisrICAgICAgICAgICAgICAgIGRlbGVn YXRlOiBJdGVtRGVsZWdhdGUgeworKyAgICAgICAgICAgICAgICAgICAgdGV4dDogbW9kZWxEYXRh CisrICAgICAgICAgICAgICAgICAgICB3aWR0aDogbGlzdFZpZXcud2lkdGgKKysgICAgICAgICAg ICAgICAgfQorKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgfQorKworKyAgICAvLyBU ZXN0cyB0aGF0IHNjcm9sbCBiYXJzIHNob3cgdXAgZm9yIGEgU2Nyb2xsVmlldyB3aGVyZQorKyAg ICAvLyAtIGl0cyBjb250ZW50SXRlbSBpcyBkZWNsYXJlZCBhcyBhIHN0YW5kYWxvbmUsIHNlcGFy YXRlIGl0ZW0KKysgICAgLy8gLSB0aGVyZSBpcyBhIGJpbmRpbmcgdG8gY29udGVudEl0ZW0gKHdo aWNoIGNhdXNlcyBhIGRlZmF1bHQgRmxpY2thYmxlIHRvIGJlIGNyZWF0ZWQpCisrICAgIGZ1bmN0 aW9uIHRlc3RfYmluZGluZ1RvQ29udGVudEl0ZW1BbmRTdGFuZGFsb25lRmxpY2thYmxlKCkgewor KyAgICAgICAgbGV0IHJvb3QgPSBjcmVhdGVUZW1wb3JhcnlPYmplY3QoYmluZGluZ1RvQ29udGVu dEl0ZW1BbmRTdGFuZGFsb25lRmxpY2thYmxlLCB0ZXN0Q2FzZSkKKysgICAgICAgIHZlcmlmeShy b290KQorKworKyAgICAgICAgbGV0IGNvbnRyb2wgPSByb290LnNjcm9sbFZpZXcKKysgICAgICAg IGxldCB2ZXJ0aWNhbFNjcm9sbEJhciA9IGNvbnRyb2wuU2Nyb2xsQmFyLnZlcnRpY2FsCisrICAg ICAgICBsZXQgaG9yaXpvbnRhbFNjcm9sbEJhciA9IGNvbnRyb2wuU2Nyb2xsQmFyLmhvcml6b250 YWwKKysgICAgICAgIGNvbXBhcmUodmVydGljYWxTY3JvbGxCYXIucGFyZW50LCBjb250cm9sKQor KyAgICAgICAgY29tcGFyZShob3Jpem9udGFsU2Nyb2xsQmFyLnBhcmVudCwgY29udHJvbCkKKysg ICAgICAgIHZlcmlmeSh2ZXJ0aWNhbFNjcm9sbEJhci52aXNpYmxlKQorKyAgICAgICAgdmVyaWZ5 KGhvcml6b250YWxTY3JvbGxCYXIudmlzaWJsZSkKKysKKysgICAgICAgIG1vdXNlRHJhZyh2ZXJ0 aWNhbFNjcm9sbEJhciwgdmVydGljYWxTY3JvbGxCYXIud2lkdGggLyAyLCB2ZXJ0aWNhbFNjcm9s bEJhci5oZWlnaHQgLyAyLCAwLCA1MCkKKysgICAgICAgIHZlcmlmeSh2ZXJ0aWNhbFNjcm9sbEJh ci5hY3RpdmUpCisrICAgICAgICB2ZXJpZnkoaG9yaXpvbnRhbFNjcm9sbEJhci5hY3RpdmUpCisr ICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRy b2xzL2RhdGEvdHN0X3N3aXRjaC5xbWwgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29u dHJvbHMvZGF0YS90c3Rfc3dpdGNoLnFtbAoraW5kZXggYjNmYWI0MWNhLi4xMGI2YmFhMDIgMTAw NjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rf c3dpdGNoLnFtbAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2Rh dGEvdHN0X3N3aXRjaC5xbWwKK0BAIC02MDgsNCArNjA4LDI3IEBAIFRlc3RDYXNlIHsKKyAgICAg ICAgIG1vdXNlQ2xpY2soY29udHJvbC5pbmRpY2F0b3IpCisgICAgICAgICB2ZXJpZnkoY29udHJv bC5hY3RpdmVGb2N1cykKKyAgICAgfQorKworKyAgICBDb21wb25lbnQgeworKyAgICAgICAgaWQ6 IGRlbGV0aW9uT3JkZXIxCisrICAgICAgICBJdGVtIHsKKysgICAgICAgICAgICBJbWFnZSB7IGlk OiBpbm5lckltYWdlIH0KKysgICAgICAgICAgICBTd2l0Y2ggeyBpbmRpY2F0b3I6IGlubmVySW1h Z2UgfQorKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIENvbXBvbmVudCB7CisrICAgICAgICBp ZDogZGVsZXRpb25PcmRlcjIKKysgICAgICAgIEl0ZW0geworKyAgICAgICAgICAgIFN3aXRjaCB7 IGluZGljYXRvcjogaW5uZXJJbWFnZSB9CisrICAgICAgICAgICAgSW1hZ2UgeyBpZDogaW5uZXJJ bWFnZSB9CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgZnVuY3Rpb24gdGVzdF9kZWxldGlv bk9yZGVyKCkgeworKyAgICAgICAgdmFyIGNvbnRyb2wxID0gY3JlYXRlVGVtcG9yYXJ5T2JqZWN0 KGRlbGV0aW9uT3JkZXIxLCB0ZXN0Q2FzZSkKKysgICAgICAgIHZlcmlmeShjb250cm9sMSkKKysg ICAgICAgIHZhciBjb250cm9sMiA9IGNyZWF0ZVRlbXBvcmFyeU9iamVjdChkZWxldGlvbk9yZGVy MiwgdGVzdENhc2UpCisrICAgICAgICB2ZXJpZnkoY29udHJvbDIpCisrICAgIH0KKyB9CitkaWZm IC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL2RhdGEvcmVs ZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1sIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRv L3FxdWlja3BvcHVwL2RhdGEvcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1sCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi45ZTQ1OThiOWYKKy0tLSAvZGV2L251bGwK KysrKyBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC9kYXRhL3JlbGVh c2VBZnRlckV4aXRUcmFuc2l0aW9uLnFtbAorQEAgLTAsMCArMSw3OCBAQAorKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRk LgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorKyoq CisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6QlNEJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2Fn ZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5 IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGlj ZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJu YXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBh IHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxp Y2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90 ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29u dGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBCU0Qg TGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEJTRCBsaWNlbnNlCisrKiogYXMgZm9sbG93czoKKysqKgor KyoqICJSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3 aXRoIG9yIHdpdGhvdXQKKysqKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisrKiogbWV0OgorKyoqICAgKiBSZWRp c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo dAorKyoqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIuCisrKiogICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrKiogICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyoqICAg ICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg dGhlCisrKiogICAgIGRpc3RyaWJ1dGlvbi4KKysqKiAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBU aGUgUXQgQ29tcGFueSBMdGQgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKysqKiAgICAgY29udHJpYnV0 b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisr KiogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g cGVybWlzc2lvbi4KKysqKgorKyoqCisrKiogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworKyoqICJBUyBJUyIgQU5EIEFO WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisrKiog TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E IEZJVE5FU1MgRk9SCisrKiogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKysqKiBPV05FUiBPUiBDT05UUklCVVRPUlMg QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysqKiBTUEVD SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg Tk9UCisrKiogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisrKiogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisrKiogVEhFT1JZIE9GIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor KyoqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB WSBPVVQgT0YgVEhFIFVTRQorKyoqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIgorKyoqCisrKiogJFFUX0VORF9MSUNF TlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKytpbXBvcnQgUXRRdWljayAyLjE1 CisraW1wb3J0IFF0UXVpY2suQ29udHJvbHMgMi4xNQorKworK0FwcGxpY2F0aW9uV2luZG93IHsK KysgICAgaWQ6IHdpbmRvdworKyAgICB3aWR0aDogNDAwCisrICAgIGhlaWdodDogNDAwCisrICAg IHRpdGxlOiAicmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24iCisrCisrICAgIHByb3BlcnR5IGFs aWFzIHBvcHVwOiBwb3B1cAorKyAgICBwcm9wZXJ0eSBhbGlhcyBtb2RhbFBvcHVwOiBtb2RhbFBv cHVwCisrCisrICAgIFBvcHVwIHsKKysgICAgICAgIGlkOiBwb3B1cAorKyAgICAgICAgeTogcGFy ZW50LmhlaWdodCAtIGhlaWdodAorKyAgICAgICAgd2lkdGg6IDUwCisrICAgICAgICBoZWlnaHQ6 IDUwCisrICAgIH0KKysKKysgICAgUG9wdXAgeworKyAgICAgICAgaWQ6IG1vZGFsUG9wdXAKKysg ICAgICAgIG1vZGFsOiB0cnVlCisrICAgICAgICB5OiBwYXJlbnQuaGVpZ2h0IC0gaGVpZ2h0Cisr ICAgICAgICB3aWR0aDogNTAKKysgICAgICAgIGhlaWdodDogNTAKKysgICAgICAgIGV4aXQ6ICBU cmFuc2l0aW9uIHsgUGF1c2VBbmltYXRpb24geyBkdXJhdGlvbjogMTAwIH0gfQorKyAgICB9Cisr fQorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC90 c3RfcXF1aWNrcG9wdXAuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3Bv cHVwL3RzdF9xcXVpY2twb3B1cC5jcHAKK2luZGV4IDU0OTUyZDEyOC4uM2Q1MGUyZGQ0IDEwMDY0 NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9xcXVp Y2twb3B1cC5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1 cC90c3RfcXF1aWNrcG9wdXAuY3BwCitAQCAtMTAwLDYgKzEwMCw3IEBAIHByaXZhdGUgc2xvdHM6 CisgICAgIHZvaWQgaW52aXNpYmxlVG9vbFRpcE9wZW4oKTsKKyAgICAgdm9pZCBjZW50ZXJJbk92 ZXJsYXlXaXRoaW5TdGFja1ZpZXdJdGVtKCk7CisgICAgIHZvaWQgZGVzdHJveUR1cmluZ0V4aXRU cmFuc2l0aW9uKCk7CisrICAgIHZvaWQgcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24oKTsKKyB9 OworIAorIHZvaWQgdHN0X1FRdWlja1BvcHVwOjppbml0VGVzdENhc2UoKQorQEAgLTE1NzUsNiAr MTU3NiwzNCBAQCB2b2lkIHRzdF9RUXVpY2tQb3B1cDo6ZGVzdHJveUR1cmluZ0V4aXRUcmFuc2l0 aW9uKCkKKyAgICAgUVZFUklGWSghYnV0dG9uLT5pc0Rvd24oKSk7CisgfQorIAorK3ZvaWQgdHN0 X1FRdWlja1BvcHVwOjpyZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbigpCisreworKyAgICBRUXVp Y2tBcHBsaWNhdGlvbkhlbHBlciBoZWxwZXIodGhpcywgInJlbGVhc2VBZnRlckV4aXRUcmFuc2l0 aW9uLnFtbCIpOworKyAgICBRVkVSSUZZMihoZWxwZXIucmVhZHksIGhlbHBlci5mYWlsdXJlTWVz c2FnZSgpKTsKKysKKysgICAgUVF1aWNrV2luZG93ICp3aW5kb3cgPSBoZWxwZXIud2luZG93Owor KyAgICB3aW5kb3ctPnNob3coKTsKKysgICAgUVZFUklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dB Y3RpdmUod2luZG93KSk7CisrCisrICAgIFFRdWlja092ZXJsYXkgKm92ZXJsYXkgPSBRUXVpY2tP dmVybGF5OjpvdmVybGF5KHdpbmRvdyk7CisrICAgIFFRdWlja1BvcHVwICptb2RhbFBvcHVwID0g d2luZG93LT5wcm9wZXJ0eSgibW9kYWxQb3B1cCIpLnZhbHVlPFFRdWlja1BvcHVwICo+KCk7Cisr ICAgIFFRdWlja1BvcHVwICpwb3B1cCA9IHdpbmRvdy0+cHJvcGVydHkoInBvcHVwIikudmFsdWU8 UVF1aWNrUG9wdXAgKj4oKTsKKysKKysgICAgbW9kYWxQb3B1cC0+b3BlbigpOworKyAgICBRVFJZ X1ZFUklGWShtb2RhbFBvcHVwLT5pc09wZW5lZCgpKTsKKysKKysgICAgUVRlc3Q6Om1vdXNlUHJl c3Mod2luZG93LCBRdDo6TGVmdEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIsIFFQb2ludCgxLCAxKSk7 CisrICAgIC8vIHdhaXQgdW50aWwgdGhlIHRyYW5zaXRpb24gaXMgZmluaXNoZWQgYW5kIHRoZSBv dmVybGF5IGhpZGVzIGl0c2VsZgorKyAgICBRVFJZX1ZFUklGWSghb3ZlcmxheS0+aXNWaXNpYmxl KCkpOworKyAgICBRVGVzdDo6bW91c2VSZWxlYXNlKHdpbmRvdywgUXQ6OkxlZnRCdXR0b24sIFF0 OjpOb01vZGlmaWVyLCBRUG9pbnQoMSwgMSkpOworKworKyAgICBwb3B1cC0+b3BlbigpOworKyAg ICBRVFJZX1ZFUklGWShwb3B1cC0+aXNPcGVuZWQoKSk7CisrICAgIFFUZXN0Ojptb3VzZUNsaWNr KHdpbmRvdywgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyLCBRUG9pbnQoMSwgMSkpOwor KyAgICBRVFJZX1ZFUklGWSghcG9wdXAtPmlzT3BlbmVkKCkpOworK30KKysKKysKKyBRVEVTVF9R VUlDS0NPTlRST0xTX01BSU4odHN0X1FRdWlja1BvcHVwKQorIAorICNpbmNsdWRlICJ0c3RfcXF1 aWNrcG9wdXAubW9jIgorU3VibW9kdWxlIHF0c2NyaXB0IDViZTk1Zjk2Li4uNGQ4ZTRiZDIgKGNv bW1pdHMgbm90IHByZXNlbnQpCitTdWJtb2R1bGUgcXRzcGVlY2ggMTdmYzlmZGUuLjI1NTg0NWUy OgorZGlmZiAtLWdpdCBhL3F0c3BlZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hkaXNwYXRjaGVy L3F0ZXh0dG9zcGVlY2hfc3BlZWNoZC5jcHAgYi9xdHNwZWVjaC9zcmMvcGx1Z2lucy90dHMvc3Bl ZWNoZGlzcGF0Y2hlci9xdGV4dHRvc3BlZWNoX3NwZWVjaGQuY3BwCitpbmRleCA2ZWI3NGI4Li5i Y2M3ZGQxIDEwMDY0NAorLS0tIGEvcXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRzL3NwZWVjaGRpc3Bh dGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNwcAorKysrIGIvcXRzcGVlY2gvc3JjL3BsdWdp bnMvdHRzL3NwZWVjaGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNwcAorQEAgLTM1 Nyw3ICszNTcsOSBAQCBRVmVjdG9yPFFMb2NhbGU+IFFUZXh0VG9TcGVlY2hFbmdpbmVTcGVlY2hk OjphdmFpbGFibGVMb2NhbGVzKCkgY29uc3QKKyAKKyBRVmVjdG9yPFFWb2ljZT4gUVRleHRUb1Nw ZWVjaEVuZ2luZVNwZWVjaGQ6OmF2YWlsYWJsZVZvaWNlcygpIGNvbnN0CisgeworLSAgICByZXR1 cm4gbV92b2ljZXMudmFsdWVzKG1fY3VycmVudExvY2FsZS5uYW1lKCkpLnRvVmVjdG9yKCk7Cisr ICAgIFFMaXN0PFFWb2ljZT4gcmVzdWx0TGlzdCA9IG1fdm9pY2VzLnZhbHVlcyhtX2N1cnJlbnRM b2NhbGUubmFtZSgpKTsKKysgICAgc3RkOjpyZXZlcnNlKHJlc3VsdExpc3QuYmVnaW4oKSwgcmVz dWx0TGlzdC5lbmQoKSk7CisrICAgIHJldHVybiByZXN1bHRMaXN0LnRvVmVjdG9yKCk7CisgfQor IAorIC8vIFdlIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgb3VyIG93biBjbGllbnRfaWQgc2luY2Ug c3BlZWNoLWRpc3BhdGNoZXIgc2VlbXMgdG8gYmUgaW5jb21wbGV0ZQorU3VibW9kdWxlIHF0c3Zn IDBjMDU3ODBlLi5hN2EwZjI0OToKK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFn ZWZvcm1hdHMvc3ZnL3Fzdmdpb2hhbmRsZXIuY3BwIGIvcXRzdmcvc3JjL3BsdWdpbnMvaW1hZ2Vm b3JtYXRzL3N2Zy9xc3ZnaW9oYW5kbGVyLmNwcAoraW5kZXggNTYxZTc3ZS4uMTJlMDU3NCAxMDA2 NDQKKy0tLSBhL3F0c3ZnL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxl ci5jcHAKKysrKyBiL3F0c3ZnL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFu ZGxlci5jcHAKK0BAIC0xOTEsNiArMTkxLDggQEAgYm9vbCBRU3ZnSU9IYW5kbGVyOjpyZWFkKFFJ bWFnZSAqaW1hZ2UpCisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgaWYgKCFm aW5hbFNpemUuaXNFbXB0eSgpKSB7CisrICAgICAgICAgICAgaWYgKHFNYXgoZmluYWxTaXplLndp ZHRoKCksIGZpbmFsU2l6ZS5oZWlnaHQoKSkgPiAweGZmZmYpCisrICAgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsgLy8gQXNzdW1lIGNvcnJ1cHRlZCBmaWxlCisgICAgICAgICAgICAgaW1hZ2Ut PmZpbGwoZC0+YmFja0NvbG9yLnJnYmEoKSk7CisgICAgICAgICAgICAgUVBhaW50ZXIgcChpbWFn ZSk7CisgICAgICAgICAgICAgZC0+ci5yZW5kZXIoJnAsIGJvdW5kcyk7CitkaWZmIC0tZ2l0IGEv cXRzdmcvc3JjL3N2Zy9xc3ZnaGFuZGxlci5jcHAgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVy LmNwcAoraW5kZXggYTVmODc3Zi4uOGRkYTU2MyAxMDA2NDQKKy0tLSBhL3F0c3ZnL3NyYy9zdmcv cXN2Z2hhbmRsZXIuY3BwCisrKysgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVyLmNwcAorQEAg LTEzOTMsOSArMTM5MywxMCBAQCBzdGF0aWMgdm9pZCBwYXJzZUZvbnQoUVN2Z05vZGUgKm5vZGUs CisgICAgICAgICBjYXNlIEZvbnRTaXplTm9uZToKKyAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgIGNhc2UgRm9udFNpemVWYWx1ZTogeworLSAgICAgICAgICAgIFFTdmdIYW5kbGVyOjpMZW5n dGhUeXBlIGR1bW15OyAvLyBzaG91bGQgYWx3YXlzIGJlIHBpeGVsIHNpemUKKy0gICAgICAgICAg ICBmb250U3R5bGUtPnNldFNpemUocU1pbihwYXJzZUxlbmd0aChhdHRyaWJ1dGVzLmZvbnRTaXpl LCBkdW1teSwgaGFuZGxlciksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cXJlYWwoMHhmZmZmKSkpOworKyAgICAgICAgICAgIFFTdmdIYW5kbGVyOjpMZW5ndGhUeXBlIHR5 cGU7CisrICAgICAgICAgICAgcXJlYWwgZnMgPSBwYXJzZUxlbmd0aChhdHRyaWJ1dGVzLmZvbnRT aXplLCB0eXBlLCBoYW5kbGVyKTsKKysgICAgICAgICAgICBmcyA9IGNvbnZlcnRUb1BpeGVscyhm cywgdHJ1ZSwgdHlwZSk7CisrICAgICAgICAgICAgZm9udFN0eWxlLT5zZXRTaXplKHFNaW4oZnMs IHFyZWFsKDB4ZmZmZikpKTsKKyAgICAgICAgIH0KKyAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgIGRlZmF1bHQ6CitAQCAtMjUxMyw2ICsyNTE0LDggQEAgc3RhdGljIGJvb2wgcGFyc2VBbmlt YXRlVHJhbnNmb3JtTm9kZShRU3ZnTm9kZSAqcGFyZW50LAorICAgICAgICAgICAgICsrczsKKyAg ICAgICAgIH0KKyAgICAgfQorKyAgICBpZiAodmFscy5jb3VudCgpICUgMyAhPSAwKQorKyAgICAg ICAgcmV0dXJuIGZhbHNlOworIAorICAgICBib29sIG9rID0gdHJ1ZTsKKyAgICAgaW50IGJlZ2lu ID0gcGFyc2VDbG9ja1ZhbHVlKGJlZ2luU3RyLCAmb2spOworQEAgLTI1NzYsNiArMjU3OSw4IEBA IHN0YXRpYyBRU3ZnTm9kZSAqY3JlYXRlQ2lyY2xlTm9kZShRU3ZnTm9kZSAqcGFyZW50LAorICAg ICBxcmVhbCBuY3ggPSB0b0RvdWJsZShjeCk7CisgICAgIHFyZWFsIG5jeSA9IHRvRG91YmxlKGN5 KTsKKyAgICAgcXJlYWwgbnIgID0gdG9Eb3VibGUocik7CisrICAgIGlmIChuciA8IDAuMCkKKysg ICAgICAgIHJldHVybiBudWxscHRyOworIAorICAgICBRUmVjdEYgcmVjdChuY3gtbnIsIG5jeS1u ciwgbnIqMiwgbnIqMik7CisgICAgIFFTdmdOb2RlICpjaXJjbGUgPSBuZXcgUVN2Z0NpcmNsZShw YXJlbnQsIHJlY3QpOworQEAgLTMwNDYsMTUgKzMwNTEsMTYgQEAgc3RhdGljIFFTdmdTdHlsZVBy b3BlcnR5ICpjcmVhdGVSYWRpYWxHcmFkaWVudE5vZGUoUVN2Z05vZGUgKm5vZGUsCisgCisgICAg IHFyZWFsIG5jeCA9IDAuNTsKKyAgICAgcXJlYWwgbmN5ID0gMC41OworLSAgICBxcmVhbCBuciAg PSAwLjU7CisgICAgIGlmICghY3guaXNFbXB0eSgpKQorICAgICAgICAgbmN4ID0gdG9Eb3VibGUo Y3gpOworICAgICBpZiAoIWN5LmlzRW1wdHkoKSkKKyAgICAgICAgIG5jeSA9IHRvRG91YmxlKGN5 KTsKKysKKysgICAgcXJlYWwgbnIgPSAwLjA7CisgICAgIGlmICghci5pc0VtcHR5KCkpCisgICAg ICAgICBuciA9IHRvRG91YmxlKHIpOworLSAgICBpZiAobnIgPCAwLjUpCistICAgICAgICBuciA9 IDAuNTsKKysgICAgaWYgKG5yIDw9IDAuMCkKKysgICAgICAgIHJldHVybiBudWxscHRyOworIAor ICAgICBxcmVhbCBuZnggPSBuY3g7CisgICAgIGlmICghZnguaXNFbXB0eSgpKQorQEAgLTMzNTAs NyArMzM1Niw5IEBAIHN0YXRpYyBRU3ZnTm9kZSAqY3JlYXRlVGV4dE5vZGUoUVN2Z05vZGUgKnBh cmVudCwKKyAgICAgLy8jIyMgZWRpdGFibGUgYW5kIHJvdGF0ZSBub3QgaGFuZGxlZAorICAgICBR U3ZnSGFuZGxlcjo6TGVuZ3RoVHlwZSB0eXBlOworICAgICBxcmVhbCBueCA9IHBhcnNlTGVuZ3Ro KHgsIHR5cGUsIGhhbmRsZXIpOworKyAgICBueCA9IGNvbnZlcnRUb1BpeGVscyhueCwgdHJ1ZSwg dHlwZSk7CisgICAgIHFyZWFsIG55ID0gcGFyc2VMZW5ndGgoeSwgdHlwZSwgaGFuZGxlcik7Cisr ICAgIG55ID0gY29udmVydFRvUGl4ZWxzKG55LCB0cnVlLCB0eXBlKTsKKyAKKyAgICAgUVN2Z05v ZGUgKnRleHQgPSBuZXcgUVN2Z1RleHQocGFyZW50LCBRUG9pbnRGKG54LCBueSkpOworICAgICBy ZXR1cm4gdGV4dDsKK0BAIC0zNjkxLDkgKzM2OTksNyBAQCB2b2lkIFFTdmdIYW5kbGVyOjpwYXJz ZSgpCisgICAgICAgICBjYXNlIFFYbWxTdHJlYW1SZWFkZXI6OkVuZEVsZW1lbnQ6CisgICAgICAg ICAgICAgZW5kRWxlbWVudCh4bWwtPm5hbWUoKSk7CisgICAgICAgICAgICAgKytyZW1haW5pbmdV bmZpbmlzaGVkRWxlbWVudHM7CistICAgICAgICAgICAgLy8gaWYgd2UgYXJlIHVzaW5nIHNvbWVi b2R5IGVsc2UncyBxeG1sc3RyZWFtcmVhZGVyCistICAgICAgICAgICAgLy8gd2Ugc2hvdWxkIG5v dCByZWFkIHVudGlsIHRoZSBlbmQgb2YgdGhlIHN0cmVhbQorLSAgICAgICAgICAgIGRvbmUgPSAh bV9vd25zUmVhZGVyICYmICh4bWwtPm5hbWUoKSA9PSBRTGF0aW4xU3RyaW5nKCJzdmciKSk7Cisr ICAgICAgICAgICAgZG9uZSA9ICh4bWwtPm5hbWUoKSA9PSBRTGF0aW4xU3RyaW5nKCJzdmciKSk7 CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBjYXNlIFFYbWxTdHJlYW1SZWFkZXI6OkNo YXJhY3RlcnM6CisgICAgICAgICAgICAgY2hhcmFjdGVycyh4bWwtPnRleHQoKSk7CitkaWZmIC0t Z2l0IGEvcXRzdmcvc3JjL3N2Zy9xc3Znc3RydWN0dXJlLmNwcCBiL3F0c3ZnL3NyYy9zdmcvcXN2 Z3N0cnVjdHVyZS5jcHAKK2luZGV4IGI4OTYwOGIuLjg5YzllNGUgMTAwNjQ0CistLS0gYS9xdHN2 Zy9zcmMvc3ZnL3FzdmdzdHJ1Y3R1cmUuY3BwCisrKysgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdzdHJ1 Y3R1cmUuY3BwCitAQCAtMjU1LDkgKzI1NSwxMyBAQCBpbmxpbmUgc3RhdGljIGJvb2wgaXNTdXBw b3J0ZWRTdmdGZWF0dXJlKGNvbnN0IFFTdHJpbmcgJnN0cikKKyAgICAgfTsKKyAKKyAgICAgaWYg KHN0ci5sZW5ndGgoKSA8PSBNQVhfV09SRF9MRU5HVEggJiYgc3RyLmxlbmd0aCgpID49IE1JTl9X T1JEX0xFTkdUSCkgeworKyAgICAgICAgY29uc3QgY2hhcjE2X3QgdW5pY29kZTQ0ID0gc3RyLmF0 KDQ0KS51bmljb2RlKCk7CisrICAgICAgICBjb25zdCBjaGFyMTZfdCB1bmljb2RlNDUgPSBzdHIu YXQoNDUpLnVuaWNvZGUoKTsKKysgICAgICAgIGlmICh1bmljb2RlNDQgPj0gc2l6ZW9mKGFzc29f dmFsdWVzKSB8fCB1bmljb2RlNDUgPj0gc2l6ZW9mKGFzc29fdmFsdWVzKSkKKysgICAgICAgICAg ICByZXR1cm4gZmFsc2U7CisgICAgICAgICBjb25zdCBpbnQga2V5ID0gc3RyLmxlbmd0aCgpCist ICAgICAgICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1tzdHIuYXQoNDUpLnVuaWNvZGUo KV0KKy0gICAgICAgICAgICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3N0ci5hdCg0NCkudW5p Y29kZSgpXTsKKysgICAgICAgICAgICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3VuaWNvZGU0 NV0KKysgICAgICAgICAgICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3VuaWNvZGU0NF07Cisg ICAgICAgICBpZiAoa2V5IDw9IE1BWF9IQVNIX1ZBTFVFICYmIGtleSA+PSAwKQorICAgICAgICAg ICAgIHJldHVybiBzdHIgPT0gUUxhdGluMVN0cmluZyh3b3JkbGlzdFtrZXldKTsKKyAgICAgfQor ZGlmZiAtLWdpdCBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAgYi9xdHN2Zy9z cmMvc3ZnL3Fzdmd0aW55ZG9jdW1lbnQuY3BwCitpbmRleCA2M2QwNzk3Li4xOWU3MTU0IDEwMDY0 NAorLS0tIGEvcXRzdmcvc3JjL3N2Zy9xc3ZndGlueWRvY3VtZW50LmNwcAorKysrIGIvcXRzdmcv c3JjL3N2Zy9xc3ZndGlueWRvY3VtZW50LmNwcAorQEAgLTQzMyw4ICs0MzMsMTYgQEAgdm9pZCBR U3ZnVGlueURvY3VtZW50OjpkcmF3KFFQYWludGVyICpwLCBRU3ZnRXh0cmFTdGF0ZXMgJikKKyAg ICAgZHJhdyhwKTsKKyB9CisgCisrc3RhdGljIGJvb2wgaXNWYWxpZE1hdHJpeChjb25zdCBRVHJh bnNmb3JtICZ0cmFuc2Zvcm0pCisreworKyAgICBxcmVhbCBkZXRlcm1pbmFudCA9IHRyYW5zZm9y bS5kZXRlcm1pbmFudCgpOworKyAgICByZXR1cm4gcUlzRmluaXRlKGRldGVybWluYW50KTsKKyt9 CisrCisgdm9pZCBRU3ZnVGlueURvY3VtZW50OjptYXBTb3VyY2VUb1RhcmdldChRUGFpbnRlciAq cCwgY29uc3QgUVJlY3RGICZ0YXJnZXRSZWN0LCBjb25zdCBRUmVjdEYgJnNvdXJjZVJlY3QpCisg eworKyAgICBRVHJhbnNmb3JtIG9sZFRyYW5zZm9ybSA9IHAtPndvcmxkVHJhbnNmb3JtKCk7Cisr CisgICAgIFFSZWN0RiB0YXJnZXQgPSB0YXJnZXRSZWN0OworICAgICBpZiAodGFyZ2V0LmlzRW1w dHkoKSkgeworICAgICAgICAgUVBhaW50RGV2aWNlICpkZXYgPSBwLT5kZXZpY2UoKTsKK0BAIC00 ODcsNiArNDk1LDkgQEAgdm9pZCBRU3ZnVGlueURvY3VtZW50OjptYXBTb3VyY2VUb1RhcmdldChR UGFpbnRlciAqcCwgY29uc3QgUVJlY3RGICZ0YXJnZXRSZWN0LAorICAgICAgICAgfQorICNlbmRp ZgorICAgICB9CisrCisrICAgIGlmICghaXNWYWxpZE1hdHJpeChwLT53b3JsZFRyYW5zZm9ybSgp KSkKKysgICAgICAgIHAtPnNldFdvcmxkVHJhbnNmb3JtKG9sZFRyYW5zZm9ybSk7CisgfQorIAor IFFSZWN0RiBRU3ZnVGlueURvY3VtZW50Ojpib3VuZHNPbkVsZW1lbnQoY29uc3QgUVN0cmluZyAm aWQpIGNvbnN0CitkaWZmIC0tZ2l0IGEvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0 X3FzdmdyZW5kZXJlci5jcHAgYi9xdHN2Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJlci90c3RfcXN2 Z3JlbmRlcmVyLmNwcAoraW5kZXggMzZjNzZlYy4uZGI3MWUwMiAxMDA2NDQKKy0tLSBhL3F0c3Zn L3Rlc3RzL2F1dG8vcXN2Z3JlbmRlcmVyL3RzdF9xc3ZncmVuZGVyZXIuY3BwCisrKysgYi9xdHN2 Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcAorQEAgLTg2LDYg Kzg2LDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBvc3NfZnV6el8yMzczMSgpOworICAg ICB2b2lkIG9zc19mdXp6XzI0MTMxKCk7CisgICAgIHZvaWQgb3NzX2Z1enpfMjQ3MzgoKTsKKysg ICAgdm9pZCBpbGxlZ2FsQW5pbWF0ZVRyYW5zZm9ybV9kYXRhKCk7CisrICAgIHZvaWQgaWxsZWdh bEFuaW1hdGVUcmFuc2Zvcm0oKTsKKyAKKyAjaWZuZGVmIFFUX05PX0NPTVBSRVNTCisgICAgIHZv aWQgdGVzdEd6TG9hZGluZygpOworQEAgLTE2NDYsNSArMTY0OCwyMiBAQCB2b2lkIHRzdF9RU3Zn UmVuZGVyZXI6Om9zc19mdXp6XzI0NzM4KCkKKyAgICAgUVN2Z1JlbmRlcmVyKCkubG9hZChRQnl0 ZUFycmF5KCI8c3ZnPjxwYXRoIGQ9XCJhIDIgMWUtMjEyLi4uLi5cIj4iKSk7CisgfQorIAorK3Zv aWQgdHN0X1FTdmdSZW5kZXJlcjo6aWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm1fZGF0YSgpCisrewor KyAgICBRVGVzdDo6YWRkQ29sdW1uPFFCeXRlQXJyYXk+KCJzdmciKTsKKysKKysgICAgUVRlc3Q6 Om5ld1JvdygiY2FzZTEiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJhbnNmb3JtIHR5 cGU9XCJyb3RhdGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIyXCIgdmFsdWVzPVwiOCwwLDUsMFwiPiIp OworKyAgICBRVGVzdDo6bmV3Um93KCJjYXNlMiIpIDw8IFFCeXRlQXJyYXkoIjxzdmc+PGFuaW1h dGVUcmFuc2Zvcm0gdHlwZT1cInJvdGF0ZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJcIiB2YWx1ZXM9 XCIxLDJcIj4iKTsKKysgICAgUVRlc3Q6Om5ld1JvdygiY2FzZTMiKSA8PCBRQnl0ZUFycmF5KCI8 c3ZnPjxhbmltYXRlVHJhbnNmb3JtIHR5cGU9XCJyb3RhdGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIy XCIgZnJvbT1cIi4uIDUgMlwiIHRvPVwiZlwiPiIpOworKyAgICBRVGVzdDo6bmV3Um93KCJjYXNl NCIpIDw8IFFCeXRlQXJyYXkoIjxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1cInNjYWxlXCIg YmVnaW49XCIxXCIgZHVyPVwiMlwiIGJ5PVwiLS0sLi5cIj4iKTsKKyt9CisrCisrdm9pZCB0c3Rf UVN2Z1JlbmRlcmVyOjppbGxlZ2FsQW5pbWF0ZVRyYW5zZm9ybSgpCisreworKyAgICBRRkVUQ0go UUJ5dGVBcnJheSwgc3ZnKTsKKysgICAgUVN2Z1JlbmRlcmVyIHJlbmRlcmVyOworKyAgICBRVkVS SUZZKCFyZW5kZXJlci5sb2FkKHN2ZykpOyAvLyBhbHNvIHNob3VsZG4ndCBhc3NlcnQKKyt9Cisr CisgUVRFU1RfTUFJTih0c3RfUVN2Z1JlbmRlcmVyKQorICNpbmNsdWRlICJ0c3RfcXN2Z3JlbmRl cmVyLm1vYyIKK1N1Ym1vZHVsZSBxdHRvb2xzIDY5MTRmN2M4Li4wOTBlNTI2ZToKK2RpZmYgLS1n aXQgYS9xdHRvb2xzL3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5j cHAgYi9xdHRvb2xzL3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5j cHAKK2luZGV4IGZlYWIxZTJkNS4uY2JmYjgyNTA3IDEwMDY0NAorLS0tIGEvcXR0b29scy9zcmMv YXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0b3IuY3BwCisrKysgYi9xdHRvb2xz L3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5jcHAKK0BAIC00NDUs NyArNDQ1LDkgQEAgYm9vbCBIZWxwR2VuZXJhdG9yUHJpdmF0ZTo6aW5zZXJ0RmlsZXMoY29uc3Qg UVN0cmluZ0xpc3QgJmZpbGVzLCBjb25zdCBRU3RyaW5nICYKKyAgICAgaWYgKGZpbHRlclNldElk IDwgMCkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgKytmaWx0ZXJTZXRJZDsKKy0gICAg Zm9yIChpbnQgYXR0SWQgOiBxQXNDb25zdChmaWx0ZXJBdHRzKSkgeworKyAgICBRTGlzdDxpbnQ+ IGF0dFZhbHVlcyA9IGZpbHRlckF0dHMudmFsdWVzKCk7CisrICAgIHN0ZDo6c29ydChhdHRWYWx1 ZXMuYmVnaW4oKSwgYXR0VmFsdWVzLmVuZCgpKTsKKysgICAgZm9yIChpbnQgYXR0SWQgOiBxQXND b25zdChhdHRWYWx1ZXMpKSB7CisgICAgICAgICBtX3F1ZXJ5LT5wcmVwYXJlKFFMYXRpbjFTdHJp bmcoIklOU0VSVCBJTlRPIEZpbGVBdHRyaWJ1dGVTZXRUYWJsZSAiCisgICAgICAgICAgICAgIlZB TFVFUyg/LCA/KSIpKTsKKyAgICAgICAgIG1fcXVlcnktPmJpbmRWYWx1ZSgwLCBmaWx0ZXJTZXRJ ZCk7CitTdWJtb2R1bGUgcXR3YXlsYW5kIGRmYjAxMjljLi4yOTA0ZTFiMzoKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL2NsaWVudC9jb25maWd1cmUuanNvbiBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L2NvbmZpZ3VyZS5qc29uCitpbmRleCAyZjQyNDU4MC4uMjkyMjIzNTcgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL2NsaWVudC9jb25maWd1cmUuanNvbgorKysrIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvY29uZmlndXJlLmpzb24KK0BAIC0xNDksOCArMTQ5LDcgQEAKKyAgICAgICAgICAg ICAgICAgICAgICIjZW5kaWYiCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICB9LAor LSAgICAgICAgICAgICJsaWJzIjogIi1sZHJtIiwKKy0gICAgICAgICAgICAidXNlIjogImVnbCIK KysgICAgICAgICAgICAidXNlIjogImRybSBlZ2wiCisgICAgICAgICB9LAorICAgICAgICAgInZ1 bGthbi1zZXJ2ZXItYnVmZmVyIjogeworICAgICAgICAgICAgICJsYWJlbCI6ICJWdWxrYW4gQnVm ZmVyIFNoYXJpbmciLAorQEAgLTE2OCw3ICsxNjcsOCBAQAorICAgICAgICAgICAgICAgICAgICAg ImV4cG9ydEFsbG9jSW5mby5oYW5kbGVUeXBlcyA9IFZLX0VYVEVSTkFMX01FTU9SWV9IQU5ETEVf VFlQRV9PUEFRVUVfRkRfQklUX0tIUjsiLAorICAgICAgICAgICAgICAgICAgICAgInJldHVybiAw OyIKKyAgICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9LAor KyAgICAgICAgICAgICJ1c2UiOiAid2F5bGFuZC1jbGllbnQiCisgICAgICAgICB9LAorICAgICAg ICAgImVnbF8xXzUtd2F5bGFuZCI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAiRUdMIDEuNSB3 aXRoIFdheWxhbmQgUGxhdGZvcm0iLAorQEAgLTE4Myw3ICsxODMsNyBAQAorICAgICAgICAgICAg ICAgICAgICAgImVnbEdldFBsYXRmb3JtRGlzcGxheShFR0xfUExBVEZPUk1fV0FZTEFORF9FWFQs IChzdHJ1Y3Qgd2xfZGlzcGxheSAqKShudWxscHRyKSwgbnVsbHB0cik7IgorICAgICAgICAgICAg ICAgICBdCisgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAidXNlIjogImVnbCIKKysgICAg ICAgICAgICAidXNlIjogImVnbCB3YXlsYW5kLWNsaWVudCIKKyAgICAgICAgIH0KKyAgICAgfSwK KyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGll bnRleHRlbnNpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xp ZW50ZXh0ZW5zaW9uLmNwcAoraW5kZXggMTI1YjFlMTkuLmVkY2NmZTYzIDEwMDY0NAorLS0tIGEv cXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmNwcAor KysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9u LmNwcAorQEAgLTc0LDcgKzc0LDEwIEBAIHZvaWQgUVdheWxhbmRDbGllbnRFeHRlbnNpb25Qcml2 YXRlOjpoYW5kbGVSZWdpc3RyeUdsb2JhbCh2b2lkICpkYXRhLCA6OndsX3JlZ2lzCisgdm9pZCBR V2F5bGFuZENsaWVudEV4dGVuc2lvbjo6YWRkUmVnaXN0cnlMaXN0ZW5lcigpCisgeworICAgICBR X0QoUVdheWxhbmRDbGllbnRFeHRlbnNpb24pOworLSAgICBkLT53YXlsYW5kSW50ZWdyYXRpb24t PmRpc3BsYXkoKS0+YWRkUmVnaXN0cnlMaXN0ZW5lcigmUVdheWxhbmRDbGllbnRFeHRlbnNpb25Q cml2YXRlOjpoYW5kbGVSZWdpc3RyeUdsb2JhbCwgdGhpcyk7CisrICAgIGlmICghZC0+cmVnaXN0 ZXJlZCkgeworKyAgICAgICAgZC0+d2F5bGFuZEludGVncmF0aW9uLT5kaXNwbGF5KCktPmFkZFJl Z2lzdHJ5TGlzdGVuZXIoJlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxlUmVn aXN0cnlHbG9iYWwsIHRoaXMpOworKyAgICAgICAgZC0+cmVnaXN0ZXJlZCA9IHRydWU7CisrICAg IH0KKyB9CisgCisgUVdheWxhbmRDbGllbnRFeHRlbnNpb246OlFXYXlsYW5kQ2xpZW50RXh0ZW5z aW9uKGNvbnN0IGludCB2ZXIpCitAQCAtODgsNiArOTEsMTMgQEAgUVdheWxhbmRDbGllbnRFeHRl bnNpb246OlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKGNvbnN0IGludCB2ZXIpCisgICAgIFFNZXRh T2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgImFkZFJlZ2lzdHJ5TGlzdGVuZXIiLCBRdDo6UXVl dWVkQ29ubmVjdGlvbik7CisgfQorIAorK1FXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjp+UVdheWxh bmRDbGllbnRFeHRlbnNpb24oKQorK3sKKysgICAgUV9EKFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9u KTsKKysgICAgaWYgKGQtPnJlZ2lzdGVyZWQgJiYgIVFDb3JlQXBwbGljYXRpb246OmNsb3NpbmdE b3duKCkpCisrICAgICAgICBkLT53YXlsYW5kSW50ZWdyYXRpb24tPmRpc3BsYXkoKS0+cmVtb3Zl TGlzdGVuZXIoJlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlH bG9iYWwsIHRoaXMpOworK30KKysKKyBRdFdheWxhbmRDbGllbnQ6OlFXYXlsYW5kSW50ZWdyYXRp b24gKlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjppbnRlZ3JhdGlvbigpIGNvbnN0CisgeworICAg ICBRX0QoY29uc3QgUVdheWxhbmRDbGllbnRFeHRlbnNpb24pOworZGlmZiAtLWdpdCBhL3F0d2F5 bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5oIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmgKK2luZGV4IDk4 MjcyZTU3Li41YmQyODM5OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2Jh bC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9n bG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uaAorQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3Mg UV9XQVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdheWxhbmRDbGllbnRFeHRlbnNpb24gOiBwdWJsaWMg UU9iamVjdAorICAgICBRX1BST1BFUlRZKGJvb2wgYWN0aXZlIFJFQUQgaXNBY3RpdmUgTk9USUZZ IGFjdGl2ZUNoYW5nZWQpCisgcHVibGljOgorICAgICBRV2F5bGFuZENsaWVudEV4dGVuc2lvbihj b25zdCBpbnQgdmVyc2lvbik7CisrICAgIH5RV2F5bGFuZENsaWVudEV4dGVuc2lvbigpOworIAor ICAgICBRdFdheWxhbmRDbGllbnQ6OlFXYXlsYW5kSW50ZWdyYXRpb24gKmludGVncmF0aW9uKCkg Y29uc3Q7CisgICAgIGludCB2ZXJzaW9uKCkgY29uc3Q7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uX3AuaCBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmgKK2luZGV4IDY5 Y2M0NmEwLi45MDkxZWZiZSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2Jh bC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50 L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmgKK0BAIC02OCw2ICs2OCw3IEBAIHB1 YmxpYzoKKyAgICAgUXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFuZEludGVncmF0aW9uICp3YXlsYW5k SW50ZWdyYXRpb24gPSBudWxscHRyOworICAgICBpbnQgdmVyc2lvbiA9IC0xOworICAgICBib29s IGFjdGl2ZSA9IGZhbHNlOworKyAgICBib29sIHJlZ2lzdGVyZWQgPSBmYWxzZTsKKyB9OworIAor IGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uVGVt cGxhdGVQcml2YXRlIDogcHVibGljIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZQorZGlm ZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZS5jcHAgYi9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2UuY3BwCitpbmRleCA3ZTJlMzMw OC4uZTNlNjBlZDUgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRh dGFkZXZpY2UuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZp Y2UuY3BwCitAQCAtNzIsNiArNzIsOCBAQCBRV2F5bGFuZERhdGFEZXZpY2U6OlFXYXlsYW5kRGF0 YURldmljZShRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyICptYW5hZ2VyLCBRV2F5bAorIAorIFFX YXlsYW5kRGF0YURldmljZTo6flFXYXlsYW5kRGF0YURldmljZSgpCisgeworKyAgICBpZiAod2xf ZGF0YV9kZXZpY2VfZ2V0X3ZlcnNpb24ob2JqZWN0KCkpID49IFdMX0RBVEFfREVWSUNFX1JFTEVB U0VfU0lOQ0VfVkVSU0lPTikKKysgICAgICAgIHJlbGVhc2UoKTsKKyB9CisgCisgUVdheWxhbmRE YXRhT2ZmZXIgKlFXYXlsYW5kRGF0YURldmljZTo6c2VsZWN0aW9uT2ZmZXIoKSBjb25zdAorQEAg LTExMCw3ICsxMTIsNyBAQCBRV2F5bGFuZERhdGFPZmZlciAqUVdheWxhbmREYXRhRGV2aWNlOjpk cmFnT2ZmZXIoKSBjb25zdAorICAgICByZXR1cm4gbV9kcmFnT2ZmZXIuZGF0YSgpOworIH0KKyAK Ky1ib29sIFFXYXlsYW5kRGF0YURldmljZTo6c3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEs IFFXYXlsYW5kV2luZG93ICppY29uKQorK2Jvb2wgUVdheWxhbmREYXRhRGV2aWNlOjpzdGFydERy YWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMs IFFXYXlsYW5kV2luZG93ICppY29uKQorIHsKKyAgICAgYXV0byAqc2VhdCA9IG1fZGlzcGxheS0+ Y3VycmVudElucHV0RGV2aWNlKCk7CisgICAgIGF1dG8gKm9yaWdpbiA9IHNlYXQtPnBvaW50ZXJG b2N1cygpOworQEAgLTEyMyw3ICsxMjUsMjggQEAgYm9vbCBRV2F5bGFuZERhdGFEZXZpY2U6OnN0 YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVEYXRhLCBRV2F5bGFuZFdpbmRvdyAqaWNvbikKKyAgICAg fQorIAorICAgICBtX2RyYWdTb3VyY2UucmVzZXQobmV3IFFXYXlsYW5kRGF0YVNvdXJjZShtX2Rp c3BsYXktPmRuZFNlbGVjdGlvbkhhbmRsZXIoKSwgbWltZURhdGEpKTsKKysKKysgICAgaWYgKHds X2RhdGFfZGV2aWNlX2dldF92ZXJzaW9uKG9iamVjdCgpKSA+PSAzKQorKyAgICAgICAgbV9kcmFn U291cmNlLT5zZXRfYWN0aW9ucyhkcm9wQWN0aW9uc1RvV2woc3VwcG9ydGVkQWN0aW9ucykpOwor KworICAgICBjb25uZWN0KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6 OmNhbmNlbGxlZCwgdGhpcywgJlFXYXlsYW5kRGF0YURldmljZTo6ZHJhZ1NvdXJjZUNhbmNlbGxl ZCk7CisrICAgIGNvbm5lY3QobV9kcmFnU291cmNlLmRhdGEoKSwgJlFXYXlsYW5kRGF0YVNvdXJj ZTo6ZG5kUmVzcG9uc2VVcGRhdGVkLCB0aGlzLCBbdGhpc10oYm9vbCBhY2NlcHRlZCwgUXQ6OkRy b3BBY3Rpb24gYWN0aW9uKSB7CisrICAgICAgICAgICAgYXV0byBkcmFnID0gc3RhdGljX2Nhc3Q8 UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRp b24oKS0+ZHJhZygpKTsKKysgICAgICAgICAgICAvLyBpbiBvbGQgdmVyc2lvbnMgZHJvcCBhY3Rp b24gaXMgbm90IHNldCwgc28gd2UgZ3Vlc3MKKysgICAgICAgICAgICBpZiAod2xfZGF0YV9zb3Vy Y2VfZ2V0X3ZlcnNpb24obV9kcmFnU291cmNlLT5vYmplY3QoKSkgPCAzKSB7CisrICAgICAgICAg ICAgICAgIGRyYWctPnNldFJlc3BvbnNlKGFjY2VwdGVkKTsKKysgICAgICAgICAgICB9IGVsc2Ug eworKyAgICAgICAgICAgICAgICBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSByZXNwb25zZShhY2Nl cHRlZCwgYWN0aW9uKTsKKysgICAgICAgICAgICAgICAgZHJhZy0+c2V0UmVzcG9uc2UocmVzcG9u c2UpOworKyAgICAgICAgICAgIH0KKysgICAgfSk7CisrICAgIGNvbm5lY3QobV9kcmFnU291cmNl LmRhdGEoKSwgJlFXYXlsYW5kRGF0YVNvdXJjZTo6ZG5kRHJvcHBlZCwgdGhpcywgW10oYm9vbCBh Y2NlcHRlZCwgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uKSB7CisrICAgICAgICBRUGxhdGZvcm1Ecm9w UXRSZXNwb25zZSByZXNwb25zZShhY2NlcHRlZCwgYWN0aW9uKTsKKysgICAgICAgIHN0YXRpY19j YXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVn cmF0aW9uKCktPmRyYWcoKSktPnNldERyb3BSZXNwb25zZShyZXNwb25zZSk7CisrICAgIH0pOwor KyAgICBjb25uZWN0KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6OmZp bmlzaGVkLCB0aGlzLCBbXSgpIHsKKysgICAgICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAq PihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSkt PmZpbmlzaERyYWcoKTsKKysgICAgfSk7CisgCisgICAgIHN0YXJ0X2RyYWcobV9kcmFnU291cmNl LT5vYmplY3QoKSwgb3JpZ2luLT53bFN1cmZhY2UoKSwgaWNvbi0+d2xTdXJmYWNlKCksIG1fZGlz cGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPnNlcmlhbCgpKTsKKyAgICAgcmV0dXJuIHRydWU7 CitAQCAtMTUyLDcgKzE3NSw3IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2Rldmlj ZV9kcm9wKCkKKyAgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBkcmFnLT5zdXBwb3J0ZWRBY3Rp b25zKCk7CisgICAgIH0gZWxzZSBpZiAobV9kcmFnT2ZmZXIpIHsKKyAgICAgICAgIGRyYWdEYXRh ID0gbV9kcmFnT2ZmZXItPm1pbWVEYXRhKCk7CistICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0g UXQ6OkNvcHlBY3Rpb24gfCBRdDo6TW92ZUFjdGlvbiB8IFF0OjpMaW5rQWN0aW9uOworKyAgICAg ICAgc3VwcG9ydGVkQWN0aW9ucyA9IG1fZHJhZ09mZmVyLT5zdXBwb3J0ZWRBY3Rpb25zKCk7Cisg ICAgIH0gZWxzZSB7CisgICAgICAgICByZXR1cm47CisgICAgIH0KK0BAIC0xNjIsNyArMTg1LDEx IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9kcm9wKCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFHdWlBcHBsaWNhdGlvbjo6a2V5Ym9hcmRNb2RpZmllcnMoKSk7CisgCisgICAg IGlmIChkcmFnKSB7CistICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFw cGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5maW5pc2hE cmFnKHJlc3BvbnNlKTsKKysgICAgICAgIGF1dG8gZHJhZyA9ICBzdGF0aWNfY2FzdDxRV2F5bGFu ZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5k cmFnKCkpOworKyAgICAgICAgZHJhZy0+c2V0RHJvcFJlc3BvbnNlKHJlc3BvbnNlKTsKKysgICAg ICAgIGRyYWctPmZpbmlzaERyYWcoKTsKKysgICAgfSBlbHNlIGlmIChtX2RyYWdPZmZlcikgewor KyAgICAgICAgbV9kcmFnT2ZmZXItPmZpbmlzaCgpOworICAgICB9CisgfQorIAorQEAgLTE4Niw3 ICsyMTMsNyBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfZW50ZXIodWlu dDMyX3Qgc2VyaWFsLCB3bF9zdXJmYWNlICpzdXJmYWNlLAorICAgICAgICAgc3VwcG9ydGVkQWN0 aW9ucyA9IGRyYWctPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNlIGlmIChtX2RyYWdP ZmZlcikgeworICAgICAgICAgZHJhZ0RhdGEgPSBtX2RyYWdPZmZlci0+bWltZURhdGEoKTsKKy0g ICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBRdDo6Q29weUFjdGlvbiB8IFF0OjpNb3ZlQWN0aW9u IHwgUXQ6OkxpbmtBY3Rpb247CisrICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gbV9kcmFnT2Zm ZXItPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfQorIAorICAgICBjb25zdCBRUGxhdGZvcm1E cmFnUXRSZXNwb25zZSAmcmVzcG9uc2UgPSBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVE cmFnKG1fZHJhZ1dpbmRvdywgZHJhZ0RhdGEsIG1fZHJhZ1BvaW50LCBzdXBwb3J0ZWRBY3Rpb25z LAorQEAgLTE5NywxMSArMjI0LDcgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2 aWNlX2VudGVyKHVpbnQzMl90IHNlcmlhbCwgd2xfc3VyZmFjZSAqc3VyZmFjZSwKKyAgICAgICAg IHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0 Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPnNldFJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAg fQorIAorLSAgICBpZiAocmVzcG9uc2UuaXNBY2NlcHRlZCgpKSB7CistICAgICAgICB3bF9kYXRh X29mZmVyX2FjY2VwdChtX2RyYWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG1fZHJh Z09mZmVyLT5maXJzdEZvcm1hdCgpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKy0gICAgfSBlbHNl IHsKKy0gICAgICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVyLT5vYmplY3QoKSwg bV9lbnRlclNlcmlhbCwgbnVsbHB0cik7CistICAgIH0KKysgICAgc2VuZFJlc3BvbnNlKHN1cHBv cnRlZEFjdGlvbnMsIHJlc3BvbnNlKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6 OmRhdGFfZGV2aWNlX2xlYXZlKCkKK0BAIC0yMzUsMTAgKzI1OCwxMCBAQCB2b2lkIFFXYXlsYW5k RGF0YURldmljZTo6ZGF0YV9kZXZpY2VfbW90aW9uKHVpbnQzMl90IHRpbWUsIHdsX2ZpeGVkX3Qg eCwgd2xfZml4ZQorICAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IGRyYWctPnN1cHBvcnRlZEFj dGlvbnMoKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIGRyYWdEYXRhID0gbV9kcmFnT2ZmZXIt Pm1pbWVEYXRhKCk7CistICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkNvcHlBY3Rpb24g fCBRdDo6TW92ZUFjdGlvbiB8IFF0OjpMaW5rQWN0aW9uOworKyAgICAgICAgc3VwcG9ydGVkQWN0 aW9ucyA9IG1fZHJhZ09mZmVyLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0KKyAKKy0gICAg UVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgcmVzcG9uc2UgPSBRV2luZG93U3lzdGVtSW50ZXJmYWNl OjpoYW5kbGVEcmFnKG1fZHJhZ1dpbmRvdywgZHJhZ0RhdGEsIG1fZHJhZ1BvaW50LCBzdXBwb3J0 ZWRBY3Rpb25zLAorKyAgICBjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSByZXNwb25zZSA9 IFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZURyYWcobV9kcmFnV2luZG93LCBkcmFnRGF0 YSwgbV9kcmFnUG9pbnQsIHN1cHBvcnRlZEFjdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRR3Vp QXBwbGljYXRpb246Om1vdXNlQnV0dG9ucygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUd1aUFwcGxp Y2F0aW9uOjprZXlib2FyZE1vZGlmaWVycygpKTsKKyAKK0BAIC0yNDYsMTEgKzI2OSw3IEBAIHZv aWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9tb3Rpb24odWludDMyX3QgdGltZSwg d2xfZml4ZWRfdCB4LCB3bF9maXhlCisgICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcg Kj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkp LT5zZXRSZXNwb25zZShyZXNwb25zZSk7CisgICAgIH0KKyAKKy0gICAgaWYgKHJlc3BvbnNlLmlz QWNjZXB0ZWQoKSkgeworLSAgICAgICAgd2xfZGF0YV9vZmZlcl9hY2NlcHQobV9kcmFnT2ZmZXIt Pm9iamVjdCgpLCBtX2VudGVyU2VyaWFsLCBtX2RyYWdPZmZlci0+Zmlyc3RGb3JtYXQoKS50b1V0 ZjgoKS5jb25zdERhdGEoKSk7CistICAgIH0gZWxzZSB7CistICAgICAgICB3bF9kYXRhX29mZmVy X2FjY2VwdChtX2RyYWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG51bGxwdHIpOwor LSAgICB9CisrICAgIHNlbmRSZXNwb25zZShzdXBwb3J0ZWRBY3Rpb25zLCByZXNwb25zZSk7Cisg fQorICNlbmRpZiAvLyBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgCitAQCAtMjc3LDE0ICsyOTYs MTAgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OnNlbGVjdGlvblNvdXJjZUNhbmNlbGxlZCgp CisgI2lmIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6 ZHJhZ1NvdXJjZUNhbmNlbGxlZCgpCisgeworKyAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcg Kj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkp LT5maW5pc2hEcmFnKCk7CisgICAgIG1fZHJhZ1NvdXJjZS5yZXNldCgpOworIH0KKyAKKy12b2lk IFFXYXlsYW5kRGF0YURldmljZTo6ZHJhZ1NvdXJjZVRhcmdldENoYW5nZWQoY29uc3QgUVN0cmlu ZyAmbWltZVR5cGUpCisteworLSAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFw cGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT51cGRhdGVU YXJnZXQobWltZVR5cGUpOworLX0KKy0KKyBRUG9pbnQgUVdheWxhbmREYXRhRGV2aWNlOjpjYWxj dWxhdGVEcmFnUG9zaXRpb24oaW50IHgsIGludCB5LCBRV2luZG93ICp3bmQpIGNvbnN0Cisgewor ICAgICBRUG9pbnQgcG50KHdsX2ZpeGVkX3RvX2ludCh4KSwgd2xfZml4ZWRfdG9faW50KHkpKTsK K0BAIC0yOTcsNiArMzEyLDMzIEBAIFFQb2ludCBRV2F5bGFuZERhdGFEZXZpY2U6OmNhbGN1bGF0 ZURyYWdQb3NpdGlvbihpbnQgeCwgaW50IHksIFFXaW5kb3cgKnduZCkgY29uCisgICAgIH0KKyAg ICAgcmV0dXJuIHBudDsKKyB9CisrCisrdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OnNlbmRSZXNw b25zZShRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgY29uc3QgUVBsYXRmb3JtRHJh Z1F0UmVzcG9uc2UgJnJlc3BvbnNlKQorK3sKKysgICAgaWYgKHJlc3BvbnNlLmlzQWNjZXB0ZWQo KSkgeworKyAgICAgICAgaWYgKHdsX2RhdGFfZGV2aWNlX2dldF92ZXJzaW9uKG9iamVjdCgpKSA+ PSAzKQorKyAgICAgICAgICAgIG1fZHJhZ09mZmVyLT5zZXRfYWN0aW9ucyhkcm9wQWN0aW9uc1Rv V2woc3VwcG9ydGVkQWN0aW9ucyksIGRyb3BBY3Rpb25zVG9XbChyZXNwb25zZS5hY2NlcHRlZEFj dGlvbigpKSk7CisrCisrICAgICAgICBtX2RyYWdPZmZlci0+YWNjZXB0KG1fZW50ZXJTZXJpYWws IG1fZHJhZ09mZmVyLT5maXJzdEZvcm1hdCgpKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIG1f ZHJhZ09mZmVyLT5hY2NlcHQobV9lbnRlclNlcmlhbCwgUVN0cmluZygpKTsKKysgICAgfQorK30K KysKKytpbnQgUVdheWxhbmREYXRhRGV2aWNlOjpkcm9wQWN0aW9uc1RvV2woUXQ6OkRyb3BBY3Rp b25zIGFjdGlvbnMpCisreworKworKyAgICBpbnQgd2xBY3Rpb25zID0gV0xfREFUQV9ERVZJQ0Vf TUFOQUdFUl9ETkRfQUNUSU9OX05PTkU7CisrICAgIGlmIChhY3Rpb25zICYgUXQ6OkNvcHlBY3Rp b24pCisrICAgICAgICB3bEFjdGlvbnMgfD0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNU SU9OX0NPUFk7CisrICAgIGlmIChhY3Rpb25zICYgKFF0OjpNb3ZlQWN0aW9uIHwgUXQ6OlRhcmdl dE1vdmVBY3Rpb24pKQorKyAgICAgICAgd2xBY3Rpb25zIHw9IFdMX0RBVEFfREVWSUNFX01BTkFH RVJfRE5EX0FDVElPTl9NT1ZFOworKworKyAgICAvLyB3YXlsYW5kIGRvZXMgbm90IHN1cHBvcnQg TGlua0FjdGlvbiBhdCB0aGUgdGltZSBvZiB3cml0aW5nCisrICAgIHJldHVybiB3bEFjdGlvbnM7 CisrfQorKworKworICNlbmRpZiAvLyBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgCisgfQorZGlm ZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZV9wLmggYi9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5oCitpbmRleCAxNmMzYWQy OC4uODAxZGNjMmMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRh dGFkZXZpY2VfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZp Y2VfcC5oCitAQCAtNjQsNiArNjQsNyBAQCBRVF9SRVFVSVJFX0NPTkZJRyh3YXlsYW5kX2RhdGFk ZXZpY2UpOworIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIGNsYXNzIFFNaW1lRGF0YTsKKytjbGFz cyBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZTsKKyBjbGFzcyBRV2luZG93OworIAorIG5hbWVzcGFj ZSBRdFdheWxhbmRDbGllbnQgeworQEAgLTg5LDcgKzkwLDcgQEAgcHVibGljOgorIAorICNpZiBR VF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgICAgIFFXYXlsYW5kRGF0YU9mZmVyICpkcmFnT2ZmZXIo KSBjb25zdDsKKy0gICAgYm9vbCBzdGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUVdheWxh bmRXaW5kb3cgKmljb24pOworKyAgICBib29sIHN0YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVEYXRh LCBRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgUVdheWxhbmRXaW5kb3cgKmljb24p OworICAgICB2b2lkIGNhbmNlbERyYWcoKTsKKyAjZW5kaWYKKyAKK0BAIC0xMDksMTMgKzExMCwx NiBAQCBwcml2YXRlIFFfU0xPVFM6CisgCisgI2lmIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAg ICAgdm9pZCBkcmFnU291cmNlQ2FuY2VsbGVkKCk7CistICAgIHZvaWQgZHJhZ1NvdXJjZVRhcmdl dENoYW5nZWQoY29uc3QgUVN0cmluZyAmbWltZVR5cGUpOworICNlbmRpZgorIAorIHByaXZhdGU6 CisgI2lmIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAgICAgUVBvaW50IGNhbGN1bGF0ZURyYWdQ b3NpdGlvbihpbnQgeCwgaW50IHksIFFXaW5kb3cgKnduZCkgY29uc3Q7CisgI2VuZGlmCisrICAg IHZvaWQgc2VuZFJlc3BvbnNlKFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25zLCBjb25z dCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVzcG9uc2UpOworKworKyAgICBzdGF0aWMgaW50 IGRyb3BBY3Rpb25zVG9XbChRdDo6RHJvcEFjdGlvbnMgZHJvcEFjdGlvbnMpOworKworIAorICAg ICBRV2F5bGFuZERpc3BsYXkgKm1fZGlzcGxheSA9IG51bGxwdHI7CisgICAgIFFXYXlsYW5kSW5w dXREZXZpY2UgKm1faW5wdXREZXZpY2UgPSBudWxscHRyOworZGlmZiAtLWdpdCBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlci5jcHAKK2luZGV4IDM1ZDY3MzA3Li42 ZGM0Zjc3ZiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRl dmljZW1hbmFnZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFk ZXZpY2VtYW5hZ2VyLmNwcAorQEAgLTUwLDggKzUwLDggQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisg CisgbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudCB7CisgCistUVdheWxhbmREYXRhRGV2aWNlTWFu YWdlcjo6UVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXks IHVpbnQzMl90IGlkKQorLSAgICA6IHdsX2RhdGFfZGV2aWNlX21hbmFnZXIoZGlzcGxheS0+d2xf cmVnaXN0cnkoKSwgaWQsIDEpCisrUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcjo6UVdheWxhbmRE YXRhRGV2aWNlTWFuYWdlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIGludCB2ZXJzaW9uLCB1 aW50MzJfdCBpZCkKKysgICAgOiB3bF9kYXRhX2RldmljZV9tYW5hZ2VyKGRpc3BsYXktPndsX3Jl Z2lzdHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIDMpKQorICAgICAsIG1fZGlzcGxheShkaXNwbGF5 KQorIHsKKyAgICAgLy8gQ3JlYXRlIHRyYW5zZmVyIGRldmljZXMgZm9yIGFsbCBpbnB1dCBkZXZp Y2VzLgorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmlj ZW1hbmFnZXJfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFu YWdlcl9wLmgKK2luZGV4IGJkMDVjMGZiLi41MTBkOWJlNCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXJfcC5oCisrKysgYi9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaAorQEAgLTY4LDcgKzY4 LDcgQEAgY2xhc3MgUVdheWxhbmRJbnB1dERldmljZTsKKyBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5U X0VYUE9SVCBRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyIDogcHVibGljIFF0V2F5bGFuZDo6d2xf ZGF0YV9kZXZpY2VfbWFuYWdlcgorIHsKKyBwdWJsaWM6CistICAgIFFXYXlsYW5kRGF0YURldmlj ZU1hbmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCB1aW50MzJfdCBpZCk7CisrICAgIFFX YXlsYW5kRGF0YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCBpbnQgdmVy c2lvbiwgdWludDMyX3QgaWQpOworICAgICB+UVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcigpIG92 ZXJyaWRlOworIAorICAgICBRV2F5bGFuZERhdGFEZXZpY2UgKmdldERhdGFEZXZpY2UoUVdheWxh bmRJbnB1dERldmljZSAqaW5wdXREZXZpY2UpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGF0YW9mZmVyLmNwcAoraW5kZXggMjI5N2U4YTEuLmZlMGVhOGM5IDEwMDY0NAorLS0tIGEv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwCisrKysgYi9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlci5jcHAKK0BAIC04Miw2ICs4MiwxNSBAQCBR TWltZURhdGEgKlFXYXlsYW5kRGF0YU9mZmVyOjptaW1lRGF0YSgpCisgICAgIHJldHVybiBtX21p bWVEYXRhLmRhdGEoKTsKKyB9CisgCisrUXQ6OkRyb3BBY3Rpb25zIFFXYXlsYW5kRGF0YU9mZmVy OjpzdXBwb3J0ZWRBY3Rpb25zKCkgY29uc3QKKyt7CisrICAgIGlmICh3bF9kYXRhX29mZmVyX2dl dF92ZXJzaW9uKGNvbnN0X2Nhc3Q8Ojp3bF9kYXRhX29mZmVyKj4ob2JqZWN0KCkpKSA8IDMpIHsK KysgICAgICAgIHJldHVybiBRdDo6TW92ZUFjdGlvbiB8IFF0OjpDb3B5QWN0aW9uOworKyAgICB9 CisrCisrICAgIHJldHVybiBtX3N1cHBvcnRlZEFjdGlvbnM7CisrfQorKworIHZvaWQgUVdheWxh bmREYXRhT2ZmZXI6OnN0YXJ0UmVjZWl2aW5nKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlLCBpbnQg ZmQpCisgeworICAgICByZWNlaXZlKG1pbWVUeXBlLCBmZCk7CitAQCAtOTMsNiArMTAyLDIyIEBA IHZvaWQgUVdheWxhbmREYXRhT2ZmZXI6OmRhdGFfb2ZmZXJfb2ZmZXIoY29uc3QgUVN0cmluZyAm bWltZV90eXBlKQorICAgICBtX21pbWVEYXRhLT5hcHBlbmRGb3JtYXQobWltZV90eXBlKTsKKyB9 CisgCisrdm9pZCBRV2F5bGFuZERhdGFPZmZlcjo6ZGF0YV9vZmZlcl9hY3Rpb24odWludDMyX3Qg ZG5kX2FjdGlvbikKKyt7CisrICAgIFFfVU5VU0VEKGRuZF9hY3Rpb24pOworKyAgICAvLyBUaGlz IGlzIHRoZSBjb21wb3NpdG9yIHRlbGxpbmcgdGhlIGRyYWcgdGFyZ2V0IHdoYXQgYWN0aW9uIGl0 IHNob3VsZCBwZXJmb3JtCisrICAgIC8vIEl0IGRvZXMgbm90IG1hcCBuaWNlbHkgaW50byBRdCBm aW5hbCBkcm9wIHNlbWFudGljcywgb3RoZXIgdGhhbiBwcmV0ZW5kaW5nIHRoZXJlIGlzIG9ubHkg b25lIHN1cHBvcnRlZCBhY3Rpb24/CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRhT2ZmZXI6OmRh dGFfb2ZmZXJfc291cmNlX2FjdGlvbnModWludDMyX3Qgc291cmNlX2FjdGlvbnMpCisreworKyAg ICBtX3N1cHBvcnRlZEFjdGlvbnMgPSBRdDo6RHJvcEFjdGlvbnMoKTsKKysgICAgaWYgKHNvdXJj ZV9hY3Rpb25zICYgV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX01PVkUpCisrICAg ICAgICBtX3N1cHBvcnRlZEFjdGlvbnMgfD0gUXQ6Ok1vdmVBY3Rpb247CisrICAgIGlmIChzb3Vy Y2VfYWN0aW9ucyAmIFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9DT1BZKQorKyAg ICAgICAgbV9zdXBwb3J0ZWRBY3Rpb25zIHw9IFF0OjpDb3B5QWN0aW9uOworK30KKysKKyBRV2F5 bGFuZE1pbWVEYXRhOjpRV2F5bGFuZE1pbWVEYXRhKFFXYXlsYW5kQWJzdHJhY3REYXRhT2ZmZXIg KmRhdGFPZmZlcikKKyAgICAgOiBtX2RhdGFPZmZlcihkYXRhT2ZmZXIpCisgeworQEAgLTE2Mywx NyArMTg4LDE4IEBAIFFWYXJpYW50IFFXYXlsYW5kTWltZURhdGE6OnJldHJpZXZlRGF0YV9zeXMo Y29uc3QgUVN0cmluZyAmbWltZVR5cGUsIFFWYXJpYW50OjpUCisgCisgaW50IFFXYXlsYW5kTWlt ZURhdGE6OnJlYWREYXRhKGludCBmZCwgUUJ5dGVBcnJheSAmZGF0YSkgY29uc3QKKyB7CistICAg IGZkX3NldCByZWFkc2V0OworLSAgICBGRF9aRVJPKCZyZWFkc2V0KTsKKy0gICAgRkRfU0VUKGZk LCAmcmVhZHNldCk7CistICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CisrICAgIHN0cnVjdCBw b2xsZmQgcmVhZHNldDsKKysgICAgcmVhZHNldC5mZCA9IGZkOworKyAgICByZWFkc2V0LmV2ZW50 cyA9IFBPTExJTjsKKysgICAgc3RydWN0IHRpbWVzcGVjIHRpbWVvdXQ7CisgICAgIHRpbWVvdXQu dHZfc2VjID0gMTsKKy0gICAgdGltZW91dC50dl91c2VjID0gMDsKKysgICAgdGltZW91dC50dl9u c2VjID0gMDsKKysKKyAKKyAgICAgUV9GT1JFVkVSIHsKKy0gICAgICAgIGludCByZWFkeSA9IHNl bGVjdChGRF9TRVRTSVpFLCAmcmVhZHNldCwgbnVsbHB0ciwgbnVsbHB0ciwgJnRpbWVvdXQpOwor KyAgICAgICAgaW50IHJlYWR5ID0gcXRfc2FmZV9wb2xsKCZyZWFkc2V0LCAxLCAmdGltZW91dCk7 CisgICAgICAgICBpZiAocmVhZHkgPCAwKSB7CistICAgICAgICAgICAgcVdhcm5pbmcoKSA8PCAi UVdheWxhbmREYXRhT2ZmZXI6IHNlbGVjdCgpIGZhaWxlZCI7CisrICAgICAgICAgICAgcVdhcm5p bmcoKSA8PCAiUVdheWxhbmREYXRhT2ZmZXI6IHF0X3NhZmVfcG9sbCgpIGZhaWxlZCI7CisgICAg ICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgfSBlbHNlIGlmIChyZWFkeSA9PSAwKSB7Cisg ICAgICAgICAgICAgcVdhcm5pbmcoIlFXYXlsYW5kRGF0YU9mZmVyOiB0aW1lb3V0IHJlYWRpbmcg ZnJvbSBwaXBlIik7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRk YXRhb2ZmZXJfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5o CitpbmRleCA5Y2YxNDgzYy4uNmY2NjczOTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGRhdGFvZmZlcl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kZGF0YW9mZmVyX3AuaAorQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgorICAgICBleHBs aWNpdCBRV2F5bGFuZERhdGFPZmZlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIHN0cnVjdCA6 OndsX2RhdGFfb2ZmZXIgKm9mZmVyKTsKKyAgICAgflFXYXlsYW5kRGF0YU9mZmVyKCkgb3ZlcnJp ZGU7CisgICAgIFFNaW1lRGF0YSAqbWltZURhdGEoKSBvdmVycmlkZTsKKysgICAgUXQ6OkRyb3BB Y3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMoKSBjb25zdDsKKyAKKyAgICAgUVN0cmluZyBmaXJzdEZv cm1hdCgpIGNvbnN0OworIAorQEAgLTg5LDEwICs5MCwxMyBAQCBwdWJsaWM6CisgCisgcHJvdGVj dGVkOgorICAgICB2b2lkIGRhdGFfb2ZmZXJfb2ZmZXIoY29uc3QgUVN0cmluZyAmbWltZV90eXBl KSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRhX29mZmVyX3NvdXJjZV9hY3Rpb25zKHVpbnQzMl90 IHNvdXJjZV9hY3Rpb25zKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRhX29mZmVyX2FjdGlvbih1 aW50MzJfdCBkbmRfYWN0aW9uKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFu ZERpc3BsYXkgKm1fZGlzcGxheSA9IG51bGxwdHI7CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXls YW5kTWltZURhdGE+IG1fbWltZURhdGE7CisrICAgIFF0OjpEcm9wQWN0aW9ucyBtX3N1cHBvcnRl ZEFjdGlvbnM7CisgfTsKKyAKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRhdGFzb3VyY2UuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRh c291cmNlLmNwcAoraW5kZXggZjQ1MTIyZmIuLjU1OTljYmQ0IDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlLmNwcAorQEAgLTEwMSw3ICsxMDEsMzIgQEAgdm9p ZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX3NlbmQoY29uc3QgUVN0cmluZyAmbWlt ZV90eXBlLCBpbnQzMl90IGZkKQorIAorIHZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3Nv dXJjZV90YXJnZXQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKQorIHsKKy0gICAgUV9FTUlUIHRh cmdldENoYW5nZWQobWltZV90eXBlKTsKKysgICAgbV9hY2NlcHRlZCA9ICFtaW1lX3R5cGUuaXNF bXB0eSgpOworKyAgICBRX0VNSVQgZG5kUmVzcG9uc2VVcGRhdGVkKG1fYWNjZXB0ZWQsIG1fZHJv cEFjdGlvbik7CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV9h Y3Rpb24odWludDMyX3QgYWN0aW9uKQorK3sKKysgICAgUXQ6OkRyb3BBY3Rpb24gcXRBY3Rpb24g PSBRdDo6SWdub3JlQWN0aW9uOworKworKyAgICBpZiAoYWN0aW9uID09IFdMX0RBVEFfREVWSUNF X01BTkFHRVJfRE5EX0FDVElPTl9NT1ZFKQorKyAgICAgICAgcXRBY3Rpb24gPSBRdDo6TW92ZUFj dGlvbjsKKysgICAgZWxzZSBpZiAoYWN0aW9uID09IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5E X0FDVElPTl9DT1BZKQorKyAgICAgICAgcXRBY3Rpb24gPSBRdDo6Q29weUFjdGlvbjsKKysKKysg ICAgbV9kcm9wQWN0aW9uID0gcXRBY3Rpb247CisrICAgIFFfRU1JVCBkbmRSZXNwb25zZVVwZGF0 ZWQobV9hY2NlcHRlZCwgbV9kcm9wQWN0aW9uKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZERhdGFT b3VyY2U6OmRhdGFfc291cmNlX2RuZF9maW5pc2hlZCgpCisreworKyAgICBRX0VNSVQgZmluaXNo ZWQoKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX2RuZF9k cm9wX3BlcmZvcm1lZCgpCisreworKworKyAgICBRX0VNSVQgZG5kRHJvcHBlZChtX2FjY2VwdGVk LCBtX2Ryb3BBY3Rpb24pOworIH0KKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkYXRhc291cmNlX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGF0YXNvdXJjZV9wLmgKK2luZGV4IDI1YWZmZjc5Li45NmYwN2JjMyAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgKKysrKyBiL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgKK0BAIC03NywxNyArNzcsMjUg QEAgcHVibGljOgorICAgICBRTWltZURhdGEgKm1pbWVEYXRhKCkgY29uc3Q7CisgCisgUV9TSUdO QUxTOgorLSAgICB2b2lkIHRhcmdldENoYW5nZWQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKTsK KyAgICAgdm9pZCBjYW5jZWxsZWQoKTsKKysgICAgdm9pZCBmaW5pc2hlZCgpOworKworKyAgICB2 b2lkIGRuZFJlc3BvbnNlVXBkYXRlZChib29sIGFjY2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBhY3Rp b24pOworKyAgICB2b2lkIGRuZERyb3BwZWQoYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BBY3Rpb24g YWN0aW9uKTsKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgZGF0YV9zb3VyY2VfY2FuY2VsbGVk KCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgZGF0YV9zb3VyY2Vfc2VuZChjb25zdCBRU3RyaW5nICZt aW1lX3R5cGUsIGludDMyX3QgZmQpIG92ZXJyaWRlOworICAgICB2b2lkIGRhdGFfc291cmNlX3Rh cmdldChjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFf c291cmNlX2RuZF9kcm9wX3BlcmZvcm1lZCgpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfc291 cmNlX2RuZF9maW5pc2hlZCgpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfc291cmNlX2FjdGlv bih1aW50MzJfdCBhY3Rpb24pIG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5k RGlzcGxheSAqbV9kaXNwbGF5ID0gbnVsbHB0cjsKKyAgICAgUU1pbWVEYXRhICptX21pbWVfZGF0 YSA9IG51bGxwdHI7CisrICAgIGJvb2wgbV9hY2NlcHRlZCA9IGZhbHNlOworKyAgICBRdDo6RHJv cEFjdGlvbiBtX2Ryb3BBY3Rpb24gPSBRdDo6SWdub3JlQWN0aW9uOworIH07CisgCisgfQorZGlm ZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheS5jcHAgYi9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwCitpbmRleCBmMTBjMWY3OS4uYzAx ZTIzOGIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXku Y3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwCitAQCAt ODUsMTAgKzg1LDIwMyBAQAorIAorICNpbmNsdWRlIDxlcnJuby5oPgorIAorKyNpbmNsdWRlIDx0 dXBsZT4gLy8gZm9yIHN0ZDo6dGllCisrCisrc3RhdGljIHZvaWQgY2hlY2tXYXlsYW5kRXJyb3Io c3RydWN0IHdsX2Rpc3BsYXkgKmRpc3BsYXkpCisreworKyAgICBpbnQgZWNvZGUgPSB3bF9kaXNw bGF5X2dldF9lcnJvcihkaXNwbGF5KTsKKysgICAgaWYgKChlY29kZSA9PSBFUElQRSB8fCBlY29k ZSA9PSBFQ09OTlJFU0VUKSkgeworKyAgICAgICAgLy8gc3BlY2lhbCBjYXNlIHRoaXMgdG8gcHJv dmlkZSBhIG5pY2VyIGVycm9yCisrICAgICAgICBxV2FybmluZygiVGhlIFdheWxhbmQgY29ubmVj dGlvbiBicm9rZS4gRGlkIHRoZSBXYXlsYW5kIGNvbXBvc2l0b3IgZGllPyIpOworKyAgICB9IGVs c2UgeworKyAgICAgICAgcVdhcm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24gZXhwZXJpZW5j ZWQgYSBmYXRhbCBlcnJvcjogJXMiLCBzdHJlcnJvcihlY29kZSkpOworKyAgICB9CisrICAgIF9l eGl0KDEpOworK30KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBuYW1lc3BhY2UgUXRXYXls YW5kQ2xpZW50IHsKKyAKKytjbGFzcyBFdmVudFRocmVhZCA6IHB1YmxpYyBRVGhyZWFkCisrewor KyAgICBRX09CSkVDVAorK3B1YmxpYzoKKysgICAgZW51bSBPcGVyYXRpbmdNb2RlIHsKKysgICAg ICAgIEVtaXRUb0Rpc3BhdGNoLCAvLyBFbWl0IHRoZSBzaWduYWwsIGFsbG93IGRpc3BhdGNoaW5n IGluIGEgZGlmZmVybnQgdGhyZWFkLgorKyAgICAgICAgU2VsZkRpc3BhdGNoLCAvLyBEaXNwYXRj aCB0aGUgZXZlbnRzIGluc2lkZSB0aGlzIHRocmVhZC4KKysgICAgfTsKKysKKysgICAgRXZlbnRU aHJlYWQoc3RydWN0IHdsX2Rpc3BsYXkgKiB3bCwgc3RydWN0IHdsX2V2ZW50X3F1ZXVlICogZXZf cXVldWUsCisrICAgICAgICAgICAgICAgIE9wZXJhdGluZ01vZGUgbW9kZSkKKysgICAgICAgIDog bV9mZCh3bF9kaXNwbGF5X2dldF9mZCh3bCkpCisrICAgICAgICAsIG1fcGlwZWZkeyAtMSwgLTEg fQorKyAgICAgICAgLCBtX3dsZGlzcGxheSh3bCkKKysgICAgICAgICwgbV93bGV2cXVldWUoZXZf cXVldWUpCisrICAgICAgICAsIG1fbW9kZShtb2RlKQorKyAgICAgICAgLCBtX3JlYWRpbmcodHJ1 ZSkKKysgICAgICAgICwgbV9xdWl0dGluZyhmYWxzZSkKKysgICAgeworKyAgICAgICAgc2V0T2Jq ZWN0TmFtZShRU3RyaW5nTGl0ZXJhbCgiV2F5bGFuZEV2ZW50VGhyZWFkIikpOworKyAgICB9Cisr CisrICAgIHZvaWQgcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkKKysgICAgeworKyAgICAgICAgLyoK KysgICAgICAgICAqIERpc3BhdGNoIHBlbmRpbmcgZXZlbnRzIGFuZCBmbHVzaCB0aGUgcmVxdWVz dHMgYXQgbGVhc3Qgb25jZS4gSWYgdGhlIGV2ZW50IHRocmVhZAorKyAgICAgICAgICogaXMgbm90 IHJlYWRpbmcsIHRyeSB0byBjYWxsIF9wcmVwYXJlX3JlYWQoKSB0byBhbGxvdyB0aGUgZXZlbnQg dGhyZWFkIHRvIHBvbGwoKS4KKysgICAgICAgICAqIElmIHRoYXQgZmFpbHMsIHJlLXRyeSBkaXNw YXRjaCAmIGZsdXNoIGFnYWluIHVudGlsIF9wcmVwYXJlX3JlYWQoKSBpcyBzdWNjZXNzZnVsLgor KyAgICAgICAgICoKKysgICAgICAgICAqIFRoaXMgYWxsb3cgYW55IGNhbGwgdG8gcmVhZEFuZERp c3BhdGNoRXZlbnRzKCkgdG8gc3RhcnQgZXZlbnQgdGhyZWFkJ3MgcG9sbGluZywKKysgICAgICAg ICAqIG5vdCBvbmx5IHRoZSBvbmUgaXNzdWVkIGZyb20gZXZlbnQgdGhyZWFkJ3Mgd2FpdEZvclJl YWRpbmcoKSwgd2hpY2ggbWVhbnMgZnVuY3Rpb25zCisrICAgICAgICAgKiBjYWxsZWQgZnJvbSBk aXNwYXRjaF9wZW5kaW5nKCkgY2FuIHNhZmVseSBzcGluIGFuIGV2ZW50IGxvb3AuCisrICAgICAg ICAgKi8KKysgICAgICAgIGZvciAoOzspIHsKKysgICAgICAgICAgICBpZiAoZGlzcGF0Y2hRdWV1 ZVBlbmRpbmcoKSA8IDApIHsKKysgICAgICAgICAgICAgICAgY2hlY2tXYXlsYW5kRXJyb3IobV93 bGRpc3BsYXkpOworKyAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAgICAgfQorKwor KyAgICAgICAgICAgIHdsX2Rpc3BsYXlfZmx1c2gobV93bGRpc3BsYXkpOworKworKyAgICAgICAg ICAgIC8vIFdlIGhhdmUgdG8gY2hlY2sgaWYgZXZlbnQgdGhyZWFkIGlzIHJlYWRpbmcgZXZlcnkg dGltZSB3ZSBkaXNwYXRjaAorKyAgICAgICAgICAgIC8vIHNvbWV0aGluZywgYXMgdGhhdCBtYXkg cmVjdXJzaXZlbHkgY2FsbCB0aGlzIGZ1bmN0aW9uLgorKyAgICAgICAgICAgIGlmIChtX3JlYWRp bmcubG9hZEFjcXVpcmUoKSkKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICAg ICAgaWYgKHByZXBhcmVSZWFkUXVldWUoKSA9PSAwKSB7CisrICAgICAgICAgICAgICAgIFFNdXRl eExvY2tlciBsKCZtX211dGV4KTsKKysgICAgICAgICAgICAgICAgbV9yZWFkaW5nLnN0b3JlUmVs ZWFzZSh0cnVlKTsKKysgICAgICAgICAgICAgICAgbV9jb25kLndha2VPbmUoKTsKKysgICAgICAg ICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICB9CisrCisr ICAgIHZvaWQgc3RvcCgpCisrICAgIHsKKysgICAgICAgIC8vIFdlIGhhdmUgdG8gYm90aCB3cml0 ZSB0byB0aGUgcGlwZSBhbmQgc2V0IHRoZSBmbGFnLCBhcyB0aGUgdGhyZWFkIG1heSBiZQorKyAg ICAgICAgLy8gZWl0aGVyIGluIHRoZSBwb2xsKCkgb3Igd2FpdGluZyBmb3IgX3ByZXBhcmVfcmVh ZCgpLgorKyAgICAgICAgaWYgKG1fcGlwZWZkWzFdICE9IC0xICYmIHdyaXRlKG1fcGlwZWZkWzFd LCAiXDAiLCAxKSA9PSAtMSkKKysgICAgICAgICAgICBxV2FybmluZygiRmFpbGVkIHRvIHdyaXRl IHRvIHRoZSBwaXBlOiAlcy4iLCBzdHJlcnJvcihlcnJubykpOworKworKyAgICAgICAgeworKyAg ICAgICAgICAgIFFNdXRleExvY2tlciBsKCZtX211dGV4KTsKKysgICAgICAgICAgICBtX3F1aXR0 aW5nID0gdHJ1ZTsKKysgICAgICAgICAgICBtX2NvbmQud2FrZU9uZSgpOworKyAgICAgICAgfQor KworKyAgICAgICAgd2FpdCgpOworKyAgICB9CisrCisrUV9TSUdOQUxTOgorKyAgICB2b2lkIG5l ZWRSZWFkQW5kRGlzcGF0Y2goKTsKKysKKytwcm90ZWN0ZWQ6CisrICAgIHZvaWQgcnVuKCkgb3Zl cnJpZGUKKysgICAgeworKyAgICAgICAgLy8gd2UgdXNlIHRoaXMgcGlwZSB0byBtYWtlIHRoZSBs b29wIGV4aXQgb3RoZXJ3aXNlIGlmIHdlIHNpbXBseSB1c2VkIGEgZmxhZyBvbiB0aGUgbG9vcCBj b25kaXRpb24sIGlmIHN0b3AoKSBnZXRzCisrICAgICAgICAvLyBjYWxsZWQgd2hpbGUgcG9sbCgp IGlzIGJsb2NraW5nIHRoZSB0aHJlYWQgd2lsbCBuZXZlciBxdWl0IHNpbmNlIHRoZXJlIGFyZSBu byB3YXlsYW5kIG1lc3NhZ2VzIGNvbWluZyBhbnltb3JlLgorKyAgICAgICAgc3RydWN0IFBpcGUK KysgICAgICAgIHsKKysgICAgICAgICAgICBQaXBlKGludCAqZmRzKQorKyAgICAgICAgICAgICAg ICA6IGZkcyhmZHMpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBpZiAocXRfc2Fm ZV9waXBlKGZkcykgIT0gMCkKKysgICAgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJQaXBlIGNy ZWF0aW9uIGZhaWxlZC4gUXVpdHRpbmcgbWF5IGhhbmcuIik7CisrICAgICAgICAgICAgfQorKyAg ICAgICAgICAgIH5QaXBlKCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGlmIChm ZHNbMF0gIT0gLTEpIHsKKysgICAgICAgICAgICAgICAgICAgIGNsb3NlKGZkc1swXSk7CisrICAg ICAgICAgICAgICAgICAgICBjbG9zZShmZHNbMV0pOworKyAgICAgICAgICAgICAgICB9CisrICAg ICAgICAgICAgfQorKworKyAgICAgICAgICAgIGludCAqZmRzOworKyAgICAgICAgfSBwaXBlKG1f cGlwZWZkKTsKKysKKysgICAgICAgIC8vIE1ha2UgdGhlIG1haW4gdGhyZWFkIGNhbGwgd2xfcHJl cGFyZV9yZWFkKCksIGRpc3BhdGNoIHRoZSBwZW5kaW5nIG1lc3NhZ2VzIGFuZCBmbHVzaCB0aGUK KysgICAgICAgIC8vIG91dGJvdW5kIG9uZXMuIFdhaXQgdW50aWwgaXQncyBkb25lIGJlZm9yZSBw cm9jZWVkaW5nLCB1bmxlc3Mgd2UncmUgdG9sZCB0byBxdWl0LgorKyAgICAgICAgd2hpbGUgKHdh aXRGb3JSZWFkaW5nKCkpIHsKKysgICAgICAgICAgICBwb2xsZmQgZmRzWzJdID0geyB7IG1fZmQs IFBPTExJTiwgMCB9LCB7IG1fcGlwZWZkWzBdLCBQT0xMSU4sIDAgfSB9OworKyAgICAgICAgICAg IHBvbGwoZmRzLCAyLCAtMSk7CisrCisrICAgICAgICAgICAgaWYgKGZkc1sxXS5yZXZlbnRzICYg UE9MTElOKSB7CisrICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IHJlYWxseSBjYXJlIHRvIHJl YWQgdGhlIGJ5dGUgdGhhdCB3YXMgd3JpdHRlbiBoZXJlIHNpbmNlIHdlJ3JlIGNsb3NpbmcgZG93 bgorKyAgICAgICAgICAgICAgICB3bF9kaXNwbGF5X2NhbmNlbF9yZWFkKG1fd2xkaXNwbGF5KTsK KysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAg IGlmIChmZHNbMF0ucmV2ZW50cyAmIFBPTExJTikKKysgICAgICAgICAgICAgICAgd2xfZGlzcGxh eV9yZWFkX2V2ZW50cyhtX3dsZGlzcGxheSk7CisrICAgICAgICAgICAgICAgIC8vIFRoZSBwb2xs bCB3YXMgc3VjY2VzZnVsbCBhbmQgdGhlIGV2ZW50IHRocmVhZCBkaWQgdGhlIHdsX2Rpc3BsYXlf cmVhZF9ldmVudHMoKS4gT24gdGhlIG5leHQgaXRlcmF0aW9uIG9mIHRoZSBsb29wCisrICAgICAg ICAgICAgICAgIC8vIHRoZSBldmVudCBzZW50IHRvIHRoZSBtYWluIHRocmVhZCB3aWxsIGNhdXNl IGl0IHRvIGRpc3BhdGNoIHRoZSBtZXNzYWdlcyBqdXN0IHJlYWQsIHVubGVzcyB0aGUgbG9vcCBl eGl0cyBpbiB3aGljaAorKyAgICAgICAgICAgICAgICAvLyBjYXNlIHdlIGRvbid0IGNhcmUgYW55 bW9yZSBhYm91dCB0aGVtLgorKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgd2xf ZGlzcGxheV9jYW5jZWxfcmVhZChtX3dsZGlzcGxheSk7CisrICAgICAgICB9CisrICAgIH0KKysK Kytwcml2YXRlOgorKyAgICBib29sIHdhaXRGb3JSZWFkaW5nKCkKKysgICAgeworKyAgICAgICAg UV9BU1NFUlQoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpID09IHRoaXMpOworKworKyAgICAgICAg bV9yZWFkaW5nLnN0b3JlUmVsZWFzZShmYWxzZSk7CisrCisrICAgICAgICBpZiAobV9tb2RlID09 IFNlbGZEaXNwYXRjaCkgeworKyAgICAgICAgICAgIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpOwor KyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBRX0VNSVQgbmVlZFJlYWRBbmREaXNwYXRj aCgpOworKworKyAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrKCZtX211dGV4KTsKKysgICAg ICAgICAgICAvLyBtX3JlYWRpbmcgbWlnaHQgYmUgc2V0IGZyb20gb3VyIGVtaXQgb3Igc29tZSBv dGhlciBpbnZvY2F0aW9uIG9mCisrICAgICAgICAgICAgLy8gcmVhZEFuZERpc3BhdGNoRXZlbnRz KCkuCisrICAgICAgICAgICAgd2hpbGUgKCFtX3JlYWRpbmcubG9hZFJlbGF4ZWQoKSAmJiAhbV9x dWl0dGluZykKKysgICAgICAgICAgICAgICAgbV9jb25kLndhaXQoJm1fbXV0ZXgpOworKyAgICAg ICAgfQorKworKyAgICAgICAgcmV0dXJuICFtX3F1aXR0aW5nOworKyAgICB9CisrCisrICAgIGlu dCBkaXNwYXRjaFF1ZXVlUGVuZGluZygpCisrICAgIHsKKysgICAgICAgIGlmIChtX3dsZXZxdWV1 ZSkKKysgICAgICAgICAgICByZXR1cm4gd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5n KG1fd2xkaXNwbGF5LCBtX3dsZXZxdWV1ZSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAg cmV0dXJuIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcGVuZGluZyhtX3dsZGlzcGxheSk7CisrICAgIH0K KysKKysgICAgaW50IHByZXBhcmVSZWFkUXVldWUoKQorKyAgICB7CisrICAgICAgICBpZiAobV93 bGV2cXVldWUpCisrICAgICAgICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkX3F1 ZXVlKG1fd2xkaXNwbGF5LCBtX3dsZXZxdWV1ZSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAg ICAgcmV0dXJuIHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkKG1fd2xkaXNwbGF5KTsKKysgICAgfQor KworKyAgICBpbnQgbV9mZDsKKysgICAgaW50IG1fcGlwZWZkWzJdOworKyAgICB3bF9kaXNwbGF5 ICptX3dsZGlzcGxheTsKKysgICAgd2xfZXZlbnRfcXVldWUgKm1fd2xldnF1ZXVlOworKyAgICBP cGVyYXRpbmdNb2RlIG1fbW9kZTsKKysKKysgICAgLyogQ29uY3VycmVuY3kgbm90ZSB3aGVuIG9w ZXJhdGluZyBpbiBFbWl0VG9EaXNwYXRjaCBtb2RlOgorKyAgICAgKiBtX3JlYWRpbmcgaXMgc2V0 IHRvIGZhbHNlIGluc2lkZSBldmVudCB0aHJlYWQncyB3YWl0Rm9yUmVhZGluZygpLCBhbmQgaXMK KysgICAgICogc2V0IHRvIHRydWUgaW5zaWRlIG1haW4gdGhyZWFkJ3MgcmVhZEFuZERpc3BhdGNo RXZlbnRzKCkuCisrICAgICAqIFRoZSBsb2NrIGlzIG5vdCB0YWtlbiB3aGVuIHNldHRpbmcgbV9y ZWFkaW5nIHRvIGZhbHNlLCBhcyB0aGUgbWFpbiB0aHJlYWQKKysgICAgICogaXMgbm90IGFjdGl2 ZWx5IHdhaXRpbmcgZm9yIGl0IHRvIHR1cm4gZmFsc2UuIEhvd2V2ZXIsIHRoZSBsb2NrIGlzIHRh a2VuCisrICAgICAqIGluc2lkZSByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKSBiZWZvcmUgc2V0dGlu ZyBtX3JlYWRpbmcgdG8gdHJ1ZSwKKysgICAgICogYXMgdGhlIGV2ZW50IHRocmVhZCBpcyBhY3Rp dmVseSB3YWl0aW5nIGZvciBpdCB1bmRlciB0aGUgd2FpdCBjb25kaXRpb24uCisrICAgICAqLwor KworKyAgICBRQXRvbWljSW50ZWdlcjxib29sPiBtX3JlYWRpbmc7CisrICAgIGJvb2wgbV9xdWl0 dGluZzsKKysgICAgUU11dGV4IG1fbXV0ZXg7CisrICAgIFFXYWl0Q29uZGl0aW9uIG1fY29uZDsK Kyt9OworKworIFFfTE9HR0lOR19DQVRFR09SWShsY1FwYVdheWxhbmQsICJxdC5xcGEud2F5bGFu ZCIpOyAvLyBmb3IgZ2VuZXJhbCAodW5jYXRlZ29yaXplZCkgV2F5bGFuZCBwbGF0Zm9ybSBsb2dn aW5nCisgCisgc3RydWN0IHdsX3N1cmZhY2UgKlFXYXlsYW5kRGlzcGxheTo6Y3JlYXRlU3VyZmFj ZSh2b2lkICpoYW5kbGUpCitAQCAtMTU4LDE3ICszNTEsMTYgQEAgUVdheWxhbmREaXNwbGF5OjpR V2F5bGFuZERpc3BsYXkoUVdheWxhbmRJbnRlZ3JhdGlvbiAqd2F5bGFuZEludGVncmF0aW9uKQor ICAgICBpZiAoIW1Ya2JDb250ZXh0KQorICAgICAgICAgcUNXYXJuaW5nKGxjUXBhV2F5bGFuZCwg ImZhaWxlZCB0byBjcmVhdGUgeGtiIGNvbnRleHQiKTsKKyAjZW5kaWYKKy0KKy0gICAgZm9yY2VS b3VuZFRyaXAoKTsKKy0KKy0gICAgaWYgKCFtV2FpdGluZ1NjcmVlbnMuaXNFbXB0eSgpKSB7Cist ICAgICAgICAvLyBHaXZlIHdsX291dHB1dC5kb25lIGFuZCB6eGRnX291dHB1dF92MS5kb25lIGV2 ZW50cyBhIGNoYW5jZSB0byBhcnJpdmUKKy0gICAgICAgIGZvcmNlUm91bmRUcmlwKCk7CistICAg IH0KKyB9CisgCisgUVdheWxhbmREaXNwbGF5Ojp+UVdheWxhbmREaXNwbGF5KHZvaWQpCisgewor KyAgICBpZiAobV9ldmVudFRocmVhZCkKKysgICAgICAgIG1fZXZlbnRUaHJlYWQtPnN0b3AoKTsK KysKKysgICAgaWYgKG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkKQorKyAgICAgICAgbV9mcmFtZUV2 ZW50UXVldWVUaHJlYWQtPnN0b3AoKTsKKysKKyAgICAgaWYgKG1TeW5jQ2FsbGJhY2spCisgICAg ICAgICB3bF9jYWxsYmFja19kZXN0cm95KG1TeW5jQ2FsbGJhY2spOworIAorQEAgLTE4Nyw2ICsz NzksMjEgQEAgUVdheWxhbmREaXNwbGF5Ojp+UVdheWxhbmREaXNwbGF5KHZvaWQpCisgI2VuZGlm CisgICAgIGlmIChtRGlzcGxheSkKKyAgICAgICAgIHdsX2Rpc3BsYXlfZGlzY29ubmVjdChtRGlz cGxheSk7CisrCisrICAgIGlmIChtX2ZyYW1lRXZlbnRRdWV1ZSkKKysgICAgICAgIHdsX2V2ZW50 X3F1ZXVlX2Rlc3Ryb3kobV9mcmFtZUV2ZW50UXVldWUpOworK30KKysKKysvLyBTdGVwcyB3aGlj aCBpcyBjYWxsZWQganVzdCBhZnRlciBjb25zdHJ1Y3Rvci4gVGhpcyBzZXBhcmF0ZXMgcmVnaXN0 cnlfZ2xvYmFsKCkgb3V0IG9mIHRoZSBjb25zdHJ1Y3RvcgorKy8vIHNvIHRoYXQgZmFjdG9yeSBm dW5jdGlvbnMgaW4gaW50ZWdyYXRpb24gY2FuIGJlIG92ZXJyaWRkZW4uCisrdm9pZCBRV2F5bGFu ZERpc3BsYXk6OmluaXRpYWxpemUoKQorK3sKKysgICAgZm9yY2VSb3VuZFRyaXAoKTsKKysKKysg ICAgaWYgKCFtV2FpdGluZ1NjcmVlbnMuaXNFbXB0eSgpKSB7CisrICAgICAgICAvLyBHaXZlIHds X291dHB1dC5kb25lIGFuZCB6eGRnX291dHB1dF92MS5kb25lIGV2ZW50cyBhIGNoYW5jZSB0byBh cnJpdmUKKysgICAgICAgIGZvcmNlUm91bmRUcmlwKCk7CisrICAgIH0KKyB9CisgCisgdm9pZCBR V2F5bGFuZERpc3BsYXk6OmVuc3VyZVNjcmVlbigpCitAQCAtMjAzLDk4ICs0MTAsMzcgQEAgdm9p ZCBRV2F5bGFuZERpc3BsYXk6OmVuc3VyZVNjcmVlbigpCisgCisgdm9pZCBRV2F5bGFuZERpc3Bs YXk6OmNoZWNrRXJyb3IoKSBjb25zdAorIHsKKy0gICAgaW50IGVjb2RlID0gd2xfZGlzcGxheV9n ZXRfZXJyb3IobURpc3BsYXkpOworLSAgICBpZiAoKGVjb2RlID09IEVQSVBFIHx8IGVjb2RlID09 IEVDT05OUkVTRVQpKSB7CistICAgICAgICAvLyBzcGVjaWFsIGNhc2UgdGhpcyB0byBwcm92aWRl IGEgbmljZXIgZXJyb3IKKy0gICAgICAgIHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBjb25uZWN0aW9u IGJyb2tlLiBEaWQgdGhlIFdheWxhbmQgY29tcG9zaXRvciBkaWU/Iik7CistICAgIH0gZWxzZSB7 CistICAgICAgICBxV2FybmluZygiVGhlIFdheWxhbmQgY29ubmVjdGlvbiBleHBlcmllbmNlZCBh IGZhdGFsIGVycm9yOiAlcyIsIHN0cmVycm9yKGVjb2RlKSk7CistICAgIH0KKy0gICAgX2V4aXQo MSk7CisrICAgIGNoZWNrV2F5bGFuZEVycm9yKG1EaXNwbGF5KTsKKyB9CisgCisrLy8gQ2FsbGVk IGluIG1haW4gdGhyZWFkLCBlaXRoZXIgZnJvbSBxdWV1ZWQgc2lnbmFsIG9yIGRpcmVjdGx5Lgor IHZvaWQgUVdheWxhbmREaXNwbGF5OjpmbHVzaFJlcXVlc3RzKCkKKyB7CistICAgIGlmICh3bF9k aXNwbGF5X3ByZXBhcmVfcmVhZChtRGlzcGxheSkgPT0gMCkgeworLSAgICAgICAgd2xfZGlzcGxh eV9yZWFkX2V2ZW50cyhtRGlzcGxheSk7CistICAgIH0KKy0KKy0gICAgaWYgKHdsX2Rpc3BsYXlf ZGlzcGF0Y2hfcGVuZGluZyhtRGlzcGxheSkgPCAwKQorLSAgICAgICAgY2hlY2tFcnJvcigpOwor LQorLSAgICB7CistICAgICAgICBRUmVhZExvY2tlciBsb2NrZXIoJm1fZnJhbWVRdWV1ZUxvY2sp OworLSAgICAgICAgZm9yIChjb25zdCBGcmFtZVF1ZXVlICZxIDogbUV4dGVybmFsUXVldWVzKSB7 CistICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcihxLm11dGV4KTsKKy0gICAgICAgICAg ICB3aGlsZSAod2xfZGlzcGxheV9wcmVwYXJlX3JlYWRfcXVldWUobURpc3BsYXksIHEucXVldWUp ICE9IDApCistICAgICAgICAgICAgICAgIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVuZGlu ZyhtRGlzcGxheSwgcS5xdWV1ZSk7CistICAgICAgICAgICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50 cyhtRGlzcGxheSk7CistICAgICAgICAgICAgd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5k aW5nKG1EaXNwbGF5LCBxLnF1ZXVlKTsKKy0gICAgICAgIH0KKy0gICAgfQorLQorLSAgICB3bF9k aXNwbGF5X2ZsdXNoKG1EaXNwbGF5KTsKKy19CistCistdm9pZCBRV2F5bGFuZERpc3BsYXk6OmJs b2NraW5nUmVhZEV2ZW50cygpCisteworLSAgICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaChtRGlz cGxheSkgPCAwKQorLSAgICAgICAgY2hlY2tFcnJvcigpOworLX0KKy0KKy12b2lkIFFXYXlsYW5k RGlzcGxheTo6ZGVzdHJveUZyYW1lUXVldWUoY29uc3QgUVdheWxhbmREaXNwbGF5OjpGcmFtZVF1 ZXVlICZxKQorLXsKKy0gICAgUVdyaXRlTG9ja2VyIGxvY2tlcigmbV9mcmFtZVF1ZXVlTG9jayk7 CistICAgIGF1dG8gaXQgPSBzdGQ6OmZpbmRfaWYobUV4dGVybmFsUXVldWVzLmJlZ2luKCksCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgbUV4dGVybmFsUXVldWVzLmVuZCgpLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIFsmcV0gKGNvbnN0IFFXYXlsYW5kRGlzcGxheTo6RnJhbWVR dWV1ZSAmb3RoZXIpeyByZXR1cm4gb3RoZXIucXVldWUgPT0gcS5xdWV1ZTsgfSk7CistICAgIFFf QVNTRVJUKGl0ICE9IG1FeHRlcm5hbFF1ZXVlcy5lbmQoKSk7CistICAgIG1FeHRlcm5hbFF1ZXVl cy5lcmFzZShpdCk7CistICAgIGlmIChxLnF1ZXVlICE9IG51bGxwdHIpCistICAgICAgICB3bF9l dmVudF9xdWV1ZV9kZXN0cm95KHEucXVldWUpOworLSAgICBkZWxldGUgcS5tdXRleDsKKysgICAg bV9ldmVudFRocmVhZC0+cmVhZEFuZERpc3BhdGNoRXZlbnRzKCk7CisgfQorIAorLVFXYXlsYW5k RGlzcGxheTo6RnJhbWVRdWV1ZSBRV2F5bGFuZERpc3BsYXk6OmNyZWF0ZUZyYW1lUXVldWUoKQor Ky8vIFdlIGhhdmUgdG8gd2FpdCB1bnRpbCB3ZSBoYXZlIGFuIGV2ZW50RGlzcGF0Y2hlciBiZWZv cmUgY3JlYXRpbmcgdGhlIGV2ZW50VGhyZWFkLAorKy8vIG90aGVyd2lzZSBmb3JjZVJvdW5kVHJp cCgpIG1heSBibG9jayBpbnNpZGUgX2V2ZW50c19yZWFkKCkgYmVjYXVzZSBldmVudFRocmVhZCBp cworKy8vIHBvbGxpbmcuCisrdm9pZCBRV2F5bGFuZERpc3BsYXk6OmluaXRFdmVudFRocmVhZCgp CisgeworLSAgICBRV3JpdGVMb2NrZXIgbG9ja2VyKCZtX2ZyYW1lUXVldWVMb2NrKTsKKy0gICAg RnJhbWVRdWV1ZSBxe2NyZWF0ZUV2ZW50UXVldWUoKX07CistICAgIG1FeHRlcm5hbFF1ZXVlcy5h cHBlbmQocSk7CistICAgIHJldHVybiBxOworLX0KKysgICAgbV9ldmVudFRocmVhZC5yZXNldCgK KysgICAgICAgICAgICBuZXcgRXZlbnRUaHJlYWQobURpc3BsYXksIC8qIGRlZmF1bHQgcXVldWUg Ki8gbnVsbHB0ciwgRXZlbnRUaHJlYWQ6OkVtaXRUb0Rpc3BhdGNoKSk7CisrICAgIGNvbm5lY3Qo bV9ldmVudFRocmVhZC5nZXQoKSwgJkV2ZW50VGhyZWFkOjpuZWVkUmVhZEFuZERpc3BhdGNoLCB0 aGlzLAorKyAgICAgICAgICAgICZRV2F5bGFuZERpc3BsYXk6OmZsdXNoUmVxdWVzdHMsIFF0OjpR dWV1ZWRDb25uZWN0aW9uKTsKKysgICAgbV9ldmVudFRocmVhZC0+c3RhcnQoKTsKKyAKKy13bF9l dmVudF9xdWV1ZSAqUVdheWxhbmREaXNwbGF5OjpjcmVhdGVFdmVudFF1ZXVlKCkKKy17CistICAg IHJldHVybiB3bF9kaXNwbGF5X2NyZWF0ZV9xdWV1ZShtRGlzcGxheSk7CisrICAgIC8vIHdsX2Rp c3BsYXlfZGlzY29ubmVjdCgpIGZyZWUgdGhpcy4KKysgICAgbV9mcmFtZUV2ZW50UXVldWUgPSB3 bF9kaXNwbGF5X2NyZWF0ZV9xdWV1ZShtRGlzcGxheSk7CisrICAgIG1fZnJhbWVFdmVudFF1ZXVl VGhyZWFkLnJlc2V0KAorKyAgICAgICAgICAgIG5ldyBFdmVudFRocmVhZChtRGlzcGxheSwgbV9m cmFtZUV2ZW50UXVldWUsIEV2ZW50VGhyZWFkOjpTZWxmRGlzcGF0Y2gpKTsKKysgICAgbV9mcmFt ZUV2ZW50UXVldWVUaHJlYWQtPnN0YXJ0KCk7CisgfQorIAorLXZvaWQgUVdheWxhbmREaXNwbGF5 OjpkaXNwYXRjaFF1ZXVlV2hpbGUod2xfZXZlbnRfcXVldWUgKnF1ZXVlLCBzdGQ6OmZ1bmN0aW9u PGJvb2wgKCk+IGNvbmRpdGlvbiwgaW50IHRpbWVvdXQpCisrdm9pZCBRV2F5bGFuZERpc3BsYXk6 OmJsb2NraW5nUmVhZEV2ZW50cygpCisgeworLSAgICBpZiAoIWNvbmRpdGlvbigpKQorLSAgICAg ICAgcmV0dXJuOworLQorLSAgICBRRWxhcHNlZFRpbWVyIHRpbWVyOworLSAgICB0aW1lci5zdGFy dCgpOworLSAgICBzdHJ1Y3QgcG9sbGZkIHBGZCA9IHF0X21ha2VfcG9sbGZkKHdsX2Rpc3BsYXlf Z2V0X2ZkKG1EaXNwbGF5KSwgUE9MTElOKTsKKy0gICAgd2hpbGUgKHRpbWVvdXQgPT0gLTEgfHwg dGltZXIuZWxhcHNlZCgpIDwgdGltZW91dCkgeworLSAgICAgICAgd2hpbGUgKHdsX2Rpc3BsYXlf cHJlcGFyZV9yZWFkX3F1ZXVlKG1EaXNwbGF5LCBxdWV1ZSkgIT0gMCkKKy0gICAgICAgICAgICB3 bF9kaXNwbGF5X2Rpc3BhdGNoX3F1ZXVlX3BlbmRpbmcobURpc3BsYXksIHF1ZXVlKTsKKy0KKy0g ICAgICAgIHdsX2Rpc3BsYXlfZmx1c2gobURpc3BsYXkpOworLQorLSAgICAgICAgY29uc3QgaW50 IHJlbWFpbmluZyA9IHFNYXgodGltZW91dCAtIHRpbWVyLmVsYXBzZWQoKSwgMGxsKTsKKy0gICAg ICAgIGNvbnN0IGludCBwb2xsVGltZW91dCA9IHRpbWVvdXQgPT0gLTEgPyAtMSA6IHJlbWFpbmlu ZzsKKy0gICAgICAgIGlmIChxdF9wb2xsX21zZWNzKCZwRmQsIDEsIHBvbGxUaW1lb3V0KSA+IDAp CistICAgICAgICAgICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtRGlzcGxheSk7CistICAgICAg ICBlbHNlCistICAgICAgICAgICAgd2xfZGlzcGxheV9jYW5jZWxfcmVhZChtRGlzcGxheSk7Cist CistICAgICAgICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5 LCBxdWV1ZSkgPCAwKQorLSAgICAgICAgICAgIGNoZWNrRXJyb3IoKTsKKy0KKy0gICAgICAgIGlm ICghY29uZGl0aW9uKCkpCistICAgICAgICAgICAgYnJlYWs7CistICAgIH0KKysgICAgaWYgKHds X2Rpc3BsYXlfZGlzcGF0Y2gobURpc3BsYXkpIDwgMCkKKysgICAgICAgIGNoZWNrV2F5bGFuZEVy cm9yKG1EaXNwbGF5KTsKKyB9CisgCisgUVdheWxhbmRTY3JlZW4gKlFXYXlsYW5kRGlzcGxheTo6 c2NyZWVuRm9yT3V0cHV0KHN0cnVjdCB3bF9vdXRwdXQgKm91dHB1dCkgY29uc3QKK0BAIC0zNDUs NyArNDkxLDcgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2JhbCh1aW50MzJf dCBpZCwgY29uc3QgUVN0cmluZyAmaW50ZXJmYWNlLCB1aW4KKyAgICAgaWYgKGludGVyZmFjZSA9 PSBRU3RyaW5nTGl0ZXJhbCgid2xfb3V0cHV0IikpIHsKKyAgICAgICAgIG1XYWl0aW5nU2NyZWVu cyA8PCBuZXcgUVdheWxhbmRTY3JlZW4odGhpcywgdmVyc2lvbiwgaWQpOworICAgICB9IGVsc2Ug aWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgid2xfY29tcG9zaXRvciIpKSB7CistICAg ICAgICBtQ29tcG9zaXRvclZlcnNpb24gPSBxTWluKChpbnQpdmVyc2lvbiwgMyk7CisrICAgICAg ICBtQ29tcG9zaXRvclZlcnNpb24gPSBxTWluKChpbnQpdmVyc2lvbiwgNCk7CisgICAgICAgICBt Q29tcG9zaXRvci5pbml0KHJlZ2lzdHJ5LCBpZCwgbUNvbXBvc2l0b3JWZXJzaW9uKTsKKyAgICAg fSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX3NobSIpKSB7CisgICAg ICAgICBtU2htLnJlc2V0KG5ldyBRV2F5bGFuZFNobSh0aGlzLCB2ZXJzaW9uLCBpZCkpOworQEAg LTM1NCw3ICs1MDAsNyBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVnaXN0cnlfZ2xvYmFsKHVp bnQzMl90IGlkLCBjb25zdCBRU3RyaW5nICZpbnRlcmZhY2UsIHVpbgorICAgICAgICAgbUlucHV0 RGV2aWNlcy5hcHBlbmQoaW5wdXREZXZpY2UpOworICNpZiBRVF9DT05GSUcod2F5bGFuZF9kYXRh ZGV2aWNlKQorICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgid2xf ZGF0YV9kZXZpY2VfbWFuYWdlciIpKSB7CistICAgICAgICBtRG5kU2VsZWN0aW9uSGFuZGxlci5y ZXNldChuZXcgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcih0aGlzLCBpZCkpOworKyAgICAgICAg bURuZFNlbGVjdGlvbkhhbmRsZXIucmVzZXQobmV3IFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIo dGhpcywgdmVyc2lvbiwgaWQpKTsKKyAjZW5kaWYKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2Ug PT0gUVN0cmluZ0xpdGVyYWwoInF0X3N1cmZhY2VfZXh0ZW5zaW9uIikpIHsKKyAgICAgICAgIG1X aW5kb3dFeHRlbnNpb24ucmVzZXQobmV3IFF0V2F5bGFuZDo6cXRfc3VyZmFjZV9leHRlbnNpb24o cmVnaXN0cnksIGlkLCAxKSk7CitAQCAtMzY5LDYgKzUxNSw4IEBAIHZvaWQgUVdheWxhbmREaXNw bGF5OjpyZWdpc3RyeV9nbG9iYWwodWludDMyX3QgaWQsIGNvbnN0IFFTdHJpbmcgJmludGVyZmFj ZSwgdWluCisgI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3NlbGVjdGlvbikK KyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoInp3cF9wcmltYXJ5 X3NlbGVjdGlvbl9kZXZpY2VfbWFuYWdlcl92MSIpKSB7CisgICAgICAgICBtUHJpbWFyeVNlbGVj dGlvbk1hbmFnZXIucmVzZXQobmV3IFFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZU1hbmFn ZXJWMSh0aGlzLCBpZCwgMSkpOworKyAgICAgICAgZm9yIChRV2F5bGFuZElucHV0RGV2aWNlICpp bnB1dERldmljZSA6IHFBc0NvbnN0KG1JbnB1dERldmljZXMpKQorKyAgICAgICAgICAgIGlucHV0 RGV2aWNlLT5zZXRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlKG1QcmltYXJ5U2VsZWN0aW9uTWFuYWdl ci0+Y3JlYXRlRGV2aWNlKGlucHV0RGV2aWNlKSk7CisgI2VuZGlmCisgICAgIH0gZWxzZSBpZiAo aW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YyIikg JiYgIW1DbGllbnRTaWRlSW5wdXRDb250ZXh0UmVxdWVzdGVkKSB7CisgICAgICAgICBtVGV4dElu cHV0TWFuYWdlci5yZXNldChuZXcgUXRXYXlsYW5kOjp6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3Yy KHJlZ2lzdHJ5LCBpZCwgMSkpOworQEAgLTQyNyw2ICs1NzUsMTMgQEAgdm9pZCBRV2F5bGFuZERp c3BsYXk6OnJlZ2lzdHJ5X2dsb2JhbF9yZW1vdmUodWludDMyX3QgaWQpCisgICAgICAgICAgICAg ICAgICAgICBpbnB1dERldmljZS0+c2V0VGV4dElucHV0KG51bGxwdHIpOworICAgICAgICAgICAg ICAgICBtV2F5bGFuZEludGVncmF0aW9uLT5yZWNvbmZpZ3VyZUlucHV0Q29udGV4dCgpOworICAg ICAgICAgICAgIH0KKysjaWYgUVRfQ09ORklHKHdheWxhbmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0 aW9uKQorKyAgICAgICAgICAgIGlmIChnbG9iYWwuaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFs KCJ6d3BfcHJpbWFyeV9zZWxlY3Rpb25fZGV2aWNlX21hbmFnZXJfdjEiKSkgeworKyAgICAgICAg ICAgICAgICBtUHJpbWFyeVNlbGVjdGlvbk1hbmFnZXIucmVzZXQoKTsKKysgICAgICAgICAgICAg ICAgZm9yIChRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmljZSA6IHFBc0NvbnN0KG1JbnB1 dERldmljZXMpKQorKyAgICAgICAgICAgICAgICAgICAgaW5wdXREZXZpY2UtPnNldFByaW1hcnlT ZWxlY3Rpb25EZXZpY2UobnVsbHB0cik7CisrICAgICAgICAgICAgfQorKyNlbmRpZgorICAgICAg ICAgICAgIG1HbG9iYWxzLnJlbW92ZUF0KGkpOworICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgfQorQEAgLTQ1Miw5ICs2MDcsMTAgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmFkZFJlZ2lz dHJ5TGlzdGVuZXIoUmVnaXN0cnlMaXN0ZW5lciBsaXN0ZW5lciwgdm9pZCAqZGF0YSkKKyAKKyB2 b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVtb3ZlTGlzdGVuZXIoUmVnaXN0cnlMaXN0ZW5lciBsaXN0 ZW5lciwgdm9pZCAqZGF0YSkKKyB7CistICAgIHN0ZDo6cmVtb3ZlX2lmKG1SZWdpc3RyeUxpc3Rl bmVycy5iZWdpbigpLCBtUmVnaXN0cnlMaXN0ZW5lcnMuZW5kKCksIFs9XShMaXN0ZW5lciBsKXsK KysgICAgYXV0byBpdGVyID0gc3RkOjpyZW1vdmVfaWYobVJlZ2lzdHJ5TGlzdGVuZXJzLmJlZ2lu KCksIG1SZWdpc3RyeUxpc3RlbmVycy5lbmQoKSwgWz1dKExpc3RlbmVyIGwpeworICAgICAgICAg cmV0dXJuIChsLmxpc3RlbmVyID09IGxpc3RlbmVyICYmIGwuZGF0YSA9PSBkYXRhKTsKKyAgICAg fSk7CisrICAgIG1SZWdpc3RyeUxpc3RlbmVycy5lcmFzZShpdGVyLCBtUmVnaXN0cnlMaXN0ZW5l cnMuZW5kKCkpOworIH0KKyAKKyB1aW50MzJfdCBRV2F5bGFuZERpc3BsYXk6OmN1cnJlbnRUaW1l TWlsbGlzZWMoKQorQEAgLTQ2Nyw1MCArNjIzLDkgQEAgdWludDMyX3QgUVdheWxhbmREaXNwbGF5 OjpjdXJyZW50VGltZU1pbGxpc2VjKCkKKyAgICAgcmV0dXJuIDA7CisgfQorIAorLXN0YXRpYyB2 b2lkCistc3luY19jYWxsYmFjayh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfY2FsbGJhY2sgKmNhbGxi YWNrLCB1aW50MzJfdCBzZXJpYWwpCisteworLSAgICBRX1VOVVNFRChzZXJpYWwpCistICAgIGJv b2wgKmRvbmUgPSBzdGF0aWNfY2FzdDxib29sICo+KGRhdGEpOworLQorLSAgICAqZG9uZSA9IHRy dWU7CistCistICAgIC8vIElmIHRoZSB3bF9jYWxsYmFjayBkb25lIGV2ZW50IGlzIHJlY2VpdmVk IGFmdGVyIHRoZSBjb25kaXRpb24gY2hlY2sgaW4gdGhlIHdoaWxlIGxvb3AgaW4KKy0gICAgLy8g Zm9yY2VSb3VuZFRyaXAoKSwgYnV0IGJlZm9yZSB0aGUgY2FsbCB0byBwcm9jZXNzRXZlbnRzLCB0 aGUgY2FsbCB0byBwcm9jZXNzRXZlbnRzIG1heSBibG9jaworLSAgICAvLyBmb3JldmVyIGlmIG5v IG1vcmUgZXZlbnRzIGFyZSBwb3N0ZWQgKGV2ZW50aG91Z2ggdGhlIGNhbGxiYWNrIGlzIGhhbmRs ZWQgaW4gcmVzcG9uc2UgdG8gdGhlCistICAgIC8vIGFib3V0VG9CbG9jayBzaWduYWwpLiBIZW5j ZSwgd2Ugd2FrZSB1cCB0aGUgZXZlbnQgZGlzcGF0Y2hlciBzbyBmb3JjZVJvdW5kVHJpcCBtYXkg cmV0dXJuLgorLSAgICAvLyAoUVRCVUctNjQ2OTYpCistICAgIGlmIChhdXRvICpkaXNwYXRjaGVy ID0gUVRocmVhZDo6Y3VycmVudFRocmVhZCgpLT5ldmVudERpc3BhdGNoZXIoKSkKKy0gICAgICAg IGRpc3BhdGNoZXItPndha2VVcCgpOworLQorLSAgICB3bF9jYWxsYmFja19kZXN0cm95KGNhbGxi YWNrKTsKKy19CistCistc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9jYWxsYmFja19saXN0ZW5lciBz eW5jX2xpc3RlbmVyID0geworLSAgICBzeW5jX2NhbGxiYWNrCistfTsKKy0KKyB2b2lkIFFXYXls YW5kRGlzcGxheTo6Zm9yY2VSb3VuZFRyaXAoKQorIHsKKy0gICAgLy8gd2xfZGlzcGxheV9yb3Vu ZHRyaXAoKSB3b3JrcyBvbiB0aGUgbWFpbiBxdWV1ZSBvbmx5LAorLSAgICAvLyBidXQgd2UgdXNl IGEgc2VwYXJhdGUgb25lLCBzbyBiYXNpY2FsbHkgcmVpbXBsZW1lbnQgaXQgaGVyZQorLSAgICBp bnQgcmV0ID0gMDsKKy0gICAgYm9vbCBkb25lID0gZmFsc2U7CistICAgIHdsX2NhbGxiYWNrICpj YWxsYmFjayA9IHdsX2Rpc3BsYXlfc3luYyhtRGlzcGxheSk7CistICAgIHdsX2NhbGxiYWNrX2Fk ZF9saXN0ZW5lcihjYWxsYmFjaywgJnN5bmNfbGlzdGVuZXIsICZkb25lKTsKKy0gICAgZmx1c2hS ZXF1ZXN0cygpOworLSAgICBpZiAoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpLT5ldmVudERpc3Bh dGNoZXIoKSkgeworLSAgICAgICAgd2hpbGUgKCFkb25lICYmIHJldCA+PSAwKSB7CistICAgICAg ICAgICAgUVRocmVhZDo6Y3VycmVudFRocmVhZCgpLT5ldmVudERpc3BhdGNoZXIoKS0+cHJvY2Vz c0V2ZW50cyhRRXZlbnRMb29wOjpXYWl0Rm9yTW9yZUV2ZW50cyk7CistICAgICAgICAgICAgcmV0 ID0gd2xfZGlzcGxheV9kaXNwYXRjaF9wZW5kaW5nKG1EaXNwbGF5KTsKKy0gICAgICAgIH0KKy0g ICAgfSBlbHNlIHsKKy0gICAgICAgIHdoaWxlICghZG9uZSAmJiByZXQgPj0gMCkKKy0gICAgICAg ICAgICByZXQgPSB3bF9kaXNwbGF5X2Rpc3BhdGNoKG1EaXNwbGF5KTsKKy0gICAgfQorLQorLSAg ICBpZiAocmV0ID09IC0xICYmICFkb25lKQorLSAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShj YWxsYmFjayk7CisrICAgICB3bF9kaXNwbGF5X3JvdW5kdHJpcChtRGlzcGxheSk7CisgfQorIAor IGJvb2wgUVdheWxhbmREaXNwbGF5OjpzdXBwb3J0c1dpbmRvd0RlY29yYXRpb24oKSBjb25zdAor QEAgLTU3NCwxNCArNjg5LDEwIEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpoYW5kbGVLZXlib2Fy ZEZvY3VzQ2hhbmdlZChRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmljCisgICAgIGlmICht TGFzdEtleWJvYXJkRm9jdXMgPT0ga2V5Ym9hcmRGb2N1cykKKyAgICAgICAgIHJldHVybjsKKyAK Ky0gICAgaWYgKG1XYXlsYW5kSW50ZWdyYXRpb24tPm1TaGVsbEludGVncmF0aW9uKSB7CistICAg ICAgICBtV2F5bGFuZEludGVncmF0aW9uLT5tU2hlbGxJbnRlZ3JhdGlvbi0+aGFuZGxlS2V5Ym9h cmRGb2N1c0NoYW5nZWQoa2V5Ym9hcmRGb2N1cywgbUxhc3RLZXlib2FyZEZvY3VzKTsKKy0gICAg fSBlbHNlIHsKKy0gICAgICAgIGlmIChrZXlib2FyZEZvY3VzKQorLSAgICAgICAgICAgIGhhbmRs ZVdpbmRvd0FjdGl2YXRlZChrZXlib2FyZEZvY3VzKTsKKy0gICAgICAgIGlmIChtTGFzdEtleWJv YXJkRm9jdXMpCistICAgICAgICAgICAgaGFuZGxlV2luZG93RGVhY3RpdmF0ZWQobUxhc3RLZXli b2FyZEZvY3VzKTsKKy0gICAgfQorKyAgICBpZiAoa2V5Ym9hcmRGb2N1cykKKysgICAgICAgIGhh bmRsZVdpbmRvd0FjdGl2YXRlZChrZXlib2FyZEZvY3VzKTsKKysgICAgaWYgKG1MYXN0S2V5Ym9h cmRGb2N1cykKKysgICAgICAgIGhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG1MYXN0S2V5Ym9hcmRG b2N1cyk7CisgCisgICAgIG1MYXN0S2V5Ym9hcmRGb2N1cyA9IGtleWJvYXJkRm9jdXM7CisgfQor QEAgLTYwMCw2ICs3MTEsMTkgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmhhbmRsZVdheWxhbmRT eW5jKCkKKyAgICAgUVdpbmRvdyAqYWN0aXZlV2luZG93ID0gbUFjdGl2ZVdpbmRvd3MuZW1wdHko KSA/IG51bGxwdHIgOiBtQWN0aXZlV2luZG93cy5sYXN0KCktPndpbmRvdygpOworICAgICBpZiAo YWN0aXZlV2luZG93ICE9IFFHdWlBcHBsaWNhdGlvbjo6Zm9jdXNXaW5kb3coKSkKKyAgICAgICAg IFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdpbmRvd0FjdGl2YXRlZChhY3RpdmVXaW5k b3cpOworKworKyAgICBpZiAoIWFjdGl2ZVdpbmRvdykgeworKyAgICAgICAgaWYgKGxhc3RJbnB1 dERldmljZSgpKSB7CisrI2lmIFFUX0NPTkZJRyhjbGlwYm9hcmQpCisrICAgICAgICAgICAgaWYg KGF1dG8gKmRhdGFEZXZpY2UgPSBsYXN0SW5wdXREZXZpY2UoKS0+ZGF0YURldmljZSgpKQorKyAg ICAgICAgICAgICAgICBkYXRhRGV2aWNlLT5pbnZhbGlkYXRlU2VsZWN0aW9uT2ZmZXIoKTsKKysj ZW5kaWYKKysjaWYgUVRfQ09ORklHKHdheWxhbmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0aW9uKQor KyAgICAgICAgICAgIGlmIChhdXRvICpkZXZpY2UgPSBsYXN0SW5wdXREZXZpY2UoKS0+cHJpbWFy eVNlbGVjdGlvbkRldmljZSgpKQorKyAgICAgICAgICAgICAgICBkZXZpY2UtPmludmFsaWRhdGVT ZWxlY3Rpb25PZmZlcigpOworKyNlbmRpZgorKyAgICAgICAgfQorKyAgICB9CisgfQorIAorIGNv bnN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIFFXYXlsYW5kRGlzcGxheTo6c3luY0NhbGxiYWNrTGlz dGVuZXIgPSB7CitAQCAtNjI2LDYgKzc1MCwxMyBAQCBRV2F5bGFuZElucHV0RGV2aWNlICpRV2F5 bGFuZERpc3BsYXk6OmRlZmF1bHRJbnB1dERldmljZSgpIGNvbnN0CisgICAgIHJldHVybiBtSW5w dXREZXZpY2VzLmlzRW1wdHkoKSA/IDAgOiBtSW5wdXREZXZpY2VzLmZpcnN0KCk7CisgfQorIAor K2Jvb2wgUVdheWxhbmREaXNwbGF5Ojppc0tleWJvYXJkQXZhaWxhYmxlKCkgY29uc3QKKyt7Cisr ICAgIHJldHVybiBzdGQ6OmFueV9vZigKKysgICAgICAgICAgICBtSW5wdXREZXZpY2VzLmNvbnN0 QmVnaW4oKSwgbUlucHV0RGV2aWNlcy5jb25zdEVuZCgpLAorKyAgICAgICAgICAgIFt0aGlzXShj b25zdCBRV2F5bGFuZElucHV0RGV2aWNlICpkZXZpY2UpIHsgcmV0dXJuIGRldmljZS0+a2V5Ym9h cmQoKSAhPSBudWxscHRyOyB9KTsKKyt9CisrCisgI2lmIFFUX0NPTkZJRyhjdXJzb3IpCisgCisg UVdheWxhbmRDdXJzb3IgKlFXYXlsYW5kRGlzcGxheTo6d2F5bGFuZEN1cnNvcigpCitAQCAtNjUy LDQgKzc4Myw2IEBAIFFXYXlsYW5kQ3Vyc29yVGhlbWUgKlFXYXlsYW5kRGlzcGxheTo6bG9hZEN1 cnNvclRoZW1lKGNvbnN0IFFTdHJpbmcgJm5hbWUsIGludCBwCisgCisgfSAvLyBuYW1lc3BhY2Ug UXRXYXlsYW5kQ2xpZW50CisgCisrI2luY2x1ZGUgInF3YXlsYW5kZGlzcGxheS5tb2MiCisrCisg UVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGlzcGxheV9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXlfcC5o CitpbmRleCAzYjA5MmJjOC4uNDJiYzY2MWQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGRpc3BsYXlfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRpc3BsYXlfcC5oCitAQCAtMTA5LDYgKzEwOSw3IEBAIGNsYXNzIFFXYXlsYW5kU3VyZmFj ZTsKKyBjbGFzcyBRV2F5bGFuZFNoZWxsSW50ZWdyYXRpb247CisgY2xhc3MgUVdheWxhbmRDdXJz b3I7CisgY2xhc3MgUVdheWxhbmRDdXJzb3JUaGVtZTsKKytjbGFzcyBFdmVudFRocmVhZDsKKyAK KyB0eXBlZGVmIHZvaWQgKCpSZWdpc3RyeUxpc3RlbmVyKSh2b2lkICpkYXRhLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB3bF9yZWdpc3RyeSAqcmVnaXN0cnksCitA QCAtMTIwLDE1ICsxMjEsMTEgQEAgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdheWxh bmREaXNwbGF5IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBRdFdheWxhbmQKKyAgICAgUV9PQkpF Q1QKKyAKKyBwdWJsaWM6CistICAgIHN0cnVjdCBGcmFtZVF1ZXVlIHsKKy0gICAgICAgIEZyYW1l UXVldWUod2xfZXZlbnRfcXVldWUgKnEgPSBudWxscHRyKSA6IHF1ZXVlKHEpLCBtdXRleChuZXcg UU11dGV4KSB7fQorLSAgICAgICAgd2xfZXZlbnRfcXVldWUgKnF1ZXVlOworLSAgICAgICAgUU11 dGV4ICptdXRleDsKKy0gICAgfTsKKy0KKyAgICAgUVdheWxhbmREaXNwbGF5KFFXYXlsYW5kSW50 ZWdyYXRpb24gKndheWxhbmRJbnRlZ3JhdGlvbik7CisgICAgIH5RV2F5bGFuZERpc3BsYXkodm9p ZCkgb3ZlcnJpZGU7CisgCisrICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworKworICNpZiBRVF9DT05G SUcoeGtiY29tbW9uKQorICAgICBzdHJ1Y3QgeGtiX2NvbnRleHQgKnhrYkNvbnRleHQoKSBjb25z dCB7IHJldHVybiBtWGtiQ29udGV4dC5nZXQoKTsgfQorICNlbmRpZgorQEAgLTIxMCwxMSArMjA3 LDExIEBAIHB1YmxpYzoKKyAgICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5 bGFuZElucHV0RGV2aWNlICppbnB1dERldmljZSk7CisgICAgIHZvaWQgaGFuZGxlV2luZG93RGVz dHJveWVkKFFXYXlsYW5kV2luZG93ICp3aW5kb3cpOworIAorLSAgICB3bF9ldmVudF9xdWV1ZSAq Y3JlYXRlRXZlbnRRdWV1ZSgpOworLSAgICBGcmFtZVF1ZXVlIGNyZWF0ZUZyYW1lUXVldWUoKTsK Ky0gICAgdm9pZCBkZXN0cm95RnJhbWVRdWV1ZShjb25zdCBGcmFtZVF1ZXVlICZxKTsKKy0gICAg dm9pZCBkaXNwYXRjaFF1ZXVlV2hpbGUod2xfZXZlbnRfcXVldWUgKnF1ZXVlLCBzdGQ6OmZ1bmN0 aW9uPGJvb2woKT4gY29uZGl0aW9uLCBpbnQgdGltZW91dCA9IC0xKTsKKysgICAgd2xfZXZlbnRf cXVldWUgKmZyYW1lRXZlbnRRdWV1ZSgpIHsgcmV0dXJuIG1fZnJhbWVFdmVudFF1ZXVlOyB9Owor KworKyAgICBib29sIGlzS2V5Ym9hcmRBdmFpbGFibGUoKSBjb25zdDsKKyAKKysgICAgdm9pZCBp bml0RXZlbnRUaHJlYWQoKTsKKyBwdWJsaWMgc2xvdHM6CisgICAgIHZvaWQgYmxvY2tpbmdSZWFk RXZlbnRzKCk7CisgICAgIHZvaWQgZmx1c2hSZXF1ZXN0cygpOworQEAgLTIzNyw2ICsyMzQsOSBA QCBwcml2YXRlOgorICAgICB9OworIAorICAgICBzdHJ1Y3Qgd2xfZGlzcGxheSAqbURpc3BsYXkg PSBudWxscHRyOworKyAgICBRU2NvcGVkUG9pbnRlcjxFdmVudFRocmVhZD4gbV9ldmVudFRocmVh ZDsKKysgICAgd2xfZXZlbnRfcXVldWUgKm1fZnJhbWVFdmVudFF1ZXVlID0gbnVsbHB0cjsKKysg ICAgUVNjb3BlZFBvaW50ZXI8RXZlbnRUaHJlYWQ+IG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkOwor ICAgICBRdFdheWxhbmQ6OndsX2NvbXBvc2l0b3IgbUNvbXBvc2l0b3I7CisgICAgIFFTY29wZWRQ b2ludGVyPFFXYXlsYW5kU2htPiBtU2htOworICAgICBRTGlzdDxRV2F5bGFuZFNjcmVlbiAqPiBt V2FpdGluZ1NjcmVlbnM7CitAQCAtMjczLDExICsyNzMsOSBAQCBwcml2YXRlOgorICAgICBRV2F5 bGFuZElucHV0RGV2aWNlICptTGFzdElucHV0RGV2aWNlID0gbnVsbHB0cjsKKyAgICAgUVBvaW50 ZXI8UVdheWxhbmRXaW5kb3c+IG1MYXN0SW5wdXRXaW5kb3c7CisgICAgIFFQb2ludGVyPFFXYXls YW5kV2luZG93PiBtTGFzdEtleWJvYXJkRm9jdXM7CistICAgIFFWZWN0b3I8UVdheWxhbmRXaW5k b3cgKj4gbUFjdGl2ZVdpbmRvd3M7CistICAgIFFWZWN0b3I8RnJhbWVRdWV1ZT4gbUV4dGVybmFs UXVldWVzOworKyAgICBRTGlzdDxRV2F5bGFuZFdpbmRvdyAqPiBtQWN0aXZlV2luZG93czsKKyAg ICAgc3RydWN0IHdsX2NhbGxiYWNrICptU3luY0NhbGxiYWNrID0gbnVsbHB0cjsKKyAgICAgc3Rh dGljIGNvbnN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIHN5bmNDYWxsYmFja0xpc3RlbmVyOworLSAg ICBRUmVhZFdyaXRlTG9jayBtX2ZyYW1lUXVldWVMb2NrOworIAorICAgICBib29sIG1DbGllbnRT aWRlSW5wdXRDb250ZXh0UmVxdWVzdGVkID0gIVFQbGF0Zm9ybUlucHV0Q29udGV4dEZhY3Rvcnk6 OnJlcXVlc3RlZCgpLmlzTnVsbCgpOworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZG5kLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kLmNw cAoraW5kZXggNjUzNWFhMTYuLjdjNTNmNWZhIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkbmQuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGRuZC5jcHAKK0BAIC02Niw3ICs2Niw3IEBAIHZvaWQgUVdheWxhbmREcmFnOjpzdGFydERyYWco KQorIHsKKyAgICAgUUJhc2ljRHJhZzo6c3RhcnREcmFnKCk7CisgICAgIFFXYXlsYW5kV2luZG93 ICppY29uID0gc3RhdGljX2Nhc3Q8UVdheWxhbmRXaW5kb3cgKj4oc2hhcGVkUGl4bWFwV2luZG93 KCktPmhhbmRsZSgpKTsKKy0gICAgaWYgKG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCkt PmRhdGFEZXZpY2UoKS0+c3RhcnREcmFnKGRyYWcoKS0+bWltZURhdGEoKSwgaWNvbikpIHsKKysg ICAgaWYgKG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPmRhdGFEZXZpY2UoKS0+c3Rh cnREcmFnKGRyYWcoKS0+bWltZURhdGEoKSwgZHJhZygpLT5zdXBwb3J0ZWRBY3Rpb25zKCksIGlj b24pKSB7CisgICAgICAgICBpY29uLT5hZGRBdHRhY2hPZmZzZXQoLWRyYWcoKS0+aG90U3BvdCgp KTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIC8vIENhbmNlbGxpbmcgaW1tZWRpYXRlbHkgZG9l cyBub3Qgd29yaywgc2luY2UgdGhlIGV2ZW50IGxvb3AgZm9yIFFEcmFnOjpleGVjIGlzIHN0YXJ0 ZWQKK0BAIC04MCw2ICs4MCw5IEBAIHZvaWQgUVdheWxhbmREcmFnOjpjYW5jZWwoKQorICAgICBR QmFzaWNEcmFnOjpjYW5jZWwoKTsKKyAKKyAgICAgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZp Y2UoKS0+ZGF0YURldmljZSgpLT5jYW5jZWxEcmFnKCk7CisrCisrICAgIGlmIChkcmFnKCkpCisr ICAgICAgICBkcmFnKCktPmRlbGV0ZUxhdGVyKCk7CisgfQorIAorIHZvaWQgUVdheWxhbmREcmFn Ojptb3ZlKGNvbnN0IFFQb2ludCAmZ2xvYmFsUG9zLCBRdDo6TW91c2VCdXR0b25zIGIsIFF0OjpL ZXlib2FyZE1vZGlmaWVycyBtb2RzKQorQEAgLTEwMywzMyArMTA2LDQxIEBAIHZvaWQgUVdheWxh bmREcmFnOjplbmREcmFnKCkKKyAgICAgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+ aGFuZGxlRW5kRHJhZygpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kRHJhZzo6dXBkYXRlVGFyZ2V0 KGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlKQorK3ZvaWQgUVdheWxhbmREcmFnOjpzZXRSZXNwb25z ZShib29sIGFjY2VwdGVkKQorIHsKKy0gICAgc2V0Q2FuRHJvcCghbWltZVR5cGUuaXNFbXB0eSgp KTsKKy0KKy0gICAgaWYgKGNhbkRyb3AoKSkgeworLSAgICAgICAgdXBkYXRlQ3Vyc29yKGRlZmF1 bHRBY3Rpb24oZHJhZygpLT5zdXBwb3J0ZWRBY3Rpb25zKCksIG1fZGlzcGxheS0+Y3VycmVudElu cHV0RGV2aWNlKCktPm1vZGlmaWVycygpKSk7CistICAgIH0gZWxzZSB7CistICAgICAgICB1cGRh dGVDdXJzb3IoUXQ6Oklnbm9yZUFjdGlvbik7CistICAgIH0KKysgICAgLy8gVGhpcyBtZXRob2Qg aXMgdXNlZCBmb3Igb2xkIERhdGFEZXZpY2VzIHdoZXJlIHRoZSBkcmFnIGFjdGlvbiBpcyBub3Qg Y29tbXVuaWNhdGVkCisrICAgIFF0OjpEcm9wQWN0aW9uIGFjdGlvbiA9IGRlZmF1bHRBY3Rpb24o ZHJhZygpLT5zdXBwb3J0ZWRBY3Rpb25zKCksIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNl KCktPm1vZGlmaWVycygpKTsKKysgICAgc2V0UmVzcG9uc2UoUVBsYXRmb3JtRHJvcFF0UmVzcG9u c2UoYWNjZXB0ZWQsIGFjdGlvbikpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kRHJhZzo6c2V0UmVz cG9uc2UoY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlKQorK3ZvaWQgUVdh eWxhbmREcmFnOjpzZXRSZXNwb25zZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVz cG9uc2UpCisgeworICAgICBzZXRDYW5Ecm9wKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSk7CisgCisg ICAgIGlmIChjYW5Ecm9wKCkpIHsKKy0gICAgICAgIHVwZGF0ZUN1cnNvcihkZWZhdWx0QWN0aW9u KGRyYWcoKS0+c3VwcG9ydGVkQWN0aW9ucygpLCBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmlj ZSgpLT5tb2RpZmllcnMoKSkpOworKyAgICAgICAgdXBkYXRlQ3Vyc29yKHJlc3BvbnNlLmFjY2Vw dGVkQWN0aW9uKCkpOworICAgICB9IGVsc2UgeworICAgICAgICAgdXBkYXRlQ3Vyc29yKFF0OjpJ Z25vcmVBY3Rpb24pOworICAgICB9CisgfQorIAorLXZvaWQgUVdheWxhbmREcmFnOjpmaW5pc2hE cmFnKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSkKKyt2b2lkIFFXYXls YW5kRHJhZzo6c2V0RHJvcFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZy ZXNwb25zZSkKKyB7CisgICAgIHNldEV4ZWN1dGVkRHJvcEFjdGlvbihyZXNwb25zZS5hY2NlcHRl ZEFjdGlvbigpKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZERyYWc6OmZpbmlzaERyYWcoKQorK3sK KyAgICAgUUtleUV2ZW50IGV2ZW50KFFFdmVudDo6S2V5UHJlc3MsIFF0OjpLZXlfRXNjYXBlLCBR dDo6Tm9Nb2RpZmllcik7CisgICAgIGV2ZW50RmlsdGVyKHNoYXBlZFBpeG1hcFdpbmRvdygpLCAm ZXZlbnQpOworKworKyAgICBpZiAoZHJhZygpKQorKyAgICAgICAgZHJhZygpLT5kZWxldGVMYXRl cigpOworK30KKysKKytib29sIFFXYXlsYW5kRHJhZzo6b3duc0RyYWdPYmplY3QoKSBjb25zdAor K3sKKysgICAgcmV0dXJuIHRydWU7CisgfQorIAorIH0KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZGRuZF9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGRuZF9wLmgKK2luZGV4IDQ3NGZlMmFiLi40NmY2MjlhYyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRkbmRfcC5oCitAQCAtNzEsOSArNzEsMTAgQEAgcHVibGljOgorICAgICBRV2F5bGFu ZERyYWcoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KTsKKyAgICAgflFXYXlsYW5kRHJhZygpIG92 ZXJyaWRlOworIAorLSAgICB2b2lkIHVwZGF0ZVRhcmdldChjb25zdCBRU3RyaW5nICZtaW1lVHlw ZSk7CistICAgIHZvaWQgc2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2Ug JnJlc3BvbnNlKTsKKy0gICAgdm9pZCBmaW5pc2hEcmFnKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJl c3BvbnNlICZyZXNwb25zZSk7CisrICAgIHZvaWQgc2V0UmVzcG9uc2UoYm9vbCBhY2NlcHRlZCk7 CisrICAgIHZvaWQgc2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJl c3BvbnNlKTsKKysgICAgdm9pZCBzZXREcm9wUmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0 UmVzcG9uc2UgJnJlc3BvbnNlKTsKKysgICAgdm9pZCBmaW5pc2hEcmFnKCk7CisgCisgcHJvdGVj dGVkOgorICAgICB2b2lkIHN0YXJ0RHJhZygpIG92ZXJyaWRlOworQEAgLTgyLDYgKzgzLDcgQEAg cHJvdGVjdGVkOgorICAgICB2b2lkIGRyb3AoY29uc3QgUVBvaW50ICZnbG9iYWxQb3MsIFF0OjpN b3VzZUJ1dHRvbnMgYiwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZHMpIG92ZXJyaWRlOworICAg ICB2b2lkIGVuZERyYWcoKSBvdmVycmlkZTsKKyAKKysgICAgYm9vbCBvd25zRHJhZ09iamVjdCgp IGNvbnN0IG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5kRGlzcGxheSAqbV9k aXNwbGF5ID0gbnVsbHB0cjsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGlucHV0ZGV2aWNlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5wdXRk ZXZpY2UuY3BwCitpbmRleCA2MTNmZTg2Mi4uNGI5MGRlODQgMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGlucHV0ZGV2aWNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAKK0BAIC02ODUsNiArNjg1LDExIEBAIHB1 YmxpYzoKKyAKKyB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OlBvaW50ZXI6OnBvaW50ZXJfbGVh dmUodWludDMyX3QgdGltZSwgc3RydWN0IHdsX3N1cmZhY2UgKnN1cmZhY2UpCisgeworKyAgICBp bnZhbGlkYXRlRm9jdXMoKTsKKysgICAgbUJ1dHRvbnMgPSBRdDo6Tm9CdXR0b247CisrCisrICAg IG1QYXJlbnQtPm1UaW1lID0gdGltZTsKKysKKyAgICAgLy8gVGhlIGV2ZW50IG1heSBhcnJpdmUg YWZ0ZXIgZGVzdHJveWluZyB0aGUgd2luZG93LCBpbmRpY2F0ZWQgYnkKKyAgICAgLy8gYSBudWxs IHN1cmZhY2UuCisgICAgIGlmICghc3VyZmFjZSkKK0BAIC02OTYsMTEgKzcwMSw2IEBAIHZvaWQg UVdheWxhbmRJbnB1dERldmljZTo6UG9pbnRlcjo6cG9pbnRlcl9sZWF2ZSh1aW50MzJfdCB0aW1l LCBzdHJ1Y3Qgd2xfc3VyZmFjCisgCisgICAgIGlmICghUVdheWxhbmRXaW5kb3c6Om1vdXNlR3Jh YigpKQorICAgICAgICAgc2V0RnJhbWVFdmVudChuZXcgTGVhdmVFdmVudCh3aW5kb3csIG1TdXJm YWNlUG9zLCBtR2xvYmFsUG9zKSk7CistCistICAgIGludmFsaWRhdGVGb2N1cygpOworLSAgICBt QnV0dG9ucyA9IFF0OjpOb0J1dHRvbjsKKy0KKy0gICAgbVBhcmVudC0+bVRpbWUgPSB0aW1lOwor IH0KKyAKKyBjbGFzcyBNb3Rpb25FdmVudCA6IHB1YmxpYyBRV2F5bGFuZFBvaW50ZXJFdmVudAor QEAgLTEzMDAsMTQgKzEzMDAsNiBAQCB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OktleWJvYXJk OjpoYW5kbGVGb2N1c0Rlc3Ryb3llZCgpCisgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpLZXli b2FyZDo6aGFuZGxlRm9jdXNMb3N0KCkKKyB7CisgICAgIG1Gb2N1cyA9IG51bGxwdHI7CistI2lm IFFUX0NPTkZJRyhjbGlwYm9hcmQpCistICAgIGlmIChhdXRvICpkYXRhRGV2aWNlID0gbVBhcmVu dC0+ZGF0YURldmljZSgpKQorLSAgICAgICAgZGF0YURldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlv bk9mZmVyKCk7CistI2VuZGlmCistI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5 X3NlbGVjdGlvbikKKy0gICAgaWYgKGF1dG8gKmRldmljZSA9IG1QYXJlbnQtPnByaW1hcnlTZWxl Y3Rpb25EZXZpY2UoKSkKKy0gICAgICAgIGRldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9mZmVy KCk7CistI2VuZGlmCisgICAgIG1QYXJlbnQtPm1RRGlzcGxheS0+aGFuZGxlS2V5Ym9hcmRGb2N1 c0NoYW5nZWQobVBhcmVudCk7CisgICAgIG1SZXBlYXRUaW1lci5zdG9wKCk7CisgfQorQEAgLTEz OTYsNiArMTM4OCw3IEBAIHZvaWQgUVdheWxhbmRJbnB1dERldmljZTo6VG91Y2g6OnRvdWNoX2Nh bmNlbCgpCisgICAgIGlmICh0b3VjaEV4dCkKKyAgICAgICAgIHRvdWNoRXh0LT50b3VjaENhbmNl bGVkKCk7CisgCisrICAgIG1Gb2N1cyA9IG51bGxwdHI7CisgICAgIFFXaW5kb3dTeXN0ZW1JbnRl cmZhY2U6OmhhbmRsZVRvdWNoQ2FuY2VsRXZlbnQobnVsbHB0ciwgbVBhcmVudC0+bVRvdWNoRGV2 aWNlKTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRp bnRlZ3JhdGlvbi5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9u LmNwcAoraW5kZXggYzUzY2NiNzguLjU0ODYxNjAwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kaW50ZWdyYXRpb24uY3BwCitAQCAtMTI1LDYgKzEyNSw5IEBAIFFXYXlsYW5k SW50ZWdyYXRpb246OlFXYXlsYW5kSW50ZWdyYXRpb24oKQorICNlbmRpZgorIAorICAgICByZWNv bmZpZ3VyZUlucHV0Q29udGV4dCgpOworKworKyAgICBRV2F5bGFuZFdpbmRvdzo6Zml4ZWRUb3Bs ZXZlbFBvc2l0aW9ucyA9CisrICAgICAgICAgICAgIXFFbnZpcm9ubWVudFZhcmlhYmxlSXNTZXQo IlFUX1dBWUxBTkRfRElTQUJMRV9GSVhFRF9QT1NJVElPTlMiKTsKKyB9CisgCisgUVdheWxhbmRJ bnRlZ3JhdGlvbjo6flFXYXlsYW5kSW50ZWdyYXRpb24oKQorQEAgLTE5MiwxNCArMTk1LDE4IEBA IFFBYnN0cmFjdEV2ZW50RGlzcGF0Y2hlciAqUVdheWxhbmRJbnRlZ3JhdGlvbjo6Y3JlYXRlRXZl bnREaXNwYXRjaGVyKCkgY29uc3QKKyAKKyB2b2lkIFFXYXlsYW5kSW50ZWdyYXRpb246OmluaXRp YWxpemUoKQorIHsKKysgICAgbURpc3BsYXktPmluaXRFdmVudFRocmVhZCgpOworKworKyAgICAv LyBDYWxsIGFmdGVyIGV2ZW50RGlzcGF0Y2hlciBpcyBmdWxseSBjb25uZWN0ZWQsIGZvciBRV2F5 bGFuZERpc3BsYXk6OmZvcmNlUm91bmRUcmlwKCkKKysgICAgbURpc3BsYXktPmluaXRpYWxpemUo KTsKKysKKysgICAgLy8gQnV0IHRoZSBhYm91dFRvQmxvY2soKSBhbmQgYXdha2UoKSBzaG91bGQg YmUgY29ubmVjdGVkIGFmdGVyIGluaXRpYWxpemVQbGF0Zm9ybSgpLgorKyAgICAvLyBPdGhlcndp c2UgdGhlIGNvbm5lY3RlZCBmbHVzaFJlcXVlc3RzKCkgbWF5IGNvbnN1bWVzIHVwIGFsbCBldmVu dHMgYmVmb3JlIHByb2Nlc3NFdmVudHMgc3RhcnRzIHRvIHdhaXQsCisrICAgIC8vIHNvIHRoYXQg cHJvY2Vzc0V2ZW50cyhRRXZlbnRMb29wOjpXYWl0Rm9yTW9yZUV2ZW50cykgbWF5IGJlIGJsb2Nr ZWQgaW4gdGhlIGZvcmNlUm91bmRUcmlwKCkuCisgICAgIFFBYnN0cmFjdEV2ZW50RGlzcGF0Y2hl ciAqZGlzcGF0Y2hlciA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OmV2ZW50RGlzcGF0Y2hlcjsK KyAgICAgUU9iamVjdDo6Y29ubmVjdChkaXNwYXRjaGVyLCBTSUdOQUwoYWJvdXRUb0Jsb2NrKCkp LCBtRGlzcGxheS5kYXRhKCksIFNMT1QoZmx1c2hSZXF1ZXN0cygpKSk7CisgICAgIFFPYmplY3Q6 OmNvbm5lY3QoZGlzcGF0Y2hlciwgU0lHTkFMKGF3YWtlKCkpLCBtRGlzcGxheS5kYXRhKCksIFNM T1QoZmx1c2hSZXF1ZXN0cygpKSk7CisgCistICAgIGludCBmZCA9IHdsX2Rpc3BsYXlfZ2V0X2Zk KG1EaXNwbGF5LT53bF9kaXNwbGF5KCkpOworLSAgICBRU29ja2V0Tm90aWZpZXIgKnNuID0gbmV3 IFFTb2NrZXROb3RpZmllcihmZCwgUVNvY2tldE5vdGlmaWVyOjpSZWFkLCBtRGlzcGxheS5kYXRh KCkpOworLSAgICBRT2JqZWN0Ojpjb25uZWN0KHNuLCBTSUdOQUwoYWN0aXZhdGVkKFFTb2NrZXRE ZXNjcmlwdG9yKSksIG1EaXNwbGF5LmRhdGEoKSwgU0xPVChmbHVzaFJlcXVlc3RzKCkpKTsKKy0K KyAgICAgLy8gUXQgZG9lcyBub3Qgc3VwcG9ydCBydW5uaW5nIHdpdGggbm8gc2NyZWVucworICAg ICBtRGlzcGxheS0+ZW5zdXJlU2NyZWVuKCk7CisgfQorQEAgLTI2Miw2ICsyNjksMTQgQEAgUVdh eWxhbmREaXNwbGF5ICpRV2F5bGFuZEludGVncmF0aW9uOjpkaXNwbGF5KCkgY29uc3QKKyAgICAg cmV0dXJuIG1EaXNwbGF5LmRhdGEoKTsKKyB9CisgCisrUXQ6OktleWJvYXJkTW9kaWZpZXJzIFFX YXlsYW5kSW50ZWdyYXRpb246OnF1ZXJ5S2V5Ym9hcmRNb2RpZmllcnMoKSBjb25zdAorK3sKKysg ICAgaWYgKGF1dG8gKnNlYXQgPSBtRGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCkpIHsKKysg ICAgICAgIHJldHVybiBzZWF0LT5tb2RpZmllcnMoKTsKKysgICAgfQorKyAgICByZXR1cm4gUXQ6 Ok5vTW9kaWZpZXI7CisrfQorKworIFFMaXN0PGludD4gUVdheWxhbmRJbnRlZ3JhdGlvbjo6cG9z c2libGVLZXlzKGNvbnN0IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0CisgeworICAgICBpZiAoYXV0 byAqc2VhdCA9IG1EaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKSkKK0BAIC00NzksNyArNDk0 LDcgQEAgdm9pZCBRV2F5bGFuZEludGVncmF0aW9uOjpyZWNvbmZpZ3VyZUlucHV0Q29udGV4dCgp CisgICAgIH0KKyAjZW5kaWYKKyAKKy0gICAgcUNEZWJ1ZyhsY1FwYVdheWxhbmQpIDw8ICJ1c2lu ZyBpbnB1dCBtZXRob2Q6IiA8PCBpbnB1dENvbnRleHQoKS0+bWV0YU9iamVjdCgpLT5jbGFzc05h bWUoKTsKKysgICAgcUNEZWJ1ZyhsY1FwYVdheWxhbmQpIDw8ICJ1c2luZyBpbnB1dCBtZXRob2Q6 IiA8PCAoaW5wdXRDb250ZXh0KCkgPyBpbnB1dENvbnRleHQoKS0+bWV0YU9iamVjdCgpLT5jbGFz c05hbWUoKSA6ICI8bm9uZT4iKTsKKyB9CisgCisgUVdheWxhbmRTaGVsbEludGVncmF0aW9uICpR V2F5bGFuZEludGVncmF0aW9uOjpjcmVhdGVTaGVsbEludGVncmF0aW9uKGNvbnN0IFFTdHJpbmcg JmludGVncmF0aW9uTmFtZSkKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdy YXRpb25fcC5oCitpbmRleCBmZjcwYWUyNS4uNzNiODA2NTggMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbl9wLmgKK0BAIC0xMDcsNiArMTA3LDggQEAgcHVi bGljOgorIAorICAgICBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkoKSBjb25zdDsKKyAKKysgICAg UXQ6OktleWJvYXJkTW9kaWZpZXJzIHF1ZXJ5S2V5Ym9hcmRNb2RpZmllcnMoKSBjb25zdCBvdmVy cmlkZTsKKysKKyAgICAgUUxpc3Q8aW50PiBwb3NzaWJsZUtleXMoY29uc3QgUUtleUV2ZW50ICpl dmVudCkgY29uc3Qgb3ZlcnJpZGU7CisgCisgICAgIFFTdHJpbmdMaXN0IHRoZW1lTmFtZXMoKSBj b25zdCBvdmVycmlkZTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZHByaW1hcnlzZWxlY3Rpb252MS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHBy aW1hcnlzZWxlY3Rpb252MS5jcHAKK2luZGV4IDgzMmY5Njc4Li5lYTUwODc3MSAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYxLmNwcAor KysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRwcmltYXJ5c2VsZWN0aW9udjEuY3Bw CitAQCAtNTQsMTEgKzU0LDYgQEAgUVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlTWFuYWdl clYxOjpRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjEKKyAgICAgOiB6d3Bf cHJpbWFyeV9zZWxlY3Rpb25fZGV2aWNlX21hbmFnZXJfdjEoZGlzcGxheS0+d2xfcmVnaXN0cnko KSwgaWQsIHFNaW4odmVyc2lvbiwgdWludCgxKSkpCisgICAgICwgbV9kaXNwbGF5KGRpc3BsYXkp CisgeworLSAgICAvLyBDcmVhdGUgZGV2aWNlcyBmb3IgYWxsIHNlYXRzLgorLSAgICAvLyBUaGlz IG9ubHkgd29ya3MgaWYgd2UgZ2V0IHRoZSBnbG9iYWwgYmVmb3JlIGFsbCBkZXZpY2VzCistICAg IGNvbnN0IGF1dG8gc2VhdHMgPSBtX2Rpc3BsYXktPmlucHV0RGV2aWNlcygpOworLSAgICBmb3Ig KGF1dG8gKnNlYXQgOiBzZWF0cykKKy0gICAgICAgIHNlYXQtPnNldFByaW1hcnlTZWxlY3Rpb25E ZXZpY2UoY3JlYXRlRGV2aWNlKHNlYXQpKTsKKyB9CisgCisgUVdheWxhbmRQcmltYXJ5U2VsZWN0 aW9uRGV2aWNlVjEgKlFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZU1hbmFnZXJWMTo6Y3Jl YXRlRGV2aWNlKFFXYXlsYW5kSW5wdXREZXZpY2UgKnNlYXQpCitkaWZmIC0tZ2l0IGEvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW4uY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRzY3JlZW4uY3BwCitpbmRleCA2Y2IzMzdkZS4uNTUzN2RhZmQgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbi5jcHAKKysrKyBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuLmNwcAorQEAgLTYwLDcgKzYwLDcgQEAgUVdheWxh bmRYZGdPdXRwdXRNYW5hZ2VyVjE6OlFXYXlsYW5kWGRnT3V0cHV0TWFuYWdlclYxKFFXYXlsYW5k RGlzcGxheSogZGlzcGxheSwKKyB9CisgCisgUVdheWxhbmRTY3JlZW46OlFXYXlsYW5kU2NyZWVu KFFXYXlsYW5kRGlzcGxheSAqd2F5bGFuZERpc3BsYXksIGludCB2ZXJzaW9uLCB1aW50MzJfdCBp ZCkKKy0gICAgOiBRdFdheWxhbmQ6OndsX291dHB1dCh3YXlsYW5kRGlzcGxheS0+d2xfcmVnaXN0 cnkoKSwgaWQsIHFNaW4odmVyc2lvbiwgMikpCisrICAgIDogUXRXYXlsYW5kOjp3bF9vdXRwdXQo d2F5bGFuZERpc3BsYXktPndsX3JlZ2lzdHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIDMpKQorICAg ICAsIG1fb3V0cHV0SWQoaWQpCisgICAgICwgbVdheWxhbmREaXNwbGF5KHdheWxhbmREaXNwbGF5 KQorICAgICAsIG1PdXRwdXROYW1lKFFTdHJpbmdMaXRlcmFsKCJTY3JlZW4lMSIpLmFyZyhpZCkp CitAQCAtNzIsNyArNzIsNyBAQCBRV2F5bGFuZFNjcmVlbjo6UVdheWxhbmRTY3JlZW4oUVdheWxh bmREaXNwbGF5ICp3YXlsYW5kRGlzcGxheSwgaW50IHZlcnNpb24sIHVpbgorICAgICAgICAgcUNX YXJuaW5nKGxjUXBhV2F5bGFuZCkgPDwgIndsX291dHB1dCBkb25lIGV2ZW50IG5vdCBzdXBwb3J0 ZWQgYnkgY29tcG9zaXRvciwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi UVNjcmVlbiBtYXkgbm90IHdvcmsgY29ycmVjdGx5IjsKKyAgICAgICAgIG1XYXlsYW5kRGlzcGxh eS0+Zm9yY2VSb3VuZFRyaXAoKTsgLy8gR2l2ZSB0aGUgY29tcG9zaXRvciBhIGNoYW5jZSB0byBz ZW5kIGdlb21ldHJ5IGV0Yy4KKy0gICAgICAgIG1PdXRwdXREb25lID0gdHJ1ZTsgLy8gRmFrZSB0 aGUgZG9uZSBldmVudAorKyAgICAgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBPdXRwdXREb25lRXZl bnQ7IC8vIEZha2UgdGhlIGRvbmUgZXZlbnQKKyAgICAgICAgIG1heWJlSW5pdGlhbGl6ZSgpOwor ICAgICB9CisgfQorQEAgLTgxLDE2ICs4MSwyOSBAQCBRV2F5bGFuZFNjcmVlbjo6flFXYXlsYW5k U2NyZWVuKCkKKyB7CisgICAgIGlmICh6eGRnX291dHB1dF92MTo6aXNJbml0aWFsaXplZCgpKQor ICAgICAgICAgenhkZ19vdXRwdXRfdjE6OmRlc3Ryb3koKTsKKysgICAgaWYgKHdsX291dHB1dDo6 aXNJbml0aWFsaXplZCgpICYmIHdsX291dHB1dF9nZXRfdmVyc2lvbih3bF9vdXRwdXQ6Om9iamVj dCgpKSA+PSBXTF9PVVRQVVRfUkVMRUFTRV9TSU5DRV9WRVJTSU9OKQorKyAgICAgICAgd2xfb3V0 cHV0OjpyZWxlYXNlKCk7CisrfQorKworK3VpbnQgUVdheWxhbmRTY3JlZW46OnJlcXVpcmVkRXZl bnRzKCkgY29uc3QKKyt7CisrICAgIHVpbnQgcmV0ID0gT3V0cHV0RG9uZUV2ZW50OworKworKyAg ICBpZiAobVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCkpIHsKKysgICAgICAgIHJl dCB8PSBYZGdPdXRwdXROYW1lRXZlbnQ7CisrCisrICAgICAgICBpZiAobVdheWxhbmREaXNwbGF5 LT54ZGdPdXRwdXRNYW5hZ2VyKCktPnZlcnNpb24oKSA8IDMpCisrICAgICAgICAgICAgcmV0IHw9 IFhkZ091dHB1dERvbmVFdmVudDsKKysgICAgfQorKyAgICByZXR1cm4gcmV0OworIH0KKyAKKyB2 b2lkIFFXYXlsYW5kU2NyZWVuOjptYXliZUluaXRpYWxpemUoKQorIHsKKyAgICAgUV9BU1NFUlQo IW1Jbml0aWFsaXplZCk7CisgCistICAgIGlmICghbU91dHB1dERvbmUpCistICAgICAgICByZXR1 cm47CistCistICAgIGlmIChtV2F5bGFuZERpc3BsYXktPnhkZ091dHB1dE1hbmFnZXIoKSAmJiAh bVhkZ091dHB1dERvbmUpCisrICAgIGNvbnN0IHVpbnQgcmVxdWlyZWRFdmVudHMgPSB0aGlzLT5y ZXF1aXJlZEV2ZW50cygpOworKyAgICBpZiAoKG1Qcm9jZXNzZWRFdmVudHMgJiByZXF1aXJlZEV2 ZW50cykgIT0gcmVxdWlyZWRFdmVudHMpCisgICAgICAgICByZXR1cm47CisgCisgICAgIG1Jbml0 aWFsaXplZCA9IHRydWU7CitAQCAtMjc2LDkgKzI4OSw4IEBAIHZvaWQgUVdheWxhbmRTY3JlZW46 Om91dHB1dF9zY2FsZShpbnQzMl90IGZhY3RvcikKKyAKKyB2b2lkIFFXYXlsYW5kU2NyZWVuOjpv dXRwdXRfZG9uZSgpCisgeworLSAgICBtT3V0cHV0RG9uZSA9IHRydWU7CistICAgIGlmICh6eGRn X291dHB1dF92MTo6aXNJbml0aWFsaXplZCgpICYmIG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0 TWFuYWdlcigpLT52ZXJzaW9uKCkgPj0gMykKKy0gICAgICAgIG1YZGdPdXRwdXREb25lID0gdHJ1 ZTsKKysgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBPdXRwdXREb25lRXZlbnQ7CisrCisgICAgIGlm IChtSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgIHVwZGF0ZU91dHB1dFByb3BlcnRpZXMoKTsKKyAg ICAgICAgIGlmICh6eGRnX291dHB1dF92MTo6aXNJbml0aWFsaXplZCgpKQorQEAgLTMzOSw3ICsz NTEsNyBAQCB2b2lkIFFXYXlsYW5kU2NyZWVuOjp6eGRnX291dHB1dF92MV9kb25lKCkKKyAgICAg aWYgKFFfVU5MSUtFTFkobVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCktPnZlcnNp b24oKSA+PSAzKSkKKyAgICAgICAgIHFXYXJuaW5nKGxjUXBhV2F5bGFuZCkgPDwgInp4ZGdfb3V0 cHV0X3YxLmRvbmUgcmVjZWl2ZWQgb24gdmVyc2lvbiAzIG9yIG5ld2VyLCB0aGlzIGlzIG1vc3Qg bGlrZWx5IGEgYnVnIGluIHRoZSBjb21wb3NpdG9yIjsKKyAKKy0gICAgbVhkZ091dHB1dERvbmUg PSB0cnVlOworKyAgICBtUHJvY2Vzc2VkRXZlbnRzIHw9IFhkZ091dHB1dERvbmVFdmVudDsKKyAg ICAgaWYgKG1Jbml0aWFsaXplZCkKKyAgICAgICAgIHVwZGF0ZVhkZ091dHB1dFByb3BlcnRpZXMo KTsKKyAgICAgZWxzZQorQEAgLTM0OCw3ICszNjAsMTEgQEAgdm9pZCBRV2F5bGFuZFNjcmVlbjo6 enhkZ19vdXRwdXRfdjFfZG9uZSgpCisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6enhkZ19vdXRw dXRfdjFfbmFtZShjb25zdCBRU3RyaW5nICZuYW1lKQorIHsKKysgICAgaWYgKFFfVU5MSUtFTFko bUluaXRpYWxpemVkKSkKKysgICAgICAgIHFXYXJuaW5nKGxjUXBhV2F5bGFuZCkgPDwgInp4ZGdf b3V0cHV0X3YxLm5hbWUgcmVjZWl2ZWQgYWZ0ZXIgb3V0cHV0IGhhcyBiZWVuIGluaXRpYWxpemVk LCB0aGlzIGlzIG1vc3QgbGlrZWx5IGEgYnVnIGluIHRoZSBjb21wb3NpdG9yIjsKKysKKyAgICAg bU91dHB1dE5hbWUgPSBuYW1lOworKyAgICBtUHJvY2Vzc2VkRXZlbnRzIHw9IFhkZ091dHB1dE5h bWVFdmVudDsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6dXBkYXRlWGRnT3V0cHV0UHJv cGVydGllcygpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3Jl ZW5fcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW5fcC5oCitpbmRleCBk ZjFjOTRmMi4uMDUwY2ZkYzAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZHNjcmVlbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVu X3AuaAorQEAgLTExNiw2ICsxMTYsMTMgQEAgcHVibGljOgorICAgICBzdGF0aWMgUVdheWxhbmRT Y3JlZW4gKmZyb21XbE91dHB1dCg6OndsX291dHB1dCAqb3V0cHV0KTsKKyAKKyBwcml2YXRlOgor KyAgICBlbnVtIEV2ZW50IDogdWludCB7CisrICAgICAgICBYZGdPdXRwdXREb25lRXZlbnQgPSAw eDEsCisrICAgICAgICBPdXRwdXREb25lRXZlbnQgPSAweDIsCisrICAgICAgICBYZGdPdXRwdXRO YW1lRXZlbnQgPSAweDQsCisrICAgIH07CisrICAgIHVpbnQgcmVxdWlyZWRFdmVudHMoKSBjb25z dDsKKysKKyAgICAgdm9pZCBvdXRwdXRfbW9kZSh1aW50MzJfdCBmbGFncywgaW50IHdpZHRoLCBp bnQgaGVpZ2h0LCBpbnQgcmVmcmVzaCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgb3V0cHV0X2dlb21l dHJ5KGludDMyX3QgeCwgaW50MzJfdCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQz Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwKK0BAIC0xNDgsOCArMTU1LDcgQEAgcHJpdmF0ZToK KyAgICAgUVNpemUgbVBoeXNpY2FsU2l6ZTsKKyAgICAgUVN0cmluZyBtT3V0cHV0TmFtZTsKKyAg ICAgUXQ6OlNjcmVlbk9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24gPSBRdDo6UHJpbWFyeU9yaWVu dGF0aW9uOworLSAgICBib29sIG1PdXRwdXREb25lID0gZmFsc2U7CistICAgIGJvb2wgbVhkZ091 dHB1dERvbmUgPSBmYWxzZTsKKysgICAgdWludCBtUHJvY2Vzc2VkRXZlbnRzID0gMDsKKyAgICAg Ym9vbCBtSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAKKyAjaWYgUVRfQ09ORklHKGN1cnNvcikKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5j cHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAKK2lu ZGV4IGRjN2ZmNjcwLi40MWNmZmRmNyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kc2htYmFja2luZ3N0b3JlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRzaG1iYWNraW5nc3RvcmUuY3BwCitAQCAtNTIsNiArNTIsNyBAQAorIAorICNpbmNs dWRlIDxRdFdheWxhbmRDbGllbnQvcHJpdmF0ZS93YXlsYW5kLXdheWxhbmQtY2xpZW50LXByb3Rv Y29sLmg+CisgCisrI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNp bmNsdWRlIDxzeXMvbW1hbi5oPgorIAorQEAgLTYxLDYgKzYyLDkgQEAKKyAjICBpZm5kZWYgTUZE X0NMT0VYRUMKKyAjICAgIGRlZmluZSBNRkRfQ0xPRVhFQyAgICAgMHgwMDAxVQorICMgIGVuZGlm CisrIyAgaWZuZGVmIE1GRF9BTExPV19TRUFMSU5HCisrIyAgICBkZWZpbmUgTUZEX0FMTE9XX1NF QUxJTkcgMHgwMDAyVQorKyMgIGVuZGlmCisgI2VuZGlmCisgCisgUVRfQkVHSU5fTkFNRVNQQUNF CitAQCAtNzQsOCArNzgsMTAgQEAgUVdheWxhbmRTaG1CdWZmZXI6OlFXYXlsYW5kU2htQnVmZmVy KFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSwKKyAgICAgaW50IGFsbG9jID0gc3RyaWRlICogc2l6 ZS5oZWlnaHQoKTsKKyAgICAgaW50IGZkID0gLTE7CisgCistI2lmZGVmIFNZU19tZW1mZF9jcmVh dGUKKy0gICAgZmQgPSBzeXNjYWxsKFNZU19tZW1mZF9jcmVhdGUsICJ3YXlsYW5kLXNobSIsIE1G RF9DTE9FWEVDKTsKKysjaWYgZGVmaW5lZChTWVNfbWVtZmRfY3JlYXRlKSAmJiBkZWZpbmVkKEZf U0VBTF9TRUFMKQorKyAgICBmZCA9IHN5c2NhbGwoU1lTX21lbWZkX2NyZWF0ZSwgIndheWxhbmQt c2htIiwgTUZEX0NMT0VYRUMgfCBNRkRfQUxMT1dfU0VBTElORyk7CisrICAgIGlmIChmZCA+PSAw KQorKyAgICAgICAgZmNudGwoZmQsIEZfQUREX1NFQUxTLCBGX1NFQUxfU0hSSU5LIHwgRl9TRUFM X1NFQUwpOworICNlbmRpZgorIAorICAgICBRU2NvcGVkUG9pbnRlcjxRRmlsZT4gZmlsZVBvaW50 ZXI7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3cuY3Bw IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3cuY3BwCitpbmRleCBjYjgyODU3 YS4uZmIyYzU5ZGMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdp bmRvdy5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNwcAor QEAgLTc2LDcgKzc2LDYgQEAgUVdheWxhbmRXaW5kb3cgKlFXYXlsYW5kV2luZG93OjptTW91c2VH cmFiID0gbnVsbHB0cjsKKyBRV2F5bGFuZFdpbmRvdzo6UVdheWxhbmRXaW5kb3coUVdpbmRvdyAq d2luZG93LCBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpCisgICAgIDogUVBsYXRmb3JtV2luZG93 KHdpbmRvdykKKyAgICAgLCBtRGlzcGxheShkaXNwbGF5KQorLSAgICAsIG1GcmFtZVF1ZXVlKG1E aXNwbGF5LT5jcmVhdGVGcmFtZVF1ZXVlKCkpCisgICAgICwgbVJlc2l6ZUFmdGVyU3dhcChxRW52 aXJvbm1lbnRWYXJpYWJsZUlzU2V0KCJRVF9XQVlMQU5EX1JFU0laRV9BRlRFUl9TV0FQIikpCisg eworICAgICB7CitAQCAtOTUsOSArOTQsNiBAQCBRV2F5bGFuZFdpbmRvdzo6UVdheWxhbmRXaW5k b3coUVdpbmRvdyAqd2luZG93LCBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpCisgCisgUVdheWxh bmRXaW5kb3c6On5RV2F5bGFuZFdpbmRvdygpCisgeworLSAgICBtRGlzcGxheS0+ZGVzdHJveUZy YW1lUXVldWUobUZyYW1lUXVldWUpOworLSAgICBtRGlzcGxheS0+aGFuZGxlV2luZG93RGVzdHJv eWVkKHRoaXMpOworLQorICAgICBkZWxldGUgbVdpbmRvd0RlY29yYXRpb247CisgCisgICAgIGlm IChtU3VyZmFjZSkKK0BAIC0yNDMsNiArMjM5LDcgQEAgYm9vbCBRV2F5bGFuZFdpbmRvdzo6c2hv dWxkQ3JlYXRlU3ViU3VyZmFjZSgpIGNvbnN0CisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVz ZXQoKQorIHsKKysgICAgY2xvc2VDaGlsZFBvcHVwcygpOworICAgICBkZWxldGUgbVNoZWxsU3Vy ZmFjZTsKKyAgICAgbVNoZWxsU3VyZmFjZSA9IG51bGxwdHI7CisgICAgIGRlbGV0ZSBtU3ViU3Vy ZmFjZVdpbmRvdzsKK0BAIC0yNTUsMTcgKzI1MiwyMiBAQCB2b2lkIFFXYXlsYW5kV2luZG93Ojpy ZXNldCgpCisgICAgICAgICBtU3VyZmFjZS5yZXNldCgpOworICAgICB9CisgCistICAgIGlmICht RnJhbWVDYWxsYmFjaykgeworLSAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShtRnJhbWVDYWxs YmFjayk7CistICAgICAgICBtRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CistICAgIH0KKysgICAg eworKyAgICAgICAgUU11dGV4TG9ja2VyIGxvY2soJm1GcmFtZVN5bmNNdXRleCk7CisrICAgICAg ICBpZiAobUZyYW1lQ2FsbGJhY2spIHsKKysgICAgICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95 KG1GcmFtZUNhbGxiYWNrKTsKKysgICAgICAgICAgICBtRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7 CisrICAgICAgICB9CisgCistICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmludmFsaWRh dGUoKTsKKy0gICAgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisrICAgICAgICBt RnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CisrICAgICAgICBtV2FpdGlu Z0ZvckZyYW1lQ2FsbGJhY2sgPSBmYWxzZTsKKysgICAgfQorICAgICBtRnJhbWVDYWxsYmFja1Rp bWVkT3V0ID0gZmFsc2U7CisgCisgICAgIG1NYXNrID0gUVJlZ2lvbigpOworICAgICBtUXVldWVk QnVmZmVyID0gbnVsbHB0cjsKKysKKysgICAgbURpc3BsYXktPmhhbmRsZVdpbmRvd0Rlc3Ryb3ll ZCh0aGlzKTsKKyB9CisgCisgUVdheWxhbmRXaW5kb3cgKlFXYXlsYW5kV2luZG93Ojpmcm9tV2xT dXJmYWNlKDo6d2xfc3VyZmFjZSAqc3VyZmFjZSkKK0BAIC0zNTEsMTkgKzM1MywyNSBAQCB2b2lk IFFXYXlsYW5kV2luZG93OjpzZXRHZW9tZXRyeV9oZWxwZXIoY29uc3QgUVJlY3QgJnJlY3QpCisg ICAgIH0KKyB9CisgCistdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJl Y3QgJnJlY3QpCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3Qg JnIpCisgeworKyAgICBhdXRvIHJlY3QgPSByOworKyAgICBpZiAoZml4ZWRUb3BsZXZlbFBvc2l0 aW9ucyAmJiAhUVBsYXRmb3JtV2luZG93OjpwYXJlbnQoKSAmJiB3aW5kb3coKS0+dHlwZSgpICE9 IFF0OjpQb3B1cAorKyAgICAgICAgJiYgd2luZG93KCktPnR5cGUoKSAhPSBRdDo6VG9vbFRpcCkg eworKyAgICAgICAgcmVjdC5tb3ZlVG8oc2NyZWVuKCktPmdlb21ldHJ5KCkudG9wTGVmdCgpKTsK KysgICAgfQorICAgICBzZXRHZW9tZXRyeV9oZWxwZXIocmVjdCk7CisgCisgICAgIGlmICh3aW5k b3coKS0+aXNWaXNpYmxlKCkgJiYgcmVjdC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgIGlmIChtV2lu ZG93RGVjb3JhdGlvbikKKyAgICAgICAgICAgICBtV2luZG93RGVjb3JhdGlvbi0+dXBkYXRlKCk7 CisgCistICAgICAgICBpZiAobVJlc2l6ZUFmdGVyU3dhcCAmJiB3aW5kb3dUeXBlKCkgPT0gRWds ICYmIG1TZW50SW5pdGlhbFJlc2l6ZSkKKysgICAgICAgIGlmIChtUmVzaXplQWZ0ZXJTd2FwICYm IHdpbmRvd1R5cGUoKSA9PSBFZ2wgJiYgbVNlbnRJbml0aWFsUmVzaXplKSB7CisrICAgICAgICAg ICAgUU11dGV4TG9ja2VyIGxvY2soJm1SZXNpemVMb2NrKTsKKyAgICAgICAgICAgICBtUmVzaXpl RGlydHkgPSB0cnVlOworLSAgICAgICAgZWxzZQorKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVHZW9tZXRyeUNoYW5nZSh3aW5kb3co KSwgZ2VvbWV0cnkoKSk7CistCisrICAgICAgICB9CisgICAgICAgICBtU2VudEluaXRpYWxSZXNp emUgPSB0cnVlOworICAgICB9CisgICAgIFFSZWN0IGV4cG9zZUdlb21ldHJ5KFFQb2ludCgpLCBn ZW9tZXRyeSgpLnNpemUoKSk7CitAQCAtMzc0LDcgKzM4Miw3IEBAIHZvaWQgUVdheWxhbmRXaW5k b3c6OnNldEdlb21ldHJ5KGNvbnN0IFFSZWN0ICZyZWN0KQorICAgICAgICAgbVNoZWxsU3VyZmFj ZS0+c2V0V2luZG93R2VvbWV0cnkod2luZG93Q29udGVudEdlb21ldHJ5KCkpOworIAorICAgICBp ZiAoaXNPcGFxdWUoKSAmJiBtTWFzay5pc0VtcHR5KCkpCistICAgICAgICBzZXRPcGFxdWVBcmVh KHJlY3QpOworKyAgICAgICAgc2V0T3BhcXVlQXJlYShRUmVjdChRUG9pbnQoMCwgMCksIHJlY3Qu c2l6ZSgpKSk7CisgfQorIAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlc2l6ZUZyb21BcHBseUNv bmZpZ3VyZShjb25zdCBRU2l6ZSAmc2l6ZVdpdGhNYXJnaW5zLCBjb25zdCBRUG9pbnQgJm9mZnNl dCkKK0BAIC0zOTksMjEgKzQwNyw2IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNlbmRFeHBvc2VF dmVudChjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgbUxhc3RFeHBvc2VHZW9tZXRyeSA9IHJlY3Q7 CisgfQorIAorLQorLXN0YXRpYyBRVmVjdG9yPFFQb2ludGVyPFFXYXlsYW5kV2luZG93Pj4gYWN0 aXZlUG9wdXBzOworLQorLXZvaWQgUVdheWxhbmRXaW5kb3c6OmNsb3NlUG9wdXBzKFFXYXlsYW5k V2luZG93ICpwYXJlbnQpCisteworLSAgICB3aGlsZSAoIWFjdGl2ZVBvcHVwcy5pc0VtcHR5KCkp IHsKKy0gICAgICAgIGF1dG8gcG9wdXAgPSBhY3RpdmVQb3B1cHMudGFrZUxhc3QoKTsKKy0gICAg ICAgIGlmIChwb3B1cC5pc051bGwoKSkKKy0gICAgICAgICAgICBjb250aW51ZTsKKy0gICAgICAg IGlmIChwb3B1cC5kYXRhKCkgPT0gcGFyZW50KQorLSAgICAgICAgICAgIHJldHVybjsKKy0gICAg ICAgIHBvcHVwLT5yZXNldCgpOworLSAgICB9CistfQorLQorIFFQbGF0Zm9ybVNjcmVlbiAqUVdh eWxhbmRXaW5kb3c6OmNhbGN1bGF0ZVNjcmVlbkZyb21TdXJmYWNlRXZlbnRzKCkgY29uc3QKKyB7 CisgICAgIFFSZWFkTG9ja2VyIGxvY2soJm1TdXJmYWNlTG9jayk7CitAQCAtNDMzLDEwICs0MjYs NyBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKKyAgICAg bGFzdFZpc2libGUgPSB2aXNpYmxlOworIAorICAgICBpZiAodmlzaWJsZSkgeworLSAgICAgICAg aWYgKHdpbmRvdygpLT50eXBlKCkgPT0gUXQ6OlBvcHVwIHx8IHdpbmRvdygpLT50eXBlKCkgPT0g UXQ6OlRvb2xUaXApCistICAgICAgICAgICAgYWN0aXZlUG9wdXBzIDw8IHRoaXM7CisgICAgICAg ICBpbml0V2luZG93KCk7CistICAgICAgICBtRGlzcGxheS0+Zmx1c2hSZXF1ZXN0cygpOworIAor ICAgICAgICAgc2V0R2VvbWV0cnkod2luZG93R2VvbWV0cnkoKSk7CisgICAgICAgICAvLyBEb24n dCBmbHVzaCB0aGUgZXZlbnRzIGhlcmUsIG9yIGVsc2UgdGhlIG5ld2x5IHZpc2libGUgd2luZG93 IG1heSBzdGFydCBkcmF3aW5nLCBidXQgc2luY2UKK0BAIC00NDQsNyArNDM0LDYgQEAgdm9pZCBR V2F5bGFuZFdpbmRvdzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCisgICAgICAgICAvLyBRV2F5 bGFuZFNobUJhY2tpbmdTdG9yZTo6YmVnaW5QYWludCgpLgorICAgICB9IGVsc2UgeworICAgICAg ICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KCkpOworLSAgICAgICAgY2xvc2VQb3B1cHModGhpcyk7 CisgICAgICAgICByZXNldCgpOworICAgICB9CisgfQorQEAgLTU1NiwxMiArNTQ1LDEyIEBAIHZv aWQgUVdheWxhbmRXaW5kb3c6OnNlbmRSZWN1cnNpdmVFeHBvc2VFdmVudCgpCisgCisgdm9pZCBR V2F5bGFuZFdpbmRvdzo6YXR0YWNoKFFXYXlsYW5kQnVmZmVyICpidWZmZXIsIGludCB4LCBpbnQg eSkKKyB7CistICAgIFFfQVNTRVJUKCFidWZmZXItPmNvbW1pdHRlZCgpKTsKKyAgICAgUVJlYWRM b2NrZXIgbG9ja2VyKCZtU3VyZmFjZUxvY2spOworICAgICBpZiAobVN1cmZhY2UgPT0gbnVsbHB0 cikKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgaWYgKGJ1ZmZlcikgeworKyAgICAgICAgUV9B U1NFUlQoIWJ1ZmZlci0+Y29tbWl0dGVkKCkpOworICAgICAgICAgaGFuZGxlVXBkYXRlKCk7Cisg ICAgICAgICBidWZmZXItPnNldEJ1c3koKTsKKyAKK0BAIC01ODMsNyArNTcyLDExIEBAIHZvaWQg UVdheWxhbmRXaW5kb3c6OmRhbWFnZShjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgaWYgKG1TdXJm YWNlID09IG51bGxwdHIpCisgICAgICAgICByZXR1cm47CisgCistICAgIG1TdXJmYWNlLT5kYW1h Z2UocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworKyAg ICBjb25zdCBpbnQgcyA9IHNjYWxlKCk7CisrICAgIGlmIChtRGlzcGxheS0+Y29tcG9zaXRvclZl cnNpb24oKSA+PSA0KQorKyAgICAgICAgbVN1cmZhY2UtPmRhbWFnZV9idWZmZXIocyAqIHJlY3Qu eCgpLCBzICogcmVjdC55KCksIHMgKiByZWN0LndpZHRoKCksIHMgKiByZWN0LmhlaWdodCgpKTsK KysgICAgZWxzZQorKyAgICAgICAgbVN1cmZhY2UtPmRhbWFnZShyZWN0LngoKSwgcmVjdC55KCks IHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgfQorIAorIHZvaWQgUVdheWxhbmRXaW5k b3c6OnNhZmVDb21taXQoUVdheWxhbmRCdWZmZXIgKmJ1ZmZlciwgY29uc3QgUVJlZ2lvbiAmZGFt YWdlKQorQEAgLTYxOSw4ICs2MTIsMTQgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6Y29tbWl0KFFX YXlsYW5kQnVmZmVyICpidWZmZXIsIGNvbnN0IFFSZWdpb24gJmRhbWFnZSkKKyAgICAgICAgIHJl dHVybjsKKyAKKyAgICAgYXR0YWNoT2Zmc2V0KGJ1ZmZlcik7CistICAgIGZvciAoY29uc3QgUVJl Y3QgJnJlY3Q6IGRhbWFnZSkKKy0gICAgICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54KCksIHJl Y3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworKyAgICBpZiAobURpc3BsYXkt PmNvbXBvc2l0b3JWZXJzaW9uKCkgPj0gNCkgeworKyAgICAgICAgY29uc3QgaW50IHMgPSBzY2Fs ZSgpOworKyAgICAgICAgZm9yIChjb25zdCBRUmVjdCAmcmVjdDogZGFtYWdlKQorKyAgICAgICAg ICAgIG1TdXJmYWNlLT5kYW1hZ2VfYnVmZmVyKHMgKiByZWN0LngoKSwgcyAqIHJlY3QueSgpLCBz ICogcmVjdC53aWR0aCgpLCBzICogcmVjdC5oZWlnaHQoKSk7CisrICAgIH0gZWxzZSB7CisrICAg ICAgICBmb3IgKGNvbnN0IFFSZWN0ICZyZWN0OiBkYW1hZ2UpCisrICAgICAgICAgICAgbVN1cmZh Y2UtPmRhbWFnZShyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQo KSk7CisrICAgIH0KKyAgICAgUV9BU1NFUlQoIWJ1ZmZlci0+Y29tbWl0dGVkKCkpOworICAgICBi dWZmZXItPnNldENvbW1pdHRlZCgpOworICAgICBtU3VyZmFjZS0+Y29tbWl0KCk7CitAQCAtNjM1 LDQyICs2MzQsNTMgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6Y29tbWl0KCkKKyAKKyBjb25zdCB3 bF9jYWxsYmFja19saXN0ZW5lciBRV2F5bGFuZFdpbmRvdzo6Y2FsbGJhY2tMaXN0ZW5lciA9IHsK KyAgICAgW10odm9pZCAqZGF0YSwgd2xfY2FsbGJhY2sgKmNhbGxiYWNrLCB1aW50MzJfdCB0aW1l KSB7CistICAgICAgICBRX1VOVVNFRChjYWxsYmFjayk7CisgICAgICAgICBRX1VOVVNFRCh0aW1l KTsKKyAgICAgICAgIGF1dG8gKndpbmRvdyA9IHN0YXRpY19jYXN0PFFXYXlsYW5kV2luZG93Kj4o ZGF0YSk7CistICAgICAgICB3aW5kb3ctPmhhbmRsZUZyYW1lQ2FsbGJhY2soKTsKKysgICAgICAg IHdpbmRvdy0+aGFuZGxlRnJhbWVDYWxsYmFjayhjYWxsYmFjayk7CisgICAgIH0KKyB9OworIAor LXZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZUZyYW1lQ2FsbGJhY2soKQorK3ZvaWQgUVdheWxh bmRXaW5kb3c6OmhhbmRsZUZyYW1lQ2FsbGJhY2sod2xfY2FsbGJhY2sqIGNhbGxiYWNrKQorIHsK KysgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysgICAgaWYgKCFt RnJhbWVDYWxsYmFjaykgeworKyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUgY2FsbGJhY2sgaXMg YWxyZWFkeSB1bnNldCBieSBRV2F5bGFuZFdpbmRvdzo6cmVzZXQuCisrICAgICAgICAvLyBUaGUg d2xfY2FsbGJhY2sgb2JqZWN0IHdpbGwgYmUgZGVzdHJveWVkIHRoZXJlIHRvby4KKysgICAgICAg IHJldHVybjsKKysgICAgfQorKyAgICBRX0FTU0VSVChjYWxsYmFjayA9PSBtRnJhbWVDYWxsYmFj ayk7CisrICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3koY2FsbGJhY2spOworKyAgICBtRnJhbWVDYWxs YmFjayA9IG51bGxwdHI7CisrCisgICAgIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNl OworICAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CisgCisgICAg IC8vIFRoZSByZXN0IGNhbiB3YWl0IHVudGlsIHdlIGNhbiBydW4gaXQgb24gdGhlIGNvcnJlY3Qg dGhyZWFkCistICAgIGlmICghbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSkgeworLSAgICAgICAg YXV0byBkb0hhbmRsZUV4cG9zZSA9IFt0aGlzXSgpIHsKKy0gICAgICAgICAgICBib29sIHdhc0V4 cG9zZWQgPSBpc0V4cG9zZWQoKTsKKy0gICAgICAgICAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0 ID0gZmFsc2U7CistICAgICAgICAgICAgaWYgKCF3YXNFeHBvc2VkICYmIGlzRXhwb3NlZCgpKSAv LyBEaWQgc2V0dGluZyBtRnJhbWVDYWxsYmFja1RpbWVkT3V0IG1ha2UgdGhlIHdpbmRvdyBleHBv c2VkPworLSAgICAgICAgICAgICAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoUVBvaW50KCksIGdl b21ldHJ5KCkuc2l6ZSgpKSk7CistICAgICAgICAgICAgaWYgKHdhc0V4cG9zZWQgJiYgaGFzUGVu ZGluZ1VwZGF0ZVJlcXVlc3QoKSkKKy0gICAgICAgICAgICAgICAgZGVsaXZlclVwZGF0ZVJlcXVl c3QoKTsKKy0KKy0gICAgICAgICAgICBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gZmFsc2U7 CistICAgICAgICB9OworKyAgICBhdXRvIGRvSGFuZGxlRXhwb3NlID0gW3RoaXNdKCkgeworKyAg ICAgICAgbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeS5zdG9yZVJlbGVhc2UoZmFsc2UpOworKyAg ICAgICAgYm9vbCB3YXNFeHBvc2VkID0gaXNFeHBvc2VkKCk7CisrICAgICAgICBtRnJhbWVDYWxs YmFja1RpbWVkT3V0ID0gZmFsc2U7CisrICAgICAgICBpZiAoIXdhc0V4cG9zZWQgJiYgaXNFeHBv c2VkKCkpIC8vIERpZCBzZXR0aW5nIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgbWFrZSB0aGUgd2lu ZG93IGV4cG9zZWQ/CisrICAgICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KFFQb2ludCgp LCBnZW9tZXRyeSgpLnNpemUoKSkpOworKyAgICAgICAgaWYgKHdhc0V4cG9zZWQgJiYgaGFzUGVu ZGluZ1VwZGF0ZVJlcXVlc3QoKSkKKysgICAgICAgICAgICBkZWxpdmVyVXBkYXRlUmVxdWVzdCgp OworKyAgICB9OworIAorKyAgICBpZiAobVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeS50ZXN0QW5k U2V0QWNxdWlyZShmYWxzZSwgdHJ1ZSkpIHsKKyAgICAgICAgIC8vIFF1ZXVlZCBjb25uZWN0aW9u LCB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgY2FsbCBoYW5kbGVVcGRhdGUoKSBmcm9tIGluc2lkZSB3 YWl0Rm9yRnJhbWVTeW5jKCkKKyAgICAgICAgIC8vIGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2Fz ZS4KKy0gICAgICAgIG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkgPSB0cnVlOworICAgICAgICAg UU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCBkb0hhbmRsZUV4cG9zZSwgUXQ6OlF1ZXVl ZENvbm5lY3Rpb24pOworICAgICB9CisrCisrICAgIG1GcmFtZVN5bmNXYWl0Lm5vdGlmeV9hbGwo KTsKKyB9CisgCisgYm9vbCBRV2F5bGFuZFdpbmRvdzo6d2FpdEZvckZyYW1lU3luYyhpbnQgdGlt ZW91dCkKKyB7CistICAgIFFNdXRleExvY2tlciBsb2NrZXIobUZyYW1lUXVldWUubXV0ZXgpOwor LSAgICBtRGlzcGxheS0+ZGlzcGF0Y2hRdWV1ZVdoaWxlKG1GcmFtZVF1ZXVlLnF1ZXVlLCBbJl0o KSB7IHJldHVybiBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2s7IH0sIHRpbWVvdXQpOworKyAgICBR TXV0ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKworKyAgICBRRGVhZGxpbmVU aW1lciBkZWFkbGluZSh0aW1lb3V0KTsKKysgICAgd2hpbGUgKG1XYWl0aW5nRm9yRnJhbWVDYWxs YmFjayAmJiBtRnJhbWVTeW5jV2FpdC53YWl0KCZtRnJhbWVTeW5jTXV0ZXgsIGRlYWRsaW5lKSkg eyB9CisgCisgICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spIHsKKyAgICAgICAgIHFD RGVidWcobGNXYXlsYW5kQmFja2luZ3N0b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUgZnJhbWUgY2Fs bGJhY2sgaW4gdGltZSwgd2luZG93IHNob3VsZCBub3cgYmUgaW5leHBvc2VkIjsKK0BAIC04Njgs NiArODc4LDE3IEBAIGJvb2wgUVdheWxhbmRXaW5kb3c6OmNyZWF0ZURlY29yYXRpb24oKQorICAg ICAgICAgICAgIHN1YnN1cmYtPnNldF9wb3NpdGlvbihwb3MueCgpICsgbS5sZWZ0KCksIHBvcy55 KCkgKyBtLnRvcCgpKTsKKyAgICAgICAgIH0KKyAgICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVj dChRUG9pbnQoKSwgZ2VvbWV0cnkoKS5zaXplKCkpKTsKKysKKysgICAgICAgIC8vIFRoaXMgaXMg YSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIGJ1ZmZlciBpcyByZWNyZWF0ZWQsIGJ1dCBzaW5jZQor KyAgICAgICAgLy8gdGhlIGNvbnRlbnQgcmVjdCByZW1haW5zIHRoZSBzYW1lLCB0aGUgd2lkZ2V0 cyByZW1haW4gdGhlIHNhbWUKKysgICAgICAgIC8vIHNpemUgYW5kIGFyZSBub3QgcmVkcmF3biwg bGVhdmluZyB0aGUgbmV3IGJ1ZmZlciBlbXB0eS4gQXMgYSBzaW1wbGUKKysgICAgICAgIC8vIHdv cmstYXJvdW5kLCB3ZSB0cmlnZ2VyIGEgZnVsbCBleHRyYSB1cGRhdGUgd2hlbmV2ZXIgdGhlIGNs aWVudC1zaWRlCisrICAgICAgICAvLyB3aW5kb3cgZGVjb3JhdGlvbnMgYXJlIHRvZ2dsZWQgd2hp bGUgdGhlIHdpbmRvdyBpcyBzaG93aW5nLgorKyAgICAgICAgLy8gTm90ZTogY3JlYXRlRGVjb3Jh dGlvbigpIGlzIHNvbWV0aW1lcyBjYWxsZWQgZnJvbSB0aGUgcmVuZGVyIHRocmVhZAorKyAgICAg ICAgLy8gb2YgUXQgUXVpY2suIFRoaXMgaXMgZXNzZW50aWFsbHkgd3JvbmcgYW5kIGNvdWxkIHBv dGVudGlhbGx5IGNhdXNlIHByb2JsZW1zLAorKyAgICAgICAgLy8gYnV0IHVudGlsIHRoZSB1bmRl cmx5aW5nIGlzc3VlIGhhcyBiZWVuIGZpeGVkLCB3ZSBoYXZlIHRvIHVzZSBpbnZva2VNZXRob2Qo KQorKyAgICAgICAgLy8gaGVyZSB0byBhdm9pZCBhc3NlcnRzLgorKyAgICAgICAgUU1ldGFPYmpl Y3Q6Omludm9rZU1ldGhvZCh3aW5kb3coKSwgJlFXaW5kb3c6OnJlcXVlc3RVcGRhdGUpOworICAg ICB9CisgCisgICAgIHJldHVybiBtV2luZG93RGVjb3JhdGlvbjsKK0BAIC0xMDIzLDYgKzEwNDQs MTMgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlU2NyZWVuc0NoYW5nZWQoKQorIAorICAg ICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dTY3JlZW5DaGFuZ2VkKHdpbmRv dygpLCBuZXdTY3JlZW4tPlFQbGF0Zm9ybVNjcmVlbjo6c2NyZWVuKCkpOworICAgICBtTGFzdFJl cG9ydGVkU2NyZWVuID0gbmV3U2NyZWVuOworKyAgICBpZiAoZml4ZWRUb3BsZXZlbFBvc2l0aW9u cyAmJiAhUVBsYXRmb3JtV2luZG93OjpwYXJlbnQoKSAmJiB3aW5kb3coKS0+dHlwZSgpICE9IFF0 OjpQb3B1cAorKyAgICAgICAgJiYgd2luZG93KCktPnR5cGUoKSAhPSBRdDo6VG9vbFRpcAorKyAg ICAgICAgJiYgZ2VvbWV0cnkoKS50b3BMZWZ0KCkgIT0gbmV3U2NyZWVuLT5nZW9tZXRyeSgpLnRv cExlZnQoKSkgeworKyAgICAgICAgYXV0byBnZW9tZXRyeSA9IHRoaXMtPmdlb21ldHJ5KCk7Cisr ICAgICAgICBnZW9tZXRyeS5tb3ZlVG8obmV3U2NyZWVuLT5nZW9tZXRyeSgpLnRvcExlZnQoKSk7 CisrICAgICAgICBzZXRHZW9tZXRyeShnZW9tZXRyeSk7CisrICAgIH0KKyAKKyAgICAgaW50IHNj YWxlID0gbmV3U2NyZWVuLT5pc1BsYWNlaG9sZGVyKCkgPyAxIDogc3RhdGljX2Nhc3Q8UVdheWxh bmRTY3JlZW4gKj4obmV3U2NyZWVuKS0+c2NhbGUoKTsKKyAgICAgaWYgKHNjYWxlICE9IG1TY2Fs ZSkgeworQEAgLTEwOTQsMTAgKzExMjIsMTggQEAgYm9vbCBRV2F5bGFuZFdpbmRvdzo6c2V0TW91 c2VHcmFiRW5hYmxlZChib29sIGdyYWIpCisgICAgIHJldHVybiB0cnVlOworIH0KKyAKKytRdDo6 V2luZG93U3RhdGVzIFFXYXlsYW5kV2luZG93Ojp3aW5kb3dTdGF0ZXMoKSBjb25zdAorK3sKKysg ICAgcmV0dXJuIG1MYXN0UmVwb3J0ZWRXaW5kb3dTdGF0ZXM7CisrfQorKworIHZvaWQgUVdheWxh bmRXaW5kb3c6OmhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQoUXQ6OldpbmRvd1N0YXRlcyBzdGF0 ZXMpCisgeworICAgICBjcmVhdGVEZWNvcmF0aW9uKCk7CistICAgIFFXaW5kb3dTeXN0ZW1JbnRl cmZhY2U6OmhhbmRsZVdpbmRvd1N0YXRlQ2hhbmdlZCh3aW5kb3coKSwgc3RhdGVzLCBtTGFzdFJl cG9ydGVkV2luZG93U3RhdGVzKTsKKysgICAgUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXNXaXRob3V0 QWN0aXZlID0gc3RhdGVzICYgflF0OjpXaW5kb3dBY3RpdmU7CisrICAgIFF0OjpXaW5kb3dTdGF0 ZXMgbGFzdFN0YXRlc1dpdGhvdXRBY3RpdmUgPSBtTGFzdFJlcG9ydGVkV2luZG93U3RhdGVzICYg flF0OjpXaW5kb3dBY3RpdmU7CisrICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdp bmRvd1N0YXRlQ2hhbmdlZCh3aW5kb3coKSwgc3RhdGVzV2l0aG91dEFjdGl2ZSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RTdGF0ZXNX aXRob3V0QWN0aXZlKTsKKyAgICAgbUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRlcyA9IHN0YXRlczsK KyB9CisgCitAQCAtMTEzOSwxOSArMTE3NSwyNCBAQCB2b2lkIFFXYXlsYW5kV2luZG93Ojp0aW1l ckV2ZW50KFFUaW1lckV2ZW50ICpldmVudCkKKyAgICAgaWYgKGV2ZW50LT50aW1lcklkKCkgIT0g bUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCkKKyAgICAgICAgIHJldHVybjsKKyAK Ky0gICAgYm9vbCBjYWxsYmFja1RpbWVyRXhwaXJlZCA9IG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRp bWVyLmhhc0V4cGlyZWQobUZyYW1lQ2FsbGJhY2tUaW1lb3V0KTsKKy0gICAgaWYgKCFtRnJhbWVD YWxsYmFja0VsYXBzZWRUaW1lci5pc1ZhbGlkKCkgfHwgY2FsbGJhY2tUaW1lckV4cGlyZWQgKSB7 CistICAgICAgICBraWxsVGltZXIobUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCk7 CistICAgICAgICBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gLTE7CistICAg IH0KKy0gICAgaWYgKG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQoKSAmJiBjYWxs YmFja1RpbWVyRXhwaXJlZCkgeworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIu aW52YWxpZGF0ZSgpOworKyAgICB7CisrICAgICAgICBRTXV0ZXhMb2NrZXIgbG9jaygmbUZyYW1l U3luY011dGV4KTsKKyAKKy0gICAgICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2luZ3N0b3JlKSA8 PCAiRGlkbid0IHJlY2VpdmUgZnJhbWUgY2FsbGJhY2sgaW4gdGltZSwgd2luZG93IHNob3VsZCBu b3cgYmUgaW5leHBvc2VkIjsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSB0cnVl OworLSAgICAgICAgbVdhaXRpbmdGb3JVcGRhdGUgPSBmYWxzZTsKKy0gICAgICAgIHNlbmRFeHBv c2VFdmVudChRUmVjdCgpKTsKKysgICAgICAgIGJvb2wgY2FsbGJhY2tUaW1lckV4cGlyZWQgPSBt RnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5oYXNFeHBpcmVkKG1GcmFtZUNhbGxiYWNrVGltZW91 dCk7CisrICAgICAgICBpZiAoIW1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQoKSB8 fCBjYWxsYmFja1RpbWVyRXhwaXJlZCApIHsKKysgICAgICAgICAgICBraWxsVGltZXIobUZyYW1l Q2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCk7CisrICAgICAgICAgICAgbUZyYW1lQ2FsbGJh Y2tDaGVja0ludGVydmFsVGltZXJJZCA9IC0xOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFt RnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pc1ZhbGlkKCkgfHwgIWNhbGxiYWNrVGltZXJFeHBp cmVkKSB7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgbUZyYW1l Q2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworICAgICB9CisrCisrICAgIHFDRGVi dWcobGNXYXlsYW5kQmFja2luZ3N0b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUgZnJhbWUgY2FsbGJh Y2sgaW4gdGltZSwgd2luZG93IHNob3VsZCBub3cgYmUgaW5leHBvc2VkIjsKKysgICAgbUZyYW1l Q2FsbGJhY2tUaW1lZE91dCA9IHRydWU7CisrICAgIG1XYWl0aW5nRm9yVXBkYXRlID0gZmFsc2U7 CisrICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdCgpKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFdp bmRvdzo6cmVxdWVzdFVwZGF0ZSgpCitAQCAtMTE2MCw4ICsxMjAxLDExIEBAIHZvaWQgUVdheWxh bmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorICAgICBRX0FTU0VSVChoYXNQZW5kaW5nVXBkYXRl UmVxdWVzdCgpKTsgLy8gc2hvdWxkIGJlIHNldCBieSBRUEEKKyAKKyAgICAgLy8gSWYgd2UgaGF2 ZSBhIGZyYW1lIGNhbGxiYWNrIGFsbCBpcyBnb29kIGFuZCB3aWxsIGJlIHRha2VuIGNhcmUgb2Yg dGhlcmUKKy0gICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKy0gICAgICAgIHJldHVy bjsKKysgICAgeworKyAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4 KTsKKysgICAgICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisrICAgICAgICAgICAg cmV0dXJuOworKyAgICB9CisgCisgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgY2FsbGVkIGRlbGl2 ZXJVcGRhdGVSZXF1ZXN0KCksIGJ1dCBoYXZlbid0IHNlZW4gYW55IGF0dGFjaCtjb21taXQvc3dh cCB5ZXQKKyAgICAgLy8gVGhpcyBpcyBhIHNvbWV3aGF0IHJlZHVuZGFudCBiZWhhdmlvciBhbmQg bWlnaHQgaW5kaWNhdGUgYSBidWcgaW4gdGhlIGNhbGxpbmcgY29kZSwgc28gbG9nCitAQCAtMTE3 NCw3ICsxMjE4LDEyIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorICAg ICAvLyBzbyB1c2UgaW52b2tlTWV0aG9kIHRvIGRlbGF5IHRoZSBkZWxpdmVyeSBhIGJpdC4KKyAg ICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCBbdGhpc10geworICAgICAgICAgLy8g VGhpbmdzIG1pZ2h0IGhhdmUgY2hhbmdlZCBpbiB0aGUgbWVhbnRpbWUKKy0gICAgICAgIGlmICho YXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpICYmICFtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisr ICAgICAgICB7CisrICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011 dGV4KTsKKysgICAgICAgICAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQorKyAgICAg ICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisrICAgICAgICBpZiAoaGFzUGVuZGluZ1Vw ZGF0ZVJlcXVlc3QoKSkKKyAgICAgICAgICAgICBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpOworICAg ICB9LCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgfQorQEAgLTExODUsMTkgKzEyMzQsMTggQEAg dm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVxdWVzdFVwZGF0ZSgpCisgdm9pZCBRV2F5bGFuZFdpbmRv dzo6aGFuZGxlVXBkYXRlKCkKKyB7CisgICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2luZ3N0b3Jl KSA8PCAiaGFuZGxlVXBkYXRlIiA8PCBRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCk7CisrCisgICAg IC8vIFRPRE86IFNob3VsZCBzeW5jIHN1YnN1cmZhY2VzIGF2b2lkIHJlcXVlc3RpbmcgZnJhbWUg Y2FsbGJhY2tzPworICAgICBRUmVhZExvY2tlciBsb2NrKCZtU3VyZmFjZUxvY2spOworICAgICBp ZiAoIW1TdXJmYWNlKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBpZiAobUZyYW1lQ2FsbGJh Y2spIHsKKy0gICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3kobUZyYW1lQ2FsbGJhY2spOworLSAg ICAgICAgbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOworLSAgICB9CisrICAgIFFNdXRleExvY2tl ciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2Fs bGJhY2spCisrICAgICAgICByZXR1cm47CisgCistICAgIFFNdXRleExvY2tlciBsb2NrZXIobUZy YW1lUXVldWUubXV0ZXgpOworICAgICBzdHJ1Y3QgOjp3bF9zdXJmYWNlICp3cmFwcGVkU3VyZmFj ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3RydWN0IDo6d2xfc3VyZmFjZSAqPih3bF9wcm94eV9jcmVh dGVfd3JhcHBlcihtU3VyZmFjZS0+b2JqZWN0KCkpKTsKKy0gICAgd2xfcHJveHlfc2V0X3F1ZXVl KHJlaW50ZXJwcmV0X2Nhc3Q8d2xfcHJveHkgKj4od3JhcHBlZFN1cmZhY2UpLCBtRnJhbWVRdWV1 ZS5xdWV1ZSk7CisrICAgIHdsX3Byb3h5X3NldF9xdWV1ZShyZWludGVycHJldF9jYXN0PHdsX3By b3h5ICo+KHdyYXBwZWRTdXJmYWNlKSwgbURpc3BsYXktPmZyYW1lRXZlbnRRdWV1ZSgpKTsKKyAg ICAgbUZyYW1lQ2FsbGJhY2sgPSB3bF9zdXJmYWNlX2ZyYW1lKHdyYXBwZWRTdXJmYWNlKTsKKyAg ICAgd2xfcHJveHlfd3JhcHBlcl9kZXN0cm95KHdyYXBwZWRTdXJmYWNlKTsKKyAgICAgd2xfY2Fs bGJhY2tfYWRkX2xpc3RlbmVyKG1GcmFtZUNhbGxiYWNrLCAmUVdheWxhbmRXaW5kb3c6OmNhbGxi YWNrTGlzdGVuZXIsIHRoaXMpOworQEAgLTEyMDcsNiArMTI1NSw4IEBAIHZvaWQgUVdheWxhbmRX aW5kb3c6OmhhbmRsZVVwZGF0ZSgpCisgICAgIC8vIFN0YXJ0IGEgdGltZXIgZm9yIGhhbmRsaW5n IHRoZSBjYXNlIHdoZW4gdGhlIGNvbXBvc2l0b3Igc3RvcHMgc2VuZGluZyBmcmFtZSBjYWxsYmFj a3MuCisgICAgIGlmIChtRnJhbWVDYWxsYmFja1RpbWVvdXQgPiAwKSB7CisgICAgICAgICBRTWV0 YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMsIFt0aGlzXSB7CisrICAgICAgICAgICAgUU11dGV4 TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysKKyAgICAgICAgICAgICBpZiAobVdh aXRpbmdGb3JGcmFtZUNhbGxiYWNrKSB7CisgICAgICAgICAgICAgICAgIGlmIChtRnJhbWVDYWxs YmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgIG1GcmFt ZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQgPSBzdGFydFRpbWVyKG1GcmFtZUNhbGxiYWNr VGltZW91dCk7CitAQCAtMTI2Nyw2ICsxMzE3LDIwIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNl dE9wYXF1ZUFyZWEoY29uc3QgUVJlZ2lvbiAmb3BhcXVlQXJlYSkKKyAgICAgd2xfcmVnaW9uX2Rl c3Ryb3kocmVnaW9uKTsKKyB9CisgCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6YWRkQ2hpbGRQb3B1 cChRV2F5bGFuZFdpbmRvdyAqc3VyZmFjZSkgeworKyAgICBtQ2hpbGRQb3B1cHMuYXBwZW5kKHN1 cmZhY2UpOworK30KKysKKyt2b2lkIFFXYXlsYW5kV2luZG93OjpyZW1vdmVDaGlsZFBvcHVwKFFX YXlsYW5kV2luZG93ICpzdXJmYWNlKSB7CisrICAgIG1DaGlsZFBvcHVwcy5yZW1vdmVBbGwoc3Vy ZmFjZSk7CisrfQorKworK3ZvaWQgUVdheWxhbmRXaW5kb3c6OmNsb3NlQ2hpbGRQb3B1cHMoKSB7 CisrICAgIHdoaWxlICghbUNoaWxkUG9wdXBzLmlzRW1wdHkoKSkgeworKyAgICAgICAgYXV0byBw b3B1cCA9IG1DaGlsZFBvcHVwcy50YWtlTGFzdCgpOworKyAgICAgICAgcG9wdXAtPnJlc2V0KCk7 CisrICAgIH0KKyt9CisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvd19wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZHdpbmRvd19wLmgKK2luZGV4IDAxMzM3Y2ZmLi4yZjIxOWQ4YyAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93X3AuaAorKysrIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3dfcC5oCitAQCAtOTgsNiArOTgsOSBAQCBwdWJs aWM6CisgICAgIFFXYXlsYW5kV2luZG93KFFXaW5kb3cgKndpbmRvdywgUVdheWxhbmREaXNwbGF5 ICpkaXNwbGF5KTsKKyAgICAgflFXYXlsYW5kV2luZG93KCkgb3ZlcnJpZGU7CisgCisrICAgIC8v IEtlZXAgVG9wbGV2ZWxzIHBvc2l0aW9uIG9uIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlaXIg c2NyZWVuCisrICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBmaXhlZFRvcGxldmVsUG9zaXRpb25zID0g dHJ1ZTsKKysKKyAgICAgdmlydHVhbCBXaW5kb3dUeXBlIHdpbmRvd1R5cGUoKSBjb25zdCA9IDA7 CisgICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVTaXplKCk7CisgICAgIFdJZCB3aW5JZCgpIGNvbnN0 IG92ZXJyaWRlOworQEAgLTE0OCw2ICsxNTEsNyBAQCBwdWJsaWM6CisgICAgIHZvaWQgc2V0V2lu ZG93U3RhdGUoUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXMpIG92ZXJyaWRlOworICAgICB2b2lkIHNl dFdpbmRvd0ZsYWdzKFF0OjpXaW5kb3dGbGFncyBmbGFncykgb3ZlcnJpZGU7CisgICAgIHZvaWQg aGFuZGxlV2luZG93U3RhdGVzQ2hhbmdlZChRdDo6V2luZG93U3RhdGVzIHN0YXRlcyk7CisrICAg IFF0OjpXaW5kb3dTdGF0ZXMgd2luZG93U3RhdGVzKCkgY29uc3Q7CisgCisgICAgIHZvaWQgcmFp c2UoKSBvdmVycmlkZTsKKyAgICAgdm9pZCBsb3dlcigpIG92ZXJyaWRlOworQEAgLTIwNiw2ICsy MTAsMTAgQEAgcHVibGljOgorICAgICB2b2lkIGhhbmRsZVVwZGF0ZSgpOworICAgICB2b2lkIGRl bGl2ZXJVcGRhdGVSZXF1ZXN0KCkgb3ZlcnJpZGU7CisgCisrICAgIHZvaWQgYWRkQ2hpbGRQb3B1 cChRV2F5bGFuZFdpbmRvdyogY2hpbGQpOworKyAgICB2b2lkIHJlbW92ZUNoaWxkUG9wdXAoUVdh eWxhbmRXaW5kb3cqIGNoaWxkKTsKKysgICAgdm9pZCBjbG9zZUNoaWxkUG9wdXBzKCk7CisrCisg cHVibGljIHNsb3RzOgorICAgICB2b2lkIGFwcGx5Q29uZmlndXJlKCk7CisgCitAQCAtMjE1LDcg KzIyMywxMSBAQCBzaWduYWxzOgorIAorIHByb3RlY3RlZDoKKyAgICAgUVdheWxhbmREaXNwbGF5 ICptRGlzcGxheSA9IG51bGxwdHI7CisrCisrICAgIC8vIG1TdXJmYWNlIGNhbiBiZSB3cml0dGVu IGJ5IHRoZSBtYWluIHRocmVhZC4gT3RoZXIgdGhyZWFkcyBzaG91bGQgY2xhaW0gYSByZWFkIGxv Y2sgZm9yIGFjY2VzcworKyAgICBtdXRhYmxlIFFSZWFkV3JpdGVMb2NrIG1TdXJmYWNlTG9jazsK KyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRTdXJmYWNlPiBtU3VyZmFjZTsKKysKKyAgICAg UVdheWxhbmRTaGVsbFN1cmZhY2UgKm1TaGVsbFN1cmZhY2UgPSBudWxscHRyOworICAgICBRV2F5 bGFuZFN1YlN1cmZhY2UgKm1TdWJTdXJmYWNlV2luZG93ID0gbnVsbHB0cjsKKyAgICAgUVZlY3Rv cjxRV2F5bGFuZFN1YlN1cmZhY2UgKj4gbUNoaWxkcmVuOworQEAgLTIyNSwxMyArMjM3LDE0IEBA IHByb3RlY3RlZDoKKyAgICAgUXQ6Ok1vdXNlQnV0dG9ucyBtTW91c2VQcmVzc2VkSW5Db250ZW50 QXJlYSA9IFF0OjpOb0J1dHRvbjsKKyAKKyAgICAgV0lkIG1XaW5kb3dJZDsKKy0gICAgYm9vbCBt V2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgPSBmYWxzZTsKKyAgICAgYm9vbCBtRnJhbWVDYWxsYmFj a1RpbWVkT3V0ID0gZmFsc2U7IC8vIFdoZXRoZXIgdGhlIGZyYW1lIGNhbGxiYWNrIGhhcyB0aW1l ZCBvdXQKKy0gICAgYm9vbCBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gZmFsc2U7CisgICAg IGludCBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gLTE7CistICAgIFFFbGFw c2VkVGltZXIgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXI7CistICAgIHN0cnVjdCA6OndsX2Nh bGxiYWNrICptRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CistICAgIFFXYXlsYW5kRGlzcGxheTo6 RnJhbWVRdWV1ZSBtRnJhbWVRdWV1ZTsKKysgICAgUUF0b21pY0ludCBtV2FpdGluZ0ZvclVwZGF0 ZURlbGl2ZXJ5ID0gZmFsc2U7CisrCisrICAgIGJvb2wgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNr ID0gZmFsc2U7IC8vIFByb3RlY3RlZCBieSBtRnJhbWVTeW5jTXV0ZXgKKysgICAgUUVsYXBzZWRU aW1lciBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lcjsgLy8gUHJvdGVjdGVkIGJ5IG1GcmFtZVN5 bmNNdXRleAorKyAgICBzdHJ1Y3QgOjp3bF9jYWxsYmFjayAqbUZyYW1lQ2FsbGJhY2sgPSBudWxs cHRyOyAvLyBQcm90ZWN0ZWQgYnkgbUZyYW1lU3luY011dGV4CisrICAgIFFNdXRleCBtRnJhbWVT eW5jTXV0ZXg7CisgICAgIFFXYWl0Q29uZGl0aW9uIG1GcmFtZVN5bmNXYWl0OworIAorICAgICAv LyBUcnVlIHdoZW4gd2UgaGF2ZSBjYWxsZWQgZGVsaXZlclJlcXVlc3RVcGRhdGUsIGJ1dCB0aGUg Y2xpZW50IGhhcyBub3QgeWV0IGF0dGFjaGVkIGEgbmV3IGJ1ZmZlcgorQEAgLTI2MSw2ICsyNzQs OCBAQCBwcm90ZWN0ZWQ6CisgICAgIFFXYXlsYW5kQnVmZmVyICptUXVldWVkQnVmZmVyID0gbnVs bHB0cjsKKyAgICAgUVJlZ2lvbiBtUXVldWVkQnVmZmVyRGFtYWdlOworIAorKyAgICBRTGlzdDxR UG9pbnRlcjxRV2F5bGFuZFdpbmRvdz4+IG1DaGlsZFBvcHVwczsKKysKKyBwcml2YXRlOgorICAg ICB2b2lkIHNldEdlb21ldHJ5X2hlbHBlcihjb25zdCBRUmVjdCAmcmVjdCk7CisgICAgIHZvaWQg aW5pdFdpbmRvdygpOworQEAgLTI4MywxMiArMjk4LDEwIEBAIHByaXZhdGU6CisgICAgIFFSZWN0 IG1MYXN0RXhwb3NlR2VvbWV0cnk7CisgCisgICAgIHN0YXRpYyBjb25zdCB3bF9jYWxsYmFja19s aXN0ZW5lciBjYWxsYmFja0xpc3RlbmVyOworLSAgICB2b2lkIGhhbmRsZUZyYW1lQ2FsbGJhY2so KTsKKysgICAgdm9pZCBoYW5kbGVGcmFtZUNhbGxiYWNrKHN0cnVjdCA6OndsX2NhbGxiYWNrKiBj YWxsYmFjayk7CisgCisgICAgIHN0YXRpYyBRV2F5bGFuZFdpbmRvdyAqbU1vdXNlR3JhYjsKKyAK Ky0gICAgbXV0YWJsZSBRUmVhZFdyaXRlTG9jayBtU3VyZmFjZUxvY2s7CistCisgICAgIGZyaWVu ZCBjbGFzcyBRV2F5bGFuZFN1YlN1cmZhY2U7CisgfTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvc3JjL2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRlZ3JhdGlvbl9w LmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxp bnRlZ3JhdGlvbl9wLmgKK2luZGV4IGNjYWQwMDQ4Li40Y2M5YjNiOCAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3NoZWxsaW50ZWdyYXRpb24vcXdheWxhbmRzaGVsbGludGVncmF0 aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlvbi9xd2F5 bGFuZHNoZWxsaW50ZWdyYXRpb25fcC5oCitAQCAtNzMsMTEgKzczLDEwIEBAIHB1YmxpYzoKKyAg ICAgICAgIHJldHVybiB0cnVlOworICAgICB9CisgICAgIHZpcnR1YWwgUVdheWxhbmRTaGVsbFN1 cmZhY2UgKmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93KSA9IDA7Cisr ICAgIC8vIGtlcHQgZm9yIGJpbmFyeSBjb21wYXQgd2l0aCBsYXllci1zaGVsbC1xdAorICAgICB2 aXJ0dWFsIHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5l d0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpIHsKKy0gICAgICAgIGlmIChuZXdGb2N1 cykKKy0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2YXRlZChuZXdGb2N1 cyk7CistICAgICAgICBpZiAob2xkRm9jdXMpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5k bGVXaW5kb3dEZWFjdGl2YXRlZChvbGRGb2N1cyk7CisrICAgICAgICBRX1VOVVNFRChuZXdGb2N1 cyk7CisrICAgICAgICBRX1VOVVNFRChvbGRGb2N1cyk7CisgICAgIH0KKyAgICAgdmlydHVhbCB2 b2lkICpuYXRpdmVSZXNvdXJjZUZvcldpbmRvdyhjb25zdCBRQnl0ZUFycmF5ICZyZXNvdXJjZSwg UVdpbmRvdyAqd2luZG93KSB7CisgICAgICAgICBRX1VOVVNFRChyZXNvdXJjZSk7CitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9jb21wb3NpdG9yL2NvbmZpZ3VyZS5qc29uIGIvcXR3YXlsYW5k L3NyYy9jb21wb3NpdG9yL2NvbmZpZ3VyZS5qc29uCitpbmRleCBiY2ZkNTIxNS4uZGE5NWQwN2Ig MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJlLmpzb24KKysr KyBiL3F0d2F5bGFuZC9zcmMvY29tcG9zaXRvci9jb25maWd1cmUuanNvbgorQEAgLTcsNiArNywz MSBAQAorICAgICAidGVzdERpciI6ICIuLi8uLi9jb25maWcudGVzdHMiLAorIAorICAgICAibGli cmFyaWVzIjogeworKyAgICAgICAgIndheWxhbmQtY2xpZW50IjogeworKyAgICAgICAgICAgICJs YWJlbCI6ICJXYXlsYW5kIGNsaWVudCBsaWJyYXJ5IiwKKysgICAgICAgICAgICAiaGVhZGVycyI6 ICJ3YXlsYW5kLXZlcnNpb24uaCIsCisrICAgICAgICAgICAgInRlc3QiOiB7CisrICAgICAgICAg ICAgICAgICJtYWluIjogWworKyAgICAgICAgICAgICAgICAgICAgIiNpZiBXQVlMQU5EX1ZFUlNJ T05fTUFKT1IgPCAxIiwKKysgICAgICAgICAgICAgICAgICAgICIjIGVycm9yIFdheWxhbmQgMS44 LjAgb3IgaGlnaGVyIHJlcXVpcmVkIiwKKysgICAgICAgICAgICAgICAgICAgICIjZW5kaWYiLAor KyAgICAgICAgICAgICAgICAgICAgIiNpZiBXQVlMQU5EX1ZFUlNJT05fTUFKT1IgPT0gMSIsCisr ICAgICAgICAgICAgICAgICAgICAiIyBpZiBXQVlMQU5EX1ZFUlNJT05fTUlOT1IgPCA4IiwKKysg ICAgICAgICAgICAgICAgICAgICIjICBlcnJvciBXYXlsYW5kIDEuOC4wIG9yIGhpZ2hlciByZXF1 aXJlZCIsCisrICAgICAgICAgICAgICAgICAgICAiIyBlbmRpZiIsCisrICAgICAgICAgICAgICAg ICAgICAiIyBpZiBXQVlMQU5EX1ZFUlNJT05fTUlOT1IgPT0gOCIsCisrICAgICAgICAgICAgICAg ICAgICAiIyAgaWYgV0FZTEFORF9WRVJTSU9OX01JQ1JPIDwgMCIsCisrICAgICAgICAgICAgICAg ICAgICAiIyAgIGVycm9yIFdheWxhbmQgMS44LjAgb3IgaGlnaGVyIHJlcXVpcmVkIiwKKysgICAg ICAgICAgICAgICAgICAgICIjICBlbmRpZiIsCisrICAgICAgICAgICAgICAgICAgICAiIyBlbmRp ZiIsCisrICAgICAgICAgICAgICAgICAgICAiI2VuZGlmIgorKyAgICAgICAgICAgICAgICAgXQor KyAgICAgICAgICAgIH0sCisrICAgICAgICAgICAgInNvdXJjZXMiOiBbCisrICAgICAgICAgICAg ICAgIHsgInR5cGUiOiAicGtnQ29uZmlnIiwgImFyZ3MiOiAid2F5bGFuZC1jbGllbnQiIH0sCisr ICAgICAgICAgICAgICAgICItbHdheWxhbmQtY2xpZW50IgorKyAgICAgICAgICAgIF0KKysgICAg ICAgIH0sCisgICAgICAgICAid2F5bGFuZC1zZXJ2ZXIiOiB7CisgICAgICAgICAgICAgImxhYmVs IjogIndheWxhbmQtc2VydmVyIiwKKyAgICAgICAgICAgICAiaGVhZGVycyI6ICJ3YXlsYW5kLXZl cnNpb24uaCIsCitAQCAtMTUxLDggKzE3Niw3IEBACisgICAgICAgICAgICAgICAgICAgICAiI2Vu ZGlmIgorICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAi bGlicyI6ICItbGRybSIsCistICAgICAgICAgICAgInVzZSI6ICJlZ2wiCisrICAgICAgICAgICAg InVzZSI6ICJkcm0gZWdsIgorICAgICAgICAgfSwKKyAgICAgICAgICJkbWFidWYtY2xpZW50LWJ1 ZmZlciI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAiTGludXggQ2xpZW50IGRtYS1idWYgQnVm ZmVyIFNoYXJpbmciLAorQEAgLTE3Niw4ICsyMDAsNyBAQAorICAgICAgICAgICAgICAgICAgICAg InJldHVybiAwOyIKKyAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgIH0sCistICAgICAg ICAgICAgImxpYnMiOiAiLWxkcm0iLAorLSAgICAgICAgICAgICJ1c2UiOiAiZWdsIgorKyAgICAg ICAgICAgICJ1c2UiOiAiZHJtIGVnbCIKKyAgICAgICAgIH0sCisgICAgICAgICAidnVsa2FuLXNl cnZlci1idWZmZXIiOiB7CisgICAgICAgICAgICAgImxhYmVsIjogIlZ1bGthbiBCdWZmZXIgU2hh cmluZyIsCitAQCAtMTk1LDcgKzIxOCw4IEBACisgICAgICAgICAgICAgICAgICAgICAiZXhwb3J0 QWxsb2NJbmZvLmhhbmRsZVR5cGVzID0gVktfRVhURVJOQUxfTUVNT1JZX0hBTkRMRV9UWVBFX09Q QVFVRV9GRF9CSVRfS0hSOyIsCisgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIDA7IgorICAg ICAgICAgICAgICAgICBdCistICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0sCisrICAgICAg ICAgICAgInVzZSI6ICJ3YXlsYW5kLWNsaWVudCIKKyAgICAgICAgIH0KKyAgICAgfSwKKyAKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxh bmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNwcCBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRl Z3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuY3BwCitpbmRleCA3 ODg5ZjU3NS4uNjQxNDA2NzIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50 ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNwcAorKysrIGIv cXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5 bGFuZGVnbHdpbmRvdy5jcHAKK0BAIC00MCw2ICs0MCw3IEBACisgI2luY2x1ZGUgInF3YXlsYW5k ZWdsd2luZG93LmgiCisgCisgI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3F3YXls YW5kc2NyZWVuX3AuaD4KKysjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvcXdheWxh bmRzdXJmYWNlX3AuaD4KKyAjaW5jbHVkZSAicXdheWxhbmRnbGNvbnRleHQuaCIKKyAKKyAjaW5j bHVkZSA8UXRFZ2xTdXBwb3J0L3ByaXZhdGUvcWVnbGNvbnZlbmllbmNlX3AuaD4KK0BAIC0xMjQs NiArMTI1LDcgQEAgdm9pZCBRV2F5bGFuZEVnbFdpbmRvdzo6dXBkYXRlU3VyZmFjZShib29sIGNy ZWF0ZSkKKyAgICAgICAgIH0KKyAgICAgICAgIG1PZmZzZXQgPSBRUG9pbnQoKTsKKyAgICAgfSBl bHNlIHsKKysgICAgICAgIFFSZWFkTG9ja2VyIGxvY2tlcigmbVN1cmZhY2VMb2NrKTsKKyAgICAg ICAgIGlmIChtX3dheWxhbmRFZ2xXaW5kb3cpIHsKKyAgICAgICAgICAgICBpbnQgY3VycmVudF93 aWR0aCwgY3VycmVudF9oZWlnaHQ7CisgICAgICAgICAgICAgc3RhdGljIGJvb2wgZGlzYWJsZVJl c2l6ZUNoZWNrID0gcWdldGVudigiUVRfV0FZTEFORF9ESVNBQkxFX1JFU0laRUNIRUNLIikudG9J bnQoKTsKK0BAIC0xMzEsMTQgKzEzMywxNiBAQCB2b2lkIFFXYXlsYW5kRWdsV2luZG93Ojp1cGRh dGVTdXJmYWNlKGJvb2wgY3JlYXRlKQorICAgICAgICAgICAgIGlmICghZGlzYWJsZVJlc2l6ZUNo ZWNrKSB7CisgICAgICAgICAgICAgICAgIHdsX2VnbF93aW5kb3dfZ2V0X2F0dGFjaGVkX3NpemUo bV93YXlsYW5kRWdsV2luZG93LCAmY3VycmVudF93aWR0aCwgJmN1cnJlbnRfaGVpZ2h0KTsKKyAg ICAgICAgICAgICB9CistICAgICAgICAgICAgaWYgKGRpc2FibGVSZXNpemVDaGVjayB8fCAoY3Vy cmVudF93aWR0aCAhPSBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSB8fCBjdXJyZW50X2hlaWdodCAh PSBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCkpKSB7CisrICAgICAgICAgICAgaWYgKGRpc2FibGVS ZXNpemVDaGVjayB8fCAoY3VycmVudF93aWR0aCAhPSBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSB8 fCBjdXJyZW50X2hlaWdodCAhPSBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCkpIHx8IG1fcmVxdWVz dGVkU2l6ZSAhPSBzaXplV2l0aE1hcmdpbnMpIHsKKyAgICAgICAgICAgICAgICAgd2xfZWdsX3dp bmRvd19yZXNpemUobV93YXlsYW5kRWdsV2luZG93LCBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSwg c2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpLCBtT2Zmc2V0LngoKSwgbU9mZnNldC55KCkpOworKyAg ICAgICAgICAgICAgICBtX3JlcXVlc3RlZFNpemUgPSBzaXplV2l0aE1hcmdpbnM7CisgICAgICAg ICAgICAgICAgIG1PZmZzZXQgPSBRUG9pbnQoKTsKKyAKKyAgICAgICAgICAgICAgICAgbV9yZXNp emUgPSB0cnVlOworICAgICAgICAgICAgIH0KKy0gICAgICAgIH0gZWxzZSBpZiAoY3JlYXRlICYm IHdsU3VyZmFjZSgpKSB7CistICAgICAgICAgICAgbV93YXlsYW5kRWdsV2luZG93ID0gd2xfZWds X3dpbmRvd19jcmVhdGUod2xTdXJmYWNlKCksIHNpemVXaXRoTWFyZ2lucy53aWR0aCgpLCBzaXpl V2l0aE1hcmdpbnMuaGVpZ2h0KCkpOworKyAgICAgICAgfSBlbHNlIGlmIChjcmVhdGUgJiYgbVN1 cmZhY2UpIHsKKysgICAgICAgICAgICBtX3dheWxhbmRFZ2xXaW5kb3cgPSB3bF9lZ2xfd2luZG93 X2NyZWF0ZShtU3VyZmFjZS0+b2JqZWN0KCksIHNpemVXaXRoTWFyZ2lucy53aWR0aCgpLCBzaXpl V2l0aE1hcmdpbnMuaGVpZ2h0KCkpOworKyAgICAgICAgICAgIG1fcmVxdWVzdGVkU2l6ZSA9IHNp emVXaXRoTWFyZ2luczsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIGlmICghbV9lZ2xTdXJmYWNl ICYmIG1fd2F5bGFuZEVnbFdpbmRvdyAmJiBjcmVhdGUpIHsKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWds d2luZG93LmggYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxh bmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmgKK2luZGV4IDViMWY0ZDU2Li4wMDc5ZGZlZiAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFu ZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWlu dGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5oCitAQCAtODgs NiArODgsNyBAQCBwcml2YXRlOgorICAgICBtdXRhYmxlIFFPcGVuR0xGcmFtZWJ1ZmZlck9iamVj dCAqbV9jb250ZW50RkJPID0gbnVsbHB0cjsKKyAKKyAgICAgUVN1cmZhY2VGb3JtYXQgbV9mb3Jt YXQ7CisrICAgIFFTaXplIG1fcmVxdWVzdGVkU2l6ZTsKKyB9OworIAorIH0KK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFi dWYtdW5zdGFibGUtdjEvbGludXhkbWFidWYuaCBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRl Z3JhdGlvbi9jb21wb3NpdG9yL2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5o CitpbmRleCA1NmE3MTBjMy4uYzZhOGI2YzYgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2hh cmR3YXJlaW50ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFibGUtdjEvbGlu dXhkbWFidWYuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBv c2l0b3IvbGludXgtZG1hYnVmLXVuc3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmgKK0BAIC00MSw2ICs0 MSw4IEBACisgI2luY2x1ZGUgPFF0Q29yZS9RVGV4dFN0cmVhbT4KKyAjaW5jbHVkZSA8UXRHdWkv UU9wZW5HTFRleHR1cmU+CisgCisrI2luY2x1ZGUgPGFycmF5PgorKworICNpbmNsdWRlIDxFR0wv ZWdsLmg+CisgI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKyAKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvc3JjL3BsdWdpbnMvZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAgYi9xdHdheWxhbmQv c3JjL3BsdWdpbnMvZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAKK2luZGV4IGU3NWZkYTNj Li5mYTg4NTE0MyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNvcmF0aW9u cy9icmFkaWVudC9tYWluLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL2RlY29yYXRp b25zL2JyYWRpZW50L21haW4uY3BwCitAQCAtMTY0LDEzICsxNjQsMTAgQEAgdm9pZCBRV2F5bGFu ZEJyYWRpZW50RGVjb3JhdGlvbjo6cGFpbnQoUVBhaW50RGV2aWNlICpkZXZpY2UpCisgICAgIC8v IFdpbmRvdyBpY29uCisgICAgIFFJY29uIGljb24gPSB3YXlsYW5kV2luZG93KCktPndpbmRvd0lj b24oKTsKKyAgICAgaWYgKCFpY29uLmlzTnVsbCgpKSB7CistICAgICAgICBRUGl4bWFwIHBpeG1h cCA9IGljb24ucGl4bWFwKFFTaXplKDEyOCwgMTI4KSk7CistICAgICAgICBRUGl4bWFwIHNjYWxl ZCA9IHBpeG1hcC5zY2FsZWQoMjIsIDIyLCBRdDo6SWdub3JlQXNwZWN0UmF0aW8sIFF0OjpTbW9v dGhUcmFuc2Zvcm1hdGlvbik7CistCisgICAgICAgICBRUmVjdEYgaWNvblJlY3QoMCwgMCwgMjIs IDIyKTsKKy0gICAgICAgIHAuZHJhd1BpeG1hcChpY29uUmVjdC5hZGp1c3RlZChtYXJnaW5zKCku bGVmdCgpICsgQlVUVE9OX1NQQUNJTkcsIDQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0KSwKKy0gICAg ICAgICAgICAgICAgICAgICBzY2FsZWQsIGljb25SZWN0KTsKKysgICAgICAgIGljb25SZWN0LmFk anVzdChtYXJnaW5zKCkubGVmdCgpICsgQlVUVE9OX1NQQUNJTkcsIDQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgbWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0KSwKKysgICAg ICAgIGljb24ucGFpbnQoJnAsIGljb25SZWN0LnRvUmVjdCgpKTsKKyAgICAgfQorIAorICAgICAv LyBXaW5kb3cgdGl0bGUKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxp bnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1LmNwcCBiL3F0d2F5bGFu ZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3Bv cHVwdjUuY3BwCitpbmRleCA4NWQyNWUzYy4uNjBiZGQ0OTEgMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdw b3B1cHY1LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24v eGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NS5jcHAKK0BAIC00NywxOCArNDcsMjEgQEAg UVRfQkVHSU5fTkFNRVNQQUNFCisgCisgbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudCB7CisgCist UVdheWxhbmRYZGdQb3B1cFY1OjpRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6eGRnX3BvcHVw X3Y1ICpwb3B1cCwgUVdheWxhbmRXaW5kb3cgKndpbmRvdykKKytRV2F5bGFuZFhkZ1BvcHVwVjU6 OlFXYXlsYW5kWGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5bGFu ZFdpbmRvdyogcGFyZW50LCBRV2F5bGFuZFdpbmRvdyAqd2luZG93KQorICAgICA6IFFXYXlsYW5k U2hlbGxTdXJmYWNlKHdpbmRvdykKKyAgICAgLCBRdFdheWxhbmQ6OnhkZ19wb3B1cF92NShwb3B1 cCkKKysgICAgLCBtX3BhcmVudChwYXJlbnQpCisgICAgICwgbV93aW5kb3cod2luZG93KQorIHsK KyAgICAgaWYgKHdpbmRvdy0+ZGlzcGxheSgpLT53aW5kb3dFeHRlbnNpb24oKSkKKyAgICAgICAg IG1fZXh0ZW5kZWRXaW5kb3cgPSBuZXcgUVdheWxhbmRFeHRlbmRlZFN1cmZhY2Uod2luZG93KTsK KysgICAgbV9wYXJlbnQtPmFkZENoaWxkUG9wdXAobV93aW5kb3cpOworIH0KKyAKKyBRV2F5bGFu ZFhkZ1BvcHVwVjU6On5RV2F5bGFuZFhkZ1BvcHVwVjUoKQorIHsKKyAgICAgeGRnX3BvcHVwX2Rl c3Ryb3kob2JqZWN0KCkpOworKyAgICBtX3BhcmVudC0+cmVtb3ZlQ2hpbGRQb3B1cChtX3dpbmRv dyk7CisgICAgIGRlbGV0ZSBtX2V4dGVuZGVkV2luZG93OworIH0KKyAKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxh bmR4ZGdwb3B1cHY1X3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9u L3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjVfcC5oCitpbmRleCA3NDk0ZjZhNi4uZDg1 ZjEzMGIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlv bi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2 NV9wLmgKK0BAIC03MCw3ICs3MCw3IEBAIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFX YXlsYW5kWGRnUG9wdXBWNSA6IHB1YmxpYyBRV2F5bGFuZFNoZWxsU3VyZmFjZQorIHsKKyAgICAg UV9PQkpFQ1QKKyBwdWJsaWM6CistICAgIFFXYXlsYW5kWGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdf cG9wdXBfdjUgKnBvcHVwLCBRV2F5bGFuZFdpbmRvdyAqd2luZG93KTsKKysgICAgUVdheWxhbmRY ZGdQb3B1cFY1KHN0cnVjdCA6OnhkZ19wb3B1cF92NSAqcG9wdXAsIFFXYXlsYW5kV2luZG93KiBw YXJlbnQsIFFXYXlsYW5kV2luZG93ICp3aW5kb3cpOworICAgICB+UVdheWxhbmRYZGdQb3B1cFY1 KCkgb3ZlcnJpZGU7CisgCisgcHJvdGVjdGVkOgorQEAgLTc4LDYgKzc4LDcgQEAgcHJvdGVjdGVk OgorIAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5kRXh0ZW5kZWRTdXJmYWNlICptX2V4dGVuZGVk V2luZG93ID0gbnVsbHB0cjsKKysgICAgUVdheWxhbmRXaW5kb3cgKm1fcGFyZW50ID0gbnVsbHB0 cjsKKyAgICAgUVdheWxhbmRXaW5kb3cgKm1fd2luZG93ID0gbnVsbHB0cjsKKyB9OworIAorZGlm ZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVs bC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NS5jcHAKK2luZGV4IDdl MjQyYzRhLi5kZWY4NDUyYSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3BwCisrKysgYi9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxh bmR4ZGdzaGVsbHY1LmNwcAorQEAgLTg0LDcgKzg0LDcgQEAgUVdheWxhbmRYZGdQb3B1cFY1ICpR V2F5bGFuZFhkZ1NoZWxsVjU6OmNyZWF0ZVhkZ1BvcHVwKFFXYXlsYW5kV2luZG93ICp3aW5kb3cs IFEKKyAgICAgaW50IHggPSBwb3NpdGlvbi54KCkgKyBwYXJlbnRXaW5kb3ctPmZyYW1lTWFyZ2lu cygpLmxlZnQoKTsKKyAgICAgaW50IHkgPSBwb3NpdGlvbi55KCkgKyBwYXJlbnRXaW5kb3ctPmZy YW1lTWFyZ2lucygpLnRvcCgpOworIAorLSAgICBhdXRvIHBvcHVwID0gbmV3IFFXYXlsYW5kWGRn UG9wdXBWNShnZXRfeGRnX3BvcHVwKHdpbmRvdy0+d2xTdXJmYWNlKCksIHBhcmVudFN1cmZhY2Us IHNlYXQsIG1fcG9wdXBTZXJpYWwsIHgsIHkpLCB3aW5kb3cpOworKyAgICBhdXRvIHBvcHVwID0g bmV3IFFXYXlsYW5kWGRnUG9wdXBWNShnZXRfeGRnX3BvcHVwKHdpbmRvdy0+d2xTdXJmYWNlKCks IHBhcmVudFN1cmZhY2UsIHNlYXQsIG1fcG9wdXBTZXJpYWwsIHgsIHkpLCBwYXJlbnRXaW5kb3cs IHdpbmRvdyk7CisgICAgIG1fcG9wdXBzLmFwcGVuZCh3aW5kb3cpOworICAgICBRT2JqZWN0Ojpj b25uZWN0KHBvcHVwLCAmUVdheWxhbmRYZGdQb3B1cFY1OjpkZXN0cm95ZWQsIFt0aGlzLCB3aW5k b3ddKCl7CisgICAgICAgICBtX3BvcHVwcy5yZW1vdmVPbmUod2luZG93KTsKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdh eWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9u LmNwcAoraW5kZXggNGUyNTk0OWYuLmNmYzYwOTM5IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2 NWludGVncmF0aW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNwcAorQEAg LTg1LDEzICs4NSw2IEBAIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpRV2F5bGFuZFhkZ1NoZWxsVjVJ bnRlZ3JhdGlvbjo6Y3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kCisgICAgIHJldHVybiBtX3hk Z1NoZWxsLT5jcmVhdGVYZGdTdXJmYWNlKHdpbmRvdyk7CisgfQorIAorLXZvaWQgUVdheWxhbmRY ZGdTaGVsbFY1SW50ZWdyYXRpb246OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5k V2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSB7CistICAgIGlmIChu ZXdGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdQb3B1cFY1ICo+KG5ld0ZvY3VzLT5z aGVsbFN1cmZhY2UoKSkpCistICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2YXRl ZChuZXdGb2N1cyk7CistICAgIGlmIChvbGRGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRY ZGdQb3B1cFY1ICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpCistICAgICAgICBtX2Rpc3Bs YXktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG9sZEZvY3VzKTsKKy19CistCisgfQorIAorIFFU X0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxp bnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb25fcC5o IGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3 YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uX3AuaAoraW5kZXggY2U2YmRiOWUuLmFlZDg4Njcw IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRn LXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXls YW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRn c2hlbGx2NWludGVncmF0aW9uX3AuaAorQEAgLTY3LDcgKzY3LDYgQEAgcHVibGljOgorICAgICBR V2F5bGFuZFhkZ1NoZWxsVjVJbnRlZ3JhdGlvbigpIHt9CisgICAgIGJvb2wgaW5pdGlhbGl6ZShR V2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOworICAgICBRV2F5bGFuZFNoZWxsU3Vy ZmFjZSAqY3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kV2luZG93ICp3aW5kb3cpIG92ZXJyaWRl OworLSAgICB2b2lkIGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpu ZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSBvdmVycmlkZTsKKyAKKyBwcml2YXRl OgorICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFuZFhkZ1NoZWxsVjU+IG1feGRnU2hlbGw7Citk aWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hl bGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2LmNwcAoraW5kZXgg OGMzNzE2NjEuLjE1MWM3OGUzIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5jcHAKKysrKyBi L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5 bGFuZHhkZ3NoZWxsdjYuY3BwCitAQCAtMTc0LDYgKzE3NCw3IEBAIFFXYXlsYW5kWGRnU3VyZmFj ZVY2OjpQb3B1cDo6UG9wdXAoUVdheWxhbmRYZGdTdXJmYWNlVjYgKnhkZ1N1cmZhY2UsIFFXYXls YW5kWGRnCisgICAgICwgbV94ZGdTdXJmYWNlKHhkZ1N1cmZhY2UpCisgICAgICwgbV9wYXJlbnQo cGFyZW50KQorIHsKKysgICAgbV9wYXJlbnQtPndpbmRvdygpLT5hZGRDaGlsZFBvcHVwKG1feGRn U3VyZmFjZS0+d2luZG93KCkpOworIH0KKyAKKyBRV2F5bGFuZFhkZ1N1cmZhY2VWNjo6UG9wdXA6 On5Qb3B1cCgpCitAQCAtMTgxLDYgKzE4Miw4IEBAIFFXYXlsYW5kWGRnU3VyZmFjZVY2OjpQb3B1 cDo6flBvcHVwKCkKKyAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgIGRlc3Ryb3ko KTsKKyAKKysgICAgbV9wYXJlbnQtPndpbmRvdygpLT5yZW1vdmVDaGlsZFBvcHVwKG1feGRnU3Vy ZmFjZS0+d2luZG93KCkpOworKworICAgICBpZiAobV9ncmFiYmluZykgeworICAgICAgICAgYXV0 byAqc2hlbGwgPSBtX3hkZ1N1cmZhY2UtPm1fc2hlbGw7CisgICAgICAgICBRX0FTU0VSVChzaGVs bC0+bV90b3Btb3N0R3JhYmJpbmdQb3B1cCA9PSB0aGlzKTsKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdz aGVsbHY2aW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcAoraW5k ZXggMDMxNjQzMTYuLmU4ZGE4YmExIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5z L3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0 aW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRn LXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcAorQEAgLTY4LDIwICs2 OCw2IEBAIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpRV2F5bGFuZFhkZ1NoZWxsVjZJbnRlZ3JhdGlv bjo6Y3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kCisgICAgIHJldHVybiBtX3hkZ1NoZWxsLT5n ZXRYZGdTdXJmYWNlKHdpbmRvdyk7CisgfQorIAorLXZvaWQgUVdheWxhbmRYZGdTaGVsbFY2SW50 ZWdyYXRpb246OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdG b2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKQorLXsKKy0gICAgaWYgKG5ld0ZvY3VzKSB7 CistICAgICAgICBhdXRvICp4ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3Vy ZmFjZVY2ICo+KG5ld0ZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAgICAgICBpZiAoeGRnU3Vy ZmFjZSAmJiAheGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAgICAgICAgICAg bV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobmV3Rm9jdXMpOworLSAgICB9CistICAg IGlmIChvbGRGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlVjYgKj4ob2xk Rm9jdXMtPnNoZWxsU3VyZmFjZSgpKSkgeworLSAgICAgICAgYXV0byAqeGRnU3VyZmFjZSA9IHFv YmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2VWNiAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNl KCkpOworLSAgICAgICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNBY3Rp dmVTdGF0ZSgpKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93RGVhY3RpdmF0 ZWQob2xkRm9jdXMpOworLSAgICB9CistfQorLQorIH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitk aWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMv cGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZp bnRlZ3JhdGlvbl9wLmgKK2luZGV4IDI2MWY4Y2JiLi5jMWJjZDVjNiAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFu ZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlv bl9wLmgKK0BAIC02NSw3ICs2NSw2IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRYZGdTaGVsbFY2 SW50ZWdyYXRpb24oKSB7fQorICAgICBib29sIGluaXRpYWxpemUoUVdheWxhbmREaXNwbGF5ICpk aXNwbGF5KSBvdmVycmlkZTsKKyAgICAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKmNyZWF0ZVNoZWxs U3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93KSBvdmVycmlkZTsKKy0gICAgdm9pZCBoYW5k bGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5k V2luZG93ICpvbGRGb2N1cykgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAgICAgUVNjb3BlZFBv aW50ZXI8UVdheWxhbmRYZGdTaGVsbFY2PiBtX3hkZ1NoZWxsOworZGlmZiAtLWdpdCBhL3F0d2F5 bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3No ZWxsLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVs bC9xd2F5bGFuZHhkZ3NoZWxsLmNwcAoraW5kZXggZjNlM2MzMzAuLmZhNmQ1ODA4IDEwMDY0NAor LS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3 YXlsYW5keGRnc2hlbGwuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRl Z3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbC5jcHAKK0BAIC02NywxMSArNjcsNiBA QCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjpUb3BsZXZlbChRV2F5bGFuZFhkZ1N1cmZh Y2UgKnhkZ1N1cmZhY2UpCisgCisgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6flRvcGxl dmVsKCkKKyB7CistICAgIGlmIChtX2FwcGxpZWQuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkg eworLSAgICAgICAgUVdheWxhbmRXaW5kb3cgKndpbmRvdyA9IG1feGRnU3VyZmFjZS0+d2luZG93 KCk7CistICAgICAgICB3aW5kb3ctPmRpc3BsYXkoKS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQo d2luZG93KTsKKy0gICAgfQorLQorICAgICAvLyBUaGUgcHJvdG9jb2wgc3BlYyByZXF1aXJlcyB0 aGF0IHRoZSBkZWNvcmF0aW9uIG9iamVjdCBpcyBkZWxldGVkIGJlZm9yZSB4ZGdfdG9wbGV2ZWwu CisgICAgIGRlbGV0ZSBtX2RlY29yYXRpb247CisgICAgIG1fZGVjb3JhdGlvbiA9IG51bGxwdHI7 CitAQCAtODUsMTYgKzgwLDE1IEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6 YXBwbHlDb25maWd1cmUoKQorICAgICBpZiAoIShtX2FwcGxpZWQuc3RhdGVzICYgKFF0OjpXaW5k b3dNYXhpbWl6ZWR8UXQ6OldpbmRvd0Z1bGxTY3JlZW4pKSkKKyAgICAgICAgIG1fbm9ybWFsU2l6 ZSA9IG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPndpbmRvd0ZyYW1lR2VvbWV0cnkoKS5zaXplKCk7 CisgCistICAgIGlmICgobV9wZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpICYmICEo bV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpKQorKyAgICBpZiAoKG1fcGVuZGlu Zy5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSAmJiAhKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6 V2luZG93QWN0aXZlKQorKyAgICAgICAgJiYgIW1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmRpc3Bs YXkoKS0+aXNLZXlib2FyZEF2YWlsYWJsZSgpKQorICAgICAgICAgbV94ZGdTdXJmYWNlLT5tX3dp bmRvdy0+ZGlzcGxheSgpLT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobV94ZGdTdXJmYWNlLT5tX3dp bmRvdyk7CisgCistICAgIGlmICghKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZl KSAmJiAobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpKQorKyAgICBpZiAoISht X3BlbmRpbmcuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgJiYgKG1fYXBwbGllZC5zdGF0ZXMg JiBRdDo6V2luZG93QWN0aXZlKQorKyAgICAgICAgJiYgIW1feGRnU3VyZmFjZS0+bV93aW5kb3ct PmRpc3BsYXkoKS0+aXNLZXlib2FyZEF2YWlsYWJsZSgpKQorICAgICAgICAgbV94ZGdTdXJmYWNl LT5tX3dpbmRvdy0+ZGlzcGxheSgpLT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChtX3hkZ1N1cmZh Y2UtPm1fd2luZG93KTsKKyAKKy0gICAgLy8gVE9ETzogbm9uZSBvZiB0aGUgb3RoZXIgcGx1Z2lu cyBzZW5kIFdpbmRvd0FjdGl2ZSBlaXRoZXIsIGJ1dCBpcyBpdCBvbiBwdXJwb3NlPworLSAgICBR dDo6V2luZG93U3RhdGVzIHN0YXRlc1dpdGhvdXRBY3RpdmUgPSBtX3BlbmRpbmcuc3RhdGVzICYg flF0OjpXaW5kb3dBY3RpdmU7CistCistICAgIG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmhhbmRs ZVdpbmRvd1N0YXRlc0NoYW5nZWQoc3RhdGVzV2l0aG91dEFjdGl2ZSk7CisrICAgIG1feGRnU3Vy ZmFjZS0+bV93aW5kb3ctPmhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQobV9wZW5kaW5nLnN0YXRl cyk7CisgCisgICAgIGlmIChtX3BlbmRpbmcuc2l6ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgIC8v IEFuIGVtcHR5IHNpemUgaW4gdGhlIGNvbmZpZ3VyZSBtZWFucyBpdCdzIHVwIHRvIHRoZSBjbGll bnQgdG8gY2hvb3NlIHRoZSBzaXplCitAQCAtMTA1LDggKzk5LDYgQEAgdm9pZCBRV2F5bGFuZFhk Z1N1cmZhY2U6OlRvcGxldmVsOjphcHBseUNvbmZpZ3VyZSgpCisgICAgICAgICBtX3hkZ1N1cmZh Y2UtPm1fd2luZG93LT5yZXNpemVGcm9tQXBwbHlDb25maWd1cmUobV9wZW5kaW5nLnNpemUpOwor ICAgICB9CisgCistICAgIG1feGRnU3VyZmFjZS0+c2V0U2l6ZUhpbnRzKCk7CistCisgICAgIG1f YXBwbGllZCA9IG1fcGVuZGluZzsKKyAgICAgcUNEZWJ1ZyhsY1FwYVdheWxhbmQpIDw8ICJBcHBs aWVkIHBlbmRpbmcgeGRnX3RvcGxldmVsIGNvbmZpZ3VyZSBldmVudDoiIDw8IG1fYXBwbGllZC5z aXplIDw8IG1fYXBwbGllZC5zdGF0ZXM7CisgfQorQEAgLTIwMywxMiArMTk1LDE3IEBAIFF0V2F5 bGFuZDo6eGRnX3RvcGxldmVsOjpyZXNpemVfZWRnZSBRV2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxl dmVsOjpjb252ZXJ0VG9SZXNpCisgICAgICAgICAgICAgICAgIHwgKChlZGdlcyAmIFF0OjpSaWdo dEVkZ2UpID8gcmVzaXplX2VkZ2VfcmlnaHQgOiAwKSk7CisgfQorIAorLVFXYXlsYW5kWGRnU3Vy ZmFjZTo6UG9wdXA6OlBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxh bmRYZGdTdXJmYWNlICpwYXJlbnQsCisrUVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1cDo6UG9wdXAo UVdheWxhbmRYZGdTdXJmYWNlICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFdpbmRvdyAqcGFyZW50LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9u ZXIgKnBvc2l0aW9uZXIpCistICAgIDogeGRnX3BvcHVwKHhkZ1N1cmZhY2UtPmdldF9wb3B1cChw YXJlbnQtPm9iamVjdCgpLCBwb3NpdGlvbmVyLT5vYmplY3QoKSkpCistICAgICwgbV94ZGdTdXJm YWNlKHhkZ1N1cmZhY2UpCisrICAgIDogbV94ZGdTdXJmYWNlKHhkZ1N1cmZhY2UpCisrICAgICwg bV9wYXJlbnRYZGdTdXJmYWNlKHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4ocGFy ZW50LT5zaGVsbFN1cmZhY2UoKSkpCisgICAgICwgbV9wYXJlbnQocGFyZW50KQorIHsKKysKKysg ICAgaW5pdCh4ZGdTdXJmYWNlLT5nZXRfcG9wdXAobV9wYXJlbnRYZGdTdXJmYWNlID8gbV9wYXJl bnRYZGdTdXJmYWNlLT5vYmplY3QoKSA6IG51bGxwdHIsIHBvc2l0aW9uZXItPm9iamVjdCgpKSk7 CisrICAgIGlmIChtX3BhcmVudCkgeworKyAgICAgICAgbV9wYXJlbnQtPmFkZENoaWxkUG9wdXAo bV94ZGdTdXJmYWNlLT53aW5kb3coKSk7CisrICAgIH0KKyB9CisgCisgUVdheWxhbmRYZGdTdXJm YWNlOjpQb3B1cDo6flBvcHVwKCkKK0BAIC0yMTYsMTAgKzIxMywyNCBAQCBRV2F5bGFuZFhkZ1N1 cmZhY2U6OlBvcHVwOjp+UG9wdXAoKQorICAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAg ICAgZGVzdHJveSgpOworIAorKyAgICBpZiAobV9wYXJlbnQpIHsKKysgICAgICAgIG1fcGFyZW50 LT5yZW1vdmVDaGlsZFBvcHVwKG1feGRnU3VyZmFjZS0+d2luZG93KCkpOworKyAgICB9CisrCisg ICAgIGlmIChtX2dyYWJiaW5nKSB7CisgICAgICAgICBhdXRvICpzaGVsbCA9IG1feGRnU3VyZmFj ZS0+bV9zaGVsbDsKKyAgICAgICAgIFFfQVNTRVJUKHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1Bv cHVwID09IHRoaXMpOworLSAgICAgICAgc2hlbGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPSBt X3BhcmVudC0+bV9wb3B1cDsKKysgICAgICAgIHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVw ID0gbV9wYXJlbnRYZGdTdXJmYWNlID8gbV9wYXJlbnRYZGdTdXJmYWNlLT5tX3BvcHVwIDogbnVs bHB0cjsKKysgICAgICAgIG1fZ3JhYmJpbmcgPSBmYWxzZTsKKysKKysgICAgICAgIC8vIFN5bnRo ZXNpemUgUXQgZW50ZXIvbGVhdmUgZXZlbnRzIGZvciBwb3B1cAorKyAgICAgICAgUVdpbmRvdyAq bGVhdmUgPSBudWxscHRyOworKyAgICAgICAgaWYgKG1feGRnU3VyZmFjZSAmJiBtX3hkZ1N1cmZh Y2UtPndpbmRvdygpKQorKyAgICAgICAgICAgIGxlYXZlID0gbV94ZGdTdXJmYWNlLT53aW5kb3co KS0+d2luZG93KCk7CisrICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVMZWF2 ZUV2ZW50KGxlYXZlKTsKKysKKysgICAgICAgIGlmIChRV2luZG93ICplbnRlciA9IFFHdWlBcHBs aWNhdGlvbjo6dG9wTGV2ZWxBdChRQ3Vyc29yOjpwb3MoKSkpCisrICAgICAgICAgICAgUVdpbmRv d1N5c3RlbUludGVyZmFjZTo6aGFuZGxlRW50ZXJFdmVudChlbnRlciwgZW50ZXItPm1hcEZyb21H bG9iYWwoUUN1cnNvcjo6cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSk7CisgICAgIH0KKyB9CisgCitA QCAtMjU3LDYgKzI2OCw3IEBAIFFXYXlsYW5kWGRnU3VyZmFjZTo6UVdheWxhbmRYZGdTdXJmYWNl KFFXYXlsYW5kWGRnU2hlbGwgKnNoZWxsLCA6OnhkZ19zdXJmYWNlICpzCisgICAgICAgICAgICAg ICAgIG1fdG9wbGV2ZWwtPnNldF9wYXJlbnQocGFyZW50WGRnU3VyZmFjZS0+bV90b3BsZXZlbC0+ b2JqZWN0KCkpOworICAgICAgICAgfQorICAgICB9CisrICAgIHNldFNpemVIaW50cygpOworIH0K KyAKKyBRV2F5bGFuZFhkZ1N1cmZhY2U6On5RV2F5bGFuZFhkZ1N1cmZhY2UoKQorQEAgLTQwMCw4 ICs0MTIsNiBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6c2V0UG9wdXAoUVdheWxhbmRXaW5k b3cgKnBhcmVudCkKKyB7CisgICAgIFFfQVNTRVJUKCFtX3RvcGxldmVsICYmICFtX3BvcHVwKTsK KyAKKy0gICAgYXV0byBwYXJlbnRYZGdTdXJmYWNlID0gc3RhdGljX2Nhc3Q8UVdheWxhbmRYZGdT dXJmYWNlICo+KHBhcmVudC0+c2hlbGxTdXJmYWNlKCkpOworLQorICAgICBhdXRvIHBvc2l0aW9u ZXIgPSBuZXcgUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lcihtX3NoZWxsLT5jcmVhdGVfcG9zaXRp b25lcigpKTsKKyAgICAgLy8gc2V0X3BvcHVwIGV4cGVjdHMgYSBwb3NpdGlvbiByZWxhdGl2ZSB0 byB0aGUgcGFyZW50CisgICAgIFFQb2ludCB0cmFuc2llbnRQb3MgPSBtX3dpbmRvdy0+Z2VvbWV0 cnkoKS50b3BMZWZ0KCk7IC8vIHRoaXMgaXMgYWJzb2x1dGUKK0BAIC00MTQsOCArNDI0LDkgQEAg dm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OnNldFBvcHVwKFFXYXlsYW5kV2luZG93ICpwYXJlbnQp CisgICAgIHBvc2l0aW9uZXItPnNldF9hbmNob3IoUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lcjo6 YW5jaG9yX3RvcF9sZWZ0KTsKKyAgICAgcG9zaXRpb25lci0+c2V0X2dyYXZpdHkoUXRXYXlsYW5k Ojp4ZGdfcG9zaXRpb25lcjo6Z3Jhdml0eV9ib3R0b21fcmlnaHQpOworICAgICBwb3NpdGlvbmVy LT5zZXRfc2l6ZShtX3dpbmRvdy0+Z2VvbWV0cnkoKS53aWR0aCgpLCBtX3dpbmRvdy0+Z2VvbWV0 cnkoKS5oZWlnaHQoKSk7CistICAgIG1fcG9wdXAgPSBuZXcgUG9wdXAodGhpcywgcGFyZW50WGRn U3VyZmFjZSwgcG9zaXRpb25lcik7CisrICAgIG1fcG9wdXAgPSBuZXcgUG9wdXAodGhpcywgcGFy ZW50LCBwb3NpdGlvbmVyKTsKKyAgICAgcG9zaXRpb25lci0+ZGVzdHJveSgpOworKworICAgICBk ZWxldGUgcG9zaXRpb25lcjsKKyB9CisgCitAQCAtNDM3LDYgKzQ0OCwyMyBAQCB2b2lkIFFXYXls YW5kWGRnU3VyZmFjZTo6c2V0R3JhYlBvcHVwKFFXYXlsYW5kV2luZG93ICpwYXJlbnQsIFFXYXls YW5kSW5wdXREZXZpYworICAgICB9CisgICAgIHNldFBvcHVwKHBhcmVudCk7CisgICAgIG1fcG9w dXAtPmdyYWIoZGV2aWNlLCBzZXJpYWwpOworKworKyAgICAvLyBTeW50aGVzaXplIFF0IGVudGVy L2xlYXZlIGV2ZW50cyBmb3IgcG9wdXAKKysgICAgaWYgKCFwYXJlbnQpCisrICAgICAgICByZXR1 cm47CisrICAgIFFXaW5kb3cgKmN1cnJlbnQgPSBRR3VpQXBwbGljYXRpb246OnRvcExldmVsQXQo UUN1cnNvcjo6cG9zKCkpOworKyAgICBRV2luZG93ICpsZWF2ZSA9IHBhcmVudC0+d2luZG93KCk7 CisrICAgIGlmIChjdXJyZW50ICE9IGxlYXZlKQorKyAgICAgICAgcmV0dXJuOworKworKyAgICBR V2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVMZWF2ZUV2ZW50KGxlYXZlKTsKKysKKysgICAg UVdpbmRvdyAqZW50ZXIgPSBudWxscHRyOworKyAgICBpZiAobV9wb3B1cCAmJiBtX3BvcHVwLT5t X3hkZ1N1cmZhY2UgJiYgbV9wb3B1cC0+bV94ZGdTdXJmYWNlLT53aW5kb3coKSkKKysgICAgICAg IGVudGVyID0gbV9wb3B1cC0+bV94ZGdTdXJmYWNlLT53aW5kb3coKS0+d2luZG93KCk7CisrCisr ICAgIGlmIChlbnRlcikKKysgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUVu dGVyRXZlbnQoZW50ZXIsIGVudGVyLT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6OnBvcygpKSwgUUN1 cnNvcjo6cG9zKCkpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6eGRnX3N1cmZh Y2VfY29uZmlndXJlKHVpbnQzMl90IHNlcmlhbCkKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbF9wLmgg Yi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxh bmR4ZGdzaGVsbF9wLmgKK2luZGV4IDk2Nzg1MjA1Li40YjUxOGYwYSAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhk Z3NoZWxsX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24v eGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxfcC5oCitAQCAtMTMxLDE0ICsxMzEsMTUgQEAgcHJp dmF0ZToKKyAKKyAgICAgY2xhc3MgUG9wdXAgOiBwdWJsaWMgUXRXYXlsYW5kOjp4ZGdfcG9wdXAg eworICAgICBwdWJsaWM6CistICAgICAgICBQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1 cmZhY2UsIFFXYXlsYW5kWGRnU3VyZmFjZSAqcGFyZW50LCBRdFdheWxhbmQ6OnhkZ19wb3NpdGlv bmVyICpwb3NpdGlvbmVyKTsKKysgICAgICAgIFBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRn U3VyZmFjZSwgUVdheWxhbmRXaW5kb3cgKnBhcmVudCwgUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25l ciAqcG9zaXRpb25lcik7CisgICAgICAgICB+UG9wdXAoKSBvdmVycmlkZTsKKyAKKyAgICAgICAg IHZvaWQgZ3JhYihRV2F5bGFuZElucHV0RGV2aWNlICpzZWF0LCB1aW50IHNlcmlhbCk7CisgICAg ICAgICB2b2lkIHhkZ19wb3B1cF9wb3B1cF9kb25lKCkgb3ZlcnJpZGU7CisgCisgICAgICAgICBR V2F5bGFuZFhkZ1N1cmZhY2UgKm1feGRnU3VyZmFjZSA9IG51bGxwdHI7CistICAgICAgICBRV2F5 bGFuZFhkZ1N1cmZhY2UgKm1fcGFyZW50ID0gbnVsbHB0cjsKKysgICAgICAgIFFXYXlsYW5kWGRn U3VyZmFjZSAqbV9wYXJlbnRYZGdTdXJmYWNlID0gbnVsbHB0cjsKKysgICAgICAgIFFXYXlsYW5k V2luZG93ICptX3BhcmVudCA9IG51bGxwdHI7CisgICAgICAgICBib29sIG1fZ3JhYmJpbmcgPSBm YWxzZTsKKyAgICAgfTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hl bGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcCBi L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFu ZHhkZ3NoZWxsaW50ZWdyYXRpb24uY3BwCitpbmRleCA4NzY5ZDk3MS4uZGEwZGQ2YTcgMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwv cXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVn aW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlv bi5jcHAKK0BAIC02OSwyMCArNjksNiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqUVdheWxhbmRY ZGdTaGVsbEludGVncmF0aW9uOjpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaQorICAgICBy ZXR1cm4gbV94ZGdTaGVsbC0+Z2V0WGRnU3VyZmFjZSh3aW5kb3cpOworIH0KKyAKKy12b2lkIFFX YXlsYW5kWGRnU2hlbGxJbnRlZ3JhdGlvbjo6aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdh eWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpCisteworLSAg ICBpZiAobmV3Rm9jdXMpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1cmZhY2UgPSBxb2JqZWN0X2Nh c3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KG5ld0ZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAg ICAgICBpZiAoeGRnU3VyZmFjZSAmJiAheGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkp CistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobmV3Rm9jdXMp OworLSAgICB9CistICAgIGlmIChvbGRGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdT dXJmYWNlICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpIHsKKy0gICAgICAgIGF1dG8gKnhk Z1N1cmZhY2UgPSBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KG9sZEZvY3VzLT5z aGVsbFN1cmZhY2UoKSk7CistICAgICAgICBpZiAoeGRnU3VyZmFjZSAmJiAheGRnU3VyZmFjZS0+ aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5k b3dEZWFjdGl2YXRlZChvbGRGb2N1cyk7CistICAgIH0KKy19CistCisgfQorIAorIFFUX0VORF9O QU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3Jh dGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFu ZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxs aW50ZWdyYXRpb25fcC5oCitpbmRleCBiNmNhYTZjOS4uMmY5MjlmOTggMTAwNjQ0CistLS0gYS9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4 ZGdzaGVsbGludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmgKK0BA IC02NSw3ICs2NSw2IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRYZGdTaGVsbEludGVncmF0aW9u KCkge30KKyAgICAgYm9vbCBpbml0aWFsaXplKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSkgb3Zl cnJpZGU7CisgICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpjcmVhdGVTaGVsbFN1cmZhY2UoUVdh eWxhbmRXaW5kb3cgKndpbmRvdykgb3ZlcnJpZGU7CistICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRG b2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xk Rm9jdXMpIG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXls YW5kWGRnU2hlbGw+IG1feGRnU2hlbGw7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9zaGFy ZWQvcXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlci5jcHAgYi9xdHdheWxhbmQvc3JjL3No YXJlZC9xd2F5bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyLmNwcAoraW5kZXggNTI2ZDBlZjQu LmY1MGNjZjMwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRpbnB1 dG1ldGhvZGV2ZW50YnVpbGRlci5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXls YW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXIuY3BwCitAQCAtMzksNyArMzksMTAgQEAKKyAKKyAj aW5jbHVkZSAicXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlcl9wLmgiCisgCisrI2luY2x1 ZGUgPFFCcnVzaD4KKysjaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorICNpbmNsdWRlIDxRSW5w dXRNZXRob2Q+CisrI2luY2x1ZGUgPFFQYWxldHRlPgorICNpbmNsdWRlIDxRVGV4dENoYXJGb3Jt YXQ+CisgCisgI2lmZGVmIFFUX0JVSUxEX1dBWUxBTkRDT01QT1NJVE9SX0xJQgorQEAgLTgxLDMy ICs4NCwzOCBAQCB2b2lkIFFXYXlsYW5kSW5wdXRNZXRob2RFdmVudEJ1aWxkZXI6OmFkZFByZWVk aXRTdHlsaW5nKHVpbnQzMl90IGluZGV4LCB1aW50MzJfdAorICAgICBRVGV4dENoYXJGb3JtYXQg Zm9ybWF0OworIAorICAgICBzd2l0Y2ggKHN0eWxlKSB7CistICAgIGNhc2UgMDoKKy0gICAgY2Fz ZSAxOgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfTk9ORToKKysg ICAgICAgIGJyZWFrOworKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVf REVGQVVMVDoKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX1VOREVS TElORToKKyAgICAgICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworICAgICAgICAg Zm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2luZ2xlVW5kZXJsaW5l KTsKKyAgICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0 dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9y bWF0KSk7CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSAyOgorLSAgICBjYXNlIDM6CisrICAg IGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9BQ1RJVkU6CisrICAgIGNhc2Ug WldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9JTkFDVElWRToKKyAgICAgICAgIGZvcm1h dC5zZXRGb250V2VpZ2h0KFFGb250OjpCb2xkKTsKKyAgICAgICAgIGZvcm1hdC5zZXRGb250VW5k ZXJsaW5lKHRydWUpOworICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hh ckZvcm1hdDo6U2luZ2xlVW5kZXJsaW5lKTsKKyAgICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBl bmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZv cm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisgICAgICAgICBicmVhazsKKy0gICAgY2Fz ZSA0OgorLSAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7CistICAgICAgICBm b3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUp OworLSAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0 cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3Jt YXQpKTsKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX0hJR0hMSUdI VDoKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX1NFTEVDVElPTjoK KysgICAgICAgIHsKKysgICAgICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsK KysgICAgICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpT aW5nbGVVbmRlcmxpbmUpOworKyAgICAgICAgICAgIFFQYWxldHRlIHBhbGV0dGUgPSBxQXBwLT5w YWxldHRlKCk7CisrICAgICAgICAgICAgZm9ybWF0LnNldEJhY2tncm91bmQoUUJydXNoKHBhbGV0 dGUuY29sb3IoUVBhbGV0dGU6OkFjdGl2ZSwgUVBhbGV0dGU6OkhpZ2hsaWdodCkpKTsKKysgICAg ICAgICAgICBmb3JtYXQuc2V0Rm9yZWdyb3VuZChRQnJ1c2gocGFsZXR0ZS5jb2xvcihRUGFsZXR0 ZTo6QWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0ZWRUZXh0KSkpOworKyAgICAgICAgICAgIG1f cHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRN ZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisrICAgICAg ICB9CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSA1OgorKyAgICBjYXNlIFpXUF9URVhUX0lO UFVUX1YyX1BSRUVESVRfU1RZTEVfSU5DT1JSRUNUOgorICAgICAgICAgZm9ybWF0LnNldEZvbnRV bmRlcmxpbmUodHJ1ZSk7CisgICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRD aGFyRm9ybWF0OjpXYXZlVW5kZXJsaW5lKTsKKyAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVD b2xvcihRQ29sb3IoUXQ6OnJlZCkpOworICAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChR SW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0 LCBpbmRleCwgbGVuZ3RoLCBmb3JtYXQpKTsKKyAgICAgICAgIGJyZWFrOworLS8vICAgIGNhc2Ug UXRXYXlsYW5kOjp3bF90ZXh0X2lucHV0OjpwcmVlZGl0X3N0eWxlX3NlbGVjdGlvbjoKKy0vLyAg ICBjYXNlIFF0V2F5bGFuZDo6d2xfdGV4dF9pbnB1dDo6cHJlZWRpdF9zdHlsZV9ub25lOgorICAg ICBkZWZhdWx0OgorICAgICAgICAgYnJlYWs7CisgICAgIH0KK0BAIC0xNTMsNyArMTYyLDcgQEAg UUlucHV0TWV0aG9kRXZlbnQgUVdheWxhbmRJbnB1dE1ldGhvZEV2ZW50QnVpbGRlcjo6YnVpbGRQ cmVlZGl0KGNvbnN0IFFTdHJpbmcgJnQKKyAKKyAgICAgaWYgKG1fcHJlZWRpdEN1cnNvciA8IDAp IHsKKyAgICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1 dGUoUUlucHV0TWV0aG9kRXZlbnQ6OkN1cnNvciwgMCwgMCwgUVZhcmlhbnQoKSkpOworLSAgICB9 IGVsc2UgaWYgKG1fcHJlZWRpdEN1cnNvciA+IDApIHsKKysgICAgfSBlbHNlIHsKKyAgICAgICAg IGF0dHJpYnV0ZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0 aG9kRXZlbnQ6OkN1cnNvciwgaW5kZXhGcm9tV2F5bGFuZCh0ZXh0LCBtX3ByZWVkaXRDdXJzb3Ip LCAxLCBRVmFyaWFudCgpKSk7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3Jj L3NoYXJlZC9xd2F5bGFuZG1pbWVoZWxwZXIuY3BwIGIvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdh eWxhbmRtaW1laGVscGVyLmNwcAoraW5kZXggYTVmZGQzNGQuLmUyZmUxOTI4IDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcAorKysrIGIvcXR3 YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcAorQEAgLTYwLDcgKzYwLDcg QEAgUUJ5dGVBcnJheSBRV2F5bGFuZE1pbWVIZWxwZXI6OmdldEJ5dGVBcnJheShRTWltZURhdGEg Km1pbWVEYXRhLCBjb25zdCBRU3RyaW5nICYKKyAgICAgICAgICAgICBidWYub3BlbihRSU9EZXZp Y2U6OlJlYWRXcml0ZSk7CisgICAgICAgICAgICAgUUJ5dGVBcnJheSBmbXQgPSAiQk1QIjsKKyAg ICAgICAgICAgICBpZiAobWltZVR5cGUuc3RhcnRzV2l0aChRTGF0aW4xU3RyaW5nKCJpbWFnZS8i KSkpIHsKKy0gICAgICAgICAgICAgICAgUUJ5dGVBcnJheSBpbWdGbXQgPSBtaW1lVHlwZS5taWQo NikudG9VcHBlcigpLnRvTGF0aW4xKCk7CisrICAgICAgICAgICAgICAgIFFCeXRlQXJyYXkgaW1n Rm10ID0gbWltZVR5cGUubWlkKDYpLnRvTG93ZXIoKS50b0xhdGluMSgpOworICAgICAgICAgICAg ICAgICBpZiAoUUltYWdlV3JpdGVyOjpzdXBwb3J0ZWRJbWFnZUZvcm1hdHMoKS5jb250YWlucyhp bWdGbXQpKQorICAgICAgICAgICAgICAgICAgICAgZm10ID0gaW1nRm10OworICAgICAgICAgICAg IH0KK0BAIC03NCw3ICs3NCw3IEBAIFFCeXRlQXJyYXkgUVdheWxhbmRNaW1lSGVscGVyOjpnZXRC eXRlQXJyYXkoUU1pbWVEYXRhICptaW1lRGF0YSwgY29uc3QgUVN0cmluZyAmCisgICAgICAgICBR TGlzdDxRVXJsPiB1cmxzID0gbWltZURhdGEtPnVybHMoKTsKKyAgICAgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgdXJscy5jb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgICBjb250ZW50LmFwcGVu ZCh1cmxzLmF0KGkpLnRvRW5jb2RlZCgpKTsKKy0gICAgICAgICAgICBjb250ZW50LmFwcGVuZCgn XG4nKTsKKysgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIpOworICAgICAgICAgfQor ICAgICB9IGVsc2UgeworICAgICAgICAgY29udGVudCA9IG1pbWVEYXRhLT5kYXRhKG1pbWVUeXBl KTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvZGF0YWRldmljZXYx L3RzdF9kYXRhZGV2aWNldjEuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFk ZXZpY2V2MS90c3RfZGF0YWRldmljZXYxLmNwcAoraW5kZXggMTU2OGIzYjkuLjA2NzQxMGQwIDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZpY2V2MS90c3Rf ZGF0YWRldmljZXYxLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFk ZXZpY2V2MS90c3RfZGF0YWRldmljZXYxLmNwcAorQEAgLTM1LDcgKzM1LDcgQEAKKyAKKyB1c2lu ZyBuYW1lc3BhY2UgTW9ja0NvbXBvc2l0b3I7CisgCistY29uc3RleHByIGludCBkYXRhRGV2aWNl VmVyc2lvbiA9IDE7CisrY29uc3RleHByIGludCBkYXRhRGV2aWNlVmVyc2lvbiA9IDM7CisgCisg Y2xhc3MgRGF0YURldmljZUNvbXBvc2l0b3IgOiBwdWJsaWMgRGVmYXVsdENvbXBvc2l0b3Igewor IHB1YmxpYzoKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2VhdHY1 L3RzdF9zZWF0djUuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NlYXR2NS90c3Rf c2VhdHY1LmNwcAoraW5kZXggOTMxMmMyZTUuLjJlYTM4MmYxIDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAorKysrIGIvcXR3YXls YW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAorQEAgLTczLDYgKzcz LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBtdWx0aVRvdWNoKCk7CisgICAgIHZvaWQg bXVsdGlUb3VjaFVwQW5kTW90aW9uRnJhbWUoKTsKKyAgICAgdm9pZCB0YXBBbmRNb3ZlSW5TYW1l RnJhbWUoKTsKKysgICAgdm9pZCBjYW5jZWxUb3VjaCgpOworIH07CisgCisgdm9pZCB0c3Rfc2Vh dHY1OjpiaW5kc1RvU2VhdCgpCitAQCAtNjQ2LDUgKzY0NywzNCBAQCB2b2lkIHRzdF9zZWF0djU6 OnRhcEFuZE1vdmVJblNhbWVGcmFtZSgpCisgICAgIFFUUllfQ09NUEFSRSh3aW5kb3cubV9ldmVu dHMubGFzdCgpLnRvdWNoUG9pbnRzLmZpcnN0KCkuc3RhdGUoKSwgUXQ6OlRvdWNoUG9pbnRTdGF0 ZTo6VG91Y2hQb2ludFJlbGVhc2VkKTsKKyB9CisgCisrdm9pZCB0c3Rfc2VhdHY1OjpjYW5jZWxU b3VjaCgpCisreworKyAgICBUb3VjaFdpbmRvdyB3aW5kb3c7CisrICAgIFFDT01QT1NJVE9SX1RS WV9WRVJJRlkoeGRnU3VyZmFjZSgpICYmIHhkZ1N1cmZhY2UoKS0+bV9jb21taXR0ZWRDb25maWd1 cmVTZXJpYWwpOworKworKyAgICBleGVjKFs9XSB7CisrICAgICAgICBhdXRvICp0ID0gdG91Y2go KTsKKysgICAgICAgIGF1dG8gKmMgPSBjbGllbnQoKTsKKysgICAgICAgIHQtPnNlbmREb3duKHhk Z1RvcGxldmVsKCktPnN1cmZhY2UoKSwgezMyLCAzMn0sIDEpOworKyAgICAgICAgdC0+c2VuZEZy YW1lKGMpOworKyAgICAgICAgdC0+c2VuZENhbmNlbChjKTsKKysgICAgICAgIHQtPnNlbmRGcmFt ZShjKTsKKysgICAgfSk7CisrCisrICAgIFFUUllfVkVSSUZZKCF3aW5kb3cubV9ldmVudHMuZW1w dHkoKSk7CisrICAgIHsKKysgICAgICAgIGF1dG8gZSA9IHdpbmRvdy5tX2V2ZW50cy50YWtlRmly c3QoKTsKKysgICAgICAgIFFDT01QQVJFKGUudHlwZSwgUUV2ZW50OjpUb3VjaEJlZ2luKTsKKysg ICAgICAgIFFDT01QQVJFKGUudG91Y2hQb2ludFN0YXRlcywgUXQ6OlRvdWNoUG9pbnRQcmVzc2Vk KTsKKysgICAgICAgIFFDT01QQVJFKGUudG91Y2hQb2ludHMubGVuZ3RoKCksIDEpOworKyAgICAg ICAgUUNPTVBBUkUoZS50b3VjaFBvaW50cy5maXJzdCgpLnBvcygpLCBRUG9pbnRGKDMyLXdpbmRv dy5mcmFtZU1hcmdpbnMoKS5sZWZ0KCksIDMyLXdpbmRvdy5mcmFtZU1hcmdpbnMoKS50b3AoKSkp OworKyAgICB9CisrICAgIHsKKysgICAgICAgIGF1dG8gZSA9IHdpbmRvdy5tX2V2ZW50cy50YWtl Rmlyc3QoKTsKKysgICAgICAgIFFDT01QQVJFKGUudHlwZSwgUUV2ZW50OjpUb3VjaENhbmNlbCk7 CisrICAgICAgICBRQ09NUEFSRShlLnRvdWNoUG9pbnRzLmxlbmd0aCgpLCAwKTsKKysgICAgfQor K30KKysKKyBRQ09NUE9TSVRPUl9URVNUX01BSU4odHN0X3NlYXR2NSkKKyAjaW5jbHVkZSAidHN0 X3NlYXR2NS5tb2MiCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3No YXJlZC9jb3JlY29tcG9zaXRvci5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hh cmVkL2NvcmVjb21wb3NpdG9yLmNwcAoraW5kZXggNWM2YzgzYmEuLmZhOWI3NjYyIDEwMDY0NAor LS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlY29tcG9zaXRvci5j cHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZWNvbXBvc2l0 b3IuY3BwCitAQCAtMjcsNiArMjcsNyBAQAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgCisgI2lu Y2x1ZGUgImNvcmVjb21wb3NpdG9yLmgiCisrI2luY2x1ZGUgPHRocmVhZD4KKyAKKyBuYW1lc3Bh Y2UgTW9ja0NvbXBvc2l0b3IgeworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRv L2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2Ns aWVudC9zaGFyZWQvY29yZXByb3RvY29sLmNwcAoraW5kZXggMGQ5ODg1MjEuLmQxYTJlN2NiIDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9j b2wuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90 b2NvbC5jcHAKK0BAIC00NTEsNiArNDUxLDEzIEBAIHZvaWQgVG91Y2g6OnNlbmRGcmFtZSh3bF9j bGllbnQgKmNsaWVudCkKKyAgICAgICAgIHNlbmRfZnJhbWUoci0+aGFuZGxlKTsKKyB9CisgCisr dm9pZCBUb3VjaDo6c2VuZENhbmNlbCh3bF9jbGllbnQgKmNsaWVudCkKKyt7CisrICAgIGNvbnN0 IGF1dG8gdG91Y2hSZXNvdXJjZXMgPSByZXNvdXJjZU1hcCgpLnZhbHVlcyhjbGllbnQpOworKyAg ICBmb3IgKGF1dG8gKnIgOiB0b3VjaFJlc291cmNlcykKKysgICAgICAgIHNlbmRfY2FuY2VsKHIt PmhhbmRsZSk7CisrfQorKworIHVpbnQgS2V5Ym9hcmQ6OnNlbmRFbnRlcihTdXJmYWNlICpzdXJm YWNlKQorIHsKKyAgICAgYXV0byBzZXJpYWwgPSBtX3NlYXQtPm1fY29tcG9zaXRvci0+bmV4dFNl cmlhbCgpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQv Y29yZXByb3RvY29sLmggYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVw cm90b2NvbC5oCitpbmRleCBhMWFmMTM3YS4uMjEwZDhkZGIgMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oCisrKysgYi9xdHdheWxh bmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oCitAQCAtMTU4LDcgKzE1 OCw3IEBAIGNsYXNzIFdsQ29tcG9zaXRvciA6IHB1YmxpYyBHbG9iYWwsIHB1YmxpYyBRdFdheWxh bmRTZXJ2ZXI6OndsX2NvbXBvc2l0b3IKKyB7CisgICAgIFFfT0JKRUNUCisgcHVibGljOgorLSAg ICBleHBsaWNpdCBXbENvbXBvc2l0b3IoQ29yZUNvbXBvc2l0b3IgKmNvbXBvc2l0b3IsIGludCB2 ZXJzaW9uID0gMykKKysgICAgZXhwbGljaXQgV2xDb21wb3NpdG9yKENvcmVDb21wb3NpdG9yICpj b21wb3NpdG9yLCBpbnQgdmVyc2lvbiA9IDQpCisgICAgICAgICA6IFF0V2F5bGFuZFNlcnZlcjo6 d2xfY29tcG9zaXRvcihjb21wb3NpdG9yLT5tX2Rpc3BsYXksIHZlcnNpb24pCisgICAgICAgICAs IG1fY29tcG9zaXRvcihjb21wb3NpdG9yKQorICAgICB7fQorQEAgLTM2NCw2ICszNjQsNyBAQCBw dWJsaWM6CisgICAgIHVpbnQgc2VuZFVwKHdsX2NsaWVudCAqY2xpZW50LCBpbnQgaWQpOworICAg ICB2b2lkIHNlbmRNb3Rpb24od2xfY2xpZW50ICpjbGllbnQsIGNvbnN0IFFQb2ludEYgJnBvc2l0 aW9uLCBpbnQgaWQpOworICAgICB2b2lkIHNlbmRGcmFtZSh3bF9jbGllbnQgKmNsaWVudCk7Cisr ICAgIHZvaWQgc2VuZENhbmNlbCh3bF9jbGllbnQgKmNsaWVudCk7CisgCisgICAgIFNlYXQgKm1f c2VhdCA9IG51bGxwdHI7CisgfTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9j bGllbnQvc2hhcmVkX29sZC9tb2NrY29tcG9zaXRvci5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0 by9jbGllbnQvc2hhcmVkX29sZC9tb2NrY29tcG9zaXRvci5jcHAKK2luZGV4IGE0MTVjYmY1Li5i MWQzZDA3ZCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRf b2xkL21vY2tjb21wb3NpdG9yLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50 L3NoYXJlZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwCitAQCAtMzQyLDcgKzM0Miw3IEBAIENvbXBv c2l0b3I6OkNvbXBvc2l0b3IoTW9ja0NvbXBvc2l0b3IgKm1vY2tDb21wb3NpdG9yKQorICAgICAg ICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAgICB9CisgCistICAgIHdsX2dsb2JhbF9jcmVhdGUo bV9kaXNwbGF5LCAmd2xfY29tcG9zaXRvcl9pbnRlcmZhY2UsIDEsIHRoaXMsIGJpbmRDb21wb3Np dG9yKTsKKysgICAgd2xfZ2xvYmFsX2NyZWF0ZShtX2Rpc3BsYXksICZ3bF9jb21wb3NpdG9yX2lu dGVyZmFjZSwgNCwgdGhpcywgYmluZENvbXBvc2l0b3IpOworIAorICAgICBtX2RhdGFfZGV2aWNl X21hbmFnZXIucmVzZXQobmV3IERhdGFEZXZpY2VNYW5hZ2VyKHRoaXMsIG1fZGlzcGxheSkpOwor IAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21v Y2tzdXJmYWNlLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21v Y2tzdXJmYWNlLmNwcAoraW5kZXggZTlkZjVmOTAuLmMzMjQ2ZTRhIDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuY3BwCisrKysg Yi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5jcHAK K0BAIC0xMjUsNiArMTI1LDE2IEBAIHZvaWQgU3VyZmFjZTo6c3VyZmFjZV9kYW1hZ2UoUmVzb3Vy Y2UgKnJlc291cmNlLAorICAgICBRX1VOVVNFRChoZWlnaHQpOworIH0KKyAKKyt2b2lkIFN1cmZh Y2U6OnN1cmZhY2VfZGFtYWdlX2J1ZmZlcihSZXNvdXJjZSAqcmVzb3VyY2UsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qg d2lkdGgsIGludDMyX3QgaGVpZ2h0KQorK3sKKysgICAgUV9VTlVTRUQocmVzb3VyY2UpOworKyAg ICBRX1VOVVNFRCh4KTsKKysgICAgUV9VTlVTRUQoeSk7CisrICAgIFFfVU5VU0VEKHdpZHRoKTsK KysgICAgUV9VTlVTRUQoaGVpZ2h0KTsKKyt9CisrCisgdm9pZCBTdXJmYWNlOjpzdXJmYWNlX2Zy YW1lKFJlc291cmNlICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgY2FsbGJhY2spCisgeworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2Ns aWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmggYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGll bnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5oCitpbmRleCA5NDlkYzIzZC4uZDE3NjgzN2UgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3Vy ZmFjZS5oCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nr c3VyZmFjZS5oCitAQCAtNjUsNiArNjUsOCBAQCBwcm90ZWN0ZWQ6CisgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IHdsX3Jlc291cmNlICpidWZmZXIsIGludCB4LCBpbnQgeSkgb3ZlcnJp ZGU7CisgICAgIHZvaWQgc3VyZmFjZV9kYW1hZ2UoUmVzb3VyY2UgKnJlc291cmNlLAorICAgICAg ICAgICAgICAgICAgICAgICAgIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBp bnQzMl90IGhlaWdodCkgb3ZlcnJpZGU7CisrICAgIHZvaWQgc3VyZmFjZV9kYW1hZ2VfYnVmZmVy KFJlc291cmNlICpyZXNvdXJjZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KSBvdmVycmlk ZTsKKyAgICAgdm9pZCBzdXJmYWNlX2ZyYW1lKFJlc291cmNlICpyZXNvdXJjZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IGNhbGxiYWNrKSBvdmVycmlkZTsKKyAgICAgdm9pZCBz dXJmYWNlX2NvbW1pdChSZXNvdXJjZSAqcmVzb3VyY2UpIG92ZXJyaWRlOworZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcCBiL3F0 d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcAoraW5kZXgg OTVlNGU2MDkuLjYwYzY3MmNlIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xp ZW50L3N1cmZhY2UvdHN0X3N1cmZhY2UuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9j bGllbnQvc3VyZmFjZS90c3Rfc3VyZmFjZS5jcHAKK0BAIC0xMjksNiArMTI5LDEwIEBAIHZvaWQg dHN0X3N1cmZhY2U6OndhaXRGb3JGcmFtZUNhbGxiYWNrR2woKQorICAgICAvLyBNYWtlIHN1cmUg d2UgZm9sbG93IGZyYW1lIGNhbGxiYWNrcyBmb3Igc29tZSBmcmFtZXMKKyAgICAgZm9yIChpbnQg aSA9IDA7IGkgPCA1OyArK2kpIHsKKyAgICAgICAgIHhkZ1BpbmdBbmRXYWl0Rm9yUG9uZygpOyAv LyBNYWtlIHN1cmUgdGhpbmdzIGhhdmUgaGFwcGVuZWQgb24gdGhlIGNsaWVudAorKyAgICAgICAg aWYgKCFxRW52aXJvbm1lbnRWYXJpYWJsZUludFZhbHVlKCJRVF9XQVlMQU5EX0RJU0FCTEVfV0lO RE9XREVDT1JBVElPTiIpICYmIGkgPT0gMCkgeworKyAgICAgICAgICAgIFFDT01QQVJFKGJ1ZmZl clNweS5jb3VudCgpLCAxKTsKKysgICAgICAgICAgICBidWZmZXJTcHkucmVtb3ZlRmlyc3QoKTsK KysgICAgICAgIH0KKyAgICAgICAgIGV4ZWMoWyZdIHsKKyAgICAgICAgICAgICBRVkVSSUZZKGJ1 ZmZlclNweS5lbXB0eSgpKTsgLy8gTWFrZSBzdXJlIG5vIGV4dHJhIGJ1ZmZlcnMgaGF2ZSBhcnJp dmVkCisgICAgICAgICAgICAgUVZFUklGWSgheGRnVG9wbGV2ZWwoKS0+c3VyZmFjZSgpLT5tX3dh aXRpbmdGcmFtZUNhbGxiYWNrcy5lbXB0eSgpKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVz dHMvYXV0by9jbGllbnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcCBiL3F0d2F5bGFuZC90ZXN0 cy9hdXRvL2NsaWVudC94ZGdzaGVsbC90c3RfeGRnc2hlbGwuY3BwCitpbmRleCAyMjc3YmJiOC4u NzQ3ODc1YjQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQveGRnc2hl bGwvdHN0X3hkZ3NoZWxsLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3hk Z3NoZWxsL3RzdF94ZGdzaGVsbC5jcHAKK0BAIC0zMSw2ICszMSw3IEBACisgI2luY2x1ZGUgPFF0 R3VpL1FPcGVuR0xXaW5kb3c+CisgI2luY2x1ZGUgPFF0R3VpL3FwYS9xcGxhdGZvcm1uYXRpdmVp bnRlcmZhY2UuaD4KKyAjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvd2F5bGFuZC13 YXlsYW5kLWNsaWVudC1wcm90b2NvbC5oPgorKyNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQvcHJp dmF0ZS9xd2F5bGFuZHdpbmRvd19wLmg+CisgCisgdXNpbmcgbmFtZXNwYWNlIE1vY2tDb21wb3Np dG9yOworIAorQEAgLTQ1LDYgKzQ2LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBjb25m aWd1cmVTdGF0ZXMoKTsKKyAgICAgdm9pZCBwb3B1cCgpOworICAgICB2b2lkIHRvb2x0aXBPblBv cHVwKCk7CisrICAgIHZvaWQgdG9vbHRpcEFuZFNpYmxpbmdQb3B1cCgpOworICAgICB2b2lkIHN3 aXRjaFBvcHVwcygpOworICAgICB2b2lkIGhpZGVQb3B1cFBhcmVudCgpOworICAgICB2b2lkIHBv bmdzKCk7CitAQCAtMTM4LDYgKzE0MCw3IEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjpjb25maWd1cmVT aXplKCkKKyAKKyB2b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmlndXJlU3RhdGVzKCkKKyB7CisrICAg IFFWRVJJRlkocXB1dGVudigiUVRfV0FZTEFORF9GUkFNRV9DQUxMQkFDS19USU1FT1VUIiwgIjAi KSk7CisgICAgIFFSYXN0ZXJXaW5kb3cgd2luZG93OworICAgICB3aW5kb3cucmVzaXplKDY0LCA0 OCk7CisgICAgIHdpbmRvdy5zaG93KCk7CitAQCAtMTU0LDkgKzE1NywxMiBAQCB2b2lkIHRzdF94 ZGdzaGVsbDo6Y29uZmlndXJlU3RhdGVzKCkKKyAgICAgLy8gVG9wbGV2ZWwgd2luZG93cyBkb24n dCBrbm93IHRoZWlyIHBvc2l0aW9uIG9uIHhkZy1zaGVsbAorIC8vICAgIFFDT01QQVJFKHdpbmRv dy5mcmFtZUdlb21ldHJ5KCkudG9wTGVmdCgpLCBRUG9pbnQoKSk7IC8vIFRPRE86IHRoaXMgZG9l c24ndCBjdXJyZW50bHkgd29yayB3aGVuIHdpbmRvdyBkZWNvcmF0aW9ucyBhcmUgZW5hYmxlZAor IAorLS8vICAgIFFFWFBFQ1RfRkFJTCgiIiwgImNvbmZpZ3VyZSBoYXMgYWxyZWFkeSBiZWVuIGFj a2VkLCB3ZSBzaG91bGRuJ3QgaGF2ZSB0byB3YWl0IGZvciBpc0FjdGl2ZSIsIENvbnRpbnVlKTsK Ky0vLyAgICBRVkVSSUZZKHdpbmRvdy5pc0FjdGl2ZSgpKTsKKy0gICAgUVRSWV9WRVJJRlkod2lu ZG93LmlzQWN0aXZlKCkpOyAvLyBKdXN0IG1ha2Ugc3VyZSBpdCBldmVudHVhbGx5IGdldCdzIHNl dCBjb3JyZWN0bHkKKysgICAgLy8gd2luZG93LndpbmRvd3N0YXRlKCkgaXMgZHJpdmVuIGJ5IGtl eWJvYXJkIGZvY3VzLCBob3dldmVyIGZvciBkZWNvcmF0aW9ucyB3ZSB3YW50IHRvIGZvbGxvdwor KyAgICAvLyBYREdTaGVsbCB0aGlzIGlzIGludGVybmFsIHRvIFF0V2F5bGFuZCBzbyBpdCBpcyBx dWVyaWVkIGRpcmVjdGx5CisrICAgIGF1dG8gd2F5bGFuZFdpbmRvdyA9IHN0YXRpY19jYXN0PFF0 V2F5bGFuZENsaWVudDo6UVdheWxhbmRXaW5kb3cgKj4od2luZG93LmhhbmRsZSgpKTsKKysgICAg UV9BU1NFUlQod2F5bGFuZFdpbmRvdyk7CisrICAgIFFUUllfVkVSSUZZKHdheWxhbmRXaW5kb3ct PndpbmRvd1N0YXRlcygpLnRlc3RGbGFnKAorKyAgICAgICAgICAgIFF0OjpXaW5kb3dBY3RpdmUp KTsgLy8gSnVzdCBtYWtlIHN1cmUgaXQgZXZlbnR1YWxseSBnZXQncyBzZXQgY29ycmVjdGx5Cisg CisgICAgIGNvbnN0IFFTaXplIHNjcmVlblNpemUoNjQwLCA0ODApOworICAgICBjb25zdCB1aW50 IG1heGltaXplZFNlcmlhbCA9IGV4ZWMoWz1dIHsKK0BAIC0xODYsNiArMTkyLDcgQEAgdm9pZCB0 c3RfeGRnc2hlbGw6OmNvbmZpZ3VyZVN0YXRlcygpCisgICAgIFFDT01QQVJFKHdpbmRvdy53aW5k b3dTdGF0ZXMoKSwgUXQ6OldpbmRvd05vU3RhdGUpOworICAgICBRQ09NUEFSRSh3aW5kb3cuZnJh bWVHZW9tZXRyeSgpLnNpemUoKSwgd2luZG93ZWRTaXplKTsKKyAvLyAgICBRQ09NUEFSRSh3aW5k b3cuZnJhbWVHZW9tZXRyeSgpLnRvcExlZnQoKSwgUVBvaW50KCkpOyAvLyBUT0RPOiB0aGlzIGRv ZXNuJ3QgY3VycmVudGx5IHdvcmsgd2hlbiB3aW5kb3cgZGVjb3JhdGlvbnMgYXJlIGVuYWJsZWQK KysgICAgUVZFUklGWShxdW5zZXRlbnYoIlFUX1dBWUxBTkRfRlJBTUVfQ0FMTEJBQ0tfVElNRU9V VCIpKTsKKyB9CisgCisgdm9pZCB0c3RfeGRnc2hlbGw6OnBvcHVwKCkKK0BAIC0zNDAsNiArMzQ3 LDkyIEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjp0b29sdGlwT25Qb3B1cCgpCisgICAgIFFDT01QT1NJ VE9SX1RSWV9DT01QQVJFKHhkZ1BvcHVwKDApLCBudWxscHRyKTsKKyB9CisgCisrdm9pZCB0c3Rf eGRnc2hlbGw6OnRvb2x0aXBBbmRTaWJsaW5nUG9wdXAoKQorK3sKKysgICAgY2xhc3MgVG9vbFRp cCA6IHB1YmxpYyBRUmFzdGVyV2luZG93IHsKKysgICAgcHVibGljOgorKyAgICAgICAgZXhwbGlj aXQgVG9vbFRpcChRV2luZG93ICpwYXJlbnQpIHsKKysgICAgICAgICAgICBzZXRUcmFuc2llbnRQ YXJlbnQocGFyZW50KTsKKysgICAgICAgICAgICBzZXRGbGFncyhRdDo6VG9vbFRpcCk7CisrICAg ICAgICAgICAgcmVzaXplKDEwMCwgMTAwKTsKKysgICAgICAgICAgICBzaG93KCk7CisrICAgICAg ICB9CisrICAgICAgICB2b2lkIG1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVudCAqZXZlbnQpIG92 ZXJyaWRlIHsKKysgICAgICAgICAgICBRUmFzdGVyV2luZG93Ojptb3VzZVByZXNzRXZlbnQoZXZl bnQpOworKyAgICAgICAgICAgIG1fcG9wdXAgPSBuZXcgUVJhc3RlcldpbmRvdzsKKysgICAgICAg ICAgICBtX3BvcHVwLT5zZXRUcmFuc2llbnRQYXJlbnQodHJhbnNpZW50UGFyZW50KCkpOworKyAg ICAgICAgICAgIG1fcG9wdXAtPnNldEZsYWdzKFF0OjpQb3B1cCk7CisrICAgICAgICAgICAgbV9w b3B1cC0+cmVzaXplKDEwMCwgMTAwKTsKKysgICAgICAgICAgICBtX3BvcHVwLT5zaG93KCk7Cisr ICAgICAgICB9CisrCisrICAgICAgICBRUmFzdGVyV2luZG93ICptX3BvcHVwID0gbnVsbHB0cjsK KysgICAgfTsKKysKKysgICAgY2xhc3MgV2luZG93IDogcHVibGljIFFSYXN0ZXJXaW5kb3cgewor KyAgICBwdWJsaWM6CisrICAgICAgICB2b2lkIG1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVudCAq ZXZlbnQpIG92ZXJyaWRlIHsKKysgICAgICAgICAgICBRUmFzdGVyV2luZG93Ojptb3VzZVByZXNz RXZlbnQoZXZlbnQpOworKyAgICAgICAgICAgIG1fdG9vbHRpcCA9IG5ldyBUb29sVGlwKHRoaXMp OworKyAgICAgICAgfQorKyAgICAgICAgVG9vbFRpcCAqbV90b29sdGlwID0gbnVsbHB0cjsKKysg ICAgfTsKKysKKysgICAgV2luZG93IHdpbmRvdzsKKysgICAgd2luZG93LnJlc2l6ZSgyMDAsIDIw MCk7CisrICAgIHdpbmRvdy5zaG93KCk7CisrCisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlko eGRnVG9wbGV2ZWwoKSk7CisrICAgIGV4ZWMoWz1dIHsgeGRnVG9wbGV2ZWwoKS0+c2VuZENvbXBs ZXRlQ29uZmlndXJlKCk7IH0pOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1RvcGxl dmVsKCktPm1feGRnU3VyZmFjZS0+bV9jb21taXR0ZWRDb25maWd1cmVTZXJpYWwpOworKworKyAg ICBleGVjKFs9XSB7CisrICAgICAgICBhdXRvICpzdXJmYWNlID0geGRnVG9wbGV2ZWwoKS0+c3Vy ZmFjZSgpOworKyAgICAgICAgYXV0byAqcCA9IHBvaW50ZXIoKTsKKysgICAgICAgIGF1dG8gKmMg PSBjbGllbnQoKTsKKysgICAgICAgIHAtPnNlbmRFbnRlcihzdXJmYWNlLCB7MTAwLCAxMDB9KTsK KysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgICAgIHAtPnNlbmRCdXR0b24oY2xpZW50 KCksIEJUTl9MRUZULCBQb2ludGVyOjpidXR0b25fc3RhdGVfcHJlc3NlZCk7CisrICAgICAgICBw LT5zZW5kQnV0dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9uX3N0YXRlX3Jl bGVhc2VkKTsKKysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgICAgIHAtPnNlbmRMZWF2 ZShzdXJmYWNlKTsKKysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgfSk7CisrCisrICAg IFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoKSk7CisrICAgIGV4ZWMoWz1dIHsgeGRn UG9wdXAoKS0+c2VuZENvbXBsZXRlQ29uZmlndXJlKFFSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkp OyB9KTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgpLT5tX3hkZ1N1cmZh Y2UtPm1fY29tbWl0dGVkQ29uZmlndXJlU2VyaWFsKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZF UklGWSgheGRnUG9wdXAoKS0+bV9ncmFiYmVkKTsKKysKKysgICAgZXhlYyhbPV0geworKyAgICAg ICAgYXV0byAqc3VyZmFjZSA9IHhkZ1BvcHVwKCktPnN1cmZhY2UoKTsKKysgICAgICAgIGF1dG8g KnAgPSBwb2ludGVyKCk7CisrICAgICAgICBhdXRvICpjID0gY2xpZW50KCk7CisrICAgICAgICBw LT5zZW5kRW50ZXIoc3VyZmFjZSwgezEwMCwgMTAwfSk7CisrICAgICAgICBwLT5zZW5kRnJhbWUo Yyk7CisrICAgICAgICBwLT5zZW5kQnV0dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6 YnV0dG9uX3N0YXRlX3ByZXNzZWQpOworKyAgICAgICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwg QlROX0xFRlQsIFBvaW50ZXI6OmJ1dHRvbl9zdGF0ZV9yZWxlYXNlZCk7CisrICAgICAgICBwLT5z ZW5kRnJhbWUoYyk7CisrICAgIH0pOworKworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhk Z1BvcHVwKDEpKTsKKysgICAgZXhlYyhbPV0geyB4ZGdQb3B1cCgxKS0+c2VuZENvbXBsZXRlQ29u ZmlndXJlKFFSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOyB9KTsKKysgICAgUUNPTVBPU0lUT1Jf VFJZX1ZFUklGWSh4ZGdQb3B1cCgxKS0+bV94ZGdTdXJmYWNlLT5tX2NvbW1pdHRlZENvbmZpZ3Vy ZVNlcmlhbCk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMSktPm1fZ3Jh YmJlZCk7CisrCisrICAgIC8vIENsb3NlIHRoZSBtaWRkbGUgdG9vbHRpcCAoaXQgc2hvdWxkIG5v dCBjbG9zZSB0aGUgc2libGluZyBwb3B1cCkKKysgICAgd2luZG93Lm1fdG9vbHRpcC0+Y2xvc2Uo KTsKKysKKysgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAoMSksIG51bGxwdHIp OworKyAgICAvLyBWZXJpZnkgdGhlIHJlbWFpbmluZyB4ZGcgc3VyZmFjZSBpcyBhIGdyYWIgcG9w dXAuLgorKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDApKTsKKysgICAgUUNP TVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgwKS0+bV9ncmFiYmVkKTsKKysKKysgICAgd2lu ZG93Lm1fdG9vbHRpcC0+bV9wb3B1cC0+Y2xvc2UoKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX0NP TVBBUkUoeGRnUG9wdXAoMSksIG51bGxwdHIpOworKyAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFS RSh4ZGdQb3B1cCgwKSwgbnVsbHB0cik7CisrfQorKworIC8vIFFUQlVHLTY1NjgwCisgdm9pZCB0 c3RfeGRnc2hlbGw6OnN3aXRjaFBvcHVwcygpCisgeworQEAgLTUwNSw3ICs1OTgsNyBAQCB2b2lk IHRzdF94ZGdzaGVsbDo6bWluTWF4U2l6ZSgpCisgICAgIHdpbmRvdy5zaG93KCk7CisgICAgIFFD T01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnVG9wbGV2ZWwoKSk7CisgCistICAgIGV4ZWMoWz1dIHsg eGRnVG9wbGV2ZWwoKS0+c2VuZENvbXBsZXRlQ29uZmlndXJlKCk7IH0pOworKyAgICAvLyB3ZSBk b24ndCByb3VuZHRyaXAgd2l0aCBvdXIgY29uZmlndXJhdGlvbiB0aGUgaW5pdGlhbCBjb21taXQg c2hvdWxkIGJlIGNvcnJlY3QKKyAKKyAgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnVG9w bGV2ZWwoKS0+bV9jb21taXR0ZWQubWluU2l6ZSwgUVNpemUoMTAwLCAxMDApKTsKKyAgICAgUUNP TVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnVG9wbGV2ZWwoKS0+bV9jb21taXR0ZWQubWF4U2l6ZSwg UVNpemUoMTAwMCwgMTAwMCkpOworU3VibW9kdWxlIHF0d2ViY2hhbm5lbCA2MTg0MjJlZS4uZjg5 NDk2NTU6CitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2Jq ZWN0cHVibGlzaGVyLmNwcCBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVj dHB1Ymxpc2hlci5jcHAKK2luZGV4IDUzNmViNWMuLjg5OGQ3NjkgMTAwNjQ0CistLS0gYS9xdHdl YmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwCisrKysgYi9x dHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwCitAQCAt MTg2LDggKzE4Niw2IEBAIFFfREVDTEFSRV9UWVBFSU5GTyhPdmVybG9hZFJlc29sdXRpb25DYW5k aWRhdGUsIFFfTU9WQUJMRV9UWVBFKTsKKyBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6UU1ldGFPYmpl Y3RQdWJsaXNoZXIoUVdlYkNoYW5uZWwgKndlYkNoYW5uZWwpCisgICAgIDogUU9iamVjdCh3ZWJD aGFubmVsKQorICAgICAsIHdlYkNoYW5uZWwod2ViQ2hhbm5lbCkKKy0gICAgLCBzaWduYWxIYW5k bGVyKHRoaXMpCistICAgICwgY2xpZW50SXNJZGxlKGZhbHNlKQorICAgICAsIGJsb2NrVXBkYXRl cyhmYWxzZSkKKyAgICAgLCBwcm9wZXJ0eVVwZGF0ZXNJbml0aWFsaXplZChmYWxzZSkKKyB7CitA QCAtMzAxLDE3ICsyOTksMTcgQEAgUUpzb25PYmplY3QgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmNs YXNzSW5mb0Zvck9iamVjdChjb25zdCBRT2JqZWN0ICpvYmplY3QsIFFXZWIKKyAgICAgcmV0dXJu IGRhdGE7CisgfQorIAorLXZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNldENsaWVudElzSWRs ZShib29sIGlzSWRsZSkKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZXRDbGllbnRJc0lk bGUoYm9vbCBpc0lkbGUsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkK KyB7CistICAgIGlmIChjbGllbnRJc0lkbGUgPT0gaXNJZGxlKSB7CistICAgICAgICByZXR1cm47 CistICAgIH0KKy0gICAgY2xpZW50SXNJZGxlID0gaXNJZGxlOworLSAgICBpZiAoIWlzSWRsZSAm JiB0aW1lci5pc0FjdGl2ZSgpKSB7CistICAgICAgICB0aW1lci5zdG9wKCk7CistICAgIH0gZWxz ZSBpZiAoaXNJZGxlICYmICF0aW1lci5pc0FjdGl2ZSgpKSB7CistICAgICAgICB0aW1lci5zdGFy dChQUk9QRVJUWV9VUERBVEVfSU5URVJWQUwsIHRoaXMpOworLSAgICB9CisrICAgIHRyYW5zcG9y dFN0YXRlW3RyYW5zcG9ydF0uY2xpZW50SXNJZGxlID0gaXNJZGxlOworKyAgICBpZiAoaXNJZGxl KQorKyAgICAgICAgc2VuZEVucXVldWVkUHJvcGVydHlVcGRhdGVzKHRyYW5zcG9ydCk7CisrfQor KworK2Jvb2wgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmlzQ2xpZW50SWRsZShRV2ViQ2hhbm5lbEFi c3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisreworKyAgICBhdXRvIGZvdW5kID0gdHJhbnNw b3J0U3RhdGUuZmluZCh0cmFuc3BvcnQpOworKyAgICByZXR1cm4gZm91bmQgIT0gdHJhbnNwb3J0 U3RhdGUuZW5kKCkgJiYgZm91bmQudmFsdWUoKS5jbGllbnRJc0lkbGU7CisgfQorIAorIFFKc29u T2JqZWN0IFFNZXRhT2JqZWN0UHVibGlzaGVyOjppbml0aWFsaXplQ2xpZW50KFFXZWJDaGFubmVs QWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKK0BAIC0zMzMsNiArMzMxLDcgQEAgUUpzb25P YmplY3QgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmluaXRpYWxpemVDbGllbnQoUVdlYkNoYW5uZWxB YnN0cmFjdFRyYW5zcG9ydAorIAorIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmluaXRpYWxp emVQcm9wZXJ0eVVwZGF0ZXMoY29uc3QgUU9iamVjdCAqY29uc3Qgb2JqZWN0LCBjb25zdCBRSnNv bk9iamVjdCAmb2JqZWN0SW5mbykKKyB7CisrICAgIGF1dG8gKnNpZ25hbEhhbmRsZXIgPSBzaWdu YWxIYW5kbGVyRm9yKG9iamVjdCk7CisgICAgIGZvcmVhY2ggKGNvbnN0IFFKc29uVmFsdWUgJnBy b3BlcnR5SW5mb1Zhciwgb2JqZWN0SW5mb1tLRVlfUFJPUEVSVElFU10udG9BcnJheSgpKSB7Cisg ICAgICAgICBjb25zdCBRSnNvbkFycmF5ICZwcm9wZXJ0eUluZm8gPSBwcm9wZXJ0eUluZm9WYXIu dG9BcnJheSgpOworICAgICAgICAgaWYgKHByb3BlcnR5SW5mby5zaXplKCkgPCAyKSB7CitAQCAt MzUzLDE5ICszNTIsMTkgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW5pdGlhbGl6ZVBy b3BlcnR5VXBkYXRlcyhjb25zdCBRT2JqZWN0ICpjb25zdCBvYmplY3QKKyAKKyAgICAgICAgIC8v IE9ubHkgY29ubmVjdCBmb3IgYSBwcm9wZXJ0eSB1cGRhdGUgb25jZQorICAgICAgICAgaWYgKGNv bm5lY3RlZFByb3BlcnRpZXMuaXNFbXB0eSgpKSB7CistICAgICAgICAgICAgc2lnbmFsSGFuZGxl ci5jb25uZWN0VG8ob2JqZWN0LCBzaWduYWxJbmRleCk7CisrICAgICAgICAgICAgc2lnbmFsSGFu ZGxlci0+Y29ubmVjdFRvKG9iamVjdCwgc2lnbmFsSW5kZXgpOworICAgICAgICAgfQorIAorICAg ICAgICAgY29ubmVjdGVkUHJvcGVydGllcy5pbnNlcnQocHJvcGVydHlJbmRleCk7CisgICAgIH0K KyAKKyAgICAgLy8gYWxzbyBhbHdheXMgY29ubmVjdCB0byBkZXN0cm95ZWQgc2lnbmFsCistICAg IHNpZ25hbEhhbmRsZXIuY29ubmVjdFRvKG9iamVjdCwgc19kZXN0cm95ZWRTaWduYWxJbmRleCk7 CisrICAgIHNpZ25hbEhhbmRsZXItPmNvbm5lY3RUbyhvYmplY3QsIHNfZGVzdHJveWVkU2lnbmFs SW5kZXgpOworIH0KKyAKKyB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZW5kUGVuZGluZ1By b3BlcnR5VXBkYXRlcygpCisgeworLSAgICBpZiAoYmxvY2tVcGRhdGVzIHx8ICFjbGllbnRJc0lk bGUgfHwgcGVuZGluZ1Byb3BlcnR5VXBkYXRlcy5pc0VtcHR5KCkpIHsKKysgICAgaWYgKGJsb2Nr VXBkYXRlcykgeworICAgICAgICAgcmV0dXJuOworICAgICB9CisgCitAQCAtNDE1LDE4ICs0MTQs MTkgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2VuZFBlbmRpbmdQcm9wZXJ0eVVwZGF0 ZXMoKQorIAorICAgICAvLyBkYXRhIGRvZXMgbm90IGNvbnRhaW4gc3BlY2lmaWMgdXBkYXRlcwor ICAgICBpZiAoIWRhdGEuaXNFbXB0eSgpKSB7CistICAgICAgICBzZXRDbGllbnRJc0lkbGUoZmFs c2UpOworLQorICAgICAgICAgbWVzc2FnZVtLRVlfREFUQV0gPSBkYXRhOworLSAgICAgICAgYnJv YWRjYXN0TWVzc2FnZShtZXNzYWdlKTsKKysgICAgICAgIGVucXVldWVCcm9hZGNhc3RNZXNzYWdl KG1lc3NhZ2UpOworICAgICB9CisgCisgICAgIC8vIHNlbmQgZXZlcnkgcHJvcGVydHkgdXBkYXRl IHdoaWNoIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBicm9hZGNhc3RlZAorICAgICBjb25zdCBRSGFz aDxRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0KiwgUUpzb25BcnJheT46OmNvbnN0X2l0ZXJh dG9yIHN1ZW5kID0gc3BlY2lmaWNVcGRhdGVzLmNvbnN0RW5kKCk7CisgICAgIGZvciAoUUhhc2g8 UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCosIFFKc29uQXJyYXk+Ojpjb25zdF9pdGVyYXRv ciBpdCA9IHNwZWNpZmljVXBkYXRlcy5jb25zdEJlZ2luKCk7IGl0ICE9IHN1ZW5kOyArK2l0KSB7 CisgICAgICAgICBtZXNzYWdlW0tFWV9EQVRBXSA9IGl0LnZhbHVlKCk7CistICAgICAgICBpdC5r ZXkoKS0+c2VuZE1lc3NhZ2UobWVzc2FnZSk7CisrICAgICAgICBlbnF1ZXVlTWVzc2FnZShtZXNz YWdlLCBpdC5rZXkoKSk7CisgICAgIH0KKysKKysgICAgZm9yIChhdXRvIHN0YXRlID0gdHJhbnNw b3J0U3RhdGUuYmVnaW4oKTsgc3RhdGUgIT0gdHJhbnNwb3J0U3RhdGUuZW5kKCk7ICsrc3RhdGUp CisrICAgICAgICBzZW5kRW5xdWV1ZWRQcm9wZXJ0eVVwZGF0ZXMoc3RhdGUua2V5KCkpOworIH0K KyAKKyBRVmFyaWFudCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW52b2tlTWV0aG9kKFFPYmplY3Qg KmNvbnN0IG9iamVjdCwgY29uc3QgUU1ldGFNZXRob2QgJm1ldGhvZCwKK0BAIC01NzIsNyArNTcy LDcgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2lnbmFsRW1pdHRlZChjb25zdCBRT2Jq ZWN0ICpvYmplY3QsIGNvbnN0IGludCBzaWduYWwKKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIHsK KyAgICAgICAgIHBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXNbb2JqZWN0XVtzaWduYWxJbmRleF0gPSBh cmd1bWVudHM7CistICAgICAgICBpZiAoY2xpZW50SXNJZGxlICYmICFibG9ja1VwZGF0ZXMgJiYg IXRpbWVyLmlzQWN0aXZlKCkpIHsKKysgICAgICAgIGlmICghYmxvY2tVcGRhdGVzICYmICF0aW1l ci5pc0FjdGl2ZSgpKSB7CisgICAgICAgICAgICAgdGltZXIuc3RhcnQoUFJPUEVSVFlfVVBEQVRF X0lOVEVSVkFMLCB0aGlzKTsKKyAgICAgICAgIH0KKyAgICAgfQorQEAgLTU5MCw3ICs1OTAsNyBA QCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpvYmplY3REZXN0cm95ZWQoY29uc3QgUU9iamVj dCAqb2JqZWN0KQorICAgICAvLyBvbmx5IHJlbW92ZSBmcm9tIGhhbmRsZXIgd2hlbiB3ZSBpbml0 aWFsaXplZCB0aGUgcHJvcGVydHkgdXBkYXRlcworICAgICAvLyBjZjogaHR0cHM6Ly9idWdyZXBv cnRzLnF0LmlvL2Jyb3dzZS9RVEJVRy02MDI1MAorICAgICBpZiAocHJvcGVydHlVcGRhdGVzSW5p dGlhbGl6ZWQpIHsKKy0gICAgICAgIHNpZ25hbEhhbmRsZXIucmVtb3ZlKG9iamVjdCk7CisrICAg ICAgICBzaWduYWxIYW5kbGVyRm9yKG9iamVjdCktPnJlbW92ZShvYmplY3QpOworICAgICAgICAg c2lnbmFsVG9Qcm9wZXJ0eU1hcC5yZW1vdmUob2JqZWN0KTsKKyAgICAgfQorICAgICBwZW5kaW5n UHJvcGVydHlVcGRhdGVzLnJlbW92ZShvYmplY3QpOworQEAgLTg1Miw2ICs4NTIsNTIgQEAgdm9p ZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6YnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVj dCAmbWVzc2FnZSkgY29uc3QKKyAgICAgfQorIH0KKyAKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlz aGVyOjplbnF1ZXVlQnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSkK Kyt7CisrICAgIGlmICh3ZWJDaGFubmVsLT5kX2Z1bmMoKS0+dHJhbnNwb3J0cy5pc0VtcHR5KCkp IHsKKysgICAgICAgIHFXYXJuaW5nKCJRV2ViQ2hhbm5lbCBpcyBub3QgY29ubmVjdGVkIHRvIGFu eSB0cmFuc3BvcnRzLCBjYW5ub3Qgc2VuZCBtZXNzYWdlOiAlcyIsCisrICAgICAgICAgICAgICAg ICBRSnNvbkRvY3VtZW50KG1lc3NhZ2UpLnRvSnNvbigpLmNvbnN0RGF0YSgpKTsKKysgICAgICAg IHJldHVybjsKKysgICAgfQorKworKyAgICBmb3IgKGF1dG8gKnRyYW5zcG9ydCA6IHdlYkNoYW5u ZWwtPmRfZnVuYygpLT50cmFuc3BvcnRzKSB7CisrICAgICAgICBhdXRvICZzdGF0ZSA9IHRyYW5z cG9ydFN0YXRlW3RyYW5zcG9ydF07CisrICAgICAgICBzdGF0ZS5xdWV1ZWRNZXNzYWdlcy5hcHBl bmQobWVzc2FnZSk7CisrICAgIH0KKyt9CisrCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6 ZW5xdWV1ZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9y dCAqdHJhbnNwb3J0KQorK3sKKysgICAgYXV0byAmc3RhdGUgPSB0cmFuc3BvcnRTdGF0ZVt0cmFu c3BvcnRdOworKyAgICBzdGF0ZS5xdWV1ZWRNZXNzYWdlcy5hcHBlbmQobWVzc2FnZSk7CisrfQor KworK3ZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNlbmRFbnF1ZXVlZFByb3BlcnR5VXBkYXRl cyhRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisreworKyAgICBhdXRv IGZvdW5kID0gdHJhbnNwb3J0U3RhdGUuZmluZCh0cmFuc3BvcnQpOworKyAgICBpZiAoZm91bmQg IT0gdHJhbnNwb3J0U3RhdGUuZW5kKCkgJiYgZm91bmQudmFsdWUoKS5jbGllbnRJc0lkbGUKKysg ICAgICAgICYmICFmb3VuZC52YWx1ZSgpLnF1ZXVlZE1lc3NhZ2VzLmlzRW1wdHkoKSkgeworKwor KyAgICAgICAgLy8gSWYgdGhlIGNsaWVudCBpcyBjb25uZWN0ZWQgd2l0aCBhbiBpbi1wcm9jZXNz IHRyYW5zcG9ydCwgaXQgY2FuCisrICAgICAgICAvLyBoYXBwZW4gdGhhdCBhIG1lc3NhZ2UgdHJp Z2dlcnMgYSBzdWJzZXF1ZW50IHByb3BlcnR5IGNoYW5nZS4gSW4KKysgICAgICAgIC8vIHRoYXQg Y2FzZSwgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgcXVldWVkIG1lc3NhZ2VzIGhhdmUgYWxy ZWFkeQorKyAgICAgICAgLy8gYmVlbiBjbGVhcmVkOyBvdGhlcndpc2UgdGhlIHJlY3Vyc2l2ZSBj YWxsIHdpbGwgc2VuZCBldmVyeXRoaWcgYWdhaW4uCisrICAgICAgICAvLyBDYXNlIGluIHBvaW50 OiBUaGUgcW1sd2ViY2hhbm5lbCB0ZXN0cyBmYWlsIGlmIHdlIGRvbid0IGNsZWFyIHRoZQorKyAg ICAgICAgLy8gcXVldWVkIG1lc3NhZ2VzIGJlZm9yZSBzZW5kaW5nIHRoZW0gb3V0LgorKyAgICAg ICAgLy8gRm9yIHRoYXQgc2FtZSByZWFzb24gc2V0IHRoZSBjbGllbnQgdG8gImJ1c3kiIChha2Eg bm9uLWlkbGUpIGp1c3QKKysgICAgICAgIC8vIHJpZ2h0IGJlZm9yZSBzZW5kaW5nIG91dCB0aGUg bWVzc2FnZXM7IG90aGVyd2lzZSBhIHBvdGVudGlhbAorKyAgICAgICAgLy8gIklkbGUiIHR5cGUg bWVzc2FnZSB3aWxsIG5vdCBjb3JyZWN0bHkgcmVzdG9yZSB0aGUgSWRsZSBzdGF0ZS4KKysgICAg ICAgIGNvbnN0IGF1dG8gbWVzc2FnZXMgPSBzdGQ6Om1vdmUoZm91bmQudmFsdWUoKS5xdWV1ZWRN ZXNzYWdlcyk7CisrICAgICAgICBRX0FTU0VSVChmb3VuZC52YWx1ZSgpLnF1ZXVlZE1lc3NhZ2Vz LmlzRW1wdHkoKSk7CisrICAgICAgICBmb3VuZC52YWx1ZSgpLmNsaWVudElzSWRsZSA9IGZhbHNl OworKworKyAgICAgICAgZm9yIChjb25zdCBhdXRvICZtZXNzYWdlIDogbWVzc2FnZXMpIHsKKysg ICAgICAgICAgICB0cmFuc3BvcnQtPnNlbmRNZXNzYWdlKG1lc3NhZ2UpOworKyAgICAgICAgfQor KyAgICB9CisrfQorKworIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmhhbmRsZU1lc3NhZ2Uo Y29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQg KnRyYW5zcG9ydCkKKyB7CisgICAgIGlmICghd2ViQ2hhbm5lbC0+ZF9mdW5jKCktPnRyYW5zcG9y dHMuY29udGFpbnModHJhbnNwb3J0KSkgeworQEAgLTg2Niw3ICs5MTIsNyBAQCB2b2lkIFFNZXRh T2JqZWN0UHVibGlzaGVyOjpoYW5kbGVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdl LCBRV2ViQ2hhbm5lbAorIAorICAgICBjb25zdCBNZXNzYWdlVHlwZSB0eXBlID0gdG9UeXBlKG1l c3NhZ2UudmFsdWUoS0VZX1RZUEUpKTsKKyAgICAgaWYgKHR5cGUgPT0gVHlwZUlkbGUpIHsKKy0g ICAgICAgIHNldENsaWVudElzSWRsZSh0cnVlKTsKKysgICAgICAgIHNldENsaWVudElzSWRsZSh0 cnVlLCB0cmFuc3BvcnQpOworICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlwZUluaXQpIHsKKyAg ICAgICAgIGlmICghbWVzc2FnZS5jb250YWlucyhLRVlfSUQpKSB7CisgICAgICAgICAgICAgcVdh cm5pbmcoIkpTT04gbWVzc2FnZSBvYmplY3QgaXMgbWlzc2luZyB0aGUgaWQgcHJvcGVydHk6ICVz IiwKK0BAIC05MTMsOSArOTU5LDkgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aGFuZGxl TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSwgUVdlYkNoYW5uZWwKKyAgICAgICAg ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgIHRyYW5zcG9ydC0+c2VuZE1lc3NhZ2UoY3Jl YXRlUmVzcG9uc2UobWVzc2FnZS52YWx1ZShLRVlfSUQpLCB3cmFwUmVzdWx0KHJlc3VsdCwgdHJh bnNwb3J0KSkpOworICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFR5cGVDb25uZWN0VG9TaWdu YWwpIHsKKy0gICAgICAgICAgICBzaWduYWxIYW5kbGVyLmNvbm5lY3RUbyhvYmplY3QsIG1lc3Nh Z2UudmFsdWUoS0VZX1NJR05BTCkudG9JbnQoLTEpKTsKKysgICAgICAgICAgICBzaWduYWxIYW5k bGVyRm9yKG9iamVjdCktPmNvbm5lY3RUbyhvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05B TCkudG9JbnQoLTEpKTsKKyAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBlRGlzY29ubmVj dEZyb21TaWduYWwpIHsKKy0gICAgICAgICAgICBzaWduYWxIYW5kbGVyLmRpc2Nvbm5lY3RGcm9t KG9iamVjdCwgbWVzc2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgtMSkpOworKyAgICAgICAg ICAgIHNpZ25hbEhhbmRsZXJGb3Iob2JqZWN0KS0+ZGlzY29ubmVjdEZyb20ob2JqZWN0LCBtZXNz YWdlLnZhbHVlKEtFWV9TSUdOQUwpLnRvSW50KC0xKSk7CisgICAgICAgICB9IGVsc2UgaWYgKHR5 cGUgPT0gVHlwZVNldFByb3BlcnR5KSB7CisgICAgICAgICAgICAgc2V0UHJvcGVydHkob2JqZWN0 LCBtZXNzYWdlLnZhbHVlKEtFWV9QUk9QRVJUWSkudG9JbnQoLTEpLAorICAgICAgICAgICAgICAg ICAgICAgICAgIG1lc3NhZ2UudmFsdWUoS0VZX1ZBTFVFKSk7CitAQCAtOTMxLDYgKzk3Nyw3IEBA IHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNldEJsb2NrVXBkYXRlcyhib29sIGJsb2NrKQor ICAgICBibG9ja1VwZGF0ZXMgPSBibG9jazsKKyAKKyAgICAgaWYgKCFibG9ja1VwZGF0ZXMpIHsK KysgICAgICAgIHRpbWVyLnN0YXJ0KFBST1BFUlRZX1VQREFURV9JTlRFUlZBTCwgdGhpcyk7Cisg ICAgICAgICBzZW5kUGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpOworICAgICB9IGVsc2UgaWYgKHRp bWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgIHRpbWVyLnN0b3AoKTsKK0BAIC05NDgsNCArOTk1 LDE1IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQg KmV2ZW50KQorICAgICB9CisgfQorIAorK1NpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQdWJsaXNo ZXI+ICpRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2lnbmFsSGFuZGxlckZvcihjb25zdCBRT2JqZWN0 ICpvYmplY3QpCisreworKyAgICBhdXRvIHRocmVhZCA9IG9iamVjdC0+dGhyZWFkKCk7CisrICAg IGF1dG8gaXQgPSBzaWduYWxIYW5kbGVycy5maW5kKHRocmVhZCk7CisrICAgIGlmIChpdCA9PSBz aWduYWxIYW5kbGVycy5lbmQoKSkgeworKyAgICAgICAgaXQgPSBzaWduYWxIYW5kbGVycy5lbXBs YWNlKHRocmVhZCwgdGhpcykuZmlyc3Q7CisrICAgICAgICBpdC0+c2Vjb25kLm1vdmVUb1RocmVh ZCh0aHJlYWQpOworKyAgICB9CisrICAgIHJldHVybiAmaXQtPnNlY29uZDsKKyt9CisrCisgUVRf RU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9x bWV0YW9iamVjdHB1Ymxpc2hlcl9wLmggYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1l dGFvYmplY3RwdWJsaXNoZXJfcC5oCitpbmRleCBiYmQ5ODc1Li40NzEzZWYxIDEwMDY0NAorLS0t IGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaAor KysrIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3Au aAorQEAgLTU5LDYgKzU5LDkgQEAKKyAjaW5jbHVkZSA8UUJhc2ljVGltZXI+CisgI2luY2x1ZGUg PFFQb2ludGVyPgorICNpbmNsdWRlIDxRSnNvbk9iamVjdD4KKysjaW5jbHVkZSA8UVF1ZXVlPgor KworKyNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgorIAorICNpbmNsdWRlICJxd2ViY2hhbm5lbGds b2JhbC5oIgorIAorQEAgLTEwOSwxNyArMTEyLDM2IEBAIHB1YmxpYzoKKyAgICAgICovCisgICAg IHZvaWQgYnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSkgY29uc3Q7 CisgCisrICAgIC8qKgorKyAgICAgKiBFbnF1ZXVlIHRoZSBnaXZlbiBAcCBtZXNzYWdlIHRvIGFs bCBrbm93biB0cmFuc3BvcnRzLgorKyAgICAgKi8KKysgICAgdm9pZCBlbnF1ZXVlQnJvYWRjYXN0 TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSk7CisrCisrICAgIC8qKgorKyAgICAg KiBFbnF1ZXVlIHRoZSBnaXZlbiBAcCBtZXNzYWdlIHRvIEBwIHRyYW5zcG9ydC4KKysgICAgICov CisrICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFX ZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisrCisrICAgIC8qKgorKyAg ICAgKiBJZiBjbGllbnQgZm9yIGdpdmVuIEBwIHRyYW5zcG9ydCBpcyBpZGxlLCBzZW5kIHF1ZXVl ZCBtZXNzYWdlZCB0byBAcCB0cmFuc3BvcnQgYW5kIHRoZW4gbWFyaworKyAgICAgKiB0aGUgY2xp ZW50IGFzIG5vdCBpZGxlLgorKyAgICAgKi8KKysgICAgdm9pZCBzZW5kRW5xdWV1ZWRQcm9wZXJ0 eVVwZGF0ZXMoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKKysKKyAg ICAgLyoqCisgICAgICAqIFNlcmlhbGl6ZSB0aGUgUU1ldGFPYmplY3Qgb2YgQHAgb2JqZWN0IGFu ZCByZXR1cm4gaXQgaW4gSlNPTiBmb3JtLgorICAgICAgKi8KKyAgICAgUUpzb25PYmplY3QgY2xh c3NJbmZvRm9yT2JqZWN0KGNvbnN0IFFPYmplY3QgKm9iamVjdCwgUVdlYkNoYW5uZWxBYnN0cmFj dFRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKKyAKKyAgICAgLyoqCistICAgICAqIFNldCB0aGUgY2xp ZW50IHRvIGlkbGUgb3IgYnVzeSwgYmFzZWQgb24gdGhlIHZhbHVlIG9mIEBwIGlzSWRsZS4KKy0g ICAgICoKKy0gICAgICogV2hlbiB0aGUgdmFsdWUgY2hhbmdlZCwgc3RhcnQvc3RvcCB0aGUgcHJv cGVydHkgdXBkYXRlIHRpbWVyIGFjY29yZGluZ2x5LgorKyAgICAgKiBTZXQgdGhlIGNsaWVudCB0 byBpZGxlIG9yIGJ1c3kgZm9yIGEgc2luZ2xlIEBwIHRyYW5zcG9ydCwgYmFzZWQgb24gdGhlIHZh bHVlIG9mIEBwIGlzSWRsZS4KKysgICAgICovCisrICAgIHZvaWQgc2V0Q2xpZW50SXNJZGxlKGJv b2wgaXNJZGxlLCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworKwor KyAgICAvKioKKysgICAgICogQ2hlY2sgdGhhdCBjbGllbnQgaXMgaWRsZSBmb3IgQHAgdHJhbnNw b3J0LgorICAgICAgKi8KKy0gICAgdm9pZCBzZXRDbGllbnRJc0lkbGUoYm9vbCBpc0lkbGUpOwor KyAgICBib29sIGlzQ2xpZW50SWRsZShRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFu c3BvcnQpOworIAorICAgICAvKioKKyAgICAgICogSW5pdGlhbGl6ZSBjbGllbnRzIGJ5IHNlbmRp bmcgdGhlbSB0aGUgY2xhc3MgaW5mb3JtYXRpb24gb2YgdGhlIHJlZ2lzdGVyZWQgb2JqZWN0cy4K K0BAIC0yNzIsMTAgKzI5NCwxOCBAQCBwcml2YXRlOgorICAgICBmcmllbmQgY2xhc3MgVGVzdFdl YkNoYW5uZWw7CisgCisgICAgIFFXZWJDaGFubmVsICp3ZWJDaGFubmVsOworLSAgICBTaWduYWxI YW5kbGVyPFFNZXRhT2JqZWN0UHVibGlzaGVyPiBzaWduYWxIYW5kbGVyOworKyAgICBzdGQ6OnVu b3JkZXJlZF9tYXA8Y29uc3QgUVRocmVhZCosIFNpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQdWJs aXNoZXI+PiBzaWduYWxIYW5kbGVyczsKKysgICAgU2lnbmFsSGFuZGxlcjxRTWV0YU9iamVjdFB1 Ymxpc2hlcj4gKnNpZ25hbEhhbmRsZXJGb3IoY29uc3QgUU9iamVjdCAqb2JqZWN0KTsKKyAKKy0g ICAgLy8gdHJ1ZSB3aGVuIHRoZSBjbGllbnQgaXMgaWRsZSwgZmFsc2Ugb3RoZXJ3aXNlCistICAg IGJvb2wgY2xpZW50SXNJZGxlOworKyAgICBzdHJ1Y3QgVHJhbnNwb3J0U3RhdGUKKysgICAgewor KyAgICAgICAgVHJhbnNwb3J0U3RhdGUoKSA6IGNsaWVudElzSWRsZShmYWxzZSkgeyB9CisrICAg ICAgICAvLyB0cnVlIHdoZW4gdGhlIGNsaWVudCBpcyBpZGxlLCBmYWxzZSBvdGhlcndpc2UKKysg ICAgICAgIGJvb2wgY2xpZW50SXNJZGxlOworKyAgICAgICAgLy8gbWVzc2FnZXMgdG8gc2VuZAor KyAgICAgICAgUVF1ZXVlPFFKc29uT2JqZWN0PiBxdWV1ZWRNZXNzYWdlczsKKysgICAgfTsKKysg ICAgUUhhc2g8UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqLCBUcmFuc3BvcnRTdGF0ZT4g dHJhbnNwb3J0U3RhdGU7CisgCisgICAgIC8vIHRydWUgd2hlbiBubyBwcm9wZXJ0eSB1cGRhdGVz IHNob3VsZCBiZSBzZW50LCBmYWxzZSBvdGhlcndpc2UKKyAgICAgYm9vbCBibG9ja1VwZGF0ZXM7 CitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJf cC5oIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJfcC5oCitpbmRl eCAyN2FmYWRiLi5kNzczNzNjIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFu bmVsL3NpZ25hbGhhbmRsZXJfcC5oCisrKysgYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwv c2lnbmFsaGFuZGxlcl9wLmgKK0BAIC01Niw2ICs1Niw3IEBACisgI2luY2x1ZGUgPFFWZWN0b3I+ CisgI2luY2x1ZGUgPFFNZXRhTWV0aG9kPgorICNpbmNsdWRlIDxRRGVidWc+CisrI2luY2x1ZGUg PFFUaHJlYWQ+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCitAQCAtNzEsNiArNzIsNyBAQCBz dGF0aWMgY29uc3QgaW50IHNfZGVzdHJveWVkU2lnbmFsSW5kZXggPSBRT2JqZWN0OjpzdGF0aWNN ZXRhT2JqZWN0LmluZGV4T2ZNZXRobworIHRlbXBsYXRlPGNsYXNzIFJlY2VpdmVyPgorIGNsYXNz IFNpZ25hbEhhbmRsZXIgOiBwdWJsaWMgUU9iamVjdAorIHsKKysgICAgUV9ESVNBQkxFX0NPUFko U2lnbmFsSGFuZGxlcikKKyBwdWJsaWM6CisgICAgIFNpZ25hbEhhbmRsZXIoUmVjZWl2ZXIgKnJl Y2VpdmVyLCBRT2JqZWN0ICpwYXJlbnQgPSAwKTsKKyAKK0BAIC0yNjgsNiArMjcwLDcgQEAgaW50 IFNpZ25hbEhhbmRsZXI8UmVjZWl2ZXI+OjpxdF9tZXRhY2FsbChRTWV0YU9iamVjdDo6Q2FsbCBj YWxsLCBpbnQgbWV0aG9kSWQsIHYKKyAgICAgaWYgKGNhbGwgPT0gUU1ldGFPYmplY3Q6Okludm9r ZU1ldGFNZXRob2QpIHsKKyAgICAgICAgIGNvbnN0IFFPYmplY3QgKm9iamVjdCA9IHNlbmRlcigp OworICAgICAgICAgUV9BU1NFUlQob2JqZWN0KTsKKysgICAgICAgIFFfQVNTRVJUKFFUaHJlYWQ6 OmN1cnJlbnRUaHJlYWQoKSA9PSBvYmplY3QtPnRocmVhZCgpKTsKKyAgICAgICAgIFFfQVNTRVJU KHNlbmRlclNpZ25hbEluZGV4KCkgPT0gbWV0aG9kSWQpOworICAgICAgICAgUV9BU1NFUlQobV9j b25uZWN0aW9uc0NvdW50ZXIuY29udGFpbnMob2JqZWN0KSk7CisgICAgICAgICBRX0FTU0VSVCht X2Nvbm5lY3Rpb25zQ291bnRlci52YWx1ZShvYmplY3QpLmNvbnRhaW5zKG1ldGhvZElkKSk7Citk aWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vcW1sL3Rlc3R3ZWJjaGFubmVsLmNw cCBiL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5jcHAKK2luZGV4 IDk4OTE2ODcuLjNjYTgxYzIgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9x bWwvdGVzdHdlYmNoYW5uZWwuY3BwCisrKysgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9xbWwv dGVzdHdlYmNoYW5uZWwuY3BwCitAQCAtNDYsNyArNDYsMTEgQEAgVGVzdFdlYkNoYW5uZWw6On5U ZXN0V2ViQ2hhbm5lbCgpCisgCisgYm9vbCBUZXN0V2ViQ2hhbm5lbDo6Y2xpZW50SXNJZGxlKCkg Y29uc3QKKyB7CistICAgIHJldHVybiBRV2ViQ2hhbm5lbDo6ZF9mdW5jKCktPnB1Ymxpc2hlci0+ Y2xpZW50SXNJZGxlOworKyAgICBmb3IgKGF1dG8gKnRyYW5zcG9ydCA6IFFXZWJDaGFubmVsOjpk X2Z1bmMoKS0+dHJhbnNwb3J0cykgeworKyAgICAgICAgaWYgKFFXZWJDaGFubmVsOjpkX2Z1bmMo KS0+cHVibGlzaGVyLT5pc0NsaWVudElkbGUodHJhbnNwb3J0KSkKKysgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKKysgICAgfQorKyAgICByZXR1cm4gZmFsc2U7CisgfQorIAorIFFUX0VORF9OQU1F U1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3Rz dF93ZWJjaGFubmVsLmNwcCBiL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0 X3dlYmNoYW5uZWwuY3BwCitpbmRleCAxODFkYTllLi4zN2Y5ODlhIDEwMDY0NAorLS0tIGEvcXR3 ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5jcHAKKysrKyBi L3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuY3BwCitA QCAtNzg1LDcgKzc4NSw3IEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RUcmFuc3BvcnRXcmFw T2JqZWN0UHJvcGVydGllcygpCisgICAgIER1bW15VHJhbnNwb3J0ICpkdW1teVRyYW5zcG9ydCA9 IG5ldyBEdW1teVRyYW5zcG9ydCh0aGlzKTsKKyAgICAgY2hhbm5lbC5jb25uZWN0VG8oZHVtbXlU cmFuc3BvcnQpOworICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPmluaXRpYWxpemVD bGllbnQoZHVtbXlUcmFuc3BvcnQpOworLSAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXIt PnNldENsaWVudElzSWRsZSh0cnVlKTsKKysgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVy LT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgZHVtbXlUcmFuc3BvcnQpOworIAorICAgICBRQ09NUEFS RShjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnRyYW5zcG9ydGVkV3JhcHBlZE9iamVjdHMu c2l6ZSgpLCAwKTsKKyAKK0BAIC05NDMsOCArOTQzLDYgQEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6 dGVzdEluZmluaXRlUmVjdXJzaW9uKCkKKyAKKyB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0QXN5 bmNPYmplY3QoKQorIHsKKy0gICAgUVNLSVAoIlRoaXMgdGVzdCBpcyBicm9rZW4uIFNlZSBRVEJV Ry04MDcyOSIpOworLQorICAgICBRV2ViQ2hhbm5lbCBjaGFubmVsOworICAgICBjaGFubmVsLmNv bm5lY3RUbyhtX2R1bW15VHJhbnNwb3J0KTsKKyAKK0BAIC05OTAsNiArOTg4LDUwIEBAIHZvaWQg VGVzdFdlYkNoYW5uZWw6OnRlc3RBc3luY09iamVjdCgpCisgICAgIHRocmVhZC53YWl0KCk7Cisg fQorIAorK3ZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RQcm9wZXJ0eU11bHRpcGxlVHJhbnNwb3J0 cygpCisreworKyAgICBEdW1teVRyYW5zcG9ydCB0cmFuc3BvcnQxOworKyAgICBEdW1teVRyYW5z cG9ydCB0cmFuc3BvcnQyOworKworKyAgICBRV2ViQ2hhbm5lbCBjaGFubmVsOworKyAgICBRTWV0 YU9iamVjdFB1Ymxpc2hlciAqcHVibGlzaGVyID0gY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVy OworKworKyAgICBUZXN0T2JqZWN0IHRlc3RPYmo7CisrICAgIHRlc3RPYmouc2V0T2JqZWN0TmFt ZSgidGVzdE9iamVjdCIpOworKyAgICBjaGFubmVsLnJlZ2lzdGVyT2JqZWN0KHRlc3RPYmoub2Jq ZWN0TmFtZSgpLCAmdGVzdE9iaik7CisrICAgIGNoYW5uZWwuY29ubmVjdFRvKCZ0cmFuc3BvcnQx KTsKKysgICAgY2hhbm5lbC5jb25uZWN0VG8oJnRyYW5zcG9ydDIpOworKworKyAgICB0ZXN0T2Jq LnNldFByb3AoIkhlbGxvIik7CisrCisrICAgIHB1Ymxpc2hlci0+aW5pdGlhbGl6ZUNsaWVudCgm dHJhbnNwb3J0MSk7CisrICAgIHB1Ymxpc2hlci0+aW5pdGlhbGl6ZUNsaWVudCgmdHJhbnNwb3J0 Mik7CisrICAgIHB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQxKTsK KysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCB0cnVl KTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCBm YWxzZSk7CisrICAgIFFWRVJJRlkodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5pc0VtcHR5KCkp OworKyAgICBRVkVSSUZZKHRyYW5zcG9ydDIubWVzc2FnZXNTZW50KCkuaXNFbXB0eSgpKTsKKysK KysgICAgdGVzdE9iai5zZXRQcm9wKCJXb3JsZCIpOworKyAgICBRVFJZX0NPTVBBUkVfV0lUSF9U SU1FT1VUKHRyYW5zcG9ydDEubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAxdSwgMjAwMCk7CisrICAg IFFDT01QQVJFKHRyYW5zcG9ydDIubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAwdSk7CisrICAgIHB1 Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQyKTsKKysgICAgUVRSWV9D T01QQVJFX1dJVEhfVElNRU9VVCh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMXUs IDIwMDApOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0 MSksIGZhbHNlKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5z cG9ydDIpLCBmYWxzZSk7CisrCisrICAgIHRlc3RPYmouc2V0UHJvcCgiISEhIik7CisrICAgIHB1 Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQyKTsKKysgICAgUUNPTVBB UkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCB0cnVlKTsKKysgICAgUUNP TVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCBmYWxzZSk7CisrICAg IFFUUllfQ09NUEFSRV9XSVRIX1RJTUVPVVQodHJhbnNwb3J0Mi5tZXNzYWdlc1NlbnQoKS5zaXpl KCksIDJ1LCAyMDAwKTsKKysgICAgUUNPTVBBUkUodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5z aXplKCksIDF1KTsKKysgICAgcHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgJnRyYW5z cG9ydDEpOworKyAgICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5zcG9ydDEubWVzc2Fn ZXNTZW50KCkuc2l6ZSgpLCAydSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXND bGllbnRJZGxlKCZ0cmFuc3BvcnQxKSwgZmFsc2UpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXIt PmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MiksIGZhbHNlKTsKKyt9CisrCisgY2xhc3MgRnVuY3Rp b25XcmFwcGVyIDogcHVibGljIFFPYmplY3QKKyB7CisgICAgIFFfT0JKRUNUCitAQCAtMTA4Miw3 ICsxMTI0LDcgQEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6YmVuY2hJbml0aWFsaXplQ2xpZW50cygp CisgCisgICAgICAgICBwdWJsaXNoZXItPnByb3BlcnR5VXBkYXRlc0luaXRpYWxpemVkID0gZmFs c2U7CisgICAgICAgICBwdWJsaXNoZXItPnNpZ25hbFRvUHJvcGVydHlNYXAuY2xlYXIoKTsKKy0g ICAgICAgIHB1Ymxpc2hlci0+c2lnbmFsSGFuZGxlci5jbGVhcigpOworKyAgICAgICAgcHVibGlz aGVyLT5zaWduYWxIYW5kbGVycy5jbGVhcigpOworICAgICB9CisgfQorIAorQEAgLTExMDcsNyAr MTE0OSw3IEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OmJlbmNoUHJvcGVydHlVcGRhdGVzKCkKKyAg ICAgICAgICAgICBvYmotPmNoYW5nZSgpOworICAgICAgICAgfQorIAorLSAgICAgICAgY2hhbm5l bC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5jbGllbnRJc0lkbGUgPSB0cnVlOworKyAgICAgICAgY2hh bm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgbV9kdW1teVRy YW5zcG9ydCk7CisgICAgICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnNlbmRQZW5k aW5nUHJvcGVydHlVcGRhdGVzKCk7CisgICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFu bmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oIGIvcXR3ZWJjaGFubmVs L3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oCitpbmRleCBlYWUyMWY0Li5k ZDRlNjkwIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90 c3Rfd2ViY2hhbm5lbC5oCisrKysgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVs L3RzdF93ZWJjaGFubmVsLmgKK0BAIC0zNDgsNiArMzQ4LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAg ICAgdm9pZCB0ZXN0SnNvblRvVmFyaWFudCgpOworICAgICB2b2lkIHRlc3RJbmZpbml0ZVJlY3Vy c2lvbigpOworICAgICB2b2lkIHRlc3RBc3luY09iamVjdCgpOworKyAgICB2b2lkIHRlc3RQcm9w ZXJ0eU11bHRpcGxlVHJhbnNwb3J0cygpOworICAgICB2b2lkIHRlc3REZWxldGlvbkR1cmluZ01l dGhvZEludm9jYXRpb25fZGF0YSgpOworICAgICB2b2lkIHRlc3REZWxldGlvbkR1cmluZ01ldGhv ZEludm9jYXRpb24oKTsKKyAKK1N1Ym1vZHVsZSBxdHdlYmVuZ2luZSBmMzI4MDU0ZC4uLjM4ZTBk ZjZjIChjb21taXRzIG5vdCBwcmVzZW50KQorU3VibW9kdWxlIHF0d2Vic29ja2V0cyA2NTg1MDk1 NC4uNjNmYjhkYTE6CitkaWZmIC0tZ2l0IGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3 ZWJzb2NrZXRkYXRhcHJvY2Vzc29yLmNwcCBiL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9x d2Vic29ja2V0ZGF0YXByb2Nlc3Nvci5jcHAKK2luZGV4IDJhZmZkZDUuLjk1ZjExOTQgMTAwNjQ0 CistLS0gYS9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRhdGFwcm9jZXNz b3IuY3BwCisrKysgYi9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRhdGFw cm9jZXNzb3IuY3BwCitAQCAtMjczLDYgKzI3Myw3IEBAIHZvaWQgUVdlYlNvY2tldERhdGFQcm9j ZXNzb3I6OmNsZWFyKCkKKyAgICAgaWYgKCFtX3BDb252ZXJ0ZXJTdGF0ZSkKKyAgICAgICAgIG1f cENvbnZlcnRlclN0YXRlID0gbmV3IFFUZXh0Q29kZWM6OkNvbnZlcnRlclN0YXRlKFFUZXh0Q29k ZWM6OkNvbnZlcnRJbnZhbGlkVG9OdWxsIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFUZXh0Q29kZWM6Oklnbm9yZUhlYWRlcik7 CisrICAgIGZyYW1lLmNsZWFyKCk7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0d2Vic29j a2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwIGIvcXR3ZWJzb2NrZXRz L3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRwcm90b2NvbC5jcHAKK2luZGV4IGRmODdhOTMuLmQw NDY1ZjEgMTAwNjQ0CistLS0gYS9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tl dHByb3RvY29sLmNwcAorKysrIGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2Nr ZXRwcm90b2NvbC5jcHAKK0BAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBRV2ViU29ja2V0UHJvdG9j b2w6Om1hc2soY2hhciAqcGF5bG9hZCwgcXVpbnQ2NCBzaXplLCBxdWludDMyIG1hc2tpbmdLZXkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aW50OCgobWFza2luZ0tleSAmIDB4MDAw MEZGMDB1KSA+PiA4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpbnQ4KChtYXNr aW5nS2V5ICYgMHgwMDAwMDBGRnUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKy0g ICAgaW50IGkgPSAwOworKyAgICBxdWludDY0IGkgPSAwOworICAgICB3aGlsZSAoc2l6ZS0tID4g MCkKKyAgICAgICAgICpwYXlsb2FkKysgXj0gbWFza1tpKysgJSA0XTsKKyB9CmRpZmYgLS1naXQg YS9zcmNwa2dzL3F0NS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCmluZGV4IDM5YTAy OTc5ZWU2NjkuLjQxNGI1ZTUzMmY5MDQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCkBAIC0yLDExICsyLDExIEBACiAjCiAjIHJldmJ1 bXAgbGlicXR4ZGcgYWZ0ZXIgYnVtcGluZyBwYXRjaCB2ZXJzaW9uCiBwa2duYW1lPXF0NQotdmVy c2lvbj01LjE1LjcrMjAyMjExMTkKK3ZlcnNpb249NS4xNS44CityZXZpc2lvbj0xCitidWlsZF9z dHlsZT1tZXRhCiAjIGNvbW1pdCBmOGM5ZmIzMDRiYzNlNTNiM2FhMDdmOTYyY2Q3NGU5MTYwZGVj Y2NjCiAjIGJhc2UgcmVwbzogaHR0cHM6Ly9pbnZlbnQua2RlLm9yZy9xdC9xdC9xdDUKLXJldmlz aW9uPTcKLWJ1aWxkX3N0eWxlPW1ldGEKIGhvc3RtYWtlZGVwZW5kcz0iY21ha2UgY2xhbmcgZmxl eCBwZXJsIGdsaWItZGV2ZWwgcGtnLWNvbmZpZwogIHB5dGhvbiByZTJjIHJ1Ynkgd2hpY2giCiBt YWtlZGVwZW5kcz0iU0RMMi1kZXZlbCBWdWxrYW4tSGVhZGVycyBhbHNhLWxpYi1kZXZlbCBkb3Vi bGUtY29udmVyc2lvbi1kZXZlbApAQCAtMjksOCArMjksOSBAQCBob21lcGFnZT0iaHR0cHM6Ly9x dC5pby8iCiAjIHRhcmJhbGwgaXMgZ2VuZXJhdGVkIHdpdGggYGdpdCBhcmNoaXZlLWFsbCBxdDUt JHZlcnNpb24udGFyLmd6YAogIyB0byBrZWVwIHRoZSBzaXplIHNtYWxsZXIgcXR3ZWJlbmdpbmUs IHF0d2VidmlldywgcXRkb2NnYWxsZXJ5LCBxdGFjdGl2ZXF0IGFuZCBxdHBpbQogIyBjYW4gYmUg bWFya2VkIHdpdGggdGhlIGV4cG9ydC1pZ25vcmUgYXR0cmlidXRlCi1kaXN0ZmlsZXM9Imh0dHBz Oi8vdm9pZC5qb2hubnluYXRvci5kZXYvZGlzdGZpbGVzL3F0NS0ke3ZlcnNpb259LnRhci5neiIK LWNoZWNrc3VtPTlkNTdhZjQ3MWM3ODAyOWEzNjIyNzZiN2M5OTEwOGVhMDA5ZjUxMWJiOWJhNmZm NmNiODg0ZjZkZGQyNTVlOWYKKyNkaXN0ZmlsZXM9Imh0dHBzOi8vdm9pZC5qb2hubnluYXRvci5k ZXYvZGlzdGZpbGVzL3F0NS0ke3ZlcnNpb259LnRhci5neiIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9k b3dubG9hZC5xdC5pby9hcmNoaXZlL3F0LzUuMTUvJHt2ZXJzaW9ufS9zaW5nbGUvcXQtZXZlcnl3 aGVyZS1vcGVuc291cmNlLXNyYy0ke3ZlcnNpb259LnRhci54eiIKK2NoZWNrc3VtPTc3NmE5MzAy YzMzNjY3MWY5NDA2YTUzYmQzMGI4ZTM2ZjgyNTc0MmIyZWM0NGE1N2MwODIxN2JmZjBmYTg2YjkK IHB5dGhvbl92ZXJzaW9uPTIgI3VudmVyaWZpZWQKIHJlcGxhY2VzPSJxdDUtZG9jPDUuNi4wIHF0 NS1xdWljazE8NS42LjAgcXQ1LXF1aWNrMS1kZXZlbDw1LjYuMCBxdDUtd2Via2l0PDUuNi4wIHF0 NS13ZWJraXQtZGV2ZWw8NS42LjAKICBxdDUtZW5naW5pbzw1LjcuMSBxdDUtZW5naW5pby1kZXZl bDw1LjcuMSBxdDUtcGx1Z2luLWd0azw1LjcuMSBxdDUtY2FudmFzM2Q8NS4xMy4wIgpAQCAtMjQ2 LDcgKzI0Nyw2IEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkjIG9wdHMrPSIgLXYiCiAJb3B0cys9IiAt c2tpcCBxdHdlYmVuZ2luZSIKIAlvcHRzKz0iIC1za2lwIHF0d2VidmlldyIKLQlvcHRzKz0iIC1z a2lwIHF0ZG9jZ2FsbGVyeSIKIAlvcHRzKz0iIC1za2lwIHF0cGltIgogCW9wdHMrPSIgLXNraXAg cXRzeXN0ZW1zIgogCW9wdHMrPSIgLXNraXAgcXRzcGVlY2giCgpGcm9tIGQ4NTBiZmJkODk5ZGUy NDQ2YzhkNjcyNWJlZjlmZDYzZmQzN2E4OTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2OC8xMTVdIHF0YXY6IHJldmJ1bXAgZm9yIGZmbXBl ZzQtNC40LjMKCi0tLQogc3JjcGtncy9xdGF2L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcXRhdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXRhdi90ZW1wbGF0ZQppbmRleCAzNGMzMGIyYzBj NzhmLi4yZDAwYWQxMDQzNTVlIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0YXYvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9xdGF2L3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdxdGF2JwogcGtnbmFtZT1xdGF2CiB2ZXJzaW9uPTEuMTMuMAotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icXQ1LXFtYWtl IHF0NS1ob3N0LXRvb2xzIgotbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBsaWJhc3MtZGV2ZWwg bGlib3BlbmFsLWRldmVsCittYWtlZGVwZW5kcz0iZmZtcGVnNC1kZXZlbCBsaWJhc3MtZGV2ZWwg bGlib3BlbmFsLWRldmVsCiAgbGlidmEtZ2x4LWRldmVsIGxpYlh2LWRldmVsIHB1bHNlYXVkaW8t ZGV2ZWwKICBxdDUtZGVjbGFyYXRpdmUtZGV2ZWwgcXQ1LXN2Zy1kZXZlbAogIHF0NS1xdWlja2Nv bnRyb2xzIgoKRnJvbSA2YTNmMjkyMDY3Y2NlZWYwN2EyYTY2ODU1YTQwNzc2N2ZjOGQ1MDFjIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjkv MTE1XSBxdG94OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcXRveC90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXRveC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXRveC90ZW1w bGF0ZQppbmRleCAzOWM2NDNmZWNkYjVhLi5iYjcwZTdmNTEyNDBhIDEwMDY0NAotLS0gYS9zcmNw a2dzL3F0b3gvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdG94L3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXRveCcKIHBrZ25hbWU9cXRveAogdmVyc2lvbj0x LjE3LjYKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1 cmVfYXJncz0iLURVUERBVEVfQ0hFQ0s9T0ZGCiAgLURHSVRfREVTQ1JJQkU9JHt2ZXJzaW9ufQoK RnJvbSAzNmNhNDg0OTliZWI3YjBmOGI0ZTI5OTI3NzYxZGJkMGU4NjVlNWUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzAvMTE1XSByZXRy b2FyY2g6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9yZXRyb2FyY2gvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcmV0 cm9hcmNoL3RlbXBsYXRlCmluZGV4IDI4MDE2YWEwMTI5ZTYuLjIwYTE0MTU5MTNiZTUgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvcmV0cm9hcmNoL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcmV0cm9hcmNo L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncmV0cm9hcmNo JwogcGtnbmFtZT1yZXRyb2FyY2gKIHZlcnNpb249MS4xNS4wCi1yZXZpc2lvbj0xCityZXZpc2lv bj0yCiBidWlsZF9zdHlsZT1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLXByZWZpeD0vdXNy IC0tc3lzY29uZmRpcj0vZXRjIC0tZW5hYmxlLW5ldHdvcmtpbmcKICAtLWVuYWJsZS11ZGV2IC0t ZGlzYWJsZS1idWlsdGluZmxhYyAtLWRpc2FibGUtYnVpbHRpbmdsc2xhbmcKCkZyb20gNDFhOGI0 MmI3ODYzNWFiNmVhNmEzNDA4YmM2N2I1NWMyNDJhZTgxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDcxLzExNV0gc2NyY3B5OiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9zY3JjcHkvdGVtcGxhdGUgYi9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZQppbmRleCBh YzE4YmMwMzQxOGNlLi5mMzlhN2Y2NzhhYjM1IDEwMDY0NAotLS0gYS9zcmNwa2dzL3NjcmNweS90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ3NjcmNweScKIHBrZ25hbWU9c2NyY3B5CiB2ZXJzaW9uPTIuMS4x Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2Fy Z3M9Ii1EY29tcGlsZV9zZXJ2ZXI9ZmFsc2UKICAtRHByZWJ1aWx0X3NlcnZlcj0vdXNyL3NoYXJl L3NjcmNweS9zY3JjcHktc2VydmVyLXYke3ZlcnNpb259IgoKRnJvbSA0NTc3OTdiNWYyNGE3ZDI0 OGNiY2Q0YzA5MDI5NzlkNGFkMDE0YWMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUx IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzIvMTE1XSBzcGVrLWFsdGVybmF0aXZlOiByZXZidW1w IGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0 ZSB8IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0ZSBiL3Ny Y3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0ZQppbmRleCBkNjUwODZiOGYwMDhjLi4wNTI0 NmYxYjhkMGM4IDEwMDY0NAotLS0gYS9zcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzcGVrLWFsdGVybmF0aXZlJwogcGtnbmFtZT1zcGVrLWFs dGVybmF0aXZlCiB2ZXJzaW9uPTAuOC4yLjMKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxk X3N0eWxlPWdudS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgZ2V0dGV4dC1k ZXZlbCBpbnRsdG9vbCBsaWJ0b29sIHBrZy1jb25maWcgd3hXaWRnZXRzLWNvbW1vbiIKLW1ha2Vk ZXBlbmRzPSJmZm1wZWctZGV2ZWwgd3hXaWRnZXRzLWd0azMtZGV2ZWwiCi1kZXBlbmRzPSJmZm1w ZWciCittYWtlZGVwZW5kcz0iZmZtcGVnNC1kZXZlbCB3eFdpZGdldHMtZ3RrMy1kZXZlbCIKK2Rl cGVuZHM9ImZmbXBlZzQiCiBzaG9ydF9kZXNjPSJBY291c3RpYyBzcGVjdHJ1bSBhbmFseXNlciIK IG1haW50YWluZXI9IkthcnRpayBTaW5naCA8a2FydGlrLnlud2FAZ21haWwuY29tPiIKIGxpY2Vu c2U9IkdQTC0zLjAtb3ItbGF0ZXIiCgpGcm9tIGFjNzBkNmI2ZTkxYTU0ODdhZjMyYmRlNDBhNDBk NGM1NWE2ZmE2MTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVj dDogW1BBVENIIDA3My8xMTVdIHNzcjogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBz cmNwa2dzL3Nzci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Nzci90ZW1wbGF0ZSBi L3NyY3BrZ3Mvc3NyL3RlbXBsYXRlCmluZGV4IGIwNTViOWVjMDc3NGEuLjM0NDhjYTExMGViMGMg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3NyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3NyL3RlbXBs YXRlCkBAIC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzc3InCiBwa2duYW1l PXNzcgogdmVyc2lvbj0wLjQuNAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfUVQ1PU9OIgogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIgotbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZy1kZXZlbCBnbHUt ZGV2ZWwgamFjay1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCittYWtlZGVwZW5kcz0iYWxzYS1saWIt ZGV2ZWwgZmZtcGVnNC1kZXZlbCBnbHUtZGV2ZWwgamFjay1kZXZlbCBwdWxzZWF1ZGlvLWRldmVs CiAgcXQ1LXRvb2xzLWRldmVsIHF0NS14MTFleHRyYXMtZGV2ZWwgbGliWGluZXJhbWEtZGV2ZWwg djRsLXV0aWxzLWRldmVsIgogZGVwZW5kcz0iZGVza3RvcC1maWxlLXV0aWxzIGhpY29sb3ItaWNv bi10aGVtZSIKIHNob3J0X2Rlc2M9IlNpbXBsZSBTY3JlZW4gUmVjb3JkZXIgZm9yIHByb2dyYW1z IGFuZCBnYW1lcyIKCkZyb20gNWIwN2IyNGY3MTg0Zjc0ZDdkNWU3YjI4OGQ1MGZhNGRhMWE4OWU2 NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDc0LzExNV0gc3VtbzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3N1bW8v dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3N1bW8vdGVtcGxhdGUgYi9zcmNwa2dzL3N1bW8v dGVtcGxhdGUKaW5kZXggMGY5YjllYzgxNWY1Ni4uYTNmZTEzNGFhNWFjYyAxMDA2NDQKLS0tIGEv c3JjcGtncy9zdW1vL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3N1bW8nCiBwa2duYW1lPXN1bW8KIHZlcnNp b249MS4xMi4wCi1yZXZpc2lvbj01CityZXZpc2lvbj02CiBidWlsZF9zdHlsZT1jbWFrZQogaG9z dG1ha2VkZXBlbmRzPSJsaWJnZGFsLXRvb2xzIHBrZy1jb25maWcgc3dpZyBweXRob24zLXNldHVw dG9vbHMiCiBtYWtlZGVwZW5kcz0icHl0aG9uMy1kZXZlbCBmZm1wZWctZGV2ZWwgZm94LWRldmVs IGdsMnBzLWRldmVsIGxpYmdkYWwtZGV2ZWwKCkZyb20gZjJlMzhhOWI0ZDgyNmVmMjQ1YTA2MDU2 OGIzZTVlY2JlYmZiOWI5NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDc1LzExNV0gc3luZmlnOiByZXZidW1wIGZvciBmZm1wZWctNi4wIGFu ZCBtbHQ3CgotLS0KIHNyY3BrZ3Mvc3luZmlnL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCB8IDcxICsr KysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlICAgICAg ICAgICAgICB8ICA2ICstLQogMiBmaWxlcyBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCAzIGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvc3luZmlnL3BhdGNoZXMvZmZt cGVnNi5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmlnL3BhdGNoZXMvZmZtcGVnNi5w YXRjaCBiL3NyY3BrZ3Mvc3luZmlnL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4xMDc4MGI0Mjc4MmY0Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCkBAIC0wLDAgKzEsNzEg QEAKKy0tLSBhL3NyYy9tb2R1bGVzL21vZF9saWJhdmNvZGVjL3RyZ3RfYXYuY3BwCTIwMjItMTAt MjUgMDk6MTQ6MTIuMDAwMDAwMDAwIC0wNDAwCisrKysgYi9zcmMvbW9kdWxlcy9tb2RfbGliYXZj b2RlYy90cmd0X2F2LmNwcAkyMDIzLTA1LTA1IDIxOjM0OjE3Ljg5OTE5NDU1OSAtMDQwMAorQEAg LTM4LDYgKzQxLDcgQEAKKyBleHRlcm4gIkMiCisgeworICNpZmRlZiBIQVZFX0xJQkFWRk9STUFU X0FWRk9STUFUX0gKKysjCWluY2x1ZGUgPGxpYmF2Y29kZWMvYXZjb2RlYy5oPgorICMJaW5jbHVk ZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4KKyAjZWxpZiBkZWZpbmVkKEhBVkVfQVZGT1JNQVRf SCkKKyAjCWluY2x1ZGUgPGF2Zm9ybWF0Lmg+CitAQCAtMTU1LDExICsxNTYsMTEgQEAKKyAgICAg fQorIAorIAlib29sIG9wZW5fdmlkZW9fc3RyZWFtKCkgeworLQkJaWYgKGF2Y29kZWNfb3BlbjIo dmlkZW9fY29udGV4dCwgTlVMTCwgTlVMTCkgPCAwKSB7CisrCQlpZiAoYXZjb2RlY19vcGVuMih2 aWRlb19jb250ZXh0LCBudWxscHRyLCBudWxscHRyKSA8IDApIHsKKyAJCQlzeW5maWc6OmVycm9y KCJUYXJnZXRfTGliQVZDb2RlYzogY291bGQgbm90IG9wZW4gdmlkZW8gY29kZWMiKTsKKyAJCQkv LyBzZWVtcyB0aGUgY2FsbGluZyBvZiBhdmNvZGVjX2ZyZWVfY29udGV4dCBhZnRlciBlcnJvciB3 aWxsIGNhdXNlIGNyYXNoCisgCQkJLy8gc28ganVzdCBmb3JnZXQgYWJvdXQgdGhpcyBjb250ZXh0 CistCQkJdmlkZW9fY29udGV4dCA9IE5VTEw7CisrCQkJdmlkZW9fY29udGV4dCA9IG51bGxwdHI7 CisgCQkJY2xvc2UoKTsKKyAJCQlyZXR1cm4gZmFsc2U7CisgICAgICAgICB9CitAQCAtMjM0LDE1 ICsyMzUsMjEgQEAKKyAJCWNsb3NlKCk7CisgCisgCQlpZiAoIWF2X3JlZ2lzdGVyZWQpIHsKKysj aWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTggLy8gRkZNUEVHIDwgNC4wCisgCQkJYXZf cmVnaXN0ZXJfYWxsKCk7CisrI2VuZGlmCisgCQkJYXZfcmVnaXN0ZXJlZCA9IHRydWU7CisgCQl9 CisgCisgCQkvLyBndWVzcyBmb3JtYXQKKy0JCUFWT3V0cHV0Rm9ybWF0ICpmb3JtYXQgPSBhdl9n dWVzc19mb3JtYXQoTlVMTCwgZmlsZW5hbWUuY19zdHIoKSwgTlVMTCk7CisrI2lmIExJQkFWQ09E RUNfVkVSU0lPTl9NQUpPUiA8IDU5IC8vIEZGTVBFRyA8IDUuMAorKwkJQVZPdXRwdXRGb3JtYXQq IGZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdChudWxscHRyLCBmaWxlbmFtZS5jX3N0cigpLCBudWxs cHRyKTsKKysjZWxzZQorKwkJY29uc3QgQVZPdXRwdXRGb3JtYXQqIGZvcm1hdCA9IGF2X2d1ZXNz X2Zvcm1hdChudWxscHRyLCBmaWxlbmFtZS5jX3N0cigpLCBudWxscHRyKTsKKysjZW5kaWYKKyAJ CWlmICghZm9ybWF0KSB7CisgCQkJc3luZmlnOjp3YXJuaW5nKCJUYXJnZXRfTGliQVZDb2RlYzog dW5hYmxlIHRvIGd1ZXNzIHRoZSBvdXRwdXQgZm9ybWF0LCBkZWZhdWx0aW5nIHRvIE1QRUciKTsK Ky0JCQlmb3JtYXQgPSBhdl9ndWVzc19mb3JtYXQoIm1wZWciLCBOVUxMLCBOVUxMKTsKKysJCQlm b3JtYXQgPSBhdl9ndWVzc19mb3JtYXQoIm1wZWciLCBudWxscHRyLCBudWxscHRyKTsKKyAJCX0K KyAJCWlmICghZm9ybWF0KSB7CisgCQkJc3luZmlnOjplcnJvcigiVGFyZ2V0X0xpYkFWQ29kZWM6 IHVuYWJsZSB0byBmaW5kICdtcGVnJyBvdXRwdXQgZm9ybWF0Iik7CitAQCAtMjU0LDYgKzI2MSw3 IEBACisgCQljb250ZXh0ID0gYXZmb3JtYXRfYWxsb2NfY29udGV4dCgpOworIAkJYXNzZXJ0KGNv bnRleHQpOworIAkJY29udGV4dC0+b2Zvcm1hdCA9IGZvcm1hdDsKKysjaWYgTElCQVZDT0RFQ19W RVJTSU9OX01BSk9SIDwgNTggLy8gRkZNUEVHIDwgNC4wCisgCQlpZiAoZmlsZW5hbWUuc2l6ZSgp ICsgMSA+IHNpemVvZihjb250ZXh0LT5maWxlbmFtZSkpIHsKKyAJCQlzeW5maWc6OmVycm9yKAor IAkJCQkiVGFyZ2V0X0xpYkFWQ29kZWM6IGZpbGVuYW1lIHRvbyBsb25nLCBtYXggbGVuZ3RoIGlz ICVkLCBmaWxlbmFtZSBpcyAnJXMnIiwKK0BAIC0yNjMsNiArMjcxLDE0IEBACisgCQkJcmV0dXJu IGZhbHNlOworIAkJfQorIAkJbWVtY3B5KGNvbnRleHQtPmZpbGVuYW1lLCBmaWxlbmFtZS5jX3N0 cigpLCBmaWxlbmFtZS5zaXplKCkgKyAxKTsKKysjZWxzZQorKwkJY29udGV4dC0+dXJsID0gYXZf c3RybmR1cChmaWxlbmFtZS5jX3N0cigpLCBmaWxlbmFtZS5zaXplKCkpOworKwkJaWYgKCFjb250 ZXh0LT51cmwpIHsKKysJCQlzeW5maWc6OmVycm9yKCJUYXJnZXRfTGliQVZDb2RlYzogY2Fubm90 IGFsbG9jYXRlIHNwYWNlIGZvciBmaWxlbmFtZSIpOworKwkJCWNsb3NlKCk7CisrCQkJcmV0dXJu IGZhbHNlOworKwkJfQorKyNlbmRpZgorIAorIAkJcGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7 CisgCQlhc3NlcnQocGFja2V0KTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmlnL3RlbXBsYXRl IGIvc3JjcGtncy9zeW5maWcvdGVtcGxhdGUKaW5kZXggMzAxMDk1NDFlYzRmYy4uNzAzY2ZkN2Vi YWM4NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9zeW5maWcvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9z eW5maWcvdGVtcGxhdGUKQEAgLTIsMTEgKzIsMTEgQEAKICMgU2hvdWxkIGJlIGtlcHQgaW4gc3lu YyB3aXRoICdzeW5maWdzdHVkaW8nIGFuZCAnRVRMJwogcGtnbmFtZT1zeW5maWcKIHZlcnNpb249 MS40LjQKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUK IGNvbmZpZ3VyZV9hcmdzPSItLXdpdGgtYm9vc3QtbGliZGlyPSR7WEJQU19DUk9TU19CQVNFfS91 c3IvbGliIgogaG9zdG1ha2VkZXBlbmRzPSJib29zdC1idWlsZCBJbWFnZU1hZ2ljayBwa2ctY29u ZmlnIGludGx0b29sIgotbWFrZWRlcGVuZHM9IkVUTCBnZXR0ZXh0LWRldmVsIGxpYnhtbCsrLWRl dmVsIG1sdC1kZXZlbCBsaWJtYWdpY2stZGV2ZWwKK21ha2VkZXBlbmRzPSJFVEwgZ2V0dGV4dC1k ZXZlbCBsaWJ4bWwrKy1kZXZlbCBtbHQ3LWRldmVsIGxpYm1hZ2ljay1kZXZlbAogIGxpYm1uZy1k ZXZlbCBib29zdC1idWlsZCBib29zdC1kZXZlbCBsaWJvcGVuZXhyLWRldmVsIGZmbXBlZy1kZXZl bCIKIGRlcGVuZHM9IkltYWdlTWFnaWNrIgogc2hvcnRfZGVzYz0iQ0xJIDJEIHZlY3RvciBhbmQg dGltZWxpbmUtYmFzZWQgYW5pbWF0aW9uIHNvZnR3YXJlIgpAQCAtMjAsNyArMjAsNyBAQCBDWFhG TEFHUz0iLXN0ZD1jKysxMSAtREhBVkVfTE9DQUxFX0g9MSIKIAogc3luZmlnLWRldmVsX3BhY2th Z2UoKSB7CiAJZGVwZW5kcz0iJHtzb3VyY2Vwa2d9Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259Ci0J IGxpYm9wZW5leHItZGV2ZWwgbGlieG1sKystZGV2ZWwgbWx0LWRldmVsIgorCSBsaWJvcGVuZXhy LWRldmVsIGxpYnhtbCsrLWRldmVsIG1sdDctZGV2ZWwiCiAJc2hvcnRfZGVzYys9IiAtIGRldmVs b3BtZW50IGZpbGVzIgogCXBrZ19pbnN0YWxsKCkgewogCQl2bW92ZSB1c3IvYmluL3N5bmZpZy1j b25maWcKCkZyb20gOGMzNzJhNjJhNTk3NzVjOTJiMTM5NTk5OTY1N2MwODUyMjM5NzdmOCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDc2LzEx NV0gdGltZzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3RpbWcvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL3RpbWcvdGVtcGxhdGUgYi9zcmNwa2dzL3RpbWcvdGVtcGxh dGUKaW5kZXggMmEyYWI3NjNkMmZkZC4uOGZiNDMyNzUzNWVmOSAxMDA2NDQKLS0tIGEvc3JjcGtn cy90aW1nL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3RpbWcnCiBwa2duYW1lPXRpbWcKIHZlcnNpb249MS40 LjUKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVf YXJncz0iLURXSVRIX09QRU5TTElERV9TVVBQT1JUPW9mZiAtV25vLWRldiIKIGhvc3RtYWtlZGVw ZW5kcz0icGtnLWNvbmZpZyBnaXQiCgpGcm9tIDFkZTAyMzc2YWY4YzA5YzI2YzNmZWIwMjk1ODE2 OWZmMGI0NTc4ZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVj dDogW1BBVENIIDA3Ny8xMTVdIHR2aGVhZGVuZDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoK LS0tCiBzcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdHZoZWFk ZW5kL3RlbXBsYXRlIGIvc3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUKaW5kZXggYTIwMDQ0ODAz MzJiMi4uNDZiNTJiNmZiN2Y5NCAxMDA2NDQKLS0tIGEvc3JjcGtncy90dmhlYWRlbmQvdGVtcGxh dGUKKysrIGIvc3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUKQEAgLTgsNyArOCw3IEBAIGNvbmZp Z3VyZV9hcmdzPSItLWVuYWJsZS1kdmJzY2FuIC0tZGlzYWJsZS1mZm1wZWdfc3RhdGljCiAtLWRp c2FibGUtbGlieDI2NV9zdGF0aWMgLS1kaXNhYmxlLWxpYnZweF9zdGF0aWMgLS1kaXNhYmxlLWxp YnRoZW9yYV9zdGF0aWMKIC0tZGlzYWJsZS1saWJ2b3JiaXNfc3RhdGljIC0tZGlzYWJsZS1saWJm ZGthYWNfc3RhdGljIgogaG9zdG1ha2VkZXBlbmRzPSJnZXR0ZXh0IHBrZy1jb25maWcgcHl0aG9u IGdpdCB3aGljaCIKLW1ha2VkZXBlbmRzPSJhdmFoaS1saWJzLWRldmVsIG9wZW5zc2wtZGV2ZWwg emxpYi1kZXZlbCBsaWJjdXJsLWRldmVsIGZmbXBlZy1kZXZlbCIKK21ha2VkZXBlbmRzPSJhdmFo aS1saWJzLWRldmVsIG9wZW5zc2wtZGV2ZWwgemxpYi1kZXZlbCBsaWJjdXJsLWRldmVsIGZmbXBl ZzQtZGV2ZWwiCiBzaG9ydF9kZXNjPSJUViBzdHJlYW1pbmcgc2VydmVyIgogbWFpbnRhaW5lcj0i bGVtbWkgPGxlbW1pQG5lcmQybmVyZC5vcmc+IgogbGljZW5zZT0iR1BMLTMuMC1vbmx5IgoKRnJv bSAyNzE5ZjQ1MzY2ZjMxOThiZDE3MmU4NTNlZjUzNzMzZjE1ZGFiZTMxIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzgvMTE1XSB1bnBhcGVy OiB1cGRhdGUgdG8gNy4wLjAuCgotLS0KIHNyY3BrZ3MvdW5wYXBlci90ZW1wbGF0ZSB8IDE2ICsr KysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlIGIvc3JjcGtncy91 bnBhcGVyL3RlbXBsYXRlCmluZGV4IDM4ZWQ0N2E1ODQwMTYuLjFmZjkxMGU3MjJhZmMgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvdW5wYXBlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3VucGFwZXIvdGVt cGxhdGUKQEAgLTEsMTMgKzEsMTMgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3VucGFwZXInCiBw a2duYW1lPXVucGFwZXIKLXZlcnNpb249Ni4xCi1yZXZpc2lvbj0zCi1idWlsZF9zdHlsZT1nbnUt Y29uZmlndXJlCit2ZXJzaW9uPTcuMC4wCityZXZpc2lvbj0xCitidWlsZF9zdHlsZT1tZXNvbgor aG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIG1lc29uIGxpYnhzbHQiCittYWtlZGVwZW5kcz0i ZmZtcGVnLWRldmVsIHB5dGhvbjMtU3BoaW54Igorc2hvcnRfZGVzYz0iUG9zdC1wcm9jZXNzaW5n IHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQg PG9ycGhhbkB2b2lkbGludXgub3JnPiIKLWhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBsaWJ4 c2x0IgotbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCIKLWxpY2Vuc2U9IkdQTC0yIgorbGljZW5z ZT0iR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3d3dy5mbGFtZWV5ZXMuZXUv cHJvamVjdHMvdW5wYXBlciIKLXNob3J0X2Rlc2M9IkEgcG9zdC1wcm9jZXNzaW5nIHRvb2wgZm9y IHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogZGlzdGZpbGVzPSJodHRwczovL3d3dy5mbGFtZWV5 ZXMuZXUvZmlsZXMvJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci54eiIKLWNoZWNrc3VtPTIzN2M4 NGY1ZGE1NDRiM2Y3NzA5ODI3ZjlmMTJjMzdjMzQ2Y2RmMDI5YjExMjhmYjQ2MzNmOWJhZmE1Y2I5 MzAKK2NoZWNrc3VtPTI1NzVmYmJmMjZjMjI3MTlkMWNiODgyYjU5NjAyYzk5MDBjN2Y3NDcxMThh YzEzMDg4M2Y2MzQxOWJlNDZhODAKCkZyb20gZGY1MjhkNjQ4Mzk5M2YxMzdmMzEzNTI5ZjA0Y2U5 MzhiODZmYmJjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDc5LzExNV0gdmJhLW06IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy92YmEtbS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmJhLW0vdGVtcGxhdGUgYi9z cmNwa2dzL3ZiYS1tL3RlbXBsYXRlCmluZGV4IDgwOTM0M2Y0NjVmMjQuLmUzZjc3ODVkZTBkMjMg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdmJhLW0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy92YmEtbS90 ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9dmJhLW0KIHJldmVydHM9MTI5Ml8yCiB2 ZXJzaW9uPTIuMS42Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQog Y29uZmlndXJlX2FyZ3M9Ii1ERU5BQkxFX0dUSz1UUlVFIC1ERU5BQkxFX0ZGTVBFRz1UUlVFIC1E RU5BQkxFX0xJTks9VFJVRSAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSIKIGhvc3RtYWtlZGVw ZW5kcz0iZ2V0dGV4dCBwa2ctY29uZmlnIHVuemlwIHppcCB5YXNtIHd4V2lkZ2V0cy1ndGszLWRl dmVsIgoKRnJvbSA5N2JlMTNjNjI3ZTc1YWVhMGQ1OTU1OTUxMjA2M2IzMmQ4YzE5ZDAxIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODAvMTE1 XSB2aWNlOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvdmljZS90ZW1w bGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZpY2UvdGVtcGxhdGUgYi9zcmNwa2dzL3ZpY2Uv dGVtcGxhdGUKaW5kZXggZmU5ZDMzYTgxMTk0Ny4uNGJlYWIyYzVmOWViZCAxMDA2NDQKLS0tIGEv c3JjcGtncy92aWNlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdmljZS90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3ZpY2UnCiBwa2duYW1lPXZpY2UKIHZlcnNp b249My43LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1 cmUKIGNvbmZpZ3VyZV9hcmdzPSIKIAkkKHZvcHRfZW5hYmxlIHNkbDIgc2RsdWkyKQpAQCAtMjYs NyArMjYsNyBAQCBtYWtlZGVwZW5kcz0iCiAJJCh2b3B0X2lmIGd0azMgZ3RrKzMtZGV2ZWwpCiAJ JCh2b3B0X2lmIGd0azMgcHVsc2VhdWRpby1kZXZlbCkKIAkkKHZvcHRfaWYgZ3RrMyBwYW5nby1k ZXZlbCkKLQkkKHZvcHRfaWYgZmZtcGVnIGZmbXBlZy1kZXZlbCkiCisJJCh2b3B0X2lmIGZmbXBl ZyBmZm1wZWc0LWRldmVsKSIKIHNob3J0X2Rlc2M9IkVtdWxhdG9yIGZvciBDNjQsIEMxMjgsIENC TS1JSSwgUEVULCBWSUMyMCwgUGx1czQgYW5kIEMxNiIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxv cnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyIgoKRnJvbSA0 NTZhNWRhOTVmOTRiYTdiOGE3NmUxN2M4YjJhNWYwNWY5NzQ3N2RkIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODEvMTE1XSB3YXlwaXBlOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0 ZQppbmRleCA2ZGE4OGIyMWJmMmExLi40ZGE4MDU4NDAwYjU4IDEwMDY0NAotLS0gYS9zcmNwa2dz L3dheXBpcGUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy93YXlwaXBlL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnd2F5cGlwZScKIHBrZ25hbWU9d2F5cGlwZQog dmVyc2lvbj0wLjguNgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24K ICMgbHRvIGlzIG9mZiBiZWNhdXNlIGl0IGNhdXNlcyBsaW5raW5nIGVycm9ycyBpbiBhcm12Nmwg YW5kIGFybXY3bCAoZHVlIHRvIE5FT04pCiBjb25maWd1cmVfYXJncz0iLUR3ZXJyb3I9ZmFsc2Ug LUR3aXRoX2RtYWJ1Zj1lbmFibGVkIC1Ed2l0aF9sejQ9ZW5hYmxlZAoKRnJvbSAzYzc1YjdlMjA3 M2IzMTExMDhmMWI3YWE2OGUzMTkxZTI1YmMyMmMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODIvMTE1XSB3Zi1yZWNvcmRlcjogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0ZSBiL3NyY3BrZ3Mvd2YtcmVjb3JkZXIv dGVtcGxhdGUKaW5kZXggZTI3OGViMDAxNjAwZi4uNWQwMTRhNWYyOGFmYiAxMDA2NDQKLS0tIGEv c3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3dmLXJlY29yZGVyL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnd2YtcmVjb3JkZXIn CiBwa2duYW1lPXdmLXJlY29yZGVyCiB2ZXJzaW9uPTAuMy4wCi1yZXZpc2lvbj0xCityZXZpc2lv bj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHNjZG9j IHdheWxhbmQtZGV2ZWwiCiBtYWtlZGVwZW5kcz0id2F5bGFuZC1wcm90b2NvbHMgd2F5bGFuZC1k ZXZlbCBmZm1wZWctZGV2ZWwgeDI2NC1kZXZlbAoKRnJvbSAyYzQ1ZTE0ZTRmNmQyNDI1MGRkMWU4 NzczY2M0NzFlNjA4NWUyODQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwODMvMTE1XSB4cHJhOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3MveHByYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MveHByYS90ZW1wbGF0 ZSBiL3NyY3BrZ3MveHByYS90ZW1wbGF0ZQppbmRleCAwYTYzZmRiNmM3NDM3Li5kNWFjYzE5ODFj NWY2IDEwMDY0NAotLS0gYS9zcmNwa2dzL3hwcmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy94cHJh L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAneHByYScKIHBr Z25hbWU9eHByYQogdmVyc2lvbj00LjQuNgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9cHl0aG9uMy1tb2R1bGUKIG1ha2VfYnVpbGRfYXJncz0iLS13aXRob3V0LWN1ZGFfa2Vy bmVscyAtLXdpdGhvdXQtY3VkYV9yZWJ1aWxkIgogbWFrZV9pbnN0YWxsX2FyZ3M9IiQodm9wdF93 aXRoIGRvY3MpICR7bWFrZV9idWlsZF9hcmdzfSIKCkZyb20gMTRhZDIwNjU3MTA2NjczYzk2YzY1 YjE0OGM3NTc3ODAyNDNkNzY5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAzMSBNYXIgMjAyMyAwOTowNzo0MCAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDg0LzExNV0gbnYtY29kZWMtaGVhZGVyczogdXBkYXRlIHRvIDEy LjAuMTYuMAoKLS0tCiBzcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUgfCA0ICsrLS0K IDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlIGIvc3JjcGtncy9udi1jb2Rl Yy1oZWFkZXJzL3RlbXBsYXRlCmluZGV4IDNkNDIyYTYxZTQ4OTEuLjI1MWUwNTdmODI2ZmIgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvbnYtY29kZWMtaGVhZGVycy90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdudi1jb2RlYy1oZWFkZXJzJwogcGtnbmFtZT1udi1jb2RlYy1oZWFkZXJzCi12ZXJz aW9uPTExLjEuNS4xCit2ZXJzaW9uPTEyLjAuMTYuMAogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9 Z251LW1ha2VmaWxlCiBzaG9ydF9kZXNjPSJGRm1wZWcgdmVyc2lvbiBvZiBoZWFkZXJzIHJlcXVp cmVkIHRvIGludGVyZmFjZSB3aXRoIE52aWRpYXMgY29kZWMgQVBJcyIKQEAgLTgsNyArOCw3IEBA IG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJN SVQiCiBob21lcGFnZT0iaHR0cDovL2dpdC52aWRlb2xhbi5vcmcvP3A9ZmZtcGVnL252LWNvZGVj LWhlYWRlcnMuZ2l0IgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vRkZtcGVnL252LWNv ZGVjLWhlYWRlcnMvYXJjaGl2ZS9uJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT1kMDk1ZmJk NTZhYTkzNzcyNDcxYTMyM2JlMGViZTY1NTA0YTBmNDNmMDZjNzZhMzBiNmQyNWRhNzdiMDZhZTlj CitjaGVja3N1bT0yYTE1MzNiNjVmNTVmOWRhNTI5NTZmYWYwNjI3ZWQzYjc0ODY4YWMwYzdmMjY5 OTkwZWRkMjEzNjkxMTNiNDhmCiAKIHBvc3RfaW5zdGFsbCgpIHsKIAlzZWQgLW4gJzQsMjVwJyBp bmNsdWRlL2ZmbnZjb2RlYy9udkVuY29kZUFQSS5oID4gTElDRU5TRQoKRnJvbSA3NmUxNGI0NWRl ZDA2MTFiMzg0MjBkYmY4YmIyN2I4N2VhZWFlZmEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDMxIE1hciAyMDIzIDA5 OjA4OjQwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODUvMTE1XSBvcGVuaW1hZ2VkZW5vaXNlOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZSBiL3NyY3Br Z3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZQppbmRleCBkYjVjY2RiMDU1Y2M5Li5jYjkwMDQ1 YWZiNjM0IDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnb3BlbmltYWdlZGVub2lzZScKIHBrZ25hbWU9b3BlbmltYWdlZGVu b2lzZQogdmVyc2lvbj0xLjQuMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYXJjaHM9Ing4Nl82 NCoiCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJpc3BjIHB5dGhvbjMiCgpG cm9tIGM0ZjVjNWRmNzgwOWNiNDQ3NDU5ZTk4ZDM1Y2E0YWFjZjEzOTU1YWMgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IE1vbiwg MyBBcHIgMjAyMyAyMzozMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg2LzExNV0gc2hvdGN1 dDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUgYi9zcmNwa2dzL3Nob3RjdXQvdGVt cGxhdGUKaW5kZXggN2QyYWY3YjA0NzBiNS4uYzQxNmM5MDZmZjczNCAxMDA2NDQKLS0tIGEvc3Jj cGtncy9zaG90Y3V0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2hvdGN1dC90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Nob3RjdXQnCiBwa2duYW1lPXNob3Rj dXQKIHZlcnNpb249MjMuMDUuMTQKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURTSE9UQ1VUX1ZFUlNJT049JHt2ZXJzaW9ufSIKIGhv c3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDYtdG9vbHMtZGV2ZWwiCgpGcm9tIDAwY2I1YTg4 Y2Q4NmNlZDc0YTFiZmQ1YWUwNzc1MDEyODgzYjA0ZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMyBBcHIgMjAyMyAy MzozMzozMCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg3LzExNV0gc2hpYm9rZW4yOiByZXZidW1w IGZvciBxdDUtNS4xNS44CgotLS0KIHNyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGli LW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggfCAxICsKIHNyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRl ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCiAyIGZpbGVzIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3Br Z3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnkt YnlwYXNzLnBhdGNoIGIvc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGlu ZXJ5LWJ5cGFzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAw Li5lZmNmMzI0OWJkODg1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9zaGlib2tlbjIvcGF0 Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApAQCAtMCwwICsxIEBACisuLi8u Li9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRj aApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hpYm9r ZW4yL3RlbXBsYXRlIGIvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUKaW5kZXggMDg0ZWNjM2Jh MWUxYy4uMmEyMTk5ODk5N2ViMSAxMDA2NDQKLS0tIGEvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdzaGlib2tlbjInCiBwa2duYW1lPXNoaWJva2VuMgogdmVyc2lvbj01 LjE1LjcKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIF9wa2duYW1lPSJweXNpZGUtc2V0dXAtb3Bl bnNvdXJjZS1zcmMtJHt2ZXJzaW9ufSIKIGJ1aWxkX3dya3NyYz0ic291cmNlcy9zaGlib2tlbjIi CiBidWlsZF9zdHlsZT1jbWFrZQoKRnJvbSBiYmQ4Yzg4MDdiN2RmYjg5NmVkZjIxZjNmN2ZkZGI1 NDc0MjExMmZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBNb24sIDMgQXByIDIwMjMgMjM6MzM6NTMgLTA0MDAKU3ViamVjdDog W1BBVENIIDA4OC8xMTVdIHB5dGhvbjMtcHlzaWRlMjogdXBkYXRlIHRvIDUuMTUuOAoKLS0tCiAu Li4vcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaCAgICAgIHwgMTUgKysr KysrKysrKysrKysrCiBzcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZSAgICAgICAgICAg ICAgICAgIHwgIDkgKysrKystLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyks IDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9weXRob24zLXB5c2lk ZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaAoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBh c3MucGF0Y2ggYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNo aW5lcnktYnlwYXNzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MDAuLjY0YzQyOTU4NDc3NmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3B5dGhvbjMtcHlz aWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCkBAIC0wLDAgKzEs MTUgQEAKK1VzaW5nIHRoaXMgcHJldmVudHMgYW4gZXJyb3IgYXJvdW5kIGxpbmUgMjIwIGJlbG93 IGl0LgorIkF0dHJpYnV0ZUVycm9yOiBtb2R1bGUgJ2ltcG9ydGxpYicgaGFzIG5vIGF0dHJpYnV0 ZSAnbWFjaGluZXJ5JyIKK1RoZSBvbGQgYmFja3VwIGxvZ2ljIGlzIGluIHBsYWNlIGFuZCBjb21w aWxlcyB3aXRob3V0IGlzc3Vlcy4KKy0tLSBhL3NvdXJjZXMvc2hpYm9rZW4yL2xpYnNoaWJva2Vu L2VtYmVkL3NpZ25hdHVyZV9ib290c3RyYXAucHkJMjAyMy0wNC0wMiAyMzowOTozNC42ODg5MTI0 MDIgLTA0MDAKKysrKyBiL3NvdXJjZXMvc2hpYm9rZW4yL2xpYnNoaWJva2VuL2VtYmVkL3NpZ25h dHVyZV9ib290c3RyYXAucHkJMjAyMy0wNC0wMiAyMzoxMDowMy4zOTU1Mjk1ODIgLTA0MDAKK0BA IC0xNzAsOSArMTcwLDYgQEAKKworICAgICAjICd6aXBzdHJpbmdfc2VxdWVuY2UnIGNvbWVzIGZy b20gc2lnbmF0dXJlLmNwcAorICAgICB6aXBieXRlcyA9IGJhc2U2NC5iNjRkZWNvZGUoJycuam9p bih6aXBzdHJpbmdfc2VxdWVuY2UpKQorLSAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzBdID49IDM6 CistICAgICAgICB2emlwID0gemlwZmlsZS5aaXBGaWxlKGlvLkJ5dGVzSU8oemlwYnl0ZXMpKQor LSAgICAgICAgcmV0dXJuIHN5cy5tZXRhX3BhdGgsIEVtYmVkZGFibGVaaXBJbXBvcnRlcih2emlw KQorCisgICAgICMgT2xkIHZlcnNpb24gZm9yIFB5dGhvbiAyLjcsIG9ubHkuCisgICAgIGltcG9y dCBvcwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUgYi9zcmNw a2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQppbmRleCA1MGU2ZmYyNjBkM2I1Li5iNTBlNjJi ZDIxNWQ0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQpAQCAtMSwxMSArMSwxMiBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAncHl0aG9uMy1weXNpZGUyJwogcGtnbmFtZT1weXRob24zLXB5c2lk ZTIKLXZlcnNpb249NS4xNS41Ci1yZXZpc2lvbj0yCit2ZXJzaW9uPTUuMTUuOAorcmV2aXNpb249 MQogX3BrZ25hbWU9InB5c2lkZS1zZXR1cC1vcGVuc291cmNlLXNyYy0ke3ZlcnNpb259IgogYnVp bGRfd3Jrc3JjPSJzb3VyY2VzL3B5c2lkZTIiCiBidWlsZF9zdHlsZT1jbWFrZQotY29uZmlndXJl X2FyZ3M9Ii1EUFlUSE9OX0VYRUNVVEFCTEU9L3Vzci9iaW4vcHl0aG9uIgorY29uZmlndXJlX2Fy Z3M9Ii1EUFlUSE9OX0VYRUNVVEFCTEU9L3Vzci9iaW4vcHl0aG9uIC1EQ01BS0VfQlVJTERfVFlQ RT1Ob25lCisgLURCVUlMRF9URVNUUz1PRkYiCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHB5dGhv bjMgc2hpYm9rZW4yIgogbWFrZWRlcGVuZHM9InB5dGhvbjMtZGV2ZWwgbGlic2hpYm9rZW4yLWRl dmVsIHF0NS1kZXZlbAogIHF0NS1tdWx0aW1lZGlhLWRldmVsIHF0NS10b29scy1kZXZlbCBxdDUt cGx1Z2luLW15c3FsIHF0NS1wbHVnaW4tb2RiYwpAQCAtMjMsNyArMjQsNyBAQCBtYWludGFpbmVy PSJ5b3BpdG8gPHBpZXJyZS5ib3VyZ2luQGZyZWUuZnI+IgogbGljZW5zZT0iTEdQTC0zLjAtb3It bGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93aWtpLnF0LmlvL1F0X2Zvcl9QeXRob24iCiBkaXN0 ZmlsZXM9Imh0dHBzOi8vZG93bmxvYWQucXQuaW8vb2ZmaWNpYWxfcmVsZWFzZXMvUXRGb3JQeXRo b24vcHlzaWRlMi9QeVNpZGUyLSR7dmVyc2lvbn0tc3JjLyR7X3BrZ25hbWV9LnRhci54eiIKLWNo ZWNrc3VtPTM5MjBhNGZiMzUzMzAwMjYwYzliYzQ2ZmY3MGYxZmI5NzVjNWU3ZWZhMjJlOWQ1MTIy MjU4ODkyOGNlMTliMzMKK2NoZWNrc3VtPTIzNDM2MzAyYzhkZWI1YjRjYmM3NjliMjA1ZDA5NjA0 ZTM4YmE4M2I0MDcwOGVmY2NiN2JkOGM5YWY2ZjZiNWQKIAogYnVpbGRfb3B0aW9ucz0id2ViZW5n aW5lIgogZGVzY19vcHRpb25fd2ViZW5naW5lPSJCdWlsZCBRdDUgV2ViRW5naW5lIGJpbmRpbmdz IgoKRnJvbSA5YjFkZGY4NzQ4NjRjZDQ5MDBkYWM3MWQyNDFmMDg2MDA3ODdiNjc1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBU dWUsIDQgQXByIDIwMjMgMTE6MTQ6MzUgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4OS8xMTVdIGtv bnF1ZXJvcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2tvbnF1ZXJvci90 ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZSBiL3NyY3Br Z3Mva29ucXVlcm9yL3RlbXBsYXRlCmluZGV4IGQ4ZDBlNzNhNzhhYjIuLmM1YmRiYTYwMWQzYzMg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva29u cXVlcm9yL3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdr b25xdWVyb3InCiBwa2duYW1lPWtvbnF1ZXJvcgogdmVyc2lvbj0yMy4wNC4wCi1yZXZpc2lvbj0x CityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EREVTS1RP UFRPSlNPTl9FWEVDVVRBQkxFPS91c3IvYmluL2Rlc2t0b3B0b2pzb24iCiBob3N0bWFrZWRlcGVu ZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMgcHl0aG9uMyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2Ug a2RvY3Rvb2xzCi1rY29yZWFkZG9ucyBrY29uZmlnIGdldHRleHQiCisga2NvcmVhZGRvbnMga2Nv bmZpZyBnZXR0ZXh0IgogbWFrZWRlcGVuZHM9InF0NS1kZXZlbCBxdDUtd2ViZW5naW5lLWRldmVs IHF0NS1kZWNsYXJhdGl2ZS1kZXZlbAogIHF0NS13ZWJjaGFubmVsLWRldmVsIHF0NS1sb2NhdGlv bi1kZXZlbCBrY211dGlscy1kZXZlbCBrZGVsaWJzNHN1cHBvcnQtZGV2ZWwKICBrYXJjaGl2ZS1k ZXZlbCBraHRtbC1kZXZlbCBrZGVzdS1kZXZlbCBrYWN0aXZpdGllczUtZGV2ZWwiCgpGcm9tIGFm YTE4MTk3NTJhYjdkYmI3YjY1YmE3ZjExYWY1MWUwMmY4ZTY1MjUgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIg MjAyMyAxMToxNDo1OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDkwLzExNV0gcXQ1LXNwZWVjaDog cmV2YnVtcCBmb3IgcXQ1LTUuMTUuOAoKLS0tCiBzcmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS1zcGVl Y2gvdGVtcGxhdGUKaW5kZXggM2VjZDEwZDUwNjUwYy4uMmQ3ZDRkNGQyNDUzNSAxMDA2NDQKLS0t IGEvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1LXNwZWVjaC90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NS1zcGVlY2gn CiBwa2duYW1lPXF0NS1zcGVlY2gKIHZlcnNpb249NS4xNS43Ci1yZXZpc2lvbj0yCityZXZpc2lv bj0zCiBfY29tbWl0PWQzMmY0YTQ3OWQzOGExMWY1NDc1OTgwMDRiOTc1ZjQzNTY0MjRhMTYKIGJ1 aWxkX3N0eWxlPXFtYWtlCiBjb25maWd1cmVfYXJncz0iLS0gLWZsaXRlIC1mbGl0ZS1hbHNhIC1z cGVlY2hkIgoKRnJvbSA2ZGI1NTNhY2NkZjI5MTRlNmRhZDc2YTlkNDJiM2RhNWYzZTkwNzA3IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBUdWUsIDQgQXByIDIwMjMgMTg6Mzg6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5MS8x MTVdIHF0NS1zdHlsZXBsdWdpbnM6IHJldmJ1bXAgZm9yIHF0NS01LjE1LjgKCi0tLQogc3JjcGtn cy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtc3R5bGVw bHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlCmluZGV4 IDk2ZWQ5N2QxMmNkMjQuLjMwZDkzNjYwYTJhNGUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXN0 eWxlcGx1Z2lucy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUtc3R5bGVwbHVnaW5z JwogcGtnbmFtZT1xdDUtc3R5bGVwbHVnaW5zCiB2ZXJzaW9uPTUuMC4wCi1yZXZpc2lvbj0yMAor cmV2aXNpb249MjEKIF9naXRyZXY9MzM1ZGJlY2UxMDNlMmNiZjZjN2NmODE5YWI2NjcyYzI5NTZi MTdiMwogYnVpbGRfc3R5bGU9cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUt aG9zdC10b29scyBxdDUtcW1ha2UiCgpGcm9tIGU3NzJmY2QxNWFiZjE5M2ZjZDVmYTI1ZDMwNDg4 NjA3YTFkYzU1OTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNyBNYXkgMjAyMyAyMDoxNDoxNCAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDkyLzExNV0gbWx0NzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNw a2dzL2dzdC1saWJhdi90ZW1wbGF0ZSB8IDIgKy0KIHNyY3BrZ3MvbWx0Ny90ZW1wbGF0ZSAgICAg IHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1s aWJhdi90ZW1wbGF0ZQppbmRleCAwNGMzOWJmZjE0ODk2Li44YzcyZmMzZTk3ZWVlIDEwMDY0NAot LS0gYS9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1saWJhdi90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1saWJhdicK IHBrZ25hbWU9Z3N0LWxpYmF2CiB2ZXJzaW9uPTEuMjIuMgotcmV2aXNpb249MgorcmV2aXNpb249 MQogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyB5YXNtIgog bWFrZWRlcGVuZHM9Im9yYy1kZXZlbCBnc3QtcGx1Z2lucy1iYXNlMS1kZXZlbCBmZm1wZWctZGV2 ZWwiCmRpZmYgLS1naXQgYS9zcmNwa2dzL21sdDcvdGVtcGxhdGUgYi9zcmNwa2dzL21sdDcvdGVt cGxhdGUKaW5kZXggZGYzZTJjNTU5YWQ2Yy4uNzc1NzlmYmY2YjYzNCAxMDA2NDQKLS0tIGEvc3Jj cGtncy9tbHQ3L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWx0Ny90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21sdDcnCiBwa2duYW1lPW1sdDcKIHZlcnNpb249 Ny4xNC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmln dXJlX2FyZ3M9Ii1EU1dJR19QWVRIT049T04iCiBob3N0bWFrZWRlcGVuZHM9ImRveHlnZW4gcGtn LWNvbmZpZyBsYWRzcGEtc2RrIHN3aWcgcHl0aG9uMyB3aGljaAoKRnJvbSBjYTE1NTk0NjliN2I1 ZjQ3MTI1NzQ4MmEwZDhlMGFhOWMzZGQ4YTI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDcgTWF5IDIwMjMgMjA6MTU6 MDMgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5My8xMTVdIHF0Ni13ZWJlbmdpbmU6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlIHwgMSAr CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0 Ni13ZWJlbmdpbmUvdGVtcGxhdGUgYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdGVtcGxhdGUKaW5k ZXggMjJmYTJkMmI5YjYxOS4uOGMwYjJiY2M5MmMxMyAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDYt d2ViZW5naW5lL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZQpA QCAtMTQ1LDYgKzE0NSw3IEBAIHByZV9pbnN0YWxsKCkgewogfQogCiBwb3N0X2luc3RhbGwoKSB7 CisJdmxpY2Vuc2UgTElDRU5TRVMvQlNELTMtQ2xhdXNlLnR4dAogCWxvY2FsIF9maWxlCiAJZmlu ZCAiJHtERVNURElSfSIvdXNyL2xpYi9xdDYvZXhhbXBsZXMgXAogCQktcGF0aCAnKi9saWIvcXQ2 LyoqL2xpYi9xdDYvKicgLXR5cGUgZiB8CgpGcm9tIGNjZGM3YjdkMjZlYTRlNTA0NTI3NjYyYmJl NzA3MDllYTlhY2QyMjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMjEgTWF5IDIwMjMgMTI6NDQ6MTEgLTA0MDAKU3Vi amVjdDogW1BBVENIIDA5NC8xMTVdIGVsZWN0cm9uMjQ6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVj dHJvbjI0L3RlbXBsYXRlIGIvc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlCmluZGV4IDQzMWJh NmIwZjgzMDEuLmU2NzUyNWIzMThkMzMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24yNC90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdlbGVjdHJvbjI0JwogcGtnbmFtZT1lbGVjdHJvbjI0CiB2 ZXJzaW9uPTI0LjMuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogX25vZGV2ZXI9MTguMTQuMAog X2Nocm9taXVtdmVyPTExMi4wLjU2MTUuMTY1CiBhcmNocz0ieDg2XzY0KiBhYXJjaDY0KiIKCkZy b20gYTAxYzhkZTZmYTA3OTY2YTBhYTE1NGVhMzMyMWEwZWEyYzczNzI4ZSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU2F0LCAz IEp1biAyMDIzIDA4OjIwOjIyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTUvMTE1XSBndGs0OiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3RrNC90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZQppbmRleCBi NDBkNTFkNDMyNTM3Li5kNmNhNjY5OGZhODA4IDEwMDY0NAotLS0gYS9zcmNwa2dzL2d0azQvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9ndGs0L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnZ3RrNCcKIHBrZ25hbWU9Z3RrNAogdmVyc2lvbj00LjEwLjQKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9oZWxwZXI9ImdpciIK IGNvbmZpZ3VyZV9hcmdzPSItRG1hbi1wYWdlcz10cnVlIC1EZ3RrX2RvYz10cnVlIC1EYnVpbGQt dGVzdHM9ZmFsc2UKCkZyb20gNDZmOTZjMGYzMzkxMWU3YzE5NmEwODI3YWVjNTY2MjRkMTQwZDAz NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogU3VuLCA0IEp1biAyMDIzIDExOjI1OjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw OTYvMTE1XSBlbGVjdHJvbjE5OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv ZWxlY3Ryb24xOS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0 ZSBiL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZQppbmRleCAzMDkzMjQ4NTg4NDM4Li4xZjZi N2ZiMTM3NjliIDEwMDY0NAotLS0gYS9zcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9lbGVjdHJvbjE5L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnZWxlY3Ryb24xOScKIHBrZ25hbWU9ZWxlY3Ryb24xOQogdmVyc2lvbj0xOS4wLjgK LXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIF9ub2RldmVyPTE2LjE0LjIKIF9jaHJvbWl1bXZlcj0x MDIuMC41MDA1LjEyNQogYXJjaHM9Ing4Nl82NCogYWFyY2g2NCogcHBjNjRsZSoiCgpGcm9tIDZl MzY2NjBhZjk4NGM5NTk3MTRhMTlmNGE2MzU3MWU1YTg4ZDNjOWUgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNCBKdW4g MjAyMyAxMToyODoyNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk3LzExNV0gc2lyaWw6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9zaXJpbC90ZW1wbGF0ZSB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUgYi9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlCmluZGV4IDg0 MzMyZjc5ZDA2MGQuLjYyNzUwZGQyNDc1NDggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc2lyaWwvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9zaXJpbC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3NpcmlsJwogcGtnbmFtZT1zaXJpbAogdmVyc2lvbj0wLjkuMTIKLXJl dmlzaW9uPTEwCityZXZpc2lvbj0xMQogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIGludGx0b29sIGF1dG9jb25mIGF1dG9tYWtlIGdldHRleHQt ZGV2ZWwiCiBtYWtlZGVwZW5kcz0iZmZ0dy1kZXZlbCBsaWJjb25maWctZGV2ZWwgbGlib3BlbmN2 LWRldmVsIGxpYmZmbXMyLWRldmVsCgpGcm9tIDM4Y2ExZmQ1NGRmNGYxNGZhZGY4Y2IxOTdiMzA4 MDI0MTUyOTgxN2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFNhdCwgMTAgSnVuIDIwMjMgMDA6NTc6MDkgLTA0MDAKU3ViamVj dDogW1BBVENIIDA5OC8xMTVdIHF0Ni1tdWx0aW1lZGlhOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlIGIvc3JjcGtncy9xdDYtbXVsdGltZWRpYS90ZW1wbGF0 ZQppbmRleCAyY2Y5OTdiMjI3YTQ1Li5jYTM5NTM0YWZiN2YzIDEwMDY0NAotLS0gYS9zcmNwa2dz L3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDYtbXVsdGltZWRp YScKIHBrZ25hbWU9cXQ2LW11bHRpbWVkaWEKIHZlcnNpb249Ni41LjIKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURRVF9GRUFUVVJF X2dzdHJlYW1lcj1PTiIKIGhvc3RtYWtlZGVwZW5kcz0icGVybCBxdDYtZGVjbGFyYXRpdmUtaG9z dC10b29scyBwa2ctY29uZmlnIHF0Ni1zaGFkZXJ0b29scyIKCkZyb20gZGI0MDVkOTZmNDJhMmNl ZmJhNDNiODQ5NGNiMTlmY2FkZmFlZGM1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogVGh1LCAyMiBKdW4gMjAyMyAxMDoyNTow MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk5LzExNV0ga2RlbmxpdmU6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAKCi0tLQogc3JjcGtncy9rZGVubGl2ZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3Mva2RlbmxpdmUvdGVtcGxhdGUgYi9zcmNwa2dzL2tkZW5saXZlL3RlbXBsYXRlCmluZGV4IDg5 YzBkY2ZiODU3N2YuLjc1NDk1YjNhMzU4NjkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva2RlbmxpdmUv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9rZGVubGl2ZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2tkZW5saXZlJwogcGtnbmFtZT1rZGVubGl2ZQogdmVyc2lv bj0yMy4wNC4yCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogaG9z dG1ha2VkZXBlbmRzPSIKICBleHRyYS1jbWFrZS1tb2R1bGVzIGtjb25maWcga2NvcmVhZGRvbnMg a2RvY3Rvb2xzIHBrZy1jb25maWcgcHl0aG9uMwoKRnJvbSBiMGNhNWVkNzUyYmM0M2YzZTM0M2Zl ZWNmNTZlYTVjZTRkOTY3NzcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgSnVsIDIwMjMgMDk6MTg6MjMgLTA0MDAK U3ViamVjdDogW1BBVENIIDEwMC8xMTVdIGdtaWM6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoK LS0tCiBzcmNwa2dzL2dtaWMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dtaWMvdGVtcGxh dGUgYi9zcmNwa2dzL2dtaWMvdGVtcGxhdGUKaW5kZXggMGJiNDAzNGQ1Y2M4Ni4uODA4OTUzZTli NTQzYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9nbWljL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ21p Yy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dtaWMnCiBw a2duYW1lPWdtaWMKIHZlcnNpb249My4xLjYKLXJldmlzaW9uPTQKK3JldmlzaW9uPTUKIF96YXJ0 X2hhc2g9MzRlYmY2Y2NlMGJhZmI5OGFiZTU3Y2VjODNjNGEwMmNkMWFiZWNhMAogY3JlYXRlX3dy a3NyYz15ZXMKIGJ1aWxkX3dya3NyYz0ic3JjIgoKRnJvbSBmMjU2ZjE3MTQ3MTk3YTRmMDc1MjE2 ZWEyMzQ4OWRjZGI4OGU3ZmMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgSnVsIDIwMjMgMDk6Mjk6NTIgLTA0MDAK U3ViamVjdDogW1BBVENIIDEwMS8xMTVdIHN5bmZpZ3N0dWRpbzogcmV2YnVtcCBmb3Igc3luZmln IG1sdDcKCi0tLQogc3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3N5bmZpZ3N0dWRpby90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRl CmluZGV4IGFmMWM1YTI5NmVmMGYuLjA5ZTQ0MmRhOWE2ODAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv c3luZmlnc3R1ZGlvL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRl CkBAIC0yLDcgKzIsNyBAQAogIyBTaG91bGQgYmUga2VwdCBpbiBzeW5jIHdpdGggJ3N5bmZpZycg YW5kICdFVEwnCiBwa2duYW1lPXN5bmZpZ3N0dWRpbwogdmVyc2lvbj0xLjQuNAotcmV2aXNpb249 MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9 Ii0tZGlzYWJsZS11cGRhdGUtbWltZWRiIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGlu dGx0b29sIGdldHRleHQgc3luZmlnIgoKRnJvbSAxMDNlNzE0NjllZmZhMjdkNzczNTRmNWU3Mzdj ZDQzYTA0ZjYzYjRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgSnVsIDIwMjMgMTE6MTc6MzcgLTA0MDAKU3ViamVj dDogW1BBVENIIDEwMi8xMTVdIERFTEVURTogaW50ZWxfcGFja2FnZXMKCi0tLQogY29tbW9uL3No bGlicyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyY3BrZ3MvaW50 ZWwtZ21tbGliL3RlbXBsYXRlICAgICAgICAgICAgICAgICB8ICAgNiArLQogLi4ubW1vbi1FbmFi bGUtTU1DLWluLWZyZWUta2VybmVsLWJ1aWxkLnBhdGNoIHwgMTI1ICsrKysrKysrKysrKysrKysr Kwogc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUgICAgICAgICAgIHwgICA2ICst CiBzcmNwa2dzL2ludGVsLW1lZGlhLXNkay9wYXRjaGVzL211c2wucGF0Y2ggICAgfCAgMTQgKysK IHNyY3BrZ3MvaW50ZWwtbWVkaWEtc2RrL3RlbXBsYXRlICAgICAgICAgICAgICB8ICAzNyArKysr KysKIHNyY3BrZ3MvaW50ZWwtbWVkaWEtc2RrL3VwZGF0ZSAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmNwa2dzL29uZXZwbC1kZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1LWRldmVsICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Y3BrZ3Mvb25ldnBsLWludGVsLWdwdS90ZW1wbGF0ZSAgICAgICAgICAgICB8ICAyNyArKysrCiBz cmNwa2dzL29uZXZwbC90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgfCAgMzQgKysrKysK IDExIGZpbGVzIGNoYW5nZWQsIDI0OCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3BhdGNoZXMvMDAwMS1N ZWRpYS1Db21tb24tRW5hYmxlLU1NQy1pbi1mcmVlLWtlcm5lbC1idWlsZC5wYXRjaAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaW50ZWwtbWVkaWEtc2RrL3BhdGNoZXMvbXVzbC5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaW50ZWwtbWVkaWEtc2RrL3RlbXBsYXRlCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdXBkYXRlCiBjcmVhdGUgbW9k ZSAxMjAwMDAgc3JjcGtncy9vbmV2cGwtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dz L29uZXZwbC1pbnRlbC1ncHUtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL29uZXZw bC1pbnRlbC1ncHUvdGVtcGxhdGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL29uZXZwbC90 ZW1wbGF0ZQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4 IDJjM2Q5OWY3NTk1YzEuLmI5ZmE0YjIyYjdjZDggMTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMK KysrIGIvY29tbW9uL3NobGlicwpAQCAtNDI4MSw2ICs0MjgxLDggQEAgbGliZ3NvYXBzc2wrKy0y LjguMTI0LnNvIGdzb2FwLTIuOC4xMjRfMQogbGlianhsLnNvLjAuOCBsaWJqeGwtMC44LjJfMQog bGlianhsX2RlYy5zby4wLjggbGlianhsLTAuOC4yXzEKIGxpYmp4bF90aHJlYWRzLnNvLjAuOCBs aWJqeGwtMC44LjJfMQorbGlibWZ4LnNvLjEgbGlibWZ4LTIyLjYuNF8xCitsaWJ2cGwuc28uMiBv bmV2cGwtMjAyMy4xLjJfMQogbGlidGV4dC1lbmdpbmUtMC4xLnNvLjAgdGV4dC1lbmdpbmUtMC4x LjFfMQogbGlidm1hZi5zby4xIHZtYWYtMi4zLjFfMQogbGlibGMzLnNvLjEgbGlibGMzLTEuMC4z XzEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW50ZWwtZ21tbGliL3RlbXBsYXRlIGIvc3JjcGtncy9p bnRlbC1nbW1saWIvdGVtcGxhdGUKaW5kZXggMDRlNDA3YjFkZTRkMy4uMjYwNTIyNjE1MmU1ZCAx MDA2NDQKLS0tIGEvc3JjcGtncy9pbnRlbC1nbW1saWIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9p bnRlbC1nbW1saWIvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdpbnRlbC1nbW1saWInCiBwa2duYW1lPWludGVsLWdtbWxpYgotdmVyc2lvbj0yMi4yLjAKK3Zl cnNpb249MjIuMy4zCiByZXZpc2lvbj0xCiBhcmNocz0iaTY4NiogeDg2XzY0KiIKIGJ1aWxkX3N0 eWxlPWNtYWtlCkBAIC0xNCwxMSArMTQsMTEgQEAgYnVpbGRfc3R5bGU9Y21ha2UKICMgY29tcGls ZXJzIGZsYWcgaW4gdXNlLgogY29uZmlndXJlX2FyZ3M9Ii1Xbm8tZGV2Igogc2hvcnRfZGVzYz0i SW50ZWwgR3JhcGhpY3MgTWVtb3J5IE1hbmFnZW1lbnQgTGlicmFyeSIKLW1haW50YWluZXI9Ik9y cGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCittYWludGFpbmVyPSJTdGVmYW5vIFJhZ25p IDxzdDNyNGdAcHJvdG9ubWFpbC5jb20+IgogbGljZW5zZT0iTUlUIgogaG9tZXBhZ2U9Imh0dHBz Oi8vZ2l0aHViLmNvbS9pbnRlbC9nbW1saWIiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNv bS9pbnRlbC9nbW1saWIvYXJjaGl2ZS9pbnRlbC1nbW1saWItJHt2ZXJzaW9ufS50YXIuZ3oiCi1j aGVja3N1bT0wYjIyNTM4OTRjNmZjODQ1NWI2ZDdjNWU4N2U2NTA0YTc2ZDZmNjBlYTE5MmUxNDQ1 YzJmOTMxNjRiZjUyOWMwCitjaGVja3N1bT04NjY1MWJkMjgwM2M5ZjBhZmQ4MjQ3MWJlYzc4NGU2 NWQyYjQxOGRlZTMxNWEwNTNkMjIyMTVlYjJhNjc5YmU3CiAKIGxpYjMyZGlzYWJsZWQ9eWVzCiAK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3BhdGNoZXMvMDAwMS1NZWRp YS1Db21tb24tRW5hYmxlLU1NQy1pbi1mcmVlLWtlcm5lbC1idWlsZC5wYXRjaCBiL3NyY3BrZ3Mv aW50ZWwtbWVkaWEtZHJpdmVyL3BhdGNoZXMvMDAwMS1NZWRpYS1Db21tb24tRW5hYmxlLU1NQy1p bi1mcmVlLWtlcm5lbC1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAwLi41MjVmYjY4ODcyMmM4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9pbnRl bC1tZWRpYS1kcml2ZXIvcGF0Y2hlcy8wMDAxLU1lZGlhLUNvbW1vbi1FbmFibGUtTU1DLWluLWZy ZWUta2VybmVsLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMTI1IEBACitGcm9tIGU2OGZlYWI3ZGIw MzY4MzhkOTUyMWJhM2I5ZjAwNzE3YzM3YzAyNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBKYXlZYW5nIDxqYXkueWFuZ0BpbnRlbC5jb20+CitEYXRlOiBUdWUsIDIxIE1hciAyMDIz IDE3OjE3OjU1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIFtNZWRpYSBDb21tb25dIEVuYWJsZSBN TUMgaW4gZnJlZSBrZXJuZWwgYnVpbGQKKworQWRkIG1tYyBidWlsZCBkZWZpbml0aW9uIGluIGZy ZWUga2VybmVsIGJ1aWxkCistLS0KKyBtZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9jb2RlYy9o YWwvbWVkaWFfc3Jjcy5jbWFrZSAgICAgICAgICB8IDIgKy0KKyBtZWRpYV9kcml2ZXIvY21ha2Uv bGludXgvbWVkaWFfZmVhdHVyZV9mbGFnc19saW51eC5jbWFrZSAgICAgICB8IDMgKy0tCisgLi4u L21lZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNwcCAgICAg ICAgfCAyICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfY2ZsL21lZGlhX2ludGVyZmFjZXNf ZzlfY2ZsLmNwcCAgICAgICAgfCAyICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfZ2xrL21l ZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNwcCAgICAgICAgfCAyICstCisgLi4uL21lZGlhX2ludGVy ZmFjZXNfbTlfa2JsL21lZGlhX2ludGVyZmFjZXNfZzlfa2JsLmNwcCAgICAgICAgfCAyICstCisg Li4uL21lZGlhX2ludGVyZmFjZXNfbTlfc2tsL21lZGlhX2ludGVyZmFjZXNfZzlfc2tsLmNwcCAg ICAgICAgfCAyICstCisgNyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDggZGVsZXRp b25zKC0pCisKK2RpZmYgLS1naXQgYS9tZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9jb2RlYy9o YWwvbWVkaWFfc3Jjcy5jbWFrZSBiL21lZGlhX2RyaXZlci9hZ25vc3RpYy9nZW45L2NvZGVjL2hh bC9tZWRpYV9zcmNzLmNtYWtlCitpbmRleCA4YmIzNmJhZmUuLjc4OTAyYTIyZCAxMDA2NDQKKy0t LSBhL21lZGlhX2RyaXZlci9hZ25vc3RpYy9nZW45L2NvZGVjL2hhbC9tZWRpYV9zcmNzLmNtYWtl CisrKysgYi9tZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9jb2RlYy9oYWwvbWVkaWFfc3Jjcy5j bWFrZQorQEAgLTI3LDcgKzI3LDcgQEAgc2V0KFRNUF8xX0hFQURFUlNfCisgICAgICR7Q01BS0Vf Q1VSUkVOVF9MSVNUX0RJUn0vY29kZWNoYWxfaHdfZzlfWC5oCisgKQorIAorLWlmKCR7TU1DX1N1 cHBvcnRlZH0gU1RSRVFVQUwgInllcyIpCisraWYoJHtNTUNfU3VwcG9ydGVkfSBTVFJFUVVBTCAi eWVzIiBBTkQgRU5BQkxFX05PTkZSRUVfS0VSTkVMUyBBTkQgRU5BQkxFX0tFUk5FTFMpCisgICAg IHNldChUTVBfMV9TT1VSQ0VTXworICAgICAgICAgJHtUTVBfMV9TT1VSQ0VTX30KKyAgICAgICAg ICR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vY29kZWNoYWxfbWVtZGVjb21wX2c5LmNwcAorZGlm ZiAtLWdpdCBhL21lZGlhX2RyaXZlci9jbWFrZS9saW51eC9tZWRpYV9mZWF0dXJlX2ZsYWdzX2xp bnV4LmNtYWtlIGIvbWVkaWFfZHJpdmVyL2NtYWtlL2xpbnV4L21lZGlhX2ZlYXR1cmVfZmxhZ3Nf bGludXguY21ha2UKK2luZGV4IGRlMGNhODUzZi4uODEyMWVhNjBjIDEwMDY0NAorLS0tIGEvbWVk aWFfZHJpdmVyL2NtYWtlL2xpbnV4L21lZGlhX2ZlYXR1cmVfZmxhZ3NfbGludXguY21ha2UKKysr KyBiL21lZGlhX2RyaXZlci9jbWFrZS9saW51eC9tZWRpYV9mZWF0dXJlX2ZsYWdzX2xpbnV4LmNt YWtlCitAQCAtMzUsNyArMzUsNiBAQCBpZihOT1QgRU5BQkxFX0tFUk5FTFMgT1IgTk9UIEVOQUJM RV9OT05GUkVFX0tFUk5FTFMpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoSEVWQ19FbmNvZGVf Vk1FX1N1cHBvcnRlZCAibm8iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKE1QRUcyX0VuY29k ZV9WTUVfU3VwcG9ydGVkICJubyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoQ01SVF9IRVZD X0VOQ19GRUlfU3VwcG9ydGVkICJubyIpCistICAgIGJzX3NldF9pZl91bmRlZmluZWQoTU1DX1N1 cHBvcnRlZCAibm8iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKFZDMV9EZWNvZGVfU3VwcG9y dGVkICJubyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoRGVjb2RlX1Byb2Nlc3NpbmdfU3Vw cG9ydGVkICJubyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoS2VybmVsX0F1dG9fRGVub2lz ZV9TdXBwb3J0ZWQgIm5vIikKK0BAIC00Niw3ICs0NSw2IEBAIGVsc2UoKQorICAgICBic19zZXRf aWZfdW5kZWZpbmVkKEhFVkNfRW5jb2RlX1ZNRV9TdXBwb3J0ZWQgIiR7RW5jb2RlX1ZNRV9TdXBw b3J0ZWR9IikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChNUEVHMl9FbmNvZGVfVk1FX1N1cHBv cnRlZCAiJHtFbmNvZGVfVk1FX1N1cHBvcnRlZH0iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVk KENNUlRfSEVWQ19FTkNfRkVJX1N1cHBvcnRlZCAieWVzIikKKy0gICAgYnNfc2V0X2lmX3VuZGVm aW5lZChNTUNfU3VwcG9ydGVkICJ5ZXMiKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKFZDMV9E ZWNvZGVfU3VwcG9ydGVkICJ5ZXMiKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKERlY29kZV9Q cm9jZXNzaW5nX1N1cHBvcnRlZCAieWVzIikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChLZXJu ZWxfQXV0b19EZW5vaXNlX1N1cHBvcnRlZCAieWVzIikKK0BAIC02NCw2ICs2Miw3IEBAIGJzX3Nl dF9pZl91bmRlZmluZWQoVlA5X0RlY29kZV9TdXBwb3J0ZWQgInllcyIpCisgYnNfc2V0X2lmX3Vu ZGVmaW5lZChWUF9TRkNfU3VwcG9ydGVkICJ5ZXMiKQorIGJzX3NldF9pZl91bmRlZmluZWQoQ29t bW9uX0VuY29kZV9TdXBwb3J0ZWQgInllcyIpCisgYnNfc2V0X2lmX3VuZGVmaW5lZChNZWRpYV9T Y2FsYWJpbGl0eV9TdXBwb3J0ZWQgInllcyIpCisrYnNfc2V0X2lmX3VuZGVmaW5lZChNTUNfU3Vw cG9ydGVkICJ5ZXMiKQorIAorICMgZmVhdHVyZXMgY29udHJvbGxlZCBieSBnbG9iYWwgZmxhZyBF bmNvZGVfVkRFbmNfU3VwcG9ydGVkCisgYnNfc2V0X2lmX3VuZGVmaW5lZChBVkNfRW5jb2RlX1ZE RW5jX1N1cHBvcnRlZCAiJHtFbmNvZGVfVkRFbmNfU3VwcG9ydGVkfSIpCitkaWZmIC0tZ2l0IGEv bWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2J4dC9tZWRp YV9pbnRlcmZhY2VzX2c5X2J4dC5jcHAgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21l ZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNwcAoraW5kZXgg M2YzMDZlZTJhLi44ZTRjMGY1MzIgMTAwNjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50 ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNw cAorKysrIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205 X2J4dC9tZWRpYV9pbnRlcmZhY2VzX2c5X2J4dC5jcHAKK0BAIC0xMzUsNyArMTM1LDcgQEAgTU9T X1NUQVRVUyBNaHdJbnRlcmZhY2VzRzlCeHQ6OkluaXRpYWxpemUoCisgCisgICAgIHJldHVybiBN T1NfU1RBVFVTX1NVQ0NFU1M7CisgfQorLSNpZmRlZiBfTU1DX1NVUFBPUlRFRAorKyNpZiBkZWZp bmVkKF9NTUNfU1VQUE9SVEVEKSAmJiBkZWZpbmVkKEVOQUJMRV9LRVJORUxTKSAmJiAhZGVmaW5l ZChfRlVMTF9PUEVOX1NPVVJDRSkKKyBzdGF0aWMgYm9vbCBieHRSZWdpc3RlcmVkTW1kID0KKyAg ICAgTWVkaWFGYWN0b3J5PHVpbnQzMl90LCBNbWREZXZpY2U+OjoKKyAgICAgUmVnaXN0ZXI8TW1k RGV2aWNlRzlCeHQ+KCh1aW50MzJfdClJR0ZYX0JST1hUT04pOworZGlmZiAtLWdpdCBhL21lZGlh X2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9jZmwvbWVkaWFfaW50 ZXJmYWNlc19nOV9jZmwuY3BwIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9p bnRlcmZhY2VzX205X2NmbC9tZWRpYV9pbnRlcmZhY2VzX2c5X2NmbC5jcHAKK2luZGV4IGI4ZmEx ZWVjMC4uODRlMGZhZDFkIDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFj ZS9tZWRpYV9pbnRlcmZhY2VzX205X2NmbC9tZWRpYV9pbnRlcmZhY2VzX2c5X2NmbC5jcHAKKysr KyBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9jZmwv bWVkaWFfaW50ZXJmYWNlc19nOV9jZmwuY3BwCitAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgYm9v bCBjZmxSZWdpc3RlcmVkTWh3ID0KKyAgICAgTWVkaWFGYWN0b3J5PHVpbnQzMl90LCBNaHdJbnRl cmZhY2VzPjo6CisgICAgIFJlZ2lzdGVyPE1od0ludGVyZmFjZXNHOUtibD4oKHVpbnQzMl90KUlH RlhfQ09GRkVFTEFLRSk7CisgCistI2lmZGVmIF9NTUNfU1VQUE9SVEVECisrI2lmIGRlZmluZWQo X01NQ19TVVBQT1JURUQpICYmIGRlZmluZWQoRU5BQkxFX0tFUk5FTFMpICYmICFkZWZpbmVkKF9G VUxMX09QRU5fU09VUkNFKQorIHN0YXRpYyBib29sIGNmbFJlZ2lzdGVyZWRNbWQgPQorICAgICBN ZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1tZERldmljZT46OgorICAgICBSZWdpc3RlcjxNbWREZXZp Y2VHOUtibD4oKHVpbnQzMl90KUlHRlhfQ09GRkVFTEFLRSk7CitkaWZmIC0tZ2l0IGEvbWVkaWFf ZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2dsay9tZWRpYV9pbnRl cmZhY2VzX2c5X2dsay5jcHAgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2lu dGVyZmFjZXNfbTlfZ2xrL21lZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNwcAoraW5kZXggZGU4MWU2 MDkxLi4yNjM4Y2IzYTYgMTAwNjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNl L21lZGlhX2ludGVyZmFjZXNfbTlfZ2xrL21lZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNwcAorKysr IGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2dsay9t ZWRpYV9pbnRlcmZhY2VzX2c5X2dsay5jcHAKK0BAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBib29s IGdsa1JlZ2lzdGVyZWRNaHcgPQorICAgICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1od0ludGVy ZmFjZXM+OjoKKyAgICAgUmVnaXN0ZXI8TWh3SW50ZXJmYWNlc0c5S2JsPigodWludDMyX3QpSUdG WF9HRU1JTklMQUtFKTsKKyAKKy0jaWZkZWYgX01NQ19TVVBQT1JURUQKKysjaWYgZGVmaW5lZChf TU1DX1NVUFBPUlRFRCkgJiYgZGVmaW5lZChFTkFCTEVfS0VSTkVMUykgJiYgIWRlZmluZWQoX0ZV TExfT1BFTl9TT1VSQ0UpCisgc3RhdGljIGJvb2wgZ2xrUmVnaXN0ZXJlZE1tZCA9CisgICAgIE1l ZGlhRmFjdG9yeTx1aW50MzJfdCwgTW1kRGV2aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1tZERldmlj ZUc5S2JsPigodWludDMyX3QpSUdGWF9HRU1JTklMQUtFKTsKK2RpZmYgLS1naXQgYS9tZWRpYV9k cml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfa2JsL21lZGlhX2ludGVy ZmFjZXNfZzlfa2JsLmNwcCBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50 ZXJmYWNlc19tOV9rYmwvbWVkaWFfaW50ZXJmYWNlc19nOV9rYmwuY3BwCitpbmRleCA5OWQ3ODYx ODUuLjRlOWM2ZTdmMSAxMDA2NDQKKy0tLSBhL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2Uv bWVkaWFfaW50ZXJmYWNlc19tOV9rYmwvbWVkaWFfaW50ZXJmYWNlc19nOV9rYmwuY3BwCisrKysg Yi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfa2JsL21l ZGlhX2ludGVyZmFjZXNfZzlfa2JsLmNwcAorQEAgLTEzMSw3ICsxMzEsNyBAQCBNT1NfU1RBVFVT IE1od0ludGVyZmFjZXNHOUtibDo6SW5pdGlhbGl6ZSgKKyAKKyAgICAgcmV0dXJuIE1PU19TVEFU VVNfU1VDQ0VTUzsKKyB9CistI2lmZGVmIF9NTUNfU1VQUE9SVEVECisrI2lmIGRlZmluZWQoX01N Q19TVVBQT1JURUQpICYmIGRlZmluZWQoRU5BQkxFX0tFUk5FTFMpICYmICFkZWZpbmVkKF9GVUxM X09QRU5fU09VUkNFKQorIHN0YXRpYyBib29sIGtibFJlZ2lzdGVyZWRNbWQgPQorICAgICBNZWRp YUZhY3Rvcnk8dWludDMyX3QsIE1tZERldmljZT46OgorICAgICBSZWdpc3RlcjxNbWREZXZpY2VH OUtibD4oKHVpbnQzMl90KUlHRlhfS0FCWUxBS0UpOworZGlmZiAtLWdpdCBhL21lZGlhX2RyaXZl ci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9za2wvbWVkaWFfaW50ZXJmYWNl c19nOV9za2wuY3BwIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZh Y2VzX205X3NrbC9tZWRpYV9pbnRlcmZhY2VzX2c5X3NrbC5jcHAKK2luZGV4IGUyNTIwZWRmNy4u NGIwMDEyYzY0IDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRp YV9pbnRlcmZhY2VzX205X3NrbC9tZWRpYV9pbnRlcmZhY2VzX2c5X3NrbC5jcHAKKysrKyBiL21l ZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9za2wvbWVkaWFf aW50ZXJmYWNlc19nOV9za2wuY3BwCitAQCAtMTM5LDcgKzEzOSw3IEBAIE1PU19TVEFUVVMgTWh3 SW50ZXJmYWNlc0c5U2tsOjpJbml0aWFsaXplKAorIAorICAgICByZXR1cm4gTU9TX1NUQVRVU19T VUNDRVNTOworIH0KKy0jaWZkZWYgX01NQ19TVVBQT1JURUQKKysjaWYgZGVmaW5lZChfTU1DX1NV UFBPUlRFRCkgJiYgZGVmaW5lZChFTkFCTEVfS0VSTkVMUykgJiYgIWRlZmluZWQoX0ZVTExfT1BF Tl9TT1VSQ0UpCisgc3RhdGljIGJvb2wgc2tsUmVnaXN0ZXJlZE1tZCA9CisgICAgIE1lZGlhRmFj dG9yeTx1aW50MzJfdCwgTW1kRGV2aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1tZERldmljZUc5U2ts PigodWludDMyX3QpSUdGWF9TS1lMQUtFKTsKKy0tIAorMi40MC4wCisKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3RlbXBsYXRlIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1k cml2ZXIvdGVtcGxhdGUKaW5kZXggYTViYWIwNmFjOTQ3Ni4uMTczNWI5MGM2NWNlNSAxMDA2NDQK LS0tIGEvc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9p bnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdpbnRlbC1tZWRpYS1kcml2ZXInCiBwa2duYW1lPWludGVsLW1lZGlhLWRyaXZlcgot dmVyc2lvbj0yMi41LjMKK3ZlcnNpb249MjIuNi40CiByZXZpc2lvbj0xCiBhcmNocz0ieDg2XzY0 KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCkBAIC04LDExICs4LDExIEBAIGNvbmZpZ3VyZV9hcmdzPSIt V25vLWRldiAtREVOQUJMRV9OT05GUkVFX0tFUk5FTFM9JCh2b3B0X2lmIG5vbmZyZWUgT04gT0ZG KSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJsaWJ2YS1kZXZl bCBsaWJYMTEtZGV2ZWwgaW50ZWwtZ21tbGliLWRldmVsIGxpYnBjaWFjY2Vzcy1kZXZlbCIKIHNo b3J0X2Rlc2M9IkludGVsIE1lZGlhIERyaXZlciBmb3IgVkFBUEkgKEJyb2Fkd2VsbCspIgotbWFp bnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKK21haW50YWluZXI9IlN0 ZWZhbm8gUmFnbmkgPHN0M3I0Z0Bwcm90b25tYWlsLmNvbT4iCiBsaWNlbnNlPSJNSVQsIEJTRC0z LUNsYXVzZSIKIGhvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVy IgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVyL2FyY2hp dmUvaW50ZWwtbWVkaWEtJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT02NTY1MmIzNjVkNDhi ZTNjOWYwYjNjNTYxNTAyOTUyYjkyZWU1ZmNjNTg3NTIwYjg4ZDBkNzUyY2YyYTZhM2I1CitjaGVj a3N1bT0wYzA0YjlkNzRiOTJkZTQxZmQ0MDliNjI5MTNjZTRhZmQ3OTkyMzZjMGI2YmMxOTgzYTQ5 Njk5MDc2NGU1ZDkwCiAKIGJ1aWxkX29wdGlvbnM9Im5vbmZyZWUiCiBkZXNjX29wdGlvbl9ub25m cmVlPSJFbmFibGUgbm9uZnJlZSBrZXJuZWxzIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1t ZWRpYS1zZGsvcGF0Y2hlcy9tdXNsLnBhdGNoIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvcGF0 Y2hlcy9tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAu LjRhZTcwOTI0Yjc0NGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ludGVsLW1lZGlhLXNk ay9wYXRjaGVzL211c2wucGF0Y2gKQEAgLTAsMCArMSwxNCBAQAorLS0tIGEvdG9vbHMvdHJhY2Vy L3RyYWNlci90cmFjZXJfbGludXguY3BwCTIwMjItMTEtMTggMDM6MDI6NTkuMDAwMDAwMDAwIC0w NTAwCisrKysgYi90b29scy90cmFjZXIvdHJhY2VyL3RyYWNlcl9saW51eC5jcHAJMjAyMi0xMi0x OCAwMTo0NDo1MS4zNDE1NDI1NzIgLTA1MDAKK0BAIC0zMiw2ICszMiwxMSBAQAorICNpbmNsdWRl IDxkbGZjbi5oPgorICNpbmNsdWRlICJ0cmFjZXIuaCIKKworKyNpZm5kZWYgUlRMRF9ERUVQQklO RAorKy8vIG11c2wgbmVpdGhlciBkZWZpbmVzIG5vciBjYW4gdXNlIFJUTERfREVFUEJJTkQKKysj ZGVmaW5lIFJUTERfREVFUEJJTkQgMAorKyNlbmRpZgorKworICNpZiBkZWZpbmVkKF9faTM4Nl9f KQorICAgICAjZGVmaW5lIExJQk1GWEhXICJsaWJtZnhodzMyLnNvLjEiCisgI2VsaWYgZGVmaW5l ZChfX3g4Nl82NF9fKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdGVtcGxh dGUgYi9zcmNwa2dzL2ludGVsLW1lZGlhLXNkay90ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAwLi43YWVhYjUxODAyZjhlCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdGVtcGxhdGUKQEAgLTAsMCArMSwzNyBAQAorIyBUZW1w bGF0ZSBmaWxlIGZvciAnaW50ZWwtbWVkaWEtc2RrJworcGtnbmFtZT1pbnRlbC1tZWRpYS1zZGsK K3ZlcnNpb249MjIuNi40CityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0eWxl PWNtYWtlCitjb25maWd1cmVfYXJncz0iLVduby1kZXYgLURCVUlMRF9TQU1QTEVTPU9GRiAtREJV SUxEX1RFU1RTPU9OIgoraG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgorbWFrZWRlcGVuZHM9 ImxpYnZhLWRldmVsIGxpYmRybS1kZXZlbCBpbnRlbC1nbW1saWItZGV2ZWwiCitzaG9ydF9kZXNj PSJJbnRlbCBNZWRpYSBTREsiCittYWludGFpbmVyPSJTdGVmYW5vIFJhZ25pIDxzdDNyNGdAcHJv dG9ubWFpbC5jb20+IgorbGljZW5zZT0iTUlULCBCU0QtMy1DbGF1c2UiCitob21lcGFnZT0iaHR0 cHM6Ly9naXRodWIuY29tL0ludGVsLU1lZGlhLVNESy9NZWRpYVNESyIKK2Rpc3RmaWxlcz0iaHR0 cHM6Ly9naXRodWIuY29tL0ludGVsLU1lZGlhLVNESy9NZWRpYVNESy9hcmNoaXZlL3JlZnMvdGFn cy9pbnRlbC1tZWRpYXNkay0ke3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPTE5N2FjZDA1NmY4 MWU5ZmYxYzI3MDY4ZDUwZThjODRjMjAxNGQ5NGM3YWMxN2NhZDY5ZDVjMmQ2MWU0NDVmZDMKKwor cG9zdF9pbnN0YWxsKCkgeworCXZsaWNlbnNlIExJQ0VOU0UKK30KKworbGlibWZ4X3BhY2thZ2Uo KSB7CisJZGVwZW5kcz0iJHttYWtlZGVwZW5kc30gJHtzb3VyY2Vwa2d9LSR7dmVyc2lvbn1fJHty ZXZpc2lvbn0iCisJc2hvcnRfZGVzYz0iSW50ZWwgTWVkaWFTREsgbWZ4IGxpYiIKKwlwa2dfaW5z dGFsbCgpIHsKKwkJdm1vdmUgdXNyL2xpYi9tZngKKwkJdm1vdmUgInVzci9saWIvbGlibWZ4Ki5z byoiCisJfQorfQorCitsaWJtZngtZGV2ZWxfcGFja2FnZSgpIHsKKwlkZXBlbmRzPSIke21ha2Vk ZXBlbmRzfSAke3NvdXJjZXBrZ30tJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNj Kz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9p bmNsdWRlCisJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCisJfQorfQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9pbnRlbC1tZWRpYS1zZGsvdXBkYXRlIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdXBk YXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjQzNGEyYmM2N2Y3 YTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ludGVsLW1lZGlhLXNkay91cGRhdGUKQEAg LTAsMCArMSBAQAorcGtnbmFtZT1pbnRlbC1tZWRpYQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbmV2 cGwtZGV2ZWwgYi9zcmNwa2dzL29uZXZwbC1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRl eCAwMDAwMDAwMDAwMDAwLi5lMjMwNjUwMGI0ODcxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9vbmV2cGwtZGV2ZWwKQEAgLTAsMCArMSBAQAorb25ldnBsClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1LWRldmVsIGIvc3Jj cGtncy9vbmV2cGwtaW50ZWwtZ3B1LWRldmVsCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAw MDAwMDAwMDAwMDAuLjQ3OTIwY2VlY2Y5MTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL29u ZXZwbC1pbnRlbC1ncHUtZGV2ZWwKQEAgLTAsMCArMSBAQAorb25ldnBsLWludGVsLWdwdQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb25ldnBsLWludGVs LWdwdS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS90ZW1wbGF0ZQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5mMTRhY2I3MjhhNTRkCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1L3RlbXBsYXRlCkBAIC0wLDAgKzEs MjcgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ29uZXZwbC1pbnRlbC1ncHUnCitwa2duYW1lPW9u ZXZwbC1pbnRlbC1ncHUKK3ZlcnNpb249MjIuNi40CityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0 KiIKK2J1aWxkX3N0eWxlPWNtYWtlCitjb25maWd1cmVfYXJncz0iLVduby1kZXYgLURDTUFLRV9C VUlMRF9UWVBFPVJlbGVhc2UiCitob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHBrZy1jb25maWciCitt YWtlZGVwZW5kcz0ibGliZHJtLWRldmVsIGxpYnZhLWRldmVsIG9uZXZwbC1kZXZlbCIKK3Nob3J0 X2Rlc2M9IlJ1bnRpbWUgaW1wbGVtZW50YXRpb24gb2Ygb25lVlBMIEFQSSBmb3IgSW50ZWwgR2Vu IEdQVXMiCittYWludGFpbmVyPSJ6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPiIKK2xpY2Vuc2U9 Ik1JVCIKK2hvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vb25lYXBpLXNyYy9vbmVWUEwtaW50 ZWwtZ3B1IgorY2hhbmdlbG9nPSJodHRwczovL2dpdGh1Yi5jb20vb25lYXBpLXNyYy9vbmVWUEwt aW50ZWwtZ3B1L2Jsb2IvbWFpbi9DSEFOR0VMT0cubWQiCitkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0 aHViLmNvbS9vbmVhcGktc3JjL29uZVZQTC1pbnRlbC1ncHUvYXJjaGl2ZS9yZWZzL3RhZ3MvaW50 ZWwtb25ldnBsLSR7dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09NzRiMDk3OWRjYjJhZjFiN2M2 OGVkYjhjYmNiMDJkNTM5ZGU1MTEwOTBiMTJmYWM1MDY1MmNiYWNkNzA3YzRlNgorCitwb3N0X2lu c3RhbGwoKSB7CisJdmxpY2Vuc2UgTElDRU5TRQorfQorCitvbmV2cGwtaW50ZWwtZ3B1LWRldmVs X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgorCXBrZ19p bnN0YWxsKCkgeworCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCX0KK30KZGlmZiAtLWdpdCBh L3NyY3BrZ3Mvb25ldnBsL3RlbXBsYXRlIGIvc3JjcGtncy9vbmV2cGwvdGVtcGxhdGUKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uODVjN2MyZGE4NWNlOQotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3Mvb25ldnBsL3RlbXBsYXRlCkBAIC0wLDAgKzEsMzQgQEAKKyMg VGVtcGxhdGUgZmlsZSBmb3IgJ29uZXZwbCcKK3BrZ25hbWU9b25ldnBsCit2ZXJzaW9uPTIwMjMu MS4yCityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0eWxlPWNtYWtlCitjb25m aWd1cmVfYXJncz0iCisJLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgLVduby1kZXYKKwktREJV SUxEX1BZVEhPTl9CSU5ESU5HOkJPT0w9J09GRicKKwktREJVSUxEX0VYQU1QTEVTOkJPT0w9J09G RicKKwktREJVSUxEX1RFU1RTOkJPT0w9J09OJworCS1ESU5TVEFMTF9FWEFNUExFX0NPREU6Qk9P TD0nT0ZGJyIKK2hvc3RtYWtlZGVwZW5kcz0iY21ha2UgbGliWDExIHB5dGhvbiB3YXlsYW5kLXBy b3RvY29scyBwa2ctY29uZmlnIgorbWFrZWRlcGVuZHM9ImxpYnZhLWRldmVsIGxpYlgxMS1kZXZl bCB3YXlsYW5kLWRldmVsIgorc2hvcnRfZGVzYz0iSW50ZWwgb25lQVBJIFZpZGVvIFByb2Nlc3Np bmcgbGlicmFyeSIKK21haW50YWluZXI9InpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+IgorbGlj ZW5zZT0iTUlUIgoraG9tZXBhZ2U9Imh0dHBzOi8vd3d3LmludGVsLmNvbS9jb250ZW50L3d3dy91 cy9lbi9kZXZlbG9wZXIvdG9vbHMvb25lYXBpL29uZXZwbC5odG1sIgorZGlzdGZpbGVzPSJodHRw czovL2dpdGh1Yi5jb20vb25lYXBpLXNyYy9vbmVWUEwvYXJjaGl2ZS92JHt2ZXJzaW9ufS8ke3Br Z25hbWV9LSR7dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09YjIyNjFjY2ExNzRjZTE4MTVmM2Q0 N2M2NDc5MjFhYjE3ZjY4MjY3YzY5YzFlMjQ0NGZmMjdhYWI3ZDE5OWNiYgorCitwb3N0X2luc3Rh bGwoKSB7CisJdmxpY2Vuc2UgTElDRU5TRQorfQorCitvbmV2cGwtZGV2ZWxfcGFja2FnZSgpIHsK KwlkZXBlbmRzPSIke21ha2VkZXBlbmRzfSAke3NvdXJjZXBrZ30tJHt2ZXJzaW9ufV8ke3Jldmlz aW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJcGtnX2luc3RhbGwo KSB7CisJCXZtb3ZlIHVzci9pbmNsdWRlCisJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCisJCXZt b3ZlICJ1c3IvbGliLyouc28iCisJfQorfQoKRnJvbSA2OTdhYjBhNWQyMmNkYzFhNTY4NjM5MzJl ODc2MTdiMGY1YTNkZTBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBTYXQsIDggSnVsIDIwMjMgMjA6MjA6NTkgLTA0MDAKU3Vi amVjdDogW1BBVENIIDEwMy8xMTVdIHRyYWNrZXItbWluZXJzOiByZXZidW1wIGZvciBmZm1wZWct Ni4wCgotLS0KIHNyY3BrZ3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3RyYWNrZXItbWluZXJzL3RlbXBsYXRlIGIvc3JjcGtncy90cmFja2VyLW1pbmVycy90ZW1w bGF0ZQppbmRleCBhNmU1YWE1Nzc3MDI0Li5hYTBmNDQzOTI3Y2RiIDEwMDY0NAotLS0gYS9zcmNw a2dzL3RyYWNrZXItbWluZXJzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdHJhY2tlci1taW5lcnMv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0cmFja2VyLW1p bmVycycKIHBrZ25hbWU9dHJhY2tlci1taW5lcnMKIHZlcnNpb249My41LjAKLXJldmlzaW9uPTQK K3JldmlzaW9uPTUKIGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9oZWxwZXI9cWVtdQogIyBtaXNz aW5nIGxpYmdyc3MgZm9yIG1pbmVyX3JzcwoKRnJvbSA3NjI0OTQ3OWU0ZTQ4OTU5MTA2ZDYwMWYw YTVkNWM4ZjYyNWFhNGE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBTYXQsIDggSnVsIDIwMjMgMjA6MjE6MjEgLTA0MDAKU3Vi amVjdDogW1BBVENIIDEwNC8xMTVdIG1wZDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL21wZC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbXBkL3RlbXBsYXRlIGIvc3Jj cGtncy9tcGQvdGVtcGxhdGUKaW5kZXggYjkxNmQ2NTU3MDlhYS4uMDVmYTBmNzkyN2UyZSAxMDA2 NDQKLS0tIGEvc3JjcGtncy9tcGQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tcGQvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtcGQnCiBwa2duYW1lPW1wZAog dmVyc2lvbj0wLjIzLjEzCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1tZXNv bgogY29uZmlndXJlX2FyZ3M9Ii1Eb3B1cz1lbmFibGVkIC1EbWlrbW9kPWVuYWJsZWQgLURuZWln aGJvcj10cnVlCiAgLURzb3VuZGNsb3VkPWVuYWJsZWQgLURwaXBlPXRydWUgLUR0d29sYW1lPWVu YWJsZWQgLURiemlwMj1lbmFibGVkCgpGcm9tIGJjZDBjMDU2N2M3MjJiY2Q0MTQ3Y2U5ZjFmYWUw OTFhMjYwODg4YTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTcgSnVsIDIwMjMgMTU6Mzc6NDQgLTA0MDAKU3ViamVj dDogW1BBVENIIDEwNS8xMTVdIG1peHh4OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3MvbWl4eHgvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21peHh4L3RlbXBsYXRlIGIv c3JjcGtncy9taXh4eC90ZW1wbGF0ZQppbmRleCAyMzgwMDY3NmJmZDA5Li42OTIxOTk2ZTRlNzdi IDEwMDY0NAotLS0gYS9zcmNwa2dzL21peHh4L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWl4eHgv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtaXh4eCcKIHBr Z25hbWU9bWl4eHgKIHZlcnNpb249Mi4zLjMKLXJldmlzaW9uPTUKK3JldmlzaW9uPTYKIGJ1aWxk X3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2Ui CiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMgcGtnLWNvbmZpZyBwcm90b2J1 ZiBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UiCgpGcm9tIGNjODY4NzU0ZTBkZmVlZWYyNTQ3NmNk MTUxNDIxZGNlOGNjMTk2MDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMiBBdWcgMjAyMyAxMDoxNzozMyAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMTA2LzExNV0gbGlib3BlbnNob3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bGlib3BlbnNob3QvdGVtcGxhdGUgYi9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlCmluZGV4 IGU5OTI2ZTMxMTE0OTUuLjIzYzgxMjY2YTg4NTAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGlib3Bl bnNob3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xpYm9wZW5zaG90JwogcGtnbmFtZT1saWJv cGVuc2hvdAogdmVyc2lvbj0wLjMuMAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5 bGU9Y21ha2UKICMgQnVpbGRzIGZhaWwgd2l0aCBSdWJ5LTIuNC4xCiBjb25maWd1cmVfYXJncz0i LURFTkFCTEVfUlVCWT1PRkYgLURVU0VfU1lTVEVNX0pTT05DUFA9T04iCgpGcm9tIDEzY2M4MzVl ZGY3ODFiZWEzYzExNGVkMGM3M2MwOTIzMTE5YTAxZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMg MDk6MDk6MzYgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwNy8xMTVdIG11c2lrY3ViZTogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL211c2lrY3ViZS90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlIGIvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxh dGUKaW5kZXggMWY3OGFkYTE0NTFiNi4uZDllNjE4NmU2Njk3YiAxMDA2NDQKLS0tIGEvc3JjcGtn cy9tdXNpa2N1YmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtdXNpa2N1YmUnCiBwa2duYW1lPW11 c2lrY3ViZQogdmVyc2lvbj0zLjAuMAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5 bGU9Y21ha2UKIG1ha2VfY21kPW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRE5PX05DVVJTRVNXPTEi CgpGcm9tIDQ0NzY1MWU0ZjEwMWNiMTcyNWIxZWZkYzBjMDhlMzMxNWZiYjU4OWUgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMzAgQXVnIDIwMjMgMDk6MTA6MDIgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwOC8xMTVdIHRn X293dDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3RnX293dC90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlIGIvc3JjcGtncy90Z19vd3QvdGVt cGxhdGUKaW5kZXggMWRkMGYyNWU4NGM5NC4uOGUxZTNiYmZmZDU3NSAxMDA2NDQKLS0tIGEvc3Jj cGtncy90Z19vd3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90Z19vd3QvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0Z19vd3QnCiBwa2duYW1lPXRnX293dAog dmVyc2lvbj0wLjAuMC4yMDIzMDYxMAotcmV2aXNpb249MworcmV2aXNpb249NAogX2NvbW1pdD1k Y2I1MDY5ZmY3NmJkMjkzZTg2OTI4ODA0MjA4NzM3ZTZjZWUyY2NjCiBfbGlieXV2X2NvbW1pdD03 N2MyMTIxZjdlNmI4ZTY5NGQ2ZTkwOGJiYmU5YmUyNDIxNDA5N2RhCiBfYWJzZWlsX2NvbW1pdD04 YzBiOTRlNzkzYTY2NDk1ZTBiMWYzNGE1ZWIyNmJkN2RjNjcyZGIwCgpGcm9tIGNhZGUwYWM0MTc4 M2E4MjQ4N2YzNTk3NDM1ZmZjYTNlMTZkNDIwNzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6 MTA6NDQgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwOS8xMTVdIHRlbGVncmFtLWRlc2t0b3A6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlIGIvc3JjcGtn cy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlCmluZGV4IDYyMTYzMDg4N2U4NzguLjk4NTA2MzM2 YTViNDQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICd0ZWxlZ3JhbS1kZXNrdG9wJwogcGtnbmFtZT10ZWxlZ3JhbS1kZXNr dG9wCiB2ZXJzaW9uPTQuOC40Ci1yZXZpc2lvbj00CityZXZpc2lvbj01CiBidWlsZF9zdHlsZT1j bWFrZQogYnVpbGRfaGVscGVyPSJxZW11IGdpciIKIGNvbmZpZ3VyZV9hcmdzPSItRFRERVNLVE9Q X0FQSV9JRD0yMDkyMzUKCkZyb20gNjczMjFmMjZkYTQ5YmM5MDA5NjI3OGUwMTNhMzMwNjE4NmE1 MzZmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAzMCBBdWcgMjAyMyAwOToxMToxMyAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMTEwLzExNV0gbXB2OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbXB2 L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tcHYvdGVtcGxhdGUgYi9zcmNwa2dzL21wdi90 ZW1wbGF0ZQppbmRleCA5MzNjMjJiYWUyZWQyLi4zMDFhNzdhZDIyOTcxIDEwMDY0NAotLS0gYS9z cmNwa2dzL21wdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21wdi90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21wdicKIHBrZ25hbWU9bXB2CiB2ZXJzaW9uPTAu MzYuMAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3Vy ZV9hcmdzPSItRGNkZGE9ZW5hYmxlZCAtRGR2YmluPWVuYWJsZWQgLURkdmRuYXY9ZW5hYmxlZAog IC1EbGlibXB2PXRydWUgLURjcGx1Z2lucz1lbmFibGVkCgpGcm9tIDJjZTRhMGYxMTM1ZTk3Mjkz NDdkNmVjNTUxYTlmZTg5OWRiMzg4ZTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6MTE6NDUg LTA0MDAKU3ViamVjdDogW1BBVENIIDExMS8xMTVdIGdzdC1wbHVnaW5zLWJhZDE6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlIGIvc3JjcGtncy9nc3Qt cGx1Z2lucy1iYWQxL3RlbXBsYXRlCmluZGV4IDQxODlmMzY4NmVlMzIuLmUxYmZlNzllY2E5OTEg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdnc3QtcGx1Z2lucy1iYWQxJwogcGtnbmFtZT1nc3QtcGx1Z2lucy1iYWQxCiB2 ZXJzaW9uPTEuMjIuMgotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfaGVscGVyPSJnaXIi CiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EcGFja2FnZS1vcmlnaW49aHR0 cHM6Ly92b2lkbGludXgub3JnIC1EZG9jPWRpc2FibGVkCgpGcm9tIGE4MDQ3ZTI1OTM1MTc4NzMw NjlmMTdlZmYxOTE0OGI5NWUxOTMyY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6MTI6MDkg LTA0MDAKU3ViamVjdDogW1BBVENIIDExMi8xMTVdIG9wZW5tdzogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL29wZW5tdy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3Bl bm13L3RlbXBsYXRlIGIvc3JjcGtncy9vcGVubXcvdGVtcGxhdGUKaW5kZXggMGFiZjVmZjdjZGJl Yy4uYjU3MTgwZjFhNDQ0NiAxMDA2NDQKLS0tIGEvc3JjcGtncy9vcGVubXcvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9vcGVubXcvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdvcGVubXcnCiBwa2duYW1lPW9wZW5tdwogdmVyc2lvbj0wLjQ4LjAKLXJldmlzaW9u PTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBfcmVjYXN0X2NvbW1pdD1lNzVhZGY4 NmY5MWViMzA4MjIyMDA4NWU0MmRkYTYyNjc5ZjlhM2VhCiBfYnVsbGV0X3RhZz0zLjE3CgpGcm9t IDM5N2I5MmNkMTM1YzY2OWQyZDUzMGNiZWZlODcxZjUxZGM0MzA3OWIgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAg QXVnIDIwMjMgMDk6MTQ6NTMgLTA0MDAKU3ViamVjdDogW1BBVENIIDExMy8xMTVdIGxtczogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2xtcy90ZW1wbGF0ZSB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbG1zL3RlbXBsYXRlIGIvc3JjcGtncy9sbXMvdGVtcGxhdGUKaW5kZXggY2IzZWE1 ZTU4YzgwZi4uYjFjOWI2MTIwZTVkYiAxMDA2NDQKLS0tIGEvc3JjcGtncy9sbXMvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9sbXMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdsbXMnCiBwa2duYW1lPWxtcwogdmVyc2lvbj0zLjQwLjAKLXJldmlzaW9uPTIKK3Jl dmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWci CiBtYWtlZGVwZW5kcz0id3QtZGV2ZWwgZmZtcGVnLWRldmVsIGJvb3N0LWRldmVsIGxpYmNvbmZp ZysrLWRldmVsIHRhZ2xpYi1kZXZlbCBwYW0tZGV2ZWwgbGliZ3JhcGhpY3NtYWdpY2stZGV2ZWwg Z3Rlc3QtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbCIKCkZyb20gYmU4OTY2YzhhYjc0YmQ5ZjY2OTky MzIyNjlmZGZjYTk0N2VhNTM5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAzMCBBdWcgMjAyMyAwOToxNToxNCAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMTE0LzExNV0gb3BlbmltYWdlaW86IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUgYi9zcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRlCmlu ZGV4IGQ4YTZiYTU2ZWZkMTEuLmQ3YWQ3OTU2M2EyYWYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3Bl bmltYWdlaW8vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5pbWFnZWlvJwogcGtnbmFtZT1v cGVuaW1hZ2VpbwogdmVyc2lvbj0yLjQuOS4wCi1yZXZpc2lvbj02CityZXZpc2lvbj03CiBidWls ZF9zdHlsZT1jbWFrZQogYnVpbGRfaGVscGVyPXFlbXUKIGNvbmZpZ3VyZV9hcmdzPSItRFVTRV9R VD0wIC1EVVNFX1BZVEhPTj0wIC1ET0lJT19CVUlMRF9URVNUUz0wCgpGcm9tIDg0OTU2OTUxMzk4 NzRkOTU5ZDliZDM2NjkxZmY4YjU2YmVhMDgwNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6 MTg6MTggLTA0MDAKU3ViamVjdDogW1BBVENIIDExNS8xMTVdIGZyZWVjYWQ6IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9mcmVlY2FkL3RlbXBsYXRlIGIvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlCmluZGV4IDg2 MDhkMTY3MGM4N2YuLjEyZGRmNzVlMjVmMjYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZnJlZWNhZC90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdmcmVlY2FkJwogcGtnbmFtZT1mcmVlY2FkCiB2ZXJzaW9uPTAu MjAuMgotcmV2aXNpb249NgorcmV2aXNpb249NwogYnVpbGRfc3R5bGU9Y21ha2UKIAogX2luc3Rf cHJlZml4PS91c3IvbGliLyR7cGtnbmFtZX0K --===============5700558282248833895==--