From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 11770 invoked from network); 10 Nov 2023 20:08:10 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 10 Nov 2023 20:08:10 -0000 Content-Type: multipart/mixed; boundary="===============7684085328722998984==" 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: Fri, 10 Nov 2023 21:08:09 +0100 List-Id: Message-ID: <20231110200809.HO_y3t2TyPRMzdI3PjQPNG4jpIB6L-ms8ohAzMuvJ1Q@z> GitHub notification mails are now in MIME to allow UTF8. --===============7684085328722998984== 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 IHNzcg0KLSB+fnNwZWstYWx0ZXJuYXRpdmV+fiAocmVwbGFjZSB3aXRoIHNwZWsteCkNCi0gcHBz c3BwDQotIG9saXZlDQotIG1vYw0KLSBtZWRpYXN0cmVhbWVyDQotIGxpYmV4dHJhY3Rvcg0KLSBp ZGpjDQotIGhlZGdld2Fycw0KLSB+fmZmbXBlZ3RodW1ibmFpbGVyfn4gKHBhdGNoZXMgZm9yIG1v dmllZGVjb2Rlci54eHggZmlsZXMpDQotIH5+ZmZtcGVndGh1bWJzfn4gKGxhdGVzdCBjb21waWxl cykNCi0gZGVhZGJlZWYNCi0gb214cGxheWVyDQotIHF0YXYgKGZvcmsgaGFzIGZmbXBlZyA1IHBh dGNoIC0gaHR0cHM6Ly9naXRodWIuY29tL2NtZ3VvL1F0QVYpDQotIGB2bGNgICh2bGM0IHdpbGwg c3VwcG9ydCBmZm1wZWc1LCB0aGVyZSdzIGEgcGF0Y2ggdG8gYnVpbGQgMy54IHdpdGggZmZtcGVn NSBidXQgaXQgd2lsbCBsYWNrIHZhYXBpKQ0KLSBgb3NnYCAoT3BlblNjZW5lR3JhcGggcGx1cyBg eGluZS1saWJgKQ0KDQoNCiMjIyMjIEhBVkUgTk9UIEJVSUxUIFlFVA0KDQotIG9teHBsYXllciAo cnBpIG9ubHk/IGZmbXBlZzQpDQotIGtvZGkgKGJpZywgYnV0IGZmbXBlZzQpDQoNCg0KIyMjIyMg VVBEQVRFRCAoZm9yIGZmbXBlZzYpDQoNCi0gfn5ibGVuZGVyOiB1cGRhdGUgdG8gMy41LjF+fiB+ fndpbGwgYmUgcmV2YnVtcCB3aXRofn4gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9p ZC1wYWNrYWdlcy9wdWxsLzQzOTkyDQotIHVucGFwZXI6IHVwZGF0ZSB0byA3LjAuMC4NCi0gZ3V2 Y3ZpZXc6IHVwZGF0ZSB0byAyLjAuOC4NCi0gcXQ1OiB1cGRhdGUgdG8gNS4xNS44DQotIHF0NS13 ZWJlbmdpbmU6IHVwZGF0ZSB0byA1LjE4LjEzDQotIHNoaWJva2VuMjogcmV2YnVtcCBmb3IgcXQ1 LjE1LjggKHBhdGNoKQ0KLSBweXRob24zLXB5c2lkZTI6IHVwZGF0ZSB0byA1LjE1LjggKHBhdGNo KQ0KLSBOZXcgcGFja2FnZTogc3BleC14IHJlcGxhY2VzIHNwZWstYWx0ZXJuYXRpdmUgZm9yIGZm bXBlZy02LjANCg0KDQojIyMjIyBSZXF1aXJlbWVudHMNCg0KLSB+fltnc3RyZWFtZXIgMS4yMi4y XShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDI4NjEp fn4gLSBhIGZldyBwYWNrYWdlcyB1c2UgZmZtcGVnLWRldmVsIGFuZCByZXF1aXJlIGEgcmV2YnVt cA0KDQotIFtJbnRlbCBQYWNrYWdlc10oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9p ZC1wYWNrYWdlcy9wdWxsLzQxMTMyKSAtIGZmbXBlZzQgdXNlcyBkaWZmZXJlbnQgbGlicmFyaWVz IHRoYW4gNiAobGlibWZ4IC8gSW50ZWwtTWVkaWFTREsgdnMgb25seSBvbmVWUEwgdGhhdCBJbnRl bCBpcyBtb3ZpbmcgdG8pLCBib3RoIGFyZSBpbmNsdWRlZCBoZXJlDQoNCi0gfn5bc2hvdGN1dCAy My4wNS4xNF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxs LzQ0MjYwKX5+DQoNCi0gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdl cy9wdWxsLzQ0NzgxIHdpbGwgcmVtb3ZlIGZyb20gdGhpcyBQUgoKQSBwYXRjaCBmaWxlIGZyb20g aHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQzNzYxLnBh dGNoIGlzIGF0dGFjaGVk --===============7684085328722998984== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSA2Y2U3ZjMzOTIxMTI5MTVlMDYxYzdjYzk3NzhhOWIxODYxMDJhMjBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4s IDE1IE9jdCAyMDIzIDIxOjE2OjU2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTE1XSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI2ICsrKysrLS0tCiBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoICAgICAgICAgICAgfCA2MCAtLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAxOCAtLS0tLS0KIC4uLmgtbGliYXZj b2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZiB8IDQwIC0tLS0tLS0tLS0tLS0KIC4u Li93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8IDI4IC0tLS0tLS0t LQogc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgMzggKysr KysrLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDE3MyBkZWxldGlv bnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBh dGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12NXRlbC1m bG9hdGluZy1wb2ludC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3Bh dGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJl YWRlb24tdmFhcGktYnVnLnBhdGNoCgpkaWZmIC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2NvbW1v bi9zaGxpYnMKaW5kZXggN2U5Y2VlODNmODQxNy4uYTBiYWNkNDA5MTNjNSAxMDA2NDQKLS0tIGEv Y29tbW9uL3NobGlicworKysgYi9jb21tb24vc2hsaWJzCkBAIC0zODUsMTUgKzM4NSwyMyBAQCBs aWJpZDN0YWcuc28uMCBsaWJpZDN0YWctMC4xNS4xYl8xCiBsaWJnaWYuc28uNyBnaWZsaWItNS4x LjBfMQogbGliSW1saWIyLnNvLjEgaW1saWIyLTEuNC4yXzEKIGxpYm1wM2xhbWUuc28uMCBsYW1l LTMuOTguMl8xCi1saWJhdmRldmljZS5zby41OCBsaWJhdmRldmljZS00LjBfMQotbGliYXZmb3Jt YXQuc28uNTggbGliYXZmb3JtYXQtNC4wXzEKLWxpYnN3c2NhbGUuc28uNSBsaWJzd3NjYWxlLTQu MF8xCi1saWJzd3Jlc2FtcGxlLnNvLjMgbGlic3dyZXNhbXBsZS00LjBfMQotbGliYXZyZXNhbXBs ZS5zby40IGxpYmF2cmVzYW1wbGUtNC4wXzEKLWxpYnBvc3Rwcm9jLnNvLjU1IGxpYnBvc3Rwcm9j LTQuMF8xCi1saWJhdmNvZGVjLnNvLjU4IGxpYmF2Y29kZWMtNC4wXzEKLWxpYmF2dXRpbC5zby41 NiBsaWJhdnV0aWwtNC4wXzEKLWxpYmF2ZmlsdGVyLnNvLjcgbGliYXZmaWx0ZXItNC4wXzEKK2xp YmF2ZGV2aWNlLnNvLjYwIGxpYmF2ZGV2aWNlLTYuMF8xCitsaWJhdmZvcm1hdC5zby42MCBsaWJh dmZvcm1hdC02LjBfMQorbGlic3dzY2FsZS5zby43IGxpYnN3c2NhbGUtNi4wXzEKK2xpYnN3cmVz YW1wbGUuc28uNCBsaWJzd3Jlc2FtcGxlLTYuMF8xCitsaWJwb3N0cHJvYy5zby41NyBsaWJwb3N0 cHJvYy02LjBfMQorbGliYXZjb2RlYy5zby42MCBsaWJhdmNvZGVjLTYuMF8xCitsaWJhdnV0aWwu c28uNTggbGliYXZ1dGlsLTYuMF8xCitsaWJhdmZpbHRlci5zby45IGxpYmF2ZmlsdGVyLTYuMF8x CitsaWJhdmRldmljZS5zby41OCBsaWJhdmRldmljZTQtNC4wXzEKK2xpYmF2Zm9ybWF0LnNvLjU4 IGxpYmF2Zm9ybWF0NC00LjBfMQorbGlic3dzY2FsZS5zby41IGxpYnN3c2NhbGU0LTQuMF8xCits aWJzd3Jlc2FtcGxlLnNvLjMgbGlic3dyZXNhbXBsZTQtNC4wXzEKK2xpYmF2cmVzYW1wbGUuc28u NCBsaWJhdnJlc2FtcGxlNC00LjBfMQorbGlicG9zdHByb2Muc28uNTUgbGlicG9zdHByb2M0LTQu MF8xCitsaWJhdmNvZGVjLnNvLjU4IGxpYmF2Y29kZWM0LTQuMF8xCitsaWJhdnV0aWwuc28uNTYg bGliYXZ1dGlsNC00LjBfMQorbGliYXZmaWx0ZXIuc28uNyBsaWJhdmZpbHRlcjQtNC4wXzEKIGxp YlNETC0xLjIuc28uMCBTREwtMS4yLjE0XzEKIGxpYlNETF9pbWFnZS0xLjIuc28uMCBTRExfaW1h Z2UtMS4yLjEwXzEKIGxpYngyNjQuc28uMTU3IHgyNjQtMjAxOTA1MDcuMjI0NV8xCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBhdGNoIGIvc3JjcGtncy9mZm1wZWcv ZmlsZXMvYWx0aXZlYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM1NzIw MDQ2MzMyMC4uMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotcmV2ZXJ0IHNvbWUgYWx0aXZl YyBzcGVjaWZpYyBjaGFuZ2Ugb24gYWxsIHBwYyogZXhjZXB0IHBwYzY0bGUqCi0KLXE2NjogIldl IHNob3VsZCBhbHNvIHRocm93IGluIGEgcmV2ZXJ0IG9mIEZGbXBlZy9GRm1wZWdAM2E1NTdjNSBi dXQgb25seQotY29uZGl0aW9uYWxseSwgZm9yIHBwYyogYnV0IG5vdCBwcGM2NGxlKiAodGhlIG5l dyBjb2RlIGlzIHZhbGlkIGZvcgotUE9XRVI4IFZTWCB3aGljaCBMRSB0YXJnZXRzIGFzIGEgYmFz ZWxpbmUgYnV0IG5vdCBCRSkiCi0KLQotVGhpcyByZXZlcnRzIGNvbW1pdCAzYTU1N2M1ZDg4Yjdi MTViNTk1NGJhMjc0M2ZlYmIwNTU1NDliNTM2LgotLS0tCi0gbGlic3dzY2FsZS9wcGMveXV2MnJn Yl9hbHRpdmVjLmMgfCAyNCArKysrKysrKysrKysrKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdl ZCwgMjAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYnN3 c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jIGIvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRp dmVjLmMKLWluZGV4IDUzNjU0NTI5M2QuLmMxZTI4NTJhZGIgMTAwNjQ0Ci0tLS0gYS9saWJzd3Nj YWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYwotKysrIGIvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9h bHRpdmVjLmMKLUBAIC0zMDUsNiArMzA1LDkgQEAgc3RhdGljIGludCBhbHRpdmVjXyAjIyBuYW1l KFN3c0NvbnRleHQgKmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAgICAgXAotICAg ICB2ZWN0b3Igc2lnbmVkIHNob3J0IFIxLCBHMSwgQjE7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgUiwgRywgQjsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgICBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqeTFpdlAsICp5 Mml2UCwgKnVpdlAsICp2aXZQOyAgICAgICAgICAgICAgICAgIFwKLSsgICAgdmVjdG9yIHVuc2ln bmVkIGNoYXIgYWxpZ25fcGVybTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0 IGxDWSAgICAgICA9IGMtPkNZOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBsT1kgICAgICAgPSBjLT5PWTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciBzaWduZWQgc2hvcnQgbENSViAg ICAgID0gYy0+Q1JWOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTMz NSwxMyArMzM4LDI2IEBAIHN0YXRpYyBpbnQgYWx0aXZlY18gIyMgbmFtZShTd3NDb250ZXh0ICpj LCBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW4sICAgICAgICAgIFwKLSAgICAgICAgIHZlY19kc3Rz dChvdXRlLCAoMHgwMjAwMDAwMiB8ICgoKHcgKiAzICsgMzIpIC8gMzIpIDw8IDE2KSksIDEpOyAg ICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgZm9yIChqID0gMDsgaiA8 IHcgLyAxNjsgaisrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LS0gICAgICAgICAgICB5MCA9IHZlY194bCgwLCB5MWkpOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgeTFpdlAgPSAoY29uc3QgdmVj dG9yIHVuc2lnbmVkIGNoYXIgKikgeTFpOyAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAg ICAgICAgIHkyaXZQID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHkyaTsgICAgICAg ICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB1aXZQICA9IChjb25zdCB2ZWN0b3IgdW5z aWduZWQgY2hhciAqKSB1aTsgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAg dml2UCAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgdmk7ICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICBhbGlnbl9w ZXJtID0gdmVjX2x2c2woMCwgeTFpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICAgICAgICAgICAgeTAgPSAodmVjdG9yIHVuc2lnbmVkIGNoYXIpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgIHZlY19w ZXJtKHkxaXZQWzBdLCB5MWl2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgeTEgPSB2ZWNfeGwoMCwgeTJpKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAg ICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB5MmkpOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB5MSA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcikg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAg ICAgICAgdmVjX3Blcm0oeTJpdlBbMF0sIHkyaXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAg ICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICB1ID0gKHZlY3Rv ciBzaWduZWQgY2hhcikgdmVjX3hsKDAsIHVpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHVpKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHUgPSAodmVjdG9yIHNpZ25l ZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAg ICAgICAgICAgICAgICAgIHZlY19wZXJtKHVpdlBbMF0sIHVpdlBbMV0sIGFsaWduX3Blcm0pOyAg ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAg IHYgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdmkpOyAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgdmkpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgdiA9ICh2 ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKyAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odml2UFswXSwgdml2UFsxXSwgYWxp Z25fcGVybSk7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgdmVjX3N1Yih1LCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0tIAotMi4y Ny4wCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRp bmctcG9pbnQucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5n LXBvaW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTU1MTc4Yzc0ZjBm Li4wMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxv YXRpbmctcG9pbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0tLS0gYS9s aWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTAtMjYgMjE6MDM6MDMuMDAwMDAwMDAwICsw MjAwCi0rKysgYi9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTEtMjEgMTE6MDY6NDku NjAyMjg0NDIyICswMTAwCi1AQCAtMzksNiArMzksMTUgQEAKLSAjZW5kaWYKLSAjaW5jbHVkZSA8 ZmVudi5oPgotIAotKyNpZiAoRkVfQUxMX0VYQ0VQVCA9PSAwKQotKy8qIEUuZy4gQVJNIHNvZnQg ZmxvYXQgZG9lcyBub3QgZGVmaW5lIHRoZXNlICovCi0rI2RlZmluZSBGRV9JTlZBTElEICAgIDAK LSsjZGVmaW5lIEZFX0RJVkJZWkVSTyAgMAotKyNkZWZpbmUgRkVfT1ZFUkZMT1cgICAwCi0rI2Rl ZmluZSBGRV9VTkRFUkZMT1cgIDAKLSsjZGVmaW5lIEZFX0lORVhBQ1QgICAgMAotKyNlbmRpZgot KwotICNpZiBDT05GSUdfTElCRk9OVENPTkZJRwotICNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRj b25maWcuaD4KLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvcGF0 Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZiBiL3NyY3BrZ3MvZmZt cGVnL3BhdGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlm ZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE5NDhmN2E4YTJkZi4uMDAwMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3BhdGNoLWxpYmF2Y29kZWMtbGlic3Z0 YXYxLXRlbl9iaXRfZm9ybWF0LmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0j PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgRnJvbSAwMzFmMTU2 MWNkMjg2NTk2Y2RiMzc0ZGEzMmY4YWE4MTZjZTNiMTM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotIyBGcm9tOiBDaHJpc3RvcGhlciBEZWdhd2EgPGNocmlzdG9waGVyLmRlZ2F3YUBpbnRlbC5j b20+Ci0jIERhdGU6IFRodSwgMjAgT2N0IDIwMjIgMjI6NTU6MjcgLTA1MDAKLSMgU3ViamVjdDog W1BBVENIXSBhdmNvZGVjL2xpYnN2dGF2MTogcmVtb3ZlIGNvbXByZXNzZWRfdGVuX2JpdF9mb3Jt YXQgYW5kIHNpbXBsaWZ5IGFsbG9jX2J1ZmZlcgotIwotIyBjb21wcmVzc2VkX3Rlbl9iaXRfZm9y bWF0IGhhcyBiZWVuIGRlcHJlY2F0ZWQgdXBzdHJlYW0gYW5kIGhhcyBubyBlZmZlY3QKLSMgYW5k IGNhbiBiZSByZW1vdmVkLiBQbHVzLCB0ZWNobmljYWxseSBpdCB3YXMgbmV2ZXIgdXNlZCBpbiB0 aGUgZmlyc3QgcGxhY2UKLSMgc2luY2UgaXQgd291bGQgcmVxdWlyZSB0aGUgYXBwIChmZm1wZWcp IHRvIHNldCBpdCBhbmQgZG8gYWRkaXRpb25hbAotIyBwcm9jZXNzaW5nIG9mIHRoZSBpbnB1dCBm cmFtZXMuCi0jCi0jIEFsc28gc2ltcGxpZnkgYWxsb2NfYnVmZmVyIGJ5IHJlbW92aW5nIGNhbGN1 bGF0aW9ucyByZWxhdGluZyB0byB0aGUgbm9uLWV4aXN0YW50IHByb2Nlc3NpbmcuCi0jCi0jIFNp Z25lZC1vZmYtYnk6IENocmlzdG9waGVyIERlZ2F3YSA8Y2hyaXN0b3BoZXIuZGVnYXdhQGludGVs LmNvbT4KLSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEv bGliYXZjb2RlYy9saWJzdnRhdjEuYwotKysrIGIvbGliYXZjb2RlYy9saWJzdnRhdjEuYwotQEAg LTEyNCwxNiArMTI0LDEyIEBAIHN0YXRpYyBpbnQgc3Z0X3ByaW50X2Vycm9yKHZvaWQgKmxvZ19j dHgsIEViRXJyb3JUeXBlIGVyciwKLSAKLSBzdGF0aWMgaW50IGFsbG9jX2J1ZmZlcihFYlN2dEF2 MUVuY0NvbmZpZ3VyYXRpb24gKmNvbmZpZywgU3Z0Q29udGV4dCAqc3Z0X2VuYykKLSB7Ci0tICAg IGNvbnN0IGludCAgICBwYWNrX21vZGVfMTBiaXQgPQotLSAgICAgICAgKGNvbmZpZy0+ZW5jb2Rl cl9iaXRfZGVwdGggPiA4KSAmJiAoY29uZmlnLT5jb21wcmVzc2VkX3Rlbl9iaXRfZm9ybWF0ID09 IDApID8gMSA6IDA7Ci0tICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemVfOGJpdCAgPQotLSAgICAg ICAgY29uZmlnLT5zb3VyY2Vfd2lkdGggKiBjb25maWctPnNvdXJjZV9oZWlnaHQgKiAoMSA8PCBw YWNrX21vZGVfMTBiaXQpOwotLSAgICBjb25zdCBzaXplX3QgbHVtYV9zaXplXzEwYml0ID0KLS0g ICAgICAgIChjb25maWctPmVuY29kZXJfYml0X2RlcHRoID4gOCAmJiBwYWNrX21vZGVfMTBiaXQg PT0gMCkgPyBsdW1hX3NpemVfOGJpdCA6IDA7Ci0rICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemUg PSBjb25maWctPnNvdXJjZV93aWR0aCAqIGNvbmZpZy0+c291cmNlX2hlaWdodCAqCi0rICAgICAg ICAoY29uZmlnLT5lbmNvZGVyX2JpdF9kZXB0aCA+IDggPyAyIDogMSk7Ci0gCi0gICAgIEViU3Z0 SU9Gb3JtYXQgKmluX2RhdGE7Ci0gCi0tICAgIHN2dF9lbmMtPnJhd19zaXplID0gKGx1bWFfc2l6 ZV84Yml0ICsgbHVtYV9zaXplXzEwYml0KSAqIDMgLyAyOwotKyAgICBzdnRfZW5jLT5yYXdfc2l6 ZSA9IGx1bWFfc2l6ZSAqIDMgLyAyOwotIAotICAgICAvLyBhbGxvY2F0ZSBidWZmZXIgZm9yIGlu IGFuZCBvdXQKLSAgICAgc3Z0X2VuYy0+aW5fYnVmICAgICAgICAgICA9IGF2X21hbGxvY3ooc2l6 ZW9mKCpzdnRfZW5jLT5pbl9idWYpKTsKLS0tIAotR2l0TGFiCi0KZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNo IGIvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1i dWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwZTNmNjhhNDE1YjguLjAw MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2Et cmVhZGVvbi12YWFwaS1idWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1G cm9tIDgxMWQyOTA4NDQyMDZmYzczZGMzOWMzZTViNjdkNWQ4OTViYWVkZjggTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCi1Gcm9tOiBSYWluZXIgSG9jaGVja2VyIDxmZXJuZXRtZW50YUBvbmxpbmUu ZGU+Ci1EYXRlOiBTYXQsIDI2IEphbiAyMDE5IDE5OjQ4OjM1ICswMTAwCi1TdWJqZWN0OiBbUEFU Q0hdIGF2Y29kZWMvdmFhcGlfaDI2NDogc2tpcCBkZWNvZGUgaWYgcGljIGhhcyBubyBzbGljZXMK LQotVGhpcyBmaXhlcyAvIHdvcmthcm91bmRzIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcv c2hvd19idWcuY2dpP2lkPTEwNTM2OC4KLUl0IHdhcyBoaXQgZnJlcXVlbnRseSB3aGVuIHdhdGNo aW5nIGgyNjQgY2hhbm5lbHMgcmVjZWl2ZWQgdmlhIERWQi1YLgotQ29ycmVzcG9uZGluZyBrb2Rp IGJ1ZzogaHR0cHM6Ly9naXRodWIuY29tL3hibWMveGJtYy9pc3N1ZXMvMTU3MDQKLS0tLQotIGxp YmF2Y29kZWMvdmFhcGlfaDI2NC5jIHwgNSArKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2Vy dGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jIGIvbGliYXZj b2RlYy92YWFwaV9oMjY0LmMKLWluZGV4IDU4NTQ1ODdhMjU1Li5mMTJmZGM0NTdhNCAxMDA2NDQK LS0tLSBhL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jCi0rKysgYi9saWJhdmNvZGVjL3ZhYXBpX2gy NjQuYwotQEAgLTMxNyw2ICszMTcsMTEgQEAgc3RhdGljIGludCB2YWFwaV9oMjY0X2VuZF9mcmFt ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgpCi0gICAgIEgyNjRTbGljZUNvbnRleHQgKnNsID0gJmgt PnNsaWNlX2N0eFswXTsKLSAgICAgaW50IHJldDsKLSAKLSsgICAgaWYgKHBpYy0+bmJfc2xpY2Vz ID09IDApIHsKLSsgICAgICAgIHJldCA9IEFWRVJST1JfSU5WQUxJRERBVEE7Ci0rICAgICAgICBn b3RvIGZpbmlzaDsKLSsgICAgfQotKwotICAgICByZXQgPSBmZl92YWFwaV9kZWNvZGVfaXNzdWUo YXZjdHgsIHBpYyk7Ci0gICAgIGlmIChyZXQgPCAwKQotICAgICAgICAgZ290byBmaW5pc2g7CmRp ZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZy90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVnL3RlbXBs YXRlCmluZGV4IDU5NjhhMDliMWYxMmQuLmMxZjliN2VmZTQwZTMgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvZmZtcGVnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmZtcGVnL3RlbXBsYXRlCkBAIC0xLDE1 ICsxLDE1IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWcnCiAjIGF1ZGFjaXR5IGFsc28g bmVlZHMgdG8gYmUgYnVtcGVkIHdoZW4gYSBuZXcgZmZtcGVnIHZlcnNpb24gYnVtcHMgbGliYXZm b3JtYXQncyBzb25hbWUhCiBwa2duYW1lPWZmbXBlZwotdmVyc2lvbj00LjQuNAotcmV2aXNpb249 NQordmVyc2lvbj02LjAKK3JldmlzaW9uPTEKIHNob3J0X2Rlc2M9IkRlY29kaW5nLCBlbmNvZGlu 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 b3ZlIHVzci9pbmNsdWRlCiAJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCgpGcm9tIGI0MjJmZTk4 MzdlODliOGExN2Q3MmE2MDEyMTE1MmMzZWE1MDFiZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMTUgT2N0IDIwMjMg MjE6MTg6MTQgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwMi8xMTVdIG9wZW5zaG90OiByZXZidW1w IGZvciBmZm1wZWc2LjAKCi0tLQogc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0ZSB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUgYi9zcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlCmlu ZGV4IDhmNDc4NTFlZWYzNTQuLmFmZmI2NTJhOWQ1MDAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3Bl bnNob3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5zaG90JwogcGtnbmFtZT1vcGVuc2hvdAog dmVyc2lvbj0zLjAuMAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9cHl0aG9u My1tb2R1bGUKIGhvc3RtYWtlZGVwZW5kcz0icHl0aG9uMyBweXRob24zLXNldHVwdG9vbHMiCiBt YWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHB5dGhvbjMtUHlRdDUiCgpGcm9tIGYwMWI1OGZmMmFk ZWE2ZWUwM2I5MzQ1ZTU3OTkzMWE1NmZlYjhhMDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMTUgT2N0IDIwMjMgMjE6 MTg6MzYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwMy8xMTVdIHN1bW86IHJldmJ1bXAgZm9yIGZm bXBlZzYuMAoKLS0tCiBzcmNwa2dzL3N1bW8vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3N1 bW8vdGVtcGxhdGUgYi9zcmNwa2dzL3N1bW8vdGVtcGxhdGUKaW5kZXggYTNmZTEzNGFhNWFjYy4u YTczMGFmYTlmYWZhOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9zdW1vL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3Mvc3Vtby90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J3N1bW8nCiBwa2duYW1lPXN1bW8KIHZlcnNpb249MS4xMi4wCi1yZXZpc2lvbj02CityZXZpc2lv bj03CiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJsaWJnZGFsLXRvb2xzIHBr Zy1jb25maWcgc3dpZyBweXRob24zLXNldHVwdG9vbHMiCiBtYWtlZGVwZW5kcz0icHl0aG9uMy1k ZXZlbCBmZm1wZWctZGV2ZWwgZm94LWRldmVsIGdsMnBzLWRldmVsIGxpYmdkYWwtZGV2ZWwKCkZy b20gZDMyZGExYjVmMWY3MWU5NTcxNDEzNjJjYjk0ZmUzNTFkMTQ1YjgyZSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAxOTo1NjoyMiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA0LzExNV0gTmV3IHBh Y2thZ2U6IGZmbXBlZzQtNC40LjQuCgotLS0KIHNyY3BrZ3MvZmZtcGVnNC1kZXZlbCAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0aXZlYy5w YXRjaCAgICAgICAgICAgfCAgNjAgKysrKysKIC4uLi9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5n LXBvaW50LnBhdGNoICAgICB8ICAxOCArKwogLi4uaC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5f Yml0X2Zvcm1hdC5kaWZmIHwgIDQwICsrKwogLi4uL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZh YXBpLWJ1Zy5wYXRjaCAgIHwgIDI4ICsrCiBzcmNwa2dzL2ZmbXBlZzQvdGVtcGxhdGUgICAgICAg ICAgICAgICAgICAgICAgfCAyNDAgKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2xpYmF2Y29k ZWM0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJhdmRldmlj ZTQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZmaWx0ZXI0 ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2Zm9ybWF0NCAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJhdnJlc2FtcGxlNCAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZ1dGlsNCAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYnBvc3Rwcm9jNCAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJzd3Jlc2FtcGxlNCAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGlic3dzY2FsZTQgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMSArCiAxNSBmaWxlcyBjaGFuZ2VkLCAzOTYgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvZmZtcGVnNC1kZXZlbAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRpdmVjLnBhdGNoCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9wYXRjaC1saWJh dmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0X2Zvcm1hdC5kaWZmCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVn LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRlCiBjcmVh dGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdmNvZGVjNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNy Y3BrZ3MvbGliYXZkZXZpY2U0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdmZpbHRl cjQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYmF2Zm9ybWF0NAogY3JlYXRlIG1vZGUg MTIwMDAwIHNyY3BrZ3MvbGliYXZyZXNhbXBsZTQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dz L2xpYmF2dXRpbDQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYnBvc3Rwcm9jNAogY3Jl YXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGlic3dyZXNhbXBsZTQKIGNyZWF0ZSBtb2RlIDEyMDAw MCBzcmNwa2dzL2xpYnN3c2NhbGU0CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0LWRldmVs IGIvc3JjcGtncy9mZm1wZWc0LWRldmVsCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAw MDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZmbXBl ZzQtZGV2ZWwKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRpdmVjLnBhdGNoIGIvc3Jj cGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwMC4uOWM1NzIwMDQ2MzMyMAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvZmZtcGVnNC9maWxlcy9hbHRpdmVjLnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKK3JldmVydCBz b21lIGFsdGl2ZWMgc3BlY2lmaWMgY2hhbmdlIG9uIGFsbCBwcGMqIGV4Y2VwdCBwcGM2NGxlKgor CitxNjY6ICJXZSBzaG91bGQgYWxzbyB0aHJvdyBpbiBhIHJldmVydCBvZiBGRm1wZWcvRkZtcGVn QDNhNTU3YzUgYnV0IG9ubHkKK2NvbmRpdGlvbmFsbHksIGZvciBwcGMqIGJ1dCBub3QgcHBjNjRs ZSogKHRoZSBuZXcgY29kZSBpcyB2YWxpZCBmb3IKK1BPV0VSOCBWU1ggd2hpY2ggTEUgdGFyZ2V0 cyBhcyBhIGJhc2VsaW5lIGJ1dCBub3QgQkUpIgorCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgM2E1 NTdjNWQ4OGI3YjE1YjU5NTRiYTI3NDNmZWJiMDU1NTQ5YjUzNi4KKy0tLQorIGxpYnN3c2NhbGUv cHBjL3l1djJyZ2JfYWx0aXZlYy5jIHwgMjQgKysrKysrKysrKysrKysrKysrKystLS0tCisgMSBm aWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1n aXQgYS9saWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYyBiL2xpYnN3c2NhbGUvcHBjL3l1 djJyZ2JfYWx0aXZlYy5jCitpbmRleCA1MzY1NDUyOTNkLi5jMWUyODUyYWRiIDEwMDY0NAorLS0t IGEvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMKKysrKyBiL2xpYnN3c2NhbGUvcHBj L3l1djJyZ2JfYWx0aXZlYy5jCitAQCAtMzA1LDYgKzMwNSw5IEBAIHN0YXRpYyBpbnQgYWx0aXZl Y18gIyMgbmFtZShTd3NDb250ZXh0ICpjLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW4sICAgICAg ICAgIFwKKyAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBSMSwgRzEsIEIxOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFy IFIsIEcsIEI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIg KnkxaXZQLCAqeTJpdlAsICp1aXZQLCAqdml2UDsgICAgICAgICAgICAgICAgICBcCisrICAgIHZl Y3RvciB1bnNpZ25lZCBjaGFyIGFsaWduX3Blcm07ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgdmVjdG9yIHNp Z25lZCBzaG9ydCBsQ1kgICAgICAgPSBjLT5DWTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisgICAgIHZlY3RvciBzaWduZWQgc2hvcnQgbE9ZICAgICAgID0gYy0+T1k7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICB2ZWN0b3Igc2lnbmVkIHNo b3J0IGxDUlYgICAgICA9IGMtPkNSVjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKK0BAIC0zMzUsMTMgKzMzOCwyNiBAQCBzdGF0aWMgaW50IGFsdGl2ZWNfICMjIG5hbWUoU3dz Q29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAgICAgICAgICBcCisgICAgICAg ICB2ZWNfZHN0c3Qob3V0ZSwgKDB4MDIwMDAwMDIgfCAoKCh3ICogMyArIDMyKSAvIDMyKSA8PCAx NikpLCAxKTsgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIGZvciAo aiA9IDA7IGogPCB3IC8gMTY7IGorKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCistICAgICAgICAgICAgeTAgPSB2ZWNfeGwoMCwgeTFpKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHkxaXZQID0g KGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHkxaTsgICAgICAgICAgICAgICAgICAgICAg IFwKKysgICAgICAgICAgICB5Mml2UCA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB5 Mmk7ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgdWl2UCAgPSAoY29uc3Qg dmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgdWk7ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAg ICAgICAgICAgIHZpdlAgID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHZpOyAgICAg ICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAg ICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkxaSk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHkwID0gKHZlY3RvciB1bnNpZ25lZCBjaGFyKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAg ICAgICB2ZWNfcGVybSh5MWl2UFswXSwgeTFpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAgICAg ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIHkxID0gdmVjX3hs KDAsIHkyaSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KysgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgeTJpKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgeTEgPSAodmVjdG9yIHVuc2ln bmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAg ICAgICAgICAgICAgICAgIHZlY19wZXJtKHkyaXZQWzBdLCB5Mml2UFsxXSwgYWxpZ25fcGVybSk7 ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAg dSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgwLCB1aSk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB1aSk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB1ID0gKHZl Y3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisrICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh1aXZQWzBdLCB1aXZQWzFdLCBhbGln bl9wZXJtKTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0g ICAgICAgICAgICB2ID0gKHZlY3RvciBzaWduZWQgY2hhcikgdmVjX3hsKDAsIHZpKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNs KDAsIHZpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAg ICAgIHYgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHZpdlBbMF0sIHZp dlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICAgICAgIHUgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIHZl Y19zdWIodSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CistLSAKKzIuMjcuMAorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9hcm12 NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL2FybXY1 dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMDAuLjlhNTUxNzhjNzRmMGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZmbXBl ZzQvcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaApAQCAtMCwwICsxLDE4IEBA CistLS0gYS9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTAtMjYgMjE6MDM6MDMuMDAw MDAwMDAwICswMjAwCisrKysgYi9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTEtMjEg MTE6MDY6NDkuNjAyMjg0NDIyICswMTAwCitAQCAtMzksNiArMzksMTUgQEAKKyAjZW5kaWYKKyAj aW5jbHVkZSA8ZmVudi5oPgorIAorKyNpZiAoRkVfQUxMX0VYQ0VQVCA9PSAwKQorKy8qIEUuZy4g QVJNIHNvZnQgZmxvYXQgZG9lcyBub3QgZGVmaW5lIHRoZXNlICovCisrI2RlZmluZSBGRV9JTlZB TElEICAgIDAKKysjZGVmaW5lIEZFX0RJVkJZWkVSTyAgMAorKyNkZWZpbmUgRkVfT1ZFUkZMT1cg ICAwCisrI2RlZmluZSBGRV9VTkRFUkZMT1cgIDAKKysjZGVmaW5lIEZFX0lORVhBQ1QgICAgMAor KyNlbmRpZgorKworICNpZiBDT05GSUdfTElCRk9OVENPTkZJRworICNpbmNsdWRlIDxmb250Y29u ZmlnL2ZvbnRjb25maWcuaD4KKyAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC9w YXRjaGVzL3BhdGNoLWxpYmF2Y29kZWMtbGlic3Z0YXYxLXRlbl9iaXRfZm9ybWF0LmRpZmYgYi9z cmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9wYXRjaC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0 X2Zvcm1hdC5kaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmFh OTQ4ZjdhOGEyZGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9w YXRjaC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5fYml0X2Zvcm1hdC5kaWZmCkBAIC0wLDAgKzEs NDAgQEAKKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBGcm9t IDAzMWYxNTYxY2QyODY1OTZjZGIzNzRkYTMyZjhhYTgxNmNlM2IxMzUgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCisjIEZyb206IENocmlzdG9waGVyIERlZ2F3YSA8Y2hyaXN0b3BoZXIuZGVnYXdh QGludGVsLmNvbT4KKyMgRGF0ZTogVGh1LCAyMCBPY3QgMjAyMiAyMjo1NToyNyAtMDUwMAorIyBT dWJqZWN0OiBbUEFUQ0hdIGF2Y29kZWMvbGlic3Z0YXYxOiByZW1vdmUgY29tcHJlc3NlZF90ZW5f Yml0X2Zvcm1hdCBhbmQgc2ltcGxpZnkgYWxsb2NfYnVmZmVyCisjCisjIGNvbXByZXNzZWRfdGVu X2JpdF9mb3JtYXQgaGFzIGJlZW4gZGVwcmVjYXRlZCB1cHN0cmVhbSBhbmQgaGFzIG5vIGVmZmVj dAorIyBhbmQgY2FuIGJlIHJlbW92ZWQuIFBsdXMsIHRlY2huaWNhbGx5IGl0IHdhcyBuZXZlciB1 c2VkIGluIHRoZSBmaXJzdCBwbGFjZQorIyBzaW5jZSBpdCB3b3VsZCByZXF1aXJlIHRoZSBhcHAg KGZmbXBlZykgdG8gc2V0IGl0IGFuZCBkbyBhZGRpdGlvbmFsCisjIHByb2Nlc3Npbmcgb2YgdGhl IGlucHV0IGZyYW1lcy4KKyMKKyMgQWxzbyBzaW1wbGlmeSBhbGxvY19idWZmZXIgYnkgcmVtb3Zp bmcgY2FsY3VsYXRpb25zIHJlbGF0aW5nIHRvIHRoZSBub24tZXhpc3RhbnQgcHJvY2Vzc2luZy4K KyMKKyMgU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgRGVnYXdhIDxjaHJpc3RvcGhlci5kZWdh d2FAaW50ZWwuY29tPgorIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gYS9saWJhdmNvZGVjL2xpYnN2dGF2MS5jCisrKysgYi9saWJhdmNvZGVjL2xpYnN2dGF2 MS5jCitAQCAtMTI0LDE2ICsxMjQsMTIgQEAgc3RhdGljIGludCBzdnRfcHJpbnRfZXJyb3Iodm9p ZCAqbG9nX2N0eCwgRWJFcnJvclR5cGUgZXJyLAorIAorIHN0YXRpYyBpbnQgYWxsb2NfYnVmZmVy KEViU3Z0QXYxRW5jQ29uZmlndXJhdGlvbiAqY29uZmlnLCBTdnRDb250ZXh0ICpzdnRfZW5jKQor IHsKKy0gICAgY29uc3QgaW50ICAgIHBhY2tfbW9kZV8xMGJpdCA9CistICAgICAgICAoY29uZmln LT5lbmNvZGVyX2JpdF9kZXB0aCA+IDgpICYmIChjb25maWctPmNvbXByZXNzZWRfdGVuX2JpdF9m b3JtYXQgPT0gMCkgPyAxIDogMDsKKy0gICAgY29uc3Qgc2l6ZV90IGx1bWFfc2l6ZV84Yml0ICA9 CistICAgICAgICBjb25maWctPnNvdXJjZV93aWR0aCAqIGNvbmZpZy0+c291cmNlX2hlaWdodCAq ICgxIDw8IHBhY2tfbW9kZV8xMGJpdCk7CistICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemVfMTBi aXQgPQorLSAgICAgICAgKGNvbmZpZy0+ZW5jb2Rlcl9iaXRfZGVwdGggPiA4ICYmIHBhY2tfbW9k ZV8xMGJpdCA9PSAwKSA/IGx1bWFfc2l6ZV84Yml0IDogMDsKKysgICAgY29uc3Qgc2l6ZV90IGx1 bWFfc2l6ZSA9IGNvbmZpZy0+c291cmNlX3dpZHRoICogY29uZmlnLT5zb3VyY2VfaGVpZ2h0ICoK KysgICAgICAgIChjb25maWctPmVuY29kZXJfYml0X2RlcHRoID4gOCA/IDIgOiAxKTsKKyAKKyAg ICAgRWJTdnRJT0Zvcm1hdCAqaW5fZGF0YTsKKyAKKy0gICAgc3Z0X2VuYy0+cmF3X3NpemUgPSAo bHVtYV9zaXplXzhiaXQgKyBsdW1hX3NpemVfMTBiaXQpICogMyAvIDI7CisrICAgIHN2dF9lbmMt PnJhd19zaXplID0gbHVtYV9zaXplICogMyAvIDI7CisgCisgICAgIC8vIGFsbG9jYXRlIGJ1ZmZl ciBmb3IgaW4gYW5kIG91dAorICAgICBzdnRfZW5jLT5pbl9idWYgICAgICAgICAgID0gYXZfbWFs bG9jeihzaXplb2YoKnN2dF9lbmMtPmluX2J1ZikpOworLS0gCitHaXRMYWIKKwpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGkt YnVnLnBhdGNoIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRl b24tdmFhcGktYnVnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MDAuLjAwZTNmNjhhNDE1YjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZmbXBlZzQvcGF0 Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2gKQEAgLTAsMCArMSwy OCBAQAorRnJvbSA4MTFkMjkwODQ0MjA2ZmM3M2RjMzljM2U1YjY3ZDVkODk1YmFlZGY4IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmFpbmVyIEhvY2hlY2tlciA8ZmVybmV0bWVudGFA b25saW5lLmRlPgorRGF0ZTogU2F0LCAyNiBKYW4gMjAxOSAxOTo0ODozNSArMDEwMAorU3ViamVj dDogW1BBVENIXSBhdmNvZGVjL3ZhYXBpX2gyNjQ6IHNraXAgZGVjb2RlIGlmIHBpYyBoYXMgbm8g c2xpY2VzCisKK1RoaXMgZml4ZXMgLyB3b3JrYXJvdW5kcyBodHRwczovL2J1Z3MuZnJlZWRlc2t0 b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUzNjguCitJdCB3YXMgaGl0IGZyZXF1ZW50bHkgd2hl biB3YXRjaGluZyBoMjY0IGNoYW5uZWxzIHJlY2VpdmVkIHZpYSBEVkItWC4KK0NvcnJlc3BvbmRp bmcga29kaSBidWc6IGh0dHBzOi8vZ2l0aHViLmNvbS94Ym1jL3hibWMvaXNzdWVzLzE1NzA0Cist LS0KKyBsaWJhdmNvZGVjL3ZhYXBpX2gyNjQuYyB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwg NSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZhYXBpX2gyNjQuYyBi L2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jCitpbmRleCA1ODU0NTg3YTI1NS4uZjEyZmRjNDU3YTQg MTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2gyNjQuYworKysrIGIvbGliYXZjb2RlYy92 YWFwaV9oMjY0LmMKK0BAIC0zMTcsNiArMzE3LDExIEBAIHN0YXRpYyBpbnQgdmFhcGlfaDI2NF9l bmRfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQorICAgICBIMjY0U2xpY2VDb250ZXh0ICpz bCA9ICZoLT5zbGljZV9jdHhbMF07CisgICAgIGludCByZXQ7CisgCisrICAgIGlmIChwaWMtPm5i X3NsaWNlcyA9PSAwKSB7CisrICAgICAgICByZXQgPSBBVkVSUk9SX0lOVkFMSUREQVRBOworKyAg ICAgICAgZ290byBmaW5pc2g7CisrICAgIH0KKysKKyAgICAgcmV0ID0gZmZfdmFhcGlfZGVjb2Rl X2lzc3VlKGF2Y3R4LCBwaWMpOworICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgIGdvdG8gZmlu aXNoOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRlIGIvc3JjcGtncy9mZm1w ZWc0L3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmYy Yzg1MTY5M2QzNjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZmbXBlZzQvdGVtcGxhdGUK QEAgLTAsMCArMSwyNDAgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZmbXBlZzQnCisjIGF1ZGFj aXR5IGFsc28gbmVlZHMgdG8gYmUgYnVtcGVkIHdoZW4gYSBuZXcgZmZtcGVnIHZlcnNpb24gYnVt cHMgbGliYXZmb3JtYXQncyBzb25hbWUhCitwa2duYW1lPWZmbXBlZzQKK3ZlcnNpb249NC40LjQK K3JldmlzaW9uPTEKK3Nob3J0X2Rlc2M9IkRlY29kaW5nLCBlbmNvZGluZyBhbmQgc3RyZWFtaW5n IHNvZnR3YXJlIC0gZmZtcGVnNCBsaWJyYXJpZXMgb25seSIKK21haW50YWluZXI9Ik9ycGhhbmVk IDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCitsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgoraG9t ZXBhZ2U9Imh0dHBzOi8vd3d3LmZmbXBlZy5vcmciCitjaGFuZ2Vsb2c9Imh0dHBzOi8vcmF3Lmdp dGh1YnVzZXJjb250ZW50LmNvbS9GRm1wZWcvRkZtcGVnL21hc3Rlci9DaGFuZ2Vsb2ciCitkaXN0 ZmlsZXM9Imh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvcmVsZWFzZXMvZmZtcGVnLSR7dmVyc2lvbn0u dGFyLnh6IgorY2hlY2tzdW09ZTgwYjM4MGQ1OTVjODA5MDYwZjY2Zjk2YTVkODQ5NTExZWY0YTc2 YTI2Yjc2ZWFjZjU3NzhiOTRjMzU3MDMwOQorCitob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcg cGVybCIKK21ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGJ6aXAyLWRldmVsIGZyZWV0eXBlLWRldmVs IGFsc2EtbGliLWRldmVsIGxpYlhmaXhlcy1kZXZlbAorIGxpYlhleHQtZGV2ZWwgbGliWHZNQy1k ZXZlbCBsaWJ4Y2ItZGV2ZWwgbGFtZS1kZXZlbCBsaWJ0aGVvcmEtZGV2ZWwKKyBsaWJ2b3JiaXMt ZGV2ZWwgeDI2NC1kZXZlbCB4dmlkY29yZS1kZXZlbCBqYWNrLWRldmVsIFNETDItZGV2ZWwKKyBs aWJjZGlvLXBhcmFub2lhLWRldmVsIGxpYnJ0bXAtZGV2ZWwgbGlibW9kcGx1Zy1kZXZlbCBnbnV0 bHMtZGV2ZWwKKyBzcGVleC1kZXZlbCBjZWx0LWRldmVsIGhhcmZidXp6LWRldmVsIGxpYmFzcy1k ZXZlbCBvcHVzLWRldmVsIG9jbC1pY2QtZGV2ZWwKKyBsaWJiczJiLWRldmVsIGxpYnZpZHN0YWIt ZGV2ZWwgdm1hZi1kZXZlbCAkKHZvcHRfaWYgcHVsc2VhdWRpbyBwdWxzZWF1ZGlvLWRldmVsKQor ICQodm9wdF9pZiB2YWFwaSBsaWJ2YS1kZXZlbCkgJCh2b3B0X2lmIHZkcGF1IGxpYnZkcGF1LWRl dmVsKQorICQodm9wdF9pZiB4MjY1IHgyNjUtZGV2ZWwpICQodm9wdF9pZiB2NGwyIHY0bC11dGls cy1kZXZlbCkKKyAkKHZvcHRfaWYgZmRrX2FhYyBmZGstYWFjLWRldmVsKSAkKHZvcHRfaWYgdnB4 IGxpYnZweC1kZXZlbCkKKyAkKHZvcHRfaWYgYW9tIGxpYmFvbS1kZXZlbCkgJCh2b3B0X2lmIHNu ZGlvIHNuZGlvLWRldmVsKQorICQodm9wdF9pZiBkYXYxZCBsaWJkYXYxZC1kZXZlbCkgJCh2b3B0 X2lmIHppbWcgemltZy1kZXZlbCkKKyAkKHZvcHRfaWYgd2VicCBsaWJ3ZWJwLWRldmVsKSAkKHZv cHRfaWYgc29mYSBsaWJteXNvZmEtZGV2ZWwpCisgJCh2b3B0X2lmIGRybSBsaWJkcm0tZGV2ZWwp ICQodm9wdF9pZiBzdnRhdjEgbGlic3Z0LWF2MS1kZXZlbCkKKyAkKHZvcHRfaWYgc3J0IHNydC1k ZXZlbCkgJCh2b3B0X2lmIHJpc3QgbGlicmlzdC1kZXZlbCkKKyAkKHZvcHRfaWYgdnVsa2FuICd2 dWxrYW4tbG9hZGVyIFZ1bGthbi1IZWFkZXJzJykKKyAkKHZvcHRfaWYgbWZ4ICdsaWJtZnggbGli bWZ4LWRldmVsJykKKyAkKHZvcHRfaWYgbnZlbmMgbnYtY29kZWMtaGVhZGVycykgJCh2b3B0X2lm IG52ZGVjIG52LWNvZGVjLWhlYWRlcnMpIgorCitidWlsZF9vcHRpb25zPSJ4MjY1IHY0bDIgdmFh cGkgdmRwYXUgdnB4IGZka19hYWMgYW9tIG52ZW5jIHNuZGlvIHB1bHNlYXVkaW8KKyBkYXYxZCB6 aW1nIHdlYnAgc29mYSB2dWxrYW4gZHJtIHN2dGF2MSBzcnQgcmlzdCBudmRlYyBtZngiCitidWls ZF9vcHRpb25zX2RlZmF1bHQ9IngyNjUgdjRsMiB2cHggYW9tIHNuZGlvIHB1bHNlYXVkaW8gZGF2 MWQgd2VicCB2dWxrYW4gZHJtIHNydCByaXN0IgorCitkZXNjX29wdGlvbl9zcnQ9IkVuYWJsZSBz dXBwb3J0IGZvciBTUlQgKFNlY3VyZSwgUmVsaWFibGUsIFRyYW5zcG9ydCkiCitkZXNjX29wdGlv bl9yaXN0PSJFbmFibGUgc3VwcG9ydCBmb3IgUklTVCAoUmVsaWFibGUgSW50ZXJuZXQgU3RyZWFt IFRyYW5zcG9ydCkiCitkZXNjX29wdGlvbl9zb2ZhPSJFbmFibGUgc3VwcG9ydCBmb3IgQUVTIFNP RkEiCitkZXNjX29wdGlvbl93ZWJwPSJFbmFibGUgc3VwcG9ydCBmb3IgV2ViUCIKKworY2FzZSAi JFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJaTY4NiopCisJCQlob3N0bWFrZWRlcGVuZHMrPSIg bmFzbSIKKwkJCWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSBudmVuYyBudmRl YyIKKwkJCTs7CisJeDg2XzY0KikKKwkJCWhvc3RtYWtlZGVwZW5kcys9IiBuYXNtIgorCQkJYnVp bGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG1meCBudmVuYyBudmRlYyIKKwkJCTs7 CisJcHBjNjQqKSBidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUiOzsKKwltaXBz KikgQ0ZMQUdTPSItbW5hbj1sZWdhY3kiOzsKK2VzYWMKKworaWYgWyAiJFhCUFNfVEFSR0VUX1dP UkRTSVpFIiAhPSAiMzIiIF07IHRoZW4KKwlidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgc3Z0YXYx IgorZmkKKworaWYgWyAiJFhCUFNfVEFSR0VUX05PX0FUT01JQzgiIF07IHRoZW4KKwltYWtlZGVw ZW5kcys9IiBsaWJhdG9taWMtZGV2ZWwiCitmaQorCitfYXBwbHlfcGF0Y2goKSB7CisJbG9jYWwg YXJncz0iJDEiIHBuYW1lPSIkKGJhc2VuYW1lICQyKSIKKworCWlmIFsgISAtZiAiLiR7cG5hbWV9 X2RvbmUiIF07IHRoZW4KKwkJcGF0Y2ggLU4gJGFyZ3MgLWkgJDIKKwkJdG91Y2ggLiR7cG5hbWV9 X2RvbmUKKwlmaQorfQorCitwb3N0X3BhdGNoKCkgeworCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNI SU5FIiBpbgorCQlwcGM2NGxlKikgOzsKKwkJcHBjKikgX2FwcGx5X3BhdGNoIC1wMSAke0ZJTEVT RElSfS9hbHRpdmVjLnBhdGNoIDs7CisJZXNhYworCisJdnNlZCAtaSBsaWJhdmZpbHRlci92Zl9s aWJ2bWFmLmMgLWUgJ3MhL3Vzci9sb2NhbC9zaGFyZS9tb2RlbC9cKHZtYWZfdjAuNi4xXCkucGts IS91c3Ivc2hhcmUvdm1hZi9cMS5qc29uIScKK30KKworZG9fY29uZmlndXJlKCkgeworCSMgRml4 IGdjYyBvbiB4ODZfNjQtbXVzbCBvbmx5CisJaWYgWyAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiID0g Ing4Nl82NC1tdXNsIiBdOyB0aGVuCisJCXZzZWQgLWkgY29uZmlndXJlIC1lICJzO19jZmxhZ3Nf c3BlZWQ9Jy1PMyc7X2NmbGFnc19zcGVlZD0nLU8yJzsiCisJZmkKKworCWlmIFsgIiRDUk9TU19C VUlMRCIgXTsgdGhlbgorCQljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJCWFybSop IF9hcmNoPSJhcm0iOzsKKwkJCWFhcmNoNjQqKSBfYXJjaD0iYWFyY2g2NCI7OworCQkJbWlwcyop IF9hcmNoPSJtaXBzIjs7CisJCQlwcGM2NCopIF9hcmNoPSJwcGM2NCI7OworCQkJcHBjKikgX2Fy Y2g9InBwYyI7OworCQkJKikgX2FyY2g9IiR7WEJQU19UQVJHRVRfTUFDSElORSUlLW11c2x9Ijs7 CisJCWVzYWMKKworCQlfYXJncys9IiAtLWVuYWJsZS1jcm9zcy1jb21waWxlCisJCQktLXN5c3Jv b3Q9JFhCUFNfQ1JPU1NfQkFTRQorCQkJLS1jcm9zcy1wcmVmaXg9JHtYQlBTX0NST1NTX1RSSVBM RVR9LQorCQkJLS10YXJnZXQtb3M9bGludXggLS1hcmNoPSR7X2FyY2h9IgorCWZpCisKKwljYXNl ICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJcHBjfHBwYy1tdXNsKSBfYXJncys9IiAtLWRp c2FibGUtYWx0aXZlYyI7OworCWVzYWMKKworCWlmIFsgIiRYQlBTX1RBUkdFVF9OT19BVE9NSUM4 IiBdOyB0aGVuCisJCV9hcmdzKz0iIC0tZXh0cmEtbGlicz0tbGF0b21pYyIKKwlmaQorCisJLi9j b25maWd1cmUgLS1wcmVmaXg9L3VzciAtLWRpc2FibGUtZGVidWcgLS1lbmFibGUtZ3BsIC0tZW5h YmxlLWdudXRscyBcCisJCS0tZGlzYWJsZS1zdHJpcHBpbmcgXAorCQktLWVuYWJsZS1saWJjZGlv IC0tZW5hYmxlLXZlcnNpb24zIC0tZW5hYmxlLXJ1bnRpbWUtY3B1ZGV0ZWN0IFwKKwkJLS1lbmFi bGUtbGlibXAzbGFtZSAtLWVuYWJsZS1saWJ2b3JiaXMgLS1lbmFibGUtbGlieHZpZCBcCisJCS0t ZW5hYmxlLWxpYngyNjQgJCh2b3B0X2VuYWJsZSB2cHggbGlidnB4KSAtLWVuYWJsZS1saWJ0aGVv cmEgXAorCQktLWVuYWJsZS1zaGFyZWQgLS1lbmFibGUtc3RhdGljIC0tZW5hYmxlLWxpYnhjYiBc CisJCSQodm9wdF9lbmFibGUgcHVsc2VhdWRpbyBsaWJwdWxzZSkgLS1lbmFibGUtbGliZnJlZXR5 cGUgLS1lbmFibGUtbGlibW9kcGx1ZyBcCisJCS0tZW5hYmxlLWxpYnNwZWV4IC0tZW5hYmxlLWxp YmNlbHQgLS1lbmFibGUtbGliYXNzIFwKKwkJLS1lbmFibGUtbGlib3B1cyAtLWVuYWJsZS1saWJy dG1wIC0tZW5hYmxlLWxpYmphY2sgXAorCQkkKHZvcHRfaWYgZmRrX2FhYyAnLS1lbmFibGUtbm9u ZnJlZSAtLWVuYWJsZS1saWJmZGstYWFjJykgXAorCQktLWRpc2FibGUtbGlib3BlbmNvcmVfYW1y bmIgLS1kaXNhYmxlLWxpYm9wZW5jb3JlX2FtcndiIFwKKwkJLS1kaXNhYmxlLWxpYm9wZW5qcGVn IFwKKwkJLS1lbmFibGUtcG9zdHByb2MgLS1lbmFibGUtb3BlbmNsICR7X2FyZ3N9IC0tZW5hYmxl LWxpYnZtYWYgJHtfYXJnc30gXAorCQkkKHZvcHRfZW5hYmxlIHgyNjUgbGlieDI2NSkgXAorCQkk KHZvcHRfZW5hYmxlIHY0bDIgbGlidjRsMikgXAorCQkkKHZvcHRfZW5hYmxlIGFvbSBsaWJhb20p ICQodm9wdF9lbmFibGUgdmFhcGkpICQodm9wdF9lbmFibGUgdmRwYXUpIFwKKwkJLS1lbmFibGUt bGliYnMyYiAtLWVuYWJsZS1hdnJlc2FtcGxlIC0tZW5hYmxlLWxpYnZpZHN0YWIgXAorCQkkKHZv cHRfZW5hYmxlIGRhdjFkIGxpYmRhdjFkKSBcCisJCSQodm9wdF9lbmFibGUgemltZyBsaWJ6aW1n KSBcCisJCSQodm9wdF9lbmFibGUgd2VicCBsaWJ3ZWJwKSBcCisJCSQodm9wdF9lbmFibGUgc29m YSBsaWJteXNvZmEpIFwKKwkJJCh2b3B0X2VuYWJsZSB2dWxrYW4pIFwKKwkJJCh2b3B0X2VuYWJs ZSBkcm0gbGliZHJtKSBcCisJCSQodm9wdF9lbmFibGUgc3Z0YXYxIGxpYnN2dGF2MSkgXAorCQkk KHZvcHRfZW5hYmxlIHNydCBsaWJzcnQpIFwKKwkJJCh2b3B0X2VuYWJsZSByaXN0IGxpYnJpc3Qp IFwKKwkJJCh2b3B0X2VuYWJsZSBtZnggbGlibWZ4KSBcCisJCSQodm9wdF9pZiBudmVuYyAnLS1l bmFibGUtbnZlbmMnKSBcCisJCSQodm9wdF9pZiBudmRlYyAnLS1lbmFibGUtbnZkZWMnKQorfQor Citkb19idWlsZCgpIHsKKwltYWtlICR7bWFrZWpvYnN9CisJbWFrZSBkb2MvZmZ7bXBlZyxwbGF5 fS4xCit9CisKK2RvX2luc3RhbGwoKSB7CisJbWFrZSBERVNURElSPSR7REVTVERJUn0gaW5zdGFs bCBpbnN0YWxsLW1hbgorCXJtIC1yZiAke0RFU1RESVJ9L3Vzci9iaW4KK30KKworbGliYXZjb2Rl YzRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgY29kZWMgbGlicmFyeSIKKwlwa2df aW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYXZjb2RlYy5zby4qIgorCX0KK30KKwor bGliYXZkZXZpY2U0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGRldmljZSBoYW5k bGluZyBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJhdmRl dmljZS5zby4qIgorCX0KK30KKworbGliYXZyZXNhbXBsZTRfcGFja2FnZSgpIHsKKwlzaG9ydF9k ZXNjPSJGRm1wZWcgYXVkaW8gcmVzYW1wbGluZyBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgewor CQl2bW92ZSAidXNyL2xpYi9saWJhdnJlc2FtcGxlLnNvLioiCisJfQorfQorCitsaWJhdmZvcm1h dDRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgZmlsZSBmb3JtYXQgbGlicmFyeSIK Kwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYXZmb3JtYXQuc28uKiIKKwl9 Cit9CisKK2xpYmF2dXRpbDRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgdXRpbGl0 eSBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJhdnV0aWwu c28uKiIKKwl9Cit9CisKK2xpYmF2ZmlsdGVyNF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZG bXBlZyBhdWRpby92aWRlbyBmaWx0ZXIgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1v dmUgInVzci9saWIvbGliYXZmaWx0ZXIuc28uKiIKKwl9Cit9CisKK2xpYnBvc3Rwcm9jNF9wYWNr YWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyB2aWRlbyBwb3N0cHJvY2Vzc2luZyBsaWJyYXJ5 IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJwb3N0cHJvYy5zby4qIgor CX0KK30KKworbGlic3dzY2FsZTRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgdmlk ZW8gc2NhbGluZyBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9s aWJzd3NjYWxlLnNvLioiCisJfQorfQorCitsaWJzd3Jlc2FtcGxlNF9wYWNrYWdlKCkgeworCXNo b3J0X2Rlc2M9IkZGbXBlZyB2aWRlbyByZXNhbXBsaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwo KSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYnN3cmVzYW1wbGUuc28uKiIKKwl9Cit9CisKK2ZmbXBl ZzQtZGV2ZWxfcGFja2FnZSgpIHsKKwlkZXBlbmRzPSIKKwkJbGliYXZjb2RlYzQ+PSR7dmVyc2lv bn1fJHtyZXZpc2lvbn0KKwkJbGliYXZkZXZpY2U0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJ CWxpYmF2Zm9ybWF0ND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJhdnV0aWw0Pj0ke3Zl cnNpb259XyR7cmV2aXNpb259CisJCWxpYmF2ZmlsdGVyND49JHt2ZXJzaW9ufV8ke3JldmlzaW9u fQorCQlsaWJwb3N0cHJvYzQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGlic3dzY2FsZTQ+ PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGlic3dyZXNhbXBsZTQ+PSR7dmVyc2lvbn1fJHty ZXZpc2lvbn0KKwkJbGliYXZyZXNhbXBsZTQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJc2hv cnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgorCWNvbmZsaWN0cz0iZmZtcGVnLWRldmVs IgorCWlmIFsgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiA9ICJpNjg2IiBdOyB0aGVuCisJCSMgL3Vz ci9iaW4vc3RyaXA6IGVycm9yOiB0aGUgaW5wdXQgZmlsZSAnL2Rlc3RkaXIvL2ZmbXBlZy1kZXZl bC00LjQuNC91c3IvbGliL2xpYmF2ZmlsdGVyLmEodmZfYXRhZGVub2lzZS5vKScgaGFzIG5vIHNl Y3Rpb25zCisJCW5vc3RyaXBfZmlsZXM9Ii91c3IvbGliL2xpYmF2ZmlsdGVyLmEiCisJZmkKKwlw a2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2luY2x1ZGUKKwkJdm1vdmUgdXNyL2xpYi9wa2dj b25maWcKKwkJdm1vdmUgInVzci9saWIvKi5hIgorCQl2bW92ZSAidXNyL2xpYi8qLnNvIgorCQl2 bW92ZSB1c3Ivc2hhcmUvZmZtcGVnL2V4YW1wbGVzCisJCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFu MworCX0KK30KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZjb2RlYzQgYi9zcmNwa2dzL2xpYmF2 Y29kZWM0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRl N2M2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2Y29kZWM0CkBAIC0wLDAgKzEg QEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNw a2dzL2xpYmF2ZGV2aWNlNCBiL3NyY3BrZ3MvbGliYXZkZXZpY2U0Cm5ldyBmaWxlIG1vZGUgMTIw MDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL2xpYmF2ZGV2aWNlNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdmZpbHRlcjQgYi9zcmNw a2dzL2xpYmF2ZmlsdGVyNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAw Li44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdmZpbHRlcjQK QEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGliYXZmb3JtYXQ0IGIvc3JjcGtncy9saWJhdmZvcm1hdDQKbmV3IGZp bGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZmb3JtYXQ0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2cmVz YW1wbGU0IGIvc3JjcGtncy9saWJhdnJlc2FtcGxlNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRl eCAwMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9saWJhdnJlc2FtcGxlNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdnV0aWw0IGIvc3JjcGtncy9saWJh dnV0aWw0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRl N2M2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2dXRpbDQKQEAgLTAsMCArMSBA QAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvbGlicG9zdHByb2M0IGIvc3JjcGtncy9saWJwb3N0cHJvYzQKbmV3IGZpbGUgbW9kZSAxMjAw MDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvbGlicG9zdHByb2M0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYnN3cmVzYW1wbGU0IGIvc3Jj cGtncy9saWJzd3Jlc2FtcGxlNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAw MDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJzd3Jlc2Ft cGxlNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvc3JjcGtncy9saWJzd3NjYWxlNCBiL3NyY3BrZ3MvbGlic3dzY2FsZTQKbmV3 IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiZQotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGlic3dzY2FsZTQKQEAgLTAsMCArMSBAQAorZmZtcGVn NApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCkZyb20gOWVlNmZiODM3YTU0NGNhYjJiM2Qz M2Q3NWNjYTk2MTQyNDBiYWVmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAxOTo1OTowNCAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDA1LzExNV0gb3BlbmN2OiB1cGRhdGUgdG8gNC43LjAuCgotLS0K IGNvbW1vbi9zaGxpYnMgICAgICAgICAgIHwgMTA0ICsrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3Mvb3BlbmN2L3RlbXBsYXRlIHwgICA4ICsrLS0KIDIgZmls ZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvY29tbW9uL3NobGlicyBiL2NvbW1vbi9zaGxpYnMKaW5kZXggYTBiYWNkNDA5MTNjNS4uM2Q3 NjljZDQ0MjhmYSAxMDA2NDQKLS0tIGEvY29tbW9uL3NobGlicworKysgYi9jb21tb24vc2hsaWJz CkBAIC0yMDg1LDU4ICsyMDg1LDU4IEBAIGxpYmNhcHN0b25lLnNvLjUgY2Fwc3RvbmUtNS4wLjFf MQogbGliaGF2ZWdlLnNvLjIgbGliaGF2ZWdlZC0xLjkuMTFfMQogbGlibmloLnNvLjEgbGlibmlo LTEuMC4zXzEKIGxpYm5paC1kYnVzLnNvLjEgbGlibmloLTEuMC4zXzEKLWxpYm9wZW5jdl9xdWFs aXR5LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3JlZy5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9zdXJmYWNlX21hdGNoaW5nLnNvLjQwNiBsaWJvcGVuY3Yt NC42LjBfMQotbGlib3BlbmN2X3hwaG90by5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9w ZW5jdl9mcmVldHlwZS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mdXp6eS5z by40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9oZnMuc28uNDA2IGxpYm9wZW5jdi00 LjYuMF8xCi1saWJvcGVuY3ZfaW1nX2hhc2guc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJv cGVuY3ZfbGluZV9kZXNjcmlwdG9yLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2 X3NhbGllbmN5LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3N0cnVjdHVyZWRf bGlnaHQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfYXJ1Y28uc28uNDA2IGxp Ym9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfYmdzZWdtLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBf MQotbGlib3BlbmN2X2Jpb2luc3BpcmVkLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X2NjYWxpYi5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mYWNlLnNvLjQw NiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3RyYWNraW5nLnNvLjQwNiBsaWJvcGVuY3Yt NC42LjBfMQotbGlib3BlbmN2X3hmZWF0dXJlczJkLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X29wdGZsb3cuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfeGlt Z3Byb2Muc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfcGxvdC5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl90ZXh0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X21sLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X29iamRldGVj dC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9kbm4uc28uNDA2IGxpYm9wZW5j di00LjYuMF8xCi1saWJvcGVuY3Zfc2hhcGUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJv cGVuY3Zfc3RpdGNoaW5nLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3Bob3Rv LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3ZpZGVvLnNvLjQwNiBsaWJvcGVu Y3YtNC42LjBfMQotbGlib3BlbmN2X2NhbGliM2Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1s aWJvcGVuY3ZfZmVhdHVyZXMyZC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9m bGFubi5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9oaWdoZ3VpLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3ZpZGVvaW8uc28uNDA2IGxpYm9wZW5jdi00LjYu MF8xCi1saWJvcGVuY3ZfaW1nY29kZWNzLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X2ltZ3Byb2Muc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfY29yZS5zby40 MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9zdXBlcnJlcy5zby40MDYgbGlib3BlbmN2 LTQuNi4wXzEKLWxpYm9wZW5jdl92aWRlb3N0YWIuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1s aWJvcGVuY3ZfZ2FwaS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94b2JqZGV0 ZWN0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2RhdGFzZXRzLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Rubl9vYmpkZXRlY3Quc28uNDA2IGxpYm9wZW5j di00LjYuMF8xCi1saWJvcGVuY3ZfZG5uX3N1cGVycmVzLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBf MQotbGlib3BlbmN2X2RwbS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9waGFz ZV91bndyYXBwaW5nLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3N0ZXJlby5z by40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9yYXBpZC5zby40MDYgbGlib3BlbmN2 LTQuNi4wXzEKLWxpYm9wZW5jdl9pbnRlbnNpdHlfdHJhbnNmb3JtLnNvLjQwNiBsaWJvcGVuY3Yt NC42LjBfMQotbGlib3BlbmN2X2FscGhhbWF0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGli b3BlbmN2X2JhcmNvZGUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfbWNjLnNv LjQwNiBsaWJvcGVuY3YtNC42LjBfMQorbGlib3BlbmN2X3F1YWxpdHkuc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3ZfcmVnLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X3N1cmZhY2VfbWF0Y2hpbmcuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zf eHBob3RvLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ZyZWV0eXBlLnNvLjQw NyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Z1enp5LnNvLjQwNyBsaWJvcGVuY3YtNC43 LjBfMQorbGlib3BlbmN2X2hmcy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9p bWdfaGFzaC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9saW5lX2Rlc2NyaXB0 b3Iuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfc2FsaWVuY3kuc28uNDA3IGxp Ym9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfc3RydWN0dXJlZF9saWdodC5zby40MDcgbGlib3Bl bmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9hcnVjby5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xp Ym9wZW5jdl9iZ3NlZ20uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYmlvaW5z cGlyZWQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfY2NhbGliLnNvLjQwNyBs aWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ZhY2Uuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8x CitsaWJvcGVuY3ZfdHJhY2tpbmcuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zf eGZlYXR1cmVzMmQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfb3B0Zmxvdy5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl94aW1ncHJvYy5zby40MDcgbGlib3Bl bmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9wbG90LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X3RleHQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfbWwuc28uNDA3 IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfb2JqZGV0ZWN0LnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X2Rubi5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5j dl9zaGFwZS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zdGl0Y2hpbmcuc28u NDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfcGhvdG8uc28uNDA3IGxpYm9wZW5jdi00 LjcuMF8xCitsaWJvcGVuY3ZfdmlkZW8uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVu Y3ZfY2FsaWIzZC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mZWF0dXJlczJk LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ZsYW5uLnNvLjQwNyBsaWJvcGVu Y3YtNC43LjBfMQorbGlib3BlbmN2X2hpZ2hndWkuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3ZfdmlkZW9pby5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9pbWdj b2RlY3Muc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfaW1ncHJvYy5zby40MDcg bGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9jb3JlLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBf MQorbGlib3BlbmN2X3N1cGVycmVzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2 X3ZpZGVvc3RhYi5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9nYXBpLnNvLjQw NyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3hvYmpkZXRlY3Quc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3ZfZGF0YXNldHMuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3ZfZG5uX29iamRldGVjdC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5j dl9kbm5fc3VwZXJyZXMuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZHBtLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3BoYXNlX3Vud3JhcHBpbmcuc28uNDA3 IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfc3RlcmVvLnNvLjQwNyBsaWJvcGVuY3YtNC43 LjBfMQorbGlib3BlbmN2X3JhcGlkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2 X2ludGVuc2l0eV90cmFuc2Zvcm0uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zf YWxwaGFtYXQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYmFyY29kZS5zby40 MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9tY2Muc28uNDA3IGxpYm9wZW5jdi00Ljcu MF8xCiBsaWJ1bmljb25mLnNvLjQuNiB3dnN0cmVhbXMtNC42LjFfMjAKIGxpYnd2YmFzZS5zby40 LjYgd3ZzdHJlYW1zLTQuNi4xXzIwCiBsaWJ3dnV0aWxzLnNvLjQuNiB3dnN0cmVhbXMtNC42LjFf MjAKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbmN2L3RlbXBsYXRlIGIvc3JjcGtncy9vcGVuY3Yv dGVtcGxhdGUKaW5kZXggYWVhNGJmYzNhMjY1Yy4uY2U5NGRlOTQyNGQxOCAxMDA2NDQKLS0tIGEv c3JjcGtncy9vcGVuY3YvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVuY3YvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVuY3YnCiBwa2duYW1lPW9wZW5j dgotdmVyc2lvbj00LjYuMAotcmV2aXNpb249NgordmVyc2lvbj00LjcuMAorcmV2aXNpb249MQog Y3JlYXRlX3dya3NyYz15ZXMKIGJ1aWxkX3dya3NyYz0ke3BrZ25hbWV9LSR7dmVyc2lvbn0KIGJ1 aWxkX3N0eWxlPWNtYWtlCkBAIC0yNCw4ICsyNCw4IEBAIGhvbWVwYWdlPSJodHRwczovL29wZW5j di5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2L3dpa2kv Q2hhbmdlTG9nIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi9h cmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6CiAgaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVu Y3ZfY29udHJpYi9hcmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6PmNvbnRyaWIudGFyLmd6IgotY2hl Y2tzdW09IjFlYzFjYmE2NWY5ZjIwZmU1YTQxZmRhMTU4NmUwMWM3MGVhMGM5YTZkN2I2N2M5ZTEz ZWRmMGNmZTIyMzkyNzcKLSAxNzc3ZDVmZDJiNTkwMjljZjUzN2U1ZmQ2ZjhhYTY4ZDcwNzA3NTgy MmY5MGJkZTY4M2ZjZGUwODZmODVmN2E3IgorY2hlY2tzdW09IjhkZjAwNzljZGJlMTc5NzQ4YTE4 ZDQ0NzMxYWY2MmEyNDVhNDVlYmY1MDg1MjIzZGMwMzEzMzk1NGM2NjI5NzMKKyA0MmRmODQwY2Y5 MDU1ZTU5ZDBlMjJjMjQ5Y2ZiMTlmMDQ3NDNlMWJkYWQxMTNkMzFiMTU3M2QzOTM0ZDYyNTg0Igog cGF0Y2hfYXJncz0iLU5wMSAtZCAke2J1aWxkX3dya3NyY30iCiAjIHRlc3RzIGhhbmcgaW5kZW5m aW5pdGVseSwgZXZlbiB3aXRoIHRlc3QgZGF0YSBpbmNsdWRlZAogbWFrZV9jaGVjaz1ubwoKRnJv bSA4MzZiOTRiOTQ0OGU2NDhmYzQzYmVjZmJiODNmOGY3YzEzY2EyOGU5IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDE5OjU5OjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDYvMTE1XSBhY3Rpb25h OiByZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0tLQogc3JjcGtncy9hY3Rpb25hL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9hY3Rpb25hL3RlbXBsYXRlIGIvc3JjcGtncy9hY3Rpb25hL3Rl bXBsYXRlCmluZGV4IGNmNWYwYjdhMmFlNjEuLjBkODk5MzExZTZkZjcgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhY3Rpb25hJwogcGtnbmFtZT1hY3Rp b25hCiB2ZXJzaW9uPTMuMTAuMQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9 cW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSJQS0dDT05GSUdfT1BFTkNWPW9wZW5jdjQiCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LXBsdWdpbi1teXNxbCBxdDUtcW1ha2UgcXQ1LWhvc3Qt dG9vbHMiCgpGcm9tIDA0OGQyMTExNmExNDI3Yjk1NjVhYWE5MzMxMTQ1YWJmOWQ5MWQ4OWUgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNy8x MTVdIHFpbWd2OiByZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0tLQogc3JjcGtncy9xaW1ndi90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUgYi9zcmNwa2dzL3FpbWd2 L3RlbXBsYXRlCmluZGV4IDdlYjMwZGIzMzk5MmMuLmRkMzQxZGZlMWJmY2UgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3FpbWd2JwogcGtnbmFtZT1xaW1ndgog dmVyc2lvbj0xLjAuMgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UK IGNvbmZpZ3VyZV9hcmdzPSIkKHZvcHRfaWYgdmlkZW8gLURWSURFT19TVVBQT1JUPU9OIC1EVklE RU9fU1VQUE9SVD1PRkYpCiAgJCh2b3B0X2lmIHNjYWxlIC1ET1BFTkNWX1NVUFBPUlQ9T04gLURP UEVOQ1ZfU1VQUE9SVD1PRkYpCgpGcm9tIDQ5ZDAwZDUzMzRjYjcxN2U3Zjk0N2VhMmI0YmIzZGUx MWEzMWFkMDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDog W1BBVENIIDAwOC8xMTVdIHJldHJvc2hhcmU6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0t CiBzcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JldHJvc2hh cmUvdGVtcGxhdGUgYi9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKaW5kZXggYmIxNzU2OTI3 N2E3Zi4uNDllMmMxY2JlOGE1MyAxMDA2NDQKLS0tIGEvc3JjcGtncy9yZXRyb3NoYXJlL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvcmV0cm9zaGFyZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ3JldHJvc2hhcmUnCiBwa2duYW1lPXJldHJvc2hhcmUKIHZlcnNp b249MC42LjYKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPXFtYWtlCiAjWFhY IGJyb2FkY2FzdCBmZWF0dXJlIHJlcXVpcmVzIGFuIGFuY2llbnQgdWRwLWRpc2NvdmVyeS1jcHAg d2hpY2ggZWl0aGVyIG5lZWRzCiAjIHRvIGJlIGZldGNoZWQrcGF0Y2hlZCAoRlRCRlMpIGhlcmUg b3IgcGFja2FnZWQgOi8KCkZyb20gZWNlZDUwYzkwY2EyMTRlMmE0MjNlOGI4MmQ5ZGYzN2IxY2I0 ZjU2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDA5LzExNV0gd2FpZnUyeC1jb252ZXJ0ZXItY3BwOiByZXZidW1wIGZvciBvcGVuY3YtNC43 LjAKCi0tLQogc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL3dhaWZ1MngtY29udmVydGVyLWNwcC90ZW1wbGF0ZSBiL3NyY3BrZ3Mvd2FpZnUy eC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRlCmluZGV4IDM2MWI4YTIzYjk0OTcuLmM1YWMxN2ViNTRl YTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnd2FpZnUyeC1jb252ZXJ0ZXItY3BwJwogcGtnbmFtZT13 YWlmdTJ4LWNvbnZlcnRlci1jcHAKIHZlcnNpb249NS4yLjQKLXJldmlzaW9uPTIKK3JldmlzaW9u PTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURJTlNUQUxMX01PREVMUz1P TiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gMzQxNmY0MTU5NmZiOTI4NGMw YzA3Nzc0Njk5MTcyY2MwNWZiMTcyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMDozOCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDEwLzExNV0gdmxjOiByZXZidW1wIGZvciBmZm1wZWc0LTQu NC4zCgotLS0KIHNyY3BrZ3MvdmxjL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy92bGMvdGVt cGxhdGUgYi9zcmNwa2dzL3ZsYy90ZW1wbGF0ZQppbmRleCBjNmU3Mjc1YjUxNGM0Li42ODFmMmMz YmMwODI3IDEwMDY0NAotLS0gYS9zcmNwa2dzL3ZsYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Zs Yy90ZW1wbGF0ZQpAQCAtMjUsNyArMjUsNyBAQCBsaWIzMmRpc2FibGVkPXllcwogaG9zdG1ha2Vk ZXBlbmRzPSJhdXRvbWFrZSBsaWJ0b29sIHBrZy1jb25maWcgZmxleCBnZXR0ZXh0IGxpYmdjcnlw dC1kZXZlbAogIGxpdmU1NTUtZGV2ZWwgZ2V0dGV4dC1kZXZlbCAkKHZvcHRfaWYgbHVhIGx1YTUy KSAkKHZvcHRfaWYgY2hyb21lY2FzdCBwcm90b2J1ZikiCiBtYWtlZGVwZW5kcz0iCi0gYXZhaGkt bGlicy1kZXZlbCBkYnVzLWdsaWItZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWVm b250LXR0ZgorIGF2YWhpLWxpYnMtZGV2ZWwgZGJ1cy1nbGliLWRldmVsIGZhYWQyLWRldmVsIGZm bXBlZzQtZGV2ZWwgZnJlZWZvbnQtdHRmCiAgZ251dGxzLWRldmVsIGphY2stZGV2ZWwgbGliYTUy LWRldmVsIGxpYmFzcy1kZXZlbCBsaWJibHVyYXktZGV2ZWwKICBsaWJjZGlvLWRldmVsIGxpYmRj YS1kZXZlbCBsaWJkdmJwc2ktZGV2ZWwgbGliZHZkbmF2LWRldmVsIGxpYm1hZC1kZXZlbAogIGxp Ym1hdHJvc2thLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgbGlibXBjZGVjLWRldmVsIGxpYm1wZWcy LWRldmVsCgpGcm9tIDg4YTExYmRhMGU5OWI5MmQ0YWZjOGU5MjY0OWE1NTZhMDZhMGUwYzkgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDA6NTUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMS8x MTVdIG9zZzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL29zZy90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlIGIvc3JjcGtncy9vc2cvdGVtcGxh dGUKaW5kZXggYTllYmJkMjg3OTMzYi4uNzU1NzkzZjdlMTFiZiAxMDA2NDQKLS0tIGEvc3JjcGtn cy9vc2cvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vc2cvdGVtcGxhdGUKQEAgLTgsNyArOCw3IEBA IGJ1aWxkX2hlbHBlcj0icWVtdSIKIGNvbmZpZ3VyZV9hcmdzPSItRExJQl9QT1NURklYPSIKIGhv c3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyB4cmFuZHIiCiBtYWtlZGVwZW5kcz0iTWVzYUxpYi1k ZXZlbCBndGtnbGV4dC1kZXZlbCBsaWJjdXJsLWRldmVsIGdpZmxpYi1kZXZlbCBsaWJyc3ZnLWRl dmVsCi0gamFzcGVyLWRldmVsIHRpZmYtZGV2ZWwgbGliZ2RhbC1kZXZlbCBsaWJndGEtZGV2ZWwg ZmZtcGVnLWRldmVsIHhpbmUtbGliLWRldmVsCisgamFzcGVyLWRldmVsIHRpZmYtZGV2ZWwgbGli Z2RhbC1kZXZlbCBsaWJndGEtZGV2ZWwgZmZtcGVnNC1kZXZlbCB4aW5lLWxpYi1kZXZlbAogIFNE TDItZGV2ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwKICAkKHZvcHRfaWYgb3BlbmV4ciBsaWJv cGVuZXhyLWRldmVsKQogICQodm9wdF9pZiBwb3BwbGVyIHBvcHBsZXItZ2xpYi1kZXZlbCkKCkZy b20gMzA1Mjg4ZDFkYWY4YTEzOTljZjFlOTI4ZGM0NWQ5YmM3YzI5Y2UyMCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMToxMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDEyLzExNV0geGluZS1s aWI6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy94aW5lLWxpYi90ZW1w bGF0ZSB8IDggKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZSBiL3NyY3Br Z3MveGluZS1saWIvdGVtcGxhdGUKaW5kZXggM2JlNGQwOGVhYzc3YS4uZWQ2MTk0YzE3ZDExZSAx MDA2NDQKLS0tIGEvc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3hpbmUt bGliL3RlbXBsYXRlCkBAIC0xLDE0ICsxLDE0IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd4aW5l LWxpYicKIHBrZ25hbWU9eGluZS1saWIKLXZlcnNpb249MS4yLjEyCi1yZXZpc2lvbj0zCit2ZXJz aW9uPTEuMi4xMworcmV2aXNpb249MQogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmln dXJlX2FyZ3M9Ii0tZGlzYWJsZS12Y2QgLS1kaXNhYmxlLWdub21ldmZzIC0td2l0aG91dC1lc291 bmQgLS1kaXNhYmxlLWR4cjMKICAtLWRpc2FibGUtb3NzIgogaG9zdG1ha2VkZXBlbmRzPSJhdXRv bWFrZSBnZXR0ZXh0LWRldmVsIGxpYnRvb2wgcGtnLWNvbmZpZyBwZXJsIgogbWFrZWRlcGVuZHM9 IgogIHpsaWItZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGlieGNiLWRldmVsIGxpYlNNLWRldmVsIGxp YlhleHQtZGV2ZWwgbGliWHYtZGV2ZWwKLSBsaWJYdk1DLWRldmVsIGxpYmE1Mi1kZXZlbCBsaWJt YWQtZGV2ZWwgZmZtcGVnLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKKyBsaWJYdk1DLWRldmVsIGxp YmE1Mi1kZXZlbCBsaWJtYWQtZGV2ZWwgZmZtcGVnNC1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCiAg amFjay1kZXZlbCBzYW1iYS1kZXZlbCBsaWJmbGFjLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgbGli bXBjZGVjLWRldmVsCiAgc3BlZXgtZGV2ZWwgbGlidGhlb3JhLWRldmVsIGxpYnZvcmJpcy1kZXZl bCBsaWJkY2EtZGV2ZWwgZmFhZDItZGV2ZWwKICBsaWJjZGlvLWRldmVsIGxpYmJsdXJheS1kZXZl bCBhYWxpYi1kZXZlbCBsaWJjYWNhLWRldmVsIGxpYlhpbmVyYW1hLWRldmVsCkBAIC0xOSw3ICsx OSw3IEBAIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIsIExHUEwtMi4wLW9yLWxhdGVyIgogaG9t ZXBhZ2U9Imh0dHA6Ly93d3cueGluZS1wcm9qZWN0Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9z b3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMveGluZS9maWxlcy94aW5lLWxpYi8ke3ZlcnNpb259L1JF QURNRS50eHQvdmlldyIKIGRpc3RmaWxlcz0iJHtTT1VSQ0VGT1JHRV9TSVRFfS94aW5lLyR7cGtn bmFtZX0tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT1kNjA2MjcwNDY4ZTE1NDBjMmE4OWMw ZDdmNWZkZjExZTE3ZWNjMGMyNjk4Y2MwYmNiMTA2NWZmMjZhYmVlMDk4CitjaGVja3N1bT01ZjEw ZDZkNzE4YTRhNTFjMTdlZDFiMzJiMDMxZDRmOWI4MGIwNjFlODI3NjUzNWIyYmUzMWU1YWM0Yjc1 ZTZmCiAKIGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgogCWk2ODYtbXVzbCkKCkZyb20g Y2IwNGY2YzY0NWQ3NjBlOTk2Nzk2YmRiZTA4ZTM0MWNhNzEwZDg1MCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDEzLzExNV0gYXJjYW46IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9hcmNhbi90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvYXJjYW4vdGVtcGxhdGUgYi9zcmNwa2dzL2FyY2FuL3RlbXBsYXRlCmluZGV4 IGVmZDBhZmUxMDU3NmQuLmI5MWU2OTAwZDQyYTEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXJjYW4v dGVtcGxhdGUKKysrIGIvc3JjcGtncy9hcmNhbi90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKICMg ISEga2VlcCBzeW5jZWQgd2l0aDogYWNmZ2ZzIGFjbGlwIGFsb2FkaW1hZ2UKIHBrZ25hbWU9YXJj YW4KIHZlcnNpb249MC42LjIuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogY3JlYXRlX3dya3Ny Yz15ZXMKIGJ1aWxkX3dya3NyYz1hcmNhbi9zcmMKIGJ1aWxkX3N0eWxlPWNtYWtlCgpGcm9tIDdl MWNlMTE5OGYyMjBiOTZmMzMzMDU3MGFkOTgzOTAwZDkxZDQ2NjcgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNC8xMTVdIGF0dHJhY3Q6IHJl dmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlIHwg NCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXR0cmFjdC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXR0cmFjdC90 ZW1wbGF0ZQppbmRleCAyNjE0NGU5MzFhM2M3Li5lNzYwYmYwZDE4YWVjIDEwMDY0NAotLS0gYS9z cmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlCkBA IC0xLDEyICsxLDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhdHRyYWN0JwogcGtnbmFtZT1h dHRyYWN0CiB2ZXJzaW9uPTIuNi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHls ZT1nbnUtbWFrZWZpbGUKIG1ha2VfYnVpbGRfYXJncz0iVkVSQk9TRT0xIgogbWFrZV91c2VfZW52 PXllcwogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9IlNGTUwtZGV2 ZWwgZmZtcGVnLWRldmVsIGZvbnRjb25maWctZGV2ZWwgZ2x1LWRldmVsIGxpYmFyY2hpdmUtZGV2 ZWwKK21ha2VkZXBlbmRzPSJTRk1MLWRldmVsIGZmbXBlZzQtZGV2ZWwgZm9udGNvbmZpZy1kZXZl bCBnbHUtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbAogIGxpYmN1cmwtZGV2ZWwgbGlianBlZy10dXJi by1kZXZlbCB4aW5lLWxpYiByYXBpZGpzb24gbGliWHJhbmRyLWRldmVsIgogZGVwZW5kcz0iZ2l0 Igogc2hvcnRfZGVzYz0iQXR0cmFjdC1Nb2RlIGlzIGEgZ3JhcGhpY2FsIGZyb250ZW5kIGZvciBl bXVsYXRvcnMiCgpGcm9tIDliNjQ2NjgyYWQwNzQwNzIxOGI4ZTZjYmQzNDYwOGQ3ODhlYjcwMTgg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAx NS8xMTVdIGF1YmlvOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYXViaW8v cGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgMjUgKysrKysrKysrKysrKysrKysrKysrKysrKwogc3Jj cGtncy9hdWJpby90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2Vk LCAyNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9hdWJpby9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1 YmlvL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvYXViaW8vcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmFhY2U0MWE2 ZTZkOWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2F1YmlvL3BhdGNoZXMvZmZtcGVnNS5w YXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIDhhMDU0MjBlNWRkOGM3YjhiMjQ0N2Y4MmRjOTE5 NzY1ODc2NTExYjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEJyb3NzaWVy IDxwaWVtQHBpZW0ub3JnPgorRGF0ZTogVHVlLCAyNSBKYW4gMjAyMiAxODozMDoyNyArMDEwMAor U3ViamVjdDogW1BBVENIXSBbc291cmNlX2F2Y29kZWNdIGRlZmluZSBGRl9BUElfTEFWRl9BVkNU WCBmb3IgbGliYXZjb2RlYyA+CisgNTksIHRoeCBAYmVyb2xpbnV4IChjbG9zZXMgZ2gtMzUzKQor CistLS0KKyBzcmMvaW8vc291cmNlX2F2Y29kZWMuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2Vk LCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9pby9zb3VyY2VfYXZjb2RlYy5j IGIvc3JjL2lvL3NvdXJjZV9hdmNvZGVjLmMKK2luZGV4IGUwYWU5M2I1Li4xNDIxYmQ5YSAxMDA2 NDQKKy0tLSBhL3NyYy9pby9zb3VyY2VfYXZjb2RlYy5jCisrKysgYi9zcmMvaW8vc291cmNlX2F2 Y29kZWMuYworQEAgLTY4LDYgKzY4LDEwIEBACisgI2RlZmluZSBBVUJJT19BVkNPREVDX01BWF9C VUZGRVJfU0laRSBBVl9JTlBVVF9CVUZGRVJfTUlOX1NJWkUKKyAjZW5kaWYKKyAKKysjaWYgTElC QVZDT0RFQ19WRVJTSU9OX01BSk9SID49IDU5CisrI2RlZmluZSBGRl9BUElfTEFWRl9BVkNUWCAx CisrI2VuZGlmCisrCisgc3RydWN0IF9hdWJpb19zb3VyY2VfYXZjb2RlY190IHsKKyAgIHVpbnRf dCBob3Bfc2l6ZTsKKyAgIHVpbnRfdCBzYW1wbGVyYXRlOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9h dWJpby90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXViaW8vdGVtcGxhdGUKaW5kZXggYWQxYzRiMjU2OTkx Ny4uN2Q4NzVjYzAyNTQxYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9hdWJpby90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL2F1YmlvL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnYXViaW8nCiBwa2duYW1lPWF1YmlvCiB2ZXJzaW9uPTAuNC45Ci1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT13YWYzCiAjIFhYWCBsYXNoLCBwdXJlIGFuZCBzd2lnIHN1 cHBvcnQuCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgdHh0Mm1hbiIKCkZyb20gNjMwMTI1 M2FiMzc1M2I0NmFmYjg0MzJjODNiYzU0YWY5ZDg2MzI1ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE2LzExNV0gYXVkYWNpb3VzLXBsdWdp bnM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL2F1ZGFjaW91cy1wbHVnaW5zL3Bh dGNoZXMvZmZtcGVnNS5wYXRjaCAgIHwgNDMgKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9h dWRhY2lvdXMtcGx1Z2lucy90ZW1wbGF0ZSAgICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hh bmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9z cmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi40ZTVlMzQwOTlkNzFjCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gK QEAgLTAsMCArMSw0MyBAQAorY29tbWl0IDI5OGFhMzcxYzU2YzJmNTJjMjVhMzNkOWJkZWM0OTE4 YjExY2ViZGMKK0F1dGhvcjogdGliZXF1YWRvcmlhbiA8dGliZXF1YWRvcmlhbkBwb3N0ZW8uZGU+ CitEYXRlOiAgIFNhdCBNYXIgMTkgMTg6NDA6MTIgMjAyMiArMDEwMAorCisgICAgYXVkYWNpb3Vz LXBsdWdpbnM6IHJlYnVpbGQgYWdhaW5zdCBmZm1wZWctNS4wCisKK2RpZmYgLS1naXQgYS9zcmNw a2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnLTUuMC5wYXRjaCBiL3NyY3BrZ3Mv YXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWctNS4wLnBhdGNoCituZXcgZmlsZSBtb2Rl IDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNjE3YzExMjE1YgorLS0tIC9kZXYvbnVsbAorKysr IGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZy01LjAucGF0Y2gKK0BA IC0wLDAgKzEsMzEgQEAKKytGcm9tIGY2MGJlYjQwMGVlYjFlNDc3OGJiZmQ3MzhiYzRhNGNjZWYz ZGU1MzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCisrRnJvbTogSm9obiBMaW5kZ3JlbiA8am9o bkBqbGluZGdyZW4ubmV0PgorK0RhdGU6IFNhdCwgNSBNYXIgMjAyMiAxMjowNTozNCAtMDUwMAor K1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggRkZtcGVnIDUuMAorKworKy0tLQorKyBz cmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUuY2MgfCA0ICsrLS0KKysgMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKysKKytkaWZmIC0tZ2l0IGEvc3JjL2ZmYXVk aW8vZmZhdWRpby1jb3JlLmNjIGIvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisraW5kZXgg MTZkYzYzZTNhLi5hMmI5NWZkNmMgMTAwNjQ0CisrLS0tIGEvc3JjL2ZmYXVkaW8vZmZhdWRpby1j b3JlLmNjCisrKysrIGIvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisrQEAgLTI3NCw3ICsy NzQsNyBAQCBzdGF0aWMgQVZJbnB1dEZvcm1hdCAqIGdldF9mb3JtYXRfYnlfY29udGVudCAoY29u c3QgY2hhciAqIG5hbWUsIFZGU0ZpbGUgJiBmaWxlKQorKyAgICAgICAgIEFWUHJvYmVEYXRhIGQg PSB7bmFtZSwgYnVmLCBmaWxsZWR9OworKyAgICAgICAgIHNjb3JlID0gdGFyZ2V0OworKyAKKyst ICAgICAgICBmID0gYXZfcHJvYmVfaW5wdXRfZm9ybWF0MiAoJiBkLCB0cnVlLCAmIHNjb3JlKTsK KysrICAgICAgICBmID0gKEFWSW5wdXRGb3JtYXQgKikgYXZfcHJvYmVfaW5wdXRfZm9ybWF0MiAo JiBkLCB0cnVlLCAmIHNjb3JlKTsKKysgICAgICAgICBpZiAoZikKKysgICAgICAgICAgICAgYnJl YWs7CisrIAorK0BAIC0zNDcsNyArMzQ3LDcgQEAgc3RhdGljIGJvb2wgZmluZF9jb2RlYyAoQVZG b3JtYXRDb250ZXh0ICogYywgQ29kZWNJbmZvICogY2luZm8pCisrICNlbmRpZgorKyAgICAgICAg IGlmIChzdHJlYW0gJiYgc3RyZWFtLT5jb2RlY3BhciAmJiBzdHJlYW0tPmNvZGVjcGFyLT5jb2Rl Y190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTykKKysgICAgICAgICB7CisrLSAgICAgICAgICAg IEFWQ29kZWMgKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyIChzdHJlYW0tPmNvZGVjcGFy LT5jb2RlY19pZCk7CisrKyAgICAgICAgICAgIEFWQ29kZWMgKiBjb2RlYyA9IChBVkNvZGVjICop IGF2Y29kZWNfZmluZF9kZWNvZGVyIChzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrIAor KyAgICAgICAgICAgICBpZiAoY29kZWMpCisrICAgICAgICAgICAgIHsKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUgYi9zcmNwa2dzL2F1ZGFjaW91cy1wbHVn aW5zL3RlbXBsYXRlCmluZGV4IDA1ZTUzYTlhZGY3OGYuLjRiMTk2OGUwM2RlNzggMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdWRh Y2lvdXMtcGx1Z2lucy90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKICNLZWVwIGluIHN5bmMgd2l0 aCBhdWRhY2lvdXMhCiBwa2duYW1lPWF1ZGFjaW91cy1wbHVnaW5zCiB2ZXJzaW9uPTQuMy4xCi1y ZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9 IiQodm9wdF9ib29sIGd0azMgZ3RrKSAkKHZvcHRfYm9vbCBndGszKQogICQodm9wdF9ib29sIHF0 KSAkKHZvcHRfYm9vbCBxdCBxdDYpIgoKRnJvbSAwNGJlMDIyYzU3NmI5NzEwOTE1YzRlNTg3OGNh Y2E5M2RhODVhOTU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMTcvMTE1XSBhdWRhY2l0eTogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoK LS0tCiBzcmNwa2dzL2F1ZGFjaXR5L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdWRhY2l0 eS90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKaW5kZXggN2E4ZTc5ZWE1MzBj ZC4uZGYyNmRiMWMxNTg3MyAxMDA2NDQKLS0tIGEvc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2F1ZGFjaXR5L3RlbXBsYXRlCkBAIC0xMCw3ICsxMCw3IEBAIGNvbmZpZ3Vy ZV9hcmdzPSItRGF1ZGFjaXR5X3VzZV9mZm1wZWc9bG9hZGVkIC1EYXVkYWNpdHlfbGliX3ByZWZl cmVuY2U9c3lzdGVtCiAgLURhdWRhY2l0eV9oYXNfdnN0Mz1ubyIKIGhvc3RtYWtlZGVwZW5kcz0i cGtnLWNvbmZpZyBnZXR0ZXh0IHB5dGhvbjMiCiBtYWtlZGVwZW5kcz0id3hXaWRnZXRzLWd0azMt ZGV2ZWwgZ3RrKzMtZGV2ZWwgZXhwYXQtZGV2ZWwgbGFtZS1kZXZlbAotIGxpYnNveHItZGV2ZWwg cG9ydGF1ZGlvLWRldmVsIHNxbGl0ZS1kZXZlbCBsaWJjdXJsLWRldmVsIGZmbXBlZy1kZXZlbAor IGxpYnNveHItZGV2ZWwgcG9ydGF1ZGlvLWRldmVsIHNxbGl0ZS1kZXZlbCBsaWJjdXJsLWRldmVs IGZmbXBlZzQtZGV2ZWwKICBsaWJpZDN0YWctZGV2ZWwgbGlibWFkLWRldmVsIHZhbXAtcGx1Z2lu LXNkay1kZXZlbCBsaWJvZ2ctZGV2ZWwKICBsaWJ2b3JiaXMtZGV2ZWwgbGliZmxhYy1kZXZlbCBs aWx2LWRldmVsIGx2MiBzZXJkLWRldmVsIHNvcmQtZGV2ZWwKICBzcmF0b20tZGV2ZWwgc3VpbC1k ZXZlbCBwb3J0bWlkaS1kZXZlbCBzb3VuZHRvdWNoLWRldmVsIHR3b2xhbWUtZGV2ZWwKCkZyb20g ZjI2OTE2YzdmYWQ4N2Y1YjU4YTllMmY4M2E5ZmQwMTYxYTEzZjUzZSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE4LzExNV0gYXZpZGVtdXg6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUgYi9zcmNwa2dzL2F2aWRlbXV4L3Rl bXBsYXRlCmluZGV4IDI1M2EwMjQzZTIyNTkuLjU1NzI4NTk4MmQyYjggMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F2aWRlbXV4JwogcGtnbmFtZT1h dmlkZW11eAogdmVyc2lvbj0yLjguMAotcmV2aXNpb249MgorcmV2aXNpb249MwogIyBDYW4ndCBi ZSBjb21waWxlZCBmb3IgYWFyY2g2NCwgYXJtKiBvciBtaXBzKgogYXJjaHM9Ing4Nl82NCogaTY4 NioiCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1 LWRldmVsIHRhciB5YXNtIgoKRnJvbSA2MjAzOGE1ZDg1MDY0MzcwMDI2ODRiNDBmYzhkNzU4Yjgx NmM5MzE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwMTkvMTE1XSBibGVuZGVyOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3MvYmxlbmRlci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JsZW5kZXIvdGVtcGxh dGUgYi9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUKaW5kZXggMDVmZGJmOGY3NDdlMi4uMDkzZDZk MjAwNGU5NSAxMDA2NDQKLS0tIGEvc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvYmxlbmRlci90ZW1wbGF0ZQpAQCAtOSw4ICs5LDggQEAgY29uZmlndXJlX2FyZ3M9Ii1EV0lU SF9JTlNUQUxMX1BPUlRBQkxFPU9GRiAtRFdJVEhfUFlUSE9OX0lOU1RBTEw9T0ZGCiAgLURXSVRI X0pBQ0s9T04gLURXSVRIX0NPREVDX0ZGTVBFRz1PTiAtRFdJVEhfQ09ERUNfU05ERklMRT1PTiAt RFdJVEhfT1BFTk1QPU9OCiAgLURXSVRIX0ZGVFczPU9OIC1EV0lUSF9NT0RfT0NFQU5TSU09T04g LURXSVRIX0NZQ0xFU19FTUJSRUU9T0ZGIC1EV0lUSF9PUEVOQ09MT1JJTz1PTgogIC1EV0lUSF9J TUFHRV9PUEVORVhSPU9OIC1EV0lUSF9JTUFHRV9PUEVOSlBFRz1PTiAtRFdJVEhfT1BFTlNVQkRJ Vj1PTgotIC1EV0lUSF9PUEVOQ09MTEFEQT1PTiAtRFdJVEhfU1lTVEVNX0dMRVc9T04gLURXSVRI X09QRU5WREI9T04gLURXSVRIX0FMRU1CSUM9T04KLSAtRFdJVEhfR0hPU1RfWDExPU9OIC1EV0lU SF9HSE9TVF9XQVlMQU5EPU9OIC1EV0lUSF9HSE9TVF9MSUJERUNPUj1PTgorIC1EV0lUSF9PUEVO Q09MTEFEQT1PTiAtRFdJVEhfT1BFTlZEQj1PTiAtRFdJVEhfQUxFTUJJQz1PTgorIC1EV0lUSF9H SE9TVF9YMTE9T04gLURXSVRIX0dIT1NUX1dBWUxBTkQ9T04gLURXSVRIX0dIT1NUX1dBWUxBTkRf TElCREVDT1I9T04KICAtRFdJVEhfQlVJTERJTkZPPU9GRiAtRFBZVEhPTl9WRVJTSU9OPSR7cHkz X3Zlcn0gLURQWVRIT05fTElCUEFUSD0vdXNyL2xpYgogIC1EUFlUSE9OX0xJQlJBUlk9cHl0aG9u JHtweTNfdmVyfSR7cHkzX2FiaXZlcn0gLURQWVRIT05fSU5DTFVERV9ESVJTPS8ke3B5M19pbmN9 CiAgLURXSVRIX1NZU1RFTV9MWk89T04gLURXSVRIX1NZU1RFTV9FSUdFTjM9T04gLURXSVRIX1NZ U1RFTV9GUkVFVFlQRT1PTiIKCkZyb20gMGMwOGIwMTA1ZWI3ZWUyNTc4ZTNmZTUxMTVkM2ZkYjJk YjM4ZDUyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDIwLzExNV0gY2FudGF0YTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNw a2dzL2NhbnRhdGEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NhbnRhdGEvdGVtcGxhdGUg Yi9zcmNwa2dzL2NhbnRhdGEvdGVtcGxhdGUKaW5kZXggNGI0MTdkODBkNWMyZC4uOGE5MGFhYTRj MDdhMiAxMDA2NDQKLS0tIGEvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv Y2FudGF0YS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Nh bnRhdGEnCiBwa2duYW1lPWNhbnRhdGEKIHZlcnNpb249Mi41LjAKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1 LXFtYWtlIHF0NS1ob3N0LXRvb2xzIHF0NS10b29scyIKIG1ha2VkZXBlbmRzPSJxdDUtZGV2ZWwg cXQ1LXRvb2xzLWRldmVsIHF0NS1zdmctZGV2ZWwgcXQ1LXhtbHBhdHRlcm5zLWRldmVsCgpGcm9t IDBjNTMwNzNjNjEwODY1MTQ2NzRhN2I1YzY0YzhjZGUzOTc2MDBiYzcgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyMS8xMTVdIGNjZXh0cmFj dG9yOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvY2NleHRyYWN0b3Iv dGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvY2NleHRyYWN0b3IvdGVtcGxhdGUKaW5kZXggOWFiY2Q4Mjg1MmIyNy4uNmVjY2FkNTg4 NWFmOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2NjZXh0cmFjdG9yL3RlbXBsYXRlCkBAIC0xLDEyICsxLDEyIEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdjY2V4dHJhY3RvcicKIHBrZ25hbWU9Y2NleHRyYWN0b3IKIHZlcnNpb249MC45Mwot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfd3Jrc3JjPSJsaW51eCIKIGJ1aWxkX3N0eWxl PWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1vY3IgLS1lbmFibGUtaGFy ZHN1YngiCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIHBrZy1jb25maWciCi1tYWtlZGVwZW5k cz0ibGVwdG9uaWNhLWRldmVsIHRlc3NlcmFjdC1vY3ItZGV2ZWwgZmZtcGVnLWRldmVsIgorbWFr ZWRlcGVuZHM9ImxlcHRvbmljYS1kZXZlbCB0ZXNzZXJhY3Qtb2NyLWRldmVsIGZmbXBlZzQtZGV2 ZWwiCiBzaG9ydF9kZXNjPSJFeHRyYWN0IHN1YnRpdGxlcyBmcm9tIHZpZGVvIHN0cmVhbXMiCiBt YWludGFpbmVyPSJuZXdibHVlbW9vbiA8YmxhdW1vbGNoQG1haWxib3gub3JnPiIKIGxpY2Vuc2U9 IkdQTC0yLjAtb3ItbGF0ZXIiCgpGcm9tIDJmM2M0NTQzNjNjNWU0ZTI5Y2Y5NWZiM2VjYzQ0NTBh NWFjNDk0YzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDog W1BBVENIIDAyMi8xMTVdIGNocm9tYXByaW50OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0K IHNyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgNTY5ICsrKysrKysr KysrKysrKysrKysrKysKIHNyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUgICAgICAgICAgICAg IHwgICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDU3MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJvbWFwcmludC9wYXRjaGVzL2ZmbXBl ZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9tYXByaW50L3BhdGNoZXMvZmZtcGVn NS5wYXRjaCBiL3NyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmE5ZmQzMDdhMjNjOGEKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2Nocm9tYXByaW50L3BhdGNoZXMvZmZtcGVnNS5wYXRjaApA QCAtMCwwICsxLDU2OSBAQAorRnJvbSA4Y2NhZDY5MzcxNzdiMWI5MmU0MGFiOGY0NDQ3ZWEyN2Jh YzAwOWE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0x1az1DMz1B MT1DNT1BMT0yMExhbGluc2s9QzM9QkQ/PSA8bGFsaW5za3lAZ21haWwuY29tPgorRGF0ZTogRnJp LCA0IE5vdiAyMDIyIDIxOjQ3OjM4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBGRm1wZWcg NS54ICgjMTIwKQorCisqIFVzZSBGRm1wZWcgNS4xLjIgZm9yIENJIGJ1aWxkcworCisqIEJ1aWxk IG9uIFVidW50dSAyMC4wNAorCisqIFVwZ3JhZGUgY29kZSB0byBGRm1wZWcgNS54IEFQSXMKKwor KiBPbmx5IHNldCBGRm1wZWcgaW5jbHVkZSBkaXJzIGlmIGJ1aWxkaW5nIHRvb2xzCisKKyogTm8g bG9uZ2VyIG5lZWRlZAorCisqIFVzZSB1YnVudHUgMjAuMDQKKy0tLQorIC5naXRodWIvd29ya2Zs b3dzL2J1aWxkLnltbCAgICAgICAgICAgICAgICAgICB8ICAgNiArLQorIENNYWtlTGlzdHMudHh0 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNiAtLQorIHBhY2thZ2UvYnVpbGQu c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQorIHNyYy9hdWRpby9mZm1w ZWdfYXVkaW9fcHJvY2Vzc29yLmggICAgICAgICAgICB8ICAgMiAtCisgc3JjL2F1ZGlvL2ZmbXBl Z19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oIHwgIDcyIC0tLS0tLS0KKyBzcmMvYXVkaW8v ZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmggfCAgMTggKy0KKyBzcmMvYXVkaW8v ZmZtcGVnX2F1ZGlvX3JlYWRlci5oICAgICAgICAgICAgICAgfCAxOTcgKysrKysrKysrLS0tLS0t LS0tCisgdGVzdHMvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2 ICsKKyA4IGZpbGVzIGNoYW5nZWQsIDEyMiBpbnNlcnRpb25zKCspLCAxOTkgZGVsZXRpb25zKC0p CisgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2 cmVzYW1wbGUuaAorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4 dAoraW5kZXggZjhkNmEzMi4uNGRhMjQwNSAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0Cisr KysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTg0LDkgKzg0LDYgQEAgZmluZF9wYWNrYWdlKEZGbXBl ZykKKyBpZihGRk1QRUdfTElCUkFSSUVTKQorIAljbWFrZV9wdXNoX2NoZWNrX3N0YXRlKFJFU0VU KQorIAlzZXQoQ01BS0VfUkVRVUlSRURfTElCUkFSSUVTICR7RkZNUEVHX0xJQlJBUklFU30gJHtD TUFLRV9USFJFQURfTElCU19JTklUfSAtbG0pCistCWNoZWNrX2Z1bmN0aW9uX2V4aXN0cyhhdl9w YWNrZXRfdW5yZWYgSEFWRV9BVl9QQUNLRVRfVU5SRUYpCistCWNoZWNrX2Z1bmN0aW9uX2V4aXN0 cyhhdl9mcmFtZV9hbGxvYyBIQVZFX0FWX0ZSQU1FX0FMTE9DKQorLQljaGVja19mdW5jdGlvbl9l eGlzdHMoYXZfZnJhbWVfZnJlZSBIQVZFX0FWX0ZSQU1FX0ZSRUUpCisgCWNtYWtlX3BvcF9jaGVj a19zdGF0ZSgpCisgZW5kaWYoKQorCitAQCAtMTYzLDE0ICsxNjAsMTEgQEAgbWVzc2FnZShTVEFU VVMgIlVzaW5nICR7RkZUX0xJQn0gZm9yIEZGVCBjYWxjdWxhdGlvbnMiKQorIGlmKE5PVCBBVURJ T19QUk9DRVNTT1JfTElCKQorIAlpZihGRk1QRUdfTElCU1dSRVNBTVBMRV9GT1VORCkKKyAJCXNl dChBVURJT19QUk9DRVNTT1JfTElCICJzd3Jlc2FtcGxlIikKKy0JZWxzZWlmKEZGTVBFR19MSUJB VlJFU0FNUExFX0ZPVU5EKQorLQkJc2V0KEFVRElPX1BST0NFU1NPUl9MSUIgImF2cmVzYW1wbGUi KQorIAllbmRpZigpCisgZW5kaWYoKQorCisgaWYoQVVESU9fUFJPQ0VTU09SX0xJQiBTVFJFUVVB TCAic3dyZXNhbXBsZSIpCisgCWlmKEZGTVBFR19MSUJTV1JFU0FNUExFX0ZPVU5EKQorLQkJc2V0 KFVTRV9BVlJFU0FNUExFIE9GRikKKyAJCXNldChVU0VfU1dSRVNBTVBMRSBPTikKKyAJCXNldChB VURJT19QUk9DRVNTT1JfTElCUkFSSUVTICR7RkZNUEVHX0xJQlNXUkVTQU1QTEVfTElCUkFSSUVT fSkKKyAJCXNldChBVURJT19QUk9DRVNTT1JfSU5DTFVERV9ESVJTICR7RkZNUEVHX0xJQlNXUkVT QU1QTEVfSU5DTFVERV9ESVJTfSkKK0BAIC0xNzgsMTYgKzE3Miw2IEBAIGlmKEFVRElPX1BST0NF U1NPUl9MSUIgU1RSRVFVQUwgInN3cmVzYW1wbGUiKQorIAkJbWVzc2FnZShGQVRBTF9FUlJPUiAi U2VsZWN0ZWQgJHtBVURJT19QUk9DRVNTT1JfTElCfSBmb3IgYXVkaW8gcHJvY2Vzc2luZywgYnV0 IHRoZSBsaWJyYXJ5IGlzIG5vdCBmb3VuZCIpCisgCWVuZGlmKCkKKyAJbWVzc2FnZShTVEFUVVMg IlVzaW5nICR7QVVESU9fUFJPQ0VTU09SX0xJQn0gZm9yIGF1ZGlvIGNvbnZlcnNpb24iKQorLWVs c2VpZihBVURJT19QUk9DRVNTT1JfTElCIFNUUkVRVUFMICJhdnJlc2FtcGxlIikKKy0JaWYoRkZN UEVHX0xJQkFWUkVTQU1QTEVfRk9VTkQpCistCQlzZXQoVVNFX0FWUkVTQU1QTEUgT04pCistCQlz ZXQoVVNFX1NXUkVTQU1QTEUgT0ZGKQorLQkJc2V0KEFVRElPX1BST0NFU1NPUl9MSUJSQVJJRVMg JHtGRk1QRUdfTElCQVZSRVNBTVBMRV9MSUJSQVJJRVN9KQorLQkJc2V0KEFVRElPX1BST0NFU1NP Ul9JTkNMVURFX0RJUlMgJHtGRk1QRUdfTElCQVZSRVNBTVBMRV9JTkNMVURFX0RJUlN9KQorLQll bHNlKCkKKy0JCW1lc3NhZ2UoRkFUQUxfRVJST1IgIlNlbGVjdGVkICR7QVVESU9fUFJPQ0VTU09S X0xJQn0gZm9yIGF1ZGlvIHByb2Nlc3NpbmcsIGJ1dCB0aGUgbGlicmFyeSBpcyBub3QgZm91bmQi KQorLQllbmRpZigpCistCW1lc3NhZ2UoU1RBVFVTICJVc2luZyAke0FVRElPX1BST0NFU1NPUl9M SUJ9IGZvciBhdWRpbyBjb252ZXJzaW9uIikKKyBlbHNlKCkKKyAJbWVzc2FnZShTVEFUVVMgIkJ1 aWxkaW5nIHdpdGhvdXQgYXVkaW8gY29udmVyc2lvbiBzdXBwb3J0LCBwbGVhc2UgaW5zdGFsbCBG Rm1wZWcgd2l0aCBsaWJzd3Jlc2FtcGxlIikKKyBlbmRpZigpCitkaWZmIC0tZ2l0IGEvcGFja2Fn ZS9idWlsZC5zaCBiL3BhY2thZ2UvYnVpbGQuc2gKK2luZGV4IGRhNjMxYWUuLmI0MWQzNmUgMTAw NzU1CistLS0gYS9wYWNrYWdlL2J1aWxkLnNoCisrKysgYi9wYWNrYWdlL2J1aWxkLnNoCitAQCAt Nyw4ICs3LDggQEAgc2V0IC1ldXgKKworIEJBU0VfRElSPSQoY2QgJChkaXJuYW1lICQwKS8uLiAm JiBwd2QpCisKKy1GRk1QRUdfVkVSU0lPTj00LjQuMQorLUZGTVBFR19CVUlMRF9UQUc9djQuNC4x LTEKKytGRk1QRUdfVkVSU0lPTj01LjEuMgorK0ZGTVBFR19CVUlMRF9UQUc9diR7RkZNUEVHX1ZF UlNJT059LTEKKworIFRNUF9CVUlMRF9ESVI9JEJBU0VfRElSLyQobWt0ZW1wIC1kIGJ1aWxkLlhY WFhYWFhYKQorIHRyYXAgJ3JtIC1yZiAkVE1QX0JVSUxEX0RJUicgRVhJVAorZGlmZiAtLWdpdCBh L3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmggYi9zcmMvYXVkaW8vZmZtcGVnX2F1 ZGlvX3Byb2Nlc3Nvci5oCitpbmRleCA3NjI4ZmM3Li4zOWY0ZjZkIDEwMDY0NAorLS0tIGEvc3Jj L2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaAorKysrIGIvc3JjL2F1ZGlvL2ZmbXBlZ19h dWRpb19wcm9jZXNzb3IuaAorQEAgLTEwLDggKzEwLDYgQEAKKworICNpZiBkZWZpbmVkKFVTRV9T V1JFU0FNUExFKQorICNpbmNsdWRlICJhdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVz YW1wbGUuaCIKKy0jZWxpZiBkZWZpbmVkKFVTRV9BVlJFU0FNUExFKQorLSNpbmNsdWRlICJhdWRp by9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaCIKKyAjZWxzZQorICNlcnJvciAi bm8gYXVkaW8gcHJvY2Vzc2luZyBsaWJyYXJ5IgorICNlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy9h dWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaCBiL3NyYy9hdWRpby9mZm1w ZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaAorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCBiZDg1ZjkyLi4wMDAwMDAwCistLS0gYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3By b2Nlc3Nvcl9hdnJlc2FtcGxlLmgKKysrKyAvZGV2L251bGwKK0BAIC0xLDcyICswLDAgQEAKKy0v LyBDb3B5cmlnaHQgKEMpIDIwMTYgIEx1a2FzIExhbGluc2t5CistLy8gRGlzdHJpYnV0ZWQgdW5k ZXIgdGhlIE1JVCBsaWNlbnNlLCBzZWUgdGhlIExJQ0VOU0UgZmlsZSBmb3IgZGV0YWlscy4KKy0K Ky0jaWZuZGVmIENIUk9NQVBSSU5UX0FVRElPX0ZGTVBFR19BVURJT19QUk9DRVNTT1JfQVZSRVNB TVBMRV9IXworLSNkZWZpbmUgQ0hST01BUFJJTlRfQVVESU9fRkZNUEVHX0FVRElPX1BST0NFU1NP Ul9BVlJFU0FNUExFX0hfCistCistZXh0ZXJuICJDIiB7CistI2luY2x1ZGUgPGxpYmF2cmVzYW1w bGUvYXZyZXNhbXBsZS5oPgorLX0KKy0KKy1uYW1lc3BhY2UgY2hyb21hcHJpbnQgeworLQorLWNs YXNzIEZGbXBlZ0F1ZGlvUHJvY2Vzc29yIHsKKy1wdWJsaWM6CistCUZGbXBlZ0F1ZGlvUHJvY2Vz c29yKCkgeworLQkJbV9yZXNhbXBsZV9jdHggPSBhdnJlc2FtcGxlX2FsbG9jX2NvbnRleHQoKTsK Ky0JfQorLQorLQl+RkZtcGVnQXVkaW9Qcm9jZXNzb3IoKSB7CistCQlhdnJlc2FtcGxlX2ZyZWUo Jm1fcmVzYW1wbGVfY3R4KTsKKy0JfQorLQorLQl2b2lkIFNldENvbXBhdGlibGVNb2RlKCkgewor LQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJmaWx0ZXJfc2l6ZSIsIDE2LCAwKTsK Ky0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAicGhhc2Vfc2hpZnQiLCA4LCAwKTsK Ky0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAibGluZWFyX2ludGVycCIsIDEsIDAp OworLQkJYXZfb3B0X3NldF9kb3VibGUobV9yZXNhbXBsZV9jdHgsICJjdXRvZmYiLCAwLjgsIDAp OworLQl9CistCistCXZvaWQgU2V0SW5wdXRDaGFubmVsTGF5b3V0KGludDY0X3QgY2hhbm5lbF9s YXlvdXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAiaW5fY2hhbm5lbF9s YXlvdXQiLCBjaGFubmVsX2xheW91dCwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRJbnB1dFNhbXBs ZUZvcm1hdChBVlNhbXBsZUZvcm1hdCBzYW1wbGVfZm9ybWF0KSB7CistCQlhdl9vcHRfc2V0X2lu dChtX3Jlc2FtcGxlX2N0eCwgImluX3NhbXBsZV9mbXQiLCBzYW1wbGVfZm9ybWF0LCAwKTsKKy0J fQorLQorLQl2b2lkIFNldElucHV0U2FtcGxlUmF0ZShpbnQgc2FtcGxlX3JhdGUpIHsKKy0JCWF2 X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAiaW5fc2FtcGxlX3JhdGUiLCBzYW1wbGVfcmF0 ZSwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRPdXRwdXRDaGFubmVsTGF5b3V0KGludDY0X3QgY2hh bm5lbF9sYXlvdXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAib3V0X2No YW5uZWxfbGF5b3V0IiwgY2hhbm5lbF9sYXlvdXQsIDApOworLQl9CistCistCXZvaWQgU2V0T3V0 cHV0U2FtcGxlRm9ybWF0KEFWU2FtcGxlRm9ybWF0IHNhbXBsZV9mb3JtYXQpIHsKKy0JCWF2X29w dF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAib3V0X3NhbXBsZV9mbXQiLCBzYW1wbGVfZm9ybWF0 LCAwKTsKKy0JfQorLQorLQl2b2lkIFNldE91dHB1dFNhbXBsZVJhdGUoaW50IHNhbXBsZV9yYXRl KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgIm91dF9zYW1wbGVfZm10Iiwg c2FtcGxlX3JhdGUsIDApOworLQl9CistCistCWludCBJbml0KCkgeworLQkJcmV0dXJuIGF2cmVz YW1wbGVfb3BlbihtX3Jlc2FtcGxlX2N0eCk7CistCX0KKy0KKy0JaW50IENvbnZlcnQodWludDhf dCAqKm91dCwgaW50IG91dF9jb3VudCwgY29uc3QgdWludDhfdCAqKmluLCBpbnQgaW5fY291bnQp IHsKKy0JCXJldHVybiBhdnJlc2FtcGxlX2NvbnZlcnQobV9yZXNhbXBsZV9jdHgsIG91dCwgMCwg b3V0X2NvdW50LCAodWludDhfdCAqKikgaW4sIDAsIGluX2NvdW50KTsKKy0JfQorLQorLQlpbnQg Rmx1c2godWludDhfdCAqKm91dCwgaW50IG91dF9jb3VudCkgeworLQkJcmV0dXJuIGF2cmVzYW1w bGVfcmVhZChtX3Jlc2FtcGxlX2N0eCwgb3V0LCBvdXRfY291bnQpOworLQl9CistCistcHJpdmF0 ZToKKy0JQVZBdWRpb1Jlc2FtcGxlQ29udGV4dCAqbV9yZXNhbXBsZV9jdHggPSBudWxscHRyOwor LX07CistCistfTsgLy8gbmFtZXNwYWNlIGNocm9tYXByaW50CistCistI2VuZGlmCitkaWZmIC0t Z2l0IGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oIGIvc3Jj L2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oCitpbmRleCBiODYyNjZi Li5iMWQ0YmVhIDEwMDY0NAorLS0tIGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jf c3dyZXNhbXBsZS5oCisrKysgYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jl c2FtcGxlLmgKK0BAIC0yOCwzMCArMjgsMjggQEAgcHVibGljOgorIAkJYXZfb3B0X3NldF9kb3Vi bGUobV9zd3JfY3R4LCAiY3V0b2ZmIiwgMC44LCAwKTsKKyAJfQorCistCXZvaWQgU2V0SW5wdXRD aGFubmVsTGF5b3V0KGludDY0X3QgY2hhbm5lbF9sYXlvdXQpIHsKKy0JCWF2X29wdF9zZXRfaW50 KG1fc3dyX2N0eCwgImljbCIsIGNoYW5uZWxfbGF5b3V0LCAwKTsKKy0JCWF2X29wdF9zZXRfaW50 KG1fc3dyX2N0eCwgImljaCIsIGF2X2dldF9jaGFubmVsX2xheW91dF9uYl9jaGFubmVscyhjaGFu bmVsX2xheW91dCksIDApOworKwl2b2lkIFNldElucHV0Q2hhbm5lbExheW91dChBVkNoYW5uZWxM YXlvdXQgKmNoYW5uZWxfbGF5b3V0KSB7CisrCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJp bl9jaGFubmVsX2xheW91dCIsIGNoYW5uZWxfbGF5b3V0LT51Lm1hc2ssIDApOworIAl9CisKKyAJ dm9pZCBTZXRJbnB1dFNhbXBsZUZvcm1hdChBVlNhbXBsZUZvcm1hdCBzYW1wbGVfZm9ybWF0KSB7 CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpc2YiLCBzYW1wbGVfZm9ybWF0LCAwKTsK KysJCWF2X29wdF9zZXRfc2FtcGxlX2ZtdChtX3N3cl9jdHgsICJpbl9zYW1wbGVfZm10Iiwgc2Ft cGxlX2Zvcm1hdCwgMCk7CisgCX0KKworIAl2b2lkIFNldElucHV0U2FtcGxlUmF0ZShpbnQgc2Ft cGxlX3JhdGUpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImlzciIsIHNhbXBsZV9y YXRlLCAwKTsKKysJCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImluX3NhbXBsZV9yYXRlIiwg c2FtcGxlX3JhdGUsIDApOworIAl9CisKKy0Jdm9pZCBTZXRPdXRwdXRDaGFubmVsTGF5b3V0KGlu dDY0X3QgY2hhbm5lbF9sYXlvdXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm9j bCIsIGNoYW5uZWxfbGF5b3V0LCAwKTsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm9j aCIsIGF2X2dldF9jaGFubmVsX2xheW91dF9uYl9jaGFubmVscyhjaGFubmVsX2xheW91dCksIDAp OworKwl2b2lkIFNldE91dHB1dENoYW5uZWxMYXlvdXQoQVZDaGFubmVsTGF5b3V0ICpjaGFubmVs X2xheW91dCkgeworKwkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib3V0X2NoYW5uZWxfbGF5 b3V0IiwgY2hhbm5lbF9sYXlvdXQtPnUubWFzaywgMCk7CisgCX0KKworIAl2b2lkIFNldE91dHB1 dFNhbXBsZUZvcm1hdChBVlNhbXBsZUZvcm1hdCBzYW1wbGVfZm9ybWF0KSB7CistCQlhdl9vcHRf c2V0X2ludChtX3N3cl9jdHgsICJvc2YiLCBzYW1wbGVfZm9ybWF0LCAwKTsKKysJCWF2X29wdF9z ZXRfc2FtcGxlX2ZtdChtX3N3cl9jdHgsICJvdXRfc2FtcGxlX2ZtdCIsIHNhbXBsZV9mb3JtYXQs IDApOworIAl9CisKKyAJdm9pZCBTZXRPdXRwdXRTYW1wbGVSYXRlKGludCBzYW1wbGVfcmF0ZSkg eworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib3NyIiwgc2FtcGxlX3JhdGUsIDApOwor KwkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib3V0X3NhbXBsZV9yYXRlIiwgc2FtcGxlX3Jh dGUsIDApOworIAl9CisKKyAJaW50IEluaXQoKSB7CitkaWZmIC0tZ2l0IGEvc3JjL2F1ZGlvL2Zm bXBlZ19hdWRpb19yZWFkZXIuaCBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcmVhZGVyLmgKK2lu ZGV4IDU1NTAxNjQuLjFjNmIzNDYgMTAwNjQ0CistLS0gYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlv X3JlYWRlci5oCisrKysgYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRlci5oCitAQCAtNjIs NyArNjIsNyBAQCBwdWJsaWM6CisgCWJvb2wgUmVhZChjb25zdCBpbnQxNl90ICoqZGF0YSwgc2l6 ZV90ICpzaXplKTsKKworIAlib29sIElzT3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fb3BlbmVkOyB9 CistCWJvb2wgSXNGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmluaXNoZWQgJiYgIW1fZ290 X2ZyYW1lOyB9CisrCWJvb2wgSXNGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2hhc19tb3Jl X3BhY2tldHMgJiYgIW1faGFzX21vcmVfZnJhbWVzOyB9CisKKyAJc3RkOjpzdHJpbmcgR2V0RXJy b3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CisgCWludCBHZXRFcnJvckNvZGUoKSBjb25z dCB7IHJldHVybiBtX2Vycm9yX2NvZGU7IH0KK0BAIC03NCwyMCArNzQsMTkgQEAgcHJpdmF0ZToK KyAJdWludDhfdCAqbV9jb252ZXJ0X2J1ZmZlclsxXSA9IHsgbnVsbHB0ciB9OworIAlpbnQgbV9j b252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzID0gMDsKKworLQlBVklucHV0Rm9ybWF0ICptX2lucHV0 X2ZtdCA9IG51bGxwdHI7CisrCWNvbnN0IEFWSW5wdXRGb3JtYXQgKm1faW5wdXRfZm10ID0gbnVs bHB0cjsKKyAJQVZEaWN0aW9uYXJ5ICptX2lucHV0X29wdHMgPSBudWxscHRyOworCisgCUFWRm9y bWF0Q29udGV4dCAqbV9mb3JtYXRfY3R4ID0gbnVsbHB0cjsKKyAJQVZDb2RlY0NvbnRleHQgKm1f Y29kZWNfY3R4ID0gbnVsbHB0cjsKKy0JQVZGcmFtZSAqbV9mcmFtZSA9IG51bGxwdHI7CisgCWlu dCBtX3N0cmVhbV9pbmRleCA9IC0xOworIAlzdGQ6OnN0cmluZyBtX2Vycm9yOworIAlpbnQgbV9l cnJvcl9jb2RlID0gMDsKKy0JYm9vbCBtX2ZpbmlzaGVkID0gZmFsc2U7CisgCWJvb2wgbV9vcGVu ZWQgPSBmYWxzZTsKKy0JaW50IG1fZ290X2ZyYW1lID0gMDsKKy0JQVZQYWNrZXQgbV9wYWNrZXQ7 CistCUFWUGFja2V0IG1fcGFja2V0MDsKKysJYm9vbCBtX2hhc19tb3JlX3BhY2tldHMgPSB0cnVl OworKwlib29sIG1faGFzX21vcmVfZnJhbWVzID0gdHJ1ZTsKKysJQVZQYWNrZXQgKm1fcGFja2V0 ID0gbnVsbHB0cjsKKysJQVZGcmFtZSAqbV9mcmFtZSA9IG51bGxwdHI7CisKKyAJaW50IG1fb3V0 cHV0X3NhbXBsZV9yYXRlID0gMDsKKyAJaW50IG1fb3V0cHV0X2NoYW5uZWxzID0gMDsKK0BAIC05 OCwxOSArOTcsMTIgQEAgcHJpdmF0ZToKKworIGlubGluZSBGRm1wZWdBdWRpb1JlYWRlcjo6RkZt cGVnQXVkaW9SZWFkZXIoKSB7CisgCWF2X2xvZ19zZXRfbGV2ZWwoQVZfTE9HX1FVSUVUKTsKKy0K Ky0JYXZfaW5pdF9wYWNrZXQoJm1fcGFja2V0KTsKKy0JbV9wYWNrZXQuZGF0YSA9IG51bGxwdHI7 CistCW1fcGFja2V0LnNpemUgPSAwOworLQorLQltX3BhY2tldDAgPSBtX3BhY2tldDsKKyB9CisK KyBpbmxpbmUgRkZtcGVnQXVkaW9SZWFkZXI6On5GRm1wZWdBdWRpb1JlYWRlcigpIHsKKyAJQ2xv c2UoKTsKKyAJYXZfZGljdF9mcmVlKCZtX2lucHV0X29wdHMpOworIAlhdl9mcmVlcCgmbV9jb252 ZXJ0X2J1ZmZlclswXSk7CistCWF2X3BhY2tldF91bnJlZigmbV9wYWNrZXQwKTsKKyB9CisKKyBp bmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6U2V0SW5wdXRGb3JtYXQoY29uc3QgY2hhciAq bmFtZSkgeworQEAgLTEzNSwxMSArMTI3LDEwIEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVh ZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKworIAlDbG9zZSgpOwor CistICAgIGF2X2luaXRfcGFja2V0KCZtX3BhY2tldCk7CistCW1fcGFja2V0LmRhdGEgPSBudWxs cHRyOworLQltX3BhY2tldC5zaXplID0gMDsKKy0KKy0JbV9wYWNrZXQwID0gbV9wYWNrZXQ7Cisr CW1fcGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrCWlmICghbV9wYWNrZXQpIHsKKysJCXJl dHVybiBmYWxzZTsKKysJfQorCisgCXJldCA9IGF2Zm9ybWF0X29wZW5faW5wdXQoJm1fZm9ybWF0 X2N0eCwgZmlsZV9uYW1lLmNfc3RyKCksIG1faW5wdXRfZm10LCAmbV9pbnB1dF9vcHRzKTsKKyAJ aWYgKHJldCA8IDApIHsKK0BAIC0xNTMsMjYgKzE0NCwzMSBAQCBpbmxpbmUgYm9vbCBGRm1wZWdB dWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6OnN0cmluZyAmZmlsZV9uYW1lKSB7CisgCQlyZXR1 cm4gZmFsc2U7CisgCX0KKworLQlBVkNvZGVjICpjb2RlYzsKKysJY29uc3QgQVZDb2RlYyAqY29k ZWM7CisgCXJldCA9IGF2X2ZpbmRfYmVzdF9zdHJlYW0obV9mb3JtYXRfY3R4LCBBVk1FRElBX1RZ UEVfQVVESU8sIC0xLCAtMSwgJmNvZGVjLCAwKTsKKyAJaWYgKHJldCA8IDApIHsKKyAJCVNldEVy cm9yKCJDb3VsZCBub3QgZmluZCBhbnkgYXVkaW8gc3RyZWFtIGluIHRoZSBmaWxlIiwgcmV0KTsK KyAJCXJldHVybiBmYWxzZTsKKyAJfQorIAltX3N0cmVhbV9pbmRleCA9IHJldDsKKysJYXV0byBz dHJlYW0gPSBtX2Zvcm1hdF9jdHgtPnN0cmVhbXNbbV9zdHJlYW1faW5kZXhdOworCistCW1fY29k ZWNfY3R4ID0gbV9mb3JtYXRfY3R4LT5zdHJlYW1zW21fc3RyZWFtX2luZGV4XS0+Y29kZWM7Cisr CW1fY29kZWNfY3R4ID0gYXZjb2RlY19hbGxvY19jb250ZXh0Myhjb2RlYyk7CisgCW1fY29kZWNf Y3R4LT5yZXF1ZXN0X3NhbXBsZV9mbXQgPSBBVl9TQU1QTEVfRk1UX1MxNjsKKworKwlyZXQgPSBh dmNvZGVjX3BhcmFtZXRlcnNfdG9fY29udGV4dChtX2NvZGVjX2N0eCwgc3RyZWFtLT5jb2RlY3Bh cik7CisrCWlmIChyZXQgPCAwKSB7CisrCQlTZXRFcnJvcigiQ291bGQgbm90IGNvcHkgdGhlIHN0 cmVhbSBwYXJhbWV0ZXJzIiwgcmV0KTsKKysJCXJldHVybiBmYWxzZTsKKysJfQorKworIAlyZXQg PSBhdmNvZGVjX29wZW4yKG1fY29kZWNfY3R4LCBjb2RlYywgbnVsbHB0cik7CisgCWlmIChyZXQg PCAwKSB7CisgCQlTZXRFcnJvcigiQ291bGQgbm90IG9wZW4gdGhlIGNvZGVjIiwgcmV0KTsKKyAJ CXJldHVybiBmYWxzZTsKKyAJfQorCistCWlmICghbV9jb2RlY19jdHgtPmNoYW5uZWxfbGF5b3V0 KSB7CistCQltX2NvZGVjX2N0eC0+Y2hhbm5lbF9sYXlvdXQgPSBhdl9nZXRfZGVmYXVsdF9jaGFu bmVsX2xheW91dChtX2NvZGVjX2N0eC0+Y2hhbm5lbHMpOworLQl9CisrCWF2X2R1bXBfZm9ybWF0 KG1fZm9ybWF0X2N0eCwgMCwgImZvbyIsIDApOworCisgCW1fZnJhbWUgPSBhdl9mcmFtZV9hbGxv YygpOworIAlpZiAoIW1fZnJhbWUpIHsKK0BAIC0xODMsMTkgKzE3OSwyMyBAQCBpbmxpbmUgYm9v bCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6OnN0cmluZyAmZmlsZV9uYW1lKSB7 CisgCQltX291dHB1dF9zYW1wbGVfcmF0ZSA9IG1fY29kZWNfY3R4LT5zYW1wbGVfcmF0ZTsKKyAJ fQorCistCWlmICghbV9vdXRwdXRfY2hhbm5lbHMpIHsKKy0JCW1fb3V0cHV0X2NoYW5uZWxzID0g bV9jb2RlY19jdHgtPmNoYW5uZWxzOworKwlBVkNoYW5uZWxMYXlvdXQgb3V0cHV0X2NoYW5uZWxf bGF5b3V0OworKwlpZiAobV9vdXRwdXRfY2hhbm5lbHMpIHsKKysJCWF2X2NoYW5uZWxfbGF5b3V0 X2RlZmF1bHQoJm91dHB1dF9jaGFubmVsX2xheW91dCwgbV9vdXRwdXRfY2hhbm5lbHMpOworKwl9 IGVsc2UgeworKwkJbV9vdXRwdXRfY2hhbm5lbHMgPSBtX2NvZGVjX2N0eC0+Y2hfbGF5b3V0Lm5i X2NoYW5uZWxzOworKwkJYXZfY2hhbm5lbF9sYXlvdXRfZGVmYXVsdCgmb3V0cHV0X2NoYW5uZWxf bGF5b3V0LCBtX291dHB1dF9jaGFubmVscyk7CisgCX0KKworLQlpZiAobV9jb2RlY19jdHgtPnNh bXBsZV9mbXQgIT0gQVZfU0FNUExFX0ZNVF9TMTYgfHwgbV9jb2RlY19jdHgtPmNoYW5uZWxzICE9 IG1fb3V0cHV0X2NoYW5uZWxzIHx8IG1fY29kZWNfY3R4LT5zYW1wbGVfcmF0ZSAhPSBtX291dHB1 dF9zYW1wbGVfcmF0ZSkgeworKwlpZiAobV9jb2RlY19jdHgtPnNhbXBsZV9mbXQgIT0gQVZfU0FN UExFX0ZNVF9TMTYgfHwgbV9jb2RlY19jdHgtPmNoX2xheW91dC5uYl9jaGFubmVscyAhPSBtX291 dHB1dF9jaGFubmVscyB8fCBtX2NvZGVjX2N0eC0+c2FtcGxlX3JhdGUgIT0gbV9vdXRwdXRfc2Ft cGxlX3JhdGUpIHsKKyAJCW1fY29udmVydGVyLnJlc2V0KG5ldyBGRm1wZWdBdWRpb1Byb2Nlc3Nv cigpKTsKKyAJCW1fY29udmVydGVyLT5TZXRDb21wYXRpYmxlTW9kZSgpOworIAkJbV9jb252ZXJ0 ZXItPlNldElucHV0U2FtcGxlRm9ybWF0KG1fY29kZWNfY3R4LT5zYW1wbGVfZm10KTsKKyAJCW1f Y29udmVydGVyLT5TZXRJbnB1dFNhbXBsZVJhdGUobV9jb2RlY19jdHgtPnNhbXBsZV9yYXRlKTsK Ky0JCW1fY29udmVydGVyLT5TZXRJbnB1dENoYW5uZWxMYXlvdXQobV9jb2RlY19jdHgtPmNoYW5u ZWxfbGF5b3V0KTsKKysJCW1fY29udmVydGVyLT5TZXRJbnB1dENoYW5uZWxMYXlvdXQoJihtX2Nv ZGVjX2N0eC0+Y2hfbGF5b3V0KSk7CisgCQltX2NvbnZlcnRlci0+U2V0T3V0cHV0U2FtcGxlRm9y bWF0KEFWX1NBTVBMRV9GTVRfUzE2KTsKKyAJCW1fY29udmVydGVyLT5TZXRPdXRwdXRTYW1wbGVS YXRlKG1fb3V0cHV0X3NhbXBsZV9yYXRlKTsKKy0JCW1fY29udmVydGVyLT5TZXRPdXRwdXRDaGFu bmVsTGF5b3V0KGF2X2dldF9kZWZhdWx0X2NoYW5uZWxfbGF5b3V0KG1fb3V0cHV0X2NoYW5uZWxz KSk7CisrCQltX2NvbnZlcnRlci0+U2V0T3V0cHV0Q2hhbm5lbExheW91dCgmb3V0cHV0X2NoYW5u ZWxfbGF5b3V0KTsKKyAJCWF1dG8gcmV0ID0gbV9jb252ZXJ0ZXItPkluaXQoKTsKKyAJCWlmIChy ZXQgIT0gMCkgeworIAkJCVNldEVycm9yKCJDb3VsZCBub3QgY3JlYXRlIGFuIGF1ZGlvIGNvbnZl cnRlciBpbnN0YW5jZSIsIHJldCk7CitAQCAtMjAzLDEwICsyMDMsMTEgQEAgaW5saW5lIGJvb2wg RkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZpbGVfbmFtZSkgewor IAkJfQorIAl9CisKKysJYXZfY2hhbm5lbF9sYXlvdXRfdW5pbml0KCZvdXRwdXRfY2hhbm5lbF9s YXlvdXQpOworKworIAltX29wZW5lZCA9IHRydWU7CistCW1fZmluaXNoZWQgPSBmYWxzZTsKKy0J bV9nb3RfZnJhbWUgPSAwOworLQltX25iX3BhY2tldHMgPSAwOworKwltX2hhc19tb3JlX3BhY2tl dHMgPSB0cnVlOworKwltX2hhc19tb3JlX2ZyYW1lcyA9IHRydWU7CisgCW1fZGVjb2RlX2Vycm9y ID0gMDsKKworIAlyZXR1cm4gdHJ1ZTsKK0BAIC0yMTQsNiArMjE1LDcgQEAgaW5saW5lIGJvb2wg RkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZpbGVfbmFtZSkgewor CisgaW5saW5lIHZvaWQgRkZtcGVnQXVkaW9SZWFkZXI6OkNsb3NlKCkgeworIAlhdl9mcmFtZV9m cmVlKCZtX2ZyYW1lKTsKKysJYXZfcGFja2V0X2ZyZWUoJm1fcGFja2V0KTsKKworIAltX3N0cmVh bV9pbmRleCA9IC0xOworCitAQCAtMjUyLDkxICsyNTQsOTggQEAgaW5saW5lIGJvb2wgRkZtcGVn QXVkaW9SZWFkZXI6OlJlYWQoY29uc3QgaW50MTZfdCAqKmRhdGEsIHNpemVfdCAqc2l6ZSkgewor IAkJcmV0dXJuIGZhbHNlOworIAl9CisKKysJKmRhdGEgPSBudWxscHRyOworKwkqc2l6ZSA9IDA7 CisrCisgCWludCByZXQ7CisrCWJvb2wgbmVlZHNfcGFja2V0ID0gZmFsc2U7CisgCXdoaWxlICh0 cnVlKSB7CistCQl3aGlsZSAobV9wYWNrZXQuc2l6ZSA8PSAwKSB7CistCQkJYXZfcGFja2V0X3Vu cmVmKCZtX3BhY2tldDApOworLQkJCWF2X2luaXRfcGFja2V0KCZtX3BhY2tldCk7CistCQkJbV9w YWNrZXQuZGF0YSA9IG51bGxwdHI7CistCQkJbV9wYWNrZXQuc2l6ZSA9IDA7CistCQkJcmV0ID0g YXZfcmVhZF9mcmFtZShtX2Zvcm1hdF9jdHgsICZtX3BhY2tldCk7CisrCQl3aGlsZSAobmVlZHNf cGFja2V0ICYmIG1fcGFja2V0LT5zaXplID09IDApIHsKKysJCQlyZXQgPSBhdl9yZWFkX2ZyYW1l KG1fZm9ybWF0X2N0eCwgbV9wYWNrZXQpOworIAkJCWlmIChyZXQgPCAwKSB7CisgCQkJCWlmIChy ZXQgPT0gQVZFUlJPUl9FT0YpIHsKKy0JCQkJCW1fZmluaXNoZWQgPSB0cnVlOworKwkJCQkJbmVl ZHNfcGFja2V0ID0gZmFsc2U7CisrCQkJCQltX2hhc19tb3JlX3BhY2tldHMgPSBmYWxzZTsKKyAJ CQkJCWJyZWFrOworLQkJCQl9IGVsc2UgeworKwkJCQl9CisrCQkJCVNldEVycm9yKCJFcnJvciBy ZWFkaW5nIGZyb20gdGhlIGF1ZGlvIHNvdXJjZSIsIHJldCk7CisrCQkJCXJldHVybiBmYWxzZTsK KysJCQl9CisrCQkJaWYgKG1fcGFja2V0LT5zdHJlYW1faW5kZXggPT0gbV9zdHJlYW1faW5kZXgp IHsKKysJCQkJbmVlZHNfcGFja2V0ID0gZmFsc2U7CisrCQkJfSBlbHNlIHsKKysJCQkJYXZfcGFj a2V0X3VucmVmKG1fcGFja2V0KTsKKysJCQl9CisrCQl9CisrCisrCQlpZiAobV9wYWNrZXQtPnNp emUgIT0gMCkgeworKwkJCXJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQobV9jb2RlY19jdHgsIG1f cGFja2V0KTsKKysJCQlpZiAocmV0IDwgMCkgeworKwkJCQlpZiAocmV0ICE9IEFWRVJST1IoRUFH QUlOKSkgeworIAkJCQkJU2V0RXJyb3IoIkVycm9yIHJlYWRpbmcgZnJvbSB0aGUgYXVkaW8gc291 cmNlIiwgcmV0KTsKKyAJCQkJCXJldHVybiBmYWxzZTsKKyAJCQkJfQorLQkJCX0KKy0JCQltX3Bh Y2tldDAgPSBtX3BhY2tldDsKKy0JCQlpZiAobV9wYWNrZXQuc3RyZWFtX2luZGV4ICE9IG1fc3Ry ZWFtX2luZGV4KSB7CistCQkJCW1fcGFja2V0LmRhdGEgPSBudWxscHRyOworLQkJCQltX3BhY2tl dC5zaXplID0gMDsKKyAJCQl9IGVsc2UgeworLQkJCQltX25iX3BhY2tldHMrKzsKKysJCQkJYXZf cGFja2V0X3VucmVmKG1fcGFja2V0KTsKKyAJCQl9CisgCQl9CisKKy0JCXJldCA9IGF2Y29kZWNf ZGVjb2RlX2F1ZGlvNChtX2NvZGVjX2N0eCwgbV9mcmFtZSwgJm1fZ290X2ZyYW1lLCAmbV9wYWNr ZXQpOworKwkJcmV0ID0gYXZjb2RlY19yZWNlaXZlX2ZyYW1lKG1fY29kZWNfY3R4LCBtX2ZyYW1l KTsKKyAJCWlmIChyZXQgPCAwKSB7CistCQkJaWYgKG1fZGVjb2RlX2Vycm9yKSB7CistCQkJCVNl dEVycm9yKCJFcnJvciBkZWNvZGluZyBhdWRpbyBmcmFtZSIsIG1fZGVjb2RlX2Vycm9yKTsKKy0J CQkJcmV0dXJuIGZhbHNlOworKwkJCWlmIChyZXQgPT0gQVZFUlJPUl9FT0YpIHsKKysJCQkJbV9o YXNfbW9yZV9mcmFtZXMgPSBmYWxzZTsKKysJCQl9IGVsc2UgaWYgKHJldCA9PSBBVkVSUk9SKEVB R0FJTikpIHsKKysJCQkJaWYgKG1faGFzX21vcmVfcGFja2V0cykgeworKwkJCQkJbmVlZHNfcGFj a2V0ID0gdHJ1ZTsKKysJCQkJCWNvbnRpbnVlOworKwkJCQl9IGVsc2UgeworKwkJCQkJbV9oYXNf bW9yZV9mcmFtZXMgPSBmYWxzZTsKKysJCQkJfQorIAkJCX0KKy0JCQltX2RlY29kZV9lcnJvciA9 IHJldDsKKy0JCQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JCQltX3BhY2tldC5zaXplID0g MDsKKy0JCQljb250aW51ZTsKKysJCQlTZXRFcnJvcigiRXJyb3IgZGVjb2RpbmcgdGhlIGF1ZGlv IHNvdXJjZSIsIHJldCk7CisrCQkJcmV0dXJuIGZhbHNlOworIAkJfQorCistCQlicmVhazsKKy0J fQorLQorLQltX2RlY29kZV9lcnJvciA9IDA7CistCistCWNvbnN0IGludCBkZWNvZGVkID0gc3Rk OjptaW4ocmV0LCBtX3BhY2tldC5zaXplKTsKKy0JbV9wYWNrZXQuZGF0YSArPSBkZWNvZGVkOwor LQltX3BhY2tldC5zaXplIC09IGRlY29kZWQ7CistCistCWlmIChtX2dvdF9mcmFtZSkgeworLQkJ aWYgKG1fY29udmVydGVyKSB7CistCQkJaWYgKG1fZnJhbWUtPm5iX3NhbXBsZXMgPiBtX2NvbnZl cnRfYnVmZmVyX25iX3NhbXBsZXMpIHsKKy0JCQkJaW50IGxpbnNpemU7CistCQkJCWF2X2ZyZWVw KCZtX2NvbnZlcnRfYnVmZmVyWzBdKTsKKy0JCQkJbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVz ID0gc3RkOjptYXgoMTAyNCAqIDgsIG1fZnJhbWUtPm5iX3NhbXBsZXMpOworLQkJCQlyZXQgPSBh dl9zYW1wbGVzX2FsbG9jKG1fY29udmVydF9idWZmZXIsICZsaW5zaXplLCBtX2NvZGVjX2N0eC0+ Y2hhbm5lbHMsIG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcywgQVZfU0FNUExFX0ZNVF9TMTYs IDEpOworLQkJCQlpZiAocmV0IDwgMCkgeworLQkJCQkJU2V0RXJyb3IoIkNvdWxkbid0IGFsbG9j YXRlIGF1ZGlvIGNvbnZlcnRlciBidWZmZXIiLCByZXQpOworKwkJaWYgKG1fZnJhbWUtPm5iX3Nh bXBsZXMgPiAwKSB7CisrCQkJaWYgKG1fY29udmVydGVyKSB7CisrCQkJCWlmIChtX2ZyYW1lLT5u Yl9zYW1wbGVzID4gbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzKSB7CisrCQkJCQlpbnQgbGlu c2l6ZTsKKysJCQkJCWF2X2ZyZWVwKCZtX2NvbnZlcnRfYnVmZmVyWzBdKTsKKysJCQkJCW1fY29u dmVydF9idWZmZXJfbmJfc2FtcGxlcyA9IHN0ZDo6bWF4KDEwMjQgKiA4LCBtX2ZyYW1lLT5uYl9z YW1wbGVzKTsKKysJCQkJCXJldCA9IGF2X3NhbXBsZXNfYWxsb2MobV9jb252ZXJ0X2J1ZmZlciwg JmxpbnNpemUsIG1fY29kZWNfY3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHMsIG1fY29udmVydF9i dWZmZXJfbmJfc2FtcGxlcywgQVZfU0FNUExFX0ZNVF9TMTYsIDEpOworKwkJCQkJaWYgKHJldCA8 IDApIHsKKysJCQkJCQlTZXRFcnJvcigiQ291bGRuJ3QgYWxsb2NhdGUgYXVkaW8gY29udmVydGVy IGJ1ZmZlciIsIHJldCk7CisrCQkJCQkJcmV0dXJuIGZhbHNlOworKwkJCQkJfQorKwkJCQl9Cisr CQkJCWF1dG8gbmJfc2FtcGxlcyA9IG1fY29udmVydGVyLT5Db252ZXJ0KG1fY29udmVydF9idWZm ZXIsIG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcywgKGNvbnN0IHVpbnQ4X3QgKiopIG1fZnJh bWUtPmRhdGEsIG1fZnJhbWUtPm5iX3NhbXBsZXMpOworKwkJCQlpZiAobmJfc2FtcGxlcyA8IDAp IHsKKysJCQkJCVNldEVycm9yKCJDb3VsZG4ndCBjb252ZXJ0IGF1ZGlvIiwgcmV0KTsKKyAJCQkJ CXJldHVybiBmYWxzZTsKKyAJCQkJfQorLQkJCX0KKy0JCQlhdXRvIG5iX3NhbXBsZXMgPSBtX2Nv bnZlcnRlci0+Q29udmVydChtX2NvbnZlcnRfYnVmZmVyLCBtX2NvbnZlcnRfYnVmZmVyX25iX3Nh bXBsZXMsIChjb25zdCB1aW50OF90ICoqKSBtX2ZyYW1lLT5kYXRhLCBtX2ZyYW1lLT5uYl9zYW1w bGVzKTsKKy0JCQlpZiAobmJfc2FtcGxlcyA8IDApIHsKKy0JCQkJU2V0RXJyb3IoIkNvdWxkbid0 IGNvbnZlcnQgYXVkaW8iLCByZXQpOworLQkJCQlyZXR1cm4gZmFsc2U7CistCQkJfQorLQkJCSpk YXRhID0gKGNvbnN0IGludDE2X3QgKikgbV9jb252ZXJ0X2J1ZmZlclswXTsKKy0JCQkqc2l6ZSA9 IG5iX3NhbXBsZXM7CistCQl9IGVsc2UgeworLQkJCSpkYXRhID0gKGNvbnN0IGludDE2X3QgKikg bV9mcmFtZS0+ZGF0YVswXTsKKy0JCQkqc2l6ZSA9IG1fZnJhbWUtPm5iX3NhbXBsZXM7CistCQl9 CistCX0gZWxzZSB7CistCQlpZiAobV9maW5pc2hlZCAmJiBtX2NvbnZlcnRlcikgeworLQkJCWF1 dG8gbmJfc2FtcGxlcyA9IG1fY29udmVydGVyLT5GbHVzaChtX2NvbnZlcnRfYnVmZmVyLCBtX2Nv bnZlcnRfYnVmZmVyX25iX3NhbXBsZXMpOworLQkJCWlmIChuYl9zYW1wbGVzIDwgMCkgeworLQkJ CQlTZXRFcnJvcigiQ291bGRuJ3QgY29udmVydCBhdWRpbyIsIHJldCk7CistCQkJCXJldHVybiBm YWxzZTsKKy0JCQl9IGVsc2UgaWYgKG5iX3NhbXBsZXMgPiAwKSB7CistCQkJCW1fZ290X2ZyYW1l ID0gMTsKKyAJCQkJKmRhdGEgPSAoY29uc3QgaW50MTZfdCAqKSBtX2NvbnZlcnRfYnVmZmVyWzBd OworIAkJCQkqc2l6ZSA9IG5iX3NhbXBsZXM7CisrCQkJfSBlbHNlIHsKKysJCQkJKmRhdGEgPSAo Y29uc3QgaW50MTZfdCAqKSBtX2ZyYW1lLT5kYXRhWzBdOworKwkJCQkqc2l6ZSA9IG1fZnJhbWUt Pm5iX3NhbXBsZXM7CisrCQkJfQorKwkJfSBlbHNlIHsKKysJCQlpZiAobV9jb252ZXJ0ZXIpIHsK KysJCQkJaWYgKElzRmluaXNoZWQoKSkgeworKwkJCQkJYXV0byBuYl9zYW1wbGVzID0gbV9jb252 ZXJ0ZXItPkZsdXNoKG1fY29udmVydF9idWZmZXIsIG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxl cyk7CisrCQkJCQlpZiAobmJfc2FtcGxlcyA8IDApIHsKKysJCQkJCQlTZXRFcnJvcigiQ291bGRu J3QgY29udmVydCBhdWRpbyIsIHJldCk7CisrCQkJCQkJcmV0dXJuIGZhbHNlOworKwkJCQkJfSBl bHNlIGlmIChuYl9zYW1wbGVzID4gMCkgeworKwkJCQkJCSpkYXRhID0gKGNvbnN0IGludDE2X3Qg KikgbV9jb252ZXJ0X2J1ZmZlclswXTsKKysJCQkJCQkqc2l6ZSA9IG5iX3NhbXBsZXM7CisrCQkJ CQl9CisrCQkJCX0KKyAJCQl9CisgCQl9CistCX0KKworLQlyZXR1cm4gdHJ1ZTsKKysJCXJldHVy biB0cnVlOworKwl9CisgfQorCisgaW5saW5lIHZvaWQgRkZtcGVnQXVkaW9SZWFkZXI6OlNldEVy cm9yKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIGludCBlcnJudW0pIHsKK2RpZmYgLS1naXQgYS90ZXN0 cy9DTWFrZUxpc3RzLnR4dCBiL3Rlc3RzL0NNYWtlTGlzdHMudHh0CitpbmRleCBhMmI1MTdiLi4x MjNlNjQzIDEwMDY0NAorLS0tIGEvdGVzdHMvQ01ha2VMaXN0cy50eHQKKysrKyBiL3Rlc3RzL0NN YWtlTGlzdHMudHh0CitAQCAtMzgsNiArMzgsMTIgQEAgc2V0KFNSQ1MKKworIGlmKEJVSUxEX1RP T0xTKQorIAlzZXQoU1JDUyAke1NSQ1N9IC4uL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcmVhZGVy X3Rlc3QuY3BwKQorKyAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKAorKyAgICAgICAgJHtGRk1QRUdf TElCQVZGT1JNQVRfSU5DTFVERV9ESVJTfQorKyAgICAgICAgJHtGRk1QRUdfTElCQVZDT0RFQ19J TkNMVURFX0RJUlN9CisrICAgICAgICAke0ZGTVBFR19MSUJBVlVUSUxfSU5DTFVERV9ESVJTfQor KyAgICAgICAgJHtBVURJT19QUk9DRVNTT1JfSU5DTFVERV9ESVJTfQorKyAgICApCisgCWxpbmtf bGlicmFyaWVzKGZwY2FsY19saWJzKQorIGVuZGlmKCkKKworLS0gCisyLjM4LjEKKworCmRpZmYg LS1naXQgYS9zcmNwa2dzL2Nocm9tYXByaW50L3RlbXBsYXRlIGIvc3JjcGtncy9jaHJvbWFwcmlu dC90ZW1wbGF0ZQppbmRleCA3ZWY3ODM4OTQ5ZjNhLi4xZjdiYmM3MGEyMmM4IDEwMDY0NAotLS0g YS9zcmNwa2dzL2Nocm9tYXByaW50L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY2hyb21hcHJpbnQv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjaHJvbWFwcmlu dCcKIHBrZ25hbWU9Y2hyb21hcHJpbnQKIHZlcnNpb249MS41LjEKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURCVUlMRF9UT09MUz1P TiIKIG1ha2VfY2hlY2tfdGFyZ2V0PSJjaGVjayIKCkZyb20gNzU5ODI4YmUzY2EzNzUwMTNkMzNl NTUxOTE5MDgxMzI1N2U3NmQ3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDIzLzExNV0gY2hyb21pdW06IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogLi4uL3BhdGNoZXMvY2hyb21pdW0tMTE5LWZmbXBlZy00LjQucGF0Y2ggICAgIHwg MjAgLS0tLS0tLS0KIHNyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoICAgICAg ICB8IDQ3ICsrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiAzIGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMo KyksIDIxIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvY2hyb21pdW0v cGF0Y2hlcy9jaHJvbWl1bS0xMTktZmZtcGVnLTQuNC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9jaHJvbWl1bS9wYXRjaGVzL2Nocm9taXVtLTExOS1mZm1wZWctNC40LnBhdGNoIGIvc3Jj cGtncy9jaHJvbWl1bS9wYXRjaGVzL2Nocm9taXVtLTExOS1mZm1wZWctNC40LnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGQwNGIxNjZiYTM3Li4wMDAwMDAwMDAwMDAwCi0t LSBhL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS0xMTktZmZtcGVnLTQuNC5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS0tLSBhL21lZGlhL2ZpbHRlcnMvZmZt cGVnX2RlbXV4ZXIuY2Mub3JpZwotKysrIGIvbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5j YwotQEAgLTM5MCw3ICszOTAsNyBAQAotIAotICAgc2NvcGVkX3JlZnB0cjxEZWNvZGVyQnVmZmVy PiBidWZmZXI7Ci0gCi0tICAgIHNpemVfdCBzaWRlX2RhdGFfc2l6ZSA9IDA7Ci0rICAgIGludCBz aWRlX2RhdGFfc2l6ZSA9IDA7Ci0gICAgIHVpbnQ4X3QqIHNpZGVfZGF0YSA9IGF2X3BhY2tldF9n ZXRfc2lkZV9kYXRhKAotICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9NQVRST1NL QV9CTE9DS0FERElUSU9OQUwsICZzaWRlX2RhdGFfc2l6ZSk7Ci0gCi1AQCAtNDUzLDcgKzQ1Myw3 IEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0LT5zaXpl IC0gZGF0YV9vZmZzZXQpOwotICAgICB9Ci0gCi0tICAgIHNpemVfdCBza2lwX3NhbXBsZXNfc2l6 ZSA9IDA7Ci0rICAgIGludCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7Ci0gICAgIGNvbnN0IHVpbnQz Ml90KiBza2lwX3NhbXBsZXNfcHRyID0KLSAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg dWludDMyX3QqPihhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAgICAgICAgICBwYWNrZXQu Z2V0KCksIEFWX1BLVF9EQVRBX1NLSVBfU0FNUExFUywgJnNraXBfc2FtcGxlc19zaXplKSk7CmRp ZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3Br Z3MvY2hyb21pdW0vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMDAuLjI0ZTJkYTM4ZTM0Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDQ3IEBACistLS0g YS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCTIwMjMtMDEtMjMgMTc6MzM6NTcuMzY2 MjEzODA1ICswMjAwCisrKysgYi9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCTIwMjMt MDEtMjMgMTc6NDM6MDkuMjgzNDM2OTgzICswMjAwCitAQCAtOTIsMjQgKzkyLDEyIEBACisgCisg c3RhdGljIGJhc2U6OlRpbWVEZWx0YSBFeHRyYWN0U3RhcnRUaW1lKEFWU3RyZWFtKiBzdHJlYW0p IHsKKyAgIC8vIFRoZSBkZWZhdWx0IHN0YXJ0IHRpbWUgaXMgemVyby4KKy0gIGJhc2U6OlRpbWVE ZWx0YSBzdGFydF90aW1lOworKyAgYmFzZTo6VGltZURlbHRhIHN0YXJ0X3RpbWUgPSBrTm9UaW1l c3RhbXA7CisgCisgICAvLyBGaXJzdCB0cnkgdG8gdXNlICB0aGUgfHN0YXJ0X3RpbWV8IHZhbHVl IGFzIGlzLgorLSAgaWYgKHN0cmVhbS0+c3RhcnRfdGltZSAhPSBrTm9GRm1wZWdUaW1lc3RhbXAp CisrICBpZiAoc3RyZWFtLT5zdGFydF90aW1lICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCkgLy8gQVZf Tk9QVFNfVkFMVUUKKyAgICAgc3RhcnRfdGltZSA9IENvbnZlcnRGcm9tVGltZUJhc2Uoc3RyZWFt LT50aW1lX2Jhc2UsIHN0cmVhbS0+c3RhcnRfdGltZSk7CisgCistICAvLyBOZXh0IHRyeSB0byB1 c2UgdGhlIGZpcnN0IERUUyB2YWx1ZSwgZm9yIGNvZGVjcyB3aGVyZSB3ZSBrbm93IFBUUyA9PSBE VFMKKy0gIC8vIChleGNsdWRlcyBhbGwgSDI2eCBjb2RlY3MpLiBUaGUgc3RhcnQgdGltZSBtdXN0 IGJlIHJldHVybmVkIGluIFBUUy4KKy0gIGlmIChhdl9zdHJlYW1fZ2V0X2ZpcnN0X2R0cyhzdHJl YW0pICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCAmJgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNv ZGVjX2lkICE9IEFWX0NPREVDX0lEX0hFVkMgJiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5j b2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IMjY0ICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+ Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfTVBFRzQpIHsKKy0gICAgY29uc3QgYmFzZTo6VGltZURl bHRhIGZpcnN0X3B0cyA9CistICAgICAgICBDb252ZXJ0RnJvbVRpbWVCYXNlKHN0cmVhbS0+dGlt ZV9iYXNlLCBhdl9zdHJlYW1fZ2V0X2ZpcnN0X2R0cyhzdHJlYW0pKTsKKy0gICAgaWYgKGZpcnN0 X3B0cyA8IHN0YXJ0X3RpbWUpCistICAgICAgc3RhcnRfdGltZSA9IGZpcnN0X3B0czsKKy0gIH0K Ky0KKyAgIHJldHVybiBzdGFydF90aW1lOworIH0KKyAKK0BAIC0xNTk3LDcgKzE1ODUsNyBAQAor ICAgZm9yIChjb25zdCBhdXRvJiBzdHJlYW0gOiBzdHJlYW1zXykgeworICAgICBpZiAoIXN0cmVh bSB8fCBzdHJlYW0tPklzRW5hYmxlZCgpICE9IGVuYWJsZWQpCisgICAgICAgY29udGludWU7Cist ICAgIGlmIChhdl9zdHJlYW1fZ2V0X2ZpcnN0X2R0cyhzdHJlYW0tPmF2X3N0cmVhbSgpKSA9PSBr SW52YWxpZFBUU01hcmtlcikKKysgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3Rp bWUgPT0gQVZfTk9QVFNfVkFMVUUpCisgICAgICAgY29udGludWU7CisgICAgIGlmICghbG93ZXN0 X3N0YXJ0X3RpbWVfc3RyZWFtIHx8CisgICAgICAgICBzdHJlYW0tPnN0YXJ0X3RpbWUoKSA8IGxv d2VzdF9zdGFydF90aW1lX3N0cmVhbS0+c3RhcnRfdGltZSgpKSB7CitAQCAtMTYxOCw3ICsxNjA2 LDcgQEAKKyAgICAgaWYgKHN0cmVhbS0+dHlwZSgpICE9IERlbXV4ZXJTdHJlYW06OlZJREVPKQor ICAgICAgIGNvbnRpbnVlOworIAorLSAgICBpZiAoYXZfc3RyZWFtX2dldF9maXJzdF9kdHMoc3Ry ZWFtLT5hdl9zdHJlYW0oKSkgPT0ga0ludmFsaWRQVFNNYXJrZXIpCisrICAgIGlmIChzdHJlYW0t PmF2X3N0cmVhbSgpLT5zdGFydF90aW1lID09IEFWX05PUFRTX1ZBTFVFKQorICAgICAgIGNvbnRp bnVlOworIAorICAgICBpZiAoIXN0cmVhbS0+SXNFbmFibGVkKCkpCmRpZmYgLS1naXQgYS9zcmNw a2dzL2Nocm9taXVtL3RlbXBsYXRlIGIvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZQppbmRleCBi MDIzOTQ2ZjNlYzdiLi5mZTM2YTZkY2UyMGQzIDEwMDY0NAotLS0gYS9zcmNwa2dzL2Nocm9taXVt L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBA CiBwa2duYW1lPWNocm9taXVtCiAjIFNlZSBodHRwczovL2Nocm9taXVtZGFzaC5hcHBzcG90LmNv bS9yZWxlYXNlcz9wbGF0Zm9ybT1MaW51eCBmb3IgdGhlIGxhdGVzdCB2ZXJzaW9uCiB2ZXJzaW9u PTExOS4wLjYwNDUuMTA1Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBhcmNocz0iaTY4NiogeDg2 XzY0KiBhYXJjaDY0KiBhcm12N2wqIgogaG9zdG1ha2VkZXBlbmRzPSIKICAkKHZvcHRfaWYgY2xh bmcgImNsYW5nIGxsZCBsbHZtMTUiKQoKRnJvbSA1NzNiNWRkMTdiNGYwNGUzM2I2MDY0YzE3NWNl MDU5MGM2OGYxOGM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMjQvMTE1XSBjbXVzOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgNDcgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIHNyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2ggICAgIHwgMTIg KysrKysrKwogc3JjcGtncy9jbXVzL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgfCAgMiArLQog MyBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlvbnMoLSkKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3Mv Y2hyb21pdW0vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAyNGUyZGEzOGUzNGNhLi4wMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvY2hyb21pdW0v cGF0Y2hlcy9mZm1wZWc1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLS0t IGEvbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwkyMDIzLTAxLTIzIDE3OjMzOjU3LjM2 NjIxMzgwNSArMDIwMAotKysrIGIvbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwkyMDIz LTAxLTIzIDE3OjQzOjA5LjI4MzQzNjk4MyArMDIwMAotQEAgLTkyLDI0ICs5MiwxMiBAQAotIAot IHN0YXRpYyBiYXNlOjpUaW1lRGVsdGEgRXh0cmFjdFN0YXJ0VGltZShBVlN0cmVhbSogc3RyZWFt KSB7Ci0gICAvLyBUaGUgZGVmYXVsdCBzdGFydCB0aW1lIGlzIHplcm8uCi0tICBiYXNlOjpUaW1l RGVsdGEgc3RhcnRfdGltZTsKLSsgIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90aW1lID0ga05vVGlt ZXN0YW1wOwotIAotICAgLy8gRmlyc3QgdHJ5IHRvIHVzZSAgdGhlIHxzdGFydF90aW1lfCB2YWx1 ZSBhcyBpcy4KLS0gIGlmIChzdHJlYW0tPnN0YXJ0X3RpbWUgIT0ga05vRkZtcGVnVGltZXN0YW1w KQotKyAgaWYgKHN0cmVhbS0+c3RhcnRfdGltZSAhPSBrTm9GRm1wZWdUaW1lc3RhbXApIC8vIEFW X05PUFRTX1ZBTFVFCi0gICAgIHN0YXJ0X3RpbWUgPSBDb252ZXJ0RnJvbVRpbWVCYXNlKHN0cmVh bS0+dGltZV9iYXNlLCBzdHJlYW0tPnN0YXJ0X3RpbWUpOwotIAotLSAgLy8gTmV4dCB0cnkgdG8g dXNlIHRoZSBmaXJzdCBEVFMgdmFsdWUsIGZvciBjb2RlY3Mgd2hlcmUgd2Uga25vdyBQVFMgPT0g RFRTCi0tICAvLyAoZXhjbHVkZXMgYWxsIEgyNnggY29kZWNzKS4gVGhlIHN0YXJ0IHRpbWUgbXVz dCBiZSByZXR1cm5lZCBpbiBQVFMuCi0tICBpZiAoYXZfc3RyZWFtX2dldF9maXJzdF9kdHMoc3Ry ZWFtKSAhPSBrTm9GRm1wZWdUaW1lc3RhbXAgJiYKLS0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5j b2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IRVZDICYmCi0tICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+ Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSDI2NCAmJgotLSAgICAgIHN0cmVhbS0+Y29kZWNwYXIt PmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX01QRUc0KSB7Ci0tICAgIGNvbnN0IGJhc2U6OlRpbWVE ZWx0YSBmaXJzdF9wdHMgPQotLSAgICAgICAgQ29udmVydEZyb21UaW1lQmFzZShzdHJlYW0tPnRp bWVfYmFzZSwgYXZfc3RyZWFtX2dldF9maXJzdF9kdHMoc3RyZWFtKSk7Ci0tICAgIGlmIChmaXJz dF9wdHMgPCBzdGFydF90aW1lKQotLSAgICAgIHN0YXJ0X3RpbWUgPSBmaXJzdF9wdHM7Ci0tICB9 Ci0tCi0gICByZXR1cm4gc3RhcnRfdGltZTsKLSB9Ci0gCi1AQCAtMTU5Nyw3ICsxNTg1LDcgQEAK LSAgIGZvciAoY29uc3QgYXV0byYgc3RyZWFtIDogc3RyZWFtc18pIHsKLSAgICAgaWYgKCFzdHJl YW0gfHwgc3RyZWFtLT5Jc0VuYWJsZWQoKSAhPSBlbmFibGVkKQotICAgICAgIGNvbnRpbnVlOwot LSAgICBpZiAoYXZfc3RyZWFtX2dldF9maXJzdF9kdHMoc3RyZWFtLT5hdl9zdHJlYW0oKSkgPT0g a0ludmFsaWRQVFNNYXJrZXIpCi0rICAgIGlmIChzdHJlYW0tPmF2X3N0cmVhbSgpLT5zdGFydF90 aW1lID09IEFWX05PUFRTX1ZBTFVFKQotICAgICAgIGNvbnRpbnVlOwotICAgICBpZiAoIWxvd2Vz dF9zdGFydF90aW1lX3N0cmVhbSB8fAotICAgICAgICAgc3RyZWFtLT5zdGFydF90aW1lKCkgPCBs b3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0tPnN0YXJ0X3RpbWUoKSkgewotQEAgLTE2MTgsNyArMTYw Niw3IEBACi0gICAgIGlmIChzdHJlYW0tPnR5cGUoKSAhPSBEZW11eGVyU3RyZWFtOjpWSURFTykK LSAgICAgICBjb250aW51ZTsKLSAKLS0gICAgaWYgKGF2X3N0cmVhbV9nZXRfZmlyc3RfZHRzKHN0 cmVhbS0+YXZfc3RyZWFtKCkpID09IGtJbnZhbGlkUFRTTWFya2VyKQotKyAgICBpZiAoc3RyZWFt LT5hdl9zdHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKLSAgICAgICBjb250 aW51ZTsKLSAKLSAgICAgaWYgKCFzdHJlYW0tPklzRW5hYmxlZCgpKQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCBiL3NyY3BrZ3MvY211cy9wYXRjaGVzL2Zm bXBlZzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uZmZh OTVhYjgxMTEwMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBl ZzYucGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorLS0tIGEvaXAvZmZtcGVnLmMKKysrKyBiL2lwL2Zm bXBlZy5jCitAQCAtMjAyLDkgKzIwMiw2IEBAIHN0YXRpYyBpbnQgZmZtcGVnX29wZW4oc3RydWN0 IGlucHV0X3BsdWdpbl9kYXRhICppcF9kYXRhKQorIAkJCWJyZWFrOworIAkJfQorIAorLQkJaWYg KGNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19DQVBfVFJVTkNBVEVEKQorLQkJCWNjLT5m bGFncyB8PSBBVl9DT0RFQ19GTEFHX1RSVU5DQVRFRDsKKy0KKyAJCWlmIChhdmNvZGVjX29wZW4y KGNjLCBjb2RlYywgTlVMTCkgPCAwKSB7CisgCQkJZF9wcmludCgiY291bGQgbm90IG9wZW4gY29k ZWM6ICVkLCAlc1xuIiwgY2MtPmNvZGVjX2lkLCBhdmNvZGVjX2dldF9uYW1lKGNjLT5jb2RlY19p ZCkpOworIAkJCWVyciA9IC1JUF9FUlJPUl9VTlNVUFBPUlRFRF9GSUxFX1RZUEU7CmRpZmYgLS1n aXQgYS9zcmNwa2dzL2NtdXMvdGVtcGxhdGUgYi9zcmNwa2dzL2NtdXMvdGVtcGxhdGUKaW5kZXgg MGQxNDM2NzQ0ZjFiMi4uYTZlNGI0ZmE4NmNiOCAxMDA2NDQKLS0tIGEvc3JjcGtncy9jbXVzL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvY211cy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2NtdXMnCiBwa2duYW1lPWNtdXMKIHZlcnNpb249Mi4xMC4wCi1yZXZp c2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdz PSJwcmVmaXg9L3VzciBMRD0kQ0MiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9t IGE3MjUxMTUxMDJjMmJkOTU2NzEwMzliNTllYjlhZjczNmM1YjA3ODUgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyNS8xMTVdIGN5YW5yaXA6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9jeWFucmlwL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9jeWFucmlwL3RlbXBsYXRlIGIvc3JjcGtncy9jeWFucmlwL3RlbXBs YXRlCmluZGV4IDk3OTZlMzQ2MTYwMWEuLjVkYjMwZTAyMGQxN2UgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvY3lhbnJpcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjeWFucmlwJwogcGtnbmFtZT1jeWFucmlw CiB2ZXJzaW9uPTAuOS4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNv bgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZl bCBsaWJjZGlvLWRldmVsIGxpYmNkaW8tcGFyYW5vaWEtZGV2ZWwgbGliY3VybC1kZXZlbCBsaWJt dXNpY2JyYWluejUtZGV2ZWwiCgpGcm9tIDY4MTY0MTczMjQzNmYwY2UyMjc0MWJmMDM4OGQzNGEz ZGZlMGNjMTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDog W1BBVENIIDAyNi8xMTVdIGRlYWRiZWVmOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0K IHNyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGlu c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kZWFkYmVl Zi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUKaW5kZXggZjVmNGJmMjRiOGNi Ni4uN2I0N2U2MTVjZDQ4ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlCkBAIC0xLDE0ICsxLDE0IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdkZWFkYmVlZicKIHBrZ25hbWU9ZGVhZGJlZWYKIHZlcnNpb249MS44LjgK LXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGNyZWF0ZV93cmtzcmM9eWVzCiBidWlsZF9zdHlsZT1n bnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLW9zcyAtLWRpc2FibGUtbGZt IC0tZGlzYWJsZS1ub3RpZnkgLS1kaXNhYmxlLWd0azIiCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9t YWtlIGxpYnRvb2wgZ2V0dGV4dCBnZXR0ZXh0LWRldmVsIGludGx0b29sIHBrZy1jb25maWcKICB5 YXNtIGNsYW5nIGdsaWItZGV2ZWwiCiBtYWtlZGVwZW5kcz0iCi0gYWxzYS1saWItZGV2ZWwgZGJ1 cy1kZXZlbCBmYWFkMi1kZXZlbCBmZm1wZWctZGV2ZWwgZ3RrKzMtZGV2ZWwgaW1saWIyLWRldmVs CisgYWxzYS1saWItZGV2ZWwgZGJ1cy1kZXZlbCBmYWFkMi1kZXZlbCBmZm1wZWc0LWRldmVsIGd0 ayszLWRldmVsIGltbGliMi1kZXZlbAogIGphbnNzb24tZGV2ZWwgbGliY2RkYi1kZXZlbCBsaWJj ZGlvLWRldmVsIGxpYmN1cmwtZGV2ZWwgbGliZmxhYy1kZXZlbAogIGxpYm1hZC1kZXZlbCBsaWJw bmctZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJzbmRmaWxlLWRldmVsIGxpYnZvcmJpcy1k ZXZlbAogIGxpYnppcC1kZXZlbCBtcGcxMjMtZGV2ZWwgb3B1c2ZpbGUtZGV2ZWwgcHVsc2VhdWRp by1kZXZlbCB3YXZwYWNrLWRldmVsIgoKRnJvbSBiYjRiMTE1ZDNlZmJjNzAwOTU4MjNjM2JiYTQ2 MmM3NjM4MTFjYTliIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMjcvMTE1XSBkcm9pZGNhbS1vYnMtcGx1Z2luOiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvZHJvaWRjYW0tb2JzLXBsdWdpbi90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZHJvaWRjYW0tb2JzLXBsdWdpbi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZHJvaWRj YW0tb2JzLXBsdWdpbi90ZW1wbGF0ZQppbmRleCBmYzljOWJmNmI5ZDU0Li5mYjA0ODA3NTRkZjRk IDEwMDY0NAotLS0gYS9zcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUKKysrIGIv c3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnZHJvaWRjYW0tb2JzLXBsdWdpbicKIHBrZ25hbWU9ZHJvaWRjYW0t b2JzLXBsdWdpbgogdmVyc2lvbj0yLjAuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9Z251LW1ha2VmaWxlCiBtYWtlX3VzZV9lbnY9eWVzCiBtYWtlX2J1aWxkX2FyZ3M9IkFM TE9XX1NUQVRJQz1ubyIKCkZyb20gY2Q5YjZkNjY2OGM4NmQ3NDdlNGQ2ZDVlNDJmYTc4NjRiZjZh YzZjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDI4LzExNV0gZHJvaWRjYW06IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9kcm9pZGNhbS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUg Yi9zcmNwa2dzL2Ryb2lkY2FtL3RlbXBsYXRlCmluZGV4IDFjM2YxYjhiMWZjNjcuLjMyYTkyMjBi NzlhNGQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9kcm9pZGNhbS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J2Ryb2lkY2FtJwogcGtnbmFtZT1kcm9pZGNhbQogdmVyc2lvbj0xLjguMgotcmV2aXNpb249Mgor cmV2aXNpb249MwogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBtYWtlX2J1aWxkX2FyZ3M9IlVT Qk1VWEQ9LWx1c2JtdXhkLTIuMCBKUEVHPS1sdHVyYm9qcGVnIgogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIgoKRnJvbSA5YjE5NDFmMWUzMjdhOTdmODU3MDNiMWQ1MGRkMTJhZmE3ZTEzOTdl IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw MjkvMTE1XSBmZm1wZWd0aHVtYm5haWxlcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAu Li4vZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoICAgfCAyMDIgKysrKysr KysrKysrKysrKysrCiBzcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3RlbXBsYXRlICAgICAgICAg ICAgfCAgIDYgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMjA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci9wYXRj aGVzL2ZmbXBlZzYucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVy L3BhdGNoZXMvZmZtcGVnNi5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hl cy9mZm1wZWc2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAu LjM2M2ZmMzVhMjg0MTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFp bGVyL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApAQCAtMCwwICsxLDIwMiBAQAorLS0tIGEvbGliZmZt cGVndGh1bWJuYWlsZXIvbW92aWVkZWNvZGVyLmNwcAkyMDE3LTExLTIxIDE0OjA2OjU3LjAwMDAw MDAwMCAtMDUwMAorKysrIGIvbGliZmZtcGVndGh1bWJuYWlsZXIvbW92aWVkZWNvZGVyLmNwcAky MDIzLTA1LTA1IDEzOjE0OjQ3Ljk0NjU2MDY2OCAtMDQwMAorQEAgLTQxLDExICs0MSw2IEBACisg bmFtZXNwYWNlIGZmbXBlZ3RodW1ibmFpbGVyCisgeworIAorLXN0cnVjdCBTaWxlbmNlTG9nTGV2 ZWwKKy17CistICAgIFNpbGVuY2VMb2dMZXZlbCgpIHsgYXZfbG9nX3NldF9sZXZlbChBVl9MT0df UVVJRVQpOyB9CistfTsKKy0KKyBNb3ZpZURlY29kZXI6Ok1vdmllRGVjb2RlcihBVkZvcm1hdENv bnRleHQqIHBhdkNvbnRleHQpCisgOiBtX1ZpZGVvU3RyZWFtKC0xKQorICwgbV9wRm9ybWF0Q29u dGV4dChwYXZDb250ZXh0KQorQEAgLTcwLDggKzY1LDYgQEAKKyAKKyB2b2lkIE1vdmllRGVjb2Rl cjo6aW5pdGlhbGl6ZShjb25zdCBzdHJpbmcmIGZpbGVuYW1lLCBib29sIHByZWZlckVtYmVkZGVk TWV0YWRhdGEpCisgeworLSAgICBhdl9yZWdpc3Rlcl9hbGwoKTsKKy0gICAgYXZjb2RlY19yZWdp c3Rlcl9hbGwoKTsKKyAgICAgYXZmb3JtYXRfbmV0d29ya19pbml0KCk7CisgCisgICAgIHN0cmlu ZyBpbnB1dEZpbGUgPSBmaWxlbmFtZSA9PSAiLSIgPyAicGlwZToiIDogZmlsZW5hbWU7CitAQCAt OTcsOCArOTAsNyBAQAorIHsKKyAgICAgaWYgKG1fcFZpZGVvQ29kZWNDb250ZXh0KQorICAgICB7 CistICAgICAgICBhdmNvZGVjX2Nsb3NlKG1fcFZpZGVvQ29kZWNDb250ZXh0KTsKKy0gICAgICAg IG1fcFZpZGVvQ29kZWNDb250ZXh0ID0gbnVsbHB0cjsKKysgICAgICAgIGF2Y29kZWNfZnJlZV9j b250ZXh0KCZtX3BWaWRlb0NvZGVjQ29udGV4dCk7CisgICAgIH0KKyAKKyAgICAgaWYgKCghbV9G b3JtYXRDb250ZXh0V2FzR2l2ZW4pICYmIG1fcEZvcm1hdENvbnRleHQpCitAQCAtMTUyLDEwICsx NDQsMTAgQEAKKyAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBtX3BGb3JtYXRDb250 ZXh0LT5uYl9zdHJlYW1zOyArK2kpCisgICAgIHsKKyAgICAgICAgIEFWU3RyZWFtICpzdHJlYW0g PSBtX3BGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldOworLSAgICAgICAgYXV0byBjdHggPSBtX3BG b3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlYzsKKy0gICAgICAgIGlmIChjdHgtPmNvZGVj X3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKQorKyAgICAgICAgYXV0byBwYXIgPSBtX3BGb3Jt YXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3BhcjsKKysgICAgICAgIGlmIChwYXItPmNvZGVj X3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKQorICAgICAgICAgeworLSAgICAgICAgICAgIGlm ICghcHJlZmVyRW1iZWRkZWRNZXRhZGF0YSB8fCAhaXNTdGlsbEltYWdlQ29kZWMoY3R4LT5jb2Rl Y19pZCkpCisrICAgICAgICAgICAgaWYgKCFwcmVmZXJFbWJlZGRlZE1ldGFkYXRhIHx8ICFpc1N0 aWxsSW1hZ2VDb2RlYyhwYXItPmNvZGVjX2lkKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgIHZpZGVvU3RyZWFtcy5wdXNoX2JhY2soaSk7CisgICAgICAgICAgICAgICAgIGNvbnRp bnVlOworQEAgLTIwMyw4ICsxOTUsNyBAQAorICAgICB9CisgCisgICAgIG1fcFZpZGVvU3RyZWFt ID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1ttX1ZpZGVvU3RyZWFtXTsKKy0gICAgbV9wVmlk ZW9Db2RlY0NvbnRleHQgPSBtX3BWaWRlb1N0cmVhbS0+Y29kZWM7CistICAgIG1fcFZpZGVvQ29k ZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihtX3BWaWRlb0NvZGVjQ29udGV4dC0+Y29kZWNfaWQp OworKyAgICBtX3BWaWRlb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIobV9wVmlkZW9TdHJl YW0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgCisgICAgIGlmIChtX3BWaWRlb0NvZGVjID09IG51 bGxwdHIpCisgICAgIHsKK0BAIC0yMTQsNiArMjA1LDIwIEBACisgICAgICAgICB0aHJvdyBsb2dp Y19lcnJvcigiVmlkZW8gQ29kZWMgbm90IGZvdW5kIik7CisgICAgIH0KKyAKKysgICAgbV9wVmlk ZW9Db2RlY0NvbnRleHQgPSBhdmNvZGVjX2FsbG9jX2NvbnRleHQzKG1fcFZpZGVvQ29kZWMpOwor KworKyAgICBpZiAobV9wVmlkZW9Db2RlY0NvbnRleHQgPT0gbnVsbHB0cikKKysgICAgeworKyAg ICAgICAgZGVzdHJveSgpOworKyAgICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIkNvdWxkIG5vdCBh bGxvY2F0ZSB2aWRlbyBjb2RlYyBjb250ZXh0Iik7CisrICAgIH0KKysKKysgICAgaWYgKGF2Y29k ZWNfcGFyYW1ldGVyc190b19jb250ZXh0KG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BWaWRlb1N0 cmVhbS0+Y29kZWNwYXIpIDwgMCkKKysgICAgeworKyAgICAgICAgZGVzdHJveSgpOworKyAgICAg ICAgdGhyb3cgbG9naWNfZXJyb3IoIkNvdWxkIG5vdCBjb25maWd1cmUgdmlkZW8gY29kZWMgY29u dGV4dCIpOworKyAgICB9CisrCisgICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0LT53b3JrYXJvdW5k X2J1Z3MgPSAxOworIAorICAgICBpZiAoYXZjb2RlY19vcGVuMihtX3BWaWRlb0NvZGVjQ29udGV4 dCwgbV9wVmlkZW9Db2RlYywgbnVsbHB0cikgPCAwKQorQEAgLTM4NiwxMyArMzkxLDYgQEAKKyAK KyB2b2lkIE1vdmllRGVjb2Rlcjo6aW5pdGlhbGl6ZUZpbHRlckdyYXBoKGNvbnN0IEFWUmF0aW9u YWwmIHRpbWVCYXNlLCBjb25zdCBzdGQ6OnN0cmluZyYgc2l6ZSwgYm9vbCBtYWludGFpbkFzcGVj dFJhdGlvKQorIHsKKy0gICAgc3RhdGljIGNvbnN0IEFWUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXRz W10gPSB7IEFWX1BJWF9GTVRfUkdCMjQsIEFWX1BJWF9GTVRfTk9ORSB9OworLQorLSAgICBhdXRv IGRlbCA9IFtdIChBVkJ1ZmZlclNpbmtQYXJhbXMqIHApIHsgYXZfZnJlZXAocCk7IH07CistICAg IHN0ZDo6dW5pcXVlX3B0cjxBVkJ1ZmZlclNpbmtQYXJhbXMsIGRlY2x0eXBlKGRlbCk+IGJ1ZmZl cnNpbmtQYXJhbXMoYXZfYnVmZmVyc2lua19wYXJhbXNfYWxsb2MoKSwgZGVsKTsKKy0KKy0gICAg YXZmaWx0ZXJfcmVnaXN0ZXJfYWxsKCk7CistCisgICAgIG1fcEZpbHRlckdyYXBoID0gYXZmaWx0 ZXJfZ3JhcGhfYWxsb2MoKTsKKyAgICAgYXNzZXJ0KG1fcEZpbHRlckdyYXBoKTsKKyAKK0BAIC00 MDQsMTAgKzQwMiw4IEBACisgCisgICAgIGNoZWNrUmMoYXZmaWx0ZXJfZ3JhcGhfY3JlYXRlX2Zp bHRlcigmbV9wRmlsdGVyU291cmNlLCBhdmZpbHRlcl9nZXRfYnlfbmFtZSgiYnVmZmVyIiksICJ0 aHVtYl9idWZmZXIiLCBzcy5zdHIoKS5jX3N0cigpLCBudWxscHRyLCBtX3BGaWx0ZXJHcmFwaCks CisgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgZmlsdGVyIHNvdXJjZSIpOworLSAgICBi dWZmZXJzaW5rUGFyYW1zLT5waXhlbF9mbXRzID0gcGl4ZWxGb3JtYXRzOworLSAgICBjaGVja1Jj KGF2ZmlsdGVyX2dyYXBoX2NyZWF0ZV9maWx0ZXIoJm1fcEZpbHRlclNpbmssIGF2ZmlsdGVyX2dl dF9ieV9uYW1lKCJidWZmZXJzaW5rIiksICJ0aHVtYl9idWZmZXJzaW5rIiwgbnVsbHB0ciwgYnVm ZmVyc2lua1BhcmFtcy5nZXQoKSwgbV9wRmlsdGVyR3JhcGgpLAorKyAgICBjaGVja1JjKGF2Zmls dGVyX2dyYXBoX2NyZWF0ZV9maWx0ZXIoJm1fcEZpbHRlclNpbmssIGF2ZmlsdGVyX2dldF9ieV9u YW1lKCJidWZmZXJzaW5rIiksICJ0aHVtYl9idWZmZXJzaW5rIiwgbnVsbHB0ciwgbnVsbHB0ciwg bV9wRmlsdGVyR3JhcGgpLAorICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIGZpbHRlciBz aW5rIik7CistICAgIGJ1ZmZlcnNpbmtQYXJhbXMucmVsZWFzZSgpOworIAorICAgICBBVkZpbHRl ckNvbnRleHQqIHlhZGlmRmlsdGVyID0gbnVsbHB0cjsKKyAgICAgaWYgKG1fcEZyYW1lLT5pbnRl cmxhY2VkX2ZyYW1lICE9IDApCitAQCAtNTAwLDE1ICs0OTYsMTUgQEAKKyAgICAgfQorIAorICAg ICBjaGVja1JjKGF2X3NlZWtfZnJhbWUobV9wRm9ybWF0Q29udGV4dCwgLTEsIHRpbWVzdGFtcCwg MCksICJTZWVraW5nIGluIHZpZGVvIGZhaWxlZCIpOworLSAgICBhdmNvZGVjX2ZsdXNoX2J1ZmZl cnMobV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1ttX1ZpZGVvU3RyZWFtXS0+Y29kZWMpOworKyAg ICBhdmNvZGVjX2ZsdXNoX2J1ZmZlcnMobV9wVmlkZW9Db2RlY0NvbnRleHQpOworIAorICAgICBp bnQga2V5RnJhbWVBdHRlbXB0cyA9IDA7CistICAgIGJvb2wgZ290RnJhbWUgPSAwOworKyAgICBi b29sIGdvdEZyYW1lOworIAorICAgICBkbworICAgICB7CisgICAgICAgICBpbnQgY291bnQgPSAw OworLSAgICAgICAgZ290RnJhbWUgPSAwOworKyAgICAgICAgZ290RnJhbWUgPSBmYWxzZTsKKyAK KyAgICAgICAgIHdoaWxlICghZ290RnJhbWUgJiYgY291bnQgPCAyMCkKKyAgICAgICAgIHsKK0BA IC01NTIsMTcgKzU0OCwzMyBAQAorICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CisgCist ICAgIGF2X2ZyYW1lX3VucmVmKG1fcEZyYW1lKTsKKy0KKy0gICAgaW50IGZyYW1lRmluaXNoZWQ7 CisrICAgIGludCByYyA9IGF2Y29kZWNfc2VuZF9wYWNrZXQobV9wVmlkZW9Db2RlY0NvbnRleHQs IG1fcFBhY2tldCk7CisrICAgIGlmKHJjID09IEFWRVJST1IoRUFHQUlOKSkKKysgICAgeworKyAg ICAgICAgcmMgPSAwOworKyAgICB9CisgCistICAgIGludCBieXRlc0RlY29kZWQgPSBhdmNvZGVj X2RlY29kZV92aWRlbzIobV9wVmlkZW9Db2RlY0NvbnRleHQsIG1fcEZyYW1lLCAmZnJhbWVGaW5p c2hlZCwgbV9wUGFja2V0KTsKKy0gICAgaWYgKGJ5dGVzRGVjb2RlZCA8IDApCisrICAgIGlmKHJj ID09IEFWRVJST1JfRU9GKQorKyAgICB7CisrICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0K KysgICAgZWxzZSBpZihyYyA8IDApCisgICAgIHsKKy0gICAgICAgIHRocm93IGxvZ2ljX2Vycm9y KCJGYWlsZWQgdG8gZGVjb2RlIHZpZGVvIGZyYW1lOiBieXRlc0RlY29kZWQgPCAwIik7CisrICAg ICAgICB0aHJvdyBsb2dpY19lcnJvcigiRmFpbGVkIHRvIGRlY29kZSB2aWRlbyBmcmFtZTogYXZj b2RlY19zZW5kX3BhY2tldCgpIDwgMCIpOworICAgICB9CisgCistICAgIHJldHVybiBmcmFtZUZp bmlzaGVkID4gMDsKKysgICAgcmMgPSBhdmNvZGVjX3JlY2VpdmVfZnJhbWUobV9wVmlkZW9Db2Rl Y0NvbnRleHQsIG1fcEZyYW1lKTsKKysgICAgc3dpdGNoKHJjKQorKyAgICB7CisrICAgICAgICBj YXNlIDA6CisrICAgICAgICAgICAgcmV0dXJuIHRydWU7CisrCisrICAgICAgICBjYXNlIEFWRVJS T1IoRUFHQUlOKToKKysgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrCisrICAgICAgICBkZWZh dWx0OgorKyAgICAgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJGYWlsZWQgdG8gZGVjb2RlIHZp ZGVvIGZyYW1lOiBhdmNvZGVjX3JlY2VpdmVfZnJhbWUoKSA8IDAiKTsKKysgICAgfQorIH0KKyAK KyBib29sIE1vdmllRGVjb2Rlcjo6Z2V0VmlkZW9QYWNrZXQoKQorQEAgLTU3MCw4ICs1ODIsNiBA QAorICAgICBib29sIGZyYW1lc0F2YWlsYWJsZSA9IHRydWU7CisgICAgIGJvb2wgZnJhbWVEZWNv ZGVkID0gZmFsc2U7CisgCistICAgIGludCBhdHRlbXB0cyA9IDA7CistCisgICAgIGlmIChtX3BQ YWNrZXQpCisgICAgIHsKKyAgICAgICAgIGF2X3BhY2tldF91bnJlZihtX3BQYWNrZXQpOworQEAg LTU4MCw2ICs1OTAsNyBAQAorIAorICAgICBtX3BQYWNrZXQgPSBuZXcgQVZQYWNrZXQoKTsKKyAK KysKKyAgICAgd2hpbGUgKGZyYW1lc0F2YWlsYWJsZSAmJiAhZnJhbWVEZWNvZGVkKQorICAgICB7 CisgICAgICAgICBmcmFtZXNBdmFpbGFibGUgPSBhdl9yZWFkX2ZyYW1lKG1fcEZvcm1hdENvbnRl eHQsIG1fcFBhY2tldCkgPj0gMDsKK0BAIC02NDQsNyArNjU1LDcgQEAKKyAKKyBpbnQzMl90IE1v dmllRGVjb2Rlcjo6Z2V0U3RyZWFtUm90YXRpb24oKQorIHsKKy0gICAgaW50MzJfdCogbWF0cml4 ID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4oYXZfc3RyZWFtX2dldF9zaWRlX2RhdGEobV9w VmlkZW9TdHJlYW0sIEFWX1BLVF9EQVRBX0RJU1BMQVlNQVRSSVgsIG51bGxwdHIpKTsKKysgICAg YXV0byBtYXRyaXggPSByZWludGVycHJldF9jYXN0PGludDMyX3QqPihhdl9zdHJlYW1fZ2V0X3Np ZGVfZGF0YShtX3BWaWRlb1N0cmVhbSwgQVZfUEtUX0RBVEFfRElTUExBWU1BVFJJWCwgbnVsbHB0 cikpOworICAgICBpZiAobWF0cml4KQorICAgICB7CisgICAgICAgICBhdXRvIGFuZ2xlID0gbHJv dW5kKGF2X2Rpc3BsYXlfcm90YXRpb25fZ2V0KG1hdHJpeCkpOworCistLS0gYS9saWJmZm1wZWd0 aHVtYm5haWxlci9tb3ZpZWRlY29kZXIuaAkyMDE3LTExLTEyIDA0OjIzOjM4LjAwMDAwMDAwMCAt MDUwMAorKysrIGIvbGliZmZtcGVndGh1bWJuYWlsZXIvbW92aWVkZWNvZGVyLmgJMjAyMy0wNS0w NSAxMzoyNjowNy4wOTU1Mjk5MTEgLTA0MDAKK0BAIC03OCw3ICs3OCw3IEBACisgICAgIGludCAg ICAgICAgICAgICAgICAgICAgIG1fVmlkZW9TdHJlYW07DQorICAgICBBVkZvcm1hdENvbnRleHQq ICAgICAgICBtX3BGb3JtYXRDb250ZXh0Ow0KKyAgICAgQVZDb2RlY0NvbnRleHQqICAgICAgICAg bV9wVmlkZW9Db2RlY0NvbnRleHQ7DQorLSAgICBBVkNvZGVjKiAgICAgICAgICAgICAgICBtX3BW aWRlb0NvZGVjOw0KKysgICAgY29uc3QgQVZDb2RlYyogICAgICAgICAgbV9wVmlkZW9Db2RlYzsN CisgICAgIEFWRmlsdGVyR3JhcGgqICAgICAgICAgIG1fcEZpbHRlckdyYXBoOw0KKyAgICAgQVZG aWx0ZXJDb250ZXh0KiAgICAgICAgbV9wRmlsdGVyU291cmNlOw0KKyAgICAgQVZGaWx0ZXJDb250 ZXh0KiAgICAgICAgbV9wRmlsdGVyU2luazsNCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZ3Ro dW1ibmFpbGVyL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZQpp bmRleCAwMzllZWE3NjIyYjM5Li4zNWQ1NDYwMThkMTJhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2Zm bXBlZ3RodW1ibmFpbGVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWd0aHVt Ym5haWxlcicKIHBrZ25hbWU9ZmZtcGVndGh1bWJuYWlsZXIKIHZlcnNpb249Mi4yLjIKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWciCiBtYWtlZGVwZW5kcz0ibGlicG5nLWRldmVsIGxpYmpwZWctdHVyYm8tZGV2ZWwg ZmZtcGVnLWRldmVsIgpAQCAtOSw4ICs5LDggQEAgZGVwZW5kcz0iZmZtcGVnIgogc2hvcnRfZGVz Yz0iTGlnaHR3ZWlnaHQgdmlkZW8gdGh1bWJuYWlsZXIiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8 b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKLWhvbWVw YWdlPSJodHRwczovL2dpdGh1Yi5jb20vZGlya3ZkYi8ke3BrZ25hbWV9IgotZGlzdGZpbGVzPSIk e2hvbWVwYWdlfS9yZWxlYXNlcy9kb3dubG9hZC8ke3ZlcnNpb259LyR7cGtnbmFtZX0tJHt2ZXJz aW9ufS50YXIuYnoyIgoraG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9kaXJrdmRiIgorZGlz dGZpbGVzPSIke2hvbWVwYWdlfS8ke3BrZ25hbWV9L3JlbGVhc2VzL2Rvd25sb2FkLyR7dmVyc2lv bn0vJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci5iejIiCiBjaGVja3N1bT0xY2IyNDA1OWMzODIy M2Y2NTdiMzAwYzg0ZGQ4MDQ5MWI3MDQwZDRiNjk0NzFjNGZlYTY5YmU4NjJiYzk5YjViCiAKIHBv c3RfaW5zdGFsbCgpIHsKCkZyb20gNzk2MWNmZjNlNDYzMWRjYjI2MWI3MmYwMzUyZDI4ZjU0MmVk YTA4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDMwLzExNV0gZmZtcGVndGh1bWJzOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWd0aHVt YnMvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZQppbmRleCA1ZjBiOTQx NGRhZGFmLi4xMWI4ODE5MzUyOGY0IDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZmbXBlZ3RodW1icy90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZmbXBlZ3RodW1icycKIHBrZ25hbWU9ZmZtcGVndGh1 bWJzCiB2ZXJzaW9uPTIyLjEyLjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMga2NvcmVhZGRvbnMg a2NvbmZpZy1kZXZlbAogIHBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIGdldHRl eHQiCgpGcm9tIDk0M2YyZTRmN2UzYWM2ZWRmYzgwM2YwMWE0ZjNjYmEwMzhlMzc0OWMgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzMS8xMTVd IGZmbXMyOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZmZtczIvcGF0Y2hl cy9mZm1wZWc1LnBhdGNoIHwgNDI0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyY3Br Z3MvZmZtczIvdGVtcGxhdGUgICAgICAgICAgICAgIHwgICAyICstCiAyIGZpbGVzIGNoYW5nZWQs IDQyNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9mZm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Zm bXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjE0NzlmYWJj YWZjYjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5w YXRjaApAQCAtMCwwICsxLDQyNCBAQAorRnJvbSA0NTY3MzE0OWU5YTJmNTU4Njg1NWFkNDcyZTMw NTkwODRlYWEzNmIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVyZWsgQnVpdGVu aHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CitEYXRlOiBUdWUsIDQgTWF5IDIwMjEg MTQ6NDE6MjEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIGF1dG8gZm9yIEFWQ29kZWMKKwor VGhlIGdlbml1c2VzIG92ZXIgYXQgRkZtcGVnIGRlY2lkZWQgdG8gY29uc3RpZnkgdGhpcyBBUEks IHNvIG9sZAordmVyc2lvbnMgb2YgdGhlIGxpYnJhcnkgd2lsbCByZXR1cm4gQVZDb2RlYyAqLCB3 aGlsZSBuZXcgdmVyc2lvbnMKK29mIHRoZSBsaWJhcnkgd2lsbCByZXR1cm4gY29uc3QgQVZDb2Rl YyAqLCB3aGljaCwgaW4gQysrLCBhcmUgbm90CitPSyB0byBjb252ZXJ0IGJldHdlZW4uCisKK1Jh dGhlciB0aGFuIHVzZSBzb21lIG1hY3JvIGhlbGwgaW4gZmZtc2NvbXBhdC5oLCB3ZSBjYW4gd29y ayBhcm91bmQKK3RoaXMgYnkgdXNpbmcgYXV0by4KKworR3Jvc3MuCisKK1NpZ25lZC1vZmYtYnk6 IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgorLS0tCisgc3Jj L2NvcmUvYXVkaW9zb3VyY2UuY3BwIHwgMiArLQorIHNyYy9jb3JlL2luZGV4aW5nLmNwcCAgICB8 IDYgKysrLS0tCisgc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwIHwgMiArLQorIDMgZmlsZXMgY2hh bmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3Jj L2NvcmUvYXVkaW9zb3VyY2UuY3BwIGIvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwCitpbmRleCBl NGNlOTdjLi5hYzA5NjY2IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwCisr KysgYi9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKK0BAIC00NjksNyArNDY5LDcgQEAgdm9pZCBG Rk1TX0F1ZGlvU291cmNlOjpPcGVuRmlsZSgpIHsKKyAKKyAgICAgTEFWRk9wZW5GaWxlKFNvdXJj ZUZpbGUuY19zdHIoKSwgRm9ybWF0Q29udGV4dCwgVHJhY2tOdW1iZXIpOworIAorLSAgICBBVkNv ZGVjICpDb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNb VHJhY2tOdW1iZXJdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAgICBhdXRvICpDb2RlYyA9IGF2 Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tOdW1iZXJdLT5j b2RlY3Bhci0+Y29kZWNfaWQpOworICAgICBpZiAoQ29kZWMgPT0gbnVsbHB0cikKKyAgICAgICAg IHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfREVDT0RJTkcsIEZGTVNfRVJST1JfQ09E RUMsCisgICAgICAgICAgICAgIkF1ZGlvIGNvZGVjIG5vdCBmb3VuZCIpOworZGlmZiAtLWdpdCBh L3NyYy9jb3JlL2luZGV4aW5nLmNwcCBiL3NyYy9jb3JlL2luZGV4aW5nLmNwcAoraW5kZXggZTU0 N2M1YS4uNTlmYjRlOCAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2luZGV4aW5nLmNwcAorKysrIGIv c3JjL2NvcmUvaW5kZXhpbmcuY3BwCitAQCAtMzg0LDcgKzM4NCw3IEBAIEZGTVNfVHJhY2tUeXBl IEZGTVNfSW5kZXhlcjo6R2V0VHJhY2tUeXBlKGludCBUcmFjaykgeworIH0KKyAKKyBjb25zdCBj aGFyICpGRk1TX0luZGV4ZXI6OkdldFRyYWNrQ29kZWMoaW50IFRyYWNrKSB7CistICAgIEFWQ29k ZWMgKmNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tU cmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAgIGF1dG8gKmNvZGVjID0gYXZjb2RlY19m aW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5jb2Rl Y19pZCk7CisgICAgIHJldHVybiBjb2RlYyA/IGNvZGVjLT5uYW1lIDogbnVsbHB0cjsKKyB9Cisg CitAQCAtNDAyLDcgKzQwMiw3IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGlu ZygpIHsKKyAgICAgICAgICAgICBVc2VEVFMpOworIAorICAgICAgICAgaWYgKEluZGV4TWFzay5j b3VudChpKSAmJiBGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfdHlw ZSA9PSBBVk1FRElBX1RZUEVfVklERU8pIHsKKy0gICAgICAgICAgICBBVkNvZGVjICpWaWRlb0Nv ZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29k ZWNwYXItPmNvZGVjX2lkKTsKKysgICAgICAgICAgICBhdXRvICpWaWRlb0NvZGVjID0gYXZjb2Rl Y19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVj X2lkKTsKKyAgICAgICAgICAgICBpZiAoIVZpZGVvQ29kZWMpIHsKKyAgICAgICAgICAgICAgICAg Rm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+ZGlzY2FyZCA9IEFWRElTQ0FSRF9BTEw7CisgICAg ICAgICAgICAgICAgIEluZGV4TWFzay5lcmFzZShpKTsKK0BAIC00MzMsNyArNDMzLDcgQEAgRkZN U19JbmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAgICAgICBJ bmRleE1hc2suaW5zZXJ0KGkpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0gZWxzZSBpZiAo SW5kZXhNYXNrLmNvdW50KGkpICYmIEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFy LT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTykgeworLSAgICAgICAgICAgIEFWQ29k ZWMgKkF1ZGlvQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJl YW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAgICAgICAgICAgIGF1dG8gKkF1ZGlvQ29k ZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2Rl Y3Bhci0+Y29kZWNfaWQpOworICAgICAgICAgICAgIGlmIChBdWRpb0NvZGVjID09IG51bGxwdHIp CisgICAgICAgICAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfQ09ERUMs IEZGTVNfRVJST1JfVU5TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAgICAiQXVkaW8gY29k ZWMgbm90IGZvdW5kIik7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwIGIv c3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwCitpbmRleCBiODg5OTcwLi44OTU2YzIyIDEwMDY0NAor LS0tIGEvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwCisrKysgYi9zcmMvY29yZS92aWRlb3NvdXJj ZS5jcHAKK0BAIC0xNzEsNyArMTcxLDcgQEAgRkZNU19WaWRlb1NvdXJjZTo6RkZNU19WaWRlb1Nv dXJjZShjb25zdCBjaGFyICpTb3VyY2VGaWxlLCBGRk1TX0luZGV4ICZJbmRleCwgaW4KKyAKKyAg ICAgICAgIExBVkZPcGVuRmlsZShTb3VyY2VGaWxlLCBGb3JtYXRDb250ZXh0LCBWaWRlb1RyYWNr KTsKKyAKKy0gICAgICAgIEFWQ29kZWMgKkNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9y bWF0Q29udGV4dC0+c3RyZWFtc1tWaWRlb1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysg ICAgICAgIGF1dG8gKkNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+ c3RyZWFtc1tWaWRlb1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgICAgIGlmIChD b2RlYyA9PSBudWxscHRyKQorICAgICAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNf RVJST1JfREVDT0RJTkcsIEZGTVNfRVJST1JfQ09ERUMsCisgICAgICAgICAgICAgICAgICJWaWRl byBjb2RlYyBub3QgZm91bmQiKTsKKy0tIAorMi40MC4wCisKK0Zyb20gOTZjYmYzOGVhOTM4MTgy OWExMzE0ZjQzMmEyYzYwNDk1ZGNlZmFhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgorRGF0ZTogVHVl LCA0IE1heSAyMDIxIDE0OjEyOjQxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGFsbDogVXBkYXRl IEFWUGFja2V0IEFQSSB1c2FnZQorCitBVlBhY2tldHMgbXVzdCBhbGwgYmUgb24gdGhlIGhlYXAg bm93LCBzaW5jZSBpdCBpcyBubyBsb25nZXIKK3BhcnQgb2YgdGhlIGxpYmF2KiBBQkkuCisKK1Np Z25lZC1vZmYtYnk6IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29t PgorLS0tCisgc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwIHwgMTYgKysrKysrLS0tLQorIHNyYy9j b3JlL2luZGV4aW5nLmNwcCAgICB8IDYzICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0KKyBzcmMvY29yZS9pbmRleGluZy5oICAgICAgfCAgNCArLS0KKyBzcmMvY29yZS91 dGlscy5jcHAgICAgICAgfCAgNiAtLS0tCisgc3JjL2NvcmUvdXRpbHMuaCAgICAgICAgIHwgIDEg LQorIHNyYy9jb3JlL3ZpZGVvc291cmNlLmNwcCB8IDMwICsrKysrKysrKystLS0tLS0tLS0KKyA2 IGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygtKQorCitkaWZm IC0tZ2l0IGEvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwIGIvc3JjL2NvcmUvYXVkaW9zb3VyY2Uu Y3BwCitpbmRleCAzN2NmOWFlLi5lNGNlOTdjIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvYXVkaW9z b3VyY2UuY3BwCisrKysgYi9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKK0BAIC0yODUsMTAgKzI4 NSwxNSBAQCBGRk1TX0F1ZGlvU291cmNlOjpBdWRpb0Jsb2NrICpGRk1TX0F1ZGlvU291cmNlOjpD YWNoZUJsb2NrKENhY2hlSXRlcmF0b3IgJnBvcykgeworIGludCBGRk1TX0F1ZGlvU291cmNlOjpE ZWNvZGVOZXh0QmxvY2soQ2FjaGVJdGVyYXRvciAqcG9zKSB7CisgICAgIEN1cnJlbnRGcmFtZSA9 ICZGcmFtZXNbUGFja2V0TnVtYmVyXTsKKyAKKy0gICAgQVZQYWNrZXQgUGFja2V0OworLSAgICBp ZiAoIVJlYWRQYWNrZXQoJlBhY2tldCkpCisrICAgIEFWUGFja2V0ICpQYWNrZXQgPSBhdl9wYWNr ZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQYWNrZXQpCisrICAgICAgICB0aHJvdyBGRk1TX0V4Y2Vw dGlvbihGRk1TX0VSUk9SX1BBUlNFUiwgRkZNU19FUlJPUl9BTExPQ0FUSU9OX0ZBSUxFRCwKKysg ICAgICAgICAgICAiQ291bGQgbm90IGFsbG9jYXRlIHBhY2tldC4iKTsKKysgICAgaWYgKCFSZWFk UGFja2V0KFBhY2tldCkpIHsKKysgICAgICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworICAg ICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9QQVJTRVIsIEZGTVNfRVJST1Jf VU5LTk9XTiwKKyAgICAgICAgICAgICAiUmVhZFBhY2tldCB1bmV4cGVjdGVkbHkgZmFpbGVkIHRv IHJlYWQgYSBwYWNrZXQiKTsKKysgICAgfQorIAorICAgICAvLyBSZWFkUGFja2V0IG1heSBoYXZl IGNoYW5nZWQgdGhlIHBhY2tldCBudW1iZXIKKyAgICAgQ3VycmVudEZyYW1lID0gJkZyYW1lc1tQ YWNrZXROdW1iZXJdOworQEAgLTI5Nyw4ICszMDIsOSBAQCBpbnQgRkZNU19BdWRpb1NvdXJjZTo6 RGVjb2RlTmV4dEJsb2NrKENhY2hlSXRlcmF0b3IgKnBvcykgeworICAgICBpbnQgTnVtYmVyT2ZT YW1wbGVzID0gMDsKKyAgICAgQXVkaW9CbG9jayAqQ2FjaGVkQmxvY2sgPSBudWxscHRyOworICAg ICAKKy0gICAgaW50IFJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQoQ29kZWNDb250ZXh0LCAmUGFj a2V0KTsKKy0gICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworKyAgICBpbnQgUmV0ID0gYXZj b2RlY19zZW5kX3BhY2tldChDb2RlY0NvbnRleHQsIFBhY2tldCk7CisrICAgIGF2X3BhY2tldF91 bnJlZihQYWNrZXQpOworKyAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAKKyAgICAgYXZf ZnJhbWVfdW5yZWYoRGVjb2RlRnJhbWUpOworICAgICBSZXQgPSBhdmNvZGVjX3JlY2VpdmVfZnJh bWUoQ29kZWNDb250ZXh0LCBEZWNvZGVGcmFtZSk7CitAQCAtNTEzLDggKzUxOSw2IEBAIHZvaWQg RkZNU19BdWRpb1NvdXJjZTo6U2VlaygpIHsKKyB9CisgCisgYm9vbCBGRk1TX0F1ZGlvU291cmNl OjpSZWFkUGFja2V0KEFWUGFja2V0ICpQYWNrZXQpIHsKKy0gICAgSW5pdE51bGxQYWNrZXQoKlBh Y2tldCk7CistCisgICAgIHdoaWxlIChhdl9yZWFkX2ZyYW1lKEZvcm1hdENvbnRleHQsIFBhY2tl dCkgPj0gMCkgeworICAgICAgICAgaWYgKFBhY2tldC0+c3RyZWFtX2luZGV4ID09IFRyYWNrTnVt YmVyKSB7CisgICAgICAgICAgICAgLy8gUmVxdWlyZWQgYmVjYXVzZSBub3QgYWxsIGF1ZGlvIHBh Y2tldHMsIGVzcGVjaWFsbHkgaW4gb2dnLCBoYXZlIGEgcHRzLiBVc2UgdGhlIHByZXZpb3VzIHZh bGlkIHBhY2tldCdzIHB0cyBpbnN0ZWFkLgorZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2luZGV4aW5n LmNwcCBiL3NyYy9jb3JlL2luZGV4aW5nLmNwcAoraW5kZXggMjNmYjk1Yi4uZTU0N2M1YSAxMDA2 NDQKKy0tLSBhL3NyYy9jb3JlL2luZGV4aW5nLmNwcAorKysrIGIvc3JjL2NvcmUvaW5kZXhpbmcu Y3BwCitAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgRkZNU19JbmRleGVyOjpDaGVja0F1ZGlvUHJv cGVydGllcyhpbnQgVHJhY2ssIEFWQ29kZWNDb250ZXh0ICpDb250ZXh0KSB7CisgICAgIH0KKyB9 CisgCistdm9pZCBGRk1TX0luZGV4ZXI6OlBhcnNlVmlkZW9QYWNrZXQoU2hhcmVkQVZDb250ZXh0 ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0ICZwa3QsIGludCAqUmVwZWF0UGljdCwKKyt2b2lkIEZG TVNfSW5kZXhlcjo6UGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4 dCwgQVZQYWNrZXQgKnBrdCwgaW50ICpSZXBlYXRQaWN0LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCAqRnJhbWVUeXBlLCBib29sICpJbnZpc2libGUsIGVudW0gQVZQ aWN0dXJlU3RydWN0dXJlICpMYXN0UGljU3RydWN0KSB7CisgICAgIGlmIChWaWRlb0NvbnRleHQu UGFyc2VyKSB7CisgICAgICAgICB1aW50OF90ICpPQjsKK0BAIC0zMzAsOCArMzMwLDggQEAgdm9p ZCBGRk1TX0luZGV4ZXI6OlBhcnNlVmlkZW9QYWNrZXQoU2hhcmVkQVZDb250ZXh0ICZWaWRlb0Nv bnRleHQsIEFWUGFja2V0ICZwa3QKKyAgICAgICAgIGF2X3BhcnNlcl9wYXJzZTIoVmlkZW9Db250 ZXh0LlBhcnNlciwKKyAgICAgICAgICAgICBWaWRlb0NvbnRleHQuQ29kZWNDb250ZXh0LAorICAg ICAgICAgICAgICZPQiwgJk9CU2l6ZSwKKy0gICAgICAgICAgICBwa3QuZGF0YSwgcGt0LnNpemUs CistICAgICAgICAgICAgcGt0LnB0cywgcGt0LmR0cywgcGt0LnBvcyk7CisrICAgICAgICAgICAg cGt0LT5kYXRhLCBwa3QtPnNpemUsCisrICAgICAgICAgICAgcGt0LT5wdHMsIHBrdC0+ZHRzLCBw a3QtPnBvcyk7CisgCisgICAgICAgICAvLyBILjI2NCAoUEFGRikgYW5kIEhFVkMgbWF5IGhhdmUg b25lIGZpZWxkIHBlciBwYWNrZXQsIHNvIHdlIG5lZWQgdG8gdHJhY2sKKyAgICAgICAgIC8vIHdo ZW4gd2UgaGF2ZSBhIGZ1bGwgb3IgaGFsZiBmcmFtZSBhdmFpbGFibGUsIGFuZCBtYXJrIG9uZSBv ZiB0aGVtIGFzCitAQCAtMzUxLDE1ICszNTEsMTUgQEAgdm9pZCBGRk1TX0luZGV4ZXI6OlBhcnNl VmlkZW9QYWNrZXQoU2hhcmVkQVZDb250ZXh0ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0ICZwa3QK KyAKKyAgICAgICAgICpSZXBlYXRQaWN0ID0gVmlkZW9Db250ZXh0LlBhcnNlci0+cmVwZWF0X3Bp Y3Q7CisgICAgICAgICAqRnJhbWVUeXBlID0gVmlkZW9Db250ZXh0LlBhcnNlci0+cGljdF90eXBl OworLSAgICAgICAgKkludmlzaWJsZSA9IChJbmNvbXBsZXRlRnJhbWUgfHwgVmlkZW9Db250ZXh0 LlBhcnNlci0+cmVwZWF0X3BpY3QgPCAwIHx8IChwa3QuZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVND QVJEKSk7CisrICAgICAgICAqSW52aXNpYmxlID0gKEluY29tcGxldGVGcmFtZSB8fCBWaWRlb0Nv bnRleHQuUGFyc2VyLT5yZXBlYXRfcGljdCA8IDAgfHwgKHBrdC0+ZmxhZ3MgJiBBVl9QS1RfRkxB R19ESVNDQVJEKSk7CisgICAgIH0gZWxzZSB7CistICAgICAgICAqSW52aXNpYmxlID0gISEocGt0 LmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCk7CisrICAgICAgICAqSW52aXNpYmxlID0gISEo cGt0LT5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpOworICAgICB9CisgCisgICAgIGlmIChW aWRlb0NvbnRleHQuQ29kZWNDb250ZXh0LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDgpCist ICAgICAgICBQYXJzZVZQOChwa3QuZGF0YVswXSwgSW52aXNpYmxlLCBGcmFtZVR5cGUpOworKyAg ICAgICAgUGFyc2VWUDgocGt0LT5kYXRhWzBdLCBJbnZpc2libGUsIEZyYW1lVHlwZSk7CisgICAg IGVsc2UgaWYgKFZpZGVvQ29udGV4dC5Db2RlY0NvbnRleHQtPmNvZGVjX2lkID09IEFWX0NPREVD X0lEX1ZQOSkKKy0gICAgICAgIFBhcnNlVlA5KHBrdC5kYXRhWzBdLCBJbnZpc2libGUsIEZyYW1l VHlwZSk7CisrICAgICAgICBQYXJzZVZQOShwa3QtPmRhdGFbMF0sIEludmlzaWJsZSwgRnJhbWVU eXBlKTsKKyB9CisgCisgdm9pZCBGRk1TX0luZGV4ZXI6OkZyZWUoKSB7CitAQCAtNDU4LDMyICs0 NTgsMzYgQEAgRkZNU19JbmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAg ICAgfQorICAgICB9CisgCistICAgIEFWUGFja2V0IFBhY2tldDsKKy0gICAgSW5pdE51bGxQYWNr ZXQoUGFja2V0KTsKKysgICAgQVZQYWNrZXQgKlBhY2tldCA9IGF2X3BhY2tldF9hbGxvYygpOwor KyAgICBpZiAoIVBhY2tldCkKKysgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJS T1JfQ09ERUMsIEZGTVNfRVJST1JfQUxMT0NBVElPTl9GQUlMRUQsCisrICAgICAgICAgICAgIkNv dWxkIG5vdCBhbGxvY2F0ZSBwYWNrZXQuIik7CisgICAgIHN0ZDo6dmVjdG9yPGludDY0X3Q+IExh c3RWYWxpZFRTKEZvcm1hdENvbnRleHQtPm5iX3N0cmVhbXMsIEFWX05PUFRTX1ZBTFVFKTsKKyAK KyAgICAgaW50NjRfdCBmaWxlc2l6ZSA9IGF2aW9fc2l6ZShGb3JtYXRDb250ZXh0LT5wYik7Cisg ICAgIGVudW0gQVZQaWN0dXJlU3RydWN0dXJlIExhc3RQaWNTdHJ1Y3QgPSBBVl9QSUNUVVJFX1NU UlVDVFVSRV9VTktOT1dOOworLSAgICB3aGlsZSAoYXZfcmVhZF9mcmFtZShGb3JtYXRDb250ZXh0 LCAmUGFja2V0KSA+PSAwKSB7CisrICAgIHdoaWxlIChhdl9yZWFkX2ZyYW1lKEZvcm1hdENvbnRl eHQsIFBhY2tldCkgPj0gMCkgeworICAgICAgICAgLy8gVXBkYXRlIHByb2dyZXNzCisgICAgICAg ICAvLyBGb3JtYXRDb250ZXh0LT5wYiBjYW4gYXBwYXJlbnRseSBiZSBOVUxMIHdoZW4gb3Blbmlu ZyBpbWFnZXMuCisgICAgICAgICBpZiAoSUMgJiYgRm9ybWF0Q29udGV4dC0+cGIpIHsKKy0gICAg ICAgICAgICBpZiAoKCpJQykoRm9ybWF0Q29udGV4dC0+cGItPnBvcywgZmlsZXNpemUsIElDUHJp dmF0ZSkpCisrICAgICAgICAgICAgaWYgKCgqSUMpKEZvcm1hdENvbnRleHQtPnBiLT5wb3MsIGZp bGVzaXplLCBJQ1ByaXZhdGUpKSB7CisrICAgICAgICAgICAgICAgIGF2X3BhY2tldF9mcmVlKCZQ YWNrZXQpOworICAgICAgICAgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9S X0NBTkNFTExFRCwgRkZNU19FUlJPUl9VU0VSLAorICAgICAgICAgICAgICAgICAgICAgIkNhbmNl bGxlZCBieSB1c2VyIik7CisrICAgICAgICAgICAgfQorICAgICAgICAgfQorLSAgICAgICAgaWYg KCFJbmRleE1hc2suY291bnQoUGFja2V0LnN0cmVhbV9pbmRleCkpIHsKKy0gICAgICAgICAgICBh dl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7CisrICAgICAgICBpZiAoIUluZGV4TWFzay5jb3VudChQ YWNrZXQtPnN0cmVhbV9pbmRleCkpIHsKKysgICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYoUGFj a2V0KTsKKyAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGlu dCBUcmFjayA9IFBhY2tldC5zdHJlYW1faW5kZXg7CisrICAgICAgICBpbnQgVHJhY2sgPSBQYWNr ZXQtPnN0cmVhbV9pbmRleDsKKyAgICAgICAgIEZGTVNfVHJhY2sgJlRyYWNrSW5mbyA9ICgqVHJh Y2tJbmRpY2VzKVtUcmFja107CistICAgICAgICBib29sIEtleUZyYW1lID0gISEoUGFja2V0LmZs YWdzICYgQVZfUEtUX0ZMQUdfS0VZKTsKKysgICAgICAgIGJvb2wgS2V5RnJhbWUgPSAhIShQYWNr ZXQtPmZsYWdzICYgQVZfUEtUX0ZMQUdfS0VZKTsKKyAgICAgICAgIFJlYWRUUyhQYWNrZXQsIExh c3RWYWxpZFRTW1RyYWNrXSwgKCpUcmFja0luZGljZXMpW1RyYWNrXS5Vc2VEVFMpOworIAorICAg ICAgICAgaWYgKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNf dHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8pIHsKKy0gICAgICAgICAgICBpbnQ2NF90IFBUUyA9 IFRyYWNrSW5mby5Vc2VEVFMgPyBQYWNrZXQuZHRzIDogUGFja2V0LnB0czsKKysgICAgICAgICAg ICBpbnQ2NF90IFBUUyA9IFRyYWNrSW5mby5Vc2VEVFMgPyBQYWNrZXQtPmR0cyA6IFBhY2tldC0+ cHRzOworICAgICAgICAgICAgIGlmIChQVFMgPT0gQVZfTk9QVFNfVkFMVUUpIHsKKyAgICAgICAg ICAgICAgICAgLy8gVlB4IGFsdC1yZWZzIGFyZSBvdXRwdXQgYXMgcGFja2V0cyB3aGljaCBsYWNr IHRpbWVzdG1wcyBvciBkdXJhdGlvbnMsIHNpbmNlCisgICAgICAgICAgICAgICAgIC8vIHRoZXkg YXJlIGludmlzaWJsZS4gQ3VycmVudGx5LCB0aGUgdGltZXN0YW1wIG1hbmdsaW5nIGNvZGUgaW4g bGliYXZmb3JtYXQKK0BAIC00OTUsOSArNDk5LDExIEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhl cjo6RG9JbmRleGluZygpIHsKKyAgICAgICAgICAgICAgICAgLy8gRkZNUzIgY3VycmVudGx5IHNv cnRzIHBhY2tldHMgYnkgUFRTLCB3aGljaCB3aWxsIGJyZWFrIGRlY29kaW5nLCBvdGhlcndpc2Uu CisgICAgICAgICAgICAgICAgIGJvb2wgSGFzQWx0UmVmcyA9IChGb3JtYXRDb250ZXh0LT5zdHJl YW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOCB8fAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tU cmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpOworLSAgICAgICAg ICAgICAgICBpZiAoUGFja2V0LmR1cmF0aW9uID09IDAgJiYgIUhhc0FsdFJlZnMpCisrICAgICAg ICAgICAgICAgIGlmIChQYWNrZXQtPmR1cmF0aW9uID09IDAgJiYgIUhhc0FsdFJlZnMpIHsKKysg ICAgICAgICAgICAgICAgICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworICAgICAgICAgICAg ICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9JTkRFWElORywgRkZNU19F UlJPUl9QQVJTRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgcGFja2V0IHB0 cywgZHRzLCBhbmQgZHVyYXRpb24iKTsKKysgICAgICAgICAgICAgICAgfQorIAorICAgICAgICAg ICAgICAgICBpZiAoVHJhY2tJbmZvLmVtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICBQVFMg PSAwOworQEAgLTUxMyw3ICs1MTksNyBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5k ZXhpbmcoKSB7CisgICAgICAgICAgICAgUGFyc2VWaWRlb1BhY2tldChBVkNvbnRleHRzW1RyYWNr XSwgUGFja2V0LCAmUmVwZWF0UGljdCwgJkZyYW1lVHlwZSwgJkludmlzaWJsZSwgJkxhc3RQaWNT dHJ1Y3QpOworIAorICAgICAgICAgICAgIFRyYWNrSW5mby5BZGRWaWRlb0ZyYW1lKFBUUywgUmVw ZWF0UGljdCwgS2V5RnJhbWUsCistICAgICAgICAgICAgICAgIEZyYW1lVHlwZSwgUGFja2V0LnBv cywgSW52aXNpYmxlKTsKKysgICAgICAgICAgICAgICAgRnJhbWVUeXBlLCBQYWNrZXQtPnBvcywg SW52aXNpYmxlKTsKKyAgICAgICAgIH0gZWxzZSBpZiAoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tU cmFja10tPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTykgeworICAg ICAgICAgICAgIC8vIEZvciB2aWRlbyBzZWVraW5nIHRpbWVzdGFtcHMgYXJlIHVzZWQgb25seSBp ZiBhbGwgcGFja2V0cyBoYXZlCisgICAgICAgICAgICAgLy8gdGltZXN0YW1wcywgd2hpbGUgZm9y IGF1ZGlvIHRoZXkncmUgdXNlZCBpZiBhbnkgaGF2ZSB0aW1lc3RhbXBzLAorQEAgLTUyMiwyOCAr NTI4LDI5IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsKKyAgICAg ICAgICAgICAgICAgVHJhY2tJbmZvLkhhc1RTID0gdHJ1ZTsKKyAKKyAgICAgICAgICAgICBpbnQ2 NF90IFN0YXJ0U2FtcGxlID0gQVZDb250ZXh0c1tUcmFja10uQ3VycmVudFNhbXBsZTsKKy0gICAg ICAgICAgICB1aW50MzJfdCBTYW1wbGVDb3VudCA9IEluZGV4QXVkaW9QYWNrZXQoVHJhY2ssICZQ YWNrZXQsIEFWQ29udGV4dHNbVHJhY2tdLCAqVHJhY2tJbmRpY2VzKTsKKysgICAgICAgICAgICB1 aW50MzJfdCBTYW1wbGVDb3VudCA9IEluZGV4QXVkaW9QYWNrZXQoVHJhY2ssIFBhY2tldCwgQVZD b250ZXh0c1tUcmFja10sICpUcmFja0luZGljZXMpOworICAgICAgICAgICAgIFRyYWNrSW5mby5T YW1wbGVSYXRlID0gQVZDb250ZXh0c1tUcmFja10uQ29kZWNDb250ZXh0LT5zYW1wbGVfcmF0ZTsK KyAKKyAgICAgICAgICAgICBUcmFja0luZm8uQWRkQXVkaW9GcmFtZShMYXN0VmFsaWRUU1tUcmFj a10sCistICAgICAgICAgICAgICAgIFN0YXJ0U2FtcGxlLCBTYW1wbGVDb3VudCwgS2V5RnJhbWUs IFBhY2tldC5wb3MsIFBhY2tldC5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpOworKyAgICAg ICAgICAgICAgICBTdGFydFNhbXBsZSwgU2FtcGxlQ291bnQsIEtleUZyYW1lLCBQYWNrZXQtPnBv cywgUGFja2V0LT5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpOworICAgICAgICAgfQorIAor LSAgICAgICAgaWYgKCEoUGFja2V0LmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpCistICAg ICAgICAgICAgVHJhY2tJbmZvLkxhc3REdXJhdGlvbiA9IFBhY2tldC5kdXJhdGlvbjsKKysgICAg ICAgIGlmICghKFBhY2tldC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKSkKKysgICAgICAg ICAgICBUcmFja0luZm8uTGFzdER1cmF0aW9uID0gUGFja2V0LT5kdXJhdGlvbjsKKyAKKy0gICAg ICAgIGF2X3BhY2tldF91bnJlZigmUGFja2V0KTsKKysgICAgICAgIGF2X3BhY2tldF91bnJlZihQ YWNrZXQpOworICAgICB9CisrICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworIAorICAgICBU cmFja0luZGljZXMtPkZpbmFsaXplKEFWQ29udGV4dHMsIEZvcm1hdENvbnRleHQtPmlmb3JtYXQt Pm5hbWUpOworICAgICByZXR1cm4gVHJhY2tJbmRpY2VzLnJlbGVhc2UoKTsKKyB9CisgCistdm9p ZCBGRk1TX0luZGV4ZXI6OlJlYWRUUyhjb25zdCBBVlBhY2tldCAmUGFja2V0LCBpbnQ2NF90ICZU UywgYm9vbCAmVXNlRFRTKSB7CistICAgIGlmICghVXNlRFRTICYmIFBhY2tldC5wdHMgIT0gQVZf Tk9QVFNfVkFMVUUpCistICAgICAgICBUUyA9IFBhY2tldC5wdHM7Cisrdm9pZCBGRk1TX0luZGV4 ZXI6OlJlYWRUUyhjb25zdCBBVlBhY2tldCAqUGFja2V0LCBpbnQ2NF90ICZUUywgYm9vbCAmVXNl RFRTKSB7CisrICAgIGlmICghVXNlRFRTICYmIFBhY2tldC0+cHRzICE9IEFWX05PUFRTX1ZBTFVF KQorKyAgICAgICAgVFMgPSBQYWNrZXQtPnB0czsKKyAgICAgaWYgKFRTID09IEFWX05PUFRTX1ZB TFVFKQorICAgICAgICAgVXNlRFRTID0gdHJ1ZTsKKy0gICAgaWYgKFVzZURUUyAmJiBQYWNrZXQu ZHRzICE9IEFWX05PUFRTX1ZBTFVFKQorLSAgICAgICAgVFMgPSBQYWNrZXQuZHRzOworKyAgICBp ZiAoVXNlRFRTICYmIFBhY2tldC0+ZHRzICE9IEFWX05PUFRTX1ZBTFVFKQorKyAgICAgICAgVFMg PSBQYWNrZXQtPmR0czsKKyB9CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvaW5kZXhpbmcuaCBiL3Ny Yy9jb3JlL2luZGV4aW5nLmgKK2luZGV4IDNjZmMzYzMuLjVjMDY4NjggMTAwNjQ0CistLS0gYS9z cmMvY29yZS9pbmRleGluZy5oCisrKysgYi9zcmMvY29yZS9pbmRleGluZy5oCitAQCAtODAsMTAg KzgwLDEwIEBAIHByaXZhdGU6CisgICAgIGludDY0X3QgRmlsZXNpemU7CisgICAgIHVpbnQ4X3Qg RGlnZXN0WzIwXTsKKyAKKy0gICAgdm9pZCBSZWFkVFMoY29uc3QgQVZQYWNrZXQgJlBhY2tldCwg aW50NjRfdCAmVFMsIGJvb2wgJlVzZURUUyk7CisrICAgIHZvaWQgUmVhZFRTKGNvbnN0IEFWUGFj a2V0ICpQYWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VEVFMpOworICAgICB2b2lkIENoZWNr QXVkaW9Qcm9wZXJ0aWVzKGludCBUcmFjaywgQVZDb2RlY0NvbnRleHQgKkNvbnRleHQpOworICAg ICB1aW50MzJfdCBJbmRleEF1ZGlvUGFja2V0KGludCBUcmFjaywgQVZQYWNrZXQgKlBhY2tldCwg U2hhcmVkQVZDb250ZXh0ICZDb250ZXh0LCBGRk1TX0luZGV4ICZUcmFja0luZGljZXMpOworLSAg ICB2b2lkIFBhcnNlVmlkZW9QYWNrZXQoU2hhcmVkQVZDb250ZXh0ICZWaWRlb0NvbnRleHQsIEFW UGFja2V0ICZwa3QsIGludCAqUmVwZWF0UGljdCwgaW50ICpGcmFtZVR5cGUsIGJvb2wgKkludmlz aWJsZSwgZW51bSBBVlBpY3R1cmVTdHJ1Y3R1cmUgKkxhc3RQaWNTdHJ1Y3QpOworKyAgICB2b2lk IFBhcnNlVmlkZW9QYWNrZXQoU2hhcmVkQVZDb250ZXh0ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0 ICpwa3QsIGludCAqUmVwZWF0UGljdCwgaW50ICpGcmFtZVR5cGUsIGJvb2wgKkludmlzaWJsZSwg ZW51bSBBVlBpY3R1cmVTdHJ1Y3R1cmUgKkxhc3RQaWNTdHJ1Y3QpOworICAgICB2b2lkIEZyZWUo KTsKKyBwdWJsaWM6CisgICAgIEZGTVNfSW5kZXhlcihjb25zdCBjaGFyICpGaWxlbmFtZSk7Citk aWZmIC0tZ2l0IGEvc3JjL2NvcmUvdXRpbHMuY3BwIGIvc3JjL2NvcmUvdXRpbHMuY3BwCitpbmRl eCBjZTY3NTMzLi44YTJlOTk3IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvdXRpbHMuY3BwCisrKysg Yi9zcmMvY29yZS91dGlscy5jcHAKK0BAIC02MiwxMiArNjIsNiBAQCB2b2lkIENsZWFyRXJyb3JJ bmZvKEZGTVNfRXJyb3JJbmZvICpFcnJvckluZm8pIHsKKyAgICAgfQorIH0KKyAKKy12b2lkIElu aXROdWxsUGFja2V0KEFWUGFja2V0ICZwa3QpIHsKKy0gICAgYXZfaW5pdF9wYWNrZXQoJnBrdCk7 CistICAgIHBrdC5kYXRhID0gbnVsbHB0cjsKKy0gICAgcGt0LnNpemUgPSAwOworLX0KKy0KKyB2 b2lkIEZpbGxBUChGRk1TX0F1ZGlvUHJvcGVydGllcyAmQVAsIEFWQ29kZWNDb250ZXh0ICpDVFgs IEZGTVNfVHJhY2sgJkZyYW1lcykgeworICAgICBBUC5TYW1wbGVGb3JtYXQgPSBzdGF0aWNfY2Fz dDxGRk1TX1NhbXBsZUZvcm1hdD4oYXZfZ2V0X3BhY2tlZF9zYW1wbGVfZm10KENUWC0+c2FtcGxl X2ZtdCkpOworICAgICBBUC5CaXRzUGVyU2FtcGxlID0gYXZfZ2V0X2J5dGVzX3Blcl9zYW1wbGUo Q1RYLT5zYW1wbGVfZm10KSAqIDg7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvdXRpbHMuaCBiL3Ny Yy9jb3JlL3V0aWxzLmgKK2luZGV4IDk4MTlkYzcuLjAwM2FiNzkgMTAwNjQ0CistLS0gYS9zcmMv Y29yZS91dGlscy5oCisrKysgYi9zcmMvY29yZS91dGlscy5oCitAQCAtNTgsNyArNTgsNiBAQCBz dGQ6OnVuaXF1ZV9wdHI8VD4gbWFrZV91bmlxdWUoQXJncyYmLi4uIGFyZ3MpIHsKKyB9CisgCisg dm9pZCBDbGVhckVycm9ySW5mbyhGRk1TX0Vycm9ySW5mbyAqRXJyb3JJbmZvKTsKKy12b2lkIElu aXROdWxsUGFja2V0KEFWUGFja2V0ICZwa3QpOworIHZvaWQgRmlsbEFQKEZGTVNfQXVkaW9Qcm9w ZXJ0aWVzICZBUCwgQVZDb2RlY0NvbnRleHQgKkNUWCwgRkZNU19UcmFjayAmRnJhbWVzKTsKKyAK KyB2b2lkIExBVkZPcGVuRmlsZShjb25zdCBjaGFyICpTb3VyY2VGaWxlLCBBVkZvcm1hdENvbnRl eHQgKiZGb3JtYXRDb250ZXh0LCBpbnQgVHJhY2spOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3Zp ZGVvc291cmNlLmNwcCBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAoraW5kZXggMDZiZDE2MS4u Yjg4OTk3MCAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAorKysrIGIvc3Jj L2NvcmUvdmlkZW9zb3VyY2UuY3BwCitAQCAtNjczLDMwICs2NzMsMzQgQEAgdm9pZCBGRk1TX1Zp ZGVvU291cmNlOjpEZWNvZGVOZXh0RnJhbWUoaW50NjRfdCAmQVN0YXJ0VGltZSwgaW50NjRfdCAm UG9zKSB7CisgICAgIGlmIChIYXNQZW5kaW5nRGVsYXllZEZyYW1lcygpKQorICAgICAgICAgcmV0 dXJuOworIAorLSAgICBBVlBhY2tldCBQYWNrZXQ7CistICAgIEluaXROdWxsUGFja2V0KFBhY2tl dCk7CistCistICAgIHdoaWxlIChSZWFkRnJhbWUoJlBhY2tldCkgPj0gMCkgeworLSAgICAgICAg aWYgKFBhY2tldC5zdHJlYW1faW5kZXggIT0gVmlkZW9UcmFjaykgeworLSAgICAgICAgICAgIGF2 X3BhY2tldF91bnJlZigmUGFja2V0KTsKKysgICAgQVZQYWNrZXQgKlBhY2tldCA9IGF2X3BhY2tl dF9hbGxvYygpOworKyAgICBpZiAoIVBhY2tldCkKKysgICAgICAgIHRocm93IEZGTVNfRXhjZXB0 aW9uKEZGTVNfRVJST1JfREVDT0RJTkcsIEZGTVNfRVJST1JfQUxMT0NBVElPTl9GQUlMRUQsCisr ICAgICAgICAgICAgIkNvdWxkIG5vdCBhbGxvY2F0ZSBwYWNrZXQuIik7CisrCisrICAgIHdoaWxl IChSZWFkRnJhbWUoUGFja2V0KSA+PSAwKSB7CisrICAgICAgICBpZiAoUGFja2V0LT5zdHJlYW1f aW5kZXggIT0gVmlkZW9UcmFjaykgeworKyAgICAgICAgICAgIGF2X3BhY2tldF91bnJlZihQYWNr ZXQpOworICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgfQorIAorICAgICAgICAgaWYg KEFTdGFydFRpbWUgPCAwKQorLSAgICAgICAgICAgIEFTdGFydFRpbWUgPSBGcmFtZXMuVXNlRFRT ID8gUGFja2V0LmR0cyA6IFBhY2tldC5wdHM7CisrICAgICAgICAgICAgQVN0YXJ0VGltZSA9IEZy YW1lcy5Vc2VEVFMgPyBQYWNrZXQtPmR0cyA6IFBhY2tldC0+cHRzOworIAorICAgICAgICAgaWYg KFBvcyA8IDApCistICAgICAgICAgICAgUG9zID0gUGFja2V0LnBvczsKKysgICAgICAgICAgICBQ b3MgPSBQYWNrZXQtPnBvczsKKyAKKy0gICAgICAgIGJvb2wgRnJhbWVGaW5pc2hlZCA9IERlY29k ZVBhY2tldCgmUGFja2V0KTsKKy0gICAgICAgIGF2X3BhY2tldF91bnJlZigmUGFja2V0KTsKKy0g ICAgICAgIGlmIChGcmFtZUZpbmlzaGVkKQorKyAgICAgICAgYm9vbCBGcmFtZUZpbmlzaGVkID0g RGVjb2RlUGFja2V0KFBhY2tldCk7CisrICAgICAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsK KysgICAgICAgIGlmIChGcmFtZUZpbmlzaGVkKSB7CisrICAgICAgICAgICAgYXZfcGFja2V0X2Zy ZWUoJlBhY2tldCk7CisgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorICAgICB9Cisg CisgICAgIC8vIEZsdXNoIGZpbmFsIGZyYW1lcworLSAgICBJbml0TnVsbFBhY2tldChQYWNrZXQp OworLSAgICBEZWNvZGVQYWNrZXQoJlBhY2tldCk7CisrICAgIERlY29kZVBhY2tldChQYWNrZXQp OworKyAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyB9CisgCisgYm9vbCBGRk1TX1ZpZGVv U291cmNlOjpTZWVrVG8oaW50IG4sIGludCBTZWVrT2Zmc2V0KSB7CistLSAKKzIuNDAuMAorCitG cm9tIGJmOWUwM2U5ZTA4NTM0YzAyNGU1YTc0NGE2NDM3YzRhYWMxNjAyMDEgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCitGcm9tOiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdt YWlsLmNvbT4KK0RhdGU6IFR1ZSwgNCBNYXkgMjAyMSAxNDoyMDo0NyArMDEwMAorU3ViamVjdDog W1BBVENIIDIvM10gY29uZmlndXJlOiBSZW1vdmUgZGVwcmVjYXRlZCBBUEkgdXNlCisKK1NpZ25l ZC1vZmYtYnk6IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgor LS0tCisgY29uZmlndXJlLmFjIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZp Z3VyZS5hYworaW5kZXggYjM1ZWY4MGJjLi5kMTk3MTRkMGYgMTAwNjQ0CistLS0gYS9jb25maWd1 cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTEwMiwxMCArMTAyLDEwIEBAIENGTEFHUz0i JF9DRkxBR1MgJEZGTVBFR19DRkxBR1MiCisKKyBBQ19ERUZVTihbVEVTVF9GRk1QRUddLAorICAg ICAgICAgIFtBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCistICAgICAgICAgICAg I2luY2x1ZGUgPGxpYmF2Y29kZWMvYXZjb2RlYy5oPgorKyAgICAgICAgICAgICNpbmNsdWRlIDxs aWJhdmZvcm1hdC9hdmZvcm1hdC5oPgorICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJzd3NjYWxl L3N3c2NhbGUuaD4KKyAgICAgICAgICAgICBdXSxbWworLSAgICAgICAgICAgICAgICBhdmNvZGVj X3JlZ2lzdGVyX2FsbCgpOworKyAgICAgICAgICAgICAgICBhdmZvcm1hdF9uZXR3b3JrX2luaXQo KTsKKyAgICAgICAgICAgICAgICAgc3dzY2FsZV92ZXJzaW9uKCk7CisgICAgICAgICAgICAgXV0p XSwgW2V2YWwgJDE9eWVzXSwgW2V2YWwgJDE9bm9dKQorICAgICAgICAgXSkKKwpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9mZm1zMi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtczIvdGVtcGxhdGUKaW5kZXgg MzY1ZjY0ZDEwY2JhYi4uMTY0MWVjZjQzYmU1YiAxMDA2NDQKLS0tIGEvc3JjcGtncy9mZm1zMi90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZmbXMyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnZmZtczInCiBwa2duYW1lPWZmbXMyCiB2ZXJzaW9uPTIuNDAKLXJl dmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3Vy ZV9hcmdzPSItLWVuYWJsZS1zaGFyZWQgLS1kaXNhYmxlLXN0YXRpYyIKIGhvc3RtYWtlZGVwZW5k cz0icGtnLWNvbmZpZyBhdXRvY29uZiBhdXRvbWFrZSBsaWJ0b29sIgoKRnJvbSA2ZDY2ZWNhYjI0 MzY0MmExMzU0OTIxNjliYmRlMDE2NDMwYTgyODMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzIvMTE1XSBmcmVlcmRwOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIC4uLi9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5w YXRjaCAgICB8IDQyICsrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA0MiBpbnNl cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mcmVlcmRwL3BhdGNoZXMvZmZt cGVnNl9hYTJjYjlhYS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZnJlZXJkcC9wYXRjaGVz L2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2ggYi9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2 X2FhMmNiOWFhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAu LmE0MzI0ZGEzYTg4MjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hl cy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gYWEyY2I5YWE1 ZmY1NTYyNDMzNTk4YmExNjhhNDY2ZTA3NTJiY2EwZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IGFrYWxsYWJldGggPGFrYWxsYWJldGhAcG9zdGVvLm5ldD4KK0RhdGU6IFR1ZSwgMTQg RmViIDIwMjMgMDc6NDg6NTQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4ZWQgIzg2ODY6IFVw ZGF0ZSBoMjY0IHRvIHVzZSBuZXcgRkZNUEVHIEFQSQorCistLS0KKyBjaGFubmVscy90c21mL2Ns aWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYyB8IDIgKysKKyBsaWJmcmVlcmRwL2NvZGVjL2gyNjRf ZmZtcGVnLmMgICAgICAgICAgICB8IDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9u cygrKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZt cGVnLmMgYi9jaGFubmVscy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYworaW5kZXgg MzM5NDYyZDg2NWYuLmJlZWE4MGI3YTFlIDEwMDY0NAorLS0tIGEvY2hhbm5lbHMvdHNtZi9jbGll bnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMKKysrKyBiL2NoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBl Zy90c21mX2ZmbXBlZy5jCitAQCAtMjM5LDggKzIzOSwxMCBAQCBzdGF0aWMgQk9PTCB0c21mX2Zm bXBlZ19pbml0X3N0cmVhbShJVFNNRkRlY29kZXIqIGRlY29kZXIsIGNvbnN0IFRTX0FNX01FRElB X1RZUAorIAkJfQorIAl9CisgCisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJT SU9OX0lOVCg1OSwgMTgsIDEwMCkKKyAJaWYgKG1kZWNvZGVyLT5jb2RlYy0+Y2FwYWJpbGl0aWVz ICYgQVZfQ09ERUNfQ0FQX1RSVU5DQVRFRCkKKyAJCW1kZWNvZGVyLT5jb2RlY19jb250ZXh0LT5m bGFncyB8PSBBVl9DT0RFQ19GTEFHX1RSVU5DQVRFRDsKKysjZW5kaWYKKyAKKyAJcmV0dXJuIFRS VUU7CisgfQorZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYyBiL2xp YmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYworaW5kZXggOGEyM2RiMjQ3M2MuLjg5NmEzMzMw MTliIDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5jCisrKysgYi9s aWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMKK0BAIC02MTUsMTAgKzYxNSwxMiBAQCBzdGF0 aWMgQk9PTCBsaWJhdmNvZGVjX2luaXQoSDI2NF9DT05URVhUKiBoMjY0KQorIAkJCWdvdG8gRVhD RVBUSU9OOworIAkJfQorIAorKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fSU5UIDwgQVZfVkVSU0lP Tl9JTlQoNTksIDE4LCAxMDApCisgCQlpZiAoc3lzLT5jb2RlY0RlY29kZXItPmNhcGFiaWxpdGll cyAmIEFWX0NPREVDX0NBUF9UUlVOQ0FURUQpCisgCQl7CisgCQkJc3lzLT5jb2RlY0RlY29kZXJD b250ZXh0LT5mbGFncyB8PSBBVl9DT0RFQ19GTEFHX1RSVU5DQVRFRDsKKyAJCX0KKysjZW5kaWYK KyAKKyAjaWZkZWYgV0lUSF9WQUFQSQorIAoKRnJvbSBmNjc1MDdmOWJlMTUwY2NmMTAzZTgxNTY3 Zjk2MTcwZWNlYzlhYTM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwMzMvMTE1XSBnZXJiZXJhOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ2VyYmVyYS90 ZW1wbGF0ZSBiL3NyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZQppbmRleCBhZTE0ZjM1Yzc2N2MwLi4y ZGMwYWMwY2UwM2I1IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dlcmJlcmEvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnZ2VyYmVyYScKIHBrZ25hbWU9Z2VyYmVyYQogdmVyc2lvbj0xLjEyLjEKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURXSVRI X1NZU1RFTUQ9MCAtRFdJVEhfQVZDT0RFQz0xIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IgoKRnJvbSA4MjkwMmVkOWFlZDZlOWI4NzY1ZDZhNDRjMzUxYzgxZTk1N2ZhNWQzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzQvMTE1XSBn b2xkZW5kaWN0OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ29sZGVuZGlj dC90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUgYi9z cmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUKaW5kZXggZjRhMDU3NTlmNjkzZC4uOTdmNDQzNDdi MDNhNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9nb2xkZW5kaWN0L3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvZ29sZGVuZGljdC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ2dvbGRlbmRpY3QnCiBwa2duYW1lPWdvbGRlbmRpY3QKIHZlcnNpb249MS41LjAKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXFtYWtlCiBjb25maWd1cmVfYXJncz0iQ09O RklHKz16aW1fc3VwcG9ydCBnb2xkZW5kaWN0LnBybyIKIGhvc3RtYWtlZGVwZW5kcz0icXQ1LXFt YWtlIHBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMiCkBAIC0xMCw3ICsxMCw3IEBAIG1ha2VkZXBl bmRzPSJ0aWZmLWRldmVsIHF0NS1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwgemxpYi1kZXZlbAogIHF0 NS13ZWJraXQtZGV2ZWwgbHpvLWRldmVsIGJ6aXAyLWRldmVsIGxpYmFvLWRldmVsIHF0NS1zdmct ZGV2ZWwKICBsaWJlYi1kZXZlbCBxdDUteDExZXh0cmFzLWRldmVsIGZmbXBlZy1kZXZlbCBsaWJs em1hLWRldmVsCiAgcXQ1LW11bHRpbWVkaWEtZGV2ZWwiCi1zaG9ydF9kZXNjPSJBIGZlYXR1cmUt cmljaCBkaWN0aW9uYXJ5IGxvb2t1cCBwcm9ncmFtIgorc2hvcnRfZGVzYz0iRmVhdHVyZS1yaWNo IGRpY3Rpb25hcnkgbG9va3VwIHByb2dyYW0iCiBtYWludGFpbmVyPSJKb2huIDxtZUBqb2hubnlu YXRvci5kZXY+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwOi8v Z29sZGVuZGljdC5vcmcvIgoKRnJvbSBiNjI1ZTViZDUyMWZiMjAxMzEwMTMwYWIzMDdkZDkwNDUw ZWUwYzdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwMzUvMTE1XSBnc3QtbGliYXY6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9nc3QtbGliYXYvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1saWJhdi90ZW1w bGF0ZSBiL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCmluZGV4IDM3NDg1ZjZmNmE5ZTguLmY2 MTBlOTY2ZjIzY2QgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnZ3N0LWxpYmF2JwogcGtnbmFtZT1nc3QtbGliYXYKIHZlcnNpb249MS4yMi41Ci1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIHlhc20iCiBtYWtlZGVwZW5kcz0ib3JjLWRldmVsIGdzdC1wbHVnaW5zLWJh c2UxLWRldmVsIGZmbXBlZy1kZXZlbCIKCkZyb20gNDQ2OTM4M2I0NmQxNGRhZjRjZDMwZTY4OWVk YzBhNjNiYzAwMjc1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDM2LzExNV0gZ3N0LXJ0c3Atc2VydmVyOiByZXZidW1wIGZvciBmZm1wZWct Ni4wCgotLS0KIHNyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90 ZW1wbGF0ZQppbmRleCBmMjY2ZjQ3NzdiM2VhLi4wMTE0NDRlYjI2NzM5IDEwMDY0NAotLS0gYS9z cmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1ydHNwLXNl cnZlci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1y dHNwLXNlcnZlcicKIHBrZ25hbWU9Z3N0LXJ0c3Atc2VydmVyCiB2ZXJzaW9uPTEuMjIuNQotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0i cGtnLWNvbmZpZyBweXRob24zIgogbWFrZWRlcGVuZHM9ImdsaWItZGV2ZWwgZ3N0LXBsdWdpbnMt YmFkMS1kZXZlbCBnb2JqZWN0LWludHJvc3BlY3Rpb24KCkZyb20gZWQzYTFkZDJjMDdhMWM3NDgw MDVlODM2NWFmNDBjYmQ5NzljNmQxNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM3LzExNV0gZ3V2Y3ZpZXc6IHVwZGF0ZSB0byAyLjAuOC4K Ci0tLQogc3JjcGtncy9ndXZjdmlldy9wYXRjaGVzL2ZpeC1pbmNsdWRlLnBhdGNoIHwgMTAgKysr KysrKysrKwogc3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgIHwgIDcg KysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVk ZS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVk ZS5wYXRjaCBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi41MDNjMmFmM2I3OGMxCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9ndXZjdmlldy9wYXRjaGVzL2ZpeC1pbmNsdWRlLnBhdGNo CkBAIC0wLDAgKzEsMTAgQEAKKy0tLSBhL2d1dmN2aWV3L2d1dmN2aWV3LmMKKysrKyBiL2d1dmN2 aWV3L2d1dmN2aWV3LmMKK0BAIC0yOCw2ICsyOCw3IEBACisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+ CisgI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorKyNpbmNs dWRlIDxsb2NhbGUuaD4KKyAKKyAjaW5jbHVkZSAiZ3ZpZXcuaCIKKyAjaW5jbHVkZSAiZ3ZpZXd2 NGwyY29yZS5oIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZSBiL3NyY3Br Z3MvZ3V2Y3ZpZXcvdGVtcGxhdGUKaW5kZXggZDQyZmQzOGZhNGFkMS4uODZhN2ZkNjE5NjEyYyAx MDA2NDQKLS0tIGEvc3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2d1dmN2 aWV3L3RlbXBsYXRlCkBAIC0xLDggKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3V2Y3Zp ZXcnCiBwa2duYW1lPWd1dmN2aWV3Ci12ZXJzaW9uPTIuMC43Ci1yZXZpc2lvbj0yCi1jcmVhdGVf d3Jrc3JjPXllcwordmVyc2lvbj0yLjAuOAorcmV2aXNpb249MQogYnVpbGRfc3R5bGU9Z251LWNv bmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1zdGF0aWMgLS1kaXNhYmxlLWRlYmlh bi1tZW51IgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGludGx0b29sIGF1dG9jb25mIGF1 dG9tYWtlIGxpYnRvb2wgZ2xpYi1kZXZlbCIKQEAgLTE0LDcgKzEzLDcgQEAgbWFpbnRhaW5lcj0i T3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0 ZXIiCiBob21lcGFnZT0iaHR0cDovL2d1dmN2aWV3LnNvdXJjZWZvcmdlLm5ldC8iCiBkaXN0Zmls ZXM9IiR7U09VUkNFRk9SR0VfU0lURX0vJHtwa2duYW1lfS8ke3BrZ25hbWV9LXNyYy0ke3ZlcnNp b259LnRhci5iejIiCi1jaGVja3N1bT1mNDdkNTFmYmQwNmU0NGVlYWExYTgyZjRhMTUzYzkyNzUy N2M5MGQ5NDUxNDE5N2E3MGIyOTU2MDI4Y2M4YWQ0CitjaGVja3N1bT1hMjFmNGU0NDgyODY2NjZj ZjI3YmFmZWY1MjkwY2M5NTNhMGExNzk2Yjc1MmU1YmJlNTIxMjY2ZGMxMjMwYzgxCiAKIHBvc3Rf cGF0Y2goKSB7CiAJc2VkICczMWEjaW5jbHVkZSA8bG9jYWxlLmg+JyAtaSAgZ3V2Y3ZpZXcvZ3V2 Y3ZpZXcuYwoKRnJvbSBjYTA3ODEzZmM0ZGRkZDljZjMzZjQyZGMzZmYyMDBiYTI4ZWY5NWFhIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzgv MTE1XSBoYW5kYnJha2U6IHVwZGF0ZSB0byAxLjYuMQoKLS0tCiAuLi4vcGF0Y2hlcy9maXgtbWlz c2luZy14MjY1LWxpbmstZmxhZy5wYXRjaCAgICB8IDExICsrKysrKy0tLS0tCiAuLi4vaGFuZGJy YWtlL3BhdGNoZXMvbGliaGItdnBsLWluY2x1ZGUucGF0Y2ggICB8IDE1ICsrKysrKysrKysrKysr Kwogc3JjcGtncy9oYW5kYnJha2UvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgfCAxNyAr KysrKysrKysrLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAxMiBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVz L2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9oYW5kYnJha2Uv cGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmstZmxhZy5wYXRjaCBiL3NyY3BrZ3MvaGFuZGJy YWtlL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZsYWcucGF0Y2gKaW5kZXggMjZkYjAz ODY3YTBjOC4uZDZiYjJlZGE2MjdhMyAxMDA2NDQKLS0tIGEvc3JjcGtncy9oYW5kYnJha2UvcGF0 Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmstZmxhZy5wYXRjaAorKysgYi9zcmNwa2dzL2hhbmRi cmFrZS9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNoCkBAIC0xLDE0ICsx LDE1IEBACiAtLS0gYS9ndGsvY29uZmlndXJlLmFjCiArKysgYi9ndGsvY29uZmlndXJlLmFjCiBA QCAtMjAzLDcgKzIwMyw3IEBACi0gCisKICBBTV9DT05ESVRJT05BTChbTUlOR1ddLCBbdGVzdCAi eCRtaW5nd19mbGFnIiA9ICJ4eWVzIl0pCi0gCi0tSEJfTElCUz0iJEhCX0xJQlMgLWxoYW5kYnJh a2UgLWxhdmZvcm1hdCAtbGF2ZmlsdGVyIC1sYXZjb2RlYyAtbGF2dXRpbCAtbGRhdjFkIC1sc3dy ZXNhbXBsZSAtbHBvc3Rwcm9jIC1sZHZkbmF2IC1sZHZkcmVhZCAtbG1wM2xhbWUgLWx2b3JiaXMg LWx2b3JiaXNlbmMgLWxvZ2cgLWxzd3NjYWxlIC1sdGhlb3JhZW5jIC1sdGhlb3JhZGVjIC1sdnB4 IC1seiAtbGJ6MiAtbGJsdXJheSAtbGFzcyAtbGZvbnRjb25maWcgLWxmcmVldHlwZSAtbHhtbDIg LWxqYW5zc29uIC1sb3B1cyAtbHNwZWV4IC1sdHVyYm9qcGVnIC1sbHptYSAtbHppbWciCi0rSEJf TElCUz0iJEhCX0xJQlMgLWxoYW5kYnJha2UgLWxhdmZvcm1hdCAtbGF2ZmlsdGVyIC1sYXZjb2Rl YyAtbGF2dXRpbCAtbGRhdjFkIC1sc3dyZXNhbXBsZSAtbHBvc3Rwcm9jIC1sZHZkbmF2IC1sZHZk cmVhZCAtbG1wM2xhbWUgLWx2b3JiaXMgLWx2b3JiaXNlbmMgLWxvZ2cgLWxzd3NjYWxlIC1sdGhl b3JhZW5jIC1sdGhlb3JhZGVjIC1sdnB4IC1seiAtbGJ6MiAtbGJsdXJheSAtbGFzcyAtbGZvbnRj b25maWcgLWxmcmVldHlwZSAtbHhtbDIgLWxqYW5zc29uIC1sb3B1cyAtbHNwZWV4IC1sdHVyYm9q cGVnIC1sbHptYSAtbHppbWcgLWxkbCIKKworLUhCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtl IC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVz YW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1s dm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAt bHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1s amFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sU3Z0QXYx RW5jIgorK0hCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRl ciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2 ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dz Y2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxh c3MgLWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVl eCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sU3Z0QXYxRW5jIC1sZGwiCiAgSEJfQ1BQRkxB R1M9IiRIQl9DUFBGTEFHUyAkSEJJTkMiCi0gCisKICBQS0dfQ0hFQ0tfTU9EVUxFUyhbeDI2NF0s IFt4MjY0XSwgc3lzX3gyNjQ9eWVzLCBzeXNfeDI2ND1ubykKKwogLS0tIGEvdGVzdC9tb2R1bGUu ZGVmcwogKysrIGIvdGVzdC9tb2R1bGUuZGVmcwogQEAgLTY5LDYgKzY5LDkgQEAKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvbGliaGItdnBsLWluY2x1ZGUucGF0Y2ggYi9z cmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjI5OGY5ZjRhYjI4ZjIKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBh dGNoCkBAIC0wLDAgKzEsMTUgQEAKKy0tLSBhL2xpYmhiL21vZHVsZS5kZWZzCTIwMjMtMDEtMjIg MTE6MzY6NDkuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9saWJoYi9tb2R1bGUuZGVmcwkyMDIzLTA0 LTAzIDIyOjM3OjUyLjM5NTQ2NzAxMCAtMDQwMAorQEAgLTQ2LDExICs0Niw3IEBACisgTElCSEIu R0NDLkkgKz0gJChMSUJIQi5idWlsZC8pICQoQ09OVFJJQi5idWlsZC8paW5jbHVkZQorIAorIGlm ZXEgKDEsJChGRUFUVVJFLnFzdikpCistICAgIGlmZXEgKCQoSE9TVC5zeXN0ZW0pLGZyZWVic2Qp KQorLSAgICAgICAgTElCSEIuR0NDLkkgKz0gJChMT0NBTEJBU0UpL2luY2x1ZGUvdnBsCistICAg IGVsc2UKKy0gICAgICAgIExJQkhCLkdDQy5JICs9ICQoQ09OVFJJQi5idWlsZC8paW5jbHVkZS92 cGwKKy0gICAgZW5kaWYKKysgICAgTElCSEIuR0NDLkkgKz0gL3Vzci9pbmNsdWRlL3ZwbAorIGVu ZGlmCisgCisgaWZuZXEgKCwkKGZpbHRlciAkKEhPU1Quc3lzdGVtKSxmcmVlYnNkIG5ldGJzZCBv cGVuYnNkKSkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlIGIvc3JjcGtn cy9oYW5kYnJha2UvdGVtcGxhdGUKaW5kZXggY2E1ZTQ1NzFlNDljMy4uYzMyY2IxYmZhMzFmNCAx MDA2NDQKLS0tIGEvc3JjcGtncy9oYW5kYnJha2UvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9oYW5k YnJha2UvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2hh bmRicmFrZScKIHBrZ25hbWU9aGFuZGJyYWtlCi12ZXJzaW9uPTEuNS4xCit2ZXJzaW9uPTEuNi4x CiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0i LS1mb3JjZSAtLWRpc2FibGUtZ3RrLXVwZGF0ZS1jaGVja3MgLS1kaXNhYmxlLWRmLWZldGNoIC0t aGFyZGVuCi0gJCh2b3B0X2VuYWJsZSBmZGtfYWFjIGZkay1hYWMpICQodm9wdF9lbmFibGUgbnZl bmMpIgorICQodm9wdF9lbmFibGUgZmRrX2FhYyBmZGstYWFjKSAkKHZvcHRfZW5hYmxlIG52ZW5j KSAkKHZvcHRfZW5hYmxlIHFzdikiCiBtYWtlX2J1aWxkX2FyZ3M9Ii1DICR7WEJQU19UUklQTEVU fSIKIG1ha2VfaW5zdGFsbF9hcmdzPSItQyAke1hCUFNfVFJJUExFVH0iCiBob3N0bWFrZWRlcGVu ZHM9ImF1dG9tYWtlIGNtYWtlIGdldHRleHQtZGV2ZWwgZ2xpYi1kZXZlbCBpbnRsdG9vbCBsaWJ0 b29sIG00IG1lc29uIG5hc20gcGtnLWNvbmZpZyBweXRob24zIgpAQCAtMTIsOCArMTIsMTEgQEAg bWFrZWRlcGVuZHM9ImJ6aXAyLWRldmVsIGZmbXBlZy1kZXZlbCBnc3QtcGx1Z2lucy1iYXNlMS1k ZXZlbCBndGsrMy1kZXZlbAogIGphbnNzb24tZGV2ZWwgbGFtZS1kZXZlbCBsaWJhc3MtZGV2ZWwg bGliYmx1cmF5LWRldmVsIGxpYmRhdjFkLWRldmVsCiAgbGliZHZkbmF2LWRldmVsIGxpYmR2ZHJl YWQtZGV2ZWwgbGliZ3VkZXYtZGV2ZWwgbGlibnVtYS1kZXZlbAogIGxpYnNhbXBsZXJhdGUtZGV2 ZWwgbGlidGhlb3JhLWRldmVsIGxpYnZvcmJpcy1kZXZlbCBsaWJ2cHgtZGV2ZWwgbGlieG1sMi1k ZXZlbAotIG9wdXMtZGV2ZWwgc3BlZXgtZGV2ZWwgeDI2NC1kZXZlbCB4MjY1LWRldmVsIHppbWct ZGV2ZWwKKyBvcHVzLWRldmVsIHNwZWV4LWRldmVsIHgyNjQtZGV2ZWwgeDI2NS1kZXZlbCB6aW1n LWRldmVsIGxpYnN2dC1hdjEtZGV2ZWwKICAkKHZvcHRfaWYgZmRrX2FhYyBmZGstYWFjLWRldmVs KQorICQodm9wdF9pZiBxc3YgbGlidmEtZGV2ZWwpCisgJCh2b3B0X2lmIHFzdiBsaWJkcm0tZGV2 ZWwpCisgJCh2b3B0X2lmIHFzdiBvbmV2cGwtZGV2ZWwpCiAgJCh2b3B0X2lmIG52ZW5jIG52LWNv ZGVjLWhlYWRlcnMpIgogZGVwZW5kcz0iZGVza3RvcC1maWxlLXV0aWxzIGdzdC1wbHVnaW5zLWdv b2QxIGhpY29sb3ItaWNvbi10aGVtZSIKIHNob3J0X2Rlc2M9Ik11bHRpdGhyZWFkZWQgdmlkZW8g dHJhbnNjb2RlciIKQEAgLTIxLDE1ICsyNCwxNSBAQCBtYWludGFpbmVyPSJFbm5vIEJvbGFuZCA8 Z290dG94QHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTIuMC1vbmx5IgogaG9tZXBhZ2U9 Imh0dHBzOi8vaGFuZGJyYWtlLmZyLyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL0hh bmRCcmFrZS9IYW5kQnJha2UvcmVsZWFzZXMvZG93bmxvYWQvJHt2ZXJzaW9ufS9IYW5kQnJha2Ut JHt2ZXJzaW9ufS1zb3VyY2UudGFyLmJ6MiIKLWNoZWNrc3VtPTM5OTlmZTA2ZDUzMDljODE5Nzk5 YTczYTk2OGE4ZWMzODQwZTc4NDBjMmI2NGFmOGY1Y2RiN2ZkOGM5NDMwZjAKK2NoZWNrc3VtPTk0 Y2NmZTAzZGI5MTdhOTE2NTAwMDBjNTEwZjdmZDUzZjg0NGRhMTlmMTlhZDRiNGJlMWI4ZjZiYzMx YThkNGMKIG5vY3Jvc3M9eWVzCiAKLWJ1aWxkX29wdGlvbnM9ImZka19hYWMgbnZlbmMiCitidWls ZF9vcHRpb25zPSJmZGtfYWFjIG52ZW5jIHFzdiIKIAogY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJ TkUiIGluCiAJeDg2XzY0KnxpNjg2KikKIAkJQ0ZMQUdTPSItbXNzZSIKLQkJYnVpbGRfb3B0aW9u c19kZWZhdWx0PSJudmVuYyIKKwkJYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJudmVuYyBxc3YiCiAJ CTs7CiBlc2FjCiAKQEAgLTM3LDcgKzQwLDcgQEAgcHJlX2NvbmZpZ3VyZSgpIHsKIAkjIHVzZSBz eXN0ZW0gbGlicmFyaWVzLCBkb24ndCBkb3dubG9hZCB0aGVtCiAJcm0gLXJmIGNvbnRyaWIvCiAJ Zm9yIG1vZHVsZSBpbiBmZGstYWFjIGZmbXBlZyBsaWJibHVyYXkgbGliZGF2MWQgbGliZHZkbmF2 IGxpYmR2ZHJlYWQgbnZlbmMgXAotCQl4MjY1IHppbWc7IGRvCisJCXgyNjUgemltZyBzdnQtYXYx IGxpYnZwbDsgZG8KIAkgICAgdnNlZCAtaSAiL01PRFVMRVMgKz0gY29udHJpYlwvJHttb2R1bGV9 L2QiIG1ha2UvaW5jbHVkZS9tYWluLmRlZnMKIAlkb25lCiB9CgpGcm9tIDUyOTUxZWFlMjNhZWVj YzcwNTZmOTI0YmIwMjZhZDkzM2Q1YWI4YmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDAzOS8xMTVdIGhlZGdld2FyczogcmV2YnVtcCBmb3Ig ZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZSB8IDQgKystLQog MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZSBiL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBs YXRlCmluZGV4IDE1YTFkZjZkODg2MWQuLmQxYjcyOTBiZmRjMTkgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvaGVkZ2V3YXJzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlCkBA IC0xLDEzICsxLDEzIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdoZWRnZXdhcnMnCiBwa2duYW1l PWhlZGdld2FycwogdmVyc2lvbj0xLjAuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRE5PU0VSVkVSPTEgLUREQVRBX0lOU1RBTExf RElSPS91c3Ivc2hhcmUvJHtwa2duYW1lfQogIC1EUEhZU0ZTX1NZU1RFTT0xIC1ETUlOSU1BTF9G TEFHUz0xIgogbWFrZV9jbWQ9bWFrZQogaG9zdG1ha2VkZXBlbmRzPSJsdWE1MSBwa2ctY29uZmln IHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbHVh NTEtZGV2ZWwgcGh5c2ZzLWRldmVsIHF0NS10b29scy1kZXZlbCBTREwyX2ltYWdlLWRldmVsCitt YWtlZGVwZW5kcz0iZmZtcGVnNC1kZXZlbCBsdWE1MS1kZXZlbCBwaHlzZnMtZGV2ZWwgcXQ1LXRv b2xzLWRldmVsIFNETDJfaW1hZ2UtZGV2ZWwKICBTREwyX21peGVyLWRldmVsIFNETDJfbmV0LWRl dmVsIFNETDJfdHRmLWRldmVsIgogZGVwZW5kcz0ibGliZnJlZWdsdXQiCiBzaG9ydF9kZXNjPSJG dW5ueSB0dXJuLWJhc2VkIGFydGlsbGVyeSBnYW1lLCBmZWF0dXJpbmcgZmlnaHRpbmcgSGVkZ2Vo b2dzISIKCkZyb20gMmRkYjE4MzAwMGQxZGUxMGY0MDY3ZTM4YTczNmM0NzY3NjkzZGRmNCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQwLzEx NV0gaWRqYzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2lkamMvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lkamMvdGVtcGxhdGUgYi9zcmNwa2dzL2lkamMvdGVt cGxhdGUKaW5kZXggYTljZGUwNjY1ZDU1Yi4uNmYxZDIxYzU3ODFmZCAxMDA2NDQKLS0tIGEvc3Jj cGtncy9pZGpjL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvaWRqYy90ZW1wbGF0ZQpAQCAtNSw3ICs1 LDcgQEAgcmV2aXNpb249NQogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBl bmRzPSJwa2ctY29uZmlnIGdpdCBweXRob24zIGF1dG9tYWtlIGdldHRleHQtZGV2ZWwgbGlidG9v bCIKIG1ha2VkZXBlbmRzPSJsaWJ2b3JiaXMtZGV2ZWwgbGlib2dnLWRldmVsIGphY2stZGV2ZWwg bGlic2FtcGxlcmF0ZS1kZXZlbAotIGxpYmZsYWMtZGV2ZWwgbGlic25kZmlsZS1kZXZlbCBtcGcx MjMtZGV2ZWwgZmZtcGVnLWRldmVsIHNwZWV4LWRldmVsCisgbGliZmxhYy1kZXZlbCBsaWJzbmRm aWxlLWRldmVsIG1wZzEyMy1kZXZlbCBmZm1wZWc0LWRldmVsIHNwZWV4LWRldmVsCiAgZ2xpYi1k ZXZlbCBwaXhtYW4tZGV2ZWwgbGFtZS1kZXZlbCBweXRob24zLWdvYmplY3QtZGV2ZWwgbGlic2hv dXQtaWRqYy1kZXZlbAogIG9wdXMtZGV2ZWwgdHdvbGFtZS1kZXZlbCBweXRob24zLW11dGFnZW4g cHl0aG9uMy1kZXZlbCIKIGRlcGVuZHM9InB5dGhvbjMtZ29iamVjdCBweXRob24zLW11dGFnZW4g ZGVza3RvcC1maWxlLXV0aWxzIHNoYXJlZC1taW1lLWluZm8gcHl0aG9uMy1kYnVzIGphY2siCgpG cm9tIDhlMTFhNDY5ODBjMGYxZjNlNDRiOTQ1MDQ3M2JjNTkwZTA0YTdmOWYgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0MS8xMTVdIGtmaWxl bWV0YWRhdGE1OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mva2ZpbGVtZXRh ZGF0YTUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRl IGIvc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0ZQppbmRleCAwMGY3YTk4Y2Y2Mzk5Li5l Mjk0YWU1YWY5NDdjIDEwMDY0NAotLS0gYS9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRl CisrKyBiL3NyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdrZmlsZW1ldGFkYXRhNScKIHBrZ25hbWU9a2ZpbGVtZXRhZGF0 YTUKIHZlcnNpb249NS4xMTEuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0ia2NvcmVhZGRvbnMgZXh0cmEtY21ha2UtbW9kdWxlcyBw a2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZQogIGdldHRleHQga2NvcmVhZGRvbnMg cHl0aG9uMyIKCkZyb20gOGExZTQxYjEyMTBhZThiOWI2NjRhMDEzNWE5OGIyNjQ4ZjNhYTMxOSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQy LzExNV0ga2lkMzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2tpZDMvcGF0 Y2hlcy9mZm1wZWc1LnBhdGNoIHwgMTcgKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2Vk LCAxNyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9raWQzL3BhdGNo ZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2lkMy9wYXRjaGVzL2ZmbXBl ZzUucGF0Y2ggYi9zcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjEzNWZjNTBlMDdjOWIKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsMTcg QEAKKyMgaHR0cHM6Ly9hdXIuYXJjaGxpbnV4Lm9yZy9jZ2l0L2F1ci5naXQvZGlmZi9mZm1wZWc1 LnBhdGNoP2g9a2lkMy1jbGkmaWQ9MTI0MTBhNzQ5MDY2MTJlN2VmYzBlYzhmYmNlNzM5YjRhMGZl ZjdlNworZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2Fjb3VzdGlkaW1wb3J0L2ZmbXBlZ2Zpbmdl cnByaW50ZGVjb2Rlci5jcHAgYi9zcmMvcGx1Z2lucy9hY291c3RpZGltcG9ydC9mZm1wZWdmaW5n ZXJwcmludGRlY29kZXIuY3BwCitpbmRleCBlMTU2ZDQyNC4uZTEyYjlhYmQgMTAwNjQ0CistLS0g YS9zcmMvcGx1Z2lucy9hY291c3RpZGltcG9ydC9mZm1wZWdmaW5nZXJwcmludGRlY29kZXIuY3Bw CisrKysgYi9zcmMvcGx1Z2lucy9hY291c3RpZGltcG9ydC9mZm1wZWdmaW5nZXJwcmludGRlY29k ZXIuY3BwCitAQCAtMjMyLDcgKzIzMiwxMSBAQCBwcml2YXRlOgorICAgZnJpZW5kIGNsYXNzIEZv cm1hdDsKKyAgIGZyaWVuZCBjbGFzcyBDb252ZXJ0ZXI7CisgICBBVkNvZGVjQ29udGV4dCogbV9w dHI7CisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lOVCg1OSwgMCwg MCkKKyAgIEFWQ29kZWMqIG1faW1wbDsKKysjZWxzZQorKyAgY29uc3QgQVZDb2RlYyogbV9pbXBs OworKyNlbmRpZgorICAgQVZGcmFtZSogbV9mcmFtZTsKKyAgIGJvb2wgbV9vcGVuZWQ7CisgfTsK CkZyb20gNTFjYTBlNjNhZWI4NzdkMmYwMjFlMGQ1NmI5N2M3YTRlNGFlNTRkMSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQzLzExNV0ga29k aTogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2tvZGkvdGVtcGxhdGUg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2tvZGkvdGVtcGxhdGUgYi9zcmNwa2dzL2tvZGkvdGVtcGxhdGUK aW5kZXggYWE1OTMyNDI1OGEwZC4uNmNmNjRkZmIyNzI5NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9r b2RpL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva29kaS90ZW1wbGF0ZQpAQCAtNTQsNyArNTQsNyBA QCBtYWtlZGVwZW5kcz0iCiAgbGlibWFkLWRldmVsIGZvbnRjb25maWctZGV2ZWwgbGliWGluZXJh bWEtZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJtbXMtZGV2ZWwKICBlbmNhLWRldmVsIGJv b3N0LWRldmVsIGxpYmN1cmwtZGV2ZWwgbGlidmEtZGV2ZWwgbGlidmRwYXUtZGV2ZWwgbGliYXNz LWRldmVsCiAgbGliYmx1ZXRvb3RoLWRldmVsIHlhamwtZGV2ZWwgbGlicGxpc3QtZGV2ZWwgbGli cnRtcC1kZXZlbCB0aW55eG1sLWRldmVsCi0gdGFnbGliLWRldmVsIGxpYmNhcC1kZXZlbCBsYW1l LWRldmVsIGxpYmJsdXJheS1kZXZlbCBsaWJuZnMtZGV2ZWwgZmZtcGVnLWRldmVsCisgdGFnbGli LWRldmVsIGxpYmNhcC1kZXZlbCBsYW1lLWRldmVsIGxpYmJsdXJheS1kZXZlbCBsaWJuZnMtZGV2 ZWwgZmZtcGVnNC1kZXZlbAogIGdpZmxpYi1kZXZlbCBsaWJ4c2x0LWRldmVsIGdudXRscy1kZXZl bCBsaWJzc2gtZGV2ZWwgbGlibWljcm9odHRwZC1kZXZlbAogIGxpYmNlYy1kZXZlbCBkY2FkZWMt ZGV2ZWwgZmxhdGJ1ZmZlcnMtZGV2ZWwgZm10LWRldmVsIGxjbXMyLWRldmVsCiAgbGliZnN0cmNt cC1kZXZlbCByYXBpZGpzb24gbGliY2Rpby1wYXJhbm9pYSBzcGRsb2cgbGlid2F5bGFuZHBwLWRl dmVsCgpGcm9tIGRiODA3MDc2NjQ0MDJjODEzY2U5Mjk0ZDUyZDg4ZmZmNTczNzFlYjkgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0NC8xMTVd IGtwaXBld2lyZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2twaXBld2ly ZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlIGIvc3JjcGtn cy9rcGlwZXdpcmUvdGVtcGxhdGUKaW5kZXggYjJkM2Q4MGMxZGQxYS4uOTgxYzdiODg5MGRlZCAx MDA2NDQKLS0tIGEvc3JjcGtncy9rcGlwZXdpcmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9rcGlw ZXdpcmUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrcGlw ZXdpcmUnCiBwa2duYW1lPWtwaXBld2lyZQogdmVyc2lvbj01LjI3LjkKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtl LW1vZHVsZXMgcGxhc21hLXdheWxhbmQtcHJvdG9jb2xzIGdldHRleHQKICBxdDUtcW1ha2UgcXQ1 LWhvc3QtdG9vbHMgcGtnLWNvbmZpZyB3YXlsYW5kLWRldmVsIGtjb3JlYWRkb25zCgpGcm9tIDVm YWFmY2IwMTVmMzI5N2EwNWM4N2FkNTUwYTA0ZTE0OWE3ODY0ZmYgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0NS8xMTVdIGxpYmV4dHJhY3Rv cjogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2xpYmV4dHJhY3Rvci90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBsYXRlIGIvc3JjcGtn cy9saWJleHRyYWN0b3IvdGVtcGxhdGUKaW5kZXggYmZjZWE5NzlhMzA4Yy4uZmFmZDhkZWRiYzM0 YiAxMDA2NDQKLS0tIGEvc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9saWJleHRyYWN0b3IvdGVtcGxhdGUKQEAgLTcsNyArNyw3IEBAIGNvbmZpZ3VyZV9hcmdzPSIt LWRpc2FibGUtc3RhdGljIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgogbWFrZWRlcGVu ZHM9InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZXhpdjItZGV2ZWwgdGlmZi1kZXZlbCBsaWJwbmct ZGV2ZWwKICBsaWJqcGVnLXR1cmJvLWRldmVsIGxpYnZvcmJpcy1kZXZlbCBsaWJmbGFjLWRldmVs IGdpZmxpYi1kZXZlbCBsaWJtcGVnMi1kZXZlbAotIGZmbXBlZy1kZXZlbCBndGsrMy1kZXZlbCBs aWJsdGRsLWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwgZmlsZS1kZXZlbCBsaWJnc2YtZGV2ZWwiCisg ZmZtcGVnNC1kZXZlbCBndGsrMy1kZXZlbCBsaWJsdGRsLWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwg ZmlsZS1kZXZlbCBsaWJnc2YtZGV2ZWwiCiBzaG9ydF9kZXNjPSJMaWJyYXJ5IHVzZWQgdG8gZXh0 cmFjdCBtZXRhIGRhdGEgZnJvbSBmaWxlcyIKIG1haW50YWluZXI9Ik1hcnRpbiBSaWVzZSA8Z3Jh dWVoYWFyZUBnbXguZGU+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKCkZyb20gN2NmMjU4 NzQxOGIyYmYxNjMwYmE3ZmQxNTU5ZjA0NjY0MzE0NmUyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ2LzExNV0gbGlib3BlbmFsOiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbGlib3BlbmFsL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUgYi9zcmNwa2dzL2xpYm9wZW5hbC90ZW1w bGF0ZQppbmRleCA3NzIxOGY5ZTUzOWRmLi4zZjQ5ZWQ3NWExZmRjIDEwMDY0NAotLS0gYS9zcmNw a2dzL2xpYm9wZW5hbC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xpYm9wZW5hbCcKIHBrZ25hbWU9 bGlib3BlbmFsCiB2ZXJzaW9uPTEuMjIuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREFMU09GVF9FWEFNUExFUz1PRkYiCiBob3N0 bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIGFmZjg1ZDgwZTNhOWVkNTE1OGMwZTVmMjQ1 MWJkYWJmMjVhZTYyZjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3Vi amVjdDogW1BBVENIIDA0Ny8xMTVdIGxvdWRnYWluOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgMTEgKysrKysrKysr KysKIHNyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUgICAgICAgICAgICAgIHwgIDIgKy0KIDIgZmls ZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2xvdWRn YWluL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAwLi4xNmQ0NTEwZWU5OGZhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sb3Vk Z2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0tIGEvc3JjL3Nj YW4uYwkyMDE5LTA5LTA2IDExOjMxOjE5LjAwMDAwMDAwMCAtMDQwMAorKysrIGIvc3JjL3NjYW4u YwkyMDIzLTAzLTIzIDExOjE1OjQwLjg2Nzk2ODUyMSAtMDQwMAorQEAgLTY5LDggKzY5LDYgQEAK KyAJICogSXQgaXMgbm93IHVzZWxlc3MKKyAJICogaHR0cHM6Ly9naXRodWIuY29tL0ZGbXBlZy9G Rm1wZWcvYmxvYi83MGQyNTI2OGMyMWNiZWU1ZjA4MzA0ZGE5NWJlMWY2NDdjNjMwYzE1L2RvYy9B UEljaGFuZ2VzI0w4NgorIAkgKi8KKy0gIGlmIChhdmZvcm1hdF92ZXJzaW9uKCkgPCBBVl9WRVJT SU9OX0lOVCg1OCw5LDEwMCkpCistICAgIGF2X3JlZ2lzdGVyX2FsbCgpOworIAorIAlhdl9sb2df c2V0X2NhbGxiYWNrKHNjYW5fYXZfbG9nKTsKKyAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbG91ZGdh aW4vdGVtcGxhdGUgYi9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlCmluZGV4IGRhNGYyZDU2ZTk0 YzMuLjRkNmJmMjllZmI0ZmQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUK KysrIGIvc3JjcGtncy9sb3VkZ2Fpbi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ2xvdWRnYWluJwogcGtnbmFtZT1sb3VkZ2FpbgogdmVyc2lvbj0wLjYuOAot cmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5k cz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJsaWJlYnVyMTI4LWRldmVsIHRhZ2xpYi1kZXZl bCBmZm1wZWctZGV2ZWwiCgpGcm9tIDJmODIzMzQyM2I1ZGJlN2M4NTFlYjI3YmVhMzdlNzY5YmJm ODVlYTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BB VENIIDA0OC8xMTVdIG1lZGlhc3RyZWFtZXI6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0t LQogc3JjcGtncy9tZWRpYXN0cmVhbWVyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tZWRp YXN0cmVhbWVyL3RlbXBsYXRlIGIvc3JjcGtncy9tZWRpYXN0cmVhbWVyL3RlbXBsYXRlCmluZGV4 IDBmY2ZmYTc2NTNkMTguLjkyYWRhODg3NDNhOWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWVkaWFz dHJlYW1lci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUKQEAg LTUsNyArNSw3IEBAIHJldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJn cz0iLURFTkFCTEVfU1RSSUNUPTAgLURFTkFCTEVfVU5JVF9URVNUUz0wIgogaG9zdG1ha2VkZXBl bmRzPSJweXRob24zIgotbWFrZWRlcGVuZHM9ImJ6cnRwLWRldmVsIGZmbXBlZy1kZXZlbCBnbGV3 LWRldmVsIGxpYlh2LWRldmVsIGxpYnNydHAtZGV2ZWwKK21ha2VkZXBlbmRzPSJienJ0cC1kZXZl bCBmZm1wZWc0LWRldmVsIGdsZXctZGV2ZWwgbGliWHYtZGV2ZWwgbGlic3J0cC1kZXZlbAogIGxp YnVwbnAtZGV2ZWwgbGlidnB4LWRldmVsIG1iZWR0bHMtZGV2ZWwgb3B1cy1kZXZlbCBvcnRwLWRl dmVsIHB1bHNlYXVkaW8tZGV2ZWwKICBsaWJ0aGVvcmEtZGV2ZWwgc3BlZXgtZGV2ZWwgdjRsLXV0 aWxzLWRldmVsIGJjZzcyOS1kZXZlbCBiY21hdHJvc2thMi1kZXZlbCBsaWJnc20tZGV2ZWwKICB6 eGluZy1jcHAtZGV2ZWwiCgpGcm9tIDZmOWY3ODYxNmViNDUyMmY4ZDdiMDdlMTk3YTQ4MGI3NjY2 MmQwMTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BB VENIIDA0OS8xMTVdIG1nYmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9t Z2JhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tZ2JhL3RlbXBsYXRlIGIvc3JjcGtncy9t Z2JhL3RlbXBsYXRlCmluZGV4IDU1MTNlM2ZkMTZmM2YuLmY1Yzg3YTQ4OTMwMDIgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvbWdiYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21nYmEvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtZ2JhJwogcGtnbmFtZT1tZ2JhCiB2 ZXJzaW9uPTAuMTAuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UK IGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UgZGVz a3RvcC1maWxlLXV0aWxzIgogbWFrZWRlcGVuZHM9IlNETDItZGV2ZWwgZmZtcGVnLWRldmVsIGxp YmVkaXQtZGV2ZWwgbGliZXBveHktZGV2ZWwgbGlibWFnaWNrLWRldmVsCgpGcm9tIGRiYjM1NjNi NmUzZWUzN2I2ZDE4N2JkZGYwMjY4Mjg2NGViNDdmZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA1MC8xMTVdIG1sdDogcmV2YnVtcCBmb3Ig ZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL21sdC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvbWx0L3RlbXBsYXRlIGIvc3JjcGtncy9tbHQvdGVtcGxhdGUKaW5kZXggNzNlMzkxNWFhYWI5 YS4uZWM1MDU0YmUzYjc1ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9tbHQvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9tbHQvdGVtcGxhdGUKQEAgLTgsNyArOCw3IEBAIGNvbmZpZ3VyZV9hcmdzPSItLXBy ZWZpeD0vdXNyIC0tbGliZGlyPS91c3IvbGliJFhCUFNfVEFSR0VUX1dPUkRTSVpFCiAgLS1zd2ln LWxhbmd1YWdlcz1weXRob24iCiBob3N0bWFrZWRlcGVuZHM9ImRveHlnZW4gcGtnLWNvbmZpZyBs YWRzcGEtc2RrIHN3aWcgcHl0aG9uMyB3aGljaCIKICMgWFhYOiBtb3ZpdCB2aWQuc3RhYgotbWFr ZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZy1kZXZlbCBndGsrLWRldmVsIGphY2stZGV2 ZWwgbGFkc3BhLXNkaworbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZzQtZGV2ZWwg Z3RrKy1kZXZlbCBqYWNrLWRldmVsIGxhZHNwYS1zZGsKICBsaWJleGlmLWRldmVsIGxpYnNhbXBs ZXJhdGUtZGV2ZWwgbGlieG1sMi1kZXZlbCBzb3gtZGV2ZWwgU0RMX2ltYWdlLWRldmVsCiAgZmZ0 dy1kZXZlbCBmcmVpMHItcGx1Z2lucyBweXRob24zLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwgbW92 aXQtZGV2ZWwKICBsaWJ2aWRzdGFiLWRldmVsIgoKRnJvbSBmYjZlNTdjYmM2M2JhYTViYzUxOTlh ZTY0ZTg2MDg3YTM5MmQ0OTJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNTEvMTE1XSBtb2M6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMK Ci0tLQogc3JjcGtncy9tb2MvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21vYy90ZW1wbGF0 ZSBiL3NyY3BrZ3MvbW9jL3RlbXBsYXRlCmluZGV4IDNhMDQ5MzJjOGYxZTYuLmQ4ZGU4MTYwMjZi NjQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbW9jL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbW9jL3Rl bXBsYXRlCkBAIC00LDcgKzQsNyBAQCB2ZXJzaW9uPTIuNS4yCiByZXZpc2lvbj03CiBidWlsZF9z dHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCi1tYWtlZGVw ZW5kcz0iZGItZGV2ZWwgbmN1cnNlcy1kZXZlbCBsaWJjdXJsLWRldmVsIHBvcHQtZGV2ZWwgZmZt cGVnLWRldmVsCittYWtlZGVwZW5kcz0iZGItZGV2ZWwgbmN1cnNlcy1kZXZlbCBsaWJjdXJsLWRl dmVsIHBvcHQtZGV2ZWwgZmZtcGVnNC1kZXZlbAogIGphY2stZGV2ZWwgYWxzYS1saWItZGV2ZWwg bGlibHRkbC1kZXZlbCBsaWJmbGFjLWRldmVsIGxpYnZvcmJpcy1kZXZlbAogIGxpYm1hZC1kZXZl bCBsaWJtcGNkZWMtZGV2ZWwgbGlibW9kcGx1Zy1kZXZlbCBsaWJpZDN0YWctZGV2ZWwgZmFhZDIt ZGV2ZWwKICB0YWdsaWItZGV2ZWwgbGlic25kZmlsZS1kZXZlbCB3YXZwYWNrLWRldmVsIHNwZWV4 LWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwKCkZyb20gNGU4YTZiZWU2MThhM2IxYjk0NmMyZDdm MTgzNjM4ODAzNDIzMjU1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDUyLzExNV0gbW90aW9uOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3MvbW90aW9uL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tb3Rpb24vdGVt cGxhdGUgYi9zcmNwa2dzL21vdGlvbi90ZW1wbGF0ZQppbmRleCAzY2YzYzMwMzVjNWI3Li43ZGNh MTJkODUxZTMzIDEwMDY0NAotLS0gYS9zcmNwa2dzL21vdGlvbi90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL21vdGlvbi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J21vdGlvbicKIHBrZ25hbWU9bW90aW9uCiB2ZXJzaW9uPTQuNS4xCi1yZXZpc2lvbj0xCityZXZp c2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9t YWtlIHBrZy1jb25maWcgZ2V0dGV4dC1kZXZlbCB0YXIiCiBtYWtlZGVwZW5kcz0iZmZtcGVnLWRl dmVsIGxpYm1pY3JvaHR0cGQtZGV2ZWwgdjRsLXV0aWxzLWRldmVsIGdldHRleHQtZGV2ZWwiCgpG cm9tIDQ2ZTE2YmYwOTU0YjcwOGNiNDNlNTQ4MTUxMDE5MjA3OTcxNzg0NDQgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA1My8xMTVdIG5vdGN1 cnNlczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL25vdGN1cnNlcy90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlIGIvc3JjcGtncy9ub3Rj dXJzZXMvdGVtcGxhdGUKaW5kZXggNmRkOGEwOTEzMTlmNy4uMzExMGMzMGM5YWZmMiAxMDA2NDQK LS0tIGEvc3JjcGtncy9ub3RjdXJzZXMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9ub3RjdXJzZXMv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdub3RjdXJzZXMn CiBwa2duYW1lPW5vdGN1cnNlcwogdmVyc2lvbj0zLjAuOQotcmV2aXNpb249MQorcmV2aXNpb249 MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFVTRV9TVEFUSUM9T04gJCh2 b3B0X2Jvb2wgbWFuIFVTRV9QQU5ET0MpIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnICQo dm9wdF9pZiBtYW4gcGFuZG9jKSIKCkZyb20gOWZiZTQzNzU4ZmU1Y2NhZjhjMzM5OGVjZjFkYTM5 ZWIyNzMxN2QwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDU0LzExNV0gb2xpdmU6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQog c3JjcGtncy9vbGl2ZS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29saXZlL3RlbXBs YXRlIGIvc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZQppbmRleCAxMmE0NjkzNmM5OTAwLi41YzI5MTdi OWM1MTI0IDEwMDY0NAotLS0gYS9zcmNwa2dzL29saXZlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv b2xpdmUvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29s aXZlJwogcGtnbmFtZT1vbGl2ZQogdmVyc2lvbj0wLjEuMgotcmV2aXNpb249MgorcmV2aXNpb249 MwogYnVpbGRfc3R5bGU9cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icXQ1LXFtYWtlIHF0NS1ob3N0 LXRvb2xzIHBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0icXQ1LWRldmVsIHF0NS1tdWx0aW1lZGlh LWRldmVsIHF0NS1zdmctZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWkwci1wbHVnaW5zIgorbWFrZWRl cGVuZHM9InF0NS1kZXZlbCBxdDUtbXVsdGltZWRpYS1kZXZlbCBxdDUtc3ZnLWRldmVsIGZmbXBl ZzQtZGV2ZWwgZnJlaTByLXBsdWdpbnMiCiBzaG9ydF9kZXNjPSJOb24tbGluZWFyIHZpZGVvIGVk aXRvciIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNl bnNlPSJHUEwtMy4wLW9yLWxhdGVyIgoKRnJvbSBiMWU2NzA4MWViNWU5NTFmNGRjYWY1MTY1NTgw ZTQwMzY3NTZiMTE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNTUvMTE1XSBvbXhwbGF5ZXI6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMK Ci0tLQogc3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9v bXhwbGF5ZXIvdGVtcGxhdGUgYi9zcmNwa2dzL29teHBsYXllci90ZW1wbGF0ZQppbmRleCA5YTY2 NjkwYzgzZWJiLi5hMjFiODc4ODc4MDM3IDEwMDY0NAotLS0gYS9zcmNwa2dzL29teHBsYXllci90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29teHBsYXllci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29teHBsYXllcicKIHBrZ25hbWU9b214cGxheWVyCiB2ZXJz aW9uPTIwMTkwMTAyCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBzaG9ydF9kZXNjPSJDb21tYW5k bGluZSBPTVggcGxheWVyIGZvciB0aGUgUmFzcGJlcnJ5IFBpIgogbWFpbnRhaW5lcj0iT3JwaGFu ZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCkBA IC0xNSw3ICsxNSw3IEBAIGNoZWNrc3VtPWFmMmQ5NDUwZjg5NDc4NDJlYThjNDAxZmU5ZjcxZWVj NDQ0MDEzZWJiZGVlMjlmMmFjODI4YzljNDkzYzEzMjkKIGFyY2hzPSJhcm12NmwqIGFybXY3bCoi CiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIGhvc3RtYWtlZGVwZW5kcz0icnVieS1yb25uIHBr Zy1jb25maWciCi1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgcnBpLXVzZXJsYW5kLWRldmVs IHBjcmUtZGV2ZWwgYm9vc3QtZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgZmZtcGVnLWRldmVsIGRidXMt ZGV2ZWwiCittYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgcnBpLXVzZXJsYW5kLWRldmVsIHBj cmUtZGV2ZWwgYm9vc3QtZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgZmZtcGVnNC1kZXZlbCBkYnVzLWRl dmVsIgogZGVwZW5kcz0iZnJlZWZvbnQtdHRmIgogCiBkb19idWlsZCgpIHsKCkZyb20gNTI5OTZi NjcyMDE2MGFhZWVkYTRiODI0ODFiYjM5Y2MyNTAyZDc2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU2LzExNV0gb3BlbnRvb256OiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUgYi9zcmNwa2dzL29wZW50b29uei90ZW1w bGF0ZQppbmRleCBlZTlmNzYwM2Y1NWZkLi4zZTgxODM0Y2EwZWRkIDEwMDY0NAotLS0gYS9zcmNw a2dzL29wZW50b29uei90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW50b29ueicKIHBrZ25hbWU9 b3BlbnRvb256CiB2ZXJzaW9uPTEuNi4wCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF93 cmtzcmM9InRvb256L3NvdXJjZXMiCiBidWlsZF9zdHlsZT1jbWFrZQogbWFrZV9jbWQ9bWFrZQoK RnJvbSAzMTViYTk4MzA0ZDRiNDFiYzI2NWEwNWM0ODE3YzBiYjU5NjY0MjRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTcvMTE1XSBwaWFu b2JhcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3BpYW5vYmFyL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZSBiL3NyY3BrZ3MvcGlhbm9i YXIvdGVtcGxhdGUKaW5kZXggZTNmZWJiODIxYTQ1MS4uMWUzZGMxYmY5MzA4ZSAxMDA2NDQKLS0t IGEvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3BpYW5vYmFyL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncGlhbm9iYXInCiBwa2du YW1lPXBpYW5vYmFyCiB2ZXJzaW9uPTIwMjIuMDQuMDEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogbWFrZV9idWlsZF9hcmdzPSJWPTEiCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIGZkNTU2MTZlMzIwNWI5NzVjZDBlYjkyYTQxZTE2 YWM4M2E4NWUyZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVj dDogW1BBVENIIDA1OC8xMTVdIHBwc3NwcDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0t CiBzcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZSB8IDcgKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMg aW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Bwc3Nw cC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHBzc3BwL3RlbXBsYXRlCmluZGV4IDJjMGRlZDQ5NmViOTgu LjEyOTRlZjNhZTY2OWMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHBzc3BwL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvcHBzc3BwL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAncHBzc3BwJwogcGtnbmFtZT1wcHNzcHAKIHZlcnNpb249MS4xNi42Ci1yZXZpc2lvbj0x CityZXZpc2lvbj0yCiBfZ2xzbGFuZ19jb21taXQ9YjM0ZjYxOWUxYzg1ODEwZGNiM2M1NzgxMDdk MmU0OGJhNGVlMmIzNwogX1NQSVJWX0Nyb3NzX2NvbW1pdD00MjEyZWVmNjdlZDBjYTA0OGNiNzI2 YTY3NjcxODU1MDRlNzY5NWU1CiBfYXJtaXBzX2NvbW1pdD03YmQxZWM5M2Q0NTg2OTg1YmExZWY0 MjBiNDNiNWU2MjBmNjg2OTVlCkBAIC0xNSw3ICsxNSw3IEBAIGNvbmZpZ3VyZV9hcmdzPSItREhF QURMRVNTPTEgLURVU0VfU1lTVEVNX0ZGTVBFRz0xIC1EVU5JVFRFU1Q9T04KICAtRFVTSU5HX1FU X1VJPSQodm9wdF9pZiBxdCBPTiBPRkYpIC1EVVNFX1NZU1RFTV9aU1REPU9OCiAgLURBUk1JUFNf VVNFX1NURF9GSUxFU1lTVEVNPU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHB5dGhv bjMgJCh2b3B0X2lmIHF0IHF0NS1ob3N0LXRvb2xzKSIKLW1ha2VkZXBlbmRzPSJ6bGliLWRldmVs IGdsZXctZGV2ZWwgZmZtcGVnLWRldmVsIGxpYnppcC1kZXZlbAorbWFrZWRlcGVuZHM9InpsaWIt ZGV2ZWwgZ2xldy1kZXZlbCBmZm1wZWc0LWRldmVsIGxpYnppcC1kZXZlbAogIHNuYXBweS1kZXZl bCByYXBpZGpzb24gbGlicG5nLWRldmVsIGxpYnpzdGQtZGV2ZWwKICAkKHZvcHRfaWYgc2RsMiAn U0RMMl90dGYtZGV2ZWwgU0RMMi1kZXZlbCcpICQodm9wdF9pZiB3YXlsYW5kIHdheWxhbmQtZGV2 ZWwpCiAgJCh2b3B0X2lmIHF0ICdxdDUtZGV2ZWwgcXQ1LW11bHRpbWVkaWEtZGV2ZWwnKSIKQEAg LTcyLDcgKzcyLDcgQEAgcG9zdF9leHRyYWN0KCkgewogICAgICAgICBtdiAke3dya3NyY30vcmNo ZWV2b3MtJHtfcmNoZWV2b3NfY29tbWl0fSAke3dya3NyY30vZXh0L3JjaGVldm9zCiB9CiAKLXBv c3RfcGF0Y2goKXsKK3Bvc3RfcGF0Y2goKSB7CiAJIyBkaXNhYmxlIGdpdCB2ZXJzaW9uaW5nCiAJ dnNlZCAtZSAnc3xmaW5kX3BhY2thZ2UoR2l0KXwjICZ8JyAtaSBnaXQtdmVyc2lvbi5jbWFrZQog fQpAQCAtODUsNyArODUsNiBAQCBwb3N0X2NvbmZpZ3VyZSgpIHsKIH0KIAogZG9faW5zdGFsbCgp IHsKLQl2bGljZW5zZSBMSUNFTlNFLlRYVAogCXZpbnN0YWxsIGljb25zL2ljb24uc3ZnIDY0NCB1 c3Ivc2hhcmUvcGl4bWFwcyBwcHNzcHAuc3ZnCiAJdmluc3RhbGwgUXQvUFBTU1BQLmRlc2t0b3Ag NjQ0IHVzci9zaGFyZS9hcHBsaWNhdGlvbnMKIAl2YmluIGJ1aWxkL1BQU1NQUEhlYWRsZXNzIHBw c3NwcC1oZWFkbGVzcwoKRnJvbSA0MzQyZjFhZWNlYmRiMGY5YWZkNTY0MzU5MzE2YjYzYzgwODdk N2Q1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwNTkvMTE1XSBwcWl2OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcHFp di90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHFpdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHFp di90ZW1wbGF0ZQppbmRleCA1NDJmYzI3YTJkMzJhLi45MzA4ZDk0OWI2YTFjIDEwMDY0NAotLS0g YS9zcmNwa2dzL3BxaXYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9wcWl2L3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHFpdicKIHBrZ25hbWU9cHFpdgogdmVy c2lvbj0yLjEyCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZp bGUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJnbGliLWRldmVs IGd0ayszLWRldmVsICQodm9wdF9pZiBmZm1wZWcgZmZtcGVnLWRldmVsKQoKRnJvbSA5MGE0N2M4 MGEwMDFmMGUwNzU5NDEyY2I5MmJjZWJiYTJmNzEyZmNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIz IDIwOjAxOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjAvMTE1XSBxbW1wOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcW1tcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcW1tcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZQppbmRleCA1Mzc4MWVhM2Jj MjhhLi4yZGEwN2YxZTg3ZWFjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3FtbXAvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9xbW1wL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAncW1tcCcKIHBrZ25hbWU9cW1tcAogdmVyc2lvbj0xLjYuMQotcmV2aXNpb249MworcmV2 aXNpb249NAogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFVTRV9IQUw6Qk9P TD1GQUxTRSAtRFFNTVBfREVGQVVMVF9VSTpTVFJJTkc9c2ltcGxlIgogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSIKCkZyb20gMGIzMDNmYWQ1NjBl YTk0NzcwZjg3NjA4YjljMDA2YzE1MmM1NGNjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYxLzExNV0gcXQ1LXdlYmVuZ2luZTogdXBkYXRl IHRvIDUuMTUuMTMKCi0tLQogLi4uL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2gg ICAgICAgIHwgIDExICsrCiBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBh dGNoICAgfCAxNzkgKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVt cGxhdGUgICAgICAgICAgICAgICAgfCAgMTAgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTk1IGluc2Vy dGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUt d2ViZW5naW5lL3BhdGNoZXMvY2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0 Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9jaHJvbWl1bS1t ZWRpYS1maWx0ZXJzLWNwcDE0LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv Y2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAwLi4wNGFkYzU0MGYyY2JjCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvY2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5w YXRjaApAQCAtMCwwICsxLDExIEBACistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEv ZmlsdGVycy9CVUlMRC5nbgkyMDIzLTAyLTI3IDEzOjMyOjU5LjAwMDAwMDAwMCAtMDUwMAorKysr IGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvQlVJTEQuZ24JMjAyMy0wNC0w MiAxNzoyMTozOS4yMDQwNjYzODQgLTA0MDAKK0BAIC05Niw2ICs5Niw4IEBACisgICAgICIvL3Vp L2dmeC9nZW9tZXRyeTpnZW9tZXRyeSIsCisgICBdCisgCisrICBjZmxhZ3NfY2MgPSBbICItc3Rk PWMrKzE0IiBdCisrCisgICBsaWJzID0gW10KKyAKKyAgIGlmIChwcm9wcmlldGFyeV9jb2RlY3Mp IHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0 Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmFjNTVlMTYzNDQyM2EKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBA IC0wLDAgKzEsMTc5IEBACistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVy cy9mZm1wZWdfZGVtdXhlci5jYwkyMDIzLTA0LTAyIDE2OjUwOjU3LjczMjU0NzQ0NiAtMDQwMAor KysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIu Y2MJMjAyMy0wNC0wMiAxNjo1MDowOS40ODY0Nzg5OTUgLTA0MDAKK0BAIC01Nyw2ICs1Nyw4IEBA CisgCisgbmFtZXNwYWNlIHsKKyAKKytjb25zdGV4cHIgaW50NjRfdCBrUmVsYXRpdmVUc0Jhc2Ug PSBzdGF0aWNfY2FzdDxpbnQ2NF90PigweDdmZmVmZmZmZmZmZmZmZmYpOworKworIHZvaWQgU2V0 QVZTdHJlYW1EaXNjYXJkKEFWU3RyZWFtKiBzdHJlYW0sIEFWRGlzY2FyZCBkaXNjYXJkKSB7Cisg ICBEQ0hFQ0soc3RyZWFtKTsKKyAgIHN0cmVhbS0+ZGlzY2FyZCA9IGRpc2NhcmQ7CitAQCAtOTAs MjQgKzkyLDEyIEBACisgCisgc3RhdGljIGJhc2U6OlRpbWVEZWx0YSBFeHRyYWN0U3RhcnRUaW1l KEFWU3RyZWFtKiBzdHJlYW0pIHsKKyAgIC8vIFRoZSBkZWZhdWx0IHN0YXJ0IHRpbWUgaXMgemVy by4KKy0gIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90aW1lOworKyAgYmFzZTo6VGltZURlbHRhIHN0 YXJ0X3RpbWUgPSBrTm9UaW1lc3RhbXA7CisgCisgICAvLyBGaXJzdCB0cnkgdG8gdXNlICB0aGUg fHN0YXJ0X3RpbWV8IHZhbHVlIGFzIGlzLgorICAgaWYgKHN0cmVhbS0+c3RhcnRfdGltZSAhPSBr Tm9GRm1wZWdUaW1lc3RhbXApCisgICAgIHN0YXJ0X3RpbWUgPSBDb252ZXJ0RnJvbVRpbWVCYXNl KHN0cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0tPnN0YXJ0X3RpbWUpOworIAorLSAgLy8gTmV4dCB0 cnkgdG8gdXNlIHRoZSBmaXJzdCBEVFMgdmFsdWUsIGZvciBjb2RlY3Mgd2hlcmUgd2Uga25vdyBQ VFMgPT0gRFRTCistICAvLyAoZXhjbHVkZXMgYWxsIEgyNnggY29kZWNzKS4gVGhlIHN0YXJ0IHRp bWUgbXVzdCBiZSByZXR1cm5lZCBpbiBQVFMuCistICBpZiAoc3RyZWFtLT5maXJzdF9kdHMgIT0g a05vRkZtcGVnVGltZXN0YW1wICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQg IT0gQVZfQ09ERUNfSURfSEVWQyAmJgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lk ICE9IEFWX0NPREVDX0lEX0gyNjQgJiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19p ZCAhPSBBVl9DT0RFQ19JRF9NUEVHNCkgeworLSAgICBjb25zdCBiYXNlOjpUaW1lRGVsdGEgZmly c3RfcHRzID0KKy0gICAgICAgIENvbnZlcnRGcm9tVGltZUJhc2Uoc3RyZWFtLT50aW1lX2Jhc2Us IHN0cmVhbS0+Zmlyc3RfZHRzKTsKKy0gICAgaWYgKGZpcnN0X3B0cyA8IHN0YXJ0X3RpbWUpCist ICAgICAgc3RhcnRfdGltZSA9IGZpcnN0X3B0czsKKy0gIH0KKy0KKyAgIHJldHVybiBzdGFydF90 aW1lOworIH0KKyAKK0BAIC00MDgsMTEgKzM5OCwxMSBAQAorICAgc2NvcGVkX3JlZnB0cjxEZWNv ZGVyQnVmZmVyPiBidWZmZXI7CisgCisgICBpZiAodHlwZSgpID09IERlbXV4ZXJTdHJlYW06OlRF WFQpIHsKKy0gICAgaW50IGlkX3NpemUgPSAwOworKyAgICBzaXplX3QgaWRfc2l6ZSA9IDA7Cisg ICAgIHVpbnQ4X3QqIGlkX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKKyAgICAgICAg IHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfV0VCVlRUX0lERU5USUZJRVIsICZpZF9zaXplKTsK KyAKKy0gICAgaW50IHNldHRpbmdzX3NpemUgPSAwOworKyAgICBzaXplX3Qgc2V0dGluZ3Nfc2l6 ZSA9IDA7CisgICAgIHVpbnQ4X3QqIHNldHRpbmdzX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVf ZGF0YSgKKyAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfV0VCVlRUX1NFVFRJTkdT LCAmc2V0dGluZ3Nfc2l6ZSk7CisgCitAQCAtNDI0LDcgKzQxNCw3IEBACisgICAgIGJ1ZmZlciA9 IERlY29kZXJCdWZmZXI6OkNvcHlGcm9tKHBhY2tldC0+ZGF0YSwgcGFja2V0LT5zaXplLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlX2RhdGEuZGF0YSgpLCBzaWRl X2RhdGEuc2l6ZSgpKTsKKyAgIH0gZWxzZSB7CistICAgIGludCBzaWRlX2RhdGFfc2l6ZSA9IDA7 CisrICAgIHNpemVfdCBzaWRlX2RhdGFfc2l6ZSA9IDA7CisgICAgIHVpbnQ4X3QqIHNpZGVfZGF0 YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9Q S1RfREFUQV9NQVRST1NLQV9CTE9DS0FERElUSU9OQUwsICZzaWRlX2RhdGFfc2l6ZSk7CisgCitA QCAtNDg1LDcgKzQ3NSw3IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGFja2V0LT5zaXplIC0gZGF0YV9vZmZzZXQpOworICAgICB9CisgCistICAgIGludCBza2lw X3NhbXBsZXNfc2l6ZSA9IDA7CisrICAgIHNpemVfdCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7Cisg ICAgIGNvbnN0IHVpbnQzMl90KiBza2lwX3NhbXBsZXNfcHRyID0KKyAgICAgICAgIHJlaW50ZXJw cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKKyAgICAg ICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1NLSVBfU0FNUExFUywgJnNraXBfc2Ft cGxlc19zaXplKSk7CitAQCAtMTU4Nyw2ICsxNTc3LDggQEAKKyAgIGZvciAoY29uc3QgYXV0byYg c3RyZWFtIDogc3RyZWFtc18pIHsKKyAgICAgaWYgKCFzdHJlYW0gfHwgc3RyZWFtLT5Jc0VuYWJs ZWQoKSAhPSBlbmFibGVkKQorICAgICAgIGNvbnRpbnVlOworKyAgICBpZiAoc3RyZWFtLT5hdl9z dHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKysgICAgICBjb250aW51ZTsK KyAgICAgaWYgKCFsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0gfHwKKyAgICAgICAgIHN0cmVhbS0+ c3RhcnRfdGltZSgpIDwgbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtLT5zdGFydF90aW1lKCkpIHsK KyAgICAgICBsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0gPSBzdHJlYW0uZ2V0KCk7CitAQCAtMTYw NCw2ICsxNTk2LDggQEAKKyAgICAgaWYgKHN0cmVhbSAmJiBzdHJlYW0tPnR5cGUoKSA9PSBEZW11 eGVyU3RyZWFtOjpWSURFTyAmJgorICAgICAgICAgc3RyZWFtLT5Jc0VuYWJsZWQoKSkgeworICAg ICAgIHZpZGVvX3N0cmVhbSA9IHN0cmVhbS5nZXQoKTsKKysgICAgICBpZiAoc3RyZWFtLT5hdl9z dHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKysgICAgICAgIGNvbnRpbnVl OworICAgICAgIGlmICh2aWRlb19zdHJlYW0tPnN0YXJ0X3RpbWUoKSA8PSBzZWVrX3RpbWUpIHsK KyAgICAgICAgIHJldHVybiB2aWRlb19zdHJlYW07CisgICAgICAgfQorZGlmZiAtTmF1cnAgcXR3 ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcv ZmZtcGVnX2NvbW1vbi5oIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVt L21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmgKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAw MDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBl Z19jb21tb24uaAkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxNzE5Mjc4OCAtMDUwMAorQEAgLTI5LDYg KzI5LDcgQEAgZXh0ZXJuICJDIiB7CisgI2luY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2Zm9ybWF0Lmg+ CisgI2luY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2aW8uaD4KKyAjaW5jbHVkZSA8bGliYXZ1dGlsL2F2 dXRpbC5oPgorKyNpbmNsdWRlIDxsaWJhdnV0aWwvY2hhbm5lbF9sYXlvdXQuaD4KKyAjaW5jbHVk ZSA8bGliYXZ1dGlsL2ltZ3V0aWxzLmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9sb2cuaD4KKyAj aW5jbHVkZSA8bGliYXZ1dGlsL21hc3RlcmluZ19kaXNwbGF5X21ldGFkYXRhLmg+CitkaWZmIC1O YXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlh L2ZpbHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MgcXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3Jk cGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRlci5jYworLS0tIGEv c3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MJ MjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjCTIwMjItMDctMTEgMjI6 MTI6NDcuOTE3MTkyNzg4IC0wNTAwCitAQCAtODUsNyArODUsNyBAQCBib29sIEF1ZGlvRmlsZVJl YWRlcjo6T3BlbkRlbXV4ZXIoKSB7CisgfQorIAorIGJvb2wgQXVkaW9GaWxlUmVhZGVyOjpPcGVu RGVjb2RlcigpIHsKKy0gIEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29k ZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKysgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2Rl Y19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKyAgIGlmIChjb2RlYykg eworICAgICAvLyBNUDMgZGVjb2RlcyB0byBTMTZQIHdoaWNoIHdlIGRvbid0IHN1cHBvcnQsIHRl bGwgaXQgdG8gdXNlIFMxNiBpbnN0ZWFkLgorICAgICBpZiAoY29kZWNfY29udGV4dF8tPnNhbXBs ZV9mbXQgPT0gQVZfU0FNUExFX0ZNVF9TMTZQKQorZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4x NS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRp b19kZWNvZGVyLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21l ZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2RlY29kZXIuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRpb19kZWNvZGVyLmNjCTIwMjItMDUtMjMg MDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVk aWEvZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3Ljkx NzE5Mjc4OCAtMDUwMAorQEAgLTMyOSw3ICszMjksNyBAQCBib29sIEZGbXBlZ0F1ZGlvRGVjb2Rl cjo6Q29uZmlndXJlRGVjb2RlCisgICAgIH0KKyAgIH0KKyAKKy0gIEFWQ29kZWMqIGNvZGVjID0g YXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKysgIGNvbnN0 IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNv ZGVjX2lkKTsKKyAgIGlmICghY29kZWMgfHwKKyAgICAgICBhdmNvZGVjX29wZW4yKGNvZGVjX2Nv bnRleHRfLmdldCgpLCBjb2RlYywgJmNvZGVjX29wdGlvbnMpIDwgMCkgeworICAgICBETE9HKEVS Uk9SKSA8PCAiQ291bGQgbm90IGluaXRpYWxpemUgYXVkaW8gZGVjb2RlcjogIgorZGlmZiAtTmF1 cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9m aWx0ZXJzL2ZmbXBlZ19nbHVlLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2No cm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVlLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAu MDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVy cy9mZm1wZWdfZ2x1ZS5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3OSAtMDUwMAorQEAg LTU5LDcgKzU5LDYgQEAgc3RhdGljIGludDY0X3QgQVZJT1NlZWtPcGVyYXRpb24odm9pZCogbwor IH0KKyAKKyB2b2lkIEZGbXBlZ0dsdWU6OkluaXRpYWxpemVGRm1wZWcoKSB7CistICBhdl9yZWdp c3Rlcl9hbGwoKTsKKyB9CisgCisgc3RhdGljIHZvaWQgTG9nQ29udGFpbmVyKGJvb2wgaXNfbG9j YWxfZmlsZSwKK0BAIC05NSw5ICs5NCw2IEBAIEZGbXBlZ0dsdWU6OkZGbXBlZ0dsdWUoRkZtcGVn VVJMUHJvdG9jb2wKKyAgIC8vIEVuYWJsZSBmYXN0LCBidXQgaW5hY2N1cmF0ZSBzZWVrcyBmb3Ig TVAzLgorICAgZm9ybWF0X2NvbnRleHRfLT5mbGFncyB8PSBBVkZNVF9GTEFHX0ZBU1RfU0VFSzsK KyAKKy0gIC8vIEVuc3VyZXMgd2UgY2FuIHJlYWQgb3V0IHZhcmlvdXMgbWV0YWRhdGEgYml0cyBs aWtlIHZwOCBhbHBoYS4KKy0gIGZvcm1hdF9jb250ZXh0Xy0+ZmxhZ3MgfD0gQVZGTVRfRkxBR19L RUVQX1NJREVfREFUQTsKKy0KKyAgIC8vIEVuc3VyZXMgZm9ybWF0IHBhcnNpbmcgZXJyb3JzIHdp bGwgYmFpbCBvdXQuIEZyb20gYW4gYXVkaXQgb24gMTEvMjAxNywgYWxsCisgICAvLyBpbnN0YW5j ZXMgd2VyZSByZWFsIGZhaWx1cmVzLiBTb2x2ZXMgYnVncyBsaWtlIGh0dHA6Ly9jcmJ1Zy5jb20v NzEwNzkxLgorICAgZm9ybWF0X2NvbnRleHRfLT5lcnJvcl9yZWNvZ25pdGlvbiB8PSBBVl9FRl9F WFBMT0RFOworZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjIHF0d2ViZW5n aW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX3Zp ZGVvX2RlY29kZXIuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJz L2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0w NTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlk ZW9fZGVjb2Rlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3OSAtMDUwMAorQEAgLTM5 MSw3ICszOTEsNyBAQCBib29sIEZGbXBlZ1ZpZGVvRGVjb2Rlcjo6Q29uZmlndXJlRGVjb2RlCisg ICBpZiAoZGVjb2RlX25hbHVzXykKKyAgICAgY29kZWNfY29udGV4dF8tPmZsYWdzMiB8PSBBVl9D T0RFQ19GTEFHMl9DSFVOS1M7CisgCistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9k ZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNvZGVjKiBjb2Rl YyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisgICBp ZiAoIWNvZGVjIHx8IGF2Y29kZWNfb3BlbjIoY29kZWNfY29udGV4dF8uZ2V0KCksIGNvZGVjLCBO VUxMKSA8IDApIHsKKyAgICAgUmVsZWFzZUZGbXBlZ1Jlc291cmNlcygpOworICAgICByZXR1cm4g ZmFsc2U7CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjIHF0d2ViZW5naW5l LTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9j aGVja2VyLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9tZWRp YV9maWxlX2NoZWNrZXIuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysr KyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlhX2ZpbGVfY2hlY2tl ci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3OSAtMDUwMAorQEAgLTY4LDcgKzY4LDcg QEAgYm9vbCBNZWRpYUZpbGVDaGVja2VyOjpTdGFydChiYXNlOjpUaW1lRAorICAgICAgIGF1dG8g Y29udGV4dCA9IEFWU3RyZWFtVG9BVkNvZGVjQ29udGV4dChmb3JtYXRfY29udGV4dC0+c3RyZWFt c1tpXSk7CisgICAgICAgaWYgKCFjb250ZXh0KQorICAgICAgICAgY29udGludWU7CistICAgICAg QVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihjcC0+Y29kZWNfaWQpOworKyAg ICAgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY3AtPmNvZGVj X2lkKTsKKyAgICAgICBpZiAoY29kZWMgJiYgYXZjb2RlY19vcGVuMihjb250ZXh0LmdldCgpLCBj b2RlYywgbnVsbHB0cikgPj0gMCkgeworICAgICAgICAgYXV0byBsb29wID0gc3RkOjptYWtlX3Vu aXF1ZTxGRm1wZWdEZWNvZGluZ0xvb3A+KGNvbnRleHQuZ2V0KCkpOworICAgICAgICAgc3RyZWFt X2NvbnRleHRzW2ldID0ge3N0ZDo6bW92ZShjb250ZXh0KSwgc3RkOjptb3ZlKGxvb3ApfTsKK2Rp ZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRf ZGVjb2Rlcl9pbXBsLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0 X2RlY29kZXJfaW1wbC5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1w bC5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL3ZpZGVvX2NvZGluZy9jb2Rl Y3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxODE5Mjc3 OSAtMDUwMAorQEAgLTIwMyw3ICsyMDMsNyBAQCBpbnQzMl90IEgyNjREZWNvZGVySW1wbDo6SW5p dERlY29kZShjb25zCisgICAvLyBhIHBvaW50ZXIgfHRoaXN8LgorICAgYXZfY29udGV4dF8tPm9w YXF1ZSA9IHRoaXM7CisgCistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVy KGF2X2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29k ZWNfZmluZF9kZWNvZGVyKGF2X2NvbnRleHRfLT5jb2RlY19pZCk7CisgICBpZiAoIWNvZGVjKSB7 CisgICAgIC8vIFRoaXMgaXMgYW4gaW5kaWNhdGlvbiB0aGF0IEZGbXBlZyBoYXMgbm90IGJlZW4g aW5pdGlhbGl6ZWQgb3IgaXQgaGFzIG5vdAorICAgICAvLyBiZWVuIGNvbXBpbGVkL2luaXRpYWxp emVkIHdpdGggdGhlIGNvcnJlY3Qgc2V0IG9mIGNvZGVjcy4KZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQpp bmRleCA4NGRlNWIxMmVjZGRhLi5iODlmZTRjMWFkNTBhIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0 NS13ZWJlbmdpbmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRl CkBAIC0xLDkgKzEsOSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1LXdlYmVuZ2luZScKIHBr Z25hbWU9cXQ1LXdlYmVuZ2luZQotdmVyc2lvbj01LjE1LjExCi1yZXZpc2lvbj01Cit2ZXJzaW9u PTUuMTUuMTMKK3JldmlzaW9uPTEKIF92ZXJzaW9uPSIke3ZlcnNpb259LWx0cyIKLV9jaHJvbWl1 bV9jb21taXQ9YmUzNDllYWY2MmU3Nzk1NTc5MWQ3YmYyOWY4OTNmMWU4YTM3ZGFmNAorX2Nocm9t aXVtX2NvbW1pdD1lNDhkZjc4MDNjN2M5OGIwYjI0NzFjOTQwNTdkMzJlNDRhMzAxYWQ1CiBhcmNo cz0ieDg2XzY0KiBpNjg2KiBhcm12WzY3XSogcHBjNjQqIGFhcmNoNjQqIgogY3JlYXRlX3dya3Ny Yz15ZXMKIGJ1aWxkX3N0eWxlPXFtYWtlCkBAIC0zMiw4ICszMiw4IEBAIGxpY2Vuc2U9IkdQTC0z LjAtb3ItbGF0ZXIsIExHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vcXQuaW8v IgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vcXQvcXR3ZWJlbmdpbmUvYXJjaGl2ZS92 JHtfdmVyc2lvbn0udGFyLmd6CiAgaHR0cHM6Ly9naXRodWIuY29tL3F0L3F0d2ViZW5naW5lLWNo cm9taXVtL2FyY2hpdmUvJHtfY2hyb21pdW1fY29tbWl0fS50YXIuZ3oiCi1jaGVja3N1bT0iYWE3 NDY2MzU2YzQ1MGM1ZjU4NzBmOTc5YjkzY2Q3ZTdlNjJkYTExNjVjMzI4ZmZjYWIxYTk5MjhkYjE4 YWQ2NwotIDZmNDdlZDhhYjhjYzA2MjQxMWY2ZjIwNmRhNjM1M2JjODI2M2Q2ZWQ2ZDYyOTBjNjg5 YTA1YzAxZDkxZjY0NmIiCitjaGVja3N1bT0iNGI1OTgzOGVkNzVlZjc4OGI1OWUxZTQxMjUzNWEw ZTQyZGQ5ZDMxMTY2MWZkZWFkYjE5MWI1ODFiYTgxNWM2MworIGE5MTY4NjU2MmIxZDRlOGIyMjBl MGJiY2JhYjVmZWI2NDYzMGUyZGU5NzRiMzVhYzAzNGJmMzg4YWY3NzFhNmMiCiAKIG5vX2dlbmVy aWNfcGtnY29uZmlnX2xpbms9eWVzCiBidWlsZF9vcHRpb25zPSJzbmRpbyBwaXBld2lyZSIKCkZy b20gOTU2ZTY0YTgwNjUyZmIzZjgyZDk0YmUwMjE3ZmEyZDA2NWNjYTU5NSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYyLzExNV0gcXQ1OiB1 cGRhdGUgdG8gNS4xNS44CgotLS0KIC4uLmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1r ZjUtMS5wYXRjaCB8IDEyOTEzICsrKysrKysrKysrKysrKysKIHNyY3BrZ3MvcXQ1L3RlbXBsYXRl ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEzICstCiAyIGZpbGVzIGNoYW5nZWQsIDEy OTE5IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9xdDUvcGF0Y2hlcy9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUt MS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1v cGVuc291cmNlLXNyYy01LjE1Ljgta2Y1LTEucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzL3F0 LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjk2NmM5OGJjZDNiYjEKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMt NS4xNS44LWtmNS0xLnBhdGNoCkBAIC0wLDAgKzEsMTI5MTMgQEAKK1N1Ym1pdHRlZCBCeTogICAg ICAgICAgICBQaWVycmUgTGFiYXN0aWUgPHBpZXJyZV9kb3RfbGFiYXN0aWVfYXRfbmV1Zl9kb3Rf ZnI+CitEYXRlOiAgICAgICAgICAgICAgICAgICAgMjAyMy0wMS0wNQorSW5pdGlhbCBQYWNrYWdl IFZlcnNpb246IDUuMTUuOAorVXBzdHJlYW0gU3RhdHVzOiAgICAgICAgIEFwcGxpZWQgKGFjY29y ZGluZyB0byBLREUpCitPcmlnaW46ICAgICAgICAgICAgICAgICAgS0RFIHBhdGNoIHNldAorRGVz Y3JpcHRpb246ICAgICAgICAgICAgIFBhdGNoIHNldCBtYWludGFpbmVkIGJ5IHRoZSBLREUgZm9s a3MKK3NlZSBodHRwczovL2RvdC5rZGUub3JnLzIwMjEvMDQvMDYvYW5ub3VuY2luZy1rZGVzLXF0 LTUtcGF0Y2gtY29sbGVjdGlvbgorUGF0Y2ggZ2VuZXJhdGVkIHVzaW5nIHRoZSBwcm9jZWR1cmUg aW4KK2h0dHBzOi8vd2lraS5saW51eGZyb21zY3JhdGNoLm9yZy9ibGZzL3RpY2tldC8xNzQ3NiNj b21tZW50OjMKKworU3VibW9kdWxlIHF0YmFzZSA0ZWU0ZmMxOC4uOWNmNTg2ZDY6CitkaWZmIC0t Z2l0IGEvcXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oIGIvcXRi YXNlL21rc3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oCitpbmRleCBmNzViYzQw OTNiLi4yYmQ1OTQxMGQ0IDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJv aWQvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9jb21tb24vYW5kcm9pZC9x cGxhdGZvcm1kZWZzLmgKK0BAIC0xNDQsMTEgKzE0NCw3IEBACisgI2RlZmluZSBRVF9TSUdOQUxf QVJHUyAgICAgICAgICBpbnQKKyAjZGVmaW5lIFFUX1NJR05BTF9JR05PUkUgICAgICAgIFNJR19J R04KKyAKKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0gMikKKyAjZGVm aW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNlCistI2RlZmluZSBR VF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChfWE9Q RU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5U RiAgICAgICAgICAgICA6OnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvZmVh dHVyZXMvbWFjL3Nkay5tayBiL3F0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9zZGsubWsKK2lu ZGV4IGYzMGI1ODMwYjQuLmEzMmNlYWNiNmMgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9m ZWF0dXJlcy9tYWMvc2RrLm1rCisrKysgYi9xdGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9tYWMvc2Rr Lm1rCitAQCAtMSw2ICsxLDYgQEAKKyAKKyBpZmVxICgkKFFUX01BQ19TREtfTk9fVkVSU0lPTl9D SEVDSyksKQorLSAgICBDSEVDS19TREtfQ09NTUFORCA9IC91c3IvYmluL3hjcnVuIC0tc2RrICQo RVhQT1JUX1FNQUtFX01BQ19TREspIC1zaG93LXNkay12ZXJzaW9uIDI+JjEKKysgICAgQ0hFQ0tf U0RLX0NPTU1BTkQgPSAvdXNyL2Jpbi94Y3J1biAtLXNkayAkKEVYUE9SVF9RTUFLRV9NQUNfU0RL KSAtc2hvdy1zZGstdmVyc2lvbiAyPi9kZXYvbnVsbAorICAgICBDVVJSRU5UX01BQ19TREtfVkVS U0lPTiA6PSAkKHNoZWxsIERFVkVMT1BFUl9ESVI9JChFWFBPUlRfUU1BS0VfWENPREVfREVWRUxP UEVSX1BBVEgpICQoQ0hFQ0tfU0RLX0NPTU1BTkQpKQorICAgICBpZm5lcSAoJChDVVJSRU5UX01B Q19TREtfVkVSU0lPTiksJChFWFBPUlRfUU1BS0VfTUFDX1NES19WRVJTSU9OKSkKKyAgICAgICAg ICMgV2UgZG9uJ3Qgd2FudCB0byBjb21wbGFpbiBhYm91dCBvdXQgb2YgZGF0ZSBTREsgdW5sZXNz IHRoZSB0YXJnZXQgbmVlZHMgdG8gYmUgcmVtYWRlLgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3Nw ZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNs YW5nL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggYTgxOGQ5NzNmMC4uYzFhYjcyZmJjNiAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIv cXRiYXNlL21rc3BlY3MvbGludXgtY2xhbmcvcXBsYXRmb3JtZGVmcy5oCitAQCAtNzksMTQgKzc5 LDYgQEAKKyAjZGVmaW5lIFFUX1VTRV9YT1BFTl9MRlNfRVhURU5TSU9OUworICNpbmNsdWRlICIu Li9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgorIAorLSN1bmRlZiBRVF9TT0NLTEVOX1QK Ky0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0gMikKKy0jZGVmaW5l IFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNlCistI2RlZmluZSBRVF9T T0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYKKy0KKyAjaWYgZGVmaW5lZChfWE9QRU5f U09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAg ICAgICAgICAgICA6OnNucHJpbnRmCisgI2RlZmluZSBRVF9WU05QUklOVEYgICAgICAgICAgICA6 OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZv cm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51eC1nKysvcXBsYXRmb3JtZGVmcy5oCitpbmRl eCAxMzUyM2YwNzAyLi40ZDI3NTBkOWVjIDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvbGlu dXgtZysrL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtZysrL3Fw bGF0Zm9ybWRlZnMuaAorQEAgLTc5LDE0ICs3OSw2IEBACisgI2RlZmluZSBRVF9VU0VfWE9QRU5f TEZTX0VYVEVOU0lPTlMKKyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bvc2l4L3FwbGF0Zm9ybWRlZnMu aCIKKyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCistCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAm JiAoX19HTElCQ19fIDwgMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAor LSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZW5k aWYKKy0KKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1 MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCisgI2RlZmlu ZSBRVF9WU05QUklOVEYgICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFz ZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbGlu dXgtbGx2bS9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IGRjNzUwYWIxZWYuLmQzY2MzOWI0N2YgMTAw NjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sbHZtL3FwbGF0Zm9ybWRlZnMuaAorKysr IGIvcXRiYXNlL21rc3BlY3MvbGludXgtbGx2bS9xcGxhdGZvcm1kZWZzLmgKK0BAIC04MCwxNCAr ODAsNiBAQAorICNkZWZpbmUgUVRfVVNFX1hPUEVOX0xGU19FWFRFTlNJT05TCisgI2luY2x1ZGUg Ii4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tMRU5f VAorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorLSNkZWZp bmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFU X1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgorLQorICNpZiBkZWZpbmVkKF9YT1BF Tl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRG ICAgICAgICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFUX1ZTTlBSSU5URiAgICAgICAgICAg IDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbGludXgtbHNiLWcrKy9x cGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3FwbGF0Zm9ybWRl ZnMuaAoraW5kZXggNGM0ZTUzZGEyYS4uODNiYWZmYjNlMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9t a3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVj cy9saW51eC1sc2ItZysrL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTg1LDE2ICs4NSw5IEBACisgI2lu Y2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCisgI3VuZGVmIFFUX09Q RU5fTEFSR0VGSUxFCistI3VuZGVmIFFUX1NPQ0tMRU5fVAorIAorICNkZWZpbmUgUVRfT1BFTl9M QVJHRUZJTEUgICAgICAgMAorIAorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNf XyA+PSAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vs c2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIGludAorLSNlbmRpZgorLQorICNp Zm5kZWYgU0lPQ0dJRkJSREFERFIKKyAjICBkZWZpbmUgU0lPQ0dJRkJSREFERFIgMHg4OTE5Cisg I2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbHlueG9zLWcrKy9xcGxhdGZvcm1k ZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysrL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXgg NDMzOWVhMmIyMy4uNjAwN2FmMDA1NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2x5bnhv cy1nKysvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysrL3Fw bGF0Zm9ybWRlZnMuaAorQEAgLTcyLDE0ICs3Miw2IEBACisgCisgI2luY2x1ZGUgIi4uL2NvbW1v bi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tMRU5fVAorLQorLSNp ZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorLSNkZWZpbmUgUVRfU09D S0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5f VCAgICAgICAgICAgIGludAorLSNlbmRpZgorLQorICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0Up ICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRGICAgICAgICAg ICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFUX1ZTTlBSSU5URiAgICAgICAgICAgIDo6dnNucHJp bnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy8zcmRwYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUv SGFuZGxlQWxsb2NhdG9yLmNwcCBiL3F0YmFzZS9zcmMvM3JkcGFydHkvYW5nbGUvc3JjL2xpYkFO R0xFL0hhbmRsZUFsbG9jYXRvci5jcHAKK2luZGV4IGMzYzE4NDI1OGYuLjMyYWYzZjhmMjkgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9IYW5kbGVB bGxvY2F0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjLzNyZHBhcnR5L2FuZ2xlL3NyYy9saWJBTkdM RS9IYW5kbGVBbGxvY2F0b3IuY3BwCitAQCAtMTAsNiArMTAsNyBAQAorICNpbmNsdWRlICJsaWJB TkdMRS9IYW5kbGVBbGxvY2F0b3IuaCIKKyAKKyAjaW5jbHVkZSA8YWxnb3JpdGhtPgorKyNpbmNs dWRlIDxsaW1pdHM+CisgCisgI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorIAorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9ya2ZkL2ZvcmtmZF9saW51eC5jIGIvcXRiYXNlL3Ny Yy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMKK2luZGV4IGZmZTBlOWE1ZTIuLmIxZjU0 MDhkMTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2ZvcmtmZC9mb3JrZmRfbGlu dXguYworKysrIGIvcXRiYXNlL3NyYy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMKK0BA IC04Miw3ICs4Miw4IEBAIHN0YXRpYyBpbnQgc3lzX2Nsb25lKHVuc2lnbmVkIGxvbmcgY2xvbmVm bGFncywgaW50ICpwdGlkKQorICAgICByZXR1cm4gc3lzY2FsbChfX05SX2Nsb25lLCBjbG9uZWZs YWdzLCBjaGlsZF9zdGFjaywgc3RhY2tfc2l6ZSwgcHRpZCwgbmV3dGxzLCBjdGlkKTsKKyAjZWxp ZiBkZWZpbmVkKF9fYXJjX18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FhcmNo NjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorICAgICBkZWZpbmVkKF9fbmRzMzJfXykg fHwgZGVmaW5lZChfX2hwcGFfXykgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChf X2kzODZfXykgfHwgXAorLSAgICBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX194dGVu c2FfXykgfHwgZGVmaW5lZChfX2FscGhhX18pIHx8IGRlZmluZWQoX19yaXNjdikKKysgICAgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9feHRlbnNhX18pIHx8IGRlZmluZWQoX19hbHBo YV9fKSB8fCBkZWZpbmVkKF9fcmlzY3YpIHx8IFwKKysgICAgZGVmaW5lZChfX2xvb25nYXJjaF9f KQorICAgICAvKiBjdGlkIGFuZCBuZXd0bHMgYXJlIGludmVydGVkIG9uIENPTkZJR19DTE9ORV9C QUNLV0FSRFMgYXJjaGl0ZWN0dXJlcywKKyAgICAgICogYnV0IHNpbmNlIGJvdGggdmFsdWVzIGFy ZSAwLCB0aGVyZSdzIG5vIGhhcm0uICovCisgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfY2xvbmUs IGNsb25lZmxhZ3MsIGNoaWxkX3N0YWNrLCBwdGlkLCBjdGlkLCBuZXd0bHMpOworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9xdHByb2plY3QvcXQ1L2FuZHJvaWQv UXROYXRpdmUuamF2YSBiL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9xdHByb2plY3Qv cXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YQoraW5kZXggNTc5MmI1YjJmNS4uMmY3NDc1MGZjZiAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9xdHByb2plY3QvcXQ1 L2FuZHJvaWQvUXROYXRpdmUuamF2YQorKysrIGIvcXRiYXNlL3NyYy9hbmRyb2lkL2phci9zcmMv b3JnL3F0cHJvamVjdC9xdDUvYW5kcm9pZC9RdE5hdGl2ZS5qYXZhCitAQCAtMTE2LDYgKzExNiw3 IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICBwdWJsaWMgc3RhdGljIFF0VGhyZWFkIG1f cXRUaHJlYWQgPSBuZXcgUXRUaHJlYWQoKTsKKyAgICAgcHJpdmF0ZSBzdGF0aWMgSGFzaE1hcDxT dHJpbmcsIFVyaT4gbV9jYWNoZWRVcmlzID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBVcmk+KCk7Cisg ICAgIHByaXZhdGUgc3RhdGljIEFycmF5TGlzdDxTdHJpbmc+IG1fa25vd25EaXJzID0gbmV3IEFy cmF5TGlzdDxTdHJpbmc+KCk7CisrICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBOb1Bl cm1pc3Npb25FcnJvck1lc3NhZ2UgPSAiTm8gcGVybWlzc2lvbnMgdG8gb3BlbiBVcmkiOworIAor ICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBSdW5uYWJsZSBydW5QZW5kaW5nQ3BwUnVubmFibGVz UnVubmFibGUgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgICBAT3ZlcnJpZGUKK0BAIC0xOTMs MTEgKzE5NCwxMCBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgICAgICAgICAgICAg IHJldHVybiBpdGVyVXJpOworICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICAvLyBBbmRy b2lkIDYgYW5kIGVhcmxpZXIgY291bGQgc3RpbGwgbWFuYWdlIHRvIG9wZW4gdGhlIGZpbGUgc28g d2UgY2FuIHJldHVybiB0aGUKKy0gICAgICAgICAgICAvLyBwYXJzZWQgdXJpIGhlcmUKKy0gICAg ICAgICAgICBpZiAoQnVpbGQuVkVSU0lPTi5TREtfSU5UIDwgMjQpCistICAgICAgICAgICAgICAg IHJldHVybiBwYXJzZWRVcmk7CistICAgICAgICAgICAgcmV0dXJuIG51bGw7CisrICAgICAgICAg ICAgLy8gaWYgd2Ugb25seSBoYXZlIHRyYW5zaWVudCBwZXJtaXNzaW9ucyBvbiB1cmkgYWxsIHRo ZSBhYm92ZSB3aWxsIGZhaWwsCisrICAgICAgICAgICAgLy8gYnV0IHdlIHdpbGwgYmUgYWJsZSB0 byByZWFkIHRoZSBmaWxlIGFueXdheSwgc28gY29udGludWUgd2l0aCB1cmkgaGVyZSBhbnl3YXkK KysgICAgICAgICAgICAvLyBhbmQgY2hlY2sgZm9yIFNlY3VyaXR5RXhjZXB0aW9ucyBsYXRlcgor KyAgICAgICAgICAgIHJldHVybiBwYXJzZWRVcmk7CisgICAgICAgICB9IGNhdGNoIChTZWN1cml0 eUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAg ICAgICAgICByZXR1cm4gbnVsbDsKK0BAIC0yNDQsNyArMjQ0LDcgQEAgcHVibGljIGNsYXNzIFF0 TmF0aXZlCisgICAgICAgICBpbnQgZXJyb3IgPSAtMTsKKyAKKyAgICAgICAgIGlmICh1cmkgPT0g bnVsbCkgeworLSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAib3BlbkZkRm9yQ29udGVudFVybCgp OiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSIpOworKyAgICAgICAgICAgIExvZy5lKFF0VEFH LCAib3BlbkZkRm9yQ29udGVudFVybCgpOiAiICsgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsK KyAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICB9CisgCitAQCAtMjU0LDEyICsy NTQsMTMgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICAgICAgcmV0dXJuIGZkRGVz Yy5kZXRhY2hGZCgpOworICAgICAgICAgfSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGUp IHsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVy biBlcnJvcjsKKyAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7 CisgICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJvcGVuRmRGb3JDb250ZW50VXJsKCk6IEludmFs aWQgVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAg ICByZXR1cm4gZXJyb3I7CisrICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7 CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7Cisg ICAgICAgICB9CisrICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgIH0KKyAKKyAgICAgcHVibGlj IHN0YXRpYyBsb25nIGdldFNpemUoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVybCkK K0BAIC0yNzAsNyArMjcxLDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICAgICAg dXJpID0gZ2V0VXJpV2l0aFZhbGlkUGVybWlzc2lvbihjb250ZXh0LCBjb250ZW50VXJsLCAiciIp OworIAorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKSB7CistICAgICAgICAgICAgTG9nLmUoUXRU QUcsICJnZXRTaXplKCk6IE5vIHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIik7CisrICAgICAgICAg ICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAg cmV0dXJuIHNpemU7CisgICAgICAgICB9IGVsc2UgaWYgKCFtX2NhY2hlZFVyaXMuY29udGFpbnNL ZXkoY29udGVudFVybCkpIHsKKyAgICAgICAgICAgICBtX2NhY2hlZFVyaXMucHV0KGNvbnRlbnRV cmwsIHVyaSk7CitAQCAtMjg4LDEyICsyODksMTMgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisg ICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAg ICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgpOiBJbnZhbGlkIFVyaSIpOworICAgICAgICAgICAg IGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIHNpemU7CisgICAgICAg ICB9ICBjYXRjaCAoVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24gZSkgeworICAgICAgICAg ICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgpOiBVbnN1cHBvcnRlZCBvcGVyYXRpb24gZm9yIGdp dmVuIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAg ICAgcmV0dXJuIHNpemU7CisrICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7 CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7Cisg ICAgICAgICB9CisrICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgfQorIAorICAgICBwdWJsaWMg c3RhdGljIGJvb2xlYW4gY2hlY2tGaWxlRXhpc3RzKENvbnRleHQgY29udGV4dCwgU3RyaW5nIGNv bnRlbnRVcmwpCitAQCAtMzAzLDcgKzMwNSw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAg ICAgICAgaWYgKHVyaSA9PSBudWxsKQorICAgICAgICAgICAgIHVyaSA9IGdldFVyaVdpdGhWYWxp ZFBlcm1pc3Npb24oY29udGV4dCwgY29udGVudFVybCwgInIiKTsKKyAgICAgICAgIGlmICh1cmkg PT0gbnVsbCkgeworLSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tGaWxlRXhpc3RzKCk6 IE5vIHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIik7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcs IE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgcmV0dXJuIGV4aXN0czsK KyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgaWYgKCFtX2NhY2hlZFVyaXMuY29udGFp bnNLZXkoY29udGVudFVybCkpCitAQCAtMzIxLDEyICszMjMsMTMgQEAgcHVibGljIGNsYXNzIFF0 TmF0aXZlCisgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgewor ICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tGaWxlRXhpc3RzKCk6IEludmFsaWQgVXJp Iik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1 cm4gZXhpc3RzOworICAgICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRp b24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tGaWxlRXhpc3RzKCk6IFVu c3VwcG9ydGVkIG9wZXJhdGlvbiBmb3IgZ2l2ZW4gVXJpIik7CisgICAgICAgICAgICAgZS5wcmlu dFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICB9IGNh dGNoIChTZWN1cml0eUV4Y2VwdGlvbiBlKSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5v UGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4gZXhp c3RzOworICAgICB9CisgCisgICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBjaGVja0lmV3JpdGFi bGUoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVybCkKK0BAIC0zNDQsNyArMzQ3LDcg QEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICAgICAgdXJpID0gZ2V0VXJpV2l0aFZh bGlkUGVybWlzc2lvbihjb250ZXh0LCBjb250ZW50VXJsLCAiciIpOworICAgICAgICAgfQorICAg ICAgICAgaWYgKHVyaSA9PSBudWxsKSB7CistICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJpc0Rp cigpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSIpOworKyAgICAgICAgICAgIExvZy5lKFF0 VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgIHJldHVybiBpc0Rp cjsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgaWYgKCFtX2NhY2hlZFVyaXMuY29u dGFpbnNLZXkoY29udGVudFVybCkpCitAQCAtMzc0LDEyICszNzcsMTMgQEAgcHVibGljIGNsYXNz IFF0TmF0aXZlCisgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkg eworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tJZkRpcigpOiBJbnZhbGlkIFVyaSIp OworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworICAgICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24g ZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiY2hlY2tJZkRpcigpOiBVbnN1cHBvcnRl ZCBvcGVyYXRpb24gZm9yIGdpdmVuIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1Ry YWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAgfSBjYXRjaCAoU2Vj dXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Np b25FcnJvck1lc3NhZ2UpOworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICB9CisgICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gbGlzdENvbnRlbnRzRnJvbVRyZWVVcmko Q29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVybCkKKyAgICAgeworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaCBiL3F0YmFz ZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaAoraW5kZXggOGY5YTkz ODk1Mi4uYTk4ZGVkZWYyZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNv bmN1cnJlbnRyZWR1Y2VrZXJuZWwuaAorKysrIGIvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29u Y3VycmVudHJlZHVjZWtlcm5lbC5oCitAQCAtMjEyLDExICsyMTIsMTMgQEAgcHVibGljOgorIAor ICAgICBpbmxpbmUgYm9vbCBzaG91bGRUaHJvdHRsZSgpCisgICAgIHsKKysgICAgICAgIHN0ZDo6 bG9ja19ndWFyZDxRTXV0ZXg+IGxvY2tlcihtdXRleCk7CisgICAgICAgICByZXR1cm4gKHJlc3Vs dHNNYXBTaXplID4gKFJlZHVjZVF1ZXVlVGhyb3R0bGVMaW1pdCAqIHRocmVhZENvdW50KSk7Cisg ICAgIH0KKyAKKyAgICAgaW5saW5lIGJvb2wgc2hvdWxkU3RhcnRUaHJlYWQoKQorICAgICB7Cisr ICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8UU11dGV4PiBsb2NrZXIobXV0ZXgpOworICAgICAgICAg cmV0dXJuIChyZXN1bHRzTWFwU2l6ZSA8PSAoUmVkdWNlUXVldWVTdGFydExpbWl0ICogdGhyZWFk Q291bnQpKTsKKyAgICAgfQorIH07CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb25jdXJyZW50 L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRj b25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAoraW5kZXggZWE2Y2UzYWM0Mi4uN2Y5MWEyYmE2OCAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdp bmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5n aW5lLmNwcAorQEAgLTE3Niw2ICsxNzYsMzkgQEAgdm9pZCBUaHJlYWRFbmdpbmVCYXNlOjpzdGFy dFNpbmdsZVRocmVhZGVkKCkKKyAgICAgZmluaXNoKCk7CisgfQorIAorK3ZvaWQgVGhyZWFkRW5n aW5lQmFzZTo6c3RhcnRCbG9ja2luZygpCisreworKyAgICBzdGFydCgpOworKyAgICBiYXJyaWVy LmFjcXVpcmUoKTsKKysgICAgc3RhcnRUaHJlYWRzKCk7CisrCisrICAgIGJvb2wgdGhyb3R0bGVk ID0gZmFsc2U7CisrI2lmbmRlZiBRVF9OT19FWENFUFRJT05TCisrICAgIHRyeSB7CisrI2VuZGlm CisrICAgICAgICB3aGlsZSAodGhyZWFkRnVuY3Rpb24oKSA9PSBUaHJvdHRsZVRocmVhZCkgewor KyAgICAgICAgICAgIGlmICh0aHJlYWRUaHJvdHRsZUV4aXQoKSkgeworKyAgICAgICAgICAgICAg ICB0aHJvdHRsZWQgPSB0cnVlOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAg ICB9CisrICAgICAgICB9CisrI2lmbmRlZiBRVF9OT19FWENFUFRJT05TCisrICAgIH0gY2F0Y2gg KFFFeGNlcHRpb24gJmUpIHsKKysgICAgICAgIGhhbmRsZUV4Y2VwdGlvbihlKTsKKysgICAgfSBj YXRjaCAoLi4uKSB7CisrICAgICAgICBoYW5kbGVFeGNlcHRpb24oUVVuaGFuZGxlZEV4Y2VwdGlv bigpKTsKKysgICAgfQorKyNlbmRpZgorKworKyAgICBpZiAodGhyb3R0bGVkID09IGZhbHNlKSB7 CisrICAgICAgICBiYXJyaWVyLnJlbGVhc2UoKTsKKysgICAgfQorKworKyAgICBiYXJyaWVyLndh aXQoKTsKKysgICAgZmluaXNoKCk7CisrICAgIGV4Y2VwdGlvblN0b3JlLnRocm93UG9zc2libGVF eGNlcHRpb24oKTsKKyt9CisrCisgdm9pZCBUaHJlYWRFbmdpbmVCYXNlOjpzdGFydFRocmVhZCgp CisgeworICAgICBzdGFydFRocmVhZEludGVybmFsKCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5oIGIvcXRiYXNlL3NyYy9jb25j dXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5oCitpbmRleCA3YzMwY2ViZGJjLi5hNGM4 NTQ4Y2M0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRo cmVhZGVuZ2luZS5oCisrKysgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhy ZWFkZW5naW5lLmgKK0BAIC05MSw2ICs5MSw3IEBAIHB1YmxpYzoKKyAgICAgVGhyZWFkRW5naW5l QmFzZSgpOworICAgICB2aXJ0dWFsIH5UaHJlYWRFbmdpbmVCYXNlKCk7CisgICAgIHZvaWQgc3Rh cnRTaW5nbGVUaHJlYWRlZCgpOworKyAgICB2b2lkIHN0YXJ0QmxvY2tpbmcoKTsKKyAgICAgdm9p ZCBzdGFydFRocmVhZCgpOworICAgICBib29sIGlzQ2FuY2VsZWQoKTsKKyAgICAgdm9pZCB3YWl0 Rm9yUmVzdW1lKCk7CitAQCAtMTQzLDYgKzE0NCwxNSBAQCBwdWJsaWM6CisgICAgICAgICByZXR1 cm4gcmVzdWx0KCk7CisgICAgIH0KKyAKKysgICAgLy8gUnVucyB0aGUgdXNlciBhbGdvcml0aG0g dXNpbmcgbXVsdGlwbGUgdGhyZWFkcy4KKysgICAgLy8gVGhpcyBmdW5jdGlvbiBibG9ja3MgdW50 aWwgdGhlIGFsZ29yaXRobSBpcyBmaW5pc2hlZCwKKysgICAgLy8gYW5kIHRoZW4gcmV0dXJucyB0 aGUgcmVzdWx0LgorKyAgICBUICpzdGFydEJsb2NraW5nKCkKKysgICAgeworKyAgICAgICAgVGhy ZWFkRW5naW5lQmFzZTo6c3RhcnRCbG9ja2luZygpOworKyAgICAgICAgcmV0dXJuIHJlc3VsdCgp OworKyAgICB9CisrCisgICAgIC8vIFJ1bnMgdGhlIHVzZXIgYWxnb3JpdGhtIHVzaW5nIG11bHRp cGxlIHRocmVhZHMuCisgICAgIC8vIERvZXMgbm90IGJsb2NrLCByZXR1cm5zIGEgZnV0dXJlLgor ICAgICBRRnV0dXJlPFQ+IHN0YXJ0QXN5bmNocm9ub3VzbHkoKQorQEAgLTIyMyw2ICsyMzMsMTMg QEAgY2xhc3MgVGhyZWFkRW5naW5lU3RhcnRlciA6IHB1YmxpYyBUaHJlYWRFbmdpbmVTdGFydGVy QmFzZTxUPgorIHB1YmxpYzoKKyAgICAgVGhyZWFkRW5naW5lU3RhcnRlcihUeXBlZFRocmVhZEVu Z2luZSAqZW5nKQorICAgICAgICAgOiBCYXNlKGVuZykgeyB9CisrCisrICAgIFQgc3RhcnRCbG9j a2luZygpCisrICAgIHsKKysgICAgICAgIFQgdCA9ICp0aGlzLT50aHJlYWRFbmdpbmUtPnN0YXJ0 QmxvY2tpbmcoKTsKKysgICAgICAgIGRlbGV0ZSB0aGlzLT50aHJlYWRFbmdpbmU7CisrICAgICAg ICByZXR1cm4gdDsKKysgICAgfQorIH07CisgCisgLy8gRnVsbCB0ZW1wbGF0ZSBzcGVjaWFsaXph dGlvbiB3aGVyZSBUIGlzIHZvaWQuCitAQCAtMjMyLDYgKzI0OSwxMiBAQCBjbGFzcyBUaHJlYWRF bmdpbmVTdGFydGVyPHZvaWQ+IDogcHVibGljIFRocmVhZEVuZ2luZVN0YXJ0ZXJCYXNlPHZvaWQ+ CisgcHVibGljOgorICAgICBUaHJlYWRFbmdpbmVTdGFydGVyKFRocmVhZEVuZ2luZTx2b2lkPiAq X3RocmVhZEVuZ2luZSkKKyAgICAgICAgIDogVGhyZWFkRW5naW5lU3RhcnRlckJhc2U8dm9pZD4o X3RocmVhZEVuZ2luZSkge30KKysKKysgICAgdm9pZCBzdGFydEJsb2NraW5nKCkKKysgICAgewor KyAgICAgICAgdGhpcy0+dGhyZWFkRW5naW5lLT5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBk ZWxldGUgdGhpcy0+dGhyZWFkRW5naW5lOworKyAgICB9CisgfTsKKyAKKyAvLyEgW3F0Y29uY3Vy cmVudHRocmVhZGVuZ2luZS0xXQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9hbmlt YXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2FuaW1hdGlv bi9xdmFyaWFudGFuaW1hdGlvbi5jcHAKK2luZGV4IDk4YjAyZjAyMDIuLmVhYzE1MjQxMDcgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2YXJpYW50YW5pbWF0aW9u LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2FuaW1hdGlvbi9xdmFyaWFudGFuaW1hdGlv bi5jcHAKK0BAIC0yNzYsNyArMjc2LDkgQEAgdm9pZCBRVmFyaWFudEFuaW1hdGlvblByaXZhdGU6 OnNldEN1cnJlbnRWYWx1ZUZvclByb2dyZXNzKGNvbnN0IHFyZWFsIHByb2dyZXNzKQorIAorICAg ICBjb25zdCBxcmVhbCBzdGFydFByb2dyZXNzID0gY3VycmVudEludGVydmFsLnN0YXJ0LmZpcnN0 OworICAgICBjb25zdCBxcmVhbCBlbmRQcm9ncmVzcyA9IGN1cnJlbnRJbnRlcnZhbC5lbmQuZmly c3Q7CistICAgIGNvbnN0IHFyZWFsIGxvY2FsUHJvZ3Jlc3MgPSAocHJvZ3Jlc3MgLSBzdGFydFBy b2dyZXNzKSAvIChlbmRQcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpOworKyAgICBjb25zdCBxcmVh bCBsb2NhbFByb2dyZXNzID0KKysgICAgICAgICAgICBxSXNOdWxsKHByb2dyZXNzIC0gc3RhcnRQ cm9ncmVzcykgPyAwLjAgLy8gYXZvaWQgMC8wIGJlbG93CisrICAgICAgICAgICAgLyogZWxzZSAq LyAgICAgICAgICAgICAgICAgICAgICAgIDogKHByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcykgLyAo ZW5kUHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNzKTsKKyAKKyAgICAgUVZhcmlhbnQgcmV0ID0gcS0+ aW50ZXJwb2xhdGVkKGN1cnJlbnRJbnRlcnZhbC5zdGFydC5zZWNvbmQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50SW50ZXJ2YWwuZW5kLnNlY29uZCwKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FuYW1lc3BhY2UuaCBiL3F0YmFzZS9z cmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5oCitpbmRleCBhZDQxNTBiMzE3Li5iZjE5YjE2 MjdiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xbmFtZXNwYWNlLmgK KysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5oCitAQCAtMTg2NCw3 ICsxODY0LDcgQEAgcHVibGljOgorICAgICBRVF9RX0VOVU0oVGltZXJUeXBlKQorICAgICBRVF9R X0VOVU0oU2Nyb2xsUGhhc2UpCisgICAgIFFUX1FfRU5VTShNb3VzZUV2ZW50U291cmNlKQorLSAg ICBRVF9RX0ZMQUcoTW91c2VFdmVudEZsYWcpCisrICAgIFFUX1FfRkxBRyhNb3VzZUV2ZW50Rmxh Z3MpCisgICAgIFFUX1FfRU5VTShDaGVja3N1bVR5cGUpCisgICAgIFFUX1FfRU5VTShIaWdoRHBp U2NhbGVGYWN0b3JSb3VuZGluZ1BvbGljeSkKKyAgICAgUVRfUV9FTlVNKFRhYkZvY3VzQmVoYXZp b3IpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcCBi L3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAKK2luZGV4IDEwNjcyYzFmOTIu LjI1Zjg3YzdlNmEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FyYW5k b20uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FyYW5kb20uY3BwCitAQCAt MzgzLDcgKzM4Myw2IEBAIHN0cnVjdCBRUmFuZG9tR2VuZXJhdG9yOjpTeXN0ZW1BbmRHbG9iYWxH ZW5lcmF0b3JzCisgCisgICAgICAgICBjb25zdGV4cHIgU3lzdGVtQW5kR2xvYmFsR2VuZXJhdG9y cyBnID0ge307CisgICAgICAgICBRX1VOVVNFRChnKTsKKy0gICAgICAgIFFfU1RBVElDX0FTU0VS VChzdGQ6OmlzX2xpdGVyYWxfdHlwZTxTeXN0ZW1BbmRHbG9iYWxHZW5lcmF0b3JzPjo6dmFsdWUp OworICNlbmRpZgorICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lv L3FidWZmZXIuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FidWZmZXIuY3BwCitpbmRleCA1 OTVmY2QyNzI0Li4wMzJjMGRkZDRiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2lv L3FidWZmZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWJ1ZmZlci5jcHAKK0BA IC00MSw2ICs0MSw4IEBACisgI2luY2x1ZGUgPFF0Q29yZS9xbWV0YW9iamVjdC5oPgorICNpbmNs dWRlICJwcml2YXRlL3Fpb2RldmljZV9wLmgiCisgCisrI2luY2x1ZGUgPGxpbWl0cz4KKysKKyBR VF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyAvKiogUUJ1ZmZlclByaXZhdGUgKiovCitAQCAtMzY2LDcg KzM2OCw5IEBAIHFpbnQ2NCBRQnVmZmVyOjpzaXplKCkgY29uc3QKKyBib29sIFFCdWZmZXI6OnNl ZWsocWludDY0IHBvcykKKyB7CisgICAgIFFfRChRQnVmZmVyKTsKKy0gICAgaWYgKHBvcyA+IGQt PmJ1Zi0+c2l6ZSgpICYmIGlzV3JpdGFibGUoKSkgeworKyAgICBjb25zdCBhdXRvIG9sZEJ1ZlNp emUgPSBkLT5idWYtPnNpemUoKTsKKysgICAgY29uc3RleHByIHFpbnQ2NCBNYXhTZWVrUG9zID0g KHN0ZDo6bnVtZXJpY19saW1pdHM8ZGVjbHR5cGUob2xkQnVmU2l6ZSk+OjptYXgpKCk7CisrICAg IGlmIChwb3MgPD0gTWF4U2Vla1BvcyAmJiBwb3MgPiBvbGRCdWZTaXplICYmIGlzV3JpdGFibGUo KSkgeworICAgICAgICAgaWYgKHNlZWsoZC0+YnVmLT5zaXplKCkpKSB7CisgICAgICAgICAgICAg Y29uc3QgcWludDY0IGdhcFNpemUgPSBwb3MgLSBkLT5idWYtPnNpemUoKTsKKyAgICAgICAgICAg ICBpZiAod3JpdGUoUUJ5dGVBcnJheShnYXBTaXplLCAwKSkgIT0gZ2FwU2l6ZSkgeworQEAgLTM3 Nyw3ICszODEsNyBAQCBib29sIFFCdWZmZXI6OnNlZWsocWludDY0IHBvcykKKyAgICAgICAgICAg ICByZXR1cm4gZmFsc2U7CisgICAgICAgICB9CisgICAgIH0gZWxzZSBpZiAocG9zID4gZC0+YnVm LT5zaXplKCkgfHwgcG9zIDwgMCkgeworLSAgICAgICAgcVdhcm5pbmcoIlFCdWZmZXI6OnNlZWs6 IEludmFsaWQgcG9zOiAlZCIsIGludChwb3MpKTsKKysgICAgICAgIHFXYXJuaW5nKCJRQnVmZmVy OjpzZWVrOiBJbnZhbGlkIHBvczogJWxsZCIsIHBvcyk7CisgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgIH0KKyAgICAgcmV0dXJuIFFJT0RldmljZTo6c2Vlayhwb3MpOworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVuZ2luZV93aW4uY3BwIGIvcXRiYXNl L3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAKK2luZGV4IDgxZDNhNzE5 ODYuLmM4NmVkMWY5YjAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVz eXN0ZW1lbmdpbmVfd2luLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lz dGVtZW5naW5lX3dpbi5jcHAKK0BAIC02NjQsMTQgKzY2NCwxNCBAQCBRRmlsZVN5c3RlbUVudHJ5 IFFGaWxlU3lzdGVtRW5naW5lOjphYnNvbHV0ZU5hbWUoY29uc3QgUUZpbGVTeXN0ZW1FbnRyeSAm ZW50cnkpCisgICAgIHJldHVybiBRRmlsZVN5c3RlbUVudHJ5KHJldCwgUUZpbGVTeXN0ZW1FbnRy eTo6RnJvbUludGVybmFsUGF0aCgpKTsKKyB9CisgCistI2lmIGRlZmluZWQoUV9DQ19NSU5HVykg JiYgV0lOVkVSIDwgMHgwNjAyIC8vICBXaW5kb3dzIDggb253YXJkcworKyNpZiBkZWZpbmVkKFFf Q0NfTUlOR1cpICYmIFdJTlZFUiA8IDB4MDYwMiAmJiBfV0lOMzJfV0lOTlQgPCBfV0lOMzJfV0lO TlRfV0lOOCAvLyAgV2luZG93cyA4IG9ud2FyZHMKKyAKKyB0eXBlZGVmIHN0cnVjdCBfRklMRV9J RF9JTkZPIHsKKyAgICAgVUxPTkdMT05HIFZvbHVtZVNlcmlhbE51bWJlcjsKKyAgICAgRklMRV9J RF8xMjggRmlsZUlkOworIH0gRklMRV9JRF9JTkZPLCAqUEZJTEVfSURfSU5GTzsKKyAKKy0jZW5k aWYgLy8gaWYgZGVmaW5lZCAoUV9DQ19NSU5HVykgJiYgV0lOVkVSIDwgMHgwNjAyCisrI2VuZGlm IC8vIGlmIGRlZmluZWQoUV9DQ19NSU5HVykgJiYgV0lOVkVSIDwgMHgwNjAyICYmIF9XSU4zMl9X SU5OVCA8IF9XSU4zMl9XSU5OVF9XSU44CisgCisgLy8gRmlsZSBJRCBmb3IgV2luZG93cyB1cCB0 byB2ZXJzaW9uIDcgYW5kIEZBVDMyIGRyaXZlcworIHN0YXRpYyBpbmxpbmUgUUJ5dGVBcnJheSBm aWxlSWQoSEFORExFIGhhbmRsZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8v cWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnkuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fm aWxlc3lzdGVtd2F0Y2hlcl9pbm90aWZ5LmNwcAoraW5kZXggOTRkOWQwNmJjYi4uMjdlMGIxM2Iw YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbXdhdGNoZXJf aW5vdGlmeS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbXdhdGNo ZXJfaW5vdGlmeS5jcHAKK0BAIC0zNjYsNyArMzY2LDkgQEAgdm9pZCBRSW5vdGlmeUZpbGVTeXN0 ZW1XYXRjaGVyRW5naW5lOjpyZWFkRnJvbUlub3RpZnkoKQorICAgICAvLyBxRGVidWcoIlFJbm90 aWZ5RmlsZVN5c3RlbVdhdGNoZXJFbmdpbmU6OnJlYWRGcm9tSW5vdGlmeSIpOworIAorICAgICBp bnQgYnVmZlNpemUgPSAwOworLSAgICBpb2N0bChpbm90aWZ5RmQsIEZJT05SRUFELCAoY2hhciAq KSAmYnVmZlNpemUpOworKyAgICBpZiAoaW9jdGwoaW5vdGlmeUZkLCBGSU9OUkVBRCwgKGNoYXIg KikgJmJ1ZmZTaXplKSA9PSAtMSB8fCBidWZmU2l6ZSA9PSAwKQorKyAgICAgICAgcmV0dXJuOwor KworICAgICBRVmFyTGVuZ3RoQXJyYXk8Y2hhciwgNDA5Nj4gYnVmZmVyKGJ1ZmZTaXplKTsKKyAg ICAgYnVmZlNpemUgPSByZWFkKGlub3RpZnlGZCwgYnVmZmVyLmRhdGEoKSwgYnVmZlNpemUpOwor ICAgICBjaGFyICphdCA9IGJ1ZmZlci5kYXRhKCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b3JlbGliL2lvL3Fsb2NrZmlsZV93aW4uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2Nr ZmlsZV93aW4uY3BwCitpbmRleCAyNzdmOGQ0MjMwLi4zOGVjZWY1NTUwIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4uY3BwCisrKysgYi9xdGJhc2Uvc3Jj L2NvcmVsaWIvaW8vcWxvY2tmaWxlX3dpbi5jcHAKK0BAIC00OCw2ICs0OCw4IEBACisgI2luY2x1 ZGUgIlF0Q29yZS9xZGVidWcuaCIKKyAjaW5jbHVkZSAiUXRDb3JlL3F0aHJlYWQuaCIKKyAKKysj aW5jbHVkZSAicHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmgiCisrCisgUVRfQkVHSU5fTkFNRVNQ QUNFCisgCisgc3RhdGljIGlubGluZSBib29sIGZpbGVFeGlzdHMoY29uc3Qgd2NoYXJfdCAqZmls ZU5hbWUpCitAQCAtMTUwLDcgKzE1Miw3IEBAIFFTdHJpbmcgUUxvY2tGaWxlUHJpdmF0ZTo6cHJv Y2Vzc05hbWVCeVBpZChxaW50NjQgcGlkKQorICNpZiAhZGVmaW5lZChRX09TX1dJTlJUKQorICAg ICB0eXBlZGVmIERXT1JEIChXSU5BUEkgKkdldE1vZHVsZUZpbGVOYW1lRXhGdW5jKShIQU5ETEUs IEhNT0RVTEUsIExQVFNUUiwgRFdPUkQpOworIAorLSAgICBITU9EVUxFIGhQc2FwaSA9IExvYWRM aWJyYXJ5QSgicHNhcGkiKTsKKysgICAgSE1PRFVMRSBoUHNhcGkgPSBRU3lzdGVtTGlicmFyeTo6 bG9hZChMInBzYXBpIik7CisgICAgIGlmICghaFBzYXBpKQorICAgICAgICAgcmV0dXJuIFFTdHJp bmcoKTsKKyAgICAgR2V0TW9kdWxlRmlsZU5hbWVFeEZ1bmMgcUdldE1vZHVsZUZpbGVOYW1lRXgg PSByZWludGVycHJldF9jYXN0PEdldE1vZHVsZUZpbGVOYW1lRXhGdW5jPigKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5peC5jcHAgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvaW8vcXByb2Nlc3NfdW5peC5jcHAKK2luZGV4IDUwMzkwZTU3ZjUuLjE1YzhmMzA3NDUg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5peC5jcHAKKysr KyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xcHJvY2Vzc191bml4LmNwcAorQEAgLTEsNyArMSw3 IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorICoqIENvcHlyaWdodCAoQykgMjAxNiBU aGUgUXQgQ29tcGFueSBMdGQuCistKiogQ29weXJpZ2h0IChDKSAyMDE2IEludGVsIENvcnBvcmF0 aW9uLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqKiBDb250 YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgUXRDb3JlIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC00MjIsMTQg KzQyMiwxNSBAQCB2b2lkIFFQcm9jZXNzUHJpdmF0ZTo6c3RhcnRQcm9jZXNzKCkKKyAgICAgLy8g QWRkIHRoZSBwcm9ncmFtIG5hbWUgdG8gdGhlIGFyZ3VtZW50IGxpc3QuCisgICAgIGFyZ3ZbMF0g PSBudWxscHRyOworICAgICBpZiAoIXByb2dyYW0uY29udGFpbnMoUUxhdGluMUNoYXIoJy8nKSkp IHsKKysgICAgICAgIC8vIGZpbmRFeGVjdXRhYmxlKCkgcmV0dXJucyBpdHMgYXJndW1lbnQgaWYg aXQncyBhbiBhYnNvbHV0ZSBwYXRoLAorKyAgICAgICAgLy8gb3RoZXJ3aXNlIGl0IHNlYXJjaGVz ICRQQVRIOyByZXR1cm5zIGVtcHR5IGlmIG5vdCBmb3VuZCAod2UgaGFuZGxlCisrICAgICAgICAv LyB0aGF0IGNhc2UgbXVjaCBsYXRlcikKKyAgICAgICAgIGNvbnN0IFFTdHJpbmcgJmV4ZUZpbGVQ YXRoID0gUVN0YW5kYXJkUGF0aHM6OmZpbmRFeGVjdXRhYmxlKHByb2dyYW0pOworLSAgICAgICAg aWYgKCFleGVGaWxlUGF0aC5pc0VtcHR5KCkpIHsKKy0gICAgICAgICAgICBjb25zdCBRQnl0ZUFy cmF5ICZ0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShleGVGaWxlUGF0aCk7CistICAgICAgICAgICAg YXJndlswXSA9IDo6c3RyZHVwKHRtcC5jb25zdERhdGEoKSk7CistICAgICAgICB9CistICAgIH0K Ky0gICAgaWYgKCFhcmd2WzBdKQorKyAgICAgICAgY29uc3QgUUJ5dGVBcnJheSAmdG1wID0gUUZp bGU6OmVuY29kZU5hbWUoZXhlRmlsZVBhdGgpOworKyAgICAgICAgYXJndlswXSA9IDo6c3RyZHVw KHRtcC5jb25zdERhdGEoKSk7CisrICAgIH0gZWxzZSB7CisgICAgICAgICBhcmd2WzBdID0gOjpz dHJkdXAoZW5jb2RlZFByb2dyYW1OYW1lLmNvbnN0RGF0YSgpKTsKKysgICAgfQorIAorICAgICAv LyBBZGQgZXZlcnkgYXJndW1lbnQgdG8gdGhlIGxpc3QKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkg PCBhcmd1bWVudHMuY291bnQoKTsgKytpKQorQEAgLTk4MywxNSArOTg0LDE2IEBAIGJvb2wgUVBy b2Nlc3NQcml2YXRlOjpzdGFydERldGFjaGVkKHFpbnQ2NCAqcGlkKQorICAgICAgICAgICAgICAg ICBlbnZwID0gX3FfZHVwRW52aXJvbm1lbnQoZW52aXJvbm1lbnQuZC5jb25zdERhdGEoKS0+dmFy cywgJmVudmMpOworICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICBRQnl0ZUFycmF5IHRt cDsKKyAgICAgICAgICAgICBpZiAoIXByb2dyYW0uY29udGFpbnMoUUxhdGluMUNoYXIoJy8nKSkp IHsKKysgICAgICAgICAgICAgICAgLy8gZmluZEV4ZWN1dGFibGUoKSByZXR1cm5zIGl0cyBhcmd1 bWVudCBpZiBpdCdzIGFuIGFic29sdXRlIHBhdGgsCisrICAgICAgICAgICAgICAgIC8vIG90aGVy d2lzZSBpdCBzZWFyY2hlcyAkUEFUSDsgcmV0dXJucyBlbXB0eSBpZiBub3QgZm91bmQgKHdlIGhh bmRsZQorKyAgICAgICAgICAgICAgICAvLyB0aGF0IGNhc2UgbXVjaCBsYXRlcikKKyAgICAgICAg ICAgICAgICAgY29uc3QgUVN0cmluZyAmZXhlRmlsZVBhdGggPSBRU3RhbmRhcmRQYXRoczo6Zmlu ZEV4ZWN1dGFibGUocHJvZ3JhbSk7CistICAgICAgICAgICAgICAgIGlmICghZXhlRmlsZVBhdGgu aXNFbXB0eSgpKQorLSAgICAgICAgICAgICAgICAgICAgdG1wID0gUUZpbGU6OmVuY29kZU5hbWUo ZXhlRmlsZVBhdGgpOworKyAgICAgICAgICAgICAgICBjb25zdCBRQnl0ZUFycmF5ICZ0bXAgPSBR RmlsZTo6ZW5jb2RlTmFtZShleGVGaWxlUGF0aCk7CisrICAgICAgICAgICAgICAgIGFyZ3ZbMF0g PSA6OnN0cmR1cCh0bXAuY29uc3REYXRhKCkpOworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAg ICAgICAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cChRRmlsZTo6ZW5jb2RlTmFtZShwcm9ncmFt KSk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGlmICh0bXAuaXNFbXB0eSgpKQorLSAg ICAgICAgICAgICAgICB0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShwcm9ncmFtKTsKKy0gICAgICAg ICAgICBhcmd2WzBdID0gdG1wLmRhdGEoKTsKKyAKKyAgICAgICAgICAgICBpZiAoZW52cCkKKyAg ICAgICAgICAgICAgICAgcXRfc2FmZV9leGVjdmUoYXJndlswXSwgYXJndiwgZW52cCk7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFic3RyYWN0aXRlbW1vZGVs LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3FhYnN0cmFjdGl0ZW1tb2RlbC5j cHAKK2luZGV4IDNhNzljNTAyYWYuLjk5N2E2MzRlNzYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJhY3RpdGVtbW9kZWwuY3BwCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJhY3RpdGVtbW9kZWwuY3BwCitAQCAtMzE5Niw5 ICszMTk2LDggQEAgYm9vbCBRQWJzdHJhY3RJdGVtTW9kZWw6OmJlZ2luTW92ZUNvbHVtbnMoY29u c3QgUU1vZGVsSW5kZXggJnNvdXJjZVBhcmVudCwgaW50IHMKKyAgICAgZGVzdGluYXRpb25DaGFu Z2UubmVlZHNBZGp1c3QgPSBkZXN0aW5hdGlvblBhcmVudC5pc1ZhbGlkKCkgJiYgZGVzdGluYXRp b25QYXJlbnQucm93KCkgPj0gc291cmNlTGFzdCAmJiBkZXN0aW5hdGlvblBhcmVudC5wYXJlbnQo KSA9PSBzb3VyY2VQYXJlbnQ7CisgICAgIGQtPmNoYW5nZXMucHVzaChkZXN0aW5hdGlvbkNoYW5n ZSk7CisgCistICAgIGQtPml0ZW1zQWJvdXRUb0JlTW92ZWQoc291cmNlUGFyZW50LCBzb3VyY2VG aXJzdCwgc291cmNlTGFzdCwgZGVzdGluYXRpb25QYXJlbnQsIGRlc3RpbmF0aW9uQ2hpbGQsIFF0 OjpIb3Jpem9udGFsKTsKKy0KKyAgICAgZW1pdCBjb2x1bW5zQWJvdXRUb0JlTW92ZWQoc291cmNl UGFyZW50LCBzb3VyY2VGaXJzdCwgc291cmNlTGFzdCwgZGVzdGluYXRpb25QYXJlbnQsIGRlc3Rp bmF0aW9uQ2hpbGQsIFFQcml2YXRlU2lnbmFsKCkpOworKyAgICBkLT5pdGVtc0Fib3V0VG9CZU1v dmVkKHNvdXJjZVBhcmVudCwgc291cmNlRmlyc3QsIHNvdXJjZUxhc3QsIGRlc3RpbmF0aW9uUGFy ZW50LCBkZXN0aW5hdGlvbkNoaWxkLCBRdDo6SG9yaXpvbnRhbCk7CisgICAgIHJldHVybiB0cnVl OworIH0KKyAKK0BAIC0zMjMxLDcgKzMyMzAsNiBAQCB2b2lkIFFBYnN0cmFjdEl0ZW1Nb2RlbDo6 ZW5kTW92ZUNvbHVtbnMoKQorICAgICAgIGFkanVzdGVkU291cmNlID0gY3JlYXRlSW5kZXgoYWRq dXN0ZWRTb3VyY2Uucm93KCksIGFkanVzdGVkU291cmNlLmNvbHVtbigpICsgbnVtTW92ZWQsIGFk anVzdGVkU291cmNlLmludGVybmFsUG9pbnRlcigpKTsKKyAKKyAgICAgZC0+aXRlbXNNb3ZlZChh ZGp1c3RlZFNvdXJjZSwgcmVtb3ZlQ2hhbmdlLmZpcnN0LCByZW1vdmVDaGFuZ2UubGFzdCwgYWRq dXN0ZWREZXN0aW5hdGlvbiwgaW5zZXJ0Q2hhbmdlLmZpcnN0LCBRdDo6SG9yaXpvbnRhbCk7Cist CisgICAgIGVtaXQgY29sdW1uc01vdmVkKGFkanVzdGVkU291cmNlLCByZW1vdmVDaGFuZ2UuZmly c3QsIHJlbW92ZUNoYW5nZS5sYXN0LCBhZGp1c3RlZERlc3RpbmF0aW9uLCBpbnNlcnRDaGFuZ2Uu Zmlyc3QsIFFQcml2YXRlU2lnbmFsKCkpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnByb3h5bW9kZWwuY3BwIGIvcXRiYXNlL3Ny Yy9jb3JlbGliL2l0ZW1tb2RlbHMvcXNvcnRmaWx0ZXJwcm94eW1vZGVsLmNwcAoraW5kZXggZGM2 Mzc5ZDlmYi4uYzVlMjg3ZWU4NCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVt bW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxp Yi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5jcHAKK0BAIC05MzksOCArOTM5LDkg QEAgdm9pZCBRU29ydEZpbHRlclByb3h5TW9kZWxQcml2YXRlOjppbnNlcnRfc291cmNlX2l0ZW1z KAorICAgICAgICAgICAgICAgICBxLT5iZWdpbkluc2VydENvbHVtbnMocHJveHlfcGFyZW50LCBw cm94eV9zdGFydCwgcHJveHlfZW5kKTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgc291cmNlX2l0ZW1zLnNpemUoKTsgKytpKQorLSAgICAgICAgICAgIHByb3h5 X3RvX3NvdXJjZS5pbnNlcnQocHJveHlfc3RhcnQgKyBpLCBzb3VyY2VfaXRlbXMuYXQoaSkpOwor KyAgICAgICAgLy8gVE9ETzogdXNlIHRoZSByYW5nZSBRTGlzdDo6aW5zZXJ0KCkgb3ZlcmxvYWQg b25jZSBpdCBpcyBpbXBsZW1lbnRlZCAoUVRCVUctNTg2MzMpLgorKyAgICAgICAgcHJveHlfdG9f c291cmNlLmluc2VydChwcm94eV9zdGFydCwgc291cmNlX2l0ZW1zLnNpemUoKSwgMCk7CisrICAg ICAgICBzdGQ6OmNvcHkoc291cmNlX2l0ZW1zLmNiZWdpbigpLCBzb3VyY2VfaXRlbXMuY2VuZCgp LCBwcm94eV90b19zb3VyY2UuYmVnaW4oKSArIHByb3h5X3N0YXJ0KTsKKyAKKyAgICAgICAgIGJ1 aWxkX3NvdXJjZV90b19wcm94eV9tYXBwaW5nKHByb3h5X3RvX3NvdXJjZSwgc291cmNlX3RvX3By b3h5KTsKKyAKK0BAIC0zMTIzLDggKzMxMjQsOSBAQCBib29sIFFTb3J0RmlsdGVyUHJveHlNb2Rl bDo6ZmlsdGVyQWNjZXB0c1JvdyhpbnQgc291cmNlX3JvdywgY29uc3QgUU1vZGVsSW5kZXggJgor IAorICAgICBpZiAoZC0+ZmlsdGVyX2RhdGEuaXNFbXB0eSgpKQorICAgICAgICAgcmV0dXJuIHRy dWU7CisrCisrICAgIGludCBjb2x1bW5fY291bnQgPSBkLT5tb2RlbC0+Y29sdW1uQ291bnQoc291 cmNlX3BhcmVudCk7CisgICAgIGlmIChkLT5maWx0ZXJfY29sdW1uID09IC0xKSB7CistICAgICAg ICBpbnQgY29sdW1uX2NvdW50ID0gZC0+bW9kZWwtPmNvbHVtbkNvdW50KHNvdXJjZV9wYXJlbnQp OworICAgICAgICAgZm9yIChpbnQgY29sdW1uID0gMDsgY29sdW1uIDwgY29sdW1uX2NvdW50OyAr K2NvbHVtbikgeworICAgICAgICAgICAgIFFNb2RlbEluZGV4IHNvdXJjZV9pbmRleCA9IGQtPm1v ZGVsLT5pbmRleChzb3VyY2Vfcm93LCBjb2x1bW4sIHNvdXJjZV9wYXJlbnQpOworICAgICAgICAg ICAgIFFTdHJpbmcga2V5ID0gZC0+bW9kZWwtPmRhdGEoc291cmNlX2luZGV4LCBkLT5maWx0ZXJf cm9sZSkudG9TdHJpbmcoKTsKK0BAIC0zMTMzLDkgKzMxMzUsMTAgQEAgYm9vbCBRU29ydEZpbHRl clByb3h5TW9kZWw6OmZpbHRlckFjY2VwdHNSb3coaW50IHNvdXJjZV9yb3csIGNvbnN0IFFNb2Rl bEluZGV4ICYKKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorLSAg ICBRTW9kZWxJbmRleCBzb3VyY2VfaW5kZXggPSBkLT5tb2RlbC0+aW5kZXgoc291cmNlX3Jvdywg ZC0+ZmlsdGVyX2NvbHVtbiwgc291cmNlX3BhcmVudCk7CistICAgIGlmICghc291cmNlX2luZGV4 LmlzVmFsaWQoKSkgLy8gdGhlIGNvbHVtbiBtYXkgbm90IGV4aXN0CisrCisrICAgIGlmIChkLT5m aWx0ZXJfY29sdW1uID49IGNvbHVtbl9jb3VudCkgLy8gdGhlIGNvbHVtbiBtYXkgbm90IGV4aXN0 CisgICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgUU1vZGVsSW5kZXggc291cmNlX2luZGV4ID0g ZC0+bW9kZWwtPmluZGV4KHNvdXJjZV9yb3csIGQtPmZpbHRlcl9jb2x1bW4sIHNvdXJjZV9wYXJl bnQpOworICAgICBRU3RyaW5nIGtleSA9IGQtPm1vZGVsLT5kYXRhKHNvdXJjZV9pbmRleCwgZC0+ ZmlsdGVyX3JvbGUpLnRvU3RyaW5nKCk7CisgICAgIHJldHVybiBkLT5maWx0ZXJfZGF0YS5oYXNN YXRjaChrZXkpOworIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fj b3JlYXBwbGljYXRpb24uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xY29yZWFwcGxp Y2F0aW9uLmNwcAoraW5kZXggY2EyODY0ZGY4My4uMTMyYjJlYWU1MiAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHAKK0BAIC0xMTU3LDcgKzEx NTcsNyBAQCBzdGF0aWMgYm9vbCBkb05vdGlmeShRT2JqZWN0ICpyZWNlaXZlciwgUUV2ZW50ICpl dmVudCkKKyBib29sIFFDb3JlQXBwbGljYXRpb25Qcml2YXRlOjpzZW5kVGhyb3VnaEFwcGxpY2F0 aW9uRXZlbnRGaWx0ZXJzKFFPYmplY3QgKnJlY2VpdmVyLCBRRXZlbnQgKmV2ZW50KQorIHsKKyAg ICAgLy8gV2UgY2FuJ3QgYWNjZXNzIHRoZSBhcHBsaWNhdGlvbiBldmVudCBmaWx0ZXJzIG91dHNp ZGUgb2YgdGhlIG1haW4gdGhyZWFkIChyYWNlIGNvbmRpdGlvbnMpCistICAgIFFfQVNTRVJUKHJl Y2VpdmVyLT5kX2Z1bmMoKS0+dGhyZWFkRGF0YS5sb2FkUmVsYXhlZCgpLT50aHJlYWQubG9hZEFj cXVpcmUoKSA9PSBtYWluVGhyZWFkKCkpOworKyAgICBRX0FTU0VSVChyZWNlaXZlci0+ZF9mdW5j KCktPnRocmVhZERhdGEubG9hZEFjcXVpcmUoKS0+dGhyZWFkLmxvYWRSZWxheGVkKCkgPT0gbWFp blRocmVhZCgpKTsKKyAKKyAgICAgaWYgKGV4dHJhRGF0YSkgeworICAgICAgICAgLy8gYXBwbGlj YXRpb24gZXZlbnQgZmlsdGVycyBhcmUgb25seSBjYWxsZWQgZm9yIG9iamVjdHMgaW4gdGhlIEdV SSB0aHJlYWQKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3Qu Y3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0LmNwcAoraW5kZXggMWViNzkx MzhkOS4uMzZjZDc4MGVlMSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwv cW9iamVjdC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdC5jcHAK K0BAIC0xMDEwLDcgKzEwMTAsNyBAQCBRT2JqZWN0Ojp+UU9iamVjdCgpCisgICAgICAgICBlbWl0 IGRlc3Ryb3llZCh0aGlzKTsKKyAgICAgfQorIAorLSAgICBpZiAoZC0+ZGVjbGFyYXRpdmVEYXRh KSB7CisrICAgIGlmICghZC0+aXNEZWxldGluZ0NoaWxkcmVuICYmIGQtPmRlY2xhcmF0aXZlRGF0 YSkgeworICAgICAgICAgaWYgKHN0YXRpY19jYXN0PFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YUlt cGwqPihkLT5kZWNsYXJhdGl2ZURhdGEpLT5vd25lZEJ5UW1sMSkgeworICAgICAgICAgICAgIGlm IChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmRlc3Ryb3llZF9xbWwxKQorICAgICAgICAgICAg ICAgICBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmRlc3Ryb3llZF9xbWwxKGQtPmRlY2xhcmF0 aXZlRGF0YSwgdGhpcyk7CitAQCAtMTU4MCw3ICsxNTgwLDcgQEAgdm9pZCBRT2JqZWN0Ojptb3Zl VG9UaHJlYWQoUVRocmVhZCAqdGFyZ2V0VGhyZWFkKQorIAorICAgICBRVGhyZWFkRGF0YSAqY3Vy cmVudERhdGEgPSBRVGhyZWFkRGF0YTo6Y3VycmVudCgpOworICAgICBRVGhyZWFkRGF0YSAqdGFy Z2V0RGF0YSA9IHRhcmdldFRocmVhZCA/IFFUaHJlYWREYXRhOjpnZXQyKHRhcmdldFRocmVhZCkg OiBudWxscHRyOworLSAgICBRVGhyZWFkRGF0YSAqdGhpc1RocmVhZERhdGEgPSBkLT50aHJlYWRE YXRhLmxvYWRSZWxheGVkKCk7CisrICAgIFFUaHJlYWREYXRhICp0aGlzVGhyZWFkRGF0YSA9IGQt PnRocmVhZERhdGEubG9hZEFjcXVpcmUoKTsKKyAgICAgaWYgKCF0aGlzVGhyZWFkRGF0YS0+dGhy ZWFkLmxvYWRBY3F1aXJlKCkgJiYgY3VycmVudERhdGEgPT0gdGFyZ2V0RGF0YSkgeworICAgICAg ICAgLy8gb25lIGV4Y2VwdGlvbiB0byB0aGUgcnVsZTogd2UgYWxsb3cgbW92aW5nIG9iamVjdHMg d2l0aCBubyB0aHJlYWQgYWZmaW5pdHkgdG8gdGhlIGN1cnJlbnQgdGhyZWFkCisgICAgICAgICBj dXJyZW50RGF0YSA9IGQtPnRocmVhZERhdGE7CitAQCAtMjYyMCw3ICsyNjIwLDcgQEAgaW50IFFP YmplY3Q6OnJlY2VpdmVycyhjb25zdCBjaGFyICpzaWduYWwpIGNvbnN0CisgICAgICAgICBpZiAo IWQtPmlzU2lnbmFsQ29ubmVjdGVkKHNpZ25hbF9pbmRleCkpCisgICAgICAgICAgICAgcmV0dXJu IHJlY2VpdmVyczsKKyAKKy0gICAgICAgIGlmIChkLT5kZWNsYXJhdGl2ZURhdGEgJiYgUUFic3Ry YWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMpIHsKKysgICAgICAgIGlmICghZC0+aXNEZWxl dGluZ0NoaWxkcmVuICYmIGQtPmRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJhY3REZWNsYXJhdGl2 ZURhdGE6OnJlY2VpdmVycykgeworICAgICAgICAgICAgIHJlY2VpdmVycyArPSBRQWJzdHJhY3RE ZWNsYXJhdGl2ZURhdGE6OnJlY2VpdmVycyhkLT5kZWNsYXJhdGl2ZURhdGEsIHRoaXMsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpZ25hbF9pbmRleCk7CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3Jl bGliL2tlcm5lbC9xb2JqZWN0X3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVj dF9wLmgKK2luZGV4IDBiODI3YTUyY2EuLjEzZmZiODg5OTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv a2VybmVsL3FvYmplY3RfcC5oCitAQCAtNDQ0LDcgKzQ0NCw3IEBAIGlubGluZSB2b2lkIFFPYmpl Y3RQcml2YXRlOjpjaGVja0ZvckluY29tcGF0aWJsZUxpYnJhcnlWZXJzaW9uKGludCB2ZXJzaW9u KSBjb25zCisgCisgaW5saW5lIGJvb2wgUU9iamVjdFByaXZhdGU6OmlzRGVjbGFyYXRpdmVTaWdu YWxDb25uZWN0ZWQodWludCBzaWduYWxfaW5kZXgpIGNvbnN0CisgeworLSAgICByZXR1cm4gZGVj bGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6aXNTaWduYWxDb25uZWN0 ZWQKKysgICAgcmV0dXJuICFpc0RlbGV0aW5nQ2hpbGRyZW4gJiYgZGVjbGFyYXRpdmVEYXRhICYm IFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6aXNTaWduYWxDb25uZWN0ZWQKKyAgICAgICAgICAg ICAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmlzU2lnbmFsQ29ubmVjdGVkKGRlY2xhcmF0 aXZlRGF0YSwgcV9mdW5jKCksIHNpZ25hbF9pbmRleCk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRyYW5zbGF0b3IuY3BwIGIvcXRiYXNlL3NyYy9jb3Jl bGliL2tlcm5lbC9xdHJhbnNsYXRvci5jcHAKK2luZGV4IDI4MTJmZmI3ZWEuLmJjMDE3N2M1ZWMg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3F0cmFuc2xhdG9yLmNwcAor KysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xdHJhbnNsYXRvci5jcHAKK0BAIC05MDIs NyArOTAyLDcgQEAgc3RhdGljIFFTdHJpbmcgZ2V0TWVzc2FnZShjb25zdCB1Y2hhciAqbSwgY29u c3QgdWNoYXIgKmVuZCwgY29uc3QgY2hhciAqY29udGV4dCwKKyAgICAgICAgICAgICBnb3RvIGVu ZDsKKyAgICAgICAgIGNhc2UgVGFnX1RyYW5zbGF0aW9uOiB7CisgICAgICAgICAgICAgaW50IGxl biA9IHJlYWQzMihtKTsKKy0gICAgICAgICAgICBpZiAobGVuICUgMSkKKysgICAgICAgICAgICBp ZiAobGVuICYgMSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICAgICAg ICAgICBtICs9IDQ7CisgICAgICAgICAgICAgaWYgKCFudW1lcnVzLS0pIHsKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwIGIvcXRiYXNl L3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlLmNwcAoraW5kZXggOWRlMjJjZWYz My4uZmY4NjhhMzI2OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMv cW1pbWVkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1p bWVkYXRhYmFzZS5jcHAKK0BAIC0zODksMjAgKzM4OSwyMyBAQCBRTWltZVR5cGUgUU1pbWVEYXRh YmFzZVByaXZhdGU6Om1pbWVUeXBlRm9yRmlsZU5hbWVBbmREYXRhKGNvbnN0IFFTdHJpbmcgJmZp bGVOYQorICAgICAgICAgLy8gRGlzYW1iaWd1YXRlIGNvbmZsaWN0aW5nIGV4dGVuc2lvbnMgKGlm IG1hZ2ljIG1hdGNoaW5nIGZvdW5kIHNvbWV0aGluZykKKyAgICAgICAgIGlmIChjYW5kaWRhdGVC eURhdGEuaXNWYWxpZCgpICYmIG1hZ2ljQWNjdXJhY3kgPiAwKSB7CisgICAgICAgICAgICAgY29u c3QgUVN0cmluZyBzbmlmZmVkTWltZSA9IGNhbmRpZGF0ZUJ5RGF0YS5uYW1lKCk7CistICAgICAg ICAgICAgLy8gSWYgdGhlIHNuaWZmZWRNaW1lIG1hdGNoZXMgYSBnbG9iIG1hdGNoLCB1c2UgaXQK KysgICAgICAgICAgICAvLyBJZiB0aGUgc25pZmZlZE1pbWUgbWF0Y2hlcyBhIGhpZ2hlc3Qtd2Vp Z2h0IGdsb2IgbWF0Y2gsIHVzZSBpdAorICAgICAgICAgICAgIGlmIChjYW5kaWRhdGVzQnlOYW1l Lm1fbWF0Y2hpbmdNaW1lVHlwZXMuY29udGFpbnMoc25pZmZlZE1pbWUpKSB7CisgICAgICAgICAg ICAgICAgICphY2N1cmFjeVB0ciA9IDEwMDsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRp ZGF0ZUJ5RGF0YTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgZm9yIChjb25zdCBRU3Ry aW5nICZtIDogcUFzQ29uc3QoY2FuZGlkYXRlc0J5TmFtZS5tX21hdGNoaW5nTWltZVR5cGVzKSkg eworKyAgICAgICAgICAgIGZvciAoY29uc3QgUVN0cmluZyAmbSA6IHFBc0NvbnN0KGNhbmRpZGF0 ZXNCeU5hbWUubV9hbGxNYXRjaGluZ01pbWVUeXBlcykpIHsKKyAgICAgICAgICAgICAgICAgaWYg KGluaGVyaXRzKG0sIHNuaWZmZWRNaW1lKSkgeworICAgICAgICAgICAgICAgICAgICAgLy8gV2Ug aGF2ZSBtYWdpYyArIHBhdHRlcm4gcG9pbnRpbmcgdG8gdGhpcywgc28gaXQncyBhIHByZXR0eSBn b29kIG1hdGNoCisgICAgICAgICAgICAgICAgICAgICAqYWNjdXJhY3lQdHIgPSAxMDA7CisgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gbWltZVR5cGVGb3JOYW1lKG0pOworICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICphY2N1cmFjeVB0ciA9IG1hZ2lj QWNjdXJhY3k7CistICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUJ5RGF0YTsKKysgICAgICAg ICAgICBpZiAoY2FuZGlkYXRlc0J5TmFtZS5tX2FsbE1hdGNoaW5nTWltZVR5cGVzLmlzRW1wdHko KSkgeworKyAgICAgICAgICAgICAgICAvLyBObyBnbG9iLCB1c2UgbWFnaWMKKysgICAgICAgICAg ICAgICAgKmFjY3VyYWN5UHRyID0gbWFnaWNBY2N1cmFjeTsKKysgICAgICAgICAgICAgICAgcmV0 dXJuIGNhbmRpZGF0ZUJ5RGF0YTsKKysgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgIH0K KyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZ2xvYnBh dHRlcm4uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWdsb2JwYXR0ZXJu LmNwcAoraW5kZXggYTgxMTEyZDIyNy4uZmE4ZjRjNTQ1ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVybi5jcHAKKysrKyBiL3F0YmFzZS9z cmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVybi5jcHAKK0BAIC04Myw3ICs4Mywx MCBAQCB2b2lkIFFNaW1lR2xvYk1hdGNoUmVzdWx0OjphZGRNYXRjaChjb25zdCBRU3RyaW5nICZt aW1lVHlwZSwgaW50IHdlaWdodCwgY29uc3QgUQorICAgICB9CisgICAgIGlmICghbV9tYXRjaGlu Z01pbWVUeXBlcy5jb250YWlucyhtaW1lVHlwZSkpIHsKKyAgICAgICAgIG1fbWF0Y2hpbmdNaW1l VHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKy0gICAgICAgIG1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMu YXBwZW5kKG1pbWVUeXBlKTsKKysgICAgICAgIGlmIChyZXBsYWNlKQorKyAgICAgICAgICAgIG1f YWxsTWF0Y2hpbmdNaW1lVHlwZXMucHJlcGVuZChtaW1lVHlwZSk7IC8vIGhpZ2hlc3Qtd2VpZ2h0 IGZpcnN0CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgbV9hbGxNYXRjaGluZ01pbWVUeXBl cy5hcHBlbmQobWltZVR5cGUpOworICAgICAgICAgbV9rbm93blN1ZmZpeExlbmd0aCA9IGtub3du U3VmZml4TGVuZ3RoOworICAgICB9CisgfQorQEAgLTk0LDcgKzk3LDcgQEAgUU1pbWVHbG9iUGF0 dGVybjo6UGF0dGVyblR5cGUgUU1pbWVHbG9iUGF0dGVybjo6ZGV0ZWN0UGF0dGVyblR5cGUoY29u c3QgUVN0cmluZworICAgICBpZiAoIXBhdHRlcm5MZW5ndGgpCisgICAgICAgICByZXR1cm4gT3Ro ZXJQYXR0ZXJuOworIAorLSAgICBjb25zdCBib29sIHN0YXJDb3VudCA9IHBhdHRlcm4uY291bnQo UUxhdGluMUNoYXIoJyonKSkgPT0gMTsKKysgICAgY29uc3QgaW50IHN0YXJDb3VudCA9IHBhdHRl cm4uY291bnQoUUxhdGluMUNoYXIoJyonKSk7CisgICAgIGNvbnN0IGJvb2wgaGFzU3F1YXJlQnJh Y2tldCA9IHBhdHRlcm4uaW5kZXhPZihRTGF0aW4xQ2hhcignWycpKSAhPSAtMTsKKyAgICAgY29u c3QgYm9vbCBoYXNRdWVzdGlvbk1hcmsgPSBwYXR0ZXJuLmluZGV4T2YoUUxhdGluMUNoYXIoJz8n KSkgIT0gLTE7CisgCitAQCAtMTA2LDEwICsxMDksMTAgQEAgUU1pbWVHbG9iUGF0dGVybjo6UGF0 dGVyblR5cGUgUU1pbWVHbG9iUGF0dGVybjo6ZGV0ZWN0UGF0dGVyblR5cGUoY29uc3QgUVN0cmlu ZworICAgICAgICAgICAgIC8vIFBhdHRlcm5zIGxpa2UgIlJFQURNRSoiICh3ZWxsIHRoaXMgaXMg Y3VycmVudGx5IHRoZSBvbmx5IG9uZSBsaWtlIHRoYXQuLi4pCisgICAgICAgICAgICAgaWYgKHBh dHRlcm4uYXQocGF0dGVybkxlbmd0aCAtIDEpID09IFFMYXRpbjFDaGFyKCcqJykpCisgICAgICAg ICAgICAgICAgIHJldHVybiBQcmVmaXhQYXR0ZXJuOworLSAgICAgICAgfQorLSAgICAgICAgLy8g TmFtZXMgd2l0aG91dCBhbnkgd2lsZGNhcmRzIGxpa2UgIlJFQURNRSIKKy0gICAgICAgIGlmIChz dGFyQ291bnQgPT0gMCkKKysgICAgICAgIH0gZWxzZSBpZiAoc3RhckNvdW50ID09IDApIHsKKysg ICAgICAgICAgICAvLyBOYW1lcyB3aXRob3V0IGFueSB3aWxkY2FyZHMgbGlrZSAiUkVBRE1FIgor ICAgICAgICAgICAgIHJldHVybiBMaXRlcmFsUGF0dGVybjsKKysgICAgICAgIH0KKyAgICAgfQor IAorICAgICBpZiAocGF0dGVybiA9PSBRTGF0aW4xU3RyaW5nKCJbMC05XVswLTldWzAtOV0udmRy IikpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXByb3Zp ZGVyLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVwcm92aWRlci5jcHAK K2luZGV4IDI1OGRkZGY4Y2IuLjQ2NDJkMGYyZDAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3BwCitAQCAtMjQ0LDE1ICsyNDQsMTggQEAgdm9p ZCBRTWltZUJpbmFyeVByb3ZpZGVyOjphZGRGaWxlTmFtZU1hdGNoZXMoY29uc3QgUVN0cmluZyAm ZmlsZU5hbWUsIFFNaW1lR2xvYk0KKyAgICAgY29uc3QgUVN0cmluZyBsb3dlckZpbGVOYW1lID0g ZmlsZU5hbWUudG9Mb3dlcigpOworICAgICAvLyBDaGVjayBsaXRlcmFscyAoZS5nLiAiTWFrZWZp bGUiKQorICAgICBtYXRjaEdsb2JMaXN0KHJlc3VsdCwgbV9jYWNoZUZpbGUsIG1fY2FjaGVGaWxl LT5nZXRVaW50MzIoUG9zTGl0ZXJhbExpc3RPZmZzZXQpLCBmaWxlTmFtZSk7CistICAgIC8vIENo ZWNrIGNvbXBsZXggZ2xvYnMgKGUuZy4gImNhbGxncmluZC5vdXRbMC05XSoiKQorLSAgICBtYXRj aEdsb2JMaXN0KHJlc3VsdCwgbV9jYWNoZUZpbGUsIG1fY2FjaGVGaWxlLT5nZXRVaW50MzIoUG9z R2xvYkxpc3RPZmZzZXQpLCBmaWxlTmFtZSk7CisgICAgIC8vIENoZWNrIHRoZSB2ZXJ5IGNvbW1v biAqLnR4dCBjYXNlcyB3aXRoIHRoZSBzdWZmaXggdHJlZQorLSAgICBjb25zdCBpbnQgcmV2ZXJz ZVN1ZmZpeFRyZWVPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc1JldmVyc2VTdWZm aXhUcmVlT2Zmc2V0KTsKKy0gICAgY29uc3QgaW50IG51bVJvb3RzID0gbV9jYWNoZUZpbGUtPmdl dFVpbnQzMihyZXZlcnNlU3VmZml4VHJlZU9mZnNldCk7CistICAgIGNvbnN0IGludCBmaXJzdFJv b3RPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0 ICsgNCk7CistICAgIG1hdGNoU3VmZml4VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1Sb290 cywgZmlyc3RSb290T2Zmc2V0LCBsb3dlckZpbGVOYW1lLCBsb3dlckZpbGVOYW1lLmxlbmd0aCgp IC0gMSwgZmFsc2UpOworKyAgICBpZiAocmVzdWx0Lm1fbWF0Y2hpbmdNaW1lVHlwZXMuaXNFbXB0 eSgpKSB7CisrICAgICAgICBjb25zdCBpbnQgcmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgPSBtX2Nh Y2hlRmlsZS0+Z2V0VWludDMyKFBvc1JldmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsKKysgICAgICAg IGNvbnN0IGludCBudW1Sb290cyA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZp eFRyZWVPZmZzZXQpOworKyAgICAgICAgY29uc3QgaW50IGZpcnN0Um9vdE9mZnNldCA9IG1fY2Fj aGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgKyA0KTsKKysgICAgICAg IG1hdGNoU3VmZml4VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1Sb290cywgZmlyc3RSb290 T2Zmc2V0LCBsb3dlckZpbGVOYW1lLCBsb3dlckZpbGVOYW1lLmxlbmd0aCgpIC0gMSwgZmFsc2Up OworKyAgICAgICAgaWYgKHJlc3VsdC5tX21hdGNoaW5nTWltZVR5cGVzLmlzRW1wdHkoKSkKKysg ICAgICAgICAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0LCBtX2NhY2hlRmlsZSwgbnVtUm9vdHMs IGZpcnN0Um9vdE9mZnNldCwgZmlsZU5hbWUsIGZpbGVOYW1lLmxlbmd0aCgpIC0gMSwgdHJ1ZSk7 CisrICAgIH0KKysgICAgLy8gQ2hlY2sgY29tcGxleCBnbG9icyAoZS5nLiAiY2FsbGdyaW5kLm91 dFswLTldKiIgb3IgIlJFQURNRSoiKQorICAgICBpZiAocmVzdWx0Lm1fbWF0Y2hpbmdNaW1lVHlw ZXMuaXNFbXB0eSgpKQorLSAgICAgICAgbWF0Y2hTdWZmaXhUcmVlKHJlc3VsdCwgbV9jYWNoZUZp bGUsIG51bVJvb3RzLCBmaXJzdFJvb3RPZmZzZXQsIGZpbGVOYW1lLCBmaWxlTmFtZS5sZW5ndGgo KSAtIDEsIHRydWUpOworKyAgICAgICAgbWF0Y2hHbG9iTGlzdChyZXN1bHQsIG1fY2FjaGVGaWxl LCBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc0dsb2JMaXN0T2Zmc2V0KSwgZmlsZU5hbWUpOwor IH0KKyAKKyB2b2lkIFFNaW1lQmluYXJ5UHJvdmlkZXI6Om1hdGNoR2xvYkxpc3QoUU1pbWVHbG9i TWF0Y2hSZXN1bHQgJnJlc3VsdCwgQ2FjaGVGaWxlICpjYWNoZUZpbGUsIGludCBvZmYsIGNvbnN0 IFFTdHJpbmcgJmZpbGVOYW1lKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJp YWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0 aW9uL3Fqc29ucGFyc2VyLmNwcAoraW5kZXggMTdlNmYxMTFhYi4uMmU0MGI2YzhmYiAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcAor KysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcWpzb25wYXJzZXIuY3BwCitA QCAtMzc5LDEwICszNzksMzAgQEAgZXJyb3I6CisgICAgIHJldHVybiBRQ2JvclZhbHVlKCk7Cisg fQorIAorKy8vIFdlIG5lZWQgdG8gcmV0YWluIHRoZSBfbGFzdF8gdmFsdWUgZm9yIGFueSBkdXBs aWNhdGUga2V5cyBhbmQgd2UgbmVlZCB0byBkZXJlZiBjb250YWluZXJzLgorKy8vIFRoZXJlZm9y ZSB0aGUgbWFudWFsIGltcGxlbWVudGF0aW9uIG9mIHN0ZDo6dW5pcXVlKCkuCisrdGVtcGxhdGU8 dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIENvbXBhcmUsIHR5cGVuYW1lIEFzc2lnbj4KKytz dGF0aWMgSXRlcmF0b3IgY3VzdG9tQXNzaWduaW5nVW5pcXVlTGFzdChJdGVyYXRvciBmaXJzdCwg SXRlcmF0b3IgbGFzdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDb21wYXJlIGNvbXBhcmUsIEFzc2lnbiBhc3NpZ24pCisreworKyAgICBmaXJzdCA9IHN0ZDo6 YWRqYWNlbnRfZmluZChmaXJzdCwgbGFzdCwgY29tcGFyZSk7CisrICAgIGlmIChmaXJzdCA9PSBs YXN0KQorKyAgICAgICAgcmV0dXJuIGxhc3Q7CisrCisrICAgIEl0ZXJhdG9yIHJlc3VsdCA9IGZp cnN0OworKyAgICB3aGlsZSAoKytmaXJzdCAhPSBsYXN0KSB7CisrICAgICAgICBpZiAoIWNvbXBh cmUoKnJlc3VsdCwgKmZpcnN0KSkKKysgICAgICAgICAgICArK3Jlc3VsdDsKKysgICAgICAgIGlm IChyZXN1bHQgIT0gZmlyc3QpCisrICAgICAgICAgICAgYXNzaWduKCpyZXN1bHQsICpmaXJzdCk7 CisrICAgIH0KKysKKysgICAgcmV0dXJuICsrcmVzdWx0OworK30KKysKKyBzdGF0aWMgdm9pZCBz b3J0Q29udGFpbmVyKFFDYm9yQ29udGFpbmVyUHJpdmF0ZSAqY29udGFpbmVyKQorIHsKKyAgICAg dXNpbmcgRm9yd2FyZCA9IFFKc29uUHJpdmF0ZTo6S2V5SXRlcmF0b3I7CistICAgIHVzaW5nIFJl dmVyc2UgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Rm9yd2FyZD47CisgICAgIHVzaW5nIFZhbHVl ID0gRm9yd2FyZDo6dmFsdWVfdHlwZTsKKyAKKyAgICAgYXV0byBjb21wYXJlID0gW2NvbnRhaW5l cl0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKQorQEAgLTQyMCwxNyArNDQwLDMxIEBA IHN0YXRpYyB2b2lkIHNvcnRDb250YWluZXIoUUNib3JDb250YWluZXJQcml2YXRlICpjb250YWlu ZXIpCisgICAgICAgICB9CisgICAgIH07CisgCistICAgIHN0ZDo6c29ydChGb3J3YXJkKGNvbnRh aW5lci0+ZWxlbWVudHMuYmVnaW4oKSksIEZvcndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5lbmQo KSksCistICAgICAgICAgICAgICBbJmNvbXBhcmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1 ZSAmYikgeyByZXR1cm4gY29tcGFyZShhLCBiKSA8IDA7IH0pOworKyAgICAvLyBUaGUgZWxlbWVu dHMnIGNvbnRhaW5lcnMgYXJlIG93bmVkIGJ5IHRoZSBvdXRlciBjb250YWluZXIsIG5vdCBieSB0 aGUgZWxlbWVudHMgdGhlbXNlbHZlcy4KKysgICAgYXV0byBtb3ZlID0gW10oRm9yd2FyZDo6cmVm ZXJlbmNlIHRhcmdldCwgRm9yd2FyZDo6cmVmZXJlbmNlIHNvdXJjZSkKKysgICAgeworKyAgICAg ICAgUXRDYm9yOjpFbGVtZW50ICZ0YXJnZXRWYWx1ZSA9IHRhcmdldC52YWx1ZSgpOworKworKyAg ICAgICAgLy8gSWYgdGhlIHRhcmdldCBoYXMgYSBjb250YWluZXIsIGRlcmVmIGl0IGJlZm9yZSBv dmVyd3JpdGluZywgc28gdGhhdCB3ZSBkb24ndCBsZWFrLgorKyAgICAgICAgaWYgKHRhcmdldFZh bHVlLmZsYWdzICYgUXRDYm9yOjpFbGVtZW50OjpJc0NvbnRhaW5lcikKKysgICAgICAgICAgICB0 YXJnZXRWYWx1ZS5jb250YWluZXItPmRlcmVmKCk7CisrCisrICAgICAgICAvLyBEbyBub3QgbW92 ZSwgc28gdGhhdCB3ZSBjYW4gY2xlYXIgdGhlIHZhbHVlIGFmdGVyd2FyZHMuCisrICAgICAgICB0 YXJnZXQgPSBzb3VyY2U7CisrCisrICAgICAgICAvLyBDbGVhciB0aGUgc291cmNlIHZhbHVlLCBz byB0aGF0IHdlIGRvbid0IHN0b3JlIHRoZSBzYW1lIGNvbnRhaW5lciB0d2ljZS4KKysgICAgICAg IHNvdXJjZS52YWx1ZSgpID0gUXRDYm9yOjpFbGVtZW50KCk7CisrICAgIH07CisrCisrICAgIHN0 ZDo6c3RhYmxlX3NvcnQoCisrICAgICAgICAgICAgICAgIEZvcndhcmQoY29udGFpbmVyLT5lbGVt ZW50cy5iZWdpbigpKSwgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmVuZCgpKSwKKysgICAg ICAgICAgICAgICAgWyZjb21wYXJlXShjb25zdCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUgJmIpIHsg cmV0dXJuIGNvbXBhcmUoYSwgYikgPCAwOyB9KTsKKyAKKy0gICAgLy8gV2UgbmVlZCB0byByZXRh aW4gdGhlIF9sYXN0XyB2YWx1ZSBmb3IgYW55IGR1cGxpY2F0ZSBrZXlzLiBUaGVyZWZvcmUgdGhl IHJldmVyc2UgZGFuY2UgaGVyZS4KKy0gICAgYXV0byBpdCA9IHN0ZDo6dW5pcXVlKFJldmVyc2Uo Y29udGFpbmVyLT5lbGVtZW50cy5lbmQoKSksIFJldmVyc2UoY29udGFpbmVyLT5lbGVtZW50cy5i ZWdpbigpKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIFsmY29tcGFyZV0oY29uc3QgVmFs dWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7CistICAgICAgICByZXR1cm4gY29tcGFyZShhLCBiKSA9 PSAwOworLSAgICB9KS5iYXNlKCkuZWxlbWVudHNJdGVyYXRvcigpOworKyAgICBGb3J3YXJkIHJl c3VsdCA9IGN1c3RvbUFzc2lnbmluZ1VuaXF1ZUxhc3QoCisrICAgICAgICAgICAgICAgIEZvcndh cmQoY29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpKSwgIEZvcndhcmQoY29udGFpbmVyLT5lbGVt ZW50cy5lbmQoKSksCisrICAgICAgICAgICAgICAgIFsmY29tcGFyZV0oY29uc3QgVmFsdWUgJmEs IGNvbnN0IFZhbHVlICZiKSB7IHJldHVybiBjb21wYXJlKGEsIGIpID09IDA7IH0sIG1vdmUpOwor IAorLSAgICAvLyBUaGUgZXJhc2UgZnJvbSBiZWdpbm5pbmcgaXMgZXhwZW5zaXZlIGJ1dCBob3Bl ZnVsbHkgcmFyZS4KKy0gICAgY29udGFpbmVyLT5lbGVtZW50cy5lcmFzZShjb250YWluZXItPmVs ZW1lbnRzLmJlZ2luKCksIGl0KTsKKysgICAgY29udGFpbmVyLT5lbGVtZW50cy5lcmFzZShyZXN1 bHQuZWxlbWVudHNJdGVyYXRvcigpLCBjb250YWluZXItPmVsZW1lbnRzLmVuZCgpKTsKKyB9Cisg CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcXhtbHN0 cmVhbS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1sc3RyZWFtLmNw cAoraW5kZXggYjJmODQ2NTQ0ZC4uN2NkNDU3YmEzYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Y29yZWxpYi9zZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvc2VyaWFsaXphdGlvbi9xeG1sc3RyZWFtLmNwcAorQEAgLTk4MCw3ICs5ODAsNyBAQCBp bmxpbmUgdWludCBRWG1sU3RyZWFtUmVhZGVyUHJpdmF0ZTo6cGVla0NoYXIoKQorIGJvb2wgUVht bFN0cmVhbVJlYWRlclByaXZhdGU6OnNjYW5VbnRpbChjb25zdCBjaGFyICpzdHIsIHNob3J0IHRv a2VuVG9JbmplY3QpCisgeworICAgICBpbnQgcG9zID0gdGV4dEJ1ZmZlci5zaXplKCk7CistICAg IGludCBvbGRMaW5lTnVtYmVyID0gbGluZU51bWJlcjsKKysgICAgY29uc3QgYXV0byBvbGRMaW5l TnVtYmVyID0gbGluZU51bWJlcjsKKyAKKyAgICAgdWludCBjOworICAgICB3aGlsZSAoKGMgPSBn ZXRDaGFyKCkpICE9IFN0cmVhbUVPRikgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxp Yi90ZXh0L3FzdHJpbmcuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZy5jcHAK K2luZGV4IDNlODhhYjQ4NTkuLjhkZWVhZTQ3YmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGV4dC9xc3RyaW5nLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0 cmluZy5jcHAKK0BAIC0xMjMxMiw3ICsxMjMxMiw3IEBAIHN0YXRpYyBxc2l6ZXR5cGUgcUxhc3RJ bmRleE9mKEhheXN0YWNrIGhheXN0YWNrMCwgcXNpemV0eXBlIGZyb20sCisgICAgIGNvbnN0IGF1 dG8gbmVlZGxlID0gbmVlZGxlMC5kYXRhKCk7CisgICAgIGNvbnN0IGF1dG8gKmVuZCA9IGhheXN0 YWNrOworICAgICBoYXlzdGFjayArPSBmcm9tOworLSAgICBjb25zdCBzdGQ6OnNpemVfdCBzbF9t aW51c18xID0gc2wgLSAxOworKyAgICBjb25zdCBzdGQ6OnNpemVfdCBzbF9taW51c18xID0gc2wg PyBzbCAtIDEgOiAwOworICAgICBjb25zdCBhdXRvICpuID0gbmVlZGxlICsgc2xfbWludXNfMTsK KyAgICAgY29uc3QgYXV0byAqaCA9IGhheXN0YWNrICsgc2xfbWludXNfMTsKKyAgICAgc3RkOjpz aXplX3QgaGFzaE5lZWRsZSA9IDAsIGhhc2hIYXlzdGFjayA9IDA7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZ2l0ZXJhdG9yX3AuaCBiL3F0YmFzZS9zcmMvY29y ZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRvcl9wLmgKK2luZGV4IDIxOTU4OWI2ZTQuLjFkMGM2NmNj NzggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5naXRlcmF0b3Jf cC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5naXRlcmF0b3JfcC5oCitA QCAtNjEsNiArNjEsOCBAQCBjbGFzcyBRU3RyaW5nSXRlcmF0b3IKKyB7CisgICAgIFFTdHJpbmc6 OmNvbnN0X2l0ZXJhdG9yIGksIHBvcywgZTsKKyAgICAgUV9TVEFUSUNfQVNTRVJUKChzdGQ6Omlz X3NhbWU8UVN0cmluZzo6Y29uc3RfaXRlcmF0b3IsIGNvbnN0IFFDaGFyICo+Ojp2YWx1ZSkpOwor KyAgICBzdGF0aWMgYm9vbCBsZXNzKGNvbnN0IFFDaGFyICpsaHMsIGNvbnN0IFFDaGFyICpyaHMp IG5vZXhjZXB0CisrICAgIHsgcmV0dXJuIHN0ZDo6bGVzczxRU3RyaW5nOjpjb25zdF9pdGVyYXRv cj57fShsaHMsIHJocyk7IH0KKyBwdWJsaWM6CisgICAgIGV4cGxpY2l0IFFTdHJpbmdJdGVyYXRv cihRU3RyaW5nVmlldyBzdHJpbmcsIHFzaXpldHlwZSBpZHggPSAwKQorICAgICAgICAgOiBpKHN0 cmluZy5iZWdpbigpKSwKK0BAIC05NSw3ICs5Nyw4IEBAIHB1YmxpYzoKKyAKKyAgICAgaW5saW5l IHZvaWQgc2V0UG9zaXRpb24oUVN0cmluZzo6Y29uc3RfaXRlcmF0b3IgcG9zaXRpb24pCisgICAg IHsKKy0gICAgICAgIFFfQVNTRVJUX1goaSA8PSBwb3NpdGlvbiAmJiBwb3NpdGlvbiA8PSBlLCBR X0ZVTkNfSU5GTywgInBvc2l0aW9uIG91dCBvZiBib3VuZHMiKTsKKysgICAgICAgIFFfQVNTRVJU X1goIWxlc3MocG9zaXRpb24sIGkpICYmICFsZXNzKGUsIHBvc2l0aW9uKSwKKysgICAgICAgICAg ICAgICAgICAgUV9GVU5DX0lORk8sICJwb3NpdGlvbiBvdXQgb2YgYm91bmRzIik7CisgICAgICAg ICBwb3MgPSBwb3NpdGlvbjsKKyAgICAgfQorIAorQEAgLTEwMyw3ICsxMDYsNyBAQCBwdWJsaWM6 CisgCisgICAgIGlubGluZSBib29sIGhhc05leHQoKSBjb25zdAorICAgICB7CistICAgICAgICBy ZXR1cm4gcG9zIDwgZTsKKysgICAgICAgIHJldHVybiBsZXNzKHBvcywgZSk7CisgICAgIH0KKyAK KyAgICAgaW5saW5lIHZvaWQgYWR2YW5jZSgpCitAQCAtMTIwLDE2ICsxMjMsMjAgQEAgcHVibGlj OgorICAgICB7CisgICAgICAgICBRX0FTU0VSVF9YKGhhc05leHQoKSwgUV9GVU5DX0lORk8sICJp dGVyYXRvciBoYXNuJ3QgYSBuZXh0IGl0ZW0iKTsKKyAKKy0gICAgICAgIGlmIChRX1VOTElLRUxZ KChwb3MrKyktPmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKChw b3MrKyktPmlzSGlnaFN1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGhhc05l eHQoKSAmJiBwb3MtPmlzTG93U3Vycm9nYXRlKCkpOworICAgICAgICAgICAgICsrcG9zOworKyAg ICAgICAgfQorICAgICB9CisgCisgICAgIGlubGluZSB1aW50IHBlZWtOZXh0VW5jaGVja2VkKCkg Y29uc3QKKyAgICAgeworICAgICAgICAgUV9BU1NFUlRfWChoYXNOZXh0KCksIFFfRlVOQ19JTkZP LCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4dCBpdGVtIik7CisgCistICAgICAgICBpZiAoUV9VTkxJ S0VMWShwb3MtPmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKHBv cy0+aXNIaWdoU3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQobGVzcyhwb3Mg KyAxLCBlKSAmJiBwb3NbMV0uaXNMb3dTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgcmV0dXJu IFFDaGFyOjpzdXJyb2dhdGVUb1VjczQocG9zWzBdLCBwb3NbMV0pOworKyAgICAgICAgfQorIAor ICAgICAgICAgcmV0dXJuIHBvcy0+dW5pY29kZSgpOworICAgICB9CitAQCAtMTU1LDggKzE2Miwx MCBAQCBwdWJsaWM6CisgICAgICAgICBRX0FTU0VSVF9YKGhhc05leHQoKSwgUV9GVU5DX0lORk8s ICJpdGVyYXRvciBoYXNuJ3QgYSBuZXh0IGl0ZW0iKTsKKyAKKyAgICAgICAgIGNvbnN0IFFDaGFy IGN1ciA9ICpwb3MrKzsKKy0gICAgICAgIGlmIChRX1VOTElLRUxZKGN1ci5pc0hpZ2hTdXJyb2dh dGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWShjdXIuaXNIaWdoU3Vycm9nYXRlKCkpKSB7 CisrICAgICAgICAgICAgUV9BU1NFUlQoaGFzTmV4dCgpICYmIHBvcy0+aXNMb3dTdXJyb2dhdGUo KSk7CisgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQoY3VyLCAqcG9z KyspOworKyAgICAgICAgfQorICAgICAgICAgcmV0dXJuIGN1ci51bmljb2RlKCk7CisgICAgIH0K KyAKK0BAIC0xNjYsNyArMTc1LDcgQEAgcHVibGljOgorIAorICAgICAgICAgY29uc3QgUUNoYXIg dWMgPSAqcG9zKys7CisgICAgICAgICBpZiAoUV9VTkxJS0VMWSh1Yy5pc1N1cnJvZ2F0ZSgpKSkg eworLSAgICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5pc0hpZ2hTdXJyb2dhdGUoKSAmJiBwb3Mg PCBlICYmIHBvcy0+aXNMb3dTdXJyb2dhdGUoKSkpCisrICAgICAgICAgICAgaWYgKFFfTElLRUxZ KHVjLmlzSGlnaFN1cnJvZ2F0ZSgpICYmIGhhc05leHQoKSAmJiBwb3MtPmlzTG93U3Vycm9nYXRl KCkpKQorICAgICAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNCh1Yywg KnBvcysrKTsKKyAgICAgICAgICAgICByZXR1cm4gaW52YWxpZEFzOworICAgICAgICAgfQorQEAg LTE3OCw3ICsxODcsNyBAQCBwdWJsaWM6CisgCisgICAgIGlubGluZSBib29sIGhhc1ByZXZpb3Vz KCkgY29uc3QKKyAgICAgeworLSAgICAgICAgcmV0dXJuIHBvcyA+IGk7CisrICAgICAgICByZXR1 cm4gbGVzcyhpLCBwb3MpOworICAgICB9CisgCisgICAgIGlubGluZSB2b2lkIHJlY2VkZSgpCitA QCAtMTk2LDE2ICsyMDUsMjAgQEAgcHVibGljOgorICAgICB7CisgICAgICAgICBRX0FTU0VSVF9Y KGhhc1ByZXZpb3VzKCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgcHJldmlvdXMg aXRlbSIpOworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkoKC0tcG9zKS0+aXNMb3dTdXJyb2dh dGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWSgoLS1wb3MpLT5pc0xvd1N1cnJvZ2F0ZSgp KSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGhhc1ByZXZpb3VzKCkgJiYgcG9zWy0xXS5pc0hp Z2hTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgLS1wb3M7CisrICAgICAgICB9CisgICAgIH0K KyAKKyAgICAgaW5saW5lIHVpbnQgcGVla1ByZXZpb3VzVW5jaGVja2VkKCkgY29uc3QKKyAgICAg eworICAgICAgICAgUV9BU1NFUlRfWChoYXNQcmV2aW91cygpLCBRX0ZVTkNfSU5GTywgIml0ZXJh dG9yIGhhc24ndCBhIHByZXZpb3VzIGl0ZW0iKTsKKyAKKy0gICAgICAgIGlmIChRX1VOTElLRUxZ KHBvc1stMV0uaXNMb3dTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWShwb3Nb LTFdLmlzTG93U3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQobGVzcyhpICsg MSwgcG9zKSAmJiBwb3NbLTJdLmlzSGlnaFN1cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICByZXR1 cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNChwb3NbLTJdLCBwb3NbLTFdKTsKKysgICAgICAgIH0K KyAgICAgICAgIHJldHVybiBwb3NbLTFdLnVuaWNvZGUoKTsKKyAgICAgfQorIAorQEAgLTIzMCw4 ICsyNDMsMTAgQEAgcHVibGljOgorICAgICAgICAgUV9BU1NFUlRfWChoYXNQcmV2aW91cygpLCBR X0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIHByZXZpb3VzIGl0ZW0iKTsKKyAKKyAgICAg ICAgIGNvbnN0IFFDaGFyIGN1ciA9ICotLXBvczsKKy0gICAgICAgIGlmIChRX1VOTElLRUxZKGN1 ci5pc0xvd1N1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKGN1ci5pc0xvd1N1 cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGhhc1ByZXZpb3VzKCkgJiYgcG9z Wy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJy b2dhdGVUb1VjczQoKi0tcG9zLCBjdXIpOworKyAgICAgICAgfQorICAgICAgICAgcmV0dXJuIGN1 ci51bmljb2RlKCk7CisgICAgIH0KKyAKK0BAIC0yNDEsNyArMjU2LDcgQEAgcHVibGljOgorIAor ICAgICAgICAgY29uc3QgUUNoYXIgdWMgPSAqLS1wb3M7CisgICAgICAgICBpZiAoUV9VTkxJS0VM WSh1Yy5pc1N1cnJvZ2F0ZSgpKSkgeworLSAgICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5pc0xv d1N1cnJvZ2F0ZSgpICYmIHBvcyA+IGkgJiYgcG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSkpCisr ICAgICAgICAgICAgaWYgKFFfTElLRUxZKHVjLmlzTG93U3Vycm9nYXRlKCkgJiYgaGFzUHJldmlv dXMoKSAmJiBwb3NbLTFdLmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKyAgICAgICAgICAgICAgICAgcmV0 dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQoKi0tcG9zLCB1Yyk7CisgICAgICAgICAgICAgcmV0 dXJuIGludmFsaWRBczsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3FmdXRleF9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9w LmgKK2luZGV4IGYyODdiNzUyZDcuLmUyOTQ1Mzc3ODcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJl YWQvcWZ1dGV4X3AuaAorQEAgLTUyLDYgKzUyLDcgQEAKKyAvLworIAorICNpbmNsdWRlIDxxZ2xv YmFsLmg+CisrI2luY2x1ZGUgPFF0Q29yZS9xdHNhbl9pbXBsLmg+CisgCisgUVRfQkVHSU5fTkFN RVNQQUNFCisgCitAQCAtMTA2LDE2ICsxMDcsMTMgQEAgbmFtZXNwYWNlIFF0TGludXhGdXRleCB7 CisgICAgIGlubGluZSBpbnQgX3FfZnV0ZXgoaW50ICphZGRyLCBpbnQgb3AsIGludCB2YWwsIHF1 aW50cHRyIHZhbDIgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqYWRkcjIgPSBu dWxscHRyLCBpbnQgdmFsMyA9IDApIG5vZXhjZXB0CisgICAgIHsKKy0gICAgICAgIC8vIEEgZnV0 ZXggY2FsbCBlbnN1cmVzIHRvdGFsIG9yZGVyaW5nIG9uIHRoZSBmdXRleCB3b3JkcworLSAgICAg ICAgLy8gKGluIGVpdGhlciBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIGNhbGwpLiBJbnN0cnVj dCBUU0FOIGFjY29yZGluZ2x5LAorLSAgICAgICAgLy8gYXMgVFNBTiBkb2VzIG5vdCB1bmRlcnN0 YW5kIHRoZSBmdXRleCgyKSBzeXNjYWxsLgorLSAgICAgICAgX3FfdHNhbl9yZWxlYXNlKGFkZHIs IGFkZHIyKTsKKysgICAgICAgIFF0VHNhbjo6ZnV0ZXhSZWxlYXNlKGFkZHIsIGFkZHIyKTsKKyAK KyAgICAgICAgIC8vIHdlIHVzZSBfX05SX2Z1dGV4IGJlY2F1c2Ugc29tZSBsaWJjcyAobGlrZSBB bmRyb2lkJ3MgYmlvbmljKSBkb24ndAorICAgICAgICAgLy8gcHJvdmlkZSBTWVNfZnV0ZXggZXRj LgorICAgICAgICAgaW50IHJlc3VsdCA9IHN5c2NhbGwoX19OUl9mdXRleCwgYWRkciwgb3AgfCBG VVRFWF9QUklWQVRFX0ZMQUcsIHZhbCwgdmFsMiwgYWRkcjIsIHZhbDMpOworIAorLSAgICAgICAg X3FfdHNhbl9hY3F1aXJlKGFkZHIsIGFkZHIyKTsKKysgICAgICAgIFF0VHNhbjo6ZnV0ZXhBY3F1 aXJlKGFkZHIsIGFkZHIyKTsKKyAKKyAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgIH0KK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5jcHAgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5jcHAKK2luZGV4IDMxMGQxY2IxNGYuLjcwOTcxMjJk OGUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5jcHAKKysr KyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmNwcAorQEAgLTE1Miw2ICsxNTIs NyBAQCBwdWJsaWM6CisgCisgLyohCisgICAgIFxlbnVtIFFNdXRleDo6UmVjdXJzaW9uTW9kZQor KyAgICBcb2Jzb2xldGUgVXNlIFFSZWN1cnNpdmVNdXRleCB0byBjcmVhdGUgYSByZWN1cnNpdmUg bXV0ZXguCisgCisgICAgIFx2YWx1ZSBSZWN1cnNpdmUgIEluIHRoaXMgbW9kZSwgYSB0aHJlYWQg Y2FuIGxvY2sgdGhlIHNhbWUgbXV0ZXgKKyAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUg dGltZXMgYW5kIHRoZSBtdXRleCB3b24ndCBiZSB1bmxvY2tlZAorQEAgLTE3Myw2ICsxNzQsNyBA QCBwdWJsaWM6CisgCisgLyohCisgICAgIENvbnN0cnVjdHMgYSBuZXcgbXV0ZXguIFRoZSBtdXRl eCBpcyBjcmVhdGVkIGluIGFuIHVubG9ja2VkIHN0YXRlLgorKyAgICBcb2Jzb2xldGUgVXNlIFFS ZWN1cnNpdmVNdXRleCB0byBjcmVhdGUgYSByZWN1cnNpdmUgbXV0ZXguCisgCisgICAgIElmIFxh IG1vZGUgaXMgUU11dGV4OjpSZWN1cnNpdmUsIGEgdGhyZWFkIGNhbiBsb2NrIHRoZSBzYW1lIG11 dGV4CisgICAgIG11bHRpcGxlIHRpbWVzIGFuZCB0aGUgbXV0ZXggd29uJ3QgYmUgdW5sb2NrZWQg dW50aWwgYQorQEAgLTE5Nyw3ICsxOTksNyBAQCBRTXV0ZXg6OlFNdXRleChSZWN1cnNpb25Nb2Rl IG1vZGUpCisgUU11dGV4Ojp+UU11dGV4KCkKKyB7CisgICAgIFFNdXRleERhdGEgKmQgPSBkX3B0 ci5sb2FkUmVsYXhlZCgpOworLSAgICBpZiAoaXNSZWN1cnNpdmUoKSkgeworKyAgICBpZiAoUUJh c2ljTXV0ZXg6OmlzUmVjdXJzaXZlKCkpIHsKKyAgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxR UmVjdXJzaXZlTXV0ZXhQcml2YXRlICo+KGQpOworICAgICB9IGVsc2UgaWYgKGQpIHsKKyAjaWZu ZGVmIFFUX0xJTlVYX0ZVVEVYCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVh ZC9xbXV0ZXguaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmgKK2luZGV4IDcz YzllMDA2NjMuLjFiYWU1NzNhMDMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhy ZWFkL3FtdXRleC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5oCitA QCAtNDIsNiArNDIsNyBAQAorIAorICNpbmNsdWRlIDxRdENvcmUvcWdsb2JhbC5oPgorICNpbmNs dWRlIDxRdENvcmUvcWF0b21pYy5oPgorKyNpbmNsdWRlIDxRdENvcmUvcXRzYW5faW1wbC5oPgor ICNpbmNsdWRlIDxuZXc+CisgCisgI2lmIF9faGFzX2luY2x1ZGUoPGNocm9ubz4pCitAQCAtNzcs MTkgKzc4LDM3IEBAIHB1YmxpYzoKKyAKKyAgICAgLy8gQmFzaWNMb2NrYWJsZSBjb25jZXB0Cisg ICAgIGlubGluZSB2b2lkIGxvY2soKSBRVF9NVVRFWF9MT0NLX05PRVhDRVBUIHsKKysgICAgICAg IFF0VHNhbjo6bXV0ZXhQcmVMb2NrKHRoaXMsIDB1KTsKKysKKyAgICAgICAgIGlmICghZmFzdFRy eUxvY2soKSkKKyAgICAgICAgICAgICBsb2NrSW50ZXJuYWwoKTsKKysKKysgICAgICAgIFF0VHNh bjo6bXV0ZXhQb3N0TG9jayh0aGlzLCAwdSwgMCk7CisgICAgIH0KKyAKKyAgICAgLy8gQmFzaWNM b2NrYWJsZSBjb25jZXB0CisgICAgIGlubGluZSB2b2lkIHVubG9jaygpIG5vZXhjZXB0IHsKKyAg ICAgICAgIFFfQVNTRVJUKGRfcHRyLmxvYWRSZWxheGVkKCkpOyAvL211dGV4IG11c3QgYmUgbG9j a2VkCisrCisrICAgICAgICBRdFRzYW46Om11dGV4UHJlVW5sb2NrKHRoaXMsIDB1KTsKKysKKyAg ICAgICAgIGlmICghZmFzdFRyeVVubG9jaygpKQorICAgICAgICAgICAgIHVubG9ja0ludGVybmFs KCk7CisrCisrICAgICAgICBRdFRzYW46Om11dGV4UG9zdFVubG9jayh0aGlzLCAwdSk7CisgICAg IH0KKyAKKyAgICAgYm9vbCB0cnlMb2NrKCkgbm9leGNlcHQgeworLSAgICAgICAgcmV0dXJuIGZh c3RUcnlMb2NrKCk7CisrICAgICAgICB1bnNpZ25lZCB0c2FuRmxhZ3MgPSBRdFRzYW46OlRyeUxv Y2s7CisrICAgICAgICBRdFRzYW46Om11dGV4UHJlTG9jayh0aGlzLCB0c2FuRmxhZ3MpOworKwor KyAgICAgICAgY29uc3QgYm9vbCBzdWNjZXNzID0gZmFzdFRyeUxvY2soKTsKKysKKysgICAgICAg IGlmICghc3VjY2VzcykKKysgICAgICAgICAgICB0c2FuRmxhZ3MgfD0gUXRUc2FuOjpUcnlMb2Nr RmFpbGVkOworKyAgICAgICAgUXRUc2FuOjptdXRleFBvc3RMb2NrKHRoaXMsIHRzYW5GbGFncywg MCk7CisrCisrICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICAgfQorIAorICAgICAvLyBMb2Nr YWJsZSBjb25jZXB0CitAQCAtMTM0LDggKzE1MywxNiBAQCBwdWJsaWM6CisgI2Vsc2UKKyAgICAg UU11dGV4KCkgeyBkX3B0ci5zdG9yZVJlbGF4ZWQobnVsbHB0cik7IH0KKyAjZW5kaWYKKysjaWYg UVRfREVQUkVDQVRFRF9TSU5DRSg1LDE1KQorICAgICBlbnVtIFJlY3Vyc2lvbk1vZGUgeyBOb25S ZWN1cnNpdmUsIFJlY3Vyc2l2ZSB9OworKyAgICBRVF9ERVBSRUNBVEVEX1ZFUlNJT05fWCg1LCAx NSwgIlVzZSBRUmVjdXJzaXZlTXV0ZXggaW5zdGVhZCBvZiBhIHJlY3Vyc2l2ZSBRTXV0ZXgiKQor ICAgICBleHBsaWNpdCBRTXV0ZXgoUmVjdXJzaW9uTW9kZSBtb2RlKTsKKysKKysgICAgUVRfREVQ UkVDQVRFRF9WRVJTSU9OX1goNSwgMTUsICJVc2UgUVJlY3Vyc2l2ZU11dGV4IGluc3RlYWQgb2Yg YSByZWN1cnNpdmUgUU11dGV4IikKKysgICAgYm9vbCBpc1JlY3Vyc2l2ZSgpIGNvbnN0IG5vZXhj ZXB0CisrICAgIHsgcmV0dXJuIFFCYXNpY011dGV4Ojppc1JlY3Vyc2l2ZSgpOyB9CisrI2VuZGlm CisrCisgICAgIH5RTXV0ZXgoKTsKKyAKKyAgICAgLy8gQmFzaWNMb2NrYWJsZSBjb25jZXB0CitA QCAtMTY2LDkgKzE5Myw2IEBAIHB1YmxpYzoKKyAgICAgfQorICNlbmRpZgorIAorLSAgICBib29s IGlzUmVjdXJzaXZlKCkgY29uc3Qgbm9leGNlcHQKKy0gICAgeyByZXR1cm4gUUJhc2ljTXV0ZXg6 OmlzUmVjdXJzaXZlKCk7IH0KKy0KKyBwcml2YXRlOgorICAgICBRX0RJU0FCTEVfQ09QWShRTXV0 ZXgpCisgICAgIGZyaWVuZCBjbGFzcyBRTXV0ZXhMb2NrZXI7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb3JlbGliL3RocmVhZC9xcmVhZHdyaXRlbG9jay5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcAoraW5kZXggOGMyODUwN2Q1YS4uOWRkODUwMzEx NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXJlYWR3cml0ZWxvY2su Y3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcAor QEAgLTE1NSw3ICsxNTUsNyBAQCBRUmVhZFdyaXRlTG9jazo6UVJlYWRXcml0ZUxvY2soUmVjdXJz aW9uTW9kZSByZWN1cnNpb25Nb2RlKQorICovCisgUVJlYWRXcml0ZUxvY2s6On5RUmVhZFdyaXRl TG9jaygpCisgeworLSAgICBhdXRvIGQgPSBkX3B0ci5sb2FkUmVsYXhlZCgpOworKyAgICBhdXRv IGQgPSBkX3B0ci5sb2FkQWNxdWlyZSgpOworICAgICBpZiAoaXNVbmNvbnRlbmRlZExvY2tlZChk KSkgeworICAgICAgICAgcVdhcm5pbmcoIlFSZWFkV3JpdGVMb2NrOiBkZXN0cm95aW5nIGxvY2tl ZCBRUmVhZFdyaXRlTG9jayIpOworICAgICAgICAgcmV0dXJuOworQEAgLTQ0NSw3ICs0NDUsNyBA QCB2b2lkIFFSZWFkV3JpdGVMb2NrOjp1bmxvY2soKQorIC8qISBcaW50ZXJuYWwgIEhlbHBlciBm b3IgUVdhaXRDb25kaXRpb246OndhaXQgKi8KKyBRUmVhZFdyaXRlTG9jazo6U3RhdGVGb3JXYWl0 Q29uZGl0aW9uIFFSZWFkV3JpdGVMb2NrOjpzdGF0ZUZvcldhaXRDb25kaXRpb24oKSBjb25zdAor IHsKKy0gICAgUVJlYWRXcml0ZUxvY2tQcml2YXRlICpkID0gZF9wdHIubG9hZFJlbGF4ZWQoKTsK KysgICAgUVJlYWRXcml0ZUxvY2tQcml2YXRlICpkID0gZF9wdHIubG9hZEFjcXVpcmUoKTsKKyAg ICAgc3dpdGNoIChxdWludHB0cihkKSAmIFN0YXRlTWFzaykgeworICAgICBjYXNlIFN0YXRlTG9j a2VkRm9yUmVhZDogcmV0dXJuIExvY2tlZEZvclJlYWQ7CisgICAgIGNhc2UgU3RhdGVMb2NrZWRG b3JXcml0ZTogcmV0dXJuIExvY2tlZEZvcldyaXRlOworQEAgLTQ1Myw2ICs0NTMsNyBAQCBRUmVh ZFdyaXRlTG9jazo6U3RhdGVGb3JXYWl0Q29uZGl0aW9uIFFSZWFkV3JpdGVMb2NrOjpzdGF0ZUZv cldhaXRDb25kaXRpb24oKSBjbworIAorICAgICBpZiAoIWQpCisgICAgICAgICByZXR1cm4gVW5s b2NrZWQ7CisrICAgIGNvbnN0IGF1dG8gbG9jayA9IHF0X3Njb3BlZF9sb2NrKGQtPm11dGV4KTsK KyAgICAgaWYgKGQtPndyaXRlckNvdW50ID4gMSkKKyAgICAgICAgIHJldHVybiBSZWN1cnNpdmVs eUxvY2tlZDsKKyAgICAgZWxzZSBpZiAoZC0+d3JpdGVyQ291bnQgPT0gMSkKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FzZW1hcGhvcmUuY3BwIGIvcXRiYXNlL3NyYy9j b3JlbGliL3RocmVhZC9xc2VtYXBob3JlLmNwcAoraW5kZXggMWQwMWZjMWIyOC4uM2VjZGVlMzc0 NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXNlbWFwaG9yZS5jcHAK KysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXNlbWFwaG9yZS5jcHAKK0BAIC0zNTQs NyArMzU0LDEyIEBAIHZvaWQgUVNlbWFwaG9yZTo6cmVsZWFzZShpbnQgbikKKyAgICAgICAgIHF1 aW50cHRyIG5uID0gdW5zaWduZWQobik7CisgICAgICAgICBpZiAoZnV0ZXhIYXNXYWl0ZXJDb3Vu dCkKKyAgICAgICAgICAgICBubiB8PSBxdWludDY0KG5uKSA8PCAzMjsgICAgLy8gdG9rZW4gY291 bnQgcmVwbGljYXRlZCBpbiBoaWdoIHdvcmQKKy0gICAgICAgIHF1aW50cHRyIHByZXZWYWx1ZSA9 IHUuZmV0Y2hBbmRBZGRSZWxlYXNlKG5uKTsKKysgICAgICAgIHF1aW50cHRyIHByZXZWYWx1ZSA9 IHUubG9hZFJlbGF4ZWQoKTsKKysgICAgICAgIHF1aW50cHRyIG5ld1ZhbHVlOworKyAgICAgICAg ZG8geyAvLyBsb29wIGp1c3QgdG8gZW5zdXJlIHRoZSBvcGVyYXRpb25zIGFyZSBkb25lIGF0b21p Y2FsbHkKKysgICAgICAgICAgICBuZXdWYWx1ZSA9IHByZXZWYWx1ZSArIG5uOworKyAgICAgICAg ICAgIG5ld1ZhbHVlICY9IChmdXRleE5lZWRzV2FrZUFsbEJpdCAtIDEpOworKyAgICAgICAgfSB3 aGlsZSAoIXUudGVzdEFuZFNldFJlbGVhc2UocHJldlZhbHVlLCBuZXdWYWx1ZSwgcHJldlZhbHVl KSk7CisgICAgICAgICBpZiAoZnV0ZXhOZWVkc1dha2UocHJldlZhbHVlKSkgeworICNpZmRlZiBG VVRFWF9PUAorICAgICAgICAgICAgIGlmIChmdXRleEhhc1dhaXRlckNvdW50KSB7CitAQCAtMzc2 LDcgKzM4MSw2IEBAIHZvaWQgUVNlbWFwaG9yZTo6cmVsZWFzZShpbnQgbikKKyAgICAgICAgICAg ICAgICAgcXVpbnQzMiBvcGFyZyA9IDA7CisgICAgICAgICAgICAgICAgIHF1aW50MzIgY21wID0g RlVURVhfT1BfQ01QX05FOworICAgICAgICAgICAgICAgICBxdWludDMyIGNtcGFyZyA9IDA7Cist ICAgICAgICAgICAgICAgIHUuZmV0Y2hBbmRBbmRSZWxlYXNlKGZ1dGV4TmVlZHNXYWtlQWxsQml0 IC0gMSk7CisgICAgICAgICAgICAgICAgIGZ1dGV4V2FrZU9wKCpmdXRleExvdzMyKCZ1KSwgbiwg SU5UX01BWCwgKmZ1dGV4SGlnaDMyKCZ1KSwgRlVURVhfT1Aob3AsIG9wYXJnLCBjbXAsIGNtcGFy ZykpOworICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgfQorQEAgLTM4OCw3 ICszOTIsNiBAQCB2b2lkIFFTZW1hcGhvcmU6OnJlbGVhc2UoaW50IG4pCisgICAgICAgICAgICAg Ly8gICAgaXRzIGFjcXVpc2l0aW9uIGFueXdheSwgc28gaXQgaGFzIHRvIHdhaXQ7CisgICAgICAg ICAgICAgLy8gMikgaXQgZGlkIG5vdCBzZWUgdGhlIG5ldyBjb3VudGVyIHZhbHVlLCBpbiB3aGlj aCBjYXNlIGl0cworICAgICAgICAgICAgIC8vICAgIGZ1dGV4V2FpdCB3aWxsIGZhaWwuCistICAg ICAgICAgICAgdS5mZXRjaEFuZEFuZFJlbGVhc2UoZnV0ZXhOZWVkc1dha2VBbGxCaXQgLSAxKTsK KyAgICAgICAgICAgICBpZiAoZnV0ZXhIYXNXYWl0ZXJDb3VudCkgeworICAgICAgICAgICAgICAg ICBmdXRleFdha2VBbGwoKmZ1dGV4TG93MzIoJnUpKTsKKyAgICAgICAgICAgICAgICAgZnV0ZXhX YWtlQWxsKCpmdXRleEhpZ2gzMigmdSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxp Yi90aHJlYWQvcXRocmVhZF9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRf cC5oCitpbmRleCBiMmQxNjI4ZTZlLi5mMzJmNmYwNDYwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Ro cmVhZC9xdGhyZWFkX3AuaAorQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6CisgICAgIGludCBy ZXR1cm5Db2RlOworIAorICAgICB1aW50IHN0YWNrU2l6ZTsKKy0gICAgUVRocmVhZDo6UHJpb3Jp dHkgcHJpb3JpdHk7CisrICAgIHN0ZDo6dW5kZXJseWluZ190eXBlPFFUaHJlYWQ6OlByaW9yaXR5 Pjo6dHlwZSBwcmlvcml0eTsKKyAKKyAgICAgc3RhdGljIFFUaHJlYWQgKnRocmVhZEZvcklkKGlu dCBpZCk7CisgCitAQCAtMjEzLDYgKzIxMywxMyBAQCBwdWJsaWM6CisgICAgICAgICAgICAgUUNv cmVBcHBsaWNhdGlvbjo6aW5zdGFuY2UoKS0+cG9zdEV2ZW50KHFfcHRyLCBuZXcgUUV2ZW50KFFF dmVudDo6UXVpdCkpOworICAgICAgICAgfQorICAgICB9CisrCisrI2lmbmRlZiBRX09TX0lOVEVH UklUWQorK3ByaXZhdGU6CisrICAgIC8vIFVzZWQgaW4gUVRocmVhZChQcml2YXRlKTo6c3RhcnQg dG8gYXZvaWQgcmFjeSBhY2Nlc3MgdG8gUU9iamVjdDo6b2JqZWN0TmFtZSwKKysgICAgLy8gdW5z ZXQgYWZ0ZXJ3YXJkcy4gT24gSU5URUdSSVRZIHdlIHNldCB0aGUgdGhyZWFkIG5hbWUgYmVmb3Jl IHN0YXJ0aW5nIGl0LgorKyAgICBRU3RyaW5nIG9iamVjdE5hbWU7CisrI2VuZGlmCisgfTsKKyAK KyAjZWxzZSAvLyBRVF9DT05GSUcodGhyZWFkKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29y ZWxpYi90aHJlYWQvcXRocmVhZF91bml4LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQv cXRocmVhZF91bml4LmNwcAoraW5kZXggNTZhOGUwYTAzOC4uNjEwMTE3YTY0MCAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF91bml4LmNwcAorKysrIGIvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3VuaXguY3BwCitAQCAtMTY5LDggKzE2OSw3 IEBAIHN0YXRpYyB2b2lkIHNldF90aHJlYWRfZGF0YShRVGhyZWFkRGF0YSAqZGF0YSkKKyAKKyBz dGF0aWMgdm9pZCBjbGVhcl90aHJlYWRfZGF0YSgpCisgeworLSAgICBjdXJyZW50VGhyZWFkRGF0 YSA9IG51bGxwdHI7CistICAgIHB0aHJlYWRfc2V0c3BlY2lmaWMoY3VycmVudF90aHJlYWRfZGF0 YV9rZXksIG51bGxwdHIpOworKyAgICBzZXRfdGhyZWFkX2RhdGEobnVsbHB0cik7CisgfQorIAor IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorQEAgLTI5Niw3ICsyOTUsNyBAQCB2b2lkICpRVGhyZWFk UHJpdmF0ZTo6c3RhcnQodm9pZCAqYXJnKQorICAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2Nr ZXIoJnRoci0+ZF9mdW5jKCktPm11dGV4KTsKKyAKKyAgICAgICAgICAgICAvLyBkbyB3ZSBuZWVk IHRvIHJlc2V0IHRoZSB0aHJlYWQgcHJpb3JpdHk/CistICAgICAgICAgICAgaWYgKGludCh0aHIt PmRfZnVuYygpLT5wcmlvcml0eSkgJiBUaHJlYWRQcmlvcml0eVJlc2V0RmxhZykgeworKyAgICAg ICAgICAgIGlmICh0aHItPmRfZnVuYygpLT5wcmlvcml0eSAmIFRocmVhZFByaW9yaXR5UmVzZXRG bGFnKSB7CisgICAgICAgICAgICAgICAgIHRoci0+ZF9mdW5jKCktPnNldFByaW9yaXR5KFFUaHJl YWQ6OlByaW9yaXR5KHRoci0+ZF9mdW5jKCktPnByaW9yaXR5ICYgflRocmVhZFByaW9yaXR5UmVz ZXRGbGFnKSk7CisgICAgICAgICAgICAgfQorIAorQEAgLTMxNiwxMCArMzE1LDEwIEBAIHZvaWQg KlFUaHJlYWRQcml2YXRlOjpzdGFydCh2b2lkICphcmcpCisgICAgICAgICAgICAgLy8gU2V0cyB0 aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0aHJlYWQuIFdlIGNhbiBvbmx5IGRvIHRoaXMKKyAgICAg ICAgICAgICAvLyB3aGVuIHRoZSB0aHJlYWQgaXMgc3RhcnRpbmcsIGFzIHdlIGRvbid0IGhhdmUg YSBjcm9zcworICAgICAgICAgICAgIC8vIHBsYXRmb3JtIHdheSBvZiBzZXR0aW5nIHRoZSBuYW1l IG9mIGFuIGFyYml0cmFyeSB0aHJlYWQuCistICAgICAgICAgICAgaWYgKFFfTElLRUxZKHRoci0+ b2JqZWN0TmFtZSgpLmlzRW1wdHkoKSkpCisrICAgICAgICAgICAgaWYgKFFfTElLRUxZKHRoci0+ ZF9mdW5jKCktPm9iamVjdE5hbWUuaXNFbXB0eSgpKSkKKyAgICAgICAgICAgICAgICAgc2V0Q3Vy cmVudFRocmVhZE5hbWUodGhyLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpKTsKKyAgICAgICAg ICAgICBlbHNlCistICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUaHJlYWROYW1lKHRoci0+b2Jq ZWN0TmFtZSgpLnRvTG9jYWw4Qml0KCkpOworKyAgICAgICAgICAgICAgICBzZXRDdXJyZW50VGhy ZWFkTmFtZShzdGQ6OmV4Y2hhbmdlKHRoci0+ZF9mdW5jKCktPm9iamVjdE5hbWUsIHt9KS50b0xv Y2FsOEJpdCgpKTsKKyAgICAgICAgIH0KKyAjZW5kaWYKKyAKK0BAIC02NzEsNyArNjcwLDcgQEAg dm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAgICAgICAgICAgICAgICAg Ly8gY291bGQgbm90IHNldCBzY2hlZHVsaW5nIGhpbnRzLCBmYWxsYmFjayB0byBpbmhlcml0aW5n IHRoZW0KKyAgICAgICAgICAgICAgICAgLy8gd2UnbGwgdHJ5IGFnYWluIGZyb20gaW5zaWRlIHRo ZSB0aHJlYWQKKyAgICAgICAgICAgICAgICAgcHRocmVhZF9hdHRyX3NldGluaGVyaXRzY2hlZCgm YXR0ciwgUFRIUkVBRF9JTkhFUklUX1NDSEVEKTsKKy0gICAgICAgICAgICAgICAgZC0+cHJpb3Jp dHkgPSBQcmlvcml0eShwcmlvcml0eSB8IFRocmVhZFByaW9yaXR5UmVzZXRGbGFnKTsKKysgICAg ICAgICAgICAgICAgZC0+cHJpb3JpdHkgPSBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlw ZTxRVGhyZWFkOjpQcmlvcml0eT46OnR5cGU+KHByaW9yaXR5KSB8IFRocmVhZFByaW9yaXR5UmVz ZXRGbGFnOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0K K0BAIC03MDIsNyArNzAxLDEwIEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJpb3Jp dHkpCisgICAgICAgICBwdGhyZWFkX2F0dHJfc2V0dGhyZWFkbmFtZSgmYXR0ciwgbWV0YU9iamVj dCgpLT5jbGFzc05hbWUoKSk7CisgICAgIGVsc2UKKyAgICAgICAgIHB0aHJlYWRfYXR0cl9zZXR0 aHJlYWRuYW1lKCZhdHRyLCBvYmplY3ROYW1lKCkudG9Mb2NhbDhCaXQoKSk7CisrI2Vsc2UKKysg ICAgZC0+b2JqZWN0TmFtZSA9IG9iamVjdE5hbWUoKTsKKyAjZW5kaWYKKysKKyAgICAgcHRocmVh ZF90IHRocmVhZElkOworICAgICBpbnQgY29kZSA9IHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRJZCwg JmF0dHIsIFFUaHJlYWRQcml2YXRlOjpzdGFydCwgdGhpcyk7CisgICAgIGlmIChjb2RlID09IEVQ RVJNKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3dp bi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfd2luLmNwcAoraW5kZXgg YmM3MGUzMTc4YS4uNGU3Njk3MjQ5OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90 aHJlYWQvcXRocmVhZF93aW4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0 aHJlYWRfd2luLmNwcAorQEAgLTM5NCwxMCArMzk0LDkgQEAgdW5zaWduZWQgaW50IF9fc3RkY2Fs bCBRVF9FTlNVUkVfU1RBQ0tfQUxJR05FRF9GT1JfU1NFIFFUaHJlYWRQcml2YXRlOjpzdGFydCh2 b2kKKyAKKyAjaWYgIWRlZmluZWQoUVRfTk9fREVCVUcpICYmIGRlZmluZWQoUV9DQ19NU1ZDKSAm JiAhZGVmaW5lZChRX09TX1dJTlJUKQorICAgICAvLyBzZXRzIHRoZSBuYW1lIG9mIHRoZSBjdXJy ZW50IHRocmVhZC4KKy0gICAgUUJ5dGVBcnJheSBvYmplY3ROYW1lID0gdGhyLT5vYmplY3ROYW1l KCkudG9Mb2NhbDhCaXQoKTsKKy0gICAgcXRfc2V0X3RocmVhZF9uYW1lKEhBTkRMRSgtMSksCist ICAgICAgICAgICAgICAgICAgICAgICBvYmplY3ROYW1lLmlzRW1wdHkoKSA/CistICAgICAgICAg ICAgICAgICAgICAgICB0aHItPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkgOiBvYmplY3ROYW1l LmNvbnN0RGF0YSgpKTsKKysgICAgcXRfc2V0X3RocmVhZF9uYW1lKEhBTkRMRSgtMSksIHRoci0+ ZF9mdW5jKCktPm9iamVjdE5hbWUuaXNFbXB0eSgpCisrICAgICAgICAgICAgICAgICAgICAgICAg PyB0aHItPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAg ICA6IHN0ZDo6ZXhjaGFuZ2UodGhyLT5kX2Z1bmMoKS0+b2JqZWN0TmFtZSwge30pLnRvTG9jYWw4 Qml0KCkuY29uc3REYXRhKCkpOworICNlbmRpZgorIAorICAgICBlbWl0IHRoci0+c3RhcnRlZChR VGhyZWFkOjpRUHJpdmF0ZVNpZ25hbCgpKTsKK0BAIC01MDMsNiArNTAyLDcgQEAgdm9pZCBRVGhy ZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAgICAgaWYgKGQtPnJ1bm5pbmcpCisgICAg ICAgICByZXR1cm47CisgCisrICAgIGQtPm9iamVjdE5hbWUgPSBvYmplY3ROYW1lKCk7CisgICAg IGQtPnJ1bm5pbmcgPSB0cnVlOworICAgICBkLT5maW5pc2hlZCA9IGZhbHNlOworICAgICBkLT5l eGl0ZWQgPSBmYWxzZTsKK0BAIC01NDgsNyArNTQ4LDcgQEAgdm9pZCBRVGhyZWFkOjpzdGFydChQ cmlvcml0eSBwcmlvcml0eSkKKyAKKyAgICAgaW50IHByaW87CisgICAgIGQtPnByaW9yaXR5ID0g cHJpb3JpdHk7CistICAgIHN3aXRjaCAoZC0+cHJpb3JpdHkpIHsKKysgICAgc3dpdGNoIChwcmlv cml0eSkgeworICAgICBjYXNlIElkbGVQcmlvcml0eToKKyAgICAgICAgIHByaW8gPSBUSFJFQURf UFJJT1JJVFlfSURMRTsKKyAgICAgICAgIGJyZWFrOworQEAgLTY4Niw3ICs2ODYsNyBAQCB2b2lk IFFUaHJlYWRQcml2YXRlOjpzZXRQcmlvcml0eShRVGhyZWFkOjpQcmlvcml0eSB0aHJlYWRQcmlv cml0eSkKKyAKKyAgICAgaW50IHByaW87CisgICAgIHByaW9yaXR5ID0gdGhyZWFkUHJpb3JpdHk7 CistICAgIHN3aXRjaCAocHJpb3JpdHkpIHsKKysgICAgc3dpdGNoICh0aHJlYWRQcmlvcml0eSkg eworICAgICBjYXNlIFFUaHJlYWQ6OklkbGVQcmlvcml0eToKKyAgICAgICAgIHByaW8gPSBUSFJF QURfUFJJT1JJVFlfSURMRTsKKyAgICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvY29yZWxpYi90aHJlYWQvcXRzYW5faW1wbC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVh ZC9xdHNhbl9pbXBsLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi41 ODBhNzM4YjkxCistLS0gL2Rldi9udWxsCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFk L3F0c2FuX2ltcGwuaAorQEAgLTAsMCArMSwxMTUgQEAKKysvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor KyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uLgorKyoqIENvcHly aWdodCAoQykgMjAyMiBLbGFyw6RsdmRhbGVucyBEYXRha29uc3VsdCBBQiwgYSBLREFCIEdyb3Vw IGNvbXBhbnksIGluZm9Aa2RhYi5jb20sIGF1dGhvciBHaXVzZXBwZSBEJ0FuZ2VsbyA8Z2l1c2Vw cGUuZGFuZ2Vsb0BrZGFiLmNvbT4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNl bnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRDb3JlIG1vZHVsZSBv ZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwkCisrKiog Q29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29t bWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ug d2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQor KyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRl cm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5k IFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlvbnMg c2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisrKiog aW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29u dGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2Fn ZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24g MyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBh cHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUKKysqKiBw YWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3Jt YXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2Vk IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2 ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAorKyoqIFB1Ymxp YyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0aGUg S0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0 aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGluY2x1ZGVkIGluIHRo ZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKysq KiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJl cXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz L2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0z LjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisrCisrI2lmbmRlZiBRVFNBTl9JTVBMX0gKKysjZGVmaW5lIFFUU0FOX0lNUExfSAor KworKyNpbmNsdWRlIDxRdENvcmUvcWdsb2JhbC5oPgorKworKyNpZiAoX19oYXNfZmVhdHVyZSh0 aHJlYWRfc2FuaXRpemVyKSB8fCBkZWZpbmVkKF9fU0FOSVRJWkVfVEhSRUFEX18pKSAmJiBfX2hh c19pbmNsdWRlKDxzYW5pdGl6ZXIvdHNhbl9pbnRlcmZhY2UuaD4pCisrIyAgZGVmaW5lIFFUX0JV SUxESU5HX1VOREVSX1RTQU4KKysjICBpbmNsdWRlIDxzYW5pdGl6ZXIvdHNhbl9pbnRlcmZhY2Uu aD4KKysjZW5kaWYKKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKytuYW1lc3BhY2UgUXRUc2Fu IHsKKysjaWZkZWYgUVRfQlVJTERJTkdfVU5ERVJfVFNBTgorK2lubGluZSB2b2lkIGZ1dGV4QWNx dWlyZSh2b2lkICphZGRyLCB2b2lkICphZGRyMiA9IG51bGxwdHIpCisreworKyAgICAvLyBBIGZ1 dGV4IGNhbGwgZW5zdXJlcyB0b3RhbCBvcmRlcmluZyBvbiB0aGUgZnV0ZXggd29yZHMKKysgICAg Ly8gKGluIGVpdGhlciBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIGNhbGwpLiBJbnN0cnVjdCBU U0FOIGFjY29yZGluZ2x5LAorKyAgICAvLyBhcyBUU0FOIGRvZXMgbm90IHVuZGVyc3RhbmQgdGhl IGZ1dGV4KDIpIHN5c2NhbGwgKG9yIGVxdWl2YWxlbnQpLgorKyAgICA6Ol9fdHNhbl9hY3F1aXJl KGFkZHIpOworKyAgICBpZiAoYWRkcjIpCisrICAgICAgICA6Ol9fdHNhbl9hY3F1aXJlKGFkZHIy KTsKKyt9CisrCisraW5saW5lIHZvaWQgZnV0ZXhSZWxlYXNlKHZvaWQgKmFkZHIsIHZvaWQgKmFk ZHIyID0gbnVsbHB0cikKKyt7CisrICAgIGlmIChhZGRyMikKKysgICAgICAgIDo6X190c2FuX3Jl bGVhc2UoYWRkcjIpOworKyAgICA6Ol9fdHNhbl9yZWxlYXNlKGFkZHIpOworK30KKysKKytpbmxp bmUgdm9pZCBtdXRleFByZUxvY2sodm9pZCAqYWRkciwgdW5zaWduZWQgZmxhZ3MpCisreworKyAg ICA6Ol9fdHNhbl9tdXRleF9wcmVfbG9jayhhZGRyLCBmbGFncyk7CisrfQorKworK2lubGluZSB2 b2lkIG11dGV4UG9zdExvY2sodm9pZCAqYWRkciwgdW5zaWduZWQgZmxhZ3MsIGludCByZWN1cnNp b24pCisreworKyAgICA6Ol9fdHNhbl9tdXRleF9wb3N0X2xvY2soYWRkciwgZmxhZ3MsIHJlY3Vy c2lvbik7CisrfQorKworK2lubGluZSB2b2lkIG11dGV4UHJlVW5sb2NrKHZvaWQgKmFkZHIsIHVu c2lnbmVkIGZsYWdzKQorK3sKKysgICAgOjpfX3RzYW5fbXV0ZXhfcHJlX3VubG9jayhhZGRyLCBm bGFncyk7CisrfQorKworK2lubGluZSB2b2lkIG11dGV4UG9zdFVubG9jayh2b2lkICphZGRyLCB1 bnNpZ25lZCBmbGFncykKKyt7CisrICAgIDo6X190c2FuX211dGV4X3Bvc3RfdW5sb2NrKGFkZHIs IGZsYWdzKTsKKyt9CisrCisrZW51bSA6IHVuc2lnbmVkIHsKKysgICAgTXV0ZXhXcml0ZVJlZW50 cmFudCA9IDo6X190c2FuX211dGV4X3dyaXRlX3JlZW50cmFudCwKKysgICAgVHJ5TG9jayA9IDo6 X190c2FuX211dGV4X3RyeV9sb2NrLAorKyAgICBUcnlMb2NrRmFpbGVkID0gOjpfX3RzYW5fbXV0 ZXhfdHJ5X2xvY2tfZmFpbGVkLAorK307CisrI2Vsc2UKKytpbmxpbmUgdm9pZCBmdXRleEFjcXVp cmUodm9pZCAqLCB2b2lkICogPSBudWxscHRyKSB7fQorK2lubGluZSB2b2lkIGZ1dGV4UmVsZWFz ZSh2b2lkICosIHZvaWQgKiA9IG51bGxwdHIpIHt9CisrCisrZW51bSA6IHVuc2lnbmVkIHsKKysg ICAgTXV0ZXhXcml0ZVJlZW50cmFudCwKKysgICAgVHJ5TG9jaywKKysgICAgVHJ5TG9ja0ZhaWxl ZCwKKyt9OworK2lubGluZSB2b2lkIG11dGV4UHJlTG9jayh2b2lkICosIHVuc2lnbmVkKSB7fQor K2lubGluZSB2b2lkIG11dGV4UG9zdExvY2sodm9pZCAqLCB1bnNpZ25lZCwgaW50KSB7fQorK2lu bGluZSB2b2lkIG11dGV4UHJlVW5sb2NrKHZvaWQgKiwgdW5zaWduZWQpIHt9CisraW5saW5lIHZv aWQgbXV0ZXhQb3N0VW5sb2NrKHZvaWQgKiwgdW5zaWduZWQpIHt9CisrI2VuZGlmIC8vIFFUX0JV SUxESU5HX1VOREVSX1RTQU4KKyt9IC8vIG5hbWVzcGFjZSBRdFRzYW4KKysKKytRVF9FTkRfTkFN RVNQQUNFCisrCisrI2VuZGlmIC8vIFFUU0FOX0lNUExfSAorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvY29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3BwCitpbmRleCA4OGIwNThmNDEwLi4w ZjFkYTRkYzliIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xd2FpdGNv bmRpdGlvbl91bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xd2FpdGNv bmRpdGlvbl91bml4LmNwcAorQEAgLTIxMyw3ICsyMTMsNyBAQCBib29sIFFXYWl0Q29uZGl0aW9u Ojp3YWl0KFFNdXRleCAqbXV0ZXgsIFFEZWFkbGluZVRpbWVyIGRlYWRsaW5lKQorIHsKKyAgICAg aWYgKCEgbXV0ZXgpCisgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgIGlmIChtdXRleC0+aXNS ZWN1cnNpdmUoKSkgeworKyAgICBpZiAoc3RhdGljX2Nhc3Q8UUJhc2ljTXV0ZXggKj4obXV0ZXgp LT5pc1JlY3Vyc2l2ZSgpKSB7CisgICAgICAgICBxV2FybmluZygiUVdhaXRDb25kaXRpb246IGNh bm5vdCB3YWl0IG9uIHJlY3Vyc2l2ZSBtdXRleGVzIik7CisgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xZGF0ZXRpbWUu Y3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcWRhdGV0aW1lLmNwcAoraW5kZXggZWMxMjU2 OWUzZi4uMmMwYjA5ODA3OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3Fk YXRldGltZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3FkYXRldGltZS5jcHAK K0BAIC00Myw2ICs0Myw3IEBACisgI2lmIFFUX0NPTkZJRyhkYXRldGltZXBhcnNlcikKKyAjaW5j bHVkZSAicHJpdmF0ZS9xZGF0ZXRpbWVwYXJzZXJfcC5oIgorICNlbmRpZgorKyNpbmNsdWRlIDxw cml2YXRlL3FudW1lcmljX3AuaD4KKyAKKyAjaW5jbHVkZSAicWRhdGFzdHJlYW0uaCIKKyAjaW5j bHVkZSAicXNldC5oIgorQEAgLTE0MjksOSArMTQzMCwxMSBAQCBRRGF0ZSBRRGF0ZTo6YWRkRGF5 cyhxaW50NjQgbmRheXMpIGNvbnN0CisgICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgIHJldHVy biBRRGF0ZSgpOworIAorLSAgICAvLyBEdWUgdG8gbGltaXRzIG9uIG1pbkpkKCkgYW5kIG1heEpk KCkgd2Uga25vdyB0aGF0IGFueSBvdmVyZmxvdworLSAgICAvLyB3aWxsIGJlIGludmFsaWQgYW5k IGNhdWdodCBieSBmcm9tSnVsaWFuRGF5KCkuCistICAgIHJldHVybiBmcm9tSnVsaWFuRGF5KGpk ICsgbmRheXMpOworKyAgICBxaW50NjQgcjsKKysgICAgaWYgKFFfVU5MSUtFTFkoYWRkX292ZXJm bG93KGpkLCBuZGF5cywgJnIpKSkKKysgICAgICAgIHJldHVybiBRRGF0ZSgpOworKyAgICBlbHNl CisrICAgICAgICByZXR1cm4gZnJvbUp1bGlhbkRheShyKTsKKyB9CisgCisgLyohCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lLmNwcCBiL3F0YmFzZS9zcmMv Y29yZWxpYi90aW1lL3F0aW1lem9uZS5jcHAKK2luZGV4IDAzMDllNDNlNTIuLjNkNDUxNjk2YTEg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUuY3BwCitAQCAtMSw2ICsxLDYgQEAK KyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorICoqCistKiogQ29weXJpZ2h0IChDKSAyMDEzIEpvaG4g TGF5dCA8amxheXRAa2RlLm9yZz4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjAgSm9obiBMYXl0IDxq bGF5dEBrZGUub3JnPgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8K KyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdENvcmUgbW9kdWxlIG9mIHRoZSBR dCBUb29sa2l0LgorQEAgLTk3NSw5ICs5NzUsMTUgQEAgUUxpc3Q8UUJ5dGVBcnJheT4gUVRpbWVa b25lOjp3aW5kb3dzSWRUb0lhbmFJZHMoY29uc3QgUUJ5dGVBcnJheSAmd2luZG93c0lkLAorIH0K KyAKKyAjaWZuZGVmIFFUX05PX0RBVEFTVFJFQU0KKysvLyBJbnZhbGlkLCBhcyBhbiBJQU5BIElE OiB0b28gbG9uZywgc3RhcnRzIHdpdGggLSBhbmQgaGFzIG90aGVyIGludmFsaWQgY2hhcmFjdGVy cyBpbiBpdAorK3N0YXRpYyBpbmxpbmUgUVN0cmluZyBpbnZhbGlkSWQoKSB7IHJldHVybiBRU3Ry aW5nTGl0ZXJhbCgiLU5vIFRpbWUgWm9uZSBTcGVjaWZpZWQhIik7IH0KKysKKyBRRGF0YVN0cmVh bSAmb3BlcmF0b3I8PChRRGF0YVN0cmVhbSAmZHMsIGNvbnN0IFFUaW1lWm9uZSAmdHopCisgewor LSAgICB0ei5kLT5zZXJpYWxpemUoZHMpOworKyAgICBpZiAodHouaXNWYWxpZCgpKQorKyAgICAg ICAgdHouZC0+c2VyaWFsaXplKGRzKTsKKysgICAgZWxzZQorKyAgICAgICAgZHMgPDwgaW52YWxp ZElkKCk7CisgICAgIHJldHVybiBkczsKKyB9CisgCitAQCAtOTg1LDcgKzk5MSw5IEBAIFFEYXRh U3RyZWFtICZvcGVyYXRvcj4+KFFEYXRhU3RyZWFtICZkcywgUVRpbWVab25lICZ0eikKKyB7Cisg ICAgIFFTdHJpbmcgaWFuYUlkOworICAgICBkcyA+PiBpYW5hSWQ7CistICAgIGlmIChpYW5hSWQg PT0gUUxhdGluMVN0cmluZygiT2Zmc2V0RnJvbVV0YyIpKSB7CisrICAgIGlmIChpYW5hSWQgPT0g aW52YWxpZElkKCkpIHsKKysgICAgICAgIHR6ID0gUVRpbWVab25lKCk7CisrICAgIH0gZWxzZSBp ZiAoaWFuYUlkID09IFFMYXRpbjFTdHJpbmcoIk9mZnNldEZyb21VdGMiKSkgeworICAgICAgICAg aW50IHV0Y09mZnNldDsKKyAgICAgICAgIFFTdHJpbmcgbmFtZTsKKyAgICAgICAgIFFTdHJpbmcg YWJicmV2aWF0aW9uOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1l em9uZXByaXZhdGVfdHouY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lcHJp dmF0ZV90ei5jcHAKK2luZGV4IGIxNjExZDdkZGIuLmE3YTZhNzJjY2YgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2YXRlX3R6LmNwcAorKysrIGIvcXRi YXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lcHJpdmF0ZV90ei5jcHAKK0BAIC00Miw2ICs0 Miw3IEBACisgI2luY2x1ZGUgInF0aW1lem9uZS5oIgorICNpbmNsdWRlICJxdGltZXpvbmVwcml2 YXRlX3AuaCIKKyAjaW5jbHVkZSAicHJpdmF0ZS9xbG9jYWxlX3Rvb2xzX3AuaCIKKysjaW5jbHVk ZSAicHJpdmF0ZS9xbG9ja2luZ19wLmgiCisgCisgI2luY2x1ZGUgPFF0Q29yZS9RRGF0YVN0cmVh bT4KKyAjaW5jbHVkZSA8UXRDb3JlL1FEYXRlVGltZT4KK0BAIC02Miw2ICs2MywxMCBAQAorIAor IFFUX0JFR0lOX05BTUVTUEFDRQorIAorKyNpZiBRVF9DT05GSUcoaWN1KQorK3N0YXRpYyBRQmFz aWNNdXRleCBzX2ljdV9tdXRleDsKKysjZW5kaWYKKysKKyAvKgorICAgICBQcml2YXRlCisgCitA QCAtNjcwLDYgKzY3NSw5IEBAIFFUelRpbWVab25lUHJpdmF0ZTo6flFUelRpbWVab25lUHJpdmF0 ZSgpCisgCisgUVR6VGltZVpvbmVQcml2YXRlICpRVHpUaW1lWm9uZVByaXZhdGU6OmNsb25lKCkg Y29uc3QKKyB7CisrI2lmIFFUX0NPTkZJRyhpY3UpCisrICAgIGNvbnN0IGF1dG8gbG9jayA9IHF0 X3Njb3BlZF9sb2NrKHNfaWN1X211dGV4KTsKKysjZW5kaWYKKyAgICAgcmV0dXJuIG5ldyBRVHpU aW1lWm9uZVByaXZhdGUoKnRoaXMpOworIH0KKyAKK0BAIC05MTMsMTIgKzkyMSwxNCBAQCBRU3Ry aW5nIFFUelRpbWVab25lUHJpdmF0ZTo6ZGlzcGxheU5hbWUocWludDY0IGF0TVNlY3NTaW5jZUVw b2NoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRTG9j YWxlICZsb2NhbGUpIGNvbnN0CisgeworICNpZiBRVF9DT05GSUcoaWN1KQorKyAgICBhdXRvIGxv Y2sgPSBxdF91bmlxdWVfbG9jayhzX2ljdV9tdXRleCk7CisgICAgIGlmICghbV9pY3UpCisgICAg ICAgICBtX2ljdSA9IG5ldyBRSWN1VGltZVpvbmVQcml2YXRlKG1faWQpOworICAgICAvLyBUT0RP IHNtYWxsIHJpc2sgbWF5IG5vdCBtYXRjaCBpZiB0cmFuIHRpbWVzIGRpZmZlciBkdWUgdG8gb3V0 ZGF0ZWQgZmlsZXMKKyAgICAgLy8gVE9ETyBTb21lIHZhbGlkIFRaIG5hbWVzIGFyZSBub3QgdmFs aWQgSUNVIG5hbWVzLCB1c2UgdHJhbnNsYXRpb24gdGFibGU/CisgICAgIGlmIChtX2ljdS0+aXNW YWxpZCgpKQorICAgICAgICAgcmV0dXJuIG1faWN1LT5kaXNwbGF5TmFtZShhdE1TZWNzU2luY2VF cG9jaCwgbmFtZVR5cGUsIGxvY2FsZSk7CisrICAgIGxvY2sudW5sb2NrKCk7CisgI2Vsc2UKKyAg ICAgUV9VTlVTRUQobmFtZVR5cGUpCisgICAgIFFfVU5VU0VEKGxvY2FsZSkKK0BAIC05MzIsMTIg Kzk0MiwxNCBAQCBRU3RyaW5nIFFUelRpbWVab25lUHJpdmF0ZTo6ZGlzcGxheU5hbWUoUVRpbWVa b25lOjpUaW1lVHlwZSB0aW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgUUxvY2FsZSAmbG9jYWxlKSBjb25zdAorIHsKKyAjaWYgUVRfQ09ORklH KGljdSkKKysgICAgYXV0byBsb2NrID0gcXRfdW5pcXVlX2xvY2soc19pY3VfbXV0ZXgpOworICAg ICBpZiAoIW1faWN1KQorICAgICAgICAgbV9pY3UgPSBuZXcgUUljdVRpbWVab25lUHJpdmF0ZSht X2lkKTsKKyAgICAgLy8gVE9ETyBzbWFsbCByaXNrIG1heSBub3QgbWF0Y2ggaWYgdHJhbiB0aW1l cyBkaWZmZXIgZHVlIHRvIG91dGRhdGVkIGZpbGVzCisgICAgIC8vIFRPRE8gU29tZSB2YWxpZCBU WiBuYW1lcyBhcmUgbm90IHZhbGlkIElDVSBuYW1lcywgdXNlIHRyYW5zbGF0aW9uIHRhYmxlPwor ICAgICBpZiAobV9pY3UtPmlzVmFsaWQoKSkKKyAgICAgICAgIHJldHVybiBtX2ljdS0+ZGlzcGxh eU5hbWUodGltZVR5cGUsIG5hbWVUeXBlLCBsb2NhbGUpOworKyAgICBsb2NrLnVubG9jaygpOwor ICNlbHNlCisgICAgIFFfVU5VU0VEKHRpbWVUeXBlKQorICAgICBRX1VOVVNFRChuYW1lVHlwZSkK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWFycmF5ZGF0YS5oIGIvcXRi YXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FhcnJheWRhdGEuaAoraW5kZXggZGNkOTU5MjRjMS4uZDAx NzM5ZTdlNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xYXJyYXlkYXRh LmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xYXJyYXlkYXRhLmgKK0BAIC00Miw2 ICs0Miw3IEBACisgCisgI2luY2x1ZGUgPFF0Q29yZS9xcmVmY291bnQuaD4KKyAjaW5jbHVkZSA8 c3RyaW5nLmg+CisrI2luY2x1ZGUgPGNzdGRpbnQ+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisg CitAQCAtNTgsMTQgKzU5LDE0IEBAIHN0cnVjdCBRX0NPUkVfRVhQT1JUIFFBcnJheURhdGEKKyAg ICAgeworICAgICAgICAgUV9BU1NFUlQoc2l6ZSA9PSAwCisgICAgICAgICAgICAgICAgIHx8IG9m ZnNldCA8IDAgfHwgc2l6ZV90KG9mZnNldCkgPj0gc2l6ZW9mKFFBcnJheURhdGEpKTsKKy0gICAg ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIgKj4odGhpcykgKyBvZmZzZXQ7CisrICAg ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+IChyZWludGVycHJldF9jYXN0PHVp bnRwdHJfdD4odGhpcykgKyBvZmZzZXQpOworICAgICB9CisgCisgICAgIGNvbnN0IHZvaWQgKmRh dGEoKSBjb25zdAorICAgICB7CisgICAgICAgICBRX0FTU0VSVChzaXplID09IDAKKyAgICAgICAg ICAgICAgICAgfHwgb2Zmc2V0IDwgMCB8fCBzaXplX3Qob2Zmc2V0KSA+PSBzaXplb2YoUUFycmF5 RGF0YSkpOworLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPih0 aGlzKSArIG9mZnNldDsKKysgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQgKj4g KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSArIG9mZnNldCk7CisgICAgIH0KKyAK KyAgICAgLy8gVGhpcyByZWZlcnMgdG8gYXJyYXkgZGF0YSBtdXRhYmlsaXR5LCBub3QgImhlYWRl ciBkYXRhIiByZXByZXNlbnRlZCBieQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90 b29scy9xZnJlZWxpc3RfcC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FmcmVlbGlzdF9w LmgKK2luZGV4IDViYTIzYjM0NGIuLjk5NzQxMDIxMzYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3AuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rv b2xzL3FmcmVlbGlzdF9wLmgKK0BAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3MgUUZyZWVMaXN0Cisg ICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgIHggLT0gc2l6ZTsKKyAgICAg ICAgIH0KKy0gICAgICAgIFFfQVNTRVJUKGZhbHNlKTsKKysgICAgICAgIFFfVU5SRUFDSEFCTEUo KTsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51bWJlci5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rv b2xzL3F2ZXJzaW9ubnVtYmVyLmgKK2luZGV4IGQ0M2I4NmJhNTEuLjI4NDNmMmIwNDMgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcXZlcnNpb25udW1iZXIuaAorKysrIGIv cXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3F2ZXJzaW9ubnVtYmVyLmgKK0BAIC0yNzMsMTAgKzI3 MywxMCBAQCBwdWJsaWM6CisgCisgICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQg UVN0cmluZyB0b1N0cmluZygpIGNvbnN0OworICNpZiBRVF9TVFJJTkdWSUVXX0xFVkVMIDwgMgor LSAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRX0RFQ0xfUFVSRV9G VU5DVElPTiBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKGNvbnN0IFFTdHJpbmcgJnN0cmluZywg aW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworKyAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NP UkVfRVhQT1JUIHN0YXRpYyBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKGNvbnN0IFFTdHJpbmcg JnN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworICNlbmRpZgorLSAgICBRX1JF UVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRX0RFQ0xfUFVSRV9GVU5DVElPTiBR VmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKFFMYXRpbjFTdHJpbmcgc3RyaW5nLCBpbnQgKnN1ZmZp eEluZGV4ID0gbnVsbHB0cik7CistICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQg c3RhdGljIFFfREVDTF9QVVJFX0ZVTkNUSU9OIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoUVN0 cmluZ1ZpZXcgc3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CisrICAgIFFfUkVR VUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJp bmcoUUxhdGluMVN0cmluZyBzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsKKysg ICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUVZlcnNpb25OdW1iZXIg ZnJvbVN0cmluZyhRU3RyaW5nVmlldyBzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxscHRy KTsKKyAKKyBwcml2YXRlOgorICNpZm5kZWYgUVRfTk9fREFUQVNUUkVBTQorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3BwIGIvcXRiYXNlL3NyYy9kYnVzL3Fk YnVzaW50ZWdyYXRvci5jcHAKK2luZGV4IDViNjZjZTk3MWIuLjI4YTNiMGZmZWEgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNpbnRlZ3JhdG9yLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9kYnVzL3FkYnVzaW50ZWdyYXRvci5jcHAKK0BAIC0xMTM1LDcgKzExMzUsMTMgQEAgdm9pZCBR REJ1c0Nvbm5lY3Rpb25Qcml2YXRlOjpjbG9zZUNvbm5lY3Rpb24oKQorICAgICAgICAgfQorICAg ICB9CisgCistICAgIHFEZWxldGVBbGwocGVuZGluZ0NhbGxzKTsKKysgICAgZm9yIChhdXRvIGl0 ID0gcGVuZGluZ0NhbGxzLmJlZ2luKCk7IGl0ICE9IHBlbmRpbmdDYWxscy5lbmQoKTsgKytpdCkg eworKyAgICAgICAgYXV0byBjYWxsID0gKml0OworKyAgICAgICAgaWYgKCFjYWxsLT5yZWYuZGVy ZWYoKSkgeworKyAgICAgICAgICAgIGRlbGV0ZSBjYWxsOworKyAgICAgICAgfQorKyAgICB9Cisr ICAgIHBlbmRpbmdDYWxscy5jbGVhcigpOworIAorICAgICAvLyBEaXNjb25uZWN0IGFsbCBzaWdu YWxzIGZyb20gc2lnbmFsIGhvb2tzIGFuZCBmcm9tIHRoZSBvYmplY3QgdHJlZSB0bworICAgICAv LyBhdm9pZCBRT2JqZWN0OjpkZXN0cm95ZWQgYmVpbmcgc2VudCB0byBkYnVzIGRhZW1vbiB0aHJl YWQgd2hpY2ggaGFzCitAQCAtMjU4NCw2ICsyNTkwLDExIEBAIFFEQnVzQ29ubmVjdGlvblByaXZh dGU6OmZpbmRNZXRhT2JqZWN0KGNvbnN0IFFTdHJpbmcgJnNlcnZpY2UsIGNvbnN0IFFTdHJpbmcg JnBhCisgICAgICAgICBpZiAobW8pCisgICAgICAgICAgICAgcmV0dXJuIG1vOworICAgICB9Cisr ICAgIGlmIChwYXRoLmlzRW1wdHkoKSkgeworKyAgICAgICAgZXJyb3IgPSBRREJ1c0Vycm9yKFFE QnVzRXJyb3I6OkludmFsaWRPYmplY3RQYXRoLCBRTGF0aW4xU3RyaW5nKCJPYmplY3QgcGF0aCBj YW5ub3QgYmUgZW1wdHkiKSk7CisrICAgICAgICBsYXN0RXJyb3IgPSBlcnJvcjsKKysgICAgICAg IHJldHVybiBudWxscHRyOworKyAgICB9CisgCisgICAgIC8vIGludHJvc3BlY3QgdGhlIHRhcmdl dCBvYmplY3QKKyAgICAgUURCdXNNZXNzYWdlIG1zZyA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRlTWV0 aG9kQ2FsbChzZXJ2aWNlLCBwYXRoLAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1 c21ldGFvYmplY3QuY3BwIGIvcXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0YW9iamVjdC5jcHAKK2lu ZGV4IDUyNjU1NjhmNDIuLjdlOWYwZjFhY2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2RidXMv cWRidXNtZXRhb2JqZWN0LmNwcAorKysrIGIvcXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0YW9iamVj dC5jcHAKK0BAIC0yMTAsNiArMjEwLDkgQEAgUURCdXNNZXRhT2JqZWN0R2VuZXJhdG9yOjpmaW5k VHlwZShjb25zdCBRQnl0ZUFycmF5ICZzaWduYXR1cmUsCisgICAgICAgICB9IGVsc2UgaWYgKHNp Z25hdHVyZSA9PSAiYXtzc30iKSB7CisgICAgICAgICAgICAgcmVzdWx0Lm5hbWUgPSAiUU1hcDxR U3RyaW5nLFFTdHJpbmc+IjsKKyAgICAgICAgICAgICB0eXBlID0gcU1ldGFUeXBlSWQ8UU1hcDxR U3RyaW5nLCBRU3RyaW5nPiA+KCk7CisrICAgICAgICB9IGVsc2UgaWYgKHNpZ25hdHVyZSA9PSAi YWF5IikgeworKyAgICAgICAgICAgIHJlc3VsdC5uYW1lID0gIlFCeXRlQXJyYXlMaXN0IjsKKysg ICAgICAgICAgICB0eXBlID0gcU1ldGFUeXBlSWQ8UUJ5dGVBcnJheUxpc3Q+KCk7CisgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgIHJlc3VsdC5uYW1lID0gIntELUJ1cyB0eXBlIFwiIiAr IHNpZ25hdHVyZSArICJcIn0iOworICAgICAgICAgICAgIHR5cGUgPSByZWdpc3RlckNvbXBsZXhE QnVzVHlwZShyZXN1bHQubmFtZSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvYWNjZXNz aWJsZS9xYWNjZXNzaWJsZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3FhY2Nlc3Np YmxlLmNwcAoraW5kZXggZDcwNWJmY2NiNS4uMGNhZjNjODA4YyAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFjY2Vzc2libGUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1 aS9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlLmNwcAorQEAgLTU0LDYgKzU0LDcgQEAKKyAjaW5jbHVk ZSA8UXRDb3JlL3FkZWJ1Zy5oPgorICNpbmNsdWRlIDxRdENvcmUvcWxvZ2dpbmdjYXRlZ29yeS5o PgorICNpbmNsdWRlIDxRdENvcmUvcW1ldGFvYmplY3QuaD4KKysjaW5jbHVkZSA8UXRDb3JlL3By aXZhdGUvcW1ldGFvYmplY3RfcC5oPgorICNpbmNsdWRlIDxRdENvcmUvcWhhc2guaD4KKyAjaW5j bHVkZSA8cHJpdmF0ZS9xZmFjdG9yeWxvYWRlcl9wLmg+CisgCitAQCAtNjgxLDYgKzY4MiwyNSBA QCBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGU6OnF1ZXJ5QWNjZXNzaWJsZUludGVy ZmFjZShRT2JqZWN0ICpvYmplY3QpCisgICAgIC8vIENyZWF0ZSBhIFFBY2Nlc3NpYmxlSW50ZXJm YWNlIGZvciB0aGUgb2JqZWN0IGNsYXNzLiBTdGFydCBieSB0aGUgbW9zdAorICAgICAvLyBkZXJp dmVkIGNsYXNzIGFuZCB3YWxrIHVwIHRoZSBjbGFzcyBoaWVyYXJjaHkuCisgICAgIGNvbnN0IFFN ZXRhT2JqZWN0ICptbyA9IG9iamVjdC0+bWV0YU9iamVjdCgpOworKyAgICBjb25zdCBhdXRvICpv YmplY3RQcml2ID0gUU9iamVjdFByaXZhdGU6OmdldChvYmplY3QpOworKyAgICAvKgorKyAgICAg V2UgZG8gbm90IHdhbnQgdG8gY2FjaGUgZWFjaCBhbmQgZXZlcnkgUU1MIG1ldGFvYmplY3QgKEJ1 dHRvbl9RTUxUWVBFXzEyNCwKKysgICAgIEJ1dHRvbl9RTUxUWVBFXzEyNSwgZXRjLikuIFRob3Nl IGR5bmFtaWMgbWV0YW9iamVjdHMgc2hvdWxkbid0IGhhdmUgYW4KKysgICAgIGFjY2Vzc2libGUg aW50ZXJmYWNlIGluIGFueSBjYXNlLiBJbnN0ZWFkLCB3ZSBzdGFydCB0aGUgd2hvbGUgY2hlY2tp bmcKKysgICAgIHdpdGggdGhlIGZpcnN0IG5vbi1keW5hbWljIG1ldGEtb2JqZWN0LiBUbyBhdm9p ZCBwb3RlbnRpYWwgcmVncmVzc2lvbnMKKysgICAgIGluIG90aGVyIGFyZWFzIG9mIFF0IHRoYXQg YWxzbyB1c2UgZHluYW1pYyBtZXRhb2JqZWN0cywgd2Ugb25seSBkbyB0aGlzCisrICAgICBmb3Ig b2JqZWN0cyB0aGF0IGFyZSBRTUwtcmVsYXRlZCAoYXBwcm94aW1hdGVkIGJ5IGNoZWNraW5nIHdo ZXRoZXIgdGhleQorKyAgICAgaGF2ZSBkZGF0YSBzZXQpLgorKyAgICAqLworKyAgICBjb25zdCBi b29sIHFtbFJlbGF0ZWQgPSAhb2JqZWN0UHJpdi0+aXNEZWxldGluZ0NoaWxkcmVuICYmCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFByaXYtPmRlY2xhcmF0aXZlRGF0YTsKKysg ICAgd2hpbGUgKHFtbFJlbGF0ZWQgJiYgbW8pIHsKKysgICAgICAgIGF1dG8gbW9wID0gUU1ldGFP YmplY3RQcml2YXRlOjpnZXQobW8pOworKyAgICAgICAgaWYgKCFtb3AgfHwgIShtb3AtPmZsYWdz ICYgRHluYW1pY01ldGFPYmplY3QpKQorKyAgICAgICAgICAgIGJyZWFrOworKworKyAgICAgICAg bW8gPSBtby0+c3VwZXJDbGFzcygpOworKyAgICB9OworICAgICB3aGlsZSAobW8pIHsKKyAgICAg ICAgIGNvbnN0IFFTdHJpbmcgY24gPSBRTGF0aW4xU3RyaW5nKG1vLT5jbGFzc05hbWUoKSk7Cisg CitAQCAtNjk2LDE0ICs3MTYsMTUgQEAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxl OjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2UoUU9iamVjdCAqb2JqZWN0KQorICAgICAgICAgLy8g RmluZCBhIFFBY2Nlc3NpYmxlUGx1Z2luIChmYWN0b3J5KSBmb3IgdGhlIGNsYXNzIG5hbWUuIElm IHRoZXJlJ3MKKyAgICAgICAgIC8vIG5vIGVudHJ5IGluIHRoZSBjYWNoZSB0cnkgdG8gY3JlYXRl IGl0IHVzaW5nIHRoZSBwbHVnaW4gbG9hZGVyLgorICAgICAgICAgaWYgKCFxQWNjZXNzaWJsZVBs dWdpbnMoKS0+Y29udGFpbnMoY24pKSB7CisrICAgICAgICAgICAgUUFjY2Vzc2libGVQbHVnaW4g KmZhY3RvcnkgPSBudWxscHRyOyAvLyAwIG1lYW5zICJubyBwbHVnaW4gZm91bmQiLiBUaGlzIGlz IGNhY2hlZCBhcyB3ZWxsLgorICAgICAgICAgICAgIGNvbnN0IGludCBpbmRleCA9IGxvYWRlcigp LT5pbmRleE9mKGNuKTsKKy0gICAgICAgICAgICBpZiAoaW5kZXggIT0gLTEpIHsKKy0gICAgICAg ICAgICAgICAgUUFjY2Vzc2libGVQbHVnaW4gKmZhY3RvcnkgPSBxb2JqZWN0X2Nhc3Q8UUFjY2Vz c2libGVQbHVnaW4gKj4obG9hZGVyKCktPmluc3RhbmNlKGluZGV4KSk7CistICAgICAgICAgICAg ICAgIHFBY2Nlc3NpYmxlUGx1Z2lucygpLT5pbnNlcnQoY24sIGZhY3RvcnkpOworLSAgICAgICAg ICAgIH0KKysgICAgICAgICAgICBpZiAoaW5kZXggIT0gLTEpCisrICAgICAgICAgICAgICAgIGZh Y3RvcnkgPSBxb2JqZWN0X2Nhc3Q8UUFjY2Vzc2libGVQbHVnaW4gKj4obG9hZGVyKCktPmluc3Rh bmNlKGluZGV4KSk7CisrICAgICAgICAgICAgcUFjY2Vzc2libGVQbHVnaW5zKCktPmluc2VydChj biwgZmFjdG9yeSk7CisgICAgICAgICB9CisgCisgICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHRo ZSBjYWNoZSBzaG91bGQgY29udGFpbiBhIHZhbGlkIGZhY3RvcnkgcG9pbnRlciBvciAwOgorKyAg ICAgICAgUV9BU1NFUlQocUFjY2Vzc2libGVQbHVnaW5zKCktPmNvbnRhaW5zKGNuKSk7CisgICAg ICAgICBRQWNjZXNzaWJsZVBsdWdpbiAqZmFjdG9yeSA9IHFBY2Nlc3NpYmxlUGx1Z2lucygpLT52 YWx1ZShjbik7CisgICAgICAgICBpZiAoZmFjdG9yeSkgeworICAgICAgICAgICAgIFFBY2Nlc3Np YmxlSW50ZXJmYWNlICpyZXN1bHQgPSBmYWN0b3J5LT5jcmVhdGUoY24sIG9iamVjdCk7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJlLmpzb24gYi9xdGJhc2Uvc3JjL2d1aS9j b25maWd1cmUuanNvbgoraW5kZXggMWYwODc5NWM1Ny4uMTJjOTU3NDJkMiAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3VyZS5qc29uCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9jb25m aWd1cmUuanNvbgorQEAgLTgzNCw3ICs4MzQsOCBAQAorICAgICAgICAgICAgICAgICAgICAgIi8v IGVtYmVkZGVkIGRldmljZXMsIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCB0b2dldGhlciB3 aXRoIFguIEVHTCBzdXBwb3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICIvLyBoYXMgdG8gYmUg ZGlzYWJsZWQgaW4gcGx1Z2lucyBsaWtlIHhjYiBpbiB0aGlzIGNhc2Ugc2luY2UgdGhlIG5hdGl2 ZSBkaXNwbGF5LCIsCisgICAgICAgICAgICAgICAgICAgICAiLy8gd2luZG93IGFuZCBwaXhtYXAg dHlwZXMgd2lsbCBiZSBkaWZmZXJlbnQgdGhhbiB3aGF0IGFuIFgtYmFzZWQgcGxhdGZvcm0iLAor LSAgICAgICAgICAgICAgICAgICAgIi8vIHBsdWdpbiB3b3VsZCBleHBlY3QuIgorKyAgICAgICAg ICAgICAgICAgICAgIi8vIHBsdWdpbiB3b3VsZCBleHBlY3QuIiwKKysgICAgICAgICAgICAgICAg ICAgICIjZGVmaW5lIFVTRV9YMTEiCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg ICAgICJpbmNsdWRlIjogWyAiRUdML2VnbC5oIiwgIlgxMS9YbGliLmgiIF0sCisgICAgICAgICAg ICAgICAgICJtYWluIjogWworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FibXBo YW5kbGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FibXBoYW5kbGVyLmNwcAoraW5kZXgg OTZmMWU4Y2IxZC4uMGU3M2JiYmRiMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2ltYWdl L3FibXBoYW5kbGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWJtcGhhbmRsZXIu Y3BwCitAQCAtMTUwLDE2ICsxNTAsNDIgQEAgc3RhdGljIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8 KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAmYmkpCisgICAgIHJldHVybiBzOwor IH0KKyAKKy1zdGF0aWMgaW50IGNhbGNfc2hpZnQodWludCBtYXNrKQorK3N0YXRpYyB1aW50IGNh bGNfc2hpZnQodWludCBtYXNrKQorIHsKKy0gICAgaW50IHJlc3VsdCA9IDA7CistICAgIHdoaWxl IChtYXNrICYmICEobWFzayAmIDEpKSB7CisrICAgIHVpbnQgcmVzdWx0ID0gMDsKKysgICAgd2hp bGUgKChtYXNrID49IDB4MTAwKSB8fCAoIShtYXNrICYgMSkgJiYgbWFzaykpIHsKKyAgICAgICAg IHJlc3VsdCsrOworICAgICAgICAgbWFzayA+Pj0gMTsKKyAgICAgfQorICAgICByZXR1cm4gcmVz dWx0OworIH0KKyAKKytzdGF0aWMgdWludCBjYWxjX3NjYWxlKHVpbnQgbG93X21hc2spCisrewor KyAgICB1aW50IHJlc3VsdCA9IDg7CisrICAgIHdoaWxlIChsb3dfbWFzayAmJiByZXN1bHQpIHsK KysgICAgICAgIHJlc3VsdC0tOworKyAgICAgICAgbG93X21hc2sgPj49IDE7CisrICAgIH0KKysg ICAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisrc3RhdGljIGlubGluZSB1aW50IGFwcGx5X3NjYWxl KHVpbnQgdmFsdWUsIHVpbnQgc2NhbGUpCisreworKyAgICBpZiAoIShzY2FsZSAmIDB4MDcpKSAv LyByZXR1cm4gaW1tZWRpYXRlbHkgaWYgc2NhbGUgPT0gOCBvciAwCisrICAgICAgICByZXR1cm4g dmFsdWU7CisrCisrICAgIHVpbnQgZmlsbGVkID0gOCAtIHNjYWxlOworKyAgICB1aW50IHJlc3Vs dCA9IHZhbHVlIDw8IHNjYWxlOworKworKyAgICBkbyB7CisrICAgICAgICByZXN1bHQgfD0gcmVz dWx0ID4+IGZpbGxlZDsKKysgICAgICAgIGZpbGxlZCA8PD0gMTsKKysgICAgfSB3aGlsZSAoZmls bGVkIDwgOCk7CisrCisrICAgIHJldHVybiByZXN1bHQ7CisrfQorKworIHN0YXRpYyBib29sIHJl YWRfZGliX2ZpbGVoZWFkZXIoUURhdGFTdHJlYW0gJnMsIEJNUF9GSUxFSERSICZiZikKKyB7Cisg ICAgIC8vIHJlYWQgQk1QIGZpbGUgaGVhZGVyCitAQCAtMjIyLDE0ICsyNDgsMTQgQEAgc3RhdGlj IGJvb2wgcmVhZF9kaWJfYm9keShRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIgJmJp LCBxaW50NjQgb2Zmc2V0LAorICAgICB1aW50IGdyZWVuX21hc2sgPSAwOworICAgICB1aW50IGJs dWVfbWFzayA9IDA7CisgICAgIHVpbnQgYWxwaGFfbWFzayA9IDA7CistICAgIGludCByZWRfc2hp ZnQgPSAwOworLSAgICBpbnQgZ3JlZW5fc2hpZnQgPSAwOworLSAgICBpbnQgYmx1ZV9zaGlmdCA9 IDA7CistICAgIGludCBhbHBoYV9zaGlmdCA9IDA7CistICAgIGludCByZWRfc2NhbGUgPSAwOwor LSAgICBpbnQgZ3JlZW5fc2NhbGUgPSAwOworLSAgICBpbnQgYmx1ZV9zY2FsZSA9IDA7CistICAg IGludCBhbHBoYV9zY2FsZSA9IDA7CisrICAgIHVpbnQgcmVkX3NoaWZ0ID0gMDsKKysgICAgdWlu dCBncmVlbl9zaGlmdCA9IDA7CisrICAgIHVpbnQgYmx1ZV9zaGlmdCA9IDA7CisrICAgIHVpbnQg YWxwaGFfc2hpZnQgPSAwOworKyAgICB1aW50IHJlZF9zY2FsZSA9IDA7CisrICAgIHVpbnQgZ3Jl ZW5fc2NhbGUgPSAwOworKyAgICB1aW50IGJsdWVfc2NhbGUgPSAwOworKyAgICB1aW50IGFscGhh X3NjYWxlID0gMDsKKyAKKyAgICAgaWYgKCFkLT5pc1NlcXVlbnRpYWwoKSkKKyAgICAgICAgIGQt PnNlZWsoc3RhcnRwb3MgKyBCTVBfRklMRUhEUl9TSVpFICsgYmkuYmlTaXplKTsgLy8gZ290byBz dGFydCBvZiBjb2xvcm1hcCBvciBtYXNrcworQEAgLTMwOCwxOSArMzM0LDE5IEBAIHN0YXRpYyBi b29sIHJlYWRfZGliX2JvZHkoUURhdGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSwg cWludDY0IG9mZnNldCwKKyAgICAgICAgIHJlZF9zaGlmdCA9IGNhbGNfc2hpZnQocmVkX21hc2sp OworICAgICAgICAgaWYgKCgocmVkX21hc2sgPj4gcmVkX3NoaWZ0KSArIDEpID09IDApCisgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgcmVkX3NjYWxlID0gMjU2IC8gKChyZWRf bWFzayA+PiByZWRfc2hpZnQpICsgMSk7CisrICAgICAgICByZWRfc2NhbGUgPSBjYWxjX3NjYWxl KHJlZF9tYXNrID4+IHJlZF9zaGlmdCk7CisgICAgICAgICBncmVlbl9zaGlmdCA9IGNhbGNfc2hp ZnQoZ3JlZW5fbWFzayk7CisgICAgICAgICBpZiAoKChncmVlbl9tYXNrID4+IGdyZWVuX3NoaWZ0 KSArIDEpID09IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgZ3JlZW5f c2NhbGUgPSAyNTYgLyAoKGdyZWVuX21hc2sgPj4gZ3JlZW5fc2hpZnQpICsgMSk7CisrICAgICAg ICBncmVlbl9zY2FsZSA9IGNhbGNfc2NhbGUoZ3JlZW5fbWFzayA+PiBncmVlbl9zaGlmdCk7Cisg ICAgICAgICBibHVlX3NoaWZ0ID0gY2FsY19zaGlmdChibHVlX21hc2spOworICAgICAgICAgaWYg KCgoYmx1ZV9tYXNrID4+IGJsdWVfc2hpZnQpICsgMSkgPT0gMCkKKyAgICAgICAgICAgICByZXR1 cm4gZmFsc2U7CistICAgICAgICBibHVlX3NjYWxlID0gMjU2IC8gKChibHVlX21hc2sgPj4gYmx1 ZV9zaGlmdCkgKyAxKTsKKysgICAgICAgIGJsdWVfc2NhbGUgPSBjYWxjX3NjYWxlKGJsdWVfbWFz ayA+PiBibHVlX3NoaWZ0KTsKKyAgICAgICAgIGFscGhhX3NoaWZ0ID0gY2FsY19zaGlmdChhbHBo YV9tYXNrKTsKKyAgICAgICAgIGlmICgoKGFscGhhX21hc2sgPj4gYWxwaGFfc2hpZnQpICsgMSkg PT0gMCkKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgICAgICBhbHBoYV9zY2FsZSA9 IDI1NiAvICgoYWxwaGFfbWFzayA+PiBhbHBoYV9zaGlmdCkgKyAxKTsKKysgICAgICAgIGFscGhh X3NjYWxlID0gY2FsY19zY2FsZShhbHBoYV9tYXNrID4+IGFscGhhX3NoaWZ0KTsKKyAgICAgfSBl bHNlIGlmIChjb21wID09IEJNUF9SR0IgJiYgKG5iaXRzID09IDI0IHx8IG5iaXRzID09IDMyKSkg eworICAgICAgICAgYmx1ZV9tYXNrID0gMHgwMDAwMDBmZjsKKyAgICAgICAgIGdyZWVuX21hc2sg PSAweDAwMDBmZjAwOworQEAgLTMyOCwxNyArMzU0LDE1IEBAIHN0YXRpYyBib29sIHJlYWRfZGli X2JvZHkoUURhdGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSwgcWludDY0IG9mZnNl dCwKKyAgICAgICAgIGJsdWVfc2hpZnQgPSAwOworICAgICAgICAgZ3JlZW5fc2hpZnQgPSA4Owor ICAgICAgICAgcmVkX3NoaWZ0ID0gMTY7CistICAgICAgICBibHVlX3NjYWxlID0gZ3JlZW5fc2Nh bGUgPSByZWRfc2NhbGUgPSAxOworKyAgICAgICAgYmx1ZV9zY2FsZSA9IGdyZWVuX3NjYWxlID0g cmVkX3NjYWxlID0gMDsKKyAgICAgfSBlbHNlIGlmIChjb21wID09IEJNUF9SR0IgJiYgbmJpdHMg PT0gMTYpIHsKKyAgICAgICAgIGJsdWVfbWFzayA9IDB4MDAxZjsKKyAgICAgICAgIGdyZWVuX21h c2sgPSAweDAzZTA7CisgICAgICAgICByZWRfbWFzayA9IDB4N2MwMDsKKyAgICAgICAgIGJsdWVf c2hpZnQgPSAwOworLSAgICAgICAgZ3JlZW5fc2hpZnQgPSAyOworLSAgICAgICAgcmVkX3NoaWZ0 ID0gNzsKKy0gICAgICAgIHJlZF9zY2FsZSA9IDE7CistICAgICAgICBncmVlbl9zY2FsZSA9IDE7 CistICAgICAgICBibHVlX3NjYWxlID0gODsKKysgICAgICAgIGdyZWVuX3NoaWZ0ID0gNTsKKysg ICAgICAgIHJlZF9zaGlmdCA9IDEwOworKyAgICAgICAgYmx1ZV9zY2FsZSA9IGdyZWVuX3NjYWxl ID0gcmVkX3NjYWxlID0gMzsKKyAgICAgfQorIAorICNpZiAwCitAQCAtNTQ0LDEwICs1NjgsMTAg QEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9keShRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1QX0lO Rk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgYyB8PSAqKHVj aGFyKikoYisyKTw8MTY7CisgICAgICAgICAgICAgICAgIGlmIChuYml0cyA+IDI0KQorICAgICAg ICAgICAgICAgICAgICAgYyB8PSAqKHVjaGFyKikoYiszKTw8MjQ7CistICAgICAgICAgICAgICAg ICpwKysgPSBxUmdiYSgoKGMgJiByZWRfbWFzaykgPj4gcmVkX3NoaWZ0KSAqIHJlZF9zY2FsZSwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChjICYgZ3JlZW5fbWFz aykgPj4gZ3JlZW5fc2hpZnQpICogZ3JlZW5fc2NhbGUsCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoYyAmIGJsdWVfbWFzaykgPj4gYmx1ZV9zaGlmdCkgKiBibHVl X3NjYWxlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Ag PyAoKGMgJiBhbHBoYV9tYXNrKSA+PiBhbHBoYV9zaGlmdCkgKiBhbHBoYV9zY2FsZSA6IDB4ZmYp OworKyAgICAgICAgICAgICAgICAqcCsrID0gcVJnYmEoYXBwbHlfc2NhbGUoKGMgJiByZWRfbWFz aykgPj4gcmVkX3NoaWZ0LCByZWRfc2NhbGUpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYXBwbHlfc2NhbGUoKGMgJiBncmVlbl9tYXNrKSA+PiBncmVlbl9zaGlmdCwgZ3JlZW5fc2Nh bGUpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlfc2NhbGUoKGMgJiBibHVl X21hc2spID4+IGJsdWVfc2hpZnQsIGJsdWVfc2NhbGUpLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdHJhbnNwID8gYXBwbHlfc2NhbGUoKGMgJiBhbHBoYV9tYXNrKSA+PiBhbHBoYV9z aGlmdCwgYWxwaGFfc2NhbGUpIDogMHhmZik7CisgICAgICAgICAgICAgICAgIGIgKz0gbmJpdHMv ODsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9n dWkvaW1hZ2UvcWltYWdlLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FpbWFnZS5jcHAKK2lu ZGV4IDcxNTJhYzE2MDcuLjBkZjc3MjU2NGMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9p bWFnZS9xaW1hZ2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xaW1hZ2UuY3BwCitA QCAtNDY5NCw2ICs0Njk0LDggQEAgUUltYWdlIFFJbWFnZTo6c21vb3RoU2NhbGVkKGludCB3LCBp bnQgaCkgY29uc3QgeworIHN0YXRpYyBRSW1hZ2Ugcm90YXRlZDkwKGNvbnN0IFFJbWFnZSAmaW1h Z2UpCisgeworICAgICBRSW1hZ2Ugb3V0KGltYWdlLmhlaWdodCgpLCBpbWFnZS53aWR0aCgpLCBp bWFnZS5mb3JtYXQoKSk7CisrICAgIGlmIChvdXQuaXNOdWxsKCkpCisrICAgICAgICByZXR1cm4g b3V0OworICAgICBjb3B5TWV0YWRhdGEoJm91dCwgaW1hZ2UpOworICAgICBpZiAoaW1hZ2UuY29s b3JDb3VudCgpID4gMCkKKyAgICAgICAgIG91dC5zZXRDb2xvclRhYmxlKGltYWdlLmNvbG9yVGFi bGUoKSk7CitAQCAtNDcyMiw2ICs0NzI0LDggQEAgc3RhdGljIFFJbWFnZSByb3RhdGVkMTgwKGNv bnN0IFFJbWFnZSAmaW1hZ2UpCisgICAgICAgICByZXR1cm4gaW1hZ2UubWlycm9yZWQodHJ1ZSwg dHJ1ZSk7CisgCisgICAgIFFJbWFnZSBvdXQoaW1hZ2Uud2lkdGgoKSwgaW1hZ2UuaGVpZ2h0KCks IGltYWdlLmZvcm1hdCgpKTsKKysgICAgaWYgKG91dC5pc051bGwoKSkKKysgICAgICAgIHJldHVy biBvdXQ7CisgICAgIGNvcHlNZXRhZGF0YSgmb3V0LCBpbWFnZSk7CisgICAgIGlmIChpbWFnZS5j b2xvckNvdW50KCkgPiAwKQorICAgICAgICAgb3V0LnNldENvbG9yVGFibGUoaW1hZ2UuY29sb3JU YWJsZSgpKTsKK0BAIC00NzM0LDYgKzQ3MzgsOCBAQCBzdGF0aWMgUUltYWdlIHJvdGF0ZWQxODAo Y29uc3QgUUltYWdlICZpbWFnZSkKKyBzdGF0aWMgUUltYWdlIHJvdGF0ZWQyNzAoY29uc3QgUUlt YWdlICZpbWFnZSkKKyB7CisgICAgIFFJbWFnZSBvdXQoaW1hZ2UuaGVpZ2h0KCksIGltYWdlLndp ZHRoKCksIGltYWdlLmZvcm1hdCgpKTsKKysgICAgaWYgKG91dC5pc051bGwoKSkKKysgICAgICAg IHJldHVybiBvdXQ7CisgICAgIGNvcHlNZXRhZGF0YSgmb3V0LCBpbWFnZSk7CisgICAgIGlmIChp bWFnZS5jb2xvckNvdW50KCkgPiAwKQorICAgICAgICAgb3V0LnNldENvbG9yVGFibGUoaW1hZ2Uu Y29sb3JUYWJsZSgpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWN1cnNv ci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWN1cnNvci5jcHAKK2luZGV4IGQ2Y2NhZmY4 ZWQuLjQ1NTA4ODI0MWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWN1cnNv ci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xY3Vyc29yLmNwcAorQEAgLTI1MSw3 ICsyNTEsOCBAQCB2b2lkIFFDdXJzb3I6OnNldFBvcyhRU2NyZWVuICpzY3JlZW4sIGludCB4LCBp bnQgeSkKKyB7CisgICAgIGlmIChzY3JlZW4pIHsKKyAgICAgICAgIGlmIChRUGxhdGZvcm1DdXJz b3IgKmN1cnNvciA9IHNjcmVlbi0+aGFuZGxlKCktPmN1cnNvcigpKSB7CistICAgICAgICAgICAg Y29uc3QgUVBvaW50IGRldmljZVBvcyA9IFFIaWdoRHBpOjp0b05hdGl2ZVBpeGVscyhRUG9pbnQo eCwgeSksIHNjcmVlbik7CisrICAgICAgICAgICAgY29uc3QgUVBvaW50IHBvcyh4LCB5KTsKKysg ICAgICAgICAgICBjb25zdCBRUG9pbnQgZGV2aWNlUG9zID0gUUhpZ2hEcGk6OnRvTmF0aXZlUGl4 ZWxzKHBvcywgc2NyZWVuLT52aXJ0dWFsU2libGluZ0F0KHBvcykpOworICAgICAgICAgICAgIC8v IE5lZWQgdG8gY2hlY2ssIHNpbmNlIHNvbWUgWCBzZXJ2ZXJzIGdlbmVyYXRlIG51bGwgbW91c2Ug bW92ZQorICAgICAgICAgICAgIC8vIGV2ZW50cywgY2F1c2luZyBsb29waW5nIGluIGFwcGxpY2F0 aW9ucyB3aGljaCBjYWxsIHNldFBvcygpIG9uCisgICAgICAgICAgICAgLy8gZXZlcnkgbW91c2Ug bW92ZSBldmVudC4KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWhpZ2hkcGlz Y2FsaW5nLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcuY3BwCitp bmRleCA5YmJmMjc3M2E5Li4zYWM0YTRkOGI2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkv a2VybmVsL3FoaWdoZHBpc2NhbGluZy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9x aGlnaGRwaXNjYWxpbmcuY3BwCitAQCAtNTgwLDkgKzU4MCw4IEBAIHZvaWQgUUhpZ2hEcGlTY2Fs aW5nOjpzZXRTY3JlZW5GYWN0b3IoUVNjcmVlbiAqc2NyZWVuLCBxcmVhbCBmYWN0b3IpCisgICAg IGVsc2UKKyAgICAgICAgIHFOYW1lZFNjcmVlblNjYWxlRmFjdG9ycygpLT5pbnNlcnQobmFtZSwg ZmFjdG9yKTsKKyAKKy0gICAgLy8gaGFjayB0byBmb3JjZSByZS1ldmFsdWF0aW9uIG9mIHNjcmVl biBnZW9tZXRyeQorICAgICBpZiAoc2NyZWVuLT5oYW5kbGUoKSkKKy0gICAgICAgIHNjcmVlbi0+ ZF9mdW5jKCktPnNldFBsYXRmb3JtU2NyZWVuKHNjcmVlbi0+aGFuZGxlKCkpOyAvLyB1cGRhdGVz IGdlb21ldHJpZXMgYmFzZWQgb24gc2NhbGUgZmFjdG9yCisrICAgICAgICBzY3JlZW4tPmRfZnVu YygpLT51cGRhdGVMb2dpY2FsRHBpKCk7CisgfQorIAorIFFQb2ludCBRSGlnaERwaVNjYWxpbmc6 Om1hcFBvc2l0aW9uVG9OYXRpdmUoY29uc3QgUVBvaW50ICZwb3MsIGNvbnN0IFFQbGF0Zm9ybVNj cmVlbiAqcGxhdGZvcm1TY3JlZW4pCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVs L3FrZXlzZXF1ZW5jZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlLmNw cAoraW5kZXggYTc1YjhlZjkyMC4uNGYyZDI5NDczOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Z3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwv cWtleXNlcXVlbmNlLmNwcAorQEAgLTcwMSw2ICs3MDEsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCB7CisgICAgIHsgUXQ6OktleV9Ub3VjaHBhZFRvZ2dsZSwgIFFUX1RSQU5TTEFURV9OT09QKCJR U2hvcnRjdXQiLCAiVG91Y2hwYWQgVG9nZ2xlIikgfSwKKyAgICAgeyBRdDo6S2V5X1RvdWNocGFk T24sICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlRvdWNocGFkIE9uIikgfSwKKyAg ICAgeyBRdDo6S2V5X1RvdWNocGFkT2ZmLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIs ICJUb3VjaHBhZCBPZmYiKSB9LAorKyAgICB7IFF0OjpLZXlfU2hpZnQsICBRVF9UUkFOU0xBVEVf Tk9PUCgiUVNob3J0Y3V0IiwgIlNoaWZ0IikgfSwKKysgICAgeyBRdDo6S2V5X0NvbnRyb2wsICBR VF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIkNvbnRyb2wiKSB9LAorKyAgICB7IFF0OjpL ZXlfQWx0LCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJBbHQiKSB9LAorKyAgICB7 IFF0OjpLZXlfTWV0YSwgIFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiTWV0YSIpIH0s CisgCisgfTsKKyBzdGF0aWMgUV9DT05TVEVYUFIgaW50IG51bUtleU5hbWVzID0gc2l6ZW9mIGtl eW5hbWUgLyBzaXplb2YgKmtleW5hbWU7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2Vy bmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZv cm1zZXJ2aWNlcy5jcHAKK2luZGV4IGZkYzZhNmM0YWEuLmFjNDdmOThjNWQgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuY3BwCisrKysgYi9xdGJh c2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuY3BwCitAQCAtNTUsNiArNTUsMTkg QEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgICAgIFxicmllZiBUaGUgUVBsYXRmb3JtU2VydmljZXMg cHJvdmlkZXMgdGhlIGJhY2tlbmQgZm9yIGRlc2t0b3AtcmVsYXRlZCBmdW5jdGlvbmFsaXR5Lgor ICovCisgCisrLyohCisrICAgIFxlbnVtIFFQbGF0Zm9ybVNlcnZpY2VzOjpDYXBhYmlsaXR5Cisr CisrICAgIENhcGFiaWxpdGllcyBhcmUgdXNlZCB0byBkZXRlcm1pbmUgYSBzcGVjaWZpYyBwbGF0 Zm9ybSBzZXJ2aWNlJ3MgYXZhaWxhYmlsaXR5LgorKworKyAgICBcdmFsdWUgQ29sb3JQaWNraW5n RnJvbVNjcmVlbiBUaGUgcGxhdGZvcm0gbmF0aXZlbHkgc3VwcG9ydHMgY29sb3IgcGlja2luZyBm cm9tIHNjcmVlbi4KKysgICAgVGhpcyBjYXBhYmlsaXR5IGluZGljYXRlcyB0aGF0IHRoZSBwbGF0 Zm9ybSBzdXBwb3J0cyAib3BhcXVlIiBjb2xvciBwaWNraW5nLCB3aGVyZSB0aGUKKysgICAgcGxh dGZvcm0gaW1wbGVtZW50cyBhIGNvbXBsZXRlIHVzZXIgZXhwZXJpZW5jZSBmb3IgY29sb3IgcGlj a2luZyBhbmQgb3V0cHV0cyBhIGNvbG9yLgorKyAgICBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIHRo ZSBhcHBsaWNhdGlvbiBpbXBsZW1lbnRpbmcgdGhlIGNvbG9yIHBpY2tpbmcgdXNlciBleHBlcmll bmNlCisrICAgICh0YWtpbmcgY2FyZSBvZiBzaG93aW5nIGEgY3Jvc3MgaGFpciwgaW5zdHJ1Y3Rp bmcgdGhlIHBsYXRmb3JtIGludGVncmF0aW9uIHRvIG9idGFpbgorKyAgICB0aGUgY29sb3IgYXQg YSBnaXZlbiBwaXhlbCwgZXRjLikuIFRoZSByZWxhdGVkIHNlcnZpY2UgZnVuY3Rpb24gaXMgcGlj a0NvbG9yKCkuCisrICovCisrCisgUVBsYXRmb3JtU2VydmljZXM6OlFQbGF0Zm9ybVNlcnZpY2Vz KCkKKyB7IH0KKyAKK0BAIC04NSw1ICs5OCwxNiBAQCBRQnl0ZUFycmF5IFFQbGF0Zm9ybVNlcnZp Y2VzOjpkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdAorICAgICByZXR1cm4gUUJ5dGVBcnJheSgi VU5LTk9XTiIpOworIH0KKyAKKytRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgKlFQbGF0Zm9y bVNlcnZpY2VzOjpjb2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQpCisreworKyAgICBRX1VOVVNF RChwYXJlbnQpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisrYm9vbCBRUGxhdGZvcm1T ZXJ2aWNlczo6aGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNhcGFiaWxpdHkpIGNvbnN0Cisrewor KyAgICBRX1VOVVNFRChjYXBhYmlsaXR5KQorKyAgICByZXR1cm4gZmFsc2U7CisrfQorIAorIFFU X0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRm b3Jtc2VydmljZXMuaCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5o CitpbmRleCA1ZGU5NmNmYTdkLi5hOGIyYTRjZTcxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9n dWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5l bC9xcGxhdGZvcm1zZXJ2aWNlcy5oCitAQCAtNTAsMTYgKzUwLDMyIEBACisgLy8KKyAKKyAjaW5j bHVkZSA8UXRHdWkvcXRndWlnbG9iYWwuaD4KKysjaW5jbHVkZSA8UXRDb3JlL3FvYmplY3QuaD4K KyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBjbGFzcyBRVXJsOworK2NsYXNzIFFXaW5kb3c7 CisrCisrY2xhc3MgUV9HVUlfRVhQT1JUIFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciA6IHB1 YmxpYyBRT2JqZWN0CisreworKyAgICBRX09CSkVDVAorK3B1YmxpYzoKKysgICAgdXNpbmcgUU9i amVjdDo6UU9iamVjdDsKKysgICAgdmlydHVhbCB2b2lkIHBpY2tDb2xvcigpID0gMDsKKytRX1NJ R05BTFM6CisrICAgIHZvaWQgY29sb3JQaWNrZWQoY29uc3QgUUNvbG9yICZjb2xvcik7CisrfTsK KyAKKyBjbGFzcyBRX0dVSV9FWFBPUlQgUVBsYXRmb3JtU2VydmljZXMKKyB7CisgcHVibGljOgor ICAgICBRX0RJU0FCTEVfQ09QWV9NT1ZFKFFQbGF0Zm9ybVNlcnZpY2VzKQorIAorKyAgICBlbnVt IENhcGFiaWxpdHkgeworKyAgICAgICAgQ29sb3JQaWNraW5nLAorKyAgICB9OworKworICAgICBR UGxhdGZvcm1TZXJ2aWNlcygpOworICAgICB2aXJ0dWFsIH5RUGxhdGZvcm1TZXJ2aWNlcygpIHsg fQorIAorQEAgLTY3LDYgKzgzLDEwIEBAIHB1YmxpYzoKKyAgICAgdmlydHVhbCBib29sIG9wZW5E b2N1bWVudChjb25zdCBRVXJsICZ1cmwpOworIAorICAgICB2aXJ0dWFsIFFCeXRlQXJyYXkgZGVz a3RvcEVudmlyb25tZW50KCkgY29uc3Q7CisrCisrICAgIHZpcnR1YWwgYm9vbCBoYXNDYXBhYmls aXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkgY29uc3Q7CisrCisrICAgIHZpcnR1YWwgUVBsYXRm b3JtU2VydmljZUNvbG9yUGlja2VyICpjb2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQgPSBudWxs cHRyKTsKKyB9OworIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuY3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3Fw bGF0Zm9ybXRoZW1lLmNwcAoraW5kZXggNzE1MjFjMDMzOS4uMjMyNTg3MzI0NSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5jcHAKK0BAIC0xNjMsNiArMTYzLDggQEAg UVRfQkVHSU5fTkFNRVNQQUNFCisgCisgICAgIFx2YWx1ZSBTaG93U2hvcnRjdXRzSW5Db250ZXh0 TWVudXMgKGJvb2wpIFdoZXRoZXIgdG8gZGlzcGxheSBzaG9ydGN1dCBrZXkgc2VxdWVuY2VzIGlu IGNvbnRleHQgbWVudXMuCisgCisrICAgIFx2YWx1ZSBCdXR0b25QcmVzc0tleXMgKFFMaXN0PFF0 OjpLZXk+KSBBIGxpc3Qgb2Yga2V5cyB0aGF0IGNhbiBiZSB1c2VkIHRvIHByZXNzIGJ1dHRvbnMg dmlhIGtleWJvYXJkIGlucHV0LgorKworICAgICBcc2EgdGhlbWVIaW50KCksIFFTdHlsZTo6cGl4 ZWxNZXRyaWMoKQorICovCisgCitAQCAtNTYzLDYgKzU2NSw4IEBAIFFWYXJpYW50IFFQbGF0Zm9y bVRoZW1lOjpkZWZhdWx0VGhlbWVIaW50KFRoZW1lSGludCBoaW50KQorICAgICAgICAgfQorICAg ICBjYXNlIE1vdXNlUXVpY2tTZWxlY3Rpb25UaHJlc2hvbGQ6CisgICAgICAgICByZXR1cm4gUVZh cmlhbnQoMTApOworKyAgICBjYXNlIEJ1dHRvblByZXNzS2V5czoKKysgICAgICAgIHJldHVybiBR VmFyaWFudDo6ZnJvbVZhbHVlKFFMaXN0PFF0OjpLZXk+KHsgUXQ6OktleV9TcGFjZSwgUXQ6Oktl eV9TZWxlY3QgfSkpOworICAgICB9CisgICAgIHJldHVybiBRVmFyaWFudCgpOworIH0KK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuaCBiL3F0YmFzZS9z cmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5oCitpbmRleCAzMTg1ZmM0NTQxLi43ZTZjOWQ1 NzQwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmgK KysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5oCitAQCAtMTIwLDcg KzEyMCw4IEBAIHB1YmxpYzoKKyAgICAgICAgIFRvdWNoRG91YmxlVGFwRGlzdGFuY2UsCisgICAg ICAgICBTaG93U2hvcnRjdXRzSW5Db250ZXh0TWVudXMsCisgICAgICAgICBJY29uRmFsbGJhY2tT ZWFyY2hQYXRocywKKy0gICAgICAgIE1vdXNlUXVpY2tTZWxlY3Rpb25UaHJlc2hvbGQKKysgICAg ICAgIE1vdXNlUXVpY2tTZWxlY3Rpb25UaHJlc2hvbGQsCisrICAgICAgICBCdXR0b25QcmVzc0tl eXMKKyAgICAgfTsKKyAKKyAgICAgZW51bSBEaWFsb2dUeXBlIHsKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNj cmVlbi5jcHAKK2luZGV4IDhlMGViMzUxMTYuLjVkMTcyYTU4ZGQgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5l bC9xc2NyZWVuLmNwcAorQEAgLTc3LDYgKzc3LDEyIEBAIFFTY3JlZW46OlFTY3JlZW4oUVBsYXRm b3JtU2NyZWVuICpzY3JlZW4pCisgICAgIGQtPnNldFBsYXRmb3JtU2NyZWVuKHNjcmVlbik7Cisg fQorIAorK3ZvaWQgUVNjcmVlblByaXZhdGU6OnVwZGF0ZUxvZ2ljYWxEcGkoKQorK3sKKysgICAg bG9naWNhbERwaSA9IFFQbGF0Zm9ybVNjcmVlbjo6b3ZlcnJpZGVEcGkocGxhdGZvcm1TY3JlZW4t PmxvZ2ljYWxEcGkoKSk7CisrICAgIHVwZGF0ZUdlb21ldHJpZXNXaXRoU2lnbmFscygpOyAvLyB1 cGRhdGVzIGdlb21ldHJpZXMgYmFzZWQgb24gc2NhbGUgZmFjdG9yCisrfQorKworIHZvaWQgUVNj cmVlblByaXZhdGU6OnVwZGF0ZUdlb21ldHJpZXNXaXRoU2lnbmFscygpCisgeworICAgICBjb25z dCBRUmVjdCBvbGRHZW9tZXRyeSA9IGdlb21ldHJ5OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Z3VpL2tlcm5lbC9xc2NyZWVuX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3Au aAoraW5kZXggN2RhNTQyYzI1ZS4uZTUwZmMzMTkwYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Z3VpL2tlcm5lbC9xc2NyZWVuX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3Jl ZW5fcC5oCitAQCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CisgICAgICAgICBnZW9tZXRyeSA9IHBs YXRmb3JtU2NyZWVuLT5kZXZpY2VJbmRlcGVuZGVudEdlb21ldHJ5KCk7CisgICAgICAgICBhdmFp bGFibGVHZW9tZXRyeSA9IFFIaWdoRHBpOjpmcm9tTmF0aXZlKHBsYXRmb3JtU2NyZWVuLT5hdmFp bGFibGVHZW9tZXRyeSgpLCBRSGlnaERwaVNjYWxpbmc6OmZhY3RvcihwbGF0Zm9ybVNjcmVlbiks IGdlb21ldHJ5LnRvcExlZnQoKSk7CisgICAgIH0KKysgICAgdm9pZCB1cGRhdGVMb2dpY2FsRHBp KCk7CisgCisgICAgIHZvaWQgdXBkYXRlUHJpbWFyeU9yaWVudGF0aW9uKCk7CisgICAgIHZvaWQg dXBkYXRlR2VvbWV0cmllc1dpdGhTaWduYWxzKCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9n dWkvcGFpbnRpbmcvcWJsZW5kZnVuY3Rpb25zX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5n L3FibGVuZGZ1bmN0aW9uc19wLmgKK2luZGV4IDA4MGRhOThlYzQuLjY5OTdkNjJiM2MgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxlbmRmdW5jdGlvbnNfcC5oCisrKysg Yi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxlbmRmdW5jdGlvbnNfcC5oCitAQCAtMjQ2LDI1 ICsyNDYsMzIgQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1hZ2VfcmFzdGVyaXplKERlc3RUICpkZXN0 UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IGR1ZHgsIGludCBkdmR4LCBpbnQgZHVkeSwgaW50IGR2ZHksIGludCB1MCwgaW50IHYwLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbGVuZGVyIGJsZW5kZXIpCisgeworLSAg ICBpbnQgZnJvbVkgPSBxTWF4KHFSb3VuZCh0b3BZKSwgY2xpcC50b3AoKSk7CistICAgIGludCB0 b1kgPSBxTWluKHFSb3VuZChib3R0b21ZKSwgY2xpcC50b3AoKSArIGNsaXAuaGVpZ2h0KCkpOwor KyAgICBxaW50NjQgZnJvbVkgPSBxTWF4KHFSb3VuZCh0b3BZKSwgY2xpcC50b3AoKSk7CisrICAg IHFpbnQ2NCB0b1kgPSBxTWluKHFSb3VuZChib3R0b21ZKSwgY2xpcC50b3AoKSArIGNsaXAuaGVp Z2h0KCkpOworICAgICBpZiAoZnJvbVkgPj0gdG9ZKQorICAgICAgICAgcmV0dXJuOworIAorICAg ICBxcmVhbCBsZWZ0U2xvcGUgPSAoYm90dG9tTGVmdC54IC0gdG9wTGVmdC54KSAvIChib3R0b21M ZWZ0LnkgLSB0b3BMZWZ0LnkpOworICAgICBxcmVhbCByaWdodFNsb3BlID0gKGJvdHRvbVJpZ2h0 LnggLSB0b3BSaWdodC54KSAvIChib3R0b21SaWdodC55IC0gdG9wUmlnaHQueSk7CistICAgIGlu dCBkeF9sID0gaW50KGxlZnRTbG9wZSAqIDB4MTAwMDApOworLSAgICBpbnQgZHhfciA9IGludChy aWdodFNsb3BlICogMHgxMDAwMCk7CistICAgIGludCB4X2wgPSBpbnQoKHRvcExlZnQueCArIChx cmVhbCgwLjUpICsgZnJvbVkgLSB0b3BMZWZ0LnkpICogbGVmdFNsb3BlICsgcXJlYWwoMC41KSkg KiAweDEwMDAwKTsKKy0gICAgaW50IHhfciA9IGludCgodG9wUmlnaHQueCArIChxcmVhbCgwLjUp ICsgZnJvbVkgLSB0b3BSaWdodC55KSAqIHJpZ2h0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4MTAw MDApOworLQorLSAgICBpbnQgZnJvbVgsIHRvWCwgeDEsIHgyLCB1LCB2LCBpLCBpaTsKKysgICAg cWludDY0IGR4X2wgPSBxaW50NjQobGVmdFNsb3BlICogMHgxMDAwMCk7CisrICAgIHFpbnQ2NCBk eF9yID0gcWludDY0KHJpZ2h0U2xvcGUgKiAweDEwMDAwKTsKKysgICAgcWludDY0IHhfbCA9IHFp bnQ2NCgodG9wTGVmdC54ICsgKHFyZWFsKDAuNSkgKyBmcm9tWSAtIHRvcExlZnQueSkgKiBsZWZ0 U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4MTAwMDApOworKyAgICBxaW50NjQgeF9yID0gcWludDY0 KCh0b3BSaWdodC54ICsgKHFyZWFsKDAuNSkgKyBmcm9tWSAtIHRvcFJpZ2h0LnkpICogcmlnaHRT bG9wZSArIHFyZWFsKDAuNSkpICogMHgxMDAwMCk7CisrCisrICAgIHFpbnQ2NCBzb3VyY2VSZWN0 VG9wID0gcWludDY0KHNvdXJjZVJlY3QudG9wKCkpOworKyAgICBxaW50NjQgc291cmNlUmVjdExl ZnQgPSBxaW50NjQoc291cmNlUmVjdC5sZWZ0KCkpOworKyAgICBxaW50NjQgc291cmNlUmVjdFdp ZHRoID0gcWludDY0KHNvdXJjZVJlY3Qud2lkdGgoKSk7CisrICAgIHFpbnQ2NCBzb3VyY2VSZWN0 SGVpZ2h0ID0gcWludDY0KHNvdXJjZVJlY3QuaGVpZ2h0KCkpOworKyAgICBxaW50NjQgY2xpcExl ZnQgPSBxaW50NjQoY2xpcC5sZWZ0KCkpOworKyAgICBxaW50NjQgY2xpcFdpZHRoID0gcWludDY0 KGNsaXAud2lkdGgoKSk7CisrCisrICAgIHFpbnQ2NCBmcm9tWCwgdG9YLCB4MSwgeDIsIHUsIHYs IGksIGlpOworICAgICBEZXN0VCAqbGluZTsKKy0gICAgZm9yIChpbnQgeSA9IGZyb21ZOyB5IDwg dG9ZOyArK3kpIHsKKysgICAgZm9yIChxaW50NjQgeSA9IGZyb21ZOyB5IDwgdG9ZOyArK3kpIHsK KyAgICAgICAgIGxpbmUgPSByZWludGVycHJldF9jYXN0PERlc3RUICo+KHJlaW50ZXJwcmV0X2Nh c3Q8dWNoYXIgKj4oZGVzdFBpeGVscykgKyB5ICogZGJwbCk7CisgCistICAgICAgICBmcm9tWCA9 IHFNYXgoeF9sID4+IDE2LCBjbGlwLmxlZnQoKSk7CistICAgICAgICB0b1ggPSBxTWluKHhfciA+ PiAxNiwgY2xpcC5sZWZ0KCkgKyBjbGlwLndpZHRoKCkpOworKyAgICAgICAgZnJvbVggPSBxTWF4 KHhfbCA+PiAxNiwgY2xpcExlZnQpOworKyAgICAgICAgdG9YID0gcU1pbih4X3IgPj4gMTYsIGNs aXBMZWZ0ICsgY2xpcFdpZHRoKTsKKyAgICAgICAgIGlmIChmcm9tWCA8IHRvWCkgeworICAgICAg ICAgICAgIC8vIEJlY2F1c2Ugb2Ygcm91bmRpbmcsIHdlIGNhbiBnZXQgc291cmNlIGNvb3JkaW5h dGVzIG91dHNpZGUgdGhlIHNvdXJjZSBpbWFnZS4KKyAgICAgICAgICAgICAvLyBDbGFtcCB0aGVz ZSBjb29yZGluYXRlcyB0byB0aGUgc291cmNlIHJlY3QgdG8gYXZvaWQgc2VnbWVudGF0aW9uIGZh dWx0IGFuZAorQEAgLTI3NSwxMCArMjgyLDEwIEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jh c3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisgICAgICAgICAgICAgdSA9IHgx ICogZHVkeCArIHkgKiBkdWR5ICsgdTA7CisgICAgICAgICAgICAgdiA9IHgxICogZHZkeCArIHkg KiBkdmR5ICsgdjA7CisgICAgICAgICAgICAgZm9yICg7IHgxIDwgdG9YOyArK3gxKSB7CistICAg ICAgICAgICAgICAgIGludCB1dSA9IHUgPj4gMTY7CistICAgICAgICAgICAgICAgIGludCB2diA9 IHYgPj4gMTY7CistICAgICAgICAgICAgICAgIGlmICh1dSA+PSBzb3VyY2VSZWN0LmxlZnQoKSAm JiB1dSA8IHNvdXJjZVJlY3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0aCgpCistICAgICAgICAg ICAgICAgICAgICAmJiB2diA+PSBzb3VyY2VSZWN0LnRvcCgpICYmIHZ2IDwgc291cmNlUmVjdC50 b3AoKSArIHNvdXJjZVJlY3QuaGVpZ2h0KCkpIHsKKysgICAgICAgICAgICAgICAgcWludDY0IHV1 ID0gdSA+PiAxNjsKKysgICAgICAgICAgICAgICAgcWludDY0IHZ2ID0gdiA+PiAxNjsKKysgICAg ICAgICAgICAgICAgaWYgKHV1ID49IHNvdXJjZVJlY3RMZWZ0ICYmIHV1IDwgc291cmNlUmVjdExl ZnQgKyBzb3VyY2VSZWN0V2lkdGgKKysgICAgICAgICAgICAgICAgICAgICYmIHZ2ID49IHNvdXJj ZVJlY3RUb3AgJiYgdnYgPCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhlaWdodCkgeworICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICAgdSArPSBkdWR4OworQEAgLTI5MCwxMCArMjk3LDEwIEBAIHZvaWQgcXRfdHJhbnNmb3Jt X2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisgICAgICAgICAg ICAgdSA9ICh4MiAtIDEpICogZHVkeCArIHkgKiBkdWR5ICsgdTA7CisgICAgICAgICAgICAgdiA9 ICh4MiAtIDEpICogZHZkeCArIHkgKiBkdmR5ICsgdjA7CisgICAgICAgICAgICAgZm9yICg7IHgy ID4geDE7IC0teDIpIHsKKy0gICAgICAgICAgICAgICAgaW50IHV1ID0gdSA+PiAxNjsKKy0gICAg ICAgICAgICAgICAgaW50IHZ2ID0gdiA+PiAxNjsKKy0gICAgICAgICAgICAgICAgaWYgKHV1ID49 IHNvdXJjZVJlY3QubGVmdCgpICYmIHV1IDwgc291cmNlUmVjdC5sZWZ0KCkgKyBzb3VyY2VSZWN0 LndpZHRoKCkKKy0gICAgICAgICAgICAgICAgICAgICYmIHZ2ID49IHNvdXJjZVJlY3QudG9wKCkg JiYgdnYgPCBzb3VyY2VSZWN0LnRvcCgpICsgc291cmNlUmVjdC5oZWlnaHQoKSkgeworKyAgICAg ICAgICAgICAgICBxaW50NjQgdXUgPSB1ID4+IDE2OworKyAgICAgICAgICAgICAgICBxaW50NjQg dnYgPSB2ID4+IDE2OworKyAgICAgICAgICAgICAgICBpZiAodXUgPj0gc291cmNlUmVjdExlZnQg JiYgdXUgPCBzb3VyY2VSZWN0TGVmdCArIHNvdXJjZVJlY3RXaWR0aAorKyAgICAgICAgICAgICAg ICAgICAgJiYgdnYgPj0gc291cmNlUmVjdFRvcCAmJiB2diA8IHNvdXJjZVJlY3RUb3AgKyBzb3Vy Y2VSZWN0SGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICB1IC09IGR1ZHg7CitAQCAtMzA4LDggKzMxNSw4IEBA IHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50 IGRicGwsCisgICAgICAgICAgICAgLy8gQmVnaW5uaW5nIG9mIHRoZSBzY2FuIGxpbmUsIHdpdGgg cGVyLXBpeGVsIGNoZWNrcy4KKyAgICAgICAgICAgICBpID0geDEgLSBmcm9tWDsKKyAgICAgICAg ICAgICB3aGlsZSAoaSkgeworLSAgICAgICAgICAgICAgICBpbnQgdXUgPSBxQm91bmQoc291cmNl UmVjdC5sZWZ0KCksIHUgPj4gMTYsIHNvdXJjZVJlY3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0 aCgpIC0gMSk7CistICAgICAgICAgICAgICAgIGludCB2diA9IHFCb3VuZChzb3VyY2VSZWN0LnRv cCgpLCB2ID4+IDE2LCBzb3VyY2VSZWN0LnRvcCgpICsgc291cmNlUmVjdC5oZWlnaHQoKSAtIDEp OworKyAgICAgICAgICAgICAgICBxaW50NjQgdXUgPSBxQm91bmQoc291cmNlUmVjdExlZnQsIHUg Pj4gMTYsIHNvdXJjZVJlY3RMZWZ0ICsgc291cmNlUmVjdFdpZHRoIC0gMSk7CisrICAgICAgICAg ICAgICAgIHFpbnQ2NCB2diA9IHFCb3VuZChzb3VyY2VSZWN0VG9wLCB2ID4+IDE2LCBzb3VyY2VS ZWN0VG9wICsgc291cmNlUmVjdEhlaWdodCAtIDEpOworICAgICAgICAgICAgICAgICBibGVuZGVy LndyaXRlKGxpbmUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgU3JjVCAqPihyZWludGVycHJldF9j YXN0PGNvbnN0IHVjaGFyICo+KHNyY1BpeGVscykgKyB2diAqIHNicGwpW3V1XSk7CisgICAgICAg ICAgICAgICAgIHUgKz0gZHVkeDsKKyAgICAgICAgICAgICAgICAgdiArPSBkdmR4OworQEAgLTM0 OCw4ICszNTUsOCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRl c3RQaXhlbHMsIGludCBkYnBsLAorICAgICAgICAgICAgIC8vIEVuZCBvZiB0aGUgc2NhbiBsaW5l LCB3aXRoIHBlci1waXhlbCBjaGVja3MuCisgICAgICAgICAgICAgaSA9IHRvWCAtIHgyOworICAg ICAgICAgICAgIHdoaWxlIChpKSB7CistICAgICAgICAgICAgICAgIGludCB1dSA9IHFCb3VuZChz b3VyY2VSZWN0LmxlZnQoKSwgdSA+PiAxNiwgc291cmNlUmVjdC5sZWZ0KCkgKyBzb3VyY2VSZWN0 LndpZHRoKCkgLSAxKTsKKy0gICAgICAgICAgICAgICAgaW50IHZ2ID0gcUJvdW5kKHNvdXJjZVJl Y3QudG9wKCksIHYgPj4gMTYsIHNvdXJjZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdodCgp IC0gMSk7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB1dSA9IHFCb3VuZChzb3VyY2VSZWN0TGVm dCwgdSA+PiAxNiwgc291cmNlUmVjdExlZnQgKyBzb3VyY2VSZWN0V2lkdGggLSAxKTsKKysgICAg ICAgICAgICAgICAgcWludDY0IHZ2ID0gcUJvdW5kKHNvdXJjZVJlY3RUb3AsIHYgPj4gMTYsIHNv dXJjZVJlY3RUb3AgKyBzb3VyY2VSZWN0SGVpZ2h0IC0gMSk7CisgICAgICAgICAgICAgICAgIGJs ZW5kZXIud3JpdGUobGluZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBTcmNUICo+KHJlaW50ZXJw cmV0X2Nhc3Q8Y29uc3QgdWNoYXIgKj4oc3JjUGl4ZWxzKSArIHZ2ICogc2JwbClbdXVdKTsKKyAg ICAgICAgICAgICAgICAgdSArPSBkdWR4OworICAgICAgICAgICAgICAgICB2ICs9IGR2ZHg7Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWNvbG9ydHJjbHV0X3AuaCBiL3F0 YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fjb2xvcnRyY2x1dF9wLmgKK2luZGV4IDc2YTZhNjA4MDMu LjI0ZmQ1MjJlNmMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xY29sb3J0 cmNsdXRfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xY29sb3J0cmNsdXRfcC5o CitAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKKyAgICAgICAgIHJldHVybiBRUmdiYTY0Ojpm cm9tUmdiYTY0KHIsIGcsIGIsIHFBbHBoYShyZ2IzMikgKiAyNTcpOworICNlbmRpZgorICAgICB9 CisrICAgIFFSZ2JhNjQgdG9MaW5lYXI2NChRUmdiYTY0KSBjb25zdCA9IGRlbGV0ZTsKKyAKKyAg ICAgUVJnYiB0b0xpbmVhcihRUmdiIHJnYjMyKSBjb25zdAorICAgICB7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcWRyYXdoZWxwZXIuY3BwCitpbmRleCBhNjE3OTM1MDhhLi41YmEyZDI3N2I3IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xZHJhd2hlbHBlci5jcHAKK0BAIC02MDkxLDcgKzYw OTEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWxwaGFyZ2JibGVuZF9hcmdiMzIocXVpbnQzMiAq ZHN0LCB1aW50IGNvdmVyYWdlLCBjb25zdCBRUmdiYQorIHN0YXRpYyBpbmxpbmUgdm9pZCByZ2JC bGVuZFBpeGVsKFFSZ2JhNjQgJmRzdCwgaW50IGNvdmVyYWdlLCBRUmdiYTY0IHNsaW5lYXIsIGNv bnN0IFFDb2xvclRyY0x1dCAqY29sb3JQcm9maWxlKQorIHsKKyAgICAgLy8gRG8gYSBnYW1tYWNv cnJlY3RlZCBSR0IgYWxwaGFibGVuZC4uLgorLSAgICBjb25zdCBRUmdiYTY0IGRsaW5lYXIgPSBj b2xvclByb2ZpbGUgPyBjb2xvclByb2ZpbGUtPnRvTGluZWFyNjQoZHN0KSA6IGRzdDsKKysgICAg Y29uc3QgUVJnYmE2NCBkbGluZWFyID0gY29sb3JQcm9maWxlID8gY29sb3JQcm9maWxlLT50b0xp bmVhcihkc3QpIDogZHN0OworIAorICAgICBRUmdiYTY0IGJsZW5kID0gcmdiQmxlbmQoZGxpbmVh ciwgc2xpbmVhciwgY292ZXJhZ2UpOworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3Bh aW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAKK2luZGV4IDI4MzkyM2RlNTIuLmYwOGViOWNiZWUgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyLmNw cAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAK K0BAIC01NjAsMzEgKzU2MCw2IEBAIHZvaWQgUVJhc3RlclBhaW50RW5naW5lOjp1cGRhdGVNYXRy aXgoY29uc3QgUVRyYW5zZm9ybSAmbWF0cml4KQorICAgICBRUmFzdGVyUGFpbnRFbmdpbmVTdGF0 ZSAqcyA9IHN0YXRlKCk7CisgICAgIC8vIEZBTENPTjogZ2V0IHJpZCBvZiB0aGlzIGxpbmUsIHNl ZSBkcmF3SW1hZ2UgY2FsbCBiZWxvdy4KKyAgICAgcy0+bWF0cml4ID0gbWF0cml4OworLSAgICBR VHJhbnNmb3JtOjpUcmFuc2Zvcm1hdGlvblR5cGUgdHhvcCA9IHMtPm1hdHJpeC50eXBlKCk7Cist CistICAgIHN3aXRjaCAodHhvcCkgeworLQorLSAgICBjYXNlIFFUcmFuc2Zvcm06OlR4Tm9uZToK Ky0gICAgICAgIHMtPmZsYWdzLmludF94Zm9ybSA9IHRydWU7CistICAgICAgICBicmVhazsKKy0K Ky0gICAgY2FzZSBRVHJhbnNmb3JtOjpUeFRyYW5zbGF0ZToKKy0gICAgICAgIHMtPmZsYWdzLmlu dF94Zm9ybSA9IHFyZWFsKGludChzLT5tYXRyaXguZHgoKSkpID09IHMtPm1hdHJpeC5keCgpCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5tYXRyaXguZHkoKSkp ID09IHMtPm1hdHJpeC5keSgpOworLSAgICAgICAgYnJlYWs7CistCistICAgIGNhc2UgUVRyYW5z Zm9ybTo6VHhTY2FsZToKKy0gICAgICAgIHMtPmZsYWdzLmludF94Zm9ybSA9IHFyZWFsKGludChz LT5tYXRyaXguZHgoKSkpID09IHMtPm1hdHJpeC5keCgpCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICYmIHFyZWFsKGludChzLT5tYXRyaXguZHkoKSkpID09IHMtPm1hdHJpeC5keSgpCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5tYXRyaXgubTExKCkp KSA9PSBzLT5tYXRyaXgubTExKCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcXJl YWwoaW50KHMtPm1hdHJpeC5tMjIoKSkpID09IHMtPm1hdHJpeC5tMjIoKTsKKy0gICAgICAgIGJy ZWFrOworLQorLSAgICBkZWZhdWx0OiAvLyBzaGVhciAvIHBlcnNwZWN0aXZlLi4uCistICAgICAg ICBzLT5mbGFncy5pbnRfeGZvcm0gPSBmYWxzZTsKKy0gICAgICAgIGJyZWFrOworLSAgICB9Cist CisgICAgIHMtPmZsYWdzLnR4X25vc2hlYXIgPSBxdF9zY2FsZUZvclRyYW5zZm9ybShzLT5tYXRy aXgsICZzLT50eHNjYWxlKTsKKyAKKyAgICAgZW5zdXJlT3V0bGluZU1hcHBlcigpOworQEAgLTYx Nyw3ICs1OTIsNiBAQCBRUmFzdGVyUGFpbnRFbmdpbmVTdGF0ZTo6UVJhc3RlclBhaW50RW5naW5l U3RhdGUoKQorICAgICBmbGFncy5iaWxpbmVhciA9IGZhbHNlOworICAgICBmbGFncy5sZWdhY3lf cm91bmRpbmcgPSBmYWxzZTsKKyAgICAgZmxhZ3MuZmFzdF90ZXh0ID0gdHJ1ZTsKKy0gICAgZmxh Z3MuaW50X3hmb3JtID0gdHJ1ZTsKKyAgICAgZmxhZ3MudHhfbm9zaGVhciA9IHRydWU7CisgICAg IGZsYWdzLmZhc3RfaW1hZ2VzID0gdHJ1ZTsKKyAKK0BAIC0xNzkzLDcgKzE3NjcsNyBAQCB2b2lk IFFSYXN0ZXJQYWludEVuZ2luZTo6ZmlsbChjb25zdCBRVmVjdG9yUGF0aCAmcGF0aCwgY29uc3Qg UUJydXNoICZicnVzaCkKKyAgICAgUVJlY3RGIGNwUmVjdCA9IHBhdGguY29udHJvbFBvaW50UmVj dCgpOworICAgICBjb25zdCBRUmVjdEYgcGF0aERldmljZVJlY3QgPSBzLT5tYXRyaXgubWFwUmVj dChjcFJlY3QpOworICAgICAvLyBTa2lwIHBhdGhzIHRoYXQgYnkgY29uc2VydmF0aXZlIGVzdGlt YXRlcyBhcmUgY29tcGxldGVseSBvdXRzaWRlIHRoZSBwYWludCBkZXZpY2UuCistICAgIGlmICgh cGF0aERldmljZVJlY3QuaW50ZXJzZWN0cyhRUmVjdEYoZC0+ZGV2aWNlUmVjdCkpKQorKyAgICBp ZiAoIXBhdGhEZXZpY2VSZWN0LmludGVyc2VjdHMoUVJlY3RGKGQtPmRldmljZVJlY3QpKSB8fCAh cGF0aERldmljZVJlY3QuaXNWYWxpZCgpKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBQcm9j ZXNzU3BhbnMgYmxlbmQgPSBkLT5nZXRCcnVzaEZ1bmMocGF0aERldmljZVJlY3QsICZzLT5icnVz aERhdGEpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2lu ZV9yYXN0ZXJfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rl cl9wLmgKK2luZGV4IDA4OWFhZGMzZjcuLmJmNzM2M2Q1YWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyX3AuaAorKysrIGIvcXRiYXNlL3Ny Yy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlcl9wLmgKK0BAIC0xMTEsNyArMTExLDYg QEAgcHVibGljOgorICAgICAgICAgdWludCBiaWxpbmVhciA6IDE7CisgICAgICAgICB1aW50IGxl Z2FjeV9yb3VuZGluZyA6IDE7CisgICAgICAgICB1aW50IGZhc3RfdGV4dCA6IDE7CistICAgICAg ICB1aW50IGludF94Zm9ybSA6IDE7CisgICAgICAgICB1aW50IHR4X25vc2hlYXIgOiAxOworICAg ICAgICAgdWludCBmYXN0X2ltYWdlcyA6IDE7CisgICAgIH07CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZXJwYXRoLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50 aW5nL3FwYWludGVycGF0aC5jcHAKK2luZGV4IGY5NTQ0YTMyNDEuLmQ4MGZhZmVhZjEgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlcnBhdGguY3BwCisrKysgYi9x dGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlcnBhdGguY3BwCitAQCAtMTI1Myw3ICsxMjUz LDcgQEAgdm9pZCBRUGFpbnRlclBhdGg6OmFkZFRleHQoY29uc3QgUVBvaW50RiAmcG9pbnQsIGNv bnN0IFFGb250ICZmLCBjb25zdCBRU3RyaW5nICYKKyAKKyAgICAgICAgIGlmIChzaS5hbmFseXNp cy5mbGFncyA8IFFTY3JpcHRBbmFseXNpczo6VGFiT3JPYmplY3QpIHsKKyAgICAgICAgICAgICBR R2x5cGhMYXlvdXQgZ2x5cGhzID0gZW5nLT5zaGFwZWRHbHlwaHMoJnNpKTsKKy0gICAgICAgICAg ICBRRm9udEVuZ2luZSAqZmUgPSBmLmQtPmVuZ2luZUZvclNjcmlwdChzaS5hbmFseXNpcy5zY3Jp cHQpOworKyAgICAgICAgICAgIFFGb250RW5naW5lICpmZSA9IGVuZy0+Zm9udEVuZ2luZShzaSk7 CisgICAgICAgICAgICAgUV9BU1NFUlQoZmUpOworICAgICAgICAgICAgIGZlLT5hZGRPdXRsaW5l VG9QYXRoKHgsIHksIGdseXBocywgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaS5hbmFseXNpcy5iaWRpTGV2ZWwgJSAyCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9n dWkvcGFpbnRpbmcvcXBhdGhjbGlwcGVyX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fw YXRoY2xpcHBlcl9wLmgKK2luZGV4IDk0NDRhODdiNzEuLjE4ZjY0YzVlOGMgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBwZXJfcC5oCisrKysgYi9xdGJhc2Uv c3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBwZXJfcC5oCitAQCAtMTU2LDcgKzE1Niw3IEBAIHB1 YmxpYzoKKyAgICAgaW50IHZlcnRleChEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdDsKKyAKKyBw cml2YXRlOgorLSAgICBpbnQgbV9uZXh0WzJdWzJdOworKyAgICBpbnQgbV9uZXh0WzJdWzJdID0g eyB7IC0xLCAtMSB9LCB7IC0xLCAtMSB9IH07CisgfTsKKyAKKyBjbGFzcyBRUGF0aFNlZ21lbnRz CitAQCAtMjk2LDEwICsyOTYsNiBAQCBpbmxpbmUgUVBhdGhFZGdlOjpRUGF0aEVkZ2UoaW50IGEs IGludCBiKQorICAgICAsIGFuZ2xlKDApCisgICAgICwgaW52QW5nbGUoMCkKKyB7CistICAgIG1f bmV4dFswXVswXSA9IC0xOworLSAgICBtX25leHRbMV1bMF0gPSAtMTsKKy0gICAgbV9uZXh0WzBd WzBdID0gLTE7CistICAgIG1fbmV4dFsxXVswXSA9IC0xOworIH0KKyAKKyBpbmxpbmUgaW50IFFQ YXRoRWRnZTo6bmV4dChUcmF2ZXJzYWwgdHJhdmVyc2FsLCBEaXJlY3Rpb24gZGlyZWN0aW9uKSBj b25zdAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwZGYuY3BwIGIvcXRi YXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAKK2luZGV4IDMwNjY3NDRmMWIuLjJjOGQzYzNi NTMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGRmLmNwcAorKysrIGIv cXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAKK0BAIC0yNzYwLDYgKzI3NjAsOCBAQCBp bnQgUVBkZkVuZ2luZVByaXZhdGU6OmFkZEJydXNoUGF0dGVybihjb25zdCBRVHJhbnNmb3JtICZt LCBib29sICpzcGVjaWZ5Q29sb3IsCisgICAgICAgICByZXR1cm4gZ3JhZGllbnRCcnVzaChicnVz aCwgbWF0cml4LCBnU3RhdGVPYmplY3QpOworICAgICB9CisgCisrICAgIG1hdHJpeCA9IGJydXNo LnRyYW5zZm9ybSgpICogbWF0cml4OworKworICAgICBpZiAoKCFicnVzaC5pc09wYXF1ZSgpICYm IGJydXNoLnN0eWxlKCkgPCBRdDo6TGluZWFyR3JhZGllbnRQYXR0ZXJuKSB8fCBvcGFjaXR5ICE9 IDEuMCkKKyAgICAgICAgICpnU3RhdGVPYmplY3QgPSBhZGRDb25zdGFudEFscGhhT2JqZWN0KHFS b3VuZChicnVzaC5jb2xvcigpLmFscGhhKCkgKiBvcGFjaXR5KSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFSb3VuZChwZW4uY29sb3IoKS5hbHBoYSgp ICogb3BhY2l0eSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FzdHJv a2VyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FzdHJva2VyLmNwcAoraW5kZXggY2I1 ZDM5NWU4MC4uM2I2MzU3YTg5MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5n L3FzdHJva2VyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXN0cm9rZXIuY3Bw CitAQCAtMTE4Miw2ICsxMTgyLDcgQEAgdm9pZCBRRGFzaFN0cm9rZXI6OnByb2Nlc3NDdXJyZW50 U3VicGF0aCgpCisgICAgICAgICAvLyBDaGVjayBpZiB0aGUgZW50aXJlIGxpbmUgc2hvdWxkIGJl IGNsaXBwZWQgYXdheSBvciBzaW1wbGlmaWVkCisgICAgICAgICBib29sIGNsaXBJdCA9IGNsaXBw aW5nICYmICFsaW5lSW50ZXJzZWN0c1JlY3QocHJldiwgZSwgY2xpcF90bCwgY2xpcF9icik7Cisg ICAgICAgICBib29sIHNraXBEYXNoaW5nID0gZWxlbiAqIGludlN1bUxlbmd0aCA+IHJlcGV0aXRp b25MaW1pdCgpOworKyAgICAgICAgaW50IG1heERhc2hlcyA9IGRhc2hDb3VudDsKKyAgICAgICAg IGlmIChza2lwRGFzaGluZyB8fCBjbGlwSXQpIHsKKyAgICAgICAgICAgICAvLyBDdXQgYXdheSBm dWxsIGRhc2ggc2VxdWVuY2VzLgorICAgICAgICAgICAgIGVsZW4gLT0gc3RkOjpmbG9vcihlbGVu ICogaW52U3VtTGVuZ3RoKSAqIHN1bUxlbmd0aDsKK0BAIC0xMTk2LDcgKzExOTcsNyBAQCB2b2lk IFFEYXNoU3Ryb2tlcjo6cHJvY2Vzc0N1cnJlbnRTdWJwYXRoKCkKKyAgICAgICAgICAgICAgICAg ICAgIHBvcyA9IGVzdG9wOyAvLyBtb3ZlIHBvcyB0byBuZXh0IHBhdGggZWxlbWVudAorICAgICAg ICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8v IERhc2ggaXMgb24gdGhpcyBsaW5lCistICAgICAgICAgICAgICAgICAgICBwb3MgPSBkcG9zICsg ZXN0YXJ0OworKyAgICAgICAgICAgICAgICAgICAgcG9zID0gLS1tYXhEYXNoZXMgPiAwID8gZHBv cyArIGVzdGFydCA6IGVzdG9wOworICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHBvcyA+PSBl c3RvcDsKKyAgICAgICAgICAgICAgICAgICAgIGlmICgrK2lkYXNoID49IGRhc2hDb3VudCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICBpZGFzaCA9IDA7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9ndWkvcGFpbnRpbmcvcXRfYXR0cmlidXRpb24uanNvbiBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50 aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24KK2luZGV4IDdiMTZlOGMyMTEuLjBlODdkMzBhYTIgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xdF9hdHRyaWJ1dGlvbi5qc29uCisr KysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xdF9hdHRyaWJ1dGlvbi5qc29uCitAQCAtMTAs NyArMTAsNyBAQAorICAgICAgICAgIkhvbWVwYWdlIjogImh0dHA6Ly93d3cuZnJlZXR5cGUub3Jn IiwKKyAgICAgICAgICJMaWNlbnNlIjogIkZyZWV0eXBlIFByb2plY3QgTGljZW5zZSBvciBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mi4wIG9ubHkiLAorICAgICAgICAgIkxpY2Vuc2VJZCI6 ICJGVEwgb3IgR1BMLTIuMCIsCistICAgICAgICAiTGljZW5zZUZpbGUiOiAiLi4vLi4vM3JkcGFy dHkvZnJlZXR5cGUvZG9jcy9MSUNFTlNFLlRYVCIsCisrICAgICAgICAiTGljZW5zZUZpbGUiOiAi Li4vLi4vM3JkcGFydHkvZnJlZXR5cGUvTElDRU5TRS5UWFQiLAorICAgICAgICAgIkNvcHlyaWdo dCI6ICJDb3B5cmlnaHQgMjAwMC0yMDE2IGJ5IERhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0s IGFuZCBXZXJuZXIgTGVtYmVyZy4iCisgICAgIH0sCisgICAgIHsKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVy X3BfcC5oCitpbmRleCBlYzlkMjU5NzFmLi40YTVhN2E2ZDUxIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hh ZGVyX3BfcC5oCitAQCAtNjgsMTMgKzY4LDEzIEBAIHN0cnVjdCBRX0dVSV9FWFBPUlQgUVNoYWRl clByaXZhdGUKKyAgICAgeworICAgICB9CisgCistICAgIFFTaGFkZXJQcml2YXRlKGNvbnN0IFFT aGFkZXJQcml2YXRlICpvdGhlcikKKysgICAgUVNoYWRlclByaXZhdGUoY29uc3QgUVNoYWRlclBy aXZhdGUgJm90aGVyKQorICAgICAgICAgOiByZWYoMSksCistICAgICAgICAgIHFzYlZlcnNpb24o b3RoZXItPnFzYlZlcnNpb24pLAorLSAgICAgICAgICBzdGFnZShvdGhlci0+c3RhZ2UpLAorLSAg ICAgICAgICBkZXNjKG90aGVyLT5kZXNjKSwKKy0gICAgICAgICAgc2hhZGVycyhvdGhlci0+c2hh ZGVycyksCistICAgICAgICAgIGJpbmRpbmdzKG90aGVyLT5iaW5kaW5ncykKKysgICAgICAgICAg cXNiVmVyc2lvbihvdGhlci5xc2JWZXJzaW9uKSwKKysgICAgICAgICAgc3RhZ2Uob3RoZXIuc3Rh Z2UpLAorKyAgICAgICAgICBkZXNjKG90aGVyLmRlc2MpLAorKyAgICAgICAgICBzaGFkZXJzKG90 aGVyLnNoYWRlcnMpLAorKyAgICAgICAgICBiaW5kaW5ncyhvdGhlci5iaW5kaW5ncykKKyAgICAg eworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNj cmlwdGlvbl9wX3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyZGVzY3JpcHRpb25fcF9w LmgKK2luZGV4IGVjMmIwYjZiNGMuLjNkYTMzYThhMmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9y aGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oCitAQCAtNjMsMTYgKzYzLDE2IEBAIHN0cnVjdCBR X0dVSV9FWFBPUlQgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0ZQorICAgICAgICAgbG9jYWxTaXpl WzBdID0gbG9jYWxTaXplWzFdID0gbG9jYWxTaXplWzJdID0gMDsKKyAgICAgfQorIAorLSAgICBR U2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlKGNvbnN0IFFTaGFkZXJEZXNjcmlwdGlvblByaXZhdGUg Km90aGVyKQorKyAgICBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlKGNvbnN0IFFTaGFkZXJEZXNj cmlwdGlvblByaXZhdGUgJm90aGVyKQorICAgICAgICAgOiByZWYoMSksCistICAgICAgICAgIGlu VmFycyhvdGhlci0+aW5WYXJzKSwKKy0gICAgICAgICAgb3V0VmFycyhvdGhlci0+b3V0VmFycyks CistICAgICAgICAgIHVuaWZvcm1CbG9ja3Mob3RoZXItPnVuaWZvcm1CbG9ja3MpLAorLSAgICAg ICAgICBwdXNoQ29uc3RhbnRCbG9ja3Mob3RoZXItPnB1c2hDb25zdGFudEJsb2NrcyksCistICAg ICAgICAgIHN0b3JhZ2VCbG9ja3Mob3RoZXItPnN0b3JhZ2VCbG9ja3MpLAorLSAgICAgICAgICBj b21iaW5lZEltYWdlU2FtcGxlcnMob3RoZXItPmNvbWJpbmVkSW1hZ2VTYW1wbGVycyksCistICAg ICAgICAgIHN0b3JhZ2VJbWFnZXMob3RoZXItPnN0b3JhZ2VJbWFnZXMpLAorLSAgICAgICAgICBs b2NhbFNpemUob3RoZXItPmxvY2FsU2l6ZSkKKysgICAgICAgICAgaW5WYXJzKG90aGVyLmluVmFy cyksCisrICAgICAgICAgIG91dFZhcnMob3RoZXIub3V0VmFycyksCisrICAgICAgICAgIHVuaWZv cm1CbG9ja3Mob3RoZXIudW5pZm9ybUJsb2NrcyksCisrICAgICAgICAgIHB1c2hDb25zdGFudEJs b2NrcyhvdGhlci5wdXNoQ29uc3RhbnRCbG9ja3MpLAorKyAgICAgICAgICBzdG9yYWdlQmxvY2tz KG90aGVyLnN0b3JhZ2VCbG9ja3MpLAorKyAgICAgICAgICBjb21iaW5lZEltYWdlU2FtcGxlcnMo b3RoZXIuY29tYmluZWRJbWFnZVNhbXBsZXJzKSwKKysgICAgICAgICAgc3RvcmFnZUltYWdlcyhv dGhlci5zdG9yYWdlSW1hZ2VzKSwKKysgICAgICAgICAgbG9jYWxTaXplKG90aGVyLmxvY2FsU2l6 ZSkKKyAgICAgeworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9x Zm9udGRhdGFiYXNlLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS5jcHAK K2luZGV4IGE2NTdhOGM1MTYuLjRmYzAxMDA5NTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1 aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS90ZXh0L3Fmb250 ZGF0YWJhc2UuY3BwCitAQCAtOTgzLDcgKzk4Myw3IEBAIFFGb250RW5naW5lICpsb2FkU2luZ2xl RW5naW5lKGludCBzY3JpcHQsCisgICAgICAgICBpZiAoc3R5bGUtPmtleS5zdHJldGNoICE9IDAg JiYgcmVxdWVzdC5zdHJldGNoICE9IDAKKyAgICAgICAgICAgICAmJiAocmVxdWVzdC5zdHlsZU5h bWUuaXNFbXB0eSgpIHx8IHJlcXVlc3Quc3R5bGVOYW1lICE9IHN0eWxlLT5zdHlsZU5hbWUpKSB7 CisgICAgICAgICAgICAgZGVmLnN0cmV0Y2ggPSAocmVxdWVzdC5zdHJldGNoICogMTAwICsgc3R5 bGUtPmtleS5zdHJldGNoIC8gMikgLyBzdHlsZS0+a2V5LnN0cmV0Y2g7CistICAgICAgICB9IGVs c2UgeworKyAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnN0cmV0Y2ggPT0gUUZvbnQ6OkFueVN0 cmV0Y2gpIHsKKyAgICAgICAgICAgICBkZWYuc3RyZXRjaCA9IDEwMDsKKyAgICAgICAgIH0KKyAK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3Bw IGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGRvY3VtZW50bGF5b3V0LmNwcAoraW5kZXggZjNl NmVhMjEwMC4uNzIyNjdlOTM4MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRl eHRkb2N1bWVudGxheW91dC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRkb2N1 bWVudGxheW91dC5jcHAKK0BAIC0yMTIzLDcgKzIxMjMsNyBAQCB2b2lkIFFUZXh0RG9jdW1lbnRM YXlvdXRQcml2YXRlOjpkcmF3TGlzdEl0ZW0oY29uc3QgUVBvaW50RiAmb2Zmc2V0LCBRUGFpbnRl ciAqcAorIHsKKyAgICAgUV9RKGNvbnN0IFFUZXh0RG9jdW1lbnRMYXlvdXQpOworICAgICBjb25z dCBRVGV4dEJsb2NrRm9ybWF0IGJsb2NrRm9ybWF0ID0gYmwuYmxvY2tGb3JtYXQoKTsKKy0gICAg Y29uc3QgUVRleHRDaGFyRm9ybWF0IGNoYXJGb3JtYXQgPSBRVGV4dEN1cnNvcihibCkuY2hhckZv cm1hdCgpOworKyAgICBjb25zdCBRVGV4dENoYXJGb3JtYXQgY2hhckZvcm1hdCA9IGJsLmNoYXJG b3JtYXQoKTsKKyAgICAgUUZvbnQgZm9udChjaGFyRm9ybWF0LmZvbnQoKSk7CisgICAgIGlmIChx LT5wYWludERldmljZSgpKQorICAgICAgICAgZm9udCA9IFFGb250KGZvbnQsIHEtPnBhaW50RGV2 aWNlKCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRlbmdpbmUuY3Bw IGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAKK2luZGV4IGNlNGFiYWM0NzIu LmE2YzY2ZTVkMmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZW5naW5l LmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAKK0BAIC0xLDYg KzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIw MTYgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29t cGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoq CisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0R3VpIG1vZHVsZSBvZiB0aGUgUXQgVG9v bGtpdC4KK0BAIC0xNTY1LDYgKzE1NjUsMTIgQEAgdm9pZCBRVGV4dEVuZ2luZTo6c2hhcGVUZXh0 KGludCBpdGVtKSBjb25zdAorICAgICAgICAgLy8gT3ZlcndyaXRlIHdpdGggMCB0b2tlbiB0byBp bmRpY2F0ZSBmYWlsdXJlCisgICAgICAgICBRR2x5cGhMYXlvdXQgZyA9IGF2YWlsYWJsZUdseXBo cygmc2kpOworICAgICAgICAgZy5nbHlwaHNbMF0gPSAwOworKyAgICAgICAgZy5hdHRyaWJ1dGVz WzBdLmNsdXN0ZXJTdGFydCA9IHRydWU7CisrCisrICAgICAgICB1c2hvcnQgKmxvZ19jbHVzdGVy cyA9IGxvZ0NsdXN0ZXJzKCZzaSk7CisrICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGl0ZW1M ZW5ndGg7ICsraSkKKysgICAgICAgICAgICBsb2dfY2x1c3RlcnNbaV0gPSAwOworKworICAgICAg ICAgcmV0dXJuOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdXRpbC9x ZGVza3RvcHNlcnZpY2VzLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcWRlc2t0b3BzZXJ2aWNl cy5jcHAKK2luZGV4IGZiYjYzYTk0MDguLjRkNWZhZmFhYTcgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2d1aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS91 dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwCitAQCAtNTQsNiArNTQsOCBAQAorICNpbmNsdWRlIDxx cGEvcXBsYXRmb3JtaW50ZWdyYXRpb24uaD4KKyAjaW5jbHVkZSA8cWRpci5oPgorIAorKyNpbmNs dWRlIDxRdENvcmUvcHJpdmF0ZS9xbG9ja2luZ19wLmg+CisrCisgUVRfQkVHSU5fTkFNRVNQQUNF CisgCisgY2xhc3MgUU9wZW5VcmxIYW5kbGVyUmVnaXN0cnkgOiBwdWJsaWMgUU9iamVjdAorQEAg LTgxLDYgKzgzLDcgQEAgUV9HTE9CQUxfU1RBVElDKFFPcGVuVXJsSGFuZGxlclJlZ2lzdHJ5LCBo YW5kbGVyUmVnaXN0cnkpCisgCisgdm9pZCBRT3BlblVybEhhbmRsZXJSZWdpc3RyeTo6aGFuZGxl ckRlc3Ryb3llZChRT2JqZWN0ICpoYW5kbGVyKQorIHsKKysgICAgY29uc3QgYXV0byBsb2NrID0g cXRfc2NvcGVkX2xvY2sobXV0ZXgpOworICAgICBIYW5kbGVySGFzaDo6SXRlcmF0b3IgaXQgPSBo YW5kbGVycy5iZWdpbigpOworICAgICB3aGlsZSAoaXQgIT0gaGFuZGxlcnMuZW5kKCkpIHsKKyAg ICAgICAgIGlmIChpdC0+cmVjZWl2ZXIgPT0gaGFuZGxlcikgeworQEAgLTI5NCw3ICsyOTcsOCBA QCB2b2lkIFFEZXNrdG9wU2VydmljZXM6OnNldFVybEhhbmRsZXIoY29uc3QgUVN0cmluZyAmc2No ZW1lLCBRT2JqZWN0ICpyZWNlaXZlciwgYworICAgICBoLm5hbWUgPSBtZXRob2Q7CisgICAgIHJl Z2lzdHJ5LT5oYW5kbGVycy5pbnNlcnQoc2NoZW1lLnRvTG93ZXIoKSwgaCk7CisgICAgIFFPYmpl Y3Q6OmNvbm5lY3QocmVjZWl2ZXIsIFNJR05BTChkZXN0cm95ZWQoUU9iamVjdCopKSwKKy0gICAg ICAgICAgICAgICAgICAgICByZWdpc3RyeSwgU0xPVChoYW5kbGVyRGVzdHJveWVkKFFPYmplY3Qq KSkpOworKyAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LCBTTE9UKGhhbmRsZXJEZXN0cm95 ZWQoUU9iamVjdCopKSwKKysgICAgICAgICAgICAgICAgICAgICBRdDo6RGlyZWN0Q29ubmVjdGlv bik7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcXBrbWhh bmRsZXIuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGttaGFuZGxlci5jcHAKK2luZGV4IGUw YzNiNzVlZmUuLjM0MTRmOWQ4YmEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS91dGlsL3Fw a21oYW5kbGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGttaGFuZGxlci5jcHAK K0BAIC01Nyw3ICs1Nyw3IEBAIHN0cnVjdCBQa21UeXBlCisgICAgIHF1aW50MzIgYnl0ZXNQZXJC bG9jazsKKyB9OworIAorLXN0YXRpYyBQa21UeXBlIHR5cGVNYXBbNV0gPSB7Cisrc3RhdGljIGNv bnN0ZXhwciBQa21UeXBlIHR5cGVNYXBbNV0gPSB7CisgICAgIHsgMHg4RDY0LCAgOCB9LCAgIC8v IEdMX0VUQzFfUkdCOF9PRVMKKyAgICAgeyAweDkyNzQsICA4IH0sICAgLy8gR0xfQ09NUFJFU1NF RF9SR0I4X0VUQzIKKyAgICAgeyAwLCAwIH0sICAgICAgICAgLy8gdW51c2VkIChvYnNvbGV0ZSkK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlmaWxl aW1wbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlmaWxlaW1w bC5jcHAKK2luZGV4IGI2YmU5MzE0N2EuLjZlNjliNGM0ZDMgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlmaWxlaW1wbC5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWZpbGVpbXBsLmNwcAorQEAgLTg5LDkg Kzg5LDEwIEBAIFFOZXR3b3JrUmVwbHlGaWxlSW1wbDo6UU5ldHdvcmtSZXBseUZpbGVJbXBsKFFO ZXR3b3JrQWNjZXNzTWFuYWdlciAqbWFuYWdlciwgY29uCisgICAgICAgICAvLyB3ZSBoYW5kbGUg b25seSBsb2NhbCBmaWxlcworICAgICAgICAgUVN0cmluZyBtc2cgPSBRQ29yZUFwcGxpY2F0aW9u Ojp0cmFuc2xhdGUoIlFOZXR3b3JrQWNjZXNzRmlsZUJhY2tlbmQiLCAiUmVxdWVzdCBmb3Igb3Bl bmluZyBub24tbG9jYWwgZmlsZSAlMSIpLmFyZyh1cmwudG9TdHJpbmcoKSk7CisgICAgICAgICBz ZXRFcnJvcihRTmV0d29ya1JlcGx5OjpQcm90b2NvbEludmFsaWRPcGVyYXRpb25FcnJvciwgbXNn KTsKKysgICAgICAgIHNldEZpbmlzaGVkKHRydWUpOyAvLyBXZSdyZSBmaW5pc2hlZCwgd2lsbCBl bWl0IGZpbmlzaGVkKCkgYWZ0ZXIgY3RvciBpcyBkb25lLgorICAgICAgICAgUU1ldGFPYmplY3Q6 Omludm9rZU1ldGhvZCh0aGlzLCAiZXJyb3JPY2N1cnJlZCIsIFF0OjpRdWV1ZWRDb25uZWN0aW9u LAorICAgICAgICAgICAgIFFfQVJHKFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvciwgUU5ldHdv cmtSZXBseTo6UHJvdG9jb2xJbnZhbGlkT3BlcmF0aW9uRXJyb3IpKTsKKy0gICAgICAgIGZpbGVP cGVuRmluaXNoZWQoZmFsc2UpOworKyAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0 aGlzLCBbdGhpc10oKXsgZmlsZU9wZW5GaW5pc2hlZChmYWxzZSk7IH0sIFF0OjpRdWV1ZWRDb25u ZWN0aW9uKTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorICNlbmRpZgorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWltcGwuY3BwIGIvcXRiYXNl L3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAKK2luZGV4IGJjZGY2ZWUy ZjEuLjNiNmRlYjgyYmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3Fu ZXR3b3JrcmVwbHlpbXBsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0 d29ya3JlcGx5aW1wbC5jcHAKK0BAIC02ODAsNyArNjgwLDcgQEAgdm9pZCBRTmV0d29ya1JlcGx5 SW1wbFByaXZhdGU6OmFwcGVuZERvd25zdHJlYW1EYXRhKFFJT0RldmljZSAqZGF0YSkKKyAgICAg Ly8gcmVhZCB1bnRpbCBFT0YgZnJvbSBkYXRhCisgICAgIGlmIChRX1VOTElLRUxZKGNvcHlEZXZp Y2UpKSB7CisgICAgICAgICBxQ3JpdGljYWwoIlFOZXR3b3JrUmVwbHlJbXBsOiBjb3B5IGZyb20g UUlPRGV2aWNlIGFscmVhZHkgaW4gcHJvZ3Jlc3MgLS0gIgorLSAgICAgICAgICAgICAgICAgICJi YWNrZW5kIHByb2JseSBuZWVkcyB0byBiZSBmaXhlZCIpOworKyAgICAgICAgICAgICAgICAgICJi YWNrZW5kIHByb2JhYmx5IG5lZWRzIHRvIGJlIGZpeGVkIik7CisgICAgICAgICByZXR1cm47Cisg ICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3FhdXRoZW50 aWNhdG9yLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0b3IuY3Bw CitpbmRleCBkOWZlN2JjNDdiLi5jY2QwNGIyOTRhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9u ZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29y ay9rZXJuZWwvcWF1dGhlbnRpY2F0b3IuY3BwCitAQCAtNTAsNiArNTAsNyBAQAorICNpbmNsdWRl IDxxc3RyaW5nLmg+CisgI2luY2x1ZGUgPHFkYXRldGltZS5oPgorICNpbmNsdWRlIDxxcmFuZG9t Lmg+CisrI2luY2x1ZGUgInByaXZhdGUvcXN5c3RlbWxpYnJhcnlfcC5oIgorIAorICNpZmRlZiBR X09TX1dJTgorICNpbmNsdWRlIDxxbXV0ZXguaD4KK0BAIC0xNTYzLDcgKzE1NjQsNyBAQCBzdGF0 aWMgYm9vbCBxX1NTUElfbGlicmFyeV9sb2FkKCkKKyAKKyAgICAgLy8gSW5pdGlhbGl6ZSBzZWN1 cml0eSBpbnRlcmZhY2UKKyAgICAgaWYgKHBTZWN1cml0eUZ1bmN0aW9uVGFibGUgPT0gbnVsbHB0 cikgeworLSAgICAgICAgc2VjdXJpdHlETExIYW5kbGUgPSBMb2FkTGlicmFyeShMInNlY3VyMzIu ZGxsIik7CisrICAgICAgICBzZWN1cml0eURMTEhhbmRsZSA9IFFTeXN0ZW1MaWJyYXJ5Ojpsb2Fk KEwic2VjdXIzMiIpOworICAgICAgICAgaWYgKHNlY3VyaXR5RExMSGFuZGxlICE9IG51bGxwdHIp IHsKKyAgICAgICAgICAgICBJTklUX1NFQ1VSSVRZX0lOVEVSRkFDRSBwSW5pdFNlY3VyaXR5SW50 ZXJmYWNlID0KKyAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxJTklUX1NFQ1VSSVRZ X0lOVEVSRkFDRT4oCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xaG9z dGluZm9fdW5peC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0aW5mb191bml4 LmNwcAoraW5kZXggOWIwYTJlZTY2OS4uNzM2NzljOWVmMSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZvX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL25l dHdvcmsva2VybmVsL3Fob3N0aW5mb191bml4LmNwcAorQEAgLTEyMiw3ICsxMjIsNiBAQCBzdGF0 aWMgUUZ1bmN0aW9uUG9pbnRlciByZXNvbHZlU3ltYm9sKFFMaWJyYXJ5ICZsaWIsIGNvbnN0IGNo YXIgKnN5bSkKKyAKKyBMaWJSZXNvbHY6OkxpYlJlc29sdigpCisgeworLSAgICBRTGlicmFyeSBs aWI7CisgI2lmZGVmIExJQlJFU09MVl9TTworICAgICBsaWIuc2V0RmlsZU5hbWUoUVN0cmluZ0xp dGVyYWwoTElCUkVTT0xWX1NPKSk7CisgICAgIGlmICghbGliLmxvYWQoKSkKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUuY3BwIGIvcXRi YXNlL3NyYy9uZXR3b3JrL3NvY2tldC9xc29ja3M1c29ja2V0ZW5naW5lLmNwcAoraW5kZXggM2Ew NDZmZDExNi4uOTdmYWRjYTBiMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zb2Nr ZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zb2Nr ZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAKK0BAIC0xMjk2LDcgKzEyOTYsNyBAQCB2b2lkIFFT b2NrczVTb2NrZXRFbmdpbmVQcml2YXRlOjpfcV91ZHBTb2NrZXRSZWFkTm90aWZpY2F0aW9uKCkK KyAgICAgICAgIGludCBwb3MgPSAwOworICAgICAgICAgY29uc3QgY2hhciAqYnVmID0gaW5CdWYu Y29uc3REYXRhKCk7CisgICAgICAgICBpZiAoaW5CdWYuc2l6ZSgpIDwgNCkgeworLSAgICAgICAg ICAgIFFTT0NLUzVfRF9ERUJVRyA8PCAiYnVndXMgdWRwIGRhdGEsIGRpc2NhcmRpbmciOworKyAg ICAgICAgICAgIFFTT0NLUzVfRF9ERUJVRyA8PCAiYm9ndXMgdWRwIGRhdGEsIGRpc2NhcmRpbmci OworICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0KKyAgICAgICAgIFFTb2NrczVSZXZp dmVkRGF0YWdyYW0gZGF0YWdyYW07CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3Nz bC9xc3NsY29udGV4dF9vcGVuc3NsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGNv bnRleHRfb3BlbnNzbC5jcHAKK2luZGV4IGM5ZjIwMmY1NzMuLmM5OTJkYTlkOGUgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0X29wZW5zc2wuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0X29wZW5zc2wuY3BwCitAQCAtNDA5 LDcgKzQwOSw3IEBAIGluaXRfY29udGV4dDoKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIFFT c2w6OkR0bHNWMV8wT3JMYXRlcjoKKyAgICAgICAgIG1pblZlcnNpb24gPSBEVExTMV9WRVJTSU9O OworLSAgICAgICAgbWF4VmVyc2lvbiA9IERUTFNfTUFYX1ZFUlNJT047CisrICAgICAgICBtYXhW ZXJzaW9uID0gMDsKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIFFTc2w6OkR0bHNWMV8yOgor ICAgICAgICAgbWluVmVyc2lvbiA9IERUTFMxXzJfVkVSU0lPTjsKK0BAIC00MTcsNyArNDE3LDcg QEAgaW5pdF9jb250ZXh0OgorICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUVNzbDo6RHRsc1Yx XzJPckxhdGVyOgorICAgICAgICAgbWluVmVyc2lvbiA9IERUTFMxXzJfVkVSU0lPTjsKKy0gICAg ICAgIG1heFZlcnNpb24gPSBEVExTX01BWF9WRVJTSU9OOworKyAgICAgICAgbWF4VmVyc2lvbiA9 IDA7CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBRU3NsOjpUbHNWMV8zT3JMYXRlcjoKKyAj aWZkZWYgVExTMV8zX1ZFUlNJT04KK0BAIC00NTUsNyArNDU1LDcgQEAgaW5pdF9jb250ZXh0Ogor ICAgICB9CisgCisgICAgIC8vIEVuYWJsZSBidWcgd29ya2Fyb3VuZHMuCistICAgIGxvbmcgb3B0 aW9ucyA9IFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6c2V0dXBPcGVuU3NsT3B0aW9ucyhjb25m aWd1cmF0aW9uLnByb3RvY29sKCksIGNvbmZpZ3VyYXRpb24uZC0+c3NsT3B0aW9ucyk7CisrICAg IHFzc2xvcHRpb25zIG9wdGlvbnMgPSBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OnNldHVwT3Bl blNzbE9wdGlvbnMoY29uZmlndXJhdGlvbi5wcm90b2NvbCgpLCBjb25maWd1cmF0aW9uLmQtPnNz bE9wdGlvbnMpOworICAgICBxX1NTTF9DVFhfc2V0X29wdGlvbnMoc3NsQ29udGV4dC0+Y3R4LCBv cHRpb25zKTsKKyAKKyAgICAgLy8gVGVsbCBPcGVuU1NMIHRvIHJlbGVhc2UgbWVtb3J5IGVhcmx5 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1hbnBh cmFtZXRlcnNfb3BlbnNzbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xkaWZmaWVo ZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcAoraW5kZXggYWFmODc0MTEzMC4uYjU4OTM1Mzcy YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGRpZmZpZWhlbGxtYW5w YXJhbWV0ZXJzX29wZW5zc2wuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xk aWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcAorQEAgLTU5LDU3ICs1OSw2IEBACisg CisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCistI2lmZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8z XzAKKy0KKy1zdGF0aWMgaW50IHFfREhfY2hlY2soREggKmRoLCBpbnQgKnN0YXR1cykKKy17Cist ICAgIC8vIERIX2NoZWNrIHdhcyBmaXJzdCBkZXByZWNhdGVkIGluIE9wZW5TU0wgMy4wLjAsIGFz IGxvdy1sZXZlbAorLSAgICAvLyBBUEk7IHRoZSBFVlBfUEtFWSBmYW1pbHkgb2YgZnVuY3Rpb25z IHdhcyBhZHZpc2VkIGFzIGFuIGFsdGVybmF0aXZlLgorLSAgICAvLyBBcyBvZiBub3cgRVZQX1BL RVlfcGFyYW1zX2NoZWNrIGVuZHMgdXAgY2FsbGluZyAuLi4gREhfY2hlY2ssCistICAgIC8vIHdo aWNoIGlzIGdvb2QgZW5vdWdoLgorLQorLSAgICBRX0FTU0VSVChkaCk7CistICAgIFFfQVNTRVJU KHN0YXR1cyk7CistCistICAgIEVWUF9QS0VZICprZXkgPSBxX0VWUF9QS0VZX25ldygpOworLSAg ICBpZiAoIWtleSkgeworLSAgICAgICAgcUNXYXJuaW5nKGxjU3NsLCAiRVZQX1BLRVlfbmV3IGZh aWxlZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpsb2dBbmRDbGVhckVy cm9yUXVldWUoKTsKKy0gICAgICAgIHJldHVybiAwOworLSAgICB9CistICAgIGNvbnN0IGF1dG8g a2V5RGVsZXRlciA9IHFTY29wZUd1YXJkKFtrZXldKCl7CistICAgICAgICBxX0VWUF9QS0VZX2Zy ZWUoa2V5KTsKKy0gICAgfSk7CistICAgIGlmICghcV9FVlBfUEtFWV9zZXQxX0RIKGtleSwgZGgp KSB7CistICAgICAgICBxQ1dhcm5pbmcobGNTc2wsICJFVlBfUEtFWV9zZXQxX0RIIGZhaWxlZCIp OworLSAgICAgICAgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpsb2dBbmRDbGVhckVycm9yUXVl dWUoKTsKKy0gICAgICAgIHJldHVybiAwOworLSAgICB9CistCistICAgIEVWUF9QS0VZX0NUWCAq a2V5Q3R4ID0gcV9FVlBfUEtFWV9DVFhfbmV3KGtleSwgbnVsbHB0cik7CistICAgIGlmICgha2V5 Q3R4KSB7CistICAgICAgICBxQ1dhcm5pbmcobGNTc2wsICJFVlBfUEtFWV9DVFhfbmV3IGZhaWxl ZCIpOworLSAgICAgICAgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpsb2dBbmRDbGVhckVycm9y UXVldWUoKTsKKy0gICAgICAgIHJldHVybiAwOworLSAgICB9CistICAgIGNvbnN0IGF1dG8gY3R4 RGVsZXRlciA9IHFTY29wZUd1YXJkKFtrZXlDdHhdeworLSAgICAgICAgcV9FVlBfUEtFWV9DVFhf ZnJlZShrZXlDdHgpOworLSAgICB9KTsKKy0KKy0gICAgY29uc3QgaW50IHJlc3VsdCA9IHFfRVZQ X1BLRVlfcGFyYW1fY2hlY2soa2V5Q3R4KTsKKy0gICAgUVNzbFNvY2tldEJhY2tlbmRQcml2YXRl Ojpsb2dBbmRDbGVhckVycm9yUXVldWUoKTsKKy0gICAgLy8gTm90ZTogdW5saWtlIERIX2NoZWNr LCB3ZSBjYW5ub3Qgb2J0YWluIHRoZSAnc3RhdHVzJywKKy0gICAgLy8gaWYgdGhlICdyZXN1bHQn IGlzIDAgKGFjdHVhbGx5IHRoZSByZXN1bHQgaXMgMSBvbmx5CistICAgIC8vIGlmIHRoaXMgJ3N0 YXR1cycgd2FzIDApLiBXZSBjb3VsZCBwcm9iYWJseSBjaGVjayB0aGUKKy0gICAgLy8gZXJyb3Jz IGZyb20gdGhlIGVycm9yIHF1ZXVlLCBidXQgaXQncyBub3QgbmVlZGVkIGFueXdheQorLSAgICAv LyAtIHNlZSB0aGUgJ2lzU2FmZURIJyBiZWxvdywgaG93IGl0IHJldHVybnMgaW1tZWRpYXRlbHkK Ky0gICAgLy8gb24gMC4KKy0gICAgUV9VTlVTRUQoc3RhdHVzKQorLQorLSAgICByZXR1cm4gcmVz dWx0OworLX0KKy0jZW5kaWYgLy8gT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorLQorIHN0YXRp YyBib29sIGlzU2FmZURIKERIICpkaCkKKyB7CisgICAgIGludCBzdGF0dXMgPSAwOworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcCBiL3F0 YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcAoraW5kZXggMzdmYWQy YTY4Zi4uOGY2ODU4Yzg2NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNz bHNvY2tldF9vcGVuc3NsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29j a2V0X29wZW5zc2wuY3BwCitAQCAtNTUwLDkgKzU1MCw5IEBAIHN0YXRpYyB2b2lkIHFfbG9hZENp cGhlcnNGb3JDb25uZWN0aW9uKFNTTCAqY29ubmVjdGlvbiwgUUxpc3Q8UVNzbENpcGhlcj4gJmNp cGhlCisgLy8gRGVmaW5lZCBpbiBxc3Nsc29ja2V0LmNwcAorIHZvaWQgcV9zZXREZWZhdWx0RHRs c0NpcGhlcnMoY29uc3QgUUxpc3Q8UVNzbENpcGhlcj4gJmNpcGhlcnMpOworIAorLWxvbmcgUVNz bFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFByb3Rv Y29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRpb25zIHNzbE9wdGlvbnMpCisrcXNzbG9wdGlvbnMg UVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFBy b3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRpb25zIHNzbE9wdGlvbnMpCisgeworLSAgICBs b25nIG9wdGlvbnM7CisrICAgIHFzc2xvcHRpb25zIG9wdGlvbnM7CisgICAgIGlmIChwcm90b2Nv bCA9PSBRU3NsOjpUbHNWMVNzbFYzKQorICAgICAgICAgb3B0aW9ucyA9IFNTTF9PUF9BTEx8U1NM X09QX05PX1NTTHYyfFNTTF9PUF9OT19TU0x2MzsKKyAgICAgZWxzZSBpZiAocHJvdG9jb2wgPT0g UVNzbDo6U2VjdXJlUHJvdG9jb2xzKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9z c2wvcXNzbHNvY2tldF9vcGVuc3NsX3AuaCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNv Y2tldF9vcGVuc3NsX3AuaAoraW5kZXggNDEwM2RlMjNlOC4uNTU0NzU4OTI1NiAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3AuaAorKysrIGIv cXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfcC5oCitAQCAtMTA3LDYg KzEwNywxMiBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorKyNpZiBkZWZpbmVkKE9QRU5T U0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKyt0eXBlZGVm IHVpbnQ2NF90IHFzc2xvcHRpb25zOworKyNlbHNlCisrdHlwZWRlZiB1bnNpZ25lZCBsb25nIHFz c2xvcHRpb25zOworKyNlbmRpZgorKworIHN0cnVjdCBRU3NsRXJyb3JFbnRyeSB7CisgICAgIGlu dCBjb2RlOworICAgICBpbnQgZGVwdGg7CitAQCAtMTcxLDcgKzE3Nyw3IEBAIHB1YmxpYzoKKyAg ICAgUVZlY3RvcjxRU3NsRXJyb3I+IG9jc3BFcnJvcnM7CisgICAgIFFCeXRlQXJyYXkgb2NzcFJl c3BvbnNlRGVyOworIAorLSAgICBRX0FVVE9URVNUX0VYUE9SVCBzdGF0aWMgbG9uZyBzZXR1cE9w ZW5Tc2xPcHRpb25zKFFTc2w6OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRpb25z IHNzbE9wdGlvbnMpOworKyAgICBRX0FVVE9URVNUX0VYUE9SVCBzdGF0aWMgcXNzbG9wdGlvbnMg c2V0dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBwcm90b2NvbCwgUVNzbDo6U3Ns T3B0aW9ucyBzc2xPcHRpb25zKTsKKyAgICAgc3RhdGljIFFTc2xDaXBoZXIgUVNzbENpcGhlcl9m cm9tX1NTTF9DSVBIRVIoY29uc3QgU1NMX0NJUEhFUiAqY2lwaGVyKTsKKyAgICAgc3RhdGljIFFM aXN0PFFTc2xDZXJ0aWZpY2F0ZT4gU1RBQ0tPRlg1MDlfdG9fUVNzbENlcnRpZmljYXRlcyhTVEFD S19PRihYNTA5KSAqeDUwOSk7CisgICAgIHN0YXRpYyBRTGlzdDxRU3NsRXJyb3I+IHZlcmlmeShj b25zdCBRTGlzdDxRU3NsQ2VydGlmaWNhdGU+ICZjZXJ0aWZpY2F0ZUNoYWluLCBjb25zdCBRU3Ry aW5nICZob3N0TmFtZSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Ns c29ja2V0X29wZW5zc2xfc3ltYm9scy5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xz b2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNwcAoraW5kZXggZTUzZmIyNzlmMC4uNDU5Y2NkMGIxOSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5 bWJvbHMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNz bF9zeW1ib2xzLmNwcAorQEAgLTE0OCw3ICsxNDgsNiBAQCBERUZJTkVGVU5DKGludCwgRVZQX1BL RVlfdXBfcmVmLCBFVlBfUEtFWSAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5D MihFVlBfUEtFWV9DVFggKiwgRVZQX1BLRVlfQ1RYX25ldywgRVZQX1BLRVkgKnBrZXksIHBrZXks IEVOR0lORSAqZSwgZSwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5DKGludCwg RVZQX1BLRVlfcGFyYW1fY2hlY2ssIEVWUF9QS0VZX0NUWCAqY3R4LCBjdHgsIHJldHVybiAwLCBy ZXR1cm4pCisgREVGSU5FRlVOQyh2b2lkLCBFVlBfUEtFWV9DVFhfZnJlZSwgRVZQX1BLRVlfQ1RY ICpjdHgsIGN0eCwgcmV0dXJuLCByZXR1cm4pCistREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX2Jh c2VfaWQsIEVWUF9QS0VZICphLCBhLCByZXR1cm4gTklEX3VuZGVmLCByZXR1cm4pCisgREVGSU5F RlVOQyhpbnQsIFJTQV9iaXRzLCBSU0EgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5F RlVOQyhpbnQsIERTQV9iaXRzLCBEU0EgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5F RlVOQyhpbnQsIE9QRU5TU0xfc2tfbnVtLCBPUEVOU1NMX1NUQUNLICphLCBhLCByZXR1cm4gLTEs IHJldHVybikKK0BAIC0xNTgsNyArMTU3LDcgQEAgREVGSU5FRlVOQzIodm9pZCwgT1BFTlNTTF9z a19wdXNoLCBPUEVOU1NMX1NUQUNLICphLCBhLCB2b2lkICpiLCBiLCByZXR1cm4sIERVTU0KKyBE RUZJTkVGVU5DKHZvaWQsIE9QRU5TU0xfc2tfZnJlZSwgT1BFTlNTTF9TVEFDSyAqYSwgYSwgcmV0 dXJuLCBEVU1NWUFSRykKKyBERUZJTkVGVU5DMih2b2lkICosIE9QRU5TU0xfc2tfdmFsdWUsIE9Q RU5TU0xfU1RBQ0sgKmEsIGEsIGludCBiLCBiLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERF RklORUZVTkMoaW50LCBTU0xfc2Vzc2lvbl9yZXVzZWQsIFNTTCAqYSwgYSwgcmV0dXJuIDAsIHJl dHVybikKKy1ERUZJTkVGVU5DMih1bnNpZ25lZCBsb25nLCBTU0xfQ1RYX3NldF9vcHRpb25zLCBT U0xfQ1RYICpjdHgsIGN0eCwgdW5zaWduZWQgbG9uZyBvcCwgb3AsIHJldHVybiAwLCByZXR1cm4p CisrREVGSU5FRlVOQzIocXNzbG9wdGlvbnMsIFNTTF9DVFhfc2V0X29wdGlvbnMsIFNTTF9DVFgg KmN0eCwgY3R4LCBxc3Nsb3B0aW9ucyBvcCwgb3AsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5F RlVOQyhpbnQsIFNTTF9DVFhfZ2V0X3NlY3VyaXR5X2xldmVsLCBjb25zdCBTU0xfQ1RYICpjdHgs IGN0eCwgcmV0dXJuIC0xLCByZXR1cm4pCisgREVGSU5FRlVOQzIodm9pZCwgU1NMX0NUWF9zZXRf c2VjdXJpdHlfbGV2ZWwsIFNTTF9DVFggKmN0eCwgY3R4LCBpbnQgbGV2ZWwsIGxldmVsLCByZXR1 cm4sIHJldHVybikKKyAjaWZkZWYgVExTMV8zX1ZFUlNJT04KK0BAIC0zNzEsNyArMzcwLDE1IEBA IERFRklORUZVTkMoY29uc3QgU1NMX0NJUEhFUiAqLCBTU0xfZ2V0X2N1cnJlbnRfY2lwaGVyLCBT U0wgKmEsIGEsIHJldHVybiBudWxscHRyCisgREVGSU5FRlVOQyhpbnQsIFNTTF92ZXJzaW9uLCBj b25zdCBTU0wgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQzIoaW50LCBTU0xf Z2V0X2Vycm9yLCBTU0wgKmEsIGEsIGludCBiLCBiLCByZXR1cm4gLTEsIHJldHVybikKKyBERUZJ TkVGVU5DKFNUQUNLX09GKFg1MDkpICosIFNTTF9nZXRfcGVlcl9jZXJ0X2NoYWluLCBTU0wgKmEs IGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisrCisrI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJT SU9OX01BSk9SKSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworK0RFRklORUZVTkMoWDUw OSAqLCBTU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRlLCBTU0wgKmEsIGEsIHJldHVybiBudWxscHRy LCByZXR1cm4pCisrREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX2dldF9iYXNlX2lkLCBjb25zdCBF VlBfUEtFWSAqcGtleSwgcGtleSwgcmV0dXJuIC0xLCByZXR1cm4pCisrI2Vsc2UKKyBERUZJTkVG VU5DKFg1MDkgKiwgU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlLCBTU0wgKmEsIGEsIHJldHVybiBu dWxscHRyLCByZXR1cm4pCisrREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX2Jhc2VfaWQsIEVWUF9Q S0VZICphLCBhLCByZXR1cm4gTklEX3VuZGVmLCByZXR1cm4pCisrI2VuZGlmIC8vIE9QRU5TU0xf VkVSU0lPTl9NQUpPUiA+PSAzCisrCisgREVGSU5FRlVOQyhsb25nLCBTU0xfZ2V0X3ZlcmlmeV9y ZXN1bHQsIGNvbnN0IFNTTCAqYSwgYSwgcmV0dXJuIC0xLCByZXR1cm4pCisgREVGSU5FRlVOQyhT U0wgKiwgU1NMX25ldywgU1NMX0NUWCAqYSwgYSwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBE RUZJTkVGVU5DKFNTTF9DVFggKiwgU1NMX2dldF9TU0xfQ1RYLCBTU0wgKmEsIGEsIHJldHVybiBu dWxscHRyLCByZXR1cm4pCitAQCAtNDkyLDkgKzQ5OSw3IEBAIERFRklORUZVTkMoREggKiwgREhf bmV3LCBEVU1NWUFSRywgRFVNTVlBUkcsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisgREVGSU5F RlVOQyh2b2lkLCBESF9mcmVlLCBESCAqZGgsIGRoLCByZXR1cm4sIERVTU1ZQVJHKQorIERFRklO RUZVTkMzKERIICosIGQyaV9ESHBhcmFtcywgREgqKmEsIGEsIGNvbnN0IHVuc2lnbmVkIGNoYXIg KipwcCwgcHAsIGxvbmcgbGVuZ3RoLCBsZW5ndGgsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisg REVGSU5FRlVOQzIoaW50LCBpMmRfREhwYXJhbXMsIERIICphLCBhLCB1bnNpZ25lZCBjaGFyICoq cCwgcCwgcmV0dXJuIC0xLCByZXR1cm4pCistI2lmbmRlZiBPUEVOU1NMX05PX0RFUFJFQ0FURURf M18wCisgREVGSU5FRlVOQzIoaW50LCBESF9jaGVjaywgREggKmRoLCBkaCwgaW50ICpjb2Rlcywg Y29kZXMsIHJldHVybiAwLCByZXR1cm4pCistI2VuZGlmIC8vIE9QRU5TU0xfTk9fREVQUkVDQVRF RF8zXzAKKyBERUZJTkVGVU5DMyhCSUdOVU0gKiwgQk5fYmluMmJuLCBjb25zdCB1bnNpZ25lZCBj aGFyICpzLCBzLCBpbnQgbGVuLCBsZW4sIEJJR05VTSAqcmV0LCByZXQsIHJldHVybiBudWxscHRy LCByZXR1cm4pCisgCisgI2lmbmRlZiBPUEVOU1NMX05PX0VDCitAQCAtODY4LDcgKzg3Myw2IEBA IGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5bWJvbHMoKQorICAgICBSRVNPTFZFRlVOQyhFVlBfUEtF WV9DVFhfbmV3KQorICAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9wYXJhbV9jaGVjaykKKyAgICAg UkVTT0xWRUZVTkMoRVZQX1BLRVlfQ1RYX2ZyZWUpCistICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZ X2Jhc2VfaWQpCisgICAgIFJFU09MVkVGVU5DKFJTQV9iaXRzKQorICAgICBSRVNPTFZFRlVOQyhP UEVOU1NMX3NrX25ld19udWxsKQorICAgICBSRVNPTFZFRlVOQyhPUEVOU1NMX3NrX3B1c2gpCitA QCAtMTEwNyw3ICsxMTExLDE1IEBAIGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5bWJvbHMoKQorICAg ICBSRVNPTFZFRlVOQyhTU0xfdmVyc2lvbikKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9lcnJv cikKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9wZWVyX2NlcnRfY2hhaW4pCisrCisrI2lmIGRl ZmluZWQoT1BFTlNTTF9WRVJTSU9OX01BSk9SKSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0g MworKyAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRlKQorKyAgICBSRVNP TFZFRlVOQyhFVlBfUEtFWV9nZXRfYmFzZV9pZCkKKysjZWxzZQorICAgICBSRVNPTFZFRlVOQyhT U0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUpCisrICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX2Jhc2Vf aWQpCisrI2VuZGlmIC8vIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrCisgICAgIFJFU09M VkVGVU5DKFNTTF9nZXRfdmVyaWZ5X3Jlc3VsdCkKKyAgICAgUkVTT0xWRUZVTkMoU1NMX25ldykK KyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9TU0xfQ1RYKQorQEAgLTEyMDYsOSArMTIxOCw3IEBA IGJvb2wgcV9yZXNvbHZlT3BlblNzbFN5bWJvbHMoKQorICAgICBSRVNPTFZFRlVOQyhESF9mcmVl KQorICAgICBSRVNPTFZFRlVOQyhkMmlfREhwYXJhbXMpCisgICAgIFJFU09MVkVGVU5DKGkyZF9E SHBhcmFtcykKKy0jaWZuZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyAgICAgUkVTT0xW RUZVTkMoREhfY2hlY2spCistI2VuZGlmIC8vIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyAg ICAgUkVTT0xWRUZVTkMoQk5fYmluMmJuKQorIAorICNpZm5kZWYgT1BFTlNTTF9OT19FQworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJv bHNfcC5oIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9s c19wLmgKK2luZGV4IDk1ZTg4OTdhM2IuLjI3YWVmZmExOGEgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3AuaAorKysrIGIvcXRi YXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9sc19wLmgKK0BAIC0y MzcsNyArMjM3LDYgQEAgUV9BVVRPVEVTVF9FWFBPUlQgaW50IHFfRVZQX1BLRVlfdXBfcmVmKEVW UF9QS0VZICphKTsKKyBFVlBfUEtFWV9DVFggKnFfRVZQX1BLRVlfQ1RYX25ldyhFVlBfUEtFWSAq cGtleSwgRU5HSU5FICplKTsKKyB2b2lkIHFfRVZQX1BLRVlfQ1RYX2ZyZWUoRVZQX1BLRVlfQ1RY ICpjdHgpOworIGludCBxX0VWUF9QS0VZX3BhcmFtX2NoZWNrKEVWUF9QS0VZX0NUWCAqY3R4KTsK Ky1pbnQgcV9FVlBfUEtFWV9iYXNlX2lkKEVWUF9QS0VZICphKTsKKyBpbnQgcV9SU0FfYml0cyhS U0EgKmEpOworIFFfQVVUT1RFU1RfRVhQT1JUIGludCBxX09QRU5TU0xfc2tfbnVtKE9QRU5TU0xf U1RBQ0sgKmEpOworIFFfQVVUT1RFU1RfRVhQT1JUIHZvaWQgcV9PUEVOU1NMX3NrX3BvcF9mcmVl KE9QRU5TU0xfU1RBQ0sgKmEsIHZvaWQgKCpiKSh2b2lkICopKTsKK0BAIC0yNDYsNyArMjQ1LDcg QEAgUV9BVVRPVEVTVF9FWFBPUlQgdm9pZCBxX09QRU5TU0xfc2tfcHVzaChPUEVOU1NMX1NUQUNL ICpzdCwgdm9pZCAqZGF0YSk7CisgUV9BVVRPVEVTVF9FWFBPUlQgdm9pZCBxX09QRU5TU0xfc2tf ZnJlZShPUEVOU1NMX1NUQUNLICphKTsKKyBRX0FVVE9URVNUX0VYUE9SVCB2b2lkICogcV9PUEVO U1NMX3NrX3ZhbHVlKE9QRU5TU0xfU1RBQ0sgKmEsIGludCBiKTsKKyBpbnQgcV9TU0xfc2Vzc2lv bl9yZXVzZWQoU1NMICphKTsKKy11bnNpZ25lZCBsb25nIHFfU1NMX0NUWF9zZXRfb3B0aW9ucyhT U0xfQ1RYICpjdHgsIHVuc2lnbmVkIGxvbmcgb3ApOworK3Fzc2xvcHRpb25zIHFfU1NMX0NUWF9z ZXRfb3B0aW9ucyhTU0xfQ1RYICpjdHgsIHFzc2xvcHRpb25zIG9wKTsKKyBpbnQgcV9PUEVOU1NM X2luaXRfc3NsKHVpbnQ2NF90IG9wdHMsIGNvbnN0IE9QRU5TU0xfSU5JVF9TRVRUSU5HUyAqc2V0 dGluZ3MpOworIHNpemVfdCBxX1NTTF9nZXRfY2xpZW50X3JhbmRvbShTU0wgKmEsIHVuc2lnbmVk IGNoYXIgKm91dCwgc2l6ZV90IG91dGxlbik7Cisgc2l6ZV90IHFfU1NMX1NFU1NJT05fZ2V0X21h c3Rlcl9rZXkoY29uc3QgU1NMX1NFU1NJT04gKnNlc3Npb24sIHVuc2lnbmVkIGNoYXIgKm91dCwg c2l6ZV90IG91dGxlbik7CitAQCAtNTEwLDcgKzUwOSw2IEBAIGNvbnN0IFNTTF9DSVBIRVIgKnFf U1NMX2dldF9jdXJyZW50X2NpcGhlcihTU0wgKmEpOworIGludCBxX1NTTF92ZXJzaW9uKGNvbnN0 IFNTTCAqYSk7CisgaW50IHFfU1NMX2dldF9lcnJvcihTU0wgKmEsIGludCBiKTsKKyBTVEFDS19P RihYNTA5KSAqcV9TU0xfZ2V0X3BlZXJfY2VydF9jaGFpbihTU0wgKmEpOworLVg1MDkgKnFfU1NM X2dldF9wZWVyX2NlcnRpZmljYXRlKFNTTCAqYSk7CisgbG9uZyBxX1NTTF9nZXRfdmVyaWZ5X3Jl c3VsdChjb25zdCBTU0wgKmEpOworIFNTTCAqcV9TU0xfbmV3KFNTTF9DVFggKmEpOworIFNTTF9D VFggKnFfU1NMX2dldF9TU0xfQ1RYKFNTTCAqYSk7CitAQCAtNTgyLDEwICs1ODAsNyBAQCBESCAq cV9ESF9uZXcoKTsKKyB2b2lkIHFfREhfZnJlZShESCAqZGgpOworIERIICpxX2QyaV9ESHBhcmFt cyhESCAqKmEsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKipwcCwgbG9uZyBsZW5ndGgpOworIGludCBx X2kyZF9ESHBhcmFtcyhESCAqYSwgdW5zaWduZWQgY2hhciAqKnApOworLQorLSNpZm5kZWYgT1BF TlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIGludCBxX0RIX2NoZWNrKERIICpkaCwgaW50ICpjb2Rl cyk7CistI2VuZGlmIC8vIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyAKKyBCSUdOVU0gKnFf Qk5fYmluMmJuKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMsIGludCBsZW4sIEJJR05VTSAqcmV0KTsK KyAjZGVmaW5lIHFfU1NMX0NUWF9zZXRfdG1wX2RoKGN0eCwgZGgpIHFfU1NMX0NUWF9jdHJsKChj dHgpLCBTU0xfQ1RSTF9TRVRfVE1QX0RILCAwLCAoY2hhciAqKWRoKQorQEAgLTc1NCw2ICs3NDks MTcgQEAgdm9pZCBxX0NSWVBUT19mcmVlKHZvaWQgKnN0ciwgY29uc3QgY2hhciAqZmlsZSwgaW50 IGxpbmUpOworIGludCBxX1NTTF9DVFhfZ2V0X3NlY3VyaXR5X2xldmVsKGNvbnN0IFNTTF9DVFgg KmN0eCk7Cisgdm9pZCBxX1NTTF9DVFhfc2V0X3NlY3VyaXR5X2xldmVsKFNTTF9DVFggKmN0eCwg aW50IGxldmVsKTsKKyAKKysvLyBIZXJlIHdlIGhhdmUgdGhlIG9uZXMgdGhhdCBtYWtlIGRpZmZl cmVuY2UgYmV0d2VlbiBPcGVuU1NMIHByZS9wb3N0IHYzOgorKyNpZiBkZWZpbmVkKE9QRU5TU0xf VkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKytYNTA5ICpxX1NT TF9nZXQxX3BlZXJfY2VydGlmaWNhdGUoU1NMICphKTsKKysjZGVmaW5lIHFfU1NMX2dldF9wZWVy X2NlcnRpZmljYXRlIHFfU1NMX2dldDFfcGVlcl9jZXJ0aWZpY2F0ZQorK2ludCBxX0VWUF9QS0VZ X2dldF9iYXNlX2lkKGNvbnN0IEVWUF9QS0VZICpwa2V5KTsKKysjZGVmaW5lIHFfRVZQX1BLRVlf YmFzZV9pZCBxX0VWUF9QS0VZX2dldF9iYXNlX2lkCisrI2Vsc2UKKytYNTA5ICpxX1NTTF9nZXRf cGVlcl9jZXJ0aWZpY2F0ZShTU0wgKmEpOworK2ludCBxX0VWUF9QS0VZX2Jhc2VfaWQoRVZQX1BL RVkgKmEpOworKyNlbmRpZiAvLyBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworKworIFFUX0VO RF9OQU1FU1BBQ0UKKyAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1 cHBvcnQvZWdsY29udmVuaWVuY2UvcXRfZWdsX3AuaAoraW5kZXggYmYzN2QwN2ZkOC4uZGJkNDJm Yjc5OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2VnbGNvbnZlbmll bmNlL3F0X2VnbF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2VnbGNvbnZl bmllbmNlL3F0X2VnbF9wLmgKK0BAIC02MSw3ICs2MSwxMSBAQAorICMgaWYgIWRlZmluZWQoUV9P U19JTlRFR1JJVFkpCisgIyAgZGVmaW5lIFdJTl9JTlRFUkZBQ0VfQ1VTVE9NICAgLy8gTlYKKyAj IGVuZGlmIC8vIFFfT1NfSU5URUdSSVRZCistI2VuZGlmICAvLyBRVF9FR0xfTk9fWDExCisrI2Vs c2UgLy8gUVRfRUdMX05PX1gxMQorKy8vIElmIG9uZSBoYXMgYW4gZWdscGxhdGZvcm0uaCB3aXRo IGh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvRUdMLVJlZ2lzdHJ5L3B1bGwvMTMwCisr Ly8gdGhhdCBuZWVkcyBVU0VfWDExIHRvIGJlIGRlZmluZWQuCisrIyBkZWZpbmUgVVNFX1gxMQor KyNlbmRpZgorIAorICNpZmRlZiBRVF9FR0xfV0FZTEFORAorICMgZGVmaW5lIFdBWUxBTkQgLy8g TlYKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2Vz L2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRhYmFzZS5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRhYmFzZS5jcHAK K2luZGV4IDE1OWI0OTBjZTAuLjAwYWE4MGNkNTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRhYmFz ZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ZvbnRkYXRhYmFzZXMvZm9u dGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNlLmNwcAorQEAgLTU2Nyw2ICs1NjcsOCBAQCB2b2lk IFFGb250Y29uZmlnRGF0YWJhc2U6OnBvcHVsYXRlRm9udERhdGFiYXNlKCkKKyAgICAgICAgIGZv bnRzID0gRmNGb250TGlzdChudWxscHRyLCBwYXR0ZXJuLCBvcyk7CisgICAgICAgICBGY09iamVj dFNldERlc3Ryb3kob3MpOworICAgICAgICAgRmNQYXR0ZXJuRGVzdHJveShwYXR0ZXJuKTsKKysg ICAgICAgIGlmICghZm9udHMpCisrICAgICAgICAgICAgcmV0dXJuOworICAgICB9CisgCisgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgZm9udHMtPm5mb250OyBpKyspCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb24uY3BwIGIv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb24uY3Bw CitpbmRleCBiNzEzYzE5NDQ3Li43Y2I5YThjNzlhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9w bGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb24uY3BwCisrKysgYi9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbi5jcHAKK0BA IC05NSw2ICs5NSw3IEBAIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgYXV0byBLZXlUYmwgPSBxTWFr ZUFycmF5KAorICAgICAgICAgWGtiMlF0PFhLQl9LRVlfQ2xlYXIsICAgICAgICAgICAgICAgICAg IFF0OjpLZXlfRGVsZXRlPiwKKyAgICAgICAgIFhrYjJRdDxYS0JfS0VZX1BhdXNlLCAgICAgICAg ICAgICAgICAgICBRdDo6S2V5X1BhdXNlPiwKKyAgICAgICAgIFhrYjJRdDxYS0JfS0VZX1ByaW50 LCAgICAgICAgICAgICAgICAgICBRdDo6S2V5X1ByaW50PiwKKysgICAgICAgIFhrYjJRdDxYS0Jf S0VZX1N5c19SZXEsICAgICAgICAgICAgICAgICBRdDo6S2V5X1N5c1JlcT4sCisgICAgICAgICBY a2IyUXQ8MHgxMDA1RkY2MCwgICAgICAgICAgICAgICAgICAgICAgUXQ6OktleV9TeXNSZXE+LCAg ICAgICAgIC8vIGhhcmRjb2RlZCBTdW4gU3lzUmVxCisgICAgICAgICBYa2IyUXQ8MHgxMDA3ZmYw MCwgICAgICAgICAgICAgICAgICAgICAgUXQ6OktleV9TeXNSZXE+LCAgICAgICAgIC8vIGhhcmRj b2RlZCBYMzg2IFN5c1JlcQorIAorQEAgLTQ3MSw3ICs0NzIsNyBAQCBRVmVjdG9yPHhrYl9rZXlz eW1fdD4gUVhrYkNvbW1vbjo6dG9LZXlzeW0oUUtleUV2ZW50ICpldmVudCkKKyAgICAgfSBlbHNl IGlmIChldmVudC0+bW9kaWZpZXJzKCkgJiBRdDo6S2V5cGFkTW9kaWZpZXIpIHsKKyAgICAgICAg IGlmIChxdEtleSA+PSBRdDo6S2V5XzAgJiYgcXRLZXkgPD0gUXQ6OktleV85KQorICAgICAgICAg ICAgIGtleXN5bXMuYXBwZW5kKFhLQl9LRVlfS1BfMCArIChxdEtleSAtIFF0OjpLZXlfMCkpOwor LSAgICB9IGVsc2UgaWYgKGlzTGF0aW4ocXRLZXkpICYmIGV2ZW50LT50ZXh0KCkuaXNVcHBlcigp KSB7CisrICAgIH0gZWxzZSBpZiAoaXNMYXRpbjEocXRLZXkpICYmIGV2ZW50LT50ZXh0KCkuaXNV cHBlcigpKSB7CisgICAgICAgICBrZXlzeW1zLmFwcGVuZChxdEtleSk7CisgICAgIH0KKyAKK0BA IC01MjMsNyArNTI0LDcgQEAgaW50IFFYa2JDb21tb246OmtleXN5bVRvUXRLZXkoeGtiX2tleXN5 bV90IGtleXN5bSwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaWUKKyAgICAgICAgIC8vIFdp dGggc3RhbmRhcmQgc2hvcnRjdXRzIHdlIHNob3VsZCBwcmVmZXIgYSBsYXRpbiBjaGFyYWN0ZXIs IHRoaXMgaXMKKyAgICAgICAgIC8vIGZvciBjaGVja3MgbGlrZSAic29tZSBxa2V5ZXZlbnQgPT0g UUtleVNlcXVlbmNlOjpDb3B5IiB0byB3b3JrIGV2ZW4KKyAgICAgICAgIC8vIHdoZW4gdXNpbmcg Zm9yIGV4YW1wbGUgJ3J1c3NpYW4nIGtleWJvYXJkIGxheW91dC4KKy0gICAgICAgIGlmICghUVhr YkNvbW1vbjo6aXNMYXRpbihrZXlzeW0pKSB7CisrICAgICAgICBpZiAoIVFYa2JDb21tb246Omlz TGF0aW4xKGtleXN5bSkpIHsKKyAgICAgICAgICAgICB4a2Jfa2V5c3ltX3QgbGF0aW5LZXlzeW0g PSBRWGtiQ29tbW9uOjpsb29rdXBMYXRpbktleXN5bShzdGF0ZSwgY29kZSk7CisgICAgICAgICAg ICAgaWYgKGxhdGluS2V5c3ltICE9IFhLQl9LRVlfTm9TeW1ib2wpCisgICAgICAgICAgICAgICAg IGtleXN5bSA9IGxhdGluS2V5c3ltOworQEAgLTU0Niw3ICs1NDcsNyBAQCBzdGF0aWMgaW50IGtl eXN5bVRvUXRLZXlfaW50ZXJuYWwoeGtiX2tleXN5bV90IGtleXN5bSwgUXQ6OktleWJvYXJkTW9k aWZpZXJzIG1vZAorICAgICB9IGVsc2UgaWYgKGtleXN5bSA+PSBYS0JfS0VZX0tQXzAgJiYga2V5 c3ltIDw9IFhLQl9LRVlfS1BfOSkgeworICAgICAgICAgLy8gbnVtZXJpYyBrZXlwYWQga2V5cwor ICAgICAgICAgcXRLZXkgPSBRdDo6S2V5XzAgKyAoa2V5c3ltIC0gWEtCX0tFWV9LUF8wKTsKKy0g ICAgfSBlbHNlIGlmIChRWGtiQ29tbW9uOjppc0xhdGluKGtleXN5bSkpIHsKKysgICAgfSBlbHNl IGlmIChRWGtiQ29tbW9uOjppc0xhdGluMShrZXlzeW0pKSB7CisgICAgICAgICBxdEtleSA9IFFY a2JDb21tb246OnF4a2Jjb21tb25feGtiX2tleXN5bV90b191cHBlcihrZXlzeW0pOworICAgICB9 IGVsc2UgeworICAgICAgICAgLy8gY2hlY2sgaWYgd2UgaGF2ZSBhIGRpcmVjdCBtYXBwaW5nCitA QCAtNjc4LDcgKzY3OSw3IEBAIFFMaXN0PGludD4gUVhrYkNvbW1vbjo6cG9zc2libGVLZXlzKHhr Yl9zdGF0ZSAqc3RhdGUsIGNvbnN0IFFLZXlFdmVudCAqZXZlbnQsCisgICAgICAgICBRdDo6S2V5 Ym9hcmRNb2RpZmllcnMgbmVlZGVkTW9kcyA9IE1vZHNUYmxbaV07CisgICAgICAgICBpZiAoKG1v ZGlmaWVycyAmIG5lZWRlZE1vZHMpID09IG5lZWRlZE1vZHMpIHsKKyAgICAgICAgICAgICBpZiAo aSA9PSA4KSB7CistICAgICAgICAgICAgICAgIGlmIChpc0xhdGluKGJhc2VRdEtleSkpCisrICAg ICAgICAgICAgICAgIGlmIChpc0xhdGluMShiYXNlUXRLZXkpKQorICAgICAgICAgICAgICAgICAg ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgIC8vIGFkZCBhIGxhdGluIGtleSBhcyBhIGZh bGwgYmFjayBrZXkKKyAgICAgICAgICAgICAgICAgc3ltID0gbG9va3VwTGF0aW5LZXlzeW0oc3Rh dGUsIGtleWNvZGUpOworQEAgLTczMyw3ICs3MzQsNyBAQCB2b2lkIFFYa2JDb21tb246OnZlcmlm eUhhc0xhdGluTGF5b3V0KHhrYl9rZXltYXAgKmtleW1hcCkKKyAgICAgZm9yICh4a2JfbGF5b3V0 X2luZGV4X3QgbGF5b3V0ID0gMDsgbGF5b3V0IDwgbGF5b3V0Q291bnQ7ICsrbGF5b3V0KSB7Cisg ICAgICAgICBmb3IgKHhrYl9rZXljb2RlX3QgY29kZSA9IG1pbktleWNvZGU7IGNvZGUgPCBtYXhL ZXljb2RlOyArK2NvZGUpIHsKKyAgICAgICAgICAgICB4a2Jfa2V5bWFwX2tleV9nZXRfc3ltc19i eV9sZXZlbChrZXltYXAsIGNvZGUsIGxheW91dCwgMCwgJmtleXN5bXMpOworLSAgICAgICAgICAg IGlmIChrZXlzeW1zICYmIGlzTGF0aW4oa2V5c3ltc1swXSkpCisrICAgICAgICAgICAgaWYgKGtl eXN5bXMgJiYgaXNMYXRpbjEoa2V5c3ltc1swXSkpCisgICAgICAgICAgICAgICAgIG5yTGF0aW5L ZXlzKys7CisgICAgICAgICAgICAgaWYgKG5yTGF0aW5LZXlzID4gMTApIC8vIGFyYml0cmFyaWx5 IGNob3NlbiB0aHJlc2hvbGQKKyAgICAgICAgICAgICAgICAgcmV0dXJuOworQEAgLTc2Niw3ICs3 NjcsNyBAQCB4a2Jfa2V5c3ltX3QgUVhrYkNvbW1vbjo6bG9va3VwTGF0aW5LZXlzeW0oeGtiX3N0 YXRlICpzdGF0ZSwgeGtiX2tleWNvZGVfdCBrZXljbworICAgICAgICAgeGtiX2xldmVsX2luZGV4 X3QgbGV2ZWwgPSB4a2Jfc3RhdGVfa2V5X2dldF9sZXZlbChzdGF0ZSwga2V5Y29kZSwgbGF5b3V0 KTsKKyAgICAgICAgIGlmICh4a2Jfa2V5bWFwX2tleV9nZXRfc3ltc19ieV9sZXZlbChrZXltYXAs IGtleWNvZGUsIGxheW91dCwgbGV2ZWwsICZzeW1zKSAhPSAxKQorICAgICAgICAgICAgIGNvbnRp bnVlOworLSAgICAgICAgaWYgKGlzTGF0aW4oc3ltc1swXSkpIHsKKysgICAgICAgIGlmIChpc0xh dGluMShzeW1zWzBdKSkgeworICAgICAgICAgICAgIHN5bSA9IHN5bXNbMF07CisgICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1 cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5oIGIvcXRiYXNlL3NyYy9wbGF0Zm9y bXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5oCitpbmRleCA1NjFlYWUwM2Ri Li44Mzg5YmQ4ZjVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5w dXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3Vw cG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbl9wLmgKK0BAIC05NCw4ICs5NCw4IEBAIHB1 YmxpYzoKKyAgICAgc3RhdGljIHZvaWQgdmVyaWZ5SGFzTGF0aW5MYXlvdXQoeGtiX2tleW1hcCAq a2V5bWFwKTsKKyAgICAgc3RhdGljIHhrYl9rZXlzeW1fdCBsb29rdXBMYXRpbktleXN5bSh4a2Jf c3RhdGUgKnN0YXRlLCB4a2Jfa2V5Y29kZV90IGtleWNvZGUpOworIAorLSAgICBzdGF0aWMgYm9v bCBpc0xhdGluKHhrYl9rZXlzeW1fdCBzeW0pIHsKKy0gICAgICAgIHJldHVybiAoKHN5bSA+PSAn YScgJiYgc3ltIDw9ICd6JykgfHwgKHN5bSA+PSAnQScgJiYgc3ltIDw9ICdaJykpOworKyAgICBz dGF0aWMgYm9vbCBpc0xhdGluMSh4a2Jfa2V5c3ltX3Qgc3ltKSB7CisrICAgICAgICByZXR1cm4g c3ltIDw9IDB4ZmY7CisgICAgIH0KKyAgICAgc3RhdGljIGJvb2wgaXNLZXlwYWQoeGtiX2tleXN5 bV90IHN5bSkgeworICAgICAgICAgcmV0dXJuIHN5bSA+PSBYS0JfS0VZX0tQX1NwYWNlICYmIHN5 bSA8PSBYS0JfS0VZX0tQXzk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBv cnQva21zY29udmVuaWVuY2UvcWttc2RldmljZS5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3Vw cG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcAoraW5kZXggOGNkN2Y5YjM2OC4uNDA2 Zjg0NjYzZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ttc2NvbnZl bmllbmNlL3FrbXNkZXZpY2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9r bXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcAorQEAgLTMxOCw3ICszMTgsNyBAQCBRUGxhdGZv cm1TY3JlZW4gKlFLbXNEZXZpY2U6OmNyZWF0ZVNjcmVlbkZvckNvbm5lY3Rvcihkcm1Nb2RlUmVz UHRyIHJlc291cmNlcywKKyAKKyAgICAgaWYgKGN1cnJlbnQgPCAwICYmIGNydGNfbW9kZS5jbG9j ayAhPSAwKSB7CisgICAgICAgICBtb2RlcyA8PCBjcnRjX21vZGU7CistICAgICAgICBjdXJyZW50 ID0gbW9kZS5zaXplKCkgLSAxOworKyAgICAgICAgY3VycmVudCA9IG1vZGVzLnNpemUoKSAtIDE7 CisgICAgIH0KKyAKKyAgICAgaWYgKGNvbmZpZ3VyYXRpb24gPT0gT3V0cHV0Q29uZmlnQ3VycmVu dCkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2li aWxpdHkvYXRzcGlhZGFwdG9yLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4 YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3BwCitpbmRleCA5MTUzZmQyMGJiLi4yNTVlYTVl MzNlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3Np YmlsaXR5L2F0c3BpYWRhcHRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3BwCitAQCAtMTk0LDYgKzE5NCw5IEBA IFFTdHJpbmcgQXRTcGlBZGFwdG9yOjppbnRyb3NwZWN0KGNvbnN0IFFTdHJpbmcgJnBhdGgpIGNv bnN0CisgICAgICAgICAgICAgICAgICIgICAgICA8YXJnIGRpcmVjdGlvbj1cIm91dFwiIHR5cGU9 XCIoc28pXCIvPlxuIgorICAgICAgICAgICAgICAgICAiICAgICAgPGFubm90YXRpb24gdmFsdWU9 XCJRU3BpT2JqZWN0UmVmZXJlbmNlXCIgbmFtZT1cIm9yZy5xdHByb2plY3QuUXREQnVzLlF0VHlw ZU5hbWUuT3V0MFwiLz5cbiIKKyAgICAgICAgICAgICAgICAgIiAgICA8L21ldGhvZD5cbiIKKysg ICAgICAgICAgICAgICAgIiAgICA8bWV0aG9kIG5hbWU9XCJHZXRBY2Nlc3NpYmxlSWRcIj5cbiIK KysgICAgICAgICAgICAgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPVwib3V0XCIgdHlwZT1cInNc Ii8+XG4iCisrICAgICAgICAgICAgICAgICIgICAgPC9tZXRob2Q+XG4iCisgICAgICAgICAgICAg ICAgICIgIDwvaW50ZXJmYWNlPlxuIgorICAgICAgICAgICAgICAgICApOworIAorQEAgLTkxMyw4 ICs5MTYsMTcgQEAgdm9pZCBBdFNwaUFkYXB0b3I6Om5vdGlmeShRQWNjZXNzaWJsZUV2ZW50ICpl dmVudCkKKyAgICAgfQorICAgICBjYXNlIFFBY2Nlc3NpYmxlOjpOYW1lQ2hhbmdlZDogeworICAg ICAgICAgaWYgKHNlbmRPYmplY3QgfHwgc2VuZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2UgfHwgc2Vu ZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2VfYWNjZXNzaWJsZV9uYW1lKSB7CistICAgICAgICAgICAg UVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShldmVudC0+YWNjZXNzaWJsZUludGVyZmFj ZSgpKTsKKy0gICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9IHBhY2tEQnVzU2lnbmFsQXJn dW1lbnRzKFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIpLCAwLCAwLCB2YXJpYW50Rm9y UGF0aChwYXRoKSk7CisrICAgICAgICAgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlID0g ZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKTsKKysgICAgICAgICAgICBpZiAoIWlmYWNlKSB7 CisrICAgICAgICAgICAgICAgIHFDRGVidWcobGNBY2Nlc3NpYmlsaXR5QXRzcGksCisrICAgICAg ICAgICAgICAgICAgICAgICAgIk5hbWVDaGFuZ2VkIGV2ZW50IGZyb20gaW52YWxpZCBhY2Nlc3Np YmxlLiIpOworKyAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAgICAgfQorKworKyAg ICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRlcmZhY2UoaWZhY2UpOworKyAgICAg ICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoCisrICAg ICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIpLCAwLCAwLAorKyAg ICAgICAgICAgICAgICBRVmFyaWFudDo6ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChpZmFjZS0+dGV4 dChRQWNjZXNzaWJsZTo6TmFtZSkpKSk7CisgICAgICAgICAgICAgc2VuZERCdXNTaWduYWwocGF0 aCwgUUxhdGluMVN0cmluZyhBVFNQSV9EQlVTX0lOVEVSRkFDRV9FVkVOVF9PQkpFQ1QpLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIlByb3BlcnR5Q2hhbmdlIiks IGFyZ3MpOworICAgICAgICAgfQorQEAgLTkyMiw4ICs5MzQsMTcgQEAgdm9pZCBBdFNwaUFkYXB0 b3I6Om5vdGlmeShRQWNjZXNzaWJsZUV2ZW50ICpldmVudCkKKyAgICAgfQorICAgICBjYXNlIFFB Y2Nlc3NpYmxlOjpEZXNjcmlwdGlvbkNoYW5nZWQ6IHsKKyAgICAgICAgIGlmIChzZW5kT2JqZWN0 IHx8IHNlbmRPYmplY3RfcHJvcGVydHlfY2hhbmdlIHx8IHNlbmRPYmplY3RfcHJvcGVydHlfY2hh bmdlX2FjY2Vzc2libGVfZGVzY3JpcHRpb24pIHsKKy0gICAgICAgICAgICBRU3RyaW5nIHBhdGgg PSBwYXRoRm9ySW50ZXJmYWNlKGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNlKCkpOworLSAgICAg ICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoUUxhdGlu MVN0cmluZygiYWNjZXNzaWJsZS1kZXNjcmlwdGlvbiIpLCAwLCAwLCB2YXJpYW50Rm9yUGF0aChw YXRoKSk7CisrICAgICAgICAgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlID0gZXZlbnQt PmFjY2Vzc2libGVJbnRlcmZhY2UoKTsKKysgICAgICAgICAgICBpZiAoIWlmYWNlKSB7CisrICAg ICAgICAgICAgICAgIHFDRGVidWcobGNBY2Nlc3NpYmlsaXR5QXRzcGksCisrICAgICAgICAgICAg ICAgICAgICAgICAgIkRlc2NyaXB0aW9uQ2hhbmdlZCBldmVudCBmcm9tIGludmFsaWQgYWNjZXNz aWJsZS4iKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgICAgIH0KKysKKysg ICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGlmYWNlKTsKKysgICAg ICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKAorKyAg ICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLWRlc2NyaXB0aW9uIiksIDAs IDAsCisrICAgICAgICAgICAgICAgIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50KGlm YWNlLT50ZXh0KFFBY2Nlc3NpYmxlOjpEZXNjcmlwdGlvbikpKSk7CisgICAgICAgICAgICAgc2Vu ZERCdXNTaWduYWwocGF0aCwgUUxhdGluMVN0cmluZyhBVFNQSV9EQlVTX0lOVEVSRkFDRV9FVkVO VF9PQkpFQ1QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIlBy b3BlcnR5Q2hhbmdlIiksIGFyZ3MpOworICAgICAgICAgfQorQEAgLTEwMzgsNyArMTA1OSw5IEBA IHZvaWQgQXRTcGlBZGFwdG9yOjpub3RpZnkoUUFjY2Vzc2libGVFdmVudCAqZXZlbnQpCisgICAg ICAgICAgICAgICAgIC8vIENvbWJvIEJveCB3aXRoIEFULVNQSSBsaWtlcyB0byBiZSBzcGVjaWFs CisgICAgICAgICAgICAgICAgIC8vIEl0IHJlcXVpcmVzIGEgbmFtZS1jaGFuZ2UgdG8gdXBkYXRl IGNhY2hlcyBhbmQgdGhlbiBzZWxlY3Rpb24tY2hhbmdlZAorICAgICAgICAgICAgICAgICBRU3Ry aW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGlmYWNlKTsKKy0gICAgICAgICAgICAgICAgUVZh cmlhbnRMaXN0IGFyZ3MxID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoUUxhdGluMVN0cmluZygi YWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsIHZhcmlhbnRGb3JQYXRoKHBhdGgpKTsKKysgICAgICAg ICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MxID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoCisr ICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLW5hbWUiKSwgMCwg MCwKKysgICAgICAgICAgICAgICAgICAgIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50 KGlmYWNlLT50ZXh0KFFBY2Nlc3NpYmxlOjpOYW1lKSkpKTsKKyAgICAgICAgICAgICAgICAgc2Vu ZERCdXNTaWduYWwocGF0aCwgUUxhdGluMVN0cmluZyhBVFNQSV9EQlVTX0lOVEVSRkFDRV9FVkVO VF9PQkpFQ1QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5n KCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdzMSk7CisgICAgICAgICAgICAgICAgIFFWYXJpYW50TGlz dCBhcmdzMiA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKFFTdHJpbmcoKSwgMCwgMCwgUVZhcmlh bnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoUVZhcmlhbnQoMCkpKSk7CitAQCAtMTM1OCw2ICsx MzgxLDI2IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpyZWdpc3RlckFwcGxpY2F0aW9uKCkKKyAgICAg ZGVsZXRlIHJlZ2lzdHJ5OworIH0KKyAKKytuYW1lc3BhY2UgeworK1FTdHJpbmcgYWNjZXNzaWJs ZUlkRm9yQWNjZXNzaWJsZShRQWNjZXNzaWJsZUludGVyZmFjZSAqYWNjZXNzaWJsZSkKKyt7Cisr ICAgIFFTdHJpbmcgcmVzdWx0OworKyAgICB3aGlsZSAoYWNjZXNzaWJsZSkgeworKyAgICAgICAg aWYgKCFyZXN1bHQuaXNFbXB0eSgpKQorKyAgICAgICAgICAgIHJlc3VsdC5wcmVwZW5kKFFMYXRp bjFDaGFyKCcuJykpOworKyAgICAgICAgaWYgKGF1dG8gb2JqID0gYWNjZXNzaWJsZS0+b2JqZWN0 KCkpIHsKKysgICAgICAgICAgICBjb25zdCBRU3RyaW5nIG5hbWUgPSBvYmotPm9iamVjdE5hbWUo KTsKKysgICAgICAgICAgICBpZiAoIW5hbWUuaXNFbXB0eSgpKQorKyAgICAgICAgICAgICAgICBy ZXN1bHQucHJlcGVuZChuYW1lKTsKKysgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgICAg IHJlc3VsdC5wcmVwZW5kKFFTdHJpbmc6OmZyb21VdGY4KG9iai0+bWV0YU9iamVjdCgpLT5jbGFz c05hbWUoKSkpOworKyAgICAgICAgfQorKyAgICAgICAgYWNjZXNzaWJsZSA9IGFjY2Vzc2libGUt PnBhcmVudCgpOworKyAgICB9CisrICAgIHJldHVybiByZXN1bHQ7CisrfQorK30gLy8gbmFtZXNw YWNlCisrCisgLy8gQWNjZXNzaWJsZQorIGJvb2wgQXRTcGlBZGFwdG9yOjphY2Nlc3NpYmxlSW50 ZXJmYWNlKFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppbnRlcmZhY2UsIGNvbnN0IFFTdHJpbmcgJmZ1 bmN0aW9uLCBjb25zdCBRREJ1c01lc3NhZ2UgJm1lc3NhZ2UsIGNvbnN0IFFEQnVzQ29ubmVjdGlv biAmY29ubmVjdGlvbikKKyB7CitAQCAtMTQ0MSw2ICsxNDg0LDkgQEAgYm9vbCBBdFNwaUFkYXB0 b3I6OmFjY2Vzc2libGVJbnRlcmZhY2UoUUFjY2Vzc2libGVJbnRlcmZhY2UgKmludGVyZmFjZSwg Y29uc3QgUVMKKyAgICAgICAgICAgICBjaGlsZHJlbiA8PCByZWY7CisgICAgICAgICB9CisgICAg ICAgICBjb25uZWN0aW9uLnNlbmQobWVzc2FnZS5jcmVhdGVSZXBseShRVmFyaWFudDo6ZnJvbVZh bHVlKGNoaWxkcmVuKSkpOworKyAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uID09IFFMYXRpbjFTdHJp bmcoIkdldEFjY2Vzc2libGVJZCIpKSB7CisrICAgICAgICBzZW5kUmVwbHkoY29ubmVjdGlvbiwg bWVzc2FnZSwKKysgICAgICAgICAgICAgICAgICBRVmFyaWFudDo6ZnJvbVZhbHVlKFFEQnVzVmFy aWFudChhY2Nlc3NpYmxlSWRGb3JBY2Nlc3NpYmxlKGludGVyZmFjZSkpKSk7CisgICAgIH0gZWxz ZSB7CisgICAgICAgICBxQ0RlYnVnKGxjQWNjZXNzaWJpbGl0eUF0c3BpKSA8PCAiV0FSTklORzog QXRTcGlBZGFwdG9yOjphY2Nlc3NpYmxlSW50ZXJmYWNlIGRvZXMgbm90IGltcGxlbWVudCAiIDw8 IGZ1bmN0aW9uIDw8IG1lc3NhZ2UucGF0aCgpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9k YnVzY29ubmVjdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vz c2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3BwCitpbmRleCA0NWRkYzhlNDk2Li5jYzczNGFiYzYz IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmls aXR5L2RidXNjb25uZWN0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQv bGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9uLmNwcAorQEAgLTY5LDYgKzY5LDIxIEBA IFFUX0JFR0lOX05BTUVTUEFDRQorIERCdXNDb25uZWN0aW9uOjpEQnVzQ29ubmVjdGlvbihRT2Jq ZWN0ICpwYXJlbnQpCisgICAgIDogUU9iamVjdChwYXJlbnQpLCBtX2ExMXlDb25uZWN0aW9uKFFT dHJpbmcoKSksIG1fZW5hYmxlZChmYWxzZSkKKyB7CisrICAgIC8vIElmIHRoZSBidXMgaXMgZXhw bGljaXRseSBzZXQgdmlhIGVudiB2YXIgaXQgb3ZlcnJpZGVzIGV2ZXJ5dGhpbmcgZWxzZS4KKysg ICAgUUJ5dGVBcnJheSBhZGRyZXNzRW52ID0gcWdldGVudigiQVRfU1BJX0JVU19BRERSRVNTIik7 CisrICAgIGlmICghYWRkcmVzc0Vudi5pc0VtcHR5KCkpIHsKKysgICAgICAgIC8vIE9ubHkgY29u bmVjdCBvbiBuZXh0IGxvb3AgcnVuLCBjb25uZWN0aW9ucyB0byBvdXIgZW5hYmxlZCBzaWduYWwg YXJlCisrICAgICAgICAvLyBvbmx5IGVzdGFibGlzaGVkIGFmdGVyIHRoZSBjdG9yIHJldHVybnMu CisrICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKAorKyAgICAgICAgICAgICAgICB0 aGlzLAorKyAgICAgICAgICAgICAgICBbdGhpcywgYWRkcmVzc0Vudl0geworKyAgICAgICAgICAg ICAgICAgICAgbV9lbmFibGVkID0gdHJ1ZTsKKysgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RB MTF5QnVzKFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQoYWRkcmVzc0VudikpOworKyAgICAgICAgICAg ICAgICB9LAorKyAgICAgICAgICAgICAgICBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisrICAgICAg ICByZXR1cm47CisrICAgIH0KKysKKyAgICAgLy8gU3RhcnQgbW9uaXRvcmluZyBpZiAib3JnLmEx MXkuQnVzIiBpcyByZWdpc3RlcmVkIGFzIERCdXMgc2VydmljZS4KKyAgICAgUURCdXNDb25uZWN0 aW9uIGMgPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKTsKKyAgICAgaWYgKCFjLmlzQ29u bmVjdGVkKCkpIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2 aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlcy5jcHAgYi9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlcy5j cHAKK2luZGV4IDFhM2NhYjI3NWQuLjJhYmUwMzkxMjYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNl cy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1 bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNwcAorQEAgLTUxLDYgKzUxLDkgQEAKKyAjaW5jbHVk ZSA8UXRDb3JlL1FTdGFuZGFyZFBhdGhzPgorICNpbmNsdWRlIDxRdENvcmUvUVVybD4KKyAKKysj aW5jbHVkZSA8UXRHdWkvUUd1aUFwcGxpY2F0aW9uPgorKyNpbmNsdWRlIDxRdEd1aS9RV2luZG93 PgorKworICNpZiBRVF9DT05GSUcoZGJ1cykKKyAvLyBUaGVzZSBRdENvcmUgaW5jbHVkZXMgYXJl IG5lZWRlZCBmb3IgeGRnLWRlc2t0b3AtcG9ydGFsIHN1cHBvcnQKKyAjaW5jbHVkZSA8UXRDb3Jl L3ByaXZhdGUvcWNvcmVfdW5peF9wLmg+CitAQCAtNTgsNiArNjEsOCBAQAorICNpbmNsdWRlIDxR dENvcmUvUUZpbGVJbmZvPgorICNpbmNsdWRlIDxRdENvcmUvUVVybFF1ZXJ5PgorIAorKyNpbmNs dWRlIDxRdEd1aS9RQ29sb3I+CisrCisgI2luY2x1ZGUgPFF0REJ1cy9RREJ1c0Nvbm5lY3Rpb24+ CisgI2luY2x1ZGUgPFF0REJ1cy9RREJ1c01lc3NhZ2U+CisgI2luY2x1ZGUgPFF0REJ1cy9RREJ1 c1BlbmRpbmdDYWxsPgorQEAgLTE0Miw2ICsxNDcsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZGV0 ZWN0V2ViQnJvd3Nlcihjb25zdCBRQnl0ZUFycmF5ICZkZXNrdG9wLAorICAgICB9CisgCisgICAg IGlmIChkZXNrdG9wID09IFFCeXRlQXJyYXkoIktERSIpKSB7CisrICAgICAgICBpZiAoY2hlY2tF eGVjdXRhYmxlKFFTdHJpbmdMaXRlcmFsKCJrZGUtb3BlbjUiKSwgYnJvd3NlcikpCisrICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAvLyBLb25xdWVyb3IgbGF1bmNoZXIKKyAgICAg ICAgIGlmIChjaGVja0V4ZWN1dGFibGUoUVN0cmluZ0xpdGVyYWwoImtmbWNsaWVudCIpLCBicm93 c2VyKSkgeworICAgICAgICAgICAgIGJyb3dzZXItPmFwcGVuZChRTGF0aW4xU3RyaW5nKCIgZXhl YyIpKTsKK0BAIC0yOTYsOCArMzAzLDEzNSBAQCBzdGF0aWMgaW5saW5lIFFEQnVzTWVzc2FnZSB4 ZGdEZXNrdG9wUG9ydGFsU2VuZEVtYWlsKGNvbnN0IFFVcmwgJnVybCkKKyAKKyAgICAgcmV0dXJu IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmNhbGwobWVzc2FnZSk7CisgfQorKworK25h bWVzcGFjZSB7Cisrc3RydWN0IFhER0Rlc2t0b3BDb2xvcgorK3sKKysgICAgZG91YmxlIHIgPSAw OworKyAgICBkb3VibGUgZyA9IDA7CisrICAgIGRvdWJsZSBiID0gMDsKKysKKysgICAgUUNvbG9y IHRvUUNvbG9yKCkgY29uc3QKKysgICAgeworKyAgICAgICAgY29uc3RleHByIGF1dG8gcmdiTWF4 ID0gMjU1OworKyAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50PihyICogcmdiTWF4KSwg c3RhdGljX2Nhc3Q8aW50PihnICogcmdiTWF4KSwKKysgICAgICAgICAgICAgICAgIHN0YXRpY19j YXN0PGludD4oYiAqIHJnYk1heCkgfTsKKysgICAgfQorK307CisrCisrY29uc3QgUURCdXNBcmd1 bWVudCAmb3BlcmF0b3I+Pihjb25zdCBRREJ1c0FyZ3VtZW50ICZhcmd1bWVudCwgWERHRGVza3Rv cENvbG9yICZteVN0cnVjdCkKKyt7CisrICAgIGFyZ3VtZW50LmJlZ2luU3RydWN0dXJlKCk7Cisr ICAgIGFyZ3VtZW50ID4+IG15U3RydWN0LnIgPj4gbXlTdHJ1Y3QuZyA+PiBteVN0cnVjdC5iOwor KyAgICBhcmd1bWVudC5lbmRTdHJ1Y3R1cmUoKTsKKysgICAgcmV0dXJuIGFyZ3VtZW50OworK30K KysKKytjbGFzcyBYZGdEZXNrdG9wUG9ydGFsQ29sb3JQaWNrZXIgOiBwdWJsaWMgUVBsYXRmb3Jt U2VydmljZUNvbG9yUGlja2VyCisreworKyAgICBRX09CSkVDVAorK3B1YmxpYzoKKysgICAgWGRn RGVza3RvcFBvcnRhbENvbG9yUGlja2VyKGNvbnN0IFFTdHJpbmcgJnBhcmVudFdpbmRvd0lkLCBR V2luZG93ICpwYXJlbnQpCisrICAgICAgICA6IFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlcihw YXJlbnQpLCBtX3BhcmVudFdpbmRvd0lkKHBhcmVudFdpbmRvd0lkKQorKyAgICB7CisrICAgIH0K KysKKysgICAgdm9pZCBwaWNrQ29sb3IoKSBvdmVycmlkZQorKyAgICB7CisrICAgICAgICAvLyBE QnVzIHNpZ25hdHVyZToKKysgICAgICAgIC8vIFBpY2tDb2xvciAoSU4gICBzICAgICAgcGFyZW50 X3dpbmRvdywKKysgICAgICAgIC8vICAgICAgICAgICAgSU4gICBhe3N2fSAgb3B0aW9ucworKyAg ICAgICAgLy8gICAgICAgICAgICBPVVQgIG8gICAgICBoYW5kbGUpCisrICAgICAgICAvLyBPcHRp b25zOgorKyAgICAgICAgLy8gaGFuZGxlX3Rva2VuIChzKSAtICBBIHN0cmluZyB0aGF0IHdpbGwg YmUgdXNlZCBhcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBAaGFuZGxlLgorKworKyAgICAgICAg UURCdXNNZXNzYWdlIG1lc3NhZ2UgPSBRREJ1c01lc3NhZ2U6OmNyZWF0ZU1ldGhvZENhbGwoCisr ICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkRl c2t0b3AiKSwgUVN0cmluZ0xpdGVyYWwoIi9vcmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0b3Ai KSwKKysgICAgICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0 YWwuU2NyZWVuc2hvdCIpLCBRU3RyaW5nTGl0ZXJhbCgiUGlja0NvbG9yIikpOworKyAgICAgICAg bWVzc2FnZSA8PCBtX3BhcmVudFdpbmRvd0lkIDw8IFFWYXJpYW50TWFwKCk7CisrCisrICAgICAg ICBRREJ1c1BlbmRpbmdDYWxsIHBlbmRpbmdDYWxsID0gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9u QnVzKCkuYXN5bmNDYWxsKG1lc3NhZ2UpOworKyAgICAgICAgYXV0byB3YXRjaGVyID0gbmV3IFFE QnVzUGVuZGluZ0NhbGxXYXRjaGVyKHBlbmRpbmdDYWxsLCB0aGlzKTsKKysgICAgICAgIGNvbm5l Y3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyOjpmaW5pc2hlZCwgdGhpcywKKysg ICAgICAgICAgICAgICAgW3RoaXNdKFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVyKSB7 CisrICAgICAgICAgICAgICAgICAgICB3YXRjaGVyLT5kZWxldGVMYXRlcigpOworKyAgICAgICAg ICAgICAgICAgICAgUURCdXNQZW5kaW5nUmVwbHk8UURCdXNPYmplY3RQYXRoPiByZXBseSA9ICp3 YXRjaGVyOworKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcGx5LmlzRXJyb3IoKSkgeworKyAg ICAgICAgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJEQnVzIGNhbGwgdG8gcGljayBjb2xvciBm YWlsZWQ6ICVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxUHJpbnRhYmxl KHJlcGx5LmVycm9yKCkubWVzc2FnZSgpKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgUV9F TUlUIGNvbG9yUGlja2VkKHt9KTsKKysgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisrICAg ICAgICAgICAgICAgICAgICAgICAgUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuY29ubmVj dCgKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcu ZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiKSwgcmVwbHkudmFsdWUoKS5wYXRoKCksCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNr dG9wLnBvcnRhbC5SZXF1ZXN0IiksIFFTdHJpbmdMaXRlcmFsKCJSZXNwb25zZSIpLCB0aGlzLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChnb3RDb2xvclJlc3BvbnNlKHVpbnQs UVZhcmlhbnRNYXApKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xhbmct Zm9ybWF0IG9uCisrICAgICAgICAgICAgICAgICAgICAgICAgKTsKKysgICAgICAgICAgICAgICAg ICAgIH0KKysgICAgICAgICAgICAgICAgfSk7CisrICAgIH0KKysKKytwcml2YXRlIFFfU0xPVFM6 CisrICAgIHZvaWQgZ290Q29sb3JSZXNwb25zZSh1aW50IHJlc3VsdCwgY29uc3QgUVZhcmlhbnRN YXAgJm1hcCkKKysgICAgeworKyAgICAgICAgaWYgKHJlc3VsdCAhPSAwKQorKyAgICAgICAgICAg IHJldHVybjsKKysgICAgICAgIFhER0Rlc2t0b3BDb2xvciBjb2xvcnt9OworKyAgICAgICAgbWFw LnZhbHVlKFFTdHJpbmdMaXRlcmFsKCJjb2xvciIpKS52YWx1ZTxRREJ1c0FyZ3VtZW50PigpID4+ IGNvbG9yOworKyAgICAgICAgUV9FTUlUIGNvbG9yUGlja2VkKGNvbG9yLnRvUUNvbG9yKCkpOwor KyAgICAgICAgZGVsZXRlTGF0ZXIoKTsKKysgICAgfQorKworK3ByaXZhdGU6CisrICAgIGNvbnN0 IFFTdHJpbmcgbV9wYXJlbnRXaW5kb3dJZDsKKyt9OworK30gLy8gbmFtZXNwYWNlCisrCisgI2Vu ZGlmIC8vIFFUX0NPTkZJRyhkYnVzKQorIAorK1FHZW5lcmljVW5peFNlcnZpY2VzOjpRR2VuZXJp Y1VuaXhTZXJ2aWNlcygpCisreworKyNpZiBRVF9DT05GSUcoZGJ1cykKKysgICAgaWYgKHFFbnZp cm9ubWVudFZhcmlhYmxlSW50VmFsdWUoIlFUX05PX1hER19ERVNLVE9QX1BPUlRBTCIpID4gMCkg eworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrICAgIFFEQnVzTWVzc2FnZSBtZXNzYWdlID0g UURCdXNNZXNzYWdlOjpjcmVhdGVNZXRob2RDYWxsKAorKyAgICAgICAgICAgIFFTdHJpbmdMaXRl cmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLkRlc2t0b3AiKSwgUVN0cmluZ0xpdGVyYWwoIi9v cmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0b3AiKSwKKysgICAgICAgICAgICBRU3RyaW5nTGl0 ZXJhbCgib3JnLmZyZWVkZXNrdG9wLkRCdXMuUHJvcGVydGllcyIpLCBRU3RyaW5nTGl0ZXJhbCgi R2V0IikpOworKyAgICBtZXNzYWdlIDw8IFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3Au cG9ydGFsLlNjcmVlbnNob3QiKQorKyAgICAgICAgICAgIDw8IFFTdHJpbmdMaXRlcmFsKCJ2ZXJz aW9uIik7CisrCisrICAgIFFEQnVzUGVuZGluZ0NhbGwgcGVuZGluZ0NhbGwgPSBRREJ1c0Nvbm5l Y3Rpb246OnNlc3Npb25CdXMoKS5hc3luY0NhbGwobWVzc2FnZSk7CisrICAgIGF1dG8gd2F0Y2hl ciA9IG5ldyBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcihwZW5kaW5nQ2FsbCk7CisrICAgIFFPYmpl Y3Q6OmNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyOjpmaW5pc2hlZCwg d2F0Y2hlciwKKysgICAgICAgICAgICAgICAgICAgICBbdGhpc10oUURCdXNQZW5kaW5nQ2FsbFdh dGNoZXIgKndhdGNoZXIpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgd2F0Y2hlci0+ZGVs ZXRlTGF0ZXIoKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgUURCdXNQZW5kaW5nUmVwbHk8 UVZhcmlhbnQ+IHJlcGx5ID0gKndhdGNoZXI7CisrICAgICAgICAgICAgICAgICAgICAgICAgIGlm ICghcmVwbHkuaXNFcnJvcigpICYmIHJlcGx5LnZhbHVlKCkudG9VSW50KCkgPj0gMikKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1faGFzU2NyZWVuc2hvdFBvcnRhbFdpdGhDb2xvclBp Y2tpbmcgPSB0cnVlOworKyAgICAgICAgICAgICAgICAgICAgIH0pOworKworKyNlbmRpZgorK30K KysKKytRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgKlFHZW5lcmljVW5peFNlcnZpY2VzOjpj b2xvclBpY2tlcihRV2luZG93ICpwYXJlbnQpCisreworKyNpZiBRVF9DT05GSUcoZGJ1cykKKysg ICAgLy8gTWFrZSBkb3VibGUgc3VyZSB0aGF0IHdlIGFyZSBpbiBhIHdheWxhbmQgZW52aXJvbm1l bnQuIEluIHBhcnRpY3VsYXIgY2hlY2sKKysgICAgLy8gV0FZTEFORF9ESVNQTEFZIHNvIGFsc28g WFdheWxhbmQgYXBwcyBiZW5lZml0IGZyb20gcG9ydGFsLWJhc2VkIGNvbG9yIHBpY2tpbmcuCisr ICAgIC8vIE91dHNpZGUgd2F5bGFuZCB3ZSdsbCByYXRoZXIgcmVseSBvbiBvdGhlciBtZWFucyB0 aGFuIHRoZSBYREcgZGVza3RvcCBwb3J0YWwuCisrICAgIGlmICghcUVudmlyb25tZW50VmFyaWFi bGVJc0VtcHR5KCJXQVlMQU5EX0RJU1BMQVkiKQorKyAgICAgICAgfHwgUUd1aUFwcGxpY2F0aW9u OjpwbGF0Zm9ybU5hbWUoKS5zdGFydHNXaXRoKFFMYXRpbjFTdHJpbmcoIndheWxhbmQiKSkpIHsK KysgICAgICAgIHJldHVybiBuZXcgWGRnRGVza3RvcFBvcnRhbENvbG9yUGlja2VyKHBvcnRhbFdp bmRvd0lkZW50aWZpZXIocGFyZW50KSwgcGFyZW50KTsKKysgICAgfQorKyAgICByZXR1cm4gbnVs bHB0cjsKKysjZWxzZQorKyAgICBRX1VOVVNFRChwYXJlbnQpOworKyAgICByZXR1cm4gbnVsbHB0 cjsKKysjZW5kaWYKKyt9CisrCisgUUJ5dGVBcnJheSBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6ZGVz a3RvcEVudmlyb25tZW50KCkgY29uc3QKKyB7CisgICAgIHN0YXRpYyBjb25zdCBRQnl0ZUFycmF5 IHJlc3VsdCA9IGRldGVjdERlc2t0b3BFbnZpcm9ubWVudCgpOworQEAgLTM1Miw2ICs0ODYsOCBA QCBib29sIFFHZW5lcmljVW5peFNlcnZpY2VzOjpvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJs KQorIH0KKyAKKyAjZWxzZQorK1FHZW5lcmljVW5peFNlcnZpY2VzOjpRR2VuZXJpY1VuaXhTZXJ2 aWNlcygpID0gZGVmYXVsdDsKKysKKyBRQnl0ZUFycmF5IFFHZW5lcmljVW5peFNlcnZpY2VzOjpk ZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdAorIHsKKyAgICAgcmV0dXJuIFFCeXRlQXJyYXlMaXRl cmFsKCJVTktOT1dOIik7CitAQCAtMzcxLDYgKzUwNywzMCBAQCBib29sIFFHZW5lcmljVW5peFNl cnZpY2VzOjpvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJsKQorICAgICByZXR1cm4gZmFsc2U7 CisgfQorIAorK1FQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqUUdlbmVyaWNVbml4U2Vydmlj ZXM6OmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCkKKyt7CisrICAgIFFfVU5VU0VEKHBhcmVu dCk7CisrICAgIHJldHVybiBudWxscHRyOworK30KKysKKyAjZW5kaWYgLy8gUVRfTk9fTVVMVElQ Uk9DRVNTCisgCisrUVN0cmluZyBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6cG9ydGFsV2luZG93SWRl bnRpZmllcihRV2luZG93ICp3aW5kb3cpCisreworKyAgICBpZiAoUUd1aUFwcGxpY2F0aW9uOjpw bGF0Zm9ybU5hbWUoKSA9PSBRTGF0aW4xU3RyaW5nKCJ4Y2IiKSkKKysgICAgICAgIHJldHVybiBR U3RyaW5nTGl0ZXJhbCgieDExOiIpICsgUVN0cmluZzo6bnVtYmVyKHdpbmRvdy0+d2luSWQoKSwg MTYpOworKyAgICByZXR1cm4gUVN0cmluZygpOworK30KKysKKytib29sIFFHZW5lcmljVW5peFNl cnZpY2VzOjpoYXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkgY29uc3QKKyt7Cisr ICAgIHN3aXRjaCAoY2FwYWJpbGl0eSkgeworKyAgICBjYXNlIENhcGFiaWxpdHk6OkNvbG9yUGlj a2luZzoKKysgICAgICAgIHJldHVybiBtX2hhc1NjcmVlbnNob3RQb3J0YWxXaXRoQ29sb3JQaWNr aW5nOworKyAgICB9CisrICAgIHJldHVybiBmYWxzZTsKKyt9CisrCisgUVRfRU5EX05BTUVTUEFD RQorKworKyNpbmNsdWRlICJxZ2VuZXJpY3VuaXhzZXJ2aWNlcy5tb2MiCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1 bml4c2VydmljZXNfcC5oIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2Vu ZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oCitpbmRleCA4YWMzZGU2ZjAzLi4zMDky NGU2NGJkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMv Z2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlc19w LmgKK0BAIC01OSwxNiArNTksMjEgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgY2xhc3MgUUdlbmVy aWNVbml4U2VydmljZXMgOiBwdWJsaWMgUVBsYXRmb3JtU2VydmljZXMKKyB7CisgcHVibGljOgor LSAgICBRR2VuZXJpY1VuaXhTZXJ2aWNlcygpIHt9CisrICAgIFFHZW5lcmljVW5peFNlcnZpY2Vz KCk7CisgCisgICAgIFFCeXRlQXJyYXkgZGVza3RvcEVudmlyb25tZW50KCkgY29uc3Qgb3ZlcnJp ZGU7CisgCisrICAgIGJvb2wgaGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNhcGFiaWxpdHkpIGNv bnN0IG92ZXJyaWRlOworICAgICBib29sIG9wZW5VcmwoY29uc3QgUVVybCAmdXJsKSBvdmVycmlk ZTsKKyAgICAgYm9vbCBvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJsKSBvdmVycmlkZTsKKysg ICAgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpjb2xvclBpY2tlcihRV2luZG93ICpwYXJl bnQgPSBudWxscHRyKSBvdmVycmlkZTsKKysKKysgICAgdmlydHVhbCBRU3RyaW5nIHBvcnRhbFdp bmRvd0lkZW50aWZpZXIoUVdpbmRvdyAqd2luZG93KTsKKyAKKyBwcml2YXRlOgorICAgICBRU3Ry aW5nIG1fd2ViQnJvd3NlcjsKKyAgICAgUVN0cmluZyBtX2RvY3VtZW50TGF1bmNoZXI7CisrICAg IGJvb2wgbV9oYXNTY3JlZW5zaG90UG9ydGFsV2l0aENvbG9yUGlja2luZyA9IGZhbHNlOworIH07 CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1z dXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNw cCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVu dS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcAoraW5kZXggMDk0NzBiY2NjNi4uY2M3YzdkNGQ4YSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5p eC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0 Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rp b24uY3BwCitAQCAtNjksNiArNjksNyBAQCBjb25zdCBRU3RyaW5nIE1lbnVCYXJQYXRoID0gUUxh dGluMVN0cmluZygiL01lbnVCYXIiKTsKKyAqLworIFFEQnVzTWVudUNvbm5lY3Rpb246OlFEQnVz TWVudUNvbm5lY3Rpb24oUU9iamVjdCAqcGFyZW50LCBjb25zdCBRU3RyaW5nICZzZXJ2aWNlTmFt ZSkKKyAgICAgOiBRT2JqZWN0KHBhcmVudCkKKysgICAgLCBtX3NlcnZpY2VOYW1lKHNlcnZpY2VO YW1lKQorICAgICAsIG1fY29ubmVjdGlvbihzZXJ2aWNlTmFtZS5pc051bGwoKSA/IFFEQnVzQ29u bmVjdGlvbjo6c2Vzc2lvbkJ1cygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDogUURCdXNDb25uZWN0aW9uOjpjb25uZWN0VG9CdXMoUURCdXNDb25uZWN0aW9uOjpT ZXNzaW9uQnVzLCBzZXJ2aWNlTmFtZSkpCisgICAgICwgbV9kYnVzV2F0Y2hlcihuZXcgUURCdXNT ZXJ2aWNlV2F0Y2hlcihTdGF0dXNOb3RpZmllcldhdGNoZXJTZXJ2aWNlLCBtX2Nvbm5lY3Rpb24s IFFEQnVzU2VydmljZVdhdGNoZXI6OldhdGNoRm9yUmVnaXN0cmF0aW9uLCB0aGlzKSkKK0BAIC04 Myw2ICs4NCwxMiBAQCBRREJ1c01lbnVDb25uZWN0aW9uOjpRREJ1c01lbnVDb25uZWN0aW9uKFFP YmplY3QgKnBhcmVudCwgY29uc3QgUVN0cmluZyAmc2VydmljZQorICNlbmRpZgorIH0KKyAKKytR REJ1c01lbnVDb25uZWN0aW9uOjp+UURCdXNNZW51Q29ubmVjdGlvbigpCisreworKyAgaWYgKCFt X3NlcnZpY2VOYW1lLmlzRW1wdHkoKSAmJiBtX2Nvbm5lY3Rpb24uaXNDb25uZWN0ZWQoKSkKKysg ICAgICBRREJ1c0Nvbm5lY3Rpb246OmRpc2Nvbm5lY3RGcm9tQnVzKG1fc2VydmljZU5hbWUpOwor K30KKysKKyB2b2lkIFFEQnVzTWVudUNvbm5lY3Rpb246OmRidXNFcnJvcihjb25zdCBRREJ1c0Vy cm9yICZlcnJvcikKKyB7CisgICAgIHFXYXJuaW5nKCkgPDwgIlFEQnVzVHJheUljb24gZW5jb3Vu dGVyZWQgYSBELUJ1cyBlcnJvcjoiIDw8IGVycm9yOworQEAgLTEwNSwxMyArMTEyLDcgQEAgdm9p ZCBRREJ1c01lbnVDb25uZWN0aW9uOjp1bnJlZ2lzdGVyVHJheUljb25NZW51KFFEQnVzVHJheUlj b24gKml0ZW0pCisgCisgYm9vbCBRREJ1c01lbnVDb25uZWN0aW9uOjpyZWdpc3RlclRyYXlJY29u KFFEQnVzVHJheUljb24gKml0ZW0pCisgeworLSAgICBib29sIHN1Y2Nlc3MgPSBjb25uZWN0aW9u KCkucmVnaXN0ZXJTZXJ2aWNlKGl0ZW0tPmluc3RhbmNlSWQoKSk7CistICAgIGlmICghc3VjY2Vz cykgeworLSAgICAgICAgcVdhcm5pbmcoKSA8PCAiZmFpbGVkIHRvIHJlZ2lzdGVyIHNlcnZpY2Ui IDw8IGl0ZW0tPmluc3RhbmNlSWQoKTsKKy0gICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgfQor LQorLSAgICBzdWNjZXNzID0gY29ubmVjdGlvbigpLnJlZ2lzdGVyT2JqZWN0KFN0YXR1c05vdGlm aWVySXRlbVBhdGgsIGl0ZW0pOworKyAgICBib29sIHN1Y2Nlc3MgPSBjb25uZWN0aW9uKCkucmVn aXN0ZXJPYmplY3QoU3RhdHVzTm90aWZpZXJJdGVtUGF0aCwgaXRlbSk7CisgICAgIGlmICghc3Vj Y2VzcykgeworICAgICAgICAgdW5yZWdpc3RlclRyYXlJY29uKGl0ZW0pOworICAgICAgICAgcVdh cm5pbmcoKSA8PCAiZmFpbGVkIHRvIHJlZ2lzdGVyIiA8PCBpdGVtLT5pbnN0YW5jZUlkKCkgPDwg U3RhdHVzTm90aWZpZXJJdGVtUGF0aDsKK0BAIC0xMjYsMjEgKzEyNywxOCBAQCBib29sIFFEQnVz TWVudUNvbm5lY3Rpb246OnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSkKKyAK KyBib29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnJlZ2lzdGVyVHJheUljb25XaXRoV2F0Y2hlcihR REJ1c1RyYXlJY29uICppdGVtKQorIHsKKysgICAgUV9VTlVTRUQoaXRlbSk7CisgICAgIFFEQnVz TWVzc2FnZSByZWdpc3Rlck1ldGhvZCA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRlTWV0aG9kQ2FsbCgK KyAgICAgICAgICAgICAgICAgU3RhdHVzTm90aWZpZXJXYXRjaGVyU2VydmljZSwgU3RhdHVzTm90 aWZpZXJXYXRjaGVyUGF0aCwgU3RhdHVzTm90aWZpZXJXYXRjaGVyU2VydmljZSwKKyAgICAgICAg ICAgICAgICAgUUxhdGluMVN0cmluZygiUmVnaXN0ZXJTdGF0dXNOb3RpZmllckl0ZW0iKSk7Cist ICAgIHJlZ2lzdGVyTWV0aG9kLnNldEFyZ3VtZW50cyhRVmFyaWFudExpc3QoKSA8PCBpdGVtLT5p bnN0YW5jZUlkKCkpOworKyAgICByZWdpc3Rlck1ldGhvZC5zZXRBcmd1bWVudHMoUVZhcmlhbnRM aXN0KCkgPDwgbV9jb25uZWN0aW9uLmJhc2VTZXJ2aWNlKCkpOworICAgICByZXR1cm4gbV9jb25u ZWN0aW9uLmNhbGxXaXRoQ2FsbGJhY2socmVnaXN0ZXJNZXRob2QsIHRoaXMsIFNJR05BTCh0cmF5 SWNvblJlZ2lzdGVyZWQoKSksIFNMT1QoZGJ1c0Vycm9yKFFEQnVzRXJyb3IpKSk7CisgfQorIAor LWJvb2wgUURCdXNNZW51Q29ubmVjdGlvbjo6dW5yZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUlj b24gKml0ZW0pCisrdm9pZCBRREJ1c01lbnVDb25uZWN0aW9uOjp1bnJlZ2lzdGVyVHJheUljb24o UURCdXNUcmF5SWNvbiAqaXRlbSkKKyB7CisgICAgIHVucmVnaXN0ZXJUcmF5SWNvbk1lbnUoaXRl bSk7CisgICAgIGNvbm5lY3Rpb24oKS51bnJlZ2lzdGVyT2JqZWN0KFN0YXR1c05vdGlmaWVySXRl bVBhdGgpOworLSAgICBib29sIHN1Y2Nlc3MgPSBjb25uZWN0aW9uKCkudW5yZWdpc3RlclNlcnZp Y2UoaXRlbS0+aW5zdGFuY2VJZCgpKTsKKy0gICAgaWYgKCFzdWNjZXNzKQorLSAgICAgICAgcVdh cm5pbmcoKSA8PCAiZmFpbGVkIHRvIHVucmVnaXN0ZXIgc2VydmljZSIgPDwgaXRlbS0+aW5zdGFu Y2VJZCgpOworLSAgICByZXR1cm4gc3VjY2VzczsKKyB9CisgI2VuZGlmIC8vIFFUX05PX1NZU1RF TVRSQVlJQ09OCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhl bWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oIGIvcXRiYXNl L3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVu dWNvbm5lY3Rpb25fcC5oCitpbmRleCBmNDg0Nzk1ZmJiLi45N2JkZmFiYjg1IDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51 L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9y dC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbl9wLmgKK0BA IC03MCw2ICs3MCw3IEBAIGNsYXNzIFFEQnVzTWVudUNvbm5lY3Rpb24gOiBwdWJsaWMgUU9iamVj dAorIAorIHB1YmxpYzoKKyAgICAgUURCdXNNZW51Q29ubmVjdGlvbihRT2JqZWN0ICpwYXJlbnQg PSBudWxscHRyLCBjb25zdCBRU3RyaW5nICZzZXJ2aWNlTmFtZSA9IFFTdHJpbmcoKSk7CisrICAg IH5RREJ1c01lbnVDb25uZWN0aW9uKCk7CisgICAgIFFEQnVzQ29ubmVjdGlvbiBjb25uZWN0aW9u KCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisgICAgIFFEQnVzU2VydmljZVdhdGNo ZXIgKmRidXNXYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9kYnVzV2F0Y2hlcjsgfQorICAgICBi b29sIGlzU3RhdHVzTm90aWZpZXJIb3N0UmVnaXN0ZXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh dHVzTm90aWZpZXJIb3N0UmVnaXN0ZXJlZDsgfQorQEAgLTc4LDcgKzc5LDcgQEAgcHVibGljOgor ICAgICB2b2lkIHVucmVnaXN0ZXJUcmF5SWNvbk1lbnUoUURCdXNUcmF5SWNvbiAqaXRlbSk7Cisg ICAgIGJvb2wgcmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKTsKKyAgICAgYm9v bCByZWdpc3RlclRyYXlJY29uV2l0aFdhdGNoZXIoUURCdXNUcmF5SWNvbiAqaXRlbSk7CistICAg IGJvb2wgdW5yZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pOworKyAgICB2b2lk IHVucmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKTsKKyAjZW5kaWYgLy8gUVRf Tk9fU1lTVEVNVFJBWUlDT04KKyAKKyBRX1NJR05BTFM6CitAQCAtOTAsNiArOTEsNyBAQCBwcml2 YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgZGJ1c0Vycm9yKGNvbnN0IFFEQnVzRXJyb3IgJmVycm9y KTsKKyAKKyBwcml2YXRlOgorKyAgICBRU3RyaW5nIG1fc2VydmljZU5hbWU7CisgICAgIFFEQnVz Q29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247CisgICAgIFFEQnVzU2VydmljZVdhdGNoZXIgKm1fZGJ1 c1dhdGNoZXI7CisgICAgIGJvb2wgbV9zdGF0dXNOb3RpZmllckhvc3RSZWdpc3RlcmVkOworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9k YnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3Ro ZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcAoraW5kZXggYmVkZTcw OTc1YS4uNzZiZmVjNWU1YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcAorKysrIGIvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXN0cmF5L3FkYnVz dHJheWljb24uY3BwCitAQCAtNzEsOCArNzEsMTIgQEAgUV9MT0dHSU5HX0NBVEVHT1JZKHFMY1Ry YXksICJxdC5xcGEudHJheSIpCisgc3RhdGljIFFTdHJpbmcgaWNvblRlbXBQYXRoKCkKKyB7Cisg ICAgIFFTdHJpbmcgdGVtcFBhdGggPSBRU3RhbmRhcmRQYXRoczo6d3JpdGFibGVMb2NhdGlvbihR U3RhbmRhcmRQYXRoczo6UnVudGltZUxvY2F0aW9uKTsKKy0gICAgaWYgKCF0ZW1wUGF0aC5pc0Vt cHR5KCkpCisrICAgIGlmICghdGVtcFBhdGguaXNFbXB0eSgpKSB7CisrICAgICAgICBRU3RyaW5n IGZsYXRwYWtJZCA9IHFFbnZpcm9ubWVudFZhcmlhYmxlKCJGTEFUUEFLX0lEIik7CisrICAgICAg ICBpZiAoIWZsYXRwYWtJZC5pc0VtcHR5KCkgJiYgUUZpbGVJbmZvOjpleGlzdHMoUUxhdGluMVN0 cmluZygiLy5mbGF0cGFrLWluZm8iKSkpCisrICAgICAgICAgICAgdGVtcFBhdGggKz0gUUxhdGlu MVN0cmluZygiL2FwcC8iKSArIGZsYXRwYWtJZDsKKyAgICAgICAgIHJldHVybiB0ZW1wUGF0aDsK KysgICAgfQorIAorICAgICB0ZW1wUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjp3cml0YWJsZUxvY2F0 aW9uKFFTdGFuZGFyZFBhdGhzOjpHZW5lcmljQ2FjaGVMb2NhdGlvbik7CisgCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L3FnZW5lcmlj dW5peHRoZW1lcy5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJp Y3VuaXgvcWdlbmVyaWN1bml4dGhlbWVzLmNwcAoraW5kZXggY2IxYjM5ZGI2NC4uNmUwMWFmMDUy YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmlj dW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3Vw cG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVzLmNwcAorQEAgLTc1NSw2 ICs3NTUsOSBAQCBRVmFyaWFudCBRR25vbWVUaGVtZTo6dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1l OjpUaGVtZUhpbnQgaGludCkgY29uc3QKKyAgICAgICAgIHJldHVybiBRVmFyaWFudChRQ2hhcigw eDIwMjIpKTsKKyAgICAgY2FzZSBRUGxhdGZvcm1UaGVtZTo6VWlFZmZlY3RzOgorICAgICAgICAg cmV0dXJuIFFWYXJpYW50KGludChIb3ZlckVmZmVjdCkpOworKyAgICBjYXNlIFFQbGF0Zm9ybVRo ZW1lOjpCdXR0b25QcmVzc0tleXM6CisrICAgICAgICByZXR1cm4gUVZhcmlhbnQ6OmZyb21WYWx1 ZSgKKysgICAgICAgICAgICAgICAgUUxpc3Q8UXQ6OktleT4oeyBRdDo6S2V5X1NwYWNlLCBRdDo6 S2V5X1JldHVybiwgUXQ6OktleV9FbnRlciwgUXQ6OktleV9TZWxlY3QgfSkpOworICAgICBkZWZh dWx0OgorICAgICAgICAgYnJlYWs7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJzb3IuY3BwIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9hcGkvcWVnbGZzY3Vyc29yLmNwcAoraW5kZXggOThlMDUx OTVlZS4uMWU5MmY0M2RlYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5jcHAKK0BAIC0zNDMsOCArMzQzLDcgQEAg dm9pZCBRRWdsRlNDdXJzb3I6OnBhaW50T25TY3JlZW4oKQorICAgICAvLyBzY3JlZW5zIGFyZSBz aWJsaW5ncyBvZiBlYWNoIG90aGVyLiBXaGVuIG5vdCBlbmFibGVkLCB0aGUgc2libGluZyBsaXN0 CisgICAgIC8vIG9ubHkgY29udGFpbnMgbV9zY3JlZW4gaXRzZWxmLgorICAgICBmb3IgKFFQbGF0 Zm9ybVNjcmVlbiAqc2NyZWVuIDogbV9zY3JlZW4tPnZpcnR1YWxTaWJsaW5ncygpKSB7CistICAg ICAgICBpZiAoc2NyZWVuLT5nZW9tZXRyeSgpLmNvbnRhaW5zKGNyLnRvcExlZnQoKS50b1BvaW50 KCkgKyBtX2N1cnNvci5ob3RTcG90KQorLSAgICAgICAgICAgICYmIFFPcGVuR0xDb250ZXh0Ojpj dXJyZW50Q29udGV4dCgpLT5zY3JlZW4oKSA9PSBzY3JlZW4tPnNjcmVlbigpKQorKyAgICAgICAg aWYgKHNjcmVlbi0+Z2VvbWV0cnkoKS5jb250YWlucyhjci50b3BMZWZ0KCkudG9Qb2ludCgpICsg bV9jdXJzb3IuaG90U3BvdCkpCisgICAgICAgICB7CisgICAgICAgICAgICAgY3IudHJhbnNsYXRl KC1zY3JlZW4tPmdlb21ldHJ5KCkudG9wTGVmdCgpKTsKKyAgICAgICAgICAgICBjb25zdCBRU2l6 ZSBzY3JlZW5TaXplID0gc2NyZWVuLT5nZW9tZXRyeSgpLnNpemUoKTsKK0BAIC00NjgsMTEgKzQ2 NywxMiBAQCB2b2lkIFFFZ2xGU0N1cnNvcjo6ZHJhdyhjb25zdCBRUmVjdEYgJnIpCisgeworICAg ICBTdGF0ZVNhdmVyIHN0YXRlU2F2ZXI7CisgCistICAgIFFFZ2xGU0N1cnNvckRhdGEgJmdmeCA9 IHN0YXRpY19jYXN0PFFFZ2xGU0NvbnRleHQqPihRT3BlbkdMQ29udGV4dDo6Y3VycmVudENvbnRl eHQoKS0+aGFuZGxlKCkpLT5jdXJzb3JEYXRhOworLSAgICBpZiAoIWdmeC5wcm9ncmFtKSB7Cist ICAgICAgICAvLyBvbmUgdGltZSBpbml0aWFsaXphdGlvbgorKyAgICAvLyBvbmUgdGltZSBpbml0 aWFsaXphdGlvbgorKyAgICBpZiAoIVFPcGVuR0xGdW5jdGlvbnM6OmRfcHRyKQorICAgICAgICAg aW5pdGlhbGl6ZU9wZW5HTEZ1bmN0aW9ucygpOworIAorKyAgICBRRWdsRlNDdXJzb3JEYXRhICZn ZnggPSBzdGF0aWNfY2FzdDxRRWdsRlNDb250ZXh0Kj4oUU9wZW5HTENvbnRleHQ6OmN1cnJlbnRD b250ZXh0KCktPmhhbmRsZSgpKS0+Y3Vyc29yRGF0YTsKKysgICAgaWYgKCFnZngucHJvZ3JhbSkg eworICAgICAgICAgY3JlYXRlU2hhZGVyUHJvZ3JhbXMoKTsKKyAKKyAgICAgICAgIGlmICghZ2Z4 LmF0bGFzVGV4dHVyZSkgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21zX3N1cHBvcnQvcWVnbGZza21zZXZl bnRyZWFkZXIuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9kZXZpY2Vp bnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNldmVudHJlYWRlci5jcHAKK2lu ZGV4IDY0NWEwYWUyZTkuLjNlMGU0MDZmMWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWludGVncmF0aW9uL2VnbGZzX2ttc19zdXBwb3J0L3Fl Z2xmc2ttc2V2ZW50cmVhZGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt cy9lZ2xmcy9kZXZpY2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNldmVu dHJlYWRlci5jcHAKK0BAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBRRWdsRlNLbXNFdmVudFJlYWRl cjo6Y3JlYXRlKFFFZ2xGU0ttc0RldmljZSAqZGV2aWNlKQorIAorICAgICBtX2RldmljZSA9IGRl dmljZTsKKyAKKy0gICAgcUNEZWJ1ZyhxTGNFZ2xmc0ttc0RlYnVnLCAiSW5pdGFsaXppbmcgZXZl bnQgcmVhZGVyIGZvciBkZXZpY2UgJXAgZmQgJWQiLAorKyAgICBxQ0RlYnVnKHFMY0VnbGZzS21z RGVidWcsICJJbml0aWFsaXppbmcgZXZlbnQgcmVhZGVyIGZvciBkZXZpY2UgJXAgZmQgJWQiLAor ICAgICAgICAgICAgIG1fZGV2aWNlLCBtX2RldmljZS0+ZmQoKSk7CisgCisgICAgIG1fdGhyZWFk ID0gbmV3IFFFZ2xGU0ttc0V2ZW50UmVhZGVyVGhyZWFkKG1fZGV2aWNlLT5mZCgpKTsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVu aW50ZWdyYXRpb24uY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4v cW9mZnNjcmVlbmludGVncmF0aW9uLmNwcAoraW5kZXggMTQxZmI2OGEyMy4uZDQyOTRkNDI1YSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZz Y3JlZW5pbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv b2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAKK0BAIC0xMjIsMTEgKzEyMiwxMyBA QCBRT2Zmc2NyZWVuSW50ZWdyYXRpb246OlFPZmZzY3JlZW5JbnRlZ3JhdGlvbigpCisgI2VuZGlm CisgICAgIG1fc2VydmljZXMucmVzZXQobmV3IFFQbGF0Zm9ybVNlcnZpY2VzKTsKKyAKKy0gICAg UVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlU2NyZWVuQWRkZWQobmV3IFFPZmZzY3JlZW5T Y3JlZW4pOworKyAgICBtX3NjcmVlbiA9IG5ldyBRT2Zmc2NyZWVuU2NyZWVuOworKyAgICBRV2lu ZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVTY3JlZW5BZGRlZChtX3NjcmVlbik7CisgfQorIAor IFFPZmZzY3JlZW5JbnRlZ3JhdGlvbjo6flFPZmZzY3JlZW5JbnRlZ3JhdGlvbigpCisgeworKyAg ICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVTY3JlZW5SZW1vdmVkKG1fc2NyZWVuKTsK KyB9CisgCisgdm9pZCBRT2Zmc2NyZWVuSW50ZWdyYXRpb246OmluaXRpYWxpemUoKQorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5p bnRlZ3JhdGlvbi5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9m ZnNjcmVlbmludGVncmF0aW9uLmgKK2luZGV4IDBlYTkwZjZjMmYuLmZlMDBmZGUwN2MgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVu aW50ZWdyYXRpb24uaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3Jl ZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmgKK0BAIC04NCw2ICs4NCw3IEBAIHByb3RlY3RlZDoK KyAjZW5kaWYKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVBsYXRmb3JtSW5wdXRDb250ZXh0PiBtX2lu cHV0Q29udGV4dDsKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVBsYXRmb3JtU2VydmljZXM+IG1fc2Vy dmljZXM7CisrICAgIFFQbGF0Zm9ybVNjcmVlbiAqbV9zY3JlZW47CisgICAgIG11dGFibGUgUVNj b3BlZFBvaW50ZXI8UVBsYXRmb3JtTmF0aXZlSW50ZXJmYWNlPiBtX25hdGl2ZUludGVyZmFjZTsK KyB9OworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93 cy9xd2luZG93c2dsY29udGV4dC5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dp bmRvd3MvcXdpbmRvd3NnbGNvbnRleHQuY3BwCitpbmRleCA2ZmE1YThhMmIzLi4xZjQ5ZjBhZWZk IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5k b3dzZ2xjb250ZXh0LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5k b3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNwcAorQEAgLTQ4LDYgKzQ4LDcgQEAKKyAjaW5jbHVkZSA8 cXBhL3FwbGF0Zm9ybW5hdGl2ZWludGVyZmFjZS5oPgorICNpbmNsdWRlIDxRdFBsYXRmb3JtSGVh ZGVycy9xd2dsbmF0aXZlY29udGV4dC5oPgorIAorKyNpbmNsdWRlIDxwcml2YXRlL3FzeXN0ZW1s aWJyYXJ5X3AuaD4KKyAjaW5jbHVkZSA8YWxnb3JpdGhtPgorIAorICNpbmNsdWRlIDx3aW5nZGku aD4KK0BAIC0xNjIsMTkgKzE2MywyNSBAQCBRRnVuY3Rpb25Qb2ludGVyIFFXaW5kb3dzT3Blbmds MzJETEw6OnJlc29sdmUoY29uc3QgY2hhciAqbmFtZSkKKyAKKyBib29sIFFXaW5kb3dzT3Blbmds MzJETEw6OmluaXQoYm9vbCBzb2Z0d2FyZVJlbmRlcmluZykKKyB7CistICAgIGNvbnN0IFFCeXRl QXJyYXkgb3BlbmdsMzIgPSBRQnl0ZUFycmF5TGl0ZXJhbCgib3BlbmdsMzIuZGxsIik7CistICAg IGNvbnN0IFFCeXRlQXJyYXkgc3dvcGVuZ2wgPSBRQnl0ZUFycmF5TGl0ZXJhbCgib3BlbmdsMzJz dy5kbGwiKTsKKysgICAgY29uc3QgUUJ5dGVBcnJheSBvcGVuZ2wzMiA9IFFCeXRlQXJyYXlMaXRl cmFsKCJvcGVuZ2wzMiIpOworKyAgICBjb25zdCBRQnl0ZUFycmF5IHN3b3BlbmdsID0gUUJ5dGVB cnJheUxpdGVyYWwoIm9wZW5nbDMyc3ciKTsKKysgICAgYm9vbCB1c2VTeXN0ZW1MaWIgPSBmYWxz ZTsKKyAKKyAgICAgUUJ5dGVBcnJheSBvcGVuZ2xEbGwgPSBxZ2V0ZW52KCJRVF9PUEVOR0xfRExM Iik7CistICAgIGlmIChvcGVuZ2xEbGwuaXNFbXB0eSgpKQorKyAgICBpZiAob3BlbmdsRGxsLmlz RW1wdHkoKSkgeworICAgICAgICAgb3BlbmdsRGxsID0gc29mdHdhcmVSZW5kZXJpbmcgPyBzd29w ZW5nbCA6IG9wZW5nbDMyOworKyAgICAgICAgdXNlU3lzdGVtTGliID0gIXNvZnR3YXJlUmVuZGVy aW5nOworKyAgICB9CisgCisgICAgIG9wZW5nbERsbCA9IG9wZW5nbERsbC50b0xvd2VyKCk7Cisg ICAgIG1fbm9uT3BlbmdsMzIgPSBvcGVuZ2xEbGwgIT0gb3BlbmdsMzI7CisgCisgICAgIHFDRGVi dWcobGNRcGFHbCkgPDwgIlF0OiBVc2luZyBXR0wgYW5kIE9wZW5HTCBmcm9tIiA8PCBvcGVuZ2xE bGw7CisgCistICAgIG1fbGliID0gOjpMb2FkTGlicmFyeUEob3BlbmdsRGxsLmNvbnN0RGF0YSgp KTsKKysgICAgaWYgKHVzZVN5c3RlbUxpYikKKysgICAgICAgIG1fbGliID0gUVN5c3RlbUxpYnJh cnk6OmxvYWQoKHdjaGFyX3QqKShRU3RyaW5nOjpmcm9tTGF0aW4xKG9wZW5nbERsbCkudXRmMTYo KSkpOworKyAgICBlbHNlCisrICAgICAgICBtX2xpYiA9IExvYWRMaWJyYXJ5QShvcGVuZ2xEbGwu Y29uc3REYXRhKCkpOworICAgICBpZiAoIW1fbGliKSB7CisgICAgICAgICBxRXJybm9XYXJuaW5n KDo6R2V0TGFzdEVycm9yKCksICJGYWlsZWQgdG8gbG9hZCAlcyIsIG9wZW5nbERsbC5jb25zdERh dGEoKSk7CisgICAgICAgICByZXR1cm4gZmFsc2U7CitAQCAtMTg0LDcgKzE5MSw3IEBAIGJvb2wg UVdpbmRvd3NPcGVuZ2wzMkRMTDo6aW5pdChib29sIHNvZnR3YXJlUmVuZGVyaW5nKQorICAgICAg ICAgLy8gTG9hZCBvcGVuZ2wzMi5kbGwgYWx3YXlzLiBHREkgZnVuY3Rpb25zIGxpa2UgQ2hvb3Nl UGl4ZWxGb3JtYXQgZG8KKyAgICAgICAgIC8vIEdldE1vZHVsZUhhbmRsZSBmb3Igb3BlbmdsMzIu ZGxsIGFuZCBiZWhhdmUgZGlmZmVyZW50bHkgKGFuZCBjYWxsIGJhY2sgaW50bworICAgICAgICAg Ly8gb3BlbmdsMzIpIHdoZW4gdGhlIG1vZHVsZSBpcyBwcmVzZW50LiBUaGlzIGlzIGZpbmUgZm9y IGR1bW15IGNvbnRleHRzIGFuZCB3aW5kb3dzLgorLSAgICAgICAgOjpMb2FkTGlicmFyeUEoIm9w ZW5nbDMyLmRsbCIpOworKyAgICAgICAgUVN5c3RlbUxpYnJhcnk6OmxvYWQoTCJvcGVuZ2wzMiIp OworICAgICB9CisgCisgICAgIHdnbENyZWF0ZUNvbnRleHQgPSByZWludGVycHJldF9jYXN0PEhH TFJDIChXSU5BUEkgKikoSERDKT4ocmVzb2x2ZSgid2dsQ3JlYXRlQ29udGV4dCIpKTsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NvcGVu Z2x0ZXN0ZXIuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5k b3dzb3BlbmdsdGVzdGVyLmNwcAoraW5kZXggZDdkMTg2ZTgwNC4uOWViNDAxMWJmMiAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c29wZW5n bHRlc3Rlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9x d2luZG93c29wZW5nbHRlc3Rlci5jcHAKK0BAIC00OSw2ICs0OSw3IEBACisgI2luY2x1ZGUgPFF0 Q29yZS9xc3RhbmRhcmRwYXRocy5oPgorICNpbmNsdWRlIDxRdENvcmUvcWxpYnJhcnlpbmZvLmg+ CisgI2luY2x1ZGUgPFF0Q29yZS9xaGFzaC5oPgorKyNpbmNsdWRlIDxwcml2YXRlL3FzeXN0ZW1s aWJyYXJ5X3AuaD4KKyAKKyAjaWZuZGVmIFFUX05PX09QRU5HTAorICNpbmNsdWRlIDxwcml2YXRl L3FvcGVuZ2xfcC5oPgorQEAgLTM5Niw3ICszOTcsNyBAQCBib29sIFFXaW5kb3dzT3BlbkdMVGVz dGVyOjp0ZXN0RGVza3RvcEdMKCkKKyAKKyAgICAgLy8gVGVzdCAjMTogTG9hZCBvcGVuZ2wzMi5k bGwgYW5kIHRyeSB0byByZXNvbHZlIGFuIE9wZW5HTCAyIGZ1bmN0aW9uLgorICAgICAvLyBUaGlz IHdpbGwgdHlwaWNhbGx5IGZhaWwgb24gc3lzdGVtcyB0aGF0IGRvIG5vdCBoYXZlIGEgcmVhbCBP cGVuR0wgZHJpdmVyLgorLSAgICBsaWIgPSBMb2FkTGlicmFyeUEoIm9wZW5nbDMyLmRsbCIpOwor KyAgICBsaWIgPSBRU3lzdGVtTGlicmFyeTo6bG9hZChMIm9wZW5nbDMyIik7CisgICAgIGlmIChs aWIpIHsKKyAgICAgICAgIENyZWF0ZUNvbnRleHQgPSByZWludGVycHJldF9jYXN0PENyZWF0ZUNv bnRleHRUeXBlPigKKyAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PFFGdW5jdGlvblBvaW50 ZXI+KDo6R2V0UHJvY0FkZHJlc3MobGliLCAid2dsQ3JlYXRlQ29udGV4dCIpKSk7CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcvcXRl c3NlbGxhdG9yLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL25hdGl2ZXBh aW50aW5nL3F0ZXNzZWxsYXRvci5jcHAKK2luZGV4IDFhZmEwMGNmYzkuLjExOGFmNmNlNzMgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9uYXRpdmVwYWludGlu Zy9xdGVzc2VsbGF0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hj Yi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3BwCitAQCAtNDEsNiArNDEsNyBAQAorIAor ICNpbmNsdWRlIDxRUmVjdD4KKyAjaW5jbHVkZSA8UUxpc3Q+CisrI2luY2x1ZGUgPFFNYXA+Cisg I2luY2x1ZGUgPFFEZWJ1Zz4KKyAKKyAjaW5jbHVkZSA8cW1hdGguaD4KK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlvbi5jcHAgYi9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlvbi5jcHAKK2luZGV4IDll MmEzN2E2YTEuLmU2ZTE3NWExMTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm1zL3hjYi9xeGNiY29ubmVjdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0aW9uLmNwcAorQEAgLTQ4OCwxMiArNDg4LDEyIEBAIHZv aWQgUVhjYkNvbm5lY3Rpb246OnByaW50WGNiRXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSwgeGNi X2dlbmVyaWNfZXJyb3JfdCAqZXJyCisgICAgIHVpbnQgY2xhbXBlZF9lcnJvcl9jb2RlID0gcU1p bjx1aW50PihlcnJvci0+ZXJyb3JfY29kZSwgKHNpemVvZih4Y2JfZXJyb3JzKSAvIHNpemVvZih4 Y2JfZXJyb3JzWzBdKSkgLSAxKTsKKyAgICAgdWludCBjbGFtcGVkX21ham9yX2NvZGUgPSBxTWlu PHVpbnQ+KGVycm9yLT5tYWpvcl9jb2RlLCAoc2l6ZW9mKHhjYl9wcm90b2NvbF9yZXF1ZXN0X2Nv ZGVzKSAvIHNpemVvZih4Y2JfcHJvdG9jb2xfcmVxdWVzdF9jb2Rlc1swXSkpIC0gMSk7CisgCist ICAgIHFDV2FybmluZyhsY1FwYVhjYiwgIiVzOiAlZCAoJXMpLCBzZXF1ZW5jZTogJWQsIHJlc291 cmNlIGlkOiAlZCwgbWFqb3IgY29kZTogJWQgKCVzKSwgbWlub3IgY29kZTogJWQiLAorLSAgICAg ICAgICAgICBtZXNzYWdlLAorLSAgICAgICAgICAgICBpbnQoZXJyb3ItPmVycm9yX2NvZGUpLCB4 Y2JfZXJyb3JzW2NsYW1wZWRfZXJyb3JfY29kZV0sCistICAgICAgICAgICAgIGludChlcnJvci0+ c2VxdWVuY2UpLCBpbnQoZXJyb3ItPnJlc291cmNlX2lkKSwKKy0gICAgICAgICAgICAgaW50KGVy cm9yLT5tYWpvcl9jb2RlKSwgeGNiX3Byb3RvY29sX3JlcXVlc3RfY29kZXNbY2xhbXBlZF9tYWpv cl9jb2RlXSwKKy0gICAgICAgICAgICAgaW50KGVycm9yLT5taW5vcl9jb2RlKSk7CisrICAgIHFD RGVidWcobGNRcGFYY2IsICIlczogJWQgKCVzKSwgc2VxdWVuY2U6ICVkLCByZXNvdXJjZSBpZDog JWQsIG1ham9yIGNvZGU6ICVkICglcyksIG1pbm9yIGNvZGU6ICVkIiwKKysgICAgICAgICAgICBt ZXNzYWdlLAorKyAgICAgICAgICAgIGludChlcnJvci0+ZXJyb3JfY29kZSksIHhjYl9lcnJvcnNb Y2xhbXBlZF9lcnJvcl9jb2RlXSwKKysgICAgICAgICAgICBpbnQoZXJyb3ItPnNlcXVlbmNlKSwg aW50KGVycm9yLT5yZXNvdXJjZV9pZCksCisrICAgICAgICAgICAgaW50KGVycm9yLT5tYWpvcl9j b2RlKSwgeGNiX3Byb3RvY29sX3JlcXVlc3RfY29kZXNbY2xhbXBlZF9tYWpvcl9jb2RlXSwKKysg ICAgICAgICAgICBpbnQoZXJyb3ItPm1pbm9yX2NvZGUpKTsKKyB9CisgCisgc3RhdGljIFF0OjpN b3VzZUJ1dHRvbnMgdHJhbnNsYXRlTW91c2VCdXR0b25zKGludCBzKQorQEAgLTcwMiw2ICs3MDIs OCBAQCB2b2lkIFFYY2JDb25uZWN0aW9uOjpoYW5kbGVYY2JFdmVudCh4Y2JfZ2VuZXJpY19ldmVu dF90ICpldmVudCkKKyAgICAgICAgICAgICBRWGNiVmlydHVhbERlc2t0b3AgKnZpcnR1YWxEZXNr dG9wID0gdmlydHVhbERlc2t0b3BGb3JSb290V2luZG93KHByb3BlcnR5Tm90aWZ5LT53aW5kb3cp OworICAgICAgICAgICAgIGlmICh2aXJ0dWFsRGVza3RvcCkKKyAgICAgICAgICAgICAgICAgdmly dHVhbERlc2t0b3AtPnVwZGF0ZVdvcmtBcmVhKCk7CisrICAgICAgICB9IGVsc2UgaWYgKHByb3Bl cnR5Tm90aWZ5LT5hdG9tID09IGF0b20oUVhjYkF0b206Ol9ORVRfU1VQUE9SVEVEKSkgeworKyAg ICAgICAgICAgIG1fd21TdXBwb3J0LT51cGRhdGVOZXRXTUF0b21zKCk7CisgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgIEhBTkRMRV9QTEFURk9STV9XSU5ET1dfRVZFTlQoeGNiX3Byb3Bl cnR5X25vdGlmeV9ldmVudF90LCB3aW5kb3csIGhhbmRsZVByb3BlcnR5Tm90aWZ5RXZlbnQpOwor ICAgICAgICAgfQorQEAgLTc1MCw3ICs3NTIsNyBAQCB2b2lkIFFYY2JDb25uZWN0aW9uOjpoYW5k bGVYY2JFdmVudCh4Y2JfZ2VuZXJpY19ldmVudF90ICpldmVudCkKKyAgICAgICAgICAgICAgICAg Y2FzZSBYQ0JfWEtCX05FV19LRVlCT0FSRF9OT1RJRlk6IHsKKyAgICAgICAgICAgICAgICAgICAg IHhjYl94a2JfbmV3X2tleWJvYXJkX25vdGlmeV9ldmVudF90ICpldiA9ICZ4a2JfZXZlbnQtPm5l d19rZXlib2FyZF9ub3RpZnk7CisgICAgICAgICAgICAgICAgICAgICBpZiAoZXYtPmNoYW5nZWQg JiBYQ0JfWEtCX05LTl9ERVRBSUxfS0VZQ09ERVMpCistICAgICAgICAgICAgICAgICAgICAgICAg bV9rZXlib2FyZC0+dXBkYXRlS2V5bWFwKGV2KTsKKysgICAgICAgICAgICAgICAgICAgICAgICBt X2tleWJvYXJkLT51cGRhdGVLZXltYXAoKTsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmludGVncmF0aW9uLmNwcCBi L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JpbnRlZ3JhdGlvbi5jcHAKK2lu ZGV4IDc2ODY5Y2VkNjAuLjAyZDJlZWJiNTYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRpb24uY3BwCitAQCAtMjc0LDggKzI3NCw3 IEBAIFFQbGF0Zm9ybVdpbmRvdyAqUVhjYkludGVncmF0aW9uOjpjcmVhdGVGb3JlaWduV2luZG93 KFFXaW5kb3cgKndpbmRvdywgV0lkIG5hdGl2CisgI2lmbmRlZiBRVF9OT19PUEVOR0wKKyBRUGxh dGZvcm1PcGVuR0xDb250ZXh0ICpRWGNiSW50ZWdyYXRpb246OmNyZWF0ZVBsYXRmb3JtT3BlbkdM Q29udGV4dChRT3BlbkdMQ29udGV4dCAqY29udGV4dCkgY29uc3QKKyB7CistICAgIFFYY2JTY3Jl ZW4gKnNjcmVlbiA9IHN0YXRpY19jYXN0PFFYY2JTY3JlZW4gKj4oY29udGV4dC0+c2NyZWVuKCkt PmhhbmRsZSgpKTsKKy0gICAgUVhjYkdsSW50ZWdyYXRpb24gKmdsSW50ZWdyYXRpb24gPSBzY3Jl ZW4tPmNvbm5lY3Rpb24oKS0+Z2xJbnRlZ3JhdGlvbigpOworKyAgICBRWGNiR2xJbnRlZ3JhdGlv biAqZ2xJbnRlZ3JhdGlvbiA9IGRlZmF1bHRDb25uZWN0aW9uKCktPmdsSW50ZWdyYXRpb24oKTsK KyAgICAgaWYgKCFnbEludGVncmF0aW9uKSB7CisgICAgICAgICBxV2FybmluZygiUVhjYkludGVn cmF0aW9uOiBDYW5ub3QgY3JlYXRlIHBsYXRmb3JtIE9wZW5HTCBjb250ZXh0LCBuZWl0aGVyIEdM WCBub3IgRUdMIGFyZSBlbmFibGVkIik7CisgICAgICAgICByZXR1cm4gbnVsbHB0cjsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuY3Bw IGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmNwcAoraW5k ZXggZWZlY2Q3ZTJkMS4uZTgyODYzODFhMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAKK0BAIC0zNjUsMTcgKzM2NSw2IEBAIHZv aWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoeGNiX21hcHBpbmdfbm90aWZ5X2V2ZW50X3Qg KmV2ZW50KQorICAgICB1cGRhdGVLZXltYXAoKTsKKyB9CisgCistdm9pZCBRWGNiS2V5Ym9hcmQ6 OnVwZGF0ZUtleW1hcCh4Y2JfeGtiX25ld19rZXlib2FyZF9ub3RpZnlfZXZlbnRfdCAqZXZlbnQp CisteworLSAgICBpZiAoIWV2ZW50KQorLSAgICAgICAgcmV0dXJuOworLQorLSAgICBpZiAoZXZl bnQtPmRldmljZUlEICE9IGV2ZW50LT5vbGREZXZpY2VJRCkKKy0gICAgICAgIG1fY29uZmlnID0g ZmFsc2U7CistCistICAgIHVwZGF0ZUtleW1hcCgpOworLX0KKy0KKyB2b2lkIFFYY2JLZXlib2Fy ZDo6dXBkYXRlS2V5bWFwKCkKKyB7CisgICAgIEtleXN5bU1vZGlmaWVyTWFwIGtleXN5bU1vZHM7 CitAQCAtMzgzLDYgKzM3Miw4IEBAIHZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoKQor ICAgICAgICAga2V5c3ltTW9kcyA9IGtleXN5bXNUb01vZGlmaWVycygpOworICAgICB1cGRhdGVN b2RpZmllcnMoa2V5c3ltTW9kcyk7CisgCisrICAgIG1fY29uZmlnID0gdHJ1ZTsKKysKKyAgICAg aWYgKCFtX3hrYkNvbnRleHQpIHsKKyAgICAgICAgIG1feGtiQ29udGV4dC5yZXNldCh4a2JfY29u dGV4dF9uZXcoWEtCX0NPTlRFWFRfTk9fREVGQVVMVF9JTkNMVURFUykpOworICAgICAgICAgaWYg KCFtX3hrYkNvbnRleHQpIHsKK0BAIC0zOTgsMTMgKzM4OSw4IEBAIHZvaWQgUVhjYktleWJvYXJk Ojp1cGRhdGVLZXltYXAoKQorICAgICBpZiAoY29ubmVjdGlvbigpLT5oYXNYS0IoKSkgeworICAg ICAgICAgbV94a2JLZXltYXAucmVzZXQoeGtiX3gxMV9rZXltYXBfbmV3X2Zyb21fZGV2aWNlKG1f eGtiQ29udGV4dC5nZXQoKSwgeGNiX2Nvbm5lY3Rpb24oKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlX2RldmljZV9pZCwgWEtC X0tFWU1BUF9DT01QSUxFX05PX0ZMQUdTKSk7CistICAgICAgICBpZiAobV94a2JLZXltYXApIHsK Ky0gICAgICAgICAgICBpZiAobV9jb25maWcpCistICAgICAgICAgICAgICAgIG1feGtiU3RhdGUu cmVzZXQoeGtiX3N0YXRlX25ldyhtX3hrYktleW1hcC5nZXQoKSkpOworLSAgICAgICAgICAgIGVs c2UKKy0gICAgICAgICAgICAgICAgbV94a2JTdGF0ZS5yZXNldCh4a2JfeDExX3N0YXRlX25ld19m cm9tX2RldmljZShtX3hrYktleW1hcC5nZXQoKSwgeGNiX2Nvbm5lY3Rpb24oKSwgY29yZV9kZXZp Y2VfaWQpKTsKKy0KKy0gICAgICAgIH0KKysgICAgICAgIGlmIChtX3hrYktleW1hcCkKKysgICAg ICAgICAgICBtX3hrYlN0YXRlLnJlc2V0KHhrYl94MTFfc3RhdGVfbmV3X2Zyb21fZGV2aWNlKG1f eGtiS2V5bWFwLmdldCgpLCB4Y2JfY29ubmVjdGlvbigpLCBjb3JlX2RldmljZV9pZCkpOworICAg ICB9IGVsc2UgeworICAgICAgICAgbV94a2JLZXltYXAucmVzZXQoa2V5bWFwRnJvbUNvcmUoa2V5 c3ltTW9kcykpOworICAgICAgICAgaWYgKG1feGtiS2V5bWFwKQorQEAgLTQyNSw4ICs0MTEsNiBA QCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyAgICAgdXBkYXRlWEtCTW9kcygp OworIAorICAgICBRWGtiQ29tbW9uOjp2ZXJpZnlIYXNMYXRpbkxheW91dChtX3hrYktleW1hcC5n ZXQoKSk7CistCistICAgIG1fY29uZmlnID0gdHJ1ZTsKKyB9CisgCisgUUxpc3Q8aW50PiBRWGNi S2V5Ym9hcmQ6OnBvc3NpYmxlS2V5cyhjb25zdCBRS2V5RXZlbnQgKmV2ZW50KSBjb25zdAorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5o IGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmgKK2luZGV4 IGI2NTJjODVmZTMuLjBlZTA4YWVmZjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmgKK0BAIC02OSw3ICs2OSw2IEBAIHB1YmxpYzoKKyAK KyAgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIHRyYW5zbGF0ZU1vZGlmaWVycyhpbnQgcykgY29u c3Q7CisgICAgIHZvaWQgdXBkYXRlS2V5bWFwKHhjYl9tYXBwaW5nX25vdGlmeV9ldmVudF90ICpl dmVudCk7CistICAgIHZvaWQgdXBkYXRlS2V5bWFwKHhjYl94a2JfbmV3X2tleWJvYXJkX25vdGlm eV9ldmVudF90ICpldmVudCk7CisgICAgIHZvaWQgdXBkYXRlS2V5bWFwKCk7CisgICAgIFFMaXN0 PGludD4gcG9zc2libGVLZXlzKGNvbnN0IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0OworIAorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuY3Bw IGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAKK2luZGV4 IGZmZGE3YjZhNTcuLjg2M2U5NjFmNGMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAKK0BAIC01NjQsMTEgKzU2NCw2IEBAIHZvaWQgUVhj YldpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3QgJnJlY3QpCisgeworICAgICBRUGxhdGZv cm1XaW5kb3c6OnNldEdlb21ldHJ5KHJlY3QpOworIAorLSAgICBpZiAoc2hvdWxkRGVmZXJUYXNr KFRhc2s6OlNldEdlb21ldHJ5KSkgeworLSAgICAgICAgbV9kZWZlcnJlZEdlb21ldHJ5ID0gcmVj dDsKKy0gICAgICAgIHJldHVybjsKKy0gICAgfQorLQorICAgICBwcm9wYWdhdGVTaXplSGludHMo KTsKKyAKKyAgICAgUVhjYlNjcmVlbiAqY3VycmVudFNjcmVlbiA9IHhjYlNjcmVlbigpOworQEAg LTY5Myw5ICs2ODgsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldFZpc2libGUoYm9vbCB2aXNpYmxl KQorIAorIHZvaWQgUVhjYldpbmRvdzo6c2hvdygpCisgeworLSAgICBpZiAoc2hvdWxkRGVmZXJU YXNrKFRhc2s6Ok1hcCkpCistICAgICAgICByZXR1cm47CistCisgICAgIGlmICh3aW5kb3coKS0+ aXNUb3BMZXZlbCgpKSB7CisgCisgICAgICAgICAvLyB1cGRhdGUgV01fTk9STUFMX0hJTlRTCitA QCAtNzA2LDcgKzY5OCw3IEBAIHZvaWQgUVhjYldpbmRvdzo6c2hvdygpCisgICAgICAgICBpZiAo aXNUcmFuc2llbnQod2luZG93KCkpKSB7CisgICAgICAgICAgICAgY29uc3QgUVdpbmRvdyAqdHAg PSB3aW5kb3coKS0+dHJhbnNpZW50UGFyZW50KCk7CisgICAgICAgICAgICAgaWYgKHRwICYmIHRw LT5oYW5kbGUoKSkKKy0gICAgICAgICAgICAgICAgdHJhbnNpZW50WGNiUGFyZW50ID0gc3RhdGlj X2Nhc3Q8Y29uc3QgUVhjYldpbmRvdyAqPih0cC0+aGFuZGxlKCkpLT53aW5JZCgpOworKyAgICAg ICAgICAgICAgICB0cmFuc2llbnRYY2JQYXJlbnQgPSB0cC0+aGFuZGxlKCktPndpbklkKCk7Cisg ICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBjbGllbnQgbGVhZGVyIGlmIHRoZXJlIGlzIG5vIHRy YW5zaWVudCBwYXJlbnQsIGVsc2UgbW9kYWwgZGlhbG9ncyBjYW4KKyAgICAgICAgICAgICAvLyBi ZSBoaWRkZW4gYnkgdGhlaXIgcGFyZW50cy4KKyAgICAgICAgICAgICBpZiAoIXRyYW5zaWVudFhj YlBhcmVudCkKK0BAIC03NDYsMTAgKzczOCw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2hvdygpCisg Cisgdm9pZCBRWGNiV2luZG93OjpoaWRlKCkKKyB7CistICAgIGlmIChzaG91bGREZWZlclRhc2so VGFzazo6VW5tYXApKQorLSAgICAgICAgcmV0dXJuOworLQorLSAgICBtX3dtU3RhdGVWYWxpZCA9 IGZhbHNlOworICAgICB4Y2JfdW5tYXBfd2luZG93KHhjYl9jb25uZWN0aW9uKCksIG1fd2luZG93 KTsKKyAKKyAgICAgLy8gc2VuZCBzeW50aGV0aWMgVW5tYXBOb3RpZnkgZXZlbnQgYWNjb3JkaW5n IHRvIGljY2NtIDQuMS40CitAQCAtOTA5LDkgKzg5Nyw2IEBAIFFYY2JXaW5kb3c6Ok5ldFdtU3Rh dGVzIFFYY2JXaW5kb3c6Om5ldFdtU3RhdGVzKCkKKyAKKyB2b2lkIFFYY2JXaW5kb3c6OnNldFdp bmRvd0ZsYWdzKFF0OjpXaW5kb3dGbGFncyBmbGFncykKKyB7CistICAgIGlmIChzaG91bGREZWZl clRhc2soVGFzazo6U2V0V2luZG93RmxhZ3MpKQorLSAgICAgICAgcmV0dXJuOworLQorICAgICBR dDo6V2luZG93VHlwZSB0eXBlID0gc3RhdGljX2Nhc3Q8UXQ6OldpbmRvd1R5cGU+KGludChmbGFn cyAmIFF0OjpXaW5kb3dUeXBlX01hc2spKTsKKyAKKyAgICAgaWYgKHR5cGUgPT0gUXQ6OlRvb2xU aXApCitAQCAtOTQxLDggKzkyNiw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0V2luZG93RmxhZ3Mo UXQ6OldpbmRvd0ZsYWdzIGZsYWdzKQorIAorICAgICBzZXRUcmFuc3BhcmVudEZvck1vdXNlRXZl bnRzKGZsYWdzICYgUXQ6OldpbmRvd1RyYW5zcGFyZW50Rm9ySW5wdXQpOworICAgICB1cGRhdGVE b2VzTm90QWNjZXB0Rm9jdXMoZmxhZ3MgJiBRdDo6V2luZG93RG9lc05vdEFjY2VwdEZvY3VzKTsK Ky0KKy0gICAgbV9pc1dtTWFuYWdlZFdpbmRvdyA9ICEoZmxhZ3MgJiBRdDo6WDExQnlwYXNzV2lu ZG93TWFuYWdlckhpbnQpOworIH0KKyAKKyB2b2lkIFFYY2JXaW5kb3c6OnNldE1vdGlmV21IaW50 cyhRdDo6V2luZG93RmxhZ3MgZmxhZ3MpCitAQCAtMTE0Miw5ICsxMTI1LDYgQEAgdm9pZCBRWGNi V2luZG93OjpzZXRXaW5kb3dTdGF0ZShRdDo6V2luZG93U3RhdGVzIHN0YXRlKQorICAgICBpZiAo c3RhdGUgPT0gbV93aW5kb3dTdGF0ZSkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYgKHNo b3VsZERlZmVyVGFzayhUYXNrOjpTZXRXaW5kb3dTdGF0ZSkpCistICAgICAgICByZXR1cm47Cist CisgICAgIC8vIHVuc2V0IG9sZCBzdGF0ZQorICAgICBpZiAobV93aW5kb3dTdGF0ZSAmIFF0OjpX aW5kb3dNaW5pbWl6ZWQpCisgICAgICAgICB4Y2JfbWFwX3dpbmRvdyh4Y2JfY29ubmVjdGlvbigp LCBtX3dpbmRvdyk7CitAQCAtMTM1MCw2ICsxMzMwLDEyIEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0 V2luZG93SWNvbihjb25zdCBRSWNvbiAmaWNvbikKKyAgICAgfQorIAorICAgICBpZiAoIWljb25f ZGF0YS5pc0VtcHR5KCkpIHsKKysgICAgICAgIC8vIElnbm9yZSBpY29uIGV4Y2VlZGluZyBtYXhp bXVtIHhjYiByZXF1ZXN0IGxlbmd0aAorKyAgICAgICAgaWYgKGljb25fZGF0YS5zaXplKCkgPiB4 Y2JfZ2V0X21heGltdW1fcmVxdWVzdF9sZW5ndGgoeGNiX2Nvbm5lY3Rpb24oKSkpIHsKKysgICAg ICAgICAgICBxV2FybmluZygiSWdub3Jpbmcgd2luZG93IGljb246IFNpemUgJWxsdSBleGNlZWRz IG1heGltdW0geGNiIHJlcXVlc3QgbGVuZ3RoICV1LiIsCisrICAgICAgICAgICAgICAgICAgICAg aWNvbl9kYXRhLnNpemUoKSwgeGNiX2dldF9tYXhpbXVtX3JlcXVlc3RfbGVuZ3RoKHhjYl9jb25u ZWN0aW9uKCkpKTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisgICAgICAgICB4 Y2JfY2hhbmdlX3Byb3BlcnR5KHhjYl9jb25uZWN0aW9uKCksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFhDQl9QUk9QX01PREVfUkVQTEFDRSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbV93aW5kb3csCitAQCAtMTYzOSw3ICsxNjI1LDcgQEAgdm9pZCBRWGNiV2luZG93Ojpz ZXRXbVdpbmRvd1R5cGUoUVhjYldpbmRvd0Z1bmN0aW9uczo6V21XaW5kb3dUeXBlcyB0eXBlcywg UXQ6OlcKKyAgICAgICAgIGJyZWFrOworICAgICB9CisgCistICAgIGlmICgoZmxhZ3MgJiBRdDo6 RnJhbWVsZXNzV2luZG93SGludCkgJiYgISh0eXBlICYgUVhjYldpbmRvd0Z1bmN0aW9uczo6S2Rl T3ZlcnJpZGUpKSB7CisrICAgIGlmICgoZmxhZ3MgJiBRdDo6RnJhbWVsZXNzV2luZG93SGludCkg JiYgISh0eXBlcyAmIFFYY2JXaW5kb3dGdW5jdGlvbnM6OktkZU92ZXJyaWRlKSkgeworICAgICAg ICAgLy8gb3ZlcnJpZGUgbmV0d20gdHlwZSAtIHF1aWNrIGFuZCBlYXN5IGZvciBLREUgbm9ib3Jk ZXIKKyAgICAgICAgIGF0b21zLmFwcGVuZChhdG9tKFFYY2JBdG9tOjpfS0RFX05FVF9XTV9XSU5E T1dfVFlQRV9PVkVSUklERSkpOworICAgICB9CitAQCAtMTg5NCwxMCArMTg4MCw2IEBAIHZvaWQg UVhjYldpbmRvdzo6aGFuZGxlVW5tYXBOb3RpZnlFdmVudChjb25zdCB4Y2JfdW5tYXBfbm90aWZ5 X2V2ZW50X3QgKmV2ZW50KQorICAgICBpZiAoZXZlbnQtPndpbmRvdyA9PSBtX3dpbmRvdykgewor ICAgICAgICAgbV9tYXBwZWQgPSBmYWxzZTsKKyAgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZh Y2U6OmhhbmRsZUV4cG9zZUV2ZW50KHdpbmRvdygpLCBRUmVnaW9uKCkpOworLSAgICAgICAgaWYg KCFtX2lzV21NYW5hZ2VkV2luZG93IHx8IHBhcmVudCgpKSB7CistICAgICAgICAgICAgbV93bVN0 YXRlVmFsaWQgPSB0cnVlOworLSAgICAgICAgICAgIGhhbmRsZURlZmVycmVkVGFza3MoKTsKKy0g ICAgICAgIH0KKyAgICAgfQorIH0KKyAKK0BAIC0yMjEyLDk4ICsyMTk0LDMwIEBAIHZvaWQgUVhj YldpbmRvdzo6aGFuZGxlTGVhdmVOb3RpZnlFdmVudChjb25zdCB4Y2JfbGVhdmVfbm90aWZ5X2V2 ZW50X3QgKmV2ZW50KQorICAgICBoYW5kbGVMZWF2ZU5vdGlmeUV2ZW50KGV2ZW50LT5yb290X3gs IGV2ZW50LT5yb290X3ksIGV2ZW50LT5tb2RlLCBldmVudC0+ZGV0YWlsLCBldmVudC0+dGltZSk7 CisgfQorIAorLWJvb2wgUVhjYldpbmRvdzo6c2hvdWxkRGVmZXJUYXNrKFRhc2sgdGFzaykKKy17 CistICAgIGlmIChtX3dtU3RhdGVWYWxpZCkKKy0gICAgICAgIHJldHVybiBmYWxzZTsKKy0KKy0g ICAgbV9kZWZlcnJlZFRhc2tzLmFwcGVuZCh0YXNrKTsKKy0gICAgcmV0dXJuIHRydWU7CistfQor LQorLXZvaWQgUVhjYldpbmRvdzo6aGFuZGxlRGVmZXJyZWRUYXNrcygpCisteworLSAgICBRX0FT U0VSVChtX3dtU3RhdGVWYWxpZCA9PSB0cnVlKTsKKy0gICAgaWYgKG1fZGVmZXJyZWRUYXNrcy5p c0VtcHR5KCkpCistICAgICAgICByZXR1cm47CistCistICAgIGJvb2wgbWFwID0gZmFsc2U7Cist ICAgIGJvb2wgdW5tYXAgPSBmYWxzZTsKKy0KKy0gICAgUVZlY3RvcjxUYXNrPiB0YXNrczsKKy0g ICAgZm9yIChhdXRvIHRhc2tJdCA9IG1fZGVmZXJyZWRUYXNrcy5yYmVnaW4oKTsgdGFza0l0ICE9 IG1fZGVmZXJyZWRUYXNrcy5yZW5kKCk7ICsrdGFza0l0KSB7CistICAgICAgICBpZiAoIXRhc2tz LmNvbnRhaW5zKCp0YXNrSXQpKQorLSAgICAgICAgICAgIHRhc2tzLnByZXBlbmQoKnRhc2tJdCk7 CistICAgIH0KKy0KKy0gICAgZm9yIChUYXNrIHRhc2sgOiB0YXNrcykgeworLSAgICAgICAgc3dp dGNoICh0YXNrKSB7CistICAgICAgICBjYXNlIFRhc2s6Ok1hcDoKKy0gICAgICAgICAgICBtYXAg PSB0cnVlOworLSAgICAgICAgICAgIHVubWFwID0gZmFsc2U7CistICAgICAgICAgICAgYnJlYWs7 CistICAgICAgICBjYXNlIFRhc2s6OlVubWFwOgorLSAgICAgICAgICAgIHVubWFwID0gdHJ1ZTsK Ky0gICAgICAgICAgICBtYXAgPSBmYWxzZTsKKy0gICAgICAgICAgICBicmVhazsKKy0gICAgICAg IGNhc2UgVGFzazo6U2V0R2VvbWV0cnk6CistICAgICAgICAgICAgc2V0R2VvbWV0cnkobV9kZWZl cnJlZEdlb21ldHJ5KTsKKy0gICAgICAgICAgICBicmVhazsKKy0gICAgICAgIGNhc2UgVGFzazo6 U2V0V2luZG93RmxhZ3M6CistICAgICAgICAgICAgc2V0V2luZG93RmxhZ3Mod2luZG93KCktPmZs YWdzKCkpOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBUYXNrOjpTZXRXaW5k b3dTdGF0ZToKKy0gICAgICAgICAgICBzZXRXaW5kb3dTdGF0ZSh3aW5kb3coKS0+d2luZG93U3Rh dGUoKSk7CistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICB9CistICAgIH0KKy0gICAgbV9k ZWZlcnJlZFRhc2tzLmNsZWFyKCk7CistCistICAgIGlmIChtYXApIHsKKy0gICAgICAgIFFfQVNT RVJUKHVubWFwID09IGZhbHNlKTsKKy0gICAgICAgIHNob3coKTsKKy0gICAgfQorLSAgICBpZiAo dW5tYXApIHsKKy0gICAgICAgIFFfQVNTRVJUKG1hcCA9PSBmYWxzZSk7CistICAgICAgICBoaWRl KCk7CistICAgIH0KKy19CistCisgdm9pZCBRWGNiV2luZG93OjpoYW5kbGVQcm9wZXJ0eU5vdGlm eUV2ZW50KGNvbnN0IHhjYl9wcm9wZXJ0eV9ub3RpZnlfZXZlbnRfdCAqZXZlbnQpCisgeworICAg ICBjb25uZWN0aW9uKCktPnNldFRpbWUoZXZlbnQtPnRpbWUpOworIAorLSAgICBjb25zdCBib29s IHdtU3RhdGVDaGFuZ2VkID0gZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6V01fU1RBVEUp OworLSAgICBjb25zdCBib29sIG5ldFdtU3RhdGVDaGFuZ2VkID0gZXZlbnQtPmF0b20gPT0gYXRv bShRWGNiQXRvbTo6X05FVF9XTV9TVEFURSk7CistICAgIGlmIChuZXRXbVN0YXRlQ2hhbmdlZCB8 fCB3bVN0YXRlQ2hhbmdlZCkgeworLSAgICAgICAgaWYgKHdtU3RhdGVDaGFuZ2VkICYmICFtX3dt U3RhdGVWYWxpZCAmJiBtX2lzV21NYW5hZ2VkV2luZG93KSB7CistICAgICAgICAgICAgLy8gSUND Q00gNC4xLjQKKy0gICAgICAgICAgICAvLyBDbGllbnRzIHRoYXQgd2FudCB0byByZS11c2UgYSBj bGllbnQgd2luZG93IChlLmcuIGJ5IG1hcHBpbmcgaXQgYWdhaW4pCistICAgICAgICAgICAgLy8g YWZ0ZXIgd2l0aGRyYXdpbmcgaXQgbXVzdCB3YWl0IGZvciB0aGUgd2l0aGRyYXdhbCB0byBiZSBj b21wbGV0ZSBiZWZvcmUKKy0gICAgICAgICAgICAvLyBwcm9jZWVkaW5nLiBUaGUgcHJlZmVycmVk IG1ldGhvZCBmb3IgZG9pbmcgdGhpcyBpcyBmb3IgY2xpZW50cyB0byB3YWl0IGZvcgorLSAgICAg ICAgICAgIC8vIGEgd2luZG93IG1hbmFnZXIgdG8gdXBkYXRlIG9yIHJlbW92ZSB0aGUgV01fU1RB VEUgcHJvcGVydHkuCistICAgICAgICAgICAgbV93bVN0YXRlVmFsaWQgPSB0cnVlOworLSAgICAg ICAgICAgIGhhbmRsZURlZmVycmVkVGFza3MoKTsKKy0gICAgICAgIH0KKy0gICAgICAgIGlmIChl dmVudC0+c3RhdGUgPT0gWENCX1BST1BFUlRZX0RFTEVURSkKKysgICAgY29uc3QgYm9vbCBwcm9w ZXJ0eURlbGV0ZWQgPSBldmVudC0+c3RhdGUgPT0gWENCX1BST1BFUlRZX0RFTEVURTsKKysKKysg ICAgaWYgKGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206Ol9ORVRfV01fU1RBVEUpIHx8IGV2 ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206OldNX1NUQVRFKSkgeworKyAgICAgICAgaWYgKHBy b3BlcnR5RGVsZXRlZCkKKyAgICAgICAgICAgICByZXR1cm47CisgCistICAgICAgICBpZiAod21T dGF0ZUNoYW5nZWQpIHsKKysgICAgICAgIFF0OjpXaW5kb3dTdGF0ZXMgbmV3U3RhdGUgPSBRdDo6 V2luZG93Tm9TdGF0ZTsKKysKKysgICAgICAgIGlmIChldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JB dG9tOjpXTV9TVEFURSkpIHsgLy8gV01fU1RBVEU6IFF1aWNrIGNoZWNrIGZvciAnTWluaW1pemUn LgorICAgICAgICAgICAgIGF1dG8gcmVwbHkgPSBRX1hDQl9SRVBMWSh4Y2JfZ2V0X3Byb3BlcnR5 LCB4Y2JfY29ubmVjdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAwLCBtX3dpbmRvdywgYXRvbShRWGNiQXRvbTo6V01fU1RBVEUpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBYQ0JfQVRPTV9BTlksIDAsIDEwMjQpOworICAgICAgICAg ICAgIGlmIChyZXBseSAmJiByZXBseS0+Zm9ybWF0ID09IDMyICYmIHJlcGx5LT50eXBlID09IGF0 b20oUVhjYkF0b206OldNX1NUQVRFKSkgeworLSAgICAgICAgICAgICAgICBhdXRvIGRhdGEgPSBz dGF0aWNfY2FzdDxjb25zdCBxdWludDMyICo+KHhjYl9nZXRfcHJvcGVydHlfdmFsdWUocmVwbHku Z2V0KCkpKTsKKy0gICAgICAgICAgICAgICAgaWYgKHJlcGx5LT5sZW5ndGggIT0gMCkgeworLSAg ICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBjaGFuZ2VkVG9XaXRoZHJhd24gPSBkYXRhWzBd ID09IFhDQl9JQ0NDTV9XTV9TVEFURV9XSVRIRFJBV047CistICAgICAgICAgICAgICAgICAgICBj b25zdCBib29sIGNoYW5nZWRUb0ljb25pYyA9IGRhdGFbMF0gPT0gWENCX0lDQ0NNX1dNX1NUQVRF X0lDT05JQzsKKy0gICAgICAgICAgICAgICAgICAgIG1fbWluaW1pemVkID0gY2hhbmdlZFRvSWNv bmljIHx8IChjaGFuZ2VkVG9XaXRoZHJhd24gJiYgbV9taW5pbWl6ZWQpOworLSAgICAgICAgICAg ICAgICB9CisrICAgICAgICAgICAgICAgIGNvbnN0IHF1aW50MzIgKmRhdGEgPSAoY29uc3QgcXVp bnQzMiAqKXhjYl9nZXRfcHJvcGVydHlfdmFsdWUocmVwbHkuZ2V0KCkpOworKyAgICAgICAgICAg ICAgICBpZiAocmVwbHktPmxlbmd0aCAhPSAwKQorKyAgICAgICAgICAgICAgICAgICAgbV9taW5p bWl6ZWQgPSAoZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RBVEVfSUNPTklDCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RB VEVfV0lUSERSQVdOICYmIG1fbWluaW1pemVkKSk7CisgICAgICAgICAgICAgfQorICAgICAgICAg fQorIAorLSAgICAgICAgLy8gX05FVF9XTV9TVEFURSBoYW5kbGluZworLSAgICAgICAgUXQ6Oldp bmRvd1N0YXRlcyBuZXdTdGF0ZSA9IFF0OjpXaW5kb3dOb1N0YXRlOworICAgICAgICAgY29uc3Qg TmV0V21TdGF0ZXMgc3RhdGVzID0gbmV0V21TdGF0ZXMoKTsKKyAgICAgICAgIC8vIF9ORVRfV01f U1RBVEVfSElEREVOIHNob3VsZCBiZSBzZXQgYnkgdGhlIFdpbmRvdyBNYW5hZ2VyIHRvIGluZGlj YXRlIHRoYXQgYSB3aW5kb3cgd291bGQKKyAgICAgICAgIC8vIG5vdCBiZSB2aXNpYmxlIG9uIHRo ZSBzY3JlZW4gaWYgaXRzIGRlc2t0b3Avdmlld3BvcnQgd2VyZSBhY3RpdmUgYW5kIGl0cyBjb29y ZGluYXRlcyB3ZXJlCitAQCAtMjMyNSw2ICsyMjM5LDcgQEAgdm9pZCBRWGNiV2luZG93OjpoYW5k bGVQcm9wZXJ0eU5vdGlmeUV2ZW50KGNvbnN0IHhjYl9wcm9wZXJ0eV9ub3RpZnlfZXZlbnRfdCAq ZXYKKyAgICAgICAgICAgICBpZiAoKG1fd2luZG93U3RhdGUgJiBRdDo6V2luZG93TWluaW1pemVk KSAmJiBjb25uZWN0aW9uKCktPm1vdXNlR3JhYmJlcigpID09IHRoaXMpCisgICAgICAgICAgICAg ICAgIGNvbm5lY3Rpb24oKS0+c2V0TW91c2VHcmFiYmVyKG51bGxwdHIpOworICAgICAgICAgfQor KyAgICAgICAgcmV0dXJuOworICAgICB9IGVsc2UgaWYgKGV2ZW50LT5hdG9tID09IGF0b20oUVhj YkF0b206Ol9ORVRfRlJBTUVfRVhURU5UUykpIHsKKyAgICAgICAgIG1fZGlydHlGcmFtZU1hcmdp bnMgPSB0cnVlOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy94Y2IvcXhjYndpbmRvdy5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2Iv cXhjYndpbmRvdy5oCitpbmRleCA1NWFmOTI3OWIxLi42ZjVjMWY1ZWQ5IDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5oCisrKysgYi9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmgKK0BAIC03NCwxNCArNzQs NiBAQCBwdWJsaWM6CisgCisgICAgIFFfREVDTEFSRV9GTEFHUyhOZXRXbVN0YXRlcywgTmV0V21T dGF0ZSkKKyAKKy0gICAgZW51bSBUYXNrIHsKKy0gICAgICAgIE1hcCwKKy0gICAgICAgIFVubWFw LAorLSAgICAgICAgU2V0R2VvbWV0cnksCistICAgICAgICBTZXRXaW5kb3dGbGFncywKKy0gICAg ICAgIFNldFdpbmRvd1N0YXRlCistICAgIH07CistCisgICAgIFFYY2JXaW5kb3coUVdpbmRvdyAq d2luZG93KTsKKyAgICAgflFYY2JXaW5kb3coKTsKKyAKK0BAIC0xNTEsOSArMTQzLDYgQEAgcHVi bGljOgorIAorICAgICBRWGNiV2luZG93ICp0b1dpbmRvdygpIG92ZXJyaWRlOworIAorLSAgICBi b29sIHNob3VsZERlZmVyVGFzayhUYXNrIHRhc2spOworLSAgICB2b2lkIGhhbmRsZURlZmVycmVk VGFza3MoKTsKKy0KKyAgICAgdm9pZCBoYW5kbGVNb3VzZUV2ZW50KHhjYl90aW1lc3RhbXBfdCB0 aW1lLCBjb25zdCBRUG9pbnQgJmxvY2FsLCBjb25zdCBRUG9pbnQgJmdsb2JhbCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RpZmllcnMsIFFFdmVu dDo6VHlwZSB0eXBlLCBRdDo6TW91c2VFdmVudFNvdXJjZSBzb3VyY2UpOworIAorQEAgLTI5Miwx MSArMjgxLDYgQEAgcHJvdGVjdGVkOgorICAgICBpbnQgbV9zd2FwSW50ZXJ2YWwgPSAtMTsKKyAK KyAgICAgcXJlYWwgbV9zaXplSGludHNTY2FsZUZhY3RvciA9IDEuMDsKKy0KKy0gICAgYm9vbCBt X3dtU3RhdGVWYWxpZCA9IHRydWU7CistICAgIFFWZWN0b3I8VGFzaz4gbV9kZWZlcnJlZFRhc2tz OworLSAgICBib29sIG1faXNXbU1hbmFnZWRXaW5kb3cgPSB0cnVlOworLSAgICBRUmVjdCBtX2Rl ZmVycmVkR2VvbWV0cnk7CisgfTsKKyAKKyBjbGFzcyBRWGNiRm9yZWlnbldpbmRvdyA6IHB1Ymxp YyBRWGNiV2luZG93CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhl bWVzL2d0azMvcWd0azNtZW51LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1l cy9ndGszL3FndGszbWVudS5jcHAKK2luZGV4IGQ5ZDExN2ZhZWIuLjY0MGI0OWRhYTAgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMvZ3RrMy9xZ3RrM21lbnUu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMvZ3RrMy9xZ3RrM21l bnUuY3BwCitAQCAtODUsNiArODUsNyBAQCBRR3RrM01lbnVJdGVtOjpRR3RrM01lbnVJdGVtKCkK KyAgICAgICBtX2NoZWNrYWJsZShmYWxzZSksCisgICAgICAgbV9jaGVja2VkKGZhbHNlKSwKKyAg ICAgICBtX2VuYWJsZWQodHJ1ZSksCisrICAgICAgbV9leGNsdXNpdmUoZmFsc2UpLAorICAgICAg IG1fdW5kZXJsaW5lKGZhbHNlKSwKKyAgICAgICBtX2ludmFsaWQodHJ1ZSksCisgICAgICAgbV9t ZW51KG51bGxwdHIpLAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRo ZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZy5jcHAgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVz a3RvcHBvcnRhbGZpbGVkaWFsb2cuY3BwCitpbmRleCAwMDQ4YmJjMWU2Li4zOTZlN2Y2ZDFjIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bw b3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcAorKysrIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxm aWxlZGlhbG9nLmNwcAorQEAgLTEwMiwxNSArMTAyLDEyIEBAIGNvbnN0IFFEQnVzQXJndW1lbnQg Jm9wZXJhdG9yID4+KGNvbnN0IFFEQnVzQXJndW1lbnQgJmFyZywgUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlCisgY2xhc3MgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZQorIHsKKyBwdWJs aWM6CistICAgIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUoUVBsYXRmb3JtRmls ZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZykKKysgICAgUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nUHJpdmF0ZShRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlh bG9nLCB1aW50IGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikKKyAgICAgICAgIDogbmF0aXZlRmls ZURpYWxvZyhuYXRpdmVGaWxlRGlhbG9nKQorKyAgICAgICAgLCBmaWxlQ2hvb3NlclBvcnRhbFZl cnNpb24oZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKQorICAgICB7IH0KKyAKKy0gICAgV0lkIHdp bklkID0gMDsKKy0gICAgYm9vbCBkaXJlY3RvcnlNb2RlID0gZmFsc2U7CistICAgIGJvb2wgbW9k YWwgPSBmYWxzZTsKKy0gICAgYm9vbCBtdWx0aXBsZUZpbGVzID0gZmFsc2U7CistICAgIGJvb2wg c2F2ZUZpbGUgPSBmYWxzZTsKKysgICAgUUV2ZW50TG9vcCBsb29wOworICAgICBRU3RyaW5nIGFj Y2VwdExhYmVsOworICAgICBRU3RyaW5nIGRpcmVjdG9yeTsKKyAgICAgUVN0cmluZyB0aXRsZTsK K0BAIC0xMjEsMTkgKzExOCwyNyBAQCBwdWJsaWM6CisgICAgIFFTdHJpbmcgc2VsZWN0ZWRNaW1l VHlwZUZpbHRlcjsKKyAgICAgUVN0cmluZyBzZWxlY3RlZE5hbWVGaWx0ZXI7CisgICAgIFFTdHJp bmdMaXN0IHNlbGVjdGVkRmlsZXM7CistICAgIFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5h dGl2ZUZpbGVEaWFsb2cgPSBudWxscHRyOworKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UVBsYXRmb3Jt RmlsZURpYWxvZ0hlbHBlcj4gbmF0aXZlRmlsZURpYWxvZzsKKysgICAgdWludCBmaWxlQ2hvb3Nl clBvcnRhbFZlcnNpb24gPSAwOworKyAgICBib29sIGZhaWxlZFRvT3BlbiA9IGZhbHNlOworKyAg ICBib29sIGRpcmVjdG9yeU1vZGUgPSBmYWxzZTsKKysgICAgYm9vbCBtdWx0aXBsZUZpbGVzID0g ZmFsc2U7CisrICAgIGJvb2wgc2F2ZUZpbGUgPSBmYWxzZTsKKyB9OworIAorLVFYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZzo6UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKFFQbGF0Zm9ybUZp bGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cpCisrUVhkZ0Rlc2t0b3BQb3J0YWxGaWxl RGlhbG9nOjpRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coUVBsYXRmb3JtRmlsZURpYWxvZ0hl bHBlciAqbmF0aXZlRmlsZURpYWxvZywgdWludCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pCisg ICAgIDogUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcigpCistICAgICwgZF9wdHIobmV3IFFYZGdE ZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUobmF0aXZlRmlsZURpYWxvZykpCisrICAgICwg ZF9wdHIobmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUobmF0aXZlRmlsZURp YWxvZywgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKSkKKyB7CisgICAgIFFfRChRWGRnRGVza3Rv cFBvcnRhbEZpbGVEaWFsb2cpOworIAorICAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZykgewor LSAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxlRGlhbG9nLCBTSUdOQUwoYWNjZXB0KCkpLCB0 aGlzLCBTSUdOQUwoYWNjZXB0KCkpKTsKKy0gICAgICAgIGNvbm5lY3QoZC0+bmF0aXZlRmlsZURp YWxvZywgU0lHTkFMKHJlamVjdCgpKSwgdGhpcywgU0lHTkFMKHJlamVjdCgpKSk7CisrICAgICAg ICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2cuZ2V0KCksIFNJR05BTChhY2NlcHQoKSksIHRo aXMsIFNJR05BTChhY2NlcHQoKSkpOworKyAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxlRGlh bG9nLmdldCgpLCBTSUdOQUwocmVqZWN0KCkpLCB0aGlzLCBTSUdOQUwocmVqZWN0KCkpKTsKKyAg ICAgfQorKworKyAgICBkLT5sb29wLmNvbm5lY3QodGhpcywgU0lHTkFMKGFjY2VwdCgpKSwgU0xP VChxdWl0KCkpKTsKKysgICAgZC0+bG9vcC5jb25uZWN0KHRoaXMsIFNJR05BTChyZWplY3QoKSks IFNMT1QocXVpdCgpKSk7CisgfQorIAorIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6flFY ZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZygpCitAQCAtMTc3LDcgKzE4Miw3IEBAIHZvaWQgUVhk Z0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjppbml0aWFsaXplRGlhbG9nKCkKKyAgICAgc2V0RGly ZWN0b3J5KG9wdGlvbnMoKS0+aW5pdGlhbERpcmVjdG9yeSgpKTsKKyB9CisgCistdm9pZCBRWGRn RGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwoKQorK3ZvaWQgUVhkZ0Rlc2t0b3BQ b3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKFF0OjpXaW5kb3dGbGFncyB3aW5kb3dGbGFncywg UXQ6OldpbmRvd01vZGFsaXR5IHdpbmRvd01vZGFsaXR5LCBRV2luZG93ICpwYXJlbnQpCisgewor ICAgICBRX0QoUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKK0BAIC0xODUsMTMgKzE5 MCwxMyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6b3BlblBvcnRhbCgpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFMYXRpbjFTdHJpbmcoIi9vcmcvZnJlZWRlc2t0b3AvcG9ydGFsL2Rlc2t0b3AiKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUxh dGluMVN0cmluZygib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5GaWxlQ2hvb3NlciIpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5z YXZlRmlsZSA/IFFMYXRpbjFTdHJpbmcoIlNhdmVGaWxlIikgOiBRTGF0aW4xU3RyaW5nKCJPcGVu RmlsZSIpKTsKKy0gICAgUVN0cmluZyBwYXJlbnRXaW5kb3dJZCA9IFFMYXRpbjFTdHJpbmcoIngx MToiKSArIFFTdHJpbmc6Om51bWJlcihkLT53aW5JZCwgMTYpOworKyAgICBRU3RyaW5nIHBhcmVu dFdpbmRvd0lkID0gUUxhdGluMVN0cmluZygieDExOiIpICsgUVN0cmluZzo6bnVtYmVyKHBhcmVu dCA/IHBhcmVudC0+d2luSWQoKSA6IDAsIDE2KTsKKyAKKyAgICAgUVZhcmlhbnRNYXAgb3B0aW9u czsKKyAgICAgaWYgKCFkLT5hY2NlcHRMYWJlbC5pc0VtcHR5KCkpCisgICAgICAgICBvcHRpb25z Lmluc2VydChRTGF0aW4xU3RyaW5nKCJhY2NlcHRfbGFiZWwiKSwgZC0+YWNjZXB0TGFiZWwpOwor IAorLSAgICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJtb2RhbCIpLCBkLT5tb2RhbCk7 CisrICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJpbmcoIm1vZGFsIiksIHdpbmRvd01vZGFs aXR5ICE9IFF0OjpOb25Nb2RhbCk7CisgICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJpbmco Im11bHRpcGxlIiksIGQtPm11bHRpcGxlRmlsZXMpOworICAgICBvcHRpb25zLmluc2VydChRTGF0 aW4xU3RyaW5nKCJkaXJlY3RvcnkiKSwgZC0+ZGlyZWN0b3J5TW9kZSk7CisgCitAQCAtMjkwLDEw ICsyOTUsMTggQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwo KQorIAorICAgICBRREJ1c1BlbmRpbmdDYWxsIHBlbmRpbmdDYWxsID0gUURCdXNDb25uZWN0aW9u OjpzZXNzaW9uQnVzKCkuYXN5bmNDYWxsKG1lc3NhZ2UpOworICAgICBRREJ1c1BlbmRpbmdDYWxs V2F0Y2hlciAqd2F0Y2hlciA9IG5ldyBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcihwZW5kaW5nQ2Fs bCk7CistICAgIGNvbm5lY3Qod2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyOjpmaW5p c2hlZCwgdGhpcywgW3RoaXNdIChRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlcikgewor KyAgICBjb25uZWN0KHdhdGNoZXIsICZRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcjo6ZmluaXNoZWQs IHRoaXMsIFs9XSAoUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIpIHsKKyAgICAgICAg IFFEQnVzUGVuZGluZ1JlcGx5PFFEQnVzT2JqZWN0UGF0aD4gcmVwbHkgPSAqd2F0Y2hlcjsKKy0g ICAgICAgIGlmIChyZXBseS5pc0Vycm9yKCkpIHsKKy0gICAgICAgICAgICBRX0VNSVQgcmVqZWN0 KCk7CisrICAgICAgICAvLyBBbnkgZXJyb3IgbWVhbnMgdGhlIGRpYWxvZyBpcyBub3Qgc2hvd24g YW5kIHdlIG5lZWQgdG8gZmFsbGJhY2sKKysgICAgICAgIGQtPmZhaWxlZFRvT3BlbiA9IHJlcGx5 LmlzRXJyb3IoKTsKKysgICAgICAgIGlmIChkLT5mYWlsZWRUb09wZW4pIHsKKysgICAgICAgICAg ICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZykgeworKyAgICAgICAgICAgICAgICBkLT5uYXRpdmVG aWxlRGlhbG9nLT5zaG93KHdpbmRvd0ZsYWdzLCB3aW5kb3dNb2RhbGl0eSwgcGFyZW50KTsKKysg ICAgICAgICAgICAgICAgaWYgKGQtPmxvb3AuaXNSdW5uaW5nKCkpCisrICAgICAgICAgICAgICAg ICAgICBkLT5uYXRpdmVGaWxlRGlhbG9nLT5leGVjKCk7CisrICAgICAgICAgICAgfSBlbHNlIHsK KysgICAgICAgICAgICAgICAgUV9FTUlUIHJlamVjdCgpOworKyAgICAgICAgICAgIH0KKyAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCku Y29ubmVjdChudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVwbHkudmFsdWUoKS5wYXRoKCksCitAQCAtMzAyLDYgKzMxNSw3IEBAIHZv aWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTE9UKGdvdFJlc3BvbnNl KHVpbnQsUVZhcmlhbnRNYXApKSk7CisgICAgICAgICB9CisrICAgICAgICB3YXRjaGVyLT5kZWxl dGVMYXRlcigpOworICAgICB9KTsKKyB9CisgCitAQCAtMzI2LDcgKzM0MCw3IEBAIFFVcmwgUVhk Z0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpkaXJlY3RvcnkoKSBjb25zdAorIHsKKyAgICAgUV9E KGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisgCistICAgIGlmIChkLT5uYXRp dmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRp b25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0 aW9uczo6RGlyZWN0b3J5T25seSkpCisrICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIHVz ZU5hdGl2ZUZpbGVEaWFsb2coKSkKKyAgICAgICAgIHJldHVybiBkLT5uYXRpdmVGaWxlRGlhbG9n LT5kaXJlY3RvcnkoKTsKKyAKKyAgICAgcmV0dXJuIGQtPmRpcmVjdG9yeTsKK0BAIC0zNDgsNyAr MzYyLDcgQEAgUUxpc3Q8UVVybD4gUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpzZWxlY3Rl ZEZpbGVzKCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBRWGRnRGVza3RvcFBvcnRhbEZpbGVE aWFsb2cpOworIAorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0aW9ucygpLT5m aWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlvbnMoKS0+ ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpKQorKyAgICBp ZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9nKCkpCisgICAgICAg ICByZXR1cm4gZC0+bmF0aXZlRmlsZURpYWxvZy0+c2VsZWN0ZWRGaWxlcygpOworIAorICAgICBR TGlzdDxRVXJsPiBmaWxlczsKK0BAIC00MDMsMTYgKzQxNywxMyBAQCB2b2lkIFFYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZzo6ZXhlYygpCisgeworICAgICBRX0QoUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nKTsKKyAKKy0gICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgKG9wdGlvbnMo KS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeSB8fCBvcHRpb25z KCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnlPbmx5KSkgewor KyAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9nKCkpIHsK KyAgICAgICAgIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPmV4ZWMoKTsKKyAgICAgICAgIHJldHVybjsK KyAgICAgfQorIAorICAgICAvLyBIQUNLIHdlIGhhdmUgdG8gYXZvaWQgcmV0dXJuaW5nIHVudGls IHdlIGVtaXQgdGhhdCB0aGUgZGlhbG9nIHdhcyBhY2NlcHRlZCBvciByZWplY3RlZAorLSAgICBR RXZlbnRMb29wIGxvb3A7CistICAgIGxvb3AuY29ubmVjdCh0aGlzLCBTSUdOQUwoYWNjZXB0KCkp LCBTTE9UKHF1aXQoKSkpOworLSAgICBsb29wLmNvbm5lY3QodGhpcywgU0lHTkFMKHJlamVjdCgp KSwgU0xPVChxdWl0KCkpKTsKKy0gICAgbG9vcC5leGVjKCk7CisrICAgIGQtPmxvb3AuZXhlYygp OworIH0KKyAKKyB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6aGlkZSgpCitAQCAt NDI5LDEzICs0NDAsMTAgQEAgYm9vbCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OnNob3co UXQ6OldpbmRvd0ZsYWdzIHdpbmRvd0ZsYWdzLCBRdDo6V2luZG93TW8KKyAKKyAgICAgaW5pdGlh bGl6ZURpYWxvZygpOworIAorLSAgICBkLT5tb2RhbCA9IHdpbmRvd01vZGFsaXR5ICE9IFF0OjpO b25Nb2RhbDsKKy0gICAgZC0+d2luSWQgPSBwYXJlbnQgPyBwYXJlbnQtPndpbklkKCkgOiAwOwor LQorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0aW9ucygpLT5maWxlTW9kZSgp ID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlvbnMoKS0+ZmlsZU1vZGUo KSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpKQorKyAgICBpZiAoZC0+bmF0 aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9nKE9wZW5GYWxsYmFjaykpCisgICAg ICAgICByZXR1cm4gZC0+bmF0aXZlRmlsZURpYWxvZy0+c2hvdyh3aW5kb3dGbGFncywgd2luZG93 TW9kYWxpdHksIHBhcmVudCk7CisgCistICAgIG9wZW5Qb3J0YWwoKTsKKysgICAgb3BlblBvcnRh bCh3aW5kb3dGbGFncywgd2luZG93TW9kYWxpdHksIHBhcmVudCk7CisgCisgICAgIHJldHVybiB0 cnVlOworIH0KK0BAIC00NjUsNCArNDczLDIxIEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxl RGlhbG9nOjpnb3RSZXNwb25zZSh1aW50IHJlc3BvbnNlLCBjb25zdCBRVmFyaWFudE1hcCAmCisg ICAgIH0KKyB9CisgCisrYm9vbCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OnVzZU5hdGl2 ZUZpbGVEaWFsb2coUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpGYWxsYmFja1R5cGUgZmFs bGJhY2tUeXBlKSBjb25zdAorK3sKKysgICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFsRmls ZURpYWxvZyk7CisrCisrICAgIGlmIChkLT5mYWlsZWRUb09wZW4gJiYgZmFsbGJhY2tUeXBlICE9 IE9wZW5GYWxsYmFjaykKKysgICAgICAgIHJldHVybiB0cnVlOworKworKyAgICBpZiAoZC0+Zmls ZUNob29zZXJQb3J0YWxWZXJzaW9uIDwgMykgeworKyAgICAgICAgaWYgKG9wdGlvbnMoKS0+Zmls ZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeSkKKysgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKysgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBR RmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpCisrICAgICAgICAgICAgcmV0dXJuIHRy dWU7CisrICAgIH0KKysKKysgICAgcmV0dXJuIGZhbHNlOworK30KKysKKyBRVF9FTkRfTkFNRVNQ QUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rl c2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nX3AuaCBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFs ZmlsZWRpYWxvZ19wLmgKK2luZGV4IDRmNGRlOTZlY2YuLjY1ZTIyYTVjZjIgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRn ZGVza3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2df cC5oCitAQCAtNTEsNiArNTEsMTEgQEAgY2xhc3MgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9n IDogcHVibGljIFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIKKyAgICAgUV9PQkpFQ1QKKyAgICAg UV9ERUNMQVJFX1BSSVZBVEUoUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKQorIHB1YmxpYzoK KysgICAgZW51bSBGYWxsYmFja1R5cGUgeworKyAgICAgICAgR2VuZXJpY0ZhbGxiYWNrLAorKyAg ICAgICAgT3BlbkZhbGxiYWNrCisrICAgIH07CisrCisgICAgIGVudW0gQ29uZGl0aW9uVHlwZSA6 IHVpbnQgeworICAgICAgICAgR2xvYmFsUGF0dGVybiA9IDAsCisgICAgICAgICBNaW1lVHlwZSA9 IDEKK0BAIC02OSw3ICs3NCw3IEBAIHB1YmxpYzoKKyAgICAgfTsKKyAgICAgdHlwZWRlZiBRVmVj dG9yPEZpbHRlcj4gRmlsdGVyTGlzdDsKKyAKKy0gICAgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlh bG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cgPSBudWxscHRy KTsKKysgICAgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dI ZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cgPSBudWxscHRyLCB1aW50IGZpbGVDaG9vc2VyUG9ydGFs VmVyc2lvbiA9IDApOworICAgICB+UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKCk7CisgCisg ICAgIGJvb2wgZGVmYXVsdE5hbWVGaWx0ZXJEaXNhYmxlcygpIGNvbnN0IG92ZXJyaWRlOworQEAg LTkyLDcgKzk3LDggQEAgcHJpdmF0ZSBRX1NMT1RTOgorIAorIHByaXZhdGU6CisgICAgIHZvaWQg aW5pdGlhbGl6ZURpYWxvZygpOworLSAgICB2b2lkIG9wZW5Qb3J0YWwoKTsKKysgICAgdm9pZCBv cGVuUG9ydGFsKFF0OjpXaW5kb3dGbGFncyB3aW5kb3dGbGFncywgUXQ6OldpbmRvd01vZGFsaXR5 IHdpbmRvd01vZGFsaXR5LCBRV2luZG93ICpwYXJlbnQpOworKyAgICBib29sIHVzZU5hdGl2ZUZp bGVEaWFsb2coRmFsbGJhY2tUeXBlIGZhbGxiYWNrVHlwZSA9IEdlbmVyaWNGYWxsYmFjaykgY29u c3Q7CisgCisgICAgIFFTY29wZWRQb2ludGVyPFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1By aXZhdGU+IGRfcHRyOworIH07CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWx0aGVtZS5jcHAgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVz a3RvcHBvcnRhbHRoZW1lLmNwcAoraW5kZXggZmIzMjRhZmJkOC4uYjgwOTUwMzEyMiAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFs L3F4ZGdkZXNrdG9wcG9ydGFsdGhlbWUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNwcAor QEAgLTExMSw2ICsxMTEsNyBAQCBRWGRnRGVza3RvcFBvcnRhbFRoZW1lOjpRWGRnRGVza3RvcFBv cnRhbFRoZW1lKCkKKyAgICAgICAgIGlmIChyZXBseS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAg ICBkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPSByZXBseS52YWx1ZSgpLnRvVUludCgpOwor ICAgICAgICAgfQorKyAgICAgICAgd2F0Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKyAgICAgfSk7Cisg fQorIAorQEAgLTE1MiwxMSArMTUzLDEyIEBAIFFQbGF0Zm9ybURpYWxvZ0hlbHBlciogUVhkZ0Rl c2t0b3BQb3J0YWxUaGVtZTo6Y3JlYXRlUGxhdGZvcm1EaWFsb2dIZWxwZXIoRGlhbG9nCisgewor ICAgICBRX0QoY29uc3QgUVhkZ0Rlc2t0b3BQb3J0YWxUaGVtZSk7CisgCistICAgIGlmICh0eXBl ID09IEZpbGVEaWFsb2cpIHsKKysgICAgaWYgKHR5cGUgPT0gRmlsZURpYWxvZyAmJiBkLT5maWxl Q2hvb3NlclBvcnRhbFZlcnNpb24pIHsKKyAgICAgICAgIC8vIE9sZGVyIHZlcnNpb25zIG9mIEZp bGVDaG9vc2VyIHBvcnRhbCBkb24ndCBzdXBwb3J0IG9wZW5pbmcgZGlyZWN0b3JpZXMsIHRoZXJl Zm9yZSB3ZSBmYWxsYmFjaworICAgICAgICAgLy8gdG8gbmF0aXZlIGZpbGUgZGlhbG9nIG9wZW5l ZCBpbnNpZGUgdGhlIHNhbmRib3ggdG8gb3BlbiBhIGRpcmVjdG9yeS4KKy0gICAgICAgIGlmIChk LT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPCAzICYmIGQtPmJhc2VUaGVtZS0+dXNlUGxhdGZv cm1OYXRpdmVEaWFsb2codHlwZSkpCistICAgICAgICAgICAgcmV0dXJuIG5ldyBRWGRnRGVza3Rv cFBvcnRhbEZpbGVEaWFsb2coc3RhdGljX2Nhc3Q8UVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlcio+ KGQtPmJhc2VUaGVtZS0+Y3JlYXRlUGxhdGZvcm1EaWFsb2dIZWxwZXIodHlwZSkpKTsKKysgICAg ICAgIGlmIChkLT5iYXNlVGhlbWUtPnVzZVBsYXRmb3JtTmF0aXZlRGlhbG9nKHR5cGUpKQorKyAg ICAgICAgICAgIHJldHVybiBuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKHN0YXRpY19j YXN0PFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIqPihkLT5iYXNlVGhlbWUtPmNyZWF0ZVBsYXRm b3JtRGlhbG9nSGVscGVyKHR5cGUpKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkLT5maWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pOworIAorICAg ICAgICAgcmV0dXJuIG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c7CisgICAgIH0KK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmlu dGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNw cmludGVuZ2luZS5jcHAKK2luZGV4IDQzZDVlMTE5YWQuLjFmOWNiYzQ1NjUgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZS5j cHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50 ZW5naW5lLmNwcAorQEAgLTg5LDggKzg5LDEwIEBAIHZvaWQgUUN1cHNQcmludEVuZ2luZTo6c2V0 UHJvcGVydHkoUHJpbnRFbmdpbmVQcm9wZXJ0eUtleSBrZXksIGNvbnN0IFFWYXJpYW50ICZ2Cisg ICAgICAgICBicmVhazsKKyAgICAgY2FzZSBQUEtfRHVwbGV4OiB7CisgICAgICAgICBRUHJpbnQ6 OkR1cGxleE1vZGUgbW9kZSA9IFFQcmludDo6RHVwbGV4TW9kZSh2YWx1ZS50b0ludCgpKTsKKy0g ICAgICAgIGlmIChtb2RlICE9IGQtPmR1cGxleCAmJiBkLT5tX3ByaW50RGV2aWNlLnN1cHBvcnRl ZER1cGxleE1vZGVzKCkuY29udGFpbnMobW9kZSkpCisrICAgICAgICBpZiAoZC0+bV9wcmludERl dmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5zKG1vZGUpKSB7CisgICAgICAgICAg ICAgZC0+ZHVwbGV4ID0gbW9kZTsKKysgICAgICAgICAgICBkLT5kdXBsZXhSZXF1ZXN0ZWRFeHBs aWNpdGx5ID0gdHJ1ZTsKKysgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworICAgICB9CisgICAg IGNhc2UgUFBLX1ByaW50ZXJOYW1lOgorQEAgLTI3Nyw5ICsyNzksMTIgQEAgdm9pZCBRQ3Vwc1By aW50RW5naW5lUHJpdmF0ZTo6Y2hhbmdlUHJpbnRlcihjb25zdCBRU3RyaW5nICZuZXdQcmludGVy KQorICAgICBtX3ByaW50RGV2aWNlLnN3YXAocHJpbnREZXZpY2UpOworICAgICBwcmludGVyTmFt ZSA9IG1fcHJpbnREZXZpY2UuaWQoKTsKKyAKKy0gICAgLy8gQ2hlY2sgaWYgbmV3IHByaW50ZXIg c3VwcG9ydHMgY3VycmVudCBzZXR0aW5ncywgb3RoZXJ3aXNlIHVzIGRlZmF1bHRzCistICAgIGlm IChkdXBsZXggIT0gUVByaW50OjpEdXBsZXhBdXRvICYmICFtX3ByaW50RGV2aWNlLnN1cHBvcnRl ZER1cGxleE1vZGVzKCkuY29udGFpbnMoZHVwbGV4KSkKKysgICAgLy8gaW4gY2FzZSBhIGR1cGxl eCB2YWx1ZSB3YXMgZXhwbGljaXRseSBzZXQsIGNoZWNrIGlmIG5ldyBwcmludGVyIHN1cHBvcnRz IGN1cnJlbnQgdmFsdWUsCisrICAgIC8vIG90aGVyd2lzZSB1c2UgZGV2aWNlIGRlZmF1bHQKKysg ICAgaWYgKCFkdXBsZXhSZXF1ZXN0ZWRFeHBsaWNpdGx5IHx8ICFtX3ByaW50RGV2aWNlLnN1cHBv cnRlZER1cGxleE1vZGVzKCkuY29udGFpbnMoZHVwbGV4KSkgeworICAgICAgICAgZHVwbGV4ID0g bV9wcmludERldmljZS5kZWZhdWx0RHVwbGV4TW9kZSgpOworKyAgICAgICAgZHVwbGV4UmVxdWVz dGVkRXhwbGljaXRseSA9IGZhbHNlOworKyAgICB9CisgICAgIFFQcmludDo6Q29sb3JNb2RlIGNv bG9yTW9kZSA9IGdyYXlzY2FsZSA/IFFQcmludDo6R3JheVNjYWxlIDogUVByaW50OjpDb2xvcjsK KyAgICAgaWYgKCFtX3ByaW50RGV2aWNlLnN1cHBvcnRlZENvbG9yTW9kZXMoKS5jb250YWlucyhj b2xvck1vZGUpKQorICAgICAgICAgZ3JheXNjYWxlID0gbV9wcmludERldmljZS5kZWZhdWx0Q29s b3JNb2RlKCkgPT0gUVByaW50OjpHcmF5U2NhbGU7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9w bHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmVfcC5oIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmVfcC5oCitpbmRleCBj MDIxYjBjNjQzLi44ZjgxZmU0NzhkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3By aW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmVfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3Bs dWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZV9wLmgKK0BAIC0xMDAsNiAr MTAwLDcgQEAgcHJpdmF0ZToKKyAgICAgUVN0cmluZ0xpc3QgY3Vwc09wdGlvbnM7CisgICAgIFFT dHJpbmcgY3Vwc1RlbXBGaWxlOworICAgICBRUHJpbnQ6OkR1cGxleE1vZGUgZHVwbGV4OworKyAg ICBib29sIGR1cGxleFJlcXVlc3RlZEV4cGxpY2l0bHkgPSBmYWxzZTsKKyB9OworIAorIFFUX0VO RF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9p YmFzZS9xc3FsX2liYXNlLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL2liYXNl L3FzcWxfaWJhc2UuY3BwCitpbmRleCA2N2U3MTU0ZmE2Li40MDg3NjE1MmU1IDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNxbF9pYmFzZS5jcHAKKysr KyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL2liYXNlL3FzcWxfaWJhc2UuY3BwCitA QCAtODE3LDcgKzgxNyw3IEBAIGJvb2wgUUlCYXNlUmVzdWx0UHJpdmF0ZTo6d3JpdGVBcnJheShp bnQgY29sdW1uLCBjb25zdCBRTGlzdDxRVmFyaWFudD4gJmxpc3QpCisgICAgIGJhLnJlc2l6ZShp bnQoYnVmTGVuKSk7CisgCisgICAgIGlmIChsaXN0LnNpemUoKSA+IGFycmF5U2l6ZSkgeworLSAg ICAgICAgZXJyb3IgPSBRTGF0aW4xU3RyaW5nKCJBcnJheSBzaXplIG1pc3NtYXRjaDogc2l6ZSBv ZiAlMSBpcyAlMiwgc2l6ZSBvZiBwcm92aWRlZCBsaXN0IGlzICUzIik7CisrICAgICAgICBlcnJv ciA9IFFMYXRpbjFTdHJpbmcoIkFycmF5IHNpemUgbWlzbWF0Y2g6IHNpemUgb2YgJTEgaXMgJTIs IHNpemUgb2YgcHJvdmlkZWQgbGlzdCBpcyAlMyIpOworICAgICAgICAgZXJyb3IgPSBlcnJvci5h cmcoUUxhdGluMVN0cmluZyhzcWxuYW1lKSkuYXJnKGFycmF5U2l6ZSkuYXJnKGxpc3Quc2l6ZSgp KTsKKyAgICAgICAgIHEtPnNldExhc3RFcnJvcihRU3FsRXJyb3IoZXJyb3IsIFFMYXRpbjFTdHJp bmcoIiIpLCBRU3FsRXJyb3I6OlN0YXRlbWVudEVycm9yKSk7CisgICAgICAgICByZXR1cm4gZmFs c2U7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvbXlzcWwvcXNx bF9teXNxbC5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9teXNxbC9xc3FsX215 c3FsLmNwcAoraW5kZXggN2NhMDU1ZWVhMi4uNmJjOWQ0Njc1NSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwuY3BwCisrKysgYi9xdGJh c2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9teXNxbC9xc3FsX215c3FsLmNwcAorQEAgLTIyMyw3 ICsyMjMsNyBAQCBwdWJsaWM6CisgICAgIHN0cnVjdCBRTXlGaWVsZAorICAgICB7CisgICAgICAg ICBjaGFyICpvdXRGaWVsZCA9IG51bGxwdHI7CistICAgICAgICBNWVNRTF9GSUVMRCAqbXlGaWVs ZCA9IG51bGxwdHI7CisrICAgICAgICBjb25zdCBNWVNRTF9GSUVMRCAqbXlGaWVsZCA9IG51bGxw dHI7CisgICAgICAgICBRTWV0YVR5cGU6OlR5cGUgdHlwZSA9IFFNZXRhVHlwZTo6VW5rbm93blR5 cGU7CisgICAgICAgICBteV9ib29sIG51bGxJbmRpY2F0b3IgPSBmYWxzZTsKKyAgICAgICAgIHVs b25nIGJ1Zkxlbmd0aCA9IDB1bDsKK0BAIC0zNjEsNyArMzYxLDcgQEAgc3RhdGljIGJvb2wgcUlz SW50ZWdlcihpbnQgdCkKKyB2b2lkIFFNWVNRTFJlc3VsdFByaXZhdGU6OmJpbmRCbG9icygpCisg eworICAgICBpbnQgaTsKKy0gICAgTVlTUUxfRklFTEQgKmZpZWxkSW5mbzsKKysgICAgY29uc3Qg TVlTUUxfRklFTEQgKmZpZWxkSW5mbzsKKyAgICAgTVlTUUxfQklORCAqYmluZDsKKyAKKyAgICAg Zm9yKGkgPSAwOyBpIDwgZmllbGRzLmNvdW50KCk7ICsraSkgeworQEAgLTM3OSw3ICszNzksNiBA QCB2b2lkIFFNWVNRTFJlc3VsdFByaXZhdGU6OmJpbmRCbG9icygpCisgYm9vbCBRTVlTUUxSZXN1 bHRQcml2YXRlOjpiaW5kSW5WYWx1ZXMoKQorIHsKKyAgICAgTVlTUUxfQklORCAqYmluZDsKKy0g ICAgY2hhciAqZmllbGQ7CisgICAgIGludCBpID0gMDsKKyAKKyAgICAgaWYgKCFtZXRhKQorQEAg LTM5MiwzNSArMzkxLDM0IEBAIGJvb2wgUU1ZU1FMUmVzdWx0UHJpdmF0ZTo6YmluZEluVmFsdWVz KCkKKyAgICAgaW5CaW5kcyA9IG5ldyBNWVNRTF9CSU5EW2ZpZWxkcy5zaXplKCldOworICAgICBt ZW1zZXQoaW5CaW5kcywgMCwgZmllbGRzLnNpemUoKSAqIHNpemVvZihNWVNRTF9CSU5EKSk7Cisg CistICAgIE1ZU1FMX0ZJRUxEICpmaWVsZEluZm87CisrICAgIGNvbnN0IE1ZU1FMX0ZJRUxEICpm aWVsZEluZm87CisgCisgICAgIHdoaWxlKChmaWVsZEluZm8gPSBteXNxbF9mZXRjaF9maWVsZCht ZXRhKSkpIHsKKysgICAgICAgIGJpbmQgPSAmaW5CaW5kc1tpXTsKKysKKyAgICAgICAgIFFNeUZp ZWxkICZmID0gZmllbGRzW2ldOworICAgICAgICAgZi5teUZpZWxkID0gZmllbGRJbmZvOworLQor KyAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYuYnVmTGVuZ3RoID0gZmllbGRJbmZvLT5s ZW5ndGggKyAxOworKyAgICAgICAgYmluZC0+YnVmZmVyX3R5cGUgPSBmaWVsZEluZm8tPnR5cGU7 CisgICAgICAgICBmLnR5cGUgPSBxRGVjb2RlTVlTUUxUeXBlKGZpZWxkSW5mby0+dHlwZSwgZmll bGRJbmZvLT5mbGFncyk7CisgICAgICAgICBpZiAocUlzQmxvYihmaWVsZEluZm8tPnR5cGUpKSB7 CisgICAgICAgICAgICAgLy8gdGhlIHNpemUgb2YgYSBibG9iLWZpZWxkIGlzIGF2YWlsYWJsZSBh cyBzb29uIGFzIHdlIGNhbGwKKyAgICAgICAgICAgICAvLyBteXNxbF9zdG10X3N0b3JlX3Jlc3Vs dCgpCisgICAgICAgICAgICAgLy8gYWZ0ZXIgbXlzcWxfc3RtdF9leGVjKCkgaW4gUU1ZU1FMUmVz dWx0OjpleGVjKCkKKy0gICAgICAgICAgICBmaWVsZEluZm8tPmxlbmd0aCA9IDA7CisrICAgICAg ICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYuYnVmTGVuZ3RoID0gMDsKKyAgICAgICAgICAg ICBoYXNCbG9icyA9IHRydWU7CisgICAgICAgICB9IGVsc2UgaWYgKHFJc0ludGVnZXIoZi50eXBl KSkgeworLSAgICAgICAgICAgIGZpZWxkSW5mby0+bGVuZ3RoID0gODsKKysgICAgICAgICAgICBi aW5kLT5idWZmZXJfbGVuZ3RoID0gZi5idWZMZW5ndGggPSA4OworICAgICAgICAgfSBlbHNlIHsK Ky0gICAgICAgICAgICBmaWVsZEluZm8tPnR5cGUgPSBNWVNRTF9UWVBFX1NUUklORzsKKysgICAg ICAgICAgICBiaW5kLT5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworICAgICAgICAg fQorLSAgICAgICAgYmluZCA9ICZpbkJpbmRzW2ldOworLSAgICAgICAgZmllbGQgPSBuZXcgY2hh cltmaWVsZEluZm8tPmxlbmd0aCArIDFdOworLSAgICAgICAgbWVtc2V0KGZpZWxkLCAwLCBmaWVs ZEluZm8tPmxlbmd0aCArIDEpOworIAorLSAgICAgICAgYmluZC0+YnVmZmVyX3R5cGUgPSBmaWVs ZEluZm8tPnR5cGU7CistICAgICAgICBiaW5kLT5idWZmZXIgPSBmaWVsZDsKKy0gICAgICAgIGJp bmQtPmJ1ZmZlcl9sZW5ndGggPSBmLmJ1Zkxlbmd0aCA9IGZpZWxkSW5mby0+bGVuZ3RoICsgMTsK KyAgICAgICAgIGJpbmQtPmlzX251bGwgPSAmZi5udWxsSW5kaWNhdG9yOworICAgICAgICAgYmlu ZC0+bGVuZ3RoID0gJmYuYnVmTGVuZ3RoOworICAgICAgICAgYmluZC0+aXNfdW5zaWduZWQgPSBm aWVsZEluZm8tPmZsYWdzICYgVU5TSUdORURfRkxBRyA/IDEgOiAwOworLSAgICAgICAgZi5vdXRG aWVsZD1maWVsZDsKKysKKysgICAgICAgIGNoYXIgKmZpZWxkID0gbmV3IGNoYXJbYmluZC0+YnVm ZmVyX2xlbmd0aCArIDFde307CisrICAgICAgICBiaW5kLT5idWZmZXIgPSBmLm91dEZpZWxkID0g ZmllbGQ7CisgCisgICAgICAgICArK2k7CisgICAgIH0KK0BAIC0xMzY5LDIwICsxMzY3LDIwIEBA IGJvb2wgUU1ZU1FMRHJpdmVyOjpvcGVuKGNvbnN0IFFTdHJpbmcmIGRiLAorICAgICB9CisgCisg I2lmIE1ZU1FMX1ZFUlNJT05fSUQgPj0gNTAwMDcKKy0gICAgaWYgKG15c3FsX2dldF9jbGllbnRf dmVyc2lvbigpID49IDUwNTAzICYmIG15c3FsX2dldF9zZXJ2ZXJfdmVyc2lvbihkLT5teXNxbCkg Pj0gNTA1MDMpIHsKKy0gICAgICAgIC8vIGZvcmNlIHRoZSBjb21tdW5pY2F0aW9uIHRvIGJlIHV0 ZjhtYjQgKG9ubHkgdXRmOG1iNCBzdXBwb3J0cyA0LWJ5dGUgY2hhcmFjdGVycykKKy0gICAgICAg IG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3FsLCAidXRmOG1iNCIpOworKyAgICAvLyBm b3JjZSB0aGUgY29tbXVuaWNhdGlvbiB0byBiZSB1dGY4bWI0IChvbmx5IHV0ZjhtYjQgc3VwcG9y dHMgNC1ieXRlIGNoYXJhY3RlcnMpCisrICAgIGlmIChteXNxbF9zZXRfY2hhcmFjdGVyX3NldChk LT5teXNxbCwgInV0ZjhtYjQiKSkgeworKyAgICAgICAgLy8gdGhpcyBmYWlsZWQsIHRyeSBmb3Jj aW5nIGl0IHRvIHV0ZiAoQk1QIG9ubHkpCisrICAgICAgICBpZiAobXlzcWxfc2V0X2NoYXJhY3Rl cl9zZXQoZC0+bXlzcWwsICJ1dGY4IikpCisrICAgICAgICAgICAgcVdhcm5pbmcoKSA8PCAiTXlT UUw6IFVuYWJsZSB0byBzZXQgdGhlIGNsaWVudCBjaGFyYWN0ZXIgc2V0IHRvIHV0ZjguIjsKKyAj aWYgUVRfQ09ORklHKHRleHRjb2RlYykKKy0gICAgICAgIGQtPnRjID0gUVRleHRDb2RlYzo6Y29k ZWNGb3JOYW1lKCJVVEYtOCIpOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIGQtPnRjID0g Y29kZWMoZC0+bXlzcWwpOworICNlbmRpZgorLSAgICB9IGVsc2UKKy0gICAgeworLSAgICAgICAg Ly8gZm9yY2UgdGhlIGNvbW11bmljYXRpb24gdG8gYmUgdXRmOAorLSAgICAgICAgbXlzcWxfc2V0 X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4Iik7CisrICAgIH0KKyAjaWYgUVRfQ09ORklH KHRleHRjb2RlYykKKy0gICAgICAgIGQtPnRjID0gY29kZWMoZC0+bXlzcWwpOworKyAgICBlbHNl CisrICAgICAgICBkLT50YyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZSgiVVRGLTgiKTsKKyAj ZW5kaWYKKy0gICAgfQorICNlbmRpZiAgLy8gTVlTUUxfVkVSU0lPTl9JRCA+PSA1MDAwNworIAor ICAgICBkLT5wcmVwYXJlZFF1ZXJ5c0VuYWJsZWQgPSBjaGVja1ByZXBhcmVkUXVlcmllcyhkLT5t eXNxbCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvcHJpbnQtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMv cHJpbnRlci0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludC0yNC5wbmcKK3JlbmFtZSB0byBzcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50ZXItMjQucG5nCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnQtMzIucG5nIGIvcXRiYXNl L3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnRlci0zMi5wbmcKK3NpbWlsYXJp dHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdl cy9wcmludC0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2Vz L3ByaW50ZXItMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTI0LnBuZworc2ltaWxhcml0eSBp bmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3Zp ZXctcGFnZS1zaWRlZC0yNC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv aW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0zMi5wbmcgYi9xdGJh c2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0zMi5w bmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0zMi5wbmcKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVs dGktMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1w YWdlcy1vdmVydmlldy0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20g c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVsdGktMjQucG5nCity ZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2 aWV3LTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv aW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTMyLnBuZworc2ltaWxhcml0eSBpbmRl eCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXct cGFnZS1tdWx0aS0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9w cmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW9uZS0yNC5wbmcgYi9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0yNC5wbmcK K3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBv cnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMjQucG5nCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW9uZS0zMi5w bmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLXNp bmdsZS0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTMyLnBuZworcmVuYW1lIHRvIHNy Yy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMzIucG5nCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXBh Z2UtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1m aXQtcGFnZS0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0yNC5wbmcKK3JlbmFtZSB0byBzcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMjQucG5nCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXBhZ2UtMzIu cG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtcGFn ZS0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3Vw cG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMzIucG5nCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXdpZHRoLTI0LnBuZyBi L3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXdpZHRoLTI0 LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvaW1hZ2VzL2ZpdC13aWR0aC0yNC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXdpZHRoLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC13aWR0aC0zMi5wbmcgYi9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC13aWR0aC0zMi5w bmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL2ltYWdlcy9maXQtd2lkdGgtMzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9y dC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC13aWR0aC0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0dXBkaWFsb2dfdW5peC5jcHAgYi9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0dXBkaWFsb2dfdW5peC5jcHAK K2luZGV4IDc4ZTViOGQxZWYuLjJhMjg1MTY3MTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0dXBkaWFsb2dfdW5peC5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBhZ2VzZXR1cGRpYWxvZ191bml4LmNwcAorQEAg LTUzMiw2ICs1MzIsNyBAQCB2b2lkIFFQYWdlU2V0dXBXaWRnZXQ6OnVwZGF0ZVdpZGdldCgpCisg dm9pZCBRUGFnZVNldHVwV2lkZ2V0OjpzZXR1cFByaW50ZXIoKSBjb25zdAorIHsKKyAgICAgbV9w cmludGVyLT5zZXRQYWdlTGF5b3V0KG1fcGFnZUxheW91dCk7CisrICAgIG1fcHJpbnRlci0+c2V0 UGFnZU9yaWVudGF0aW9uKG1fcGFnZUxheW91dC5vcmllbnRhdGlvbigpKTsKKyAjaWYgUVRfQ09O RklHKGN1cHMpCisgICAgIFFDVVBTU3VwcG9ydDo6UGFnZXNQZXJTaGVldCBwYWdlc1BlclNoZWV0 ID0gcXZhcmlhbnRfY2FzdDxRQ1VQU1N1cHBvcnQ6OlBhZ2VzUGVyU2hlZXQ+KG1fdWkucGFnZXNQ ZXJTaGVldENvbWJvLT5jdXJyZW50RGF0YSgpCisgKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5xcmMgYi9xdGJhc2Uvc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5xcmMKK2luZGV4IDVhNTc5YmFhNTUuLjEwYjhl MWQzNDEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3Fwcmlu dGRpYWxvZy5xcmMKKysrKyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50 ZGlhbG9nLnFyYworQEAgLTEsOSArMSw5IEBACisgPCFET0NUWVBFIFJDQz48UkNDIHZlcnNpb249 IjEuMCI+CisgPHFyZXNvdXJjZSBwcmVmaXg9Ii9xdC1wcm9qZWN0Lm9yZy9kaWFsb2dzL3Fwcmlu dHByZXZpZXdkaWFsb2ciPgorLTxmaWxlPmltYWdlcy9maXQtcGFnZS0yNC5wbmc8L2ZpbGU+Cist PGZpbGU+aW1hZ2VzL2ZpdC1wYWdlLTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvZml0LXdp ZHRoLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvZml0LXdpZHRoLTMyLnBuZzwvZmlsZT4K Kys8ZmlsZT5pbWFnZXMvem9vbS1maXQtcGFnZS0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2Vz L3pvb20tZml0LXBhZ2UtMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy96b29tLWZpdC13aWR0 aC0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pvb20tZml0LXdpZHRoLTMyLnBuZzwvZmls ZT4KKyA8ZmlsZT5pbWFnZXMvZ28tZmlyc3QtMjQucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy9n by1maXJzdC0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL2dvLWxhc3QtMjQucG5nPC9maWxl PgorQEAgLTE4LDE0ICsxOCwxNCBAQAorIDxmaWxlPmltYWdlcy9sYXlvdXQtcG9ydHJhaXQtMzIu cG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy9wYWdlLXNldHVwLTI0LnBuZzwvZmlsZT4KKyA8Zmls ZT5pbWFnZXMvcGFnZS1zZXR1cC0zMi5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ByaW50LTI0 LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvcHJpbnQtMzIucG5nPC9maWxlPgorLTxmaWxlPmlt YWdlcy92aWV3LXBhZ2UtbXVsdGktMjQucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBh Z2UtbXVsdGktMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2Utb25lLTI0LnBu ZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW9uZS0zMi5wbmc8L2ZpbGU+CistPGZp bGU+aW1hZ2VzL3ZpZXctcGFnZS1zaWRlZC0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3Zp ZXctcGFnZS1zaWRlZC0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ByaW50ZXItMjQucG5n PC9maWxlPgorKzxmaWxlPmltYWdlcy9wcmludGVyLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFn ZXMvdmlldy1wYWdlcy1vdmVydmlldy0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXct cGFnZXMtb3ZlcnZpZXctMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLXNp bmdsZS0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTMyLnBu ZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMjQucG5nPC9maWxlPgor KzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1h Z2VzL3pvb20taW4tMjQucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy96b29tLWluLTMyLnBuZzwv ZmlsZT4KKyA8ZmlsZT5pbWFnZXMvem9vbS1vdXQtMjQucG5nPC9maWxlPgorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nX3VuaXguY3BwIGIv cXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5peC5jcHAKK2lu ZGV4IGM1Yjg0NWY0ZWMuLjVhNWJhMWQwYTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZ191bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9w cmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5peC5jcHAKK0BAIC03MDIsMTMgKzcw MiwxNCBAQCB2b2lkIFFQcmludERpYWxvZ1ByaXZhdGU6OnNlbGVjdFByaW50ZXIoY29uc3QgUVBy aW50ZXI6Ok91dHB1dEZvcm1hdCBvdXRwdXRGb3JtYQorICAgICAgICAgZWxzZQorICAgICAgICAg ICAgIG9wdGlvbnMuZ3JheXNjYWxlLT5zZXRDaGVja2VkKHRydWUpOworIAorLSAgICAgICAgLy8g a2VlcCBkdXBsZXggdmFsdWUgZXhwbGljaXRseSBzZXQgYnkgdXNlciwgaWYgYW55LCBhbmQgc2Vs ZWN0ZWQgcHJpbnRlciBzdXBwb3J0cyBpdDsKKy0gICAgICAgIC8vIHVzZSBkZXZpY2UgZGVmYXVs dCBvdGhlcndpc2UKKysgICAgICAgIC8vIGR1cGxleCBwcmlvcml0aWVzIHRvIGJlIGFzIGZvbGxv d3M6CisrICAgICAgICAvLyAxKSBhIHVzZXItc2VsZWN0ZWQgZHVwbGV4IHZhbHVlIGluIHRoZSBk aWFsb2cgaGFzIGhpZ2hlc3QgcHJvcml0eQorKyAgICAgICAgLy8gMikgZHVwbGV4IHZhbHVlIHNl dCBpbiB0aGUgUVByaW50ZXIKKyAgICAgICAgIFFQcmludDo6RHVwbGV4TW9kZSBkdXBsZXg7Cisg ICAgICAgICBpZiAoZXhwbGljaXREdXBsZXhNb2RlICE9IFFQcmludDo6RHVwbGV4QXV0byAmJiBz dXBwb3J0ZWREdXBsZXhNb2RlLmNvbnRhaW5zKGV4cGxpY2l0RHVwbGV4TW9kZSkpCisgICAgICAg ICAgICAgZHVwbGV4ID0gZXhwbGljaXREdXBsZXhNb2RlOworICAgICAgICAgZWxzZQorLSAgICAg ICAgICAgIGR1cGxleCA9IHRvcC0+ZC0+bV9jdXJyZW50UHJpbnREZXZpY2UuZGVmYXVsdER1cGxl eE1vZGUoKTsKKysgICAgICAgICAgICBkdXBsZXggPSBzdGF0aWNfY2FzdDxRUHJpbnQ6OkR1cGxl eE1vZGU+KHAtPmR1cGxleCgpKTsKKyAgICAgICAgIHN3aXRjaCAoZHVwbGV4KSB7CisgICAgICAg ICBjYXNlIFFQcmludDo6RHVwbGV4Tm9uZToKKyAgICAgICAgICAgICBvcHRpb25zLm5vRHVwbGV4 LT5zZXRDaGVja2VkKHRydWUpOyBicmVhazsKK0BAIC0xMjQyLDEwICsxMjQzLDEwIEBAIHZvaWQg UVVuaXhQcmludFdpZGdldFByaXZhdGU6Ol9xX3ByaW50ZXJDaGFuZ2VkKGludCBpbmRleCkKKyAg ICAgICAgICAgICBRU3RyaW5nIGZpbGVuYW1lID0gd2lkZ2V0LmZpbGVuYW1lLT50ZXh0KCk7Cisg ICAgICAgICAgICAgd2lkZ2V0LmZpbGVuYW1lLT5zZXRUZXh0KGZpbGVuYW1lKTsKKyAgICAgICAg ICAgICB3aWRnZXQubE91dHB1dC0+c2V0RW5hYmxlZCh0cnVlKTsKKy0gICAgICAgICAgICBpZiAo b3B0aW9uc1BhbmUpCistICAgICAgICAgICAgICAgIG9wdGlvbnNQYW5lLT5zZWxlY3RQcmludGVy KFFQcmludGVyOjpQZGZGb3JtYXQpOworICAgICAgICAgICAgIHByaW50ZXItPnNldE91dHB1dEZv cm1hdChRUHJpbnRlcjo6UGRmRm9ybWF0KTsKKyAgICAgICAgICAgICBtX2N1cnJlbnRQcmludERl dmljZSA9IFFQcmludERldmljZSgpOworKyAgICAgICAgICAgIGlmIChvcHRpb25zUGFuZSkKKysg ICAgICAgICAgICAgICAgb3B0aW9uc1BhbmUtPnNlbGVjdFByaW50ZXIoUVByaW50ZXI6OlBkZkZv cm1hdCk7CisgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQorICAgICB9CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9n LmNwcCBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxv Zy5jcHAKK2luZGV4IDM5NTc1ZDVmNTcuLjIzYjdlODk1MzggMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cuY3BwCitA QCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZhdGU6OmluaXQo UVByaW50ZXIgKl9wcmludGVyKQorIHN0YXRpYyBpbmxpbmUgdm9pZCBxdF9zZXR1cEFjdGlvbklj b24oUUFjdGlvbiAqYWN0aW9uLCBRTGF0aW4xU3RyaW5nIG5hbWUpCisgeworICAgICBRTGF0aW4x U3RyaW5nIGltYWdlUHJlZml4KCI6L3F0LXByb2plY3Qub3JnL2RpYWxvZ3MvcXByaW50cHJldmll d2RpYWxvZy9pbWFnZXMvIik7CistICAgIFFJY29uIGljb247CisrICAgIFFJY29uIGljb24gPSBR SWNvbjo6ZnJvbVRoZW1lKG5hbWUpOworICAgICBpY29uLmFkZEZpbGUoaW1hZ2VQcmVmaXggKyBu YW1lICsgUUxhdGluMVN0cmluZygiLTI0LnBuZyIpLCBRU2l6ZSgyNCwgMjQpKTsKKyAgICAgaWNv bi5hZGRGaWxlKGltYWdlUHJlZml4ICsgbmFtZSArIFFMYXRpbjFTdHJpbmcoIi0zMi5wbmciKSwg UVNpemUoMzIsIDMyKSk7CisgICAgIGFjdGlvbi0+c2V0SWNvbihpY29uKTsKK0BAIC0zODMsOCAr MzgzLDggQEAgdm9pZCBRUHJpbnRQcmV2aWV3RGlhbG9nUHJpdmF0ZTo6c2V0dXBBY3Rpb25zKCkK KyAgICAgZml0UGFnZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShRTGF0aW4xU3RyaW5nKCJmaXRQYWdl QWN0aW9uIikpOworICAgICBmaXRXaWR0aEFjdGlvbi0+c2V0Q2hlY2thYmxlKHRydWUpOworICAg ICBmaXRQYWdlQWN0aW9uLT5zZXRDaGVja2FibGUodHJ1ZSk7CistICAgIHF0X3NldHVwQWN0aW9u SWNvbihmaXRXaWR0aEFjdGlvbiwgUUxhdGluMVN0cmluZygiZml0LXdpZHRoIikpOworLSAgICBx dF9zZXR1cEFjdGlvbkljb24oZml0UGFnZUFjdGlvbiwgUUxhdGluMVN0cmluZygiZml0LXBhZ2Ui KSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihmaXRXaWR0aEFjdGlvbiwgUUxhdGluMVN0cmlu Zygiem9vbS1maXQtd2lkdGgiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihmaXRQYWdlQWN0 aW9uLCBRTGF0aW4xU3RyaW5nKCJ6b29tLWZpdC1wYWdlIikpOworICAgICBRT2JqZWN0Ojpjb25u ZWN0KGZpdEdyb3VwLCBTSUdOQUwodHJpZ2dlcmVkKFFBY3Rpb24qKSksIHEsIFNMT1QoX3FfZml0 KFFBY3Rpb24qKSkpOworIAorICAgICAvLyBab29tCitAQCAtNDEwLDkgKzQxMCw5IEBAIHZvaWQg UVByaW50UHJldmlld0RpYWxvZ1ByaXZhdGU6OnNldHVwQWN0aW9ucygpCisgICAgIHNpbmdsZU1v ZGVBY3Rpb24gPSBtb2RlR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xh dGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAiU2hvdyBzaW5nbGUgcGFnZSIpKTsKKyAgICAgZmFj aW5nTW9kZUFjdGlvbiA9IG1vZGVHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRy YW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxvZyIsICJTaG93IGZhY2luZyBwYWdlcyIpKTsKKyAg ICAgb3ZlcnZpZXdNb2RlQWN0aW9uID0gbW9kZUdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNh dGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlNob3cgb3ZlcnZpZXcgb2Yg YWxsIHBhZ2VzIikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oc2luZ2xlTW9kZUFjdGlvbiwg UUxhdGluMVN0cmluZygidmlldy1wYWdlLW9uZSIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29u KGZhY2luZ01vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZS1zaWRlZCIpKTsKKy0g ICAgcXRfc2V0dXBBY3Rpb25JY29uKG92ZXJ2aWV3TW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygi dmlldy1wYWdlLW11bHRpIikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24oc2luZ2xlTW9kZUFj dGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlcy1zaW5nbGUiKSk7CisrICAgIHF0X3NldHVw QWN0aW9uSWNvbihmYWNpbmdNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2aWV3LXBhZ2VzLWZh Y2luZyIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29uKG92ZXJ2aWV3TW9kZUFjdGlvbiwgUUxh dGluMVN0cmluZygidmlldy1wYWdlcy1vdmVydmlldyIpKTsKKyAgICAgc2luZ2xlTW9kZUFjdGlv bi0+c2V0T2JqZWN0TmFtZShRTGF0aW4xU3RyaW5nKCJzaW5nbGVNb2RlQWN0aW9uIikpOworICAg ICBmYWNpbmdNb2RlQWN0aW9uLT5zZXRPYmplY3ROYW1lKFFMYXRpbjFTdHJpbmcoImZhY2luZ01v ZGVBY3Rpb24iKSk7CisgICAgIG92ZXJ2aWV3TW9kZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShRTGF0 aW4xU3RyaW5nKCJvdmVydmlld01vZGVBY3Rpb24iKSk7CitAQCAtNDI2LDcgKzQyNiw3IEBAIHZv aWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZhdGU6OnNldHVwQWN0aW9ucygpCisgICAgIHByaW50 ZXJHcm91cCA9IG5ldyBRQWN0aW9uR3JvdXAocSk7CisgICAgIHByaW50QWN0aW9uID0gcHJpbnRl ckdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2 aWV3RGlhbG9nIiwgIlByaW50IikpOworICAgICBwYWdlU2V0dXBBY3Rpb24gPSBwcmludGVyR3Jv dXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdE aWFsb2ciLCAiUGFnZSBzZXR1cCIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKHByaW50QWN0 aW9uLCBRTGF0aW4xU3RyaW5nKCJwcmludCIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29uKHBy aW50QWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJwcmludGVyIikpOworICAgICBxdF9zZXR1cEFjdGlv bkljb24ocGFnZVNldHVwQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJwYWdlLXNldHVwIikpOworICAg ICBRT2JqZWN0Ojpjb25uZWN0KHByaW50QWN0aW9uLCBTSUdOQUwodHJpZ2dlcmVkKGJvb2wpKSwg cSwgU0xPVChfcV9wcmludCgpKSk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocGFnZVNldHVwQWN0 aW9uLCBTSUdOQUwodHJpZ2dlcmVkKGJvb2wpKSwgcSwgU0xPVChfcV9wYWdlU2V0dXAoKSkpOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVlcnkuY3BwIGIvcXRiYXNl L3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5jcHAKK2luZGV4IDMyYzYxNjZjNzkuLjYwYWZlZjEw YzMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5LmNwcAorKysr IGIvcXRiYXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5jcHAKK0BAIC0xLDYgKzEsNiBAQAor IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0 IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgUXQgQ29tcGFueSBMdGQu CisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0U3FsIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BA IC0zNzcsNiArMzc3LDEwIEBAIGJvb2wgUVNxbFF1ZXJ5OjpleGVjKGNvbnN0IFFTdHJpbmcmIHF1 ZXJ5KQorICAgICBRRWxhcHNlZFRpbWVyIHQ7CisgICAgIHQuc3RhcnQoKTsKKyAjZW5kaWYKKysg ICAgaWYgKCFkcml2ZXIoKSkgeworKyAgICAgICAgcVdhcm5pbmcoIlFTcWxRdWVyeTo6ZXhlYzog Y2FsbGVkIGJlZm9yZSBkcml2ZXIgaGFzIGJlZW4gc2V0IHVwIik7CisrICAgICAgICByZXR1cm4g ZmFsc2U7CisrICAgIH0KKyAgICAgaWYgKGQtPnJlZi5sb2FkUmVsYXhlZCgpICE9IDEpIHsKKyAg ICAgICAgIGJvb2wgZm8gPSBpc0ZvcndhcmRPbmx5KCk7CisgICAgICAgICAqdGhpcyA9IFFTcWxR dWVyeShkcml2ZXIoKS0+Y3JlYXRlUmVzdWx0KCkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv dGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwIGIvcXRiYXNlL3NyYy90ZXN0bGli L3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKK2luZGV4IDhlZmI5YzUzZDQuLmNlMDYyZjY2 ZDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVz dGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rl ci5jcHAKK0BAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBRQWJzdHJhY3RJdGVtTW9kZWxUZXN0ZXJQ cml2YXRlOjpwYXJlbnQoKQorIAorICAgICAvLyBDb21tb24gZXJyb3IgdGVzdCAjMiwgbWFrZSBz dXJlIHRoYXQgYSBzZWNvbmQgbGV2ZWwgaW5kZXggaGFzIGEgcGFyZW50CisgICAgIC8vIHRoYXQg aXMgdGhlIGZpcnN0IGxldmVsIGluZGV4LgorLSAgICBpZiAobW9kZWwtPnJvd0NvdW50KHRvcElu ZGV4KSA+IDApIHsKKysgICAgaWYgKG1vZGVsLT5yb3dDb3VudCh0b3BJbmRleCkgPiAwICYmIG1v ZGVsLT5jb2x1bW5Db3VudCh0b3BJbmRleCkgPiAwKSB7CisgICAgICAgICBRTW9kZWxJbmRleCBj aGlsZEluZGV4ID0gbW9kZWwtPmluZGV4KDAsIDAsIHRvcEluZGV4KTsKKyAgICAgICAgIE1PREVM VEVTVEVSX1ZFUklGWShjaGlsZEluZGV4LmlzVmFsaWQoKSk7CisgICAgICAgICBNT0RFTFRFU1RF Ul9DT01QQVJFKG1vZGVsLT5wYXJlbnQoY2hpbGRJbmRleCksIHRvcEluZGV4KTsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcCBiL3F0YmFzZS9zcmMvdGVzdGxp Yi9xYXNjaWlrZXkuY3BwCitpbmRleCA5YTMwOGRhMmJjLi45MzQ5OGIyNTZmIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy90ZXN0bGliL3Fhc2NpaWtleS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvdGVz dGxpYi9xYXNjaWlrZXkuY3BwCitAQCAtNDk4LDYgKzQ5OCwxMSBAQCBjaGFyIFFUZXN0OjprZXlU b0FzY2lpKFF0OjpLZXkga2V5KQorICAgICBjYXNlIFF0OjpLZXlfTGF1bmNoRSA6IHJldHVybiAw OyAvLyA9IDB4MTBiMCwKKyAgICAgY2FzZSBRdDo6S2V5X0xhdW5jaEYgOiByZXR1cm4gMDsgLy8g PSAweDEwYjEsCisgCisrICAgIC8vIEtleXBhZCBuYXZpZ2F0aW9uIGtleXMKKysgICAgY2FzZSBR dDo6S2V5X1NlbGVjdCA6IHJldHVybiAwOyAvLyA9IDB4MDEwMTAwMDAKKysgICAgY2FzZSBRdDo6 S2V5X1llcyA6IHJldHVybiAwOyAvLyA9IDB4MDEwMTAwMDEKKysgICAgY2FzZSBRdDo6S2V5X05v IDogcmV0dXJuIDA7IC8vID0gMHgwMTAxMDAwMgorKworICAgICBkZWZhdWx0OiBRVEVTVF9BU1NF UlQoZmFsc2UpOyByZXR1cm4gMDsKKyAgICAgfQorIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3BwIGIvcXRiYXNlL3NyYy90ZXN0bGliL3F0ZXN0cmVzdWx0 LmNwcAoraW5kZXggODgwMjhhYWM2ZS4uMmU4OTkzMDc3NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xdGVz dHJlc3VsdC5jcHAKK0BAIC0yNTEsNyArMjUxLDggQEAgYm9vbCBRVGVzdFJlc3VsdDo6dmVyaWZ5 KGJvb2wgc3RhdGVtZW50LCBjb25zdCBjaGFyICpzdGF0ZW1lbnRTdHIsCisgeworICAgICBRVEVT VF9BU1NFUlQoc3RhdGVtZW50U3RyKTsKKyAKKy0gICAgY2hhciBtc2dbMTAyNF0gPSB7J1wwJ307 CisrICAgIGNoYXIgbXNnWzEwMjRdOworKyAgICBtc2dbMF0gPSAnXDAnOworIAorICAgICBpZiAo UVRlc3RMb2c6OnZlcmJvc2VMZXZlbCgpID49IDIpIHsKKyAgICAgICAgIHFzbnByaW50Zihtc2cs IDEwMjQsICJRVkVSSUZZKCVzKSIsIHN0YXRlbWVudFN0cik7CitAQCAtMzA5LDcgKzMxMCw4IEBA IHN0YXRpYyBib29sIGNvbXBhcmVIZWxwZXIoYm9vbCBzdWNjZXNzLCBjb25zdCBjaGFyICpmYWls dXJlTXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNWYWx1ZXMgPSB0cnVl KQorIHsKKyAgICAgY29uc3Qgc2l6ZV90IG1heE1zZ0xlbiA9IDEwMjQ7CistICAgIGNoYXIgbXNn W21heE1zZ0xlbl0gPSB7J1wwJ307CisrICAgIGNoYXIgbXNnW21heE1zZ0xlbl07CisrICAgIG1z Z1swXSA9ICdcMCc7CisgCisgICAgIFFURVNUX0FTU0VSVChleHBlY3RlZCk7CisgICAgIFFURVNU X0FTU0VSVChhY3R1YWwpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dz L3Fjb2xvcmRpYWxvZy5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvZGlhbG9ncy9xY29sb3JkaWFs b2cuY3BwCitpbmRleCA0MjQ3NzMxMjc1Li5jYjMyNWJlODVjIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNwcAorKysrIGIvcXRiYXNlL3NyYy93 aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNwcAorQEAgLTc4LDcgKzc4LDEwIEBACisgI2lu Y2x1ZGUgInF3aW5kb3cuaCIKKyAKKyAjaW5jbHVkZSAicHJpdmF0ZS9xZGlhbG9nX3AuaCIKKysj aW5jbHVkZSAicHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oIgorIAorKyNpbmNsdWRlIDxxcGEv cXBsYXRmb3Jtc2VydmljZXMuaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybWludGVncmF0aW9u Lmg+CisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKK0BAIC0x NjExLDYgKzE2MTQsMjAgQEAgdm9pZCBRQ29sb3JEaWFsb2dQcml2YXRlOjpfcV9uZXdTdGFuZGFy ZChpbnQgciwgaW50IGMpCisgdm9pZCBRQ29sb3JEaWFsb2dQcml2YXRlOjpfcV9waWNrU2NyZWVu Q29sb3IoKQorIHsKKyAgICAgUV9RKFFDb2xvckRpYWxvZyk7CisrCisrICAgIGF1dG8gKnBsYXRm b3JtU2VydmljZXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9u KCktPnNlcnZpY2VzKCk7CisrICAgIGlmIChwbGF0Zm9ybVNlcnZpY2VzLT5oYXNDYXBhYmlsaXR5 KFFQbGF0Zm9ybVNlcnZpY2VzOjpDYXBhYmlsaXR5OjpDb2xvclBpY2tpbmcpKSB7CisrICAgICAg ICBpZiAoYXV0byAqY29sb3JQaWNrZXIgPSBwbGF0Zm9ybVNlcnZpY2VzLT5jb2xvclBpY2tlcihx LT53aW5kb3dIYW5kbGUoKSkpIHsKKysgICAgICAgICAgICBxLT5jb25uZWN0KGNvbG9yUGlja2Vy LCAmUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyOjpjb2xvclBpY2tlZCwgcSwKKysgICAgICAg ICAgICAgICAgICAgICAgIFtxLCBjb2xvclBpY2tlcl0oY29uc3QgUUNvbG9yICZjb2xvcikgewor KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yUGlja2VyLT5kZWxldGVMYXRlcigpOwor KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHEtPnNldEN1cnJlbnRDb2xvcihjb2xvcik7Cisr ICAgICAgICAgICAgICAgICAgICAgICB9KTsKKysgICAgICAgICAgICBjb2xvclBpY2tlci0+cGlj a0NvbG9yKCk7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICB9CisrCisg ICAgIGlmICghY29sb3JQaWNraW5nRXZlbnRGaWx0ZXIpCisgICAgICAgICBjb2xvclBpY2tpbmdF dmVudEZpbHRlciA9IG5ldyBRQ29sb3JQaWNraW5nRXZlbnRGaWx0ZXIodGhpcywgcSk7CisgICAg IHEtPmluc3RhbGxFdmVudEZpbHRlcihjb2xvclBpY2tpbmdFdmVudEZpbHRlcik7CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJhY3RpdGVtZGVsZWdhdGUu Y3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJhY3RpdGVtZGVsZWdhdGUu Y3BwCitpbmRleCBlMTIwODE3ZWRjLi44ZWEzNmI1NDI3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy93aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJhY3RpdGVtZGVsZWdhdGUuY3BwCisrKysgYi9xdGJh c2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FhYnN0cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAKK0BAIC00 MDAsMTIgKzQwMCw3IEBAIGJvb2wgUUFic3RyYWN0SXRlbURlbGVnYXRlOjpoZWxwRXZlbnQoUUhl bHBFdmVudCAqZXZlbnQsCisgICAgICAgICBjb25zdCBRU3RyaW5nIHRvb2x0aXAgPSBpbmRleC5p c1ZhbGlkKCkgPworICAgICAgICAgICAgICAgZC0+dGV4dEZvclJvbGUoUXQ6OlRvb2xUaXBSb2xl LCBpbmRleC5kYXRhKFF0OjpUb29sVGlwUm9sZSksIG9wdGlvbi5sb2NhbGUsIHByZWNpc2lvbikg OgorICAgICAgICAgICAgICAgUVN0cmluZygpOworLSAgICAgICAgUVJlY3QgcmVjdDsKKy0gICAg ICAgIGlmIChpbmRleC5pc1ZhbGlkKCkpIHsKKy0gICAgICAgICAgICBjb25zdCBRUmVjdCByID0g dmlldy0+dmlzdWFsUmVjdChpbmRleCk7CistICAgICAgICAgICAgcmVjdCA9IFFSZWN0KHZpZXct Pm1hcFRvR2xvYmFsKHIudG9wTGVmdCgpKSwgci5zaXplKCkpOworLSAgICAgICAgfQorLSAgICAg ICAgUVRvb2xUaXA6OnNob3dUZXh0KGhlLT5nbG9iYWxQb3MoKSwgdG9vbHRpcCwgdmlldywgcmVj dCk7CisrICAgICAgICBRVG9vbFRpcDo6c2hvd1RleHQoaGUtPmdsb2JhbFBvcygpLCB0b29sdGlw LCB2aWV3LT52aWV3cG9ydCgpLCBvcHRpb24ucmVjdCk7CisgICAgICAgICBldmVudC0+c2V0QWNj ZXB0ZWQoIXRvb2x0aXAuaXNFbXB0eSgpKTsKKyAgICAgICAgIGJyZWFrOworICAgICAgICAgfQor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNwcCBi L3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNwcAoraW5kZXggMmIzNDQ3 NjY0Mi4uZWViZmFhMDMwZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmll d3MvcWxpc3R2aWV3LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xbGlz dHZpZXcuY3BwCitAQCAtMzM4Niw2ICszMzg2LDcgQEAgdm9pZCBRSWNvbk1vZGVWaWV3QmFzZTo6 dXBkYXRlQ29udGVudHNTaXplKCkKKyAqLworIHZvaWQgUUxpc3RWaWV3OjpjdXJyZW50Q2hhbmdl ZChjb25zdCBRTW9kZWxJbmRleCAmY3VycmVudCwgY29uc3QgUU1vZGVsSW5kZXggJnByZXZpb3Vz KQorIHsKKysgICAgUUFic3RyYWN0SXRlbVZpZXc6OmN1cnJlbnRDaGFuZ2VkKGN1cnJlbnQsIHBy ZXZpb3VzKTsKKyAjaWZuZGVmIFFUX05PX0FDQ0VTU0lCSUxJVFkKKyAgICAgaWYgKFFBY2Nlc3Np YmxlOjppc0FjdGl2ZSgpKSB7CisgICAgICAgICBpZiAoY3VycmVudC5pc1ZhbGlkKCkpIHsKK0BA IC0zMzk2LDcgKzMzOTcsNiBAQCB2b2lkIFFMaXN0Vmlldzo6Y3VycmVudENoYW5nZWQoY29uc3Qg UU1vZGVsSW5kZXggJmN1cnJlbnQsIGNvbnN0IFFNb2RlbEluZGV4ICZwcgorICAgICAgICAgfQor ICAgICB9CisgI2VuZGlmCistICAgIFFBYnN0cmFjdEl0ZW1WaWV3OjpjdXJyZW50Q2hhbmdlZChj dXJyZW50LCBwcmV2aW91cyk7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv d2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRl bXZpZXdzL3F0YWJsZXZpZXcuY3BwCitpbmRleCA5MzRhYzU4MWIyLi5mNzliYjI0MjQ5IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3LmNwcAorKysr IGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3LmNwcAorQEAgLTEwMTMs NiArMTAxMyw3IEBAIHZvaWQgUVRhYmxlVmlld1ByaXZhdGU6OmRyYXdDZWxsKFFQYWludGVyICpw YWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25WaWV3SXRlbSAmCisgaW50IFFUYWJsZVZpZXdQcml2 YXRlOjp3aWR0aEhpbnRGb3JJbmRleChjb25zdCBRTW9kZWxJbmRleCAmaW5kZXgsIGludCBoaW50 LCBjb25zdCBRU3R5bGVPcHRpb25WaWV3SXRlbSAmb3B0aW9uKSBjb25zdAorIHsKKyAgICAgUV9R KGNvbnN0IFFUYWJsZVZpZXcpOworKyAgICBjb25zdCBpbnQgb2xkSGludCA9IGhpbnQ7CisgICAg IFFXaWRnZXQgKmVkaXRvciA9IGVkaXRvckZvckluZGV4KGluZGV4KS53aWRnZXQuZGF0YSgpOwor ICAgICBpZiAoZWRpdG9yICYmIHBlcnNpc3RlbnQuY29udGFpbnMoZWRpdG9yKSkgeworICAgICAg ICAgaGludCA9IHFNYXgoaGludCwgZWRpdG9yLT5zaXplSGludCgpLndpZHRoKCkpOworQEAgLTEw MjEsNiArMTAyMiwxNyBAQCBpbnQgUVRhYmxlVmlld1ByaXZhdGU6OndpZHRoSGludEZvckluZGV4 KGNvbnN0IFFNb2RlbEluZGV4ICZpbmRleCwgaW50IGhpbnQsIGNvbgorICAgICAgICAgaGludCA9 IHFCb3VuZChtaW4sIGhpbnQsIG1heCk7CisgICAgIH0KKyAgICAgaGludCA9IHFNYXgoaGludCwg cS0+aXRlbURlbGVnYXRlKGluZGV4KS0+c2l6ZUhpbnQob3B0aW9uLCBpbmRleCkud2lkdGgoKSk7 CisrCisrICAgIGlmIChoYXNTcGFucygpKSB7CisrICAgICAgICBhdXRvIHNwYW4gPSBzcGFucy5z cGFuQXQoaW5kZXguY29sdW1uKCksIGluZGV4LnJvdygpKTsKKysgICAgICAgIGlmIChzcGFuICYm IHNwYW4tPm1fbGVmdCA9PSBpbmRleC5jb2x1bW4oKSAmJiBzcGFuLT5tX3RvcCA9PSBpbmRleC5y b3coKSkgeworKyAgICAgICAgICAgIC8vIHNwYW5zIGFyZSBzY3Jld2VkIHVwIHdoZW4gc2VjdGlv bnMgYXJlIG1vdmVkCisrICAgICAgICAgICAgY29uc3QgYXV0byBsZWZ0ID0gbG9naWNhbENvbHVt bihzcGFuLT5tX2xlZnQpOworKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHNwYW4t PndpZHRoKCk7ICsraSkKKysgICAgICAgICAgICAgICBoaW50IC09IHEtPmNvbHVtbldpZHRoKHZp c3VhbENvbHVtbihsZWZ0ICsgaSkpOworKyAgICAgICAgfQorKyAgICAgICAgaGludCA9IHN0ZDo6 bWF4KGhpbnQsIG9sZEhpbnQpOworKyAgICB9CisgICAgIHJldHVybiBoaW50OworIH0KKyAKK0BA IC0xMDUzLDYgKzEwNjUsMTEgQEAgaW50IFFUYWJsZVZpZXdQcml2YXRlOjpoZWlnaHRIaW50Rm9y SW5kZXgoY29uc3QgUU1vZGVsSW5kZXggJmluZGV4LCBpbnQgaGludCwgUVMKKyAgICAgICAgIG9w dGlvbi5yZWN0LnNldEhlaWdodChoZWlnaHQpOworICAgICAgICAgb3B0aW9uLnJlY3Quc2V0WChx LT5jb2x1bW5WaWV3cG9ydFBvc2l0aW9uKGluZGV4LmNvbHVtbigpKSk7CisgICAgICAgICBvcHRp b24ucmVjdC5zZXRXaWR0aChxLT5jb2x1bW5XaWR0aChpbmRleC5jb2x1bW4oKSkpOworKyAgICAg ICAgaWYgKGhhc1NwYW5zKCkpIHsKKysgICAgICAgICAgICBhdXRvIHNwYW4gPSBzcGFucy5zcGFu QXQoaW5kZXguY29sdW1uKCksIGluZGV4LnJvdygpKTsKKysgICAgICAgICAgICBpZiAoc3BhbiAm JiBzcGFuLT5tX2xlZnQgPT0gaW5kZXguY29sdW1uKCkgJiYgc3Bhbi0+bV90b3AgPT0gaW5kZXgu cm93KCkpCisrICAgICAgICAgICAgICAgIG9wdGlvbi5yZWN0LnNldFdpZHRoKHN0ZDo6bWF4KG9w dGlvbi5yZWN0LndpZHRoKCksIHZpc3VhbFNwYW5SZWN0KCpzcGFuKS53aWR0aCgpKSk7CisrICAg ICAgICB9CisgICAgICAgICAvLyAxcHggbGVzcyBzcGFjZSB3aGVuIGdyaWQgaXMgc2hvd24gKHNl ZSBkcmF3Q2VsbCkKKyAgICAgICAgIGlmIChzaG93R3JpZCkKKyAgICAgICAgICAgICBvcHRpb24u cmVjdC5zZXRXaWR0aChvcHRpb24ucmVjdC53aWR0aCgpIC0gMSk7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmggYi9xdGJhc2Uvc3JjL3dpZGdldHMva2Vy bmVsL3FhY3Rpb24uaAoraW5kZXggMjU4YTFlYTBhMC4uNzM3YzFlODI4NSAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcWFjdGlvbi5oCisrKysgYi9xdGJhc2Uvc3JjL3dp ZGdldHMva2VybmVsL3FhY3Rpb24uaAorQEAgLTgxLDcgKzgxLDcgQEAgY2xhc3MgUV9XSURHRVRT X0VYUE9SVCBRQWN0aW9uIDogcHVibGljIFFPYmplY3QKKyAgICAgUV9QUk9QRVJUWShNZW51Um9s ZSBtZW51Um9sZSBSRUFEIG1lbnVSb2xlIFdSSVRFIHNldE1lbnVSb2xlIE5PVElGWSBjaGFuZ2Vk KQorICAgICBRX1BST1BFUlRZKGJvb2wgaWNvblZpc2libGVJbk1lbnUgUkVBRCBpc0ljb25WaXNp YmxlSW5NZW51IFdSSVRFIHNldEljb25WaXNpYmxlSW5NZW51IE5PVElGWSBjaGFuZ2VkKQorICAg ICBRX1BST1BFUlRZKGJvb2wgc2hvcnRjdXRWaXNpYmxlSW5Db250ZXh0TWVudSBSRUFEIGlzU2hv cnRjdXRWaXNpYmxlSW5Db250ZXh0TWVudSBXUklURSBzZXRTaG9ydGN1dFZpc2libGVJbkNvbnRl eHRNZW51IE5PVElGWSBjaGFuZ2VkKQorLSAgICBRX1BST1BFUlRZKFByaW9yaXR5IHByaW9yaXR5 IFJFQUQgcHJpb3JpdHkgV1JJVEUgc2V0UHJpb3JpdHkpCisrICAgIFFfUFJPUEVSVFkoUHJpb3Jp dHkgcHJpb3JpdHkgUkVBRCBwcmlvcml0eSBXUklURSBzZXRQcmlvcml0eSBOT1RJRlkgY2hhbmdl ZCkKKyAKKyBwdWJsaWM6CisgICAgIC8vIG5vdGUgdGhpcyBpcyBjb3BpZWQgaW50byBxcGxhdGZv cm1tZW51LmgsIHdoaWNoIG11c3Qgc3RheSBpbiBzeW5jCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwv cXdpZGdldC5jcHAKK2luZGV4IDllYmExZTAwMWUuLjI2ZjZkMjdlMTggMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dp ZGdldHMva2VybmVsL3F3aWRnZXQuY3BwCitAQCAtNTI5Niw3ICs1Mjk2LDcgQEAgdm9pZCBRV2lk Z2V0UHJpdmF0ZTo6ZHJhd1dpZGdldChRUGFpbnREZXZpY2UgKnBkZXYsIGNvbnN0IFFSZWdpb24g JnJnbiwgY29uc3QgUVAKKyAgICAgICAgIFFXaWRnZXRFZmZlY3RTb3VyY2VQcml2YXRlICpzb3Vy Y2VkID0gc3RhdGljX2Nhc3Q8UVdpZGdldEVmZmVjdFNvdXJjZVByaXZhdGUgKj4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc291cmNl LT5kX2Z1bmMoKSk7CisgICAgICAgICBpZiAoIXNvdXJjZWQtPmNvbnRleHQpIHsKKy0gICAgICAg ICAgICBjb25zdCBRUmVnaW9uIGVmZmVjdFJnbihyZ24uYm91bmRpbmdSZWN0KCkpOworKyAgICAg ICAgICAgIGNvbnN0IFFSZWdpb24gZWZmZWN0UmduKChmbGFncyAmIFVzZUVmZmVjdFJlZ2lvbkJv dW5kcykgPyByZ24uYm91bmRpbmdSZWN0KCkgOiByZ24pOworICAgICAgICAgICAgIFFXaWRnZXRQ YWludENvbnRleHQgY29udGV4dChwZGV2LCBlZmZlY3RSZ24sIG9mZnNldCwgZmxhZ3MsIHNoYXJl ZFBhaW50ZXIsIHJlcGFpbnRNYW5hZ2VyKTsKKyAgICAgICAgICAgICBzb3VyY2VkLT5jb250ZXh0 ID0gJmNvbnRleHQ7CisgICAgICAgICAgICAgaWYgKCFzaGFyZWRQYWludGVyKSB7CitAQCAtNTMy OCw2ICs1MzI4LDcgQEAgdm9pZCBRV2lkZ2V0UHJpdmF0ZTo6ZHJhd1dpZGdldChRUGFpbnREZXZp Y2UgKnBkZXYsIGNvbnN0IFFSZWdpb24gJnJnbiwgY29uc3QgUVAKKyAgICAgICAgIH0KKyAgICAg fQorICNlbmRpZiAvLyBRVF9DT05GSUcoZ3JhcGhpY3NlZmZlY3QpCisrICAgIGZsYWdzID0gZmxh Z3MgJiB+VXNlRWZmZWN0UmVnaW9uQm91bmRzOworIAorICAgICBjb25zdCBib29sIGFsc29PblNj cmVlbiA9IGZsYWdzICYgRHJhd1BhaW50T25TY3JlZW47CisgICAgIGNvbnN0IGJvb2wgcmVjdXJz aXZlID0gZmxhZ3MgJiBEcmF3UmVjdXJzaXZlOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lk Z2V0cy9rZXJuZWwvcXdpZGdldF9wLmggYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRn ZXRfcC5oCitpbmRleCBlZWY2YjhmYTJjLi5jNDMyZjRiNWQ1IDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRz L2tlcm5lbC9xd2lkZ2V0X3AuaAorQEAgLTIyOSw3ICsyMjksOCBAQCBwdWJsaWM6CisgICAgICAg ICBEb250U3VidHJhY3RPcGFxdWVDaGlsZHJlbiA9IDB4MTAsCisgICAgICAgICBEb250RHJhd09w YXF1ZUNoaWxkcmVuID0gMHgyMCwKKyAgICAgICAgIERvbnREcmF3TmF0aXZlQ2hpbGRyZW4gPSAw eDQwLAorLSAgICAgICAgRG9udFNldENvbXBvc2l0aW9uTW9kZSA9IDB4ODAKKysgICAgICAgIERv bnRTZXRDb21wb3NpdGlvbk1vZGUgPSAweDgwLAorKyAgICAgICAgVXNlRWZmZWN0UmVnaW9uQm91 bmRzID0gMHgxMDAKKyAgICAgfTsKKyAgICAgUV9ERUNMQVJFX0ZMQUdTKERyYXdXaWRnZXRGbGFn cywgRHJhd1dpZGdldEZsYWcpCisgICAgIFFfRkxBRyhEcmF3V2lkZ2V0RmxhZ3MpCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWludG1hbmFnZXIuY3Bw IGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWludG1hbmFnZXIuY3BwCitp bmRleCAwMjg4MGIzNGRhLi4wZDQ0ZTEzMjZkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRn ZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWludG1hbmFnZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dp ZGdldHMva2VybmVsL3F3aWRnZXRyZXBhaW50bWFuYWdlci5jcHAKK0BAIC0xMDE4LDcgKzEwMTgs OCBAQCB2b2lkIFFXaWRnZXRSZXBhaW50TWFuYWdlcjo6cGFpbnRBbmRGbHVzaCgpCisgCisgICAg IC8vIFBhaW50IHRoZSByZXN0IHdpdGggY29tcG9zaXRpb24uCisgICAgIGlmIChyZXBhaW50QWxs V2lkZ2V0cyB8fCAhZGlydHlDb3B5LmlzRW1wdHkoKSkgeworLSAgICAgICAgUVdpZGdldFByaXZh dGU6OkRyYXdXaWRnZXRGbGFncyBmbGFncyA9IFFXaWRnZXRQcml2YXRlOjpEcmF3QXNSb290IHwg UVdpZGdldFByaXZhdGU6OkRyYXdSZWN1cnNpdmU7CisrICAgICAgICBRV2lkZ2V0UHJpdmF0ZTo6 RHJhd1dpZGdldEZsYWdzIGZsYWdzID0gUVdpZGdldFByaXZhdGU6OkRyYXdBc1Jvb3QgfCBRV2lk Z2V0UHJpdmF0ZTo6RHJhd1JlY3Vyc2l2ZQorKyAgICAgICAgICAgICAgICB8IFFXaWRnZXRQcml2 YXRlOjpVc2VFZmZlY3RSZWdpb25Cb3VuZHM7CisgICAgICAgICB0bHctPmRfZnVuYygpLT5kcmF3 V2lkZ2V0KHN0b3JlLT5wYWludERldmljZSgpLCBkaXJ0eUNvcHksIFFQb2ludCgpLCBmbGFncywg bnVsbHB0ciwgdGhpcyk7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdl dHMvc3R5bGVzL3FmdXNpb25zdHlsZS5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVzL3Fm dXNpb25zdHlsZS5jcHAKK2luZGV4IGY0MzQ1ZDk3YzQuLjk2MjkxMmM4MzggMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVzL3FmdXNpb25zdHlsZS5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1c2lvbnN0eWxlLmNwcAorQEAgLTE3NzIsMTQgKzE3NzIs NiBAQCB2b2lkIFFGdXNpb25TdHlsZTo6ZHJhd0NvbnRyb2woQ29udHJvbEVsZW1lbnQgZWxlbWVu dCwgY29uc3QgUVN0eWxlT3B0aW9uICpvcHRpbworICAgICAgICAgICAgIHByb3h5KCktPmRyYXdD b250cm9sKENFX1B1c2hCdXR0b25MYWJlbCwgJnN1Ym9wdCwgcGFpbnRlciwgd2lkZ2V0KTsKKyAg ICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIENFX1B1c2hCdXR0b25MYWJlbDoK Ky0gICAgICAgIGlmIChjb25zdCBRU3R5bGVPcHRpb25CdXR0b24gKmJ1dHRvbiA9IHFzdHlsZW9w dGlvbl9jYXN0PGNvbnN0IFFTdHlsZU9wdGlvbkJ1dHRvbiAqPihvcHRpb24pKSB7CistICAgICAg ICAgICAgUVN0eWxlT3B0aW9uQnV0dG9uIGIoKmJ1dHRvbik7CistICAgICAgICAgICAgLy8gbm8g UE1fQnV0dG9uU2hpZnRIb3Jpem9udGFsIGFuZCBQTV9CdXR0b25TaGlmdFZlcnRpY2FsIGZvciBm dXNpb24gc3R5bGUKKy0gICAgICAgICAgICBiLnN0YXRlICY9IH4oU3RhdGVfT24gfCBTdGF0ZV9T dW5rZW4pOworLSAgICAgICAgICAgIFFDb21tb25TdHlsZTo6ZHJhd0NvbnRyb2woZWxlbWVudCwg JmIsIHBhaW50ZXIsIHdpZGdldCk7CistICAgICAgICB9CistICAgICAgICBicmVhazsKKyAgICAg Y2FzZSBDRV9NZW51QmFyRW1wdHlBcmVhOgorICAgICAgICAgcGFpbnRlci0+c2F2ZSgpOworICAg ICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3V0aWwvcWNvbXBsZXRlci5jcHAg Yi9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNwcAoraW5kZXggMThiMjQwNjNk OC4uZWY3MjA3YThhMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy91dGlsL3Fjb21w bGV0ZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNwcAor QEAgLTExMjAsNiArMTEyMCw4IEBAIHZvaWQgUUNvbXBsZXRlcjo6c2V0TW9kZWwoUUFic3RyYWN0 SXRlbU1vZGVsICptb2RlbCkKKyB7CisgICAgIFFfRChRQ29tcGxldGVyKTsKKyAgICAgUUFic3Ry YWN0SXRlbU1vZGVsICpvbGRNb2RlbCA9IGQtPnByb3h5LT5zb3VyY2VNb2RlbCgpOworKyAgICBp ZiAob2xkTW9kZWwgPT0gbW9kZWwpCisrICAgICAgICByZXR1cm47CisgI2lmIFFUX0NPTkZJRyhm aWxlc3lzdGVtbW9kZWwpCisgICAgIGlmIChxb2JqZWN0X2Nhc3Q8Y29uc3QgUUZpbGVTeXN0ZW1N b2RlbCAqPihvbGRNb2RlbCkpCisgICAgICAgICBzZXRDb21wbGV0aW9uUm9sZShRdDo6RWRpdFJv bGUpOyAvLyBRVEJVRy01NDY0MiwgY2xlYXIgRmlsZU5hbWVSb2xlIHNldCBieSBRRmlsZVN5c3Rl bU1vZGVsCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0 YnV0dG9uLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi5j cHAKK2luZGV4IGExMjhiMjM5NTAuLmRjNDBiZjYyZmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dp ZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3BwCitAQCAtNTYsNiArNTYsNyBAQAorICNp Zm5kZWYgUVRfTk9fQUNDRVNTSUJJTElUWQorICNpbmNsdWRlICJxYWNjZXNzaWJsZS5oIgorICNl bmRpZgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAKKyAjaW5jbHVkZSA8YWxn b3JpdGhtPgorIAorQEAgLTEwNzYsMTkgKzEwNzcsMTkgQEAgdm9pZCBRQWJzdHJhY3RCdXR0b246 OmtleVByZXNzRXZlbnQoUUtleUV2ZW50ICplKQorIHsKKyAgICAgUV9EKFFBYnN0cmFjdEJ1dHRv bik7CisgICAgIGJvb2wgbmV4dCA9IHRydWU7CistICAgIHN3aXRjaCAoZS0+a2V5KCkpIHsKKy0g ICAgY2FzZSBRdDo6S2V5X0VudGVyOgorLSAgICBjYXNlIFF0OjpLZXlfUmV0dXJuOgorLSAgICAg ICAgZS0+aWdub3JlKCk7CistICAgICAgICBicmVhazsKKy0gICAgY2FzZSBRdDo6S2V5X1NlbGVj dDoKKy0gICAgY2FzZSBRdDo6S2V5X1NwYWNlOgorLSAgICAgICAgaWYgKCFlLT5pc0F1dG9SZXBl YXQoKSkgeworLSAgICAgICAgICAgIHNldERvd24odHJ1ZSk7CistICAgICAgICAgICAgcmVwYWlu dCgpOworLSAgICAgICAgICAgIGQtPmVtaXRQcmVzc2VkKCk7CistICAgICAgICB9CistICAgICAg ICBicmVhazsKKysKKysgICAgY29uc3QgYXV0byBrZXkgPSBzdGF0aWNfY2FzdDxRdDo6S2V5Pihl LT5rZXkoKSk7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0 aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlz KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0 PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKGtleSkgJiYg IWUtPmlzQXV0b1JlcGVhdCgpKSB7CisrICAgICAgICBzZXREb3duKHRydWUpOworKyAgICAgICAg cmVwYWludCgpOworKyAgICAgICAgZC0+ZW1pdFByZXNzZWQoKTsKKysgICAgICAgIHJldHVybjsK KysgICAgfQorKworKyAgICBzd2l0Y2ggKGtleSkgeworICAgICBjYXNlIFF0OjpLZXlfVXA6Cisg ICAgICAgICBuZXh0ID0gZmFsc2U7CisgICAgICAgICBRX0ZBTExUSFJPVUdIKCk7CitAQCAtMTE1 MywxNSArMTE1NCwxNSBAQCB2b2lkIFFBYnN0cmFjdEJ1dHRvbjo6a2V5UmVsZWFzZUV2ZW50KFFL ZXlFdmVudCAqZSkKKyAgICAgaWYgKCFlLT5pc0F1dG9SZXBlYXQoKSkKKyAgICAgICAgIGQtPnJl cGVhdFRpbWVyLnN0b3AoKTsKKyAKKy0gICAgc3dpdGNoIChlLT5rZXkoKSkgeworLSAgICBjYXNl IFF0OjpLZXlfU2VsZWN0OgorLSAgICBjYXNlIFF0OjpLZXlfU3BhY2U6CistICAgICAgICBpZiAo IWUtPmlzQXV0b1JlcGVhdCgpICYmIGQtPmRvd24pCistICAgICAgICAgICAgZC0+Y2xpY2soKTsK Ky0gICAgICAgIGJyZWFrOworLSAgICBkZWZhdWx0OgorLSAgICAgICAgZS0+aWdub3JlKCk7Cisr ICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6 cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+Pigp OworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKHN0YXRpY19jYXN0PFF0OjpLZXk+ KGUtPmtleSgpKSkgJiYgIWUtPmlzQXV0b1JlcGVhdCgpICYmIGQtPmRvd24pIHsKKysgICAgICAg IGQtPmNsaWNrKCk7CisrICAgICAgICByZXR1cm47CisgICAgIH0KKysKKysgICAgZS0+aWdub3Jl KCk7CisgfQorIAorIC8qIVxyZWltcAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93 aWRnZXRzL3Fjb21ib2JveC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9i b3guY3BwCitpbmRleCA3YTQ5NmMyN2UwLi4wYTNkOTY2NDdiIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRn ZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcAorQEAgLTMzNTIsNyArMzM1MiwyMyBAQCB2b2lkIFFD b21ib0JveDo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQgKmUpCisgCisgICAgIE1vdmUgbW92ZSA9 IE5vTW92ZTsKKyAgICAgaW50IG5ld0luZGV4ID0gY3VycmVudEluZGV4KCk7CistICAgIHN3aXRj aCAoZS0+a2V5KCkpIHsKKysKKysgICAgYm9vbCBwcmVzc0xpa2VCdXR0b24gPSAhZC0+bGluZUVk aXQ7CisrI2lmZGVmIFFUX0tFWVBBRF9OQVZJR0FUSU9OCisrICAgIHByZXNzTGlrZUJ1dHRvbiB8 PSBRQXBwbGljYXRpb25Qcml2YXRlOjprZXlwYWROYXZpZ2F0aW9uRW5hYmxlZCgpICYmICFoYXNF ZGl0Rm9jdXMoKTsKKysjZW5kaWYKKysgICAgYXV0byBrZXkgPSBzdGF0aWNfY2FzdDxRdDo6S2V5 PihlLT5rZXkoKSk7CisrICAgIGlmIChwcmVzc0xpa2VCdXR0b24pIHsKKysgICAgICAgIGNvbnN0 IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1U aGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50 aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7 CisrICAgICAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKGtleSkpIHsKKysgICAgICAg ICAgICBzaG93UG9wdXAoKTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisrICAg IH0KKysKKysgICAgc3dpdGNoIChrZXkpIHsKKyAgICAgY2FzZSBRdDo6S2V5X1VwOgorICAgICAg ICAgaWYgKGUtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmllcikKKyAgICAgICAgICAg ICBicmVhazsgLy8gcGFzcyB0byBsaW5lIGVkaXQgZm9yIGF1dG8gY29tcGxldGlvbgorQEAgLTMz OTQsMjYgKzM0MTAsMTEgQEAgdm9pZCBRQ29tYm9Cb3g6OmtleVByZXNzRXZlbnQoUUtleUV2ZW50 ICplKQorICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOwor LSAgICBjYXNlIFF0OjpLZXlfU3BhY2U6CistICAgICAgICBpZiAoIWQtPmxpbmVFZGl0KSB7Cist ICAgICAgICAgICAgc2hvd1BvcHVwKCk7CistICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAg fQorLSAgICAgICAgYnJlYWs7CistICAgIGNhc2UgUXQ6OktleV9FbnRlcjoKKy0gICAgY2FzZSBR dDo6S2V5X1JldHVybjoKKyAgICAgY2FzZSBRdDo6S2V5X0VzY2FwZToKKyAgICAgICAgIGlmICgh ZC0+bGluZUVkaXQpCisgICAgICAgICAgICAgZS0+aWdub3JlKCk7CisgICAgICAgICBicmVhazsK KyAjaWZkZWYgUVRfS0VZUEFEX05BVklHQVRJT04KKy0gICAgY2FzZSBRdDo6S2V5X1NlbGVjdDoK Ky0gICAgICAgIGlmIChRQXBwbGljYXRpb25Qcml2YXRlOjprZXlwYWROYXZpZ2F0aW9uRW5hYmxl ZCgpCistICAgICAgICAgICAgICAgICYmICghaGFzRWRpdEZvY3VzKCkgfHwgIWQtPmxpbmVFZGl0 KSkgeworLSAgICAgICAgICAgIHNob3dQb3B1cCgpOworLSAgICAgICAgICAgIHJldHVybjsKKy0g ICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworICAgICBjYXNlIFF0OjpLZXlfTGVmdDoKKyAgICAg Y2FzZSBRdDo6S2V5X1JpZ2h0OgorICAgICAgICAgaWYgKFFBcHBsaWNhdGlvblByaXZhdGU6Omtl eXBhZE5hdmlnYXRpb25FbmFibGVkKCkgJiYgIWhhc0VkaXRGb2N1cygpKQorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRldGltZWVkaXRfcC5oIGIvcXRiYXNlL3Ny Yy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRpdF9wLmgKK2luZGV4IGQzNmI2ZjhmOWEuLmUw ZGY1YjUxNTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZGF0ZXRp bWVlZGl0X3AuaAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRp dF9wLmgKK0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBD b3B5cmlnaHQgKEMpIDIwMTggVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykg MjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8v bGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0V2lkZ2V0cyBt b2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRz L3dpZGdldHMvcWdyb3VwYm94LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fncm91 cGJveC5jcHAKK2luZGV4IDAyYTBiZWQzMjUuLjNmM2VjY2MzNzAgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dp ZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3BwCitAQCAtNTQsNiArNTQsOCBAQAorICNpbmNsdWRl ICJxYWNjZXNzaWJsZS5oIgorICNlbmRpZgorICNpbmNsdWRlIDxwcml2YXRlL3F3aWRnZXRfcC5o PgorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmg+CisrI2luY2x1ZGUgPHFw YS9xcGxhdGZvcm10aGVtZS5oPgorIAorICNpbmNsdWRlICJxZGVidWcuaCIKKyAKK0BAIC0zNjAs NyArMzYyLDEwIEBAIGJvb2wgUUdyb3VwQm94OjpldmVudChRRXZlbnQgKmUpCisgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgY2FzZSBRRXZlbnQ6OktleVByZXNzOiB7CisgICAgICAgICBRS2V5 RXZlbnQgKmsgPSBzdGF0aWNfY2FzdDxRS2V5RXZlbnQqPihlKTsKKy0gICAgICAgIGlmICghay0+ aXNBdXRvUmVwZWF0KCkgJiYgKGstPmtleSgpID09IFF0OjpLZXlfU2VsZWN0IHx8IGstPmtleSgp ID09IFF0OjpLZXlfU3BhY2UpKSB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5 cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRo ZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAgaWYgKCFrLT5p c0F1dG9SZXBlYXQoKSAmJiBidXR0b25QcmVzc0tleXMuY29udGFpbnMoc3RhdGljX2Nhc3Q8UXQ6 OktleT4oay0+a2V5KCkpKSkgeworICAgICAgICAgICAgIGQtPnByZXNzZWRDb250cm9sID0gUVN0 eWxlOjpTQ19Hcm91cEJveENoZWNrQm94OworICAgICAgICAgICAgIHVwZGF0ZShzdHlsZSgpLT5z dWJDb250cm9sUmVjdChRU3R5bGU6OkNDX0dyb3VwQm94LCAmYm94LCBRU3R5bGU6OlNDX0dyb3Vw Qm94Q2hlY2tCb3gsIHRoaXMpKTsKKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKK0BAIC0zNjks NyArMzc0LDEwIEBAIGJvb2wgUUdyb3VwQm94OjpldmVudChRRXZlbnQgKmUpCisgICAgIH0KKyAg ICAgY2FzZSBRRXZlbnQ6OktleVJlbGVhc2U6IHsKKyAgICAgICAgIFFLZXlFdmVudCAqayA9IHN0 YXRpY19jYXN0PFFLZXlFdmVudCo+KGUpOworLSAgICAgICAgaWYgKCFrLT5pc0F1dG9SZXBlYXQo KSAmJiAoay0+a2V5KCkgPT0gUXQ6OktleV9TZWxlY3QgfHwgay0+a2V5KCkgPT0gUXQ6OktleV9T cGFjZSkpIHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxp Y2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblBy ZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu dmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoIWstPmlzQXV0b1JlcGVhdCgp ICYmIGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhzdGF0aWNfY2FzdDxRdDo6S2V5PihrLT5rZXko KSkpKSB7CisgICAgICAgICAgICAgYm9vbCB0b2dnbGUgPSAoZC0+cHJlc3NlZENvbnRyb2wgPT0g UVN0eWxlOjpTQ19Hcm91cEJveExhYmVsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwg ZC0+cHJlc3NlZENvbnRyb2wgPT0gUVN0eWxlOjpTQ19Hcm91cEJveENoZWNrQm94KTsKKyAgICAg ICAgICAgICBkLT5wcmVzc2VkQ29udHJvbCA9IFFTdHlsZTo6U0NfTm9uZTsKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xbGFiZWwuY3BwIGIvcXRiYXNlL3NyYy93aWRn ZXRzL3dpZGdldHMvcWxhYmVsLmNwcAoraW5kZXggMzBmZjgwY2JiMC4uY2YyNjA1YzE3YyAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAKK0BAIC00MjEsOSArNDIxLDYgQEAg dm9pZCBRTGFiZWw6OnNldFBpeG1hcChjb25zdCBRUGl4bWFwICZwaXhtYXApCisgICAgICAgICBk LT5waXhtYXAgPSBuZXcgUVBpeG1hcChwaXhtYXApOworICAgICB9CisgCistICAgIGlmIChkLT5w aXhtYXAtPmRlcHRoKCkgPT0gMSAmJiAhZC0+cGl4bWFwLT5tYXNrKCkpCistICAgICAgICBkLT5w aXhtYXAtPnNldE1hc2soKigoUUJpdG1hcCAqKWQtPnBpeG1hcCkpOworLQorICAgICBkLT51cGRh dGVMYWJlbCgpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0 cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcXRv b2xiYXJhcmVhbGF5b3V0LmNwcAoraW5kZXggNDkzYzA5NGNjMS4uZDVmNGI1OTAxNyAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0b29sYmFyYXJlYWxheW91dC5jcHAK KysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0b29sYmFyYXJlYWxheW91dC5jcHAK K0BAIC0xMzY3LDcgKzEzNjcsNyBAQCBib29sIFFUb29sQmFyQXJlYUxheW91dDo6cmVzdG9yZVN0 YXRlKFFEYXRhU3RyZWFtICZzdHJlYW0sIGNvbnN0IFFMaXN0PFFUb29sQmFyKgorICAgICAgICAg ICAgICAgICBpdGVtLndpZGdldEl0ZW0gPSBuZXcgUVdpZGdldEl0ZW1WMih0b29sQmFyKTsKKyAg ICAgICAgICAgICAgICAgdG9vbEJhci0+c2V0T3JpZW50YXRpb24oZmxvYXRpbmcgPyAoKHNob3du ICYgMikgPyBRdDo6VmVydGljYWwgOiBRdDo6SG9yaXpvbnRhbCkgOiBkb2NrLm8pOworICAgICAg ICAgICAgICAgICB0b29sQmFyLT5zZXRWaXNpYmxlKHNob3duICYgMSk7CistICAgICAgICAgICAg ICAgIHRvb2xCYXItPmRfZnVuYygpLT5zZXRXaW5kb3dTdGF0ZShmbG9hdGluZywgdHJ1ZSwgcmVj dCk7CisrICAgICAgICAgICAgICAgIHRvb2xCYXItPmRfZnVuYygpLT5zZXRXaW5kb3dTdGF0ZShm bG9hdGluZywgZmFsc2UsIHJlY3QpOworIAorICAgICAgICAgICAgICAgICBpdGVtLnByZWZlcnJl ZFNpemUgPSBpdGVtLnNpemU7CisgICAgICAgICAgICAgICAgIGxpbmUudG9vbEJhckl0ZW1zLmFw cGVuZChpdGVtKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0 Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwuY3Bw IGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVs L3RzdF9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsLmNwcAoraW5kZXggMjEyYzBhMmUxMy4uM2M3 N2IxYmEwYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25j dXJyZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC5jcHAKKysr KyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5l bC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC5jcHAKK0BAIC0xMjYsOCArMTI2LDcgQEAg cHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6Omluc3RhbnRp YXRlKCkKKyB7CistICAgIGF1dG8gZnV0dXJlID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IFByaW50 Rm9yKDAsIDQwKSkuc3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICBmdXR1cmUud2FpdEZvckZp bmlzaGVkKCk7CisrICAgIHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBQcmludEZvcigwLCA0MCkpLnN0 YXJ0QmxvY2tpbmcoKTsKKyAgICAgUUNPTVBBUkUoaXRlcmF0aW9ucy5sb2FkUmVsYXhlZCgpLCA0 MCk7CisgfQorIAorQEAgLTE2NiwxMCArMTY1LDggQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRl cmF0ZUtlcm5lbDo6c3RyZXNzdGVzdCgpCisgICAgIGNvbnN0IGludCB0aW1lcyA9IDUwOworICAg ICBmb3IgKGludCBpID0gMDsgaSA8IHRpbWVzOyArK2kpIHsKKyAgICAgICAgIGNvdW50ZXIuc3Rv cmVSZWxheGVkKDApOworLSAgICAgICAgLy8gVGhyZWFkRW5naW5lIHdpbGwgZGVsZXRlIGYgd2hl biBpdCBmaW5pc2hlcworLSAgICAgICAgYXV0byBmID0gbmV3IENvdW50Rm9yKDAsIGl0ZXJhdGlv bnMpOworLSAgICAgICAgYXV0byBmdXR1cmUgPSBmLT5zdGFydEFzeW5jaHJvbm91c2x5KCk7Cist ICAgICAgICBmdXR1cmUud2FpdEZvckZpbmlzaGVkKCk7CisrICAgICAgICBDb3VudEZvciBmKDAs IGl0ZXJhdGlvbnMpOworKyAgICAgICAgZi5zdGFydEJsb2NraW5nKCk7CisgICAgICAgICBRQ09N UEFSRShjb3VudGVyLmxvYWRSZWxheGVkKCksIGl0ZXJhdGlvbnMpOworICAgICB9CisgfQorQEAg LTE3NywxMSArMTc0LDggQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6c3Ry ZXNzdGVzdCgpCisgdm9pZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6bm9JdGVyYXRp b25zKCkKKyB7CisgICAgIGNvbnN0IGludCB0aW1lcyA9IDIwMDAwOworLSAgICBmb3IgKGludCBp ID0gMDsgaSA8IHRpbWVzOyArK2kpIHsKKy0gICAgICAgIGF1dG8gZnV0dXJlID0gc3RhcnRUaHJl YWRFbmdpbmUobmV3IEl0ZXJhdGVLZXJuZWw8VGVzdEl0ZXJhdG9yLCB2b2lkPigwLCAwKSkKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RhcnRBc3luY2hyb25vdXNseSgpOworLSAg ICAgICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgpOworLSAgICB9CisrICAgIGZvciAoaW50IGkg PSAwOyBpIDwgdGltZXM7ICsraSkKKysgICAgICAgIHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBJdGVy YXRlS2VybmVsPFRlc3RJdGVyYXRvciwgdm9pZD4oMCwgMCkpLnN0YXJ0QmxvY2tpbmcoKTsKKyB9 CisgCisgUU11dGV4IHRocmVhZHNNdXRleDsKK0BAIC0yMzYsMTAgKzIzMCw4IEBAIHZvaWQgdHN0 X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6OnRocm90dGxpbmcoKQorIAorICAgICB0aHJlYWRz LmNsZWFyKCk7CisgCistICAgIC8vIFRocmVhZEVuZ2luZSB3aWxsIGRlbGV0ZSBmIHdoZW4gaXQg ZmluaXNoZXMKKy0gICAgYXV0byBmID0gbmV3IFRocm90dGxlRm9yKDAsIHRvdGFsSXRlcmF0aW9u cyk7CistICAgIGF1dG8gZnV0dXJlID0gZi0+c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICBm dXR1cmUud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIFRocm90dGxlRm9yIGYoMCwgdG90YWxJdGVy YXRpb25zKTsKKysgICAgZi5zdGFydEJsb2NraW5nKCk7CisgCisgICAgIFFDT01QQVJFKGl0ZXJh dGlvbnMubG9hZFJlbGF4ZWQoKSwgdG90YWxJdGVyYXRpb25zKTsKKyAKK2RpZmYgLS1naXQgYS9x dGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS90c3Rf cXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJl bnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUu Y3BwCitpbmRleCBhYzdiZTdhY2RkLi44MWJjNjRjOGQ5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rl c3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUvdHN0X3F0Y29uY3Vy cmVudHRocmVhZGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQv cXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3Bw CitAQCAtNjUsOSArNjUsMTYgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudFRo cmVhZEVuZ2luZTo6cnVuRGlyZWN0bHkoKQorIHsKKy0gICAgUHJpbnRVc2VyICplbmdpbmUgPSBu ZXcgUHJpbnRVc2VyKCk7CistICAgIFFGdXR1cmU8dm9pZD4gZiA9IGVuZ2luZS0+c3RhcnRBc3lu Y2hyb25vdXNseSgpOworLSAgICBmLndhaXRGb3JGaW5pc2hlZCgpOworKyAgICB7CisrICAgICAg ICBQcmludFVzZXIgZW5naW5lOworKyAgICAgICAgZW5naW5lLnN0YXJ0U2luZ2xlVGhyZWFkZWQo KTsKKysgICAgICAgIGVuZ2luZS5zdGFydEJsb2NraW5nKCk7CisrICAgIH0KKysgICAgeworKyAg ICAgICAgUHJpbnRVc2VyICplbmdpbmUgPSBuZXcgUHJpbnRVc2VyKCk7CisrICAgICAgICBRRnV0 dXJlPHZvaWQ+IGYgPSBlbmdpbmUtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKysgICAgICAgIGYu d2FpdEZvckZpbmlzaGVkKCk7CisrICAgIH0KKyB9CisgCisgY2xhc3MgU3RyaW5nUmVzdWx0VXNl ciA6IHB1YmxpYyBUaHJlYWRFbmdpbmU8UVN0cmluZz4KK0BAIC05OSwxMCArMTA2LDggQEAgcHVi bGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6cmVzdWx0KCkKKyB7 CistICAgIC8vIFRocmVhZEVuZ2luZSB3aWxsIGRlbGV0ZSAnZW5naW5lJyB3aGVuIGl0IGZpbmlz aGVzCistICAgIGF1dG8gZW5naW5lID0gbmV3IFN0cmluZ1Jlc3VsdFVzZXIoKTsKKy0gICAgYXV0 byBmdXR1cmUgPSBlbmdpbmUtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgUUNPTVBBUkUo ZnV0dXJlLnJlc3VsdCgpLCBRU3RyaW5nKCJGb28iKSk7CisrICAgIFN0cmluZ1Jlc3VsdFVzZXIg ZW5naW5lOworKyAgICBRQ09NUEFSRSgqZW5naW5lLnN0YXJ0QmxvY2tpbmcoKSwgUVN0cmluZygi Rm9vIikpOworIH0KKyAKKyBjbGFzcyBWb2lkUmVzdWx0VXNlciA6IHB1YmxpYyBUaHJlYWRFbmdp bmU8dm9pZD4KK0BAIC0xMjgsOSArMTMzLDE3IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENv bmN1cnJlbnRUaHJlYWRFbmdpbmU6OnJ1blRocm91Z2hTdGFydGVyKCkKKyB7CistICAgIFRocmVh ZEVuZ2luZVN0YXJ0ZXI8UVN0cmluZz4gc3RhcnRlciA9IHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBT dHJpbmdSZXN1bHRVc2VyKCkpOworLSAgICBRRnV0dXJlPFFTdHJpbmc+IGYgPSBzdGFydGVyLnN0 YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgUUNPTVBBUkUoZi5yZXN1bHQoKSwgUVN0cmluZygi Rm9vIikpOworKyAgICB7CisrICAgICAgICBUaHJlYWRFbmdpbmVTdGFydGVyPFFTdHJpbmc+IHN0 YXJ0ZXIgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgU3RyaW5nUmVzdWx0VXNlcigpKTsKKysgICAg ICAgIFFGdXR1cmU8UVN0cmluZz4gIGYgPSBzdGFydGVyLnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsK KysgICAgICAgIFFDT01QQVJFKGYucmVzdWx0KCksIFFTdHJpbmcoIkZvbyIpKTsKKysgICAgfQor KworKyAgICB7CisrICAgICAgICBUaHJlYWRFbmdpbmVTdGFydGVyPFFTdHJpbmc+IHN0YXJ0ZXIg PSBzdGFydFRocmVhZEVuZ2luZShuZXcgU3RyaW5nUmVzdWx0VXNlcigpKTsKKysgICAgICAgIFFT dHJpbmcgc3RyID0gc3RhcnRlci5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBRQ09NUEFSRShz dHIsIFFTdHJpbmcoIkZvbyIpKTsKKysgICAgfQorIH0KKyAKKyBjbGFzcyBDYW5jZWxVc2VyIDog cHVibGljIFRocmVhZEVuZ2luZTx2b2lkPgorQEAgLTIxMyw2ICsyMjYsMTIgQEAgdm9pZCB0c3Rf UXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjp0aHJvdHRsZSgpCisgICAgICAgICBmLndhaXRGb3JG aW5pc2hlZCgpOworICAgICAgICAgUUNPTVBBUkUoY291bnQubG9hZFJlbGF4ZWQoKSwgMCk7Cisg ICAgIH0KKysKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXRzOyArK2kpIHsKKysgICAg ICAgIFRocm90dGxlQWx3YXlzVXNlciB0OworKyAgICAgICAgdC5zdGFydEJsb2NraW5nKCk7Cisr ICAgICAgICBRQ09NUEFSRShjb3VudC5sb2FkUmVsYXhlZCgpLCAwKTsKKysgICAgfQorIH0KKyAK KyBRU2V0PFFUaHJlYWQgKj4gdGhyZWFkczsKK0BAIC0yNDksMTcgKzI2OCwzNSBAQCB2b2lkIHRz dF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnRocmVhZENvdW50KCkKKyB7CisgICAgIGNvbnN0 IGludCByZXBlYXRzID0gMTA7CisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0czsgKytp KSB7CisrICAgICAgICBUaHJlYWRDb3VudFVzZXIgdDsKKysgICAgICAgIHQuc3RhcnRCbG9ja2lu ZygpOworKyAgICAgICAgaW50IGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgaW50 IGNvdW50X2V4cGVjdGVkID0gUVRocmVhZFBvb2w6Omdsb2JhbEluc3RhbmNlKCktPm1heFRocmVh ZENvdW50KCkgKyAxOyAvLyArMSBmb3IgdGhlIG1haW4gdGhyZWFkLgorKyAgICAgICAgaWYgKGNv dW50ICE9IGNvdW50X2V4cGVjdGVkKQorKyAgICAgICAgICAgIFFFWFBFQ1RfRkFJTCgiIiwgIlFU QlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQsIGNvdW50X2V4cGVj dGVkKTsKKysKKyAgICAgICAgIChuZXcgVGhyZWFkQ291bnRVc2VyKCkpLT5zdGFydEFzeW5jaHJv bm91c2x5KCkud2FpdEZvckZpbmlzaGVkKCk7CistICAgICAgICBjb25zdCBhdXRvIGNvdW50ID0g dGhyZWFkcy5jb3VudCgpOworLSAgICAgICAgY29uc3QgYXV0byBtYXhUaHJlYWRDb3VudCA9IFFU aHJlYWRQb29sOjpnbG9iYWxJbnN0YW5jZSgpLT5tYXhUaHJlYWRDb3VudCgpOworLSAgICAgICAg UVZFUklGWShjb3VudCA8PSBtYXhUaHJlYWRDb3VudCk7CistICAgICAgICBRVkVSSUZZKCF0aHJl YWRzLmNvbnRhaW5zKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSkpOworKyAgICAgICAgY291bnQg PSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBjb3VudF9leHBlY3RlZCA9IFFUaHJlYWRQb29s OjpnbG9iYWxJbnN0YW5jZSgpLT5tYXhUaHJlYWRDb3VudCgpOworKyAgICAgICAgaWYgKGNvdW50 ICE9IGNvdW50X2V4cGVjdGVkKQorKyAgICAgICAgICAgIFFFWFBFQ1RfRkFJTCgiIiwgIlFUQlVH LTIzMzMzIiwgQWJvcnQpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQsIGNvdW50X2V4cGVjdGVk KTsKKyAgICAgfQorIAorICAgICAvLyBTZXQgdGhlIGZpbmlzaCBmbGFnIGltbWVkaWF0ZWx5LCB0 aGlzIHNob3VsZCBnaXZlIHVzIG9uZSB0aHJlYWQgb25seS4KKyAgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCByZXBlYXRzOyArK2kpIHsKKysgICAgICAgIFRocmVhZENvdW50VXNlciB0KHRydWUgLypm aW5pc2hJbW1lZGlhdGVseSovKTsKKysgICAgICAgIHQuc3RhcnRCbG9ja2luZygpOworKyAgICAg ICAgaW50IGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgaWYgKGNvdW50ICE9IDEp CisrICAgICAgICAgICAgUUVYUEVDVF9GQUlMKCIiLCAiUVRCVUctMjMzMzMiLCBBYm9ydCk7Cisr ICAgICAgICBRQ09NUEFSRShjb3VudCwgMSk7CisrCisgICAgICAgICAobmV3IFRocmVhZENvdW50 VXNlcih0cnVlIC8qZmluaXNoSW1tZWRpYXRlbHkqLykpLT5zdGFydEFzeW5jaHJvbm91c2x5KCku d2FpdEZvckZpbmlzaGVkKCk7CistICAgICAgICBjb25zdCBhdXRvIGNvdW50ID0gdGhyZWFkcy5j b3VudCgpOworKyAgICAgICAgY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBpZiAo Y291bnQgIT0gMSkKKysgICAgICAgICAgICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMzMyIs IEFib3J0KTsKKyAgICAgICAgIFFDT01QQVJFKGNvdW50LCAxKTsKKyAgICAgICAgIFFWRVJJRlko IXRocmVhZHMuY29udGFpbnMoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpKSk7CisgICAgIH0KK0BA IC00MDAsNiArNDM3LDcgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVh ZEVuZ2luZTo6ZXhjZXB0aW9ucygpCisgeworKyAgICAvLyBBc3luY2hyb25vdXMgbW9kZToKKyAg ICAgeworICAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKyAgICAgICAgIHRyeSAgeworQEAg LTQxMiw2ICs0NTAsMzIgQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpleGNl cHRpb25zKCkKKyAgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlv biIpOworICAgICB9CisgCisrICAgIC8vIEJsb2NraW5nIG1vZGU6CisrICAgIC8vIHRlc3QgdGhy b3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIGEgd29ya2VyIHRocmVhZC4KKysgICAgeworKyAgICAg ICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAgeworKyAgICAgICAgICAgIFF0 Q29uY3VycmVudEV4Y2VwdGlvblRocm93ZXIgZShRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkpOwor KyAgICAgICAgICAgIGUuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgfSBjYXRjaCAoY29uc3Qg UUV4Y2VwdGlvbiAmKSB7CisrICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKysgICAgICAgIH0K KysgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworKyAg ICB9CisrCisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZSBtYWlu IHRocmVhZCAoZGlmZmVyZW50IGNvZGUgcGF0aCkKKysgICAgeworKyAgICAgICAgYm9vbCBjYXVn aHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAgeworKyAgICAgICAgICAgIFF0Q29uY3VycmVudEV4 Y2VwdGlvblRocm93ZXIgZSgwKTsKKysgICAgICAgICAgICBlLnN0YXJ0QmxvY2tpbmcoKTsKKysg ICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFFeGNlcHRpb24gJikgeworKyAgICAgICAgICAgIGNhdWdo dCA9IHRydWU7CisrICAgICAgICB9CisrICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90 IGdldCBleGNlcHRpb24iKTsKKysgICAgfQorKworKyAgICAvLyBBc3luY2hyb25vdXMgbW9kZToK KyAgICAgeworICAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKyAgICAgICAgIHRyeSAgewor QEAgLTQyMyw2ICs0ODcsMzEgQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpl eGNlcHRpb25zKCkKKyAgICAgICAgIH0KKyAgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBu b3QgZ2V0IGV4Y2VwdGlvbiIpOworICAgICB9CisrCisrICAgIC8vIEJsb2NraW5nIG1vZGU6Cisr ICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBmcm9tIGEgd29ya2VyIHRocmVhZC4K KysgICAgeworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAgewor KyAgICAgICAgICAgIFVucmVsYXRlZEV4Y2VwdGlvblRocm93ZXIgZShRVGhyZWFkOjpjdXJyZW50 VGhyZWFkKCkpOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgfSBj YXRjaCAoY29uc3QgUVVuaGFuZGxlZEV4Y2VwdGlvbiAmKSB7CisrICAgICAgICAgICAgY2F1Z2h0 ID0gdHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3Qg Z2V0IGV4Y2VwdGlvbiIpOworKyAgICB9CisrCisrICAgIC8vIHRlc3QgdGhyb3dpbmcgdGhlIGV4 Y2VwdGlvbiBmcm9tIHRoZSBtYWluIHRocmVhZCAoZGlmZmVyZW50IGNvZGUgcGF0aCkKKysgICAg eworKyAgICAgICAgYm9vbCBjYXVnaHQgPSBmYWxzZTsKKysgICAgICAgIHRyeSAgeworKyAgICAg ICAgICAgIFVucmVsYXRlZEV4Y2VwdGlvblRocm93ZXIgZSgwKTsKKysgICAgICAgICAgICBlLnN0 YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFVbmhhbmRsZWRFeGNlcHRp b24gJikgeworKyAgICAgICAgICAgIGNhdWdodCA9IHRydWU7CisrICAgICAgICB9CisrICAgICAg ICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKysgICAgfQorIH0K KyAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fi dWZmZXIvdHN0X3FidWZmZXIuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xYnVm ZmVyL3RzdF9xYnVmZmVyLmNwcAoraW5kZXggNDk2ODc0MjExMC4uZjRjM2ZiNzExZCAxMDA2NDQK Ky0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZlci90c3RfcWJ1ZmZlci5j cHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZlci90c3RfcWJ1ZmZl ci5jcHAKK0BAIC00Miw2ICs0Miw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgd3JpdGVC bG9ja19kYXRhKCk7CisgICAgIHZvaWQgd3JpdGVCbG9jaygpOworICAgICB2b2lkIHNlZWsoKTsK KysgICAgdm9pZCBpbnZhbGlkU2Vla3MoKTsKKyAgICAgdm9pZCBzZWVrVGVzdF9kYXRhKCk7Cisg ICAgIHZvaWQgc2Vla1Rlc3QoKTsKKyAgICAgdm9pZCByZWFkX3Jhd2RhdGEoKTsKK0BAIC0yODYs NiArMjg3LDI5IEBAIHZvaWQgdHN0X1FCdWZmZXI6OnNlZWsoKQorICAgICBRQ09NUEFSRShidWZm ZXIuc2l6ZSgpLCBwb3MpOworIH0KKyAKKyt2b2lkIHRzdF9RQnVmZmVyOjppbnZhbGlkU2Vla3Mo KQorK3sKKysgICAgaWYgY29uc3RleHByIChzaXplb2YocXNpemV0eXBlKSA9PSBzaXplb2YocWlu dDY0KSkgeworKyAgICAgICAgLy8gc2l6ZW9mKHFzaXpldHlwZSkgPT0gc2l6ZW9mKHFpbnQ2NCks IHNvICsxIHdvdWxkIG92ZXJmbG93CisrICAgICAgICBRU0tJUCgiVGhpcyBpcyBhIDMyLWJpdC1v bmx5IHRlc3QuIik7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBRQnVmZmVyIGJ1ZmZlcjsKKysg ICAgICAgIGJ1ZmZlci5vcGVuKFFJT0RldmljZTo6V3JpdGVPbmx5KTsKKysgICAgICAgIFFDT01Q QVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCksIHFzaXpldHlwZSgwKSk7CisrICAgICAgICBRQ09N UEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgwKSk7CisrICAgICAgICBjb25zdGV4cHIgcWludDY0 IE1heFFCeXRlQXJyYXlDYXBhY2l0eSA9IChzdGQ6Om51bWVyaWNfbGltaXRzPHFzaXpldHlwZT46 Om1heCkoKTsKKysgICAgICAgIC8vIHRoaXMgc2hvdWxkIGZhaWwgZmFzdCwgbm90IGFmdGVyIHRy eWluZyB0byBhbGxvY2F0ZSBuZWFybHkgMiBHaUIgb2YgZGF0YSwKKysgICAgICAgIC8vIHBvdGVu dGlhbGx5IGNyYXNoaW5nIGluIHRoZSBwcm9jZXNzOgorKyAgICAgICAgUVZFUklGWSghYnVmZmVy LnNlZWsoMiAqIE1heFFCeXRlQXJyYXlDYXBhY2l0eSAtIDEpKTsKKysgICAgICAgIFFDT01QQVJF KGJ1ZmZlci5idWZmZXIoKS5zaXplKCksIHFzaXpldHlwZSgwKSk7CisrICAgICAgICBRQ09NUEFS RShidWZmZXIucG9zKCksIHFpbnQ2NCgwKSk7CisrICAgICAgICAvLyBkaXR0bzoKKysgICAgICAg IFFWRVJJRlkoIWJ1ZmZlci5zZWVrKE1heFFCeXRlQXJyYXlDYXBhY2l0eSArIDEpKTsKKysgICAg ICAgIFFDT01QQVJFKGJ1ZmZlci5idWZmZXIoKS5zaXplKCksIHFzaXpldHlwZSgwKSk7CisrICAg ICAgICBRQ09NUEFSRShidWZmZXIucG9zKCksIHFpbnQ2NCgwKSk7CisrICAgIH0KKyt9CisrCisg dm9pZCB0c3RfUUJ1ZmZlcjo6c2Vla1Rlc3RfZGF0YSgpCisgeworICAgICB3cml0ZUJsb2NrX2Rh dGEoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fpb2Rldmlj ZS90c3RfcWlvZGV2aWNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWlvZGV2 aWNlL3RzdF9xaW9kZXZpY2UuY3BwCitpbmRleCBkYTUzMjc1OTRjLi40YTA0ZTBmN2M2IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xaW9kZXZpY2UvdHN0X3Fpb2Rl dmljZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWlvZGV2aWNlL3Rz dF9xaW9kZXZpY2UuY3BwCitAQCAtNTYxLDcgKzU2MSw4IEBAIHByb3RlY3RlZDoKKyAgICAgcWlu dDY0IHJlYWREYXRhKGNoYXIgKmRhdGEsIHFpbnQ2NCBtYXhTaXplKSBvdmVycmlkZQorICAgICB7 CisgICAgICAgICBtYXhTaXplID0gcU1pbihtYXhTaXplLCBxaW50NjQoYnVmLT5zaXplKCkgLSBv ZmZzZXQpKTsKKy0gICAgICAgIG1lbWNweShkYXRhLCBidWYtPmNvbnN0RGF0YSgpICsgb2Zmc2V0 LCBtYXhTaXplKTsKKysgICAgICAgIGlmIChtYXhTaXplID4gMCkKKysgICAgICAgICAgICBtZW1j cHkoZGF0YSwgYnVmLT5jb25zdERhdGEoKSArIG9mZnNldCwgbWF4U2l6ZSk7CisgICAgICAgICBv ZmZzZXQgKz0gbWF4U2l6ZTsKKyAgICAgICAgIHJldHVybiBtYXhTaXplOworICAgICB9CitAQCAt NjA0LDEzICs2MDUsMTUgQEAgcHJvdGVjdGVkOgorICAgICBxaW50NjQgcmVhZERhdGEoY2hhciAq ZGF0YSwgcWludDY0IG1heFNpemUpIG92ZXJyaWRlCisgICAgIHsKKyAgICAgICAgIG1heFNpemUg PSBxTWluKG1heFNpemUsIHFpbnQ2NChidWYuc2l6ZSgpIC0gcG9zKCkpKTsKKy0gICAgICAgIG1l bWNweShkYXRhLCBidWYuY29uc3REYXRhKCkgKyBwb3MoKSwgbWF4U2l6ZSk7CisrICAgICAgICBp ZiAobWF4U2l6ZSA+IDApCisrICAgICAgICAgICAgbWVtY3B5KGRhdGEsIGJ1Zi5jb25zdERhdGEo KSArIHBvcygpLCBtYXhTaXplKTsKKyAgICAgICAgIHJldHVybiBtYXhTaXplOworICAgICB9Cisg ICAgIHFpbnQ2NCB3cml0ZURhdGEoY29uc3QgY2hhciAqZGF0YSwgcWludDY0IG1heFNpemUpIG92 ZXJyaWRlCisgICAgIHsKKyAgICAgICAgIG1heFNpemUgPSBxTWluKG1heFNpemUsIHFpbnQ2NChi dWYuc2l6ZSgpIC0gcG9zKCkpKTsKKy0gICAgICAgIG1lbWNweShidWYuZGF0YSgpICsgcG9zKCks IGRhdGEsIG1heFNpemUpOworKyAgICAgICAgaWYgKG1heFNpemUgPiAwKQorKyAgICAgICAgICAg IG1lbWNweShidWYuZGF0YSgpICsgcG9zKCksIGRhdGEsIG1heFNpemUpOworICAgICAgICAgcmV0 dXJuIG1heFNpemU7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9j b3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9j b3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAKK2luZGV4IGRiNjBiZWFkNjQuLmYz NDVhNDQ0MTQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fwcm9j ZXNzL3RzdF9xcHJvY2Vzcy5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8v cXByb2Nlc3MvdHN0X3Fwcm9jZXNzLmNwcAorQEAgLTEsNyArMSw4IEBACisgLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqKgorICoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQu CistKiogQ29weXJpZ2h0IChDKSAyMDIwIEludGVsIENvcnBvcmF0aW9uLgorKyoqIENvcHlyaWdo dCAoQykgMjAyMCBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIyIElu dGVsIENvcnBvcmF0aW9uLgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2lu Zy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0ZXN0IHN1aXRlIG9mIHRoZSBR dCBUb29sa2l0LgorQEAgLTE1MCw2ICsxNTEsOCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lk IHN0YXJ0U3RvcFN0YXJ0U3RvcEJ1ZmZlcnMoKTsKKyAgICAgdm9pZCBwcm9jZXNzRXZlbnRzSW5B UmVhZHlSZWFkU2xvdF9kYXRhKCk7CisgICAgIHZvaWQgcHJvY2Vzc0V2ZW50c0luQVJlYWR5UmVh ZFNsb3QoKTsKKysgICAgdm9pZCBzdGFydEZyb21DdXJyZW50V29ya2luZ0Rpcl9kYXRhKCk7Cisr ICAgIHZvaWQgc3RhcnRGcm9tQ3VycmVudFdvcmtpbmdEaXIoKTsKKyAKKyAgICAgLy8ga2VlcCB0 aGVzZSBhdCB0aGUgZW5kLCBzaW5jZSB0aGV5IHVzZSBsb3RzIG9mIHByb2Nlc3NlcyBhbmQgc29t ZXRpbWVzCisgICAgIC8vIGNhdXNlZCBvYnNjdXJlIGZhaWx1cmVzIHRvIG9jY3VyIGluIHRlc3Rz IHRoYXQgZm9sbG93ZWQgdGhlbSAoZXNwLiBvbiB0aGUgTWFjKQorQEAgLTI3MzEsNSArMjczNCw5 NCBAQCB2b2lkIHRzdF9RUHJvY2Vzczo6ZmluaXNoUHJvY2Vzc0JlZm9yZVJlYWRpbmdEb25lX2Rl cHJlY2F0ZWQoKQorIAorICNlbmRpZgorIAorK2VudW0gY2xhc3MgQ2hkaXJNb2RlIHsKKysgICAg Tm9uZSA9IDAsCisrICAgIEluUGFyZW50LAorKyAgICBJbkNoaWxkCisrfTsKKytRX0RFQ0xBUkVf TUVUQVRZUEUoQ2hkaXJNb2RlKQorKworK3ZvaWQgdHN0X1FQcm9jZXNzOjpzdGFydEZyb21DdXJy ZW50V29ya2luZ0Rpcl9kYXRhKCkKKyt7CisrICAgIHFSZWdpc3Rlck1ldGFUeXBlPENoZGlyTW9k ZT4oKTsKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxRU3RyaW5nPigicHJvZ3JhbVByZWZpeCIpOwor KyAgICBRVGVzdDo6YWRkQ29sdW1uPENoZGlyTW9kZT4oImNoZGlyTW9kZSIpOworKyAgICBRVGVz dDo6YWRkQ29sdW1uPGJvb2w+KCJzdWNjZXNzIik7CisrCisrICAgIGNvbnN0ZXhwciBib29sIElz V2luZG93cyA9IHRydWUKKysjaWZkZWYgUV9PU19VTklYCisrICAgICAgICAgICAgJiYgZmFsc2UK KysjZW5kaWYKKysgICAgICAgICAgICA7CisrCisrICAgIC8vIGJhc2VsaW5lOiB0cnlpbmcgdG8g ZXhlY3V0ZSB0aGUgZGlyZWN0b3J5LCB0aGlzIGNhbid0IHBvc3NpYmx5IHN1Y2NlZWQhCisrICAg IFFUZXN0OjpuZXdSb3coInBsYWluLXNhbWUtY3dkIikgPDwgUVN0cmluZygpIDw8IENoZGlyTW9k ZTo6Tm9uZSA8PCBmYWxzZTsKKysKKysgICAgLy8gY3Jvc3MtcGxhdGZvcm0gYmVoYXZpb3I6IG5l aXRoZXIgT1Mgc2VhcmNoZXMgdGhlIHNldFdvcmtpbmdEaXJlY3RvcnkoKQorKyAgICAvLyBkaXIg d2l0aG91dCAiLi8iCisrICAgIFFUZXN0OjpuZXdSb3coInBsYWluLWNoaWxkLWNoZGlyIikgPDwg UVN0cmluZygpIDw8IENoZGlyTW9kZTo6SW5DaGlsZCA8PCBmYWxzZTsKKysKKysgICAgLy8gY3Jv c3MtcGxhdGZvcm0gYmVoYXZpb3I6IGJvdGggT1NlcyBzZWFyY2ggdGhlIHBhcmVudCdzIENXRCB3 aXRoICIuLyIKKysgICAgUVRlc3Q6Om5ld1JvdygicHJlZml4ZWQtcGFyZW50LWNoZGlyIikgPDwg Ii4vIiA8PCBDaGRpck1vZGU6OkluUGFyZW50IDw8IHRydWU7CisrCisrICAgIC8vIG9wcG9zaXRl IGJlaGF2aW9yczogV2luZG93cyBzZWFyY2hlcyB0aGUgcGFyZW50J3MgQ1dEIGFuZCBVbml4IHNl YXJjaGVzCisrICAgIC8vIHRoZSBjaGlsZCdzIHdpdGggIi4vIgorKyAgICBRVGVzdDo6bmV3Um93 KCJwcmVmaXhlZC1jaGlsZC1jaGRpciIpIDw8ICIuLyIgPDwgQ2hkaXJNb2RlOjpJbkNoaWxkIDw8 ICFJc1dpbmRvd3M7CisrCisrICAgIC8vIFdpbmRvd3Mgc2VhcmNoZXMgdGhlIHBhcmVudCdzIENX RCB3aXRob3V0ICIuLyIKKysgICAgUVRlc3Q6Om5ld1JvdygicGxhaW4tcGFyZW50LWNoZGlyIikg PDwgUVN0cmluZygpIDw8IENoZGlyTW9kZTo6SW5QYXJlbnQgPDwgSXNXaW5kb3dzOworK30KKysK Kyt2b2lkIHRzdF9RUHJvY2Vzczo6c3RhcnRGcm9tQ3VycmVudFdvcmtpbmdEaXIoKQorK3sKKysg ICAgUUZFVENIKFFTdHJpbmcsIHByb2dyYW1QcmVmaXgpOworKyAgICBRRkVUQ0goQ2hkaXJNb2Rl LCBjaGRpck1vZGUpOworKyAgICBRRkVUQ0goYm9vbCwgc3VjY2Vzcyk7CisrCisrICAgIFFQcm9j ZXNzIHByb2Nlc3M7CisrICAgIHFSZWdpc3Rlck1ldGFUeXBlPFFQcm9jZXNzOjpQcm9jZXNzRXJy b3I+KCk7CisrICAgIFFTaWduYWxTcHkgZXJyb3JTcHkoJnByb2Nlc3MsICZRUHJvY2Vzczo6ZXJy b3JPY2N1cnJlZCk7CisrICAgIFFWRVJJRlkoZXJyb3JTcHkuaXNWYWxpZCgpKTsKKysKKysgICAg Ly8gYm90aCB0aGUgZGlyIG5hbWUgYW5kIHRoZSBleGVjdXRhYmxlIG5hbWUKKysgICAgY29uc3Qg UVN0cmluZyB0YXJnZXQgPSBRU3RyaW5nTGl0ZXJhbCgidGVzdFByb2Nlc3NOb3JtYWwiKTsKKysg ICAgcHJvY2Vzcy5zZXRQcm9ncmFtKHByb2dyYW1QcmVmaXggKyB0YXJnZXQpOworKworKyNpZmRl ZiBRX09TX1VOSVgKKysgICAgLy8gUmVzZXQgUEFUSCwgdG8gYmUgc3VyZSBpdCBkb2Vzbid0IGNv bnRhaW4gLiBvciB0aGUgZW1wdHkgcGF0aC4KKysgICAgLy8gV2UgY2FuJ3QgZG8gdGhpcyBvbiBX aW5kb3dzIGJlY2F1c2UgRExMcyBhcmUgc2VhcmNoZWQgaW4gUEFUSAorKyAgICAvLyBhbmQgV2lu ZG93cyBhbHdheXMgc2VhcmNoZXMgIi4iIGFueXdheS4KKysgICAgYXV0byByZXN0b3JlRW52ID0g cVNjb3BlR3VhcmQoW29sZCA9IHFnZXRlbnYoIlBBVEgiKV0geworKyAgICAgICAgcXB1dGVudigi UEFUSCIsIG9sZCk7CisrICAgIH0pOworKyAgICBxcHV0ZW52KCJQQVRIIiwgIi8iKTsKKysjZW5k aWYKKysKKysgICAgc3dpdGNoIChjaGRpck1vZGUpIHsKKysgICAgY2FzZSBDaGRpck1vZGU6Oklu UGFyZW50OiB7CisrICAgICAgICBhdXRvIHJlc3RvcmVDd2QgPSBxU2NvcGVHdWFyZChbb2xkID0g UURpcjo6Y3VycmVudFBhdGgoKV0geworKyAgICAgICAgICAgIFFEaXI6OnNldEN1cnJlbnQob2xk KTsKKysgICAgICAgIH0pOworKyAgICAgICAgUVZFUklGWShRRGlyOjpzZXRDdXJyZW50KHRhcmdl dCkpOworKyAgICAgICAgcHJvY2Vzcy5zdGFydCgpOworKyAgICAgICAgYnJlYWs7CisrICAgIH0K KysgICAgY2FzZSBDaGRpck1vZGU6OkluQ2hpbGQ6CisrICAgICAgICBwcm9jZXNzLnNldFdvcmtp bmdEaXJlY3RvcnkodGFyZ2V0KTsKKysgICAgICAgIFFfRkFMTFRIUk9VR0goKTsKKysgICAgY2Fz ZSBDaGRpck1vZGU6Ok5vbmU6CisrICAgICAgICBwcm9jZXNzLnN0YXJ0KCk7CisrICAgICAgICBi cmVhazsKKysgICAgfQorKworKyAgICBRQ09NUEFSRShwcm9jZXNzLndhaXRGb3JTdGFydGVkKCks IHN1Y2Nlc3MpOworKyAgICBRQ09NUEFSRShlcnJvclNweS5jb3VudCgpLCBpbnQoIXN1Y2Nlc3Mp KTsKKysgICAgaWYgKHN1Y2Nlc3MpIHsKKysgICAgICAgIFFWRVJJRlkocHJvY2Vzcy53YWl0Rm9y RmluaXNoZWQoKSk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBRQ09NUEFSRShwcm9jZXNzLmVy cm9yKCksIFFQcm9jZXNzOjpGYWlsZWRUb1N0YXJ0KTsKKysgICAgfQorK30KKysKKyBRVEVTVF9N QUlOKHRzdF9RUHJvY2VzcykKKyAjaW5jbHVkZSAidHN0X3Fwcm9jZXNzLm1vYyIKK2RpZmYgLS1n aXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFi bGVzcHJveHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5jcHAgYi9xdGJh c2UvdGVzdHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFibGVzcHJveHlt b2RlbC90c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5jcHAKK2luZGV4IGUxZWE3YTQ1 NTIuLjkwOTcyY2FhNTcgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0 ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFi bGVzcHJveHltb2RlbC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaXRlbW1v ZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsL3RzdF9xY29uY2F0ZW5hdGV0YWJsZXNw cm94eW1vZGVsLmNwcAorQEAgLTExNyw2ICsxMTcsNyBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAg IHZvaWQgc2hvdWxkUHJvcGFnYXRlRHJvcEFmdGVyTGFzdFJvd19kYXRhKCk7CisgICAgIHZvaWQg c2hvdWxkUHJvcGFnYXRlRHJvcEFmdGVyTGFzdFJvdygpOworICAgICB2b2lkIHF0YnVnOTE3ODgo KTsKKysgICAgdm9pZCBxdGJ1ZzkxODc4KCk7CisgCisgcHJpdmF0ZToKKyAgICAgUVN0YW5kYXJk SXRlbU1vZGVsIG1vZDsKK0BAIC04NDMsNiArODQ0LDIyIEBAIHZvaWQgdHN0X1FDb25jYXRlbmF0 ZVRhYmxlc1Byb3h5TW9kZWw6OnF0YnVnOTE3ODgoKQorICAgICBRQ09NUEFSRShwcm94eUNvbmNh dC5jb2x1bW5Db3VudCgpLCAwKTsKKyB9CisgCisrdm9pZCB0c3RfUUNvbmNhdGVuYXRlVGFibGVz UHJveHlNb2RlbDo6cXRidWc5MTg3OCgpCisreworKyAgICBRU3RhbmRhcmRJdGVtTW9kZWwgbTsK KysgICAgbS5zZXRSb3dDb3VudCg0KTsKKysgICAgbS5zZXRDb2x1bW5Db3VudCg0KTsKKysKKysg ICAgUUNvbmNhdGVuYXRlVGFibGVzUHJveHlNb2RlbCBwbTsKKysgICAgUVNvcnRGaWx0ZXJQcm94 eU1vZGVsIHByb3h5RmlsdGVyOworKyAgICBwcm94eUZpbHRlci5zZXRTb3VyY2VNb2RlbCgmcG0p OworKyAgICBwcm94eUZpbHRlci5zZXRGaWx0ZXJGaXhlZFN0cmluZygic29tZXRoaW5nIik7Cisr ICAgIHBtLmFkZFNvdXJjZU1vZGVsKCZtKTsgIC8vIFRoaXMgc2hvdWxkIG5vdCBhc3NlcnQKKysK KysgICAgUUNPTVBBUkUocG0uY29sdW1uQ291bnQoKSwgNCk7CisrICAgIFFDT01QQVJFKHBtLnJv d0NvdW50KCksIDQpOworK30KKysKKyBRVEVTVF9HVUlMRVNTX01BSU4odHN0X1FDb25jYXRlbmF0 ZVRhYmxlc1Byb3h5TW9kZWwpCisgCisgI2luY2x1ZGUgInRzdF9xY29uY2F0ZW5hdGV0YWJsZXNw cm94eW1vZGVsLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2tl cm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIv a2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3BwCitpbmRleCA5YmQ2NmMwODM1Li5lZDRhMGJh ZTVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJuZWwvcW9iamVj dC90c3RfcW9iamVjdC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIva2VybmVs L3FvYmplY3QvdHN0X3FvYmplY3QuY3BwCitAQCAtMTU4LDYgKzE1OCw3IEBAIHByaXZhdGUgc2xv dHM6CisgICAgIHZvaWQgbnVsbFJlY2VpdmVyKCk7CisgICAgIHZvaWQgZnVuY3RvclJlZmVyZW5j ZXNDb25uZWN0aW9uKCk7CisgICAgIHZvaWQgZGlzY29ubmVjdERpc2Nvbm5lY3RzKCk7CisrICAg IHZvaWQgZGVjbGFyYXRpdmVEYXRhKCk7CisgfTsKKyAKKyBzdHJ1Y3QgUU9iamVjdENyZWF0ZWRP blNodXRkb3duCitAQCAtNzY3OSw1ICs3NjgwLDgxIEBAIHZvaWQgdHN0X1FPYmplY3Q6OmRpc2Nv bm5lY3REaXNjb25uZWN0cygpCisgUV9TVEFUSUNfQVNTRVJUKFF0UHJpdmF0ZTo6SGFzUV9PQkpF Q1RfTWFjcm88dHN0X1FPYmplY3Q+OjpWYWx1ZSk7CisgUV9TVEFUSUNfQVNTRVJUKCFRdFByaXZh dGU6Okhhc1FfT0JKRUNUX01hY3JvPFNpYmxpbmdEZWxldGVyPjo6VmFsdWUpOworIAorKyNpZmRl ZiBRVF9CVUlMRF9JTlRFUk5BTAorKy8qCisrICAgIFNpbmNlIFFPYmplY3RQcml2YXRlIHN0b3Jl cyB0aGUgZGVjbGFyYXRpdmVEYXRhIHBvaW50ZXIgaW4gYSB1bmlvbiB3aXRoIHRoZSBwb2ludGVy CisrICAgIHRvIHRoZSBjdXJyZW50bHkgZGVzdHJveWVkIGNoaWxkLCBjYWxscyB0byB0aGUgUXRE ZWNsYXJhdGl2ZSBoYW5kbGVycyBuZWVkIHRvIGJlCisrICAgIGNvcnJlY3RseSBndWFyZGVkLiBR VEJVRy0xMDUyODYKKysqLworK25hbWVzcGFjZSBRdERlY2xhcmF0aXZlIHsKKytzdGF0aWMgUUFi c3RyYWN0RGVjbGFyYXRpdmVEYXRhICp0aGVEYXRhOworKworK3N0YXRpYyB2b2lkIGRlc3Ryb3ll ZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKmRhdGEsIFFPYmplY3QgKikKKyt7CisrICAgIFFD T01QQVJFKGRhdGEsIHRoZURhdGEpOworK30KKytzdGF0aWMgdm9pZCBzaWduYWxFbWl0dGVkKFFB YnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgUU9iamVjdCAqLCBpbnQsIHZvaWQgKiopCisr eworKyAgICBRQ09NUEFSRShkYXRhLCB0aGVEYXRhKTsKKyt9CisrLy8gd2UgY2FuJ3QgdXNlIFFD T01QQVJFIGluIHRoZSBuZXh0IHR3byBmdW5jdGlvbnMsIGFzIHRoZXkgZG9uJ3QgcmV0dXJuIHZv aWQKKytzdGF0aWMgaW50IHJlY2VpdmVycyhRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKmRhdGEs IGNvbnN0IFFPYmplY3QgKiwgaW50KQorK3sKKysgICAgUVRlc3Q6OnFDb21wYXJlKGRhdGEsIHRo ZURhdGEsICJkYXRhIiwgInRoZURhdGEiLCBfX0ZJTEVfXywgX19MSU5FX18pOworKyAgICByZXR1 cm4gMDsKKyt9Cisrc3RhdGljIGJvb2wgaXNTaWduYWxDb25uZWN0ZWQoUUFic3RyYWN0RGVjbGFy YXRpdmVEYXRhICpkYXRhLCBjb25zdCBRT2JqZWN0ICosIGludCkKKyt7CisrICAgIFFUZXN0Ojpx Q29tcGFyZShkYXRhLCB0aGVEYXRhLCAiZGF0YSIsICJ0aGVEYXRhIiwgX19GSUxFX18sIF9fTElO RV9fKTsKKysgICAgcmV0dXJuIHRydWU7CisrfQorKworK2NsYXNzIE9iamVjdCA6IHB1YmxpYyBR T2JqZWN0CisreworKyAgICBRX09CSkVDVAorK3B1YmxpYzoKKysgICAgdXNpbmcgUU9iamVjdDo6 UU9iamVjdDsKKysgICAgfk9iamVjdCgpCisrICAgIHsKKysgICAgICAgIGlmIChPYmplY3QgKnAg PSBzdGF0aWNfY2FzdDxPYmplY3QgKj4ocGFyZW50KCkpKQorKyAgICAgICAgICAgIHAtPmVtaXRT aWduYWwoKTsKKysgICAgfQorKworKyAgICB2b2lkIGVtaXRTaWduYWwoKQorKyAgICB7CisrICAg ICAgICBlbWl0IHRoZVNpZ25hbCgpOworKyAgICB9CisrCisrc2lnbmFsczoKKysgICAgdm9pZCB0 aGVTaWduYWwoKTsKKyt9OworKworK30KKysjZW5kaWYKKysKKyt2b2lkIHRzdF9RT2JqZWN0Ojpk ZWNsYXJhdGl2ZURhdGEoKQorK3sKKysjaWZkZWYgUVRfQlVJTERfSU5URVJOQUwKKysgICAgUVNj b3BlZFZhbHVlUm9sbGJhY2sgZGVzdHJveWVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6ZGVz dHJveWVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXREZWNsYXJhdGl2 ZTo6ZGVzdHJveWVkKTsKKysgICAgUVNjb3BlZFZhbHVlUm9sbGJhY2sgc2lnbmFsRW1pdHRlZChR QWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OnNpZ25hbEVtaXR0ZWQsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUXREZWNsYXJhdGl2ZTo6c2lnbmFsRW1pdHRlZCk7Cisr ICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNrIHJlY2VpdmVycyhRQWJzdHJhY3REZWNsYXJhdGl2ZURh dGE6OnJlY2VpdmVycywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0RGVj bGFyYXRpdmU6OnJlY2VpdmVycyk7CisrICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNrIGlzU2lnbmFs Q29ubmVjdGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6aXNTaWduYWxDb25uZWN0ZWQsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0RGVjbGFyYXRpdmU6 OmlzU2lnbmFsQ29ubmVjdGVkKTsKKysKKysgICAgUXREZWNsYXJhdGl2ZTo6T2JqZWN0IHA7Cisr ICAgIFFPYmplY3RQcml2YXRlICpwcml2ID0gUU9iamVjdFByaXZhdGU6OmdldCgmcCk7CisrICAg IHByaXYtPmRlY2xhcmF0aXZlRGF0YSA9IFF0RGVjbGFyYXRpdmU6OnRoZURhdGEgPSBuZXcgUUFi c3RyYWN0RGVjbGFyYXRpdmVEYXRhOworKworKyAgICBjb25uZWN0KCZwLCAmUXREZWNsYXJhdGl2 ZTo6T2JqZWN0Ojp0aGVTaWduYWwsICZwLCBbXXsKKysgICAgfSk7CisrCisrICAgIFF0RGVjbGFy YXRpdmU6Ok9iamVjdCAqY2hpbGQgPSBuZXcgUXREZWNsYXJhdGl2ZTo6T2JqZWN0OworKyAgICBj aGlsZC0+c2V0UGFyZW50KCZwKTsKKysjZW5kaWYKKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUU9i amVjdCkKKyAjaW5jbHVkZSAidHN0X3FvYmplY3QubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UvdHN0X3FtaW1lZGF0YWJh c2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFz ZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAKK2luZGV4IDBlYTQyMmVjYmMuLjFhMzI1NjUzNGIgMTAw NjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFi YXNlL3RzdF9xbWltZWRhdGFiYXNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxp Yi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAKK0BAIC03MCwx NSArNzAsMTUgQEAgc3RhdGljIGlubGluZSBRU3RyaW5nIHRlc3RTdWl0ZVdhcm5pbmcoKQorIAor ICAgICBRU3RyaW5nIHJlc3VsdDsKKyAgICAgUVRleHRTdHJlYW0gc3RyKCZyZXN1bHQpOworLSAg ICBzdHIgPDwgIlxuQ2Fubm90IGZpbmQgdGhlIHNoYXJlZC1taW1lLWluZm8gdGVzdCBzdWl0ZVxu c3RhcnRpbmcgZnJvbTogIgorKyAgICBzdHIgPDwgIlxuQ2Fubm90IGZpbmQgdGhlIHNoYXJlZC1t aW1lLWluZm8gdGVzdCBzdWl0ZVxuaW4gdGhlIHBhcmVudCBvZjogIgorICAgICAgICAgPDwgUURp cjo6dG9OYXRpdmVTZXBhcmF0b3JzKFFEaXI6OmN1cnJlbnRQYXRoKCkpIDw8ICJcbiIKKyAgICAg ICAgICAgICJjZCAiIDw8IFFEaXI6OnRvTmF0aXZlU2VwYXJhdG9ycyhRU3RyaW5nTGl0ZXJhbCgi dGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlIikpIDw8ICJcbiIKKy0g ICAgICAgICAgICJ3Z2V0IGh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94ZGcvc2hhcmVkLW1p bWUtaW5mby9zbmFwc2hvdC9SZWxlYXNlLTEtMTAuemlwXG4iCistICAgICAgICAgICAidW56aXAg UmVsZWFzZS0xLTEwLnppcFxuIjsKKysgICAgICAgICAgICJ3Z2V0IGh0dHBzOi8vZ2l0bGFiLmZy ZWVkZXNrdG9wLm9yZy94ZGcvc2hhcmVkLW1pbWUtaW5mby8tL2FyY2hpdmUvMi4xL3NoYXJlZC1t aW1lLWluZm8tMi4xLnppcFxuIgorKyAgICAgICAgICAgInVuemlwIHNoYXJlZC1taW1lLWluZm8t Mi4xLnppcFxuIjsKKyAjaWZkZWYgUV9PU19XSU4KKy0gICAgc3RyIDw8ICJta2RpciB0ZXN0Zmls ZXNcbnhjb3B5IC9zIFJlbGVhc2UtMS0xMCBzLW0taVxuIjsKKysgICAgc3RyIDw8ICJta2RpciB0 ZXN0ZmlsZXNcbnhjb3B5IC9zIHNoYXJlZC1taW1lLWluZm8tMi4xIHMtbS1pXG4iOworICNlbHNl CistICAgIHN0ciA8PCAibG4gLXMgUmVsZWFzZS0xLTEwIHMtbS1pXG4iOworKyAgICBzdHIgPDwg ImxuIC1zIHNoYXJlZC1taW1lLWluZm8tMi4xIHMtbS1pXG4iOworICNlbmRpZgorICAgICByZXR1 cm4gcmVzdWx0OworIH0KK0BAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCB0c3RfUU1pbWVEYXRhYmFz ZTo6aW5pdFRlc3RDYXNlKCkKKyAgICAgUVZFUklGWTIoY29weVJlc291cmNlRmlsZSh4bWxGaWxl TmFtZSwgeG1sVGFyZ2V0RmlsZU5hbWUsICZlcnJvck1lc3NhZ2UpLCBxUHJpbnRhYmxlKGVycm9y TWVzc2FnZSkpOworICNlbmRpZgorIAorLSAgICBtX3Rlc3RTdWl0ZSA9IFFGSU5EVEVTVERBVEEo InMtbS1pL3Rlc3RzIik7CisrICAgIG1fdGVzdFN1aXRlID0gUUZJTkRURVNUREFUQSgicy1tLWkv dGVzdHMvbWltZS1kZXRlY3Rpb24iKTsKKyAgICAgaWYgKG1fdGVzdFN1aXRlLmlzRW1wdHkoKSkK KyAgICAgICAgIHFXYXJuaW5nKCIlcyIsIHFQcmludGFibGUodGVzdFN1aXRlV2FybmluZygpKSk7 CisgCitAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgdHN0X1FNaW1lRGF0YWJhc2U6OmFsbE1pbWVU eXBlcygpCisgICAgIFFWRVJJRlkoIWxzdC5pc0VtcHR5KCkpOworIAorICAgICAvLyBIYXJkY29k aW5nIHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGNoZWNrIGJvdGggcHJvdmlkZXJzIGZpbmQgdGhl IHNhbWUgbnVtYmVyIG9mIG1pbWV0eXBlcy4KKy0gICAgUUNPTVBBUkUobHN0LmNvdW50KCksIDc3 OSk7CisrICAgIFFDT01QQVJFKGxzdC5jb3VudCgpLCA4MTEpOworIAorICAgICBmb3JlYWNoIChj b25zdCBRTWltZVR5cGUgJm1pbWUsIGxzdCkgeworICAgICAgICAgY29uc3QgUVN0cmluZyBuYW1l ID0gbWltZS5uYW1lKCk7CitAQCAtNjMxLDEwICs2MzEsOSBAQCB2b2lkIHRzdF9RTWltZURhdGFi YXNlOjpzdWZmaXhlc19kYXRhKCkKKyAKKyAgICAgUVRlc3Q6Om5ld1JvdygibWltZXR5cGUgd2l0 aCBhIHNpbmdsZSBwYXR0ZXJuIikgPDwgImFwcGxpY2F0aW9uL3BkZiIgPDwgIioucGRmIiA8PCAi cGRmIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygibWltZXR5cGUgd2l0aCBtdWx0aXBsZSBwYXR0ZXJu cyIpIDw8ICJhcHBsaWNhdGlvbi94LWtwcmVzZW50ZXIiIDw8ICIqLmtwcjsqLmtwdCIgPDwgImtw ciI7CistICAgIFFUZXN0OjpuZXdSb3coImpwZWciKSA8PCAiaW1hZ2UvanBlZyIgPDwgIiouanBl OyouanBnOyouanBlZyIgPDwgImpwZWciOworLSAgICAvL2lmIChLTWltZVR5cGU6OnNoYXJlZE1p bWVJbmZvVmVyc2lvbigpID4gS0RFX01BS0VfVkVSU0lPTigwLCA2MCwgMCkpIHsKKy0gICAgICAg IFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggbWFueSBwYXR0ZXJucyIpIDw8ICJhcHBsaWNh dGlvbi92bmQud29yZHBlcmZlY3QiIDw8ICIqLndwOyoud3A0Oyoud3A1Oyoud3A2Oyoud3BkOyou d3BwIiA8PCAid3AiOworLSAgICAvL30KKysgICAgLy8gVGhlIHByZWZlcnJlZCBzdWZmaXggZm9y IGltYWdlL2pwZWcgaXMgKi5qcGcsIGFzIHBlciBodHRwczovL2J1Z3Mua2RlLm9yZy9zaG93X2J1 Zy5jZ2k/aWQ9MTc2NzM3CisrICAgIFFUZXN0OjpuZXdSb3coImpwZWciKSA8PCAiaW1hZ2UvanBl ZyIgPDwgIiouanBlOyouanBnOyouanBlZyIgPDwgImpwZyI7CisrICAgIFFUZXN0OjpuZXdSb3co Im1pbWV0eXBlIHdpdGggbWFueSBwYXR0ZXJucyIpIDw8ICJhcHBsaWNhdGlvbi92bmQud29yZHBl cmZlY3QiIDw8ICIqLndwOyoud3A0Oyoud3A1Oyoud3A2Oyoud3BkOyoud3BwIiA8PCAid3AiOwor ICAgICBRVGVzdDo6bmV3Um93KCJvYXNpcyB0ZXh0IG1pbWV0eXBlIikgPDwgImFwcGxpY2F0aW9u L3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dCIgPDwgIioub2R0IiA8PCAib2R0IjsKKyAgICAg UVRlc3Q6Om5ld1Jvdygib2FzaXMgcHJlc2VudGF0aW9uIG1pbWV0eXBlIikgPDwgImFwcGxpY2F0 aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uIiA8PCAiKi5vZHAiIDw8ICJv ZHAiOworICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIG11bHRpcGxlIHBhdHRlcm5z IikgPDwgInRleHQvcGxhaW4iIDw8ICIqLmFzYzsqLnR4dDsqLHYiIDw8ICJ0eHQiOworZGlmZiAt LWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9x dGpzb24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9zZXJpYWxpemF0aW9uL2pzb24v dHN0X3F0anNvbi5jcHAKK2luZGV4IDNlNThkZDAzY2MuLmM4ZjgyZWY1ZDUgMTAwNjQ0CistLS0g YS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3NlcmlhbGl6YXRpb24vanNvbi90c3RfcXRqc29u LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9zZXJpYWxpemF0aW9uL2pzb24v dHN0X3F0anNvbi5jcHAKK0BAIC0xNzYsNiArMTc2LDggQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAg ICB2b2lkIGZyb21Ub1ZhcmlhbnRDb252ZXJzaW9uc19kYXRhKCk7CisgICAgIHZvaWQgZnJvbVRv VmFyaWFudENvbnZlcnNpb25zKCk7CisgCisrICAgIHZvaWQgbm9MZWFrT25OYW1lQ2xhc2goKTsK KysKKyBwcml2YXRlOgorICAgICBRU3RyaW5nIHRlc3REYXRhRGlyOworIH07CitAQCAtMzY4NSw1 ICszNjg3LDIzIEBAIHZvaWQgdHN0X1F0SnNvbjo6ZnJvbVRvVmFyaWFudENvbnZlcnNpb25zKCkK KyAgICAgfQorIH0KKyAKKyt2b2lkIHRzdF9RdEpzb246Om5vTGVha09uTmFtZUNsYXNoKCkKKyt7 CisrICAgIFFKc29uRG9jdW1lbnQgZG9jID0gUUpzb25Eb2N1bWVudDo6ZnJvbUpzb24oIntcIlwi OntcIlwiOjB9LFwiXCI6MH0iKTsKKysgICAgUVZFUklGWSghZG9jLmlzTnVsbCgpKTsKKysgICAg Y29uc3QgUUpzb25PYmplY3Qgb2JqID0gZG9jLm9iamVjdCgpOworKworKyAgICAvLyBSZW1vdmVk IHRoZSBkdXBsaWNhdGUga2V5LgorKyAgICBRQ09NUEFSRShvYmoubGVuZ3RoKCksIDEpOworKwor KyAgICAvLyBSZXRhaW5lZCB0aGUgbGFzdCBvZiB0aGUgZHVwbGljYXRlcy4KKysgICAgY29uc3Qg UUpzb25WYWx1ZSB2YWwgPSBvYmouYmVnaW4oKS52YWx1ZSgpOworKyAgICBRVkVSSUZZKHZhbC5p c0RvdWJsZSgpKTsKKysgICAgUUNPTVBBUkUodmFsLnRvRG91YmxlKCksIDAuMCk7CisrCisrICAg IC8vIEl0IHNob3VsZCBub3QgbGVhay4KKysgICAgLy8gSW4gcGFydGljdWxhciBpdCBzaG91bGQg bm90IGZvcmdldCB0byBkZXJlZiB0aGUgY29udGFpbmVyIGZvciB0aGUgaW5uZXIgb2JqZWN0Lgor K30KKysKKyBRVEVTVF9NQUlOKHRzdF9RdEpzb24pCisgI2luY2x1ZGUgInRzdF9xdGpzb24ubW9j IgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvdGltZS9xdGltZXpvbmUv dHN0X3F0aW1lem9uZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3RpbWUvcXRpbWV6 b25lL3RzdF9xdGltZXpvbmUuY3BwCitpbmRleCBhNTliNThkNTdmLi4yNDFjM2U4NGFjIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi90aW1lL3F0aW1lem9uZS90c3RfcXRp bWV6b25lLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi90aW1lL3F0aW1lem9u ZS90c3RfcXRpbWV6b25lLmNwcAorQEAgLTYzLDYgKzYzLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAg ICAgdm9pZCBpc1ZhbGlkSWRfZGF0YSgpOworICAgICB2b2lkIGlzVmFsaWRJZCgpOworICAgICB2 b2lkIG1hbGZvcm1lZCgpOworKyAgICB2b2lkIHNlcmlhbGl6ZSgpOworICAgICAvLyBCYWNrZW5k IHRlc3RzCisgICAgIHZvaWQgdXRjVGVzdCgpOworICAgICB2b2lkIGljdVRlc3QoKTsKK0BAIC05 NDcsNiArOTQ4LDMzIEBAIHZvaWQgdHN0X1FUaW1lWm9uZTo6bWFsZm9ybWVkKCkKKyAgICAgICAg IGJhcmYub2Zmc2V0RnJvbVV0Yyhub3cpOworIH0KKyAKKyt2b2lkIHRzdF9RVGltZVpvbmU6OnNl cmlhbGl6ZSgpCisreworKyAgICBpbnQgcGFydHMgPSAwOworKyNpZm5kZWYgUVRfTk9fREVCVUdf U1RSRUFNCisrICAgIHFEZWJ1ZygpIDw8IFFUaW1lWm9uZSgpOyAvLyB0byB2ZXJpZnkgbm8gY3Jh c2gKKysgICAgcGFydHMrKzsKKysjZW5kaWYKKysjaWZuZGVmIFFUX05PX0RBVEFTVFJFQU0KKysg ICAgUUJ5dGVBcnJheSBibG9iOworKyAgICB7CisrICAgICAgICBRRGF0YVN0cmVhbSBzdHJlYW0o JmJsb2IsIFFJT0RldmljZTo6V3JpdGVPbmx5KTsKKysgICAgICAgIHN0cmVhbSA8PCBRVGltZVpv bmUoIkV1cm9wZS9Pc2xvIikgPDwgUVRpbWVab25lKDQyMCkgPDwgUVRpbWVab25lKCkgPDwgcWlu dDY0KC0xKTsKKysgICAgfQorKyAgICBRRGF0YVN0cmVhbSBzdHJlYW0oJmJsb2IsIFFJT0Rldmlj ZTo6UmVhZE9ubHkpOworKyAgICBRVGltZVpvbmUgaW52YWxpZCwgb2Zmc2V0LCBvc2xvOworKyAg ICBxaW50NjQgbWludXNvbmU7CisrICAgIHN0cmVhbSA+PiBvc2xvID4+IG9mZnNldCA+PiBpbnZh bGlkID4+IG1pbnVzb25lOworKyAgICBRQ09NUEFSRShvc2xvLCBRVGltZVpvbmUoIkV1cm9wZS9P c2xvIikpOworKyAgICBRQ09NUEFSRShvZmZzZXQsIFFUaW1lWm9uZSg0MjApKTsKKysgICAgUVZF UklGWSghaW52YWxpZC5pc1ZhbGlkKCkpOworKyAgICBRQ09NUEFSRShtaW51c29uZSwgcWludDY0 KC0xKSk7CisrICAgIHBhcnRzKys7CisrI2VuZGlmCisrICAgIGlmICghcGFydHMpCisrICAgICAg ICBRU0tJUCgiTm8gc2VyaWFsaXphdGlvbiBlbmFibGVkIik7CisrfQorKworIHZvaWQgdHN0X1FU aW1lWm9uZTo6dXRjVGVzdCgpCisgeworICNpZmRlZiBRVF9CVUlMRF9JTlRFUk5BTAorZGlmZiAt LWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMvcWRidXNpbnRlcmZhY2UvdHN0X3FkYnVzaW50 ZXJmYWNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMvcWRidXNpbnRlcmZhY2UvdHN0X3Fk YnVzaW50ZXJmYWNlLmNwcAoraW5kZXggMDU0ODBjNmRkMi4uNzBmNGM3NTc1NiAxMDA2NDQKKy0t LSBhL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMvcWRidXNpbnRlcmZhY2UvdHN0X3FkYnVzaW50ZXJm YWNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZGJ1cy9xZGJ1c2ludGVyZmFjZS90c3Rf cWRidXNpbnRlcmZhY2UuY3BwCitAQCAtMzI0LDYgKzMyNCwxMyBAQCB2b2lkIHRzdF9RREJ1c0lu dGVyZmFjZTo6bm90VmFsaWQoKQorIAorICAgICBRVkVSSUZZKCFpbnRlcmZhY2UuaXNWYWxpZCgp KTsKKyAgICAgUVZFUklGWSghUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCgmaW50ZXJmYWNlLCAi TGlzdE5hbWVzIiwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pKTsKKysKKysgICAgLy8gV2l0aCBhIGNv bm5lY3Rpb24sIGJ1dCBlbXB0eS9udWxsIHNlcnZpY2UgYW5kIHBhdGggc3BlY2lmaWVkCisrICAg IFFEQnVzQ29ubmVjdGlvbiBjb24gPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKTsKKysg ICAgUVZFUklGWShjb24uaXNDb25uZWN0ZWQoKSk7CisrICAgIFFEQnVzSW50ZXJmYWNlIGlmYWNl KHt9LCB7fSwge30sIGNvbik7CisrICAgIFFWRVJJRlkoIWlmYWNlLmlzVmFsaWQoKSk7CisrICAg IFFWRVJJRlkoIVFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QoJmludGVyZmFjZSwgIkxpc3ROYW1l cyIsIFF0OjpEaXJlY3RDb25uZWN0aW9uKSk7CisgfQorIAorIHZvaWQgdHN0X1FEQnVzSW50ZXJm YWNlOjpub3RWYWxpZERlcml2ZWQoKQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2d1 aS9rZXJuZWwvcWtleXNlcXVlbmNlL3RzdF9xa2V5c2VxdWVuY2UuY3BwIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UvdHN0X3FrZXlzZXF1ZW5jZS5jcHAKK2luZGV4 IDg3NDQ2OGM5NTQuLjA0Y2ViNGFiNjUgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9n dWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3RfcWtleXNlcXVlbmNlLmNwcAorKysrIGIvcXRiYXNl L3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UvdHN0X3FrZXlzZXF1ZW5jZS5jcHAK K0BAIC01MDcsNiArNTA3LDEwIEBAIHZvaWQgdHN0X1FLZXlTZXF1ZW5jZTo6dG9TdHJpbmdGcm9t S2V5Y29kZV9kYXRhKCkKKyAgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCtBbHQrTnVtK0RlbCIpIDw8 IFFLZXlTZXF1ZW5jZShRdDo6Q29udHJvbE1vZGlmaWVyIHwgUXQ6OkFsdE1vZGlmaWVyIHwgUXQ6 OktleXBhZE1vZGlmaWVyIHwgUXQ6OktleV9EZWxldGUpIDw8ICJDdHJsK0FsdCtOdW0rRGVsIjsK KyAgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCtJbnMiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OkNvbnRy b2xNb2RpZmllciB8IFF0OjpLZXlfSW5zZXJ0KSA8PCAiQ3RybCtJbnMiOworICAgICBRVGVzdDo6 bmV3Um93KCJDdHJsK051bStJbnMoMSkiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9JbnNlcnQg fCBRdDo6S2V5cGFkTW9kaWZpZXIgfCBRdDo6Q29udHJvbE1vZGlmaWVyKSA8PCAiQ3RybCtOdW0r SW5zIjsKKysgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5 X0NvbnRyb2wpIDw8ICJDb250cm9sIjsKKysgICAgUVRlc3Q6Om5ld1JvdygiQWx0IikgPDwgUUtl eVNlcXVlbmNlKFF0OjpLZXlfQWx0KSA8PCAiQWx0IjsKKysgICAgUVRlc3Q6Om5ld1JvdygiU2hp ZnQiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9TaGlmdCkgPDwgIlNoaWZ0IjsKKysgICAgUVRl c3Q6Om5ld1JvdygiTWV0YSIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X01ldGEpIDw8ICJNZXRh IjsKKyB9CisgCisgdm9pZCB0c3RfUUtleVNlcXVlbmNlOjp0b1N0cmluZ0Zyb21LZXljb2RlKCkK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNlL3Rz dF9xZm9udGRhdGFiYXNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS90ZXh0L3Fmb250ZGF0 YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwCitpbmRleCAxNWUwZWNhZGFhLi5iNGVjYTc0Mjgz IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS90 c3RfcWZvbnRkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS90ZXh0L3Fm b250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwCitAQCAtODEsNiArODEsOCBAQCBwcml2 YXRlIHNsb3RzOgorICAgICB2b2lkIHJlZ2lzdGVyT3BlblR5cGVQcmVmZXJyZWROYW1lc1N5c3Rl bSgpOworICAgICB2b2lkIHJlZ2lzdGVyT3BlblR5cGVQcmVmZXJyZWROYW1lc0FwcGxpY2F0aW9u KCk7CisgCisrICAgIHZvaWQgc3RyZXRjaFJlc3BlY3RlZCgpOworKworIHByaXZhdGU6CisgICAg IFFTdHJpbmcgbV9sZWRGb250OworICAgICBRU3RyaW5nIG1fdGVzdEZvbnQ7CitAQCAtMzU1LDYg KzM1NywyOCBAQCBzdGF0aWMgUVN0cmluZyB0ZXN0U3RyaW5nKCkKKyAgICAgcmV0dXJuIFFTdHJp bmdMaXRlcmFsKCJmb28gYmFyIik7CisgfQorIAorK3ZvaWQgdHN0X1FGb250RGF0YWJhc2U6OnN0 cmV0Y2hSZXNwZWN0ZWQoKQorK3sKKysgICAgaW50IGl0YWxpY0lkID0gUUZvbnREYXRhYmFzZTo6 YWRkQXBwbGljYXRpb25Gb250KG1fdGVzdEZvbnRJdGFsaWMpOworKyAgICBRVkVSSUZZKGl0YWxp Y0lkICE9IC0xKTsKKysKKysgICAgUVZFUklGWSghUUZvbnREYXRhYmFzZTo6YXBwbGljYXRpb25G b250RmFtaWxpZXMoaXRhbGljSWQpLmlzRW1wdHkoKSk7CisrCisrICAgIFFTdHJpbmcgaXRhbGlj Rm9udE5hbWUgPSBRRm9udERhdGFiYXNlOjphcHBsaWNhdGlvbkZvbnRGYW1pbGllcyhpdGFsaWNJ ZCkuZmlyc3QoKTsKKysKKysgICAgUUZvbnQgaXRhbGljRm9udCA9IFFGb250RGF0YWJhc2UoKS5m b250KGl0YWxpY0ZvbnROYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVN0cmluZzo6ZnJvbUxhdGluMSgiSXRhbGljIiksIDE0KTsKKysgICAgUVZFUklG WShpdGFsaWNGb250Lml0YWxpYygpKTsKKysKKysgICAgUUZvbnQgaXRhbGljU3RyZXRjaGVkRm9u dCA9IGl0YWxpY0ZvbnQ7CisrICAgIGl0YWxpY1N0cmV0Y2hlZEZvbnQuc2V0U3RyZXRjaCggNDAw ICk7CisrCisrICAgIFFWRVJJRlkoUUZvbnRNZXRyaWNzRihpdGFsaWNGb250KS5ob3Jpem9udGFs QWR2YW5jZShRU3RyaW5nTGl0ZXJhbCgiZm9vYmFyIikpIDwKKysgICAgICAgICAgICBRRm9udE1l dHJpY3NGKGl0YWxpY1N0cmV0Y2hlZEZvbnQpLmhvcml6b250YWxBZHZhbmNlKFFTdHJpbmdMaXRl cmFsKCJmb29iYXIiKSkpOworKworKyAgICBRRm9udERhdGFiYXNlOjpyZW1vdmVBcHBsaWNhdGlv bkZvbnQoaXRhbGljSWQpOworK30KKysKKyB2b2lkIHRzdF9RRm9udERhdGFiYXNlOjpjb25kZW5z ZWRGb250V2lkdGhOb0ZvbnRNZXJnaW5nKCkKKyB7CisgICAgIGludCByZWd1bGFyRm9udElkID0g UUZvbnREYXRhYmFzZTo6YWRkQXBwbGljYXRpb25Gb250KG1fdGVzdEZvbnQpOworZGlmZiAtLWdp dCBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHkvdHN0X3Fu ZXR3b3JrcmVwbHkuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9hY2Nlc3MvcW5ldHdv cmtyZXBseS90c3RfcW5ldHdvcmtyZXBseS5jcHAKK2luZGV4IDNkNGEwOTRjNDMuLmI0MjNlMTFh OTkgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL2FjY2Vzcy9xbmV0d29y a3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0 d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBseS5jcHAKK0BAIC0yODEs NiArMjgxLDcgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIGlvR2V0RnJvbUZpbGVTcGVj aWFsKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRmlsZV9kYXRhKCk7CisgICAgIHZvaWQgaW9HZXRG cm9tRmlsZSgpOworKyAgICB2b2lkIGlvR2V0RnJvbUZpbGVVcmwoKTsKKyAgICAgdm9pZCBpb0dl dEZyb21GdHBfZGF0YSgpOworICAgICB2b2lkIGlvR2V0RnJvbUZ0cCgpOworICAgICB2b2lkIGlv R2V0RnJvbUZ0cFdpdGhSZXVzZSgpOworQEAgLTMzMDAsNiArMzMwMSwxOCBAQCB2b2lkIHRzdF9R TmV0d29ya1JlcGx5Ojppb0dldEZyb21GaWxlKCkKKyAgICAgUUNPTVBBUkUocmVhZGVyLmRhdGEs IGRhdGEpOworIH0KKyAKKyt2b2lkIHRzdF9RTmV0d29ya1JlcGx5Ojppb0dldEZyb21GaWxlVXJs KCkKKyt7CisrICAgIC8vIFRoaXMgaW1tZWRpYXRlbHkgZmFpbHMgb24gbm9uLXdpbmRvd3MgcGxh dGZvcm1zOgorKyAgICBRTmV0d29ya1JlcXVlc3QgcmVxdWVzdChRVXJsKCJmaWxlOi8vdW5jLXNl cnZlci9zb21lL3BhdGgiKSk7CisrICAgIFFOZXR3b3JrUmVwbHlQdHIgcmVwbHkobWFuYWdlci5n ZXQocmVxdWVzdCkpOworKyAgICBRU2lnbmFsU3B5IGZpbmlzaGVkU3B5KHJlcGx5LmdldCgpLCAm UU5ldHdvcmtSZXBseTo6ZmluaXNoZWQpOworKyAgICAvLyBRVEJVRy0xMDU2MTg6IFRoaXMgd291 bGQsIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3JtcywgbmV2ZXIgaGFwcGVuIGJlY2F1c2UgdGhlIHNp Z25hbAorKyAgICAvLyB3YXMgZW1pdHRlZCBiZWZvcmUgdGhlIGNvbnN0cnVjdG9yIGZpbmlzaGVk LCBsZWF2aW5nIG5vIGNoYW5jZSBhdCBhbGwgdG8gY29ubmVjdCB0byB0aGUKKysgICAgLy8gc2ln bmFsCisrICAgIFFWRVJJRlkoZmluaXNoZWRTcHkud2FpdCgpKTsKKyt9CisrCisgdm9pZCB0c3Rf UU5ldHdvcmtSZXBseTo6aW9HZXRGcm9tRnRwX2RhdGEoKQorIHsKKyAgICAgUVRlc3Q6OmFkZENv bHVtbjxRU3RyaW5nPigiZmlsZU5hbWUiKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0 by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmNlcnQgYi9xdGJhc2UvdGVzdHMv YXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmNlcnQKK2luZGV4IDA2OWZh NmIzNDEuLjRjYzRkOWE1ZWEgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3Jr L3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmNlcnQKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRv L25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2UuY2VydAorQEAgLTEsNzUgKzEsMzQg QEAKKy1DZXJ0aWZpY2F0ZToKKy0gICAgRGF0YToKKy0gICAgICAgIFZlcnNpb246IDMgKDB4MikK Ky0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDAgKDB4MCkKKy0gICAgICAgIFNpZ25hdHVyZSBBbGdv cml0aG06IHNoYTFXaXRoUlNBRW5jcnlwdGlvbgorLSAgICAgICAgSXNzdWVyOiBDPU5PLCBTVD1P c2xvLCBMPU55ZGFsZW4sIE89Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5 KC1pZXMpLCBPVT1EZXZlbG9wbWVudCwgQ049Zmx1a2UudHJvbGwubm8vZW1haWxBZGRyZXNzPWFo YW5zc2VuQHRyb2xsdGVjaC5jb20KKy0gICAgICAgIFZhbGlkaXR5CistICAgICAgICAgICAgTm90 IEJlZm9yZTogRGVjICA0IDAxOjEwOjMyIDIwMDcgR01UCistICAgICAgICAgICAgTm90IEFmdGVy IDogQXByIDIxIDAxOjEwOjMyIDIwMzUgR01UCistICAgICAgICBTdWJqZWN0OiBDPU5PLCBTVD1P c2xvLCBPPU5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKSwgT1U9 RGV2ZWxvcG1lbnQsIENOPWZsdWtlLnRyb2xsLm5vCistICAgICAgICBTdWJqZWN0IFB1YmxpYyBL ZXkgSW5mbzoKKy0gICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlv bgorLSAgICAgICAgICAgIFJTQSBQdWJsaWMgS2V5OiAoMTAyNCBiaXQpCistICAgICAgICAgICAg ICAgIE1vZHVsdXMgKDEwMjQgYml0KToKKy0gICAgICAgICAgICAgICAgICAgIDAwOmE3OmM4OmEw OjRhOmM0OjE5OjA1OjFiOjY2OmJhOjMyOmUyOmQyOmYxOgorLSAgICAgICAgICAgICAgICAgICAg MWM6NmY6MTc6ODI6ZTQ6Mzk6MmU6MDE6NTE6OTA6ZGI6MDQ6MzQ6MzI6MTE6CistICAgICAgICAg ICAgICAgICAgICAyMTpjMjowZDo2Zjo1OTpkODo1Mzo5MDo1NDozZjo4Mzo4ZjphOTpkMzpiMzoK Ky0gICAgICAgICAgICAgICAgICAgIGQ1OmVlOjFhOjliOjgwOmFlOmMzOjI1OmM5OjVlOmE1OmFm OjRiOjYwOjA1OgorLSAgICAgICAgICAgICAgICAgICAgYWE6YTA6ZDE6OTE6MDE6MWY6Y2E6MDQ6 ODM6ZTM6NTg6MWM6OTk6MzI6NDU6CistICAgICAgICAgICAgICAgICAgICA4NDo3MDo3Mjo1ODow Mzo5ODo0YTo2Mzo4Yjo0MTpmNTowODo0OTpkMjo5MToKKy0gICAgICAgICAgICAgICAgICAgIDAy OjYwOjZiOmU0OjY0OmZlOmRkOmEwOmFhOjc0OjA4OmU5OjM0OjRjOjkxOgorLSAgICAgICAgICAg ICAgICAgICAgNWY6MTI6M2Q6Mzc6NGQ6NTQ6MmM6YWQ6N2Y6NWI6OTg6NjA6MzY6MDI6OGM6Cist ICAgICAgICAgICAgICAgICAgICAzYjpmNjo0NTpmMzoyNzo2YTo5Yjo5NDo5ZAorLSAgICAgICAg ICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCistICAgICAgICBYNTA5djMgZXh0ZW5z aW9uczoKKy0gICAgICAgICAgICBYNTA5djMgQmFzaWMgQ29uc3RyYWludHM6IAorLSAgICAgICAg ICAgICAgICBDQTpGQUxTRQorLSAgICAgICAgICAgIE5ldHNjYXBlIENvbW1lbnQ6IAorLSAgICAg ICAgICAgICAgICBPcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZQorLSAgICAgICAgICAgIFg1 MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKKy0gICAgICAgICAgICAgICAgMjE6ODU6MDQ6 M0Q6MjM6MDE6NjY6RTU6Rjc6OUY6MUE6ODQ6MjQ6OEE6QUY6MEE6Nzk6RjQ6RTU6QUMKKy0gICAg ICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiAKKy0gICAgICAgICAgICAg ICAgRGlyTmFtZTovQz1OTy9TVD1Pc2xvL0w9TnlkYWxlbi9PPU5va2lhIENvcnBvcmF0aW9uIGFu ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS9PVT1EZXZlbG9wbWVudC9DTj1mbHVrZS50cm9sbC5u by9lbWFpbEFkZHJlc3M9YWhhbnNzZW5AdHJvbGx0ZWNoLmNvbQorLSAgICAgICAgICAgICAgICBz ZXJpYWw6OEU6QTg6QjQ6RTg6OTE6Qjc6NTQ6MkUKKy0KKy0gICAgU2lnbmF0dXJlIEFsZ29yaXRo bTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCistICAgICAgICA2ZDo1Nzo1ZjpkMTowNTo0MzpmMDo2 MjowNTplYzoyYTo3MTphNTpkYzoxOTowODpmMjpjNDoKKy0gICAgICAgIGE2OmJkOmJiOjI1OmQ5 OmNhOjg5OjAxOjBlOmU0OmNmOjFmOmMxOjhjOmM4OjI0OjE4OjM1OgorLSAgICAgICAgNTM6NTk6 N2I6YzA6NDM6YjQ6MzI6ZTY6OTg6YjI6YTY6ZWY6MTU6MDU6MGI6NDg6NWY6ZTE6CistICAgICAg ICBhMDowYzo5NzphOTphMTo3NzpkODozNToxODozMDpiYzphOTo4ZjpkMzpiNzo1NDpjNzpmMToK Ky0gICAgICAgIGE5OjllOjVkOmU2OjE5OmJmOmY2OjNjOjViOjJiOmQ4OmU0OjNlOjYyOjE4Ojg4 OjhiOmQzOgorLSAgICAgICAgMjQ6ZTE6NDA6OWI6MGM6ZTY6Mjk6MTY6NjI6YWI6ZWE6MDU6MjQ6 NzA6MzY6YWE6NTU6OTM6CistICAgICAgICBlZjowMjo4MToxYjoyMzoxMDphMjowNDplYjo1Njo5 NTo3NTpmYzpmODo5NDpiMTo1ZDo0MjoKKy0gICAgICAgIGM1OjNmOjM2OjQ0Ojg1OjVkOjNhOjJl OjkwOjQ2OjhhOmEyOmI5OjZmOjg3OmFlOjBjOjE1OgorLSAgICAgICAgNDA6MTk6MzE6OTA6ZmM6 M2I6MjU6YmI6YWU6ZjE6NjY6MTM6MGQ6ODU6OTA6ZDk6NDk6MzQ6CistICAgICAgICA4ZjpmMjo1 ZDpmOTo3YTpkYjo0ZDo1ZDoyNzpmNjo3Njo5ZDozNTo4YzowNjphNjo0YzphMzoKKy0gICAgICAg IGIxOmIyOmI2OjZmOjFkOmQ3OmEzOjAwOmZkOjcyOmViOjllOmVhOjQ0OmExOmFmOjIxOjM0Ogor LSAgICAgICAgN2Q6Yzc6NDI6ZTI6NDk6OTE6MTk6OGI6YzA6YWQ6YmE6ODI6ODA6YTg6NzE6NzA6 ZjQ6MzU6CistICAgICAgICAzMTo5MTo2Mzo4NDoyMDo5NTplOTo2MDphZjo2NDo4YjpjYzpmZjoz ZDo4YTo3Njo3NDozZDoKKy0gICAgICAgIGM4OjU1OjZkOmU0OjhlOmMzOjJiOjFjOmU4OjQyOjE4 OmFlOjlmOmU2OjZiOjljOjM0OjA2OgorLSAgICAgICAgZWM6NmE6ZjI6YzMKKyAtLS0tLUJFR0lO IENFUlRJRklDQVRFLS0tLS0KKy1NSUlFRXpDQ0F2dWdBd0lCQWdJQkFEQU5CZ2txaGtpRzl3MEJB UVVGQURDQm5ERUxNQWtHQTFVRUJoTUNUazh4CistRFRBTEJnTlZCQWdUQkU5emJHOHhFREFPQmdO VkJBY1RCMDU1WkdGc1pXNHhGakFVQmdOVkJBb1REVlJ5YjJ4cworLWRHVmphQ0JCVTBFeEZEQVNC Z05WQkFzVEMwUmxkbVZzYjNCdFpXNTBNUmN3RlFZRFZRUURFdzVtYkhWclpTNTAKKy1jbTlzYkM1 dWJ6RWxNQ01HQ1NxR1NJYjNEUUVKQVJZV1lXaGhibk56Wlc1QWRISnZiR3gwWldOb0xtTnZiVEFl CistRncwd056RXlNRFF3TVRFd016SmFGdzB6TlRBME1qRXdNVEV3TXpKYU1HTXhDekFKQmdOVkJB WVRBazVQTVEwdworLUN3WURWUVFJRXdSUGMyeHZNUll3RkFZRFZRUUtFdzFVY205c2JIUmxZMmdn UVZOQk1SUXdFZ1lEVlFRTEV3dEUKKy1aWFpsYkc5d2JXVnVkREVYTUJVR0ExVUVBeE1PWm14MWEy VXVkSEp2Ykd3dWJtOHdnWjh3RFFZSktvWklodmNOCistQVFFQkJRQURnWTBBTUlHSkFvR0JBS2ZJ b0VyRUdRVWJacm95NHRMeEhHOFhndVE1TGdGUmtOc0VORElSSWNJTgorLWIxbllVNUJVUDRPUHFk T3oxZTRhbTRDdXd5WEpYcVd2UzJBRnFxRFJrUUVmeWdTRDQxZ2NtVEpGaEhCeVdBT1kKKy1TbU9M UWZVSVNkS1JBbUJyNUdUKzNhQ3FkQWpwTkV5Ulh4STlOMDFVTEsxL1c1aGdOZ0tNTy9aRjh5ZHFt NVNkCistQWdNQkFBR2pnZ0VhTUlJQkZqQUpCZ05WSFJNRUFqQUFNQ3dHQ1dDR1NBR0crRUlCRFFR ZkZoMVBjR1Z1VTFOTQorLUlFZGxibVZ5WVhSbFpDQkRaWEowYVdacFkyRjBaVEFkQmdOVkhRNEVG Z1FVSVlVRVBTTUJadVgzbnhxRUpJcXYKKy1Dbm4wNWF3d2dic0dBMVVkSXdTQnN6Q0JzS0dCb3FT Qm56Q0JuREVMTUFrR0ExVUVCaE1DVGs4eERUQUxCZ05WCistQkFnVEJFOXpiRzh4RURBT0JnTlZC QWNUQjA1NVpHRnNaVzR4RmpBVUJnTlZCQW9URFZSeWIyeHNkR1ZqYUNCQgorLVUwRXhGREFTQmdO VkJBc1RDMFJsZG1Wc2IzQnRaVzUwTVJjd0ZRWURWUVFERXc1bWJIVnJaUzUwY205c2JDNXUKKy1i ekVsTUNNR0NTcUdTSWIzRFFFSkFSWVdZV2hoYm5OelpXNUFkSEp2Ykd4MFpXTm9MbU52YllJSkFJ Nm90T2lSCistdDFRdU1BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQnRWMS9SQlVQd1lnWHNLbkds M0JrSThzU212YnNsMmNxSgorLUFRN2t6eC9Cak1na0dEVlRXWHZBUTdReTVwaXlwdThWQlF0SVgr R2dESmVwb1hmWU5SZ3d2S21QMDdkVXgvR3AKKy1ubDNtR2IvMlBGc3IyT1ErWWhpSWk5TWs0VUNi RE9ZcEZtS3I2Z1VrY0RhcVZaUHZBb0ViSXhDaUJPdFdsWFg4CistK0pTeFhVTEZQelpFaFYwNkxw QkdpcUs1YjRldURCVkFHVEdRL0RzbHU2N3haaE1OaFpEWlNUU1A4bDM1ZXR0TgorLVhTZjJkcDAx akFhbVRLT3hzclp2SGRlakFQMXk2NTdxUktHdklUUjl4MExpU1pFWmk4Q3R1b0tBcUhGdzlEVXgK Ky1rV09FSUpYcFlLOWtpOHovUFlwMmREM0lWVzNranNNckhPaENHSzZmNW11Y05BYnNhdkxECisr TUlJRjZ6Q0NBOU9nQXdJQkFnSVVmbzlhbUp0SkdXcVdFNmYrU2tBTzg1emtHcjR3RFFZSktvWklo dmNOQVFFTAorK0JRQXdnWU14Q3pBSkJnTlZCQVlUQWs1UE1RMHdDd1lEVlFRSURBUlBjMnh2TVEw d0N3WURWUVFIREFSUGMyeHYKKytNUmN3RlFZRFZRUUtEQTVVYUdVZ1VYUWdRMjl0Y0dGdWVURU1N QW9HQTFVRUN3d0RVaVpFTVJJd0VBWURWUVFECisrREFsSU1pQlVaWE4wWlhJeEd6QVpCZ2txaGtp Rzl3MEJDUUVXREcxcGJtbHRhVUJ4ZEM1cGJ6QWdGdzB5TURFdworK01qWXhNakF4TXpGYUdBOHlN VEl3TVRBd01qRXlNREV6TVZvd2dZTXhDekFKQmdOVkJBWVRBazVQTVEwd0N3WUQKKytWUVFJREFS UGMyeHZNUTB3Q3dZRFZRUUhEQVJQYzJ4dk1SY3dGUVlEVlFRS0RBNVVhR1VnVVhRZ1EyOXRjR0Z1 CisrZVRFTU1Bb0dBMVVFQ3d3RFVpWkVNUkl3RUFZRFZRUUREQWxJTWlCVVpYTjBaWEl4R3pBWkJn a3Foa2lHOXcwQgorK0NRRVdERzFwYm1sdGFVQnhkQzVwYnpDQ0FpSXdEUVlKS29aSWh2Y05BUUVC QlFBRGdnSVBBRENDQWdvQ2dnSUIKKytBT2lVcDUrRTRibG91S0g3cStyVk5SOE5vWVgyWGtCVytx K3JweTF6dTVzc1JTemJxeEFqRHg5ZGtodDdRbG5mCisrVmxEVDAwSnZwT1dkZXVQb241OTE1ZWRR UnNZNFVubDZtS0gyOXJhM090VWExL3lDSlhzR1ZKVEtDajdrNEJ4YgorKzVtWnpiL2ZUbFpudE1M ZFRJQk1mVWJ3NjJGS2lyMVdqS0ljSjlmQ29HOEphR2VLVk80Umg1cDBlemQ0VVVVSWQKKytyMUJY bDVOcWRxeTJ2VE1zRURuak9zRDNlZ2t2OEkyU0tONE82bi9DM3dXWXBNT1dZWmtHb1ppS3o3ckpz L2kvCisrZXo3YnNWN0psd2R6VGxocEp6a2NPU1ZGQlA2SmxFT3hUTk54WjF3dEt5N1B0Wkdtc1NT QVRxMmU2K2J3MzhBZQorK09wMFhuenpxY0dqdEREb2ZCbVQ3T0Z6WldqUzlWWlM2K0RPT2UyUUhX bGUxbkNIY0h5SDRrdTZJUmxzcjl4a1IKKytOQUlsT2ZudkhIeHFKVWVub2VhWjRvUURqQ0JLUzFL WHlnSk8vdEw3QkxUUVZuL3hLMUVtUHZLTm5qeldrNHRSCisrUG5pYlVoaHM1NjM1cXBPVS9ZUHFG QmgxSmpWcnVaYnNXY0RBaFJjZXcwdXhPTlhPYTlFKzRsdHRROXlTWWExQQorK0x2V3FKdUFYN2d1 MkJzQk1MeXFmbTgxMVluQTdDSUZNeU8rSGxxbWtMRmZ2NUwveElSQVhSN2wyNllHTzBWd1gKKytD R2pNZno0TlZQTU1rZTRuQjdxYTlOa3BYUUJRS01tczNRemQ1SlcwSHk5UnVqNU84R1BjRlptVjB0 d2pkMXVKCisrUEQvY0Fqa1dMYVhqZE5zSjE2UVdjMm5naFFSUzZIWXFLUlg2aitDWE94dXBBZ01C QUFHalV6QlJNQjBHQTFVZAorK0RnUVdCQlJTQ09VNThqOU5KWmtNYW10NjIzcXlDcmhOM1RBZkJn TlZIU01FR0RBV2dCUlNDT1U1OGo5Tkpaa00KKythbXQ2MjNxeUNyaE4zVEFQQmdOVkhSTUJBZjhF QlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUNBUUNxCisrcTRqeHNXZU5EdjVOcTE0aEp0 RjlIQitaTDY0emNadFJqSlAxWWdOczBRcHBLSUNtalBPTDJuSU1HbUkvaktycworKzBlR0FMLzlY WE5WSFB4bTFPUE9uY3ZpbU1NbVU2ZW1aZnBNZEV0VGZLUDQzK1BnOUhnS1JqTG9RcDQwNnZHZVEK Kys4a2kvbWJCaHJJdFZQZ0VtM3R1MkFGQTAyWFRZaStZeENJOWtSWkxHa00zRmJndE91VExQbDBa OXkra2lQYzlGCisrdUNTQzAzYW5CRXF2K3ZEU0k4K3dPRHltUS9JSjNKeXoxbHhJUkRmcDRxQWVr bXkwalUyYzkxVk9ISEVtT21xcQorK2txeWdHRlJkd2JlOTltOXlQNjNyNnEwYjVLM1gyVW5KNmJu czBobVR3VGhZd3BWUFhMVThqZGFUZGRiTXVrTjIKKysvRWY5NlRzdzhuV09FT1BNeVNIT1RJUGd3 eVpScDI2YjBrQTlFbWhMd09QNDAxU3hYVlFDbVNSbXR3TmFnbXRnCisrakpLbVpvWUJOKy8vRDQ1 aWJLOHo2UTBvT205UCtXaGYvdVVYZWhjUnhCeHlWM3h6N2swd0tHUWJIai9kZHdjeQorK0lVb0lO NGxyQWxpYitsSzE3MGtUS04zNTJQRG1ycG8yZ21JelBFc2Z1cktBSU1TZWxEbDZIK2tpaDE2QnRa OHkKKytOejZmaDlTb3FyZzNPU0F3YXJlOHB4VjdrNTFjckJNb1BMTjc4S29SVjhNRkNLNEs3RmRk cTRyUklTcTZoaVhxCisrcjFuc2pvRVB1S005aHVwcm1aVlplOXQ1WWNEYTJJK3diM0lpRTN1d3Ba YkFkYUxEeVE1bjZGL3Fwc2lJa1pYbgorK2d0Y0Y3b3FwRzVvWXJ3Q2NaNTN5L2V6VWdVZzdQbFN6 Mlh3QUd2UXRnZz09CisgLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQorZGlmZiAtLWdpdCBhL3F0 YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2Uua2V5IGIv cXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5rZXkK K2luZGV4IDlkMTY2NGQ2MDkuLjMzN2NlNTQxYTYgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMv YXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmtleQorKysrIGIvcXRiYXNl L3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5rZXkKK0BAIC0x LDE1ICsxLDUyIEBACistLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQorLU1JSUNYQUlC QUFLQmdRQ255S0JLeEJrRkcyYTZNdUxTOFJ4dkY0TGtPUzRCVVpEYkJEUXlFU0hDRFc5WjJGT1EK Ky1WRCtEajZuVHM5WHVHcHVBcnNNbHlWNmxyMHRnQmFxZzBaRUJIOG9FZytOWUhKa3lSWVJ3Y2xn RG1FcGppMEgxCistQ0VuU2tRSmdhK1JrL3QyZ3FuUUk2VFJNa1Y4U1BUZE5WQ3l0ZjF1WVlEWUNq RHYyUmZNbmFwdVVuUUlEQVFBQgorLUFvR0FORnpMa2FuVGVTR05GTTB1dHRCaXBGVDlGNGEwMGRx SHo2Sm5PN3pYQVQyNkk1cjhzVTFwcVFCYjZ1THoKKy0vK1F6NVp3azhSVUFRY3NNUmdKZXR1UFFV YjBKWmpGNkR1djI0aE5henFYQkN1N0FaelVlbmphZndtS0MvOHJpCistS3BYM2ZUd3F6ZnppLy9G S0dnYlhRODB5eWtTU2xpREwza24vZHJBVHhzTENnUUVDUVFEWGhFRldMSjB2VloxcworLTFFa2Yr M05JVEUrRFIxNlgrTFE0VzZ2eUVIQWpUYmFOV3RjVEtkQVdMQTJsNk40V0FBUFlTaTZhd20rek14 eDQKKy1Wb21WVHNqZEFrRUF4MHorZTduYXRMZUZjcnJxOHBiVSt3YTZTQVAxVmZoUVdLaXR4TDFl N3UvUU85ME5DcHhFCistb1FZS3pNa21tcE9PRmpRd0VNQXkxZHZGTWJtNExIbGV3UUpBQy9rc0RC YVVjUUhIcWprdEN0clViOHJWakF5VworLUE4bHNjY2tlQjJmRVl5RzVKNmRKVmFZNENsTk9PczV5 TURTMkFmazFGNkgveEt2dFEvNUN6SW5BL1FKQVREdWIKKy1LK0JQVThqTzlxK2dwdUlpM1ZJWmR1 cHNzVkdtQ2dPYlZDSExha0c0dU8wNHk5SXlQaFY5bEE5dEFMdG9JZjRjCistVkl2djVmV0dYQnJa NDhrWkFRSkJBSm1WQ2R6UXhkOUxaSTV2eGlqVUNqNUVJNGUreDVEUnFWVXZ5UDhLQ1pyQworLUFp TnlvRFA4NVQraEJaYVNYSzNhWUdwVndlbHlqM2J2bzFHclROd05XTHc9CistLS0tLS1FTkQgUlNB IFBSSVZBVEUgS0VZLS0tLS0KKystLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS0KKytNSUlKUWdJ QkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTd3dnZ2tvQWdFQUFvSUNBUURvbEtlZmhPRzVhTGlo CisrKzZ2cTFUVWZEYUdGOWw1QVZ2cXZxNmN0Yzd1YkxFVXMyNnNRSXc4ZlhaSWJlMEpaMzFaUTA5 TkNiNlRsblhyagorKzZKK2ZkZVhuVUViR09GSjVlcGloOXZhMnR6clZHdGY4Z2lWN0JsU1V5Z28r NU9BY1crWm1jMi8zMDVXWjdUQzMKKytVeUFUSDFHOE90aFNvcTlWb3lpSENmWHdxQnZDV2huaWxU dUVZZWFkSHMzZUZGRkNIYTlRVjVlVGFuYXN0cjB6CisrTEJBNTR6ckE5M29KTC9DTmtpamVEdXAv d3Q4Rm1LVERsbUdaQnFHWWlzKzZ5YlA0djNzKzI3RmV5WmNIYzA1WQorK2FTYzVIRGtsUlFUK2la UkRzVXpUY1dkY0xTc3V6N1dScHJFa2dFNnRudXZtOE4vQUhqcWRGNTg4Nm5CbzdRdzYKKytId1pr K3poYzJWbzB2VldVdXZnempudGtCMXBYdFp3aDNCOGgrSkx1aUVaYksvY1pFVFFDSlRuNTd4eDhh aVZICisrcDZIbW1lS0VBNHdnU2t0U2w4b0NUdjdTK3dTMDBGWi84U3RSSmo3eWpaNDgxcE9MVVQ1 NG0xSVliT2V0K2FxVAorK2xQMkQ2aFFZZFNZMWE3bVc3Rm5Bd0lVWEhzTkxzVGpWem12UlB1SmJi VVBja21HdFFDNzFxaWJnRis0THRnYkEKKytUQzhxbjV2TmRXSndPd2lCVE1qdmg1YXBwQ3hYNytT LzhTRVFGMGU1ZHVtQmp0RmNGd2hvekg4K0RWVHpESkh1CisrSndlNm12VFpLVjBBVUNqSnJOME0z ZVNWdEI4dlVibytUdkJqM0JXWmxkTGNJM2RiaVR3LzNBSTVGaTJsNDNUYgorK0NkZWtGbk5wNElV RVV1aDJLaWtWK28vZ2x6c2JxUUlEQVFBQkFvSUNBRncxcTZ0cjVJNDh2WTdERityWHN1TG4KKys1 WlVXRTFJUTZmekI0bHI3Mm5Kdi85RUVHbk1nWXp0OVBwTVVzRDZ2ZENwQmdTMkMwKzZSSEFyRnpK dE5BK1JNCisraUhMSUc3Szc3MDJ2ZXlyL3hCeC9Nd2lTbE1lTXYvWHBrRnhWSTZFNnNrTUdHMnMz QU1YeEt2SlR5NUNwUngrSQorK2VRRnlMRytZYTFYMmxnSmVzL3ErL0NwQUhrT2pDT3BjTHlTUUM1 Tlo3NHE3MzRWN25TZG1uK1pzM3RZRWgrTy8KKytlaXV3VFAvajViMzhUZTV2VlRxRHhUY2lKUG1s am1YTEN3YTBOMTAwbFdsYmNwdnc4cWJxaVRJMkptM1hDYlVFCisrQXpIalc5dm1yRjNjUlMxZlh4 S0ZHU2h3M1NScWxrYnhqZmVXb2k4cURQVUJTNG04TE9yOHFHOVdvNU5mb24wegorK3pMUDRiY2kz ekhEdlZjYWFacnJzVUJzL3laYmcrRGdrYTFEbVg3ZWttZWNjcjJ5VGRLREZnUHVwWVV5eFZiVGwK KythOVpMSnlzakZEN3JnQnYxWmNsSG9uTHA2VmJtK1pvVHF2dGVvNGlrQXk2TDlSdEJXSjIzWEVL MzRQa1AvK2M1CisrMnZXWmFPcm5qU2VCSGJGY2U4Y2RKU3hxV3BQK2VTQ0k1STlYYkRyWUZJc1Ev Z3FLZ3R6REt5MmloSjJZOFNUTAorK3lPNGh5RlBGanhjK0dnNC9QMlBwbVQ1Q1kydHk0NE0wQldz K0pHVzk2Q0pQcnJwbGYybG1RVVFKajVMWlk2NlgKKytaLzRDOUw3Wll0S1orYnM1U3ZVNDZ5V3Vn QXZRWlgyMlhtOXhMWFd5VlhSZHgzYmorM00zZkRuRjlkaS96ZGJoCisrQ2dMeDdvV1BOclhjN0ZD YWpubjlBb0lCQVFENUZNWXdScHc5TldUOVdEeFF3eCtjU0k0SWNiZDg4QnlUVzYzUworK0x6ZVJ3 WkEwSjkvU2Z3TythQlJ1cHpjOUdrR1hDaVpjR013M0FHc0N0aWc4eUZsdzhFNUtuek43S2xmdERN bk0KKys5TlV4eHpsUjhWd0t5TG5aZkc3c0RUbDA1N1psVXVqbnFobXQvRjhGN2RJeTdGVk8xZEUv OG5uZ0ErRllUQ09HCisrVVpkR2p3eUJEbERNMEpKZFVXR1kzeHNsdXRjcENETjVtelNUS2p5OWRy TXZJbUFzaFJhd3hSRjZXQnBuN3ZyMgorK25DNnZjaXFmeDFNengxdnlrMEptMGlsYXlkRGRMTUFE anQvaUw0TmtyMEJFczRrK1V6UWlLRHdwOGd1N2FiUTEKKytlQmZ4ZDlJYXI0aHRRYTJJMUV3bDZQ MDFHL3ErWll3Z0hoSjlSVm40QXhRWGVmSUxBb0lCQVFEdkNvdU9SZFFYCisrQzh3c3lwN013WGxG LzNOUWVOTjUvK0IybWhieHJCT2Y3UG1NQ1hMbmtSV2Nqd0p0enlwV0ZxSjBzcWFpLzIrMAorK2Jx Yk1jalg1bWFUOHN0VDJzaGwzelhlL0VqdDJlM1RCWXBjMXR5dXNlczhLYjVCTVU4aHU2dFRkM0cy Q01YcEQKKytkVDZEVmVtSlpDVHR3ajlhQk5JeFNpenZsZ01vbEpuQ3B6aFBubGZIU0k2RStnM20v TFRUbzNId2JqTVN3L1VxCisraXJnak9wSTJ3U0JCNkxaUFNnanZmY1lQUnlXVWsxNkw0QTV1U1gw Y0FEbm92REZMYTUvaDB3SnZOL09vQ1NRZworK3JMQ1hHNUUxOEV5TDVXYzU4QkNZMVp2eG1qRzNs UXRnUHhZdTJKd2MzNlIveS9KS2x4VzVzdUVSNVpOcGJiRDQKKyt1T3lUdDJWeE1RMmJBb0lCQVFD NStNelJGcWRvL0FqZkw1WTVKcmJmVlR6WENURGEwOXhDR2QxNlpVNjBRVFdOCisrKzRlZC9yK28x c1VLcVVjUkZCMk16RU0vMkRRQmpRcFpCL0NiRVd2V2ExWEpXWHh5cFhib3d2ZVpVK1FxT25tTgor K3VRdmo4V0x5QTNvK1BORjllOVF2YXV3Q3JIcG44VnB4YnRQV3VhWW9LblVGcmVGWlpReEhoUEd4 UkJJUzJKT1oKKytlRHJUOFphV25rQ2toMUFacDVzbVE3MUxPcHJTbG1Lcmc0amQxR2pDVk14UVI1 TjVLWGJ0eXYwT1RDWi9VRnFLCisrMmFSQnNNUHlKZ2thQkNoa1pQTFJjS3djKy93bFFSeDFmSFFi MTRETlRBcE14b1hGTzdlT3dxbU9rcEF0OWl5bAorK1NCSXdvUzBVVUk1YWI4OCtiQm1YTnZLY3VG ZE51UTRub3dUSlVuOXBBb0lCQURNTmtJTEJYU3ZTNURlSXl1TzIKKytTcDF0a29aVVYrNU5mUFkz c01ESzNLSWliYVcvK3QrRU9CWm80TDd0S1FDYjh2UnpsMjFtbXNmeGZnUmFQRGJqCisrM3IzdHY5 ZzBiNFlMeHhCeTUycEZzY2ovc29YUmFpMTdTUzdVWndBMlFLK1h6Z0RZYkRjTE5DNm1Jc1RRRzRH eAorK2RzV2szL3pzM0t1VVNRYWVobXdyV0srZklVSzM4YzFwTEs4djdMb3hyTGtxeGxId1owNFJ0 aEh3OEtUdGhIN1gKKytQbmwxSjBMRjhDU2VPeWZXTFN1UFVma1QwR0V6cHRuTkhwRWJhSGZRTTZS NmVhR2hWSlBGNkFabWU0eTZZWWdnCisrbTJpaGhTdDFuMFhWRVdwSFlXanhGeTNtSzJtejc1dW5G QzRMTStORVkycDJ6dVVRb0N3N05qblkzUVlyZkNueAorK3JSTUNnZ0VBWGVYc01TTEZqanl1b0w3 aUtiQXhvNTJIRC9QMGZCb3k1OEx5UmN3Zk5WcjBsdllhbjRwWUV4K28KKytLaWpJaDlLMTZQcVha WEtNQTl2MDAzQit1bG1GOGJKN1NkZENaNU5Hdm5GaFVURGU0RGRUS2dwMlJ1d1EzQnNjCisrM3Nr UElEYmhWRVR5T0xDdHlzMzRVU0hycThVLzBEbEdZM2VMUmZ4dzlHbmJLeFNCR2EvS0V1L3FRTFBO VW81MAorKzd4SFpEZzdHS2VDM2txTkplcUtNOXJrcDBWeklHa0VuYUQ5MTI3TGVORG1FUkRmZnR4 SnpGb0MvVEh2VUJMZlUKKys2U3VzMlpZd1JFOFZGdktDMzBRNDV0L2M1NFgzSXVoWXZBdWlDdVRt eWZFNHJ1eXp5T3dLemhVa2VlTHExQVBYCisrZzB2ZUZieWZ6bEowcThxekQvaWZmcXFJYTJaU21R PT0KKystLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3Rz L2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3RfcWFjY2Vzc2liaWxpdHlsaW51eC5j cHAgYi9xdGJhc2UvdGVzdHMvYXV0by9vdGhlci9xYWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNj ZXNzaWJpbGl0eWxpbnV4LmNwcAoraW5kZXggN2JhMzcxNWUxMy4uNzUyYWExMjJmNiAxMDA2NDQK Ky0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3NpYmlsaXR5bGludXgvdHN0X3Fh Y2Nlc3NpYmlsaXR5bGludXguY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9vdGhlci9xYWNj ZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcAorQEAgLTE3OSw2ICsx NzksNyBAQCB2b2lkIHRzdF9RQWNjZXNzaWJpbGl0eUxpbnV4Ojppbml0VGVzdENhc2UoKQorICAg ICBRVkVSSUZZKCFhZGRyZXNzLmlzRW1wdHkoKSk7CisgCisgICAgIG1fd2luZG93ID0gbmV3IEFj Y2Vzc2libGVUZXN0V2luZG93KCk7CisrICAgIG1fd2luZG93LT5zZXRPYmplY3ROYW1lKCJtYWlu V2luZG93Il9MMSk7CisgICAgIG1fd2luZG93LT5zaG93KCk7CisgCisgICAgIFFWRVJJRlkoUVRl c3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZChtX3dpbmRvdykpOworQEAgLTIzNiw4ICsyMzcsMTEg QEAgYm9vbCBoYXNTdGF0ZShRREJ1c0ludGVyZmFjZSAqaW50ZXJmYWNlLCBBdHNwaVN0YXRlVHlw ZSBzdGF0ZSkKKyB2b2lkIHRzdF9RQWNjZXNzaWJpbGl0eUxpbnV4Ojp0ZXN0TGFiZWwoKQorIHsK KyAgICAgUUxhYmVsICpsID0gbmV3IFFMYWJlbChtX3dpbmRvdyk7CisrICAgIGwtPnNldE9iamVj dE5hbWUoInRoZU9iamVjdE5hbWUiX0wxKTsKKyAgICAgbC0+c2V0VGV4dCgiSGVsbG8gQTExeSIp OworICAgICBtX3dpbmRvdy0+YWRkV2lkZ2V0KGwpOworKyAgICBhdXRvIGExMXlFbXB0eSA9IG5l dyBRTGFiZWwobV93aW5kb3cpOworKyAgICBtX3dpbmRvdy0+YWRkV2lkZ2V0KGwpOworIAorICAg ICAvLyBBcHBsaWNhdGlvbgorICAgICBRQ09NUEFSRShnZXRQYXJlbnQobWFpbldpbmRvdyksIFFM YXRpbjFTdHJpbmcoQVRTUElfREJVU19QQVRIX1JPT1QpKTsKK0BAIC0yNDksNiArMjUzLDggQEAg dm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlMaW51eDo6dGVzdExhYmVsKCkKKyAgICAgUUNPTVBBUkUo Z2V0Q2hpbGRyZW4obGFiZWxJbnRlcmZhY2UpLmNvdW50KCksIDApOworICAgICBRQ09NUEFSRShs YWJlbEludGVyZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ssICJHZXRSb2xlTmFtZSIpLmFyZ3VtZW50 cygpLmZpcnN0KCkudG9TdHJpbmcoKSwgUUxhdGluMVN0cmluZygibGFiZWwiKSk7CisgICAgIFFD T01QQVJFKGxhYmVsSW50ZXJmYWNlLT5jYWxsKFFEQnVzOjpCbG9jaywgIkdldFJvbGUiKS5hcmd1 bWVudHMoKS5maXJzdCgpLnRvVUludCgpLCAyOXUpOworKyAgICBRQ09NUEFSRShsYWJlbEludGVy ZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ssICJHZXRBY2Nlc3NpYmxlSWQiKS5hcmd1bWVudHMoKS5m aXJzdCgpLnRvU3RyaW5nKCksCisrICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIm1haW5XaW5k b3cudGhlT2JqZWN0TmFtZSIpKTsKKyAgICAgUUNPTVBBUkUoZ2V0UGFyZW50KGxhYmVsSW50ZXJm YWNlKSwgbWFpbldpbmRvdy0+cGF0aCgpKTsKKyAgICAgUVZFUklGWSghaGFzU3RhdGUobGFiZWxJ bnRlcmZhY2UsIEFUU1BJX1NUQVRFX0VESVRBQkxFKSk7CisgICAgIFFWRVJJRlkoaGFzU3RhdGUo bGFiZWxJbnRlcmZhY2UsIEFUU1BJX1NUQVRFX1JFQURfT05MWSkpOworQEAgLTI1Niw3ICsyNjIs MTIgQEAgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlMaW51eDo6dGVzdExhYmVsKCkKKyAgICAgbC0+ c2V0VGV4dCgiTmV3IHRleHQiKTsKKyAgICAgUUNPTVBBUkUobGFiZWxJbnRlcmZhY2UtPnByb3Bl cnR5KCJOYW1lIikudG9TdHJpbmcoKSwgbC0+dGV4dCgpKTsKKyAKKysgICAgYXV0byAqYTExeUVt cHR5SW50ZXJmYWNlID0gZ2V0SW50ZXJmYWNlKGNoaWxkcmVuLmF0KDEpLCAib3JnLmExMXkuYXRz cGkuQWNjZXNzaWJsZSIpOworKyAgICBRQ09NUEFSRShhMTF5RW1wdHlJbnRlcmZhY2UtPmNhbGwo UURCdXM6OkJsb2NrLCAiR2V0QWNjZXNzaWJsZUlkIikuYXJndW1lbnRzKCkuZmlyc3QoKS50b1N0 cmluZygpLAorKyAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJtYWluV2luZG93LlFMYWJlbCIp KTsKKysKKyAgICAgbV93aW5kb3ctPmNsZWFyQ2hpbGRyZW4oKTsKKysgICAgZGVsZXRlIGExMXlF bXB0eUludGVyZmFjZTsKKyAgICAgZGVsZXRlIGxhYmVsSW50ZXJmYWNlOworIH0KKyAKK2RpZmYg LS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9zcWwva2VybmVsL3FzcWxxdWVyeS90c3RfcXNxbHF1 ZXJ5LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5L3RzdF9xc3Fs cXVlcnkuY3BwCitpbmRleCA3NmRmNjFjODkyLi42ZDZkNjViNzkxIDEwMDY0NAorLS0tIGEvcXRi YXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5lbC9xc3FscXVlcnkvdHN0X3FzcWxxdWVyeS5jcHAKKysr KyBiL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5L3RzdF9xc3FscXVlcnku Y3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqCistKiogQ29w eXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIw MjIgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xp Y2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0ZXN0IHN1aXRlIG9m IHRoZSBRdCBUb29sa2l0LgorQEAgLTY4LDYgKzY4LDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAg dm9pZCBxdWVyeV9leGVjKCk7CisgICAgIHZvaWQgZXhlY0Vycm9yUmVjb3ZlcnlfZGF0YSgpIHsg Z2VuZXJpY19kYXRhKCk7IH0KKyAgICAgdm9pZCBleGVjRXJyb3JSZWNvdmVyeSgpOworKyAgICB2 b2lkIHByZW1hdHVyZUV4ZWNfZGF0YSgpIHsgZ2VuZXJpY19kYXRhKCk7IH0KKysgICAgdm9pZCBw cmVtYXR1cmVFeGVjKCk7CisgICAgIHZvaWQgZmlyc3RfZGF0YSgpIHsgZ2VuZXJpY19kYXRhKCk7 IH0KKyAgICAgdm9pZCBmaXJzdCgpOworICAgICB2b2lkIG5leHRfZGF0YSgpIHsgZ2VuZXJpY19k YXRhKCk7IH0KK0BAIC0yNzcwLDYgKzI3NzIsMzUgQEAgdm9pZCB0c3RfUVNxbFF1ZXJ5OjpleGVj RXJyb3JSZWNvdmVyeSgpCisgICAgIFFWRVJJRllfU1FMKCBxLCBleGVjKCkgKTsKKyB9CisgCisr dm9pZCB0c3RfUVNxbFF1ZXJ5OjpwcmVtYXR1cmVFeGVjKCkKKyt7CisrICAgIFFGRVRDSChRU3Ry aW5nLCBkYk5hbWUpOworKyAgICAvLyBXZSBvbmx5IHdhbnQgdGhlIGVuZ2luZSBuYW1lLCBmb3Ig YWRkRGF0YWJhc2UoKToKKysgICAgaW50IGN1dCA9IGRiTmFtZS5pbmRleE9mKFFDaGFyKCdAJykp OworKyAgICBpZiAoY3V0IDwgMCkKKysgICAgICAgIFFTS0lQKCJGYWlsZWQgdG8gcGFyc2UgZGF0 YWJhc2UgdHlwZSBvdXQgb2YgbmFtZSIpOworKyAgICBkYk5hbWUudHJ1bmNhdGUoY3V0KTsKKysg ICAgY3V0ID0gZGJOYW1lLmluZGV4T2YoUUNoYXIoJ18nKSk7CisrICAgIGlmIChjdXQgPj0gMCkK KysgICAgICAgIGRiTmFtZSA9IGRiTmFtZS5taWQoY3V0ICsgMSk7CisrCisrICAgIGF1dG8gZGIg PSBRU3FsRGF0YWJhc2U6OmFkZERhdGFiYXNlKGRiTmFtZSk7CisrICAgIFFTcWxRdWVyeSBxKGRi KTsKKysKKysgICAgUVRlc3Q6Omlnbm9yZU1lc3NhZ2UoUXRXYXJuaW5nTXNnLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAiUVNxbERhdGFiYXNlUHJpdmF0ZTo6cmVtb3ZlRGF0YWJhc2U6IGNv bm5lY3Rpb24gIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAiJ3F0X3NxbF9kZWZhdWx0X2Nv bm5lY3Rpb24nIGlzIHN0aWxsIGluIHVzZSwgYWxsICIKKysgICAgICAgICAgICAgICAgICAgICAg ICAgInF1ZXJpZXMgd2lsbCBjZWFzZSB0byB3b3JrLiIpOworKyAgICBRVGVzdDo6aWdub3JlTWVz c2FnZShRdFdhcm5pbmdNc2csCisrICAgICAgICAgICAgICAgICAgICAgICAgICJRU3FsRGF0YWJh c2VQcml2YXRlOjphZGREYXRhYmFzZTogZHVwbGljYXRlIGNvbm5lY3Rpb24gbmFtZSAiCisrICAg ICAgICAgICAgICAgICAgICAgICAgICIncXRfc3FsX2RlZmF1bHRfY29ubmVjdGlvbicsIG9sZCBj b25uZWN0aW9uIHJlbW92ZWQuIik7CisrICAgIGF1dG8gb3RoZXJEYiA9IFFTcWxEYXRhYmFzZTo6 YWRkRGF0YWJhc2UoZGJOYW1lKTsKKysKKysgICAgUVRlc3Q6Omlnbm9yZU1lc3NhZ2UoUXRXYXJu aW5nTXNnLCAiUVNxbFF1ZXJ5OjpleGVjOiBjYWxsZWQgYmVmb3JlIGRyaXZlciBoYXMgYmVlbiBz ZXQgdXAiKTsKKysgICAgLy8gUVRCVUctMTAwMDM3OiBzaG91bGRuJ3QgY3Jhc2ggIQorKyAgICBR VkVSSUZZKCFxLmV4ZWMoInNlbGVjdCBzdHVmZiBmcm9tIFRoZVZvaWQiKSk7CisrfQorKworIHZv aWQgdHN0X1FTcWxRdWVyeTo6bGFzdEluc2VydElkKCkKKyB7CisgICAgIFFGRVRDSCggUVN0cmlu ZywgZGJOYW1lICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9xYWJz dHJhY3RpdGVtbW9kZWx0ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAgYi9x dGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci90c3RfcWFi c3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAoraW5kZXggNGFhM2Y4ZDYwYi4uZDIwNTBhNjFhYSAx MDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVs dGVzdGVyL3RzdF9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCisrKysgYi9xdGJhc2UvdGVz dHMvYXV0by90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci90c3RfcWFic3RyYWN0aXRl bW1vZGVsdGVzdGVyLmNwcAorQEAgLTExNSw2ICsxMTUsMTAgQEAgdm9pZCB0c3RfUUFic3RyYWN0 SXRlbU1vZGVsVGVzdGVyOjpzdGFuZGFyZEl0ZW1Nb2RlbFplcm9Db2x1bW5zKCkKKyAgICAgLy8g UVRCVUctOTI4ODYKKyAgICAgbW9kZWwuaW5zZXJ0Um93cygwLCA1KTsKKyAgICAgbW9kZWwucmVt b3ZlUm93cygxLCAyKTsKKysKKysgICAgY29uc3QgUU1vZGVsSW5kZXggcGFyZW50SW5kZXggPSBt b2RlbC5pbmRleCgwLCAwKTsKKysgICAgbW9kZWwuaW5zZXJ0Um93cygwLCA1LCBwYXJlbnRJbmRl eCk7CisrICAgIG1vZGVsLnJlbW92ZVJvd3MoMSwgMiwgcGFyZW50SW5kZXgpOworIH0KKyAKKyB2 b2lkIHRzdF9RQWJzdHJhY3RJdGVtTW9kZWxUZXN0ZXI6OnRlc3RJbnNlcnRUaHJvdWdoUHJveHko KQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9hbGxtb2NzX2Jhc2Vs aW5lX2luLmpzb24gYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvYWxsbW9jc19iYXNlbGlu ZV9pbi5qc29uCitpbmRleCAxMmE0YTIyYTE5Li5jZTUxOGU3OGZiIDEwMDY0NAorLS0tIGEvcXRi YXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVfaW4uanNvbgorKysrIGIv cXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVfaW4uanNvbgorQEAg LTY2OCw1MCArNjY4LDYgQEAKKyAgICAgICAgICJpbnB1dEZpbGUiOiAidGFzazE5MjU1Mi5oIiwK KyAgICAgICAgICJvdXRwdXRSZXZpc2lvbiI6IDY3CisgICAgIH0sCistICAgIHsKKy0gICAgICAg ICJjbGFzc2VzIjogWworLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgImNsYXNzTmFt ZSI6ICJJbmxpbmVTbG90c1dpdGhUaHJvd0RlY2xhcmF0aW9uIiwKKy0gICAgICAgICAgICAgICAg Im9iamVjdCI6IHRydWUsCistICAgICAgICAgICAgICAgICJxdWFsaWZpZWRDbGFzc05hbWUiOiAi SW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiIsCistICAgICAgICAgICAgICAgICJzbG90 cyI6IFsKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAi YWNjZXNzIjogInB1YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYSIs CistICAgICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAg ICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAg ICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJu YW1lIjogImIiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQi CistICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAg ICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAibmFtZSI6ICJjIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuVHlw ZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAgICAgICAg IHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAg ICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZCIsCistICAgICAgICAgICAgICAgICAgICAgICAg InJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAgICAgICAgIH0sCistICAgICAgICAg ICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMi LAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImUiLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiCistICAgICAgICAgICAgICAgICAgICB9Cist ICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICJzdXBlckNsYXNzZXMiOiBbCist ICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6 ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlFPYmplY3QiCist ICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIF0KKy0gICAgICAgICAgICB9 CistICAgICAgICBdLAorLSAgICAgICAgImlucHV0RmlsZSI6ICJ0YXNrMTg5OTk2LmgiLAorLSAg ICAgICAgIm91dHB1dFJldmlzaW9uIjogNjcKKy0gICAgfSwKKyAgICAgeworICAgICAgICAgImNs YXNzZXMiOiBbCisgICAgICAgICAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRv L3Rvb2xzL21vYy9tb2MucHJvIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL21vYy5wcm8K K2luZGV4IGMzMjRiM2E4Y2QuLjRhY2ViNzhkYzAgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMv YXV0by90b29scy9tb2MvbW9jLnBybworKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9j L21vYy5wcm8KK0BAIC0xNSw3ICsxNSw3IEBAIGNyb3NzX2NvbXBpbGU6IERFRklORVMgKz0gTU9D X0NST1NTX0NPTVBJTEVECisgSEVBREVSUyArPSB1c2luZy1uYW1lc3BhY2VzLmggbm8ta2V5d29y ZHMuaCB0YXNrODc4ODMuaCBjLWNvbW1lbnRzLmggYmFja3NsYXNoLW5ld2xpbmVzLmggb2xkc3R5 bGUtY2FzdHMuaCBcCisgICAgICAgICAgICBzbG90cy13aXRoLXZvaWQtdGVtcGxhdGUuaCBxaW52 b2thYmxlLmggbmFtZXNwYWNlZC1mbGFncy5oIHRyaWdyYXBocy5oIFwKKyAgICAgICAgICAgIGVz Y2FwZXMtaW4tc3RyaW5nLWxpdGVyYWxzLmggY3N0eWxlLWVudW1zLmggcXByaXZhdGVzbG90cy5o IGdhZGdldHdpdGhub2VudW1zLmggXAorLSAgICAgICAgICAgZGlyLWluLWluY2x1ZGUtcGF0aC5o IHNpbmdsZV9mdW5jdGlvbl9rZXl3b3JkLmggdGFzazE5MjU1Mi5oIHRhc2sxODk5OTYuaCBcCisr ICAgICAgICAgICBkaXItaW4taW5jbHVkZS1wYXRoLmggc2luZ2xlX2Z1bmN0aW9uX2tleXdvcmQu aCB0YXNrMTkyNTUyLmggXAorICAgICAgICAgICAgdGFzazIzNDkwOS5oIHRhc2syNDAzNjguaCBw dXJlLXZpcnR1YWwtc2lnbmFscy5oIGN4eDExLWVudW1zLmggXAorICAgICAgICAgICAgY3h4MTEt ZmluYWwtY2xhc3Nlcy5oIFwKKyAgICAgICAgICAgIGN4eDExLWV4cGxpY2l0LW92ZXJyaWRlLWNv bnRyb2wuaCBcCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3Rhc2sx ODk5OTYuaCBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90YXNrMTg5OTk2LmgKK2RlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggZjk0YTA1MWIzYS4uMDAwMDAwMDAwMAorLS0tIGEv cXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3Rhc2sxODk5OTYuaAorKysrIC9kZXYvbnVsbAor QEAgLTEsNDcgKzAsMCBAQAorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistKioKKy0qKiBDb3B5cmln aHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorLSoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3 LnF0LmlvL2xpY2Vuc2luZy8KKy0qKgorLSoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0ZXN0 IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorLSoqCistKiogJFFUX0JFR0lOX0xJQ0VOU0U6R1BM LUVYQ0VQVCQKKy0qKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKy0qKiBMaWNlbnNlZXMgaG9s ZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCist KiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3Zp ZGVkIHdpdGggdGhlCistKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFu Y2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCistKiogYSB3cml0dGVuIGFncmVlbWVudCBi ZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKy0qKiBh bmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9y IGZ1cnRoZXIKKy0qKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczov L3d3dy5xdC5pby9jb250YWN0LXVzLgorLSoqCistKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgVXNhZ2UKKy0qKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUKKy0qKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24g MyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKy0qKiBGb3VuZGF0aW9uIHdpdGgg ZXhjZXB0aW9ucyBhcyBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwzLUVYQ0VQVAor LSoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3 IHRoZSBmb2xsb3dpbmcKKy0qKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCistKiogYmUgbWV0OiBodHRwczovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KKy0qKgorLSoqICRRVF9FTkRfTElDRU5T RSQKKy0qKgorLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistLy8gaW5saW5lIGZ1bmN0aW9ucyBjYW4g aGF2ZSB0aHJvdyBkZWNsYXJhdGlvbnMKKy0KKy0jaWZuZGVmIFRBU0sxODk5OTZfSAorLSNkZWZp bmUgVEFTSzE4OTk5Nl9ICistCistI2luY2x1ZGUgPFFPYmplY3Q+CistCistY2xhc3MgSW5saW5l U2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiA6IHB1YmxpYyBRT2JqZWN0CisteworLSAgICBRX09C SkVDVAorLQorLXB1YmxpYyBzbG90czoKKy0gICAgdm9pZCBhKCkgdGhyb3coKSB7IH0KKy0gICAg dm9pZCBiKCkgY29uc3QgdGhyb3coKSB7IH0KKy0gICAgdm9pZCBjKCkgdGhyb3coKTsKKy0gICAg dm9pZCBkKCkgdGhyb3coaW50KSB7IH0KKy0gICAgdm9pZCBlKCkgY29uc3QgdGhyb3coaW50LGRv dWJsZSkgeyB9CistfTsKKy0KKy0jZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0 by90b29scy9tb2MvdHN0X21vYy5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0 X21vYy5jcHAKK2luZGV4IGM3MTZhZWFkMjEuLjE1ZGQ5ZTQxZTUgMTAwNjQ0CistLS0gYS9xdGJh c2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9h dXRvL3Rvb2xzL21vYy90c3RfbW9jLmNwcAorQEAgLTYzMSw3ICs2MzEsNiBAQCBwdWJsaWM6Cisg cHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBpbml0VGVzdENhc2UoKTsKKyAKKy0gICAgdm9pZCBz bG90V2l0aEV4Y2VwdGlvbigpIHRocm93KE15U3RydWN0KTsKKyAgICAgdm9pZCBkb250U3RyaXBO YW1lc3BhY2VzKCk7CisgICAgIHZvaWQgb2xkU3R5bGVDYXN0cygpOworICAgICB2b2lkIHdhcm5P bkV4dHJhU2lnbmFsU2xvdFF1YWxpZmlhY3Rpb24oKTsKK0BAIC02NzMsNyArNjcyLDYgQEAgcHJp dmF0ZSBzbG90czoKKyAgICAgdm9pZCB0ZW1wbGF0ZUd0R3QoKTsKKyAgICAgdm9pZCBxcHJpdmF0 ZXNsb3RzKCk7CisgICAgIHZvaWQgcXByaXZhdGVwcm9wZXJ0aWVzKCk7CistICAgIHZvaWQgaW5s aW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbigpOworICAgICB2b2lkIHdhcm5PblByb3BlcnR5 V2l0aG91dFJFQUQoKTsKKyAgICAgdm9pZCBjb25zdHJ1Y3RvcnMoKTsKKyAgICAgdm9pZCB0eXBl bmFtZVdpdGhVbnNpZ25lZCgpOworQEAgLTc4NCwxMiArNzgyLDYgQEAgdm9pZCB0c3RfTW9jOjpp bml0VGVzdENhc2UoKQorICNlbmRpZgorIH0KKyAKKy12b2lkIHRzdF9Nb2M6OnNsb3RXaXRoRXhj ZXB0aW9uKCkgdGhyb3coTXlTdHJ1Y3QpCisteworLSAgICAvLyBiZSBoYXBweQorLSAgICBRVkVS SUZZKHRydWUpOworLX0KKy0KKyB2b2lkIHRzdF9Nb2M6OmRvbnRTdHJpcE5hbWVzcGFjZXMoKQor IHsKKyAgICAgU2VuZGVyIHNlbmRlcjsKK0BAIC04MjQsNyArODE2LDcgQEAgdm9pZCB0c3RfTW9j OjpvbGRTdHlsZUNhc3RzKCkKKyAKKyAgICAgUVN0cmluZ0xpc3QgYXJnczsKKyAgICAgYXJncyA8 PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1Xb2xkLXN0eWxlLWNhc3QiIDw8ICItSSIgPDwg Ii4iCistICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYv bnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxMSIgPDwgIi0iOworKyAgICAgICAgIDw8ICIt SSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwg Ii1zdGQ9YysrMXoiIDw8ICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwgYXJncyk7CisgICAg IFFWRVJJRlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53cml0ZShtb2NPdXQp OworQEAgLTg5NCw3ICs4ODYsNyBAQCB2b2lkIHRzdF9Nb2M6OmlucHV0RmlsZU5hbWVXaXRoRG90 c0J1dE5vRXh0ZW5zaW9uKCkKKyAKKyAgICAgUVN0cmluZ0xpc3QgYXJnczsKKyAgICAgYXJncyA8 PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1JIiA8PCAiLi4iCistICAgICAgICAgPDwgIi1J IiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAi LXN0ZD1jKysxMSIgPDwgIi0iOworKyAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8 PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMXoiIDw8ICItIjsK KyAgICAgcHJvYy5zdGFydCgiZ2NjIiwgYXJncyk7CisgICAgIFFWRVJJRlkocHJvYy53YWl0Rm9y U3RhcnRlZCgpKTsKKyAgICAgcHJvYy53cml0ZShtb2NPdXQpOworQEAgLTExNzQsNyArMTE2Niw3 IEBAIHZvaWQgdHN0X01vYzo6aWdub3JlT3B0aW9uQ2xhc2hlcygpCisgICAgIFFTdHJpbmdMaXN0 IGdjY0FyZ3M7CisgICAgIGdjY0FyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysiIDw8ICItSSIg PDwgIi4uIgorICAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLUkiIDw8IGlu Y2x1ZGVEaXIgPDwgIi1vIiA8PCAiL2Rldi9udWxsIgorLSAgICAgICAgIDw8ICItZlBJQyIgPDwg Ii1zdGQ9YysrMTEiIDw8ICAiLSI7CisrICAgICAgICAgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysx eiIgPDwgICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwgZ2NjQXJncyk7CisgICAgIFFWRVJJ RlkocHJvYy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53cml0ZShtb2NPdXQpOworQEAg LTE1OTMsMjEgKzE1ODUsNiBAQCB2b2lkIHRzdF9Nb2M6OnFwcml2YXRlcHJvcGVydGllcygpCisg CisgfQorIAorLSNpbmNsdWRlICJ0YXNrMTg5OTk2LmgiCistCistdm9pZCBJbmxpbmVTbG90c1dp dGhUaHJvd0RlY2xhcmF0aW9uOjpjKCkgdGhyb3coKSB7fQorLQorLXZvaWQgdHN0X01vYzo6aW5s aW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbigpCisteworLSAgICBJbmxpbmVTbG90c1dpdGhU aHJvd0RlY2xhcmF0aW9uIHRzdDsKKy0gICAgY29uc3QgUU1ldGFPYmplY3QgKm1vYmogPSB0c3Qu bWV0YU9iamVjdCgpOworLSAgICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90KCJhKCkiKSAhPSAt MSk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3QoImIoKSIpICE9IC0xKTsKKy0gICAg UVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgiYygpIikgIT0gLTEpOworLSAgICBRVkVSSUZZKG1v YmotPmluZGV4T2ZTbG90KCJkKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhP ZlNsb3QoImUoKSIpICE9IC0xKTsKKy19CistCisgdm9pZCB0c3RfTW9jOjp3YXJuT25Qcm9wZXJ0 eVdpdGhvdXRSRUFEKCkKKyB7CisgI2lmZGVmIE1PQ19DUk9TU19DT01QSUxFRAorQEAgLTE4Njks NyArMTg0Niw3IEBAIHZvaWQgdHN0X01vYzo6bm90aWZ5RXJyb3IoKQorIAorICAgICBRU3RyaW5n TGlzdCBhcmdzOworICAgICBhcmdzIDw8ICItYyIgPDwgIi14IiA8PCAiYysrIiA8PCAiLUkiIDw8 ICIuIgorLSAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2 L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8ICItIjsKKysgICAgICAgICA8PCAi LUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8 ICItc3RkPWMrKzF6IiA8PCAiLSI7CisgICAgIHByb2Muc3RhcnQoImdjYyIsIGFyZ3MpOworICAg ICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7CisgICAgIHByb2Mud3JpdGUobW9jT3V0 KTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xaGVh ZGVydmlldy90c3RfcWhlYWRlcnZpZXcuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9p dGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3LmNwcAoraW5kZXggYzM1NWVlOTY2 NS4uODhjMDlkZThlMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRl bXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9xaGVhZGVydmlldy5jcHAKKysrKyBiL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9xaGVhZGVydmlldy5jcHAK K0BAIC0yNTEsNiArMjUxLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB0ZXN0UmVzZXRD YWNoZWRTaXplSGludCgpOworICAgICB2b2lkIHN0YXR1c1RpcHMoKTsKKyAgICAgdm9pZCB0ZXN0 UmVtb3ZpbmdDb2x1bW5zVmlhTGF5b3V0Q2hhbmdlZCgpOworKyAgICB2b2lkIHRlc3RNb2RlbE1v dmluZ0NvbHVtbnMoKTsKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgc2V0dXBUZXN0RGF0YShi b29sIHVzZV9yZXNldF9tb2RlbCA9IGZhbHNlKTsKK0BAIC0zNjAsNiArMzYxLDEyIEBAIHB1Ymxp YzoKKyAgICAgICAgIGVuZFJlbW92ZUNvbHVtbnMoKTsKKyAgICAgfQorIAorKyAgICB2b2lkIG1v dmVDb2x1bW4oaW50IGZyb20sIGludCB0bykKKysgICAgeworKyAgICAgICAgYmVnaW5Nb3ZlQ29s dW1ucyhRTW9kZWxJbmRleCgpLCBmcm9tLCBmcm9tLCBRTW9kZWxJbmRleCgpLCB0byk7CisrICAg ICAgICBlbmRNb3ZlQ29sdW1ucygpOworKyAgICB9CisrCisgICAgIHZvaWQgY2xlYW51cCgpCisg ICAgIHsKKyAgICAgICAgIGVtaXQgbGF5b3V0QWJvdXRUb0JlQ2hhbmdlZCgpOworQEAgLTM2Mjcs NSArMzYzNCwxOCBAQCB2b2lkIHRzdF9RSGVhZGVyVmlldzo6dGVzdFJlbW92aW5nQ29sdW1uc1Zp YUxheW91dENoYW5nZWQoKQorICAgICAvLyBUaGUgbWFpbiBwb2ludCBvZiB0aGlzIHRlc3QgaXMg dGhhdCB0aGUgc2VjdGlvbi1zaXplIHJlc3RvcmluZyBjb2RlIGRpZG4ndCBnbyBvdXQgb2YgYm91 bmRzLgorIH0KKyAKKyt2b2lkIHRzdF9RSGVhZGVyVmlldzo6dGVzdE1vZGVsTW92aW5nQ29sdW1u cygpCisreworKyAgICBRdFRlc3RNb2RlbCBtb2RlbCgxMCwgMTApOworKyAgICBRSGVhZGVyVmll dyBodihRdDo6SG9yaXpvbnRhbCk7CisrICAgIGh2LnNldE1vZGVsKCZtb2RlbCk7CisrICAgIGh2 LnJlc2l6ZVNlY3Rpb25zKFFIZWFkZXJWaWV3OjpSZXNpemVUb0NvbnRlbnRzKTsKKysgICAgaHYu c2hvdygpOworKworKyAgICBRUGVyc2lzdGVudE1vZGVsSW5kZXggaW5kZXgzID0gbW9kZWwuaW5k ZXgoMCwgMyk7CisrICAgIG1vZGVsLm1vdmVDb2x1bW4oMywgMSk7CisrICAgIFFDT01QQVJFKGlu ZGV4My5jb2x1bW4oKSwgMSk7CisrfQorKworIFFURVNUX01BSU4odHN0X1FIZWFkZXJWaWV3KQor ICNpbmNsdWRlICJ0c3RfcWhlYWRlcnZpZXcubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3BwIGIv cXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy90c3RfcXRhYmxl dmlldy5jcHAKK2luZGV4IDc2MTM1N2IyNTIuLjA2YmI3MDYwNzQgMTAwNjQ0CistLS0gYS9xdGJh c2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3L3RzdF9xdGFibGV2aWV3 LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmll dy90c3RfcXRhYmxldmlldy5jcHAKK0BAIC0zOTcsNiArMzk3LDcgQEAgcHJpdmF0ZSBzbG90czoK KyAgICAgdm9pZCBjaGVja0hlYWRlck1pblNpemUoKTsKKyAKKyAgICAgdm9pZCByZXNpemVUb0Nv bnRlbnRzKCk7CisrICAgIHZvaWQgcmVzaXplVG9Db250ZW50c1NwYW5zKCk7CisgCisgICAgIHZv aWQgdGFiRm9jdXMoKTsKKyAgICAgdm9pZCBiaWdNb2RlbCgpOworQEAgLTM3MjEsNiArMzcyMiw3 MCBAQCB2b2lkIHRzdF9RVGFibGVWaWV3OjpyZXNpemVUb0NvbnRlbnRzKCkKKyAKKyB9CisgCisr CisrY2xhc3MgU3Bhbk1vZGVsIDogcHVibGljIFFBYnN0cmFjdFRhYmxlTW9kZWwKKyt7CisrcHVi bGljOgorKyAgICBTcGFuTW9kZWwoYm9vbCBzZWN0aW9uc01vdmVkKQorKyAgICAgICAgOiBfc2Vj dGlvbnNNb3ZlZChzZWN0aW9uc01vdmVkKQorKyAgICB7fQorKyAgICBpbnQgY29sdW1uQ291bnQo Y29uc3QgUU1vZGVsSW5kZXggJiA9IHt9KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAyOyB9Cisr ICAgIGludCByb3dDb3VudChjb25zdCBRTW9kZWxJbmRleCAmID0ge30pIGNvbnN0IG92ZXJyaWRl IHsgcmV0dXJuIDE7IH0KKysgICAgUVZhcmlhbnQgZGF0YShjb25zdCBRTW9kZWxJbmRleCAmaWR4 LCBpbnQgcm9sZSA9IFF0OjpEaXNwbGF5Um9sZSkgY29uc3Qgb3ZlcnJpZGUKKysgICAgeworKyAg ICAgICAgaWYgKHJvbGUgIT0gUXQ6OkRpc3BsYXlSb2xlKQorKyAgICAgICAgICAgIHJldHVybiBR VmFyaWFudCgpOworKyAgICAgICAgY29uc3QgaW50IGNvbCA9IF9zZWN0aW9uc01vdmVkID8gMSAt IGlkeC5jb2x1bW4oKSA6IGlkeC5jb2x1bW4oKTsKKysgICAgICAgIGlmIChjb2wgPT0gMCkKKysg ICAgICAgICAgICByZXR1cm4gIkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1 ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxh Ym9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiI7CisrICAgICAgICByZXR1cm4gUVZhcmlhbnQo KTsKKysgICAgfQorK3ByaXZhdGU6CisrICAgIGJvb2wgX3NlY3Rpb25zTW92ZWQ7CisrfTsKKysK KysKKyt2b2lkIHRzdF9RVGFibGVWaWV3OjpyZXNpemVUb0NvbnRlbnRzU3BhbnMoKQorK3sKKysg ICAgU3Bhbk1vZGVsIG1vZGVsMShmYWxzZSk7CisrICAgIFNwYW5Nb2RlbCBtb2RlbDIodHJ1ZSk7 CisrICAgIFFUYWJsZVZpZXcgdmlldzEsIHZpZXcyLCB2aWV3MzsKKysgICAgdmlldzEuc2V0TW9k ZWwoJm1vZGVsMSk7CisrICAgIHZpZXcyLnNldE1vZGVsKCZtb2RlbDIpOworKyAgICB2aWV3Mi5o b3Jpem9udGFsSGVhZGVyKCktPm1vdmVTZWN0aW9uKDAsIDEpOworKyAgICB2aWV3My5zZXRNb2Rl bCgmbW9kZWwxKTsKKysKKysgICAgdmlldzEuc2V0U3BhbigwLCAwLCAxLCAyKTsKKysgICAgdmll dzIuc2V0U3BhbigwLCAxLCAxLCAyKTsKKysgICAgdmlldzEuc2hvdygpOworKyAgICB2aWV3Mi5z aG93KCk7CisrICAgIHZpZXczLnNob3coKTsKKysgICAgUVZFUklGWShRVGVzdDo6cVdhaXRGb3JX aW5kb3dFeHBvc2VkKCZ2aWV3MSkpOworKyAgICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRv d0V4cG9zZWQoJnZpZXcyKSk7CisrICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhw b3NlZCgmdmlldzMpKTsKKysgICAgdmlldzEuc2V0Q29sdW1uV2lkdGgoMCwgMTAwKTsKKysgICAg dmlldzEuc2V0Q29sdW1uV2lkdGgoMSwgMTAwKTsKKysgICAgdmlldzIuc2V0Q29sdW1uV2lkdGgo MCwgMTAwKTsKKysgICAgdmlldzIuc2V0Q29sdW1uV2lkdGgoMSwgMTAwKTsKKysgICAgdmlldzMu c2V0Q29sdW1uV2lkdGgoMCwgMjAwKTsKKysKKysgICAgdmlldzEucmVzaXplUm93VG9Db250ZW50 cygwKTsKKysgICAgdmlldzIucmVzaXplUm93VG9Db250ZW50cygwKTsKKysgICAgdmlldzMucmVz aXplUm93VG9Db250ZW50cygwKTsKKysgICAgUUNPTVBBUkUodmlldzEucm93SGVpZ2h0KDApLCB2 aWV3My5yb3dIZWlnaHQoMCkpOworKyAgICBRQ09NUEFSRSh2aWV3Mi5yb3dIZWlnaHQoMCksIHZp ZXczLnJvd0hlaWdodCgwKSk7CisrCisrICAgIHZpZXczLnJlc2l6ZUNvbHVtblRvQ29udGVudHMo MCk7CisrICAgIHZpZXczLnJlc2l6ZVJvd1RvQ29udGVudHMoMCk7CisrICAgIC8vIGhlaWdodCBz aG91bGQgYmUgb25seSAxIHRleHQgbGluZSBmb3IgZWFzeSB0ZXN0aW5nCisrICAgIHZpZXcxLnNl dFJvd0hlaWdodCgwLCB2aWV3My52ZXJ0aWNhbEhlYWRlcigpLT5zZWN0aW9uU2l6ZSgwKSk7Cisr ICAgIHZpZXcyLnNldFJvd0hlaWdodCgwLCB2aWV3My52ZXJ0aWNhbEhlYWRlcigpLT5zZWN0aW9u U2l6ZSgwKSk7CisrICAgIHZpZXcxLnJlc2l6ZUNvbHVtblRvQ29udGVudHMoMCk7CisrICAgIHZp ZXcyLnJlc2l6ZUNvbHVtblRvQ29udGVudHMoMSk7CisrICAgIFFDT01QQVJFKHZpZXcxLmNvbHVt bldpZHRoKDApLCB2aWV3My5jb2x1bW5XaWR0aCgwKSAtIHZpZXcxLmNvbHVtbldpZHRoKDEpKTsK KysgICAgUUNPTVBBUkUodmlldzIuY29sdW1uV2lkdGgoMCksIHZpZXczLmNvbHVtbldpZHRoKDAp IC0gdmlldzIuY29sdW1uV2lkdGgoMSkpOworK30KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyBl eHRlcm4gYm9vbCBRX1dJREdFVFNfRVhQT1JUIHF0X3RhYl9hbGxfd2lkZ2V0cygpOyAvLyBxYXBw bGljYXRpb24uY3BwCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90c3RfcWFwcGxpY2F0aW9uLmNwcCBi L3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90c3RfcWFwcGxp Y2F0aW9uLmNwcAoraW5kZXggYTNiOGVmNzhkOC4uNDk1NWNlYmQ1ZCAxMDA2NDQKKy0tLSBhL3F0 YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90c3RfcWFwcGxpY2F0 aW9uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9rZXJuZWwvcWFwcGxpY2F0 aW9uL3RzdF9xYXBwbGljYXRpb24uY3BwCitAQCAtMTQ5OCw3ICsxNDk4LDcgQEAgdm9pZCB0c3Rf UUFwcGxpY2F0aW9uOjpkZXNrdG9wU2V0dGluZ3NBd2FyZSgpCisgICAgIGVudmlyb25tZW50ICs9 IFFMYXRpbjFTdHJpbmcoIlFUX01BQ19ESVNBQkxFX0ZPUkVHUk9VTkRfQVBQTElDQVRJT05fVFJB TlNGT1JNPTEiKTsKKyAgICAgdGVzdFByb2Nlc3Muc2V0RW52aXJvbm1lbnQoZW52aXJvbm1lbnQp OworICNlbmRpZgorLSAgICB0ZXN0UHJvY2Vzcy5zdGFydCgiZGVza3RvcHNldHRpbmdzYXdhcmVf aGVscGVyIik7CisrICAgIHRlc3RQcm9jZXNzLnN0YXJ0KCIuL2Rlc2t0b3BzZXR0aW5nc2F3YXJl X2hlbHBlciIpOworICAgICBRVkVSSUZZMih0ZXN0UHJvY2Vzcy53YWl0Rm9yU3RhcnRlZCgpLAor ICAgICAgICAgICAgICBxUHJpbnRhYmxlKFFTdHJpbmc6OmZyb21MYXRpbjEoIkNhbm5vdCBzdGFy dCAnZGVza3RvcHNldHRpbmdzYXdhcmVfaGVscGVyJzogJTEiKS5hcmcodGVzdFByb2Nlc3MuZXJy b3JTdHJpbmcoKSkpKTsKKyAgICAgUVZFUklGWSh0ZXN0UHJvY2Vzcy53YWl0Rm9yRmluaXNoZWQo MTAwMDApKTsKK0BAIC0yNDUyLDcgKzI0NTIsNyBAQCB2b2lkIHRzdF9RQXBwbGljYXRpb246OnF0 YnVnXzEyNjczKCkKKyAjaWYgUVRfQ09ORklHKHByb2Nlc3MpCisgICAgIFFQcm9jZXNzIHRlc3RQ cm9jZXNzOworICAgICBRU3RyaW5nTGlzdCBhcmd1bWVudHM7CistICAgIHRlc3RQcm9jZXNzLnN0 YXJ0KCJtb2RhbF9oZWxwZXIiLCBhcmd1bWVudHMpOworKyAgICB0ZXN0UHJvY2Vzcy5zdGFydCgi Li9tb2RhbF9oZWxwZXIiLCBhcmd1bWVudHMpOworICAgICBRVkVSSUZZMih0ZXN0UHJvY2Vzcy53 YWl0Rm9yU3RhcnRlZCgpLAorICAgICAgICAgICAgICBxUHJpbnRhYmxlKFFTdHJpbmc6OmZyb21M YXRpbjEoIkNhbm5vdCBzdGFydCAnbW9kYWxfaGVscGVyJzogJTEiKS5hcmcodGVzdFByb2Nlc3Mu ZXJyb3JTdHJpbmcoKSkpKTsKKyAgICAgUVZFUklGWSh0ZXN0UHJvY2Vzcy53YWl0Rm9yRmluaXNo ZWQoMjAwMDApKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdl dHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0b24uY3BwIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi90c3RfcWFic3RyYWN0YnV0dG9u LmNwcAoraW5kZXggZWIxMDhhNDBkZS4uZGNhNTUyOGMxYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24vdHN0X3FhYnN0cmFjdGJ1 dHRvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJh Y3RidXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAKK0BAIC00MSw2ICs0MSw3IEBACisgCisg I2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKyAjaW5jbHVkZSA8cXBhL3Fw bGF0Zm9ybWludGVncmF0aW9uLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgor IAorIGNsYXNzIHRzdF9RQWJzdHJhY3RCdXR0b24gOiBwdWJsaWMgUU9iamVjdAorIHsKK0BAIC03 Niw2ICs3Nyw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQga2V5TmF2aWdhdGlvbigpOwor ICNlbmRpZgorIAorKyAgICB2b2lkIGJ1dHRvblByZXNzS2V5cygpOworKworIHByb3RlY3RlZCBz bG90czoKKyAgICAgdm9pZCBvbkNsaWNrZWQoKTsKKyAgICAgdm9pZCBvblRvZ2dsZWQoIGJvb2wg b24gKTsKK0BAIC0yNjksNyArMjcyLDEzIEBAIHZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6c2V0 QXV0b1JlcGVhdCgpCisgICAgICAgICBRQ09NUEFSRShwcmVzc19jb3VudCwgY2xpY2tfY291bnQp OworICAgICAgICAgUVZFUklGWShjbGlja19jb3VudCA+IDEpOworICAgICAgICAgYnJlYWs7Cist ICAgIGNhc2UgNDoKKysgICAgY2FzZSA0OiB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRvblBy ZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0 Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAgaWYg KGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgICAg IFFTS0lQKCJwbGF0Zm9ybSB0aGVtZSBoYXMgS2V5X0VudGVyIGluIEJ1dHRvblByZXNzS2V5cyIp OworKyAgICAgICAgfQorICAgICAgICAgLy8gY2hlY2sgdGhhdCBwcmVzc2luZyBFTlRFUiBoYXMg bm8gZWZmZWN0IHdoZW4gYXV0b3JlcGVhdCBpcyBmYWxzZQorICAgICAgICAgdGVzdFdpZGdldC0+ c2V0RG93biggZmFsc2UgKTsKKyAgICAgICAgIHRlc3RXaWRnZXQtPnNldEF1dG9SZXBlYXQoIGZh bHNlICk7CitAQCAtMjg2LDcgKzI5NSwxNCBAQCB2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OnNl dEF1dG9SZXBlYXQoKQorIAorICAgICAgICAgUVZFUklGWSggY2xpY2tfY291bnQgPT0gMCApOwor ICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgNToKKysgICAgfQorKyAgICBjYXNlIDU6IHsKKysg ICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0 ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8 UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpL ZXlfRW50ZXIpKSB7CisrICAgICAgICAgICAgUVNLSVAoInBsYXRmb3JtIHRoZW1lIGhhcyBLZXlf RW50ZXIgaW4gQnV0dG9uUHJlc3NLZXlzIik7CisrICAgICAgICB9CisgICAgICAgICAvLyBjaGVj ayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBubyBlZmZlY3Qgd2hlbiBhdXRvcmVwZWF0IGlzIHRy dWUKKyAgICAgICAgIHRlc3RXaWRnZXQtPnNldERvd24oIGZhbHNlICk7CisgICAgICAgICB0ZXN0 V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCB0cnVlICk7CitAQCAtMzA0LDYgKzMyMCw3IEBAIHZvaWQg dHN0X1FBYnN0cmFjdEJ1dHRvbjo6c2V0QXV0b1JlcGVhdCgpCisgCisgICAgICAgICBRVkVSSUZZ KCBjbGlja19jb3VudCA9PSAwICk7CisgICAgICAgICBicmVhazsKKysgICAgfQorICAgICBjYXNl IDY6CisgICAgICAgICAvLyB2ZXJpZnkgYXV0b3JlcGVhdCBpcyBvZmYgYnkgZGVmYXVsdC4KKyAg ICAgICAgIE15QnV0dG9uIHRtcCggMCk7CitAQCAtNjUxLDUgKzY2OCwxNiBAQCB2b2lkIHRzdF9R QWJzdHJhY3RCdXR0b246OmtleU5hdmlnYXRpb24oKQorIH0KKyAjZW5kaWYKKyAKKyt2b2lkIHRz dF9RQWJzdHJhY3RCdXR0b246OmJ1dHRvblByZXNzS2V5cygpCisreworKyAgICBjb25zdCBhdXRv IGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUo KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQo UVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBidXR0b25QcmVzc0tleXMubGVuZ3RoKCk7ICsraSkgeworKyAgICAgICAg UVRlc3Q6OmtleUNsaWNrKHRlc3RXaWRnZXQsIGJ1dHRvblByZXNzS2V5c1tpXSk7CisrICAgICAg ICBRQ09NUEFSRShjbGlja19jb3VudCwgaSArIDEpOworKyAgICB9CisrfQorKworIFFURVNUX01B SU4odHN0X1FBYnN0cmFjdEJ1dHRvbikKKyAjaW5jbHVkZSAidHN0X3FhYnN0cmFjdGJ1dHRvbi5t b2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21i b2JveC90c3RfcWNvbWJvYm94LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0 cy9xY29tYm9ib3gvdHN0X3Fjb21ib2JveC5jcHAKK2luZGV4IDMyNDM3MDUwZjUuLjQ2YjVhZjZk NjMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbWJv Ym94L3RzdF9xY29tYm9ib3guY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dp ZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9ib3guY3BwCitAQCAtMTY4LDYgKzE2OCw3IEBAIHBy aXZhdGUgc2xvdHM6CisgICAgIHZvaWQgY2hlY2tNZW51SXRlbVBvc1doZW5TdHlsZVNoZWV0SXNT ZXQoKTsKKyAgICAgdm9pZCBjaGVja0VtYmVkZGVkTGluZUVkaXRXaGVuU3R5bGVTaGVldElzU2V0 KCk7CisgICAgIHZvaWQgcHJvcGFnYXRlU3R5bGVDaGFuZ2VzKCk7CisrICAgIHZvaWQgYnV0dG9u UHJlc3NLZXlzKCk7CisgCisgcHJpdmF0ZToKKyAgICAgUGxhdGZvcm1JbnB1dENvbnRleHQgbV9w bGF0Zm9ybUlucHV0Q29udGV4dDsKK0BAIC0xNjgyLDYgKzE2ODMsMTYgQEAgdm9pZCB0c3RfUUNv bWJvQm94OjpzZXRNb2RlbCgpCisgICAgIFFDT01QQVJFKGJveC5yb290TW9kZWxJbmRleCgpLCBy b290TW9kZWxJbmRleCk7CisgICAgIGJveC5zZXRNb2RlbChib3gubW9kZWwoKSk7CisgICAgIFFD T01QQVJFKGJveC5yb290TW9kZWxJbmRleCgpLCByb290TW9kZWxJbmRleCk7CisrCisrICAgIC8v IGNoZWNrIHRoYXQgc2V0dGluZyB0aGUgc2FtZSBtb2RlbCBhcyB0aGUgY29tcGxldGVyJ3MgZG9l c24ndCBjcmFzaAorKyAgICBRQ29tcGxldGVyICpjb21wbGV0ZXIgPSBuZXcgUUNvbXBsZXRlcigm Ym94KTsKKysgICAgYm94LnNldEVkaXRhYmxlKHRydWUpOworKyAgICBib3guc2V0Q29tcGxldGVy KGNvbXBsZXRlcik7CisrICAgIGF1dG8gKmxpc3RNb2RlbCA9IG5ldyBRU3RyaW5nTGlzdE1vZGVs KHsgIm9uZSIsICJ0d28iIH0sIGNvbXBsZXRlcik7CisrICAgIGNvbXBsZXRlci0+c2V0TW9kZWwo bGlzdE1vZGVsKTsKKysgICAgUUNPTVBBUkUobGlzdE1vZGVsLT5yb3dDb3VudCgpLCAyKTsgLy8g bWFrZSBzdXJlIGl0IHdhc24ndCBkZWxldGVkCisrICAgIGJveC5zZXRNb2RlbChsaXN0TW9kZWwp OworKyAgICBRQ09NUEFSRShsaXN0TW9kZWwtPnJvd0NvdW50KCksIDIpOyAvLyBtYWtlIHN1cmUg aXQgd2Fzbid0IGRlbGV0ZWQKKyB9CisgCisgdm9pZCB0c3RfUUNvbWJvQm94OjpzZXRDdXN0b21N b2RlbEFuZFZpZXcoKQorQEAgLTM2MzIsNSArMzY0MywyNCBAQCB2b2lkIHRzdF9RQ29tYm9Cb3g6 OnByb3BhZ2F0ZVN0eWxlQ2hhbmdlcygpCisgICAgIFFWRVJJRlkoZnJhbWVTdHlsZS5pbnF1aXJl ZCk7CisgfQorIAorK3ZvaWQgdHN0X1FDb21ib0JveDo6YnV0dG9uUHJlc3NLZXlzKCkKKyt7Cisr ICAgIFFDb21ib0JveCBjb21ib0JveDsKKysgICAgY29tYm9Cb3guc2V0RWRpdGFibGUoZmFsc2Up OworKyAgICBjb21ib0JveC5hZGRJdGVtKFFTdHJpbmc6Om51bWJlcigxKSk7CisrICAgIGNvbWJv Qm94LmFkZEl0ZW0oUVN0cmluZzo6bnVtYmVyKDIpKTsKKysgICAgY29uc3QgYXV0byBidXR0b25Q cmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9y bVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGZvciAoaW50IGkgPSAw OyBpIDwgYnV0dG9uUHJlc3NLZXlzLmxlbmd0aCgpOyArK2kpIHsKKysgICAgICAgIFFUZXN0Ojpr ZXlDbGljaygmY29tYm9Cb3gsIGJ1dHRvblByZXNzS2V5c1tpXSk7CisrICAgICAgICAvLyBPbiBz b21lIHBsYXRmb3JtcywgYSB3aW5kb3cgd2lsbCBub3QgYmUgaW1tZWRpYXRlbHkgdmlzaWJsZSwK KysgICAgICAgIC8vIGJ1dCB0YWtlIHNvbWUgZXZlbnQtbG9vcCBpdGVyYXRpb25zIHRvIGNvbXBs ZXRlLgorKyAgICAgICAgLy8gVXNpbmcgUVRSWV9WRVJJRlkgdG8gZGVhbCB3aXRoIHRoYXQuCisr ICAgICAgICBRVFJZX1ZFUklGWShjb21ib0JveC52aWV3KCktPmlzVmlzaWJsZSgpKTsKKysgICAg ICAgIGNvbWJvQm94LmhpZGVQb3B1cCgpOworKyAgICB9CisrfQorKworIFFURVNUX01BSU4odHN0 X1FDb21ib0JveCkKKyAjaW5jbHVkZSAidHN0X3Fjb21ib2JveC5tb2MiCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29t bWFuZGxpbmtidXR0b24ucHJvIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fj b21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJvCitpbmRleCBiZTNjZmNkMTA0 Li5jMjI4ZmRmY2NhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRn ZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJvCisrKysgYi9xdGJh c2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3Fjb21tYW5k bGlua2J1dHRvbi5wcm8KK0BAIC0xLDYgKzEsNiBAQAorIENPTkZJRyArPSB0ZXN0Y2FzZQorIFRB UkdFVCA9IHRzdF9xY29tbWFuZGxpbmtidXR0b24KKy1RVCArPSB3aWRnZXRzIHRlc3RsaWIKKytR VCArPSB3aWRnZXRzIHRlc3RsaWIgZ3VpLXByaXZhdGUKKyBTT1VSQ0VTICArPSB0c3RfcWNvbW1h bmRsaW5rYnV0dG9uLmNwcAorIAorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5j cHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9u L3RzdF9xY29tbWFuZGxpbmtidXR0b24uY3BwCitpbmRleCAwMDQ0ZDMzYzY2Li40Y2YwNjI5NmU0 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5k bGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5r YnV0dG9uLmNwcAorQEAgLTQwLDYgKzQwLDkgQEAKKyAjaW5jbHVkZSA8UUdyaWRMYXlvdXQ+Cisg I2luY2x1ZGUgPFFQYWludGVyPgorIAorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlv bl9wLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorKworIGNsYXNzIHRzdF9R Q29tbWFuZExpbmtCdXR0b24gOiBwdWJsaWMgUU9iamVjdAorIHsKKyAgICAgUV9PQkpFQ1QKK0BA IC0yMjMsNiArMjI2LDEzIEBAIHZvaWQgdHN0X1FDb21tYW5kTGlua0J1dHRvbjo6c2V0QXV0b1Jl cGVhdCgpCisgICAgIC8vIGNoZWNrIHRoYXQgcHJlc3NpbmcgRU5URVIgaGFzIG5vIGVmZmVjdAor ICAgICByZXNldENvdW50ZXJzKCk7CisgICAgIHRlc3RXaWRnZXQtPnNldERvd24oIGZhbHNlICk7 CisrICAgIC8vIFNraXAgYWZ0ZXIgcmVzZXQgaWYgQnV0dG9uUHJlc3NLZXlzIGhhcyBLZXlfRW50 ZXIKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2 YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6Oktl eT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRlcikp IHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorICAgICB0ZXN0V2lkZ2V0LT5zZXRBdXRvUmVw ZWF0KCBmYWxzZSApOworICAgICBRVGVzdDo6a2V5UHJlc3MoIHRlc3RXaWRnZXQsIFF0OjpLZXlf RW50ZXIgKTsKKyAKK0BAIC0yNTUsNiArMjY1LDE0IEBAIHZvaWQgdHN0X1FDb21tYW5kTGlua0J1 dHRvbjo6cHJlc3NlZCgpCisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwgKHVpbnQpMSApOwor ICAgICBRQ09NUEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworIAorKyAgICAvLyBTa2lw IGlmIEJ1dHRvblByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0dG9u UHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZv cm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJl c3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICByZXR1cm47CisrICAg IH0KKysKKyAgICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0LFF0OjpLZXlfRW50ZXIgKTsK KyAgICAgUUNPTVBBUkUoIHByZXNzX2NvdW50LCAodWludCkxICk7CisgICAgIFFDT01QQVJFKCBy ZWxlYXNlX2NvdW50LCAodWludCkxICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gucHJvIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gucHJvCitpbmRleCA0YTVlNzZm ZjY1Li5hMjM1ZmExZmFjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93 aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gucHJvCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3Fncm91cGJveC5wcm8KK0BAIC0xLDYgKzEsNiBAQAor IENPTkZJRyArPSB0ZXN0Y2FzZQorIFRBUkdFVCA9IHRzdF9xZ3JvdXBib3gKKy1RVCArPSB3aWRn ZXRzIHRlc3RsaWIKKytRVCArPSB3aWRnZXRzIHRlc3RsaWIgZ3VpLXByaXZhdGUKKyBTT1VSQ0VT ICArPSB0c3RfcWdyb3VwYm94LmNwcAorIAorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9h dXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvdHN0X3Fncm91cGJveC5jcHAgYi9xdGJhc2Uv dGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3RzdF9xZ3JvdXBib3guY3BwCitp bmRleCA0ZmI1ZDI2MmNhLi5kOGQ3NTYyYjczIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC90c3RfcWdyb3VwYm94LmNwcAorKysrIGIvcXRi YXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC90c3RfcWdyb3VwYm94LmNw cAorQEAgLTM1LDYgKzM1LDkgQEAKKyAjaW5jbHVkZSA8UVJhZGlvQnV0dG9uPgorICNpbmNsdWRl IDxRRGlhbG9nPgorIAorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmg+Cisr I2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorKworICNpbmNsdWRlICJxZ3JvdXBib3gu aCIKKyAKKyBjbGFzcyB0c3RfUUdyb3VwQm94IDogcHVibGljIFFPYmplY3QKK0BAIC02OSw2ICs3 Miw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgcHJvcGFnYXRlRm9jdXMoKTsKKyAgICAg dm9pZCB0YXNrX1FUQlVHXzE5MTcwX2lnbm9yZU1vdXNlUmVsZWFzZUV2ZW50KCk7CisgICAgIHZv aWQgdGFza19RVEJVR18xNTUxOV9wcm9wYWdhdGVNb3VzZUV2ZW50cygpOworKyAgICB2b2lkIGJ1 dHRvblByZXNzS2V5cygpOworIAorIHByaXZhdGU6CisgICAgIGJvb2wgY2hlY2tlZDsKK0BAIC02 MTAsNiArNjE0LDIwIEBAIHZvaWQgdHN0X1FHcm91cEJveDo6dGFza19RVEJVR18xNTUxOV9wcm9w YWdhdGVNb3VzZUV2ZW50cygpCisgICAgIFFDT01QQVJFKHBhcmVudC5tb3VzZU1vdmVkLCB0cnVl KTsKKyB9CisgCisrdm9pZCB0c3RfUUdyb3VwQm94OjpidXR0b25QcmVzc0tleXMoKQorK3sKKysg ICAgUUdyb3VwQm94IGdyb3VwQm94OworKyAgICBncm91cEJveC5zZXRDaGVja2FibGUodHJ1ZSk7 CisrICAgIFFTaWduYWxTcHkgY2xpY2tlZFNweSgmZ3JvdXBCb3gsICZRR3JvdXBCb3g6OmNsaWNr ZWQpOworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblBy aXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6 S2V5Pj4oKTsKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBidXR0b25QcmVzc0tleXMubGVuZ3Ro KCk7ICsraSkgeworKyAgICAgICAgUVRlc3Q6OmtleUNsaWNrKCZncm91cEJveCwgYnV0dG9uUHJl c3NLZXlzW2ldKTsKKysgICAgICAgIFFDT01QQVJFKGNsaWNrZWRTcHkubGVuZ3RoKCksIGkgKyAx KTsKKysgICAgfQorK30KKysKKyB2b2lkIHRzdF9RR3JvdXBCb3g6OnNlbmRNb3VzZU1vdmVFdmVu dChRV2lkZ2V0ICp3aWRnZXQsIGNvbnN0IFFQb2ludCAmbG9jYWxQb3MpCisgeworICAgICAvLyBT ZW5kIGEgTW91c2VNb3ZlIGV2ZW50IHdpdGhvdXQgYWN0dWFsbHkgbW92aW5nIHRoZSBwb2ludGVy CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0 dG9uL3FwdXNoYnV0dG9uLnBybyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9x cHVzaGJ1dHRvbi9xcHVzaGJ1dHRvbi5wcm8KK2luZGV4IDM1M2FkMDZjYTIuLmU1NWY2MTQ4ZjIg MTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0 b24vcXB1c2hidXR0b24ucHJvCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdl dHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24ucHJvCitAQCAtMSw2ICsxLDYgQEAKKyBDT05GSUcg Kz0gdGVzdGNhc2UKKyBUQVJHRVQgPSB0c3RfcXB1c2hidXR0b24KKy1RVCArPSB3aWRnZXRzIHRl c3RsaWIKKytRVCArPSB3aWRnZXRzIHRlc3RsaWIgZ3VpLXByaXZhdGUKKyBTT1VSQ0VTICArPSB0 c3RfcXB1c2hidXR0b24uY3BwCisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAgYi9xdGJhc2Uv dGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vdHN0X3FwdXNoYnV0dG9uLmNw cAoraW5kZXggZTgxODUxNGE3OS4uNDA0M2U5MzI2YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi90c3RfcXB1c2hidXR0b24uY3BwCisr KysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vdHN0X3Fw dXNoYnV0dG9uLmNwcAorQEAgLTQxLDYgKzQxLDkgQEAKKyAjaW5jbHVkZSA8UVN0eWxlRmFjdG9y eT4KKyAjaW5jbHVkZSA8UVRhYldpZGdldD4KKyAKKysjaW5jbHVkZSA8cHJpdmF0ZS9xZ3VpYXBw bGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKysKKyBjbGFz cyB0c3RfUVB1c2hCdXR0b24gOiBwdWJsaWMgUU9iamVjdAorIHsKKyBRX09CSkVDVAorQEAgLTIx Miw2ICsyMTUsMTMgQEAgdm9pZCB0c3RfUVB1c2hCdXR0b246OmF1dG9SZXBlYXQoKQorICAgICAv LyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBubyBlZmZlY3QKKyAgICAgcmVzZXRDb3Vu dGVycygpOworICAgICB0ZXN0V2lkZ2V0LT5zZXREb3duKCBmYWxzZSApOworKyAgICAvLyBTa2lw IGFmdGVyIHJlc2V0IGlmIEJ1dHRvblByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0 IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1U aGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1l SGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBp ZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICBy ZXR1cm47CisrICAgIH0KKyAgICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCggZmFsc2UgKTsK KyAgICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0LCBRdDo6S2V5X0VudGVyICk7CisgCitA QCAtMjQ3LDYgKzI1NywxNCBAQCB2b2lkIHRzdF9RUHVzaEJ1dHRvbjo6cHJlc3NlZCgpCisgICAg IFFDT01QQVJFKCBwcmVzc19jb3VudCwgKHVpbnQpMSApOworICAgICBRQ09NUEFSRSggcmVsZWFz ZV9jb3VudCwgKHVpbnQpMSApOworIAorKyAgICAvLyBTa2lwIGlmIEJ1dHRvblByZXNzS2V5cyBo YXMgS2V5X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxp Y2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NL ZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFM aXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpL ZXlfRW50ZXIpKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKyAgICAgUVRlc3Q6Omtl eVByZXNzKCB0ZXN0V2lkZ2V0LFF0OjpLZXlfRW50ZXIgKTsKKyAgICAgUUNPTVBBUkUoIHByZXNz X2NvdW50LCAodWludCkxICk7CisgICAgIFFDT01QQVJFKCByZWxlYXNlX2NvdW50LCAodWludCkx ICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL21hbnVhbC9yaGkvY3ViZW1hcF9yZW5kZXIv YnVpbGRzaGFkZXIuYmF0IGIvcXRiYXNlL3Rlc3RzL21hbnVhbC9yaGkvY3ViZW1hcF9yZW5kZXIv YnVpbGRzaGFkZXIuYmF0CitvbGQgbW9kZSAxMDA3NTUKK25ldyBtb2RlIDEwMDY0NAorU3VibW9k dWxlIHF0Y29ubmVjdGl2aXR5IGU5NTdkNDgxLi4wNTYyOTRjMDoKK2RpZmYgLS1naXQgYS9xdGNv bm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL2JsdWV6L2hjaW1hbmFnZXIuY3BwIGIvcXRjb25uZWN0 aXZpdHkvc3JjL2JsdWV0b290aC9ibHVlei9oY2ltYW5hZ2VyLmNwcAoraW5kZXggZTI2MzVmYWUu LmE4YjhlM2I5IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9ibHVl ei9oY2ltYW5hZ2VyLmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9ibHVl ei9oY2ltYW5hZ2VyLmNwcAorQEAgLTU2Myw5ICs1NjMsMTEgQEAgdm9pZCBIY2lNYW5hZ2VyOjpo YW5kbGVIY2lBY2xQYWNrZXQoY29uc3QgcXVpbnQ4ICpkYXRhLCBpbnQgc2l6ZSkKKyAKKyB2b2lk IEhjaU1hbmFnZXI6OmhhbmRsZUxlTWV0YUV2ZW50KGNvbnN0IHF1aW50OCAqZGF0YSkKKyB7Cist ICAgIC8vIFNwZWMgdjQuMiwgVm9sIDIsIHBhcnQgRSwgNy43LjY1ZmYKKysgICAgLy8gU3BlYyB2 NS4zLCBWb2wgNCwgcGFydCBFLCA3LjcuNjUuKgorICAgICBzd2l0Y2ggKCpkYXRhKSB7CistICAg IGNhc2UgMHgxOiB7CisrICAgIGNhc2UgMHgxOiAvLyBIQ0lfTEVfQ29ubmVjdGlvbl9Db21wbGV0 ZQorKyAgICBjYXNlIDB4QTogLy8gSENJX0xFX0VuaGFuY2VkX0Nvbm5lY3Rpb25fQ29tcGxldGUK KysgICAgeworICAgICAgICAgY29uc3QgcXVpbnQxNiBoYW5kbGUgPSBidF9nZXRfbGUxNihkYXRh ICsgMik7CisgICAgICAgICBlbWl0IGNvbm5lY3Rpb25Db21wbGV0ZShoYW5kbGUpOworICAgICAg ICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1 ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50X2JsdWV6LmNwcCBiL3F0Y29ubmVjdGl2aXR5L3Ny Yy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3ZlcnlhZ2VudF9ibHVlei5jcHAKK2lu ZGV4IDZhOTMxNDNiLi40YTE4Y2ZjNyAxMDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5L3NyYy9i bHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3ZlcnlhZ2VudF9ibHVlei5jcHAKKysrKyBi L3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3Zlcnlh Z2VudF9ibHVlei5jcHAKK0BAIC0zMjAsNyArMzIwLDEwIEBAIHZvaWQgUUJsdWV0b290aFNlcnZp Y2VEaXNjb3ZlcnlBZ2VudFByaXZhdGU6Ol9xX2ZpbmlzaFNkcFNjYW4oUUJsdWV0b290aFNlcnZp Y2VECisgICAgICAgICAgICAgZm9yIChjb25zdCBRQmx1ZXRvb3RoVXVpZCAmaWQgOiBzZXJ2aWNl Q2xhc3NVdWlkcykgeworICAgICAgICAgICAgICAgICBpZiAoaWQubWluaW11bVNpemUoKSA9PSAx NikgeworICAgICAgICAgICAgICAgICAgICAgc2VydmljZUluZm8uc2V0U2VydmljZVV1aWQoaWQp OworLSAgICAgICAgICAgICAgICAgICAgc2VydmljZUluZm8uc2V0U2VydmljZU5hbWUoUUJsdWV0 b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6dHIoIkN1c3RvbSBTZXJ2aWNlIikpOworKyAgICAg ICAgICAgICAgICAgICAgaWYgKHNlcnZpY2VJbmZvLnNlcnZpY2VOYW1lKCkuaXNFbXB0eSgpKSB7 CisrICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZUluZm8uc2V0U2VydmljZU5hbWUoCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUJsdWV0b290aFNlcnZpY2VEaXNj b3ZlcnlBZ2VudDo6dHIoIkN1c3RvbSBTZXJ2aWNlIikpOworKyAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICAgUUJsdWV0b290aFNlcnZpY2VJbmZvOjpTZXF1ZW5jZSBt b2RTZXEgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlSW5mby5hdHRyaWJ1 dGUoUUJsdWV0b290aFNlcnZpY2VJbmZvOjpTZXJ2aWNlQ2xhc3NJZHMpLnZhbHVlPFFCbHVldG9v dGhTZXJ2aWNlSW5mbzo6U2VxdWVuY2U+KCk7CisgICAgICAgICAgICAgICAgICAgICBtb2RTZXEu cmVtb3ZlT25lKFFWYXJpYW50Ojpmcm9tVmFsdWUoaWQpKTsKK0BAIC0zMzQsOCArMzM3LDEwIEBA IHZvaWQgUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudFByaXZhdGU6Ol9xX2ZpbmlzaFNk cFNjYW4oUUJsdWV0b290aFNlcnZpY2VECisgICAgICAgICAgICAgICAgIHFDRGVidWcoUVRfQlRf QkxVRVopIDw8ICJEaXNjb3ZlcmVkIHNlcnZpY2VzIiA8PCBkaXNjb3ZlcmVkRGV2aWNlcy5hdCgw KS5hZGRyZXNzKCkudG9TdHJpbmcoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8PCBzZXJ2aWNlSW5mby5zZXJ2aWNlTmFtZSgpIDw8IHNlcnZpY2VJbmZvLnNlcnZpY2VV dWlkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIj4+PiIgPDwg c2VydmljZUluZm8uc2VydmljZUNsYXNzVXVpZHMoKTsKKy0KKy0gICAgICAgICAgICAgICAgZW1p dCBxLT5zZXJ2aWNlRGlzY292ZXJlZChzZXJ2aWNlSW5mbyk7CisrICAgICAgICAgICAgICAgIC8v IFVzZSBxdWV1ZWQgY29ubmVjdGlvbiB0byBhbGxvdyB1cyBmaW5pc2ggdGhlIHNlcnZpY2UgbG9v cGluZzsgdGhlIGFwcGxpY2F0aW9uCisrICAgICAgICAgICAgICAgIC8vIG1pZ2h0IGNhbGwgc3Rv cCgpIHdoZW4gaXQgaGFzIGRldGVjdGVkIHRoZSBzZXJ2aWNlLW9mLWludGVyZXN0LgorKyAgICAg ICAgICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHEsICJzZXJ2aWNlRGlzY292ZXJl ZCIsIFF0OjpRdWV1ZWRDb25uZWN0aW9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFfQVJHKFFCbHVldG9vdGhTZXJ2aWNlSW5mbywgc2VydmljZUluZm8pKTsK KyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGNvbm5l Y3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXQuY3BwIGIvcXRjb25uZWN0aXZp dHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0LmNwcAoraW5kZXggZTRkODU0NDcuLmFh ZGQ0NzU1IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRv b3Roc29ja2V0LmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRv b3Roc29ja2V0LmNwcAorQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIFFCbHVldG9vdGhTb2NrZXQ6 OnNldFNvY2tldFN0YXRlKFFCbHVldG9vdGhTb2NrZXQ6OlNvY2tldFN0YXRlIHN0YXRlKQorIGJv b2wgUUJsdWV0b290aFNvY2tldDo6Y2FuUmVhZExpbmUoKSBjb25zdAorIHsKKyAgICAgUV9EKGNv bnN0IFFCbHVldG9vdGhTb2NrZXRCYXNlKTsKKy0gICAgcmV0dXJuIGQtPmNhblJlYWRMaW5lKCk7 CisrICAgIHJldHVybiBkLT5jYW5SZWFkTGluZSgpIHx8IFFJT0RldmljZTo6Y2FuUmVhZExpbmUo KTsKKyB9CisgCisgLyohCitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290 aC9xYmx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1 ZXRvb3RoL3FibHVldG9vdGhzb2NrZXRfYmx1ZXpkYnVzLmNwcAoraW5kZXggMDg0YWE5NTguLmQ2 YWExN2E3IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRv b3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9v dGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRidXMuY3BwCitAQCAtMjg0LDYgKzI4NCwxMCBAQCB2 b2lkIFFCbHVldG9vdGhTb2NrZXRQcml2YXRlQmx1ZXpEQnVzOjpjb25uZWN0VG9TZXJ2aWNlKAor ICAgICAgICAgcmV0dXJuOworICAgICB9CisgCisrICAgIGlmIChzZXJ2aWNlLnNvY2tldFByb3Rv Y29sKCkgIT0gUUJsdWV0b290aFNlcnZpY2VJbmZvOjpQcm90b2NvbDo6VW5rbm93blByb3RvY29s KQorKyAgICAgICAgc29ja2V0VHlwZSA9IHNlcnZpY2Uuc29ja2V0UHJvdG9jb2woKTsKKysgICAg cUNEZWJ1ZyhRVF9CVF9CTFVFWikgPDwgIlNvY2tldCBwcm90b2NvbCB1c2VkOiIgPDwgc29ja2V0 VHlwZTsKKysKKyAgICAgY29ubmVjdFRvU2VydmljZShzZXJ2aWNlLmRldmljZSgpLmFkZHJlc3Mo KSwgdGFyZ2V0U2VydmljZSwgb3Blbk1vZGUpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGNvbm5l Y3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2NrZXQvdHN0X3FibHVldG9vdGhzb2NrZXQu Y3BwIGIvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRvb3Roc29ja2V0L3RzdF9xYmx1 ZXRvb3Roc29ja2V0LmNwcAoraW5kZXggMDViYzFhMGYuLmE3YjVlZjFmIDEwMDY0NAorLS0tIGEv cXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRvb3Roc29ja2V0L3RzdF9xYmx1ZXRvb3Ro c29ja2V0LmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRvb3Roc29j a2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcAorQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIHRz dF9RQmx1ZXRvb3RoU29ja2V0Ojppbml0VGVzdENhc2UoKQorICAgICBxRGVidWcoKSA8PCAiU3Rh cnRpbmcgZGlzY292ZXJ5IjsKKyAKKyAgICAgc2RhLT5zZXRVdWlkRmlsdGVyKFFCbHVldG9vdGhV dWlkKFFTdHJpbmcoVEVTVF9TRVJWSUNFX1VVSUQpKSk7CistICAgIHNkYS0+c3RhcnQoUUJsdWV0 b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6TWluaW1hbERpc2NvdmVyeSk7CisrICAgIHNkYS0+ c3RhcnQoUUJsdWV0b290aFNlcnZpY2VEaXNjb3ZlcnlBZ2VudDo6RnVsbERpc2NvdmVyeSk7Cisg CisgICAgIGZvciAoaW50IGNvbm5lY3RUaW1lID0gTWF4Q29ubmVjdFRpbWU7ICFkb25lX2Rpc2Nv dmVyeSAmJiBjb25uZWN0VGltZSA+IDA7IGNvbm5lY3RUaW1lIC09IDEwMDApCisgICAgICAgICBR VGVzdDo6cVdhaXQoMTAwMCk7CitTdWJtb2R1bGUgcXRkZWNsYXJhdGl2ZSBmNTcwMWYwZC4uOGRl ZmU3YmY6CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2NvbW1vbi9xcW1sanNm aXhlZHBvb2xhcnJheV9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvY29tbW9uL3FxbWxqc2Zp eGVkcG9vbGFycmF5X3AuaAoraW5kZXggYjY1Yjk5NGQ2Yy4uMTVhOGNkNjg3OCAxMDA2NDQKKy0t LSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9jb21tb24vcXFtbGpzZml4ZWRwb29sYXJyYXlfcC5o CisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvY29tbW9uL3FxbWxqc2ZpeGVkcG9vbGFycmF5 X3AuaAorQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgorICAgICAgICAgaWYgKFFUeXBlSW5mbzxU Pjo6aXNDb21wbGV4KSB7CisgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsg KytpKQorICAgICAgICAgICAgICAgICBuZXcgKGRhdGEgKyBpKSBUKHZlY3Rvci5hdChpKSk7Cist ICAgICAgICB9IGVsc2UgeworKyAgICAgICAgfSBlbHNlIGlmIChjb3VudCkgeworICAgICAgICAg ICAgIG1lbWNweShkYXRhLCBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4odmVjdG9yLmNvbnN0RGF0 YSgpKSwgY291bnQgKiBzaXplb2YoVCkpOworICAgICAgICAgfQorICAgICB9CitkaWZmIC0tZ2l0 IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pzcnVudGltZS9xdjRxb2JqZWN0d3JhcHBlci5jcHAg Yi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmplY3R3cmFwcGVyLmNwcAor aW5kZXggZTU3Y2RkODI3OC4uOTQ2MTM1OThhZiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUv c3JjL3FtbC9qc3J1bnRpbWUvcXY0cW9iamVjdHdyYXBwZXIuY3BwCisrKysgYi9xdGRlY2xhcmF0 aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmplY3R3cmFwcGVyLmNwcAorQEAgLTExNDUsOCAr MTE0NSw3IEBAIHZvaWQgSGVhcDo6UU9iamVjdFdyYXBwZXI6Om1hcmtPYmplY3RzKEhlYXA6OkJh c2UgKnRoYXQsIFFWNDo6TWFya1N0YWNrICptYXJrU3RhCisgdm9pZCBRT2JqZWN0V3JhcHBlcjo6 ZGVzdHJveU9iamVjdChib29sIGxhc3RDYWxsKQorIHsKKyAgICAgSGVhcDo6UU9iamVjdFdyYXBw ZXIgKmggPSBkKCk7CistICAgIGlmICghaC0+aW50ZXJuYWxDbGFzcykKKy0gICAgICAgIHJldHVy bjsgLy8gZGVzdHJveU9iamVjdCBhbHJlYWR5IGdvdCBjYWxsZWQKKysgICAgUV9BU1NFUlQoaC0+ aW50ZXJuYWxDbGFzcyk7CisgCisgICAgIGlmIChoLT5vYmplY3QoKSkgeworICAgICAgICAgUVFt bERhdGEgKmRkYXRhID0gUVFtbERhdGE6OmdldChoLT5vYmplY3QoKSwgZmFsc2UpOworQEAgLTEx NzYsNyArMTE3NSw3IEBAIHZvaWQgUU9iamVjdFdyYXBwZXI6OmRlc3Ryb3lPYmplY3QoYm9vbCBs YXN0Q2FsbCkKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBoLT5+RGF0YSgpOworKyAgICBo LT5kZXN0cm95KCk7CisgfQorIAorIAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3Ft bC9tZW1vcnkvcXY0bW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL21lbW9yeS9xdjRtbS5j cHAKK2luZGV4IDA2Y2FmMDRlNWEuLmRhMTQ5YTY3YzQgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0 aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1s L21lbW9yeS9xdjRtbS5jcHAKK0BAIC05ODEsNyArOTgxLDcgQEAgdm9pZCBNZW1vcnlNYW5hZ2Vy Ojpzd2VlcChib29sIGxhc3RTd2VlcCwgQ2xhc3NEZXN0cm95U3RhdHNDYWxsYmFjayBjbGFzc0Nv dW50UHQKKyAKKyAgICAgaWYgKE11bHRpcGx5V3JhcHBlZFFPYmplY3RNYXAgKm11bHRpcGx5V3Jh cHBlZFFPYmplY3RzID0gZW5naW5lLT5tX211bHRpcGx5V3JhcHBlZFFPYmplY3RzKSB7CisgICAg ICAgICBmb3IgKE11bHRpcGx5V3JhcHBlZFFPYmplY3RNYXA6Okl0ZXJhdG9yIGl0ID0gbXVsdGlw bHlXcmFwcGVkUU9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IG11bHRpcGx5V3JhcHBlZFFPYmplY3Rz LT5lbmQoKTspIHsKKy0gICAgICAgICAgICBpZiAoIWl0LnZhbHVlKCkuaXNOdWxsT3JVbmRlZmlu ZWQoKSkKKysgICAgICAgICAgICBpZiAoaXQudmFsdWUoKS5pc051bGxPclVuZGVmaW5lZCgpKQor ICAgICAgICAgICAgICAgICBpdCA9IG11bHRpcGx5V3JhcHBlZFFPYmplY3RzLT5lcmFzZShpdCk7 CisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICArK2l0OworZGlmZiAtLWdpdCBh L3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5jcHAgYi9xdGRl Y2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWwuY3BwCitpbmRleCAyMDc5 YThlZDA0Li5hNTc3Y2IyMzUxIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9k ZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9k ZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorQEAgLTM4OSw2ICszODksMTIgQEAgdm9pZCBRUW1s RGVsZWdhdGVNb2RlbFByaXZhdGU6OmNvbm5lY3RUb0Fic3RyYWN0SXRlbU1vZGVsKCkKKyAgICAg ICAgICAgICAgICAgICAgICAgcSwgIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX3Jvd3NSZW1v dmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisgICAgIHFtbG9iamVjdF9jb25uZWN0KGFpbSwg UUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwocm93c0Fib3V0VG9CZVJlbW92ZWQoUU1vZGVsSW5k ZXgsaW50LGludCkpLAorICAgICAgICAgICAgICAgICAgICAgICBxLCAgUVFtbERlbGVnYXRlTW9k ZWwsIFNMT1QoX3Ffcm93c0Fib3V0VG9CZVJlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsK KysgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChj b2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLAorKyAgICAgICAgICAgICAgICAg ICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9jb2x1bW5zSW5zZXJ0ZWQoUU1vZGVs SW5kZXgsaW50LGludCkpKTsKKysgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJ dGVtTW9kZWwsIFNJR05BTChjb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSksCisr ICAgICAgICAgICAgICAgICAgICAgIHEsIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2NvbHVt bnNSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIHFtbG9iamVjdF9jb25uZWN0 KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoY29sdW1uc01vdmVkKFFNb2RlbEluZGV4 LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSksCisrICAgICAgICAgICAgICAgICAgICAgIHEsIFFR bWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2NvbHVtbnNNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50 LFFNb2RlbEluZGV4LGludCkpKTsKKyAgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJh Y3RJdGVtTW9kZWwsIFNJR05BTChkYXRhQ2hhbmdlZChRTW9kZWxJbmRleCxRTW9kZWxJbmRleCxR VmVjdG9yPGludD4pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgcSwgUVFtbERlbGVnYXRlTW9k ZWwsIFNMT1QoX3FfZGF0YUNoYW5nZWQoUU1vZGVsSW5kZXgsUU1vZGVsSW5kZXgsUVZlY3Rvcjxp bnQ+KSkpOworICAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwg U0lHTkFMKHJvd3NNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpLAor QEAgLTQxMyw2ICs0MTksMTIgQEAgdm9pZCBRUW1sRGVsZWdhdGVNb2RlbFByaXZhdGU6OmRpc2Nv bm5lY3RGcm9tQWJzdHJhY3RJdGVtTW9kZWwoKQorICAgICAgICAgICAgICAgICAgICAgICAgIHEs IFNMT1QoX3Ffcm93c0Fib3V0VG9CZVJlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKyAg ICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChyb3dzUmVtb3ZlZChRTW9kZWxJbmRl eCxpbnQsaW50KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgcSwgU0xPVChfcV9yb3dzUmVt b3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFp bSwgU0lHTkFMKGNvbHVtbnNJbnNlcnRlZChRTW9kZWxJbmRleCxpbnQsaW50KSksIHEsCisrICAg ICAgICAgICAgICAgICAgICAgICAgU0xPVChfcV9jb2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5kZXgs aW50LGludCkpKTsKKysgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChjb2x1bW5z UmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSksIHEsCisrICAgICAgICAgICAgICAgICAgICAg ICAgU0xPVChfcV9jb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBR T2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKGNvbHVtbnNNb3ZlZChRTW9kZWxJbmRleCxp bnQsaW50LFFNb2RlbEluZGV4LGludCkpLCBxLAorKyAgICAgICAgICAgICAgICAgICAgICAgIFNM T1QoX3FfY29sdW1uc01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSkp OworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKGRhdGFDaGFuZ2VkKFFNb2Rl bEluZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50PikpLAorICAgICAgICAgICAgICAgICAgICAg ICAgIHEsIFNMT1QoX3FfZGF0YUNoYW5nZWQoUU1vZGVsSW5kZXgsUU1vZGVsSW5kZXgsUVZlY3Rv cjxpbnQ+KSkpOworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKHJvd3NNb3Zl ZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpLAorQEAgLTE5NzMsNiArMTk4 NSwzOCBAQCB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9yb3dzTW92ZWQoCisgICAgIH0KKyB9 CisgCisrdm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3FfY29sdW1uc0luc2VydGVkKGNvbnN0IFFN b2RlbEluZGV4ICZwYXJlbnQsIGludCBiZWdpbiwgaW50IGVuZCkKKyt7CisrICAgIFFfRChRUW1s RGVsZWdhdGVNb2RlbCk7CisrICAgIFFfVU5VU0VEKGVuZCk7CisrICAgIGlmIChwYXJlbnQgPT0g ZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYmIGJlZ2luID09IDApIHsKKysgICAgICAgIC8v IG1hcmsgYWxsIGl0ZW1zIGFzIGNoYW5nZWQKKysgICAgICAgIF9xX2l0ZW1zQ2hhbmdlZCgwLCBk LT5tX2NvdW50LCBRVmVjdG9yPGludD4oKSk7CisrICAgIH0KKyt9CisrCisrdm9pZCBRUW1sRGVs ZWdhdGVNb2RlbDo6X3FfY29sdW1uc1JlbW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCwg aW50IGJlZ2luLCBpbnQgZW5kKQorK3sKKysgICAgUV9EKFFRbWxEZWxlZ2F0ZU1vZGVsKTsKKysg ICAgUV9VTlVTRUQoZW5kKTsKKysgICAgaWYgKHBhcmVudCA9PSBkLT5tX2FkYXB0b3JNb2RlbC5y b290SW5kZXggJiYgYmVnaW4gPT0gMCkgeworKyAgICAgICAgLy8gbWFyayBhbGwgaXRlbXMgYXMg Y2hhbmdlZAorKyAgICAgICAgX3FfaXRlbXNDaGFuZ2VkKDAsIGQtPm1fY291bnQsIFFWZWN0b3I8 aW50PigpKTsKKysgICAgfQorK30KKysKKyt2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9jb2x1 bW5zTW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCwgaW50IHN0YXJ0LCBpbnQgZW5kLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRTW9kZWxJbmRl eCAmZGVzdGluYXRpb24sIGludCBjb2x1bW4pCisreworKyAgICBRX0QoUVFtbERlbGVnYXRlTW9k ZWwpOworKyAgICBRX1VOVVNFRChlbmQpOworKyAgICBpZiAoKHBhcmVudCA9PSBkLT5tX2FkYXB0 b3JNb2RlbC5yb290SW5kZXggJiYgc3RhcnQgPT0gMCkKKysgICAgICAgIHx8IChkZXN0aW5hdGlv biA9PSBkLT5tX2FkYXB0b3JNb2RlbC5yb290SW5kZXggJiYgY29sdW1uID09IDApKSB7CisrICAg ICAgICAvLyBtYXJrIGFsbCBpdGVtcyBhcyBjaGFuZ2VkCisrICAgICAgICBfcV9pdGVtc0NoYW5n ZWQoMCwgZC0+bV9jb3VudCwgUVZlY3RvcjxpbnQ+KCkpOworKyAgICB9CisrfQorKworIHZvaWQg UVFtbERlbGVnYXRlTW9kZWw6Ol9xX2RhdGFDaGFuZ2VkKGNvbnN0IFFNb2RlbEluZGV4ICZiZWdp biwgY29uc3QgUU1vZGVsSW5kZXggJmVuZCwgY29uc3QgUVZlY3RvcjxpbnQ+ICZyb2xlcykKKyB7 CisgICAgIFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2 ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3Jj L3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbF9wLmgKK2luZGV4IDhhYWI0YmFkY2EuLmQxNDBi ZmJhYWYgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVn YXRlbW9kZWxfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVn YXRlbW9kZWxfcC5oCitAQCAtMTUyLDYgKzE1Miw5IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAgICAg dm9pZCBfcV9pdGVtc01vdmVkKGludCBmcm9tLCBpbnQgdG8sIGludCBjb3VudCk7CisgICAgIHZv aWQgX3FfbW9kZWxSZXNldCgpOworICAgICB2b2lkIF9xX3Jvd3NJbnNlcnRlZChjb25zdCBRTW9k ZWxJbmRleCAmLGludCxpbnQpOworKyAgICB2b2lkIF9xX2NvbHVtbnNJbnNlcnRlZChjb25zdCBR TW9kZWxJbmRleCAmLCBpbnQsIGludCk7CisrICAgIHZvaWQgX3FfY29sdW1uc1JlbW92ZWQoY29u c3QgUU1vZGVsSW5kZXggJiwgaW50LCBpbnQpOworKyAgICB2b2lkIF9xX2NvbHVtbnNNb3ZlZChj b25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCwgY29uc3QgUU1vZGVsSW5kZXggJiwgaW50KTsK KyAgICAgdm9pZCBfcV9yb3dzQWJvdXRUb0JlUmVtb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmcGFy ZW50LCBpbnQgYmVnaW4sIGludCBlbmQpOworICAgICB2b2lkIF9xX3Jvd3NSZW1vdmVkKGNvbnN0 IFFNb2RlbEluZGV4ICYsaW50LGludCk7CisgICAgIHZvaWQgX3Ffcm93c01vdmVkKGNvbnN0IFFN b2RlbEluZGV4ICYsIGludCwgaW50LCBjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQpOworZGlmZiAt LWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlj a2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJs ZXF1aWNraXRlbS5jcHAKK2luZGV4IDg1NzE5ZmRjODAuLjc4ZTJhYjMwMmMgMTAwNjQ0CistLS0g YS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2tpdGVt LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJs ZXF1aWNraXRlbS5jcHAKK0BAIC00Niw2ICs0Niw3IEBACisgI2luY2x1ZGUgIlF0UXVpY2svcHJp dmF0ZS9xcXVpY2t0ZXh0aW5wdXRfcC5oIgorICNpbmNsdWRlICJRdFF1aWNrL3ByaXZhdGUvcXF1 aWNrYWNjZXNzaWJsZWF0dGFjaGVkX3AuaCIKKyAjaW5jbHVkZSAiUXRRdWljay9xcXVpY2t0ZXh0 ZG9jdW1lbnQuaCIKKysjaW5jbHVkZSAiUXRRdWljay9xcXVpY2tyZW5kZXJjb250cm9sLmgiCisg UVRfQkVHSU5fTkFNRVNQQUNFCisgCisgI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorQEAg LTU3LDcgKzU4LDE5IEBAIFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpRQWNjZXNzaWJsZVF1aWNrSXRl bShRUXVpY2tJdGVtICppdGVtKQorIAorIFFXaW5kb3cgKlFBY2Nlc3NpYmxlUXVpY2tJdGVtOjp3 aW5kb3coKSBjb25zdAorIHsKKy0gICAgcmV0dXJuIGl0ZW0oKS0+d2luZG93KCk7CisrICAgIFFR dWlja1dpbmRvdyAqd2luZG93ID0gaXRlbSgpLT53aW5kb3coKTsKKysKKysgICAgLy8gRm9yIFFR dWlja1dpZGdldCB0aGUgYWJvdmUgd2luZG93IHdpbGwgYmUgdGhlIG9mZnNjcmVlbiBRUXVpY2tX aW5kb3csCisrICAgIC8vIHdoaWNoIGlzIG5vdCBhIHBhcnQgb2YgdGhlIGFjY2Vzc2liaWxpdHkg dHJlZS4gRGV0ZWN0IHRoaXMgY2FzZSBhbmQKKysgICAgLy8gcmV0dXJuIHRoZSB3aW5kb3cgZm9y IHRoZSBRUXVpY2tXaWRnZXQgaW5zdGVhZC4KKysgICAgaWYgKHdpbmRvdyAmJiAhd2luZG93LT5o YW5kbGUoKSkgeworKyAgICAgICAgaWYgKFFRdWlja1JlbmRlckNvbnRyb2wgKnJlbmRlckNvbnRy b2wgPSBRUXVpY2tXaW5kb3dQcml2YXRlOjpnZXQod2luZG93KS0+cmVuZGVyQ29udHJvbCkgewor KyAgICAgICAgICAgIGlmIChRV2luZG93ICpyZW5kZXJXaW5kb3cgPSByZW5kZXJDb250cm9sLT5y ZW5kZXJXaW5kb3cobnVsbHB0cikpCisrICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJXaW5k b3c7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgcmV0dXJuIHdpbmRvdzsKKyB9CisgCisg aW50IFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpjaGlsZENvdW50KCkgY29uc3QKK0BAIC0xMTMsMTkg KzEyNiwxNSBAQCBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja0l0ZW06OmNo aWxkQXQoaW50IHgsIGludCB5KSBjb25zdAorIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNz aWJsZVF1aWNrSXRlbTo6cGFyZW50KCkgY29uc3QKKyB7CisgICAgIFFRdWlja0l0ZW0gKnBhcmVu dCA9IGl0ZW0oKS0+cGFyZW50SXRlbSgpOworLSAgICBRUXVpY2tXaW5kb3cgKndpbmRvdyA9IGl0 ZW0oKS0+d2luZG93KCk7CistICAgIFFRdWlja0l0ZW0gKmNpID0gd2luZG93ID8gd2luZG93LT5j b250ZW50SXRlbSgpIDogbnVsbHB0cjsKKysgICAgUVF1aWNrV2luZG93ICppdGVtV2luZG93ID0g aXRlbSgpLT53aW5kb3coKTsKKysgICAgUVF1aWNrSXRlbSAqY2kgPSBpdGVtV2luZG93ID8gaXRl bVdpbmRvdy0+Y29udGVudEl0ZW0oKSA6IG51bGxwdHI7CisgICAgIHdoaWxlIChwYXJlbnQgJiYg IVFRdWlja0l0ZW1Qcml2YXRlOjpnZXQocGFyZW50KS0+aXNBY2Nlc3NpYmxlICYmIHBhcmVudCAh PSBjaSkKKyAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50SXRlbSgpOworIAorICAgICBp ZiAocGFyZW50KSB7CisgICAgICAgICBpZiAocGFyZW50ID09IGNpKSB7CistICAgICAgICAgICAg Ly8gSnVtcCBvdXQgdG8gdGhlIHNjZW5lIHdpZGdldCBpZiB0aGUgcGFyZW50IGlzIHRoZSByb290 IGl0ZW0uCistICAgICAgICAgICAgLy8gVGhlcmUgYXJlIHR3byByb290IGl0ZW1zLCBRUXVpY2tX aW5kb3c6OnJvb3RJdGVtIGFuZAorLSAgICAgICAgICAgIC8vIFFRdWlja1ZpZXc6OmRlY2xhcmF0 aXZlUm9vdC4gVGhlIGZvcm1lciBpcyB0aGUgdHJ1ZSByb290IGl0ZW0sCistICAgICAgICAgICAg Ly8gYnV0IGlzIG5vdCBhIHBhcnQgb2YgdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4gQ2hlY2sgaWYg d2UgaGl0CistICAgICAgICAgICAgLy8gaXQgaGVyZSBhbmQgcmV0dXJuIGFuIGludGVyZmFjZSBm b3IgdGhlIHNjZW5lIGluc3RlYWQuCistICAgICAgICAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpx dWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uod2luZG93KTsKKysgICAgICAgICAgICAvLyBKdW1wIG91 dCB0byB0aGUgd2luZG93IGlmIHRoZSBwYXJlbnQgaXMgdGhlIHJvb3QgaXRlbQorKyAgICAgICAg ICAgIHJldHVybiBRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKHdpbmRvdygp KTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgd2hpbGUgKHBhcmVudCAmJiAhcGFy ZW50LT5kX2Z1bmMoKS0+aXNBY2Nlc3NpYmxlKQorICAgICAgICAgICAgICAgICBwYXJlbnQgPSBw YXJlbnQtPnBhcmVudEl0ZW0oKTsKK0BAIC0xODgsNyArMTk3LDcgQEAgUUFjY2Vzc2libGU6OlN0 YXRlIFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpzdGF0ZSgpIGNvbnN0CisgICAgIFFSZWN0IHZpZXdS ZWN0XyA9IHZpZXdSZWN0KCk7CisgICAgIFFSZWN0IGl0ZW1SZWN0ID0gcmVjdCgpOworIAorLSAg ICBpZiAodmlld1JlY3RfLmlzTnVsbCgpIHx8IGl0ZW1SZWN0LmlzTnVsbCgpIHx8ICFpdGVtKCkt PndpbmRvdygpIHx8ICFpdGVtKCktPndpbmRvdygpLT5pc1Zpc2libGUoKSB8fCFpdGVtKCktPmlz VmlzaWJsZSgpIHx8IHFGdXp6eUlzTnVsbChpdGVtKCktPm9wYWNpdHkoKSkpCisrICAgIGlmICh2 aWV3UmVjdF8uaXNOdWxsKCkgfHwgaXRlbVJlY3QuaXNOdWxsKCkgfHwgIXdpbmRvdygpIHx8ICF3 aW5kb3coKS0+aXNWaXNpYmxlKCkgfHwhaXRlbSgpLT5pc1Zpc2libGUoKSB8fCBxRnV6enlJc051 bGwoaXRlbSgpLT5vcGFjaXR5KCkpKQorICAgICAgICAgc3RhdGUuaW52aXNpYmxlID0gdHJ1ZTsK KyAgICAgaWYgKCF2aWV3UmVjdF8uaW50ZXJzZWN0cyhpdGVtUmVjdCkpCisgICAgICAgICBzdGF0 ZS5vZmZzY3JlZW4gPSB0cnVlOworQEAgLTIwMSw2ICsyMTAsMTAgQEAgUUFjY2Vzc2libGU6OlN0 YXRlIFFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpzdGF0ZSgpIGNvbnN0CisgICAgIGlmIChyb2xlKCkg PT0gUUFjY2Vzc2libGU6OkVkaXRhYmxlVGV4dCkKKyAgICAgICAgIGlmIChhdXRvIHRpID0gcW9i amVjdF9jYXN0PFFRdWlja1RleHRJbnB1dCAqPihpdGVtKCkpKQorICAgICAgICAgICAgIHN0YXRl LnBhc3N3b3JkRWRpdCA9IHRpLT5lY2hvTW9kZSgpICE9IFFRdWlja1RleHRJbnB1dDo6Tm9ybWFs OworKyAgICBpZiAoIWl0ZW0oKS0+aXNFbmFibGVkKCkpIHsKKysgICAgICAgIHN0YXRlLmZvY3Vz YWJsZSA9IGZhbHNlOworKyAgICAgICAgc3RhdGUuZGlzYWJsZWQgPSB0cnVlOworKyAgICB9Cisg ICAgIHJldHVybiBzdGF0ZTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmggYi9xdGRlY2xhcmF0aXZl L3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3AuaAoraW5kZXggMzlm ZmNhZjM5Yy4uOGJhYTAxMzMwYyAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr L2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZl L3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3AuaAorQEAgLTU4LDcg KzU4LDcgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmls aXR5KQorIAorLWNsYXNzIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cgOiBwdWJsaWMgUUFjY2Vzc2li bGVPYmplY3QKKytjbGFzcyBRX1FVSUNLX0VYUE9SVCBRQWNjZXNzaWJsZVF1aWNrV2luZG93IDog cHVibGljIFFBY2Nlc3NpYmxlT2JqZWN0CisgeworIHB1YmxpYzoKKyAgICAgUUFjY2Vzc2libGVR dWlja1dpbmRvdyhRUXVpY2tXaW5kb3cgKm9iamVjdCk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrZHJhZy5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9x dWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcAoraW5kZXggODMyMWZjZmVlZC4uMzgzMDc4YjNiOSAx MDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2RyYWcuY3Bw CisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcAorQEAg LTQ4MSw3ICs0ODEsOSBAQCB2b2lkIFFRdWlja0RyYWdBdHRhY2hlZDo6c2V0S2V5cyhjb25zdCBR U3RyaW5nTGlzdCAma2V5cykKKyAgICAgXHFtbGF0dGFjaGVkcHJvcGVydHkgc3RyaW5nbGlzdCBR dFF1aWNrOjpEcmFnOjptaW1lRGF0YQorICAgICBcc2luY2UgNS4yCisgCistICAgIFRoaXMgcHJv cGVydHkgaG9sZHMgYSBtYXAgb2YgbWltZURhdGEgdGhhdCBpcyB1c2VkIGR1cmluZyBzdGFydERy YWcuCisrICAgIFRoaXMgcHJvcGVydHkgaG9sZHMgYSBtYXAgZnJvbSBtaW1lIHR5cGUgdG8gZGF0 YSB0aGF0IGlzIHVzZWQgZHVyaW5nIHN0YXJ0RHJhZy4KKysgICAgVGhlIG1pbWUgZGF0YSBuZWVk cyB0byBiZSBhIFxjIHN0cmluZywgb3IgYW4gXGMgQXJyYXlCdWZmZXIgd2l0aCB0aGUgZGF0YSBl bmNvZGVkCisrICAgIGFjY29yZGluZyB0byB0aGUgbWltZSB0eXBlLgorICovCisgCisgUVZhcmlh bnRNYXAgUVF1aWNrRHJhZ0F0dGFjaGVkOjptaW1lRGF0YSgpIGNvbnN0CitAQCAtNzY2LDggKzc2 OCwxMiBAQCBRdDo6RHJvcEFjdGlvbiBRUXVpY2tEcmFnQXR0YWNoZWRQcml2YXRlOjpzdGFydERy YWcoUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdAorICAgICBRRHJhZyAqZHJhZyA9IG5ldyBR RHJhZyhzb3VyY2UgPyBzb3VyY2UgOiBxKTsKKyAgICAgUU1pbWVEYXRhICptaW1lRGF0YSA9IG5l dyBRTWltZURhdGEoKTsKKyAKKy0gICAgZm9yIChhdXRvIGl0ID0gZXh0ZXJuYWxNaW1lRGF0YS5j YmVnaW4oKSwgZW5kID0gZXh0ZXJuYWxNaW1lRGF0YS5jZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkK Ky0gICAgICAgIG1pbWVEYXRhLT5zZXREYXRhKGl0LmtleSgpLCBpdC52YWx1ZSgpLnRvU3RyaW5n KCkudG9VdGY4KCkpOworKyAgICBmb3IgKGF1dG8gaXQgPSBleHRlcm5hbE1pbWVEYXRhLmNiZWdp bigpLCBlbmQgPSBleHRlcm5hbE1pbWVEYXRhLmNlbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Cisr ICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8UU1ldGFUeXBlOjpUeXBlPihpdC52YWx1ZSgpLnR5cGUo KSkgPT0gUU1ldGFUeXBlOjpRQnl0ZUFycmF5KQorKyAgICAgICAgICAgIG1pbWVEYXRhLT5zZXRE YXRhKGl0LmtleSgpLCBpdC52YWx1ZSgpLnRvQnl0ZUFycmF5KCkpOworKyAgICAgICAgZWxzZQor KyAgICAgICAgICAgIG1pbWVEYXRhLT5zZXREYXRhKGl0LmtleSgpLCBpdC52YWx1ZSgpLnRvU3Ry aW5nKCkudG9VdGY4KCkpOworKyAgICB9CisgCisgICAgIGRyYWctPnNldE1pbWVEYXRhKG1pbWVE YXRhKTsKKyAgICAgaWYgKHBpeG1hcExvYWRlci5pc1JlYWR5KCkpIHsKK2RpZmYgLS1naXQgYS9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtLmNwcCBiL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3BwCitpbmRleCA3NWYxNDU3ODE2Li5kZWMw YWUxOWFlIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNr aXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0u Y3BwCitAQCAtNTksNiArNTksNyBAQAorICNpbmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9xbnVtZXJp Y19wLmg+CisgI2luY2x1ZGUgPFF0R3VpL3FwYS9xcGxhdGZvcm10aGVtZS5oPgorICNpbmNsdWRl IDxRdENvcmUvcWxvZ2dpbmdjYXRlZ29yeS5oPgorKyNpbmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9x ZHVwbGljYXRldHJhY2tlcl9wLmg+CisgCisgI2luY2x1ZGUgPHByaXZhdGUvcXFtbGdsb2JhbF9w Lmg+CisgI2luY2x1ZGUgPHByaXZhdGUvcXFtbGVuZ2luZV9wLmg+CitAQCAtMjMyNiw2ICsyMzI3 LDcgQEAgUVF1aWNrSXRlbTo6UVF1aWNrSXRlbShRUXVpY2tJdGVtUHJpdmF0ZSAmZGQsIFFRdWlj a0l0ZW0gKnBhcmVudCkKKyBRUXVpY2tJdGVtOjp+UVF1aWNrSXRlbSgpCisgeworICAgICBRX0Qo UVF1aWNrSXRlbSk7CisrICAgIGQtPmluRGVzdHJ1Y3RvciA9IHRydWU7CisgCisgICAgIGlmIChk LT53aW5kb3dSZWZDb3VudCA+IDEpCisgICAgICAgICBkLT53aW5kb3dSZWZDb3VudCA9IDE7IC8v IE1ha2Ugc3VyZSB3aW5kb3cgaXMgc2V0IHRvIG51bGwgaW4gbmV4dCBjYWxsIHRvIGRlcmVmV2lu ZG93KCkuCitAQCAtMjUyNiw2ICsyNTI4LDcgQEAgUVF1aWNrSXRlbSogUVF1aWNrSXRlbVByaXZh dGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbihRUXVpY2tJdGVtICppdGVtLCBib28KKyAg ICAgUVF1aWNrSXRlbSAqY3VycmVudCA9IGl0ZW07CisgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8 PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjogc3RhcnRJ dGVtOiIgPDwgc3RhcnRJdGVtOworICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0 ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IGZpcnN0RnJvbUl0ZW06IiA8 PCBmaXJzdEZyb21JdGVtOworKyAgICBRRHVwbGljYXRlVHJhY2tlcjxRUXVpY2tJdGVtICo+IGN5 Y2xlRGV0ZWN0b3I7CisgICAgIGRvIHsKKyAgICAgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAi UVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjogY3VycmVudDoi IDw8IGN1cnJlbnQ7CisgICAgICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0ZW1Q cml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IGZyb206IiA8PCBmcm9tOworQEAg LTI1OTIsNyArMjU5NSwxMCBAQCBRUXVpY2tJdGVtKiBRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFBy ZXZJdGVtSW5UYWJGb2N1c0NoYWluKFFRdWlja0l0ZW0gKml0ZW0sIGJvbworICAgICAgICAgLy8g dHJhdmVyc2VkIGFsbCBvZiB0aGUgY2hhaW4gKGJ5IGNvbXBhcmUgdGhlIFtjdXJyZW50XSBpdGVt IHdpdGggW3N0YXJ0SXRlbV0pCisgICAgICAgICAvLyBTaW5jZSB0aGUgW3N0YXJ0SXRlbV0gbWln aHQgYmUgcHJvbW90ZWQgdG8gaXRzIHBhcmVudCBpZiBpdCBpcyBpbnZpc2libGUsCisgICAgICAg ICAvLyB3ZSBzdGlsbCBoYXZlIHRvIGNoZWNrIFtjdXJyZW50XSBpdGVtIHdpdGggb3JpZ2luYWwg c3RhcnQgaXRlbQorLSAgICAgICAgaWYgKChjdXJyZW50ID09IHN0YXJ0SXRlbSB8fCBjdXJyZW50 ID09IG9yaWdpbmFsU3RhcnRJdGVtKSAmJiBmcm9tID09IGZpcnN0RnJvbUl0ZW0pIHsKKysgICAg ICAgIC8vIFdlIG1pZ2h0IGFsc28gcnVuIGludG8gYSBjeWNsZSBiZWZvcmUgd2UgcmVhY2ggZmly c3RGcm9tSXRlbSBhZ2FpbgorKyAgICAgICAgLy8gYnV0IG5vdGUgdGhhdCB3ZSBoYXZlIHRvIGln bm9yZSBjdXJyZW50IGlmIHdlIGFyZSBtZWFudCB0byBza2lwIGl0CisrICAgICAgICBpZiAoKChj dXJyZW50ID09IHN0YXJ0SXRlbSB8fCBjdXJyZW50ID09IG9yaWdpbmFsU3RhcnRJdGVtKSAmJiBm cm9tID09IGZpcnN0RnJvbUl0ZW0pIHx8CisrICAgICAgICAgICAgICAgICghc2tpcCAmJiBjeWNs ZURldGVjdG9yLmhhc1NlZW4oY3VycmVudCkpKSB7CisgICAgICAgICAgICAgLy8gd3JhcHBlZCBh cm91bmQsIGF2b2lkIGVuZGxlc3MgbG9vcHMKKyAgICAgICAgICAgICBpZiAoaXRlbSA9PSBjb250 ZW50SXRlbSkgeworICAgICAgICAgICAgICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlj a0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IGxvb3BlZCwgcmV0dXJu IGNvbnRlbnRJdGVtIjsKK0BAIC0yNjg5LDkgKzI2OTUsOCBAQCB2b2lkIFFRdWlja0l0ZW06OnNl dFBhcmVudEl0ZW0oUVF1aWNrSXRlbSAqcGFyZW50SXRlbSkKKyAKKyAgICAgICAgIGNvbnN0IGJv b2wgd2FzVmlzaWJsZSA9IGlzVmlzaWJsZSgpOworICAgICAgICAgb3AtPnJlbW92ZUNoaWxkKHRo aXMpOworLSAgICAgICAgaWYgKHdhc1Zpc2libGUpIHsKKysgICAgICAgIGlmICh3YXNWaXNpYmxl ICYmICFvcC0+aW5EZXN0cnVjdG9yKQorICAgICAgICAgICAgIGVtaXQgb2xkUGFyZW50SXRlbS0+ dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworLSAgICAgICAgfQorICAgICB9IGVsc2UgaWYgKGQt PndpbmRvdykgeworICAgICAgICAgUVF1aWNrV2luZG93UHJpdmF0ZTo6Z2V0KGQtPndpbmRvdykt PnBhcmVudGxlc3NJdGVtcy5yZW1vdmUodGhpcyk7CisgICAgIH0KK0BAIC0yNzY4LDggKzI3NzMs OSBAQCB2b2lkIFFRdWlja0l0ZW06OnNldFBhcmVudEl0ZW0oUVF1aWNrSXRlbSAqcGFyZW50SXRl bSkKKyAKKyAgICAgZC0+aXRlbUNoYW5nZShJdGVtUGFyZW50SGFzQ2hhbmdlZCwgZC0+cGFyZW50 SXRlbSk7CisgCistICAgIGVtaXQgcGFyZW50Q2hhbmdlZChkLT5wYXJlbnRJdGVtKTsKKy0gICAg aWYgKGlzVmlzaWJsZSgpICYmIGQtPnBhcmVudEl0ZW0pCisrICAgIGlmICghZC0+aW5EZXN0cnVj dG9yKQorKyAgICAgICAgZW1pdCBwYXJlbnRDaGFuZ2VkKGQtPnBhcmVudEl0ZW0pOworKyAgICBp ZiAoaXNWaXNpYmxlKCkgJiYgZC0+cGFyZW50SXRlbSAmJiAhUVF1aWNrSXRlbVByaXZhdGU6Omdl dChkLT5wYXJlbnRJdGVtKS0+aW5EZXN0cnVjdG9yKQorICAgICAgICAgZW1pdCBkLT5wYXJlbnRJ dGVtLT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CisgfQorIAorQEAgLTI5NjUsNyArMjk3MSw4 IEBAIHZvaWQgUVF1aWNrSXRlbVByaXZhdGU6OnJlbW92ZUNoaWxkKFFRdWlja0l0ZW0gKmNoaWxk KQorIAorICAgICBpdGVtQ2hhbmdlKFFRdWlja0l0ZW06Okl0ZW1DaGlsZFJlbW92ZWRDaGFuZ2Us IGNoaWxkKTsKKyAKKy0gICAgZW1pdCBxLT5jaGlsZHJlbkNoYW5nZWQoKTsKKysgICAgaWYgKCFp bkRlc3RydWN0b3IpCisrICAgICAgICBlbWl0IHEtPmNoaWxkcmVuQ2hhbmdlZCgpOworIH0KKyAK KyB2b2lkIFFRdWlja0l0ZW1Qcml2YXRlOjpyZWZXaW5kb3coUVF1aWNrV2luZG93ICpjKQorQEAg LTMxOTQsNiArMzIwMSw3IEBAIFFRdWlja0l0ZW1Qcml2YXRlOjpRUXVpY2tJdGVtUHJpdmF0ZSgp CisgICAgICwgdG91Y2hFbmFibGVkKGZhbHNlKQorICNlbmRpZgorICAgICAsIGhhc0N1cnNvckhh bmRsZXIoZmFsc2UpCisrICAgICwgaW5EZXN0cnVjdG9yKGZhbHNlKQorICAgICAsIGRpcnR5QXR0 cmlidXRlcygwKQorICAgICAsIG5leHREaXJ0eUl0ZW0obnVsbHB0cikKKyAgICAgLCBwcmV2RGly dHlJdGVtKG51bGxwdHIpCitAQCAtNTEyMCw2ICs1MTI4LDEzIEBAIHZvaWQgUVF1aWNrSXRlbTo6 Y29tcG9uZW50Q29tcGxldGUoKQorICAgICAgICAgZC0+YWRkVG9EaXJ0eUxpc3QoKTsKKyAgICAg ICAgIFFRdWlja1dpbmRvd1ByaXZhdGU6OmdldChkLT53aW5kb3cpLT5kaXJ0eUl0ZW0odGhpcyk7 CisgICAgIH0KKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrICAgIGlmIChkLT5p c0FjY2Vzc2libGUgJiYgZC0+ZWZmZWN0aXZlVmlzaWJsZSkgeworKyAgICAgICAgUUFjY2Vzc2li bGVFdmVudCBldih0aGlzLCBRQWNjZXNzaWJsZTo6T2JqZWN0U2hvdyk7CisrICAgICAgICBRQWNj ZXNzaWJsZTo6dXBkYXRlQWNjZXNzaWJpbGl0eSgmZXYpOworKyAgICB9CisrI2VuZGlmCisgfQor IAorIFFRdWlja1N0YXRlR3JvdXAgKlFRdWlja0l0ZW1Qcml2YXRlOjpfc3RhdGVzKCkKK0BAIC02 MTA2LDkgKzYxMjEsMTEgQEAgYm9vbCBRUXVpY2tJdGVtUHJpdmF0ZTo6c2V0RWZmZWN0aXZlVmlz aWJsZVJlY3VyKGJvb2wgbmV3RWZmZWN0aXZlVmlzaWJsZSkKKyAgICAgICAgIFFBY2Nlc3NpYmxl Ojp1cGRhdGVBY2Nlc3NpYmlsaXR5KCZldik7CisgICAgIH0KKyAjZW5kaWYKKy0gICAgZW1pdCBx LT52aXNpYmxlQ2hhbmdlZCgpOworLSAgICBpZiAoY2hpbGRWaXNpYmlsaXR5Q2hhbmdlZCkKKy0g ICAgICAgIGVtaXQgcS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworKyAgICBpZiAoIWluRGVz dHJ1Y3RvcikgeworKyAgICAgICAgZW1pdCBxLT52aXNpYmxlQ2hhbmdlZCgpOworKyAgICAgICAg aWYgKGNoaWxkVmlzaWJpbGl0eUNoYW5nZWQpCisrICAgICAgICAgICAgZW1pdCBxLT52aXNpYmxl Q2hpbGRyZW5DaGFuZ2VkKCk7CisrICAgIH0KKyAKKyAgICAgcmV0dXJuIHRydWU7ICAgIC8vIGVm ZmVjdGl2ZSB2aXNpYmlsaXR5IERJRCBjaGFuZ2UKKyB9CitAQCAtNjE1Nyw2ICs2MTc0LDE1IEBA IHZvaWQgUVF1aWNrSXRlbVByaXZhdGU6OnNldEVmZmVjdGl2ZUVuYWJsZVJlY3VyKFFRdWlja0l0 ZW0gKnNjb3BlLCBib29sIG5ld0VmZmVjCisgICAgIH0KKyAKKyAgICAgaXRlbUNoYW5nZShRUXVp Y2tJdGVtOjpJdGVtRW5hYmxlZEhhc0NoYW5nZWQsIGVmZmVjdGl2ZUVuYWJsZSk7CisrI2lmIFFU X0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKyAgICBpZiAoaXNBY2Nlc3NpYmxlKSB7CisrICAgICAg ICBRQWNjZXNzaWJsZTo6U3RhdGUgY2hhbmdlZFN0YXRlOworKyAgICAgICAgY2hhbmdlZFN0YXRl LmRpc2FibGVkID0gdHJ1ZTsKKysgICAgICAgIGNoYW5nZWRTdGF0ZS5mb2N1c2FibGUgPSB0cnVl OworKyAgICAgICAgUUFjY2Vzc2libGVTdGF0ZUNoYW5nZUV2ZW50IGV2KHEsIGNoYW5nZWRTdGF0 ZSk7CisrICAgICAgICBRQWNjZXNzaWJsZTo6dXBkYXRlQWNjZXNzaWJpbGl0eSgmZXYpOworKyAg ICB9CisrI2VuZGlmCisgICAgIGVtaXQgcS0+ZW5hYmxlZENoYW5nZWQoKTsKKyB9CisgCitkaWZm IC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbV9wLmggYi9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaAoraW5kZXggODQxZDkx YmI0MC4uYWRlOGZiNjFmMiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0 ZW1zL3FxdWlja2l0ZW1fcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9x cXVpY2tpdGVtX3AuaAorQEAgLTQ3Miw2ICs0NzIsNyBAQCBwdWJsaWM6CisgICAgIGJvb2wgcmVw bGF5aW5nUHJlc3NFdmVudDoxOworICAgICBib29sIHRvdWNoRW5hYmxlZDoxOworICAgICBib29s IGhhc0N1cnNvckhhbmRsZXI6MTsKKysgICAgcXVpbnQzMiBpbkRlc3RydWN0b3I6MTsgLy8gaGFz IGVudGVyZWQgflFRdWlja0l0ZW0KKyAKKyAgICAgZW51bSBEaXJ0eVR5cGUgeworICAgICAgICAg VHJhbnNmb3JtT3JpZ2luICAgICAgICAgPSAweDAwMDAwMDAxLAorZGlmZiAtLWdpdCBhL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcCBiL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcAoraW5kZXggMDEwYTAxNTJlMS4u ZjhhZDE2OGExNyAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3Fx dWlja2l0ZW12aWV3LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1 aWNraXRlbXZpZXcuY3BwCitAQCAtMTc4NSw3ICsxNzg1LDcgQEAgdm9pZCBRUXVpY2tJdGVtVmll d1ByaXZhdGU6OnJlZmlsbChxcmVhbCBmcm9tLCBxcmVhbCB0bykKKyAKKyAgICAgZG8geworICAg ICAgICAgYnVmZmVyUGF1c2Uuc3RvcCgpOworLSAgICAgICAgaWYgKGN1cnJlbnRDaGFuZ2VzLmhh c1BlbmRpbmdDaGFuZ2VzKCkgfHwgYnVmZmVyZWRDaGFuZ2VzLmhhc1BlbmRpbmdDaGFuZ2VzKCkp IHsKKysgICAgICAgIGlmIChjdXJyZW50Q2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpIHx8IGJ1 ZmZlcmVkQ2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpIHx8IGN1cnJlbnRDaGFuZ2VzLmFjdGl2 ZSkgeworICAgICAgICAgICAgIGN1cnJlbnRDaGFuZ2VzLnJlc2V0KCk7CisgICAgICAgICAgICAg YnVmZmVyZWRDaGFuZ2VzLnJlc2V0KCk7CisgICAgICAgICAgICAgcmVsZWFzZVZpc2libGVJdGVt cyhyZXVzYWJsZUZsYWcpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0 ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1z L3FxdWlja21vdXNlYXJlYV9wX3AuaAoraW5kZXggZmJhMzgzZTI2OC4uMGQ2MzYxODYyMiAxMDA2 NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9w X3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrbW91c2VhcmVh X3BfcC5oCitAQCAtNjEsNyArNjEsNiBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBjbGFzcyBR UXVpY2tNb3VzZUV2ZW50OworIGNsYXNzIFFRdWlja01vdXNlQXJlYTsKKy1jbGFzcyBRUXVpY2tQ b2ludGVyTWFzazsKKyBjbGFzcyBRUXVpY2tNb3VzZUFyZWFQcml2YXRlIDogcHVibGljIFFRdWlj a0l0ZW1Qcml2YXRlCisgeworICAgICBRX0RFQ0xBUkVfUFVCTElDKFFRdWlja01vdXNlQXJlYSkK K0BAIC0xMDAsNyArOTksNiBAQCBwdWJsaWM6CisgI2lmIFFUX0NPTkZJRyhxdWlja19kcmFnYW5k ZHJvcCkKKyAgICAgUVF1aWNrRHJhZyAqZHJhZzsKKyAjZW5kaWYKKy0gICAgUVBvaW50ZXI8UVF1 aWNrUG9pbnRlck1hc2s+IG1hc2s7CisgICAgIFFQb2ludEYgc3RhcnRTY2VuZTsKKyAgICAgUVBv aW50RiB0YXJnZXRTdGFydFBvczsKKyAgICAgUVBvaW50RiBsYXN0UG9zOworZGlmZiAtLWdpdCBh L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja3RleHQuY3BwIGIvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4dC5jcHAKK2luZGV4IDYyMzAxODY5MzMuLmU4 MjNjYTEwOTUgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVp Y2t0ZXh0LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4 dC5jcHAKK0BAIC0yMTY4LDcgKzIxNjgsNyBAQCB2b2lkIFFRdWlja1RleHQ6OnJlc2V0TWF4aW11 bUxpbmVDb3VudCgpCisgICAgIDxpbWcgc3JjPSIiIGFsaWduPSJ0b3AsbWlkZGxlLGJvdHRvbSIg d2lkdGg9IiIgaGVpZ2h0PSIiPiAtIGlubGluZSBpbWFnZXMKKyAgICAgPG9sIHR5cGU9IiI+LCA8 dWwgdHlwZT0iIj4gYW5kIDxsaT4gLSBvcmRlcmVkIGFuZCB1bm9yZGVyZWQgbGlzdHMKKyAgICAg PHByZT48L3ByZT4gLSBwcmVmb3JtYXR0ZWQKKy0gICAgJmd0OyAmbHQ7ICZhbXA7CisrICAgICZn dDsgJmx0OyAmYW1wOyAmcXVvdDsgJm5ic3A7ICZhcG9zOworICAgICBcZW5kY29kZQorIAorICAg ICBcYyBUZXh0LlN0eWxlZFRleHQgcGFyc2VyIGlzIHN0cmljdCwgcmVxdWlyaW5nIHRhZ3MgdG8g YmUgY29ycmVjdGx5IG5lc3RlZC4KK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj ay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcCBiL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgvcXNncmhpZGlzdGFuY2VmaWVsZGdseXBoY2FjaGUu Y3BwCitpbmRleCBlYjRkYjBmODVlLi4yMzI1YTI2NjViIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0YW5jZWZpZWxkZ2x5cGhjYWNoZS5j cHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgvcXNncmhpZGlzdGFu Y2VmaWVsZGdseXBoY2FjaGUuY3BwCitAQCAtNDQ2LDcgKzQ0Niw3IEBAIGJvb2wgUVNHUmhpRGlz dGFuY2VGaWVsZEdseXBoQ2FjaGU6OmxvYWRQcmVnZW5lcmF0ZWRDYWNoZShjb25zdCBRUmF3Rm9u dCAmZm9udCkKKyAKKyAgICAgICAgIGNvbnN0IGNoYXIgKnRleHR1cmVSZWNvcmQgPSBhbGxvY2F0 b3JEYXRhOworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXh0dXJlQ291bnQ7ICsraSwg dGV4dHVyZVJlY29yZCArPSBRdGRmOjpUZXh0dXJlUmVjb3JkU2l6ZSkgeworLSAgICAgICAgICAg IGlmICh0ZXh0dXJlUmVjb3JkICsgUXRkZjo6VGV4dHVyZVJlY29yZFNpemUgPiBxdGRmVGFibGVF bmQpIHsKKysgICAgICAgICAgICBpZiAocXRkZlRhYmxlRW5kIC0gdGV4dHVyZVJlY29yZCA8IFF0 ZGY6OlRleHR1cmVSZWNvcmRTaXplKSB7CisgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJxdGRm IHRhYmxlIHRvbyBzbWFsbCBpbiBmb250ICclcycuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgcVByaW50YWJsZShmb250LmZhbWlseU5hbWUoKSkpOworICAgICAgICAgICAgICAgICByZXR1 cm4gZmFsc2U7CitAQCAtNDYyLDcgKzQ2Miw3IEBAIGJvb2wgUVNHUmhpRGlzdGFuY2VGaWVsZEds eXBoQ2FjaGU6OmxvYWRQcmVnZW5lcmF0ZWRDYWNoZShjb25zdCBRUmF3Rm9udCAmZm9udCkKKyAK KyAgICAgICAgIGNvbnN0IGNoYXIgKmdseXBoUmVjb3JkID0gdGV4dHVyZVJlY29yZDsKKyAgICAg ICAgIGZvciAocXVpbnQzMiBpID0gMDsgaSA8IGdseXBoQ291bnQ7ICsraSwgZ2x5cGhSZWNvcmQg Kz0gUXRkZjo6R2x5cGhSZWNvcmRTaXplKSB7CistICAgICAgICAgICAgaWYgKGdseXBoUmVjb3Jk ICsgUXRkZjo6R2x5cGhSZWNvcmRTaXplID4gcXRkZlRhYmxlRW5kKSB7CisrICAgICAgICAgICAg aWYgKHF0ZGZUYWJsZUVuZCAtIGdseXBoUmVjb3JkIDwgUXRkZjo6IEdseXBoUmVjb3JkU2l6ZSkg eworICAgICAgICAgICAgICAgICBxV2FybmluZygicXRkZiB0YWJsZSB0b28gc21hbGwgaW4gZm9u dCAnJXMnLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHFQcmludGFibGUoZm9udC5mYW1p bHlOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTUxMiw4ICs1 MTIsOCBAQCBib29sIFFTR1JoaURpc3RhbmNlRmllbGRHbHlwaENhY2hlOjpsb2FkUHJlZ2VuZXJh dGVkQ2FjaGUoY29uc3QgUVJhd0ZvbnQgJmZvbnQpCisgCisgICAgICAgICAgICAgaW50IHdpZHRo ID0gdGV4SW5mby0+YWxsb2NhdGVkQXJlYS53aWR0aCgpOworICAgICAgICAgICAgIGludCBoZWln aHQgPSB0ZXhJbmZvLT5hbGxvY2F0ZWRBcmVhLmhlaWdodCgpOworLSAgICAgICAgICAgIHFpbnQ2 NCBzaXplID0gd2lkdGggKiBoZWlnaHQ7CistICAgICAgICAgICAgaWYgKHJlaW50ZXJwcmV0X2Nh c3Q8Y29uc3QgY2hhciAqPih0ZXh0dXJlRGF0YSArIHNpemUpID4gcXRkZlRhYmxlRW5kKSB7Cisr ICAgICAgICAgICAgcWludDY0IHNpemUgPSBxaW50NjQod2lkdGgpICogaGVpZ2h0OworKyAgICAg ICAgICAgIGlmIChxdGRmVGFibGVFbmQgLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4o dGV4dHVyZURhdGEpIDwgc2l6ZSkgeworICAgICAgICAgICAgICAgICBxV2FybmluZygicXRkZiB0 YWJsZSB0b28gc21hbGwgaW4gZm9udCAnJXMnLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg IHFQcmludGFibGUoZm9udC5mYW1pbHlOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0aWwvcXF1aWNr c3R5bGVkdGV4dC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay91dGlsL3FxdWlja3N0eWxl ZHRleHQuY3BwCitpbmRleCBkNTMxZmM5MjA1Li5hMjVhZjkwNDE0IDEwMDY0NAorLS0tIGEvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHlsZWR0ZXh0LmNwcAorKysrIGIvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHlsZWR0ZXh0LmNwcAorQEAgLTU2NCw2 ICs1NjQsOCBAQCB2b2lkIFFRdWlja1N0eWxlZFRleHRQcml2YXRlOjpwYXJzZUVudGl0eShjb25z dCBRQ2hhciAqJmNoLCBjb25zdCBRU3RyaW5nICZ0ZXh0SQorICAgICAgICAgICAgICAgICB0ZXh0 T3V0ICs9IFFDaGFyKDYwKTsKKyAgICAgICAgICAgICBlbHNlIGlmIChlbnRpdHkgPT0gUUxhdGlu MVN0cmluZygiYW1wIikpCisgICAgICAgICAgICAgICAgIHRleHRPdXQgKz0gUUNoYXIoMzgpOwor KyAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3RyaW5nKCJhcG9zIikpCisr ICAgICAgICAgICAgICAgIHRleHRPdXQgKz0gUUNoYXIoMzkpOworICAgICAgICAgICAgIGVsc2Ug aWYgKGVudGl0eSA9PSBRTGF0aW4xU3RyaW5nKCJxdW90IikpCisgICAgICAgICAgICAgICAgIHRl eHRPdXQgKz0gUUNoYXIoMzQpOworICAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0 aW4xU3RyaW5nKCJuYnNwIikpCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3 aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVp Y2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwCituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMDAwMC4uOGExYzkwMTg4MAorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwCitA QCAtMCwwICsxLDExMCBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmln aHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3 LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFF1 aWNrIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNF OkxHUEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRp bmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoq IGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRl ZCB3aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNl IHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0 d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5k IGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBm dXJ0aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93 d3cucXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3Vu ZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBp biB0aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xs b3dpbmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0 dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxl IG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJs aWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJh bAorKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHBy b3ZlZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFw cGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGlu Y2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBm b2xsb3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisrCisrI2luY2x1ZGUgInFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRf cC5oIgorKworKyNpbmNsdWRlICJxcXVpY2t3aWRnZXRfcC5oIgorKworK1FUX0JFR0lOX05BTUVT UEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysKKytRQWNjZXNzaWJsZVF1 aWNrV2lkZ2V0OjpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0KFFRdWlja1dpZGdldCogd2lkZ2V0KQor KzogUUFjY2Vzc2libGVXaWRnZXQod2lkZ2V0KQorKywgbV9hY2Nlc3NpYmxlV2luZG93KFFRdWlj a1dpZGdldFByaXZhdGU6OmdldCh3aWRnZXQpLT5vZmZzY3JlZW5XaW5kb3cpCisreworKyAgICAv LyBOT1RFOiBtX2FjY2Vzc2libGVXaW5kb3cgaXMgYSBRQWNjZXNzaWJsZVF1aWNrV2luZG93LCBh bmQgbm90IGEKKysgICAgLy8gUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyAo ZGVmaW5lZCBiZWxvdykuIFRoaXMgbWVhbnMKKysgICAgLy8gaXQgd2lsbCByZXR1cm4gdGhlIFF1 aWNrIGl0ZW0gY2hpbGQgaW50ZXJmYWNlcywgd2hpY2ggaXMgd2hhdCdzIG5lZWRlZCBoZXJlCisr ICAgIC8vICh1bmxpa2UgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdywgd2hp Y2ggd2lsbCByZXBvcnQgMCBjaGlsZHJlbikuCisrfQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNl ICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjpjaGlsZChpbnQgaW5kZXgpIGNvbnN0CisreworKyAg ICByZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93LmNoaWxkKGluZGV4KTsKKyt9CisrCisraW50IFFB Y2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OmNoaWxkQ291bnQoKSBjb25zdAorK3sKKysgICAgcmV0dXJu IG1fYWNjZXNzaWJsZVdpbmRvdy5jaGlsZENvdW50KCk7CisrfQorKworK2ludCBRQWNjZXNzaWJs ZVF1aWNrV2lkZ2V0OjppbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlm YWNlKSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5pbmRleE9mQ2hp bGQoaWZhY2UpOworK30KKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlj a1dpZGdldDo6Y2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0CisreworKyAgICByZXR1cm4gbV9h Y2Nlc3NpYmxlV2luZG93LmNoaWxkQXQoeCwgeSk7CisrfQorKworK1FBY2Nlc3NpYmxlUXVpY2tX aWRnZXRPZmZzY3JlZW5XaW5kb3c6OlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5k b3coUVF1aWNrV2luZG93ICp3aW5kb3cpCisrOlFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cod2luZG93 KQorK3sKKysKKyt9CisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tX aWRnZXRPZmZzY3JlZW5XaW5kb3c6OmNoaWxkKGludCBpbmRleCkgY29uc3QKKyt7CisrICAgIFFf VU5VU0VEKGluZGV4KTsKKysgICAgcmV0dXJuIG51bGxwdHI7CisrfQorKworK2ludCBRQWNjZXNz aWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpjaGlsZENvdW50KCkgY29uc3QKKyt7Cisr ICAgIHJldHVybiAwOworK30KKysKKytpbnQgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVl bldpbmRvdzo6aW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSkg Y29uc3QKKyt7CisrICAgIFFfVU5VU0VEKGlmYWNlKTsKKysgICAgcmV0dXJuIC0xOworK30KKysK KytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldp bmRvdzo6UUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6Y2hpbGRBdChpbnQg eCwgaW50IHkpIGNvbnN0CisreworKyAgICBRX1VOVVNFRCh4KTsKKysgICAgUV9VTlVTRUQoeSk7 CisrICAgIHJldHVybiBudWxscHRyOworK30KKysKKysjZW5kaWYgLy8gYWNjZXNzaWJpbGl0eQor KworK1FUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj a3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9x dWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmgKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwMDAwLi43YzJhYjkzMGUwCistLS0gL2Rldi9udWxsCisrKysgYi9x dGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmgK K0BAIC0wLDAgKzEsOTUgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJp Z2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb250YWN0OiBodHRwczovL3d3 dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRR dWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5T RTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBob2xk aW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKysq KiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlk ZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5j ZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJl dHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoqIGFu ZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3Ig ZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8v d3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiogR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91 bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQg aW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9s bG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cworKyoqIHdpbGwgYmUgbWV0OiBo dHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCisrKioKKysqKiBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmls ZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorKyoqIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVy YWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBw cm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFy ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBh cHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKKysqKiBp bmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUg Zm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioKKysq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworKworKyNpZm5kZWYgUUFDQ0VTU0lCTEVRVUlDS1dJREdFVF9I CisrI2RlZmluZSBRQUNDRVNTSUJMRVFVSUNLV0lER0VUX0gKKysKKysvLworKy8vICBXIEEgUiBO IEkgTiBHCisrLy8gIC0tLS0tLS0tLS0tLS0KKysvLworKy8vIFRoaXMgZmlsZSBpcyBub3QgcGFy dCBvZiB0aGUgUXQgQVBJLiAgSXQgZXhpc3RzIHB1cmVseSBhcyBhbgorKy8vIGltcGxlbWVudGF0 aW9uIGRldGFpbC4gIFRoaXMgaGVhZGVyIGZpbGUgbWF5IGNoYW5nZSBmcm9tIHZlcnNpb24gdG8K KysvLyB2ZXJzaW9uIHdpdGhvdXQgbm90aWNlLCBvciBldmVuIGJlIHJlbW92ZWQuCisrLy8KKysv LyBXZSBtZWFuIGl0LgorKy8vCisrCisrI2luY2x1ZGUgInFxdWlja3dpZGdldC5oIgorKyNpbmNs dWRlIDxRdFdpZGdldHMvcWFjY2Vzc2libGV3aWRnZXQuaD4KKysKKysjaW5jbHVkZSA8cHJpdmF0 ZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmg+CisrCisrUVRfQkVHSU5fTkFNRVNQQUNFCisrCisr I2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKworKy8vIFRoZXNlIGNsYXNzZXMgaW1wbGVt ZW50IHRoZSBRUXVpY2tXaWdldCBhY2Nlc3NpYmlsaXR5IHN3aXRjaGFyb28sCisrLy8gd2hlcmUg dGhlIGNoaWxkIGl0ZW1zIG9mIHRoZSBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3cgYXJlIHJl cG9ydGVkCisrLy8gYXMgY2hpbGQgYWNjZXNzaWJsZSBpbnRlcmZhY2VzIG9mIHRoZSBRQWNjZXNz aWJsZVF1aWNrV2lkZ2V0LgorK2NsYXNzIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6IHB1YmxpYyBR QWNjZXNzaWJsZVdpZGdldAorK3sKKytwdWJsaWM6CisrICAgIFFBY2Nlc3NpYmxlUXVpY2tXaWRn ZXQoUVF1aWNrV2lkZ2V0KiB3aWRnZXQpOworKworKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAq Y2hpbGQoaW50IGluZGV4KSBjb25zdCBvdmVycmlkZTsKKysgICAgaW50IGNoaWxkQ291bnQoKSBj b25zdCBvdmVycmlkZTsKKysgICAgaW50IGluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNzaWJsZUlu dGVyZmFjZSAqaWZhY2UpIGNvbnN0IG92ZXJyaWRlOworKyAgICBRQWNjZXNzaWJsZUludGVyZmFj ZSAqY2hpbGRBdChpbnQgeCwgaW50IHkpIGNvbnN0IG92ZXJyaWRlOworKworK3ByaXZhdGU6Cisr ICAgIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cgbV9hY2Nlc3NpYmxlV2luZG93OworKyAgICBRX0RJ U0FCTEVfQ09QWShRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0KQorK307CisrCisrY2xhc3MgUUFjY2Vz c2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzogcHVibGljIFFBY2Nlc3NpYmxlUXVpY2tX aW5kb3cKKyt7CisrcHVibGljOgorKyAgICBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVu V2luZG93KFFRdWlja1dpbmRvdyAqd2luZG93KTsKKysgICAgUUFjY2Vzc2libGVJbnRlcmZhY2Ug KmNoaWxkKGludCBpbmRleCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGludCBjaGlsZENvdW50KCkg Y29uc3Qgb3ZlcnJpZGU7CisrICAgIGludCBpbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJ bnRlcmZhY2UgKmlmYWNlKSBjb25zdCBvdmVycmlkZTsKKysgICAgUUFjY2Vzc2libGVJbnRlcmZh Y2UgKmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdCBvdmVycmlkZTsKKyt9OworKworKyNlbmRp ZiAvLyBhY2Nlc3NpYmlsaXR5CisrCisrUVRfRU5EX05BTUVTUEFDRQorKworKyNlbmRpZgorZGlm ZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNr d2lkZ2V0ZmFjdG9yeS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vz c2libGVxdWlja3dpZGdldGZhY3RvcnkuY3BwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMDAwMC4uN2JhODhhMTc2OQorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5LmNwcAorQEAg LTAsMCArMSw2MCBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQg KEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0 LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFF1aWNr IG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxH UEwkCisrKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcg dmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFj Y29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3 aXRoIHRoZQorKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdp dGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2Vl biB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNv bmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0 aGVyCisrKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cu cXQuaW8vY29udGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0 aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0 aGUKKysqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dp bmcgaW5mb3JtYXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0dHBz Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1h eSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAor KyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3Zl ZCBieSB0aGUgS0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVh cmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGluY2x1 ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xs b3dpbmcKKysqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vu c2VzL2dwbC0zLjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisrCisrI2luY2x1ZGUgInFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0 b3J5X3AuaCIKKysjaW5jbHVkZSAicWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmgiCisrCisrUVRf QkVHSU5fTkFNRVNQQUNFCisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKworK1FB Y2Nlc3NpYmxlSW50ZXJmYWNlICpxQWNjZXNzaWJsZVF1aWNrV2lkZ2V0RmFjdG9yeShjb25zdCBR U3RyaW5nICZjbGFzc25hbWUsIFFPYmplY3QgKm9iamVjdCkKKyt7CisrICAgIGlmIChjbGFzc25h bWUgPT0gUUxhdGluMVN0cmluZygiUVF1aWNrV2lkZ2V0IikpIHsKKysgICAgICAgIHJldHVybiBu ZXcgUUFjY2Vzc2libGVRdWlja1dpZGdldChxb2JqZWN0X2Nhc3Q8UVF1aWNrV2lkZ2V0ICo+KG9i amVjdCkpOworKyAgICB9IGVsc2UgaWYgKGNsYXNzbmFtZSA9PSBRTGF0aW4xU3RyaW5nKCJRUXVp Y2tXaWRnZXRPZmZzY3JlZW5XaW5kb3ciKSkgeworKyAgICAgICAgcmV0dXJuIG5ldyBRQWNjZXNz aWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KHFvYmplY3RfY2FzdDxRUXVpY2tXaW5kb3cg Kj4ob2JqZWN0KSk7CisrICAgIH0KKysgICAgcmV0dXJuIDA7CisrfQorKworKyNlbmRpZiAvLyBh Y2Nlc3NpYmlsaXR5CisrCisrUVRfRU5EX05BTUVTUEFDRQorKworZGlmZiAtLWdpdCBhL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9w LmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdl dGZhY3RvcnlfcC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uOGM2 M2IwOWY4MQorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRn ZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaAorQEAgLTAsMCArMSw2NiBAQAor Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0 IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8K KysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFF1aWNrIG1vZHVsZSBvZiB0aGUg UXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwkCisrKiogQ29tbWVy Y2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lh bCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ugd2l0aCB0 aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorKyoqIFNv ZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNv bnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBR dCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0 dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisrKiogaW5mb3Jt YXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11 cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoq IEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJp bmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUKKysqKiBwYWNrYWdp bmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24g dG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJz aW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9u IDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAorKyoqIFB1YmxpYyBsaWNl bnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZy ZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmls ZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNr YWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKysqKiBpbmZv cm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVt ZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0y LjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRt bC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisrCisrI2luY2x1ZGUgPFF0R3VpL3FhY2Nlc3NpYmxlLmg+CisrCisrI2lmbmRlZiBRQUNDRVNT SUJMRVFVSUNLV0lER0VURkFDVE9SWV9ICisrI2RlZmluZSBRQUNDRVNTSUJMRVFVSUNLV0lER0VU RkFDVE9SWV9ICisrCisrLy8KKysvLyAgVyBBIFIgTiBJIE4gRworKy8vICAtLS0tLS0tLS0tLS0t CisrLy8KKysvLyBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2YgdGhlIFF0IEFQSS4gIEl0IGV4aXN0 cyBwdXJlbHkgYXMgYW4KKysvLyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBUaGlzIGhlYWRlciBm aWxlIG1heSBjaGFuZ2UgZnJvbSB2ZXJzaW9uIHRvCisrLy8gdmVyc2lvbiB3aXRob3V0IG5vdGlj ZSwgb3IgZXZlbiBiZSByZW1vdmVkLgorKy8vCisrLy8gV2UgbWVhbiBpdC4KKysvLworKworK1FU X0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysKKytR QWNjZXNzaWJsZUludGVyZmFjZSAqcUFjY2Vzc2libGVRdWlja1dpZGdldEZhY3RvcnkoY29uc3Qg UVN0cmluZyAmY2xhc3NuYW1lLCBRT2JqZWN0ICpvYmplY3QpOworKworKyNlbmRpZgorKworK1FU X0VORF9OQU1FU1BBQ0UKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNr d2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3BwCitpbmRleCAzOTc4MGY4ZGUzLi45Yzk3YjQzNTE4IDEw MDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldC5j cHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3Bw CitAQCAtMzksNiArMzksNyBAQAorIAorICNpbmNsdWRlICJxcXVpY2t3aWRnZXQuaCIKKyAjaW5j bHVkZSAicXF1aWNrd2lkZ2V0X3AuaCIKKysjaW5jbHVkZSAicWFjY2Vzc2libGVxdWlja3dpZGdl dGZhY3RvcnlfcC5oIgorIAorICNpbmNsdWRlICJwcml2YXRlL3FxdWlja3dpbmRvd19wLmgiCisg I2luY2x1ZGUgInByaXZhdGUvcXF1aWNraXRlbV9wLmgiCitAQCAtNzUsOSArNzYsMTYgQEAKKyAK KyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKytRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OlFR dWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhRUXVpY2tXaW5kb3dQcml2YXRlICZkZCwgUVF1aWNr UmVuZGVyQ29udHJvbCAqY29udHJvbCkKKys6UVF1aWNrV2luZG93KGRkLCBjb250cm9sKQorK3sK KysgICAgc2V0VGl0bGUoUVN0cmluZzo6ZnJvbUxhdGluMSgiT2Zmc2NyZWVuIikpOworKyAgICBz ZXRPYmplY3ROYW1lKFFTdHJpbmc6OmZyb21MYXRpbjEoIlFRdWlja09mZlNjcmVlbldpbmRvdyIp KTsKKyt9CisrCisgLy8gb3ZlcnJpZGUgc2V0VmlzYmxlIHRvIHByZXZlbnQgYWNjaWRlbnRhbCBv ZmZzY3JlZW4gd2luZG93IGJlaW5nIGNyZWF0ZWQKKyAvLyBieSBiYXNlIGNsYXNzLgorLWNsYXNz IFFRdWlja09mZmNyZWVuV2luZG93UHJpdmF0ZTogcHVibGljIFFRdWlja1dpbmRvd1ByaXZhdGUg eworK2NsYXNzIFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvd1ByaXZhdGU6IHB1YmxpYyBRUXVp Y2tXaW5kb3dQcml2YXRlIHsKKyBwdWJsaWM6CisgICAgIHZvaWQgc2V0VmlzaWJsZShib29sIHZp c2libGUpIG92ZXJyaWRlIHsKKyAgICAgICAgIFFfUShRV2luZG93KTsKK0BAIC0xMDUsOSArMTEz LDggQEAgdm9pZCBRUXVpY2tXaWRnZXRQcml2YXRlOjppbml0KFFRbWxFbmdpbmUqIGUpCisgICAg IFFfUShRUXVpY2tXaWRnZXQpOworIAorICAgICByZW5kZXJDb250cm9sID0gbmV3IFFRdWlja1dp ZGdldFJlbmRlckNvbnRyb2wocSk7CistICAgIG9mZnNjcmVlbldpbmRvdyA9IG5ldyBRUXVpY2tX aW5kb3coKm5ldyBRUXVpY2tPZmZjcmVlbldpbmRvd1ByaXZhdGUoKSxyZW5kZXJDb250cm9sKTsK Ky0gICAgb2Zmc2NyZWVuV2luZG93LT5zZXRUaXRsZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJPZmZz Y3JlZW4iKSk7CistICAgIG9mZnNjcmVlbldpbmRvdy0+c2V0T2JqZWN0TmFtZShRU3RyaW5nOjpm cm9tTGF0aW4xKCJRUXVpY2tPZmZTY3JlZW5XaW5kb3ciKSk7CisrICAgIG9mZnNjcmVlbldpbmRv dyA9IG5ldyBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3coKm5ldyBRUXVpY2tXaWRnZXRPZmZz Y3JlZW5XaW5kb3dQcml2YXRlKCksIHJlbmRlckNvbnRyb2wpOworKyAgICBvZmZzY3JlZW5XaW5k b3ctPnNldFNjcmVlbihxLT5zY3JlZW4oKSk7CisgICAgIC8vIERvIG5vdCBjYWxsIGNyZWF0ZSgp IG9uIG9mZnNjcmVlbldpbmRvdy4KKyAKKyAgICAgLy8gQ2hlY2sgaWYgdGhlIFNvZnR3YXJlIEFk YXB0YXRpb24gaXMgYmVpbmcgdXNlZAorQEAgLTEzOCw2ICsxNDUsMTAgQEAgdm9pZCBRUXVpY2tX aWRnZXRQcml2YXRlOjppbml0KFFRbWxFbmdpbmUqIGUpCisgICAgIFFXaWRnZXQ6OmNvbm5lY3Qo b2Zmc2NyZWVuV2luZG93LCAmUVF1aWNrV2luZG93Ojpmb2N1c09iamVjdENoYW5nZWQsIHEsICZR UXVpY2tXaWRnZXQ6OnByb3BhZ2F0ZUZvY3VzT2JqZWN0Q2hhbmdlZCk7CisgICAgIFFPYmplY3Q6 OmNvbm5lY3QocmVuZGVyQ29udHJvbCwgU0lHTkFMKHJlbmRlclJlcXVlc3RlZCgpKSwgcSwgU0xP VCh0cmlnZ2VyVXBkYXRlKCkpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChyZW5kZXJDb250cm9s LCBTSUdOQUwoc2NlbmVDaGFuZ2VkKCkpLCBxLCBTTE9UKHRyaWdnZXJVcGRhdGUoKSkpOworKwor KyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysgICAgUUFjY2Vzc2libGU6Omluc3RhbGxG YWN0b3J5KCZxQWNjZXNzaWJsZVF1aWNrV2lkZ2V0RmFjdG9yeSk7CisrI2VuZGlmCisgfQorIAor IHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6ZW5zdXJlRW5naW5lKCkgY29uc3QKK0BAIC05MDEs OSArOTEyLDcgQEAgdm9pZCBRUXVpY2tXaWRnZXRQcml2YXRlOjpjcmVhdGVDb250ZXh0KCkKKyAK KyAgICAgICAgIGNvbnRleHQgPSBuZXcgUU9wZW5HTENvbnRleHQ7CisgICAgICAgICBjb250ZXh0 LT5zZXRGb3JtYXQob2Zmc2NyZWVuV2luZG93LT5yZXF1ZXN0ZWRGb3JtYXQoKSk7CistICAgICAg ICBjb25zdCBRV2luZG93ICp3aW4gPSBxLT53aW5kb3coKS0+d2luZG93SGFuZGxlKCk7CistICAg ICAgICBpZiAod2luICYmIHdpbi0+c2NyZWVuKCkpCistICAgICAgICAgICAgY29udGV4dC0+c2V0 U2NyZWVuKHdpbi0+c2NyZWVuKCkpOworKyAgICAgICAgY29udGV4dC0+c2V0U2NyZWVuKHEtPnNj cmVlbigpKTsKKyAgICAgICAgIFFPcGVuR0xDb250ZXh0ICpzaGFyZUNvbnRleHQgPSBxdF9nbF9n bG9iYWxfc2hhcmVfY29udGV4dCgpOworICAgICAgICAgaWYgKCFzaGFyZUNvbnRleHQpCisgICAg ICAgICAgICAgc2hhcmVDb250ZXh0ID0gUVdpZGdldFByaXZhdGU6OmdldChxLT53aW5kb3coKSkt PnNoYXJlQ29udGV4dCgpOworQEAgLTE1MjAsMTkgKzE1MjksMTYgQEAgYm9vbCBRUXVpY2tXaWRn ZXQ6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAgICAgIGQtPmhhbmRsZVdpbmRvd0NoYW5nZSgpOwor ICAgICAgICAgYnJlYWs7CisgCistICAgIGNhc2UgUUV2ZW50OjpTY3JlZW5DaGFuZ2VJbnRlcm5h bDoKKy0gICAgICAgIGlmIChRV2luZG93ICp3aW5kb3cgPSB0aGlzLT53aW5kb3coKS0+d2luZG93 SGFuZGxlKCkpIHsKKy0gICAgICAgICAgICBRU2NyZWVuICpuZXdTY3JlZW4gPSB3aW5kb3ctPnNj cmVlbigpOworLQorLSAgICAgICAgICAgIGlmIChkLT5vZmZzY3JlZW5XaW5kb3cpCistICAgICAg ICAgICAgICAgIGQtPm9mZnNjcmVlbldpbmRvdy0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CistICAg ICAgICAgICAgaWYgKGQtPm9mZnNjcmVlblN1cmZhY2UpCistICAgICAgICAgICAgICAgIGQtPm9m ZnNjcmVlblN1cmZhY2UtPnNldFNjcmVlbihuZXdTY3JlZW4pOworKyAgICBjYXNlIFFFdmVudDo6 U2NyZWVuQ2hhbmdlSW50ZXJuYWw6IHsKKysgICAgICAgIFFTY3JlZW4gKm5ld1NjcmVlbiA9IHNj cmVlbigpOworKyAgICAgICAgaWYgKGQtPm9mZnNjcmVlbldpbmRvdykKKysgICAgICAgICAgICBk LT5vZmZzY3JlZW5XaW5kb3ctPnNldFNjcmVlbihuZXdTY3JlZW4pOworKyAgICAgICAgaWYgKGQt Pm9mZnNjcmVlblN1cmZhY2UpCisrICAgICAgICAgICAgZC0+b2Zmc2NyZWVuU3VyZmFjZS0+c2V0 U2NyZWVuKG5ld1NjcmVlbik7CisgI2lmIFFUX0NPTkZJRyhvcGVuZ2wpCistICAgICAgICAgICAg aWYgKGQtPmNvbnRleHQpCistICAgICAgICAgICAgICAgIGQtPmNvbnRleHQtPnNldFNjcmVlbihu ZXdTY3JlZW4pOworKyAgICAgICAgaWYgKGQtPmNvbnRleHQpCisrICAgICAgICAgICAgZC0+Y29u dGV4dC0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisgI2VuZGlmCistICAgICAgICB9CisgCisgICAg ICAgICBpZiAoZC0+dXNlU29mdHdhcmVSZW5kZXJlcgorICNpZiBRVF9DT05GSUcob3BlbmdsKQor QEAgLTE1NDUsNyArMTU1MSw3IEBAIGJvb2wgUVF1aWNrV2lkZ2V0OjpldmVudChRRXZlbnQgKmUp CisgICAgICAgICAgICAgZC0+cmVuZGVyKHRydWUpOworICAgICAgICAgfQorICAgICAgICAgYnJl YWs7CistCisrICAgIH0KKyAgICAgY2FzZSBRRXZlbnQ6OlNob3c6CisgICAgIGNhc2UgUUV2ZW50 OjpNb3ZlOgorICAgICAgICAgZC0+dXBkYXRlUG9zaXRpb24oKTsKK2RpZmYgLS1naXQgYS9xdGRl Y2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0X3AuaCBiL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oCitpbmRleCA4ODFmN2Y5MjIwLi4x YTk0NmJjYzcxIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3Fx dWlja3dpZGdldF9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVp Y2t3aWRnZXRfcC5oCitAQCAtMTQ4LDYgKzE0OCwxNCBAQCBwdWJsaWM6CisgICAgIGJvb2wgZm9y Y2VGdWxsVXBkYXRlOworIH07CisgCisrY2xhc3MgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93 OiBwdWJsaWMgUVF1aWNrV2luZG93CisreworKyAgICBRX09CSkVDVAorKworK3B1YmxpYzoKKysg ICAgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KFFRdWlja1dpbmRvd1ByaXZhdGUgJmRkLCBR UXVpY2tSZW5kZXJDb250cm9sICpjb250cm9sKTsKKyt9OworKworIFFUX0VORF9OQU1FU1BBQ0UK KyAKKyAjZW5kaWYgLy8gUVF1aWNrV2lkZ2V0X1BfSAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMucHJvIGIvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8KK2luZGV4IDI0MzhlNTc3YWUuLjg1ZDE1NmI4 YTMgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXVpY2t3aWRn ZXRzLnBybworKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0 cy5wcm8KK0BAIC03LDkgKzcsMTMgQEAgREVGSU5FUyAgICs9IFFUX05PX1VSTF9DQVNUX0ZST01f U1RSSU5HIFFUX05PX0lOVEVHRVJfRVZFTlRfQ09PUkRJTkFURVMgUVRfTk9fRk8KKyBIRUFERVJT ICs9IFwKKyAgICAgcXF1aWNrd2lkZ2V0LmggXAorICAgICBxcXVpY2t3aWRnZXRfcC5oIFwKKy0g ICAgcXRxdWlja3dpZGdldHNnbG9iYWwuaAorKyAgICBxdHF1aWNrd2lkZ2V0c2dsb2JhbC5oIFwK KysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmggXAorKyAgICBxYWNjZXNzaWJsZXF1aWNr d2lkZ2V0ZmFjdG9yeV9wLmgKKyAKKyBTT1VSQ0VTICs9IFwKKy0gICAgcXF1aWNrd2lkZ2V0LmNw cAorKyAgICBxcXVpY2t3aWRnZXQuY3BwIFwKKysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdldC5j cHAgXAorKyAgICBxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeS5jcHAKKyAKKyBsb2FkKHF0 X21vZHVsZSkKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fqc2Vu Z2luZS90c3RfcWpzZW5naW5lLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcWpz ZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwCitpbmRleCAzYjdkNzRkZjYzLi5iNzViZjgyMGQ1IDEw MDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdpbmUvdHN0X3Fq c2VuZ2luZS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcWpzZW5naW5l L3RzdF9xanNlbmdpbmUuY3BwCitAQCAtMTAyLDYgKzEwMiw3IEBAIHByaXZhdGUgc2xvdHM6Cisg ICAgIHZvaWQgdmFsdWVDb252ZXJzaW9uX1JlZ3VsYXJFeHByZXNzaW9uKCk7CisgICAgIHZvaWQg Y2FzdFdpdGhNdWx0aXBsZUluaGVyaXRhbmNlKCk7CisgICAgIHZvaWQgY29sbGVjdEdhcmJhZ2Uo KTsKKysgICAgdm9pZCBjb2xsZWN0R2FyYmFnZU5lc3RlZFdyYXBwZXJzVHdvRW5naW5lcygpOwor ICAgICB2b2lkIGdjV2l0aE5lc3RlZERhdGFTdHJ1Y3R1cmUoKTsKKyAgICAgdm9pZCBzdGFja3Ry YWNlKCk7CisgICAgIHZvaWQgbnVtYmVyUGFyc2luZ19kYXRhKCk7CitAQCAtMTgwOSw2ICsxODEw LDQ0IEBAIHZvaWQgdHN0X1FKU0VuZ2luZTo6Y29sbGVjdEdhcmJhZ2UoKQorICAgICBRVkVSSUZZ KHB0ci5pc051bGwoKSk7CisgfQorIAorK2NsYXNzIFRlc3RPYmplY3RDb250YWluZXIgOiBwdWJs aWMgUU9iamVjdAorK3sKKysgICAgUV9PQkpFQ1QKKysgICAgUV9QUk9QRVJUWShRT2JqZWN0ICpk dW1teSBNRU1CRVIgbV9kdW1teSBDT05TVEFOVCkKKysKKytwdWJsaWM6CisrICAgIFRlc3RPYmpl Y3RDb250YWluZXIoKSA6IG1fZHVtbXkobmV3IFFPYmplY3QodGhpcykpIHt9CisrCisrcHJpdmF0 ZToKKysgICAgUU9iamVjdCAqbV9kdW1teTsKKyt9OworKworK3ZvaWQgdHN0X1FKU0VuZ2luZTo6 Y29sbGVjdEdhcmJhZ2VOZXN0ZWRXcmFwcGVyc1R3b0VuZ2luZXMoKQorK3sKKysgICAgUUpTRW5n aW5lIGVuZ2luZTE7CisrICAgIFFKU0VuZ2luZSBlbmdpbmUyOworKworKyAgICBUZXN0T2JqZWN0 Q29udGFpbmVyIGNvbnRhaW5lcjsKKysgICAgUVFtbEVuZ2luZTo6c2V0T2JqZWN0T3duZXJzaGlw KCZjb250YWluZXIsIFFRbWxFbmdpbmU6OkNwcE93bmVyc2hpcCk7CisrCisrICAgIGVuZ2luZTEu Z2xvYmFsT2JqZWN0KCkuc2V0UHJvcGVydHkoImZvb2JhciIsIGVuZ2luZTEubmV3UU9iamVjdCgm Y29udGFpbmVyKSk7CisrICAgIGVuZ2luZTIuZ2xvYmFsT2JqZWN0KCkuc2V0UHJvcGVydHkoImZv b2JhciIsIGVuZ2luZTIubmV3UU9iamVjdCgmY29udGFpbmVyKSk7CisrCisrICAgIGVuZ2luZTEu ZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXogPSA0MiIpOworKyAgICBlbmdpbmUyLmV2YWx1YXRl KCJmb29iYXIuZHVtbXkuYmF6ID0gNDMiKTsKKysKKysgICAgUUNPTVBBUkUoZW5naW5lMS5ldmFs dWF0ZSgiZm9vYmFyLmR1bW15LmJheiIpLnRvSW50KCksIDQyKTsKKysgICAgUUNPTVBBUkUoZW5n aW5lMi5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiIpLnRvSW50KCksIDQzKTsKKysKKysgICAg ZW5naW5lMS5jb2xsZWN0R2FyYmFnZSgpOworKyAgICBlbmdpbmUyLmNvbGxlY3RHYXJiYWdlKCk7 CisrCisrICAgIC8vIFRoZSBHQyBzaG91bGQgbm90IGNvbGxlY3QgZHVtbXkgb2JqZWN0IHdyYXBw ZXJzIG5laXRoZXIgaW4gZW5naW5lMSBub3IgZW5naW5lMiwgd2UKKysgICAgLy8gdmVyaWZ5IHRo YXQgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgYmF6IHByb3BlcnR5IHN0aWxsIGhhcyBpdHMgcHJl dmlvdXMgdmFsdWUuCisrICAgIFFDT01QQVJFKGVuZ2luZTEuZXZhbHVhdGUoImZvb2Jhci5kdW1t eS5iYXoiKS50b0ludCgpLCA0Mik7CisrICAgIFFDT01QQVJFKGVuZ2luZTIuZXZhbHVhdGUoImZv b2Jhci5kdW1teS5iYXoiKS50b0ludCgpLCA0Myk7CisrfQorKworIHZvaWQgdHN0X1FKU0VuZ2lu ZTo6Z2NXaXRoTmVzdGVkRGF0YVN0cnVjdHVyZSgpCisgeworICAgICAvLyBUaGUgR0MgbXVzdCBi ZSBhYmxlIHRvIHRyYXZlcnNlIGRlZXBseSBuZXN0ZWQgb2JqZWN0cywgb3RoZXJ3aXNlIHRoaXMK K2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1v ZGVsL2RhdGEvcmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwgYi9xdGRlY2xhcmF0aXZlL3Rlc3Rz L2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL2RhdGEvcmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5x bWwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yMDYxMzNiYjM5Cist LS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxl Z2F0ZW1vZGVsL2RhdGEvcmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwKK0BAIC0wLDAgKzEsMTEg QEAKKytpbXBvcnQgUXRRdWljayAyLjgKKysKKytMaXN0VmlldyB7CisrICAgIGlkOiByb290Cisr ICAgIHdpZHRoOiAyMDAKKysgICAgaGVpZ2h0OiAyMDAKKysKKysgICAgZGVsZWdhdGU6IFRleHQg eworKyAgICAgICAgdGV4dDogZGlzcGxheQorKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL3F0ZGVj bGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvdHN0X3FxbWxkZWxlZ2F0 ZW1vZGVsLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9k ZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAoraW5kZXggMzVmMWUyYzk0ZC4uMTcyMjQ0Nzgz MCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRl bW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0 cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC90c3RfcXFtbGRlbGVnYXRlbW9kZWwuY3BwCitA QCAtMjcsNiArMjcsOCBAQAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgCisgI2luY2x1ZGUgPFF0 VGVzdC9xdGVzdC5oPgorKyNpbmNsdWRlIDxRdENvcmUvUUNvbmNhdGVuYXRlVGFibGVzUHJveHlN b2RlbD4KKysjaW5jbHVkZSA8UXRHdWkvUVN0YW5kYXJkSXRlbU1vZGVsPgorICNpbmNsdWRlIDxR dFFtbC9xcW1sY29tcG9uZW50Lmg+CisgI2luY2x1ZGUgPFF0UW1sTW9kZWxzL3ByaXZhdGUvcXFt bGRlbGVnYXRlbW9kZWxfcC5oPgorICNpbmNsdWRlIDxRdFF1aWNrL3FxdWlja3ZpZXcuaD4KK0BA IC00Nyw2ICs0OSw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgZmlsdGVyT25Hcm91cF9y ZW1vdmVXaGVuQ29tcGxldGVkKCk7CisgICAgIHZvaWQgcXRidWdfODYwMTcoKTsKKyAgICAgdm9p ZCBjb250ZXh0QWNjZXNzZWRCeUhhbmRsZXIoKTsKKysgICAgdm9pZCByZWRyYXdVcG9uQ29sdW1u Q2hhbmdlKCk7CisgfTsKKyAKKyBjbGFzcyBBYnN0cmFjdEl0ZW1Nb2RlbCA6IHB1YmxpYyBRQWJz dHJhY3RJdGVtTW9kZWwKK0BAIC0xODYsNiArMTg5LDMwIEBAIHZvaWQgdHN0X1FRbWxEZWxlZ2F0 ZU1vZGVsOjpjb250ZXh0QWNjZXNzZWRCeUhhbmRsZXIoKQorICAgICBRVkVSSUZZKHJvb3QtPnBy b3BlcnR5KCJ3b3JrcyIpLnRvQm9vbCgpKTsKKyB9CisgCisrdm9pZCB0c3RfUVFtbERlbGVnYXRl TW9kZWw6OnJlZHJhd1Vwb25Db2x1bW5DaGFuZ2UoKQorK3sKKysgICAgUVN0YW5kYXJkSXRlbU1v ZGVsIG0xOworKyAgICBtMS5hcHBlbmRSb3coeworKyAgICAgICAgICAgIG5ldyBRU3RhbmRhcmRJ dGVtKCJCYW5hbmEiKSwKKysgICAgICAgICAgICBuZXcgUVN0YW5kYXJkSXRlbSgiQ29jb251dCIp LAorKyAgICB9KTsKKysKKysgICAgUVF1aWNrVmlldyB2aWV3KHRlc3RGaWxlVXJsKCJyZWRyYXdV cG9uQ29sdW1uQ2hhbmdlLnFtbCIpKTsKKysgICAgUUNPTVBBUkUodmlldy5zdGF0dXMoKSwgUVF1 aWNrVmlldzo6UmVhZHkpOworKyAgICB2aWV3LnNob3coKTsKKysgICAgUVF1aWNrSXRlbSAqcm9v dCA9IHZpZXcucm9vdE9iamVjdCgpOworKyAgICByb290LT5zZXRQcm9wZXJ0eSgibW9kZWwiLCBR VmFyaWFudDo6ZnJvbVZhbHVlPFFPYmplY3QgKj4oJm0xKSk7CisrCisrICAgIFFPYmplY3QgKml0 ZW0gPSByb290LT5wcm9wZXJ0eSgiY3VycmVudEl0ZW0iKS52YWx1ZTxRT2JqZWN0ICo+KCk7Cisr ICAgIFFWRVJJRlkoaXRlbSk7CisrICAgIFFDT01QQVJFKGl0ZW0tPnByb3BlcnR5KCJ0ZXh0Iiku dG9TdHJpbmcoKSwgIkJhbmFuYSIpOworKworKyAgICBRVkVSSUZZKHJvb3QpOworKyAgICBtMS5y ZW1vdmVDb2x1bW4oMCk7CisrCisrICAgIFFDT01QQVJFKGl0ZW0tPnByb3BlcnR5KCJ0ZXh0Iiku dG9TdHJpbmcoKSwgIkNvY29udXQiKTsKKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUVFtbERlbGVn YXRlTW9kZWwpCisgCisgI2luY2x1ZGUgInRzdF9xcW1sZGVsZWdhdGVtb2RlbC5tb2MiCitkaWZm IC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0uY3Bw IGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0uY3BwCitpbmRl eCA1ZDYzNWFhNjNiLi44MjRmZDg5ZTViIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS90ZXN0 cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0uY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3Rz L2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRtbS5jcHAKK0BAIC03NiwxMCArNzYsMTAgQEAgdm9pZCB0 c3RfcXY0bW06Om11bHRpV3JhcHBlZFFPYmplY3RzKCkKKyAgICAgICAgIFFDT01QQVJFKGVuZ2lu ZTEubWVtb3J5TWFuYWdlci0+bV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuc2l6ZSgp LCAxKTsKKyAgICAgICAgIFFDT01QQVJFKGVuZ2luZTIubWVtb3J5TWFuYWdlci0+bV9wZW5kaW5n RnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuc2l6ZSgpLCAwKTsKKyAKKy0gICAgICAgIC8vIE1vdmVz IHRoZSBhZGRpdGlvbmFsIFdlYWtWYWx1ZSBmcm9tIG1fbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMg dG8KKy0gICAgICAgIC8vIG1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLiBJdCdzIHN0 aWxsIGFsaXZlIGFmdGVyIGFsbC4KKysgICAgICAgIC8vIFRoZSBhZGRpdGlvbmFsIFdlYWtWYWx1 ZSBmcm9tIG1fbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMgaGFzbid0IGJlZW4gbW92ZWQKKysgICAg ICAgIC8vIHRvIG1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlIHlldC4gSXQncyBzdGls bCBhbGl2ZSBhZnRlciBhbGwuCisgICAgICAgICBlbmdpbmUxLm1lbW9yeU1hbmFnZXItPnJ1bkdD KCk7CistICAgICAgICBRQ09NUEFSRShlbmdpbmUxLm1lbW9yeU1hbmFnZXItPm1fcGVuZGluZ0Zy ZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNpemUoKSwgMik7CisrICAgICAgICBRQ09NUEFSRShlbmdp bmUxLm1lbW9yeU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNpemUo KSwgMSk7CisgCisgICAgICAgICAvLyBlbmdpbmUyIGRvZXNuJ3Qgb3duIHRoZSBvYmplY3QgYXMg ZW5naW5lMSB3YXMgdGhlIGZpcnN0IHRvIHdyYXAgaXQgYWJvdmUuCisgICAgICAgICAvLyBUaGVy ZWZvcmUsIG5vIGVmZmVjdCBoZXJlLgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMv YXV0by9xdWljay9xcXVpY2tpdGVtMi9kYXRhL2FjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29w My5xbWwgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvZGF0YS9h Y3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcDMucW1sCituZXcgZmlsZSBtb2RlIDEwMDY0NAor aW5kZXggMDAwMDAwMDAwMC4uODg5ZTQ4MGYzYgorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNs YXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL2RhdGEvYWN0aXZlRm9jdXNPblRh Yl9pbmZpbml0ZUxvb3AzLnFtbAorQEAgLTAsMCArMSwxMyBAQAorK2ltcG9ydCBRdFF1aWNrIDIu NgorKworK0l0ZW0geworKyAgICB2aXNpYmxlOiB0cnVlCisrICAgIEl0ZW0geworKyAgICAgICAg dmlzaWJsZTogZmFsc2UKKysgICAgICAgIEl0ZW0geworKyAgICAgICAgICAgIG9iamVjdE5hbWU6 ICJoaWRkZW5DaGlsZCIKKysgICAgICAgICAgICBhY3RpdmVGb2N1c09uVGFiOiB0cnVlCisrICAg ICAgICAgICAgZm9jdXM6IHRydWUKKysgICAgICAgIH0KKysgICAgfQorK30KK2RpZmYgLS1naXQg YS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvdHN0X3FxdWlja2l0 ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL3RzdF9x cXVpY2tpdGVtLmNwcAoraW5kZXggYzhmMjUxZGJlMS4uYzhlZjM2ZWU2OCAxMDA2NDQKKy0tLSBh L3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi90c3RfcXF1aWNraXRl bS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi90 c3RfcXF1aWNraXRlbS5jcHAKK0BAIC02Nyw2ICs2Nyw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAg IHZvaWQgYWN0aXZlRm9jdXNPblRhYjEwKCk7CisgICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYl9p bmZpbml0ZUxvb3BfZGF0YSgpOworICAgICB2b2lkIGFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVM b29wKCk7CisrICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3BDb250cm9scygp OworIAorICAgICB2b2lkIG5leHRJdGVtSW5Gb2N1c0NoYWluKCk7CisgICAgIHZvaWQgbmV4dEl0 ZW1JbkZvY3VzQ2hhaW4yKCk7CitAQCAtMTA1Nyw2ICsxMDU4LDE3IEBAIHZvaWQgdHN0X1FRdWlj a0l0ZW06OmFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wKCkKKyAgICAgUUNPTVBBUkUoaXRl bSwgd2luZG93LT5yb290T2JqZWN0KCkpOworIH0KKyAKKysKKyt2b2lkIHRzdF9RUXVpY2tJdGVt OjphY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcENvbnRyb2xzKCkKKyt7CisrICAgIGF1dG8g c291cmNlID0gdGVzdEZpbGVVcmwoImFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wMy5xbWwi KTsKKysgICAgUVNjb3BlZFBvaW50ZXI8UVF1aWNrVmlldz53aW5kb3cobmV3IFFRdWlja1ZpZXco KSk7CisrICAgIHdpbmRvdy0+c2V0U291cmNlKHNvdXJjZSk7CisrICAgIHdpbmRvdy0+c2hvdygp OworKyAgICBRVkVSSUZZKHdpbmRvdy0+ZXJyb3JzKCkuaXNFbXB0eSgpKTsKKysgICAgUVRlc3Q6 OmtleUNsaWNrKHdpbmRvdy5nZXQoKSwgUXQ6OktleV9UYWIpOyAvLyBzaG91bGQgbm90IGhhbmcK Kyt9CisrCisgdm9pZCB0c3RfUVF1aWNrSXRlbTo6bmV4dEl0ZW1JbkZvY3VzQ2hhaW4oKQorIHsK KyAgICAgaWYgKCFxdF90YWJfYWxsX3dpZGdldHMoKSkKK1N1Ym1vZHVsZSBxdGRvYyBjMGM3YmYw Ny4uLjc5ZDZlZjY5OgorU3VibW9kdWxlIHF0aW1hZ2Vmb3JtYXRzIDJkY2YyODk5Li5hYmU0NGMw ZjoKK2RpZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMv aWNucy9xaWNuc2hhbmRsZXIuY3BwIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vm b3JtYXRzL2ljbnMvcWljbnNoYW5kbGVyLmNwcAoraW5kZXggZGRlNzgzYy4uMWJmOTA3NCAxMDA2 NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9pY25zL3Fp Y25zaGFuZGxlci5jcHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9y bWF0cy9pY25zL3FpY25zaGFuZGxlci5jcHAKK0BAIC00NjIsOCArNDYyLDEyIEBAIHN0YXRpYyBi b29sIHBhcnNlSWNvbkVudHJ5SW5mbyhJQ05TRW50cnkgJmljb24pCisgICAgIGlmIChpc0ljb25D b21wcmVzc2VkKGljb24pKQorICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgIC8vIEljb24gZGVw dGg6CistICAgIGlmICghZGVwdGguaXNFbXB0eSgpKQorLSAgICAgICAgaWNvbi5kZXB0aCA9IElD TlNFbnRyeTo6RGVwdGgoZGVwdGgudG9VSW50KCkpOworKyAgICBpZiAoIWRlcHRoLmlzRW1wdHko KSkgeworKyAgICAgICAgY29uc3QgdWludCBkZXB0aFVJbnQgPSBkZXB0aC50b1VJbnQoKTsKKysg ICAgICAgIGlmIChkZXB0aFVJbnQgPiAzMikKKysgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisr ICAgICAgICBpY29uLmRlcHRoID0gSUNOU0VudHJ5OjpEZXB0aChkZXB0aFVJbnQpOworKyAgICB9 CisgICAgIC8vIFRyeSBtb25vIGlmIGRlcHRoIG5vdCBmb3VuZAorICAgICBpZiAoaWNvbi5kZXB0 aCA9PSBJQ05TRW50cnk6OkRlcHRoVW5rbm93bikKKyAgICAgICAgIGljb24uZGVwdGggPSBJQ05T RW50cnk6OkRlcHRoTW9ubzsKK0BAIC01MTUsNiArNTE5LDkgQEAgc3RhdGljIGJvb2wgcGFyc2VJ Y29uRW50cnlJbmZvKElDTlNFbnRyeSAmaWNvbikKKyAgICAgICAgIH0KKyAgICAgICAgIGljb24u aGVpZ2h0ID0gaWNvbi53aWR0aDsKKyAgICAgfQorKyAgICAvLyBTYW5pdHkgY2hlY2sKKysgICAg aWYgKGljb24ud2lkdGggPT0gMCB8fCBpY29uLndpZHRoID4gNDA5NikKKysgICAgICAgIHJldHVy biBmYWxzZTsKKyAgICAgcmV0dXJuIHRydWU7CisgfQorIAorQEAgLTY4NSw3ICs2OTIsNyBAQCBi b29sIFFJQ05TSGFuZGxlcjo6Y2FuUmVhZCgpIGNvbnN0CisgYm9vbCBRSUNOU0hhbmRsZXI6OnJl YWQoUUltYWdlICpvdXRJbWFnZSkKKyB7CisgICAgIFFJbWFnZSBpbWc7CistICAgIGlmICghZW5z dXJlU2Nhbm5lZCgpKSB7CisrICAgIGlmICghZW5zdXJlU2Nhbm5lZCgpIHx8IG1fY3VycmVudElj b25JbmRleCA+PSBtX2ljb25zLnNpemUoKSkgeworICAgICAgICAgcVdhcm5pbmcoIlFJQ05TSGFu ZGxlcjo6cmVhZCgpOiBUaGUgZGV2aWNlIHdhc24ndCBwYXJzZWQgcHJvcGVybHkhIik7CisgICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KK0BAIC04OTIsNyArODk5LDcgQEAgYm9vbCBRSUNO U0hhbmRsZXI6OnNjYW5EZXZpY2UoKQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAKKyAg ICAgICAgIGNvbnN0IHFpbnQ2NCBibG9ja0RhdGFPZmZzZXQgPSBkZXZpY2UoKS0+cG9zKCk7Cist ICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChibG9ja0hlYWRlcikpIHsKKysgICAgICAg IGlmICghaXNCbG9ja0hlYWRlclZhbGlkKGJsb2NrSGVhZGVyLCBJQ05TQmxvY2tIZWFkZXJTaXpl ICsgZmlsZWxlbmd0aCAtIGJsb2NrRGF0YU9mZnNldCkpIHsKKyAgICAgICAgICAgICBxV2Fybmlu ZygiUUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNlKCk6IEZhaWxlZCwgYmFkIGhlYWRlciBhdCBwb3Mg JXMuIE9TVHlwZSBcIiVzXCIsIGxlbmd0aCAldSIsCisgICAgICAgICAgICAgICAgICAgICAgUUJ5 dGVBcnJheTo6bnVtYmVyKGJsb2NrRGF0YU9mZnNldCkuY29uc3REYXRhKCksCisgICAgICAgICAg ICAgICAgICAgICAgbmFtZUZyb21PU1R5cGUoYmxvY2tIZWFkZXIub3N0eXBlKS5jb25zdERhdGEo KSwgYmxvY2tIZWFkZXIubGVuZ3RoKTsKK0BAIC05MjcsMTEgKzkzNCwxNCBAQCBib29sIFFJQ05T SGFuZGxlcjo6c2NhbkRldmljZSgpCisgICAgICAgICBjYXNlIElDTlNCbG9ja0hlYWRlcjo6VHlw ZU9kcnA6CisgICAgICAgICAgICAgLy8gSWNucyBjb250YWluZXIgc2VlbXMgdG8gaGF2ZSBhbiBl bWJlZGRlZCBpY29uIHZhcmlhbnQgY29udGFpbmVyCisgICAgICAgICAgICAgLy8gTGV0J3Mgc3Rh cnQgYSBzY2FuIGZvciBlbnRyaWVzCistICAgICAgICAgICAgd2hpbGUgKGRldmljZSgpLT5wb3Mo KSA8IG5leHRCbG9ja09mZnNldCkgeworKyAgICAgICAgICAgIHdoaWxlICghc3RyZWFtLmF0RW5k KCkgJiYgZGV2aWNlKCktPnBvcygpIDwgbmV4dEJsb2NrT2Zmc2V0KSB7CisgICAgICAgICAgICAg ICAgIElDTlNCbG9ja0hlYWRlciBpY29uOworICAgICAgICAgICAgICAgICBzdHJlYW0gPj4gaWNv bjsKKysgICAgICAgICAgICAgICAgaWYgKHN0cmVhbS5zdGF0dXMoKSAhPSBRRGF0YVN0cmVhbTo6 T2spCisrICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg IC8vIENoZWNrIGZvciBpbmNvcnJlY3QgdmFyaWFudCBlbnRyeSBoZWFkZXIgYW5kIHN0b3Agc2Nh bgorLSAgICAgICAgICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChpY29uLCBibG9ja0Rh dGFMZW5ndGgpKQorKyAgICAgICAgICAgICAgICBxdWludDY0IHJlbWFpbmluZyA9IGJsb2NrRGF0 YUxlbmd0aCAtIChkZXZpY2UoKS0+cG9zKCkgLSBibG9ja0RhdGFPZmZzZXQpOworKyAgICAgICAg ICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChpY29uLCBJQ05TQmxvY2tIZWFkZXJTaXpl ICsgcmVtYWluaW5nKSkKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg ICAgICBpZiAoIWFkZEVudHJ5KGljb24sIGRldmljZSgpLT5wb3MoKSwgYmxvY2tIZWFkZXIub3N0 eXBlKSkKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKK0BAIC0xMDAzLDcgKzEw MTMsNyBAQCBib29sIFFJQ05TSGFuZGxlcjo6c2NhbkRldmljZSgpCisgICAgICAgICAgICAgYnJl YWs7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgcmV0dXJuIHRydWU7CisrICAgIHJldHVybiAo bV9pY29ucy5zaXplKCkgPiAwKTsKKyB9CisgCisgY29uc3QgSUNOU0VudHJ5ICZRSUNOU0hhbmRs ZXI6OmdldEljb25NYXNrKGNvbnN0IElDTlNFbnRyeSAmaWNvbikgY29uc3QKK2RpZmYgLS1naXQg YS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvanAyL3FqcDJoYW5kbGVy LmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9qcDIvcWpwMmhh bmRsZXIuY3BwCitpbmRleCA1MDgyMDIzLi5jYjM0Mzc0IDEwMDY0NAorLS0tIGEvcXRpbWFnZWZv cm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2pwMi9xanAyaGFuZGxlci5jcHAKKysrKyBi L3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9qcDIvcWpwMmhhbmRsZXIu Y3BwCitAQCAtNDMsNiArNDMsNyBAQAorICNpbmNsdWRlICJxaW1hZ2UuaCIKKyAjaW5jbHVkZSAi cXZhcmlhbnQuaCIKKyAjaW5jbHVkZSAicWNvbG9yLmgiCisrI2luY2x1ZGUgInFpbWFnZXJlYWRl ci5oIgorIAorICNpbmNsdWRlIDxqYXNwZXIvamFzcGVyLmg+CisgI2luY2x1ZGUgPG1hdGguaD4g Ly8gZm9yIHBvdworQEAgLTMzMywxNiArMzM0LDQ2IEBAIHByaXZhdGU6CisgSnBlZzIwMDBKYXNw ZXJSZWFkZXI6OkpwZWcyMDAwSmFzcGVyUmVhZGVyKFFJT0RldmljZSAqaW9kLCBTdWJGb3JtYXQg Zm9ybWF0KQorICAgICA6IGphc3Blck9rKHRydWUpLCBpb0RldmljZShpb2QpLCBmb3JtYXQoZm9y bWF0KSwgaGFzQWxwaGEoZmFsc2UpCisgeworKyNpZiBKQVNfVkVSU0lPTl9NQUpPUiA8IDMKKyAg ICAgaWYgKGphc19pbml0KCkpIHsKKyAgICAgICAgIGphc3Blck9rID0gZmFsc2U7CisgICAgICAg ICBxRGVidWcoIkphc3BlciBMaWJyYXJ5IGluaXRpYWxpemF0aW9uIGZhaWxlZCIpOworICAgICB9 CisrI2Vsc2UKKysgICAgamFzX2NvbmZfY2xlYXIoKTsKKysjaWYgUVRfVkVSU0lPTiA+PSBRVF9W RVJTSU9OX0NIRUNLKDYsIDAsIDApCisrICAgIGphc19jb25mX3NldF9tYXhfbWVtX3VzYWdlKFFJ bWFnZVJlYWRlcjo6YWxsb2NhdGlvbkxpbWl0KCkgKiAxMDI0ICogMTAyNCk7CisrI2Vsc2UKKysg ICAgLy8gMTI4TUIgc2VlbXMgdG8gYmUgZW5vdWdoLgorKyAgICBqYXNfY29uZl9zZXRfbWF4X21l bV91c2FnZSgxMjggKiAxMDI0ICogMTAyNCk7CisrI2VuZGlmCisrICAgIGlmIChqYXNfaW5pdF9s aWJyYXJ5KCkpIHsKKysgICAgICAgIGphc3Blck9rID0gZmFsc2U7CisrICAgICAgICBxRGVidWco Ikphc3BlciBsaWJyYXJ5IGluaXRpYWxpemF0aW9uIGZhaWxlZCIpOworKyAgICB9CisrICAgIGlm IChqYXNfaW5pdF90aHJlYWQoKSkgeworKyAgICAgICAgamFzX2NsZWFudXBfbGlicmFyeSgpOwor KyAgICAgICAgamFzcGVyT2sgPSBmYWxzZTsKKysgICAgICAgIHFEZWJ1ZygiSmFzcGVyIHRocmVh ZCBpbml0aWFsaXphdGlvbiBmYWlsZWQiKTsKKysgICAgfQorKyNlbmRpZgorIH0KKyAKKyBKcGVn MjAwMEphc3BlclJlYWRlcjo6fkpwZWcyMDAwSmFzcGVyUmVhZGVyKCkKKyB7CisrI2lmIEpBU19W RVJTSU9OX01BSk9SIDwgMworICAgICBpZiAoamFzcGVyT2spCisgICAgICAgICBqYXNfY2xlYW51 cCgpOworKyNlbHNlCisrICAgIGlmIChqYXNwZXJPaykgeworKyAgICAgICAgaWYgKGphc19jbGVh bnVwX3RocmVhZCgpKSB7CisrICAgICAgICAgICAgcURlYnVnKCJKYXNwZXIgdGhyZWFkIGNsZWFu dXAgZmFpbGVkIik7CisrICAgICAgICB9CisrICAgICAgICBpZiAoamFzX2NsZWFudXBfbGlicmFy eSgpKSB7CisrICAgICAgICAgICAgcURlYnVnKCJKYXNwZXIgbGlicmFyeSBjbGVhbnVwIGZhaWxl ZCIpOworKyAgICAgICAgfQorKyAgICB9CisrI2VuZGlmCisgfQorIAorIC8qISBcaW50ZXJuYWwK K0BAIC04NTcsNyArODg4LDcgQEAgYm9vbCBKcGVnMjAwMEphc3BlclJlYWRlcjo6d3JpdGUoY29u c3QgUUltYWdlICZpbWFnZSwgaW50IHF1YWxpdHkpCisgICAgIH0KKyAKKyAgICAgLy8gT3BlbiBh biBlbXB0eSBqYXNwZXIgc3RyZWFtIHRoYXQgZ3Jvd3MgYXV0b21hdGljYWxseQorLSAgICBqYXNf c3RyZWFtX3QgKiBtZW1vcnlfc3RyZWFtID0gamFzX3N0cmVhbV9tZW1vcGVuKDAsIC0xKTsKKysg ICAgamFzX3N0cmVhbV90ICogbWVtb3J5X3N0cmVhbSA9IGphc19zdHJlYW1fbWVtb3BlbigwLCAw KTsKKyAKKyAgICAgLy8gSmFzcGVyIHdhbnRzIGEgbm9uLWNvbnN0IHN0cmluZy4KKyAgICAgY2hh ciAqc3RyID0gcXN0cmR1cChqYXNwZXJGb3JtYXRTdHJpbmcudG9MYXRpbjEoKS5jb25zdERhdGEo KSk7CitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRz L3RpZmYvcXRpZmZoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdl Zm9ybWF0cy90aWZmL3F0aWZmaGFuZGxlci5jcHAKK2luZGV4IDEzODY3NTAuLmFjODk1NmMgMTAw NjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvdGlmZi9x dGlmZmhhbmRsZXIuY3BwCisrKysgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZv cm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIuY3BwCitAQCAtMzYxLDYgKzM2MSw4IEBAIGJvb2wgUVRp ZmZIYW5kbGVyOjpyZWFkKFFJbWFnZSAqaW1hZ2UpCisgICAgIH0KKyAKKyAgICAgVElGRiAqY29u c3QgdGlmZiA9IGQtPnRpZmY7CisrICAgIGlmIChUSUZGSXNUaWxlZCh0aWZmKSAmJiBUSUZGVGls ZVNpemU2NCh0aWZmKSA+IHVpbnQ2NF90KGltYWdlLT5zaXplSW5CeXRlcygpKSkgLy8gQ29ycnVw dCBpbWFnZQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICBjb25zdCBxdWludDMyIHdpZHRo ID0gZC0+c2l6ZS53aWR0aCgpOworICAgICBjb25zdCBxdWludDMyIGhlaWdodCA9IGQtPnNpemUu aGVpZ2h0KCk7CisgCitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1h Z2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVn aW5zL2ltYWdlZm9ybWF0cy93ZWJwL3F3ZWJwaGFuZGxlci5jcHAKK2luZGV4IDgyZDM4Y2IuLmQw MmViMDUgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1h dHMvd2VicC9xd2VicGhhbmRsZXIuY3BwCisrKysgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lu cy9pbWFnZWZvcm1hdHMvd2VicC9xd2VicGhhbmRsZXIuY3BwCitAQCAtNDUsNiArNDUsNyBAQAor ICNpbmNsdWRlIDxxZGVidWcuaD4KKyAjaW5jbHVkZSA8cXBhaW50ZXIuaD4KKyAjaW5jbHVkZSA8 cXZhcmlhbnQuaD4KKysjaW5jbHVkZSA8UXRFbmRpYW4+CisgCisgc3RhdGljIGNvbnN0IGludCBy aWZmSGVhZGVyU2l6ZSA9IDEyOyAvLyBSSUZGX0hFQURFUl9TSVpFIGZyb20gd2VicC9mb3JtYXRf Y29uc3RhbnRzLmgKKyAKK0BAIC0xMDIsMjEgKzEwMywyMyBAQCBib29sIFFXZWJwSGFuZGxlcjo6 ZW5zdXJlU2Nhbm5lZCgpIGNvbnN0CisgCisgICAgIG1fc2NhblN0YXRlID0gU2NhbkVycm9yOwor IAorLSAgICBpZiAoZGV2aWNlKCktPmlzU2VxdWVudGlhbCgpKSB7CistICAgICAgICBxV2Fybmlu ZygpIDw8ICJTZXF1ZW50aWFsIGRldmljZXMgYXJlIG5vdCBzdXBwb3J0ZWQiOworKyAgICBRV2Vi cEhhbmRsZXIgKnRoYXQgPSBjb25zdF9jYXN0PFFXZWJwSGFuZGxlciAqPih0aGlzKTsKKysgICAg Y29uc3QgaW50IGhlYWRlckJ5dGVzTmVlZGVkID0gc2l6ZW9mKFdlYlBCaXRzdHJlYW1GZWF0dXJl cyk7CisrICAgIFFCeXRlQXJyYXkgaGVhZGVyID0gZGV2aWNlKCktPnBlZWsoaGVhZGVyQnl0ZXNO ZWVkZWQpOworKyAgICBpZiAoaGVhZGVyLnNpemUoKSA8IGhlYWRlckJ5dGVzTmVlZGVkKQorICAg ICAgICAgcmV0dXJuIGZhbHNlOworLSAgICB9CisgCistICAgIHFpbnQ2NCBvbGRQb3MgPSBkZXZp Y2UoKS0+cG9zKCk7CistICAgIGRldmljZSgpLT5zZWVrKDApOworLQorLSAgICBRV2VicEhhbmRs ZXIgKnRoYXQgPSBjb25zdF9jYXN0PFFXZWJwSGFuZGxlciAqPih0aGlzKTsKKy0gICAgUUJ5dGVB cnJheSBoZWFkZXIgPSBkZXZpY2UoKS0+cGVlayhzaXplb2YoV2ViUEJpdHN0cmVhbUZlYXR1cmVz KSk7CisrICAgIC8vIFdlIGRvIG5vIHJhbmRvbSBhY2Nlc3MgZHVyaW5nIGRlY29kaW5nLCBqdXN0 IGEgcmVhZEFsbCgpIG9mIHRoZSB3aG9sZSBpbWFnZSBmaWxlLiBTbyBpZgorKyAgICAvLyBpZiBp dCBpcyBhbGwgYXZhaWxhYmxlIGFscmVhZHksIHdlIGNhbiBhY2NlcHQgYSBzZXF1ZW50aWFsIGRl dmljZS4gVGhlIHJpZmYgaGVhZGVyIGNvbnRhaW5zCisrICAgIC8vIHRoZSBmaWxlIHNpemUgbWlu dXMgOCBieXRlcyBoZWFkZXIKKysgICAgcWludDY0IGJ5dGVTaXplID0gcUZyb21MaXR0bGVFbmRp YW48cXVpbnQzMj4oaGVhZGVyLmNvbnN0RGF0YSgpICsgNCk7CisrICAgIGlmIChkZXZpY2UoKS0+ aXNTZXF1ZW50aWFsKCkgJiYgZGV2aWNlKCktPmJ5dGVzQXZhaWxhYmxlKCkgPCBieXRlU2l6ZSAr IDgpIHsKKysgICAgICAgIHFXYXJuaW5nKCkgPDwgIlFXZWJwSGFuZGxlcjogSW5zdWZmaWNpZW50 IGRhdGEgYXZhaWxhYmxlIGluIHNlcXVlbnRpYWwgZGV2aWNlIjsKKysgICAgICAgIHJldHVybiBm YWxzZTsKKysgICAgfQorICAgICBpZiAoV2ViUEdldEZlYXR1cmVzKChjb25zdCB1aW50OF90Kilo ZWFkZXIuY29uc3REYXRhKCksIGhlYWRlci5zaXplKCksICYodGhhdC0+bV9mZWF0dXJlcykpID09 IFZQOF9TVEFUVVNfT0spIHsKKyAgICAgICAgIGlmIChtX2ZlYXR1cmVzLmhhc19hbmltYXRpb24p IHsKKyAgICAgICAgICAgICAvLyBGb3IgYW5pbWF0aW9uLCB3ZSBoYXZlIHRvIHJlYWQgYW5kIHNj YW4gd2hvbGUgZmlsZSB0byBkZXRlcm1pbmUgbG9vcCBjb3VudCBhbmQgaW1hZ2VzIGNvdW50Cist ICAgICAgICAgICAgZGV2aWNlKCktPnNlZWsob2xkUG9zKTsKKy0KKyAgICAgICAgICAgICBpZiAo dGhhdC0+ZW5zdXJlRGVtdXhlcigpKSB7CisgICAgICAgICAgICAgICAgIHRoYXQtPm1fbG9vcCA9 IFdlYlBEZW11eEdldEkobV9kZW11eGVyLCBXRUJQX0ZGX0xPT1BfQ09VTlQpOworICAgICAgICAg ICAgICAgICB0aGF0LT5tX2ZyYW1lQ291bnQgPSBXZWJQRGVtdXhHZXRJKG1fZGVtdXhlciwgV0VC UF9GRl9GUkFNRV9DT1VOVCk7CitAQCAtMTI2LDE3ICsxMjksMTMgQEAgYm9vbCBRV2VicEhhbmRs ZXI6OmVuc3VyZVNjYW5uZWQoKSBjb25zdAorICAgICAgICAgICAgICAgICBpZiAodGhhdC0+bV9m ZWF0dXJlcy5oYXNfYWxwaGEpCisgICAgICAgICAgICAgICAgICAgICB0aGF0LT5tX2NvbXBvc2l0 ZWQtPmZpbGwoUXQ6OnRyYW5zcGFyZW50KTsKKyAKKy0gICAgICAgICAgICAgICAgLy8gV2UgZG8g bm90IHJlc2V0IGRldmljZSBwb3NpdGlvbiBzaW5jZSB3ZSBoYXZlIHJlYWQgaW4gYWxsIGRhdGEK KyAgICAgICAgICAgICAgICAgbV9zY2FuU3RhdGUgPSBTY2FuU3VjY2VzczsKKy0gICAgICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgfQorICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgICBtX3NjYW5TdGF0ZSA9IFNjYW5TdWNjZXNzOworICAgICAgICAgfQorICAgICB9 CisgCistICAgIGRldmljZSgpLT5zZWVrKG9sZFBvcyk7CistCisgICAgIHJldHVybiBtX3NjYW5T dGF0ZSA9PSBTY2FuU3VjY2VzczsKKyB9CisgCitAQCAtMTU5LDcgKzE1OCw3IEBAIGJvb2wgUVdl YnBIYW5kbGVyOjplbnN1cmVEZW11eGVyKCkKKyAKKyBib29sIFFXZWJwSGFuZGxlcjo6cmVhZChR SW1hZ2UgKmltYWdlKQorIHsKKy0gICAgaWYgKCFlbnN1cmVTY2FubmVkKCkgfHwgZGV2aWNlKCkt PmlzU2VxdWVudGlhbCgpIHx8ICFlbnN1cmVEZW11eGVyKCkpCisrICAgIGlmICghZW5zdXJlU2Nh bm5lZCgpIHx8ICFlbnN1cmVEZW11eGVyKCkpCisgICAgICAgICByZXR1cm4gZmFsc2U7CisgCisg ICAgIFFSZWN0IHByZXZGcmFtZVJlY3Q7CitTdWJtb2R1bGUgcXRsb2NhdGlvbiA5OGE1YzUxMS4u Zjk5MWUyOGM6CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vY29uZmlndXJl Lmpzb24gYi9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9jb25maWd1cmUuanNvbgoraW5kZXggNmQw MWE5YTMuLmQxZTYyM2ExIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vY29u ZmlndXJlLmpzb24KKysrKyBiL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5qc29u CitAQCAtOSw3ICs5LDcgQEAKKyAgICAgICAgICAgICAibGFiZWwiOiAiUXQubGFicy5sb2NhdGlv biBleHBlcmltZW50YWwgUU1MIHBsdWdpbiIsCisgICAgICAgICAgICAgInB1cnBvc2UiOiAiUHJv dmlkZXMgZXhwZXJpbWVudGFsIFF0TG9jYXRpb24gUU1MIHR5cGVzIiwKKyAgICAgICAgICAgICAi c2VjdGlvbiI6ICJMb2NhdGlvbiIsCistICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJjb25maWcu b3BlbmdsIiwKKysgICAgICAgICAgICAiY29uZGl0aW9uIjogImZlYXR1cmVzLm9wZW5nbCIsCisg ICAgICAgICAgICAgIm91dHB1dCI6IFsgInByaXZhdGVGZWF0dXJlIiBdCisgICAgICAgICB9LAor ICAgICAgICAgImdlb3NlcnZpY2VzX29zbSI6IHsKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3Ny Yy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0cXNnc3VwcG9ydC5jcHAgYi9xdGxvY2F0 aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0cXNnc3VwcG9ydC5jcHAKK2lu ZGV4IGE5Nzg1NzNkLi4xMWUxNDY2ZiAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL2xvY2F0 aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmplY3Rxc2dzdXBwb3J0LmNwcAorKysrIGIvcXRsb2NhdGlv bi9zcmMvbG9jYXRpb24vbGFicy9xc2cvcWdlb21hcG9iamVjdHFzZ3N1cHBvcnQuY3BwCitAQCAt MTU4LDcgKzE1OCw3IEBAIHZvaWQgUUdlb01hcE9iamVjdFFTR1N1cHBvcnQ6OnVwZGF0ZU1hcE9i amVjdHMoUVNHTm9kZSAqcm9vdCwgUVF1aWNrV2luZG93ICp3aW5kCisgICAgIGlmICghcm9vdCkK KyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYgKG1fbWFwT2JqZWN0c1Jvb3ROb2RlICYmIG1f bWFwT2JqZWN0c1Jvb3ROb2RlLT5wYXJlbnQoKSkKKysgICAgaWYgKG1fbWFwT2JqZWN0c1Jvb3RO b2RlICYmICFtX21hcE9iamVjdHNSb290Tm9kZS0+cGFyZW50KCkpCisgICAgICAgICByb290LT5h cHBlbmRDaGlsZE5vZGUobV9tYXBPYmplY3RzUm9vdE5vZGUuZ2V0KCkpOworIAorICAgICBpZiAo IW1fbWFwT2JqZWN0c1Jvb3ROb2RlKSB7CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1 Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb2NvZGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAgYi9x dGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdlcmVu Z2luZV9lc3JpLmNwcAoraW5kZXggNWE0MDQ2N2UuLmQxMjNjNmE4IDEwMDY0NAorLS0tIGEvcXRs b2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb2NvZGluZ21hbmFnZXJlbmdp bmVfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNy aS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitAQCAtNTksOCArNTksMTAgQEAgUVRf QkVHSU5fTkFNRVNQQUNFCisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1ByZWZpeEVzcmkoUVN0cmlu Z0xpdGVyYWwoImVzcmkuIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtQYXJhbVVzZXJBZ2Vu dChrUHJlZml4RXNyaSArIFFTdHJpbmdMaXRlcmFsKCJ1c2VyYWdlbnQiKSk7CisgCistc3RhdGlj IGNvbnN0IFFTdHJpbmcga1VybEdlb2NvZGUoUVN0cmluZ0xpdGVyYWwoImh0dHA6Ly9nZW9jb2Rl LmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlci9maW5k QWRkcmVzc0NhbmRpZGF0ZXMiKSk7Cistc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybFJldmVyc2VH ZW9jb2RlKFFTdHJpbmdMaXRlcmFsKCJodHRwOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9y ZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvcmV2ZXJzZUdlb2NvZGUiKSk7Cisrc3Rh dGljIGNvbnN0IFFTdHJpbmcga1VybEdlb2NvZGUoUVN0cmluZ0xpdGVyYWwoImh0dHBzOi8vZ2Vv Y29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzLyIKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV29ybGQvR2VvY29kZVNlcnZlci9maW5k QWRkcmVzc0NhbmRpZGF0ZXMiKSk7Cisrc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybFJldmVyc2VH ZW9jb2RlKFFTdHJpbmdMaXRlcmFsKAorKyAgICAgICAgImh0dHBzOi8vZ2VvY29kZS5hcmNnaXMu Y29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvcmV2ZXJzZUdlb2Nv ZGUiKSk7CisgCisgc3RhdGljIFFTdHJpbmcgYWRkcmVzc1RvUXVlcnkoY29uc3QgUUdlb0FkZHJl c3MgJmFkZHJlc3MpCisgeworZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vv c2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3Ny Yy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29ucGFyc2VyX2VzcmkuY3BwCitp bmRleCAxNzQ5MmQ5NC4uOTZjMTJiMWIgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVn aW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29ucGFyc2VyX2VzcmkuY3BwCisrKysgYi9x dGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29ucGFyc2Vy X2VzcmkuY3BwCitAQCAtNDYsNyArNDYsOCBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAor LS8vIEpTT04gcmVmZXJlbmNlOiBodHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9h cmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dpdGhfc3luY2hyb25vdXNfZXhlY3V0aW9u LzAycjMwMDAwMDAzNjAwMDAwMC8KKysvLyBKU09OIHJlZmVyZW5jZToKKysvLyBodHRwczovL3Jl c291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVfc2Vydmlj ZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAvCisgCisgc3Rh dGljIGNvbnN0IFFTdHJpbmcga0Vycm9yTWVzc2FnZShRU3RyaW5nTGl0ZXJhbCgiRXJyb3IgJTE6 ICUyLiIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrRXJyb3JKc29uKFFTdHJpbmdMaXRlcmFs KCJFcnJvcjogaW52YWxpZGUgSlNPTiBkb2N1bWVudC4iKSk7CitkaWZmIC0tZ2l0IGEvcXRsb2Nh dGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNyaS5jcHAg Yi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVyZXBseV9l c3JpLmNwcAoraW5kZXggOGNhZGZiMjkuLjkyYjZiYjEzIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlv bi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNyaS5jcHAKKysr KyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZXJlcGx5 X2VzcmkuY3BwCitAQCAtNDQsNyArNDQsOCBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAor LS8vIEpTT04gcmVmZXJlbmNlOiBodHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9h cmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dpdGhfc3luY2hyb25vdXNfZXhlY3V0aW9u LzAycjMwMDAwMDAzNjAwMDAwMC8KKysvLyBKU09OIHJlZmVyZW5jZToKKysvLyBodHRwczovL3Jl c291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVfc2Vydmlj ZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAvCisgCisgR2Vv Um91dGVSZXBseUVzcmk6Okdlb1JvdXRlUmVwbHlFc3JpKFFOZXR3b3JrUmVwbHkgKnJlcGx5LCBj b25zdCBRR2VvUm91dGVSZXF1ZXN0ICZyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRT2JqZWN0ICpwYXJlbnQpIDoKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9u L3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNy aS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGlu Z21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDBlNmJjMmM3Li5lZDYxM2Y0YiAxMDA2NDQK Ky0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0aW5n bWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9z ZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitAQCAtNDgsNyAr NDgsOCBAQCBzdGF0aWMgY29uc3QgUVN0cmluZyBrUHJlZml4RXNyaShRU3RyaW5nTGl0ZXJhbCgi ZXNyaS4iKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1BhcmFtVXNlckFnZW50KGtQcmVmaXhF c3JpICsgUVN0cmluZ0xpdGVyYWwoInVzZXJhZ2VudCIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmlu ZyBrUGFyYW1Ub2tlbihrUHJlZml4RXNyaSArIFFTdHJpbmdMaXRlcmFsKCJ0b2tlbiIpKTsKKyAK Ky1zdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUm91dGluZyhRU3RyaW5nTGl0ZXJhbCgiaHR0cDov L3JvdXRlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvUm91dGUvTkFTZXJ2 ZXIvUm91dGVfV29ybGQvc29sdmUiKSk7Cisrc3RhdGljIGNvbnN0IFFTdHJpbmcga1VybFJvdXRp bmcoUVN0cmluZ0xpdGVyYWwoCisrICAgICAgICAiaHR0cHM6Ly9yb3V0ZS5hcmNnaXMuY29tL2Fy Y2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL1JvdXRlL05BU2VydmVyL1JvdXRlX1dvcmxkL3NvbHZl IikpOworIAorIEdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaTo6R2VvUm91dGluZ01hbmFnZXJF bmdpbmVFc3JpKGNvbnN0IFFWYXJpYW50TWFwICZwYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHZW9TZXJ2aWNlUHJv dmlkZXI6OkVycm9yICplcnJvciwKK0BAIC03MCw3ICs3MSw4IEBAIEdlb1JvdXRpbmdNYW5hZ2Vy RW5naW5lRXNyaTo6fkdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaSgpCisgeworIH0KKyAKKy0v LyBSRVNUIHJlZmVyZW5jZTogaHR0cDovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJj Z2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAwMzYwMDAwMDAKKysvLyBSRVNUIHJl ZmVyZW5jZToKKysvLyBodHRwczovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lz LXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAwMzYwMDAwMDAKKyAKKyBRR2VvUm91dGVS ZXBseSAqR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjpjYWxjdWxhdGVSb3V0ZShjb25zdCBR R2VvUm91dGVSZXF1ZXN0ICZyZXF1ZXN0KQorIHsKK0BAIC0xMjUsNyArMTI3LDcgQEAgdm9pZCBH ZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6OnJlcGx5RXJyb3IoUUdlb1JvdXRlUmVwbHk6OkVy cm9yIGVycm9yQ29kZSwgY28KKyBRU3RyaW5nIEdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaTo6 cHJlZmVyZWREaXJlY3Rpb25MYW5nYWdlKCkKKyB7CisgICAgIC8vIGxpc3Qgb2Ygc3VwcG9ydGVk IGxhbmdhZ2VzIGlzIGRlZmluZWQgaW46CistICAgIC8vIGh0dHA6Ly9yZXNvdXJjZXMuYXJjZ2lz LmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5odG1sIy8vMDJyMzAwMDAwMDM2MDAw MDAwCisrICAgIC8vIGh0dHBzOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMt cmVzdC1hcGkvaW5kZXguaHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAorICAgICBjb25zdCBRU3Ry aW5nTGlzdCBzdXBwb3J0ZWRMYW5ndWFnZXMgPSB7CisgICAgICAgICAiYXIiLCAvLyBHZW5lcmF0 ZSBkaXJlY3Rpb25zIGluIEFyYWJpYworICAgICAgICAgImNzIiwgLy8gR2VuZXJhdGUgZGlyZWN0 aW9ucyBpbiBDemVjaAorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2Vy dmljZXMvZXNyaS9nZW90aWxlZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwIGIvcXRsb2Nh dGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3RpbGVkbWFwcGluZ21hbmFnZXJl bmdpbmVfZXNyaS5jcHAKK2luZGV4IDVkMTU4MzVkLi4yNDE0OGY5NSAxMDA2NDQKKy0tLSBhL3F0 bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW90aWxlZG1hcHBpbmdtYW5h Z2VyZW5naW5lX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZp Y2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorQEAgLTIzMCw3 ICsyMzAsOCBAQCBRR2VvTWFwICpHZW9UaWxlZE1hcHBpbmdNYW5hZ2VyRW5naW5lRXNyaTo6Y3Jl YXRlTWFwKCkKKyAvLyAke3l9ID0gWQorIC8vICR7dG9rZW59ID0gVG9rZW4KKyAKKy0vLyB0ZW1w bGF0ZSA9ICdodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2 aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBTZXJ2ZXIvdGlsZS97e3p9fS97e3l9fS97e3h9fS5wbmcn CisrLy8gdGVtcGxhdGUgPQorKy8vICdodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20v QXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVG9wb19NYXAvTWFwU2VydmVyL3RpbGUve3t6fX0v e3t5fX0ve3t4fX0ucG5nJworIAorIGJvb2wgR2VvVGlsZWRNYXBwaW5nTWFuYWdlckVuZ2luZUVz cmk6OmluaXRpYWxpemVNYXBTb3VyY2VzKFFHZW9TZXJ2aWNlUHJvdmlkZXI6OkVycm9yICplcnJv ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRU3RyaW5nICplcnJvclN0cmluZywKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3Ny Yy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvbWFwcy5qc29uIGIvcXRsb2NhdGlvbi9zcmMvcGx1 Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL21hcHMuanNvbgoraW5kZXggODE2N2FlN2QuLjg2MmUwODdk IDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL21h cHMuanNvbgorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL21h cHMuanNvbgorQEAgLTYsOCArNiw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFy Y0dJUyBPbmxpbmUgV29ybGQgU3RyZWV0IE1hcCIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IHRy dWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJo dHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3Js ZF9TdHJlZXRfTWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAi JmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0z YjkzMzM3OTgzZTk0MzZmOGRiOTUwZTM4YTg2MjlhZic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgor KyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0Fy Y0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1N0cmVldF9NYXAvTWFwU2VydmVyIiwKKysgICAgICAg ICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lz LmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0zYjkzMzM3OTgzZTk0MzZmOGRiOTUwZTM4YTg2MjlhZic+ RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0x Niw4ICsxNiw4IEBACisgICAgICAgICAgICAgIiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIEltYWdl cnkiLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6 IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUu Y29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX0ltYWdlcnkvTWFwU2VydmVyIiwKKy0gICAg ICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNn aXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTEwZGYyMjc5Zjk2ODRlNGE5ZjZhN2YwOGZlYmFjMmE5 Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3Nl cnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX0ltYWdlcnkv TWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJl Zj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0xMGRmMjI3OWY5Njg0 ZTRhOWY2YTdmMDhmZWJhYzJhOSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwK KyAKKyAgICAgICAgIHsKK0BAIC0yNiw4ICsyNiw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0 aW9uIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgVGVycmFpbiBCYXNlIiwKKyAgICAgICAgICAgICAi bW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAg ICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2Vy dmljZXMvV29ybGRfVGVycmFpbl9CYXNlL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHly aWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0 ZW0uaHRtbD9pZD1jNjFhZDhhYjAxN2Q0OWUxYTgyZjU4MGVlMTI5ODkzMSc+RXNyaTwvYT4gY29u dHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25s aW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9UZXJyYWluX0Jhc2UvTWFwU2VydmVy IiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6 Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1jNjFhZDhhYjAxN2Q0OWUxYTgyZjU4 MGVlMTI5ODkzMSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAg ICAgIHsKK0BAIC0zNiw4ICszNiw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFy Y0dJUyBPbmxpbmUgV29ybGQgVG9wb2dyYXBoeSIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IHRy dWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJo dHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRf VG9wb19NYXAvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29w eTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTMwZTVm ZTMxNDljMzRkZjFiYTkyMmU2ZjViYmY4MDhmJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAg ICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9y ZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9fTWFwL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNv cHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9t ZS9pdGVtLmh0bWw/aWQ9MzBlNWZlMzE0OWMzNGRmMWJhOTIyZTZmNWJiZjgwOGYnPkVzcmk8L2E+ IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtNDYsOCArNDYs OCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIG1hcCBwcmVzZW50cyBsYW5k IGNvdmVyIGFuZCBkZXRhaWxlZCB0b3BvZ3JhcGhpYyBtYXBzIGZvciB0aGUgVW5pdGVkIFN0YXRl cy4iLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6 IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGlu ZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvVVNBX1RvcG9fTWFwcy9NYXBTZXJ2ZXIiLAorLSAg ICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFy Y2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9OTljZDVmYmQ5ODkzNDAyODgwMmI0Zjc5N2M0YjE3 MzInPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8v c2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9VU0FfVG9wb19N YXBzL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxh IGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9OTljZDVmYmQ5 ODkzNDAyODgwMmI0Zjc5N2M0YjE3MzInPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAg IH0sCisgCisgICAgICAgICB7CitAQCAtNTYsOCArNTYsOCBAQAorICAgICAgICAgICAgICJkZXNj cmlwdGlvbiI6ICJOYXRpb25hbCBHZW9ncmFwaGljIFdvcmxkIE1hcCIsCisgICAgICAgICAgICAg Im1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAg ICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qv c2VydmljZXMvTmF0R2VvX1dvcmxkX01hcC9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5 cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9p dGVtLmh0bWw/aWQ9YjliMWI0MjIxOTg5NDRmYmJkNTI1MGIzMjQxNjkxYjYnPkVzcmk8L2E+IGNv bnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmljZXMuYXJjZ2lz b25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9OYXRHZW9fV29ybGRfTWFwL01hcFNlcnZl ciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBz Oi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjliMWI0MjIxOTg5NDRmYmJkNTI1 MGIzMjQxNjkxYjYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAg ICAgICB7CitAQCAtNjYsOCArNjYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJU aGVtYXRpYyBjb250ZW50IHByb3ZpZGluZyBhIG5ldXRyYWwgYmFja2dyb3VuZCB3aXRoIG1pbmlt YWwgY29sb3JzIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwKKyAgICAgICAgICAgICAi bmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2aWNlcy5hcmNn aXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL0NhbnZhcy9Xb3JsZF9MaWdodF9HcmF5 X0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsg PGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWVkNzEyY2Ix ZGIzZTRiYWU5ZTg1MzI5MDQwZmI5YTQ5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAg ICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jl c3Qvc2VydmljZXMvQ2FudmFzL1dvcmxkX0xpZ2h0X0dyYXlfQmFzZS9NYXBTZXJ2ZXIiLAorKyAg ICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5h cmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWVkNzEyY2IxZGIzZTRiYWU5ZTg1MzI5MDQwZmI5 YTQ5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgewor QEAgLTc2LDggKzc2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTmF0dXJhbCBF YXJ0aCBwaHlzaWNhbCBtYXAgZm9yIHRoZSB3b3JsZCIsCisgICAgICAgICAgICAgIm1vYmlsZSI6 IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwi OiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dv cmxkX1BoeXNpY2FsX01hcC9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0 IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/ aWQ9YzRlYzcyMmExY2QzNGNmMGEyMzkwNGFhZGY4OTIzYTAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9y cyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20v QXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfUGh5c2ljYWxfTWFwL01hcFNlcnZlciIsCisrICAg ICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFy Y2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YzRlYzcyMmExY2QzNGNmMGEyMzkwNGFhZGY4OTIz YTAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitA QCAtODYsOCArODYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQb3J0cmF5cyBz dXJmYWNlIGVsZXZhdGlvbiBhcyBzaGFkZWQgcmVsaWVmIiwKKyAgICAgICAgICAgICAibW9iaWxl IjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVy bCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMv V29ybGRfU2hhZGVkX1JlbGllZi9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRU ZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0 bWw/aWQ9OWM1MzcwZDBiNTRmNGRlMWI0OGEzNzkyZDczNzdmZjInPkVzcmk8L2E+IGNvbnRyaWJ1 dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5j b20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfU2hhZGVkX1JlbGllZi9NYXBTZXJ2ZXIiLAor KyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3 dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTljNTM3MGQwYjU0ZjRkZTFiNDhhMzc5MmQ3 Mzc3ZmYyJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAg eworQEAgLTk2LDggKzk2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBt YXAgaXMgZGVzaWduZWQgdG8gYmUgdXNlZCBhcyBhIGJhc2VtYXAgYnkgbWFyaW5lIEdJUyBwcm9m ZXNzaW9uYWxzIGFuZCBhcyBhIHJlZmVyZW5jZSBtYXAgYnkgYW55b25lIGludGVyZXN0ZWQgaW4g b2NlYW4gZGF0YSIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAg ICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNn aXNvbmxpbmUuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL09jZWFuL1dvcmxkX09jZWFuX0Jhc2Uv TWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJl Zj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTFlMTI2ZTc1MjBmOTQ2 NmM5Y2EyOGI4ZjI4YjVlNTAwJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAg InVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL2FyY2dpcy9yZXN0L3NlcnZp Y2VzL09jZWFuL1dvcmxkX09jZWFuX0Jhc2UvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29w eXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21l L2l0ZW0uaHRtbD9pZD0xZTEyNmU3NTIwZjk0NjZjOWNhMjhiOGYyOGI1ZTUwMCc+RXNyaTwvYT4g Y29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0xMDYsOCArMTA2 LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlbWF0aWMgY29udGVudCBwcm92 aWRpbmcgYSBuZXV0cmFsIGJhY2tncm91bmQgd2l0aCBtaW5pbWFsIGNvbG9ycyIsCisgICAgICAg ICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IHRydWUsCistICAg ICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMv cmVzdC9zZXJ2aWNlcy9DYW52YXMvV29ybGRfRGFya19HcmF5X0Jhc2UvTWFwU2VydmVyIiwKKy0g ICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5h cmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWEyODRhOWI5OWIzNDQ2YTM5MTBkNDE0NGE1MDk5 MGY2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczov L3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dv cmxkX0RhcmtfR3JheV9CYXNlL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRl eHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0 bWw/aWQ9YTI4NGE5Yjk5YjM0NDZhMzkxMGQ0MTQ0YTUwOTkwZjYnPkVzcmk8L2E+IGNvbnRyaWJ1 dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMTE2LDggKzExNiw4IEBACisg ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRlTG9ybWXigJlzIHRvcG9ncmFwaGljIGJhc2Vt YXAgaXMgYSBzZWFtbGVzcyBnbG9iYWwgZGF0YSBzZXQgdGhhdCBwb3J0cmF5cyB0cmFuc3BvcnRh dGlvbiwgaHlkcm9ncmFwaHksIGp1cmlzZGljdGlvbiBib3VuZGFyaWVzLCBhbmQgbWFqb3IgZ2Vv Z3JhcGhpYyBmZWF0dXJlcyIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAg ICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZl ci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1NwZWNpYWx0eS9EZUxvcm1l X1dvcmxkX0Jhc2VfTWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQi OiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9p ZD1iMTY1YzNkZjQ1M2U0YmU2YjVhYzRmZGIyNDFlZmZiZSc+RXNyaTwvYT4gY29udHJpYnV0b3Jz IgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9B cmNHSVMvcmVzdC9zZXJ2aWNlcy9TcGVjaWFsdHkvRGVMb3JtZV9Xb3JsZF9CYXNlX01hcC9NYXBT ZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdo dHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWIxNjVjM2RmNDUzZTRiZTZi NWFjNGZkYjI0MWVmZmJlJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9CisgICAg IF0KKyB9CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9l c3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMv Z2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDM4NThk ZGY1Li5hZjY2ZjI4ZSAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2Vy dmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24v c3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNyaS5jcHAK K0BAIC02Myw4ICs2MywxMCBAQCBzdGF0aWMgY29uc3QgUVN0cmluZyBrQ291bnRyaWVzS2V5KFFT dHJpbmdMaXRlcmFsKCJkZXRhaWxlZENvdW50cmllcyIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmlu ZyBrTG9jYWxpemVkTmFtZXNLZXkoUVN0cmluZ0xpdGVyYWwoImxvY2FsaXplZE5hbWVzIikpOwor IHN0YXRpYyBjb25zdCBRU3RyaW5nIGtNYXhMb2NhdGlvbnNLZXkoUVN0cmluZ0xpdGVyYWwoIm1h eExvY2F0aW9ucyIpKTsKKyAKKy1zdGF0aWMgY29uc3QgUVVybCBrVXJsR2VvY29kZVNlcnZlcigi aHR0cDovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9j b2RlU2VydmVyP2Y9cGpzb24iKTsKKy1zdGF0aWMgY29uc3QgUVVybCBrVXJsRmluZEFkZHJlc3ND YW5kaWRhdGVzKCJodHRwOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2Vz L1dvcmxkL0dlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIik7Cisrc3RhdGljIGNv bnN0IFFVcmwga1VybEdlb2NvZGVTZXJ2ZXIoCisrICAgICAgICAiaHR0cHM6Ly9nZW9jb2RlLmFy Y2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlcj9mPXBqc29u Iik7Cisrc3RhdGljIGNvbnN0IFFVcmwga1VybEZpbmRBZGRyZXNzQ2FuZGlkYXRlcygiaHR0cHM6 Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvIgorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdlb2NvZGVTZXJ2ZXIvZmlu ZEFkZHJlc3NDYW5kaWRhdGVzIik7CisgCisgUGxhY2VNYW5hZ2VyRW5naW5lRXNyaTo6UGxhY2VN YW5hZ2VyRW5naW5lRXNyaShjb25zdCBRVmFyaWFudE1hcCAmcGFyYW1ldGVycywgUUdlb1NlcnZp Y2VQcm92aWRlcjo6RXJyb3IgKmVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVN0cmluZyAqZXJyb3JTdHJpbmcpIDoKK1N1Ym1vZHVsZSBxdG11 bHRpbWVkaWEgZjAzNDQwNzkuLjBkN2NjMzNhOgorZGlmZiAtLWdpdCBhL3F0bXVsdGltZWRpYS9z cmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0X3B1bHNlLmNwcCBiL3F0bXVsdGltZWRp YS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0X3B1bHNlLmNwcAoraW5kZXggMmI1 MzI1MTMyLi5iNjhiNGFmMWIgMTAwNjQ0CistLS0gYS9xdG11bHRpbWVkaWEvc3JjL3BsdWdpbnMv cHVsc2VhdWRpby9xYXVkaW9pbnB1dF9wdWxzZS5jcHAKKysrKyBiL3F0bXVsdGltZWRpYS9zcmMv cGx1Z2lucy9wdWxzZWF1ZGlvL3FhdWRpb2lucHV0X3B1bHNlLmNwcAorQEAgLTQwMiw2ICs0MDIs OCBAQCBpbnQgUVB1bHNlQXVkaW9JbnB1dDo6Ynl0ZXNSZWFkeSgpIGNvbnN0CisgCisgcWludDY0 IFFQdWxzZUF1ZGlvSW5wdXQ6OnJlYWQoY2hhciAqZGF0YSwgcWludDY0IGxlbikKKyB7CisrICAg IFFfQVNTRVJUKGRhdGEgIT0gbnVsbHB0ciB8fCBsZW4gPT0gMCk7CisrCisgICAgIG1fYnl0ZXNB dmFpbGFibGUgPSBjaGVja0J5dGVzUmVhZHkoKTsKKyAKKyAgICAgc2V0RXJyb3IoUUF1ZGlvOjpO b0Vycm9yKTsKK0BAIC00MTEsNyArNDEzLDggQEAgcWludDY0IFFQdWxzZUF1ZGlvSW5wdXQ6OnJl YWQoY2hhciAqZGF0YSwgcWludDY0IGxlbikKKyAKKyAgICAgaWYgKCFtX3B1bGxNb2RlICYmICFt X3RlbXBCdWZmZXIuaXNFbXB0eSgpKSB7CisgICAgICAgICByZWFkQnl0ZXMgPSBxTWluKHN0YXRp Y19jYXN0PGludD4obGVuKSwgbV90ZW1wQnVmZmVyLnNpemUoKSk7CistICAgICAgICBtZW1jcHko ZGF0YSwgbV90ZW1wQnVmZmVyLmNvbnN0RGF0YSgpLCByZWFkQnl0ZXMpOworKyAgICAgICAgaWYg KHJlYWRCeXRlcykKKysgICAgICAgICAgICBtZW1jcHkoZGF0YSwgbV90ZW1wQnVmZmVyLmNvbnN0 RGF0YSgpLCByZWFkQnl0ZXMpOworICAgICAgICAgbV90b3RhbFRpbWVWYWx1ZSArPSByZWFkQnl0 ZXM7CisgCisgICAgICAgICBpZiAocmVhZEJ5dGVzIDwgbV90ZW1wQnVmZmVyLnNpemUoKSkgewor QEAgLTUwMiw5ICs1MDUsMTAgQEAgcWludDY0IFFQdWxzZUF1ZGlvSW5wdXQ6OnJlYWQoY2hhciAq ZGF0YSwgcWludDY0IGxlbikKKyAKKyB2b2lkIFFQdWxzZUF1ZGlvSW5wdXQ6OmFwcGx5Vm9sdW1l KGNvbnN0IHZvaWQgKnNyYywgdm9pZCAqZGVzdCwgaW50IGxlbikKKyB7CisrICAgIFFfQVNTRVJU KChzcmMgJiYgZGVzdCkgfHwgbGVuID09IDApOworICAgICBpZiAobV92b2x1bWUgPCAxLmYpCisg ICAgICAgICBRQXVkaW9IZWxwZXJJbnRlcm5hbDo6cU11bHRpcGx5U2FtcGxlcyhtX3ZvbHVtZSwg bV9mb3JtYXQsIHNyYywgZGVzdCwgbGVuKTsKKy0gICAgZWxzZQorKyAgICBlbHNlIGlmIChsZW4p CisgICAgICAgICBtZW1jcHkoZGVzdCwgc3JjLCBsZW4pOworIH0KKyAKK1N1Ym1vZHVsZSBxdHBp bSAwMmVmZWY1ZS4uLmY5YThmMGZjIChjb21taXRzIG5vdCBwcmVzZW50KQorU3VibW9kdWxlIHF0 cXVpY2szZCBiODVjZjYyMi4uNDdkZWZjOGI6CitkaWZmIC0tZ2l0IGEvcXRxdWljazNkL3NyYy9w bHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAucHJvIGIvcXRxdWljazNkL3NyYy9w bHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAucHJvCitpbmRleCBjYTVjNDk5ZS4u MTc0YTA3NWIgMTAwNjQ0CistLS0gYS9xdHF1aWNrM2Qvc3JjL3BsdWdpbnMvYXNzZXRpbXBvcnRl cnMvYXNzaW1wL2Fzc2ltcC5wcm8KKysrKyBiL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9hc3NldGlt cG9ydGVycy9hc3NpbXAvYXNzaW1wLnBybworQEAgLTEwLDcgKzEwLDcgQEAgUVRfRk9SX0NPTkZJ RyArPSBhc3NldGltcG9ydGVycy1wcml2YXRlCisgaW5jbHVkZSgkJE9VVF9QV0QvLi4vcXRhc3Nl dGltcG9ydGVycy1jb25maWcucHJpKQorIAorIHF0Q29uZmlnKHN5c3RlbS1hc3NpbXApOiFpZihj cm9zc19jb21waWxlOmhvc3RfYnVpbGQpIHsKKy0gICAgUU1BS0VfVVNFX1BSSVZBVEUgKz0gYXNz aW1wCisrICAgIFFNQUtFX1VTRV9QUklWQVRFICs9IHF1aWNrM2QtYXNzaW1wCisgfSBlbHNlIHsK KyAgICAgaW5jbHVkZSguLi8uLi8uLi8zcmRwYXJ0eS9hc3NpbXAvYXNzaW1wLnByaSkKKyB9CitT dWJtb2R1bGUgcXRxdWlja2NvbnRyb2xzMiAzYTY1N2RjMC4uNTZjZTgyMzM6CitkaWZmIC0tZ2l0 IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRzL3F3aWRnZXRw bGF0Zm9ybW1lbnUuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9ybS93 aWRnZXRzL3F3aWRnZXRwbGF0Zm9ybW1lbnUuY3BwCitpbmRleCBlNWZlNzM0ZjcuLmUzNjkyMjc3 NSAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL2ltcG9ydHMvcGxhdGZvcm0vd2lk Z2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMv aW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRzL3F3aWRnZXRwbGF0Zm9ybW1lbnUuY3BwCitAQCAtMzgs NiArMzgsNyBAQAorICNpbmNsdWRlICJxd2lkZ2V0cGxhdGZvcm1tZW51aXRlbV9wLmgiCisgCisg I2luY2x1ZGUgPFF0R3VpL3F3aW5kb3cuaD4KKysjaW5jbHVkZSA8UXRHdWkvcHJpdmF0ZS9xaGln aGRwaXNjYWxpbmdfcC5oPgorICNpbmNsdWRlIDxRdFdpZGdldHMvcW1lbnUuaD4KKyAjaW5jbHVk ZSA8UXRXaWRnZXRzL3FhY3Rpb24uaD4KKyAKK0BAIC0xNDUsNyArMTQ2LDcgQEAgdm9pZCBRV2lk Z2V0UGxhdGZvcm1NZW51OjpzaG93UG9wdXAoY29uc3QgUVdpbmRvdyAqd2luZG93LCBjb25zdCBR UmVjdCAmdGFyZ2V0UmUKKyAKKyAgICAgUVBvaW50IHRhcmdldFBvcyA9IHRhcmdldFJlY3QuYm90 dG9tTGVmdCgpOworICAgICBpZiAod2luZG93KQorLSAgICAgICAgdGFyZ2V0UG9zID0gd2luZG93 LT5tYXBUb0dsb2JhbCh0YXJnZXRQb3MpOworKyAgICAgICAgdGFyZ2V0UG9zID0gd2luZG93LT5t YXBUb0dsb2JhbChRSGlnaERwaTo6ZnJvbU5hdGl2ZUxvY2FsUG9zaXRpb24odGFyZ2V0UG9zLCB3 aW5kb3cpKTsKKyAKKyAgICAgY29uc3QgUVdpZGdldFBsYXRmb3JtTWVudUl0ZW0gKndpZGdldEl0 ZW0gPSBxb2JqZWN0X2Nhc3Q8Y29uc3QgUVdpZGdldFBsYXRmb3JtTWVudUl0ZW0gKj4oaXRlbSk7 CisgICAgIG1fbWVudS0+cG9wdXAodGFyZ2V0UG9zLCB3aWRnZXRJdGVtID8gd2lkZ2V0SXRlbS0+ YWN0aW9uKCkgOiBudWxscHRyKTsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9x dWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24uY3BwIGIvcXRxdWlja2NvbnRyb2xz Mi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uLmNwcAoraW5kZXggOTUw ZTRlMDk5Li5iODFmYmVhMGIgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlj a3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24uY3BwCisrKysgYi9xdHF1aWNrY29udHJv bHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24uY3BwCitAQCAtMzg3 LDYgKzM4NywxNyBAQCB2b2lkIFFRdWlja0Fic3RyYWN0QnV0dG9uUHJpdmF0ZTo6aXRlbUltcGxp Y2l0SGVpZ2h0Q2hhbmdlZChRUXVpY2tJdGVtICppdGVtKQorICAgICAgICAgZW1pdCBxLT5pbXBs aWNpdEluZGljYXRvckhlaWdodENoYW5nZWQoKTsKKyB9CisgCisrdm9pZCBRUXVpY2tBYnN0cmFj dEJ1dHRvblByaXZhdGU6Oml0ZW1EZXN0cm95ZWQoUVF1aWNrSXRlbSAqaXRlbSkKKyt7CisrICAg IFFfUShRUXVpY2tBYnN0cmFjdEJ1dHRvbik7CisrICAgIFFRdWlja0NvbnRyb2xQcml2YXRlOjpp dGVtRGVzdHJveWVkKGl0ZW0pOworKyAgICBpZiAoaXRlbSA9PSBpbmRpY2F0b3IpIHsKKysgICAg ICAgIGluZGljYXRvciA9IG51bGxwdHI7CisrICAgICAgICBlbWl0IHEtPmltcGxpY2l0SW5kaWNh dG9yV2lkdGhDaGFuZ2VkKCk7CisrICAgICAgICBlbWl0IHEtPmltcGxpY2l0SW5kaWNhdG9ySGVp Z2h0Q2hhbmdlZCgpOworKyAgICB9CisrfQorKworIFFRdWlja0Fic3RyYWN0QnV0dG9uICpRUXVp Y2tBYnN0cmFjdEJ1dHRvblByaXZhdGU6OmZpbmRDaGVja2VkQnV0dG9uKCkgY29uc3QKKyB7Cisg ICAgIFFfUShjb25zdCBRUXVpY2tBYnN0cmFjdEJ1dHRvbik7CitAQCAtMTE3Niw2ICsxMTg3LDEy IEBAIFFBY2Nlc3NpYmxlOjpSb2xlIFFRdWlja0Fic3RyYWN0QnV0dG9uOjphY2Nlc3NpYmxlUm9s ZSgpIGNvbnN0CisgICAgIH0KKyAgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpCdXR0b247CisgfQor KworK3ZvaWQgUVF1aWNrQWJzdHJhY3RCdXR0b246OmFjY2Vzc2libGVQcmVzc0FjdGlvbigpCisr eworKyAgICBRX0QoUVF1aWNrQWJzdHJhY3RCdXR0b24pOworKyAgICBkLT50cmlnZ2VyKCk7Cisr fQorICNlbmRpZgorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcC5oIGIvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3Au aAoraW5kZXggMGZhNDg5ODBlLi5hYjY2MjIwZDAgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJv bHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcC5oCisrKysgYi9x dHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25f cC5oCitAQCAtMjA5LDYgKzIwOSw3IEBAIHByb3RlY3RlZDoKKyAjaWYgUVRfQ09ORklHKGFjY2Vz c2liaWxpdHkpCisgICAgIHZvaWQgYWNjZXNzaWJpbGl0eUFjdGl2ZUNoYW5nZWQoYm9vbCBhY3Rp dmUpIG92ZXJyaWRlOworICAgICBRQWNjZXNzaWJsZTo6Um9sZSBhY2Nlc3NpYmxlUm9sZSgpIGNv bnN0IG92ZXJyaWRlOworKyAgICBRX0lOVk9LQUJMRSB2b2lkIGFjY2Vzc2libGVQcmVzc0FjdGlv bigpOworICNlbmRpZgorIAorIHByaXZhdGU6CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xz Mi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3BfcC5oIGIvcXRxdWlj a2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3BfcC5o CitpbmRleCA5MjkxYzFhODcuLmI3Mjk3MjBmMiAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9s czIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wX3AuaAorKysrIGIv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9u X3BfcC5oCitAQCAtMTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKKyAKKyAgICAgdm9pZCBpdGVtSW1w bGljaXRXaWR0aENoYW5nZWQoUVF1aWNrSXRlbSAqaXRlbSkgb3ZlcnJpZGU7CisgICAgIHZvaWQg aXRlbUltcGxpY2l0SGVpZ2h0Q2hhbmdlZChRUXVpY2tJdGVtICppdGVtKSBvdmVycmlkZTsKKysg ICAgdm9pZCBpdGVtRGVzdHJveWVkKFFRdWlja0l0ZW0gKml0ZW0pIG92ZXJyaWRlOworIAorICAg ICAvLyBjb3BpZWQgZnJvbSBxYWJzdHJhY3RidXR0b24uY3BwCisgICAgIHN0YXRpYyBjb25zdCBp bnQgQVVUT19SRVBFQVRfREVMQVkgPSAzMDA7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xz Mi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAgYi9xdHF1aWNrY29udHJvbHMy L3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWN0aW9uLmNwcAoraW5kZXggMjA0MWU3NzQxLi44 NjEwY2RmYWUgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRl czIvcXF1aWNrYWN0aW9uLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1w bGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAKK0BAIC0xNDUsNyArMTQ1LDcgQEAgaW50IFFRdWlja0Fj dGlvblByaXZhdGU6OlNob3J0Y3V0RW50cnk6OnNob3J0Y3V0SWQoKSBjb25zdAorIAorIHZvaWQg UVF1aWNrQWN0aW9uUHJpdmF0ZTo6U2hvcnRjdXRFbnRyeTo6Z3JhYihjb25zdCBRS2V5U2VxdWVu Y2UgJnNob3J0Y3V0LCBib29sIGVuYWJsZWQpCisgeworLSAgICBpZiAoc2hvcnRjdXQuaXNFbXB0 eSgpKQorKyAgICBpZiAoc2hvcnRjdXQuaXNFbXB0eSgpIHx8IG1fc2hvcnRjdXRJZCkKKyAgICAg ICAgIHJldHVybjsKKyAKKyAgICAgUXQ6OlNob3J0Y3V0Q29udGV4dCBjb250ZXh0ID0gUXQ6Oldp bmRvd1Nob3J0Y3V0OyAvLyBUT0RPCitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMv cXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3Ny Yy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udGFpbmVyLmNwcAoraW5kZXggZjM4YzJiMDljLi42 ZWVkMmEwMjQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRl czIvcXF1aWNrY29udGFpbmVyLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0 ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAKK0BAIC0yMjUsNiArMjI1LDcgQEAgdm9pZCBR UXVpY2tDb250YWluZXJQcml2YXRlOjpjbGVhbnVwKCkKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVj dChjb250ZW50TW9kZWwsICZRUW1sT2JqZWN0TW9kZWw6OmNvdW50Q2hhbmdlZCwgcSwgJlFRdWlj a0NvbnRhaW5lcjo6Y291bnRDaGFuZ2VkKTsKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChjb250 ZW50TW9kZWwsICZRUW1sT2JqZWN0TW9kZWw6OmNoaWxkcmVuQ2hhbmdlZCwgcSwgJlFRdWlja0Nv bnRhaW5lcjo6Y29udGVudENoaWxkcmVuQ2hhbmdlZCk7CisgICAgIGRlbGV0ZSBjb250ZW50TW9k ZWw7CisrICAgIGNvbnRlbnRNb2RlbCA9IG51bGxwdHI7CisgfQorIAorIFFRdWlja0l0ZW0gKlFR dWlja0NvbnRhaW5lclByaXZhdGU6Oml0ZW1BdChpbnQgaW5kZXgpIGNvbnN0CitAQCAtNDM2LDcg KzQzNyw3IEBAIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6Y29udGVudENoaWxkcmVuX2Ns ZWFyKFFRbWxMaXN0UHJvcGVydHk8UVF1aWNrSXRlbT4KKyB2b2lkIFFRdWlja0NvbnRhaW5lclBy aXZhdGU6OnVwZGF0ZUNvbnRlbnRXaWR0aCgpCisgeworICAgICBRX1EoUVF1aWNrQ29udGFpbmVy KTsKKy0gICAgaWYgKGhhc0NvbnRlbnRXaWR0aCB8fCBxRnV6enlDb21wYXJlKGNvbnRlbnRXaWR0 aCwgaW1wbGljaXRDb250ZW50V2lkdGgpKQorKyAgICBpZiAoaGFzQ29udGVudFdpZHRoIHx8IHFG dXp6eUNvbXBhcmUoY29udGVudFdpZHRoLCBpbXBsaWNpdENvbnRlbnRXaWR0aCkgfHwgIWNvbnRl bnRNb2RlbCkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgY29udGVudFdpZHRoID0gaW1wbGlj aXRDb250ZW50V2lkdGg7CitAQCAtNDQ2LDcgKzQ0Nyw3IEBAIHZvaWQgUVF1aWNrQ29udGFpbmVy UHJpdmF0ZTo6dXBkYXRlQ29udGVudFdpZHRoKCkKKyB2b2lkIFFRdWlja0NvbnRhaW5lclByaXZh dGU6OnVwZGF0ZUNvbnRlbnRIZWlnaHQoKQorIHsKKyAgICAgUV9RKFFRdWlja0NvbnRhaW5lcik7 CistICAgIGlmIChoYXNDb250ZW50SGVpZ2h0IHx8IHFGdXp6eUNvbXBhcmUoY29udGVudEhlaWdo dCwgaW1wbGljaXRDb250ZW50SGVpZ2h0KSkKKysgICAgaWYgKGhhc0NvbnRlbnRIZWlnaHQgfHwg cUZ1enp5Q29tcGFyZShjb250ZW50SGVpZ2h0LCBpbXBsaWNpdENvbnRlbnRIZWlnaHQpIHx8ICFj b250ZW50TW9kZWwpCisgICAgICAgICByZXR1cm47CisgCisgICAgIGNvbnRlbnRIZWlnaHQgPSBp bXBsaWNpdENvbnRlbnRIZWlnaHQ7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMv cXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMv cXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wuY3BwCitpbmRleCBiYmJkMGU2MjIuLjFmNGI0 NzM0MyAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9x cXVpY2tjb250cm9sLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0 ZXMyL3FxdWlja2NvbnRyb2wuY3BwCitAQCAtODQ1LDYgKzg0NSwxMyBAQCB2b2lkIFFRdWlja0Nv bnRyb2xQcml2YXRlOjpleGVjdXRlQmFja2dyb3VuZChib29sIGNvbXBsZXRlKQorICAgICAgICAg cXVpY2tDb21wbGV0ZURlZmVycmVkKHEsIGJhY2tncm91bmROYW1lKCksIGJhY2tncm91bmQpOwor IH0KKyAKKysvKgorKyAgICBcaW50ZXJuYWwKKysKKysgICAgSGlkZXMgYW4gaXRlbSB0aGF0IHdh cyByZXBsYWNlZCBieSBhIG5ld2VyIG9uZSwgcmF0aGVyIHRoYW4KKysgICAgZGVsZXRpbmcgaXQs IGFzIHRoZSBpdGVtIGlzIHR5cGljYWxseSBjcmVhdGVkIGluIFFNTCBhbmQgaGVuY2UKKysgICAg d2UgZG9uJ3Qgb3duIGl0LgorKyovCisgdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6aGlkZU9s ZEl0ZW0oUVF1aWNrSXRlbSAqaXRlbSkKKyB7CisgICAgIGlmICghaXRlbSkKK0BAIC04NjMsNiAr ODcwLDI5IEBAIHZvaWQgUVF1aWNrQ29udHJvbFByaXZhdGU6OmhpZGVPbGRJdGVtKFFRdWlja0l0 ZW0gKml0ZW0pCisgI2VuZGlmCisgfQorIAorKy8qCisrICAgIFxpbnRlcm5hbAorKworKyAgICBO YW1lZCAidW5oaWRlIiBiZWNhdXNlIGl0J3MgdXNlZCBmb3IgY2FzZXMgd2hlcmUgYW4gaXRlbQor KyAgICB0aGF0IHdhcyBwcmV2aW91c2x5IGhpZGRlbiBieSBcbCBoaWRlT2xkSXRlbSgpIHdhbnRz IHRvIGJlCisrICAgIHNob3duIGJ5IGEgY29udHJvbCBhZ2Fpbiwgc3VjaCBhcyBhIFNjcm9sbEJh ciBpbiBTY3JvbGxWaWV3LgorKyovCisrdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dW5oaWRl T2xkSXRlbShRUXVpY2tDb250cm9sICpjb250cm9sLCBRUXVpY2tJdGVtICppdGVtKQorK3sKKysg ICAgUV9BU1NFUlQoaXRlbSk7CisrICAgIHFDRGVidWcobGNJdGVtTWFuYWdlbWVudCkgPDwgInVu aGlkaW5nIG9sZCBpdGVtIiA8PCBpdGVtOworKworKyAgICBpdGVtLT5zZXRWaXNpYmxlKHRydWUp OworKyAgICBpdGVtLT5zZXRQYXJlbnRJdGVtKGNvbnRyb2wpOworKworKyNpZiBRVF9DT05GSUco YWNjZXNzaWJpbGl0eSkKKysgICAgLy8gQWRkIHRoZSBpdGVtIGJhY2sgaW4gdG8gdGhlIGFjY2Vz c2liaWxpdHkgdHJlZS4KKysgICAgUVF1aWNrQWNjZXNzaWJsZUF0dGFjaGVkICphY2Nlc3NpYmxl ID0gYWNjZXNzaWJsZUF0dGFjaGVkKGl0ZW0pOworKyAgICBpZiAoYWNjZXNzaWJsZSkKKysgICAg ICAgIGFjY2Vzc2libGUtPnNldElnbm9yZWQoZmFsc2UpOworKyNlbmRpZgorK30KKysKKyB2b2lk IFFRdWlja0NvbnRyb2xQcml2YXRlOjp1cGRhdGVCYXNlbGluZU9mZnNldCgpCisgeworICAgICBR X1EoUVF1aWNrQ29udHJvbCk7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVp Y2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmggYi9xdHF1aWNrY29udHJvbHMyL3NyYy9x dWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbF9wX3AuaAoraW5kZXggOGU5NzkwNzllLi5hNmU2 MjRjOTEgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIv cXF1aWNrY29udHJvbF9wX3AuaAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1w bGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmgKK0BAIC0xNzMsNiArMTczLDcgQEAgcHVibGljOgor ICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUJhY2tncm91bmQoYm9vbCBjb21wbGV0ZSA9IGZhbHNl KTsKKyAKKyAgICAgc3RhdGljIHZvaWQgaGlkZU9sZEl0ZW0oUVF1aWNrSXRlbSAqaXRlbSk7Cisr ICAgIHN0YXRpYyB2b2lkIHVuaGlkZU9sZEl0ZW0oUVF1aWNrQ29udHJvbCAqY29udHJvbCwgUVF1 aWNrSXRlbSAqaXRlbSk7CisgCisgICAgIHZvaWQgdXBkYXRlQmFzZWxpbmVPZmZzZXQoKTsKKyAK K2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNr ZGlhbG9nYnV0dG9uYm94LmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVz Mi9xcXVpY2tkaWFsb2didXR0b25ib3guY3BwCitpbmRleCBlNmRiMTRlYjUuLjYxOTdkMTU0NyAx MDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tk aWFsb2didXR0b25ib3guY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBs YXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcAorQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0 aWMgUVJlY3RGIGFsaWduZWRSZWN0KFF0OjpMYXlvdXREaXJlY3Rpb24gZGlyZWN0aW9uLCBRdDo6 QWxpZ25tZW50IGFsaWdubWVudAorIHZvaWQgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6 cmVzaXplQ29udGVudCgpCisgeworICAgICBRX1EoUVF1aWNrRGlhbG9nQnV0dG9uQm94KTsKKy0g ICAgaWYgKCFjb250ZW50SXRlbSkKKysgICAgaWYgKCFjb250ZW50SXRlbSB8fCAhY29udGVudE1v ZGVsKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBRUmVjdEYgZ2VvbWV0cnkgPSBxLT5ib3Vu ZGluZ1JlY3QoKS5hZGp1c3RlZChxLT5sZWZ0UGFkZGluZygpLCBxLT50b3BQYWRkaW5nKCksIC1x LT5yaWdodFBhZGRpbmcoKSwgLXEtPmJvdHRvbVBhZGRpbmcoKSk7CitAQCAtMzIyLDYgKzMyMiw5 IEBAIHZvaWQgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6dXBkYXRlTGF5b3V0KCkKKyBx cmVhbCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjpnZXRDb250ZW50V2lkdGgoKSBjb25z dAorIHsKKyAgICAgUV9RKGNvbnN0IFFRdWlja0RpYWxvZ0J1dHRvbkJveCk7CisrICAgIGlmICgh Y29udGVudE1vZGVsKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisgICAgIGNvbnN0IGludCBjb3Vu dCA9IGNvbnRlbnRNb2RlbC0+Y291bnQoKTsKKyAgICAgY29uc3QgcXJlYWwgdG90YWxTcGFjaW5n ID0gcU1heCgwLCBjb3VudCAtIDEpICogc3BhY2luZzsKKyAgICAgcXJlYWwgdG90YWxXaWR0aCA9 IHRvdGFsU3BhY2luZzsKK0BAIC0zNDEsNiArMzQ0LDkgQEAgcXJlYWwgUVF1aWNrRGlhbG9nQnV0 dG9uQm94UHJpdmF0ZTo6Z2V0Q29udGVudFdpZHRoKCkgY29uc3QKKyBxcmVhbCBRUXVpY2tEaWFs b2dCdXR0b25Cb3hQcml2YXRlOjpnZXRDb250ZW50SGVpZ2h0KCkgY29uc3QKKyB7CisgICAgIFFf UShjb25zdCBRUXVpY2tEaWFsb2dCdXR0b25Cb3gpOworKyAgICBpZiAoIWNvbnRlbnRNb2RlbCkK KysgICAgICAgIHJldHVybiAwOworKworICAgICBjb25zdCBpbnQgY291bnQgPSBjb250ZW50TW9k ZWwtPmNvdW50KCk7CisgICAgIHFyZWFsIG1heEhlaWdodCA9IDA7CisgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgY291bnQ7ICsraSkgeworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3Jj L3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3Jj L3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5LmNwcAoraW5kZXggOTFiZDU5MTg0Li4wY2U1 MThmODQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIv cXF1aWNrb3ZlcmxheS5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxh dGVzMi9xcXVpY2tvdmVybGF5LmNwcAorQEAgLTM5OSw4ICszOTksMTEgQEAgdm9pZCBRUXVpY2tP dmVybGF5OjppdGVtQ2hhbmdlKEl0ZW1DaGFuZ2UgY2hhbmdlLCBjb25zdCBJdGVtQ2hhbmdlRGF0 YSAmZGF0YSkKKyAgICAgUV9EKFFRdWlja092ZXJsYXkpOworICAgICBRUXVpY2tJdGVtOjppdGVt Q2hhbmdlKGNoYW5nZSwgZGF0YSk7CisgCistICAgIGlmIChjaGFuZ2UgPT0gSXRlbUNoaWxkQWRk ZWRDaGFuZ2UgfHwgY2hhbmdlID09IEl0ZW1DaGlsZFJlbW92ZWRDaGFuZ2UpCisrICAgIGlmIChj aGFuZ2UgPT0gSXRlbUNoaWxkQWRkZWRDaGFuZ2UgfHwgY2hhbmdlID09IEl0ZW1DaGlsZFJlbW92 ZWRDaGFuZ2UpIHsKKyAgICAgICAgIHNldFZpc2libGUoIWQtPmFsbERyYXdlcnMuaXNFbXB0eSgp IHx8ICFjaGlsZEl0ZW1zKCkuaXNFbXB0eSgpKTsKKysgICAgICAgIGlmIChkYXRhLml0ZW0tPnBh cmVudCgpID09IGQtPm1vdXNlR3JhYmJlclBvcHVwKQorKyAgICAgICAgICAgIGQtPnNldE1vdXNl R3JhYmJlclBvcHVwKG51bGxwdHIpOworKyAgICB9CisgfQorIAorIHZvaWQgUVF1aWNrT3Zlcmxh eTo6Z2VvbWV0cnlDaGFuZ2VkKGNvbnN0IFFSZWN0RiAmbmV3R2VvbWV0cnksIGNvbnN0IFFSZWN0 RiAmb2xkR2VvbWV0cnkpCitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0 ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlj a3RlbXBsYXRlczIvcXF1aWNrc2Nyb2xsYmFyLmNwcAoraW5kZXggNGUyZjUwOWRiLi4xYzRiMzA4 Y2QgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1 aWNrc2Nyb2xsYmFyLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0 ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAKK0BAIC03OTcsNiArNzk3LDE0IEBAIHZvaWQgUVF1aWNr U2Nyb2xsQmFyQXR0YWNoZWRQcml2YXRlOjppbml0SG9yaXpvbnRhbCgpCisgICAgIGlmIChwYXJl bnQgJiYgcGFyZW50ID09IGZsaWNrYWJsZS0+cGFyZW50SXRlbSgpKQorICAgICAgICAgaG9yaXpv bnRhbC0+c3RhY2tBZnRlcihmbGlja2FibGUpOworIAorKyAgICAvLyBJZiBhIHNjcm9sbCBiYXIg d2FzIHByZXZpb3VzbHkgaGlkZGVuIChkdWUgdG8gZS5nLiBzZXR0aW5nIGEgbmV3IGNvbnRlbnRJ dGVtCisrICAgIC8vIG9uIGEgU2Nyb2xsVmlldyksIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQg d2UgdW4taGlkZSBpdC4KKysgICAgLy8gV2UgZG9uJ3QgYm90aGVyIGNoZWNraW5nIGlmIHRoZSBp dGVtIGlzIGFjdHVhbGx5IHRoZSBvbGQgb25lLCBiZWNhdXNlCisrICAgIC8vIGlmIGl0J3Mgbm90 LCBhbGwgb2YgdGhlIHRoaW5ncyB0aGUgZnVuY3Rpb24gZG9lcyAoc2V0dGluZyBwYXJlbnQsIHZp c2liaWxpdHksIGV0Yy4pCisrICAgIC8vIHNob3VsZCBiZSBuby1vcHMgYW55d2F5LgorKyAgICBp ZiAoYXV0byBjb250cm9sID0gcW9iamVjdF9jYXN0PFFRdWlja0NvbnRyb2wqPihxX3B0ci0+cGFy ZW50KCkpKQorKyAgICAgICAgUVF1aWNrQ29udHJvbFByaXZhdGU6OnVuaGlkZU9sZEl0ZW0oY29u dHJvbCwgaG9yaXpvbnRhbCk7CisrCisgICAgIGxheW91dEhvcml6b250YWwoKTsKKyAgICAgaG9y aXpvbnRhbC0+c2V0U2l6ZShhcmVhLT5wcm9wZXJ0eSgid2lkdGhSYXRpbyIpLnRvUmVhbCgpKTsK KyAgICAgaG9yaXpvbnRhbC0+c2V0UG9zaXRpb24oYXJlYS0+cHJvcGVydHkoInhQb3NpdGlvbiIp LnRvUmVhbCgpKTsKK0BAIC04MTgsNiArODI2LDkgQEAgdm9pZCBRUXVpY2tTY3JvbGxCYXJBdHRh Y2hlZFByaXZhdGU6OmluaXRWZXJ0aWNhbCgpCisgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50ID09 IGZsaWNrYWJsZS0+cGFyZW50SXRlbSgpKQorICAgICAgICAgdmVydGljYWwtPnN0YWNrQWZ0ZXIo ZmxpY2thYmxlKTsKKyAKKysgICAgaWYgKGF1dG8gY29udHJvbCA9IHFvYmplY3RfY2FzdDxRUXVp Y2tDb250cm9sKj4ocV9wdHItPnBhcmVudCgpKSkKKysgICAgICAgIFFRdWlja0NvbnRyb2xQcml2 YXRlOjp1bmhpZGVPbGRJdGVtKGNvbnRyb2wsIHZlcnRpY2FsKTsKKysKKyAgICAgbGF5b3V0VmVy dGljYWwoKTsKKyAgICAgdmVydGljYWwtPnNldFNpemUoYXJlYS0+cHJvcGVydHkoImhlaWdodFJh dGlvIikudG9SZWFsKCkpOworICAgICB2ZXJ0aWNhbC0+c2V0UG9zaXRpb24oYXJlYS0+cHJvcGVy dHkoInlQb3NpdGlvbiIpLnRvUmVhbCgpKTsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMy L3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc2Nyb2xsdmlldy5xbWwgYi9xdHF1aWNrY29u dHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc2Nyb2xsdmlldy5xbWwKK2luZGV4 IDBlOGIwODM1Mi4uY2Q0OTMxMTg0IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0 cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3Njcm9sbHZpZXcucW1sCisrKysgYi9xdHF1aWNrY29u dHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc2Nyb2xsdmlldy5xbWwKK0BAIC01 NzYsNCArNTc2LDUxIEBAIFRlc3RDYXNlIHsKKyAgICAgICAgIHZlcmlmeShuZXdIb3Jpem9udGFs U2Nyb2xsQmFyLnZpc2libGUpCisgICAgICAgICB2ZXJpZnkoIW9sZEhvcml6b250YWxTY3JvbGxC YXIudmlzaWJsZSkKKyAgICAgfQorKworKyAgICBDb21wb25lbnQgeworKyAgICAgICAgaWQ6IGJp bmRpbmdUb0NvbnRlbnRJdGVtQW5kU3RhbmRhbG9uZUZsaWNrYWJsZQorKworKyAgICAgICAgSXRl bSB7CisrICAgICAgICAgICAgd2lkdGg6IDIwMAorKyAgICAgICAgICAgIGhlaWdodDogMjAwCisr CisrICAgICAgICAgICAgcHJvcGVydHkgYWxpYXMgc2Nyb2xsVmlldzogc2Nyb2xsVmlldworKwor KyAgICAgICAgICAgIFNjcm9sbFZpZXcgeworKyAgICAgICAgICAgICAgICBpZDogc2Nyb2xsVmll dworKyAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorKyAgICAgICAgICAgICAg ICBjb250ZW50SXRlbTogbGlzdFZpZXcKKysKKysgICAgICAgICAgICAgICAgcHJvcGVydHkgSXRl bSBzb21lQmluZGluZzogY29udGVudEl0ZW0KKysgICAgICAgICAgICB9CisrICAgICAgICAgICAg TGlzdFZpZXcgeworKyAgICAgICAgICAgICAgICBpZDogbGlzdFZpZXcKKysgICAgICAgICAgICAg ICAgbW9kZWw6IDEwCisrICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBJdGVtRGVsZWdhdGUgewor KyAgICAgICAgICAgICAgICAgICAgdGV4dDogbW9kZWxEYXRhCisrICAgICAgICAgICAgICAgICAg ICB3aWR0aDogbGlzdFZpZXcud2lkdGgKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAg IH0KKysgICAgICAgIH0KKysgICAgfQorKworKyAgICAvLyBUZXN0cyB0aGF0IHNjcm9sbCBiYXJz IHNob3cgdXAgZm9yIGEgU2Nyb2xsVmlldyB3aGVyZQorKyAgICAvLyAtIGl0cyBjb250ZW50SXRl bSBpcyBkZWNsYXJlZCBhcyBhIHN0YW5kYWxvbmUsIHNlcGFyYXRlIGl0ZW0KKysgICAgLy8gLSB0 aGVyZSBpcyBhIGJpbmRpbmcgdG8gY29udGVudEl0ZW0gKHdoaWNoIGNhdXNlcyBhIGRlZmF1bHQg RmxpY2thYmxlIHRvIGJlIGNyZWF0ZWQpCisrICAgIGZ1bmN0aW9uIHRlc3RfYmluZGluZ1RvQ29u dGVudEl0ZW1BbmRTdGFuZGFsb25lRmxpY2thYmxlKCkgeworKyAgICAgICAgbGV0IHJvb3QgPSBj cmVhdGVUZW1wb3JhcnlPYmplY3QoYmluZGluZ1RvQ29udGVudEl0ZW1BbmRTdGFuZGFsb25lRmxp Y2thYmxlLCB0ZXN0Q2FzZSkKKysgICAgICAgIHZlcmlmeShyb290KQorKworKyAgICAgICAgbGV0 IGNvbnRyb2wgPSByb290LnNjcm9sbFZpZXcKKysgICAgICAgIGxldCB2ZXJ0aWNhbFNjcm9sbEJh ciA9IGNvbnRyb2wuU2Nyb2xsQmFyLnZlcnRpY2FsCisrICAgICAgICBsZXQgaG9yaXpvbnRhbFNj cm9sbEJhciA9IGNvbnRyb2wuU2Nyb2xsQmFyLmhvcml6b250YWwKKysgICAgICAgIGNvbXBhcmUo dmVydGljYWxTY3JvbGxCYXIucGFyZW50LCBjb250cm9sKQorKyAgICAgICAgY29tcGFyZShob3Jp em9udGFsU2Nyb2xsQmFyLnBhcmVudCwgY29udHJvbCkKKysgICAgICAgIHZlcmlmeSh2ZXJ0aWNh bFNjcm9sbEJhci52aXNpYmxlKQorKyAgICAgICAgdmVyaWZ5KGhvcml6b250YWxTY3JvbGxCYXIu dmlzaWJsZSkKKysKKysgICAgICAgIG1vdXNlRHJhZyh2ZXJ0aWNhbFNjcm9sbEJhciwgdmVydGlj YWxTY3JvbGxCYXIud2lkdGggLyAyLCB2ZXJ0aWNhbFNjcm9sbEJhci5oZWlnaHQgLyAyLCAwLCA1 MCkKKysgICAgICAgIHZlcmlmeSh2ZXJ0aWNhbFNjcm9sbEJhci5hY3RpdmUpCisrICAgICAgICB2 ZXJpZnkoaG9yaXpvbnRhbFNjcm9sbEJhci5hY3RpdmUpCisrICAgIH0KKyB9CitkaWZmIC0tZ2l0 IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3N3aXRjaC5x bWwgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc3dpdGNo LnFtbAoraW5kZXggYjNmYWI0MWNhLi4xMGI2YmFhMDIgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29u dHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc3dpdGNoLnFtbAorKysrIGIvcXRx dWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3N3aXRjaC5xbWwKK0BA IC02MDgsNCArNjA4LDI3IEBAIFRlc3RDYXNlIHsKKyAgICAgICAgIG1vdXNlQ2xpY2soY29udHJv bC5pbmRpY2F0b3IpCisgICAgICAgICB2ZXJpZnkoY29udHJvbC5hY3RpdmVGb2N1cykKKyAgICAg fQorKworKyAgICBDb21wb25lbnQgeworKyAgICAgICAgaWQ6IGRlbGV0aW9uT3JkZXIxCisrICAg ICAgICBJdGVtIHsKKysgICAgICAgICAgICBJbWFnZSB7IGlkOiBpbm5lckltYWdlIH0KKysgICAg ICAgICAgICBTd2l0Y2ggeyBpbmRpY2F0b3I6IGlubmVySW1hZ2UgfQorKyAgICAgICAgfQorKyAg ICB9CisrCisrICAgIENvbXBvbmVudCB7CisrICAgICAgICBpZDogZGVsZXRpb25PcmRlcjIKKysg ICAgICAgIEl0ZW0geworKyAgICAgICAgICAgIFN3aXRjaCB7IGluZGljYXRvcjogaW5uZXJJbWFn ZSB9CisrICAgICAgICAgICAgSW1hZ2UgeyBpZDogaW5uZXJJbWFnZSB9CisrICAgICAgICB9Cisr ICAgIH0KKysKKysgICAgZnVuY3Rpb24gdGVzdF9kZWxldGlvbk9yZGVyKCkgeworKyAgICAgICAg dmFyIGNvbnRyb2wxID0gY3JlYXRlVGVtcG9yYXJ5T2JqZWN0KGRlbGV0aW9uT3JkZXIxLCB0ZXN0 Q2FzZSkKKysgICAgICAgIHZlcmlmeShjb250cm9sMSkKKysgICAgICAgIHZhciBjb250cm9sMiA9 IGNyZWF0ZVRlbXBvcmFyeU9iamVjdChkZWxldGlvbk9yZGVyMiwgdGVzdENhc2UpCisrICAgICAg ICB2ZXJpZnkoY29udHJvbDIpCisrICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRy b2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL2RhdGEvcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRp b24ucW1sIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL2RhdGEvcmVs ZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1sCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMDAwLi45ZTQ1OThiOWYKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0cXVpY2tjb250cm9s czIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC9kYXRhL3JlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9u LnFtbAorQEAgLTAsMCArMSw3OCBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBD b3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBz Oi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSB0ZXN0IHN1aXRlIG9mIHRoZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VO U0U6QlNEJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBob2xk aW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKysq KiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlk ZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5j ZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJl dHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoqIGFu ZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3Ig ZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8v d3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBCU0QgTGljZW5zZSBVc2FnZQorKyoqIEFs dGVybmF0aXZlbHksIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEJTRCBsaWNlbnNlCisrKiogYXMgZm9sbG93czoKKysqKgorKyoqICJSZWRpc3RyaWJ1dGlvbiBh bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysqKiBt b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnMgYXJlCisrKiogbWV0OgorKyoqICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyoqICAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrKiog ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv dmUgY29weXJpZ2h0CisrKiogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyoqICAgICB0aGUgZG9jdW1lbnRhdGlvbiBh bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisrKiogICAgIGRpc3RyaWJ1 dGlvbi4KKysqKiAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBUaGUgUXQgQ29tcGFueSBMdGQgbm9y IHRoZSBuYW1lcyBvZiBpdHMKKysqKiAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisrKiogICAgIGZyb20gdGhpcyBzb2Z0 d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKysqKgorKyoq CisrKiogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg QU5EIENPTlRSSUJVVE9SUworKyoqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisrKiogTElNSVRFRCBUTywgVEhFIElNUExJ RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisrKiogQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD T1BZUklHSFQKKysqKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKysqKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisrKiogTElNSVRFRCBUTywg UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us CisrKiogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS IENBVVNFRCBBTkQgT04gQU5ZCisrKiogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKyoqIChJTkNMVURJTkcgTkVHTElH RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKyoq IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg U1VDSCBEQU1BR0UuIgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKysKKytpbXBvcnQgUXRRdWljayAyLjE1CisraW1wb3J0IFF0UXVpY2suQ29u dHJvbHMgMi4xNQorKworK0FwcGxpY2F0aW9uV2luZG93IHsKKysgICAgaWQ6IHdpbmRvdworKyAg ICB3aWR0aDogNDAwCisrICAgIGhlaWdodDogNDAwCisrICAgIHRpdGxlOiAicmVsZWFzZUFmdGVy RXhpdFRyYW5zaXRpb24iCisrCisrICAgIHByb3BlcnR5IGFsaWFzIHBvcHVwOiBwb3B1cAorKyAg ICBwcm9wZXJ0eSBhbGlhcyBtb2RhbFBvcHVwOiBtb2RhbFBvcHVwCisrCisrICAgIFBvcHVwIHsK KysgICAgICAgIGlkOiBwb3B1cAorKyAgICAgICAgeTogcGFyZW50LmhlaWdodCAtIGhlaWdodAor KyAgICAgICAgd2lkdGg6IDUwCisrICAgICAgICBoZWlnaHQ6IDUwCisrICAgIH0KKysKKysgICAg UG9wdXAgeworKyAgICAgICAgaWQ6IG1vZGFsUG9wdXAKKysgICAgICAgIG1vZGFsOiB0cnVlCisr ICAgICAgICB5OiBwYXJlbnQuaGVpZ2h0IC0gaGVpZ2h0CisrICAgICAgICB3aWR0aDogNTAKKysg ICAgICAgIGhlaWdodDogNTAKKysgICAgICAgIGV4aXQ6ICBUcmFuc2l0aW9uIHsgUGF1c2VBbmlt YXRpb24geyBkdXJhdGlvbjogMTAwIH0gfQorKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL3F0cXVp Y2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC90c3RfcXF1aWNrcG9wdXAuY3BwIGIv cXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9xcXVpY2twb3B1cC5j cHAKK2luZGV4IDU0OTUyZDEyOC4uM2Q1MGUyZGQ0IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRy b2xzMi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9xcXVpY2twb3B1cC5jcHAKKysrKyBiL3F0 cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC90c3RfcXF1aWNrcG9wdXAuY3Bw CitAQCAtMTAwLDYgKzEwMCw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgaW52aXNpYmxl VG9vbFRpcE9wZW4oKTsKKyAgICAgdm9pZCBjZW50ZXJJbk92ZXJsYXlXaXRoaW5TdGFja1ZpZXdJ dGVtKCk7CisgICAgIHZvaWQgZGVzdHJveUR1cmluZ0V4aXRUcmFuc2l0aW9uKCk7CisrICAgIHZv aWQgcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24oKTsKKyB9OworIAorIHZvaWQgdHN0X1FRdWlj a1BvcHVwOjppbml0VGVzdENhc2UoKQorQEAgLTE1NzUsNiArMTU3NiwzNCBAQCB2b2lkIHRzdF9R UXVpY2tQb3B1cDo6ZGVzdHJveUR1cmluZ0V4aXRUcmFuc2l0aW9uKCkKKyAgICAgUVZFUklGWSgh YnV0dG9uLT5pc0Rvd24oKSk7CisgfQorIAorK3ZvaWQgdHN0X1FRdWlja1BvcHVwOjpyZWxlYXNl QWZ0ZXJFeGl0VHJhbnNpdGlvbigpCisreworKyAgICBRUXVpY2tBcHBsaWNhdGlvbkhlbHBlciBo ZWxwZXIodGhpcywgInJlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uLnFtbCIpOworKyAgICBRVkVS SUZZMihoZWxwZXIucmVhZHksIGhlbHBlci5mYWlsdXJlTWVzc2FnZSgpKTsKKysKKysgICAgUVF1 aWNrV2luZG93ICp3aW5kb3cgPSBoZWxwZXIud2luZG93OworKyAgICB3aW5kb3ctPnNob3coKTsK KysgICAgUVZFUklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dBY3RpdmUod2luZG93KSk7CisrCisr ICAgIFFRdWlja092ZXJsYXkgKm92ZXJsYXkgPSBRUXVpY2tPdmVybGF5OjpvdmVybGF5KHdpbmRv dyk7CisrICAgIFFRdWlja1BvcHVwICptb2RhbFBvcHVwID0gd2luZG93LT5wcm9wZXJ0eSgibW9k YWxQb3B1cCIpLnZhbHVlPFFRdWlja1BvcHVwICo+KCk7CisrICAgIFFRdWlja1BvcHVwICpwb3B1 cCA9IHdpbmRvdy0+cHJvcGVydHkoInBvcHVwIikudmFsdWU8UVF1aWNrUG9wdXAgKj4oKTsKKysK KysgICAgbW9kYWxQb3B1cC0+b3BlbigpOworKyAgICBRVFJZX1ZFUklGWShtb2RhbFBvcHVwLT5p c09wZW5lZCgpKTsKKysKKysgICAgUVRlc3Q6Om1vdXNlUHJlc3Mod2luZG93LCBRdDo6TGVmdEJ1 dHRvbiwgUXQ6Ok5vTW9kaWZpZXIsIFFQb2ludCgxLCAxKSk7CisrICAgIC8vIHdhaXQgdW50aWwg dGhlIHRyYW5zaXRpb24gaXMgZmluaXNoZWQgYW5kIHRoZSBvdmVybGF5IGhpZGVzIGl0c2VsZgor KyAgICBRVFJZX1ZFUklGWSghb3ZlcmxheS0+aXNWaXNpYmxlKCkpOworKyAgICBRVGVzdDo6bW91 c2VSZWxlYXNlKHdpbmRvdywgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyLCBRUG9pbnQo MSwgMSkpOworKworKyAgICBwb3B1cC0+b3BlbigpOworKyAgICBRVFJZX1ZFUklGWShwb3B1cC0+ aXNPcGVuZWQoKSk7CisrICAgIFFUZXN0Ojptb3VzZUNsaWNrKHdpbmRvdywgUXQ6OkxlZnRCdXR0 b24sIFF0OjpOb01vZGlmaWVyLCBRUG9pbnQoMSwgMSkpOworKyAgICBRVFJZX1ZFUklGWSghcG9w dXAtPmlzT3BlbmVkKCkpOworK30KKysKKysKKyBRVEVTVF9RVUlDS0NPTlRST0xTX01BSU4odHN0 X1FRdWlja1BvcHVwKQorIAorICNpbmNsdWRlICJ0c3RfcXF1aWNrcG9wdXAubW9jIgorU3VibW9k dWxlIHF0c2NyaXB0IDViZTk1Zjk2Li4uNGQ4ZTRiZDIgKGNvbW1pdHMgbm90IHByZXNlbnQpCitT dWJtb2R1bGUgcXRzcGVlY2ggMTdmYzlmZGUuLjI1NTg0NWUyOgorZGlmZiAtLWdpdCBhL3F0c3Bl ZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hkaXNwYXRjaGVyL3F0ZXh0dG9zcGVlY2hfc3BlZWNo ZC5jcHAgYi9xdHNwZWVjaC9zcmMvcGx1Z2lucy90dHMvc3BlZWNoZGlzcGF0Y2hlci9xdGV4dHRv c3BlZWNoX3NwZWVjaGQuY3BwCitpbmRleCA2ZWI3NGI4Li5iY2M3ZGQxIDEwMDY0NAorLS0tIGEv cXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRzL3NwZWVjaGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9z cGVlY2hkLmNwcAorKysrIGIvcXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRzL3NwZWVjaGRpc3BhdGNo ZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNwcAorQEAgLTM1Nyw3ICszNTcsOSBAQCBRVmVjdG9y PFFMb2NhbGU+IFFUZXh0VG9TcGVlY2hFbmdpbmVTcGVlY2hkOjphdmFpbGFibGVMb2NhbGVzKCkg Y29uc3QKKyAKKyBRVmVjdG9yPFFWb2ljZT4gUVRleHRUb1NwZWVjaEVuZ2luZVNwZWVjaGQ6OmF2 YWlsYWJsZVZvaWNlcygpIGNvbnN0CisgeworLSAgICByZXR1cm4gbV92b2ljZXMudmFsdWVzKG1f Y3VycmVudExvY2FsZS5uYW1lKCkpLnRvVmVjdG9yKCk7CisrICAgIFFMaXN0PFFWb2ljZT4gcmVz dWx0TGlzdCA9IG1fdm9pY2VzLnZhbHVlcyhtX2N1cnJlbnRMb2NhbGUubmFtZSgpKTsKKysgICAg c3RkOjpyZXZlcnNlKHJlc3VsdExpc3QuYmVnaW4oKSwgcmVzdWx0TGlzdC5lbmQoKSk7CisrICAg IHJldHVybiByZXN1bHRMaXN0LnRvVmVjdG9yKCk7CisgfQorIAorIC8vIFdlIGhhdmUgbm8gd2F5 IG9mIGtub3dpbmcgb3VyIG93biBjbGllbnRfaWQgc2luY2Ugc3BlZWNoLWRpc3BhdGNoZXIgc2Vl bXMgdG8gYmUgaW5jb21wbGV0ZQorU3VibW9kdWxlIHF0c3ZnIDBjMDU3ODBlLi5hN2EwZjI0OToK K2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvc3ZnL3Fzdmdpb2hh bmRsZXIuY3BwIGIvcXRzdmcvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3N2Zy9xc3ZnaW9oYW5k bGVyLmNwcAoraW5kZXggNTYxZTc3ZS4uMTJlMDU3NCAxMDA2NDQKKy0tLSBhL3F0c3ZnL3NyYy9w bHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxlci5jcHAKKysrKyBiL3F0c3ZnL3Ny Yy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxlci5jcHAKK0BAIC0xOTEsNiAr MTkxLDggQEAgYm9vbCBRU3ZnSU9IYW5kbGVyOjpyZWFkKFFJbWFnZSAqaW1hZ2UpCisgICAgICAg ICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgaWYgKCFmaW5hbFNpemUuaXNFbXB0eSgpKSB7 CisrICAgICAgICAgICAgaWYgKHFNYXgoZmluYWxTaXplLndpZHRoKCksIGZpbmFsU2l6ZS5oZWln aHQoKSkgPiAweGZmZmYpCisrICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQXNzdW1l IGNvcnJ1cHRlZCBmaWxlCisgICAgICAgICAgICAgaW1hZ2UtPmZpbGwoZC0+YmFja0NvbG9yLnJn YmEoKSk7CisgICAgICAgICAgICAgUVBhaW50ZXIgcChpbWFnZSk7CisgICAgICAgICAgICAgZC0+ ci5yZW5kZXIoJnAsIGJvdW5kcyk7CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3JjL3N2Zy9xc3ZnaGFu ZGxlci5jcHAgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVyLmNwcAoraW5kZXggYTVmODc3Zi4u OGRkYTU2MyAxMDA2NDQKKy0tLSBhL3F0c3ZnL3NyYy9zdmcvcXN2Z2hhbmRsZXIuY3BwCisrKysg Yi9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVyLmNwcAorQEAgLTEzOTMsOSArMTM5MywxMCBAQCBz dGF0aWMgdm9pZCBwYXJzZUZvbnQoUVN2Z05vZGUgKm5vZGUsCisgICAgICAgICBjYXNlIEZvbnRT aXplTm9uZToKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGNhc2UgRm9udFNpemVWYWx1 ZTogeworLSAgICAgICAgICAgIFFTdmdIYW5kbGVyOjpMZW5ndGhUeXBlIGR1bW15OyAvLyBzaG91 bGQgYWx3YXlzIGJlIHBpeGVsIHNpemUKKy0gICAgICAgICAgICBmb250U3R5bGUtPnNldFNpemUo cU1pbihwYXJzZUxlbmd0aChhdHRyaWJ1dGVzLmZvbnRTaXplLCBkdW1teSwgaGFuZGxlciksCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXJlYWwoMHhmZmZmKSkpOworKyAg ICAgICAgICAgIFFTdmdIYW5kbGVyOjpMZW5ndGhUeXBlIHR5cGU7CisrICAgICAgICAgICAgcXJl YWwgZnMgPSBwYXJzZUxlbmd0aChhdHRyaWJ1dGVzLmZvbnRTaXplLCB0eXBlLCBoYW5kbGVyKTsK KysgICAgICAgICAgICBmcyA9IGNvbnZlcnRUb1BpeGVscyhmcywgdHJ1ZSwgdHlwZSk7CisrICAg ICAgICAgICAgZm9udFN0eWxlLT5zZXRTaXplKHFNaW4oZnMsIHFyZWFsKDB4ZmZmZikpKTsKKyAg ICAgICAgIH0KKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGRlZmF1bHQ6CitAQCAtMjUx Myw2ICsyNTE0LDggQEAgc3RhdGljIGJvb2wgcGFyc2VBbmltYXRlVHJhbnNmb3JtTm9kZShRU3Zn Tm9kZSAqcGFyZW50LAorICAgICAgICAgICAgICsrczsKKyAgICAgICAgIH0KKyAgICAgfQorKyAg ICBpZiAodmFscy5jb3VudCgpICUgMyAhPSAwKQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworIAor ICAgICBib29sIG9rID0gdHJ1ZTsKKyAgICAgaW50IGJlZ2luID0gcGFyc2VDbG9ja1ZhbHVlKGJl Z2luU3RyLCAmb2spOworQEAgLTI1NzYsNiArMjU3OSw4IEBAIHN0YXRpYyBRU3ZnTm9kZSAqY3Jl YXRlQ2lyY2xlTm9kZShRU3ZnTm9kZSAqcGFyZW50LAorICAgICBxcmVhbCBuY3ggPSB0b0RvdWJs ZShjeCk7CisgICAgIHFyZWFsIG5jeSA9IHRvRG91YmxlKGN5KTsKKyAgICAgcXJlYWwgbnIgID0g dG9Eb3VibGUocik7CisrICAgIGlmIChuciA8IDAuMCkKKysgICAgICAgIHJldHVybiBudWxscHRy OworIAorICAgICBRUmVjdEYgcmVjdChuY3gtbnIsIG5jeS1uciwgbnIqMiwgbnIqMik7CisgICAg IFFTdmdOb2RlICpjaXJjbGUgPSBuZXcgUVN2Z0NpcmNsZShwYXJlbnQsIHJlY3QpOworQEAgLTMw NDYsMTUgKzMwNTEsMTYgQEAgc3RhdGljIFFTdmdTdHlsZVByb3BlcnR5ICpjcmVhdGVSYWRpYWxH cmFkaWVudE5vZGUoUVN2Z05vZGUgKm5vZGUsCisgCisgICAgIHFyZWFsIG5jeCA9IDAuNTsKKyAg ICAgcXJlYWwgbmN5ID0gMC41OworLSAgICBxcmVhbCBuciAgPSAwLjU7CisgICAgIGlmICghY3gu aXNFbXB0eSgpKQorICAgICAgICAgbmN4ID0gdG9Eb3VibGUoY3gpOworICAgICBpZiAoIWN5Lmlz RW1wdHkoKSkKKyAgICAgICAgIG5jeSA9IHRvRG91YmxlKGN5KTsKKysKKysgICAgcXJlYWwgbnIg PSAwLjA7CisgICAgIGlmICghci5pc0VtcHR5KCkpCisgICAgICAgICBuciA9IHRvRG91YmxlKHIp OworLSAgICBpZiAobnIgPCAwLjUpCistICAgICAgICBuciA9IDAuNTsKKysgICAgaWYgKG5yIDw9 IDAuMCkKKysgICAgICAgIHJldHVybiBudWxscHRyOworIAorICAgICBxcmVhbCBuZnggPSBuY3g7 CisgICAgIGlmICghZnguaXNFbXB0eSgpKQorQEAgLTMzNTAsNyArMzM1Niw5IEBAIHN0YXRpYyBR U3ZnTm9kZSAqY3JlYXRlVGV4dE5vZGUoUVN2Z05vZGUgKnBhcmVudCwKKyAgICAgLy8jIyMgZWRp dGFibGUgYW5kIHJvdGF0ZSBub3QgaGFuZGxlZAorICAgICBRU3ZnSGFuZGxlcjo6TGVuZ3RoVHlw ZSB0eXBlOworICAgICBxcmVhbCBueCA9IHBhcnNlTGVuZ3RoKHgsIHR5cGUsIGhhbmRsZXIpOwor KyAgICBueCA9IGNvbnZlcnRUb1BpeGVscyhueCwgdHJ1ZSwgdHlwZSk7CisgICAgIHFyZWFsIG55 ID0gcGFyc2VMZW5ndGgoeSwgdHlwZSwgaGFuZGxlcik7CisrICAgIG55ID0gY29udmVydFRvUGl4 ZWxzKG55LCB0cnVlLCB0eXBlKTsKKyAKKyAgICAgUVN2Z05vZGUgKnRleHQgPSBuZXcgUVN2Z1Rl eHQocGFyZW50LCBRUG9pbnRGKG54LCBueSkpOworICAgICByZXR1cm4gdGV4dDsKK0BAIC0zNjkx LDkgKzM2OTksNyBAQCB2b2lkIFFTdmdIYW5kbGVyOjpwYXJzZSgpCisgICAgICAgICBjYXNlIFFY bWxTdHJlYW1SZWFkZXI6OkVuZEVsZW1lbnQ6CisgICAgICAgICAgICAgZW5kRWxlbWVudCh4bWwt Pm5hbWUoKSk7CisgICAgICAgICAgICAgKytyZW1haW5pbmdVbmZpbmlzaGVkRWxlbWVudHM7Cist ICAgICAgICAgICAgLy8gaWYgd2UgYXJlIHVzaW5nIHNvbWVib2R5IGVsc2UncyBxeG1sc3RyZWFt cmVhZGVyCistICAgICAgICAgICAgLy8gd2Ugc2hvdWxkIG5vdCByZWFkIHVudGlsIHRoZSBlbmQg b2YgdGhlIHN0cmVhbQorLSAgICAgICAgICAgIGRvbmUgPSAhbV9vd25zUmVhZGVyICYmICh4bWwt Pm5hbWUoKSA9PSBRTGF0aW4xU3RyaW5nKCJzdmciKSk7CisrICAgICAgICAgICAgZG9uZSA9ICh4 bWwtPm5hbWUoKSA9PSBRTGF0aW4xU3RyaW5nKCJzdmciKSk7CisgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICBjYXNlIFFYbWxTdHJlYW1SZWFkZXI6OkNoYXJhY3RlcnM6CisgICAgICAgICAg ICAgY2hhcmFjdGVycyh4bWwtPnRleHQoKSk7CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3JjL3N2Zy9x c3Znc3RydWN0dXJlLmNwcCBiL3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5jcHAKK2luZGV4 IGI4OTYwOGIuLjg5YzllNGUgMTAwNjQ0CistLS0gYS9xdHN2Zy9zcmMvc3ZnL3FzdmdzdHJ1Y3R1 cmUuY3BwCisrKysgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdzdHJ1Y3R1cmUuY3BwCitAQCAtMjU1LDkg KzI1NSwxMyBAQCBpbmxpbmUgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRTdmdGZWF0dXJlKGNvbnN0 IFFTdHJpbmcgJnN0cikKKyAgICAgfTsKKyAKKyAgICAgaWYgKHN0ci5sZW5ndGgoKSA8PSBNQVhf V09SRF9MRU5HVEggJiYgc3RyLmxlbmd0aCgpID49IE1JTl9XT1JEX0xFTkdUSCkgeworKyAgICAg ICAgY29uc3QgY2hhcjE2X3QgdW5pY29kZTQ0ID0gc3RyLmF0KDQ0KS51bmljb2RlKCk7CisrICAg ICAgICBjb25zdCBjaGFyMTZfdCB1bmljb2RlNDUgPSBzdHIuYXQoNDUpLnVuaWNvZGUoKTsKKysg ICAgICAgIGlmICh1bmljb2RlNDQgPj0gc2l6ZW9mKGFzc29fdmFsdWVzKSB8fCB1bmljb2RlNDUg Pj0gc2l6ZW9mKGFzc29fdmFsdWVzKSkKKysgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg ICAgICBjb25zdCBpbnQga2V5ID0gc3RyLmxlbmd0aCgpCistICAgICAgICAgICAgICAgICAgICAg ICAgKyBhc3NvX3ZhbHVlc1tzdHIuYXQoNDUpLnVuaWNvZGUoKV0KKy0gICAgICAgICAgICAgICAg ICAgICAgICArIGFzc29fdmFsdWVzW3N0ci5hdCg0NCkudW5pY29kZSgpXTsKKysgICAgICAgICAg ICAgICAgICAgICAgICArIGFzc29fdmFsdWVzW3VuaWNvZGU0NV0KKysgICAgICAgICAgICAgICAg ICAgICAgICArIGFzc29fdmFsdWVzW3VuaWNvZGU0NF07CisgICAgICAgICBpZiAoa2V5IDw9IE1B WF9IQVNIX1ZBTFVFICYmIGtleSA+PSAwKQorICAgICAgICAgICAgIHJldHVybiBzdHIgPT0gUUxh dGluMVN0cmluZyh3b3JkbGlzdFtrZXldKTsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0c3ZnL3Ny Yy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAgYi9xdHN2Zy9zcmMvc3ZnL3Fzdmd0aW55ZG9jdW1l bnQuY3BwCitpbmRleCA2M2QwNzk3Li4xOWU3MTU0IDEwMDY0NAorLS0tIGEvcXRzdmcvc3JjL3N2 Zy9xc3ZndGlueWRvY3VtZW50LmNwcAorKysrIGIvcXRzdmcvc3JjL3N2Zy9xc3ZndGlueWRvY3Vt ZW50LmNwcAorQEAgLTQzMyw4ICs0MzMsMTYgQEAgdm9pZCBRU3ZnVGlueURvY3VtZW50OjpkcmF3 KFFQYWludGVyICpwLCBRU3ZnRXh0cmFTdGF0ZXMgJikKKyAgICAgZHJhdyhwKTsKKyB9CisgCisr c3RhdGljIGJvb2wgaXNWYWxpZE1hdHJpeChjb25zdCBRVHJhbnNmb3JtICZ0cmFuc2Zvcm0pCisr eworKyAgICBxcmVhbCBkZXRlcm1pbmFudCA9IHRyYW5zZm9ybS5kZXRlcm1pbmFudCgpOworKyAg ICByZXR1cm4gcUlzRmluaXRlKGRldGVybWluYW50KTsKKyt9CisrCisgdm9pZCBRU3ZnVGlueURv Y3VtZW50OjptYXBTb3VyY2VUb1RhcmdldChRUGFpbnRlciAqcCwgY29uc3QgUVJlY3RGICZ0YXJn ZXRSZWN0LCBjb25zdCBRUmVjdEYgJnNvdXJjZVJlY3QpCisgeworKyAgICBRVHJhbnNmb3JtIG9s ZFRyYW5zZm9ybSA9IHAtPndvcmxkVHJhbnNmb3JtKCk7CisrCisgICAgIFFSZWN0RiB0YXJnZXQg PSB0YXJnZXRSZWN0OworICAgICBpZiAodGFyZ2V0LmlzRW1wdHkoKSkgeworICAgICAgICAgUVBh aW50RGV2aWNlICpkZXYgPSBwLT5kZXZpY2UoKTsKK0BAIC00ODcsNiArNDk1LDkgQEAgdm9pZCBR U3ZnVGlueURvY3VtZW50OjptYXBTb3VyY2VUb1RhcmdldChRUGFpbnRlciAqcCwgY29uc3QgUVJl Y3RGICZ0YXJnZXRSZWN0LAorICAgICAgICAgfQorICNlbmRpZgorICAgICB9CisrCisrICAgIGlm ICghaXNWYWxpZE1hdHJpeChwLT53b3JsZFRyYW5zZm9ybSgpKSkKKysgICAgICAgIHAtPnNldFdv cmxkVHJhbnNmb3JtKG9sZFRyYW5zZm9ybSk7CisgfQorIAorIFFSZWN0RiBRU3ZnVGlueURvY3Vt ZW50Ojpib3VuZHNPbkVsZW1lbnQoY29uc3QgUVN0cmluZyAmaWQpIGNvbnN0CitkaWZmIC0tZ2l0 IGEvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0X3FzdmdyZW5kZXJlci5jcHAgYi9x dHN2Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcAoraW5kZXgg MzZjNzZlYy4uZGI3MWUwMiAxMDA2NDQKKy0tLSBhL3F0c3ZnL3Rlc3RzL2F1dG8vcXN2Z3JlbmRl cmVyL3RzdF9xc3ZncmVuZGVyZXIuY3BwCisrKysgYi9xdHN2Zy90ZXN0cy9hdXRvL3FzdmdyZW5k ZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcAorQEAgLTg2LDYgKzg2LDggQEAgcHJpdmF0ZSBzbG90 czoKKyAgICAgdm9pZCBvc3NfZnV6el8yMzczMSgpOworICAgICB2b2lkIG9zc19mdXp6XzI0MTMx KCk7CisgICAgIHZvaWQgb3NzX2Z1enpfMjQ3MzgoKTsKKysgICAgdm9pZCBpbGxlZ2FsQW5pbWF0 ZVRyYW5zZm9ybV9kYXRhKCk7CisrICAgIHZvaWQgaWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm0oKTsK KyAKKyAjaWZuZGVmIFFUX05PX0NPTVBSRVNTCisgICAgIHZvaWQgdGVzdEd6TG9hZGluZygpOwor QEAgLTE2NDYsNSArMTY0OCwyMiBAQCB2b2lkIHRzdF9RU3ZnUmVuZGVyZXI6Om9zc19mdXp6XzI0 NzM4KCkKKyAgICAgUVN2Z1JlbmRlcmVyKCkubG9hZChRQnl0ZUFycmF5KCI8c3ZnPjxwYXRoIGQ9 XCJhIDIgMWUtMjEyLi4uLi5cIj4iKSk7CisgfQorIAorK3ZvaWQgdHN0X1FTdmdSZW5kZXJlcjo6 aWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm1fZGF0YSgpCisreworKyAgICBRVGVzdDo6YWRkQ29sdW1u PFFCeXRlQXJyYXk+KCJzdmciKTsKKysKKysgICAgUVRlc3Q6Om5ld1JvdygiY2FzZTEiKSA8PCBR Qnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJhbnNmb3JtIHR5cGU9XCJyb3RhdGVcIiBiZWdpbj1c IjFcIiBkdXI9XCIyXCIgdmFsdWVzPVwiOCwwLDUsMFwiPiIpOworKyAgICBRVGVzdDo6bmV3Um93 KCJjYXNlMiIpIDw8IFFCeXRlQXJyYXkoIjxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1cInJv dGF0ZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJcIiB2YWx1ZXM9XCIxLDJcIj4iKTsKKysgICAgUVRl c3Q6Om5ld1JvdygiY2FzZTMiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJhbnNmb3Jt IHR5cGU9XCJyb3RhdGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIyXCIgZnJvbT1cIi4uIDUgMlwiIHRv PVwiZlwiPiIpOworKyAgICBRVGVzdDo6bmV3Um93KCJjYXNlNCIpIDw8IFFCeXRlQXJyYXkoIjxz dmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1cInNjYWxlXCIgYmVnaW49XCIxXCIgZHVyPVwiMlwi IGJ5PVwiLS0sLi5cIj4iKTsKKyt9CisrCisrdm9pZCB0c3RfUVN2Z1JlbmRlcmVyOjppbGxlZ2Fs QW5pbWF0ZVRyYW5zZm9ybSgpCisreworKyAgICBRRkVUQ0goUUJ5dGVBcnJheSwgc3ZnKTsKKysg ICAgUVN2Z1JlbmRlcmVyIHJlbmRlcmVyOworKyAgICBRVkVSSUZZKCFyZW5kZXJlci5sb2FkKHN2 ZykpOyAvLyBhbHNvIHNob3VsZG4ndCBhc3NlcnQKKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUVN2 Z1JlbmRlcmVyKQorICNpbmNsdWRlICJ0c3RfcXN2Z3JlbmRlcmVyLm1vYyIKK1N1Ym1vZHVsZSBx dHRvb2xzIDY5MTRmN2M4Li4wOTBlNTI2ZToKK2RpZmYgLS1naXQgYS9xdHRvb2xzL3NyYy9hc3Np c3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5jcHAgYi9xdHRvb2xzL3NyYy9hc3Np c3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVyYXRvci5jcHAKK2luZGV4IGZlYWIxZTJkNS4u Y2JmYjgyNTA3IDEwMDY0NAorLS0tIGEvcXR0b29scy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJh dG9yL2hlbHBnZW5lcmF0b3IuY3BwCisrKysgYi9xdHRvb2xzL3NyYy9hc3Npc3RhbnQvcWhlbHBn ZW5lcmF0b3IvaGVscGdlbmVyYXRvci5jcHAKK0BAIC00NDUsNyArNDQ1LDkgQEAgYm9vbCBIZWxw R2VuZXJhdG9yUHJpdmF0ZTo6aW5zZXJ0RmlsZXMoY29uc3QgUVN0cmluZ0xpc3QgJmZpbGVzLCBj b25zdCBRU3RyaW5nICYKKyAgICAgaWYgKGZpbHRlclNldElkIDwgMCkKKyAgICAgICAgIHJldHVy biBmYWxzZTsKKyAgICAgKytmaWx0ZXJTZXRJZDsKKy0gICAgZm9yIChpbnQgYXR0SWQgOiBxQXND b25zdChmaWx0ZXJBdHRzKSkgeworKyAgICBRTGlzdDxpbnQ+IGF0dFZhbHVlcyA9IGZpbHRlckF0 dHMudmFsdWVzKCk7CisrICAgIHN0ZDo6c29ydChhdHRWYWx1ZXMuYmVnaW4oKSwgYXR0VmFsdWVz LmVuZCgpKTsKKysgICAgZm9yIChpbnQgYXR0SWQgOiBxQXNDb25zdChhdHRWYWx1ZXMpKSB7Cisg ICAgICAgICBtX3F1ZXJ5LT5wcmVwYXJlKFFMYXRpbjFTdHJpbmcoIklOU0VSVCBJTlRPIEZpbGVB dHRyaWJ1dGVTZXRUYWJsZSAiCisgICAgICAgICAgICAgIlZBTFVFUyg/LCA/KSIpKTsKKyAgICAg ICAgIG1fcXVlcnktPmJpbmRWYWx1ZSgwLCBmaWx0ZXJTZXRJZCk7CitTdWJtb2R1bGUgcXR3YXls YW5kIGRmYjAxMjljLi4yOTA0ZTFiMzoKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9jb25maWd1cmUuanNvbiBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2NvbmZpZ3VyZS5qc29uCitp bmRleCAyZjQyNDU4MC4uMjkyMjIzNTcgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9jb25maWd1cmUuanNvbgorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmlndXJlLmpz b24KK0BAIC0xNDksOCArMTQ5LDcgQEAKKyAgICAgICAgICAgICAgICAgICAgICIjZW5kaWYiCisg ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICJsaWJzIjog Ii1sZHJtIiwKKy0gICAgICAgICAgICAidXNlIjogImVnbCIKKysgICAgICAgICAgICAidXNlIjog ImRybSBlZ2wiCisgICAgICAgICB9LAorICAgICAgICAgInZ1bGthbi1zZXJ2ZXItYnVmZmVyIjog eworICAgICAgICAgICAgICJsYWJlbCI6ICJWdWxrYW4gQnVmZmVyIFNoYXJpbmciLAorQEAgLTE2 OCw3ICsxNjcsOCBAQAorICAgICAgICAgICAgICAgICAgICAgImV4cG9ydEFsbG9jSW5mby5oYW5k bGVUeXBlcyA9IFZLX0VYVEVSTkFMX01FTU9SWV9IQU5ETEVfVFlQRV9PUEFRVUVfRkRfQklUX0tI UjsiLAorICAgICAgICAgICAgICAgICAgICAgInJldHVybiAwOyIKKyAgICAgICAgICAgICAgICAg XQorLSAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9LAorKyAgICAgICAgICAgICJ1c2UiOiAi d2F5bGFuZC1jbGllbnQiCisgICAgICAgICB9LAorICAgICAgICAgImVnbF8xXzUtd2F5bGFuZCI6 IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAiRUdMIDEuNSB3aXRoIFdheWxhbmQgUGxhdGZvcm0i LAorQEAgLTE4Myw3ICsxODMsNyBAQAorICAgICAgICAgICAgICAgICAgICAgImVnbEdldFBsYXRm b3JtRGlzcGxheShFR0xfUExBVEZPUk1fV0FZTEFORF9FWFQsIChzdHJ1Y3Qgd2xfZGlzcGxheSAq KShudWxscHRyKSwgbnVsbHB0cik7IgorICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAg fSwKKy0gICAgICAgICAgICAidXNlIjogImVnbCIKKysgICAgICAgICAgICAidXNlIjogImVnbCB3 YXlsYW5kLWNsaWVudCIKKyAgICAgICAgIH0KKyAgICAgfSwKKyAKK2RpZmYgLS1naXQgYS9xdHdh eWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uY3BwIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmNwcAoraW5k ZXggMTI1YjFlMTkuLmVkY2NmZTYzIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv Z2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9j bGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmNwcAorQEAgLTc0LDcgKzc0LDEw IEBAIHZvaWQgUVdheWxhbmRDbGllbnRFeHRlbnNpb25Qcml2YXRlOjpoYW5kbGVSZWdpc3RyeUds b2JhbCh2b2lkICpkYXRhLCA6OndsX3JlZ2lzCisgdm9pZCBRV2F5bGFuZENsaWVudEV4dGVuc2lv bjo6YWRkUmVnaXN0cnlMaXN0ZW5lcigpCisgeworICAgICBRX0QoUVdheWxhbmRDbGllbnRFeHRl bnNpb24pOworLSAgICBkLT53YXlsYW5kSW50ZWdyYXRpb24tPmRpc3BsYXkoKS0+YWRkUmVnaXN0 cnlMaXN0ZW5lcigmUVdheWxhbmRDbGllbnRFeHRlbnNpb25Qcml2YXRlOjpoYW5kbGVSZWdpc3Ry eUdsb2JhbCwgdGhpcyk7CisrICAgIGlmICghZC0+cmVnaXN0ZXJlZCkgeworKyAgICAgICAgZC0+ d2F5bGFuZEludGVncmF0aW9uLT5kaXNwbGF5KCktPmFkZFJlZ2lzdHJ5TGlzdGVuZXIoJlFXYXls YW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWwsIHRoaXMpOwor KyAgICAgICAgZC0+cmVnaXN0ZXJlZCA9IHRydWU7CisrICAgIH0KKyB9CisgCisgUVdheWxhbmRD bGllbnRFeHRlbnNpb246OlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKGNvbnN0IGludCB2ZXIpCitA QCAtODgsNiArOTEsMTMgQEAgUVdheWxhbmRDbGllbnRFeHRlbnNpb246OlFXYXlsYW5kQ2xpZW50 RXh0ZW5zaW9uKGNvbnN0IGludCB2ZXIpCisgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2Qo dGhpcywgImFkZFJlZ2lzdHJ5TGlzdGVuZXIiLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgfQor IAorK1FXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjp+UVdheWxhbmRDbGllbnRFeHRlbnNpb24oKQor K3sKKysgICAgUV9EKFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKTsKKysgICAgaWYgKGQtPnJlZ2lz dGVyZWQgJiYgIVFDb3JlQXBwbGljYXRpb246OmNsb3NpbmdEb3duKCkpCisrICAgICAgICBkLT53 YXlsYW5kSW50ZWdyYXRpb24tPmRpc3BsYXkoKS0+cmVtb3ZlTGlzdGVuZXIoJlFXYXlsYW5kQ2xp ZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWwsIHRoaXMpOworK30KKysK KyBRdFdheWxhbmRDbGllbnQ6OlFXYXlsYW5kSW50ZWdyYXRpb24gKlFXYXlsYW5kQ2xpZW50RXh0 ZW5zaW9uOjppbnRlZ3JhdGlvbigpIGNvbnN0CisgeworICAgICBRX0QoY29uc3QgUVdheWxhbmRD bGllbnRFeHRlbnNpb24pOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2Jh bC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFs L3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmgKK2luZGV4IDk4MjcyZTU3Li41YmQyODM5OCAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVu c2lvbi5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRl eHRlbnNpb24uaAorQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBP UlQgUVdheWxhbmRDbGllbnRFeHRlbnNpb24gOiBwdWJsaWMgUU9iamVjdAorICAgICBRX1BST1BF UlRZKGJvb2wgYWN0aXZlIFJFQUQgaXNBY3RpdmUgTk9USUZZIGFjdGl2ZUNoYW5nZWQpCisgcHVi bGljOgorICAgICBRV2F5bGFuZENsaWVudEV4dGVuc2lvbihjb25zdCBpbnQgdmVyc2lvbik7Cisr ICAgIH5RV2F5bGFuZENsaWVudEV4dGVuc2lvbigpOworIAorICAgICBRdFdheWxhbmRDbGllbnQ6 OlFXYXlsYW5kSW50ZWdyYXRpb24gKmludGVncmF0aW9uKCkgY29uc3Q7CisgICAgIGludCB2ZXJz aW9uKCkgY29uc3Q7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3 YXlsYW5kY2xpZW50ZXh0ZW5zaW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9x d2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmgKK2luZGV4IDY5Y2M0NmEwLi45MDkxZWZiZSAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVu c2lvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVu dGV4dGVuc2lvbl9wLmgKK0BAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKKyAgICAgUXRXYXlsYW5k Q2xpZW50OjpRV2F5bGFuZEludGVncmF0aW9uICp3YXlsYW5kSW50ZWdyYXRpb24gPSBudWxscHRy OworICAgICBpbnQgdmVyc2lvbiA9IC0xOworICAgICBib29sIGFjdGl2ZSA9IGZhbHNlOworKyAg ICBib29sIHJlZ2lzdGVyZWQgPSBmYWxzZTsKKyB9OworIAorIGNsYXNzIFFfV0FZTEFORF9DTElF TlRfRVhQT1JUIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uVGVtcGxhdGVQcml2YXRlIDogcHVibGlj IFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRhdGFkZXZpY2UuY3BwCitpbmRleCA3ZTJlMzMwOC4uZTNlNjBlZDUgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2UuY3BwCisrKysgYi9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2UuY3BwCitAQCAtNzIsNiArNzIs OCBAQCBRV2F5bGFuZERhdGFEZXZpY2U6OlFXYXlsYW5kRGF0YURldmljZShRV2F5bGFuZERhdGFE ZXZpY2VNYW5hZ2VyICptYW5hZ2VyLCBRV2F5bAorIAorIFFXYXlsYW5kRGF0YURldmljZTo6flFX YXlsYW5kRGF0YURldmljZSgpCisgeworKyAgICBpZiAod2xfZGF0YV9kZXZpY2VfZ2V0X3ZlcnNp b24ob2JqZWN0KCkpID49IFdMX0RBVEFfREVWSUNFX1JFTEVBU0VfU0lOQ0VfVkVSU0lPTikKKysg ICAgICAgIHJlbGVhc2UoKTsKKyB9CisgCisgUVdheWxhbmREYXRhT2ZmZXIgKlFXYXlsYW5kRGF0 YURldmljZTo6c2VsZWN0aW9uT2ZmZXIoKSBjb25zdAorQEAgLTExMCw3ICsxMTIsNyBAQCBRV2F5 bGFuZERhdGFPZmZlciAqUVdheWxhbmREYXRhRGV2aWNlOjpkcmFnT2ZmZXIoKSBjb25zdAorICAg ICByZXR1cm4gbV9kcmFnT2ZmZXIuZGF0YSgpOworIH0KKyAKKy1ib29sIFFXYXlsYW5kRGF0YURl dmljZTo6c3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFFXYXlsYW5kV2luZG93ICppY29u KQorK2Jvb2wgUVdheWxhbmREYXRhRGV2aWNlOjpzdGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0 YSwgUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIFFXYXlsYW5kV2luZG93ICppY29u KQorIHsKKyAgICAgYXV0byAqc2VhdCA9IG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCk7 CisgICAgIGF1dG8gKm9yaWdpbiA9IHNlYXQtPnBvaW50ZXJGb2N1cygpOworQEAgLTEyMyw3ICsx MjUsMjggQEAgYm9vbCBRV2F5bGFuZERhdGFEZXZpY2U6OnN0YXJ0RHJhZyhRTWltZURhdGEgKm1p bWVEYXRhLCBRV2F5bGFuZFdpbmRvdyAqaWNvbikKKyAgICAgfQorIAorICAgICBtX2RyYWdTb3Vy Y2UucmVzZXQobmV3IFFXYXlsYW5kRGF0YVNvdXJjZShtX2Rpc3BsYXktPmRuZFNlbGVjdGlvbkhh bmRsZXIoKSwgbWltZURhdGEpKTsKKysKKysgICAgaWYgKHdsX2RhdGFfZGV2aWNlX2dldF92ZXJz aW9uKG9iamVjdCgpKSA+PSAzKQorKyAgICAgICAgbV9kcmFnU291cmNlLT5zZXRfYWN0aW9ucyhk cm9wQWN0aW9uc1RvV2woc3VwcG9ydGVkQWN0aW9ucykpOworKworICAgICBjb25uZWN0KG1fZHJh Z1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6OmNhbmNlbGxlZCwgdGhpcywgJlFX YXlsYW5kRGF0YURldmljZTo6ZHJhZ1NvdXJjZUNhbmNlbGxlZCk7CisrICAgIGNvbm5lY3QobV9k cmFnU291cmNlLmRhdGEoKSwgJlFXYXlsYW5kRGF0YVNvdXJjZTo6ZG5kUmVzcG9uc2VVcGRhdGVk LCB0aGlzLCBbdGhpc10oYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uKSB7Cisr ICAgICAgICAgICAgYXV0byBkcmFnID0gc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlB cHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKTsKKysgICAg ICAgICAgICAvLyBpbiBvbGQgdmVyc2lvbnMgZHJvcCBhY3Rpb24gaXMgbm90IHNldCwgc28gd2Ug Z3Vlc3MKKysgICAgICAgICAgICBpZiAod2xfZGF0YV9zb3VyY2VfZ2V0X3ZlcnNpb24obV9kcmFn U291cmNlLT5vYmplY3QoKSkgPCAzKSB7CisrICAgICAgICAgICAgICAgIGRyYWctPnNldFJlc3Bv bnNlKGFjY2VwdGVkKTsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICBR UGxhdGZvcm1Ecm9wUXRSZXNwb25zZSByZXNwb25zZShhY2NlcHRlZCwgYWN0aW9uKTsKKysgICAg ICAgICAgICAgICAgZHJhZy0+c2V0UmVzcG9uc2UocmVzcG9uc2UpOworKyAgICAgICAgICAgIH0K KysgICAgfSk7CisrICAgIGNvbm5lY3QobV9kcmFnU291cmNlLmRhdGEoKSwgJlFXYXlsYW5kRGF0 YVNvdXJjZTo6ZG5kRHJvcHBlZCwgdGhpcywgW10oYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BBY3Rp b24gYWN0aW9uKSB7CisrICAgICAgICBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSByZXNwb25zZShh Y2NlcHRlZCwgYWN0aW9uKTsKKysgICAgICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihR R3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPnNl dERyb3BSZXNwb25zZShyZXNwb25zZSk7CisrICAgIH0pOworKyAgICBjb25uZWN0KG1fZHJhZ1Nv dXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6OmZpbmlzaGVkLCB0aGlzLCBbXSgpIHsK KysgICAgICAgIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2 YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSktPmZpbmlzaERyYWcoKTsKKysgICAg fSk7CisgCisgICAgIHN0YXJ0X2RyYWcobV9kcmFnU291cmNlLT5vYmplY3QoKSwgb3JpZ2luLT53 bFN1cmZhY2UoKSwgaWNvbi0+d2xTdXJmYWNlKCksIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2 aWNlKCktPnNlcmlhbCgpKTsKKyAgICAgcmV0dXJuIHRydWU7CitAQCAtMTUyLDcgKzE3NSw3IEBA IHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9kcm9wKCkKKyAgICAgICAgIHN1 cHBvcnRlZEFjdGlvbnMgPSBkcmFnLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxzZSBp ZiAobV9kcmFnT2ZmZXIpIHsKKyAgICAgICAgIGRyYWdEYXRhID0gbV9kcmFnT2ZmZXItPm1pbWVE YXRhKCk7CistICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkNvcHlBY3Rpb24gfCBRdDo6 TW92ZUFjdGlvbiB8IFF0OjpMaW5rQWN0aW9uOworKyAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9 IG1fZHJhZ09mZmVyLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxzZSB7CisgICAgICAg ICByZXR1cm47CisgICAgIH0KK0BAIC0xNjIsNyArMTg1LDExIEBAIHZvaWQgUVdheWxhbmREYXRh RGV2aWNlOjpkYXRhX2RldmljZV9kcm9wKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFHdWlBcHBsaWNh dGlvbjo6a2V5Ym9hcmRNb2RpZmllcnMoKSk7CisgCisgICAgIGlmIChkcmFnKSB7CistICAgICAg ICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxh dGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5maW5pc2hEcmFnKHJlc3BvbnNlKTsKKysgICAg ICAgIGF1dG8gZHJhZyA9ICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0 aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpOworKyAgICAgICAgZHJh Zy0+c2V0RHJvcFJlc3BvbnNlKHJlc3BvbnNlKTsKKysgICAgICAgIGRyYWctPmZpbmlzaERyYWco KTsKKysgICAgfSBlbHNlIGlmIChtX2RyYWdPZmZlcikgeworKyAgICAgICAgbV9kcmFnT2ZmZXIt PmZpbmlzaCgpOworICAgICB9CisgfQorIAorQEAgLTE4Niw3ICsyMTMsNyBAQCB2b2lkIFFXYXls YW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfZW50ZXIodWludDMyX3Qgc2VyaWFsLCB3bF9zdXJm YWNlICpzdXJmYWNlLAorICAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IGRyYWctPnN1cHBvcnRl ZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNlIGlmIChtX2RyYWdPZmZlcikgeworICAgICAgICAgZHJh Z0RhdGEgPSBtX2RyYWdPZmZlci0+bWltZURhdGEoKTsKKy0gICAgICAgIHN1cHBvcnRlZEFjdGlv bnMgPSBRdDo6Q29weUFjdGlvbiB8IFF0OjpNb3ZlQWN0aW9uIHwgUXQ6OkxpbmtBY3Rpb247Cisr ICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gbV9kcmFnT2ZmZXItPnN1cHBvcnRlZEFjdGlvbnMo KTsKKyAgICAgfQorIAorICAgICBjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVzcG9u c2UgPSBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVEcmFnKG1fZHJhZ1dpbmRvdywgZHJh Z0RhdGEsIG1fZHJhZ1BvaW50LCBzdXBwb3J0ZWRBY3Rpb25zLAorQEAgLTE5NywxMSArMjI0LDcg QEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX2VudGVyKHVpbnQzMl90IHNl cmlhbCwgd2xfc3VyZmFjZSAqc3VyZmFjZSwKKyAgICAgICAgIHN0YXRpY19jYXN0PFFXYXlsYW5k RHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRy YWcoKSktPnNldFJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgfQorIAorLSAgICBpZiAocmVzcG9u c2UuaXNBY2NlcHRlZCgpKSB7CistICAgICAgICB3bF9kYXRhX29mZmVyX2FjY2VwdChtX2RyYWdP ZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG1fZHJhZ09mZmVyLT5maXJzdEZvcm1hdCgp LnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIHdsX2RhdGFf b2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVyLT5vYmplY3QoKSwgbV9lbnRlclNlcmlhbCwgbnVsbHB0 cik7CistICAgIH0KKysgICAgc2VuZFJlc3BvbnNlKHN1cHBvcnRlZEFjdGlvbnMsIHJlc3BvbnNl KTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX2xlYXZlKCkK K0BAIC0yMzUsMTAgKzI1OCwxMCBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZp Y2VfbW90aW9uKHVpbnQzMl90IHRpbWUsIHdsX2ZpeGVkX3QgeCwgd2xfZml4ZQorICAgICAgICAg c3VwcG9ydGVkQWN0aW9ucyA9IGRyYWctPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNl IHsKKyAgICAgICAgIGRyYWdEYXRhID0gbV9kcmFnT2ZmZXItPm1pbWVEYXRhKCk7CistICAgICAg ICBzdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkNvcHlBY3Rpb24gfCBRdDo6TW92ZUFjdGlvbiB8IFF0 OjpMaW5rQWN0aW9uOworKyAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IG1fZHJhZ09mZmVyLT5z dXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0KKyAKKy0gICAgUVBsYXRmb3JtRHJhZ1F0UmVzcG9u c2UgcmVzcG9uc2UgPSBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVEcmFnKG1fZHJhZ1dp bmRvdywgZHJhZ0RhdGEsIG1fZHJhZ1BvaW50LCBzdXBwb3J0ZWRBY3Rpb25zLAorKyAgICBjb25z dCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSByZXNwb25zZSA9IFFXaW5kb3dTeXN0ZW1JbnRlcmZh Y2U6OmhhbmRsZURyYWcobV9kcmFnV2luZG93LCBkcmFnRGF0YSwgbV9kcmFnUG9pbnQsIHN1cHBv cnRlZEFjdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRR3VpQXBwbGljYXRpb246Om1vdXNlQnV0 dG9ucygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUUd1aUFwcGxpY2F0aW9uOjprZXlib2FyZE1vZGlm aWVycygpKTsKKyAKK0BAIC0yNDYsMTEgKzI2OSw3IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNl OjpkYXRhX2RldmljZV9tb3Rpb24odWludDMyX3QgdGltZSwgd2xfZml4ZWRfdCB4LCB3bF9maXhl CisgICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJp dmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5zZXRSZXNwb25zZShyZXNwb25z ZSk7CisgICAgIH0KKyAKKy0gICAgaWYgKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSkgeworLSAgICAg ICAgd2xfZGF0YV9vZmZlcl9hY2NlcHQobV9kcmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVyU2Vy aWFsLCBtX2RyYWdPZmZlci0+Zmlyc3RGb3JtYXQoKS50b1V0ZjgoKS5jb25zdERhdGEoKSk7Cist ICAgIH0gZWxzZSB7CistICAgICAgICB3bF9kYXRhX29mZmVyX2FjY2VwdChtX2RyYWdPZmZlci0+ b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG51bGxwdHIpOworLSAgICB9CisrICAgIHNlbmRSZXNw b25zZShzdXBwb3J0ZWRBY3Rpb25zLCByZXNwb25zZSk7CisgfQorICNlbmRpZiAvLyBRVF9DT05G SUcoZHJhZ2FuZGRyb3ApCisgCitAQCAtMjc3LDE0ICsyOTYsMTAgQEAgdm9pZCBRV2F5bGFuZERh dGFEZXZpY2U6OnNlbGVjdGlvblNvdXJjZUNhbmNlbGxlZCgpCisgI2lmIFFUX0NPTkZJRyhkcmFn YW5kZHJvcCkKKyB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZHJhZ1NvdXJjZUNhbmNlbGxlZCgp CisgeworKyAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJp dmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5maW5pc2hEcmFnKCk7CisgICAg IG1fZHJhZ1NvdXJjZS5yZXNldCgpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kRGF0YURldmljZTo6 ZHJhZ1NvdXJjZVRhcmdldENoYW5nZWQoY29uc3QgUVN0cmluZyAmbWltZVR5cGUpCisteworLSAg ICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxh dGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT51cGRhdGVUYXJnZXQobWltZVR5cGUpOworLX0K Ky0KKyBRUG9pbnQgUVdheWxhbmREYXRhRGV2aWNlOjpjYWxjdWxhdGVEcmFnUG9zaXRpb24oaW50 IHgsIGludCB5LCBRV2luZG93ICp3bmQpIGNvbnN0CisgeworICAgICBRUG9pbnQgcG50KHdsX2Zp eGVkX3RvX2ludCh4KSwgd2xfZml4ZWRfdG9faW50KHkpKTsKK0BAIC0yOTcsNiArMzEyLDMzIEBA IFFQb2ludCBRV2F5bGFuZERhdGFEZXZpY2U6OmNhbGN1bGF0ZURyYWdQb3NpdGlvbihpbnQgeCwg aW50IHksIFFXaW5kb3cgKnduZCkgY29uCisgICAgIH0KKyAgICAgcmV0dXJuIHBudDsKKyB9Cisr Cisrdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OnNlbmRSZXNwb25zZShRdDo6RHJvcEFjdGlvbnMg c3VwcG9ydGVkQWN0aW9ucywgY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNl KQorK3sKKysgICAgaWYgKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSkgeworKyAgICAgICAgaWYgKHds X2RhdGFfZGV2aWNlX2dldF92ZXJzaW9uKG9iamVjdCgpKSA+PSAzKQorKyAgICAgICAgICAgIG1f ZHJhZ09mZmVyLT5zZXRfYWN0aW9ucyhkcm9wQWN0aW9uc1RvV2woc3VwcG9ydGVkQWN0aW9ucyks IGRyb3BBY3Rpb25zVG9XbChyZXNwb25zZS5hY2NlcHRlZEFjdGlvbigpKSk7CisrCisrICAgICAg ICBtX2RyYWdPZmZlci0+YWNjZXB0KG1fZW50ZXJTZXJpYWwsIG1fZHJhZ09mZmVyLT5maXJzdEZv cm1hdCgpKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIG1fZHJhZ09mZmVyLT5hY2NlcHQobV9l bnRlclNlcmlhbCwgUVN0cmluZygpKTsKKysgICAgfQorK30KKysKKytpbnQgUVdheWxhbmREYXRh RGV2aWNlOjpkcm9wQWN0aW9uc1RvV2woUXQ6OkRyb3BBY3Rpb25zIGFjdGlvbnMpCisreworKwor KyAgICBpbnQgd2xBY3Rpb25zID0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX05P TkU7CisrICAgIGlmIChhY3Rpb25zICYgUXQ6OkNvcHlBY3Rpb24pCisrICAgICAgICB3bEFjdGlv bnMgfD0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX0NPUFk7CisrICAgIGlmIChh Y3Rpb25zICYgKFF0OjpNb3ZlQWN0aW9uIHwgUXQ6OlRhcmdldE1vdmVBY3Rpb24pKQorKyAgICAg ICAgd2xBY3Rpb25zIHw9IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9NT1ZFOwor KworKyAgICAvLyB3YXlsYW5kIGRvZXMgbm90IHN1cHBvcnQgTGlua0FjdGlvbiBhdCB0aGUgdGlt ZSBvZiB3cml0aW5nCisrICAgIHJldHVybiB3bEFjdGlvbnM7CisrfQorKworKworICNlbmRpZiAv LyBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgCisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZV9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRhdGFkZXZpY2VfcC5oCitpbmRleCAxNmMzYWQyOC4uODAxZGNjMmMgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5oCisrKysgYi9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5oCitAQCAtNjQsNiArNjQs NyBAQCBRVF9SRVFVSVJFX0NPTkZJRyh3YXlsYW5kX2RhdGFkZXZpY2UpOworIFFUX0JFR0lOX05B TUVTUEFDRQorIAorIGNsYXNzIFFNaW1lRGF0YTsKKytjbGFzcyBRUGxhdGZvcm1EcmFnUXRSZXNw b25zZTsKKyBjbGFzcyBRV2luZG93OworIAorIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQgewor QEAgLTg5LDcgKzkwLDcgQEAgcHVibGljOgorIAorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3Ap CisgICAgIFFXYXlsYW5kRGF0YU9mZmVyICpkcmFnT2ZmZXIoKSBjb25zdDsKKy0gICAgYm9vbCBz dGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUVdheWxhbmRXaW5kb3cgKmljb24pOworKyAg ICBib29sIHN0YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVEYXRhLCBRdDo6RHJvcEFjdGlvbnMgc3Vw cG9ydGVkQWN0aW9ucywgUVdheWxhbmRXaW5kb3cgKmljb24pOworICAgICB2b2lkIGNhbmNlbERy YWcoKTsKKyAjZW5kaWYKKyAKK0BAIC0xMDksMTMgKzExMCwxNiBAQCBwcml2YXRlIFFfU0xPVFM6 CisgCisgI2lmIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAgICAgdm9pZCBkcmFnU291cmNlQ2Fu Y2VsbGVkKCk7CistICAgIHZvaWQgZHJhZ1NvdXJjZVRhcmdldENoYW5nZWQoY29uc3QgUVN0cmlu ZyAmbWltZVR5cGUpOworICNlbmRpZgorIAorIHByaXZhdGU6CisgI2lmIFFUX0NPTkZJRyhkcmFn YW5kZHJvcCkKKyAgICAgUVBvaW50IGNhbGN1bGF0ZURyYWdQb3NpdGlvbihpbnQgeCwgaW50IHks IFFXaW5kb3cgKnduZCkgY29uc3Q7CisgI2VuZGlmCisrICAgIHZvaWQgc2VuZFJlc3BvbnNlKFF0 OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25zLCBjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNw b25zZSAmcmVzcG9uc2UpOworKworKyAgICBzdGF0aWMgaW50IGRyb3BBY3Rpb25zVG9XbChRdDo6 RHJvcEFjdGlvbnMgZHJvcEFjdGlvbnMpOworKworIAorICAgICBRV2F5bGFuZERpc3BsYXkgKm1f ZGlzcGxheSA9IG51bGxwdHI7CisgICAgIFFXYXlsYW5kSW5wdXREZXZpY2UgKm1faW5wdXREZXZp Y2UgPSBudWxscHRyOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k ZGF0YWRldmljZW1hbmFnZXIuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRh ZGV2aWNlbWFuYWdlci5jcHAKK2luZGV4IDM1ZDY3MzA3Li42ZGM0Zjc3ZiAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwCisrKysg Yi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyLmNwcAorQEAg LTUwLDggKzUwLDggQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgbmFtZXNwYWNlIFF0V2F5bGFu ZENsaWVudCB7CisgCistUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcjo6UVdheWxhbmREYXRhRGV2 aWNlTWFuYWdlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIHVpbnQzMl90IGlkKQorLSAgICA6 IHdsX2RhdGFfZGV2aWNlX21hbmFnZXIoZGlzcGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIDEpCisr UVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcjo6UVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcihRV2F5 bGFuZERpc3BsYXkgKmRpc3BsYXksIGludCB2ZXJzaW9uLCB1aW50MzJfdCBpZCkKKysgICAgOiB3 bF9kYXRhX2RldmljZV9tYW5hZ2VyKGRpc3BsYXktPndsX3JlZ2lzdHJ5KCksIGlkLCBxTWluKHZl cnNpb24sIDMpKQorICAgICAsIG1fZGlzcGxheShkaXNwbGF5KQorIHsKKyAgICAgLy8gQ3JlYXRl IHRyYW5zZmVyIGRldmljZXMgZm9yIGFsbCBpbnB1dCBkZXZpY2VzLgorZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXJfcC5oIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlcl9wLmgKK2luZGV4IGJkMDVj MGZiLi41MTBkOWJlNCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k ZGF0YWRldmljZW1hbmFnZXJfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaAorQEAgLTY4LDcgKzY4LDcgQEAgY2xhc3MgUVdheWxhbmRJ bnB1dERldmljZTsKKyBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZERhdGFE ZXZpY2VNYW5hZ2VyIDogcHVibGljIFF0V2F5bGFuZDo6d2xfZGF0YV9kZXZpY2VfbWFuYWdlcgor IHsKKyBwdWJsaWM6CistICAgIFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNw bGF5ICpkaXNwbGF5LCB1aW50MzJfdCBpZCk7CisrICAgIFFXYXlsYW5kRGF0YURldmljZU1hbmFn ZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCBpbnQgdmVyc2lvbiwgdWludDMyX3QgaWQpOwor ICAgICB+UVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcigpIG92ZXJyaWRlOworIAorICAgICBRV2F5 bGFuZERhdGFEZXZpY2UgKmdldERhdGFEZXZpY2UoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXRE ZXZpY2UpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9m ZmVyLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyLmNwcAoraW5k ZXggMjI5N2U4YTEuLmZlMGVhOGM5IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRkYXRhb2ZmZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGRhdGFvZmZlci5jcHAKK0BAIC04Miw2ICs4MiwxNSBAQCBRTWltZURhdGEgKlFXYXlsYW5kRGF0 YU9mZmVyOjptaW1lRGF0YSgpCisgICAgIHJldHVybiBtX21pbWVEYXRhLmRhdGEoKTsKKyB9Cisg CisrUXQ6OkRyb3BBY3Rpb25zIFFXYXlsYW5kRGF0YU9mZmVyOjpzdXBwb3J0ZWRBY3Rpb25zKCkg Y29uc3QKKyt7CisrICAgIGlmICh3bF9kYXRhX29mZmVyX2dldF92ZXJzaW9uKGNvbnN0X2Nhc3Q8 Ojp3bF9kYXRhX29mZmVyKj4ob2JqZWN0KCkpKSA8IDMpIHsKKysgICAgICAgIHJldHVybiBRdDo6 TW92ZUFjdGlvbiB8IFF0OjpDb3B5QWN0aW9uOworKyAgICB9CisrCisrICAgIHJldHVybiBtX3N1 cHBvcnRlZEFjdGlvbnM7CisrfQorKworIHZvaWQgUVdheWxhbmREYXRhT2ZmZXI6OnN0YXJ0UmVj ZWl2aW5nKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlLCBpbnQgZmQpCisgeworICAgICByZWNlaXZl KG1pbWVUeXBlLCBmZCk7CitAQCAtOTMsNiArMTAyLDIyIEBAIHZvaWQgUVdheWxhbmREYXRhT2Zm ZXI6OmRhdGFfb2ZmZXJfb2ZmZXIoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKQorICAgICBtX21p bWVEYXRhLT5hcHBlbmRGb3JtYXQobWltZV90eXBlKTsKKyB9CisgCisrdm9pZCBRV2F5bGFuZERh dGFPZmZlcjo6ZGF0YV9vZmZlcl9hY3Rpb24odWludDMyX3QgZG5kX2FjdGlvbikKKyt7CisrICAg IFFfVU5VU0VEKGRuZF9hY3Rpb24pOworKyAgICAvLyBUaGlzIGlzIHRoZSBjb21wb3NpdG9yIHRl bGxpbmcgdGhlIGRyYWcgdGFyZ2V0IHdoYXQgYWN0aW9uIGl0IHNob3VsZCBwZXJmb3JtCisrICAg IC8vIEl0IGRvZXMgbm90IG1hcCBuaWNlbHkgaW50byBRdCBmaW5hbCBkcm9wIHNlbWFudGljcywg b3RoZXIgdGhhbiBwcmV0ZW5kaW5nIHRoZXJlIGlzIG9ubHkgb25lIHN1cHBvcnRlZCBhY3Rpb24/ CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRhT2ZmZXI6OmRhdGFfb2ZmZXJfc291cmNlX2FjdGlv bnModWludDMyX3Qgc291cmNlX2FjdGlvbnMpCisreworKyAgICBtX3N1cHBvcnRlZEFjdGlvbnMg PSBRdDo6RHJvcEFjdGlvbnMoKTsKKysgICAgaWYgKHNvdXJjZV9hY3Rpb25zICYgV0xfREFUQV9E RVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX01PVkUpCisrICAgICAgICBtX3N1cHBvcnRlZEFjdGlv bnMgfD0gUXQ6Ok1vdmVBY3Rpb247CisrICAgIGlmIChzb3VyY2VfYWN0aW9ucyAmIFdMX0RBVEFf REVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9DT1BZKQorKyAgICAgICAgbV9zdXBwb3J0ZWRBY3Rp b25zIHw9IFF0OjpDb3B5QWN0aW9uOworK30KKysKKyBRV2F5bGFuZE1pbWVEYXRhOjpRV2F5bGFu ZE1pbWVEYXRhKFFXYXlsYW5kQWJzdHJhY3REYXRhT2ZmZXIgKmRhdGFPZmZlcikKKyAgICAgOiBt X2RhdGFPZmZlcihkYXRhT2ZmZXIpCisgeworQEAgLTE2MywxNyArMTg4LDE4IEBAIFFWYXJpYW50 IFFXYXlsYW5kTWltZURhdGE6OnJldHJpZXZlRGF0YV9zeXMoY29uc3QgUVN0cmluZyAmbWltZVR5 cGUsIFFWYXJpYW50OjpUCisgCisgaW50IFFXYXlsYW5kTWltZURhdGE6OnJlYWREYXRhKGludCBm ZCwgUUJ5dGVBcnJheSAmZGF0YSkgY29uc3QKKyB7CistICAgIGZkX3NldCByZWFkc2V0OworLSAg ICBGRF9aRVJPKCZyZWFkc2V0KTsKKy0gICAgRkRfU0VUKGZkLCAmcmVhZHNldCk7CistICAgIHN0 cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CisrICAgIHN0cnVjdCBwb2xsZmQgcmVhZHNldDsKKysgICAg cmVhZHNldC5mZCA9IGZkOworKyAgICByZWFkc2V0LmV2ZW50cyA9IFBPTExJTjsKKysgICAgc3Ry dWN0IHRpbWVzcGVjIHRpbWVvdXQ7CisgICAgIHRpbWVvdXQudHZfc2VjID0gMTsKKy0gICAgdGlt ZW91dC50dl91c2VjID0gMDsKKysgICAgdGltZW91dC50dl9uc2VjID0gMDsKKysKKyAKKyAgICAg UV9GT1JFVkVSIHsKKy0gICAgICAgIGludCByZWFkeSA9IHNlbGVjdChGRF9TRVRTSVpFLCAmcmVh ZHNldCwgbnVsbHB0ciwgbnVsbHB0ciwgJnRpbWVvdXQpOworKyAgICAgICAgaW50IHJlYWR5ID0g cXRfc2FmZV9wb2xsKCZyZWFkc2V0LCAxLCAmdGltZW91dCk7CisgICAgICAgICBpZiAocmVhZHkg PCAwKSB7CistICAgICAgICAgICAgcVdhcm5pbmcoKSA8PCAiUVdheWxhbmREYXRhT2ZmZXI6IHNl bGVjdCgpIGZhaWxlZCI7CisrICAgICAgICAgICAgcVdhcm5pbmcoKSA8PCAiUVdheWxhbmREYXRh T2ZmZXI6IHF0X3NhZmVfcG9sbCgpIGZhaWxlZCI7CisgICAgICAgICAgICAgcmV0dXJuIC0xOwor ICAgICAgICAgfSBlbHNlIGlmIChyZWFkeSA9PSAwKSB7CisgICAgICAgICAgICAgcVdhcm5pbmco IlFXYXlsYW5kRGF0YU9mZmVyOiB0aW1lb3V0IHJlYWRpbmcgZnJvbSBwaXBlIik7CitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5oIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5oCitpbmRleCA5Y2YxNDgzYy4uNmY2 NjczOTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZl cl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyX3AuaAor QEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgorICAgICBleHBsaWNpdCBRV2F5bGFuZERhdGFPZmZl cihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksIHN0cnVjdCA6OndsX2RhdGFfb2ZmZXIgKm9mZmVy KTsKKyAgICAgflFXYXlsYW5kRGF0YU9mZmVyKCkgb3ZlcnJpZGU7CisgICAgIFFNaW1lRGF0YSAq bWltZURhdGEoKSBvdmVycmlkZTsKKysgICAgUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlv bnMoKSBjb25zdDsKKyAKKyAgICAgUVN0cmluZyBmaXJzdEZvcm1hdCgpIGNvbnN0OworIAorQEAg LTg5LDEwICs5MCwxMyBAQCBwdWJsaWM6CisgCisgcHJvdGVjdGVkOgorICAgICB2b2lkIGRhdGFf b2ZmZXJfb2ZmZXIoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKSBvdmVycmlkZTsKKysgICAgdm9p ZCBkYXRhX29mZmVyX3NvdXJjZV9hY3Rpb25zKHVpbnQzMl90IHNvdXJjZV9hY3Rpb25zKSBvdmVy cmlkZTsKKysgICAgdm9pZCBkYXRhX29mZmVyX2FjdGlvbih1aW50MzJfdCBkbmRfYWN0aW9uKSBv dmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFuZERpc3BsYXkgKm1fZGlzcGxheSA9 IG51bGxwdHI7CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kTWltZURhdGE+IG1fbWltZURh dGE7CisrICAgIFF0OjpEcm9wQWN0aW9ucyBtX3N1cHBvcnRlZEFjdGlvbnM7CisgfTsKKyAKKyAK K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2UuY3Bw IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlLmNwcAoraW5kZXggZjQ1 MTIyZmIuLjU1OTljYmQ0IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRkYXRhc291cmNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRh c291cmNlLmNwcAorQEAgLTEwMSw3ICsxMDEsMzIgQEAgdm9pZCBRV2F5bGFuZERhdGFTb3VyY2U6 OmRhdGFfc291cmNlX3NlbmQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlLCBpbnQzMl90IGZkKQor IAorIHZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV90YXJnZXQoY29uc3QgUVN0 cmluZyAmbWltZV90eXBlKQorIHsKKy0gICAgUV9FTUlUIHRhcmdldENoYW5nZWQobWltZV90eXBl KTsKKysgICAgbV9hY2NlcHRlZCA9ICFtaW1lX3R5cGUuaXNFbXB0eSgpOworKyAgICBRX0VNSVQg ZG5kUmVzcG9uc2VVcGRhdGVkKG1fYWNjZXB0ZWQsIG1fZHJvcEFjdGlvbik7CisrfQorKworK3Zv aWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV9hY3Rpb24odWludDMyX3QgYWN0aW9u KQorK3sKKysgICAgUXQ6OkRyb3BBY3Rpb24gcXRBY3Rpb24gPSBRdDo6SWdub3JlQWN0aW9uOwor KworKyAgICBpZiAoYWN0aW9uID09IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9N T1ZFKQorKyAgICAgICAgcXRBY3Rpb24gPSBRdDo6TW92ZUFjdGlvbjsKKysgICAgZWxzZSBpZiAo YWN0aW9uID09IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9DT1BZKQorKyAgICAg ICAgcXRBY3Rpb24gPSBRdDo6Q29weUFjdGlvbjsKKysKKysgICAgbV9kcm9wQWN0aW9uID0gcXRB Y3Rpb247CisrICAgIFFfRU1JVCBkbmRSZXNwb25zZVVwZGF0ZWQobV9hY2NlcHRlZCwgbV9kcm9w QWN0aW9uKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX2Ru ZF9maW5pc2hlZCgpCisreworKyAgICBRX0VNSVQgZmluaXNoZWQoKTsKKyt9CisrCisrdm9pZCBR V2F5bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX2RuZF9kcm9wX3BlcmZvcm1lZCgpCisrewor KworKyAgICBRX0VNSVQgZG5kRHJvcHBlZChtX2FjY2VwdGVkLCBtX2Ryb3BBY3Rpb24pOworIH0K KyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291 cmNlX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgKK2lu ZGV4IDI1YWZmZjc5Li45NmYwN2JjMyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kZGF0YXNvdXJjZV9wLmgKK0BAIC03NywxNyArNzcsMjUgQEAgcHVibGljOgorICAgICBRTWlt ZURhdGEgKm1pbWVEYXRhKCkgY29uc3Q7CisgCisgUV9TSUdOQUxTOgorLSAgICB2b2lkIHRhcmdl dENoYW5nZWQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKTsKKyAgICAgdm9pZCBjYW5jZWxsZWQo KTsKKysgICAgdm9pZCBmaW5pc2hlZCgpOworKworKyAgICB2b2lkIGRuZFJlc3BvbnNlVXBkYXRl ZChib29sIGFjY2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBhY3Rpb24pOworKyAgICB2b2lkIGRuZERy b3BwZWQoYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uKTsKKyAKKyBwcm90ZWN0 ZWQ6CisgICAgIHZvaWQgZGF0YV9zb3VyY2VfY2FuY2VsbGVkKCkgb3ZlcnJpZGU7CisgICAgIHZv aWQgZGF0YV9zb3VyY2Vfc2VuZChjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUsIGludDMyX3QgZmQp IG92ZXJyaWRlOworICAgICB2b2lkIGRhdGFfc291cmNlX3RhcmdldChjb25zdCBRU3RyaW5nICZt aW1lX3R5cGUpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfc291cmNlX2RuZF9kcm9wX3BlcmZv cm1lZCgpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfc291cmNlX2RuZF9maW5pc2hlZCgpIG92 ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfc291cmNlX2FjdGlvbih1aW50MzJfdCBhY3Rpb24pIG92 ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFXYXlsYW5kRGlzcGxheSAqbV9kaXNwbGF5ID0g bnVsbHB0cjsKKyAgICAgUU1pbWVEYXRhICptX21pbWVfZGF0YSA9IG51bGxwdHI7CisrICAgIGJv b2wgbV9hY2NlcHRlZCA9IGZhbHNlOworKyAgICBRdDo6RHJvcEFjdGlvbiBtX2Ryb3BBY3Rpb24g PSBRdDo6SWdub3JlQWN0aW9uOworIH07CisgCisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRpc3BsYXkuY3BwCitpbmRleCBmMTBjMWY3OS4uYzAxZTIzOGIgMTAwNjQ0CistLS0gYS9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwCisrKysgYi9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXkuY3BwCitAQCAtODUsMTAgKzg1LDIwMyBAQAorIAor ICNpbmNsdWRlIDxlcnJuby5oPgorIAorKyNpbmNsdWRlIDx0dXBsZT4gLy8gZm9yIHN0ZDo6dGll CisrCisrc3RhdGljIHZvaWQgY2hlY2tXYXlsYW5kRXJyb3Ioc3RydWN0IHdsX2Rpc3BsYXkgKmRp c3BsYXkpCisreworKyAgICBpbnQgZWNvZGUgPSB3bF9kaXNwbGF5X2dldF9lcnJvcihkaXNwbGF5 KTsKKysgICAgaWYgKChlY29kZSA9PSBFUElQRSB8fCBlY29kZSA9PSBFQ09OTlJFU0VUKSkgewor KyAgICAgICAgLy8gc3BlY2lhbCBjYXNlIHRoaXMgdG8gcHJvdmlkZSBhIG5pY2VyIGVycm9yCisr ICAgICAgICBxV2FybmluZygiVGhlIFdheWxhbmQgY29ubmVjdGlvbiBicm9rZS4gRGlkIHRoZSBX YXlsYW5kIGNvbXBvc2l0b3IgZGllPyIpOworKyAgICB9IGVsc2UgeworKyAgICAgICAgcVdhcm5p bmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24gZXhwZXJpZW5jZWQgYSBmYXRhbCBlcnJvcjogJXMi LCBzdHJlcnJvcihlY29kZSkpOworKyAgICB9CisrICAgIF9leGl0KDEpOworK30KKysKKyBRVF9C RUdJTl9OQU1FU1BBQ0UKKyAKKyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xpZW50IHsKKyAKKytjbGFz cyBFdmVudFRocmVhZCA6IHB1YmxpYyBRVGhyZWFkCisreworKyAgICBRX09CSkVDVAorK3B1Ymxp YzoKKysgICAgZW51bSBPcGVyYXRpbmdNb2RlIHsKKysgICAgICAgIEVtaXRUb0Rpc3BhdGNoLCAv LyBFbWl0IHRoZSBzaWduYWwsIGFsbG93IGRpc3BhdGNoaW5nIGluIGEgZGlmZmVybnQgdGhyZWFk LgorKyAgICAgICAgU2VsZkRpc3BhdGNoLCAvLyBEaXNwYXRjaCB0aGUgZXZlbnRzIGluc2lkZSB0 aGlzIHRocmVhZC4KKysgICAgfTsKKysKKysgICAgRXZlbnRUaHJlYWQoc3RydWN0IHdsX2Rpc3Bs YXkgKiB3bCwgc3RydWN0IHdsX2V2ZW50X3F1ZXVlICogZXZfcXVldWUsCisrICAgICAgICAgICAg ICAgIE9wZXJhdGluZ01vZGUgbW9kZSkKKysgICAgICAgIDogbV9mZCh3bF9kaXNwbGF5X2dldF9m ZCh3bCkpCisrICAgICAgICAsIG1fcGlwZWZkeyAtMSwgLTEgfQorKyAgICAgICAgLCBtX3dsZGlz cGxheSh3bCkKKysgICAgICAgICwgbV93bGV2cXVldWUoZXZfcXVldWUpCisrICAgICAgICAsIG1f bW9kZShtb2RlKQorKyAgICAgICAgLCBtX3JlYWRpbmcodHJ1ZSkKKysgICAgICAgICwgbV9xdWl0 dGluZyhmYWxzZSkKKysgICAgeworKyAgICAgICAgc2V0T2JqZWN0TmFtZShRU3RyaW5nTGl0ZXJh bCgiV2F5bGFuZEV2ZW50VGhyZWFkIikpOworKyAgICB9CisrCisrICAgIHZvaWQgcmVhZEFuZERp c3BhdGNoRXZlbnRzKCkKKysgICAgeworKyAgICAgICAgLyoKKysgICAgICAgICAqIERpc3BhdGNo IHBlbmRpbmcgZXZlbnRzIGFuZCBmbHVzaCB0aGUgcmVxdWVzdHMgYXQgbGVhc3Qgb25jZS4gSWYg dGhlIGV2ZW50IHRocmVhZAorKyAgICAgICAgICogaXMgbm90IHJlYWRpbmcsIHRyeSB0byBjYWxs IF9wcmVwYXJlX3JlYWQoKSB0byBhbGxvdyB0aGUgZXZlbnQgdGhyZWFkIHRvIHBvbGwoKS4KKysg ICAgICAgICAqIElmIHRoYXQgZmFpbHMsIHJlLXRyeSBkaXNwYXRjaCAmIGZsdXNoIGFnYWluIHVu dGlsIF9wcmVwYXJlX3JlYWQoKSBpcyBzdWNjZXNzZnVsLgorKyAgICAgICAgICoKKysgICAgICAg ICAqIFRoaXMgYWxsb3cgYW55IGNhbGwgdG8gcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkgdG8gc3Rh cnQgZXZlbnQgdGhyZWFkJ3MgcG9sbGluZywKKysgICAgICAgICAqIG5vdCBvbmx5IHRoZSBvbmUg aXNzdWVkIGZyb20gZXZlbnQgdGhyZWFkJ3Mgd2FpdEZvclJlYWRpbmcoKSwgd2hpY2ggbWVhbnMg ZnVuY3Rpb25zCisrICAgICAgICAgKiBjYWxsZWQgZnJvbSBkaXNwYXRjaF9wZW5kaW5nKCkgY2Fu IHNhZmVseSBzcGluIGFuIGV2ZW50IGxvb3AuCisrICAgICAgICAgKi8KKysgICAgICAgIGZvciAo OzspIHsKKysgICAgICAgICAgICBpZiAoZGlzcGF0Y2hRdWV1ZVBlbmRpbmcoKSA8IDApIHsKKysg ICAgICAgICAgICAgICAgY2hlY2tXYXlsYW5kRXJyb3IobV93bGRpc3BsYXkpOworKyAgICAgICAg ICAgICAgICByZXR1cm47CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIHdsX2Rpc3Bs YXlfZmx1c2gobV93bGRpc3BsYXkpOworKworKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gY2hl Y2sgaWYgZXZlbnQgdGhyZWFkIGlzIHJlYWRpbmcgZXZlcnkgdGltZSB3ZSBkaXNwYXRjaAorKyAg ICAgICAgICAgIC8vIHNvbWV0aGluZywgYXMgdGhhdCBtYXkgcmVjdXJzaXZlbHkgY2FsbCB0aGlz IGZ1bmN0aW9uLgorKyAgICAgICAgICAgIGlmIChtX3JlYWRpbmcubG9hZEFjcXVpcmUoKSkKKysg ICAgICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICAgICAgaWYgKHByZXBhcmVSZWFkUXVl dWUoKSA9PSAwKSB7CisrICAgICAgICAgICAgICAgIFFNdXRleExvY2tlciBsKCZtX211dGV4KTsK KysgICAgICAgICAgICAgICAgbV9yZWFkaW5nLnN0b3JlUmVsZWFzZSh0cnVlKTsKKysgICAgICAg ICAgICAgICAgbV9jb25kLndha2VPbmUoKTsKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAg ICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIHZvaWQgc3RvcCgpCisrICAg IHsKKysgICAgICAgIC8vIFdlIGhhdmUgdG8gYm90aCB3cml0ZSB0byB0aGUgcGlwZSBhbmQgc2V0 IHRoZSBmbGFnLCBhcyB0aGUgdGhyZWFkIG1heSBiZQorKyAgICAgICAgLy8gZWl0aGVyIGluIHRo ZSBwb2xsKCkgb3Igd2FpdGluZyBmb3IgX3ByZXBhcmVfcmVhZCgpLgorKyAgICAgICAgaWYgKG1f cGlwZWZkWzFdICE9IC0xICYmIHdyaXRlKG1fcGlwZWZkWzFdLCAiXDAiLCAxKSA9PSAtMSkKKysg ICAgICAgICAgICBxV2FybmluZygiRmFpbGVkIHRvIHdyaXRlIHRvIHRoZSBwaXBlOiAlcy4iLCBz dHJlcnJvcihlcnJubykpOworKworKyAgICAgICAgeworKyAgICAgICAgICAgIFFNdXRleExvY2tl ciBsKCZtX211dGV4KTsKKysgICAgICAgICAgICBtX3F1aXR0aW5nID0gdHJ1ZTsKKysgICAgICAg ICAgICBtX2NvbmQud2FrZU9uZSgpOworKyAgICAgICAgfQorKworKyAgICAgICAgd2FpdCgpOwor KyAgICB9CisrCisrUV9TSUdOQUxTOgorKyAgICB2b2lkIG5lZWRSZWFkQW5kRGlzcGF0Y2goKTsK KysKKytwcm90ZWN0ZWQ6CisrICAgIHZvaWQgcnVuKCkgb3ZlcnJpZGUKKysgICAgeworKyAgICAg ICAgLy8gd2UgdXNlIHRoaXMgcGlwZSB0byBtYWtlIHRoZSBsb29wIGV4aXQgb3RoZXJ3aXNlIGlm IHdlIHNpbXBseSB1c2VkIGEgZmxhZyBvbiB0aGUgbG9vcCBjb25kaXRpb24sIGlmIHN0b3AoKSBn ZXRzCisrICAgICAgICAvLyBjYWxsZWQgd2hpbGUgcG9sbCgpIGlzIGJsb2NraW5nIHRoZSB0aHJl YWQgd2lsbCBuZXZlciBxdWl0IHNpbmNlIHRoZXJlIGFyZSBubyB3YXlsYW5kIG1lc3NhZ2VzIGNv bWluZyBhbnltb3JlLgorKyAgICAgICAgc3RydWN0IFBpcGUKKysgICAgICAgIHsKKysgICAgICAg ICAgICBQaXBlKGludCAqZmRzKQorKyAgICAgICAgICAgICAgICA6IGZkcyhmZHMpCisrICAgICAg ICAgICAgeworKyAgICAgICAgICAgICAgICBpZiAocXRfc2FmZV9waXBlKGZkcykgIT0gMCkKKysg ICAgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJQaXBlIGNyZWF0aW9uIGZhaWxlZC4gUXVpdHRp bmcgbWF5IGhhbmcuIik7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH5QaXBlKCkKKysg ICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGlmIChmZHNbMF0gIT0gLTEpIHsKKysgICAg ICAgICAgICAgICAgICAgIGNsb3NlKGZkc1swXSk7CisrICAgICAgICAgICAgICAgICAgICBjbG9z ZShmZHNbMV0pOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKworKyAgICAg ICAgICAgIGludCAqZmRzOworKyAgICAgICAgfSBwaXBlKG1fcGlwZWZkKTsKKysKKysgICAgICAg IC8vIE1ha2UgdGhlIG1haW4gdGhyZWFkIGNhbGwgd2xfcHJlcGFyZV9yZWFkKCksIGRpc3BhdGNo IHRoZSBwZW5kaW5nIG1lc3NhZ2VzIGFuZCBmbHVzaCB0aGUKKysgICAgICAgIC8vIG91dGJvdW5k IG9uZXMuIFdhaXQgdW50aWwgaXQncyBkb25lIGJlZm9yZSBwcm9jZWVkaW5nLCB1bmxlc3Mgd2Un cmUgdG9sZCB0byBxdWl0LgorKyAgICAgICAgd2hpbGUgKHdhaXRGb3JSZWFkaW5nKCkpIHsKKysg ICAgICAgICAgICBwb2xsZmQgZmRzWzJdID0geyB7IG1fZmQsIFBPTExJTiwgMCB9LCB7IG1fcGlw ZWZkWzBdLCBQT0xMSU4sIDAgfSB9OworKyAgICAgICAgICAgIHBvbGwoZmRzLCAyLCAtMSk7Cisr CisrICAgICAgICAgICAgaWYgKGZkc1sxXS5yZXZlbnRzICYgUE9MTElOKSB7CisrICAgICAgICAg ICAgICAgIC8vIHdlIGRvbid0IHJlYWxseSBjYXJlIHRvIHJlYWQgdGhlIGJ5dGUgdGhhdCB3YXMg d3JpdHRlbiBoZXJlIHNpbmNlIHdlJ3JlIGNsb3NpbmcgZG93bgorKyAgICAgICAgICAgICAgICB3 bF9kaXNwbGF5X2NhbmNlbF9yZWFkKG1fd2xkaXNwbGF5KTsKKysgICAgICAgICAgICAgICAgYnJl YWs7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIGlmIChmZHNbMF0ucmV2ZW50cyAm IFBPTExJTikKKysgICAgICAgICAgICAgICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtX3dsZGlz cGxheSk7CisrICAgICAgICAgICAgICAgIC8vIFRoZSBwb2xsbCB3YXMgc3VjY2VzZnVsbCBhbmQg dGhlIGV2ZW50IHRocmVhZCBkaWQgdGhlIHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMoKS4gT24gdGhl IG5leHQgaXRlcmF0aW9uIG9mIHRoZSBsb29wCisrICAgICAgICAgICAgICAgIC8vIHRoZSBldmVu dCBzZW50IHRvIHRoZSBtYWluIHRocmVhZCB3aWxsIGNhdXNlIGl0IHRvIGRpc3BhdGNoIHRoZSBt ZXNzYWdlcyBqdXN0IHJlYWQsIHVubGVzcyB0aGUgbG9vcCBleGl0cyBpbiB3aGljaAorKyAgICAg ICAgICAgICAgICAvLyBjYXNlIHdlIGRvbid0IGNhcmUgYW55bW9yZSBhYm91dCB0aGVtLgorKyAg ICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgd2xfZGlzcGxheV9jYW5jZWxfcmVhZCht X3dsZGlzcGxheSk7CisrICAgICAgICB9CisrICAgIH0KKysKKytwcml2YXRlOgorKyAgICBib29s IHdhaXRGb3JSZWFkaW5nKCkKKysgICAgeworKyAgICAgICAgUV9BU1NFUlQoUVRocmVhZDo6Y3Vy cmVudFRocmVhZCgpID09IHRoaXMpOworKworKyAgICAgICAgbV9yZWFkaW5nLnN0b3JlUmVsZWFz ZShmYWxzZSk7CisrCisrICAgICAgICBpZiAobV9tb2RlID09IFNlbGZEaXNwYXRjaCkgeworKyAg ICAgICAgICAgIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpOworKyAgICAgICAgfSBlbHNlIHsKKysg ICAgICAgICAgICBRX0VNSVQgbmVlZFJlYWRBbmREaXNwYXRjaCgpOworKworKyAgICAgICAgICAg IFFNdXRleExvY2tlciBsb2NrKCZtX211dGV4KTsKKysgICAgICAgICAgICAvLyBtX3JlYWRpbmcg bWlnaHQgYmUgc2V0IGZyb20gb3VyIGVtaXQgb3Igc29tZSBvdGhlciBpbnZvY2F0aW9uIG9mCisr ICAgICAgICAgICAgLy8gcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkuCisrICAgICAgICAgICAgd2hp bGUgKCFtX3JlYWRpbmcubG9hZFJlbGF4ZWQoKSAmJiAhbV9xdWl0dGluZykKKysgICAgICAgICAg ICAgICAgbV9jb25kLndhaXQoJm1fbXV0ZXgpOworKyAgICAgICAgfQorKworKyAgICAgICAgcmV0 dXJuICFtX3F1aXR0aW5nOworKyAgICB9CisrCisrICAgIGludCBkaXNwYXRjaFF1ZXVlUGVuZGlu ZygpCisrICAgIHsKKysgICAgICAgIGlmIChtX3dsZXZxdWV1ZSkKKysgICAgICAgICAgICByZXR1 cm4gd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1fd2xkaXNwbGF5LCBtX3dsZXZx dWV1ZSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlfZGlz cGF0Y2hfcGVuZGluZyhtX3dsZGlzcGxheSk7CisrICAgIH0KKysKKysgICAgaW50IHByZXBhcmVS ZWFkUXVldWUoKQorKyAgICB7CisrICAgICAgICBpZiAobV93bGV2cXVldWUpCisrICAgICAgICAg ICAgcmV0dXJuIHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkX3F1ZXVlKG1fd2xkaXNwbGF5LCBtX3ds ZXZxdWV1ZSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlf cHJlcGFyZV9yZWFkKG1fd2xkaXNwbGF5KTsKKysgICAgfQorKworKyAgICBpbnQgbV9mZDsKKysg ICAgaW50IG1fcGlwZWZkWzJdOworKyAgICB3bF9kaXNwbGF5ICptX3dsZGlzcGxheTsKKysgICAg d2xfZXZlbnRfcXVldWUgKm1fd2xldnF1ZXVlOworKyAgICBPcGVyYXRpbmdNb2RlIG1fbW9kZTsK KysKKysgICAgLyogQ29uY3VycmVuY3kgbm90ZSB3aGVuIG9wZXJhdGluZyBpbiBFbWl0VG9EaXNw YXRjaCBtb2RlOgorKyAgICAgKiBtX3JlYWRpbmcgaXMgc2V0IHRvIGZhbHNlIGluc2lkZSBldmVu dCB0aHJlYWQncyB3YWl0Rm9yUmVhZGluZygpLCBhbmQgaXMKKysgICAgICogc2V0IHRvIHRydWUg aW5zaWRlIG1haW4gdGhyZWFkJ3MgcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkuCisrICAgICAqIFRo ZSBsb2NrIGlzIG5vdCB0YWtlbiB3aGVuIHNldHRpbmcgbV9yZWFkaW5nIHRvIGZhbHNlLCBhcyB0 aGUgbWFpbiB0aHJlYWQKKysgICAgICogaXMgbm90IGFjdGl2ZWx5IHdhaXRpbmcgZm9yIGl0IHRv IHR1cm4gZmFsc2UuIEhvd2V2ZXIsIHRoZSBsb2NrIGlzIHRha2VuCisrICAgICAqIGluc2lkZSBy ZWFkQW5kRGlzcGF0Y2hFdmVudHMoKSBiZWZvcmUgc2V0dGluZyBtX3JlYWRpbmcgdG8gdHJ1ZSwK KysgICAgICogYXMgdGhlIGV2ZW50IHRocmVhZCBpcyBhY3RpdmVseSB3YWl0aW5nIGZvciBpdCB1 bmRlciB0aGUgd2FpdCBjb25kaXRpb24uCisrICAgICAqLworKworKyAgICBRQXRvbWljSW50ZWdl cjxib29sPiBtX3JlYWRpbmc7CisrICAgIGJvb2wgbV9xdWl0dGluZzsKKysgICAgUU11dGV4IG1f bXV0ZXg7CisrICAgIFFXYWl0Q29uZGl0aW9uIG1fY29uZDsKKyt9OworKworIFFfTE9HR0lOR19D QVRFR09SWShsY1FwYVdheWxhbmQsICJxdC5xcGEud2F5bGFuZCIpOyAvLyBmb3IgZ2VuZXJhbCAo dW5jYXRlZ29yaXplZCkgV2F5bGFuZCBwbGF0Zm9ybSBsb2dnaW5nCisgCisgc3RydWN0IHdsX3N1 cmZhY2UgKlFXYXlsYW5kRGlzcGxheTo6Y3JlYXRlU3VyZmFjZSh2b2lkICpoYW5kbGUpCitAQCAt MTU4LDE3ICszNTEsMTYgQEAgUVdheWxhbmREaXNwbGF5OjpRV2F5bGFuZERpc3BsYXkoUVdheWxh bmRJbnRlZ3JhdGlvbiAqd2F5bGFuZEludGVncmF0aW9uKQorICAgICBpZiAoIW1Ya2JDb250ZXh0 KQorICAgICAgICAgcUNXYXJuaW5nKGxjUXBhV2F5bGFuZCwgImZhaWxlZCB0byBjcmVhdGUgeGti IGNvbnRleHQiKTsKKyAjZW5kaWYKKy0KKy0gICAgZm9yY2VSb3VuZFRyaXAoKTsKKy0KKy0gICAg aWYgKCFtV2FpdGluZ1NjcmVlbnMuaXNFbXB0eSgpKSB7CistICAgICAgICAvLyBHaXZlIHdsX291 dHB1dC5kb25lIGFuZCB6eGRnX291dHB1dF92MS5kb25lIGV2ZW50cyBhIGNoYW5jZSB0byBhcnJp dmUKKy0gICAgICAgIGZvcmNlUm91bmRUcmlwKCk7CistICAgIH0KKyB9CisgCisgUVdheWxhbmRE aXNwbGF5Ojp+UVdheWxhbmREaXNwbGF5KHZvaWQpCisgeworKyAgICBpZiAobV9ldmVudFRocmVh ZCkKKysgICAgICAgIG1fZXZlbnRUaHJlYWQtPnN0b3AoKTsKKysKKysgICAgaWYgKG1fZnJhbWVF dmVudFF1ZXVlVGhyZWFkKQorKyAgICAgICAgbV9mcmFtZUV2ZW50UXVldWVUaHJlYWQtPnN0b3Ao KTsKKysKKyAgICAgaWYgKG1TeW5jQ2FsbGJhY2spCisgICAgICAgICB3bF9jYWxsYmFja19kZXN0 cm95KG1TeW5jQ2FsbGJhY2spOworIAorQEAgLTE4Nyw2ICszNzksMjEgQEAgUVdheWxhbmREaXNw bGF5Ojp+UVdheWxhbmREaXNwbGF5KHZvaWQpCisgI2VuZGlmCisgICAgIGlmIChtRGlzcGxheSkK KyAgICAgICAgIHdsX2Rpc3BsYXlfZGlzY29ubmVjdChtRGlzcGxheSk7CisrCisrICAgIGlmICht X2ZyYW1lRXZlbnRRdWV1ZSkKKysgICAgICAgIHdsX2V2ZW50X3F1ZXVlX2Rlc3Ryb3kobV9mcmFt ZUV2ZW50UXVldWUpOworK30KKysKKysvLyBTdGVwcyB3aGljaCBpcyBjYWxsZWQganVzdCBhZnRl ciBjb25zdHJ1Y3Rvci4gVGhpcyBzZXBhcmF0ZXMgcmVnaXN0cnlfZ2xvYmFsKCkgb3V0IG9mIHRo ZSBjb25zdHJ1Y3RvcgorKy8vIHNvIHRoYXQgZmFjdG9yeSBmdW5jdGlvbnMgaW4gaW50ZWdyYXRp b24gY2FuIGJlIG92ZXJyaWRkZW4uCisrdm9pZCBRV2F5bGFuZERpc3BsYXk6OmluaXRpYWxpemUo KQorK3sKKysgICAgZm9yY2VSb3VuZFRyaXAoKTsKKysKKysgICAgaWYgKCFtV2FpdGluZ1NjcmVl bnMuaXNFbXB0eSgpKSB7CisrICAgICAgICAvLyBHaXZlIHdsX291dHB1dC5kb25lIGFuZCB6eGRn X291dHB1dF92MS5kb25lIGV2ZW50cyBhIGNoYW5jZSB0byBhcnJpdmUKKysgICAgICAgIGZvcmNl Um91bmRUcmlwKCk7CisrICAgIH0KKyB9CisgCisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmVuc3Vy ZVNjcmVlbigpCitAQCAtMjAzLDk4ICs0MTAsMzcgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmVu c3VyZVNjcmVlbigpCisgCisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmNoZWNrRXJyb3IoKSBjb25z dAorIHsKKy0gICAgaW50IGVjb2RlID0gd2xfZGlzcGxheV9nZXRfZXJyb3IobURpc3BsYXkpOwor LSAgICBpZiAoKGVjb2RlID09IEVQSVBFIHx8IGVjb2RlID09IEVDT05OUkVTRVQpKSB7CistICAg ICAgICAvLyBzcGVjaWFsIGNhc2UgdGhpcyB0byBwcm92aWRlIGEgbmljZXIgZXJyb3IKKy0gICAg ICAgIHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBjb25uZWN0aW9uIGJyb2tlLiBEaWQgdGhlIFdheWxh bmQgY29tcG9zaXRvciBkaWU/Iik7CistICAgIH0gZWxzZSB7CistICAgICAgICBxV2FybmluZygi VGhlIFdheWxhbmQgY29ubmVjdGlvbiBleHBlcmllbmNlZCBhIGZhdGFsIGVycm9yOiAlcyIsIHN0 cmVycm9yKGVjb2RlKSk7CistICAgIH0KKy0gICAgX2V4aXQoMSk7CisrICAgIGNoZWNrV2F5bGFu ZEVycm9yKG1EaXNwbGF5KTsKKyB9CisgCisrLy8gQ2FsbGVkIGluIG1haW4gdGhyZWFkLCBlaXRo ZXIgZnJvbSBxdWV1ZWQgc2lnbmFsIG9yIGRpcmVjdGx5LgorIHZvaWQgUVdheWxhbmREaXNwbGF5 OjpmbHVzaFJlcXVlc3RzKCkKKyB7CistICAgIGlmICh3bF9kaXNwbGF5X3ByZXBhcmVfcmVhZCht RGlzcGxheSkgPT0gMCkgeworLSAgICAgICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtRGlzcGxh eSk7CistICAgIH0KKy0KKy0gICAgaWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcGVuZGluZyhtRGlz cGxheSkgPCAwKQorLSAgICAgICAgY2hlY2tFcnJvcigpOworLQorLSAgICB7CistICAgICAgICBR UmVhZExvY2tlciBsb2NrZXIoJm1fZnJhbWVRdWV1ZUxvY2spOworLSAgICAgICAgZm9yIChjb25z dCBGcmFtZVF1ZXVlICZxIDogbUV4dGVybmFsUXVldWVzKSB7CistICAgICAgICAgICAgUU11dGV4 TG9ja2VyIGxvY2tlcihxLm11dGV4KTsKKy0gICAgICAgICAgICB3aGlsZSAod2xfZGlzcGxheV9w cmVwYXJlX3JlYWRfcXVldWUobURpc3BsYXksIHEucXVldWUpICE9IDApCistICAgICAgICAgICAg ICAgIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVuZGluZyhtRGlzcGxheSwgcS5xdWV1ZSk7 CistICAgICAgICAgICAgd2xfZGlzcGxheV9yZWFkX2V2ZW50cyhtRGlzcGxheSk7CistICAgICAg ICAgICAgd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBxLnF1ZXVl KTsKKy0gICAgICAgIH0KKy0gICAgfQorLQorLSAgICB3bF9kaXNwbGF5X2ZsdXNoKG1EaXNwbGF5 KTsKKy19CistCistdm9pZCBRV2F5bGFuZERpc3BsYXk6OmJsb2NraW5nUmVhZEV2ZW50cygpCist eworLSAgICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaChtRGlzcGxheSkgPCAwKQorLSAgICAgICAg Y2hlY2tFcnJvcigpOworLX0KKy0KKy12b2lkIFFXYXlsYW5kRGlzcGxheTo6ZGVzdHJveUZyYW1l UXVldWUoY29uc3QgUVdheWxhbmREaXNwbGF5OjpGcmFtZVF1ZXVlICZxKQorLXsKKy0gICAgUVdy aXRlTG9ja2VyIGxvY2tlcigmbV9mcmFtZVF1ZXVlTG9jayk7CistICAgIGF1dG8gaXQgPSBzdGQ6 OmZpbmRfaWYobUV4dGVybmFsUXVldWVzLmJlZ2luKCksCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgbUV4dGVybmFsUXVldWVzLmVuZCgpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg IFsmcV0gKGNvbnN0IFFXYXlsYW5kRGlzcGxheTo6RnJhbWVRdWV1ZSAmb3RoZXIpeyByZXR1cm4g b3RoZXIucXVldWUgPT0gcS5xdWV1ZTsgfSk7CistICAgIFFfQVNTRVJUKGl0ICE9IG1FeHRlcm5h bFF1ZXVlcy5lbmQoKSk7CistICAgIG1FeHRlcm5hbFF1ZXVlcy5lcmFzZShpdCk7CistICAgIGlm IChxLnF1ZXVlICE9IG51bGxwdHIpCistICAgICAgICB3bF9ldmVudF9xdWV1ZV9kZXN0cm95KHEu cXVldWUpOworLSAgICBkZWxldGUgcS5tdXRleDsKKysgICAgbV9ldmVudFRocmVhZC0+cmVhZEFu ZERpc3BhdGNoRXZlbnRzKCk7CisgfQorIAorLVFXYXlsYW5kRGlzcGxheTo6RnJhbWVRdWV1ZSBR V2F5bGFuZERpc3BsYXk6OmNyZWF0ZUZyYW1lUXVldWUoKQorKy8vIFdlIGhhdmUgdG8gd2FpdCB1 bnRpbCB3ZSBoYXZlIGFuIGV2ZW50RGlzcGF0Y2hlciBiZWZvcmUgY3JlYXRpbmcgdGhlIGV2ZW50 VGhyZWFkLAorKy8vIG90aGVyd2lzZSBmb3JjZVJvdW5kVHJpcCgpIG1heSBibG9jayBpbnNpZGUg X2V2ZW50c19yZWFkKCkgYmVjYXVzZSBldmVudFRocmVhZCBpcworKy8vIHBvbGxpbmcuCisrdm9p ZCBRV2F5bGFuZERpc3BsYXk6OmluaXRFdmVudFRocmVhZCgpCisgeworLSAgICBRV3JpdGVMb2Nr ZXIgbG9ja2VyKCZtX2ZyYW1lUXVldWVMb2NrKTsKKy0gICAgRnJhbWVRdWV1ZSBxe2NyZWF0ZUV2 ZW50UXVldWUoKX07CistICAgIG1FeHRlcm5hbFF1ZXVlcy5hcHBlbmQocSk7CistICAgIHJldHVy biBxOworLX0KKysgICAgbV9ldmVudFRocmVhZC5yZXNldCgKKysgICAgICAgICAgICBuZXcgRXZl bnRUaHJlYWQobURpc3BsYXksIC8qIGRlZmF1bHQgcXVldWUgKi8gbnVsbHB0ciwgRXZlbnRUaHJl YWQ6OkVtaXRUb0Rpc3BhdGNoKSk7CisrICAgIGNvbm5lY3QobV9ldmVudFRocmVhZC5nZXQoKSwg JkV2ZW50VGhyZWFkOjpuZWVkUmVhZEFuZERpc3BhdGNoLCB0aGlzLAorKyAgICAgICAgICAgICZR V2F5bGFuZERpc3BsYXk6OmZsdXNoUmVxdWVzdHMsIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKysg ICAgbV9ldmVudFRocmVhZC0+c3RhcnQoKTsKKyAKKy13bF9ldmVudF9xdWV1ZSAqUVdheWxhbmRE aXNwbGF5OjpjcmVhdGVFdmVudFF1ZXVlKCkKKy17CistICAgIHJldHVybiB3bF9kaXNwbGF5X2Ny ZWF0ZV9xdWV1ZShtRGlzcGxheSk7CisrICAgIC8vIHdsX2Rpc3BsYXlfZGlzY29ubmVjdCgpIGZy ZWUgdGhpcy4KKysgICAgbV9mcmFtZUV2ZW50UXVldWUgPSB3bF9kaXNwbGF5X2NyZWF0ZV9xdWV1 ZShtRGlzcGxheSk7CisrICAgIG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkLnJlc2V0KAorKyAgICAg ICAgICAgIG5ldyBFdmVudFRocmVhZChtRGlzcGxheSwgbV9mcmFtZUV2ZW50UXVldWUsIEV2ZW50 VGhyZWFkOjpTZWxmRGlzcGF0Y2gpKTsKKysgICAgbV9mcmFtZUV2ZW50UXVldWVUaHJlYWQtPnN0 YXJ0KCk7CisgfQorIAorLXZvaWQgUVdheWxhbmREaXNwbGF5OjpkaXNwYXRjaFF1ZXVlV2hpbGUo d2xfZXZlbnRfcXVldWUgKnF1ZXVlLCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKCk+IGNvbmRpdGlvbiwg aW50IHRpbWVvdXQpCisrdm9pZCBRV2F5bGFuZERpc3BsYXk6OmJsb2NraW5nUmVhZEV2ZW50cygp CisgeworLSAgICBpZiAoIWNvbmRpdGlvbigpKQorLSAgICAgICAgcmV0dXJuOworLQorLSAgICBR RWxhcHNlZFRpbWVyIHRpbWVyOworLSAgICB0aW1lci5zdGFydCgpOworLSAgICBzdHJ1Y3QgcG9s bGZkIHBGZCA9IHF0X21ha2VfcG9sbGZkKHdsX2Rpc3BsYXlfZ2V0X2ZkKG1EaXNwbGF5KSwgUE9M TElOKTsKKy0gICAgd2hpbGUgKHRpbWVvdXQgPT0gLTEgfHwgdGltZXIuZWxhcHNlZCgpIDwgdGlt ZW91dCkgeworLSAgICAgICAgd2hpbGUgKHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkX3F1ZXVlKG1E aXNwbGF5LCBxdWV1ZSkgIT0gMCkKKy0gICAgICAgICAgICB3bF9kaXNwbGF5X2Rpc3BhdGNoX3F1 ZXVlX3BlbmRpbmcobURpc3BsYXksIHF1ZXVlKTsKKy0KKy0gICAgICAgIHdsX2Rpc3BsYXlfZmx1 c2gobURpc3BsYXkpOworLQorLSAgICAgICAgY29uc3QgaW50IHJlbWFpbmluZyA9IHFNYXgodGlt ZW91dCAtIHRpbWVyLmVsYXBzZWQoKSwgMGxsKTsKKy0gICAgICAgIGNvbnN0IGludCBwb2xsVGlt ZW91dCA9IHRpbWVvdXQgPT0gLTEgPyAtMSA6IHJlbWFpbmluZzsKKy0gICAgICAgIGlmIChxdF9w b2xsX21zZWNzKCZwRmQsIDEsIHBvbGxUaW1lb3V0KSA+IDApCistICAgICAgICAgICAgd2xfZGlz cGxheV9yZWFkX2V2ZW50cyhtRGlzcGxheSk7CistICAgICAgICBlbHNlCistICAgICAgICAgICAg d2xfZGlzcGxheV9jYW5jZWxfcmVhZChtRGlzcGxheSk7CistCistICAgICAgICBpZiAod2xfZGlz cGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBxdWV1ZSkgPCAwKQorLSAgICAg ICAgICAgIGNoZWNrRXJyb3IoKTsKKy0KKy0gICAgICAgIGlmICghY29uZGl0aW9uKCkpCistICAg ICAgICAgICAgYnJlYWs7CistICAgIH0KKysgICAgaWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2gobURp c3BsYXkpIDwgMCkKKysgICAgICAgIGNoZWNrV2F5bGFuZEVycm9yKG1EaXNwbGF5KTsKKyB9Cisg CisgUVdheWxhbmRTY3JlZW4gKlFXYXlsYW5kRGlzcGxheTo6c2NyZWVuRm9yT3V0cHV0KHN0cnVj dCB3bF9vdXRwdXQgKm91dHB1dCkgY29uc3QKK0BAIC0zNDUsNyArNDkxLDcgQEAgdm9pZCBRV2F5 bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2JhbCh1aW50MzJfdCBpZCwgY29uc3QgUVN0cmluZyAm aW50ZXJmYWNlLCB1aW4KKyAgICAgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgid2xf b3V0cHV0IikpIHsKKyAgICAgICAgIG1XYWl0aW5nU2NyZWVucyA8PCBuZXcgUVdheWxhbmRTY3Jl ZW4odGhpcywgdmVyc2lvbiwgaWQpOworICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3Ry aW5nTGl0ZXJhbCgid2xfY29tcG9zaXRvciIpKSB7CistICAgICAgICBtQ29tcG9zaXRvclZlcnNp b24gPSBxTWluKChpbnQpdmVyc2lvbiwgMyk7CisrICAgICAgICBtQ29tcG9zaXRvclZlcnNpb24g PSBxTWluKChpbnQpdmVyc2lvbiwgNCk7CisgICAgICAgICBtQ29tcG9zaXRvci5pbml0KHJlZ2lz dHJ5LCBpZCwgbUNvbXBvc2l0b3JWZXJzaW9uKTsKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2Ug PT0gUVN0cmluZ0xpdGVyYWwoIndsX3NobSIpKSB7CisgICAgICAgICBtU2htLnJlc2V0KG5ldyBR V2F5bGFuZFNobSh0aGlzLCB2ZXJzaW9uLCBpZCkpOworQEAgLTM1NCw3ICs1MDAsNyBAQCB2b2lk IFFXYXlsYW5kRGlzcGxheTo6cmVnaXN0cnlfZ2xvYmFsKHVpbnQzMl90IGlkLCBjb25zdCBRU3Ry aW5nICZpbnRlcmZhY2UsIHVpbgorICAgICAgICAgbUlucHV0RGV2aWNlcy5hcHBlbmQoaW5wdXRE ZXZpY2UpOworICNpZiBRVF9DT05GSUcod2F5bGFuZF9kYXRhZGV2aWNlKQorICAgICB9IGVsc2Ug aWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgid2xfZGF0YV9kZXZpY2VfbWFuYWdlciIp KSB7CistICAgICAgICBtRG5kU2VsZWN0aW9uSGFuZGxlci5yZXNldChuZXcgUVdheWxhbmREYXRh RGV2aWNlTWFuYWdlcih0aGlzLCBpZCkpOworKyAgICAgICAgbURuZFNlbGVjdGlvbkhhbmRsZXIu cmVzZXQobmV3IFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIodGhpcywgdmVyc2lvbiwgaWQpKTsK KyAjZW5kaWYKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoInF0 X3N1cmZhY2VfZXh0ZW5zaW9uIikpIHsKKyAgICAgICAgIG1XaW5kb3dFeHRlbnNpb24ucmVzZXQo bmV3IFF0V2F5bGFuZDo6cXRfc3VyZmFjZV9leHRlbnNpb24ocmVnaXN0cnksIGlkLCAxKSk7CitA QCAtMzY5LDYgKzUxNSw4IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZWdpc3RyeV9nbG9iYWwo dWludDMyX3QgaWQsIGNvbnN0IFFTdHJpbmcgJmludGVyZmFjZSwgdWluCisgI2lmIFFUX0NPTkZJ Ryh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3NlbGVjdGlvbikKKyAgICAgfSBlbHNlIGlmIChpbnRl cmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoInp3cF9wcmltYXJ5X3NlbGVjdGlvbl9kZXZpY2VfbWFu YWdlcl92MSIpKSB7CisgICAgICAgICBtUHJpbWFyeVNlbGVjdGlvbk1hbmFnZXIucmVzZXQobmV3 IFFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZU1hbmFnZXJWMSh0aGlzLCBpZCwgMSkpOwor KyAgICAgICAgZm9yIChRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmljZSA6IHFBc0NvbnN0 KG1JbnB1dERldmljZXMpKQorKyAgICAgICAgICAgIGlucHV0RGV2aWNlLT5zZXRQcmltYXJ5U2Vs ZWN0aW9uRGV2aWNlKG1QcmltYXJ5U2VsZWN0aW9uTWFuYWdlci0+Y3JlYXRlRGV2aWNlKGlucHV0 RGV2aWNlKSk7CisgI2VuZGlmCisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdM aXRlcmFsKCJ6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YyIikgJiYgIW1DbGllbnRTaWRlSW5wdXRD b250ZXh0UmVxdWVzdGVkKSB7CisgICAgICAgICBtVGV4dElucHV0TWFuYWdlci5yZXNldChuZXcg UXRXYXlsYW5kOjp6d3BfdGV4dF9pbnB1dF9tYW5hZ2VyX3YyKHJlZ2lzdHJ5LCBpZCwgMSkpOwor QEAgLTQyNyw2ICs1NzUsMTMgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2Jh bF9yZW1vdmUodWludDMyX3QgaWQpCisgICAgICAgICAgICAgICAgICAgICBpbnB1dERldmljZS0+ c2V0VGV4dElucHV0KG51bGxwdHIpOworICAgICAgICAgICAgICAgICBtV2F5bGFuZEludGVncmF0 aW9uLT5yZWNvbmZpZ3VyZUlucHV0Q29udGV4dCgpOworICAgICAgICAgICAgIH0KKysjaWYgUVRf Q09ORklHKHdheWxhbmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0aW9uKQorKyAgICAgICAgICAgIGlm IChnbG9iYWwuaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ6d3BfcHJpbWFyeV9zZWxlY3Rp b25fZGV2aWNlX21hbmFnZXJfdjEiKSkgeworKyAgICAgICAgICAgICAgICBtUHJpbWFyeVNlbGVj dGlvbk1hbmFnZXIucmVzZXQoKTsKKysgICAgICAgICAgICAgICAgZm9yIChRV2F5bGFuZElucHV0 RGV2aWNlICppbnB1dERldmljZSA6IHFBc0NvbnN0KG1JbnB1dERldmljZXMpKQorKyAgICAgICAg ICAgICAgICAgICAgaW5wdXREZXZpY2UtPnNldFByaW1hcnlTZWxlY3Rpb25EZXZpY2UobnVsbHB0 cik7CisrICAgICAgICAgICAgfQorKyNlbmRpZgorICAgICAgICAgICAgIG1HbG9iYWxzLnJlbW92 ZUF0KGkpOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorQEAgLTQ1Miw5ICs2MDcs MTAgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmFkZFJlZ2lzdHJ5TGlzdGVuZXIoUmVnaXN0cnlM aXN0ZW5lciBsaXN0ZW5lciwgdm9pZCAqZGF0YSkKKyAKKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6 cmVtb3ZlTGlzdGVuZXIoUmVnaXN0cnlMaXN0ZW5lciBsaXN0ZW5lciwgdm9pZCAqZGF0YSkKKyB7 CistICAgIHN0ZDo6cmVtb3ZlX2lmKG1SZWdpc3RyeUxpc3RlbmVycy5iZWdpbigpLCBtUmVnaXN0 cnlMaXN0ZW5lcnMuZW5kKCksIFs9XShMaXN0ZW5lciBsKXsKKysgICAgYXV0byBpdGVyID0gc3Rk OjpyZW1vdmVfaWYobVJlZ2lzdHJ5TGlzdGVuZXJzLmJlZ2luKCksIG1SZWdpc3RyeUxpc3RlbmVy cy5lbmQoKSwgWz1dKExpc3RlbmVyIGwpeworICAgICAgICAgcmV0dXJuIChsLmxpc3RlbmVyID09 IGxpc3RlbmVyICYmIGwuZGF0YSA9PSBkYXRhKTsKKyAgICAgfSk7CisrICAgIG1SZWdpc3RyeUxp c3RlbmVycy5lcmFzZShpdGVyLCBtUmVnaXN0cnlMaXN0ZW5lcnMuZW5kKCkpOworIH0KKyAKKyB1 aW50MzJfdCBRV2F5bGFuZERpc3BsYXk6OmN1cnJlbnRUaW1lTWlsbGlzZWMoKQorQEAgLTQ2Nyw1 MCArNjIzLDkgQEAgdWludDMyX3QgUVdheWxhbmREaXNwbGF5OjpjdXJyZW50VGltZU1pbGxpc2Vj KCkKKyAgICAgcmV0dXJuIDA7CisgfQorIAorLXN0YXRpYyB2b2lkCistc3luY19jYWxsYmFjayh2 b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfY2FsbGJhY2sgKmNhbGxiYWNrLCB1aW50MzJfdCBzZXJpYWwp CisteworLSAgICBRX1VOVVNFRChzZXJpYWwpCistICAgIGJvb2wgKmRvbmUgPSBzdGF0aWNfY2Fz dDxib29sICo+KGRhdGEpOworLQorLSAgICAqZG9uZSA9IHRydWU7CistCistICAgIC8vIElmIHRo ZSB3bF9jYWxsYmFjayBkb25lIGV2ZW50IGlzIHJlY2VpdmVkIGFmdGVyIHRoZSBjb25kaXRpb24g Y2hlY2sgaW4gdGhlIHdoaWxlIGxvb3AgaW4KKy0gICAgLy8gZm9yY2VSb3VuZFRyaXAoKSwgYnV0 IGJlZm9yZSB0aGUgY2FsbCB0byBwcm9jZXNzRXZlbnRzLCB0aGUgY2FsbCB0byBwcm9jZXNzRXZl bnRzIG1heSBibG9jaworLSAgICAvLyBmb3JldmVyIGlmIG5vIG1vcmUgZXZlbnRzIGFyZSBwb3N0 ZWQgKGV2ZW50aG91Z2ggdGhlIGNhbGxiYWNrIGlzIGhhbmRsZWQgaW4gcmVzcG9uc2UgdG8gdGhl CistICAgIC8vIGFib3V0VG9CbG9jayBzaWduYWwpLiBIZW5jZSwgd2Ugd2FrZSB1cCB0aGUgZXZl bnQgZGlzcGF0Y2hlciBzbyBmb3JjZVJvdW5kVHJpcCBtYXkgcmV0dXJuLgorLSAgICAvLyAoUVRC VUctNjQ2OTYpCistICAgIGlmIChhdXRvICpkaXNwYXRjaGVyID0gUVRocmVhZDo6Y3VycmVudFRo cmVhZCgpLT5ldmVudERpc3BhdGNoZXIoKSkKKy0gICAgICAgIGRpc3BhdGNoZXItPndha2VVcCgp OworLQorLSAgICB3bF9jYWxsYmFja19kZXN0cm95KGNhbGxiYWNrKTsKKy19CistCistc3RhdGlj IGNvbnN0IHN0cnVjdCB3bF9jYWxsYmFja19saXN0ZW5lciBzeW5jX2xpc3RlbmVyID0geworLSAg ICBzeW5jX2NhbGxiYWNrCistfTsKKy0KKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6Zm9yY2VSb3Vu ZFRyaXAoKQorIHsKKy0gICAgLy8gd2xfZGlzcGxheV9yb3VuZHRyaXAoKSB3b3JrcyBvbiB0aGUg bWFpbiBxdWV1ZSBvbmx5LAorLSAgICAvLyBidXQgd2UgdXNlIGEgc2VwYXJhdGUgb25lLCBzbyBi YXNpY2FsbHkgcmVpbXBsZW1lbnQgaXQgaGVyZQorLSAgICBpbnQgcmV0ID0gMDsKKy0gICAgYm9v bCBkb25lID0gZmFsc2U7CistICAgIHdsX2NhbGxiYWNrICpjYWxsYmFjayA9IHdsX2Rpc3BsYXlf c3luYyhtRGlzcGxheSk7CistICAgIHdsX2NhbGxiYWNrX2FkZF9saXN0ZW5lcihjYWxsYmFjaywg JnN5bmNfbGlzdGVuZXIsICZkb25lKTsKKy0gICAgZmx1c2hSZXF1ZXN0cygpOworLSAgICBpZiAo UVRocmVhZDo6Y3VycmVudFRocmVhZCgpLT5ldmVudERpc3BhdGNoZXIoKSkgeworLSAgICAgICAg d2hpbGUgKCFkb25lICYmIHJldCA+PSAwKSB7CistICAgICAgICAgICAgUVRocmVhZDo6Y3VycmVu dFRocmVhZCgpLT5ldmVudERpc3BhdGNoZXIoKS0+cHJvY2Vzc0V2ZW50cyhRRXZlbnRMb29wOjpX YWl0Rm9yTW9yZUV2ZW50cyk7CistICAgICAgICAgICAgcmV0ID0gd2xfZGlzcGxheV9kaXNwYXRj aF9wZW5kaW5nKG1EaXNwbGF5KTsKKy0gICAgICAgIH0KKy0gICAgfSBlbHNlIHsKKy0gICAgICAg IHdoaWxlICghZG9uZSAmJiByZXQgPj0gMCkKKy0gICAgICAgICAgICByZXQgPSB3bF9kaXNwbGF5 X2Rpc3BhdGNoKG1EaXNwbGF5KTsKKy0gICAgfQorLQorLSAgICBpZiAocmV0ID09IC0xICYmICFk b25lKQorLSAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShjYWxsYmFjayk7CisrICAgICB3bF9k aXNwbGF5X3JvdW5kdHJpcChtRGlzcGxheSk7CisgfQorIAorIGJvb2wgUVdheWxhbmREaXNwbGF5 OjpzdXBwb3J0c1dpbmRvd0RlY29yYXRpb24oKSBjb25zdAorQEAgLTU3NCwxNCArNjg5LDEwIEBA IHZvaWQgUVdheWxhbmREaXNwbGF5OjpoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFu ZElucHV0RGV2aWNlICppbnB1dERldmljCisgICAgIGlmIChtTGFzdEtleWJvYXJkRm9jdXMgPT0g a2V5Ym9hcmRGb2N1cykKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYgKG1XYXlsYW5kSW50 ZWdyYXRpb24tPm1TaGVsbEludGVncmF0aW9uKSB7CistICAgICAgICBtV2F5bGFuZEludGVncmF0 aW9uLT5tU2hlbGxJbnRlZ3JhdGlvbi0+aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoa2V5Ym9h cmRGb2N1cywgbUxhc3RLZXlib2FyZEZvY3VzKTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIGlm IChrZXlib2FyZEZvY3VzKQorLSAgICAgICAgICAgIGhhbmRsZVdpbmRvd0FjdGl2YXRlZChrZXli b2FyZEZvY3VzKTsKKy0gICAgICAgIGlmIChtTGFzdEtleWJvYXJkRm9jdXMpCistICAgICAgICAg ICAgaGFuZGxlV2luZG93RGVhY3RpdmF0ZWQobUxhc3RLZXlib2FyZEZvY3VzKTsKKy0gICAgfQor KyAgICBpZiAoa2V5Ym9hcmRGb2N1cykKKysgICAgICAgIGhhbmRsZVdpbmRvd0FjdGl2YXRlZChr ZXlib2FyZEZvY3VzKTsKKysgICAgaWYgKG1MYXN0S2V5Ym9hcmRGb2N1cykKKysgICAgICAgIGhh bmRsZVdpbmRvd0RlYWN0aXZhdGVkKG1MYXN0S2V5Ym9hcmRGb2N1cyk7CisgCisgICAgIG1MYXN0 S2V5Ym9hcmRGb2N1cyA9IGtleWJvYXJkRm9jdXM7CisgfQorQEAgLTYwMCw2ICs3MTEsMTkgQEAg dm9pZCBRV2F5bGFuZERpc3BsYXk6OmhhbmRsZVdheWxhbmRTeW5jKCkKKyAgICAgUVdpbmRvdyAq YWN0aXZlV2luZG93ID0gbUFjdGl2ZVdpbmRvd3MuZW1wdHkoKSA/IG51bGxwdHIgOiBtQWN0aXZl V2luZG93cy5sYXN0KCktPndpbmRvdygpOworICAgICBpZiAoYWN0aXZlV2luZG93ICE9IFFHdWlB cHBsaWNhdGlvbjo6Zm9jdXNXaW5kb3coKSkKKyAgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZh Y2U6OmhhbmRsZVdpbmRvd0FjdGl2YXRlZChhY3RpdmVXaW5kb3cpOworKworKyAgICBpZiAoIWFj dGl2ZVdpbmRvdykgeworKyAgICAgICAgaWYgKGxhc3RJbnB1dERldmljZSgpKSB7CisrI2lmIFFU X0NPTkZJRyhjbGlwYm9hcmQpCisrICAgICAgICAgICAgaWYgKGF1dG8gKmRhdGFEZXZpY2UgPSBs YXN0SW5wdXREZXZpY2UoKS0+ZGF0YURldmljZSgpKQorKyAgICAgICAgICAgICAgICBkYXRhRGV2 aWNlLT5pbnZhbGlkYXRlU2VsZWN0aW9uT2ZmZXIoKTsKKysjZW5kaWYKKysjaWYgUVRfQ09ORklH KHdheWxhbmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0aW9uKQorKyAgICAgICAgICAgIGlmIChhdXRv ICpkZXZpY2UgPSBsYXN0SW5wdXREZXZpY2UoKS0+cHJpbWFyeVNlbGVjdGlvbkRldmljZSgpKQor KyAgICAgICAgICAgICAgICBkZXZpY2UtPmludmFsaWRhdGVTZWxlY3Rpb25PZmZlcigpOworKyNl bmRpZgorKyAgICAgICAgfQorKyAgICB9CisgfQorIAorIGNvbnN0IHdsX2NhbGxiYWNrX2xpc3Rl bmVyIFFXYXlsYW5kRGlzcGxheTo6c3luY0NhbGxiYWNrTGlzdGVuZXIgPSB7CitAQCAtNjI2LDYg Kzc1MCwxMyBAQCBRV2F5bGFuZElucHV0RGV2aWNlICpRV2F5bGFuZERpc3BsYXk6OmRlZmF1bHRJ bnB1dERldmljZSgpIGNvbnN0CisgICAgIHJldHVybiBtSW5wdXREZXZpY2VzLmlzRW1wdHkoKSA/ IDAgOiBtSW5wdXREZXZpY2VzLmZpcnN0KCk7CisgfQorIAorK2Jvb2wgUVdheWxhbmREaXNwbGF5 Ojppc0tleWJvYXJkQXZhaWxhYmxlKCkgY29uc3QKKyt7CisrICAgIHJldHVybiBzdGQ6OmFueV9v ZigKKysgICAgICAgICAgICBtSW5wdXREZXZpY2VzLmNvbnN0QmVnaW4oKSwgbUlucHV0RGV2aWNl cy5jb25zdEVuZCgpLAorKyAgICAgICAgICAgIFt0aGlzXShjb25zdCBRV2F5bGFuZElucHV0RGV2 aWNlICpkZXZpY2UpIHsgcmV0dXJuIGRldmljZS0+a2V5Ym9hcmQoKSAhPSBudWxscHRyOyB9KTsK Kyt9CisrCisgI2lmIFFUX0NPTkZJRyhjdXJzb3IpCisgCisgUVdheWxhbmRDdXJzb3IgKlFXYXls YW5kRGlzcGxheTo6d2F5bGFuZEN1cnNvcigpCitAQCAtNjUyLDQgKzc4Myw2IEBAIFFXYXlsYW5k Q3Vyc29yVGhlbWUgKlFXYXlsYW5kRGlzcGxheTo6bG9hZEN1cnNvclRoZW1lKGNvbnN0IFFTdHJp bmcgJm5hbWUsIGludCBwCisgCisgfSAvLyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xpZW50CisgCisr I2luY2x1ZGUgInF3YXlsYW5kZGlzcGxheS5tb2MiCisrCisgUVRfRU5EX05BTUVTUEFDRQorZGlm ZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheV9wLmggYi9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXlfcC5oCitpbmRleCAzYjA5MmJjOC4uNDJi YzY2MWQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXlf cC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXlfcC5oCitAQCAt MTA5LDYgKzEwOSw3IEBAIGNsYXNzIFFXYXlsYW5kU3VyZmFjZTsKKyBjbGFzcyBRV2F5bGFuZFNo ZWxsSW50ZWdyYXRpb247CisgY2xhc3MgUVdheWxhbmRDdXJzb3I7CisgY2xhc3MgUVdheWxhbmRD dXJzb3JUaGVtZTsKKytjbGFzcyBFdmVudFRocmVhZDsKKyAKKyB0eXBlZGVmIHZvaWQgKCpSZWdp c3RyeUxpc3RlbmVyKSh2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB3bF9yZWdpc3RyeSAqcmVnaXN0cnksCitAQCAtMTIwLDE1ICsxMjEsMTEgQEAg Y2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdheWxhbmREaXNwbGF5IDogcHVibGljIFFP YmplY3QsIHB1YmxpYyBRdFdheWxhbmQKKyAgICAgUV9PQkpFQ1QKKyAKKyBwdWJsaWM6CistICAg IHN0cnVjdCBGcmFtZVF1ZXVlIHsKKy0gICAgICAgIEZyYW1lUXVldWUod2xfZXZlbnRfcXVldWUg KnEgPSBudWxscHRyKSA6IHF1ZXVlKHEpLCBtdXRleChuZXcgUU11dGV4KSB7fQorLSAgICAgICAg d2xfZXZlbnRfcXVldWUgKnF1ZXVlOworLSAgICAgICAgUU11dGV4ICptdXRleDsKKy0gICAgfTsK Ky0KKyAgICAgUVdheWxhbmREaXNwbGF5KFFXYXlsYW5kSW50ZWdyYXRpb24gKndheWxhbmRJbnRl Z3JhdGlvbik7CisgICAgIH5RV2F5bGFuZERpc3BsYXkodm9pZCkgb3ZlcnJpZGU7CisgCisrICAg IHZvaWQgaW5pdGlhbGl6ZSgpOworKworICNpZiBRVF9DT05GSUcoeGtiY29tbW9uKQorICAgICBz dHJ1Y3QgeGtiX2NvbnRleHQgKnhrYkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtWGtiQ29udGV4 dC5nZXQoKTsgfQorICNlbmRpZgorQEAgLTIxMCwxMSArMjA3LDExIEBAIHB1YmxpYzoKKyAgICAg dm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZElucHV0RGV2aWNlICppbnB1 dERldmljZSk7CisgICAgIHZvaWQgaGFuZGxlV2luZG93RGVzdHJveWVkKFFXYXlsYW5kV2luZG93 ICp3aW5kb3cpOworIAorLSAgICB3bF9ldmVudF9xdWV1ZSAqY3JlYXRlRXZlbnRRdWV1ZSgpOwor LSAgICBGcmFtZVF1ZXVlIGNyZWF0ZUZyYW1lUXVldWUoKTsKKy0gICAgdm9pZCBkZXN0cm95RnJh bWVRdWV1ZShjb25zdCBGcmFtZVF1ZXVlICZxKTsKKy0gICAgdm9pZCBkaXNwYXRjaFF1ZXVlV2hp bGUod2xfZXZlbnRfcXVldWUgKnF1ZXVlLCBzdGQ6OmZ1bmN0aW9uPGJvb2woKT4gY29uZGl0aW9u LCBpbnQgdGltZW91dCA9IC0xKTsKKysgICAgd2xfZXZlbnRfcXVldWUgKmZyYW1lRXZlbnRRdWV1 ZSgpIHsgcmV0dXJuIG1fZnJhbWVFdmVudFF1ZXVlOyB9OworKworKyAgICBib29sIGlzS2V5Ym9h cmRBdmFpbGFibGUoKSBjb25zdDsKKyAKKysgICAgdm9pZCBpbml0RXZlbnRUaHJlYWQoKTsKKyBw dWJsaWMgc2xvdHM6CisgICAgIHZvaWQgYmxvY2tpbmdSZWFkRXZlbnRzKCk7CisgICAgIHZvaWQg Zmx1c2hSZXF1ZXN0cygpOworQEAgLTIzNyw2ICsyMzQsOSBAQCBwcml2YXRlOgorICAgICB9Owor IAorICAgICBzdHJ1Y3Qgd2xfZGlzcGxheSAqbURpc3BsYXkgPSBudWxscHRyOworKyAgICBRU2Nv cGVkUG9pbnRlcjxFdmVudFRocmVhZD4gbV9ldmVudFRocmVhZDsKKysgICAgd2xfZXZlbnRfcXVl dWUgKm1fZnJhbWVFdmVudFF1ZXVlID0gbnVsbHB0cjsKKysgICAgUVNjb3BlZFBvaW50ZXI8RXZl bnRUaHJlYWQ+IG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkOworICAgICBRdFdheWxhbmQ6OndsX2Nv bXBvc2l0b3IgbUNvbXBvc2l0b3I7CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kU2htPiBt U2htOworICAgICBRTGlzdDxRV2F5bGFuZFNjcmVlbiAqPiBtV2FpdGluZ1NjcmVlbnM7CitAQCAt MjczLDExICsyNzMsOSBAQCBwcml2YXRlOgorICAgICBRV2F5bGFuZElucHV0RGV2aWNlICptTGFz dElucHV0RGV2aWNlID0gbnVsbHB0cjsKKyAgICAgUVBvaW50ZXI8UVdheWxhbmRXaW5kb3c+IG1M YXN0SW5wdXRXaW5kb3c7CisgICAgIFFQb2ludGVyPFFXYXlsYW5kV2luZG93PiBtTGFzdEtleWJv YXJkRm9jdXM7CistICAgIFFWZWN0b3I8UVdheWxhbmRXaW5kb3cgKj4gbUFjdGl2ZVdpbmRvd3M7 CistICAgIFFWZWN0b3I8RnJhbWVRdWV1ZT4gbUV4dGVybmFsUXVldWVzOworKyAgICBRTGlzdDxR V2F5bGFuZFdpbmRvdyAqPiBtQWN0aXZlV2luZG93czsKKyAgICAgc3RydWN0IHdsX2NhbGxiYWNr ICptU3luY0NhbGxiYWNrID0gbnVsbHB0cjsKKyAgICAgc3RhdGljIGNvbnN0IHdsX2NhbGxiYWNr X2xpc3RlbmVyIHN5bmNDYWxsYmFja0xpc3RlbmVyOworLSAgICBRUmVhZFdyaXRlTG9jayBtX2Zy YW1lUXVldWVMb2NrOworIAorICAgICBib29sIG1DbGllbnRTaWRlSW5wdXRDb250ZXh0UmVxdWVz dGVkID0gIVFQbGF0Zm9ybUlucHV0Q29udGV4dEZhY3Rvcnk6OnJlcXVlc3RlZCgpLmlzTnVsbCgp OworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kLmNwcCBi L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kLmNwcAoraW5kZXggNjUzNWFhMTYuLjdj NTNmNWZhIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmQuY3Bw CisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZC5jcHAKK0BAIC02Niw3ICs2 Niw3IEBAIHZvaWQgUVdheWxhbmREcmFnOjpzdGFydERyYWcoKQorIHsKKyAgICAgUUJhc2ljRHJh Zzo6c3RhcnREcmFnKCk7CisgICAgIFFXYXlsYW5kV2luZG93ICppY29uID0gc3RhdGljX2Nhc3Q8 UVdheWxhbmRXaW5kb3cgKj4oc2hhcGVkUGl4bWFwV2luZG93KCktPmhhbmRsZSgpKTsKKy0gICAg aWYgKG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPmRhdGFEZXZpY2UoKS0+c3RhcnRE cmFnKGRyYWcoKS0+bWltZURhdGEoKSwgaWNvbikpIHsKKysgICAgaWYgKG1fZGlzcGxheS0+Y3Vy cmVudElucHV0RGV2aWNlKCktPmRhdGFEZXZpY2UoKS0+c3RhcnREcmFnKGRyYWcoKS0+bWltZURh dGEoKSwgZHJhZygpLT5zdXBwb3J0ZWRBY3Rpb25zKCksIGljb24pKSB7CisgICAgICAgICBpY29u LT5hZGRBdHRhY2hPZmZzZXQoLWRyYWcoKS0+aG90U3BvdCgpKTsKKyAgICAgfSBlbHNlIHsKKyAg ICAgICAgIC8vIENhbmNlbGxpbmcgaW1tZWRpYXRlbHkgZG9lcyBub3Qgd29yaywgc2luY2UgdGhl IGV2ZW50IGxvb3AgZm9yIFFEcmFnOjpleGVjIGlzIHN0YXJ0ZWQKK0BAIC04MCw2ICs4MCw5IEBA IHZvaWQgUVdheWxhbmREcmFnOjpjYW5jZWwoKQorICAgICBRQmFzaWNEcmFnOjpjYW5jZWwoKTsK KyAKKyAgICAgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+ZGF0YURldmljZSgpLT5j YW5jZWxEcmFnKCk7CisrCisrICAgIGlmIChkcmFnKCkpCisrICAgICAgICBkcmFnKCktPmRlbGV0 ZUxhdGVyKCk7CisgfQorIAorIHZvaWQgUVdheWxhbmREcmFnOjptb3ZlKGNvbnN0IFFQb2ludCAm Z2xvYmFsUG9zLCBRdDo6TW91c2VCdXR0b25zIGIsIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2Rz KQorQEAgLTEwMywzMyArMTA2LDQxIEBAIHZvaWQgUVdheWxhbmREcmFnOjplbmREcmFnKCkKKyAg ICAgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+aGFuZGxlRW5kRHJhZygpOworIH0K KyAKKy12b2lkIFFXYXlsYW5kRHJhZzo6dXBkYXRlVGFyZ2V0KGNvbnN0IFFTdHJpbmcgJm1pbWVU eXBlKQorK3ZvaWQgUVdheWxhbmREcmFnOjpzZXRSZXNwb25zZShib29sIGFjY2VwdGVkKQorIHsK Ky0gICAgc2V0Q2FuRHJvcCghbWltZVR5cGUuaXNFbXB0eSgpKTsKKy0KKy0gICAgaWYgKGNhbkRy b3AoKSkgeworLSAgICAgICAgdXBkYXRlQ3Vyc29yKGRlZmF1bHRBY3Rpb24oZHJhZygpLT5zdXBw b3J0ZWRBY3Rpb25zKCksIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPm1vZGlmaWVy cygpKSk7CistICAgIH0gZWxzZSB7CistICAgICAgICB1cGRhdGVDdXJzb3IoUXQ6Oklnbm9yZUFj dGlvbik7CistICAgIH0KKysgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBmb3Igb2xkIERhdGFE ZXZpY2VzIHdoZXJlIHRoZSBkcmFnIGFjdGlvbiBpcyBub3QgY29tbXVuaWNhdGVkCisrICAgIFF0 OjpEcm9wQWN0aW9uIGFjdGlvbiA9IGRlZmF1bHRBY3Rpb24oZHJhZygpLT5zdXBwb3J0ZWRBY3Rp b25zKCksIG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPm1vZGlmaWVycygpKTsKKysg ICAgc2V0UmVzcG9uc2UoUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UoYWNjZXB0ZWQsIGFjdGlvbikp OworIH0KKyAKKy12b2lkIFFXYXlsYW5kRHJhZzo6c2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3Jt RHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlKQorK3ZvaWQgUVdheWxhbmREcmFnOjpzZXRSZXNwb25z ZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpCisgeworICAgICBzZXRD YW5Ecm9wKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSk7CisgCisgICAgIGlmIChjYW5Ecm9wKCkpIHsK Ky0gICAgICAgIHVwZGF0ZUN1cnNvcihkZWZhdWx0QWN0aW9uKGRyYWcoKS0+c3VwcG9ydGVkQWN0 aW9ucygpLCBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5tb2RpZmllcnMoKSkpOwor KyAgICAgICAgdXBkYXRlQ3Vyc29yKHJlc3BvbnNlLmFjY2VwdGVkQWN0aW9uKCkpOworICAgICB9 IGVsc2UgeworICAgICAgICAgdXBkYXRlQ3Vyc29yKFF0OjpJZ25vcmVBY3Rpb24pOworICAgICB9 CisgfQorIAorLXZvaWQgUVdheWxhbmREcmFnOjpmaW5pc2hEcmFnKGNvbnN0IFFQbGF0Zm9ybURy b3BRdFJlc3BvbnNlICZyZXNwb25zZSkKKyt2b2lkIFFXYXlsYW5kRHJhZzo6c2V0RHJvcFJlc3Bv bnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSkKKyB7CisgICAgIHNl dEV4ZWN1dGVkRHJvcEFjdGlvbihyZXNwb25zZS5hY2NlcHRlZEFjdGlvbigpKTsKKyt9CisrCisr dm9pZCBRV2F5bGFuZERyYWc6OmZpbmlzaERyYWcoKQorK3sKKyAgICAgUUtleUV2ZW50IGV2ZW50 KFFFdmVudDo6S2V5UHJlc3MsIFF0OjpLZXlfRXNjYXBlLCBRdDo6Tm9Nb2RpZmllcik7CisgICAg IGV2ZW50RmlsdGVyKHNoYXBlZFBpeG1hcFdpbmRvdygpLCAmZXZlbnQpOworKworKyAgICBpZiAo ZHJhZygpKQorKyAgICAgICAgZHJhZygpLT5kZWxldGVMYXRlcigpOworK30KKysKKytib29sIFFX YXlsYW5kRHJhZzo6b3duc0RyYWdPYmplY3QoKSBjb25zdAorK3sKKysgICAgcmV0dXJuIHRydWU7 CisgfQorIAorIH0KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRu ZF9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZF9wLmgKK2luZGV4IDQ3NGZl MmFiLi40NmY2MjlhYyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k ZG5kX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmRfcC5oCitAQCAt NzEsOSArNzEsMTAgQEAgcHVibGljOgorICAgICBRV2F5bGFuZERyYWcoUVdheWxhbmREaXNwbGF5 ICpkaXNwbGF5KTsKKyAgICAgflFXYXlsYW5kRHJhZygpIG92ZXJyaWRlOworIAorLSAgICB2b2lk IHVwZGF0ZVRhcmdldChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSk7CistICAgIHZvaWQgc2V0UmVz cG9uc2UoY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKy0gICAgdm9p ZCBmaW5pc2hEcmFnKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSk7Cisr ICAgIHZvaWQgc2V0UmVzcG9uc2UoYm9vbCBhY2NlcHRlZCk7CisrICAgIHZvaWQgc2V0UmVzcG9u c2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKysgICAgdm9pZCBz ZXREcm9wUmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKTsK KysgICAgdm9pZCBmaW5pc2hEcmFnKCk7CisgCisgcHJvdGVjdGVkOgorICAgICB2b2lkIHN0YXJ0 RHJhZygpIG92ZXJyaWRlOworQEAgLTgyLDYgKzgzLDcgQEAgcHJvdGVjdGVkOgorICAgICB2b2lk IGRyb3AoY29uc3QgUVBvaW50ICZnbG9iYWxQb3MsIFF0OjpNb3VzZUJ1dHRvbnMgYiwgUXQ6Oktl eWJvYXJkTW9kaWZpZXJzIG1vZHMpIG92ZXJyaWRlOworICAgICB2b2lkIGVuZERyYWcoKSBvdmVy cmlkZTsKKyAKKysgICAgYm9vbCBvd25zRHJhZ09iamVjdCgpIGNvbnN0IG92ZXJyaWRlOworIAor IHByaXZhdGU6CisgICAgIFFXYXlsYW5kRGlzcGxheSAqbV9kaXNwbGF5ID0gbnVsbHB0cjsKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGlucHV0ZGV2aWNlLmNwcCBi L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5wdXRkZXZpY2UuY3BwCitpbmRleCA2MTNm ZTg2Mi4uNGI5MGRlODQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGlucHV0ZGV2aWNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnB1 dGRldmljZS5jcHAKK0BAIC02ODUsNiArNjg1LDExIEBAIHB1YmxpYzoKKyAKKyB2b2lkIFFXYXls YW5kSW5wdXREZXZpY2U6OlBvaW50ZXI6OnBvaW50ZXJfbGVhdmUodWludDMyX3QgdGltZSwgc3Ry dWN0IHdsX3N1cmZhY2UgKnN1cmZhY2UpCisgeworKyAgICBpbnZhbGlkYXRlRm9jdXMoKTsKKysg ICAgbUJ1dHRvbnMgPSBRdDo6Tm9CdXR0b247CisrCisrICAgIG1QYXJlbnQtPm1UaW1lID0gdGlt ZTsKKysKKyAgICAgLy8gVGhlIGV2ZW50IG1heSBhcnJpdmUgYWZ0ZXIgZGVzdHJveWluZyB0aGUg d2luZG93LCBpbmRpY2F0ZWQgYnkKKyAgICAgLy8gYSBudWxsIHN1cmZhY2UuCisgICAgIGlmICgh c3VyZmFjZSkKK0BAIC02OTYsMTEgKzcwMSw2IEBAIHZvaWQgUVdheWxhbmRJbnB1dERldmljZTo6 UG9pbnRlcjo6cG9pbnRlcl9sZWF2ZSh1aW50MzJfdCB0aW1lLCBzdHJ1Y3Qgd2xfc3VyZmFjCisg CisgICAgIGlmICghUVdheWxhbmRXaW5kb3c6Om1vdXNlR3JhYigpKQorICAgICAgICAgc2V0RnJh bWVFdmVudChuZXcgTGVhdmVFdmVudCh3aW5kb3csIG1TdXJmYWNlUG9zLCBtR2xvYmFsUG9zKSk7 CistCistICAgIGludmFsaWRhdGVGb2N1cygpOworLSAgICBtQnV0dG9ucyA9IFF0OjpOb0J1dHRv bjsKKy0KKy0gICAgbVBhcmVudC0+bVRpbWUgPSB0aW1lOworIH0KKyAKKyBjbGFzcyBNb3Rpb25F dmVudCA6IHB1YmxpYyBRV2F5bGFuZFBvaW50ZXJFdmVudAorQEAgLTEzMDAsMTQgKzEzMDAsNiBA QCB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OktleWJvYXJkOjpoYW5kbGVGb2N1c0Rlc3Ryb3ll ZCgpCisgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpLZXlib2FyZDo6aGFuZGxlRm9jdXNMb3N0 KCkKKyB7CisgICAgIG1Gb2N1cyA9IG51bGxwdHI7CistI2lmIFFUX0NPTkZJRyhjbGlwYm9hcmQp CistICAgIGlmIChhdXRvICpkYXRhRGV2aWNlID0gbVBhcmVudC0+ZGF0YURldmljZSgpKQorLSAg ICAgICAgZGF0YURldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9mZmVyKCk7CistI2VuZGlmCist I2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3NlbGVjdGlvbikKKy0gICAgaWYg KGF1dG8gKmRldmljZSA9IG1QYXJlbnQtPnByaW1hcnlTZWxlY3Rpb25EZXZpY2UoKSkKKy0gICAg ICAgIGRldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9mZmVyKCk7CistI2VuZGlmCisgICAgIG1Q YXJlbnQtPm1RRGlzcGxheS0+aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQobVBhcmVudCk7Cisg ICAgIG1SZXBlYXRUaW1lci5zdG9wKCk7CisgfQorQEAgLTEzOTYsNiArMTM4OCw3IEBAIHZvaWQg UVdheWxhbmRJbnB1dERldmljZTo6VG91Y2g6OnRvdWNoX2NhbmNlbCgpCisgICAgIGlmICh0b3Vj aEV4dCkKKyAgICAgICAgIHRvdWNoRXh0LT50b3VjaENhbmNlbGVkKCk7CisgCisrICAgIG1Gb2N1 cyA9IG51bGxwdHI7CisgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVRvdWNoQ2Fu Y2VsRXZlbnQobnVsbHB0ciwgbVBhcmVudC0+bVRvdWNoRGV2aWNlKTsKKyB9CisgCitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbi5jcHAgYi9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uLmNwcAoraW5kZXggYzUzY2NiNzgu LjU0ODYxNjAwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRl Z3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRp b24uY3BwCitAQCAtMTI1LDYgKzEyNSw5IEBAIFFXYXlsYW5kSW50ZWdyYXRpb246OlFXYXlsYW5k SW50ZWdyYXRpb24oKQorICNlbmRpZgorIAorICAgICByZWNvbmZpZ3VyZUlucHV0Q29udGV4dCgp OworKworKyAgICBRV2F5bGFuZFdpbmRvdzo6Zml4ZWRUb3BsZXZlbFBvc2l0aW9ucyA9CisrICAg ICAgICAgICAgIXFFbnZpcm9ubWVudFZhcmlhYmxlSXNTZXQoIlFUX1dBWUxBTkRfRElTQUJMRV9G SVhFRF9QT1NJVElPTlMiKTsKKyB9CisgCisgUVdheWxhbmRJbnRlZ3JhdGlvbjo6flFXYXlsYW5k SW50ZWdyYXRpb24oKQorQEAgLTE5MiwxNCArMTk1LDE4IEBAIFFBYnN0cmFjdEV2ZW50RGlzcGF0 Y2hlciAqUVdheWxhbmRJbnRlZ3JhdGlvbjo6Y3JlYXRlRXZlbnREaXNwYXRjaGVyKCkgY29uc3QK KyAKKyB2b2lkIFFXYXlsYW5kSW50ZWdyYXRpb246OmluaXRpYWxpemUoKQorIHsKKysgICAgbURp c3BsYXktPmluaXRFdmVudFRocmVhZCgpOworKworKyAgICAvLyBDYWxsIGFmdGVyIGV2ZW50RGlz cGF0Y2hlciBpcyBmdWxseSBjb25uZWN0ZWQsIGZvciBRV2F5bGFuZERpc3BsYXk6OmZvcmNlUm91 bmRUcmlwKCkKKysgICAgbURpc3BsYXktPmluaXRpYWxpemUoKTsKKysKKysgICAgLy8gQnV0IHRo ZSBhYm91dFRvQmxvY2soKSBhbmQgYXdha2UoKSBzaG91bGQgYmUgY29ubmVjdGVkIGFmdGVyIGlu aXRpYWxpemVQbGF0Zm9ybSgpLgorKyAgICAvLyBPdGhlcndpc2UgdGhlIGNvbm5lY3RlZCBmbHVz aFJlcXVlc3RzKCkgbWF5IGNvbnN1bWVzIHVwIGFsbCBldmVudHMgYmVmb3JlIHByb2Nlc3NFdmVu dHMgc3RhcnRzIHRvIHdhaXQsCisrICAgIC8vIHNvIHRoYXQgcHJvY2Vzc0V2ZW50cyhRRXZlbnRM b29wOjpXYWl0Rm9yTW9yZUV2ZW50cykgbWF5IGJlIGJsb2NrZWQgaW4gdGhlIGZvcmNlUm91bmRU cmlwKCkuCisgICAgIFFBYnN0cmFjdEV2ZW50RGlzcGF0Y2hlciAqZGlzcGF0Y2hlciA9IFFHdWlB cHBsaWNhdGlvblByaXZhdGU6OmV2ZW50RGlzcGF0Y2hlcjsKKyAgICAgUU9iamVjdDo6Y29ubmVj dChkaXNwYXRjaGVyLCBTSUdOQUwoYWJvdXRUb0Jsb2NrKCkpLCBtRGlzcGxheS5kYXRhKCksIFNM T1QoZmx1c2hSZXF1ZXN0cygpKSk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QoZGlzcGF0Y2hlciwg U0lHTkFMKGF3YWtlKCkpLCBtRGlzcGxheS5kYXRhKCksIFNMT1QoZmx1c2hSZXF1ZXN0cygpKSk7 CisgCistICAgIGludCBmZCA9IHdsX2Rpc3BsYXlfZ2V0X2ZkKG1EaXNwbGF5LT53bF9kaXNwbGF5 KCkpOworLSAgICBRU29ja2V0Tm90aWZpZXIgKnNuID0gbmV3IFFTb2NrZXROb3RpZmllcihmZCwg UVNvY2tldE5vdGlmaWVyOjpSZWFkLCBtRGlzcGxheS5kYXRhKCkpOworLSAgICBRT2JqZWN0Ojpj b25uZWN0KHNuLCBTSUdOQUwoYWN0aXZhdGVkKFFTb2NrZXREZXNjcmlwdG9yKSksIG1EaXNwbGF5 LmRhdGEoKSwgU0xPVChmbHVzaFJlcXVlc3RzKCkpKTsKKy0KKyAgICAgLy8gUXQgZG9lcyBub3Qg c3VwcG9ydCBydW5uaW5nIHdpdGggbm8gc2NyZWVucworICAgICBtRGlzcGxheS0+ZW5zdXJlU2Ny ZWVuKCk7CisgfQorQEAgLTI2Miw2ICsyNjksMTQgQEAgUVdheWxhbmREaXNwbGF5ICpRV2F5bGFu ZEludGVncmF0aW9uOjpkaXNwbGF5KCkgY29uc3QKKyAgICAgcmV0dXJuIG1EaXNwbGF5LmRhdGEo KTsKKyB9CisgCisrUXQ6OktleWJvYXJkTW9kaWZpZXJzIFFXYXlsYW5kSW50ZWdyYXRpb246OnF1 ZXJ5S2V5Ym9hcmRNb2RpZmllcnMoKSBjb25zdAorK3sKKysgICAgaWYgKGF1dG8gKnNlYXQgPSBt RGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCkpIHsKKysgICAgICAgIHJldHVybiBzZWF0LT5t b2RpZmllcnMoKTsKKysgICAgfQorKyAgICByZXR1cm4gUXQ6Ok5vTW9kaWZpZXI7CisrfQorKwor IFFMaXN0PGludD4gUVdheWxhbmRJbnRlZ3JhdGlvbjo6cG9zc2libGVLZXlzKGNvbnN0IFFLZXlF dmVudCAqZXZlbnQpIGNvbnN0CisgeworICAgICBpZiAoYXV0byAqc2VhdCA9IG1EaXNwbGF5LT5j dXJyZW50SW5wdXREZXZpY2UoKSkKK0BAIC00NzksNyArNDk0LDcgQEAgdm9pZCBRV2F5bGFuZElu dGVncmF0aW9uOjpyZWNvbmZpZ3VyZUlucHV0Q29udGV4dCgpCisgICAgIH0KKyAjZW5kaWYKKyAK Ky0gICAgcUNEZWJ1ZyhsY1FwYVdheWxhbmQpIDw8ICJ1c2luZyBpbnB1dCBtZXRob2Q6IiA8PCBp bnB1dENvbnRleHQoKS0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKTsKKysgICAgcUNEZWJ1Zyhs Y1FwYVdheWxhbmQpIDw8ICJ1c2luZyBpbnB1dCBtZXRob2Q6IiA8PCAoaW5wdXRDb250ZXh0KCkg PyBpbnB1dENvbnRleHQoKS0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSA6ICI8bm9uZT4iKTsK KyB9CisgCisgUVdheWxhbmRTaGVsbEludGVncmF0aW9uICpRV2F5bGFuZEludGVncmF0aW9uOjpj cmVhdGVTaGVsbEludGVncmF0aW9uKGNvbnN0IFFTdHJpbmcgJmludGVncmF0aW9uTmFtZSkKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uX3AuaCBi L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb25fcC5oCitpbmRleCBmZjcw YWUyNS4uNzNiODA2NTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRl Z3JhdGlvbl9wLmgKK0BAIC0xMDcsNiArMTA3LDggQEAgcHVibGljOgorIAorICAgICBRV2F5bGFu ZERpc3BsYXkgKmRpc3BsYXkoKSBjb25zdDsKKyAKKysgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJz IHF1ZXJ5S2V5Ym9hcmRNb2RpZmllcnMoKSBjb25zdCBvdmVycmlkZTsKKysKKyAgICAgUUxpc3Q8 aW50PiBwb3NzaWJsZUtleXMoY29uc3QgUUtleUV2ZW50ICpldmVudCkgY29uc3Qgb3ZlcnJpZGU7 CisgCisgICAgIFFTdHJpbmdMaXN0IHRoZW1lTmFtZXMoKSBjb25zdCBvdmVycmlkZTsKK2RpZmYg LS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHByaW1hcnlzZWxlY3Rpb252MS5j cHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHByaW1hcnlzZWxlY3Rpb252MS5jcHAK K2luZGV4IDgzMmY5Njc4Li5lYTUwODc3MSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYxLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRwcmltYXJ5c2VsZWN0aW9udjEuY3BwCitAQCAtNTQsMTEgKzU0LDYgQEAg UVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlTWFuYWdlclYxOjpRV2F5bGFuZFByaW1hcnlT ZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjEKKyAgICAgOiB6d3BfcHJpbWFyeV9zZWxlY3Rpb25fZGV2 aWNlX21hbmFnZXJfdjEoZGlzcGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIHFNaW4odmVyc2lvbiwg dWludCgxKSkpCisgICAgICwgbV9kaXNwbGF5KGRpc3BsYXkpCisgeworLSAgICAvLyBDcmVhdGUg ZGV2aWNlcyBmb3IgYWxsIHNlYXRzLgorLSAgICAvLyBUaGlzIG9ubHkgd29ya3MgaWYgd2UgZ2V0 IHRoZSBnbG9iYWwgYmVmb3JlIGFsbCBkZXZpY2VzCistICAgIGNvbnN0IGF1dG8gc2VhdHMgPSBt X2Rpc3BsYXktPmlucHV0RGV2aWNlcygpOworLSAgICBmb3IgKGF1dG8gKnNlYXQgOiBzZWF0cykK Ky0gICAgICAgIHNlYXQtPnNldFByaW1hcnlTZWxlY3Rpb25EZXZpY2UoY3JlYXRlRGV2aWNlKHNl YXQpKTsKKyB9CisgCisgUVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlVjEgKlFXYXlsYW5k UHJpbWFyeVNlbGVjdGlvbkRldmljZU1hbmFnZXJWMTo6Y3JlYXRlRGV2aWNlKFFXYXlsYW5kSW5w dXREZXZpY2UgKnNlYXQpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRzY3JlZW4uY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW4uY3BwCitp bmRleCA2Y2IzMzdkZS4uNTUzN2RhZmQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZHNjcmVlbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k c2NyZWVuLmNwcAorQEAgLTYwLDcgKzYwLDcgQEAgUVdheWxhbmRYZGdPdXRwdXRNYW5hZ2VyVjE6 OlFXYXlsYW5kWGRnT3V0cHV0TWFuYWdlclYxKFFXYXlsYW5kRGlzcGxheSogZGlzcGxheSwKKyB9 CisgCisgUVdheWxhbmRTY3JlZW46OlFXYXlsYW5kU2NyZWVuKFFXYXlsYW5kRGlzcGxheSAqd2F5 bGFuZERpc3BsYXksIGludCB2ZXJzaW9uLCB1aW50MzJfdCBpZCkKKy0gICAgOiBRdFdheWxhbmQ6 OndsX291dHB1dCh3YXlsYW5kRGlzcGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIHFNaW4odmVyc2lv biwgMikpCisrICAgIDogUXRXYXlsYW5kOjp3bF9vdXRwdXQod2F5bGFuZERpc3BsYXktPndsX3Jl Z2lzdHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIDMpKQorICAgICAsIG1fb3V0cHV0SWQoaWQpCisg ICAgICwgbVdheWxhbmREaXNwbGF5KHdheWxhbmREaXNwbGF5KQorICAgICAsIG1PdXRwdXROYW1l KFFTdHJpbmdMaXRlcmFsKCJTY3JlZW4lMSIpLmFyZyhpZCkpCitAQCAtNzIsNyArNzIsNyBAQCBR V2F5bGFuZFNjcmVlbjo6UVdheWxhbmRTY3JlZW4oUVdheWxhbmREaXNwbGF5ICp3YXlsYW5kRGlz cGxheSwgaW50IHZlcnNpb24sIHVpbgorICAgICAgICAgcUNXYXJuaW5nKGxjUXBhV2F5bGFuZCkg PDwgIndsX291dHB1dCBkb25lIGV2ZW50IG5vdCBzdXBwb3J0ZWQgYnkgY29tcG9zaXRvciwiCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiUVNjcmVlbiBtYXkgbm90IHdvcmsg Y29ycmVjdGx5IjsKKyAgICAgICAgIG1XYXlsYW5kRGlzcGxheS0+Zm9yY2VSb3VuZFRyaXAoKTsg Ly8gR2l2ZSB0aGUgY29tcG9zaXRvciBhIGNoYW5jZSB0byBzZW5kIGdlb21ldHJ5IGV0Yy4KKy0g ICAgICAgIG1PdXRwdXREb25lID0gdHJ1ZTsgLy8gRmFrZSB0aGUgZG9uZSBldmVudAorKyAgICAg ICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBPdXRwdXREb25lRXZlbnQ7IC8vIEZha2UgdGhlIGRvbmUg ZXZlbnQKKyAgICAgICAgIG1heWJlSW5pdGlhbGl6ZSgpOworICAgICB9CisgfQorQEAgLTgxLDE2 ICs4MSwyOSBAQCBRV2F5bGFuZFNjcmVlbjo6flFXYXlsYW5kU2NyZWVuKCkKKyB7CisgICAgIGlm ICh6eGRnX291dHB1dF92MTo6aXNJbml0aWFsaXplZCgpKQorICAgICAgICAgenhkZ19vdXRwdXRf djE6OmRlc3Ryb3koKTsKKysgICAgaWYgKHdsX291dHB1dDo6aXNJbml0aWFsaXplZCgpICYmIHds X291dHB1dF9nZXRfdmVyc2lvbih3bF9vdXRwdXQ6Om9iamVjdCgpKSA+PSBXTF9PVVRQVVRfUkVM RUFTRV9TSU5DRV9WRVJTSU9OKQorKyAgICAgICAgd2xfb3V0cHV0OjpyZWxlYXNlKCk7CisrfQor KworK3VpbnQgUVdheWxhbmRTY3JlZW46OnJlcXVpcmVkRXZlbnRzKCkgY29uc3QKKyt7CisrICAg IHVpbnQgcmV0ID0gT3V0cHV0RG9uZUV2ZW50OworKworKyAgICBpZiAobVdheWxhbmREaXNwbGF5 LT54ZGdPdXRwdXRNYW5hZ2VyKCkpIHsKKysgICAgICAgIHJldCB8PSBYZGdPdXRwdXROYW1lRXZl bnQ7CisrCisrICAgICAgICBpZiAobVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCkt PnZlcnNpb24oKSA8IDMpCisrICAgICAgICAgICAgcmV0IHw9IFhkZ091dHB1dERvbmVFdmVudDsK KysgICAgfQorKyAgICByZXR1cm4gcmV0OworIH0KKyAKKyB2b2lkIFFXYXlsYW5kU2NyZWVuOjpt YXliZUluaXRpYWxpemUoKQorIHsKKyAgICAgUV9BU1NFUlQoIW1Jbml0aWFsaXplZCk7CisgCist ICAgIGlmICghbU91dHB1dERvbmUpCistICAgICAgICByZXR1cm47CistCistICAgIGlmIChtV2F5 bGFuZERpc3BsYXktPnhkZ091dHB1dE1hbmFnZXIoKSAmJiAhbVhkZ091dHB1dERvbmUpCisrICAg IGNvbnN0IHVpbnQgcmVxdWlyZWRFdmVudHMgPSB0aGlzLT5yZXF1aXJlZEV2ZW50cygpOworKyAg ICBpZiAoKG1Qcm9jZXNzZWRFdmVudHMgJiByZXF1aXJlZEV2ZW50cykgIT0gcmVxdWlyZWRFdmVu dHMpCisgICAgICAgICByZXR1cm47CisgCisgICAgIG1Jbml0aWFsaXplZCA9IHRydWU7CitAQCAt Mjc2LDkgKzI4OSw4IEBAIHZvaWQgUVdheWxhbmRTY3JlZW46Om91dHB1dF9zY2FsZShpbnQzMl90 IGZhY3RvcikKKyAKKyB2b2lkIFFXYXlsYW5kU2NyZWVuOjpvdXRwdXRfZG9uZSgpCisgeworLSAg ICBtT3V0cHV0RG9uZSA9IHRydWU7CistICAgIGlmICh6eGRnX291dHB1dF92MTo6aXNJbml0aWFs aXplZCgpICYmIG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigpLT52ZXJzaW9uKCkg Pj0gMykKKy0gICAgICAgIG1YZGdPdXRwdXREb25lID0gdHJ1ZTsKKysgICAgbVByb2Nlc3NlZEV2 ZW50cyB8PSBPdXRwdXREb25lRXZlbnQ7CisrCisgICAgIGlmIChtSW5pdGlhbGl6ZWQpIHsKKyAg ICAgICAgIHVwZGF0ZU91dHB1dFByb3BlcnRpZXMoKTsKKyAgICAgICAgIGlmICh6eGRnX291dHB1 dF92MTo6aXNJbml0aWFsaXplZCgpKQorQEAgLTMzOSw3ICszNTEsNyBAQCB2b2lkIFFXYXlsYW5k U2NyZWVuOjp6eGRnX291dHB1dF92MV9kb25lKCkKKyAgICAgaWYgKFFfVU5MSUtFTFkobVdheWxh bmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCktPnZlcnNpb24oKSA+PSAzKSkKKyAgICAgICAg IHFXYXJuaW5nKGxjUXBhV2F5bGFuZCkgPDwgInp4ZGdfb3V0cHV0X3YxLmRvbmUgcmVjZWl2ZWQg b24gdmVyc2lvbiAzIG9yIG5ld2VyLCB0aGlzIGlzIG1vc3QgbGlrZWx5IGEgYnVnIGluIHRoZSBj b21wb3NpdG9yIjsKKyAKKy0gICAgbVhkZ091dHB1dERvbmUgPSB0cnVlOworKyAgICBtUHJvY2Vz c2VkRXZlbnRzIHw9IFhkZ091dHB1dERvbmVFdmVudDsKKyAgICAgaWYgKG1Jbml0aWFsaXplZCkK KyAgICAgICAgIHVwZGF0ZVhkZ091dHB1dFByb3BlcnRpZXMoKTsKKyAgICAgZWxzZQorQEAgLTM0 OCw3ICszNjAsMTEgQEAgdm9pZCBRV2F5bGFuZFNjcmVlbjo6enhkZ19vdXRwdXRfdjFfZG9uZSgp CisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6enhkZ19vdXRwdXRfdjFfbmFtZShjb25zdCBRU3Ry aW5nICZuYW1lKQorIHsKKysgICAgaWYgKFFfVU5MSUtFTFkobUluaXRpYWxpemVkKSkKKysgICAg ICAgIHFXYXJuaW5nKGxjUXBhV2F5bGFuZCkgPDwgInp4ZGdfb3V0cHV0X3YxLm5hbWUgcmVjZWl2 ZWQgYWZ0ZXIgb3V0cHV0IGhhcyBiZWVuIGluaXRpYWxpemVkLCB0aGlzIGlzIG1vc3QgbGlrZWx5 IGEgYnVnIGluIHRoZSBjb21wb3NpdG9yIjsKKysKKyAgICAgbU91dHB1dE5hbWUgPSBuYW1lOwor KyAgICBtUHJvY2Vzc2VkRXZlbnRzIHw9IFhkZ091dHB1dE5hbWVFdmVudDsKKyB9CisgCisgdm9p ZCBRV2F5bGFuZFNjcmVlbjo6dXBkYXRlWGRnT3V0cHV0UHJvcGVydGllcygpCitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW5fcC5oIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRzY3JlZW5fcC5oCitpbmRleCBkZjFjOTRmMi4uMDUwY2ZkYzAgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbl9wLmgKKysrKyBi L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuX3AuaAorQEAgLTExNiw2ICsxMTYs MTMgQEAgcHVibGljOgorICAgICBzdGF0aWMgUVdheWxhbmRTY3JlZW4gKmZyb21XbE91dHB1dCg6 OndsX291dHB1dCAqb3V0cHV0KTsKKyAKKyBwcml2YXRlOgorKyAgICBlbnVtIEV2ZW50IDogdWlu dCB7CisrICAgICAgICBYZGdPdXRwdXREb25lRXZlbnQgPSAweDEsCisrICAgICAgICBPdXRwdXRE b25lRXZlbnQgPSAweDIsCisrICAgICAgICBYZGdPdXRwdXROYW1lRXZlbnQgPSAweDQsCisrICAg IH07CisrICAgIHVpbnQgcmVxdWlyZWRFdmVudHMoKSBjb25zdDsKKysKKyAgICAgdm9pZCBvdXRw dXRfbW9kZSh1aW50MzJfdCBmbGFncywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgcmVmcmVz aCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgb3V0cHV0X2dlb21ldHJ5KGludDMyX3QgeCwgaW50MzJf dCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl aWdodCwKK0BAIC0xNDgsOCArMTU1LDcgQEAgcHJpdmF0ZToKKyAgICAgUVNpemUgbVBoeXNpY2Fs U2l6ZTsKKyAgICAgUVN0cmluZyBtT3V0cHV0TmFtZTsKKyAgICAgUXQ6OlNjcmVlbk9yaWVudGF0 aW9uIG1fb3JpZW50YXRpb24gPSBRdDo6UHJpbWFyeU9yaWVudGF0aW9uOworLSAgICBib29sIG1P dXRwdXREb25lID0gZmFsc2U7CistICAgIGJvb2wgbVhkZ091dHB1dERvbmUgPSBmYWxzZTsKKysg ICAgdWludCBtUHJvY2Vzc2VkRXZlbnRzID0gMDsKKyAgICAgYm9vbCBtSW5pdGlhbGl6ZWQgPSBm YWxzZTsKKyAKKyAjaWYgUVRfQ09ORklHKGN1cnNvcikKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAgYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAKK2luZGV4IGRjN2ZmNjcwLi40MWNmZmRm NyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2htYmFja2luZ3N0 b3JlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzaG1iYWNraW5nc3Rv cmUuY3BwCitAQCAtNTIsNiArNTIsNyBAQAorIAorICNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQv cHJpdmF0ZS93YXlsYW5kLXdheWxhbmQtY2xpZW50LXByb3RvY29sLmg+CisgCisrI2luY2x1ZGUg PGZjbnRsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzeXMvbW1hbi5oPgor IAorQEAgLTYxLDYgKzYyLDkgQEAKKyAjICBpZm5kZWYgTUZEX0NMT0VYRUMKKyAjICAgIGRlZmlu ZSBNRkRfQ0xPRVhFQyAgICAgMHgwMDAxVQorICMgIGVuZGlmCisrIyAgaWZuZGVmIE1GRF9BTExP V19TRUFMSU5HCisrIyAgICBkZWZpbmUgTUZEX0FMTE9XX1NFQUxJTkcgMHgwMDAyVQorKyMgIGVu ZGlmCisgI2VuZGlmCisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCitAQCAtNzQsOCArNzgsMTAgQEAg UVdheWxhbmRTaG1CdWZmZXI6OlFXYXlsYW5kU2htQnVmZmVyKFFXYXlsYW5kRGlzcGxheSAqZGlz cGxheSwKKyAgICAgaW50IGFsbG9jID0gc3RyaWRlICogc2l6ZS5oZWlnaHQoKTsKKyAgICAgaW50 IGZkID0gLTE7CisgCistI2lmZGVmIFNZU19tZW1mZF9jcmVhdGUKKy0gICAgZmQgPSBzeXNjYWxs KFNZU19tZW1mZF9jcmVhdGUsICJ3YXlsYW5kLXNobSIsIE1GRF9DTE9FWEVDKTsKKysjaWYgZGVm aW5lZChTWVNfbWVtZmRfY3JlYXRlKSAmJiBkZWZpbmVkKEZfU0VBTF9TRUFMKQorKyAgICBmZCA9 IHN5c2NhbGwoU1lTX21lbWZkX2NyZWF0ZSwgIndheWxhbmQtc2htIiwgTUZEX0NMT0VYRUMgfCBN RkRfQUxMT1dfU0VBTElORyk7CisrICAgIGlmIChmZCA+PSAwKQorKyAgICAgICAgZmNudGwoZmQs IEZfQUREX1NFQUxTLCBGX1NFQUxfU0hSSU5LIHwgRl9TRUFMX1NFQUwpOworICNlbmRpZgorIAor ICAgICBRU2NvcGVkUG9pbnRlcjxRRmlsZT4gZmlsZVBvaW50ZXI7CitkaWZmIC0tZ2l0IGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3cuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmR3aW5kb3cuY3BwCitpbmRleCBjYjgyODU3YS4uZmIyYzU5ZGMgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvdy5jcHAKKysrKyBiL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNwcAorQEAgLTc2LDcgKzc2LDYgQEAgUVdh eWxhbmRXaW5kb3cgKlFXYXlsYW5kV2luZG93OjptTW91c2VHcmFiID0gbnVsbHB0cjsKKyBRV2F5 bGFuZFdpbmRvdzo6UVdheWxhbmRXaW5kb3coUVdpbmRvdyAqd2luZG93LCBRV2F5bGFuZERpc3Bs YXkgKmRpc3BsYXkpCisgICAgIDogUVBsYXRmb3JtV2luZG93KHdpbmRvdykKKyAgICAgLCBtRGlz cGxheShkaXNwbGF5KQorLSAgICAsIG1GcmFtZVF1ZXVlKG1EaXNwbGF5LT5jcmVhdGVGcmFtZVF1 ZXVlKCkpCisgICAgICwgbVJlc2l6ZUFmdGVyU3dhcChxRW52aXJvbm1lbnRWYXJpYWJsZUlzU2V0 KCJRVF9XQVlMQU5EX1JFU0laRV9BRlRFUl9TV0FQIikpCisgeworICAgICB7CitAQCAtOTUsOSAr OTQsNiBAQCBRV2F5bGFuZFdpbmRvdzo6UVdheWxhbmRXaW5kb3coUVdpbmRvdyAqd2luZG93LCBR V2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpCisgCisgUVdheWxhbmRXaW5kb3c6On5RV2F5bGFuZFdp bmRvdygpCisgeworLSAgICBtRGlzcGxheS0+ZGVzdHJveUZyYW1lUXVldWUobUZyYW1lUXVldWUp OworLSAgICBtRGlzcGxheS0+aGFuZGxlV2luZG93RGVzdHJveWVkKHRoaXMpOworLQorICAgICBk ZWxldGUgbVdpbmRvd0RlY29yYXRpb247CisgCisgICAgIGlmIChtU3VyZmFjZSkKK0BAIC0yNDMs NiArMjM5LDcgQEAgYm9vbCBRV2F5bGFuZFdpbmRvdzo6c2hvdWxkQ3JlYXRlU3ViU3VyZmFjZSgp IGNvbnN0CisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVzZXQoKQorIHsKKysgICAgY2xvc2VD aGlsZFBvcHVwcygpOworICAgICBkZWxldGUgbVNoZWxsU3VyZmFjZTsKKyAgICAgbVNoZWxsU3Vy ZmFjZSA9IG51bGxwdHI7CisgICAgIGRlbGV0ZSBtU3ViU3VyZmFjZVdpbmRvdzsKK0BAIC0yNTUs MTcgKzI1MiwyMiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXNldCgpCisgICAgICAgICBtU3Vy ZmFjZS5yZXNldCgpOworICAgICB9CisgCistICAgIGlmIChtRnJhbWVDYWxsYmFjaykgeworLSAg ICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShtRnJhbWVDYWxsYmFjayk7CistICAgICAgICBtRnJh bWVDYWxsYmFjayA9IG51bGxwdHI7CistICAgIH0KKysgICAgeworKyAgICAgICAgUU11dGV4TG9j a2VyIGxvY2soJm1GcmFtZVN5bmNNdXRleCk7CisrICAgICAgICBpZiAobUZyYW1lQ2FsbGJhY2sp IHsKKysgICAgICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95KG1GcmFtZUNhbGxiYWNrKTsKKysg ICAgICAgICAgICBtRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CisrICAgICAgICB9CisgCistICAg IG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmludmFsaWRhdGUoKTsKKy0gICAgbVdhaXRpbmdG b3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisrICAgICAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRU aW1lci5pbnZhbGlkYXRlKCk7CisrICAgICAgICBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgPSBm YWxzZTsKKysgICAgfQorICAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gZmFsc2U7CisgCisg ICAgIG1NYXNrID0gUVJlZ2lvbigpOworICAgICBtUXVldWVkQnVmZmVyID0gbnVsbHB0cjsKKysK KysgICAgbURpc3BsYXktPmhhbmRsZVdpbmRvd0Rlc3Ryb3llZCh0aGlzKTsKKyB9CisgCisgUVdh eWxhbmRXaW5kb3cgKlFXYXlsYW5kV2luZG93Ojpmcm9tV2xTdXJmYWNlKDo6d2xfc3VyZmFjZSAq c3VyZmFjZSkKK0BAIC0zNTEsMTkgKzM1MywyNSBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZXRH ZW9tZXRyeV9oZWxwZXIoY29uc3QgUVJlY3QgJnJlY3QpCisgICAgIH0KKyB9CisgCistdm9pZCBR V2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3QgJnJlY3QpCisrdm9pZCBRV2F5 bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3QgJnIpCisgeworKyAgICBhdXRvIHJl Y3QgPSByOworKyAgICBpZiAoZml4ZWRUb3BsZXZlbFBvc2l0aW9ucyAmJiAhUVBsYXRmb3JtV2lu ZG93OjpwYXJlbnQoKSAmJiB3aW5kb3coKS0+dHlwZSgpICE9IFF0OjpQb3B1cAorKyAgICAgICAg JiYgd2luZG93KCktPnR5cGUoKSAhPSBRdDo6VG9vbFRpcCkgeworKyAgICAgICAgcmVjdC5tb3Zl VG8oc2NyZWVuKCktPmdlb21ldHJ5KCkudG9wTGVmdCgpKTsKKysgICAgfQorICAgICBzZXRHZW9t ZXRyeV9oZWxwZXIocmVjdCk7CisgCisgICAgIGlmICh3aW5kb3coKS0+aXNWaXNpYmxlKCkgJiYg cmVjdC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgIGlmIChtV2luZG93RGVjb3JhdGlvbikKKyAgICAg ICAgICAgICBtV2luZG93RGVjb3JhdGlvbi0+dXBkYXRlKCk7CisgCistICAgICAgICBpZiAobVJl c2l6ZUFmdGVyU3dhcCAmJiB3aW5kb3dUeXBlKCkgPT0gRWdsICYmIG1TZW50SW5pdGlhbFJlc2l6 ZSkKKysgICAgICAgIGlmIChtUmVzaXplQWZ0ZXJTd2FwICYmIHdpbmRvd1R5cGUoKSA9PSBFZ2wg JiYgbVNlbnRJbml0aWFsUmVzaXplKSB7CisrICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2so Jm1SZXNpemVMb2NrKTsKKyAgICAgICAgICAgICBtUmVzaXplRGlydHkgPSB0cnVlOworLSAgICAg ICAgZWxzZQorKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBRV2luZG93U3lzdGVtSW50 ZXJmYWNlOjpoYW5kbGVHZW9tZXRyeUNoYW5nZSh3aW5kb3coKSwgZ2VvbWV0cnkoKSk7CistCisr ICAgICAgICB9CisgICAgICAgICBtU2VudEluaXRpYWxSZXNpemUgPSB0cnVlOworICAgICB9Cisg ICAgIFFSZWN0IGV4cG9zZUdlb21ldHJ5KFFQb2ludCgpLCBnZW9tZXRyeSgpLnNpemUoKSk7CitA QCAtMzc0LDcgKzM4Miw3IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21ldHJ5KGNvbnN0 IFFSZWN0ICZyZWN0KQorICAgICAgICAgbVNoZWxsU3VyZmFjZS0+c2V0V2luZG93R2VvbWV0cnko d2luZG93Q29udGVudEdlb21ldHJ5KCkpOworIAorICAgICBpZiAoaXNPcGFxdWUoKSAmJiBtTWFz ay5pc0VtcHR5KCkpCistICAgICAgICBzZXRPcGFxdWVBcmVhKHJlY3QpOworKyAgICAgICAgc2V0 T3BhcXVlQXJlYShRUmVjdChRUG9pbnQoMCwgMCksIHJlY3Quc2l6ZSgpKSk7CisgfQorIAorIHZv aWQgUVdheWxhbmRXaW5kb3c6OnJlc2l6ZUZyb21BcHBseUNvbmZpZ3VyZShjb25zdCBRU2l6ZSAm c2l6ZVdpdGhNYXJnaW5zLCBjb25zdCBRUG9pbnQgJm9mZnNldCkKK0BAIC0zOTksMjEgKzQwNyw2 IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNlbmRFeHBvc2VFdmVudChjb25zdCBRUmVjdCAmcmVj dCkKKyAgICAgbUxhc3RFeHBvc2VHZW9tZXRyeSA9IHJlY3Q7CisgfQorIAorLQorLXN0YXRpYyBR VmVjdG9yPFFQb2ludGVyPFFXYXlsYW5kV2luZG93Pj4gYWN0aXZlUG9wdXBzOworLQorLXZvaWQg UVdheWxhbmRXaW5kb3c6OmNsb3NlUG9wdXBzKFFXYXlsYW5kV2luZG93ICpwYXJlbnQpCistewor LSAgICB3aGlsZSAoIWFjdGl2ZVBvcHVwcy5pc0VtcHR5KCkpIHsKKy0gICAgICAgIGF1dG8gcG9w dXAgPSBhY3RpdmVQb3B1cHMudGFrZUxhc3QoKTsKKy0gICAgICAgIGlmIChwb3B1cC5pc051bGwo KSkKKy0gICAgICAgICAgICBjb250aW51ZTsKKy0gICAgICAgIGlmIChwb3B1cC5kYXRhKCkgPT0g cGFyZW50KQorLSAgICAgICAgICAgIHJldHVybjsKKy0gICAgICAgIHBvcHVwLT5yZXNldCgpOwor LSAgICB9CistfQorLQorIFFQbGF0Zm9ybVNjcmVlbiAqUVdheWxhbmRXaW5kb3c6OmNhbGN1bGF0 ZVNjcmVlbkZyb21TdXJmYWNlRXZlbnRzKCkgY29uc3QKKyB7CisgICAgIFFSZWFkTG9ja2VyIGxv Y2soJm1TdXJmYWNlTG9jayk7CitAQCAtNDMzLDEwICs0MjYsNyBAQCB2b2lkIFFXYXlsYW5kV2lu ZG93OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKKyAgICAgbGFzdFZpc2libGUgPSB2aXNpYmxl OworIAorICAgICBpZiAodmlzaWJsZSkgeworLSAgICAgICAgaWYgKHdpbmRvdygpLT50eXBlKCkg PT0gUXQ6OlBvcHVwIHx8IHdpbmRvdygpLT50eXBlKCkgPT0gUXQ6OlRvb2xUaXApCistICAgICAg ICAgICAgYWN0aXZlUG9wdXBzIDw8IHRoaXM7CisgICAgICAgICBpbml0V2luZG93KCk7CistICAg ICAgICBtRGlzcGxheS0+Zmx1c2hSZXF1ZXN0cygpOworIAorICAgICAgICAgc2V0R2VvbWV0cnko d2luZG93R2VvbWV0cnkoKSk7CisgICAgICAgICAvLyBEb24ndCBmbHVzaCB0aGUgZXZlbnRzIGhl cmUsIG9yIGVsc2UgdGhlIG5ld2x5IHZpc2libGUgd2luZG93IG1heSBzdGFydCBkcmF3aW5nLCBi dXQgc2luY2UKK0BAIC00NDQsNyArNDM0LDYgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0Vmlz aWJsZShib29sIHZpc2libGUpCisgICAgICAgICAvLyBRV2F5bGFuZFNobUJhY2tpbmdTdG9yZTo6 YmVnaW5QYWludCgpLgorICAgICB9IGVsc2UgeworICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFS ZWN0KCkpOworLSAgICAgICAgY2xvc2VQb3B1cHModGhpcyk7CisgICAgICAgICByZXNldCgpOwor ICAgICB9CisgfQorQEAgLTU1NiwxMiArNTQ1LDEyIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNl bmRSZWN1cnNpdmVFeHBvc2VFdmVudCgpCisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6YXR0YWNo KFFXYXlsYW5kQnVmZmVyICpidWZmZXIsIGludCB4LCBpbnQgeSkKKyB7CistICAgIFFfQVNTRVJU KCFidWZmZXItPmNvbW1pdHRlZCgpKTsKKyAgICAgUVJlYWRMb2NrZXIgbG9ja2VyKCZtU3VyZmFj ZUxvY2spOworICAgICBpZiAobVN1cmZhY2UgPT0gbnVsbHB0cikKKyAgICAgICAgIHJldHVybjsK KyAKKyAgICAgaWYgKGJ1ZmZlcikgeworKyAgICAgICAgUV9BU1NFUlQoIWJ1ZmZlci0+Y29tbWl0 dGVkKCkpOworICAgICAgICAgaGFuZGxlVXBkYXRlKCk7CisgICAgICAgICBidWZmZXItPnNldEJ1 c3koKTsKKyAKK0BAIC01ODMsNyArNTcyLDExIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmRhbWFn ZShjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgaWYgKG1TdXJmYWNlID09IG51bGxwdHIpCisgICAg ICAgICByZXR1cm47CisgCistICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54KCksIHJlY3QueSgp LCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworKyAgICBjb25zdCBpbnQgcyA9IHNjYWxl KCk7CisrICAgIGlmIChtRGlzcGxheS0+Y29tcG9zaXRvclZlcnNpb24oKSA+PSA0KQorKyAgICAg ICAgbVN1cmZhY2UtPmRhbWFnZV9idWZmZXIocyAqIHJlY3QueCgpLCBzICogcmVjdC55KCksIHMg KiByZWN0LndpZHRoKCksIHMgKiByZWN0LmhlaWdodCgpKTsKKysgICAgZWxzZQorKyAgICAgICAg bVN1cmZhY2UtPmRhbWFnZShyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5o ZWlnaHQoKSk7CisgfQorIAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNhZmVDb21taXQoUVdheWxh bmRCdWZmZXIgKmJ1ZmZlciwgY29uc3QgUVJlZ2lvbiAmZGFtYWdlKQorQEAgLTYxOSw4ICs2MTIs MTQgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6Y29tbWl0KFFXYXlsYW5kQnVmZmVyICpidWZmZXIs IGNvbnN0IFFSZWdpb24gJmRhbWFnZSkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgYXR0YWNo T2Zmc2V0KGJ1ZmZlcik7CistICAgIGZvciAoY29uc3QgUVJlY3QgJnJlY3Q6IGRhbWFnZSkKKy0g ICAgICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCks IHJlY3QuaGVpZ2h0KCkpOworKyAgICBpZiAobURpc3BsYXktPmNvbXBvc2l0b3JWZXJzaW9uKCkg Pj0gNCkgeworKyAgICAgICAgY29uc3QgaW50IHMgPSBzY2FsZSgpOworKyAgICAgICAgZm9yIChj b25zdCBRUmVjdCAmcmVjdDogZGFtYWdlKQorKyAgICAgICAgICAgIG1TdXJmYWNlLT5kYW1hZ2Vf YnVmZmVyKHMgKiByZWN0LngoKSwgcyAqIHJlY3QueSgpLCBzICogcmVjdC53aWR0aCgpLCBzICog cmVjdC5oZWlnaHQoKSk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBmb3IgKGNvbnN0IFFSZWN0 ICZyZWN0OiBkYW1hZ2UpCisrICAgICAgICAgICAgbVN1cmZhY2UtPmRhbWFnZShyZWN0LngoKSwg cmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisrICAgIH0KKyAgICAgUV9B U1NFUlQoIWJ1ZmZlci0+Y29tbWl0dGVkKCkpOworICAgICBidWZmZXItPnNldENvbW1pdHRlZCgp OworICAgICBtU3VyZmFjZS0+Y29tbWl0KCk7CitAQCAtNjM1LDQyICs2MzQsNTMgQEAgdm9pZCBR V2F5bGFuZFdpbmRvdzo6Y29tbWl0KCkKKyAKKyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5lciBR V2F5bGFuZFdpbmRvdzo6Y2FsbGJhY2tMaXN0ZW5lciA9IHsKKyAgICAgW10odm9pZCAqZGF0YSwg d2xfY2FsbGJhY2sgKmNhbGxiYWNrLCB1aW50MzJfdCB0aW1lKSB7CistICAgICAgICBRX1VOVVNF RChjYWxsYmFjayk7CisgICAgICAgICBRX1VOVVNFRCh0aW1lKTsKKyAgICAgICAgIGF1dG8gKndp bmRvdyA9IHN0YXRpY19jYXN0PFFXYXlsYW5kV2luZG93Kj4oZGF0YSk7CistICAgICAgICB3aW5k b3ctPmhhbmRsZUZyYW1lQ2FsbGJhY2soKTsKKysgICAgICAgIHdpbmRvdy0+aGFuZGxlRnJhbWVD YWxsYmFjayhjYWxsYmFjayk7CisgICAgIH0KKyB9OworIAorLXZvaWQgUVdheWxhbmRXaW5kb3c6 OmhhbmRsZUZyYW1lQ2FsbGJhY2soKQorK3ZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZUZyYW1l Q2FsbGJhY2sod2xfY2FsbGJhY2sqIGNhbGxiYWNrKQorIHsKKysgICAgUU11dGV4TG9ja2VyIGxv Y2tlcigmbUZyYW1lU3luY011dGV4KTsKKysgICAgaWYgKCFtRnJhbWVDYWxsYmFjaykgeworKyAg ICAgICAgLy8gVGhpcyBtZWFucyB0aGUgY2FsbGJhY2sgaXMgYWxyZWFkeSB1bnNldCBieSBRV2F5 bGFuZFdpbmRvdzo6cmVzZXQuCisrICAgICAgICAvLyBUaGUgd2xfY2FsbGJhY2sgb2JqZWN0IHdp bGwgYmUgZGVzdHJveWVkIHRoZXJlIHRvby4KKysgICAgICAgIHJldHVybjsKKysgICAgfQorKyAg ICBRX0FTU0VSVChjYWxsYmFjayA9PSBtRnJhbWVDYWxsYmFjayk7CisrICAgIHdsX2NhbGxiYWNr X2Rlc3Ryb3koY2FsbGJhY2spOworKyAgICBtRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7CisrCisg ICAgIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNlOworICAgICBtRnJhbWVDYWxsYmFj a0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CisgCisgICAgIC8vIFRoZSByZXN0IGNhbiB3YWl0 IHVudGlsIHdlIGNhbiBydW4gaXQgb24gdGhlIGNvcnJlY3QgdGhyZWFkCistICAgIGlmICghbVdh aXRpbmdGb3JVcGRhdGVEZWxpdmVyeSkgeworLSAgICAgICAgYXV0byBkb0hhbmRsZUV4cG9zZSA9 IFt0aGlzXSgpIHsKKy0gICAgICAgICAgICBib29sIHdhc0V4cG9zZWQgPSBpc0V4cG9zZWQoKTsK Ky0gICAgICAgICAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gZmFsc2U7CistICAgICAgICAg ICAgaWYgKCF3YXNFeHBvc2VkICYmIGlzRXhwb3NlZCgpKSAvLyBEaWQgc2V0dGluZyBtRnJhbWVD YWxsYmFja1RpbWVkT3V0IG1ha2UgdGhlIHdpbmRvdyBleHBvc2VkPworLSAgICAgICAgICAgICAg ICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoUVBvaW50KCksIGdlb21ldHJ5KCkuc2l6ZSgpKSk7Cist ICAgICAgICAgICAgaWYgKHdhc0V4cG9zZWQgJiYgaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSkK Ky0gICAgICAgICAgICAgICAgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKTsKKy0KKy0gICAgICAgICAg ICBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gZmFsc2U7CistICAgICAgICB9OworKyAgICBh dXRvIGRvSGFuZGxlRXhwb3NlID0gW3RoaXNdKCkgeworKyAgICAgICAgbVdhaXRpbmdGb3JVcGRh dGVEZWxpdmVyeS5zdG9yZVJlbGVhc2UoZmFsc2UpOworKyAgICAgICAgYm9vbCB3YXNFeHBvc2Vk ID0gaXNFeHBvc2VkKCk7CisrICAgICAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gZmFsc2U7 CisrICAgICAgICBpZiAoIXdhc0V4cG9zZWQgJiYgaXNFeHBvc2VkKCkpIC8vIERpZCBzZXR0aW5n IG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgbWFrZSB0aGUgd2luZG93IGV4cG9zZWQ/CisrICAgICAg ICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KFFQb2ludCgpLCBnZW9tZXRyeSgpLnNpemUoKSkp OworKyAgICAgICAgaWYgKHdhc0V4cG9zZWQgJiYgaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSkK KysgICAgICAgICAgICBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpOworKyAgICB9OworIAorKyAgICBp ZiAobVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeS50ZXN0QW5kU2V0QWNxdWlyZShmYWxzZSwgdHJ1 ZSkpIHsKKyAgICAgICAgIC8vIFF1ZXVlZCBjb25uZWN0aW9uLCB0byBtYWtlIHN1cmUgd2UgZG9u J3QgY2FsbCBoYW5kbGVVcGRhdGUoKSBmcm9tIGluc2lkZSB3YWl0Rm9yRnJhbWVTeW5jKCkKKyAg ICAgICAgIC8vIGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4KKy0gICAgICAgIG1XYWl0aW5n Rm9yVXBkYXRlRGVsaXZlcnkgPSB0cnVlOworICAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1l dGhvZCh0aGlzLCBkb0hhbmRsZUV4cG9zZSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworICAgICB9 CisrCisrICAgIG1GcmFtZVN5bmNXYWl0Lm5vdGlmeV9hbGwoKTsKKyB9CisgCisgYm9vbCBRV2F5 bGFuZFdpbmRvdzo6d2FpdEZvckZyYW1lU3luYyhpbnQgdGltZW91dCkKKyB7CistICAgIFFNdXRl eExvY2tlciBsb2NrZXIobUZyYW1lUXVldWUubXV0ZXgpOworLSAgICBtRGlzcGxheS0+ZGlzcGF0 Y2hRdWV1ZVdoaWxlKG1GcmFtZVF1ZXVlLnF1ZXVlLCBbJl0oKSB7IHJldHVybiBtV2FpdGluZ0Zv ckZyYW1lQ2FsbGJhY2s7IH0sIHRpbWVvdXQpOworKyAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZt RnJhbWVTeW5jTXV0ZXgpOworKworKyAgICBRRGVhZGxpbmVUaW1lciBkZWFkbGluZSh0aW1lb3V0 KTsKKysgICAgd2hpbGUgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayAmJiBtRnJhbWVTeW5jV2Fp dC53YWl0KCZtRnJhbWVTeW5jTXV0ZXgsIGRlYWRsaW5lKSkgeyB9CisgCisgICAgIGlmIChtV2Fp dGluZ0ZvckZyYW1lQ2FsbGJhY2spIHsKKyAgICAgICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2lu Z3N0b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUgZnJhbWUgY2FsbGJhY2sgaW4gdGltZSwgd2luZG93 IHNob3VsZCBub3cgYmUgaW5leHBvc2VkIjsKK0BAIC04NjgsNiArODc4LDE3IEBAIGJvb2wgUVdh eWxhbmRXaW5kb3c6OmNyZWF0ZURlY29yYXRpb24oKQorICAgICAgICAgICAgIHN1YnN1cmYtPnNl dF9wb3NpdGlvbihwb3MueCgpICsgbS5sZWZ0KCksIHBvcy55KCkgKyBtLnRvcCgpKTsKKyAgICAg ICAgIH0KKyAgICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdChRUG9pbnQoKSwgZ2VvbWV0cnko KS5zaXplKCkpKTsKKysKKysgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2Ugd2hlcmUg dGhlIGJ1ZmZlciBpcyByZWNyZWF0ZWQsIGJ1dCBzaW5jZQorKyAgICAgICAgLy8gdGhlIGNvbnRl bnQgcmVjdCByZW1haW5zIHRoZSBzYW1lLCB0aGUgd2lkZ2V0cyByZW1haW4gdGhlIHNhbWUKKysg ICAgICAgIC8vIHNpemUgYW5kIGFyZSBub3QgcmVkcmF3biwgbGVhdmluZyB0aGUgbmV3IGJ1ZmZl ciBlbXB0eS4gQXMgYSBzaW1wbGUKKysgICAgICAgIC8vIHdvcmstYXJvdW5kLCB3ZSB0cmlnZ2Vy IGEgZnVsbCBleHRyYSB1cGRhdGUgd2hlbmV2ZXIgdGhlIGNsaWVudC1zaWRlCisrICAgICAgICAv LyB3aW5kb3cgZGVjb3JhdGlvbnMgYXJlIHRvZ2dsZWQgd2hpbGUgdGhlIHdpbmRvdyBpcyBzaG93 aW5nLgorKyAgICAgICAgLy8gTm90ZTogY3JlYXRlRGVjb3JhdGlvbigpIGlzIHNvbWV0aW1lcyBj YWxsZWQgZnJvbSB0aGUgcmVuZGVyIHRocmVhZAorKyAgICAgICAgLy8gb2YgUXQgUXVpY2suIFRo aXMgaXMgZXNzZW50aWFsbHkgd3JvbmcgYW5kIGNvdWxkIHBvdGVudGlhbGx5IGNhdXNlIHByb2Js ZW1zLAorKyAgICAgICAgLy8gYnV0IHVudGlsIHRoZSB1bmRlcmx5aW5nIGlzc3VlIGhhcyBiZWVu IGZpeGVkLCB3ZSBoYXZlIHRvIHVzZSBpbnZva2VNZXRob2QoKQorKyAgICAgICAgLy8gaGVyZSB0 byBhdm9pZCBhc3NlcnRzLgorKyAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh3aW5k b3coKSwgJlFXaW5kb3c6OnJlcXVlc3RVcGRhdGUpOworICAgICB9CisgCisgICAgIHJldHVybiBt V2luZG93RGVjb3JhdGlvbjsKK0BAIC0xMDIzLDYgKzEwNDQsMTMgQEAgdm9pZCBRV2F5bGFuZFdp bmRvdzo6aGFuZGxlU2NyZWVuc0NoYW5nZWQoKQorIAorICAgICBRV2luZG93U3lzdGVtSW50ZXJm YWNlOjpoYW5kbGVXaW5kb3dTY3JlZW5DaGFuZ2VkKHdpbmRvdygpLCBuZXdTY3JlZW4tPlFQbGF0 Zm9ybVNjcmVlbjo6c2NyZWVuKCkpOworICAgICBtTGFzdFJlcG9ydGVkU2NyZWVuID0gbmV3U2Ny ZWVuOworKyAgICBpZiAoZml4ZWRUb3BsZXZlbFBvc2l0aW9ucyAmJiAhUVBsYXRmb3JtV2luZG93 OjpwYXJlbnQoKSAmJiB3aW5kb3coKS0+dHlwZSgpICE9IFF0OjpQb3B1cAorKyAgICAgICAgJiYg d2luZG93KCktPnR5cGUoKSAhPSBRdDo6VG9vbFRpcAorKyAgICAgICAgJiYgZ2VvbWV0cnkoKS50 b3BMZWZ0KCkgIT0gbmV3U2NyZWVuLT5nZW9tZXRyeSgpLnRvcExlZnQoKSkgeworKyAgICAgICAg YXV0byBnZW9tZXRyeSA9IHRoaXMtPmdlb21ldHJ5KCk7CisrICAgICAgICBnZW9tZXRyeS5tb3Zl VG8obmV3U2NyZWVuLT5nZW9tZXRyeSgpLnRvcExlZnQoKSk7CisrICAgICAgICBzZXRHZW9tZXRy eShnZW9tZXRyeSk7CisrICAgIH0KKyAKKyAgICAgaW50IHNjYWxlID0gbmV3U2NyZWVuLT5pc1Bs YWNlaG9sZGVyKCkgPyAxIDogc3RhdGljX2Nhc3Q8UVdheWxhbmRTY3JlZW4gKj4obmV3U2NyZWVu KS0+c2NhbGUoKTsKKyAgICAgaWYgKHNjYWxlICE9IG1TY2FsZSkgeworQEAgLTEwOTQsMTAgKzEx MjIsMTggQEAgYm9vbCBRV2F5bGFuZFdpbmRvdzo6c2V0TW91c2VHcmFiRW5hYmxlZChib29sIGdy YWIpCisgICAgIHJldHVybiB0cnVlOworIH0KKyAKKytRdDo6V2luZG93U3RhdGVzIFFXYXlsYW5k V2luZG93Ojp3aW5kb3dTdGF0ZXMoKSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1MYXN0UmVwb3J0 ZWRXaW5kb3dTdGF0ZXM7CisrfQorKworIHZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZVdpbmRv d1N0YXRlc0NoYW5nZWQoUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXMpCisgeworICAgICBjcmVhdGVE ZWNvcmF0aW9uKCk7CistICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdpbmRvd1N0 YXRlQ2hhbmdlZCh3aW5kb3coKSwgc3RhdGVzLCBtTGFzdFJlcG9ydGVkV2luZG93U3RhdGVzKTsK KysgICAgUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXNXaXRob3V0QWN0aXZlID0gc3RhdGVzICYgflF0 OjpXaW5kb3dBY3RpdmU7CisrICAgIFF0OjpXaW5kb3dTdGF0ZXMgbGFzdFN0YXRlc1dpdGhvdXRB Y3RpdmUgPSBtTGFzdFJlcG9ydGVkV2luZG93U3RhdGVzICYgflF0OjpXaW5kb3dBY3RpdmU7Cisr ICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdpbmRvd1N0YXRlQ2hhbmdlZCh3aW5k b3coKSwgc3RhdGVzV2l0aG91dEFjdGl2ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RTdGF0ZXNXaXRob3V0QWN0aXZlKTsKKyAgICAg bUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRlcyA9IHN0YXRlczsKKyB9CisgCitAQCAtMTEzOSwxOSAr MTE3NSwyNCBAQCB2b2lkIFFXYXlsYW5kV2luZG93Ojp0aW1lckV2ZW50KFFUaW1lckV2ZW50ICpl dmVudCkKKyAgICAgaWYgKGV2ZW50LT50aW1lcklkKCkgIT0gbUZyYW1lQ2FsbGJhY2tDaGVja0lu dGVydmFsVGltZXJJZCkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgYm9vbCBjYWxsYmFja1Rp bWVyRXhwaXJlZCA9IG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmhhc0V4cGlyZWQobUZyYW1l Q2FsbGJhY2tUaW1lb3V0KTsKKy0gICAgaWYgKCFtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5p c1ZhbGlkKCkgfHwgY2FsbGJhY2tUaW1lckV4cGlyZWQgKSB7CistICAgICAgICBraWxsVGltZXIo bUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCk7CistICAgICAgICBtRnJhbWVDYWxs YmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gLTE7CistICAgIH0KKy0gICAgaWYgKG1GcmFtZUNh bGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQoKSAmJiBjYWxsYmFja1RpbWVyRXhwaXJlZCkgewor LSAgICAgICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworKyAgICB7 CisrICAgICAgICBRTXV0ZXhMb2NrZXIgbG9jaygmbUZyYW1lU3luY011dGV4KTsKKyAKKy0gICAg ICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2luZ3N0b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUgZnJh bWUgY2FsbGJhY2sgaW4gdGltZSwgd2luZG93IHNob3VsZCBub3cgYmUgaW5leHBvc2VkIjsKKy0g ICAgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSB0cnVlOworLSAgICAgICAgbVdhaXRpbmdG b3JVcGRhdGUgPSBmYWxzZTsKKy0gICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdCgpKTsKKysg ICAgICAgIGJvb2wgY2FsbGJhY2tUaW1lckV4cGlyZWQgPSBtRnJhbWVDYWxsYmFja0VsYXBzZWRU aW1lci5oYXNFeHBpcmVkKG1GcmFtZUNhbGxiYWNrVGltZW91dCk7CisrICAgICAgICBpZiAoIW1G cmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQoKSB8fCBjYWxsYmFja1RpbWVyRXhwaXJl ZCApIHsKKysgICAgICAgICAgICBraWxsVGltZXIobUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFs VGltZXJJZCk7CisrICAgICAgICAgICAgbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJ ZCA9IC0xOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFtRnJhbWVDYWxsYmFja0VsYXBzZWRU aW1lci5pc1ZhbGlkKCkgfHwgIWNhbGxiYWNrVGltZXJFeHBpcmVkKSB7CisrICAgICAgICAgICAg cmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIu aW52YWxpZGF0ZSgpOworICAgICB9CisrCisrICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2luZ3N0 b3JlKSA8PCAiRGlkbid0IHJlY2VpdmUgZnJhbWUgY2FsbGJhY2sgaW4gdGltZSwgd2luZG93IHNo b3VsZCBub3cgYmUgaW5leHBvc2VkIjsKKysgICAgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9IHRy dWU7CisrICAgIG1XYWl0aW5nRm9yVXBkYXRlID0gZmFsc2U7CisrICAgIHNlbmRFeHBvc2VFdmVu dChRUmVjdCgpKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVxdWVzdFVwZGF0ZSgp CitAQCAtMTE2MCw4ICsxMjAxLDExIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RVcGRh dGUoKQorICAgICBRX0FTU0VSVChoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpKTsgLy8gc2hvdWxk IGJlIHNldCBieSBRUEEKKyAKKyAgICAgLy8gSWYgd2UgaGF2ZSBhIGZyYW1lIGNhbGxiYWNrIGFs bCBpcyBnb29kIGFuZCB3aWxsIGJlIHRha2VuIGNhcmUgb2YgdGhlcmUKKy0gICAgaWYgKG1XYWl0 aW5nRm9yRnJhbWVDYWxsYmFjaykKKy0gICAgICAgIHJldHVybjsKKysgICAgeworKyAgICAgICAg UU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysgICAgICAgIGlmIChtV2Fp dGluZ0ZvckZyYW1lQ2FsbGJhY2spCisrICAgICAgICAgICAgcmV0dXJuOworKyAgICB9CisgCisg ICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgY2FsbGVkIGRlbGl2ZXJVcGRhdGVSZXF1ZXN0KCksIGJ1 dCBoYXZlbid0IHNlZW4gYW55IGF0dGFjaCtjb21taXQvc3dhcCB5ZXQKKyAgICAgLy8gVGhpcyBp cyBhIHNvbWV3aGF0IHJlZHVuZGFudCBiZWhhdmlvciBhbmQgbWlnaHQgaW5kaWNhdGUgYSBidWcg aW4gdGhlIGNhbGxpbmcgY29kZSwgc28gbG9nCitAQCAtMTE3NCw3ICsxMjE4LDEyIEBAIHZvaWQg UVdheWxhbmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorICAgICAvLyBzbyB1c2UgaW52b2tlTWV0 aG9kIHRvIGRlbGF5IHRoZSBkZWxpdmVyeSBhIGJpdC4KKyAgICAgUU1ldGFPYmplY3Q6Omludm9r ZU1ldGhvZCh0aGlzLCBbdGhpc10geworICAgICAgICAgLy8gVGhpbmdzIG1pZ2h0IGhhdmUgY2hh bmdlZCBpbiB0aGUgbWVhbnRpbWUKKy0gICAgICAgIGlmIChoYXNQZW5kaW5nVXBkYXRlUmVxdWVz dCgpICYmICFtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisrICAgICAgICB7CisrICAgICAgICAg ICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysgICAgICAgICAgICBp ZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQorKyAgICAgICAgICAgICAgICByZXR1cm47Cisr ICAgICAgICB9CisrICAgICAgICBpZiAoaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSkKKyAgICAg ICAgICAgICBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpOworICAgICB9LCBRdDo6UXVldWVkQ29ubmVj dGlvbik7CisgfQorQEAgLTExODUsMTkgKzEyMzQsMTggQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6 cmVxdWVzdFVwZGF0ZSgpCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlVXBkYXRlKCkKKyB7 CisgICAgIHFDRGVidWcobGNXYXlsYW5kQmFja2luZ3N0b3JlKSA8PCAiaGFuZGxlVXBkYXRlIiA8 PCBRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCk7CisrCisgICAgIC8vIFRPRE86IFNob3VsZCBzeW5j IHN1YnN1cmZhY2VzIGF2b2lkIHJlcXVlc3RpbmcgZnJhbWUgY2FsbGJhY2tzPworICAgICBRUmVh ZExvY2tlciBsb2NrKCZtU3VyZmFjZUxvY2spOworICAgICBpZiAoIW1TdXJmYWNlKQorICAgICAg ICAgcmV0dXJuOworIAorLSAgICBpZiAobUZyYW1lQ2FsbGJhY2spIHsKKy0gICAgICAgIHdsX2Nh bGxiYWNrX2Rlc3Ryb3kobUZyYW1lQ2FsbGJhY2spOworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2sg PSBudWxscHRyOworLSAgICB9CisrICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNN dXRleCk7CisrICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCisrICAgICAgICByZXR1 cm47CisgCistICAgIFFNdXRleExvY2tlciBsb2NrZXIobUZyYW1lUXVldWUubXV0ZXgpOworICAg ICBzdHJ1Y3QgOjp3bF9zdXJmYWNlICp3cmFwcGVkU3VyZmFjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8 c3RydWN0IDo6d2xfc3VyZmFjZSAqPih3bF9wcm94eV9jcmVhdGVfd3JhcHBlcihtU3VyZmFjZS0+ b2JqZWN0KCkpKTsKKy0gICAgd2xfcHJveHlfc2V0X3F1ZXVlKHJlaW50ZXJwcmV0X2Nhc3Q8d2xf cHJveHkgKj4od3JhcHBlZFN1cmZhY2UpLCBtRnJhbWVRdWV1ZS5xdWV1ZSk7CisrICAgIHdsX3By b3h5X3NldF9xdWV1ZShyZWludGVycHJldF9jYXN0PHdsX3Byb3h5ICo+KHdyYXBwZWRTdXJmYWNl KSwgbURpc3BsYXktPmZyYW1lRXZlbnRRdWV1ZSgpKTsKKyAgICAgbUZyYW1lQ2FsbGJhY2sgPSB3 bF9zdXJmYWNlX2ZyYW1lKHdyYXBwZWRTdXJmYWNlKTsKKyAgICAgd2xfcHJveHlfd3JhcHBlcl9k ZXN0cm95KHdyYXBwZWRTdXJmYWNlKTsKKyAgICAgd2xfY2FsbGJhY2tfYWRkX2xpc3RlbmVyKG1G cmFtZUNhbGxiYWNrLCAmUVdheWxhbmRXaW5kb3c6OmNhbGxiYWNrTGlzdGVuZXIsIHRoaXMpOwor QEAgLTEyMDcsNiArMTI1NSw4IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZVVwZGF0ZSgp CisgICAgIC8vIFN0YXJ0IGEgdGltZXIgZm9yIGhhbmRsaW5nIHRoZSBjYXNlIHdoZW4gdGhlIGNv bXBvc2l0b3Igc3RvcHMgc2VuZGluZyBmcmFtZSBjYWxsYmFja3MuCisgICAgIGlmIChtRnJhbWVD YWxsYmFja1RpbWVvdXQgPiAwKSB7CisgICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9k KHRoaXMsIFt0aGlzXSB7CisrICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1l U3luY011dGV4KTsKKysKKyAgICAgICAgICAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNr KSB7CisgICAgICAgICAgICAgICAgIGlmIChtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1l cklkIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgIG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZh bFRpbWVySWQgPSBzdGFydFRpbWVyKG1GcmFtZUNhbGxiYWNrVGltZW91dCk7CitAQCAtMTI2Nyw2 ICsxMzE3LDIwIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldE9wYXF1ZUFyZWEoY29uc3QgUVJl Z2lvbiAmb3BhcXVlQXJlYSkKKyAgICAgd2xfcmVnaW9uX2Rlc3Ryb3kocmVnaW9uKTsKKyB9Cisg Cisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6YWRkQ2hpbGRQb3B1cChRV2F5bGFuZFdpbmRvdyAqc3Vy ZmFjZSkgeworKyAgICBtQ2hpbGRQb3B1cHMuYXBwZW5kKHN1cmZhY2UpOworK30KKysKKyt2b2lk IFFXYXlsYW5kV2luZG93OjpyZW1vdmVDaGlsZFBvcHVwKFFXYXlsYW5kV2luZG93ICpzdXJmYWNl KSB7CisrICAgIG1DaGlsZFBvcHVwcy5yZW1vdmVBbGwoc3VyZmFjZSk7CisrfQorKworK3ZvaWQg UVdheWxhbmRXaW5kb3c6OmNsb3NlQ2hpbGRQb3B1cHMoKSB7CisrICAgIHdoaWxlICghbUNoaWxk UG9wdXBzLmlzRW1wdHkoKSkgeworKyAgICAgICAgYXV0byBwb3B1cCA9IG1DaGlsZFBvcHVwcy50 YWtlTGFzdCgpOworKyAgICAgICAgcG9wdXAtPnJlc2V0KCk7CisrICAgIH0KKyt9CisgfQorIAor IFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZHdpbmRvd19wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvd19wLmgK K2luZGV4IDAxMzM3Y2ZmLi4yZjIxOWQ4YyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kd2luZG93X3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmR3aW5kb3dfcC5oCitAQCAtOTgsNiArOTgsOSBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kV2lu ZG93KFFXaW5kb3cgKndpbmRvdywgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KTsKKyAgICAgflFX YXlsYW5kV2luZG93KCkgb3ZlcnJpZGU7CisgCisrICAgIC8vIEtlZXAgVG9wbGV2ZWxzIHBvc2l0 aW9uIG9uIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlaXIgc2NyZWVuCisrICAgIHN0YXRpYyBp bmxpbmUgYm9vbCBmaXhlZFRvcGxldmVsUG9zaXRpb25zID0gdHJ1ZTsKKysKKyAgICAgdmlydHVh bCBXaW5kb3dUeXBlIHdpbmRvd1R5cGUoKSBjb25zdCA9IDA7CisgICAgIHZpcnR1YWwgdm9pZCBl bnN1cmVTaXplKCk7CisgICAgIFdJZCB3aW5JZCgpIGNvbnN0IG92ZXJyaWRlOworQEAgLTE0OCw2 ICsxNTEsNyBAQCBwdWJsaWM6CisgICAgIHZvaWQgc2V0V2luZG93U3RhdGUoUXQ6OldpbmRvd1N0 YXRlcyBzdGF0ZXMpIG92ZXJyaWRlOworICAgICB2b2lkIHNldFdpbmRvd0ZsYWdzKFF0OjpXaW5k b3dGbGFncyBmbGFncykgb3ZlcnJpZGU7CisgICAgIHZvaWQgaGFuZGxlV2luZG93U3RhdGVzQ2hh bmdlZChRdDo6V2luZG93U3RhdGVzIHN0YXRlcyk7CisrICAgIFF0OjpXaW5kb3dTdGF0ZXMgd2lu ZG93U3RhdGVzKCkgY29uc3Q7CisgCisgICAgIHZvaWQgcmFpc2UoKSBvdmVycmlkZTsKKyAgICAg dm9pZCBsb3dlcigpIG92ZXJyaWRlOworQEAgLTIwNiw2ICsyMTAsMTAgQEAgcHVibGljOgorICAg ICB2b2lkIGhhbmRsZVVwZGF0ZSgpOworICAgICB2b2lkIGRlbGl2ZXJVcGRhdGVSZXF1ZXN0KCkg b3ZlcnJpZGU7CisgCisrICAgIHZvaWQgYWRkQ2hpbGRQb3B1cChRV2F5bGFuZFdpbmRvdyogY2hp bGQpOworKyAgICB2b2lkIHJlbW92ZUNoaWxkUG9wdXAoUVdheWxhbmRXaW5kb3cqIGNoaWxkKTsK KysgICAgdm9pZCBjbG9zZUNoaWxkUG9wdXBzKCk7CisrCisgcHVibGljIHNsb3RzOgorICAgICB2 b2lkIGFwcGx5Q29uZmlndXJlKCk7CisgCitAQCAtMjE1LDcgKzIyMywxMSBAQCBzaWduYWxzOgor IAorIHByb3RlY3RlZDoKKyAgICAgUVdheWxhbmREaXNwbGF5ICptRGlzcGxheSA9IG51bGxwdHI7 CisrCisrICAgIC8vIG1TdXJmYWNlIGNhbiBiZSB3cml0dGVuIGJ5IHRoZSBtYWluIHRocmVhZC4g T3RoZXIgdGhyZWFkcyBzaG91bGQgY2xhaW0gYSByZWFkIGxvY2sgZm9yIGFjY2VzcworKyAgICBt dXRhYmxlIFFSZWFkV3JpdGVMb2NrIG1TdXJmYWNlTG9jazsKKyAgICAgUVNjb3BlZFBvaW50ZXI8 UVdheWxhbmRTdXJmYWNlPiBtU3VyZmFjZTsKKysKKyAgICAgUVdheWxhbmRTaGVsbFN1cmZhY2Ug Km1TaGVsbFN1cmZhY2UgPSBudWxscHRyOworICAgICBRV2F5bGFuZFN1YlN1cmZhY2UgKm1TdWJT dXJmYWNlV2luZG93ID0gbnVsbHB0cjsKKyAgICAgUVZlY3RvcjxRV2F5bGFuZFN1YlN1cmZhY2Ug Kj4gbUNoaWxkcmVuOworQEAgLTIyNSwxMyArMjM3LDE0IEBAIHByb3RlY3RlZDoKKyAgICAgUXQ6 Ok1vdXNlQnV0dG9ucyBtTW91c2VQcmVzc2VkSW5Db250ZW50QXJlYSA9IFF0OjpOb0J1dHRvbjsK KyAKKyAgICAgV0lkIG1XaW5kb3dJZDsKKy0gICAgYm9vbCBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJh Y2sgPSBmYWxzZTsKKyAgICAgYm9vbCBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gZmFsc2U7IC8v IFdoZXRoZXIgdGhlIGZyYW1lIGNhbGxiYWNrIGhhcyB0aW1lZCBvdXQKKy0gICAgYm9vbCBtV2Fp dGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gZmFsc2U7CisgICAgIGludCBtRnJhbWVDYWxsYmFja0No ZWNrSW50ZXJ2YWxUaW1lcklkID0gLTE7CistICAgIFFFbGFwc2VkVGltZXIgbUZyYW1lQ2FsbGJh Y2tFbGFwc2VkVGltZXI7CistICAgIHN0cnVjdCA6OndsX2NhbGxiYWNrICptRnJhbWVDYWxsYmFj ayA9IG51bGxwdHI7CistICAgIFFXYXlsYW5kRGlzcGxheTo6RnJhbWVRdWV1ZSBtRnJhbWVRdWV1 ZTsKKysgICAgUUF0b21pY0ludCBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gZmFsc2U7Cisr CisrICAgIGJvb2wgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7IC8vIFByb3RlY3Rl ZCBieSBtRnJhbWVTeW5jTXV0ZXgKKysgICAgUUVsYXBzZWRUaW1lciBtRnJhbWVDYWxsYmFja0Vs YXBzZWRUaW1lcjsgLy8gUHJvdGVjdGVkIGJ5IG1GcmFtZVN5bmNNdXRleAorKyAgICBzdHJ1Y3Qg Ojp3bF9jYWxsYmFjayAqbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOyAvLyBQcm90ZWN0ZWQgYnkg bUZyYW1lU3luY011dGV4CisrICAgIFFNdXRleCBtRnJhbWVTeW5jTXV0ZXg7CisgICAgIFFXYWl0 Q29uZGl0aW9uIG1GcmFtZVN5bmNXYWl0OworIAorICAgICAvLyBUcnVlIHdoZW4gd2UgaGF2ZSBj YWxsZWQgZGVsaXZlclJlcXVlc3RVcGRhdGUsIGJ1dCB0aGUgY2xpZW50IGhhcyBub3QgeWV0IGF0 dGFjaGVkIGEgbmV3IGJ1ZmZlcgorQEAgLTI2MSw2ICsyNzQsOCBAQCBwcm90ZWN0ZWQ6CisgICAg IFFXYXlsYW5kQnVmZmVyICptUXVldWVkQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgUVJlZ2lvbiBt UXVldWVkQnVmZmVyRGFtYWdlOworIAorKyAgICBRTGlzdDxRUG9pbnRlcjxRV2F5bGFuZFdpbmRv dz4+IG1DaGlsZFBvcHVwczsKKysKKyBwcml2YXRlOgorICAgICB2b2lkIHNldEdlb21ldHJ5X2hl bHBlcihjb25zdCBRUmVjdCAmcmVjdCk7CisgICAgIHZvaWQgaW5pdFdpbmRvdygpOworQEAgLTI4 MywxMiArMjk4LDEwIEBAIHByaXZhdGU6CisgICAgIFFSZWN0IG1MYXN0RXhwb3NlR2VvbWV0cnk7 CisgCisgICAgIHN0YXRpYyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5lciBjYWxsYmFja0xpc3Rl bmVyOworLSAgICB2b2lkIGhhbmRsZUZyYW1lQ2FsbGJhY2soKTsKKysgICAgdm9pZCBoYW5kbGVG cmFtZUNhbGxiYWNrKHN0cnVjdCA6OndsX2NhbGxiYWNrKiBjYWxsYmFjayk7CisgCisgICAgIHN0 YXRpYyBRV2F5bGFuZFdpbmRvdyAqbU1vdXNlR3JhYjsKKyAKKy0gICAgbXV0YWJsZSBRUmVhZFdy aXRlTG9jayBtU3VyZmFjZUxvY2s7CistCisgICAgIGZyaWVuZCBjbGFzcyBRV2F5bGFuZFN1YlN1 cmZhY2U7CisgfTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9zaGVsbGlu dGVncmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRlZ3JhdGlvbl9wLmgKK2luZGV4 IGNjYWQwMDQ4Li40Y2M5YjNiOCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3No ZWxsaW50ZWdyYXRpb24vcXdheWxhbmRzaGVsbGludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlvbi9xd2F5bGFuZHNoZWxsaW50ZWdyYXRpb25f cC5oCitAQCAtNzMsMTEgKzczLDEwIEBAIHB1YmxpYzoKKyAgICAgICAgIHJldHVybiB0cnVlOwor ICAgICB9CisgICAgIHZpcnR1YWwgUVdheWxhbmRTaGVsbFN1cmZhY2UgKmNyZWF0ZVNoZWxsU3Vy ZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93KSA9IDA7CisrICAgIC8vIGtlcHQgZm9yIGJpbmFy eSBjb21wYXQgd2l0aCBsYXllci1zaGVsbC1xdAorICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5 Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRv dyAqb2xkRm9jdXMpIHsKKy0gICAgICAgIGlmIChuZXdGb2N1cykKKy0gICAgICAgICAgICBtX2Rp c3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2YXRlZChuZXdGb2N1cyk7CistICAgICAgICBpZiAob2xk Rm9jdXMpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChv bGRGb2N1cyk7CisrICAgICAgICBRX1VOVVNFRChuZXdGb2N1cyk7CisrICAgICAgICBRX1VOVVNF RChvbGRGb2N1cyk7CisgICAgIH0KKyAgICAgdmlydHVhbCB2b2lkICpuYXRpdmVSZXNvdXJjZUZv cldpbmRvdyhjb25zdCBRQnl0ZUFycmF5ICZyZXNvdXJjZSwgUVdpbmRvdyAqd2luZG93KSB7Cisg ICAgICAgICBRX1VOVVNFRChyZXNvdXJjZSk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9j b21wb3NpdG9yL2NvbmZpZ3VyZS5qc29uIGIvcXR3YXlsYW5kL3NyYy9jb21wb3NpdG9yL2NvbmZp Z3VyZS5qc29uCitpbmRleCBiY2ZkNTIxNS4uZGE5NWQwN2IgMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJlLmpzb24KKysrKyBiL3F0d2F5bGFuZC9zcmMvY29t cG9zaXRvci9jb25maWd1cmUuanNvbgorQEAgLTcsNiArNywzMSBAQAorICAgICAidGVzdERpciI6 ICIuLi8uLi9jb25maWcudGVzdHMiLAorIAorICAgICAibGlicmFyaWVzIjogeworKyAgICAgICAg IndheWxhbmQtY2xpZW50IjogeworKyAgICAgICAgICAgICJsYWJlbCI6ICJXYXlsYW5kIGNsaWVu dCBsaWJyYXJ5IiwKKysgICAgICAgICAgICAiaGVhZGVycyI6ICJ3YXlsYW5kLXZlcnNpb24uaCIs CisrICAgICAgICAgICAgInRlc3QiOiB7CisrICAgICAgICAgICAgICAgICJtYWluIjogWworKyAg ICAgICAgICAgICAgICAgICAgIiNpZiBXQVlMQU5EX1ZFUlNJT05fTUFKT1IgPCAxIiwKKysgICAg ICAgICAgICAgICAgICAgICIjIGVycm9yIFdheWxhbmQgMS44LjAgb3IgaGlnaGVyIHJlcXVpcmVk IiwKKysgICAgICAgICAgICAgICAgICAgICIjZW5kaWYiLAorKyAgICAgICAgICAgICAgICAgICAg IiNpZiBXQVlMQU5EX1ZFUlNJT05fTUFKT1IgPT0gMSIsCisrICAgICAgICAgICAgICAgICAgICAi IyBpZiBXQVlMQU5EX1ZFUlNJT05fTUlOT1IgPCA4IiwKKysgICAgICAgICAgICAgICAgICAgICIj ICBlcnJvciBXYXlsYW5kIDEuOC4wIG9yIGhpZ2hlciByZXF1aXJlZCIsCisrICAgICAgICAgICAg ICAgICAgICAiIyBlbmRpZiIsCisrICAgICAgICAgICAgICAgICAgICAiIyBpZiBXQVlMQU5EX1ZF UlNJT05fTUlOT1IgPT0gOCIsCisrICAgICAgICAgICAgICAgICAgICAiIyAgaWYgV0FZTEFORF9W RVJTSU9OX01JQ1JPIDwgMCIsCisrICAgICAgICAgICAgICAgICAgICAiIyAgIGVycm9yIFdheWxh bmQgMS44LjAgb3IgaGlnaGVyIHJlcXVpcmVkIiwKKysgICAgICAgICAgICAgICAgICAgICIjICBl bmRpZiIsCisrICAgICAgICAgICAgICAgICAgICAiIyBlbmRpZiIsCisrICAgICAgICAgICAgICAg ICAgICAiI2VuZGlmIgorKyAgICAgICAgICAgICAgICAgXQorKyAgICAgICAgICAgIH0sCisrICAg ICAgICAgICAgInNvdXJjZXMiOiBbCisrICAgICAgICAgICAgICAgIHsgInR5cGUiOiAicGtnQ29u ZmlnIiwgImFyZ3MiOiAid2F5bGFuZC1jbGllbnQiIH0sCisrICAgICAgICAgICAgICAgICItbHdh eWxhbmQtY2xpZW50IgorKyAgICAgICAgICAgIF0KKysgICAgICAgIH0sCisgICAgICAgICAid2F5 bGFuZC1zZXJ2ZXIiOiB7CisgICAgICAgICAgICAgImxhYmVsIjogIndheWxhbmQtc2VydmVyIiwK KyAgICAgICAgICAgICAiaGVhZGVycyI6ICJ3YXlsYW5kLXZlcnNpb24uaCIsCitAQCAtMTUxLDgg KzE3Niw3IEBACisgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmIgorICAgICAgICAgICAgICAg ICBdCisgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAibGlicyI6ICItbGRybSIsCistICAg ICAgICAgICAgInVzZSI6ICJlZ2wiCisrICAgICAgICAgICAgInVzZSI6ICJkcm0gZWdsIgorICAg ICAgICAgfSwKKyAgICAgICAgICJkbWFidWYtY2xpZW50LWJ1ZmZlciI6IHsKKyAgICAgICAgICAg ICAibGFiZWwiOiAiTGludXggQ2xpZW50IGRtYS1idWYgQnVmZmVyIFNoYXJpbmciLAorQEAgLTE3 Niw4ICsyMDAsNyBAQAorICAgICAgICAgICAgICAgICAgICAgInJldHVybiAwOyIKKyAgICAgICAg ICAgICAgICAgXQorICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgImxpYnMiOiAiLWxkcm0i LAorLSAgICAgICAgICAgICJ1c2UiOiAiZWdsIgorKyAgICAgICAgICAgICJ1c2UiOiAiZHJtIGVn bCIKKyAgICAgICAgIH0sCisgICAgICAgICAidnVsa2FuLXNlcnZlci1idWZmZXIiOiB7CisgICAg ICAgICAgICAgImxhYmVsIjogIlZ1bGthbiBCdWZmZXIgU2hhcmluZyIsCitAQCAtMTk1LDcgKzIx OCw4IEBACisgICAgICAgICAgICAgICAgICAgICAiZXhwb3J0QWxsb2NJbmZvLmhhbmRsZVR5cGVz ID0gVktfRVhURVJOQUxfTUVNT1JZX0hBTkRMRV9UWVBFX09QQVFVRV9GRF9CSVRfS0hSOyIsCisg ICAgICAgICAgICAgICAgICAgICAicmV0dXJuIDA7IgorICAgICAgICAgICAgICAgICBdCistICAg ICAgICAgICAgfQorKyAgICAgICAgICAgIH0sCisrICAgICAgICAgICAgInVzZSI6ICJ3YXlsYW5k LWNsaWVudCIKKyAgICAgICAgIH0KKyAgICAgfSwKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQv c3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2lu ZG93LmNwcCBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFu ZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuY3BwCitpbmRleCA3ODg5ZjU3NS4uNjQxNDA2NzIgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxh bmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2Fy ZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5jcHAKK0BA IC00MCw2ICs0MCw3IEBACisgI2luY2x1ZGUgInF3YXlsYW5kZWdsd2luZG93LmgiCisgCisgI2lu Y2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3F3YXlsYW5kc2NyZWVuX3AuaD4KKysjaW5j bHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvcXdheWxhbmRzdXJmYWNlX3AuaD4KKyAjaW5j bHVkZSAicXdheWxhbmRnbGNvbnRleHQuaCIKKyAKKyAjaW5jbHVkZSA8UXRFZ2xTdXBwb3J0L3By aXZhdGUvcWVnbGNvbnZlbmllbmNlX3AuaD4KK0BAIC0xMjQsNiArMTI1LDcgQEAgdm9pZCBRV2F5 bGFuZEVnbFdpbmRvdzo6dXBkYXRlU3VyZmFjZShib29sIGNyZWF0ZSkKKyAgICAgICAgIH0KKyAg ICAgICAgIG1PZmZzZXQgPSBRUG9pbnQoKTsKKyAgICAgfSBlbHNlIHsKKysgICAgICAgIFFSZWFk TG9ja2VyIGxvY2tlcigmbVN1cmZhY2VMb2NrKTsKKyAgICAgICAgIGlmIChtX3dheWxhbmRFZ2xX aW5kb3cpIHsKKyAgICAgICAgICAgICBpbnQgY3VycmVudF93aWR0aCwgY3VycmVudF9oZWlnaHQ7 CisgICAgICAgICAgICAgc3RhdGljIGJvb2wgZGlzYWJsZVJlc2l6ZUNoZWNrID0gcWdldGVudigi UVRfV0FZTEFORF9ESVNBQkxFX1JFU0laRUNIRUNLIikudG9JbnQoKTsKK0BAIC0xMzEsMTQgKzEz MywxNiBAQCB2b2lkIFFXYXlsYW5kRWdsV2luZG93Ojp1cGRhdGVTdXJmYWNlKGJvb2wgY3JlYXRl KQorICAgICAgICAgICAgIGlmICghZGlzYWJsZVJlc2l6ZUNoZWNrKSB7CisgICAgICAgICAgICAg ICAgIHdsX2VnbF93aW5kb3dfZ2V0X2F0dGFjaGVkX3NpemUobV93YXlsYW5kRWdsV2luZG93LCAm Y3VycmVudF93aWR0aCwgJmN1cnJlbnRfaGVpZ2h0KTsKKyAgICAgICAgICAgICB9CistICAgICAg ICAgICAgaWYgKGRpc2FibGVSZXNpemVDaGVjayB8fCAoY3VycmVudF93aWR0aCAhPSBzaXplV2l0 aE1hcmdpbnMud2lkdGgoKSB8fCBjdXJyZW50X2hlaWdodCAhPSBzaXplV2l0aE1hcmdpbnMuaGVp Z2h0KCkpKSB7CisrICAgICAgICAgICAgaWYgKGRpc2FibGVSZXNpemVDaGVjayB8fCAoY3VycmVu dF93aWR0aCAhPSBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSB8fCBjdXJyZW50X2hlaWdodCAhPSBz aXplV2l0aE1hcmdpbnMuaGVpZ2h0KCkpIHx8IG1fcmVxdWVzdGVkU2l6ZSAhPSBzaXplV2l0aE1h cmdpbnMpIHsKKyAgICAgICAgICAgICAgICAgd2xfZWdsX3dpbmRvd19yZXNpemUobV93YXlsYW5k RWdsV2luZG93LCBzaXplV2l0aE1hcmdpbnMud2lkdGgoKSwgc2l6ZVdpdGhNYXJnaW5zLmhlaWdo dCgpLCBtT2Zmc2V0LngoKSwgbU9mZnNldC55KCkpOworKyAgICAgICAgICAgICAgICBtX3JlcXVl c3RlZFNpemUgPSBzaXplV2l0aE1hcmdpbnM7CisgICAgICAgICAgICAgICAgIG1PZmZzZXQgPSBR UG9pbnQoKTsKKyAKKyAgICAgICAgICAgICAgICAgbV9yZXNpemUgPSB0cnVlOworICAgICAgICAg ICAgIH0KKy0gICAgICAgIH0gZWxzZSBpZiAoY3JlYXRlICYmIHdsU3VyZmFjZSgpKSB7CistICAg ICAgICAgICAgbV93YXlsYW5kRWdsV2luZG93ID0gd2xfZWdsX3dpbmRvd19jcmVhdGUod2xTdXJm YWNlKCksIHNpemVXaXRoTWFyZ2lucy53aWR0aCgpLCBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCkp OworKyAgICAgICAgfSBlbHNlIGlmIChjcmVhdGUgJiYgbVN1cmZhY2UpIHsKKysgICAgICAgICAg ICBtX3dheWxhbmRFZ2xXaW5kb3cgPSB3bF9lZ2xfd2luZG93X2NyZWF0ZShtU3VyZmFjZS0+b2Jq ZWN0KCksIHNpemVXaXRoTWFyZ2lucy53aWR0aCgpLCBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCkp OworKyAgICAgICAgICAgIG1fcmVxdWVzdGVkU2l6ZSA9IHNpemVXaXRoTWFyZ2luczsKKyAgICAg ICAgIH0KKyAKKyAgICAgICAgIGlmICghbV9lZ2xTdXJmYWNlICYmIG1fd2F5bGFuZEVnbFdpbmRv dyAmJiBjcmVhdGUpIHsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdy YXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmggYi9xdHdheWxhbmQv c3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2lu ZG93LmgKK2luZGV4IDViMWY0ZDU2Li4wMDc5ZGZlZiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9z cmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5k b3cuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXls YW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5oCitAQCAtODgsNiArODgsNyBAQCBwcml2YXRlOgor ICAgICBtdXRhYmxlIFFPcGVuR0xGcmFtZWJ1ZmZlck9iamVjdCAqbV9jb250ZW50RkJPID0gbnVs bHB0cjsKKyAKKyAgICAgUVN1cmZhY2VGb3JtYXQgbV9mb3JtYXQ7CisrICAgIFFTaXplIG1fcmVx dWVzdGVkU2l6ZTsKKyB9OworIAorIH0KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2hhcmR3 YXJlaW50ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFibGUtdjEvbGludXhk bWFidWYuaCBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jb21wb3NpdG9yL2xp bnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5oCitpbmRleCA1NmE3MTBjMy4uYzZh OGI2YzYgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY29t cG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFibGUtdjEvbGludXhkbWFidWYuaAorKysrIGIvcXR3 YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3IvbGludXgtZG1hYnVmLXVu c3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmgKK0BAIC00MSw2ICs0MSw4IEBACisgI2luY2x1ZGUgPFF0 Q29yZS9RVGV4dFN0cmVhbT4KKyAjaW5jbHVkZSA8UXRHdWkvUU9wZW5HTFRleHR1cmU+CisgCisr I2luY2x1ZGUgPGFycmF5PgorKworICNpbmNsdWRlIDxFR0wvZWdsLmg+CisgI2luY2x1ZGUgPEVH TC9lZ2xleHQuaD4KKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvZGVjb3Jh dGlvbnMvYnJhZGllbnQvbWFpbi5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvZGVjb3JhdGlv bnMvYnJhZGllbnQvbWFpbi5jcHAKK2luZGV4IGU3NWZkYTNjLi5mYTg4NTE0MyAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNvcmF0aW9ucy9icmFkaWVudC9tYWluLmNwcAor KysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3Bw CitAQCAtMTY0LDEzICsxNjQsMTAgQEAgdm9pZCBRV2F5bGFuZEJyYWRpZW50RGVjb3JhdGlvbjo6 cGFpbnQoUVBhaW50RGV2aWNlICpkZXZpY2UpCisgICAgIC8vIFdpbmRvdyBpY29uCisgICAgIFFJ Y29uIGljb24gPSB3YXlsYW5kV2luZG93KCktPndpbmRvd0ljb24oKTsKKyAgICAgaWYgKCFpY29u LmlzTnVsbCgpKSB7CistICAgICAgICBRUGl4bWFwIHBpeG1hcCA9IGljb24ucGl4bWFwKFFTaXpl KDEyOCwgMTI4KSk7CistICAgICAgICBRUGl4bWFwIHNjYWxlZCA9IHBpeG1hcC5zY2FsZWQoMjIs IDIyLCBRdDo6SWdub3JlQXNwZWN0UmF0aW8sIFF0OjpTbW9vdGhUcmFuc2Zvcm1hdGlvbik7Cist CisgICAgICAgICBRUmVjdEYgaWNvblJlY3QoMCwgMCwgMjIsIDIyKTsKKy0gICAgICAgIHAuZHJh d1BpeG1hcChpY29uUmVjdC5hZGp1c3RlZChtYXJnaW5zKCkubGVmdCgpICsgQlVUVE9OX1NQQUNJ TkcsIDQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2lucygp LmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0KSwKKy0gICAgICAgICAgICAgICAgICAgICBzY2Fs ZWQsIGljb25SZWN0KTsKKysgICAgICAgIGljb25SZWN0LmFkanVzdChtYXJnaW5zKCkubGVmdCgp ICsgQlVUVE9OX1NQQUNJTkcsIDQsCisrICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2lucygp LmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0KSwKKysgICAgICAgIGljb24ucGFpbnQoJnAsIGlj b25SZWN0LnRvUmVjdCgpKTsKKyAgICAgfQorIAorICAgICAvLyBXaW5kb3cgdGl0bGUKK2RpZmYg LS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwt djUvcXdheWxhbmR4ZGdwb3B1cHY1LmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGlu dGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjUuY3BwCitpbmRleCA4NWQy NWUzYy4uNjBiZGQ0OTEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxp bnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1LmNwcAorKysrIGIvcXR3 YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5k eGRncG9wdXB2NS5jcHAKK0BAIC00NywxOCArNDcsMjEgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisg CisgbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudCB7CisgCistUVdheWxhbmRYZGdQb3B1cFY1OjpR V2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6eGRnX3BvcHVwX3Y1ICpwb3B1cCwgUVdheWxhbmRX aW5kb3cgKndpbmRvdykKKytRV2F5bGFuZFhkZ1BvcHVwVjU6OlFXYXlsYW5kWGRnUG9wdXBWNShz dHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5bGFuZFdpbmRvdyogcGFyZW50LCBRV2F5 bGFuZFdpbmRvdyAqd2luZG93KQorICAgICA6IFFXYXlsYW5kU2hlbGxTdXJmYWNlKHdpbmRvdykK KyAgICAgLCBRdFdheWxhbmQ6OnhkZ19wb3B1cF92NShwb3B1cCkKKysgICAgLCBtX3BhcmVudChw YXJlbnQpCisgICAgICwgbV93aW5kb3cod2luZG93KQorIHsKKyAgICAgaWYgKHdpbmRvdy0+ZGlz cGxheSgpLT53aW5kb3dFeHRlbnNpb24oKSkKKyAgICAgICAgIG1fZXh0ZW5kZWRXaW5kb3cgPSBu ZXcgUVdheWxhbmRFeHRlbmRlZFN1cmZhY2Uod2luZG93KTsKKysgICAgbV9wYXJlbnQtPmFkZENo aWxkUG9wdXAobV93aW5kb3cpOworIH0KKyAKKyBRV2F5bGFuZFhkZ1BvcHVwVjU6On5RV2F5bGFu ZFhkZ1BvcHVwVjUoKQorIHsKKyAgICAgeGRnX3BvcHVwX2Rlc3Ryb3kob2JqZWN0KCkpOworKyAg ICBtX3BhcmVudC0+cmVtb3ZlQ2hpbGRQb3B1cChtX3dpbmRvdyk7CisgICAgIGRlbGV0ZSBtX2V4 dGVuZGVkV2luZG93OworIH0KKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMv c2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaCBiL3F0 d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFu ZHhkZ3BvcHVwdjVfcC5oCitpbmRleCA3NDk0ZjZhNi4uZDg1ZjEzMGIgMTAwNjQ0CistLS0gYS9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxh bmR4ZGdwb3B1cHY1X3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NV9wLmgKK0BAIC03MCw3ICs3MCw3 IEBAIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kWGRnUG9wdXBWNSA6IHB1 YmxpYyBRV2F5bGFuZFNoZWxsU3VyZmFjZQorIHsKKyAgICAgUV9PQkpFQ1QKKyBwdWJsaWM6Cist ICAgIFFXYXlsYW5kWGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5 bGFuZFdpbmRvdyAqd2luZG93KTsKKysgICAgUVdheWxhbmRYZGdQb3B1cFY1KHN0cnVjdCA6Onhk Z19wb3B1cF92NSAqcG9wdXAsIFFXYXlsYW5kV2luZG93KiBwYXJlbnQsIFFXYXlsYW5kV2luZG93 ICp3aW5kb3cpOworICAgICB+UVdheWxhbmRYZGdQb3B1cFY1KCkgb3ZlcnJpZGU7CisgCisgcHJv dGVjdGVkOgorQEAgLTc4LDYgKzc4LDcgQEAgcHJvdGVjdGVkOgorIAorIHByaXZhdGU6CisgICAg IFFXYXlsYW5kRXh0ZW5kZWRTdXJmYWNlICptX2V4dGVuZGVkV2luZG93ID0gbnVsbHB0cjsKKysg ICAgUVdheWxhbmRXaW5kb3cgKm1fcGFyZW50ID0gbnVsbHB0cjsKKyAgICAgUVdheWxhbmRXaW5k b3cgKm1fd2luZG93ID0gbnVsbHB0cjsKKyB9OworIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxs djUuY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxs LXY1L3F3YXlsYW5keGRnc2hlbGx2NS5jcHAKK2luZGV4IDdlMjQyYzRhLi5kZWY4NDUyYSAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVs bC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMv c2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1LmNwcAorQEAg LTg0LDcgKzg0LDcgQEAgUVdheWxhbmRYZGdQb3B1cFY1ICpRV2F5bGFuZFhkZ1NoZWxsVjU6OmNy ZWF0ZVhkZ1BvcHVwKFFXYXlsYW5kV2luZG93ICp3aW5kb3csIFEKKyAgICAgaW50IHggPSBwb3Np dGlvbi54KCkgKyBwYXJlbnRXaW5kb3ctPmZyYW1lTWFyZ2lucygpLmxlZnQoKTsKKyAgICAgaW50 IHkgPSBwb3NpdGlvbi55KCkgKyBwYXJlbnRXaW5kb3ctPmZyYW1lTWFyZ2lucygpLnRvcCgpOwor IAorLSAgICBhdXRvIHBvcHVwID0gbmV3IFFXYXlsYW5kWGRnUG9wdXBWNShnZXRfeGRnX3BvcHVw KHdpbmRvdy0+d2xTdXJmYWNlKCksIHBhcmVudFN1cmZhY2UsIHNlYXQsIG1fcG9wdXBTZXJpYWws IHgsIHkpLCB3aW5kb3cpOworKyAgICBhdXRvIHBvcHVwID0gbmV3IFFXYXlsYW5kWGRnUG9wdXBW NShnZXRfeGRnX3BvcHVwKHdpbmRvdy0+d2xTdXJmYWNlKCksIHBhcmVudFN1cmZhY2UsIHNlYXQs IG1fcG9wdXBTZXJpYWwsIHgsIHkpLCBwYXJlbnRXaW5kb3csIHdpbmRvdyk7CisgICAgIG1fcG9w dXBzLmFwcGVuZCh3aW5kb3cpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHBvcHVwLCAmUVdheWxh bmRYZGdQb3B1cFY1OjpkZXN0cm95ZWQsIFt0aGlzLCB3aW5kb3ddKCl7CisgICAgICAgICBtX3Bv cHVwcy5yZW1vdmVPbmUod2luZG93KTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdy YXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNwcAoraW5kZXggNGUyNTk0OWYu LmNmYzYwOTM5IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNwcAorKysr IGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3 YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNwcAorQEAgLTg1LDEzICs4NSw2IEBAIFFXYXls YW5kU2hlbGxTdXJmYWNlICpRV2F5bGFuZFhkZ1NoZWxsVjVJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hl bGxTdXJmYWNlKFFXYXlsYW5kCisgICAgIHJldHVybiBtX3hkZ1NoZWxsLT5jcmVhdGVYZGdTdXJm YWNlKHdpbmRvdyk7CisgfQorIAorLXZvaWQgUVdheWxhbmRYZGdTaGVsbFY1SW50ZWdyYXRpb246 OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdh eWxhbmRXaW5kb3cgKm9sZEZvY3VzKSB7CistICAgIGlmIChuZXdGb2N1cyAmJiBxb2JqZWN0X2Nh c3Q8UVdheWxhbmRYZGdQb3B1cFY1ICo+KG5ld0ZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpCistICAg ICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2YXRlZChuZXdGb2N1cyk7CistICAgIGlm IChvbGRGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdQb3B1cFY1ICo+KG9sZEZvY3Vz LT5zaGVsbFN1cmZhY2UoKSkpCistICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0RlYWN0 aXZhdGVkKG9sZEZvY3VzKTsKKy19CistCisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYg LS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwt djUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVn aW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVn cmF0aW9uX3AuaAoraW5kZXggY2U2YmRiOWUuLmFlZDg4NjcwIDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRn c2hlbGx2NWludGVncmF0aW9uX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uX3Au aAorQEAgLTY3LDcgKzY3LDYgQEAgcHVibGljOgorICAgICBRV2F5bGFuZFhkZ1NoZWxsVjVJbnRl Z3JhdGlvbigpIHt9CisgICAgIGJvb2wgaW5pdGlhbGl6ZShRV2F5bGFuZERpc3BsYXkgKmRpc3Bs YXkpIG92ZXJyaWRlOworICAgICBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqY3JlYXRlU2hlbGxTdXJm YWNlKFFXYXlsYW5kV2luZG93ICp3aW5kb3cpIG92ZXJyaWRlOworLSAgICB2b2lkIGhhbmRsZUtl eWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5k b3cgKm9sZEZvY3VzKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRU2NvcGVkUG9pbnRl cjxRV2F5bGFuZFhkZ1NoZWxsVjU+IG1feGRnU2hlbGw7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hl bGx2Ni5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2LmNwcAoraW5kZXggOGMzNzE2NjEuLjE1MWM3OGUzIDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lu cy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjYuY3BwCitA QCAtMTc0LDYgKzE3NCw3IEBAIFFXYXlsYW5kWGRnU3VyZmFjZVY2OjpQb3B1cDo6UG9wdXAoUVdh eWxhbmRYZGdTdXJmYWNlVjYgKnhkZ1N1cmZhY2UsIFFXYXlsYW5kWGRnCisgICAgICwgbV94ZGdT dXJmYWNlKHhkZ1N1cmZhY2UpCisgICAgICwgbV9wYXJlbnQocGFyZW50KQorIHsKKysgICAgbV9w YXJlbnQtPndpbmRvdygpLT5hZGRDaGlsZFBvcHVwKG1feGRnU3VyZmFjZS0+d2luZG93KCkpOwor IH0KKyAKKyBRV2F5bGFuZFhkZ1N1cmZhY2VWNjo6UG9wdXA6On5Qb3B1cCgpCitAQCAtMTgxLDYg KzE4Miw4IEBAIFFXYXlsYW5kWGRnU3VyZmFjZVY2OjpQb3B1cDo6flBvcHVwKCkKKyAgICAgaWYg KGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgIGRlc3Ryb3koKTsKKyAKKysgICAgbV9wYXJlbnQt PndpbmRvdygpLT5yZW1vdmVDaGlsZFBvcHVwKG1feGRnU3VyZmFjZS0+d2luZG93KCkpOworKwor ICAgICBpZiAobV9ncmFiYmluZykgeworICAgICAgICAgYXV0byAqc2hlbGwgPSBtX3hkZ1N1cmZh Y2UtPm1fc2hlbGw7CisgICAgICAgICBRX0FTU0VSVChzaGVsbC0+bV90b3Btb3N0R3JhYmJpbmdQ b3B1cCA9PSB0aGlzKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxp bnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb24uY3Bw IGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3 YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcAoraW5kZXggMDMxNjQzMTYuLmU4ZGE4YmEx IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRn LXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcAorKysrIGIvcXR3YXls YW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRn c2hlbGx2NmludGVncmF0aW9uLmNwcAorQEAgLTY4LDIwICs2OCw2IEBAIFFXYXlsYW5kU2hlbGxT dXJmYWNlICpRV2F5bGFuZFhkZ1NoZWxsVjZJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hlbGxTdXJmYWNl KFFXYXlsYW5kCisgICAgIHJldHVybiBtX3hkZ1NoZWxsLT5nZXRYZGdTdXJmYWNlKHdpbmRvdyk7 CisgfQorIAorLXZvaWQgUVdheWxhbmRYZGdTaGVsbFY2SW50ZWdyYXRpb246OmhhbmRsZUtleWJv YXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cg Km9sZEZvY3VzKQorLXsKKy0gICAgaWYgKG5ld0ZvY3VzKSB7CistICAgICAgICBhdXRvICp4ZGdT dXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZVY2ICo+KG5ld0ZvY3VzLT5z aGVsbFN1cmZhY2UoKSk7CistICAgICAgICBpZiAoeGRnU3VyZmFjZSAmJiAheGRnU3VyZmFjZS0+ aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5k b3dBY3RpdmF0ZWQobmV3Rm9jdXMpOworLSAgICB9CistICAgIGlmIChvbGRGb2N1cyAmJiBxb2Jq ZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlVjYgKj4ob2xkRm9jdXMtPnNoZWxsU3VyZmFjZSgp KSkgeworLSAgICAgICAgYXV0byAqeGRnU3VyZmFjZSA9IHFvYmplY3RfY2FzdDxRV2F5bGFuZFhk Z1N1cmZhY2VWNiAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpOworLSAgICAgICAgaWYgKHhk Z1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNBY3RpdmVTdGF0ZSgpKQorLSAgICAgICAg ICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQob2xkRm9jdXMpOworLSAgICB9 CistfQorLQorIH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hl bGx2NmludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbl9wLmgKK2luZGV4 IDI2MWY4Y2JiLi5jMWJjZDVjNiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlv bl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1z aGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbl9wLmgKK0BAIC02NSw3ICs2NSw2 IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRYZGdTaGVsbFY2SW50ZWdyYXRpb24oKSB7fQorICAg ICBib29sIGluaXRpYWxpemUoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKyAg ICAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRv dyAqd2luZG93KSBvdmVycmlkZTsKKy0gICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdl ZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykgb3Zl cnJpZGU7CisgCisgcHJpdmF0ZToKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRYZGdTaGVs bFY2PiBtX3hkZ1NoZWxsOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsLmNwcCBiL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsLmNw cAoraW5kZXggZjNlM2MzMzAuLmZhNmQ1ODA4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9w bHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3BwCisr KysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdh eWxhbmR4ZGdzaGVsbC5jcHAKK0BAIC02NywxMSArNjcsNiBAQCBRV2F5bGFuZFhkZ1N1cmZhY2U6 OlRvcGxldmVsOjpUb3BsZXZlbChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZhY2UpCisgCisg UVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6flRvcGxldmVsKCkKKyB7CistICAgIGlmICht X2FwcGxpZWQuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgeworLSAgICAgICAgUVdheWxhbmRX aW5kb3cgKndpbmRvdyA9IG1feGRnU3VyZmFjZS0+d2luZG93KCk7CistICAgICAgICB3aW5kb3ct PmRpc3BsYXkoKS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQod2luZG93KTsKKy0gICAgfQorLQor ICAgICAvLyBUaGUgcHJvdG9jb2wgc3BlYyByZXF1aXJlcyB0aGF0IHRoZSBkZWNvcmF0aW9uIG9i amVjdCBpcyBkZWxldGVkIGJlZm9yZSB4ZGdfdG9wbGV2ZWwuCisgICAgIGRlbGV0ZSBtX2RlY29y YXRpb247CisgICAgIG1fZGVjb3JhdGlvbiA9IG51bGxwdHI7CitAQCAtODUsMTYgKzgwLDE1IEBA IHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6YXBwbHlDb25maWd1cmUoKQorICAg ICBpZiAoIShtX2FwcGxpZWQuc3RhdGVzICYgKFF0OjpXaW5kb3dNYXhpbWl6ZWR8UXQ6OldpbmRv d0Z1bGxTY3JlZW4pKSkKKyAgICAgICAgIG1fbm9ybWFsU2l6ZSA9IG1feGRnU3VyZmFjZS0+bV93 aW5kb3ctPndpbmRvd0ZyYW1lR2VvbWV0cnkoKS5zaXplKCk7CisgCistICAgIGlmICgobV9wZW5k aW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpICYmICEobV9hcHBsaWVkLnN0YXRlcyAmIFF0 OjpXaW5kb3dBY3RpdmUpKQorKyAgICBpZiAoKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2luZG93 QWN0aXZlKSAmJiAhKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKQorKyAgICAg ICAgJiYgIW1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmRpc3BsYXkoKS0+aXNLZXlib2FyZEF2YWls YWJsZSgpKQorICAgICAgICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ZGlzcGxheSgpLT5oYW5k bGVXaW5kb3dBY3RpdmF0ZWQobV94ZGdTdXJmYWNlLT5tX3dpbmRvdyk7CisgCistICAgIGlmICgh KG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSAmJiAobV9hcHBsaWVkLnN0YXRl cyAmIFF0OjpXaW5kb3dBY3RpdmUpKQorKyAgICBpZiAoIShtX3BlbmRpbmcuc3RhdGVzICYgUXQ6 OldpbmRvd0FjdGl2ZSkgJiYgKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKQor KyAgICAgICAgJiYgIW1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmRpc3BsYXkoKS0+aXNLZXlib2Fy ZEF2YWlsYWJsZSgpKQorICAgICAgICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ZGlzcGxheSgp LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChtX3hkZ1N1cmZhY2UtPm1fd2luZG93KTsKKyAKKy0g ICAgLy8gVE9ETzogbm9uZSBvZiB0aGUgb3RoZXIgcGx1Z2lucyBzZW5kIFdpbmRvd0FjdGl2ZSBl aXRoZXIsIGJ1dCBpcyBpdCBvbiBwdXJwb3NlPworLSAgICBRdDo6V2luZG93U3RhdGVzIHN0YXRl c1dpdGhvdXRBY3RpdmUgPSBtX3BlbmRpbmcuc3RhdGVzICYgflF0OjpXaW5kb3dBY3RpdmU7Cist CistICAgIG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQo c3RhdGVzV2l0aG91dEFjdGl2ZSk7CisrICAgIG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmhhbmRs ZVdpbmRvd1N0YXRlc0NoYW5nZWQobV9wZW5kaW5nLnN0YXRlcyk7CisgCisgICAgIGlmIChtX3Bl bmRpbmcuc2l6ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgIC8vIEFuIGVtcHR5IHNpemUgaW4gdGhl IGNvbmZpZ3VyZSBtZWFucyBpdCdzIHVwIHRvIHRoZSBjbGllbnQgdG8gY2hvb3NlIHRoZSBzaXpl CitAQCAtMTA1LDggKzk5LDYgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjph cHBseUNvbmZpZ3VyZSgpCisgICAgICAgICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5yZXNpemVG cm9tQXBwbHlDb25maWd1cmUobV9wZW5kaW5nLnNpemUpOworICAgICB9CisgCistICAgIG1feGRn U3VyZmFjZS0+c2V0U2l6ZUhpbnRzKCk7CistCisgICAgIG1fYXBwbGllZCA9IG1fcGVuZGluZzsK KyAgICAgcUNEZWJ1ZyhsY1FwYVdheWxhbmQpIDw8ICJBcHBsaWVkIHBlbmRpbmcgeGRnX3RvcGxl dmVsIGNvbmZpZ3VyZSBldmVudDoiIDw8IG1fYXBwbGllZC5zaXplIDw8IG1fYXBwbGllZC5zdGF0 ZXM7CisgfQorQEAgLTIwMywxMiArMTk1LDE3IEBAIFF0V2F5bGFuZDo6eGRnX3RvcGxldmVsOjpy ZXNpemVfZWRnZSBRV2F5bGFuZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjpjb252ZXJ0VG9SZXNpCisg ICAgICAgICAgICAgICAgIHwgKChlZGdlcyAmIFF0OjpSaWdodEVkZ2UpID8gcmVzaXplX2VkZ2Vf cmlnaHQgOiAwKSk7CisgfQorIAorLVFXYXlsYW5kWGRnU3VyZmFjZTo6UG9wdXA6OlBvcHVwKFFX YXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRYZGdTdXJmYWNlICpwYXJlbnQs CisrUVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1cDo6UG9wdXAoUVdheWxhbmRYZGdTdXJmYWNlICp4 ZGdTdXJmYWNlLCBRV2F5bGFuZFdpbmRvdyAqcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXIgKnBvc2l0aW9uZXIpCistICAg IDogeGRnX3BvcHVwKHhkZ1N1cmZhY2UtPmdldF9wb3B1cChwYXJlbnQtPm9iamVjdCgpLCBwb3Np dGlvbmVyLT5vYmplY3QoKSkpCistICAgICwgbV94ZGdTdXJmYWNlKHhkZ1N1cmZhY2UpCisrICAg IDogbV94ZGdTdXJmYWNlKHhkZ1N1cmZhY2UpCisrICAgICwgbV9wYXJlbnRYZGdTdXJmYWNlKHFv YmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4ocGFyZW50LT5zaGVsbFN1cmZhY2UoKSkp CisgICAgICwgbV9wYXJlbnQocGFyZW50KQorIHsKKysKKysgICAgaW5pdCh4ZGdTdXJmYWNlLT5n ZXRfcG9wdXAobV9wYXJlbnRYZGdTdXJmYWNlID8gbV9wYXJlbnRYZGdTdXJmYWNlLT5vYmplY3Qo KSA6IG51bGxwdHIsIHBvc2l0aW9uZXItPm9iamVjdCgpKSk7CisrICAgIGlmIChtX3BhcmVudCkg eworKyAgICAgICAgbV9wYXJlbnQtPmFkZENoaWxkUG9wdXAobV94ZGdTdXJmYWNlLT53aW5kb3co KSk7CisrICAgIH0KKyB9CisgCisgUVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1cDo6flBvcHVwKCkK K0BAIC0yMTYsMTAgKzIxMywyNCBAQCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlBvcHVwOjp+UG9wdXAo KQorICAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAgICAgZGVzdHJveSgpOworIAorKyAg ICBpZiAobV9wYXJlbnQpIHsKKysgICAgICAgIG1fcGFyZW50LT5yZW1vdmVDaGlsZFBvcHVwKG1f eGRnU3VyZmFjZS0+d2luZG93KCkpOworKyAgICB9CisrCisgICAgIGlmIChtX2dyYWJiaW5nKSB7 CisgICAgICAgICBhdXRvICpzaGVsbCA9IG1feGRnU3VyZmFjZS0+bV9zaGVsbDsKKyAgICAgICAg IFFfQVNTRVJUKHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVwID09IHRoaXMpOworLSAgICAg ICAgc2hlbGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPSBtX3BhcmVudC0+bV9wb3B1cDsKKysg ICAgICAgIHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVwID0gbV9wYXJlbnRYZGdTdXJmYWNl ID8gbV9wYXJlbnRYZGdTdXJmYWNlLT5tX3BvcHVwIDogbnVsbHB0cjsKKysgICAgICAgIG1fZ3Jh YmJpbmcgPSBmYWxzZTsKKysKKysgICAgICAgIC8vIFN5bnRoZXNpemUgUXQgZW50ZXIvbGVhdmUg ZXZlbnRzIGZvciBwb3B1cAorKyAgICAgICAgUVdpbmRvdyAqbGVhdmUgPSBudWxscHRyOworKyAg ICAgICAgaWYgKG1feGRnU3VyZmFjZSAmJiBtX3hkZ1N1cmZhY2UtPndpbmRvdygpKQorKyAgICAg ICAgICAgIGxlYXZlID0gbV94ZGdTdXJmYWNlLT53aW5kb3coKS0+d2luZG93KCk7CisrICAgICAg ICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVMZWF2ZUV2ZW50KGxlYXZlKTsKKysKKysg ICAgICAgIGlmIChRV2luZG93ICplbnRlciA9IFFHdWlBcHBsaWNhdGlvbjo6dG9wTGV2ZWxBdChR Q3Vyc29yOjpwb3MoKSkpCisrICAgICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFu ZGxlRW50ZXJFdmVudChlbnRlciwgZW50ZXItPm1hcEZyb21HbG9iYWwoUUN1cnNvcjo6cG9zKCkp LCBRQ3Vyc29yOjpwb3MoKSk7CisgICAgIH0KKyB9CisgCitAQCAtMjU3LDYgKzI2OCw3IEBAIFFX YXlsYW5kWGRnU3VyZmFjZTo6UVdheWxhbmRYZGdTdXJmYWNlKFFXYXlsYW5kWGRnU2hlbGwgKnNo ZWxsLCA6OnhkZ19zdXJmYWNlICpzCisgICAgICAgICAgICAgICAgIG1fdG9wbGV2ZWwtPnNldF9w YXJlbnQocGFyZW50WGRnU3VyZmFjZS0+bV90b3BsZXZlbC0+b2JqZWN0KCkpOworICAgICAgICAg fQorICAgICB9CisrICAgIHNldFNpemVIaW50cygpOworIH0KKyAKKyBRV2F5bGFuZFhkZ1N1cmZh Y2U6On5RV2F5bGFuZFhkZ1N1cmZhY2UoKQorQEAgLTQwMCw4ICs0MTIsNiBAQCB2b2lkIFFXYXls YW5kWGRnU3VyZmFjZTo6c2V0UG9wdXAoUVdheWxhbmRXaW5kb3cgKnBhcmVudCkKKyB7CisgICAg IFFfQVNTRVJUKCFtX3RvcGxldmVsICYmICFtX3BvcHVwKTsKKyAKKy0gICAgYXV0byBwYXJlbnRY ZGdTdXJmYWNlID0gc3RhdGljX2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KHBhcmVudC0+c2hl bGxTdXJmYWNlKCkpOworLQorICAgICBhdXRvIHBvc2l0aW9uZXIgPSBuZXcgUXRXYXlsYW5kOjp4 ZGdfcG9zaXRpb25lcihtX3NoZWxsLT5jcmVhdGVfcG9zaXRpb25lcigpKTsKKyAgICAgLy8gc2V0 X3BvcHVwIGV4cGVjdHMgYSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgcGFyZW50CisgICAgIFFQ b2ludCB0cmFuc2llbnRQb3MgPSBtX3dpbmRvdy0+Z2VvbWV0cnkoKS50b3BMZWZ0KCk7IC8vIHRo aXMgaXMgYWJzb2x1dGUKK0BAIC00MTQsOCArNDI0LDkgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1cmZh Y2U6OnNldFBvcHVwKFFXYXlsYW5kV2luZG93ICpwYXJlbnQpCisgICAgIHBvc2l0aW9uZXItPnNl dF9hbmNob3IoUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lcjo6YW5jaG9yX3RvcF9sZWZ0KTsKKyAg ICAgcG9zaXRpb25lci0+c2V0X2dyYXZpdHkoUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lcjo6Z3Jh dml0eV9ib3R0b21fcmlnaHQpOworICAgICBwb3NpdGlvbmVyLT5zZXRfc2l6ZShtX3dpbmRvdy0+ Z2VvbWV0cnkoKS53aWR0aCgpLCBtX3dpbmRvdy0+Z2VvbWV0cnkoKS5oZWlnaHQoKSk7CistICAg IG1fcG9wdXAgPSBuZXcgUG9wdXAodGhpcywgcGFyZW50WGRnU3VyZmFjZSwgcG9zaXRpb25lcik7 CisrICAgIG1fcG9wdXAgPSBuZXcgUG9wdXAodGhpcywgcGFyZW50LCBwb3NpdGlvbmVyKTsKKyAg ICAgcG9zaXRpb25lci0+ZGVzdHJveSgpOworKworICAgICBkZWxldGUgcG9zaXRpb25lcjsKKyB9 CisgCitAQCAtNDM3LDYgKzQ0OCwyMyBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6c2V0R3Jh YlBvcHVwKFFXYXlsYW5kV2luZG93ICpwYXJlbnQsIFFXYXlsYW5kSW5wdXREZXZpYworICAgICB9 CisgICAgIHNldFBvcHVwKHBhcmVudCk7CisgICAgIG1fcG9wdXAtPmdyYWIoZGV2aWNlLCBzZXJp YWwpOworKworKyAgICAvLyBTeW50aGVzaXplIFF0IGVudGVyL2xlYXZlIGV2ZW50cyBmb3IgcG9w dXAKKysgICAgaWYgKCFwYXJlbnQpCisrICAgICAgICByZXR1cm47CisrICAgIFFXaW5kb3cgKmN1 cnJlbnQgPSBRR3VpQXBwbGljYXRpb246OnRvcExldmVsQXQoUUN1cnNvcjo6cG9zKCkpOworKyAg ICBRV2luZG93ICpsZWF2ZSA9IHBhcmVudC0+d2luZG93KCk7CisrICAgIGlmIChjdXJyZW50ICE9 IGxlYXZlKQorKyAgICAgICAgcmV0dXJuOworKworKyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNl OjpoYW5kbGVMZWF2ZUV2ZW50KGxlYXZlKTsKKysKKysgICAgUVdpbmRvdyAqZW50ZXIgPSBudWxs cHRyOworKyAgICBpZiAobV9wb3B1cCAmJiBtX3BvcHVwLT5tX3hkZ1N1cmZhY2UgJiYgbV9wb3B1 cC0+bV94ZGdTdXJmYWNlLT53aW5kb3coKSkKKysgICAgICAgIGVudGVyID0gbV9wb3B1cC0+bV94 ZGdTdXJmYWNlLT53aW5kb3coKS0+d2luZG93KCk7CisrCisrICAgIGlmIChlbnRlcikKKysgICAg ICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUVudGVyRXZlbnQoZW50ZXIsIGVudGVy LT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6OnBvcygpKSwgUUN1cnNvcjo6cG9zKCkpOworIH0KKyAK KyB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6eGRnX3N1cmZhY2VfY29uZmlndXJlKHVpbnQzMl90 IHNlcmlhbCkKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3Jh dGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbF9wLmggYi9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbF9wLmgKK2luZGV4 IDk2Nzg1MjA1Li40YjUxOGYwYSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsX3AuaAorKysrIGIvcXR3 YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRn c2hlbGxfcC5oCitAQCAtMTMxLDE0ICsxMzEsMTUgQEAgcHJpdmF0ZToKKyAKKyAgICAgY2xhc3Mg UG9wdXAgOiBwdWJsaWMgUXRXYXlsYW5kOjp4ZGdfcG9wdXAgeworICAgICBwdWJsaWM6CistICAg ICAgICBQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZhY2UsIFFXYXlsYW5kWGRnU3Vy ZmFjZSAqcGFyZW50LCBRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyICpwb3NpdGlvbmVyKTsKKysg ICAgICAgIFBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRXaW5k b3cgKnBhcmVudCwgUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lciAqcG9zaXRpb25lcik7CisgICAg ICAgICB+UG9wdXAoKSBvdmVycmlkZTsKKyAKKyAgICAgICAgIHZvaWQgZ3JhYihRV2F5bGFuZElu cHV0RGV2aWNlICpzZWF0LCB1aW50IHNlcmlhbCk7CisgICAgICAgICB2b2lkIHhkZ19wb3B1cF9w b3B1cF9kb25lKCkgb3ZlcnJpZGU7CisgCisgICAgICAgICBRV2F5bGFuZFhkZ1N1cmZhY2UgKm1f eGRnU3VyZmFjZSA9IG51bGxwdHI7CistICAgICAgICBRV2F5bGFuZFhkZ1N1cmZhY2UgKm1fcGFy ZW50ID0gbnVsbHB0cjsKKysgICAgICAgIFFXYXlsYW5kWGRnU3VyZmFjZSAqbV9wYXJlbnRYZGdT dXJmYWNlID0gbnVsbHB0cjsKKysgICAgICAgIFFXYXlsYW5kV2luZG93ICptX3BhcmVudCA9IG51 bGxwdHI7CisgICAgICAgICBib29sIG1fZ3JhYmJpbmcgPSBmYWxzZTsKKyAgICAgfTsKKyAKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lu cy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb24u Y3BwCitpbmRleCA4NzY5ZDk3MS4uZGEwZGQ2YTcgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVn cmF0aW9uLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24v eGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5jcHAKK0BAIC02OSwyMCArNjks NiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqUVdheWxhbmRYZGdTaGVsbEludGVncmF0aW9uOjpj cmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaQorICAgICByZXR1cm4gbV94ZGdTaGVsbC0+Z2V0 WGRnU3VyZmFjZSh3aW5kb3cpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kWGRnU2hlbGxJbnRlZ3Jh dGlvbjo6aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3Vz LCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpCisteworLSAgICBpZiAobmV3Rm9jdXMpIHsKKy0g ICAgICAgIGF1dG8gKnhkZ1N1cmZhY2UgPSBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNl ICo+KG5ld0ZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAgICAgICBpZiAoeGRnU3VyZmFjZSAm JiAheGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAgICAgICAgICAgbV9kaXNw bGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobmV3Rm9jdXMpOworLSAgICB9CistICAgIGlmIChv bGRGb2N1cyAmJiBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KG9sZEZvY3VzLT5z aGVsbFN1cmZhY2UoKSkpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1cmZhY2UgPSBxb2JqZWN0X2Nh c3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAg ICAgICBpZiAoeGRnU3VyZmFjZSAmJiAheGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkp CistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChvbGRGb2N1 cyk7CistICAgIH0KKy19CistCisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxh bmR4ZGdzaGVsbGludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGlu dGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb25fcC5oCitpbmRl eCBiNmNhYTZjOS4uMmY5MjlmOTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMv c2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uX3Au aAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxs L3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmgKK0BAIC02NSw3ICs2NSw2IEBAIHB1Ymxp YzoKKyAgICAgUVdheWxhbmRYZGdTaGVsbEludGVncmF0aW9uKCkge30KKyAgICAgYm9vbCBpbml0 aWFsaXplKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CisgICAgIFFXYXlsYW5k U2hlbGxTdXJmYWNlICpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaW5kb3cgKndpbmRvdykg b3ZlcnJpZGU7CistICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRX aW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpIG92ZXJyaWRlOworIAor IHByaXZhdGU6CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kWGRnU2hlbGw+IG1feGRnU2hl bGw7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRpbnB1dG1ldGhv ZGV2ZW50YnVpbGRlci5jcHAgYi9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZGlucHV0bWV0 aG9kZXZlbnRidWlsZGVyLmNwcAoraW5kZXggNTI2ZDBlZjQuLmY1MGNjZjMwIDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlci5j cHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1 aWxkZXIuY3BwCitAQCAtMzksNyArMzksMTAgQEAKKyAKKyAjaW5jbHVkZSAicXdheWxhbmRpbnB1 dG1ldGhvZGV2ZW50YnVpbGRlcl9wLmgiCisgCisrI2luY2x1ZGUgPFFCcnVzaD4KKysjaW5jbHVk ZSA8UUd1aUFwcGxpY2F0aW9uPgorICNpbmNsdWRlIDxRSW5wdXRNZXRob2Q+CisrI2luY2x1ZGUg PFFQYWxldHRlPgorICNpbmNsdWRlIDxRVGV4dENoYXJGb3JtYXQ+CisgCisgI2lmZGVmIFFUX0JV SUxEX1dBWUxBTkRDT01QT1NJVE9SX0xJQgorQEAgLTgxLDMyICs4NCwzOCBAQCB2b2lkIFFXYXls YW5kSW5wdXRNZXRob2RFdmVudEJ1aWxkZXI6OmFkZFByZWVkaXRTdHlsaW5nKHVpbnQzMl90IGlu ZGV4LCB1aW50MzJfdAorICAgICBRVGV4dENoYXJGb3JtYXQgZm9ybWF0OworIAorICAgICBzd2l0 Y2ggKHN0eWxlKSB7CistICAgIGNhc2UgMDoKKy0gICAgY2FzZSAxOgorKyAgICBjYXNlIFpXUF9U RVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfTk9ORToKKysgICAgICAgIGJyZWFrOworKyAgICBj YXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfREVGQVVMVDoKKysgICAgY2FzZSBa V1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX1VOREVSTElORToKKyAgICAgICAgIGZvcm1h dC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0 eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2luZ2xlVW5kZXJsaW5lKTsKKyAgICAgICAgIG1fcHJlZWRp dFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RF dmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisgICAgICAgICBicmVh azsKKy0gICAgY2FzZSAyOgorLSAgICBjYXNlIDM6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRf VjJfUFJFRURJVF9TVFlMRV9BQ1RJVkU6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJF RURJVF9TVFlMRV9JTkFDVElWRToKKyAgICAgICAgIGZvcm1hdC5zZXRGb250V2VpZ2h0KFFGb250 OjpCb2xkKTsKKyAgICAgICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworICAgICAg ICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2luZ2xlVW5kZXJs aW5lKTsKKyAgICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6 OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwg Zm9ybWF0KSk7CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSA0OgorLSAgICAgICAgZm9ybWF0 LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7CistICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5 bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUpOworLSAgICAgICAgbV9wcmVlZGl0 U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2 ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3JtYXQpKTsKKysgICAgY2FzZSBaV1Bf VEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX0hJR0hMSUdIVDoKKysgICAgY2FzZSBaV1BfVEVY VF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX1NFTEVDVElPTjoKKysgICAgICAgIHsKKysgICAgICAg ICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsKKysgICAgICAgICAgICBmb3JtYXQu c2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUpOworKyAg ICAgICAgICAgIFFQYWxldHRlIHBhbGV0dGUgPSBxQXBwLT5wYWxldHRlKCk7CisrICAgICAgICAg ICAgZm9ybWF0LnNldEJhY2tncm91bmQoUUJydXNoKHBhbGV0dGUuY29sb3IoUVBhbGV0dGU6OkFj dGl2ZSwgUVBhbGV0dGU6OkhpZ2hsaWdodCkpKTsKKysgICAgICAgICAgICBmb3JtYXQuc2V0Rm9y ZWdyb3VuZChRQnJ1c2gocGFsZXR0ZS5jb2xvcihRUGFsZXR0ZTo6QWN0aXZlLCBRUGFsZXR0ZTo6 SGlnaGxpZ2h0ZWRUZXh0KSkpOworKyAgICAgICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQo UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1h dCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisrICAgICAgICB9CisgICAgICAgICBicmVhazsK Ky0gICAgY2FzZSA1OgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVf SU5DT1JSRUNUOgorICAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7CisgICAg ICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpXYXZlVW5kZXJs aW5lKTsKKyAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVDb2xvcihRQ29sb3IoUXQ6OnJlZCkp OworICAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0 cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3Jt YXQpKTsKKyAgICAgICAgIGJyZWFrOworLS8vICAgIGNhc2UgUXRXYXlsYW5kOjp3bF90ZXh0X2lu cHV0OjpwcmVlZGl0X3N0eWxlX3NlbGVjdGlvbjoKKy0vLyAgICBjYXNlIFF0V2F5bGFuZDo6d2xf dGV4dF9pbnB1dDo6cHJlZWRpdF9zdHlsZV9ub25lOgorICAgICBkZWZhdWx0OgorICAgICAgICAg YnJlYWs7CisgICAgIH0KK0BAIC0xNTMsNyArMTYyLDcgQEAgUUlucHV0TWV0aG9kRXZlbnQgUVdh eWxhbmRJbnB1dE1ldGhvZEV2ZW50QnVpbGRlcjo6YnVpbGRQcmVlZGl0KGNvbnN0IFFTdHJpbmcg JnQKKyAKKyAgICAgaWYgKG1fcHJlZWRpdEN1cnNvciA8IDApIHsKKyAgICAgICAgIGF0dHJpYnV0 ZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6 OkN1cnNvciwgMCwgMCwgUVZhcmlhbnQoKSkpOworLSAgICB9IGVsc2UgaWYgKG1fcHJlZWRpdEN1 cnNvciA+IDApIHsKKysgICAgfSBlbHNlIHsKKyAgICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKFFJ bnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OkN1cnNvciwgaW5k ZXhGcm9tV2F5bGFuZCh0ZXh0LCBtX3ByZWVkaXRDdXJzb3IpLCAxLCBRVmFyaWFudCgpKSk7Cisg ICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZG1pbWVo ZWxwZXIuY3BwIGIvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcAor aW5kZXggYTVmZGQzNGQuLmUyZmUxOTI4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9zaGFy ZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdh eWxhbmRtaW1laGVscGVyLmNwcAorQEAgLTYwLDcgKzYwLDcgQEAgUUJ5dGVBcnJheSBRV2F5bGFu ZE1pbWVIZWxwZXI6OmdldEJ5dGVBcnJheShRTWltZURhdGEgKm1pbWVEYXRhLCBjb25zdCBRU3Ry aW5nICYKKyAgICAgICAgICAgICBidWYub3BlbihRSU9EZXZpY2U6OlJlYWRXcml0ZSk7CisgICAg ICAgICAgICAgUUJ5dGVBcnJheSBmbXQgPSAiQk1QIjsKKyAgICAgICAgICAgICBpZiAobWltZVR5 cGUuc3RhcnRzV2l0aChRTGF0aW4xU3RyaW5nKCJpbWFnZS8iKSkpIHsKKy0gICAgICAgICAgICAg ICAgUUJ5dGVBcnJheSBpbWdGbXQgPSBtaW1lVHlwZS5taWQoNikudG9VcHBlcigpLnRvTGF0aW4x KCk7CisrICAgICAgICAgICAgICAgIFFCeXRlQXJyYXkgaW1nRm10ID0gbWltZVR5cGUubWlkKDYp LnRvTG93ZXIoKS50b0xhdGluMSgpOworICAgICAgICAgICAgICAgICBpZiAoUUltYWdlV3JpdGVy OjpzdXBwb3J0ZWRJbWFnZUZvcm1hdHMoKS5jb250YWlucyhpbWdGbXQpKQorICAgICAgICAgICAg ICAgICAgICAgZm10ID0gaW1nRm10OworICAgICAgICAgICAgIH0KK0BAIC03NCw3ICs3NCw3IEBA IFFCeXRlQXJyYXkgUVdheWxhbmRNaW1lSGVscGVyOjpnZXRCeXRlQXJyYXkoUU1pbWVEYXRhICpt aW1lRGF0YSwgY29uc3QgUVN0cmluZyAmCisgICAgICAgICBRTGlzdDxRVXJsPiB1cmxzID0gbWlt ZURhdGEtPnVybHMoKTsKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdXJscy5jb3VudCgp OyArK2kpIHsKKyAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCh1cmxzLmF0KGkpLnRvRW5jb2Rl ZCgpKTsKKy0gICAgICAgICAgICBjb250ZW50LmFwcGVuZCgnXG4nKTsKKysgICAgICAgICAgICBj b250ZW50LmFwcGVuZCgiXHJcbiIpOworICAgICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAg ICAgY29udGVudCA9IG1pbWVEYXRhLT5kYXRhKG1pbWVUeXBlKTsKK2RpZmYgLS1naXQgYS9xdHdh eWxhbmQvdGVzdHMvYXV0by9jbGllbnQvZGF0YWRldmljZXYxL3RzdF9kYXRhZGV2aWNldjEuY3Bw IGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZpY2V2MS90c3RfZGF0YWRldmlj ZXYxLmNwcAoraW5kZXggMTU2OGIzYjkuLjA2NzQxMGQwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5k L3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZpY2V2MS90c3RfZGF0YWRldmljZXYxLmNwcAorKysr IGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2RhdGFkZXZpY2V2MS90c3RfZGF0YWRldmlj ZXYxLmNwcAorQEAgLTM1LDcgKzM1LDcgQEAKKyAKKyB1c2luZyBuYW1lc3BhY2UgTW9ja0NvbXBv c2l0b3I7CisgCistY29uc3RleHByIGludCBkYXRhRGV2aWNlVmVyc2lvbiA9IDE7CisrY29uc3Rl eHByIGludCBkYXRhRGV2aWNlVmVyc2lvbiA9IDM7CisgCisgY2xhc3MgRGF0YURldmljZUNvbXBv c2l0b3IgOiBwdWJsaWMgRGVmYXVsdENvbXBvc2l0b3IgeworIHB1YmxpYzoKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2VhdHY1L3RzdF9zZWF0djUuY3BwIGIvcXR3 YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAoraW5kZXggOTMx MmMyZTUuLjJlYTM4MmYxIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50 L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50 L3NlYXR2NS90c3Rfc2VhdHY1LmNwcAorQEAgLTczLDYgKzczLDcgQEAgcHJpdmF0ZSBzbG90czoK KyAgICAgdm9pZCBtdWx0aVRvdWNoKCk7CisgICAgIHZvaWQgbXVsdGlUb3VjaFVwQW5kTW90aW9u RnJhbWUoKTsKKyAgICAgdm9pZCB0YXBBbmRNb3ZlSW5TYW1lRnJhbWUoKTsKKysgICAgdm9pZCBj YW5jZWxUb3VjaCgpOworIH07CisgCisgdm9pZCB0c3Rfc2VhdHY1OjpiaW5kc1RvU2VhdCgpCitA QCAtNjQ2LDUgKzY0NywzNCBAQCB2b2lkIHRzdF9zZWF0djU6OnRhcEFuZE1vdmVJblNhbWVGcmFt ZSgpCisgICAgIFFUUllfQ09NUEFSRSh3aW5kb3cubV9ldmVudHMubGFzdCgpLnRvdWNoUG9pbnRz LmZpcnN0KCkuc3RhdGUoKSwgUXQ6OlRvdWNoUG9pbnRTdGF0ZTo6VG91Y2hQb2ludFJlbGVhc2Vk KTsKKyB9CisgCisrdm9pZCB0c3Rfc2VhdHY1OjpjYW5jZWxUb3VjaCgpCisreworKyAgICBUb3Vj aFdpbmRvdyB3aW5kb3c7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnU3VyZmFjZSgp ICYmIHhkZ1N1cmZhY2UoKS0+bV9jb21taXR0ZWRDb25maWd1cmVTZXJpYWwpOworKworKyAgICBl eGVjKFs9XSB7CisrICAgICAgICBhdXRvICp0ID0gdG91Y2goKTsKKysgICAgICAgIGF1dG8gKmMg PSBjbGllbnQoKTsKKysgICAgICAgIHQtPnNlbmREb3duKHhkZ1RvcGxldmVsKCktPnN1cmZhY2Uo KSwgezMyLCAzMn0sIDEpOworKyAgICAgICAgdC0+c2VuZEZyYW1lKGMpOworKyAgICAgICAgdC0+ c2VuZENhbmNlbChjKTsKKysgICAgICAgIHQtPnNlbmRGcmFtZShjKTsKKysgICAgfSk7CisrCisr ICAgIFFUUllfVkVSSUZZKCF3aW5kb3cubV9ldmVudHMuZW1wdHkoKSk7CisrICAgIHsKKysgICAg ICAgIGF1dG8gZSA9IHdpbmRvdy5tX2V2ZW50cy50YWtlRmlyc3QoKTsKKysgICAgICAgIFFDT01Q QVJFKGUudHlwZSwgUUV2ZW50OjpUb3VjaEJlZ2luKTsKKysgICAgICAgIFFDT01QQVJFKGUudG91 Y2hQb2ludFN0YXRlcywgUXQ6OlRvdWNoUG9pbnRQcmVzc2VkKTsKKysgICAgICAgIFFDT01QQVJF KGUudG91Y2hQb2ludHMubGVuZ3RoKCksIDEpOworKyAgICAgICAgUUNPTVBBUkUoZS50b3VjaFBv aW50cy5maXJzdCgpLnBvcygpLCBRUG9pbnRGKDMyLXdpbmRvdy5mcmFtZU1hcmdpbnMoKS5sZWZ0 KCksIDMyLXdpbmRvdy5mcmFtZU1hcmdpbnMoKS50b3AoKSkpOworKyAgICB9CisrICAgIHsKKysg ICAgICAgIGF1dG8gZSA9IHdpbmRvdy5tX2V2ZW50cy50YWtlRmlyc3QoKTsKKysgICAgICAgIFFD T01QQVJFKGUudHlwZSwgUUV2ZW50OjpUb3VjaENhbmNlbCk7CisrICAgICAgICBRQ09NUEFSRShl LnRvdWNoUG9pbnRzLmxlbmd0aCgpLCAwKTsKKysgICAgfQorK30KKysKKyBRQ09NUE9TSVRPUl9U RVNUX01BSU4odHN0X3NlYXR2NSkKKyAjaW5jbHVkZSAidHN0X3NlYXR2NS5tb2MiCitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlY29tcG9zaXRvci5j cHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVjb21wb3NpdG9yLmNw cAoraW5kZXggNWM2YzgzYmEuLmZhOWI3NjYyIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3Rz L2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlY29tcG9zaXRvci5jcHAKKysrKyBiL3F0d2F5bGFuZC90 ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZWNvbXBvc2l0b3IuY3BwCitAQCAtMjcsNiArMjcs NyBAQAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisgCisgI2luY2x1ZGUgImNvcmVjb21wb3NpdG9y LmgiCisrI2luY2x1ZGUgPHRocmVhZD4KKyAKKyBuYW1lc3BhY2UgTW9ja0NvbXBvc2l0b3Igewor IAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXBy b3RvY29sLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3Rv Y29sLmNwcAoraW5kZXggMGQ5ODg1MjEuLmQxYTJlN2NiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5k L3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuY3BwCisrKysgYi9xdHdheWxh bmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAKK0BAIC00NTEsNiAr NDUxLDEzIEBAIHZvaWQgVG91Y2g6OnNlbmRGcmFtZSh3bF9jbGllbnQgKmNsaWVudCkKKyAgICAg ICAgIHNlbmRfZnJhbWUoci0+aGFuZGxlKTsKKyB9CisgCisrdm9pZCBUb3VjaDo6c2VuZENhbmNl bCh3bF9jbGllbnQgKmNsaWVudCkKKyt7CisrICAgIGNvbnN0IGF1dG8gdG91Y2hSZXNvdXJjZXMg PSByZXNvdXJjZU1hcCgpLnZhbHVlcyhjbGllbnQpOworKyAgICBmb3IgKGF1dG8gKnIgOiB0b3Vj aFJlc291cmNlcykKKysgICAgICAgIHNlbmRfY2FuY2VsKHItPmhhbmRsZSk7CisrfQorKworIHVp bnQgS2V5Ym9hcmQ6OnNlbmRFbnRlcihTdXJmYWNlICpzdXJmYWNlKQorIHsKKyAgICAgYXV0byBz ZXJpYWwgPSBtX3NlYXQtPm1fY29tcG9zaXRvci0+bmV4dFNlcmlhbCgpOworZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmggYi9xdHdh eWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oCitpbmRleCBhMWFm MTM3YS4uMjEwZDhkZGIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQv c2hhcmVkL2NvcmVwcm90b2NvbC5oCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQv c2hhcmVkL2NvcmVwcm90b2NvbC5oCitAQCAtMTU4LDcgKzE1OCw3IEBAIGNsYXNzIFdsQ29tcG9z aXRvciA6IHB1YmxpYyBHbG9iYWwsIHB1YmxpYyBRdFdheWxhbmRTZXJ2ZXI6OndsX2NvbXBvc2l0 b3IKKyB7CisgICAgIFFfT0JKRUNUCisgcHVibGljOgorLSAgICBleHBsaWNpdCBXbENvbXBvc2l0 b3IoQ29yZUNvbXBvc2l0b3IgKmNvbXBvc2l0b3IsIGludCB2ZXJzaW9uID0gMykKKysgICAgZXhw bGljaXQgV2xDb21wb3NpdG9yKENvcmVDb21wb3NpdG9yICpjb21wb3NpdG9yLCBpbnQgdmVyc2lv biA9IDQpCisgICAgICAgICA6IFF0V2F5bGFuZFNlcnZlcjo6d2xfY29tcG9zaXRvcihjb21wb3Np dG9yLT5tX2Rpc3BsYXksIHZlcnNpb24pCisgICAgICAgICAsIG1fY29tcG9zaXRvcihjb21wb3Np dG9yKQorICAgICB7fQorQEAgLTM2NCw2ICszNjQsNyBAQCBwdWJsaWM6CisgICAgIHVpbnQgc2Vu ZFVwKHdsX2NsaWVudCAqY2xpZW50LCBpbnQgaWQpOworICAgICB2b2lkIHNlbmRNb3Rpb24od2xf Y2xpZW50ICpjbGllbnQsIGNvbnN0IFFQb2ludEYgJnBvc2l0aW9uLCBpbnQgaWQpOworICAgICB2 b2lkIHNlbmRGcmFtZSh3bF9jbGllbnQgKmNsaWVudCk7CisrICAgIHZvaWQgc2VuZENhbmNlbCh3 bF9jbGllbnQgKmNsaWVudCk7CisgCisgICAgIFNlYXQgKm1fc2VhdCA9IG51bGxwdHI7CisgfTsK K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nr Y29tcG9zaXRvci5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9t b2NrY29tcG9zaXRvci5jcHAKK2luZGV4IGE0MTVjYmY1Li5iMWQzZDA3ZCAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tjb21wb3NpdG9yLmNw cAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBv c2l0b3IuY3BwCitAQCAtMzQyLDcgKzM0Miw3IEBAIENvbXBvc2l0b3I6OkNvbXBvc2l0b3IoTW9j a0NvbXBvc2l0b3IgKm1vY2tDb21wb3NpdG9yKQorICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUp OworICAgICB9CisgCistICAgIHdsX2dsb2JhbF9jcmVhdGUobV9kaXNwbGF5LCAmd2xfY29tcG9z aXRvcl9pbnRlcmZhY2UsIDEsIHRoaXMsIGJpbmRDb21wb3NpdG9yKTsKKysgICAgd2xfZ2xvYmFs X2NyZWF0ZShtX2Rpc3BsYXksICZ3bF9jb21wb3NpdG9yX2ludGVyZmFjZSwgNCwgdGhpcywgYmlu ZENvbXBvc2l0b3IpOworIAorICAgICBtX2RhdGFfZGV2aWNlX21hbmFnZXIucmVzZXQobmV3IERh dGFEZXZpY2VNYW5hZ2VyKHRoaXMsIG1fZGlzcGxheSkpOworIAorZGlmZiAtLWdpdCBhL3F0d2F5 bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmNwcCBiL3F0d2F5 bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmNwcAoraW5kZXgg ZTlkZjVmOTAuLmMzMjQ2ZTRhIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xp ZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0 by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5jcHAKK0BAIC0xMjUsNiArMTI1LDE2IEBA IHZvaWQgU3VyZmFjZTo6c3VyZmFjZV9kYW1hZ2UoUmVzb3VyY2UgKnJlc291cmNlLAorICAgICBR X1VOVVNFRChoZWlnaHQpOworIH0KKyAKKyt2b2lkIFN1cmZhY2U6OnN1cmZhY2VfZGFtYWdlX2J1 ZmZlcihSZXNvdXJjZSAqcmVzb3VyY2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50MzJfdCB4LCBpbnQzMl90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0 KQorK3sKKysgICAgUV9VTlVTRUQocmVzb3VyY2UpOworKyAgICBRX1VOVVNFRCh4KTsKKysgICAg UV9VTlVTRUQoeSk7CisrICAgIFFfVU5VU0VEKHdpZHRoKTsKKysgICAgUV9VTlVTRUQoaGVpZ2h0 KTsKKyt9CisrCisgdm9pZCBTdXJmYWNlOjpzdXJmYWNlX2ZyYW1lKFJlc291cmNlICpyZXNvdXJj ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY2FsbGJhY2spCisgewor ZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tz dXJmYWNlLmggYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3Vy ZmFjZS5oCitpbmRleCA5NDlkYzIzZC4uZDE3NjgzN2UgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQv dGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5oCisrKysgYi9xdHdheWxh bmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5oCitAQCAtNjUsNiAr NjUsOCBAQCBwcm90ZWN0ZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHdsX3Jl c291cmNlICpidWZmZXIsIGludCB4LCBpbnQgeSkgb3ZlcnJpZGU7CisgICAgIHZvaWQgc3VyZmFj ZV9kYW1hZ2UoUmVzb3VyY2UgKnJlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlu dDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkgb3ZlcnJp ZGU7CisrICAgIHZvaWQgc3VyZmFjZV9kYW1hZ2VfYnVmZmVyKFJlc291cmNlICpyZXNvdXJjZSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB4LCBpbnQzMl90IHksIGlu dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICAgdm9pZCBzdXJmYWNl X2ZyYW1lKFJlc291cmNlICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IGNhbGxiYWNrKSBvdmVycmlkZTsKKyAgICAgdm9pZCBzdXJmYWNlX2NvbW1pdChSZXNvdXJj ZSAqcmVzb3VyY2UpIG92ZXJyaWRlOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRv L2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2Ns aWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcAoraW5kZXggOTVlNGU2MDkuLjYwYzY3MmNlIDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3N1cmZhY2UvdHN0X3N1cmZh Y2UuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3Vy ZmFjZS5jcHAKK0BAIC0xMjksNiArMTI5LDEwIEBAIHZvaWQgdHN0X3N1cmZhY2U6OndhaXRGb3JG cmFtZUNhbGxiYWNrR2woKQorICAgICAvLyBNYWtlIHN1cmUgd2UgZm9sbG93IGZyYW1lIGNhbGxi YWNrcyBmb3Igc29tZSBmcmFtZXMKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyArK2kpIHsK KyAgICAgICAgIHhkZ1BpbmdBbmRXYWl0Rm9yUG9uZygpOyAvLyBNYWtlIHN1cmUgdGhpbmdzIGhh dmUgaGFwcGVuZWQgb24gdGhlIGNsaWVudAorKyAgICAgICAgaWYgKCFxRW52aXJvbm1lbnRWYXJp YWJsZUludFZhbHVlKCJRVF9XQVlMQU5EX0RJU0FCTEVfV0lORE9XREVDT1JBVElPTiIpICYmIGkg PT0gMCkgeworKyAgICAgICAgICAgIFFDT01QQVJFKGJ1ZmZlclNweS5jb3VudCgpLCAxKTsKKysg ICAgICAgICAgICBidWZmZXJTcHkucmVtb3ZlRmlyc3QoKTsKKysgICAgICAgIH0KKyAgICAgICAg IGV4ZWMoWyZdIHsKKyAgICAgICAgICAgICBRVkVSSUZZKGJ1ZmZlclNweS5lbXB0eSgpKTsgLy8g TWFrZSBzdXJlIG5vIGV4dHJhIGJ1ZmZlcnMgaGF2ZSBhcnJpdmVkCisgICAgICAgICAgICAgUVZF UklGWSgheGRnVG9wbGV2ZWwoKS0+c3VyZmFjZSgpLT5tX3dhaXRpbmdGcmFtZUNhbGxiYWNrcy5l bXB0eSgpKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQveGRnc2hl bGwvdHN0X3hkZ3NoZWxsLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC94ZGdzaGVs bC90c3RfeGRnc2hlbGwuY3BwCitpbmRleCAyMjc3YmJiOC4uNzQ3ODc1YjQgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcAor KysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3hkZ3NoZWxsL3RzdF94ZGdzaGVsbC5j cHAKK0BAIC0zMSw2ICszMSw3IEBACisgI2luY2x1ZGUgPFF0R3VpL1FPcGVuR0xXaW5kb3c+Cisg I2luY2x1ZGUgPFF0R3VpL3FwYS9xcGxhdGZvcm1uYXRpdmVpbnRlcmZhY2UuaD4KKyAjaW5jbHVk ZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvd2F5bGFuZC13YXlsYW5kLWNsaWVudC1wcm90b2Nv bC5oPgorKyNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQvcHJpdmF0ZS9xd2F5bGFuZHdpbmRvd19w Lmg+CisgCisgdXNpbmcgbmFtZXNwYWNlIE1vY2tDb21wb3NpdG9yOworIAorQEAgLTQ1LDYgKzQ2 LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBjb25maWd1cmVTdGF0ZXMoKTsKKyAgICAg dm9pZCBwb3B1cCgpOworICAgICB2b2lkIHRvb2x0aXBPblBvcHVwKCk7CisrICAgIHZvaWQgdG9v bHRpcEFuZFNpYmxpbmdQb3B1cCgpOworICAgICB2b2lkIHN3aXRjaFBvcHVwcygpOworICAgICB2 b2lkIGhpZGVQb3B1cFBhcmVudCgpOworICAgICB2b2lkIHBvbmdzKCk7CitAQCAtMTM4LDYgKzE0 MCw3IEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjpjb25maWd1cmVTaXplKCkKKyAKKyB2b2lkIHRzdF94 ZGdzaGVsbDo6Y29uZmlndXJlU3RhdGVzKCkKKyB7CisrICAgIFFWRVJJRlkocXB1dGVudigiUVRf V0FZTEFORF9GUkFNRV9DQUxMQkFDS19USU1FT1VUIiwgIjAiKSk7CisgICAgIFFSYXN0ZXJXaW5k b3cgd2luZG93OworICAgICB3aW5kb3cucmVzaXplKDY0LCA0OCk7CisgICAgIHdpbmRvdy5zaG93 KCk7CitAQCAtMTU0LDkgKzE1NywxMiBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmlndXJlU3Rh dGVzKCkKKyAgICAgLy8gVG9wbGV2ZWwgd2luZG93cyBkb24ndCBrbm93IHRoZWlyIHBvc2l0aW9u IG9uIHhkZy1zaGVsbAorIC8vICAgIFFDT01QQVJFKHdpbmRvdy5mcmFtZUdlb21ldHJ5KCkudG9w TGVmdCgpLCBRUG9pbnQoKSk7IC8vIFRPRE86IHRoaXMgZG9lc24ndCBjdXJyZW50bHkgd29yayB3 aGVuIHdpbmRvdyBkZWNvcmF0aW9ucyBhcmUgZW5hYmxlZAorIAorLS8vICAgIFFFWFBFQ1RfRkFJ TCgiIiwgImNvbmZpZ3VyZSBoYXMgYWxyZWFkeSBiZWVuIGFja2VkLCB3ZSBzaG91bGRuJ3QgaGF2 ZSB0byB3YWl0IGZvciBpc0FjdGl2ZSIsIENvbnRpbnVlKTsKKy0vLyAgICBRVkVSSUZZKHdpbmRv dy5pc0FjdGl2ZSgpKTsKKy0gICAgUVRSWV9WRVJJRlkod2luZG93LmlzQWN0aXZlKCkpOyAvLyBK dXN0IG1ha2Ugc3VyZSBpdCBldmVudHVhbGx5IGdldCdzIHNldCBjb3JyZWN0bHkKKysgICAgLy8g d2luZG93LndpbmRvd3N0YXRlKCkgaXMgZHJpdmVuIGJ5IGtleWJvYXJkIGZvY3VzLCBob3dldmVy IGZvciBkZWNvcmF0aW9ucyB3ZSB3YW50IHRvIGZvbGxvdworKyAgICAvLyBYREdTaGVsbCB0aGlz IGlzIGludGVybmFsIHRvIFF0V2F5bGFuZCBzbyBpdCBpcyBxdWVyaWVkIGRpcmVjdGx5CisrICAg IGF1dG8gd2F5bGFuZFdpbmRvdyA9IHN0YXRpY19jYXN0PFF0V2F5bGFuZENsaWVudDo6UVdheWxh bmRXaW5kb3cgKj4od2luZG93LmhhbmRsZSgpKTsKKysgICAgUV9BU1NFUlQod2F5bGFuZFdpbmRv dyk7CisrICAgIFFUUllfVkVSSUZZKHdheWxhbmRXaW5kb3ctPndpbmRvd1N0YXRlcygpLnRlc3RG bGFnKAorKyAgICAgICAgICAgIFF0OjpXaW5kb3dBY3RpdmUpKTsgLy8gSnVzdCBtYWtlIHN1cmUg aXQgZXZlbnR1YWxseSBnZXQncyBzZXQgY29ycmVjdGx5CisgCisgICAgIGNvbnN0IFFTaXplIHNj cmVlblNpemUoNjQwLCA0ODApOworICAgICBjb25zdCB1aW50IG1heGltaXplZFNlcmlhbCA9IGV4 ZWMoWz1dIHsKK0BAIC0xODYsNiArMTkyLDcgQEAgdm9pZCB0c3RfeGRnc2hlbGw6OmNvbmZpZ3Vy ZVN0YXRlcygpCisgICAgIFFDT01QQVJFKHdpbmRvdy53aW5kb3dTdGF0ZXMoKSwgUXQ6OldpbmRv d05vU3RhdGUpOworICAgICBRQ09NUEFSRSh3aW5kb3cuZnJhbWVHZW9tZXRyeSgpLnNpemUoKSwg d2luZG93ZWRTaXplKTsKKyAvLyAgICBRQ09NUEFSRSh3aW5kb3cuZnJhbWVHZW9tZXRyeSgpLnRv cExlZnQoKSwgUVBvaW50KCkpOyAvLyBUT0RPOiB0aGlzIGRvZXNuJ3QgY3VycmVudGx5IHdvcmsg d2hlbiB3aW5kb3cgZGVjb3JhdGlvbnMgYXJlIGVuYWJsZWQKKysgICAgUVZFUklGWShxdW5zZXRl bnYoIlFUX1dBWUxBTkRfRlJBTUVfQ0FMTEJBQ0tfVElNRU9VVCIpKTsKKyB9CisgCisgdm9pZCB0 c3RfeGRnc2hlbGw6OnBvcHVwKCkKK0BAIC0zNDAsNiArMzQ3LDkyIEBAIHZvaWQgdHN0X3hkZ3No ZWxsOjp0b29sdGlwT25Qb3B1cCgpCisgICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1Bv cHVwKDApLCBudWxscHRyKTsKKyB9CisgCisrdm9pZCB0c3RfeGRnc2hlbGw6OnRvb2x0aXBBbmRT aWJsaW5nUG9wdXAoKQorK3sKKysgICAgY2xhc3MgVG9vbFRpcCA6IHB1YmxpYyBRUmFzdGVyV2lu ZG93IHsKKysgICAgcHVibGljOgorKyAgICAgICAgZXhwbGljaXQgVG9vbFRpcChRV2luZG93ICpw YXJlbnQpIHsKKysgICAgICAgICAgICBzZXRUcmFuc2llbnRQYXJlbnQocGFyZW50KTsKKysgICAg ICAgICAgICBzZXRGbGFncyhRdDo6VG9vbFRpcCk7CisrICAgICAgICAgICAgcmVzaXplKDEwMCwg MTAwKTsKKysgICAgICAgICAgICBzaG93KCk7CisrICAgICAgICB9CisrICAgICAgICB2b2lkIG1v dXNlUHJlc3NFdmVudChRTW91c2VFdmVudCAqZXZlbnQpIG92ZXJyaWRlIHsKKysgICAgICAgICAg ICBRUmFzdGVyV2luZG93Ojptb3VzZVByZXNzRXZlbnQoZXZlbnQpOworKyAgICAgICAgICAgIG1f cG9wdXAgPSBuZXcgUVJhc3RlcldpbmRvdzsKKysgICAgICAgICAgICBtX3BvcHVwLT5zZXRUcmFu c2llbnRQYXJlbnQodHJhbnNpZW50UGFyZW50KCkpOworKyAgICAgICAgICAgIG1fcG9wdXAtPnNl dEZsYWdzKFF0OjpQb3B1cCk7CisrICAgICAgICAgICAgbV9wb3B1cC0+cmVzaXplKDEwMCwgMTAw KTsKKysgICAgICAgICAgICBtX3BvcHVwLT5zaG93KCk7CisrICAgICAgICB9CisrCisrICAgICAg ICBRUmFzdGVyV2luZG93ICptX3BvcHVwID0gbnVsbHB0cjsKKysgICAgfTsKKysKKysgICAgY2xh c3MgV2luZG93IDogcHVibGljIFFSYXN0ZXJXaW5kb3cgeworKyAgICBwdWJsaWM6CisrICAgICAg ICB2b2lkIG1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVudCAqZXZlbnQpIG92ZXJyaWRlIHsKKysg ICAgICAgICAgICBRUmFzdGVyV2luZG93Ojptb3VzZVByZXNzRXZlbnQoZXZlbnQpOworKyAgICAg ICAgICAgIG1fdG9vbHRpcCA9IG5ldyBUb29sVGlwKHRoaXMpOworKyAgICAgICAgfQorKyAgICAg ICAgVG9vbFRpcCAqbV90b29sdGlwID0gbnVsbHB0cjsKKysgICAgfTsKKysKKysgICAgV2luZG93 IHdpbmRvdzsKKysgICAgd2luZG93LnJlc2l6ZSgyMDAsIDIwMCk7CisrICAgIHdpbmRvdy5zaG93 KCk7CisrCisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnVG9wbGV2ZWwoKSk7CisrICAg IGV4ZWMoWz1dIHsgeGRnVG9wbGV2ZWwoKS0+c2VuZENvbXBsZXRlQ29uZmlndXJlKCk7IH0pOwor KyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1RvcGxldmVsKCktPm1feGRnU3VyZmFjZS0+ bV9jb21taXR0ZWRDb25maWd1cmVTZXJpYWwpOworKworKyAgICBleGVjKFs9XSB7CisrICAgICAg ICBhdXRvICpzdXJmYWNlID0geGRnVG9wbGV2ZWwoKS0+c3VyZmFjZSgpOworKyAgICAgICAgYXV0 byAqcCA9IHBvaW50ZXIoKTsKKysgICAgICAgIGF1dG8gKmMgPSBjbGllbnQoKTsKKysgICAgICAg IHAtPnNlbmRFbnRlcihzdXJmYWNlLCB7MTAwLCAxMDB9KTsKKysgICAgICAgIHAtPnNlbmRGcmFt ZShjKTsKKysgICAgICAgIHAtPnNlbmRCdXR0b24oY2xpZW50KCksIEJUTl9MRUZULCBQb2ludGVy OjpidXR0b25fc3RhdGVfcHJlc3NlZCk7CisrICAgICAgICBwLT5zZW5kQnV0dG9uKGNsaWVudCgp LCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9uX3N0YXRlX3JlbGVhc2VkKTsKKysgICAgICAgIHAt PnNlbmRGcmFtZShjKTsKKysgICAgICAgIHAtPnNlbmRMZWF2ZShzdXJmYWNlKTsKKysgICAgICAg IHAtPnNlbmRGcmFtZShjKTsKKysgICAgfSk7CisrCisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJ RlkoeGRnUG9wdXAoKSk7CisrICAgIGV4ZWMoWz1dIHsgeGRnUG9wdXAoKS0+c2VuZENvbXBsZXRl Q29uZmlndXJlKFFSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOyB9KTsKKysgICAgUUNPTVBPU0lU T1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgpLT5tX3hkZ1N1cmZhY2UtPm1fY29tbWl0dGVkQ29uZmln dXJlU2VyaWFsKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSgheGRnUG9wdXAoKS0+bV9n cmFiYmVkKTsKKysKKysgICAgZXhlYyhbPV0geworKyAgICAgICAgYXV0byAqc3VyZmFjZSA9IHhk Z1BvcHVwKCktPnN1cmZhY2UoKTsKKysgICAgICAgIGF1dG8gKnAgPSBwb2ludGVyKCk7CisrICAg ICAgICBhdXRvICpjID0gY2xpZW50KCk7CisrICAgICAgICBwLT5zZW5kRW50ZXIoc3VyZmFjZSwg ezEwMCwgMTAwfSk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgICAgICBwLT5zZW5k QnV0dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9uX3N0YXRlX3ByZXNzZWQp OworKyAgICAgICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xFRlQsIFBvaW50ZXI6OmJ1 dHRvbl9zdGF0ZV9yZWxlYXNlZCk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgIH0p OworKworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDEpKTsKKysgICAgZXhl YyhbPV0geyB4ZGdQb3B1cCgxKS0+c2VuZENvbXBsZXRlQ29uZmlndXJlKFFSZWN0KDEwMCwgMTAw LCAxMDAsIDEwMCkpOyB9KTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgx KS0+bV94ZGdTdXJmYWNlLT5tX2NvbW1pdHRlZENvbmZpZ3VyZVNlcmlhbCk7CisrICAgIFFDT01Q T1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMSktPm1fZ3JhYmJlZCk7CisrCisrICAgIC8vIENs b3NlIHRoZSBtaWRkbGUgdG9vbHRpcCAoaXQgc2hvdWxkIG5vdCBjbG9zZSB0aGUgc2libGluZyBw b3B1cCkKKysgICAgd2luZG93Lm1fdG9vbHRpcC0+Y2xvc2UoKTsKKysKKysgICAgUUNPTVBPU0lU T1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAoMSksIG51bGxwdHIpOworKyAgICAvLyBWZXJpZnkgdGhl IHJlbWFpbmluZyB4ZGcgc3VyZmFjZSBpcyBhIGdyYWIgcG9wdXAuLgorKyAgICBRQ09NUE9TSVRP Ul9UUllfVkVSSUZZKHhkZ1BvcHVwKDApKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4 ZGdQb3B1cCgwKS0+bV9ncmFiYmVkKTsKKysKKysgICAgd2luZG93Lm1fdG9vbHRpcC0+bV9wb3B1 cC0+Y2xvc2UoKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAoMSksIG51 bGxwdHIpOworKyAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdQb3B1cCgwKSwgbnVsbHB0 cik7CisrfQorKworIC8vIFFUQlVHLTY1NjgwCisgdm9pZCB0c3RfeGRnc2hlbGw6OnN3aXRjaFBv cHVwcygpCisgeworQEAgLTUwNSw3ICs1OTgsNyBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6bWluTWF4 U2l6ZSgpCisgICAgIHdpbmRvdy5zaG93KCk7CisgICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlko eGRnVG9wbGV2ZWwoKSk7CisgCistICAgIGV4ZWMoWz1dIHsgeGRnVG9wbGV2ZWwoKS0+c2VuZENv bXBsZXRlQ29uZmlndXJlKCk7IH0pOworKyAgICAvLyB3ZSBkb24ndCByb3VuZHRyaXAgd2l0aCBv dXIgY29uZmlndXJhdGlvbiB0aGUgaW5pdGlhbCBjb21taXQgc2hvdWxkIGJlIGNvcnJlY3QKKyAK KyAgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnVG9wbGV2ZWwoKS0+bV9jb21taXR0ZWQu bWluU2l6ZSwgUVNpemUoMTAwLCAxMDApKTsKKyAgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUo eGRnVG9wbGV2ZWwoKS0+bV9jb21taXR0ZWQubWF4U2l6ZSwgUVNpemUoMTAwMCwgMTAwMCkpOwor U3VibW9kdWxlIHF0d2ViY2hhbm5lbCA2MTg0MjJlZS4uZjg5NDk2NTU6CitkaWZmIC0tZ2l0IGEv cXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyLmNwcCBiL3F0 d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlci5jcHAKK2luZGV4 IDUzNmViNWMuLjg5OGQ3NjkgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5u ZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwCisrKysgYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNo YW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwCitAQCAtMTg2LDggKzE4Niw2IEBAIFFfREVD TEFSRV9UWVBFSU5GTyhPdmVybG9hZFJlc29sdXRpb25DYW5kaWRhdGUsIFFfTU9WQUJMRV9UWVBF KTsKKyBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6UU1ldGFPYmplY3RQdWJsaXNoZXIoUVdlYkNoYW5u ZWwgKndlYkNoYW5uZWwpCisgICAgIDogUU9iamVjdCh3ZWJDaGFubmVsKQorICAgICAsIHdlYkNo YW5uZWwod2ViQ2hhbm5lbCkKKy0gICAgLCBzaWduYWxIYW5kbGVyKHRoaXMpCistICAgICwgY2xp ZW50SXNJZGxlKGZhbHNlKQorICAgICAsIGJsb2NrVXBkYXRlcyhmYWxzZSkKKyAgICAgLCBwcm9w ZXJ0eVVwZGF0ZXNJbml0aWFsaXplZChmYWxzZSkKKyB7CitAQCAtMzAxLDE3ICsyOTksMTcgQEAg UUpzb25PYmplY3QgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmNsYXNzSW5mb0Zvck9iamVjdChjb25z dCBRT2JqZWN0ICpvYmplY3QsIFFXZWIKKyAgICAgcmV0dXJuIGRhdGE7CisgfQorIAorLXZvaWQg UU1ldGFPYmplY3RQdWJsaXNoZXI6OnNldENsaWVudElzSWRsZShib29sIGlzSWRsZSkKKyt2b2lk IFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZXRDbGllbnRJc0lkbGUoYm9vbCBpc0lkbGUsIFFXZWJD aGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKKyB7CistICAgIGlmIChjbGllbnRJ c0lkbGUgPT0gaXNJZGxlKSB7CistICAgICAgICByZXR1cm47CistICAgIH0KKy0gICAgY2xpZW50 SXNJZGxlID0gaXNJZGxlOworLSAgICBpZiAoIWlzSWRsZSAmJiB0aW1lci5pc0FjdGl2ZSgpKSB7 CistICAgICAgICB0aW1lci5zdG9wKCk7CistICAgIH0gZWxzZSBpZiAoaXNJZGxlICYmICF0aW1l ci5pc0FjdGl2ZSgpKSB7CistICAgICAgICB0aW1lci5zdGFydChQUk9QRVJUWV9VUERBVEVfSU5U RVJWQUwsIHRoaXMpOworLSAgICB9CisrICAgIHRyYW5zcG9ydFN0YXRlW3RyYW5zcG9ydF0uY2xp ZW50SXNJZGxlID0gaXNJZGxlOworKyAgICBpZiAoaXNJZGxlKQorKyAgICAgICAgc2VuZEVucXVl dWVkUHJvcGVydHlVcGRhdGVzKHRyYW5zcG9ydCk7CisrfQorKworK2Jvb2wgUU1ldGFPYmplY3RQ dWJsaXNoZXI6OmlzQ2xpZW50SWRsZShRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFu c3BvcnQpCisreworKyAgICBhdXRvIGZvdW5kID0gdHJhbnNwb3J0U3RhdGUuZmluZCh0cmFuc3Bv cnQpOworKyAgICByZXR1cm4gZm91bmQgIT0gdHJhbnNwb3J0U3RhdGUuZW5kKCkgJiYgZm91bmQu dmFsdWUoKS5jbGllbnRJc0lkbGU7CisgfQorIAorIFFKc29uT2JqZWN0IFFNZXRhT2JqZWN0UHVi bGlzaGVyOjppbml0aWFsaXplQ2xpZW50KFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRy YW5zcG9ydCkKK0BAIC0zMzMsNiArMzMxLDcgQEAgUUpzb25PYmplY3QgUU1ldGFPYmplY3RQdWJs aXNoZXI6OmluaXRpYWxpemVDbGllbnQoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydAorIAor IHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmluaXRpYWxpemVQcm9wZXJ0eVVwZGF0ZXMoY29u c3QgUU9iamVjdCAqY29uc3Qgb2JqZWN0LCBjb25zdCBRSnNvbk9iamVjdCAmb2JqZWN0SW5mbykK KyB7CisrICAgIGF1dG8gKnNpZ25hbEhhbmRsZXIgPSBzaWduYWxIYW5kbGVyRm9yKG9iamVjdCk7 CisgICAgIGZvcmVhY2ggKGNvbnN0IFFKc29uVmFsdWUgJnByb3BlcnR5SW5mb1Zhciwgb2JqZWN0 SW5mb1tLRVlfUFJPUEVSVElFU10udG9BcnJheSgpKSB7CisgICAgICAgICBjb25zdCBRSnNvbkFy cmF5ICZwcm9wZXJ0eUluZm8gPSBwcm9wZXJ0eUluZm9WYXIudG9BcnJheSgpOworICAgICAgICAg aWYgKHByb3BlcnR5SW5mby5zaXplKCkgPCAyKSB7CitAQCAtMzUzLDE5ICszNTIsMTkgQEAgdm9p ZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW5pdGlhbGl6ZVByb3BlcnR5VXBkYXRlcyhjb25zdCBR T2JqZWN0ICpjb25zdCBvYmplY3QKKyAKKyAgICAgICAgIC8vIE9ubHkgY29ubmVjdCBmb3IgYSBw cm9wZXJ0eSB1cGRhdGUgb25jZQorICAgICAgICAgaWYgKGNvbm5lY3RlZFByb3BlcnRpZXMuaXNF bXB0eSgpKSB7CistICAgICAgICAgICAgc2lnbmFsSGFuZGxlci5jb25uZWN0VG8ob2JqZWN0LCBz aWduYWxJbmRleCk7CisrICAgICAgICAgICAgc2lnbmFsSGFuZGxlci0+Y29ubmVjdFRvKG9iamVj dCwgc2lnbmFsSW5kZXgpOworICAgICAgICAgfQorIAorICAgICAgICAgY29ubmVjdGVkUHJvcGVy dGllcy5pbnNlcnQocHJvcGVydHlJbmRleCk7CisgICAgIH0KKyAKKyAgICAgLy8gYWxzbyBhbHdh eXMgY29ubmVjdCB0byBkZXN0cm95ZWQgc2lnbmFsCistICAgIHNpZ25hbEhhbmRsZXIuY29ubmVj dFRvKG9iamVjdCwgc19kZXN0cm95ZWRTaWduYWxJbmRleCk7CisrICAgIHNpZ25hbEhhbmRsZXIt PmNvbm5lY3RUbyhvYmplY3QsIHNfZGVzdHJveWVkU2lnbmFsSW5kZXgpOworIH0KKyAKKyB2b2lk IFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZW5kUGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpCisgewor LSAgICBpZiAoYmxvY2tVcGRhdGVzIHx8ICFjbGllbnRJc0lkbGUgfHwgcGVuZGluZ1Byb3BlcnR5 VXBkYXRlcy5pc0VtcHR5KCkpIHsKKysgICAgaWYgKGJsb2NrVXBkYXRlcykgeworICAgICAgICAg cmV0dXJuOworICAgICB9CisgCitAQCAtNDE1LDE4ICs0MTQsMTkgQEAgdm9pZCBRTWV0YU9iamVj dFB1Ymxpc2hlcjo6c2VuZFBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMoKQorIAorICAgICAvLyBkYXRh IGRvZXMgbm90IGNvbnRhaW4gc3BlY2lmaWMgdXBkYXRlcworICAgICBpZiAoIWRhdGEuaXNFbXB0 eSgpKSB7CistICAgICAgICBzZXRDbGllbnRJc0lkbGUoZmFsc2UpOworLQorICAgICAgICAgbWVz c2FnZVtLRVlfREFUQV0gPSBkYXRhOworLSAgICAgICAgYnJvYWRjYXN0TWVzc2FnZShtZXNzYWdl KTsKKysgICAgICAgIGVucXVldWVCcm9hZGNhc3RNZXNzYWdlKG1lc3NhZ2UpOworICAgICB9Cisg CisgICAgIC8vIHNlbmQgZXZlcnkgcHJvcGVydHkgdXBkYXRlIHdoaWNoIGlzIG5vdCBzdXBwb3Nl ZCB0byBiZSBicm9hZGNhc3RlZAorICAgICBjb25zdCBRSGFzaDxRV2ViQ2hhbm5lbEFic3RyYWN0 VHJhbnNwb3J0KiwgUUpzb25BcnJheT46OmNvbnN0X2l0ZXJhdG9yIHN1ZW5kID0gc3BlY2lmaWNV cGRhdGVzLmNvbnN0RW5kKCk7CisgICAgIGZvciAoUUhhc2g8UVdlYkNoYW5uZWxBYnN0cmFjdFRy YW5zcG9ydCosIFFKc29uQXJyYXk+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNwZWNpZmljVXBkYXRl cy5jb25zdEJlZ2luKCk7IGl0ICE9IHN1ZW5kOyArK2l0KSB7CisgICAgICAgICBtZXNzYWdlW0tF WV9EQVRBXSA9IGl0LnZhbHVlKCk7CistICAgICAgICBpdC5rZXkoKS0+c2VuZE1lc3NhZ2UobWVz c2FnZSk7CisrICAgICAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdlLCBpdC5rZXkoKSk7CisgICAg IH0KKysKKysgICAgZm9yIChhdXRvIHN0YXRlID0gdHJhbnNwb3J0U3RhdGUuYmVnaW4oKTsgc3Rh dGUgIT0gdHJhbnNwb3J0U3RhdGUuZW5kKCk7ICsrc3RhdGUpCisrICAgICAgICBzZW5kRW5xdWV1 ZWRQcm9wZXJ0eVVwZGF0ZXMoc3RhdGUua2V5KCkpOworIH0KKyAKKyBRVmFyaWFudCBRTWV0YU9i amVjdFB1Ymxpc2hlcjo6aW52b2tlTWV0aG9kKFFPYmplY3QgKmNvbnN0IG9iamVjdCwgY29uc3Qg UU1ldGFNZXRob2QgJm1ldGhvZCwKK0BAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBRTWV0YU9iamVj dFB1Ymxpc2hlcjo6c2lnbmFsRW1pdHRlZChjb25zdCBRT2JqZWN0ICpvYmplY3QsIGNvbnN0IGlu dCBzaWduYWwKKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIHBlbmRpbmdQcm9w ZXJ0eVVwZGF0ZXNbb2JqZWN0XVtzaWduYWxJbmRleF0gPSBhcmd1bWVudHM7CistICAgICAgICBp ZiAoY2xpZW50SXNJZGxlICYmICFibG9ja1VwZGF0ZXMgJiYgIXRpbWVyLmlzQWN0aXZlKCkpIHsK KysgICAgICAgIGlmICghYmxvY2tVcGRhdGVzICYmICF0aW1lci5pc0FjdGl2ZSgpKSB7CisgICAg ICAgICAgICAgdGltZXIuc3RhcnQoUFJPUEVSVFlfVVBEQVRFX0lOVEVSVkFMLCB0aGlzKTsKKyAg ICAgICAgIH0KKyAgICAgfQorQEAgLTU5MCw3ICs1OTAsNyBAQCB2b2lkIFFNZXRhT2JqZWN0UHVi bGlzaGVyOjpvYmplY3REZXN0cm95ZWQoY29uc3QgUU9iamVjdCAqb2JqZWN0KQorICAgICAvLyBv bmx5IHJlbW92ZSBmcm9tIGhhbmRsZXIgd2hlbiB3ZSBpbml0aWFsaXplZCB0aGUgcHJvcGVydHkg dXBkYXRlcworICAgICAvLyBjZjogaHR0cHM6Ly9idWdyZXBvcnRzLnF0LmlvL2Jyb3dzZS9RVEJV Ry02MDI1MAorICAgICBpZiAocHJvcGVydHlVcGRhdGVzSW5pdGlhbGl6ZWQpIHsKKy0gICAgICAg IHNpZ25hbEhhbmRsZXIucmVtb3ZlKG9iamVjdCk7CisrICAgICAgICBzaWduYWxIYW5kbGVyRm9y KG9iamVjdCktPnJlbW92ZShvYmplY3QpOworICAgICAgICAgc2lnbmFsVG9Qcm9wZXJ0eU1hcC5y ZW1vdmUob2JqZWN0KTsKKyAgICAgfQorICAgICBwZW5kaW5nUHJvcGVydHlVcGRhdGVzLnJlbW92 ZShvYmplY3QpOworQEAgLTg1Miw2ICs4NTIsNTIgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hl cjo6YnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSkgY29uc3QKKyAg ICAgfQorIH0KKyAKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjplbnF1ZXVlQnJvYWRjYXN0 TWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSkKKyt7CisrICAgIGlmICh3ZWJDaGFu bmVsLT5kX2Z1bmMoKS0+dHJhbnNwb3J0cy5pc0VtcHR5KCkpIHsKKysgICAgICAgIHFXYXJuaW5n KCJRV2ViQ2hhbm5lbCBpcyBub3QgY29ubmVjdGVkIHRvIGFueSB0cmFuc3BvcnRzLCBjYW5ub3Qg c2VuZCBtZXNzYWdlOiAlcyIsCisrICAgICAgICAgICAgICAgICBRSnNvbkRvY3VtZW50KG1lc3Nh Z2UpLnRvSnNvbigpLmNvbnN0RGF0YSgpKTsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKwor KyAgICBmb3IgKGF1dG8gKnRyYW5zcG9ydCA6IHdlYkNoYW5uZWwtPmRfZnVuYygpLT50cmFuc3Bv cnRzKSB7CisrICAgICAgICBhdXRvICZzdGF0ZSA9IHRyYW5zcG9ydFN0YXRlW3RyYW5zcG9ydF07 CisrICAgICAgICBzdGF0ZS5xdWV1ZWRNZXNzYWdlcy5hcHBlbmQobWVzc2FnZSk7CisrICAgIH0K Kyt9CisrCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6ZW5xdWV1ZU1lc3NhZ2UoY29uc3Qg UUpzb25PYmplY3QgJm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorK3sKKysg ICAgYXV0byAmc3RhdGUgPSB0cmFuc3BvcnRTdGF0ZVt0cmFuc3BvcnRdOworKyAgICBzdGF0ZS5x dWV1ZWRNZXNzYWdlcy5hcHBlbmQobWVzc2FnZSk7CisrfQorKworK3ZvaWQgUU1ldGFPYmplY3RQ dWJsaXNoZXI6OnNlbmRFbnF1ZXVlZFByb3BlcnR5VXBkYXRlcyhRV2ViQ2hhbm5lbEFic3RyYWN0 VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisreworKyAgICBhdXRvIGZvdW5kID0gdHJhbnNwb3J0U3Rh dGUuZmluZCh0cmFuc3BvcnQpOworKyAgICBpZiAoZm91bmQgIT0gdHJhbnNwb3J0U3RhdGUuZW5k KCkgJiYgZm91bmQudmFsdWUoKS5jbGllbnRJc0lkbGUKKysgICAgICAgICYmICFmb3VuZC52YWx1 ZSgpLnF1ZXVlZE1lc3NhZ2VzLmlzRW1wdHkoKSkgeworKworKyAgICAgICAgLy8gSWYgdGhlIGNs aWVudCBpcyBjb25uZWN0ZWQgd2l0aCBhbiBpbi1wcm9jZXNzIHRyYW5zcG9ydCwgaXQgY2FuCisr ICAgICAgICAvLyBoYXBwZW4gdGhhdCBhIG1lc3NhZ2UgdHJpZ2dlcnMgYSBzdWJzZXF1ZW50IHBy b3BlcnR5IGNoYW5nZS4gSW4KKysgICAgICAgIC8vIHRoYXQgY2FzZSwgd2UgbmVlZCB0byBlbnN1 cmUgdGhhdCB0aGUgcXVldWVkIG1lc3NhZ2VzIGhhdmUgYWxyZWFkeQorKyAgICAgICAgLy8gYmVl biBjbGVhcmVkOyBvdGhlcndpc2UgdGhlIHJlY3Vyc2l2ZSBjYWxsIHdpbGwgc2VuZCBldmVyeXRo aWcgYWdhaW4uCisrICAgICAgICAvLyBDYXNlIGluIHBvaW50OiBUaGUgcW1sd2ViY2hhbm5lbCB0 ZXN0cyBmYWlsIGlmIHdlIGRvbid0IGNsZWFyIHRoZQorKyAgICAgICAgLy8gcXVldWVkIG1lc3Nh Z2VzIGJlZm9yZSBzZW5kaW5nIHRoZW0gb3V0LgorKyAgICAgICAgLy8gRm9yIHRoYXQgc2FtZSBy ZWFzb24gc2V0IHRoZSBjbGllbnQgdG8gImJ1c3kiIChha2Egbm9uLWlkbGUpIGp1c3QKKysgICAg ICAgIC8vIHJpZ2h0IGJlZm9yZSBzZW5kaW5nIG91dCB0aGUgbWVzc2FnZXM7IG90aGVyd2lzZSBh IHBvdGVudGlhbAorKyAgICAgICAgLy8gIklkbGUiIHR5cGUgbWVzc2FnZSB3aWxsIG5vdCBjb3Jy ZWN0bHkgcmVzdG9yZSB0aGUgSWRsZSBzdGF0ZS4KKysgICAgICAgIGNvbnN0IGF1dG8gbWVzc2Fn ZXMgPSBzdGQ6Om1vdmUoZm91bmQudmFsdWUoKS5xdWV1ZWRNZXNzYWdlcyk7CisrICAgICAgICBR X0FTU0VSVChmb3VuZC52YWx1ZSgpLnF1ZXVlZE1lc3NhZ2VzLmlzRW1wdHkoKSk7CisrICAgICAg ICBmb3VuZC52YWx1ZSgpLmNsaWVudElzSWRsZSA9IGZhbHNlOworKworKyAgICAgICAgZm9yIChj b25zdCBhdXRvICZtZXNzYWdlIDogbWVzc2FnZXMpIHsKKysgICAgICAgICAgICB0cmFuc3BvcnQt PnNlbmRNZXNzYWdlKG1lc3NhZ2UpOworKyAgICAgICAgfQorKyAgICB9CisrfQorKworIHZvaWQg UU1ldGFPYmplY3RQdWJsaXNoZXI6OmhhbmRsZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1l c3NhZ2UsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKKyB7CisgICAg IGlmICghd2ViQ2hhbm5lbC0+ZF9mdW5jKCktPnRyYW5zcG9ydHMuY29udGFpbnModHJhbnNwb3J0 KSkgeworQEAgLTg2Niw3ICs5MTIsNyBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpoYW5k bGVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLCBRV2ViQ2hhbm5lbAorIAorICAg ICBjb25zdCBNZXNzYWdlVHlwZSB0eXBlID0gdG9UeXBlKG1lc3NhZ2UudmFsdWUoS0VZX1RZUEUp KTsKKyAgICAgaWYgKHR5cGUgPT0gVHlwZUlkbGUpIHsKKy0gICAgICAgIHNldENsaWVudElzSWRs ZSh0cnVlKTsKKysgICAgICAgIHNldENsaWVudElzSWRsZSh0cnVlLCB0cmFuc3BvcnQpOworICAg ICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlwZUluaXQpIHsKKyAgICAgICAgIGlmICghbWVzc2FnZS5j b250YWlucyhLRVlfSUQpKSB7CisgICAgICAgICAgICAgcVdhcm5pbmcoIkpTT04gbWVzc2FnZSBv YmplY3QgaXMgbWlzc2luZyB0aGUgaWQgcHJvcGVydHk6ICVzIiwKK0BAIC05MTMsOSArOTU5LDkg QEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aGFuZGxlTWVzc2FnZShjb25zdCBRSnNvbk9i amVjdCAmbWVzc2FnZSwgUVdlYkNoYW5uZWwKKyAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg ICAgICAgICAgIHRyYW5zcG9ydC0+c2VuZE1lc3NhZ2UoY3JlYXRlUmVzcG9uc2UobWVzc2FnZS52 YWx1ZShLRVlfSUQpLCB3cmFwUmVzdWx0KHJlc3VsdCwgdHJhbnNwb3J0KSkpOworICAgICAgICAg fSBlbHNlIGlmICh0eXBlID09IFR5cGVDb25uZWN0VG9TaWduYWwpIHsKKy0gICAgICAgICAgICBz aWduYWxIYW5kbGVyLmNvbm5lY3RUbyhvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05BTCku dG9JbnQoLTEpKTsKKysgICAgICAgICAgICBzaWduYWxIYW5kbGVyRm9yKG9iamVjdCktPmNvbm5l Y3RUbyhvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05BTCkudG9JbnQoLTEpKTsKKyAgICAg ICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBlRGlzY29ubmVjdEZyb21TaWduYWwpIHsKKy0gICAg ICAgICAgICBzaWduYWxIYW5kbGVyLmRpc2Nvbm5lY3RGcm9tKG9iamVjdCwgbWVzc2FnZS52YWx1 ZShLRVlfU0lHTkFMKS50b0ludCgtMSkpOworKyAgICAgICAgICAgIHNpZ25hbEhhbmRsZXJGb3Io b2JqZWN0KS0+ZGlzY29ubmVjdEZyb20ob2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9TSUdOQUwp LnRvSW50KC0xKSk7CisgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlwZVNldFByb3BlcnR5 KSB7CisgICAgICAgICAgICAgc2V0UHJvcGVydHkob2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9Q Uk9QRVJUWSkudG9JbnQoLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UudmFs dWUoS0VZX1ZBTFVFKSk7CitAQCAtOTMxLDYgKzk3Nyw3IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJs aXNoZXI6OnNldEJsb2NrVXBkYXRlcyhib29sIGJsb2NrKQorICAgICBibG9ja1VwZGF0ZXMgPSBi bG9jazsKKyAKKyAgICAgaWYgKCFibG9ja1VwZGF0ZXMpIHsKKysgICAgICAgIHRpbWVyLnN0YXJ0 KFBST1BFUlRZX1VQREFURV9JTlRFUlZBTCwgdGhpcyk7CisgICAgICAgICBzZW5kUGVuZGluZ1By b3BlcnR5VXBkYXRlcygpOworICAgICB9IGVsc2UgaWYgKHRpbWVyLmlzQWN0aXZlKCkpIHsKKyAg ICAgICAgIHRpbWVyLnN0b3AoKTsKK0BAIC05NDgsNCArOTk1LDE1IEBAIHZvaWQgUU1ldGFPYmpl Y3RQdWJsaXNoZXI6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQgKmV2ZW50KQorICAgICB9CisgfQor IAorK1NpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQdWJsaXNoZXI+ICpRTWV0YU9iamVjdFB1Ymxp c2hlcjo6c2lnbmFsSGFuZGxlckZvcihjb25zdCBRT2JqZWN0ICpvYmplY3QpCisreworKyAgICBh dXRvIHRocmVhZCA9IG9iamVjdC0+dGhyZWFkKCk7CisrICAgIGF1dG8gaXQgPSBzaWduYWxIYW5k bGVycy5maW5kKHRocmVhZCk7CisrICAgIGlmIChpdCA9PSBzaWduYWxIYW5kbGVycy5lbmQoKSkg eworKyAgICAgICAgaXQgPSBzaWduYWxIYW5kbGVycy5lbXBsYWNlKHRocmVhZCwgdGhpcykuZmly c3Q7CisrICAgICAgICBpdC0+c2Vjb25kLm1vdmVUb1RocmVhZCh0aHJlYWQpOworKyAgICB9Cisr ICAgIHJldHVybiAmaXQtPnNlY29uZDsKKyt9CisrCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAt LWdpdCBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlcl9w LmggYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXJfcC5o CitpbmRleCBiYmQ5ODc1Li40NzEzZWYxIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3NyYy93 ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaAorKysrIGIvcXR3ZWJjaGFubmVsL3Ny Yy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaAorQEAgLTU5LDYgKzU5LDkgQEAK KyAjaW5jbHVkZSA8UUJhc2ljVGltZXI+CisgI2luY2x1ZGUgPFFQb2ludGVyPgorICNpbmNsdWRl IDxRSnNvbk9iamVjdD4KKysjaW5jbHVkZSA8UVF1ZXVlPgorKworKyNpbmNsdWRlIDx1bm9yZGVy ZWRfbWFwPgorIAorICNpbmNsdWRlICJxd2ViY2hhbm5lbGdsb2JhbC5oIgorIAorQEAgLTEwOSwx NyArMTEyLDM2IEBAIHB1YmxpYzoKKyAgICAgICovCisgICAgIHZvaWQgYnJvYWRjYXN0TWVzc2Fn ZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSkgY29uc3Q7CisgCisrICAgIC8qKgorKyAgICAg KiBFbnF1ZXVlIHRoZSBnaXZlbiBAcCBtZXNzYWdlIHRvIGFsbCBrbm93biB0cmFuc3BvcnRzLgor KyAgICAgKi8KKysgICAgdm9pZCBlbnF1ZXVlQnJvYWRjYXN0TWVzc2FnZShjb25zdCBRSnNvbk9i amVjdCAmbWVzc2FnZSk7CisrCisrICAgIC8qKgorKyAgICAgKiBFbnF1ZXVlIHRoZSBnaXZlbiBA cCBtZXNzYWdlIHRvIEBwIHRyYW5zcG9ydC4KKysgICAgICovCisrICAgIHZvaWQgZW5xdWV1ZU1l c3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFu c3BvcnQgKnRyYW5zcG9ydCk7CisrCisrICAgIC8qKgorKyAgICAgKiBJZiBjbGllbnQgZm9yIGdp dmVuIEBwIHRyYW5zcG9ydCBpcyBpZGxlLCBzZW5kIHF1ZXVlZCBtZXNzYWdlZCB0byBAcCB0cmFu c3BvcnQgYW5kIHRoZW4gbWFyaworKyAgICAgKiB0aGUgY2xpZW50IGFzIG5vdCBpZGxlLgorKyAg ICAgKi8KKysgICAgdm9pZCBzZW5kRW5xdWV1ZWRQcm9wZXJ0eVVwZGF0ZXMoUVdlYkNoYW5uZWxB YnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKKysKKyAgICAgLyoqCisgICAgICAqIFNlcmlh bGl6ZSB0aGUgUU1ldGFPYmplY3Qgb2YgQHAgb2JqZWN0IGFuZCByZXR1cm4gaXQgaW4gSlNPTiBm b3JtLgorICAgICAgKi8KKyAgICAgUUpzb25PYmplY3QgY2xhc3NJbmZvRm9yT2JqZWN0KGNvbnN0 IFFPYmplY3QgKm9iamVjdCwgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0 KTsKKyAKKyAgICAgLyoqCistICAgICAqIFNldCB0aGUgY2xpZW50IHRvIGlkbGUgb3IgYnVzeSwg YmFzZWQgb24gdGhlIHZhbHVlIG9mIEBwIGlzSWRsZS4KKy0gICAgICoKKy0gICAgICogV2hlbiB0 aGUgdmFsdWUgY2hhbmdlZCwgc3RhcnQvc3RvcCB0aGUgcHJvcGVydHkgdXBkYXRlIHRpbWVyIGFj Y29yZGluZ2x5LgorKyAgICAgKiBTZXQgdGhlIGNsaWVudCB0byBpZGxlIG9yIGJ1c3kgZm9yIGEg c2luZ2xlIEBwIHRyYW5zcG9ydCwgYmFzZWQgb24gdGhlIHZhbHVlIG9mIEBwIGlzSWRsZS4KKysg ICAgICovCisrICAgIHZvaWQgc2V0Q2xpZW50SXNJZGxlKGJvb2wgaXNJZGxlLCBRV2ViQ2hhbm5l bEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworKworKyAgICAvKioKKysgICAgICogQ2hl Y2sgdGhhdCBjbGllbnQgaXMgaWRsZSBmb3IgQHAgdHJhbnNwb3J0LgorICAgICAgKi8KKy0gICAg dm9pZCBzZXRDbGllbnRJc0lkbGUoYm9vbCBpc0lkbGUpOworKyAgICBib29sIGlzQ2xpZW50SWRs ZShRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworIAorICAgICAvKioK KyAgICAgICogSW5pdGlhbGl6ZSBjbGllbnRzIGJ5IHNlbmRpbmcgdGhlbSB0aGUgY2xhc3MgaW5m b3JtYXRpb24gb2YgdGhlIHJlZ2lzdGVyZWQgb2JqZWN0cy4KK0BAIC0yNzIsMTAgKzI5NCwxOCBA QCBwcml2YXRlOgorICAgICBmcmllbmQgY2xhc3MgVGVzdFdlYkNoYW5uZWw7CisgCisgICAgIFFX ZWJDaGFubmVsICp3ZWJDaGFubmVsOworLSAgICBTaWduYWxIYW5kbGVyPFFNZXRhT2JqZWN0UHVi bGlzaGVyPiBzaWduYWxIYW5kbGVyOworKyAgICBzdGQ6OnVub3JkZXJlZF9tYXA8Y29uc3QgUVRo cmVhZCosIFNpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQdWJsaXNoZXI+PiBzaWduYWxIYW5kbGVy czsKKysgICAgU2lnbmFsSGFuZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4gKnNpZ25hbEhhbmRs ZXJGb3IoY29uc3QgUU9iamVjdCAqb2JqZWN0KTsKKyAKKy0gICAgLy8gdHJ1ZSB3aGVuIHRoZSBj bGllbnQgaXMgaWRsZSwgZmFsc2Ugb3RoZXJ3aXNlCistICAgIGJvb2wgY2xpZW50SXNJZGxlOwor KyAgICBzdHJ1Y3QgVHJhbnNwb3J0U3RhdGUKKysgICAgeworKyAgICAgICAgVHJhbnNwb3J0U3Rh dGUoKSA6IGNsaWVudElzSWRsZShmYWxzZSkgeyB9CisrICAgICAgICAvLyB0cnVlIHdoZW4gdGhl IGNsaWVudCBpcyBpZGxlLCBmYWxzZSBvdGhlcndpc2UKKysgICAgICAgIGJvb2wgY2xpZW50SXNJ ZGxlOworKyAgICAgICAgLy8gbWVzc2FnZXMgdG8gc2VuZAorKyAgICAgICAgUVF1ZXVlPFFKc29u T2JqZWN0PiBxdWV1ZWRNZXNzYWdlczsKKysgICAgfTsKKysgICAgUUhhc2g8UVdlYkNoYW5uZWxB YnN0cmFjdFRyYW5zcG9ydCAqLCBUcmFuc3BvcnRTdGF0ZT4gdHJhbnNwb3J0U3RhdGU7CisgCisg ICAgIC8vIHRydWUgd2hlbiBubyBwcm9wZXJ0eSB1cGRhdGVzIHNob3VsZCBiZSBzZW50LCBmYWxz ZSBvdGhlcndpc2UKKyAgICAgYm9vbCBibG9ja1VwZGF0ZXM7CitkaWZmIC0tZ2l0IGEvcXR3ZWJj aGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJfcC5oIGIvcXR3ZWJjaGFubmVsL3Ny Yy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJfcC5oCitpbmRleCAyN2FmYWRiLi5kNzczNzNjIDEw MDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJfcC5o CisrKysgYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvc2lnbmFsaGFuZGxlcl9wLmgKK0BA IC01Niw2ICs1Niw3IEBACisgI2luY2x1ZGUgPFFWZWN0b3I+CisgI2luY2x1ZGUgPFFNZXRhTWV0 aG9kPgorICNpbmNsdWRlIDxRRGVidWc+CisrI2luY2x1ZGUgPFFUaHJlYWQ+CisgCisgUVRfQkVH SU5fTkFNRVNQQUNFCisgCitAQCAtNzEsNiArNzIsNyBAQCBzdGF0aWMgY29uc3QgaW50IHNfZGVz dHJveWVkU2lnbmFsSW5kZXggPSBRT2JqZWN0OjpzdGF0aWNNZXRhT2JqZWN0LmluZGV4T2ZNZXRo bworIHRlbXBsYXRlPGNsYXNzIFJlY2VpdmVyPgorIGNsYXNzIFNpZ25hbEhhbmRsZXIgOiBwdWJs aWMgUU9iamVjdAorIHsKKysgICAgUV9ESVNBQkxFX0NPUFkoU2lnbmFsSGFuZGxlcikKKyBwdWJs aWM6CisgICAgIFNpZ25hbEhhbmRsZXIoUmVjZWl2ZXIgKnJlY2VpdmVyLCBRT2JqZWN0ICpwYXJl bnQgPSAwKTsKKyAKK0BAIC0yNjgsNiArMjcwLDcgQEAgaW50IFNpZ25hbEhhbmRsZXI8UmVjZWl2 ZXI+OjpxdF9tZXRhY2FsbChRTWV0YU9iamVjdDo6Q2FsbCBjYWxsLCBpbnQgbWV0aG9kSWQsIHYK KyAgICAgaWYgKGNhbGwgPT0gUU1ldGFPYmplY3Q6Okludm9rZU1ldGFNZXRob2QpIHsKKyAgICAg ICAgIGNvbnN0IFFPYmplY3QgKm9iamVjdCA9IHNlbmRlcigpOworICAgICAgICAgUV9BU1NFUlQo b2JqZWN0KTsKKysgICAgICAgIFFfQVNTRVJUKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSA9PSBv YmplY3QtPnRocmVhZCgpKTsKKyAgICAgICAgIFFfQVNTRVJUKHNlbmRlclNpZ25hbEluZGV4KCkg PT0gbWV0aG9kSWQpOworICAgICAgICAgUV9BU1NFUlQobV9jb25uZWN0aW9uc0NvdW50ZXIuY29u dGFpbnMob2JqZWN0KSk7CisgICAgICAgICBRX0FTU0VSVChtX2Nvbm5lY3Rpb25zQ291bnRlci52 YWx1ZShvYmplY3QpLmNvbnRhaW5zKG1ldGhvZElkKSk7CitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFu bmVsL3Rlc3RzL2F1dG8vcW1sL3Rlc3R3ZWJjaGFubmVsLmNwcCBiL3F0d2ViY2hhbm5lbC90ZXN0 cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5jcHAKK2luZGV4IDk4OTE2ODcuLjNjYTgxYzIgMTAw NjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9xbWwvdGVzdHdlYmNoYW5uZWwuY3Bw CisrKysgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9xbWwvdGVzdHdlYmNoYW5uZWwuY3BwCitA QCAtNDYsNyArNDYsMTEgQEAgVGVzdFdlYkNoYW5uZWw6On5UZXN0V2ViQ2hhbm5lbCgpCisgCisg Ym9vbCBUZXN0V2ViQ2hhbm5lbDo6Y2xpZW50SXNJZGxlKCkgY29uc3QKKyB7CistICAgIHJldHVy biBRV2ViQ2hhbm5lbDo6ZF9mdW5jKCktPnB1Ymxpc2hlci0+Y2xpZW50SXNJZGxlOworKyAgICBm b3IgKGF1dG8gKnRyYW5zcG9ydCA6IFFXZWJDaGFubmVsOjpkX2Z1bmMoKS0+dHJhbnNwb3J0cykg eworKyAgICAgICAgaWYgKFFXZWJDaGFubmVsOjpkX2Z1bmMoKS0+cHVibGlzaGVyLT5pc0NsaWVu dElkbGUodHJhbnNwb3J0KSkKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgfQorKyAg ICByZXR1cm4gZmFsc2U7CisgfQorIAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9x dHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmNwcCBiL3F0 d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuY3BwCitpbmRl eCAxODFkYTllLi4zN2Y5ODlhIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8v d2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5jcHAKKysrKyBiL3F0d2ViY2hhbm5lbC90ZXN0cy9h dXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuY3BwCitAQCAtNzg1LDcgKzc4NSw3IEBAIHZv aWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RUcmFuc3BvcnRXcmFwT2JqZWN0UHJvcGVydGllcygpCisg ICAgIER1bW15VHJhbnNwb3J0ICpkdW1teVRyYW5zcG9ydCA9IG5ldyBEdW1teVRyYW5zcG9ydCh0 aGlzKTsKKyAgICAgY2hhbm5lbC5jb25uZWN0VG8oZHVtbXlUcmFuc3BvcnQpOworICAgICBjaGFu bmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPmluaXRpYWxpemVDbGllbnQoZHVtbXlUcmFuc3BvcnQp OworLSAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVl KTsKKysgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1 ZSwgZHVtbXlUcmFuc3BvcnQpOworIAorICAgICBRQ09NUEFSRShjaGFubmVsLmRfZnVuYygpLT5w dWJsaXNoZXItPnRyYW5zcG9ydGVkV3JhcHBlZE9iamVjdHMuc2l6ZSgpLCAwKTsKKyAKK0BAIC05 NDMsOCArOTQzLDYgQEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6dGVzdEluZmluaXRlUmVjdXJzaW9u KCkKKyAKKyB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0QXN5bmNPYmplY3QoKQorIHsKKy0gICAg UVNLSVAoIlRoaXMgdGVzdCBpcyBicm9rZW4uIFNlZSBRVEJVRy04MDcyOSIpOworLQorICAgICBR V2ViQ2hhbm5lbCBjaGFubmVsOworICAgICBjaGFubmVsLmNvbm5lY3RUbyhtX2R1bW15VHJhbnNw b3J0KTsKKyAKK0BAIC05OTAsNiArOTg4LDUwIEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RB c3luY09iamVjdCgpCisgICAgIHRocmVhZC53YWl0KCk7CisgfQorIAorK3ZvaWQgVGVzdFdlYkNo YW5uZWw6OnRlc3RQcm9wZXJ0eU11bHRpcGxlVHJhbnNwb3J0cygpCisreworKyAgICBEdW1teVRy YW5zcG9ydCB0cmFuc3BvcnQxOworKyAgICBEdW1teVRyYW5zcG9ydCB0cmFuc3BvcnQyOworKwor KyAgICBRV2ViQ2hhbm5lbCBjaGFubmVsOworKyAgICBRTWV0YU9iamVjdFB1Ymxpc2hlciAqcHVi bGlzaGVyID0gY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyOworKworKyAgICBUZXN0T2JqZWN0 IHRlc3RPYmo7CisrICAgIHRlc3RPYmouc2V0T2JqZWN0TmFtZSgidGVzdE9iamVjdCIpOworKyAg ICBjaGFubmVsLnJlZ2lzdGVyT2JqZWN0KHRlc3RPYmoub2JqZWN0TmFtZSgpLCAmdGVzdE9iaik7 CisrICAgIGNoYW5uZWwuY29ubmVjdFRvKCZ0cmFuc3BvcnQxKTsKKysgICAgY2hhbm5lbC5jb25u ZWN0VG8oJnRyYW5zcG9ydDIpOworKworKyAgICB0ZXN0T2JqLnNldFByb3AoIkhlbGxvIik7Cisr CisrICAgIHB1Ymxpc2hlci0+aW5pdGlhbGl6ZUNsaWVudCgmdHJhbnNwb3J0MSk7CisrICAgIHB1 Ymxpc2hlci0+aW5pdGlhbGl6ZUNsaWVudCgmdHJhbnNwb3J0Mik7CisrICAgIHB1Ymxpc2hlci0+ c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQxKTsKKysgICAgUUNPTVBBUkUocHVibGlz aGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCB0cnVlKTsKKysgICAgUUNPTVBBUkUocHVi bGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCBmYWxzZSk7CisrICAgIFFWRVJJRlko dHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5pc0VtcHR5KCkpOworKyAgICBRVkVSSUZZKHRyYW5z cG9ydDIubWVzc2FnZXNTZW50KCkuaXNFbXB0eSgpKTsKKysKKysgICAgdGVzdE9iai5zZXRQcm9w KCJXb3JsZCIpOworKyAgICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5zcG9ydDEubWVz c2FnZXNTZW50KCkuc2l6ZSgpLCAxdSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHRyYW5zcG9ydDIu bWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAwdSk7CisrICAgIHB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJ ZGxlKHRydWUsICZ0cmFuc3BvcnQyKTsKKysgICAgUVRSWV9DT01QQVJFX1dJVEhfVElNRU9VVCh0 cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMXUsIDIwMDApOworKyAgICBRQ09NUEFS RShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MSksIGZhbHNlKTsKKysgICAgUUNP TVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCBmYWxzZSk7CisrCisr ICAgIHRlc3RPYmouc2V0UHJvcCgiISEhIik7CisrICAgIHB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJ ZGxlKHRydWUsICZ0cmFuc3BvcnQyKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVu dElkbGUoJnRyYW5zcG9ydDIpLCB0cnVlKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0Ns aWVudElkbGUoJnRyYW5zcG9ydDEpLCBmYWxzZSk7CisrICAgIFFUUllfQ09NUEFSRV9XSVRIX1RJ TUVPVVQodHJhbnNwb3J0Mi5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDJ1LCAyMDAwKTsKKysgICAg UUNPTVBBUkUodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDF1KTsKKysgICAgcHVi bGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgJnRyYW5zcG9ydDEpOworKyAgICBRVFJZX0NP TVBBUkVfV0lUSF9USU1FT1VUKHRyYW5zcG9ydDEubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAydSwg MjAwMCk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQx KSwgZmFsc2UpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNw b3J0MiksIGZhbHNlKTsKKyt9CisrCisgY2xhc3MgRnVuY3Rpb25XcmFwcGVyIDogcHVibGljIFFP YmplY3QKKyB7CisgICAgIFFfT0JKRUNUCitAQCAtMTA4Miw3ICsxMTI0LDcgQEAgdm9pZCBUZXN0 V2ViQ2hhbm5lbDo6YmVuY2hJbml0aWFsaXplQ2xpZW50cygpCisgCisgICAgICAgICBwdWJsaXNo ZXItPnByb3BlcnR5VXBkYXRlc0luaXRpYWxpemVkID0gZmFsc2U7CisgICAgICAgICBwdWJsaXNo ZXItPnNpZ25hbFRvUHJvcGVydHlNYXAuY2xlYXIoKTsKKy0gICAgICAgIHB1Ymxpc2hlci0+c2ln bmFsSGFuZGxlci5jbGVhcigpOworKyAgICAgICAgcHVibGlzaGVyLT5zaWduYWxIYW5kbGVycy5j bGVhcigpOworICAgICB9CisgfQorIAorQEAgLTExMDcsNyArMTE0OSw3IEBAIHZvaWQgVGVzdFdl YkNoYW5uZWw6OmJlbmNoUHJvcGVydHlVcGRhdGVzKCkKKyAgICAgICAgICAgICBvYmotPmNoYW5n ZSgpOworICAgICAgICAgfQorIAorLSAgICAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVy LT5jbGllbnRJc0lkbGUgPSB0cnVlOworKyAgICAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlz aGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgbV9kdW1teVRyYW5zcG9ydCk7CisgICAgICAgICBj aGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnNlbmRQZW5kaW5nUHJvcGVydHlVcGRhdGVzKCk7 CisgICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hh bm5lbC90c3Rfd2ViY2hhbm5lbC5oIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5l bC90c3Rfd2ViY2hhbm5lbC5oCitpbmRleCBlYWUyMWY0Li5kZDRlNjkwIDEwMDY0NAorLS0tIGEv cXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oCisrKysg Yi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmgKK0BA IC0zNDgsNiArMzQ4LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB0ZXN0SnNvblRvVmFy aWFudCgpOworICAgICB2b2lkIHRlc3RJbmZpbml0ZVJlY3Vyc2lvbigpOworICAgICB2b2lkIHRl c3RBc3luY09iamVjdCgpOworKyAgICB2b2lkIHRlc3RQcm9wZXJ0eU11bHRpcGxlVHJhbnNwb3J0 cygpOworICAgICB2b2lkIHRlc3REZWxldGlvbkR1cmluZ01ldGhvZEludm9jYXRpb25fZGF0YSgp OworICAgICB2b2lkIHRlc3REZWxldGlvbkR1cmluZ01ldGhvZEludm9jYXRpb24oKTsKKyAKK1N1 Ym1vZHVsZSBxdHdlYmVuZ2luZSBmMzI4MDU0ZC4uLjM4ZTBkZjZjIChjb21taXRzIG5vdCBwcmVz ZW50KQorU3VibW9kdWxlIHF0d2Vic29ja2V0cyA2NTg1MDk1NC4uNjNmYjhkYTE6CitkaWZmIC0t Z2l0IGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRkYXRhcHJvY2Vzc29y LmNwcCBiL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0ZGF0YXByb2Nlc3Nv ci5jcHAKK2luZGV4IDJhZmZkZDUuLjk1ZjExOTQgMTAwNjQ0CistLS0gYS9xdHdlYnNvY2tldHMv c3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRhdGFwcm9jZXNzb3IuY3BwCisrKysgYi9xdHdlYnNv Y2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRhdGFwcm9jZXNzb3IuY3BwCitAQCAtMjcz LDYgKzI3Myw3IEBAIHZvaWQgUVdlYlNvY2tldERhdGFQcm9jZXNzb3I6OmNsZWFyKCkKKyAgICAg aWYgKCFtX3BDb252ZXJ0ZXJTdGF0ZSkKKyAgICAgICAgIG1fcENvbnZlcnRlclN0YXRlID0gbmV3 IFFUZXh0Q29kZWM6OkNvbnZlcnRlclN0YXRlKFFUZXh0Q29kZWM6OkNvbnZlcnRJbnZhbGlkVG9O dWxsIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFUZXh0Q29kZWM6Oklnbm9yZUhlYWRlcik7CisrICAgIGZyYW1lLmNsZWFyKCk7 CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9x d2Vic29ja2V0cHJvdG9jb2wuY3BwIGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJz b2NrZXRwcm90b2NvbC5jcHAKK2luZGV4IGRmODdhOTMuLmQwNDY1ZjEgMTAwNjQ0CistLS0gYS9x dHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldHByb3RvY29sLmNwcAorKysrIGIv cXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRwcm90b2NvbC5jcHAKK0BAIC0y MTAsNyArMjEwLDcgQEAgdm9pZCBRV2ViU29ja2V0UHJvdG9jb2w6Om1hc2soY2hhciAqcGF5bG9h ZCwgcXVpbnQ2NCBzaXplLCBxdWludDMyIG1hc2tpbmdLZXkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHF1aW50OCgobWFza2luZ0tleSAmIDB4MDAwMEZGMDB1KSA+PiA4KSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcXVpbnQ4KChtYXNraW5nS2V5ICYgMHgwMDAwMDBGRnUp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKy0gICAgaW50IGkgPSAwOworKyAgICBx dWludDY0IGkgPSAwOworICAgICB3aGlsZSAoc2l6ZS0tID4gMCkKKyAgICAgICAgICpwYXlsb2Fk KysgXj0gbWFza1tpKysgJSA0XTsKKyB9CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS90ZW1wbGF0 ZSBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCmluZGV4IGY4NzlkZjNhM2U3MDYuLmEwZDMwMzZhZjc5 YTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1L3Rl bXBsYXRlCkBAIC0yLDExICsyLDExIEBACiAjCiAjIHJldmJ1bXAgbGlicXR4ZGcgYWZ0ZXIgYnVt cGluZyBwYXRjaCB2ZXJzaW9uCiBwa2duYW1lPXF0NQotdmVyc2lvbj01LjE1LjcrMjAyMjExMTkK K3ZlcnNpb249NS4xNS44CityZXZpc2lvbj0xCitidWlsZF9zdHlsZT1tZXRhCiAjIGNvbW1pdCBm OGM5ZmIzMDRiYzNlNTNiM2FhMDdmOTYyY2Q3NGU5MTYwZGVjY2NjCiAjIGJhc2UgcmVwbzogaHR0 cHM6Ly9pbnZlbnQua2RlLm9yZy9xdC9xdC9xdDUKLXJldmlzaW9uPTgKLWJ1aWxkX3N0eWxlPW1l dGEKIGhvc3RtYWtlZGVwZW5kcz0iY21ha2UgY2xhbmcgZmxleCBwZXJsIGdsaWItZGV2ZWwgcGtn LWNvbmZpZwogIHB5dGhvbjMgcmUyYyBydWJ5IHdoaWNoIgogbWFrZWRlcGVuZHM9IlNETDItZGV2 ZWwgVnVsa2FuLUhlYWRlcnMgYWxzYS1saWItZGV2ZWwgZG91YmxlLWNvbnZlcnNpb24tZGV2ZWwK QEAgLTI5LDkgKzI5LDkgQEAgaG9tZXBhZ2U9Imh0dHBzOi8vcXQuaW8vIgogIyB0YXJiYWxsIGlz IGdlbmVyYXRlZCB3aXRoIGBnaXQgYXJjaGl2ZS1hbGwgcXQ1LSR2ZXJzaW9uLnRhci5nemAKICMg dG8ga2VlcCB0aGUgc2l6ZSBzbWFsbGVyIHF0d2ViZW5naW5lLCBxdHdlYnZpZXcsIHF0ZG9jZ2Fs bGVyeSwgcXRhY3RpdmVxdCBhbmQgcXRwaW0KICMgY2FuIGJlIG1hcmtlZCB3aXRoIHRoZSBleHBv cnQtaWdub3JlIGF0dHJpYnV0ZQotZGlzdGZpbGVzPSJodHRwczovL3ZvaWQuam9obm55bmF0b3Iu ZGV2L2Rpc3RmaWxlcy9xdDUtJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT05ZDU3YWY0NzFj NzgwMjlhMzYyMjc2YjdjOTkxMDhlYTAwOWY1MTFiYjliYTZmZjZjYjg4NGY2ZGRkMjU1ZTlmCi1w eXRob25fdmVyc2lvbj0zCitkaXN0ZmlsZXM9Imh0dHBzOi8vZG93bmxvYWQucXQuaW8vYXJjaGl2 ZS9xdC81LjE1LyR7dmVyc2lvbn0vc2luZ2xlL3F0LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMt JHt2ZXJzaW9ufS50YXIueHoiCitjaGVja3N1bT03NzZhOTMwMmMzMzY2NzFmOTQwNmE1M2JkMzBi OGUzNmY4MjU3NDJiMmVjNDRhNTdjMDgyMTdiZmYwZmE4NmI5CitweXRob25fdmVyc2lvbj0yICN1 bnZlcmlmaWVkCiByZXBsYWNlcz0icXQ1LWRvYzw1LjYuMCBxdDUtcXVpY2sxPDUuNi4wIHF0NS1x dWljazEtZGV2ZWw8NS42LjAgcXQ1LXdlYmtpdDw1LjYuMCBxdDUtd2Via2l0LWRldmVsPDUuNi4w CiAgcXQ1LWVuZ2luaW88NS43LjEgcXQ1LWVuZ2luaW8tZGV2ZWw8NS43LjEgcXQ1LXBsdWdpbi1n dGs8NS43LjEgcXQ1LWNhbnZhczNkPDUuMTMuMCIKIGxpYjMybW9kZT1mdWxsCkBAIC0yNDYsNyAr MjQ2LDYgQEAgZG9fY29uZmlndXJlKCkgewogCSMgb3B0cys9IiAtdiIKIAlvcHRzKz0iIC1za2lw IHF0d2ViZW5naW5lIgogCW9wdHMrPSIgLXNraXAgcXR3ZWJ2aWV3IgotCW9wdHMrPSIgLXNraXAg cXRkb2NnYWxsZXJ5IgogCW9wdHMrPSIgLXNraXAgcXRwaW0iCiAJb3B0cys9IiAtc2tpcCBxdHN5 c3RlbXMiCiAJb3B0cys9IiAtc2tpcCBxdHNwZWVjaCIKCkZyb20gNDY5M2UzMTM2YzYxMTJhNmEx ODQ3NGFmZDY2NzIwNzI4ZDNhNjJjZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYzLzExNV0gcXRhdjogcmV2YnVtcCBmb3IgZmZtcGVnNC00 LjQuMwoKLS0tCiBzcmNwa2dzL3F0YXYvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0YXYv dGVtcGxhdGUgYi9zcmNwa2dzL3F0YXYvdGVtcGxhdGUKaW5kZXggNzc1ZDVhMTM5YTllZi4uMmQw MGFkMTA0MzU1ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdGF2L3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvcXRhdi90ZW1wbGF0ZQpAQCAtNCw3ICs0LDcgQEAgdmVyc2lvbj0xLjEzLjAKIHJldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPXFtYWtlCiBob3N0bWFrZWRlcGVuZHM9InF0NS1xbWFrZSBxdDUtaG9z dC10b29scyIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbGliYXNzLWRldmVsIGxpYm9wZW5h bC1kZXZlbAorbWFrZWRlcGVuZHM9ImZmbXBlZzQtZGV2ZWwgbGliYXNzLWRldmVsIGxpYm9wZW5h bC1kZXZlbAogIGxpYnZhLWdseC1kZXZlbCBsaWJYdi1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCiAg cXQ1LWRlY2xhcmF0aXZlLWRldmVsIHF0NS1zdmctZGV2ZWwKICBxdDUtcXVpY2tjb250cm9scyIK CkZyb20gMDczYTY1ZDQ4NjcxYjQxYTA4Mzk2NGYxM2IwOGEzNGU4ZWFmYzE4MyBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY0LzExNV0gcXRv eDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3F0b3gvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0b3gvdGVtcGxhdGUgYi9zcmNwa2dzL3F0b3gvdGVtcGxhdGUKaW5k ZXggMzljNjQzZmVjZGI1YS4uYmI3MGU3ZjUxMjQwYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdG94 L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXRveC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ3F0b3gnCiBwa2duYW1lPXF0b3gKIHZlcnNpb249MS4xNy42Ci1y ZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9 Ii1EVVBEQVRFX0NIRUNLPU9GRgogIC1ER0lUX0RFU0NSSUJFPSR7dmVyc2lvbn0KCkZyb20gZDY3 Y2M2ODA1MTA2YmQ2NGEwZDIxMjJiYjNjZGE3Y2NiYjAyOGI0NyBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY1LzExNV0gcmV0cm9hcmNoOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcmV0cm9hcmNoL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUgYi9zcmNwa2dzL3JldHJvYXJjaC90 ZW1wbGF0ZQppbmRleCBjYjMxMjVjNWRiZjFhLi5jNjVjMjZmN2JmMDMzIDEwMDY0NAotLS0gYS9z cmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3JldHJvYXJjaCcKIHBrZ25h bWU9cmV0cm9hcmNoCiB2ZXJzaW9uPTEuMTYuMC4zCi1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBi dWlsZF9zdHlsZT1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLXByZWZpeD0vdXNyIC0tc3lz Y29uZmRpcj0vZXRjIC0tZW5hYmxlLW5ldHdvcmtpbmcKICAtLWVuYWJsZS11ZGV2IC0tZGlzYWJs ZS1idWlsdGluZmxhYyAtLWRpc2FibGUtYnVpbHRpbmdsc2xhbmcKCkZyb20gMGM4NGZhNDUxODIz ZjRlMWI1ODE2NGM2ZDlkY2VjNWZhYzBjMWFhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY2LzExNV0gc2NyY3B5OiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9zY3JjcHkvdGVtcGxhdGUgYi9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZQppbmRleCBhYzE4YmMw MzQxOGNlLi5mMzlhN2Y2NzhhYjM1IDEwMDY0NAotLS0gYS9zcmNwa2dzL3NjcmNweS90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ3NjcmNweScKIHBrZ25hbWU9c2NyY3B5CiB2ZXJzaW9uPTIuMS4xCi1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1E Y29tcGlsZV9zZXJ2ZXI9ZmFsc2UKICAtRHByZWJ1aWx0X3NlcnZlcj0vdXNyL3NoYXJlL3NjcmNw eS9zY3JjcHktc2VydmVyLXYke3ZlcnNpb259IgoKRnJvbSBhZTRiZjEwNGMwNGQ3OTE5ZGZlZjYy YWMyNGU1OGY2Y2RhZjRiOTk0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDE3IE9jdCAyMDIzIDA4OjU0OjExIC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNjcvMTE1XSBOZXcgcGFja2FnZTogc3BleC14IHJlcGxhY2VzIHNw ZWstYWx0ZXJuYXRpdmUgZm9yCiBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc3Blay1hbHRlcm5h dGl2ZSAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIHNyY3BrZ3Mve3NwZWstYWx0ZXJuYXRp dmUgPT4gc3Blay14fS90ZW1wbGF0ZSB8IDIyICsrKysrKysrKysrKy0tLS0tLS0KIDIgZmlsZXMg Y2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEy MDAwMCBzcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUKIHJlbmFtZSBzcmNwa2dzL3tzcGVrLWFsdGVy bmF0aXZlID0+IHNwZWsteH0vdGVtcGxhdGUgKDUyJSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Nw ZWstYWx0ZXJuYXRpdmUgYi9zcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUKbmV3IGZpbGUgbW9kZSAx MjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uNzY2NDgyMzZkYTcwMQotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZQpAQCAtMCwwICsxIEBACitzcGVrLXgKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NwZWstYWx0ZXJuYXRp dmUvdGVtcGxhdGUgYi9zcmNwa2dzL3NwZWsteC90ZW1wbGF0ZQpzaW1pbGFyaXR5IGluZGV4IDUy JQpyZW5hbWUgZnJvbSBzcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUvdGVtcGxhdGUKcmVuYW1lIHRv IHNyY3BrZ3Mvc3Blay14L3RlbXBsYXRlCmluZGV4IGQ3YjU1Yzc3NmIxZDQuLjNkZWQ2YzJjMzIz ZTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL3NwZWsteC90ZW1wbGF0ZQpAQCAtMSwxOCArMSwxOCBAQAotIyBUZW1wbGF0ZSBmaWxl IGZvciAnc3Blay1hbHRlcm5hdGl2ZScKLXBrZ25hbWU9c3Blay1hbHRlcm5hdGl2ZQotdmVyc2lv bj0wLjguMi4zCi1yZXZpc2lvbj0yCisjIFRlbXBsYXRlIGZpbGUgZm9yICdzcGVrLXgnCitwa2du YW1lPXNwZWsteAordmVyc2lvbj0wLjkuMworcmV2aXNpb249MQogYnVpbGRfc3R5bGU9Z251LWNv bmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBnZXR0ZXh0LWRldmVsIGludGx0b29s IGxpYnRvb2wgcGtnLWNvbmZpZwogIHd4V2lkZ2V0cy1jb21tb24gd3hXaWRnZXRzLWd0azMtZGV2 ZWwiCiBtYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHd4V2lkZ2V0cy1ndGszLWRldmVsIgogZGVw ZW5kcz0iZmZtcGVnIgogc2hvcnRfZGVzYz0iQWNvdXN0aWMgc3BlY3RydW0gYW5hbHlzZXIiCi1t YWludGFpbmVyPSJLYXJ0aWsgU2luZ2ggPGthcnRpay55bndhQGdtYWlsLmNvbT4iCittYWludGFp bmVyPSJ6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0 ZXIiCi1ob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL3dpdGhtb3J0ZW4vc3Blay1hbHRlcm5h dGl2ZSIKLWRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL3dpdGhtb3J0ZW4vc3Blay1hbHRl cm5hdGl2ZS9hcmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09IjAwN2JhNGI4NGEz MTBiMDc4ZTM3OGFhODRjOGU4MDc4M2RiNTgyMTQzN2E3NTdhNDg4YzNlY2VjMzc3ZTZiMmEiCito b21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL01pa2VXYW5nMDAwMDAwL3NwZWsteCIKK2Rpc3Rm aWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL01pa2VXYW5nMDAwMDAwL3NwZWsteC9hcmNoaXZlL3Yk e3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPSI3ZjRiMTA5OTAzMzMzY2RkMzEwYWIyYjkxNzZm MGRjNDlhNTY1ODkxMzc2ZTI4MWEyMzNkMzQyY2VkZjkwZWY3IgogCiBDWFhGTEFHUz0iLURfTEFS R0VGSUxFX1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IgogCkBAIC0yMiwzICsyMiw5IEBA IGV4cG9ydCBXWF9DT05GSUdfTkFNRT0id3gtY29uZmlnLWd0azMiCiBwcmVfY29uZmlndXJlKCkg ewogCU5PQ09ORklHVVJFPTEgLi9hdXRvZ2VuLnNoCiB9CisKK3NwZWstYWx0ZXJuYXRpdmVfcGFj a2FnZSgpIHsKKwlkZXBlbmRzPSJzcGVrLXgiCisJc2hvcnRfZGVzYys9IiAtIHRyYW5zaXRpb25h bCBkdW1teSBwYWNrYWdlIgorCWJ1aWxkX3N0eWxlPW1ldGEKK30KCkZyb20gNTYzMDc5Mzk4MWQ5 OGVkZGI4NWIzMjU0Njg5ZDM2MjhjZjM2MmE5NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY4LzExNV0gc3NyOiByZXZidW1wIGZvciBmZm1w ZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvc3NyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9z c3IvdGVtcGxhdGUgYi9zcmNwa2dzL3Nzci90ZW1wbGF0ZQppbmRleCA4NDJiMjQyM2FhZDEwLi4z NDQ4Y2ExMTBlYjBjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3Nzci90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3Nzci90ZW1wbGF0ZQpAQCAtNSw3ICs1LDcgQEAgcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfUVQ1PU9OIgogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIgotbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZy1kZXZlbCBnbHUt ZGV2ZWwgamFjay1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCittYWtlZGVwZW5kcz0iYWxzYS1saWIt ZGV2ZWwgZmZtcGVnNC1kZXZlbCBnbHUtZGV2ZWwgamFjay1kZXZlbCBwdWxzZWF1ZGlvLWRldmVs CiAgcXQ1LXRvb2xzLWRldmVsIHF0NS14MTFleHRyYXMtZGV2ZWwgbGliWGluZXJhbWEtZGV2ZWwg djRsLXV0aWxzLWRldmVsIgogZGVwZW5kcz0iZGVza3RvcC1maWxlLXV0aWxzIGhpY29sb3ItaWNv bi10aGVtZSIKIHNob3J0X2Rlc2M9IlNpbXBsZSBTY3JlZW4gUmVjb3JkZXIgZm9yIHByb2dyYW1z IGFuZCBnYW1lcyIKCkZyb20gNmNiN2VhMjFjYWRjMDFhMWJlODE1Yjg3N2YwNjI5Nzc4MGIwNjNm NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDY5LzExNV0gc3luZmlnOiByZXZidW1wIGZvciBmZm1wZWctNi4wIGFuZCBtbHQ3CgotLS0KIHNy Y3BrZ3Mvc3luZmlnL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCB8IDcxICsrKysrKysrKysrKysrKysr KysrKysrKysrKysKIHNyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlICAgICAgICAgICAgICB8ICA0ICst CiAyIGZpbGVzIGNoYW5nZWQsIDczIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoIGIvc3JjcGtncy9z eW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMDAuLjEwNzgwYjQyNzgyZjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3N5 bmZpZy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKQEAgLTAsMCArMSw3MSBAQAorLS0tIGEvc3JjL21v ZHVsZXMvbW9kX2xpYmF2Y29kZWMvdHJndF9hdi5jcHAJMjAyMi0xMC0yNSAwOToxNDoxMi4wMDAw MDAwMDAgLTA0MDAKKysrKyBiL3NyYy9tb2R1bGVzL21vZF9saWJhdmNvZGVjL3RyZ3RfYXYuY3Bw CTIwMjMtMDUtMDUgMjE6MzQ6MTcuODk5MTk0NTU5IC0wNDAwCitAQCAtMzgsNiArNDEsNyBAQAor IGV4dGVybiAiQyIKKyB7CisgI2lmZGVmIEhBVkVfTElCQVZGT1JNQVRfQVZGT1JNQVRfSAorKyMJ aW5jbHVkZSA8bGliYXZjb2RlYy9hdmNvZGVjLmg+CisgIwlpbmNsdWRlIDxsaWJhdmZvcm1hdC9h dmZvcm1hdC5oPgorICNlbGlmIGRlZmluZWQoSEFWRV9BVkZPUk1BVF9IKQorICMJaW5jbHVkZSA8 YXZmb3JtYXQuaD4KK0BAIC0xNTUsMTEgKzE1NiwxMSBAQAorICAgICB9CisgCisgCWJvb2wgb3Bl bl92aWRlb19zdHJlYW0oKSB7CistCQlpZiAoYXZjb2RlY19vcGVuMih2aWRlb19jb250ZXh0LCBO VUxMLCBOVUxMKSA8IDApIHsKKysJCWlmIChhdmNvZGVjX29wZW4yKHZpZGVvX2NvbnRleHQsIG51 bGxwdHIsIG51bGxwdHIpIDwgMCkgeworIAkJCXN5bmZpZzo6ZXJyb3IoIlRhcmdldF9MaWJBVkNv ZGVjOiBjb3VsZCBub3Qgb3BlbiB2aWRlbyBjb2RlYyIpOworIAkJCS8vIHNlZW1zIHRoZSBjYWxs aW5nIG9mIGF2Y29kZWNfZnJlZV9jb250ZXh0IGFmdGVyIGVycm9yIHdpbGwgY2F1c2UgY3Jhc2gK KyAJCQkvLyBzbyBqdXN0IGZvcmdldCBhYm91dCB0aGlzIGNvbnRleHQKKy0JCQl2aWRlb19jb250 ZXh0ID0gTlVMTDsKKysJCQl2aWRlb19jb250ZXh0ID0gbnVsbHB0cjsKKyAJCQljbG9zZSgpOwor IAkJCXJldHVybiBmYWxzZTsKKyAgICAgICAgIH0KK0BAIC0yMzQsMTUgKzIzNSwyMSBAQAorIAkJ Y2xvc2UoKTsKKyAKKyAJCWlmICghYXZfcmVnaXN0ZXJlZCkgeworKyNpZiBMSUJBVkNPREVDX1ZF UlNJT05fTUFKT1IgPCA1OCAvLyBGRk1QRUcgPCA0LjAKKyAJCQlhdl9yZWdpc3Rlcl9hbGwoKTsK KysjZW5kaWYKKyAJCQlhdl9yZWdpc3RlcmVkID0gdHJ1ZTsKKyAJCX0KKyAKKyAJCS8vIGd1ZXNz IGZvcm1hdAorLQkJQVZPdXRwdXRGb3JtYXQgKmZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdChOVUxM LCBmaWxlbmFtZS5jX3N0cigpLCBOVUxMKTsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9S IDwgNTkgLy8gRkZNUEVHIDwgNS4wCisrCQlBVk91dHB1dEZvcm1hdCogZm9ybWF0ID0gYXZfZ3Vl c3NfZm9ybWF0KG51bGxwdHIsIGZpbGVuYW1lLmNfc3RyKCksIG51bGxwdHIpOworKyNlbHNlCisr CQljb25zdCBBVk91dHB1dEZvcm1hdCogZm9ybWF0ID0gYXZfZ3Vlc3NfZm9ybWF0KG51bGxwdHIs IGZpbGVuYW1lLmNfc3RyKCksIG51bGxwdHIpOworKyNlbmRpZgorIAkJaWYgKCFmb3JtYXQpIHsK KyAJCQlzeW5maWc6Ondhcm5pbmcoIlRhcmdldF9MaWJBVkNvZGVjOiB1bmFibGUgdG8gZ3Vlc3Mg dGhlIG91dHB1dCBmb3JtYXQsIGRlZmF1bHRpbmcgdG8gTVBFRyIpOworLQkJCWZvcm1hdCA9IGF2 X2d1ZXNzX2Zvcm1hdCgibXBlZyIsIE5VTEwsIE5VTEwpOworKwkJCWZvcm1hdCA9IGF2X2d1ZXNz X2Zvcm1hdCgibXBlZyIsIG51bGxwdHIsIG51bGxwdHIpOworIAkJfQorIAkJaWYgKCFmb3JtYXQp IHsKKyAJCQlzeW5maWc6OmVycm9yKCJUYXJnZXRfTGliQVZDb2RlYzogdW5hYmxlIHRvIGZpbmQg J21wZWcnIG91dHB1dCBmb3JtYXQiKTsKK0BAIC0yNTQsNiArMjYxLDcgQEAKKyAJCWNvbnRleHQg PSBhdmZvcm1hdF9hbGxvY19jb250ZXh0KCk7CisgCQlhc3NlcnQoY29udGV4dCk7CisgCQljb250 ZXh0LT5vZm9ybWF0ID0gZm9ybWF0OworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1 OCAvLyBGRk1QRUcgPCA0LjAKKyAJCWlmIChmaWxlbmFtZS5zaXplKCkgKyAxID4gc2l6ZW9mKGNv bnRleHQtPmZpbGVuYW1lKSkgeworIAkJCXN5bmZpZzo6ZXJyb3IoCisgCQkJCSJUYXJnZXRfTGli QVZDb2RlYzogZmlsZW5hbWUgdG9vIGxvbmcsIG1heCBsZW5ndGggaXMgJWQsIGZpbGVuYW1lIGlz ICclcyciLAorQEAgLTI2Myw2ICsyNzEsMTQgQEAKKyAJCQlyZXR1cm4gZmFsc2U7CisgCQl9Cisg CQltZW1jcHkoY29udGV4dC0+ZmlsZW5hbWUsIGZpbGVuYW1lLmNfc3RyKCksIGZpbGVuYW1lLnNp emUoKSArIDEpOworKyNlbHNlCisrCQljb250ZXh0LT51cmwgPSBhdl9zdHJuZHVwKGZpbGVuYW1l LmNfc3RyKCksIGZpbGVuYW1lLnNpemUoKSk7CisrCQlpZiAoIWNvbnRleHQtPnVybCkgeworKwkJ CXN5bmZpZzo6ZXJyb3IoIlRhcmdldF9MaWJBVkNvZGVjOiBjYW5ub3QgYWxsb2NhdGUgc3BhY2Ug Zm9yIGZpbGVuYW1lIik7CisrCQkJY2xvc2UoKTsKKysJCQlyZXR1cm4gZmFsc2U7CisrCQl9Cisr I2VuZGlmCisgCisgCQlwYWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKyAJCWFzc2VydChwYWNr ZXQpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zeW5maWcvdGVtcGxhdGUgYi9zcmNwa2dzL3N5bmZp Zy90ZW1wbGF0ZQppbmRleCBkNGQzZTM0MWEyMGJmLi43MDNjZmQ3ZWJhYzg0IDEwMDY0NAotLS0g YS9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQpA QCAtNiw3ICs2LDcgQEAgcmV2aXNpb249NAogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29u ZmlndXJlX2FyZ3M9Ii0td2l0aC1ib29zdC1saWJkaXI9JHtYQlBTX0NST1NTX0JBU0V9L3Vzci9s aWIiCiBob3N0bWFrZWRlcGVuZHM9ImJvb3N0LWJ1aWxkIEltYWdlTWFnaWNrIHBrZy1jb25maWcg aW50bHRvb2wiCi1tYWtlZGVwZW5kcz0iRVRMIGdldHRleHQtZGV2ZWwgbGlieG1sKystZGV2ZWwg bWx0LWRldmVsIGxpYm1hZ2ljay1kZXZlbAorbWFrZWRlcGVuZHM9IkVUTCBnZXR0ZXh0LWRldmVs IGxpYnhtbCsrLWRldmVsIG1sdDctZGV2ZWwgbGlibWFnaWNrLWRldmVsCiAgbGlibW5nLWRldmVs IGJvb3N0LWJ1aWxkIGJvb3N0LWRldmVsIGxpYm9wZW5leHItZGV2ZWwgZmZtcGVnLWRldmVsIgog ZGVwZW5kcz0iSW1hZ2VNYWdpY2siCiBzaG9ydF9kZXNjPSJDTEkgMkQgdmVjdG9yIGFuZCB0aW1l bGluZS1iYXNlZCBhbmltYXRpb24gc29mdHdhcmUiCkBAIC0yMCw3ICsyMCw3IEBAIENYWEZMQUdT PSItc3RkPWMrKzExIC1ESEFWRV9MT0NBTEVfSD0xIgogCiBzeW5maWctZGV2ZWxfcGFja2FnZSgp IHsKIAlkZXBlbmRzPSIke3NvdXJjZXBrZ30+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KLQkgbGli b3BlbmV4ci1kZXZlbCBsaWJ4bWwrKy1kZXZlbCBtbHQtZGV2ZWwiCisJIGxpYm9wZW5leHItZGV2 ZWwgbGlieG1sKystZGV2ZWwgbWx0Ny1kZXZlbCIKIAlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1l bnQgZmlsZXMiCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZtb3ZlIHVzci9iaW4vc3luZmlnLWNvbmZp ZwoKRnJvbSBhZTNjYTJkZGM1YjI4NzFmYmIxZGJkMzUxZTYxNjNkZGRjYWE5MjFmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzAvMTE1XSB0 aW1nOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdGltZy90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZSBiL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZQpp bmRleCAyYTJhYjc2M2QyZmRkLi44ZmI0MzI3NTM1ZWY5IDEwMDY0NAotLS0gYS9zcmNwa2dzL3Rp bWcvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90aW1nL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAndGltZycKIHBrZ25hbWU9dGltZwogdmVyc2lvbj0xLjQuNQot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdz PSItRFdJVEhfT1BFTlNMSURFX1NVUFBPUlQ9b2ZmIC1Xbm8tZGV2IgogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIGdpdCIKCkZyb20gMzNjNmM1NzNhNDlmMGQ3OGE5ZTliZmMyYjMzYjMzODg3 NjU2ZDE4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDcxLzExNV0gdHZoZWFkZW5kOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0K IHNyY3BrZ3MvdHZoZWFkZW5kL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90dmhlYWRlbmQv dGVtcGxhdGUgYi9zcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQppbmRleCA5YWVhN2RlNGVjNzA1 Li4wMTJkMzFjNDg3OWZmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQpAQCAtOCw3ICs4LDcgQEAgY29uZmlndXJl X2FyZ3M9Ii0tZW5hYmxlLWR2YnNjYW4gLS1kaXNhYmxlLWZmbXBlZ19zdGF0aWMKIC0tZGlzYWJs ZS1saWJ4MjY1X3N0YXRpYyAtLWRpc2FibGUtbGlidnB4X3N0YXRpYyAtLWRpc2FibGUtbGlidGhl b3JhX3N0YXRpYwogLS1kaXNhYmxlLWxpYnZvcmJpc19zdGF0aWMgLS1kaXNhYmxlLWxpYmZka2Fh Y19zdGF0aWMiCiBob3N0bWFrZWRlcGVuZHM9ImdldHRleHQgcGtnLWNvbmZpZyBweXRob24zIGdp dCB3aGljaCIKLW1ha2VkZXBlbmRzPSJhdmFoaS1saWJzLWRldmVsIG9wZW5zc2wtZGV2ZWwgemxp Yi1kZXZlbCBsaWJjdXJsLWRldmVsIGZmbXBlZy1kZXZlbCIKK21ha2VkZXBlbmRzPSJhdmFoaS1s aWJzLWRldmVsIG9wZW5zc2wtZGV2ZWwgemxpYi1kZXZlbCBsaWJjdXJsLWRldmVsIGZmbXBlZzQt ZGV2ZWwiCiBzaG9ydF9kZXNjPSJUViBzdHJlYW1pbmcgc2VydmVyIgogbWFpbnRhaW5lcj0ibGVt bWkgPGxlbW1pQG5lcmQybmVyZC5vcmc+IgogbGljZW5zZT0iR1BMLTMuMC1vbmx5IgoKRnJvbSBi ZTc0ZGUyYWIwZWM5M2M4MWZjNWZhODM4MzkxNzUxN2Y5ZDE3MTk0IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzIvMTE1XSB1bnBhcGVyOiB1 cGRhdGUgdG8gNy4wLjAuCgotLS0KIHNyY3BrZ3MvdW5wYXBlci90ZW1wbGF0ZSB8IDE2ICsrKysr KysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlIGIvc3JjcGtncy91bnBh cGVyL3RlbXBsYXRlCmluZGV4IDM4ZWQ0N2E1ODQwMTYuLjFmZjkxMGU3MjJhZmMgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvdW5wYXBlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3VucGFwZXIvdGVtcGxh dGUKQEAgLTEsMTMgKzEsMTMgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3VucGFwZXInCiBwa2du YW1lPXVucGFwZXIKLXZlcnNpb249Ni4xCi1yZXZpc2lvbj0zCi1idWlsZF9zdHlsZT1nbnUtY29u ZmlndXJlCit2ZXJzaW9uPTcuMC4wCityZXZpc2lvbj0xCitidWlsZF9zdHlsZT1tZXNvbgoraG9z dG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIG1lc29uIGxpYnhzbHQiCittYWtlZGVwZW5kcz0iZmZt cGVnLWRldmVsIHB5dGhvbjMtU3BoaW54Igorc2hvcnRfZGVzYz0iUG9zdC1wcm9jZXNzaW5nIHRv b2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9y cGhhbkB2b2lkbGludXgub3JnPiIKLWhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBsaWJ4c2x0 IgotbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCIKLWxpY2Vuc2U9IkdQTC0yIgorbGljZW5zZT0i R1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3d3dy5mbGFtZWV5ZXMuZXUvcHJv amVjdHMvdW5wYXBlciIKLXNob3J0X2Rlc2M9IkEgcG9zdC1wcm9jZXNzaW5nIHRvb2wgZm9yIHNj YW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogZGlzdGZpbGVzPSJodHRwczovL3d3dy5mbGFtZWV5ZXMu ZXUvZmlsZXMvJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci54eiIKLWNoZWNrc3VtPTIzN2M4NGY1 ZGE1NDRiM2Y3NzA5ODI3ZjlmMTJjMzdjMzQ2Y2RmMDI5YjExMjhmYjQ2MzNmOWJhZmE1Y2I5MzAK K2NoZWNrc3VtPTI1NzVmYmJmMjZjMjI3MTlkMWNiODgyYjU5NjAyYzk5MDBjN2Y3NDcxMThhYzEz MDg4M2Y2MzQxOWJlNDZhODAKCkZyb20gNTc4MzgzYzRkOGU5N2M5ODljZTNjNTI2NjRiOTI3NjE3 MmM2YWViNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDczLzExNV0gdmJhLW06IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy92YmEtbS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmJhLW0vdGVtcGxhdGUgYi9zcmNw a2dzL3ZiYS1tL3RlbXBsYXRlCmluZGV4IDljNzFjZWZlM2Y4ZGQuLjIyMjNkMjk3YzMxZjUgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvdmJhLW0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy92YmEtbS90ZW1w bGF0ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9dmJhLW0KIHJldmVydHM9MTI5Ml8yCiB2ZXJz aW9uPTIuMS43Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogY29u ZmlndXJlX2FyZ3M9Ii1ERU5BQkxFX0dUSz1UUlVFIC1ERU5BQkxFX0ZGTVBFRz1UUlVFIC1ERU5B QkxFX0xJTks9VFJVRSAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSIKIGhvc3RtYWtlZGVwZW5k cz0iZ2V0dGV4dCBwa2ctY29uZmlnIHVuemlwIHppcCB5YXNtIHd4V2lkZ2V0cy1ndGszLWRldmVs IgoKRnJvbSA0OWU3NmQ0OGIyYzljOTc0MDQwOGVlMWQyZDM3MmY0MzA5YmE1MzQxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzQvMTE1XSB2 aWNlOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvdmljZS90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmljZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvdmljZS90ZW1wbGF0 ZQppbmRleCBiMWY4NjZkMzUwOTVlLi40YmVhYjJjNWY5ZWJkIDEwMDY0NAotLS0gYS9zcmNwa2dz L3ZpY2UvdGVtcGxhdGUKKysrIGIvc3JjcGtncy92aWNlL3RlbXBsYXRlCkBAIC0yNiw3ICsyNiw3 IEBAIG1ha2VkZXBlbmRzPSIKIAkkKHZvcHRfaWYgZ3RrMyBndGsrMy1kZXZlbCkKIAkkKHZvcHRf aWYgZ3RrMyBwdWxzZWF1ZGlvLWRldmVsKQogCSQodm9wdF9pZiBndGszIHBhbmdvLWRldmVsKQot CSQodm9wdF9pZiBmZm1wZWcgZmZtcGVnLWRldmVsKSIKKwkkKHZvcHRfaWYgZmZtcGVnIGZmbXBl ZzQtZGV2ZWwpIgogc2hvcnRfZGVzYz0iRW11bGF0b3IgZm9yIEM2NCwgQzEyOCwgQ0JNLUlJLCBQ RVQsIFZJQzIwLCBQbHVzNCBhbmQgQzE2IgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2 b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCgpGcm9tIDgwMGMwNGMz NzU4ZjY1MjM4MzQ4ZjA5MzQ2ZGMxMjhlNzQ3MmZhZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3NS8xMTVdIHdheXBpcGU6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy93YXlwaXBlL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy93YXlwaXBlL3RlbXBsYXRlIGIvc3JjcGtncy93YXlwaXBlL3RlbXBsYXRlCmluZGV4 IDZkYTg4YjIxYmYyYTEuLjRkYTgwNTg0MDBiNTggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvd2F5cGlw ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3dheXBpcGUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICd3YXlwaXBlJwogcGtnbmFtZT13YXlwaXBlCiB2ZXJzaW9u PTAuOC42Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogIyBsdG8g aXMgb2ZmIGJlY2F1c2UgaXQgY2F1c2VzIGxpbmtpbmcgZXJyb3JzIGluIGFybXY2bCBhbmQgYXJt djdsIChkdWUgdG8gTkVPTikKIGNvbmZpZ3VyZV9hcmdzPSItRHdlcnJvcj1mYWxzZSAtRHdpdGhf ZG1hYnVmPWVuYWJsZWQgLUR3aXRoX2x6ND1lbmFibGVkCgpGcm9tIDk3MTBkZjY0NTQxNTBmNjJh ZmViODUwZmQ5MTFjNzM3NGI4OGM3YzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIg LTA0MDAKU3ViamVjdDogW1BBVENIIDA3Ni8xMTVdIHhwcmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy94cHJhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy94cHJhL3Rl bXBsYXRlIGIvc3JjcGtncy94cHJhL3RlbXBsYXRlCmluZGV4IDM5NDcxOGI1NmY2ODYuLjM0ZmJm ZjliMmYxYWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MveHByYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3hwcmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd4cHJh JwogcGtnbmFtZT14cHJhCiB2ZXJzaW9uPTUuMC4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1weXRob24zLW1vZHVsZQogbWFrZV9idWlsZF9hcmdzPSItLXdpdGhvdXQtY3Vk YV9rZXJuZWxzIC0td2l0aG91dC1jdWRhX3JlYnVpbGQiCiBtYWtlX2luc3RhbGxfYXJncz0iJCh2 b3B0X3dpdGggZG9jcykgJHttYWtlX2J1aWxkX2FyZ3N9IgoKRnJvbSAwMzJmMDI4ZGI4NDBjZmNj OTVkNDkwZjBiNjQ5N2JlMTE2ZmQwZGMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDMxIE1hciAyMDIzIDA5OjA3OjQw IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzcvMTE1XSBudi1jb2RlYy1oZWFkZXJzOiB1cGRhdGUg dG8gMTIuMC4xNi4wCgotLS0KIHNyY3BrZ3MvbnYtY29kZWMtaGVhZGVycy90ZW1wbGF0ZSB8IDQg KystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUgYi9zcmNwa2dzL252 LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUKaW5kZXggM2Q0MjJhNjFlNDg5MS4uMjUxZTA1N2Y4MjZm YiAxMDA2NDQKLS0tIGEvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvbnYtY29kZWMtaGVhZGVycy90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ252LWNvZGVjLWhlYWRlcnMnCiBwa2duYW1lPW52LWNvZGVjLWhlYWRlcnMK LXZlcnNpb249MTEuMS41LjEKK3ZlcnNpb249MTIuMC4xNi4wCiByZXZpc2lvbj0xCiBidWlsZF9z dHlsZT1nbnUtbWFrZWZpbGUKIHNob3J0X2Rlc2M9IkZGbXBlZyB2ZXJzaW9uIG9mIGhlYWRlcnMg cmVxdWlyZWQgdG8gaW50ZXJmYWNlIHdpdGggTnZpZGlhcyBjb2RlYyBBUElzIgpAQCAtOCw3ICs4 LDcgQEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vu c2U9Ik1JVCIKIGhvbWVwYWdlPSJodHRwOi8vZ2l0LnZpZGVvbGFuLm9yZy8/cD1mZm1wZWcvbnYt Y29kZWMtaGVhZGVycy5naXQiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9GRm1wZWcv bnYtY29kZWMtaGVhZGVycy9hcmNoaXZlL24ke3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPWQw OTVmYmQ1NmFhOTM3NzI0NzFhMzIzYmUwZWJlNjU1MDRhMGY0M2YwNmM3NmEzMGI2ZDI1ZGE3N2Iw NmFlOWMKK2NoZWNrc3VtPTJhMTUzM2I2NWY1NWY5ZGE1Mjk1NmZhZjA2MjdlZDNiNzQ4NjhhYzBj N2YyNjk5OTBlZGQyMTM2OTExM2I0OGYKIAogcG9zdF9pbnN0YWxsKCkgewogCXNlZCAtbiAnNCwy NXAnIGluY2x1ZGUvZmZudmNvZGVjL252RW5jb2RlQVBJLmggPiBMSUNFTlNFCgpGcm9tIDFiNzM3 NGEzOGQ0ZDg5NWU4NjFlNTZiYjYzMjAwYTAzNzE0NTE3MzUgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMzEgTWFyIDIw MjMgMDk6MDg6NDAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3OC8xMTVdIG9wZW5pbWFnZWRlbm9p c2U6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNl L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNlL3RlbXBsYXRlIGIv c3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNlL3RlbXBsYXRlCmluZGV4IGI3OTI4MTNkYmE3YzIuLjEw OWRlYjE3MWMzZjcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVuaW1hZ2VkZW5vaXNlJwogcGtnbmFtZT1vcGVuaW1h Z2VkZW5vaXNlCiB2ZXJzaW9uPTEuNC4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0i eDg2XzY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImlzcGMgcHl0aG9u MyIKCkZyb20gM2IxYTI4MTUyMDJjMWJkYTAxMjRlMjNhOGNjNWM3MDA5NzQzNTVhMSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog TW9uLCAzIEFwciAyMDIzIDIzOjMxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzkvMTE1XSBz aG90Y3V0OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc2hvdGN1dC90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hvdGN1dC90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc2hvdGN1 dC90ZW1wbGF0ZQppbmRleCAzMzE0MWZiZDg2MmQ3Li5mNDZjYjUzYjZiZmI5IDEwMDY0NAotLS0g YS9zcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2hvdGN1dCcKIHBrZ25hbWU9 c2hvdGN1dAogdmVyc2lvbj0yMy4wOS4yOQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFNIT1RDVVRfVkVSU0lPTj0ke3ZlcnNpb259 IgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0Ni10b29scy1kZXZlbCIKCkZyb20gOWE5 ODI3MDU2OTY4YzllYzQxNjJhNmEwNjlmZTVlMzczYTk1ZTU3OSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAzIEFwciAy MDIzIDIzOjMzOjMwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODAvMTE1XSBzaGlib2tlbjI6IHJl dmJ1bXAgZm9yIHF0NS01LjE1LjgKCi0tLQogc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBv cnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaCB8IDEgKwogc3JjcGtncy9zaGlib2tlbjIvdGVt cGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KIDIgZmlsZXMgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMjAwMDAg c3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRj aAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hp bmVyeS1ieXBhc3MucGF0Y2ggYi9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL2ltcG9ydGxpYi1t YWNoaW5lcnktYnlwYXNzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAw MDAwMDAuLmVmY2YzMjQ5YmQ4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3NoaWJva2Vu Mi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCkBAIC0wLDAgKzEgQEAK Ky4uLy4uL3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNz LnBhdGNoClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9z aGlib2tlbjIvdGVtcGxhdGUgYi9zcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZQppbmRleCA4ODNk NmEwODRkODY4Li5mM2MwNmVjMjQ1YTFmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3NoaWJva2VuMi90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NoaWJva2VuMicKIHBrZ25hbWU9c2hpYm9rZW4yCiB2ZXJz aW9uPTUuMTUuMTAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIF9wa2duYW1lPSJweXNpZGUtc2V0 dXAtb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufSIKIGJ1aWxkX3dya3NyYz0ic291cmNlcy9zaGli b2tlbjIiCiBidWlsZF9zdHlsZT1jbWFrZQoKRnJvbSAzMTBhMDYzNWFjZTM4NTM2MDlmYmJiOGQ2 ZmQ2ZmE1M2YzNTUxMmRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBNb24sIDMgQXByIDIwMjMgMjM6MzM6NTMgLTA0MDAKU3Vi amVjdDogW1BBVENIIDA4MS8xMTVdIHB5dGhvbjMtcHlzaWRlMjogcmV2YnVtcCBmb3IgcXQ1LTUu MTUuOAoKLS0tCiAuLi4vcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaCAg ICAgIHwgMTUgKysrKysrKysrKysrKysrCiBzcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0 ZSAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcHl0aG9uMy1w eXNpZGUyL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnkt YnlwYXNzLnBhdGNoIGIvc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWIt bWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAwLi42NGM0Mjk1ODQ3NzZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9weXRob24z LXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApAQCAtMCww ICsxLDE1IEBACitVc2luZyB0aGlzIHByZXZlbnRzIGFuIGVycm9yIGFyb3VuZCBsaW5lIDIyMCBi ZWxvdyBpdC4KKyJBdHRyaWJ1dGVFcnJvcjogbW9kdWxlICdpbXBvcnRsaWInIGhhcyBubyBhdHRy aWJ1dGUgJ21hY2hpbmVyeSciCitUaGUgb2xkIGJhY2t1cCBsb2dpYyBpcyBpbiBwbGFjZSBhbmQg Y29tcGlsZXMgd2l0aG91dCBpc3N1ZXMuCistLS0gYS9zb3VyY2VzL3NoaWJva2VuMi9saWJzaGli b2tlbi9lbWJlZC9zaWduYXR1cmVfYm9vdHN0cmFwLnB5CTIwMjMtMDQtMDIgMjM6MDk6MzQuNjg4 OTEyNDAyIC0wNDAwCisrKysgYi9zb3VyY2VzL3NoaWJva2VuMi9saWJzaGlib2tlbi9lbWJlZC9z aWduYXR1cmVfYm9vdHN0cmFwLnB5CTIwMjMtMDQtMDIgMjM6MTA6MDMuMzk1NTI5NTgyIC0wNDAw CitAQCAtMTcwLDkgKzE3MCw2IEBACisKKyAgICAgIyAnemlwc3RyaW5nX3NlcXVlbmNlJyBjb21l cyBmcm9tIHNpZ25hdHVyZS5jcHAKKyAgICAgemlwYnl0ZXMgPSBiYXNlNjQuYjY0ZGVjb2RlKCcn LmpvaW4oemlwc3RyaW5nX3NlcXVlbmNlKSkKKy0gICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA+ PSAzOgorLSAgICAgICAgdnppcCA9IHppcGZpbGUuWmlwRmlsZShpby5CeXRlc0lPKHppcGJ5dGVz KSkKKy0gICAgICAgIHJldHVybiBzeXMubWV0YV9wYXRoLCBFbWJlZGRhYmxlWmlwSW1wb3J0ZXIo dnppcCkKKworICAgICAjIE9sZCB2ZXJzaW9uIGZvciBQeXRob24gMi43LCBvbmx5LgorICAgICBp bXBvcnQgb3MKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3RlbXBsYXRlIGIv c3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUKaW5kZXggMjQ5ZWZhOTA5ODg0Mi4uNTI2 MjY0MzZjZTc1ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdweXRob24zLXB5c2lkZTInCiBwa2duYW1lPXB5dGhvbjMtcHlz aWRlMgogdmVyc2lvbj01LjE1LjEwCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBfcGtnbmFtZT0i cHlzaWRlLXNldHVwLW9wZW5zb3VyY2Utc3JjLSR7dmVyc2lvbn0iCiBidWlsZF93cmtzcmM9InNv dXJjZXMvcHlzaWRlMiIKIGJ1aWxkX3N0eWxlPWNtYWtlCgpGcm9tIDQ5MWRhNWJhZGE2NmZkNTRj NTk2YTI3OTVjZjI5MmVlZGI3YTg4YzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIgMjAyMyAxMToxNDozNSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDgyLzExNV0ga29ucXVlcm9yOiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlIGIvc3JjcGtncy9rb25xdWVyb3IvdGVtcGxhdGUKaW5k ZXggYWJmYTU5ZTZiN2RlZC4uM2NjMjljMTJkYzFkYiAxMDA2NDQKLS0tIGEvc3JjcGtncy9rb25x dWVyb3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9rb25xdWVyb3IvdGVtcGxhdGUKQEAgLTEsMTEg KzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2tvbnF1ZXJvcicKIHBrZ25hbWU9a29ucXVl cm9yCiB2ZXJzaW9uPTIzLjA4LjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURERVNLVE9QVE9KU09OX0VYRUNVVEFCTEU9L3Vzci9i aW4vZGVza3RvcHRvanNvbiIKIGhvc3RtYWtlZGVwZW5kcz0iZXh0cmEtY21ha2UtbW9kdWxlcyBw eXRob24zIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSBrZG9jdG9vbHMKLWtjb3JlYWRkb25zIGtj b25maWcgZ2V0dGV4dCIKKyBrY29yZWFkZG9ucyBrY29uZmlnIGdldHRleHQiCiBtYWtlZGVwZW5k cz0icXQ1LWRldmVsIHF0NS13ZWJlbmdpbmUtZGV2ZWwgcXQ1LWRlY2xhcmF0aXZlLWRldmVsCiAg cXQ1LXdlYmNoYW5uZWwtZGV2ZWwgcXQ1LWxvY2F0aW9uLWRldmVsIGtjbXV0aWxzLWRldmVsIGtk ZWxpYnM0c3VwcG9ydC1kZXZlbAogIGthcmNoaXZlLWRldmVsIGtodG1sLWRldmVsIGtkZXN1LWRl dmVsIGthY3Rpdml0aWVzNS1kZXZlbCIKCkZyb20gNmFmMGJlOTcyMzMyZTk1NDk0YmMyMGVlOTFl MjdjNGNmOTcyM2QwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCA0IEFwciAyMDIzIDExOjE0OjU4IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwODMvMTE1XSBxdDUtc3BlZWNoOiByZXZidW1wIGZvciBxdDUtNS4xNS44Cgot LS0KIHNyY3BrZ3MvcXQ1LXNwZWVjaC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXNw ZWVjaC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1LXNwZWVjaC90ZW1wbGF0ZQppbmRleCAzZWNkMTBk NTA2NTBjLi4yZDdkNGQ0ZDI0NTM1IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS1zcGVlY2gvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1LXNwZWVjaCcKIHBrZ25hbWU9cXQ1LXNwZWVjaAogdmVy c2lvbj01LjE1LjcKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIF9jb21taXQ9ZDMyZjRhNDc5ZDM4 YTExZjU0NzU5ODAwNGI5NzVmNDM1NjQyNGExNgogYnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3Vy ZV9hcmdzPSItLSAtZmxpdGUgLWZsaXRlLWFsc2EgLXNwZWVjaGQiCgpGcm9tIGQ0NmNmMTYyN2Nk YjFiNDVhMmI1OGI1MWM0ZDcyYzNhY2JhZDFlMDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIgMjAyMyAxODoz ODo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg0LzExNV0gcXQ1LXN0eWxlcGx1Z2luczogcmV2 YnVtcCBmb3IgcXQ1LTUuMTUuOAoKLS0tCiBzcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUgYi9zcmNwa2dz L3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKaW5kZXggOTZlZDk3ZDEyY2QyNC4uMzBkOTM2NjBh MmE0ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3F0NS1zdHlsZXBsdWdpbnMnCiBwa2duYW1lPXF0NS1zdHlsZXBsdWdp bnMKIHZlcnNpb249NS4wLjAKLXJldmlzaW9uPTIwCityZXZpc2lvbj0yMQogX2dpdHJldj0zMzVk YmVjZTEwM2UyY2JmNmM3Y2Y4MTlhYjY2NzJjMjk1NmIxN2IzCiBidWlsZF9zdHlsZT1xbWFrZQog aG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSIKCkZy b20gZWMwZTllODgyZjVkMjZlZTQwYzBmMDJhOTg3YmIxNTQ5OTIzOWQ3ZSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA3 IE1heSAyMDIzIDIwOjE1OjAzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODUvMTE1XSBxdDYtd2Vi ZW5naW5lOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcXQ2LXdlYmVuZ2lu ZS90ZW1wbGF0ZSB8IDEgKwogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlIGIvc3JjcGtncy9xdDYtd2ViZW5n aW5lL3RlbXBsYXRlCmluZGV4IDk4Y2RjNjgwNDgxYjMuLmYzM2E3MWJkMmEwZGMgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0Ni13ZWJl bmdpbmUvdGVtcGxhdGUKQEAgLTE1OCw2ICsxNTgsNyBAQCBwcmVfaW5zdGFsbCgpIHsKIH0KIAog cG9zdF9pbnN0YWxsKCkgeworCXZsaWNlbnNlIExJQ0VOU0VTL0JTRC0zLUNsYXVzZS50eHQKIAls b2NhbCBfZmlsZQogCWZpbmQgIiR7REVTVERJUn0iL3Vzci9saWIvcXQ2L2V4YW1wbGVzIFwKIAkJ LXBhdGggJyovbGliL3F0Ni8qKi9saWIvcXQ2LyonIC10eXBlIGYgfAoKRnJvbSA4OTE2MzFhYzUw MDkxZTlhMzJlNmEyNjFlMGYwZTJlYjdlNjFjZjVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTYXQsIDMgSnVuIDIwMjMgMDg6 MjA6MjIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4Ni8xMTVdIGd0azQ6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAKCi0tLQogc3JjcGtncy9ndGs0L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9n dGs0L3RlbXBsYXRlIGIvc3JjcGtncy9ndGs0L3RlbXBsYXRlCmluZGV4IDZhNGUyMDM1N2E4NmYu LmVjMGMxM2QyY2M1YjAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2d0azQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdndGs0JwogcGtnbmFtZT1ndGs0CiB2ZXJzaW9uPTQuMTIuMwotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9bWVzb24KIGJ1aWxkX2hlbHBlcj0iZ2lyIgogY29uZmlndXJlX2Fy Z3M9Ii1EbWFuLXBhZ2VzPXRydWUgLURkb2N1bWVudGF0aW9uPXRydWUgLURidWlsZC10ZXN0cz1m YWxzZQoKRnJvbSBmNWJhZDYwYWUxYTg5YjdjMWVhYTc2NjczNjFkOWU3OGI1NmJkOGQ5IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBTdW4sIDQgSnVuIDIwMjMgMTE6Mjg6MjYgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4Ny8xMTVd IHNpcmlsOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc2lyaWwvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlIGIvc3JjcGtncy9zaXJpbC90ZW1w bGF0ZQppbmRleCA4NDMzMmY3OWQwNjBkLi42Mjc1MGRkMjQ3NTQ4IDEwMDY0NAotLS0gYS9zcmNw a2dzL3NpcmlsL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzaXJpbCcKIHBrZ25hbWU9c2lyaWwKIHZlcnNp b249MC45LjEyCi1yZXZpc2lvbj0xMAorcmV2aXNpb249MTEKIGJ1aWxkX3N0eWxlPWdudS1jb25m aWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBpbnRsdG9vbCBhdXRvY29uZiBhdXRv bWFrZSBnZXR0ZXh0LWRldmVsIgogbWFrZWRlcGVuZHM9ImZmdHctZGV2ZWwgbGliY29uZmlnLWRl dmVsIGxpYm9wZW5jdi1kZXZlbCBsaWJmZm1zMi1kZXZlbAoKRnJvbSBlOGQ3NTNiNjJhN2VmNTI0 ZTJhMzgzZGI2YzRkZTcxZDYyZTFiMzU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUaHUsIDIyIEp1biAyMDIzIDEwOjI1OjAy IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODgvMTE1XSBrZGVubGl2ZTogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL2tkZW5saXZlL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9rZGVubGl2ZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mva2RlbmxpdmUvdGVtcGxhdGUKaW5kZXggZWM1 ZmU3NTg2MDk0OC4uZTY5ZWNmZjMxZjI3MiAxMDA2NDQKLS0tIGEvc3JjcGtncy9rZGVubGl2ZS90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tkZW5saXZlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAna2RlbmxpdmUnCiBwa2duYW1lPWtkZW5saXZlCiB2ZXJzaW9u PTIzLjA4LjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0 bWFrZWRlcGVuZHM9IgogIGV4dHJhLWNtYWtlLW1vZHVsZXMga2NvbmZpZyBrY29yZWFkZG9ucyBr ZG9jdG9vbHMgcGtnLWNvbmZpZyBweXRob24zCgpGcm9tIGJhNzllMWI4OTdmODRlYmJiMzIwM2Jj ZjdlNTYyMTBjMTQ2NjA5MmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAxMToxNzozNyAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDg5LzExNV0gREVMRVRFOiBpbnRlbF9wYWNrYWdlcwoKLS0tCiBjb21t b24vc2hsaWJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjcGtn cy9pbnRlbC1nbW1saWIvdGVtcGxhdGUgICAgICAgICAgICAgICAgIHwgICAyICstCiAuLi5tbW9u LUVuYWJsZS1NTUMtaW4tZnJlZS1rZXJuZWwtYnVpbGQucGF0Y2ggfCAxMjUgKysrKysrKysrKysr KysrKysrCiBzcmNwa2dzL2ludGVsLW1lZGlhLWRyaXZlci90ZW1wbGF0ZSAgICAgICAgICAgfCAg IDYgKy0KIHNyY3BrZ3MvaW50ZWwtbWVkaWEtc2RrL3BhdGNoZXMvbXVzbC5wYXRjaCAgICB8ICAx NCArKwogc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdGVtcGxhdGUgICAgICAgICAgICAgIHwgIDM3 ICsrKysrKwogc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdXBkYXRlICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyY3BrZ3MvbGlibWZ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MSArCiBzcmNwa2dzL2xpYm1meC1kZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjcGtncy9vbmV2cGwtZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IHNyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS1kZXZlbCAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmNwa2dzL29uZXZwbC1pbnRlbC1ncHUvdGVtcGxhdGUgICAgICAgICAgICAgfCAgMjcgKysrKwog c3JjcGtncy9vbmV2cGwvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgIDM0ICsrKysr CiAxMyBmaWxlcyBjaGFuZ2VkLCAyNDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ludGVsLW1lZGlhLWRyaXZlci9wYXRjaGVzLzAwMDEt TWVkaWEtQ29tbW9uLUVuYWJsZS1NTUMtaW4tZnJlZS1rZXJuZWwtYnVpbGQucGF0Y2gKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ludGVsLW1lZGlhLXNkay9wYXRjaGVzL211c2wucGF0Y2gK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ludGVsLW1lZGlhLXNkay90ZW1wbGF0ZQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaW50ZWwtbWVkaWEtc2RrL3VwZGF0ZQogY3JlYXRlIG1v ZGUgMTIwMDAwIHNyY3BrZ3MvbGlibWZ4CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJt ZngtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL29uZXZwbC1kZXZlbAogY3JlYXRl IG1vZGUgMTIwMDAwIHNyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS1kZXZlbAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS90ZW1wbGF0ZQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3Mvb25ldnBsL3RlbXBsYXRlCgpkaWZmIC0tZ2l0IGEvY29tbW9uL3NobGlicyBi L2NvbW1vbi9zaGxpYnMKaW5kZXggM2Q3NjljZDQ0MjhmYS4uZTg5M2E4OGJjNmEyMCAxMDA2NDQK LS0tIGEvY29tbW9uL3NobGlicworKysgYi9jb21tb24vc2hsaWJzCkBAIC00MjUzLDYgKzQyNTMs OCBAQCBsaWJnc29hcHNzbCsrLTIuOC4xMjQuc28gZ3NvYXAtMi44LjEyNF8xCiBsaWJqeGwuc28u MC44IGxpYmp4bC0wLjguMl8xCiBsaWJqeGxfZGVjLnNvLjAuOCBsaWJqeGwtMC44LjJfMQogbGli anhsX3RocmVhZHMuc28uMC44IGxpYmp4bC0wLjguMl8xCitsaWJtZnguc28uMSBsaWJtZngtMjIu Ni40XzEKK2xpYnZwbC5zby4yIG9uZXZwbC0yMDIzLjEuMl8xCiBsaWJ0ZXh0LWVuZ2luZS0wLjEu c28uMCB0ZXh0LWVuZ2luZS0wLjEuMV8xCiBsaWJ2bWFmLnNvLjEgdm1hZi0yLjMuMV8xCiBsaWJs YzMuc28uMSBsaWJsYzMtMS4wLjNfMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1nbW1saWIv dGVtcGxhdGUgYi9zcmNwa2dzL2ludGVsLWdtbWxpYi90ZW1wbGF0ZQppbmRleCBiOWRmNjQyZjYz MjBmLi4zZDY0YmU3NDE1Mjk4IDEwMDY0NAotLS0gYS9zcmNwa2dzL2ludGVsLWdtbWxpYi90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2ludGVsLWdtbWxpYi90ZW1wbGF0ZQpAQCAtMTQsNyArMTQsNyBA QCBidWlsZF9zdHlsZT1jbWFrZQogIyBjb21waWxlcnMgZmxhZyBpbiB1c2UuCiBjb25maWd1cmVf YXJncz0iLVduby1kZXYiCiBzaG9ydF9kZXNjPSJJbnRlbCBHcmFwaGljcyBNZW1vcnkgTWFuYWdl bWVudCBMaWJyYXJ5IgotbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3Jn PiIKK21haW50YWluZXI9IlN0ZWZhbm8gUmFnbmkgPHN0M3I0Z0Bwcm90b25tYWlsLmNvbT4iCiBs aWNlbnNlPSJNSVQiCiBob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2dtbWxpYiIK IGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2dtbWxpYi9hcmNoaXZlL2ludGVs LWdtbWxpYi0ke3ZlcnNpb259LnRhci5neiIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW50ZWwtbWVk aWEtZHJpdmVyL3BhdGNoZXMvMDAwMS1NZWRpYS1Db21tb24tRW5hYmxlLU1NQy1pbi1mcmVlLWtl cm5lbC1idWlsZC5wYXRjaCBiL3NyY3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3BhdGNoZXMvMDAw MS1NZWRpYS1Db21tb24tRW5hYmxlLU1NQy1pbi1mcmVlLWtlcm5lbC1idWlsZC5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi41MjVmYjY4ODcyMmM4Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvcGF0Y2hlcy8wMDAxLU1l ZGlhLUNvbW1vbi1FbmFibGUtTU1DLWluLWZyZWUta2VybmVsLWJ1aWxkLnBhdGNoCkBAIC0wLDAg KzEsMTI1IEBACitGcm9tIGU2OGZlYWI3ZGIwMzY4MzhkOTUyMWJhM2I5ZjAwNzE3YzM3YzAyNGMg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYXlZYW5nIDxqYXkueWFuZ0BpbnRlbC5j b20+CitEYXRlOiBUdWUsIDIxIE1hciAyMDIzIDE3OjE3OjU1ICswODAwCitTdWJqZWN0OiBbUEFU Q0hdIFtNZWRpYSBDb21tb25dIEVuYWJsZSBNTUMgaW4gZnJlZSBrZXJuZWwgYnVpbGQKKworQWRk IG1tYyBidWlsZCBkZWZpbml0aW9uIGluIGZyZWUga2VybmVsIGJ1aWxkCistLS0KKyBtZWRpYV9k cml2ZXIvYWdub3N0aWMvZ2VuOS9jb2RlYy9oYWwvbWVkaWFfc3Jjcy5jbWFrZSAgICAgICAgICB8 IDIgKy0KKyBtZWRpYV9kcml2ZXIvY21ha2UvbGludXgvbWVkaWFfZmVhdHVyZV9mbGFnc19saW51 eC5jbWFrZSAgICAgICB8IDMgKy0tCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlh X2ludGVyZmFjZXNfZzlfYnh0LmNwcCAgICAgICAgfCAyICstCisgLi4uL21lZGlhX2ludGVyZmFj ZXNfbTlfY2ZsL21lZGlhX2ludGVyZmFjZXNfZzlfY2ZsLmNwcCAgICAgICAgfCAyICstCisgLi4u L21lZGlhX2ludGVyZmFjZXNfbTlfZ2xrL21lZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNwcCAgICAg ICAgfCAyICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfa2JsL21lZGlhX2ludGVyZmFjZXNf Zzlfa2JsLmNwcCAgICAgICAgfCAyICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfc2tsL21l ZGlhX2ludGVyZmFjZXNfZzlfc2tsLmNwcCAgICAgICAgfCAyICstCisgNyBmaWxlcyBjaGFuZ2Vk LCA3IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZWRpYV9k cml2ZXIvYWdub3N0aWMvZ2VuOS9jb2RlYy9oYWwvbWVkaWFfc3Jjcy5jbWFrZSBiL21lZGlhX2Ry aXZlci9hZ25vc3RpYy9nZW45L2NvZGVjL2hhbC9tZWRpYV9zcmNzLmNtYWtlCitpbmRleCA4YmIz NmJhZmUuLjc4OTAyYTIyZCAxMDA2NDQKKy0tLSBhL21lZGlhX2RyaXZlci9hZ25vc3RpYy9nZW45 L2NvZGVjL2hhbC9tZWRpYV9zcmNzLmNtYWtlCisrKysgYi9tZWRpYV9kcml2ZXIvYWdub3N0aWMv Z2VuOS9jb2RlYy9oYWwvbWVkaWFfc3Jjcy5jbWFrZQorQEAgLTI3LDcgKzI3LDcgQEAgc2V0KFRN UF8xX0hFQURFUlNfCisgICAgICR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vY29kZWNoYWxfaHdf ZzlfWC5oCisgKQorIAorLWlmKCR7TU1DX1N1cHBvcnRlZH0gU1RSRVFVQUwgInllcyIpCisraWYo JHtNTUNfU3VwcG9ydGVkfSBTVFJFUVVBTCAieWVzIiBBTkQgRU5BQkxFX05PTkZSRUVfS0VSTkVM UyBBTkQgRU5BQkxFX0tFUk5FTFMpCisgICAgIHNldChUTVBfMV9TT1VSQ0VTXworICAgICAgICAg JHtUTVBfMV9TT1VSQ0VTX30KKyAgICAgICAgICR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vY29k ZWNoYWxfbWVtZGVjb21wX2c5LmNwcAorZGlmZiAtLWdpdCBhL21lZGlhX2RyaXZlci9jbWFrZS9s aW51eC9tZWRpYV9mZWF0dXJlX2ZsYWdzX2xpbnV4LmNtYWtlIGIvbWVkaWFfZHJpdmVyL2NtYWtl L2xpbnV4L21lZGlhX2ZlYXR1cmVfZmxhZ3NfbGludXguY21ha2UKK2luZGV4IGRlMGNhODUzZi4u ODEyMWVhNjBjIDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVyL2NtYWtlL2xpbnV4L21lZGlhX2Zl YXR1cmVfZmxhZ3NfbGludXguY21ha2UKKysrKyBiL21lZGlhX2RyaXZlci9jbWFrZS9saW51eC9t ZWRpYV9mZWF0dXJlX2ZsYWdzX2xpbnV4LmNtYWtlCitAQCAtMzUsNyArMzUsNiBAQCBpZihOT1Qg RU5BQkxFX0tFUk5FTFMgT1IgTk9UIEVOQUJMRV9OT05GUkVFX0tFUk5FTFMpCisgICAgIGJzX3Nl dF9pZl91bmRlZmluZWQoSEVWQ19FbmNvZGVfVk1FX1N1cHBvcnRlZCAibm8iKQorICAgICBic19z ZXRfaWZfdW5kZWZpbmVkKE1QRUcyX0VuY29kZV9WTUVfU3VwcG9ydGVkICJubyIpCisgICAgIGJz X3NldF9pZl91bmRlZmluZWQoQ01SVF9IRVZDX0VOQ19GRUlfU3VwcG9ydGVkICJubyIpCistICAg IGJzX3NldF9pZl91bmRlZmluZWQoTU1DX1N1cHBvcnRlZCAibm8iKQorICAgICBic19zZXRfaWZf dW5kZWZpbmVkKFZDMV9EZWNvZGVfU3VwcG9ydGVkICJubyIpCisgICAgIGJzX3NldF9pZl91bmRl ZmluZWQoRGVjb2RlX1Byb2Nlc3NpbmdfU3VwcG9ydGVkICJubyIpCisgICAgIGJzX3NldF9pZl91 bmRlZmluZWQoS2VybmVsX0F1dG9fRGVub2lzZV9TdXBwb3J0ZWQgIm5vIikKK0BAIC00Niw3ICs0 NSw2IEBAIGVsc2UoKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKEhFVkNfRW5jb2RlX1ZNRV9T dXBwb3J0ZWQgIiR7RW5jb2RlX1ZNRV9TdXBwb3J0ZWR9IikKKyAgICAgYnNfc2V0X2lmX3VuZGVm aW5lZChNUEVHMl9FbmNvZGVfVk1FX1N1cHBvcnRlZCAiJHtFbmNvZGVfVk1FX1N1cHBvcnRlZH0i KQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKENNUlRfSEVWQ19FTkNfRkVJX1N1cHBvcnRlZCAi eWVzIikKKy0gICAgYnNfc2V0X2lmX3VuZGVmaW5lZChNTUNfU3VwcG9ydGVkICJ5ZXMiKQorICAg ICBic19zZXRfaWZfdW5kZWZpbmVkKFZDMV9EZWNvZGVfU3VwcG9ydGVkICJ5ZXMiKQorICAgICBi c19zZXRfaWZfdW5kZWZpbmVkKERlY29kZV9Qcm9jZXNzaW5nX1N1cHBvcnRlZCAieWVzIikKKyAg ICAgYnNfc2V0X2lmX3VuZGVmaW5lZChLZXJuZWxfQXV0b19EZW5vaXNlX1N1cHBvcnRlZCAieWVz IikKK0BAIC02NCw2ICs2Miw3IEBAIGJzX3NldF9pZl91bmRlZmluZWQoVlA5X0RlY29kZV9TdXBw b3J0ZWQgInllcyIpCisgYnNfc2V0X2lmX3VuZGVmaW5lZChWUF9TRkNfU3VwcG9ydGVkICJ5ZXMi KQorIGJzX3NldF9pZl91bmRlZmluZWQoQ29tbW9uX0VuY29kZV9TdXBwb3J0ZWQgInllcyIpCisg YnNfc2V0X2lmX3VuZGVmaW5lZChNZWRpYV9TY2FsYWJpbGl0eV9TdXBwb3J0ZWQgInllcyIpCisr YnNfc2V0X2lmX3VuZGVmaW5lZChNTUNfU3VwcG9ydGVkICJ5ZXMiKQorIAorICMgZmVhdHVyZXMg Y29udHJvbGxlZCBieSBnbG9iYWwgZmxhZyBFbmNvZGVfVkRFbmNfU3VwcG9ydGVkCisgYnNfc2V0 X2lmX3VuZGVmaW5lZChBVkNfRW5jb2RlX1ZERW5jX1N1cHBvcnRlZCAiJHtFbmNvZGVfVkRFbmNf U3VwcG9ydGVkfSIpCitkaWZmIC0tZ2l0IGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9t ZWRpYV9pbnRlcmZhY2VzX205X2J4dC9tZWRpYV9pbnRlcmZhY2VzX2c5X2J4dC5jcHAgYi9tZWRp YV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlhX2lu dGVyZmFjZXNfZzlfYnh0LmNwcAoraW5kZXggM2YzMDZlZTJhLi44ZTRjMGY1MzIgMTAwNjQ0Cist LS0gYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfYnh0 L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNwcAorKysrIGIvbWVkaWFfZHJpdmVyL21lZGlhX2lu dGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2J4dC9tZWRpYV9pbnRlcmZhY2VzX2c5X2J4dC5j cHAKK0BAIC0xMzUsNyArMTM1LDcgQEAgTU9TX1NUQVRVUyBNaHdJbnRlcmZhY2VzRzlCeHQ6Oklu aXRpYWxpemUoCisgCisgICAgIHJldHVybiBNT1NfU1RBVFVTX1NVQ0NFU1M7CisgfQorLSNpZmRl ZiBfTU1DX1NVUFBPUlRFRAorKyNpZiBkZWZpbmVkKF9NTUNfU1VQUE9SVEVEKSAmJiBkZWZpbmVk KEVOQUJMRV9LRVJORUxTKSAmJiAhZGVmaW5lZChfRlVMTF9PUEVOX1NPVVJDRSkKKyBzdGF0aWMg Ym9vbCBieHRSZWdpc3RlcmVkTW1kID0KKyAgICAgTWVkaWFGYWN0b3J5PHVpbnQzMl90LCBNbWRE ZXZpY2U+OjoKKyAgICAgUmVnaXN0ZXI8TW1kRGV2aWNlRzlCeHQ+KCh1aW50MzJfdClJR0ZYX0JS T1hUT04pOworZGlmZiAtLWdpdCBhL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFf aW50ZXJmYWNlc19tOV9jZmwvbWVkaWFfaW50ZXJmYWNlc19nOV9jZmwuY3BwIGIvbWVkaWFfZHJp dmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2NmbC9tZWRpYV9pbnRlcmZh Y2VzX2c5X2NmbC5jcHAKK2luZGV4IGI4ZmExZWVjMC4uODRlMGZhZDFkIDEwMDY0NAorLS0tIGEv bWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2NmbC9tZWRp YV9pbnRlcmZhY2VzX2c5X2NmbC5jcHAKKysrKyBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZh Y2UvbWVkaWFfaW50ZXJmYWNlc19tOV9jZmwvbWVkaWFfaW50ZXJmYWNlc19nOV9jZmwuY3BwCitA QCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgYm9vbCBjZmxSZWdpc3RlcmVkTWh3ID0KKyAgICAgTWVk aWFGYWN0b3J5PHVpbnQzMl90LCBNaHdJbnRlcmZhY2VzPjo6CisgICAgIFJlZ2lzdGVyPE1od0lu dGVyZmFjZXNHOUtibD4oKHVpbnQzMl90KUlHRlhfQ09GRkVFTEFLRSk7CisgCistI2lmZGVmIF9N TUNfU1VQUE9SVEVECisrI2lmIGRlZmluZWQoX01NQ19TVVBQT1JURUQpICYmIGRlZmluZWQoRU5B QkxFX0tFUk5FTFMpICYmICFkZWZpbmVkKF9GVUxMX09QRU5fU09VUkNFKQorIHN0YXRpYyBib29s IGNmbFJlZ2lzdGVyZWRNbWQgPQorICAgICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1tZERldmlj ZT46OgorICAgICBSZWdpc3RlcjxNbWREZXZpY2VHOUtibD4oKHVpbnQzMl90KUlHRlhfQ09GRkVF TEFLRSk7CitkaWZmIC0tZ2l0IGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9p bnRlcmZhY2VzX205X2dsay9tZWRpYV9pbnRlcmZhY2VzX2c5X2dsay5jcHAgYi9tZWRpYV9kcml2 ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfZ2xrL21lZGlhX2ludGVyZmFj ZXNfZzlfZ2xrLmNwcAoraW5kZXggZGU4MWU2MDkxLi4yNjM4Y2IzYTYgMTAwNjQ0CistLS0gYS9t ZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfZ2xrL21lZGlh X2ludGVyZmFjZXNfZzlfZ2xrLmNwcAorKysrIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFj ZS9tZWRpYV9pbnRlcmZhY2VzX205X2dsay9tZWRpYV9pbnRlcmZhY2VzX2c5X2dsay5jcHAKK0BA IC02NSw3ICs2NSw3IEBAIHN0YXRpYyBib29sIGdsa1JlZ2lzdGVyZWRNaHcgPQorICAgICBNZWRp YUZhY3Rvcnk8dWludDMyX3QsIE1od0ludGVyZmFjZXM+OjoKKyAgICAgUmVnaXN0ZXI8TWh3SW50 ZXJmYWNlc0c5S2JsPigodWludDMyX3QpSUdGWF9HRU1JTklMQUtFKTsKKyAKKy0jaWZkZWYgX01N Q19TVVBQT1JURUQKKysjaWYgZGVmaW5lZChfTU1DX1NVUFBPUlRFRCkgJiYgZGVmaW5lZChFTkFC TEVfS0VSTkVMUykgJiYgIWRlZmluZWQoX0ZVTExfT1BFTl9TT1VSQ0UpCisgc3RhdGljIGJvb2wg Z2xrUmVnaXN0ZXJlZE1tZCA9CisgICAgIE1lZGlhRmFjdG9yeTx1aW50MzJfdCwgTW1kRGV2aWNl Pjo6CisgICAgIFJlZ2lzdGVyPE1tZERldmljZUc5S2JsPigodWludDMyX3QpSUdGWF9HRU1JTklM QUtFKTsKK2RpZmYgLS1naXQgYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2lu dGVyZmFjZXNfbTlfa2JsL21lZGlhX2ludGVyZmFjZXNfZzlfa2JsLmNwcCBiL21lZGlhX2RyaXZl ci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9rYmwvbWVkaWFfaW50ZXJmYWNl c19nOV9rYmwuY3BwCitpbmRleCA5OWQ3ODYxODUuLjRlOWM2ZTdmMSAxMDA2NDQKKy0tLSBhL21l ZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9rYmwvbWVkaWFf aW50ZXJmYWNlc19nOV9rYmwuY3BwCisrKysgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNl L21lZGlhX2ludGVyZmFjZXNfbTlfa2JsL21lZGlhX2ludGVyZmFjZXNfZzlfa2JsLmNwcAorQEAg LTEzMSw3ICsxMzEsNyBAQCBNT1NfU1RBVFVTIE1od0ludGVyZmFjZXNHOUtibDo6SW5pdGlhbGl6 ZSgKKyAKKyAgICAgcmV0dXJuIE1PU19TVEFUVVNfU1VDQ0VTUzsKKyB9CistI2lmZGVmIF9NTUNf U1VQUE9SVEVECisrI2lmIGRlZmluZWQoX01NQ19TVVBQT1JURUQpICYmIGRlZmluZWQoRU5BQkxF X0tFUk5FTFMpICYmICFkZWZpbmVkKF9GVUxMX09QRU5fU09VUkNFKQorIHN0YXRpYyBib29sIGti bFJlZ2lzdGVyZWRNbWQgPQorICAgICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1tZERldmljZT46 OgorICAgICBSZWdpc3RlcjxNbWREZXZpY2VHOUtibD4oKHVpbnQzMl90KUlHRlhfS0FCWUxBS0Up OworZGlmZiAtLWdpdCBhL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJm YWNlc19tOV9za2wvbWVkaWFfaW50ZXJmYWNlc19nOV9za2wuY3BwIGIvbWVkaWFfZHJpdmVyL21l ZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X3NrbC9tZWRpYV9pbnRlcmZhY2VzX2c5 X3NrbC5jcHAKK2luZGV4IGUyNTIwZWRmNy4uNGIwMDEyYzY0IDEwMDY0NAorLS0tIGEvbWVkaWFf ZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X3NrbC9tZWRpYV9pbnRl cmZhY2VzX2c5X3NrbC5jcHAKKysrKyBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVk aWFfaW50ZXJmYWNlc19tOV9za2wvbWVkaWFfaW50ZXJmYWNlc19nOV9za2wuY3BwCitAQCAtMTM5 LDcgKzEzOSw3IEBAIE1PU19TVEFUVVMgTWh3SW50ZXJmYWNlc0c5U2tsOjpJbml0aWFsaXplKAor IAorICAgICByZXR1cm4gTU9TX1NUQVRVU19TVUNDRVNTOworIH0KKy0jaWZkZWYgX01NQ19TVVBQ T1JURUQKKysjaWYgZGVmaW5lZChfTU1DX1NVUFBPUlRFRCkgJiYgZGVmaW5lZChFTkFCTEVfS0VS TkVMUykgJiYgIWRlZmluZWQoX0ZVTExfT1BFTl9TT1VSQ0UpCisgc3RhdGljIGJvb2wgc2tsUmVn aXN0ZXJlZE1tZCA9CisgICAgIE1lZGlhRmFjdG9yeTx1aW50MzJfdCwgTW1kRGV2aWNlPjo6Cisg ICAgIFJlZ2lzdGVyPE1tZERldmljZUc5U2tsPigodWludDMyX3QpSUdGWF9TS1lMQUtFKTsKKy0t IAorMi40MC4wCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3RlbXBs YXRlIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUKaW5kZXggMDZiN2MxOWEw YmEwNy4uMTczNWI5MGM2NWNlNSAxMDA2NDQKLS0tIGEvc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2 ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUKQEAg LTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpbnRlbC1tZWRpYS1kcml2ZXInCiBw a2duYW1lPWludGVsLW1lZGlhLWRyaXZlcgotdmVyc2lvbj0yMy4zLjUKK3ZlcnNpb249MjIuNi40 CiByZXZpc2lvbj0xCiBhcmNocz0ieDg2XzY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCkBAIC04LDEx ICs4LDExIEBAIGNvbmZpZ3VyZV9hcmdzPSItV25vLWRldiAtREVOQUJMRV9OT05GUkVFX0tFUk5F TFM9JCh2b3B0X2lmIG5vbmZyZWUgT04gT0ZGKSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZp ZyIKIG1ha2VkZXBlbmRzPSJsaWJ2YS1kZXZlbCBsaWJYMTEtZGV2ZWwgaW50ZWwtZ21tbGliLWRl dmVsIGxpYnBjaWFjY2Vzcy1kZXZlbCIKIHNob3J0X2Rlc2M9IkludGVsIE1lZGlhIERyaXZlciBm b3IgVkFBUEkgKEJyb2Fkd2VsbCspIgotbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lk bGludXgub3JnPiIKK21haW50YWluZXI9IlN0ZWZhbm8gUmFnbmkgPHN0M3I0Z0Bwcm90b25tYWls LmNvbT4iCiBsaWNlbnNlPSJNSVQsIEJTRC0zLUNsYXVzZSIKIGhvbWVwYWdlPSJodHRwczovL2dp dGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVyIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5j b20vaW50ZWwvbWVkaWEtZHJpdmVyL2FyY2hpdmUvaW50ZWwtbWVkaWEtJHt2ZXJzaW9ufS50YXIu Z3oiCi1jaGVja3N1bT02N2ZkMTU2NTRiYjNjNTk2ZmViOGM4NWU4MTIyMWRlNTYzMmUxMWY1OTg0 MjFjMzVhZGM0NDUzZDcyN2YwMTMwCitjaGVja3N1bT0wYzA0YjlkNzRiOTJkZTQxZmQ0MDliNjI5 MTNjZTRhZmQ3OTkyMzZjMGI2YmMxOTgzYTQ5Njk5MDc2NGU1ZDkwCiAKIGJ1aWxkX29wdGlvbnM9 Im5vbmZyZWUiCiBkZXNjX29wdGlvbl9ub25mcmVlPSJFbmFibGUgbm9uZnJlZSBrZXJuZWxzIgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvcGF0Y2hlcy9tdXNsLnBhdGNoIGIv c3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvcGF0Y2hlcy9tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjRhZTcwOTI0Yjc0NGYKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL2ludGVsLW1lZGlhLXNkay9wYXRjaGVzL211c2wucGF0Y2gKQEAgLTAsMCAr MSwxNCBAQAorLS0tIGEvdG9vbHMvdHJhY2VyL3RyYWNlci90cmFjZXJfbGludXguY3BwCTIwMjIt MTEtMTggMDM6MDI6NTkuMDAwMDAwMDAwIC0wNTAwCisrKysgYi90b29scy90cmFjZXIvdHJhY2Vy L3RyYWNlcl9saW51eC5jcHAJMjAyMi0xMi0xOCAwMTo0NDo1MS4zNDE1NDI1NzIgLTA1MDAKK0BA IC0zMiw2ICszMiwxMSBAQAorICNpbmNsdWRlIDxkbGZjbi5oPgorICNpbmNsdWRlICJ0cmFjZXIu aCIKKworKyNpZm5kZWYgUlRMRF9ERUVQQklORAorKy8vIG11c2wgbmVpdGhlciBkZWZpbmVzIG5v ciBjYW4gdXNlIFJUTERfREVFUEJJTkQKKysjZGVmaW5lIFJUTERfREVFUEJJTkQgMAorKyNlbmRp ZgorKworICNpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICAjZGVmaW5lIExJQk1GWEhXICJsaWJt ZnhodzMyLnNvLjEiCisgI2VsaWYgZGVmaW5lZChfX3g4Nl82NF9fKQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9pbnRlbC1tZWRpYS1zZGsvdGVtcGxhdGUgYi9zcmNwa2dzL2ludGVsLW1lZGlhLXNkay90 ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi43YWVhYjUx ODAyZjhlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdGVtcGxh dGUKQEAgLTAsMCArMSwzNyBAQAorIyBUZW1wbGF0ZSBmaWxlIGZvciAnaW50ZWwtbWVkaWEtc2Rr JworcGtnbmFtZT1pbnRlbC1tZWRpYS1zZGsKK3ZlcnNpb249MjIuNi40CityZXZpc2lvbj0xCith cmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0eWxlPWNtYWtlCitjb25maWd1cmVfYXJncz0iLVduby1k ZXYgLURCVUlMRF9TQU1QTEVTPU9GRiAtREJVSUxEX1RFU1RTPU9OIgoraG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIgorbWFrZWRlcGVuZHM9ImxpYnZhLWRldmVsIGxpYmRybS1kZXZlbCBpbnRl bC1nbW1saWItZGV2ZWwiCitzaG9ydF9kZXNjPSJJbnRlbCBNZWRpYSBTREsiCittYWludGFpbmVy PSJTdGVmYW5vIFJhZ25pIDxzdDNyNGdAcHJvdG9ubWFpbC5jb20+IgorbGljZW5zZT0iTUlULCBC U0QtMy1DbGF1c2UiCitob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL0ludGVsLU1lZGlhLVNE Sy9NZWRpYVNESyIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL0ludGVsLU1lZGlhLVNE Sy9NZWRpYVNESy9hcmNoaXZlL3JlZnMvdGFncy9pbnRlbC1tZWRpYXNkay0ke3ZlcnNpb259LnRh ci5neiIKK2NoZWNrc3VtPTE5N2FjZDA1NmY4MWU5ZmYxYzI3MDY4ZDUwZThjODRjMjAxNGQ5NGM3 YWMxN2NhZDY5ZDVjMmQ2MWU0NDVmZDMKKworcG9zdF9pbnN0YWxsKCkgeworCXZsaWNlbnNlIExJ Q0VOU0UKK30KKworbGlibWZ4X3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iJHttYWtlZGVwZW5kc30g JHtzb3VyY2Vwa2d9LSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJc2hvcnRfZGVzYz0iSW50ZWwg TWVkaWFTREsgbWZ4IGxpYiIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2xpYi9tZngK KwkJdm1vdmUgInVzci9saWIvbGlibWZ4Ki5zbyoiCisJfQorfQorCitsaWJtZngtZGV2ZWxfcGFj a2FnZSgpIHsKKwlkZXBlbmRzPSIke21ha2VkZXBlbmRzfSAke3NvdXJjZXBrZ30tJHt2ZXJzaW9u fV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJcGtn X2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9pbmNsdWRlCisJCXZtb3ZlIHVzci9saWIvcGtnY29u ZmlnCisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdXBkYXRlIGIv c3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdXBkYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAuLjQzNGEyYmM2N2Y3YTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L2ludGVsLW1lZGlhLXNkay91cGRhdGUKQEAgLTAsMCArMSBAQAorcGtnbmFtZT1pbnRlbC1tZWRp YQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJtZnggYi9zcmNwa2dzL2xpYm1meApuZXcgZmlsZSBt b2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ZmZjNzA5OWMyMjcyCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9saWJtZngKQEAgLTAsMCArMSBAQAoraW50ZWwtbWVkaWEtc2RrClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJtZngtZGV2 ZWwgYi9zcmNwa2dzL2xpYm1meC1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAw MDAwMDAwMDAwLi44ZmZjNzA5OWMyMjcyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJt ZngtZGV2ZWwKQEAgLTAsMCArMSBAQAoraW50ZWwtbWVkaWEtc2RrClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbmV2cGwtZGV2ZWwgYi9zcmNwa2dzL29u ZXZwbC1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi5lMjMw NjUwMGI0ODcxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9vbmV2cGwtZGV2ZWwKQEAgLTAs MCArMSBAQAorb25ldnBsClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1LWRldmVsIGIvc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1 LWRldmVsCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjQ3OTIwY2Vl Y2Y5MTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL29uZXZwbC1pbnRlbC1ncHUtZGV2ZWwK QEAgLTAsMCArMSBAQAorb25ldnBsLWludGVsLWdwdQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS90ZW1wbGF0ZSBiL3NyY3Br Z3Mvb25ldnBsLWludGVsLWdwdS90ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAwLi5mMTRhY2I3MjhhNTRkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9v bmV2cGwtaW50ZWwtZ3B1L3RlbXBsYXRlCkBAIC0wLDAgKzEsMjcgQEAKKyMgVGVtcGxhdGUgZmls ZSBmb3IgJ29uZXZwbC1pbnRlbC1ncHUnCitwa2duYW1lPW9uZXZwbC1pbnRlbC1ncHUKK3ZlcnNp b249MjIuNi40CityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0eWxlPWNtYWtl Citjb25maWd1cmVfYXJncz0iLVduby1kZXYgLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UiCito b3N0bWFrZWRlcGVuZHM9ImNtYWtlIHBrZy1jb25maWciCittYWtlZGVwZW5kcz0ibGliZHJtLWRl dmVsIGxpYnZhLWRldmVsIG9uZXZwbC1kZXZlbCIKK3Nob3J0X2Rlc2M9IlJ1bnRpbWUgaW1wbGVt ZW50YXRpb24gb2Ygb25lVlBMIEFQSSBmb3IgSW50ZWwgR2VuIEdQVXMiCittYWludGFpbmVyPSJ6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPiIKK2xpY2Vuc2U9Ik1JVCIKK2hvbWVwYWdlPSJodHRw czovL2dpdGh1Yi5jb20vb25lYXBpLXNyYy9vbmVWUEwtaW50ZWwtZ3B1IgorY2hhbmdlbG9nPSJo dHRwczovL2dpdGh1Yi5jb20vb25lYXBpLXNyYy9vbmVWUEwtaW50ZWwtZ3B1L2Jsb2IvbWFpbi9D SEFOR0VMT0cubWQiCitkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9vbmVhcGktc3JjL29u ZVZQTC1pbnRlbC1ncHUvYXJjaGl2ZS9yZWZzL3RhZ3MvaW50ZWwtb25ldnBsLSR7dmVyc2lvbn0u dGFyLmd6IgorY2hlY2tzdW09NzRiMDk3OWRjYjJhZjFiN2M2OGVkYjhjYmNiMDJkNTM5ZGU1MTEw OTBiMTJmYWM1MDY1MmNiYWNkNzA3YzRlNgorCitwb3N0X2luc3RhbGwoKSB7CisJdmxpY2Vuc2Ug TElDRU5TRQorfQorCitvbmV2cGwtaW50ZWwtZ3B1LWRldmVsX3BhY2thZ2UoKSB7CisJc2hvcnRf ZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1 c3IvbGliL3BrZ2NvbmZpZworCX0KK30KZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb25ldnBsL3RlbXBs YXRlIGIvc3JjcGtncy9vbmV2cGwvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwMC4uODVjN2MyZGE4NWNlOQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mv b25ldnBsL3RlbXBsYXRlCkBAIC0wLDAgKzEsMzQgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ29u ZXZwbCcKK3BrZ25hbWU9b25ldnBsCit2ZXJzaW9uPTIwMjMuMS4yCityZXZpc2lvbj0xCithcmNo cz0ieDg2XzY0KiIKK2J1aWxkX3N0eWxlPWNtYWtlCitjb25maWd1cmVfYXJncz0iCisJLURDTUFL RV9CVUlMRF9UWVBFPVJlbGVhc2UgLVduby1kZXYKKwktREJVSUxEX1BZVEhPTl9CSU5ESU5HOkJP T0w9J09GRicKKwktREJVSUxEX0VYQU1QTEVTOkJPT0w9J09GRicKKwktREJVSUxEX1RFU1RTOkJP T0w9J09OJworCS1ESU5TVEFMTF9FWEFNUExFX0NPREU6Qk9PTD0nT0ZGJyIKK2hvc3RtYWtlZGVw ZW5kcz0iY21ha2UgbGliWDExIHB5dGhvbiB3YXlsYW5kLXByb3RvY29scyBwa2ctY29uZmlnIgor bWFrZWRlcGVuZHM9ImxpYnZhLWRldmVsIGxpYlgxMS1kZXZlbCB3YXlsYW5kLWRldmVsIgorc2hv cnRfZGVzYz0iSW50ZWwgb25lQVBJIFZpZGVvIFByb2Nlc3NpbmcgbGlicmFyeSIKK21haW50YWlu ZXI9InpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+IgorbGljZW5zZT0iTUlUIgoraG9tZXBhZ2U9 Imh0dHBzOi8vd3d3LmludGVsLmNvbS9jb250ZW50L3d3dy91cy9lbi9kZXZlbG9wZXIvdG9vbHMv b25lYXBpL29uZXZwbC5odG1sIgorZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vb25lYXBp LXNyYy9vbmVWUEwvYXJjaGl2ZS92JHt2ZXJzaW9ufS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFy Lmd6IgorY2hlY2tzdW09YjIyNjFjY2ExNzRjZTE4MTVmM2Q0N2M2NDc5MjFhYjE3ZjY4MjY3YzY5 YzFlMjQ0NGZmMjdhYWI3ZDE5OWNiYgorCitwb3N0X2luc3RhbGwoKSB7CisJdmxpY2Vuc2UgTElD RU5TRQorfQorCitvbmV2cGwtZGV2ZWxfcGFja2FnZSgpIHsKKwlkZXBlbmRzPSIke21ha2VkZXBl bmRzfSAke3NvdXJjZXBrZ30tJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0i IC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9pbmNs dWRlCisJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCisJCXZtb3ZlICJ1c3IvbGliLyouc28iCisJ fQorfQoKRnJvbSBhOTQ4ZGVhYjEwNDdmZmFmZGE4NGRkNzhmMmM4OGZhOTk4MzVhY2RkIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBTYXQsIDggSnVsIDIwMjMgMjA6MjA6NTkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5MC8xMTVd IHRyYWNrZXItbWluZXJzOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdHJh Y2tlci1taW5lcnMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3RyYWNrZXItbWluZXJzL3Rl bXBsYXRlIGIvc3JjcGtncy90cmFja2VyLW1pbmVycy90ZW1wbGF0ZQppbmRleCAwYjk3ZjQ3NDg5 ZjgxLi5mMTk2ZDJiZjllNGE0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3RyYWNrZXItbWluZXJzL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0cmFja2VyLW1pbmVycycKIHBrZ25hbWU9dHJhY2tl ci1taW5lcnMKIHZlcnNpb249My42LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0 eWxlPW1lc29uCiBidWlsZF9oZWxwZXI9cWVtdQogIyBtaXNzaW5nIGxpYmdyc3MgZm9yIG1pbmVy X3JzcwoKRnJvbSA2YjA4MGRlMmE5YWZkM2ZjODM3YWEyYmFjZTRjYTVkODZjMGQ3ZTJlIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBTYXQsIDggSnVsIDIwMjMgMjA6MjE6MjEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5MS8xMTVd IG1wZDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21wZC90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbXBkL3RlbXBsYXRlIGIvc3JjcGtncy9tcGQvdGVtcGxhdGUKaW5k ZXggNjQ1YzFiNzc4ZTQwNy4uNjAyODdjYzlmNmUzYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9tcGQv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9tcGQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdtcGQnCiBwa2duYW1lPW1wZAogdmVyc2lvbj0wLjIzLjE0Ci1yZXZp c2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1E b3B1cz1lbmFibGVkIC1EbWlrbW9kPWVuYWJsZWQgLURuZWlnaGJvcj10cnVlCiAgLURzb3VuZGNs b3VkPWVuYWJsZWQgLURwaXBlPXRydWUgLUR0d29sYW1lPWVuYWJsZWQgLURiemlwMj1lbmFibGVk CgpGcm9tIDljODZhODk1Nzk0NjBhZThkZjE0YjQwMTEyNmVjM2Q0N2ExNjgxNDkgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMzAgQXVnIDIwMjMgMDk6MTA6MDIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5Mi8xMTVdIHRn X293dDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3RnX293dC90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlIGIvc3JjcGtncy90Z19vd3QvdGVt cGxhdGUKaW5kZXggNTBiYzgzMTBiODg1OS4uYzkzMjYyZDVjNWRlNiAxMDA2NDQKLS0tIGEvc3Jj cGtncy90Z19vd3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90Z19vd3QvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0Z19vd3QnCiBwa2duYW1lPXRnX293dAog dmVyc2lvbj0wLjAuMC4yMDIzMDkyMQotcmV2aXNpb249MQorcmV2aXNpb249MgogX2NvbW1pdD0z YmIzZDc1NzY4MWU2Y2M1MTM1YWVjNjUyOWE3NTNkYzNkY2RjZmI5CiBfbGlieXV2X2NvbW1pdD0w NDgyMWQxZTdkNjA4NDU1MjVlOGRiNTVjN2JjZDQxZWY1YmU5NDA2CiBfYWJzZWlsX2NvbW1pdD04 YzBiOTRlNzkzYTY2NDk1ZTBiMWYzNGE1ZWIyNmJkN2RjNjcyZGIwCgpGcm9tIDgwYTY3MjgyZDFm ZmVlZGZiNThmZWE3OWI2ZjVhNTI1NjMwNzkwNmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6 MTA6NDQgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5My8xMTVdIHRlbGVncmFtLWRlc2t0b3A6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlIGIvc3JjcGtn cy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlCmluZGV4IDliZDk0Y2UzNzgxZmYuLmQzM2ZjNjJi MTBlMzggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICd0ZWxlZ3JhbS1kZXNrdG9wJwogcGtnbmFtZT10ZWxlZ3JhbS1kZXNr dG9wCiB2ZXJzaW9uPTQuMTEuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 Y21ha2UKIGJ1aWxkX2hlbHBlcj0icWVtdSBnaXIiCiBjb25maWd1cmVfYXJncz0iLURUREVTS1RP UF9BUElfSUQ9MjA5MjM1CgpGcm9tIDVkOTkxODhhMTcyNzA4YTE4ODZiNDBmYmQ5ZTMwYTJiZWQy YWU4YjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6MTE6NDUgLTA0MDAKU3ViamVjdDogW1BB VENIIDA5NC8xMTVdIGdzdC1wbHVnaW5zLWJhZDE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9n c3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlIGIvc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBs YXRlCmluZGV4IDJiZjJmNGIwNjQyZmUuLjBmYWZjYjY1NTUzOTUgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLWJh ZDEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtcGx1 Z2lucy1iYWQxJwogcGtnbmFtZT1nc3QtcGx1Z2lucy1iYWQxCiB2ZXJzaW9uPTEuMjIuNQotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfaGVscGVyPSJnaXIiCiBidWlsZF9zdHlsZT1tZXNv bgogY29uZmlndXJlX2FyZ3M9Ii1EcGFja2FnZS1vcmlnaW49aHR0cHM6Ly92b2lkbGludXgub3Jn IC1EZG9jPWRpc2FibGVkCgpGcm9tIGZjYjMxOWQ5OTFlY2YzNjRlMGU5MmJhMDkyNzE3ODEyOGUz N2ViOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6MTI6MDkgLTA0MDAKU3ViamVjdDogW1BB VENIIDA5NS8xMTVdIG9wZW5tdzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L29wZW5tdy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlIGIvc3Jj cGtncy9vcGVubXcvdGVtcGxhdGUKaW5kZXggMGFiZjVmZjdjZGJlYy4uYjU3MTgwZjFhNDQ0NiAx MDA2NDQKLS0tIGEvc3JjcGtncy9vcGVubXcvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVubXcv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVubXcnCiBw a2duYW1lPW9wZW5tdwogdmVyc2lvbj0wLjQ4LjAKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1 aWxkX3N0eWxlPWNtYWtlCiBfcmVjYXN0X2NvbW1pdD1lNzVhZGY4NmY5MWViMzA4MjIyMDA4NWU0 MmRkYTYyNjc5ZjlhM2VhCiBfYnVsbGV0X3RhZz0zLjE3CgpGcm9tIDI1NmNmNjAzMGFkZDg2NGYw NzA1ZGUwYTMxN2JiMjI5NDVhNGM4MmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6MTQ6NTMg LTA0MDAKU3ViamVjdDogW1BBVENIIDA5Ni8xMTVdIGxtczogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL2xtcy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbG1zL3RlbXBs YXRlIGIvc3JjcGtncy9sbXMvdGVtcGxhdGUKaW5kZXggZTM1OGY3NTkwMmE5OC4uM2IyMWM0NThk ZTUxOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9sbXMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9sbXMv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsbXMnCiBwa2du YW1lPWxtcwogdmVyc2lvbj0zLjQyLjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0 eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0id3Qt ZGV2ZWwgZmZtcGVnLWRldmVsIGJvb3N0LWRldmVsIGxpYmNvbmZpZysrLWRldmVsIHRhZ2xpYi1k ZXZlbCBwYW0tZGV2ZWwgbGliZ3JhcGhpY3NtYWdpY2stZGV2ZWwgZ3Rlc3QtZGV2ZWwgbGliYXJj aGl2ZS1kZXZlbCIKCkZyb20gYzlkZmVmYWU1YTkxZGRmZmU0MDUyODNhYjZjZWVhZWU0NDU5OGM2 ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAzMCBBdWcgMjAyMyAwOToxODoxOCAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDk3LzExNV0gZnJlZWNhZDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Zy ZWVjYWQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUgYi9zcmNw a2dzL2ZyZWVjYWQvdGVtcGxhdGUKaW5kZXggYzEzNTcwMWUzOGI5YS4uNzA1NDk5ZTk5NzJhNiAx MDA2NDQKLS0tIGEvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZnJlZWNh ZC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZyZWVjYWQn CiBwa2duYW1lPWZyZWVjYWQKIHZlcnNpb249MC4yMC4yCi1yZXZpc2lvbj03CityZXZpc2lvbj04 CiBidWlsZF93cmtzcmM9IkZyZWVDQUQtJHt2ZXJzaW9ufSIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBw eWNvbXBpbGVfZGlycz0idXNyL2xpYi8ke3BrZ25hbWV9L01vZCIKCkZyb20gZjQ1OGYwZWU2YjVj MTY3MzNkMGFiYzU4MjNlNDU0ZTZlMTg2YjYxMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAxNSBPY3QgMjAyMyAyMTo0 NzoxOCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk4LzExNV0gbGlib3BlbnNob3Q6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbGlib3BlbnNob3QvdGVtcGxhdGUgYi9zcmNwa2dzL2xpYm9wZW5zaG90L3Rl bXBsYXRlCmluZGV4IDhlNTdjNWY1OTIxNjkuLjdhOGY0NTIwZTc4OTIgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvbGlib3BlbnNob3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xpYm9wZW5zaG90Jwog cGtnbmFtZT1saWJvcGVuc2hvdAogdmVyc2lvbj0wLjMuMAotcmV2aXNpb249MworcmV2aXNpb249 NAogYnVpbGRfc3R5bGU9Y21ha2UKICMgQnVpbGRzIGZhaWwgd2l0aCBSdWJ5LTIuNC4xCiBjb25m aWd1cmVfYXJncz0iLURFTkFCTEVfUlVCWT1PRkYgLURVU0VfU1lTVEVNX0pTT05DUFA9T04iCgpG cm9tIDk4NTQyNjY1ODY2NzVmZDRlZmE0MWM2ZDMzNjJkN2VmOTI3MjAxMGIgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg OCBOb3YgMjAyMyAxMDoxMDozMCAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMDk5LzExNV0gb3Blbmlt YWdlaW86IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9vcGVuaW1hZ2Vpby90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUgYi9zcmNwa2dz L29wZW5pbWFnZWlvL3RlbXBsYXRlCmluZGV4IDNjZTNmOWU0OWQzNTAuLjI3ZDIxMzFiYzBhNjEg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9v cGVuaW1hZ2Vpby90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J29wZW5pbWFnZWlvJwogcGtnbmFtZT1vcGVuaW1hZ2VpbwogdmVyc2lvbj0yLjQuOS4wCi1yZXZp c2lvbj03CityZXZpc2lvbj04CiBidWlsZF9zdHlsZT1jbWFrZQogYnVpbGRfaGVscGVyPXFlbXUK IGNvbmZpZ3VyZV9hcmdzPSItRFVTRV9RVD0wIC1EVVNFX1BZVEhPTj0wIC1ET0lJT19CVUlMRF9U RVNUUz0wCgpGcm9tIDA0Nzk5ZTI4OTFhYjgwMjRmYzY3ZmVmMzFkZmUzYjk0NDAyNGE2NTcgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgOCBOb3YgMjAyMyAxMDoxMTo1NyAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTAwLzEx NV0gc3luZmlnc3R1ZGlvOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc3lu Zmlnc3R1ZGlvL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxh dGUgYi9zcmNwa2dzL3N5bmZpZ3N0dWRpby90ZW1wbGF0ZQppbmRleCAwOWU0NDJkYTlhNjgwLi4y YmMwMTdjZWRjYTZiIDEwMDY0NAotLS0gYS9zcmNwa2dzL3N5bmZpZ3N0dWRpby90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3N5bmZpZ3N0dWRpby90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKICMgU2hv dWxkIGJlIGtlcHQgaW4gc3luYyB3aXRoICdzeW5maWcnIGFuZCAnRVRMJwogcGtnbmFtZT1zeW5m aWdzdHVkaW8KIHZlcnNpb249MS40LjQKLXJldmlzaW9uPTQKK3JldmlzaW9uPTUKIGJ1aWxkX3N0 eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtdXBkYXRlLW1pbWVk YiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBpbnRsdG9vbCBnZXR0ZXh0IHN5bmZpZyIK CkZyb20gNTEzMjM4NzI5MTkzOWNkNGViZjdmMTU3NjRjODgyN2YwNmY2ZTYzNCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCA4IE5vdiAyMDIzIDEwOjEyOjMyIC0wNTAwClN1YmplY3Q6IFtQQVRDSCAxMDEvMTE1XSBnbWlj OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ21pYy90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZ21pYy90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ21pYy90ZW1wbGF0ZQppbmRl eCA4MDg5NTNlOWI1NDNjLi5kODU0ODA4Zjg2YWE0IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dtaWMv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9nbWljL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnZ21pYycKIHBrZ25hbWU9Z21pYwogdmVyc2lvbj0zLjEuNgotcmV2 aXNpb249NQorcmV2aXNpb249NgogX3phcnRfaGFzaD0zNGViZjZjY2UwYmFmYjk4YWJlNTdjZWM4 M2M0YTAyY2QxYWJlY2EwCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jrc3JjPSJzcmMiCgpG cm9tIGZhNjk3ZTVhY2ZmYzBiOTNlOGQwMjJlYmIwN2Q5ZjNiNTUxNzQwYjMgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwg MTAgTm92IDIwMjMgMTQ6NTM6MTAgLTA1MDAKU3ViamVjdDogW1BBVENIIDEwMi8xMTVdIG1peHh4 OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbWl4eHgvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL21peHh4L3RlbXBsYXRlIGIvc3JjcGtncy9taXh4eC90ZW1wbGF0ZQpp bmRleCA2OTIxOTk2ZTRlNzdiLi42YTc5YjMyOGMxYWJmIDEwMDY0NAotLS0gYS9zcmNwa2dzL21p eHh4L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWl4eHgvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtaXh4eCcKIHBrZ25hbWU9bWl4eHgKIHZlcnNpb249Mi4z LjMKLXJldmlzaW9uPTYKK3JldmlzaW9uPTcKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVf YXJncz0iLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UiCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJh LWNtYWtlLW1vZHVsZXMgcGtnLWNvbmZpZyBwcm90b2J1ZiBxdDUtaG9zdC10b29scyBxdDUtcW1h a2UiCgpGcm9tIDBmMTZlZTYzZmI4NzRhY2MxOTMwY2JlOGZjNmNjMTkzYWVmOGIwNGIgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IEZyaSwgMTAgTm92IDIwMjMgMTQ6NTM6MjggLTA1MDAKU3ViamVjdDogW1BBVENIIDEwMy8xMTVd IG11c2lrY3ViZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL211c2lrY3Vi ZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlIGIvc3JjcGtn cy9tdXNpa2N1YmUvdGVtcGxhdGUKaW5kZXggZDllNjE4NmU2Njk3Yi4uNjM3OTUyZDUwYWNhMyAx MDA2NDQKLS0tIGEvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tdXNp a2N1YmUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtdXNp a2N1YmUnCiBwa2duYW1lPW11c2lrY3ViZQogdmVyc2lvbj0zLjAuMAotcmV2aXNpb249MworcmV2 aXNpb249NAogYnVpbGRfc3R5bGU9Y21ha2UKIG1ha2VfY21kPW1ha2UKIGNvbmZpZ3VyZV9hcmdz PSItRE5PX05DVVJTRVNXPTEiCgpGcm9tIGU4NDE3OWRiOTU1ZmMyZmU4MDQzOTQ3ODM1ZmU3MGZj ODRjZmI0MDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IEZyaSwgMTAgTm92IDIwMjMgMTQ6NTM6NDUgLTA1MDAKU3ViamVjdDog W1BBVENIIDEwNC8xMTVdIGVsZWN0cm9uMjQ6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjI0 L3RlbXBsYXRlIGIvc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlCmluZGV4IGE5Yzg2NWMxOWM5 ODkuLmI4NjEzZTQzNjJiYzcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24yNC90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdlbGVjdHJvbjI0JwogcGtnbmFtZT1lbGVjdHJvbjI0CiB2ZXJzaW9u PTI0LjMuMAotcmV2aXNpb249MgorcmV2aXNpb249MwogX25vZGV2ZXI9MTguMTQuMAogX2Nocm9t aXVtdmVyPTExMi4wLjU2MTUuMTY1CiBhcmNocz0ieDg2XzY0KiBhYXJjaDY0KiIKCkZyb20gMGU1 YWQyZTZiYjIwODA3M2FjYTJlNTkwNjgxMzhhZDdlMTQ2ZmIyNCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAxMCBOb3Yg MjAyMyAxNDo1NDowMCAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTA1LzExNV0gZWxlY3Ryb24xOTog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUgYi9zcmNwa2dzL2VsZWN0cm9u MTkvdGVtcGxhdGUKaW5kZXggYjE4YmM3OTJjODIyMS4uMjlmYjM0ZTI1NGVlYSAxMDA2NDQKLS0t IGEvc3JjcGtncy9lbGVjdHJvbjE5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xOS90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2VsZWN0cm9uMTkn CiBwa2duYW1lPWVsZWN0cm9uMTkKIHZlcnNpb249MTkuMC44Ci1yZXZpc2lvbj00CityZXZpc2lv bj01CiBfbm9kZXZlcj0xNi4xNC4yCiBfY2hyb21pdW12ZXI9MTAyLjAuNTAwNS4xMjUKIGFyY2hz PSJ4ODZfNjQqIGFhcmNoNjQqIHBwYzY0bGUqIgoKRnJvbSA4YTliODk0N2EzNmVhYjlmMThkMzEy ZDE1MDUwMzMwYjFlNDNiN2UyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDEwIE5vdiAyMDIzIDE0OjU0OjEzIC0wNTAw ClN1YmplY3Q6IFtQQVRDSCAxMDYvMTE1XSB3Zi1yZWNvcmRlcjogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy93Zi1yZWNvcmRlci90ZW1wbGF0ZSBiL3NyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUKaW5k ZXggMDhmOTg2YjAzMTAwNi4uNjNjNDVjZjRiODE0ZCAxMDA2NDQKLS0tIGEvc3JjcGtncy93Zi1y ZWNvcmRlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnd2YtcmVjb3JkZXInCiBwa2duYW1lPXdm LXJlY29yZGVyCiB2ZXJzaW9uPTAuNC4xCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9z dHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHNjZG9jIHdheWxhbmQtZGV2 ZWwiCiBtYWtlZGVwZW5kcz0id2F5bGFuZC1wcm90b2NvbHMgd2F5bGFuZC1kZXZlbCBmZm1wZWct ZGV2ZWwgbGliZ2JtLWRldmVsIHgyNjQtZGV2ZWwKCkZyb20gNDE2MTA1YzM1ZTRkYzg4ZjM0ZmJl ZTQ2NjhhOTE2NmQwYzE4M2ZkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAxMCBOb3YgMjAyMyAxNDo1NDoyNiAtMDUw MApTdWJqZWN0OiBbUEFUQ0ggMTA3LzExNV0gb2JzOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3Mvb2JzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vYnMvdGVtcGxhdGUg Yi9zcmNwa2dzL29icy90ZW1wbGF0ZQppbmRleCA1ZDFkNWU4ODc0MDllLi4zZWFhZjhkNGM4MjAw IDEwMDY0NAotLS0gYS9zcmNwa2dzL29icy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29icy90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29icycKIHBrZ25hbWU9 b2JzCiB2ZXJzaW9uPTI5LjEuMwotcmV2aXNpb249MworcmV2aXNpb249NAogYXJjaHM9Imk2ODYq IHg4Nl82NCogcHBjNjRsZSogYWFyY2g2NCoiCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJl X2FyZ3M9Ii1ET0JTX1ZFUlNJT05fT1ZFUlJJREU9JHt2ZXJzaW9ufSAtREVOQUJMRV9KQUNLPU9O CgpGcm9tIGIzMGJmMTA5MGE3NWUxMDMxOWEyZWMxM2Q3OTQyNzMxYjgwMmM5NzggTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZy aSwgMTAgTm92IDIwMjMgMTQ6NTQ6MzYgLTA1MDAKU3ViamVjdDogW1BBVENIIDEwOC8xMTVdIG1s dDc6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9tbHQ3L3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9tbHQ3L3RlbXBsYXRlIGIvc3JjcGtncy9tbHQ3L3RlbXBsYXRlCmlu ZGV4IDk4ZjMwMmFkM2E1MTYuLjdlYjhjMDBmYTE1ODAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWx0 Ny90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21sdDcvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdtbHQ3JwogcGtnbmFtZT1tbHQ3CiB2ZXJzaW9uPTcuMjAuMAot cmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdz PSItRFNXSUdfUFlUSE9OPU9OIC1ETU9EX1FUNj1PTiIKIGhvc3RtYWtlZGVwZW5kcz0iZG94eWdl biBwa2ctY29uZmlnIGxhZHNwYS1zZGsgc3dpZyBweXRob24zIHdoaWNoCgpGcm9tIDk0NTE4YWYx NGM1NGJlZjM5OTc4NmU1MDZjNTk4YjkyYWYxOTVhYTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTAgTm92IDIwMjMg MTQ6NTQ6NDggLTA1MDAKU3ViamVjdDogW1BBVENIIDEwOS8xMTVdIHF0Ni1tdWx0aW1lZGlhOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlIGIvc3JjcGtncy9x dDYtbXVsdGltZWRpYS90ZW1wbGF0ZQppbmRleCA2N2E1NzdlMTMwMGZlLi4xZGE2MjZlY2Y1MTVh IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdxdDYtbXVsdGltZWRpYScKIHBrZ25hbWU9cXQ2LW11bHRpbWVkaWEKIHZlcnNpb249 Ni42LjAKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1 cmVfYXJncz0iLURRVF9GRUFUVVJFX2dzdHJlYW1lcj1PTiIKIGhvc3RtYWtlZGVwZW5kcz0icGVy bCBxdDYtZGVjbGFyYXRpdmUtaG9zdC10b29scyBwa2ctY29uZmlnIHF0Ni1zaGFkZXJ0b29scyIK CkZyb20gMjM4YjMwODVlNmYyOWIxNGU5YmNlMzhkMGRlOWQxMGE5MDhjYjQzNCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJp LCAxMCBOb3YgMjAyMyAxNTowMDoxNSAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTEwLzExNV0gYmFy ZXNpcDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2JhcmVzaXAvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2JhcmVzaXAvdGVtcGxhdGUgYi9zcmNwa2dzL2JhcmVzaXAv dGVtcGxhdGUKaW5kZXggMTJjODk1NGVmN2I5Yi4uYjE2YjY3YmVhYjhkMiAxMDA2NDQKLS0tIGEv c3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2JhcmVzaXAnCiBwa2duYW1lPWJh cmVzaXAKIHZlcnNpb249My42LjAKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxl PWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgZ2xpYi1kZXZlbCIKIG1ha2VkZXBl bmRzPSJsaWJnc20tZGV2ZWwgbGlicG5nLWRldmVsIG9wZW5zc2wtZGV2ZWwgbGlic25kZmlsZS1k ZXZlbAoKRnJvbSA3OGYwMjllNTc1MzhhYTJkNDEzOWJiZjg3NzIzNzgyOGUzNDA1YjE5IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBGcmksIDEwIE5vdiAyMDIzIDE1OjAyOjMwIC0wNTAwClN1YmplY3Q6IFtQQVRDSCAxMTEvMTE1 XSBRTVBsYXkyOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvUU1QbGF5Mi90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvUU1QbGF5Mi90ZW1wbGF0ZSBiL3NyY3BrZ3MvUU1Q bGF5Mi90ZW1wbGF0ZQppbmRleCA0NmM4MGY2NGExMzQ5Li45NDIyNThjZTYwZmI3IDEwMDY0NAot LS0gYS9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9RTVBsYXkyL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnUU1QbGF5MicKIHBrZ25h bWU9UU1QbGF5MgogdmVyc2lvbj0yMy4xMC4yMgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVp bGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtcW1ha2UgcXQ1 LWhvc3QtdG9vbHMiCiBtYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVnLWRldmVsIGxp YmFzcy1kZXZlbCBsaWJjZGlvLWRldmVsIGxpYmdtZS1kZXZlbAoKRnJvbSBjYTRkZTQyMjJkYTVi ZTNmN2RiNDhmMWFlZDgzMzk0YjI1MWEwM2ZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDEwIE5vdiAyMDIzIDE1OjAy OjM0IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAxMTIvMTE1XSBhbHNhLXBsdWdpbnM6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZSBiL3NyY3BrZ3MvYWxzYS1wbHVnaW5z L3RlbXBsYXRlCmluZGV4IGE1NzA4YTdkODJhOGYuLjdiZmRhZDA0NmM0ODMgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYWxzYS1wbHVnaW5z L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYWxzYS1wbHVn aW5zJwogcGtnbmFtZT1hbHNhLXBsdWdpbnMKIHZlcnNpb249MS4yLjcuMQotcmV2aXNpb249Mgor cmV2aXNpb249MwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0t ZGlzYWJsZS1tYWVtby1wbHVnaW4iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9t IDQyMWE3MjcxYzNjODlhMjE5M2FkMmNlNzhjMGMxOTQ0NDI0ZjlmNWMgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTAg Tm92IDIwMjMgMTU6MDI6MzkgLTA1MDAKU3ViamVjdDogW1BBVENIIDExMy8xMTVdIGRvbHBoaW4t ZW11OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZG9scGhpbi1lbXUvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlIGIvc3JjcGtncy9k b2xwaGluLWVtdS90ZW1wbGF0ZQppbmRleCAwNzA5OTNhYWMzMWQyLi45NmVkZjUwZDNlNGExIDEw MDY0NAotLS0gYS9zcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZG9s cGhpbi1lbXUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdk b2xwaGluLWVtdScKIHBrZ25hbWU9ZG9scGhpbi1lbXUKIHZlcnNpb249NS4wLjE5MzY4Ci1yZXZp c2lvbj0yCityZXZpc2lvbj0zCiBfZG9scGhpbl9jb21taXQ9ZGFkYmViNGJhZTdlN2ZhMjNhZjJi NDZlMGFkZDQxNDMwOTRkYzEwNwogX21nYmFfY29tbWl0PTQ0ZTA3NGExNWU5NjUxNDgxZjdmNjUy YWMwMDZhN2M5ZDU4Y2JlYjkKIF9nb29nbGV0ZXN0X2NvbW1pdD1iZTAzZDAwZjVmMGNjM2E5OTdk MWEzNjhiZWU4YTFmZTkzNjUxZjQ4CgpGcm9tIDNmZjAzNGVjYTVmODY4NjAzNDRlZTcwZjA2YWMx NzlhODg1MjJmOTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTAgTm92IDIwMjMgMTU6MDI6NDMgLTA1MDAKU3ViamVj dDogW1BBVENIIDExNC8xMTVdIG1pbmlkbG5hOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0K IHNyY3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21pbmlkbG5hL3Rl bXBsYXRlIGIvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZQppbmRleCA1ZmE5MjlmM2EwYzEyLi43 NDI5OTFlY2QwNGFmIDEwMDY0NAotLS0gYS9zcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdtaW5pZGxuYScKIHBrZ25hbWU9bWluaWRsbmEKIHZlcnNpb249MS4zLjMKLXJldmlz aW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9h cmdzPSIKICAtLXNiaW5kaXI9L3Vzci9iaW4KCkZyb20gZDZhNWRmYTRkYjQ3Y2Q2YTViOTZiYTFj M2NjZWZhNTkyMzU4N2IwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAxMCBOb3YgMjAyMyAxNTowNzozOSAtMDUwMApT dWJqZWN0OiBbUEFUQ0ggMTE1LzExNV0gbXB2OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0K IHNyY3BrZ3MvbXB2L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tcHYvdGVtcGxhdGUgYi9z cmNwa2dzL21wdi90ZW1wbGF0ZQppbmRleCAzMDFhNzdhZDIyOTcxLi4xNTQxNzI2YWRiYjE3IDEw MDY0NAotLS0gYS9zcmNwa2dzL21wdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21wdi90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21wdicKIHBrZ25hbWU9bXB2 CiB2ZXJzaW9uPTAuMzYuMAotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9bWVz b24KIGNvbmZpZ3VyZV9hcmdzPSItRGNkZGE9ZW5hYmxlZCAtRGR2YmluPWVuYWJsZWQgLURkdmRu YXY9ZW5hYmxlZAogIC1EbGlibXB2PXRydWUgLURjcGx1Z2lucz1lbmFibGVkCg== --===============7684085328722998984==--