From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 10773 invoked from network); 17 Jul 2023 19:52:53 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 17 Jul 2023 19:52:53 -0000 Content-Type: multipart/mixed; boundary="===============8154267153615280988==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_ffmpeg6_split?= To: ml@inbox.vuxu.org From: zlice Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Mon, 17 Jul 2023 21:52:53 +0200 List-Id: Message-ID: <20230717195253.ZkCEmYz-qLZadT4cSAR4YlibmMGAHd8r3B7C2ZsnFbE@z> GitHub notification mails are now in MIME to allow UTF8. --===============8154267153615280988== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgemxpY2UgYWdhaW5zdCBtYXN0ZXIg b24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL3psaWNl L3ZvaWQtcGFja2FnZXMgZmZtcGVnNi1zcGxpdApodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51 eC92b2lkLXBhY2thZ2VzL3B1bGwvNDM3NjEKCmZmbXBlZzYgc3BsaXQKW2NpIHNraXBdDQoNCg0K IyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzDQoNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5nZXMgaW4gdGhp cyBQUjogKipZRVMqKg0KDQptYWluIHRlc3RpbmcgaGFzIGJlZW4gdmFhcGkgaW4gRmlyZWZveCBO aWdodGx5IGFuZCBlbmMvZGVjIGluIFNob3RjdXQgb24gSW50ZWwgQTc3MA0KDQojIyMjIE5ldyBw YWNrYWdlDQoNCi0gVGhpcyBuZXcgcGFja2FnZSBjb25mb3JtcyB0byB0aGUgW3BhY2thZ2UgcmVx dWlyZW1lbnRzXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Js b2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZCNwYWNrYWdlLXJlcXVpcmVtZW50cyk6ICoqWUVTKioN Cg0KIyMjIyBMb2NhbCBidWlsZCB0ZXN0aW5nDQoNCi0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkg Zm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsICoqeDg2XzY0KioNCg0KIyMjIyBEaXNjdXNzaW9u DQoNCkNvbnRpbnVhdGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBh Y2thZ2VzL3B1bGwvMzYzMTUNCg0KYGxpYmF2cmVzYW1wbGVgIGlzIGRlcHJlY2F0ZWQsIGJ1dCBt YXJrZWQgYXMgYSBkZXBlbmRlbmN5IHdoZW4gdHJ5aW5nIHRvIGJ1aWxkIG90aGVyIHBhY2thZ2Vz IGFuZCBpbnN0YWxsIGBmZm1wZWdgKDYpLiBJIHRoaW5rIHRoZSByaWdodCB3YXkgdG8gaGFuZGxl IHRoaXMgaXMgbWFrZSBhIG1ldGEgcGFja2FnZSBhbmQgdGhlIGFkZCB0byByZW1vdmFscz8NCg0K DQojIyMjIyBDb21taXQgbmFtaW5nIC8gbWlzYw0KDQp+fkNvbW1pdHMgYXJlICdkaXJ0eScgcmln aHQgbm93LCBydW5uaW5nIHdpdGggW2dzdHJlYW1lciAxLjIyLjEgdXBkYXRlc10oaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQyODYxKSBhbmQgW0ludGVs IE9wZW5DTF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxs LzQzMDg0KS4gVGhpcyB3aWxsIGFsc28gbWFrZSBbaW50ZWwgcGFja2FnZXMgcHJdKGh0dHBzOi8v Z2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80MTEzMikgb2Jzb2xldGUu fn4gKHNlZSBSZXF1aXJlbWVudHMgYmVsb3cpDQoNCk1haW50YWluZXIgZm9yIHByZXZpb3VzIGZm bXBlZyg0KSB3YXMgb3JwaGFuZWQsIEkgY2FuIHB1dCBteSBuYW1lIGluIHRoZXJlIGlmIHRoYXQg bWF0dGVycywgdGhvdWdoIEkgZG9uJ3QgZXhhY3RseSBzZWUgbXlzZWxmIGtlZXBpbmcgdXAgb24g ZmZtcGVnLg0KDQpUaGlzIHVwZGF0ZXMgUVQ1IHdoaWNoIGxvb2tzIGxpa2UgaXQgaXMgdXN1YWxs eSBob3N0ZWQgYnkgSm9obm55LiBOb3Qgc3VyZSBpZiB0aGVyZSdzIGFueSByZWFzb24gdG8gc3Rh eSB0aGVyZSBvciB0aGVzZSBzb3VyY2VzIGFyZSBmaW5lLg0KDQojIyMjIyBTVElMTCBGRk1QRUc0 DQoNClRoZXNlIGFyZSBhIG1peCBvZiBlbXVsYXRvcnMsIGdhbWVzIGFuZC9vciBvbGRlciBwYWNr YWdlcy4NCg0KLSBhdHRyYWN0IChtdWx0aXBsZSBwYXRjaGVzIGluIG1hc3RlcikNCi0gYXVkYWNp dHkgKGh0dHBzOi8vZ2l0aHViLmNvbS9hdWRhY2l0eS9hdWRhY2l0eS9pc3N1ZXMvMjMwNSBhbmQg aHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9wb3J0bWVkaWEvd2lraS9wb3J0c21mLyBpcyAnYmV0 YScpDQotIGNjZXh0cmFjdG9yIChtYXN0ZXIgcGF0Y2hlcz8gbm8gcmVsZWFzZSkNCi0gdmljZQ0K LSBrb2RpDQotIG1sdCAob25seSBkZXAgbGVmdCBpcyBmbG93YmxhZGUpDQotIH5+c3luZmlnICht bHQpfn4gKHdvcmsgd2l0aCBtbHQ3LCBidW1wIHN5bmZpZ3N0dWRpbykNCi0gdHZoZWFkZW5kDQot IHNzcg0KLSBzcGVrLWFsdGVybmF0aXZlDQotIHBwc3NwcA0KLSBvbGl2ZQ0KLSBtb2MNCi0gbWVk aWFzdHJlYW1lcg0KLSBsaWJleHRyYWN0b3INCi0gaWRqYw0KLSBoZWRnZXdhcnMNCi0gfn5mZm1w ZWd0aHVtYm5haWxlcn5+IChwYXRjaGVzIGZvciBtb3ZpZWRlY29kZXIueHh4IGZpbGVzKQ0KLSB+ fmZmbXBlZ3RodW1ic35+IChsYXRlc3QgY29tcGlsZXMpDQotIGRlYWRiZWVmDQotIG9teHBsYXll cg0KLSBxdGF2IChmb3JrIGhhcyBmZm1wZWcgNSBwYXRjaCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9j bWd1by9RdEFWKQ0KLSBgdmxjYCAodmxjNCB3aWxsIHN1cHBvcnQgZmZtcGVnNSwgdGhlcmUncyBh IHBhdGNoIHRvIGJ1aWxkIDMueCB3aXRoIGZmbXBlZzUgYnV0IGl0IHdpbGwgbGFjayB2YWFwaSkN Ci0gYG9zZ2AgKE9wZW5TY2VuZUdyYXBoIHBsdXMgYHhpbmUtbGliYCkNCg0KDQojIyMjIyBIQVZF IE5PVCBCVUlMVCBZRVQNCg0KLSBvbXhwbGF5ZXIgKHJwaSBvbmx5PyBmZm1wZWc0KQ0KLSBrb2Rp IChiaWcsIGJ1dCBmZm1wZWc0KQ0KDQoNCiMjIyMjIFVQREFURUQgKGZvciBmZm1wZWc2KQ0KDQot IH5+YmxlbmRlcjogdXBkYXRlIHRvIDMuNS4xfn4gfn53aWxsIGJlIHJldmJ1bXAgd2l0aH5+IGh0 dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80Mzk5Mg0KLSB1 bnBhcGVyOiB1cGRhdGUgdG8gNy4wLjAuDQotIGd1dmN2aWV3OiB1cGRhdGUgdG8gMi4wLjguDQot IHF0NTogdXBkYXRlIHRvIDUuMTUuOA0KLSBxdDUtd2ViZW5naW5lOiB1cGRhdGUgdG8gNS4xOC4x Mw0KLSBzaGlib2tlbjI6IHJldmJ1bXAgZm9yIHF0NS4xNS44IChwYXRjaCkNCi0gcHl0aG9uMy1w eXNpZGUyOiB1cGRhdGUgdG8gNS4xNS44IChwYXRjaCkNCg0KDQojIyMjIyBSZXF1aXJlbWVudHMN Cg0KLSB+fltnc3RyZWFtZXIgMS4yMi4yXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92 b2lkLXBhY2thZ2VzL3B1bGwvNDI4NjEpfn4gLSBhIGZldyBwYWNrYWdlcyB1c2UgZmZtcGVnLWRl dmVsIGFuZCByZXF1aXJlIGEgcmV2YnVtcA0KDQotIFtJbnRlbCBQYWNrYWdlc10oaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQxMTMyKSAtIGZmbXBlZzQg dXNlcyBkaWZmZXJlbnQgbGlicmFyaWVzIHRoYW4gNiAobGlibWZ4IC8gSW50ZWwtTWVkaWFTREsg dnMgb25seSBvbmVWUEwgdGhhdCBJbnRlbCBpcyBtb3ZpbmcgdG8pLCBib3RoIGFyZSBpbmNsdWRl ZCBoZXJlDQoNCi0gfn5bc2hvdGN1dCAyMy4wNS4xNF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQt bGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQ0MjYwKX5+DQoNCi0gaHR0cHM6Ly9naXRodWIuY29t L3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQ0NzgxIHdpbGwgcmVtb3ZlIGZyb20gdGhp cyBQUgoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9p ZC1wYWNrYWdlcy9wdWxsLzQzNzYxLnBhdGNoIGlzIGF0dGFjaGVk --===============8154267153615280988== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSBkODAzZTE4OTg4ZTBkNWRkMzQ3ODBlZDJiZmEwOTVkMzBhZGRkMzZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDE5OjU1OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTE1XSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI2ICsrKysrLS0tCiBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoICAgICAgICAgICAgfCA2MCAtLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAxOCAtLS0tLS0KIC4uLmgtbGliYXZj b2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZiB8IDQwIC0tLS0tLS0tLS0tLS0KIC4u Li93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8IDI4IC0tLS0tLS0t LQogc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgMzggKysr KysrLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDE3MyBkZWxldGlv bnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBh dGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12NXRlbC1m bG9hdGluZy1wb2ludC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3Bh dGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJl YWRlb24tdmFhcGktYnVnLnBhdGNoCgpkaWZmIC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2NvbW1v bi9zaGxpYnMKaW5kZXggMjNjOWFkYjJkZDMxLi44NGVhMDBlYjlmYzEgMTAwNjQ0Ci0tLSBhL2Nv bW1vbi9zaGxpYnMKKysrIGIvY29tbW9uL3NobGlicwpAQCAtMzkyLDE1ICszOTIsMjMgQEAgbGli aWQzdGFnLnNvLjAgbGliaWQzdGFnLTAuMTUuMWJfMQogbGliZ2lmLnNvLjcgZ2lmbGliLTUuMS4w XzEKIGxpYkltbGliMi5zby4xIGltbGliMi0xLjQuMl8xCiBsaWJtcDNsYW1lLnNvLjAgbGFtZS0z Ljk4LjJfMQotbGliYXZkZXZpY2Uuc28uNTggbGliYXZkZXZpY2UtNC4wXzEKLWxpYmF2Zm9ybWF0 LnNvLjU4IGxpYmF2Zm9ybWF0LTQuMF8xCi1saWJzd3NjYWxlLnNvLjUgbGlic3dzY2FsZS00LjBf MQotbGlic3dyZXNhbXBsZS5zby4zIGxpYnN3cmVzYW1wbGUtNC4wXzEKLWxpYmF2cmVzYW1wbGUu c28uNCBsaWJhdnJlc2FtcGxlLTQuMF8xCi1saWJwb3N0cHJvYy5zby41NSBsaWJwb3N0cHJvYy00 LjBfMQotbGliYXZjb2RlYy5zby41OCBsaWJhdmNvZGVjLTQuMF8xCi1saWJhdnV0aWwuc28uNTYg bGliYXZ1dGlsLTQuMF8xCi1saWJhdmZpbHRlci5zby43IGxpYmF2ZmlsdGVyLTQuMF8xCitsaWJh dmRldmljZS5zby42MCBsaWJhdmRldmljZS02LjBfMQorbGliYXZmb3JtYXQuc28uNjAgbGliYXZm b3JtYXQtNi4wXzEKK2xpYnN3c2NhbGUuc28uNyBsaWJzd3NjYWxlLTYuMF8xCitsaWJzd3Jlc2Ft cGxlLnNvLjQgbGlic3dyZXNhbXBsZS02LjBfMQorbGlicG9zdHByb2Muc28uNTcgbGlicG9zdHBy b2MtNi4wXzEKK2xpYmF2Y29kZWMuc28uNjAgbGliYXZjb2RlYy02LjBfMQorbGliYXZ1dGlsLnNv LjU4IGxpYmF2dXRpbC02LjBfMQorbGliYXZmaWx0ZXIuc28uOSBsaWJhdmZpbHRlci02LjBfMQor bGliYXZkZXZpY2Uuc28uNTggbGliYXZkZXZpY2U0LTQuMF8xCitsaWJhdmZvcm1hdC5zby41OCBs aWJhdmZvcm1hdDQtNC4wXzEKK2xpYnN3c2NhbGUuc28uNSBsaWJzd3NjYWxlNC00LjBfMQorbGli c3dyZXNhbXBsZS5zby4zIGxpYnN3cmVzYW1wbGU0LTQuMF8xCitsaWJhdnJlc2FtcGxlLnNvLjQg bGliYXZyZXNhbXBsZTQtNC4wXzEKK2xpYnBvc3Rwcm9jLnNvLjU1IGxpYnBvc3Rwcm9jNC00LjBf MQorbGliYXZjb2RlYy5zby41OCBsaWJhdmNvZGVjNC00LjBfMQorbGliYXZ1dGlsLnNvLjU2IGxp YmF2dXRpbDQtNC4wXzEKK2xpYmF2ZmlsdGVyLnNvLjcgbGliYXZmaWx0ZXI0LTQuMF8xCiBsaWJT REwtMS4yLnNvLjAgU0RMLTEuMi4xNF8xCiBsaWJTRExfaW1hZ2UtMS4yLnNvLjAgU0RMX2ltYWdl LTEuMi4xMF8xCiBsaWJ4MjY0LnNvLjE1NyB4MjY0LTIwMTkwNTA3LjIyNDVfMQpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9mZm1wZWcvZmlsZXMvYWx0aXZlYy5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVnL2Zp bGVzL2FsdGl2ZWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljNTcyMDA0 NjMzMi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2ZWMucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1yZXZlcnQgc29tZSBhbHRpdmVjIHNw ZWNpZmljIGNoYW5nZSBvbiBhbGwgcHBjKiBleGNlcHQgcHBjNjRsZSoKLQotcTY2OiAiV2Ugc2hv dWxkIGFsc28gdGhyb3cgaW4gYSByZXZlcnQgb2YgRkZtcGVnL0ZGbXBlZ0AzYTU1N2M1IGJ1dCBv bmx5Ci1jb25kaXRpb25hbGx5LCBmb3IgcHBjKiBidXQgbm90IHBwYzY0bGUqICh0aGUgbmV3IGNv ZGUgaXMgdmFsaWQgZm9yCi1QT1dFUjggVlNYIHdoaWNoIExFIHRhcmdldHMgYXMgYSBiYXNlbGlu ZSBidXQgbm90IEJFKSIKLQotCi1UaGlzIHJldmVydHMgY29tbWl0IDNhNTU3YzVkODhiN2IxNWI1 OTU0YmEyNzQzZmViYjA1NTU0OWI1MzYuCi0tLS0KLSBsaWJzd3NjYWxlL3BwYy95dXYycmdiX2Fs dGl2ZWMuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAy MCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlic3dzY2Fs ZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMgYi9saWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2ZWMu YwotaW5kZXggNTM2NTQ1MjkzZC4uYzFlMjg1MmFkYiAxMDA2NDQKLS0tLSBhL2xpYnN3c2NhbGUv cHBjL3l1djJyZ2JfYWx0aXZlYy5jCi0rKysgYi9saWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2 ZWMuYwotQEAgLTMwNSw2ICszMDUsOSBAQCBzdGF0aWMgaW50IGFsdGl2ZWNfICMjIG5hbWUoU3dz Q29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAgICAgICAgICBcCi0gICAgIHZl Y3RvciBzaWduZWQgc2hvcnQgUjEsIEcxLCBCMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotICAgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBSLCBHLCBCOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0rICAgIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICp5MWl2UCwgKnkyaXZQ LCAqdWl2UCwgKnZpdlA7ICAgICAgICAgICAgICAgICAgXAotKyAgICB2ZWN0b3IgdW5zaWduZWQg Y2hhciBhbGlnbl9wZXJtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciBzaWduZWQgc2hvcnQgbENZ ICAgICAgID0gYy0+Q1k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg ICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxPWSAgICAgICA9IGMtPk9ZOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBsQ1JWICAgICAg PSBjLT5DUlY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMzM1LDEz ICszMzgsMjYgQEAgc3RhdGljIGludCBhbHRpdmVjXyAjIyBuYW1lKFN3c0NvbnRleHQgKmMsIGNv bnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAgICAgXAotICAgICAgICAgdmVjX2RzdHN0KG91 dGUsICgweDAyMDAwMDAyIHwgKCgodyAqIDMgKyAzMikgLyAzMikgPDwgMTYpKSwgMSk7ICAgICAg IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBmb3IgKGogPSAwOyBqIDwgdyAv IDE2OyBqKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAg ICAgICAgICAgIHkwID0gdmVjX3hsKDAsIHkxaSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB5MWl2UCA9IChjb25zdCB2ZWN0b3Ig dW5zaWduZWQgY2hhciAqKSB5MWk7ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAg ICAgeTJpdlAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgeTJpOyAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHVpdlAgID0gKGNvbnN0IHZlY3RvciB1bnNpZ25l ZCBjaGFyICopIHVpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB2aXZQ ICA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB2aTsgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIGFsaWduX3Blcm0g PSB2ZWNfbHZzbCgwLCB5MWkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSsgICAgICAgICAgICB5MCA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcikgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0o eTFpdlBbMF0sIHkxaXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgXAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICB5MSA9IHZlY194bCgwLCB5MmkpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAg YWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkyaSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgICAgICAgICAgIHkxID0gKHZlY3RvciB1bnNpZ25lZCBjaGFyKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAg ICB2ZWNfcGVybSh5Mml2UFswXSwgeTJpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAgICAgICAg ICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAgIHUgPSAodmVjdG9yIHNp Z25lZCBjaGFyKSB2ZWNfeGwoMCwgdWkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsg ICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgdWkpOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVkIGNo YXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAg ICAgICAgICAgICAgdmVjX3Blcm0odWl2UFswXSwgdWl2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAg ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgdiA9 ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgwLCB2aSk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB2aSk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB2ID0gKHZlY3Rv ciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh2aXZQWzBdLCB2aXZQWzFdLCBhbGlnbl9w ZXJtKTsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg ICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICB2ZWNfc3ViKHUsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLS0gCi0yLjI3LjAK LQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1w b2ludC5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9p bnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNTUxNzhjNzRmMC4uMDAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmct cG9pbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0tLS0gYS9saWJhdmZp bHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTAtMjYgMjE6MDM6MDMuMDAwMDAwMDAwICswMjAwCi0r KysgYi9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTEtMjEgMTE6MDY6NDkuNjAyMjg0 NDIyICswMTAwCi1AQCAtMzksNiArMzksMTUgQEAKLSAjZW5kaWYKLSAjaW5jbHVkZSA8ZmVudi5o PgotIAotKyNpZiAoRkVfQUxMX0VYQ0VQVCA9PSAwKQotKy8qIEUuZy4gQVJNIHNvZnQgZmxvYXQg ZG9lcyBub3QgZGVmaW5lIHRoZXNlICovCi0rI2RlZmluZSBGRV9JTlZBTElEICAgIDAKLSsjZGVm aW5lIEZFX0RJVkJZWkVSTyAgMAotKyNkZWZpbmUgRkVfT1ZFUkZMT1cgICAwCi0rI2RlZmluZSBG RV9VTkRFUkZMT1cgIDAKLSsjZGVmaW5lIEZFX0lORVhBQ1QgICAgMAotKyNlbmRpZgotKwotICNp ZiBDT05GSUdfTElCRk9OVENPTkZJRwotICNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRjb25maWcu aD4KLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvcGF0Y2gtbGli YXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZiBiL3NyY3BrZ3MvZmZtcGVnL3Bh dGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgpkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE5NDhmN2E4YTJkLi4wMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9wYXRjaC1saWJhdmNvZGVjLWxpYnN2dGF2MS10ZW5f Yml0X2Zvcm1hdC5kaWZmCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotIz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jIEZyb20gMDMxZjE1NjFjZDI4NjU5 NmNkYjM3NGRhMzJmOGFhODE2Y2UzYjEzNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLSMgRnJv bTogQ2hyaXN0b3BoZXIgRGVnYXdhIDxjaHJpc3RvcGhlci5kZWdhd2FAaW50ZWwuY29tPgotIyBE YXRlOiBUaHUsIDIwIE9jdCAyMDIyIDIyOjU1OjI3IC0wNTAwCi0jIFN1YmplY3Q6IFtQQVRDSF0g YXZjb2RlYy9saWJzdnRhdjE6IHJlbW92ZSBjb21wcmVzc2VkX3Rlbl9iaXRfZm9ybWF0IGFuZCBz aW1wbGlmeSBhbGxvY19idWZmZXIKLSMKLSMgY29tcHJlc3NlZF90ZW5fYml0X2Zvcm1hdCBoYXMg YmVlbiBkZXByZWNhdGVkIHVwc3RyZWFtIGFuZCBoYXMgbm8gZWZmZWN0Ci0jIGFuZCBjYW4gYmUg cmVtb3ZlZC4gUGx1cywgdGVjaG5pY2FsbHkgaXQgd2FzIG5ldmVyIHVzZWQgaW4gdGhlIGZpcnN0 IHBsYWNlCi0jIHNpbmNlIGl0IHdvdWxkIHJlcXVpcmUgdGhlIGFwcCAoZmZtcGVnKSB0byBzZXQg aXQgYW5kIGRvIGFkZGl0aW9uYWwKLSMgcHJvY2Vzc2luZyBvZiB0aGUgaW5wdXQgZnJhbWVzLgot IwotIyBBbHNvIHNpbXBsaWZ5IGFsbG9jX2J1ZmZlciBieSByZW1vdmluZyBjYWxjdWxhdGlvbnMg cmVsYXRpbmcgdG8gdGhlIG5vbi1leGlzdGFudCBwcm9jZXNzaW5nLgotIwotIyBTaWduZWQtb2Zm LWJ5OiBDaHJpc3RvcGhlciBEZWdhd2EgPGNocmlzdG9waGVyLmRlZ2F3YUBpbnRlbC5jb20+Ci0j PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL2xpYmF2Y29k ZWMvbGlic3Z0YXYxLmMKLSsrKyBiL2xpYmF2Y29kZWMvbGlic3Z0YXYxLmMKLUBAIC0xMjQsMTYg KzEyNCwxMiBAQCBzdGF0aWMgaW50IHN2dF9wcmludF9lcnJvcih2b2lkICpsb2dfY3R4LCBFYkVy cm9yVHlwZSBlcnIsCi0gCi0gc3RhdGljIGludCBhbGxvY19idWZmZXIoRWJTdnRBdjFFbmNDb25m aWd1cmF0aW9uICpjb25maWcsIFN2dENvbnRleHQgKnN2dF9lbmMpCi0gewotLSAgICBjb25zdCBp bnQgICAgcGFja19tb2RlXzEwYml0ID0KLS0gICAgICAgIChjb25maWctPmVuY29kZXJfYml0X2Rl cHRoID4gOCkgJiYgKGNvbmZpZy0+Y29tcHJlc3NlZF90ZW5fYml0X2Zvcm1hdCA9PSAwKSA/IDEg OiAwOwotLSAgICBjb25zdCBzaXplX3QgbHVtYV9zaXplXzhiaXQgID0KLS0gICAgICAgIGNvbmZp Zy0+c291cmNlX3dpZHRoICogY29uZmlnLT5zb3VyY2VfaGVpZ2h0ICogKDEgPDwgcGFja19tb2Rl XzEwYml0KTsKLS0gICAgY29uc3Qgc2l6ZV90IGx1bWFfc2l6ZV8xMGJpdCA9Ci0tICAgICAgICAo Y29uZmlnLT5lbmNvZGVyX2JpdF9kZXB0aCA+IDggJiYgcGFja19tb2RlXzEwYml0ID09IDApID8g bHVtYV9zaXplXzhiaXQgOiAwOwotKyAgICBjb25zdCBzaXplX3QgbHVtYV9zaXplID0gY29uZmln LT5zb3VyY2Vfd2lkdGggKiBjb25maWctPnNvdXJjZV9oZWlnaHQgKgotKyAgICAgICAgKGNvbmZp Zy0+ZW5jb2Rlcl9iaXRfZGVwdGggPiA4ID8gMiA6IDEpOwotIAotICAgICBFYlN2dElPRm9ybWF0 ICppbl9kYXRhOwotIAotLSAgICBzdnRfZW5jLT5yYXdfc2l6ZSA9IChsdW1hX3NpemVfOGJpdCAr IGx1bWFfc2l6ZV8xMGJpdCkgKiAzIC8gMjsKLSsgICAgc3Z0X2VuYy0+cmF3X3NpemUgPSBsdW1h X3NpemUgKiAzIC8gMjsKLSAKLSAgICAgLy8gYWxsb2NhdGUgYnVmZmVyIGZvciBpbiBhbmQgb3V0 Ci0gICAgIHN2dF9lbmMtPmluX2J1ZiAgICAgICAgICAgPSBhdl9tYWxsb2N6KHNpemVvZigqc3Z0 X2VuYy0+aW5fYnVmKSk7Ci0tLSAKLUdpdExhYgotCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBl Zy9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaCBiL3NyY3Br Z3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGUzZjY4YTQxNWIuLjAwMDAwMDAwMDAw MAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZh YXBpLWJ1Zy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gODExZDI5 MDg0NDIwNmZjNzNkYzM5YzNlNWI2N2Q1ZDg5NWJhZWRmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IFJhaW5lciBIb2NoZWNrZXIgPGZlcm5ldG1lbnRhQG9ubGluZS5kZT4KLURhdGU6 IFNhdCwgMjYgSmFuIDIwMTkgMTk6NDg6MzUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZjb2Rl Yy92YWFwaV9oMjY0OiBza2lwIGRlY29kZSBpZiBwaWMgaGFzIG5vIHNsaWNlcwotCi1UaGlzIGZp eGVzIC8gd29ya2Fyb3VuZHMgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5j Z2k/aWQ9MTA1MzY4LgotSXQgd2FzIGhpdCBmcmVxdWVudGx5IHdoZW4gd2F0Y2hpbmcgaDI2NCBj aGFubmVscyByZWNlaXZlZCB2aWEgRFZCLVguCi1Db3JyZXNwb25kaW5nIGtvZGkgYnVnOiBodHRw czovL2dpdGh1Yi5jb20veGJtYy94Ym1jL2lzc3Vlcy8xNTcwNAotLS0tCi0gbGliYXZjb2RlYy92 YWFwaV9oMjY0LmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQot Ci1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMgYi9saWJhdmNvZGVjL3ZhYXBp X2gyNjQuYwotaW5kZXggNTg1NDU4N2EyNTUuLmYxMmZkYzQ1N2E0IDEwMDY0NAotLS0tIGEvbGli YXZjb2RlYy92YWFwaV9oMjY0LmMKLSsrKyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jCi1AQCAt MzE3LDYgKzMxNywxMSBAQCBzdGF0aWMgaW50IHZhYXBpX2gyNjRfZW5kX2ZyYW1lKEFWQ29kZWND b250ZXh0ICphdmN0eCkKLSAgICAgSDI2NFNsaWNlQ29udGV4dCAqc2wgPSAmaC0+c2xpY2VfY3R4 WzBdOwotICAgICBpbnQgcmV0OwotIAotKyAgICBpZiAocGljLT5uYl9zbGljZXMgPT0gMCkgewot KyAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElEREFUQTsKLSsgICAgICAgIGdvdG8gZmluaXNo OwotKyAgICB9Ci0rCi0gICAgIHJldCA9IGZmX3ZhYXBpX2RlY29kZV9pc3N1ZShhdmN0eCwgcGlj KTsKLSAgICAgaWYgKHJldCA8IDApCi0gICAgICAgICBnb3RvIGZpbmlzaDsKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvZmZtcGVnL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUKaW5kZXgg YWEwNThhYWI5Y2E5Li5iODc3Zjg2YzFjNjkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZmZtcGVnL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvZmZtcGVnL3RlbXBsYXRlCkBAIC0xLDE1ICsxLDE1IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWcnCiAjIGF1ZGFjaXR5IGFsc28gbmVlZHMgdG8gYmUg YnVtcGVkIHdoZW4gYSBuZXcgZmZtcGVnIHZlcnNpb24gYnVtcHMgbGliYXZmb3JtYXQncyBzb25h bWUhCiBwa2duYW1lPWZmbXBlZwotdmVyc2lvbj00LjQuNAotcmV2aXNpb249MgordmVyc2lvbj02 LjAKK3JldmlzaW9uPTEKIHNob3J0X2Rlc2M9IkRlY29kaW5nLCBlbmNvZGluZyBhbmQgc3RyZWFt aW5nIHNvZnR3YXJlIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3Jn PiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93d3cuZmZt cGVnLm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0ZG bXBlZy9GRm1wZWcvbWFzdGVyL0NoYW5nZWxvZyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly93d3cuZmZt cGVnLm9yZy9yZWxlYXNlcy9mZm1wZWctJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT1lODBi MzgwZDU5NWM4MDkwNjBmNjZmOTZhNWQ4NDk1MTFlZjRhNzZhMjZiNzZlYWNmNTc3OGI5NGMzNTcw MzA5CitjaGVja3N1bT01N2JlODdjMjJkOWI0OWMxMTJiNmQyNGJjNjdkNDI1MDg2NjBlNmI3MThi M2RiODljNDRlNDdlMjg5MTM3MDgyCiAKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBwZXJs IgogbWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgYWxz YS1saWItZGV2ZWwgbGliWGZpeGVzLWRldmVsCkBAIC0yNiwxMiArMjYsMTMgQEAgbWFrZWRlcGVu ZHM9InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgYWxzYS1saWItZGV2ZWwg bGliWGZpeGVzLWRldmUKICAkKHZvcHRfaWYgd2VicCBsaWJ3ZWJwLWRldmVsKSAkKHZvcHRfaWYg c29mYSBsaWJteXNvZmEtZGV2ZWwpCiAgJCh2b3B0X2lmIGRybSBsaWJkcm0tZGV2ZWwpICQodm9w dF9pZiBzdnRhdjEgbGlic3Z0LWF2MS1kZXZlbCkKICAkKHZvcHRfaWYgc3J0IHNydC1kZXZlbCkg JCh2b3B0X2lmIHJpc3QgbGlicmlzdC1kZXZlbCkKLSAkKHZvcHRfaWYgdnVsa2FuICd2dWxrYW4t bG9hZGVyIFZ1bGthbi1IZWFkZXJzJykKKyAkKHZvcHRfaWYgdnVsa2FuICd2dWxrYW4tbG9hZGVy IFZ1bGthbi1IZWFkZXJzIFZ1bGthbi1Ub29scyBWdWxrYW4tVmFsaWRhdGlvbkxheWVycycpCisg JCh2b3B0X2lmIG9uZXZwbCAnb25ldnBsIG9uZXZwbC1kZXZlbCcpCiAgJCh2b3B0X2lmIG52ZW5j IG52LWNvZGVjLWhlYWRlcnMpICQodm9wdF9pZiBudmRlYyBudi1jb2RlYy1oZWFkZXJzKSIKIGRl cGVuZHM9ImZmcGxheT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAogYnVpbGRfb3B0aW9ucz0i eDI2NSB2NGwyIHZhYXBpIHZkcGF1IHZweCBmZGtfYWFjIGFvbSBudmVuYyBzbmRpbyBwdWxzZWF1 ZGlvCi0gZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEgc3J0IHJpc3QgbnZk ZWMiCisgZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEgc3J0IHJpc3QgbnZk ZWMgb25ldnBsIgogYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJ4MjY1IHY0bDIgdnB4IGFvbSBzbmRp byBwdWxzZWF1ZGlvIGRhdjFkIHdlYnAgdnVsa2FuIGRybSBzcnQgcmlzdCIKIGRlc2Nfb3B0aW9u X3NydD0iRW5hYmxlIHN1cHBvcnQgZm9yIFNSVCAoU2VjdXJlLCBSZWxpYWJsZSwgVHJhbnNwb3J0 KSIKIGRlc2Nfb3B0aW9uX3Jpc3Q9IkVuYWJsZSBzdXBwb3J0IGZvciBSSVNUIChSZWxpYWJsZSBJ bnRlcm5ldCBTdHJlYW0gVHJhbnNwb3J0KSIKQEAgLTM5LDkgKzQwLDEzIEBAIGRlc2Nfb3B0aW9u X3NvZmE9IkVuYWJsZSBzdXBwb3J0IGZvciBBRVMgU09GQSIKIGRlc2Nfb3B0aW9uX3dlYnA9IkVu YWJsZSBzdXBwb3J0IGZvciBXZWJQIgogCiBjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4K LQlpNjg2Knx4ODZfNjQqKQotCQlob3N0bWFrZWRlcGVuZHMrPSIgbmFzbSIKKwlpNjg2KikKIAkJ YnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5jIG52ZGVjIgorCQlob3N0 bWFrZWRlcGVuZHMrPSIgbmFzbSIKKwkJOzsKKwl4ODZfNjQqKQorCQlob3N0bWFrZWRlcGVuZHMr PSIgbmFzbSIKKwkJYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5jIG52 ZGVjIG9uZXZwbCIKIAkJOzsKIAlwcGM2NCopIGJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFw aSB2ZHBhdSI7OwogCW1pcHMqKSBDRkxBR1M9Ii1tbmFuPWxlZ2FjeSI7OwpAQCAtMTE5LDE4ICsx MjQsMTkgQEAgZG9fY29uZmlndXJlKCkgewogCQkkKHZvcHRfZW5hYmxlIHgyNjUgbGlieDI2NSkg XAogCQkkKHZvcHRfZW5hYmxlIHY0bDIgbGlidjRsMikgXAogCQkkKHZvcHRfZW5hYmxlIGFvbSBs aWJhb20pICQodm9wdF9lbmFibGUgdmFhcGkpICQodm9wdF9lbmFibGUgdmRwYXUpIFwKLQkJLS1l bmFibGUtbGliYnMyYiAtLWVuYWJsZS1hdnJlc2FtcGxlIC0tZW5hYmxlLWxpYnZpZHN0YWIgXAor CQktLWVuYWJsZS1saWJiczJiIC0tZW5hYmxlLWxpYnZpZHN0YWIgXAogCQkkKHZvcHRfZW5hYmxl IGRhdjFkIGxpYmRhdjFkKSBcCiAJCSQodm9wdF9lbmFibGUgemltZyBsaWJ6aW1nKSBcCiAJCSQo dm9wdF9lbmFibGUgd2VicCBsaWJ3ZWJwKSBcCiAJCSQodm9wdF9lbmFibGUgc29mYSBsaWJteXNv ZmEpIFwKIAkJJCh2b3B0X2VuYWJsZSB2dWxrYW4pIFwKKwkJJCh2b3B0X2VuYWJsZSBvbmV2cGwg bGlidnBsKSBcCiAJCSQodm9wdF9lbmFibGUgZHJtIGxpYmRybSkgXAogCQkkKHZvcHRfZW5hYmxl IHN2dGF2MSBsaWJzdnRhdjEpIFwKIAkJJCh2b3B0X2VuYWJsZSBzcnQgbGlic3J0KSBcCiAJCSQo dm9wdF9lbmFibGUgcmlzdCBsaWJyaXN0KSBcCi0JCSQodm9wdF9pZiBudmVuYyAnLS1lbmFibGUt bnZlbmMnKSBcCi0JCSQodm9wdF9pZiBudmRlYyAnLS1lbmFibGUtbnZkZWMnKQorCQkkKHZvcHRf ZW5hYmxlIG52ZW5jIG52ZW5jKSBcCisJCSQodm9wdF9lbmFibGUgbnZkZWMgbnZkZWMpCiB9CiAK IGRvX2J1aWxkKCkgewpAQCAtMTU3LDEwICsxNjMsOCBAQCBsaWJhdmRldmljZV9wYWNrYWdlKCkg ewogfQogCiBsaWJhdnJlc2FtcGxlX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYz0iRkZtcGVnIGF1 ZGlvIHJlc2FtcGxpbmcgbGlicmFyeSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgInVzci9s aWIvbGliYXZyZXNhbXBsZS5zby4qIgotCX0KKwlzaG9ydF9kZXNjPSJQYWNrYWdlIGRlcHJlY2F0 ZWQsIHJlbW92YWwgbmVlZGVkIgorCWJ1aWxkX3N0eWxlPW1ldGEKIH0KIAogbGliYXZmb3JtYXRf cGFja2FnZSgpIHsKQEAgLTIxNCwxNSArMjE4LDEzIEBAIGZmbXBlZy1kZXZlbF9wYWNrYWdlKCkg ewogCQlsaWJhdmZpbHRlcj49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQogCQlsaWJwb3N0cHJvYz49 JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQogCQlsaWJzd3NjYWxlPj0ke3ZlcnNpb259XyR7cmV2aXNp b259Ci0JCWxpYnN3cmVzYW1wbGU+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KLQkJbGliYXZyZXNh bXBsZT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwkJbGlic3dyZXNhbXBsZT49JHt2ZXJzaW9u fV8ke3JldmlzaW9ufSIKIAlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCi0KKwlj b25mbGljdHM9ImZmbXBlZzQtZGV2ZWwiCiAJaWYgWyAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiID0g Imk2ODYiIF07IHRoZW4KIAkJIyAvdXNyL2Jpbi9zdHJpcDogZXJyb3I6IHRoZSBpbnB1dCBmaWxl ICcvZGVzdGRpci8vZmZtcGVnLWRldmVsLTQuNC40L3Vzci9saWIvbGliYXZmaWx0ZXIuYSh2Zl9h dGFkZW5vaXNlLm8pJyBoYXMgbm8gc2VjdGlvbnMKIAkJbm9zdHJpcF9maWxlcz0iL3Vzci9saWIv bGliYXZmaWx0ZXIuYSIKIAlmaQotCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZtb3ZlIHVzci9pbmNs dWRlCiAJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCgpGcm9tIGU4MjljYzFkODczYjc2ZGU3MjRm NzdmMjYwMmRjMjdlYjU5ZGU5YTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTY6MjIgLTA0 MDAKU3ViamVjdDogW1BBVENIIDAwMi8xMTVdIE5ldyBwYWNrYWdlOiBmZm1wZWc0LTQuNC40LgoK LS0tCiBzcmNwa2dzL2ZmbXBlZzQtZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2ggICAgICAgICAgIHwgIDYwICsr KysrCiAuLi4vcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAgMTgg KysKIC4uLmgtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZiB8ICA0MCAr KysKIC4uLi93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8ICAyOCAr Kwogc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgIHwgMjQwICsr KysrKysrKysrKysrKysrKwogc3JjcGtncy9saWJhdmNvZGVjNCAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZkZXZpY2U0ICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2ZmlsdGVyNCAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjcGtncy9saWJhdmZvcm1hdDQgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAxICsKIHNyY3BrZ3MvbGliYXZyZXNhbXBsZTQgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmNwa2dzL2xpYmF2dXRpbDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjcGtncy9saWJwb3N0cHJvYzQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyY3BrZ3MvbGlic3dyZXNhbXBsZTQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmNwa2dzL2xpYnN3c2NhbGU0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwog MTUgZmlsZXMgY2hhbmdlZCwgMzk2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEyMDAwMCBz cmNwa2dzL2ZmbXBlZzQtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQv ZmlsZXMvYWx0aXZlYy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnNC9w YXRjaGVzL2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2Jp dF9mb3JtYXQuZGlmZgogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnNC9wYXRjaGVz L3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3Mv bGliYXZjb2RlYzQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYmF2ZGV2aWNlNAogY3Jl YXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZmaWx0ZXI0CiBjcmVhdGUgbW9kZSAxMjAwMDAg c3JjcGtncy9saWJhdmZvcm1hdDQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYmF2cmVz YW1wbGU0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdnV0aWw0CiBjcmVhdGUgbW9k ZSAxMjAwMDAgc3JjcGtncy9saWJwb3N0cHJvYzQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dz L2xpYnN3cmVzYW1wbGU0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJzd3NjYWxlNAoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbCBiL3NyY3BrZ3MvZmZtcGVnNC1kZXZl bApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2Ygot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbApAQCAtMCwwICsxIEBACitm Zm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9m Zm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0aXZl Yy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjljNTcyMDA0 NjMzMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRpdmVjLnBh dGNoCkBAIC0wLDAgKzEsNjAgQEAKK3JldmVydCBzb21lIGFsdGl2ZWMgc3BlY2lmaWMgY2hhbmdl IG9uIGFsbCBwcGMqIGV4Y2VwdCBwcGM2NGxlKgorCitxNjY6ICJXZSBzaG91bGQgYWxzbyB0aHJv dyBpbiBhIHJldmVydCBvZiBGRm1wZWcvRkZtcGVnQDNhNTU3YzUgYnV0IG9ubHkKK2NvbmRpdGlv bmFsbHksIGZvciBwcGMqIGJ1dCBub3QgcHBjNjRsZSogKHRoZSBuZXcgY29kZSBpcyB2YWxpZCBm b3IKK1BPV0VSOCBWU1ggd2hpY2ggTEUgdGFyZ2V0cyBhcyBhIGJhc2VsaW5lIGJ1dCBub3QgQkUp IgorCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgM2E1NTdjNWQ4OGI3YjE1YjU5NTRiYTI3NDNmZWJi MDU1NTQ5YjUzNi4KKy0tLQorIGxpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jIHwgMjQg KysrKysrKysrKysrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMo KyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJzd3NjYWxlL3BwYy95dXYycmdi X2FsdGl2ZWMuYyBiL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCitpbmRleCA1MzY1 NDUyOTNkLi5jMWUyODUyYWRiIDEwMDY0NAorLS0tIGEvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9h bHRpdmVjLmMKKysrKyBiL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCitAQCAtMzA1 LDYgKzMwNSw5IEBAIHN0YXRpYyBpbnQgYWx0aXZlY18gIyMgbmFtZShTd3NDb250ZXh0ICpjLCBj b25zdCB1bnNpZ25lZCBjaGFyICoqaW4sICAgICAgICAgIFwKKyAgICAgdmVjdG9yIHNpZ25lZCBz aG9ydCBSMSwgRzEsIEIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIFIsIEcsIEI7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysg ICAgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKnkxaXZQLCAqeTJpdlAsICp1aXZQLCAqdml2 UDsgICAgICAgICAgICAgICAgICBcCisrICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIGFsaWduX3Bl cm07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBsQ1kgICAgICAgPSBjLT5D WTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIHZlY3RvciBzaWdu ZWQgc2hvcnQgbE9ZICAgICAgID0gYy0+T1k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxDUlYgICAgICA9IGMtPkNSVjsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC0zMzUsMTMgKzMzOCwyNiBAQCBz dGF0aWMgaW50IGFsdGl2ZWNfICMjIG5hbWUoU3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQg Y2hhciAqKmluLCAgICAgICAgICBcCisgICAgICAgICB2ZWNfZHN0c3Qob3V0ZSwgKDB4MDIwMDAw MDIgfCAoKCh3ICogMyArIDMyKSAvIDMyKSA8PCAxNikpLCAxKTsgICAgICAgXAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgICAgIGZvciAoaiA9IDA7IGogPCB3IC8gMTY7IGorKykgeyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgeTAg PSB2ZWNfeGwoMCwgeTFpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgICAgIHkxaXZQID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFy ICopIHkxaTsgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB5Mml2UCA9IChj b25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB5Mmk7ICAgICAgICAgICAgICAgICAgICAgICBc CisrICAgICAgICAgICAgdWl2UCAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgdWk7 ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHZpdlAgID0gKGNvbnN0IHZl Y3RvciB1bnNpZ25lZCBjaGFyICopIHZpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAs IHkxaSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAg IHkwID0gKHZlY3RvciB1bnNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh5MWl2UFswXSwgeTFp dlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorLSAgICAgICAgICAgIHkxID0gdmVjX3hsKDAsIHkyaSk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICBhbGlnbl9wZXJtID0g dmVjX2x2c2woMCwgeTJpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr ICAgICAgICAgICAgeTEgPSAodmVjdG9yIHVuc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHky aXZQWzBdLCB5Mml2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCistICAgICAgICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZl Y194bCgwLCB1aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIGFs aWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB1aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKysgICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICB2 ZWNfcGVybSh1aXZQWzBdLCB1aXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgICAg XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICB2ID0gKHZlY3RvciBzaWdu ZWQgY2hhcikgdmVjX3hsKDAsIHZpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg ICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHZpKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHYgPSAodmVjdG9yIHNpZ25lZCBjaGFy KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAg ICAgICAgICAgIHZlY19wZXJtKHZpdlBbMF0sIHZpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAg ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgIHUgPSAo dmVjdG9yIHNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIHZlY19zdWIodSwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistLSAKKzIuMjcuMAorCmRpZmYgLS1naXQg YS9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCBi L3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWE1NTE3OGM3NGYwCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmct cG9pbnQucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorLS0tIGEvbGliYXZmaWx0ZXIvdmZfZHJhd3Rl eHQuYwkyMDE3LTEwLTI2IDIxOjAzOjAzLjAwMDAwMDAwMCArMDIwMAorKysrIGIvbGliYXZmaWx0 ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTExLTIxIDExOjA2OjQ5LjYwMjI4NDQyMiArMDEwMAorQEAg LTM5LDYgKzM5LDE1IEBACisgI2VuZGlmCisgI2luY2x1ZGUgPGZlbnYuaD4KKyAKKysjaWYgKEZF X0FMTF9FWENFUFQgPT0gMCkKKysvKiBFLmcuIEFSTSBzb2Z0IGZsb2F0IGRvZXMgbm90IGRlZmlu ZSB0aGVzZSAqLworKyNkZWZpbmUgRkVfSU5WQUxJRCAgICAwCisrI2RlZmluZSBGRV9ESVZCWVpF Uk8gIDAKKysjZGVmaW5lIEZFX09WRVJGTE9XICAgMAorKyNkZWZpbmUgRkVfVU5ERVJGTE9XICAw CisrI2RlZmluZSBGRV9JTkVYQUNUICAgIDAKKysjZW5kaWYKKysKKyAjaWYgQ09ORklHX0xJQkZP TlRDT05GSUcKKyAjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250Y29uZmlnLmg+CisgI2VuZGlmCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9wYXRjaC1saWJhdmNvZGVjLWxpYnN2 dGF2MS10ZW5fYml0X2Zvcm1hdC5kaWZmIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvcGF0Y2gt bGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFhOTQ4ZjdhOGEyZAotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3BhdGNoLWxpYmF2Y29kZWMtbGlic3Z0YXYxLXRlbl9i aXRfZm9ybWF0LmRpZmYKQEAgLTAsMCArMSw0MCBAQAorIz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CisjIEZyb20gMDMxZjE1NjFjZDI4NjU5NmNkYjM3NGRhMzJmOGFh ODE2Y2UzYjEzNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKKyMgRnJvbTogQ2hyaXN0b3BoZXIg RGVnYXdhIDxjaHJpc3RvcGhlci5kZWdhd2FAaW50ZWwuY29tPgorIyBEYXRlOiBUaHUsIDIwIE9j dCAyMDIyIDIyOjU1OjI3IC0wNTAwCisjIFN1YmplY3Q6IFtQQVRDSF0gYXZjb2RlYy9saWJzdnRh djE6IHJlbW92ZSBjb21wcmVzc2VkX3Rlbl9iaXRfZm9ybWF0IGFuZCBzaW1wbGlmeSBhbGxvY19i dWZmZXIKKyMKKyMgY29tcHJlc3NlZF90ZW5fYml0X2Zvcm1hdCBoYXMgYmVlbiBkZXByZWNhdGVk IHVwc3RyZWFtIGFuZCBoYXMgbm8gZWZmZWN0CisjIGFuZCBjYW4gYmUgcmVtb3ZlZC4gUGx1cywg dGVjaG5pY2FsbHkgaXQgd2FzIG5ldmVyIHVzZWQgaW4gdGhlIGZpcnN0IHBsYWNlCisjIHNpbmNl IGl0IHdvdWxkIHJlcXVpcmUgdGhlIGFwcCAoZmZtcGVnKSB0byBzZXQgaXQgYW5kIGRvIGFkZGl0 aW9uYWwKKyMgcHJvY2Vzc2luZyBvZiB0aGUgaW5wdXQgZnJhbWVzLgorIworIyBBbHNvIHNpbXBs aWZ5IGFsbG9jX2J1ZmZlciBieSByZW1vdmluZyBjYWxjdWxhdGlvbnMgcmVsYXRpbmcgdG8gdGhl IG5vbi1leGlzdGFudCBwcm9jZXNzaW5nLgorIworIyBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhl ciBEZWdhd2EgPGNocmlzdG9waGVyLmRlZ2F3YUBpbnRlbC5jb20+CisjPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhL2xpYmF2Y29kZWMvbGlic3Z0YXYxLmMK KysrKyBiL2xpYmF2Y29kZWMvbGlic3Z0YXYxLmMKK0BAIC0xMjQsMTYgKzEyNCwxMiBAQCBzdGF0 aWMgaW50IHN2dF9wcmludF9lcnJvcih2b2lkICpsb2dfY3R4LCBFYkVycm9yVHlwZSBlcnIsCisg Cisgc3RhdGljIGludCBhbGxvY19idWZmZXIoRWJTdnRBdjFFbmNDb25maWd1cmF0aW9uICpjb25m aWcsIFN2dENvbnRleHQgKnN2dF9lbmMpCisgeworLSAgICBjb25zdCBpbnQgICAgcGFja19tb2Rl XzEwYml0ID0KKy0gICAgICAgIChjb25maWctPmVuY29kZXJfYml0X2RlcHRoID4gOCkgJiYgKGNv bmZpZy0+Y29tcHJlc3NlZF90ZW5fYml0X2Zvcm1hdCA9PSAwKSA/IDEgOiAwOworLSAgICBjb25z dCBzaXplX3QgbHVtYV9zaXplXzhiaXQgID0KKy0gICAgICAgIGNvbmZpZy0+c291cmNlX3dpZHRo ICogY29uZmlnLT5zb3VyY2VfaGVpZ2h0ICogKDEgPDwgcGFja19tb2RlXzEwYml0KTsKKy0gICAg Y29uc3Qgc2l6ZV90IGx1bWFfc2l6ZV8xMGJpdCA9CistICAgICAgICAoY29uZmlnLT5lbmNvZGVy X2JpdF9kZXB0aCA+IDggJiYgcGFja19tb2RlXzEwYml0ID09IDApID8gbHVtYV9zaXplXzhiaXQg OiAwOworKyAgICBjb25zdCBzaXplX3QgbHVtYV9zaXplID0gY29uZmlnLT5zb3VyY2Vfd2lkdGgg KiBjb25maWctPnNvdXJjZV9oZWlnaHQgKgorKyAgICAgICAgKGNvbmZpZy0+ZW5jb2Rlcl9iaXRf ZGVwdGggPiA4ID8gMiA6IDEpOworIAorICAgICBFYlN2dElPRm9ybWF0ICppbl9kYXRhOworIAor LSAgICBzdnRfZW5jLT5yYXdfc2l6ZSA9IChsdW1hX3NpemVfOGJpdCArIGx1bWFfc2l6ZV8xMGJp dCkgKiAzIC8gMjsKKysgICAgc3Z0X2VuYy0+cmF3X3NpemUgPSBsdW1hX3NpemUgKiAzIC8gMjsK KyAKKyAgICAgLy8gYWxsb2NhdGUgYnVmZmVyIGZvciBpbiBhbmQgb3V0CisgICAgIHN2dF9lbmMt PmluX2J1ZiAgICAgICAgICAgPSBhdl9tYWxsb2N6KHNpemVvZigqc3Z0X2VuYy0+aW5fYnVmKSk7 CistLSAKK0dpdExhYgorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy93b3Jr YXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZzQvcGF0 Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wMGUzZjY4YTQxNWIKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFw aS1idWcucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA4MTFkMjkwODQ0MjA2ZmM3M2RjMzlj M2U1YjY3ZDVkODk1YmFlZGY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmFpbmVy IEhvY2hlY2tlciA8ZmVybmV0bWVudGFAb25saW5lLmRlPgorRGF0ZTogU2F0LCAyNiBKYW4gMjAx OSAxOTo0ODozNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL3ZhYXBpX2gyNjQ6IHNr aXAgZGVjb2RlIGlmIHBpYyBoYXMgbm8gc2xpY2VzCisKK1RoaXMgZml4ZXMgLyB3b3JrYXJvdW5k cyBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUzNjguCitJ dCB3YXMgaGl0IGZyZXF1ZW50bHkgd2hlbiB3YXRjaGluZyBoMjY0IGNoYW5uZWxzIHJlY2VpdmVk IHZpYSBEVkItWC4KK0NvcnJlc3BvbmRpbmcga29kaSBidWc6IGh0dHBzOi8vZ2l0aHViLmNvbS94 Ym1jL3hibWMvaXNzdWVzLzE1NzA0CistLS0KKyBsaWJhdmNvZGVjL3ZhYXBpX2gyNjQuYyB8IDUg KysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9s aWJhdmNvZGVjL3ZhYXBpX2gyNjQuYyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jCitpbmRleCA1 ODU0NTg3YTI1NS4uZjEyZmRjNDU3YTQgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2gy NjQuYworKysrIGIvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKK0BAIC0zMTcsNiArMzE3LDExIEBA IHN0YXRpYyBpbnQgdmFhcGlfaDI2NF9lbmRfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQor ICAgICBIMjY0U2xpY2VDb250ZXh0ICpzbCA9ICZoLT5zbGljZV9jdHhbMF07CisgICAgIGludCBy ZXQ7CisgCisrICAgIGlmIChwaWMtPm5iX3NsaWNlcyA9PSAwKSB7CisrICAgICAgICByZXQgPSBB VkVSUk9SX0lOVkFMSUREQVRBOworKyAgICAgICAgZ290byBmaW5pc2g7CisrICAgIH0KKysKKyAg ICAgcmV0ID0gZmZfdmFhcGlfZGVjb2RlX2lzc3VlKGF2Y3R4LCBwaWMpOworICAgICBpZiAocmV0 IDwgMCkKKyAgICAgICAgIGdvdG8gZmluaXNoOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0 L3RlbXBsYXRlIGIvc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uZjJjODUxNjkzZDM2Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9mZm1wZWc0L3RlbXBsYXRlCkBAIC0wLDAgKzEsMjQwIEBACisjIFRlbXBsYXRlIGZpbGUg Zm9yICdmZm1wZWc0JworIyBhdWRhY2l0eSBhbHNvIG5lZWRzIHRvIGJlIGJ1bXBlZCB3aGVuIGEg bmV3IGZmbXBlZyB2ZXJzaW9uIGJ1bXBzIGxpYmF2Zm9ybWF0J3Mgc29uYW1lIQorcGtnbmFtZT1m Zm1wZWc0Cit2ZXJzaW9uPTQuNC40CityZXZpc2lvbj0xCitzaG9ydF9kZXNjPSJEZWNvZGluZywg ZW5jb2RpbmcgYW5kIHN0cmVhbWluZyBzb2Z0d2FyZSAtIGZmbXBlZzQgbGlicmFyaWVzIG9ubHki CittYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgorbGljZW5zZT0i R1BMLTMuMC1vci1sYXRlciIKK2hvbWVwYWdlPSJodHRwczovL3d3dy5mZm1wZWcub3JnIgorY2hh bmdlbG9nPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vRkZtcGVnL0ZGbXBlZy9t YXN0ZXIvQ2hhbmdlbG9nIgorZGlzdGZpbGVzPSJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVh c2VzL2ZmbXBlZy0ke3ZlcnNpb259LnRhci54eiIKK2NoZWNrc3VtPWU4MGIzODBkNTk1YzgwOTA2 MGY2NmY5NmE1ZDg0OTUxMWVmNGE3NmEyNmI3NmVhY2Y1Nzc4Yjk0YzM1NzAzMDkKKworaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIHBlcmwiCittYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBiemlw Mi1kZXZlbCBmcmVldHlwZS1kZXZlbCBhbHNhLWxpYi1kZXZlbCBsaWJYZml4ZXMtZGV2ZWwKKyBs aWJYZXh0LWRldmVsIGxpYlh2TUMtZGV2ZWwgbGlieGNiLWRldmVsIGxhbWUtZGV2ZWwgbGlidGhl b3JhLWRldmVsCisgbGlidm9yYmlzLWRldmVsIHgyNjQtZGV2ZWwgeHZpZGNvcmUtZGV2ZWwgamFj ay1kZXZlbCBTREwyLWRldmVsCisgbGliY2Rpby1wYXJhbm9pYS1kZXZlbCBsaWJydG1wLWRldmVs IGxpYm1vZHBsdWctZGV2ZWwgZ251dGxzLWRldmVsCisgc3BlZXgtZGV2ZWwgY2VsdC1kZXZlbCBo YXJmYnV6ei1kZXZlbCBsaWJhc3MtZGV2ZWwgb3B1cy1kZXZlbCBvY2wtaWNkLWRldmVsCisgbGli YnMyYi1kZXZlbCBsaWJ2aWRzdGFiLWRldmVsIHZtYWYtZGV2ZWwgJCh2b3B0X2lmIHB1bHNlYXVk aW8gcHVsc2VhdWRpby1kZXZlbCkKKyAkKHZvcHRfaWYgdmFhcGkgbGlidmEtZGV2ZWwpICQodm9w dF9pZiB2ZHBhdSBsaWJ2ZHBhdS1kZXZlbCkKKyAkKHZvcHRfaWYgeDI2NSB4MjY1LWRldmVsKSAk KHZvcHRfaWYgdjRsMiB2NGwtdXRpbHMtZGV2ZWwpCisgJCh2b3B0X2lmIGZka19hYWMgZmRrLWFh Yy1kZXZlbCkgJCh2b3B0X2lmIHZweCBsaWJ2cHgtZGV2ZWwpCisgJCh2b3B0X2lmIGFvbSBsaWJh b20tZGV2ZWwpICQodm9wdF9pZiBzbmRpbyBzbmRpby1kZXZlbCkKKyAkKHZvcHRfaWYgZGF2MWQg bGliZGF2MWQtZGV2ZWwpICQodm9wdF9pZiB6aW1nIHppbWctZGV2ZWwpCisgJCh2b3B0X2lmIHdl YnAgbGlid2VicC1kZXZlbCkgJCh2b3B0X2lmIHNvZmEgbGlibXlzb2ZhLWRldmVsKQorICQodm9w dF9pZiBkcm0gbGliZHJtLWRldmVsKSAkKHZvcHRfaWYgc3Z0YXYxIGxpYnN2dC1hdjEtZGV2ZWwp CisgJCh2b3B0X2lmIHNydCBzcnQtZGV2ZWwpICQodm9wdF9pZiByaXN0IGxpYnJpc3QtZGV2ZWwp CisgJCh2b3B0X2lmIHZ1bGthbiAndnVsa2FuLWxvYWRlciBWdWxrYW4tSGVhZGVycycpCisgJCh2 b3B0X2lmIG1meCAnbGlibWZ4IGxpYm1meC1kZXZlbCcpCisgJCh2b3B0X2lmIG52ZW5jIG52LWNv ZGVjLWhlYWRlcnMpICQodm9wdF9pZiBudmRlYyBudi1jb2RlYy1oZWFkZXJzKSIKKworYnVpbGRf b3B0aW9ucz0ieDI2NSB2NGwyIHZhYXBpIHZkcGF1IHZweCBmZGtfYWFjIGFvbSBudmVuYyBzbmRp byBwdWxzZWF1ZGlvCisgZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEgc3J0 IHJpc3QgbnZkZWMgbWZ4IgorYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJ4MjY1IHY0bDIgdnB4IGFv bSBzbmRpbyBwdWxzZWF1ZGlvIGRhdjFkIHdlYnAgdnVsa2FuIGRybSBzcnQgcmlzdCIKKworZGVz Y19vcHRpb25fc3J0PSJFbmFibGUgc3VwcG9ydCBmb3IgU1JUIChTZWN1cmUsIFJlbGlhYmxlLCBU cmFuc3BvcnQpIgorZGVzY19vcHRpb25fcmlzdD0iRW5hYmxlIHN1cHBvcnQgZm9yIFJJU1QgKFJl bGlhYmxlIEludGVybmV0IFN0cmVhbSBUcmFuc3BvcnQpIgorZGVzY19vcHRpb25fc29mYT0iRW5h YmxlIHN1cHBvcnQgZm9yIEFFUyBTT0ZBIgorZGVzY19vcHRpb25fd2VicD0iRW5hYmxlIHN1cHBv cnQgZm9yIFdlYlAiCisKK2Nhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCWk2ODYqKQor CQkJaG9zdG1ha2VkZXBlbmRzKz0iIG5hc20iCisJCQlidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIg dmFhcGkgdmRwYXUgbnZlbmMgbnZkZWMiCisJCQk7OworCXg4Nl82NCopCisJCQlob3N0bWFrZWRl cGVuZHMrPSIgbmFzbSIKKwkJCWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSBt ZnggbnZlbmMgbnZkZWMiCisJCQk7OworCXBwYzY0KikgYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0i IHZhYXBpIHZkcGF1Ijs7CisJbWlwcyopIENGTEFHUz0iLW1uYW49bGVnYWN5Ijs7Citlc2FjCisK K2lmIFsgIiRYQlBTX1RBUkdFVF9XT1JEU0laRSIgIT0gIjMyIiBdOyB0aGVuCisJYnVpbGRfb3B0 aW9uc19kZWZhdWx0Kz0iIHN2dGF2MSIKK2ZpCisKK2lmIFsgIiRYQlBTX1RBUkdFVF9OT19BVE9N SUM4IiBdOyB0aGVuCisJbWFrZWRlcGVuZHMrPSIgbGliYXRvbWljLWRldmVsIgorZmkKKworX2Fw cGx5X3BhdGNoKCkgeworCWxvY2FsIGFyZ3M9IiQxIiBwbmFtZT0iJChiYXNlbmFtZSAkMikiCisK KwlpZiBbICEgLWYgIi4ke3BuYW1lfV9kb25lIiBdOyB0aGVuCisJCXBhdGNoIC1OICRhcmdzIC1p ICQyCisJCXRvdWNoIC4ke3BuYW1lfV9kb25lCisJZmkKK30KKworcG9zdF9wYXRjaCgpIHsKKwlj YXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJcHBjNjRsZSopIDs7CisJCXBwYyopIF9h cHBseV9wYXRjaCAtcDEgJHtGSUxFU0RJUn0vYWx0aXZlYy5wYXRjaCA7OworCWVzYWMKKworCXZz ZWQgLWkgbGliYXZmaWx0ZXIvdmZfbGlidm1hZi5jIC1lICdzIS91c3IvbG9jYWwvc2hhcmUvbW9k ZWwvXCh2bWFmX3YwLjYuMVwpLnBrbCEvdXNyL3NoYXJlL3ZtYWYvXDEuanNvbiEnCit9CisKK2Rv X2NvbmZpZ3VyZSgpIHsKKwkjIEZpeCBnY2Mgb24geDg2XzY0LW11c2wgb25seQorCWlmIFsgIiRY QlBTX1RBUkdFVF9NQUNISU5FIiA9ICJ4ODZfNjQtbXVzbCIgXTsgdGhlbgorCQl2c2VkIC1pIGNv bmZpZ3VyZSAtZSAicztfY2ZsYWdzX3NwZWVkPSctTzMnO19jZmxhZ3Nfc3BlZWQ9Jy1PMic7Igor CWZpCisKKwlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KKwkJY2FzZSAiJFhCUFNfVEFSR0VU X01BQ0hJTkUiIGluCisJCQlhcm0qKSBfYXJjaD0iYXJtIjs7CisJCQlhYXJjaDY0KikgX2FyY2g9 ImFhcmNoNjQiOzsKKwkJCW1pcHMqKSBfYXJjaD0ibWlwcyI7OworCQkJcHBjNjQqKSBfYXJjaD0i cHBjNjQiOzsKKwkJCXBwYyopIF9hcmNoPSJwcGMiOzsKKwkJCSopIF9hcmNoPSIke1hCUFNfVEFS R0VUX01BQ0hJTkUlJS1tdXNsfSI7OworCQllc2FjCisKKwkJX2FyZ3MrPSIgLS1lbmFibGUtY3Jv c3MtY29tcGlsZQorCQkJLS1zeXNyb290PSRYQlBTX0NST1NTX0JBU0UKKwkJCS0tY3Jvc3MtcHJl Zml4PSR7WEJQU19DUk9TU19UUklQTEVUfS0KKwkJCS0tdGFyZ2V0LW9zPWxpbnV4IC0tYXJjaD0k e19hcmNofSIKKwlmaQorCisJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCXBwY3xw cGMtbXVzbCkgX2FyZ3MrPSIgLS1kaXNhYmxlLWFsdGl2ZWMiOzsKKwllc2FjCisKKwlpZiBbICIk WEJQU19UQVJHRVRfTk9fQVRPTUlDOCIgXTsgdGhlbgorCQlfYXJncys9IiAtLWV4dHJhLWxpYnM9 LWxhdG9taWMiCisJZmkKKworCS4vY29uZmlndXJlIC0tcHJlZml4PS91c3IgLS1kaXNhYmxlLWRl YnVnIC0tZW5hYmxlLWdwbCAtLWVuYWJsZS1nbnV0bHMgXAorCQktLWRpc2FibGUtc3RyaXBwaW5n IFwKKwkJLS1lbmFibGUtbGliY2RpbyAtLWVuYWJsZS12ZXJzaW9uMyAtLWVuYWJsZS1ydW50aW1l LWNwdWRldGVjdCBcCisJCS0tZW5hYmxlLWxpYm1wM2xhbWUgLS1lbmFibGUtbGlidm9yYmlzIC0t ZW5hYmxlLWxpYnh2aWQgXAorCQktLWVuYWJsZS1saWJ4MjY0ICQodm9wdF9lbmFibGUgdnB4IGxp YnZweCkgLS1lbmFibGUtbGlidGhlb3JhIFwKKwkJLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLXN0 YXRpYyAtLWVuYWJsZS1saWJ4Y2IgXAorCQkkKHZvcHRfZW5hYmxlIHB1bHNlYXVkaW8gbGlicHVs c2UpIC0tZW5hYmxlLWxpYmZyZWV0eXBlIC0tZW5hYmxlLWxpYm1vZHBsdWcgXAorCQktLWVuYWJs ZS1saWJzcGVleCAtLWVuYWJsZS1saWJjZWx0IC0tZW5hYmxlLWxpYmFzcyBcCisJCS0tZW5hYmxl LWxpYm9wdXMgLS1lbmFibGUtbGlicnRtcCAtLWVuYWJsZS1saWJqYWNrIFwKKwkJJCh2b3B0X2lm IGZka19hYWMgJy0tZW5hYmxlLW5vbmZyZWUgLS1lbmFibGUtbGliZmRrLWFhYycpIFwKKwkJLS1k aXNhYmxlLWxpYm9wZW5jb3JlX2Ftcm5iIC0tZGlzYWJsZS1saWJvcGVuY29yZV9hbXJ3YiBcCisJ CS0tZGlzYWJsZS1saWJvcGVuanBlZyBcCisJCS0tZW5hYmxlLXBvc3Rwcm9jIC0tZW5hYmxlLW9w ZW5jbCAke19hcmdzfSAtLWVuYWJsZS1saWJ2bWFmICR7X2FyZ3N9IFwKKwkJJCh2b3B0X2VuYWJs ZSB4MjY1IGxpYngyNjUpIFwKKwkJJCh2b3B0X2VuYWJsZSB2NGwyIGxpYnY0bDIpIFwKKwkJJCh2 b3B0X2VuYWJsZSBhb20gbGliYW9tKSAkKHZvcHRfZW5hYmxlIHZhYXBpKSAkKHZvcHRfZW5hYmxl IHZkcGF1KSBcCisJCS0tZW5hYmxlLWxpYmJzMmIgLS1lbmFibGUtYXZyZXNhbXBsZSAtLWVuYWJs ZS1saWJ2aWRzdGFiIFwKKwkJJCh2b3B0X2VuYWJsZSBkYXYxZCBsaWJkYXYxZCkgXAorCQkkKHZv cHRfZW5hYmxlIHppbWcgbGliemltZykgXAorCQkkKHZvcHRfZW5hYmxlIHdlYnAgbGlid2VicCkg XAorCQkkKHZvcHRfZW5hYmxlIHNvZmEgbGlibXlzb2ZhKSBcCisJCSQodm9wdF9lbmFibGUgdnVs a2FuKSBcCisJCSQodm9wdF9lbmFibGUgZHJtIGxpYmRybSkgXAorCQkkKHZvcHRfZW5hYmxlIHN2 dGF2MSBsaWJzdnRhdjEpIFwKKwkJJCh2b3B0X2VuYWJsZSBzcnQgbGlic3J0KSBcCisJCSQodm9w dF9lbmFibGUgcmlzdCBsaWJyaXN0KSBcCisJCSQodm9wdF9lbmFibGUgbWZ4IGxpYm1meCkgXAor CQkkKHZvcHRfaWYgbnZlbmMgJy0tZW5hYmxlLW52ZW5jJykgXAorCQkkKHZvcHRfaWYgbnZkZWMg Jy0tZW5hYmxlLW52ZGVjJykKK30KKworZG9fYnVpbGQoKSB7CisJbWFrZSAke21ha2Vqb2JzfQor CW1ha2UgZG9jL2Zme21wZWcscGxheX0uMQorfQorCitkb19pbnN0YWxsKCkgeworCW1ha2UgREVT VERJUj0ke0RFU1RESVJ9IGluc3RhbGwgaW5zdGFsbC1tYW4KKwlybSAtcmYgJHtERVNURElSfS91 c3IvYmluCit9CisKK2xpYmF2Y29kZWM0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVn IGNvZGVjIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2 Y29kZWMuc28uKiIKKwl9Cit9CisKK2xpYmF2ZGV2aWNlNF9wYWNrYWdlKCkgeworCXNob3J0X2Rl c2M9IkZGbXBlZyBkZXZpY2UgaGFuZGxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJ dm1vdmUgInVzci9saWIvbGliYXZkZXZpY2Uuc28uKiIKKwl9Cit9CisKK2xpYmF2cmVzYW1wbGU0 X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGF1ZGlvIHJlc2FtcGxpbmcgbGlicmFy eSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYXZyZXNhbXBsZS5zby4q IgorCX0KK30KKworbGliYXZmb3JtYXQ0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVn IGZpbGUgZm9ybWF0IGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGli L2xpYmF2Zm9ybWF0LnNvLioiCisJfQorfQorCitsaWJhdnV0aWw0X3BhY2thZ2UoKSB7CisJc2hv cnRfZGVzYz0iRkZtcGVnIHV0aWxpdHkgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1v dmUgInVzci9saWIvbGliYXZ1dGlsLnNvLioiCisJfQorfQorCitsaWJhdmZpbHRlcjRfcGFja2Fn ZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgYXVkaW8vdmlkZW8gZmlsdGVyIGxpYnJhcnkiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2ZmlsdGVyLnNvLioiCisJfQor fQorCitsaWJwb3N0cHJvYzRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgdmlkZW8g cG9zdHByb2Nlc3NpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9s aWIvbGlicG9zdHByb2Muc28uKiIKKwl9Cit9CisKK2xpYnN3c2NhbGU0X3BhY2thZ2UoKSB7CisJ c2hvcnRfZGVzYz0iRkZtcGVnIHZpZGVvIHNjYWxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgp IHsKKwkJdm1vdmUgInVzci9saWIvbGlic3dzY2FsZS5zby4qIgorCX0KK30KKworbGlic3dyZXNh bXBsZTRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgdmlkZW8gcmVzYW1wbGluZyBs aWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJzd3Jlc2FtcGxl LnNvLioiCisJfQorfQorCitmZm1wZWc0LWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iCisJ CWxpYmF2Y29kZWM0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYmF2ZGV2aWNlND49JHt2 ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJhdmZvcm1hdDQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lv bn0KKwkJbGliYXZ1dGlsND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJhdmZpbHRlcjQ+ PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGlicG9zdHByb2M0Pj0ke3ZlcnNpb259XyR7cmV2 aXNpb259CisJCWxpYnN3c2NhbGU0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYnN3cmVz YW1wbGU0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYmF2cmVzYW1wbGU0Pj0ke3ZlcnNp b259XyR7cmV2aXNpb259IgorCXNob3J0X2Rlc2MrPSIgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwlj b25mbGljdHM9ImZmbXBlZy1kZXZlbCIKKwlpZiBbICIkWEJQU19UQVJHRVRfTUFDSElORSIgPSAi aTY4NiIgXTsgdGhlbgorCQkjIC91c3IvYmluL3N0cmlwOiBlcnJvcjogdGhlIGlucHV0IGZpbGUg Jy9kZXN0ZGlyLy9mZm1wZWctZGV2ZWwtNC40LjQvdXNyL2xpYi9saWJhdmZpbHRlci5hKHZmX2F0 YWRlbm9pc2UubyknIGhhcyBubyBzZWN0aW9ucworCQlub3N0cmlwX2ZpbGVzPSIvdXNyL2xpYi9s aWJhdmZpbHRlci5hIgorCWZpCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9pbmNsdWRl CisJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCisJCXZtb3ZlICJ1c3IvbGliLyouYSIKKwkJdm1v dmUgInVzci9saWIvKi5zbyIKKwkJdm1vdmUgdXNyL3NoYXJlL2ZmbXBlZy9leGFtcGxlcworCQl2 bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjMKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2 Y29kZWM0IGIvc3JjcGtncy9saWJhdmNvZGVjNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAw MDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGli YXZjb2RlYzQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZkZXZpY2U0IGIvc3JjcGtncy9saWJhdmRldmlj ZTQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmIK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2ZGV2aWNlNApAQCAtMCwwICsxIEBACitm Zm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9s aWJhdmZpbHRlcjQgYi9zcmNwa2dzL2xpYmF2ZmlsdGVyNApuZXcgZmlsZSBtb2RlIDEyMDAwMApp bmRleCAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvbGliYXZmaWx0ZXI0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2Zm9ybWF0NCBiL3NyY3BrZ3MvbGli YXZmb3JtYXQ0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMC4uODg3ZjM1 NGU3YzZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdmZvcm1hdDQKQEAgLTAsMCAr MSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvbGliYXZyZXNhbXBsZTQgYi9zcmNwa2dzL2xpYmF2cmVzYW1wbGU0Cm5ldyBmaWxlIG1v ZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9saWJhdnJlc2FtcGxlNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdnV0aWw0IGIv c3JjcGtncy9saWJhdnV0aWw0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAw MC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdnV0aWw0CkBA IC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xpYnBvc3Rwcm9jNCBiL3NyY3BrZ3MvbGlicG9zdHByb2M0Cm5ldyBmaWxl IG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9saWJwb3N0cHJvYzQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlic3dyZXNhbXBs ZTQgYi9zcmNwa2dzL2xpYnN3cmVzYW1wbGU0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAw MDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJz d3Jlc2FtcGxlNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJzd3NjYWxlNCBiL3NyY3BrZ3MvbGlic3dzY2Fs ZTQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmIK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYnN3c2NhbGU0CkBAIC0wLDAgKzEgQEAKK2Zm bXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpGcm9tIGIwMzM4OTIyOTk4NzYyMzZl NzI2MjIzMDAxYTFhNjNhNjEyYjY3YjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6MDQg LTA0MDAKU3ViamVjdDogW1BBVENIIDAwMy8xMTVdIG9wZW5jdjogdXBkYXRlIHRvIDQuNy4wLgoK LS0tCiBjb21tb24vc2hsaWJzICAgICAgICAgICB8IDEwNCArKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tCiBzcmNwa2dzL29wZW5jdi90ZW1wbGF0ZSB8ICAgOCArKy0tCiAy IGZpbGVzIGNoYW5nZWQsIDU2IGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDg0ZWEwMGViOWZjMS4u ZDRkZDA0YTZhYjNiIDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxp YnMKQEAgLTIxNDEsNTggKzIxNDEsNTggQEAgbGliY2Fwc3RvbmUuc28uNCBjYXBzdG9uZS00LjBf 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 dGVtcGxhdGUKaW5kZXggNjljNjM1YjFhZDJiLi40MWYzMTgzZjE1ODIgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3Mvb3BlbmN2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3BlbmN2L3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbmN2JwogcGtnbmFtZT1vcGVuY3YK LXZlcnNpb249NC42LjAKLXJldmlzaW9uPTQKK3ZlcnNpb249NC43LjAKK3JldmlzaW9uPTEKIGNy ZWF0ZV93cmtzcmM9eWVzCiBidWlsZF93cmtzcmM9JHtwa2duYW1lfS0ke3ZlcnNpb259CiBidWls ZF9zdHlsZT1jbWFrZQpAQCAtMjQsOCArMjQsOCBAQCBob21lcGFnZT0iaHR0cHM6Ly9vcGVuY3Yu b3JnIgogY2hhbmdlbG9nPSJodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi93aWtpL0No YW5nZUxvZyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3YvYXJj aGl2ZS8ke3ZlcnNpb259LnRhci5negogIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2 X2NvbnRyaWIvYXJjaGl2ZS8ke3ZlcnNpb259LnRhci5nej5jb250cmliLnRhci5neiIKLWNoZWNr c3VtPSIxZWMxY2JhNjVmOWYyMGZlNWE0MWZkYTE1ODZlMDFjNzBlYTBjOWE2ZDdiNjdjOWUxM2Vk ZjBjZmUyMjM5Mjc3Ci0gMTc3N2Q1ZmQyYjU5MDI5Y2Y1MzdlNWZkNmY4YWE2OGQ3MDcwNzU4MjJm OTBiZGU2ODNmY2RlMDg2Zjg1ZjdhNyIKK2NoZWNrc3VtPSI4ZGYwMDc5Y2RiZTE3OTc0OGExOGQ0 NDczMWFmNjJhMjQ1YTQ1ZWJmNTA4NTIyM2RjMDMxMzM5NTRjNjYyOTczCisgNDJkZjg0MGNmOTA1 NWU1OWQwZTIyYzI0OWNmYjE5ZjA0NzQzZTFiZGFkMTEzZDMxYjE1NzNkMzkzNGQ2MjU4NCIKIHBh dGNoX2FyZ3M9Ii1OcDEgLWQgJHtidWlsZF93cmtzcmN9IgogIyB0ZXN0cyBoYW5nIGluZGVuZmlu aXRlbHksIGV2ZW4gd2l0aCB0ZXN0IGRhdGEgaW5jbHVkZWQKIG1ha2VfY2hlY2s9bm8KCkZyb20g MmY5NTc3MTk4MzJmMTc4ZmM2NTMzNDA2NDIzMTZiNDlhOTEwOWQ0OSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAxOTo1OTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA0LzExNV0gYWN0aW9uYTog cmV2YnVtcCBmb3Igb3BlbmN2LTQuNy4wCgotLS0KIHNyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvYWN0aW9uYS90ZW1w bGF0ZQppbmRleCBjZjVmMGI3YTJhZTYuLjBkODk5MzExZTZkZiAxMDA2NDQKLS0tIGEvc3JjcGtn cy9hY3Rpb25hL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2FjdGlvbmEnCiBwa2duYW1lPWFjdGlvbmEK IHZlcnNpb249My4xMC4xCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1xbWFr ZQogY29uZmlndXJlX2FyZ3M9IlBLR0NPTkZJR19PUEVOQ1Y9b3BlbmN2NCIKIGhvc3RtYWtlZGVw ZW5kcz0icGtnLWNvbmZpZyBxdDUtcGx1Z2luLW15c3FsIHF0NS1xbWFrZSBxdDUtaG9zdC10b29s cyIKCkZyb20gYmIzYmQ1ZjA1YTczZDcyMTEyMGNlMGY4ZTg0MzQyNWZkZTQ2YWE3NSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA1LzExNV0g cWltZ3Y6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL3FpbWd2L3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcWltZ3YvdGVt cGxhdGUKaW5kZXggN2ViMzBkYjMzOTkyLi5kZDM0MWRmZTFiZmMgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvcWltZ3YvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3FpbWd2JwogcGtnbmFtZT1xaW1ndgogdmVyc2lv bj0xLjAuMgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZp Z3VyZV9hcmdzPSIkKHZvcHRfaWYgdmlkZW8gLURWSURFT19TVVBQT1JUPU9OIC1EVklERU9fU1VQ UE9SVD1PRkYpCiAgJCh2b3B0X2lmIHNjYWxlIC1ET1BFTkNWX1NVUFBPUlQ9T04gLURPUEVOQ1Zf U1VQUE9SVD1PRkYpCgpGcm9tIGEwODUyMjE0NjgzOTVhOTliMzMyZjFlOTYyZTgwZjlkMmQxNzY1 NWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENI IDAwNi8xMTVdIHJldHJvc2hhcmU6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNw a2dzL3JldHJvc2hhcmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JldHJvc2hhcmUvdGVt cGxhdGUgYi9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKaW5kZXggOGEwNzg2YzIxYTA4Li43 MjAyM2ZhOThiNzUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmV0cm9zaGFyZS90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdyZXRyb3NoYXJlJwogcGtnbmFtZT1yZXRyb3NoYXJlCiB2ZXJzaW9uPTAuNi42 Ci1yZXZpc2lvbj0yCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1xbWFrZQogI1hYWCBicm9hZGNh c3QgZmVhdHVyZSByZXF1aXJlcyBhbiBhbmNpZW50IHVkcC1kaXNjb3ZlcnktY3BwIHdoaWNoIGVp dGhlciBuZWVkcwogIyB0byBiZSBmZXRjaGVkK3BhdGNoZWQgKEZUQkZTKSBoZXJlIG9yIHBhY2th Z2VkIDovCgpGcm9tIDJlNDVkZGQzMDFhNDU3OTAxZWJlYmViODE4OGIxNGQ5YzQ3YTQ1YTYgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNy8x MTVdIHdhaWZ1MngtY29udmVydGVyLWNwcDogcmV2YnVtcCBmb3Igb3BlbmN2LTQuNy4wCgotLS0K IHNyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUgYi9zcmNwa2dzL3dhaWZ1MngtY29udmVy dGVyLWNwcC90ZW1wbGF0ZQppbmRleCA4YzA5NWQwZDdiYWIuLmFhNTJkOGM5ODFhOCAxMDA2NDQK LS0tIGEvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICd3YWlmdTJ4LWNvbnZlcnRlci1jcHAnCiBwa2duYW1lPXdhaWZ1MngtY29u dmVydGVyLWNwcAogdmVyc2lvbj01LjIuNAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRf c3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRElOU1RBTExfTU9ERUxTPU9OIgogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSAwMTExZjBiZDZlNDIyZDViNWU4NzE4MmY2NWY5 NTM1NjA4NGVmMzIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAwOjM4IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMDgvMTE1XSB2bGM6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQog c3JjcGtncy92bGMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZsYy90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvdmxjL3RlbXBsYXRlCmluZGV4IDY1MWM5NGExMzUzYS4uODU1Y2E1MjM4NjYyIDEwMDY0 NAotLS0gYS9zcmNwa2dzL3ZsYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3ZsYy90ZW1wbGF0ZQpA QCAtMjUsNyArMjUsNyBAQCBsaWIzMmRpc2FibGVkPXllcwogaG9zdG1ha2VkZXBlbmRzPSJhdXRv bWFrZSBsaWJ0b29sIHBrZy1jb25maWcgZmxleCBnZXR0ZXh0IGxpYmdjcnlwdC1kZXZlbAogIGxp dmU1NTUtZGV2ZWwgZ2V0dGV4dC1kZXZlbCAkKHZvcHRfaWYgbHVhIGx1YTUyKSAkKHZvcHRfaWYg Y2hyb21lY2FzdCBwcm90b2J1ZikiCiBtYWtlZGVwZW5kcz0iCi0gYXZhaGktbGlicy1kZXZlbCBk YnVzLWdsaWItZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWVmb250LXR0ZgorIGF2 YWhpLWxpYnMtZGV2ZWwgZGJ1cy1nbGliLWRldmVsIGZhYWQyLWRldmVsIGZmbXBlZzQtZGV2ZWwg ZnJlZWZvbnQtdHRmCiAgZ251dGxzLWRldmVsIGphY2stZGV2ZWwgbGliYTUyLWRldmVsIGxpYmFz cy1kZXZlbCBsaWJibHVyYXktZGV2ZWwKICBsaWJjZGlvLWRldmVsIGxpYmRjYS1kZXZlbCBsaWJk dmJwc2ktZGV2ZWwgbGliZHZkbmF2LWRldmVsIGxpYm1hZC1kZXZlbAogIGxpYm1hdHJvc2thLWRl dmVsIGxpYm1vZHBsdWctZGV2ZWwgbGlibXBjZGVjLWRldmVsIGxpYm1wZWcyLWRldmVsCgpGcm9t IGU5MWM3NzQ3Njk0MGY0NGE4OWY4NWIwMWZkYzQ4YzI0ZTcxMWFlMmQgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDA6NTUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwOS8xMTVdIG9zZzogcmV2 YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL29zZy90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlIGIvc3JjcGtncy9vc2cvdGVtcGxhdGUKaW5kZXggYTll YmJkMjg3OTMzLi43NTU3OTNmN2UxMWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3NnL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlCkBAIC04LDcgKzgsNyBAQCBidWlsZF9oZWxwZXI9 InFlbXUiCiBjb25maWd1cmVfYXJncz0iLURMSUJfUE9TVEZJWD0iCiBob3N0bWFrZWRlcGVuZHM9 InBrZy1jb25maWcgeHJhbmRyIgogbWFrZWRlcGVuZHM9Ik1lc2FMaWItZGV2ZWwgZ3RrZ2xleHQt ZGV2ZWwgbGliY3VybC1kZXZlbCBnaWZsaWItZGV2ZWwgbGlicnN2Zy1kZXZlbAotIGphc3Blci1k ZXZlbCB0aWZmLWRldmVsIGxpYmdkYWwtZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBlZy1kZXZlbCB4 aW5lLWxpYi1kZXZlbAorIGphc3Blci1kZXZlbCB0aWZmLWRldmVsIGxpYmdkYWwtZGV2ZWwgbGli Z3RhLWRldmVsIGZmbXBlZzQtZGV2ZWwgeGluZS1saWItZGV2ZWwKICBTREwyLWRldmVsIGdzdC1w bHVnaW5zLWJhc2UxLWRldmVsCiAgJCh2b3B0X2lmIG9wZW5leHIgbGlib3BlbmV4ci1kZXZlbCkK ICAkKHZvcHRfaWYgcG9wcGxlciBwb3BwbGVyLWdsaWItZGV2ZWwpCgpGcm9tIDY1ZmZlMWMyNTcx ZWM4MTUzM2M3NGNhN2Y5M2VhOWUwMWIxMjU0ZmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6MTMgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMC8xMTVdIHhpbmUtbGliOiByZXZidW1wIGZv ciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MveGluZS1saWIvdGVtcGxhdGUgfCA2ICsrKy0t LQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3hpbmUtbGliL3RlbXBsYXRlIGIvc3JjcGtncy94aW5lLWxpYi90ZW1w bGF0ZQppbmRleCBmNzEzZWZmNDliMDcuLmVkNjE5NGMxN2QxMSAxMDA2NDQKLS0tIGEvc3JjcGtn cy94aW5lLWxpYi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3hpbmUtbGliL3RlbXBsYXRlCkBAIC0x LDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAneGluZS1saWInCiBwa2duYW1lPXhpbmUt bGliCi12ZXJzaW9uPTEuMi4xMgordmVyc2lvbj0xLjIuMTMKIHJldmlzaW9uPTEKIGJ1aWxkX3N0 eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtdmNkIC0tZGlzYWJs ZS1nbm9tZXZmcyAtLXdpdGhvdXQtZXNvdW5kIC0tZGlzYWJsZS1keHIzCkBAIC04LDcgKzgsNyBA QCBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLXZjZCAtLWRpc2FibGUtZ25vbWV2ZnMgLS13aXRo b3V0LWVzb3VuZCAtLWRpc2FibGUtZHhyMwogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBnZXR0 ZXh0LWRldmVsIGxpYnRvb2wgcGtnLWNvbmZpZyBwZXJsIgogbWFrZWRlcGVuZHM9IgogIHpsaWIt ZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGlieGNiLWRldmVsIGxpYlNNLWRldmVsIGxpYlhleHQtZGV2 ZWwgbGliWHYtZGV2ZWwKLSBsaWJYdk1DLWRldmVsIGxpYmE1Mi1kZXZlbCBsaWJtYWQtZGV2ZWwg ZmZtcGVnLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKKyBsaWJYdk1DLWRldmVsIGxpYmE1Mi1kZXZl bCBsaWJtYWQtZGV2ZWwgZmZtcGVnNC1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCiAgamFjay1kZXZl bCBzYW1iYS1kZXZlbCBsaWJmbGFjLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgbGlibXBjZGVjLWRl dmVsCiAgc3BlZXgtZGV2ZWwgbGlidGhlb3JhLWRldmVsIGxpYnZvcmJpcy1kZXZlbCBsaWJkY2Et ZGV2ZWwgZmFhZDItZGV2ZWwKICBsaWJjZGlvLWRldmVsIGxpYmJsdXJheS1kZXZlbCBhYWxpYi1k ZXZlbCBsaWJjYWNhLWRldmVsIGxpYlhpbmVyYW1hLWRldmVsCkBAIC0xOSw3ICsxOSw3IEBAIGxp Y2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIsIExHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0 dHA6Ly93d3cueGluZS1wcm9qZWN0Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9zb3VyY2Vmb3Jn ZS5uZXQvcHJvamVjdHMveGluZS9maWxlcy94aW5lLWxpYi8ke3ZlcnNpb259L1JFQURNRS50eHQv dmlldyIKIGRpc3RmaWxlcz0iJHtTT1VSQ0VGT1JHRV9TSVRFfS94aW5lLyR7cGtnbmFtZX0tJHt2 ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT1kNjA2MjcwNDY4ZTE1NDBjMmE4OWMwZDdmNWZkZjEx ZTE3ZWNjMGMyNjk4Y2MwYmNiMTA2NWZmMjZhYmVlMDk4CitjaGVja3N1bT01ZjEwZDZkNzE4YTRh NTFjMTdlZDFiMzJiMDMxZDRmOWI4MGIwNjFlODI3NjUzNWIyYmUzMWU1YWM0Yjc1ZTZmCiAKIGNh c2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgogCWk2ODYtbXVzbCkKCkZyb20gZjBmNTM0MzA4 N2I2MjkxMDhjMjljNDY3YTc4YTQzNTgyNTk3OGM0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDExLzExNV0gUU1QbGF5MjogcmV2YnVtcCBm b3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgYi9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUKaW5kZXgg ODUwZGY5ZDQxOGI5Li44ZDJjZTdhNzYxNTYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvUU1QbGF5Mi90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdRTVBsYXkyJwogcGtnbmFtZT1RTVBsYXkyCiB2ZXJzaW9uPTIz LjA2LjE3Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKIG1ha2VkZXBl bmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWctZGV2ZWwgbGliYXNzLWRldmVsIGxpYmNkaW8tZGV2 ZWwgbGliZ21lLWRldmVsCgpGcm9tIGQyN2Q1NWZhYjU0ODVlZGFhYmRkM2RhNjAzNjZhM2EwNzc4 NGQzYzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BB VENIIDAxMi8xMTVdIGFsc2EtcGx1Z2luczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYWxzYS1wbHVn aW5zL3RlbXBsYXRlIGIvc3JjcGtncy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUKaW5kZXggMGJmYTZk OWZkMjY0Li5hNTcwOGE3ZDgyYTggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYWxzYS1wbHVnaW5zJwogcGtnbmFtZT1hbHNhLXBsdWdp bnMKIHZlcnNpb249MS4yLjcuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCiBo b3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIGUyZTljNTk3NTY0ODdjN2FlZmE0ZmE0 MWQxNTAyMDA5NGM2OWRiM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAK U3ViamVjdDogW1BBVENIIDAxMy8xMTVdIGFyY2FuOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3MvYXJjYW4vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2FyY2FuL3RlbXBs YXRlIGIvc3JjcGtncy9hcmNhbi90ZW1wbGF0ZQppbmRleCA3YmU5NjUyZWNjZjMuLmNjYzdkZjEx Y2VhYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9hcmNhbi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Fy Y2FuL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogIyAhISBrZWVwIHN5bmNlZCB3aXRoOiBhY2Zn ZnMgYWNsaXAgYWxvYWRpbWFnZQogcGtnbmFtZT1hcmNhbgogdmVyc2lvbj0wLjYuMi4xCi1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jrc3JjPWFyY2Fu L3NyYwogYnVpbGRfc3R5bGU9Y21ha2UKCkZyb20gOTc2MjViMjdjNmYzZDBiYWU4NjQ5MjhiZjJi YTJmYTdhYTZjMDdmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDE0LzExNV0gYXR0cmFjdDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoK LS0tCiBzcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAy IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdHRy YWN0L3RlbXBsYXRlIGIvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlCmluZGV4IDI2MTQ0ZTkzMWEz Yy4uZTc2MGJmMGQxOGFlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlCkBAIC0xLDEyICsxLDEyIEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdhdHRyYWN0JwogcGtnbmFtZT1hdHRyYWN0CiB2ZXJzaW9uPTIuNi4yCi1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1ha2VfYnVpbGRf YXJncz0iVkVSQk9TRT0xIgogbWFrZV91c2VfZW52PXllcwogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIgotbWFrZWRlcGVuZHM9IlNGTUwtZGV2ZWwgZmZtcGVnLWRldmVsIGZvbnRjb25maWct ZGV2ZWwgZ2x1LWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwKK21ha2VkZXBlbmRzPSJTRk1MLWRldmVs IGZmbXBlZzQtZGV2ZWwgZm9udGNvbmZpZy1kZXZlbCBnbHUtZGV2ZWwgbGliYXJjaGl2ZS1kZXZl bAogIGxpYmN1cmwtZGV2ZWwgbGlianBlZy10dXJiby1kZXZlbCB4aW5lLWxpYiByYXBpZGpzb24g bGliWHJhbmRyLWRldmVsIgogZGVwZW5kcz0iZ2l0Igogc2hvcnRfZGVzYz0iQXR0cmFjdC1Nb2Rl IGlzIGEgZ3JhcGhpY2FsIGZyb250ZW5kIGZvciBlbXVsYXRvcnMiCgpGcm9tIDRkZGM0OWY1YzE3 MzhiYmY1MTNhMDljNWQ3NjNjYTA3YWU3ZjAwZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNS8xMTVdIGF1YmlvOiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYXViaW8vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgMjUg KysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9hdWJpby90ZW1wbGF0ZSAgICAgICAg ICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9hdWJpby9wYXRjaGVzL2ZmbXBlZzUu cGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1YmlvL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBi L3NyY3BrZ3MvYXViaW8vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uYWFjZTQxYTZlNmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9hdWJpby9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSA4 YTA1NDIwZTVkZDhjN2I4YjI0NDdmODJkYzkxOTc2NTg3NjUxMWIzIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQorRnJvbTogUGF1bCBCcm9zc2llciA8cGllbUBwaWVtLm9yZz4KK0RhdGU6IFR1ZSwg MjUgSmFuIDIwMjIgMTg6MzA6MjcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW3NvdXJjZV9hdmNv ZGVjXSBkZWZpbmUgRkZfQVBJX0xBVkZfQVZDVFggZm9yIGxpYmF2Y29kZWMgPgorIDU5LCB0aHgg QGJlcm9saW51eCAoY2xvc2VzIGdoLTM1MykKKworLS0tCisgc3JjL2lvL3NvdXJjZV9hdmNvZGVj LmMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1n aXQgYS9zcmMvaW8vc291cmNlX2F2Y29kZWMuYyBiL3NyYy9pby9zb3VyY2VfYXZjb2RlYy5jCitp bmRleCBlMGFlOTNiNS4uMTQyMWJkOWEgMTAwNjQ0CistLS0gYS9zcmMvaW8vc291cmNlX2F2Y29k ZWMuYworKysrIGIvc3JjL2lvL3NvdXJjZV9hdmNvZGVjLmMKK0BAIC02OCw2ICs2OCwxMCBAQAor ICNkZWZpbmUgQVVCSU9fQVZDT0RFQ19NQVhfQlVGRkVSX1NJWkUgQVZfSU5QVVRfQlVGRkVSX01J Tl9TSVpFCisgI2VuZGlmCisgCisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA+PSA1OQor KyNkZWZpbmUgRkZfQVBJX0xBVkZfQVZDVFggMQorKyNlbmRpZgorKworIHN0cnVjdCBfYXViaW9f c291cmNlX2F2Y29kZWNfdCB7CisgICB1aW50X3QgaG9wX3NpemU7CisgICB1aW50X3Qgc2FtcGxl cmF0ZTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXViaW8vdGVtcGxhdGUgYi9zcmNwa2dzL2F1Ymlv L3RlbXBsYXRlCmluZGV4IGFkMWM0YjI1Njk5MS4uN2Q4NzVjYzAyNTQxIDEwMDY0NAotLS0gYS9z cmNwa2dzL2F1YmlvL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYXViaW8vdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhdWJpbycKIHBrZ25hbWU9YXViaW8KIHZl cnNpb249MC40LjkKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXdhZjMKICMg WFhYIGxhc2gsIHB1cmUgYW5kIHN3aWcgc3VwcG9ydC4KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNv bmZpZyB0eHQybWFuIgoKRnJvbSA1ZWUyNTUyOTNkODc0NjZmYjc5OGU2ZGJhNWJkZjE0MmY3Yjdi YWIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwMTYvMTE1XSBhdWRhY2lvdXMtcGx1Z2luczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiAuLi4vYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoICAgfCA0MyArKysr KysrKysrKysrKysrKysrCiBzcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlICAgICAg ICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRj aGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5z L3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hl cy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u NGU1ZTM0MDk5ZDcxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lu cy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorY29tbWl0IDI5OGFhMzcx YzU2YzJmNTJjMjVhMzNkOWJkZWM0OTE4YjExY2ViZGMKK0F1dGhvcjogdGliZXF1YWRvcmlhbiA8 dGliZXF1YWRvcmlhbkBwb3N0ZW8uZGU+CitEYXRlOiAgIFNhdCBNYXIgMTkgMTg6NDA6MTIgMjAy MiArMDEwMAorCisgICAgYXVkYWNpb3VzLXBsdWdpbnM6IHJlYnVpbGQgYWdhaW5zdCBmZm1wZWct NS4wCisKK2RpZmYgLS1naXQgYS9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZt cGVnLTUuMC5wYXRjaCBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWct NS4wLnBhdGNoCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNjE3YzEx MjE1YgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRj aGVzL2ZmbXBlZy01LjAucGF0Y2gKK0BAIC0wLDAgKzEsMzEgQEAKKytGcm9tIGY2MGJlYjQwMGVl YjFlNDc3OGJiZmQ3MzhiYzRhNGNjZWYzZGU1MzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCisr RnJvbTogSm9obiBMaW5kZ3JlbiA8am9obkBqbGluZGdyZW4ubmV0PgorK0RhdGU6IFNhdCwgNSBN YXIgMjAyMiAxMjowNTozNCAtMDUwMAorK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGgg RkZtcGVnIDUuMAorKworKy0tLQorKyBzcmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUuY2MgfCA0ICsr LS0KKysgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKysK KytkaWZmIC0tZ2l0IGEvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjIGIvc3JjL2ZmYXVkaW8v ZmZhdWRpby1jb3JlLmNjCisraW5kZXggMTZkYzYzZTNhLi5hMmI5NWZkNmMgMTAwNjQ0CisrLS0t IGEvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisrKysrIGIvc3JjL2ZmYXVkaW8vZmZhdWRp by1jb3JlLmNjCisrQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMgQVZJbnB1dEZvcm1hdCAqIGdl dF9mb3JtYXRfYnlfY29udGVudCAoY29uc3QgY2hhciAqIG5hbWUsIFZGU0ZpbGUgJiBmaWxlKQor KyAgICAgICAgIEFWUHJvYmVEYXRhIGQgPSB7bmFtZSwgYnVmLCBmaWxsZWR9OworKyAgICAgICAg IHNjb3JlID0gdGFyZ2V0OworKyAKKystICAgICAgICBmID0gYXZfcHJvYmVfaW5wdXRfZm9ybWF0 MiAoJiBkLCB0cnVlLCAmIHNjb3JlKTsKKysrICAgICAgICBmID0gKEFWSW5wdXRGb3JtYXQgKikg YXZfcHJvYmVfaW5wdXRfZm9ybWF0MiAoJiBkLCB0cnVlLCAmIHNjb3JlKTsKKysgICAgICAgICBp ZiAoZikKKysgICAgICAgICAgICAgYnJlYWs7CisrIAorK0BAIC0zNDcsNyArMzQ3LDcgQEAgc3Rh dGljIGJvb2wgZmluZF9jb2RlYyAoQVZGb3JtYXRDb250ZXh0ICogYywgQ29kZWNJbmZvICogY2lu Zm8pCisrICNlbmRpZgorKyAgICAgICAgIGlmIChzdHJlYW0gJiYgc3RyZWFtLT5jb2RlY3BhciAm JiBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTykKKysg ICAgICAgICB7CisrLSAgICAgICAgICAgIEFWQ29kZWMgKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9k ZWNvZGVyIChzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrKyAgICAgICAgICAgIEFWQ29k ZWMgKiBjb2RlYyA9IChBVkNvZGVjICopIGF2Y29kZWNfZmluZF9kZWNvZGVyIChzdHJlYW0tPmNv ZGVjcGFyLT5jb2RlY19pZCk7CisrIAorKyAgICAgICAgICAgICBpZiAoY29kZWMpCisrICAgICAg ICAgICAgIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUg Yi9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlCmluZGV4IDg4Y2JjMTY3MWZjNi4u YmVlYmZhZTU5ZWQ0IDEwMDY0NAotLS0gYS9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUKQEAgLTIsNyArMiw3 IEBACiAjS2VlcCBpbiBzeW5jIHdpdGggYXVkYWNpb3VzIQogcGtnbmFtZT1hdWRhY2lvdXMtcGx1 Z2lucwogdmVyc2lvbj00LjMuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSIkKHZvcHRfYm9vbCBndGszIGd0aykgJCh2b3B0X2Jvb2wg Z3RrMykKICAkKHZvcHRfYm9vbCBxdCkgJCh2b3B0X2Jvb2wgcXQgcXQ2KSIKCkZyb20gNmYwNWM4 OTI4MzExYWNkYTBmZmYxZDlkMjAxMjQ2ODYwYzUzYTk1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE3LzExNV0gYXVkYWNpdHk6IHJldmJ1 bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZSB8IDUg KystLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXVkYWNpdHkv dGVtcGxhdGUKaW5kZXggZDUwOWMwYTg5NDA3Li4xMWUyMDI1NTY4NWIgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F1ZGFjaXR5JwogcGtnbmFtZT1h dWRhY2l0eQogdmVyc2lvbj0yLjQuMQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5 bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0td2l0aC1mZm1wZWc9c3lzdGVtIC0t d2l0aC1saWJzbmRmaWxlPXN5c3RlbSAtLXdpdGgtZXhwYXQ9c3lzdGVtCiAgLS13aXRoLWxpYnNv eHI9c3lzdGVtIC0td2l0aC1sYW1lPXN5c3RlbSAtLXdpdGgtbHYyPXN5c3RlbSBhY19jdl9wYXRo X1dYX0NPTkZJRz13eC1jb25maWctZ3RrMyIKQEAgLTksNyArOSw3IEBAIGhvc3RtYWtlZGVwZW5k cz0icGtnLWNvbmZpZyBjbWFrZSBnZXR0ZXh0IGxpYnRvb2wgbTQgd2hpY2giCiBtYWtlZGVwZW5k cz0iamFjay1kZXZlbCB3eFdpZGdldHMtZ3RrMy1kZXZlbCBndGsrMy1kZXZlbAogIGxpYm1hZC1k ZXZlbCBzb3VuZHRvdWNoLWRldmVsIGxpYnNveHItZGV2ZWwKICB2YW1wLXBsdWdpbi1zZGstZGV2 ZWwgbGFtZS1kZXZlbCBsaWJpZDN0YWctZGV2ZWwgbGliZmxhYy1kZXZlbAotIGZmbXBlZy1kZXZl bCB0d29sYW1lLWRldmVsIHNlcmQtZGV2ZWwgbHYyIGxpbHYtZGV2ZWwgc3VpbC1kZXZlbCIKKyBm Zm1wZWc0LWRldmVsIHR3b2xhbWUtZGV2ZWwgc2VyZC1kZXZlbCBsdjIgbGlsdi1kZXZlbCBzdWls LWRldmVsIgogZGVwZW5kcz0iZGVza3RvcC1maWxlLXV0aWxzIGhpY29sb3ItaWNvbi10aGVtZSIK IHNob3J0X2Rlc2M9IkdyYXBoaWNhbCBjcm9zcy1wbGF0Zm9ybSBhdWRpbyBlZGl0b3IiCiBtYWlu dGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgpAQCAtMzMsNSArMzMsNCBA QCBwb3N0X2luc3RhbGwoKSB7CiAJdmNvcHkgcGx1Zy1pbnMgL3Vzci9zaGFyZS9hdWRhY2l0eQog CiAJcm0gJHtERVNURElSfS91c3Ivc2hhcmUvZG9jL2F1ZGFjaXR5L0xJQ0VOU0UudHh0Ci0Jdmxp Y2Vuc2UgTElDRU5TRS50eHQgTElDRU5TRQogfQoKRnJvbSA3ZjE3NWJkMTM0ZTFlM2JiZThlNjA2 M2U3ZjEzODdlYjEyYzViMTM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMTgvMTE1XSBhdmlkZW11eDogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL2F2aWRlbXV4L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdmlk ZW11eC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUKaW5kZXggMjUzYTAyNDNl MjI1Li41NTcyODU5ODJkMmIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ2F2aWRlbXV4JwogcGtnbmFtZT1hdmlkZW11eAogdmVyc2lvbj0yLjguMAot cmV2aXNpb249MgorcmV2aXNpb249MwogIyBDYW4ndCBiZSBjb21waWxlZCBmb3IgYWFyY2g2NCwg YXJtKiBvciBtaXBzKgogYXJjaHM9Ing4Nl82NCogaTY4NioiCiBob3N0bWFrZWRlcGVuZHM9ImNt YWtlIHBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LWRldmVsIHRhciB5YXNtIgoKRnJvbSA1 MjdlOTJlYTA2OGZkMWNkM2FhYzEyODkxY2FiYWMyNDE1ODE5ZmViIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTkvMTE1XSBiYXJlc2lwOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0 ZQppbmRleCBmMWJkMTgxNzA0OGIuLmIyMWUyMjMzNDMxNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9i YXJlc2lwL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2JhcmVzaXAnCiBwa2duYW1lPWJhcmVzaXAKIHZl cnNpb249Mi4xMC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQog aG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGdsaWItZGV2ZWwiCiBtYWtlZGVwZW5kcz0ibGli Z3NtLWRldmVsIGxpYnBuZy1kZXZlbCBvcGVuc3NsLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwKCkZy b20gNWY3ZjBhNGYxZWZmOTQ1MzA1ZGJlOGYxMmQ5MWVmMmJjMWZhMGZiZSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDIwLzExNV0gYmxlbmRl cjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUg fCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2JsZW5k ZXIvdGVtcGxhdGUKaW5kZXggNmJhOWY2NjE4ZDcyLi4wNjMwZGJlN2ZmNDIgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvYmxlbmRlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdibGVuZGVyJwogcGtnbmFtZT1i bGVuZGVyCiB2ZXJzaW9uPTMuNi4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0ieDg2 XzY0KiBwcGM2NCoiCiBidWlsZF9zdHlsZT0iY21ha2UiCiBweWNvbXBpbGVfZGlycz0iL3Vzci9z aGFyZS9ibGVuZGVyLyR7dmVyc2lvbiUuKn0vc2NyaXB0cyIKQEAgLTksOCArOSw4IEBAIGNvbmZp Z3VyZV9hcmdzPSItRFdJVEhfSU5TVEFMTF9QT1JUQUJMRT1PRkYgLURXSVRIX1BZVEhPTl9JTlNU QUxMPU9GRgogIC1EV0lUSF9KQUNLPU9OIC1EV0lUSF9DT0RFQ19GRk1QRUc9T04gLURXSVRIX0NP REVDX1NOREZJTEU9T04gLURXSVRIX09QRU5NUD1PTgogIC1EV0lUSF9GRlRXMz1PTiAtRFdJVEhf TU9EX09DRUFOU0lNPU9OIC1EV0lUSF9DWUNMRVNfRU1CUkVFPU9GRiAtRFdJVEhfT1BFTkNPTE9S SU89T04KICAtRFdJVEhfSU1BR0VfT1BFTkVYUj1PTiAtRFdJVEhfSU1BR0VfT1BFTkpQRUc9T04g LURXSVRIX09QRU5TVUJESVY9T04KLSAtRFdJVEhfT1BFTkNPTExBREE9T04gLURXSVRIX1NZU1RF TV9HTEVXPU9OIC1EV0lUSF9PUEVOVkRCPU9OIC1EV0lUSF9BTEVNQklDPU9OCi0gLURXSVRIX0dI T1NUX1gxMT1PTiAtRFdJVEhfR0hPU1RfV0FZTEFORD1PTiAtRFdJVEhfR0hPU1RfTElCREVDT1I9 T04KKyAtRFdJVEhfT1BFTkNPTExBREE9T04gLURXSVRIX09QRU5WREI9T04gLURXSVRIX0FMRU1C SUM9T04KKyAtRFdJVEhfR0hPU1RfWDExPU9OIC1EV0lUSF9HSE9TVF9XQVlMQU5EPU9OIC1EV0lU SF9HSE9TVF9XQVlMQU5EX0xJQkRFQ09SPU9OCiAgLURXSVRIX0JVSUxESU5GTz1PRkYgLURQWVRI T05fVkVSU0lPTj0ke3B5M192ZXJ9IC1EUFlUSE9OX0xJQlBBVEg9L3Vzci9saWIKICAtRFBZVEhP Tl9MSUJSQVJZPXB5dGhvbiR7cHkzX3Zlcn0ke3B5M19hYml2ZXJ9IC1EUFlUSE9OX0lOQ0xVREVf RElSUz0vJHtweTNfaW5jfQogIC1EV0lUSF9TWVNURU1fTFpPPU9OIC1EV0lUSF9TWVNURU1fRUlH RU4zPU9OIC1EV0lUSF9TWVNURU1fRlJFRVRZUEU9T04iCgpGcm9tIDlmNDA0YTNhNjc1OGYzOTJh Nzk2NGU1NjgwMmIxNmJmZjViOGRiZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYg LTA0MDAKU3ViamVjdDogW1BBVENIIDAyMS8xMTVdIGNhbnRhdGE6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9j YW50YXRhL3RlbXBsYXRlIGIvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlCmluZGV4IDRiNDE3ZDgw ZDVjMi4uOGE5MGFhYTRjMDdhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2NhbnRhdGEvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnY2FudGF0YScKIHBrZ25hbWU9Y2FudGF0YQogdmVyc2lvbj0yLjUuMAotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0i cGtnLWNvbmZpZyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMgcXQ1LXRvb2xzIgogbWFrZWRlcGVu ZHM9InF0NS1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBxdDUteG1scGF0dGVy bnMtZGV2ZWwKCkZyb20gYTJjZmMyMzliZDdlZmQ2NGZhZjMzOTJiYWYwZDYyNzY3NmM1MmI0NyBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDIy LzExNV0gY2NleHRyYWN0b3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtn cy9jY2V4dHJhY3Rvci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NjZXh0cmFjdG9y L3RlbXBsYXRlIGIvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZQppbmRleCA5YWJjZDgyODUy YjIuLjZlY2NhZDU4ODVhZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2NjZXh0cmFjdG9yL3RlbXBsYXRlCkBAIC0xLDEyICsxLDEyIEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdjY2V4dHJhY3RvcicKIHBrZ25hbWU9Y2NleHRyYWN0b3IKIHZl cnNpb249MC45MwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfd3Jrc3JjPSJsaW51eCIK IGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1vY3Ig LS1lbmFibGUtaGFyZHN1YngiCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIHBrZy1jb25maWci Ci1tYWtlZGVwZW5kcz0ibGVwdG9uaWNhLWRldmVsIHRlc3NlcmFjdC1vY3ItZGV2ZWwgZmZtcGVn LWRldmVsIgorbWFrZWRlcGVuZHM9ImxlcHRvbmljYS1kZXZlbCB0ZXNzZXJhY3Qtb2NyLWRldmVs IGZmbXBlZzQtZGV2ZWwiCiBzaG9ydF9kZXNjPSJFeHRyYWN0IHN1YnRpdGxlcyBmcm9tIHZpZGVv IHN0cmVhbXMiCiBtYWludGFpbmVyPSJuZXdibHVlbW9vbiA8YmxhdW1vbGNoQG1haWxib3gub3Jn PiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCgpGcm9tIDNiZmIwMjg4YWQ0Njc0ZjdmZDZm ZGI1MTQyNDA0ZDhkZjg3MWU4ODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0 MDAKU3ViamVjdDogW1BBVENIIDAyMy8xMTVdIGNocm9tYXByaW50OiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwg NTY5ICsrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUg ICAgICAgICAgICAgIHwgICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDU3MCBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJvbWFwcmludC9w YXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9tYXByaW50L3Bh dGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTlmZDMwN2Ey M2M4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9jaHJvbWFwcmludC9wYXRjaGVzL2ZmbXBl ZzUucGF0Y2gKQEAgLTAsMCArMSw1NjkgQEAKK0Zyb20gOGNjYWQ2OTM3MTc3YjFiOTJlNDBhYjhm NDQ0N2VhMjdiYWMwMDlhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/ cT9MdWs9QzM9QTE9QzU9QTE9MjBMYWxpbnNrPUMzPUJEPz0gPGxhbGluc2t5QGdtYWlsLmNvbT4K K0RhdGU6IEZyaSwgNCBOb3YgMjAyMiAyMTo0NzozOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBV c2UgRkZtcGVnIDUueCAoIzEyMCkKKworKiBVc2UgRkZtcGVnIDUuMS4yIGZvciBDSSBidWlsZHMK KworKiBCdWlsZCBvbiBVYnVudHUgMjAuMDQKKworKiBVcGdyYWRlIGNvZGUgdG8gRkZtcGVnIDUu eCBBUElzCisKKyogT25seSBzZXQgRkZtcGVnIGluY2x1ZGUgZGlycyBpZiBidWlsZGluZyB0b29s cworCisqIE5vIGxvbmdlciBuZWVkZWQKKworKiBVc2UgdWJ1bnR1IDIwLjA0CistLS0KKyAuZ2l0 aHViL3dvcmtmbG93cy9idWlsZC55bWwgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KKyBDTWFr ZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYgLS0KKyBwYWNr YWdlL2J1aWxkLnNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KKyBzcmMv YXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oICAgICAgICAgICAgfCAgIDIgLQorIHNyYy9h dWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaCB8ICA3MiAtLS0tLS0tCisg c3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oIHwgIDE4ICstCisg c3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaCAgICAgICAgICAgICAgIHwgMTk3ICsrKysr KysrKy0tLS0tLS0tLQorIHRlc3RzL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNiArCisgOCBmaWxlcyBjaGFuZ2VkLCAxMjIgaW5zZXJ0aW9ucygrKSwgMTk5IGRl bGV0aW9ucygtKQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3By b2Nlc3Nvcl9hdnJlc2FtcGxlLmgKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01h a2VMaXN0cy50eHQKK2luZGV4IGY4ZDZhMzIuLjRkYTI0MDUgMTAwNjQ0CistLS0gYS9DTWFrZUxp c3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC04NCw5ICs4NCw2IEBAIGZpbmRfcGFj a2FnZShGRm1wZWcpCisgaWYoRkZNUEVHX0xJQlJBUklFUykKKyAJY21ha2VfcHVzaF9jaGVja19z dGF0ZShSRVNFVCkKKyAJc2V0KENNQUtFX1JFUVVJUkVEX0xJQlJBUklFUyAke0ZGTVBFR19MSUJS QVJJRVN9ICR7Q01BS0VfVEhSRUFEX0xJQlNfSU5JVH0gLWxtKQorLQljaGVja19mdW5jdGlvbl9l eGlzdHMoYXZfcGFja2V0X3VucmVmIEhBVkVfQVZfUEFDS0VUX1VOUkVGKQorLQljaGVja19mdW5j dGlvbl9leGlzdHMoYXZfZnJhbWVfYWxsb2MgSEFWRV9BVl9GUkFNRV9BTExPQykKKy0JY2hlY2tf ZnVuY3Rpb25fZXhpc3RzKGF2X2ZyYW1lX2ZyZWUgSEFWRV9BVl9GUkFNRV9GUkVFKQorIAljbWFr ZV9wb3BfY2hlY2tfc3RhdGUoKQorIGVuZGlmKCkKKworQEAgLTE2MywxNCArMTYwLDExIEBAIG1l c3NhZ2UoU1RBVFVTICJVc2luZyAke0ZGVF9MSUJ9IGZvciBGRlQgY2FsY3VsYXRpb25zIikKKyBp ZihOT1QgQVVESU9fUFJPQ0VTU09SX0xJQikKKyAJaWYoRkZNUEVHX0xJQlNXUkVTQU1QTEVfRk9V TkQpCisgCQlzZXQoQVVESU9fUFJPQ0VTU09SX0xJQiAic3dyZXNhbXBsZSIpCistCWVsc2VpZihG Rk1QRUdfTElCQVZSRVNBTVBMRV9GT1VORCkKKy0JCXNldChBVURJT19QUk9DRVNTT1JfTElCICJh dnJlc2FtcGxlIikKKyAJZW5kaWYoKQorIGVuZGlmKCkKKworIGlmKEFVRElPX1BST0NFU1NPUl9M SUIgU1RSRVFVQUwgInN3cmVzYW1wbGUiKQorIAlpZihGRk1QRUdfTElCU1dSRVNBTVBMRV9GT1VO RCkKKy0JCXNldChVU0VfQVZSRVNBTVBMRSBPRkYpCisgCQlzZXQoVVNFX1NXUkVTQU1QTEUgT04p CisgCQlzZXQoQVVESU9fUFJPQ0VTU09SX0xJQlJBUklFUyAke0ZGTVBFR19MSUJTV1JFU0FNUExF X0xJQlJBUklFU30pCisgCQlzZXQoQVVESU9fUFJPQ0VTU09SX0lOQ0xVREVfRElSUyAke0ZGTVBF R19MSUJTV1JFU0FNUExFX0lOQ0xVREVfRElSU30pCitAQCAtMTc4LDE2ICsxNzIsNiBAQCBpZihB VURJT19QUk9DRVNTT1JfTElCIFNUUkVRVUFMICJzd3Jlc2FtcGxlIikKKyAJCW1lc3NhZ2UoRkFU QUxfRVJST1IgIlNlbGVjdGVkICR7QVVESU9fUFJPQ0VTU09SX0xJQn0gZm9yIGF1ZGlvIHByb2Nl c3NpbmcsIGJ1dCB0aGUgbGlicmFyeSBpcyBub3QgZm91bmQiKQorIAllbmRpZigpCisgCW1lc3Nh Z2UoU1RBVFVTICJVc2luZyAke0FVRElPX1BST0NFU1NPUl9MSUJ9IGZvciBhdWRpbyBjb252ZXJz aW9uIikKKy1lbHNlaWYoQVVESU9fUFJPQ0VTU09SX0xJQiBTVFJFUVVBTCAiYXZyZXNhbXBsZSIp CistCWlmKEZGTVBFR19MSUJBVlJFU0FNUExFX0ZPVU5EKQorLQkJc2V0KFVTRV9BVlJFU0FNUExF IE9OKQorLQkJc2V0KFVTRV9TV1JFU0FNUExFIE9GRikKKy0JCXNldChBVURJT19QUk9DRVNTT1Jf TElCUkFSSUVTICR7RkZNUEVHX0xJQkFWUkVTQU1QTEVfTElCUkFSSUVTfSkKKy0JCXNldChBVURJ T19QUk9DRVNTT1JfSU5DTFVERV9ESVJTICR7RkZNUEVHX0xJQkFWUkVTQU1QTEVfSU5DTFVERV9E SVJTfSkKKy0JZWxzZSgpCistCQltZXNzYWdlKEZBVEFMX0VSUk9SICJTZWxlY3RlZCAke0FVRElP X1BST0NFU1NPUl9MSUJ9IGZvciBhdWRpbyBwcm9jZXNzaW5nLCBidXQgdGhlIGxpYnJhcnkgaXMg bm90IGZvdW5kIikKKy0JZW5kaWYoKQorLQltZXNzYWdlKFNUQVRVUyAiVXNpbmcgJHtBVURJT19Q Uk9DRVNTT1JfTElCfSBmb3IgYXVkaW8gY29udmVyc2lvbiIpCisgZWxzZSgpCisgCW1lc3NhZ2Uo U1RBVFVTICJCdWlsZGluZyB3aXRob3V0IGF1ZGlvIGNvbnZlcnNpb24gc3VwcG9ydCwgcGxlYXNl IGluc3RhbGwgRkZtcGVnIHdpdGggbGlic3dyZXNhbXBsZSIpCisgZW5kaWYoKQorZGlmZiAtLWdp dCBhL3BhY2thZ2UvYnVpbGQuc2ggYi9wYWNrYWdlL2J1aWxkLnNoCitpbmRleCBkYTYzMWFlLi5i NDFkMzZlIDEwMDc1NQorLS0tIGEvcGFja2FnZS9idWlsZC5zaAorKysrIGIvcGFja2FnZS9idWls ZC5zaAorQEAgLTcsOCArNyw4IEBAIHNldCAtZXV4CisKKyBCQVNFX0RJUj0kKGNkICQoZGlybmFt ZSAkMCkvLi4gJiYgcHdkKQorCistRkZNUEVHX1ZFUlNJT049NC40LjEKKy1GRk1QRUdfQlVJTERf VEFHPXY0LjQuMS0xCisrRkZNUEVHX1ZFUlNJT049NS4xLjIKKytGRk1QRUdfQlVJTERfVEFHPXYk e0ZGTVBFR19WRVJTSU9OfS0xCisKKyBUTVBfQlVJTERfRElSPSRCQVNFX0RJUi8kKG1rdGVtcCAt ZCBidWlsZC5YWFhYWFhYWCkKKyB0cmFwICdybSAtcmYgJFRNUF9CVUlMRF9ESVInIEVYSVQKK2Rp ZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oIGIvc3JjL2F1ZGlv L2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaAoraW5kZXggNzYyOGZjNy4uMzlmNGY2ZCAxMDA2NDQK Ky0tLSBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmgKKysrKyBiL3NyYy9hdWRp by9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmgKK0BAIC0xMCw4ICsxMCw2IEBACisKKyAjaWYgZGVm aW5lZChVU0VfU1dSRVNBTVBMRSkKKyAjaW5jbHVkZSAiYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nl c3Nvcl9zd3Jlc2FtcGxlLmgiCistI2VsaWYgZGVmaW5lZChVU0VfQVZSRVNBTVBMRSkKKy0jaW5j bHVkZSAiYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgiCisgI2Vsc2UK KyAjZXJyb3IgIm5vIGF1ZGlvIHByb2Nlc3NpbmcgbGlicmFyeSIKKyAjZW5kaWYKK2RpZmYgLS1n aXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmggYi9zcmMv YXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgKK2RlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggYmQ4NWY5Mi4uMDAwMDAwMAorLS0tIGEvc3JjL2F1ZGlvL2ZmbXBl Z19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oCisrKysgL2Rldi9udWxsCitAQCAtMSw3MiAr MCwwIEBACistLy8gQ29weXJpZ2h0IChDKSAyMDE2ICBMdWthcyBMYWxpbnNreQorLS8vIERpc3Ry aWJ1dGVkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSwgc2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRl dGFpbHMuCistCistI2lmbmRlZiBDSFJPTUFQUklOVF9BVURJT19GRk1QRUdfQVVESU9fUFJPQ0VT U09SX0FWUkVTQU1QTEVfSF8KKy0jZGVmaW5lIENIUk9NQVBSSU5UX0FVRElPX0ZGTVBFR19BVURJ T19QUk9DRVNTT1JfQVZSRVNBTVBMRV9IXworLQorLWV4dGVybiAiQyIgeworLSNpbmNsdWRlIDxs aWJhdnJlc2FtcGxlL2F2cmVzYW1wbGUuaD4KKy19CistCistbmFtZXNwYWNlIGNocm9tYXByaW50 IHsKKy0KKy1jbGFzcyBGRm1wZWdBdWRpb1Byb2Nlc3NvciB7CistcHVibGljOgorLQlGRm1wZWdB dWRpb1Byb2Nlc3NvcigpIHsKKy0JCW1fcmVzYW1wbGVfY3R4ID0gYXZyZXNhbXBsZV9hbGxvY19j b250ZXh0KCk7CistCX0KKy0KKy0JfkZGbXBlZ0F1ZGlvUHJvY2Vzc29yKCkgeworLQkJYXZyZXNh bXBsZV9mcmVlKCZtX3Jlc2FtcGxlX2N0eCk7CistCX0KKy0KKy0Jdm9pZCBTZXRDb21wYXRpYmxl TW9kZSgpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAiZmlsdGVyX3NpemUi LCAxNiwgMCk7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgInBoYXNlX3NoaWZ0 IiwgOCwgMCk7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImxpbmVhcl9pbnRl cnAiLCAxLCAwKTsKKy0JCWF2X29wdF9zZXRfZG91YmxlKG1fcmVzYW1wbGVfY3R4LCAiY3V0b2Zm IiwgMC44LCAwKTsKKy0JfQorLQorLQl2b2lkIFNldElucHV0Q2hhbm5lbExheW91dChpbnQ2NF90 IGNoYW5uZWxfbGF5b3V0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImlu X2NoYW5uZWxfbGF5b3V0IiwgY2hhbm5lbF9sYXlvdXQsIDApOworLQl9CistCistCXZvaWQgU2V0 SW5wdXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkgeworLQkJYXZf b3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJpbl9zYW1wbGVfZm10Iiwgc2FtcGxlX2Zvcm1h dCwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRJbnB1dFNhbXBsZVJhdGUoaW50IHNhbXBsZV9yYXRl KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImluX3NhbXBsZV9yYXRlIiwg c2FtcGxlX3JhdGUsIDApOworLQl9CistCistCXZvaWQgU2V0T3V0cHV0Q2hhbm5lbExheW91dChp bnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0 eCwgIm91dF9jaGFubmVsX2xheW91dCIsIGNoYW5uZWxfbGF5b3V0LCAwKTsKKy0JfQorLQorLQl2 b2lkIFNldE91dHB1dFNhbXBsZUZvcm1hdChBVlNhbXBsZUZvcm1hdCBzYW1wbGVfZm9ybWF0KSB7 CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgIm91dF9zYW1wbGVfZm10Iiwgc2Ft cGxlX2Zvcm1hdCwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRPdXRwdXRTYW1wbGVSYXRlKGludCBz YW1wbGVfcmF0ZSkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJvdXRfc2Ft cGxlX2ZtdCIsIHNhbXBsZV9yYXRlLCAwKTsKKy0JfQorLQorLQlpbnQgSW5pdCgpIHsKKy0JCXJl dHVybiBhdnJlc2FtcGxlX29wZW4obV9yZXNhbXBsZV9jdHgpOworLQl9CistCistCWludCBDb252 ZXJ0KHVpbnQ4X3QgKipvdXQsIGludCBvdXRfY291bnQsIGNvbnN0IHVpbnQ4X3QgKippbiwgaW50 IGluX2NvdW50KSB7CistCQlyZXR1cm4gYXZyZXNhbXBsZV9jb252ZXJ0KG1fcmVzYW1wbGVfY3R4 LCBvdXQsIDAsIG91dF9jb3VudCwgKHVpbnQ4X3QgKiopIGluLCAwLCBpbl9jb3VudCk7CistCX0K Ky0KKy0JaW50IEZsdXNoKHVpbnQ4X3QgKipvdXQsIGludCBvdXRfY291bnQpIHsKKy0JCXJldHVy biBhdnJlc2FtcGxlX3JlYWQobV9yZXNhbXBsZV9jdHgsIG91dCwgb3V0X2NvdW50KTsKKy0JfQor LQorLXByaXZhdGU6CistCUFWQXVkaW9SZXNhbXBsZUNvbnRleHQgKm1fcmVzYW1wbGVfY3R4ID0g bnVsbHB0cjsKKy19OworLQorLX07IC8vIG5hbWVzcGFjZSBjaHJvbWFwcmludAorLQorLSNlbmRp ZgorZGlmZiAtLWdpdCBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1w bGUuaCBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaAoraW5k ZXggYjg2MjY2Yi4uYjFkNGJlYSAxMDA2NDQKKy0tLSBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9f cHJvY2Vzc29yX3N3cmVzYW1wbGUuaAorKysrIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9j ZXNzb3Jfc3dyZXNhbXBsZS5oCitAQCAtMjgsMzAgKzI4LDI4IEBAIHB1YmxpYzoKKyAJCWF2X29w dF9zZXRfZG91YmxlKG1fc3dyX2N0eCwgImN1dG9mZiIsIDAuOCwgMCk7CisgCX0KKworLQl2b2lk IFNldElucHV0Q2hhbm5lbExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlhdl9v cHRfc2V0X2ludChtX3N3cl9jdHgsICJpY2wiLCBjaGFubmVsX2xheW91dCwgMCk7CistCQlhdl9v cHRfc2V0X2ludChtX3N3cl9jdHgsICJpY2giLCBhdl9nZXRfY2hhbm5lbF9sYXlvdXRfbmJfY2hh bm5lbHMoY2hhbm5lbF9sYXlvdXQpLCAwKTsKKysJdm9pZCBTZXRJbnB1dENoYW5uZWxMYXlvdXQo QVZDaGFubmVsTGF5b3V0ICpjaGFubmVsX2xheW91dCkgeworKwkJYXZfb3B0X3NldF9pbnQobV9z d3JfY3R4LCAiaW5fY2hhbm5lbF9sYXlvdXQiLCBjaGFubmVsX2xheW91dC0+dS5tYXNrLCAwKTsK KyAJfQorCisgCXZvaWQgU2V0SW5wdXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVGb3JtYXQgc2FtcGxl X2Zvcm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaXNmIiwgc2FtcGxlX2Zv cm1hdCwgMCk7CisrCQlhdl9vcHRfc2V0X3NhbXBsZV9mbXQobV9zd3JfY3R4LCAiaW5fc2FtcGxl X2ZtdCIsIHNhbXBsZV9mb3JtYXQsIDApOworIAl9CisKKyAJdm9pZCBTZXRJbnB1dFNhbXBsZVJh dGUoaW50IHNhbXBsZV9yYXRlKSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpc3Ii LCBzYW1wbGVfcmF0ZSwgMCk7CisrCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpbl9zYW1w bGVfcmF0ZSIsIHNhbXBsZV9yYXRlLCAwKTsKKyAJfQorCistCXZvaWQgU2V0T3V0cHV0Q2hhbm5l bExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3 cl9jdHgsICJvY2wiLCBjaGFubmVsX2xheW91dCwgMCk7CistCQlhdl9vcHRfc2V0X2ludChtX3N3 cl9jdHgsICJvY2giLCBhdl9nZXRfY2hhbm5lbF9sYXlvdXRfbmJfY2hhbm5lbHMoY2hhbm5lbF9s YXlvdXQpLCAwKTsKKysJdm9pZCBTZXRPdXRwdXRDaGFubmVsTGF5b3V0KEFWQ2hhbm5lbExheW91 dCAqY2hhbm5lbF9sYXlvdXQpIHsKKysJCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm91dF9j aGFubmVsX2xheW91dCIsIGNoYW5uZWxfbGF5b3V0LT51Lm1hc2ssIDApOworIAl9CisKKyAJdm9p ZCBTZXRPdXRwdXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkgewor LQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib3NmIiwgc2FtcGxlX2Zvcm1hdCwgMCk7Cisr CQlhdl9vcHRfc2V0X3NhbXBsZV9mbXQobV9zd3JfY3R4LCAib3V0X3NhbXBsZV9mbXQiLCBzYW1w bGVfZm9ybWF0LCAwKTsKKyAJfQorCisgCXZvaWQgU2V0T3V0cHV0U2FtcGxlUmF0ZShpbnQgc2Ft cGxlX3JhdGUpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm9zciIsIHNhbXBsZV9y YXRlLCAwKTsKKysJCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm91dF9zYW1wbGVfcmF0ZSIs IHNhbXBsZV9yYXRlLCAwKTsKKyAJfQorCisgCWludCBJbml0KCkgeworZGlmZiAtLWdpdCBhL3Ny Yy9hdWRpby9mZm1wZWdfYXVkaW9fcmVhZGVyLmggYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Jl YWRlci5oCitpbmRleCA1NTUwMTY0Li4xYzZiMzQ2IDEwMDY0NAorLS0tIGEvc3JjL2F1ZGlvL2Zm bXBlZ19hdWRpb19yZWFkZXIuaAorKysrIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIu aAorQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgorIAlib29sIFJlYWQoY29uc3QgaW50MTZfdCAq KmRhdGEsIHNpemVfdCAqc2l6ZSk7CisKKyAJYm9vbCBJc09wZW4oKSBjb25zdCB7IHJldHVybiBt X29wZW5lZDsgfQorLQlib29sIElzRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX2ZpbmlzaGVk ICYmICFtX2dvdF9mcmFtZTsgfQorKwlib29sIElzRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiAh bV9oYXNfbW9yZV9wYWNrZXRzICYmICFtX2hhc19tb3JlX2ZyYW1lczsgfQorCisgCXN0ZDo6c3Ry aW5nIEdldEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQorIAlpbnQgR2V0RXJyb3JD b2RlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcl9jb2RlOyB9CitAQCAtNzQsMjAgKzc0LDE5IEBA IHByaXZhdGU6CisgCXVpbnQ4X3QgKm1fY29udmVydF9idWZmZXJbMV0gPSB7IG51bGxwdHIgfTsK KyAJaW50IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcyA9IDA7CisKKy0JQVZJbnB1dEZvcm1h dCAqbV9pbnB1dF9mbXQgPSBudWxscHRyOworKwljb25zdCBBVklucHV0Rm9ybWF0ICptX2lucHV0 X2ZtdCA9IG51bGxwdHI7CisgCUFWRGljdGlvbmFyeSAqbV9pbnB1dF9vcHRzID0gbnVsbHB0cjsK KworIAlBVkZvcm1hdENvbnRleHQgKm1fZm9ybWF0X2N0eCA9IG51bGxwdHI7CisgCUFWQ29kZWND b250ZXh0ICptX2NvZGVjX2N0eCA9IG51bGxwdHI7CistCUFWRnJhbWUgKm1fZnJhbWUgPSBudWxs cHRyOworIAlpbnQgbV9zdHJlYW1faW5kZXggPSAtMTsKKyAJc3RkOjpzdHJpbmcgbV9lcnJvcjsK KyAJaW50IG1fZXJyb3JfY29kZSA9IDA7CistCWJvb2wgbV9maW5pc2hlZCA9IGZhbHNlOworIAli b29sIG1fb3BlbmVkID0gZmFsc2U7CistCWludCBtX2dvdF9mcmFtZSA9IDA7CistCUFWUGFja2V0 IG1fcGFja2V0OworLQlBVlBhY2tldCBtX3BhY2tldDA7CisrCWJvb2wgbV9oYXNfbW9yZV9wYWNr ZXRzID0gdHJ1ZTsKKysJYm9vbCBtX2hhc19tb3JlX2ZyYW1lcyA9IHRydWU7CisrCUFWUGFja2V0 ICptX3BhY2tldCA9IG51bGxwdHI7CisrCUFWRnJhbWUgKm1fZnJhbWUgPSBudWxscHRyOworCisg CWludCBtX291dHB1dF9zYW1wbGVfcmF0ZSA9IDA7CisgCWludCBtX291dHB1dF9jaGFubmVscyA9 IDA7CitAQCAtOTgsMTkgKzk3LDEyIEBAIHByaXZhdGU6CisKKyBpbmxpbmUgRkZtcGVnQXVkaW9S ZWFkZXI6OkZGbXBlZ0F1ZGlvUmVhZGVyKCkgeworIAlhdl9sb2dfc2V0X2xldmVsKEFWX0xPR19R VUlFVCk7CistCistCWF2X2luaXRfcGFja2V0KCZtX3BhY2tldCk7CistCW1fcGFja2V0LmRhdGEg PSBudWxscHRyOworLQltX3BhY2tldC5zaXplID0gMDsKKy0KKy0JbV9wYWNrZXQwID0gbV9wYWNr ZXQ7CisgfQorCisgaW5saW5lIEZGbXBlZ0F1ZGlvUmVhZGVyOjp+RkZtcGVnQXVkaW9SZWFkZXIo KSB7CisgCUNsb3NlKCk7CisgCWF2X2RpY3RfZnJlZSgmbV9pbnB1dF9vcHRzKTsKKyAJYXZfZnJl ZXAoJm1fY29udmVydF9idWZmZXJbMF0pOworLQlhdl9wYWNrZXRfdW5yZWYoJm1fcGFja2V0MCk7 CisgfQorCisgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6OlNldElucHV0Rm9ybWF0KGNv bnN0IGNoYXIgKm5hbWUpIHsKK0BAIC0xMzUsMTEgKzEyNywxMCBAQCBpbmxpbmUgYm9vbCBGRm1w ZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6OnN0cmluZyAmZmlsZV9uYW1lKSB7CisKKyAJ Q2xvc2UoKTsKKworLSAgICBhdl9pbml0X3BhY2tldCgmbV9wYWNrZXQpOworLQltX3BhY2tldC5k YXRhID0gbnVsbHB0cjsKKy0JbV9wYWNrZXQuc2l6ZSA9IDA7CistCistCW1fcGFja2V0MCA9IG1f cGFja2V0OworKwltX3BhY2tldCA9IGF2X3BhY2tldF9hbGxvYygpOworKwlpZiAoIW1fcGFja2V0 KSB7CisrCQlyZXR1cm4gZmFsc2U7CisrCX0KKworIAlyZXQgPSBhdmZvcm1hdF9vcGVuX2lucHV0 KCZtX2Zvcm1hdF9jdHgsIGZpbGVfbmFtZS5jX3N0cigpLCBtX2lucHV0X2ZtdCwgJm1faW5wdXRf b3B0cyk7CisgCWlmIChyZXQgPCAwKSB7CitAQCAtMTUzLDI2ICsxNDQsMzEgQEAgaW5saW5lIGJv b2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZpbGVfbmFtZSkg eworIAkJcmV0dXJuIGZhbHNlOworIAl9CisKKy0JQVZDb2RlYyAqY29kZWM7CisrCWNvbnN0IEFW Q29kZWMgKmNvZGVjOworIAlyZXQgPSBhdl9maW5kX2Jlc3Rfc3RyZWFtKG1fZm9ybWF0X2N0eCwg QVZNRURJQV9UWVBFX0FVRElPLCAtMSwgLTEsICZjb2RlYywgMCk7CisgCWlmIChyZXQgPCAwKSB7 CisgCQlTZXRFcnJvcigiQ291bGQgbm90IGZpbmQgYW55IGF1ZGlvIHN0cmVhbSBpbiB0aGUgZmls ZSIsIHJldCk7CisgCQlyZXR1cm4gZmFsc2U7CisgCX0KKyAJbV9zdHJlYW1faW5kZXggPSByZXQ7 CisrCWF1dG8gc3RyZWFtID0gbV9mb3JtYXRfY3R4LT5zdHJlYW1zW21fc3RyZWFtX2luZGV4XTsK KworLQltX2NvZGVjX2N0eCA9IG1fZm9ybWF0X2N0eC0+c3RyZWFtc1ttX3N0cmVhbV9pbmRleF0t PmNvZGVjOworKwltX2NvZGVjX2N0eCA9IGF2Y29kZWNfYWxsb2NfY29udGV4dDMoY29kZWMpOwor IAltX2NvZGVjX2N0eC0+cmVxdWVzdF9zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9TMTY7CisK KysJcmV0ID0gYXZjb2RlY19wYXJhbWV0ZXJzX3RvX2NvbnRleHQobV9jb2RlY19jdHgsIHN0cmVh bS0+Y29kZWNwYXIpOworKwlpZiAocmV0IDwgMCkgeworKwkJU2V0RXJyb3IoIkNvdWxkIG5vdCBj b3B5IHRoZSBzdHJlYW0gcGFyYW1ldGVycyIsIHJldCk7CisrCQlyZXR1cm4gZmFsc2U7CisrCX0K KysKKyAJcmV0ID0gYXZjb2RlY19vcGVuMihtX2NvZGVjX2N0eCwgY29kZWMsIG51bGxwdHIpOwor IAlpZiAocmV0IDwgMCkgeworIAkJU2V0RXJyb3IoIkNvdWxkIG5vdCBvcGVuIHRoZSBjb2RlYyIs IHJldCk7CisgCQlyZXR1cm4gZmFsc2U7CisgCX0KKworLQlpZiAoIW1fY29kZWNfY3R4LT5jaGFu bmVsX2xheW91dCkgeworLQkJbV9jb2RlY19jdHgtPmNoYW5uZWxfbGF5b3V0ID0gYXZfZ2V0X2Rl ZmF1bHRfY2hhbm5lbF9sYXlvdXQobV9jb2RlY19jdHgtPmNoYW5uZWxzKTsKKy0JfQorKwlhdl9k dW1wX2Zvcm1hdChtX2Zvcm1hdF9jdHgsIDAsICJmb28iLCAwKTsKKworIAltX2ZyYW1lID0gYXZf ZnJhbWVfYWxsb2MoKTsKKyAJaWYgKCFtX2ZyYW1lKSB7CitAQCAtMTgzLDE5ICsxNzksMjMgQEAg aW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZp bGVfbmFtZSkgeworIAkJbV9vdXRwdXRfc2FtcGxlX3JhdGUgPSBtX2NvZGVjX2N0eC0+c2FtcGxl X3JhdGU7CisgCX0KKworLQlpZiAoIW1fb3V0cHV0X2NoYW5uZWxzKSB7CistCQltX291dHB1dF9j aGFubmVscyA9IG1fY29kZWNfY3R4LT5jaGFubmVsczsKKysJQVZDaGFubmVsTGF5b3V0IG91dHB1 dF9jaGFubmVsX2xheW91dDsKKysJaWYgKG1fb3V0cHV0X2NoYW5uZWxzKSB7CisrCQlhdl9jaGFu bmVsX2xheW91dF9kZWZhdWx0KCZvdXRwdXRfY2hhbm5lbF9sYXlvdXQsIG1fb3V0cHV0X2NoYW5u ZWxzKTsKKysJfSBlbHNlIHsKKysJCW1fb3V0cHV0X2NoYW5uZWxzID0gbV9jb2RlY19jdHgtPmNo X2xheW91dC5uYl9jaGFubmVsczsKKysJCWF2X2NoYW5uZWxfbGF5b3V0X2RlZmF1bHQoJm91dHB1 dF9jaGFubmVsX2xheW91dCwgbV9vdXRwdXRfY2hhbm5lbHMpOworIAl9CisKKy0JaWYgKG1fY29k ZWNfY3R4LT5zYW1wbGVfZm10ICE9IEFWX1NBTVBMRV9GTVRfUzE2IHx8IG1fY29kZWNfY3R4LT5j aGFubmVscyAhPSBtX291dHB1dF9jaGFubmVscyB8fCBtX2NvZGVjX2N0eC0+c2FtcGxlX3JhdGUg IT0gbV9vdXRwdXRfc2FtcGxlX3JhdGUpIHsKKysJaWYgKG1fY29kZWNfY3R4LT5zYW1wbGVfZm10 ICE9IEFWX1NBTVBMRV9GTVRfUzE2IHx8IG1fY29kZWNfY3R4LT5jaF9sYXlvdXQubmJfY2hhbm5l bHMgIT0gbV9vdXRwdXRfY2hhbm5lbHMgfHwgbV9jb2RlY19jdHgtPnNhbXBsZV9yYXRlICE9IG1f b3V0cHV0X3NhbXBsZV9yYXRlKSB7CisgCQltX2NvbnZlcnRlci5yZXNldChuZXcgRkZtcGVnQXVk aW9Qcm9jZXNzb3IoKSk7CisgCQltX2NvbnZlcnRlci0+U2V0Q29tcGF0aWJsZU1vZGUoKTsKKyAJ CW1fY29udmVydGVyLT5TZXRJbnB1dFNhbXBsZUZvcm1hdChtX2NvZGVjX2N0eC0+c2FtcGxlX2Zt dCk7CisgCQltX2NvbnZlcnRlci0+U2V0SW5wdXRTYW1wbGVSYXRlKG1fY29kZWNfY3R4LT5zYW1w bGVfcmF0ZSk7CistCQltX2NvbnZlcnRlci0+U2V0SW5wdXRDaGFubmVsTGF5b3V0KG1fY29kZWNf Y3R4LT5jaGFubmVsX2xheW91dCk7CisrCQltX2NvbnZlcnRlci0+U2V0SW5wdXRDaGFubmVsTGF5 b3V0KCYobV9jb2RlY19jdHgtPmNoX2xheW91dCkpOworIAkJbV9jb252ZXJ0ZXItPlNldE91dHB1 dFNhbXBsZUZvcm1hdChBVl9TQU1QTEVfRk1UX1MxNik7CisgCQltX2NvbnZlcnRlci0+U2V0T3V0 cHV0U2FtcGxlUmF0ZShtX291dHB1dF9zYW1wbGVfcmF0ZSk7CistCQltX2NvbnZlcnRlci0+U2V0 T3V0cHV0Q2hhbm5lbExheW91dChhdl9nZXRfZGVmYXVsdF9jaGFubmVsX2xheW91dChtX291dHB1 dF9jaGFubmVscykpOworKwkJbV9jb252ZXJ0ZXItPlNldE91dHB1dENoYW5uZWxMYXlvdXQoJm91 dHB1dF9jaGFubmVsX2xheW91dCk7CisgCQlhdXRvIHJldCA9IG1fY29udmVydGVyLT5Jbml0KCk7 CisgCQlpZiAocmV0ICE9IDApIHsKKyAJCQlTZXRFcnJvcigiQ291bGQgbm90IGNyZWF0ZSBhbiBh dWRpbyBjb252ZXJ0ZXIgaW5zdGFuY2UiLCByZXQpOworQEAgLTIwMywxMCArMjAzLDExIEBAIGlu bGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxl X25hbWUpIHsKKyAJCX0KKyAJfQorCisrCWF2X2NoYW5uZWxfbGF5b3V0X3VuaW5pdCgmb3V0cHV0 X2NoYW5uZWxfbGF5b3V0KTsKKysKKyAJbV9vcGVuZWQgPSB0cnVlOworLQltX2ZpbmlzaGVkID0g ZmFsc2U7CistCW1fZ290X2ZyYW1lID0gMDsKKy0JbV9uYl9wYWNrZXRzID0gMDsKKysJbV9oYXNf bW9yZV9wYWNrZXRzID0gdHJ1ZTsKKysJbV9oYXNfbW9yZV9mcmFtZXMgPSB0cnVlOworIAltX2Rl Y29kZV9lcnJvciA9IDA7CisKKyAJcmV0dXJuIHRydWU7CitAQCAtMjE0LDYgKzIxNSw3IEBAIGlu bGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxl X25hbWUpIHsKKworIGlubGluZSB2b2lkIEZGbXBlZ0F1ZGlvUmVhZGVyOjpDbG9zZSgpIHsKKyAJ YXZfZnJhbWVfZnJlZSgmbV9mcmFtZSk7CisrCWF2X3BhY2tldF9mcmVlKCZtX3BhY2tldCk7CisK KyAJbV9zdHJlYW1faW5kZXggPSAtMTsKKworQEAgLTI1Miw5MSArMjU0LDk4IEBAIGlubGluZSBi b29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpSZWFkKGNvbnN0IGludDE2X3QgKipkYXRhLCBzaXplX3Qg KnNpemUpIHsKKyAJCXJldHVybiBmYWxzZTsKKyAJfQorCisrCSpkYXRhID0gbnVsbHB0cjsKKysJ KnNpemUgPSAwOworKworIAlpbnQgcmV0OworKwlib29sIG5lZWRzX3BhY2tldCA9IGZhbHNlOwor IAl3aGlsZSAodHJ1ZSkgeworLQkJd2hpbGUgKG1fcGFja2V0LnNpemUgPD0gMCkgeworLQkJCWF2 X3BhY2tldF91bnJlZigmbV9wYWNrZXQwKTsKKy0JCQlhdl9pbml0X3BhY2tldCgmbV9wYWNrZXQp OworLQkJCW1fcGFja2V0LmRhdGEgPSBudWxscHRyOworLQkJCW1fcGFja2V0LnNpemUgPSAwOwor LQkJCXJldCA9IGF2X3JlYWRfZnJhbWUobV9mb3JtYXRfY3R4LCAmbV9wYWNrZXQpOworKwkJd2hp bGUgKG5lZWRzX3BhY2tldCAmJiBtX3BhY2tldC0+c2l6ZSA9PSAwKSB7CisrCQkJcmV0ID0gYXZf cmVhZF9mcmFtZShtX2Zvcm1hdF9jdHgsIG1fcGFja2V0KTsKKyAJCQlpZiAocmV0IDwgMCkgewor IAkJCQlpZiAocmV0ID09IEFWRVJST1JfRU9GKSB7CistCQkJCQltX2ZpbmlzaGVkID0gdHJ1ZTsK KysJCQkJCW5lZWRzX3BhY2tldCA9IGZhbHNlOworKwkJCQkJbV9oYXNfbW9yZV9wYWNrZXRzID0g ZmFsc2U7CisgCQkJCQlicmVhazsKKy0JCQkJfSBlbHNlIHsKKysJCQkJfQorKwkJCQlTZXRFcnJv cigiRXJyb3IgcmVhZGluZyBmcm9tIHRoZSBhdWRpbyBzb3VyY2UiLCByZXQpOworKwkJCQlyZXR1 cm4gZmFsc2U7CisrCQkJfQorKwkJCWlmIChtX3BhY2tldC0+c3RyZWFtX2luZGV4ID09IG1fc3Ry ZWFtX2luZGV4KSB7CisrCQkJCW5lZWRzX3BhY2tldCA9IGZhbHNlOworKwkJCX0gZWxzZSB7Cisr CQkJCWF2X3BhY2tldF91bnJlZihtX3BhY2tldCk7CisrCQkJfQorKwkJfQorKworKwkJaWYgKG1f cGFja2V0LT5zaXplICE9IDApIHsKKysJCQlyZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KG1fY29k ZWNfY3R4LCBtX3BhY2tldCk7CisrCQkJaWYgKHJldCA8IDApIHsKKysJCQkJaWYgKHJldCAhPSBB VkVSUk9SKEVBR0FJTikpIHsKKyAJCQkJCVNldEVycm9yKCJFcnJvciByZWFkaW5nIGZyb20gdGhl IGF1ZGlvIHNvdXJjZSIsIHJldCk7CisgCQkJCQlyZXR1cm4gZmFsc2U7CisgCQkJCX0KKy0JCQl9 CistCQkJbV9wYWNrZXQwID0gbV9wYWNrZXQ7CistCQkJaWYgKG1fcGFja2V0LnN0cmVhbV9pbmRl eCAhPSBtX3N0cmVhbV9pbmRleCkgeworLQkJCQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0J CQkJbV9wYWNrZXQuc2l6ZSA9IDA7CisgCQkJfSBlbHNlIHsKKy0JCQkJbV9uYl9wYWNrZXRzKys7 CisrCQkJCWF2X3BhY2tldF91bnJlZihtX3BhY2tldCk7CisgCQkJfQorIAkJfQorCistCQlyZXQg PSBhdmNvZGVjX2RlY29kZV9hdWRpbzQobV9jb2RlY19jdHgsIG1fZnJhbWUsICZtX2dvdF9mcmFt ZSwgJm1fcGFja2V0KTsKKysJCXJldCA9IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZShtX2NvZGVjX2N0 eCwgbV9mcmFtZSk7CisgCQlpZiAocmV0IDwgMCkgeworLQkJCWlmIChtX2RlY29kZV9lcnJvcikg eworLQkJCQlTZXRFcnJvcigiRXJyb3IgZGVjb2RpbmcgYXVkaW8gZnJhbWUiLCBtX2RlY29kZV9l cnJvcik7CistCQkJCXJldHVybiBmYWxzZTsKKysJCQlpZiAocmV0ID09IEFWRVJST1JfRU9GKSB7 CisrCQkJCW1faGFzX21vcmVfZnJhbWVzID0gZmFsc2U7CisrCQkJfSBlbHNlIGlmIChyZXQgPT0g QVZFUlJPUihFQUdBSU4pKSB7CisrCQkJCWlmIChtX2hhc19tb3JlX3BhY2tldHMpIHsKKysJCQkJ CW5lZWRzX3BhY2tldCA9IHRydWU7CisrCQkJCQljb250aW51ZTsKKysJCQkJfSBlbHNlIHsKKysJ CQkJCW1faGFzX21vcmVfZnJhbWVzID0gZmFsc2U7CisrCQkJCX0KKyAJCQl9CistCQkJbV9kZWNv ZGVfZXJyb3IgPSByZXQ7CistCQkJbV9wYWNrZXQuZGF0YSA9IG51bGxwdHI7CistCQkJbV9wYWNr ZXQuc2l6ZSA9IDA7CistCQkJY29udGludWU7CisrCQkJU2V0RXJyb3IoIkVycm9yIGRlY29kaW5n IHRoZSBhdWRpbyBzb3VyY2UiLCByZXQpOworKwkJCXJldHVybiBmYWxzZTsKKyAJCX0KKworLQkJ YnJlYWs7CistCX0KKy0KKy0JbV9kZWNvZGVfZXJyb3IgPSAwOworLQorLQljb25zdCBpbnQgZGVj b2RlZCA9IHN0ZDo6bWluKHJldCwgbV9wYWNrZXQuc2l6ZSk7CistCW1fcGFja2V0LmRhdGEgKz0g ZGVjb2RlZDsKKy0JbV9wYWNrZXQuc2l6ZSAtPSBkZWNvZGVkOworLQorLQlpZiAobV9nb3RfZnJh bWUpIHsKKy0JCWlmIChtX2NvbnZlcnRlcikgeworLQkJCWlmIChtX2ZyYW1lLT5uYl9zYW1wbGVz ID4gbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzKSB7CistCQkJCWludCBsaW5zaXplOworLQkJ CQlhdl9mcmVlcCgmbV9jb252ZXJ0X2J1ZmZlclswXSk7CistCQkJCW1fY29udmVydF9idWZmZXJf bmJfc2FtcGxlcyA9IHN0ZDo6bWF4KDEwMjQgKiA4LCBtX2ZyYW1lLT5uYl9zYW1wbGVzKTsKKy0J CQkJcmV0ID0gYXZfc2FtcGxlc19hbGxvYyhtX2NvbnZlcnRfYnVmZmVyLCAmbGluc2l6ZSwgbV9j b2RlY19jdHgtPmNoYW5uZWxzLCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMsIEFWX1NBTVBM RV9GTVRfUzE2LCAxKTsKKy0JCQkJaWYgKHJldCA8IDApIHsKKy0JCQkJCVNldEVycm9yKCJDb3Vs ZG4ndCBhbGxvY2F0ZSBhdWRpbyBjb252ZXJ0ZXIgYnVmZmVyIiwgcmV0KTsKKysJCWlmIChtX2Zy YW1lLT5uYl9zYW1wbGVzID4gMCkgeworKwkJCWlmIChtX2NvbnZlcnRlcikgeworKwkJCQlpZiAo bV9mcmFtZS0+bmJfc2FtcGxlcyA+IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcykgeworKwkJ CQkJaW50IGxpbnNpemU7CisrCQkJCQlhdl9mcmVlcCgmbV9jb252ZXJ0X2J1ZmZlclswXSk7Cisr CQkJCQltX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMgPSBzdGQ6Om1heCgxMDI0ICogOCwgbV9m cmFtZS0+bmJfc2FtcGxlcyk7CisrCQkJCQlyZXQgPSBhdl9zYW1wbGVzX2FsbG9jKG1fY29udmVy dF9idWZmZXIsICZsaW5zaXplLCBtX2NvZGVjX2N0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzLCBt X2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMsIEFWX1NBTVBMRV9GTVRfUzE2LCAxKTsKKysJCQkJ CWlmIChyZXQgPCAwKSB7CisrCQkJCQkJU2V0RXJyb3IoIkNvdWxkbid0IGFsbG9jYXRlIGF1ZGlv IGNvbnZlcnRlciBidWZmZXIiLCByZXQpOworKwkJCQkJCXJldHVybiBmYWxzZTsKKysJCQkJCX0K KysJCQkJfQorKwkJCQlhdXRvIG5iX3NhbXBsZXMgPSBtX2NvbnZlcnRlci0+Q29udmVydChtX2Nv bnZlcnRfYnVmZmVyLCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMsIChjb25zdCB1aW50OF90 ICoqKSBtX2ZyYW1lLT5kYXRhLCBtX2ZyYW1lLT5uYl9zYW1wbGVzKTsKKysJCQkJaWYgKG5iX3Nh bXBsZXMgPCAwKSB7CisrCQkJCQlTZXRFcnJvcigiQ291bGRuJ3QgY29udmVydCBhdWRpbyIsIHJl dCk7CisgCQkJCQlyZXR1cm4gZmFsc2U7CisgCQkJCX0KKy0JCQl9CistCQkJYXV0byBuYl9zYW1w bGVzID0gbV9jb252ZXJ0ZXItPkNvbnZlcnQobV9jb252ZXJ0X2J1ZmZlciwgbV9jb252ZXJ0X2J1 ZmZlcl9uYl9zYW1wbGVzLCAoY29uc3QgdWludDhfdCAqKikgbV9mcmFtZS0+ZGF0YSwgbV9mcmFt ZS0+bmJfc2FtcGxlcyk7CistCQkJaWYgKG5iX3NhbXBsZXMgPCAwKSB7CistCQkJCVNldEVycm9y KCJDb3VsZG4ndCBjb252ZXJ0IGF1ZGlvIiwgcmV0KTsKKy0JCQkJcmV0dXJuIGZhbHNlOworLQkJ CX0KKy0JCQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1fY29udmVydF9idWZmZXJbMF07Cist CQkJKnNpemUgPSBuYl9zYW1wbGVzOworLQkJfSBlbHNlIHsKKy0JCQkqZGF0YSA9IChjb25zdCBp bnQxNl90ICopIG1fZnJhbWUtPmRhdGFbMF07CistCQkJKnNpemUgPSBtX2ZyYW1lLT5uYl9zYW1w bGVzOworLQkJfQorLQl9IGVsc2UgeworLQkJaWYgKG1fZmluaXNoZWQgJiYgbV9jb252ZXJ0ZXIp IHsKKy0JCQlhdXRvIG5iX3NhbXBsZXMgPSBtX2NvbnZlcnRlci0+Rmx1c2gobV9jb252ZXJ0X2J1 ZmZlciwgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzKTsKKy0JCQlpZiAobmJfc2FtcGxlcyA8 IDApIHsKKy0JCQkJU2V0RXJyb3IoIkNvdWxkbid0IGNvbnZlcnQgYXVkaW8iLCByZXQpOworLQkJ CQlyZXR1cm4gZmFsc2U7CistCQkJfSBlbHNlIGlmIChuYl9zYW1wbGVzID4gMCkgeworLQkJCQlt X2dvdF9mcmFtZSA9IDE7CisgCQkJCSpkYXRhID0gKGNvbnN0IGludDE2X3QgKikgbV9jb252ZXJ0 X2J1ZmZlclswXTsKKyAJCQkJKnNpemUgPSBuYl9zYW1wbGVzOworKwkJCX0gZWxzZSB7CisrCQkJ CSpkYXRhID0gKGNvbnN0IGludDE2X3QgKikgbV9mcmFtZS0+ZGF0YVswXTsKKysJCQkJKnNpemUg PSBtX2ZyYW1lLT5uYl9zYW1wbGVzOworKwkJCX0KKysJCX0gZWxzZSB7CisrCQkJaWYgKG1fY29u dmVydGVyKSB7CisrCQkJCWlmIChJc0ZpbmlzaGVkKCkpIHsKKysJCQkJCWF1dG8gbmJfc2FtcGxl cyA9IG1fY29udmVydGVyLT5GbHVzaChtX2NvbnZlcnRfYnVmZmVyLCBtX2NvbnZlcnRfYnVmZmVy X25iX3NhbXBsZXMpOworKwkJCQkJaWYgKG5iX3NhbXBsZXMgPCAwKSB7CisrCQkJCQkJU2V0RXJy b3IoIkNvdWxkbid0IGNvbnZlcnQgYXVkaW8iLCByZXQpOworKwkJCQkJCXJldHVybiBmYWxzZTsK KysJCQkJCX0gZWxzZSBpZiAobmJfc2FtcGxlcyA+IDApIHsKKysJCQkJCQkqZGF0YSA9IChjb25z dCBpbnQxNl90ICopIG1fY29udmVydF9idWZmZXJbMF07CisrCQkJCQkJKnNpemUgPSBuYl9zYW1w bGVzOworKwkJCQkJfQorKwkJCQl9CisgCQkJfQorIAkJfQorLQl9CisKKy0JcmV0dXJuIHRydWU7 CisrCQlyZXR1cm4gdHJ1ZTsKKysJfQorIH0KKworIGlubGluZSB2b2lkIEZGbXBlZ0F1ZGlvUmVh ZGVyOjpTZXRFcnJvcihjb25zdCBjaGFyICptZXNzYWdlLCBpbnQgZXJybnVtKSB7CitkaWZmIC0t Z2l0IGEvdGVzdHMvQ01ha2VMaXN0cy50eHQgYi90ZXN0cy9DTWFrZUxpc3RzLnR4dAoraW5kZXgg YTJiNTE3Yi4uMTIzZTY0MyAxMDA2NDQKKy0tLSBhL3Rlc3RzL0NNYWtlTGlzdHMudHh0CisrKysg Yi90ZXN0cy9DTWFrZUxpc3RzLnR4dAorQEAgLTM4LDYgKzM4LDEyIEBAIHNldChTUkNTCisKKyBp ZihCVUlMRF9UT09MUykKKyAJc2V0KFNSQ1MgJHtTUkNTfSAuLi9zcmMvYXVkaW8vZmZtcGVnX2F1 ZGlvX3JlYWRlcl90ZXN0LmNwcCkKKysgICAgaW5jbHVkZV9kaXJlY3RvcmllcygKKysgICAgICAg ICR7RkZNUEVHX0xJQkFWRk9STUFUX0lOQ0xVREVfRElSU30KKysgICAgICAgICR7RkZNUEVHX0xJ QkFWQ09ERUNfSU5DTFVERV9ESVJTfQorKyAgICAgICAgJHtGRk1QRUdfTElCQVZVVElMX0lOQ0xV REVfRElSU30KKysgICAgICAgICR7QVVESU9fUFJPQ0VTU09SX0lOQ0xVREVfRElSU30KKysgICAg KQorIAlsaW5rX2xpYnJhcmllcyhmcGNhbGNfbGlicykKKyBlbmRpZigpCisKKy0tIAorMi4zOC4x CisKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWFwcmludC90ZW1wbGF0ZSBiL3NyY3BrZ3Mv Y2hyb21hcHJpbnQvdGVtcGxhdGUKaW5kZXggN2VmNzgzODk0OWYzLi4xZjdiYmM3MGEyMmMgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jaHJv bWFwcmludC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2No cm9tYXByaW50JwogcGtnbmFtZT1jaHJvbWFwcmludAogdmVyc2lvbj0xLjUuMQotcmV2aXNpb249 MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREJVSUxE X1RPT0xTPU9OIgogbWFrZV9jaGVja190YXJnZXQ9ImNoZWNrIgoKRnJvbSA2MDk4OTFkYWNkMjk4 M2Y0M2I1MmM4MGRhYTBlYjM4MDI5YTczMDIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjQvMTE1XSBjaHJvbWl1bTogcmV2YnVtcCBmb3Ig ZmZtcGVnLTYuMAoKLS0tCiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWctNC40LnBhdGNo ICAgICAgfCAzNiAtLS0tLS0tLS0tLS0tLQogc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBl ZzUucGF0Y2ggICAgICAgIHwgNDcgKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9jaHJvbWl1 bS90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIDMgZmlsZXMgY2hhbmdlZCwg NDggaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9jaHJvbWl1bS9wYXRjaGVzL2Nocm9taXVtLTkzLWZmbXBlZy00LjQucGF0Y2gKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWctNC40 LnBhdGNoIGIvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2Nocm9taXVtLTkzLWZmbXBlZy00LjQu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZWM3MzZmOThiYy4uMDAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWct NC40LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotZGlmZiAtLWdpdCBhL21l ZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MgYi9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11 eGVyLmNjCi1pbmRleCBhYzQ3MTNiMDcyNjguLjQ5MmE5YTM3ZDA5NiAxMDA2NDQKLS0tLSBhL21l ZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MKLSsrKyBiL21lZGlhL2ZpbHRlcnMvZmZtcGVn X2RlbXV4ZXIuY2MKLUBAIC00MjcsMTEgKzQyNywxMSBAQCB2b2lkIEZGbXBlZ0RlbXV4ZXJTdHJl YW06OkVucXVldWVQYWNrZXQoU2NvcGVkQVZQYWNrZXQgcGFja2V0KSB7Ci0gICBzY29wZWRfcmVm cHRyPERlY29kZXJCdWZmZXI+IGJ1ZmZlcjsKLSAKLSAgIGlmICh0eXBlKCkgPT0gRGVtdXhlclN0 cmVhbTo6VEVYVCkgewotLSAgICBzaXplX3QgaWRfc2l6ZSA9IDA7Ci0rICAgIGludCBpZF9zaXpl ID0gMDsKLSAgICAgdWludDhfdCogaWRfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAot ICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9XRUJWVFRfSURFTlRJRklFUiwgJmlk X3NpemUpOwotIAotLSAgICBzaXplX3Qgc2V0dGluZ3Nfc2l6ZSA9IDA7Ci0rICAgIGludCBzZXR0 aW5nc19zaXplID0gMDsKLSAgICAgdWludDhfdCogc2V0dGluZ3NfZGF0YSA9IGF2X3BhY2tldF9n ZXRfc2lkZV9kYXRhKAotICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9XRUJWVFRf U0VUVElOR1MsICZzZXR0aW5nc19zaXplKTsKLSAKLUBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBG Rm1wZWdEZW11eGVyU3RyZWFtOjpFbnF1ZXVlUGFja2V0KFNjb3BlZEFWUGFja2V0IHBhY2tldCkg ewotICAgICBidWZmZXIgPSBEZWNvZGVyQnVmZmVyOjpDb3B5RnJvbShwYWNrZXQtPmRhdGEsIHBh Y2tldC0+c2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZV9k YXRhLmRhdGEoKSwgc2lkZV9kYXRhLnNpemUoKSk7Ci0gICB9IGVsc2UgewotLSAgICBzaXplX3Qg c2lkZV9kYXRhX3NpemUgPSAwOwotKyAgICBpbnQgc2lkZV9kYXRhX3NpemUgPSAwOwotICAgICB1 aW50OF90KiBzaWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAgICAgIHBh Y2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxPQ0tBRERJVElPTkFMLCAmc2lkZV9k YXRhX3NpemUpOwotIAotQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIEZGbXBlZ0RlbXV4ZXJTdHJl YW06OkVucXVldWVQYWNrZXQoU2NvcGVkQVZQYWNrZXQgcGFja2V0KSB7Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0LT5zaXplIC0gZGF0YV9vZmZzZXQpOwot ICAgICB9Ci0gCi0tICAgIHNpemVfdCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7Ci0rICAgIGludCBz a2lwX3NhbXBsZXNfc2l6ZSA9IDA7Ci0gICAgIGNvbnN0IHVpbnQzMl90KiBza2lwX3NhbXBsZXNf cHRyID0KLSAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdl9wYWNr ZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRB X1NLSVBfU0FNUExFUywgJnNraXBfc2FtcGxlc19zaXplKSk7CmRpZmYgLS1naXQgYS9zcmNwa2dz L2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hl cy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u MjRlMmRhMzhlMzRjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVz L2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorLS0tIGEvbWVkaWEvZmlsdGVycy9mZm1w ZWdfZGVtdXhlci5jYwkyMDIzLTAxLTIzIDE3OjMzOjU3LjM2NjIxMzgwNSArMDIwMAorKysrIGIv bWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwkyMDIzLTAxLTIzIDE3OjQzOjA5LjI4MzQz Njk4MyArMDIwMAorQEAgLTkyLDI0ICs5MiwxMiBAQAorIAorIHN0YXRpYyBiYXNlOjpUaW1lRGVs dGEgRXh0cmFjdFN0YXJ0VGltZShBVlN0cmVhbSogc3RyZWFtKSB7CisgICAvLyBUaGUgZGVmYXVs dCBzdGFydCB0aW1lIGlzIHplcm8uCistICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGltZTsKKysg IGJhc2U6OlRpbWVEZWx0YSBzdGFydF90aW1lID0ga05vVGltZXN0YW1wOworIAorICAgLy8gRmly c3QgdHJ5IHRvIHVzZSAgdGhlIHxzdGFydF90aW1lfCB2YWx1ZSBhcyBpcy4KKy0gIGlmIChzdHJl YW0tPnN0YXJ0X3RpbWUgIT0ga05vRkZtcGVnVGltZXN0YW1wKQorKyAgaWYgKHN0cmVhbS0+c3Rh cnRfdGltZSAhPSBrTm9GRm1wZWdUaW1lc3RhbXApIC8vIEFWX05PUFRTX1ZBTFVFCisgICAgIHN0 YXJ0X3RpbWUgPSBDb252ZXJ0RnJvbVRpbWVCYXNlKHN0cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0t PnN0YXJ0X3RpbWUpOworIAorLSAgLy8gTmV4dCB0cnkgdG8gdXNlIHRoZSBmaXJzdCBEVFMgdmFs dWUsIGZvciBjb2RlY3Mgd2hlcmUgd2Uga25vdyBQVFMgPT0gRFRTCistICAvLyAoZXhjbHVkZXMg YWxsIEgyNnggY29kZWNzKS4gVGhlIHN0YXJ0IHRpbWUgbXVzdCBiZSByZXR1cm5lZCBpbiBQVFMu CistICBpZiAoYXZfc3RyZWFtX2dldF9maXJzdF9kdHMoc3RyZWFtKSAhPSBrTm9GRm1wZWdUaW1l c3RhbXAgJiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19J RF9IRVZDICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNf SURfSDI2NCAmJgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVD X0lEX01QRUc0KSB7CistICAgIGNvbnN0IGJhc2U6OlRpbWVEZWx0YSBmaXJzdF9wdHMgPQorLSAg ICAgICAgQ29udmVydEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgYXZfc3RyZWFtX2dl dF9maXJzdF9kdHMoc3RyZWFtKSk7CistICAgIGlmIChmaXJzdF9wdHMgPCBzdGFydF90aW1lKQor LSAgICAgIHN0YXJ0X3RpbWUgPSBmaXJzdF9wdHM7CistICB9CistCisgICByZXR1cm4gc3RhcnRf dGltZTsKKyB9CisgCitAQCAtMTU5Nyw3ICsxNTg1LDcgQEAKKyAgIGZvciAoY29uc3QgYXV0byYg c3RyZWFtIDogc3RyZWFtc18pIHsKKyAgICAgaWYgKCFzdHJlYW0gfHwgc3RyZWFtLT5Jc0VuYWJs ZWQoKSAhPSBlbmFibGVkKQorICAgICAgIGNvbnRpbnVlOworLSAgICBpZiAoYXZfc3RyZWFtX2dl dF9maXJzdF9kdHMoc3RyZWFtLT5hdl9zdHJlYW0oKSkgPT0ga0ludmFsaWRQVFNNYXJrZXIpCisr ICAgIGlmIChzdHJlYW0tPmF2X3N0cmVhbSgpLT5zdGFydF90aW1lID09IEFWX05PUFRTX1ZBTFVF KQorICAgICAgIGNvbnRpbnVlOworICAgICBpZiAoIWxvd2VzdF9zdGFydF90aW1lX3N0cmVhbSB8 fAorICAgICAgICAgc3RyZWFtLT5zdGFydF90aW1lKCkgPCBsb3dlc3Rfc3RhcnRfdGltZV9zdHJl YW0tPnN0YXJ0X3RpbWUoKSkgeworQEAgLTE2MTgsNyArMTYwNiw3IEBACisgICAgIGlmIChzdHJl YW0tPnR5cGUoKSAhPSBEZW11eGVyU3RyZWFtOjpWSURFTykKKyAgICAgICBjb250aW51ZTsKKyAK Ky0gICAgaWYgKGF2X3N0cmVhbV9nZXRfZmlyc3RfZHRzKHN0cmVhbS0+YXZfc3RyZWFtKCkpID09 IGtJbnZhbGlkUFRTTWFya2VyKQorKyAgICBpZiAoc3RyZWFtLT5hdl9zdHJlYW0oKS0+c3RhcnRf dGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICBjb250aW51ZTsKKyAKKyAgICAgaWYgKCFz dHJlYW0tPklzRW5hYmxlZCgpKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0 ZSBiL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKaW5kZXggYjRhMzlkZmQzODE1Li5jMjk0NTNj ZDFmNTAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9jaHJvbWl1bS90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9Y2hyb21pdW0KICMg U2VlIGh0dHBzOi8vY2hyb21pdW1kYXNoLmFwcHNwb3QuY29tL3JlbGVhc2VzP3BsYXRmb3JtPUxp bnV4IGZvciB0aGUgbGF0ZXN0IHZlcnNpb24KIHZlcnNpb249MTE0LjAuNTczNS4xMDYKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGFyY2hzPSJpNjg2KiB4ODZfNjQqIGFhcmNoNjQqIGFybXY3bCoi CiBob3N0bWFrZWRlcGVuZHM9IgogICQodm9wdF9pZiBjbGFuZyAiY2xhbmcgbGxkIGxsdm0xNSIp CgpGcm9tIDQ4MzY4YzU1NDg0NjA2NDUxMDgyYjI2MDlhNmY0ZjY2NDA1YTA3MTUgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyNS8xMTVdIGNt dXM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9jbXVzL3BhdGNoZXMvZmZt cGVnNi5wYXRjaCB8IDEyICsrKysrKysrKysrKwogc3JjcGtncy9jbXVzL3RlbXBsYXRlICAgICAg ICAgICAgICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2 LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCBi L3NyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi5mZmE5NWFiODExMTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCkBAIC0wLDAgKzEsMTIgQEAKKy0tLSBhL2lw L2ZmbXBlZy5jCisrKysgYi9pcC9mZm1wZWcuYworQEAgLTIwMiw5ICsyMDIsNiBAQCBzdGF0aWMg aW50IGZmbXBlZ19vcGVuKHN0cnVjdCBpbnB1dF9wbHVnaW5fZGF0YSAqaXBfZGF0YSkKKyAJCQli cmVhazsKKyAJCX0KKyAKKy0JCWlmIChjb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQ X1RSVU5DQVRFRCkKKy0JCQljYy0+ZmxhZ3MgfD0gQVZfQ09ERUNfRkxBR19UUlVOQ0FURUQ7Cist CisgCQlpZiAoYXZjb2RlY19vcGVuMihjYywgY29kZWMsIE5VTEwpIDwgMCkgeworIAkJCWRfcHJp bnQoImNvdWxkIG5vdCBvcGVuIGNvZGVjOiAlZCwgJXNcbiIsIGNjLT5jb2RlY19pZCwgYXZjb2Rl Y19nZXRfbmFtZShjYy0+Y29kZWNfaWQpKTsKKyAJCQllcnIgPSAtSVBfRVJST1JfVU5TVVBQT1JU RURfRklMRV9UWVBFOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jbXVzL3RlbXBsYXRlIGIvc3JjcGtn cy9jbXVzL3RlbXBsYXRlCmluZGV4IDBmY2I0MjRjZTMzNi4uMDViNzdkMGZlY2FlIDEwMDY0NAot LS0gYS9zcmNwa2dzL2NtdXMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jbXVzL3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY211cycKIHBrZ25hbWU9Y211cwog dmVyc2lvbj0yLjEwLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNvbmZp Z3VyZQogY29uZmlndXJlX2FyZ3M9InByZWZpeD0vdXNyIExEPSRDQyIKIGhvc3RtYWtlZGVwZW5k cz0icGtnLWNvbmZpZyIKCkZyb20gYzlkNWVlYzQ1NzMzMWRiN2U3NDIzMmE5ODU4ZDczZTRhNDE0 ZDE1OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDI2LzExNV0gY3lhbnJpcDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2N5YW5yaXAvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUgYi9z cmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUKaW5kZXggOTc5NmUzNDYxNjAxLi41ZGIzMGUwMjBkMTcg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2N5YW5y aXAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjeWFucmlw JwogcGtnbmFtZT1jeWFucmlwCiB2ZXJzaW9uPTAuOS4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgogbWFrZWRl cGVuZHM9ImZmbXBlZy1kZXZlbCBsaWJjZGlvLWRldmVsIGxpYmNkaW8tcGFyYW5vaWEtZGV2ZWwg bGliY3VybC1kZXZlbCBsaWJtdXNpY2JyYWluejUtZGV2ZWwiCgpGcm9tIGIwZGM3NmFkNDZiZWI4 NWNmYWZlZGRkNTllY2RjZjBhYTI2YjM5YjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyNy8xMTVdIGRlYWRiZWVmOiByZXZidW1wIGZvciBm Zm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUgfCA0ICsrLS0KIDEg ZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUK aW5kZXggYjY2NGJiMWI5YmQ5Li4xNjViM2M3YjljYWQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZGVh ZGJlZWYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0ZQpAQCAtMSwxNCAr MSwxNCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZGVhZGJlZWYnCiBwa2duYW1lPWRlYWRiZWVm CiB2ZXJzaW9uPTEuOC44Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBjcmVhdGVfd3Jrc3JjPXll cwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1v c3MgLS1kaXNhYmxlLWxmbSAtLWRpc2FibGUtbm90aWZ5IC0tZGlzYWJsZS1ndGsyIgogaG9zdG1h a2VkZXBlbmRzPSJhdXRvbWFrZSBsaWJ0b29sIGdldHRleHQgZ2V0dGV4dC1kZXZlbCBpbnRsdG9v bCBwa2ctY29uZmlnCiAgeWFzbSBjbGFuZyBnbGliLWRldmVsIgogbWFrZWRlcGVuZHM9IgotIGFs c2EtbGliLWRldmVsIGRidXMtZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnLWRldmVsIGd0ayszLWRl dmVsIGltbGliMi1kZXZlbAorIGFsc2EtbGliLWRldmVsIGRidXMtZGV2ZWwgZmFhZDItZGV2ZWwg ZmZtcGVnNC1kZXZlbCBndGsrMy1kZXZlbCBpbWxpYjItZGV2ZWwKICBqYW5zc29uLWRldmVsIGxp YmNkZGItZGV2ZWwgbGliY2Rpby1kZXZlbCBsaWJjdXJsLWRldmVsIGxpYmZsYWMtZGV2ZWwKICBs aWJtYWQtZGV2ZWwgbGlicG5nLWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwgbGlic25kZmlsZS1k ZXZlbCBsaWJ2b3JiaXMtZGV2ZWwKICBsaWJ6aXAtZGV2ZWwgbXBnMTIzLWRldmVsIG9wdXNmaWxl LWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwgd2F2cGFjay1kZXZlbCIKCkZyb20gZWVkODJiOGZmY2I5 MjBkYjhiMTQ4MDIxMGI4YTFlY2NmMDIwYzMwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI4LzExNV0gZG9scGhpbi1lbXU6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9kb2xwaGluLWVtdS90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxhdGUgYi9zcmNwa2dzL2RvbHBoaW4tZW11L3Rl bXBsYXRlCmluZGV4IGI0YzhiNjQzNjhhNC4uMDcwOTkzYWFjMzFkIDEwMDY0NAotLS0gYS9zcmNw a2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdkb2xwaGluLWVtdScKIHBr Z25hbWU9ZG9scGhpbi1lbXUKIHZlcnNpb249NS4wLjE5MzY4Ci1yZXZpc2lvbj0xCityZXZpc2lv bj0yCiBfZG9scGhpbl9jb21taXQ9ZGFkYmViNGJhZTdlN2ZhMjNhZjJiNDZlMGFkZDQxNDMwOTRk YzEwNwogX21nYmFfY29tbWl0PTQ0ZTA3NGExNWU5NjUxNDgxZjdmNjUyYWMwMDZhN2M5ZDU4Y2Jl YjkKIF9nb29nbGV0ZXN0X2NvbW1pdD1iZTAzZDAwZjVmMGNjM2E5OTdkMWEzNjhiZWU4YTFmZTkz NjUxZjQ4CgpGcm9tIDNmNjM3NTUzN2M3YWJhM2NlODE4OWNjZDFlMWM2YjA2ZjVmZDBmMWQgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyOS8x MTVdIGRyb2lkY2FtLW9icy1wbHVnaW46IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kcm9p ZGNhbS1vYnMtcGx1Z2luL3RlbXBsYXRlIGIvc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3Rl bXBsYXRlCmluZGV4IGZjOWM5YmY2YjlkNS4uZmIwNDgwNzU0ZGY0IDEwMDY0NAotLS0gYS9zcmNw a2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kcm9pZGNhbS1v YnMtcGx1Z2luL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn ZHJvaWRjYW0tb2JzLXBsdWdpbicKIHBrZ25hbWU9ZHJvaWRjYW0tb2JzLXBsdWdpbgogdmVyc2lv bj0yLjAuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxl CiBtYWtlX3VzZV9lbnY9eWVzCiBtYWtlX2J1aWxkX2FyZ3M9IkFMTE9XX1NUQVRJQz1ubyIKCkZy b20gMzJiMWQ2Y2JhNDk1NjA5MThhZGIxZDc2MWM2YmMxNTU0NjAyMjkxMCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDMwLzExNV0gZHJvaWRj YW06IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUgYi9zcmNwa2dzL2Ryb2lkY2Ft L3RlbXBsYXRlCmluZGV4IDFjM2YxYjhiMWZjNi4uMzJhOTIyMGI3OWE0IDEwMDY0NAotLS0gYS9z cmNwa2dzL2Ryb2lkY2FtL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdkcm9pZGNhbScKIHBrZ25hbWU9 ZHJvaWRjYW0KIHZlcnNpb249MS44LjIKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0 eWxlPWdudS1tYWtlZmlsZQogbWFrZV9idWlsZF9hcmdzPSJVU0JNVVhEPS1sdXNibXV4ZC0yLjAg SlBFRz0tbHR1cmJvanBlZyIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gYTY0 ZDAwMDZjNjBhYTIzOGEzMDU5YzY4OTY4OThlNmUwZTRkYWZkYiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDMxLzExNV0gZmZtcGVndGh1bWJu YWlsZXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL2ZmbXBlZ3RodW1ibmFpbGVy L3BhdGNoZXMvZmZtcGVnNi5wYXRjaCAgIHwgMjAyICsrKysrKysrKysrKysrKysrKwogc3JjcGtn cy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZSAgICAgICAgICAgIHwgICA2ICstCiAyIGZpbGVz IGNoYW5nZWQsIDIwNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0 Y2ggYi9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjM2M2ZmMzVhMjg0MQotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBh dGNoCkBAIC0wLDAgKzEsMjAyIEBACistLS0gYS9saWJmZm1wZWd0aHVtYm5haWxlci9tb3ZpZWRl Y29kZXIuY3BwCTIwMTctMTEtMjEgMTQ6MDY6NTcuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9saWJm Zm1wZWd0aHVtYm5haWxlci9tb3ZpZWRlY29kZXIuY3BwCTIwMjMtMDUtMDUgMTM6MTQ6NDcuOTQ2 NTYwNjY4IC0wNDAwCitAQCAtNDEsMTEgKzQxLDYgQEAKKyBuYW1lc3BhY2UgZmZtcGVndGh1bWJu YWlsZXIKKyB7CisgCistc3RydWN0IFNpbGVuY2VMb2dMZXZlbAorLXsKKy0gICAgU2lsZW5jZUxv Z0xldmVsKCkgeyBhdl9sb2dfc2V0X2xldmVsKEFWX0xPR19RVUlFVCk7IH0KKy19OworLQorIE1v dmllRGVjb2Rlcjo6TW92aWVEZWNvZGVyKEFWRm9ybWF0Q29udGV4dCogcGF2Q29udGV4dCkKKyA6 IG1fVmlkZW9TdHJlYW0oLTEpCisgLCBtX3BGb3JtYXRDb250ZXh0KHBhdkNvbnRleHQpCitAQCAt NzAsOCArNjUsNiBAQAorIAorIHZvaWQgTW92aWVEZWNvZGVyOjppbml0aWFsaXplKGNvbnN0IHN0 cmluZyYgZmlsZW5hbWUsIGJvb2wgcHJlZmVyRW1iZWRkZWRNZXRhZGF0YSkKKyB7CistICAgIGF2 X3JlZ2lzdGVyX2FsbCgpOworLSAgICBhdmNvZGVjX3JlZ2lzdGVyX2FsbCgpOworICAgICBhdmZv cm1hdF9uZXR3b3JrX2luaXQoKTsKKyAKKyAgICAgc3RyaW5nIGlucHV0RmlsZSA9IGZpbGVuYW1l ID09ICItIiA/ICJwaXBlOiIgOiBmaWxlbmFtZTsKK0BAIC05Nyw4ICs5MCw3IEBACisgeworICAg ICBpZiAobV9wVmlkZW9Db2RlY0NvbnRleHQpCisgICAgIHsKKy0gICAgICAgIGF2Y29kZWNfY2xv c2UobV9wVmlkZW9Db2RlY0NvbnRleHQpOworLSAgICAgICAgbV9wVmlkZW9Db2RlY0NvbnRleHQg PSBudWxscHRyOworKyAgICAgICAgYXZjb2RlY19mcmVlX2NvbnRleHQoJm1fcFZpZGVvQ29kZWND b250ZXh0KTsKKyAgICAgfQorIAorICAgICBpZiAoKCFtX0Zvcm1hdENvbnRleHRXYXNHaXZlbikg JiYgbV9wRm9ybWF0Q29udGV4dCkKK0BAIC0xNTIsMTAgKzE0NCwxMCBAQAorICAgICBmb3IgKHVu c2lnbmVkIGludCBpID0gMDsgaSA8IG1fcEZvcm1hdENvbnRleHQtPm5iX3N0cmVhbXM7ICsraSkK KyAgICAgeworICAgICAgICAgQVZTdHJlYW0gKnN0cmVhbSA9IG1fcEZvcm1hdENvbnRleHQtPnN0 cmVhbXNbaV07CistICAgICAgICBhdXRvIGN0eCA9IG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNb aV0tPmNvZGVjOworLSAgICAgICAgaWYgKGN0eC0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVf VklERU8pCisrICAgICAgICBhdXRvIHBhciA9IG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0t PmNvZGVjcGFyOworKyAgICAgICAgaWYgKHBhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVf VklERU8pCisgICAgICAgICB7CistICAgICAgICAgICAgaWYgKCFwcmVmZXJFbWJlZGRlZE1ldGFk YXRhIHx8ICFpc1N0aWxsSW1hZ2VDb2RlYyhjdHgtPmNvZGVjX2lkKSkKKysgICAgICAgICAgICBp ZiAoIXByZWZlckVtYmVkZGVkTWV0YWRhdGEgfHwgIWlzU3RpbGxJbWFnZUNvZGVjKHBhci0+Y29k ZWNfaWQpKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgdmlkZW9TdHJlYW1zLnB1 c2hfYmFjayhpKTsKKyAgICAgICAgICAgICAgICAgY29udGludWU7CitAQCAtMjAzLDggKzE5NSw3 IEBACisgICAgIH0KKyAKKyAgICAgbV9wVmlkZW9TdHJlYW0gPSBtX3BGb3JtYXRDb250ZXh0LT5z dHJlYW1zW21fVmlkZW9TdHJlYW1dOworLSAgICBtX3BWaWRlb0NvZGVjQ29udGV4dCA9IG1fcFZp ZGVvU3RyZWFtLT5jb2RlYzsKKy0gICAgbV9wVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNv ZGVyKG1fcFZpZGVvQ29kZWNDb250ZXh0LT5jb2RlY19pZCk7CisrICAgIG1fcFZpZGVvQ29kZWMg PSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihtX3BWaWRlb1N0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lk KTsKKyAKKyAgICAgaWYgKG1fcFZpZGVvQ29kZWMgPT0gbnVsbHB0cikKKyAgICAgeworQEAgLTIx NCw2ICsyMDUsMjAgQEAKKyAgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJWaWRlbyBDb2RlYyBu b3QgZm91bmQiKTsKKyAgICAgfQorIAorKyAgICBtX3BWaWRlb0NvZGVjQ29udGV4dCA9IGF2Y29k ZWNfYWxsb2NfY29udGV4dDMobV9wVmlkZW9Db2RlYyk7CisrCisrICAgIGlmIChtX3BWaWRlb0Nv ZGVjQ29udGV4dCA9PSBudWxscHRyKQorKyAgICB7CisrICAgICAgICBkZXN0cm95KCk7CisrICAg ICAgICB0aHJvdyBsb2dpY19lcnJvcigiQ291bGQgbm90IGFsbG9jYXRlIHZpZGVvIGNvZGVjIGNv bnRleHQiKTsKKysgICAgfQorKworKyAgICBpZiAoYXZjb2RlY19wYXJhbWV0ZXJzX3RvX2NvbnRl eHQobV9wVmlkZW9Db2RlY0NvbnRleHQsIG1fcFZpZGVvU3RyZWFtLT5jb2RlY3BhcikgPCAwKQor KyAgICB7CisrICAgICAgICBkZXN0cm95KCk7CisrICAgICAgICB0aHJvdyBsb2dpY19lcnJvcigi Q291bGQgbm90IGNvbmZpZ3VyZSB2aWRlbyBjb2RlYyBjb250ZXh0Iik7CisrICAgIH0KKysKKyAg ICAgbV9wVmlkZW9Db2RlY0NvbnRleHQtPndvcmthcm91bmRfYnVncyA9IDE7CisgCisgICAgIGlm IChhdmNvZGVjX29wZW4yKG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BWaWRlb0NvZGVjLCBudWxs cHRyKSA8IDApCitAQCAtMzg2LDEzICszOTEsNiBAQAorIAorIHZvaWQgTW92aWVEZWNvZGVyOjpp bml0aWFsaXplRmlsdGVyR3JhcGgoY29uc3QgQVZSYXRpb25hbCYgdGltZUJhc2UsIGNvbnN0IHN0 ZDo6c3RyaW5nJiBzaXplLCBib29sIG1haW50YWluQXNwZWN0UmF0aW8pCisgeworLSAgICBzdGF0 aWMgY29uc3QgQVZQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdHNbXSA9IHsgQVZfUElYX0ZNVF9SR0Iy NCwgQVZfUElYX0ZNVF9OT05FIH07CistCistICAgIGF1dG8gZGVsID0gW10gKEFWQnVmZmVyU2lu a1BhcmFtcyogcCkgeyBhdl9mcmVlcChwKTsgfTsKKy0gICAgc3RkOjp1bmlxdWVfcHRyPEFWQnVm ZmVyU2lua1BhcmFtcywgZGVjbHR5cGUoZGVsKT4gYnVmZmVyc2lua1BhcmFtcyhhdl9idWZmZXJz aW5rX3BhcmFtc19hbGxvYygpLCBkZWwpOworLQorLSAgICBhdmZpbHRlcl9yZWdpc3Rlcl9hbGwo KTsKKy0KKyAgICAgbV9wRmlsdGVyR3JhcGggPSBhdmZpbHRlcl9ncmFwaF9hbGxvYygpOworICAg ICBhc3NlcnQobV9wRmlsdGVyR3JhcGgpOworIAorQEAgLTQwNCwxMCArNDAyLDggQEAKKyAKKyAg ICAgY2hlY2tSYyhhdmZpbHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVyKCZtX3BGaWx0ZXJTb3VyY2Us IGF2ZmlsdGVyX2dldF9ieV9uYW1lKCJidWZmZXIiKSwgInRodW1iX2J1ZmZlciIsIHNzLnN0cigp LmNfc3RyKCksIG51bGxwdHIsIG1fcEZpbHRlckdyYXBoKSwKKyAgICAgICAgICAgICAiRmFpbGVk IHRvIGNyZWF0ZSBmaWx0ZXIgc291cmNlIik7CistICAgIGJ1ZmZlcnNpbmtQYXJhbXMtPnBpeGVs X2ZtdHMgPSBwaXhlbEZvcm1hdHM7CistICAgIGNoZWNrUmMoYXZmaWx0ZXJfZ3JhcGhfY3JlYXRl X2ZpbHRlcigmbV9wRmlsdGVyU2luaywgYXZmaWx0ZXJfZ2V0X2J5X25hbWUoImJ1ZmZlcnNpbmsi KSwgInRodW1iX2J1ZmZlcnNpbmsiLCBudWxscHRyLCBidWZmZXJzaW5rUGFyYW1zLmdldCgpLCBt X3BGaWx0ZXJHcmFwaCksCisrICAgIGNoZWNrUmMoYXZmaWx0ZXJfZ3JhcGhfY3JlYXRlX2ZpbHRl cigmbV9wRmlsdGVyU2luaywgYXZmaWx0ZXJfZ2V0X2J5X25hbWUoImJ1ZmZlcnNpbmsiKSwgInRo dW1iX2J1ZmZlcnNpbmsiLCBudWxscHRyLCBudWxscHRyLCBtX3BGaWx0ZXJHcmFwaCksCisgICAg ICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgZmlsdGVyIHNpbmsiKTsKKy0gICAgYnVmZmVyc2lu a1BhcmFtcy5yZWxlYXNlKCk7CisgCisgICAgIEFWRmlsdGVyQ29udGV4dCogeWFkaWZGaWx0ZXIg PSBudWxscHRyOworICAgICBpZiAobV9wRnJhbWUtPmludGVybGFjZWRfZnJhbWUgIT0gMCkKK0BA IC01MDAsMTUgKzQ5NiwxNSBAQAorICAgICB9CisgCisgICAgIGNoZWNrUmMoYXZfc2Vla19mcmFt ZShtX3BGb3JtYXRDb250ZXh0LCAtMSwgdGltZXN0YW1wLCAwKSwgIlNlZWtpbmcgaW4gdmlkZW8g ZmFpbGVkIik7CistICAgIGF2Y29kZWNfZmx1c2hfYnVmZmVycyhtX3BGb3JtYXRDb250ZXh0LT5z dHJlYW1zW21fVmlkZW9TdHJlYW1dLT5jb2RlYyk7CisrICAgIGF2Y29kZWNfZmx1c2hfYnVmZmVy cyhtX3BWaWRlb0NvZGVjQ29udGV4dCk7CisgCisgICAgIGludCBrZXlGcmFtZUF0dGVtcHRzID0g MDsKKy0gICAgYm9vbCBnb3RGcmFtZSA9IDA7CisrICAgIGJvb2wgZ290RnJhbWU7CisgCisgICAg IGRvCisgICAgIHsKKyAgICAgICAgIGludCBjb3VudCA9IDA7CistICAgICAgICBnb3RGcmFtZSA9 IDA7CisrICAgICAgICBnb3RGcmFtZSA9IGZhbHNlOworIAorICAgICAgICAgd2hpbGUgKCFnb3RG cmFtZSAmJiBjb3VudCA8IDIwKQorICAgICAgICAgeworQEAgLTU1MiwxNyArNTQ4LDMzIEBACisg ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KKyAKKy0gICAgYXZfZnJhbWVfdW5yZWYobV9w RnJhbWUpOworLQorLSAgICBpbnQgZnJhbWVGaW5pc2hlZDsKKysgICAgaW50IHJjID0gYXZjb2Rl Y19zZW5kX3BhY2tldChtX3BWaWRlb0NvZGVjQ29udGV4dCwgbV9wUGFja2V0KTsKKysgICAgaWYo cmMgPT0gQVZFUlJPUihFQUdBSU4pKQorKyAgICB7CisrICAgICAgICByYyA9IDA7CisrICAgIH0K KyAKKy0gICAgaW50IGJ5dGVzRGVjb2RlZCA9IGF2Y29kZWNfZGVjb2RlX3ZpZGVvMihtX3BWaWRl b0NvZGVjQ29udGV4dCwgbV9wRnJhbWUsICZmcmFtZUZpbmlzaGVkLCBtX3BQYWNrZXQpOworLSAg ICBpZiAoYnl0ZXNEZWNvZGVkIDwgMCkKKysgICAgaWYocmMgPT0gQVZFUlJPUl9FT0YpCisrICAg IHsKKysgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgfQorKyAgICBlbHNlIGlmKHJjIDwgMCkK KyAgICAgeworLSAgICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIkZhaWxlZCB0byBkZWNvZGUgdmlk ZW8gZnJhbWU6IGJ5dGVzRGVjb2RlZCA8IDAiKTsKKysgICAgICAgIHRocm93IGxvZ2ljX2Vycm9y KCJGYWlsZWQgdG8gZGVjb2RlIHZpZGVvIGZyYW1lOiBhdmNvZGVjX3NlbmRfcGFja2V0KCkgPCAw Iik7CisgICAgIH0KKyAKKy0gICAgcmV0dXJuIGZyYW1lRmluaXNoZWQgPiAwOworKyAgICByYyA9 IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZShtX3BWaWRlb0NvZGVjQ29udGV4dCwgbV9wRnJhbWUpOwor KyAgICBzd2l0Y2gocmMpCisrICAgIHsKKysgICAgICAgIGNhc2UgMDoKKysgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKKysKKysgICAgICAgIGNhc2UgQVZFUlJPUihFQUdBSU4pOgorKyAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKKysKKysgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAgICAgdGhy b3cgbG9naWNfZXJyb3IoIkZhaWxlZCB0byBkZWNvZGUgdmlkZW8gZnJhbWU6IGF2Y29kZWNfcmVj ZWl2ZV9mcmFtZSgpIDwgMCIpOworKyAgICB9CisgfQorIAorIGJvb2wgTW92aWVEZWNvZGVyOjpn ZXRWaWRlb1BhY2tldCgpCitAQCAtNTcwLDggKzU4Miw2IEBACisgICAgIGJvb2wgZnJhbWVzQXZh aWxhYmxlID0gdHJ1ZTsKKyAgICAgYm9vbCBmcmFtZURlY29kZWQgPSBmYWxzZTsKKyAKKy0gICAg aW50IGF0dGVtcHRzID0gMDsKKy0KKyAgICAgaWYgKG1fcFBhY2tldCkKKyAgICAgeworICAgICAg ICAgYXZfcGFja2V0X3VucmVmKG1fcFBhY2tldCk7CitAQCAtNTgwLDYgKzU5MCw3IEBACisgCisg ICAgIG1fcFBhY2tldCA9IG5ldyBBVlBhY2tldCgpOworIAorKworICAgICB3aGlsZSAoZnJhbWVz QXZhaWxhYmxlICYmICFmcmFtZURlY29kZWQpCisgICAgIHsKKyAgICAgICAgIGZyYW1lc0F2YWls YWJsZSA9IGF2X3JlYWRfZnJhbWUobV9wRm9ybWF0Q29udGV4dCwgbV9wUGFja2V0KSA+PSAwOwor QEAgLTY0NCw3ICs2NTUsNyBAQAorIAorIGludDMyX3QgTW92aWVEZWNvZGVyOjpnZXRTdHJlYW1S b3RhdGlvbigpCisgeworLSAgICBpbnQzMl90KiBtYXRyaXggPSByZWludGVycHJldF9jYXN0PGlu dDMyX3QqPihhdl9zdHJlYW1fZ2V0X3NpZGVfZGF0YShtX3BWaWRlb1N0cmVhbSwgQVZfUEtUX0RB VEFfRElTUExBWU1BVFJJWCwgbnVsbHB0cikpOworKyAgICBhdXRvIG1hdHJpeCA9IHJlaW50ZXJw cmV0X2Nhc3Q8aW50MzJfdCo+KGF2X3N0cmVhbV9nZXRfc2lkZV9kYXRhKG1fcFZpZGVvU3RyZWFt LCBBVl9QS1RfREFUQV9ESVNQTEFZTUFUUklYLCBudWxscHRyKSk7CisgICAgIGlmIChtYXRyaXgp CisgICAgIHsKKyAgICAgICAgIGF1dG8gYW5nbGUgPSBscm91bmQoYXZfZGlzcGxheV9yb3RhdGlv bl9nZXQobWF0cml4KSk7CisKKy0tLSBhL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21vdmllZGVjb2Rl ci5oCTIwMTctMTEtMTIgMDQ6MjM6MzguMDAwMDAwMDAwIC0wNTAwCisrKysgYi9saWJmZm1wZWd0 aHVtYm5haWxlci9tb3ZpZWRlY29kZXIuaAkyMDIzLTA1LTA1IDEzOjI2OjA3LjA5NTUyOTkxMSAt MDQwMAorQEAgLTc4LDcgKzc4LDcgQEAKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbV9W aWRlb1N0cmVhbTsNCisgICAgIEFWRm9ybWF0Q29udGV4dCogICAgICAgIG1fcEZvcm1hdENvbnRl eHQ7DQorICAgICBBVkNvZGVjQ29udGV4dCogICAgICAgICBtX3BWaWRlb0NvZGVjQ29udGV4dDsN CistICAgIEFWQ29kZWMqICAgICAgICAgICAgICAgIG1fcFZpZGVvQ29kZWM7DQorKyAgICBjb25z dCBBVkNvZGVjKiAgICAgICAgICBtX3BWaWRlb0NvZGVjOw0KKyAgICAgQVZGaWx0ZXJHcmFwaCog ICAgICAgICAgbV9wRmlsdGVyR3JhcGg7DQorICAgICBBVkZpbHRlckNvbnRleHQqICAgICAgICBt X3BGaWx0ZXJTb3VyY2U7DQorICAgICBBVkZpbHRlckNvbnRleHQqICAgICAgICBtX3BGaWx0ZXJT aW5rOw0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvdGVtcGxhdGUgYi9z cmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3RlbXBsYXRlCmluZGV4IDAzOWVlYTc2MjJiMy4uMzVk NTQ2MDE4ZDEyIDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWd0aHVtYm5haWxlcicKIHBrZ25hbWU9ZmZtcGVn dGh1bWJuYWlsZXIKIHZlcnNpb249Mi4yLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxk X3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0i bGlicG5nLWRldmVsIGxpYmpwZWctdHVyYm8tZGV2ZWwgZmZtcGVnLWRldmVsIgpAQCAtOSw4ICs5 LDggQEAgZGVwZW5kcz0iZmZtcGVnIgogc2hvcnRfZGVzYz0iTGlnaHR3ZWlnaHQgdmlkZW8gdGh1 bWJuYWlsZXIiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+Igog bGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKLWhvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20v ZGlya3ZkYi8ke3BrZ25hbWV9IgotZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9yZWxlYXNlcy9kb3du bG9hZC8ke3ZlcnNpb259LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIuYnoyIgoraG9tZXBhZ2U9 Imh0dHBzOi8vZ2l0aHViLmNvbS9kaXJrdmRiIgorZGlzdGZpbGVzPSIke2hvbWVwYWdlfS8ke3Br Z25hbWV9L3JlbGVhc2VzL2Rvd25sb2FkLyR7dmVyc2lvbn0vJHtwa2duYW1lfS0ke3ZlcnNpb259 LnRhci5iejIiCiBjaGVja3N1bT0xY2IyNDA1OWMzODIyM2Y2NTdiMzAwYzg0ZGQ4MDQ5MWI3MDQw ZDRiNjk0NzFjNGZlYTY5YmU4NjJiYzk5YjViCiAKIHBvc3RfaW5zdGFsbCgpIHsKCkZyb20gM2U3 OWZlYTI2YTZlZTM0MmEyYzYzMWE0Mjc3YmY3YTRjZmI3ZWI4ZSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDMyLzExNV0gZmZtcGVndGh1bWJz OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUgYi9zcmNwa2dzL2Zm bXBlZ3RodW1icy90ZW1wbGF0ZQppbmRleCA1ZjBiOTQxNGRhZGEuLjExYjg4MTkzNTI4ZiAxMDA2 NDQKLS0tIGEvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mZm1w ZWd0aHVtYnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdm Zm1wZWd0aHVtYnMnCiBwa2duYW1lPWZmbXBlZ3RodW1icwogdmVyc2lvbj0yMi4xMi4xCi1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJl eHRyYS1jbWFrZS1tb2R1bGVzIGtjb3JlYWRkb25zIGtjb25maWctZGV2ZWwKICBwa2ctY29uZmln IHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSBnZXR0ZXh0IgoKRnJvbSBkZTNjNDQ3ZGY4NTZhNDJl YzJlYTExYmE5MjEwOGVkNzI4NzQzM2M5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzMvMTE1XSBmZm1zMjogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDQyNCArKysr KysrKysrKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2ZmbXMyL3RlbXBsYXRlICAgICAgICAg ICAgICB8ICAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCA0MjUgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gg Yi9zcmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjE0NzlmYWJjYWZjYgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsNDI0IEBACitGcm9t IDQ1NjczMTQ5ZTlhMmY1NTg2ODU1YWQ0NzJlMzA1OTA4NGVhYTM2YjEgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCitGcm9tOiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWls LmNvbT4KK0RhdGU6IFR1ZSwgNCBNYXkgMjAyMSAxNDo0MToyMSArMDEwMAorU3ViamVjdDogW1BB VENIXSBVc2UgYXV0byBmb3IgQVZDb2RlYworCitUaGUgZ2VuaXVzZXMgb3ZlciBhdCBGRm1wZWcg ZGVjaWRlZCB0byBjb25zdGlmeSB0aGlzIEFQSSwgc28gb2xkCit2ZXJzaW9ucyBvZiB0aGUgbGli cmFyeSB3aWxsIHJldHVybiBBVkNvZGVjICosIHdoaWxlIG5ldyB2ZXJzaW9ucworb2YgdGhlIGxp YmFyeSB3aWxsIHJldHVybiBjb25zdCBBVkNvZGVjICosIHdoaWNoLCBpbiBDKyssIGFyZSBub3QK K09LIHRvIGNvbnZlcnQgYmV0d2Vlbi4KKworUmF0aGVyIHRoYW4gdXNlIHNvbWUgbWFjcm8gaGVs bCBpbiBmZm1zY29tcGF0LmgsIHdlIGNhbiB3b3JrIGFyb3VuZAordGhpcyBieSB1c2luZyBhdXRv LgorCitHcm9zcy4KKworU2lnbmVkLW9mZi1ieTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVp dGVuaHVpc0BnbWFpbC5jb20+CistLS0KKyBzcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAgfCAyICst Cisgc3JjL2NvcmUvaW5kZXhpbmcuY3BwICAgIHwgNiArKystLS0KKyBzcmMvY29yZS92aWRlb3Nv dXJjZS5jcHAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVs ZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAgYi9zcmMv Y29yZS9hdWRpb3NvdXJjZS5jcHAKK2luZGV4IGU0Y2U5N2MuLmFjMDk2NjYgMTAwNjQ0CistLS0g YS9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKKysrKyBiL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNw cAorQEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIEZGTVNfQXVkaW9Tb3VyY2U6Ok9wZW5GaWxlKCkg eworIAorICAgICBMQVZGT3BlbkZpbGUoU291cmNlRmlsZS5jX3N0cigpLCBGb3JtYXRDb250ZXh0 LCBUcmFja051bWJlcik7CisgCistICAgIEFWQ29kZWMgKkNvZGVjID0gYXZjb2RlY19maW5kX2Rl Y29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja051bWJlcl0tPmNvZGVjcGFyLT5jb2Rl Y19pZCk7CisrICAgIGF1dG8gKkNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29u dGV4dC0+c3RyZWFtc1tUcmFja051bWJlcl0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgICAgIGlm IChDb2RlYyA9PSBudWxscHRyKQorICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19F UlJPUl9ERUNPRElORywgRkZNU19FUlJPUl9DT0RFQywKKyAgICAgICAgICAgICAiQXVkaW8gY29k ZWMgbm90IGZvdW5kIik7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvaW5kZXhpbmcuY3BwIGIvc3Jj L2NvcmUvaW5kZXhpbmcuY3BwCitpbmRleCBlNTQ3YzVhLi41OWZiNGU4IDEwMDY0NAorLS0tIGEv c3JjL2NvcmUvaW5kZXhpbmcuY3BwCisrKysgYi9zcmMvY29yZS9pbmRleGluZy5jcHAKK0BAIC0z ODQsNyArMzg0LDcgQEAgRkZNU19UcmFja1R5cGUgRkZNU19JbmRleGVyOjpHZXRUcmFja1R5cGUo aW50IFRyYWNrKSB7CisgfQorIAorIGNvbnN0IGNoYXIgKkZGTVNfSW5kZXhlcjo6R2V0VHJhY2tD b2RlYyhpbnQgVHJhY2spIHsKKy0gICAgQVZDb2RlYyAqY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVj b2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsK KysgICAgYXV0byAqY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5z dHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgcmV0dXJuIGNvZGVjID8g Y29kZWMtPm5hbWUgOiBudWxscHRyOworIH0KKyAKK0BAIC00MDIsNyArNDAyLDcgQEAgRkZNU19J bmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAgIFVzZURUUyk7 CisgCisgICAgICAgICBpZiAoSW5kZXhNYXNrLmNvdW50KGkpICYmIEZvcm1hdENvbnRleHQtPnN0 cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykgewor LSAgICAgICAgICAgIEFWQ29kZWMgKlZpZGVvQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihG b3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAgICAgICAg ICAgIGF1dG8gKlZpZGVvQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0 LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworICAgICAgICAgICAgIGlmICghVmlk ZW9Db2RlYykgeworICAgICAgICAgICAgICAgICBGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5k aXNjYXJkID0gQVZESVNDQVJEX0FMTDsKKyAgICAgICAgICAgICAgICAgSW5kZXhNYXNrLmVyYXNl KGkpOworQEAgLTQzMyw3ICs0MzMsNyBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5k ZXhpbmcoKSB7CisgICAgICAgICAgICAgICAgIEluZGV4TWFzay5pbnNlcnQoaSk7CisgICAgICAg ICAgICAgfQorICAgICAgICAgfSBlbHNlIGlmIChJbmRleE1hc2suY291bnQoaSkgJiYgRm9ybWF0 Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBF X0FVRElPKSB7CistICAgICAgICAgICAgQVZDb2RlYyAqQXVkaW9Db2RlYyA9IGF2Y29kZWNfZmlu ZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7 CisrICAgICAgICAgICAgYXV0byAqQXVkaW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZv cm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgICAgICAgICAg ICAgaWYgKEF1ZGlvQ29kZWMgPT0gbnVsbHB0cikKKyAgICAgICAgICAgICAgICAgdGhyb3cgRkZN U19FeGNlcHRpb24oRkZNU19FUlJPUl9DT0RFQywgRkZNU19FUlJPUl9VTlNVUFBPUlRFRCwKKyAg ICAgICAgICAgICAgICAgICAgICJBdWRpbyBjb2RlYyBub3QgZm91bmQiKTsKK2RpZmYgLS1naXQg YS9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgYi9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKK2lu ZGV4IGI4ODk5NzAuLjg5NTZjMjIgMTAwNjQ0CistLS0gYS9zcmMvY29yZS92aWRlb3NvdXJjZS5j cHAKKysrKyBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAorQEAgLTE3MSw3ICsxNzEsNyBAQCBG Rk1TX1ZpZGVvU291cmNlOjpGRk1TX1ZpZGVvU291cmNlKGNvbnN0IGNoYXIgKlNvdXJjZUZpbGUs IEZGTVNfSW5kZXggJkluZGV4LCBpbgorIAorICAgICAgICAgTEFWRk9wZW5GaWxlKFNvdXJjZUZp bGUsIEZvcm1hdENvbnRleHQsIFZpZGVvVHJhY2spOworIAorLSAgICAgICAgQVZDb2RlYyAqQ29k ZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1ZpZGVvVHJh Y2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAgICAgICAgYXV0byAqQ29kZWMgPSBhdmNvZGVj X2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1ZpZGVvVHJhY2tdLT5jb2RlY3Bh ci0+Y29kZWNfaWQpOworICAgICAgICAgaWYgKENvZGVjID09IG51bGxwdHIpCisgICAgICAgICAg ICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9ERUNPRElORywgRkZNU19FUlJPUl9D T0RFQywKKyAgICAgICAgICAgICAgICAgIlZpZGVvIGNvZGVjIG5vdCBmb3VuZCIpOworLS0gCisy LjQwLjAKKworRnJvbSA5NmNiZjM4ZWE5MzgxODI5YTEzMTRmNDMyYTJjNjA0OTVkY2VmYWFkIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVp dGVuaHVpc0BnbWFpbC5jb20+CitEYXRlOiBUdWUsIDQgTWF5IDIwMjEgMTQ6MTI6NDEgKzAxMDAK K1N1YmplY3Q6IFtQQVRDSF0gYWxsOiBVcGRhdGUgQVZQYWNrZXQgQVBJIHVzYWdlCisKK0FWUGFj a2V0cyBtdXN0IGFsbCBiZSBvbiB0aGUgaGVhcCBub3csIHNpbmNlIGl0IGlzIG5vIGxvbmdlcgor cGFydCBvZiB0aGUgbGliYXYqIEFCSS4KKworU2lnbmVkLW9mZi1ieTogRGVyZWsgQnVpdGVuaHVp cyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CistLS0KKyBzcmMvY29yZS9hdWRpb3NvdXJj ZS5jcHAgfCAxNiArKysrKystLS0tCisgc3JjL2NvcmUvaW5kZXhpbmcuY3BwICAgIHwgNjMgKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9jb3JlL2luZGV4aW5n LmggICAgICB8ICA0ICstLQorIHNyYy9jb3JlL3V0aWxzLmNwcCAgICAgICB8ICA2IC0tLS0KKyBz cmMvY29yZS91dGlscy5oICAgICAgICAgfCAgMSAtCisgc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3Bw IHwgMzAgKysrKysrKysrKy0tLS0tLS0tLQorIDYgZmlsZXMgY2hhbmdlZCwgNjQgaW5zZXJ0aW9u cygrKSwgNTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9hdWRpb3NvdXJj ZS5jcHAgYi9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKK2luZGV4IDM3Y2Y5YWUuLmU0Y2U5N2Mg MTAwNjQ0CistLS0gYS9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKKysrKyBiL3NyYy9jb3JlL2F1 ZGlvc291cmNlLmNwcAorQEAgLTI4NSwxMCArMjg1LDE1IEBAIEZGTVNfQXVkaW9Tb3VyY2U6OkF1 ZGlvQmxvY2sgKkZGTVNfQXVkaW9Tb3VyY2U6OkNhY2hlQmxvY2soQ2FjaGVJdGVyYXRvciAmcG9z KSB7CisgaW50IEZGTVNfQXVkaW9Tb3VyY2U6OkRlY29kZU5leHRCbG9jayhDYWNoZUl0ZXJhdG9y ICpwb3MpIHsKKyAgICAgQ3VycmVudEZyYW1lID0gJkZyYW1lc1tQYWNrZXROdW1iZXJdOworIAor LSAgICBBVlBhY2tldCBQYWNrZXQ7CistICAgIGlmICghUmVhZFBhY2tldCgmUGFja2V0KSkKKysg ICAgQVZQYWNrZXQgKlBhY2tldCA9IGF2X3BhY2tldF9hbGxvYygpOworKyAgICBpZiAoIVBhY2tl dCkKKysgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfUEFSU0VSLCBGRk1T X0VSUk9SX0FMTE9DQVRJT05fRkFJTEVELAorKyAgICAgICAgICAgICJDb3VsZCBub3QgYWxsb2Nh dGUgcGFja2V0LiIpOworKyAgICBpZiAoIVJlYWRQYWNrZXQoUGFja2V0KSkgeworKyAgICAgICAg YXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihG Rk1TX0VSUk9SX1BBUlNFUiwgRkZNU19FUlJPUl9VTktOT1dOLAorICAgICAgICAgICAgICJSZWFk UGFja2V0IHVuZXhwZWN0ZWRseSBmYWlsZWQgdG8gcmVhZCBhIHBhY2tldCIpOworKyAgICB9Cisg CisgICAgIC8vIFJlYWRQYWNrZXQgbWF5IGhhdmUgY2hhbmdlZCB0aGUgcGFja2V0IG51bWJlcgor ICAgICBDdXJyZW50RnJhbWUgPSAmRnJhbWVzW1BhY2tldE51bWJlcl07CitAQCAtMjk3LDggKzMw Miw5IEBAIGludCBGRk1TX0F1ZGlvU291cmNlOjpEZWNvZGVOZXh0QmxvY2soQ2FjaGVJdGVyYXRv ciAqcG9zKSB7CisgICAgIGludCBOdW1iZXJPZlNhbXBsZXMgPSAwOworICAgICBBdWRpb0Jsb2Nr ICpDYWNoZWRCbG9jayA9IG51bGxwdHI7CisgICAgIAorLSAgICBpbnQgUmV0ID0gYXZjb2RlY19z ZW5kX3BhY2tldChDb2RlY0NvbnRleHQsICZQYWNrZXQpOworLSAgICBhdl9wYWNrZXRfdW5yZWYo JlBhY2tldCk7CisrICAgIGludCBSZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KENvZGVjQ29udGV4 dCwgUGFja2V0KTsKKysgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisrICAgIGF2X3BhY2tl dF9mcmVlKCZQYWNrZXQpOworIAorICAgICBhdl9mcmFtZV91bnJlZihEZWNvZGVGcmFtZSk7Cisg ICAgIFJldCA9IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZShDb2RlY0NvbnRleHQsIERlY29kZUZyYW1l KTsKK0BAIC01MTMsOCArNTE5LDYgQEAgdm9pZCBGRk1TX0F1ZGlvU291cmNlOjpTZWVrKCkgewor IH0KKyAKKyBib29sIEZGTVNfQXVkaW9Tb3VyY2U6OlJlYWRQYWNrZXQoQVZQYWNrZXQgKlBhY2tl dCkgeworLSAgICBJbml0TnVsbFBhY2tldCgqUGFja2V0KTsKKy0KKyAgICAgd2hpbGUgKGF2X3Jl YWRfZnJhbWUoRm9ybWF0Q29udGV4dCwgUGFja2V0KSA+PSAwKSB7CisgICAgICAgICBpZiAoUGFj a2V0LT5zdHJlYW1faW5kZXggPT0gVHJhY2tOdW1iZXIpIHsKKyAgICAgICAgICAgICAvLyBSZXF1 aXJlZCBiZWNhdXNlIG5vdCBhbGwgYXVkaW8gcGFja2V0cywgZXNwZWNpYWxseSBpbiBvZ2csIGhh dmUgYSBwdHMuIFVzZSB0aGUgcHJldmlvdXMgdmFsaWQgcGFja2V0J3MgcHRzIGluc3RlYWQuCitk aWZmIC0tZ2l0IGEvc3JjL2NvcmUvaW5kZXhpbmcuY3BwIGIvc3JjL2NvcmUvaW5kZXhpbmcuY3Bw CitpbmRleCAyM2ZiOTViLi5lNTQ3YzVhIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvaW5kZXhpbmcu Y3BwCisrKysgYi9zcmMvY29yZS9pbmRleGluZy5jcHAKK0BAIC0zMjAsNyArMzIwLDcgQEAgdm9p ZCBGRk1TX0luZGV4ZXI6OkNoZWNrQXVkaW9Qcm9wZXJ0aWVzKGludCBUcmFjaywgQVZDb2RlY0Nv bnRleHQgKkNvbnRleHQpIHsKKyAgICAgfQorIH0KKyAKKy12b2lkIEZGTVNfSW5kZXhlcjo6UGFy c2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBr dCwgaW50ICpSZXBlYXRQaWN0LAorK3ZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0 KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAqcGt0LCBpbnQgKlJlcGVh dFBpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpGcmFtZVR5 cGUsIGJvb2wgKkludmlzaWJsZSwgZW51bSBBVlBpY3R1cmVTdHJ1Y3R1cmUgKkxhc3RQaWNTdHJ1 Y3QpIHsKKyAgICAgaWYgKFZpZGVvQ29udGV4dC5QYXJzZXIpIHsKKyAgICAgICAgIHVpbnQ4X3Qg Kk9COworQEAgLTMzMCw4ICszMzAsOCBAQCB2b2lkIEZGTVNfSW5kZXhlcjo6UGFyc2VWaWRlb1Bh Y2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBrdAorICAgICAg ICAgYXZfcGFyc2VyX3BhcnNlMihWaWRlb0NvbnRleHQuUGFyc2VyLAorICAgICAgICAgICAgIFZp ZGVvQ29udGV4dC5Db2RlY0NvbnRleHQsCisgICAgICAgICAgICAgJk9CLCAmT0JTaXplLAorLSAg ICAgICAgICAgIHBrdC5kYXRhLCBwa3Quc2l6ZSwKKy0gICAgICAgICAgICBwa3QucHRzLCBwa3Qu ZHRzLCBwa3QucG9zKTsKKysgICAgICAgICAgICBwa3QtPmRhdGEsIHBrdC0+c2l6ZSwKKysgICAg ICAgICAgICBwa3QtPnB0cywgcGt0LT5kdHMsIHBrdC0+cG9zKTsKKyAKKyAgICAgICAgIC8vIEgu MjY0IChQQUZGKSBhbmQgSEVWQyBtYXkgaGF2ZSBvbmUgZmllbGQgcGVyIHBhY2tldCwgc28gd2Ug bmVlZCB0byB0cmFjaworICAgICAgICAgLy8gd2hlbiB3ZSBoYXZlIGEgZnVsbCBvciBoYWxmIGZy YW1lIGF2YWlsYWJsZSwgYW5kIG1hcmsgb25lIG9mIHRoZW0gYXMKK0BAIC0zNTEsMTUgKzM1MSwx NSBAQCB2b2lkIEZGTVNfSW5kZXhlcjo6UGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQg JlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBrdAorIAorICAgICAgICAgKlJlcGVhdFBpY3QgPSBW aWRlb0NvbnRleHQuUGFyc2VyLT5yZXBlYXRfcGljdDsKKyAgICAgICAgICpGcmFtZVR5cGUgPSBW aWRlb0NvbnRleHQuUGFyc2VyLT5waWN0X3R5cGU7CistICAgICAgICAqSW52aXNpYmxlID0gKElu Y29tcGxldGVGcmFtZSB8fCBWaWRlb0NvbnRleHQuUGFyc2VyLT5yZXBlYXRfcGljdCA8IDAgfHwg KHBrdC5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpKTsKKysgICAgICAgICpJbnZpc2libGUg PSAoSW5jb21wbGV0ZUZyYW1lIHx8IFZpZGVvQ29udGV4dC5QYXJzZXItPnJlcGVhdF9waWN0IDwg MCB8fCAocGt0LT5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpKTsKKyAgICAgfSBlbHNlIHsK Ky0gICAgICAgICpJbnZpc2libGUgPSAhIShwa3QuZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJE KTsKKysgICAgICAgICpJbnZpc2libGUgPSAhIShwa3QtPmZsYWdzICYgQVZfUEtUX0ZMQUdfRElT Q0FSRCk7CisgICAgIH0KKyAKKyAgICAgaWYgKFZpZGVvQ29udGV4dC5Db2RlY0NvbnRleHQtPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOCkKKy0gICAgICAgIFBhcnNlVlA4KHBrdC5kYXRhWzBd LCBJbnZpc2libGUsIEZyYW1lVHlwZSk7CisrICAgICAgICBQYXJzZVZQOChwa3QtPmRhdGFbMF0s IEludmlzaWJsZSwgRnJhbWVUeXBlKTsKKyAgICAgZWxzZSBpZiAoVmlkZW9Db250ZXh0LkNvZGVj Q29udGV4dC0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5KQorLSAgICAgICAgUGFyc2VWUDko cGt0LmRhdGFbMF0sIEludmlzaWJsZSwgRnJhbWVUeXBlKTsKKysgICAgICAgIFBhcnNlVlA5KHBr dC0+ZGF0YVswXSwgSW52aXNpYmxlLCBGcmFtZVR5cGUpOworIH0KKyAKKyB2b2lkIEZGTVNfSW5k ZXhlcjo6RnJlZSgpIHsKK0BAIC00NTgsMzIgKzQ1OCwzNiBAQCBGRk1TX0luZGV4ICpGRk1TX0lu ZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICB9CisgICAgIH0KKyAKKy0gICAgQVZQYWNr ZXQgUGFja2V0OworLSAgICBJbml0TnVsbFBhY2tldChQYWNrZXQpOworKyAgICBBVlBhY2tldCAq UGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrICAgIGlmICghUGFja2V0KQorKyAgICAgICAg dGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9DT0RFQywgRkZNU19FUlJPUl9BTExPQ0FU SU9OX0ZBSUxFRCwKKysgICAgICAgICAgICAiQ291bGQgbm90IGFsbG9jYXRlIHBhY2tldC4iKTsK KyAgICAgc3RkOjp2ZWN0b3I8aW50NjRfdD4gTGFzdFZhbGlkVFMoRm9ybWF0Q29udGV4dC0+bmJf c3RyZWFtcywgQVZfTk9QVFNfVkFMVUUpOworIAorICAgICBpbnQ2NF90IGZpbGVzaXplID0gYXZp b19zaXplKEZvcm1hdENvbnRleHQtPnBiKTsKKyAgICAgZW51bSBBVlBpY3R1cmVTdHJ1Y3R1cmUg TGFzdFBpY1N0cnVjdCA9IEFWX1BJQ1RVUkVfU1RSVUNUVVJFX1VOS05PV047CistICAgIHdoaWxl IChhdl9yZWFkX2ZyYW1lKEZvcm1hdENvbnRleHQsICZQYWNrZXQpID49IDApIHsKKysgICAgd2hp bGUgKGF2X3JlYWRfZnJhbWUoRm9ybWF0Q29udGV4dCwgUGFja2V0KSA+PSAwKSB7CisgICAgICAg ICAvLyBVcGRhdGUgcHJvZ3Jlc3MKKyAgICAgICAgIC8vIEZvcm1hdENvbnRleHQtPnBiIGNhbiBh cHBhcmVudGx5IGJlIE5VTEwgd2hlbiBvcGVuaW5nIGltYWdlcy4KKyAgICAgICAgIGlmIChJQyAm JiBGb3JtYXRDb250ZXh0LT5wYikgeworLSAgICAgICAgICAgIGlmICgoKklDKShGb3JtYXRDb250 ZXh0LT5wYi0+cG9zLCBmaWxlc2l6ZSwgSUNQcml2YXRlKSkKKysgICAgICAgICAgICBpZiAoKCpJ QykoRm9ybWF0Q29udGV4dC0+cGItPnBvcywgZmlsZXNpemUsIElDUHJpdmF0ZSkpIHsKKysgICAg ICAgICAgICAgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgICAgICAgICAgICAgICAgIHRo cm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfQ0FOQ0VMTEVELCBGRk1TX0VSUk9SX1VTRVIs CisgICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsbGVkIGJ5IHVzZXIiKTsKKysgICAgICAgICAg ICB9CisgICAgICAgICB9CistICAgICAgICBpZiAoIUluZGV4TWFzay5jb3VudChQYWNrZXQuc3Ry ZWFtX2luZGV4KSkgeworLSAgICAgICAgICAgIGF2X3BhY2tldF91bnJlZigmUGFja2V0KTsKKysg ICAgICAgIGlmICghSW5kZXhNYXNrLmNvdW50KFBhY2tldC0+c3RyZWFtX2luZGV4KSkgeworKyAg ICAgICAgICAgIGF2X3BhY2tldF91bnJlZihQYWNrZXQpOworICAgICAgICAgICAgIGNvbnRpbnVl OworICAgICAgICAgfQorIAorLSAgICAgICAgaW50IFRyYWNrID0gUGFja2V0LnN0cmVhbV9pbmRl eDsKKysgICAgICAgIGludCBUcmFjayA9IFBhY2tldC0+c3RyZWFtX2luZGV4OworICAgICAgICAg RkZNU19UcmFjayAmVHJhY2tJbmZvID0gKCpUcmFja0luZGljZXMpW1RyYWNrXTsKKy0gICAgICAg IGJvb2wgS2V5RnJhbWUgPSAhIShQYWNrZXQuZmxhZ3MgJiBBVl9QS1RfRkxBR19LRVkpOworKyAg ICAgICAgYm9vbCBLZXlGcmFtZSA9ICEhKFBhY2tldC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19LRVkp OworICAgICAgICAgUmVhZFRTKFBhY2tldCwgTGFzdFZhbGlkVFNbVHJhY2tdLCAoKlRyYWNrSW5k aWNlcylbVHJhY2tdLlVzZURUUyk7CisgCisgICAgICAgICBpZiAoRm9ybWF0Q29udGV4dC0+c3Ry ZWFtc1tUcmFja10tPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykg eworLSAgICAgICAgICAgIGludDY0X3QgUFRTID0gVHJhY2tJbmZvLlVzZURUUyA/IFBhY2tldC5k dHMgOiBQYWNrZXQucHRzOworKyAgICAgICAgICAgIGludDY0X3QgUFRTID0gVHJhY2tJbmZvLlVz ZURUUyA/IFBhY2tldC0+ZHRzIDogUGFja2V0LT5wdHM7CisgICAgICAgICAgICAgaWYgKFBUUyA9 PSBBVl9OT1BUU19WQUxVRSkgeworICAgICAgICAgICAgICAgICAvLyBWUHggYWx0LXJlZnMgYXJl IG91dHB1dCBhcyBwYWNrZXRzIHdoaWNoIGxhY2sgdGltZXN0bXBzIG9yIGR1cmF0aW9ucywgc2lu Y2UKKyAgICAgICAgICAgICAgICAgLy8gdGhleSBhcmUgaW52aXNpYmxlLiBDdXJyZW50bHksIHRo ZSB0aW1lc3RhbXAgbWFuZ2xpbmcgY29kZSBpbiBsaWJhdmZvcm1hdAorQEAgLTQ5NSw5ICs0OTks MTEgQEAgRkZNU19JbmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAg ICAgICAgICAvLyBGRk1TMiBjdXJyZW50bHkgc29ydHMgcGFja2V0cyBieSBQVFMsIHdoaWNoIHdp bGwgYnJlYWsgZGVjb2RpbmcsIG90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAgYm9vbCBIYXNB bHRSZWZzID0gKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfVlA4IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX1ZQOSk7CistICAgICAgICAgICAgICAgIGlmIChQYWNrZXQuZHVyYXRpb24g PT0gMCAmJiAhSGFzQWx0UmVmcykKKysgICAgICAgICAgICAgICAgaWYgKFBhY2tldC0+ZHVyYXRp b24gPT0gMCAmJiAhSGFzQWx0UmVmcykgeworKyAgICAgICAgICAgICAgICAgICAgYXZfcGFja2V0 X2ZyZWUoJlBhY2tldCk7CisgICAgICAgICAgICAgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlv bihGRk1TX0VSUk9SX0lOREVYSU5HLCBGRk1TX0VSUk9SX1BBUlNFUiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAiSW52YWxpZCBwYWNrZXQgcHRzLCBkdHMsIGFuZCBkdXJhdGlvbiIpOworKyAg ICAgICAgICAgICAgICB9CisgCisgICAgICAgICAgICAgICAgIGlmIChUcmFja0luZm8uZW1wdHko KSkKKyAgICAgICAgICAgICAgICAgICAgIFBUUyA9IDA7CitAQCAtNTEzLDcgKzUxOSw3IEBAIEZG TVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsKKyAgICAgICAgICAgICBQYXJz ZVZpZGVvUGFja2V0KEFWQ29udGV4dHNbVHJhY2tdLCBQYWNrZXQsICZSZXBlYXRQaWN0LCAmRnJh bWVUeXBlLCAmSW52aXNpYmxlLCAmTGFzdFBpY1N0cnVjdCk7CisgCisgICAgICAgICAgICAgVHJh Y2tJbmZvLkFkZFZpZGVvRnJhbWUoUFRTLCBSZXBlYXRQaWN0LCBLZXlGcmFtZSwKKy0gICAgICAg ICAgICAgICAgRnJhbWVUeXBlLCBQYWNrZXQucG9zLCBJbnZpc2libGUpOworKyAgICAgICAgICAg ICAgICBGcmFtZVR5cGUsIFBhY2tldC0+cG9zLCBJbnZpc2libGUpOworICAgICAgICAgfSBlbHNl IGlmIChGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUg PT0gQVZNRURJQV9UWVBFX0FVRElPKSB7CisgICAgICAgICAgICAgLy8gRm9yIHZpZGVvIHNlZWtp bmcgdGltZXN0YW1wcyBhcmUgdXNlZCBvbmx5IGlmIGFsbCBwYWNrZXRzIGhhdmUKKyAgICAgICAg ICAgICAvLyB0aW1lc3RhbXBzLCB3aGlsZSBmb3IgYXVkaW8gdGhleSdyZSB1c2VkIGlmIGFueSBo YXZlIHRpbWVzdGFtcHMsCitAQCAtNTIyLDI4ICs1MjgsMjkgQEAgRkZNU19JbmRleCAqRkZNU19J bmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAgICAgICBUcmFja0luZm8uSGFzVFMg PSB0cnVlOworIAorICAgICAgICAgICAgIGludDY0X3QgU3RhcnRTYW1wbGUgPSBBVkNvbnRleHRz W1RyYWNrXS5DdXJyZW50U2FtcGxlOworLSAgICAgICAgICAgIHVpbnQzMl90IFNhbXBsZUNvdW50 ID0gSW5kZXhBdWRpb1BhY2tldChUcmFjaywgJlBhY2tldCwgQVZDb250ZXh0c1tUcmFja10sICpU cmFja0luZGljZXMpOworKyAgICAgICAgICAgIHVpbnQzMl90IFNhbXBsZUNvdW50ID0gSW5kZXhB dWRpb1BhY2tldChUcmFjaywgUGFja2V0LCBBVkNvbnRleHRzW1RyYWNrXSwgKlRyYWNrSW5kaWNl cyk7CisgICAgICAgICAgICAgVHJhY2tJbmZvLlNhbXBsZVJhdGUgPSBBVkNvbnRleHRzW1RyYWNr XS5Db2RlY0NvbnRleHQtPnNhbXBsZV9yYXRlOworIAorICAgICAgICAgICAgIFRyYWNrSW5mby5B ZGRBdWRpb0ZyYW1lKExhc3RWYWxpZFRTW1RyYWNrXSwKKy0gICAgICAgICAgICAgICAgU3RhcnRT YW1wbGUsIFNhbXBsZUNvdW50LCBLZXlGcmFtZSwgUGFja2V0LnBvcywgUGFja2V0LmZsYWdzICYg QVZfUEtUX0ZMQUdfRElTQ0FSRCk7CisrICAgICAgICAgICAgICAgIFN0YXJ0U2FtcGxlLCBTYW1w bGVDb3VudCwgS2V5RnJhbWUsIFBhY2tldC0+cG9zLCBQYWNrZXQtPmZsYWdzICYgQVZfUEtUX0ZM QUdfRElTQ0FSRCk7CisgICAgICAgICB9CisgCistICAgICAgICBpZiAoIShQYWNrZXQuZmxhZ3Mg JiBBVl9QS1RfRkxBR19ESVNDQVJEKSkKKy0gICAgICAgICAgICBUcmFja0luZm8uTGFzdER1cmF0 aW9uID0gUGFja2V0LmR1cmF0aW9uOworKyAgICAgICAgaWYgKCEoUGFja2V0LT5mbGFncyAmIEFW X1BLVF9GTEFHX0RJU0NBUkQpKQorKyAgICAgICAgICAgIFRyYWNrSW5mby5MYXN0RHVyYXRpb24g PSBQYWNrZXQtPmR1cmF0aW9uOworIAorLSAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQp OworKyAgICAgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisgICAgIH0KKysgICAgYXZfcGFj a2V0X2ZyZWUoJlBhY2tldCk7CisgCisgICAgIFRyYWNrSW5kaWNlcy0+RmluYWxpemUoQVZDb250 ZXh0cywgRm9ybWF0Q29udGV4dC0+aWZvcm1hdC0+bmFtZSk7CisgICAgIHJldHVybiBUcmFja0lu ZGljZXMucmVsZWFzZSgpOworIH0KKyAKKy12b2lkIEZGTVNfSW5kZXhlcjo6UmVhZFRTKGNvbnN0 IEFWUGFja2V0ICZQYWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VEVFMpIHsKKy0gICAgaWYg KCFVc2VEVFMgJiYgUGFja2V0LnB0cyAhPSBBVl9OT1BUU19WQUxVRSkKKy0gICAgICAgIFRTID0g UGFja2V0LnB0czsKKyt2b2lkIEZGTVNfSW5kZXhlcjo6UmVhZFRTKGNvbnN0IEFWUGFja2V0ICpQ YWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VEVFMpIHsKKysgICAgaWYgKCFVc2VEVFMgJiYg UGFja2V0LT5wdHMgIT0gQVZfTk9QVFNfVkFMVUUpCisrICAgICAgICBUUyA9IFBhY2tldC0+cHRz OworICAgICBpZiAoVFMgPT0gQVZfTk9QVFNfVkFMVUUpCisgICAgICAgICBVc2VEVFMgPSB0cnVl OworLSAgICBpZiAoVXNlRFRTICYmIFBhY2tldC5kdHMgIT0gQVZfTk9QVFNfVkFMVUUpCistICAg ICAgICBUUyA9IFBhY2tldC5kdHM7CisrICAgIGlmIChVc2VEVFMgJiYgUGFja2V0LT5kdHMgIT0g QVZfTk9QVFNfVkFMVUUpCisrICAgICAgICBUUyA9IFBhY2tldC0+ZHRzOworIH0KK2RpZmYgLS1n aXQgYS9zcmMvY29yZS9pbmRleGluZy5oIGIvc3JjL2NvcmUvaW5kZXhpbmcuaAoraW5kZXggM2Nm YzNjMy4uNWMwNjg2OCAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2luZGV4aW5nLmgKKysrKyBiL3Ny Yy9jb3JlL2luZGV4aW5nLmgKK0BAIC04MCwxMCArODAsMTAgQEAgcHJpdmF0ZToKKyAgICAgaW50 NjRfdCBGaWxlc2l6ZTsKKyAgICAgdWludDhfdCBEaWdlc3RbMjBdOworIAorLSAgICB2b2lkIFJl YWRUUyhjb25zdCBBVlBhY2tldCAmUGFja2V0LCBpbnQ2NF90ICZUUywgYm9vbCAmVXNlRFRTKTsK KysgICAgdm9pZCBSZWFkVFMoY29uc3QgQVZQYWNrZXQgKlBhY2tldCwgaW50NjRfdCAmVFMsIGJv b2wgJlVzZURUUyk7CisgICAgIHZvaWQgQ2hlY2tBdWRpb1Byb3BlcnRpZXMoaW50IFRyYWNrLCBB VkNvZGVjQ29udGV4dCAqQ29udGV4dCk7CisgICAgIHVpbnQzMl90IEluZGV4QXVkaW9QYWNrZXQo aW50IFRyYWNrLCBBVlBhY2tldCAqUGFja2V0LCBTaGFyZWRBVkNvbnRleHQgJkNvbnRleHQsIEZG TVNfSW5kZXggJlRyYWNrSW5kaWNlcyk7CistICAgIHZvaWQgUGFyc2VWaWRlb1BhY2tldChTaGFy ZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBrdCwgaW50ICpSZXBlYXRQaWN0 LCBpbnQgKkZyYW1lVHlwZSwgYm9vbCAqSW52aXNpYmxlLCBlbnVtIEFWUGljdHVyZVN0cnVjdHVy ZSAqTGFzdFBpY1N0cnVjdCk7CisrICAgIHZvaWQgUGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNv bnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgKnBrdCwgaW50ICpSZXBlYXRQaWN0LCBpbnQg KkZyYW1lVHlwZSwgYm9vbCAqSW52aXNpYmxlLCBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSAqTGFz dFBpY1N0cnVjdCk7CisgICAgIHZvaWQgRnJlZSgpOworIHB1YmxpYzoKKyAgICAgRkZNU19JbmRl eGVyKGNvbnN0IGNoYXIgKkZpbGVuYW1lKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS91dGlscy5j cHAgYi9zcmMvY29yZS91dGlscy5jcHAKK2luZGV4IGNlNjc1MzMuLjhhMmU5OTcgMTAwNjQ0Cist LS0gYS9zcmMvY29yZS91dGlscy5jcHAKKysrKyBiL3NyYy9jb3JlL3V0aWxzLmNwcAorQEAgLTYy LDEyICs2Miw2IEBAIHZvaWQgQ2xlYXJFcnJvckluZm8oRkZNU19FcnJvckluZm8gKkVycm9ySW5m bykgeworICAgICB9CisgfQorIAorLXZvaWQgSW5pdE51bGxQYWNrZXQoQVZQYWNrZXQgJnBrdCkg eworLSAgICBhdl9pbml0X3BhY2tldCgmcGt0KTsKKy0gICAgcGt0LmRhdGEgPSBudWxscHRyOwor LSAgICBwa3Quc2l6ZSA9IDA7CistfQorLQorIHZvaWQgRmlsbEFQKEZGTVNfQXVkaW9Qcm9wZXJ0 aWVzICZBUCwgQVZDb2RlY0NvbnRleHQgKkNUWCwgRkZNU19UcmFjayAmRnJhbWVzKSB7CisgICAg IEFQLlNhbXBsZUZvcm1hdCA9IHN0YXRpY19jYXN0PEZGTVNfU2FtcGxlRm9ybWF0Pihhdl9nZXRf cGFja2VkX3NhbXBsZV9mbXQoQ1RYLT5zYW1wbGVfZm10KSk7CisgICAgIEFQLkJpdHNQZXJTYW1w bGUgPSBhdl9nZXRfYnl0ZXNfcGVyX3NhbXBsZShDVFgtPnNhbXBsZV9mbXQpICogODsKK2RpZmYg LS1naXQgYS9zcmMvY29yZS91dGlscy5oIGIvc3JjL2NvcmUvdXRpbHMuaAoraW5kZXggOTgxOWRj Ny4uMDAzYWI3OSAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL3V0aWxzLmgKKysrKyBiL3NyYy9jb3Jl L3V0aWxzLmgKK0BAIC01OCw3ICs1OCw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxUPiBtYWtlX3VuaXF1 ZShBcmdzJiYuLi4gYXJncykgeworIH0KKyAKKyB2b2lkIENsZWFyRXJyb3JJbmZvKEZGTVNfRXJy b3JJbmZvICpFcnJvckluZm8pOworLXZvaWQgSW5pdE51bGxQYWNrZXQoQVZQYWNrZXQgJnBrdCk7 Cisgdm9pZCBGaWxsQVAoRkZNU19BdWRpb1Byb3BlcnRpZXMgJkFQLCBBVkNvZGVjQ29udGV4dCAq Q1RYLCBGRk1TX1RyYWNrICZGcmFtZXMpOworIAorIHZvaWQgTEFWRk9wZW5GaWxlKGNvbnN0IGNo YXIgKlNvdXJjZUZpbGUsIEFWRm9ybWF0Q29udGV4dCAqJkZvcm1hdENvbnRleHQsIGludCBUcmFj ayk7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwIGIvc3JjL2NvcmUvdmlk ZW9zb3VyY2UuY3BwCitpbmRleCAwNmJkMTYxLi5iODg5OTcwIDEwMDY0NAorLS0tIGEvc3JjL2Nv cmUvdmlkZW9zb3VyY2UuY3BwCisrKysgYi9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKK0BAIC02 NzMsMzAgKzY3MywzNCBAQCB2b2lkIEZGTVNfVmlkZW9Tb3VyY2U6OkRlY29kZU5leHRGcmFtZShp bnQ2NF90ICZBU3RhcnRUaW1lLCBpbnQ2NF90ICZQb3MpIHsKKyAgICAgaWYgKEhhc1BlbmRpbmdE ZWxheWVkRnJhbWVzKCkpCisgICAgICAgICByZXR1cm47CisgCistICAgIEFWUGFja2V0IFBhY2tl dDsKKy0gICAgSW5pdE51bGxQYWNrZXQoUGFja2V0KTsKKy0KKy0gICAgd2hpbGUgKFJlYWRGcmFt ZSgmUGFja2V0KSA+PSAwKSB7CistICAgICAgICBpZiAoUGFja2V0LnN0cmVhbV9pbmRleCAhPSBW aWRlb1RyYWNrKSB7CistICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworKyAg ICBBVlBhY2tldCAqUGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrICAgIGlmICghUGFja2V0 KQorKyAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9ERUNPRElORywgRkZN U19FUlJPUl9BTExPQ0FUSU9OX0ZBSUxFRCwKKysgICAgICAgICAgICAiQ291bGQgbm90IGFsbG9j YXRlIHBhY2tldC4iKTsKKysKKysgICAgd2hpbGUgKFJlYWRGcmFtZShQYWNrZXQpID49IDApIHsK KysgICAgICAgIGlmIChQYWNrZXQtPnN0cmVhbV9pbmRleCAhPSBWaWRlb1RyYWNrKSB7CisrICAg ICAgICAgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisgICAgICAgICAgICAgY29udGludWU7 CisgICAgICAgICB9CisgCisgICAgICAgICBpZiAoQVN0YXJ0VGltZSA8IDApCistICAgICAgICAg ICAgQVN0YXJ0VGltZSA9IEZyYW1lcy5Vc2VEVFMgPyBQYWNrZXQuZHRzIDogUGFja2V0LnB0czsK KysgICAgICAgICAgICBBU3RhcnRUaW1lID0gRnJhbWVzLlVzZURUUyA/IFBhY2tldC0+ZHRzIDog UGFja2V0LT5wdHM7CisgCisgICAgICAgICBpZiAoUG9zIDwgMCkKKy0gICAgICAgICAgICBQb3Mg PSBQYWNrZXQucG9zOworKyAgICAgICAgICAgIFBvcyA9IFBhY2tldC0+cG9zOworIAorLSAgICAg ICAgYm9vbCBGcmFtZUZpbmlzaGVkID0gRGVjb2RlUGFja2V0KCZQYWNrZXQpOworLSAgICAgICAg YXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworLSAgICAgICAgaWYgKEZyYW1lRmluaXNoZWQpCisr ICAgICAgICBib29sIEZyYW1lRmluaXNoZWQgPSBEZWNvZGVQYWNrZXQoUGFja2V0KTsKKysgICAg ICAgIGF2X3BhY2tldF91bnJlZihQYWNrZXQpOworKyAgICAgICAgaWYgKEZyYW1lRmluaXNoZWQp IHsKKysgICAgICAgICAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgICAgICBy ZXR1cm47CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgLy8gRmx1c2ggZmluYWwgZnJhbWVz CistICAgIEluaXROdWxsUGFja2V0KFBhY2tldCk7CistICAgIERlY29kZVBhY2tldCgmUGFja2V0 KTsKKysgICAgRGVjb2RlUGFja2V0KFBhY2tldCk7CisrICAgIGF2X3BhY2tldF9mcmVlKCZQYWNr ZXQpOworIH0KKyAKKyBib29sIEZGTVNfVmlkZW9Tb3VyY2U6OlNlZWtUbyhpbnQgbiwgaW50IFNl ZWtPZmZzZXQpIHsKKy0tIAorMi40MC4wCisKK0Zyb20gYmY5ZTAzZTllMDg1MzRjMDI0ZTVhNzQ0 YTY0MzdjNGFhYzE2MDIwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlcmVrIEJ1 aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgorRGF0ZTogVHVlLCA0IE1heSAy MDIxIDE0OjIwOjQ3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBjb25maWd1cmU6IFJlbW92 ZSBkZXByZWNhdGVkIEFQSSB1c2UKKworU2lnbmVkLW9mZi1ieTogRGVyZWsgQnVpdGVuaHVpcyA8 ZGVyZWsuYnVpdGVuaHVpc0BnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA0ICsrLS0K KyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZm IC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiMzVlZjgwYmMuLmQx OTcxNGQwZiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitA QCAtMTAyLDEwICsxMDIsMTAgQEAgQ0ZMQUdTPSIkX0NGTEFHUyAkRkZNUEVHX0NGTEFHUyIKKwor IEFDX0RFRlVOKFtURVNUX0ZGTVBFR10sCisgICAgICAgICAgW0FDX0xJTktfSUZFTFNFKFtBQ19M QU5HX1BST0dSQU0oW1sKKy0gICAgICAgICAgICAjaW5jbHVkZSA8bGliYXZjb2RlYy9hdmNvZGVj Lmg+CisrICAgICAgICAgICAgI2luY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2Zm9ybWF0Lmg+CisgICAg ICAgICAgICAgI2luY2x1ZGUgPGxpYnN3c2NhbGUvc3dzY2FsZS5oPgorICAgICAgICAgICAgIF1d LFtbCistICAgICAgICAgICAgICAgIGF2Y29kZWNfcmVnaXN0ZXJfYWxsKCk7CisrICAgICAgICAg ICAgICAgIGF2Zm9ybWF0X25ldHdvcmtfaW5pdCgpOworICAgICAgICAgICAgICAgICBzd3NjYWxl X3ZlcnNpb24oKTsKKyAgICAgICAgICAgICBdXSldLCBbZXZhbCAkMT15ZXNdLCBbZXZhbCAkMT1u b10pCisgICAgICAgICBdKQorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXMyL3RlbXBsYXRlIGIv c3JjcGtncy9mZm1zMi90ZW1wbGF0ZQppbmRleCA2OGU4YTBjMTRiY2UuLjJhY2ZhZGFjNDRiMyAx MDA2NDQKLS0tIGEvc3JjcGtncy9mZm1zMi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZmbXMyL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZmZtczInCiBwa2du YW1lPWZmbXMyCiB2ZXJzaW9uPTIuNDAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0 eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1zaGFyZWQgLS1kaXNh YmxlLXN0YXRpYyIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBhdXRvY29uZiBhdXRvbWFr ZSBsaWJ0b29sIgoKRnJvbSBmYTRlN2U4ZWYwM2JmZWZmMjExYWM3MzYwZmJmMTlkN2RjZTFhODZh IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw MzQvMTE1XSBmcmVlcmRwOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIC4uLi9mcmVlcmRw L3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5wYXRjaCAgICB8IDQyICsrKysrKysrKysrKysrKysr KysKIHNyY3BrZ3MvZnJlZXJkcC90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICB8ICAyICst CiAyIGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBh dGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlh YS5wYXRjaCBiL3NyY3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hNDMyNGRhM2E4ODIKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFh LnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gYWEyY2I5YWE1ZmY1NTYyNDMzNTk4YmExNjhh NDY2ZTA3NTJiY2EwZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGFrYWxsYWJldGgg PGFrYWxsYWJldGhAcG9zdGVvLm5ldD4KK0RhdGU6IFR1ZSwgMTQgRmViIDIwMjMgMDc6NDg6NTQg KzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4ZWQgIzg2ODY6IFVwZGF0ZSBoMjY0IHRvIHVzZSBu ZXcgRkZNUEVHIEFQSQorCistLS0KKyBjaGFubmVscy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9m Zm1wZWcuYyB8IDIgKysKKyBsaWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMgICAgICAgICAg ICB8IDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0 IGEvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMgYi9jaGFubmVscy90 c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYworaW5kZXggMzM5NDYyZDg2NWYuLmJlZWE4 MGI3YTFlIDEwMDY0NAorLS0tIGEvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZt cGVnLmMKKysrKyBiL2NoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jCitA QCAtMjM5LDggKzIzOSwxMCBAQCBzdGF0aWMgQk9PTCB0c21mX2ZmbXBlZ19pbml0X3N0cmVhbShJ VFNNRkRlY29kZXIqIGRlY29kZXIsIGNvbnN0IFRTX0FNX01FRElBX1RZUAorIAkJfQorIAl9Cisg CisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lOVCg1OSwgMTgsIDEw MCkKKyAJaWYgKG1kZWNvZGVyLT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX1RS VU5DQVRFRCkKKyAJCW1kZWNvZGVyLT5jb2RlY19jb250ZXh0LT5mbGFncyB8PSBBVl9DT0RFQ19G TEFHX1RSVU5DQVRFRDsKKysjZW5kaWYKKyAKKyAJcmV0dXJuIFRSVUU7CisgfQorZGlmZiAtLWdp dCBhL2xpYmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYyBiL2xpYmZyZWVyZHAvY29kZWMvaDI2 NF9mZm1wZWcuYworaW5kZXggOGEyM2RiMjQ3M2MuLjg5NmEzMzMwMTliIDEwMDY0NAorLS0tIGEv bGliZnJlZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5jCisrKysgYi9saWJmcmVlcmRwL2NvZGVjL2gy NjRfZmZtcGVnLmMKK0BAIC02MTUsMTAgKzYxNSwxMiBAQCBzdGF0aWMgQk9PTCBsaWJhdmNvZGVj X2luaXQoSDI2NF9DT05URVhUKiBoMjY0KQorIAkJCWdvdG8gRVhDRVBUSU9OOworIAkJfQorIAor KyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fSU5UIDwgQVZfVkVSU0lPTl9JTlQoNTksIDE4LCAxMDAp CisgCQlpZiAoc3lzLT5jb2RlY0RlY29kZXItPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9U UlVOQ0FURUQpCisgCQl7CisgCQkJc3lzLT5jb2RlY0RlY29kZXJDb250ZXh0LT5mbGFncyB8PSBB Vl9DT0RFQ19GTEFHX1RSVU5DQVRFRDsKKyAJCX0KKysjZW5kaWYKKyAKKyAjaWZkZWYgV0lUSF9W QUFQSQorIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlcmRwL3RlbXBsYXRlIGIvc3JjcGtncy9m cmVlcmRwL3RlbXBsYXRlCmluZGV4IDI1ZThhYTk2NzdmMC4uNGQ1MWM4MTg5OTAyIDEwMDY0NAot LS0gYS9zcmNwa2dzL2ZyZWVyZHAvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mcmVlcmRwL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZnJlZXJkcCcKIHBrZ25h bWU9ZnJlZXJkcAogdmVyc2lvbj0yLjEwLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxk X3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURXSVRIX0FMU0E9T04gLURXSVRIX0NVUFM9 T0ZGIC1EV0lUSF9GRk1QRUc9T04KICAtRFdJVEhfR1NUUkVBTUVSXzBfMTA9T0ZGIC1EV0lUSF9H U1RSRUFNRVJfMV8wPU9GRiAtRFdJVEhfSlBFRz1PTgoKRnJvbSAwMzJhM2E0YWZiYmYwMDhkNmMx ODJjMGViMTg2YWYwNjJkZjE4YjQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwMzUvMTE1XSBnZXJiZXJhOiByZXZidW1wIGZvciBmZm1wZWct Ni4wCgotLS0KIHNyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ2Vy YmVyYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZQppbmRleCBhZTE0ZjM1Yzc2 N2MuLjJkYzBhYzBjZTAzYiAxMDA2NDQKLS0tIGEvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2dlcmJlcmEnCiBwa2duYW1lPWdlcmJlcmEKIHZlcnNpb249MS4xMi4xCi1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1E V0lUSF9TWVNURU1EPTAgLURXSVRIX0FWQ09ERUM9MSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNv bmZpZyIKCkZyb20gZTk3ZDdiMGJiZTZjOWUzOTM0OGY3NGRkMGU2OGRhYTg3NWIxMTliZiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM2LzEx NV0gZ29sZGVuZGljdDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dvbGRl bmRpY3QvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nb2xkZW5kaWN0L3RlbXBsYXRl IGIvc3JjcGtncy9nb2xkZW5kaWN0L3RlbXBsYXRlCmluZGV4IGY0YTA1NzU5ZjY5My4uOTdmNDQz NDdiMDNhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9nb2xkZW5kaWN0L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnZ29sZGVuZGljdCcKIHBrZ25hbWU9Z29sZGVuZGljdAogdmVyc2lvbj0xLjUuMAotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSJD T05GSUcrPXppbV9zdXBwb3J0IGdvbGRlbmRpY3QucHJvIgogaG9zdG1ha2VkZXBlbmRzPSJxdDUt cW1ha2UgcGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyIKQEAgLTEwLDcgKzEwLDcgQEAgbWFrZWRl cGVuZHM9InRpZmYtZGV2ZWwgcXQ1LWRldmVsIGxpYnZvcmJpcy1kZXZlbCB6bGliLWRldmVsCiAg cXQ1LXdlYmtpdC1kZXZlbCBsem8tZGV2ZWwgYnppcDItZGV2ZWwgbGliYW8tZGV2ZWwgcXQ1LXN2 Zy1kZXZlbAogIGxpYmViLWRldmVsIHF0NS14MTFleHRyYXMtZGV2ZWwgZmZtcGVnLWRldmVsIGxp Ymx6bWEtZGV2ZWwKICBxdDUtbXVsdGltZWRpYS1kZXZlbCIKLXNob3J0X2Rlc2M9IkEgZmVhdHVy ZS1yaWNoIGRpY3Rpb25hcnkgbG9va3VwIHByb2dyYW0iCitzaG9ydF9kZXNjPSJGZWF0dXJlLXJp Y2ggZGljdGlvbmFyeSBsb29rdXAgcHJvZ3JhbSIKIG1haW50YWluZXI9IkpvaG4gPG1lQGpvaG5u eW5hdG9yLmRldj4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHA6 Ly9nb2xkZW5kaWN0Lm9yZy8iCgpGcm9tIGNmZTRmZDBkMDYyZWZiNWI5Yjc5ZWY1MDQ3MTAxYTQ5 OTI1N2E0MDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDog W1BBVENIIDAzNy8xMTVdIGdzdC1saWJhdjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LWxpYmF2L3Rl bXBsYXRlIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKaW5kZXggOGM3MmZjM2U5N2VlLi4w NGMzOWJmZjE0ODkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnZ3N0LWxpYmF2JwogcGtnbmFtZT1nc3QtbGliYXYKIHZlcnNpb249MS4yMi4yCi1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIHlhc20iCiBtYWtlZGVwZW5kcz0ib3JjLWRldmVsIGdzdC1wbHVnaW5zLWJh c2UxLWRldmVsIGZmbXBlZy1kZXZlbCIKCkZyb20gMTc0ODVlOWEyN2Y5OGM5ZDEzZTRmOTBhNzRi NWZlYWUyNTIwNWUzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDM4LzExNV0gZ3N0LXBsdWdpbnMtYmFkMTogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLWJh ZDEvdGVtcGxhdGUKaW5kZXggNzdiZjc5OTgxYzIwLi41YzE1ODcyNGE2YzcgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1wbHVn aW5zLWJhZDEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdn c3QtcGx1Z2lucy1iYWQxJwogcGtnbmFtZT1nc3QtcGx1Z2lucy1iYWQxCiB2ZXJzaW9uPTEuMjIu MgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfaGVscGVyPSJnaXIiCiBidWlsZF9zdHls ZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EcGFja2FnZS1vcmlnaW49aHR0cHM6Ly92b2lkbGlu dXgub3JnIC1EZG9jPWRpc2FibGVkCgpGcm9tIDM2ZDNkZTFhZDdlNTk5YjJmNGIxODI5ZDg4OTgz MDMyMGVmZjE1OTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVj dDogW1BBVENIIDAzOS8xMTVdIGdzdC1ydHNwLXNlcnZlcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlIGIvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVt cGxhdGUKaW5kZXggMmYwYzBjNDVmZjgyLi45ODBmZDcyY2RkNGMgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVy L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LXJ0c3At c2VydmVyJwogcGtnbmFtZT1nc3QtcnRzcC1zZXJ2ZXIKIHZlcnNpb249MS4yMi4yCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIHB5dGhvbjMiCiBtYWtlZGVwZW5kcz0iZ2xpYi1kZXZlbCBnc3QtcGx1Z2lucy1iYWQx LWRldmVsIGdvYmplY3QtaW50cm9zcGVjdGlvbgoKRnJvbSBiZGNlM2FjNjFhZTJjNjMxYmJjY2Nh MjdkZThkYTA3MDc2OGJkNjAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNDAvMTE1XSBndXZjdmlldzogdXBkYXRlIHRvIDIuMC44LgoKLS0t CiBzcmNwa2dzL2d1dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2ggfCAxMCArKysrKysr KysrCiBzcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgfCAgNSArKy0t LQogMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRj aAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRj aCBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjUwM2MyYWYzYjc4YwotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaApAQCAtMCww ICsxLDEwIEBACistLS0gYS9ndXZjdmlldy9ndXZjdmlldy5jCisrKysgYi9ndXZjdmlldy9ndXZj dmlldy5jCitAQCAtMjgsNiArMjgsNyBAQAorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNs dWRlIDxzeXMvcmVzb3VyY2UuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8bG9j YWxlLmg+CisgCisgI2luY2x1ZGUgImd2aWV3LmgiCisgI2luY2x1ZGUgImd2aWV3djRsMmNvcmUu aCIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxhdGUgYi9zcmNwa2dzL2d1dmN2 aWV3L3RlbXBsYXRlCmluZGV4IDM0NWNmNjAwNmYyNC4uODZhN2ZkNjE5NjEyIDEwMDY0NAotLS0g YS9zcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxh dGUKQEAgLTEsOCArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdndXZjdmlldycKIHBrZ25h bWU9Z3V2Y3ZpZXcKLXZlcnNpb249Mi4wLjcKK3ZlcnNpb249Mi4wLjgKIHJldmlzaW9uPTEKLWNy ZWF0ZV93cmtzcmM9eWVzCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJn cz0iLS1kaXNhYmxlLXN0YXRpYyAtLWRpc2FibGUtZGViaWFuLW1lbnUiCiBob3N0bWFrZWRlcGVu ZHM9InBrZy1jb25maWcgaW50bHRvb2wgYXV0b2NvbmYgYXV0b21ha2UgbGlidG9vbCBnbGliLWRl dmVsIgpAQCAtMTQsNyArMTMsNyBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRs aW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwOi8v Z3V2Y3ZpZXcuc291cmNlZm9yZ2UubmV0LyIKIGRpc3RmaWxlcz0iJHtTT1VSQ0VGT1JHRV9TSVRF fS8ke3BrZ25hbWV9LyR7cGtnbmFtZX0tc3JjLSR7dmVyc2lvbn0udGFyLmJ6MiIKLWNoZWNrc3Vt PWY0N2Q1MWZiZDA2ZTQ0ZWVhYTFhODJmNGExNTNjOTI3NTI3YzkwZDk0NTE0MTk3YTcwYjI5NTYw MjhjYzhhZDQKK2NoZWNrc3VtPWEyMWY0ZTQ0ODI4NjY2NmNmMjdiYWZlZjUyOTBjYzk1M2EwYTE3 OTZiNzUyZTViYmU1MjEyNjZkYzEyMzBjODEKIAogcG9zdF9wYXRjaCgpIHsKIAlzZWQgJzMxYSNp bmNsdWRlIDxsb2NhbGUuaD4nIC1pICBndXZjdmlldy9ndXZjdmlldy5jCgpGcm9tIDViMmEzYmRj MzljYzQwYWE5NjIwN2RlOGIxNDIyZmQyOTM0MmE0OGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0MS8xMTVdIGhhbmRicmFrZTogdXBkYXRl IHRvIDEuNi4xCgotLS0KIC4uLi9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBh dGNoICAgIHwgMTEgKysrKysrLS0tLS0KIC4uLi9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12cGwt aW5jbHVkZS5wYXRjaCAgIHwgMTUgKysrKysrKysrKysrKysrCiBzcmNwa2dzL2hhbmRicmFrZS90 ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICB8IDE3ICsrKysrKysrKystLS0tLS0tCiAzIGZp bGVzIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvbGliaGItdnBsLWluY2x1ZGUucGF0 Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2ZpeC1taXNzaW5nLXgy NjUtbGluay1mbGFnLnBhdGNoIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2lu Zy14MjY1LWxpbmstZmxhZy5wYXRjaAppbmRleCAyNmRiMDM4NjdhMGMuLmQ2YmIyZWRhNjI3YSAx MDA2NDQKLS0tIGEvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxp bmstZmxhZy5wYXRjaAorKysgYi9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2ZpeC1taXNzaW5n LXgyNjUtbGluay1mbGFnLnBhdGNoCkBAIC0xLDE0ICsxLDE1IEBACiAtLS0gYS9ndGsvY29uZmln dXJlLmFjCiArKysgYi9ndGsvY29uZmlndXJlLmFjCiBAQCAtMjAzLDcgKzIwMyw3IEBACi0gCisK ICBBTV9DT05ESVRJT05BTChbTUlOR1ddLCBbdGVzdCAieCRtaW5nd19mbGFnIiA9ICJ4eWVzIl0p Ci0gCi0tSEJfTElCUz0iJEhCX0xJQlMgLWxoYW5kYnJha2UgLWxhdmZvcm1hdCAtbGF2ZmlsdGVy IC1sYXZjb2RlYyAtbGF2dXRpbCAtbGRhdjFkIC1sc3dyZXNhbXBsZSAtbHBvc3Rwcm9jIC1sZHZk bmF2IC1sZHZkcmVhZCAtbG1wM2xhbWUgLWx2b3JiaXMgLWx2b3JiaXNlbmMgLWxvZ2cgLWxzd3Nj YWxlIC1sdGhlb3JhZW5jIC1sdGhlb3JhZGVjIC1sdnB4IC1seiAtbGJ6MiAtbGJsdXJheSAtbGFz cyAtbGZvbnRjb25maWcgLWxmcmVldHlwZSAtbHhtbDIgLWxqYW5zc29uIC1sb3B1cyAtbHNwZWV4 IC1sdHVyYm9qcGVnIC1sbHptYSAtbHppbWciCi0rSEJfTElCUz0iJEhCX0xJQlMgLWxoYW5kYnJh a2UgLWxhdmZvcm1hdCAtbGF2ZmlsdGVyIC1sYXZjb2RlYyAtbGF2dXRpbCAtbGRhdjFkIC1sc3dy ZXNhbXBsZSAtbHBvc3Rwcm9jIC1sZHZkbmF2IC1sZHZkcmVhZCAtbG1wM2xhbWUgLWx2b3JiaXMg LWx2b3JiaXNlbmMgLWxvZ2cgLWxzd3NjYWxlIC1sdGhlb3JhZW5jIC1sdGhlb3JhZGVjIC1sdnB4 IC1seiAtbGJ6MiAtbGJsdXJheSAtbGFzcyAtbGZvbnRjb25maWcgLWxmcmVldHlwZSAtbHhtbDIg LWxqYW5zc29uIC1sb3B1cyAtbHNwZWV4IC1sdHVyYm9qcGVnIC1sbHptYSAtbHppbWcgLWxkbCIK KworLUhCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAt bGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5h diAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2Fs ZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3Mg LWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAt bHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sU3Z0QXYxRW5jIgorK0hCX0xJQlM9IiRIQl9MSUJT IC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxk YXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1l IC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9y YWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5 cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6 aW1nIC1sU3Z0QXYxRW5jIC1sZGwiCiAgSEJfQ1BQRkxBR1M9IiRIQl9DUFBGTEFHUyAkSEJJTkMi Ci0gCisKICBQS0dfQ0hFQ0tfTU9EVUxFUyhbeDI2NF0sIFt4MjY0XSwgc3lzX3gyNjQ9eWVzLCBz eXNfeDI2ND1ubykKKwogLS0tIGEvdGVzdC9tb2R1bGUuZGVmcwogKysrIGIvdGVzdC9tb2R1bGUu ZGVmcwogQEAgLTY5LDYgKzY5LDkgQEAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaGFuZGJyYWtlL3Bh dGNoZXMvbGliaGItdnBsLWluY2x1ZGUucGF0Y2ggYi9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVz L2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMjk4ZjlmNGFiMjhmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9oYW5kYnJh a2UvcGF0Y2hlcy9saWJoYi12cGwtaW5jbHVkZS5wYXRjaApAQCAtMCwwICsxLDE1IEBACistLS0g YS9saWJoYi9tb2R1bGUuZGVmcwkyMDIzLTAxLTIyIDExOjM2OjQ5LjAwMDAwMDAwMCAtMDUwMAor KysrIGIvbGliaGIvbW9kdWxlLmRlZnMJMjAyMy0wNC0wMyAyMjozNzo1Mi4zOTU0NjcwMTAgLTA0 MDAKK0BAIC00NiwxMSArNDYsNyBAQAorIExJQkhCLkdDQy5JICs9ICQoTElCSEIuYnVpbGQvKSAk KENPTlRSSUIuYnVpbGQvKWluY2x1ZGUKKyAKKyBpZmVxICgxLCQoRkVBVFVSRS5xc3YpKQorLSAg ICBpZmVxICgkKEhPU1Quc3lzdGVtKSxmcmVlYnNkKSkKKy0gICAgICAgIExJQkhCLkdDQy5JICs9 ICQoTE9DQUxCQVNFKS9pbmNsdWRlL3ZwbAorLSAgICBlbHNlCistICAgICAgICBMSUJIQi5HQ0Mu SSArPSAkKENPTlRSSUIuYnVpbGQvKWluY2x1ZGUvdnBsCistICAgIGVuZGlmCisrICAgIExJQkhC LkdDQy5JICs9IC91c3IvaW5jbHVkZS92cGwKKyBlbmRpZgorIAorIGlmbmVxICgsJChmaWx0ZXIg JChIT1NULnN5c3RlbSksZnJlZWJzZCBuZXRic2Qgb3BlbmJzZCkpCmRpZmYgLS1naXQgYS9zcmNw a2dzL2hhbmRicmFrZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlCmluZGV4 IGNhNWU0NTcxZTQ5Yy4uYzMyY2IxYmZhMzFmIDEwMDY0NAotLS0gYS9zcmNwa2dzL2hhbmRicmFr ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZQpAQCAtMSwxMCArMSwx MCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnaGFuZGJyYWtlJwogcGtnbmFtZT1oYW5kYnJha2UK LXZlcnNpb249MS41LjEKK3ZlcnNpb249MS42LjEKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdu dS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWZvcmNlIC0tZGlzYWJsZS1ndGstdXBkYXRl LWNoZWNrcyAtLWRpc2FibGUtZGYtZmV0Y2ggLS1oYXJkZW4KLSAkKHZvcHRfZW5hYmxlIGZka19h YWMgZmRrLWFhYykgJCh2b3B0X2VuYWJsZSBudmVuYykiCisgJCh2b3B0X2VuYWJsZSBmZGtfYWFj IGZkay1hYWMpICQodm9wdF9lbmFibGUgbnZlbmMpICQodm9wdF9lbmFibGUgcXN2KSIKIG1ha2Vf YnVpbGRfYXJncz0iLUMgJHtYQlBTX1RSSVBMRVR9IgogbWFrZV9pbnN0YWxsX2FyZ3M9Ii1DICR7 WEJQU19UUklQTEVUfSIKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgY21ha2UgZ2V0dGV4dC1k ZXZlbCBnbGliLWRldmVsIGludGx0b29sIGxpYnRvb2wgbTQgbWVzb24gbmFzbSBwa2ctY29uZmln IHB5dGhvbjMiCkBAIC0xMiw4ICsxMiwxMSBAQCBtYWtlZGVwZW5kcz0iYnppcDItZGV2ZWwgZmZt cGVnLWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsIGd0ayszLWRldmVsCiAgamFuc3Nvbi1k ZXZlbCBsYW1lLWRldmVsIGxpYmFzcy1kZXZlbCBsaWJibHVyYXktZGV2ZWwgbGliZGF2MWQtZGV2 ZWwKICBsaWJkdmRuYXYtZGV2ZWwgbGliZHZkcmVhZC1kZXZlbCBsaWJndWRldi1kZXZlbCBsaWJu dW1hLWRldmVsCiAgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJ0aGVvcmEtZGV2ZWwgbGlidm9yYmlz LWRldmVsIGxpYnZweC1kZXZlbCBsaWJ4bWwyLWRldmVsCi0gb3B1cy1kZXZlbCBzcGVleC1kZXZl bCB4MjY0LWRldmVsIHgyNjUtZGV2ZWwgemltZy1kZXZlbAorIG9wdXMtZGV2ZWwgc3BlZXgtZGV2 ZWwgeDI2NC1kZXZlbCB4MjY1LWRldmVsIHppbWctZGV2ZWwgbGlic3Z0LWF2MS1kZXZlbAogICQo dm9wdF9pZiBmZGtfYWFjIGZkay1hYWMtZGV2ZWwpCisgJCh2b3B0X2lmIHFzdiBsaWJ2YS1kZXZl bCkKKyAkKHZvcHRfaWYgcXN2IGxpYmRybS1kZXZlbCkKKyAkKHZvcHRfaWYgcXN2IG9uZXZwbC1k ZXZlbCkKICAkKHZvcHRfaWYgbnZlbmMgbnYtY29kZWMtaGVhZGVycykiCiBkZXBlbmRzPSJkZXNr dG9wLWZpbGUtdXRpbHMgZ3N0LXBsdWdpbnMtZ29vZDEgaGljb2xvci1pY29uLXRoZW1lIgogc2hv cnRfZGVzYz0iTXVsdGl0aHJlYWRlZCB2aWRlbyB0cmFuc2NvZGVyIgpAQCAtMjEsMTUgKzI0LDE1 IEBAIG1haW50YWluZXI9IkVubm8gQm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4iCiBsaWNl bnNlPSJHUEwtMi4wLW9ubHkiCiBob21lcGFnZT0iaHR0cHM6Ly9oYW5kYnJha2UuZnIvIgogZGlz dGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vSGFuZEJyYWtlL0hhbmRCcmFrZS9yZWxlYXNlcy9k b3dubG9hZC8ke3ZlcnNpb259L0hhbmRCcmFrZS0ke3ZlcnNpb259LXNvdXJjZS50YXIuYnoyIgot Y2hlY2tzdW09Mzk5OWZlMDZkNTMwOWM4MTk3OTlhNzNhOTY4YThlYzM4NDBlNzg0MGMyYjY0YWY4 ZjVjZGI3ZmQ4Yzk0MzBmMAorY2hlY2tzdW09OTRjY2ZlMDNkYjkxN2E5MTY1MDAwMGM1MTBmN2Zk NTNmODQ0ZGExOWYxOWFkNGI0YmUxYjhmNmJjMzFhOGQ0Ywogbm9jcm9zcz15ZXMKIAotYnVpbGRf b3B0aW9ucz0iZmRrX2FhYyBudmVuYyIKK2J1aWxkX29wdGlvbnM9ImZka19hYWMgbnZlbmMgcXN2 IgogCiBjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KIAl4ODZfNjQqfGk2ODYqKQogCQlD RkxBR1M9Ii1tc3NlIgotCQlidWlsZF9vcHRpb25zX2RlZmF1bHQ9Im52ZW5jIgorCQlidWlsZF9v cHRpb25zX2RlZmF1bHQ9Im52ZW5jIHFzdiIKIAkJOzsKIGVzYWMKIApAQCAtMzcsNyArNDAsNyBA QCBwcmVfY29uZmlndXJlKCkgewogCSMgdXNlIHN5c3RlbSBsaWJyYXJpZXMsIGRvbid0IGRvd25s b2FkIHRoZW0KIAlybSAtcmYgY29udHJpYi8KIAlmb3IgbW9kdWxlIGluIGZkay1hYWMgZmZtcGVn IGxpYmJsdXJheSBsaWJkYXYxZCBsaWJkdmRuYXYgbGliZHZkcmVhZCBudmVuYyBcCi0JCXgyNjUg emltZzsgZG8KKwkJeDI2NSB6aW1nIHN2dC1hdjEgbGlidnBsOyBkbwogCSAgICB2c2VkIC1pICIv TU9EVUxFUyArPSBjb250cmliXC8ke21vZHVsZX0vZCIgbWFrZS9pbmNsdWRlL21haW4uZGVmcwog CWRvbmUKIH0KCkZyb20gZWFlYzI1ZDNkNzU1N2ZjMDgwYmM5NzZjNjZlNjUxMTAwMDBlNzM4ZiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQy LzExNV0gaGVkZ2V3YXJzOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mv aGVkZ2V3YXJzL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBs YXRlIGIvc3JjcGtncy9oZWRnZXdhcnMvdGVtcGxhdGUKaW5kZXggNDE5ZjI5Yjk4YjQ0Li45MjZm ZTRmZTNlNjggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvaGVkZ2V3YXJzL3RlbXBsYXRlCkBAIC0xLDEzICsxLDEzIEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdoZWRnZXdhcnMnCiBwa2duYW1lPWhlZGdld2FycwogdmVyc2lvbj0xLjAuMgotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIt RE5PU0VSVkVSPTEgLUREQVRBX0lOU1RBTExfRElSPS91c3Ivc2hhcmUvJHtwa2duYW1lfQogIC1E UEhZU0ZTX1NZU1RFTT0xIC1ETUlOSU1BTF9GTEFHUz0xIgogbWFrZV9jbWQ9bWFrZQogaG9zdG1h a2VkZXBlbmRzPSJsdWE1MSBwa2ctY29uZmlnIHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKLW1h a2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbHVhNTEtZGV2ZWwgcGh5c2ZzLWRldmVsIHF0NS10b29s cy1kZXZlbCBTREwyX2ltYWdlLWRldmVsCittYWtlZGVwZW5kcz0iZmZtcGVnNC1kZXZlbCBsdWE1 MS1kZXZlbCBwaHlzZnMtZGV2ZWwgcXQ1LXRvb2xzLWRldmVsIFNETDJfaW1hZ2UtZGV2ZWwKICBT REwyX21peGVyLWRldmVsIFNETDJfbmV0LWRldmVsIFNETDJfdHRmLWRldmVsIgogZGVwZW5kcz0i bGliZnJlZWdsdXQiCiBzaG9ydF9kZXNjPSJGdW5ueSB0dXJuLWJhc2VkIGFydGlsbGVyeSBnYW1l LCBmZWF0dXJpbmcgZmlnaHRpbmcgSGVkZ2Vob2dzISIKCkZyb20gZTM2Yjc0NGY5ZDQyMWM5ZjY3 NTM3ZDQ3ZjhhNjZmMDBmZmJlNDE2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQzLzExNV0gaWRqYzogcmV2YnVtcCBmb3IgZmZtcGVnNC00 LjQuMwoKLS0tCiBzcmNwa2dzL2lkamMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9p ZGpjL3RlbXBsYXRlIGIvc3JjcGtncy9pZGpjL3RlbXBsYXRlCmluZGV4IGRmNjAzMThiM2RiOS4u MzZhNzViYWY1OTdjIDEwMDY0NAotLS0gYS9zcmNwa2dzL2lkamMvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9pZGpjL3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdpZGpjJwogcGtnbmFtZT1pZGpjCiB2ZXJzaW9uPTAuOS4xCi1yZXZpc2lvbj0zCityZXZpc2lv bj00CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25m aWcgZ2l0IHB5dGhvbjMgYXV0b21ha2UgZ2V0dGV4dC1kZXZlbCBsaWJ0b29sIgogbWFrZWRlcGVu ZHM9ImxpYnZvcmJpcy1kZXZlbCBsaWJvZ2ctZGV2ZWwgamFjay1kZXZlbCBsaWJzYW1wbGVyYXRl LWRldmVsCi0gbGliZmxhYy1kZXZlbCBsaWJzbmRmaWxlLWRldmVsIG1wZzEyMy1kZXZlbCBmZm1w ZWctZGV2ZWwgc3BlZXgtZGV2ZWwKKyBsaWJmbGFjLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwgbXBn MTIzLWRldmVsIGZmbXBlZzQtZGV2ZWwgc3BlZXgtZGV2ZWwKICBnbGliLWRldmVsIHBpeG1hbi1k ZXZlbCBsYW1lLWRldmVsIHB5dGhvbjMtZ29iamVjdC1kZXZlbCBsaWJzaG91dC1pZGpjLWRldmVs CiAgb3B1cy1kZXZlbCB0d29sYW1lLWRldmVsIHB5dGhvbjMtbXV0YWdlbiBweXRob24zLWRldmVs IgogZGVwZW5kcz0icHl0aG9uMy1nb2JqZWN0IHB5dGhvbjMtbXV0YWdlbiBkZXNrdG9wLWZpbGUt dXRpbHMgc2hhcmVkLW1pbWUtaW5mbyBweXRob24zLWRidXMgamFjayIKCkZyb20gNGIzMjc1Zjli MjY2YTMzYzE5NmMyNzg3ODVkODJkMjUyYjA1Y2E0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ0LzExNV0ga2ZpbGVtZXRhZGF0YTU6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUgYi9zcmNwa2dzL2tm aWxlbWV0YWRhdGE1L3RlbXBsYXRlCmluZGV4IDRiOTFjZjE5ZjI5OC4uYTM2NzFhMzhjZTU5IDEw MDY0NAotLS0gYS9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv a2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdrZmlsZW1ldGFkYXRhNScKIHBrZ25hbWU9a2ZpbGVtZXRhZGF0YTUKIHZlcnNpb249NS4x MDcuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtl ZGVwZW5kcz0ia2NvcmVhZGRvbnMgZXh0cmEtY21ha2UtbW9kdWxlcyBwa2ctY29uZmlnIHF0NS1o b3N0LXRvb2xzIHF0NS1xbWFrZQogIGdldHRleHQga2NvcmVhZGRvbnMgcHl0aG9uMyIKCkZyb20g ZjcyMzYxOTc3NDdiZjlkYjU2MDM3Y2QyMGFjNmU2NzU0YjQzNzUxMSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ1LzExNV0ga2lkMzogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBh dGNoIHwgMTcgKysrKysrKysrKysrKysrKysKIHNyY3BrZ3Mva2lkMy90ZW1wbGF0ZSAgICAgICAg ICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5w YXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2lkMy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9z cmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uMTM1ZmM1MGUwN2M5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDE3IEBACisjIGh0dHBzOi8v YXVyLmFyY2hsaW51eC5vcmcvY2dpdC9hdXIuZ2l0L2RpZmYvZmZtcGVnNS5wYXRjaD9oPWtpZDMt Y2xpJmlkPTEyNDEwYTc0OTA2NjEyZTdlZmMwZWM4ZmJjZTczOWI0YTBmZWY3ZTcKK2RpZmYgLS1n aXQgYS9zcmMvcGx1Z2lucy9hY291c3RpZGltcG9ydC9mZm1wZWdmaW5nZXJwcmludGRlY29kZXIu Y3BwIGIvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVy LmNwcAoraW5kZXggZTE1NmQ0MjQuLmUxMmI5YWJkIDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMv YWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAorKysrIGIvc3JjL3Bs dWdpbnMvYWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAorQEAgLTIz Miw3ICsyMzIsMTEgQEAgcHJpdmF0ZToKKyAgIGZyaWVuZCBjbGFzcyBGb3JtYXQ7CisgICBmcmll bmQgY2xhc3MgQ29udmVydGVyOworICAgQVZDb2RlY0NvbnRleHQqIG1fcHRyOworKyNpZiBMSUJB VkNPREVDX1ZFUlNJT05fSU5UIDwgQVZfVkVSU0lPTl9JTlQoNTksIDAsIDApCisgICBBVkNvZGVj KiBtX2ltcGw7CisrI2Vsc2UKKysgIGNvbnN0IEFWQ29kZWMqIG1faW1wbDsKKysjZW5kaWYKKyAg IEFWRnJhbWUqIG1fZnJhbWU7CisgICBib29sIG1fb3BlbmVkOworIH07CmRpZmYgLS1naXQgYS9z cmNwa2dzL2tpZDMvdGVtcGxhdGUgYi9zcmNwa2dzL2tpZDMvdGVtcGxhdGUKaW5kZXggNDU2MjA2 ZDkwZTE2Li5mMzJmOWRlY2IwZTcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva2lkMy90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2tpZDMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdraWQzJwogcGtnbmFtZT1raWQzCiB2ZXJzaW9uPTMuOS4xCi1yZXZpc2lvbj0yCity ZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9BUFBT PSdDTEk7JCh2b3B0X2lmIEtERSBLREUgUXQpJwogIC1EV0lUSF9ET0NCT09LRElSPS91c3Ivc2hh cmUveHNsL2RvY2Jvb2sgLURXSVRIX0ZMQUM9JCh2b3B0X2lmIGZsYWMgT04gT0ZGKQoKRnJvbSAy ZmJjZDk2MGNlOGY2NjU2NGI1OWFjMTA0OWExNjViODJhZDRjMDVlIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDYvMTE1XSBrb2RpOiByZXZi dW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mva29kaS90ZW1wbGF0ZSB8IDQgKyst LQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2tvZGkvdGVtcGxhdGUgYi9zcmNwa2dzL2tvZGkvdGVtcGxhdGUKaW5k ZXggODA1Nzk2NGQ3OGEzLi42Y2MxODc0YmU3YmEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva29kaS90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tvZGkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdrb2RpJwogcGtnbmFtZT1rb2RpCiB2ZXJzaW9uPTE5LjQKLXJldmlz aW9uPTYKK3JldmlzaW9uPTcKIF9jb2RlbmFtZT0iTWF0cml4IgogYnVpbGRfc3R5bGU9Y21ha2UK IGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfRkZNUEVHPS91c3IgLURFTkFCTEVfTERHT0xEPU9GRgpA QCAtNTQsNyArNTQsNyBAQCBtYWtlZGVwZW5kcz0iCiAgbGlibWFkLWRldmVsIGZvbnRjb25maWct ZGV2ZWwgbGliWGluZXJhbWEtZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJtbXMtZGV2ZWwK ICBlbmNhLWRldmVsIGJvb3N0LWRldmVsIGxpYmN1cmwtZGV2ZWwgbGlidmEtZGV2ZWwgbGlidmRw YXUtZGV2ZWwgbGliYXNzLWRldmVsCiAgbGliYmx1ZXRvb3RoLWRldmVsIHlhamwtZGV2ZWwgbGli cGxpc3QtZGV2ZWwgbGlicnRtcC1kZXZlbCB0aW55eG1sLWRldmVsCi0gdGFnbGliLWRldmVsIGxp YmNhcC1kZXZlbCBsYW1lLWRldmVsIGxpYmJsdXJheS1kZXZlbCBsaWJuZnMtZGV2ZWwgZmZtcGVn LWRldmVsCisgdGFnbGliLWRldmVsIGxpYmNhcC1kZXZlbCBsYW1lLWRldmVsIGxpYmJsdXJheS1k ZXZlbCBsaWJuZnMtZGV2ZWwgZmZtcGVnNC1kZXZlbAogIGdpZmxpYi1kZXZlbCBsaWJ4c2x0LWRl dmVsIGdudXRscy1kZXZlbCBsaWJzc2gtZGV2ZWwgbGlibWljcm9odHRwZC1kZXZlbAogIGxpYmNl Yy1kZXZlbCBkY2FkZWMtZGV2ZWwgZmxhdGJ1ZmZlcnMtZGV2ZWwgZm10LWRldmVsIGxjbXMyLWRl dmVsCiAgbGliZnN0cmNtcC1kZXZlbCByYXBpZGpzb24gbGliY2Rpby1wYXJhbm9pYSBzcGRsb2cg bGlid2F5bGFuZHBwLWRldmVsCgpGcm9tIGUwMzk5MDJmMzMwN2YwZDFlODRkMjNiZjk4M2YxZjM5 ODc2MTZiMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDog W1BBVENIIDA0Ny8xMTVdIGtwaXBld2lyZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL2twaXBld2lyZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva3BpcGV3aXJlL3Rl bXBsYXRlIGIvc3JjcGtncy9rcGlwZXdpcmUvdGVtcGxhdGUKaW5kZXggZGI0ZTQyZjBkNDU2Li4y MzM0YmY4Njc4MDYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAna3BpcGV3aXJlJwogcGtnbmFtZT1rcGlwZXdpcmUKIHZlcnNpb249NS4yNy42Ci1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRz PSJleHRyYS1jbWFrZS1tb2R1bGVzIHBsYXNtYS13YXlsYW5kLXByb3RvY29scyBnZXR0ZXh0CiAg cXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIHBrZy1jb25maWcgd2F5bGFuZC1kZXZlbCBrY29yZWFk ZG9ucwoKRnJvbSA4ZmZjYTAzYjQyZGYzOGU0OGNlYTJiMTY0NWI4NjQyNjFhOWNkOTYyIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDgvMTE1 XSBsaWJleHRyYWN0b3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9s aWJleHRyYWN0b3IvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1w bGF0ZSBiL3NyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBsYXRlCmluZGV4IGRkZDQ3OTBmOTNlOC4u MWZiOWNhNTZhOTZhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZQpAQCAtNyw3ICs3LDcgQEAgY29uZmln dXJlX2FyZ3M9Ii0tZGlzYWJsZS1zdGF0aWMiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWci CiBtYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBiemlwMi1kZXZlbCBleGl2Mi1kZXZlbCB0aWZmLWRl dmVsIGxpYnBuZy1kZXZlbAogIGxpYmpwZWctdHVyYm8tZGV2ZWwgbGlidm9yYmlzLWRldmVsIGxp YmZsYWMtZGV2ZWwgZ2lmbGliLWRldmVsIGxpYm1wZWcyLWRldmVsCi0gZmZtcGVnLWRldmVsIGd0 ayszLWRldmVsIGxpYmx0ZGwtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbCBmaWxlLWRldmVsIGxpYmdz Zi1kZXZlbCIKKyBmZm1wZWc0LWRldmVsIGd0ayszLWRldmVsIGxpYmx0ZGwtZGV2ZWwgbGliYXJj aGl2ZS1kZXZlbCBmaWxlLWRldmVsIGxpYmdzZi1kZXZlbCIKIHNob3J0X2Rlc2M9IkxpYnJhcnkg dXNlZCB0byBleHRyYWN0IG1ldGEgZGF0YSBmcm9tIGZpbGVzIgogbWFpbnRhaW5lcj0iTWFydGlu IFJpZXNlIDxncmF1ZWhhYXJlQGdteC5kZT4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgoK RnJvbSAwYzkxNWQ4MTFiMDZiNTkyZWFmMzYwNGZiY2RiZDhiOWU4YTVmNWFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDkvMTE1XSBsaWJv cGVuYWw6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9saWJvcGVuYWwvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGli b3BlbmFsL3RlbXBsYXRlCmluZGV4IDc3MjE4ZjllNTM5ZC4uM2Y0OWVkNzVhMWZkIDEwMDY0NAot LS0gYS9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpYm9wZW5hbC90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xpYm9wZW5hbCcK IHBrZ25hbWU9bGlib3BlbmFsCiB2ZXJzaW9uPTEuMjIuMgotcmV2aXNpb249MQorcmV2aXNpb249 MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREFMU09GVF9FWEFNUExFUz1P RkYiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpGcm9tIDg4YmIzYzk3ZDhmOTI3ZTAw MDNjMDVjYzFlNjVlYjI0NTNmNDlhZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDgg LTA0MDAKU3ViamVjdDogW1BBVENIIDA1MC8xMTVdIGxpYm9wZW5zaG90OiByZXZidW1wIGZvciBm Zm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbGlib3BlbnNob3QvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlIGIvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0 ZQppbmRleCBkYjgzMWY2OWI0NzQuLjgxYWEwZDcxMzZkOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9s aWJvcGVuc2hvdC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGlib3BlbnNob3QnCiBwa2duYW1l PWxpYm9wZW5zaG90CiB2ZXJzaW9uPTAuMy4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWls ZF9zdHlsZT1jbWFrZQogIyBCdWlsZHMgZmFpbCB3aXRoIFJ1YnktMi40LjEKIGNvbmZpZ3VyZV9h cmdzPSItREVOQUJMRV9SVUJZPU9GRiAtRFVTRV9TWVNURU1fSlNPTkNQUD1PTiIKCkZyb20gZDQ3 MDQ2MzE1Y2E1YzJkNmVlOTU4ZDJhOThmZjNkNDA5NjM4NDJkMCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDUxLzExNV0gbG91ZGdhaW46IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBl ZzUucGF0Y2ggfCAxMSArKysrKysrKysrKwogc3JjcGtncy9sb3VkZ2Fpbi90ZW1wbGF0ZSAgICAg ICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2Zm bXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xvdWRnYWluL3BhdGNoZXMvZmZtcGVn NS5wYXRjaCBiL3NyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTZkNDUxMGVlOThmCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCAr MSwxMSBAQAorLS0tIGEvc3JjL3NjYW4uYwkyMDE5LTA5LTA2IDExOjMxOjE5LjAwMDAwMDAwMCAt MDQwMAorKysrIGIvc3JjL3NjYW4uYwkyMDIzLTAzLTIzIDExOjE1OjQwLjg2Nzk2ODUyMSAtMDQw MAorQEAgLTY5LDggKzY5LDYgQEAKKyAJICogSXQgaXMgbm93IHVzZWxlc3MKKyAJICogaHR0cHM6 Ly9naXRodWIuY29tL0ZGbXBlZy9GRm1wZWcvYmxvYi83MGQyNTI2OGMyMWNiZWU1ZjA4MzA0ZGE5 NWJlMWY2NDdjNjMwYzE1L2RvYy9BUEljaGFuZ2VzI0w4NgorIAkgKi8KKy0gIGlmIChhdmZvcm1h dF92ZXJzaW9uKCkgPCBBVl9WRVJTSU9OX0lOVCg1OCw5LDEwMCkpCistICAgIGF2X3JlZ2lzdGVy X2FsbCgpOworIAorIAlhdl9sb2dfc2V0X2NhbGxiYWNrKHNjYW5fYXZfbG9nKTsKKyAKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUgYi9zcmNwa2dzL2xvdWRnYWluL3RlbXBs YXRlCmluZGV4IGRhNGYyZDU2ZTk0Yy4uNGQ2YmYyOWVmYjRmIDEwMDY0NAotLS0gYS9zcmNwa2dz L2xvdWRnYWluL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsb3VkZ2FpbicKIHBrZ25hbWU9bG91ZGdh aW4KIHZlcnNpb249MC42LjgKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNt YWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0ibGliZWJ1cjEy OC1kZXZlbCB0YWdsaWItZGV2ZWwgZmZtcGVnLWRldmVsIgoKRnJvbSA4ZTgxNTMyOWEyNjRlYzNl OGRkNTUwNjZhNGYwZGJiM2E3YmVmZTBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTIvMTE1XSBtZWRpYXN0cmVhbWVyOiByZXZidW1wIGZv ciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZSB8IDQg KystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUgYi9zcmNwa2dzL21lZGlh c3RyZWFtZXIvdGVtcGxhdGUKaW5kZXggZDBlOTdlODU4ZTI5Li4xYmRlMDMxNDQzYTUgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21lZGlh c3RyZWFtZXIvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J21lZGlhc3RyZWFtZXInCiBwa2duYW1lPW1lZGlhc3RyZWFtZXIKIHZlcnNpb249NS4yLjYKLXJl dmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0i LURFTkFCTEVfU1RSSUNUPTAgLURFTkFCTEVfVU5JVF9URVNUUz0wIgogaG9zdG1ha2VkZXBlbmRz PSJweXRob24zIgotbWFrZWRlcGVuZHM9ImJ6cnRwLWRldmVsIGZmbXBlZy1kZXZlbCBnbGV3LWRl dmVsIGxpYlh2LWRldmVsIGxpYnNydHAtZGV2ZWwKK21ha2VkZXBlbmRzPSJienJ0cC1kZXZlbCBm Zm1wZWc0LWRldmVsIGdsZXctZGV2ZWwgbGliWHYtZGV2ZWwgbGlic3J0cC1kZXZlbAogIGxpYnVw bnAtZGV2ZWwgbGlidnB4LWRldmVsIG1iZWR0bHMtZGV2ZWwgb3B1cy1kZXZlbCBvcnRwLWRldmVs IHB1bHNlYXVkaW8tZGV2ZWwKICBsaWJ0aGVvcmEtZGV2ZWwgc3BlZXgtZGV2ZWwgdjRsLXV0aWxz LWRldmVsIGJjZzcyOS1kZXZlbCBiY21hdHJvc2thMi1kZXZlbCBsaWJnc20tZGV2ZWwiCiAjIHp4 aW5nLWNwcC1kZXZlbCAoMS4yLjAgcHJvYmFibHkgbm90IGNvbXBhdGlibGUsIGNoZWNrIGFnYWlu IGFmdGVyIHVwZGFpbmcgeHppbmcpCgpGcm9tIDY1MDdhNWVhZmNiYzE2ZjhiMGM2NGVmNTk1YTY4 N2RjNTY0Nzg3NjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVj dDogW1BBVENIIDA1My8xMTVdIG1nYmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9tZ2JhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tZ2JhL3RlbXBsYXRlIGIvc3Jj cGtncy9tZ2JhL3RlbXBsYXRlCmluZGV4IGFlMDUwNDMxMWVlZS4uZDMxMjk1YTBjZDNkIDEwMDY0 NAotLS0gYS9zcmNwa2dzL21nYmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tZ2JhL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWdiYScKIHBrZ25hbWU9bWdi YQogdmVyc2lvbj0wLjEwLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNt YWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtl IGRlc2t0b3AtZmlsZS11dGlscyIKIG1ha2VkZXBlbmRzPSJTREwyLWRldmVsIGZmbXBlZy1kZXZl bCBsaWJlZGl0LWRldmVsIGxpYmVwb3h5LWRldmVsIGxpYm1hZ2ljay1kZXZlbAoKRnJvbSBmZjhl ZGU1NTUwNDhiNThhZjhlYTk4MTJhYTJmMDVkMzdjMjAzZDdhIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTQvMTE1XSBtaW5pZGxuYTogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWluaWRsbmEvdGVtcGxh dGUKaW5kZXggZDU1MWU0OWVkNDY1Li41ZmE5MjlmM2EwYzEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv bWluaWRsbmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21pbmlkbG5hJwogcGtnbmFtZT1taW5pZGxu YQogdmVyc2lvbj0xLjMuMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251 LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9IgogIC0tc2JpbmRpcj0vdXNyL2JpbgoKRnJvbSAz NTk3MTIwZjE5NmNlODIxNTZlNmVjODUwNjM3NDIzNmRhZGZiZWQzIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTUvMTE1XSBtbHQ6IHJldmJ1 bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9tbHQvdGVtcGxhdGUgfCA0ICsrLS0K IDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9tbHQvdGVtcGxhdGUgYi9zcmNwa2dzL21sdC90ZW1wbGF0ZQppbmRleCA4 OTMzZWI0ZTdiYjkuLjczMzUzZmVkYWZiNSAxMDA2NDQKLS0tIGEvc3JjcGtncy9tbHQvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9tbHQvdGVtcGxhdGUKQEAgLTEsMTQgKzEsMTQgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ21sdCcKIHBrZ25hbWU9bWx0CiB2ZXJzaW9uPTYuMjYuMQotcmV2aXNpb249 MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1w cmVmaXg9L3VzciAtLWxpYmRpcj0vdXNyL2xpYiRYQlBTX1RBUkdFVF9XT1JEU0laRQogIC0tZW5h YmxlLWdwbCAtLWVuYWJsZS1ncGwzIC0tZGlzYWJsZS1zd2ZkZWMgLS13aXRob3V0LWtkZQogIC0t c3dpZy1sYW5ndWFnZXM9cHl0aG9uIgogaG9zdG1ha2VkZXBlbmRzPSJkb3h5Z2VuIHBrZy1jb25m aWcgbGFkc3BhLXNkayBzd2lnIHB5dGhvbjMgd2hpY2giCiAjIFhYWDogbW92aXQgdmlkLnN0YWIK LW1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWctZGV2ZWwgZ3RrKy1kZXZlbCBqYWNr LWRldmVsIGxhZHNwYS1zZGsKK21ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWc0LWRl dmVsIGd0aystZGV2ZWwgamFjay1kZXZlbCBsYWRzcGEtc2RrCiAgbGliZXhpZi1kZXZlbCBsaWJz YW1wbGVyYXRlLWRldmVsIGxpYnhtbDItZGV2ZWwgc294LWRldmVsIFNETF9pbWFnZS1kZXZlbAog IGZmdHctZGV2ZWwgZnJlaTByLXBsdWdpbnMgcHl0aG9uMy1kZXZlbCBwdWxzZWF1ZGlvLWRldmVs IG1vdml0LWRldmVsCiAgbGlidmlkc3RhYi1kZXZlbCBsaWJhdG9taWMtZGV2ZWwiCgpGcm9tIDY2 OWI2MzgyNDU1YzRjYmUxMDgyN2NiMGMxOTIzZTAzMjk0YzNiM2QgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA1Ni8xMTVdIG1vYzogcmV2YnVt cCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL21vYy90ZW1wbGF0ZSB8IDQgKystLQog MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL21vYy90ZW1wbGF0ZSBiL3NyY3BrZ3MvbW9jL3RlbXBsYXRlCmluZGV4IDVh ZWQ1ZDM2NTU4ZC4uZDhkZTgxNjAyNmI2IDEwMDY0NAotLS0gYS9zcmNwa2dzL21vYy90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL21vYy90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnbW9jJwogcGtnbmFtZT1tb2MKIHZlcnNpb249Mi41LjIKLXJldmlzaW9uPTYK K3JldmlzaW9uPTcKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0i cGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJkYi1kZXZlbCBuY3Vyc2VzLWRldmVsIGxpYmN1cmwt ZGV2ZWwgcG9wdC1kZXZlbCBmZm1wZWctZGV2ZWwKK21ha2VkZXBlbmRzPSJkYi1kZXZlbCBuY3Vy c2VzLWRldmVsIGxpYmN1cmwtZGV2ZWwgcG9wdC1kZXZlbCBmZm1wZWc0LWRldmVsCiAgamFjay1k ZXZlbCBhbHNhLWxpYi1kZXZlbCBsaWJsdGRsLWRldmVsIGxpYmZsYWMtZGV2ZWwgbGlidm9yYmlz LWRldmVsCiAgbGlibWFkLWRldmVsIGxpYm1wY2RlYy1kZXZlbCBsaWJtb2RwbHVnLWRldmVsIGxp YmlkM3RhZy1kZXZlbCBmYWFkMi1kZXZlbAogIHRhZ2xpYi1kZXZlbCBsaWJzbmRmaWxlLWRldmVs IHdhdnBhY2stZGV2ZWwgc3BlZXgtZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbAoKRnJvbSA1MTI3 YzkxZjExNThmYjQ0ZDU5ZGI0ZDE4ZGRhMmM3ODQzM2JhNmI4IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTcvMTE1XSBtb3Rpb246IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL21vdGlvbi90ZW1wbGF0ZSBiL3NyY3BrZ3MvbW90aW9uL3RlbXBsYXRlCmluZGV4 IDNjZjNjMzAzNWM1Yi4uN2RjYTEyZDg1MWUzIDEwMDY0NAotLS0gYS9zcmNwa2dzL21vdGlvbi90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21vdGlvbi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ21vdGlvbicKIHBrZ25hbWU9bW90aW9uCiB2ZXJzaW9uPTQuNS4x Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0 bWFrZWRlcGVuZHM9ImF1dG9tYWtlIHBrZy1jb25maWcgZ2V0dGV4dC1kZXZlbCB0YXIiCiBtYWtl ZGVwZW5kcz0iZmZtcGVnLWRldmVsIGxpYm1pY3JvaHR0cGQtZGV2ZWwgdjRsLXV0aWxzLWRldmVs IGdldHRleHQtZGV2ZWwiCgpGcm9tIDAwZTY2Njk3YWY5NTZhYTkxNTc2MjBjM2I3ODFmZDhiMWU4 ODQ3ZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BB VENIIDA1OC8xMTVdIG1wdjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21w di90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbXB2L3RlbXBsYXRlIGIvc3JjcGtncy9tcHYv dGVtcGxhdGUKaW5kZXggZTE2M2M0OTZjNmViLi5kNGZlZmJmNWUzYzcgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvbXB2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbXB2L3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbXB2JwogcGtnbmFtZT1tcHYKIHZlcnNpb249MC4z NS4xCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJl X2FyZ3M9Ii1EY2RkYT1lbmFibGVkIC1EZHZiaW49ZW5hYmxlZCAtRGR2ZG5hdj1lbmFibGVkCiAg LURsaWJtcHY9dHJ1ZSAtRGNwbHVnaW5zPWVuYWJsZWQKCkZyb20gM2U1MWM4YzlkNmNkNTFlZWU5 NjUyNjYzYWE4OGUxZTlmMjAxZDkxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU5LzExNV0gbXVzaWtjdWJlOiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9tdXNpa2N1YmUvdGVtcGxhdGUgYi9zcmNwa2dzL211c2lrY3ViZS90ZW1wbGF0ZQppbmRleCA3 YzU2OTMwM2MwNTQuLmE0ZGVhNDYwYzM3MSAxMDA2NDQKLS0tIGEvc3JjcGtncy9tdXNpa2N1YmUv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtdXNpa2N1YmUnCiBwa2duYW1lPW11c2lrY3ViZQogdmVy c2lvbj0zLjAuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIG1h a2VfY21kPW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRE5PX05DVVJTRVNXPTEiCgpGcm9tIDI4MWVj MjliZjEzYTQxNjg1MTk3ZDc5MDEyM2U0ZDU1Y2IxMDdlZWUgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2MC8xMTVdIG5vdGN1cnNlczogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlIGIvc3JjcGtncy9ub3RjdXJzZXMvdGVt cGxhdGUKaW5kZXggNmRkOGEwOTEzMTlmLi4zMTEwYzMwYzlhZmYgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3Mvbm90Y3Vyc2VzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbm90Y3Vyc2VzJwogcGtnbmFtZT1u b3RjdXJzZXMKIHZlcnNpb249My4wLjkKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0 eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURVU0VfU1RBVElDPU9OICQodm9wdF9ib29sIG1h biBVU0VfUEFORE9DKSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyAkKHZvcHRfaWYgbWFu IHBhbmRvYykiCgpGcm9tIDJjOWE5OWZjOTU4NmJiYjY2YTQ2MjBmMGU0YTBlZjcwNjdiYmM3Y2Ig TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2 MS8xMTVdIG9iczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29icy90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb2JzL3RlbXBsYXRlIGIvc3JjcGtncy9vYnMvdGVtcGxh dGUKaW5kZXggN2I2OWM2MzBkMzBkLi4yYzhkNjhkNzFmM2EgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv b2JzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb2JzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnb2JzJwogcGtnbmFtZT1vYnMKIHZlcnNpb249MjkuMS4yCi1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0iaTY4NiogeDg2XzY0KiBwcGM2NGxlKiBhYXJj aDY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURPQlNfVkVSU0lPTl9P VkVSUklERT0ke3ZlcnNpb259IC1ERU5BQkxFX0pBQ0s9T04KCkZyb20gZjZhNThiYjNiM2ExZTMw MzRkOGJlODhjNTcwMmRkZWUyZTUwZjYyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYyLzExNV0gb2xpdmU6IHJldmJ1bXAgZm9yIGZmbXBl ZzQtNC40LjMKCi0tLQogc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNo YW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL29saXZlL3RlbXBsYXRlIGIvc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZQppbmRleCAxMmE0Njkz NmM5OTAuLjVjMjkxN2I5YzUxMiAxMDA2NDQKLS0tIGEvc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL29saXZlL3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdvbGl2ZScKIHBrZ25hbWU9b2xpdmUKIHZlcnNpb249MC4xLjIKLXJldmlzaW9u PTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPXFtYWtlCiBob3N0bWFrZWRlcGVuZHM9InF0NS1x bWFrZSBxdDUtaG9zdC10b29scyBwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9InF0NS1kZXZlbCBx dDUtbXVsdGltZWRpYS1kZXZlbCBxdDUtc3ZnLWRldmVsIGZmbXBlZy1kZXZlbCBmcmVpMHItcGx1 Z2lucyIKK21ha2VkZXBlbmRzPSJxdDUtZGV2ZWwgcXQ1LW11bHRpbWVkaWEtZGV2ZWwgcXQ1LXN2 Zy1kZXZlbCBmZm1wZWc0LWRldmVsIGZyZWkwci1wbHVnaW5zIgogc2hvcnRfZGVzYz0iTm9uLWxp bmVhciB2aWRlbyBlZGl0b3IiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51 eC5vcmc+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKCkZyb20gNzc1NDYyNzBlYzc4NDM3 YjI3YzdmYzFhOTVmZjQ1Yjg4YWI1NmQ5NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYzLzExNV0gb214cGxheWVyOiByZXZidW1wIGZvciBm Zm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlIHwgNiArKystLS0K IDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUgYi9zcmNwa2dzL29teHBsYXllci90ZW1w bGF0ZQppbmRleCBlNzBiZjc4NzNkNGQuLjBlOWJjNzBlN2M4ZSAxMDA2NDQKLS0tIGEvc3JjcGtn cy9vbXhwbGF5ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUKQEAg LTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29teHBsYXllcicKIHBrZ25hbWU9 b214cGxheWVyCiB2ZXJzaW9uPTIwMTkwMTAyCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBzaG9y dF9kZXNjPSJDb21tYW5kbGluZSBPTVggcGxheWVyIGZvciB0aGUgUmFzcGJlcnJ5IFBpIgogbWFp bnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKLWxpY2Vuc2U9IkdQTC0y IgorbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5j b20vcG9wY29ybm1peC9vbXhwbGF5ZXIiCiAKIF9jb21taXQ9ImYwNjIzNWNjOTY5MGE2ZDU4MTg3 NTE0NDUyZGY4Y2Y4ZmNkYWFjZWMiCkBAIC0xNSw3ICsxNSw3IEBAIGNoZWNrc3VtPWFmMmQ5NDUw Zjg5NDc4NDJlYThjNDAxZmU5ZjcxZWVjNDQ0MDEzZWJiZGVlMjlmMmFjODI4YzljNDkzYzEzMjkK IGFyY2hzPSJhcm12NmwqIGFybXY3bCoiCiBidWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIGhvc3Rt YWtlZGVwZW5kcz0iY3VybCBwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVs IHJwaS11c2VybGFuZC1kZXZlbCBwY3JlLWRldmVsIGJvb3N0LWRldmVsIGZyZWV0eXBlLWRldmVs IGZmbXBlZy1kZXZlbCBkYnVzLWRldmVsIgorbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIHJw aS11c2VybGFuZC1kZXZlbCBwY3JlLWRldmVsIGJvb3N0LWRldmVsIGZyZWV0eXBlLWRldmVsIGZm bXBlZzQtZGV2ZWwgZGJ1cy1kZXZlbCIKIGRlcGVuZHM9ImZyZWVmb250LXR0ZiIKIAogZG9fYnVp bGQoKSB7CgpGcm9tIGE5NDFlYzlkNjM1NGE5MTEzZjE2ZmQ3MGRhOTU1ZGIzZDVjZmMwMzQgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2NC8x MTVdIG9wZW5zaG90OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvb3BlbnNo b3QvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlIGIvc3JjcGtn cy9vcGVuc2hvdC90ZW1wbGF0ZQppbmRleCAzMjI3MTdkNDBhYmMuLmMwNzRlMDMzODc3MyAxMDA2 NDQKLS0tIGEvc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5zaG90 L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbnNob3Qn CiBwa2duYW1lPW9wZW5zaG90CiB2ZXJzaW9uPTMuMC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1weXRob24zLW1vZHVsZQogaG9zdG1ha2VkZXBlbmRzPSJweXRob24zIHB5 dGhvbjMtc2V0dXB0b29scyIKIG1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgcHl0aG9uMy1QeVF0 NSIKCkZyb20gNDU4ZTk4YjJiMWZhYjhmMjZhMDMwNmIxOWM1NDNlNjc1NWEyODc0ZCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY1LzExNV0g b3BlbnRvb256OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvb3BlbnRvb256 L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUgYi9zcmNwa2dz L29wZW50b29uei90ZW1wbGF0ZQppbmRleCBlZTlmNzYwM2Y1NWYuLjNlODE4MzRjYTBlZCAxMDA2 NDQKLS0tIGEvc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVudG9v bnovdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVudG9v bnonCiBwa2duYW1lPW9wZW50b29uegogdmVyc2lvbj0xLjYuMAotcmV2aXNpb249MgorcmV2aXNp b249MwogYnVpbGRfd3Jrc3JjPSJ0b29uei9zb3VyY2VzIgogYnVpbGRfc3R5bGU9Y21ha2UKIG1h a2VfY21kPW1ha2UKCkZyb20gMTI0YWZiYTZhM2MwYWExMDQ0NmQwMzA3YWE2MWZkYmFlN2RlMjc0 MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDY2LzExNV0gcGlhbm9iYXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9w aWFub2Jhci90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcGlhbm9iYXIvdGVtcGxhdGUgYi9z cmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRlCmluZGV4IGUzZmViYjgyMWE0NS4uMWUzZGMxYmY5MzA4 IDEwMDY0NAotLS0gYS9zcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcGlh bm9iYXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdwaWFu b2JhcicKIHBrZ25hbWU9cGlhbm9iYXIKIHZlcnNpb249MjAyMi4wNC4wMQotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBtYWtlX2J1aWxkX2FyZ3M9IlY9 MSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gNTIxMmJmNmRhYWUxMjc3YmZm NjYyMzlkYzQ1YzIxYWQ4NDc3Nzc1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY3LzExNV0gcHBzc3BwOiByZXZidW1wIGZvciBmZm1wZWc0 LTQuNC4zCgotLS0KIHNyY3BrZ3MvcHBzc3BwL3RlbXBsYXRlIHwgNyArKystLS0tCiAxIGZpbGUg Y2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvcHBzc3BwL3RlbXBsYXRlIGIvc3JjcGtncy9wcHNzcHAvdGVtcGxhdGUKaW5kZXggNzk4 NGE3MzNkNGJlLi4xNWE0MmZkMmM5OTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHBzc3BwL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvcHBzc3BwL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAncHBzc3BwJwogcGtnbmFtZT1wcHNzcHAKIHZlcnNpb249MS4xNC40Ci1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBfZ2xzbGFuZ19jb21taXQ9ZGMxMWFkZGUyM2M0NTVhMjRl MTNkZDU0ZGU5YjRlZGU4YmRkN2RiOAogX1NQSVJWX0Nyb3NzX2NvbW1pdD05YWNiOWVjMzFmNWE4 ZWY4MGVhNmI5OTRiYjc3YmU3ODdiMDhkM2QxCiBfYXJtaXBzX2NvbW1pdD02NzE5ZWRlYmFhZTAz MzMwZWU1NDQxZDliMjgyODA2NzJlZGYwMGQ1CkBAIC0xMyw3ICsxMyw3IEBAIGNvbmZpZ3VyZV9h cmdzPSItREhFQURMRVNTPTEgLURVU0VfU1lTVEVNX0ZGTVBFRz0xIC1EVU5JVFRFU1Q9T04KICAt RFVTSU5HX1FUX1VJPSQodm9wdF9pZiBxdCBPTiBPRkYpIC1EVVNFX1NZU1RFTV9aU1REPU9OCiAg LURBUk1JUFNfVVNFX1NURF9GSUxFU1lTVEVNPU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29u ZmlnIHB5dGhvbjMgJCh2b3B0X2lmIHF0IHF0NS1ob3N0LXRvb2xzKSIKLW1ha2VkZXBlbmRzPSJ6 bGliLWRldmVsIGdsZXctZGV2ZWwgZmZtcGVnLWRldmVsIGxpYnppcC1kZXZlbAorbWFrZWRlcGVu ZHM9InpsaWItZGV2ZWwgZ2xldy1kZXZlbCBmZm1wZWc0LWRldmVsIGxpYnppcC1kZXZlbAogIHNu YXBweS1kZXZlbCByYXBpZGpzb24gbGlicG5nLWRldmVsIGxpYnpzdGQtZGV2ZWwKICAkKHZvcHRf aWYgc2RsMiBTREwyLWRldmVsKSAkKHZvcHRfaWYgd2F5bGFuZCB3YXlsYW5kLWRldmVsKQogICQo dm9wdF9pZiBxdCAncXQ1LWRldmVsIHF0NS1tdWx0aW1lZGlhLWRldmVsJykiCkBAIC02MiwxMyAr NjIsMTIgQEAgcG9zdF9leHRyYWN0KCkgewogCW12ICR7d3Jrc3JjfS9taW5pdXBucC0ke19taW5p dXBucF9jb21taXR9ICR7d3Jrc3JjfS9leHQvbWluaXVwbnAKIH0KIAotcG9zdF9wYXRjaCgpewor cG9zdF9wYXRjaCgpIHsKIAkjIGRpc2FibGUgZ2l0IHZlcnNpb25pbmcKIAl2c2VkIC1lICdzfGZp bmRfcGFja2FnZShHaXQpfCMgJnwnIC1pIGdpdC12ZXJzaW9uLmNtYWtlCiB9CiAKIGRvX2luc3Rh bGwoKSB7Ci0JdmxpY2Vuc2UgTElDRU5TRS5UWFQKIAl2aW5zdGFsbCBpY29ucy9pY29uLnN2ZyA2 NDQgdXNyL3NoYXJlL3BpeG1hcHMgcHBzc3BwLnN2ZwogCXZpbnN0YWxsIFF0L1BQU1NQUC5kZXNr dG9wIDY0NCB1c3Ivc2hhcmUvYXBwbGljYXRpb25zCiAJdmJpbiBidWlsZC9QUFNTUFBIZWFkbGVz cyBwcHNzcHAtaGVhZGxlc3MKCkZyb20gOGNlYmFhNjIxMDA1MjE3NTc0ODE0ZTAxNDVhYzViZDgw YTZmYmUxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDY4LzExNV0gcHFpdjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L3BxaXYvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3BxaXYvdGVtcGxhdGUgYi9zcmNwa2dz L3BxaXYvdGVtcGxhdGUKaW5kZXggNTQyZmMyN2EyZDMyLi45MzA4ZDk0OWI2YTEgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvcHFpdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3BxaXYvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdwcWl2JwogcGtnbmFtZT1wcWl2CiB2 ZXJzaW9uPTIuMTIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1tYWtl ZmlsZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9ImdsaWItZGV2 ZWwgZ3RrKzMtZGV2ZWwgJCh2b3B0X2lmIGZmbXBlZyBmZm1wZWctZGV2ZWwpCgpGcm9tIGZlYmNm NGJmNzNmZGY2ZjU0NzE2N2YyMzJmZjE0NmVkMzhlYzIzN2UgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2OS8xMTVdIHFtbXA6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9xbW1wL3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xbW1wL3RlbXBsYXRlIGIvc3JjcGtncy9xbW1wL3RlbXBsYXRlCmluZGV4IDI2YzY2MWVk MTZiZS4uYTE1MGQ3NDQxYzdhIDEwMDY0NAotLS0gYS9zcmNwa2dzL3FtbXAvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9xbW1wL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAncW1tcCcKIHBrZ25hbWU9cW1tcAogdmVyc2lvbj0xLjYuMQotcmV2aXNpb249MQorcmV2 aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFVTRV9IQUw6Qk9P TD1GQUxTRSAtRFFNTVBfREVGQVVMVF9VSTpTVFJJTkc9c2ltcGxlIgogaG9zdG1ha2VkZXBlbmRz PSJwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSIKCkZyb20gNGEyMjU5YmU0ZGY2 ZWMzOTlkODA1N2U1MjBiYjFhZjkxNzE5YjJkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDcwLzExNV0gcXQ1LXdlYmVuZ2luZTogdXBkYXRl IHRvIDUuMTUuMTMKCi0tLQogLi4uL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2gg ICAgICAgIHwgIDExICsrCiBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBh dGNoICAgfCAxNzkgKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVt cGxhdGUgICAgICAgICAgICAgICAgfCAgMTAgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTk1IGluc2Vy dGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUt d2ViZW5naW5lL3BhdGNoZXMvY2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0 Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9jaHJvbWl1bS1t ZWRpYS1maWx0ZXJzLWNwcDE0LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv Y2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjA0YWRjNTQwZjJjYgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0 Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2Zp bHRlcnMvQlVJTEQuZ24JMjAyMy0wMi0yNyAxMzozMjo1OS4wMDAwMDAwMDAgLTA1MDAKKysrKyBi L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL0JVSUxELmduCTIwMjMtMDQtMDIg MTc6MjE6MzkuMjA0MDY2Mzg0IC0wNDAwCitAQCAtOTYsNiArOTYsOCBAQAorICAgICAiLy91aS9n ZngvZ2VvbWV0cnk6Z2VvbWV0cnkiLAorICAgXQorIAorKyAgY2ZsYWdzX2NjID0gWyAiLXN0ZD1j KysxNCIgXQorKworICAgbGlicyA9IFtdCisgCisgICBpZiAocHJvcHJpZXRhcnlfY29kZWNzKSB7 CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNo IGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFjNTVlMTYzNDQyMwotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAs MCArMSwxNzkgQEAKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2Zm bXBlZ19kZW11eGVyLmNjCTIwMjMtMDQtMDIgMTY6NTA6NTcuNzMyNTQ3NDQ2IC0wNDAwCisrKysg Yi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwky MDIzLTA0LTAyIDE2OjUwOjA5LjQ4NjQ3ODk5NSAtMDQwMAorQEAgLTU3LDYgKzU3LDggQEAKKyAK KyBuYW1lc3BhY2UgeworIAorK2NvbnN0ZXhwciBpbnQ2NF90IGtSZWxhdGl2ZVRzQmFzZSA9IHN0 YXRpY19jYXN0PGludDY0X3Q+KDB4N2ZmZWZmZmZmZmZmZmZmZik7CisrCisgdm9pZCBTZXRBVlN0 cmVhbURpc2NhcmQoQVZTdHJlYW0qIHN0cmVhbSwgQVZEaXNjYXJkIGRpc2NhcmQpIHsKKyAgIERD SEVDSyhzdHJlYW0pOworICAgc3RyZWFtLT5kaXNjYXJkID0gZGlzY2FyZDsKK0BAIC05MCwyNCAr OTIsMTIgQEAKKyAKKyBzdGF0aWMgYmFzZTo6VGltZURlbHRhIEV4dHJhY3RTdGFydFRpbWUoQVZT dHJlYW0qIHN0cmVhbSkgeworICAgLy8gVGhlIGRlZmF1bHQgc3RhcnQgdGltZSBpcyB6ZXJvLgor LSAgYmFzZTo6VGltZURlbHRhIHN0YXJ0X3RpbWU7CisrICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRf dGltZSA9IGtOb1RpbWVzdGFtcDsKKyAKKyAgIC8vIEZpcnN0IHRyeSB0byB1c2UgIHRoZSB8c3Rh cnRfdGltZXwgdmFsdWUgYXMgaXMuCisgICBpZiAoc3RyZWFtLT5zdGFydF90aW1lICE9IGtOb0ZG bXBlZ1RpbWVzdGFtcCkKKyAgICAgc3RhcnRfdGltZSA9IENvbnZlcnRGcm9tVGltZUJhc2Uoc3Ry ZWFtLT50aW1lX2Jhc2UsIHN0cmVhbS0+c3RhcnRfdGltZSk7CisgCistICAvLyBOZXh0IHRyeSB0 byB1c2UgdGhlIGZpcnN0IERUUyB2YWx1ZSwgZm9yIGNvZGVjcyB3aGVyZSB3ZSBrbm93IFBUUyA9 PSBEVFMKKy0gIC8vIChleGNsdWRlcyBhbGwgSDI2eCBjb2RlY3MpLiBUaGUgc3RhcnQgdGltZSBt dXN0IGJlIHJldHVybmVkIGluIFBUUy4KKy0gIGlmIChzdHJlYW0tPmZpcnN0X2R0cyAhPSBrTm9G Rm1wZWdUaW1lc3RhbXAgJiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBB Vl9DT0RFQ19JRF9IRVZDICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0g QVZfQ09ERUNfSURfSDI2NCAmJgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9 IEFWX0NPREVDX0lEX01QRUc0KSB7CistICAgIGNvbnN0IGJhc2U6OlRpbWVEZWx0YSBmaXJzdF9w dHMgPQorLSAgICAgICAgQ29udmVydEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgc3Ry ZWFtLT5maXJzdF9kdHMpOworLSAgICBpZiAoZmlyc3RfcHRzIDwgc3RhcnRfdGltZSkKKy0gICAg ICBzdGFydF90aW1lID0gZmlyc3RfcHRzOworLSAgfQorLQorICAgcmV0dXJuIHN0YXJ0X3RpbWU7 CisgfQorIAorQEAgLTQwOCwxMSArMzk4LDExIEBACisgICBzY29wZWRfcmVmcHRyPERlY29kZXJC dWZmZXI+IGJ1ZmZlcjsKKyAKKyAgIGlmICh0eXBlKCkgPT0gRGVtdXhlclN0cmVhbTo6VEVYVCkg eworLSAgICBpbnQgaWRfc2l6ZSA9IDA7CisrICAgIHNpemVfdCBpZF9zaXplID0gMDsKKyAgICAg dWludDhfdCogaWRfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAgICAgcGFj a2V0LmdldCgpLCBBVl9QS1RfREFUQV9XRUJWVFRfSURFTlRJRklFUiwgJmlkX3NpemUpOworIAor LSAgICBpbnQgc2V0dGluZ3Nfc2l6ZSA9IDA7CisrICAgIHNpemVfdCBzZXR0aW5nc19zaXplID0g MDsKKyAgICAgdWludDhfdCogc2V0dGluZ3NfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRh KAorICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9XRUJWVFRfU0VUVElOR1MsICZz ZXR0aW5nc19zaXplKTsKKyAKK0BAIC00MjQsNyArNDE0LDcgQEAKKyAgICAgYnVmZmVyID0gRGVj b2RlckJ1ZmZlcjo6Q29weUZyb20ocGFja2V0LT5kYXRhLCBwYWNrZXQtPnNpemUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVfZGF0YS5kYXRhKCksIHNpZGVfZGF0 YS5zaXplKCkpOworICAgfSBlbHNlIHsKKy0gICAgaW50IHNpZGVfZGF0YV9zaXplID0gMDsKKysg ICAgc2l6ZV90IHNpZGVfZGF0YV9zaXplID0gMDsKKyAgICAgdWludDhfdCogc2lkZV9kYXRhID0g YXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCisgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9E QVRBX01BVFJPU0tBX0JMT0NLQURESVRJT05BTCwgJnNpZGVfZGF0YV9zaXplKTsKKyAKK0BAIC00 ODUsNyArNDc1LDcgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw YWNrZXQtPnNpemUgLSBkYXRhX29mZnNldCk7CisgICAgIH0KKyAKKy0gICAgaW50IHNraXBfc2Ft cGxlc19zaXplID0gMDsKKysgICAgc2l6ZV90IHNraXBfc2FtcGxlc19zaXplID0gMDsKKyAgICAg Y29uc3QgdWludDMyX3QqIHNraXBfc2FtcGxlc19wdHIgPQorICAgICAgICAgcmVpbnRlcnByZXRf Y2FzdDxjb25zdCB1aW50MzJfdCo+KGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAgICAg ICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfU0tJUF9TQU1QTEVTLCAmc2tpcF9zYW1wbGVz X3NpemUpKTsKK0BAIC0xNTg3LDYgKzE1NzcsOCBAQAorICAgZm9yIChjb25zdCBhdXRvJiBzdHJl YW0gOiBzdHJlYW1zXykgeworICAgICBpZiAoIXN0cmVhbSB8fCBzdHJlYW0tPklzRW5hYmxlZCgp ICE9IGVuYWJsZWQpCisgICAgICAgY29udGludWU7CisrICAgIGlmIChzdHJlYW0tPmF2X3N0cmVh bSgpLT5zdGFydF90aW1lID09IEFWX05PUFRTX1ZBTFVFKQorKyAgICAgIGNvbnRpbnVlOworICAg ICBpZiAoIWxvd2VzdF9zdGFydF90aW1lX3N0cmVhbSB8fAorICAgICAgICAgc3RyZWFtLT5zdGFy dF90aW1lKCkgPCBsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0tPnN0YXJ0X3RpbWUoKSkgeworICAg ICAgIGxvd2VzdF9zdGFydF90aW1lX3N0cmVhbSA9IHN0cmVhbS5nZXQoKTsKK0BAIC0xNjA0LDYg KzE1OTYsOCBAQAorICAgICBpZiAoc3RyZWFtICYmIHN0cmVhbS0+dHlwZSgpID09IERlbXV4ZXJT dHJlYW06OlZJREVPICYmCisgICAgICAgICBzdHJlYW0tPklzRW5hYmxlZCgpKSB7CisgICAgICAg dmlkZW9fc3RyZWFtID0gc3RyZWFtLmdldCgpOworKyAgICAgIGlmIChzdHJlYW0tPmF2X3N0cmVh bSgpLT5zdGFydF90aW1lID09IEFWX05PUFRTX1ZBTFVFKQorKyAgICAgICAgY29udGludWU7Cisg ICAgICAgaWYgKHZpZGVvX3N0cmVhbS0+c3RhcnRfdGltZSgpIDw9IHNlZWtfdGltZSkgeworICAg ICAgICAgcmV0dXJuIHZpZGVvX3N0cmVhbTsKKyAgICAgICB9CitkaWZmIC1OYXVycCBxdHdlYmVu Z2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1w ZWdfY29tbW9uLmggcXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVk aWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uaAorLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21l ZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmgJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAg LTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2Nv bW1vbi5oCTIwMjItMDctMTEgMjI6MTI6NDcuOTE3MTkyNzg4IC0wNTAwCitAQCAtMjksNiArMjks NyBAQCBleHRlcm4gIkMiIHsKKyAjaW5jbHVkZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4KKyAj aW5jbHVkZSA8bGliYXZmb3JtYXQvYXZpby5oPgorICNpbmNsdWRlIDxsaWJhdnV0aWwvYXZ1dGls Lmg+CisrI2luY2x1ZGUgPGxpYmF2dXRpbC9jaGFubmVsX2xheW91dC5oPgorICNpbmNsdWRlIDxs aWJhdnV0aWwvaW1ndXRpbHMuaD4KKyAjaW5jbHVkZSA8bGliYXZ1dGlsL2xvZy5oPgorICNpbmNs dWRlIDxsaWJhdnV0aWwvbWFzdGVyaW5nX2Rpc3BsYXlfbWV0YWRhdGEuaD4KK2RpZmYgLU5hdXJw IHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmls dGVycy9hdWRpb19maWxlX3JlYWRlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjCistLS0gYS9zcmMv M3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRlci5jYwkyMDIy LTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL21lZGlhL2ZpbHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0 Ny45MTcxOTI3ODggLTA1MDAKK0BAIC04NSw3ICs4NSw3IEBAIGJvb2wgQXVkaW9GaWxlUmVhZGVy OjpPcGVuRGVtdXhlcigpIHsKKyB9CisgCisgYm9vbCBBdWRpb0ZpbGVSZWFkZXI6Ok9wZW5EZWNv ZGVyKCkgeworLSAgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19j b250ZXh0Xy0+Y29kZWNfaWQpOworKyAgY29uc3QgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2Zp bmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOworICAgaWYgKGNvZGVjKSB7Cisg ICAgIC8vIE1QMyBkZWNvZGVzIHRvIFMxNlAgd2hpY2ggd2UgZG9uJ3Qgc3VwcG9ydCwgdGVsbCBp dCB0byB1c2UgUzE2IGluc3RlYWQuCisgICAgIGlmIChjb2RlY19jb250ZXh0Xy0+c2FtcGxlX2Zt dCA9PSBBVl9TQU1QTEVfRk1UX1MxNlApCitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEw Lm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2Rl Y29kZXIuY2MgcXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEv ZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2RlY29kZXIuY2MJMjAyMi0wNS0yMyAwNjoz ODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9m aWx0ZXJzL2ZmbXBlZ19hdWRpb19kZWNvZGVyLmNjCTIwMjItMDctMTEgMjI6MTI6NDcuOTE3MTky Nzg4IC0wNTAwCitAQCAtMzI5LDcgKzMyOSw3IEBAIGJvb2wgRkZtcGVnQXVkaW9EZWNvZGVyOjpD b25maWd1cmVEZWNvZGUKKyAgICAgfQorICAgfQorIAorLSAgQVZDb2RlYyogY29kZWMgPSBhdmNv ZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOworKyAgY29uc3QgQVZD b2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNf aWQpOworICAgaWYgKCFjb2RlYyB8fAorICAgICAgIGF2Y29kZWNfb3BlbjIoY29kZWNfY29udGV4 dF8uZ2V0KCksIGNvZGVjLCAmY29kZWNfb3B0aW9ucykgPCAwKSB7CisgICAgIERMT0coRVJST1Ip IDw8ICJDb3VsZCBub3QgaW5pdGlhbGl6ZSBhdWRpbyBkZWNvZGVyOiAiCitkaWZmIC1OYXVycCBx dHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRl cnMvZmZtcGVnX2dsdWUuY2MgcXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21p dW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZ2x1ZS5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAw MDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2Zm bXBlZ19nbHVlLmNjCTIwMjItMDctMTEgMjI6MTI6NDcuOTE4MTkyNzc5IC0wNTAwCitAQCAtNTks NyArNTksNiBAQCBzdGF0aWMgaW50NjRfdCBBVklPU2Vla09wZXJhdGlvbih2b2lkKiBvCisgfQor IAorIHZvaWQgRkZtcGVnR2x1ZTo6SW5pdGlhbGl6ZUZGbXBlZygpIHsKKy0gIGF2X3JlZ2lzdGVy X2FsbCgpOworIH0KKyAKKyBzdGF0aWMgdm9pZCBMb2dDb250YWluZXIoYm9vbCBpc19sb2NhbF9m aWxlLAorQEAgLTk1LDkgKzk0LDYgQEAgRkZtcGVnR2x1ZTo6RkZtcGVnR2x1ZShGRm1wZWdVUkxQ cm90b2NvbAorICAgLy8gRW5hYmxlIGZhc3QsIGJ1dCBpbmFjY3VyYXRlIHNlZWtzIGZvciBNUDMu CisgICBmb3JtYXRfY29udGV4dF8tPmZsYWdzIHw9IEFWRk1UX0ZMQUdfRkFTVF9TRUVLOworIAor LSAgLy8gRW5zdXJlcyB3ZSBjYW4gcmVhZCBvdXQgdmFyaW91cyBtZXRhZGF0YSBiaXRzIGxpa2Ug dnA4IGFscGhhLgorLSAgZm9ybWF0X2NvbnRleHRfLT5mbGFncyB8PSBBVkZNVF9GTEFHX0tFRVBf U0lERV9EQVRBOworLQorICAgLy8gRW5zdXJlcyBmb3JtYXQgcGFyc2luZyBlcnJvcnMgd2lsbCBi YWlsIG91dC4gRnJvbSBhbiBhdWRpdCBvbiAxMS8yMDE3LCBhbGwKKyAgIC8vIGluc3RhbmNlcyB3 ZXJlIHJlYWwgZmFpbHVyZXMuIFNvbHZlcyBidWdzIGxpa2UgaHR0cDovL2NyYnVnLmNvbS83MTA3 OTEuCisgICBmb3JtYXRfY29udGV4dF8tPmVycm9yX3JlY29nbml0aW9uIHw9IEFWX0VGX0VYUExP REU7CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2No cm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX3ZpZGVvX2RlY29kZXIuY2MgcXR3ZWJlbmdpbmUt NS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlkZW9f ZGVjb2Rlci5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZt cGVnX3ZpZGVvX2RlY29kZXIuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAK KysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRlb19k ZWNvZGVyLmNjCTIwMjItMDctMTEgMjI6MTI6NDcuOTE4MTkyNzc5IC0wNTAwCitAQCAtMzkxLDcg KzM5MSw3IEBAIGJvb2wgRkZtcGVnVmlkZW9EZWNvZGVyOjpDb25maWd1cmVEZWNvZGUKKyAgIGlm IChkZWNvZGVfbmFsdXNfKQorICAgICBjb2RlY19jb250ZXh0Xy0+ZmxhZ3MyIHw9IEFWX0NPREVD X0ZMQUcyX0NIVU5LUzsKKyAKKy0gIEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29k ZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKysgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0g YXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKyAgIGlmICgh Y29kZWMgfHwgYXZjb2RlY19vcGVuMihjb2RlY19jb250ZXh0Xy5nZXQoKSwgY29kZWMsIE5VTEwp IDwgMCkgeworICAgICBSZWxlYXNlRkZtcGVnUmVzb3VyY2VzKCk7CisgICAgIHJldHVybiBmYWxz ZTsKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hy b21pdW0vbWVkaWEvZmlsdGVycy9tZWRpYV9maWxlX2NoZWNrZXIuY2MgcXR3ZWJlbmdpbmUtNS4x NS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9tZWRpYV9maWxlX2NoZWNr ZXIuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlhX2Zp bGVfY2hlY2tlci5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIv c3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVja2VyLmNj CTIwMjItMDctMTEgMjI6MTI6NDcuOTE4MTkyNzc5IC0wNTAwCitAQCAtNjgsNyArNjgsNyBAQCBi b29sIE1lZGlhRmlsZUNoZWNrZXI6OlN0YXJ0KGJhc2U6OlRpbWVECisgICAgICAgYXV0byBjb250 ZXh0ID0gQVZTdHJlYW1Ub0FWQ29kZWNDb250ZXh0KGZvcm1hdF9jb250ZXh0LT5zdHJlYW1zW2ld KTsKKyAgICAgICBpZiAoIWNvbnRleHQpCisgICAgICAgICBjb250aW51ZTsKKy0gICAgICBBVkNv ZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNwLT5jb2RlY19pZCk7CisrICAgICAg Y29uc3QgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihjcC0+Y29kZWNfaWQp OworICAgICAgIGlmIChjb2RlYyAmJiBhdmNvZGVjX29wZW4yKGNvbnRleHQuZ2V0KCksIGNvZGVj LCBudWxscHRyKSA+PSAwKSB7CisgICAgICAgICBhdXRvIGxvb3AgPSBzdGQ6Om1ha2VfdW5pcXVl PEZGbXBlZ0RlY29kaW5nTG9vcD4oY29udGV4dC5nZXQoKSk7CisgICAgICAgICBzdHJlYW1fY29u dGV4dHNbaV0gPSB7c3RkOjptb3ZlKGNvbnRleHQpLCBzdGQ6Om1vdmUobG9vcCl9OworZGlmZiAt TmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNv ZGVyX2ltcGwuY2MgcXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZGVj b2Rlcl9pbXBsLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2Vi cnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZGVjb2Rlcl9pbXBsLmNj CTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9o MjY0L2gyNjRfZGVjb2Rlcl9pbXBsLmNjCTIwMjItMDctMTEgMjI6MTI6NDcuOTE4MTkyNzc5IC0w NTAwCitAQCAtMjAzLDcgKzIwMyw3IEBAIGludDMyX3QgSDI2NERlY29kZXJJbXBsOjpJbml0RGVj b2RlKGNvbnMKKyAgIC8vIGEgcG9pbnRlciB8dGhpc3wuCisgICBhdl9jb250ZXh0Xy0+b3BhcXVl ID0gdGhpczsKKyAKKy0gIEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoYXZf Y29udGV4dF8tPmNvZGVjX2lkKTsKKysgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19m aW5kX2RlY29kZXIoYXZfY29udGV4dF8tPmNvZGVjX2lkKTsKKyAgIGlmICghY29kZWMpIHsKKyAg ICAgLy8gVGhpcyBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgRkZtcGVnIGhhcyBub3QgYmVlbiBpbml0 aWFsaXplZCBvciBpdCBoYXMgbm90CisgICAgIC8vIGJlZW4gY29tcGlsZWQvaW5pdGlhbGl6ZWQg d2l0aCB0aGUgY29ycmVjdCBzZXQgb2YgY29kZWNzLgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUt d2ViZW5naW5lL3RlbXBsYXRlIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlCmluZGV4 IGVkZWIwN2YxYWI3YS4uMDk1YWI2NzcwMWU0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS13ZWJl bmdpbmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlCkBAIC0x LDkgKzEsOSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1LXdlYmVuZ2luZScKIHBrZ25hbWU9 cXQ1LXdlYmVuZ2luZQotdmVyc2lvbj01LjE1LjExCi1yZXZpc2lvbj00Cit2ZXJzaW9uPTUuMTUu MTMKK3JldmlzaW9uPTEKIF92ZXJzaW9uPSIke3ZlcnNpb259LWx0cyIKLV9jaHJvbWl1bV9jb21t aXQ9YmUzNDllYWY2MmU3Nzk1NTc5MWQ3YmYyOWY4OTNmMWU4YTM3ZGFmNAorX2Nocm9taXVtX2Nv bW1pdD1lNDhkZjc4MDNjN2M5OGIwYjI0NzFjOTQwNTdkMzJlNDRhMzAxYWQ1CiBhcmNocz0ieDg2 XzY0KiBpNjg2KiBhcm12WzY3XSogcHBjNjQqIGFhcmNoNjQqIgogY3JlYXRlX3dya3NyYz15ZXMK IGJ1aWxkX3N0eWxlPXFtYWtlCkBAIC0zMiw4ICszMiw4IEBAIGxpY2Vuc2U9IkdQTC0zLjAtb3It bGF0ZXIsIExHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vcXQuaW8vIgogZGlz dGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vcXQvcXR3ZWJlbmdpbmUvYXJjaGl2ZS92JHtfdmVy c2lvbn0udGFyLmd6CiAgaHR0cHM6Ly9naXRodWIuY29tL3F0L3F0d2ViZW5naW5lLWNocm9taXVt L2FyY2hpdmUvJHtfY2hyb21pdW1fY29tbWl0fS50YXIuZ3oiCi1jaGVja3N1bT0iYWE3NDY2MzU2 YzQ1MGM1ZjU4NzBmOTc5YjkzY2Q3ZTdlNjJkYTExNjVjMzI4ZmZjYWIxYTk5MjhkYjE4YWQ2Nwot IDZmNDdlZDhhYjhjYzA2MjQxMWY2ZjIwNmRhNjM1M2JjODI2M2Q2ZWQ2ZDYyOTBjNjg5YTA1YzAx ZDkxZjY0NmIiCitjaGVja3N1bT0iNGI1OTgzOGVkNzVlZjc4OGI1OWUxZTQxMjUzNWEwZTQyZGQ5 ZDMxMTY2MWZkZWFkYjE5MWI1ODFiYTgxNWM2MworIGE5MTY4NjU2MmIxZDRlOGIyMjBlMGJiY2Jh YjVmZWI2NDYzMGUyZGU5NzRiMzVhYzAzNGJmMzg4YWY3NzFhNmMiCiAKIG5vX2dlbmVyaWNfcGtn Y29uZmlnX2xpbms9eWVzCiBidWlsZF9vcHRpb25zPSJzbmRpbyBwaXBld2lyZSIKCkZyb20gYTFh OTI4MTFhYmE3YTQyYjhiMDY0YzRhN2UyZmRiYjgzNzQ0YzRiYyBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDcxLzExNV0gcXQ1OiB1cGRhdGUg dG8gNS4xNS44CgotLS0KIC4uLmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5w YXRjaCB8IDEyOTEzICsrKysrKysrKysrKysrKysKIHNyY3BrZ3MvcXQ1L3RlbXBsYXRlICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgIDEyICstCiAyIGZpbGVzIGNoYW5nZWQsIDEyOTE5IGlu c2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9x dDUvcGF0Y2hlcy9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5wYXRj aAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1vcGVuc291 cmNlLXNyYy01LjE1Ljgta2Y1LTEucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2ZXJ5 d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTY2Yzk4YmNkM2JiCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9xdDUvcGF0Y2hlcy9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1r ZjUtMS5wYXRjaApAQCAtMCwwICsxLDEyOTEzIEBACitTdWJtaXR0ZWQgQnk6ICAgICAgICAgICAg UGllcnJlIExhYmFzdGllIDxwaWVycmVfZG90X2xhYmFzdGllX2F0X25ldWZfZG90X2ZyPgorRGF0 ZTogICAgICAgICAgICAgICAgICAgIDIwMjMtMDEtMDUKK0luaXRpYWwgUGFja2FnZSBWZXJzaW9u OiA1LjE1LjgKK1Vwc3RyZWFtIFN0YXR1czogICAgICAgICBBcHBsaWVkIChhY2NvcmRpbmcgdG8g S0RFKQorT3JpZ2luOiAgICAgICAgICAgICAgICAgIEtERSBwYXRjaCBzZXQKK0Rlc2NyaXB0aW9u OiAgICAgICAgICAgICBQYXRjaCBzZXQgbWFpbnRhaW5lZCBieSB0aGUgS0RFIGZvbGtzCitzZWUg aHR0cHM6Ly9kb3Qua2RlLm9yZy8yMDIxLzA0LzA2L2Fubm91bmNpbmcta2Rlcy1xdC01LXBhdGNo LWNvbGxlY3Rpb24KK1BhdGNoIGdlbmVyYXRlZCB1c2luZyB0aGUgcHJvY2VkdXJlIGluCitodHRw czovL3dpa2kubGludXhmcm9tc2NyYXRjaC5vcmcvYmxmcy90aWNrZXQvMTc0NzYjY29tbWVudDoz CisKK1N1Ym1vZHVsZSBxdGJhc2UgNGVlNGZjMTguLjljZjU4NmQ2OgorZGlmZiAtLWdpdCBhL3F0 YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRyb2lkL3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3Nw ZWNzL2NvbW1vbi9hbmRyb2lkL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggZjc1YmM0MDkzYi4uMmJk NTk0MTBkNCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRyb2lkL3FwbGF0 Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3Jt ZGVmcy5oCitAQCAtMTQ0LDExICsxNDQsNyBAQAorICNkZWZpbmUgUVRfU0lHTkFMX0FSR1MgICAg ICAgICAgaW50CisgI2RlZmluZSBRVF9TSUdOQUxfSUdOT1JFICAgICAgICBTSUdfSUdOCisgCist I2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49IDIpCisgI2RlZmluZSBRVF9T T0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xF Tl9UICAgICAgICAgICAgaW50CistI2VuZGlmCisgCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJD RSkgJiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAg ICAgICAgOjpzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL21h Yy9zZGsubWsgYi9xdGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9tYWMvc2RrLm1rCitpbmRleCBmMzBi NTgzMGI0Li5hMzJjZWFjYjZjIDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMv bWFjL3Nkay5taworKysrIGIvcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5taworQEAg LTEsNiArMSw2IEBACisgCisgaWZlcSAoJChRVF9NQUNfU0RLX05PX1ZFUlNJT05fQ0hFQ0spLCkK Ky0gICAgQ0hFQ0tfU0RLX0NPTU1BTkQgPSAvdXNyL2Jpbi94Y3J1biAtLXNkayAkKEVYUE9SVF9R TUFLRV9NQUNfU0RLKSAtc2hvdy1zZGstdmVyc2lvbiAyPiYxCisrICAgIENIRUNLX1NES19DT01N QU5EID0gL3Vzci9iaW4veGNydW4gLS1zZGsgJChFWFBPUlRfUU1BS0VfTUFDX1NESykgLXNob3ct c2RrLXZlcnNpb24gMj4vZGV2L251bGwKKyAgICAgQ1VSUkVOVF9NQUNfU0RLX1ZFUlNJT04gOj0g JChzaGVsbCBERVZFTE9QRVJfRElSPSQoRVhQT1JUX1FNQUtFX1hDT0RFX0RFVkVMT1BFUl9QQVRI KSAkKENIRUNLX1NES19DT01NQU5EKSkKKyAgICAgaWZuZXEgKCQoQ1VSUkVOVF9NQUNfU0RLX1ZF UlNJT04pLCQoRVhQT1JUX1FNQUtFX01BQ19TREtfVkVSU0lPTikpCisgICAgICAgICAjIFdlIGRv bid0IHdhbnQgdG8gY29tcGxhaW4gYWJvdXQgb3V0IG9mIGRhdGUgU0RLIHVubGVzcyB0aGUgdGFy Z2V0IG5lZWRzIHRvIGJlIHJlbWFkZS4KK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9saW51 eC1jbGFuZy9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51eC1jbGFuZy9xcGxh dGZvcm1kZWZzLmgKK2luZGV4IGE4MThkOTczZjAuLmMxYWI3MmZiYzYgMTAwNjQ0CistLS0gYS9x dGJhc2UvbWtzcGVjcy9saW51eC1jbGFuZy9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9t a3NwZWNzL2xpbnV4LWNsYW5nL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTc5LDE0ICs3OSw2IEBACisg I2RlZmluZSBRVF9VU0VfWE9QRU5fTEZTX0VYVEVOU0lPTlMKKyAjaW5jbHVkZSAiLi4vY29tbW9u L3Bvc2l4L3FwbGF0Zm9ybWRlZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCistCistI2lm IGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49IDIpCistI2RlZmluZSBRVF9TT0NL TEVOX1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9U ICAgICAgICAgICAgaW50CistI2VuZGlmCistCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkg JiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAg ICAgOjpzbnByaW50ZgorICNkZWZpbmUgUVRfVlNOUFJJTlRGICAgICAgICAgICAgOjp2c25wcmlu dGYKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9saW51eC1nKysvcXBsYXRmb3JtZGVmcy5o IGIvcXRiYXNlL21rc3BlY3MvbGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggMTM1MjNm MDcwMi4uNGQyNzUwZDllYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9x cGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1k ZWZzLmgKK0BAIC03OSwxNCArNzksNiBAQAorICNkZWZpbmUgUVRfVVNFX1hPUEVOX0xGU19FWFRF TlNJT05TCisgI2luY2x1ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCist I3VuZGVmIFFUX1NPQ0tMRU5fVAorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJ QkNfXyA8IDIpCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZWxzZQor LSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2VuZGlmCistCisg I2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAwKQorICNk ZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAgICAgOjpzbnByaW50ZgorICNkZWZpbmUgUVRfVlNO UFJJTlRGICAgICAgICAgICAgOjp2c25wcmludGYKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVj cy9saW51eC1sbHZtL3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0v cXBsYXRmb3JtZGVmcy5oCitpbmRleCBkYzc1MGFiMWVmLi5kM2NjMzliNDdmIDEwMDY0NAorLS0t IGEvcXRiYXNlL21rc3BlY3MvbGludXgtbGx2bS9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFz ZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRmb3JtZGVmcy5oCitAQCAtODAsMTQgKzgwLDYgQEAK KyAjZGVmaW5lIFFUX1VTRV9YT1BFTl9MRlNfRVhURU5TSU9OUworICNpbmNsdWRlICIuLi9jb21t b24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgorIAorLSN1bmRlZiBRVF9TT0NLTEVOX1QKKy0KKy0j aWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0gMikKKy0jZGVmaW5lIFFUX1NP Q0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVO X1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYKKy0KKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNF KSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAg ICAgICA6OnNucHJpbnRmCisgI2RlZmluZSBRVF9WU05QUklOVEYgICAgICAgICAgICA6OnZzbnBy aW50ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRmb3Jt ZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbGludXgtbHNiLWcrKy9xcGxhdGZvcm1kZWZzLmgKK2lu ZGV4IDRjNGU1M2RhMmEuLjgzYmFmZmIzZTMgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9s aW51eC1sc2ItZysrL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgt bHNiLWcrKy9xcGxhdGZvcm1kZWZzLmgKK0BAIC04NSwxNiArODUsOSBAQAorICNpbmNsdWRlICIu Li9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgorIAorICN1bmRlZiBRVF9PUEVOX0xBUkdF RklMRQorLSN1bmRlZiBRVF9TT0NLTEVOX1QKKyAKKyAjZGVmaW5lIFFUX09QRU5fTEFSR0VGSUxF ICAgICAgIDAKKyAKKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0gMikK Ky0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNlCistI2Rl ZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYKKy0KKyAjaWZuZGVmIFNJ T0NHSUZCUkRBRERSCisgIyAgZGVmaW5lIFNJT0NHSUZCUkRBRERSIDB4ODkxOQorICNlbmRpZgor ZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2x5bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oIGIv cXRiYXNlL21rc3BlY3MvbHlueG9zLWcrKy9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IDQzMzllYTJi MjMuLjYwMDdhZjAwNTUgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysrL3Fw bGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbHlueG9zLWcrKy9xcGxhdGZvcm1k ZWZzLmgKK0BAIC03MiwxNCArNzIsNiBAQAorIAorICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgv cXBsYXRmb3JtZGVmcy5oIgorIAorLSN1bmRlZiBRVF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5l ZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0gMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAg ICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAg ICAgICBpbnQKKy0jZW5kaWYKKy0KKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hP UEVOX1NPVVJDRSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNu cHJpbnRmCisgI2RlZmluZSBRVF9WU05QUklOVEYgICAgICAgICAgICA6OnZzbnByaW50ZgorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvM3JkcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0hhbmRsZUFs bG9jYXRvci5jcHAgYi9xdGJhc2Uvc3JjLzNyZHBhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9IYW5k bGVBbGxvY2F0b3IuY3BwCitpbmRleCBjM2MxODQyNThmLi4zMmFmM2Y4ZjI5IDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy8zcmRwYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9y LmNwcAorKysrIGIvcXRiYXNlL3NyYy8zcmRwYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvSGFuZGxl QWxsb2NhdG9yLmNwcAorQEAgLTEwLDYgKzEwLDcgQEAKKyAjaW5jbHVkZSAibGliQU5HTEUvSGFu ZGxlQWxsb2NhdG9yLmgiCisgCisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKysjaW5jbHVkZSA8bGlt aXRzPgorIAorICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyAKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjLzNyZHBhcnR5L2ZvcmtmZC9mb3JrZmRfbGludXguYyBiL3F0YmFzZS9zcmMvM3JkcGFy dHkvZm9ya2ZkL2ZvcmtmZF9saW51eC5jCitpbmRleCBmZmUwZTlhNWUyLi5iMWY1NDA4ZDExIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMKKysr KyBiL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9ya2ZkL2ZvcmtmZF9saW51eC5jCitAQCAtODIsNyAr ODIsOCBAQCBzdGF0aWMgaW50IHN5c19jbG9uZSh1bnNpZ25lZCBsb25nIGNsb25lZmxhZ3MsIGlu dCAqcHRpZCkKKyAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9jbG9uZSwgY2xvbmVmbGFncywgY2hp bGRfc3RhY2ssIHN0YWNrX3NpemUsIHB0aWQsIG5ld3RscywgY3RpZCk7CisgI2VsaWYgZGVmaW5l ZChfX2FyY19fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8 IGRlZmluZWQoX19taXBzX18pIHx8IFwKKyAgICAgZGVmaW5lZChfX25kczMyX18pIHx8IGRlZmlu ZWQoX19ocHBhX18pIHx8IGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19pMzg2X18p IHx8IFwKKy0gICAgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9feHRlbnNhX18pIHx8 IGRlZmluZWQoX19hbHBoYV9fKSB8fCBkZWZpbmVkKF9fcmlzY3YpCisrICAgIGRlZmluZWQoX194 ODZfNjRfXykgfHwgZGVmaW5lZChfX3h0ZW5zYV9fKSB8fCBkZWZpbmVkKF9fYWxwaGFfXykgfHwg ZGVmaW5lZChfX3Jpc2N2KSB8fCBcCisrICAgIGRlZmluZWQoX19sb29uZ2FyY2hfXykKKyAgICAg LyogY3RpZCBhbmQgbmV3dGxzIGFyZSBpbnZlcnRlZCBvbiBDT05GSUdfQ0xPTkVfQkFDS1dBUkRT IGFyY2hpdGVjdHVyZXMsCisgICAgICAqIGJ1dCBzaW5jZSBib3RoIHZhbHVlcyBhcmUgMCwgdGhl cmUncyBubyBoYXJtLiAqLworICAgICByZXR1cm4gc3lzY2FsbChfX05SX2Nsb25lLCBjbG9uZWZs YWdzLCBjaGlsZF9zdGFjaywgcHRpZCwgY3RpZCwgbmV3dGxzKTsKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2FuZHJvaWQvamFyL3NyYy9vcmcvcXRwcm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZl LmphdmEgYi9xdGJhc2Uvc3JjL2FuZHJvaWQvamFyL3NyYy9vcmcvcXRwcm9qZWN0L3F0NS9hbmRy b2lkL1F0TmF0aXZlLmphdmEKK2luZGV4IDU3OTJiNWIyZjUuLjJmNzQ3NTBmY2YgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2FuZHJvaWQvamFyL3NyYy9vcmcvcXRwcm9qZWN0L3F0NS9hbmRyb2lk L1F0TmF0aXZlLmphdmEKKysrKyBiL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9xdHBy b2plY3QvcXQ1L2FuZHJvaWQvUXROYXRpdmUuamF2YQorQEAgLTExNiw2ICsxMTYsNyBAQCBwdWJs aWMgY2xhc3MgUXROYXRpdmUKKyAgICAgcHVibGljIHN0YXRpYyBRdFRocmVhZCBtX3F0VGhyZWFk ID0gbmV3IFF0VGhyZWFkKCk7CisgICAgIHByaXZhdGUgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBV cmk+IG1fY2FjaGVkVXJpcyA9IG5ldyBIYXNoTWFwPFN0cmluZywgVXJpPigpOworICAgICBwcml2 YXRlIHN0YXRpYyBBcnJheUxpc3Q8U3RyaW5nPiBtX2tub3duRGlycyA9IG5ldyBBcnJheUxpc3Q8 U3RyaW5nPigpOworKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTm9QZXJtaXNzaW9u RXJyb3JNZXNzYWdlID0gIk5vIHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIjsKKyAKKyAgICAgcHJp dmF0ZSBzdGF0aWMgZmluYWwgUnVubmFibGUgcnVuUGVuZGluZ0NwcFJ1bm5hYmxlc1J1bm5hYmxl ID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgQE92ZXJyaWRlCitAQCAtMTkzLDExICsxOTQs MTAgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICAgICAgICAgICAgICByZXR1cm4g aXRlclVyaTsKKyAgICAgICAgICAgICB9CisgCistICAgICAgICAgICAgLy8gQW5kcm9pZCA2IGFu ZCBlYXJsaWVyIGNvdWxkIHN0aWxsIG1hbmFnZSB0byBvcGVuIHRoZSBmaWxlIHNvIHdlIGNhbiBy ZXR1cm4gdGhlCistICAgICAgICAgICAgLy8gcGFyc2VkIHVyaSBoZXJlCistICAgICAgICAgICAg aWYgKEJ1aWxkLlZFUlNJT04uU0RLX0lOVCA8IDI0KQorLSAgICAgICAgICAgICAgICByZXR1cm4g cGFyc2VkVXJpOworLSAgICAgICAgICAgIHJldHVybiBudWxsOworKyAgICAgICAgICAgIC8vIGlm IHdlIG9ubHkgaGF2ZSB0cmFuc2llbnQgcGVybWlzc2lvbnMgb24gdXJpIGFsbCB0aGUgYWJvdmUg d2lsbCBmYWlsLAorKyAgICAgICAgICAgIC8vIGJ1dCB3ZSB3aWxsIGJlIGFibGUgdG8gcmVhZCB0 aGUgZmlsZSBhbnl3YXksIHNvIGNvbnRpbnVlIHdpdGggdXJpIGhlcmUgYW55d2F5CisrICAgICAg ICAgICAgLy8gYW5kIGNoZWNrIGZvciBTZWN1cml0eUV4Y2VwdGlvbnMgbGF0ZXIKKysgICAgICAg ICAgICByZXR1cm4gcGFyc2VkVXJpOworICAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRp b24gZSkgeworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICAg cmV0dXJuIG51bGw7CitAQCAtMjQ0LDcgKzI0NCw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQor ICAgICAgICAgaW50IGVycm9yID0gLTE7CisgCisgICAgICAgICBpZiAodXJpID09IG51bGwpIHsK Ky0gICAgICAgICAgICBMb2cuZShRdFRBRywgIm9wZW5GZEZvckNvbnRlbnRVcmwoKTogTm8gcGVy bWlzc2lvbnMgdG8gb3BlbiBVcmkiKTsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgIm9wZW5G ZEZvckNvbnRlbnRVcmwoKTogIiArIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAg ICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgfQorIAorQEAgLTI1NCwxMiArMjU0LDEzIEBA IHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgICAgIHJldHVybiBmZERlc2MuZGV0YWNo RmQoKTsKKyAgICAgICAgIH0gY2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAg ICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZXJyb3I7 CisgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAg ICAgICAgIExvZy5lKFF0VEFHLCAib3BlbkZkRm9yQ29udGVudFVybCgpOiBJbnZhbGlkIFVyaSIp OworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJu IGVycm9yOworKyAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAg ICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAg fQorKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgICB9CisgCisgICAgIHB1YmxpYyBzdGF0aWMg bG9uZyBnZXRTaXplKENvbnRleHQgY29udGV4dCwgU3RyaW5nIGNvbnRlbnRVcmwpCitAQCAtMjcw LDcgKzI3MSw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgICAgIHVyaSA9IGdl dFVyaVdpdGhWYWxpZFBlcm1pc3Npb24oY29udGV4dCwgY29udGVudFVybCwgInIiKTsKKyAKKyAg ICAgICAgIGlmICh1cmkgPT0gbnVsbCkgeworLSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0 U2l6ZSgpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSIpOworKyAgICAgICAgICAgIExvZy5l KFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgIHJldHVybiBz aXplOworICAgICAgICAgfSBlbHNlIGlmICghbV9jYWNoZWRVcmlzLmNvbnRhaW5zS2V5KGNvbnRl bnRVcmwpKSB7CisgICAgICAgICAgICAgbV9jYWNoZWRVcmlzLnB1dChjb250ZW50VXJsLCB1cmkp OworQEAgLTI4OCwxMiArMjg5LDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAg fSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cu ZShRdFRBRywgImdldFNpemUoKTogSW52YWxpZCBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50 U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBzaXplOworICAgICAgICAgfSAgY2F0 Y2ggKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cu ZShRdFRBRywgImdldFNpemUoKTogVW5zdXBwb3J0ZWQgb3BlcmF0aW9uIGZvciBnaXZlbiBVcmki KTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVy biBzaXplOworKyAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAg ICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAg fQorKyAgICAgICAgcmV0dXJuIHNpemU7CisgICAgIH0KKyAKKyAgICAgcHVibGljIHN0YXRpYyBi b29sZWFuIGNoZWNrRmlsZUV4aXN0cyhDb250ZXh0IGNvbnRleHQsIFN0cmluZyBjb250ZW50VXJs KQorQEAgLTMwMyw3ICszMDUsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgIGlm ICh1cmkgPT0gbnVsbCkKKyAgICAgICAgICAgICB1cmkgPSBnZXRVcmlXaXRoVmFsaWRQZXJtaXNz aW9uKGNvbnRleHQsIGNvbnRlbnRVcmwsICJyIik7CisgICAgICAgICBpZiAodXJpID09IG51bGwp IHsKKy0gICAgICAgICAgICBMb2cuZShRdFRBRywgImNoZWNrRmlsZUV4aXN0cygpOiBObyBwZXJt aXNzaW9ucyB0byBvcGVuIFVyaSIpOworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1p c3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgIHJldHVybiBleGlzdHM7CisgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgIGlmICghbV9jYWNoZWRVcmlzLmNvbnRhaW5zS2V5KGNv bnRlbnRVcmwpKQorQEAgLTMyMSwxMiArMzIzLDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQor ICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAg ICAgICBMb2cuZShRdFRBRywgImNoZWNrRmlsZUV4aXN0cygpOiBJbnZhbGlkIFVyaSIpOworICAg ICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGV4aXN0 czsKKyAgICAgICAgIH0gY2F0Y2ggKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsK KyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImNoZWNrRmlsZUV4aXN0cygpOiBVbnN1cHBvcnRl ZCBvcGVyYXRpb24gZm9yIGdpdmVuIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1Ry YWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAgfSBjYXRjaCAoU2Vj dXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Np b25FcnJvck1lc3NhZ2UpOworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJuIGV4aXN0czsKKyAg ICAgfQorIAorICAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gY2hlY2tJZldyaXRhYmxlKENvbnRl eHQgY29udGV4dCwgU3RyaW5nIGNvbnRlbnRVcmwpCitAQCAtMzQ0LDcgKzM0Nyw3IEBAIHB1Ymxp YyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgICAgIHVyaSA9IGdldFVyaVdpdGhWYWxpZFBlcm1p c3Npb24oY29udGV4dCwgY29udGVudFVybCwgInIiKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGlm ICh1cmkgPT0gbnVsbCkgeworLSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiaXNEaXIoKTogTm8g cGVybWlzc2lvbnMgdG8gb3BlbiBVcmkiKTsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9Q ZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICByZXR1cm4gaXNEaXI7CisgICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgIGlmICghbV9jYWNoZWRVcmlzLmNvbnRhaW5zS2V5 KGNvbnRlbnRVcmwpKQorQEAgLTM3NCwxMiArMzc3LDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2 ZQorICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAg ICAgICAgICBMb2cuZShRdFRBRywgImNoZWNrSWZEaXIoKTogSW52YWxpZCBVcmkiKTsKKyAgICAg ICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK KyAgICAgICAgIH0gY2F0Y2ggKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAg ICAgICAgICAgICBMb2cuZShRdFRBRywgImNoZWNrSWZEaXIoKTogVW5zdXBwb3J0ZWQgb3BlcmF0 aW9uIGZvciBnaXZlbiBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwor LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhj ZXB0aW9uIGUpIHsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JN ZXNzYWdlKTsKKyAgICAgICAgIH0KKysgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorICAg ICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGxpc3RDb250ZW50c0Zyb21UcmVlVXJpKENvbnRleHQg Y29udGV4dCwgU3RyaW5nIGNvbnRlbnRVcmwpCisgICAgIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50cmVkdWNla2VybmVsLmggYi9xdGJhc2Uvc3JjL2Nv bmN1cnJlbnQvcXRjb25jdXJyZW50cmVkdWNla2VybmVsLmgKK2luZGV4IDhmOWE5Mzg5NTIuLmE5 OGRlZGVmMmUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50 cmVkdWNla2VybmVsLmgKKysrKyBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRy ZWR1Y2VrZXJuZWwuaAorQEAgLTIxMiwxMSArMjEyLDEzIEBAIHB1YmxpYzoKKyAKKyAgICAgaW5s aW5lIGJvb2wgc2hvdWxkVGhyb3R0bGUoKQorICAgICB7CisrICAgICAgICBzdGQ6OmxvY2tfZ3Vh cmQ8UU11dGV4PiBsb2NrZXIobXV0ZXgpOworICAgICAgICAgcmV0dXJuIChyZXN1bHRzTWFwU2l6 ZSA+IChSZWR1Y2VRdWV1ZVRocm90dGxlTGltaXQgKiB0aHJlYWRDb3VudCkpOworICAgICB9Cisg CisgICAgIGlubGluZSBib29sIHNob3VsZFN0YXJ0VGhyZWFkKCkKKyAgICAgeworKyAgICAgICAg c3RkOjpsb2NrX2d1YXJkPFFNdXRleD4gbG9ja2VyKG11dGV4KTsKKyAgICAgICAgIHJldHVybiAo cmVzdWx0c01hcFNpemUgPD0gKFJlZHVjZVF1ZXVlU3RhcnRMaW1pdCAqIHRocmVhZENvdW50KSk7 CisgICAgIH0KKyB9OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1 cnJlbnR0aHJlYWRlbmdpbmUuY3BwIGIvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVu dHRocmVhZGVuZ2luZS5jcHAKK2luZGV4IGVhNmNlM2FjNDIuLjdmOTFhMmJhNjggMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAor KysrIGIvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAK K0BAIC0xNzYsNiArMTc2LDM5IEBAIHZvaWQgVGhyZWFkRW5naW5lQmFzZTo6c3RhcnRTaW5nbGVU aHJlYWRlZCgpCisgICAgIGZpbmlzaCgpOworIH0KKyAKKyt2b2lkIFRocmVhZEVuZ2luZUJhc2U6 OnN0YXJ0QmxvY2tpbmcoKQorK3sKKysgICAgc3RhcnQoKTsKKysgICAgYmFycmllci5hY3F1aXJl KCk7CisrICAgIHN0YXJ0VGhyZWFkcygpOworKworKyAgICBib29sIHRocm90dGxlZCA9IGZhbHNl OworKyNpZm5kZWYgUVRfTk9fRVhDRVBUSU9OUworKyAgICB0cnkgeworKyNlbmRpZgorKyAgICAg ICAgd2hpbGUgKHRocmVhZEZ1bmN0aW9uKCkgPT0gVGhyb3R0bGVUaHJlYWQpIHsKKysgICAgICAg ICAgICBpZiAodGhyZWFkVGhyb3R0bGVFeGl0KCkpIHsKKysgICAgICAgICAgICAgICAgdGhyb3R0 bGVkID0gdHJ1ZTsKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAg ICAgICAgfQorKyNpZm5kZWYgUVRfTk9fRVhDRVBUSU9OUworKyAgICB9IGNhdGNoIChRRXhjZXB0 aW9uICZlKSB7CisrICAgICAgICBoYW5kbGVFeGNlcHRpb24oZSk7CisrICAgIH0gY2F0Y2ggKC4u LikgeworKyAgICAgICAgaGFuZGxlRXhjZXB0aW9uKFFVbmhhbmRsZWRFeGNlcHRpb24oKSk7Cisr ICAgIH0KKysjZW5kaWYKKysKKysgICAgaWYgKHRocm90dGxlZCA9PSBmYWxzZSkgeworKyAgICAg ICAgYmFycmllci5yZWxlYXNlKCk7CisrICAgIH0KKysKKysgICAgYmFycmllci53YWl0KCk7Cisr ICAgIGZpbmlzaCgpOworKyAgICBleGNlcHRpb25TdG9yZS50aHJvd1Bvc3NpYmxlRXhjZXB0aW9u KCk7CisrfQorKworIHZvaWQgVGhyZWFkRW5naW5lQmFzZTo6c3RhcnRUaHJlYWQoKQorIHsKKyAg ICAgc3RhcnRUaHJlYWRJbnRlcm5hbCgpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29uY3Vy cmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuaCBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9x dGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuaAoraW5kZXggN2MzMGNlYmRiYy4uYTRjODU0OGNjNCAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdp bmUuaAorKysrIGIvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2lu ZS5oCitAQCAtOTEsNiArOTEsNyBAQCBwdWJsaWM6CisgICAgIFRocmVhZEVuZ2luZUJhc2UoKTsK KyAgICAgdmlydHVhbCB+VGhyZWFkRW5naW5lQmFzZSgpOworICAgICB2b2lkIHN0YXJ0U2luZ2xl VGhyZWFkZWQoKTsKKysgICAgdm9pZCBzdGFydEJsb2NraW5nKCk7CisgICAgIHZvaWQgc3RhcnRU aHJlYWQoKTsKKyAgICAgYm9vbCBpc0NhbmNlbGVkKCk7CisgICAgIHZvaWQgd2FpdEZvclJlc3Vt ZSgpOworQEAgLTE0Myw2ICsxNDQsMTUgQEAgcHVibGljOgorICAgICAgICAgcmV0dXJuIHJlc3Vs dCgpOworICAgICB9CisgCisrICAgIC8vIFJ1bnMgdGhlIHVzZXIgYWxnb3JpdGhtIHVzaW5nIG11 bHRpcGxlIHRocmVhZHMuCisrICAgIC8vIFRoaXMgZnVuY3Rpb24gYmxvY2tzIHVudGlsIHRoZSBh bGdvcml0aG0gaXMgZmluaXNoZWQsCisrICAgIC8vIGFuZCB0aGVuIHJldHVybnMgdGhlIHJlc3Vs dC4KKysgICAgVCAqc3RhcnRCbG9ja2luZygpCisrICAgIHsKKysgICAgICAgIFRocmVhZEVuZ2lu ZUJhc2U6OnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIHJldHVybiByZXN1bHQoKTsKKysgICAg fQorKworICAgICAvLyBSdW5zIHRoZSB1c2VyIGFsZ29yaXRobSB1c2luZyBtdWx0aXBsZSB0aHJl YWRzLgorICAgICAvLyBEb2VzIG5vdCBibG9jaywgcmV0dXJucyBhIGZ1dHVyZS4KKyAgICAgUUZ1 dHVyZTxUPiBzdGFydEFzeW5jaHJvbm91c2x5KCkKK0BAIC0yMjMsNiArMjMzLDEzIEBAIGNsYXNz IFRocmVhZEVuZ2luZVN0YXJ0ZXIgOiBwdWJsaWMgVGhyZWFkRW5naW5lU3RhcnRlckJhc2U8VD4K KyBwdWJsaWM6CisgICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXIoVHlwZWRUaHJlYWRFbmdpbmUgKmVu ZykKKyAgICAgICAgIDogQmFzZShlbmcpIHsgfQorKworKyAgICBUIHN0YXJ0QmxvY2tpbmcoKQor KyAgICB7CisrICAgICAgICBUIHQgPSAqdGhpcy0+dGhyZWFkRW5naW5lLT5zdGFydEJsb2NraW5n KCk7CisrICAgICAgICBkZWxldGUgdGhpcy0+dGhyZWFkRW5naW5lOworKyAgICAgICAgcmV0dXJu IHQ7CisrICAgIH0KKyB9OworIAorIC8vIEZ1bGwgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gd2hl cmUgVCBpcyB2b2lkLgorQEAgLTIzMiw2ICsyNDksMTIgQEAgY2xhc3MgVGhyZWFkRW5naW5lU3Rh cnRlcjx2b2lkPiA6IHB1YmxpYyBUaHJlYWRFbmdpbmVTdGFydGVyQmFzZTx2b2lkPgorIHB1Ymxp YzoKKyAgICAgVGhyZWFkRW5naW5lU3RhcnRlcihUaHJlYWRFbmdpbmU8dm9pZD4gKl90aHJlYWRF bmdpbmUpCisgICAgICAgICA6IFRocmVhZEVuZ2luZVN0YXJ0ZXJCYXNlPHZvaWQ+KF90aHJlYWRF bmdpbmUpIHt9CisrCisrICAgIHZvaWQgc3RhcnRCbG9ja2luZygpCisrICAgIHsKKysgICAgICAg IHRoaXMtPnRocmVhZEVuZ2luZS0+c3RhcnRCbG9ja2luZygpOworKyAgICAgICAgZGVsZXRlIHRo aXMtPnRocmVhZEVuZ2luZTsKKysgICAgfQorIH07CisgCisgLy8hIFtxdGNvbmN1cnJlbnR0aHJl YWRlbmdpbmUtMV0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2 YXJpYW50YW5pbWF0aW9uLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9hbmltYXRpb24vcXZhcmlh bnRhbmltYXRpb24uY3BwCitpbmRleCA5OGIwMmYwMjAyLi5lYWMxNTI0MTA3IDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9jb3JlbGliL2FuaW1hdGlvbi9xdmFyaWFudGFuaW1hdGlvbi5jcHAKKysr KyBiL3F0YmFzZS9zcmMvY29yZWxpYi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwCitA QCAtMjc2LDcgKzI3Niw5IEBAIHZvaWQgUVZhcmlhbnRBbmltYXRpb25Qcml2YXRlOjpzZXRDdXJy ZW50VmFsdWVGb3JQcm9ncmVzcyhjb25zdCBxcmVhbCBwcm9ncmVzcykKKyAKKyAgICAgY29uc3Qg cXJlYWwgc3RhcnRQcm9ncmVzcyA9IGN1cnJlbnRJbnRlcnZhbC5zdGFydC5maXJzdDsKKyAgICAg Y29uc3QgcXJlYWwgZW5kUHJvZ3Jlc3MgPSBjdXJyZW50SW50ZXJ2YWwuZW5kLmZpcnN0OworLSAg ICBjb25zdCBxcmVhbCBsb2NhbFByb2dyZXNzID0gKHByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcykg LyAoZW5kUHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNzKTsKKysgICAgY29uc3QgcXJlYWwgbG9jYWxQ cm9ncmVzcyA9CisrICAgICAgICAgICAgcUlzTnVsbChwcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3Mp ID8gMC4wIC8vIGF2b2lkIDAvMCBiZWxvdworKyAgICAgICAgICAgIC8qIGVsc2UgKi8gICAgICAg ICAgICAgICAgICAgICAgICA6IChwcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpIC8gKGVuZFByb2dy ZXNzIC0gc3RhcnRQcm9ncmVzcyk7CisgCisgICAgIFFWYXJpYW50IHJldCA9IHEtPmludGVycG9s YXRlZChjdXJyZW50SW50ZXJ2YWwuc3RhcnQuc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3VycmVudEludGVydmFsLmVuZC5zZWNvbmQsCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xbmFtZXNwYWNlLmggYi9xdGJhc2Uvc3JjL2NvcmVs aWIvZ2xvYmFsL3FuYW1lc3BhY2UuaAoraW5kZXggYWQ0MTUwYjMxNy4uYmYxOWIxNjI3YiAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5oCisrKysgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FuYW1lc3BhY2UuaAorQEAgLTE4NjQsNyArMTg2NCw3 IEBAIHB1YmxpYzoKKyAgICAgUVRfUV9FTlVNKFRpbWVyVHlwZSkKKyAgICAgUVRfUV9FTlVNKFNj cm9sbFBoYXNlKQorICAgICBRVF9RX0VOVU0oTW91c2VFdmVudFNvdXJjZSkKKy0gICAgUVRfUV9G TEFHKE1vdXNlRXZlbnRGbGFnKQorKyAgICBRVF9RX0ZMQUcoTW91c2VFdmVudEZsYWdzKQorICAg ICBRVF9RX0VOVU0oQ2hlY2tzdW1UeXBlKQorICAgICBRVF9RX0VOVU0oSGlnaERwaVNjYWxlRmFj dG9yUm91bmRpbmdQb2xpY3kpCisgICAgIFFUX1FfRU5VTShUYWJGb2N1c0JlaGF2aW9yKQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvZ2xvYmFsL3FyYW5kb20uY3BwCitpbmRleCAxMDY3MmMxZjkyLi4yNWY4N2M3 ZTZhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcAor KysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcAorQEAgLTM4Myw3ICsz ODMsNiBAQCBzdHJ1Y3QgUVJhbmRvbUdlbmVyYXRvcjo6U3lzdGVtQW5kR2xvYmFsR2VuZXJhdG9y cworIAorICAgICAgICAgY29uc3RleHByIFN5c3RlbUFuZEdsb2JhbEdlbmVyYXRvcnMgZyA9IHt9 OworICAgICAgICAgUV9VTlVTRUQoZyk7CistICAgICAgICBRX1NUQVRJQ19BU1NFUlQoc3RkOjpp c19saXRlcmFsX3R5cGU8U3lzdGVtQW5kR2xvYmFsR2VuZXJhdG9ycz46OnZhbHVlKTsKKyAjZW5k aWYKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xYnVmZmVy LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xYnVmZmVyLmNwcAoraW5kZXggNTk1ZmNkMjcy NC4uMDMyYzBkZGQ0YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xYnVmZmVy LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FidWZmZXIuY3BwCitAQCAtNDEsNiAr NDEsOCBAQAorICNpbmNsdWRlIDxRdENvcmUvcW1ldGFvYmplY3QuaD4KKyAjaW5jbHVkZSAicHJp dmF0ZS9xaW9kZXZpY2VfcC5oIgorIAorKyNpbmNsdWRlIDxsaW1pdHM+CisrCisgUVRfQkVHSU5f TkFNRVNQQUNFCisgCisgLyoqIFFCdWZmZXJQcml2YXRlICoqLworQEAgLTM2Niw3ICszNjgsOSBA QCBxaW50NjQgUUJ1ZmZlcjo6c2l6ZSgpIGNvbnN0CisgYm9vbCBRQnVmZmVyOjpzZWVrKHFpbnQ2 NCBwb3MpCisgeworICAgICBRX0QoUUJ1ZmZlcik7CistICAgIGlmIChwb3MgPiBkLT5idWYtPnNp emUoKSAmJiBpc1dyaXRhYmxlKCkpIHsKKysgICAgY29uc3QgYXV0byBvbGRCdWZTaXplID0gZC0+ YnVmLT5zaXplKCk7CisrICAgIGNvbnN0ZXhwciBxaW50NjQgTWF4U2Vla1BvcyA9IChzdGQ6Om51 bWVyaWNfbGltaXRzPGRlY2x0eXBlKG9sZEJ1ZlNpemUpPjo6bWF4KSgpOworKyAgICBpZiAocG9z IDw9IE1heFNlZWtQb3MgJiYgcG9zID4gb2xkQnVmU2l6ZSAmJiBpc1dyaXRhYmxlKCkpIHsKKyAg ICAgICAgIGlmIChzZWVrKGQtPmJ1Zi0+c2l6ZSgpKSkgeworICAgICAgICAgICAgIGNvbnN0IHFp bnQ2NCBnYXBTaXplID0gcG9zIC0gZC0+YnVmLT5zaXplKCk7CisgICAgICAgICAgICAgaWYgKHdy aXRlKFFCeXRlQXJyYXkoZ2FwU2l6ZSwgMCkpICE9IGdhcFNpemUpIHsKK0BAIC0zNzcsNyArMzgx LDcgQEAgYm9vbCBRQnVmZmVyOjpzZWVrKHFpbnQ2NCBwb3MpCisgICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworICAgICAgICAgfQorICAgICB9IGVsc2UgaWYgKHBvcyA+IGQtPmJ1Zi0+c2l6ZSgp IHx8IHBvcyA8IDApIHsKKy0gICAgICAgIHFXYXJuaW5nKCJRQnVmZmVyOjpzZWVrOiBJbnZhbGlk IHBvczogJWQiLCBpbnQocG9zKSk7CisrICAgICAgICBxV2FybmluZygiUUJ1ZmZlcjo6c2Vlazog SW52YWxpZCBwb3M6ICVsbGQiLCBwb3MpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9 CisgICAgIHJldHVybiBRSU9EZXZpY2U6OnNlZWsocG9zKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW1lbmdpbmVfd2luLmNwcCBiL3F0YmFzZS9zcmMvY29y ZWxpYi9pby9xZmlsZXN5c3RlbWVuZ2luZV93aW4uY3BwCitpbmRleCA4MWQzYTcxOTg2Li5jODZl ZDFmOWIwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtZW5n aW5lX3dpbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVuZ2lu ZV93aW4uY3BwCitAQCAtNjY0LDE0ICs2NjQsMTQgQEAgUUZpbGVTeXN0ZW1FbnRyeSBRRmlsZVN5 c3RlbUVuZ2luZTo6YWJzb2x1dGVOYW1lKGNvbnN0IFFGaWxlU3lzdGVtRW50cnkgJmVudHJ5KQor ICAgICByZXR1cm4gUUZpbGVTeXN0ZW1FbnRyeShyZXQsIFFGaWxlU3lzdGVtRW50cnk6OkZyb21J bnRlcm5hbFBhdGgoKSk7CisgfQorIAorLSNpZiBkZWZpbmVkKFFfQ0NfTUlOR1cpICYmIFdJTlZF UiA8IDB4MDYwMiAvLyAgV2luZG93cyA4IG9ud2FyZHMKKysjaWYgZGVmaW5lZChRX0NDX01JTkdX KSAmJiBXSU5WRVIgPCAweDA2MDIgJiYgX1dJTjMyX1dJTk5UIDwgX1dJTjMyX1dJTk5UX1dJTjgg Ly8gIFdpbmRvd3MgOCBvbndhcmRzCisgCisgdHlwZWRlZiBzdHJ1Y3QgX0ZJTEVfSURfSU5GTyB7 CisgICAgIFVMT05HTE9ORyBWb2x1bWVTZXJpYWxOdW1iZXI7CisgICAgIEZJTEVfSURfMTI4IEZp bGVJZDsKKyB9IEZJTEVfSURfSU5GTywgKlBGSUxFX0lEX0lORk87CisgCistI2VuZGlmIC8vIGlm IGRlZmluZWQgKFFfQ0NfTUlOR1cpICYmIFdJTlZFUiA8IDB4MDYwMgorKyNlbmRpZiAvLyBpZiBk ZWZpbmVkKFFfQ0NfTUlOR1cpICYmIFdJTlZFUiA8IDB4MDYwMiAmJiBfV0lOMzJfV0lOTlQgPCBf V0lOMzJfV0lOTlRfV0lOOAorIAorIC8vIEZpbGUgSUQgZm9yIFdpbmRvd3MgdXAgdG8gdmVyc2lv biA3IGFuZCBGQVQzMiBkcml2ZXMKKyBzdGF0aWMgaW5saW5lIFFCeXRlQXJyYXkgZmlsZUlkKEhB TkRMRSBoYW5kbGUpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lz dGVtd2F0Y2hlcl9pbm90aWZ5LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3Rl bXdhdGNoZXJfaW5vdGlmeS5jcHAKK2luZGV4IDk0ZDlkMDZiY2IuLjI3ZTBiMTNiMGIgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnku Y3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3Rp ZnkuY3BwCitAQCAtMzY2LDcgKzM2Niw5IEBAIHZvaWQgUUlub3RpZnlGaWxlU3lzdGVtV2F0Y2hl ckVuZ2luZTo6cmVhZEZyb21Jbm90aWZ5KCkKKyAgICAgLy8gcURlYnVnKCJRSW5vdGlmeUZpbGVT eXN0ZW1XYXRjaGVyRW5naW5lOjpyZWFkRnJvbUlub3RpZnkiKTsKKyAKKyAgICAgaW50IGJ1ZmZT aXplID0gMDsKKy0gICAgaW9jdGwoaW5vdGlmeUZkLCBGSU9OUkVBRCwgKGNoYXIgKikgJmJ1ZmZT aXplKTsKKysgICAgaWYgKGlvY3RsKGlub3RpZnlGZCwgRklPTlJFQUQsIChjaGFyICopICZidWZm U2l6ZSkgPT0gLTEgfHwgYnVmZlNpemUgPT0gMCkKKysgICAgICAgIHJldHVybjsKKysKKyAgICAg UVZhckxlbmd0aEFycmF5PGNoYXIsIDQwOTY+IGJ1ZmZlcihidWZmU2l6ZSk7CisgICAgIGJ1ZmZT aXplID0gcmVhZChpbm90aWZ5RmQsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZTaXplKTsKKyAgICAgY2hh ciAqYXQgPSBidWZmZXIuZGF0YSgpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9p by9xbG9ja2ZpbGVfd2luLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xbG9ja2ZpbGVfd2lu LmNwcAoraW5kZXggMjc3ZjhkNDIzMC4uMzhlY2VmNTU1MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvY29yZWxpYi9pby9xbG9ja2ZpbGVfd2luLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGli L2lvL3Fsb2NrZmlsZV93aW4uY3BwCitAQCAtNDgsNiArNDgsOCBAQAorICNpbmNsdWRlICJRdENv cmUvcWRlYnVnLmgiCisgI2luY2x1ZGUgIlF0Q29yZS9xdGhyZWFkLmgiCisgCisrI2luY2x1ZGUg InByaXZhdGUvcXN5c3RlbWxpYnJhcnlfcC5oIgorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIAor IHN0YXRpYyBpbmxpbmUgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IHdjaGFyX3QgKmZpbGVOYW1lKQor QEAgLTE1MCw3ICsxNTIsNyBAQCBRU3RyaW5nIFFMb2NrRmlsZVByaXZhdGU6OnByb2Nlc3NOYW1l QnlQaWQocWludDY0IHBpZCkKKyAjaWYgIWRlZmluZWQoUV9PU19XSU5SVCkKKyAgICAgdHlwZWRl ZiBEV09SRCAoV0lOQVBJICpHZXRNb2R1bGVGaWxlTmFtZUV4RnVuYykoSEFORExFLCBITU9EVUxF LCBMUFRTVFIsIERXT1JEKTsKKyAKKy0gICAgSE1PRFVMRSBoUHNhcGkgPSBMb2FkTGlicmFyeUEo InBzYXBpIik7CisrICAgIEhNT0RVTEUgaFBzYXBpID0gUVN5c3RlbUxpYnJhcnk6OmxvYWQoTCJw c2FwaSIpOworICAgICBpZiAoIWhQc2FwaSkKKyAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7Cisg ICAgIEdldE1vZHVsZUZpbGVOYW1lRXhGdW5jIHFHZXRNb2R1bGVGaWxlTmFtZUV4ID0gcmVpbnRl cnByZXRfY2FzdDxHZXRNb2R1bGVGaWxlTmFtZUV4RnVuYz4oCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb3JlbGliL2lvL3Fwcm9jZXNzX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lv L3Fwcm9jZXNzX3VuaXguY3BwCitpbmRleCA1MDM5MGU1N2Y1Li4xNWM4ZjMwNzQ1IDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fwcm9jZXNzX3VuaXguY3BwCisrKysgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvaW8vcXByb2Nlc3NfdW5peC5jcHAKK0BAIC0xLDcgKzEsNyBAQAorIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKioKKyAqKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENv bXBhbnkgTHRkLgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4KKysq KiBDb3B5cmlnaHQgKEMpIDIwMjIgSW50ZWwgQ29ycG9yYXRpb24uCisgKiogQ29udGFjdDogaHR0 cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg dGhlIFF0Q29yZSBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitAQCAtNDIyLDE0ICs0MjIsMTUg QEAgdm9pZCBRUHJvY2Vzc1ByaXZhdGU6OnN0YXJ0UHJvY2VzcygpCisgICAgIC8vIEFkZCB0aGUg cHJvZ3JhbSBuYW1lIHRvIHRoZSBhcmd1bWVudCBsaXN0LgorICAgICBhcmd2WzBdID0gbnVsbHB0 cjsKKyAgICAgaWYgKCFwcm9ncmFtLmNvbnRhaW5zKFFMYXRpbjFDaGFyKCcvJykpKSB7CisrICAg ICAgICAvLyBmaW5kRXhlY3V0YWJsZSgpIHJldHVybnMgaXRzIGFyZ3VtZW50IGlmIGl0J3MgYW4g YWJzb2x1dGUgcGF0aCwKKysgICAgICAgIC8vIG90aGVyd2lzZSBpdCBzZWFyY2hlcyAkUEFUSDsg cmV0dXJucyBlbXB0eSBpZiBub3QgZm91bmQgKHdlIGhhbmRsZQorKyAgICAgICAgLy8gdGhhdCBj YXNlIG11Y2ggbGF0ZXIpCisgICAgICAgICBjb25zdCBRU3RyaW5nICZleGVGaWxlUGF0aCA9IFFT dGFuZGFyZFBhdGhzOjpmaW5kRXhlY3V0YWJsZShwcm9ncmFtKTsKKy0gICAgICAgIGlmICghZXhl RmlsZVBhdGguaXNFbXB0eSgpKSB7CistICAgICAgICAgICAgY29uc3QgUUJ5dGVBcnJheSAmdG1w ID0gUUZpbGU6OmVuY29kZU5hbWUoZXhlRmlsZVBhdGgpOworLSAgICAgICAgICAgIGFyZ3ZbMF0g PSA6OnN0cmR1cCh0bXAuY29uc3REYXRhKCkpOworLSAgICAgICAgfQorLSAgICB9CistICAgIGlm ICghYXJndlswXSkKKysgICAgICAgIGNvbnN0IFFCeXRlQXJyYXkgJnRtcCA9IFFGaWxlOjplbmNv ZGVOYW1lKGV4ZUZpbGVQYXRoKTsKKysgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cCh0bXAuY29u c3REYXRhKCkpOworKyAgICB9IGVsc2UgeworICAgICAgICAgYXJndlswXSA9IDo6c3RyZHVwKGVu Y29kZWRQcm9ncmFtTmFtZS5jb25zdERhdGEoKSk7CisrICAgIH0KKyAKKyAgICAgLy8gQWRkIGV2 ZXJ5IGFyZ3VtZW50IHRvIHRoZSBsaXN0CisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndW1l bnRzLmNvdW50KCk7ICsraSkKK0BAIC05ODMsMTUgKzk4NCwxNiBAQCBib29sIFFQcm9jZXNzUHJp dmF0ZTo6c3RhcnREZXRhY2hlZChxaW50NjQgKnBpZCkKKyAgICAgICAgICAgICAgICAgZW52cCA9 IF9xX2R1cEVudmlyb25tZW50KGVudmlyb25tZW50LmQuY29uc3REYXRhKCktPnZhcnMsICZlbnZj KTsKKyAgICAgICAgICAgICB9CisgCistICAgICAgICAgICAgUUJ5dGVBcnJheSB0bXA7CisgICAg ICAgICAgICAgaWYgKCFwcm9ncmFtLmNvbnRhaW5zKFFMYXRpbjFDaGFyKCcvJykpKSB7CisrICAg ICAgICAgICAgICAgIC8vIGZpbmRFeGVjdXRhYmxlKCkgcmV0dXJucyBpdHMgYXJndW1lbnQgaWYg aXQncyBhbiBhYnNvbHV0ZSBwYXRoLAorKyAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgaXQg c2VhcmNoZXMgJFBBVEg7IHJldHVybnMgZW1wdHkgaWYgbm90IGZvdW5kICh3ZSBoYW5kbGUKKysg ICAgICAgICAgICAgICAgLy8gdGhhdCBjYXNlIG11Y2ggbGF0ZXIpCisgICAgICAgICAgICAgICAg IGNvbnN0IFFTdHJpbmcgJmV4ZUZpbGVQYXRoID0gUVN0YW5kYXJkUGF0aHM6OmZpbmRFeGVjdXRh YmxlKHByb2dyYW0pOworLSAgICAgICAgICAgICAgICBpZiAoIWV4ZUZpbGVQYXRoLmlzRW1wdHko KSkKKy0gICAgICAgICAgICAgICAgICAgIHRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKGV4ZUZpbGVQ YXRoKTsKKysgICAgICAgICAgICAgICAgY29uc3QgUUJ5dGVBcnJheSAmdG1wID0gUUZpbGU6OmVu Y29kZU5hbWUoZXhlRmlsZVBhdGgpOworKyAgICAgICAgICAgICAgICBhcmd2WzBdID0gOjpzdHJk dXAodG1wLmNvbnN0RGF0YSgpKTsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAg ICAgICBhcmd2WzBdID0gOjpzdHJkdXAoUUZpbGU6OmVuY29kZU5hbWUocHJvZ3JhbSkpOworICAg ICAgICAgICAgIH0KKy0gICAgICAgICAgICBpZiAodG1wLmlzRW1wdHkoKSkKKy0gICAgICAgICAg ICAgICAgdG1wID0gUUZpbGU6OmVuY29kZU5hbWUocHJvZ3JhbSk7CistICAgICAgICAgICAgYXJn dlswXSA9IHRtcC5kYXRhKCk7CisgCisgICAgICAgICAgICAgaWYgKGVudnApCisgICAgICAgICAg ICAgICAgIHF0X3NhZmVfZXhlY3ZlKGFyZ3ZbMF0sIGFyZ3YsIGVudnApOworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3FhYnN0cmFjdGl0ZW1tb2RlbC5jcHAgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJhY3RpdGVtbW9kZWwuY3BwCitpbmRl eCAzYTc5YzUwMmFmLi45OTdhNjM0ZTc2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGli L2l0ZW1tb2RlbHMvcWFic3RyYWN0aXRlbW1vZGVsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3Jl bGliL2l0ZW1tb2RlbHMvcWFic3RyYWN0aXRlbW1vZGVsLmNwcAorQEAgLTMxOTYsOSArMzE5Niw4 IEBAIGJvb2wgUUFic3RyYWN0SXRlbU1vZGVsOjpiZWdpbk1vdmVDb2x1bW5zKGNvbnN0IFFNb2Rl bEluZGV4ICZzb3VyY2VQYXJlbnQsIGludCBzCisgICAgIGRlc3RpbmF0aW9uQ2hhbmdlLm5lZWRz QWRqdXN0ID0gZGVzdGluYXRpb25QYXJlbnQuaXNWYWxpZCgpICYmIGRlc3RpbmF0aW9uUGFyZW50 LnJvdygpID49IHNvdXJjZUxhc3QgJiYgZGVzdGluYXRpb25QYXJlbnQucGFyZW50KCkgPT0gc291 cmNlUGFyZW50OworICAgICBkLT5jaGFuZ2VzLnB1c2goZGVzdGluYXRpb25DaGFuZ2UpOworIAor LSAgICBkLT5pdGVtc0Fib3V0VG9CZU1vdmVkKHNvdXJjZVBhcmVudCwgc291cmNlRmlyc3QsIHNv dXJjZUxhc3QsIGRlc3RpbmF0aW9uUGFyZW50LCBkZXN0aW5hdGlvbkNoaWxkLCBRdDo6SG9yaXpv bnRhbCk7CistCisgICAgIGVtaXQgY29sdW1uc0Fib3V0VG9CZU1vdmVkKHNvdXJjZVBhcmVudCwg c291cmNlRmlyc3QsIHNvdXJjZUxhc3QsIGRlc3RpbmF0aW9uUGFyZW50LCBkZXN0aW5hdGlvbkNo aWxkLCBRUHJpdmF0ZVNpZ25hbCgpKTsKKysgICAgZC0+aXRlbXNBYm91dFRvQmVNb3ZlZChzb3Vy Y2VQYXJlbnQsIHNvdXJjZUZpcnN0LCBzb3VyY2VMYXN0LCBkZXN0aW5hdGlvblBhcmVudCwgZGVz dGluYXRpb25DaGlsZCwgUXQ6Okhvcml6b250YWwpOworICAgICByZXR1cm4gdHJ1ZTsKKyB9Cisg CitAQCAtMzIzMSw3ICszMjMwLDYgQEAgdm9pZCBRQWJzdHJhY3RJdGVtTW9kZWw6OmVuZE1vdmVD b2x1bW5zKCkKKyAgICAgICBhZGp1c3RlZFNvdXJjZSA9IGNyZWF0ZUluZGV4KGFkanVzdGVkU291 cmNlLnJvdygpLCBhZGp1c3RlZFNvdXJjZS5jb2x1bW4oKSArIG51bU1vdmVkLCBhZGp1c3RlZFNv dXJjZS5pbnRlcm5hbFBvaW50ZXIoKSk7CisgCisgICAgIGQtPml0ZW1zTW92ZWQoYWRqdXN0ZWRT b3VyY2UsIHJlbW92ZUNoYW5nZS5maXJzdCwgcmVtb3ZlQ2hhbmdlLmxhc3QsIGFkanVzdGVkRGVz dGluYXRpb24sIGluc2VydENoYW5nZS5maXJzdCwgUXQ6Okhvcml6b250YWwpOworLQorICAgICBl bWl0IGNvbHVtbnNNb3ZlZChhZGp1c3RlZFNvdXJjZSwgcmVtb3ZlQ2hhbmdlLmZpcnN0LCByZW1v dmVDaGFuZ2UubGFzdCwgYWRqdXN0ZWREZXN0aW5hdGlvbiwgaW5zZXJ0Q2hhbmdlLmZpcnN0LCBR UHJpdmF0ZVNpZ25hbCgpKTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGli L2l0ZW1tb2RlbHMvcXNvcnRmaWx0ZXJwcm94eW1vZGVsLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxp Yi9pdGVtbW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5jcHAKK2luZGV4IGRjNjM3OWQ5ZmIu LmM1ZTI4N2VlODQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9x c29ydGZpbHRlcnByb3h5bW9kZWwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1v ZGVscy9xc29ydGZpbHRlcnByb3h5bW9kZWwuY3BwCitAQCAtOTM5LDggKzkzOSw5IEBAIHZvaWQg UVNvcnRGaWx0ZXJQcm94eU1vZGVsUHJpdmF0ZTo6aW5zZXJ0X3NvdXJjZV9pdGVtcygKKyAgICAg ICAgICAgICAgICAgcS0+YmVnaW5JbnNlcnRDb2x1bW5zKHByb3h5X3BhcmVudCwgcHJveHlfc3Rh cnQsIHByb3h5X2VuZCk7CisgICAgICAgICB9CisgCistICAgICAgICBmb3IgKGludCBpID0gMDsg aSA8IHNvdXJjZV9pdGVtcy5zaXplKCk7ICsraSkKKy0gICAgICAgICAgICBwcm94eV90b19zb3Vy Y2UuaW5zZXJ0KHByb3h5X3N0YXJ0ICsgaSwgc291cmNlX2l0ZW1zLmF0KGkpKTsKKysgICAgICAg IC8vIFRPRE86IHVzZSB0aGUgcmFuZ2UgUUxpc3Q6Omluc2VydCgpIG92ZXJsb2FkIG9uY2UgaXQg aXMgaW1wbGVtZW50ZWQgKFFUQlVHLTU4NjMzKS4KKysgICAgICAgIHByb3h5X3RvX3NvdXJjZS5p bnNlcnQocHJveHlfc3RhcnQsIHNvdXJjZV9pdGVtcy5zaXplKCksIDApOworKyAgICAgICAgc3Rk Ojpjb3B5KHNvdXJjZV9pdGVtcy5jYmVnaW4oKSwgc291cmNlX2l0ZW1zLmNlbmQoKSwgcHJveHlf dG9fc291cmNlLmJlZ2luKCkgKyBwcm94eV9zdGFydCk7CisgCisgICAgICAgICBidWlsZF9zb3Vy Y2VfdG9fcHJveHlfbWFwcGluZyhwcm94eV90b19zb3VyY2UsIHNvdXJjZV90b19wcm94eSk7Cisg CitAQCAtMzEyMyw4ICszMTI0LDkgQEAgYm9vbCBRU29ydEZpbHRlclByb3h5TW9kZWw6OmZpbHRl ckFjY2VwdHNSb3coaW50IHNvdXJjZV9yb3csIGNvbnN0IFFNb2RlbEluZGV4ICYKKyAKKyAgICAg aWYgKGQtPmZpbHRlcl9kYXRhLmlzRW1wdHkoKSkKKyAgICAgICAgIHJldHVybiB0cnVlOworKwor KyAgICBpbnQgY29sdW1uX2NvdW50ID0gZC0+bW9kZWwtPmNvbHVtbkNvdW50KHNvdXJjZV9wYXJl bnQpOworICAgICBpZiAoZC0+ZmlsdGVyX2NvbHVtbiA9PSAtMSkgeworLSAgICAgICAgaW50IGNv bHVtbl9jb3VudCA9IGQtPm1vZGVsLT5jb2x1bW5Db3VudChzb3VyY2VfcGFyZW50KTsKKyAgICAg ICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IGNvbHVtbl9jb3VudDsgKytjb2x1bW4p IHsKKyAgICAgICAgICAgICBRTW9kZWxJbmRleCBzb3VyY2VfaW5kZXggPSBkLT5tb2RlbC0+aW5k ZXgoc291cmNlX3JvdywgY29sdW1uLCBzb3VyY2VfcGFyZW50KTsKKyAgICAgICAgICAgICBRU3Ry aW5nIGtleSA9IGQtPm1vZGVsLT5kYXRhKHNvdXJjZV9pbmRleCwgZC0+ZmlsdGVyX3JvbGUpLnRv U3RyaW5nKCk7CitAQCAtMzEzMyw5ICszMTM1LDEwIEBAIGJvb2wgUVNvcnRGaWx0ZXJQcm94eU1v ZGVsOjpmaWx0ZXJBY2NlcHRzUm93KGludCBzb3VyY2Vfcm93LCBjb25zdCBRTW9kZWxJbmRleCAm CisgICAgICAgICB9CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KKy0gICAgUU1vZGVs SW5kZXggc291cmNlX2luZGV4ID0gZC0+bW9kZWwtPmluZGV4KHNvdXJjZV9yb3csIGQtPmZpbHRl cl9jb2x1bW4sIHNvdXJjZV9wYXJlbnQpOworLSAgICBpZiAoIXNvdXJjZV9pbmRleC5pc1ZhbGlk KCkpIC8vIHRoZSBjb2x1bW4gbWF5IG5vdCBleGlzdAorKworKyAgICBpZiAoZC0+ZmlsdGVyX2Nv bHVtbiA+PSBjb2x1bW5fY291bnQpIC8vIHRoZSBjb2x1bW4gbWF5IG5vdCBleGlzdAorICAgICAg ICAgcmV0dXJuIHRydWU7CisrICAgIFFNb2RlbEluZGV4IHNvdXJjZV9pbmRleCA9IGQtPm1vZGVs LT5pbmRleChzb3VyY2Vfcm93LCBkLT5maWx0ZXJfY29sdW1uLCBzb3VyY2VfcGFyZW50KTsKKyAg ICAgUVN0cmluZyBrZXkgPSBkLT5tb2RlbC0+ZGF0YShzb3VyY2VfaW5kZXgsIGQtPmZpbHRlcl9y b2xlKS50b1N0cmluZygpOworICAgICByZXR1cm4gZC0+ZmlsdGVyX2RhdGEuaGFzTWF0Y2goa2V5 KTsKKyB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xY29yZWFwcGxp Y2F0aW9uLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5j cHAKK2luZGV4IGNhMjg2NGRmODMuLjEzMmIyZWFlNTIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIva2VybmVsL3Fjb3JlYXBwbGljYXRpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIva2VybmVsL3Fjb3JlYXBwbGljYXRpb24uY3BwCitAQCAtMTE1Nyw3ICsxMTU3LDcgQEAg c3RhdGljIGJvb2wgZG9Ob3RpZnkoUU9iamVjdCAqcmVjZWl2ZXIsIFFFdmVudCAqZXZlbnQpCisg Ym9vbCBRQ29yZUFwcGxpY2F0aW9uUHJpdmF0ZTo6c2VuZFRocm91Z2hBcHBsaWNhdGlvbkV2ZW50 RmlsdGVycyhRT2JqZWN0ICpyZWNlaXZlciwgUUV2ZW50ICpldmVudCkKKyB7CisgICAgIC8vIFdl IGNhbid0IGFjY2VzcyB0aGUgYXBwbGljYXRpb24gZXZlbnQgZmlsdGVycyBvdXRzaWRlIG9mIHRo ZSBtYWluIHRocmVhZCAocmFjZSBjb25kaXRpb25zKQorLSAgICBRX0FTU0VSVChyZWNlaXZlci0+ ZF9mdW5jKCktPnRocmVhZERhdGEubG9hZFJlbGF4ZWQoKS0+dGhyZWFkLmxvYWRBY3F1aXJlKCkg PT0gbWFpblRocmVhZCgpKTsKKysgICAgUV9BU1NFUlQocmVjZWl2ZXItPmRfZnVuYygpLT50aHJl YWREYXRhLmxvYWRBY3F1aXJlKCktPnRocmVhZC5sb2FkUmVsYXhlZCgpID09IG1haW5UaHJlYWQo KSk7CisgCisgICAgIGlmIChleHRyYURhdGEpIHsKKyAgICAgICAgIC8vIGFwcGxpY2F0aW9uIGV2 ZW50IGZpbHRlcnMgYXJlIG9ubHkgY2FsbGVkIGZvciBvYmplY3RzIGluIHRoZSBHVUkgdGhyZWFk CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0LmNwcCBiL3F0 YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdC5jcHAKK2luZGV4IDFlYjc5MTM4ZDkuLjM2 Y2Q3ODBlZTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3Qu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3QuY3BwCitAQCAtMTAx MCw3ICsxMDEwLDcgQEAgUU9iamVjdDo6flFPYmplY3QoKQorICAgICAgICAgZW1pdCBkZXN0cm95 ZWQodGhpcyk7CisgICAgIH0KKyAKKy0gICAgaWYgKGQtPmRlY2xhcmF0aXZlRGF0YSkgeworKyAg ICBpZiAoIWQtPmlzRGVsZXRpbmdDaGlsZHJlbiAmJiBkLT5kZWNsYXJhdGl2ZURhdGEpIHsKKyAg ICAgICAgIGlmIChzdGF0aWNfY2FzdDxRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGFJbXBsKj4oZC0+ ZGVjbGFyYXRpdmVEYXRhKS0+b3duZWRCeVFtbDEpIHsKKyAgICAgICAgICAgICBpZiAoUUFic3Ry YWN0RGVjbGFyYXRpdmVEYXRhOjpkZXN0cm95ZWRfcW1sMSkKKyAgICAgICAgICAgICAgICAgUUFi c3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpkZXN0cm95ZWRfcW1sMShkLT5kZWNsYXJhdGl2ZURhdGEs IHRoaXMpOworQEAgLTE1ODAsNyArMTU4MCw3IEBAIHZvaWQgUU9iamVjdDo6bW92ZVRvVGhyZWFk KFFUaHJlYWQgKnRhcmdldFRocmVhZCkKKyAKKyAgICAgUVRocmVhZERhdGEgKmN1cnJlbnREYXRh ID0gUVRocmVhZERhdGE6OmN1cnJlbnQoKTsKKyAgICAgUVRocmVhZERhdGEgKnRhcmdldERhdGEg PSB0YXJnZXRUaHJlYWQgPyBRVGhyZWFkRGF0YTo6Z2V0Mih0YXJnZXRUaHJlYWQpIDogbnVsbHB0 cjsKKy0gICAgUVRocmVhZERhdGEgKnRoaXNUaHJlYWREYXRhID0gZC0+dGhyZWFkRGF0YS5sb2Fk UmVsYXhlZCgpOworKyAgICBRVGhyZWFkRGF0YSAqdGhpc1RocmVhZERhdGEgPSBkLT50aHJlYWRE YXRhLmxvYWRBY3F1aXJlKCk7CisgICAgIGlmICghdGhpc1RocmVhZERhdGEtPnRocmVhZC5sb2Fk QWNxdWlyZSgpICYmIGN1cnJlbnREYXRhID09IHRhcmdldERhdGEpIHsKKyAgICAgICAgIC8vIG9u ZSBleGNlcHRpb24gdG8gdGhlIHJ1bGU6IHdlIGFsbG93IG1vdmluZyBvYmplY3RzIHdpdGggbm8g dGhyZWFkIGFmZmluaXR5IHRvIHRoZSBjdXJyZW50IHRocmVhZAorICAgICAgICAgY3VycmVudERh dGEgPSBkLT50aHJlYWREYXRhOworQEAgLTI2MjAsNyArMjYyMCw3IEBAIGludCBRT2JqZWN0Ojpy ZWNlaXZlcnMoY29uc3QgY2hhciAqc2lnbmFsKSBjb25zdAorICAgICAgICAgaWYgKCFkLT5pc1Np Z25hbENvbm5lY3RlZChzaWduYWxfaW5kZXgpKQorICAgICAgICAgICAgIHJldHVybiByZWNlaXZl cnM7CisgCistICAgICAgICBpZiAoZC0+ZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xh cmF0aXZlRGF0YTo6cmVjZWl2ZXJzKSB7CisrICAgICAgICBpZiAoIWQtPmlzRGVsZXRpbmdDaGls ZHJlbiAmJiBkLT5kZWNsYXJhdGl2ZURhdGEgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpy ZWNlaXZlcnMpIHsKKyAgICAgICAgICAgICByZWNlaXZlcnMgKz0gUUFic3RyYWN0RGVjbGFyYXRp dmVEYXRhOjpyZWNlaXZlcnMoZC0+ZGVjbGFyYXRpdmVEYXRhLCB0aGlzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxf aW5kZXgpOworICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJu ZWwvcW9iamVjdF9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oCitp bmRleCAwYjgyN2E1MmNhLi4xM2ZmYjg4OTk5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3Jl bGliL2tlcm5lbC9xb2JqZWN0X3AuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9x b2JqZWN0X3AuaAorQEAgLTQ0NCw3ICs0NDQsNyBAQCBpbmxpbmUgdm9pZCBRT2JqZWN0UHJpdmF0 ZTo6Y2hlY2tGb3JJbmNvbXBhdGlibGVMaWJyYXJ5VmVyc2lvbihpbnQgdmVyc2lvbikgY29ucwor IAorIGlubGluZSBib29sIFFPYmplY3RQcml2YXRlOjppc0RlY2xhcmF0aXZlU2lnbmFsQ29ubmVj dGVkKHVpbnQgc2lnbmFsX2luZGV4KSBjb25zdAorIHsKKy0gICAgcmV0dXJuIGRlY2xhcmF0aXZl RGF0YSAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmlzU2lnbmFsQ29ubmVjdGVkCisrICAg IHJldHVybiAhaXNEZWxldGluZ0NoaWxkcmVuICYmIGRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJh Y3REZWNsYXJhdGl2ZURhdGE6OmlzU2lnbmFsQ29ubmVjdGVkCisgICAgICAgICAgICAgJiYgUUFi c3RyYWN0RGVjbGFyYXRpdmVEYXRhOjppc1NpZ25hbENvbm5lY3RlZChkZWNsYXJhdGl2ZURhdGEs IHFfZnVuYygpLCBzaWduYWxfaW5kZXgpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L2NvcmVsaWIva2VybmVsL3F0cmFuc2xhdG9yLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJu ZWwvcXRyYW5zbGF0b3IuY3BwCitpbmRleCAyODEyZmZiN2VhLi5iYzAxNzdjNWVjIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xdHJhbnNsYXRvci5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRyYW5zbGF0b3IuY3BwCitAQCAtOTAyLDcgKzkwMiw3 IEBAIHN0YXRpYyBRU3RyaW5nIGdldE1lc3NhZ2UoY29uc3QgdWNoYXIgKm0sIGNvbnN0IHVjaGFy ICplbmQsIGNvbnN0IGNoYXIgKmNvbnRleHQsCisgICAgICAgICAgICAgZ290byBlbmQ7CisgICAg ICAgICBjYXNlIFRhZ19UcmFuc2xhdGlvbjogeworICAgICAgICAgICAgIGludCBsZW4gPSByZWFk MzIobSk7CistICAgICAgICAgICAgaWYgKGxlbiAlIDEpCisrICAgICAgICAgICAgaWYgKGxlbiAm IDEpCisgICAgICAgICAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CisgICAgICAgICAgICAgbSAr PSA0OworICAgICAgICAgICAgIGlmICghbnVtZXJ1cy0tKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlLmNwcCBiL3F0YmFzZS9zcmMvY29y ZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS5jcHAKK2luZGV4IDlkZTIyY2VmMzMuLmZmODY4 YTMyNjggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0 YWJhc2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJh c2UuY3BwCitAQCAtMzg5LDIwICszODksMjMgQEAgUU1pbWVUeXBlIFFNaW1lRGF0YWJhc2VQcml2 YXRlOjptaW1lVHlwZUZvckZpbGVOYW1lQW5kRGF0YShjb25zdCBRU3RyaW5nICZmaWxlTmEKKyAg ICAgICAgIC8vIERpc2FtYmlndWF0ZSBjb25mbGljdGluZyBleHRlbnNpb25zIChpZiBtYWdpYyBt YXRjaGluZyBmb3VuZCBzb21ldGhpbmcpCisgICAgICAgICBpZiAoY2FuZGlkYXRlQnlEYXRhLmlz VmFsaWQoKSAmJiBtYWdpY0FjY3VyYWN5ID4gMCkgeworICAgICAgICAgICAgIGNvbnN0IFFTdHJp bmcgc25pZmZlZE1pbWUgPSBjYW5kaWRhdGVCeURhdGEubmFtZSgpOworLSAgICAgICAgICAgIC8v IElmIHRoZSBzbmlmZmVkTWltZSBtYXRjaGVzIGEgZ2xvYiBtYXRjaCwgdXNlIGl0CisrICAgICAg ICAgICAgLy8gSWYgdGhlIHNuaWZmZWRNaW1lIG1hdGNoZXMgYSBoaWdoZXN0LXdlaWdodCBnbG9i IG1hdGNoLCB1c2UgaXQKKyAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlc0J5TmFtZS5tX21hdGNo aW5nTWltZVR5cGVzLmNvbnRhaW5zKHNuaWZmZWRNaW1lKSkgeworICAgICAgICAgICAgICAgICAq YWNjdXJhY3lQdHIgPSAxMDA7CisgICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVCeURh dGE7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGZvciAoY29uc3QgUVN0cmluZyAmbSA6 IHFBc0NvbnN0KGNhbmRpZGF0ZXNCeU5hbWUubV9tYXRjaGluZ01pbWVUeXBlcykpIHsKKysgICAg ICAgICAgICBmb3IgKGNvbnN0IFFTdHJpbmcgJm0gOiBxQXNDb25zdChjYW5kaWRhdGVzQnlOYW1l Lm1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMpKSB7CisgICAgICAgICAgICAgICAgIGlmIChpbmhlcml0 cyhtLCBzbmlmZmVkTWltZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgbWFn aWMgKyBwYXR0ZXJuIHBvaW50aW5nIHRvIHRoaXMsIHNvIGl0J3MgYSBwcmV0dHkgZ29vZCBtYXRj aAorICAgICAgICAgICAgICAgICAgICAgKmFjY3VyYWN5UHRyID0gMTAwOworICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIG1pbWVUeXBlRm9yTmFtZShtKTsKKyAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAqYWNjdXJhY3lQdHIgPSBtYWdpY0FjY3VyYWN5 OworLSAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVCeURhdGE7CisrICAgICAgICAgICAgaWYg KGNhbmRpZGF0ZXNCeU5hbWUubV9hbGxNYXRjaGluZ01pbWVUeXBlcy5pc0VtcHR5KCkpIHsKKysg ICAgICAgICAgICAgICAgLy8gTm8gZ2xvYiwgdXNlIG1hZ2ljCisrICAgICAgICAgICAgICAgICph Y2N1cmFjeVB0ciA9IG1hZ2ljQWNjdXJhY3k7CisrICAgICAgICAgICAgICAgIHJldHVybiBjYW5k aWRhdGVCeURhdGE7CisrICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICB9CisgCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWdsb2JwYXR0ZXJuLmNw cCBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVybi5jcHAKK2lu ZGV4IGE4MTExMmQyMjcuLmZhOGY0YzU0NWQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVs aWIvbWltZXR5cGVzL3FtaW1lZ2xvYnBhdHRlcm4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvbWltZXR5cGVzL3FtaW1lZ2xvYnBhdHRlcm4uY3BwCitAQCAtODMsNyArODMsMTAgQEAgdm9p ZCBRTWltZUdsb2JNYXRjaFJlc3VsdDo6YWRkTWF0Y2goY29uc3QgUVN0cmluZyAmbWltZVR5cGUs IGludCB3ZWlnaHQsIGNvbnN0IFEKKyAgICAgfQorICAgICBpZiAoIW1fbWF0Y2hpbmdNaW1lVHlw ZXMuY29udGFpbnMobWltZVR5cGUpKSB7CisgICAgICAgICBtX21hdGNoaW5nTWltZVR5cGVzLmFw cGVuZChtaW1lVHlwZSk7CistICAgICAgICBtX2FsbE1hdGNoaW5nTWltZVR5cGVzLmFwcGVuZCht aW1lVHlwZSk7CisrICAgICAgICBpZiAocmVwbGFjZSkKKysgICAgICAgICAgICBtX2FsbE1hdGNo aW5nTWltZVR5cGVzLnByZXBlbmQobWltZVR5cGUpOyAvLyBoaWdoZXN0LXdlaWdodCBmaXJzdAor KyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIG1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMuYXBwZW5k KG1pbWVUeXBlKTsKKyAgICAgICAgIG1fa25vd25TdWZmaXhMZW5ndGggPSBrbm93blN1ZmZpeExl bmd0aDsKKyAgICAgfQorIH0KK0BAIC05NCw3ICs5Nyw3IEBAIFFNaW1lR2xvYlBhdHRlcm46OlBh dHRlcm5UeXBlIFFNaW1lR2xvYlBhdHRlcm46OmRldGVjdFBhdHRlcm5UeXBlKGNvbnN0IFFTdHJp bmcKKyAgICAgaWYgKCFwYXR0ZXJuTGVuZ3RoKQorICAgICAgICAgcmV0dXJuIE90aGVyUGF0dGVy bjsKKyAKKy0gICAgY29uc3QgYm9vbCBzdGFyQ291bnQgPSBwYXR0ZXJuLmNvdW50KFFMYXRpbjFD aGFyKCcqJykpID09IDE7CisrICAgIGNvbnN0IGludCBzdGFyQ291bnQgPSBwYXR0ZXJuLmNvdW50 KFFMYXRpbjFDaGFyKCcqJykpOworICAgICBjb25zdCBib29sIGhhc1NxdWFyZUJyYWNrZXQgPSBw YXR0ZXJuLmluZGV4T2YoUUxhdGluMUNoYXIoJ1snKSkgIT0gLTE7CisgICAgIGNvbnN0IGJvb2wg aGFzUXVlc3Rpb25NYXJrID0gcGF0dGVybi5pbmRleE9mKFFMYXRpbjFDaGFyKCc/JykpICE9IC0x OworIAorQEAgLTEwNiwxMCArMTA5LDEwIEBAIFFNaW1lR2xvYlBhdHRlcm46OlBhdHRlcm5UeXBl IFFNaW1lR2xvYlBhdHRlcm46OmRldGVjdFBhdHRlcm5UeXBlKGNvbnN0IFFTdHJpbmcKKyAgICAg ICAgICAgICAvLyBQYXR0ZXJucyBsaWtlICJSRUFETUUqIiAod2VsbCB0aGlzIGlzIGN1cnJlbnRs eSB0aGUgb25seSBvbmUgbGlrZSB0aGF0Li4uKQorICAgICAgICAgICAgIGlmIChwYXR0ZXJuLmF0 KHBhdHRlcm5MZW5ndGggLSAxKSA9PSBRTGF0aW4xQ2hhcignKicpKQorICAgICAgICAgICAgICAg ICByZXR1cm4gUHJlZml4UGF0dGVybjsKKy0gICAgICAgIH0KKy0gICAgICAgIC8vIE5hbWVzIHdp dGhvdXQgYW55IHdpbGRjYXJkcyBsaWtlICJSRUFETUUiCistICAgICAgICBpZiAoc3RhckNvdW50 ID09IDApCisrICAgICAgICB9IGVsc2UgaWYgKHN0YXJDb3VudCA9PSAwKSB7CisrICAgICAgICAg ICAgLy8gTmFtZXMgd2l0aG91dCBhbnkgd2lsZGNhcmRzIGxpa2UgIlJFQURNRSIKKyAgICAgICAg ICAgICByZXR1cm4gTGl0ZXJhbFBhdHRlcm47CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAg aWYgKHBhdHRlcm4gPT0gUUxhdGluMVN0cmluZygiWzAtOV1bMC05XVswLTldLnZkciIpKQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVwcm92aWRlci5jcHAg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3BwCitpbmRleCAy NThkZGRmOGNiLi40NjQyZDBmMmQwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL21p bWV0eXBlcy9xbWltZXByb3ZpZGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0 eXBlcy9xbWltZXByb3ZpZGVyLmNwcAorQEAgLTI0NCwxNSArMjQ0LDE4IEBAIHZvaWQgUU1pbWVC aW5hcnlQcm92aWRlcjo6YWRkRmlsZU5hbWVNYXRjaGVzKGNvbnN0IFFTdHJpbmcgJmZpbGVOYW1l LCBRTWltZUdsb2JNCisgICAgIGNvbnN0IFFTdHJpbmcgbG93ZXJGaWxlTmFtZSA9IGZpbGVOYW1l LnRvTG93ZXIoKTsKKyAgICAgLy8gQ2hlY2sgbGl0ZXJhbHMgKGUuZy4gIk1ha2VmaWxlIikKKyAg ICAgbWF0Y2hHbG9iTGlzdChyZXN1bHQsIG1fY2FjaGVGaWxlLCBtX2NhY2hlRmlsZS0+Z2V0VWlu dDMyKFBvc0xpdGVyYWxMaXN0T2Zmc2V0KSwgZmlsZU5hbWUpOworLSAgICAvLyBDaGVjayBjb21w bGV4IGdsb2JzIChlLmcuICJjYWxsZ3JpbmQub3V0WzAtOV0qIikKKy0gICAgbWF0Y2hHbG9iTGlz dChyZXN1bHQsIG1fY2FjaGVGaWxlLCBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc0dsb2JMaXN0 T2Zmc2V0KSwgZmlsZU5hbWUpOworICAgICAvLyBDaGVjayB0aGUgdmVyeSBjb21tb24gKi50eHQg Y2FzZXMgd2l0aCB0aGUgc3VmZml4IHRyZWUKKy0gICAgY29uc3QgaW50IHJldmVyc2VTdWZmaXhU cmVlT2Zmc2V0ID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQb3NSZXZlcnNlU3VmZml4VHJlZU9m ZnNldCk7CistICAgIGNvbnN0IGludCBudW1Sb290cyA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIo cmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQpOworLSAgICBjb25zdCBpbnQgZmlyc3RSb290T2Zmc2V0 ID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihyZXZlcnNlU3VmZml4VHJlZU9mZnNldCArIDQpOwor LSAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0LCBtX2NhY2hlRmlsZSwgbnVtUm9vdHMsIGZpcnN0 Um9vdE9mZnNldCwgbG93ZXJGaWxlTmFtZSwgbG93ZXJGaWxlTmFtZS5sZW5ndGgoKSAtIDEsIGZh bHNlKTsKKysgICAgaWYgKHJlc3VsdC5tX21hdGNoaW5nTWltZVR5cGVzLmlzRW1wdHkoKSkgewor KyAgICAgICAgY29uc3QgaW50IHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0ID0gbV9jYWNoZUZpbGUt PmdldFVpbnQzMihQb3NSZXZlcnNlU3VmZml4VHJlZU9mZnNldCk7CisrICAgICAgICBjb25zdCBp bnQgbnVtUm9vdHMgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKHJldmVyc2VTdWZmaXhUcmVlT2Zm c2V0KTsKKysgICAgICAgIGNvbnN0IGludCBmaXJzdFJvb3RPZmZzZXQgPSBtX2NhY2hlRmlsZS0+ Z2V0VWludDMyKHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0ICsgNCk7CisrICAgICAgICBtYXRjaFN1 ZmZpeFRyZWUocmVzdWx0LCBtX2NhY2hlRmlsZSwgbnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwg bG93ZXJGaWxlTmFtZSwgbG93ZXJGaWxlTmFtZS5sZW5ndGgoKSAtIDEsIGZhbHNlKTsKKysgICAg ICAgIGlmIChyZXN1bHQubV9tYXRjaGluZ01pbWVUeXBlcy5pc0VtcHR5KCkpCisrICAgICAgICAg ICAgbWF0Y2hTdWZmaXhUcmVlKHJlc3VsdCwgbV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJv b3RPZmZzZXQsIGZpbGVOYW1lLCBmaWxlTmFtZS5sZW5ndGgoKSAtIDEsIHRydWUpOworKyAgICB9 CisrICAgIC8vIENoZWNrIGNvbXBsZXggZ2xvYnMgKGUuZy4gImNhbGxncmluZC5vdXRbMC05XSoi IG9yICJSRUFETUUqIikKKyAgICAgaWYgKHJlc3VsdC5tX21hdGNoaW5nTWltZVR5cGVzLmlzRW1w dHkoKSkKKy0gICAgICAgIG1hdGNoU3VmZml4VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1S b290cywgZmlyc3RSb290T2Zmc2V0LCBmaWxlTmFtZSwgZmlsZU5hbWUubGVuZ3RoKCkgLSAxLCB0 cnVlKTsKKysgICAgICAgIG1hdGNoR2xvYkxpc3QocmVzdWx0LCBtX2NhY2hlRmlsZSwgbV9jYWNo ZUZpbGUtPmdldFVpbnQzMihQb3NHbG9iTGlzdE9mZnNldCksIGZpbGVOYW1lKTsKKyB9CisgCisg dm9pZCBRTWltZUJpbmFyeVByb3ZpZGVyOjptYXRjaEdsb2JMaXN0KFFNaW1lR2xvYk1hdGNoUmVz dWx0ICZyZXN1bHQsIENhY2hlRmlsZSAqY2FjaGVGaWxlLCBpbnQgb2ZmLCBjb25zdCBRU3RyaW5n ICZmaWxlTmFtZSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlv bi9xanNvbnBhcnNlci5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xanNv bnBhcnNlci5jcHAKK2luZGV4IDE3ZTZmMTExYWIuLjJlNDBiNmM4ZmIgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcAorQEAgLTM3OSwx MCArMzc5LDMwIEBAIGVycm9yOgorICAgICByZXR1cm4gUUNib3JWYWx1ZSgpOworIH0KKyAKKysv LyBXZSBuZWVkIHRvIHJldGFpbiB0aGUgX2xhc3RfIHZhbHVlIGZvciBhbnkgZHVwbGljYXRlIGtl eXMgYW5kIHdlIG5lZWQgdG8gZGVyZWYgY29udGFpbmVycy4KKysvLyBUaGVyZWZvcmUgdGhlIG1h bnVhbCBpbXBsZW1lbnRhdGlvbiBvZiBzdGQ6OnVuaXF1ZSgpLgorK3RlbXBsYXRlPHR5cGVuYW1l IEl0ZXJhdG9yLCB0eXBlbmFtZSBDb21wYXJlLCB0eXBlbmFtZSBBc3NpZ24+Cisrc3RhdGljIEl0 ZXJhdG9yIGN1c3RvbUFzc2lnbmluZ1VuaXF1ZUxhc3QoSXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9y IGxhc3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGFy ZSBjb21wYXJlLCBBc3NpZ24gYXNzaWduKQorK3sKKysgICAgZmlyc3QgPSBzdGQ6OmFkamFjZW50 X2ZpbmQoZmlyc3QsIGxhc3QsIGNvbXBhcmUpOworKyAgICBpZiAoZmlyc3QgPT0gbGFzdCkKKysg ICAgICAgIHJldHVybiBsYXN0OworKworKyAgICBJdGVyYXRvciByZXN1bHQgPSBmaXJzdDsKKysg ICAgd2hpbGUgKCsrZmlyc3QgIT0gbGFzdCkgeworKyAgICAgICAgaWYgKCFjb21wYXJlKCpyZXN1 bHQsICpmaXJzdCkpCisrICAgICAgICAgICAgKytyZXN1bHQ7CisrICAgICAgICBpZiAocmVzdWx0 ICE9IGZpcnN0KQorKyAgICAgICAgICAgIGFzc2lnbigqcmVzdWx0LCAqZmlyc3QpOworKyAgICB9 CisrCisrICAgIHJldHVybiArK3Jlc3VsdDsKKyt9CisrCisgc3RhdGljIHZvaWQgc29ydENvbnRh aW5lcihRQ2JvckNvbnRhaW5lclByaXZhdGUgKmNvbnRhaW5lcikKKyB7CisgICAgIHVzaW5nIEZv cndhcmQgPSBRSnNvblByaXZhdGU6OktleUl0ZXJhdG9yOworLSAgICB1c2luZyBSZXZlcnNlID0g c3RkOjpyZXZlcnNlX2l0ZXJhdG9yPEZvcndhcmQ+OworICAgICB1c2luZyBWYWx1ZSA9IEZvcndh cmQ6OnZhbHVlX3R5cGU7CisgCisgICAgIGF1dG8gY29tcGFyZSA9IFtjb250YWluZXJdKGNvbnN0 IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikKK0BAIC00MjAsMTcgKzQ0MCwzMSBAQCBzdGF0aWMg dm9pZCBzb3J0Q29udGFpbmVyKFFDYm9yQ29udGFpbmVyUHJpdmF0ZSAqY29udGFpbmVyKQorICAg ICAgICAgfQorICAgICB9OworIAorLSAgICBzdGQ6OnNvcnQoRm9yd2FyZChjb250YWluZXItPmVs ZW1lbnRzLmJlZ2luKCkpLCBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpLAorLSAg ICAgICAgICAgICAgWyZjb21wYXJlXShjb25zdCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUgJmIpIHsg cmV0dXJuIGNvbXBhcmUoYSwgYikgPCAwOyB9KTsKKysgICAgLy8gVGhlIGVsZW1lbnRzJyBjb250 YWluZXJzIGFyZSBvd25lZCBieSB0aGUgb3V0ZXIgY29udGFpbmVyLCBub3QgYnkgdGhlIGVsZW1l bnRzIHRoZW1zZWx2ZXMuCisrICAgIGF1dG8gbW92ZSA9IFtdKEZvcndhcmQ6OnJlZmVyZW5jZSB0 YXJnZXQsIEZvcndhcmQ6OnJlZmVyZW5jZSBzb3VyY2UpCisrICAgIHsKKysgICAgICAgIFF0Q2Jv cjo6RWxlbWVudCAmdGFyZ2V0VmFsdWUgPSB0YXJnZXQudmFsdWUoKTsKKysKKysgICAgICAgIC8v IElmIHRoZSB0YXJnZXQgaGFzIGEgY29udGFpbmVyLCBkZXJlZiBpdCBiZWZvcmUgb3ZlcndyaXRp bmcsIHNvIHRoYXQgd2UgZG9uJ3QgbGVhay4KKysgICAgICAgIGlmICh0YXJnZXRWYWx1ZS5mbGFn cyAmIFF0Q2Jvcjo6RWxlbWVudDo6SXNDb250YWluZXIpCisrICAgICAgICAgICAgdGFyZ2V0VmFs dWUuY29udGFpbmVyLT5kZXJlZigpOworKworKyAgICAgICAgLy8gRG8gbm90IG1vdmUsIHNvIHRo YXQgd2UgY2FuIGNsZWFyIHRoZSB2YWx1ZSBhZnRlcndhcmRzLgorKyAgICAgICAgdGFyZ2V0ID0g c291cmNlOworKworKyAgICAgICAgLy8gQ2xlYXIgdGhlIHNvdXJjZSB2YWx1ZSwgc28gdGhhdCB3 ZSBkb24ndCBzdG9yZSB0aGUgc2FtZSBjb250YWluZXIgdHdpY2UuCisrICAgICAgICBzb3VyY2Uu dmFsdWUoKSA9IFF0Q2Jvcjo6RWxlbWVudCgpOworKyAgICB9OworKworKyAgICBzdGQ6OnN0YWJs ZV9zb3J0KAorKyAgICAgICAgICAgICAgICBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVn aW4oKSksIEZvcndhcmQoY29udGFpbmVyLT5lbGVtZW50cy5lbmQoKSksCisrICAgICAgICAgICAg ICAgIFsmY29tcGFyZV0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7IHJldHVybiBj b21wYXJlKGEsIGIpIDwgMDsgfSk7CisgCistICAgIC8vIFdlIG5lZWQgdG8gcmV0YWluIHRoZSBf bGFzdF8gdmFsdWUgZm9yIGFueSBkdXBsaWNhdGUga2V5cy4gVGhlcmVmb3JlIHRoZSByZXZlcnNl IGRhbmNlIGhlcmUuCistICAgIGF1dG8gaXQgPSBzdGQ6OnVuaXF1ZShSZXZlcnNlKGNvbnRhaW5l ci0+ZWxlbWVudHMuZW5kKCkpLCBSZXZlcnNlKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSks CistICAgICAgICAgICAgICAgICAgICAgICAgICBbJmNvbXBhcmVdKGNvbnN0IFZhbHVlICZhLCBj b25zdCBWYWx1ZSAmYikgeworLSAgICAgICAgcmV0dXJuIGNvbXBhcmUoYSwgYikgPT0gMDsKKy0g ICAgfSkuYmFzZSgpLmVsZW1lbnRzSXRlcmF0b3IoKTsKKysgICAgRm9yd2FyZCByZXN1bHQgPSBj dXN0b21Bc3NpZ25pbmdVbmlxdWVMYXN0KAorKyAgICAgICAgICAgICAgICBGb3J3YXJkKGNvbnRh aW5lci0+ZWxlbWVudHMuYmVnaW4oKSksICBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5k KCkpLAorKyAgICAgICAgICAgICAgICBbJmNvbXBhcmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBW YWx1ZSAmYikgeyByZXR1cm4gY29tcGFyZShhLCBiKSA9PSAwOyB9LCBtb3ZlKTsKKyAKKy0gICAg Ly8gVGhlIGVyYXNlIGZyb20gYmVnaW5uaW5nIGlzIGV4cGVuc2l2ZSBidXQgaG9wZWZ1bGx5IHJh cmUuCistICAgIGNvbnRhaW5lci0+ZWxlbWVudHMuZXJhc2UoY29udGFpbmVyLT5lbGVtZW50cy5i ZWdpbigpLCBpdCk7CisrICAgIGNvbnRhaW5lci0+ZWxlbWVudHMuZXJhc2UocmVzdWx0LmVsZW1l bnRzSXRlcmF0b3IoKSwgY29udGFpbmVyLT5lbGVtZW50cy5lbmQoKSk7CisgfQorIAorIAorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3Bw IGIvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcXhtbHN0cmVhbS5jcHAKK2luZGV4 IGIyZjg0NjU0NGQuLjdjZDQ1N2JhM2EgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIv c2VyaWFsaXphdGlvbi9xeG1sc3RyZWFtLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Nl cmlhbGl6YXRpb24vcXhtbHN0cmVhbS5jcHAKK0BAIC05ODAsNyArOTgwLDcgQEAgaW5saW5lIHVp bnQgUVhtbFN0cmVhbVJlYWRlclByaXZhdGU6OnBlZWtDaGFyKCkKKyBib29sIFFYbWxTdHJlYW1S ZWFkZXJQcml2YXRlOjpzY2FuVW50aWwoY29uc3QgY2hhciAqc3RyLCBzaG9ydCB0b2tlblRvSW5q ZWN0KQorIHsKKyAgICAgaW50IHBvcyA9IHRleHRCdWZmZXIuc2l6ZSgpOworLSAgICBpbnQgb2xk TGluZU51bWJlciA9IGxpbmVOdW1iZXI7CisrICAgIGNvbnN0IGF1dG8gb2xkTGluZU51bWJlciA9 IGxpbmVOdW1iZXI7CisgCisgICAgIHVpbnQgYzsKKyAgICAgd2hpbGUgKChjID0gZ2V0Q2hhcigp KSAhPSBTdHJlYW1FT0YpIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9x c3RyaW5nLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmcuY3BwCitpbmRleCAz ZTg4YWI0ODU5Li44ZGVlYWU0N2JiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rl eHQvcXN0cmluZy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmcuY3Bw CitAQCAtMTIzMTIsNyArMTIzMTIsNyBAQCBzdGF0aWMgcXNpemV0eXBlIHFMYXN0SW5kZXhPZihI YXlzdGFjayBoYXlzdGFjazAsIHFzaXpldHlwZSBmcm9tLAorICAgICBjb25zdCBhdXRvIG5lZWRs ZSA9IG5lZWRsZTAuZGF0YSgpOworICAgICBjb25zdCBhdXRvICplbmQgPSBoYXlzdGFjazsKKyAg ICAgaGF5c3RhY2sgKz0gZnJvbTsKKy0gICAgY29uc3Qgc3RkOjpzaXplX3Qgc2xfbWludXNfMSA9 IHNsIC0gMTsKKysgICAgY29uc3Qgc3RkOjpzaXplX3Qgc2xfbWludXNfMSA9IHNsID8gc2wgLSAx IDogMDsKKyAgICAgY29uc3QgYXV0byAqbiA9IG5lZWRsZSArIHNsX21pbnVzXzE7CisgICAgIGNv bnN0IGF1dG8gKmggPSBoYXlzdGFjayArIHNsX21pbnVzXzE7CisgICAgIHN0ZDo6c2l6ZV90IGhh c2hOZWVkbGUgPSAwLCBoYXNoSGF5c3RhY2sgPSAwOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Y29yZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRvcl9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4 dC9xc3RyaW5naXRlcmF0b3JfcC5oCitpbmRleCAyMTk1ODliNmU0Li4xZDBjNjZjYzc4IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZ2l0ZXJhdG9yX3AuaAorKysr IGIvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZ2l0ZXJhdG9yX3AuaAorQEAgLTYxLDYg KzYxLDggQEAgY2xhc3MgUVN0cmluZ0l0ZXJhdG9yCisgeworICAgICBRU3RyaW5nOjpjb25zdF9p dGVyYXRvciBpLCBwb3MsIGU7CisgICAgIFFfU1RBVElDX0FTU0VSVCgoc3RkOjppc19zYW1lPFFT dHJpbmc6OmNvbnN0X2l0ZXJhdG9yLCBjb25zdCBRQ2hhciAqPjo6dmFsdWUpKTsKKysgICAgc3Rh dGljIGJvb2wgbGVzcyhjb25zdCBRQ2hhciAqbGhzLCBjb25zdCBRQ2hhciAqcmhzKSBub2V4Y2Vw dAorKyAgICB7IHJldHVybiBzdGQ6Omxlc3M8UVN0cmluZzo6Y29uc3RfaXRlcmF0b3I+e30obGhz LCByaHMpOyB9CisgcHVibGljOgorICAgICBleHBsaWNpdCBRU3RyaW5nSXRlcmF0b3IoUVN0cmlu Z1ZpZXcgc3RyaW5nLCBxc2l6ZXR5cGUgaWR4ID0gMCkKKyAgICAgICAgIDogaShzdHJpbmcuYmVn aW4oKSksCitAQCAtOTUsNyArOTcsOCBAQCBwdWJsaWM6CisgCisgICAgIGlubGluZSB2b2lkIHNl dFBvc2l0aW9uKFFTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKQorICAgICB7CistICAg ICAgICBRX0FTU0VSVF9YKGkgPD0gcG9zaXRpb24gJiYgcG9zaXRpb24gPD0gZSwgUV9GVU5DX0lO Rk8sICJwb3NpdGlvbiBvdXQgb2YgYm91bmRzIik7CisrICAgICAgICBRX0FTU0VSVF9YKCFsZXNz KHBvc2l0aW9uLCBpKSAmJiAhbGVzcyhlLCBwb3NpdGlvbiksCisrICAgICAgICAgICAgICAgICAg IFFfRlVOQ19JTkZPLCAicG9zaXRpb24gb3V0IG9mIGJvdW5kcyIpOworICAgICAgICAgcG9zID0g cG9zaXRpb247CisgICAgIH0KKyAKK0BAIC0xMDMsNyArMTA2LDcgQEAgcHVibGljOgorIAorICAg ICBpbmxpbmUgYm9vbCBoYXNOZXh0KCkgY29uc3QKKyAgICAgeworLSAgICAgICAgcmV0dXJuIHBv cyA8IGU7CisrICAgICAgICByZXR1cm4gbGVzcyhwb3MsIGUpOworICAgICB9CisgCisgICAgIGlu bGluZSB2b2lkIGFkdmFuY2UoKQorQEAgLTEyMCwxNiArMTIzLDIwIEBAIHB1YmxpYzoKKyAgICAg eworICAgICAgICAgUV9BU1NFUlRfWChoYXNOZXh0KCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3Ig aGFzbid0IGEgbmV4dCBpdGVtIik7CisgCistICAgICAgICBpZiAoUV9VTkxJS0VMWSgocG9zKysp LT5pc0hpZ2hTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWSgocG9zKyspLT5p c0hpZ2hTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VSVChoYXNOZXh0KCkgJiYg cG9zLT5pc0xvd1N1cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICArK3BvczsKKysgICAgICAgIH0K KyAgICAgfQorIAorICAgICBpbmxpbmUgdWludCBwZWVrTmV4dFVuY2hlY2tlZCgpIGNvbnN0Cisg ICAgIHsKKyAgICAgICAgIFFfQVNTRVJUX1goaGFzTmV4dCgpLCBRX0ZVTkNfSU5GTywgIml0ZXJh dG9yIGhhc24ndCBhIG5leHQgaXRlbSIpOworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkocG9z LT5pc0hpZ2hTdXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWShwb3MtPmlzSGln aFN1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGxlc3MocG9zICsgMSwgZSkg JiYgcG9zWzFdLmlzTG93U3Vycm9nYXRlKCkpOworICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6 c3Vycm9nYXRlVG9VY3M0KHBvc1swXSwgcG9zWzFdKTsKKysgICAgICAgIH0KKyAKKyAgICAgICAg IHJldHVybiBwb3MtPnVuaWNvZGUoKTsKKyAgICAgfQorQEAgLTE1NSw4ICsxNjIsMTAgQEAgcHVi bGljOgorICAgICAgICAgUV9BU1NFUlRfWChoYXNOZXh0KCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0 b3IgaGFzbid0IGEgbmV4dCBpdGVtIik7CisgCisgICAgICAgICBjb25zdCBRQ2hhciBjdXIgPSAq cG9zKys7CistICAgICAgICBpZiAoUV9VTkxJS0VMWShjdXIuaXNIaWdoU3Vycm9nYXRlKCkpKQor KyAgICAgICAgaWYgKFFfVU5MSUtFTFkoY3VyLmlzSGlnaFN1cnJvZ2F0ZSgpKSkgeworKyAgICAg ICAgICAgIFFfQVNTRVJUKGhhc05leHQoKSAmJiBwb3MtPmlzTG93U3Vycm9nYXRlKCkpOworICAg ICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KGN1ciwgKnBvcysrKTsKKysg ICAgICAgIH0KKyAgICAgICAgIHJldHVybiBjdXIudW5pY29kZSgpOworICAgICB9CisgCitAQCAt MTY2LDcgKzE3NSw3IEBAIHB1YmxpYzoKKyAKKyAgICAgICAgIGNvbnN0IFFDaGFyIHVjID0gKnBv cysrOworICAgICAgICAgaWYgKFFfVU5MSUtFTFkodWMuaXNTdXJyb2dhdGUoKSkpIHsKKy0gICAg ICAgICAgICBpZiAoUV9MSUtFTFkodWMuaXNIaWdoU3Vycm9nYXRlKCkgJiYgcG9zIDwgZSAmJiBw b3MtPmlzTG93U3Vycm9nYXRlKCkpKQorKyAgICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5pc0hp Z2hTdXJyb2dhdGUoKSAmJiBoYXNOZXh0KCkgJiYgcG9zLT5pc0xvd1N1cnJvZ2F0ZSgpKSkKKyAg ICAgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQodWMsICpwb3MrKyk7 CisgICAgICAgICAgICAgcmV0dXJuIGludmFsaWRBczsKKyAgICAgICAgIH0KK0BAIC0xNzgsNyAr MTg3LDcgQEAgcHVibGljOgorIAorICAgICBpbmxpbmUgYm9vbCBoYXNQcmV2aW91cygpIGNvbnN0 CisgICAgIHsKKy0gICAgICAgIHJldHVybiBwb3MgPiBpOworKyAgICAgICAgcmV0dXJuIGxlc3Mo aSwgcG9zKTsKKyAgICAgfQorIAorICAgICBpbmxpbmUgdm9pZCByZWNlZGUoKQorQEAgLTE5Niwx NiArMjA1LDIwIEBAIHB1YmxpYzoKKyAgICAgeworICAgICAgICAgUV9BU1NFUlRfWChoYXNQcmV2 aW91cygpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIHByZXZpb3VzIGl0ZW0iKTsK KyAKKy0gICAgICAgIGlmIChRX1VOTElLRUxZKCgtLXBvcyktPmlzTG93U3Vycm9nYXRlKCkpKQor KyAgICAgICAgaWYgKFFfVU5MSUtFTFkoKC0tcG9zKS0+aXNMb3dTdXJyb2dhdGUoKSkpIHsKKysg ICAgICAgICAgICBRX0FTU0VSVChoYXNQcmV2aW91cygpICYmIHBvc1stMV0uaXNIaWdoU3Vycm9n YXRlKCkpOworICAgICAgICAgICAgIC0tcG9zOworKyAgICAgICAgfQorICAgICB9CisgCisgICAg IGlubGluZSB1aW50IHBlZWtQcmV2aW91c1VuY2hlY2tlZCgpIGNvbnN0CisgICAgIHsKKyAgICAg ICAgIFFfQVNTRVJUX1goaGFzUHJldmlvdXMoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNu J3QgYSBwcmV2aW91cyBpdGVtIik7CisgCistICAgICAgICBpZiAoUV9VTkxJS0VMWShwb3NbLTFd LmlzTG93U3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkocG9zWy0xXS5pc0xv d1N1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGxlc3MoaSArIDEsIHBvcykg JiYgcG9zWy0yXS5pc0hpZ2hTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgcmV0dXJuIFFDaGFy OjpzdXJyb2dhdGVUb1VjczQocG9zWy0yXSwgcG9zWy0xXSk7CisrICAgICAgICB9CisgICAgICAg ICByZXR1cm4gcG9zWy0xXS51bmljb2RlKCk7CisgICAgIH0KKyAKK0BAIC0yMzAsOCArMjQzLDEw IEBAIHB1YmxpYzoKKyAgICAgICAgIFFfQVNTRVJUX1goaGFzUHJldmlvdXMoKSwgUV9GVU5DX0lO Rk8sICJpdGVyYXRvciBoYXNuJ3QgYSBwcmV2aW91cyBpdGVtIik7CisgCisgICAgICAgICBjb25z dCBRQ2hhciBjdXIgPSAqLS1wb3M7CistICAgICAgICBpZiAoUV9VTkxJS0VMWShjdXIuaXNMb3dT dXJyb2dhdGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWShjdXIuaXNMb3dTdXJyb2dhdGUo KSkpIHsKKysgICAgICAgICAgICBRX0FTU0VSVChoYXNQcmV2aW91cygpICYmIHBvc1stMV0uaXNI aWdoU3Vycm9nYXRlKCkpOworICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9V Y3M0KCotLXBvcywgY3VyKTsKKysgICAgICAgIH0KKyAgICAgICAgIHJldHVybiBjdXIudW5pY29k ZSgpOworICAgICB9CisgCitAQCAtMjQxLDcgKzI1Niw3IEBAIHB1YmxpYzoKKyAKKyAgICAgICAg IGNvbnN0IFFDaGFyIHVjID0gKi0tcG9zOworICAgICAgICAgaWYgKFFfVU5MSUtFTFkodWMuaXNT dXJyb2dhdGUoKSkpIHsKKy0gICAgICAgICAgICBpZiAoUV9MSUtFTFkodWMuaXNMb3dTdXJyb2dh dGUoKSAmJiBwb3MgPiBpICYmIHBvc1stMV0uaXNIaWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAg ICAgIGlmIChRX0xJS0VMWSh1Yy5pc0xvd1N1cnJvZ2F0ZSgpICYmIGhhc1ByZXZpb3VzKCkgJiYg cG9zWy0xXS5pc0hpZ2hTdXJyb2dhdGUoKSkpCisgICAgICAgICAgICAgICAgIHJldHVybiBRQ2hh cjo6c3Vycm9nYXRlVG9VY3M0KCotLXBvcywgdWMpOworICAgICAgICAgICAgIHJldHVybiBpbnZh bGlkQXM7CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVh ZC9xZnV0ZXhfcC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xZnV0ZXhfcC5oCitpbmRl eCBmMjg3Yjc1MmQ3Li5lMjk0NTM3Nzg3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGli L3RocmVhZC9xZnV0ZXhfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRl eF9wLmgKK0BAIC01Miw2ICs1Miw3IEBACisgLy8KKyAKKyAjaW5jbHVkZSA8cWdsb2JhbC5oPgor KyNpbmNsdWRlIDxRdENvcmUvcXRzYW5faW1wbC5oPgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQor IAorQEAgLTEwNiwxNiArMTA3LDEzIEBAIG5hbWVzcGFjZSBRdExpbnV4RnV0ZXggeworICAgICBp bmxpbmUgaW50IF9xX2Z1dGV4KGludCAqYWRkciwgaW50IG9wLCBpbnQgdmFsLCBxdWludHB0ciB2 YWwyID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmFkZHIyID0gbnVsbHB0ciwg aW50IHZhbDMgPSAwKSBub2V4Y2VwdAorICAgICB7CistICAgICAgICAvLyBBIGZ1dGV4IGNhbGwg ZW5zdXJlcyB0b3RhbCBvcmRlcmluZyBvbiB0aGUgZnV0ZXggd29yZHMKKy0gICAgICAgIC8vIChp biBlaXRoZXIgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBjYWxsKS4gSW5zdHJ1Y3QgVFNBTiBh Y2NvcmRpbmdseSwKKy0gICAgICAgIC8vIGFzIFRTQU4gZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUg ZnV0ZXgoMikgc3lzY2FsbC4KKy0gICAgICAgIF9xX3RzYW5fcmVsZWFzZShhZGRyLCBhZGRyMik7 CisrICAgICAgICBRdFRzYW46OmZ1dGV4UmVsZWFzZShhZGRyLCBhZGRyMik7CisgCisgICAgICAg ICAvLyB3ZSB1c2UgX19OUl9mdXRleCBiZWNhdXNlIHNvbWUgbGliY3MgKGxpa2UgQW5kcm9pZCdz IGJpb25pYykgZG9uJ3QKKyAgICAgICAgIC8vIHByb3ZpZGUgU1lTX2Z1dGV4IGV0Yy4KKyAgICAg ICAgIGludCByZXN1bHQgPSBzeXNjYWxsKF9fTlJfZnV0ZXgsIGFkZHIsIG9wIHwgRlVURVhfUFJJ VkFURV9GTEFHLCB2YWwsIHZhbDIsIGFkZHIyLCB2YWwzKTsKKyAKKy0gICAgICAgIF9xX3RzYW5f YWNxdWlyZShhZGRyLCBhZGRyMik7CisrICAgICAgICBRdFRzYW46OmZ1dGV4QWNxdWlyZShhZGRy LCBhZGRyMik7CisgCisgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICB9CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguY3BwIGIvcXRiYXNlL3NyYy9jb3Jl bGliL3RocmVhZC9xbXV0ZXguY3BwCitpbmRleCAzMTBkMWNiMTRmLi43MDk3MTIyZDhlIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguY3BwCisrKysgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5jcHAKK0BAIC0xNTIsNiArMTUyLDcgQEAgcHVi bGljOgorIAorIC8qIQorICAgICBcZW51bSBRTXV0ZXg6OlJlY3Vyc2lvbk1vZGUKKysgICAgXG9i c29sZXRlIFVzZSBRUmVjdXJzaXZlTXV0ZXggdG8gY3JlYXRlIGEgcmVjdXJzaXZlIG11dGV4Lgor IAorICAgICBcdmFsdWUgUmVjdXJzaXZlICBJbiB0aGlzIG1vZGUsIGEgdGhyZWFkIGNhbiBsb2Nr IHRoZSBzYW1lIG11dGV4CisgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIHRpbWVzIGFu ZCB0aGUgbXV0ZXggd29uJ3QgYmUgdW5sb2NrZWQKK0BAIC0xNzMsNiArMTc0LDcgQEAgcHVibGlj OgorIAorIC8qIQorICAgICBDb25zdHJ1Y3RzIGEgbmV3IG11dGV4LiBUaGUgbXV0ZXggaXMgY3Jl YXRlZCBpbiBhbiB1bmxvY2tlZCBzdGF0ZS4KKysgICAgXG9ic29sZXRlIFVzZSBRUmVjdXJzaXZl TXV0ZXggdG8gY3JlYXRlIGEgcmVjdXJzaXZlIG11dGV4LgorIAorICAgICBJZiBcYSBtb2RlIGlz IFFNdXRleDo6UmVjdXJzaXZlLCBhIHRocmVhZCBjYW4gbG9jayB0aGUgc2FtZSBtdXRleAorICAg ICBtdWx0aXBsZSB0aW1lcyBhbmQgdGhlIG11dGV4IHdvbid0IGJlIHVubG9ja2VkIHVudGlsIGEK K0BAIC0xOTcsNyArMTk5LDcgQEAgUU11dGV4OjpRTXV0ZXgoUmVjdXJzaW9uTW9kZSBtb2RlKQor IFFNdXRleDo6flFNdXRleCgpCisgeworICAgICBRTXV0ZXhEYXRhICpkID0gZF9wdHIubG9hZFJl bGF4ZWQoKTsKKy0gICAgaWYgKGlzUmVjdXJzaXZlKCkpIHsKKysgICAgaWYgKFFCYXNpY011dGV4 Ojppc1JlY3Vyc2l2ZSgpKSB7CisgICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8UVJlY3Vyc2l2 ZU11dGV4UHJpdmF0ZSAqPihkKTsKKyAgICAgfSBlbHNlIGlmIChkKSB7CisgI2lmbmRlZiBRVF9M SU5VWF9GVVRFWAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4 LmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5oCitpbmRleCA3M2M5ZTAwNjYz Li4xYmFlNTczYTAzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0 ZXguaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguaAorQEAgLTQyLDYg KzQyLDcgQEAKKyAKKyAjaW5jbHVkZSA8UXRDb3JlL3FnbG9iYWwuaD4KKyAjaW5jbHVkZSA8UXRD b3JlL3FhdG9taWMuaD4KKysjaW5jbHVkZSA8UXRDb3JlL3F0c2FuX2ltcGwuaD4KKyAjaW5jbHVk ZSA8bmV3PgorIAorICNpZiBfX2hhc19pbmNsdWRlKDxjaHJvbm8+KQorQEAgLTc3LDE5ICs3OCwz NyBAQCBwdWJsaWM6CisgCisgICAgIC8vIEJhc2ljTG9ja2FibGUgY29uY2VwdAorICAgICBpbmxp bmUgdm9pZCBsb2NrKCkgUVRfTVVURVhfTE9DS19OT0VYQ0VQVCB7CisrICAgICAgICBRdFRzYW46 Om11dGV4UHJlTG9jayh0aGlzLCAwdSk7CisrCisgICAgICAgICBpZiAoIWZhc3RUcnlMb2NrKCkp CisgICAgICAgICAgICAgbG9ja0ludGVybmFsKCk7CisrCisrICAgICAgICBRdFRzYW46Om11dGV4 UG9zdExvY2sodGhpcywgMHUsIDApOworICAgICB9CisgCisgICAgIC8vIEJhc2ljTG9ja2FibGUg Y29uY2VwdAorICAgICBpbmxpbmUgdm9pZCB1bmxvY2soKSBub2V4Y2VwdCB7CisgICAgICAgICBR X0FTU0VSVChkX3B0ci5sb2FkUmVsYXhlZCgpKTsgLy9tdXRleCBtdXN0IGJlIGxvY2tlZAorKwor KyAgICAgICAgUXRUc2FuOjptdXRleFByZVVubG9jayh0aGlzLCAwdSk7CisrCisgICAgICAgICBp ZiAoIWZhc3RUcnlVbmxvY2soKSkKKyAgICAgICAgICAgICB1bmxvY2tJbnRlcm5hbCgpOworKwor KyAgICAgICAgUXRUc2FuOjptdXRleFBvc3RVbmxvY2sodGhpcywgMHUpOworICAgICB9CisgCisg ICAgIGJvb2wgdHJ5TG9jaygpIG5vZXhjZXB0IHsKKy0gICAgICAgIHJldHVybiBmYXN0VHJ5TG9j aygpOworKyAgICAgICAgdW5zaWduZWQgdHNhbkZsYWdzID0gUXRUc2FuOjpUcnlMb2NrOworKyAg ICAgICAgUXRUc2FuOjptdXRleFByZUxvY2sodGhpcywgdHNhbkZsYWdzKTsKKysKKysgICAgICAg IGNvbnN0IGJvb2wgc3VjY2VzcyA9IGZhc3RUcnlMb2NrKCk7CisrCisrICAgICAgICBpZiAoIXN1 Y2Nlc3MpCisrICAgICAgICAgICAgdHNhbkZsYWdzIHw9IFF0VHNhbjo6VHJ5TG9ja0ZhaWxlZDsK KysgICAgICAgIFF0VHNhbjo6bXV0ZXhQb3N0TG9jayh0aGlzLCB0c2FuRmxhZ3MsIDApOworKwor KyAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgIH0KKyAKKyAgICAgLy8gTG9ja2FibGUgY29u Y2VwdAorQEAgLTEzNCw4ICsxNTMsMTYgQEAgcHVibGljOgorICNlbHNlCisgICAgIFFNdXRleCgp IHsgZF9wdHIuc3RvcmVSZWxheGVkKG51bGxwdHIpOyB9CisgI2VuZGlmCisrI2lmIFFUX0RFUFJF Q0FURURfU0lOQ0UoNSwxNSkKKyAgICAgZW51bSBSZWN1cnNpb25Nb2RlIHsgTm9uUmVjdXJzaXZl LCBSZWN1cnNpdmUgfTsKKysgICAgUVRfREVQUkVDQVRFRF9WRVJTSU9OX1goNSwgMTUsICJVc2Ug UVJlY3Vyc2l2ZU11dGV4IGluc3RlYWQgb2YgYSByZWN1cnNpdmUgUU11dGV4IikKKyAgICAgZXhw bGljaXQgUU11dGV4KFJlY3Vyc2lvbk1vZGUgbW9kZSk7CisrCisrICAgIFFUX0RFUFJFQ0FURURf VkVSU0lPTl9YKDUsIDE1LCAiVXNlIFFSZWN1cnNpdmVNdXRleCBpbnN0ZWFkIG9mIGEgcmVjdXJz aXZlIFFNdXRleCIpCisrICAgIGJvb2wgaXNSZWN1cnNpdmUoKSBjb25zdCBub2V4Y2VwdAorKyAg ICB7IHJldHVybiBRQmFzaWNNdXRleDo6aXNSZWN1cnNpdmUoKTsgfQorKyNlbmRpZgorKworICAg ICB+UU11dGV4KCk7CisgCisgICAgIC8vIEJhc2ljTG9ja2FibGUgY29uY2VwdAorQEAgLTE2Niw5 ICsxOTMsNiBAQCBwdWJsaWM6CisgICAgIH0KKyAjZW5kaWYKKyAKKy0gICAgYm9vbCBpc1JlY3Vy c2l2ZSgpIGNvbnN0IG5vZXhjZXB0CistICAgIHsgcmV0dXJuIFFCYXNpY011dGV4Ojppc1JlY3Vy c2l2ZSgpOyB9CistCisgcHJpdmF0ZToKKyAgICAgUV9ESVNBQkxFX0NPUFkoUU11dGV4KQorICAg ICBmcmllbmQgY2xhc3MgUU11dGV4TG9ja2VyOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29y ZWxpYi90aHJlYWQvcXJlYWR3cml0ZWxvY2suY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVh ZC9xcmVhZHdyaXRlbG9jay5jcHAKK2luZGV4IDhjMjg1MDdkNWEuLjlkZDg1MDMxMTYgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcAorKysr IGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xcmVhZHdyaXRlbG9jay5jcHAKK0BAIC0xNTUs NyArMTU1LDcgQEAgUVJlYWRXcml0ZUxvY2s6OlFSZWFkV3JpdGVMb2NrKFJlY3Vyc2lvbk1vZGUg cmVjdXJzaW9uTW9kZSkKKyAqLworIFFSZWFkV3JpdGVMb2NrOjp+UVJlYWRXcml0ZUxvY2soKQor IHsKKy0gICAgYXV0byBkID0gZF9wdHIubG9hZFJlbGF4ZWQoKTsKKysgICAgYXV0byBkID0gZF9w dHIubG9hZEFjcXVpcmUoKTsKKyAgICAgaWYgKGlzVW5jb250ZW5kZWRMb2NrZWQoZCkpIHsKKyAg ICAgICAgIHFXYXJuaW5nKCJRUmVhZFdyaXRlTG9jazogZGVzdHJveWluZyBsb2NrZWQgUVJlYWRX cml0ZUxvY2siKTsKKyAgICAgICAgIHJldHVybjsKK0BAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBR UmVhZFdyaXRlTG9jazo6dW5sb2NrKCkKKyAvKiEgXGludGVybmFsICBIZWxwZXIgZm9yIFFXYWl0 Q29uZGl0aW9uOjp3YWl0ICovCisgUVJlYWRXcml0ZUxvY2s6OlN0YXRlRm9yV2FpdENvbmRpdGlv biBRUmVhZFdyaXRlTG9jazo6c3RhdGVGb3JXYWl0Q29uZGl0aW9uKCkgY29uc3QKKyB7CistICAg IFFSZWFkV3JpdGVMb2NrUHJpdmF0ZSAqZCA9IGRfcHRyLmxvYWRSZWxheGVkKCk7CisrICAgIFFS ZWFkV3JpdGVMb2NrUHJpdmF0ZSAqZCA9IGRfcHRyLmxvYWRBY3F1aXJlKCk7CisgICAgIHN3aXRj aCAocXVpbnRwdHIoZCkgJiBTdGF0ZU1hc2spIHsKKyAgICAgY2FzZSBTdGF0ZUxvY2tlZEZvclJl YWQ6IHJldHVybiBMb2NrZWRGb3JSZWFkOworICAgICBjYXNlIFN0YXRlTG9ja2VkRm9yV3JpdGU6 IHJldHVybiBMb2NrZWRGb3JXcml0ZTsKK0BAIC00NTMsNiArNDUzLDcgQEAgUVJlYWRXcml0ZUxv Y2s6OlN0YXRlRm9yV2FpdENvbmRpdGlvbiBRUmVhZFdyaXRlTG9jazo6c3RhdGVGb3JXYWl0Q29u ZGl0aW9uKCkgY28KKyAKKyAgICAgaWYgKCFkKQorICAgICAgICAgcmV0dXJuIFVubG9ja2VkOwor KyAgICBjb25zdCBhdXRvIGxvY2sgPSBxdF9zY29wZWRfbG9jayhkLT5tdXRleCk7CisgICAgIGlm IChkLT53cml0ZXJDb3VudCA+IDEpCisgICAgICAgICByZXR1cm4gUmVjdXJzaXZlbHlMb2NrZWQ7 CisgICAgIGVsc2UgaWYgKGQtPndyaXRlckNvdW50ID09IDEpCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb3JlbGliL3RocmVhZC9xc2VtYXBob3JlLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90 aHJlYWQvcXNlbWFwaG9yZS5jcHAKK2luZGV4IDFkMDFmYzFiMjguLjNlY2RlZTM3NDcgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FzZW1hcGhvcmUuY3BwCisrKysgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FzZW1hcGhvcmUuY3BwCitAQCAtMzU0LDcgKzM1NCwx MiBAQCB2b2lkIFFTZW1hcGhvcmU6OnJlbGVhc2UoaW50IG4pCisgICAgICAgICBxdWludHB0ciBu biA9IHVuc2lnbmVkKG4pOworICAgICAgICAgaWYgKGZ1dGV4SGFzV2FpdGVyQ291bnQpCisgICAg ICAgICAgICAgbm4gfD0gcXVpbnQ2NChubikgPDwgMzI7ICAgIC8vIHRva2VuIGNvdW50IHJlcGxp Y2F0ZWQgaW4gaGlnaCB3b3JkCistICAgICAgICBxdWludHB0ciBwcmV2VmFsdWUgPSB1LmZldGNo QW5kQWRkUmVsZWFzZShubik7CisrICAgICAgICBxdWludHB0ciBwcmV2VmFsdWUgPSB1LmxvYWRS ZWxheGVkKCk7CisrICAgICAgICBxdWludHB0ciBuZXdWYWx1ZTsKKysgICAgICAgIGRvIHsgLy8g bG9vcCBqdXN0IHRvIGVuc3VyZSB0aGUgb3BlcmF0aW9ucyBhcmUgZG9uZSBhdG9taWNhbGx5Cisr ICAgICAgICAgICAgbmV3VmFsdWUgPSBwcmV2VmFsdWUgKyBubjsKKysgICAgICAgICAgICBuZXdW YWx1ZSAmPSAoZnV0ZXhOZWVkc1dha2VBbGxCaXQgLSAxKTsKKysgICAgICAgIH0gd2hpbGUgKCF1 LnRlc3RBbmRTZXRSZWxlYXNlKHByZXZWYWx1ZSwgbmV3VmFsdWUsIHByZXZWYWx1ZSkpOworICAg ICAgICAgaWYgKGZ1dGV4TmVlZHNXYWtlKHByZXZWYWx1ZSkpIHsKKyAjaWZkZWYgRlVURVhfT1AK KyAgICAgICAgICAgICBpZiAoZnV0ZXhIYXNXYWl0ZXJDb3VudCkgeworQEAgLTM3Niw3ICszODEs NiBAQCB2b2lkIFFTZW1hcGhvcmU6OnJlbGVhc2UoaW50IG4pCisgICAgICAgICAgICAgICAgIHF1 aW50MzIgb3BhcmcgPSAwOworICAgICAgICAgICAgICAgICBxdWludDMyIGNtcCA9IEZVVEVYX09Q X0NNUF9ORTsKKyAgICAgICAgICAgICAgICAgcXVpbnQzMiBjbXBhcmcgPSAwOworLSAgICAgICAg ICAgICAgICB1LmZldGNoQW5kQW5kUmVsZWFzZShmdXRleE5lZWRzV2FrZUFsbEJpdCAtIDEpOwor ICAgICAgICAgICAgICAgICBmdXRleFdha2VPcCgqZnV0ZXhMb3czMigmdSksIG4sIElOVF9NQVgs ICpmdXRleEhpZ2gzMigmdSksIEZVVEVYX09QKG9wLCBvcGFyZywgY21wLCBjbXBhcmcpKTsKKyAg ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgIH0KK0BAIC0zODgsNyArMzkyLDYg QEAgdm9pZCBRU2VtYXBob3JlOjpyZWxlYXNlKGludCBuKQorICAgICAgICAgICAgIC8vICAgIGl0 cyBhY3F1aXNpdGlvbiBhbnl3YXksIHNvIGl0IGhhcyB0byB3YWl0OworICAgICAgICAgICAgIC8v IDIpIGl0IGRpZCBub3Qgc2VlIHRoZSBuZXcgY291bnRlciB2YWx1ZSwgaW4gd2hpY2ggY2FzZSBp dHMKKyAgICAgICAgICAgICAvLyAgICBmdXRleFdhaXQgd2lsbCBmYWlsLgorLSAgICAgICAgICAg IHUuZmV0Y2hBbmRBbmRSZWxlYXNlKGZ1dGV4TmVlZHNXYWtlQWxsQml0IC0gMSk7CisgICAgICAg ICAgICAgaWYgKGZ1dGV4SGFzV2FpdGVyQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgZnV0ZXhX YWtlQWxsKCpmdXRleExvdzMyKCZ1KSk7CisgICAgICAgICAgICAgICAgIGZ1dGV4V2FrZUFsbCgq ZnV0ZXhIaWdoMzIoJnUpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFk L3F0aHJlYWRfcC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaAoraW5k ZXggYjJkMTYyOGU2ZS4uZjMyZjZmMDQ2MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxp Yi90aHJlYWQvcXRocmVhZF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRo cmVhZF9wLmgKK0BAIC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgorICAgICBpbnQgcmV0dXJuQ29k ZTsKKyAKKyAgICAgdWludCBzdGFja1NpemU7CistICAgIFFUaHJlYWQ6OlByaW9yaXR5IHByaW9y aXR5OworKyAgICBzdGQ6OnVuZGVybHlpbmdfdHlwZTxRVGhyZWFkOjpQcmlvcml0eT46OnR5cGUg cHJpb3JpdHk7CisgCisgICAgIHN0YXRpYyBRVGhyZWFkICp0aHJlYWRGb3JJZChpbnQgaWQpOwor IAorQEAgLTIxMyw2ICsyMTMsMTMgQEAgcHVibGljOgorICAgICAgICAgICAgIFFDb3JlQXBwbGlj YXRpb246Omluc3RhbmNlKCktPnBvc3RFdmVudChxX3B0ciwgbmV3IFFFdmVudChRRXZlbnQ6OlF1 aXQpKTsKKyAgICAgICAgIH0KKyAgICAgfQorKworKyNpZm5kZWYgUV9PU19JTlRFR1JJVFkKKytw cml2YXRlOgorKyAgICAvLyBVc2VkIGluIFFUaHJlYWQoUHJpdmF0ZSk6OnN0YXJ0IHRvIGF2b2lk IHJhY3kgYWNjZXNzIHRvIFFPYmplY3Q6Om9iamVjdE5hbWUsCisrICAgIC8vIHVuc2V0IGFmdGVy d2FyZHMuIE9uIElOVEVHUklUWSB3ZSBzZXQgdGhlIHRocmVhZCBuYW1lIGJlZm9yZSBzdGFydGlu ZyBpdC4KKysgICAgUVN0cmluZyBvYmplY3ROYW1lOworKyNlbmRpZgorIH07CisgCisgI2Vsc2Ug Ly8gUVRfQ09ORklHKHRocmVhZCkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhy ZWFkL3F0aHJlYWRfdW5peC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRf dW5peC5jcHAKK2luZGV4IDU2YThlMGEwMzguLjYxMDExN2E2NDAgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Y29yZWxpYi90aHJlYWQvcXRocmVhZF91bml4LmNwcAorQEAgLTE2OSw4ICsxNjksNyBAQCBzdGF0 aWMgdm9pZCBzZXRfdGhyZWFkX2RhdGEoUVRocmVhZERhdGEgKmRhdGEpCisgCisgc3RhdGljIHZv aWQgY2xlYXJfdGhyZWFkX2RhdGEoKQorIHsKKy0gICAgY3VycmVudFRocmVhZERhdGEgPSBudWxs cHRyOworLSAgICBwdGhyZWFkX3NldHNwZWNpZmljKGN1cnJlbnRfdGhyZWFkX2RhdGFfa2V5LCBu dWxscHRyKTsKKysgICAgc2V0X3RocmVhZF9kYXRhKG51bGxwdHIpOworIH0KKyAKKyB0ZW1wbGF0 ZSA8dHlwZW5hbWUgVD4KK0BAIC0yOTYsNyArMjk1LDcgQEAgdm9pZCAqUVRocmVhZFByaXZhdGU6 OnN0YXJ0KHZvaWQgKmFyZykKKyAgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZ0aHIt PmRfZnVuYygpLT5tdXRleCk7CisgCisgICAgICAgICAgICAgLy8gZG8gd2UgbmVlZCB0byByZXNl dCB0aGUgdGhyZWFkIHByaW9yaXR5PworLSAgICAgICAgICAgIGlmIChpbnQodGhyLT5kX2Z1bmMo KS0+cHJpb3JpdHkpICYgVGhyZWFkUHJpb3JpdHlSZXNldEZsYWcpIHsKKysgICAgICAgICAgICBp ZiAodGhyLT5kX2Z1bmMoKS0+cHJpb3JpdHkgJiBUaHJlYWRQcmlvcml0eVJlc2V0RmxhZykgewor ICAgICAgICAgICAgICAgICB0aHItPmRfZnVuYygpLT5zZXRQcmlvcml0eShRVGhyZWFkOjpQcmlv cml0eSh0aHItPmRfZnVuYygpLT5wcmlvcml0eSAmIH5UaHJlYWRQcmlvcml0eVJlc2V0RmxhZykp OworICAgICAgICAgICAgIH0KKyAKK0BAIC0zMTYsMTAgKzMxNSwxMCBAQCB2b2lkICpRVGhyZWFk UHJpdmF0ZTo6c3RhcnQodm9pZCAqYXJnKQorICAgICAgICAgICAgIC8vIFNldHMgdGhlIG5hbWUg b2YgdGhlIGN1cnJlbnQgdGhyZWFkLiBXZSBjYW4gb25seSBkbyB0aGlzCisgICAgICAgICAgICAg Ly8gd2hlbiB0aGUgdGhyZWFkIGlzIHN0YXJ0aW5nLCBhcyB3ZSBkb24ndCBoYXZlIGEgY3Jvc3MK KyAgICAgICAgICAgICAvLyBwbGF0Zm9ybSB3YXkgb2Ygc2V0dGluZyB0aGUgbmFtZSBvZiBhbiBh cmJpdHJhcnkgdGhyZWFkLgorLSAgICAgICAgICAgIGlmIChRX0xJS0VMWSh0aHItPm9iamVjdE5h bWUoKS5pc0VtcHR5KCkpKQorKyAgICAgICAgICAgIGlmIChRX0xJS0VMWSh0aHItPmRfZnVuYygp LT5vYmplY3ROYW1lLmlzRW1wdHkoKSkpCisgICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUaHJl YWROYW1lKHRoci0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSk7CisgICAgICAgICAgICAgZWxz ZQorLSAgICAgICAgICAgICAgICBzZXRDdXJyZW50VGhyZWFkTmFtZSh0aHItPm9iamVjdE5hbWUo KS50b0xvY2FsOEJpdCgpKTsKKysgICAgICAgICAgICAgICAgc2V0Q3VycmVudFRocmVhZE5hbWUo c3RkOjpleGNoYW5nZSh0aHItPmRfZnVuYygpLT5vYmplY3ROYW1lLCB7fSkudG9Mb2NhbDhCaXQo KSk7CisgICAgICAgICB9CisgI2VuZGlmCisgCitAQCAtNjcxLDcgKzY3MCw3IEBAIHZvaWQgUVRo cmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJpb3JpdHkpCisgICAgICAgICAgICAgICAgIC8vIGNvdWxk IG5vdCBzZXQgc2NoZWR1bGluZyBoaW50cywgZmFsbGJhY2sgdG8gaW5oZXJpdGluZyB0aGVtCisg ICAgICAgICAgICAgICAgIC8vIHdlJ2xsIHRyeSBhZ2FpbiBmcm9tIGluc2lkZSB0aGUgdGhyZWFk CisgICAgICAgICAgICAgICAgIHB0aHJlYWRfYXR0cl9zZXRpbmhlcml0c2NoZWQoJmF0dHIsIFBU SFJFQURfSU5IRVJJVF9TQ0hFRCk7CistICAgICAgICAgICAgICAgIGQtPnByaW9yaXR5ID0gUHJp b3JpdHkocHJpb3JpdHkgfCBUaHJlYWRQcmlvcml0eVJlc2V0RmxhZyk7CisrICAgICAgICAgICAg ICAgIGQtPnByaW9yaXR5ID0gc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8UVRocmVh ZDo6UHJpb3JpdHk+Ojp0eXBlPihwcmlvcml0eSkgfCBUaHJlYWRQcmlvcml0eVJlc2V0RmxhZzsK KyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CitAQCAtNzAy LDcgKzcwMSwxMCBAQCB2b2lkIFFUaHJlYWQ6OnN0YXJ0KFByaW9yaXR5IHByaW9yaXR5KQorICAg ICAgICAgcHRocmVhZF9hdHRyX3NldHRocmVhZG5hbWUoJmF0dHIsIG1ldGFPYmplY3QoKS0+Y2xh c3NOYW1lKCkpOworICAgICBlbHNlCisgICAgICAgICBwdGhyZWFkX2F0dHJfc2V0dGhyZWFkbmFt ZSgmYXR0ciwgb2JqZWN0TmFtZSgpLnRvTG9jYWw4Qml0KCkpOworKyNlbHNlCisrICAgIGQtPm9i amVjdE5hbWUgPSBvYmplY3ROYW1lKCk7CisgI2VuZGlmCisrCisgICAgIHB0aHJlYWRfdCB0aHJl YWRJZDsKKyAgICAgaW50IGNvZGUgPSBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkSWQsICZhdHRyLCBR VGhyZWFkUHJpdmF0ZTo6c3RhcnQsIHRoaXMpOworICAgICBpZiAoY29kZSA9PSBFUEVSTSkgewor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF93aW4uY3BwIGIv cXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3dpbi5jcHAKK2luZGV4IGJjNzBlMzE3 OGEuLjRlNzY5NzI0OTggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0 aHJlYWRfd2luLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3dp bi5jcHAKK0BAIC0zOTQsMTAgKzM5NCw5IEBAIHVuc2lnbmVkIGludCBfX3N0ZGNhbGwgUVRfRU5T VVJFX1NUQUNLX0FMSUdORURfRk9SX1NTRSBRVGhyZWFkUHJpdmF0ZTo6c3RhcnQodm9pCisgCisg I2lmICFkZWZpbmVkKFFUX05PX0RFQlVHKSAmJiBkZWZpbmVkKFFfQ0NfTVNWQykgJiYgIWRlZmlu ZWQoUV9PU19XSU5SVCkKKyAgICAgLy8gc2V0cyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0aHJl YWQuCistICAgIFFCeXRlQXJyYXkgb2JqZWN0TmFtZSA9IHRoci0+b2JqZWN0TmFtZSgpLnRvTG9j YWw4Qml0KCk7CistICAgIHF0X3NldF90aHJlYWRfbmFtZShIQU5ETEUoLTEpLAorLSAgICAgICAg ICAgICAgICAgICAgICAgb2JqZWN0TmFtZS5pc0VtcHR5KCkgPworLSAgICAgICAgICAgICAgICAg ICAgICAgdGhyLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpIDogb2JqZWN0TmFtZS5jb25zdERh dGEoKSk7CisrICAgIHF0X3NldF90aHJlYWRfbmFtZShIQU5ETEUoLTEpLCB0aHItPmRfZnVuYygp LT5vYmplY3ROYW1lLmlzRW1wdHkoKQorKyAgICAgICAgICAgICAgICAgICAgICAgID8gdGhyLT5t ZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgOiBzdGQ6 OmV4Y2hhbmdlKHRoci0+ZF9mdW5jKCktPm9iamVjdE5hbWUsIHt9KS50b0xvY2FsOEJpdCgpLmNv bnN0RGF0YSgpKTsKKyAjZW5kaWYKKyAKKyAgICAgZW1pdCB0aHItPnN0YXJ0ZWQoUVRocmVhZDo6 UVByaXZhdGVTaWduYWwoKSk7CitAQCAtNTAzLDYgKzUwMiw3IEBAIHZvaWQgUVRocmVhZDo6c3Rh cnQoUHJpb3JpdHkgcHJpb3JpdHkpCisgICAgIGlmIChkLT5ydW5uaW5nKQorICAgICAgICAgcmV0 dXJuOworIAorKyAgICBkLT5vYmplY3ROYW1lID0gb2JqZWN0TmFtZSgpOworICAgICBkLT5ydW5u aW5nID0gdHJ1ZTsKKyAgICAgZC0+ZmluaXNoZWQgPSBmYWxzZTsKKyAgICAgZC0+ZXhpdGVkID0g ZmFsc2U7CitAQCAtNTQ4LDcgKzU0OCw3IEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3JpdHkg cHJpb3JpdHkpCisgCisgICAgIGludCBwcmlvOworICAgICBkLT5wcmlvcml0eSA9IHByaW9yaXR5 OworLSAgICBzd2l0Y2ggKGQtPnByaW9yaXR5KSB7CisrICAgIHN3aXRjaCAocHJpb3JpdHkpIHsK KyAgICAgY2FzZSBJZGxlUHJpb3JpdHk6CisgICAgICAgICBwcmlvID0gVEhSRUFEX1BSSU9SSVRZ X0lETEU7CisgICAgICAgICBicmVhazsKK0BAIC02ODYsNyArNjg2LDcgQEAgdm9pZCBRVGhyZWFk UHJpdmF0ZTo6c2V0UHJpb3JpdHkoUVRocmVhZDo6UHJpb3JpdHkgdGhyZWFkUHJpb3JpdHkpCisg CisgICAgIGludCBwcmlvOworICAgICBwcmlvcml0eSA9IHRocmVhZFByaW9yaXR5OworLSAgICBz d2l0Y2ggKHByaW9yaXR5KSB7CisrICAgIHN3aXRjaCAodGhyZWFkUHJpb3JpdHkpIHsKKyAgICAg Y2FzZSBRVGhyZWFkOjpJZGxlUHJpb3JpdHk6CisgICAgICAgICBwcmlvID0gVEhSRUFEX1BSSU9S SVRZX0lETEU7CisgICAgICAgICBicmVhazsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3F0c2FuX2ltcGwuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRzYW5f aW1wbC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNTgwYTczOGI5 MQorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdHNhbl9p bXBsLmgKK0BAIC0wLDAgKzEsMTE1IEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysqKgorKyoq IENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbi4KKysqKiBDb3B5cmlnaHQgKEMp IDIwMjIgS2xhcsOkbHZkYWxlbnMgRGF0YWtvbnN1bHQgQUIsIGEgS0RBQiBHcm91cCBjb21wYW55 LCBpbmZvQGtkYWIuY29tLCBhdXRob3IgR2l1c2VwcGUgRCdBbmdlbG8gPGdpdXNlcHBlLmRhbmdl bG9Aa2RhYi5jb20+CisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLwor KyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0Q29yZSBtb2R1bGUgb2YgdGhlIFF0 IFRvb2xraXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNp YWwgTGljZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwg UXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhl IGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0 d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250 YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQg Q29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRw czovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0 aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMu CisrKioKKysqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBB bHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgTGVzc2VyCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5n IGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5n IG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRv CisrKiogZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lv biAzIHJlcXVpcmVtZW50cworKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzL2xncGwtMy4wLmh0bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAy LjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5z ZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVl CisrKiogUXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUg TElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2Fn aW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3Jt YXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVu dHMgd2lsbAorKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4w Lmh0bWwgYW5kCisrKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwu CisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor KworKyNpZm5kZWYgUVRTQU5fSU1QTF9ICisrI2RlZmluZSBRVFNBTl9JTVBMX0gKKysKKysjaW5j bHVkZSA8UXRDb3JlL3FnbG9iYWwuaD4KKysKKysjaWYgKF9faGFzX2ZlYXR1cmUodGhyZWFkX3Nh bml0aXplcikgfHwgZGVmaW5lZChfX1NBTklUSVpFX1RIUkVBRF9fKSkgJiYgX19oYXNfaW5jbHVk ZSg8c2FuaXRpemVyL3RzYW5faW50ZXJmYWNlLmg+KQorKyMgIGRlZmluZSBRVF9CVUlMRElOR19V TkRFUl9UU0FOCisrIyAgaW5jbHVkZSA8c2FuaXRpemVyL3RzYW5faW50ZXJmYWNlLmg+CisrI2Vu ZGlmCisrCisrUVRfQkVHSU5fTkFNRVNQQUNFCisrCisrbmFtZXNwYWNlIFF0VHNhbiB7CisrI2lm ZGVmIFFUX0JVSUxESU5HX1VOREVSX1RTQU4KKytpbmxpbmUgdm9pZCBmdXRleEFjcXVpcmUodm9p ZCAqYWRkciwgdm9pZCAqYWRkcjIgPSBudWxscHRyKQorK3sKKysgICAgLy8gQSBmdXRleCBjYWxs IGVuc3VyZXMgdG90YWwgb3JkZXJpbmcgb24gdGhlIGZ1dGV4IHdvcmRzCisrICAgIC8vIChpbiBl aXRoZXIgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBjYWxsKS4gSW5zdHJ1Y3QgVFNBTiBhY2Nv cmRpbmdseSwKKysgICAgLy8gYXMgVFNBTiBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoZSBmdXRleCgy KSBzeXNjYWxsIChvciBlcXVpdmFsZW50KS4KKysgICAgOjpfX3RzYW5fYWNxdWlyZShhZGRyKTsK KysgICAgaWYgKGFkZHIyKQorKyAgICAgICAgOjpfX3RzYW5fYWNxdWlyZShhZGRyMik7CisrfQor KworK2lubGluZSB2b2lkIGZ1dGV4UmVsZWFzZSh2b2lkICphZGRyLCB2b2lkICphZGRyMiA9IG51 bGxwdHIpCisreworKyAgICBpZiAoYWRkcjIpCisrICAgICAgICA6Ol9fdHNhbl9yZWxlYXNlKGFk ZHIyKTsKKysgICAgOjpfX3RzYW5fcmVsZWFzZShhZGRyKTsKKyt9CisrCisraW5saW5lIHZvaWQg bXV0ZXhQcmVMb2NrKHZvaWQgKmFkZHIsIHVuc2lnbmVkIGZsYWdzKQorK3sKKysgICAgOjpfX3Rz YW5fbXV0ZXhfcHJlX2xvY2soYWRkciwgZmxhZ3MpOworK30KKysKKytpbmxpbmUgdm9pZCBtdXRl eFBvc3RMb2NrKHZvaWQgKmFkZHIsIHVuc2lnbmVkIGZsYWdzLCBpbnQgcmVjdXJzaW9uKQorK3sK KysgICAgOjpfX3RzYW5fbXV0ZXhfcG9zdF9sb2NrKGFkZHIsIGZsYWdzLCByZWN1cnNpb24pOwor K30KKysKKytpbmxpbmUgdm9pZCBtdXRleFByZVVubG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBm bGFncykKKyt7CisrICAgIDo6X190c2FuX211dGV4X3ByZV91bmxvY2soYWRkciwgZmxhZ3MpOwor K30KKysKKytpbmxpbmUgdm9pZCBtdXRleFBvc3RVbmxvY2sodm9pZCAqYWRkciwgdW5zaWduZWQg ZmxhZ3MpCisreworKyAgICA6Ol9fdHNhbl9tdXRleF9wb3N0X3VubG9jayhhZGRyLCBmbGFncyk7 CisrfQorKworK2VudW0gOiB1bnNpZ25lZCB7CisrICAgIE11dGV4V3JpdGVSZWVudHJhbnQgPSA6 Ol9fdHNhbl9tdXRleF93cml0ZV9yZWVudHJhbnQsCisrICAgIFRyeUxvY2sgPSA6Ol9fdHNhbl9t dXRleF90cnlfbG9jaywKKysgICAgVHJ5TG9ja0ZhaWxlZCA9IDo6X190c2FuX211dGV4X3RyeV9s b2NrX2ZhaWxlZCwKKyt9OworKyNlbHNlCisraW5saW5lIHZvaWQgZnV0ZXhBY3F1aXJlKHZvaWQg Kiwgdm9pZCAqID0gbnVsbHB0cikge30KKytpbmxpbmUgdm9pZCBmdXRleFJlbGVhc2Uodm9pZCAq LCB2b2lkICogPSBudWxscHRyKSB7fQorKworK2VudW0gOiB1bnNpZ25lZCB7CisrICAgIE11dGV4 V3JpdGVSZWVudHJhbnQsCisrICAgIFRyeUxvY2ssCisrICAgIFRyeUxvY2tGYWlsZWQsCisrfTsK KytpbmxpbmUgdm9pZCBtdXRleFByZUxvY2sodm9pZCAqLCB1bnNpZ25lZCkge30KKytpbmxpbmUg dm9pZCBtdXRleFBvc3RMb2NrKHZvaWQgKiwgdW5zaWduZWQsIGludCkge30KKytpbmxpbmUgdm9p ZCBtdXRleFByZVVubG9jayh2b2lkICosIHVuc2lnbmVkKSB7fQorK2lubGluZSB2b2lkIG11dGV4 UG9zdFVubG9jayh2b2lkICosIHVuc2lnbmVkKSB7fQorKyNlbmRpZiAvLyBRVF9CVUlMRElOR19V TkRFUl9UU0FOCisrfSAvLyBuYW1lc3BhY2UgUXRUc2FuCisrCisrUVRfRU5EX05BTUVTUEFDRQor KworKyNlbmRpZiAvLyBRVFNBTl9JTVBMX0gKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Ro cmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcAoraW5kZXggODhiMDU4ZjQxMC4uMGYxZGE0ZGM5 YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRpb25f dW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRpb25f dW5peC5jcHAKK0BAIC0yMTMsNyArMjEzLDcgQEAgYm9vbCBRV2FpdENvbmRpdGlvbjo6d2FpdChR TXV0ZXggKm11dGV4LCBRRGVhZGxpbmVUaW1lciBkZWFkbGluZSkKKyB7CisgICAgIGlmICghIG11 dGV4KQorICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICBpZiAobXV0ZXgtPmlzUmVjdXJzaXZl KCkpIHsKKysgICAgaWYgKHN0YXRpY19jYXN0PFFCYXNpY011dGV4ICo+KG11dGV4KS0+aXNSZWN1 cnNpdmUoKSkgeworICAgICAgICAgcVdhcm5pbmcoIlFXYWl0Q29uZGl0aW9uOiBjYW5ub3Qgd2Fp dCBvbiByZWN1cnNpdmUgbXV0ZXhlcyIpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcWRhdGV0aW1lLmNwcCBiL3F0 YmFzZS9zcmMvY29yZWxpYi90aW1lL3FkYXRldGltZS5jcHAKK2luZGV4IGVjMTI1NjllM2YuLjJj MGIwOTgwNzkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xZGF0ZXRpbWUu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xZGF0ZXRpbWUuY3BwCitAQCAtNDMs NiArNDMsNyBAQAorICNpZiBRVF9DT05GSUcoZGF0ZXRpbWVwYXJzZXIpCisgI2luY2x1ZGUgInBy aXZhdGUvcWRhdGV0aW1lcGFyc2VyX3AuaCIKKyAjZW5kaWYKKysjaW5jbHVkZSA8cHJpdmF0ZS9x bnVtZXJpY19wLmg+CisgCisgI2luY2x1ZGUgInFkYXRhc3RyZWFtLmgiCisgI2luY2x1ZGUgInFz ZXQuaCIKK0BAIC0xNDI5LDkgKzE0MzAsMTEgQEAgUURhdGUgUURhdGU6OmFkZERheXMocWludDY0 IG5kYXlzKSBjb25zdAorICAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgICByZXR1cm4gUURhdGUo KTsKKyAKKy0gICAgLy8gRHVlIHRvIGxpbWl0cyBvbiBtaW5KZCgpIGFuZCBtYXhKZCgpIHdlIGtu b3cgdGhhdCBhbnkgb3ZlcmZsb3cKKy0gICAgLy8gd2lsbCBiZSBpbnZhbGlkIGFuZCBjYXVnaHQg YnkgZnJvbUp1bGlhbkRheSgpLgorLSAgICByZXR1cm4gZnJvbUp1bGlhbkRheShqZCArIG5kYXlz KTsKKysgICAgcWludDY0IHI7CisrICAgIGlmIChRX1VOTElLRUxZKGFkZF9vdmVyZmxvdyhqZCwg bmRheXMsICZyKSkpCisrICAgICAgICByZXR1cm4gUURhdGUoKTsKKysgICAgZWxzZQorKyAgICAg ICAgcmV0dXJuIGZyb21KdWxpYW5EYXkocik7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv dGltZS9xdGltZXpvbmUuY3BwCitpbmRleCAwMzA5ZTQzZTUyLi4zZDQ1MTY5NmExIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lLmNwcAorKysrIGIvcXRiYXNl L3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lLmNwcAorQEAgLTEsNiArMSw2IEBACisgLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyAqKgorLSoqIENvcHlyaWdodCAoQykgMjAxMyBKb2huIExheXQgPGps YXl0QGtkZS5vcmc+CisrKiogQ29weXJpZ2h0IChDKSAyMDIwIEpvaG4gTGF5dCA8amxheXRAa2Rl Lm9yZz4KKyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAq KiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRDb3JlIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtp dC4KK0BAIC05NzUsOSArOTc1LDE1IEBAIFFMaXN0PFFCeXRlQXJyYXk+IFFUaW1lWm9uZTo6d2lu ZG93c0lkVG9JYW5hSWRzKGNvbnN0IFFCeXRlQXJyYXkgJndpbmRvd3NJZCwKKyB9CisgCisgI2lm bmRlZiBRVF9OT19EQVRBU1RSRUFNCisrLy8gSW52YWxpZCwgYXMgYW4gSUFOQSBJRDogdG9vIGxv bmcsIHN0YXJ0cyB3aXRoIC0gYW5kIGhhcyBvdGhlciBpbnZhbGlkIGNoYXJhY3RlcnMgaW4gaXQK KytzdGF0aWMgaW5saW5lIFFTdHJpbmcgaW52YWxpZElkKCkgeyByZXR1cm4gUVN0cmluZ0xpdGVy YWwoIi1ObyBUaW1lIFpvbmUgU3BlY2lmaWVkISIpOyB9CisrCisgUURhdGFTdHJlYW0gJm9wZXJh dG9yPDwoUURhdGFTdHJlYW0gJmRzLCBjb25zdCBRVGltZVpvbmUgJnR6KQorIHsKKy0gICAgdHou ZC0+c2VyaWFsaXplKGRzKTsKKysgICAgaWYgKHR6LmlzVmFsaWQoKSkKKysgICAgICAgIHR6LmQt PnNlcmlhbGl6ZShkcyk7CisrICAgIGVsc2UKKysgICAgICAgIGRzIDw8IGludmFsaWRJZCgpOwor ICAgICByZXR1cm4gZHM7CisgfQorIAorQEAgLTk4NSw3ICs5OTEsOSBAQCBRRGF0YVN0cmVhbSAm b3BlcmF0b3I+PihRRGF0YVN0cmVhbSAmZHMsIFFUaW1lWm9uZSAmdHopCisgeworICAgICBRU3Ry aW5nIGlhbmFJZDsKKyAgICAgZHMgPj4gaWFuYUlkOworLSAgICBpZiAoaWFuYUlkID09IFFMYXRp bjFTdHJpbmcoIk9mZnNldEZyb21VdGMiKSkgeworKyAgICBpZiAoaWFuYUlkID09IGludmFsaWRJ ZCgpKSB7CisrICAgICAgICB0eiA9IFFUaW1lWm9uZSgpOworKyAgICB9IGVsc2UgaWYgKGlhbmFJ ZCA9PSBRTGF0aW4xU3RyaW5nKCJPZmZzZXRGcm9tVXRjIikpIHsKKyAgICAgICAgIGludCB1dGNP ZmZzZXQ7CisgICAgICAgICBRU3RyaW5nIG5hbWU7CisgICAgICAgICBRU3RyaW5nIGFiYnJldmlh dGlvbjsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2 YXRlX3R6LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZXByaXZhdGVfdHou Y3BwCitpbmRleCBiMTYxMWQ3ZGRiLi5hN2E2YTcyY2NmIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9jb3JlbGliL3RpbWUvcXRpbWV6b25lcHJpdmF0ZV90ei5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Y29yZWxpYi90aW1lL3F0aW1lem9uZXByaXZhdGVfdHouY3BwCitAQCAtNDIsNiArNDIsNyBAQAor ICNpbmNsdWRlICJxdGltZXpvbmUuaCIKKyAjaW5jbHVkZSAicXRpbWV6b25lcHJpdmF0ZV9wLmgi CisgI2luY2x1ZGUgInByaXZhdGUvcWxvY2FsZV90b29sc19wLmgiCisrI2luY2x1ZGUgInByaXZh dGUvcWxvY2tpbmdfcC5oIgorIAorICNpbmNsdWRlIDxRdENvcmUvUURhdGFTdHJlYW0+CisgI2lu Y2x1ZGUgPFF0Q29yZS9RRGF0ZVRpbWU+CitAQCAtNjIsNiArNjMsMTAgQEAKKyAKKyBRVF9CRUdJ Tl9OQU1FU1BBQ0UKKyAKKysjaWYgUVRfQ09ORklHKGljdSkKKytzdGF0aWMgUUJhc2ljTXV0ZXgg c19pY3VfbXV0ZXg7CisrI2VuZGlmCisrCisgLyoKKyAgICAgUHJpdmF0ZQorIAorQEAgLTY3MCw2 ICs2NzUsOSBAQCBRVHpUaW1lWm9uZVByaXZhdGU6On5RVHpUaW1lWm9uZVByaXZhdGUoKQorIAor IFFUelRpbWVab25lUHJpdmF0ZSAqUVR6VGltZVpvbmVQcml2YXRlOjpjbG9uZSgpIGNvbnN0Cisg eworKyNpZiBRVF9DT05GSUcoaWN1KQorKyAgICBjb25zdCBhdXRvIGxvY2sgPSBxdF9zY29wZWRf bG9jayhzX2ljdV9tdXRleCk7CisrI2VuZGlmCisgICAgIHJldHVybiBuZXcgUVR6VGltZVpvbmVQ cml2YXRlKCp0aGlzKTsKKyB9CisgCitAQCAtOTEzLDEyICs5MjEsMTQgQEAgUVN0cmluZyBRVHpU aW1lWm9uZVByaXZhdGU6OmRpc3BsYXlOYW1lKHFpbnQ2NCBhdE1TZWNzU2luY2VFcG9jaCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUxvY2FsZSAmbG9j YWxlKSBjb25zdAorIHsKKyAjaWYgUVRfQ09ORklHKGljdSkKKysgICAgYXV0byBsb2NrID0gcXRf dW5pcXVlX2xvY2soc19pY3VfbXV0ZXgpOworICAgICBpZiAoIW1faWN1KQorICAgICAgICAgbV9p Y3UgPSBuZXcgUUljdVRpbWVab25lUHJpdmF0ZShtX2lkKTsKKyAgICAgLy8gVE9ETyBzbWFsbCBy aXNrIG1heSBub3QgbWF0Y2ggaWYgdHJhbiB0aW1lcyBkaWZmZXIgZHVlIHRvIG91dGRhdGVkIGZp bGVzCisgICAgIC8vIFRPRE8gU29tZSB2YWxpZCBUWiBuYW1lcyBhcmUgbm90IHZhbGlkIElDVSBu YW1lcywgdXNlIHRyYW5zbGF0aW9uIHRhYmxlPworICAgICBpZiAobV9pY3UtPmlzVmFsaWQoKSkK KyAgICAgICAgIHJldHVybiBtX2ljdS0+ZGlzcGxheU5hbWUoYXRNU2Vjc1NpbmNlRXBvY2gsIG5h bWVUeXBlLCBsb2NhbGUpOworKyAgICBsb2NrLnVubG9jaygpOworICNlbHNlCisgICAgIFFfVU5V U0VEKG5hbWVUeXBlKQorICAgICBRX1VOVVNFRChsb2NhbGUpCitAQCAtOTMyLDEyICs5NDIsMTQg QEAgUVN0cmluZyBRVHpUaW1lWm9uZVByaXZhdGU6OmRpc3BsYXlOYW1lKFFUaW1lWm9uZTo6VGlt ZVR5cGUgdGltZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IFFMb2NhbGUgJmxvY2FsZSkgY29uc3QKKyB7CisgI2lmIFFUX0NPTkZJRyhpY3UpCisr ICAgIGF1dG8gbG9jayA9IHF0X3VuaXF1ZV9sb2NrKHNfaWN1X211dGV4KTsKKyAgICAgaWYgKCFt X2ljdSkKKyAgICAgICAgIG1faWN1ID0gbmV3IFFJY3VUaW1lWm9uZVByaXZhdGUobV9pZCk7Cisg ICAgIC8vIFRPRE8gc21hbGwgcmlzayBtYXkgbm90IG1hdGNoIGlmIHRyYW4gdGltZXMgZGlmZmVy IGR1ZSB0byBvdXRkYXRlZCBmaWxlcworICAgICAvLyBUT0RPIFNvbWUgdmFsaWQgVFogbmFtZXMg YXJlIG5vdCB2YWxpZCBJQ1UgbmFtZXMsIHVzZSB0cmFuc2xhdGlvbiB0YWJsZT8KKyAgICAgaWYg KG1faWN1LT5pc1ZhbGlkKCkpCisgICAgICAgICByZXR1cm4gbV9pY3UtPmRpc3BsYXlOYW1lKHRp bWVUeXBlLCBuYW1lVHlwZSwgbG9jYWxlKTsKKysgICAgbG9jay51bmxvY2soKTsKKyAjZWxzZQor ICAgICBRX1VOVVNFRCh0aW1lVHlwZSkKKyAgICAgUV9VTlVTRUQobmFtZVR5cGUpCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FhcnJheWRhdGEuaCBiL3F0YmFzZS9zcmMv Y29yZWxpYi90b29scy9xYXJyYXlkYXRhLmgKK2luZGV4IGRjZDk1OTI0YzEuLmQwMTczOWU3ZTYg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWFycmF5ZGF0YS5oCisrKysg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWFycmF5ZGF0YS5oCitAQCAtNDIsNiArNDIsNyBA QAorIAorICNpbmNsdWRlIDxRdENvcmUvcXJlZmNvdW50Lmg+CisgI2luY2x1ZGUgPHN0cmluZy5o PgorKyNpbmNsdWRlIDxjc3RkaW50PgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorQEAgLTU4 LDE0ICs1OSwxNCBAQCBzdHJ1Y3QgUV9DT1JFX0VYUE9SVCBRQXJyYXlEYXRhCisgICAgIHsKKyAg ICAgICAgIFFfQVNTRVJUKHNpemUgPT0gMAorICAgICAgICAgICAgICAgICB8fCBvZmZzZXQgPCAw IHx8IHNpemVfdChvZmZzZXQpID49IHNpemVvZihRQXJyYXlEYXRhKSk7CistICAgICAgICByZXR1 cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyICo+KHRoaXMpICsgb2Zmc2V0OworKyAgICAgICAgcmV0 dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+ KHRoaXMpICsgb2Zmc2V0KTsKKyAgICAgfQorIAorICAgICBjb25zdCB2b2lkICpkYXRhKCkgY29u c3QKKyAgICAgeworICAgICAgICAgUV9BU1NFUlQoc2l6ZSA9PSAwCisgICAgICAgICAgICAgICAg IHx8IG9mZnNldCA8IDAgfHwgc2l6ZV90KG9mZnNldCkgPj0gc2l6ZW9mKFFBcnJheURhdGEpKTsK Ky0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4odGhpcykgKyBv ZmZzZXQ7CisrICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+IChyZWludGVy cHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykgKyBvZmZzZXQpOworICAgICB9CisgCisgICAgIC8v IFRoaXMgcmVmZXJzIHRvIGFycmF5IGRhdGEgbXV0YWJpbGl0eSwgbm90ICJoZWFkZXIgZGF0YSIg cmVwcmVzZW50ZWQgYnkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZy ZWVsaXN0X3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xZnJlZWxpc3RfcC5oCitpbmRl eCA1YmEyM2IzNDRiLi45OTc0MTAyMTM2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGli L3Rvb2xzL3FmcmVlbGlzdF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xZnJl ZWxpc3RfcC5oCitAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIFFGcmVlTGlzdAorICAgICAgICAg ICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgICAgICB4IC09IHNpemU7CisgICAgICAgICB9Cist ICAgICAgICBRX0FTU0VSVChmYWxzZSk7CisrICAgICAgICBRX1VOUkVBQ0hBQkxFKCk7CisgICAg ICAgICByZXR1cm4gLTE7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVs aWIvdG9vbHMvcXZlcnNpb25udW1iZXIuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xdmVy c2lvbm51bWJlci5oCitpbmRleCBkNDNiODZiYTUxLi4yODQzZjJiMDQzIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3F2ZXJzaW9ubnVtYmVyLmgKKysrKyBiL3F0YmFzZS9z cmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51bWJlci5oCitAQCAtMjczLDEwICsyNzMsMTAgQEAg cHVibGljOgorIAorICAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIFFTdHJpbmcg dG9TdHJpbmcoKSBjb25zdDsKKyAjaWYgUVRfU1RSSU5HVklFV19MRVZFTCA8IDIKKy0gICAgUV9S RVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUV9ERUNMX1BVUkVfRlVOQ1RJT04g UVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhjb25zdCBRU3RyaW5nICZzdHJpbmcsIGludCAqc3Vm Zml4SW5kZXggPSBudWxscHRyKTsKKysgICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9S VCBzdGF0aWMgUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhjb25zdCBRU3RyaW5nICZzdHJpbmcs IGludCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsKKyAjZW5kaWYKKy0gICAgUV9SRVFVSVJFRF9S RVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUV9ERUNMX1BVUkVfRlVOQ1RJT04gUVZlcnNpb25O dW1iZXIgZnJvbVN0cmluZyhRTGF0aW4xU3RyaW5nIHN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9 IG51bGxwdHIpOworLSAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBR X0RFQ0xfUFVSRV9GVU5DVElPTiBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKFFTdHJpbmdWaWV3 IHN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworKyAgICBRX1JFUVVJUkVEX1JF U1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKFFMYXRp bjFTdHJpbmcgc3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CisrICAgIFFfUkVR VUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJp bmcoUVN0cmluZ1ZpZXcgc3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CisgCisg cHJpdmF0ZToKKyAjaWZuZGVmIFFUX05PX0RBVEFTVFJFQU0KK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2RidXMvcWRidXNpbnRlZ3JhdG9yLmNwcCBiL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVn cmF0b3IuY3BwCitpbmRleCA1YjY2Y2U5NzFiLi4yOGEzYjBmZmVhIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9kYnVzL3FkYnVzaW50ZWdyYXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZGJ1cy9x ZGJ1c2ludGVncmF0b3IuY3BwCitAQCAtMTEzNSw3ICsxMTM1LDEzIEBAIHZvaWQgUURCdXNDb25u ZWN0aW9uUHJpdmF0ZTo6Y2xvc2VDb25uZWN0aW9uKCkKKyAgICAgICAgIH0KKyAgICAgfQorIAor LSAgICBxRGVsZXRlQWxsKHBlbmRpbmdDYWxscyk7CisrICAgIGZvciAoYXV0byBpdCA9IHBlbmRp bmdDYWxscy5iZWdpbigpOyBpdCAhPSBwZW5kaW5nQ2FsbHMuZW5kKCk7ICsraXQpIHsKKysgICAg ICAgIGF1dG8gY2FsbCA9ICppdDsKKysgICAgICAgIGlmICghY2FsbC0+cmVmLmRlcmVmKCkpIHsK KysgICAgICAgICAgICBkZWxldGUgY2FsbDsKKysgICAgICAgIH0KKysgICAgfQorKyAgICBwZW5k aW5nQ2FsbHMuY2xlYXIoKTsKKyAKKyAgICAgLy8gRGlzY29ubmVjdCBhbGwgc2lnbmFscyBmcm9t IHNpZ25hbCBob29rcyBhbmQgZnJvbSB0aGUgb2JqZWN0IHRyZWUgdG8KKyAgICAgLy8gYXZvaWQg UU9iamVjdDo6ZGVzdHJveWVkIGJlaW5nIHNlbnQgdG8gZGJ1cyBkYWVtb24gdGhyZWFkIHdoaWNo IGhhcworQEAgLTI1ODQsNiArMjU5MCwxMSBAQCBRREJ1c0Nvbm5lY3Rpb25Qcml2YXRlOjpmaW5k TWV0YU9iamVjdChjb25zdCBRU3RyaW5nICZzZXJ2aWNlLCBjb25zdCBRU3RyaW5nICZwYQorICAg ICAgICAgaWYgKG1vKQorICAgICAgICAgICAgIHJldHVybiBtbzsKKyAgICAgfQorKyAgICBpZiAo cGF0aC5pc0VtcHR5KCkpIHsKKysgICAgICAgIGVycm9yID0gUURCdXNFcnJvcihRREJ1c0Vycm9y OjpJbnZhbGlkT2JqZWN0UGF0aCwgUUxhdGluMVN0cmluZygiT2JqZWN0IHBhdGggY2Fubm90IGJl IGVtcHR5IikpOworKyAgICAgICAgbGFzdEVycm9yID0gZXJyb3I7CisrICAgICAgICByZXR1cm4g bnVsbHB0cjsKKysgICAgfQorIAorICAgICAvLyBpbnRyb3NwZWN0IHRoZSB0YXJnZXQgb2JqZWN0 CisgICAgIFFEQnVzTWVzc2FnZSBtc2cgPSBRREJ1c01lc3NhZ2U6OmNyZWF0ZU1ldGhvZENhbGwo c2VydmljZSwgcGF0aCwKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNtZXRhb2Jq ZWN0LmNwcCBiL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c21ldGFvYmplY3QuY3BwCitpbmRleCA1MjY1 NTY4ZjQyLi43ZTlmMGYxYWNjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0 YW9iamVjdC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c21ldGFvYmplY3QuY3BwCitA QCAtMjEwLDYgKzIxMCw5IEBAIFFEQnVzTWV0YU9iamVjdEdlbmVyYXRvcjo6ZmluZFR5cGUoY29u c3QgUUJ5dGVBcnJheSAmc2lnbmF0dXJlLAorICAgICAgICAgfSBlbHNlIGlmIChzaWduYXR1cmUg PT0gImF7c3N9IikgeworICAgICAgICAgICAgIHJlc3VsdC5uYW1lID0gIlFNYXA8UVN0cmluZyxR U3RyaW5nPiI7CisgICAgICAgICAgICAgdHlwZSA9IHFNZXRhVHlwZUlkPFFNYXA8UVN0cmluZywg UVN0cmluZz4gPigpOworKyAgICAgICAgfSBlbHNlIGlmIChzaWduYXR1cmUgPT0gImFheSIpIHsK KysgICAgICAgICAgICByZXN1bHQubmFtZSA9ICJRQnl0ZUFycmF5TGlzdCI7CisrICAgICAgICAg ICAgdHlwZSA9IHFNZXRhVHlwZUlkPFFCeXRlQXJyYXlMaXN0PigpOworICAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgICByZXN1bHQubmFtZSA9ICJ7RC1CdXMgdHlwZSBcIiIgKyBzaWduYXR1 cmUgKyAiXCJ9IjsKKyAgICAgICAgICAgICB0eXBlID0gcmVnaXN0ZXJDb21wbGV4REJ1c1R5cGUo cmVzdWx0Lm5hbWUpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFj Y2Vzc2libGUuY3BwIGIvcXRiYXNlL3NyYy9ndWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAK K2luZGV4IGQ3MDViZmNjYjUuLjBjYWYzYzgwOGMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1 aS9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvYWNjZXNz aWJsZS9xYWNjZXNzaWJsZS5jcHAKK0BAIC01NCw2ICs1NCw3IEBACisgI2luY2x1ZGUgPFF0Q29y ZS9xZGVidWcuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3Fsb2dnaW5nY2F0ZWdvcnkuaD4KKyAjaW5j bHVkZSA8UXRDb3JlL3FtZXRhb2JqZWN0Lmg+CisrI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3Ft ZXRhb2JqZWN0X3AuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3FoYXNoLmg+CisgI2luY2x1ZGUgPHBy aXZhdGUvcWZhY3Rvcnlsb2FkZXJfcC5oPgorIAorQEAgLTY4MSw2ICs2ODIsMjUgQEAgUUFjY2Vz c2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2UoUU9i amVjdCAqb2JqZWN0KQorICAgICAvLyBDcmVhdGUgYSBRQWNjZXNzaWJsZUludGVyZmFjZSBmb3Ig dGhlIG9iamVjdCBjbGFzcy4gU3RhcnQgYnkgdGhlIG1vc3QKKyAgICAgLy8gZGVyaXZlZCBjbGFz cyBhbmQgd2FsayB1cCB0aGUgY2xhc3MgaGllcmFyY2h5LgorICAgICBjb25zdCBRTWV0YU9iamVj dCAqbW8gPSBvYmplY3QtPm1ldGFPYmplY3QoKTsKKysgICAgY29uc3QgYXV0byAqb2JqZWN0UHJp diA9IFFPYmplY3RQcml2YXRlOjpnZXQob2JqZWN0KTsKKysgICAgLyoKKysgICAgIFdlIGRvIG5v dCB3YW50IHRvIGNhY2hlIGVhY2ggYW5kIGV2ZXJ5IFFNTCBtZXRhb2JqZWN0IChCdXR0b25fUU1M VFlQRV8xMjQsCisrICAgICBCdXR0b25fUU1MVFlQRV8xMjUsIGV0Yy4pLiBUaG9zZSBkeW5hbWlj IG1ldGFvYmplY3RzIHNob3VsZG4ndCBoYXZlIGFuCisrICAgICBhY2Nlc3NpYmxlIGludGVyZmFj ZSBpbiBhbnkgY2FzZS4gSW5zdGVhZCwgd2Ugc3RhcnQgdGhlIHdob2xlIGNoZWNraW5nCisrICAg ICB3aXRoIHRoZSBmaXJzdCBub24tZHluYW1pYyBtZXRhLW9iamVjdC4gVG8gYXZvaWQgcG90ZW50 aWFsIHJlZ3Jlc3Npb25zCisrICAgICBpbiBvdGhlciBhcmVhcyBvZiBRdCB0aGF0IGFsc28gdXNl IGR5bmFtaWMgbWV0YW9iamVjdHMsIHdlIG9ubHkgZG8gdGhpcworKyAgICAgZm9yIG9iamVjdHMg dGhhdCBhcmUgUU1MLXJlbGF0ZWQgKGFwcHJveGltYXRlZCBieSBjaGVja2luZyB3aGV0aGVyIHRo ZXkKKysgICAgIGhhdmUgZGRhdGEgc2V0KS4KKysgICAgKi8KKysgICAgY29uc3QgYm9vbCBxbWxS ZWxhdGVkID0gIW9iamVjdFByaXYtPmlzRGVsZXRpbmdDaGlsZHJlbiAmJgorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvYmplY3RQcml2LT5kZWNsYXJhdGl2ZURhdGE7CisrICAgIHdoaWxl IChxbWxSZWxhdGVkICYmIG1vKSB7CisrICAgICAgICBhdXRvIG1vcCA9IFFNZXRhT2JqZWN0UHJp dmF0ZTo6Z2V0KG1vKTsKKysgICAgICAgIGlmICghbW9wIHx8ICEobW9wLT5mbGFncyAmIER5bmFt aWNNZXRhT2JqZWN0KSkKKysgICAgICAgICAgICBicmVhazsKKysKKysgICAgICAgIG1vID0gbW8t PnN1cGVyQ2xhc3MoKTsKKysgICAgfTsKKyAgICAgd2hpbGUgKG1vKSB7CisgICAgICAgICBjb25z dCBRU3RyaW5nIGNuID0gUUxhdGluMVN0cmluZyhtby0+Y2xhc3NOYW1lKCkpOworIAorQEAgLTY5 NiwxNCArNzE2LDE1IEBAIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZTo6cXVlcnlB Y2Nlc3NpYmxlSW50ZXJmYWNlKFFPYmplY3QgKm9iamVjdCkKKyAgICAgICAgIC8vIEZpbmQgYSBR QWNjZXNzaWJsZVBsdWdpbiAoZmFjdG9yeSkgZm9yIHRoZSBjbGFzcyBuYW1lLiBJZiB0aGVyZSdz CisgICAgICAgICAvLyBubyBlbnRyeSBpbiB0aGUgY2FjaGUgdHJ5IHRvIGNyZWF0ZSBpdCB1c2lu ZyB0aGUgcGx1Z2luIGxvYWRlci4KKyAgICAgICAgIGlmICghcUFjY2Vzc2libGVQbHVnaW5zKCkt PmNvbnRhaW5zKGNuKSkgeworKyAgICAgICAgICAgIFFBY2Nlc3NpYmxlUGx1Z2luICpmYWN0b3J5 ID0gbnVsbHB0cjsgLy8gMCBtZWFucyAibm8gcGx1Z2luIGZvdW5kIi4gVGhpcyBpcyBjYWNoZWQg YXMgd2VsbC4KKyAgICAgICAgICAgICBjb25zdCBpbnQgaW5kZXggPSBsb2FkZXIoKS0+aW5kZXhP Zihjbik7CistICAgICAgICAgICAgaWYgKGluZGV4ICE9IC0xKSB7CistICAgICAgICAgICAgICAg IFFBY2Nlc3NpYmxlUGx1Z2luICpmYWN0b3J5ID0gcW9iamVjdF9jYXN0PFFBY2Nlc3NpYmxlUGx1 Z2luICo+KGxvYWRlcigpLT5pbnN0YW5jZShpbmRleCkpOworLSAgICAgICAgICAgICAgICBxQWNj ZXNzaWJsZVBsdWdpbnMoKS0+aW5zZXJ0KGNuLCBmYWN0b3J5KTsKKy0gICAgICAgICAgICB9Cisr ICAgICAgICAgICAgaWYgKGluZGV4ICE9IC0xKQorKyAgICAgICAgICAgICAgICBmYWN0b3J5ID0g cW9iamVjdF9jYXN0PFFBY2Nlc3NpYmxlUGx1Z2luICo+KGxvYWRlcigpLT5pbnN0YW5jZShpbmRl eCkpOworKyAgICAgICAgICAgIHFBY2Nlc3NpYmxlUGx1Z2lucygpLT5pbnNlcnQoY24sIGZhY3Rv cnkpOworICAgICAgICAgfQorIAorICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgY2FjaGUg c2hvdWxkIGNvbnRhaW4gYSB2YWxpZCBmYWN0b3J5IHBvaW50ZXIgb3IgMDoKKysgICAgICAgIFFf QVNTRVJUKHFBY2Nlc3NpYmxlUGx1Z2lucygpLT5jb250YWlucyhjbikpOworICAgICAgICAgUUFj Y2Vzc2libGVQbHVnaW4gKmZhY3RvcnkgPSBxQWNjZXNzaWJsZVBsdWdpbnMoKS0+dmFsdWUoY24p OworICAgICAgICAgaWYgKGZhY3RvcnkpIHsKKyAgICAgICAgICAgICBRQWNjZXNzaWJsZUludGVy ZmFjZSAqcmVzdWx0ID0gZmFjdG9yeS0+Y3JlYXRlKGNuLCBvYmplY3QpOworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3VyZS5qc29uIGIvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJl Lmpzb24KK2luZGV4IDFmMDg3OTVjNTcuLjEyYzk1NzQyZDIgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2d1aS9jb25maWd1cmUuanNvbgorKysrIGIvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJlLmpz b24KK0BAIC04MzQsNyArODM0LDggQEAKKyAgICAgICAgICAgICAgICAgICAgICIvLyBlbWJlZGRl ZCBkZXZpY2VzLCBhcmUgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBYLiBF R0wgc3VwcG9ydCIsCisgICAgICAgICAgICAgICAgICAgICAiLy8gaGFzIHRvIGJlIGRpc2FibGVk IGluIHBsdWdpbnMgbGlrZSB4Y2IgaW4gdGhpcyBjYXNlIHNpbmNlIHRoZSBuYXRpdmUgZGlzcGxh eSwiLAorICAgICAgICAgICAgICAgICAgICAgIi8vIHdpbmRvdyBhbmQgcGl4bWFwIHR5cGVzIHdp bGwgYmUgZGlmZmVyZW50IHRoYW4gd2hhdCBhbiBYLWJhc2VkIHBsYXRmb3JtIiwKKy0gICAgICAg ICAgICAgICAgICAgICIvLyBwbHVnaW4gd291bGQgZXhwZWN0LiIKKysgICAgICAgICAgICAgICAg ICAgICIvLyBwbHVnaW4gd291bGQgZXhwZWN0LiIsCisrICAgICAgICAgICAgICAgICAgICAiI2Rl ZmluZSBVU0VfWDExIgorICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAiaW5j bHVkZSI6IFsgIkVHTC9lZ2wuaCIsICJYMTEvWGxpYi5oIiBdLAorICAgICAgICAgICAgICAgICAi bWFpbiI6IFsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xYm1waGFuZGxlci5j cHAgYi9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xYm1waGFuZGxlci5jcHAKK2luZGV4IDk2ZjFlOGNi MWQuLjBlNzNiYmJkYjAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xYm1waGFu ZGxlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FibXBoYW5kbGVyLmNwcAorQEAg LTE1MCwxNiArMTUwLDQyIEBAIHN0YXRpYyBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChRRGF0YVN0 cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIgJmJpKQorICAgICByZXR1cm4gczsKKyB9CisgCist c3RhdGljIGludCBjYWxjX3NoaWZ0KHVpbnQgbWFzaykKKytzdGF0aWMgdWludCBjYWxjX3NoaWZ0 KHVpbnQgbWFzaykKKyB7CistICAgIGludCByZXN1bHQgPSAwOworLSAgICB3aGlsZSAobWFzayAm JiAhKG1hc2sgJiAxKSkgeworKyAgICB1aW50IHJlc3VsdCA9IDA7CisrICAgIHdoaWxlICgobWFz ayA+PSAweDEwMCkgfHwgKCEobWFzayAmIDEpICYmIG1hc2spKSB7CisgICAgICAgICByZXN1bHQr KzsKKyAgICAgICAgIG1hc2sgPj49IDE7CisgICAgIH0KKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9 CisgCisrc3RhdGljIHVpbnQgY2FsY19zY2FsZSh1aW50IGxvd19tYXNrKQorK3sKKysgICAgdWlu dCByZXN1bHQgPSA4OworKyAgICB3aGlsZSAobG93X21hc2sgJiYgcmVzdWx0KSB7CisrICAgICAg ICByZXN1bHQtLTsKKysgICAgICAgIGxvd19tYXNrID4+PSAxOworKyAgICB9CisrICAgIHJldHVy biByZXN1bHQ7CisrfQorKworK3N0YXRpYyBpbmxpbmUgdWludCBhcHBseV9zY2FsZSh1aW50IHZh bHVlLCB1aW50IHNjYWxlKQorK3sKKysgICAgaWYgKCEoc2NhbGUgJiAweDA3KSkgLy8gcmV0dXJu IGltbWVkaWF0ZWx5IGlmIHNjYWxlID09IDggb3IgMAorKyAgICAgICAgcmV0dXJuIHZhbHVlOwor KworKyAgICB1aW50IGZpbGxlZCA9IDggLSBzY2FsZTsKKysgICAgdWludCByZXN1bHQgPSB2YWx1 ZSA8PCBzY2FsZTsKKysKKysgICAgZG8geworKyAgICAgICAgcmVzdWx0IHw9IHJlc3VsdCA+PiBm aWxsZWQ7CisrICAgICAgICBmaWxsZWQgPDw9IDE7CisrICAgIH0gd2hpbGUgKGZpbGxlZCA8IDgp OworKworKyAgICByZXR1cm4gcmVzdWx0OworK30KKysKKyBzdGF0aWMgYm9vbCByZWFkX2RpYl9m aWxlaGVhZGVyKFFEYXRhU3RyZWFtICZzLCBCTVBfRklMRUhEUiAmYmYpCisgeworICAgICAvLyBy ZWFkIEJNUCBmaWxlIGhlYWRlcgorQEAgLTIyMiwxNCArMjQ4LDE0IEBAIHN0YXRpYyBib29sIHJl YWRfZGliX2JvZHkoUURhdGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSwgcWludDY0 IG9mZnNldCwKKyAgICAgdWludCBncmVlbl9tYXNrID0gMDsKKyAgICAgdWludCBibHVlX21hc2sg PSAwOworICAgICB1aW50IGFscGhhX21hc2sgPSAwOworLSAgICBpbnQgcmVkX3NoaWZ0ID0gMDsK Ky0gICAgaW50IGdyZWVuX3NoaWZ0ID0gMDsKKy0gICAgaW50IGJsdWVfc2hpZnQgPSAwOworLSAg ICBpbnQgYWxwaGFfc2hpZnQgPSAwOworLSAgICBpbnQgcmVkX3NjYWxlID0gMDsKKy0gICAgaW50 IGdyZWVuX3NjYWxlID0gMDsKKy0gICAgaW50IGJsdWVfc2NhbGUgPSAwOworLSAgICBpbnQgYWxw aGFfc2NhbGUgPSAwOworKyAgICB1aW50IHJlZF9zaGlmdCA9IDA7CisrICAgIHVpbnQgZ3JlZW5f c2hpZnQgPSAwOworKyAgICB1aW50IGJsdWVfc2hpZnQgPSAwOworKyAgICB1aW50IGFscGhhX3No aWZ0ID0gMDsKKysgICAgdWludCByZWRfc2NhbGUgPSAwOworKyAgICB1aW50IGdyZWVuX3NjYWxl ID0gMDsKKysgICAgdWludCBibHVlX3NjYWxlID0gMDsKKysgICAgdWludCBhbHBoYV9zY2FsZSA9 IDA7CisgCisgICAgIGlmICghZC0+aXNTZXF1ZW50aWFsKCkpCisgICAgICAgICBkLT5zZWVrKHN0 YXJ0cG9zICsgQk1QX0ZJTEVIRFJfU0laRSArIGJpLmJpU2l6ZSk7IC8vIGdvdG8gc3RhcnQgb2Yg Y29sb3JtYXAgb3IgbWFza3MKK0BAIC0zMDgsMTkgKzMzNCwxOSBAQCBzdGF0aWMgYm9vbCByZWFk X2RpYl9ib2R5KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAmYmksIHFpbnQ2NCBv ZmZzZXQsCisgICAgICAgICByZWRfc2hpZnQgPSBjYWxjX3NoaWZ0KHJlZF9tYXNrKTsKKyAgICAg ICAgIGlmICgoKHJlZF9tYXNrID4+IHJlZF9zaGlmdCkgKyAxKSA9PSAwKQorICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKKy0gICAgICAgIHJlZF9zY2FsZSA9IDI1NiAvICgocmVkX21hc2sgPj4g cmVkX3NoaWZ0KSArIDEpOworKyAgICAgICAgcmVkX3NjYWxlID0gY2FsY19zY2FsZShyZWRfbWFz ayA+PiByZWRfc2hpZnQpOworICAgICAgICAgZ3JlZW5fc2hpZnQgPSBjYWxjX3NoaWZ0KGdyZWVu X21hc2spOworICAgICAgICAgaWYgKCgoZ3JlZW5fbWFzayA+PiBncmVlbl9zaGlmdCkgKyAxKSA9 PSAwKQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgICAgIGdyZWVuX3NjYWxlID0g MjU2IC8gKChncmVlbl9tYXNrID4+IGdyZWVuX3NoaWZ0KSArIDEpOworKyAgICAgICAgZ3JlZW5f c2NhbGUgPSBjYWxjX3NjYWxlKGdyZWVuX21hc2sgPj4gZ3JlZW5fc2hpZnQpOworICAgICAgICAg Ymx1ZV9zaGlmdCA9IGNhbGNfc2hpZnQoYmx1ZV9tYXNrKTsKKyAgICAgICAgIGlmICgoKGJsdWVf bWFzayA+PiBibHVlX3NoaWZ0KSArIDEpID09IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNl OworLSAgICAgICAgYmx1ZV9zY2FsZSA9IDI1NiAvICgoYmx1ZV9tYXNrID4+IGJsdWVfc2hpZnQp ICsgMSk7CisrICAgICAgICBibHVlX3NjYWxlID0gY2FsY19zY2FsZShibHVlX21hc2sgPj4gYmx1 ZV9zaGlmdCk7CisgICAgICAgICBhbHBoYV9zaGlmdCA9IGNhbGNfc2hpZnQoYWxwaGFfbWFzayk7 CisgICAgICAgICBpZiAoKChhbHBoYV9tYXNrID4+IGFscGhhX3NoaWZ0KSArIDEpID09IDApCisg ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgYWxwaGFfc2NhbGUgPSAyNTYgLyAo KGFscGhhX21hc2sgPj4gYWxwaGFfc2hpZnQpICsgMSk7CisrICAgICAgICBhbHBoYV9zY2FsZSA9 IGNhbGNfc2NhbGUoYWxwaGFfbWFzayA+PiBhbHBoYV9zaGlmdCk7CisgICAgIH0gZWxzZSBpZiAo Y29tcCA9PSBCTVBfUkdCICYmIChuYml0cyA9PSAyNCB8fCBuYml0cyA9PSAzMikpIHsKKyAgICAg ICAgIGJsdWVfbWFzayA9IDB4MDAwMDAwZmY7CisgICAgICAgICBncmVlbl9tYXNrID0gMHgwMDAw ZmYwMDsKK0BAIC0zMjgsMTcgKzM1NCwxNSBAQCBzdGF0aWMgYm9vbCByZWFkX2RpYl9ib2R5KFFE YXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAmYmksIHFpbnQ2NCBvZmZzZXQsCisgICAg ICAgICBibHVlX3NoaWZ0ID0gMDsKKyAgICAgICAgIGdyZWVuX3NoaWZ0ID0gODsKKyAgICAgICAg IHJlZF9zaGlmdCA9IDE2OworLSAgICAgICAgYmx1ZV9zY2FsZSA9IGdyZWVuX3NjYWxlID0gcmVk X3NjYWxlID0gMTsKKysgICAgICAgIGJsdWVfc2NhbGUgPSBncmVlbl9zY2FsZSA9IHJlZF9zY2Fs ZSA9IDA7CisgICAgIH0gZWxzZSBpZiAoY29tcCA9PSBCTVBfUkdCICYmIG5iaXRzID09IDE2KSB7 CisgICAgICAgICBibHVlX21hc2sgPSAweDAwMWY7CisgICAgICAgICBncmVlbl9tYXNrID0gMHgw M2UwOworICAgICAgICAgcmVkX21hc2sgPSAweDdjMDA7CisgICAgICAgICBibHVlX3NoaWZ0ID0g MDsKKy0gICAgICAgIGdyZWVuX3NoaWZ0ID0gMjsKKy0gICAgICAgIHJlZF9zaGlmdCA9IDc7Cist ICAgICAgICByZWRfc2NhbGUgPSAxOworLSAgICAgICAgZ3JlZW5fc2NhbGUgPSAxOworLSAgICAg ICAgYmx1ZV9zY2FsZSA9IDg7CisrICAgICAgICBncmVlbl9zaGlmdCA9IDU7CisrICAgICAgICBy ZWRfc2hpZnQgPSAxMDsKKysgICAgICAgIGJsdWVfc2NhbGUgPSBncmVlbl9zY2FsZSA9IHJlZF9z Y2FsZSA9IDM7CisgICAgIH0KKyAKKyAjaWYgMAorQEAgLTU0NCwxMCArNTY4LDEwIEBAIHN0YXRp YyBib29sIHJlYWRfZGliX2JvZHkoUURhdGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZi aSwgcWludDY0IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgIGMgfD0gKih1Y2hhciopKGIr Mik8PDE2OworICAgICAgICAgICAgICAgICBpZiAobmJpdHMgPiAyNCkKKyAgICAgICAgICAgICAg ICAgICAgIGMgfD0gKih1Y2hhciopKGIrMyk8PDI0OworLSAgICAgICAgICAgICAgICAqcCsrID0g cVJnYmEoKChjICYgcmVkX21hc2spID4+IHJlZF9zaGlmdCkgKiByZWRfc2NhbGUsCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYyAmIGdyZWVuX21hc2spID4+IGdy ZWVuX3NoaWZ0KSAqIGdyZWVuX3NjYWxlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoKGMgJiBibHVlX21hc2spID4+IGJsdWVfc2hpZnQpICogYmx1ZV9zY2FsZSwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwID8gKChjICYg YWxwaGFfbWFzaykgPj4gYWxwaGFfc2hpZnQpICogYWxwaGFfc2NhbGUgOiAweGZmKTsKKysgICAg ICAgICAgICAgICAgKnArKyA9IHFSZ2JhKGFwcGx5X3NjYWxlKChjICYgcmVkX21hc2spID4+IHJl ZF9zaGlmdCwgcmVkX3NjYWxlKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5 X3NjYWxlKChjICYgZ3JlZW5fbWFzaykgPj4gZ3JlZW5fc2hpZnQsIGdyZWVuX3NjYWxlKSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5X3NjYWxlKChjICYgYmx1ZV9tYXNrKSA+ PiBibHVlX3NoaWZ0LCBibHVlX3NjYWxlKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRyYW5zcCA/IGFwcGx5X3NjYWxlKChjICYgYWxwaGFfbWFzaykgPj4gYWxwaGFfc2hpZnQsIGFs cGhhX3NjYWxlKSA6IDB4ZmYpOworICAgICAgICAgICAgICAgICBiICs9IG5iaXRzLzg7CisgICAg ICAgICAgICAgfQorICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2ltYWdl L3FpbWFnZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xaW1hZ2UuY3BwCitpbmRleCA3MTUy YWMxNjA3Li4wZGY3NzI1NjRjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWlt YWdlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcAorQEAgLTQ2OTQs NiArNDY5NCw4IEBAIFFJbWFnZSBRSW1hZ2U6OnNtb290aFNjYWxlZChpbnQgdywgaW50IGgpIGNv bnN0IHsKKyBzdGF0aWMgUUltYWdlIHJvdGF0ZWQ5MChjb25zdCBRSW1hZ2UgJmltYWdlKQorIHsK KyAgICAgUUltYWdlIG91dChpbWFnZS5oZWlnaHQoKSwgaW1hZ2Uud2lkdGgoKSwgaW1hZ2UuZm9y bWF0KCkpOworKyAgICBpZiAob3V0LmlzTnVsbCgpKQorKyAgICAgICAgcmV0dXJuIG91dDsKKyAg ICAgY29weU1ldGFkYXRhKCZvdXQsIGltYWdlKTsKKyAgICAgaWYgKGltYWdlLmNvbG9yQ291bnQo KSA+IDApCisgICAgICAgICBvdXQuc2V0Q29sb3JUYWJsZShpbWFnZS5jb2xvclRhYmxlKCkpOwor QEAgLTQ3MjIsNiArNDcyNCw4IEBAIHN0YXRpYyBRSW1hZ2Ugcm90YXRlZDE4MChjb25zdCBRSW1h Z2UgJmltYWdlKQorICAgICAgICAgcmV0dXJuIGltYWdlLm1pcnJvcmVkKHRydWUsIHRydWUpOwor IAorICAgICBRSW1hZ2Ugb3V0KGltYWdlLndpZHRoKCksIGltYWdlLmhlaWdodCgpLCBpbWFnZS5m b3JtYXQoKSk7CisrICAgIGlmIChvdXQuaXNOdWxsKCkpCisrICAgICAgICByZXR1cm4gb3V0Owor ICAgICBjb3B5TWV0YWRhdGEoJm91dCwgaW1hZ2UpOworICAgICBpZiAoaW1hZ2UuY29sb3JDb3Vu dCgpID4gMCkKKyAgICAgICAgIG91dC5zZXRDb2xvclRhYmxlKGltYWdlLmNvbG9yVGFibGUoKSk7 CitAQCAtNDczNCw2ICs0NzM4LDggQEAgc3RhdGljIFFJbWFnZSByb3RhdGVkMTgwKGNvbnN0IFFJ bWFnZSAmaW1hZ2UpCisgc3RhdGljIFFJbWFnZSByb3RhdGVkMjcwKGNvbnN0IFFJbWFnZSAmaW1h Z2UpCisgeworICAgICBRSW1hZ2Ugb3V0KGltYWdlLmhlaWdodCgpLCBpbWFnZS53aWR0aCgpLCBp bWFnZS5mb3JtYXQoKSk7CisrICAgIGlmIChvdXQuaXNOdWxsKCkpCisrICAgICAgICByZXR1cm4g b3V0OworICAgICBjb3B5TWV0YWRhdGEoJm91dCwgaW1hZ2UpOworICAgICBpZiAoaW1hZ2UuY29s b3JDb3VudCgpID4gMCkKKyAgICAgICAgIG91dC5zZXRDb2xvclRhYmxlKGltYWdlLmNvbG9yVGFi bGUoKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FjdXJzb3IuY3BwIGIv cXRiYXNlL3NyYy9ndWkva2VybmVsL3FjdXJzb3IuY3BwCitpbmRleCBkNmNjYWZmOGVkLi40NTUw ODgyNDFjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FjdXJzb3IuY3BwCisr KysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWN1cnNvci5jcHAKK0BAIC0yNTEsNyArMjUxLDgg QEAgdm9pZCBRQ3Vyc29yOjpzZXRQb3MoUVNjcmVlbiAqc2NyZWVuLCBpbnQgeCwgaW50IHkpCisg eworICAgICBpZiAoc2NyZWVuKSB7CisgICAgICAgICBpZiAoUVBsYXRmb3JtQ3Vyc29yICpjdXJz b3IgPSBzY3JlZW4tPmhhbmRsZSgpLT5jdXJzb3IoKSkgeworLSAgICAgICAgICAgIGNvbnN0IFFQ b2ludCBkZXZpY2VQb3MgPSBRSGlnaERwaTo6dG9OYXRpdmVQaXhlbHMoUVBvaW50KHgsIHkpLCBz Y3JlZW4pOworKyAgICAgICAgICAgIGNvbnN0IFFQb2ludCBwb3MoeCwgeSk7CisrICAgICAgICAg ICAgY29uc3QgUVBvaW50IGRldmljZVBvcyA9IFFIaWdoRHBpOjp0b05hdGl2ZVBpeGVscyhwb3Ms IHNjcmVlbi0+dmlydHVhbFNpYmxpbmdBdChwb3MpKTsKKyAgICAgICAgICAgICAvLyBOZWVkIHRv IGNoZWNrLCBzaW5jZSBzb21lIFggc2VydmVycyBnZW5lcmF0ZSBudWxsIG1vdXNlIG1vdmUKKyAg ICAgICAgICAgICAvLyBldmVudHMsIGNhdXNpbmcgbG9vcGluZyBpbiBhcHBsaWNhdGlvbnMgd2hp Y2ggY2FsbCBzZXRQb3MoKSBvbgorICAgICAgICAgICAgIC8vIGV2ZXJ5IG1vdXNlIG1vdmUgZXZl bnQuCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5j cHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWhpZ2hkcGlzY2FsaW5nLmNwcAoraW5kZXggOWJi ZjI3NzNhOS4uM2FjNGE0ZDhiNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9x aGlnaGRwaXNjYWxpbmcuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWhpZ2hkcGlz Y2FsaW5nLmNwcAorQEAgLTU4MCw5ICs1ODAsOCBAQCB2b2lkIFFIaWdoRHBpU2NhbGluZzo6c2V0 U2NyZWVuRmFjdG9yKFFTY3JlZW4gKnNjcmVlbiwgcXJlYWwgZmFjdG9yKQorICAgICBlbHNlCisg ICAgICAgICBxTmFtZWRTY3JlZW5TY2FsZUZhY3RvcnMoKS0+aW5zZXJ0KG5hbWUsIGZhY3Rvcik7 CisgCistICAgIC8vIGhhY2sgdG8gZm9yY2UgcmUtZXZhbHVhdGlvbiBvZiBzY3JlZW4gZ2VvbWV0 cnkKKyAgICAgaWYgKHNjcmVlbi0+aGFuZGxlKCkpCistICAgICAgICBzY3JlZW4tPmRfZnVuYygp LT5zZXRQbGF0Zm9ybVNjcmVlbihzY3JlZW4tPmhhbmRsZSgpKTsgLy8gdXBkYXRlcyBnZW9tZXRy aWVzIGJhc2VkIG9uIHNjYWxlIGZhY3RvcgorKyAgICAgICAgc2NyZWVuLT5kX2Z1bmMoKS0+dXBk YXRlTG9naWNhbERwaSgpOworIH0KKyAKKyBRUG9pbnQgUUhpZ2hEcGlTY2FsaW5nOjptYXBQb3Np dGlvblRvTmF0aXZlKGNvbnN0IFFQb2ludCAmcG9zLCBjb25zdCBRUGxhdGZvcm1TY3JlZW4gKnBs YXRmb3JtU2NyZWVuKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2Vx dWVuY2UuY3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAKK2luZGV4 IGE3NWI4ZWY5MjAuLjRmMmQyOTQ3MzkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcWtleXNlcXVlbmNlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FrZXlzZXF1 ZW5jZS5jcHAKK0BAIC03MDEsNiArNzAxLDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgeworICAg ICB7IFF0OjpLZXlfVG91Y2hwYWRUb2dnbGUsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0 IiwgIlRvdWNocGFkIFRvZ2dsZSIpIH0sCisgICAgIHsgUXQ6OktleV9Ub3VjaHBhZE9uLCAgUVRf VFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJUb3VjaHBhZCBPbiIpIH0sCisgICAgIHsgUXQ6 OktleV9Ub3VjaHBhZE9mZiwgIFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiVG91Y2hw YWQgT2ZmIikgfSwKKysgICAgeyBRdDo6S2V5X1NoaWZ0LCAgUVRfVFJBTlNMQVRFX05PT1AoIlFT aG9ydGN1dCIsICJTaGlmdCIpIH0sCisrICAgIHsgUXQ6OktleV9Db250cm9sLCAgUVRfVFJBTlNM QVRFX05PT1AoIlFTaG9ydGN1dCIsICJDb250cm9sIikgfSwKKysgICAgeyBRdDo6S2V5X0FsdCwg IFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiQWx0IikgfSwKKysgICAgeyBRdDo6S2V5 X01ldGEsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIk1ldGEiKSB9LAorIAorIH07 Cisgc3RhdGljIFFfQ09OU1RFWFBSIGludCBudW1LZXlOYW1lcyA9IHNpemVvZiBrZXluYW1lIC8g c2l6ZW9mICprZXluYW1lOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxh dGZvcm1zZXJ2aWNlcy5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2Vydmlj ZXMuY3BwCitpbmRleCBmZGM2YTZjNGFhLi5hYzQ3Zjk4YzVkIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmNwcAorKysrIGIvcXRiYXNlL3NyYy9n dWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmNwcAorQEAgLTU1LDYgKzU1LDE5IEBAIFFUX0JF R0lOX05BTUVTUEFDRQorICAgICBcYnJpZWYgVGhlIFFQbGF0Zm9ybVNlcnZpY2VzIHByb3ZpZGVz IHRoZSBiYWNrZW5kIGZvciBkZXNrdG9wLXJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4KKyAqLworIAor Ky8qIQorKyAgICBcZW51bSBRUGxhdGZvcm1TZXJ2aWNlczo6Q2FwYWJpbGl0eQorKworKyAgICBD YXBhYmlsaXRpZXMgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIGEgc3BlY2lmaWMgcGxhdGZvcm0gc2Vy dmljZSdzIGF2YWlsYWJpbGl0eS4KKysKKysgICAgXHZhbHVlIENvbG9yUGlja2luZ0Zyb21TY3Jl ZW4gVGhlIHBsYXRmb3JtIG5hdGl2ZWx5IHN1cHBvcnRzIGNvbG9yIHBpY2tpbmcgZnJvbSBzY3Jl ZW4uCisrICAgIFRoaXMgY2FwYWJpbGl0eSBpbmRpY2F0ZXMgdGhhdCB0aGUgcGxhdGZvcm0gc3Vw cG9ydHMgIm9wYXF1ZSIgY29sb3IgcGlja2luZywgd2hlcmUgdGhlCisrICAgIHBsYXRmb3JtIGlt cGxlbWVudHMgYSBjb21wbGV0ZSB1c2VyIGV4cGVyaWVuY2UgZm9yIGNvbG9yIHBpY2tpbmcgYW5k IG91dHB1dHMgYSBjb2xvci4KKysgICAgVGhpcyBpcyBpbiBjb250cmFzdCB0byB0aGUgYXBwbGlj YXRpb24gaW1wbGVtZW50aW5nIHRoZSBjb2xvciBwaWNraW5nIHVzZXIgZXhwZXJpZW5jZQorKyAg ICAodGFraW5nIGNhcmUgb2Ygc2hvd2luZyBhIGNyb3NzIGhhaXIsIGluc3RydWN0aW5nIHRoZSBw bGF0Zm9ybSBpbnRlZ3JhdGlvbiB0byBvYnRhaW4KKysgICAgdGhlIGNvbG9yIGF0IGEgZ2l2ZW4g cGl4ZWwsIGV0Yy4pLiBUaGUgcmVsYXRlZCBzZXJ2aWNlIGZ1bmN0aW9uIGlzIHBpY2tDb2xvcigp LgorKyAqLworKworIFFQbGF0Zm9ybVNlcnZpY2VzOjpRUGxhdGZvcm1TZXJ2aWNlcygpCisgeyB9 CisgCitAQCAtODUsNSArOTgsMTYgQEAgUUJ5dGVBcnJheSBRUGxhdGZvcm1TZXJ2aWNlczo6ZGVz a3RvcEVudmlyb25tZW50KCkgY29uc3QKKyAgICAgcmV0dXJuIFFCeXRlQXJyYXkoIlVOS05PV04i KTsKKyB9CisgCisrUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpRUGxhdGZvcm1TZXJ2aWNl czo6Y29sb3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50KQorK3sKKysgICAgUV9VTlVTRUQocGFyZW50 KTsKKysgICAgcmV0dXJuIG51bGxwdHI7CisrfQorKworK2Jvb2wgUVBsYXRmb3JtU2VydmljZXM6 Omhhc0NhcGFiaWxpdHkoQ2FwYWJpbGl0eSBjYXBhYmlsaXR5KSBjb25zdAorK3sKKysgICAgUV9V TlVTRUQoY2FwYWJpbGl0eSkKKysgICAgcmV0dXJuIGZhbHNlOworK30KKyAKKyBRVF9FTkRfTkFN RVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZp Y2VzLmggYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuaAoraW5kZXgg NWRlOTZjZmE3ZC4uYThiMmE0Y2U3MSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5l bC9xcGxhdGZvcm1zZXJ2aWNlcy5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRm b3Jtc2VydmljZXMuaAorQEAgLTUwLDE2ICs1MCwzMiBAQAorIC8vCisgCisgI2luY2x1ZGUgPFF0 R3VpL3F0Z3VpZ2xvYmFsLmg+CisrI2luY2x1ZGUgPFF0Q29yZS9xb2JqZWN0Lmg+CisgCisgUVRf QkVHSU5fTkFNRVNQQUNFCisgCisgY2xhc3MgUVVybDsKKytjbGFzcyBRV2luZG93OworKworK2Ns YXNzIFFfR1VJX0VYUE9SVCBRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgOiBwdWJsaWMgUU9i amVjdAorK3sKKysgICAgUV9PQkpFQ1QKKytwdWJsaWM6CisrICAgIHVzaW5nIFFPYmplY3Q6OlFP YmplY3Q7CisrICAgIHZpcnR1YWwgdm9pZCBwaWNrQ29sb3IoKSA9IDA7CisrUV9TSUdOQUxTOgor KyAgICB2b2lkIGNvbG9yUGlja2VkKGNvbnN0IFFDb2xvciAmY29sb3IpOworK307CisgCisgY2xh c3MgUV9HVUlfRVhQT1JUIFFQbGF0Zm9ybVNlcnZpY2VzCisgeworIHB1YmxpYzoKKyAgICAgUV9E SVNBQkxFX0NPUFlfTU9WRShRUGxhdGZvcm1TZXJ2aWNlcykKKyAKKysgICAgZW51bSBDYXBhYmls aXR5IHsKKysgICAgICAgIENvbG9yUGlja2luZywKKysgICAgfTsKKysKKyAgICAgUVBsYXRmb3Jt U2VydmljZXMoKTsKKyAgICAgdmlydHVhbCB+UVBsYXRmb3JtU2VydmljZXMoKSB7IH0KKyAKK0BA IC02Nyw2ICs4MywxMCBAQCBwdWJsaWM6CisgICAgIHZpcnR1YWwgYm9vbCBvcGVuRG9jdW1lbnQo Y29uc3QgUVVybCAmdXJsKTsKKyAKKyAgICAgdmlydHVhbCBRQnl0ZUFycmF5IGRlc2t0b3BFbnZp cm9ubWVudCgpIGNvbnN0OworKworKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ2FwYWJpbGl0eShDYXBh YmlsaXR5IGNhcGFiaWxpdHkpIGNvbnN0OworKworKyAgICB2aXJ0dWFsIFFQbGF0Zm9ybVNlcnZp Y2VDb2xvclBpY2tlciAqY29sb3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50ID0gbnVsbHB0cik7Cisg fTsKKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2Vy bmVsL3FwbGF0Zm9ybXRoZW1lLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10 aGVtZS5jcHAKK2luZGV4IDcxNTIxYzAzMzkuLjIzMjU4NzMyNDUgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1 aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuY3BwCitAQCAtMTYzLDYgKzE2Myw4IEBAIFFUX0JFR0lO X05BTUVTUEFDRQorIAorICAgICBcdmFsdWUgU2hvd1Nob3J0Y3V0c0luQ29udGV4dE1lbnVzIChi b29sKSBXaGV0aGVyIHRvIGRpc3BsYXkgc2hvcnRjdXQga2V5IHNlcXVlbmNlcyBpbiBjb250ZXh0 IG1lbnVzLgorIAorKyAgICBcdmFsdWUgQnV0dG9uUHJlc3NLZXlzIChRTGlzdDxRdDo6S2V5Pikg QSBsaXN0IG9mIGtleXMgdGhhdCBjYW4gYmUgdXNlZCB0byBwcmVzcyBidXR0b25zIHZpYSBrZXli b2FyZCBpbnB1dC4KKysKKyAgICAgXHNhIHRoZW1lSGludCgpLCBRU3R5bGU6OnBpeGVsTWV0cmlj KCkKKyAqLworIAorQEAgLTU2Myw2ICs1NjUsOCBAQCBRVmFyaWFudCBRUGxhdGZvcm1UaGVtZTo6 ZGVmYXVsdFRoZW1lSGludChUaGVtZUhpbnQgaGludCkKKyAgICAgICAgIH0KKyAgICAgY2FzZSBN b3VzZVF1aWNrU2VsZWN0aW9uVGhyZXNob2xkOgorICAgICAgICAgcmV0dXJuIFFWYXJpYW50KDEw KTsKKysgICAgY2FzZSBCdXR0b25QcmVzc0tleXM6CisrICAgICAgICByZXR1cm4gUVZhcmlhbnQ6 OmZyb21WYWx1ZShRTGlzdDxRdDo6S2V5Pih7IFF0OjpLZXlfU3BhY2UsIFF0OjpLZXlfU2VsZWN0 IH0pKTsKKyAgICAgfQorICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKyB9CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmggYi9xdGJhc2Uvc3JjL2d1aS9r ZXJuZWwvcXBsYXRmb3JtdGhlbWUuaAoraW5kZXggMzE4NWZjNDU0MS4uN2U2YzlkNTc0MCAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5oCisrKysgYi9x dGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuaAorQEAgLTEyMCw3ICsxMjAsOCBA QCBwdWJsaWM6CisgICAgICAgICBUb3VjaERvdWJsZVRhcERpc3RhbmNlLAorICAgICAgICAgU2hv d1Nob3J0Y3V0c0luQ29udGV4dE1lbnVzLAorICAgICAgICAgSWNvbkZhbGxiYWNrU2VhcmNoUGF0 aHMsCistICAgICAgICBNb3VzZVF1aWNrU2VsZWN0aW9uVGhyZXNob2xkCisrICAgICAgICBNb3Vz ZVF1aWNrU2VsZWN0aW9uVGhyZXNob2xkLAorKyAgICAgICAgQnV0dG9uUHJlc3NLZXlzCisgICAg IH07CisgCisgICAgIGVudW0gRGlhbG9nVHlwZSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9n dWkva2VybmVsL3FzY3JlZW4uY3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW4uY3Bw CitpbmRleCA4ZTBlYjM1MTE2Li41ZDE3MmE1OGRkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9n dWkva2VybmVsL3FzY3JlZW4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVl bi5jcHAKK0BAIC03Nyw2ICs3NywxMiBAQCBRU2NyZWVuOjpRU2NyZWVuKFFQbGF0Zm9ybVNjcmVl biAqc2NyZWVuKQorICAgICBkLT5zZXRQbGF0Zm9ybVNjcmVlbihzY3JlZW4pOworIH0KKyAKKyt2 b2lkIFFTY3JlZW5Qcml2YXRlOjp1cGRhdGVMb2dpY2FsRHBpKCkKKyt7CisrICAgIGxvZ2ljYWxE cGkgPSBRUGxhdGZvcm1TY3JlZW46Om92ZXJyaWRlRHBpKHBsYXRmb3JtU2NyZWVuLT5sb2dpY2Fs RHBpKCkpOworKyAgICB1cGRhdGVHZW9tZXRyaWVzV2l0aFNpZ25hbHMoKTsgLy8gdXBkYXRlcyBn ZW9tZXRyaWVzIGJhc2VkIG9uIHNjYWxlIGZhY3RvcgorK30KKysKKyB2b2lkIFFTY3JlZW5Qcml2 YXRlOjp1cGRhdGVHZW9tZXRyaWVzV2l0aFNpZ25hbHMoKQorIHsKKyAgICAgY29uc3QgUVJlY3Qg b2xkR2VvbWV0cnkgPSBnZW9tZXRyeTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcXNjcmVlbl9wLmggYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmgKK2luZGV4 IDdkYTU0MmMyNWUuLmU1MGZjMzE5MGIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcXNjcmVlbl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaAor QEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgorICAgICAgICAgZ2VvbWV0cnkgPSBwbGF0Zm9ybVNj cmVlbi0+ZGV2aWNlSW5kZXBlbmRlbnRHZW9tZXRyeSgpOworICAgICAgICAgYXZhaWxhYmxlR2Vv bWV0cnkgPSBRSGlnaERwaTo6ZnJvbU5hdGl2ZShwbGF0Zm9ybVNjcmVlbi0+YXZhaWxhYmxlR2Vv bWV0cnkoKSwgUUhpZ2hEcGlTY2FsaW5nOjpmYWN0b3IocGxhdGZvcm1TY3JlZW4pLCBnZW9tZXRy eS50b3BMZWZ0KCkpOworICAgICB9CisrICAgIHZvaWQgdXBkYXRlTG9naWNhbERwaSgpOworIAor ICAgICB2b2lkIHVwZGF0ZVByaW1hcnlPcmllbnRhdGlvbigpOworICAgICB2b2lkIHVwZGF0ZUdl b21ldHJpZXNXaXRoU2lnbmFscygpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50 aW5nL3FibGVuZGZ1bmN0aW9uc19wLmggYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxlbmRm dW5jdGlvbnNfcC5oCitpbmRleCAwODBkYTk4ZWM0Li42OTk3ZDYyYjNjIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWJsZW5kZnVuY3Rpb25zX3AuaAorKysrIGIvcXRiYXNl L3NyYy9ndWkvcGFpbnRpbmcvcWJsZW5kZnVuY3Rpb25zX3AuaAorQEAgLTI0NiwyNSArMjQ2LDMy IEBAIHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywg aW50IGRicGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkdWR4LCBp bnQgZHZkeCwgaW50IGR1ZHksIGludCBkdmR5LCBpbnQgdTAsIGludCB2MCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQmxlbmRlciBibGVuZGVyKQorIHsKKy0gICAgaW50IGZy b21ZID0gcU1heChxUm91bmQodG9wWSksIGNsaXAudG9wKCkpOworLSAgICBpbnQgdG9ZID0gcU1p bihxUm91bmQoYm90dG9tWSksIGNsaXAudG9wKCkgKyBjbGlwLmhlaWdodCgpKTsKKysgICAgcWlu dDY0IGZyb21ZID0gcU1heChxUm91bmQodG9wWSksIGNsaXAudG9wKCkpOworKyAgICBxaW50NjQg dG9ZID0gcU1pbihxUm91bmQoYm90dG9tWSksIGNsaXAudG9wKCkgKyBjbGlwLmhlaWdodCgpKTsK KyAgICAgaWYgKGZyb21ZID49IHRvWSkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgcXJlYWwg bGVmdFNsb3BlID0gKGJvdHRvbUxlZnQueCAtIHRvcExlZnQueCkgLyAoYm90dG9tTGVmdC55IC0g dG9wTGVmdC55KTsKKyAgICAgcXJlYWwgcmlnaHRTbG9wZSA9IChib3R0b21SaWdodC54IC0gdG9w UmlnaHQueCkgLyAoYm90dG9tUmlnaHQueSAtIHRvcFJpZ2h0LnkpOworLSAgICBpbnQgZHhfbCA9 IGludChsZWZ0U2xvcGUgKiAweDEwMDAwKTsKKy0gICAgaW50IGR4X3IgPSBpbnQocmlnaHRTbG9w ZSAqIDB4MTAwMDApOworLSAgICBpbnQgeF9sID0gaW50KCh0b3BMZWZ0LnggKyAocXJlYWwoMC41 KSArIGZyb21ZIC0gdG9wTGVmdC55KSAqIGxlZnRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgxMDAw MCk7CistICAgIGludCB4X3IgPSBpbnQoKHRvcFJpZ2h0LnggKyAocXJlYWwoMC41KSArIGZyb21Z IC0gdG9wUmlnaHQueSkgKiByaWdodFNsb3BlICsgcXJlYWwoMC41KSkgKiAweDEwMDAwKTsKKy0K Ky0gICAgaW50IGZyb21YLCB0b1gsIHgxLCB4MiwgdSwgdiwgaSwgaWk7CisrICAgIHFpbnQ2NCBk eF9sID0gcWludDY0KGxlZnRTbG9wZSAqIDB4MTAwMDApOworKyAgICBxaW50NjQgZHhfciA9IHFp bnQ2NChyaWdodFNsb3BlICogMHgxMDAwMCk7CisrICAgIHFpbnQ2NCB4X2wgPSBxaW50NjQoKHRv cExlZnQueCArIChxcmVhbCgwLjUpICsgZnJvbVkgLSB0b3BMZWZ0LnkpICogbGVmdFNsb3BlICsg cXJlYWwoMC41KSkgKiAweDEwMDAwKTsKKysgICAgcWludDY0IHhfciA9IHFpbnQ2NCgodG9wUmln aHQueCArIChxcmVhbCgwLjUpICsgZnJvbVkgLSB0b3BSaWdodC55KSAqIHJpZ2h0U2xvcGUgKyBx cmVhbCgwLjUpKSAqIDB4MTAwMDApOworKworKyAgICBxaW50NjQgc291cmNlUmVjdFRvcCA9IHFp bnQ2NChzb3VyY2VSZWN0LnRvcCgpKTsKKysgICAgcWludDY0IHNvdXJjZVJlY3RMZWZ0ID0gcWlu dDY0KHNvdXJjZVJlY3QubGVmdCgpKTsKKysgICAgcWludDY0IHNvdXJjZVJlY3RXaWR0aCA9IHFp bnQ2NChzb3VyY2VSZWN0LndpZHRoKCkpOworKyAgICBxaW50NjQgc291cmNlUmVjdEhlaWdodCA9 IHFpbnQ2NChzb3VyY2VSZWN0LmhlaWdodCgpKTsKKysgICAgcWludDY0IGNsaXBMZWZ0ID0gcWlu dDY0KGNsaXAubGVmdCgpKTsKKysgICAgcWludDY0IGNsaXBXaWR0aCA9IHFpbnQ2NChjbGlwLndp ZHRoKCkpOworKworKyAgICBxaW50NjQgZnJvbVgsIHRvWCwgeDEsIHgyLCB1LCB2LCBpLCBpaTsK KyAgICAgRGVzdFQgKmxpbmU7CistICAgIGZvciAoaW50IHkgPSBmcm9tWTsgeSA8IHRvWTsgKyt5 KSB7CisrICAgIGZvciAocWludDY0IHkgPSBmcm9tWTsgeSA8IHRvWTsgKyt5KSB7CisgICAgICAg ICBsaW5lID0gcmVpbnRlcnByZXRfY2FzdDxEZXN0VCAqPihyZWludGVycHJldF9jYXN0PHVjaGFy ICo+KGRlc3RQaXhlbHMpICsgeSAqIGRicGwpOworIAorLSAgICAgICAgZnJvbVggPSBxTWF4KHhf bCA+PiAxNiwgY2xpcC5sZWZ0KCkpOworLSAgICAgICAgdG9YID0gcU1pbih4X3IgPj4gMTYsIGNs aXAubGVmdCgpICsgY2xpcC53aWR0aCgpKTsKKysgICAgICAgIGZyb21YID0gcU1heCh4X2wgPj4g MTYsIGNsaXBMZWZ0KTsKKysgICAgICAgIHRvWCA9IHFNaW4oeF9yID4+IDE2LCBjbGlwTGVmdCAr IGNsaXBXaWR0aCk7CisgICAgICAgICBpZiAoZnJvbVggPCB0b1gpIHsKKyAgICAgICAgICAgICAv LyBCZWNhdXNlIG9mIHJvdW5kaW5nLCB3ZSBjYW4gZ2V0IHNvdXJjZSBjb29yZGluYXRlcyBvdXRz aWRlIHRoZSBzb3VyY2UgaW1hZ2UuCisgICAgICAgICAgICAgLy8gQ2xhbXAgdGhlc2UgY29vcmRp bmF0ZXMgdG8gdGhlIHNvdXJjZSByZWN0IHRvIGF2b2lkIHNlZ21lbnRhdGlvbiBmYXVsdCBhbmQK K0BAIC0yNzUsMTAgKzI4MiwxMCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUo RGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBsLAorICAgICAgICAgICAgIHUgPSB4MSAqIGR1ZHgg KyB5ICogZHVkeSArIHUwOworICAgICAgICAgICAgIHYgPSB4MSAqIGR2ZHggKyB5ICogZHZkeSAr IHYwOworICAgICAgICAgICAgIGZvciAoOyB4MSA8IHRvWDsgKyt4MSkgeworLSAgICAgICAgICAg ICAgICBpbnQgdXUgPSB1ID4+IDE2OworLSAgICAgICAgICAgICAgICBpbnQgdnYgPSB2ID4+IDE2 OworLSAgICAgICAgICAgICAgICBpZiAodXUgPj0gc291cmNlUmVjdC5sZWZ0KCkgJiYgdXUgPCBz b3VyY2VSZWN0LmxlZnQoKSArIHNvdXJjZVJlY3Qud2lkdGgoKQorLSAgICAgICAgICAgICAgICAg ICAgJiYgdnYgPj0gc291cmNlUmVjdC50b3AoKSAmJiB2diA8IHNvdXJjZVJlY3QudG9wKCkgKyBz b3VyY2VSZWN0LmhlaWdodCgpKSB7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB1dSA9IHUgPj4g MTY7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB2diA9IHYgPj4gMTY7CisrICAgICAgICAgICAg ICAgIGlmICh1dSA+PSBzb3VyY2VSZWN0TGVmdCAmJiB1dSA8IHNvdXJjZVJlY3RMZWZ0ICsgc291 cmNlUmVjdFdpZHRoCisrICAgICAgICAgICAgICAgICAgICAmJiB2diA+PSBzb3VyY2VSZWN0VG9w ICYmIHZ2IDwgc291cmNlUmVjdFRvcCArIHNvdXJjZVJlY3RIZWlnaHQpIHsKKyAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIHUg Kz0gZHVkeDsKK0BAIC0yOTAsMTAgKzI5NywxMCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9y YXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBsLAorICAgICAgICAgICAgIHUgPSAo eDIgLSAxKSAqIGR1ZHggKyB5ICogZHVkeSArIHUwOworICAgICAgICAgICAgIHYgPSAoeDIgLSAx KSAqIGR2ZHggKyB5ICogZHZkeSArIHYwOworICAgICAgICAgICAgIGZvciAoOyB4MiA+IHgxOyAt LXgyKSB7CistICAgICAgICAgICAgICAgIGludCB1dSA9IHUgPj4gMTY7CistICAgICAgICAgICAg ICAgIGludCB2diA9IHYgPj4gMTY7CistICAgICAgICAgICAgICAgIGlmICh1dSA+PSBzb3VyY2VS ZWN0LmxlZnQoKSAmJiB1dSA8IHNvdXJjZVJlY3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0aCgp CistICAgICAgICAgICAgICAgICAgICAmJiB2diA+PSBzb3VyY2VSZWN0LnRvcCgpICYmIHZ2IDwg c291cmNlUmVjdC50b3AoKSArIHNvdXJjZVJlY3QuaGVpZ2h0KCkpIHsKKysgICAgICAgICAgICAg ICAgcWludDY0IHV1ID0gdSA+PiAxNjsKKysgICAgICAgICAgICAgICAgcWludDY0IHZ2ID0gdiA+ PiAxNjsKKysgICAgICAgICAgICAgICAgaWYgKHV1ID49IHNvdXJjZVJlY3RMZWZ0ICYmIHV1IDwg c291cmNlUmVjdExlZnQgKyBzb3VyY2VSZWN0V2lkdGgKKysgICAgICAgICAgICAgICAgICAgICYm IHZ2ID49IHNvdXJjZVJlY3RUb3AgJiYgdnYgPCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhl aWdodCkgeworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgdSAtPSBkdWR4OworQEAgLTMwOCw4ICszMTUsOCBAQCB2b2lkIHF0 X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBsLAor ICAgICAgICAgICAgIC8vIEJlZ2lubmluZyBvZiB0aGUgc2NhbiBsaW5lLCB3aXRoIHBlci1waXhl bCBjaGVja3MuCisgICAgICAgICAgICAgaSA9IHgxIC0gZnJvbVg7CisgICAgICAgICAgICAgd2hp bGUgKGkpIHsKKy0gICAgICAgICAgICAgICAgaW50IHV1ID0gcUJvdW5kKHNvdXJjZVJlY3QubGVm dCgpLCB1ID4+IDE2LCBzb3VyY2VSZWN0LmxlZnQoKSArIHNvdXJjZVJlY3Qud2lkdGgoKSAtIDEp OworLSAgICAgICAgICAgICAgICBpbnQgdnYgPSBxQm91bmQoc291cmNlUmVjdC50b3AoKSwgdiA+ PiAxNiwgc291cmNlUmVjdC50b3AoKSArIHNvdXJjZVJlY3QuaGVpZ2h0KCkgLSAxKTsKKysgICAg ICAgICAgICAgICAgcWludDY0IHV1ID0gcUJvdW5kKHNvdXJjZVJlY3RMZWZ0LCB1ID4+IDE2LCBz b3VyY2VSZWN0TGVmdCArIHNvdXJjZVJlY3RXaWR0aCAtIDEpOworKyAgICAgICAgICAgICAgICBx aW50NjQgdnYgPSBxQm91bmQoc291cmNlUmVjdFRvcCwgdiA+PiAxNiwgc291cmNlUmVjdFRvcCAr IHNvdXJjZVJlY3RIZWlnaHQgLSAxKTsKKyAgICAgICAgICAgICAgICAgYmxlbmRlci53cml0ZShs aW5lLCByZWludGVycHJldF9jYXN0PGNvbnN0IFNyY1QgKj4ocmVpbnRlcnByZXRfY2FzdDxjb25z dCB1Y2hhciAqPihzcmNQaXhlbHMpICsgdnYgKiBzYnBsKVt1dV0pOworICAgICAgICAgICAgICAg ICB1ICs9IGR1ZHg7CisgICAgICAgICAgICAgICAgIHYgKz0gZHZkeDsKK0BAIC0zNDgsOCArMzU1 LDggQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1hZ2VfcmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxz LCBpbnQgZGJwbCwKKyAgICAgICAgICAgICAvLyBFbmQgb2YgdGhlIHNjYW4gbGluZSwgd2l0aCBw ZXItcGl4ZWwgY2hlY2tzLgorICAgICAgICAgICAgIGkgPSB0b1ggLSB4MjsKKyAgICAgICAgICAg ICB3aGlsZSAoaSkgeworLSAgICAgICAgICAgICAgICBpbnQgdXUgPSBxQm91bmQoc291cmNlUmVj dC5sZWZ0KCksIHUgPj4gMTYsIHNvdXJjZVJlY3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0aCgp IC0gMSk7CistICAgICAgICAgICAgICAgIGludCB2diA9IHFCb3VuZChzb3VyY2VSZWN0LnRvcCgp LCB2ID4+IDE2LCBzb3VyY2VSZWN0LnRvcCgpICsgc291cmNlUmVjdC5oZWlnaHQoKSAtIDEpOwor KyAgICAgICAgICAgICAgICBxaW50NjQgdXUgPSBxQm91bmQoc291cmNlUmVjdExlZnQsIHUgPj4g MTYsIHNvdXJjZVJlY3RMZWZ0ICsgc291cmNlUmVjdFdpZHRoIC0gMSk7CisrICAgICAgICAgICAg ICAgIHFpbnQ2NCB2diA9IHFCb3VuZChzb3VyY2VSZWN0VG9wLCB2ID4+IDE2LCBzb3VyY2VSZWN0 VG9wICsgc291cmNlUmVjdEhlaWdodCAtIDEpOworICAgICAgICAgICAgICAgICBibGVuZGVyLndy aXRlKGxpbmUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgU3JjVCAqPihyZWludGVycHJldF9jYXN0 PGNvbnN0IHVjaGFyICo+KHNyY1BpeGVscykgKyB2diAqIHNicGwpW3V1XSk7CisgICAgICAgICAg ICAgICAgIHUgKz0gZHVkeDsKKyAgICAgICAgICAgICAgICAgdiArPSBkdmR4OworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fjb2xvcnRyY2x1dF9wLmggYi9xdGJhc2Uvc3Jj L2d1aS9wYWludGluZy9xY29sb3J0cmNsdXRfcC5oCitpbmRleCA3NmE2YTYwODAzLi4yNGZkNTIy ZTZjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWNvbG9ydHJjbHV0X3Au aAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWNvbG9ydHJjbHV0X3AuaAorQEAgLTEx OCw2ICsxMTgsNyBAQCBwdWJsaWM6CisgICAgICAgICByZXR1cm4gUVJnYmE2NDo6ZnJvbVJnYmE2 NChyLCBnLCBiLCBxQWxwaGEocmdiMzIpICogMjU3KTsKKyAjZW5kaWYKKyAgICAgfQorKyAgICBR UmdiYTY0IHRvTGluZWFyNjQoUVJnYmE2NCkgY29uc3QgPSBkZWxldGU7CisgCisgICAgIFFSZ2Ig dG9MaW5lYXIoUVJnYiByZ2IzMikgY29uc3QKKyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvZ3VpL3BhaW50aW5nL3FkcmF3aGVscGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5n L3FkcmF3aGVscGVyLmNwcAoraW5kZXggYTYxNzkzNTA4YS4uNWJhMmQyNzdiNyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FkcmF3aGVscGVyLmNwcAorKysrIGIvcXRiYXNl L3NyYy9ndWkvcGFpbnRpbmcvcWRyYXdoZWxwZXIuY3BwCitAQCAtNjA5MSw3ICs2MDkxLDcgQEAg c3RhdGljIGlubGluZSB2b2lkIGFscGhhcmdiYmxlbmRfYXJnYjMyKHF1aW50MzIgKmRzdCwgdWlu dCBjb3ZlcmFnZSwgY29uc3QgUVJnYmEKKyBzdGF0aWMgaW5saW5lIHZvaWQgcmdiQmxlbmRQaXhl bChRUmdiYTY0ICZkc3QsIGludCBjb3ZlcmFnZSwgUVJnYmE2NCBzbGluZWFyLCBjb25zdCBRQ29s b3JUcmNMdXQgKmNvbG9yUHJvZmlsZSkKKyB7CisgICAgIC8vIERvIGEgZ2FtbWFjb3JyZWN0ZWQg UkdCIGFscGhhYmxlbmQuLi4KKy0gICAgY29uc3QgUVJnYmE2NCBkbGluZWFyID0gY29sb3JQcm9m aWxlID8gY29sb3JQcm9maWxlLT50b0xpbmVhcjY0KGRzdCkgOiBkc3Q7CisrICAgIGNvbnN0IFFS Z2JhNjQgZGxpbmVhciA9IGNvbG9yUHJvZmlsZSA/IGNvbG9yUHJvZmlsZS0+dG9MaW5lYXIoZHN0 KSA6IGRzdDsKKyAKKyAgICAgUVJnYmE2NCBibGVuZCA9IHJnYkJsZW5kKGRsaW5lYXIsIHNsaW5l YXIsIGNvdmVyYWdlKTsKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9x cGFpbnRlbmdpbmVfcmFzdGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVu Z2luZV9yYXN0ZXIuY3BwCitpbmRleCAyODM5MjNkZTUyLi5mMDhlYjljYmVlIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAKKysrKyBi L3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwCitAQCAtNTYw LDMxICs1NjAsNiBAQCB2b2lkIFFSYXN0ZXJQYWludEVuZ2luZTo6dXBkYXRlTWF0cml4KGNvbnN0 IFFUcmFuc2Zvcm0gJm1hdHJpeCkKKyAgICAgUVJhc3RlclBhaW50RW5naW5lU3RhdGUgKnMgPSBz dGF0ZSgpOworICAgICAvLyBGQUxDT046IGdldCByaWQgb2YgdGhpcyBsaW5lLCBzZWUgZHJhd0lt YWdlIGNhbGwgYmVsb3cuCisgICAgIHMtPm1hdHJpeCA9IG1hdHJpeDsKKy0gICAgUVRyYW5zZm9y bTo6VHJhbnNmb3JtYXRpb25UeXBlIHR4b3AgPSBzLT5tYXRyaXgudHlwZSgpOworLQorLSAgICBz d2l0Y2ggKHR4b3ApIHsKKy0KKy0gICAgY2FzZSBRVHJhbnNmb3JtOjpUeE5vbmU6CistICAgICAg ICBzLT5mbGFncy5pbnRfeGZvcm0gPSB0cnVlOworLSAgICAgICAgYnJlYWs7CistCistICAgIGNh c2UgUVRyYW5zZm9ybTo6VHhUcmFuc2xhdGU6CistICAgICAgICBzLT5mbGFncy5pbnRfeGZvcm0g PSBxcmVhbChpbnQocy0+bWF0cml4LmR4KCkpKSA9PSBzLT5tYXRyaXguZHgoKQorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmJiBxcmVhbChpbnQocy0+bWF0cml4LmR5KCkpKSA9PSBzLT5t YXRyaXguZHkoKTsKKy0gICAgICAgIGJyZWFrOworLQorLSAgICBjYXNlIFFUcmFuc2Zvcm06OlR4 U2NhbGU6CistICAgICAgICBzLT5mbGFncy5pbnRfeGZvcm0gPSBxcmVhbChpbnQocy0+bWF0cml4 LmR4KCkpKSA9PSBzLT5tYXRyaXguZHgoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAm JiBxcmVhbChpbnQocy0+bWF0cml4LmR5KCkpKSA9PSBzLT5tYXRyaXguZHkoKQorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmJiBxcmVhbChpbnQocy0+bWF0cml4Lm0xMSgpKSkgPT0gcy0+ bWF0cml4Lm0xMSgpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChz LT5tYXRyaXgubTIyKCkpKSA9PSBzLT5tYXRyaXgubTIyKCk7CistICAgICAgICBicmVhazsKKy0K Ky0gICAgZGVmYXVsdDogLy8gc2hlYXIgLyBwZXJzcGVjdGl2ZS4uLgorLSAgICAgICAgcy0+Zmxh Z3MuaW50X3hmb3JtID0gZmFsc2U7CistICAgICAgICBicmVhazsKKy0gICAgfQorLQorICAgICBz LT5mbGFncy50eF9ub3NoZWFyID0gcXRfc2NhbGVGb3JUcmFuc2Zvcm0ocy0+bWF0cml4LCAmcy0+ dHhzY2FsZSk7CisgCisgICAgIGVuc3VyZU91dGxpbmVNYXBwZXIoKTsKK0BAIC02MTcsNyArNTky LDYgQEAgUVJhc3RlclBhaW50RW5naW5lU3RhdGU6OlFSYXN0ZXJQYWludEVuZ2luZVN0YXRlKCkK KyAgICAgZmxhZ3MuYmlsaW5lYXIgPSBmYWxzZTsKKyAgICAgZmxhZ3MubGVnYWN5X3JvdW5kaW5n ID0gZmFsc2U7CisgICAgIGZsYWdzLmZhc3RfdGV4dCA9IHRydWU7CistICAgIGZsYWdzLmludF94 Zm9ybSA9IHRydWU7CisgICAgIGZsYWdzLnR4X25vc2hlYXIgPSB0cnVlOworICAgICBmbGFncy5m YXN0X2ltYWdlcyA9IHRydWU7CisgCitAQCAtMTc5Myw3ICsxNzY3LDcgQEAgdm9pZCBRUmFzdGVy UGFpbnRFbmdpbmU6OmZpbGwoY29uc3QgUVZlY3RvclBhdGggJnBhdGgsIGNvbnN0IFFCcnVzaCAm YnJ1c2gpCisgICAgIFFSZWN0RiBjcFJlY3QgPSBwYXRoLmNvbnRyb2xQb2ludFJlY3QoKTsKKyAg ICAgY29uc3QgUVJlY3RGIHBhdGhEZXZpY2VSZWN0ID0gcy0+bWF0cml4Lm1hcFJlY3QoY3BSZWN0 KTsKKyAgICAgLy8gU2tpcCBwYXRocyB0aGF0IGJ5IGNvbnNlcnZhdGl2ZSBlc3RpbWF0ZXMgYXJl IGNvbXBsZXRlbHkgb3V0c2lkZSB0aGUgcGFpbnQgZGV2aWNlLgorLSAgICBpZiAoIXBhdGhEZXZp Y2VSZWN0LmludGVyc2VjdHMoUVJlY3RGKGQtPmRldmljZVJlY3QpKSkKKysgICAgaWYgKCFwYXRo RGV2aWNlUmVjdC5pbnRlcnNlY3RzKFFSZWN0RihkLT5kZXZpY2VSZWN0KSkgfHwgIXBhdGhEZXZp Y2VSZWN0LmlzVmFsaWQoKSkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgUHJvY2Vzc1NwYW5z IGJsZW5kID0gZC0+Z2V0QnJ1c2hGdW5jKHBhdGhEZXZpY2VSZWN0LCAmcy0+YnJ1c2hEYXRhKTsK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVy X3AuaCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXJfcC5oCitp bmRleCAwODlhYWRjM2Y3Li5iZjczNjNkNWFhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlcl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3Bh aW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXJfcC5oCitAQCAtMTExLDcgKzExMSw2IEBAIHB1Ymxp YzoKKyAgICAgICAgIHVpbnQgYmlsaW5lYXIgOiAxOworICAgICAgICAgdWludCBsZWdhY3lfcm91 bmRpbmcgOiAxOworICAgICAgICAgdWludCBmYXN0X3RleHQgOiAxOworLSAgICAgICAgdWludCBp bnRfeGZvcm0gOiAxOworICAgICAgICAgdWludCB0eF9ub3NoZWFyIDogMTsKKyAgICAgICAgIHVp bnQgZmFzdF9pbWFnZXMgOiAxOworICAgICB9OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3FwYWludGVycGF0aC5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFp bnRlcnBhdGguY3BwCitpbmRleCBmOTU0NGEzMjQxLi5kODBmYWZlYWYxIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZXJwYXRoLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9ndWkvcGFpbnRpbmcvcXBhaW50ZXJwYXRoLmNwcAorQEAgLTEyNTMsNyArMTI1Myw3IEBAIHZv aWQgUVBhaW50ZXJQYXRoOjphZGRUZXh0KGNvbnN0IFFQb2ludEYgJnBvaW50LCBjb25zdCBRRm9u dCAmZiwgY29uc3QgUVN0cmluZyAmCisgCisgICAgICAgICBpZiAoc2kuYW5hbHlzaXMuZmxhZ3Mg PCBRU2NyaXB0QW5hbHlzaXM6OlRhYk9yT2JqZWN0KSB7CisgICAgICAgICAgICAgUUdseXBoTGF5 b3V0IGdseXBocyA9IGVuZy0+c2hhcGVkR2x5cGhzKCZzaSk7CistICAgICAgICAgICAgUUZvbnRF bmdpbmUgKmZlID0gZi5kLT5lbmdpbmVGb3JTY3JpcHQoc2kuYW5hbHlzaXMuc2NyaXB0KTsKKysg ICAgICAgICAgICBRRm9udEVuZ2luZSAqZmUgPSBlbmctPmZvbnRFbmdpbmUoc2kpOworICAgICAg ICAgICAgIFFfQVNTRVJUKGZlKTsKKyAgICAgICAgICAgICBmZS0+YWRkT3V0bGluZVRvUGF0aCh4 LCB5LCBnbHlwaHMsIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ku YW5hbHlzaXMuYmlkaUxldmVsICUgMgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50 aW5nL3FwYXRoY2xpcHBlcl9wLmggYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBw ZXJfcC5oCitpbmRleCA5NDQ0YTg3YjcxLi4xOGY2NGM1ZThjIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhjbGlwcGVyX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcXBhdGhjbGlwcGVyX3AuaAorQEAgLTE1Niw3ICsxNTYsNyBAQCBwdWJsaWM6Cisg ICAgIGludCB2ZXJ0ZXgoRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3Q7CisgCisgcHJpdmF0ZToK Ky0gICAgaW50IG1fbmV4dFsyXVsyXTsKKysgICAgaW50IG1fbmV4dFsyXVsyXSA9IHsgeyAtMSwg LTEgfSwgeyAtMSwgLTEgfSB9OworIH07CisgCisgY2xhc3MgUVBhdGhTZWdtZW50cworQEAgLTI5 NiwxMCArMjk2LDYgQEAgaW5saW5lIFFQYXRoRWRnZTo6UVBhdGhFZGdlKGludCBhLCBpbnQgYikK KyAgICAgLCBhbmdsZSgwKQorICAgICAsIGludkFuZ2xlKDApCisgeworLSAgICBtX25leHRbMF1b MF0gPSAtMTsKKy0gICAgbV9uZXh0WzFdWzBdID0gLTE7CistICAgIG1fbmV4dFswXVswXSA9IC0x OworLSAgICBtX25leHRbMV1bMF0gPSAtMTsKKyB9CisgCisgaW5saW5lIGludCBRUGF0aEVkZ2U6 Om5leHQoVHJhdmVyc2FsIHRyYXZlcnNhbCwgRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGRmLmNwcCBiL3F0YmFzZS9zcmMv Z3VpL3BhaW50aW5nL3FwZGYuY3BwCitpbmRleCAzMDY2NzQ0ZjFiLi4yYzhkM2MzYjUzIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAKKysrKyBiL3F0YmFzZS9z cmMvZ3VpL3BhaW50aW5nL3FwZGYuY3BwCitAQCAtMjc2MCw2ICsyNzYwLDggQEAgaW50IFFQZGZF bmdpbmVQcml2YXRlOjphZGRCcnVzaFBhdHRlcm4oY29uc3QgUVRyYW5zZm9ybSAmbSwgYm9vbCAq c3BlY2lmeUNvbG9yLAorICAgICAgICAgcmV0dXJuIGdyYWRpZW50QnJ1c2goYnJ1c2gsIG1hdHJp eCwgZ1N0YXRlT2JqZWN0KTsKKyAgICAgfQorIAorKyAgICBtYXRyaXggPSBicnVzaC50cmFuc2Zv cm0oKSAqIG1hdHJpeDsKKysKKyAgICAgaWYgKCghYnJ1c2guaXNPcGFxdWUoKSAmJiBicnVzaC5z dHlsZSgpIDwgUXQ6OkxpbmVhckdyYWRpZW50UGF0dGVybikgfHwgb3BhY2l0eSAhPSAxLjApCisg ICAgICAgICAqZ1N0YXRlT2JqZWN0ID0gYWRkQ29uc3RhbnRBbHBoYU9iamVjdChxUm91bmQoYnJ1 c2guY29sb3IoKS5hbHBoYSgpICogb3BhY2l0eSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBxUm91bmQocGVuLmNvbG9yKCkuYWxwaGEoKSAqIG9wYWNp dHkpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xc3Ryb2tlci5jcHAg Yi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xc3Ryb2tlci5jcHAKK2luZGV4IGNiNWQzOTVlODAu LjNiNjM1N2E4OTMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xc3Ryb2tl ci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FzdHJva2VyLmNwcAorQEAgLTEx ODIsNiArMTE4Miw3IEBAIHZvaWQgUURhc2hTdHJva2VyOjpwcm9jZXNzQ3VycmVudFN1YnBhdGgo KQorICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGVudGlyZSBsaW5lIHNob3VsZCBiZSBjbGlwcGVk IGF3YXkgb3Igc2ltcGxpZmllZAorICAgICAgICAgYm9vbCBjbGlwSXQgPSBjbGlwcGluZyAmJiAh bGluZUludGVyc2VjdHNSZWN0KHByZXYsIGUsIGNsaXBfdGwsIGNsaXBfYnIpOworICAgICAgICAg Ym9vbCBza2lwRGFzaGluZyA9IGVsZW4gKiBpbnZTdW1MZW5ndGggPiByZXBldGl0aW9uTGltaXQo KTsKKysgICAgICAgIGludCBtYXhEYXNoZXMgPSBkYXNoQ291bnQ7CisgICAgICAgICBpZiAoc2tp cERhc2hpbmcgfHwgY2xpcEl0KSB7CisgICAgICAgICAgICAgLy8gQ3V0IGF3YXkgZnVsbCBkYXNo IHNlcXVlbmNlcy4KKyAgICAgICAgICAgICBlbGVuIC09IHN0ZDo6Zmxvb3IoZWxlbiAqIGludlN1 bUxlbmd0aCkgKiBzdW1MZW5ndGg7CitAQCAtMTE5Niw3ICsxMTk3LDcgQEAgdm9pZCBRRGFzaFN0 cm9rZXI6OnByb2Nlc3NDdXJyZW50U3VicGF0aCgpCisgICAgICAgICAgICAgICAgICAgICBwb3Mg PSBlc3RvcDsgLy8gbW92ZSBwb3MgdG8gbmV4dCBwYXRoIGVsZW1lbnQKKyAgICAgICAgICAgICAg ICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBEYXNoIGlz IG9uIHRoaXMgbGluZQorLSAgICAgICAgICAgICAgICAgICAgcG9zID0gZHBvcyArIGVzdGFydDsK KysgICAgICAgICAgICAgICAgICAgIHBvcyA9IC0tbWF4RGFzaGVzID4gMCA/IGRwb3MgKyBlc3Rh cnQgOiBlc3RvcDsKKyAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSBwb3MgPj0gZXN0b3A7Cisg ICAgICAgICAgICAgICAgICAgICBpZiAoKytpZGFzaCA+PSBkYXNoQ291bnQpCisgICAgICAgICAg ICAgICAgICAgICAgICAgaWRhc2ggPSAwOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3Bh aW50aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24gYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xdF9h dHRyaWJ1dGlvbi5qc29uCitpbmRleCA3YjE2ZThjMjExLi4wZTg3ZDMwYWEyIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXRfYXR0cmlidXRpb24uanNvbgorKysrIGIvcXRi YXNlL3NyYy9ndWkvcGFpbnRpbmcvcXRfYXR0cmlidXRpb24uanNvbgorQEAgLTEwLDcgKzEwLDcg QEAKKyAgICAgICAgICJIb21lcGFnZSI6ICJodHRwOi8vd3d3LmZyZWV0eXBlLm9yZyIsCisgICAg ICAgICAiTGljZW5zZSI6ICJGcmVldHlwZSBQcm9qZWN0IExpY2Vuc2Ugb3IgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgdjIuMCBvbmx5IiwKKyAgICAgICAgICJMaWNlbnNlSWQiOiAiRlRMIG9y IEdQTC0yLjAiLAorLSAgICAgICAgIkxpY2Vuc2VGaWxlIjogIi4uLy4uLzNyZHBhcnR5L2ZyZWV0 eXBlL2RvY3MvTElDRU5TRS5UWFQiLAorKyAgICAgICAgIkxpY2Vuc2VGaWxlIjogIi4uLy4uLzNy ZHBhcnR5L2ZyZWV0eXBlL0xJQ0VOU0UuVFhUIiwKKyAgICAgICAgICJDb3B5cmlnaHQiOiAiQ29w eXJpZ2h0IDIwMDAtMjAxNiBieSBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2Vy bmVyIExlbWJlcmcuIgorICAgICB9LAorICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9n dWkvcmhpL3FzaGFkZXJfcF9wLmggYi9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3AuaAor aW5kZXggZWM5ZDI1OTcxZi4uNGE1YTdhNmQ1MSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3Vp L3JoaS9xc2hhZGVyX3BfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3Au aAorQEAgLTY4LDEzICs2OCwxMyBAQCBzdHJ1Y3QgUV9HVUlfRVhQT1JUIFFTaGFkZXJQcml2YXRl CisgICAgIHsKKyAgICAgfQorIAorLSAgICBRU2hhZGVyUHJpdmF0ZShjb25zdCBRU2hhZGVyUHJp dmF0ZSAqb3RoZXIpCisrICAgIFFTaGFkZXJQcml2YXRlKGNvbnN0IFFTaGFkZXJQcml2YXRlICZv dGhlcikKKyAgICAgICAgIDogcmVmKDEpLAorLSAgICAgICAgICBxc2JWZXJzaW9uKG90aGVyLT5x c2JWZXJzaW9uKSwKKy0gICAgICAgICAgc3RhZ2Uob3RoZXItPnN0YWdlKSwKKy0gICAgICAgICAg ZGVzYyhvdGhlci0+ZGVzYyksCistICAgICAgICAgIHNoYWRlcnMob3RoZXItPnNoYWRlcnMpLAor LSAgICAgICAgICBiaW5kaW5ncyhvdGhlci0+YmluZGluZ3MpCisrICAgICAgICAgIHFzYlZlcnNp b24ob3RoZXIucXNiVmVyc2lvbiksCisrICAgICAgICAgIHN0YWdlKG90aGVyLnN0YWdlKSwKKysg ICAgICAgICAgZGVzYyhvdGhlci5kZXNjKSwKKysgICAgICAgICAgc2hhZGVycyhvdGhlci5zaGFk ZXJzKSwKKysgICAgICAgICAgYmluZGluZ3Mob3RoZXIuYmluZGluZ3MpCisgICAgIHsKKyAgICAg fQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyZGVzY3JpcHRpb25f cF9wLmggYi9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oCitpbmRl eCBlYzJiMGI2YjRjLi4zZGEzM2E4YTJiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcmhp L3FzaGFkZXJkZXNjcmlwdGlvbl9wX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFk ZXJkZXNjcmlwdGlvbl9wX3AuaAorQEAgLTYzLDE2ICs2MywxNiBAQCBzdHJ1Y3QgUV9HVUlfRVhQ T1JUIFFTaGFkZXJEZXNjcmlwdGlvblByaXZhdGUKKyAgICAgICAgIGxvY2FsU2l6ZVswXSA9IGxv Y2FsU2l6ZVsxXSA9IGxvY2FsU2l6ZVsyXSA9IDA7CisgICAgIH0KKyAKKy0gICAgUVNoYWRlckRl c2NyaXB0aW9uUHJpdmF0ZShjb25zdCBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlICpvdGhlcikK KysgICAgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0ZShjb25zdCBRU2hhZGVyRGVzY3JpcHRpb25Q cml2YXRlICZvdGhlcikKKyAgICAgICAgIDogcmVmKDEpLAorLSAgICAgICAgICBpblZhcnMob3Ro ZXItPmluVmFycyksCistICAgICAgICAgIG91dFZhcnMob3RoZXItPm91dFZhcnMpLAorLSAgICAg ICAgICB1bmlmb3JtQmxvY2tzKG90aGVyLT51bmlmb3JtQmxvY2tzKSwKKy0gICAgICAgICAgcHVz aENvbnN0YW50QmxvY2tzKG90aGVyLT5wdXNoQ29uc3RhbnRCbG9ja3MpLAorLSAgICAgICAgICBz dG9yYWdlQmxvY2tzKG90aGVyLT5zdG9yYWdlQmxvY2tzKSwKKy0gICAgICAgICAgY29tYmluZWRJ bWFnZVNhbXBsZXJzKG90aGVyLT5jb21iaW5lZEltYWdlU2FtcGxlcnMpLAorLSAgICAgICAgICBz dG9yYWdlSW1hZ2VzKG90aGVyLT5zdG9yYWdlSW1hZ2VzKSwKKy0gICAgICAgICAgbG9jYWxTaXpl KG90aGVyLT5sb2NhbFNpemUpCisrICAgICAgICAgIGluVmFycyhvdGhlci5pblZhcnMpLAorKyAg ICAgICAgICBvdXRWYXJzKG90aGVyLm91dFZhcnMpLAorKyAgICAgICAgICB1bmlmb3JtQmxvY2tz KG90aGVyLnVuaWZvcm1CbG9ja3MpLAorKyAgICAgICAgICBwdXNoQ29uc3RhbnRCbG9ja3Mob3Ro ZXIucHVzaENvbnN0YW50QmxvY2tzKSwKKysgICAgICAgICAgc3RvcmFnZUJsb2NrcyhvdGhlci5z dG9yYWdlQmxvY2tzKSwKKysgICAgICAgICAgY29tYmluZWRJbWFnZVNhbXBsZXJzKG90aGVyLmNv bWJpbmVkSW1hZ2VTYW1wbGVycyksCisrICAgICAgICAgIHN0b3JhZ2VJbWFnZXMob3RoZXIuc3Rv cmFnZUltYWdlcyksCisrICAgICAgICAgIGxvY2FsU2l6ZShvdGhlci5sb2NhbFNpemUpCisgICAg IHsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcWZvbnRkYXRh YmFzZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3BwCitpbmRleCBh NjU3YThjNTE2Li40ZmMwMTAwOTU4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9x Zm9udGRhdGFiYXNlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNl LmNwcAorQEAgLTk4Myw3ICs5ODMsNyBAQCBRRm9udEVuZ2luZSAqbG9hZFNpbmdsZUVuZ2luZShp bnQgc2NyaXB0LAorICAgICAgICAgaWYgKHN0eWxlLT5rZXkuc3RyZXRjaCAhPSAwICYmIHJlcXVl c3Quc3RyZXRjaCAhPSAwCisgICAgICAgICAgICAgJiYgKHJlcXVlc3Quc3R5bGVOYW1lLmlzRW1w dHkoKSB8fCByZXF1ZXN0LnN0eWxlTmFtZSAhPSBzdHlsZS0+c3R5bGVOYW1lKSkgeworICAgICAg ICAgICAgIGRlZi5zdHJldGNoID0gKHJlcXVlc3Quc3RyZXRjaCAqIDEwMCArIHN0eWxlLT5rZXku c3RyZXRjaCAvIDIpIC8gc3R5bGUtPmtleS5zdHJldGNoOworLSAgICAgICAgfSBlbHNlIHsKKysg ICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdC5zdHJldGNoID09IFFGb250OjpBbnlTdHJldGNoKSB7 CisgICAgICAgICAgICAgZGVmLnN0cmV0Y2ggPSAxMDA7CisgICAgICAgICB9CisgCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGRvY3VtZW50bGF5b3V0LmNwcCBiL3F0YmFz ZS9zcmMvZ3VpL3RleHQvcXRleHRkb2N1bWVudGxheW91dC5jcHAKK2luZGV4IGYzZTZlYTIxMDAu LjcyMjY3ZTkzODAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1l bnRsYXlvdXQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlv dXQuY3BwCitAQCAtMjEyMyw3ICsyMTIzLDcgQEAgdm9pZCBRVGV4dERvY3VtZW50TGF5b3V0UHJp dmF0ZTo6ZHJhd0xpc3RJdGVtKGNvbnN0IFFQb2ludEYgJm9mZnNldCwgUVBhaW50ZXIgKnAKKyB7 CisgICAgIFFfUShjb25zdCBRVGV4dERvY3VtZW50TGF5b3V0KTsKKyAgICAgY29uc3QgUVRleHRC bG9ja0Zvcm1hdCBibG9ja0Zvcm1hdCA9IGJsLmJsb2NrRm9ybWF0KCk7CistICAgIGNvbnN0IFFU ZXh0Q2hhckZvcm1hdCBjaGFyRm9ybWF0ID0gUVRleHRDdXJzb3IoYmwpLmNoYXJGb3JtYXQoKTsK KysgICAgY29uc3QgUVRleHRDaGFyRm9ybWF0IGNoYXJGb3JtYXQgPSBibC5jaGFyRm9ybWF0KCk7 CisgICAgIFFGb250IGZvbnQoY2hhckZvcm1hdC5mb250KCkpOworICAgICBpZiAocS0+cGFpbnRE ZXZpY2UoKSkKKyAgICAgICAgIGZvbnQgPSBRRm9udChmb250LCBxLT5wYWludERldmljZSgpKTsK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZW5naW5lLmNwcCBiL3F0YmFz ZS9zcmMvZ3VpL3RleHQvcXRleHRlbmdpbmUuY3BwCitpbmRleCBjZTRhYmFjNDcyLi5hNmM2NmU1 ZDJkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAKKysr KyBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRlbmdpbmUuY3BwCitAQCAtMSw2ICsxLDYgQEAK KyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorICoqCistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBR dCBDb21wYW55IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRk LgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdEd1aSBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitA QCAtMTU2NSw2ICsxNTY1LDEyIEBAIHZvaWQgUVRleHRFbmdpbmU6OnNoYXBlVGV4dChpbnQgaXRl bSkgY29uc3QKKyAgICAgICAgIC8vIE92ZXJ3cml0ZSB3aXRoIDAgdG9rZW4gdG8gaW5kaWNhdGUg ZmFpbHVyZQorICAgICAgICAgUUdseXBoTGF5b3V0IGcgPSBhdmFpbGFibGVHbHlwaHMoJnNpKTsK KyAgICAgICAgIGcuZ2x5cGhzWzBdID0gMDsKKysgICAgICAgIGcuYXR0cmlidXRlc1swXS5jbHVz dGVyU3RhcnQgPSB0cnVlOworKworKyAgICAgICAgdXNob3J0ICpsb2dfY2x1c3RlcnMgPSBsb2dD bHVzdGVycygmc2kpOworKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVtTGVuZ3RoOyAr K2kpCisrICAgICAgICAgICAgbG9nX2NsdXN0ZXJzW2ldID0gMDsKKysKKyAgICAgICAgIHJldHVy bjsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcWRlc2t0b3Bz ZXJ2aWNlcy5jcHAgYi9xdGJhc2Uvc3JjL2d1aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwCitp bmRleCBmYmI2M2E5NDA4Li40ZDVmYWZhYWE3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkv dXRpbC9xZGVza3RvcHNlcnZpY2VzLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVz a3RvcHNlcnZpY2VzLmNwcAorQEAgLTU0LDYgKzU0LDggQEAKKyAjaW5jbHVkZSA8cXBhL3FwbGF0 Zm9ybWludGVncmF0aW9uLmg+CisgI2luY2x1ZGUgPHFkaXIuaD4KKyAKKysjaW5jbHVkZSA8UXRD b3JlL3ByaXZhdGUvcWxvY2tpbmdfcC5oPgorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIGNs YXNzIFFPcGVuVXJsSGFuZGxlclJlZ2lzdHJ5IDogcHVibGljIFFPYmplY3QKK0BAIC04MSw2ICs4 Myw3IEBAIFFfR0xPQkFMX1NUQVRJQyhRT3BlblVybEhhbmRsZXJSZWdpc3RyeSwgaGFuZGxlclJl Z2lzdHJ5KQorIAorIHZvaWQgUU9wZW5VcmxIYW5kbGVyUmVnaXN0cnk6OmhhbmRsZXJEZXN0cm95 ZWQoUU9iamVjdCAqaGFuZGxlcikKKyB7CisrICAgIGNvbnN0IGF1dG8gbG9jayA9IHF0X3Njb3Bl ZF9sb2NrKG11dGV4KTsKKyAgICAgSGFuZGxlckhhc2g6Okl0ZXJhdG9yIGl0ID0gaGFuZGxlcnMu YmVnaW4oKTsKKyAgICAgd2hpbGUgKGl0ICE9IGhhbmRsZXJzLmVuZCgpKSB7CisgICAgICAgICBp ZiAoaXQtPnJlY2VpdmVyID09IGhhbmRsZXIpIHsKK0BAIC0yOTQsNyArMjk3LDggQEAgdm9pZCBR RGVza3RvcFNlcnZpY2VzOjpzZXRVcmxIYW5kbGVyKGNvbnN0IFFTdHJpbmcgJnNjaGVtZSwgUU9i amVjdCAqcmVjZWl2ZXIsIGMKKyAgICAgaC5uYW1lID0gbWV0aG9kOworICAgICByZWdpc3RyeS0+ aGFuZGxlcnMuaW5zZXJ0KHNjaGVtZS50b0xvd2VyKCksIGgpOworICAgICBRT2JqZWN0Ojpjb25u ZWN0KHJlY2VpdmVyLCBTSUdOQUwoZGVzdHJveWVkKFFPYmplY3QqKSksCistICAgICAgICAgICAg ICAgICAgICAgcmVnaXN0cnksIFNMT1QoaGFuZGxlckRlc3Ryb3llZChRT2JqZWN0KikpKTsKKysg ICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgU0xPVChoYW5kbGVyRGVzdHJveWVkKFFPYmpl Y3QqKSksCisrICAgICAgICAgICAgICAgICAgICAgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOworIH0K KyAKKyAvKiEKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS91dGlsL3Fwa21oYW5kbGVyLmNw cCBiL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcXBrbWhhbmRsZXIuY3BwCitpbmRleCBlMGMzYjc1ZWZl Li4zNDE0ZjlkOGJhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGttaGFuZGxl ci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcXBrbWhhbmRsZXIuY3BwCitAQCAtNTcs NyArNTcsNyBAQCBzdHJ1Y3QgUGttVHlwZQorICAgICBxdWludDMyIGJ5dGVzUGVyQmxvY2s7Cisg fTsKKyAKKy1zdGF0aWMgUGttVHlwZSB0eXBlTWFwWzVdID0geworK3N0YXRpYyBjb25zdGV4cHIg UGttVHlwZSB0eXBlTWFwWzVdID0geworICAgICB7IDB4OEQ2NCwgIDggfSwgICAvLyBHTF9FVEMx X1JHQjhfT0VTCisgICAgIHsgMHg5Mjc0LCAgOCB9LCAgIC8vIEdMX0NPTVBSRVNTRURfUkdCOF9F VEMyCisgICAgIHsgMCwgMCB9LCAgICAgICAgIC8vIHVudXNlZCAob2Jzb2xldGUpCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5ZmlsZWltcGwuY3Bw IGIvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5ZmlsZWltcGwuY3BwCitp bmRleCBiNmJlOTMxNDdhLi42ZTY5YjRjNGQzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3 b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5ZmlsZWltcGwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25l dHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlmaWxlaW1wbC5jcHAKK0BAIC04OSw5ICs4OSwxMCBA QCBRTmV0d29ya1JlcGx5RmlsZUltcGw6OlFOZXR3b3JrUmVwbHlGaWxlSW1wbChRTmV0d29ya0Fj Y2Vzc01hbmFnZXIgKm1hbmFnZXIsIGNvbgorICAgICAgICAgLy8gd2UgaGFuZGxlIG9ubHkgbG9j YWwgZmlsZXMKKyAgICAgICAgIFFTdHJpbmcgbXNnID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs YXRlKCJRTmV0d29ya0FjY2Vzc0ZpbGVCYWNrZW5kIiwgIlJlcXVlc3QgZm9yIG9wZW5pbmcgbm9u LWxvY2FsIGZpbGUgJTEiKS5hcmcodXJsLnRvU3RyaW5nKCkpOworICAgICAgICAgc2V0RXJyb3Io UU5ldHdvcmtSZXBseTo6UHJvdG9jb2xJbnZhbGlkT3BlcmF0aW9uRXJyb3IsIG1zZyk7CisrICAg ICAgICBzZXRGaW5pc2hlZCh0cnVlKTsgLy8gV2UncmUgZmluaXNoZWQsIHdpbGwgZW1pdCBmaW5p c2hlZCgpIGFmdGVyIGN0b3IgaXMgZG9uZS4KKyAgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VN ZXRob2QodGhpcywgImVycm9yT2NjdXJyZWQiLCBRdDo6UXVldWVkQ29ubmVjdGlvbiwKKyAgICAg ICAgICAgICBRX0FSRyhRTmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3IsIFFOZXR3b3JrUmVwbHk6 OlByb3RvY29sSW52YWxpZE9wZXJhdGlvbkVycm9yKSk7CistICAgICAgICBmaWxlT3BlbkZpbmlz aGVkKGZhbHNlKTsKKysgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgW3Ro aXNdKCl7IGZpbGVPcGVuRmluaXNoZWQoZmFsc2UpOyB9LCBRdDo6UXVldWVkQ29ubmVjdGlvbik7 CisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlpbXBsLmNwcCBiL3F0YmFzZS9zcmMvbmV0 d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWltcGwuY3BwCitpbmRleCBiY2RmNmVlMmYxLi4zYjZk ZWI4MmJkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3Jl cGx5aW1wbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBs eWltcGwuY3BwCitAQCAtNjgwLDcgKzY4MCw3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUltcGxQcml2 YXRlOjphcHBlbmREb3duc3RyZWFtRGF0YShRSU9EZXZpY2UgKmRhdGEpCisgICAgIC8vIHJlYWQg dW50aWwgRU9GIGZyb20gZGF0YQorICAgICBpZiAoUV9VTkxJS0VMWShjb3B5RGV2aWNlKSkgewor ICAgICAgICAgcUNyaXRpY2FsKCJRTmV0d29ya1JlcGx5SW1wbDogY29weSBmcm9tIFFJT0Rldmlj ZSBhbHJlYWR5IGluIHByb2dyZXNzIC0tICIKKy0gICAgICAgICAgICAgICAgICAiYmFja2VuZCBw cm9ibHkgbmVlZHMgdG8gYmUgZml4ZWQiKTsKKysgICAgICAgICAgICAgICAgICAiYmFja2VuZCBw cm9iYWJseSBuZWVkcyB0byBiZSBmaXhlZCIpOworICAgICAgICAgcmV0dXJuOworICAgICB9Cisg CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRvci5j cHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3FhdXRoZW50aWNhdG9yLmNwcAoraW5kZXgg ZDlmZTdiYzQ3Yi4uY2NkMDRiMjk0YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9r ZXJuZWwvcWF1dGhlbnRpY2F0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVs L3FhdXRoZW50aWNhdG9yLmNwcAorQEAgLTUwLDYgKzUwLDcgQEAKKyAjaW5jbHVkZSA8cXN0cmlu Zy5oPgorICNpbmNsdWRlIDxxZGF0ZXRpbWUuaD4KKyAjaW5jbHVkZSA8cXJhbmRvbS5oPgorKyNp bmNsdWRlICJwcml2YXRlL3FzeXN0ZW1saWJyYXJ5X3AuaCIKKyAKKyAjaWZkZWYgUV9PU19XSU4K KyAjaW5jbHVkZSA8cW11dGV4Lmg+CitAQCAtMTU2Myw3ICsxNTY0LDcgQEAgc3RhdGljIGJvb2wg cV9TU1BJX2xpYnJhcnlfbG9hZCgpCisgCisgICAgIC8vIEluaXRpYWxpemUgc2VjdXJpdHkgaW50 ZXJmYWNlCisgICAgIGlmIChwU2VjdXJpdHlGdW5jdGlvblRhYmxlID09IG51bGxwdHIpIHsKKy0g ICAgICAgIHNlY3VyaXR5RExMSGFuZGxlID0gTG9hZExpYnJhcnkoTCJzZWN1cjMyLmRsbCIpOwor KyAgICAgICAgc2VjdXJpdHlETExIYW5kbGUgPSBRU3lzdGVtTGlicmFyeTo6bG9hZChMInNlY3Vy MzIiKTsKKyAgICAgICAgIGlmIChzZWN1cml0eURMTEhhbmRsZSAhPSBudWxscHRyKSB7CisgICAg ICAgICAgICAgSU5JVF9TRUNVUklUWV9JTlRFUkZBQ0UgcEluaXRTZWN1cml0eUludGVyZmFjZSA9 CisgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8SU5JVF9TRUNVUklUWV9JTlRFUkZB Q0U+KAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZvX3Vu aXguY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xaG9zdGluZm9fdW5peC5jcHAKK2lu ZGV4IDliMGEyZWU2NjkuLjczNjc5YzllZjEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdv cmsva2VybmVsL3Fob3N0aW5mb191bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2tl cm5lbC9xaG9zdGluZm9fdW5peC5jcHAKK0BAIC0xMjIsNyArMTIyLDYgQEAgc3RhdGljIFFGdW5j dGlvblBvaW50ZXIgcmVzb2x2ZVN5bWJvbChRTGlicmFyeSAmbGliLCBjb25zdCBjaGFyICpzeW0p CisgCisgTGliUmVzb2x2OjpMaWJSZXNvbHYoKQorIHsKKy0gICAgUUxpYnJhcnkgbGliOworICNp ZmRlZiBMSUJSRVNPTFZfU08KKyAgICAgbGliLnNldEZpbGVOYW1lKFFTdHJpbmdMaXRlcmFsKExJ QlJFU09MVl9TTykpOworICAgICBpZiAoIWxpYi5sb2FkKCkpCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9uZXR3b3JrL3NvY2tldC9xc29ja3M1c29ja2V0ZW5naW5lLmNwcCBiL3F0YmFzZS9zcmMv bmV0d29yay9zb2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAKK2luZGV4IDNhMDQ2ZmQxMTYu Ljk3ZmFkY2EwYjMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fzb2Nr czVzb2NrZXRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fzb2Nr czVzb2NrZXRlbmdpbmUuY3BwCitAQCAtMTI5Niw3ICsxMjk2LDcgQEAgdm9pZCBRU29ja3M1U29j a2V0RW5naW5lUHJpdmF0ZTo6X3FfdWRwU29ja2V0UmVhZE5vdGlmaWNhdGlvbigpCisgICAgICAg ICBpbnQgcG9zID0gMDsKKyAgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZiA9IGluQnVmLmNvbnN0RGF0 YSgpOworICAgICAgICAgaWYgKGluQnVmLnNpemUoKSA8IDQpIHsKKy0gICAgICAgICAgICBRU09D S1M1X0RfREVCVUcgPDwgImJ1Z3VzIHVkcCBkYXRhLCBkaXNjYXJkaW5nIjsKKysgICAgICAgICAg ICBRU09DS1M1X0RfREVCVUcgPDwgImJvZ3VzIHVkcCBkYXRhLCBkaXNjYXJkaW5nIjsKKyAgICAg ICAgICAgICByZXR1cm47CisgICAgICAgICB9CisgICAgICAgICBRU29ja3M1UmV2aXZlZERhdGFn cmFtIGRhdGFncmFtOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGNv bnRleHRfb3BlbnNzbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0X29w ZW5zc2wuY3BwCitpbmRleCBjOWYyMDJmNTczLi5jOTkyZGE5ZDhlIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsY29udGV4dF9vcGVuc3NsLmNwcAorKysrIGIvcXRiYXNl L3NyYy9uZXR3b3JrL3NzbC9xc3NsY29udGV4dF9vcGVuc3NsLmNwcAorQEAgLTQwOSw3ICs0MDks NyBAQCBpbml0X2NvbnRleHQ6CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBRU3NsOjpEdGxz VjFfME9yTGF0ZXI6CisgICAgICAgICBtaW5WZXJzaW9uID0gRFRMUzFfVkVSU0lPTjsKKy0gICAg ICAgIG1heFZlcnNpb24gPSBEVExTX01BWF9WRVJTSU9OOworKyAgICAgICAgbWF4VmVyc2lvbiA9 IDA7CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBRU3NsOjpEdGxzVjFfMjoKKyAgICAgICAg IG1pblZlcnNpb24gPSBEVExTMV8yX1ZFUlNJT047CitAQCAtNDE3LDcgKzQxNyw3IEBAIGluaXRf Y29udGV4dDoKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIFFTc2w6OkR0bHNWMV8yT3JMYXRl cjoKKyAgICAgICAgIG1pblZlcnNpb24gPSBEVExTMV8yX1ZFUlNJT047CistICAgICAgICBtYXhW ZXJzaW9uID0gRFRMU19NQVhfVkVSU0lPTjsKKysgICAgICAgIG1heFZlcnNpb24gPSAwOworICAg ICAgICAgYnJlYWs7CisgICAgIGNhc2UgUVNzbDo6VGxzVjFfM09yTGF0ZXI6CisgI2lmZGVmIFRM UzFfM19WRVJTSU9OCitAQCAtNDU1LDcgKzQ1NSw3IEBAIGluaXRfY29udGV4dDoKKyAgICAgfQor IAorICAgICAvLyBFbmFibGUgYnVnIHdvcmthcm91bmRzLgorLSAgICBsb25nIG9wdGlvbnMgPSBR U3NsU29ja2V0QmFja2VuZFByaXZhdGU6OnNldHVwT3BlblNzbE9wdGlvbnMoY29uZmlndXJhdGlv bi5wcm90b2NvbCgpLCBjb25maWd1cmF0aW9uLmQtPnNzbE9wdGlvbnMpOworKyAgICBxc3Nsb3B0 aW9ucyBvcHRpb25zID0gUVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRp b25zKGNvbmZpZ3VyYXRpb24ucHJvdG9jb2woKSwgY29uZmlndXJhdGlvbi5kLT5zc2xPcHRpb25z KTsKKyAgICAgcV9TU0xfQ1RYX3NldF9vcHRpb25zKHNzbENvbnRleHQtPmN0eCwgb3B0aW9ucyk7 CisgCisgICAgIC8vIFRlbGwgT3BlblNTTCB0byByZWxlYXNlIG1lbW9yeSBlYXJseQorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGRpZmZpZWhlbGxtYW5wYXJhbWV0ZXJz X29wZW5zc2wuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1hbnBh cmFtZXRlcnNfb3BlbnNzbC5jcHAKK2luZGV4IGFhZjg3NDExMzAuLmI1ODkzNTM3MmMgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVy c19vcGVuc3NsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVs bG1hbnBhcmFtZXRlcnNfb3BlbnNzbC5jcHAKK0BAIC01OSw1NyArNTksNiBAQAorIAorIFFUX0JF R0lOX05BTUVTUEFDRQorIAorLSNpZmRlZiBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCistCist c3RhdGljIGludCBxX0RIX2NoZWNrKERIICpkaCwgaW50ICpzdGF0dXMpCisteworLSAgICAvLyBE SF9jaGVjayB3YXMgZmlyc3QgZGVwcmVjYXRlZCBpbiBPcGVuU1NMIDMuMC4wLCBhcyBsb3ctbGV2 ZWwKKy0gICAgLy8gQVBJOyB0aGUgRVZQX1BLRVkgZmFtaWx5IG9mIGZ1bmN0aW9ucyB3YXMgYWR2 aXNlZCBhcyBhbiBhbHRlcm5hdGl2ZS4KKy0gICAgLy8gQXMgb2Ygbm93IEVWUF9QS0VZX3BhcmFt c19jaGVjayBlbmRzIHVwIGNhbGxpbmcgLi4uIERIX2NoZWNrLAorLSAgICAvLyB3aGljaCBpcyBn b29kIGVub3VnaC4KKy0KKy0gICAgUV9BU1NFUlQoZGgpOworLSAgICBRX0FTU0VSVChzdGF0dXMp OworLQorLSAgICBFVlBfUEtFWSAqa2V5ID0gcV9FVlBfUEtFWV9uZXcoKTsKKy0gICAgaWYgKCFr ZXkpIHsKKy0gICAgICAgIHFDV2FybmluZyhsY1NzbCwgIkVWUF9QS0VZX25ldyBmYWlsZWQiKTsK Ky0gICAgICAgIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVl KCk7CistICAgICAgICByZXR1cm4gMDsKKy0gICAgfQorLSAgICBjb25zdCBhdXRvIGtleURlbGV0 ZXIgPSBxU2NvcGVHdWFyZChba2V5XSgpeworLSAgICAgICAgcV9FVlBfUEtFWV9mcmVlKGtleSk7 CistICAgIH0pOworLSAgICBpZiAoIXFfRVZQX1BLRVlfc2V0MV9ESChrZXksIGRoKSkgeworLSAg ICAgICAgcUNXYXJuaW5nKGxjU3NsLCAiRVZQX1BLRVlfc2V0MV9ESCBmYWlsZWQiKTsKKy0gICAg ICAgIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7Cist ICAgICAgICByZXR1cm4gMDsKKy0gICAgfQorLQorLSAgICBFVlBfUEtFWV9DVFggKmtleUN0eCA9 IHFfRVZQX1BLRVlfQ1RYX25ldyhrZXksIG51bGxwdHIpOworLSAgICBpZiAoIWtleUN0eCkgewor LSAgICAgICAgcUNXYXJuaW5nKGxjU3NsLCAiRVZQX1BLRVlfQ1RYX25ldyBmYWlsZWQiKTsKKy0g ICAgICAgIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7 CistICAgICAgICByZXR1cm4gMDsKKy0gICAgfQorLSAgICBjb25zdCBhdXRvIGN0eERlbGV0ZXIg PSBxU2NvcGVHdWFyZChba2V5Q3R4XXsKKy0gICAgICAgIHFfRVZQX1BLRVlfQ1RYX2ZyZWUoa2V5 Q3R4KTsKKy0gICAgfSk7CistCistICAgIGNvbnN0IGludCByZXN1bHQgPSBxX0VWUF9QS0VZX3Bh cmFtX2NoZWNrKGtleUN0eCk7CistICAgIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6bG9nQW5k Q2xlYXJFcnJvclF1ZXVlKCk7CistICAgIC8vIE5vdGU6IHVubGlrZSBESF9jaGVjaywgd2UgY2Fu bm90IG9idGFpbiB0aGUgJ3N0YXR1cycsCistICAgIC8vIGlmIHRoZSAncmVzdWx0JyBpcyAwIChh Y3R1YWxseSB0aGUgcmVzdWx0IGlzIDEgb25seQorLSAgICAvLyBpZiB0aGlzICdzdGF0dXMnIHdh cyAwKS4gV2UgY291bGQgcHJvYmFibHkgY2hlY2sgdGhlCistICAgIC8vIGVycm9ycyBmcm9tIHRo ZSBlcnJvciBxdWV1ZSwgYnV0IGl0J3Mgbm90IG5lZWRlZCBhbnl3YXkKKy0gICAgLy8gLSBzZWUg dGhlICdpc1NhZmVESCcgYmVsb3csIGhvdyBpdCByZXR1cm5zIGltbWVkaWF0ZWx5CistICAgIC8v IG9uIDAuCistICAgIFFfVU5VU0VEKHN0YXR1cykKKy0KKy0gICAgcmV0dXJuIHJlc3VsdDsKKy19 CistI2VuZGlmIC8vIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKy0KKyBzdGF0aWMgYm9vbCBp c1NhZmVESChESCAqZGgpCisgeworICAgICBpbnQgc3RhdHVzID0gMDsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbC5jcHAgYi9xdGJhc2Uvc3Jj L25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbC5jcHAKK2luZGV4IDM3ZmFkMmE2OGYuLjhm Njg1OGM4NjcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRf b3BlbnNzbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVu c3NsLmNwcAorQEAgLTU1MCw5ICs1NTAsOSBAQCBzdGF0aWMgdm9pZCBxX2xvYWRDaXBoZXJzRm9y Q29ubmVjdGlvbihTU0wgKmNvbm5lY3Rpb24sIFFMaXN0PFFTc2xDaXBoZXI+ICZjaXBoZQorIC8v IERlZmluZWQgaW4gcXNzbHNvY2tldC5jcHAKKyB2b2lkIHFfc2V0RGVmYXVsdER0bHNDaXBoZXJz KGNvbnN0IFFMaXN0PFFTc2xDaXBoZXI+ICZjaXBoZXJzKTsKKyAKKy1sb25nIFFTc2xTb2NrZXRC YWNrZW5kUHJpdmF0ZTo6c2V0dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBwcm90 b2NvbCwgUVNzbDo6U3NsT3B0aW9ucyBzc2xPcHRpb25zKQorK3Fzc2xvcHRpb25zIFFTc2xTb2Nr ZXRCYWNrZW5kUHJpdmF0ZTo6c2V0dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBw cm90b2NvbCwgUVNzbDo6U3NsT3B0aW9ucyBzc2xPcHRpb25zKQorIHsKKy0gICAgbG9uZyBvcHRp b25zOworKyAgICBxc3Nsb3B0aW9ucyBvcHRpb25zOworICAgICBpZiAocHJvdG9jb2wgPT0gUVNz bDo6VGxzVjFTc2xWMykKKyAgICAgICAgIG9wdGlvbnMgPSBTU0xfT1BfQUxMfFNTTF9PUF9OT19T U0x2MnxTU0xfT1BfTk9fU1NMdjM7CisgICAgIGVsc2UgaWYgKHByb3RvY29sID09IFFTc2w6OlNl Y3VyZVByb3RvY29scykKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xz b2NrZXRfb3BlbnNzbF9wLmggYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3Bl bnNzbF9wLmgKK2luZGV4IDQxMDNkZTIzZTguLjU1NDc1ODkyNTYgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9wLmgKKysrKyBiL3F0YmFzZS9z cmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3AuaAorQEAgLTEwNyw2ICsxMDcsMTIg QEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJ T05fTUFKT1IpICYmIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrdHlwZWRlZiB1aW50NjRf dCBxc3Nsb3B0aW9uczsKKysjZWxzZQorK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBxc3Nsb3B0aW9u czsKKysjZW5kaWYKKysKKyBzdHJ1Y3QgUVNzbEVycm9yRW50cnkgeworICAgICBpbnQgY29kZTsK KyAgICAgaW50IGRlcHRoOworQEAgLTE3MSw3ICsxNzcsNyBAQCBwdWJsaWM6CisgICAgIFFWZWN0 b3I8UVNzbEVycm9yPiBvY3NwRXJyb3JzOworICAgICBRQnl0ZUFycmF5IG9jc3BSZXNwb25zZURl cjsKKyAKKy0gICAgUV9BVVRPVEVTVF9FWFBPUlQgc3RhdGljIGxvbmcgc2V0dXBPcGVuU3NsT3B0 aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBwcm90b2NvbCwgUVNzbDo6U3NsT3B0aW9ucyBzc2xPcHRp b25zKTsKKysgICAgUV9BVVRPVEVTVF9FWFBPUlQgc3RhdGljIHFzc2xvcHRpb25zIHNldHVwT3Bl blNzbE9wdGlvbnMoUVNzbDo6U3NsUHJvdG9jb2wgcHJvdG9jb2wsIFFTc2w6OlNzbE9wdGlvbnMg c3NsT3B0aW9ucyk7CisgICAgIHN0YXRpYyBRU3NsQ2lwaGVyIFFTc2xDaXBoZXJfZnJvbV9TU0xf Q0lQSEVSKGNvbnN0IFNTTF9DSVBIRVIgKmNpcGhlcik7CisgICAgIHN0YXRpYyBRTGlzdDxRU3Ns Q2VydGlmaWNhdGU+IFNUQUNLT0ZYNTA5X3RvX1FTc2xDZXJ0aWZpY2F0ZXMoU1RBQ0tfT0YoWDUw OSkgKng1MDkpOworICAgICBzdGF0aWMgUUxpc3Q8UVNzbEVycm9yPiB2ZXJpZnkoY29uc3QgUUxp c3Q8UVNzbENlcnRpZmljYXRlPiAmY2VydGlmaWNhdGVDaGFpbiwgY29uc3QgUVN0cmluZyAmaG9z dE5hbWUpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9v cGVuc3NsX3N5bWJvbHMuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29w ZW5zc2xfc3ltYm9scy5jcHAKK2luZGV4IGU1M2ZiMjc5ZjAuLjQ1OWNjZDBiMTkgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNw cAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9s cy5jcHAKK0BAIC0xNDgsNyArMTQ4LDYgQEAgREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX3VwX3Jl ZiwgRVZQX1BLRVkgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQzIoRVZQX1BL RVlfQ1RYICosIEVWUF9QS0VZX0NUWF9uZXcsIEVWUF9QS0VZICpwa2V5LCBwa2V5LCBFTkdJTkUg KmUsIGUsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZ X3BhcmFtX2NoZWNrLCBFVlBfUEtFWV9DVFggKmN0eCwgY3R4LCByZXR1cm4gMCwgcmV0dXJuKQor IERFRklORUZVTkModm9pZCwgRVZQX1BLRVlfQ1RYX2ZyZWUsIEVWUF9QS0VZX0NUWCAqY3R4LCBj dHgsIHJldHVybiwgcmV0dXJuKQorLURFRklORUZVTkMoaW50LCBFVlBfUEtFWV9iYXNlX2lkLCBF VlBfUEtFWSAqYSwgYSwgcmV0dXJuIE5JRF91bmRlZiwgcmV0dXJuKQorIERFRklORUZVTkMoaW50 LCBSU0FfYml0cywgUlNBICphLCBhLCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMoaW50 LCBEU0FfYml0cywgRFNBICphLCBhLCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMoaW50 LCBPUEVOU1NMX3NrX251bSwgT1BFTlNTTF9TVEFDSyAqYSwgYSwgcmV0dXJuIC0xLCByZXR1cm4p CitAQCAtMTU4LDcgKzE1Nyw3IEBAIERFRklORUZVTkMyKHZvaWQsIE9QRU5TU0xfc2tfcHVzaCwg T1BFTlNTTF9TVEFDSyAqYSwgYSwgdm9pZCAqYiwgYiwgcmV0dXJuLCBEVU1NCisgREVGSU5FRlVO Qyh2b2lkLCBPUEVOU1NMX3NrX2ZyZWUsIE9QRU5TU0xfU1RBQ0sgKmEsIGEsIHJldHVybiwgRFVN TVlBUkcpCisgREVGSU5FRlVOQzIodm9pZCAqLCBPUEVOU1NMX3NrX3ZhbHVlLCBPUEVOU1NMX1NU QUNLICphLCBhLCBpbnQgYiwgYiwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5D KGludCwgU1NMX3Nlc3Npb25fcmV1c2VkLCBTU0wgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCist REVGSU5FRlVOQzIodW5zaWduZWQgbG9uZywgU1NMX0NUWF9zZXRfb3B0aW9ucywgU1NMX0NUWCAq Y3R4LCBjdHgsIHVuc2lnbmVkIGxvbmcgb3AsIG9wLCByZXR1cm4gMCwgcmV0dXJuKQorK0RFRklO RUZVTkMyKHFzc2xvcHRpb25zLCBTU0xfQ1RYX3NldF9vcHRpb25zLCBTU0xfQ1RYICpjdHgsIGN0 eCwgcXNzbG9wdGlvbnMgb3AsIG9wLCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMoaW50 LCBTU0xfQ1RYX2dldF9zZWN1cml0eV9sZXZlbCwgY29uc3QgU1NMX0NUWCAqY3R4LCBjdHgsIHJl dHVybiAtMSwgcmV0dXJuKQorIERFRklORUZVTkMyKHZvaWQsIFNTTF9DVFhfc2V0X3NlY3VyaXR5 X2xldmVsLCBTU0xfQ1RYICpjdHgsIGN0eCwgaW50IGxldmVsLCBsZXZlbCwgcmV0dXJuLCByZXR1 cm4pCisgI2lmZGVmIFRMUzFfM19WRVJTSU9OCitAQCAtMzcxLDcgKzM3MCwxNSBAQCBERUZJTkVG VU5DKGNvbnN0IFNTTF9DSVBIRVIgKiwgU1NMX2dldF9jdXJyZW50X2NpcGhlciwgU1NMICphLCBh LCByZXR1cm4gbnVsbHB0cgorIERFRklORUZVTkMoaW50LCBTU0xfdmVyc2lvbiwgY29uc3QgU1NM ICphLCBhLCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMyKGludCwgU1NMX2dldF9lcnJv ciwgU1NMICphLCBhLCBpbnQgYiwgYiwgcmV0dXJuIC0xLCByZXR1cm4pCisgREVGSU5FRlVOQyhT VEFDS19PRihYNTA5KSAqLCBTU0xfZ2V0X3BlZXJfY2VydF9jaGFpbiwgU1NMICphLCBhLCByZXR1 cm4gbnVsbHB0ciwgcmV0dXJuKQorKworKyNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpP UikgJiYgT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKytERUZJTkVGVU5DKFg1MDkgKiwgU1NM X2dldDFfcGVlcl9jZXJ0aWZpY2F0ZSwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJu KQorK0RFRklORUZVTkMoaW50LCBFVlBfUEtFWV9nZXRfYmFzZV9pZCwgY29uc3QgRVZQX1BLRVkg KnBrZXksIHBrZXksIHJldHVybiAtMSwgcmV0dXJuKQorKyNlbHNlCisgREVGSU5FRlVOQyhYNTA5 ICosIFNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZSwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwg cmV0dXJuKQorK0RFRklORUZVTkMoaW50LCBFVlBfUEtFWV9iYXNlX2lkLCBFVlBfUEtFWSAqYSwg YSwgcmV0dXJuIE5JRF91bmRlZiwgcmV0dXJuKQorKyNlbmRpZiAvLyBPUEVOU1NMX1ZFUlNJT05f TUFKT1IgPj0gMworKworIERFRklORUZVTkMobG9uZywgU1NMX2dldF92ZXJpZnlfcmVzdWx0LCBj b25zdCBTU0wgKmEsIGEsIHJldHVybiAtMSwgcmV0dXJuKQorIERFRklORUZVTkMoU1NMICosIFNT TF9uZXcsIFNTTF9DVFggKmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisgREVGSU5FRlVO QyhTU0xfQ1RYICosIFNTTF9nZXRfU1NMX0NUWCwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwg cmV0dXJuKQorQEAgLTQ5Miw5ICs0OTksNyBAQCBERUZJTkVGVU5DKERIICosIERIX25ldywgRFVN TVlBUkcsIERVTU1ZQVJHLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZVTkModm9p ZCwgREhfZnJlZSwgREggKmRoLCBkaCwgcmV0dXJuLCBEVU1NWUFSRykKKyBERUZJTkVGVU5DMyhE SCAqLCBkMmlfREhwYXJhbXMsIERIKiphLCBhLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqcHAsIHBw LCBsb25nIGxlbmd0aCwgbGVuZ3RoLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZV TkMyKGludCwgaTJkX0RIcGFyYW1zLCBESCAqYSwgYSwgdW5zaWduZWQgY2hhciAqKnAsIHAsIHJl dHVybiAtMSwgcmV0dXJuKQorLSNpZm5kZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIERF RklORUZVTkMyKGludCwgREhfY2hlY2ssIERIICpkaCwgZGgsIGludCAqY29kZXMsIGNvZGVzLCBy ZXR1cm4gMCwgcmV0dXJuKQorLSNlbmRpZiAvLyBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisg REVGSU5FRlVOQzMoQklHTlVNICosIEJOX2JpbjJibiwgY29uc3QgdW5zaWduZWQgY2hhciAqcywg cywgaW50IGxlbiwgbGVuLCBCSUdOVU0gKnJldCwgcmV0LCByZXR1cm4gbnVsbHB0ciwgcmV0dXJu KQorIAorICNpZm5kZWYgT1BFTlNTTF9OT19FQworQEAgLTg2OCw3ICs4NzMsNiBAQCBib29sIHFf cmVzb2x2ZU9wZW5Tc2xTeW1ib2xzKCkKKyAgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfQ1RYX25l dykKKyAgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfcGFyYW1fY2hlY2spCisgICAgIFJFU09MVkVG VU5DKEVWUF9QS0VZX0NUWF9mcmVlKQorLSAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9iYXNlX2lk KQorICAgICBSRVNPTFZFRlVOQyhSU0FfYml0cykKKyAgICAgUkVTT0xWRUZVTkMoT1BFTlNTTF9z a19uZXdfbnVsbCkKKyAgICAgUkVTT0xWRUZVTkMoT1BFTlNTTF9za19wdXNoKQorQEAgLTExMDcs NyArMTExMSwxNSBAQCBib29sIHFfcmVzb2x2ZU9wZW5Tc2xTeW1ib2xzKCkKKyAgICAgUkVTT0xW RUZVTkMoU1NMX3ZlcnNpb24pCisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRfZXJyb3IpCisgICAg IFJFU09MVkVGVU5DKFNTTF9nZXRfcGVlcl9jZXJ0X2NoYWluKQorKworKyNpZiBkZWZpbmVkKE9Q RU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKysgICAg UkVTT0xWRUZVTkMoU1NMX2dldDFfcGVlcl9jZXJ0aWZpY2F0ZSkKKysgICAgUkVTT0xWRUZVTkMo RVZQX1BLRVlfZ2V0X2Jhc2VfaWQpCisrI2Vsc2UKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9w ZWVyX2NlcnRpZmljYXRlKQorKyAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9iYXNlX2lkKQorKyNl bmRpZiAvLyBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworKworICAgICBSRVNPTFZFRlVOQyhT U0xfZ2V0X3ZlcmlmeV9yZXN1bHQpCisgICAgIFJFU09MVkVGVU5DKFNTTF9uZXcpCisgICAgIFJF U09MVkVGVU5DKFNTTF9nZXRfU1NMX0NUWCkKK0BAIC0xMjA2LDkgKzEyMTgsNyBAQCBib29sIHFf cmVzb2x2ZU9wZW5Tc2xTeW1ib2xzKCkKKyAgICAgUkVTT0xWRUZVTkMoREhfZnJlZSkKKyAgICAg UkVTT0xWRUZVTkMoZDJpX0RIcGFyYW1zKQorICAgICBSRVNPTFZFRlVOQyhpMmRfREhwYXJhbXMp CistI2lmbmRlZiBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisgICAgIFJFU09MVkVGVU5DKERI X2NoZWNrKQorLSNlbmRpZiAvLyBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisgICAgIFJFU09M VkVGVU5DKEJOX2JpbjJibikKKyAKKyAjaWZuZGVmIE9QRU5TU0xfTk9fRUMKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3AuaCBi L3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHNfcC5oCitp bmRleCA5NWU4ODk3YTNiLi4yN2FlZmZhMThhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3 b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9sc19wLmgKKysrKyBiL3F0YmFzZS9zcmMv bmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHNfcC5oCitAQCAtMjM3LDcgKzIz Nyw2IEBAIFFfQVVUT1RFU1RfRVhQT1JUIGludCBxX0VWUF9QS0VZX3VwX3JlZihFVlBfUEtFWSAq YSk7CisgRVZQX1BLRVlfQ1RYICpxX0VWUF9QS0VZX0NUWF9uZXcoRVZQX1BLRVkgKnBrZXksIEVO R0lORSAqZSk7Cisgdm9pZCBxX0VWUF9QS0VZX0NUWF9mcmVlKEVWUF9QS0VZX0NUWCAqY3R4KTsK KyBpbnQgcV9FVlBfUEtFWV9wYXJhbV9jaGVjayhFVlBfUEtFWV9DVFggKmN0eCk7CistaW50IHFf RVZQX1BLRVlfYmFzZV9pZChFVlBfUEtFWSAqYSk7CisgaW50IHFfUlNBX2JpdHMoUlNBICphKTsK KyBRX0FVVE9URVNUX0VYUE9SVCBpbnQgcV9PUEVOU1NMX3NrX251bShPUEVOU1NMX1NUQUNLICph KTsKKyBRX0FVVE9URVNUX0VYUE9SVCB2b2lkIHFfT1BFTlNTTF9za19wb3BfZnJlZShPUEVOU1NM X1NUQUNLICphLCB2b2lkICgqYikodm9pZCAqKSk7CitAQCAtMjQ2LDcgKzI0NSw3IEBAIFFfQVVU T1RFU1RfRVhQT1JUIHZvaWQgcV9PUEVOU1NMX3NrX3B1c2goT1BFTlNTTF9TVEFDSyAqc3QsIHZv aWQgKmRhdGEpOworIFFfQVVUT1RFU1RfRVhQT1JUIHZvaWQgcV9PUEVOU1NMX3NrX2ZyZWUoT1BF TlNTTF9TVEFDSyAqYSk7CisgUV9BVVRPVEVTVF9FWFBPUlQgdm9pZCAqIHFfT1BFTlNTTF9za192 YWx1ZShPUEVOU1NMX1NUQUNLICphLCBpbnQgYik7CisgaW50IHFfU1NMX3Nlc3Npb25fcmV1c2Vk KFNTTCAqYSk7CistdW5zaWduZWQgbG9uZyBxX1NTTF9DVFhfc2V0X29wdGlvbnMoU1NMX0NUWCAq Y3R4LCB1bnNpZ25lZCBsb25nIG9wKTsKKytxc3Nsb3B0aW9ucyBxX1NTTF9DVFhfc2V0X29wdGlv bnMoU1NMX0NUWCAqY3R4LCBxc3Nsb3B0aW9ucyBvcCk7CisgaW50IHFfT1BFTlNTTF9pbml0X3Nz bCh1aW50NjRfdCBvcHRzLCBjb25zdCBPUEVOU1NMX0lOSVRfU0VUVElOR1MgKnNldHRpbmdzKTsK KyBzaXplX3QgcV9TU0xfZ2V0X2NsaWVudF9yYW5kb20oU1NMICphLCB1bnNpZ25lZCBjaGFyICpv dXQsIHNpemVfdCBvdXRsZW4pOworIHNpemVfdCBxX1NTTF9TRVNTSU9OX2dldF9tYXN0ZXJfa2V5 KGNvbnN0IFNTTF9TRVNTSU9OICpzZXNzaW9uLCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBv dXRsZW4pOworQEAgLTUxMCw3ICs1MDksNiBAQCBjb25zdCBTU0xfQ0lQSEVSICpxX1NTTF9nZXRf Y3VycmVudF9jaXBoZXIoU1NMICphKTsKKyBpbnQgcV9TU0xfdmVyc2lvbihjb25zdCBTU0wgKmEp OworIGludCBxX1NTTF9nZXRfZXJyb3IoU1NMICphLCBpbnQgYik7CisgU1RBQ0tfT0YoWDUwOSkg KnFfU1NMX2dldF9wZWVyX2NlcnRfY2hhaW4oU1NMICphKTsKKy1YNTA5ICpxX1NTTF9nZXRfcGVl cl9jZXJ0aWZpY2F0ZShTU0wgKmEpOworIGxvbmcgcV9TU0xfZ2V0X3ZlcmlmeV9yZXN1bHQoY29u c3QgU1NMICphKTsKKyBTU0wgKnFfU1NMX25ldyhTU0xfQ1RYICphKTsKKyBTU0xfQ1RYICpxX1NT TF9nZXRfU1NMX0NUWChTU0wgKmEpOworQEAgLTU4MiwxMCArNTgwLDcgQEAgREggKnFfREhfbmV3 KCk7Cisgdm9pZCBxX0RIX2ZyZWUoREggKmRoKTsKKyBESCAqcV9kMmlfREhwYXJhbXMoREggKiph LCBjb25zdCB1bnNpZ25lZCBjaGFyICoqcHAsIGxvbmcgbGVuZ3RoKTsKKyBpbnQgcV9pMmRfREhw YXJhbXMoREggKmEsIHVuc2lnbmVkIGNoYXIgKipwKTsKKy0KKy0jaWZuZGVmIE9QRU5TU0xfTk9f REVQUkVDQVRFRF8zXzAKKyBpbnQgcV9ESF9jaGVjayhESCAqZGgsIGludCAqY29kZXMpOworLSNl bmRpZiAvLyBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisgCisgQklHTlVNICpxX0JOX2JpbjJi bihjb25zdCB1bnNpZ25lZCBjaGFyICpzLCBpbnQgbGVuLCBCSUdOVU0gKnJldCk7CisgI2RlZmlu ZSBxX1NTTF9DVFhfc2V0X3RtcF9kaChjdHgsIGRoKSBxX1NTTF9DVFhfY3RybCgoY3R4KSwgU1NM X0NUUkxfU0VUX1RNUF9ESCwgMCwgKGNoYXIgKilkaCkKK0BAIC03NTQsNiArNzQ5LDE3IEBAIHZv aWQgcV9DUllQVE9fZnJlZSh2b2lkICpzdHIsIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lKTsK KyBpbnQgcV9TU0xfQ1RYX2dldF9zZWN1cml0eV9sZXZlbChjb25zdCBTU0xfQ1RYICpjdHgpOwor IHZvaWQgcV9TU0xfQ1RYX3NldF9zZWN1cml0eV9sZXZlbChTU0xfQ1RYICpjdHgsIGludCBsZXZl bCk7CisgCisrLy8gSGVyZSB3ZSBoYXZlIHRoZSBvbmVzIHRoYXQgbWFrZSBkaWZmZXJlbmNlIGJl dHdlZW4gT3BlblNTTCBwcmUvcG9zdCB2MzoKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05f TUFKT1IpICYmIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrWDUwOSAqcV9TU0xfZ2V0MV9w ZWVyX2NlcnRpZmljYXRlKFNTTCAqYSk7CisrI2RlZmluZSBxX1NTTF9nZXRfcGVlcl9jZXJ0aWZp Y2F0ZSBxX1NTTF9nZXQxX3BlZXJfY2VydGlmaWNhdGUKKytpbnQgcV9FVlBfUEtFWV9nZXRfYmFz ZV9pZChjb25zdCBFVlBfUEtFWSAqcGtleSk7CisrI2RlZmluZSBxX0VWUF9QS0VZX2Jhc2VfaWQg cV9FVlBfUEtFWV9nZXRfYmFzZV9pZAorKyNlbHNlCisrWDUwOSAqcV9TU0xfZ2V0X3BlZXJfY2Vy dGlmaWNhdGUoU1NMICphKTsKKytpbnQgcV9FVlBfUEtFWV9iYXNlX2lkKEVWUF9QS0VZICphKTsK KysjZW5kaWYgLy8gT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKysKKyBRVF9FTkRfTkFNRVNQ QUNFCisgCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQv ZWdsY29udmVuaWVuY2UvcXRfZWdsX3AuaCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2Vn bGNvbnZlbmllbmNlL3F0X2VnbF9wLmgKK2luZGV4IGJmMzdkMDdmZDguLmRiZDQyZmI3OTkgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9l Z2xfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9x dF9lZ2xfcC5oCitAQCAtNjEsNyArNjEsMTEgQEAKKyAjIGlmICFkZWZpbmVkKFFfT1NfSU5URUdS SVRZKQorICMgIGRlZmluZSBXSU5fSU5URVJGQUNFX0NVU1RPTSAgIC8vIE5WCisgIyBlbmRpZiAv LyBRX09TX0lOVEVHUklUWQorLSNlbmRpZiAgLy8gUVRfRUdMX05PX1gxMQorKyNlbHNlIC8vIFFU X0VHTF9OT19YMTEKKysvLyBJZiBvbmUgaGFzIGFuIGVnbHBsYXRmb3JtLmggd2l0aCBodHRwczov L2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL0VHTC1SZWdpc3RyeS9wdWxsLzEzMAorKy8vIHRoYXQg bmVlZHMgVVNFX1gxMSB0byBiZSBkZWZpbmVkLgorKyMgZGVmaW5lIFVTRV9YMTEKKysjZW5kaWYK KyAKKyAjaWZkZWYgUVRfRUdMX1dBWUxBTkQKKyAjIGRlZmluZSBXQVlMQU5EIC8vIE5WCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNlcy9mb250Y29u ZmlnL3Fmb250Y29uZmlnZGF0YWJhc2UuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQv Zm9udGRhdGFiYXNlcy9mb250Y29uZmlnL3Fmb250Y29uZmlnZGF0YWJhc2UuY3BwCitpbmRleCAx NTliNDkwY2UwLi4wMGFhODBjZDU4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1 cHBvcnQvZm9udGRhdGFiYXNlcy9mb250Y29uZmlnL3Fmb250Y29uZmlnZGF0YWJhc2UuY3BwCisr KysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcv cWZvbnRjb25maWdkYXRhYmFzZS5jcHAKK0BAIC01NjcsNiArNTY3LDggQEAgdm9pZCBRRm9udGNv bmZpZ0RhdGFiYXNlOjpwb3B1bGF0ZUZvbnREYXRhYmFzZSgpCisgICAgICAgICBmb250cyA9IEZj Rm9udExpc3QobnVsbHB0ciwgcGF0dGVybiwgb3MpOworICAgICAgICAgRmNPYmplY3RTZXREZXN0 cm95KG9zKTsKKyAgICAgICAgIEZjUGF0dGVybkRlc3Ryb3kocGF0dGVybik7CisrICAgICAgICBp ZiAoIWZvbnRzKQorKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorICAgICBmb3IgKGlu dCBpID0gMDsgaSA8IGZvbnRzLT5uZm9udDsgaSsrKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv cGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uLmNwcCBiL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uLmNwcAoraW5kZXgg YjcxM2MxOTQ0Ny4uN2NiOWE4Yzc5YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1z dXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9w bGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb24uY3BwCitAQCAtOTUsNiAr OTUsNyBAQCBzdGF0aWMgY29uc3RleHByIGNvbnN0IGF1dG8gS2V5VGJsID0gcU1ha2VBcnJheSgK KyAgICAgICAgIFhrYjJRdDxYS0JfS0VZX0NsZWFyLCAgICAgICAgICAgICAgICAgICBRdDo6S2V5 X0RlbGV0ZT4sCisgICAgICAgICBYa2IyUXQ8WEtCX0tFWV9QYXVzZSwgICAgICAgICAgICAgICAg ICAgUXQ6OktleV9QYXVzZT4sCisgICAgICAgICBYa2IyUXQ8WEtCX0tFWV9QcmludCwgICAgICAg ICAgICAgICAgICAgUXQ6OktleV9QcmludD4sCisrICAgICAgICBYa2IyUXQ8WEtCX0tFWV9TeXNf UmVxLCAgICAgICAgICAgICAgICAgUXQ6OktleV9TeXNSZXE+LAorICAgICAgICAgWGtiMlF0PDB4 MTAwNUZGNjAsICAgICAgICAgICAgICAgICAgICAgIFF0OjpLZXlfU3lzUmVxPiwgICAgICAgICAv LyBoYXJkY29kZWQgU3VuIFN5c1JlcQorICAgICAgICAgWGtiMlF0PDB4MTAwN2ZmMDAsICAgICAg ICAgICAgICAgICAgICAgIFF0OjpLZXlfU3lzUmVxPiwgICAgICAgICAvLyBoYXJkY29kZWQgWDM4 NiBTeXNSZXEKKyAKK0BAIC00NzEsNyArNDcyLDcgQEAgUVZlY3Rvcjx4a2Jfa2V5c3ltX3Q+IFFY a2JDb21tb246OnRvS2V5c3ltKFFLZXlFdmVudCAqZXZlbnQpCisgICAgIH0gZWxzZSBpZiAoZXZl bnQtPm1vZGlmaWVycygpICYgUXQ6OktleXBhZE1vZGlmaWVyKSB7CisgICAgICAgICBpZiAocXRL ZXkgPj0gUXQ6OktleV8wICYmIHF0S2V5IDw9IFF0OjpLZXlfOSkKKyAgICAgICAgICAgICBrZXlz eW1zLmFwcGVuZChYS0JfS0VZX0tQXzAgKyAocXRLZXkgLSBRdDo6S2V5XzApKTsKKy0gICAgfSBl bHNlIGlmIChpc0xhdGluKHF0S2V5KSAmJiBldmVudC0+dGV4dCgpLmlzVXBwZXIoKSkgeworKyAg ICB9IGVsc2UgaWYgKGlzTGF0aW4xKHF0S2V5KSAmJiBldmVudC0+dGV4dCgpLmlzVXBwZXIoKSkg eworICAgICAgICAga2V5c3ltcy5hcHBlbmQocXRLZXkpOworICAgICB9CisgCitAQCAtNTIzLDcg KzUyNCw3IEBAIGludCBRWGtiQ29tbW9uOjprZXlzeW1Ub1F0S2V5KHhrYl9rZXlzeW1fdCBrZXlz eW0sIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RpZmllCisgICAgICAgICAvLyBXaXRoIHN0YW5k YXJkIHNob3J0Y3V0cyB3ZSBzaG91bGQgcHJlZmVyIGEgbGF0aW4gY2hhcmFjdGVyLCB0aGlzIGlz CisgICAgICAgICAvLyBmb3IgY2hlY2tzIGxpa2UgInNvbWUgcWtleWV2ZW50ID09IFFLZXlTZXF1 ZW5jZTo6Q29weSIgdG8gd29yayBldmVuCisgICAgICAgICAvLyB3aGVuIHVzaW5nIGZvciBleGFt cGxlICdydXNzaWFuJyBrZXlib2FyZCBsYXlvdXQuCistICAgICAgICBpZiAoIVFYa2JDb21tb246 OmlzTGF0aW4oa2V5c3ltKSkgeworKyAgICAgICAgaWYgKCFRWGtiQ29tbW9uOjppc0xhdGluMShr ZXlzeW0pKSB7CisgICAgICAgICAgICAgeGtiX2tleXN5bV90IGxhdGluS2V5c3ltID0gUVhrYkNv bW1vbjo6bG9va3VwTGF0aW5LZXlzeW0oc3RhdGUsIGNvZGUpOworICAgICAgICAgICAgIGlmIChs YXRpbktleXN5bSAhPSBYS0JfS0VZX05vU3ltYm9sKQorICAgICAgICAgICAgICAgICBrZXlzeW0g PSBsYXRpbktleXN5bTsKK0BAIC01NDYsNyArNTQ3LDcgQEAgc3RhdGljIGludCBrZXlzeW1Ub1F0 S2V5X2ludGVybmFsKHhrYl9rZXlzeW1fdCBrZXlzeW0sIFF0OjpLZXlib2FyZE1vZGlmaWVycyBt b2QKKyAgICAgfSBlbHNlIGlmIChrZXlzeW0gPj0gWEtCX0tFWV9LUF8wICYmIGtleXN5bSA8PSBY S0JfS0VZX0tQXzkpIHsKKyAgICAgICAgIC8vIG51bWVyaWMga2V5cGFkIGtleXMKKyAgICAgICAg IHF0S2V5ID0gUXQ6OktleV8wICsgKGtleXN5bSAtIFhLQl9LRVlfS1BfMCk7CistICAgIH0gZWxz ZSBpZiAoUVhrYkNvbW1vbjo6aXNMYXRpbihrZXlzeW0pKSB7CisrICAgIH0gZWxzZSBpZiAoUVhr YkNvbW1vbjo6aXNMYXRpbjEoa2V5c3ltKSkgeworICAgICAgICAgcXRLZXkgPSBRWGtiQ29tbW9u OjpxeGtiY29tbW9uX3hrYl9rZXlzeW1fdG9fdXBwZXIoa2V5c3ltKTsKKyAgICAgfSBlbHNlIHsK KyAgICAgICAgIC8vIGNoZWNrIGlmIHdlIGhhdmUgYSBkaXJlY3QgbWFwcGluZworQEAgLTY3OCw3 ICs2NzksNyBAQCBRTGlzdDxpbnQ+IFFYa2JDb21tb246OnBvc3NpYmxlS2V5cyh4a2Jfc3RhdGUg KnN0YXRlLCBjb25zdCBRS2V5RXZlbnQgKmV2ZW50LAorICAgICAgICAgUXQ6OktleWJvYXJkTW9k aWZpZXJzIG5lZWRlZE1vZHMgPSBNb2RzVGJsW2ldOworICAgICAgICAgaWYgKChtb2RpZmllcnMg JiBuZWVkZWRNb2RzKSA9PSBuZWVkZWRNb2RzKSB7CisgICAgICAgICAgICAgaWYgKGkgPT0gOCkg eworLSAgICAgICAgICAgICAgICBpZiAoaXNMYXRpbihiYXNlUXRLZXkpKQorKyAgICAgICAgICAg ICAgICBpZiAoaXNMYXRpbjEoYmFzZVF0S2V5KSkKKyAgICAgICAgICAgICAgICAgICAgIGNvbnRp bnVlOworICAgICAgICAgICAgICAgICAvLyBhZGQgYSBsYXRpbiBrZXkgYXMgYSBmYWxsIGJhY2sg a2V5CisgICAgICAgICAgICAgICAgIHN5bSA9IGxvb2t1cExhdGluS2V5c3ltKHN0YXRlLCBrZXlj b2RlKTsKK0BAIC03MzMsNyArNzM0LDcgQEAgdm9pZCBRWGtiQ29tbW9uOjp2ZXJpZnlIYXNMYXRp bkxheW91dCh4a2Jfa2V5bWFwICprZXltYXApCisgICAgIGZvciAoeGtiX2xheW91dF9pbmRleF90 IGxheW91dCA9IDA7IGxheW91dCA8IGxheW91dENvdW50OyArK2xheW91dCkgeworICAgICAgICAg Zm9yICh4a2Jfa2V5Y29kZV90IGNvZGUgPSBtaW5LZXljb2RlOyBjb2RlIDwgbWF4S2V5Y29kZTsg Kytjb2RlKSB7CisgICAgICAgICAgICAgeGtiX2tleW1hcF9rZXlfZ2V0X3N5bXNfYnlfbGV2ZWwo a2V5bWFwLCBjb2RlLCBsYXlvdXQsIDAsICZrZXlzeW1zKTsKKy0gICAgICAgICAgICBpZiAoa2V5 c3ltcyAmJiBpc0xhdGluKGtleXN5bXNbMF0pKQorKyAgICAgICAgICAgIGlmIChrZXlzeW1zICYm IGlzTGF0aW4xKGtleXN5bXNbMF0pKQorICAgICAgICAgICAgICAgICBuckxhdGluS2V5cysrOwor ICAgICAgICAgICAgIGlmIChuckxhdGluS2V5cyA+IDEwKSAvLyBhcmJpdHJhcmlseSBjaG9zZW4g dGhyZXNob2xkCisgICAgICAgICAgICAgICAgIHJldHVybjsKK0BAIC03NjYsNyArNzY3LDcgQEAg eGtiX2tleXN5bV90IFFYa2JDb21tb246Omxvb2t1cExhdGluS2V5c3ltKHhrYl9zdGF0ZSAqc3Rh dGUsIHhrYl9rZXljb2RlX3Qga2V5Y28KKyAgICAgICAgIHhrYl9sZXZlbF9pbmRleF90IGxldmVs ID0geGtiX3N0YXRlX2tleV9nZXRfbGV2ZWwoc3RhdGUsIGtleWNvZGUsIGxheW91dCk7CisgICAg ICAgICBpZiAoeGtiX2tleW1hcF9rZXlfZ2V0X3N5bXNfYnlfbGV2ZWwoa2V5bWFwLCBrZXljb2Rl LCBsYXlvdXQsIGxldmVsLCAmc3ltcykgIT0gMSkKKyAgICAgICAgICAgICBjb250aW51ZTsKKy0g ICAgICAgIGlmIChpc0xhdGluKHN5bXNbMF0pKSB7CisrICAgICAgICBpZiAoaXNMYXRpbjEoc3lt c1swXSkpIHsKKyAgICAgICAgICAgICBzeW0gPSBzeW1zWzBdOworICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lu cHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uX3AuaCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uX3AuaAoraW5kZXggNTYxZWFlMDNkYi4uODM4OWJk OGY1YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNv bW1vbi9xeGtiY29tbW9uX3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5w dXQveGtiY29tbW9uL3F4a2Jjb21tb25fcC5oCitAQCAtOTQsOCArOTQsOCBAQCBwdWJsaWM6Cisg ICAgIHN0YXRpYyB2b2lkIHZlcmlmeUhhc0xhdGluTGF5b3V0KHhrYl9rZXltYXAgKmtleW1hcCk7 CisgICAgIHN0YXRpYyB4a2Jfa2V5c3ltX3QgbG9va3VwTGF0aW5LZXlzeW0oeGtiX3N0YXRlICpz dGF0ZSwgeGtiX2tleWNvZGVfdCBrZXljb2RlKTsKKyAKKy0gICAgc3RhdGljIGJvb2wgaXNMYXRp bih4a2Jfa2V5c3ltX3Qgc3ltKSB7CistICAgICAgICByZXR1cm4gKChzeW0gPj0gJ2EnICYmIHN5 bSA8PSAneicpIHx8IChzeW0gPj0gJ0EnICYmIHN5bSA8PSAnWicpKTsKKysgICAgc3RhdGljIGJv b2wgaXNMYXRpbjEoeGtiX2tleXN5bV90IHN5bSkgeworKyAgICAgICAgcmV0dXJuIHN5bSA8PSAw eGZmOworICAgICB9CisgICAgIHN0YXRpYyBib29sIGlzS2V5cGFkKHhrYl9rZXlzeW1fdCBzeW0p IHsKKyAgICAgICAgIHJldHVybiBzeW0gPj0gWEtCX0tFWV9LUF9TcGFjZSAmJiBzeW0gPD0gWEtC X0tFWV9LUF85OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ttc2Nv bnZlbmllbmNlL3FrbXNkZXZpY2UuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQva21z Y29udmVuaWVuY2UvcWttc2RldmljZS5jcHAKK2luZGV4IDhjZDdmOWIzNjguLjQwNmY4NDY2M2Yg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9rbXNjb252ZW5pZW5jZS9x a21zZGV2aWNlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQva21zY29udmVu aWVuY2UvcWttc2RldmljZS5jcHAKK0BAIC0zMTgsNyArMzE4LDcgQEAgUVBsYXRmb3JtU2NyZWVu ICpRS21zRGV2aWNlOjpjcmVhdGVTY3JlZW5Gb3JDb25uZWN0b3IoZHJtTW9kZVJlc1B0ciByZXNv dXJjZXMsCisgCisgICAgIGlmIChjdXJyZW50IDwgMCAmJiBjcnRjX21vZGUuY2xvY2sgIT0gMCkg eworICAgICAgICAgbW9kZXMgPDwgY3J0Y19tb2RlOworLSAgICAgICAgY3VycmVudCA9IG1vZGUu c2l6ZSgpIC0gMTsKKysgICAgICAgIGN1cnJlbnQgPSBtb2Rlcy5zaXplKCkgLSAxOworICAgICB9 CisgCisgICAgIGlmIChjb25maWd1cmF0aW9uID09IE91dHB1dENvbmZpZ0N1cnJlbnQpCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2F0 c3BpYWRhcHRvci5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2li aWxpdHkvYXRzcGlhZGFwdG9yLmNwcAoraW5kZXggOTE1M2ZkMjBiYi4uMjU1ZWE1ZTMzZSAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9h dHNwaWFkYXB0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFj Y2Vzc2liaWxpdHkvYXRzcGlhZGFwdG9yLmNwcAorQEAgLTE5NCw2ICsxOTQsOSBAQCBRU3RyaW5n IEF0U3BpQWRhcHRvcjo6aW50cm9zcGVjdChjb25zdCBRU3RyaW5nICZwYXRoKSBjb25zdAorICAg ICAgICAgICAgICAgICAiICAgICAgPGFyZyBkaXJlY3Rpb249XCJvdXRcIiB0eXBlPVwiKHNvKVwi Lz5cbiIKKyAgICAgICAgICAgICAgICAgIiAgICAgIDxhbm5vdGF0aW9uIHZhbHVlPVwiUVNwaU9i amVjdFJlZmVyZW5jZVwiIG5hbWU9XCJvcmcucXRwcm9qZWN0LlF0REJ1cy5RdFR5cGVOYW1lLk91 dDBcIi8+XG4iCisgICAgICAgICAgICAgICAgICIgICAgPC9tZXRob2Q+XG4iCisrICAgICAgICAg ICAgICAgICIgICAgPG1ldGhvZCBuYW1lPVwiR2V0QWNjZXNzaWJsZUlkXCI+XG4iCisrICAgICAg ICAgICAgICAgICIgICAgICA8YXJnIGRpcmVjdGlvbj1cIm91dFwiIHR5cGU9XCJzXCIvPlxuIgor KyAgICAgICAgICAgICAgICAiICAgIDwvbWV0aG9kPlxuIgorICAgICAgICAgICAgICAgICAiICA8 L2ludGVyZmFjZT5cbiIKKyAgICAgICAgICAgICAgICAgKTsKKyAKK0BAIC05MTMsOCArOTE2LDE3 IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpub3RpZnkoUUFjY2Vzc2libGVFdmVudCAqZXZlbnQpCisg ICAgIH0KKyAgICAgY2FzZSBRQWNjZXNzaWJsZTo6TmFtZUNoYW5nZWQ6IHsKKyAgICAgICAgIGlm IChzZW5kT2JqZWN0IHx8IHNlbmRPYmplY3RfcHJvcGVydHlfY2hhbmdlIHx8IHNlbmRPYmplY3Rf cHJvcGVydHlfY2hhbmdlX2FjY2Vzc2libGVfbmFtZSkgeworLSAgICAgICAgICAgIFFTdHJpbmcg cGF0aCA9IHBhdGhGb3JJbnRlcmZhY2UoZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKSk7Cist ICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cyhR TGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLW5hbWUiKSwgMCwgMCwgdmFyaWFudEZvclBhdGgocGF0 aCkpOworKyAgICAgICAgICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSA9IGV2ZW50LT5h Y2Nlc3NpYmxlSW50ZXJmYWNlKCk7CisrICAgICAgICAgICAgaWYgKCFpZmFjZSkgeworKyAgICAg ICAgICAgICAgICBxQ0RlYnVnKGxjQWNjZXNzaWJpbGl0eUF0c3BpLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICJOYW1lQ2hhbmdlZCBldmVudCBmcm9tIGludmFsaWQgYWNjZXNzaWJsZS4iKTsK KysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAg ICBRU3RyaW5nIHBhdGggPSBwYXRoRm9ySW50ZXJmYWNlKGlmYWNlKTsKKysgICAgICAgICAgICBR VmFyaWFudExpc3QgYXJncyA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKAorKyAgICAgICAgICAg ICAgICBRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLW5hbWUiKSwgMCwgMCwKKysgICAgICAgICAg ICAgICAgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoaWZhY2UtPnRleHQoUUFjY2Vz c2libGU6Ok5hbWUpKSkpOworICAgICAgICAgICAgIHNlbmREQnVzU2lnbmFsKHBhdGgsIFFMYXRp bjFTdHJpbmcoQVRTUElfREJVU19JTlRFUkZBQ0VfRVZFTlRfT0JKRUNUKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdzKTsK KyAgICAgICAgIH0KK0BAIC05MjIsOCArOTM0LDE3IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpub3Rp ZnkoUUFjY2Vzc2libGVFdmVudCAqZXZlbnQpCisgICAgIH0KKyAgICAgY2FzZSBRQWNjZXNzaWJs ZTo6RGVzY3JpcHRpb25DaGFuZ2VkOiB7CisgICAgICAgICBpZiAoc2VuZE9iamVjdCB8fCBzZW5k T2JqZWN0X3Byb3BlcnR5X2NoYW5nZSB8fCBzZW5kT2JqZWN0X3Byb3BlcnR5X2NoYW5nZV9hY2Nl c3NpYmxlX2Rlc2NyaXB0aW9uKSB7CistICAgICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZv ckludGVyZmFjZShldmVudC0+YWNjZXNzaWJsZUludGVyZmFjZSgpKTsKKy0gICAgICAgICAgICBR VmFyaWFudExpc3QgYXJncyA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKFFMYXRpbjFTdHJpbmco ImFjY2Vzc2libGUtZGVzY3JpcHRpb24iKSwgMCwgMCwgdmFyaWFudEZvclBhdGgocGF0aCkpOwor KyAgICAgICAgICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSA9IGV2ZW50LT5hY2Nlc3Np YmxlSW50ZXJmYWNlKCk7CisrICAgICAgICAgICAgaWYgKCFpZmFjZSkgeworKyAgICAgICAgICAg ICAgICBxQ0RlYnVnKGxjQWNjZXNzaWJpbGl0eUF0c3BpLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICJEZXNjcmlwdGlvbkNoYW5nZWQgZXZlbnQgZnJvbSBpbnZhbGlkIGFjY2Vzc2libGUuIik7 CisrICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAg ICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShpZmFjZSk7CisrICAgICAgICAgICAg UVZhcmlhbnRMaXN0IGFyZ3MgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cygKKysgICAgICAgICAg ICAgICAgUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1kZXNjcmlwdGlvbiIpLCAwLCAwLAorKyAg ICAgICAgICAgICAgICBRVmFyaWFudDo6ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChpZmFjZS0+dGV4 dChRQWNjZXNzaWJsZTo6RGVzY3JpcHRpb24pKSkpOworICAgICAgICAgICAgIHNlbmREQnVzU2ln bmFsKHBhdGgsIFFMYXRpbjFTdHJpbmcoQVRTUElfREJVU19JTlRFUkZBQ0VfRVZFTlRfT0JKRUNU KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJQcm9wZXJ0eUNo YW5nZSIpLCBhcmdzKTsKKyAgICAgICAgIH0KK0BAIC0xMDM4LDcgKzEwNTksOSBAQCB2b2lkIEF0 U3BpQWRhcHRvcjo6bm90aWZ5KFFBY2Nlc3NpYmxlRXZlbnQgKmV2ZW50KQorICAgICAgICAgICAg ICAgICAvLyBDb21ibyBCb3ggd2l0aCBBVC1TUEkgbGlrZXMgdG8gYmUgc3BlY2lhbAorICAgICAg ICAgICAgICAgICAvLyBJdCByZXF1aXJlcyBhIG5hbWUtY2hhbmdlIHRvIHVwZGF0ZSBjYWNoZXMg YW5kIHRoZW4gc2VsZWN0aW9uLWNoYW5nZWQKKyAgICAgICAgICAgICAgICAgUVN0cmluZyBwYXRo ID0gcGF0aEZvckludGVyZmFjZShpZmFjZSk7CistICAgICAgICAgICAgICAgIFFWYXJpYW50TGlz dCBhcmdzMSA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKFFMYXRpbjFTdHJpbmcoImFjY2Vzc2li bGUtbmFtZSIpLCAwLCAwLCB2YXJpYW50Rm9yUGF0aChwYXRoKSk7CisrICAgICAgICAgICAgICAg IFFWYXJpYW50TGlzdCBhcmdzMSA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKAorKyAgICAgICAg ICAgICAgICAgICAgUUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsCisrICAg ICAgICAgICAgICAgICAgICBRVmFyaWFudDo6ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChpZmFjZS0+ dGV4dChRQWNjZXNzaWJsZTo6TmFtZSkpKSk7CisgICAgICAgICAgICAgICAgIHNlbmREQnVzU2ln bmFsKHBhdGgsIFFMYXRpbjFTdHJpbmcoQVRTUElfREJVU19JTlRFUkZBQ0VfRVZFTlRfT0JKRUNU KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUHJvcGVy dHlDaGFuZ2UiKSwgYXJnczEpOworICAgICAgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJnczIg PSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cyhRU3RyaW5nKCksIDAsIDAsIFFWYXJpYW50Ojpmcm9t VmFsdWUoUURCdXNWYXJpYW50KFFWYXJpYW50KDApKSkpOworQEAgLTEzNTgsNiArMTM4MSwyNiBA QCB2b2lkIEF0U3BpQWRhcHRvcjo6cmVnaXN0ZXJBcHBsaWNhdGlvbigpCisgICAgIGRlbGV0ZSBy ZWdpc3RyeTsKKyB9CisgCisrbmFtZXNwYWNlIHsKKytRU3RyaW5nIGFjY2Vzc2libGVJZEZvckFj Y2Vzc2libGUoUUFjY2Vzc2libGVJbnRlcmZhY2UgKmFjY2Vzc2libGUpCisreworKyAgICBRU3Ry aW5nIHJlc3VsdDsKKysgICAgd2hpbGUgKGFjY2Vzc2libGUpIHsKKysgICAgICAgIGlmICghcmVz dWx0LmlzRW1wdHkoKSkKKysgICAgICAgICAgICByZXN1bHQucHJlcGVuZChRTGF0aW4xQ2hhcign LicpKTsKKysgICAgICAgIGlmIChhdXRvIG9iaiA9IGFjY2Vzc2libGUtPm9iamVjdCgpKSB7Cisr ICAgICAgICAgICAgY29uc3QgUVN0cmluZyBuYW1lID0gb2JqLT5vYmplY3ROYW1lKCk7CisrICAg ICAgICAgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSkKKysgICAgICAgICAgICAgICAgcmVzdWx0LnBy ZXBlbmQobmFtZSk7CisrICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICByZXN1bHQu cHJlcGVuZChRU3RyaW5nOjpmcm9tVXRmOChvYmotPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkp KTsKKysgICAgICAgIH0KKysgICAgICAgIGFjY2Vzc2libGUgPSBhY2Nlc3NpYmxlLT5wYXJlbnQo KTsKKysgICAgfQorKyAgICByZXR1cm4gcmVzdWx0OworK30KKyt9IC8vIG5hbWVzcGFjZQorKwor IC8vIEFjY2Vzc2libGUKKyBib29sIEF0U3BpQWRhcHRvcjo6YWNjZXNzaWJsZUludGVyZmFjZShR QWNjZXNzaWJsZUludGVyZmFjZSAqaW50ZXJmYWNlLCBjb25zdCBRU3RyaW5nICZmdW5jdGlvbiwg Y29uc3QgUURCdXNNZXNzYWdlICZtZXNzYWdlLCBjb25zdCBRREJ1c0Nvbm5lY3Rpb24gJmNvbm5l Y3Rpb24pCisgeworQEAgLTE0NDEsNiArMTQ4NCw5IEBAIGJvb2wgQXRTcGlBZGFwdG9yOjphY2Nl c3NpYmxlSW50ZXJmYWNlKFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppbnRlcmZhY2UsIGNvbnN0IFFT CisgICAgICAgICAgICAgY2hpbGRyZW4gPDwgcmVmOworICAgICAgICAgfQorICAgICAgICAgY29u bmVjdGlvbi5zZW5kKG1lc3NhZ2UuY3JlYXRlUmVwbHkoUVZhcmlhbnQ6OmZyb21WYWx1ZShjaGls ZHJlbikpKTsKKysgICAgfSBlbHNlIGlmIChmdW5jdGlvbiA9PSBRTGF0aW4xU3RyaW5nKCJHZXRB Y2Nlc3NpYmxlSWQiKSkgeworKyAgICAgICAgc2VuZFJlcGx5KGNvbm5lY3Rpb24sIG1lc3NhZ2Us CisrICAgICAgICAgICAgICAgICAgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoYWNj ZXNzaWJsZUlkRm9yQWNjZXNzaWJsZShpbnRlcmZhY2UpKSkpOworICAgICB9IGVsc2UgeworICAg ICAgICAgcUNEZWJ1ZyhsY0FjY2Vzc2liaWxpdHlBdHNwaSkgPDwgIldBUk5JTkc6IEF0U3BpQWRh cHRvcjo6YWNjZXNzaWJsZUludGVyZmFjZSBkb2VzIG5vdCBpbXBsZW1lbnQgIiA8PCBmdW5jdGlv biA8PCBtZXNzYWdlLnBhdGgoKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvZGJ1c2Nvbm5l Y3Rpb24uY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5 L2RidXNjb25uZWN0aW9uLmNwcAoraW5kZXggNDVkZGM4ZTQ5Ni4uY2M3MzRhYmM2MyAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9kYnVz Y29ubmVjdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNj ZXNzaWJpbGl0eS9kYnVzY29ubmVjdGlvbi5jcHAKK0BAIC02OSw2ICs2OSwyMSBAQCBRVF9CRUdJ Tl9OQU1FU1BBQ0UKKyBEQnVzQ29ubmVjdGlvbjo6REJ1c0Nvbm5lY3Rpb24oUU9iamVjdCAqcGFy ZW50KQorICAgICA6IFFPYmplY3QocGFyZW50KSwgbV9hMTF5Q29ubmVjdGlvbihRU3RyaW5nKCkp LCBtX2VuYWJsZWQoZmFsc2UpCisgeworKyAgICAvLyBJZiB0aGUgYnVzIGlzIGV4cGxpY2l0bHkg c2V0IHZpYSBlbnYgdmFyIGl0IG92ZXJyaWRlcyBldmVyeXRoaW5nIGVsc2UuCisrICAgIFFCeXRl QXJyYXkgYWRkcmVzc0VudiA9IHFnZXRlbnYoIkFUX1NQSV9CVVNfQUREUkVTUyIpOworKyAgICBp ZiAoIWFkZHJlc3NFbnYuaXNFbXB0eSgpKSB7CisrICAgICAgICAvLyBPbmx5IGNvbm5lY3Qgb24g bmV4dCBsb29wIHJ1biwgY29ubmVjdGlvbnMgdG8gb3VyIGVuYWJsZWQgc2lnbmFsIGFyZQorKyAg ICAgICAgLy8gb25seSBlc3RhYmxpc2hlZCBhZnRlciB0aGUgY3RvciByZXR1cm5zLgorKyAgICAg ICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCgKKysgICAgICAgICAgICAgICAgdGhpcywKKysg ICAgICAgICAgICAgICAgW3RoaXMsIGFkZHJlc3NFbnZdIHsKKysgICAgICAgICAgICAgICAgICAg IG1fZW5hYmxlZCA9IHRydWU7CisrICAgICAgICAgICAgICAgICAgICBjb25uZWN0QTExeUJ1cyhR U3RyaW5nOjpmcm9tTG9jYWw4Qml0KGFkZHJlc3NFbnYpKTsKKysgICAgICAgICAgICAgICAgfSwK KysgICAgICAgICAgICAgICAgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworKyAgICAgICAgcmV0dXJu OworKyAgICB9CisrCisgICAgIC8vIFN0YXJ0IG1vbml0b3JpbmcgaWYgIm9yZy5hMTF5LkJ1cyIg aXMgcmVnaXN0ZXJlZCBhcyBEQnVzIHNlcnZpY2UuCisgICAgIFFEQnVzQ29ubmVjdGlvbiBjID0g UURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCk7CisgICAgIGlmICghYy5pc0Nvbm5lY3RlZCgp KSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2Vu ZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXMuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1 cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXMuY3BwCitpbmRl eCAxYTNjYWIyNzVkLi4yYWJlMDM5MTI2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9y bXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXMuY3BwCisr KysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2Vu ZXJpY3VuaXhzZXJ2aWNlcy5jcHAKK0BAIC01MSw2ICs1MSw5IEBACisgI2luY2x1ZGUgPFF0Q29y ZS9RU3RhbmRhcmRQYXRocz4KKyAjaW5jbHVkZSA8UXRDb3JlL1FVcmw+CisgCisrI2luY2x1ZGUg PFF0R3VpL1FHdWlBcHBsaWNhdGlvbj4KKysjaW5jbHVkZSA8UXRHdWkvUVdpbmRvdz4KKysKKyAj aWYgUVRfQ09ORklHKGRidXMpCisgLy8gVGhlc2UgUXRDb3JlIGluY2x1ZGVzIGFyZSBuZWVkZWQg Zm9yIHhkZy1kZXNrdG9wLXBvcnRhbCBzdXBwb3J0CisgI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRl L3Fjb3JlX3VuaXhfcC5oPgorQEAgLTU4LDYgKzYxLDggQEAKKyAjaW5jbHVkZSA8UXRDb3JlL1FG aWxlSW5mbz4KKyAjaW5jbHVkZSA8UXRDb3JlL1FVcmxRdWVyeT4KKyAKKysjaW5jbHVkZSA8UXRH dWkvUUNvbG9yPgorKworICNpbmNsdWRlIDxRdERCdXMvUURCdXNDb25uZWN0aW9uPgorICNpbmNs dWRlIDxRdERCdXMvUURCdXNNZXNzYWdlPgorICNpbmNsdWRlIDxRdERCdXMvUURCdXNQZW5kaW5n Q2FsbD4KK0BAIC0xNDIsNiArMTQ3LDggQEAgc3RhdGljIGlubGluZSBib29sIGRldGVjdFdlYkJy b3dzZXIoY29uc3QgUUJ5dGVBcnJheSAmZGVza3RvcCwKKyAgICAgfQorIAorICAgICBpZiAoZGVz a3RvcCA9PSBRQnl0ZUFycmF5KCJLREUiKSkgeworKyAgICAgICAgaWYgKGNoZWNrRXhlY3V0YWJs ZShRU3RyaW5nTGl0ZXJhbCgia2RlLW9wZW41IiksIGJyb3dzZXIpKQorKyAgICAgICAgICAgIHJl dHVybiB0cnVlOworICAgICAgICAgLy8gS29ucXVlcm9yIGxhdW5jaGVyCisgICAgICAgICBpZiAo Y2hlY2tFeGVjdXRhYmxlKFFTdHJpbmdMaXRlcmFsKCJrZm1jbGllbnQiKSwgYnJvd3NlcikpIHsK KyAgICAgICAgICAgICBicm93c2VyLT5hcHBlbmQoUUxhdGluMVN0cmluZygiIGV4ZWMiKSk7CitA QCAtMjk2LDggKzMwMywxMzUgQEAgc3RhdGljIGlubGluZSBRREJ1c01lc3NhZ2UgeGRnRGVza3Rv cFBvcnRhbFNlbmRFbWFpbChjb25zdCBRVXJsICZ1cmwpCisgCisgICAgIHJldHVybiBRREJ1c0Nv bm5lY3Rpb246OnNlc3Npb25CdXMoKS5jYWxsKG1lc3NhZ2UpOworIH0KKysKKytuYW1lc3BhY2Ug eworK3N0cnVjdCBYREdEZXNrdG9wQ29sb3IKKyt7CisrICAgIGRvdWJsZSByID0gMDsKKysgICAg ZG91YmxlIGcgPSAwOworKyAgICBkb3VibGUgYiA9IDA7CisrCisrICAgIFFDb2xvciB0b1FDb2xv cigpIGNvbnN0CisrICAgIHsKKysgICAgICAgIGNvbnN0ZXhwciBhdXRvIHJnYk1heCA9IDI1NTsK KysgICAgICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGludD4ociAqIHJnYk1heCksIHN0YXRpY19j YXN0PGludD4oZyAqIHJnYk1heCksCisrICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+ KGIgKiByZ2JNYXgpIH07CisrICAgIH0KKyt9OworKworK2NvbnN0IFFEQnVzQXJndW1lbnQgJm9w ZXJhdG9yPj4oY29uc3QgUURCdXNBcmd1bWVudCAmYXJndW1lbnQsIFhER0Rlc2t0b3BDb2xvciAm bXlTdHJ1Y3QpCisreworKyAgICBhcmd1bWVudC5iZWdpblN0cnVjdHVyZSgpOworKyAgICBhcmd1 bWVudCA+PiBteVN0cnVjdC5yID4+IG15U3RydWN0LmcgPj4gbXlTdHJ1Y3QuYjsKKysgICAgYXJn dW1lbnQuZW5kU3RydWN0dXJlKCk7CisrICAgIHJldHVybiBhcmd1bWVudDsKKyt9CisrCisrY2xh c3MgWGRnRGVza3RvcFBvcnRhbENvbG9yUGlja2VyIDogcHVibGljIFFQbGF0Zm9ybVNlcnZpY2VD b2xvclBpY2tlcgorK3sKKysgICAgUV9PQkpFQ1QKKytwdWJsaWM6CisrICAgIFhkZ0Rlc2t0b3BQ b3J0YWxDb2xvclBpY2tlcihjb25zdCBRU3RyaW5nICZwYXJlbnRXaW5kb3dJZCwgUVdpbmRvdyAq cGFyZW50KQorKyAgICAgICAgOiBRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIocGFyZW50KSwg bV9wYXJlbnRXaW5kb3dJZChwYXJlbnRXaW5kb3dJZCkKKysgICAgeworKyAgICB9CisrCisrICAg IHZvaWQgcGlja0NvbG9yKCkgb3ZlcnJpZGUKKysgICAgeworKyAgICAgICAgLy8gREJ1cyBzaWdu YXR1cmU6CisrICAgICAgICAvLyBQaWNrQ29sb3IgKElOICAgcyAgICAgIHBhcmVudF93aW5kb3cs CisrICAgICAgICAvLyAgICAgICAgICAgIElOICAgYXtzdn0gIG9wdGlvbnMKKysgICAgICAgIC8v ICAgICAgICAgICAgT1VUICBvICAgICAgaGFuZGxlKQorKyAgICAgICAgLy8gT3B0aW9uczoKKysg ICAgICAgIC8vIGhhbmRsZV90b2tlbiAocykgLSAgQSBzdHJpbmcgdGhhdCB3aWxsIGJlIHVzZWQg YXMgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgQGhhbmRsZS4KKysKKysgICAgICAgIFFEQnVzTWVz c2FnZSBtZXNzYWdlID0gUURCdXNNZXNzYWdlOjpjcmVhdGVNZXRob2RDYWxsKAorKyAgICAgICAg ICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9wIiks IFFTdHJpbmdMaXRlcmFsKCIvb3JnL2ZyZWVkZXNrdG9wL3BvcnRhbC9kZXNrdG9wIiksCisrICAg ICAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLlNjcmVl bnNob3QiKSwgUVN0cmluZ0xpdGVyYWwoIlBpY2tDb2xvciIpKTsKKysgICAgICAgIG1lc3NhZ2Ug PDwgbV9wYXJlbnRXaW5kb3dJZCA8PCBRVmFyaWFudE1hcCgpOworKworKyAgICAgICAgUURCdXNQ ZW5kaW5nQ2FsbCBwZW5kaW5nQ2FsbCA9IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmFz eW5jQ2FsbChtZXNzYWdlKTsKKysgICAgICAgIGF1dG8gd2F0Y2hlciA9IG5ldyBRREJ1c1BlbmRp bmdDYWxsV2F0Y2hlcihwZW5kaW5nQ2FsbCwgdGhpcyk7CisrICAgICAgICBjb25uZWN0KHdhdGNo ZXIsICZRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcjo6ZmluaXNoZWQsIHRoaXMsCisrICAgICAgICAg ICAgICAgIFt0aGlzXShRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlcikgeworKyAgICAg ICAgICAgICAgICAgICAgd2F0Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKysgICAgICAgICAgICAgICAg ICAgIFFEQnVzUGVuZGluZ1JlcGx5PFFEQnVzT2JqZWN0UGF0aD4gcmVwbHkgPSAqd2F0Y2hlcjsK KysgICAgICAgICAgICAgICAgICAgIGlmIChyZXBseS5pc0Vycm9yKCkpIHsKKysgICAgICAgICAg ICAgICAgICAgICAgICBxV2FybmluZygiREJ1cyBjYWxsIHRvIHBpY2sgY29sb3IgZmFpbGVkOiAl cyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcVByaW50YWJsZShyZXBseS5l cnJvcigpLm1lc3NhZ2UoKSkpOworKyAgICAgICAgICAgICAgICAgICAgICAgIFFfRU1JVCBjb2xv clBpY2tlZCh7fSk7CisrICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAg ICAgICAgICAgICAgIFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmNvbm5lY3QoCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNr dG9wLnBvcnRhbC5EZXNrdG9wIiksIHJlcGx5LnZhbHVlKCkucGF0aCgpLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0 YWwuUmVxdWVzdCIpLCBRU3RyaW5nTGl0ZXJhbCgiUmVzcG9uc2UiKSwgdGhpcywKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNMT1QoZ290Q29sb3JSZXNwb25zZSh1aW50LFFWYXJpYW50 TWFwKSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBv bgorKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisrICAgICAgICAgICAgICAgICAgICB9Cisr ICAgICAgICAgICAgICAgIH0pOworKyAgICB9CisrCisrcHJpdmF0ZSBRX1NMT1RTOgorKyAgICB2 b2lkIGdvdENvbG9yUmVzcG9uc2UodWludCByZXN1bHQsIGNvbnN0IFFWYXJpYW50TWFwICZtYXAp CisrICAgIHsKKysgICAgICAgIGlmIChyZXN1bHQgIT0gMCkKKysgICAgICAgICAgICByZXR1cm47 CisrICAgICAgICBYREdEZXNrdG9wQ29sb3IgY29sb3J7fTsKKysgICAgICAgIG1hcC52YWx1ZShR U3RyaW5nTGl0ZXJhbCgiY29sb3IiKSkudmFsdWU8UURCdXNBcmd1bWVudD4oKSA+PiBjb2xvcjsK KysgICAgICAgIFFfRU1JVCBjb2xvclBpY2tlZChjb2xvci50b1FDb2xvcigpKTsKKysgICAgICAg IGRlbGV0ZUxhdGVyKCk7CisrICAgIH0KKysKKytwcml2YXRlOgorKyAgICBjb25zdCBRU3RyaW5n IG1fcGFyZW50V2luZG93SWQ7CisrfTsKKyt9IC8vIG5hbWVzcGFjZQorKworICNlbmRpZiAvLyBR VF9DT05GSUcoZGJ1cykKKyAKKytRR2VuZXJpY1VuaXhTZXJ2aWNlczo6UUdlbmVyaWNVbml4U2Vy dmljZXMoKQorK3sKKysjaWYgUVRfQ09ORklHKGRidXMpCisrICAgIGlmIChxRW52aXJvbm1lbnRW YXJpYWJsZUludFZhbHVlKCJRVF9OT19YREdfREVTS1RPUF9QT1JUQUwiKSA+IDApIHsKKysgICAg ICAgIHJldHVybjsKKysgICAgfQorKyAgICBRREJ1c01lc3NhZ2UgbWVzc2FnZSA9IFFEQnVzTWVz c2FnZTo6Y3JlYXRlTWV0aG9kQ2FsbCgKKysgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3Jn LmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9wIiksIFFTdHJpbmdMaXRlcmFsKCIvb3JnL2ZyZWVk ZXNrdG9wL3BvcnRhbC9kZXNrdG9wIiksCisrICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9y Zy5mcmVlZGVza3RvcC5EQnVzLlByb3BlcnRpZXMiKSwgUVN0cmluZ0xpdGVyYWwoIkdldCIpKTsK KysgICAgbWVzc2FnZSA8PCBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5T Y3JlZW5zaG90IikKKysgICAgICAgICAgICA8PCBRU3RyaW5nTGl0ZXJhbCgidmVyc2lvbiIpOwor KworKyAgICBRREJ1c1BlbmRpbmdDYWxsIHBlbmRpbmdDYWxsID0gUURCdXNDb25uZWN0aW9uOjpz ZXNzaW9uQnVzKCkuYXN5bmNDYWxsKG1lc3NhZ2UpOworKyAgICBhdXRvIHdhdGNoZXIgPSBuZXcg UURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIocGVuZGluZ0NhbGwpOworKyAgICBRT2JqZWN0Ojpjb25u ZWN0KHdhdGNoZXIsICZRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcjo6ZmluaXNoZWQsIHdhdGNoZXIs CisrICAgICAgICAgICAgICAgICAgICAgW3RoaXNdKFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3 YXRjaGVyKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoZXItPmRlbGV0ZUxhdGVy KCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgIFFEQnVzUGVuZGluZ1JlcGx5PFFWYXJpYW50 PiByZXBseSA9ICp3YXRjaGVyOworKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlcGx5 LmlzRXJyb3IoKSAmJiByZXBseS52YWx1ZSgpLnRvVUludCgpID49IDIpCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtX2hhc1NjcmVlbnNob3RQb3J0YWxXaXRoQ29sb3JQaWNraW5nID0g dHJ1ZTsKKysgICAgICAgICAgICAgICAgICAgICB9KTsKKysKKysjZW5kaWYKKyt9CisrCisrUVBs YXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpRR2VuZXJpY1VuaXhTZXJ2aWNlczo6Y29sb3JQaWNr ZXIoUVdpbmRvdyAqcGFyZW50KQorK3sKKysjaWYgUVRfQ09ORklHKGRidXMpCisrICAgIC8vIE1h a2UgZG91YmxlIHN1cmUgdGhhdCB3ZSBhcmUgaW4gYSB3YXlsYW5kIGVudmlyb25tZW50LiBJbiBw YXJ0aWN1bGFyIGNoZWNrCisrICAgIC8vIFdBWUxBTkRfRElTUExBWSBzbyBhbHNvIFhXYXlsYW5k IGFwcHMgYmVuZWZpdCBmcm9tIHBvcnRhbC1iYXNlZCBjb2xvciBwaWNraW5nLgorKyAgICAvLyBP dXRzaWRlIHdheWxhbmQgd2UnbGwgcmF0aGVyIHJlbHkgb24gb3RoZXIgbWVhbnMgdGhhbiB0aGUg WERHIGRlc2t0b3AgcG9ydGFsLgorKyAgICBpZiAoIXFFbnZpcm9ubWVudFZhcmlhYmxlSXNFbXB0 eSgiV0FZTEFORF9ESVNQTEFZIikKKysgICAgICAgIHx8IFFHdWlBcHBsaWNhdGlvbjo6cGxhdGZv cm1OYW1lKCkuc3RhcnRzV2l0aChRTGF0aW4xU3RyaW5nKCJ3YXlsYW5kIikpKSB7CisrICAgICAg ICByZXR1cm4gbmV3IFhkZ0Rlc2t0b3BQb3J0YWxDb2xvclBpY2tlcihwb3J0YWxXaW5kb3dJZGVu dGlmaWVyKHBhcmVudCksIHBhcmVudCk7CisrICAgIH0KKysgICAgcmV0dXJuIG51bGxwdHI7Cisr I2Vsc2UKKysgICAgUV9VTlVTRUQocGFyZW50KTsKKysgICAgcmV0dXJuIG51bGxwdHI7CisrI2Vu ZGlmCisrfQorKworIFFCeXRlQXJyYXkgUUdlbmVyaWNVbml4U2VydmljZXM6OmRlc2t0b3BFbnZp cm9ubWVudCgpIGNvbnN0CisgeworICAgICBzdGF0aWMgY29uc3QgUUJ5dGVBcnJheSByZXN1bHQg PSBkZXRlY3REZXNrdG9wRW52aXJvbm1lbnQoKTsKK0BAIC0zNTIsNiArNDg2LDggQEAgYm9vbCBR R2VuZXJpY1VuaXhTZXJ2aWNlczo6b3BlbkRvY3VtZW50KGNvbnN0IFFVcmwgJnVybCkKKyB9Cisg CisgI2Vsc2UKKytRR2VuZXJpY1VuaXhTZXJ2aWNlczo6UUdlbmVyaWNVbml4U2VydmljZXMoKSA9 IGRlZmF1bHQ7CisrCisgUUJ5dGVBcnJheSBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6ZGVza3RvcEVu dmlyb25tZW50KCkgY29uc3QKKyB7CisgICAgIHJldHVybiBRQnl0ZUFycmF5TGl0ZXJhbCgiVU5L Tk9XTiIpOworQEAgLTM3MSw2ICs1MDcsMzAgQEAgYm9vbCBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6 b3BlbkRvY3VtZW50KGNvbnN0IFFVcmwgJnVybCkKKyAgICAgcmV0dXJuIGZhbHNlOworIH0KKyAK KytRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgKlFHZW5lcmljVW5peFNlcnZpY2VzOjpjb2xv clBpY2tlcihRV2luZG93ICpwYXJlbnQpCisreworKyAgICBRX1VOVVNFRChwYXJlbnQpOworKyAg ICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisgI2VuZGlmIC8vIFFUX05PX01VTFRJUFJPQ0VTUwor IAorK1FTdHJpbmcgUUdlbmVyaWNVbml4U2VydmljZXM6OnBvcnRhbFdpbmRvd0lkZW50aWZpZXIo UVdpbmRvdyAqd2luZG93KQorK3sKKysgICAgaWYgKFFHdWlBcHBsaWNhdGlvbjo6cGxhdGZvcm1O YW1lKCkgPT0gUUxhdGluMVN0cmluZygieGNiIikpCisrICAgICAgICByZXR1cm4gUVN0cmluZ0xp dGVyYWwoIngxMToiKSArIFFTdHJpbmc6Om51bWJlcih3aW5kb3ctPndpbklkKCksIDE2KTsKKysg ICAgcmV0dXJuIFFTdHJpbmcoKTsKKyt9CisrCisrYm9vbCBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6 aGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNhcGFiaWxpdHkpIGNvbnN0CisreworKyAgICBzd2l0 Y2ggKGNhcGFiaWxpdHkpIHsKKysgICAgY2FzZSBDYXBhYmlsaXR5OjpDb2xvclBpY2tpbmc6Cisr ICAgICAgICByZXR1cm4gbV9oYXNTY3JlZW5zaG90UG9ydGFsV2l0aENvbG9yUGlja2luZzsKKysg ICAgfQorKyAgICByZXR1cm4gZmFsc2U7CisrfQorKworIFFUX0VORF9OQU1FU1BBQ0UKKysKKysj aW5jbHVkZSAicWdlbmVyaWN1bml4c2VydmljZXMubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZp Y2VzX3AuaCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4 L3FnZW5lcmljdW5peHNlcnZpY2VzX3AuaAoraW5kZXggOGFjM2RlNmYwMy4uMzA5MjRlNjRiZCAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1 bml4L3FnZW5lcmljdW5peHNlcnZpY2VzX3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1 cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oCitAQCAt NTksMTYgKzU5LDIxIEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIGNsYXNzIFFHZW5lcmljVW5peFNl cnZpY2VzIDogcHVibGljIFFQbGF0Zm9ybVNlcnZpY2VzCisgeworIHB1YmxpYzoKKy0gICAgUUdl bmVyaWNVbml4U2VydmljZXMoKSB7fQorKyAgICBRR2VuZXJpY1VuaXhTZXJ2aWNlcygpOworIAor ICAgICBRQnl0ZUFycmF5IGRlc2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0IG92ZXJyaWRlOworIAor KyAgICBib29sIGhhc0NhcGFiaWxpdHkoQ2FwYWJpbGl0eSBjYXBhYmlsaXR5KSBjb25zdCBvdmVy cmlkZTsKKyAgICAgYm9vbCBvcGVuVXJsKGNvbnN0IFFVcmwgJnVybCkgb3ZlcnJpZGU7CisgICAg IGJvb2wgb3BlbkRvY3VtZW50KGNvbnN0IFFVcmwgJnVybCkgb3ZlcnJpZGU7CisrICAgIFFQbGF0 Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqY29sb3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50ID0gbnVs bHB0cikgb3ZlcnJpZGU7CisrCisrICAgIHZpcnR1YWwgUVN0cmluZyBwb3J0YWxXaW5kb3dJZGVu dGlmaWVyKFFXaW5kb3cgKndpbmRvdyk7CisgCisgcHJpdmF0ZToKKyAgICAgUVN0cmluZyBtX3dl YkJyb3dzZXI7CisgICAgIFFTdHJpbmcgbV9kb2N1bWVudExhdW5jaGVyOworKyAgICBib29sIG1f aGFzU2NyZWVuc2hvdFBvcnRhbFdpdGhDb2xvclBpY2tpbmcgPSBmYWxzZTsKKyB9OworIAorIFFU X0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90 aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbi5jcHAgYi9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNt ZW51Y29ubmVjdGlvbi5jcHAKK2luZGV4IDA5NDcwYmNjYzYuLmNjN2M3ZDRkOGEgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21l bnUvcWRidXNtZW51Y29ubmVjdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcAor QEAgLTY5LDYgKzY5LDcgQEAgY29uc3QgUVN0cmluZyBNZW51QmFyUGF0aCA9IFFMYXRpbjFTdHJp bmcoIi9NZW51QmFyIik7CisgKi8KKyBRREJ1c01lbnVDb25uZWN0aW9uOjpRREJ1c01lbnVDb25u ZWN0aW9uKFFPYmplY3QgKnBhcmVudCwgY29uc3QgUVN0cmluZyAmc2VydmljZU5hbWUpCisgICAg IDogUU9iamVjdChwYXJlbnQpCisrICAgICwgbV9zZXJ2aWNlTmFtZShzZXJ2aWNlTmFtZSkKKyAg ICAgLCBtX2Nvbm5lY3Rpb24oc2VydmljZU5hbWUuaXNOdWxsKCkgPyBRREJ1c0Nvbm5lY3Rpb246 OnNlc3Npb25CdXMoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6 IFFEQnVzQ29ubmVjdGlvbjo6Y29ubmVjdFRvQnVzKFFEQnVzQ29ubmVjdGlvbjo6U2Vzc2lvbkJ1 cywgc2VydmljZU5hbWUpKQorICAgICAsIG1fZGJ1c1dhdGNoZXIobmV3IFFEQnVzU2VydmljZVdh dGNoZXIoU3RhdHVzTm90aWZpZXJXYXRjaGVyU2VydmljZSwgbV9jb25uZWN0aW9uLCBRREJ1c1Nl cnZpY2VXYXRjaGVyOjpXYXRjaEZvclJlZ2lzdHJhdGlvbiwgdGhpcykpCitAQCAtODMsNiArODQs MTIgQEAgUURCdXNNZW51Q29ubmVjdGlvbjo6UURCdXNNZW51Q29ubmVjdGlvbihRT2JqZWN0ICpw YXJlbnQsIGNvbnN0IFFTdHJpbmcgJnNlcnZpY2UKKyAjZW5kaWYKKyB9CisgCisrUURCdXNNZW51 Q29ubmVjdGlvbjo6flFEQnVzTWVudUNvbm5lY3Rpb24oKQorK3sKKysgIGlmICghbV9zZXJ2aWNl TmFtZS5pc0VtcHR5KCkgJiYgbV9jb25uZWN0aW9uLmlzQ29ubmVjdGVkKCkpCisrICAgICAgUURC dXNDb25uZWN0aW9uOjpkaXNjb25uZWN0RnJvbUJ1cyhtX3NlcnZpY2VOYW1lKTsKKyt9CisrCisg dm9pZCBRREJ1c01lbnVDb25uZWN0aW9uOjpkYnVzRXJyb3IoY29uc3QgUURCdXNFcnJvciAmZXJy b3IpCisgeworICAgICBxV2FybmluZygpIDw8ICJRREJ1c1RyYXlJY29uIGVuY291bnRlcmVkIGEg RC1CdXMgZXJyb3I6IiA8PCBlcnJvcjsKK0BAIC0xMDUsMTMgKzExMiw3IEBAIHZvaWQgUURCdXNN ZW51Q29ubmVjdGlvbjo6dW5yZWdpc3RlclRyYXlJY29uTWVudShRREJ1c1RyYXlJY29uICppdGVt KQorIAorIGJvb2wgUURCdXNNZW51Q29ubmVjdGlvbjo6cmVnaXN0ZXJUcmF5SWNvbihRREJ1c1Ry YXlJY29uICppdGVtKQorIHsKKy0gICAgYm9vbCBzdWNjZXNzID0gY29ubmVjdGlvbigpLnJlZ2lz dGVyU2VydmljZShpdGVtLT5pbnN0YW5jZUlkKCkpOworLSAgICBpZiAoIXN1Y2Nlc3MpIHsKKy0g ICAgICAgIHFXYXJuaW5nKCkgPDwgImZhaWxlZCB0byByZWdpc3RlciBzZXJ2aWNlIiA8PCBpdGVt LT5pbnN0YW5jZUlkKCk7CistICAgICAgICByZXR1cm4gZmFsc2U7CistICAgIH0KKy0KKy0gICAg c3VjY2VzcyA9IGNvbm5lY3Rpb24oKS5yZWdpc3Rlck9iamVjdChTdGF0dXNOb3RpZmllckl0ZW1Q YXRoLCBpdGVtKTsKKysgICAgYm9vbCBzdWNjZXNzID0gY29ubmVjdGlvbigpLnJlZ2lzdGVyT2Jq ZWN0KFN0YXR1c05vdGlmaWVySXRlbVBhdGgsIGl0ZW0pOworICAgICBpZiAoIXN1Y2Nlc3MpIHsK KyAgICAgICAgIHVucmVnaXN0ZXJUcmF5SWNvbihpdGVtKTsKKyAgICAgICAgIHFXYXJuaW5nKCkg PDwgImZhaWxlZCB0byByZWdpc3RlciIgPDwgaXRlbS0+aW5zdGFuY2VJZCgpIDw8IFN0YXR1c05v dGlmaWVySXRlbVBhdGg7CitAQCAtMTI2LDIxICsxMjcsMTggQEAgYm9vbCBRREJ1c01lbnVDb25u ZWN0aW9uOjpyZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pCisgCisgYm9vbCBR REJ1c01lbnVDb25uZWN0aW9uOjpyZWdpc3RlclRyYXlJY29uV2l0aFdhdGNoZXIoUURCdXNUcmF5 SWNvbiAqaXRlbSkKKyB7CisrICAgIFFfVU5VU0VEKGl0ZW0pOworICAgICBRREJ1c01lc3NhZ2Ug cmVnaXN0ZXJNZXRob2QgPSBRREJ1c01lc3NhZ2U6OmNyZWF0ZU1ldGhvZENhbGwoCisgICAgICAg ICAgICAgICAgIFN0YXR1c05vdGlmaWVyV2F0Y2hlclNlcnZpY2UsIFN0YXR1c05vdGlmaWVyV2F0 Y2hlclBhdGgsIFN0YXR1c05vdGlmaWVyV2F0Y2hlclNlcnZpY2UsCisgICAgICAgICAgICAgICAg IFFMYXRpbjFTdHJpbmcoIlJlZ2lzdGVyU3RhdHVzTm90aWZpZXJJdGVtIikpOworLSAgICByZWdp c3Rlck1ldGhvZC5zZXRBcmd1bWVudHMoUVZhcmlhbnRMaXN0KCkgPDwgaXRlbS0+aW5zdGFuY2VJ ZCgpKTsKKysgICAgcmVnaXN0ZXJNZXRob2Quc2V0QXJndW1lbnRzKFFWYXJpYW50TGlzdCgpIDw8 IG1fY29ubmVjdGlvbi5iYXNlU2VydmljZSgpKTsKKyAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5j YWxsV2l0aENhbGxiYWNrKHJlZ2lzdGVyTWV0aG9kLCB0aGlzLCBTSUdOQUwodHJheUljb25SZWdp c3RlcmVkKCkpLCBTTE9UKGRidXNFcnJvcihRREJ1c0Vycm9yKSkpOworIH0KKyAKKy1ib29sIFFE QnVzTWVudUNvbm5lY3Rpb246OnVucmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVt KQorK3ZvaWQgUURCdXNNZW51Q29ubmVjdGlvbjo6dW5yZWdpc3RlclRyYXlJY29uKFFEQnVzVHJh eUljb24gKml0ZW0pCisgeworICAgICB1bnJlZ2lzdGVyVHJheUljb25NZW51KGl0ZW0pOworICAg ICBjb25uZWN0aW9uKCkudW5yZWdpc3Rlck9iamVjdChTdGF0dXNOb3RpZmllckl0ZW1QYXRoKTsK Ky0gICAgYm9vbCBzdWNjZXNzID0gY29ubmVjdGlvbigpLnVucmVnaXN0ZXJTZXJ2aWNlKGl0ZW0t Pmluc3RhbmNlSWQoKSk7CistICAgIGlmICghc3VjY2VzcykKKy0gICAgICAgIHFXYXJuaW5nKCkg PDwgImZhaWxlZCB0byB1bnJlZ2lzdGVyIHNlcnZpY2UiIDw8IGl0ZW0tPmluc3RhbmNlSWQoKTsK Ky0gICAgcmV0dXJuIHN1Y2Nlc3M7CisgfQorICNlbmRpZiAvLyBRVF9OT19TWVNURU1UUkFZSUNP TgorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5l cmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uX3AuaCBiL3F0YmFzZS9zcmMvcGxh dGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0 aW9uX3AuaAoraW5kZXggZjQ4NDc5NWZiYi4uOTdiZGZhYmI4NSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21l bnVjb25uZWN0aW9uX3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVz L2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oCitAQCAtNzAsNiAr NzAsNyBAQCBjbGFzcyBRREJ1c01lbnVDb25uZWN0aW9uIDogcHVibGljIFFPYmplY3QKKyAKKyBw dWJsaWM6CisgICAgIFFEQnVzTWVudUNvbm5lY3Rpb24oUU9iamVjdCAqcGFyZW50ID0gbnVsbHB0 ciwgY29uc3QgUVN0cmluZyAmc2VydmljZU5hbWUgPSBRU3RyaW5nKCkpOworKyAgICB+UURCdXNN ZW51Q29ubmVjdGlvbigpOworICAgICBRREJ1c0Nvbm5lY3Rpb24gY29ubmVjdGlvbigpIGNvbnN0 IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQorICAgICBRREJ1c1NlcnZpY2VXYXRjaGVyICpkYnVz V2F0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGJ1c1dhdGNoZXI7IH0KKyAgICAgYm9vbCBpc1N0 YXR1c05vdGlmaWVySG9zdFJlZ2lzdGVyZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c05vdGlm aWVySG9zdFJlZ2lzdGVyZWQ7IH0KK0BAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKKyAgICAgdm9p ZCB1bnJlZ2lzdGVyVHJheUljb25NZW51KFFEQnVzVHJheUljb24gKml0ZW0pOworICAgICBib29s IHJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSk7CisgICAgIGJvb2wgcmVnaXN0 ZXJUcmF5SWNvbldpdGhXYXRjaGVyKFFEQnVzVHJheUljb24gKml0ZW0pOworLSAgICBib29sIHVu cmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKTsKKysgICAgdm9pZCB1bnJlZ2lz dGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSk7CisgI2VuZGlmIC8vIFFUX05PX1NZU1RF TVRSQVlJQ09OCisgCisgUV9TSUdOQUxTOgorQEAgLTkwLDYgKzkxLDcgQEAgcHJpdmF0ZSBRX1NM T1RTOgorICAgICB2b2lkIGRidXNFcnJvcihjb25zdCBRREJ1c0Vycm9yICZlcnJvcik7CisgCisg cHJpdmF0ZToKKysgICAgUVN0cmluZyBtX3NlcnZpY2VOYW1lOworICAgICBRREJ1c0Nvbm5lY3Rp b24gbV9jb25uZWN0aW9uOworICAgICBRREJ1c1NlcnZpY2VXYXRjaGVyICptX2RidXNXYXRjaGVy OworICAgICBib29sIG1fc3RhdHVzTm90aWZpZXJIb3N0UmVnaXN0ZXJlZDsKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3RyYXkv cWRidXN0cmF5aWNvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2Vu ZXJpY3VuaXgvZGJ1c3RyYXkvcWRidXN0cmF5aWNvbi5jcHAKK2luZGV4IGJlZGU3MDk3NWEuLjc2 YmZlYzVlNWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMv Z2VuZXJpY3VuaXgvZGJ1c3RyYXkvcWRidXN0cmF5aWNvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMv cGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29u LmNwcAorQEAgLTcxLDggKzcxLDEyIEBAIFFfTE9HR0lOR19DQVRFR09SWShxTGNUcmF5LCAicXQu cXBhLnRyYXkiKQorIHN0YXRpYyBRU3RyaW5nIGljb25UZW1wUGF0aCgpCisgeworICAgICBRU3Ry aW5nIHRlbXBQYXRoID0gUVN0YW5kYXJkUGF0aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0YW5kYXJk UGF0aHM6OlJ1bnRpbWVMb2NhdGlvbik7CistICAgIGlmICghdGVtcFBhdGguaXNFbXB0eSgpKQor KyAgICBpZiAoIXRlbXBQYXRoLmlzRW1wdHkoKSkgeworKyAgICAgICAgUVN0cmluZyBmbGF0cGFr SWQgPSBxRW52aXJvbm1lbnRWYXJpYWJsZSgiRkxBVFBBS19JRCIpOworKyAgICAgICAgaWYgKCFm bGF0cGFrSWQuaXNFbXB0eSgpICYmIFFGaWxlSW5mbzo6ZXhpc3RzKFFMYXRpbjFTdHJpbmcoIi8u ZmxhdHBhay1pbmZvIikpKQorKyAgICAgICAgICAgIHRlbXBQYXRoICs9IFFMYXRpbjFTdHJpbmco Ii9hcHAvIikgKyBmbGF0cGFrSWQ7CisgICAgICAgICByZXR1cm4gdGVtcFBhdGg7CisrICAgIH0K KyAKKyAgICAgdGVtcFBhdGggPSBRU3RhbmRhcmRQYXRoczo6d3JpdGFibGVMb2NhdGlvbihRU3Rh bmRhcmRQYXRoczo6R2VuZXJpY0NhY2hlTG9jYXRpb24pOworIAorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXh0aGVt ZXMuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L3Fn ZW5lcmljdW5peHRoZW1lcy5jcHAKK2luZGV4IGNiMWIzOWRiNjQuLjZlMDFhZjA1MmMgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdl bmVyaWN1bml4dGhlbWVzLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhl bWVzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHRoZW1lcy5jcHAKK0BAIC03NTUsNiArNzU1LDkg QEAgUVZhcmlhbnQgUUdub21lVGhlbWU6OnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6VGhlbWVI aW50IGhpbnQpIGNvbnN0CisgICAgICAgICByZXR1cm4gUVZhcmlhbnQoUUNoYXIoMHgyMDIyKSk7 CisgICAgIGNhc2UgUVBsYXRmb3JtVGhlbWU6OlVpRWZmZWN0czoKKyAgICAgICAgIHJldHVybiBR VmFyaWFudChpbnQoSG92ZXJFZmZlY3QpKTsKKysgICAgY2FzZSBRUGxhdGZvcm1UaGVtZTo6QnV0 dG9uUHJlc3NLZXlzOgorKyAgICAgICAgcmV0dXJuIFFWYXJpYW50Ojpmcm9tVmFsdWUoCisrICAg ICAgICAgICAgICAgIFFMaXN0PFF0OjpLZXk+KHsgUXQ6OktleV9TcGFjZSwgUXQ6OktleV9SZXR1 cm4sIFF0OjpLZXlfRW50ZXIsIFF0OjpLZXlfU2VsZWN0IH0pKTsKKyAgICAgZGVmYXVsdDoKKyAg ICAgICAgIGJyZWFrOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy9lZ2xmcy9hcGkvcWVnbGZzY3Vyc29yLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5jcHAKK2luZGV4IDk4ZTA1MTk1ZWUuLjFl OTJmNDNkZWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZz L2FwaS9xZWdsZnNjdXJzb3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L2VnbGZzL2FwaS9xZWdsZnNjdXJzb3IuY3BwCitAQCAtMzQzLDggKzM0Myw3IEBAIHZvaWQgUUVn bEZTQ3Vyc29yOjpwYWludE9uU2NyZWVuKCkKKyAgICAgLy8gc2NyZWVucyBhcmUgc2libGluZ3Mg b2YgZWFjaCBvdGhlci4gV2hlbiBub3QgZW5hYmxlZCwgdGhlIHNpYmxpbmcgbGlzdAorICAgICAv LyBvbmx5IGNvbnRhaW5zIG1fc2NyZWVuIGl0c2VsZi4KKyAgICAgZm9yIChRUGxhdGZvcm1TY3Jl ZW4gKnNjcmVlbiA6IG1fc2NyZWVuLT52aXJ0dWFsU2libGluZ3MoKSkgeworLSAgICAgICAgaWYg KHNjcmVlbi0+Z2VvbWV0cnkoKS5jb250YWlucyhjci50b3BMZWZ0KCkudG9Qb2ludCgpICsgbV9j dXJzb3IuaG90U3BvdCkKKy0gICAgICAgICAgICAmJiBRT3BlbkdMQ29udGV4dDo6Y3VycmVudENv bnRleHQoKS0+c2NyZWVuKCkgPT0gc2NyZWVuLT5zY3JlZW4oKSkKKysgICAgICAgIGlmIChzY3Jl ZW4tPmdlb21ldHJ5KCkuY29udGFpbnMoY3IudG9wTGVmdCgpLnRvUG9pbnQoKSArIG1fY3Vyc29y LmhvdFNwb3QpKQorICAgICAgICAgeworICAgICAgICAgICAgIGNyLnRyYW5zbGF0ZSgtc2NyZWVu LT5nZW9tZXRyeSgpLnRvcExlZnQoKSk7CisgICAgICAgICAgICAgY29uc3QgUVNpemUgc2NyZWVu U2l6ZSA9IHNjcmVlbi0+Z2VvbWV0cnkoKS5zaXplKCk7CitAQCAtNDY4LDExICs0NjcsMTIgQEAg dm9pZCBRRWdsRlNDdXJzb3I6OmRyYXcoY29uc3QgUVJlY3RGICZyKQorIHsKKyAgICAgU3RhdGVT YXZlciBzdGF0ZVNhdmVyOworIAorLSAgICBRRWdsRlNDdXJzb3JEYXRhICZnZnggPSBzdGF0aWNf Y2FzdDxRRWdsRlNDb250ZXh0Kj4oUU9wZW5HTENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCktPmhh bmRsZSgpKS0+Y3Vyc29yRGF0YTsKKy0gICAgaWYgKCFnZngucHJvZ3JhbSkgeworLSAgICAgICAg Ly8gb25lIHRpbWUgaW5pdGlhbGl6YXRpb24KKysgICAgLy8gb25lIHRpbWUgaW5pdGlhbGl6YXRp b24KKysgICAgaWYgKCFRT3BlbkdMRnVuY3Rpb25zOjpkX3B0cikKKyAgICAgICAgIGluaXRpYWxp emVPcGVuR0xGdW5jdGlvbnMoKTsKKyAKKysgICAgUUVnbEZTQ3Vyc29yRGF0YSAmZ2Z4ID0gc3Rh dGljX2Nhc3Q8UUVnbEZTQ29udGV4dCo+KFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgp LT5oYW5kbGUoKSktPmN1cnNvckRhdGE7CisrICAgIGlmICghZ2Z4LnByb2dyYW0pIHsKKyAgICAg ICAgIGNyZWF0ZVNoYWRlclByb2dyYW1zKCk7CisgCisgICAgICAgICBpZiAoIWdmeC5hdGxhc1Rl eHR1cmUpIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZz L2RldmljZWludGVncmF0aW9uL2VnbGZzX2ttc19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVy LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRp b24vZWdsZnNfa21zX3N1cHBvcnQvcWVnbGZza21zZXZlbnRyZWFkZXIuY3BwCitpbmRleCA2NDVh MGFlMmU5Li4zZTBlNDA2ZjFhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy9lZ2xmcy9kZXZpY2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNl dmVudHJlYWRlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMv ZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21zX3N1cHBvcnQvcWVnbGZza21zZXZlbnRyZWFkZXIu Y3BwCitAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgUUVnbEZTS21zRXZlbnRSZWFkZXI6OmNyZWF0 ZShRRWdsRlNLbXNEZXZpY2UgKmRldmljZSkKKyAKKyAgICAgbV9kZXZpY2UgPSBkZXZpY2U7Cisg CistICAgIHFDRGVidWcocUxjRWdsZnNLbXNEZWJ1ZywgIkluaXRhbGl6aW5nIGV2ZW50IHJlYWRl ciBmb3IgZGV2aWNlICVwIGZkICVkIiwKKysgICAgcUNEZWJ1ZyhxTGNFZ2xmc0ttc0RlYnVnLCAi SW5pdGlhbGl6aW5nIGV2ZW50IHJlYWRlciBmb3IgZGV2aWNlICVwIGZkICVkIiwKKyAgICAgICAg ICAgICBtX2RldmljZSwgbV9kZXZpY2UtPmZkKCkpOworIAorICAgICBtX3RocmVhZCA9IG5ldyBR RWdsRlNLbXNFdmVudFJlYWRlclRocmVhZChtX2RldmljZS0+ZmQoKSk7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0 aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3Jl ZW5pbnRlZ3JhdGlvbi5jcHAKK2luZGV4IDE0MWZiNjhhMjMuLmQ0Mjk0ZDQyNWEgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50 ZWdyYXRpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVl bi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uY3BwCitAQCAtMTIyLDExICsxMjIsMTMgQEAgUU9mZnNj cmVlbkludGVncmF0aW9uOjpRT2Zmc2NyZWVuSW50ZWdyYXRpb24oKQorICNlbmRpZgorICAgICBt X3NlcnZpY2VzLnJlc2V0KG5ldyBRUGxhdGZvcm1TZXJ2aWNlcyk7CisgCistICAgIFFXaW5kb3dT eXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVNjcmVlbkFkZGVkKG5ldyBRT2Zmc2NyZWVuU2NyZWVuKTsK KysgICAgbV9zY3JlZW4gPSBuZXcgUU9mZnNjcmVlblNjcmVlbjsKKysgICAgUVdpbmRvd1N5c3Rl bUludGVyZmFjZTo6aGFuZGxlU2NyZWVuQWRkZWQobV9zY3JlZW4pOworIH0KKyAKKyBRT2Zmc2Ny ZWVuSW50ZWdyYXRpb246On5RT2Zmc2NyZWVuSW50ZWdyYXRpb24oKQorIHsKKysgICAgUVdpbmRv d1N5c3RlbUludGVyZmFjZTo6aGFuZGxlU2NyZWVuUmVtb3ZlZChtX3NjcmVlbik7CisgfQorIAor IHZvaWQgUU9mZnNjcmVlbkludGVncmF0aW9uOjppbml0aWFsaXplKCkKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRp b24uaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5p bnRlZ3JhdGlvbi5oCitpbmRleCAwZWE5MGY2YzJmLi5mZTAwZmRlMDdjIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0 aW9uLmgKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZz Y3JlZW5pbnRlZ3JhdGlvbi5oCitAQCAtODQsNiArODQsNyBAQCBwcm90ZWN0ZWQ6CisgI2VuZGlm CisgICAgIFFTY29wZWRQb2ludGVyPFFQbGF0Zm9ybUlucHV0Q29udGV4dD4gbV9pbnB1dENvbnRl eHQ7CisgICAgIFFTY29wZWRQb2ludGVyPFFQbGF0Zm9ybVNlcnZpY2VzPiBtX3NlcnZpY2VzOwor KyAgICBRUGxhdGZvcm1TY3JlZW4gKm1fc2NyZWVuOworICAgICBtdXRhYmxlIFFTY29wZWRQb2lu dGVyPFFQbGF0Zm9ybU5hdGl2ZUludGVyZmFjZT4gbV9uYXRpdmVJbnRlcmZhY2U7CisgfTsKKyAK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRv d3NnbGNvbnRleHQuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3 aW5kb3dzZ2xjb250ZXh0LmNwcAoraW5kZXggNmZhNWE4YTJiMy4uMWY0OWYwYWVmZCAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c2dsY29u dGV4dC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2lu ZG93c2dsY29udGV4dC5jcHAKK0BAIC00OCw2ICs0OCw3IEBACisgI2luY2x1ZGUgPHFwYS9xcGxh dGZvcm1uYXRpdmVpbnRlcmZhY2UuaD4KKyAjaW5jbHVkZSA8UXRQbGF0Zm9ybUhlYWRlcnMvcXdn bG5hdGl2ZWNvbnRleHQuaD4KKyAKKysjaW5jbHVkZSA8cHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9w Lmg+CisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKyAKKyAjaW5jbHVkZSA8d2luZ2RpLmg+CitAQCAt MTYyLDE5ICsxNjMsMjUgQEAgUUZ1bmN0aW9uUG9pbnRlciBRV2luZG93c09wZW5nbDMyRExMOjpy ZXNvbHZlKGNvbnN0IGNoYXIgKm5hbWUpCisgCisgYm9vbCBRV2luZG93c09wZW5nbDMyRExMOjpp bml0KGJvb2wgc29mdHdhcmVSZW5kZXJpbmcpCisgeworLSAgICBjb25zdCBRQnl0ZUFycmF5IG9w ZW5nbDMyID0gUUJ5dGVBcnJheUxpdGVyYWwoIm9wZW5nbDMyLmRsbCIpOworLSAgICBjb25zdCBR Qnl0ZUFycmF5IHN3b3BlbmdsID0gUUJ5dGVBcnJheUxpdGVyYWwoIm9wZW5nbDMyc3cuZGxsIik7 CisrICAgIGNvbnN0IFFCeXRlQXJyYXkgb3BlbmdsMzIgPSBRQnl0ZUFycmF5TGl0ZXJhbCgib3Bl bmdsMzIiKTsKKysgICAgY29uc3QgUUJ5dGVBcnJheSBzd29wZW5nbCA9IFFCeXRlQXJyYXlMaXRl cmFsKCJvcGVuZ2wzMnN3Iik7CisrICAgIGJvb2wgdXNlU3lzdGVtTGliID0gZmFsc2U7CisgCisg ICAgIFFCeXRlQXJyYXkgb3BlbmdsRGxsID0gcWdldGVudigiUVRfT1BFTkdMX0RMTCIpOworLSAg ICBpZiAob3BlbmdsRGxsLmlzRW1wdHkoKSkKKysgICAgaWYgKG9wZW5nbERsbC5pc0VtcHR5KCkp IHsKKyAgICAgICAgIG9wZW5nbERsbCA9IHNvZnR3YXJlUmVuZGVyaW5nID8gc3dvcGVuZ2wgOiBv cGVuZ2wzMjsKKysgICAgICAgIHVzZVN5c3RlbUxpYiA9ICFzb2Z0d2FyZVJlbmRlcmluZzsKKysg ICAgfQorIAorICAgICBvcGVuZ2xEbGwgPSBvcGVuZ2xEbGwudG9Mb3dlcigpOworICAgICBtX25v bk9wZW5nbDMyID0gb3BlbmdsRGxsICE9IG9wZW5nbDMyOworIAorICAgICBxQ0RlYnVnKGxjUXBh R2wpIDw8ICJRdDogVXNpbmcgV0dMIGFuZCBPcGVuR0wgZnJvbSIgPDwgb3BlbmdsRGxsOworIAor LSAgICBtX2xpYiA9IDo6TG9hZExpYnJhcnlBKG9wZW5nbERsbC5jb25zdERhdGEoKSk7CisrICAg IGlmICh1c2VTeXN0ZW1MaWIpCisrICAgICAgICBtX2xpYiA9IFFTeXN0ZW1MaWJyYXJ5Ojpsb2Fk KCh3Y2hhcl90KikoUVN0cmluZzo6ZnJvbUxhdGluMShvcGVuZ2xEbGwpLnV0ZjE2KCkpKTsKKysg ICAgZWxzZQorKyAgICAgICAgbV9saWIgPSBMb2FkTGlicmFyeUEob3BlbmdsRGxsLmNvbnN0RGF0 YSgpKTsKKyAgICAgaWYgKCFtX2xpYikgeworICAgICAgICAgcUVycm5vV2FybmluZyg6OkdldExh c3RFcnJvcigpLCAiRmFpbGVkIHRvIGxvYWQgJXMiLCBvcGVuZ2xEbGwuY29uc3REYXRhKCkpOwor ICAgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTE4NCw3ICsxOTEsNyBAQCBib29sIFFXaW5kb3dz T3BlbmdsMzJETEw6OmluaXQoYm9vbCBzb2Z0d2FyZVJlbmRlcmluZykKKyAgICAgICAgIC8vIExv YWQgb3BlbmdsMzIuZGxsIGFsd2F5cy4gR0RJIGZ1bmN0aW9ucyBsaWtlIENob29zZVBpeGVsRm9y bWF0IGRvCisgICAgICAgICAvLyBHZXRNb2R1bGVIYW5kbGUgZm9yIG9wZW5nbDMyLmRsbCBhbmQg YmVoYXZlIGRpZmZlcmVudGx5IChhbmQgY2FsbCBiYWNrIGludG8KKyAgICAgICAgIC8vIG9wZW5n bDMyKSB3aGVuIHRoZSBtb2R1bGUgaXMgcHJlc2VudC4gVGhpcyBpcyBmaW5lIGZvciBkdW1teSBj b250ZXh0cyBhbmQgd2luZG93cy4KKy0gICAgICAgIDo6TG9hZExpYnJhcnlBKCJvcGVuZ2wzMi5k bGwiKTsKKysgICAgICAgIFFTeXN0ZW1MaWJyYXJ5Ojpsb2FkKEwib3BlbmdsMzIiKTsKKyAgICAg fQorIAorICAgICB3Z2xDcmVhdGVDb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxIR0xSQyAoV0lO QVBJICopKEhEQyk+KHJlc29sdmUoIndnbENyZWF0ZUNvbnRleHQiKSk7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzb3BlbmdsdGVzdGVy LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c29wZW5n bHRlc3Rlci5jcHAKK2luZGV4IGQ3ZDE4NmU4MDQuLjllYjQwMTFiZjIgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NvcGVuZ2x0ZXN0ZXIu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3Nv cGVuZ2x0ZXN0ZXIuY3BwCitAQCAtNDksNiArNDksNyBAQAorICNpbmNsdWRlIDxRdENvcmUvcXN0 YW5kYXJkcGF0aHMuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3FsaWJyYXJ5aW5mby5oPgorICNpbmNs dWRlIDxRdENvcmUvcWhhc2guaD4KKysjaW5jbHVkZSA8cHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9w Lmg+CisgCisgI2lmbmRlZiBRVF9OT19PUEVOR0wKKyAjaW5jbHVkZSA8cHJpdmF0ZS9xb3Blbmds X3AuaD4KK0BAIC0zOTYsNyArMzk3LDcgQEAgYm9vbCBRV2luZG93c09wZW5HTFRlc3Rlcjo6dGVz dERlc2t0b3BHTCgpCisgCisgICAgIC8vIFRlc3QgIzE6IExvYWQgb3BlbmdsMzIuZGxsIGFuZCB0 cnkgdG8gcmVzb2x2ZSBhbiBPcGVuR0wgMiBmdW5jdGlvbi4KKyAgICAgLy8gVGhpcyB3aWxsIHR5 cGljYWxseSBmYWlsIG9uIHN5c3RlbXMgdGhhdCBkbyBub3QgaGF2ZSBhIHJlYWwgT3BlbkdMIGRy aXZlci4KKy0gICAgbGliID0gTG9hZExpYnJhcnlBKCJvcGVuZ2wzMi5kbGwiKTsKKysgICAgbGli ID0gUVN5c3RlbUxpYnJhcnk6OmxvYWQoTCJvcGVuZ2wzMiIpOworICAgICBpZiAobGliKSB7Cisg ICAgICAgICBDcmVhdGVDb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxDcmVhdGVDb250ZXh0VHlw ZT4oCisgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxRRnVuY3Rpb25Qb2ludGVyPig6Okdl dFByb2NBZGRyZXNzKGxpYiwgIndnbENyZWF0ZUNvbnRleHQiKSkpOworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL25hdGl2ZXBhaW50aW5nL3F0ZXNzZWxsYXRv ci5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9uYXRpdmVwYWludGluZy9x dGVzc2VsbGF0b3IuY3BwCitpbmRleCAxYWZhMDBjZmM5Li4xMThhZjZjZTczIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcvcXRlc3Nl bGxhdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvbmF0aXZl cGFpbnRpbmcvcXRlc3NlbGxhdG9yLmNwcAorQEAgLTQxLDYgKzQxLDcgQEAKKyAKKyAjaW5jbHVk ZSA8UVJlY3Q+CisgI2luY2x1ZGUgPFFMaXN0PgorKyNpbmNsdWRlIDxRTWFwPgorICNpbmNsdWRl IDxRRGVidWc+CisgCisgI2luY2x1ZGUgPHFtYXRoLmg+CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmNvbm5lY3Rpb24uY3BwIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmNvbm5lY3Rpb24uY3BwCitpbmRleCA5ZTJhMzdhNmEx Li5lNmUxNzVhMTE4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94 Y2IvcXhjYmNvbm5lY3Rpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1z L3hjYi9xeGNiY29ubmVjdGlvbi5jcHAKK0BAIC00ODgsMTIgKzQ4OCwxMiBAQCB2b2lkIFFYY2JD b25uZWN0aW9uOjpwcmludFhjYkVycm9yKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHhjYl9nZW5lcmlj X2Vycm9yX3QgKmVycgorICAgICB1aW50IGNsYW1wZWRfZXJyb3JfY29kZSA9IHFNaW48dWludD4o ZXJyb3ItPmVycm9yX2NvZGUsIChzaXplb2YoeGNiX2Vycm9ycykgLyBzaXplb2YoeGNiX2Vycm9y c1swXSkpIC0gMSk7CisgICAgIHVpbnQgY2xhbXBlZF9tYWpvcl9jb2RlID0gcU1pbjx1aW50Pihl cnJvci0+bWFqb3JfY29kZSwgKHNpemVvZih4Y2JfcHJvdG9jb2xfcmVxdWVzdF9jb2RlcykgLyBz aXplb2YoeGNiX3Byb3RvY29sX3JlcXVlc3RfY29kZXNbMF0pKSAtIDEpOworIAorLSAgICBxQ1dh cm5pbmcobGNRcGFYY2IsICIlczogJWQgKCVzKSwgc2VxdWVuY2U6ICVkLCByZXNvdXJjZSBpZDog JWQsIG1ham9yIGNvZGU6ICVkICglcyksIG1pbm9yIGNvZGU6ICVkIiwKKy0gICAgICAgICAgICAg bWVzc2FnZSwKKy0gICAgICAgICAgICAgaW50KGVycm9yLT5lcnJvcl9jb2RlKSwgeGNiX2Vycm9y c1tjbGFtcGVkX2Vycm9yX2NvZGVdLAorLSAgICAgICAgICAgICBpbnQoZXJyb3ItPnNlcXVlbmNl KSwgaW50KGVycm9yLT5yZXNvdXJjZV9pZCksCistICAgICAgICAgICAgIGludChlcnJvci0+bWFq b3JfY29kZSksIHhjYl9wcm90b2NvbF9yZXF1ZXN0X2NvZGVzW2NsYW1wZWRfbWFqb3JfY29kZV0s CistICAgICAgICAgICAgIGludChlcnJvci0+bWlub3JfY29kZSkpOworKyAgICBxQ0RlYnVnKGxj UXBhWGNiLCAiJXM6ICVkICglcyksIHNlcXVlbmNlOiAlZCwgcmVzb3VyY2UgaWQ6ICVkLCBtYWpv ciBjb2RlOiAlZCAoJXMpLCBtaW5vciBjb2RlOiAlZCIsCisrICAgICAgICAgICAgbWVzc2FnZSwK KysgICAgICAgICAgICBpbnQoZXJyb3ItPmVycm9yX2NvZGUpLCB4Y2JfZXJyb3JzW2NsYW1wZWRf ZXJyb3JfY29kZV0sCisrICAgICAgICAgICAgaW50KGVycm9yLT5zZXF1ZW5jZSksIGludChlcnJv ci0+cmVzb3VyY2VfaWQpLAorKyAgICAgICAgICAgIGludChlcnJvci0+bWFqb3JfY29kZSksIHhj Yl9wcm90b2NvbF9yZXF1ZXN0X2NvZGVzW2NsYW1wZWRfbWFqb3JfY29kZV0sCisrICAgICAgICAg ICAgaW50KGVycm9yLT5taW5vcl9jb2RlKSk7CisgfQorIAorIHN0YXRpYyBRdDo6TW91c2VCdXR0 b25zIHRyYW5zbGF0ZU1vdXNlQnV0dG9ucyhpbnQgcykKK0BAIC03MDIsNiArNzAyLDggQEAgdm9p ZCBRWGNiQ29ubmVjdGlvbjo6aGFuZGxlWGNiRXZlbnQoeGNiX2dlbmVyaWNfZXZlbnRfdCAqZXZl bnQpCisgICAgICAgICAgICAgUVhjYlZpcnR1YWxEZXNrdG9wICp2aXJ0dWFsRGVza3RvcCA9IHZp cnR1YWxEZXNrdG9wRm9yUm9vdFdpbmRvdyhwcm9wZXJ0eU5vdGlmeS0+d2luZG93KTsKKyAgICAg ICAgICAgICBpZiAodmlydHVhbERlc2t0b3ApCisgICAgICAgICAgICAgICAgIHZpcnR1YWxEZXNr dG9wLT51cGRhdGVXb3JrQXJlYSgpOworKyAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eU5vdGlm eS0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpfTkVUX1NVUFBPUlRFRCkpIHsKKysgICAgICAgICAg ICBtX3dtU3VwcG9ydC0+dXBkYXRlTmV0V01BdG9tcygpOworICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgICBIQU5ETEVfUExBVEZPUk1fV0lORE9XX0VWRU5UKHhjYl9wcm9wZXJ0eV9ub3Rp ZnlfZXZlbnRfdCwgd2luZG93LCBoYW5kbGVQcm9wZXJ0eU5vdGlmeUV2ZW50KTsKKyAgICAgICAg IH0KK0BAIC03NTAsNyArNzUyLDcgQEAgdm9pZCBRWGNiQ29ubmVjdGlvbjo6aGFuZGxlWGNiRXZl bnQoeGNiX2dlbmVyaWNfZXZlbnRfdCAqZXZlbnQpCisgICAgICAgICAgICAgICAgIGNhc2UgWENC X1hLQl9ORVdfS0VZQk9BUkRfTk9USUZZOiB7CisgICAgICAgICAgICAgICAgICAgICB4Y2JfeGti X25ld19rZXlib2FyZF9ub3RpZnlfZXZlbnRfdCAqZXYgPSAmeGtiX2V2ZW50LT5uZXdfa2V5Ym9h cmRfbm90aWZ5OworICAgICAgICAgICAgICAgICAgICAgaWYgKGV2LT5jaGFuZ2VkICYgWENCX1hL Ql9OS05fREVUQUlMX0tFWUNPREVTKQorLSAgICAgICAgICAgICAgICAgICAgICAgIG1fa2V5Ym9h cmQtPnVwZGF0ZUtleW1hcChldik7CisrICAgICAgICAgICAgICAgICAgICAgICAgbV9rZXlib2Fy ZC0+dXBkYXRlS2V5bWFwKCk7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICBkZWZhdWx0OgorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JpbnRlZ3JhdGlvbi5jcHAgYi9xdGJhc2Uv c3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRpb24uY3BwCitpbmRleCA3Njg2 OWNlZDYwLi4wMmQyZWViYjU2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy94Y2IvcXhjYmludGVncmF0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3Jtcy94Y2IvcXhjYmludGVncmF0aW9uLmNwcAorQEAgLTI3NCw4ICsyNzQsNyBAQCBRUGxh dGZvcm1XaW5kb3cgKlFYY2JJbnRlZ3JhdGlvbjo6Y3JlYXRlRm9yZWlnbldpbmRvdyhRV2luZG93 ICp3aW5kb3csIFdJZCBuYXRpdgorICNpZm5kZWYgUVRfTk9fT1BFTkdMCisgUVBsYXRmb3JtT3Bl bkdMQ29udGV4dCAqUVhjYkludGVncmF0aW9uOjpjcmVhdGVQbGF0Zm9ybU9wZW5HTENvbnRleHQo UU9wZW5HTENvbnRleHQgKmNvbnRleHQpIGNvbnN0CisgeworLSAgICBRWGNiU2NyZWVuICpzY3Jl ZW4gPSBzdGF0aWNfY2FzdDxRWGNiU2NyZWVuICo+KGNvbnRleHQtPnNjcmVlbigpLT5oYW5kbGUo KSk7CistICAgIFFYY2JHbEludGVncmF0aW9uICpnbEludGVncmF0aW9uID0gc2NyZWVuLT5jb25u ZWN0aW9uKCktPmdsSW50ZWdyYXRpb24oKTsKKysgICAgUVhjYkdsSW50ZWdyYXRpb24gKmdsSW50 ZWdyYXRpb24gPSBkZWZhdWx0Q29ubmVjdGlvbigpLT5nbEludGVncmF0aW9uKCk7CisgICAgIGlm ICghZ2xJbnRlZ3JhdGlvbikgeworICAgICAgICAgcVdhcm5pbmcoIlFYY2JJbnRlZ3JhdGlvbjog Q2Fubm90IGNyZWF0ZSBwbGF0Zm9ybSBPcGVuR0wgY29udGV4dCwgbmVpdGhlciBHTFggbm9yIEVH TCBhcmUgZW5hYmxlZCIpOworICAgICAgICAgcmV0dXJuIG51bGxwdHI7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmNwcCBiL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAKK2luZGV4IGVmZWNk N2UyZDEuLmU4Mjg2MzgxYTIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm1zL3hjYi9xeGNia2V5Ym9hcmQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm1zL3hjYi9xeGNia2V5Ym9hcmQuY3BwCitAQCAtMzY1LDE3ICszNjUsNiBAQCB2b2lkIFFYY2JL ZXlib2FyZDo6dXBkYXRlS2V5bWFwKHhjYl9tYXBwaW5nX25vdGlmeV9ldmVudF90ICpldmVudCkK KyAgICAgdXBkYXRlS2V5bWFwKCk7CisgfQorIAorLXZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVL ZXltYXAoeGNiX3hrYl9uZXdfa2V5Ym9hcmRfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorLXsKKy0g ICAgaWYgKCFldmVudCkKKy0gICAgICAgIHJldHVybjsKKy0KKy0gICAgaWYgKGV2ZW50LT5kZXZp Y2VJRCAhPSBldmVudC0+b2xkRGV2aWNlSUQpCistICAgICAgICBtX2NvbmZpZyA9IGZhbHNlOwor LQorLSAgICB1cGRhdGVLZXltYXAoKTsKKy19CistCisgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0 ZUtleW1hcCgpCisgeworICAgICBLZXlzeW1Nb2RpZmllck1hcCBrZXlzeW1Nb2RzOworQEAgLTM4 Myw2ICszNzIsOCBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyAgICAgICAg IGtleXN5bU1vZHMgPSBrZXlzeW1zVG9Nb2RpZmllcnMoKTsKKyAgICAgdXBkYXRlTW9kaWZpZXJz KGtleXN5bU1vZHMpOworIAorKyAgICBtX2NvbmZpZyA9IHRydWU7CisrCisgICAgIGlmICghbV94 a2JDb250ZXh0KSB7CisgICAgICAgICBtX3hrYkNvbnRleHQucmVzZXQoeGtiX2NvbnRleHRfbmV3 KFhLQl9DT05URVhUX05PX0RFRkFVTFRfSU5DTFVERVMpKTsKKyAgICAgICAgIGlmICghbV94a2JD b250ZXh0KSB7CitAQCAtMzk4LDEzICszODksOCBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRl S2V5bWFwKCkKKyAgICAgaWYgKGNvbm5lY3Rpb24oKS0+aGFzWEtCKCkpIHsKKyAgICAgICAgIG1f eGtiS2V5bWFwLnJlc2V0KHhrYl94MTFfa2V5bWFwX25ld19mcm9tX2RldmljZShtX3hrYkNvbnRl eHQuZ2V0KCksIHhjYl9jb25uZWN0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZV9kZXZpY2VfaWQsIFhLQl9LRVlNQVBf Q09NUElMRV9OT19GTEFHUykpOworLSAgICAgICAgaWYgKG1feGtiS2V5bWFwKSB7CistICAgICAg ICAgICAgaWYgKG1fY29uZmlnKQorLSAgICAgICAgICAgICAgICBtX3hrYlN0YXRlLnJlc2V0KHhr Yl9zdGF0ZV9uZXcobV94a2JLZXltYXAuZ2V0KCkpKTsKKy0gICAgICAgICAgICBlbHNlCistICAg ICAgICAgICAgICAgIG1feGtiU3RhdGUucmVzZXQoeGtiX3gxMV9zdGF0ZV9uZXdfZnJvbV9kZXZp Y2UobV94a2JLZXltYXAuZ2V0KCksIHhjYl9jb25uZWN0aW9uKCksIGNvcmVfZGV2aWNlX2lkKSk7 CistCistICAgICAgICB9CisrICAgICAgICBpZiAobV94a2JLZXltYXApCisrICAgICAgICAgICAg bV94a2JTdGF0ZS5yZXNldCh4a2JfeDExX3N0YXRlX25ld19mcm9tX2RldmljZShtX3hrYktleW1h cC5nZXQoKSwgeGNiX2Nvbm5lY3Rpb24oKSwgY29yZV9kZXZpY2VfaWQpKTsKKyAgICAgfSBlbHNl IHsKKyAgICAgICAgIG1feGtiS2V5bWFwLnJlc2V0KGtleW1hcEZyb21Db3JlKGtleXN5bU1vZHMp KTsKKyAgICAgICAgIGlmIChtX3hrYktleW1hcCkKK0BAIC00MjUsOCArNDExLDYgQEAgdm9pZCBR WGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCgpCisgICAgIHVwZGF0ZVhLQk1vZHMoKTsKKyAKKyAg ICAgUVhrYkNvbW1vbjo6dmVyaWZ5SGFzTGF0aW5MYXlvdXQobV94a2JLZXltYXAuZ2V0KCkpOwor LQorLSAgICBtX2NvbmZpZyA9IHRydWU7CisgfQorIAorIFFMaXN0PGludD4gUVhjYktleWJvYXJk Ojpwb3NzaWJsZUtleXMoY29uc3QgUUtleUV2ZW50ICpldmVudCkgY29uc3QKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuaCBiL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5oCitpbmRleCBiNjUyYzg1 ZmUzLi4wZWUwOGFlZmYyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt cy94Y2IvcXhjYmtleWJvYXJkLmgKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv eGNiL3F4Y2JrZXlib2FyZC5oCitAQCAtNjksNyArNjksNiBAQCBwdWJsaWM6CisgCisgICAgIFF0 OjpLZXlib2FyZE1vZGlmaWVycyB0cmFuc2xhdGVNb2RpZmllcnMoaW50IHMpIGNvbnN0OworICAg ICB2b2lkIHVwZGF0ZUtleW1hcCh4Y2JfbWFwcGluZ19ub3RpZnlfZXZlbnRfdCAqZXZlbnQpOwor LSAgICB2b2lkIHVwZGF0ZUtleW1hcCh4Y2JfeGtiX25ld19rZXlib2FyZF9ub3RpZnlfZXZlbnRf dCAqZXZlbnQpOworICAgICB2b2lkIHVwZGF0ZUtleW1hcCgpOworICAgICBRTGlzdDxpbnQ+IHBv c3NpYmxlS2V5cyhjb25zdCBRS2V5RXZlbnQgKmV2ZW50KSBjb25zdDsKKyAKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmNwcCBiL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuY3BwCitpbmRleCBmZmRhN2I2 YTU3Li44NjNlOTYxZjRjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt cy94Y2IvcXhjYndpbmRvdy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv eGNiL3F4Y2J3aW5kb3cuY3BwCitAQCAtNTY0LDExICs1NjQsNiBAQCB2b2lkIFFYY2JXaW5kb3c6 OnNldEdlb21ldHJ5KGNvbnN0IFFSZWN0ICZyZWN0KQorIHsKKyAgICAgUVBsYXRmb3JtV2luZG93 OjpzZXRHZW9tZXRyeShyZWN0KTsKKyAKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpT ZXRHZW9tZXRyeSkpIHsKKy0gICAgICAgIG1fZGVmZXJyZWRHZW9tZXRyeSA9IHJlY3Q7CistICAg ICAgICByZXR1cm47CistICAgIH0KKy0KKyAgICAgcHJvcGFnYXRlU2l6ZUhpbnRzKCk7CisgCisg ICAgIFFYY2JTY3JlZW4gKmN1cnJlbnRTY3JlZW4gPSB4Y2JTY3JlZW4oKTsKK0BAIC02OTMsOSAr Njg4LDYgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKKyAKKyB2 b2lkIFFYY2JXaW5kb3c6OnNob3coKQorIHsKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNr OjpNYXApKQorLSAgICAgICAgcmV0dXJuOworLQorICAgICBpZiAod2luZG93KCktPmlzVG9wTGV2 ZWwoKSkgeworIAorICAgICAgICAgLy8gdXBkYXRlIFdNX05PUk1BTF9ISU5UUworQEAgLTcwNiw3 ICs2OTgsNyBAQCB2b2lkIFFYY2JXaW5kb3c6OnNob3coKQorICAgICAgICAgaWYgKGlzVHJhbnNp ZW50KHdpbmRvdygpKSkgeworICAgICAgICAgICAgIGNvbnN0IFFXaW5kb3cgKnRwID0gd2luZG93 KCktPnRyYW5zaWVudFBhcmVudCgpOworICAgICAgICAgICAgIGlmICh0cCAmJiB0cC0+aGFuZGxl KCkpCistICAgICAgICAgICAgICAgIHRyYW5zaWVudFhjYlBhcmVudCA9IHN0YXRpY19jYXN0PGNv bnN0IFFYY2JXaW5kb3cgKj4odHAtPmhhbmRsZSgpKS0+d2luSWQoKTsKKysgICAgICAgICAgICAg ICAgdHJhbnNpZW50WGNiUGFyZW50ID0gdHAtPmhhbmRsZSgpLT53aW5JZCgpOworICAgICAgICAg ICAgIC8vIERlZmF1bHQgdG8gY2xpZW50IGxlYWRlciBpZiB0aGVyZSBpcyBubyB0cmFuc2llbnQg cGFyZW50LCBlbHNlIG1vZGFsIGRpYWxvZ3MgY2FuCisgICAgICAgICAgICAgLy8gYmUgaGlkZGVu IGJ5IHRoZWlyIHBhcmVudHMuCisgICAgICAgICAgICAgaWYgKCF0cmFuc2llbnRYY2JQYXJlbnQp CitAQCAtNzQ2LDEwICs3MzgsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNob3coKQorIAorIHZvaWQg UVhjYldpbmRvdzo6aGlkZSgpCisgeworLSAgICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6OlVu bWFwKSkKKy0gICAgICAgIHJldHVybjsKKy0KKy0gICAgbV93bVN0YXRlVmFsaWQgPSBmYWxzZTsK KyAgICAgeGNiX3VubWFwX3dpbmRvdyh4Y2JfY29ubmVjdGlvbigpLCBtX3dpbmRvdyk7CisgCisg ICAgIC8vIHNlbmQgc3ludGhldGljIFVubWFwTm90aWZ5IGV2ZW50IGFjY29yZGluZyB0byBpY2Nj bSA0LjEuNAorQEAgLTkwOSw5ICs4OTcsNiBAQCBRWGNiV2luZG93OjpOZXRXbVN0YXRlcyBRWGNi V2luZG93OjpuZXRXbVN0YXRlcygpCisgCisgdm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dGbGFn cyhRdDo6V2luZG93RmxhZ3MgZmxhZ3MpCisgeworLSAgICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRh c2s6OlNldFdpbmRvd0ZsYWdzKSkKKy0gICAgICAgIHJldHVybjsKKy0KKyAgICAgUXQ6OldpbmRv d1R5cGUgdHlwZSA9IHN0YXRpY19jYXN0PFF0OjpXaW5kb3dUeXBlPihpbnQoZmxhZ3MgJiBRdDo6 V2luZG93VHlwZV9NYXNrKSk7CisgCisgICAgIGlmICh0eXBlID09IFF0OjpUb29sVGlwKQorQEAg LTk0MSw4ICs5MjYsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldFdpbmRvd0ZsYWdzKFF0OjpXaW5k b3dGbGFncyBmbGFncykKKyAKKyAgICAgc2V0VHJhbnNwYXJlbnRGb3JNb3VzZUV2ZW50cyhmbGFn cyAmIFF0OjpXaW5kb3dUcmFuc3BhcmVudEZvcklucHV0KTsKKyAgICAgdXBkYXRlRG9lc05vdEFj Y2VwdEZvY3VzKGZsYWdzICYgUXQ6OldpbmRvd0RvZXNOb3RBY2NlcHRGb2N1cyk7CistCistICAg IG1faXNXbU1hbmFnZWRXaW5kb3cgPSAhKGZsYWdzICYgUXQ6OlgxMUJ5cGFzc1dpbmRvd01hbmFn ZXJIaW50KTsKKyB9CisgCisgdm9pZCBRWGNiV2luZG93OjpzZXRNb3RpZldtSGludHMoUXQ6Oldp bmRvd0ZsYWdzIGZsYWdzKQorQEAgLTExNDIsOSArMTEyNSw2IEBAIHZvaWQgUVhjYldpbmRvdzo6 c2V0V2luZG93U3RhdGUoUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZSkKKyAgICAgaWYgKHN0YXRlID09 IG1fd2luZG93U3RhdGUpCisgICAgICAgICByZXR1cm47CisgCistICAgIGlmIChzaG91bGREZWZl clRhc2soVGFzazo6U2V0V2luZG93U3RhdGUpKQorLSAgICAgICAgcmV0dXJuOworLQorICAgICAv LyB1bnNldCBvbGQgc3RhdGUKKyAgICAgaWYgKG1fd2luZG93U3RhdGUgJiBRdDo6V2luZG93TWlu aW1pemVkKQorICAgICAgICAgeGNiX21hcF93aW5kb3coeGNiX2Nvbm5lY3Rpb24oKSwgbV93aW5k b3cpOworQEAgLTEzNTAsNiArMTMzMCwxMiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldFdpbmRvd0lj b24oY29uc3QgUUljb24gJmljb24pCisgICAgIH0KKyAKKyAgICAgaWYgKCFpY29uX2RhdGEuaXNF bXB0eSgpKSB7CisrICAgICAgICAvLyBJZ25vcmUgaWNvbiBleGNlZWRpbmcgbWF4aW11bSB4Y2Ig cmVxdWVzdCBsZW5ndGgKKysgICAgICAgIGlmIChpY29uX2RhdGEuc2l6ZSgpID4geGNiX2dldF9t YXhpbXVtX3JlcXVlc3RfbGVuZ3RoKHhjYl9jb25uZWN0aW9uKCkpKSB7CisrICAgICAgICAgICAg cVdhcm5pbmcoIklnbm9yaW5nIHdpbmRvdyBpY29uOiBTaXplICVsbHUgZXhjZWVkcyBtYXhpbXVt IHhjYiByZXF1ZXN0IGxlbmd0aCAldS4iLAorKyAgICAgICAgICAgICAgICAgICAgIGljb25fZGF0 YS5zaXplKCksIHhjYl9nZXRfbWF4aW11bV9yZXF1ZXN0X2xlbmd0aCh4Y2JfY29ubmVjdGlvbigp KSk7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorICAgICAgICAgeGNiX2NoYW5n ZV9wcm9wZXJ0eSh4Y2JfY29ubmVjdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBYQ0JfUFJPUF9NT0RFX1JFUExBQ0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f d2luZG93LAorQEAgLTE2MzksNyArMTYyNSw3IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0V21XaW5k b3dUeXBlKFFYY2JXaW5kb3dGdW5jdGlvbnM6OldtV2luZG93VHlwZXMgdHlwZXMsIFF0OjpXCisg ICAgICAgICBicmVhazsKKyAgICAgfQorIAorLSAgICBpZiAoKGZsYWdzICYgUXQ6OkZyYW1lbGVz c1dpbmRvd0hpbnQpICYmICEodHlwZSAmIFFYY2JXaW5kb3dGdW5jdGlvbnM6OktkZU92ZXJyaWRl KSkgeworKyAgICBpZiAoKGZsYWdzICYgUXQ6OkZyYW1lbGVzc1dpbmRvd0hpbnQpICYmICEodHlw ZXMgJiBRWGNiV2luZG93RnVuY3Rpb25zOjpLZGVPdmVycmlkZSkpIHsKKyAgICAgICAgIC8vIG92 ZXJyaWRlIG5ldHdtIHR5cGUgLSBxdWljayBhbmQgZWFzeSBmb3IgS0RFIG5vYm9yZGVyCisgICAg ICAgICBhdG9tcy5hcHBlbmQoYXRvbShRWGNiQXRvbTo6X0tERV9ORVRfV01fV0lORE9XX1RZUEVf T1ZFUlJJREUpKTsKKyAgICAgfQorQEAgLTE4OTQsMTAgKzE4ODAsNiBAQCB2b2lkIFFYY2JXaW5k b3c6OmhhbmRsZVVubWFwTm90aWZ5RXZlbnQoY29uc3QgeGNiX3VubWFwX25vdGlmeV9ldmVudF90 ICpldmVudCkKKyAgICAgaWYgKGV2ZW50LT53aW5kb3cgPT0gbV93aW5kb3cpIHsKKyAgICAgICAg IG1fbWFwcGVkID0gZmFsc2U7CisgICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5k bGVFeHBvc2VFdmVudCh3aW5kb3coKSwgUVJlZ2lvbigpKTsKKy0gICAgICAgIGlmICghbV9pc1dt TWFuYWdlZFdpbmRvdyB8fCBwYXJlbnQoKSkgeworLSAgICAgICAgICAgIG1fd21TdGF0ZVZhbGlk ID0gdHJ1ZTsKKy0gICAgICAgICAgICBoYW5kbGVEZWZlcnJlZFRhc2tzKCk7CistICAgICAgICB9 CisgICAgIH0KKyB9CisgCitAQCAtMjIxMiw5OCArMjE5NCwzMCBAQCB2b2lkIFFYY2JXaW5kb3c6 OmhhbmRsZUxlYXZlTm90aWZ5RXZlbnQoY29uc3QgeGNiX2xlYXZlX25vdGlmeV9ldmVudF90ICpl dmVudCkKKyAgICAgaGFuZGxlTGVhdmVOb3RpZnlFdmVudChldmVudC0+cm9vdF94LCBldmVudC0+ cm9vdF95LCBldmVudC0+bW9kZSwgZXZlbnQtPmRldGFpbCwgZXZlbnQtPnRpbWUpOworIH0KKyAK Ky1ib29sIFFYY2JXaW5kb3c6OnNob3VsZERlZmVyVGFzayhUYXNrIHRhc2spCisteworLSAgICBp ZiAobV93bVN0YXRlVmFsaWQpCistICAgICAgICByZXR1cm4gZmFsc2U7CistCistICAgIG1fZGVm ZXJyZWRUYXNrcy5hcHBlbmQodGFzayk7CistICAgIHJldHVybiB0cnVlOworLX0KKy0KKy12b2lk IFFYY2JXaW5kb3c6OmhhbmRsZURlZmVycmVkVGFza3MoKQorLXsKKy0gICAgUV9BU1NFUlQobV93 bVN0YXRlVmFsaWQgPT0gdHJ1ZSk7CistICAgIGlmIChtX2RlZmVycmVkVGFza3MuaXNFbXB0eSgp KQorLSAgICAgICAgcmV0dXJuOworLQorLSAgICBib29sIG1hcCA9IGZhbHNlOworLSAgICBib29s IHVubWFwID0gZmFsc2U7CistCistICAgIFFWZWN0b3I8VGFzaz4gdGFza3M7CistICAgIGZvciAo YXV0byB0YXNrSXQgPSBtX2RlZmVycmVkVGFza3MucmJlZ2luKCk7IHRhc2tJdCAhPSBtX2RlZmVy cmVkVGFza3MucmVuZCgpOyArK3Rhc2tJdCkgeworLSAgICAgICAgaWYgKCF0YXNrcy5jb250YWlu cygqdGFza0l0KSkKKy0gICAgICAgICAgICB0YXNrcy5wcmVwZW5kKCp0YXNrSXQpOworLSAgICB9 CistCistICAgIGZvciAoVGFzayB0YXNrIDogdGFza3MpIHsKKy0gICAgICAgIHN3aXRjaCAodGFz aykgeworLSAgICAgICAgY2FzZSBUYXNrOjpNYXA6CistICAgICAgICAgICAgbWFwID0gdHJ1ZTsK Ky0gICAgICAgICAgICB1bm1hcCA9IGZhbHNlOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAg ICAgY2FzZSBUYXNrOjpVbm1hcDoKKy0gICAgICAgICAgICB1bm1hcCA9IHRydWU7CistICAgICAg ICAgICAgbWFwID0gZmFsc2U7CistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICBjYXNlIFRh c2s6OlNldEdlb21ldHJ5OgorLSAgICAgICAgICAgIHNldEdlb21ldHJ5KG1fZGVmZXJyZWRHZW9t ZXRyeSk7CistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICBjYXNlIFRhc2s6OlNldFdpbmRv d0ZsYWdzOgorLSAgICAgICAgICAgIHNldFdpbmRvd0ZsYWdzKHdpbmRvdygpLT5mbGFncygpKTsK Ky0gICAgICAgICAgICBicmVhazsKKy0gICAgICAgIGNhc2UgVGFzazo6U2V0V2luZG93U3RhdGU6 CistICAgICAgICAgICAgc2V0V2luZG93U3RhdGUod2luZG93KCktPndpbmRvd1N0YXRlKCkpOwor LSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgfQorLSAgICB9CistICAgIG1fZGVmZXJyZWRU YXNrcy5jbGVhcigpOworLQorLSAgICBpZiAobWFwKSB7CistICAgICAgICBRX0FTU0VSVCh1bm1h cCA9PSBmYWxzZSk7CistICAgICAgICBzaG93KCk7CistICAgIH0KKy0gICAgaWYgKHVubWFwKSB7 CistICAgICAgICBRX0FTU0VSVChtYXAgPT0gZmFsc2UpOworLSAgICAgICAgaGlkZSgpOworLSAg ICB9CistfQorLQorIHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlUHJvcGVydHlOb3RpZnlFdmVudChj b25zdCB4Y2JfcHJvcGVydHlfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorIHsKKyAgICAgY29ubmVj dGlvbigpLT5zZXRUaW1lKGV2ZW50LT50aW1lKTsKKyAKKy0gICAgY29uc3QgYm9vbCB3bVN0YXRl Q2hhbmdlZCA9IGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206OldNX1NUQVRFKTsKKy0gICAg Y29uc3QgYm9vbCBuZXRXbVN0YXRlQ2hhbmdlZCA9IGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0 b206Ol9ORVRfV01fU1RBVEUpOworLSAgICBpZiAobmV0V21TdGF0ZUNoYW5nZWQgfHwgd21TdGF0 ZUNoYW5nZWQpIHsKKy0gICAgICAgIGlmICh3bVN0YXRlQ2hhbmdlZCAmJiAhbV93bVN0YXRlVmFs aWQgJiYgbV9pc1dtTWFuYWdlZFdpbmRvdykgeworLSAgICAgICAgICAgIC8vIElDQ0NNIDQuMS40 CistICAgICAgICAgICAgLy8gQ2xpZW50cyB0aGF0IHdhbnQgdG8gcmUtdXNlIGEgY2xpZW50IHdp bmRvdyAoZS5nLiBieSBtYXBwaW5nIGl0IGFnYWluKQorLSAgICAgICAgICAgIC8vIGFmdGVyIHdp dGhkcmF3aW5nIGl0IG11c3Qgd2FpdCBmb3IgdGhlIHdpdGhkcmF3YWwgdG8gYmUgY29tcGxldGUg YmVmb3JlCistICAgICAgICAgICAgLy8gcHJvY2VlZGluZy4gVGhlIHByZWZlcnJlZCBtZXRob2Qg Zm9yIGRvaW5nIHRoaXMgaXMgZm9yIGNsaWVudHMgdG8gd2FpdCBmb3IKKy0gICAgICAgICAgICAv LyBhIHdpbmRvdyBtYW5hZ2VyIHRvIHVwZGF0ZSBvciByZW1vdmUgdGhlIFdNX1NUQVRFIHByb3Bl cnR5LgorLSAgICAgICAgICAgIG1fd21TdGF0ZVZhbGlkID0gdHJ1ZTsKKy0gICAgICAgICAgICBo YW5kbGVEZWZlcnJlZFRhc2tzKCk7CistICAgICAgICB9CistICAgICAgICBpZiAoZXZlbnQtPnN0 YXRlID09IFhDQl9QUk9QRVJUWV9ERUxFVEUpCisrICAgIGNvbnN0IGJvb2wgcHJvcGVydHlEZWxl dGVkID0gZXZlbnQtPnN0YXRlID09IFhDQl9QUk9QRVJUWV9ERUxFVEU7CisrCisrICAgIGlmIChl dmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpfTkVUX1dNX1NUQVRFKSB8fCBldmVudC0+YXRv bSA9PSBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSkpIHsKKysgICAgICAgIGlmIChwcm9wZXJ0eURl bGV0ZWQpCisgICAgICAgICAgICAgcmV0dXJuOworIAorLSAgICAgICAgaWYgKHdtU3RhdGVDaGFu Z2VkKSB7CisrICAgICAgICBRdDo6V2luZG93U3RhdGVzIG5ld1N0YXRlID0gUXQ6OldpbmRvd05v U3RhdGU7CisrCisrICAgICAgICBpZiAoZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6V01f U1RBVEUpKSB7IC8vIFdNX1NUQVRFOiBRdWljayBjaGVjayBmb3IgJ01pbmltaXplJy4KKyAgICAg ICAgICAgICBhdXRvIHJlcGx5ID0gUV9YQ0JfUkVQTFkoeGNiX2dldF9wcm9wZXJ0eSwgeGNiX2Nv bm5lY3Rpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgbV93 aW5kb3csIGF0b20oUVhjYkF0b206OldNX1NUQVRFKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgWENCX0FUT01fQU5ZLCAwLCAxMDI0KTsKKyAgICAgICAgICAgICBpZiAo cmVwbHkgJiYgcmVwbHktPmZvcm1hdCA9PSAzMiAmJiByZXBseS0+dHlwZSA9PSBhdG9tKFFYY2JB dG9tOjpXTV9TVEFURSkpIHsKKy0gICAgICAgICAgICAgICAgYXV0byBkYXRhID0gc3RhdGljX2Nh c3Q8Y29uc3QgcXVpbnQzMiAqPih4Y2JfZ2V0X3Byb3BlcnR5X3ZhbHVlKHJlcGx5LmdldCgpKSk7 CistICAgICAgICAgICAgICAgIGlmIChyZXBseS0+bGVuZ3RoICE9IDApIHsKKy0gICAgICAgICAg ICAgICAgICAgIGNvbnN0IGJvb2wgY2hhbmdlZFRvV2l0aGRyYXduID0gZGF0YVswXSA9PSBYQ0Jf SUNDQ01fV01fU1RBVEVfV0lUSERSQVdOOworLSAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9v bCBjaGFuZ2VkVG9JY29uaWMgPSBkYXRhWzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9JQ09OSUM7 CistICAgICAgICAgICAgICAgICAgICBtX21pbmltaXplZCA9IGNoYW5nZWRUb0ljb25pYyB8fCAo Y2hhbmdlZFRvV2l0aGRyYXduICYmIG1fbWluaW1pemVkKTsKKy0gICAgICAgICAgICAgICAgfQor KyAgICAgICAgICAgICAgICBjb25zdCBxdWludDMyICpkYXRhID0gKGNvbnN0IHF1aW50MzIgKil4 Y2JfZ2V0X3Byb3BlcnR5X3ZhbHVlKHJlcGx5LmdldCgpKTsKKysgICAgICAgICAgICAgICAgaWYg KHJlcGx5LT5sZW5ndGggIT0gMCkKKysgICAgICAgICAgICAgICAgICAgIG1fbWluaW1pemVkID0g KGRhdGFbMF0gPT0gWENCX0lDQ0NNX1dNX1NUQVRFX0lDT05JQworKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfHwgKGRhdGFbMF0gPT0gWENCX0lDQ0NNX1dNX1NUQVRFX1dJVEhE UkFXTiAmJiBtX21pbmltaXplZCkpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAKKy0g ICAgICAgIC8vIF9ORVRfV01fU1RBVEUgaGFuZGxpbmcKKy0gICAgICAgIFF0OjpXaW5kb3dTdGF0 ZXMgbmV3U3RhdGUgPSBRdDo6V2luZG93Tm9TdGF0ZTsKKyAgICAgICAgIGNvbnN0IE5ldFdtU3Rh dGVzIHN0YXRlcyA9IG5ldFdtU3RhdGVzKCk7CisgICAgICAgICAvLyBfTkVUX1dNX1NUQVRFX0hJ RERFTiBzaG91bGQgYmUgc2V0IGJ5IHRoZSBXaW5kb3cgTWFuYWdlciB0byBpbmRpY2F0ZSB0aGF0 IGEgd2luZG93IHdvdWxkCisgICAgICAgICAvLyBub3QgYmUgdmlzaWJsZSBvbiB0aGUgc2NyZWVu IGlmIGl0cyBkZXNrdG9wL3ZpZXdwb3J0IHdlcmUgYWN0aXZlIGFuZCBpdHMgY29vcmRpbmF0ZXMg d2VyZQorQEAgLTIzMjUsNiArMjIzOSw3IEBAIHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlUHJvcGVy dHlOb3RpZnlFdmVudChjb25zdCB4Y2JfcHJvcGVydHlfbm90aWZ5X2V2ZW50X3QgKmV2CisgICAg ICAgICAgICAgaWYgKChtX3dpbmRvd1N0YXRlICYgUXQ6OldpbmRvd01pbmltaXplZCkgJiYgY29u bmVjdGlvbigpLT5tb3VzZUdyYWJiZXIoKSA9PSB0aGlzKQorICAgICAgICAgICAgICAgICBjb25u ZWN0aW9uKCktPnNldE1vdXNlR3JhYmJlcihudWxscHRyKTsKKyAgICAgICAgIH0KKysgICAgICAg IHJldHVybjsKKyAgICAgfSBlbHNlIGlmIChldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpf TkVUX0ZSQU1FX0VYVEVOVFMpKSB7CisgICAgICAgICBtX2RpcnR5RnJhbWVNYXJnaW5zID0gdHJ1 ZTsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNi L3F4Y2J3aW5kb3cuaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5k b3cuaAoraW5kZXggNTVhZjkyNzliMS4uNmY1YzFmNWVkOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaAorKysrIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5oCitAQCAtNzQsMTQgKzc0LDYgQEAgcHVi bGljOgorIAorICAgICBRX0RFQ0xBUkVfRkxBR1MoTmV0V21TdGF0ZXMsIE5ldFdtU3RhdGUpCisg CistICAgIGVudW0gVGFzayB7CistICAgICAgICBNYXAsCistICAgICAgICBVbm1hcCwKKy0gICAg ICAgIFNldEdlb21ldHJ5LAorLSAgICAgICAgU2V0V2luZG93RmxhZ3MsCistICAgICAgICBTZXRX aW5kb3dTdGF0ZQorLSAgICB9OworLQorICAgICBRWGNiV2luZG93KFFXaW5kb3cgKndpbmRvdyk7 CisgICAgIH5RWGNiV2luZG93KCk7CisgCitAQCAtMTUxLDkgKzE0Myw2IEBAIHB1YmxpYzoKKyAK KyAgICAgUVhjYldpbmRvdyAqdG9XaW5kb3coKSBvdmVycmlkZTsKKyAKKy0gICAgYm9vbCBzaG91 bGREZWZlclRhc2soVGFzayB0YXNrKTsKKy0gICAgdm9pZCBoYW5kbGVEZWZlcnJlZFRhc2tzKCk7 CistCisgICAgIHZvaWQgaGFuZGxlTW91c2VFdmVudCh4Y2JfdGltZXN0YW1wX3QgdGltZSwgY29u c3QgUVBvaW50ICZsb2NhbCwgY29uc3QgUVBvaW50ICZnbG9iYWwsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kaWZpZXJzLCBRRXZlbnQ6OlR5cGUg dHlwZSwgUXQ6Ok1vdXNlRXZlbnRTb3VyY2Ugc291cmNlKTsKKyAKK0BAIC0yOTIsMTEgKzI4MSw2 IEBAIHByb3RlY3RlZDoKKyAgICAgaW50IG1fc3dhcEludGVydmFsID0gLTE7CisgCisgICAgIHFy ZWFsIG1fc2l6ZUhpbnRzU2NhbGVGYWN0b3IgPSAxLjA7CistCistICAgIGJvb2wgbV93bVN0YXRl VmFsaWQgPSB0cnVlOworLSAgICBRVmVjdG9yPFRhc2s+IG1fZGVmZXJyZWRUYXNrczsKKy0gICAg Ym9vbCBtX2lzV21NYW5hZ2VkV2luZG93ID0gdHJ1ZTsKKy0gICAgUVJlY3QgbV9kZWZlcnJlZEdl b21ldHJ5OworIH07CisgCisgY2xhc3MgUVhjYkZvcmVpZ25XaW5kb3cgOiBwdWJsaWMgUVhjYldp bmRvdworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy9ndGsz L3FndGszbWVudS5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMvZ3RrMy9x Z3RrM21lbnUuY3BwCitpbmRleCBkOWQxMTdmYWViLi42NDBiNDlkYWEwIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL2d0azMvcWd0azNtZW51LmNwcAorKysr IGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL2d0azMvcWd0azNtZW51LmNwcAor QEAgLTg1LDYgKzg1LDcgQEAgUUd0azNNZW51SXRlbTo6UUd0azNNZW51SXRlbSgpCisgICAgICAg bV9jaGVja2FibGUoZmFsc2UpLAorICAgICAgIG1fY2hlY2tlZChmYWxzZSksCisgICAgICAgbV9l bmFibGVkKHRydWUpLAorKyAgICAgIG1fZXhjbHVzaXZlKGZhbHNlKSwKKyAgICAgICBtX3VuZGVy bGluZShmYWxzZSksCisgICAgICAgbV9pbnZhbGlkKHRydWUpLAorICAgICAgIG1fbWVudShudWxs cHRyKSwKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRn ZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2cuY3BwIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0 YWxmaWxlZGlhbG9nLmNwcAoraW5kZXggMDA0OGJiYzFlNi4uMzk2ZTdmNmQxYyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4 ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxv Zy5jcHAKK0BAIC0xMDIsMTUgKzEwMiwxMiBAQCBjb25zdCBRREJ1c0FyZ3VtZW50ICZvcGVyYXRv ciA+Pihjb25zdCBRREJ1c0FyZ3VtZW50ICZhcmcsIFFYZGdEZXNrdG9wUG9ydGFsRmlsZQorIGNs YXNzIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUKKyB7CisgcHVibGljOgorLSAg ICBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlKFFQbGF0Zm9ybUZpbGVEaWFsb2dI ZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cpCisrICAgIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxv Z1ByaXZhdGUoUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZywgdWlu dCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24pCisgICAgICAgICA6IG5hdGl2ZUZpbGVEaWFsb2co bmF0aXZlRmlsZURpYWxvZykKKysgICAgICAgICwgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKGZp bGVDaG9vc2VyUG9ydGFsVmVyc2lvbikKKyAgICAgeyB9CisgCistICAgIFdJZCB3aW5JZCA9IDA7 CistICAgIGJvb2wgZGlyZWN0b3J5TW9kZSA9IGZhbHNlOworLSAgICBib29sIG1vZGFsID0gZmFs c2U7CistICAgIGJvb2wgbXVsdGlwbGVGaWxlcyA9IGZhbHNlOworLSAgICBib29sIHNhdmVGaWxl ID0gZmFsc2U7CisrICAgIFFFdmVudExvb3AgbG9vcDsKKyAgICAgUVN0cmluZyBhY2NlcHRMYWJl bDsKKyAgICAgUVN0cmluZyBkaXJlY3Rvcnk7CisgICAgIFFTdHJpbmcgdGl0bGU7CitAQCAtMTIx LDE5ICsxMTgsMjcgQEAgcHVibGljOgorICAgICBRU3RyaW5nIHNlbGVjdGVkTWltZVR5cGVGaWx0 ZXI7CisgICAgIFFTdHJpbmcgc2VsZWN0ZWROYW1lRmlsdGVyOworICAgICBRU3RyaW5nTGlzdCBz ZWxlY3RlZEZpbGVzOworLSAgICBRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxl RGlhbG9nID0gbnVsbHB0cjsKKysgICAgc3RkOjp1bmlxdWVfcHRyPFFQbGF0Zm9ybUZpbGVEaWFs b2dIZWxwZXI+IG5hdGl2ZUZpbGVEaWFsb2c7CisrICAgIHVpbnQgZmlsZUNob29zZXJQb3J0YWxW ZXJzaW9uID0gMDsKKysgICAgYm9vbCBmYWlsZWRUb09wZW4gPSBmYWxzZTsKKysgICAgYm9vbCBk aXJlY3RvcnlNb2RlID0gZmFsc2U7CisrICAgIGJvb2wgbXVsdGlwbGVGaWxlcyA9IGZhbHNlOwor KyAgICBib29sIHNhdmVGaWxlID0gZmFsc2U7CisgfTsKKyAKKy1RWGRnRGVza3RvcFBvcnRhbEZp bGVEaWFsb2c6OlFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9n SGVscGVyICpuYXRpdmVGaWxlRGlhbG9nKQorK1FYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6 UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5h dGl2ZUZpbGVEaWFsb2csIHVpbnQgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKQorICAgICA6IFFQ bGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIoKQorLSAgICAsIGRfcHRyKG5ldyBRWGRnRGVza3RvcFBv cnRhbEZpbGVEaWFsb2dQcml2YXRlKG5hdGl2ZUZpbGVEaWFsb2cpKQorKyAgICAsIGRfcHRyKG5l dyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlKG5hdGl2ZUZpbGVEaWFsb2csIGZp bGVDaG9vc2VyUG9ydGFsVmVyc2lvbikpCisgeworICAgICBRX0QoUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nKTsKKyAKKyAgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cpIHsKKy0gICAgICAg IGNvbm5lY3QoZC0+bmF0aXZlRmlsZURpYWxvZywgU0lHTkFMKGFjY2VwdCgpKSwgdGhpcywgU0lH TkFMKGFjY2VwdCgpKSk7CistICAgICAgICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2csIFNJ R05BTChyZWplY3QoKSksIHRoaXMsIFNJR05BTChyZWplY3QoKSkpOworKyAgICAgICAgY29ubmVj dChkLT5uYXRpdmVGaWxlRGlhbG9nLmdldCgpLCBTSUdOQUwoYWNjZXB0KCkpLCB0aGlzLCBTSUdO QUwoYWNjZXB0KCkpKTsKKysgICAgICAgIGNvbm5lY3QoZC0+bmF0aXZlRmlsZURpYWxvZy5nZXQo KSwgU0lHTkFMKHJlamVjdCgpKSwgdGhpcywgU0lHTkFMKHJlamVjdCgpKSk7CisgICAgIH0KKysK KysgICAgZC0+bG9vcC5jb25uZWN0KHRoaXMsIFNJR05BTChhY2NlcHQoKSksIFNMT1QocXVpdCgp KSk7CisrICAgIGQtPmxvb3AuY29ubmVjdCh0aGlzLCBTSUdOQUwocmVqZWN0KCkpLCBTTE9UKHF1 aXQoKSkpOworIH0KKyAKKyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6On5RWGRnRGVza3Rv cFBvcnRhbEZpbGVEaWFsb2coKQorQEAgLTE3Nyw3ICsxODIsNyBAQCB2b2lkIFFYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZzo6aW5pdGlhbGl6ZURpYWxvZygpCisgICAgIHNldERpcmVjdG9yeShv cHRpb25zKCktPmluaXRpYWxEaXJlY3RvcnkoKSk7CisgfQorIAorLXZvaWQgUVhkZ0Rlc2t0b3BQ b3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKCkKKyt2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmls ZURpYWxvZzo6b3BlblBvcnRhbChRdDo6V2luZG93RmxhZ3Mgd2luZG93RmxhZ3MsIFF0OjpXaW5k b3dNb2RhbGl0eSB3aW5kb3dNb2RhbGl0eSwgUVdpbmRvdyAqcGFyZW50KQorIHsKKyAgICAgUV9E KFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisgCitAQCAtMTg1LDEzICsxOTAsMTMgQEAg dm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwoKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4x U3RyaW5nKCIvb3JnL2ZyZWVkZXNrdG9wL3BvcnRhbC9kZXNrdG9wIiksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJp bmcoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuRmlsZUNob29zZXIiKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+c2F2ZUZpbGUg PyBRTGF0aW4xU3RyaW5nKCJTYXZlRmlsZSIpIDogUUxhdGluMVN0cmluZygiT3BlbkZpbGUiKSk7 CistICAgIFFTdHJpbmcgcGFyZW50V2luZG93SWQgPSBRTGF0aW4xU3RyaW5nKCJ4MTE6IikgKyBR U3RyaW5nOjpudW1iZXIoZC0+d2luSWQsIDE2KTsKKysgICAgUVN0cmluZyBwYXJlbnRXaW5kb3dJ ZCA9IFFMYXRpbjFTdHJpbmcoIngxMToiKSArIFFTdHJpbmc6Om51bWJlcihwYXJlbnQgPyBwYXJl bnQtPndpbklkKCkgOiAwLCAxNik7CisgCisgICAgIFFWYXJpYW50TWFwIG9wdGlvbnM7CisgICAg IGlmICghZC0+YWNjZXB0TGFiZWwuaXNFbXB0eSgpKQorICAgICAgICAgb3B0aW9ucy5pbnNlcnQo UUxhdGluMVN0cmluZygiYWNjZXB0X2xhYmVsIiksIGQtPmFjY2VwdExhYmVsKTsKKyAKKy0gICAg b3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygibW9kYWwiKSwgZC0+bW9kYWwpOworKyAgICBv cHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJtb2RhbCIpLCB3aW5kb3dNb2RhbGl0eSAhPSBR dDo6Tm9uTW9kYWwpOworICAgICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJtdWx0aXBs ZSIpLCBkLT5tdWx0aXBsZUZpbGVzKTsKKyAgICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmlu ZygiZGlyZWN0b3J5IiksIGQtPmRpcmVjdG9yeU1vZGUpOworIAorQEAgLTI5MCwxMCArMjk1LDE4 IEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKCkKKyAKKyAg ICAgUURCdXNQZW5kaW5nQ2FsbCBwZW5kaW5nQ2FsbCA9IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lv bkJ1cygpLmFzeW5jQ2FsbChtZXNzYWdlKTsKKyAgICAgUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIg KndhdGNoZXIgPSBuZXcgUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIocGVuZGluZ0NhbGwpOworLSAg ICBjb25uZWN0KHdhdGNoZXIsICZRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcjo6ZmluaXNoZWQsIHRo aXMsIFt0aGlzXSAoUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIpIHsKKysgICAgY29u bmVjdCh3YXRjaGVyLCAmUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXI6OmZpbmlzaGVkLCB0aGlzLCBb PV0gKFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVyKSB7CisgICAgICAgICBRREJ1c1Bl bmRpbmdSZXBseTxRREJ1c09iamVjdFBhdGg+IHJlcGx5ID0gKndhdGNoZXI7CistICAgICAgICBp ZiAocmVwbHkuaXNFcnJvcigpKSB7CistICAgICAgICAgICAgUV9FTUlUIHJlamVjdCgpOworKyAg ICAgICAgLy8gQW55IGVycm9yIG1lYW5zIHRoZSBkaWFsb2cgaXMgbm90IHNob3duIGFuZCB3ZSBu ZWVkIHRvIGZhbGxiYWNrCisrICAgICAgICBkLT5mYWlsZWRUb09wZW4gPSByZXBseS5pc0Vycm9y KCk7CisrICAgICAgICBpZiAoZC0+ZmFpbGVkVG9PcGVuKSB7CisrICAgICAgICAgICAgaWYgKGQt Pm5hdGl2ZUZpbGVEaWFsb2cpIHsKKysgICAgICAgICAgICAgICAgZC0+bmF0aXZlRmlsZURpYWxv Zy0+c2hvdyh3aW5kb3dGbGFncywgd2luZG93TW9kYWxpdHksIHBhcmVudCk7CisrICAgICAgICAg ICAgICAgIGlmIChkLT5sb29wLmlzUnVubmluZygpKQorKyAgICAgICAgICAgICAgICAgICAgZC0+ bmF0aXZlRmlsZURpYWxvZy0+ZXhlYygpOworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAg ICAgICAgICAgIFFfRU1JVCByZWplY3QoKTsKKysgICAgICAgICAgICB9CisgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgIFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmNvbm5lY3Qo bnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlcGx5LnZhbHVlKCkucGF0aCgpLAorQEAgLTMwMiw2ICszMTUsNyBAQCB2b2lkIFFYZGdE ZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6b3BlblBvcnRhbCgpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChnb3RSZXNwb25zZSh1aW50LFFW YXJpYW50TWFwKSkpOworICAgICAgICAgfQorKyAgICAgICAgd2F0Y2hlci0+ZGVsZXRlTGF0ZXIo KTsKKyAgICAgfSk7CisgfQorIAorQEAgLTMyNiw3ICszNDAsNyBAQCBRVXJsIFFYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZzo6ZGlyZWN0b3J5KCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBR WGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURp YWxvZyAmJiAob3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGly ZWN0b3J5IHx8IG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRp cmVjdG9yeU9ubHkpKQorKyAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVG aWxlRGlhbG9nKCkpCisgICAgICAgICByZXR1cm4gZC0+bmF0aXZlRmlsZURpYWxvZy0+ZGlyZWN0 b3J5KCk7CisgCisgICAgIHJldHVybiBkLT5kaXJlY3Rvcnk7CitAQCAtMzQ4LDcgKzM2Miw3IEBA IFFMaXN0PFFVcmw+IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6c2VsZWN0ZWRGaWxlcygp IGNvbnN0CisgeworICAgICBRX0QoY29uc3QgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsK KyAKKy0gICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUo KSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeSB8fCBvcHRpb25zKCktPmZpbGVNb2Rl KCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnlPbmx5KSkKKysgICAgaWYgKGQtPm5h dGl2ZUZpbGVEaWFsb2cgJiYgdXNlTmF0aXZlRmlsZURpYWxvZygpKQorICAgICAgICAgcmV0dXJu IGQtPm5hdGl2ZUZpbGVEaWFsb2ctPnNlbGVjdGVkRmlsZXMoKTsKKyAKKyAgICAgUUxpc3Q8UVVy bD4gZmlsZXM7CitAQCAtNDAzLDE2ICs0MTcsMTMgQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZp bGVEaWFsb2c6OmV4ZWMoKQorIHsKKyAgICAgUV9EKFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxv Zyk7CisgCistICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVN b2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxl TW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkpIHsKKysgICAgaWYg KGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgdXNlTmF0aXZlRmlsZURpYWxvZygpKSB7CisgICAgICAg ICBkLT5uYXRpdmVGaWxlRGlhbG9nLT5leGVjKCk7CisgICAgICAgICByZXR1cm47CisgICAgIH0K KyAKKyAgICAgLy8gSEFDSyB3ZSBoYXZlIHRvIGF2b2lkIHJldHVybmluZyB1bnRpbCB3ZSBlbWl0 IHRoYXQgdGhlIGRpYWxvZyB3YXMgYWNjZXB0ZWQgb3IgcmVqZWN0ZWQKKy0gICAgUUV2ZW50TG9v cCBsb29wOworLSAgICBsb29wLmNvbm5lY3QodGhpcywgU0lHTkFMKGFjY2VwdCgpKSwgU0xPVChx dWl0KCkpKTsKKy0gICAgbG9vcC5jb25uZWN0KHRoaXMsIFNJR05BTChyZWplY3QoKSksIFNMT1Qo cXVpdCgpKSk7CistICAgIGxvb3AuZXhlYygpOworKyAgICBkLT5sb29wLmV4ZWMoKTsKKyB9Cisg Cisgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OmhpZGUoKQorQEAgLTQyOSwxMyAr NDQwLDEwIEBAIGJvb2wgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpzaG93KFF0OjpXaW5k b3dGbGFncyB3aW5kb3dGbGFncywgUXQ6OldpbmRvd01vCisgCisgICAgIGluaXRpYWxpemVEaWFs b2coKTsKKyAKKy0gICAgZC0+bW9kYWwgPSB3aW5kb3dNb2RhbGl0eSAhPSBRdDo6Tm9uTW9kYWw7 CistICAgIGQtPndpbklkID0gcGFyZW50ID8gcGFyZW50LT53aW5JZCgpIDogMDsKKy0KKy0gICAg aWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmls ZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeSB8fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZp bGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnlPbmx5KSkKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVE aWFsb2cgJiYgdXNlTmF0aXZlRmlsZURpYWxvZyhPcGVuRmFsbGJhY2spKQorICAgICAgICAgcmV0 dXJuIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPnNob3cod2luZG93RmxhZ3MsIHdpbmRvd01vZGFsaXR5 LCBwYXJlbnQpOworIAorLSAgICBvcGVuUG9ydGFsKCk7CisrICAgIG9wZW5Qb3J0YWwod2luZG93 RmxhZ3MsIHdpbmRvd01vZGFsaXR5LCBwYXJlbnQpOworIAorICAgICByZXR1cm4gdHJ1ZTsKKyB9 CitAQCAtNDY1LDQgKzQ3MywyMSBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6 Z290UmVzcG9uc2UodWludCByZXNwb25zZSwgY29uc3QgUVZhcmlhbnRNYXAgJgorICAgICB9Cisg fQorIAorK2Jvb2wgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjp1c2VOYXRpdmVGaWxlRGlh bG9nKFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6RmFsbGJhY2tUeXBlIGZhbGxiYWNrVHlw ZSkgY29uc3QKKyt7CisrICAgIFFfRChjb25zdCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cp OworKworKyAgICBpZiAoZC0+ZmFpbGVkVG9PcGVuICYmIGZhbGxiYWNrVHlwZSAhPSBPcGVuRmFs bGJhY2spCisrICAgICAgICByZXR1cm4gdHJ1ZTsKKysKKysgICAgaWYgKGQtPmZpbGVDaG9vc2Vy UG9ydGFsVmVyc2lvbiA8IDMpIHsKKysgICAgICAgIGlmIChvcHRpb25zKCktPmZpbGVNb2RlKCkg PT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnkpCisrICAgICAgICAgICAgcmV0dXJuIHRy dWU7CisrICAgICAgICBlbHNlIGlmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFs b2dPcHRpb25zOjpEaXJlY3RvcnlPbmx5KQorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworKyAg ICB9CisrCisrICAgIHJldHVybiBmYWxzZTsKKyt9CisrCisgUVRfRU5EX05BTUVTUEFDRQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9y dGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZ19wLmggYi9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFs b2dfcC5oCitpbmRleCA0ZjRkZTk2ZWNmLi42NWUyMmE1Y2YyIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bw b3J0YWxmaWxlZGlhbG9nX3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhl bWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nX3AuaAorQEAg LTUxLDYgKzUxLDExIEBAIGNsYXNzIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyA6IHB1Ymxp YyBRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyCisgICAgIFFfT0JKRUNUCisgICAgIFFfREVDTEFS RV9QUklWQVRFKFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZykKKyBwdWJsaWM6CisrICAgIGVu dW0gRmFsbGJhY2tUeXBlIHsKKysgICAgICAgIEdlbmVyaWNGYWxsYmFjaywKKysgICAgICAgIE9w ZW5GYWxsYmFjaworKyAgICB9OworKworICAgICBlbnVtIENvbmRpdGlvblR5cGUgOiB1aW50IHsK KyAgICAgICAgIEdsb2JhbFBhdHRlcm4gPSAwLAorICAgICAgICAgTWltZVR5cGUgPSAxCitAQCAt NjksNyArNzQsNyBAQCBwdWJsaWM6CisgICAgIH07CisgICAgIHR5cGVkZWYgUVZlY3RvcjxGaWx0 ZXI+IEZpbHRlckxpc3Q7CisgCistICAgIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhRUGxh dGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nID0gbnVsbHB0cik7CisrICAg IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpu YXRpdmVGaWxlRGlhbG9nID0gbnVsbHB0ciwgdWludCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24g PSAwKTsKKyAgICAgflFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZygpOworIAorICAgICBib29s IGRlZmF1bHROYW1lRmlsdGVyRGlzYWJsZXMoKSBjb25zdCBvdmVycmlkZTsKK0BAIC05Miw3ICs5 Nyw4IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAKKyBwcml2YXRlOgorICAgICB2b2lkIGluaXRpYWxp emVEaWFsb2coKTsKKy0gICAgdm9pZCBvcGVuUG9ydGFsKCk7CisrICAgIHZvaWQgb3BlblBvcnRh bChRdDo6V2luZG93RmxhZ3Mgd2luZG93RmxhZ3MsIFF0OjpXaW5kb3dNb2RhbGl0eSB3aW5kb3dN b2RhbGl0eSwgUVdpbmRvdyAqcGFyZW50KTsKKysgICAgYm9vbCB1c2VOYXRpdmVGaWxlRGlhbG9n KEZhbGxiYWNrVHlwZSBmYWxsYmFja1R5cGUgPSBHZW5lcmljRmFsbGJhY2spIGNvbnN0OworIAor ICAgICBRU2NvcGVkUG9pbnRlcjxRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlPiBk X3B0cjsKKyB9OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1l cy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsdGhlbWUuY3BwIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0 YWx0aGVtZS5jcHAKK2luZGV4IGZiMzI0YWZiZDguLmI4MDk1MDMxMjIgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVz a3RvcHBvcnRhbHRoZW1lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhl bWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWx0aGVtZS5jcHAKK0BAIC0xMTEs NiArMTExLDcgQEAgUVhkZ0Rlc2t0b3BQb3J0YWxUaGVtZTo6UVhkZ0Rlc2t0b3BQb3J0YWxUaGVt ZSgpCisgICAgICAgICBpZiAocmVwbHkuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICAgZC0+Zmls ZUNob29zZXJQb3J0YWxWZXJzaW9uID0gcmVwbHkudmFsdWUoKS50b1VJbnQoKTsKKyAgICAgICAg IH0KKysgICAgICAgIHdhdGNoZXItPmRlbGV0ZUxhdGVyKCk7CisgICAgIH0pOworIH0KKyAKK0BA IC0xNTIsMTEgKzE1MywxMiBAQCBRUGxhdGZvcm1EaWFsb2dIZWxwZXIqIFFYZGdEZXNrdG9wUG9y dGFsVGhlbWU6OmNyZWF0ZVBsYXRmb3JtRGlhbG9nSGVscGVyKERpYWxvZworIHsKKyAgICAgUV9E KGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFsVGhlbWUpOworIAorLSAgICBpZiAodHlwZSA9PSBGaWxl RGlhbG9nKSB7CisrICAgIGlmICh0eXBlID09IEZpbGVEaWFsb2cgJiYgZC0+ZmlsZUNob29zZXJQ b3J0YWxWZXJzaW9uKSB7CisgICAgICAgICAvLyBPbGRlciB2ZXJzaW9ucyBvZiBGaWxlQ2hvb3Nl ciBwb3J0YWwgZG9uJ3Qgc3VwcG9ydCBvcGVuaW5nIGRpcmVjdG9yaWVzLCB0aGVyZWZvcmUgd2Ug ZmFsbGJhY2sKKyAgICAgICAgIC8vIHRvIG5hdGl2ZSBmaWxlIGRpYWxvZyBvcGVuZWQgaW5zaWRl IHRoZSBzYW5kYm94IHRvIG9wZW4gYSBkaXJlY3RvcnkuCistICAgICAgICBpZiAoZC0+ZmlsZUNo b29zZXJQb3J0YWxWZXJzaW9uIDwgMyAmJiBkLT5iYXNlVGhlbWUtPnVzZVBsYXRmb3JtTmF0aXZl RGlhbG9nKHR5cGUpKQorLSAgICAgICAgICAgIHJldHVybiBuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nKHN0YXRpY19jYXN0PFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIqPihkLT5iYXNl VGhlbWUtPmNyZWF0ZVBsYXRmb3JtRGlhbG9nSGVscGVyKHR5cGUpKSk7CisrICAgICAgICBpZiAo ZC0+YmFzZVRoZW1lLT51c2VQbGF0Zm9ybU5hdGl2ZURpYWxvZyh0eXBlKSkKKysgICAgICAgICAg ICByZXR1cm4gbmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhzdGF0aWNfY2FzdDxRUGxh dGZvcm1GaWxlRGlhbG9nSGVscGVyKj4oZC0+YmFzZVRoZW1lLT5jcmVhdGVQbGF0Zm9ybURpYWxv Z0hlbHBlcih0eXBlKSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKTsKKyAKKyAgICAgICAgIHJl dHVybiBuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOworICAgICB9CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmUu Y3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdp bmUuY3BwCitpbmRleCA0M2Q1ZTExOWFkLi4xZjljYmM0NTY1IDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmUuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZS5j cHAKK0BAIC04OSw4ICs4OSwxMCBAQCB2b2lkIFFDdXBzUHJpbnRFbmdpbmU6OnNldFByb3BlcnR5 KFByaW50RW5naW5lUHJvcGVydHlLZXkga2V5LCBjb25zdCBRVmFyaWFudCAmdgorICAgICAgICAg YnJlYWs7CisgICAgIGNhc2UgUFBLX0R1cGxleDogeworICAgICAgICAgUVByaW50OjpEdXBsZXhN b2RlIG1vZGUgPSBRUHJpbnQ6OkR1cGxleE1vZGUodmFsdWUudG9JbnQoKSk7CistICAgICAgICBp ZiAobW9kZSAhPSBkLT5kdXBsZXggJiYgZC0+bV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhN b2RlcygpLmNvbnRhaW5zKG1vZGUpKQorKyAgICAgICAgaWYgKGQtPm1fcHJpbnREZXZpY2Uuc3Vw cG9ydGVkRHVwbGV4TW9kZXMoKS5jb250YWlucyhtb2RlKSkgeworICAgICAgICAgICAgIGQtPmR1 cGxleCA9IG1vZGU7CisrICAgICAgICAgICAgZC0+ZHVwbGV4UmVxdWVzdGVkRXhwbGljaXRseSA9 IHRydWU7CisrICAgICAgICB9CisgICAgICAgICBicmVhazsKKyAgICAgfQorICAgICBjYXNlIFBQ S19QcmludGVyTmFtZToKK0BAIC0yNzcsOSArMjc5LDEyIEBAIHZvaWQgUUN1cHNQcmludEVuZ2lu ZVByaXZhdGU6OmNoYW5nZVByaW50ZXIoY29uc3QgUVN0cmluZyAmbmV3UHJpbnRlcikKKyAgICAg bV9wcmludERldmljZS5zd2FwKHByaW50RGV2aWNlKTsKKyAgICAgcHJpbnRlck5hbWUgPSBtX3By aW50RGV2aWNlLmlkKCk7CisgCistICAgIC8vIENoZWNrIGlmIG5ldyBwcmludGVyIHN1cHBvcnRz IGN1cnJlbnQgc2V0dGluZ3MsIG90aGVyd2lzZSB1cyBkZWZhdWx0cworLSAgICBpZiAoZHVwbGV4 ICE9IFFQcmludDo6RHVwbGV4QXV0byAmJiAhbV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhN b2RlcygpLmNvbnRhaW5zKGR1cGxleCkpCisrICAgIC8vIGluIGNhc2UgYSBkdXBsZXggdmFsdWUg d2FzIGV4cGxpY2l0bHkgc2V0LCBjaGVjayBpZiBuZXcgcHJpbnRlciBzdXBwb3J0cyBjdXJyZW50 IHZhbHVlLAorKyAgICAvLyBvdGhlcndpc2UgdXNlIGRldmljZSBkZWZhdWx0CisrICAgIGlmICgh ZHVwbGV4UmVxdWVzdGVkRXhwbGljaXRseSB8fCAhbV9wcmludERldmljZS5zdXBwb3J0ZWREdXBs ZXhNb2RlcygpLmNvbnRhaW5zKGR1cGxleCkpIHsKKyAgICAgICAgIGR1cGxleCA9IG1fcHJpbnRE ZXZpY2UuZGVmYXVsdER1cGxleE1vZGUoKTsKKysgICAgICAgIGR1cGxleFJlcXVlc3RlZEV4cGxp Y2l0bHkgPSBmYWxzZTsKKysgICAgfQorICAgICBRUHJpbnQ6OkNvbG9yTW9kZSBjb2xvck1vZGUg PSBncmF5c2NhbGUgPyBRUHJpbnQ6OkdyYXlTY2FsZSA6IFFQcmludDo6Q29sb3I7CisgICAgIGlm ICghbV9wcmludERldmljZS5zdXBwb3J0ZWRDb2xvck1vZGVzKCkuY29udGFpbnMoY29sb3JNb2Rl KSkKKyAgICAgICAgIGdyYXlzY2FsZSA9IG1fcHJpbnREZXZpY2UuZGVmYXVsdENvbG9yTW9kZSgp ID09IFFQcmludDo6R3JheVNjYWxlOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9w cmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lX3AuaCBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lX3AuaAoraW5kZXggYzAyMWIwYzY0 My4uOGY4MWZlNDc4ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBv cnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lX3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3By aW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmVfcC5oCitAQCAtMTAwLDYgKzEwMCw3IEBA IHByaXZhdGU6CisgICAgIFFTdHJpbmdMaXN0IGN1cHNPcHRpb25zOworICAgICBRU3RyaW5nIGN1 cHNUZW1wRmlsZTsKKyAgICAgUVByaW50OjpEdXBsZXhNb2RlIGR1cGxleDsKKysgICAgYm9vbCBk dXBsZXhSZXF1ZXN0ZWRFeHBsaWNpdGx5ID0gZmFsc2U7CisgfTsKKyAKKyBRVF9FTkRfTkFNRVNQ QUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNx bF9pYmFzZS5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9pYmFzZS9xc3FsX2li YXNlLmNwcAoraW5kZXggNjdlNzE1NGZhNi4uNDA4NzYxNTJlNSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL2liYXNlL3FzcWxfaWJhc2UuY3BwCisrKysgYi9xdGJh c2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcAorQEAgLTgxNyw3 ICs4MTcsNyBAQCBib29sIFFJQmFzZVJlc3VsdFByaXZhdGU6OndyaXRlQXJyYXkoaW50IGNvbHVt biwgY29uc3QgUUxpc3Q8UVZhcmlhbnQ+ICZsaXN0KQorICAgICBiYS5yZXNpemUoaW50KGJ1Zkxl bikpOworIAorICAgICBpZiAobGlzdC5zaXplKCkgPiBhcnJheVNpemUpIHsKKy0gICAgICAgIGVy cm9yID0gUUxhdGluMVN0cmluZygiQXJyYXkgc2l6ZSBtaXNzbWF0Y2g6IHNpemUgb2YgJTEgaXMg JTIsIHNpemUgb2YgcHJvdmlkZWQgbGlzdCBpcyAlMyIpOworKyAgICAgICAgZXJyb3IgPSBRTGF0 aW4xU3RyaW5nKCJBcnJheSBzaXplIG1pc21hdGNoOiBzaXplIG9mICUxIGlzICUyLCBzaXplIG9m IHByb3ZpZGVkIGxpc3QgaXMgJTMiKTsKKyAgICAgICAgIGVycm9yID0gZXJyb3IuYXJnKFFMYXRp bjFTdHJpbmcoc3FsbmFtZSkpLmFyZyhhcnJheVNpemUpLmFyZyhsaXN0LnNpemUoKSk7CisgICAg ICAgICBxLT5zZXRMYXN0RXJyb3IoUVNxbEVycm9yKGVycm9yLCBRTGF0aW4xU3RyaW5nKCIiKSwg UVNxbEVycm9yOjpTdGF0ZW1lbnRFcnJvcikpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwu Y3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvbXlzcWwvcXNxbF9teXNxbC5jcHAK K2luZGV4IDdjYTA1NWVlYTIuLjZiYzlkNDY3NTUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Bs dWdpbnMvc3FsZHJpdmVycy9teXNxbC9xc3FsX215c3FsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3NxbGRyaXZlcnMvbXlzcWwvcXNxbF9teXNxbC5jcHAKK0BAIC0yMjMsNyArMjIzLDcg QEAgcHVibGljOgorICAgICBzdHJ1Y3QgUU15RmllbGQKKyAgICAgeworICAgICAgICAgY2hhciAq b3V0RmllbGQgPSBudWxscHRyOworLSAgICAgICAgTVlTUUxfRklFTEQgKm15RmllbGQgPSBudWxs cHRyOworKyAgICAgICAgY29uc3QgTVlTUUxfRklFTEQgKm15RmllbGQgPSBudWxscHRyOworICAg ICAgICAgUU1ldGFUeXBlOjpUeXBlIHR5cGUgPSBRTWV0YVR5cGU6OlVua25vd25UeXBlOworICAg ICAgICAgbXlfYm9vbCBudWxsSW5kaWNhdG9yID0gZmFsc2U7CisgICAgICAgICB1bG9uZyBidWZM ZW5ndGggPSAwdWw7CitAQCAtMzYxLDcgKzM2MSw3IEBAIHN0YXRpYyBib29sIHFJc0ludGVnZXIo aW50IHQpCisgdm9pZCBRTVlTUUxSZXN1bHRQcml2YXRlOjpiaW5kQmxvYnMoKQorIHsKKyAgICAg aW50IGk7CistICAgIE1ZU1FMX0ZJRUxEICpmaWVsZEluZm87CisrICAgIGNvbnN0IE1ZU1FMX0ZJ RUxEICpmaWVsZEluZm87CisgICAgIE1ZU1FMX0JJTkQgKmJpbmQ7CisgCisgICAgIGZvcihpID0g MDsgaSA8IGZpZWxkcy5jb3VudCgpOyArK2kpIHsKK0BAIC0zNzksNyArMzc5LDYgQEAgdm9pZCBR TVlTUUxSZXN1bHRQcml2YXRlOjpiaW5kQmxvYnMoKQorIGJvb2wgUU1ZU1FMUmVzdWx0UHJpdmF0 ZTo6YmluZEluVmFsdWVzKCkKKyB7CisgICAgIE1ZU1FMX0JJTkQgKmJpbmQ7CistICAgIGNoYXIg KmZpZWxkOworICAgICBpbnQgaSA9IDA7CisgCisgICAgIGlmICghbWV0YSkKK0BAIC0zOTIsMzUg KzM5MSwzNCBAQCBib29sIFFNWVNRTFJlc3VsdFByaXZhdGU6OmJpbmRJblZhbHVlcygpCisgICAg IGluQmluZHMgPSBuZXcgTVlTUUxfQklORFtmaWVsZHMuc2l6ZSgpXTsKKyAgICAgbWVtc2V0KGlu QmluZHMsIDAsIGZpZWxkcy5zaXplKCkgKiBzaXplb2YoTVlTUUxfQklORCkpOworIAorLSAgICBN WVNRTF9GSUVMRCAqZmllbGRJbmZvOworKyAgICBjb25zdCBNWVNRTF9GSUVMRCAqZmllbGRJbmZv OworIAorICAgICB3aGlsZSgoZmllbGRJbmZvID0gbXlzcWxfZmV0Y2hfZmllbGQobWV0YSkpKSB7 CisrICAgICAgICBiaW5kID0gJmluQmluZHNbaV07CisrCisgICAgICAgICBRTXlGaWVsZCAmZiA9 IGZpZWxkc1tpXTsKKyAgICAgICAgIGYubXlGaWVsZCA9IGZpZWxkSW5mbzsKKy0KKysgICAgICAg IGJpbmQtPmJ1ZmZlcl9sZW5ndGggPSBmLmJ1Zkxlbmd0aCA9IGZpZWxkSW5mby0+bGVuZ3RoICsg MTsKKysgICAgICAgIGJpbmQtPmJ1ZmZlcl90eXBlID0gZmllbGRJbmZvLT50eXBlOworICAgICAg ICAgZi50eXBlID0gcURlY29kZU1ZU1FMVHlwZShmaWVsZEluZm8tPnR5cGUsIGZpZWxkSW5mby0+ ZmxhZ3MpOworICAgICAgICAgaWYgKHFJc0Jsb2IoZmllbGRJbmZvLT50eXBlKSkgeworICAgICAg ICAgICAgIC8vIHRoZSBzaXplIG9mIGEgYmxvYi1maWVsZCBpcyBhdmFpbGFibGUgYXMgc29vbiBh cyB3ZSBjYWxsCisgICAgICAgICAgICAgLy8gbXlzcWxfc3RtdF9zdG9yZV9yZXN1bHQoKQorICAg ICAgICAgICAgIC8vIGFmdGVyIG15c3FsX3N0bXRfZXhlYygpIGluIFFNWVNRTFJlc3VsdDo6ZXhl YygpCistICAgICAgICAgICAgZmllbGRJbmZvLT5sZW5ndGggPSAwOworKyAgICAgICAgICAgIGJp bmQtPmJ1ZmZlcl9sZW5ndGggPSBmLmJ1Zkxlbmd0aCA9IDA7CisgICAgICAgICAgICAgaGFzQmxv YnMgPSB0cnVlOworICAgICAgICAgfSBlbHNlIGlmIChxSXNJbnRlZ2VyKGYudHlwZSkpIHsKKy0g ICAgICAgICAgICBmaWVsZEluZm8tPmxlbmd0aCA9IDg7CisrICAgICAgICAgICAgYmluZC0+YnVm ZmVyX2xlbmd0aCA9IGYuYnVmTGVuZ3RoID0gODsKKyAgICAgICAgIH0gZWxzZSB7CistICAgICAg ICAgICAgZmllbGRJbmZvLT50eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7CisrICAgICAgICAgICAg YmluZC0+YnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX1NUUklORzsKKyAgICAgICAgIH0KKy0gICAg ICAgIGJpbmQgPSAmaW5CaW5kc1tpXTsKKy0gICAgICAgIGZpZWxkID0gbmV3IGNoYXJbZmllbGRJ bmZvLT5sZW5ndGggKyAxXTsKKy0gICAgICAgIG1lbXNldChmaWVsZCwgMCwgZmllbGRJbmZvLT5s ZW5ndGggKyAxKTsKKyAKKy0gICAgICAgIGJpbmQtPmJ1ZmZlcl90eXBlID0gZmllbGRJbmZvLT50 eXBlOworLSAgICAgICAgYmluZC0+YnVmZmVyID0gZmllbGQ7CistICAgICAgICBiaW5kLT5idWZm ZXJfbGVuZ3RoID0gZi5idWZMZW5ndGggPSBmaWVsZEluZm8tPmxlbmd0aCArIDE7CisgICAgICAg ICBiaW5kLT5pc19udWxsID0gJmYubnVsbEluZGljYXRvcjsKKyAgICAgICAgIGJpbmQtPmxlbmd0 aCA9ICZmLmJ1Zkxlbmd0aDsKKyAgICAgICAgIGJpbmQtPmlzX3Vuc2lnbmVkID0gZmllbGRJbmZv LT5mbGFncyAmIFVOU0lHTkVEX0ZMQUcgPyAxIDogMDsKKy0gICAgICAgIGYub3V0RmllbGQ9Zmll bGQ7CisrCisrICAgICAgICBjaGFyICpmaWVsZCA9IG5ldyBjaGFyW2JpbmQtPmJ1ZmZlcl9sZW5n dGggKyAxXXt9OworKyAgICAgICAgYmluZC0+YnVmZmVyID0gZi5vdXRGaWVsZCA9IGZpZWxkOwor IAorICAgICAgICAgKytpOworICAgICB9CitAQCAtMTM2OSwyMCArMTM2NywyMCBAQCBib29sIFFN WVNRTERyaXZlcjo6b3Blbihjb25zdCBRU3RyaW5nJiBkYiwKKyAgICAgfQorIAorICNpZiBNWVNR TF9WRVJTSU9OX0lEID49IDUwMDA3CistICAgIGlmIChteXNxbF9nZXRfY2xpZW50X3ZlcnNpb24o KSA+PSA1MDUwMyAmJiBteXNxbF9nZXRfc2VydmVyX3ZlcnNpb24oZC0+bXlzcWwpID49IDUwNTAz KSB7CistICAgICAgICAvLyBmb3JjZSB0aGUgY29tbXVuaWNhdGlvbiB0byBiZSB1dGY4bWI0IChv bmx5IHV0ZjhtYjQgc3VwcG9ydHMgNC1ieXRlIGNoYXJhY3RlcnMpCistICAgICAgICBteXNxbF9z ZXRfY2hhcmFjdGVyX3NldChkLT5teXNxbCwgInV0ZjhtYjQiKTsKKysgICAgLy8gZm9yY2UgdGhl IGNvbW11bmljYXRpb24gdG8gYmUgdXRmOG1iNCAob25seSB1dGY4bWI0IHN1cHBvcnRzIDQtYnl0 ZSBjaGFyYWN0ZXJzKQorKyAgICBpZiAobXlzcWxfc2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWws ICJ1dGY4bWI0IikpIHsKKysgICAgICAgIC8vIHRoaXMgZmFpbGVkLCB0cnkgZm9yY2luZyBpdCB0 byB1dGYgKEJNUCBvbmx5KQorKyAgICAgICAgaWYgKG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQt Pm15c3FsLCAidXRmOCIpKQorKyAgICAgICAgICAgIHFXYXJuaW5nKCkgPDwgIk15U1FMOiBVbmFi bGUgdG8gc2V0IHRoZSBjbGllbnQgY2hhcmFjdGVyIHNldCB0byB1dGY4LiI7CisgI2lmIFFUX0NP TkZJRyh0ZXh0Y29kZWMpCistICAgICAgICBkLT50YyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFt ZSgiVVRGLTgiKTsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICBkLT50YyA9IGNvZGVjKGQt Pm15c3FsKTsKKyAjZW5kaWYKKy0gICAgfSBlbHNlCistICAgIHsKKy0gICAgICAgIC8vIGZvcmNl IHRoZSBjb21tdW5pY2F0aW9uIHRvIGJlIHV0ZjgKKy0gICAgICAgIG15c3FsX3NldF9jaGFyYWN0 ZXJfc2V0KGQtPm15c3FsLCAidXRmOCIpOworKyAgICB9CisgI2lmIFFUX0NPTkZJRyh0ZXh0Y29k ZWMpCistICAgICAgICBkLT50YyA9IGNvZGVjKGQtPm15c3FsKTsKKysgICAgZWxzZQorKyAgICAg ICAgZC0+dGMgPSBRVGV4dENvZGVjOjpjb2RlY0Zvck5hbWUoIlVURi04Iik7CisgI2VuZGlmCist ICAgIH0KKyAjZW5kaWYgIC8vIE1ZU1FMX1ZFUlNJT05fSUQgPj0gNTAwMDcKKyAKKyAgICAgZC0+ cHJlcGFyZWRRdWVyeXNFbmFibGVkID0gY2hlY2tQcmVwYXJlZFF1ZXJpZXMoZC0+bXlzcWwpOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50 LTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50ZXIt MjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBv cnQvZGlhbG9ncy9pbWFnZXMvcHJpbnQtMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9y dC9kaWFsb2dzL2ltYWdlcy9wcmludGVyLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50LTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50ZXItMzIucG5nCitzaW1pbGFyaXR5IGluZGV4 IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnQt MzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludGVy LTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL3ZpZXctcGFnZS1zaWRlZC0yNC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAw JQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Ut c2lkZWQtMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92 aWV3LXBhZ2VzLWZhY2luZy0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3Vw cG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMzIucG5nIGIvcXRiYXNlL3NyYy9w cmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMzIucG5nCitzaW1p bGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9p bWFnZXMvdmlldy1wYWdlLXNpZGVkLTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW11bHRpLTI0LnBu ZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtb3Zl cnZpZXctMjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmlu dHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW11bHRpLTI0LnBuZworcmVuYW1lIHRv IHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0yNC5w bmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92 aWV3LXBhZ2UtbXVsdGktMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9p bWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQor cmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVs dGktMzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3 LXBhZ2VzLW92ZXJ2aWV3LTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1vbmUtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmlu dHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMjQucG5nCitzaW1pbGFy aXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvdmlldy1wYWdlLW9uZS0yNC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1vbmUtMzIucG5nIGIvcXRi YXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMzIu cG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW9uZS0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTMyLnBuZworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC1wYWdlLTI0LnBu ZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2Ut MjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBv cnQvZGlhbG9ncy9pbWFnZXMvZml0LXBhZ2UtMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3Vw cG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC1wYWdlLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC1wYWdlLTMyLnBuZyBiL3F0 YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMzIucG5n CitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvZml0LXBhZ2UtMzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL2ltYWdlcy96b29tLWZpdC1wYWdlLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC13aWR0aC0yNC5wbmcgYi9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC13aWR0aC0yNC5wbmcKK3Np bWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dz L2ltYWdlcy9maXQtd2lkdGgtMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL2ltYWdlcy96b29tLWZpdC13aWR0aC0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtd2lkdGgtMzIucG5nIGIvcXRiYXNlL3Ny Yy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtd2lkdGgtMzIucG5nCitzaW1p bGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9p bWFnZXMvZml0LXdpZHRoLTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9pbWFnZXMvem9vbS1maXQtd2lkdGgtMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9w cmludHN1cHBvcnQvZGlhbG9ncy9xcGFnZXNldHVwZGlhbG9nX3VuaXguY3BwIGIvcXRiYXNlL3Ny Yy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcGFnZXNldHVwZGlhbG9nX3VuaXguY3BwCitpbmRleCA3 OGU1YjhkMWVmLi4yYTI4NTE2NzE5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wcmludHN1cHBv cnQvZGlhbG9ncy9xcGFnZXNldHVwZGlhbG9nX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL3FwYWdlc2V0dXBkaWFsb2dfdW5peC5jcHAKK0BAIC01MzIsNiAr NTMyLDcgQEAgdm9pZCBRUGFnZVNldHVwV2lkZ2V0Ojp1cGRhdGVXaWRnZXQoKQorIHZvaWQgUVBh Z2VTZXR1cFdpZGdldDo6c2V0dXBQcmludGVyKCkgY29uc3QKKyB7CisgICAgIG1fcHJpbnRlci0+ c2V0UGFnZUxheW91dChtX3BhZ2VMYXlvdXQpOworKyAgICBtX3ByaW50ZXItPnNldFBhZ2VPcmll bnRhdGlvbihtX3BhZ2VMYXlvdXQub3JpZW50YXRpb24oKSk7CisgI2lmIFFUX0NPTkZJRyhjdXBz KQorICAgICBRQ1VQU1N1cHBvcnQ6OlBhZ2VzUGVyU2hlZXQgcGFnZXNQZXJTaGVldCA9IHF2YXJp YW50X2Nhc3Q8UUNVUFNTdXBwb3J0OjpQYWdlc1BlclNoZWV0PihtX3VpLnBhZ2VzUGVyU2hlZXRD b21iby0+Y3VycmVudERhdGEoKQorICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1 cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2cucXJjIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9xcHJpbnRkaWFsb2cucXJjCitpbmRleCA1YTU3OWJhYTU1Li4xMGI4ZTFkMzQxIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2cu cXJjCisrKysgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5x cmMKK0BAIC0xLDkgKzEsOSBAQAorIDwhRE9DVFlQRSBSQ0M+PFJDQyB2ZXJzaW9uPSIxLjAiPgor IDxxcmVzb3VyY2UgcHJlZml4PSIvcXQtcHJvamVjdC5vcmcvZGlhbG9ncy9xcHJpbnRwcmV2aWV3 ZGlhbG9nIj4KKy08ZmlsZT5pbWFnZXMvZml0LXBhZ2UtMjQucG5nPC9maWxlPgorLTxmaWxlPmlt YWdlcy9maXQtcGFnZS0zMi5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL2ZpdC13aWR0aC0yNC5w bmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL2ZpdC13aWR0aC0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+ aW1hZ2VzL3pvb20tZml0LXBhZ2UtMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy96b29tLWZp dC1wYWdlLTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvem9vbS1maXQtd2lkdGgtMjQucG5n PC9maWxlPgorKzxmaWxlPmltYWdlcy96b29tLWZpdC13aWR0aC0zMi5wbmc8L2ZpbGU+CisgPGZp bGU+aW1hZ2VzL2dvLWZpcnN0LTI0LnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvZ28tZmlyc3Qt MzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy9nby1sYXN0LTI0LnBuZzwvZmlsZT4KK0BAIC0x OCwxNCArMTgsMTQgQEAKKyA8ZmlsZT5pbWFnZXMvbGF5b3V0LXBvcnRyYWl0LTMyLnBuZzwvZmls ZT4KKyA8ZmlsZT5pbWFnZXMvcGFnZS1zZXR1cC0yNC5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2Vz L3BhZ2Utc2V0dXAtMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy9wcmludC0yNC5wbmc8L2Zp bGU+CistPGZpbGU+aW1hZ2VzL3ByaW50LTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmll dy1wYWdlLW11bHRpLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW11bHRp LTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW9uZS0yNC5wbmc8L2ZpbGU+ CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1vbmUtMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdl cy92aWV3LXBhZ2Utc2lkZWQtMjQucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2Ut c2lkZWQtMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy9wcmludGVyLTI0LnBuZzwvZmlsZT4K Kys8ZmlsZT5pbWFnZXMvcHJpbnRlci0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXct cGFnZXMtb3ZlcnZpZXctMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLW92 ZXJ2aWV3LTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMjQu cG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0zMi5wbmc8L2ZpbGU+ CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5p bWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy96b29t LWluLTI0LnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvem9vbS1pbi0zMi5wbmc8L2ZpbGU+Cisg PGZpbGU+aW1hZ2VzL3pvb20tb3V0LTI0LnBuZzwvZmlsZT4KK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZ191bml4LmNwcCBiL3F0YmFzZS9z cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nX3VuaXguY3BwCitpbmRleCBjNWI4 NDVmNGVjLi41YTViYTFkMGE4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nX3VuaXguY3BwCitAQCAtNzAyLDEzICs3MDIsMTQgQEAg dm9pZCBRUHJpbnREaWFsb2dQcml2YXRlOjpzZWxlY3RQcmludGVyKGNvbnN0IFFQcmludGVyOjpP dXRwdXRGb3JtYXQgb3V0cHV0Rm9ybWEKKyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICBvcHRp b25zLmdyYXlzY2FsZS0+c2V0Q2hlY2tlZCh0cnVlKTsKKyAKKy0gICAgICAgIC8vIGtlZXAgZHVw bGV4IHZhbHVlIGV4cGxpY2l0bHkgc2V0IGJ5IHVzZXIsIGlmIGFueSwgYW5kIHNlbGVjdGVkIHBy aW50ZXIgc3VwcG9ydHMgaXQ7CistICAgICAgICAvLyB1c2UgZGV2aWNlIGRlZmF1bHQgb3RoZXJ3 aXNlCisrICAgICAgICAvLyBkdXBsZXggcHJpb3JpdGllcyB0byBiZSBhcyBmb2xsb3dzOgorKyAg ICAgICAgLy8gMSkgYSB1c2VyLXNlbGVjdGVkIGR1cGxleCB2YWx1ZSBpbiB0aGUgZGlhbG9nIGhh cyBoaWdoZXN0IHByb3JpdHkKKysgICAgICAgIC8vIDIpIGR1cGxleCB2YWx1ZSBzZXQgaW4gdGhl IFFQcmludGVyCisgICAgICAgICBRUHJpbnQ6OkR1cGxleE1vZGUgZHVwbGV4OworICAgICAgICAg aWYgKGV4cGxpY2l0RHVwbGV4TW9kZSAhPSBRUHJpbnQ6OkR1cGxleEF1dG8gJiYgc3VwcG9ydGVk RHVwbGV4TW9kZS5jb250YWlucyhleHBsaWNpdER1cGxleE1vZGUpKQorICAgICAgICAgICAgIGR1 cGxleCA9IGV4cGxpY2l0RHVwbGV4TW9kZTsKKyAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICBk dXBsZXggPSB0b3AtPmQtPm1fY3VycmVudFByaW50RGV2aWNlLmRlZmF1bHREdXBsZXhNb2RlKCk7 CisrICAgICAgICAgICAgZHVwbGV4ID0gc3RhdGljX2Nhc3Q8UVByaW50OjpEdXBsZXhNb2RlPihw LT5kdXBsZXgoKSk7CisgICAgICAgICBzd2l0Y2ggKGR1cGxleCkgeworICAgICAgICAgY2FzZSBR UHJpbnQ6OkR1cGxleE5vbmU6CisgICAgICAgICAgICAgb3B0aW9ucy5ub0R1cGxleC0+c2V0Q2hl Y2tlZCh0cnVlKTsgYnJlYWs7CitAQCAtMTI0MiwxMCArMTI0MywxMCBAQCB2b2lkIFFVbml4UHJp bnRXaWRnZXRQcml2YXRlOjpfcV9wcmludGVyQ2hhbmdlZChpbnQgaW5kZXgpCisgICAgICAgICAg ICAgUVN0cmluZyBmaWxlbmFtZSA9IHdpZGdldC5maWxlbmFtZS0+dGV4dCgpOworICAgICAgICAg ICAgIHdpZGdldC5maWxlbmFtZS0+c2V0VGV4dChmaWxlbmFtZSk7CisgICAgICAgICAgICAgd2lk Z2V0LmxPdXRwdXQtPnNldEVuYWJsZWQodHJ1ZSk7CistICAgICAgICAgICAgaWYgKG9wdGlvbnNQ YW5lKQorLSAgICAgICAgICAgICAgICBvcHRpb25zUGFuZS0+c2VsZWN0UHJpbnRlcihRUHJpbnRl cjo6UGRmRm9ybWF0KTsKKyAgICAgICAgICAgICBwcmludGVyLT5zZXRPdXRwdXRGb3JtYXQoUVBy aW50ZXI6OlBkZkZvcm1hdCk7CisgICAgICAgICAgICAgbV9jdXJyZW50UHJpbnREZXZpY2UgPSBR UHJpbnREZXZpY2UoKTsKKysgICAgICAgICAgICBpZiAob3B0aW9uc1BhbmUpCisrICAgICAgICAg ICAgICAgIG9wdGlvbnNQYW5lLT5zZWxlY3RQcmludGVyKFFQcmludGVyOjpQZGZGb3JtYXQpOwor ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy5jcHAgYi9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cuY3BwCitp bmRleCAzOTU3NWQ1ZjU3Li4yM2I3ZTg5NTM4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wcmlu dHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nLmNwcAorQEAgLTM1Miw3 ICszNTIsNyBAQCB2b2lkIFFQcmludFByZXZpZXdEaWFsb2dQcml2YXRlOjppbml0KFFQcmludGVy ICpfcHJpbnRlcikKKyBzdGF0aWMgaW5saW5lIHZvaWQgcXRfc2V0dXBBY3Rpb25JY29uKFFBY3Rp b24gKmFjdGlvbiwgUUxhdGluMVN0cmluZyBuYW1lKQorIHsKKyAgICAgUUxhdGluMVN0cmluZyBp bWFnZVByZWZpeCgiOi9xdC1wcm9qZWN0Lm9yZy9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cv aW1hZ2VzLyIpOworLSAgICBRSWNvbiBpY29uOworKyAgICBRSWNvbiBpY29uID0gUUljb246OmZy b21UaGVtZShuYW1lKTsKKyAgICAgaWNvbi5hZGRGaWxlKGltYWdlUHJlZml4ICsgbmFtZSArIFFM YXRpbjFTdHJpbmcoIi0yNC5wbmciKSwgUVNpemUoMjQsIDI0KSk7CisgICAgIGljb24uYWRkRmls ZShpbWFnZVByZWZpeCArIG5hbWUgKyBRTGF0aW4xU3RyaW5nKCItMzIucG5nIiksIFFTaXplKDMy LCAzMikpOworICAgICBhY3Rpb24tPnNldEljb24oaWNvbik7CitAQCAtMzgzLDggKzM4Myw4IEBA IHZvaWQgUVByaW50UHJldmlld0RpYWxvZ1ByaXZhdGU6OnNldHVwQWN0aW9ucygpCisgICAgIGZp dFBhZ2VBY3Rpb24tPnNldE9iamVjdE5hbWUoUUxhdGluMVN0cmluZygiZml0UGFnZUFjdGlvbiIp KTsKKyAgICAgZml0V2lkdGhBY3Rpb24tPnNldENoZWNrYWJsZSh0cnVlKTsKKyAgICAgZml0UGFn ZUFjdGlvbi0+c2V0Q2hlY2thYmxlKHRydWUpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oZml0 V2lkdGhBY3Rpb24sIFFMYXRpbjFTdHJpbmcoImZpdC13aWR0aCIpKTsKKy0gICAgcXRfc2V0dXBB Y3Rpb25JY29uKGZpdFBhZ2VBY3Rpb24sIFFMYXRpbjFTdHJpbmcoImZpdC1wYWdlIikpOworKyAg ICBxdF9zZXR1cEFjdGlvbkljb24oZml0V2lkdGhBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInpvb20t Zml0LXdpZHRoIikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24oZml0UGFnZUFjdGlvbiwgUUxh dGluMVN0cmluZygiem9vbS1maXQtcGFnZSIpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChmaXRH cm91cCwgU0lHTkFMKHRyaWdnZXJlZChRQWN0aW9uKikpLCBxLCBTTE9UKF9xX2ZpdChRQWN0aW9u KikpKTsKKyAKKyAgICAgLy8gWm9vbQorQEAgLTQxMCw5ICs0MTAsOSBAQCB2b2lkIFFQcmludFBy ZXZpZXdEaWFsb2dQcml2YXRlOjpzZXR1cEFjdGlvbnMoKQorICAgICBzaW5nbGVNb2RlQWN0aW9u ID0gbW9kZUdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJp bnRQcmV2aWV3RGlhbG9nIiwgIlNob3cgc2luZ2xlIHBhZ2UiKSk7CisgICAgIGZhY2luZ01vZGVB Y3Rpb24gPSBtb2RlR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo IlFQcmludFByZXZpZXdEaWFsb2ciLCAiU2hvdyBmYWNpbmcgcGFnZXMiKSk7CisgICAgIG92ZXJ2 aWV3TW9kZUFjdGlvbiA9IG1vZGVHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRy YW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxvZyIsICJTaG93IG92ZXJ2aWV3IG9mIGFsbCBwYWdl cyIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKHNpbmdsZU1vZGVBY3Rpb24sIFFMYXRpbjFT dHJpbmcoInZpZXctcGFnZS1vbmUiKSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihmYWNpbmdN b2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2aWV3LXBhZ2Utc2lkZWQiKSk7CistICAgIHF0X3Nl dHVwQWN0aW9uSWNvbihvdmVydmlld01vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFn ZS1tdWx0aSIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29uKHNpbmdsZU1vZGVBY3Rpb24sIFFM YXRpbjFTdHJpbmcoInZpZXctcGFnZXMtc2luZ2xlIikpOworKyAgICBxdF9zZXR1cEFjdGlvbklj b24oZmFjaW5nTW9kZUFjdGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlcy1mYWNpbmciKSk7 CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihvdmVydmlld01vZGVBY3Rpb24sIFFMYXRpbjFTdHJp bmcoInZpZXctcGFnZXMtb3ZlcnZpZXciKSk7CisgICAgIHNpbmdsZU1vZGVBY3Rpb24tPnNldE9i amVjdE5hbWUoUUxhdGluMVN0cmluZygic2luZ2xlTW9kZUFjdGlvbiIpKTsKKyAgICAgZmFjaW5n TW9kZUFjdGlvbi0+c2V0T2JqZWN0TmFtZShRTGF0aW4xU3RyaW5nKCJmYWNpbmdNb2RlQWN0aW9u IikpOworICAgICBvdmVydmlld01vZGVBY3Rpb24tPnNldE9iamVjdE5hbWUoUUxhdGluMVN0cmlu Zygib3ZlcnZpZXdNb2RlQWN0aW9uIikpOworQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIFFQcmlu dFByZXZpZXdEaWFsb2dQcml2YXRlOjpzZXR1cEFjdGlvbnMoKQorICAgICBwcmludGVyR3JvdXAg PSBuZXcgUUFjdGlvbkdyb3VwKHEpOworICAgICBwcmludEFjdGlvbiA9IHByaW50ZXJHcm91cC0+ YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxv ZyIsICJQcmludCIpKTsKKyAgICAgcGFnZVNldHVwQWN0aW9uID0gcHJpbnRlckdyb3VwLT5hZGRB Y3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwg IlBhZ2Ugc2V0dXAiKSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihwcmludEFjdGlvbiwgUUxh dGluMVN0cmluZygicHJpbnQiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihwcmludEFjdGlv biwgUUxhdGluMVN0cmluZygicHJpbnRlciIpKTsKKyAgICAgcXRfc2V0dXBBY3Rpb25JY29uKHBh Z2VTZXR1cEFjdGlvbiwgUUxhdGluMVN0cmluZygicGFnZS1zZXR1cCIpKTsKKyAgICAgUU9iamVj dDo6Y29ubmVjdChwcmludEFjdGlvbiwgU0lHTkFMKHRyaWdnZXJlZChib29sKSksIHEsIFNMT1Qo X3FfcHJpbnQoKSkpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHBhZ2VTZXR1cEFjdGlvbiwgU0lH TkFMKHRyaWdnZXJlZChib29sKSksIHEsIFNMT1QoX3FfcGFnZVNldHVwKCkpKTsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5LmNwcCBiL3F0YmFzZS9zcmMvc3Fs L2tlcm5lbC9xc3FscXVlcnkuY3BwCitpbmRleCAzMmM2MTY2Yzc5Li42MGFmZWYxMGMzIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVlcnkuY3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorICoqCistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55 IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENv bnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIHRoZSBRdFNxbCBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitAQCAtMzc3LDYg KzM3NywxMCBAQCBib29sIFFTcWxRdWVyeTo6ZXhlYyhjb25zdCBRU3RyaW5nJiBxdWVyeSkKKyAg ICAgUUVsYXBzZWRUaW1lciB0OworICAgICB0LnN0YXJ0KCk7CisgI2VuZGlmCisrICAgIGlmICgh ZHJpdmVyKCkpIHsKKysgICAgICAgIHFXYXJuaW5nKCJRU3FsUXVlcnk6OmV4ZWM6IGNhbGxlZCBi ZWZvcmUgZHJpdmVyIGhhcyBiZWVuIHNldCB1cCIpOworKyAgICAgICAgcmV0dXJuIGZhbHNlOwor KyAgICB9CisgICAgIGlmIChkLT5yZWYubG9hZFJlbGF4ZWQoKSAhPSAxKSB7CisgICAgICAgICBi b29sIGZvID0gaXNGb3J3YXJkT25seSgpOworICAgICAgICAgKnRoaXMgPSBRU3FsUXVlcnkoZHJp dmVyKCktPmNyZWF0ZVJlc3VsdCgpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Rlc3RsaWIv cWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcCBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xYWJzdHJh Y3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCitpbmRleCA4ZWZiOWM1M2Q0Li5jZTA2MmY2NmQ3IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAK KysrKyBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCitA QCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgUUFic3RyYWN0SXRlbU1vZGVsVGVzdGVyUHJpdmF0ZTo6 cGFyZW50KCkKKyAKKyAgICAgLy8gQ29tbW9uIGVycm9yIHRlc3QgIzIsIG1ha2Ugc3VyZSB0aGF0 IGEgc2Vjb25kIGxldmVsIGluZGV4IGhhcyBhIHBhcmVudAorICAgICAvLyB0aGF0IGlzIHRoZSBm aXJzdCBsZXZlbCBpbmRleC4KKy0gICAgaWYgKG1vZGVsLT5yb3dDb3VudCh0b3BJbmRleCkgPiAw KSB7CisrICAgIGlmIChtb2RlbC0+cm93Q291bnQodG9wSW5kZXgpID4gMCAmJiBtb2RlbC0+Y29s dW1uQ291bnQodG9wSW5kZXgpID4gMCkgeworICAgICAgICAgUU1vZGVsSW5kZXggY2hpbGRJbmRl eCA9IG1vZGVsLT5pbmRleCgwLCAwLCB0b3BJbmRleCk7CisgICAgICAgICBNT0RFTFRFU1RFUl9W RVJJRlkoY2hpbGRJbmRleC5pc1ZhbGlkKCkpOworICAgICAgICAgTU9ERUxURVNURVJfQ09NUEFS RShtb2RlbC0+cGFyZW50KGNoaWxkSW5kZXgpLCB0b3BJbmRleCk7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy90ZXN0bGliL3Fhc2NpaWtleS5jcHAgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFzY2lp a2V5LmNwcAoraW5kZXggOWEzMDhkYTJiYy4uOTM0OThiMjU2ZiAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvdGVzdGxpYi9xYXNjaWlrZXkuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFz Y2lpa2V5LmNwcAorQEAgLTQ5OCw2ICs0OTgsMTEgQEAgY2hhciBRVGVzdDo6a2V5VG9Bc2NpaShR dDo6S2V5IGtleSkKKyAgICAgY2FzZSBRdDo6S2V5X0xhdW5jaEUgOiByZXR1cm4gMDsgLy8gPSAw eDEwYjAsCisgICAgIGNhc2UgUXQ6OktleV9MYXVuY2hGIDogcmV0dXJuIDA7IC8vID0gMHgxMGIx LAorIAorKyAgICAvLyBLZXlwYWQgbmF2aWdhdGlvbiBrZXlzCisrICAgIGNhc2UgUXQ6OktleV9T ZWxlY3QgOiByZXR1cm4gMDsgLy8gPSAweDAxMDEwMDAwCisrICAgIGNhc2UgUXQ6OktleV9ZZXMg OiByZXR1cm4gMDsgLy8gPSAweDAxMDEwMDAxCisrICAgIGNhc2UgUXQ6OktleV9ObyA6IHJldHVy biAwOyAvLyA9IDB4MDEwMTAwMDIKKysKKyAgICAgZGVmYXVsdDogUVRFU1RfQVNTRVJUKGZhbHNl KTsgcmV0dXJuIDA7CisgICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy90ZXN0bGli L3F0ZXN0cmVzdWx0LmNwcCBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAKK2lu ZGV4IDg4MDI4YWFjNmUuLjJlODk5MzA3NzYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Rlc3Rs aWIvcXRlc3RyZXN1bHQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQu Y3BwCitAQCAtMjUxLDcgKzI1MSw4IEBAIGJvb2wgUVRlc3RSZXN1bHQ6OnZlcmlmeShib29sIHN0 YXRlbWVudCwgY29uc3QgY2hhciAqc3RhdGVtZW50U3RyLAorIHsKKyAgICAgUVRFU1RfQVNTRVJU KHN0YXRlbWVudFN0cik7CisgCistICAgIGNoYXIgbXNnWzEwMjRdID0geydcMCd9OworKyAgICBj aGFyIG1zZ1sxMDI0XTsKKysgICAgbXNnWzBdID0gJ1wwJzsKKyAKKyAgICAgaWYgKFFUZXN0TG9n Ojp2ZXJib3NlTGV2ZWwoKSA+PSAyKSB7CisgICAgICAgICBxc25wcmludGYobXNnLCAxMDI0LCAi UVZFUklGWSglcykiLCBzdGF0ZW1lbnRTdHIpOworQEAgLTMwOSw3ICszMTAsOCBAQCBzdGF0aWMg Ym9vbCBjb21wYXJlSGVscGVyKGJvb2wgc3VjY2VzcywgY29uc3QgY2hhciAqZmFpbHVyZU1zZywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFzVmFsdWVzID0gdHJ1ZSkKKyB7Cisg ICAgIGNvbnN0IHNpemVfdCBtYXhNc2dMZW4gPSAxMDI0OworLSAgICBjaGFyIG1zZ1ttYXhNc2dM ZW5dID0geydcMCd9OworKyAgICBjaGFyIG1zZ1ttYXhNc2dMZW5dOworKyAgICBtc2dbMF0gPSAn XDAnOworIAorICAgICBRVEVTVF9BU1NFUlQoZXhwZWN0ZWQpOworICAgICBRVEVTVF9BU1NFUlQo YWN0dWFsKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvZGlhbG9ncy9xY29sb3Jk aWFsb2cuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNwcAor aW5kZXggNDI0NzczMTI3NS4uY2IzMjViZTg1YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lk Z2V0cy9kaWFsb2dzL3Fjb2xvcmRpYWxvZy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9k aWFsb2dzL3Fjb2xvcmRpYWxvZy5jcHAKK0BAIC03OCw3ICs3OCwxMCBAQAorICNpbmNsdWRlICJx d2luZG93LmgiCisgCisgI2luY2x1ZGUgInByaXZhdGUvcWRpYWxvZ19wLmgiCisrI2luY2x1ZGUg InByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaCIKKyAKKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9y bXNlcnZpY2VzLmg+CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1pbnRlZ3JhdGlvbi5oPgorICNp bmNsdWRlIDxhbGdvcml0aG0+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCitAQCAtMTYxMSw2ICsx NjE0LDIwIEBAIHZvaWQgUUNvbG9yRGlhbG9nUHJpdmF0ZTo6X3FfbmV3U3RhbmRhcmQoaW50IHIs IGludCBjKQorIHZvaWQgUUNvbG9yRGlhbG9nUHJpdmF0ZTo6X3FfcGlja1NjcmVlbkNvbG9yKCkK KyB7CisgICAgIFFfUShRQ29sb3JEaWFsb2cpOworKworKyAgICBhdXRvICpwbGF0Zm9ybVNlcnZp Y2VzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5zZXJ2 aWNlcygpOworKyAgICBpZiAocGxhdGZvcm1TZXJ2aWNlcy0+aGFzQ2FwYWJpbGl0eShRUGxhdGZv cm1TZXJ2aWNlczo6Q2FwYWJpbGl0eTo6Q29sb3JQaWNraW5nKSkgeworKyAgICAgICAgaWYgKGF1 dG8gKmNvbG9yUGlja2VyID0gcGxhdGZvcm1TZXJ2aWNlcy0+Y29sb3JQaWNrZXIocS0+d2luZG93 SGFuZGxlKCkpKSB7CisrICAgICAgICAgICAgcS0+Y29ubmVjdChjb2xvclBpY2tlciwgJlFQbGF0 Zm9ybVNlcnZpY2VDb2xvclBpY2tlcjo6Y29sb3JQaWNrZWQsIHEsCisrICAgICAgICAgICAgICAg ICAgICAgICBbcSwgY29sb3JQaWNrZXJdKGNvbnN0IFFDb2xvciAmY29sb3IpIHsKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb2xvclBpY2tlci0+ZGVsZXRlTGF0ZXIoKTsKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICBxLT5zZXRDdXJyZW50Q29sb3IoY29sb3IpOworKyAgICAgICAg ICAgICAgICAgICAgICAgfSk7CisrICAgICAgICAgICAgY29sb3JQaWNrZXItPnBpY2tDb2xvcigp OworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysgICAgfQorKworICAgICBpZiAo IWNvbG9yUGlja2luZ0V2ZW50RmlsdGVyKQorICAgICAgICAgY29sb3JQaWNraW5nRXZlbnRGaWx0 ZXIgPSBuZXcgUUNvbG9yUGlja2luZ0V2ZW50RmlsdGVyKHRoaXMsIHEpOworICAgICBxLT5pbnN0 YWxsRXZlbnRGaWx0ZXIoY29sb3JQaWNraW5nRXZlbnRGaWx0ZXIpOworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWFic3RyYWN0aXRlbWRlbGVnYXRlLmNwcCBiL3F0 YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWFic3RyYWN0aXRlbWRlbGVnYXRlLmNwcAoraW5k ZXggZTEyMDgxN2VkYy4uOGVhMzZiNTQyNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0 cy9pdGVtdmlld3MvcWFic3RyYWN0aXRlbWRlbGVnYXRlLmNwcAorKysrIGIvcXRiYXNlL3NyYy93 aWRnZXRzL2l0ZW12aWV3cy9xYWJzdHJhY3RpdGVtZGVsZWdhdGUuY3BwCitAQCAtNDAwLDEyICs0 MDAsNyBAQCBib29sIFFBYnN0cmFjdEl0ZW1EZWxlZ2F0ZTo6aGVscEV2ZW50KFFIZWxwRXZlbnQg KmV2ZW50LAorICAgICAgICAgY29uc3QgUVN0cmluZyB0b29sdGlwID0gaW5kZXguaXNWYWxpZCgp ID8KKyAgICAgICAgICAgICAgIGQtPnRleHRGb3JSb2xlKFF0OjpUb29sVGlwUm9sZSwgaW5kZXgu ZGF0YShRdDo6VG9vbFRpcFJvbGUpLCBvcHRpb24ubG9jYWxlLCBwcmVjaXNpb24pIDoKKyAgICAg ICAgICAgICAgIFFTdHJpbmcoKTsKKy0gICAgICAgIFFSZWN0IHJlY3Q7CistICAgICAgICBpZiAo aW5kZXguaXNWYWxpZCgpKSB7CistICAgICAgICAgICAgY29uc3QgUVJlY3QgciA9IHZpZXctPnZp c3VhbFJlY3QoaW5kZXgpOworLSAgICAgICAgICAgIHJlY3QgPSBRUmVjdCh2aWV3LT5tYXBUb0ds b2JhbChyLnRvcExlZnQoKSksIHIuc2l6ZSgpKTsKKy0gICAgICAgIH0KKy0gICAgICAgIFFUb29s VGlwOjpzaG93VGV4dChoZS0+Z2xvYmFsUG9zKCksIHRvb2x0aXAsIHZpZXcsIHJlY3QpOworKyAg ICAgICAgUVRvb2xUaXA6OnNob3dUZXh0KGhlLT5nbG9iYWxQb3MoKSwgdG9vbHRpcCwgdmlldy0+ dmlld3BvcnQoKSwgb3B0aW9uLnJlY3QpOworICAgICAgICAgZXZlbnQtPnNldEFjY2VwdGVkKCF0 b29sdGlwLmlzRW1wdHkoKSk7CisgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FsaXN0dmlldy5jcHAgYi9xdGJhc2Uv c3JjL3dpZGdldHMvaXRlbXZpZXdzL3FsaXN0dmlldy5jcHAKK2luZGV4IDJiMzQ0NzY2NDIuLmVl YmZhYTAzMGUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FsaXN0 dmlldy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNw cAorQEAgLTMzODYsNiArMzM4Niw3IEBAIHZvaWQgUUljb25Nb2RlVmlld0Jhc2U6OnVwZGF0ZUNv bnRlbnRzU2l6ZSgpCisgKi8KKyB2b2lkIFFMaXN0Vmlldzo6Y3VycmVudENoYW5nZWQoY29uc3Qg UU1vZGVsSW5kZXggJmN1cnJlbnQsIGNvbnN0IFFNb2RlbEluZGV4ICZwcmV2aW91cykKKyB7Cisr ICAgIFFBYnN0cmFjdEl0ZW1WaWV3OjpjdXJyZW50Q2hhbmdlZChjdXJyZW50LCBwcmV2aW91cyk7 CisgI2lmbmRlZiBRVF9OT19BQ0NFU1NJQklMSVRZCisgICAgIGlmIChRQWNjZXNzaWJsZTo6aXNB Y3RpdmUoKSkgeworICAgICAgICAgaWYgKGN1cnJlbnQuaXNWYWxpZCgpKSB7CitAQCAtMzM5Niw3 ICszMzk3LDYgQEAgdm9pZCBRTGlzdFZpZXc6OmN1cnJlbnRDaGFuZ2VkKGNvbnN0IFFNb2RlbElu ZGV4ICZjdXJyZW50LCBjb25zdCBRTW9kZWxJbmRleCAmcHIKKyAgICAgICAgIH0KKyAgICAgfQor ICNlbmRpZgorLSAgICBRQWJzdHJhY3RJdGVtVmlldzo6Y3VycmVudENoYW5nZWQoY3VycmVudCwg cHJldmlvdXMpOworIH0KKyAKKyAvKiEKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMv aXRlbXZpZXdzL3F0YWJsZXZpZXcuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9x dGFibGV2aWV3LmNwcAoraW5kZXggOTM0YWM1ODFiMi4uZjc5YmIyNDI0OSAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy5jcHAKK0BAIC0xMDEzLDYgKzEwMTMs NyBAQCB2b2lkIFFUYWJsZVZpZXdQcml2YXRlOjpkcmF3Q2VsbChRUGFpbnRlciAqcGFpbnRlciwg Y29uc3QgUVN0eWxlT3B0aW9uVmlld0l0ZW0gJgorIGludCBRVGFibGVWaWV3UHJpdmF0ZTo6d2lk dGhIaW50Rm9ySW5kZXgoY29uc3QgUU1vZGVsSW5kZXggJmluZGV4LCBpbnQgaGludCwgY29uc3Qg UVN0eWxlT3B0aW9uVmlld0l0ZW0gJm9wdGlvbikgY29uc3QKKyB7CisgICAgIFFfUShjb25zdCBR VGFibGVWaWV3KTsKKysgICAgY29uc3QgaW50IG9sZEhpbnQgPSBoaW50OworICAgICBRV2lkZ2V0 ICplZGl0b3IgPSBlZGl0b3JGb3JJbmRleChpbmRleCkud2lkZ2V0LmRhdGEoKTsKKyAgICAgaWYg KGVkaXRvciAmJiBwZXJzaXN0ZW50LmNvbnRhaW5zKGVkaXRvcikpIHsKKyAgICAgICAgIGhpbnQg PSBxTWF4KGhpbnQsIGVkaXRvci0+c2l6ZUhpbnQoKS53aWR0aCgpKTsKK0BAIC0xMDIxLDYgKzEw MjIsMTcgQEAgaW50IFFUYWJsZVZpZXdQcml2YXRlOjp3aWR0aEhpbnRGb3JJbmRleChjb25zdCBR TW9kZWxJbmRleCAmaW5kZXgsIGludCBoaW50LCBjb24KKyAgICAgICAgIGhpbnQgPSBxQm91bmQo bWluLCBoaW50LCBtYXgpOworICAgICB9CisgICAgIGhpbnQgPSBxTWF4KGhpbnQsIHEtPml0ZW1E ZWxlZ2F0ZShpbmRleCktPnNpemVIaW50KG9wdGlvbiwgaW5kZXgpLndpZHRoKCkpOworKworKyAg ICBpZiAoaGFzU3BhbnMoKSkgeworKyAgICAgICAgYXV0byBzcGFuID0gc3BhbnMuc3BhbkF0KGlu ZGV4LmNvbHVtbigpLCBpbmRleC5yb3coKSk7CisrICAgICAgICBpZiAoc3BhbiAmJiBzcGFuLT5t X2xlZnQgPT0gaW5kZXguY29sdW1uKCkgJiYgc3Bhbi0+bV90b3AgPT0gaW5kZXgucm93KCkpIHsK KysgICAgICAgICAgICAvLyBzcGFucyBhcmUgc2NyZXdlZCB1cCB3aGVuIHNlY3Rpb25zIGFyZSBt b3ZlZAorKyAgICAgICAgICAgIGNvbnN0IGF1dG8gbGVmdCA9IGxvZ2ljYWxDb2x1bW4oc3Bhbi0+ bV9sZWZ0KTsKKysgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBzcGFuLT53aWR0aCgp OyArK2kpCisrICAgICAgICAgICAgICAgaGludCAtPSBxLT5jb2x1bW5XaWR0aCh2aXN1YWxDb2x1 bW4obGVmdCArIGkpKTsKKysgICAgICAgIH0KKysgICAgICAgIGhpbnQgPSBzdGQ6Om1heChoaW50 LCBvbGRIaW50KTsKKysgICAgfQorICAgICByZXR1cm4gaGludDsKKyB9CisgCitAQCAtMTA1Myw2 ICsxMDY1LDExIEBAIGludCBRVGFibGVWaWV3UHJpdmF0ZTo6aGVpZ2h0SGludEZvckluZGV4KGNv bnN0IFFNb2RlbEluZGV4ICZpbmRleCwgaW50IGhpbnQsIFFTCisgICAgICAgICBvcHRpb24ucmVj dC5zZXRIZWlnaHQoaGVpZ2h0KTsKKyAgICAgICAgIG9wdGlvbi5yZWN0LnNldFgocS0+Y29sdW1u Vmlld3BvcnRQb3NpdGlvbihpbmRleC5jb2x1bW4oKSkpOworICAgICAgICAgb3B0aW9uLnJlY3Qu c2V0V2lkdGgocS0+Y29sdW1uV2lkdGgoaW5kZXguY29sdW1uKCkpKTsKKysgICAgICAgIGlmICho YXNTcGFucygpKSB7CisrICAgICAgICAgICAgYXV0byBzcGFuID0gc3BhbnMuc3BhbkF0KGluZGV4 LmNvbHVtbigpLCBpbmRleC5yb3coKSk7CisrICAgICAgICAgICAgaWYgKHNwYW4gJiYgc3Bhbi0+ bV9sZWZ0ID09IGluZGV4LmNvbHVtbigpICYmIHNwYW4tPm1fdG9wID09IGluZGV4LnJvdygpKQor KyAgICAgICAgICAgICAgICBvcHRpb24ucmVjdC5zZXRXaWR0aChzdGQ6Om1heChvcHRpb24ucmVj dC53aWR0aCgpLCB2aXN1YWxTcGFuUmVjdCgqc3Bhbikud2lkdGgoKSkpOworKyAgICAgICAgfQor ICAgICAgICAgLy8gMXB4IGxlc3Mgc3BhY2Ugd2hlbiBncmlkIGlzIHNob3duIChzZWUgZHJhd0Nl bGwpCisgICAgICAgICBpZiAoc2hvd0dyaWQpCisgICAgICAgICAgICAgb3B0aW9uLnJlY3Quc2V0 V2lkdGgob3B0aW9uLnJlY3Qud2lkdGgoKSAtIDEpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv d2lkZ2V0cy9rZXJuZWwvcWFjdGlvbi5oIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0 aW9uLmgKK2luZGV4IDI1OGExZWEwYTAuLjczN2MxZTgyODUgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3dpZGdldHMva2VybmVsL3FhY3Rpb24uaAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tl cm5lbC9xYWN0aW9uLmgKK0BAIC04MSw3ICs4MSw3IEBAIGNsYXNzIFFfV0lER0VUU19FWFBPUlQg UUFjdGlvbiA6IHB1YmxpYyBRT2JqZWN0CisgICAgIFFfUFJPUEVSVFkoTWVudVJvbGUgbWVudVJv bGUgUkVBRCBtZW51Um9sZSBXUklURSBzZXRNZW51Um9sZSBOT1RJRlkgY2hhbmdlZCkKKyAgICAg UV9QUk9QRVJUWShib29sIGljb25WaXNpYmxlSW5NZW51IFJFQUQgaXNJY29uVmlzaWJsZUluTWVu dSBXUklURSBzZXRJY29uVmlzaWJsZUluTWVudSBOT1RJRlkgY2hhbmdlZCkKKyAgICAgUV9QUk9Q RVJUWShib29sIHNob3J0Y3V0VmlzaWJsZUluQ29udGV4dE1lbnUgUkVBRCBpc1Nob3J0Y3V0Vmlz aWJsZUluQ29udGV4dE1lbnUgV1JJVEUgc2V0U2hvcnRjdXRWaXNpYmxlSW5Db250ZXh0TWVudSBO T1RJRlkgY2hhbmdlZCkKKy0gICAgUV9QUk9QRVJUWShQcmlvcml0eSBwcmlvcml0eSBSRUFEIHBy aW9yaXR5IFdSSVRFIHNldFByaW9yaXR5KQorKyAgICBRX1BST1BFUlRZKFByaW9yaXR5IHByaW9y aXR5IFJFQUQgcHJpb3JpdHkgV1JJVEUgc2V0UHJpb3JpdHkgTk9USUZZIGNoYW5nZWQpCisgCisg cHVibGljOgorICAgICAvLyBub3RlIHRoaXMgaXMgY29waWVkIGludG8gcXBsYXRmb3JtbWVudS5o LCB3aGljaCBtdXN0IHN0YXkgaW4gc3luYworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0 cy9rZXJuZWwvcXdpZGdldC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQu Y3BwCitpbmRleCA5ZWJhMWUwMDFlLi4yNmY2ZDI3ZTE4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tl cm5lbC9xd2lkZ2V0LmNwcAorQEAgLTUyOTYsNyArNTI5Niw3IEBAIHZvaWQgUVdpZGdldFByaXZh dGU6OmRyYXdXaWRnZXQoUVBhaW50RGV2aWNlICpwZGV2LCBjb25zdCBRUmVnaW9uICZyZ24sIGNv bnN0IFFQCisgICAgICAgICBRV2lkZ2V0RWZmZWN0U291cmNlUHJpdmF0ZSAqc291cmNlZCA9IHN0 YXRpY19jYXN0PFFXaWRnZXRFZmZlY3RTb3VyY2VQcml2YXRlICo+CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvdXJjZS0+ZF9mdW5j KCkpOworICAgICAgICAgaWYgKCFzb3VyY2VkLT5jb250ZXh0KSB7CistICAgICAgICAgICAgY29u c3QgUVJlZ2lvbiBlZmZlY3RSZ24ocmduLmJvdW5kaW5nUmVjdCgpKTsKKysgICAgICAgICAgICBj b25zdCBRUmVnaW9uIGVmZmVjdFJnbigoZmxhZ3MgJiBVc2VFZmZlY3RSZWdpb25Cb3VuZHMpID8g cmduLmJvdW5kaW5nUmVjdCgpIDogcmduKTsKKyAgICAgICAgICAgICBRV2lkZ2V0UGFpbnRDb250 ZXh0IGNvbnRleHQocGRldiwgZWZmZWN0UmduLCBvZmZzZXQsIGZsYWdzLCBzaGFyZWRQYWludGVy LCByZXBhaW50TWFuYWdlcik7CisgICAgICAgICAgICAgc291cmNlZC0+Y29udGV4dCA9ICZjb250 ZXh0OworICAgICAgICAgICAgIGlmICghc2hhcmVkUGFpbnRlcikgeworQEAgLTUzMjgsNiArNTMy OCw3IEBAIHZvaWQgUVdpZGdldFByaXZhdGU6OmRyYXdXaWRnZXQoUVBhaW50RGV2aWNlICpwZGV2 LCBjb25zdCBRUmVnaW9uICZyZ24sIGNvbnN0IFFQCisgICAgICAgICB9CisgICAgIH0KKyAjZW5k aWYgLy8gUVRfQ09ORklHKGdyYXBoaWNzZWZmZWN0KQorKyAgICBmbGFncyA9IGZsYWdzICYgflVz ZUVmZmVjdFJlZ2lvbkJvdW5kczsKKyAKKyAgICAgY29uc3QgYm9vbCBhbHNvT25TY3JlZW4gPSBm bGFncyAmIERyYXdQYWludE9uU2NyZWVuOworICAgICBjb25zdCBib29sIHJlY3Vyc2l2ZSA9IGZs YWdzICYgRHJhd1JlY3Vyc2l2ZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMva2Vy bmVsL3F3aWRnZXRfcC5oIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaAor aW5kZXggZWVmNmI4ZmEyYy4uYzQzMmY0YjVkNSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lk Z2V0cy9rZXJuZWwvcXdpZGdldF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwv cXdpZGdldF9wLmgKK0BAIC0yMjksNyArMjI5LDggQEAgcHVibGljOgorICAgICAgICAgRG9udFN1 YnRyYWN0T3BhcXVlQ2hpbGRyZW4gPSAweDEwLAorICAgICAgICAgRG9udERyYXdPcGFxdWVDaGls ZHJlbiA9IDB4MjAsCisgICAgICAgICBEb250RHJhd05hdGl2ZUNoaWxkcmVuID0gMHg0MCwKKy0g ICAgICAgIERvbnRTZXRDb21wb3NpdGlvbk1vZGUgPSAweDgwCisrICAgICAgICBEb250U2V0Q29t cG9zaXRpb25Nb2RlID0gMHg4MCwKKysgICAgICAgIFVzZUVmZmVjdFJlZ2lvbkJvdW5kcyA9IDB4 MTAwCisgICAgIH07CisgICAgIFFfREVDTEFSRV9GTEFHUyhEcmF3V2lkZ2V0RmxhZ3MsIERyYXdX aWRnZXRGbGFnKQorICAgICBRX0ZMQUcoRHJhd1dpZGdldEZsYWdzKQorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldHJlcGFpbnRtYW5hZ2VyLmNwcCBiL3F0YmFz ZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldHJlcGFpbnRtYW5hZ2VyLmNwcAoraW5kZXggMDI4 ODBiMzRkYS4uMGQ0NGUxMzI2ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJu ZWwvcXdpZGdldHJlcGFpbnRtYW5hZ2VyLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tl cm5lbC9xd2lkZ2V0cmVwYWludG1hbmFnZXIuY3BwCitAQCAtMTAxOCw3ICsxMDE4LDggQEAgdm9p ZCBRV2lkZ2V0UmVwYWludE1hbmFnZXI6OnBhaW50QW5kRmx1c2goKQorIAorICAgICAvLyBQYWlu dCB0aGUgcmVzdCB3aXRoIGNvbXBvc2l0aW9uLgorICAgICBpZiAocmVwYWludEFsbFdpZGdldHMg fHwgIWRpcnR5Q29weS5pc0VtcHR5KCkpIHsKKy0gICAgICAgIFFXaWRnZXRQcml2YXRlOjpEcmF3 V2lkZ2V0RmxhZ3MgZmxhZ3MgPSBRV2lkZ2V0UHJpdmF0ZTo6RHJhd0FzUm9vdCB8IFFXaWRnZXRQ cml2YXRlOjpEcmF3UmVjdXJzaXZlOworKyAgICAgICAgUVdpZGdldFByaXZhdGU6OkRyYXdXaWRn ZXRGbGFncyBmbGFncyA9IFFXaWRnZXRQcml2YXRlOjpEcmF3QXNSb290IHwgUVdpZGdldFByaXZh dGU6OkRyYXdSZWN1cnNpdmUKKysgICAgICAgICAgICAgICAgfCBRV2lkZ2V0UHJpdmF0ZTo6VXNl RWZmZWN0UmVnaW9uQm91bmRzOworICAgICAgICAgdGx3LT5kX2Z1bmMoKS0+ZHJhd1dpZGdldChz dG9yZS0+cGFpbnREZXZpY2UoKSwgZGlydHlDb3B5LCBRUG9pbnQoKSwgZmxhZ3MsIG51bGxwdHIs IHRoaXMpOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3N0eWxl cy9xZnVzaW9uc3R5bGUuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3N0eWxlcy9xZnVzaW9uc3R5 bGUuY3BwCitpbmRleCBmNDM0NWQ5N2M0Li45NjI5MTJjODM4IDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy93aWRnZXRzL3N0eWxlcy9xZnVzaW9uc3R5bGUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dp ZGdldHMvc3R5bGVzL3FmdXNpb25zdHlsZS5jcHAKK0BAIC0xNzcyLDE0ICsxNzcyLDYgQEAgdm9p ZCBRRnVzaW9uU3R5bGU6OmRyYXdDb250cm9sKENvbnRyb2xFbGVtZW50IGVsZW1lbnQsIGNvbnN0 IFFTdHlsZU9wdGlvbiAqb3B0aW8KKyAgICAgICAgICAgICBwcm94eSgpLT5kcmF3Q29udHJvbChD RV9QdXNoQnV0dG9uTGFiZWwsICZzdWJvcHQsIHBhaW50ZXIsIHdpZGdldCk7CisgICAgICAgICB9 CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSBDRV9QdXNoQnV0dG9uTGFiZWw6CistICAgICAg ICBpZiAoY29uc3QgUVN0eWxlT3B0aW9uQnV0dG9uICpidXR0b24gPSBxc3R5bGVvcHRpb25fY2Fz dDxjb25zdCBRU3R5bGVPcHRpb25CdXR0b24gKj4ob3B0aW9uKSkgeworLSAgICAgICAgICAgIFFT dHlsZU9wdGlvbkJ1dHRvbiBiKCpidXR0b24pOworLSAgICAgICAgICAgIC8vIG5vIFBNX0J1dHRv blNoaWZ0SG9yaXpvbnRhbCBhbmQgUE1fQnV0dG9uU2hpZnRWZXJ0aWNhbCBmb3IgZnVzaW9uIHN0 eWxlCistICAgICAgICAgICAgYi5zdGF0ZSAmPSB+KFN0YXRlX09uIHwgU3RhdGVfU3Vua2VuKTsK Ky0gICAgICAgICAgICBRQ29tbW9uU3R5bGU6OmRyYXdDb250cm9sKGVsZW1lbnQsICZiLCBwYWlu dGVyLCB3aWRnZXQpOworLSAgICAgICAgfQorLSAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgQ0Vf TWVudUJhckVtcHR5QXJlYToKKyAgICAgICAgIHBhaW50ZXItPnNhdmUoKTsKKyAgICAgeworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy91dGlsL3Fjb21wbGV0ZXIuY3BwIGIvcXRiYXNl L3NyYy93aWRnZXRzL3V0aWwvcWNvbXBsZXRlci5jcHAKK2luZGV4IDE4YjI0MDYzZDguLmVmNzIw N2E4YTMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNw cAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3V0aWwvcWNvbXBsZXRlci5jcHAKK0BAIC0xMTIw LDYgKzExMjAsOCBAQCB2b2lkIFFDb21wbGV0ZXI6OnNldE1vZGVsKFFBYnN0cmFjdEl0ZW1Nb2Rl bCAqbW9kZWwpCisgeworICAgICBRX0QoUUNvbXBsZXRlcik7CisgICAgIFFBYnN0cmFjdEl0ZW1N b2RlbCAqb2xkTW9kZWwgPSBkLT5wcm94eS0+c291cmNlTW9kZWwoKTsKKysgICAgaWYgKG9sZE1v ZGVsID09IG1vZGVsKQorKyAgICAgICAgcmV0dXJuOworICNpZiBRVF9DT05GSUcoZmlsZXN5c3Rl bW1vZGVsKQorICAgICBpZiAocW9iamVjdF9jYXN0PGNvbnN0IFFGaWxlU3lzdGVtTW9kZWwgKj4o b2xkTW9kZWwpKQorICAgICAgICAgc2V0Q29tcGxldGlvblJvbGUoUXQ6OkVkaXRSb2xlKTsgLy8g UVRCVUctNTQ2NDIsIGNsZWFyIEZpbGVOYW1lUm9sZSBzZXQgYnkgUUZpbGVTeXN0ZW1Nb2RlbAor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi5j cHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3BwCitpbmRl eCBhMTI4YjIzOTUwLi5kYzQwYmY2MmZiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRz L3dpZGdldHMvcWFic3RyYWN0YnV0dG9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dp ZGdldHMvcWFic3RyYWN0YnV0dG9uLmNwcAorQEAgLTU2LDYgKzU2LDcgQEAKKyAjaWZuZGVmIFFU X05PX0FDQ0VTU0lCSUxJVFkKKyAjaW5jbHVkZSAicWFjY2Vzc2libGUuaCIKKyAjZW5kaWYKKysj aW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisgCisgI2luY2x1ZGUgPGFsZ29yaXRobT4K KyAKK0BAIC0xMDc2LDE5ICsxMDc3LDE5IEBAIHZvaWQgUUFic3RyYWN0QnV0dG9uOjprZXlQcmVz c0V2ZW50KFFLZXlFdmVudCAqZSkKKyB7CisgICAgIFFfRChRQWJzdHJhY3RCdXR0b24pOworICAg ICBib29sIG5leHQgPSB0cnVlOworLSAgICBzd2l0Y2ggKGUtPmtleSgpKSB7CistICAgIGNhc2Ug UXQ6OktleV9FbnRlcjoKKy0gICAgY2FzZSBRdDo6S2V5X1JldHVybjoKKy0gICAgICAgIGUtPmln bm9yZSgpOworLSAgICAgICAgYnJlYWs7CistICAgIGNhc2UgUXQ6OktleV9TZWxlY3Q6CistICAg IGNhc2UgUXQ6OktleV9TcGFjZToKKy0gICAgICAgIGlmICghZS0+aXNBdXRvUmVwZWF0KCkpIHsK Ky0gICAgICAgICAgICBzZXREb3duKHRydWUpOworLSAgICAgICAgICAgIHJlcGFpbnQoKTsKKy0g ICAgICAgICAgICBkLT5lbWl0UHJlc3NlZCgpOworLSAgICAgICAgfQorLSAgICAgICAgYnJlYWs7 CisrCisrICAgIGNvbnN0IGF1dG8ga2V5ID0gc3RhdGljX2Nhc3Q8UXQ6OktleT4oZS0+a2V5KCkp OworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZh dGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5 Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhrZXkpICYmICFlLT5pc0F1 dG9SZXBlYXQoKSkgeworKyAgICAgICAgc2V0RG93bih0cnVlKTsKKysgICAgICAgIHJlcGFpbnQo KTsKKysgICAgICAgIGQtPmVtaXRQcmVzc2VkKCk7CisrICAgICAgICByZXR1cm47CisrICAgIH0K KysKKysgICAgc3dpdGNoIChrZXkpIHsKKyAgICAgY2FzZSBRdDo6S2V5X1VwOgorICAgICAgICAg bmV4dCA9IGZhbHNlOworICAgICAgICAgUV9GQUxMVEhST1VHSCgpOworQEAgLTExNTMsMTUgKzEx NTQsMTUgQEAgdm9pZCBRQWJzdHJhY3RCdXR0b246OmtleVJlbGVhc2VFdmVudChRS2V5RXZlbnQg KmUpCisgICAgIGlmICghZS0+aXNBdXRvUmVwZWF0KCkpCisgICAgICAgICBkLT5yZXBlYXRUaW1l ci5zdG9wKCk7CisgCistICAgIHN3aXRjaCAoZS0+a2V5KCkpIHsKKy0gICAgY2FzZSBRdDo6S2V5 X1NlbGVjdDoKKy0gICAgY2FzZSBRdDo6S2V5X1NwYWNlOgorLSAgICAgICAgaWYgKCFlLT5pc0F1 dG9SZXBlYXQoKSAmJiBkLT5kb3duKQorLSAgICAgICAgICAgIGQtPmNsaWNrKCk7CistICAgICAg ICBicmVhazsKKy0gICAgZGVmYXVsdDoKKy0gICAgICAgIGUtPmlnbm9yZSgpOworKyAgICBjb25z dCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3Jt VGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVt ZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAg aWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhzdGF0aWNfY2FzdDxRdDo6S2V5PihlLT5rZXko KSkpICYmICFlLT5pc0F1dG9SZXBlYXQoKSAmJiBkLT5kb3duKSB7CisrICAgICAgICBkLT5jbGlj aygpOworKyAgICAgICAgcmV0dXJuOworICAgICB9CisrCisrICAgIGUtPmlnbm9yZSgpOworIH0K KyAKKyAvKiFccmVpbXAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9x Y29tYm9ib3guY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcAor aW5kZXggN2E0OTZjMjdlMC4uMGEzZDk2NjQ3YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lk Z2V0cy93aWRnZXRzL3Fjb21ib2JveC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRn ZXRzL3Fjb21ib2JveC5jcHAKK0BAIC0zMzUyLDcgKzMzNTIsMjMgQEAgdm9pZCBRQ29tYm9Cb3g6 OmtleVByZXNzRXZlbnQoUUtleUV2ZW50ICplKQorIAorICAgICBNb3ZlIG1vdmUgPSBOb01vdmU7 CisgICAgIGludCBuZXdJbmRleCA9IGN1cnJlbnRJbmRleCgpOworLSAgICBzd2l0Y2ggKGUtPmtl eSgpKSB7CisrCisrICAgIGJvb2wgcHJlc3NMaWtlQnV0dG9uID0gIWQtPmxpbmVFZGl0OworKyNp ZmRlZiBRVF9LRVlQQURfTkFWSUdBVElPTgorKyAgICBwcmVzc0xpa2VCdXR0b24gfD0gUUFwcGxp Y2F0aW9uUHJpdmF0ZTo6a2V5cGFkTmF2aWdhdGlvbkVuYWJsZWQoKSAmJiAhaGFzRWRpdEZvY3Vz KCk7CisrI2VuZGlmCisrICAgIGF1dG8ga2V5ID0gc3RhdGljX2Nhc3Q8UXQ6OktleT4oZS0+a2V5 KCkpOworKyAgICBpZiAocHJlc3NMaWtlQnV0dG9uKSB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1 dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50 KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAg ICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhrZXkpKSB7CisrICAgICAgICAgICAgc2hv d1BvcHVwKCk7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICB9CisrCisr ICAgIHN3aXRjaCAoa2V5KSB7CisgICAgIGNhc2UgUXQ6OktleV9VcDoKKyAgICAgICAgIGlmIChl LT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIpCisgICAgICAgICAgICAgYnJlYWs7 IC8vIHBhc3MgdG8gbGluZSBlZGl0IGZvciBhdXRvIGNvbXBsZXRpb24KK0BAIC0zMzk0LDI2ICsz NDEwLDExIEBAIHZvaWQgUUNvbWJvQm94OjprZXlQcmVzc0V2ZW50KFFLZXlFdmVudCAqZSkKKyAg ICAgICAgICAgICByZXR1cm47CisgICAgICAgICB9CisgICAgICAgICBicmVhazsKKy0gICAgY2Fz ZSBRdDo6S2V5X1NwYWNlOgorLSAgICAgICAgaWYgKCFkLT5saW5lRWRpdCkgeworLSAgICAgICAg ICAgIHNob3dQb3B1cCgpOworLSAgICAgICAgICAgIHJldHVybjsKKy0gICAgICAgIH0KKy0gICAg ICAgIGJyZWFrOworLSAgICBjYXNlIFF0OjpLZXlfRW50ZXI6CistICAgIGNhc2UgUXQ6OktleV9S ZXR1cm46CisgICAgIGNhc2UgUXQ6OktleV9Fc2NhcGU6CisgICAgICAgICBpZiAoIWQtPmxpbmVF ZGl0KQorICAgICAgICAgICAgIGUtPmlnbm9yZSgpOworICAgICAgICAgYnJlYWs7CisgI2lmZGVm IFFUX0tFWVBBRF9OQVZJR0FUSU9OCistICAgIGNhc2UgUXQ6OktleV9TZWxlY3Q6CistICAgICAg ICBpZiAoUUFwcGxpY2F0aW9uUHJpdmF0ZTo6a2V5cGFkTmF2aWdhdGlvbkVuYWJsZWQoKQorLSAg ICAgICAgICAgICAgICAmJiAoIWhhc0VkaXRGb2N1cygpIHx8ICFkLT5saW5lRWRpdCkpIHsKKy0g ICAgICAgICAgICBzaG93UG9wdXAoKTsKKy0gICAgICAgICAgICByZXR1cm47CistICAgICAgICB9 CistICAgICAgICBicmVhazsKKyAgICAgY2FzZSBRdDo6S2V5X0xlZnQ6CisgICAgIGNhc2UgUXQ6 OktleV9SaWdodDoKKyAgICAgICAgIGlmIChRQXBwbGljYXRpb25Qcml2YXRlOjprZXlwYWROYXZp Z2F0aW9uRW5hYmxlZCgpICYmICFoYXNFZGl0Rm9jdXMoKSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3dpZGdldHMvd2lkZ2V0cy9xZGF0ZXRpbWVlZGl0X3AuaCBiL3F0YmFzZS9zcmMvd2lkZ2V0 cy93aWRnZXRzL3FkYXRldGltZWVkaXRfcC5oCitpbmRleCBkMzZiNmY4ZjlhLi5lMGRmNWI1MTU4 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRpdF9w LmgKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRldGltZWVkaXRfcC5oCitA QCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqCistKiogQ29weXJpZ2h0 IChDKSAyMDE4IFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhl IFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2lu Zy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFdpZGdldHMgbW9kdWxlIG9m IHRoZSBRdCBUb29sa2l0LgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRz L3Fncm91cGJveC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3Bw CitpbmRleCAwMmEwYmVkMzI1Li4zZjNlY2NjMzcwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93 aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dp ZGdldHMvcWdyb3VwYm94LmNwcAorQEAgLTU0LDYgKzU0LDggQEAKKyAjaW5jbHVkZSAicWFjY2Vz c2libGUuaCIKKyAjZW5kaWYKKyAjaW5jbHVkZSA8cHJpdmF0ZS9xd2lkZ2V0X3AuaD4KKysjaW5j bHVkZSA8cHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRm b3JtdGhlbWUuaD4KKyAKKyAjaW5jbHVkZSAicWRlYnVnLmgiCisgCitAQCAtMzYwLDcgKzM2Miwx MCBAQCBib29sIFFHcm91cEJveDo6ZXZlbnQoUUV2ZW50ICplKQorICAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgIGNhc2UgUUV2ZW50OjpLZXlQcmVzczogeworICAgICAgICAgUUtleUV2ZW50ICpr ID0gc3RhdGljX2Nhc3Q8UUtleUV2ZW50Kj4oZSk7CistICAgICAgICBpZiAoIWstPmlzQXV0b1Jl cGVhdCgpICYmIChrLT5rZXkoKSA9PSBRdDo6S2V5X1NlbGVjdCB8fCBrLT5rZXkoKSA9PSBRdDo6 S2V5X1NwYWNlKSkgeworKyAgICAgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3Vp QXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0 dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgICAgIGlmICghay0+aXNBdXRvUmVw ZWF0KCkgJiYgYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKHN0YXRpY19jYXN0PFF0OjpLZXk+KGst PmtleSgpKSkpIHsKKyAgICAgICAgICAgICBkLT5wcmVzc2VkQ29udHJvbCA9IFFTdHlsZTo6U0Nf R3JvdXBCb3hDaGVja0JveDsKKyAgICAgICAgICAgICB1cGRhdGUoc3R5bGUoKS0+c3ViQ29udHJv bFJlY3QoUVN0eWxlOjpDQ19Hcm91cEJveCwgJmJveCwgUVN0eWxlOjpTQ19Hcm91cEJveENoZWNr Qm94LCB0aGlzKSk7CisgICAgICAgICAgICAgcmV0dXJuIHRydWU7CitAQCAtMzY5LDcgKzM3NCwx MCBAQCBib29sIFFHcm91cEJveDo6ZXZlbnQoUUV2ZW50ICplKQorICAgICB9CisgICAgIGNhc2Ug UUV2ZW50OjpLZXlSZWxlYXNlOiB7CisgICAgICAgICBRS2V5RXZlbnQgKmsgPSBzdGF0aWNfY2Fz dDxRS2V5RXZlbnQqPihlKTsKKy0gICAgICAgIGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgKGst PmtleSgpID09IFF0OjpLZXlfU2VsZWN0IHx8IGstPmtleSgpID09IFF0OjpLZXlfU3BhY2UpKSB7 CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblBy aXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMp CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFM aXN0PFF0OjpLZXk+PigpOworKyAgICAgICAgaWYgKCFrLT5pc0F1dG9SZXBlYXQoKSAmJiBidXR0 b25QcmVzc0tleXMuY29udGFpbnMoc3RhdGljX2Nhc3Q8UXQ6OktleT4oay0+a2V5KCkpKSkgewor ICAgICAgICAgICAgIGJvb2wgdG9nZ2xlID0gKGQtPnByZXNzZWRDb250cm9sID09IFFTdHlsZTo6 U0NfR3JvdXBCb3hMYWJlbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGQtPnByZXNz ZWRDb250cm9sID09IFFTdHlsZTo6U0NfR3JvdXBCb3hDaGVja0JveCk7CisgICAgICAgICAgICAg ZC0+cHJlc3NlZENvbnRyb2wgPSBRU3R5bGU6OlNDX05vbmU7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy93aWRnZXRzL3dpZGdldHMvcWxhYmVsLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRn ZXRzL3FsYWJlbC5jcHAKK2luZGV4IDMwZmY4MGNiYjAuLmNmMjYwNWMxN2MgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xbGFiZWwuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3dpZGdldHMvd2lkZ2V0cy9xbGFiZWwuY3BwCitAQCAtNDIxLDkgKzQyMSw2IEBAIHZvaWQgUUxh YmVsOjpzZXRQaXhtYXAoY29uc3QgUVBpeG1hcCAmcGl4bWFwKQorICAgICAgICAgZC0+cGl4bWFw ID0gbmV3IFFQaXhtYXAocGl4bWFwKTsKKyAgICAgfQorIAorLSAgICBpZiAoZC0+cGl4bWFwLT5k ZXB0aCgpID09IDEgJiYgIWQtPnBpeG1hcC0+bWFzaygpKQorLSAgICAgICAgZC0+cGl4bWFwLT5z ZXRNYXNrKCooKFFCaXRtYXAgKilkLT5waXhtYXApKTsKKy0KKyAgICAgZC0+dXBkYXRlTGFiZWwo KTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcXRvb2xi YXJhcmVhbGF5b3V0LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0b29sYmFyYXJl YWxheW91dC5jcHAKK2luZGV4IDQ5M2MwOTRjYzEuLmQ1ZjRiNTkwMTcgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3BwCisrKysgYi9x dGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3BwCitAQCAtMTM2 Nyw3ICsxMzY3LDcgQEAgYm9vbCBRVG9vbEJhckFyZWFMYXlvdXQ6OnJlc3RvcmVTdGF0ZShRRGF0 YVN0cmVhbSAmc3RyZWFtLCBjb25zdCBRTGlzdDxRVG9vbEJhcioKKyAgICAgICAgICAgICAgICAg aXRlbS53aWRnZXRJdGVtID0gbmV3IFFXaWRnZXRJdGVtVjIodG9vbEJhcik7CisgICAgICAgICAg ICAgICAgIHRvb2xCYXItPnNldE9yaWVudGF0aW9uKGZsb2F0aW5nID8gKChzaG93biAmIDIpID8g UXQ6OlZlcnRpY2FsIDogUXQ6Okhvcml6b250YWwpIDogZG9jay5vKTsKKyAgICAgICAgICAgICAg ICAgdG9vbEJhci0+c2V0VmlzaWJsZShzaG93biAmIDEpOworLSAgICAgICAgICAgICAgICB0b29s QmFyLT5kX2Z1bmMoKS0+c2V0V2luZG93U3RhdGUoZmxvYXRpbmcsIHRydWUsIHJlY3QpOworKyAg ICAgICAgICAgICAgICB0b29sQmFyLT5kX2Z1bmMoKS0+c2V0V2luZG93U3RhdGUoZmxvYXRpbmcs IGZhbHNlLCByZWN0KTsKKyAKKyAgICAgICAgICAgICAgICAgaXRlbS5wcmVmZXJyZWRTaXplID0g aXRlbS5zaXplOworICAgICAgICAgICAgICAgICBsaW5lLnRvb2xCYXJJdGVtcy5hcHBlbmQoaXRl bSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJl bnRpdGVyYXRla2VybmVsL3RzdF9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsLmNwcCBiL3F0YmFz ZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRj b25jdXJyZW50aXRlcmF0ZWtlcm5lbC5jcHAKK2luZGV4IDIxMmMwYTJlMTMuLjNjNzdiMWJhMGIg MTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudGl0 ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwuY3BwCisrKysgYi9xdGJh c2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0 Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwuY3BwCitAQCAtMTI2LDggKzEyNiw3IEBAIHB1YmxpYzoK KyAKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2VybmVsOjppbnN0YW50aWF0ZSgpCisg eworLSAgICBhdXRvIGZ1dHVyZSA9IHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBQcmludEZvcigwLCA0 MCkpLnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgp OworKyAgICBzdGFydFRocmVhZEVuZ2luZShuZXcgUHJpbnRGb3IoMCwgNDApKS5zdGFydEJsb2Nr aW5nKCk7CisgICAgIFFDT01QQVJFKGl0ZXJhdGlvbnMubG9hZFJlbGF4ZWQoKSwgNDApOworIH0K KyAKK0BAIC0xNjYsMTAgKzE2NSw4IEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJu ZWw6OnN0cmVzc3Rlc3QoKQorICAgICBjb25zdCBpbnQgdGltZXMgPSA1MDsKKyAgICAgZm9yIChp bnQgaSA9IDA7IGkgPCB0aW1lczsgKytpKSB7CisgICAgICAgICBjb3VudGVyLnN0b3JlUmVsYXhl ZCgwKTsKKy0gICAgICAgIC8vIFRocmVhZEVuZ2luZSB3aWxsIGRlbGV0ZSBmIHdoZW4gaXQgZmlu aXNoZXMKKy0gICAgICAgIGF1dG8gZiA9IG5ldyBDb3VudEZvcigwLCBpdGVyYXRpb25zKTsKKy0g ICAgICAgIGF1dG8gZnV0dXJlID0gZi0+c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICAgICAg ZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgpOworKyAgICAgICAgQ291bnRGb3IgZigwLCBpdGVyYXRp b25zKTsKKysgICAgICAgIGYuc3RhcnRCbG9ja2luZygpOworICAgICAgICAgUUNPTVBBUkUoY291 bnRlci5sb2FkUmVsYXhlZCgpLCBpdGVyYXRpb25zKTsKKyAgICAgfQorIH0KK0BAIC0xNzcsMTEg KzE3NCw4IEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6OnN0cmVzc3Rlc3Qo KQorIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6Om5vSXRlcmF0aW9ucygpCisg eworICAgICBjb25zdCBpbnQgdGltZXMgPSAyMDAwMDsKKy0gICAgZm9yIChpbnQgaSA9IDA7IGkg PCB0aW1lczsgKytpKSB7CistICAgICAgICBhdXRvIGZ1dHVyZSA9IHN0YXJ0VGhyZWFkRW5naW5l KG5ldyBJdGVyYXRlS2VybmVsPFRlc3RJdGVyYXRvciwgdm9pZD4oMCwgMCkpCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgICAgIGZ1 dHVyZS53YWl0Rm9yRmluaXNoZWQoKTsKKy0gICAgfQorKyAgICBmb3IgKGludCBpID0gMDsgaSA8 IHRpbWVzOyArK2kpCisrICAgICAgICBzdGFydFRocmVhZEVuZ2luZShuZXcgSXRlcmF0ZUtlcm5l bDxUZXN0SXRlcmF0b3IsIHZvaWQ+KDAsIDApKS5zdGFydEJsb2NraW5nKCk7CisgfQorIAorIFFN dXRleCB0aHJlYWRzTXV0ZXg7CitAQCAtMjM2LDEwICsyMzAsOCBAQCB2b2lkIHRzdF9RdENvbmN1 cnJlbnRJdGVyYXRlS2VybmVsOjp0aHJvdHRsaW5nKCkKKyAKKyAgICAgdGhyZWFkcy5jbGVhcigp OworIAorLSAgICAvLyBUaHJlYWRFbmdpbmUgd2lsbCBkZWxldGUgZiB3aGVuIGl0IGZpbmlzaGVz CistICAgIGF1dG8gZiA9IG5ldyBUaHJvdHRsZUZvcigwLCB0b3RhbEl0ZXJhdGlvbnMpOworLSAg ICBhdXRvIGZ1dHVyZSA9IGYtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgZnV0dXJlLndh aXRGb3JGaW5pc2hlZCgpOworKyAgICBUaHJvdHRsZUZvciBmKDAsIHRvdGFsSXRlcmF0aW9ucyk7 CisrICAgIGYuc3RhcnRCbG9ja2luZygpOworIAorICAgICBRQ09NUEFSRShpdGVyYXRpb25zLmxv YWRSZWxheGVkKCksIHRvdGFsSXRlcmF0aW9ucyk7CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUvdHN0X3F0Y29uY3Vy cmVudHRocmVhZGVuZ2luZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29u Y3VycmVudHRocmVhZGVuZ2luZS90c3RfcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAoraW5k ZXggYWM3YmU3YWNkZC4uODFiYzY0YzhkOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRv L2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNvbmN1cnJlbnR0aHJl YWRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3Vy cmVudHRocmVhZGVuZ2luZS90c3RfcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAorQEAgLTY1 LDkgKzY1LDE2IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdp bmU6OnJ1bkRpcmVjdGx5KCkKKyB7CistICAgIFByaW50VXNlciAqZW5naW5lID0gbmV3IFByaW50 VXNlcigpOworLSAgICBRRnV0dXJlPHZvaWQ+IGYgPSBlbmdpbmUtPnN0YXJ0QXN5bmNocm9ub3Vz bHkoKTsKKy0gICAgZi53YWl0Rm9yRmluaXNoZWQoKTsKKysgICAgeworKyAgICAgICAgUHJpbnRV c2VyIGVuZ2luZTsKKysgICAgICAgIGVuZ2luZS5zdGFydFNpbmdsZVRocmVhZGVkKCk7CisrICAg ICAgICBlbmdpbmUuc3RhcnRCbG9ja2luZygpOworKyAgICB9CisrICAgIHsKKysgICAgICAgIFBy aW50VXNlciAqZW5naW5lID0gbmV3IFByaW50VXNlcigpOworKyAgICAgICAgUUZ1dHVyZTx2b2lk PiBmID0gZW5naW5lLT5zdGFydEFzeW5jaHJvbm91c2x5KCk7CisrICAgICAgICBmLndhaXRGb3JG aW5pc2hlZCgpOworKyAgICB9CisgfQorIAorIGNsYXNzIFN0cmluZ1Jlc3VsdFVzZXIgOiBwdWJs aWMgVGhyZWFkRW5naW5lPFFTdHJpbmc+CitAQCAtOTksMTAgKzEwNiw4IEBAIHB1YmxpYzoKKyAK KyB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnJlc3VsdCgpCisgeworLSAgICAv LyBUaHJlYWRFbmdpbmUgd2lsbCBkZWxldGUgJ2VuZ2luZScgd2hlbiBpdCBmaW5pc2hlcworLSAg ICBhdXRvIGVuZ2luZSA9IG5ldyBTdHJpbmdSZXN1bHRVc2VyKCk7CistICAgIGF1dG8gZnV0dXJl ID0gZW5naW5lLT5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgIFFDT01QQVJFKGZ1dHVyZS5y ZXN1bHQoKSwgUVN0cmluZygiRm9vIikpOworKyAgICBTdHJpbmdSZXN1bHRVc2VyIGVuZ2luZTsK KysgICAgUUNPTVBBUkUoKmVuZ2luZS5zdGFydEJsb2NraW5nKCksIFFTdHJpbmcoIkZvbyIpKTsK KyB9CisgCisgY2xhc3MgVm9pZFJlc3VsdFVzZXIgOiBwdWJsaWMgVGhyZWFkRW5naW5lPHZvaWQ+ CitAQCAtMTI4LDkgKzEzMywxNyBAQCBwdWJsaWM6CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50 VGhyZWFkRW5naW5lOjpydW5UaHJvdWdoU3RhcnRlcigpCisgeworLSAgICBUaHJlYWRFbmdpbmVT dGFydGVyPFFTdHJpbmc+IHN0YXJ0ZXIgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgU3RyaW5nUmVz dWx0VXNlcigpKTsKKy0gICAgUUZ1dHVyZTxRU3RyaW5nPiBmID0gc3RhcnRlci5zdGFydEFzeW5j aHJvbm91c2x5KCk7CistICAgIFFDT01QQVJFKGYucmVzdWx0KCksIFFTdHJpbmcoIkZvbyIpKTsK KysgICAgeworKyAgICAgICAgVGhyZWFkRW5naW5lU3RhcnRlcjxRU3RyaW5nPiBzdGFydGVyID0g c3RhcnRUaHJlYWRFbmdpbmUobmV3IFN0cmluZ1Jlc3VsdFVzZXIoKSk7CisrICAgICAgICBRRnV0 dXJlPFFTdHJpbmc+ICBmID0gc3RhcnRlci5zdGFydEFzeW5jaHJvbm91c2x5KCk7CisrICAgICAg ICBRQ09NUEFSRShmLnJlc3VsdCgpLCBRU3RyaW5nKCJGb28iKSk7CisrICAgIH0KKysKKysgICAg eworKyAgICAgICAgVGhyZWFkRW5naW5lU3RhcnRlcjxRU3RyaW5nPiBzdGFydGVyID0gc3RhcnRU aHJlYWRFbmdpbmUobmV3IFN0cmluZ1Jlc3VsdFVzZXIoKSk7CisrICAgICAgICBRU3RyaW5nIHN0 ciA9IHN0YXJ0ZXIuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgUUNPTVBBUkUoc3RyLCBRU3Ry aW5nKCJGb28iKSk7CisrICAgIH0KKyB9CisgCisgY2xhc3MgQ2FuY2VsVXNlciA6IHB1YmxpYyBU aHJlYWRFbmdpbmU8dm9pZD4KK0BAIC0yMTMsNiArMjI2LDEyIEBAIHZvaWQgdHN0X1F0Q29uY3Vy cmVudFRocmVhZEVuZ2luZTo6dGhyb3R0bGUoKQorICAgICAgICAgZi53YWl0Rm9yRmluaXNoZWQo KTsKKyAgICAgICAgIFFDT01QQVJFKGNvdW50LmxvYWRSZWxheGVkKCksIDApOworICAgICB9Cisr CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0czsgKytpKSB7CisrICAgICAgICBUaHJv dHRsZUFsd2F5c1VzZXIgdDsKKysgICAgICAgIHQuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAg UUNPTVBBUkUoY291bnQubG9hZFJlbGF4ZWQoKSwgMCk7CisrICAgIH0KKyB9CisgCisgUVNldDxR VGhyZWFkICo+IHRocmVhZHM7CitAQCAtMjQ5LDE3ICsyNjgsMzUgQEAgdm9pZCB0c3RfUXRDb25j dXJyZW50VGhyZWFkRW5naW5lOjp0aHJlYWRDb3VudCgpCisgeworICAgICBjb25zdCBpbnQgcmVw ZWF0cyA9IDEwOworICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlcGVhdHM7ICsraSkgeworKyAg ICAgICAgVGhyZWFkQ291bnRVc2VyIHQ7CisrICAgICAgICB0LnN0YXJ0QmxvY2tpbmcoKTsKKysg ICAgICAgIGludCBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKysgICAgICAgIGludCBjb3VudF9l eHBlY3RlZCA9IFFUaHJlYWRQb29sOjpnbG9iYWxJbnN0YW5jZSgpLT5tYXhUaHJlYWRDb3VudCgp ICsgMTsgLy8gKzEgZm9yIHRoZSBtYWluIHRocmVhZC4KKysgICAgICAgIGlmIChjb3VudCAhPSBj b3VudF9leHBlY3RlZCkKKysgICAgICAgICAgICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMz MyIsIEFib3J0KTsKKysgICAgICAgIFFDT01QQVJFKGNvdW50LCBjb3VudF9leHBlY3RlZCk7Cisr CisgICAgICAgICAobmV3IFRocmVhZENvdW50VXNlcigpKS0+c3RhcnRBc3luY2hyb25vdXNseSgp LndhaXRGb3JGaW5pc2hlZCgpOworLSAgICAgICAgY29uc3QgYXV0byBjb3VudCA9IHRocmVhZHMu Y291bnQoKTsKKy0gICAgICAgIGNvbnN0IGF1dG8gbWF4VGhyZWFkQ291bnQgPSBRVGhyZWFkUG9v bDo6Z2xvYmFsSW5zdGFuY2UoKS0+bWF4VGhyZWFkQ291bnQoKTsKKy0gICAgICAgIFFWRVJJRlko Y291bnQgPD0gbWF4VGhyZWFkQ291bnQpOworLSAgICAgICAgUVZFUklGWSghdGhyZWFkcy5jb250 YWlucyhRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkpKTsKKysgICAgICAgIGNvdW50ID0gdGhyZWFk cy5jb3VudCgpOworKyAgICAgICAgY291bnRfZXhwZWN0ZWQgPSBRVGhyZWFkUG9vbDo6Z2xvYmFs SW5zdGFuY2UoKS0+bWF4VGhyZWFkQ291bnQoKTsKKysgICAgICAgIGlmIChjb3VudCAhPSBjb3Vu dF9leHBlY3RlZCkKKysgICAgICAgICAgICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMzMyIs IEFib3J0KTsKKysgICAgICAgIFFDT01QQVJFKGNvdW50LCBjb3VudF9leHBlY3RlZCk7CisgICAg IH0KKyAKKyAgICAgLy8gU2V0IHRoZSBmaW5pc2ggZmxhZyBpbW1lZGlhdGVseSwgdGhpcyBzaG91 bGQgZ2l2ZSB1cyBvbmUgdGhyZWFkIG9ubHkuCisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVw ZWF0czsgKytpKSB7CisrICAgICAgICBUaHJlYWRDb3VudFVzZXIgdCh0cnVlIC8qZmluaXNoSW1t ZWRpYXRlbHkqLyk7CisrICAgICAgICB0LnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGludCBj b3VudCA9IHRocmVhZHMuY291bnQoKTsKKysgICAgICAgIGlmIChjb3VudCAhPSAxKQorKyAgICAg ICAgICAgIFFFWFBFQ1RfRkFJTCgiIiwgIlFUQlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAgICAg UUNPTVBBUkUoY291bnQsIDEpOworKworICAgICAgICAgKG5ldyBUaHJlYWRDb3VudFVzZXIodHJ1 ZSAvKmZpbmlzaEltbWVkaWF0ZWx5Ki8pKS0+c3RhcnRBc3luY2hyb25vdXNseSgpLndhaXRGb3JG aW5pc2hlZCgpOworLSAgICAgICAgY29uc3QgYXV0byBjb3VudCA9IHRocmVhZHMuY291bnQoKTsK KysgICAgICAgIGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgaWYgKGNvdW50ICE9 IDEpCisrICAgICAgICAgICAgUUVYUEVDVF9GQUlMKCIiLCAiUVRCVUctMjMzMzMiLCBBYm9ydCk7 CisgICAgICAgICBRQ09NUEFSRShjb3VudCwgMSk7CisgICAgICAgICBRVkVSSUZZKCF0aHJlYWRz LmNvbnRhaW5zKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSkpOworICAgICB9CitAQCAtNDAwLDYg KzQzNyw3IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6 OmV4Y2VwdGlvbnMoKQorIHsKKysgICAgLy8gQXN5bmNocm9ub3VzIG1vZGU6CisgICAgIHsKKyAg ICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7CisgICAgICAgICB0cnkgIHsKK0BAIC00MTIsNiAr NDUwLDMyIEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6ZXhjZXB0aW9ucygp CisgICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKyAg ICAgfQorIAorKyAgICAvLyBCbG9ja2luZyBtb2RlOgorKyAgICAvLyB0ZXN0IHRocm93aW5nIHRo ZSBleGNlcHRpb24gZnJvbSBhIHdvcmtlciB0aHJlYWQuCisrICAgIHsKKysgICAgICAgIGJvb2wg Y2F1Z2h0ID0gZmFsc2U7CisrICAgICAgICB0cnkgIHsKKysgICAgICAgICAgICBRdENvbmN1cnJl bnRFeGNlcHRpb25UaHJvd2VyIGUoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpKTsKKysgICAgICAg ICAgICBlLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFFeGNlcHRp b24gJikgeworKyAgICAgICAgICAgIGNhdWdodCA9IHRydWU7CisrICAgICAgICB9CisrICAgICAg ICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKysgICAgfQorKwor KyAgICAvLyB0ZXN0IHRocm93aW5nIHRoZSBleGNlcHRpb24gZnJvbSB0aGUgbWFpbiB0aHJlYWQg KGRpZmZlcmVudCBjb2RlIHBhdGgpCisrICAgIHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFs c2U7CisrICAgICAgICB0cnkgIHsKKysgICAgICAgICAgICBRdENvbmN1cnJlbnRFeGNlcHRpb25U aHJvd2VyIGUoMCk7CisrICAgICAgICAgICAgZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9 IGNhdGNoIChjb25zdCBRRXhjZXB0aW9uICYpIHsKKysgICAgICAgICAgICBjYXVnaHQgPSB0cnVl OworKyAgICAgICAgfQorKyAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhj ZXB0aW9uIik7CisrICAgIH0KKysKKysgICAgLy8gQXN5bmNocm9ub3VzIG1vZGU6CisgICAgIHsK KyAgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7CisgICAgICAgICB0cnkgIHsKK0BAIC00MjMs NiArNDg3LDMxIEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6ZXhjZXB0aW9u cygpCisgICAgICAgICB9CisgICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBl eGNlcHRpb24iKTsKKyAgICAgfQorKworKyAgICAvLyBCbG9ja2luZyBtb2RlOgorKyAgICAvLyB0 ZXN0IHRocm93aW5nIHRoZSBleGNlcHRpb24gZnJvbSBhIHdvcmtlciB0aHJlYWQuCisrICAgIHsK KysgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7CisrICAgICAgICB0cnkgIHsKKysgICAgICAg ICAgICBVbnJlbGF0ZWRFeGNlcHRpb25UaHJvd2VyIGUoUVRocmVhZDo6Y3VycmVudFRocmVhZCgp KTsKKysgICAgICAgICAgICBlLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNv bnN0IFFVbmhhbmRsZWRFeGNlcHRpb24gJikgeworKyAgICAgICAgICAgIGNhdWdodCA9IHRydWU7 CisrICAgICAgICB9CisrICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNl cHRpb24iKTsKKysgICAgfQorKworKyAgICAvLyB0ZXN0IHRocm93aW5nIHRoZSBleGNlcHRpb24g ZnJvbSB0aGUgbWFpbiB0aHJlYWQgKGRpZmZlcmVudCBjb2RlIHBhdGgpCisrICAgIHsKKysgICAg ICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7CisrICAgICAgICB0cnkgIHsKKysgICAgICAgICAgICBV bnJlbGF0ZWRFeGNlcHRpb25UaHJvd2VyIGUoMCk7CisrICAgICAgICAgICAgZS5zdGFydEJsb2Nr aW5nKCk7CisrICAgICAgICB9IGNhdGNoIChjb25zdCBRVW5oYW5kbGVkRXhjZXB0aW9uICYpIHsK KysgICAgICAgICAgICBjYXVnaHQgPSB0cnVlOworKyAgICAgICAgfQorKyAgICAgICAgUVZFUklG WTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7CisrICAgIH0KKyB9CisgCisgI2Vu ZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xYnVmZmVyL3Rz dF9xYnVmZmVyLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZlci90c3Rf cWJ1ZmZlci5jcHAKK2luZGV4IDQ5Njg3NDIxMTAuLmY0YzNmYjcxMWQgMTAwNjQ0CistLS0gYS9x dGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3FidWZmZXIvdHN0X3FidWZmZXIuY3BwCisrKysg Yi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3FidWZmZXIvdHN0X3FidWZmZXIuY3BwCitA QCAtNDIsNiArNDIsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHdyaXRlQmxvY2tfZGF0 YSgpOworICAgICB2b2lkIHdyaXRlQmxvY2soKTsKKyAgICAgdm9pZCBzZWVrKCk7CisrICAgIHZv aWQgaW52YWxpZFNlZWtzKCk7CisgICAgIHZvaWQgc2Vla1Rlc3RfZGF0YSgpOworICAgICB2b2lk IHNlZWtUZXN0KCk7CisgICAgIHZvaWQgcmVhZF9yYXdkYXRhKCk7CitAQCAtMjg2LDYgKzI4Nywy OSBAQCB2b2lkIHRzdF9RQnVmZmVyOjpzZWVrKCkKKyAgICAgUUNPTVBBUkUoYnVmZmVyLnNpemUo KSwgcG9zKTsKKyB9CisgCisrdm9pZCB0c3RfUUJ1ZmZlcjo6aW52YWxpZFNlZWtzKCkKKyt7Cisr ICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKHFzaXpldHlwZSkgPT0gc2l6ZW9mKHFpbnQ2NCkpIHsK KysgICAgICAgIC8vIHNpemVvZihxc2l6ZXR5cGUpID09IHNpemVvZihxaW50NjQpLCBzbyArMSB3 b3VsZCBvdmVyZmxvdworKyAgICAgICAgUVNLSVAoIlRoaXMgaXMgYSAzMi1iaXQtb25seSB0ZXN0 LiIpOworKyAgICB9IGVsc2UgeworKyAgICAgICAgUUJ1ZmZlciBidWZmZXI7CisrICAgICAgICBi dWZmZXIub3BlbihRSU9EZXZpY2U6OldyaXRlT25seSk7CisrICAgICAgICBRQ09NUEFSRShidWZm ZXIuYnVmZmVyKCkuc2l6ZSgpLCBxc2l6ZXR5cGUoMCkpOworKyAgICAgICAgUUNPTVBBUkUoYnVm ZmVyLnBvcygpLCBxaW50NjQoMCkpOworKyAgICAgICAgY29uc3RleHByIHFpbnQ2NCBNYXhRQnl0 ZUFycmF5Q2FwYWNpdHkgPSAoc3RkOjpudW1lcmljX2xpbWl0czxxc2l6ZXR5cGU+OjptYXgpKCk7 CisrICAgICAgICAvLyB0aGlzIHNob3VsZCBmYWlsIGZhc3QsIG5vdCBhZnRlciB0cnlpbmcgdG8g YWxsb2NhdGUgbmVhcmx5IDIgR2lCIG9mIGRhdGEsCisrICAgICAgICAvLyBwb3RlbnRpYWxseSBj cmFzaGluZyBpbiB0aGUgcHJvY2VzczoKKysgICAgICAgIFFWRVJJRlkoIWJ1ZmZlci5zZWVrKDIg KiBNYXhRQnl0ZUFycmF5Q2FwYWNpdHkgLSAxKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIu YnVmZmVyKCkuc2l6ZSgpLCBxc2l6ZXR5cGUoMCkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVy LnBvcygpLCBxaW50NjQoMCkpOworKyAgICAgICAgLy8gZGl0dG86CisrICAgICAgICBRVkVSSUZZ KCFidWZmZXIuc2VlayhNYXhRQnl0ZUFycmF5Q2FwYWNpdHkgKyAxKSk7CisrICAgICAgICBRQ09N UEFSRShidWZmZXIuYnVmZmVyKCkuc2l6ZSgpLCBxc2l6ZXR5cGUoMCkpOworKyAgICAgICAgUUNP TVBBUkUoYnVmZmVyLnBvcygpLCBxaW50NjQoMCkpOworKyAgICB9CisrfQorKworIHZvaWQgdHN0 X1FCdWZmZXI6OnNlZWtUZXN0X2RhdGEoKQorIHsKKyAgICAgd3JpdGVCbG9ja19kYXRhKCk7Citk aWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xaW9kZXZpY2UvdHN0X3Fp b2RldmljZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fpb2RldmljZS90c3Rf cWlvZGV2aWNlLmNwcAoraW5kZXggZGE1MzI3NTk0Yy4uNGEwNGUwZjdjNiAxMDA2NDQKKy0tLSBh L3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWlvZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3Bw CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fpb2RldmljZS90c3RfcWlvZGV2 aWNlLmNwcAorQEAgLTU2MSw3ICs1NjEsOCBAQCBwcm90ZWN0ZWQ6CisgICAgIHFpbnQ2NCByZWFk RGF0YShjaGFyICpkYXRhLCBxaW50NjQgbWF4U2l6ZSkgb3ZlcnJpZGUKKyAgICAgeworICAgICAg ICAgbWF4U2l6ZSA9IHFNaW4obWF4U2l6ZSwgcWludDY0KGJ1Zi0+c2l6ZSgpIC0gb2Zmc2V0KSk7 CistICAgICAgICBtZW1jcHkoZGF0YSwgYnVmLT5jb25zdERhdGEoKSArIG9mZnNldCwgbWF4U2l6 ZSk7CisrICAgICAgICBpZiAobWF4U2l6ZSA+IDApCisrICAgICAgICAgICAgbWVtY3B5KGRhdGEs IGJ1Zi0+Y29uc3REYXRhKCkgKyBvZmZzZXQsIG1heFNpemUpOworICAgICAgICAgb2Zmc2V0ICs9 IG1heFNpemU7CisgICAgICAgICByZXR1cm4gbWF4U2l6ZTsKKyAgICAgfQorQEAgLTYwNCwxMyAr NjA1LDE1IEBAIHByb3RlY3RlZDoKKyAgICAgcWludDY0IHJlYWREYXRhKGNoYXIgKmRhdGEsIHFp bnQ2NCBtYXhTaXplKSBvdmVycmlkZQorICAgICB7CisgICAgICAgICBtYXhTaXplID0gcU1pbiht YXhTaXplLCBxaW50NjQoYnVmLnNpemUoKSAtIHBvcygpKSk7CistICAgICAgICBtZW1jcHkoZGF0 YSwgYnVmLmNvbnN0RGF0YSgpICsgcG9zKCksIG1heFNpemUpOworKyAgICAgICAgaWYgKG1heFNp emUgPiAwKQorKyAgICAgICAgICAgIG1lbWNweShkYXRhLCBidWYuY29uc3REYXRhKCkgKyBwb3Mo KSwgbWF4U2l6ZSk7CisgICAgICAgICByZXR1cm4gbWF4U2l6ZTsKKyAgICAgfQorICAgICBxaW50 NjQgd3JpdGVEYXRhKGNvbnN0IGNoYXIgKmRhdGEsIHFpbnQ2NCBtYXhTaXplKSBvdmVycmlkZQor ICAgICB7CisgICAgICAgICBtYXhTaXplID0gcU1pbihtYXhTaXplLCBxaW50NjQoYnVmLnNpemUo KSAtIHBvcygpKSk7CistICAgICAgICBtZW1jcHkoYnVmLmRhdGEoKSArIHBvcygpLCBkYXRhLCBt YXhTaXplKTsKKysgICAgICAgIGlmIChtYXhTaXplID4gMCkKKysgICAgICAgICAgICBtZW1jcHko YnVmLmRhdGEoKSArIHBvcygpLCBkYXRhLCBtYXhTaXplKTsKKyAgICAgICAgIHJldHVybiBtYXhT aXplOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9p by9xcHJvY2Vzcy90c3RfcXByb2Nlc3MuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9p by9xcHJvY2Vzcy90c3RfcXByb2Nlc3MuY3BwCitpbmRleCBkYjYwYmVhZDY0Li5mMzQ1YTQ0NDE0 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3Rf cXByb2Nlc3MuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNz L3RzdF9xcHJvY2Vzcy5jcHAKK0BAIC0xLDcgKzEsOCBAQAorIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKioKKyAqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorLSoqIENv cHlyaWdodCAoQykgMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbi4KKysqKiBDb3B5cmlnaHQgKEMpIDIw MjAgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBJbnRlbCBDb3Jw b3JhdGlvbi4KKyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioK KyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtp dC4KK0BAIC0xNTAsNiArMTUxLDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBzdGFydFN0 b3BTdGFydFN0b3BCdWZmZXJzKCk7CisgICAgIHZvaWQgcHJvY2Vzc0V2ZW50c0luQVJlYWR5UmVh ZFNsb3RfZGF0YSgpOworICAgICB2b2lkIHByb2Nlc3NFdmVudHNJbkFSZWFkeVJlYWRTbG90KCk7 CisrICAgIHZvaWQgc3RhcnRGcm9tQ3VycmVudFdvcmtpbmdEaXJfZGF0YSgpOworKyAgICB2b2lk IHN0YXJ0RnJvbUN1cnJlbnRXb3JraW5nRGlyKCk7CisgCisgICAgIC8vIGtlZXAgdGhlc2UgYXQg dGhlIGVuZCwgc2luY2UgdGhleSB1c2UgbG90cyBvZiBwcm9jZXNzZXMgYW5kIHNvbWV0aW1lcwor ICAgICAvLyBjYXVzZWQgb2JzY3VyZSBmYWlsdXJlcyB0byBvY2N1ciBpbiB0ZXN0cyB0aGF0IGZv bGxvd2VkIHRoZW0gKGVzcC4gb24gdGhlIE1hYykKK0BAIC0yNzMxLDUgKzI3MzQsOTQgQEAgdm9p ZCB0c3RfUVByb2Nlc3M6OmZpbmlzaFByb2Nlc3NCZWZvcmVSZWFkaW5nRG9uZV9kZXByZWNhdGVk KCkKKyAKKyAjZW5kaWYKKyAKKytlbnVtIGNsYXNzIENoZGlyTW9kZSB7CisrICAgIE5vbmUgPSAw LAorKyAgICBJblBhcmVudCwKKysgICAgSW5DaGlsZAorK307CisrUV9ERUNMQVJFX01FVEFUWVBF KENoZGlyTW9kZSkKKysKKyt2b2lkIHRzdF9RUHJvY2Vzczo6c3RhcnRGcm9tQ3VycmVudFdvcmtp bmdEaXJfZGF0YSgpCisreworKyAgICBxUmVnaXN0ZXJNZXRhVHlwZTxDaGRpck1vZGU+KCk7Cisr ICAgIFFUZXN0OjphZGRDb2x1bW48UVN0cmluZz4oInByb2dyYW1QcmVmaXgiKTsKKysgICAgUVRl c3Q6OmFkZENvbHVtbjxDaGRpck1vZGU+KCJjaGRpck1vZGUiKTsKKysgICAgUVRlc3Q6OmFkZENv bHVtbjxib29sPigic3VjY2VzcyIpOworKworKyAgICBjb25zdGV4cHIgYm9vbCBJc1dpbmRvd3Mg PSB0cnVlCisrI2lmZGVmIFFfT1NfVU5JWAorKyAgICAgICAgICAgICYmIGZhbHNlCisrI2VuZGlm CisrICAgICAgICAgICAgOworKworKyAgICAvLyBiYXNlbGluZTogdHJ5aW5nIHRvIGV4ZWN1dGUg dGhlIGRpcmVjdG9yeSwgdGhpcyBjYW4ndCBwb3NzaWJseSBzdWNjZWVkIQorKyAgICBRVGVzdDo6 bmV3Um93KCJwbGFpbi1zYW1lLWN3ZCIpIDw8IFFTdHJpbmcoKSA8PCBDaGRpck1vZGU6Ok5vbmUg PDwgZmFsc2U7CisrCisrICAgIC8vIGNyb3NzLXBsYXRmb3JtIGJlaGF2aW9yOiBuZWl0aGVyIE9T IHNlYXJjaGVzIHRoZSBzZXRXb3JraW5nRGlyZWN0b3J5KCkKKysgICAgLy8gZGlyIHdpdGhvdXQg Ii4vIgorKyAgICBRVGVzdDo6bmV3Um93KCJwbGFpbi1jaGlsZC1jaGRpciIpIDw8IFFTdHJpbmco KSA8PCBDaGRpck1vZGU6OkluQ2hpbGQgPDwgZmFsc2U7CisrCisrICAgIC8vIGNyb3NzLXBsYXRm b3JtIGJlaGF2aW9yOiBib3RoIE9TZXMgc2VhcmNoIHRoZSBwYXJlbnQncyBDV0Qgd2l0aCAiLi8i CisrICAgIFFUZXN0OjpuZXdSb3coInByZWZpeGVkLXBhcmVudC1jaGRpciIpIDw8ICIuLyIgPDwg Q2hkaXJNb2RlOjpJblBhcmVudCA8PCB0cnVlOworKworKyAgICAvLyBvcHBvc2l0ZSBiZWhhdmlv cnM6IFdpbmRvd3Mgc2VhcmNoZXMgdGhlIHBhcmVudCdzIENXRCBhbmQgVW5peCBzZWFyY2hlcwor KyAgICAvLyB0aGUgY2hpbGQncyB3aXRoICIuLyIKKysgICAgUVRlc3Q6Om5ld1JvdygicHJlZml4 ZWQtY2hpbGQtY2hkaXIiKSA8PCAiLi8iIDw8IENoZGlyTW9kZTo6SW5DaGlsZCA8PCAhSXNXaW5k b3dzOworKworKyAgICAvLyBXaW5kb3dzIHNlYXJjaGVzIHRoZSBwYXJlbnQncyBDV0Qgd2l0aG91 dCAiLi8iCisrICAgIFFUZXN0OjpuZXdSb3coInBsYWluLXBhcmVudC1jaGRpciIpIDw8IFFTdHJp bmcoKSA8PCBDaGRpck1vZGU6OkluUGFyZW50IDw8IElzV2luZG93czsKKyt9CisrCisrdm9pZCB0 c3RfUVByb2Nlc3M6OnN0YXJ0RnJvbUN1cnJlbnRXb3JraW5nRGlyKCkKKyt7CisrICAgIFFGRVRD SChRU3RyaW5nLCBwcm9ncmFtUHJlZml4KTsKKysgICAgUUZFVENIKENoZGlyTW9kZSwgY2hkaXJN b2RlKTsKKysgICAgUUZFVENIKGJvb2wsIHN1Y2Nlc3MpOworKworKyAgICBRUHJvY2VzcyBwcm9j ZXNzOworKyAgICBxUmVnaXN0ZXJNZXRhVHlwZTxRUHJvY2Vzczo6UHJvY2Vzc0Vycm9yPigpOwor KyAgICBRU2lnbmFsU3B5IGVycm9yU3B5KCZwcm9jZXNzLCAmUVByb2Nlc3M6OmVycm9yT2NjdXJy ZWQpOworKyAgICBRVkVSSUZZKGVycm9yU3B5LmlzVmFsaWQoKSk7CisrCisrICAgIC8vIGJvdGgg dGhlIGRpciBuYW1lIGFuZCB0aGUgZXhlY3V0YWJsZSBuYW1lCisrICAgIGNvbnN0IFFTdHJpbmcg dGFyZ2V0ID0gUVN0cmluZ0xpdGVyYWwoInRlc3RQcm9jZXNzTm9ybWFsIik7CisrICAgIHByb2Nl c3Muc2V0UHJvZ3JhbShwcm9ncmFtUHJlZml4ICsgdGFyZ2V0KTsKKysKKysjaWZkZWYgUV9PU19V TklYCisrICAgIC8vIFJlc2V0IFBBVEgsIHRvIGJlIHN1cmUgaXQgZG9lc24ndCBjb250YWluIC4g b3IgdGhlIGVtcHR5IHBhdGguCisrICAgIC8vIFdlIGNhbid0IGRvIHRoaXMgb24gV2luZG93cyBi ZWNhdXNlIERMTHMgYXJlIHNlYXJjaGVkIGluIFBBVEgKKysgICAgLy8gYW5kIFdpbmRvd3MgYWx3 YXlzIHNlYXJjaGVzICIuIiBhbnl3YXkuCisrICAgIGF1dG8gcmVzdG9yZUVudiA9IHFTY29wZUd1 YXJkKFtvbGQgPSBxZ2V0ZW52KCJQQVRIIildIHsKKysgICAgICAgIHFwdXRlbnYoIlBBVEgiLCBv bGQpOworKyAgICB9KTsKKysgICAgcXB1dGVudigiUEFUSCIsICIvIik7CisrI2VuZGlmCisrCisr ICAgIHN3aXRjaCAoY2hkaXJNb2RlKSB7CisrICAgIGNhc2UgQ2hkaXJNb2RlOjpJblBhcmVudDog eworKyAgICAgICAgYXV0byByZXN0b3JlQ3dkID0gcVNjb3BlR3VhcmQoW29sZCA9IFFEaXI6OmN1 cnJlbnRQYXRoKCldIHsKKysgICAgICAgICAgICBRRGlyOjpzZXRDdXJyZW50KG9sZCk7CisrICAg ICAgICB9KTsKKysgICAgICAgIFFWRVJJRlkoUURpcjo6c2V0Q3VycmVudCh0YXJnZXQpKTsKKysg ICAgICAgIHByb2Nlc3Muc3RhcnQoKTsKKysgICAgICAgIGJyZWFrOworKyAgICB9CisrICAgIGNh c2UgQ2hkaXJNb2RlOjpJbkNoaWxkOgorKyAgICAgICAgcHJvY2Vzcy5zZXRXb3JraW5nRGlyZWN0 b3J5KHRhcmdldCk7CisrICAgICAgICBRX0ZBTExUSFJPVUdIKCk7CisrICAgIGNhc2UgQ2hkaXJN b2RlOjpOb25lOgorKyAgICAgICAgcHJvY2Vzcy5zdGFydCgpOworKyAgICAgICAgYnJlYWs7Cisr ICAgIH0KKysKKysgICAgUUNPTVBBUkUocHJvY2Vzcy53YWl0Rm9yU3RhcnRlZCgpLCBzdWNjZXNz KTsKKysgICAgUUNPTVBBUkUoZXJyb3JTcHkuY291bnQoKSwgaW50KCFzdWNjZXNzKSk7CisrICAg IGlmIChzdWNjZXNzKSB7CisrICAgICAgICBRVkVSSUZZKHByb2Nlc3Mud2FpdEZvckZpbmlzaGVk KCkpOworKyAgICB9IGVsc2UgeworKyAgICAgICAgUUNPTVBBUkUocHJvY2Vzcy5lcnJvcigpLCBR UHJvY2Vzczo6RmFpbGVkVG9TdGFydCk7CisrICAgIH0KKyt9CisrCisgUVRFU1RfTUFJTih0c3Rf UVByb2Nlc3MpCisgI2luY2x1ZGUgInRzdF9xcHJvY2Vzcy5tb2MiCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pdGVtbW9kZWxzL3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5 bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwuY3BwIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vY29yZWxpYi9pdGVtbW9kZWxzL3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwvdHN0 X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwuY3BwCitpbmRleCBlMWVhN2E0NTUyLi45MDk3 MmNhYTU3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pdGVtbW9kZWxz L3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5 bW9kZWwuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNv bmNhdGVuYXRldGFibGVzcHJveHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2Rl bC5jcHAKK0BAIC0xMTcsNiArMTE3LDcgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIHNo b3VsZFByb3BhZ2F0ZURyb3BBZnRlckxhc3RSb3dfZGF0YSgpOworICAgICB2b2lkIHNob3VsZFBy b3BhZ2F0ZURyb3BBZnRlckxhc3RSb3coKTsKKyAgICAgdm9pZCBxdGJ1ZzkxNzg4KCk7CisrICAg IHZvaWQgcXRidWc5MTg3OCgpOworIAorIHByaXZhdGU6CisgICAgIFFTdGFuZGFyZEl0ZW1Nb2Rl bCBtb2Q7CitAQCAtODQzLDYgKzg0NCwyMiBAQCB2b2lkIHRzdF9RQ29uY2F0ZW5hdGVUYWJsZXNQ cm94eU1vZGVsOjpxdGJ1ZzkxNzg4KCkKKyAgICAgUUNPTVBBUkUocHJveHlDb25jYXQuY29sdW1u Q291bnQoKSwgMCk7CisgfQorIAorK3ZvaWQgdHN0X1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9k ZWw6OnF0YnVnOTE4NzgoKQorK3sKKysgICAgUVN0YW5kYXJkSXRlbU1vZGVsIG07CisrICAgIG0u c2V0Um93Q291bnQoNCk7CisrICAgIG0uc2V0Q29sdW1uQ291bnQoNCk7CisrCisrICAgIFFDb25j YXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWwgcG07CisrICAgIFFTb3J0RmlsdGVyUHJveHlNb2RlbCBw cm94eUZpbHRlcjsKKysgICAgcHJveHlGaWx0ZXIuc2V0U291cmNlTW9kZWwoJnBtKTsKKysgICAg cHJveHlGaWx0ZXIuc2V0RmlsdGVyRml4ZWRTdHJpbmcoInNvbWV0aGluZyIpOworKyAgICBwbS5h ZGRTb3VyY2VNb2RlbCgmbSk7ICAvLyBUaGlzIHNob3VsZCBub3QgYXNzZXJ0CisrCisrICAgIFFD T01QQVJFKHBtLmNvbHVtbkNvdW50KCksIDQpOworKyAgICBRQ09NUEFSRShwbS5yb3dDb3VudCgp LCA0KTsKKyt9CisrCisgUVRFU1RfR1VJTEVTU19NQUlOKHRzdF9RQ29uY2F0ZW5hdGVUYWJsZXNQ cm94eU1vZGVsKQorIAorICNpbmNsdWRlICJ0c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2Rl bC5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJuZWwvcW9i amVjdC90c3RfcW9iamVjdC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2tlcm5lbC9x b2JqZWN0L3RzdF9xb2JqZWN0LmNwcAoraW5kZXggOWJkNjZjMDgzNS4uZWQ0YTBiYWU1ZCAxMDA2 NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIva2VybmVsL3FvYmplY3QvdHN0X3Fv YmplY3QuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0 L3RzdF9xb2JqZWN0LmNwcAorQEAgLTE1OCw2ICsxNTgsNyBAQCBwcml2YXRlIHNsb3RzOgorICAg ICB2b2lkIG51bGxSZWNlaXZlcigpOworICAgICB2b2lkIGZ1bmN0b3JSZWZlcmVuY2VzQ29ubmVj dGlvbigpOworICAgICB2b2lkIGRpc2Nvbm5lY3REaXNjb25uZWN0cygpOworKyAgICB2b2lkIGRl Y2xhcmF0aXZlRGF0YSgpOworIH07CisgCisgc3RydWN0IFFPYmplY3RDcmVhdGVkT25TaHV0ZG93 bgorQEAgLTc2NzksNSArNzY4MCw4MSBAQCB2b2lkIHRzdF9RT2JqZWN0OjpkaXNjb25uZWN0RGlz Y29ubmVjdHMoKQorIFFfU1RBVElDX0FTU0VSVChRdFByaXZhdGU6Okhhc1FfT0JKRUNUX01hY3Jv PHRzdF9RT2JqZWN0Pjo6VmFsdWUpOworIFFfU1RBVElDX0FTU0VSVCghUXRQcml2YXRlOjpIYXNR X09CSkVDVF9NYWNybzxTaWJsaW5nRGVsZXRlcj46OlZhbHVlKTsKKyAKKysjaWZkZWYgUVRfQlVJ TERfSU5URVJOQUwKKysvKgorKyAgICBTaW5jZSBRT2JqZWN0UHJpdmF0ZSBzdG9yZXMgdGhlIGRl Y2xhcmF0aXZlRGF0YSBwb2ludGVyIGluIGEgdW5pb24gd2l0aCB0aGUgcG9pbnRlcgorKyAgICB0 byB0aGUgY3VycmVudGx5IGRlc3Ryb3llZCBjaGlsZCwgY2FsbHMgdG8gdGhlIFF0RGVjbGFyYXRp dmUgaGFuZGxlcnMgbmVlZCB0byBiZQorKyAgICBjb3JyZWN0bHkgZ3VhcmRlZC4gUVRCVUctMTA1 Mjg2CisrKi8KKytuYW1lc3BhY2UgUXREZWNsYXJhdGl2ZSB7Cisrc3RhdGljIFFBYnN0cmFjdERl Y2xhcmF0aXZlRGF0YSAqdGhlRGF0YTsKKysKKytzdGF0aWMgdm9pZCBkZXN0cm95ZWQoUUFic3Ry YWN0RGVjbGFyYXRpdmVEYXRhICpkYXRhLCBRT2JqZWN0ICopCisreworKyAgICBRQ09NUEFSRShk YXRhLCB0aGVEYXRhKTsKKyt9Cisrc3RhdGljIHZvaWQgc2lnbmFsRW1pdHRlZChRQWJzdHJhY3RE ZWNsYXJhdGl2ZURhdGEgKmRhdGEsIFFPYmplY3QgKiwgaW50LCB2b2lkICoqKQorK3sKKysgICAg UUNPTVBBUkUoZGF0YSwgdGhlRGF0YSk7CisrfQorKy8vIHdlIGNhbid0IHVzZSBRQ09NUEFSRSBp biB0aGUgbmV4dCB0d28gZnVuY3Rpb25zLCBhcyB0aGV5IGRvbid0IHJldHVybiB2b2lkCisrc3Rh dGljIGludCByZWNlaXZlcnMoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICpkYXRhLCBjb25zdCBR T2JqZWN0ICosIGludCkKKyt7CisrICAgIFFUZXN0OjpxQ29tcGFyZShkYXRhLCB0aGVEYXRhLCAi ZGF0YSIsICJ0aGVEYXRhIiwgX19GSUxFX18sIF9fTElORV9fKTsKKysgICAgcmV0dXJuIDA7Cisr fQorK3N0YXRpYyBib29sIGlzU2lnbmFsQ29ubmVjdGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0 YSAqZGF0YSwgY29uc3QgUU9iamVjdCAqLCBpbnQpCisreworKyAgICBRVGVzdDo6cUNvbXBhcmUo ZGF0YSwgdGhlRGF0YSwgImRhdGEiLCAidGhlRGF0YSIsIF9fRklMRV9fLCBfX0xJTkVfXyk7Cisr ICAgIHJldHVybiB0cnVlOworK30KKysKKytjbGFzcyBPYmplY3QgOiBwdWJsaWMgUU9iamVjdAor K3sKKysgICAgUV9PQkpFQ1QKKytwdWJsaWM6CisrICAgIHVzaW5nIFFPYmplY3Q6OlFPYmplY3Q7 CisrICAgIH5PYmplY3QoKQorKyAgICB7CisrICAgICAgICBpZiAoT2JqZWN0ICpwID0gc3RhdGlj X2Nhc3Q8T2JqZWN0ICo+KHBhcmVudCgpKSkKKysgICAgICAgICAgICBwLT5lbWl0U2lnbmFsKCk7 CisrICAgIH0KKysKKysgICAgdm9pZCBlbWl0U2lnbmFsKCkKKysgICAgeworKyAgICAgICAgZW1p dCB0aGVTaWduYWwoKTsKKysgICAgfQorKworK3NpZ25hbHM6CisrICAgIHZvaWQgdGhlU2lnbmFs KCk7CisrfTsKKysKKyt9CisrI2VuZGlmCisrCisrdm9pZCB0c3RfUU9iamVjdDo6ZGVjbGFyYXRp dmVEYXRhKCkKKyt7CisrI2lmZGVmIFFUX0JVSUxEX0lOVEVSTkFMCisrICAgIFFTY29wZWRWYWx1 ZVJvbGxiYWNrIGRlc3Ryb3llZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmRlc3Ryb3llZCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0RGVjbGFyYXRpdmU6OmRlc3Ry b3llZCk7CisrICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNrIHNpZ25hbEVtaXR0ZWQoUUFic3RyYWN0 RGVjbGFyYXRpdmVEYXRhOjpzaWduYWxFbWl0dGVkLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFF0RGVjbGFyYXRpdmU6OnNpZ25hbEVtaXR0ZWQpOworKyAgICBRU2Nv cGVkVmFsdWVSb2xsYmFjayByZWNlaXZlcnMoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNl aXZlcnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdERlY2xhcmF0aXZl OjpyZWNlaXZlcnMpOworKyAgICBRU2NvcGVkVmFsdWVSb2xsYmFjayBpc1NpZ25hbENvbm5lY3Rl ZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmlzU2lnbmFsQ29ubmVjdGVkLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdERlY2xhcmF0aXZlOjppc1NpZ25h bENvbm5lY3RlZCk7CisrCisrICAgIFF0RGVjbGFyYXRpdmU6Ok9iamVjdCBwOworKyAgICBRT2Jq ZWN0UHJpdmF0ZSAqcHJpdiA9IFFPYmplY3RQcml2YXRlOjpnZXQoJnApOworKyAgICBwcml2LT5k ZWNsYXJhdGl2ZURhdGEgPSBRdERlY2xhcmF0aXZlOjp0aGVEYXRhID0gbmV3IFFBYnN0cmFjdERl Y2xhcmF0aXZlRGF0YTsKKysKKysgICAgY29ubmVjdCgmcCwgJlF0RGVjbGFyYXRpdmU6Ok9iamVj dDo6dGhlU2lnbmFsLCAmcCwgW117CisrICAgIH0pOworKworKyAgICBRdERlY2xhcmF0aXZlOjpP YmplY3QgKmNoaWxkID0gbmV3IFF0RGVjbGFyYXRpdmU6Ok9iamVjdDsKKysgICAgY2hpbGQtPnNl dFBhcmVudCgmcCk7CisrI2VuZGlmCisrfQorKworIFFURVNUX01BSU4odHN0X1FPYmplY3QpCisg I2luY2x1ZGUgInRzdF9xb2JqZWN0Lm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNwcCBi L3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UvdHN0X3Ft aW1lZGF0YWJhc2UuY3BwCitpbmRleCAwZWE0MjJlY2JjLi4xYTMyNTY1MzRiIDEwMDY0NAorLS0t IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3Rf cW1pbWVkYXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5 cGVzL3FtaW1lZGF0YWJhc2UvdHN0X3FtaW1lZGF0YWJhc2UuY3BwCitAQCAtNzAsMTUgKzcwLDE1 IEBAIHN0YXRpYyBpbmxpbmUgUVN0cmluZyB0ZXN0U3VpdGVXYXJuaW5nKCkKKyAKKyAgICAgUVN0 cmluZyByZXN1bHQ7CisgICAgIFFUZXh0U3RyZWFtIHN0cigmcmVzdWx0KTsKKy0gICAgc3RyIDw8 ICJcbkNhbm5vdCBmaW5kIHRoZSBzaGFyZWQtbWltZS1pbmZvIHRlc3Qgc3VpdGVcbnN0YXJ0aW5n IGZyb206ICIKKysgICAgc3RyIDw8ICJcbkNhbm5vdCBmaW5kIHRoZSBzaGFyZWQtbWltZS1pbmZv IHRlc3Qgc3VpdGVcbmluIHRoZSBwYXJlbnQgb2Y6ICIKKyAgICAgICAgIDw8IFFEaXI6OnRvTmF0 aXZlU2VwYXJhdG9ycyhRRGlyOjpjdXJyZW50UGF0aCgpKSA8PCAiXG4iCisgICAgICAgICAgICAi Y2QgIiA8PCBRRGlyOjp0b05hdGl2ZVNlcGFyYXRvcnMoUVN0cmluZ0xpdGVyYWwoInRlc3RzL2F1 dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZSIpKSA8PCAiXG4iCistICAgICAgICAg ICAid2dldCBodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcveGRnL3NoYXJlZC1taW1lLWluZm8v c25hcHNob3QvUmVsZWFzZS0xLTEwLnppcFxuIgorLSAgICAgICAgICAgInVuemlwIFJlbGVhc2Ut MS0xMC56aXBcbiI7CisrICAgICAgICAgICAid2dldCBodHRwczovL2dpdGxhYi5mcmVlZGVza3Rv cC5vcmcveGRnL3NoYXJlZC1taW1lLWluZm8vLS9hcmNoaXZlLzIuMS9zaGFyZWQtbWltZS1pbmZv LTIuMS56aXBcbiIKKysgICAgICAgICAgICJ1bnppcCBzaGFyZWQtbWltZS1pbmZvLTIuMS56aXBc biI7CisgI2lmZGVmIFFfT1NfV0lOCistICAgIHN0ciA8PCAibWtkaXIgdGVzdGZpbGVzXG54Y29w eSAvcyBSZWxlYXNlLTEtMTAgcy1tLWlcbiI7CisrICAgIHN0ciA8PCAibWtkaXIgdGVzdGZpbGVz XG54Y29weSAvcyBzaGFyZWQtbWltZS1pbmZvLTIuMSBzLW0taVxuIjsKKyAjZWxzZQorLSAgICBz dHIgPDwgImxuIC1zIFJlbGVhc2UtMS0xMCBzLW0taVxuIjsKKysgICAgc3RyIDw8ICJsbiAtcyBz aGFyZWQtbWltZS1pbmZvLTIuMSBzLW0taVxuIjsKKyAjZW5kaWYKKyAgICAgcmV0dXJuIHJlc3Vs dDsKKyB9CitAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgdHN0X1FNaW1lRGF0YWJhc2U6OmluaXRU ZXN0Q2FzZSgpCisgICAgIFFWRVJJRlkyKGNvcHlSZXNvdXJjZUZpbGUoeG1sRmlsZU5hbWUsIHht bFRhcmdldEZpbGVOYW1lLCAmZXJyb3JNZXNzYWdlKSwgcVByaW50YWJsZShlcnJvck1lc3NhZ2Up KTsKKyAjZW5kaWYKKyAKKy0gICAgbV90ZXN0U3VpdGUgPSBRRklORFRFU1REQVRBKCJzLW0taS90 ZXN0cyIpOworKyAgICBtX3Rlc3RTdWl0ZSA9IFFGSU5EVEVTVERBVEEoInMtbS1pL3Rlc3RzL21p bWUtZGV0ZWN0aW9uIik7CisgICAgIGlmIChtX3Rlc3RTdWl0ZS5pc0VtcHR5KCkpCisgICAgICAg ICBxV2FybmluZygiJXMiLCBxUHJpbnRhYmxlKHRlc3RTdWl0ZVdhcm5pbmcoKSkpOworIAorQEAg LTYxMSw3ICs2MTEsNyBAQCB2b2lkIHRzdF9RTWltZURhdGFiYXNlOjphbGxNaW1lVHlwZXMoKQor ICAgICBRVkVSSUZZKCFsc3QuaXNFbXB0eSgpKTsKKyAKKyAgICAgLy8gSGFyZGNvZGluZyB0aGlz IGlzIHRoZSBvbmx5IHdheSB0byBjaGVjayBib3RoIHByb3ZpZGVycyBmaW5kIHRoZSBzYW1lIG51 bWJlciBvZiBtaW1ldHlwZXMuCistICAgIFFDT01QQVJFKGxzdC5jb3VudCgpLCA3NzkpOworKyAg ICBRQ09NUEFSRShsc3QuY291bnQoKSwgODExKTsKKyAKKyAgICAgZm9yZWFjaCAoY29uc3QgUU1p bWVUeXBlICZtaW1lLCBsc3QpIHsKKyAgICAgICAgIGNvbnN0IFFTdHJpbmcgbmFtZSA9IG1pbWUu bmFtZSgpOworQEAgLTYzMSwxMCArNjMxLDkgQEAgdm9pZCB0c3RfUU1pbWVEYXRhYmFzZTo6c3Vm Zml4ZXNfZGF0YSgpCisgCisgICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggYSBzaW5n bGUgcGF0dGVybiIpIDw8ICJhcHBsaWNhdGlvbi9wZGYiIDw8ICIqLnBkZiIgPDwgInBkZiI7Cisg ICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggbXVsdGlwbGUgcGF0dGVybnMiKSA8PCAi YXBwbGljYXRpb24veC1rcHJlc2VudGVyIiA8PCAiKi5rcHI7Ki5rcHQiIDw8ICJrcHIiOworLSAg ICBRVGVzdDo6bmV3Um93KCJqcGVnIikgPDwgImltYWdlL2pwZWciIDw8ICIqLmpwZTsqLmpwZzsq LmpwZWciIDw8ICJqcGVnIjsKKy0gICAgLy9pZiAoS01pbWVUeXBlOjpzaGFyZWRNaW1lSW5mb1Zl cnNpb24oKSA+IEtERV9NQUtFX1ZFUlNJT04oMCwgNjAsIDApKSB7CistICAgICAgICBRVGVzdDo6 bmV3Um93KCJtaW1ldHlwZSB3aXRoIG1hbnkgcGF0dGVybnMiKSA8PCAiYXBwbGljYXRpb24vdm5k LndvcmRwZXJmZWN0IiA8PCAiKi53cDsqLndwNDsqLndwNTsqLndwNjsqLndwZDsqLndwcCIgPDwg IndwIjsKKy0gICAgLy99CisrICAgIC8vIFRoZSBwcmVmZXJyZWQgc3VmZml4IGZvciBpbWFnZS9q cGVnIGlzICouanBnLCBhcyBwZXIgaHR0cHM6Ly9idWdzLmtkZS5vcmcvc2hvd19idWcuY2dpP2lk PTE3NjczNworKyAgICBRVGVzdDo6bmV3Um93KCJqcGVnIikgPDwgImltYWdlL2pwZWciIDw8ICIq LmpwZTsqLmpwZzsqLmpwZWciIDw8ICJqcGciOworKyAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlw ZSB3aXRoIG1hbnkgcGF0dGVybnMiKSA8PCAiYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0IiA8 PCAiKi53cDsqLndwNDsqLndwNTsqLndwNjsqLndwZDsqLndwcCIgPDwgIndwIjsKKyAgICAgUVRl c3Q6Om5ld1Jvdygib2FzaXMgdGV4dCBtaW1ldHlwZSIpIDw8ICJhcHBsaWNhdGlvbi92bmQub2Fz aXMub3BlbmRvY3VtZW50LnRleHQiIDw8ICIqLm9kdCIgPDwgIm9kdCI7CisgICAgIFFUZXN0Ojpu ZXdSb3coIm9hc2lzIHByZXNlbnRhdGlvbiBtaW1ldHlwZSIpIDw8ICJhcHBsaWNhdGlvbi92bmQu b2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRhdGlvbiIgPDwgIioub2RwIiA8PCAib2RwIjsKKyAg ICAgUVRlc3Q6Om5ld1JvdygibWltZXR5cGUgd2l0aCBtdWx0aXBsZSBwYXR0ZXJucyIpIDw8ICJ0 ZXh0L3BsYWluIiA8PCAiKi5hc2M7Ki50eHQ7Kix2IiA8PCAidHh0IjsKK2RpZmYgLS1naXQgYS9x dGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3NlcmlhbGl6YXRpb24vanNvbi90c3RfcXRqc29uLmNw cCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9xdGpz b24uY3BwCitpbmRleCAzZTU4ZGQwM2NjLi5jOGY4MmVmNWQ1IDEwMDY0NAorLS0tIGEvcXRiYXNl L3Rlc3RzL2F1dG8vY29yZWxpYi9zZXJpYWxpemF0aW9uL2pzb24vdHN0X3F0anNvbi5jcHAKKysr KyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9xdGpz b24uY3BwCitAQCAtMTc2LDYgKzE3Niw4IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAgICAgdm9pZCBm cm9tVG9WYXJpYW50Q29udmVyc2lvbnNfZGF0YSgpOworICAgICB2b2lkIGZyb21Ub1ZhcmlhbnRD b252ZXJzaW9ucygpOworIAorKyAgICB2b2lkIG5vTGVha09uTmFtZUNsYXNoKCk7CisrCisgcHJp dmF0ZToKKyAgICAgUVN0cmluZyB0ZXN0RGF0YURpcjsKKyB9OworQEAgLTM2ODUsNSArMzY4Nywy MyBAQCB2b2lkIHRzdF9RdEpzb246OmZyb21Ub1ZhcmlhbnRDb252ZXJzaW9ucygpCisgICAgIH0K KyB9CisgCisrdm9pZCB0c3RfUXRKc29uOjpub0xlYWtPbk5hbWVDbGFzaCgpCisreworKyAgICBR SnNvbkRvY3VtZW50IGRvYyA9IFFKc29uRG9jdW1lbnQ6OmZyb21Kc29uKCJ7XCJcIjp7XCJcIjow fSxcIlwiOjB9Iik7CisrICAgIFFWRVJJRlkoIWRvYy5pc051bGwoKSk7CisrICAgIGNvbnN0IFFK c29uT2JqZWN0IG9iaiA9IGRvYy5vYmplY3QoKTsKKysKKysgICAgLy8gUmVtb3ZlZCB0aGUgZHVw bGljYXRlIGtleS4KKysgICAgUUNPTVBBUkUob2JqLmxlbmd0aCgpLCAxKTsKKysKKysgICAgLy8g UmV0YWluZWQgdGhlIGxhc3Qgb2YgdGhlIGR1cGxpY2F0ZXMuCisrICAgIGNvbnN0IFFKc29uVmFs dWUgdmFsID0gb2JqLmJlZ2luKCkudmFsdWUoKTsKKysgICAgUVZFUklGWSh2YWwuaXNEb3VibGUo KSk7CisrICAgIFFDT01QQVJFKHZhbC50b0RvdWJsZSgpLCAwLjApOworKworKyAgICAvLyBJdCBz aG91bGQgbm90IGxlYWsuCisrICAgIC8vIEluIHBhcnRpY3VsYXIgaXQgc2hvdWxkIG5vdCBmb3Jn ZXQgdG8gZGVyZWYgdGhlIGNvbnRhaW5lciBmb3IgdGhlIGlubmVyIG9iamVjdC4KKyt9CisrCisg UVRFU1RfTUFJTih0c3RfUXRKc29uKQorICNpbmNsdWRlICJ0c3RfcXRqc29uLm1vYyIKK2RpZmYg LS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3RpbWUvcXRpbWV6b25lL3RzdF9xdGlt ZXpvbmUuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi90aW1lL3F0aW1lem9uZS90c3Rf cXRpbWV6b25lLmNwcAoraW5kZXggYTU5YjU4ZDU3Zi4uMjQxYzNlODRhYyAxMDA2NDQKKy0tLSBh L3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvdGltZS9xdGltZXpvbmUvdHN0X3F0aW1lem9uZS5j cHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvdGltZS9xdGltZXpvbmUvdHN0X3F0 aW1lem9uZS5jcHAKK0BAIC02Myw2ICs2Myw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQg aXNWYWxpZElkX2RhdGEoKTsKKyAgICAgdm9pZCBpc1ZhbGlkSWQoKTsKKyAgICAgdm9pZCBtYWxm b3JtZWQoKTsKKysgICAgdm9pZCBzZXJpYWxpemUoKTsKKyAgICAgLy8gQmFja2VuZCB0ZXN0cwor ICAgICB2b2lkIHV0Y1Rlc3QoKTsKKyAgICAgdm9pZCBpY3VUZXN0KCk7CitAQCAtOTQ3LDYgKzk0 OCwzMyBAQCB2b2lkIHRzdF9RVGltZVpvbmU6Om1hbGZvcm1lZCgpCisgICAgICAgICBiYXJmLm9m ZnNldEZyb21VdGMobm93KTsKKyB9CisgCisrdm9pZCB0c3RfUVRpbWVab25lOjpzZXJpYWxpemUo KQorK3sKKysgICAgaW50IHBhcnRzID0gMDsKKysjaWZuZGVmIFFUX05PX0RFQlVHX1NUUkVBTQor KyAgICBxRGVidWcoKSA8PCBRVGltZVpvbmUoKTsgLy8gdG8gdmVyaWZ5IG5vIGNyYXNoCisrICAg IHBhcnRzKys7CisrI2VuZGlmCisrI2lmbmRlZiBRVF9OT19EQVRBU1RSRUFNCisrICAgIFFCeXRl QXJyYXkgYmxvYjsKKysgICAgeworKyAgICAgICAgUURhdGFTdHJlYW0gc3RyZWFtKCZibG9iLCBR SU9EZXZpY2U6OldyaXRlT25seSk7CisrICAgICAgICBzdHJlYW0gPDwgUVRpbWVab25lKCJFdXJv cGUvT3NsbyIpIDw8IFFUaW1lWm9uZSg0MjApIDw8IFFUaW1lWm9uZSgpIDw8IHFpbnQ2NCgtMSk7 CisrICAgIH0KKysgICAgUURhdGFTdHJlYW0gc3RyZWFtKCZibG9iLCBRSU9EZXZpY2U6OlJlYWRP bmx5KTsKKysgICAgUVRpbWVab25lIGludmFsaWQsIG9mZnNldCwgb3NsbzsKKysgICAgcWludDY0 IG1pbnVzb25lOworKyAgICBzdHJlYW0gPj4gb3NsbyA+PiBvZmZzZXQgPj4gaW52YWxpZCA+PiBt aW51c29uZTsKKysgICAgUUNPTVBBUkUob3NsbywgUVRpbWVab25lKCJFdXJvcGUvT3NsbyIpKTsK KysgICAgUUNPTVBBUkUob2Zmc2V0LCBRVGltZVpvbmUoNDIwKSk7CisrICAgIFFWRVJJRlkoIWlu dmFsaWQuaXNWYWxpZCgpKTsKKysgICAgUUNPTVBBUkUobWludXNvbmUsIHFpbnQ2NCgtMSkpOwor KyAgICBwYXJ0cysrOworKyNlbmRpZgorKyAgICBpZiAoIXBhcnRzKQorKyAgICAgICAgUVNLSVAo Ik5vIHNlcmlhbGl6YXRpb24gZW5hYmxlZCIpOworK30KKysKKyB2b2lkIHRzdF9RVGltZVpvbmU6 OnV0Y1Rlc3QoKQorIHsKKyAjaWZkZWYgUVRfQlVJTERfSU5URVJOQUwKK2RpZmYgLS1naXQgYS9x dGJhc2UvdGVzdHMvYXV0by9kYnVzL3FkYnVzaW50ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5j cHAgYi9xdGJhc2UvdGVzdHMvYXV0by9kYnVzL3FkYnVzaW50ZXJmYWNlL3RzdF9xZGJ1c2ludGVy ZmFjZS5jcHAKK2luZGV4IDA1NDgwYzZkZDIuLjcwZjRjNzU3NTYgMTAwNjQ0CistLS0gYS9xdGJh c2UvdGVzdHMvYXV0by9kYnVzL3FkYnVzaW50ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5jcHAK KysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2RidXMvcWRidXNpbnRlcmZhY2UvdHN0X3FkYnVzaW50 ZXJmYWNlLmNwcAorQEAgLTMyNCw2ICszMjQsMTMgQEAgdm9pZCB0c3RfUURCdXNJbnRlcmZhY2U6 Om5vdFZhbGlkKCkKKyAKKyAgICAgUVZFUklGWSghaW50ZXJmYWNlLmlzVmFsaWQoKSk7CisgICAg IFFWRVJJRlkoIVFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QoJmludGVyZmFjZSwgIkxpc3ROYW1l cyIsIFF0OjpEaXJlY3RDb25uZWN0aW9uKSk7CisrCisrICAgIC8vIFdpdGggYSBjb25uZWN0aW9u LCBidXQgZW1wdHkvbnVsbCBzZXJ2aWNlIGFuZCBwYXRoIHNwZWNpZmllZAorKyAgICBRREJ1c0Nv bm5lY3Rpb24gY29uID0gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCk7CisrICAgIFFWRVJJ RlkoY29uLmlzQ29ubmVjdGVkKCkpOworKyAgICBRREJ1c0ludGVyZmFjZSBpZmFjZSh7fSwge30s IHt9LCBjb24pOworKyAgICBRVkVSSUZZKCFpZmFjZS5pc1ZhbGlkKCkpOworKyAgICBRVkVSSUZZ KCFRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKCZpbnRlcmZhY2UsICJMaXN0TmFtZXMiLCBRdDo6 RGlyZWN0Q29ubmVjdGlvbikpOworIH0KKyAKKyB2b2lkIHRzdF9RREJ1c0ludGVyZmFjZTo6bm90 VmFsaWREZXJpdmVkKCkKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9ndWkva2VybmVs L3FrZXlzZXF1ZW5jZS90c3RfcWtleXNlcXVlbmNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1 aS9rZXJuZWwvcWtleXNlcXVlbmNlL3RzdF9xa2V5c2VxdWVuY2UuY3BwCitpbmRleCA4NzQ0Njhj OTU0Li4wNGNlYjRhYjY1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5l bC9xa2V5c2VxdWVuY2UvdHN0X3FrZXlzZXF1ZW5jZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9h dXRvL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlL3RzdF9xa2V5c2VxdWVuY2UuY3BwCitAQCAtNTA3 LDYgKzUwNywxMCBAQCB2b2lkIHRzdF9RS2V5U2VxdWVuY2U6OnRvU3RyaW5nRnJvbUtleWNvZGVf ZGF0YSgpCisgICAgIFFUZXN0OjpuZXdSb3coIkN0cmwrQWx0K051bStEZWwiKSA8PCBRS2V5U2Vx dWVuY2UoUXQ6OkNvbnRyb2xNb2RpZmllciB8IFF0OjpBbHRNb2RpZmllciB8IFF0OjpLZXlwYWRN b2RpZmllciB8IFF0OjpLZXlfRGVsZXRlKSA8PCAiQ3RybCtBbHQrTnVtK0RlbCI7CisgICAgIFFU ZXN0OjpuZXdSb3coIkN0cmwrSW5zIikgPDwgUUtleVNlcXVlbmNlKFF0OjpDb250cm9sTW9kaWZp ZXIgfCBRdDo6S2V5X0luc2VydCkgPDwgIkN0cmwrSW5zIjsKKyAgICAgUVRlc3Q6Om5ld1Jvdygi Q3RybCtOdW0rSW5zKDEpIikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfSW5zZXJ0IHwgUXQ6Oktl eXBhZE1vZGlmaWVyIHwgUXQ6OkNvbnRyb2xNb2RpZmllcikgPDwgIkN0cmwrTnVtK0lucyI7Cisr ICAgIFFUZXN0OjpuZXdSb3coIkN0cmwiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9Db250cm9s KSA8PCAiQ29udHJvbCI7CisrICAgIFFUZXN0OjpuZXdSb3coIkFsdCIpIDw8IFFLZXlTZXF1ZW5j ZShRdDo6S2V5X0FsdCkgPDwgIkFsdCI7CisrICAgIFFUZXN0OjpuZXdSb3coIlNoaWZ0IikgPDwg UUtleVNlcXVlbmNlKFF0OjpLZXlfU2hpZnQpIDw8ICJTaGlmdCI7CisrICAgIFFUZXN0OjpuZXdS b3coIk1ldGEiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9NZXRhKSA8PCAiTWV0YSI7CisgfQor IAorIHZvaWQgdHN0X1FLZXlTZXF1ZW5jZTo6dG9TdHJpbmdGcm9tS2V5Y29kZSgpCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS90c3RfcWZvbnRk YXRhYmFzZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNlL3Rz dF9xZm9udGRhdGFiYXNlLmNwcAoraW5kZXggMTVlMGVjYWRhYS4uYjRlY2E3NDI4MyAxMDA2NDQK Ky0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250 ZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9ndWkvdGV4dC9xZm9udGRhdGFi YXNlL3RzdF9xZm9udGRhdGFiYXNlLmNwcAorQEAgLTgxLDYgKzgxLDggQEAgcHJpdmF0ZSBzbG90 czoKKyAgICAgdm9pZCByZWdpc3Rlck9wZW5UeXBlUHJlZmVycmVkTmFtZXNTeXN0ZW0oKTsKKyAg ICAgdm9pZCByZWdpc3Rlck9wZW5UeXBlUHJlZmVycmVkTmFtZXNBcHBsaWNhdGlvbigpOworIAor KyAgICB2b2lkIHN0cmV0Y2hSZXNwZWN0ZWQoKTsKKysKKyBwcml2YXRlOgorICAgICBRU3RyaW5n IG1fbGVkRm9udDsKKyAgICAgUVN0cmluZyBtX3Rlc3RGb250OworQEAgLTM1NSw2ICszNTcsMjgg QEAgc3RhdGljIFFTdHJpbmcgdGVzdFN0cmluZygpCisgICAgIHJldHVybiBRU3RyaW5nTGl0ZXJh bCgiZm9vIGJhciIpOworIH0KKyAKKyt2b2lkIHRzdF9RRm9udERhdGFiYXNlOjpzdHJldGNoUmVz cGVjdGVkKCkKKyt7CisrICAgIGludCBpdGFsaWNJZCA9IFFGb250RGF0YWJhc2U6OmFkZEFwcGxp Y2F0aW9uRm9udChtX3Rlc3RGb250SXRhbGljKTsKKysgICAgUVZFUklGWShpdGFsaWNJZCAhPSAt MSk7CisrCisrICAgIFFWRVJJRlkoIVFGb250RGF0YWJhc2U6OmFwcGxpY2F0aW9uRm9udEZhbWls aWVzKGl0YWxpY0lkKS5pc0VtcHR5KCkpOworKworKyAgICBRU3RyaW5nIGl0YWxpY0ZvbnROYW1l ID0gUUZvbnREYXRhYmFzZTo6YXBwbGljYXRpb25Gb250RmFtaWxpZXMoaXRhbGljSWQpLmZpcnN0 KCk7CisrCisrICAgIFFGb250IGl0YWxpY0ZvbnQgPSBRRm9udERhdGFiYXNlKCkuZm9udChpdGFs aWNGb250TmFtZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFTdHJpbmc6OmZyb21MYXRpbjEoIkl0YWxpYyIpLCAxNCk7CisrICAgIFFWRVJJRlkoaXRhbGlj Rm9udC5pdGFsaWMoKSk7CisrCisrICAgIFFGb250IGl0YWxpY1N0cmV0Y2hlZEZvbnQgPSBpdGFs aWNGb250OworKyAgICBpdGFsaWNTdHJldGNoZWRGb250LnNldFN0cmV0Y2goIDQwMCApOworKwor KyAgICBRVkVSSUZZKFFGb250TWV0cmljc0YoaXRhbGljRm9udCkuaG9yaXpvbnRhbEFkdmFuY2Uo UVN0cmluZ0xpdGVyYWwoImZvb2JhciIpKSA8CisrICAgICAgICAgICAgUUZvbnRNZXRyaWNzRihp dGFsaWNTdHJldGNoZWRGb250KS5ob3Jpem9udGFsQWR2YW5jZShRU3RyaW5nTGl0ZXJhbCgiZm9v YmFyIikpKTsKKysKKysgICAgUUZvbnREYXRhYmFzZTo6cmVtb3ZlQXBwbGljYXRpb25Gb250KGl0 YWxpY0lkKTsKKyt9CisrCisgdm9pZCB0c3RfUUZvbnREYXRhYmFzZTo6Y29uZGVuc2VkRm9udFdp ZHRoTm9Gb250TWVyZ2luZygpCisgeworICAgICBpbnQgcmVndWxhckZvbnRJZCA9IFFGb250RGF0 YWJhc2U6OmFkZEFwcGxpY2F0aW9uRm9udChtX3Rlc3RGb250KTsKK2RpZmYgLS1naXQgYS9xdGJh c2UvdGVzdHMvYXV0by9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5L3RzdF9xbmV0d29ya3Jl cGx5LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHkv dHN0X3FuZXR3b3JrcmVwbHkuY3BwCitpbmRleCAzZDRhMDk0YzQzLi5iNDIzZTExYTk5IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90 c3RfcW5ldHdvcmtyZXBseS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNj ZXNzL3FuZXR3b3JrcmVwbHkvdHN0X3FuZXR3b3JrcmVwbHkuY3BwCitAQCAtMjgxLDYgKzI4MSw3 IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAgICAgdm9pZCBpb0dldEZyb21GaWxlU3BlY2lhbCgpOwor ICAgICB2b2lkIGlvR2V0RnJvbUZpbGVfZGF0YSgpOworICAgICB2b2lkIGlvR2V0RnJvbUZpbGUo KTsKKysgICAgdm9pZCBpb0dldEZyb21GaWxlVXJsKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRnRw X2RhdGEoKTsKKyAgICAgdm9pZCBpb0dldEZyb21GdHAoKTsKKyAgICAgdm9pZCBpb0dldEZyb21G dHBXaXRoUmV1c2UoKTsKK0BAIC0zMzAwLDYgKzMzMDEsMTggQEAgdm9pZCB0c3RfUU5ldHdvcmtS ZXBseTo6aW9HZXRGcm9tRmlsZSgpCisgICAgIFFDT01QQVJFKHJlYWRlci5kYXRhLCBkYXRhKTsK KyB9CisgCisrdm9pZCB0c3RfUU5ldHdvcmtSZXBseTo6aW9HZXRGcm9tRmlsZVVybCgpCisrewor KyAgICAvLyBUaGlzIGltbWVkaWF0ZWx5IGZhaWxzIG9uIG5vbi13aW5kb3dzIHBsYXRmb3JtczoK KysgICAgUU5ldHdvcmtSZXF1ZXN0IHJlcXVlc3QoUVVybCgiZmlsZTovL3VuYy1zZXJ2ZXIvc29t ZS9wYXRoIikpOworKyAgICBRTmV0d29ya1JlcGx5UHRyIHJlcGx5KG1hbmFnZXIuZ2V0KHJlcXVl c3QpKTsKKysgICAgUVNpZ25hbFNweSBmaW5pc2hlZFNweShyZXBseS5nZXQoKSwgJlFOZXR3b3Jr UmVwbHk6OmZpbmlzaGVkKTsKKysgICAgLy8gUVRCVUctMTA1NjE4OiBUaGlzIHdvdWxkLCBvbiBu b24tV2luZG93cyBwbGF0Zm9ybXMsIG5ldmVyIGhhcHBlbiBiZWNhdXNlIHRoZSBzaWduYWwKKysg ICAgLy8gd2FzIGVtaXR0ZWQgYmVmb3JlIHRoZSBjb25zdHJ1Y3RvciBmaW5pc2hlZCwgbGVhdmlu ZyBubyBjaGFuY2UgYXQgYWxsIHRvIGNvbm5lY3QgdG8gdGhlCisrICAgIC8vIHNpZ25hbAorKyAg ICBRVkVSSUZZKGZpbmlzaGVkU3B5LndhaXQoKSk7CisrfQorKworIHZvaWQgdHN0X1FOZXR3b3Jr UmVwbHk6OmlvR2V0RnJvbUZ0cF9kYXRhKCkKKyB7CisgICAgIFFUZXN0OjphZGRDb2x1bW48UVN0 cmluZz4oImZpbGVOYW1lIik7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29y ay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5jZXJ0IGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0 d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5jZXJ0CitpbmRleCAwNjlmYTZiMzQxLi40 Y2M0ZDlhNWVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNz bHNvY2tldC9jZXJ0cy9mbHVrZS5jZXJ0CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3Jr L3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmNlcnQKK0BAIC0xLDc1ICsxLDM0IEBACistQ2Vy dGlmaWNhdGU6CistICAgIERhdGE6CistICAgICAgICBWZXJzaW9uOiAzICgweDIpCistICAgICAg ICBTZXJpYWwgTnVtYmVyOiAwICgweDApCistICAgICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBz aGExV2l0aFJTQUVuY3J5cHRpb24KKy0gICAgICAgIElzc3VlcjogQz1OTywgU1Q9T3NsbywgTD1O eWRhbGVuLCBPPU5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKSwg T1U9RGV2ZWxvcG1lbnQsIENOPWZsdWtlLnRyb2xsLm5vL2VtYWlsQWRkcmVzcz1haGFuc3NlbkB0 cm9sbHRlY2guY29tCistICAgICAgICBWYWxpZGl0eQorLSAgICAgICAgICAgIE5vdCBCZWZvcmU6 IERlYyAgNCAwMToxMDozMiAyMDA3IEdNVAorLSAgICAgICAgICAgIE5vdCBBZnRlciA6IEFwciAy MSAwMToxMDozMiAyMDM1IEdNVAorLSAgICAgICAgU3ViamVjdDogQz1OTywgU1Q9T3NsbywgTz1O b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyksIE9VPURldmVsb3Bt ZW50LCBDTj1mbHVrZS50cm9sbC5ubworLSAgICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86 CistICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJzYUVuY3J5cHRpb24KKy0gICAg ICAgICAgICBSU0EgUHVibGljIEtleTogKDEwMjQgYml0KQorLSAgICAgICAgICAgICAgICBNb2R1 bHVzICgxMDI0IGJpdCk6CistICAgICAgICAgICAgICAgICAgICAwMDphNzpjODphMDo0YTpjNDox OTowNToxYjo2NjpiYTozMjplMjpkMjpmMToKKy0gICAgICAgICAgICAgICAgICAgIDFjOjZmOjE3 OjgyOmU0OjM5OjJlOjAxOjUxOjkwOmRiOjA0OjM0OjMyOjExOgorLSAgICAgICAgICAgICAgICAg ICAgMjE6YzI6MGQ6NmY6NTk6ZDg6NTM6OTA6NTQ6M2Y6ODM6OGY6YTk6ZDM6YjM6CistICAgICAg ICAgICAgICAgICAgICBkNTplZToxYTo5Yjo4MDphZTpjMzoyNTpjOTo1ZTphNTphZjo0Yjo2MDow NToKKy0gICAgICAgICAgICAgICAgICAgIGFhOmEwOmQxOjkxOjAxOjFmOmNhOjA0OjgzOmUzOjU4 OjFjOjk5OjMyOjQ1OgorLSAgICAgICAgICAgICAgICAgICAgODQ6NzA6NzI6NTg6MDM6OTg6NGE6 NjM6OGI6NDE6ZjU6MDg6NDk6ZDI6OTE6CistICAgICAgICAgICAgICAgICAgICAwMjo2MDo2Yjpl NDo2NDpmZTpkZDphMDphYTo3NDowODplOTozNDo0Yzo5MToKKy0gICAgICAgICAgICAgICAgICAg IDVmOjEyOjNkOjM3OjRkOjU0OjJjOmFkOjdmOjViOjk4OjYwOjM2OjAyOjhjOgorLSAgICAgICAg ICAgICAgICAgICAgM2I6ZjY6NDU6ZjM6Mjc6NmE6OWI6OTQ6OWQKKy0gICAgICAgICAgICAgICAg RXhwb25lbnQ6IDY1NTM3ICgweDEwMDAxKQorLSAgICAgICAgWDUwOXYzIGV4dGVuc2lvbnM6Cist ICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRzOiAKKy0gICAgICAgICAgICAgICAg Q0E6RkFMU0UKKy0gICAgICAgICAgICBOZXRzY2FwZSBDb21tZW50OiAKKy0gICAgICAgICAgICAg ICAgT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUKKy0gICAgICAgICAgICBYNTA5djMgU3Vi amVjdCBLZXkgSWRlbnRpZmllcjogCistICAgICAgICAgICAgICAgIDIxOjg1OjA0OjNEOjIzOjAx OjY2OkU1OkY3OjlGOjFBOjg0OjI0OjhBOkFGOjBBOjc5OkY0OkU1OkFDCistICAgICAgICAgICAg WDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmllcjogCistICAgICAgICAgICAgICAgIERpck5h bWU6L0M9Tk8vU1Q9T3Nsby9MPU55ZGFsZW4vTz1Ob2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz IHN1YnNpZGlhcnkoLWllcykvT1U9RGV2ZWxvcG1lbnQvQ049Zmx1a2UudHJvbGwubm8vZW1haWxB ZGRyZXNzPWFoYW5zc2VuQHRyb2xsdGVjaC5jb20KKy0gICAgICAgICAgICAgICAgc2VyaWFsOjhF OkE4OkI0OkU4OjkxOkI3OjU0OjJFCistCistICAgIFNpZ25hdHVyZSBBbGdvcml0aG06IHNoYTFX aXRoUlNBRW5jcnlwdGlvbgorLSAgICAgICAgNmQ6NTc6NWY6ZDE6MDU6NDM6ZjA6NjI6MDU6ZWM6 MmE6NzE6YTU6ZGM6MTk6MDg6ZjI6YzQ6CistICAgICAgICBhNjpiZDpiYjoyNTpkOTpjYTo4OTow MTowZTplNDpjZjoxZjpjMTo4YzpjODoyNDoxODozNToKKy0gICAgICAgIDUzOjU5OjdiOmMwOjQz OmI0OjMyOmU2Ojk4OmIyOmE2OmVmOjE1OjA1OjBiOjQ4OjVmOmUxOgorLSAgICAgICAgYTA6MGM6 OTc6YTk6YTE6Nzc6ZDg6MzU6MTg6MzA6YmM6YTk6OGY6ZDM6Yjc6NTQ6Yzc6ZjE6CistICAgICAg ICBhOTo5ZTo1ZDplNjoxOTpiZjpmNjozYzo1YjoyYjpkODplNDozZTo2MjoxODo4ODo4YjpkMzoK Ky0gICAgICAgIDI0OmUxOjQwOjliOjBjOmU2OjI5OjE2OjYyOmFiOmVhOjA1OjI0OjcwOjM2OmFh OjU1OjkzOgorLSAgICAgICAgZWY6MDI6ODE6MWI6MjM6MTA6YTI6MDQ6ZWI6NTY6OTU6NzU6ZmM6 Zjg6OTQ6YjE6NWQ6NDI6CistICAgICAgICBjNTozZjozNjo0NDo4NTo1ZDozYToyZTo5MDo0Njo4 YTphMjpiOTo2Zjo4NzphZTowYzoxNToKKy0gICAgICAgIDQwOjE5OjMxOjkwOmZjOjNiOjI1OmJi OmFlOmYxOjY2OjEzOjBkOjg1OjkwOmQ5OjQ5OjM0OgorLSAgICAgICAgOGY6ZjI6NWQ6Zjk6N2E6 ZGI6NGQ6NWQ6Mjc6ZjY6NzY6OWQ6MzU6OGM6MDY6YTY6NGM6YTM6CistICAgICAgICBiMTpiMjpi Njo2ZjoxZDpkNzphMzowMDpmZDo3MjplYjo5ZTplYTo0NDphMTphZjoyMTozNDoKKy0gICAgICAg IDdkOmM3OjQyOmUyOjQ5OjkxOjE5OjhiOmMwOmFkOmJhOjgyOjgwOmE4OjcxOjcwOmY0OjM1Ogor LSAgICAgICAgMzE6OTE6NjM6ODQ6MjA6OTU6ZTk6NjA6YWY6NjQ6OGI6Y2M6ZmY6M2Q6OGE6NzY6 NzQ6M2Q6CistICAgICAgICBjODo1NTo2ZDplNDo4ZTpjMzoyYjoxYzplODo0MjoxODphZTo5Zjpl Njo2Yjo5YzozNDowNjoKKy0gICAgICAgIGVjOjZhOmYyOmMzCisgLS0tLS1CRUdJTiBDRVJUSUZJ Q0FURS0tLS0tCistTUlJRUV6Q0NBdnVnQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFVRkFEQ0Ju REVMTUFrR0ExVUVCaE1DVGs4eAorLURUQUxCZ05WQkFnVEJFOXpiRzh4RURBT0JnTlZCQWNUQjA1 NVpHRnNaVzR4RmpBVUJnTlZCQW9URFZSeWIyeHMKKy1kR1ZqYUNCQlUwRXhGREFTQmdOVkJBc1RD MFJsZG1Wc2IzQnRaVzUwTVJjd0ZRWURWUVFERXc1bWJIVnJaUzUwCistY205c2JDNXViekVsTUNN R0NTcUdTSWIzRFFFSkFSWVdZV2hoYm5OelpXNUFkSEp2Ykd4MFpXTm9MbU52YlRBZQorLUZ3MHdO ekV5TURRd01URXdNekphRncwek5UQTBNakV3TVRFd016SmFNR014Q3pBSkJnTlZCQVlUQWs1UE1R MHcKKy1Dd1lEVlFRSUV3UlBjMnh2TVJZd0ZBWURWUVFLRXcxVWNtOXNiSFJsWTJnZ1FWTkJNUlF3 RWdZRFZRUUxFd3RFCistWlhabGJHOXdiV1Z1ZERFWE1CVUdBMVVFQXhNT1pteDFhMlV1ZEhKdmJH d3VibTh3Z1o4d0RRWUpLb1pJaHZjTgorLUFRRUJCUUFEZ1kwQU1JR0pBb0dCQUtmSW9FckVHUVVi WnJveTR0THhIRzhYZ3VRNUxnRlJrTnNFTkRJUkljSU4KKy1iMW5ZVTVCVVA0T1BxZE96MWU0YW00 Q3V3eVhKWHFXdlMyQUZxcURSa1FFZnlnU0Q0MWdjbVRKRmhIQnlXQU9ZCistU21PTFFmVUlTZEtS QW1CcjVHVCszYUNxZEFqcE5FeVJYeEk5TjAxVUxLMS9XNWhnTmdLTU8vWkY4eWRxbTVTZAorLUFn TUJBQUdqZ2dFYU1JSUJGakFKQmdOVkhSTUVBakFBTUN3R0NXQ0dTQUdHK0VJQkRRUWZGaDFQY0dW dVUxTk0KKy1JRWRsYm1WeVlYUmxaQ0JEWlhKMGFXWnBZMkYwWlRBZEJnTlZIUTRFRmdRVUlZVUVQ U01CWnVYM254cUVKSXF2CistQ25uMDVhd3dnYnNHQTFVZEl3U0JzekNCc0tHQm9xU0JuekNCbkRF TE1Ba0dBMVVFQmhNQ1RrOHhEVEFMQmdOVgorLUJBZ1RCRTl6Ykc4eEVEQU9CZ05WQkFjVEIwNTVa R0ZzWlc0eEZqQVVCZ05WQkFvVERWUnliMnhzZEdWamFDQkIKKy1VMEV4RkRBU0JnTlZCQXNUQzBS bGRtVnNiM0J0Wlc1ME1SY3dGUVlEVlFRREV3NW1iSFZyWlM1MGNtOXNiQzV1CistYnpFbE1DTUdD U3FHU0liM0RRRUpBUllXWVdoaGJuTnpaVzVBZEhKdmJHeDBaV05vTG1OdmJZSUpBSTZvdE9pUgor LXQxUXVNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUJ0VjEvUkJVUHdZZ1hzS25HbDNCa0k4c1Nt dmJzbDJjcUoKKy1BUTdrengvQmpNZ2tHRFZUV1h2QVE3UXk1cGl5cHU4VkJRdElYK0dnREplcG9Y ZllOUmd3dkttUDA3ZFV4L0dwCistbmwzbUdiLzJQRnNyMk9RK1loaUlpOU1rNFVDYkRPWXBGbUty NmdVa2NEYXFWWlB2QW9FYkl4Q2lCT3RXbFhYOAorLStKU3hYVUxGUHpaRWhWMDZMcEJHaXFLNWI0 ZXVEQlZBR1RHUS9Ec2x1Njd4WmhNTmhaRFpTVFNQOGwzNWV0dE4KKy1YU2YyZHAwMWpBYW1US094 c3JadkhkZWpBUDF5NjU3cVJLR3ZJVFI5eDBMaVNaRVppOEN0dW9LQXFIRnc5RFV4Cista1dPRUlK WHBZSzlraTh6L1BZcDJkRDNJVlcza2pzTXJIT2hDR0s2ZjVtdWNOQWJzYXZMRAorK01JSUY2ekND QTlPZ0F3SUJBZ0lVZm85YW1KdEpHV3FXRTZmK1NrQU84NXprR3I0d0RRWUpLb1pJaHZjTkFRRUwK KytCUUF3Z1lNeEN6QUpCZ05WQkFZVEFrNVBNUTB3Q3dZRFZRUUlEQVJQYzJ4dk1RMHdDd1lEVlFR SERBUlBjMnh2CisrTVJjd0ZRWURWUVFLREE1VWFHVWdVWFFnUTI5dGNHRnVlVEVNTUFvR0ExVUVD d3dEVWlaRU1SSXdFQVlEVlFRRAorK0RBbElNaUJVWlhOMFpYSXhHekFaQmdrcWhraUc5dzBCQ1FF V0RHMXBibWx0YVVCeGRDNXBiekFnRncweU1ERXcKKytNall4TWpBeE16RmFHQTh5TVRJd01UQXdN akV5TURFek1Wb3dnWU14Q3pBSkJnTlZCQVlUQWs1UE1RMHdDd1lECisrVlFRSURBUlBjMnh2TVEw d0N3WURWUVFIREFSUGMyeHZNUmN3RlFZRFZRUUtEQTVVYUdVZ1VYUWdRMjl0Y0dGdQorK2VURU1N QW9HQTFVRUN3d0RVaVpFTVJJd0VBWURWUVFEREFsSU1pQlVaWE4wWlhJeEd6QVpCZ2txaGtpRzl3 MEIKKytDUUVXREcxcGJtbHRhVUJ4ZEM1cGJ6Q0NBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQ QURDQ0Fnb0NnZ0lCCisrQU9pVXA1K0U0YmxvdUtIN3ErclZOUjhOb1lYMlhrQlcrcStycHkxenU1 c3NSU3picXhBakR4OWRraHQ3UWxuZgorK1ZsRFQwMEp2cE9XZGV1UG9uNTkxNWVkUVJzWTRVbmw2 bUtIMjlyYTNPdFVhMS95Q0pYc0dWSlRLQ2o3azRCeGIKKys1bVp6Yi9mVGxabnRNTGRUSUJNZlVi dzYyRktpcjFXaktJY0o5ZkNvRzhKYUdlS1ZPNFJoNXAwZXpkNFVVVUlkCisrcjFCWGw1TnFkcXky dlRNc0VEbmpPc0QzZWdrdjhJMlNLTjRPNm4vQzN3V1lwTU9XWVprR29aaUt6N3JKcy9pLworK2V6 N2JzVjdKbHdkelRsaHBKemtjT1NWRkJQNkpsRU94VE5OeFoxd3RLeTdQdFpHbXNTU0FUcTJlNiti dzM4QWUKKytPcDBYbnp6cWNHanRERG9mQm1UN09GelpXalM5VlpTNitET09lMlFIV2xlMW5DSGNI eUg0a3U2SVJsc3I5eGtSCisrTkFJbE9mbnZISHhxSlVlbm9lYVo0b1FEakNCS1MxS1h5Z0pPL3RM N0JMVFFWbi94SzFFbVB2S05uanpXazR0UgorK1BuaWJVaGhzNTYzNXFwT1UvWVBxRkJoMUpqVnJ1 WmJzV2NEQWhSY2V3MHV4T05YT2E5RSs0bHR0UTl5U1lhMUEKKytMdldxSnVBWDdndTJCc0JNTHlx Zm04MTFZbkE3Q0lGTXlPK0hscW1rTEZmdjVML3hJUkFYUjdsMjZZR08wVndYCisrQ0dqTWZ6NE5W UE1Na2U0bkI3cWE5TmtwWFFCUUtNbXMzUXpkNUpXMEh5OVJ1ajVPOEdQY0ZabVYwdHdqZDF1Sgor K1BEL2NBamtXTGFYamROc0oxNlFXYzJuZ2hRUlM2SFlxS1JYNmorQ1hPeHVwQWdNQkFBR2pVekJS TUIwR0ExVWQKKytEZ1FXQkJSU0NPVTU4ajlOSlprTWFtdDYyM3F5Q3JoTjNUQWZCZ05WSFNNRUdE QVdnQlJTQ09VNThqOU5KWmtNCisrYW10NjIzcXlDcmhOM1RBUEJnTlZIUk1CQWY4RUJUQURBUUgv TUEwR0NTcUdTSWIzRFFFQkN3VUFBNElDQVFDcQorK3E0anhzV2VORHY1TnExNGhKdEY5SEIrWkw2 NHpjWnRSakpQMVlnTnMwUXBwS0lDbWpQT0wybklNR21JL2pLcnMKKyswZUdBTC85WFhOVkhQeG0x T1BPbmN2aW1NTW1VNmVtWmZwTWRFdFRmS1A0MytQZzlIZ0tSakxvUXA0MDZ2R2VRCisrOGtpL21i QmhySXRWUGdFbTN0dTJBRkEwMlhUWWkrWXhDSTlrUlpMR2tNM0ZiZ3RPdVRMUGwwWjl5K2tpUGM5 RgorK3VDU0MwM2FuQkVxdit2RFNJOCt3T0R5bVEvSUozSnl6MWx4SVJEZnA0cUFla215MGpVMmM5 MVZPSEhFbU9tcXEKKytrcXlnR0ZSZHdiZTk5bTl5UDYzcjZxMGI1SzNYMlVuSjZibnMwaG1Ud1Ro WXdwVlBYTFU4amRhVGRkYk11a04yCisrL0VmOTZUc3c4bldPRU9QTXlTSE9USVBnd3laUnAyNmIw a0E5RW1oTHdPUDQwMVN4WFZRQ21TUm10d05hZ210ZworK2pKS21ab1lCTisvL0Q0NWliSzh6NlEw b09tOVArV2hmL3VVWGVoY1J4Qnh5VjN4ejdrMHdLR1FiSGovZGR3Y3kKKytJVW9JTjRsckFsaWIr bEsxNzBrVEtOMzUyUERtcnBvMmdtSXpQRXNmdXJLQUlNU2VsRGw2SCtraWgxNkJ0Wjh5CisrTno2 Zmg5U29xcmczT1NBd2FyZThweFY3azUxY3JCTW9QTE43OEtvUlY4TUZDSzRLN0ZkZHE0clJJU3E2 aGlYcQorK3IxbnNqb0VQdUtNOWh1cHJtWlZaZTl0NVljRGEySSt3YjNJaUUzdXdwWmJBZGFMRHlR NW42Ri9xcHNpSWtaWG4KKytndGNGN29xcEc1b1lyd0NjWjUzeS9lelVnVWc3UGxTejJYd0FHdlF0 Z2c9PQorIC0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVz dHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmtleSBiL3F0YmFzZS90 ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2Uua2V5CitpbmRleCA5 ZDE2NjRkNjA5Li4zMzdjZTU0MWE2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0 d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5rZXkKKysrKyBiL3F0YmFzZS90ZXN0cy9h dXRvL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2Uua2V5CitAQCAtMSwxNSArMSw1 MiBAQAorLS0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KKy1NSUlDWEFJQkFBS0JnUUNu eUtCS3hCa0ZHMmE2TXVMUzhSeHZGNExrT1M0QlVaRGJCRFF5RVNIQ0RXOVoyRk9RCistVkQrRGo2 blRzOVh1R3B1QXJzTWx5VjZscjB0Z0JhcWcwWkVCSDhvRWcrTllISmt5UllSd2NsZ0RtRXBqaTBI MQorLUNFblNrUUpnYStSay90MmdxblFJNlRSTWtWOFNQVGROVkN5dGYxdVlZRFlDakR2MlJmTW5h cHVVblFJREFRQUIKKy1Bb0dBTkZ6TGthblRlU0dORk0wdXR0QmlwRlQ5RjRhMDBkcUh6NkpuTzd6 WEFUMjZJNXI4c1UxcHFRQmI2dUx6CistLytRejVad2s4UlVBUWNzTVJnSmV0dVBRVWIwSlpqRjZE dXYyNGhOYXpxWEJDdTdBWnpVZW5qYWZ3bUtDLzhyaQorLUtwWDNmVHdxemZ6aS8vRktHZ2JYUTgw eXlrU1NsaURMM2tuL2RyQVR4c0xDZ1FFQ1FRRFhoRUZXTEowdlZaMXMKKy0xRWtmKzNOSVRFK0RS MTZYK0xRNFc2dnlFSEFqVGJhTld0Y1RLZEFXTEEybDZONFdBQVBZU2k2YXdtK3pNeHg0CistVm9t VlRzamRBa0VBeDB6K2U3bmF0TGVGY3JycThwYlUrd2E2U0FQMVZmaFFXS2l0eEwxZTd1L1FPOTBO Q3B4RQorLW9RWUt6TWttbXBPT0ZqUXdFTUF5MWR2Rk1ibTRMSGxld1FKQUMva3NEQmFVY1FISHFq a3RDdHJVYjhyVmpBeVcKKy1BOGxzY2NrZUIyZkVZeUc1SjZkSlZhWTRDbE5PT3M1eU1EUzJBZmsx RjZIL3hLdnRRLzVDekluQS9RSkFURHViCistSytCUFU4ak85cStncHVJaTNWSVpkdXBzc1ZHbUNn T2JWQ0hMYWtHNHVPMDR5OUl5UGhWOWxBOXRBTHRvSWY0YworLVZJdnY1ZldHWEJyWjQ4a1pBUUpC QUptVkNkelF4ZDlMWkk1dnhpalVDajVFSTRlK3g1RFJxVlV2eVA4S0NackMKKy1BaU55b0RQODVU K2hCWmFTWEszYVlHcFZ3ZWx5ajNidm8xR3JUTndOV0x3PQorLS0tLS0tRU5EIFJTQSBQUklWQVRF IEtFWS0tLS0tCisrLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCisrTUlJSlFnSUJBREFOQmdr cWhraUc5dzBCQVFFRkFBU0NDU3d3Z2drb0FnRUFBb0lDQVFEb2xLZWZoT0c1YUxpaAorKys2dnEx VFVmRGFHRjlsNUFWdnF2cTZjdGM3dWJMRVVzMjZzUUl3OGZYWkliZTBKWjMxWlEwOU5DYjZUbG5Y cmoKKys2SitmZGVYblVFYkdPRko1ZXBpaDl2YTJ0enJWR3RmOGdpVjdCbFNVeWdvKzVPQWNXK1pt YzIvMzA1V1o3VEMzCisrVXlBVEgxRzhPdGhTb3E5Vm95aUhDZlh3cUJ2Q1dobmlsVHVFWWVhZEhz M2VGRkZDSGE5UVY1ZVRhbmFzdHIwegorK0xCQTU0enJBOTNvSkwvQ05raWplRHVwL3d0OEZtS1RE bG1HWkJxR1lpcys2eWJQNHYzcysyN0ZleVpjSGMwNVkKKythU2M1SERrbFJRVCtpWlJEc1V6VGNX ZGNMU3N1ejdXUnByRWtnRTZ0bnV2bThOL0FIanFkRjU4ODZuQm83UXc2CisrSHdaayt6aGMyVm8w dlZXVXV2Z3pqbnRrQjFwWHRad2gzQjhoK0pMdWlFWmJLL2NaRVRRQ0pUbjU3eHg4YWlWSAorK3A2 SG1tZUtFQTR3Z1NrdFNsOG9DVHY3Uyt3UzAwRlovOFN0UkpqN3lqWjQ4MXBPTFVUNTRtMUlZYk9l dCthcVQKKytsUDJENmhRWWRTWTFhN21XN0ZuQXdJVVhIc05Mc1RqVnptdlJQdUpiYlVQY2ttR3RR QzcxcWliZ0YrNEx0Z2JBCisrVEM4cW41dk5kV0p3T3dpQlRNanZoNWFwcEN4WDcrUy84U0VRRjBl NWR1bUJqdEZjRndob3pIOCtEVlR6REpIdQorK0p3ZTZtdlRaS1YwQVVDakpyTjBNM2VTVnRCOHZV Ym8rVHZCajNCV1psZExjSTNkYmlUdy8zQUk1RmkybDQzVGIKKytDZGVrRm5OcDRJVUVVdWgyS2lr VitvL2dsenNicVFJREFRQUJBb0lDQUZ3MXE2dHI1STQ4dlk3REYrclhzdUxuCisrNVpVV0UxSVE2 ZnpCNGxyNzJuSnYvOUVFR25NZ1l6dDlQcE1Vc0Q2dmRDcEJnUzJDMCs2UkhBckZ6SnROQStSTQor K2lITElHN0s3NzAydmV5ci94QngvTXdpU2xNZU12L1hwa0Z4Vkk2RTZza01HRzJzM0FNWHhLdkpU eTVDcFJ4K0kKKytlUUZ5TEcrWWExWDJsZ0plcy9xKy9DcEFIa09qQ09wY0x5U1FDNU5aNzRxNzM0 VjduU2RtbitaczN0WUVoK08vCisrZWl1d1RQL2o1YjM4VGU1dlZUcUR4VGNpSlBtbGptWExDd2Ew TjEwMGxXbGJjcHZ3OHFicWlUSTJKbTNYQ2JVRQorK0F6SGpXOXZtckYzY1JTMWZYeEtGR1NodzNT UnFsa2J4amZlV29pOHFEUFVCUzRtOExPcjhxRzlXbzVOZm9uMHoKKyt6TFA0YmNpM3pIRHZWY2Fh WnJyc1VCcy95WmJnK0Rna2ExRG1YN2VrbWVjY3IyeVRkS0RGZ1B1cFlVeXhWYlRsCisrYTlaTEp5 c2pGRDdyZ0J2MVpjbEhvbkxwNlZibStab1RxdnRlbzRpa0F5Nkw5UnRCV0oyM1hFSzM0UGtQLytj NQorKzJ2V1phT3JualNlQkhiRmNlOGNkSlN4cVdwUCtlU0NJNUk5WGJEcllGSXNRL2dxS2d0ekRL eTJpaEoyWThTVEwKKyt5TzRoeUZQRmp4YytHZzQvUDJQcG1UNUNZMnR5NDRNMEJXcytKR1c5NkNK UHJycGxmMmxtUVVRSmo1TFpZNjZYCisrWi80QzlMN1pZdEtaK2JzNVN2VTQ2eVd1Z0F2UVpYMjJY bTl4TFhXeVZYUmR4M2JqKzNNM2ZEbkY5ZGkvemRiaAorK0NnTHg3b1dQTnJYYzdGQ2Fqbm45QW9J QkFRRDVGTVl3UnB3OU5XVDlXRHhRd3grY1NJNEljYmQ4OEJ5VFc2M1MKKytMemVSd1pBMEo5L1Nm d08rYUJSdXB6YzlHa0dYQ2laY0dNdzNBR3NDdGlnOHlGbHc4RTVLbnpON0tsZnRETW5NCisrOU5V eHh6bFI4VndLeUxuWmZHN3NEVGwwNTdabFV1am5xaG10L0Y4RjdkSXk3RlZPMWRFLzhubmdBK0ZZ VENPRworK1VaZEdqd3lCRGxETTBKSmRVV0dZM3hzbHV0Y3BDRE41bXpTVEtqeTlkck12SW1Bc2hS YXd4UkY2V0Jwbjd2cjIKKytuQzZ2Y2lxZngxTXp4MXZ5azBKbTBpbGF5ZERkTE1BRGp0L2lMNE5r cjBCRXM0aytVelFpS0R3cDhndTdhYlExCisrZUJmeGQ5SWFyNGh0UWEySTFFd2w2UDAxRy9xK1pZ d2dIaEo5UlZuNEF4UVhlZklMQW9JQkFRRHZDb3VPUmRRWAorK0M4d3N5cDdNd1hsRi8zTlFlTk41 LytCMm1oYnhyQk9mN1BtTUNYTG5rUldjandKdHp5cFdGcUowc3FhaS8yKzAKKyticWJNY2pYNW1h VDhzdFQyc2hsM3pYZS9FanQyZTNUQllwYzF0eXVzZXM4S2I1Qk1VOGh1NnRUZDNHMkNNWHBECisr ZFQ2RFZlbUpaQ1R0d2o5YUJOSXhTaXp2bGdNb2xKbkNwemhQbmxmSFNJNkUrZzNtL0xUVG8zSHdi ak1Tdy9VcQorK2lyZ2pPcEkyd1NCQjZMWlBTZ2p2ZmNZUFJ5V1VrMTZMNEE1dVNYMGNBRG5vdkRG TGE1L2gwd0p2Ti9Pb0NTUWcKKytyTENYRzVFMThFeUw1V2M1OEJDWTFadnhtakczbFF0Z1B4WXUy SndjMzZSL3kvSktseFc1c3VFUjVaTnBiYkQ0CisrdU95VHQyVnhNUTJiQW9JQkFRQzUrTXpSRnFk by9BamZMNVk1SnJiZlZUelhDVERhMDl4Q0dkMTZaVTYwUVRXTgorKys0ZWQvcitvMXNVS3FVY1JG QjJNekVNLzJEUUJqUXBaQi9DYkVXdldhMVhKV1h4eXBYYm93dmVaVStRcU9ubU4KKyt1UXZqOFdM eUEzbytQTkY5ZTlRdmF1d0NySHBuOFZweGJ0UFd1YVlvS25VRnJlRlpaUXhIaFBHeFJCSVMySk9a CisrZURyVDhaYVdua0NraDFBWnA1c21RNzFMT3ByU2xtS3JnNGpkMUdqQ1ZNeFFSNU41S1hidHl2 ME9UQ1ovVUZxSworKzJhUkJzTVB5SmdrYUJDaGtaUExSY0t3Yysvd2xRUngxZkhRYjE0RE5UQXBN eG9YRk83ZU93cW1Pa3BBdDlpeWwKKytTQkl3b1MwVVVJNWFiODgrYkJtWE52S2N1RmROdVE0bm93 VEpVbjlwQW9JQkFETU5rSUxCWFN2UzVEZUl5dU8yCisrU3AxdGtvWlVWKzVOZlBZM3NNREszS0lp YmFXLyt0K0VPQlpvNEw3dEtRQ2I4dlJ6bDIxbW1zZnhmZ1JhUERiagorKzNyM3R2OWcwYjRZTHh4 Qnk1MnBGc2NqL3NvWFJhaTE3U1M3VVp3QTJRSytYemdEWWJEY0xOQzZtSXNUUUc0R3gKKytkc1dr My96czNLdVVTUWFlaG13cldLK2ZJVUszOGMxcExLOHY3TG94ckxrcXhsSHdaMDRSdGhIdzhLVHRo SDdYCisrUG5sMUowTEY4Q1NlT3lmV0xTdVBVZmtUMEdFenB0bk5IcEViYUhmUU02UjZlYUdoVkpQ RjZBWm1lNHk2WVlnZworK20yaWhoU3QxbjBYVkVXcEhZV2p4RnkzbUsybXo3NXVuRkM0TE0rTkVZ MnAyenVVUW9DdzdOam5ZM1FZcmZDbngKKytyUk1DZ2dFQVhlWHNNU0xGamp5dW9MN2lLYkF4bzUy SEQvUDBmQm95NThMeVJjd2ZOVnIwbHZZYW40cFlFeCtvCisrS2lqSWg5SzE2UHFYWlhLTUE5djAw M0IrdWxtRjhiSjdTZGRDWjVOR3ZuRmhVVERlNERkVEtncDJSdXdRM0JzYworKzNza1BJRGJoVkVU eU9MQ3R5czM0VVNIcnE4VS8wRGxHWTNlTFJmeHc5R25iS3hTQkdhL0tFdS9xUUxQTlVvNTAKKys3 eEhaRGc3R0tlQzNrcU5KZXFLTTlya3AwVnpJR2tFbmFEOTEyN0xlTkRtRVJEZmZ0eEp6Rm9DL1RI dlVCTGZVCisrNlN1czJaWXdSRThWRnZLQzMwUTQ1dC9jNTRYM0l1aFl2QXVpQ3VUbXlmRTRydXl6 eU93S3poVWtlZUxxMUFQWAorK2cwdmVGYnlmemxKMHE4cXpEL2lmZnFxSWEyWlNtUT09CisrLS0t LS1FTkQgUFJJVkFURSBLRVktLS0tLQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL290 aGVyL3FhY2Nlc3NpYmlsaXR5bGludXgvdHN0X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwIGIvcXRi YXNlL3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3RfcWFjY2Vzc2liaWxp dHlsaW51eC5jcHAKK2luZGV4IDdiYTM3MTVlMTMuLjc1MmFhMTIyZjYgMTAwNjQ0CistLS0gYS9x dGJhc2UvdGVzdHMvYXV0by9vdGhlci9xYWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJp bGl0eWxpbnV4LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxp dHlsaW51eC90c3RfcWFjY2Vzc2liaWxpdHlsaW51eC5jcHAKK0BAIC0xNzksNiArMTc5LDcgQEAg dm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlMaW51eDo6aW5pdFRlc3RDYXNlKCkKKyAgICAgUVZFUklG WSghYWRkcmVzcy5pc0VtcHR5KCkpOworIAorICAgICBtX3dpbmRvdyA9IG5ldyBBY2Nlc3NpYmxl VGVzdFdpbmRvdygpOworKyAgICBtX3dpbmRvdy0+c2V0T2JqZWN0TmFtZSgibWFpbldpbmRvdyJf TDEpOworICAgICBtX3dpbmRvdy0+c2hvdygpOworIAorICAgICBRVkVSSUZZKFFUZXN0OjpxV2Fp dEZvcldpbmRvd0V4cG9zZWQobV93aW5kb3cpKTsKK0BAIC0yMzYsOCArMjM3LDExIEBAIGJvb2wg aGFzU3RhdGUoUURCdXNJbnRlcmZhY2UgKmludGVyZmFjZSwgQXRzcGlTdGF0ZVR5cGUgc3RhdGUp Cisgdm9pZCB0c3RfUUFjY2Vzc2liaWxpdHlMaW51eDo6dGVzdExhYmVsKCkKKyB7CisgICAgIFFM YWJlbCAqbCA9IG5ldyBRTGFiZWwobV93aW5kb3cpOworKyAgICBsLT5zZXRPYmplY3ROYW1lKCJ0 aGVPYmplY3ROYW1lIl9MMSk7CisgICAgIGwtPnNldFRleHQoIkhlbGxvIEExMXkiKTsKKyAgICAg bV93aW5kb3ctPmFkZFdpZGdldChsKTsKKysgICAgYXV0byBhMTF5RW1wdHkgPSBuZXcgUUxhYmVs KG1fd2luZG93KTsKKysgICAgbV93aW5kb3ctPmFkZFdpZGdldChsKTsKKyAKKyAgICAgLy8gQXBw bGljYXRpb24KKyAgICAgUUNPTVBBUkUoZ2V0UGFyZW50KG1haW5XaW5kb3cpLCBRTGF0aW4xU3Ry aW5nKEFUU1BJX0RCVVNfUEFUSF9ST09UKSk7CitAQCAtMjQ5LDYgKzI1Myw4IEBAIHZvaWQgdHN0 X1FBY2Nlc3NpYmlsaXR5TGludXg6OnRlc3RMYWJlbCgpCisgICAgIFFDT01QQVJFKGdldENoaWxk cmVuKGxhYmVsSW50ZXJmYWNlKS5jb3VudCgpLCAwKTsKKyAgICAgUUNPTVBBUkUobGFiZWxJbnRl cmZhY2UtPmNhbGwoUURCdXM6OkJsb2NrLCAiR2V0Um9sZU5hbWUiKS5hcmd1bWVudHMoKS5maXJz dCgpLnRvU3RyaW5nKCksIFFMYXRpbjFTdHJpbmcoImxhYmVsIikpOworICAgICBRQ09NUEFSRShs YWJlbEludGVyZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ssICJHZXRSb2xlIikuYXJndW1lbnRzKCku Zmlyc3QoKS50b1VJbnQoKSwgMjl1KTsKKysgICAgUUNPTVBBUkUobGFiZWxJbnRlcmZhY2UtPmNh bGwoUURCdXM6OkJsb2NrLCAiR2V0QWNjZXNzaWJsZUlkIikuYXJndW1lbnRzKCkuZmlyc3QoKS50 b1N0cmluZygpLAorKyAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJtYWluV2luZG93LnRoZU9i amVjdE5hbWUiKSk7CisgICAgIFFDT01QQVJFKGdldFBhcmVudChsYWJlbEludGVyZmFjZSksIG1h aW5XaW5kb3ctPnBhdGgoKSk7CisgICAgIFFWRVJJRlkoIWhhc1N0YXRlKGxhYmVsSW50ZXJmYWNl LCBBVFNQSV9TVEFURV9FRElUQUJMRSkpOworICAgICBRVkVSSUZZKGhhc1N0YXRlKGxhYmVsSW50 ZXJmYWNlLCBBVFNQSV9TVEFURV9SRUFEX09OTFkpKTsKK0BAIC0yNTYsNyArMjYyLDEyIEBAIHZv aWQgdHN0X1FBY2Nlc3NpYmlsaXR5TGludXg6OnRlc3RMYWJlbCgpCisgICAgIGwtPnNldFRleHQo Ik5ldyB0ZXh0Iik7CisgICAgIFFDT01QQVJFKGxhYmVsSW50ZXJmYWNlLT5wcm9wZXJ0eSgiTmFt ZSIpLnRvU3RyaW5nKCksIGwtPnRleHQoKSk7CisgCisrICAgIGF1dG8gKmExMXlFbXB0eUludGVy ZmFjZSA9IGdldEludGVyZmFjZShjaGlsZHJlbi5hdCgxKSwgIm9yZy5hMTF5LmF0c3BpLkFjY2Vz c2libGUiKTsKKysgICAgUUNPTVBBUkUoYTExeUVtcHR5SW50ZXJmYWNlLT5jYWxsKFFEQnVzOjpC bG9jaywgIkdldEFjY2Vzc2libGVJZCIpLmFyZ3VtZW50cygpLmZpcnN0KCkudG9TdHJpbmcoKSwK KysgICAgICAgICAgICAgUUxhdGluMVN0cmluZygibWFpbldpbmRvdy5RTGFiZWwiKSk7CisrCisg ICAgIG1fd2luZG93LT5jbGVhckNoaWxkcmVuKCk7CisrICAgIGRlbGV0ZSBhMTF5RW1wdHlJbnRl cmZhY2U7CisgICAgIGRlbGV0ZSBsYWJlbEludGVyZmFjZTsKKyB9CisgCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5lbC9xc3FscXVlcnkvdHN0X3FzcWxxdWVyeS5jcHAg Yi9xdGJhc2UvdGVzdHMvYXV0by9zcWwva2VybmVsL3FzcWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNw cAoraW5kZXggNzZkZjYxYzg5Mi4uNmQ2ZDY1Yjc5MSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0 cy9hdXRvL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5L3RzdF9xc3FscXVlcnkuY3BwCisrKysgYi9xdGJh c2UvdGVzdHMvYXV0by9zcWwva2VybmVsL3FzcWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNwcAorQEAg LTEsNiArMSw2IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorLSoqIENvcHlyaWdodCAo QykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBR dCBDb21wYW55IEx0ZC4KKyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcv CisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQg VG9vbGtpdC4KK0BAIC02OCw2ICs2OCw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgcXVl cnlfZXhlYygpOworICAgICB2b2lkIGV4ZWNFcnJvclJlY292ZXJ5X2RhdGEoKSB7IGdlbmVyaWNf ZGF0YSgpOyB9CisgICAgIHZvaWQgZXhlY0Vycm9yUmVjb3ZlcnkoKTsKKysgICAgdm9pZCBwcmVt YXR1cmVFeGVjX2RhdGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9CisrICAgIHZvaWQgcHJlbWF0dXJl RXhlYygpOworICAgICB2b2lkIGZpcnN0X2RhdGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9CisgICAg IHZvaWQgZmlyc3QoKTsKKyAgICAgdm9pZCBuZXh0X2RhdGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9 CitAQCAtMjc3MCw2ICsyNzcyLDM1IEBAIHZvaWQgdHN0X1FTcWxRdWVyeTo6ZXhlY0Vycm9yUmVj b3ZlcnkoKQorICAgICBRVkVSSUZZX1NRTCggcSwgZXhlYygpICk7CisgfQorIAorK3ZvaWQgdHN0 X1FTcWxRdWVyeTo6cHJlbWF0dXJlRXhlYygpCisreworKyAgICBRRkVUQ0goUVN0cmluZywgZGJO YW1lKTsKKysgICAgLy8gV2Ugb25seSB3YW50IHRoZSBlbmdpbmUgbmFtZSwgZm9yIGFkZERhdGFi YXNlKCk6CisrICAgIGludCBjdXQgPSBkYk5hbWUuaW5kZXhPZihRQ2hhcignQCcpKTsKKysgICAg aWYgKGN1dCA8IDApCisrICAgICAgICBRU0tJUCgiRmFpbGVkIHRvIHBhcnNlIGRhdGFiYXNlIHR5 cGUgb3V0IG9mIG5hbWUiKTsKKysgICAgZGJOYW1lLnRydW5jYXRlKGN1dCk7CisrICAgIGN1dCA9 IGRiTmFtZS5pbmRleE9mKFFDaGFyKCdfJykpOworKyAgICBpZiAoY3V0ID49IDApCisrICAgICAg ICBkYk5hbWUgPSBkYk5hbWUubWlkKGN1dCArIDEpOworKworKyAgICBhdXRvIGRiID0gUVNxbERh dGFiYXNlOjphZGREYXRhYmFzZShkYk5hbWUpOworKyAgICBRU3FsUXVlcnkgcShkYik7CisrCisr ICAgIFFUZXN0OjppZ25vcmVNZXNzYWdlKFF0V2FybmluZ01zZywKKysgICAgICAgICAgICAgICAg ICAgICAgICAgIlFTcWxEYXRhYmFzZVByaXZhdGU6OnJlbW92ZURhdGFiYXNlOiBjb25uZWN0aW9u ICIKKysgICAgICAgICAgICAgICAgICAgICAgICAgIidxdF9zcWxfZGVmYXVsdF9jb25uZWN0aW9u JyBpcyBzdGlsbCBpbiB1c2UsIGFsbCAiCisrICAgICAgICAgICAgICAgICAgICAgICAgICJxdWVy aWVzIHdpbGwgY2Vhc2UgdG8gd29yay4iKTsKKysgICAgUVRlc3Q6Omlnbm9yZU1lc3NhZ2UoUXRX YXJuaW5nTXNnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAiUVNxbERhdGFiYXNlUHJpdmF0 ZTo6YWRkRGF0YWJhc2U6IGR1cGxpY2F0ZSBjb25uZWN0aW9uIG5hbWUgIgorKyAgICAgICAgICAg ICAgICAgICAgICAgICAiJ3F0X3NxbF9kZWZhdWx0X2Nvbm5lY3Rpb24nLCBvbGQgY29ubmVjdGlv biByZW1vdmVkLiIpOworKyAgICBhdXRvIG90aGVyRGIgPSBRU3FsRGF0YWJhc2U6OmFkZERhdGFi YXNlKGRiTmFtZSk7CisrCisrICAgIFFUZXN0OjppZ25vcmVNZXNzYWdlKFF0V2FybmluZ01zZywg IlFTcWxRdWVyeTo6ZXhlYzogY2FsbGVkIGJlZm9yZSBkcml2ZXIgaGFzIGJlZW4gc2V0IHVwIik7 CisrICAgIC8vIFFUQlVHLTEwMDAzNzogc2hvdWxkbid0IGNyYXNoICEKKysgICAgUVZFUklGWSgh cS5leGVjKCJzZWxlY3Qgc3R1ZmYgZnJvbSBUaGVWb2lkIikpOworK30KKysKKyB2b2lkIHRzdF9R U3FsUXVlcnk6Omxhc3RJbnNlcnRJZCgpCisgeworICAgICBRRkVUQ0goIFFTdHJpbmcsIGRiTmFt ZSApOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rlc3RsaWIvcWFic3RyYWN0aXRl bW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwIGIvcXRiYXNlL3Rl c3RzL2F1dG8vdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0 ZW1tb2RlbHRlc3Rlci5jcHAKK2luZGV4IDRhYTNmOGQ2MGIuLmQyMDUwYTYxYWEgMTAwNjQ0Cist LS0gYS9xdGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci90 c3RfcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8v dGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRl c3Rlci5jcHAKK0BAIC0xMTUsNiArMTE1LDEwIEBAIHZvaWQgdHN0X1FBYnN0cmFjdEl0ZW1Nb2Rl bFRlc3Rlcjo6c3RhbmRhcmRJdGVtTW9kZWxaZXJvQ29sdW1ucygpCisgICAgIC8vIFFUQlVHLTky ODg2CisgICAgIG1vZGVsLmluc2VydFJvd3MoMCwgNSk7CisgICAgIG1vZGVsLnJlbW92ZVJvd3Mo MSwgMik7CisrCisrICAgIGNvbnN0IFFNb2RlbEluZGV4IHBhcmVudEluZGV4ID0gbW9kZWwuaW5k ZXgoMCwgMCk7CisrICAgIG1vZGVsLmluc2VydFJvd3MoMCwgNSwgcGFyZW50SW5kZXgpOworKyAg ICBtb2RlbC5yZW1vdmVSb3dzKDEsIDIsIHBhcmVudEluZGV4KTsKKyB9CisgCisgdm9pZCB0c3Rf UUFic3RyYWN0SXRlbU1vZGVsVGVzdGVyOjp0ZXN0SW5zZXJ0VGhyb3VnaFByb3h5KCkKK2RpZmYg LS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvYWxsbW9jc19iYXNlbGluZV9pbi5q c29uIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVfaW4uanNv bgoraW5kZXggMTJhNGEyMmExOS4uY2U1MThlNzhmYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0 cy9hdXRvL3Rvb2xzL21vYy9hbGxtb2NzX2Jhc2VsaW5lX2luLmpzb24KKysrKyBiL3F0YmFzZS90 ZXN0cy9hdXRvL3Rvb2xzL21vYy9hbGxtb2NzX2Jhc2VsaW5lX2luLmpzb24KK0BAIC02NjgsNTAg KzY2OCw2IEBACisgICAgICAgICAiaW5wdXRGaWxlIjogInRhc2sxOTI1NTIuaCIsCisgICAgICAg ICAib3V0cHV0UmV2aXNpb24iOiA2NworICAgICB9LAorLSAgICB7CistICAgICAgICAiY2xhc3Nl cyI6IFsKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICJjbGFzc05hbWUiOiAiSW5s aW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiIsCistICAgICAgICAgICAgICAgICJvYmplY3Qi OiB0cnVlLAorLSAgICAgICAgICAgICAgICAicXVhbGlmaWVkQ2xhc3NOYW1lIjogIklubGluZVNs b3RzV2l0aFRocm93RGVjbGFyYXRpb24iLAorLSAgICAgICAgICAgICAgICAic2xvdHMiOiBbCist ICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6 ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImEiLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiCistICAgICAgICAgICAgICAg ICAgICB9LAorLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAg ICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJi IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAg ICAgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAg ICAgICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAg Im5hbWUiOiAiYyIsCistICAgICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9p ZCIKKy0gICAgICAgICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgICAgICAgICB7CistICAg ICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICJuYW1lIjogImQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5U eXBlIjogInZvaWQiCistICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAg ICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlIiwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAg ICAgICAgICBdLAorLSAgICAgICAgICAgICAgICAic3VwZXJDbGFzc2VzIjogWworLSAgICAgICAg ICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGlj IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJRT2JqZWN0IgorLSAgICAgICAg ICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICBdCistICAgICAgICAgICAgfQorLSAgICAg ICAgXSwKKy0gICAgICAgICJpbnB1dEZpbGUiOiAidGFzazE4OTk5Ni5oIiwKKy0gICAgICAgICJv dXRwdXRSZXZpc2lvbiI6IDY3CistICAgIH0sCisgICAgIHsKKyAgICAgICAgICJjbGFzc2VzIjog WworICAgICAgICAgICAgIHsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9t b2MvbW9jLnBybyBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9tb2MucHJvCitpbmRleCBj MzI0YjNhOGNkLi40YWNlYjc4ZGMwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9v bHMvbW9jL21vYy5wcm8KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9tb2MucHJv CitAQCAtMTUsNyArMTUsNyBAQCBjcm9zc19jb21waWxlOiBERUZJTkVTICs9IE1PQ19DUk9TU19D T01QSUxFRAorIEhFQURFUlMgKz0gdXNpbmctbmFtZXNwYWNlcy5oIG5vLWtleXdvcmRzLmggdGFz azg3ODgzLmggYy1jb21tZW50cy5oIGJhY2tzbGFzaC1uZXdsaW5lcy5oIG9sZHN0eWxlLWNhc3Rz LmggXAorICAgICAgICAgICAgc2xvdHMtd2l0aC12b2lkLXRlbXBsYXRlLmggcWludm9rYWJsZS5o IG5hbWVzcGFjZWQtZmxhZ3MuaCB0cmlncmFwaHMuaCBcCisgICAgICAgICAgICBlc2NhcGVzLWlu LXN0cmluZy1saXRlcmFscy5oIGNzdHlsZS1lbnVtcy5oIHFwcml2YXRlc2xvdHMuaCBnYWRnZXR3 aXRobm9lbnVtcy5oIFwKKy0gICAgICAgICAgIGRpci1pbi1pbmNsdWRlLXBhdGguaCBzaW5nbGVf ZnVuY3Rpb25fa2V5d29yZC5oIHRhc2sxOTI1NTIuaCB0YXNrMTg5OTk2LmggXAorKyAgICAgICAg ICAgZGlyLWluLWluY2x1ZGUtcGF0aC5oIHNpbmdsZV9mdW5jdGlvbl9rZXl3b3JkLmggdGFzazE5 MjU1Mi5oIFwKKyAgICAgICAgICAgIHRhc2syMzQ5MDkuaCB0YXNrMjQwMzY4LmggcHVyZS12aXJ0 dWFsLXNpZ25hbHMuaCBjeHgxMS1lbnVtcy5oIFwKKyAgICAgICAgICAgIGN4eDExLWZpbmFsLWNs YXNzZXMuaCBcCisgICAgICAgICAgICBjeHgxMS1leHBsaWNpdC1vdmVycmlkZS1jb250cm9sLmgg XAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90YXNrMTg5OTk2Lmgg Yi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdGFzazE4OTk5Ni5oCitkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IGY5NGEwNTFiM2EuLjAwMDAwMDAwMDAKKy0tLSBhL3F0YmFzZS90 ZXN0cy9hdXRvL3Rvb2xzL21vYy90YXNrMTg5OTk2LmgKKysrKyAvZGV2L251bGwKK0BAIC0xLDQ3 ICswLDAgQEAKKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSoqCistKiogQ29weXJpZ2h0IChDKSAy MDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKy0qKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9s aWNlbnNpbmcvCistKioKKy0qKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBv ZiB0aGUgUXQgVG9vbGtpdC4KKy0qKgorLSoqICRRVF9CRUdJTl9MSUNFTlNFOkdQTC1FWENFUFQk CistKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCistKiogTGljZW5zZWVzIGhvbGRpbmcgdmFs aWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorLSoqIGFjY29y ZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRo IHRoZQorLSoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGgg dGhlIHRlcm1zIGNvbnRhaW5lZCBpbgorLSoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5 b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCistKiogYW5kIGNvbmRp dGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVy CistKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQu aW8vY29udGFjdC11cy4KKy0qKgorLSoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdl CistKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VCistKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCistKiogRm91bmRhdGlvbiB3aXRoIGV4Y2VwdGlv bnMgYXMgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMy1FWENFUFQKKy0qKiBpbmNs dWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9s bG93aW5nCistKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorLSoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCistKioKKy0qKiAkUVRfRU5EX0xJQ0VOU0UkCistKioK Ky0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworLS8vIGlubGluZSBmdW5jdGlvbnMgY2FuIGhhdmUgdGhy b3cgZGVjbGFyYXRpb25zCistCistI2lmbmRlZiBUQVNLMTg5OTk2X0gKKy0jZGVmaW5lIFRBU0sx ODk5OTZfSAorLQorLSNpbmNsdWRlIDxRT2JqZWN0PgorLQorLWNsYXNzIElubGluZVNsb3RzV2l0 aFRocm93RGVjbGFyYXRpb24gOiBwdWJsaWMgUU9iamVjdAorLXsKKy0gICAgUV9PQkpFQ1QKKy0K Ky1wdWJsaWMgc2xvdHM6CistICAgIHZvaWQgYSgpIHRocm93KCkgeyB9CistICAgIHZvaWQgYigp IGNvbnN0IHRocm93KCkgeyB9CistICAgIHZvaWQgYygpIHRocm93KCk7CistICAgIHZvaWQgZCgp IHRocm93KGludCkgeyB9CistICAgIHZvaWQgZSgpIGNvbnN0IHRocm93KGludCxkb3VibGUpIHsg fQorLX07CistCistI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMv bW9jL3RzdF9tb2MuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3RzdF9tb2MuY3Bw CitpbmRleCBjNzE2YWVhZDIxLi4xNWRkOWU0MWU1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3Rz L2F1dG8vdG9vbHMvbW9jL3RzdF9tb2MuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by90b29s cy9tb2MvdHN0X21vYy5jcHAKK0BAIC02MzEsNyArNjMxLDYgQEAgcHVibGljOgorIHByaXZhdGUg c2xvdHM6CisgICAgIHZvaWQgaW5pdFRlc3RDYXNlKCk7CisgCistICAgIHZvaWQgc2xvdFdpdGhF eGNlcHRpb24oKSB0aHJvdyhNeVN0cnVjdCk7CisgICAgIHZvaWQgZG9udFN0cmlwTmFtZXNwYWNl cygpOworICAgICB2b2lkIG9sZFN0eWxlQ2FzdHMoKTsKKyAgICAgdm9pZCB3YXJuT25FeHRyYVNp Z25hbFNsb3RRdWFsaWZpYWN0aW9uKCk7CitAQCAtNjczLDcgKzY3Miw2IEBAIHByaXZhdGUgc2xv dHM6CisgICAgIHZvaWQgdGVtcGxhdGVHdEd0KCk7CisgICAgIHZvaWQgcXByaXZhdGVzbG90cygp OworICAgICB2b2lkIHFwcml2YXRlcHJvcGVydGllcygpOworLSAgICB2b2lkIGlubGluZVNsb3Rz V2l0aFRocm93RGVjbGFyYXRpb24oKTsKKyAgICAgdm9pZCB3YXJuT25Qcm9wZXJ0eVdpdGhvdXRS RUFEKCk7CisgICAgIHZvaWQgY29uc3RydWN0b3JzKCk7CisgICAgIHZvaWQgdHlwZW5hbWVXaXRo VW5zaWduZWQoKTsKK0BAIC03ODQsMTIgKzc4Miw2IEBAIHZvaWQgdHN0X01vYzo6aW5pdFRlc3RD YXNlKCkKKyAjZW5kaWYKKyB9CisgCistdm9pZCB0c3RfTW9jOjpzbG90V2l0aEV4Y2VwdGlvbigp IHRocm93KE15U3RydWN0KQorLXsKKy0gICAgLy8gYmUgaGFwcHkKKy0gICAgUVZFUklGWSh0cnVl KTsKKy19CistCisgdm9pZCB0c3RfTW9jOjpkb250U3RyaXBOYW1lc3BhY2VzKCkKKyB7CisgICAg IFNlbmRlciBzZW5kZXI7CitAQCAtODI0LDcgKzgxNiw3IEBAIHZvaWQgdHN0X01vYzo6b2xkU3R5 bGVDYXN0cygpCisgCisgICAgIFFTdHJpbmdMaXN0IGFyZ3M7CisgICAgIGFyZ3MgPDwgIi1jIiA8 PCAiLXgiIDw8ICJjKysiIDw8ICItV29sZC1zdHlsZS1jYXN0IiA8PCAiLUkiIDw8ICIuIgorLSAg ICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8 ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8ICItIjsKKysgICAgICAgICA8PCAiLUkiIDw8IHF0 SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMr KzF6IiA8PCAiLSI7CisgICAgIHByb2Muc3RhcnQoImdjYyIsIGFyZ3MpOworICAgICBRVkVSSUZZ KHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7CisgICAgIHByb2Mud3JpdGUobW9jT3V0KTsKK0BAIC04 OTQsNyArODg2LDcgQEAgdm9pZCB0c3RfTW9jOjppbnB1dEZpbGVOYW1lV2l0aERvdHNCdXROb0V4 dGVuc2lvbigpCisgCisgICAgIFFTdHJpbmdMaXN0IGFyZ3M7CisgICAgIGFyZ3MgPDwgIi1jIiA8 PCAiLXgiIDw8ICJjKysiIDw8ICItSSIgPDwgIi4uIgorLSAgICAgICAgIDw8ICItSSIgPDwgcXRJ bmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9Yysr MTEiIDw8ICItIjsKKysgICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8 PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8PCAiLSI7CisgICAgIHBy b2Muc3RhcnQoImdjYyIsIGFyZ3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQo KSk7CisgICAgIHByb2Mud3JpdGUobW9jT3V0KTsKK0BAIC0xMTc0LDcgKzExNjYsNyBAQCB2b2lk IHRzdF9Nb2M6Omlnbm9yZU9wdGlvbkNsYXNoZXMoKQorICAgICBRU3RyaW5nTGlzdCBnY2NBcmdz OworICAgICBnY2NBcmdzIDw8ICItYyIgPDwgIi14IiA8PCAiYysrIiA8PCAiLUkiIDw8ICIuLiIK KyAgICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1JIiA8PCBpbmNsdWRlRGly IDw8ICItbyIgPDwgIi9kZXYvbnVsbCIKKy0gICAgICAgICA8PCAiLWZQSUMiIDw8ICItc3RkPWMr KzExIiA8PCAgIi0iOworKyAgICAgICAgIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMXoiIDw8ICAi LSI7CisgICAgIHByb2Muc3RhcnQoImdjYyIsIGdjY0FyZ3MpOworICAgICBRVkVSSUZZKHByb2Mu d2FpdEZvclN0YXJ0ZWQoKSk7CisgICAgIHByb2Mud3JpdGUobW9jT3V0KTsKK0BAIC0xNTkzLDIx ICsxNTg1LDYgQEAgdm9pZCB0c3RfTW9jOjpxcHJpdmF0ZXByb3BlcnRpZXMoKQorIAorIH0KKyAK Ky0jaW5jbHVkZSAidGFzazE4OTk5Ni5oIgorLQorLXZvaWQgSW5saW5lU2xvdHNXaXRoVGhyb3dE ZWNsYXJhdGlvbjo6YygpIHRocm93KCkge30KKy0KKy12b2lkIHRzdF9Nb2M6OmlubGluZVNsb3Rz V2l0aFRocm93RGVjbGFyYXRpb24oKQorLXsKKy0gICAgSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNs YXJhdGlvbiB0c3Q7CistICAgIGNvbnN0IFFNZXRhT2JqZWN0ICptb2JqID0gdHN0Lm1ldGFPYmpl Y3QoKTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgiYSgpIikgIT0gLTEpOworLSAg ICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90KCJiKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlko bW9iai0+aW5kZXhPZlNsb3QoImMoKSIpICE9IC0xKTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRl eE9mU2xvdCgiZCgpIikgIT0gLTEpOworLSAgICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90KCJl KCkiKSAhPSAtMSk7CistfQorLQorIHZvaWQgdHN0X01vYzo6d2Fybk9uUHJvcGVydHlXaXRob3V0 UkVBRCgpCisgeworICNpZmRlZiBNT0NfQ1JPU1NfQ09NUElMRUQKK0BAIC0xODY5LDcgKzE4NDYs NyBAQCB2b2lkIHRzdF9Nb2M6Om5vdGlmeUVycm9yKCkKKyAKKyAgICAgUVN0cmluZ0xpc3QgYXJn czsKKyAgICAgYXJncyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1JIiA8PCAiLiIKKy0g ICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8 PCAiLWZQSUMiIDw8ICItc3RkPWMrKzExIiA8PCAiLSI7CisrICAgICAgICAgPDwgIi1JIiA8PCBx dEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1j KysxeiIgPDwgIi0iOworICAgICBwcm9jLnN0YXJ0KCJnY2MiLCBhcmdzKTsKKyAgICAgUVZFUklG WShwcm9jLndhaXRGb3JTdGFydGVkKCkpOworICAgICBwcm9jLndyaXRlKG1vY091dCk7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcv dHN0X3FoZWFkZXJ2aWV3LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdz L3FoZWFkZXJ2aWV3L3RzdF9xaGVhZGVydmlldy5jcHAKK2luZGV4IGMzNTVlZTk2NjUuLjg4YzA5 ZGU4ZTAgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9x aGVhZGVydmlldy90c3RfcWhlYWRlcnZpZXcuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL2l0ZW12aWV3cy9xaGVhZGVydmlldy90c3RfcWhlYWRlcnZpZXcuY3BwCitAQCAtMjUx LDYgKzI1MSw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgdGVzdFJlc2V0Q2FjaGVkU2l6 ZUhpbnQoKTsKKyAgICAgdm9pZCBzdGF0dXNUaXBzKCk7CisgICAgIHZvaWQgdGVzdFJlbW92aW5n Q29sdW1uc1ZpYUxheW91dENoYW5nZWQoKTsKKysgICAgdm9pZCB0ZXN0TW9kZWxNb3ZpbmdDb2x1 bW5zKCk7CisgCisgcHJvdGVjdGVkOgorICAgICB2b2lkIHNldHVwVGVzdERhdGEoYm9vbCB1c2Vf cmVzZXRfbW9kZWwgPSBmYWxzZSk7CitAQCAtMzYwLDYgKzM2MSwxMiBAQCBwdWJsaWM6CisgICAg ICAgICBlbmRSZW1vdmVDb2x1bW5zKCk7CisgICAgIH0KKyAKKysgICAgdm9pZCBtb3ZlQ29sdW1u KGludCBmcm9tLCBpbnQgdG8pCisrICAgIHsKKysgICAgICAgIGJlZ2luTW92ZUNvbHVtbnMoUU1v ZGVsSW5kZXgoKSwgZnJvbSwgZnJvbSwgUU1vZGVsSW5kZXgoKSwgdG8pOworKyAgICAgICAgZW5k TW92ZUNvbHVtbnMoKTsKKysgICAgfQorKworICAgICB2b2lkIGNsZWFudXAoKQorICAgICB7Cisg ICAgICAgICBlbWl0IGxheW91dEFib3V0VG9CZUNoYW5nZWQoKTsKK0BAIC0zNjI3LDUgKzM2MzQs MTggQEAgdm9pZCB0c3RfUUhlYWRlclZpZXc6OnRlc3RSZW1vdmluZ0NvbHVtbnNWaWFMYXlvdXRD aGFuZ2VkKCkKKyAgICAgLy8gVGhlIG1haW4gcG9pbnQgb2YgdGhpcyB0ZXN0IGlzIHRoYXQgdGhl IHNlY3Rpb24tc2l6ZSByZXN0b3JpbmcgY29kZSBkaWRuJ3QgZ28gb3V0IG9mIGJvdW5kcy4KKyB9 CisgCisrdm9pZCB0c3RfUUhlYWRlclZpZXc6OnRlc3RNb2RlbE1vdmluZ0NvbHVtbnMoKQorK3sK KysgICAgUXRUZXN0TW9kZWwgbW9kZWwoMTAsIDEwKTsKKysgICAgUUhlYWRlclZpZXcgaHYoUXQ6 Okhvcml6b250YWwpOworKyAgICBodi5zZXRNb2RlbCgmbW9kZWwpOworKyAgICBodi5yZXNpemVT ZWN0aW9ucyhRSGVhZGVyVmlldzo6UmVzaXplVG9Db250ZW50cyk7CisrICAgIGh2LnNob3coKTsK KysKKysgICAgUVBlcnNpc3RlbnRNb2RlbEluZGV4IGluZGV4MyA9IG1vZGVsLmluZGV4KDAsIDMp OworKyAgICBtb2RlbC5tb3ZlQ29sdW1uKDMsIDEpOworKyAgICBRQ09NUEFSRShpbmRleDMuY29s dW1uKCksIDEpOworK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RSGVhZGVyVmlldykKKyAjaW5jbHVk ZSAidHN0X3FoZWFkZXJ2aWV3Lm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3L3RzdF9xdGFibGV2aWV3LmNwcCBiL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3Bw CitpbmRleCA3NjEzNTdiMjUyLi4wNmJiNzA2MDc0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3Rz L2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy90c3RfcXRhYmxldmlldy5jcHAKKysr KyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcvdHN0X3F0 YWJsZXZpZXcuY3BwCitAQCAtMzk3LDYgKzM5Nyw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZv aWQgY2hlY2tIZWFkZXJNaW5TaXplKCk7CisgCisgICAgIHZvaWQgcmVzaXplVG9Db250ZW50cygp OworKyAgICB2b2lkIHJlc2l6ZVRvQ29udGVudHNTcGFucygpOworIAorICAgICB2b2lkIHRhYkZv Y3VzKCk7CisgICAgIHZvaWQgYmlnTW9kZWwoKTsKK0BAIC0zNzIxLDYgKzM3MjIsNzAgQEAgdm9p ZCB0c3RfUVRhYmxlVmlldzo6cmVzaXplVG9Db250ZW50cygpCisgCisgfQorIAorKworK2NsYXNz IFNwYW5Nb2RlbCA6IHB1YmxpYyBRQWJzdHJhY3RUYWJsZU1vZGVsCisreworK3B1YmxpYzoKKysg ICAgU3Bhbk1vZGVsKGJvb2wgc2VjdGlvbnNNb3ZlZCkKKysgICAgICAgIDogX3NlY3Rpb25zTW92 ZWQoc2VjdGlvbnNNb3ZlZCkKKysgICAge30KKysgICAgaW50IGNvbHVtbkNvdW50KGNvbnN0IFFN b2RlbEluZGV4ICYgPSB7fSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMjsgfQorKyAgICBpbnQg cm93Q291bnQoY29uc3QgUU1vZGVsSW5kZXggJiA9IHt9KSBjb25zdCBvdmVycmlkZSB7IHJldHVy biAxOyB9CisrICAgIFFWYXJpYW50IGRhdGEoY29uc3QgUU1vZGVsSW5kZXggJmlkeCwgaW50IHJv bGUgPSBRdDo6RGlzcGxheVJvbGUpIGNvbnN0IG92ZXJyaWRlCisrICAgIHsKKysgICAgICAgIGlm IChyb2xlICE9IFF0OjpEaXNwbGF5Um9sZSkKKysgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQo KTsKKysgICAgICAgIGNvbnN0IGludCBjb2wgPSBfc2VjdGlvbnNNb3ZlZCA/IDEgLSBpZHguY29s dW1uKCkgOiBpZHguY29sdW1uKCk7CisrICAgICAgICBpZiAoY29sID09IDApCisrICAgICAgICAg ICAgcmV0dXJuICJMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlz Y2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQg ZG9sb3JlIG1hZ25hIGFsaXF1YS4iOworKyAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisrICAg IH0KKytwcml2YXRlOgorKyAgICBib29sIF9zZWN0aW9uc01vdmVkOworK307CisrCisrCisrdm9p ZCB0c3RfUVRhYmxlVmlldzo6cmVzaXplVG9Db250ZW50c1NwYW5zKCkKKyt7CisrICAgIFNwYW5N b2RlbCBtb2RlbDEoZmFsc2UpOworKyAgICBTcGFuTW9kZWwgbW9kZWwyKHRydWUpOworKyAgICBR VGFibGVWaWV3IHZpZXcxLCB2aWV3MiwgdmlldzM7CisrICAgIHZpZXcxLnNldE1vZGVsKCZtb2Rl bDEpOworKyAgICB2aWV3Mi5zZXRNb2RlbCgmbW9kZWwyKTsKKysgICAgdmlldzIuaG9yaXpvbnRh bEhlYWRlcigpLT5tb3ZlU2VjdGlvbigwLCAxKTsKKysgICAgdmlldzMuc2V0TW9kZWwoJm1vZGVs MSk7CisrCisrICAgIHZpZXcxLnNldFNwYW4oMCwgMCwgMSwgMik7CisrICAgIHZpZXcyLnNldFNw YW4oMCwgMSwgMSwgMik7CisrICAgIHZpZXcxLnNob3coKTsKKysgICAgdmlldzIuc2hvdygpOwor KyAgICB2aWV3My5zaG93KCk7CisrICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhw b3NlZCgmdmlldzEpKTsKKysgICAgUVZFUklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2Vk KCZ2aWV3MikpOworKyAgICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZp ZXczKSk7CisrICAgIHZpZXcxLnNldENvbHVtbldpZHRoKDAsIDEwMCk7CisrICAgIHZpZXcxLnNl dENvbHVtbldpZHRoKDEsIDEwMCk7CisrICAgIHZpZXcyLnNldENvbHVtbldpZHRoKDAsIDEwMCk7 CisrICAgIHZpZXcyLnNldENvbHVtbldpZHRoKDEsIDEwMCk7CisrICAgIHZpZXczLnNldENvbHVt bldpZHRoKDAsIDIwMCk7CisrCisrICAgIHZpZXcxLnJlc2l6ZVJvd1RvQ29udGVudHMoMCk7Cisr ICAgIHZpZXcyLnJlc2l6ZVJvd1RvQ29udGVudHMoMCk7CisrICAgIHZpZXczLnJlc2l6ZVJvd1Rv Q29udGVudHMoMCk7CisrICAgIFFDT01QQVJFKHZpZXcxLnJvd0hlaWdodCgwKSwgdmlldzMucm93 SGVpZ2h0KDApKTsKKysgICAgUUNPTVBBUkUodmlldzIucm93SGVpZ2h0KDApLCB2aWV3My5yb3dI ZWlnaHQoMCkpOworKworKyAgICB2aWV3My5yZXNpemVDb2x1bW5Ub0NvbnRlbnRzKDApOworKyAg ICB2aWV3My5yZXNpemVSb3dUb0NvbnRlbnRzKDApOworKyAgICAvLyBoZWlnaHQgc2hvdWxkIGJl IG9ubHkgMSB0ZXh0IGxpbmUgZm9yIGVhc3kgdGVzdGluZworKyAgICB2aWV3MS5zZXRSb3dIZWln aHQoMCwgdmlldzMudmVydGljYWxIZWFkZXIoKS0+c2VjdGlvblNpemUoMCkpOworKyAgICB2aWV3 Mi5zZXRSb3dIZWlnaHQoMCwgdmlldzMudmVydGljYWxIZWFkZXIoKS0+c2VjdGlvblNpemUoMCkp OworKyAgICB2aWV3MS5yZXNpemVDb2x1bW5Ub0NvbnRlbnRzKDApOworKyAgICB2aWV3Mi5yZXNp emVDb2x1bW5Ub0NvbnRlbnRzKDEpOworKyAgICBRQ09NUEFSRSh2aWV3MS5jb2x1bW5XaWR0aCgw KSwgdmlldzMuY29sdW1uV2lkdGgoMCkgLSB2aWV3MS5jb2x1bW5XaWR0aCgxKSk7CisrICAgIFFD T01QQVJFKHZpZXcyLmNvbHVtbldpZHRoKDApLCB2aWV3My5jb2x1bW5XaWR0aCgwKSAtIHZpZXcy LmNvbHVtbldpZHRoKDEpKTsKKyt9CisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgZXh0ZXJuIGJv b2wgUV9XSURHRVRTX0VYUE9SVCBxdF90YWJfYWxsX3dpZGdldHMoKTsgLy8gcWFwcGxpY2F0aW9u LmNwcAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL2tlcm5lbC9xYXBwbGljYXRpb24vdHN0X3FhcHBsaWNhdGlvbi5jcHAgYi9xdGJhc2Uv dGVzdHMvYXV0by93aWRnZXRzL2tlcm5lbC9xYXBwbGljYXRpb24vdHN0X3FhcHBsaWNhdGlvbi5j cHAKK2luZGV4IGEzYjhlZjc4ZDguLjQ5NTVjZWJkNWQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVz dHMvYXV0by93aWRnZXRzL2tlcm5lbC9xYXBwbGljYXRpb24vdHN0X3FhcHBsaWNhdGlvbi5jcHAK KysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90c3Rf cWFwcGxpY2F0aW9uLmNwcAorQEAgLTE0OTgsNyArMTQ5OCw3IEBAIHZvaWQgdHN0X1FBcHBsaWNh dGlvbjo6ZGVza3RvcFNldHRpbmdzQXdhcmUoKQorICAgICBlbnZpcm9ubWVudCArPSBRTGF0aW4x U3RyaW5nKCJRVF9NQUNfRElTQUJMRV9GT1JFR1JPVU5EX0FQUExJQ0FUSU9OX1RSQU5TRk9STT0x Iik7CisgICAgIHRlc3RQcm9jZXNzLnNldEVudmlyb25tZW50KGVudmlyb25tZW50KTsKKyAjZW5k aWYKKy0gICAgdGVzdFByb2Nlc3Muc3RhcnQoImRlc2t0b3BzZXR0aW5nc2F3YXJlX2hlbHBlciIp OworKyAgICB0ZXN0UHJvY2Vzcy5zdGFydCgiLi9kZXNrdG9wc2V0dGluZ3Nhd2FyZV9oZWxwZXIi KTsKKyAgICAgUVZFUklGWTIodGVzdFByb2Nlc3Mud2FpdEZvclN0YXJ0ZWQoKSwKKyAgICAgICAg ICAgICAgcVByaW50YWJsZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJDYW5ub3Qgc3RhcnQgJ2Rlc2t0 b3BzZXR0aW5nc2F3YXJlX2hlbHBlcic6ICUxIikuYXJnKHRlc3RQcm9jZXNzLmVycm9yU3RyaW5n KCkpKSk7CisgICAgIFFWRVJJRlkodGVzdFByb2Nlc3Mud2FpdEZvckZpbmlzaGVkKDEwMDAwKSk7 CitAQCAtMjQ1Miw3ICsyNDUyLDcgQEAgdm9pZCB0c3RfUUFwcGxpY2F0aW9uOjpxdGJ1Z18xMjY3 MygpCisgI2lmIFFUX0NPTkZJRyhwcm9jZXNzKQorICAgICBRUHJvY2VzcyB0ZXN0UHJvY2VzczsK KyAgICAgUVN0cmluZ0xpc3QgYXJndW1lbnRzOworLSAgICB0ZXN0UHJvY2Vzcy5zdGFydCgibW9k YWxfaGVscGVyIiwgYXJndW1lbnRzKTsKKysgICAgdGVzdFByb2Nlc3Muc3RhcnQoIi4vbW9kYWxf aGVscGVyIiwgYXJndW1lbnRzKTsKKyAgICAgUVZFUklGWTIodGVzdFByb2Nlc3Mud2FpdEZvclN0 YXJ0ZWQoKSwKKyAgICAgICAgICAgICAgcVByaW50YWJsZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJD YW5ub3Qgc3RhcnQgJ21vZGFsX2hlbHBlcic6ICUxIikuYXJnKHRlc3RQcm9jZXNzLmVycm9yU3Ry aW5nKCkpKSk7CisgICAgIFFWRVJJRlkodGVzdFByb2Nlc3Mud2FpdEZvckZpbmlzaGVkKDIwMDAw KSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0 cmFjdGJ1dHRvbi90c3RfcWFic3RyYWN0YnV0dG9uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAKK2lu ZGV4IGViMTA4YTQwZGUuLmRjYTU1MjhjMWIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0 by93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0b24uY3Bw CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9u L3RzdF9xYWJzdHJhY3RidXR0b24uY3BwCitAQCAtNDEsNiArNDEsNyBAQAorIAorICNpbmNsdWRl IDxwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmg+CisgI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1p bnRlZ3JhdGlvbi5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAKKyBjbGFz cyB0c3RfUUFic3RyYWN0QnV0dG9uIDogcHVibGljIFFPYmplY3QKKyB7CitAQCAtNzYsNiArNzcs OCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGtleU5hdmlnYXRpb24oKTsKKyAjZW5kaWYK KyAKKysgICAgdm9pZCBidXR0b25QcmVzc0tleXMoKTsKKysKKyBwcm90ZWN0ZWQgc2xvdHM6Cisg ICAgIHZvaWQgb25DbGlja2VkKCk7CisgICAgIHZvaWQgb25Ub2dnbGVkKCBib29sIG9uICk7CitA QCAtMjY5LDcgKzI3MiwxMyBAQCB2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OnNldEF1dG9SZXBl YXQoKQorICAgICAgICAgUUNPTVBBUkUocHJlc3NfY291bnQsIGNsaWNrX2NvdW50KTsKKyAgICAg ICAgIFFWRVJJRlkoY2xpY2tfY291bnQgPiAxKTsKKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNl IDQ6CisrICAgIGNhc2UgNDogeworKyAgICAgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMg PSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVt ZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgICAgIGlmIChidXR0b25Q cmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgICAgICBRU0tJUCgi cGxhdGZvcm0gdGhlbWUgaGFzIEtleV9FbnRlciBpbiBCdXR0b25QcmVzc0tleXMiKTsKKysgICAg ICAgIH0KKyAgICAgICAgIC8vIGNoZWNrIHRoYXQgcHJlc3NpbmcgRU5URVIgaGFzIG5vIGVmZmVj dCB3aGVuIGF1dG9yZXBlYXQgaXMgZmFsc2UKKyAgICAgICAgIHRlc3RXaWRnZXQtPnNldERvd24o IGZhbHNlICk7CisgICAgICAgICB0ZXN0V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCBmYWxzZSApOwor QEAgLTI4Niw3ICsyOTUsMTQgQEAgdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjpzZXRBdXRvUmVw ZWF0KCkKKyAKKyAgICAgICAgIFFWRVJJRlkoIGNsaWNrX2NvdW50ID09IDAgKTsKKyAgICAgICAg IGJyZWFrOworLSAgICBjYXNlIDU6CisrICAgIH0KKysgICAgY2FzZSA1OiB7CisrICAgICAgICBj b25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRm b3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+ PigpOworKyAgICAgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVy KSkgeworKyAgICAgICAgICAgIFFTS0lQKCJwbGF0Zm9ybSB0aGVtZSBoYXMgS2V5X0VudGVyIGlu IEJ1dHRvblByZXNzS2V5cyIpOworKyAgICAgICAgfQorICAgICAgICAgLy8gY2hlY2sgdGhhdCBw cmVzc2luZyBFTlRFUiBoYXMgbm8gZWZmZWN0IHdoZW4gYXV0b3JlcGVhdCBpcyB0cnVlCisgICAg ICAgICB0ZXN0V2lkZ2V0LT5zZXREb3duKCBmYWxzZSApOworICAgICAgICAgdGVzdFdpZGdldC0+ c2V0QXV0b1JlcGVhdCggdHJ1ZSApOworQEAgLTMwNCw2ICszMjAsNyBAQCB2b2lkIHRzdF9RQWJz dHJhY3RCdXR0b246OnNldEF1dG9SZXBlYXQoKQorIAorICAgICAgICAgUVZFUklGWSggY2xpY2tf Y291bnQgPT0gMCApOworICAgICAgICAgYnJlYWs7CisrICAgIH0KKyAgICAgY2FzZSA2OgorICAg ICAgICAgLy8gdmVyaWZ5IGF1dG9yZXBlYXQgaXMgb2ZmIGJ5IGRlZmF1bHQuCisgICAgICAgICBN eUJ1dHRvbiB0bXAoIDApOworQEAgLTY1MSw1ICs2NjgsMTYgQEAgdm9pZCB0c3RfUUFic3RyYWN0 QnV0dG9uOjprZXlOYXZpZ2F0aW9uKCkKKyB9CisgI2VuZGlmCisgCisrdm9pZCB0c3RfUUFic3Ry YWN0QnV0dG9uOjpidXR0b25QcmVzc0tleXMoKQorK3sKKysgICAgY29uc3QgYXV0byBidXR0b25Q cmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9y bVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGZvciAoaW50IGkgPSAw OyBpIDwgYnV0dG9uUHJlc3NLZXlzLmxlbmd0aCgpOyArK2kpIHsKKysgICAgICAgIFFUZXN0Ojpr ZXlDbGljayh0ZXN0V2lkZ2V0LCBidXR0b25QcmVzc0tleXNbaV0pOworKyAgICAgICAgUUNPTVBB UkUoY2xpY2tfY291bnQsIGkgKyAxKTsKKysgICAgfQorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9R QWJzdHJhY3RCdXR0b24pCisgI2luY2x1ZGUgInRzdF9xYWJzdHJhY3RidXR0b24ubW9jIgorZGlm ZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3gvdHN0 X3Fjb21ib2JveC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbWJv Ym94L3RzdF9xY29tYm9ib3guY3BwCitpbmRleCAzMjQzNzA1MGY1Li40NmI1YWY2ZDYzIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC90c3Rf cWNvbWJvYm94LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fj b21ib2JveC90c3RfcWNvbWJvYm94LmNwcAorQEAgLTE2OCw2ICsxNjgsNyBAQCBwcml2YXRlIHNs b3RzOgorICAgICB2b2lkIGNoZWNrTWVudUl0ZW1Qb3NXaGVuU3R5bGVTaGVldElzU2V0KCk7Cisg ICAgIHZvaWQgY2hlY2tFbWJlZGRlZExpbmVFZGl0V2hlblN0eWxlU2hlZXRJc1NldCgpOworICAg ICB2b2lkIHByb3BhZ2F0ZVN0eWxlQ2hhbmdlcygpOworKyAgICB2b2lkIGJ1dHRvblByZXNzS2V5 cygpOworIAorIHByaXZhdGU6CisgICAgIFBsYXRmb3JtSW5wdXRDb250ZXh0IG1fcGxhdGZvcm1J bnB1dENvbnRleHQ7CitAQCAtMTY4Miw2ICsxNjgzLDE2IEBAIHZvaWQgdHN0X1FDb21ib0JveDo6 c2V0TW9kZWwoKQorICAgICBRQ09NUEFSRShib3gucm9vdE1vZGVsSW5kZXgoKSwgcm9vdE1vZGVs SW5kZXgpOworICAgICBib3guc2V0TW9kZWwoYm94Lm1vZGVsKCkpOworICAgICBRQ09NUEFSRShi b3gucm9vdE1vZGVsSW5kZXgoKSwgcm9vdE1vZGVsSW5kZXgpOworKworKyAgICAvLyBjaGVjayB0 aGF0IHNldHRpbmcgdGhlIHNhbWUgbW9kZWwgYXMgdGhlIGNvbXBsZXRlcidzIGRvZXNuJ3QgY3Jh c2gKKysgICAgUUNvbXBsZXRlciAqY29tcGxldGVyID0gbmV3IFFDb21wbGV0ZXIoJmJveCk7Cisr ICAgIGJveC5zZXRFZGl0YWJsZSh0cnVlKTsKKysgICAgYm94LnNldENvbXBsZXRlcihjb21wbGV0 ZXIpOworKyAgICBhdXRvICpsaXN0TW9kZWwgPSBuZXcgUVN0cmluZ0xpc3RNb2RlbCh7ICJvbmUi LCAidHdvIiB9LCBjb21wbGV0ZXIpOworKyAgICBjb21wbGV0ZXItPnNldE1vZGVsKGxpc3RNb2Rl bCk7CisrICAgIFFDT01QQVJFKGxpc3RNb2RlbC0+cm93Q291bnQoKSwgMik7IC8vIG1ha2Ugc3Vy ZSBpdCB3YXNuJ3QgZGVsZXRlZAorKyAgICBib3guc2V0TW9kZWwobGlzdE1vZGVsKTsKKysgICAg UUNPTVBBUkUobGlzdE1vZGVsLT5yb3dDb3VudCgpLCAyKTsgLy8gbWFrZSBzdXJlIGl0IHdhc24n dCBkZWxldGVkCisgfQorIAorIHZvaWQgdHN0X1FDb21ib0JveDo6c2V0Q3VzdG9tTW9kZWxBbmRW aWV3KCkKK0BAIC0zNjMyLDUgKzM2NDMsMjQgQEAgdm9pZCB0c3RfUUNvbWJvQm94Ojpwcm9wYWdh dGVTdHlsZUNoYW5nZXMoKQorICAgICBRVkVSSUZZKGZyYW1lU3R5bGUuaW5xdWlyZWQpOworIH0K KyAKKyt2b2lkIHRzdF9RQ29tYm9Cb3g6OmJ1dHRvblByZXNzS2V5cygpCisreworKyAgICBRQ29t Ym9Cb3ggY29tYm9Cb3g7CisrICAgIGNvbWJvQm94LnNldEVkaXRhYmxlKGZhbHNlKTsKKysgICAg Y29tYm9Cb3guYWRkSXRlbShRU3RyaW5nOjpudW1iZXIoMSkpOworKyAgICBjb21ib0JveC5hZGRJ dGVtKFFTdHJpbmc6Om51bWJlcigyKSk7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlz ID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6 QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGJ1 dHRvblByZXNzS2V5cy5sZW5ndGgoKTsgKytpKSB7CisrICAgICAgICBRVGVzdDo6a2V5Q2xpY2so JmNvbWJvQm94LCBidXR0b25QcmVzc0tleXNbaV0pOworKyAgICAgICAgLy8gT24gc29tZSBwbGF0 Zm9ybXMsIGEgd2luZG93IHdpbGwgbm90IGJlIGltbWVkaWF0ZWx5IHZpc2libGUsCisrICAgICAg ICAvLyBidXQgdGFrZSBzb21lIGV2ZW50LWxvb3AgaXRlcmF0aW9ucyB0byBjb21wbGV0ZS4KKysg ICAgICAgIC8vIFVzaW5nIFFUUllfVkVSSUZZIHRvIGRlYWwgd2l0aCB0aGF0LgorKyAgICAgICAg UVRSWV9WRVJJRlkoY29tYm9Cb3gudmlldygpLT5pc1Zpc2libGUoKSk7CisrICAgICAgICBjb21i b0JveC5oaWRlUG9wdXAoKTsKKysgICAgfQorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RQ29tYm9C b3gpCisgI2luY2x1ZGUgInRzdF9xY29tYm9ib3gubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vcWNvbW1hbmRsaW5r YnV0dG9uLnBybyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxp bmtidXR0b24vcWNvbW1hbmRsaW5rYnV0dG9uLnBybworaW5kZXggYmUzY2ZjZDEwNC4uYzIyOGZk ZmNjYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29t bWFuZGxpbmtidXR0b24vcWNvbW1hbmRsaW5rYnV0dG9uLnBybworKysrIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0 b24ucHJvCitAQCAtMSw2ICsxLDYgQEAKKyBDT05GSUcgKz0gdGVzdGNhc2UKKyBUQVJHRVQgPSB0 c3RfcWNvbW1hbmRsaW5rYnV0dG9uCistUVQgKz0gd2lkZ2V0cyB0ZXN0bGliCisrUVQgKz0gd2lk Z2V0cyB0ZXN0bGliIGd1aS1wcml2YXRlCisgU09VUkNFUyAgKz0gdHN0X3Fjb21tYW5kbGlua2J1 dHRvbi5jcHAKKyAKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dp ZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3RzdF9xY29tbWFuZGxpbmtidXR0b24uY3BwIGIvcXRi YXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNv bW1hbmRsaW5rYnV0dG9uLmNwcAoraW5kZXggMDA0NGQzM2M2Ni4uNGNmMDYyOTZlNCAxMDA2NDQK Ky0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0 b24vdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5j cHAKK0BAIC00MCw2ICs0MCw5IEBACisgI2luY2x1ZGUgPFFHcmlkTGF5b3V0PgorICNpbmNsdWRl IDxRUGFpbnRlcj4KKyAKKysjaW5jbHVkZSA8cHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgor KyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKysKKyBjbGFzcyB0c3RfUUNvbW1hbmRM aW5rQnV0dG9uIDogcHVibGljIFFPYmplY3QKKyB7CisgICAgIFFfT0JKRUNUCitAQCAtMjIzLDYg KzIyNiwxMyBAQCB2b2lkIHRzdF9RQ29tbWFuZExpbmtCdXR0b246OnNldEF1dG9SZXBlYXQoKQor ICAgICAvLyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBubyBlZmZlY3QKKyAgICAgcmVz ZXRDb3VudGVycygpOworICAgICB0ZXN0V2lkZ2V0LT5zZXREb3duKCBmYWxzZSApOworKyAgICAv LyBTa2lwIGFmdGVyIHJlc2V0IGlmIEJ1dHRvblByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAg IGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxh dGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOwor KyAgICBpZiAoYnV0dG9uUHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAg ICAgICByZXR1cm47CisrICAgIH0KKyAgICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCggZmFs c2UgKTsKKyAgICAgUVRlc3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0LCBRdDo6S2V5X0VudGVyICk7 CisgCitAQCAtMjU1LDYgKzI2NSwxNCBAQCB2b2lkIHRzdF9RQ29tbWFuZExpbmtCdXR0b246OnBy ZXNzZWQoKQorICAgICBRQ09NUEFSRSggcHJlc3NfY291bnQsICh1aW50KTEgKTsKKyAgICAgUUNP TVBBUkUoIHJlbGVhc2VfY291bnQsICh1aW50KTEgKTsKKyAKKysgICAgLy8gU2tpcCBpZiBCdXR0 b25QcmVzc0tleXMgaGFzIEtleV9FbnRlcgorKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5 cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6 OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5j b250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisg ICAgIFFUZXN0OjprZXlQcmVzcyggdGVzdFdpZGdldCxRdDo6S2V5X0VudGVyICk7CisgICAgIFFD T01QQVJFKCBwcmVzc19jb3VudCwgKHVpbnQpMSApOworICAgICBRQ09NUEFSRSggcmVsZWFzZV9j b3VudCwgKHVpbnQpMSApOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMv d2lkZ2V0cy9xZ3JvdXBib3gvcWdyb3VwYm94LnBybyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdl dHMvd2lkZ2V0cy9xZ3JvdXBib3gvcWdyb3VwYm94LnBybworaW5kZXggNGE1ZTc2ZmY2NS4uYTIz NWZhMWZhYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9x Z3JvdXBib3gvcWdyb3VwYm94LnBybworKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93 aWRnZXRzL3Fncm91cGJveC9xZ3JvdXBib3gucHJvCitAQCAtMSw2ICsxLDYgQEAKKyBDT05GSUcg Kz0gdGVzdGNhc2UKKyBUQVJHRVQgPSB0c3RfcWdyb3VwYm94CistUVQgKz0gd2lkZ2V0cyB0ZXN0 bGliCisrUVQgKz0gd2lkZ2V0cyB0ZXN0bGliIGd1aS1wcml2YXRlCisgU09VUkNFUyAgKz0gdHN0 X3Fncm91cGJveC5jcHAKKyAKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRn ZXRzL3dpZGdldHMvcWdyb3VwYm94L3RzdF9xZ3JvdXBib3guY3BwIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC90c3RfcWdyb3VwYm94LmNwcAoraW5kZXggNGZi NWQyNjJjYS4uZDhkNzU2MmI3MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdl dHMvd2lkZ2V0cy9xZ3JvdXBib3gvdHN0X3Fncm91cGJveC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvdHN0X3Fncm91cGJveC5jcHAKK0BAIC0z NSw2ICszNSw5IEBACisgI2luY2x1ZGUgPFFSYWRpb0J1dHRvbj4KKyAjaW5jbHVkZSA8UURpYWxv Zz4KKyAKKysjaW5jbHVkZSA8cHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRl IDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKysKKyAjaW5jbHVkZSAicWdyb3VwYm94LmgiCisgCisg Y2xhc3MgdHN0X1FHcm91cEJveCA6IHB1YmxpYyBRT2JqZWN0CitAQCAtNjksNiArNzIsNyBAQCBw cml2YXRlIHNsb3RzOgorICAgICB2b2lkIHByb3BhZ2F0ZUZvY3VzKCk7CisgICAgIHZvaWQgdGFz a19RVEJVR18xOTE3MF9pZ25vcmVNb3VzZVJlbGVhc2VFdmVudCgpOworICAgICB2b2lkIHRhc2tf UVRCVUdfMTU1MTlfcHJvcGFnYXRlTW91c2VFdmVudHMoKTsKKysgICAgdm9pZCBidXR0b25QcmVz c0tleXMoKTsKKyAKKyBwcml2YXRlOgorICAgICBib29sIGNoZWNrZWQ7CitAQCAtNjEwLDYgKzYx NCwyMCBAQCB2b2lkIHRzdF9RR3JvdXBCb3g6OnRhc2tfUVRCVUdfMTU1MTlfcHJvcGFnYXRlTW91 c2VFdmVudHMoKQorICAgICBRQ09NUEFSRShwYXJlbnQubW91c2VNb3ZlZCwgdHJ1ZSk7CisgfQor IAorK3ZvaWQgdHN0X1FHcm91cEJveDo6YnV0dG9uUHJlc3NLZXlzKCkKKyt7CisrICAgIFFHcm91 cEJveCBncm91cEJveDsKKysgICAgZ3JvdXBCb3guc2V0Q2hlY2thYmxlKHRydWUpOworKyAgICBR U2lnbmFsU3B5IGNsaWNrZWRTcHkoJmdyb3VwQm94LCAmUUdyb3VwQm94OjpjbGlja2VkKTsKKysg ICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpw bGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7 CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYnV0dG9uUHJlc3NLZXlzLmxlbmd0aCgpOyArK2kp IHsKKysgICAgICAgIFFUZXN0OjprZXlDbGljaygmZ3JvdXBCb3gsIGJ1dHRvblByZXNzS2V5c1tp XSk7CisrICAgICAgICBRQ09NUEFSRShjbGlja2VkU3B5Lmxlbmd0aCgpLCBpICsgMSk7CisrICAg IH0KKyt9CisrCisgdm9pZCB0c3RfUUdyb3VwQm94OjpzZW5kTW91c2VNb3ZlRXZlbnQoUVdpZGdl dCAqd2lkZ2V0LCBjb25zdCBRUG9pbnQgJmxvY2FsUG9zKQorIHsKKyAgICAgLy8gU2VuZCBhIE1v dXNlTW92ZSBldmVudCB3aXRob3V0IGFjdHVhbGx5IG1vdmluZyB0aGUgcG9pbnRlcgorZGlmZiAt LWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi9xcHVz aGJ1dHRvbi5wcm8gYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0 b24vcXB1c2hidXR0b24ucHJvCitpbmRleCAzNTNhZDA2Y2EyLi5lNTVmNjE0OGYyIDEwMDY0NAor LS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3FwdXNo YnV0dG9uLnBybworKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNo YnV0dG9uL3FwdXNoYnV0dG9uLnBybworQEAgLTEsNiArMSw2IEBACisgQ09ORklHICs9IHRlc3Rj YXNlCisgVEFSR0VUID0gdHN0X3FwdXNoYnV0dG9uCistUVQgKz0gd2lkZ2V0cyB0ZXN0bGliCisr UVQgKz0gd2lkZ2V0cyB0ZXN0bGliIGd1aS1wcml2YXRlCisgU09VUkNFUyAgKz0gdHN0X3FwdXNo YnV0dG9uLmNwcAorIAorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMv d2lkZ2V0cy9xcHVzaGJ1dHRvbi90c3RfcXB1c2hidXR0b24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAKK2luZGV4 IGU4MTg1MTRhNzkuLjQwNDNlOTMyNmEgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93 aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vdHN0X3FwdXNoYnV0dG9uLmNwcAorKysrIGIvcXRi YXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVzaGJ1dHRv bi5jcHAKK0BAIC00MSw2ICs0MSw5IEBACisgI2luY2x1ZGUgPFFTdHlsZUZhY3Rvcnk+CisgI2lu Y2x1ZGUgPFFUYWJXaWRnZXQ+CisgCisrI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9u X3AuaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisrCisgY2xhc3MgdHN0X1FQ dXNoQnV0dG9uIDogcHVibGljIFFPYmplY3QKKyB7CisgUV9PQkpFQ1QKK0BAIC0yMTIsNiArMjE1 LDEzIEBAIHZvaWQgdHN0X1FQdXNoQnV0dG9uOjphdXRvUmVwZWF0KCkKKyAgICAgLy8gY2hlY2sg dGhhdCBwcmVzc2luZyBFTlRFUiBoYXMgbm8gZWZmZWN0CisgICAgIHJlc2V0Q291bnRlcnMoKTsK KyAgICAgdGVzdFdpZGdldC0+c2V0RG93biggZmFsc2UgKTsKKysgICAgLy8gU2tpcCBhZnRlciBy ZXNldCBpZiBCdXR0b25QcmVzc0tleXMgaGFzIEtleV9FbnRlcgorKyAgICBjb25zdCBhdXRvIGJ1 dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBs YXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRv blByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgcmV0dXJuOwor KyAgICB9CisgICAgIHRlc3RXaWRnZXQtPnNldEF1dG9SZXBlYXQoIGZhbHNlICk7CisgICAgIFFU ZXN0OjprZXlQcmVzcyggdGVzdFdpZGdldCwgUXQ6OktleV9FbnRlciApOworIAorQEAgLTI0Nyw2 ICsyNTcsMTQgQEAgdm9pZCB0c3RfUVB1c2hCdXR0b246OnByZXNzZWQoKQorICAgICBRQ09NUEFS RSggcHJlc3NfY291bnQsICh1aW50KTEgKTsKKyAgICAgUUNPTVBBUkUoIHJlbGVhc2VfY291bnQs ICh1aW50KTEgKTsKKyAKKysgICAgLy8gU2tpcCBpZiBCdXR0b25QcmVzc0tleXMgaGFzIEtleV9F bnRlcgorKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblBy aXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6 S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVy KSkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisgICAgIFFUZXN0OjprZXlQcmVzcygg dGVzdFdpZGdldCxRdDo6S2V5X0VudGVyICk7CisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwg KHVpbnQpMSApOworICAgICBRQ09NUEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworZGlm ZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9tYW51YWwvcmhpL2N1YmVtYXBfcmVuZGVyL2J1aWxkc2hh ZGVyLmJhdCBiL3F0YmFzZS90ZXN0cy9tYW51YWwvcmhpL2N1YmVtYXBfcmVuZGVyL2J1aWxkc2hh ZGVyLmJhdAorb2xkIG1vZGUgMTAwNzU1CituZXcgbW9kZSAxMDA2NDQKK1N1Ym1vZHVsZSBxdGNv bm5lY3Rpdml0eSBlOTU3ZDQ4MS4uMDU2Mjk0YzA6CitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZp dHkvc3JjL2JsdWV0b290aC9ibHVlei9oY2ltYW5hZ2VyLmNwcCBiL3F0Y29ubmVjdGl2aXR5L3Ny Yy9ibHVldG9vdGgvYmx1ZXovaGNpbWFuYWdlci5jcHAKK2luZGV4IGUyNjM1ZmFlLi5hOGI4ZTNi OSAxMDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXovaGNpbWFu YWdlci5jcHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXovaGNpbWFu YWdlci5jcHAKK0BAIC01NjMsOSArNTYzLDExIEBAIHZvaWQgSGNpTWFuYWdlcjo6aGFuZGxlSGNp QWNsUGFja2V0KGNvbnN0IHF1aW50OCAqZGF0YSwgaW50IHNpemUpCisgCisgdm9pZCBIY2lNYW5h Z2VyOjpoYW5kbGVMZU1ldGFFdmVudChjb25zdCBxdWludDggKmRhdGEpCisgeworLSAgICAvLyBT cGVjIHY0LjIsIFZvbCAyLCBwYXJ0IEUsIDcuNy42NWZmCisrICAgIC8vIFNwZWMgdjUuMywgVm9s IDQsIHBhcnQgRSwgNy43LjY1LioKKyAgICAgc3dpdGNoICgqZGF0YSkgeworLSAgICBjYXNlIDB4 MTogeworKyAgICBjYXNlIDB4MTogLy8gSENJX0xFX0Nvbm5lY3Rpb25fQ29tcGxldGUKKysgICAg Y2FzZSAweEE6IC8vIEhDSV9MRV9FbmhhbmNlZF9Db25uZWN0aW9uX0NvbXBsZXRlCisrICAgIHsK KyAgICAgICAgIGNvbnN0IHF1aW50MTYgaGFuZGxlID0gYnRfZ2V0X2xlMTYoZGF0YSArIDIpOwor ICAgICAgICAgZW1pdCBjb25uZWN0aW9uQ29tcGxldGUoaGFuZGxlKTsKKyAgICAgICAgIGJyZWFr OworZGlmZiAtLWdpdCBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNl cnZpY2VkaXNjb3ZlcnlhZ2VudF9ibHVlei5jcHAgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRv b3RoL3FibHVldG9vdGhzZXJ2aWNlZGlzY292ZXJ5YWdlbnRfYmx1ZXouY3BwCitpbmRleCA2YTkz MTQzYi4uNGExOGNmYzcgMTAwNjQ0CistLS0gYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3Ro L3FibHVldG9vdGhzZXJ2aWNlZGlzY292ZXJ5YWdlbnRfYmx1ZXouY3BwCisrKysgYi9xdGNvbm5l Y3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzZXJ2aWNlZGlzY292ZXJ5YWdlbnRfYmx1 ZXouY3BwCitAQCAtMzIwLDcgKzMyMCwxMCBAQCB2b2lkIFFCbHVldG9vdGhTZXJ2aWNlRGlzY292 ZXJ5QWdlbnRQcml2YXRlOjpfcV9maW5pc2hTZHBTY2FuKFFCbHVldG9vdGhTZXJ2aWNlRAorICAg ICAgICAgICAgIGZvciAoY29uc3QgUUJsdWV0b290aFV1aWQgJmlkIDogc2VydmljZUNsYXNzVXVp ZHMpIHsKKyAgICAgICAgICAgICAgICAgaWYgKGlkLm1pbmltdW1TaXplKCkgPT0gMTYpIHsKKyAg ICAgICAgICAgICAgICAgICAgIHNlcnZpY2VJbmZvLnNldFNlcnZpY2VVdWlkKGlkKTsKKy0gICAg ICAgICAgICAgICAgICAgIHNlcnZpY2VJbmZvLnNldFNlcnZpY2VOYW1lKFFCbHVldG9vdGhTZXJ2 aWNlRGlzY292ZXJ5QWdlbnQ6OnRyKCJDdXN0b20gU2VydmljZSIpKTsKKysgICAgICAgICAgICAg ICAgICAgIGlmIChzZXJ2aWNlSW5mby5zZXJ2aWNlTmFtZSgpLmlzRW1wdHkoKSkgeworKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlcnZpY2VJbmZvLnNldFNlcnZpY2VOYW1lKAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdl bnQ6OnRyKCJDdXN0b20gU2VydmljZSIpKTsKKysgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgICAgIFFCbHVldG9vdGhTZXJ2aWNlSW5mbzo6U2VxdWVuY2UgbW9kU2VxID0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZUluZm8uYXR0cmlidXRlKFFCbHVl dG9vdGhTZXJ2aWNlSW5mbzo6U2VydmljZUNsYXNzSWRzKS52YWx1ZTxRQmx1ZXRvb3RoU2Vydmlj ZUluZm86OlNlcXVlbmNlPigpOworICAgICAgICAgICAgICAgICAgICAgbW9kU2VxLnJlbW92ZU9u ZShRVmFyaWFudDo6ZnJvbVZhbHVlKGlkKSk7CitAQCAtMzM0LDggKzMzNywxMCBAQCB2b2lkIFFC bHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnRQcml2YXRlOjpfcV9maW5pc2hTZHBTY2FuKFFC bHVldG9vdGhTZXJ2aWNlRAorICAgICAgICAgICAgICAgICBxQ0RlYnVnKFFUX0JUX0JMVUVaKSA8 PCAiRGlzY292ZXJlZCBzZXJ2aWNlcyIgPDwgZGlzY292ZXJlZERldmljZXMuYXQoMCkuYWRkcmVz cygpLnRvU3RyaW5nKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg c2VydmljZUluZm8uc2VydmljZU5hbWUoKSA8PCBzZXJ2aWNlSW5mby5zZXJ2aWNlVXVpZCgpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICI+Pj4iIDw8IHNlcnZpY2VJ bmZvLnNlcnZpY2VDbGFzc1V1aWRzKCk7CistCistICAgICAgICAgICAgICAgIGVtaXQgcS0+c2Vy dmljZURpc2NvdmVyZWQoc2VydmljZUluZm8pOworKyAgICAgICAgICAgICAgICAvLyBVc2UgcXVl dWVkIGNvbm5lY3Rpb24gdG8gYWxsb3cgdXMgZmluaXNoIHRoZSBzZXJ2aWNlIGxvb3Bpbmc7IHRo ZSBhcHBsaWNhdGlvbgorKyAgICAgICAgICAgICAgICAvLyBtaWdodCBjYWxsIHN0b3AoKSB3aGVu IGl0IGhhcyBkZXRlY3RlZCB0aGUgc2VydmljZS1vZi1pbnRlcmVzdC4KKysgICAgICAgICAgICAg ICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZChxLCAic2VydmljZURpc2NvdmVyZWQiLCBRdDo6 UXVldWVkQ29ubmVjdGlvbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRX0FSRyhRQmx1ZXRvb3RoU2VydmljZUluZm8sIHNlcnZpY2VJbmZvKSk7CisgICAgICAg ICAgICAgfQorICAgICAgICAgfQorICAgICB9CitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkv c3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0LmNwcCBiL3F0Y29ubmVjdGl2aXR5L3NyYy9i bHVldG9vdGgvcWJsdWV0b290aHNvY2tldC5jcHAKK2luZGV4IGU0ZDg1NDQ3Li5hYWRkNDc1NSAx MDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tl dC5jcHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tl dC5jcHAKK0BAIC01OTMsNyArNTkzLDcgQEAgdm9pZCBRQmx1ZXRvb3RoU29ja2V0OjpzZXRTb2Nr ZXRTdGF0ZShRQmx1ZXRvb3RoU29ja2V0OjpTb2NrZXRTdGF0ZSBzdGF0ZSkKKyBib29sIFFCbHVl dG9vdGhTb2NrZXQ6OmNhblJlYWRMaW5lKCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBRQmx1 ZXRvb3RoU29ja2V0QmFzZSk7CistICAgIHJldHVybiBkLT5jYW5SZWFkTGluZSgpOworKyAgICBy ZXR1cm4gZC0+Y2FuUmVhZExpbmUoKSB8fCBRSU9EZXZpY2U6OmNhblJlYWRMaW5lKCk7CisgfQor IAorIC8qIQorZGlmZiAtLWdpdCBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0 b290aHNvY2tldF9ibHVlemRidXMuY3BwIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9x Ymx1ZXRvb3Roc29ja2V0X2JsdWV6ZGJ1cy5jcHAKK2luZGV4IDA4NGFhOTU4Li5kNmFhMTdhNyAx MDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tl dF9ibHVlemRidXMuY3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVl dG9vdGhzb2NrZXRfYmx1ZXpkYnVzLmNwcAorQEAgLTI4NCw2ICsyODQsMTAgQEAgdm9pZCBRQmx1 ZXRvb3RoU29ja2V0UHJpdmF0ZUJsdWV6REJ1czo6Y29ubmVjdFRvU2VydmljZSgKKyAgICAgICAg IHJldHVybjsKKyAgICAgfQorIAorKyAgICBpZiAoc2VydmljZS5zb2NrZXRQcm90b2NvbCgpICE9 IFFCbHVldG9vdGhTZXJ2aWNlSW5mbzo6UHJvdG9jb2w6OlVua25vd25Qcm90b2NvbCkKKysgICAg ICAgIHNvY2tldFR5cGUgPSBzZXJ2aWNlLnNvY2tldFByb3RvY29sKCk7CisrICAgIHFDRGVidWco UVRfQlRfQkxVRVopIDw8ICJTb2NrZXQgcHJvdG9jb2wgdXNlZDoiIDw8IHNvY2tldFR5cGU7Cisr CisgICAgIGNvbm5lY3RUb1NlcnZpY2Uoc2VydmljZS5kZXZpY2UoKS5hZGRyZXNzKCksIHRhcmdl dFNlcnZpY2UsIG9wZW5Nb2RlKTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkv dGVzdHMvYXV0by9xYmx1ZXRvb3Roc29ja2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcCBiL3F0 Y29ubmVjdGl2aXR5L3Rlc3RzL2F1dG8vcWJsdWV0b290aHNvY2tldC90c3RfcWJsdWV0b290aHNv Y2tldC5jcHAKK2luZGV4IDA1YmMxYTBmLi5hN2I1ZWYxZiAxMDA2NDQKKy0tLSBhL3F0Y29ubmVj dGl2aXR5L3Rlc3RzL2F1dG8vcWJsdWV0b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5j cHAKKysrKyBiL3F0Y29ubmVjdGl2aXR5L3Rlc3RzL2F1dG8vcWJsdWV0b290aHNvY2tldC90c3Rf cWJsdWV0b290aHNvY2tldC5jcHAKK0BAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCB0c3RfUUJsdWV0 b290aFNvY2tldDo6aW5pdFRlc3RDYXNlKCkKKyAgICAgcURlYnVnKCkgPDwgIlN0YXJ0aW5nIGRp c2NvdmVyeSI7CisgCisgICAgIHNkYS0+c2V0VXVpZEZpbHRlcihRQmx1ZXRvb3RoVXVpZChRU3Ry aW5nKFRFU1RfU0VSVklDRV9VVUlEKSkpOworLSAgICBzZGEtPnN0YXJ0KFFCbHVldG9vdGhTZXJ2 aWNlRGlzY292ZXJ5QWdlbnQ6Ok1pbmltYWxEaXNjb3ZlcnkpOworKyAgICBzZGEtPnN0YXJ0KFFC bHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnQ6OkZ1bGxEaXNjb3ZlcnkpOworIAorICAgICBm b3IgKGludCBjb25uZWN0VGltZSA9IE1heENvbm5lY3RUaW1lOyAhZG9uZV9kaXNjb3ZlcnkgJiYg Y29ubmVjdFRpbWUgPiAwOyBjb25uZWN0VGltZSAtPSAxMDAwKQorICAgICAgICAgUVRlc3Q6OnFX YWl0KDEwMDApOworU3VibW9kdWxlIHF0ZGVjbGFyYXRpdmUgZjU3MDFmMGQuLjhkZWZlN2JmOgor ZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9jb21tb24vcXFtbGpzZml4ZWRwb29s YXJyYXlfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2NvbW1vbi9xcW1sanNmaXhlZHBvb2xh cnJheV9wLmgKK2luZGV4IGI2NWI5OTRkNmMuLjE1YThjZDY4NzggMTAwNjQ0CistLS0gYS9xdGRl Y2xhcmF0aXZlL3NyYy9xbWwvY29tbW9uL3FxbWxqc2ZpeGVkcG9vbGFycmF5X3AuaAorKysrIGIv cXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2NvbW1vbi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmgKK0BA IC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKKyAgICAgICAgIGlmIChRVHlwZUluZm88VD46OmlzQ29t cGxleCkgeworICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAg ICAgICAgICAgICAgICAgbmV3IChkYXRhICsgaSkgVCh2ZWN0b3IuYXQoaSkpOworLSAgICAgICAg fSBlbHNlIHsKKysgICAgICAgIH0gZWxzZSBpZiAoY291bnQpIHsKKyAgICAgICAgICAgICBtZW1j cHkoZGF0YSwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHZlY3Rvci5jb25zdERhdGEoKSksIGNv dW50ICogc2l6ZW9mKFQpKTsKKyAgICAgICAgIH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0ZGVj bGFyYXRpdmUvc3JjL3FtbC9qc3J1bnRpbWUvcXY0cW9iamVjdHdyYXBwZXIuY3BwIGIvcXRkZWNs YXJhdGl2ZS9zcmMvcW1sL2pzcnVudGltZS9xdjRxb2JqZWN0d3JhcHBlci5jcHAKK2luZGV4IGU1 N2NkZDgyNzguLjk0NjEzNTk4YWYgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwv anNydW50aW1lL3F2NHFvYmplY3R3cmFwcGVyLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMv cW1sL2pzcnVudGltZS9xdjRxb2JqZWN0d3JhcHBlci5jcHAKK0BAIC0xMTQ1LDggKzExNDUsNyBA QCB2b2lkIEhlYXA6OlFPYmplY3RXcmFwcGVyOjptYXJrT2JqZWN0cyhIZWFwOjpCYXNlICp0aGF0 LCBRVjQ6Ok1hcmtTdGFjayAqbWFya1N0YQorIHZvaWQgUU9iamVjdFdyYXBwZXI6OmRlc3Ryb3lP YmplY3QoYm9vbCBsYXN0Q2FsbCkKKyB7CisgICAgIEhlYXA6OlFPYmplY3RXcmFwcGVyICpoID0g ZCgpOworLSAgICBpZiAoIWgtPmludGVybmFsQ2xhc3MpCistICAgICAgICByZXR1cm47IC8vIGRl c3Ryb3lPYmplY3QgYWxyZWFkeSBnb3QgY2FsbGVkCisrICAgIFFfQVNTRVJUKGgtPmludGVybmFs Q2xhc3MpOworIAorICAgICBpZiAoaC0+b2JqZWN0KCkpIHsKKyAgICAgICAgIFFRbWxEYXRhICpk ZGF0YSA9IFFRbWxEYXRhOjpnZXQoaC0+b2JqZWN0KCksIGZhbHNlKTsKK0BAIC0xMTc2LDcgKzEx NzUsNyBAQCB2b2lkIFFPYmplY3RXcmFwcGVyOjpkZXN0cm95T2JqZWN0KGJvb2wgbGFzdENhbGwp CisgICAgICAgICB9CisgICAgIH0KKyAKKy0gICAgaC0+fkRhdGEoKTsKKysgICAgaC0+ZGVzdHJv eSgpOworIH0KKyAKKyAKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5 L3F2NG1tLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwCitpbmRl eCAwNmNhZjA0ZTVhLi5kYTE0OWE2N2M0IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMv cW1sL21lbW9yeS9xdjRtbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9tZW1vcnkv cXY0bW0uY3BwCitAQCAtOTgxLDcgKzk4MSw3IEBAIHZvaWQgTWVtb3J5TWFuYWdlcjo6c3dlZXAo Ym9vbCBsYXN0U3dlZXAsIENsYXNzRGVzdHJveVN0YXRzQ2FsbGJhY2sgY2xhc3NDb3VudFB0Cisg CisgICAgIGlmIChNdWx0aXBseVdyYXBwZWRRT2JqZWN0TWFwICptdWx0aXBseVdyYXBwZWRRT2Jq ZWN0cyA9IGVuZ2luZS0+bV9tdWx0aXBseVdyYXBwZWRRT2JqZWN0cykgeworICAgICAgICAgZm9y IChNdWx0aXBseVdyYXBwZWRRT2JqZWN0TWFwOjpJdGVyYXRvciBpdCA9IG11bHRpcGx5V3JhcHBl ZFFPYmplY3RzLT5iZWdpbigpOyBpdCAhPSBtdWx0aXBseVdyYXBwZWRRT2JqZWN0cy0+ZW5kKCk7 KSB7CistICAgICAgICAgICAgaWYgKCFpdC52YWx1ZSgpLmlzTnVsbE9yVW5kZWZpbmVkKCkpCisr ICAgICAgICAgICAgaWYgKGl0LnZhbHVlKCkuaXNOdWxsT3JVbmRlZmluZWQoKSkKKyAgICAgICAg ICAgICAgICAgaXQgPSBtdWx0aXBseVdyYXBwZWRRT2JqZWN0cy0+ZXJhc2UoaXQpOworICAgICAg ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgKytpdDsKK2RpZmYgLS1naXQgYS9xdGRlY2xh cmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9kZWwuY3BwIGIvcXRkZWNsYXJhdGl2 ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAoraW5kZXggMjA3OWE4ZWQwNC4u YTU3N2NiMjM1MSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1s ZGVsZWdhdGVtb2RlbC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1s ZGVsZWdhdGVtb2RlbC5jcHAKK0BAIC0zODksNiArMzg5LDEyIEBAIHZvaWQgUVFtbERlbGVnYXRl TW9kZWxQcml2YXRlOjpjb25uZWN0VG9BYnN0cmFjdEl0ZW1Nb2RlbCgpCisgICAgICAgICAgICAg ICAgICAgICAgIHEsICBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9yb3dzUmVtb3ZlZChRTW9k ZWxJbmRleCxpbnQsaW50KSkpOworICAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFj dEl0ZW1Nb2RlbCwgU0lHTkFMKHJvd3NBYm91dFRvQmVSZW1vdmVkKFFNb2RlbEluZGV4LGludCxp bnQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgcSwgIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9U KF9xX3Jvd3NBYm91dFRvQmVSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIHFt bG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoY29sdW1uc0lu c2VydGVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwKKysgICAgICAgICAgICAgICAgICAgICAgcSwg UVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3FfY29sdW1uc0luc2VydGVkKFFNb2RlbEluZGV4LGlu dCxpbnQpKSk7CisrICAgIHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVs LCBTSUdOQUwoY29sdW1uc1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLAorKyAgICAgICAg ICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9jb2x1bW5zUmVtb3Zl ZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFB YnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKGNvbHVtbnNNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50 LFFNb2RlbEluZGV4LGludCkpLAorKyAgICAgICAgICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdh dGVNb2RlbCwgU0xPVChfcV9jb2x1bW5zTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJ bmRleCxpbnQpKSk7CisgICAgIHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1v ZGVsLCBTSUdOQUwoZGF0YUNoYW5nZWQoUU1vZGVsSW5kZXgsUU1vZGVsSW5kZXgsUVZlY3Rvcjxp bnQ+KSksCisgICAgICAgICAgICAgICAgICAgICAgIHEsIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9U KF9xX2RhdGFDaGFuZ2VkKFFNb2RlbEluZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50PikpKTsK KyAgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChy b3dzTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSwKK0BAIC00MTMs NiArNDE5LDEyIEBAIHZvaWQgUVFtbERlbGVnYXRlTW9kZWxQcml2YXRlOjpkaXNjb25uZWN0RnJv bUFic3RyYWN0SXRlbU1vZGVsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBxLCBTTE9UKF9x X3Jvd3NBYm91dFRvQmVSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisgICAgIFFPYmpl Y3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwocm93c1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGlu dCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHEsIFNMT1QoX3Ffcm93c1JlbW92ZWQoUU1v ZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05B TChjb2x1bW5zSW5zZXJ0ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLCBxLAorKyAgICAgICAgICAg ICAgICAgICAgICAgIFNMT1QoX3FfY29sdW1uc0luc2VydGVkKFFNb2RlbEluZGV4LGludCxpbnQp KSk7CisrICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwoY29sdW1uc1JlbW92ZWQo UU1vZGVsSW5kZXgsaW50LGludCkpLCBxLAorKyAgICAgICAgICAgICAgICAgICAgICAgIFNMT1Qo X3FfY29sdW1uc1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgUU9iamVjdDo6 ZGlzY29ubmVjdChhaW0sIFNJR05BTChjb2x1bW5zTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxR TW9kZWxJbmRleCxpbnQpKSwgcSwKKysgICAgICAgICAgICAgICAgICAgICAgICBTTE9UKF9xX2Nv bHVtbnNNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpKTsKKyAgICAg UU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChkYXRhQ2hhbmdlZChRTW9kZWxJbmRleCxR TW9kZWxJbmRleCxRVmVjdG9yPGludD4pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBxLCBT TE9UKF9xX2RhdGFDaGFuZ2VkKFFNb2RlbEluZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50Pikp KTsKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChyb3dzTW92ZWQoUU1vZGVs SW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSwKK0BAIC0xOTczLDYgKzE5ODUsMzggQEAg dm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3Ffcm93c01vdmVkKAorICAgICB9CisgfQorIAorK3Zv aWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2NvbHVtbnNJbnNlcnRlZChjb25zdCBRTW9kZWxJbmRl eCAmcGFyZW50LCBpbnQgYmVnaW4sIGludCBlbmQpCisreworKyAgICBRX0QoUVFtbERlbGVnYXRl TW9kZWwpOworKyAgICBRX1VOVVNFRChlbmQpOworKyAgICBpZiAocGFyZW50ID09IGQtPm1fYWRh cHRvck1vZGVsLnJvb3RJbmRleCAmJiBiZWdpbiA9PSAwKSB7CisrICAgICAgICAvLyBtYXJrIGFs bCBpdGVtcyBhcyBjaGFuZ2VkCisrICAgICAgICBfcV9pdGVtc0NoYW5nZWQoMCwgZC0+bV9jb3Vu dCwgUVZlY3RvcjxpbnQ+KCkpOworKyAgICB9CisrfQorKworK3ZvaWQgUVFtbERlbGVnYXRlTW9k ZWw6Ol9xX2NvbHVtbnNSZW1vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICZwYXJlbnQsIGludCBiZWdp biwgaW50IGVuZCkKKyt7CisrICAgIFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7CisrICAgIFFfVU5V U0VEKGVuZCk7CisrICAgIGlmIChwYXJlbnQgPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4 ICYmIGJlZ2luID09IDApIHsKKysgICAgICAgIC8vIG1hcmsgYWxsIGl0ZW1zIGFzIGNoYW5nZWQK KysgICAgICAgIF9xX2l0ZW1zQ2hhbmdlZCgwLCBkLT5tX2NvdW50LCBRVmVjdG9yPGludD4oKSk7 CisrICAgIH0KKyt9CisrCisrdm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3FfY29sdW1uc01vdmVk KGNvbnN0IFFNb2RlbEluZGV4ICZwYXJlbnQsIGludCBzdGFydCwgaW50IGVuZCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUU1vZGVsSW5kZXggJmRlc3Rp bmF0aW9uLCBpbnQgY29sdW1uKQorK3sKKysgICAgUV9EKFFRbWxEZWxlZ2F0ZU1vZGVsKTsKKysg ICAgUV9VTlVTRUQoZW5kKTsKKysgICAgaWYgKChwYXJlbnQgPT0gZC0+bV9hZGFwdG9yTW9kZWwu cm9vdEluZGV4ICYmIHN0YXJ0ID09IDApCisrICAgICAgICB8fCAoZGVzdGluYXRpb24gPT0gZC0+ bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYmIGNvbHVtbiA9PSAwKSkgeworKyAgICAgICAgLy8g bWFyayBhbGwgaXRlbXMgYXMgY2hhbmdlZAorKyAgICAgICAgX3FfaXRlbXNDaGFuZ2VkKDAsIGQt Pm1fY291bnQsIFFWZWN0b3I8aW50PigpKTsKKysgICAgfQorK30KKysKKyB2b2lkIFFRbWxEZWxl Z2F0ZU1vZGVsOjpfcV9kYXRhQ2hhbmdlZChjb25zdCBRTW9kZWxJbmRleCAmYmVnaW4sIGNvbnN0 IFFNb2RlbEluZGV4ICZlbmQsIGNvbnN0IFFWZWN0b3I8aW50PiAmcm9sZXMpCisgeworICAgICBR X0QoUVFtbERlbGVnYXRlTW9kZWwpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3Ft bG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbF9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2Rl bHMvcXFtbGRlbGVnYXRlbW9kZWxfcC5oCitpbmRleCA4YWFiNGJhZGNhLi5kMTQwYmZiYWFmIDEw MDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVs X3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVs X3AuaAorQEAgLTE1Miw2ICsxNTIsOSBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgX3Ff aXRlbXNNb3ZlZChpbnQgZnJvbSwgaW50IHRvLCBpbnQgY291bnQpOworICAgICB2b2lkIF9xX21v ZGVsUmVzZXQoKTsKKyAgICAgdm9pZCBfcV9yb3dzSW5zZXJ0ZWQoY29uc3QgUU1vZGVsSW5kZXgg JixpbnQsaW50KTsKKysgICAgdm9pZCBfcV9jb2x1bW5zSW5zZXJ0ZWQoY29uc3QgUU1vZGVsSW5k ZXggJiwgaW50LCBpbnQpOworKyAgICB2b2lkIF9xX2NvbHVtbnNSZW1vdmVkKGNvbnN0IFFNb2Rl bEluZGV4ICYsIGludCwgaW50KTsKKysgICAgdm9pZCBfcV9jb2x1bW5zTW92ZWQoY29uc3QgUU1v ZGVsSW5kZXggJiwgaW50LCBpbnQsIGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCk7CisgICAgIHZv aWQgX3Ffcm93c0Fib3V0VG9CZVJlbW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCwgaW50 IGJlZ2luLCBpbnQgZW5kKTsKKyAgICAgdm9pZCBfcV9yb3dzUmVtb3ZlZChjb25zdCBRTW9kZWxJ bmRleCAmLGludCxpbnQpOworICAgICB2b2lkIF9xX3Jvd3NNb3ZlZChjb25zdCBRTW9kZWxJbmRl eCAmLCBpbnQsIGludCwgY29uc3QgUU1vZGVsSW5kZXggJiwgaW50KTsKK2RpZmYgLS1naXQgYS9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2tpdGVtLmNw cCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja2l0 ZW0uY3BwCitpbmRleCA4NTcxOWZkYzgwLi43OGUyYWIzMDJjIDEwMDY0NAorLS0tIGEvcXRkZWNs YXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNraXRlbS5jcHAKKysr KyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja2l0 ZW0uY3BwCitAQCAtNDYsNiArNDYsNyBAQAorICNpbmNsdWRlICJRdFF1aWNrL3ByaXZhdGUvcXF1 aWNrdGV4dGlucHV0X3AuaCIKKyAjaW5jbHVkZSAiUXRRdWljay9wcml2YXRlL3FxdWlja2FjY2Vz c2libGVhdHRhY2hlZF9wLmgiCisgI2luY2x1ZGUgIlF0UXVpY2svcXF1aWNrdGV4dGRvY3VtZW50 LmgiCisrI2luY2x1ZGUgIlF0UXVpY2svcXF1aWNrcmVuZGVyY29udHJvbC5oIgorIFFUX0JFR0lO X05BTUVTUEFDRQorIAorICNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKK0BAIC01Nyw3ICs1 OCwxOSBAQCBRQWNjZXNzaWJsZVF1aWNrSXRlbTo6UUFjY2Vzc2libGVRdWlja0l0ZW0oUVF1aWNr SXRlbSAqaXRlbSkKKyAKKyBRV2luZG93ICpRQWNjZXNzaWJsZVF1aWNrSXRlbTo6d2luZG93KCkg Y29uc3QKKyB7CistICAgIHJldHVybiBpdGVtKCktPndpbmRvdygpOworKyAgICBRUXVpY2tXaW5k b3cgKndpbmRvdyA9IGl0ZW0oKS0+d2luZG93KCk7CisrCisrICAgIC8vIEZvciBRUXVpY2tXaWRn ZXQgdGhlIGFib3ZlIHdpbmRvdyB3aWxsIGJlIHRoZSBvZmZzY3JlZW4gUVF1aWNrV2luZG93LAor KyAgICAvLyB3aGljaCBpcyBub3QgYSBwYXJ0IG9mIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuIERl dGVjdCB0aGlzIGNhc2UgYW5kCisrICAgIC8vIHJldHVybiB0aGUgd2luZG93IGZvciB0aGUgUVF1 aWNrV2lkZ2V0IGluc3RlYWQuCisrICAgIGlmICh3aW5kb3cgJiYgIXdpbmRvdy0+aGFuZGxlKCkp IHsKKysgICAgICAgIGlmIChRUXVpY2tSZW5kZXJDb250cm9sICpyZW5kZXJDb250cm9sID0gUVF1 aWNrV2luZG93UHJpdmF0ZTo6Z2V0KHdpbmRvdyktPnJlbmRlckNvbnRyb2wpIHsKKysgICAgICAg ICAgICBpZiAoUVdpbmRvdyAqcmVuZGVyV2luZG93ID0gcmVuZGVyQ29udHJvbC0+cmVuZGVyV2lu ZG93KG51bGxwdHIpKQorKyAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyV2luZG93OworKyAg ICAgICAgfQorKyAgICB9CisrCisrICAgIHJldHVybiB3aW5kb3c7CisgfQorIAorIGludCBRQWNj ZXNzaWJsZVF1aWNrSXRlbTo6Y2hpbGRDb3VudCgpIGNvbnN0CitAQCAtMTEzLDE5ICsxMjYsMTUg QEAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpjaGlsZEF0KGlu dCB4LCBpbnQgeSkgY29uc3QKKyBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlj a0l0ZW06OnBhcmVudCgpIGNvbnN0CisgeworICAgICBRUXVpY2tJdGVtICpwYXJlbnQgPSBpdGVt KCktPnBhcmVudEl0ZW0oKTsKKy0gICAgUVF1aWNrV2luZG93ICp3aW5kb3cgPSBpdGVtKCktPndp bmRvdygpOworLSAgICBRUXVpY2tJdGVtICpjaSA9IHdpbmRvdyA/IHdpbmRvdy0+Y29udGVudEl0 ZW0oKSA6IG51bGxwdHI7CisrICAgIFFRdWlja1dpbmRvdyAqaXRlbVdpbmRvdyA9IGl0ZW0oKS0+ d2luZG93KCk7CisrICAgIFFRdWlja0l0ZW0gKmNpID0gaXRlbVdpbmRvdyA/IGl0ZW1XaW5kb3ct PmNvbnRlbnRJdGVtKCkgOiBudWxscHRyOworICAgICB3aGlsZSAocGFyZW50ICYmICFRUXVpY2tJ dGVtUHJpdmF0ZTo6Z2V0KHBhcmVudCktPmlzQWNjZXNzaWJsZSAmJiBwYXJlbnQgIT0gY2kpCisg ICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudEl0ZW0oKTsKKyAKKyAgICAgaWYgKHBhcmVu dCkgeworICAgICAgICAgaWYgKHBhcmVudCA9PSBjaSkgeworLSAgICAgICAgICAgIC8vIEp1bXAg b3V0IHRvIHRoZSBzY2VuZSB3aWRnZXQgaWYgdGhlIHBhcmVudCBpcyB0aGUgcm9vdCBpdGVtLgor LSAgICAgICAgICAgIC8vIFRoZXJlIGFyZSB0d28gcm9vdCBpdGVtcywgUVF1aWNrV2luZG93Ojpy b290SXRlbSBhbmQKKy0gICAgICAgICAgICAvLyBRUXVpY2tWaWV3OjpkZWNsYXJhdGl2ZVJvb3Qu IFRoZSBmb3JtZXIgaXMgdGhlIHRydWUgcm9vdCBpdGVtLAorLSAgICAgICAgICAgIC8vIGJ1dCBp cyBub3QgYSBwYXJ0IG9mIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuIENoZWNrIGlmIHdlIGhpdAor LSAgICAgICAgICAgIC8vIGl0IGhlcmUgYW5kIHJldHVybiBhbiBpbnRlcmZhY2UgZm9yIHRoZSBz Y2VuZSBpbnN0ZWFkLgorLSAgICAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6cXVlcnlBY2Nl c3NpYmxlSW50ZXJmYWNlKHdpbmRvdyk7CisrICAgICAgICAgICAgLy8gSnVtcCBvdXQgdG8gdGhl IHdpbmRvdyBpZiB0aGUgcGFyZW50IGlzIHRoZSByb290IGl0ZW0KKysgICAgICAgICAgICByZXR1 cm4gUUFjY2Vzc2libGU6OnF1ZXJ5QWNjZXNzaWJsZUludGVyZmFjZSh3aW5kb3coKSk7CisgICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgIHdoaWxlIChwYXJlbnQgJiYgIXBhcmVudC0+ZF9m dW5jKCktPmlzQWNjZXNzaWJsZSkKKyAgICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5w YXJlbnRJdGVtKCk7CitAQCAtMTg4LDcgKzE5Nyw3IEBAIFFBY2Nlc3NpYmxlOjpTdGF0ZSBRQWNj ZXNzaWJsZVF1aWNrSXRlbTo6c3RhdGUoKSBjb25zdAorICAgICBRUmVjdCB2aWV3UmVjdF8gPSB2 aWV3UmVjdCgpOworICAgICBRUmVjdCBpdGVtUmVjdCA9IHJlY3QoKTsKKyAKKy0gICAgaWYgKHZp ZXdSZWN0Xy5pc051bGwoKSB8fCBpdGVtUmVjdC5pc051bGwoKSB8fCAhaXRlbSgpLT53aW5kb3co KSB8fCAhaXRlbSgpLT53aW5kb3coKS0+aXNWaXNpYmxlKCkgfHwhaXRlbSgpLT5pc1Zpc2libGUo KSB8fCBxRnV6enlJc051bGwoaXRlbSgpLT5vcGFjaXR5KCkpKQorKyAgICBpZiAodmlld1JlY3Rf LmlzTnVsbCgpIHx8IGl0ZW1SZWN0LmlzTnVsbCgpIHx8ICF3aW5kb3coKSB8fCAhd2luZG93KCkt PmlzVmlzaWJsZSgpIHx8IWl0ZW0oKS0+aXNWaXNpYmxlKCkgfHwgcUZ1enp5SXNOdWxsKGl0ZW0o KS0+b3BhY2l0eSgpKSkKKyAgICAgICAgIHN0YXRlLmludmlzaWJsZSA9IHRydWU7CisgICAgIGlm ICghdmlld1JlY3RfLmludGVyc2VjdHMoaXRlbVJlY3QpKQorICAgICAgICAgc3RhdGUub2Zmc2Ny ZWVuID0gdHJ1ZTsKK0BAIC0yMDEsNiArMjEwLDEwIEBAIFFBY2Nlc3NpYmxlOjpTdGF0ZSBRQWNj ZXNzaWJsZVF1aWNrSXRlbTo6c3RhdGUoKSBjb25zdAorICAgICBpZiAocm9sZSgpID09IFFBY2Nl c3NpYmxlOjpFZGl0YWJsZVRleHQpCisgICAgICAgICBpZiAoYXV0byB0aSA9IHFvYmplY3RfY2Fz dDxRUXVpY2tUZXh0SW5wdXQgKj4oaXRlbSgpKSkKKyAgICAgICAgICAgICBzdGF0ZS5wYXNzd29y ZEVkaXQgPSB0aS0+ZWNob01vZGUoKSAhPSBRUXVpY2tUZXh0SW5wdXQ6Ok5vcm1hbDsKKysgICAg aWYgKCFpdGVtKCktPmlzRW5hYmxlZCgpKSB7CisrICAgICAgICBzdGF0ZS5mb2N1c2FibGUgPSBm YWxzZTsKKysgICAgICAgIHN0YXRlLmRpc2FibGVkID0gdHJ1ZTsKKysgICAgfQorICAgICByZXR1 cm4gc3RhdGU7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2Fj Y2Vzc2libGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVp Y2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmgKK2luZGV4IDM5ZmZjYWYzOWMu LjhiYWEwMTMzMGMgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3Np YmxlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVp Y2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNrdmlld19wLmgKK0BAIC01OCw3ICs1OCw3IEBA IFFUX0JFR0lOX05BTUVTUEFDRQorIAorICNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKyAK Ky1jbGFzcyBRQWNjZXNzaWJsZVF1aWNrV2luZG93IDogcHVibGljIFFBY2Nlc3NpYmxlT2JqZWN0 CisrY2xhc3MgUV9RVUlDS19FWFBPUlQgUUFjY2Vzc2libGVRdWlja1dpbmRvdyA6IHB1YmxpYyBR QWNjZXNzaWJsZU9iamVjdAorIHsKKyBwdWJsaWM6CisgICAgIFFBY2Nlc3NpYmxlUXVpY2tXaW5k b3coUVF1aWNrV2luZG93ICpvYmplY3QpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrL2l0ZW1zL3FxdWlja2RyYWcuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRl bXMvcXF1aWNrZHJhZy5jcHAKK2luZGV4IDgzMjFmY2ZlZWQuLjM4MzA3OGIzYjkgMTAwNjQ0Cist LS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcAorKysrIGIv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrZHJhZy5jcHAKK0BAIC00ODEsNyAr NDgxLDkgQEAgdm9pZCBRUXVpY2tEcmFnQXR0YWNoZWQ6OnNldEtleXMoY29uc3QgUVN0cmluZ0xp c3QgJmtleXMpCisgICAgIFxxbWxhdHRhY2hlZHByb3BlcnR5IHN0cmluZ2xpc3QgUXRRdWljazo6 RHJhZzo6bWltZURhdGEKKyAgICAgXHNpbmNlIDUuMgorIAorLSAgICBUaGlzIHByb3BlcnR5IGhv bGRzIGEgbWFwIG9mIG1pbWVEYXRhIHRoYXQgaXMgdXNlZCBkdXJpbmcgc3RhcnREcmFnLgorKyAg ICBUaGlzIHByb3BlcnR5IGhvbGRzIGEgbWFwIGZyb20gbWltZSB0eXBlIHRvIGRhdGEgdGhhdCBp cyB1c2VkIGR1cmluZyBzdGFydERyYWcuCisrICAgIFRoZSBtaW1lIGRhdGEgbmVlZHMgdG8gYmUg YSBcYyBzdHJpbmcsIG9yIGFuIFxjIEFycmF5QnVmZmVyIHdpdGggdGhlIGRhdGEgZW5jb2RlZAor KyAgICBhY2NvcmRpbmcgdG8gdGhlIG1pbWUgdHlwZS4KKyAqLworIAorIFFWYXJpYW50TWFwIFFR dWlja0RyYWdBdHRhY2hlZDo6bWltZURhdGEoKSBjb25zdAorQEAgLTc2Niw4ICs3NjgsMTIgQEAg UXQ6OkRyb3BBY3Rpb24gUVF1aWNrRHJhZ0F0dGFjaGVkUHJpdmF0ZTo6c3RhcnREcmFnKFF0OjpE cm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3QKKyAgICAgUURyYWcgKmRyYWcgPSBuZXcgUURyYWcoc291 cmNlID8gc291cmNlIDogcSk7CisgICAgIFFNaW1lRGF0YSAqbWltZURhdGEgPSBuZXcgUU1pbWVE YXRhKCk7CisgCistICAgIGZvciAoYXV0byBpdCA9IGV4dGVybmFsTWltZURhdGEuY2JlZ2luKCks IGVuZCA9IGV4dGVybmFsTWltZURhdGEuY2VuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCistICAgICAg ICBtaW1lRGF0YS0+c2V0RGF0YShpdC5rZXkoKSwgaXQudmFsdWUoKS50b1N0cmluZygpLnRvVXRm OCgpKTsKKysgICAgZm9yIChhdXRvIGl0ID0gZXh0ZXJuYWxNaW1lRGF0YS5jYmVnaW4oKSwgZW5k ID0gZXh0ZXJuYWxNaW1lRGF0YS5jZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworKyAgICAgICAg aWYgKHN0YXRpY19jYXN0PFFNZXRhVHlwZTo6VHlwZT4oaXQudmFsdWUoKS50eXBlKCkpID09IFFN ZXRhVHlwZTo6UUJ5dGVBcnJheSkKKysgICAgICAgICAgICBtaW1lRGF0YS0+c2V0RGF0YShpdC5r ZXkoKSwgaXQudmFsdWUoKS50b0J5dGVBcnJheSgpKTsKKysgICAgICAgIGVsc2UKKysgICAgICAg ICAgICBtaW1lRGF0YS0+c2V0RGF0YShpdC5rZXkoKSwgaXQudmFsdWUoKS50b1N0cmluZygpLnRv VXRmOCgpKTsKKysgICAgfQorIAorICAgICBkcmFnLT5zZXRNaW1lRGF0YShtaW1lRGF0YSk7Cisg ICAgIGlmIChwaXhtYXBMb2FkZXIuaXNSZWFkeSgpKSB7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9x dWljay9pdGVtcy9xcXVpY2tpdGVtLmNwcAoraW5kZXggNzVmMTQ1NzgxNi4uZGVjMGFlMTlhZSAx MDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3Bw CisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtLmNwcAorQEAg LTU5LDYgKzU5LDcgQEAKKyAjaW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcW51bWVyaWNfcC5oPgor ICNpbmNsdWRlIDxRdEd1aS9xcGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAjaW5jbHVkZSA8UXRDb3Jl L3Fsb2dnaW5nY2F0ZWdvcnkuaD4KKysjaW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcWR1cGxpY2F0 ZXRyYWNrZXJfcC5oPgorIAorICNpbmNsdWRlIDxwcml2YXRlL3FxbWxnbG9iYWxfcC5oPgorICNp bmNsdWRlIDxwcml2YXRlL3FxbWxlbmdpbmVfcC5oPgorQEAgLTIzMjYsNiArMjMyNyw3IEBAIFFR dWlja0l0ZW06OlFRdWlja0l0ZW0oUVF1aWNrSXRlbVByaXZhdGUgJmRkLCBRUXVpY2tJdGVtICpw YXJlbnQpCisgUVF1aWNrSXRlbTo6flFRdWlja0l0ZW0oKQorIHsKKyAgICAgUV9EKFFRdWlja0l0 ZW0pOworKyAgICBkLT5pbkRlc3RydWN0b3IgPSB0cnVlOworIAorICAgICBpZiAoZC0+d2luZG93 UmVmQ291bnQgPiAxKQorICAgICAgICAgZC0+d2luZG93UmVmQ291bnQgPSAxOyAvLyBNYWtlIHN1 cmUgd2luZG93IGlzIHNldCB0byBudWxsIGluIG5leHQgY2FsbCB0byBkZXJlZldpbmRvdygpLgor QEAgLTI1MjYsNiArMjUyOCw3IEBAIFFRdWlja0l0ZW0qIFFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0 UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW4oUVF1aWNrSXRlbSAqaXRlbSwgYm9vCisgICAgIFFRdWlj a0l0ZW0gKmN1cnJlbnQgPSBpdGVtOworICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlj a0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IHN0YXJ0SXRlbToiIDw8 IHN0YXJ0SXRlbTsKKyAgICAgcUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0 ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluOiBmaXJzdEZyb21JdGVtOiIgPDwgZmlyc3RG cm9tSXRlbTsKKysgICAgUUR1cGxpY2F0ZVRyYWNrZXI8UVF1aWNrSXRlbSAqPiBjeWNsZURldGVj dG9yOworICAgICBkbyB7CisgICAgICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0 ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IGN1cnJlbnQ6IiA8PCBjdXJy ZW50OworICAgICAgICAgcUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6 bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluOiBmcm9tOiIgPDwgZnJvbTsKK0BAIC0yNTkyLDcg KzI1OTUsMTAgQEAgUVF1aWNrSXRlbSogUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUlu VGFiRm9jdXNDaGFpbihRUXVpY2tJdGVtICppdGVtLCBib28KKyAgICAgICAgIC8vIHRyYXZlcnNl ZCBhbGwgb2YgdGhlIGNoYWluIChieSBjb21wYXJlIHRoZSBbY3VycmVudF0gaXRlbSB3aXRoIFtz dGFydEl0ZW1dKQorICAgICAgICAgLy8gU2luY2UgdGhlIFtzdGFydEl0ZW1dIG1pZ2h0IGJlIHBy b21vdGVkIHRvIGl0cyBwYXJlbnQgaWYgaXQgaXMgaW52aXNpYmxlLAorICAgICAgICAgLy8gd2Ug c3RpbGwgaGF2ZSB0byBjaGVjayBbY3VycmVudF0gaXRlbSB3aXRoIG9yaWdpbmFsIHN0YXJ0IGl0 ZW0KKy0gICAgICAgIGlmICgoY3VycmVudCA9PSBzdGFydEl0ZW0gfHwgY3VycmVudCA9PSBvcmln aW5hbFN0YXJ0SXRlbSkgJiYgZnJvbSA9PSBmaXJzdEZyb21JdGVtKSB7CisrICAgICAgICAvLyBX ZSBtaWdodCBhbHNvIHJ1biBpbnRvIGEgY3ljbGUgYmVmb3JlIHdlIHJlYWNoIGZpcnN0RnJvbUl0 ZW0gYWdhaW4KKysgICAgICAgIC8vIGJ1dCBub3RlIHRoYXQgd2UgaGF2ZSB0byBpZ25vcmUgY3Vy cmVudCBpZiB3ZSBhcmUgbWVhbnQgdG8gc2tpcCBpdAorKyAgICAgICAgaWYgKCgoY3VycmVudCA9 PSBzdGFydEl0ZW0gfHwgY3VycmVudCA9PSBvcmlnaW5hbFN0YXJ0SXRlbSkgJiYgZnJvbSA9PSBm aXJzdEZyb21JdGVtKSB8fAorKyAgICAgICAgICAgICAgICAoIXNraXAgJiYgY3ljbGVEZXRlY3Rv ci5oYXNTZWVuKGN1cnJlbnQpKSkgeworICAgICAgICAgICAgIC8vIHdyYXBwZWQgYXJvdW5kLCBh dm9pZCBlbmRsZXNzIGxvb3BzCisgICAgICAgICAgICAgaWYgKGl0ZW0gPT0gY29udGVudEl0ZW0p IHsKKyAgICAgICAgICAgICAgICAgcUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJp dmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluOiBsb29wZWQsIHJldHVybiBjb250ZW50 SXRlbSI7CitAQCAtMjY4OSw5ICsyNjk1LDggQEAgdm9pZCBRUXVpY2tJdGVtOjpzZXRQYXJlbnRJ dGVtKFFRdWlja0l0ZW0gKnBhcmVudEl0ZW0pCisgCisgICAgICAgICBjb25zdCBib29sIHdhc1Zp c2libGUgPSBpc1Zpc2libGUoKTsKKyAgICAgICAgIG9wLT5yZW1vdmVDaGlsZCh0aGlzKTsKKy0g ICAgICAgIGlmICh3YXNWaXNpYmxlKSB7CisrICAgICAgICBpZiAod2FzVmlzaWJsZSAmJiAhb3At PmluRGVzdHJ1Y3RvcikKKyAgICAgICAgICAgICBlbWl0IG9sZFBhcmVudEl0ZW0tPnZpc2libGVD aGlsZHJlbkNoYW5nZWQoKTsKKy0gICAgICAgIH0KKyAgICAgfSBlbHNlIGlmIChkLT53aW5kb3cp IHsKKyAgICAgICAgIFFRdWlja1dpbmRvd1ByaXZhdGU6OmdldChkLT53aW5kb3cpLT5wYXJlbnRs ZXNzSXRlbXMucmVtb3ZlKHRoaXMpOworICAgICB9CitAQCAtMjc2OCw4ICsyNzczLDkgQEAgdm9p ZCBRUXVpY2tJdGVtOjpzZXRQYXJlbnRJdGVtKFFRdWlja0l0ZW0gKnBhcmVudEl0ZW0pCisgCisg ICAgIGQtPml0ZW1DaGFuZ2UoSXRlbVBhcmVudEhhc0NoYW5nZWQsIGQtPnBhcmVudEl0ZW0pOwor IAorLSAgICBlbWl0IHBhcmVudENoYW5nZWQoZC0+cGFyZW50SXRlbSk7CistICAgIGlmIChpc1Zp c2libGUoKSAmJiBkLT5wYXJlbnRJdGVtKQorKyAgICBpZiAoIWQtPmluRGVzdHJ1Y3RvcikKKysg ICAgICAgIGVtaXQgcGFyZW50Q2hhbmdlZChkLT5wYXJlbnRJdGVtKTsKKysgICAgaWYgKGlzVmlz aWJsZSgpICYmIGQtPnBhcmVudEl0ZW0gJiYgIVFRdWlja0l0ZW1Qcml2YXRlOjpnZXQoZC0+cGFy ZW50SXRlbSktPmluRGVzdHJ1Y3RvcikKKyAgICAgICAgIGVtaXQgZC0+cGFyZW50SXRlbS0+dmlz aWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworIH0KKyAKK0BAIC0yOTY1LDcgKzI5NzEsOCBAQCB2b2lk IFFRdWlja0l0ZW1Qcml2YXRlOjpyZW1vdmVDaGlsZChRUXVpY2tJdGVtICpjaGlsZCkKKyAKKyAg ICAgaXRlbUNoYW5nZShRUXVpY2tJdGVtOjpJdGVtQ2hpbGRSZW1vdmVkQ2hhbmdlLCBjaGlsZCk7 CisgCistICAgIGVtaXQgcS0+Y2hpbGRyZW5DaGFuZ2VkKCk7CisrICAgIGlmICghaW5EZXN0cnVj dG9yKQorKyAgICAgICAgZW1pdCBxLT5jaGlsZHJlbkNoYW5nZWQoKTsKKyB9CisgCisgdm9pZCBR UXVpY2tJdGVtUHJpdmF0ZTo6cmVmV2luZG93KFFRdWlja1dpbmRvdyAqYykKK0BAIC0zMTk0LDYg KzMyMDEsNyBAQCBRUXVpY2tJdGVtUHJpdmF0ZTo6UVF1aWNrSXRlbVByaXZhdGUoKQorICAgICAs IHRvdWNoRW5hYmxlZChmYWxzZSkKKyAjZW5kaWYKKyAgICAgLCBoYXNDdXJzb3JIYW5kbGVyKGZh bHNlKQorKyAgICAsIGluRGVzdHJ1Y3RvcihmYWxzZSkKKyAgICAgLCBkaXJ0eUF0dHJpYnV0ZXMo MCkKKyAgICAgLCBuZXh0RGlydHlJdGVtKG51bGxwdHIpCisgICAgICwgcHJldkRpcnR5SXRlbShu dWxscHRyKQorQEAgLTUxMjAsNiArNTEyOCwxMyBAQCB2b2lkIFFRdWlja0l0ZW06OmNvbXBvbmVu dENvbXBsZXRlKCkKKyAgICAgICAgIGQtPmFkZFRvRGlydHlMaXN0KCk7CisgICAgICAgICBRUXVp Y2tXaW5kb3dQcml2YXRlOjpnZXQoZC0+d2luZG93KS0+ZGlydHlJdGVtKHRoaXMpOworICAgICB9 CisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKyAgICBpZiAoZC0+aXNBY2Nlc3Np YmxlICYmIGQtPmVmZmVjdGl2ZVZpc2libGUpIHsKKysgICAgICAgIFFBY2Nlc3NpYmxlRXZlbnQg ZXYodGhpcywgUUFjY2Vzc2libGU6Ok9iamVjdFNob3cpOworKyAgICAgICAgUUFjY2Vzc2libGU6 OnVwZGF0ZUFjY2Vzc2liaWxpdHkoJmV2KTsKKysgICAgfQorKyNlbmRpZgorIH0KKyAKKyBRUXVp Y2tTdGF0ZUdyb3VwICpRUXVpY2tJdGVtUHJpdmF0ZTo6X3N0YXRlcygpCitAQCAtNjEwNiw5ICs2 MTIxLDExIEBAIGJvb2wgUVF1aWNrSXRlbVByaXZhdGU6OnNldEVmZmVjdGl2ZVZpc2libGVSZWN1 cihib29sIG5ld0VmZmVjdGl2ZVZpc2libGUpCisgICAgICAgICBRQWNjZXNzaWJsZTo6dXBkYXRl QWNjZXNzaWJpbGl0eSgmZXYpOworICAgICB9CisgI2VuZGlmCistICAgIGVtaXQgcS0+dmlzaWJs ZUNoYW5nZWQoKTsKKy0gICAgaWYgKGNoaWxkVmlzaWJpbGl0eUNoYW5nZWQpCistICAgICAgICBl bWl0IHEtPnZpc2libGVDaGlsZHJlbkNoYW5nZWQoKTsKKysgICAgaWYgKCFpbkRlc3RydWN0b3Ip IHsKKysgICAgICAgIGVtaXQgcS0+dmlzaWJsZUNoYW5nZWQoKTsKKysgICAgICAgIGlmIChjaGls ZFZpc2liaWxpdHlDaGFuZ2VkKQorKyAgICAgICAgICAgIGVtaXQgcS0+dmlzaWJsZUNoaWxkcmVu Q2hhbmdlZCgpOworKyAgICB9CisgCisgICAgIHJldHVybiB0cnVlOyAgICAvLyBlZmZlY3RpdmUg dmlzaWJpbGl0eSBESUQgY2hhbmdlCisgfQorQEAgLTYxNTcsNiArNjE3NCwxNSBAQCB2b2lkIFFR dWlja0l0ZW1Qcml2YXRlOjpzZXRFZmZlY3RpdmVFbmFibGVSZWN1cihRUXVpY2tJdGVtICpzY29w ZSwgYm9vbCBuZXdFZmZlYworICAgICB9CisgCisgICAgIGl0ZW1DaGFuZ2UoUVF1aWNrSXRlbTo6 SXRlbUVuYWJsZWRIYXNDaGFuZ2VkLCBlZmZlY3RpdmVFbmFibGUpOworKyNpZiBRVF9DT05GSUco YWNjZXNzaWJpbGl0eSkKKysgICAgaWYgKGlzQWNjZXNzaWJsZSkgeworKyAgICAgICAgUUFjY2Vz c2libGU6OlN0YXRlIGNoYW5nZWRTdGF0ZTsKKysgICAgICAgIGNoYW5nZWRTdGF0ZS5kaXNhYmxl ZCA9IHRydWU7CisrICAgICAgICBjaGFuZ2VkU3RhdGUuZm9jdXNhYmxlID0gdHJ1ZTsKKysgICAg ICAgIFFBY2Nlc3NpYmxlU3RhdGVDaGFuZ2VFdmVudCBldihxLCBjaGFuZ2VkU3RhdGUpOworKyAg ICAgICAgUUFjY2Vzc2libGU6OnVwZGF0ZUFjY2Vzc2liaWxpdHkoJmV2KTsKKysgICAgfQorKyNl bmRpZgorICAgICBlbWl0IHEtPmVuYWJsZWRDaGFuZ2VkKCk7CisgfQorIAorZGlmZiAtLWdpdCBh L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW1fcC5oIGIvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbV9wLmgKK2luZGV4IDg0MWQ5MWJiNDAuLmFk ZThmYjYxZjIgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVp Y2tpdGVtX3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRl bV9wLmgKK0BAIC00NzIsNiArNDcyLDcgQEAgcHVibGljOgorICAgICBib29sIHJlcGxheWluZ1By ZXNzRXZlbnQ6MTsKKyAgICAgYm9vbCB0b3VjaEVuYWJsZWQ6MTsKKyAgICAgYm9vbCBoYXNDdXJz b3JIYW5kbGVyOjE7CisrICAgIHF1aW50MzIgaW5EZXN0cnVjdG9yOjE7IC8vIGhhcyBlbnRlcmVk IH5RUXVpY2tJdGVtCisgCisgICAgIGVudW0gRGlydHlUeXBlIHsKKyAgICAgICAgIFRyYW5zZm9y bU9yaWdpbiAgICAgICAgID0gMHgwMDAwMDAwMSwKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZl L3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtdmlldy5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9x dWljay9pdGVtcy9xcXVpY2tpdGVtdmlldy5jcHAKK2luZGV4IDAxMGEwMTUyZTEuLmY4YWQxNjhh MTcgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVt dmlldy5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12 aWV3LmNwcAorQEAgLTE3ODUsNyArMTc4NSw3IEBAIHZvaWQgUVF1aWNrSXRlbVZpZXdQcml2YXRl OjpyZWZpbGwocXJlYWwgZnJvbSwgcXJlYWwgdG8pCisgCisgICAgIGRvIHsKKyAgICAgICAgIGJ1 ZmZlclBhdXNlLnN0b3AoKTsKKy0gICAgICAgIGlmIChjdXJyZW50Q2hhbmdlcy5oYXNQZW5kaW5n Q2hhbmdlcygpIHx8IGJ1ZmZlcmVkQ2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpKSB7CisrICAg ICAgICBpZiAoY3VycmVudENoYW5nZXMuaGFzUGVuZGluZ0NoYW5nZXMoKSB8fCBidWZmZXJlZENo YW5nZXMuaGFzUGVuZGluZ0NoYW5nZXMoKSB8fCBjdXJyZW50Q2hhbmdlcy5hY3RpdmUpIHsKKyAg ICAgICAgICAgICBjdXJyZW50Q2hhbmdlcy5yZXNldCgpOworICAgICAgICAgICAgIGJ1ZmZlcmVk Q2hhbmdlcy5yZXNldCgpOworICAgICAgICAgICAgIHJlbGVhc2VWaXNpYmxlSXRlbXMocmV1c2Fi bGVGbGFnKTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVp Y2ttb3VzZWFyZWFfcF9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tt b3VzZWFyZWFfcF9wLmgKK2luZGV4IGZiYTM4M2UyNjguLjBkNjM2MTg2MjIgMTAwNjQ0CistLS0g YS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmgKKysr KyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaAor QEAgLTYxLDcgKzYxLDYgQEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgY2xhc3MgUVF1aWNrTW91 c2VFdmVudDsKKyBjbGFzcyBRUXVpY2tNb3VzZUFyZWE7CistY2xhc3MgUVF1aWNrUG9pbnRlck1h c2s7CisgY2xhc3MgUVF1aWNrTW91c2VBcmVhUHJpdmF0ZSA6IHB1YmxpYyBRUXVpY2tJdGVtUHJp dmF0ZQorIHsKKyAgICAgUV9ERUNMQVJFX1BVQkxJQyhRUXVpY2tNb3VzZUFyZWEpCitAQCAtMTAw LDcgKzk5LDYgQEAgcHVibGljOgorICNpZiBRVF9DT05GSUcocXVpY2tfZHJhZ2FuZGRyb3ApCisg ICAgIFFRdWlja0RyYWcgKmRyYWc7CisgI2VuZGlmCistICAgIFFQb2ludGVyPFFRdWlja1BvaW50 ZXJNYXNrPiBtYXNrOworICAgICBRUG9pbnRGIHN0YXJ0U2NlbmU7CisgICAgIFFQb2ludEYgdGFy Z2V0U3RhcnRQb3M7CisgICAgIFFQb2ludEYgbGFzdFBvczsKK2RpZmYgLS1naXQgYS9xdGRlY2xh cmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2t0ZXh0LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrL2l0ZW1zL3FxdWlja3RleHQuY3BwCitpbmRleCA2MjMwMTg2OTMzLi5lODIzY2ExMDk1 IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4dC5j cHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja3RleHQuY3BwCitA QCAtMjE2OCw3ICsyMTY4LDcgQEAgdm9pZCBRUXVpY2tUZXh0OjpyZXNldE1heGltdW1MaW5lQ291 bnQoKQorICAgICA8aW1nIHNyYz0iIiBhbGlnbj0idG9wLG1pZGRsZSxib3R0b20iIHdpZHRoPSIi IGhlaWdodD0iIj4gLSBpbmxpbmUgaW1hZ2VzCisgICAgIDxvbCB0eXBlPSIiPiwgPHVsIHR5cGU9 IiI+IGFuZCA8bGk+IC0gb3JkZXJlZCBhbmQgdW5vcmRlcmVkIGxpc3RzCisgICAgIDxwcmU+PC9w cmU+IC0gcHJlZm9ybWF0dGVkCistICAgICZndDsgJmx0OyAmYW1wOworKyAgICAmZ3Q7ICZsdDsg JmFtcDsgJnF1b3Q7ICZuYnNwOyAmYXBvczsKKyAgICAgXGVuZGNvZGUKKyAKKyAgICAgXGMgVGV4 dC5TdHlsZWRUZXh0IHBhcnNlciBpcyBzdHJpY3QsIHJlcXVpcmluZyB0YWdzIHRvIGJlIGNvcnJl Y3RseSBuZXN0ZWQuCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVn cmFwaC9xc2dyaGlkaXN0YW5jZWZpZWxkZ2x5cGhjYWNoZS5jcHAgYi9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWljay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcAoraW5k ZXggZWI0ZGIwZjg1ZS4uMjMyNWEyNjY1YiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrL3NjZW5lZ3JhcGgvcXNncmhpZGlzdGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwCisrKysg Yi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRn bHlwaGNhY2hlLmNwcAorQEAgLTQ0Niw3ICs0NDYsNyBAQCBib29sIFFTR1JoaURpc3RhbmNlRmll bGRHbHlwaENhY2hlOjpsb2FkUHJlZ2VuZXJhdGVkQ2FjaGUoY29uc3QgUVJhd0ZvbnQgJmZvbnQp CisgCisgICAgICAgICBjb25zdCBjaGFyICp0ZXh0dXJlUmVjb3JkID0gYWxsb2NhdG9yRGF0YTsK KyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGV4dHVyZUNvdW50OyArK2ksIHRleHR1cmVS ZWNvcmQgKz0gUXRkZjo6VGV4dHVyZVJlY29yZFNpemUpIHsKKy0gICAgICAgICAgICBpZiAodGV4 dHVyZVJlY29yZCArIFF0ZGY6OlRleHR1cmVSZWNvcmRTaXplID4gcXRkZlRhYmxlRW5kKSB7Cisr ICAgICAgICAgICAgaWYgKHF0ZGZUYWJsZUVuZCAtIHRleHR1cmVSZWNvcmQgPCBRdGRmOjpUZXh0 dXJlUmVjb3JkU2l6ZSkgeworICAgICAgICAgICAgICAgICBxV2FybmluZygicXRkZiB0YWJsZSB0 b28gc21hbGwgaW4gZm9udCAnJXMnLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHFQcmlu dGFibGUoZm9udC5mYW1pbHlOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl OworQEAgLTQ2Miw3ICs0NjIsNyBAQCBib29sIFFTR1JoaURpc3RhbmNlRmllbGRHbHlwaENhY2hl Ojpsb2FkUHJlZ2VuZXJhdGVkQ2FjaGUoY29uc3QgUVJhd0ZvbnQgJmZvbnQpCisgCisgICAgICAg ICBjb25zdCBjaGFyICpnbHlwaFJlY29yZCA9IHRleHR1cmVSZWNvcmQ7CisgICAgICAgICBmb3Ig KHF1aW50MzIgaSA9IDA7IGkgPCBnbHlwaENvdW50OyArK2ksIGdseXBoUmVjb3JkICs9IFF0ZGY6 OkdseXBoUmVjb3JkU2l6ZSkgeworLSAgICAgICAgICAgIGlmIChnbHlwaFJlY29yZCArIFF0ZGY6 OkdseXBoUmVjb3JkU2l6ZSA+IHF0ZGZUYWJsZUVuZCkgeworKyAgICAgICAgICAgIGlmIChxdGRm VGFibGVFbmQgLSBnbHlwaFJlY29yZCA8IFF0ZGY6OiBHbHlwaFJlY29yZFNpemUpIHsKKyAgICAg ICAgICAgICAgICAgcVdhcm5pbmcoInF0ZGYgdGFibGUgdG9vIHNtYWxsIGluIGZvbnQgJyVzJy4i LAorICAgICAgICAgICAgICAgICAgICAgICAgICBxUHJpbnRhYmxlKGZvbnQuZmFtaWx5TmFtZSgp KSk7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKK0BAIC01MTIsOCArNTEyLDggQEAg Ym9vbCBRU0dSaGlEaXN0YW5jZUZpZWxkR2x5cGhDYWNoZTo6bG9hZFByZWdlbmVyYXRlZENhY2hl KGNvbnN0IFFSYXdGb250ICZmb250KQorIAorICAgICAgICAgICAgIGludCB3aWR0aCA9IHRleElu Zm8tPmFsbG9jYXRlZEFyZWEud2lkdGgoKTsKKyAgICAgICAgICAgICBpbnQgaGVpZ2h0ID0gdGV4 SW5mby0+YWxsb2NhdGVkQXJlYS5oZWlnaHQoKTsKKy0gICAgICAgICAgICBxaW50NjQgc2l6ZSA9 IHdpZHRoICogaGVpZ2h0OworLSAgICAgICAgICAgIGlmIChyZWludGVycHJldF9jYXN0PGNvbnN0 IGNoYXIgKj4odGV4dHVyZURhdGEgKyBzaXplKSA+IHF0ZGZUYWJsZUVuZCkgeworKyAgICAgICAg ICAgIHFpbnQ2NCBzaXplID0gcWludDY0KHdpZHRoKSAqIGhlaWdodDsKKysgICAgICAgICAgICBp ZiAocXRkZlRhYmxlRW5kIC0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KHRleHR1cmVE YXRhKSA8IHNpemUpIHsKKyAgICAgICAgICAgICAgICAgcVdhcm5pbmcoInF0ZGYgdGFibGUgdG9v IHNtYWxsIGluIGZvbnQgJyVzJy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBxUHJpbnRh YmxlKGZvbnQuZmFtaWx5TmFtZSgpKSk7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK K2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay91dGlsL3FxdWlja3N0eWxlZHRl eHQuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHlsZWR0ZXh0LmNw cAoraW5kZXggZDUzMWZjOTIwNS4uYTI1YWY5MDQxNCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrL3V0aWwvcXF1aWNrc3R5bGVkdGV4dC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrL3V0aWwvcXF1aWNrc3R5bGVkdGV4dC5jcHAKK0BAIC01NjQsNiArNTY0LDgg QEAgdm9pZCBRUXVpY2tTdHlsZWRUZXh0UHJpdmF0ZTo6cGFyc2VFbnRpdHkoY29uc3QgUUNoYXIg KiZjaCwgY29uc3QgUVN0cmluZyAmdGV4dEkKKyAgICAgICAgICAgICAgICAgdGV4dE91dCArPSBR Q2hhcig2MCk7CisgICAgICAgICAgICAgZWxzZSBpZiAoZW50aXR5ID09IFFMYXRpbjFTdHJpbmco ImFtcCIpKQorICAgICAgICAgICAgICAgICB0ZXh0T3V0ICs9IFFDaGFyKDM4KTsKKysgICAgICAg ICAgICBlbHNlIGlmIChlbnRpdHkgPT0gUUxhdGluMVN0cmluZygiYXBvcyIpKQorKyAgICAgICAg ICAgICAgICB0ZXh0T3V0ICs9IFFDaGFyKDM5KTsKKyAgICAgICAgICAgICBlbHNlIGlmIChlbnRp dHkgPT0gUUxhdGluMVN0cmluZygicXVvdCIpKQorICAgICAgICAgICAgICAgICB0ZXh0T3V0ICs9 IFFDaGFyKDM0KTsKKyAgICAgICAgICAgICBlbHNlIGlmIChlbnRpdHkgPT0gUUxhdGluMVN0cmlu ZygibmJzcCIpKQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9x YWNjZXNzaWJsZXF1aWNrd2lkZ2V0LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0 cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0LmNwcAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAwMDAuLjhhMWM5MDE4ODAKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0LmNwcAorQEAgLTAsMCAr MSwxMTAgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAy MDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9s aWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRRdWljayBtb2R1 bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAor KyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlk IGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRh bmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0 aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRo ZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91 IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRp b25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgor KyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0Lmlv L2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug VXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJz aW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBh bmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisr KiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGlu Zm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cworKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUg dXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQ dWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkg dGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcg aW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBp biB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5n CisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9n cGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLworKworKyNpbmNsdWRlICJxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaCIKKysK KysjaW5jbHVkZSAicXF1aWNrd2lkZ2V0X3AuaCIKKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysK KysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrCisrUUFjY2Vzc2libGVRdWlja1dpZGdl dDo6UUFjY2Vzc2libGVRdWlja1dpZGdldChRUXVpY2tXaWRnZXQqIHdpZGdldCkKKys6IFFBY2Nl c3NpYmxlV2lkZ2V0KHdpZGdldCkKKyssIG1fYWNjZXNzaWJsZVdpbmRvdyhRUXVpY2tXaWRnZXRQ cml2YXRlOjpnZXQod2lkZ2V0KS0+b2Zmc2NyZWVuV2luZG93KQorK3sKKysgICAgLy8gTk9URTog bV9hY2Nlc3NpYmxlV2luZG93IGlzIGEgUUFjY2Vzc2libGVRdWlja1dpbmRvdywgYW5kIG5vdCBh CisrICAgIC8vIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3cgKGRlZmluZWQg YmVsb3cpLiBUaGlzIG1lYW5zCisrICAgIC8vIGl0IHdpbGwgcmV0dXJuIHRoZSBRdWljayBpdGVt IGNoaWxkIGludGVyZmFjZXMsIHdoaWNoIGlzIHdoYXQncyBuZWVkZWQgaGVyZQorKyAgICAvLyAo dW5saWtlIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3csIHdoaWNoIHdpbGwg cmVwb3J0IDAgY2hpbGRyZW4pLgorK30KKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vz c2libGVRdWlja1dpZGdldDo6Y2hpbGQoaW50IGluZGV4KSBjb25zdAorK3sKKysgICAgcmV0dXJu IG1fYWNjZXNzaWJsZVdpbmRvdy5jaGlsZChpbmRleCk7CisrfQorKworK2ludCBRQWNjZXNzaWJs ZVF1aWNrV2lkZ2V0OjpjaGlsZENvdW50KCkgY29uc3QKKyt7CisrICAgIHJldHVybiBtX2FjY2Vz c2libGVXaW5kb3cuY2hpbGRDb3VudCgpOworK30KKysKKytpbnQgUUFjY2Vzc2libGVRdWlja1dp ZGdldDo6aW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSkgY29u c3QKKyt7CisrICAgIHJldHVybiBtX2FjY2Vzc2libGVXaW5kb3cuaW5kZXhPZkNoaWxkKGlmYWNl KTsKKyt9CisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6 OmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJs ZVdpbmRvdy5jaGlsZEF0KHgsIHkpOworK30KKysKKytRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zm c2NyZWVuV2luZG93OjpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KFFRdWlj a1dpbmRvdyAqd2luZG93KQorKzpRQWNjZXNzaWJsZVF1aWNrV2luZG93KHdpbmRvdykKKyt7Cisr CisrfQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zm c2NyZWVuV2luZG93OjpjaGlsZChpbnQgaW5kZXgpIGNvbnN0CisreworKyAgICBRX1VOVVNFRChp bmRleCk7CisrICAgIHJldHVybiBudWxscHRyOworK30KKysKKytpbnQgUUFjY2Vzc2libGVRdWlj a1dpZGdldE9mZnNjcmVlbldpbmRvdzo6Y2hpbGRDb3VudCgpIGNvbnN0CisreworKyAgICByZXR1 cm4gMDsKKyt9CisrCisraW50IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6 OmluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UpIGNvbnN0Cisr eworKyAgICBRX1VOVVNFRChpZmFjZSk7CisrICAgIHJldHVybiAtMTsKKyt9CisrCisrUUFjY2Vz c2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OlFB Y2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OmNoaWxkQXQoaW50IHgsIGludCB5 KSBjb25zdAorK3sKKysgICAgUV9VTlVTRUQoeCk7CisrICAgIFFfVU5VU0VEKHkpOworKyAgICBy ZXR1cm4gbnVsbHB0cjsKKyt9CisrCisrI2VuZGlmIC8vIGFjY2Vzc2liaWxpdHkKKysKKytRVF9F TkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRz L3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRn ZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5k ZXggMDAwMDAwMDAwMC4uN2MyYWI5MzBlMAorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5oCitAQCAtMCww ICsxLDk1IEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykg MjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8v bGljZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0UXVpY2sgbW9k dWxlIG9mIHRoZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQK KysqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxp ZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3Jk YW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGgg dGhlCisrKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0 aGUgdGVybXMgY29udGFpbmVkIGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlv dSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0 aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIK KysqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5p by9jb250YWN0LXVzLgorKyoqCisrKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVy c2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24g YW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQor KyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBp bmZvcm1hdGlvbiB0bworKyoqIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJl IHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiog UHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5 IHRoZSBLREUgRnJlZQorKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5n IGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQg aW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2lu ZworKyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgcmVxdWlyZW1lbnRzIHdpbGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Z3BsLTMuMC5odG1sLgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKysKKysjaWZuZGVmIFFBQ0NFU1NJQkxFUVVJQ0tXSURHRVRfSAorKyNkZWZp bmUgUUFDQ0VTU0lCTEVRVUlDS1dJREdFVF9ICisrCisrLy8KKysvLyAgVyBBIFIgTiBJIE4gRwor Ky8vICAtLS0tLS0tLS0tLS0tCisrLy8KKysvLyBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2YgdGhl IFF0IEFQSS4gIEl0IGV4aXN0cyBwdXJlbHkgYXMgYW4KKysvLyBpbXBsZW1lbnRhdGlvbiBkZXRh aWwuICBUaGlzIGhlYWRlciBmaWxlIG1heSBjaGFuZ2UgZnJvbSB2ZXJzaW9uIHRvCisrLy8gdmVy c2lvbiB3aXRob3V0IG5vdGljZSwgb3IgZXZlbiBiZSByZW1vdmVkLgorKy8vCisrLy8gV2UgbWVh biBpdC4KKysvLworKworKyNpbmNsdWRlICJxcXVpY2t3aWRnZXQuaCIKKysjaW5jbHVkZSA8UXRX aWRnZXRzL3FhY2Nlc3NpYmxld2lkZ2V0Lmg+CisrCisrI2luY2x1ZGUgPHByaXZhdGUvcWFjY2Vz c2libGVxdWlja3ZpZXdfcC5oPgorKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9D T05GSUcoYWNjZXNzaWJpbGl0eSkKKysKKysvLyBUaGVzZSBjbGFzc2VzIGltcGxlbWVudCB0aGUg UVF1aWNrV2lnZXQgYWNjZXNzaWJpbGl0eSBzd2l0Y2hhcm9vLAorKy8vIHdoZXJlIHRoZSBjaGls ZCBpdGVtcyBvZiB0aGUgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93IGFyZSByZXBvcnRlZAor Ky8vIGFzIGNoaWxkIGFjY2Vzc2libGUgaW50ZXJmYWNlcyBvZiB0aGUgUUFjY2Vzc2libGVRdWlj a1dpZGdldC4KKytjbGFzcyBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OiBwdWJsaWMgUUFjY2Vzc2li bGVXaWRnZXQKKyt7CisrcHVibGljOgorKyAgICBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0KFFRdWlj a1dpZGdldCogd2lkZ2V0KTsKKysKKysgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmNoaWxkKGlu dCBpbmRleCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGludCBjaGlsZENvdW50KCkgY29uc3Qgb3Zl cnJpZGU7CisrICAgIGludCBpbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2Ug KmlmYWNlKSBjb25zdCBvdmVycmlkZTsKKysgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmNoaWxk QXQoaW50IHgsIGludCB5KSBjb25zdCBvdmVycmlkZTsKKysKKytwcml2YXRlOgorKyAgICBRQWNj ZXNzaWJsZVF1aWNrV2luZG93IG1fYWNjZXNzaWJsZVdpbmRvdzsKKysgICAgUV9ESVNBQkxFX0NP UFkoUUFjY2Vzc2libGVRdWlja1dpZGdldCkKKyt9OworKworK2NsYXNzIFFBY2Nlc3NpYmxlUXVp Y2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6IHB1YmxpYyBRQWNjZXNzaWJsZVF1aWNrV2luZG93Cisr eworK3B1YmxpYzoKKysgICAgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhR UXVpY2tXaW5kb3cgKndpbmRvdyk7CisrICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGlsZChp bnQgaW5kZXgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBpbnQgY2hpbGRDb3VudCgpIGNvbnN0IG92 ZXJyaWRlOworKyAgICBpbnQgaW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNl ICppZmFjZSkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGls ZEF0KGludCB4LCBpbnQgeSkgY29uc3Qgb3ZlcnJpZGU7CisrfTsKKysKKysjZW5kaWYgLy8gYWNj ZXNzaWJpbGl0eQorKworK1FUX0VORF9OQU1FU1BBQ0UKKysKKysjZW5kaWYKK2RpZmYgLS1naXQg YS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZh Y3RvcnkuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVp Y2t3aWRnZXRmYWN0b3J5LmNwcAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAw MDAuLjdiYTg4YTE3NjkKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1 aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeS5jcHAKK0BAIC0wLDAgKzEs NjAgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIx IFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNl bnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRRdWljayBtb2R1bGUg b2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoq IENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNv bW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNl IHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUK KysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0 ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFu ZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25z IHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoq IGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2Nv bnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNh Z2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9u IDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQg YXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiog cGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9y bWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cworKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5n bnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNl ZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug dmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJs aWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhl IEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4g dGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0 aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisr KiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBy ZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwt My4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworKworKyNpbmNsdWRlICJxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgi CisrI2luY2x1ZGUgInFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5oIgorKworK1FUX0JFR0lOX05B TUVTUEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysKKytRQWNjZXNzaWJs ZUludGVyZmFjZSAqcUFjY2Vzc2libGVRdWlja1dpZGdldEZhY3RvcnkoY29uc3QgUVN0cmluZyAm Y2xhc3NuYW1lLCBRT2JqZWN0ICpvYmplY3QpCisreworKyAgICBpZiAoY2xhc3NuYW1lID09IFFM YXRpbjFTdHJpbmcoIlFRdWlja1dpZGdldCIpKSB7CisrICAgICAgICByZXR1cm4gbmV3IFFBY2Nl c3NpYmxlUXVpY2tXaWRnZXQocW9iamVjdF9jYXN0PFFRdWlja1dpZGdldCAqPihvYmplY3QpKTsK KysgICAgfSBlbHNlIGlmIChjbGFzc25hbWUgPT0gUUxhdGluMVN0cmluZygiUVF1aWNrV2lkZ2V0 T2Zmc2NyZWVuV2luZG93IikpIHsKKysgICAgICAgIHJldHVybiBuZXcgUUFjY2Vzc2libGVRdWlj a1dpZGdldE9mZnNjcmVlbldpbmRvdyhxb2JqZWN0X2Nhc3Q8UVF1aWNrV2luZG93ICo+KG9iamVj dCkpOworKyAgICB9CisrICAgIHJldHVybiAwOworK30KKysKKysjZW5kaWYgLy8gYWNjZXNzaWJp bGl0eQorKworK1FUX0VORF9OQU1FU1BBQ0UKKysKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZl L3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oIGIvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5 X3AuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjhjNjNiMDlmODEK Ky0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNj ZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgKK0BAIC0wLDAgKzEsNjYgQEAKKysvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55 IEx0ZC4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysq KiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xr aXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGlj ZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGlj ZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1l cmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBv ciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQg aW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFu eS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3 dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVz ZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioK KysqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5h dGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRo ZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRo aXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiog ZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJl cXVpcmVtZW50cworKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz L2xncGwtMy4wLmh0bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2Fn ZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3Ig KGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJz aW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiog UXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5T RS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9m IHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24g dG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2ls bAorKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwg YW5kCisrKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioK KysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNp bmNsdWRlIDxRdEd1aS9xYWNjZXNzaWJsZS5oPgorKworKyNpZm5kZWYgUUFDQ0VTU0lCTEVRVUlD S1dJREdFVEZBQ1RPUllfSAorKyNkZWZpbmUgUUFDQ0VTU0lCTEVRVUlDS1dJREdFVEZBQ1RPUllf SAorKworKy8vCisrLy8gIFcgQSBSIE4gSSBOIEcKKysvLyAgLS0tLS0tLS0tLS0tLQorKy8vCisr Ly8gVGhpcyBmaWxlIGlzIG5vdCBwYXJ0IG9mIHRoZSBRdCBBUEkuICBJdCBleGlzdHMgcHVyZWx5 IGFzIGFuCisrLy8gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVGhpcyBoZWFkZXIgZmlsZSBtYXkg Y2hhbmdlIGZyb20gdmVyc2lvbiB0bworKy8vIHZlcnNpb24gd2l0aG91dCBub3RpY2UsIG9yIGV2 ZW4gYmUgcmVtb3ZlZC4KKysvLworKy8vIFdlIG1lYW4gaXQuCisrLy8KKysKKytRVF9CRUdJTl9O QU1FU1BBQ0UKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrCisrUUFjY2Vzc2li bGVJbnRlcmZhY2UgKnFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRGYWN0b3J5KGNvbnN0IFFTdHJpbmcg JmNsYXNzbmFtZSwgUU9iamVjdCAqb2JqZWN0KTsKKysKKysjZW5kaWYKKysKKytRVF9FTkRfTkFN RVNQQUNFCisrCisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3 aWRnZXRzL3FxdWlja3dpZGdldC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMv cXF1aWNrd2lkZ2V0LmNwcAoraW5kZXggMzk3ODBmOGRlMy4uOWM5N2I0MzUxOCAxMDA2NDQKKy0t LSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3BwCisrKysg Yi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcAorQEAgLTM5 LDYgKzM5LDcgQEAKKyAKKyAjaW5jbHVkZSAicXF1aWNrd2lkZ2V0LmgiCisgI2luY2x1ZGUgInFx dWlja3dpZGdldF9wLmgiCisrI2luY2x1ZGUgInFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5 X3AuaCIKKyAKKyAjaW5jbHVkZSAicHJpdmF0ZS9xcXVpY2t3aW5kb3dfcC5oIgorICNpbmNsdWRl ICJwcml2YXRlL3FxdWlja2l0ZW1fcC5oIgorQEAgLTc1LDkgKzc2LDE2IEBACisgCisgUVRfQkVH SU5fTkFNRVNQQUNFCisgCisrUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpRUXVpY2tXaWRn ZXRPZmZzY3JlZW5XaW5kb3coUVF1aWNrV2luZG93UHJpdmF0ZSAmZGQsIFFRdWlja1JlbmRlckNv bnRyb2wgKmNvbnRyb2wpCisrOlFRdWlja1dpbmRvdyhkZCwgY29udHJvbCkKKyt7CisrICAgIHNl dFRpdGxlKFFTdHJpbmc6OmZyb21MYXRpbjEoIk9mZnNjcmVlbiIpKTsKKysgICAgc2V0T2JqZWN0 TmFtZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJRUXVpY2tPZmZTY3JlZW5XaW5kb3ciKSk7CisrfQor KworIC8vIG92ZXJyaWRlIHNldFZpc2JsZSB0byBwcmV2ZW50IGFjY2lkZW50YWwgb2Zmc2NyZWVu IHdpbmRvdyBiZWluZyBjcmVhdGVkCisgLy8gYnkgYmFzZSBjbGFzcy4KKy1jbGFzcyBRUXVpY2tP ZmZjcmVlbldpbmRvd1ByaXZhdGU6IHB1YmxpYyBRUXVpY2tXaW5kb3dQcml2YXRlIHsKKytjbGFz cyBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3dQcml2YXRlOiBwdWJsaWMgUVF1aWNrV2luZG93 UHJpdmF0ZSB7CisgcHVibGljOgorICAgICB2b2lkIHNldFZpc2libGUoYm9vbCB2aXNpYmxlKSBv dmVycmlkZSB7CisgICAgICAgICBRX1EoUVdpbmRvdyk7CitAQCAtMTA1LDkgKzExMyw4IEBAIHZv aWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6aW5pdChRUW1sRW5naW5lKiBlKQorICAgICBRX1EoUVF1 aWNrV2lkZ2V0KTsKKyAKKyAgICAgcmVuZGVyQ29udHJvbCA9IG5ldyBRUXVpY2tXaWRnZXRSZW5k ZXJDb250cm9sKHEpOworLSAgICBvZmZzY3JlZW5XaW5kb3cgPSBuZXcgUVF1aWNrV2luZG93KCpu ZXcgUVF1aWNrT2ZmY3JlZW5XaW5kb3dQcml2YXRlKCkscmVuZGVyQ29udHJvbCk7CistICAgIG9m ZnNjcmVlbldpbmRvdy0+c2V0VGl0bGUoUVN0cmluZzo6ZnJvbUxhdGluMSgiT2Zmc2NyZWVuIikp OworLSAgICBvZmZzY3JlZW5XaW5kb3ctPnNldE9iamVjdE5hbWUoUVN0cmluZzo6ZnJvbUxhdGlu MSgiUVF1aWNrT2ZmU2NyZWVuV2luZG93IikpOworKyAgICBvZmZzY3JlZW5XaW5kb3cgPSBuZXcg UVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KCpuZXcgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2lu ZG93UHJpdmF0ZSgpLCByZW5kZXJDb250cm9sKTsKKysgICAgb2Zmc2NyZWVuV2luZG93LT5zZXRT Y3JlZW4ocS0+c2NyZWVuKCkpOworICAgICAvLyBEbyBub3QgY2FsbCBjcmVhdGUoKSBvbiBvZmZz Y3JlZW5XaW5kb3cuCisgCisgICAgIC8vIENoZWNrIGlmIHRoZSBTb2Z0d2FyZSBBZGFwdGF0aW9u IGlzIGJlaW5nIHVzZWQKK0BAIC0xMzgsNiArMTQ1LDEwIEBAIHZvaWQgUVF1aWNrV2lkZ2V0UHJp dmF0ZTo6aW5pdChRUW1sRW5naW5lKiBlKQorICAgICBRV2lkZ2V0Ojpjb25uZWN0KG9mZnNjcmVl bldpbmRvdywgJlFRdWlja1dpbmRvdzo6Zm9jdXNPYmplY3RDaGFuZ2VkLCBxLCAmUVF1aWNrV2lk Z2V0Ojpwcm9wYWdhdGVGb2N1c09iamVjdENoYW5nZWQpOworICAgICBRT2JqZWN0Ojpjb25uZWN0 KHJlbmRlckNvbnRyb2wsIFNJR05BTChyZW5kZXJSZXF1ZXN0ZWQoKSksIHEsIFNMT1QodHJpZ2dl clVwZGF0ZSgpKSk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocmVuZGVyQ29udHJvbCwgU0lHTkFM KHNjZW5lQ2hhbmdlZCgpKSwgcSwgU0xPVCh0cmlnZ2VyVXBkYXRlKCkpKTsKKysKKysjaWYgUVRf Q09ORklHKGFjY2Vzc2liaWxpdHkpCisrICAgIFFBY2Nlc3NpYmxlOjppbnN0YWxsRmFjdG9yeSgm cUFjY2Vzc2libGVRdWlja1dpZGdldEZhY3RvcnkpOworKyNlbmRpZgorIH0KKyAKKyB2b2lkIFFR dWlja1dpZGdldFByaXZhdGU6OmVuc3VyZUVuZ2luZSgpIGNvbnN0CitAQCAtOTAxLDkgKzkxMiw3 IEBAIHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6Y3JlYXRlQ29udGV4dCgpCisgCisgICAgICAg ICBjb250ZXh0ID0gbmV3IFFPcGVuR0xDb250ZXh0OworICAgICAgICAgY29udGV4dC0+c2V0Rm9y bWF0KG9mZnNjcmVlbldpbmRvdy0+cmVxdWVzdGVkRm9ybWF0KCkpOworLSAgICAgICAgY29uc3Qg UVdpbmRvdyAqd2luID0gcS0+d2luZG93KCktPndpbmRvd0hhbmRsZSgpOworLSAgICAgICAgaWYg KHdpbiAmJiB3aW4tPnNjcmVlbigpKQorLSAgICAgICAgICAgIGNvbnRleHQtPnNldFNjcmVlbih3 aW4tPnNjcmVlbigpKTsKKysgICAgICAgIGNvbnRleHQtPnNldFNjcmVlbihxLT5zY3JlZW4oKSk7 CisgICAgICAgICBRT3BlbkdMQ29udGV4dCAqc2hhcmVDb250ZXh0ID0gcXRfZ2xfZ2xvYmFsX3No YXJlX2NvbnRleHQoKTsKKyAgICAgICAgIGlmICghc2hhcmVDb250ZXh0KQorICAgICAgICAgICAg IHNoYXJlQ29udGV4dCA9IFFXaWRnZXRQcml2YXRlOjpnZXQocS0+d2luZG93KCkpLT5zaGFyZUNv bnRleHQoKTsKK0BAIC0xNTIwLDE5ICsxNTI5LDE2IEBAIGJvb2wgUVF1aWNrV2lkZ2V0OjpldmVu dChRRXZlbnQgKmUpCisgICAgICAgICBkLT5oYW5kbGVXaW5kb3dDaGFuZ2UoKTsKKyAgICAgICAg IGJyZWFrOworIAorLSAgICBjYXNlIFFFdmVudDo6U2NyZWVuQ2hhbmdlSW50ZXJuYWw6CistICAg ICAgICBpZiAoUVdpbmRvdyAqd2luZG93ID0gdGhpcy0+d2luZG93KCktPndpbmRvd0hhbmRsZSgp KSB7CistICAgICAgICAgICAgUVNjcmVlbiAqbmV3U2NyZWVuID0gd2luZG93LT5zY3JlZW4oKTsK Ky0KKy0gICAgICAgICAgICBpZiAoZC0+b2Zmc2NyZWVuV2luZG93KQorLSAgICAgICAgICAgICAg ICBkLT5vZmZzY3JlZW5XaW5kb3ctPnNldFNjcmVlbihuZXdTY3JlZW4pOworLSAgICAgICAgICAg IGlmIChkLT5vZmZzY3JlZW5TdXJmYWNlKQorLSAgICAgICAgICAgICAgICBkLT5vZmZzY3JlZW5T dXJmYWNlLT5zZXRTY3JlZW4obmV3U2NyZWVuKTsKKysgICAgY2FzZSBRRXZlbnQ6OlNjcmVlbkNo YW5nZUludGVybmFsOiB7CisrICAgICAgICBRU2NyZWVuICpuZXdTY3JlZW4gPSBzY3JlZW4oKTsK KysgICAgICAgIGlmIChkLT5vZmZzY3JlZW5XaW5kb3cpCisrICAgICAgICAgICAgZC0+b2Zmc2Ny ZWVuV2luZG93LT5zZXRTY3JlZW4obmV3U2NyZWVuKTsKKysgICAgICAgIGlmIChkLT5vZmZzY3Jl ZW5TdXJmYWNlKQorKyAgICAgICAgICAgIGQtPm9mZnNjcmVlblN1cmZhY2UtPnNldFNjcmVlbihu ZXdTY3JlZW4pOworICNpZiBRVF9DT05GSUcob3BlbmdsKQorLSAgICAgICAgICAgIGlmIChkLT5j b250ZXh0KQorLSAgICAgICAgICAgICAgICBkLT5jb250ZXh0LT5zZXRTY3JlZW4obmV3U2NyZWVu KTsKKysgICAgICAgIGlmIChkLT5jb250ZXh0KQorKyAgICAgICAgICAgIGQtPmNvbnRleHQtPnNl dFNjcmVlbihuZXdTY3JlZW4pOworICNlbmRpZgorLSAgICAgICAgfQorIAorICAgICAgICAgaWYg KGQtPnVzZVNvZnR3YXJlUmVuZGVyZXIKKyAjaWYgUVRfQ09ORklHKG9wZW5nbCkKK0BAIC0xNTQ1 LDcgKzE1NTEsNyBAQCBib29sIFFRdWlja1dpZGdldDo6ZXZlbnQoUUV2ZW50ICplKQorICAgICAg ICAgICAgIGQtPnJlbmRlcih0cnVlKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworLQor KyAgICB9CisgICAgIGNhc2UgUUV2ZW50OjpTaG93OgorICAgICBjYXNlIFFFdmVudDo6TW92ZToK KyAgICAgICAgIGQtPnVwZGF0ZVBvc2l0aW9uKCk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldF9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9x dWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0X3AuaAoraW5kZXggODgxZjdmOTIyMC4uMWE5NDZiY2M3 MSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRn ZXRfcC5oCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0 X3AuaAorQEAgLTE0OCw2ICsxNDgsMTQgQEAgcHVibGljOgorICAgICBib29sIGZvcmNlRnVsbFVw ZGF0ZTsKKyB9OworIAorK2NsYXNzIFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzogcHVibGlj IFFRdWlja1dpbmRvdworK3sKKysgICAgUV9PQkpFQ1QKKysKKytwdWJsaWM6CisrICAgIFFRdWlj a1dpZGdldE9mZnNjcmVlbldpbmRvdyhRUXVpY2tXaW5kb3dQcml2YXRlICZkZCwgUVF1aWNrUmVu ZGVyQ29udHJvbCAqY29udHJvbCk7CisrfTsKKysKKyBRVF9FTkRfTkFNRVNQQUNFCisgCisgI2Vu ZGlmIC8vIFFRdWlja1dpZGdldF9QX0gKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9x dWlja3dpZGdldHMvcXVpY2t3aWRnZXRzLnBybyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lk Z2V0cy9xdWlja3dpZGdldHMucHJvCitpbmRleCAyNDM4ZTU3N2FlLi44NWQxNTZiOGEzIDEwMDY0 NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8K KysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMucHJvCitA QCAtNyw5ICs3LDEzIEBAIERFRklORVMgICArPSBRVF9OT19VUkxfQ0FTVF9GUk9NX1NUUklORyBR VF9OT19JTlRFR0VSX0VWRU5UX0NPT1JESU5BVEVTIFFUX05PX0ZPCisgSEVBREVSUyArPSBcCisg ICAgIHFxdWlja3dpZGdldC5oIFwKKyAgICAgcXF1aWNrd2lkZ2V0X3AuaCBcCistICAgIHF0cXVp Y2t3aWRnZXRzZ2xvYmFsLmgKKysgICAgcXRxdWlja3dpZGdldHNnbG9iYWwuaCBcCisrICAgIHFh Y2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5oIFwKKysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdldGZh Y3RvcnlfcC5oCisgCisgU09VUkNFUyArPSBcCistICAgIHFxdWlja3dpZGdldC5jcHAKKysgICAg cXF1aWNrd2lkZ2V0LmNwcCBcCisrICAgIHFhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwIFwKKysg ICAgcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnkuY3BwCisgCisgbG9hZChxdF9tb2R1bGUp CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdpbmUvdHN0 X3Fqc2VuZ2luZS5jcHAgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90 c3RfcWpzZW5naW5lLmNwcAoraW5kZXggM2I3ZDc0ZGY2My4uYjc1YmY4MjBkNSAxMDA2NDQKKy0t LSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcWpzZW5naW5lL3RzdF9xanNlbmdpbmUu Y3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpz ZW5naW5lLmNwcAorQEAgLTEwMiw2ICsxMDIsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lk IHZhbHVlQ29udmVyc2lvbl9SZWd1bGFyRXhwcmVzc2lvbigpOworICAgICB2b2lkIGNhc3RXaXRo TXVsdGlwbGVJbmhlcml0YW5jZSgpOworICAgICB2b2lkIGNvbGxlY3RHYXJiYWdlKCk7CisrICAg IHZvaWQgY29sbGVjdEdhcmJhZ2VOZXN0ZWRXcmFwcGVyc1R3b0VuZ2luZXMoKTsKKyAgICAgdm9p ZCBnY1dpdGhOZXN0ZWREYXRhU3RydWN0dXJlKCk7CisgICAgIHZvaWQgc3RhY2t0cmFjZSgpOwor ICAgICB2b2lkIG51bWJlclBhcnNpbmdfZGF0YSgpOworQEAgLTE4MDksNiArMTgxMCw0NCBAQCB2 b2lkIHRzdF9RSlNFbmdpbmU6OmNvbGxlY3RHYXJiYWdlKCkKKyAgICAgUVZFUklGWShwdHIuaXNO dWxsKCkpOworIH0KKyAKKytjbGFzcyBUZXN0T2JqZWN0Q29udGFpbmVyIDogcHVibGljIFFPYmpl Y3QKKyt7CisrICAgIFFfT0JKRUNUCisrICAgIFFfUFJPUEVSVFkoUU9iamVjdCAqZHVtbXkgTUVN QkVSIG1fZHVtbXkgQ09OU1RBTlQpCisrCisrcHVibGljOgorKyAgICBUZXN0T2JqZWN0Q29udGFp bmVyKCkgOiBtX2R1bW15KG5ldyBRT2JqZWN0KHRoaXMpKSB7fQorKworK3ByaXZhdGU6CisrICAg IFFPYmplY3QgKm1fZHVtbXk7CisrfTsKKysKKyt2b2lkIHRzdF9RSlNFbmdpbmU6OmNvbGxlY3RH YXJiYWdlTmVzdGVkV3JhcHBlcnNUd29FbmdpbmVzKCkKKyt7CisrICAgIFFKU0VuZ2luZSBlbmdp bmUxOworKyAgICBRSlNFbmdpbmUgZW5naW5lMjsKKysKKysgICAgVGVzdE9iamVjdENvbnRhaW5l ciBjb250YWluZXI7CisrICAgIFFRbWxFbmdpbmU6OnNldE9iamVjdE93bmVyc2hpcCgmY29udGFp bmVyLCBRUW1sRW5naW5lOjpDcHBPd25lcnNoaXApOworKworKyAgICBlbmdpbmUxLmdsb2JhbE9i amVjdCgpLnNldFByb3BlcnR5KCJmb29iYXIiLCBlbmdpbmUxLm5ld1FPYmplY3QoJmNvbnRhaW5l cikpOworKyAgICBlbmdpbmUyLmdsb2JhbE9iamVjdCgpLnNldFByb3BlcnR5KCJmb29iYXIiLCBl bmdpbmUyLm5ld1FPYmplY3QoJmNvbnRhaW5lcikpOworKworKyAgICBlbmdpbmUxLmV2YWx1YXRl KCJmb29iYXIuZHVtbXkuYmF6ID0gNDIiKTsKKysgICAgZW5naW5lMi5ldmFsdWF0ZSgiZm9vYmFy LmR1bW15LmJheiA9IDQzIik7CisrCisrICAgIFFDT01QQVJFKGVuZ2luZTEuZXZhbHVhdGUoImZv b2Jhci5kdW1teS5iYXoiKS50b0ludCgpLCA0Mik7CisrICAgIFFDT01QQVJFKGVuZ2luZTIuZXZh bHVhdGUoImZvb2Jhci5kdW1teS5iYXoiKS50b0ludCgpLCA0Myk7CisrCisrICAgIGVuZ2luZTEu Y29sbGVjdEdhcmJhZ2UoKTsKKysgICAgZW5naW5lMi5jb2xsZWN0R2FyYmFnZSgpOworKworKyAg ICAvLyBUaGUgR0Mgc2hvdWxkIG5vdCBjb2xsZWN0IGR1bW15IG9iamVjdCB3cmFwcGVycyBuZWl0 aGVyIGluIGVuZ2luZTEgbm9yIGVuZ2luZTIsIHdlCisrICAgIC8vIHZlcmlmeSB0aGF0IGJ5IGNo ZWNraW5nIHdoZXRoZXIgdGhlIGJheiBwcm9wZXJ0eSBzdGlsbCBoYXMgaXRzIHByZXZpb3VzIHZh bHVlLgorKyAgICBRQ09NUEFSRShlbmdpbmUxLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6Iiku dG9JbnQoKSwgNDIpOworKyAgICBRQ09NUEFSRShlbmdpbmUyLmV2YWx1YXRlKCJmb29iYXIuZHVt bXkuYmF6IikudG9JbnQoKSwgNDMpOworK30KKysKKyB2b2lkIHRzdF9RSlNFbmdpbmU6OmdjV2l0 aE5lc3RlZERhdGFTdHJ1Y3R1cmUoKQorIHsKKyAgICAgLy8gVGhlIEdDIG11c3QgYmUgYWJsZSB0 byB0cmF2ZXJzZSBkZWVwbHkgbmVzdGVkIG9iamVjdHMsIG90aGVyd2lzZSB0aGlzCitkaWZmIC0t Z2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC9kYXRh L3JlZHJhd1Vwb25Db2x1bW5DaGFuZ2UucW1sIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3Ft bC9xcW1sZGVsZWdhdGVtb2RlbC9kYXRhL3JlZHJhd1Vwb25Db2x1bW5DaGFuZ2UucW1sCituZXcg ZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjA2MTMzYmIzOQorLS0tIC9kZXYv bnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2Rl bC9kYXRhL3JlZHJhd1Vwb25Db2x1bW5DaGFuZ2UucW1sCitAQCAtMCwwICsxLDExIEBACisraW1w b3J0IFF0UXVpY2sgMi44CisrCisrTGlzdFZpZXcgeworKyAgICBpZDogcm9vdAorKyAgICB3aWR0 aDogMjAwCisrICAgIGhlaWdodDogMjAwCisrCisrICAgIGRlbGVnYXRlOiBUZXh0IHsKKysgICAg ICAgIHRleHQ6IGRpc3BsYXkKKysgICAgfQorK30KK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZl L3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2RlbC5j cHAgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL3RzdF9x cW1sZGVsZWdhdGVtb2RlbC5jcHAKK2luZGV4IDM1ZjFlMmM5NGQuLjE3MjI0NDc4MzAgMTAwNjQ0 CistLS0gYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL3Rz dF9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9x bWwvcXFtbGRlbGVnYXRlbW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorQEAgLTI3LDYg KzI3LDggQEAKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAorICNpbmNsdWRlIDxRdFRlc3QvcXRl c3QuaD4KKysjaW5jbHVkZSA8UXRDb3JlL1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWw+Cisr I2luY2x1ZGUgPFF0R3VpL1FTdGFuZGFyZEl0ZW1Nb2RlbD4KKyAjaW5jbHVkZSA8UXRRbWwvcXFt bGNvbXBvbmVudC5oPgorICNpbmNsdWRlIDxRdFFtbE1vZGVscy9wcml2YXRlL3FxbWxkZWxlZ2F0 ZW1vZGVsX3AuaD4KKyAjaW5jbHVkZSA8UXRRdWljay9xcXVpY2t2aWV3Lmg+CitAQCAtNDcsNiAr NDksNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGZpbHRlck9uR3JvdXBfcmVtb3ZlV2hl bkNvbXBsZXRlZCgpOworICAgICB2b2lkIHF0YnVnXzg2MDE3KCk7CisgICAgIHZvaWQgY29udGV4 dEFjY2Vzc2VkQnlIYW5kbGVyKCk7CisrICAgIHZvaWQgcmVkcmF3VXBvbkNvbHVtbkNoYW5nZSgp OworIH07CisgCisgY2xhc3MgQWJzdHJhY3RJdGVtTW9kZWwgOiBwdWJsaWMgUUFic3RyYWN0SXRl bU1vZGVsCitAQCAtMTg2LDYgKzE4OSwzMCBAQCB2b2lkIHRzdF9RUW1sRGVsZWdhdGVNb2RlbDo6 Y29udGV4dEFjY2Vzc2VkQnlIYW5kbGVyKCkKKyAgICAgUVZFUklGWShyb290LT5wcm9wZXJ0eSgi d29ya3MiKS50b0Jvb2woKSk7CisgfQorIAorK3ZvaWQgdHN0X1FRbWxEZWxlZ2F0ZU1vZGVsOjpy ZWRyYXdVcG9uQ29sdW1uQ2hhbmdlKCkKKyt7CisrICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCBtMTsK KysgICAgbTEuYXBwZW5kUm93KHsKKysgICAgICAgICAgICBuZXcgUVN0YW5kYXJkSXRlbSgiQmFu YW5hIiksCisrICAgICAgICAgICAgbmV3IFFTdGFuZGFyZEl0ZW0oIkNvY29udXQiKSwKKysgICAg fSk7CisrCisrICAgIFFRdWlja1ZpZXcgdmlldyh0ZXN0RmlsZVVybCgicmVkcmF3VXBvbkNvbHVt bkNoYW5nZS5xbWwiKSk7CisrICAgIFFDT01QQVJFKHZpZXcuc3RhdHVzKCksIFFRdWlja1ZpZXc6 OlJlYWR5KTsKKysgICAgdmlldy5zaG93KCk7CisrICAgIFFRdWlja0l0ZW0gKnJvb3QgPSB2aWV3 LnJvb3RPYmplY3QoKTsKKysgICAgcm9vdC0+c2V0UHJvcGVydHkoIm1vZGVsIiwgUVZhcmlhbnQ6 OmZyb21WYWx1ZTxRT2JqZWN0ICo+KCZtMSkpOworKworKyAgICBRT2JqZWN0ICppdGVtID0gcm9v dC0+cHJvcGVydHkoImN1cnJlbnRJdGVtIikudmFsdWU8UU9iamVjdCAqPigpOworKyAgICBRVkVS SUZZKGl0ZW0pOworKyAgICBRQ09NUEFSRShpdGVtLT5wcm9wZXJ0eSgidGV4dCIpLnRvU3RyaW5n KCksICJCYW5hbmEiKTsKKysKKysgICAgUVZFUklGWShyb290KTsKKysgICAgbTEucmVtb3ZlQ29s dW1uKDApOworKworKyAgICBRQ09NUEFSRShpdGVtLT5wcm9wZXJ0eSgidGV4dCIpLnRvU3RyaW5n KCksICJDb2NvbnV0Iik7CisrfQorKworIFFURVNUX01BSU4odHN0X1FRbWxEZWxlZ2F0ZU1vZGVs KQorIAorICNpbmNsdWRlICJ0c3RfcXFtbGRlbGVnYXRlbW9kZWwubW9jIgorZGlmZiAtLWdpdCBh L3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXY0bW0vdHN0X3F2NG1tLmNwcCBiL3F0ZGVj bGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXY0bW0vdHN0X3F2NG1tLmNwcAoraW5kZXggNWQ2MzVh YTYzYi4uODI0ZmQ4OWU1YiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9x bWwvcXY0bW0vdHN0X3F2NG1tLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3Ft bC9xdjRtbS90c3RfcXY0bW0uY3BwCitAQCAtNzYsMTAgKzc2LDEwIEBAIHZvaWQgdHN0X3F2NG1t OjptdWx0aVdyYXBwZWRRT2JqZWN0cygpCisgICAgICAgICBRQ09NUEFSRShlbmdpbmUxLm1lbW9y eU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNpemUoKSwgMSk7Cisg ICAgICAgICBRQ09NUEFSRShlbmdpbmUyLm1lbW9yeU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVkT2Jq ZWN0V3JhcHBlclZhbHVlLnNpemUoKSwgMCk7CisgCistICAgICAgICAvLyBNb3ZlcyB0aGUgYWRk aXRpb25hbCBXZWFrVmFsdWUgZnJvbSBtX211bHRpcGx5V3JhcHBlZFFPYmplY3RzIHRvCistICAg ICAgICAvLyBtX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZS4gSXQncyBzdGlsbCBhbGl2 ZSBhZnRlciBhbGwuCisrICAgICAgICAvLyBUaGUgYWRkaXRpb25hbCBXZWFrVmFsdWUgZnJvbSBt X211bHRpcGx5V3JhcHBlZFFPYmplY3RzIGhhc24ndCBiZWVuIG1vdmVkCisrICAgICAgICAvLyB0 byBtX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZSB5ZXQuIEl0J3Mgc3RpbGwgYWxpdmUg YWZ0ZXIgYWxsLgorICAgICAgICAgZW5naW5lMS5tZW1vcnlNYW5hZ2VyLT5ydW5HQygpOworLSAg ICAgICAgUUNPTVBBUkUoZW5naW5lMS5tZW1vcnlNYW5hZ2VyLT5tX3BlbmRpbmdGcmVlZE9iamVj dFdyYXBwZXJWYWx1ZS5zaXplKCksIDIpOworKyAgICAgICAgUUNPTVBBUkUoZW5naW5lMS5tZW1v cnlNYW5hZ2VyLT5tX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZS5zaXplKCksIDEpOwor IAorICAgICAgICAgLy8gZW5naW5lMiBkb2Vzbid0IG93biB0aGUgb2JqZWN0IGFzIGVuZ2luZTEg d2FzIHRoZSBmaXJzdCB0byB3cmFwIGl0IGFib3ZlLgorICAgICAgICAgLy8gVGhlcmVmb3JlLCBu byBlZmZlY3QgaGVyZS4KK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVp Y2svcXF1aWNraXRlbTIvZGF0YS9hY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcDMucW1sIGIv cXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL2RhdGEvYWN0aXZlRm9j dXNPblRhYl9pbmZpbml0ZUxvb3AzLnFtbAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAwMDAuLjg4OWU0ODBmM2IKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUv dGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi9kYXRhL2FjdGl2ZUZvY3VzT25UYWJfaW5maW5p dGVMb29wMy5xbWwKK0BAIC0wLDAgKzEsMTMgQEAKKytpbXBvcnQgUXRRdWljayAyLjYKKysKKytJ dGVtIHsKKysgICAgdmlzaWJsZTogdHJ1ZQorKyAgICBJdGVtIHsKKysgICAgICAgIHZpc2libGU6 IGZhbHNlCisrICAgICAgICBJdGVtIHsKKysgICAgICAgICAgICBvYmplY3ROYW1lOiAiaGlkZGVu Q2hpbGQiCisrICAgICAgICAgICAgYWN0aXZlRm9jdXNPblRhYjogdHJ1ZQorKyAgICAgICAgICAg IGZvY3VzOiB0cnVlCisrICAgICAgICB9CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvcXRkZWNs YXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL3RzdF9xcXVpY2tpdGVtLmNwcCBi L3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi90c3RfcXF1aWNraXRl bS5jcHAKK2luZGV4IGM4ZjI1MWRiZTEuLmM4ZWYzNmVlNjggMTAwNjQ0CistLS0gYS9xdGRlY2xh cmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvdHN0X3FxdWlja2l0ZW0uY3BwCisr KysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvdHN0X3FxdWlj a2l0ZW0uY3BwCitAQCAtNjcsNiArNjcsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGFj dGl2ZUZvY3VzT25UYWIxMCgpOworICAgICB2b2lkIGFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVM b29wX2RhdGEoKTsKKyAgICAgdm9pZCBhY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcCgpOwor KyAgICB2b2lkIGFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wQ29udHJvbHMoKTsKKyAKKyAg ICAgdm9pZCBuZXh0SXRlbUluRm9jdXNDaGFpbigpOworICAgICB2b2lkIG5leHRJdGVtSW5Gb2N1 c0NoYWluMigpOworQEAgLTEwNTcsNiArMTA1OCwxNyBAQCB2b2lkIHRzdF9RUXVpY2tJdGVtOjph Y3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcCgpCisgICAgIFFDT01QQVJFKGl0ZW0sIHdpbmRv dy0+cm9vdE9iamVjdCgpKTsKKyB9CisgCisrCisrdm9pZCB0c3RfUVF1aWNrSXRlbTo6YWN0aXZl Rm9jdXNPblRhYl9pbmZpbml0ZUxvb3BDb250cm9scygpCisreworKyAgICBhdXRvIHNvdXJjZSA9 IHRlc3RGaWxlVXJsKCJhY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcDMucW1sIik7CisrICAg IFFTY29wZWRQb2ludGVyPFFRdWlja1ZpZXc+d2luZG93KG5ldyBRUXVpY2tWaWV3KCkpOworKyAg ICB3aW5kb3ctPnNldFNvdXJjZShzb3VyY2UpOworKyAgICB3aW5kb3ctPnNob3coKTsKKysgICAg UVZFUklGWSh3aW5kb3ctPmVycm9ycygpLmlzRW1wdHkoKSk7CisrICAgIFFUZXN0OjprZXlDbGlj ayh3aW5kb3cuZ2V0KCksIFF0OjpLZXlfVGFiKTsgLy8gc2hvdWxkIG5vdCBoYW5nCisrfQorKwor IHZvaWQgdHN0X1FRdWlja0l0ZW06Om5leHRJdGVtSW5Gb2N1c0NoYWluKCkKKyB7CisgICAgIGlm ICghcXRfdGFiX2FsbF93aWRnZXRzKCkpCitTdWJtb2R1bGUgcXRkb2MgYzBjN2JmMDcuLi43OWQ2 ZWY2OToKK1N1Ym1vZHVsZSBxdGltYWdlZm9ybWF0cyAyZGNmMjg5OS4uYWJlNDRjMGY6CitkaWZm IC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWlj bnNoYW5kbGVyLmNwcCBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9p Y25zL3FpY25zaGFuZGxlci5jcHAKK2luZGV4IGRkZTc4M2MuLjFiZjkwNzQgMTAwNjQ0CistLS0g YS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRs ZXIuY3BwCisrKysgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvaWNu cy9xaWNuc2hhbmRsZXIuY3BwCitAQCAtNDYyLDggKzQ2MiwxMiBAQCBzdGF0aWMgYm9vbCBwYXJz ZUljb25FbnRyeUluZm8oSUNOU0VudHJ5ICZpY29uKQorICAgICBpZiAoaXNJY29uQ29tcHJlc3Nl ZChpY29uKSkKKyAgICAgICAgIHJldHVybiB0cnVlOworICAgICAvLyBJY29uIGRlcHRoOgorLSAg ICBpZiAoIWRlcHRoLmlzRW1wdHkoKSkKKy0gICAgICAgIGljb24uZGVwdGggPSBJQ05TRW50cnk6 OkRlcHRoKGRlcHRoLnRvVUludCgpKTsKKysgICAgaWYgKCFkZXB0aC5pc0VtcHR5KCkpIHsKKysg ICAgICAgIGNvbnN0IHVpbnQgZGVwdGhVSW50ID0gZGVwdGgudG9VSW50KCk7CisrICAgICAgICBp ZiAoZGVwdGhVSW50ID4gMzIpCisrICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAg aWNvbi5kZXB0aCA9IElDTlNFbnRyeTo6RGVwdGgoZGVwdGhVSW50KTsKKysgICAgfQorICAgICAv LyBUcnkgbW9ubyBpZiBkZXB0aCBub3QgZm91bmQKKyAgICAgaWYgKGljb24uZGVwdGggPT0gSUNO U0VudHJ5OjpEZXB0aFVua25vd24pCisgICAgICAgICBpY29uLmRlcHRoID0gSUNOU0VudHJ5OjpE ZXB0aE1vbm87CitAQCAtNTE1LDYgKzUxOSw5IEBAIHN0YXRpYyBib29sIHBhcnNlSWNvbkVudHJ5 SW5mbyhJQ05TRW50cnkgJmljb24pCisgICAgICAgICB9CisgICAgICAgICBpY29uLmhlaWdodCA9 IGljb24ud2lkdGg7CisgICAgIH0KKysgICAgLy8gU2FuaXR5IGNoZWNrCisrICAgIGlmIChpY29u LndpZHRoID09IDAgfHwgaWNvbi53aWR0aCA+IDQwOTYpCisrICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgIHJldHVybiB0cnVlOworIH0KKyAKK0BAIC02ODUsNyArNjkyLDcgQEAgYm9vbCBRSUNO U0hhbmRsZXI6OmNhblJlYWQoKSBjb25zdAorIGJvb2wgUUlDTlNIYW5kbGVyOjpyZWFkKFFJbWFn ZSAqb3V0SW1hZ2UpCisgeworICAgICBRSW1hZ2UgaW1nOworLSAgICBpZiAoIWVuc3VyZVNjYW5u ZWQoKSkgeworKyAgICBpZiAoIWVuc3VyZVNjYW5uZWQoKSB8fCBtX2N1cnJlbnRJY29uSW5kZXgg Pj0gbV9pY29ucy5zaXplKCkpIHsKKyAgICAgICAgIHFXYXJuaW5nKCJRSUNOU0hhbmRsZXI6OnJl YWQoKTogVGhlIGRldmljZSB3YXNuJ3QgcGFyc2VkIHByb3Blcmx5ISIpOworICAgICAgICAgcmV0 dXJuIGZhbHNlOworICAgICB9CitAQCAtODkyLDcgKzg5OSw3IEBAIGJvb2wgUUlDTlNIYW5kbGVy OjpzY2FuRGV2aWNlKCkKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgCisgICAgICAgICBj b25zdCBxaW50NjQgYmxvY2tEYXRhT2Zmc2V0ID0gZGV2aWNlKCktPnBvcygpOworLSAgICAgICAg aWYgKCFpc0Jsb2NrSGVhZGVyVmFsaWQoYmxvY2tIZWFkZXIpKSB7CisrICAgICAgICBpZiAoIWlz QmxvY2tIZWFkZXJWYWxpZChibG9ja0hlYWRlciwgSUNOU0Jsb2NrSGVhZGVyU2l6ZSArIGZpbGVs ZW5ndGggLSBibG9ja0RhdGFPZmZzZXQpKSB7CisgICAgICAgICAgICAgcVdhcm5pbmcoIlFJQ05T SGFuZGxlcjo6c2NhbkRldmljZSgpOiBGYWlsZWQsIGJhZCBoZWFkZXIgYXQgcG9zICVzLiBPU1R5 cGUgXCIlc1wiLCBsZW5ndGggJXUiLAorICAgICAgICAgICAgICAgICAgICAgIFFCeXRlQXJyYXk6 Om51bWJlcihibG9ja0RhdGFPZmZzZXQpLmNvbnN0RGF0YSgpLAorICAgICAgICAgICAgICAgICAg ICAgIG5hbWVGcm9tT1NUeXBlKGJsb2NrSGVhZGVyLm9zdHlwZSkuY29uc3REYXRhKCksIGJsb2Nr SGVhZGVyLmxlbmd0aCk7CitAQCAtOTI3LDExICs5MzQsMTQgQEAgYm9vbCBRSUNOU0hhbmRsZXI6 OnNjYW5EZXZpY2UoKQorICAgICAgICAgY2FzZSBJQ05TQmxvY2tIZWFkZXI6OlR5cGVPZHJwOgor ICAgICAgICAgICAgIC8vIEljbnMgY29udGFpbmVyIHNlZW1zIHRvIGhhdmUgYW4gZW1iZWRkZWQg aWNvbiB2YXJpYW50IGNvbnRhaW5lcgorICAgICAgICAgICAgIC8vIExldCdzIHN0YXJ0IGEgc2Nh biBmb3IgZW50cmllcworLSAgICAgICAgICAgIHdoaWxlIChkZXZpY2UoKS0+cG9zKCkgPCBuZXh0 QmxvY2tPZmZzZXQpIHsKKysgICAgICAgICAgICB3aGlsZSAoIXN0cmVhbS5hdEVuZCgpICYmIGRl dmljZSgpLT5wb3MoKSA8IG5leHRCbG9ja09mZnNldCkgeworICAgICAgICAgICAgICAgICBJQ05T QmxvY2tIZWFkZXIgaWNvbjsKKyAgICAgICAgICAgICAgICAgc3RyZWFtID4+IGljb247CisrICAg ICAgICAgICAgICAgIGlmIChzdHJlYW0uc3RhdHVzKCkgIT0gUURhdGFTdHJlYW06Ok9rKQorKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAvLyBDaGVj ayBmb3IgaW5jb3JyZWN0IHZhcmlhbnQgZW50cnkgaGVhZGVyIGFuZCBzdG9wIHNjYW4KKy0gICAg ICAgICAgICAgICAgaWYgKCFpc0Jsb2NrSGVhZGVyVmFsaWQoaWNvbiwgYmxvY2tEYXRhTGVuZ3Ro KSkKKysgICAgICAgICAgICAgICAgcXVpbnQ2NCByZW1haW5pbmcgPSBibG9ja0RhdGFMZW5ndGgg LSAoZGV2aWNlKCktPnBvcygpIC0gYmxvY2tEYXRhT2Zmc2V0KTsKKysgICAgICAgICAgICAgICAg aWYgKCFpc0Jsb2NrSGVhZGVyVmFsaWQoaWNvbiwgSUNOU0Jsb2NrSGVhZGVyU2l6ZSArIHJlbWFp bmluZykpCisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgaWYg KCFhZGRFbnRyeShpY29uLCBkZXZpY2UoKS0+cG9zKCksIGJsb2NrSGVhZGVyLm9zdHlwZSkpCisg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CitAQCAtMTAwMyw3ICsxMDEzLDcgQEAg Ym9vbCBRSUNOU0hhbmRsZXI6OnNjYW5EZXZpY2UoKQorICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgfQorICAgICB9CistICAgIHJldHVybiB0cnVlOworKyAgICByZXR1cm4gKG1faWNvbnMu c2l6ZSgpID4gMCk7CisgfQorIAorIGNvbnN0IElDTlNFbnRyeSAmUUlDTlNIYW5kbGVyOjpnZXRJ Y29uTWFzayhjb25zdCBJQ05TRW50cnkgJmljb24pIGNvbnN0CitkaWZmIC0tZ2l0IGEvcXRpbWFn ZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2pwMi9xanAyaGFuZGxlci5jcHAgYi9x dGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvanAyL3FqcDJoYW5kbGVyLmNw cAoraW5kZXggNTA4MjAyMy4uY2IzNDM3NCAxMDA2NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3Ny Yy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9qcDIvcWpwMmhhbmRsZXIuY3BwCisrKysgYi9xdGltYWdl Zm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvanAyL3FqcDJoYW5kbGVyLmNwcAorQEAg LTQzLDYgKzQzLDcgQEAKKyAjaW5jbHVkZSAicWltYWdlLmgiCisgI2luY2x1ZGUgInF2YXJpYW50 LmgiCisgI2luY2x1ZGUgInFjb2xvci5oIgorKyNpbmNsdWRlICJxaW1hZ2VyZWFkZXIuaCIKKyAK KyAjaW5jbHVkZSA8amFzcGVyL2phc3Blci5oPgorICNpbmNsdWRlIDxtYXRoLmg+IC8vIGZvciBw b3cKK0BAIC0zMzMsMTYgKzMzNCw0NiBAQCBwcml2YXRlOgorIEpwZWcyMDAwSmFzcGVyUmVhZGVy OjpKcGVnMjAwMEphc3BlclJlYWRlcihRSU9EZXZpY2UgKmlvZCwgU3ViRm9ybWF0IGZvcm1hdCkK KyAgICAgOiBqYXNwZXJPayh0cnVlKSwgaW9EZXZpY2UoaW9kKSwgZm9ybWF0KGZvcm1hdCksIGhh c0FscGhhKGZhbHNlKQorIHsKKysjaWYgSkFTX1ZFUlNJT05fTUFKT1IgPCAzCisgICAgIGlmIChq YXNfaW5pdCgpKSB7CisgICAgICAgICBqYXNwZXJPayA9IGZhbHNlOworICAgICAgICAgcURlYnVn KCJKYXNwZXIgTGlicmFyeSBpbml0aWFsaXphdGlvbiBmYWlsZWQiKTsKKyAgICAgfQorKyNlbHNl CisrICAgIGphc19jb25mX2NsZWFyKCk7CisrI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9D SEVDSyg2LCAwLCAwKQorKyAgICBqYXNfY29uZl9zZXRfbWF4X21lbV91c2FnZShRSW1hZ2VSZWFk ZXI6OmFsbG9jYXRpb25MaW1pdCgpICogMTAyNCAqIDEwMjQpOworKyNlbHNlCisrICAgIC8vIDEy OE1CIHNlZW1zIHRvIGJlIGVub3VnaC4KKysgICAgamFzX2NvbmZfc2V0X21heF9tZW1fdXNhZ2Uo MTI4ICogMTAyNCAqIDEwMjQpOworKyNlbmRpZgorKyAgICBpZiAoamFzX2luaXRfbGlicmFyeSgp KSB7CisrICAgICAgICBqYXNwZXJPayA9IGZhbHNlOworKyAgICAgICAgcURlYnVnKCJKYXNwZXIg bGlicmFyeSBpbml0aWFsaXphdGlvbiBmYWlsZWQiKTsKKysgICAgfQorKyAgICBpZiAoamFzX2lu aXRfdGhyZWFkKCkpIHsKKysgICAgICAgIGphc19jbGVhbnVwX2xpYnJhcnkoKTsKKysgICAgICAg IGphc3Blck9rID0gZmFsc2U7CisrICAgICAgICBxRGVidWcoIkphc3BlciB0aHJlYWQgaW5pdGlh bGl6YXRpb24gZmFpbGVkIik7CisrICAgIH0KKysjZW5kaWYKKyB9CisgCisgSnBlZzIwMDBKYXNw ZXJSZWFkZXI6On5KcGVnMjAwMEphc3BlclJlYWRlcigpCisgeworKyNpZiBKQVNfVkVSU0lPTl9N QUpPUiA8IDMKKyAgICAgaWYgKGphc3Blck9rKQorICAgICAgICAgamFzX2NsZWFudXAoKTsKKysj ZWxzZQorKyAgICBpZiAoamFzcGVyT2spIHsKKysgICAgICAgIGlmIChqYXNfY2xlYW51cF90aHJl YWQoKSkgeworKyAgICAgICAgICAgIHFEZWJ1ZygiSmFzcGVyIHRocmVhZCBjbGVhbnVwIGZhaWxl ZCIpOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKGphc19jbGVhbnVwX2xpYnJhcnkoKSkgewor KyAgICAgICAgICAgIHFEZWJ1ZygiSmFzcGVyIGxpYnJhcnkgY2xlYW51cCBmYWlsZWQiKTsKKysg ICAgICAgIH0KKysgICAgfQorKyNlbmRpZgorIH0KKyAKKyAvKiEgXGludGVybmFsCitAQCAtODU3 LDcgKzg4OCw3IEBAIGJvb2wgSnBlZzIwMDBKYXNwZXJSZWFkZXI6OndyaXRlKGNvbnN0IFFJbWFn ZSAmaW1hZ2UsIGludCBxdWFsaXR5KQorICAgICB9CisgCisgICAgIC8vIE9wZW4gYW4gZW1wdHkg amFzcGVyIHN0cmVhbSB0aGF0IGdyb3dzIGF1dG9tYXRpY2FsbHkKKy0gICAgamFzX3N0cmVhbV90 ICogbWVtb3J5X3N0cmVhbSA9IGphc19zdHJlYW1fbWVtb3BlbigwLCAtMSk7CisrICAgIGphc19z dHJlYW1fdCAqIG1lbW9yeV9zdHJlYW0gPSBqYXNfc3RyZWFtX21lbW9wZW4oMCwgMCk7CisgCisg ICAgIC8vIEphc3BlciB3YW50cyBhIG5vbi1jb25zdCBzdHJpbmcuCisgICAgIGNoYXIgKnN0ciA9 IHFzdHJkdXAoamFzcGVyRm9ybWF0U3RyaW5nLnRvTGF0aW4xKCkuY29uc3REYXRhKCkpOworZGlm ZiAtLWdpdCBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0 aWZmaGFuZGxlci5jcHAgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMv dGlmZi9xdGlmZmhhbmRsZXIuY3BwCitpbmRleCAxMzg2NzUwLi5hYzg5NTZjIDEwMDY0NAorLS0t IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5k bGVyLmNwcAorKysrIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3Rp ZmYvcXRpZmZoYW5kbGVyLmNwcAorQEAgLTM2MSw2ICszNjEsOCBAQCBib29sIFFUaWZmSGFuZGxl cjo6cmVhZChRSW1hZ2UgKmltYWdlKQorICAgICB9CisgCisgICAgIFRJRkYgKmNvbnN0IHRpZmYg PSBkLT50aWZmOworKyAgICBpZiAoVElGRklzVGlsZWQodGlmZikgJiYgVElGRlRpbGVTaXplNjQo dGlmZikgPiB1aW50NjRfdChpbWFnZS0+c2l6ZUluQnl0ZXMoKSkpIC8vIENvcnJ1cHQgaW1hZ2UK KysgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgY29uc3QgcXVpbnQzMiB3aWR0aCA9IGQtPnNp emUud2lkdGgoKTsKKyAgICAgY29uc3QgcXVpbnQzMiBoZWlnaHQgPSBkLT5zaXplLmhlaWdodCgp OworIAorZGlmZiAtLWdpdCBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0 cy93ZWJwL3F3ZWJwaGFuZGxlci5jcHAgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFn ZWZvcm1hdHMvd2VicC9xd2VicGhhbmRsZXIuY3BwCitpbmRleCA4MmQzOGNiLi5kMDJlYjA1IDEw MDY0NAorLS0tIGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAv cXdlYnBoYW5kbGVyLmNwcAorKysrIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vm b3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNwcAorQEAgLTQ1LDYgKzQ1LDcgQEAKKyAjaW5jbHVk ZSA8cWRlYnVnLmg+CisgI2luY2x1ZGUgPHFwYWludGVyLmg+CisgI2luY2x1ZGUgPHF2YXJpYW50 Lmg+CisrI2luY2x1ZGUgPFF0RW5kaWFuPgorIAorIHN0YXRpYyBjb25zdCBpbnQgcmlmZkhlYWRl clNpemUgPSAxMjsgLy8gUklGRl9IRUFERVJfU0laRSBmcm9tIHdlYnAvZm9ybWF0X2NvbnN0YW50 cy5oCisgCitAQCAtMTAyLDIxICsxMDMsMjMgQEAgYm9vbCBRV2VicEhhbmRsZXI6OmVuc3VyZVNj YW5uZWQoKSBjb25zdAorIAorICAgICBtX3NjYW5TdGF0ZSA9IFNjYW5FcnJvcjsKKyAKKy0gICAg aWYgKGRldmljZSgpLT5pc1NlcXVlbnRpYWwoKSkgeworLSAgICAgICAgcVdhcm5pbmcoKSA8PCAi U2VxdWVudGlhbCBkZXZpY2VzIGFyZSBub3Qgc3VwcG9ydGVkIjsKKysgICAgUVdlYnBIYW5kbGVy ICp0aGF0ID0gY29uc3RfY2FzdDxRV2VicEhhbmRsZXIgKj4odGhpcyk7CisrICAgIGNvbnN0IGlu dCBoZWFkZXJCeXRlc05lZWRlZCA9IHNpemVvZihXZWJQQml0c3RyZWFtRmVhdHVyZXMpOworKyAg ICBRQnl0ZUFycmF5IGhlYWRlciA9IGRldmljZSgpLT5wZWVrKGhlYWRlckJ5dGVzTmVlZGVkKTsK KysgICAgaWYgKGhlYWRlci5zaXplKCkgPCBoZWFkZXJCeXRlc05lZWRlZCkKKyAgICAgICAgIHJl dHVybiBmYWxzZTsKKy0gICAgfQorIAorLSAgICBxaW50NjQgb2xkUG9zID0gZGV2aWNlKCktPnBv cygpOworLSAgICBkZXZpY2UoKS0+c2VlaygwKTsKKy0KKy0gICAgUVdlYnBIYW5kbGVyICp0aGF0 ID0gY29uc3RfY2FzdDxRV2VicEhhbmRsZXIgKj4odGhpcyk7CistICAgIFFCeXRlQXJyYXkgaGVh ZGVyID0gZGV2aWNlKCktPnBlZWsoc2l6ZW9mKFdlYlBCaXRzdHJlYW1GZWF0dXJlcykpOworKyAg ICAvLyBXZSBkbyBubyByYW5kb20gYWNjZXNzIGR1cmluZyBkZWNvZGluZywganVzdCBhIHJlYWRB bGwoKSBvZiB0aGUgd2hvbGUgaW1hZ2UgZmlsZS4gU28gaWYKKysgICAgLy8gaWYgaXQgaXMgYWxs IGF2YWlsYWJsZSBhbHJlYWR5LCB3ZSBjYW4gYWNjZXB0IGEgc2VxdWVudGlhbCBkZXZpY2UuIFRo ZSByaWZmIGhlYWRlciBjb250YWlucworKyAgICAvLyB0aGUgZmlsZSBzaXplIG1pbnVzIDggYnl0 ZXMgaGVhZGVyCisrICAgIHFpbnQ2NCBieXRlU2l6ZSA9IHFGcm9tTGl0dGxlRW5kaWFuPHF1aW50 MzI+KGhlYWRlci5jb25zdERhdGEoKSArIDQpOworKyAgICBpZiAoZGV2aWNlKCktPmlzU2VxdWVu dGlhbCgpICYmIGRldmljZSgpLT5ieXRlc0F2YWlsYWJsZSgpIDwgYnl0ZVNpemUgKyA4KSB7Cisr ICAgICAgICBxV2FybmluZygpIDw8ICJRV2VicEhhbmRsZXI6IEluc3VmZmljaWVudCBkYXRhIGF2 YWlsYWJsZSBpbiBzZXF1ZW50aWFsIGRldmljZSI7CisrICAgICAgICByZXR1cm4gZmFsc2U7Cisr ICAgIH0KKyAgICAgaWYgKFdlYlBHZXRGZWF0dXJlcygoY29uc3QgdWludDhfdCopaGVhZGVyLmNv bnN0RGF0YSgpLCBoZWFkZXIuc2l6ZSgpLCAmKHRoYXQtPm1fZmVhdHVyZXMpKSA9PSBWUDhfU1RB VFVTX09LKSB7CisgICAgICAgICBpZiAobV9mZWF0dXJlcy5oYXNfYW5pbWF0aW9uKSB7CisgICAg ICAgICAgICAgLy8gRm9yIGFuaW1hdGlvbiwgd2UgaGF2ZSB0byByZWFkIGFuZCBzY2FuIHdob2xl IGZpbGUgdG8gZGV0ZXJtaW5lIGxvb3AgY291bnQgYW5kIGltYWdlcyBjb3VudAorLSAgICAgICAg ICAgIGRldmljZSgpLT5zZWVrKG9sZFBvcyk7CistCisgICAgICAgICAgICAgaWYgKHRoYXQtPmVu c3VyZURlbXV4ZXIoKSkgeworICAgICAgICAgICAgICAgICB0aGF0LT5tX2xvb3AgPSBXZWJQRGVt dXhHZXRJKG1fZGVtdXhlciwgV0VCUF9GRl9MT09QX0NPVU5UKTsKKyAgICAgICAgICAgICAgICAg dGhhdC0+bV9mcmFtZUNvdW50ID0gV2ViUERlbXV4R2V0SShtX2RlbXV4ZXIsIFdFQlBfRkZfRlJB TUVfQ09VTlQpOworQEAgLTEyNiwxNyArMTI5LDEzIEBAIGJvb2wgUVdlYnBIYW5kbGVyOjplbnN1 cmVTY2FubmVkKCkgY29uc3QKKyAgICAgICAgICAgICAgICAgaWYgKHRoYXQtPm1fZmVhdHVyZXMu aGFzX2FscGhhKQorICAgICAgICAgICAgICAgICAgICAgdGhhdC0+bV9jb21wb3NpdGVkLT5maWxs KFF0Ojp0cmFuc3BhcmVudCk7CisgCistICAgICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCByZXNl dCBkZXZpY2UgcG9zaXRpb24gc2luY2Ugd2UgaGF2ZSByZWFkIGluIGFsbCBkYXRhCisgICAgICAg ICAgICAgICAgIG1fc2NhblN0YXRlID0gU2NhblN1Y2Nlc3M7CistICAgICAgICAgICAgICAgIHJl dHVybiB0cnVlOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAgbV9zY2FuU3RhdGUgPSBTY2FuU3VjY2VzczsKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAg ICBkZXZpY2UoKS0+c2VlayhvbGRQb3MpOworLQorICAgICByZXR1cm4gbV9zY2FuU3RhdGUgPT0g U2NhblN1Y2Nlc3M7CisgfQorIAorQEAgLTE1OSw3ICsxNTgsNyBAQCBib29sIFFXZWJwSGFuZGxl cjo6ZW5zdXJlRGVtdXhlcigpCisgCisgYm9vbCBRV2VicEhhbmRsZXI6OnJlYWQoUUltYWdlICpp bWFnZSkKKyB7CistICAgIGlmICghZW5zdXJlU2Nhbm5lZCgpIHx8IGRldmljZSgpLT5pc1NlcXVl bnRpYWwoKSB8fCAhZW5zdXJlRGVtdXhlcigpKQorKyAgICBpZiAoIWVuc3VyZVNjYW5uZWQoKSB8 fCAhZW5zdXJlRGVtdXhlcigpKQorICAgICAgICAgcmV0dXJuIGZhbHNlOworIAorICAgICBRUmVj dCBwcmV2RnJhbWVSZWN0OworU3VibW9kdWxlIHF0bG9jYXRpb24gOThhNWM1MTEuLmY5OTFlMjhj OgorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5qc29uIGIv cXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vY29uZmlndXJlLmpzb24KK2luZGV4IDZkMDFhOWEzLi5k MWU2MjNhMSAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5q c29uCisrKysgYi9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9jb25maWd1cmUuanNvbgorQEAgLTks NyArOSw3IEBACisgICAgICAgICAgICAgImxhYmVsIjogIlF0LmxhYnMubG9jYXRpb24gZXhwZXJp bWVudGFsIFFNTCBwbHVnaW4iLAorICAgICAgICAgICAgICJwdXJwb3NlIjogIlByb3ZpZGVzIGV4 cGVyaW1lbnRhbCBRdExvY2F0aW9uIFFNTCB0eXBlcyIsCisgICAgICAgICAgICAgInNlY3Rpb24i OiAiTG9jYXRpb24iLAorLSAgICAgICAgICAgICJjb25kaXRpb24iOiAiY29uZmlnLm9wZW5nbCIs CisrICAgICAgICAgICAgImNvbmRpdGlvbiI6ICJmZWF0dXJlcy5vcGVuZ2wiLAorICAgICAgICAg ICAgICJvdXRwdXQiOiBbICJwcml2YXRlRmVhdHVyZSIgXQorICAgICAgICAgfSwKKyAgICAgICAg ICJnZW9zZXJ2aWNlc19vc20iOiB7CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRp b24vbGFicy9xc2cvcWdlb21hcG9iamVjdHFzZ3N1cHBvcnQuY3BwIGIvcXRsb2NhdGlvbi9zcmMv bG9jYXRpb24vbGFicy9xc2cvcWdlb21hcG9iamVjdHFzZ3N1cHBvcnQuY3BwCitpbmRleCBhOTc4 NTczZC4uMTFlMTQ2NmYgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJz L3FzZy9xZ2VvbWFwb2JqZWN0cXNnc3VwcG9ydC5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL2xv Y2F0aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmplY3Rxc2dzdXBwb3J0LmNwcAorQEAgLTE1OCw3ICsx NTgsNyBAQCB2b2lkIFFHZW9NYXBPYmplY3RRU0dTdXBwb3J0Ojp1cGRhdGVNYXBPYmplY3RzKFFT R05vZGUgKnJvb3QsIFFRdWlja1dpbmRvdyAqd2luZAorICAgICBpZiAoIXJvb3QpCisgICAgICAg ICByZXR1cm47CisgCistICAgIGlmIChtX21hcE9iamVjdHNSb290Tm9kZSAmJiBtX21hcE9iamVj dHNSb290Tm9kZS0+cGFyZW50KCkpCisrICAgIGlmIChtX21hcE9iamVjdHNSb290Tm9kZSAmJiAh bV9tYXBPYmplY3RzUm9vdE5vZGUtPnBhcmVudCgpKQorICAgICAgICAgcm9vdC0+YXBwZW5kQ2hp bGROb2RlKG1fbWFwT2JqZWN0c1Jvb3ROb2RlLmdldCgpKTsKKyAKKyAgICAgaWYgKCFtX21hcE9i amVjdHNSb290Tm9kZSkgeworZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vv c2VydmljZXMvZXNyaS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlv bi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb2NvZGluZ21hbmFnZXJlbmdpbmVfZXNy aS5jcHAKK2luZGV4IDVhNDA0NjdlLi5kMTIzYzZhOCAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24v c3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2Vzcmku Y3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvY29k aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorQEAgLTU5LDggKzU5LDEwIEBAIFFUX0JFR0lOX05B TUVTUEFDRQorIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtQcmVmaXhFc3JpKFFTdHJpbmdMaXRlcmFs KCJlc3JpLiIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrUGFyYW1Vc2VyQWdlbnQoa1ByZWZp eEVzcmkgKyBRU3RyaW5nTGl0ZXJhbCgidXNlcmFnZW50IikpOworIAorLXN0YXRpYyBjb25zdCBR U3RyaW5nIGtVcmxHZW9jb2RlKFFTdHJpbmdMaXRlcmFsKCJodHRwOi8vZ2VvY29kZS5hcmNnaXMu Y29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3ND YW5kaWRhdGVzIikpOworLXN0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxSZXZlcnNlR2VvY29kZShR U3RyaW5nTGl0ZXJhbCgiaHR0cDovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2 aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyL3JldmVyc2VHZW9jb2RlIikpOworK3N0YXRpYyBjb25z dCBRU3RyaW5nIGtVcmxHZW9jb2RlKFFTdHJpbmdMaXRlcmFsKCJodHRwczovL2dlb2NvZGUuYXJj Z2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy8iCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIldvcmxkL0dlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3ND YW5kaWRhdGVzIikpOworK3N0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxSZXZlcnNlR2VvY29kZShR U3RyaW5nTGl0ZXJhbCgKKysgICAgICAgICJodHRwczovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNn aXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyL3JldmVyc2VHZW9jb2RlIikpOwor IAorIHN0YXRpYyBRU3RyaW5nIGFkZHJlc3NUb1F1ZXJ5KGNvbnN0IFFHZW9BZGRyZXNzICZhZGRy ZXNzKQorIHsKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2Vz L2VzcmkvZ2Vvcm91dGVqc29ucGFyc2VyX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lu cy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlanNvbnBhcnNlcl9lc3JpLmNwcAoraW5kZXggMTc0 OTJkOTQuLjk2YzEyYjFiIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9z ZXJ2aWNlcy9lc3JpL2dlb3JvdXRlanNvbnBhcnNlcl9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlv bi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlanNvbnBhcnNlcl9lc3JpLmNw cAorQEAgLTQ2LDcgKzQ2LDggQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKy0vLyBKU09O IHJlZmVyZW5jZTogaHR0cDovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJl c3QtYXBpLyMvUm91dGVfc2VydmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAw MDAwMzYwMDAwMDAvCisrLy8gSlNPTiByZWZlcmVuY2U6CisrLy8gaHR0cHM6Ly9yZXNvdXJjZXMu YXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9z eW5jaHJvbm91c19leGVjdXRpb24vMDJyMzAwMDAwMDM2MDAwMDAwLworIAorIHN0YXRpYyBjb25z dCBRU3RyaW5nIGtFcnJvck1lc3NhZ2UoUVN0cmluZ0xpdGVyYWwoIkVycm9yICUxOiAlMi4iKSk7 Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga0Vycm9ySnNvbihRU3RyaW5nTGl0ZXJhbCgiRXJyb3I6 IGludmFsaWRlIEpTT04gZG9jdW1lbnQuIikpOworZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3Jj L3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZXJlcGx5X2VzcmkuY3BwIGIvcXRsb2Nh dGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNyaS5jcHAK K2luZGV4IDhjYWRmYjI5Li45MmI2YmIxMyAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3Bs dWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZXJlcGx5X2VzcmkuY3BwCisrKysgYi9xdGxv Y2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVyZXBseV9lc3JpLmNw cAorQEAgLTQ0LDcgKzQ0LDggQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKy0vLyBKU09O IHJlZmVyZW5jZTogaHR0cDovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJl c3QtYXBpLyMvUm91dGVfc2VydmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAw MDAwMzYwMDAwMDAvCisrLy8gSlNPTiByZWZlcmVuY2U6CisrLy8gaHR0cHM6Ly9yZXNvdXJjZXMu YXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9z eW5jaHJvbm91c19leGVjdXRpb24vMDJyMzAwMDAwMDM2MDAwMDAwLworIAorIEdlb1JvdXRlUmVw bHlFc3JpOjpHZW9Sb3V0ZVJlcGx5RXNyaShRTmV0d29ya1JlcGx5ICpyZXBseSwgY29uc3QgUUdl b1JvdXRlUmVxdWVzdCAmcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUU9iamVjdCAqcGFyZW50KSA6CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1 Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwIGIv cXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5hZ2Vy ZW5naW5lX2VzcmkuY3BwCitpbmRleCAwZTZiYzJjNy4uZWQ2MTNmNGIgMTAwNjQ0CistLS0gYS9x dGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGluZ21hbmFnZXJl bmdpbmVfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMv ZXNyaS9nZW9yb3V0aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorQEAgLTQ4LDcgKzQ4LDggQEAg c3RhdGljIGNvbnN0IFFTdHJpbmcga1ByZWZpeEVzcmkoUVN0cmluZ0xpdGVyYWwoImVzcmkuIikp OworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtQYXJhbVVzZXJBZ2VudChrUHJlZml4RXNyaSArIFFT dHJpbmdMaXRlcmFsKCJ1c2VyYWdlbnQiKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1BhcmFt VG9rZW4oa1ByZWZpeEVzcmkgKyBRU3RyaW5nTGl0ZXJhbCgidG9rZW4iKSk7CisgCistc3RhdGlj IGNvbnN0IFFTdHJpbmcga1VybFJvdXRpbmcoUVN0cmluZ0xpdGVyYWwoImh0dHA6Ly9yb3V0ZS5h cmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL1JvdXRlL05BU2VydmVyL1JvdXRl X1dvcmxkL3NvbHZlIikpOworK3N0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxSb3V0aW5nKFFTdHJp bmdMaXRlcmFsKAorKyAgICAgICAgImh0dHBzOi8vcm91dGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVz dC9zZXJ2aWNlcy9Xb3JsZC9Sb3V0ZS9OQVNlcnZlci9Sb3V0ZV9Xb3JsZC9zb2x2ZSIpKTsKKyAK KyBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6Okdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNy aShjb25zdCBRVmFyaWFudE1hcCAmcGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRR2VvU2VydmljZVByb3ZpZGVyOjpF cnJvciAqZXJyb3IsCitAQCAtNzAsNyArNzEsOCBAQCBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVz cmk6On5HZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmkoKQorIHsKKyB9CisgCistLy8gUkVTVCBy ZWZlcmVuY2U6IGh0dHA6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0 LWFwaS9pbmRleC5odG1sIy8vMDJyMzAwMDAwMDM2MDAwMDAwCisrLy8gUkVTVCByZWZlcmVuY2U6 CisrLy8gaHR0cHM6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFw aS9pbmRleC5odG1sIy8vMDJyMzAwMDAwMDM2MDAwMDAwCisgCisgUUdlb1JvdXRlUmVwbHkgKkdl b1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaTo6Y2FsY3VsYXRlUm91dGUoY29uc3QgUUdlb1JvdXRl UmVxdWVzdCAmcmVxdWVzdCkKKyB7CitAQCAtMTI1LDcgKzEyNyw3IEBAIHZvaWQgR2VvUm91dGlu Z01hbmFnZXJFbmdpbmVFc3JpOjpyZXBseUVycm9yKFFHZW9Sb3V0ZVJlcGx5OjpFcnJvciBlcnJv ckNvZGUsIGNvCisgUVN0cmluZyBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6OnByZWZlcmVk RGlyZWN0aW9uTGFuZ2FnZSgpCisgeworICAgICAvLyBsaXN0IG9mIHN1cHBvcnRlZCBsYW5nYWdl cyBpcyBkZWZpbmVkIGluOgorLSAgICAvLyBodHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4v aGVscC9hcmNnaXMtcmVzdC1hcGkvaW5kZXguaHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAorKyAg ICAvLyBodHRwczovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBp L2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAwMzYwMDAwMDAKKyAgICAgY29uc3QgUVN0cmluZ0xpc3Qg c3VwcG9ydGVkTGFuZ3VhZ2VzID0geworICAgICAgICAgImFyIiwgLy8gR2VuZXJhdGUgZGlyZWN0 aW9ucyBpbiBBcmFiaWMKKyAgICAgICAgICJjcyIsIC8vIEdlbmVyYXRlIGRpcmVjdGlvbnMgaW4g Q3plY2gKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2Vz cmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3Jj L3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW90aWxlZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2Vz cmkuY3BwCitpbmRleCA1ZDE1ODM1ZC4uMjQxNDhmOTUgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9u L3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVuZ2lu ZV9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3Jp L2dlb3RpbGVkbWFwcGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK0BAIC0yMzAsNyArMjMwLDgg QEAgUUdlb01hcCAqR2VvVGlsZWRNYXBwaW5nTWFuYWdlckVuZ2luZUVzcmk6OmNyZWF0ZU1hcCgp CisgLy8gJHt5fSA9IFkKKyAvLyAke3Rva2VufSA9IFRva2VuCisgCistLy8gdGVtcGxhdGUgPSAn aHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29y bGRfVG9wb19NYXAvTWFwU2VydmVyL3RpbGUve3t6fX0ve3t5fX0ve3t4fX0ucG5nJworKy8vIHRl bXBsYXRlID0KKysvLyAnaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9y ZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9fTWFwL01hcFNlcnZlci90aWxlL3t7en19L3t7eX19L3t7 eH19LnBuZycKKyAKKyBib29sIEdlb1RpbGVkTWFwcGluZ01hbmFnZXJFbmdpbmVFc3JpOjppbml0 aWFsaXplTWFwU291cmNlcyhRR2VvU2VydmljZVByb3ZpZGVyOjpFcnJvciAqZXJyb3IsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVN0cmluZyAqZXJyb3JTdHJpbmcsCitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lu cy9nZW9zZXJ2aWNlcy9lc3JpL21hcHMuanNvbiBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vv c2VydmljZXMvZXNyaS9tYXBzLmpzb24KK2luZGV4IDgxNjdhZTdkLi44NjJlMDg3ZCAxMDA2NDQK Ky0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBzLmpzb24K KysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBzLmpzb24K K0BAIC02LDggKzYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBcmNHSVMgT25s aW5lIFdvcmxkIFN0cmVldCBNYXAiLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAg ICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3Nl cnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfU3RyZWV0 X01hcC9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8 YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9M2I5MzMzNzk4 M2U5NDM2ZjhkYjk1MGUzOGE4NjI5YWYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAg ICAgICAidXJsIjogImh0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVz dC9zZXJ2aWNlcy9Xb3JsZF9TdHJlZXRfTWFwL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNv cHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9t ZS9pdGVtLmh0bWw/aWQ9M2I5MzMzNzk4M2U5NDM2ZjhkYjk1MGUzOGE4NjI5YWYnPkVzcmk8L2E+ IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMTYsOCArMTYs OCBAQAorICAgICAgICAgICAgICIiOiAiQXJjR0lTIE9ubGluZSBXb3JsZCBJbWFnZXJ5IiwKKyAg ICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwK Ky0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNH SVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9JbWFnZXJ5L01hcFNlcnZlciIsCistICAgICAgICAgICAg ImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9o b21lL2l0ZW0uaHRtbD9pZD0xMGRmMjI3OWY5Njg0ZTRhOWY2YTdmMDhmZWJhYzJhOSc+RXNyaTwv YT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJj Z2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9JbWFnZXJ5L01hcFNlcnZl ciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBz Oi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MTBkZjIyNzlmOTY4NGU0YTlmNmE3 ZjA4ZmViYWMyYTknPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAg ICAgICB7CitAQCAtMjYsOCArMjYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJB cmNHSVMgT25saW5lIFdvcmxkIFRlcnJhaW4gQmFzZSIsCisgICAgICAgICAgICAgIm1vYmlsZSI6 IGZhbHNlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwi OiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dv cmxkX1RlcnJhaW5fQmFzZS9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0 IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/ aWQ9YzYxYWQ4YWIwMTdkNDllMWE4MmY1ODBlZTEyOTg5MzEnPkVzcmk8L2E+IGNvbnRyaWJ1dG9y cyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20v QXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVGVycmFpbl9CYXNlL01hcFNlcnZlciIsCisrICAg ICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFy Y2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YzYxYWQ4YWIwMTdkNDllMWE4MmY1ODBlZTEyOTg5 MzEnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitA QCAtMzYsOCArMzYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBcmNHSVMgT25s aW5lIFdvcmxkIFRvcG9ncmFwaHkiLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAg ICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3Nl cnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9fTWFw L01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhy ZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0zMGU1ZmUzMTQ5YzM0 ZGYxYmE5MjJlNmY1YmJmODA4Zic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAg ICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2 aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRU ZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5o dG1sP2lkPTMwZTVmZTMxNDljMzRkZjFiYTkyMmU2ZjViYmY4MDhmJz5Fc3JpPC9hPiBjb250cmli dXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTQ2LDggKzQ2LDggQEAKKyAg ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBtYXAgcHJlc2VudHMgbGFuZCBjb3ZlciBh bmQgZGV0YWlsZWQgdG9wb2dyYXBoaWMgbWFwcyBmb3IgdGhlIFVuaXRlZCBTdGF0ZXMuIiwKKyAg ICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwK Ky0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0Fy Y0dJUy9yZXN0L3NlcnZpY2VzL1VTQV9Ub3BvX01hcHMvTWFwU2VydmVyIiwKKy0gICAgICAgICAg ICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29t L2hvbWUvaXRlbS5odG1sP2lkPTk5Y2Q1ZmJkOTg5MzQwMjg4MDJiNGY3OTdjNGIxNzMyJz5Fc3Jp PC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2Vz LmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvVVNBX1RvcG9fTWFwcy9NYXBT ZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdo dHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTk5Y2Q1ZmJkOTg5MzQwMjg4 MDJiNGY3OTdjNGIxNzMyJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAor ICAgICAgICAgeworQEAgLTU2LDggKzU2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24i OiAiTmF0aW9uYWwgR2VvZ3JhcGhpYyBXb3JsZCBNYXAiLAorICAgICAgICAgICAgICJtb2JpbGUi OiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJs IjogImh0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2Vz L05hdEdlb19Xb3JsZF9NYXAvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4 dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1s P2lkPWI5YjFiNDIyMTk4OTQ0ZmJiZDUyNTBiMzI0MTY5MWI2Jz5Fc3JpPC9hPiBjb250cmlidXRv cnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5j b20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvTmF0R2VvX1dvcmxkX01hcC9NYXBTZXJ2ZXIiLAorKyAg ICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5h cmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWI5YjFiNDIyMTk4OTQ0ZmJiZDUyNTBiMzI0MTY5 MWI2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgewor QEAgLTY2LDggKzY2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlbWF0aWMg Y29udGVudCBwcm92aWRpbmcgYSBuZXV0cmFsIGJhY2tncm91bmQgd2l0aCBtaW5pbWFsIGNvbG9y cyIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0Ijog ZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5l LmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9DYW52YXMvV29ybGRfTGlnaHRfR3JheV9CYXNlL01h cFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9 J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1lZDcxMmNiMWRiM2U0YmFl OWU4NTMyOTA0MGZiOWE0OSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1 cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZp Y2VzL0NhbnZhcy9Xb3JsZF9MaWdodF9HcmF5X0Jhc2UvTWFwU2VydmVyIiwKKysgICAgICAgICAg ICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNv bS9ob21lL2l0ZW0uaHRtbD9pZD1lZDcxMmNiMWRiM2U0YmFlOWU4NTMyOTA0MGZiOWE0OSc+RXNy aTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC03Niw4 ICs3Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk5hdHVyYWwgRWFydGggcGh5 c2ljYWwgbWFwIGZvciB0aGUgd29ybGQiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwK KyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6 Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9QaHlz aWNhbF9NYXAvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29w eTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWM0ZWM3 MjJhMWNkMzRjZjBhMjM5MDRhYWRmODkyM2EwJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAg ICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9y ZXN0L3NlcnZpY2VzL1dvcmxkX1BoeXNpY2FsX01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAg ICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29t L2hvbWUvaXRlbS5odG1sP2lkPWM0ZWM3MjJhMWNkMzRjZjBhMjM5MDRhYWRmODkyM2EwJz5Fc3Jp PC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTg2LDgg Kzg2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUG9ydHJheXMgc3VyZmFjZSBl bGV2YXRpb24gYXMgc2hhZGVkIHJlbGllZiIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNl LAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0 cDovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1No YWRlZF9SZWxpZWYvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICIm Y29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTlj NTM3MGQwYjU0ZjRkZTFiNDhhMzc5MmQ3Mzc3ZmYyJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisr ICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJ Uy9yZXN0L3NlcnZpY2VzL1dvcmxkX1NoYWRlZF9SZWxpZWYvTWFwU2VydmVyIiwKKysgICAgICAg ICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lz LmNvbS9ob21lL2l0ZW0uaHRtbD9pZD05YzUzNzBkMGI1NGY0ZGUxYjQ4YTM3OTJkNzM3N2ZmMic+ RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC05 Niw4ICs5Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgbWFwIGlzIGRl c2lnbmVkIHRvIGJlIHVzZWQgYXMgYSBiYXNlbWFwIGJ5IG1hcmluZSBHSVMgcHJvZmVzc2lvbmFs cyBhbmQgYXMgYSByZWZlcmVuY2UgbWFwIGJ5IGFueW9uZSBpbnRlcmVzdGVkIGluIG9jZWFuIGRh dGEiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQi OiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5l LmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9PY2Vhbi9Xb3JsZF9PY2Vhbl9CYXNlL01hcFNlcnZl ciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6 Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0xZTEyNmU3NTIwZjk0NjZjOWNhMjhi OGYyOGI1ZTUwMCc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAi aHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9PY2Vh bi9Xb3JsZF9PY2Vhbl9CYXNlL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRl eHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0 bWw/aWQ9MWUxMjZlNzUyMGY5NDY2YzljYTI4YjhmMjhiNWU1MDAnPkVzcmk8L2E+IGNvbnRyaWJ1 dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMTA2LDggKzEwNiw4IEBACisg ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZW1hdGljIGNvbnRlbnQgcHJvdmlkaW5nIGEg bmV1dHJhbCBiYWNrZ3JvdW5kIHdpdGggbWluaW1hbCBjb2xvcnMiLAorICAgICAgICAgICAgICJt b2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiB0cnVlLAorLSAgICAgICAgICAg ICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2Vy dmljZXMvQ2FudmFzL1dvcmxkX0RhcmtfR3JheV9CYXNlL01hcFNlcnZlciIsCistICAgICAgICAg ICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNv bS9ob21lL2l0ZW0uaHRtbD9pZD1hMjg0YTliOTliMzQ0NmEzOTEwZDQxNDRhNTA5OTBmNic+RXNy aTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNl cy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL0NhbnZhcy9Xb3JsZF9EYXJr X0dyYXlfQmFzZS9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZj b3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWEy ODRhOWI5OWIzNDQ2YTM5MTBkNDE0NGE1MDk5MGY2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisg ICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTExNiw4ICsxMTYsOCBAQAorICAgICAgICAg ICAgICJkZXNjcmlwdGlvbiI6ICJEZUxvcm1l4oCZcyB0b3BvZ3JhcGhpYyBiYXNlbWFwIGlzIGEg c2VhbWxlc3MgZ2xvYmFsIGRhdGEgc2V0IHRoYXQgcG9ydHJheXMgdHJhbnNwb3J0YXRpb24sIGh5 ZHJvZ3JhcGh5LCBqdXJpc2RpY3Rpb24gYm91bmRhcmllcywgYW5kIG1ham9yIGdlb2dyYXBoaWMg ZmVhdHVyZXMiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAi bmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lz b25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9TcGVjaWFsdHkvRGVMb3JtZV9Xb3JsZF9C YXNlX01hcC9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5 OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjE2NWMz ZGY0NTNlNGJlNmI1YWM0ZmRiMjQxZWZmYmUnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAg ICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jl c3Qvc2VydmljZXMvU3BlY2lhbHR5L0RlTG9ybWVfV29ybGRfQmFzZV9NYXAvTWFwU2VydmVyIiwK KysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93 d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1iMTY1YzNkZjQ1M2U0YmU2YjVhYzRmZGIy NDFlZmZiZSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfQorICAgICBdCisgfQor ZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFj ZW1hbmFnZXJlbmdpbmVfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZp Y2VzL2VzcmkvcGxhY2VtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitpbmRleCAzODU4ZGRmNS4uYWY2 NmYyOGUgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2Vz cmkvcGxhY2VtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVn aW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxhY2VtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitAQCAtNjMs OCArNjMsMTAgQEAgc3RhdGljIGNvbnN0IFFTdHJpbmcga0NvdW50cmllc0tleShRU3RyaW5nTGl0 ZXJhbCgiZGV0YWlsZWRDb3VudHJpZXMiKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga0xvY2Fs aXplZE5hbWVzS2V5KFFTdHJpbmdMaXRlcmFsKCJsb2NhbGl6ZWROYW1lcyIpKTsKKyBzdGF0aWMg Y29uc3QgUVN0cmluZyBrTWF4TG9jYXRpb25zS2V5KFFTdHJpbmdMaXRlcmFsKCJtYXhMb2NhdGlv bnMiKSk7CisgCistc3RhdGljIGNvbnN0IFFVcmwga1VybEdlb2NvZGVTZXJ2ZXIoImh0dHA6Ly9n ZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZl cj9mPXBqc29uIik7Cistc3RhdGljIGNvbnN0IFFVcmwga1VybEZpbmRBZGRyZXNzQ2FuZGlkYXRl cygiaHR0cDovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9H ZW9jb2RlU2VydmVyL2ZpbmRBZGRyZXNzQ2FuZGlkYXRlcyIpOworK3N0YXRpYyBjb25zdCBRVXJs IGtVcmxHZW9jb2RlU2VydmVyKAorKyAgICAgICAgImh0dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29t L2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXI/Zj1wanNvbiIpOworK3N0 YXRpYyBjb25zdCBRVXJsIGtVcmxGaW5kQWRkcmVzc0NhbmRpZGF0ZXMoImh0dHBzOi8vZ2VvY29k ZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkLyIKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZW9jb2RlU2VydmVyL2ZpbmRBZGRyZXNz Q2FuZGlkYXRlcyIpOworIAorIFBsYWNlTWFuYWdlckVuZ2luZUVzcmk6OlBsYWNlTWFuYWdlckVu Z2luZUVzcmkoY29uc3QgUVZhcmlhbnRNYXAgJnBhcmFtZXRlcnMsIFFHZW9TZXJ2aWNlUHJvdmlk ZXI6OkVycm9yICplcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFTdHJpbmcgKmVycm9yU3RyaW5nKSA6CitTdWJtb2R1bGUgcXRtdWx0aW1lZGlh IGYwMzQ0MDc5Li4wZDdjYzMzYToKK2RpZmYgLS1naXQgYS9xdG11bHRpbWVkaWEvc3JjL3BsdWdp bnMvcHVsc2VhdWRpby9xYXVkaW9pbnB1dF9wdWxzZS5jcHAgYi9xdG11bHRpbWVkaWEvc3JjL3Bs dWdpbnMvcHVsc2VhdWRpby9xYXVkaW9pbnB1dF9wdWxzZS5jcHAKK2luZGV4IDJiNTMyNTEzMi4u YjY4YjRhZjFiIDEwMDY0NAorLS0tIGEvcXRtdWx0aW1lZGlhL3NyYy9wbHVnaW5zL3B1bHNlYXVk aW8vcWF1ZGlvaW5wdXRfcHVsc2UuY3BwCisrKysgYi9xdG11bHRpbWVkaWEvc3JjL3BsdWdpbnMv cHVsc2VhdWRpby9xYXVkaW9pbnB1dF9wdWxzZS5jcHAKK0BAIC00MDIsNiArNDAyLDggQEAgaW50 IFFQdWxzZUF1ZGlvSW5wdXQ6OmJ5dGVzUmVhZHkoKSBjb25zdAorIAorIHFpbnQ2NCBRUHVsc2VB dWRpb0lucHV0OjpyZWFkKGNoYXIgKmRhdGEsIHFpbnQ2NCBsZW4pCisgeworKyAgICBRX0FTU0VS VChkYXRhICE9IG51bGxwdHIgfHwgbGVuID09IDApOworKworICAgICBtX2J5dGVzQXZhaWxhYmxl ID0gY2hlY2tCeXRlc1JlYWR5KCk7CisgCisgICAgIHNldEVycm9yKFFBdWRpbzo6Tm9FcnJvcik7 CitAQCAtNDExLDcgKzQxMyw4IEBAIHFpbnQ2NCBRUHVsc2VBdWRpb0lucHV0OjpyZWFkKGNoYXIg KmRhdGEsIHFpbnQ2NCBsZW4pCisgCisgICAgIGlmICghbV9wdWxsTW9kZSAmJiAhbV90ZW1wQnVm ZmVyLmlzRW1wdHkoKSkgeworICAgICAgICAgcmVhZEJ5dGVzID0gcU1pbihzdGF0aWNfY2FzdDxp bnQ+KGxlbiksIG1fdGVtcEJ1ZmZlci5zaXplKCkpOworLSAgICAgICAgbWVtY3B5KGRhdGEsIG1f dGVtcEJ1ZmZlci5jb25zdERhdGEoKSwgcmVhZEJ5dGVzKTsKKysgICAgICAgIGlmIChyZWFkQnl0 ZXMpCisrICAgICAgICAgICAgbWVtY3B5KGRhdGEsIG1fdGVtcEJ1ZmZlci5jb25zdERhdGEoKSwg cmVhZEJ5dGVzKTsKKyAgICAgICAgIG1fdG90YWxUaW1lVmFsdWUgKz0gcmVhZEJ5dGVzOworIAor ICAgICAgICAgaWYgKHJlYWRCeXRlcyA8IG1fdGVtcEJ1ZmZlci5zaXplKCkpIHsKK0BAIC01MDIs OSArNTA1LDEwIEBAIHFpbnQ2NCBRUHVsc2VBdWRpb0lucHV0OjpyZWFkKGNoYXIgKmRhdGEsIHFp bnQ2NCBsZW4pCisgCisgdm9pZCBRUHVsc2VBdWRpb0lucHV0OjphcHBseVZvbHVtZShjb25zdCB2 b2lkICpzcmMsIHZvaWQgKmRlc3QsIGludCBsZW4pCisgeworKyAgICBRX0FTU0VSVCgoc3JjICYm IGRlc3QpIHx8IGxlbiA9PSAwKTsKKyAgICAgaWYgKG1fdm9sdW1lIDwgMS5mKQorICAgICAgICAg UUF1ZGlvSGVscGVySW50ZXJuYWw6OnFNdWx0aXBseVNhbXBsZXMobV92b2x1bWUsIG1fZm9ybWF0 LCBzcmMsIGRlc3QsIGxlbik7CistICAgIGVsc2UKKysgICAgZWxzZSBpZiAobGVuKQorICAgICAg ICAgbWVtY3B5KGRlc3QsIHNyYywgbGVuKTsKKyB9CisgCitTdWJtb2R1bGUgcXRwaW0gMDJlZmVm NWUuLi5mOWE4ZjBmYyAoY29tbWl0cyBub3QgcHJlc2VudCkKK1N1Ym1vZHVsZSBxdHF1aWNrM2Qg Yjg1Y2Y2MjIuLjQ3ZGVmYzhiOgorZGlmZiAtLWdpdCBhL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9h c3NldGltcG9ydGVycy9hc3NpbXAvYXNzaW1wLnBybyBiL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9h c3NldGltcG9ydGVycy9hc3NpbXAvYXNzaW1wLnBybworaW5kZXggY2E1YzQ5OWUuLjE3NGEwNzVi IDEwMDY0NAorLS0tIGEvcXRxdWljazNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2lt cC9hc3NpbXAucHJvCisrKysgYi9xdHF1aWNrM2Qvc3JjL3BsdWdpbnMvYXNzZXRpbXBvcnRlcnMv YXNzaW1wL2Fzc2ltcC5wcm8KK0BAIC0xMCw3ICsxMCw3IEBAIFFUX0ZPUl9DT05GSUcgKz0gYXNz ZXRpbXBvcnRlcnMtcHJpdmF0ZQorIGluY2x1ZGUoJCRPVVRfUFdELy4uL3F0YXNzZXRpbXBvcnRl cnMtY29uZmlnLnByaSkKKyAKKyBxdENvbmZpZyhzeXN0ZW0tYXNzaW1wKTohaWYoY3Jvc3NfY29t cGlsZTpob3N0X2J1aWxkKSB7CistICAgIFFNQUtFX1VTRV9QUklWQVRFICs9IGFzc2ltcAorKyAg ICBRTUFLRV9VU0VfUFJJVkFURSArPSBxdWljazNkLWFzc2ltcAorIH0gZWxzZSB7CisgICAgIGlu Y2x1ZGUoLi4vLi4vLi4vM3JkcGFydHkvYXNzaW1wL2Fzc2ltcC5wcmkpCisgfQorU3VibW9kdWxl IHF0cXVpY2tjb250cm9sczIgM2E2NTdkYzAuLjU2Y2U4MjMzOgorZGlmZiAtLWdpdCBhL3F0cXVp Y2tjb250cm9sczIvc3JjL2ltcG9ydHMvcGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1t ZW51LmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL2ltcG9ydHMvcGxhdGZvcm0vd2lkZ2V0cy9x d2lkZ2V0cGxhdGZvcm1tZW51LmNwcAoraW5kZXggZTVmZTczNGY3Li5lMzY5MjI3NzUgMTAwNjQ0 CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9pbXBvcnRzL3BsYXRmb3JtL3dpZGdldHMvcXdp ZGdldHBsYXRmb3JtbWVudS5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL2ltcG9ydHMv cGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNwcAorQEAgLTM4LDYgKzM4LDcg QEAKKyAjaW5jbHVkZSAicXdpZGdldHBsYXRmb3JtbWVudWl0ZW1fcC5oIgorIAorICNpbmNsdWRl IDxRdEd1aS9xd2luZG93Lmg+CisrI2luY2x1ZGUgPFF0R3VpL3ByaXZhdGUvcWhpZ2hkcGlzY2Fs aW5nX3AuaD4KKyAjaW5jbHVkZSA8UXRXaWRnZXRzL3FtZW51Lmg+CisgI2luY2x1ZGUgPFF0V2lk Z2V0cy9xYWN0aW9uLmg+CisgCitAQCAtMTQ1LDcgKzE0Niw3IEBAIHZvaWQgUVdpZGdldFBsYXRm b3JtTWVudTo6c2hvd1BvcHVwKGNvbnN0IFFXaW5kb3cgKndpbmRvdywgY29uc3QgUVJlY3QgJnRh cmdldFJlCisgCisgICAgIFFQb2ludCB0YXJnZXRQb3MgPSB0YXJnZXRSZWN0LmJvdHRvbUxlZnQo KTsKKyAgICAgaWYgKHdpbmRvdykKKy0gICAgICAgIHRhcmdldFBvcyA9IHdpbmRvdy0+bWFwVG9H bG9iYWwodGFyZ2V0UG9zKTsKKysgICAgICAgIHRhcmdldFBvcyA9IHdpbmRvdy0+bWFwVG9HbG9i YWwoUUhpZ2hEcGk6OmZyb21OYXRpdmVMb2NhbFBvc2l0aW9uKHRhcmdldFBvcywgd2luZG93KSk7 CisgCisgICAgIGNvbnN0IFFXaWRnZXRQbGF0Zm9ybU1lbnVJdGVtICp3aWRnZXRJdGVtID0gcW9i amVjdF9jYXN0PGNvbnN0IFFXaWRnZXRQbGF0Zm9ybU1lbnVJdGVtICo+KGl0ZW0pOworICAgICBt X21lbnUtPnBvcHVwKHRhcmdldFBvcywgd2lkZ2V0SXRlbSA/IHdpZGdldEl0ZW0tPmFjdGlvbigp IDogbnVsbHB0cik7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1w bGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1 aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbi5jcHAKK2luZGV4IDk1MGU0ZTA5OS4u YjgxZmJlYTBiIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0 ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMv cXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uLmNwcAorQEAgLTM4Nyw2ICszODcs MTcgQEAgdm9pZCBRUXVpY2tBYnN0cmFjdEJ1dHRvblByaXZhdGU6Oml0ZW1JbXBsaWNpdEhlaWdo dENoYW5nZWQoUVF1aWNrSXRlbSAqaXRlbSkKKyAgICAgICAgIGVtaXQgcS0+aW1wbGljaXRJbmRp Y2F0b3JIZWlnaHRDaGFuZ2VkKCk7CisgfQorIAorK3ZvaWQgUVF1aWNrQWJzdHJhY3RCdXR0b25Q cml2YXRlOjppdGVtRGVzdHJveWVkKFFRdWlja0l0ZW0gKml0ZW0pCisreworKyAgICBRX1EoUVF1 aWNrQWJzdHJhY3RCdXR0b24pOworKyAgICBRUXVpY2tDb250cm9sUHJpdmF0ZTo6aXRlbURlc3Ry b3llZChpdGVtKTsKKysgICAgaWYgKGl0ZW0gPT0gaW5kaWNhdG9yKSB7CisrICAgICAgICBpbmRp Y2F0b3IgPSBudWxscHRyOworKyAgICAgICAgZW1pdCBxLT5pbXBsaWNpdEluZGljYXRvcldpZHRo Q2hhbmdlZCgpOworKyAgICAgICAgZW1pdCBxLT5pbXBsaWNpdEluZGljYXRvckhlaWdodENoYW5n ZWQoKTsKKysgICAgfQorK30KKysKKyBRUXVpY2tBYnN0cmFjdEJ1dHRvbiAqUVF1aWNrQWJzdHJh Y3RCdXR0b25Qcml2YXRlOjpmaW5kQ2hlY2tlZEJ1dHRvbigpIGNvbnN0CisgeworICAgICBRX1Eo Y29uc3QgUVF1aWNrQWJzdHJhY3RCdXR0b24pOworQEAgLTExNzYsNiArMTE4NywxMiBAQCBRQWNj ZXNzaWJsZTo6Um9sZSBRUXVpY2tBYnN0cmFjdEJ1dHRvbjo6YWNjZXNzaWJsZVJvbGUoKSBjb25z dAorICAgICB9CisgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6QnV0dG9uOworIH0KKysKKyt2b2lk IFFRdWlja0Fic3RyYWN0QnV0dG9uOjphY2Nlc3NpYmxlUHJlc3NBY3Rpb24oKQorK3sKKysgICAg UV9EKFFRdWlja0Fic3RyYWN0QnV0dG9uKTsKKysgICAgZC0+dHJpZ2dlcigpOworK30KKyAjZW5k aWYKKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9z cmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3AuaCBiL3F0cXVpY2tjb250 cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wLmgKK2luZGV4 IDBmYTQ4OTgwZS4uYWI2NjIyMGQwIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMv cXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3AuaAorKysrIGIvcXRxdWlja2Nv bnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3AuaAorQEAg LTIwOSw2ICsyMDksNyBAQCBwcm90ZWN0ZWQ6CisgI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5 KQorICAgICB2b2lkIGFjY2Vzc2liaWxpdHlBY3RpdmVDaGFuZ2VkKGJvb2wgYWN0aXZlKSBvdmVy cmlkZTsKKyAgICAgUUFjY2Vzc2libGU6OlJvbGUgYWNjZXNzaWJsZVJvbGUoKSBjb25zdCBvdmVy cmlkZTsKKysgICAgUV9JTlZPS0FCTEUgdm9pZCBhY2Nlc3NpYmxlUHJlc3NBY3Rpb24oKTsKKyAj ZW5kaWYKKyAKKyBwcml2YXRlOgorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1 aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wX3AuaCBiL3F0cXVpY2tjb250cm9s czIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wX3AuaAoraW5kZXgg OTI5MWMxYTg3Li5iNzI5NzIwZjIgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9x dWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcF9wLmgKKysrKyBiL3F0cXVpY2tj b250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wX3AuaAor QEAgLTEwOSw2ICsxMDksNyBAQCBwdWJsaWM6CisgCisgICAgIHZvaWQgaXRlbUltcGxpY2l0V2lk dGhDaGFuZ2VkKFFRdWlja0l0ZW0gKml0ZW0pIG92ZXJyaWRlOworICAgICB2b2lkIGl0ZW1JbXBs aWNpdEhlaWdodENoYW5nZWQoUVF1aWNrSXRlbSAqaXRlbSkgb3ZlcnJpZGU7CisrICAgIHZvaWQg aXRlbURlc3Ryb3llZChRUXVpY2tJdGVtICppdGVtKSBvdmVycmlkZTsKKyAKKyAgICAgLy8gY29w aWVkIGZyb20gcWFic3RyYWN0YnV0dG9uLmNwcAorICAgICBzdGF0aWMgY29uc3QgaW50IEFVVE9f UkVQRUFUX0RFTEFZID0gMzAwOworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1 aWNrdGVtcGxhdGVzMi9xcXVpY2thY3Rpb24uY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVp Y2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAKK2luZGV4IDIwNDFlNzc0MS4uODYxMGNkZmFl IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlj a2FjdGlvbi5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9x cXVpY2thY3Rpb24uY3BwCitAQCAtMTQ1LDcgKzE0NSw3IEBAIGludCBRUXVpY2tBY3Rpb25Qcml2 YXRlOjpTaG9ydGN1dEVudHJ5OjpzaG9ydGN1dElkKCkgY29uc3QKKyAKKyB2b2lkIFFRdWlja0Fj dGlvblByaXZhdGU6OlNob3J0Y3V0RW50cnk6OmdyYWIoY29uc3QgUUtleVNlcXVlbmNlICZzaG9y dGN1dCwgYm9vbCBlbmFibGVkKQorIHsKKy0gICAgaWYgKHNob3J0Y3V0LmlzRW1wdHkoKSkKKysg ICAgaWYgKHNob3J0Y3V0LmlzRW1wdHkoKSB8fCBtX3Nob3J0Y3V0SWQpCisgICAgICAgICByZXR1 cm47CisgCisgICAgIFF0OjpTaG9ydGN1dENvbnRleHQgY29udGV4dCA9IFF0OjpXaW5kb3dTaG9y dGN1dDsgLy8gVE9ETworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVt cGxhdGVzMi9xcXVpY2tjb250YWluZXIuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0 ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAKK2luZGV4IGYzOGMyYjA5Yy4uNmVlZDJhMDI0 IDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlj a2NvbnRhaW5lci5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVz Mi9xcXVpY2tjb250YWluZXIuY3BwCitAQCAtMjI1LDYgKzIyNSw3IEBAIHZvaWQgUVF1aWNrQ29u dGFpbmVyUHJpdmF0ZTo6Y2xlYW51cCgpCisgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoY29udGVu dE1vZGVsLCAmUVFtbE9iamVjdE1vZGVsOjpjb3VudENoYW5nZWQsIHEsICZRUXVpY2tDb250YWlu ZXI6OmNvdW50Q2hhbmdlZCk7CisgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoY29udGVudE1vZGVs LCAmUVFtbE9iamVjdE1vZGVsOjpjaGlsZHJlbkNoYW5nZWQsIHEsICZRUXVpY2tDb250YWluZXI6 OmNvbnRlbnRDaGlsZHJlbkNoYW5nZWQpOworICAgICBkZWxldGUgY29udGVudE1vZGVsOworKyAg ICBjb250ZW50TW9kZWwgPSBudWxscHRyOworIH0KKyAKKyBRUXVpY2tJdGVtICpRUXVpY2tDb250 YWluZXJQcml2YXRlOjppdGVtQXQoaW50IGluZGV4KSBjb25zdAorQEAgLTQzNiw3ICs0MzcsNyBA QCB2b2lkIFFRdWlja0NvbnRhaW5lclByaXZhdGU6OmNvbnRlbnRDaGlsZHJlbl9jbGVhcihRUW1s TGlzdFByb3BlcnR5PFFRdWlja0l0ZW0+Cisgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjp1 cGRhdGVDb250ZW50V2lkdGgoKQorIHsKKyAgICAgUV9RKFFRdWlja0NvbnRhaW5lcik7CistICAg IGlmIChoYXNDb250ZW50V2lkdGggfHwgcUZ1enp5Q29tcGFyZShjb250ZW50V2lkdGgsIGltcGxp Y2l0Q29udGVudFdpZHRoKSkKKysgICAgaWYgKGhhc0NvbnRlbnRXaWR0aCB8fCBxRnV6enlDb21w YXJlKGNvbnRlbnRXaWR0aCwgaW1wbGljaXRDb250ZW50V2lkdGgpIHx8ICFjb250ZW50TW9kZWwp CisgICAgICAgICByZXR1cm47CisgCisgICAgIGNvbnRlbnRXaWR0aCA9IGltcGxpY2l0Q29udGVu dFdpZHRoOworQEAgLTQ0Niw3ICs0NDcsNyBAQCB2b2lkIFFRdWlja0NvbnRhaW5lclByaXZhdGU6 OnVwZGF0ZUNvbnRlbnRXaWR0aCgpCisgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjp1cGRh dGVDb250ZW50SGVpZ2h0KCkKKyB7CisgICAgIFFfUShRUXVpY2tDb250YWluZXIpOworLSAgICBp ZiAoaGFzQ29udGVudEhlaWdodCB8fCBxRnV6enlDb21wYXJlKGNvbnRlbnRIZWlnaHQsIGltcGxp Y2l0Q29udGVudEhlaWdodCkpCisrICAgIGlmIChoYXNDb250ZW50SGVpZ2h0IHx8IHFGdXp6eUNv bXBhcmUoY29udGVudEhlaWdodCwgaW1wbGljaXRDb250ZW50SGVpZ2h0KSB8fCAhY29udGVudE1v ZGVsKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBjb250ZW50SGVpZ2h0ID0gaW1wbGljaXRD b250ZW50SGVpZ2h0OworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVt cGxhdGVzMi9xcXVpY2tjb250cm9sLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVt cGxhdGVzMi9xcXVpY2tjb250cm9sLmNwcAoraW5kZXggYmJiZDBlNjIyLi4xZjRiNDczNDMgMTAw NjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29u dHJvbC5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVp Y2tjb250cm9sLmNwcAorQEAgLTg0NSw2ICs4NDUsMTMgQEAgdm9pZCBRUXVpY2tDb250cm9sUHJp dmF0ZTo6ZXhlY3V0ZUJhY2tncm91bmQoYm9vbCBjb21wbGV0ZSkKKyAgICAgICAgIHF1aWNrQ29t cGxldGVEZWZlcnJlZChxLCBiYWNrZ3JvdW5kTmFtZSgpLCBiYWNrZ3JvdW5kKTsKKyB9CisgCisr LyoKKysgICAgXGludGVybmFsCisrCisrICAgIEhpZGVzIGFuIGl0ZW0gdGhhdCB3YXMgcmVwbGFj ZWQgYnkgYSBuZXdlciBvbmUsIHJhdGhlciB0aGFuCisrICAgIGRlbGV0aW5nIGl0LCBhcyB0aGUg aXRlbSBpcyB0eXBpY2FsbHkgY3JlYXRlZCBpbiBRTUwgYW5kIGhlbmNlCisrICAgIHdlIGRvbid0 IG93biBpdC4KKysqLworIHZvaWQgUVF1aWNrQ29udHJvbFByaXZhdGU6OmhpZGVPbGRJdGVtKFFR dWlja0l0ZW0gKml0ZW0pCisgeworICAgICBpZiAoIWl0ZW0pCitAQCAtODYzLDYgKzg3MCwyOSBA QCB2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjpoaWRlT2xkSXRlbShRUXVpY2tJdGVtICppdGVt KQorICNlbmRpZgorIH0KKyAKKysvKgorKyAgICBcaW50ZXJuYWwKKysKKysgICAgTmFtZWQgInVu aGlkZSIgYmVjYXVzZSBpdCdzIHVzZWQgZm9yIGNhc2VzIHdoZXJlIGFuIGl0ZW0KKysgICAgdGhh dCB3YXMgcHJldmlvdXNseSBoaWRkZW4gYnkgXGwgaGlkZU9sZEl0ZW0oKSB3YW50cyB0byBiZQor KyAgICBzaG93biBieSBhIGNvbnRyb2wgYWdhaW4sIHN1Y2ggYXMgYSBTY3JvbGxCYXIgaW4gU2Ny b2xsVmlldy4KKysqLworK3ZvaWQgUVF1aWNrQ29udHJvbFByaXZhdGU6OnVuaGlkZU9sZEl0ZW0o UVF1aWNrQ29udHJvbCAqY29udHJvbCwgUVF1aWNrSXRlbSAqaXRlbSkKKyt7CisrICAgIFFfQVNT RVJUKGl0ZW0pOworKyAgICBxQ0RlYnVnKGxjSXRlbU1hbmFnZW1lbnQpIDw8ICJ1bmhpZGluZyBv bGQgaXRlbSIgPDwgaXRlbTsKKysKKysgICAgaXRlbS0+c2V0VmlzaWJsZSh0cnVlKTsKKysgICAg aXRlbS0+c2V0UGFyZW50SXRlbShjb250cm9sKTsKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2li aWxpdHkpCisrICAgIC8vIEFkZCB0aGUgaXRlbSBiYWNrIGluIHRvIHRoZSBhY2Nlc3NpYmlsaXR5 IHRyZWUuCisrICAgIFFRdWlja0FjY2Vzc2libGVBdHRhY2hlZCAqYWNjZXNzaWJsZSA9IGFjY2Vz c2libGVBdHRhY2hlZChpdGVtKTsKKysgICAgaWYgKGFjY2Vzc2libGUpCisrICAgICAgICBhY2Nl c3NpYmxlLT5zZXRJZ25vcmVkKGZhbHNlKTsKKysjZW5kaWYKKyt9CisrCisgdm9pZCBRUXVpY2tD b250cm9sUHJpdmF0ZTo6dXBkYXRlQmFzZWxpbmVPZmZzZXQoKQorIHsKKyAgICAgUV9RKFFRdWlj a0NvbnRyb2wpOworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxh dGVzMi9xcXVpY2tjb250cm9sX3BfcC5oIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1w bGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmgKK2luZGV4IDhlOTc5MDc5ZS4uYTZlNjI0YzkxIDEw MDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Nv bnRyb2xfcF9wLmgKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9x cXVpY2tjb250cm9sX3BfcC5oCitAQCAtMTczLDYgKzE3Myw3IEBAIHB1YmxpYzoKKyAgICAgdmly dHVhbCB2b2lkIGV4ZWN1dGVCYWNrZ3JvdW5kKGJvb2wgY29tcGxldGUgPSBmYWxzZSk7CisgCisg ICAgIHN0YXRpYyB2b2lkIGhpZGVPbGRJdGVtKFFRdWlja0l0ZW0gKml0ZW0pOworKyAgICBzdGF0 aWMgdm9pZCB1bmhpZGVPbGRJdGVtKFFRdWlja0NvbnRyb2wgKmNvbnRyb2wsIFFRdWlja0l0ZW0g Kml0ZW0pOworIAorICAgICB2b2lkIHVwZGF0ZUJhc2VsaW5lT2Zmc2V0KCk7CisgCitkaWZmIC0t Z2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxvZ2J1 dHRvbmJveC5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNr ZGlhbG9nYnV0dG9uYm94LmNwcAoraW5kZXggZTZkYjE0ZWI1Li42MTk3ZDE1NDcgMTAwNjQ0Cist LS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0 dG9uYm94LmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3Fx dWlja2RpYWxvZ2J1dHRvbmJveC5jcHAKK0BAIC0yMzcsNyArMjM3LDcgQEAgc3RhdGljIFFSZWN0 RiBhbGlnbmVkUmVjdChRdDo6TGF5b3V0RGlyZWN0aW9uIGRpcmVjdGlvbiwgUXQ6OkFsaWdubWVu dCBhbGlnbm1lbnQKKyB2b2lkIFFRdWlja0RpYWxvZ0J1dHRvbkJveFByaXZhdGU6OnJlc2l6ZUNv bnRlbnQoKQorIHsKKyAgICAgUV9RKFFRdWlja0RpYWxvZ0J1dHRvbkJveCk7CistICAgIGlmICgh Y29udGVudEl0ZW0pCisrICAgIGlmICghY29udGVudEl0ZW0gfHwgIWNvbnRlbnRNb2RlbCkKKyAg ICAgICAgIHJldHVybjsKKyAKKyAgICAgUVJlY3RGIGdlb21ldHJ5ID0gcS0+Ym91bmRpbmdSZWN0 KCkuYWRqdXN0ZWQocS0+bGVmdFBhZGRpbmcoKSwgcS0+dG9wUGFkZGluZygpLCAtcS0+cmlnaHRQ YWRkaW5nKCksIC1xLT5ib3R0b21QYWRkaW5nKCkpOworQEAgLTMyMiw2ICszMjIsOSBAQCB2b2lk IFFRdWlja0RpYWxvZ0J1dHRvbkJveFByaXZhdGU6OnVwZGF0ZUxheW91dCgpCisgcXJlYWwgUVF1 aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6Z2V0Q29udGVudFdpZHRoKCkgY29uc3QKKyB7Cisg ICAgIFFfUShjb25zdCBRUXVpY2tEaWFsb2dCdXR0b25Cb3gpOworKyAgICBpZiAoIWNvbnRlbnRN b2RlbCkKKysgICAgICAgIHJldHVybiAwOworKworICAgICBjb25zdCBpbnQgY291bnQgPSBjb250 ZW50TW9kZWwtPmNvdW50KCk7CisgICAgIGNvbnN0IHFyZWFsIHRvdGFsU3BhY2luZyA9IHFNYXgo MCwgY291bnQgLSAxKSAqIHNwYWNpbmc7CisgICAgIHFyZWFsIHRvdGFsV2lkdGggPSB0b3RhbFNw YWNpbmc7CitAQCAtMzQxLDYgKzM0NCw5IEBAIHFyZWFsIFFRdWlja0RpYWxvZ0J1dHRvbkJveFBy aXZhdGU6OmdldENvbnRlbnRXaWR0aCgpIGNvbnN0CisgcXJlYWwgUVF1aWNrRGlhbG9nQnV0dG9u Qm94UHJpdmF0ZTo6Z2V0Q29udGVudEhlaWdodCgpIGNvbnN0CisgeworICAgICBRX1EoY29uc3Qg UVF1aWNrRGlhbG9nQnV0dG9uQm94KTsKKysgICAgaWYgKCFjb250ZW50TW9kZWwpCisrICAgICAg ICByZXR1cm4gMDsKKysKKyAgICAgY29uc3QgaW50IGNvdW50ID0gY29udGVudE1vZGVsLT5jb3Vu dCgpOworICAgICBxcmVhbCBtYXhIZWlnaHQgPSAwOworICAgICBmb3IgKGludCBpID0gMDsgaSA8 IGNvdW50OyArK2kpIHsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3Rl bXBsYXRlczIvcXF1aWNrb3ZlcmxheS5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3Rl bXBsYXRlczIvcXF1aWNrb3ZlcmxheS5jcHAKK2luZGV4IDkxYmQ1OTE4NC4uMGNlNTE4Zjg0IDEw MDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja292 ZXJsYXkuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1 aWNrb3ZlcmxheS5jcHAKK0BAIC0zOTksOCArMzk5LDExIEBAIHZvaWQgUVF1aWNrT3ZlcmxheTo6 aXRlbUNoYW5nZShJdGVtQ2hhbmdlIGNoYW5nZSwgY29uc3QgSXRlbUNoYW5nZURhdGEgJmRhdGEp CisgICAgIFFfRChRUXVpY2tPdmVybGF5KTsKKyAgICAgUVF1aWNrSXRlbTo6aXRlbUNoYW5nZShj aGFuZ2UsIGRhdGEpOworIAorLSAgICBpZiAoY2hhbmdlID09IEl0ZW1DaGlsZEFkZGVkQ2hhbmdl IHx8IGNoYW5nZSA9PSBJdGVtQ2hpbGRSZW1vdmVkQ2hhbmdlKQorKyAgICBpZiAoY2hhbmdlID09 IEl0ZW1DaGlsZEFkZGVkQ2hhbmdlIHx8IGNoYW5nZSA9PSBJdGVtQ2hpbGRSZW1vdmVkQ2hhbmdl KSB7CisgICAgICAgICBzZXRWaXNpYmxlKCFkLT5hbGxEcmF3ZXJzLmlzRW1wdHkoKSB8fCAhY2hp bGRJdGVtcygpLmlzRW1wdHkoKSk7CisrICAgICAgICBpZiAoZGF0YS5pdGVtLT5wYXJlbnQoKSA9 PSBkLT5tb3VzZUdyYWJiZXJQb3B1cCkKKysgICAgICAgICAgICBkLT5zZXRNb3VzZUdyYWJiZXJQ b3B1cChudWxscHRyKTsKKysgICAgfQorIH0KKyAKKyB2b2lkIFFRdWlja092ZXJsYXk6Omdlb21l dHJ5Q2hhbmdlZChjb25zdCBRUmVjdEYgJm5ld0dlb21ldHJ5LCBjb25zdCBRUmVjdEYgJm9sZEdl b21ldHJ5KQorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVz Mi9xcXVpY2tzY3JvbGxiYXIuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0 ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAKK2luZGV4IDRlMmY1MDlkYi4uMWM0YjMwOGNkIDEwMDY0 NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9s bGJhci5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVp Y2tzY3JvbGxiYXIuY3BwCitAQCAtNzk3LDYgKzc5NywxNCBAQCB2b2lkIFFRdWlja1Njcm9sbEJh ckF0dGFjaGVkUHJpdmF0ZTo6aW5pdEhvcml6b250YWwoKQorICAgICBpZiAocGFyZW50ICYmIHBh cmVudCA9PSBmbGlja2FibGUtPnBhcmVudEl0ZW0oKSkKKyAgICAgICAgIGhvcml6b250YWwtPnN0 YWNrQWZ0ZXIoZmxpY2thYmxlKTsKKyAKKysgICAgLy8gSWYgYSBzY3JvbGwgYmFyIHdhcyBwcmV2 aW91c2x5IGhpZGRlbiAoZHVlIHRvIGUuZy4gc2V0dGluZyBhIG5ldyBjb250ZW50SXRlbQorKyAg ICAvLyBvbiBhIFNjcm9sbFZpZXcpLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIHVuLWhp ZGUgaXQuCisrICAgIC8vIFdlIGRvbid0IGJvdGhlciBjaGVja2luZyBpZiB0aGUgaXRlbSBpcyBh Y3R1YWxseSB0aGUgb2xkIG9uZSwgYmVjYXVzZQorKyAgICAvLyBpZiBpdCdzIG5vdCwgYWxsIG9m IHRoZSB0aGluZ3MgdGhlIGZ1bmN0aW9uIGRvZXMgKHNldHRpbmcgcGFyZW50LCB2aXNpYmlsaXR5 LCBldGMuKQorKyAgICAvLyBzaG91bGQgYmUgbm8tb3BzIGFueXdheS4KKysgICAgaWYgKGF1dG8g Y29udHJvbCA9IHFvYmplY3RfY2FzdDxRUXVpY2tDb250cm9sKj4ocV9wdHItPnBhcmVudCgpKSkK KysgICAgICAgIFFRdWlja0NvbnRyb2xQcml2YXRlOjp1bmhpZGVPbGRJdGVtKGNvbnRyb2wsIGhv cml6b250YWwpOworKworICAgICBsYXlvdXRIb3Jpem9udGFsKCk7CisgICAgIGhvcml6b250YWwt PnNldFNpemUoYXJlYS0+cHJvcGVydHkoIndpZHRoUmF0aW8iKS50b1JlYWwoKSk7CisgICAgIGhv cml6b250YWwtPnNldFBvc2l0aW9uKGFyZWEtPnByb3BlcnR5KCJ4UG9zaXRpb24iKS50b1JlYWwo KSk7CitAQCAtODE4LDYgKzgyNiw5IEBAIHZvaWQgUVF1aWNrU2Nyb2xsQmFyQXR0YWNoZWRQcml2 YXRlOjppbml0VmVydGljYWwoKQorICAgICBpZiAocGFyZW50ICYmIHBhcmVudCA9PSBmbGlja2Fi bGUtPnBhcmVudEl0ZW0oKSkKKyAgICAgICAgIHZlcnRpY2FsLT5zdGFja0FmdGVyKGZsaWNrYWJs ZSk7CisgCisrICAgIGlmIChhdXRvIGNvbnRyb2wgPSBxb2JqZWN0X2Nhc3Q8UVF1aWNrQ29udHJv bCo+KHFfcHRyLT5wYXJlbnQoKSkpCisrICAgICAgICBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dW5o aWRlT2xkSXRlbShjb250cm9sLCB2ZXJ0aWNhbCk7CisrCisgICAgIGxheW91dFZlcnRpY2FsKCk7 CisgICAgIHZlcnRpY2FsLT5zZXRTaXplKGFyZWEtPnByb3BlcnR5KCJoZWlnaHRSYXRpbyIpLnRv UmVhbCgpKTsKKyAgICAgdmVydGljYWwtPnNldFBvc2l0aW9uKGFyZWEtPnByb3BlcnR5KCJ5UG9z aXRpb24iKS50b1JlYWwoKSk7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9h dXRvL2NvbnRyb2xzL2RhdGEvdHN0X3Njcm9sbHZpZXcucW1sIGIvcXRxdWlja2NvbnRyb2xzMi90 ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3Njcm9sbHZpZXcucW1sCitpbmRleCAwZThiMDgz NTIuLmNkNDkzMTE4NCAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9j b250cm9scy9kYXRhL3RzdF9zY3JvbGx2aWV3LnFtbAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi90 ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3Njcm9sbHZpZXcucW1sCitAQCAtNTc2LDQgKzU3 Niw1MSBAQCBUZXN0Q2FzZSB7CisgICAgICAgICB2ZXJpZnkobmV3SG9yaXpvbnRhbFNjcm9sbEJh ci52aXNpYmxlKQorICAgICAgICAgdmVyaWZ5KCFvbGRIb3Jpem9udGFsU2Nyb2xsQmFyLnZpc2li bGUpCisgICAgIH0KKysKKysgICAgQ29tcG9uZW50IHsKKysgICAgICAgIGlkOiBiaW5kaW5nVG9D b250ZW50SXRlbUFuZFN0YW5kYWxvbmVGbGlja2FibGUKKysKKysgICAgICAgIEl0ZW0geworKyAg ICAgICAgICAgIHdpZHRoOiAyMDAKKysgICAgICAgICAgICBoZWlnaHQ6IDIwMAorKworKyAgICAg ICAgICAgIHByb3BlcnR5IGFsaWFzIHNjcm9sbFZpZXc6IHNjcm9sbFZpZXcKKysKKysgICAgICAg ICAgICBTY3JvbGxWaWV3IHsKKysgICAgICAgICAgICAgICAgaWQ6IHNjcm9sbFZpZXcKKysgICAg ICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKysgICAgICAgICAgICAgICAgY29udGVu dEl0ZW06IGxpc3RWaWV3CisrCisrICAgICAgICAgICAgICAgIHByb3BlcnR5IEl0ZW0gc29tZUJp bmRpbmc6IGNvbnRlbnRJdGVtCisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIExpc3RWaWV3 IHsKKysgICAgICAgICAgICAgICAgaWQ6IGxpc3RWaWV3CisrICAgICAgICAgICAgICAgIG1vZGVs OiAxMAorKyAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogSXRlbURlbGVnYXRlIHsKKysgICAgICAg ICAgICAgICAgICAgIHRleHQ6IG1vZGVsRGF0YQorKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6 IGxpc3RWaWV3LndpZHRoCisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAg ICAgICB9CisrICAgIH0KKysKKysgICAgLy8gVGVzdHMgdGhhdCBzY3JvbGwgYmFycyBzaG93IHVw IGZvciBhIFNjcm9sbFZpZXcgd2hlcmUKKysgICAgLy8gLSBpdHMgY29udGVudEl0ZW0gaXMgZGVj bGFyZWQgYXMgYSBzdGFuZGFsb25lLCBzZXBhcmF0ZSBpdGVtCisrICAgIC8vIC0gdGhlcmUgaXMg YSBiaW5kaW5nIHRvIGNvbnRlbnRJdGVtICh3aGljaCBjYXVzZXMgYSBkZWZhdWx0IEZsaWNrYWJs ZSB0byBiZSBjcmVhdGVkKQorKyAgICBmdW5jdGlvbiB0ZXN0X2JpbmRpbmdUb0NvbnRlbnRJdGVt QW5kU3RhbmRhbG9uZUZsaWNrYWJsZSgpIHsKKysgICAgICAgIGxldCByb290ID0gY3JlYXRlVGVt cG9yYXJ5T2JqZWN0KGJpbmRpbmdUb0NvbnRlbnRJdGVtQW5kU3RhbmRhbG9uZUZsaWNrYWJsZSwg dGVzdENhc2UpCisrICAgICAgICB2ZXJpZnkocm9vdCkKKysKKysgICAgICAgIGxldCBjb250cm9s ID0gcm9vdC5zY3JvbGxWaWV3CisrICAgICAgICBsZXQgdmVydGljYWxTY3JvbGxCYXIgPSBjb250 cm9sLlNjcm9sbEJhci52ZXJ0aWNhbAorKyAgICAgICAgbGV0IGhvcml6b250YWxTY3JvbGxCYXIg PSBjb250cm9sLlNjcm9sbEJhci5ob3Jpem9udGFsCisrICAgICAgICBjb21wYXJlKHZlcnRpY2Fs U2Nyb2xsQmFyLnBhcmVudCwgY29udHJvbCkKKysgICAgICAgIGNvbXBhcmUoaG9yaXpvbnRhbFNj cm9sbEJhci5wYXJlbnQsIGNvbnRyb2wpCisrICAgICAgICB2ZXJpZnkodmVydGljYWxTY3JvbGxC YXIudmlzaWJsZSkKKysgICAgICAgIHZlcmlmeShob3Jpem9udGFsU2Nyb2xsQmFyLnZpc2libGUp CisrCisrICAgICAgICBtb3VzZURyYWcodmVydGljYWxTY3JvbGxCYXIsIHZlcnRpY2FsU2Nyb2xs QmFyLndpZHRoIC8gMiwgdmVydGljYWxTY3JvbGxCYXIuaGVpZ2h0IC8gMiwgMCwgNTApCisrICAg ICAgICB2ZXJpZnkodmVydGljYWxTY3JvbGxCYXIuYWN0aXZlKQorKyAgICAgICAgdmVyaWZ5KGhv cml6b250YWxTY3JvbGxCYXIuYWN0aXZlKQorKyAgICB9CisgfQorZGlmZiAtLWdpdCBhL3F0cXVp Y2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zd2l0Y2gucW1sIGIvcXRx dWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3N3aXRjaC5xbWwKK2lu ZGV4IGIzZmFiNDFjYS4uMTBiNmJhYTAyIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi90 ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3N3aXRjaC5xbWwKKysrKyBiL3F0cXVpY2tjb250 cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zd2l0Y2gucW1sCitAQCAtNjA4LDQg KzYwOCwyNyBAQCBUZXN0Q2FzZSB7CisgICAgICAgICBtb3VzZUNsaWNrKGNvbnRyb2wuaW5kaWNh dG9yKQorICAgICAgICAgdmVyaWZ5KGNvbnRyb2wuYWN0aXZlRm9jdXMpCisgICAgIH0KKysKKysg ICAgQ29tcG9uZW50IHsKKysgICAgICAgIGlkOiBkZWxldGlvbk9yZGVyMQorKyAgICAgICAgSXRl bSB7CisrICAgICAgICAgICAgSW1hZ2UgeyBpZDogaW5uZXJJbWFnZSB9CisrICAgICAgICAgICAg U3dpdGNoIHsgaW5kaWNhdG9yOiBpbm5lckltYWdlIH0KKysgICAgICAgIH0KKysgICAgfQorKwor KyAgICBDb21wb25lbnQgeworKyAgICAgICAgaWQ6IGRlbGV0aW9uT3JkZXIyCisrICAgICAgICBJ dGVtIHsKKysgICAgICAgICAgICBTd2l0Y2ggeyBpbmRpY2F0b3I6IGlubmVySW1hZ2UgfQorKyAg ICAgICAgICAgIEltYWdlIHsgaWQ6IGlubmVySW1hZ2UgfQorKyAgICAgICAgfQorKyAgICB9Cisr CisrICAgIGZ1bmN0aW9uIHRlc3RfZGVsZXRpb25PcmRlcigpIHsKKysgICAgICAgIHZhciBjb250 cm9sMSA9IGNyZWF0ZVRlbXBvcmFyeU9iamVjdChkZWxldGlvbk9yZGVyMSwgdGVzdENhc2UpCisr ICAgICAgICB2ZXJpZnkoY29udHJvbDEpCisrICAgICAgICB2YXIgY29udHJvbDIgPSBjcmVhdGVU ZW1wb3JhcnlPYmplY3QoZGVsZXRpb25PcmRlcjIsIHRlc3RDYXNlKQorKyAgICAgICAgdmVyaWZ5 KGNvbnRyb2wyKQorKyAgICB9CisgfQorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVz dHMvYXV0by9xcXVpY2twb3B1cC9kYXRhL3JlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uLnFtbCBi L3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC9kYXRhL3JlbGVhc2VBZnRl ckV4aXRUcmFuc2l0aW9uLnFtbAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAw MC4uOWU0NTk4YjlmCistLS0gL2Rldi9udWxsCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3Rz L2F1dG8vcXF1aWNrcG9wdXAvZGF0YS9yZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbi5xbWwKK0BA IC0wLDAgKzEsNzggQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0 IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5x dC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGVzdCBz dWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkJTRCQK KysqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxp ZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3Jk YW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGgg dGhlCisrKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0 aGUgdGVybXMgY29udGFpbmVkIGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlv dSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0 aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIK KysqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5p by9jb250YWN0LXVzLgorKyoqCisrKiogQlNEIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2 ZWx5LCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBCU0QgbGlj ZW5zZQorKyoqIGFzIGZvbGxvd3M6CisrKioKKysqKiAiUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrKiogbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z IGFyZQorKyoqIG1ldDoKKysqKiAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11 c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysqKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKyoqICAgKiBSZWRp c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly aWdodAorKyoqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIgaW4KKysqKiAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90 aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorKyoqICAgICBkaXN0cmlidXRpb24uCisr KiogICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgVGhlIFF0IENvbXBhbnkgTHRkIG5vciB0aGUgbmFt ZXMgb2YgaXRzCisrKiogICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorKyoqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0 aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisrKioKKysqKgorKyoqIFRI SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U UklCVVRPUlMKKysqKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ RVMsIElOQ0xVRElORywgQlVUIE5PVAorKyoqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKyoqIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU CisrKiogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E SVJFQ1QsIElOQ0lERU5UQUwsCisrKiogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKyoqIExJTUlURUQgVE8sIFBST0NVUkVN RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorKyoqIERB VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg QU5EIE9OIEFOWQorKyoqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKysqKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKysqKiBPRiBUSElT IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN QUdFLiIKKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisrCisraW1wb3J0IFF0UXVpY2sgMi4xNQorK2ltcG9ydCBRdFF1aWNrLkNvbnRyb2xzIDIu MTUKKysKKytBcHBsaWNhdGlvbldpbmRvdyB7CisrICAgIGlkOiB3aW5kb3cKKysgICAgd2lkdGg6 IDQwMAorKyAgICBoZWlnaHQ6IDQwMAorKyAgICB0aXRsZTogInJlbGVhc2VBZnRlckV4aXRUcmFu c2l0aW9uIgorKworKyAgICBwcm9wZXJ0eSBhbGlhcyBwb3B1cDogcG9wdXAKKysgICAgcHJvcGVy dHkgYWxpYXMgbW9kYWxQb3B1cDogbW9kYWxQb3B1cAorKworKyAgICBQb3B1cCB7CisrICAgICAg ICBpZDogcG9wdXAKKysgICAgICAgIHk6IHBhcmVudC5oZWlnaHQgLSBoZWlnaHQKKysgICAgICAg IHdpZHRoOiA1MAorKyAgICAgICAgaGVpZ2h0OiA1MAorKyAgICB9CisrCisrICAgIFBvcHVwIHsK KysgICAgICAgIGlkOiBtb2RhbFBvcHVwCisrICAgICAgICBtb2RhbDogdHJ1ZQorKyAgICAgICAg eTogcGFyZW50LmhlaWdodCAtIGhlaWdodAorKyAgICAgICAgd2lkdGg6IDUwCisrICAgICAgICBo ZWlnaHQ6IDUwCisrICAgICAgICBleGl0OiAgVHJhbnNpdGlvbiB7IFBhdXNlQW5pbWF0aW9uIHsg ZHVyYXRpb246IDEwMCB9IH0KKysgICAgfQorK30KK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJv bHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvdHN0X3FxdWlja3BvcHVwLmNwcCBiL3F0cXVpY2tj b250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC90c3RfcXF1aWNrcG9wdXAuY3BwCitpbmRl eCA1NDk1MmQxMjguLjNkNTBlMmRkNCAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvdGVz dHMvYXV0by9xcXVpY2twb3B1cC90c3RfcXF1aWNrcG9wdXAuY3BwCisrKysgYi9xdHF1aWNrY29u dHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvdHN0X3FxdWlja3BvcHVwLmNwcAorQEAgLTEw MCw2ICsxMDAsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGludmlzaWJsZVRvb2xUaXBP cGVuKCk7CisgICAgIHZvaWQgY2VudGVySW5PdmVybGF5V2l0aGluU3RhY2tWaWV3SXRlbSgpOwor ICAgICB2b2lkIGRlc3Ryb3lEdXJpbmdFeGl0VHJhbnNpdGlvbigpOworKyAgICB2b2lkIHJlbGVh c2VBZnRlckV4aXRUcmFuc2l0aW9uKCk7CisgfTsKKyAKKyB2b2lkIHRzdF9RUXVpY2tQb3B1cDo6 aW5pdFRlc3RDYXNlKCkKK0BAIC0xNTc1LDYgKzE1NzYsMzQgQEAgdm9pZCB0c3RfUVF1aWNrUG9w dXA6OmRlc3Ryb3lEdXJpbmdFeGl0VHJhbnNpdGlvbigpCisgICAgIFFWRVJJRlkoIWJ1dHRvbi0+ aXNEb3duKCkpOworIH0KKyAKKyt2b2lkIHRzdF9RUXVpY2tQb3B1cDo6cmVsZWFzZUFmdGVyRXhp dFRyYW5zaXRpb24oKQorK3sKKysgICAgUVF1aWNrQXBwbGljYXRpb25IZWxwZXIgaGVscGVyKHRo aXMsICJyZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbi5xbWwiKTsKKysgICAgUVZFUklGWTIoaGVs cGVyLnJlYWR5LCBoZWxwZXIuZmFpbHVyZU1lc3NhZ2UoKSk7CisrCisrICAgIFFRdWlja1dpbmRv dyAqd2luZG93ID0gaGVscGVyLndpbmRvdzsKKysgICAgd2luZG93LT5zaG93KCk7CisrICAgIFFW RVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93QWN0aXZlKHdpbmRvdykpOworKworKyAgICBRUXVp Y2tPdmVybGF5ICpvdmVybGF5ID0gUVF1aWNrT3ZlcmxheTo6b3ZlcmxheSh3aW5kb3cpOworKyAg ICBRUXVpY2tQb3B1cCAqbW9kYWxQb3B1cCA9IHdpbmRvdy0+cHJvcGVydHkoIm1vZGFsUG9wdXAi KS52YWx1ZTxRUXVpY2tQb3B1cCAqPigpOworKyAgICBRUXVpY2tQb3B1cCAqcG9wdXAgPSB3aW5k b3ctPnByb3BlcnR5KCJwb3B1cCIpLnZhbHVlPFFRdWlja1BvcHVwICo+KCk7CisrCisrICAgIG1v ZGFsUG9wdXAtPm9wZW4oKTsKKysgICAgUVRSWV9WRVJJRlkobW9kYWxQb3B1cC0+aXNPcGVuZWQo KSk7CisrCisrICAgIFFUZXN0Ojptb3VzZVByZXNzKHdpbmRvdywgUXQ6OkxlZnRCdXR0b24sIFF0 OjpOb01vZGlmaWVyLCBRUG9pbnQoMSwgMSkpOworKyAgICAvLyB3YWl0IHVudGlsIHRoZSB0cmFu c2l0aW9uIGlzIGZpbmlzaGVkIGFuZCB0aGUgb3ZlcmxheSBoaWRlcyBpdHNlbGYKKysgICAgUVRS WV9WRVJJRlkoIW92ZXJsYXktPmlzVmlzaWJsZSgpKTsKKysgICAgUVRlc3Q6Om1vdXNlUmVsZWFz ZSh3aW5kb3csIFF0OjpMZWZ0QnV0dG9uLCBRdDo6Tm9Nb2RpZmllciwgUVBvaW50KDEsIDEpKTsK KysKKysgICAgcG9wdXAtPm9wZW4oKTsKKysgICAgUVRSWV9WRVJJRlkocG9wdXAtPmlzT3BlbmVk KCkpOworKyAgICBRVGVzdDo6bW91c2VDbGljayh3aW5kb3csIFF0OjpMZWZ0QnV0dG9uLCBRdDo6 Tm9Nb2RpZmllciwgUVBvaW50KDEsIDEpKTsKKysgICAgUVRSWV9WRVJJRlkoIXBvcHVwLT5pc09w ZW5lZCgpKTsKKyt9CisrCisrCisgUVRFU1RfUVVJQ0tDT05UUk9MU19NQUlOKHRzdF9RUXVpY2tQ b3B1cCkKKyAKKyAjaW5jbHVkZSAidHN0X3FxdWlja3BvcHVwLm1vYyIKK1N1Ym1vZHVsZSBxdHNj cmlwdCA1YmU5NWY5Ni4uLjRkOGU0YmQyIChjb21taXRzIG5vdCBwcmVzZW50KQorU3VibW9kdWxl IHF0c3BlZWNoIDE3ZmM5ZmRlLi4yNTU4NDVlMjoKK2RpZmYgLS1naXQgYS9xdHNwZWVjaC9zcmMv cGx1Z2lucy90dHMvc3BlZWNoZGlzcGF0Y2hlci9xdGV4dHRvc3BlZWNoX3NwZWVjaGQuY3BwIGIv cXRzcGVlY2gvc3JjL3BsdWdpbnMvdHRzL3NwZWVjaGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9z cGVlY2hkLmNwcAoraW5kZXggNmViNzRiOC4uYmNjN2RkMSAxMDA2NDQKKy0tLSBhL3F0c3BlZWNo L3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hkaXNwYXRjaGVyL3F0ZXh0dG9zcGVlY2hfc3BlZWNoZC5j cHAKKysrKyBiL3F0c3BlZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hkaXNwYXRjaGVyL3F0ZXh0 dG9zcGVlY2hfc3BlZWNoZC5jcHAKK0BAIC0zNTcsNyArMzU3LDkgQEAgUVZlY3RvcjxRTG9jYWxl PiBRVGV4dFRvU3BlZWNoRW5naW5lU3BlZWNoZDo6YXZhaWxhYmxlTG9jYWxlcygpIGNvbnN0Cisg CisgUVZlY3RvcjxRVm9pY2U+IFFUZXh0VG9TcGVlY2hFbmdpbmVTcGVlY2hkOjphdmFpbGFibGVW b2ljZXMoKSBjb25zdAorIHsKKy0gICAgcmV0dXJuIG1fdm9pY2VzLnZhbHVlcyhtX2N1cnJlbnRM b2NhbGUubmFtZSgpKS50b1ZlY3RvcigpOworKyAgICBRTGlzdDxRVm9pY2U+IHJlc3VsdExpc3Qg PSBtX3ZvaWNlcy52YWx1ZXMobV9jdXJyZW50TG9jYWxlLm5hbWUoKSk7CisrICAgIHN0ZDo6cmV2 ZXJzZShyZXN1bHRMaXN0LmJlZ2luKCksIHJlc3VsdExpc3QuZW5kKCkpOworKyAgICByZXR1cm4g cmVzdWx0TGlzdC50b1ZlY3RvcigpOworIH0KKyAKKyAvLyBXZSBoYXZlIG5vIHdheSBvZiBrbm93 aW5nIG91ciBvd24gY2xpZW50X2lkIHNpbmNlIHNwZWVjaC1kaXNwYXRjaGVyIHNlZW1zIHRvIGJl IGluY29tcGxldGUKK1N1Ym1vZHVsZSBxdHN2ZyAwYzA1NzgwZS4uYTdhMGYyNDk6CitkaWZmIC0t Z2l0IGEvcXRzdmcvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3N2Zy9xc3ZnaW9oYW5kbGVyLmNw cCBiL3F0c3ZnL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxlci5jcHAK K2luZGV4IDU2MWU3N2UuLjEyZTA1NzQgMTAwNjQ0CistLS0gYS9xdHN2Zy9zcmMvcGx1Z2lucy9p bWFnZWZvcm1hdHMvc3ZnL3Fzdmdpb2hhbmRsZXIuY3BwCisrKysgYi9xdHN2Zy9zcmMvcGx1Z2lu cy9pbWFnZWZvcm1hdHMvc3ZnL3Fzdmdpb2hhbmRsZXIuY3BwCitAQCAtMTkxLDYgKzE5MSw4IEBA IGJvb2wgUVN2Z0lPSGFuZGxlcjo6cmVhZChRSW1hZ2UgKmltYWdlKQorICAgICAgICAgICAgIH0K KyAgICAgICAgIH0KKyAgICAgICAgIGlmICghZmluYWxTaXplLmlzRW1wdHkoKSkgeworKyAgICAg ICAgICAgIGlmIChxTWF4KGZpbmFsU2l6ZS53aWR0aCgpLCBmaW5hbFNpemUuaGVpZ2h0KCkpID4g MHhmZmZmKQorKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEFzc3VtZSBjb3JydXB0 ZWQgZmlsZQorICAgICAgICAgICAgIGltYWdlLT5maWxsKGQtPmJhY2tDb2xvci5yZ2JhKCkpOwor ICAgICAgICAgICAgIFFQYWludGVyIHAoaW1hZ2UpOworICAgICAgICAgICAgIGQtPnIucmVuZGVy KCZwLCBib3VuZHMpOworZGlmZiAtLWdpdCBhL3F0c3ZnL3NyYy9zdmcvcXN2Z2hhbmRsZXIuY3Bw IGIvcXRzdmcvc3JjL3N2Zy9xc3ZnaGFuZGxlci5jcHAKK2luZGV4IGE1Zjg3N2YuLjhkZGE1NjMg MTAwNjQ0CistLS0gYS9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVyLmNwcAorKysrIGIvcXRzdmcv c3JjL3N2Zy9xc3ZnaGFuZGxlci5jcHAKK0BAIC0xMzkzLDkgKzEzOTMsMTAgQEAgc3RhdGljIHZv aWQgcGFyc2VGb250KFFTdmdOb2RlICpub2RlLAorICAgICAgICAgY2FzZSBGb250U2l6ZU5vbmU6 CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBjYXNlIEZvbnRTaXplVmFsdWU6IHsKKy0g ICAgICAgICAgICBRU3ZnSGFuZGxlcjo6TGVuZ3RoVHlwZSBkdW1teTsgLy8gc2hvdWxkIGFsd2F5 cyBiZSBwaXhlbCBzaXplCistICAgICAgICAgICAgZm9udFN0eWxlLT5zZXRTaXplKHFNaW4ocGFy c2VMZW5ndGgoYXR0cmlidXRlcy5mb250U2l6ZSwgZHVtbXksIGhhbmRsZXIpLAorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFyZWFsKDB4ZmZmZikpKTsKKysgICAgICAgICAg ICBRU3ZnSGFuZGxlcjo6TGVuZ3RoVHlwZSB0eXBlOworKyAgICAgICAgICAgIHFyZWFsIGZzID0g cGFyc2VMZW5ndGgoYXR0cmlidXRlcy5mb250U2l6ZSwgdHlwZSwgaGFuZGxlcik7CisrICAgICAg ICAgICAgZnMgPSBjb252ZXJ0VG9QaXhlbHMoZnMsIHRydWUsIHR5cGUpOworKyAgICAgICAgICAg IGZvbnRTdHlsZS0+c2V0U2l6ZShxTWluKGZzLCBxcmVhbCgweGZmZmYpKSk7CisgICAgICAgICB9 CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBkZWZhdWx0OgorQEAgLTI1MTMsNiArMjUx NCw4IEBAIHN0YXRpYyBib29sIHBhcnNlQW5pbWF0ZVRyYW5zZm9ybU5vZGUoUVN2Z05vZGUgKnBh cmVudCwKKyAgICAgICAgICAgICArK3M7CisgICAgICAgICB9CisgICAgIH0KKysgICAgaWYgKHZh bHMuY291bnQoKSAlIDMgIT0gMCkKKysgICAgICAgIHJldHVybiBmYWxzZTsKKyAKKyAgICAgYm9v bCBvayA9IHRydWU7CisgICAgIGludCBiZWdpbiA9IHBhcnNlQ2xvY2tWYWx1ZShiZWdpblN0ciwg Jm9rKTsKK0BAIC0yNTc2LDYgKzI1NzksOCBAQCBzdGF0aWMgUVN2Z05vZGUgKmNyZWF0ZUNpcmNs ZU5vZGUoUVN2Z05vZGUgKnBhcmVudCwKKyAgICAgcXJlYWwgbmN4ID0gdG9Eb3VibGUoY3gpOwor ICAgICBxcmVhbCBuY3kgPSB0b0RvdWJsZShjeSk7CisgICAgIHFyZWFsIG5yICA9IHRvRG91Ymxl KHIpOworKyAgICBpZiAobnIgPCAwLjApCisrICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAKKyAg ICAgUVJlY3RGIHJlY3QobmN4LW5yLCBuY3ktbnIsIG5yKjIsIG5yKjIpOworICAgICBRU3ZnTm9k ZSAqY2lyY2xlID0gbmV3IFFTdmdDaXJjbGUocGFyZW50LCByZWN0KTsKK0BAIC0zMDQ2LDE1ICsz MDUxLDE2IEBAIHN0YXRpYyBRU3ZnU3R5bGVQcm9wZXJ0eSAqY3JlYXRlUmFkaWFsR3JhZGllbnRO b2RlKFFTdmdOb2RlICpub2RlLAorIAorICAgICBxcmVhbCBuY3ggPSAwLjU7CisgICAgIHFyZWFs IG5jeSA9IDAuNTsKKy0gICAgcXJlYWwgbnIgID0gMC41OworICAgICBpZiAoIWN4LmlzRW1wdHko KSkKKyAgICAgICAgIG5jeCA9IHRvRG91YmxlKGN4KTsKKyAgICAgaWYgKCFjeS5pc0VtcHR5KCkp CisgICAgICAgICBuY3kgPSB0b0RvdWJsZShjeSk7CisrCisrICAgIHFyZWFsIG5yID0gMC4wOwor ICAgICBpZiAoIXIuaXNFbXB0eSgpKQorICAgICAgICAgbnIgPSB0b0RvdWJsZShyKTsKKy0gICAg aWYgKG5yIDwgMC41KQorLSAgICAgICAgbnIgPSAwLjU7CisrICAgIGlmIChuciA8PSAwLjApCisr ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAKKyAgICAgcXJlYWwgbmZ4ID0gbmN4OworICAgICBp ZiAoIWZ4LmlzRW1wdHkoKSkKK0BAIC0zMzUwLDcgKzMzNTYsOSBAQCBzdGF0aWMgUVN2Z05vZGUg KmNyZWF0ZVRleHROb2RlKFFTdmdOb2RlICpwYXJlbnQsCisgICAgIC8vIyMjIGVkaXRhYmxlIGFu ZCByb3RhdGUgbm90IGhhbmRsZWQKKyAgICAgUVN2Z0hhbmRsZXI6Okxlbmd0aFR5cGUgdHlwZTsK KyAgICAgcXJlYWwgbnggPSBwYXJzZUxlbmd0aCh4LCB0eXBlLCBoYW5kbGVyKTsKKysgICAgbngg PSBjb252ZXJ0VG9QaXhlbHMobngsIHRydWUsIHR5cGUpOworICAgICBxcmVhbCBueSA9IHBhcnNl TGVuZ3RoKHksIHR5cGUsIGhhbmRsZXIpOworKyAgICBueSA9IGNvbnZlcnRUb1BpeGVscyhueSwg dHJ1ZSwgdHlwZSk7CisgCisgICAgIFFTdmdOb2RlICp0ZXh0ID0gbmV3IFFTdmdUZXh0KHBhcmVu dCwgUVBvaW50RihueCwgbnkpKTsKKyAgICAgcmV0dXJuIHRleHQ7CitAQCAtMzY5MSw5ICszNjk5 LDcgQEAgdm9pZCBRU3ZnSGFuZGxlcjo6cGFyc2UoKQorICAgICAgICAgY2FzZSBRWG1sU3RyZWFt UmVhZGVyOjpFbmRFbGVtZW50OgorICAgICAgICAgICAgIGVuZEVsZW1lbnQoeG1sLT5uYW1lKCkp OworICAgICAgICAgICAgICsrcmVtYWluaW5nVW5maW5pc2hlZEVsZW1lbnRzOworLSAgICAgICAg ICAgIC8vIGlmIHdlIGFyZSB1c2luZyBzb21lYm9keSBlbHNlJ3MgcXhtbHN0cmVhbXJlYWRlcgor LSAgICAgICAgICAgIC8vIHdlIHNob3VsZCBub3QgcmVhZCB1bnRpbCB0aGUgZW5kIG9mIHRoZSBz dHJlYW0KKy0gICAgICAgICAgICBkb25lID0gIW1fb3duc1JlYWRlciAmJiAoeG1sLT5uYW1lKCkg PT0gUUxhdGluMVN0cmluZygic3ZnIikpOworKyAgICAgICAgICAgIGRvbmUgPSAoeG1sLT5uYW1l KCkgPT0gUUxhdGluMVN0cmluZygic3ZnIikpOworICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgY2FzZSBRWG1sU3RyZWFtUmVhZGVyOjpDaGFyYWN0ZXJzOgorICAgICAgICAgICAgIGNoYXJh Y3RlcnMoeG1sLT50ZXh0KCkpOworZGlmZiAtLWdpdCBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVj dHVyZS5jcHAgYi9xdHN2Zy9zcmMvc3ZnL3FzdmdzdHJ1Y3R1cmUuY3BwCitpbmRleCBiODk2MDhi Li44OWM5ZTRlIDEwMDY0NAorLS0tIGEvcXRzdmcvc3JjL3N2Zy9xc3Znc3RydWN0dXJlLmNwcAor KysrIGIvcXRzdmcvc3JjL3N2Zy9xc3Znc3RydWN0dXJlLmNwcAorQEAgLTI1NSw5ICsyNTUsMTMg QEAgaW5saW5lIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkU3ZnRmVhdHVyZShjb25zdCBRU3RyaW5n ICZzdHIpCisgICAgIH07CisgCisgICAgIGlmIChzdHIubGVuZ3RoKCkgPD0gTUFYX1dPUkRfTEVO R1RIICYmIHN0ci5sZW5ndGgoKSA+PSBNSU5fV09SRF9MRU5HVEgpIHsKKysgICAgICAgIGNvbnN0 IGNoYXIxNl90IHVuaWNvZGU0NCA9IHN0ci5hdCg0NCkudW5pY29kZSgpOworKyAgICAgICAgY29u c3QgY2hhcjE2X3QgdW5pY29kZTQ1ID0gc3RyLmF0KDQ1KS51bmljb2RlKCk7CisrICAgICAgICBp ZiAodW5pY29kZTQ0ID49IHNpemVvZihhc3NvX3ZhbHVlcykgfHwgdW5pY29kZTQ1ID49IHNpemVv Zihhc3NvX3ZhbHVlcykpCisrICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgY29u c3QgaW50IGtleSA9IHN0ci5sZW5ndGgoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICsgYXNz b192YWx1ZXNbc3RyLmF0KDQ1KS51bmljb2RlKCldCistICAgICAgICAgICAgICAgICAgICAgICAg KyBhc3NvX3ZhbHVlc1tzdHIuYXQoNDQpLnVuaWNvZGUoKV07CisrICAgICAgICAgICAgICAgICAg ICAgICAgKyBhc3NvX3ZhbHVlc1t1bmljb2RlNDVdCisrICAgICAgICAgICAgICAgICAgICAgICAg KyBhc3NvX3ZhbHVlc1t1bmljb2RlNDRdOworICAgICAgICAgaWYgKGtleSA8PSBNQVhfSEFTSF9W QUxVRSAmJiBrZXkgPj0gMCkKKyAgICAgICAgICAgICByZXR1cm4gc3RyID09IFFMYXRpbjFTdHJp bmcod29yZGxpc3Rba2V5XSk7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvc3ZnL3Fz dmd0aW55ZG9jdW1lbnQuY3BwIGIvcXRzdmcvc3JjL3N2Zy9xc3ZndGlueWRvY3VtZW50LmNwcAor aW5kZXggNjNkMDc5Ny4uMTllNzE1NCAxMDA2NDQKKy0tLSBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3Rp bnlkb2N1bWVudC5jcHAKKysrKyBiL3F0c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAK K0BAIC00MzMsOCArNDMzLDE2IEBAIHZvaWQgUVN2Z1RpbnlEb2N1bWVudDo6ZHJhdyhRUGFpbnRl ciAqcCwgUVN2Z0V4dHJhU3RhdGVzICYpCisgICAgIGRyYXcocCk7CisgfQorIAorK3N0YXRpYyBi b29sIGlzVmFsaWRNYXRyaXgoY29uc3QgUVRyYW5zZm9ybSAmdHJhbnNmb3JtKQorK3sKKysgICAg cXJlYWwgZGV0ZXJtaW5hbnQgPSB0cmFuc2Zvcm0uZGV0ZXJtaW5hbnQoKTsKKysgICAgcmV0dXJu IHFJc0Zpbml0ZShkZXRlcm1pbmFudCk7CisrfQorKworIHZvaWQgUVN2Z1RpbnlEb2N1bWVudDo6 bWFwU291cmNlVG9UYXJnZXQoUVBhaW50ZXIgKnAsIGNvbnN0IFFSZWN0RiAmdGFyZ2V0UmVjdCwg Y29uc3QgUVJlY3RGICZzb3VyY2VSZWN0KQorIHsKKysgICAgUVRyYW5zZm9ybSBvbGRUcmFuc2Zv cm0gPSBwLT53b3JsZFRyYW5zZm9ybSgpOworKworICAgICBRUmVjdEYgdGFyZ2V0ID0gdGFyZ2V0 UmVjdDsKKyAgICAgaWYgKHRhcmdldC5pc0VtcHR5KCkpIHsKKyAgICAgICAgIFFQYWludERldmlj ZSAqZGV2ID0gcC0+ZGV2aWNlKCk7CitAQCAtNDg3LDYgKzQ5NSw5IEBAIHZvaWQgUVN2Z1RpbnlE b2N1bWVudDo6bWFwU291cmNlVG9UYXJnZXQoUVBhaW50ZXIgKnAsIGNvbnN0IFFSZWN0RiAmdGFy Z2V0UmVjdCwKKyAgICAgICAgIH0KKyAjZW5kaWYKKyAgICAgfQorKworKyAgICBpZiAoIWlzVmFs aWRNYXRyaXgocC0+d29ybGRUcmFuc2Zvcm0oKSkpCisrICAgICAgICBwLT5zZXRXb3JsZFRyYW5z Zm9ybShvbGRUcmFuc2Zvcm0pOworIH0KKyAKKyBRUmVjdEYgUVN2Z1RpbnlEb2N1bWVudDo6Ym91 bmRzT25FbGVtZW50KGNvbnN0IFFTdHJpbmcgJmlkKSBjb25zdAorZGlmZiAtLWdpdCBhL3F0c3Zn L3Rlc3RzL2F1dG8vcXN2Z3JlbmRlcmVyL3RzdF9xc3ZncmVuZGVyZXIuY3BwIGIvcXRzdmcvdGVz dHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0X3FzdmdyZW5kZXJlci5jcHAKK2luZGV4IDM2Yzc2ZWMu LmRiNzFlMDIgMTAwNjQ0CistLS0gYS9xdHN2Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJlci90c3Rf cXN2Z3JlbmRlcmVyLmNwcAorKysrIGIvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0 X3FzdmdyZW5kZXJlci5jcHAKK0BAIC04Niw2ICs4Niw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAg IHZvaWQgb3NzX2Z1enpfMjM3MzEoKTsKKyAgICAgdm9pZCBvc3NfZnV6el8yNDEzMSgpOworICAg ICB2b2lkIG9zc19mdXp6XzI0NzM4KCk7CisrICAgIHZvaWQgaWxsZWdhbEFuaW1hdGVUcmFuc2Zv cm1fZGF0YSgpOworKyAgICB2b2lkIGlsbGVnYWxBbmltYXRlVHJhbnNmb3JtKCk7CisgCisgI2lm bmRlZiBRVF9OT19DT01QUkVTUworICAgICB2b2lkIHRlc3RHekxvYWRpbmcoKTsKK0BAIC0xNjQ2 LDUgKzE2NDgsMjIgQEAgdm9pZCB0c3RfUVN2Z1JlbmRlcmVyOjpvc3NfZnV6el8yNDczOCgpCisg ICAgIFFTdmdSZW5kZXJlcigpLmxvYWQoUUJ5dGVBcnJheSgiPHN2Zz48cGF0aCBkPVwiYSAyIDFl LTIxMi4uLi4uXCI+IikpOworIH0KKyAKKyt2b2lkIHRzdF9RU3ZnUmVuZGVyZXI6OmlsbGVnYWxB bmltYXRlVHJhbnNmb3JtX2RhdGEoKQorK3sKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxRQnl0ZUFy cmF5Pigic3ZnIik7CisrCisrICAgIFFUZXN0OjpuZXdSb3coImNhc2UxIikgPDwgUUJ5dGVBcnJh eSgiPHN2Zz48YW5pbWF0ZVRyYW5zZm9ybSB0eXBlPVwicm90YXRlXCIgYmVnaW49XCIxXCIgZHVy PVwiMlwiIHZhbHVlcz1cIjgsMCw1LDBcIj4iKTsKKysgICAgUVRlc3Q6Om5ld1JvdygiY2FzZTIi KSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJhbnNmb3JtIHR5cGU9XCJyb3RhdGVcIiBi ZWdpbj1cIjFcIiBkdXI9XCIyXCIgdmFsdWVzPVwiMSwyXCI+Iik7CisrICAgIFFUZXN0OjpuZXdS b3coImNhc2UzIikgPDwgUUJ5dGVBcnJheSgiPHN2Zz48YW5pbWF0ZVRyYW5zZm9ybSB0eXBlPVwi cm90YXRlXCIgYmVnaW49XCIxXCIgZHVyPVwiMlwiIGZyb209XCIuLiA1IDJcIiB0bz1cImZcIj4i KTsKKysgICAgUVRlc3Q6Om5ld1JvdygiY2FzZTQiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmlt YXRlVHJhbnNmb3JtIHR5cGU9XCJzY2FsZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJcIiBieT1cIi0t LC4uXCI+Iik7CisrfQorKworK3ZvaWQgdHN0X1FTdmdSZW5kZXJlcjo6aWxsZWdhbEFuaW1hdGVU cmFuc2Zvcm0oKQorK3sKKysgICAgUUZFVENIKFFCeXRlQXJyYXksIHN2Zyk7CisrICAgIFFTdmdS ZW5kZXJlciByZW5kZXJlcjsKKysgICAgUVZFUklGWSghcmVuZGVyZXIubG9hZChzdmcpKTsgLy8g YWxzbyBzaG91bGRuJ3QgYXNzZXJ0CisrfQorKworIFFURVNUX01BSU4odHN0X1FTdmdSZW5kZXJl cikKKyAjaW5jbHVkZSAidHN0X3FzdmdyZW5kZXJlci5tb2MiCitTdWJtb2R1bGUgcXR0b29scyA2 OTE0ZjdjOC4uMDkwZTUyNmU6CitkaWZmIC0tZ2l0IGEvcXR0b29scy9zcmMvYXNzaXN0YW50L3Fo ZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0b3IuY3BwIGIvcXR0b29scy9zcmMvYXNzaXN0YW50L3Fo ZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0b3IuY3BwCitpbmRleCBmZWFiMWUyZDUuLmNiZmI4MjUw NyAxMDA2NDQKKy0tLSBhL3F0dG9vbHMvc3JjL2Fzc2lzdGFudC9xaGVscGdlbmVyYXRvci9oZWxw Z2VuZXJhdG9yLmNwcAorKysrIGIvcXR0b29scy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9y L2hlbHBnZW5lcmF0b3IuY3BwCitAQCAtNDQ1LDcgKzQ0NSw5IEBAIGJvb2wgSGVscEdlbmVyYXRv clByaXZhdGU6Omluc2VydEZpbGVzKGNvbnN0IFFTdHJpbmdMaXN0ICZmaWxlcywgY29uc3QgUVN0 cmluZyAmCisgICAgIGlmIChmaWx0ZXJTZXRJZCA8IDApCisgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgICsrZmlsdGVyU2V0SWQ7CistICAgIGZvciAoaW50IGF0dElkIDogcUFzQ29uc3QoZmls dGVyQXR0cykpIHsKKysgICAgUUxpc3Q8aW50PiBhdHRWYWx1ZXMgPSBmaWx0ZXJBdHRzLnZhbHVl cygpOworKyAgICBzdGQ6OnNvcnQoYXR0VmFsdWVzLmJlZ2luKCksIGF0dFZhbHVlcy5lbmQoKSk7 CisrICAgIGZvciAoaW50IGF0dElkIDogcUFzQ29uc3QoYXR0VmFsdWVzKSkgeworICAgICAgICAg bV9xdWVyeS0+cHJlcGFyZShRTGF0aW4xU3RyaW5nKCJJTlNFUlQgSU5UTyBGaWxlQXR0cmlidXRl U2V0VGFibGUgIgorICAgICAgICAgICAgICJWQUxVRVMoPywgPykiKSk7CisgICAgICAgICBtX3F1 ZXJ5LT5iaW5kVmFsdWUoMCwgZmlsdGVyU2V0SWQpOworU3VibW9kdWxlIHF0d2F5bGFuZCBkZmIw MTI5Yy4uMjkwNGUxYjM6CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmln dXJlLmpzb24gYi9xdHdheWxhbmQvc3JjL2NsaWVudC9jb25maWd1cmUuanNvbgoraW5kZXggMmY0 MjQ1ODAuLjI5MjIyMzU3IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmln dXJlLmpzb24KKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2NvbmZpZ3VyZS5qc29uCitAQCAt MTQ5LDggKzE0OSw3IEBACisgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmIgorICAgICAgICAg ICAgICAgICBdCisgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAibGlicyI6ICItbGRybSIs CistICAgICAgICAgICAgInVzZSI6ICJlZ2wiCisrICAgICAgICAgICAgInVzZSI6ICJkcm0gZWds IgorICAgICAgICAgfSwKKyAgICAgICAgICJ2dWxrYW4tc2VydmVyLWJ1ZmZlciI6IHsKKyAgICAg ICAgICAgICAibGFiZWwiOiAiVnVsa2FuIEJ1ZmZlciBTaGFyaW5nIiwKK0BAIC0xNjgsNyArMTY3 LDggQEAKKyAgICAgICAgICAgICAgICAgICAgICJleHBvcnRBbGxvY0luZm8uaGFuZGxlVHlwZXMg PSBWS19FWFRFUk5BTF9NRU1PUllfSEFORExFX1RZUEVfT1BBUVVFX0ZEX0JJVF9LSFI7IiwKKyAg ICAgICAgICAgICAgICAgICAgICJyZXR1cm4gMDsiCisgICAgICAgICAgICAgICAgIF0KKy0gICAg ICAgICAgICB9CisrICAgICAgICAgICAgfSwKKysgICAgICAgICAgICAidXNlIjogIndheWxhbmQt Y2xpZW50IgorICAgICAgICAgfSwKKyAgICAgICAgICJlZ2xfMV81LXdheWxhbmQiOiB7CisgICAg ICAgICAgICAgImxhYmVsIjogIkVHTCAxLjUgd2l0aCBXYXlsYW5kIFBsYXRmb3JtIiwKK0BAIC0x ODMsNyArMTgzLDcgQEAKKyAgICAgICAgICAgICAgICAgICAgICJlZ2xHZXRQbGF0Zm9ybURpc3Bs YXkoRUdMX1BMQVRGT1JNX1dBWUxBTkRfRVhULCAoc3RydWN0IHdsX2Rpc3BsYXkgKikobnVsbHB0 ciksIG51bGxwdHIpOyIKKyAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgIH0sCistICAg ICAgICAgICAgInVzZSI6ICJlZ2wiCisrICAgICAgICAgICAgInVzZSI6ICJlZ2wgd2F5bGFuZC1j bGllbnQiCisgICAgICAgICB9CisgICAgIH0sCisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmNwcCBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5jcHAKK2luZGV4IDEyNWIx ZTE5Li5lZGNjZmU2MyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9x d2F5bGFuZGNsaWVudGV4dGVuc2lvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2ds b2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5jcHAKK0BAIC03NCw3ICs3NCwxMCBAQCB2b2lk IFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWwodm9p ZCAqZGF0YSwgOjp3bF9yZWdpcworIHZvaWQgUVdheWxhbmRDbGllbnRFeHRlbnNpb246OmFkZFJl Z2lzdHJ5TGlzdGVuZXIoKQorIHsKKyAgICAgUV9EKFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKTsK Ky0gICAgZC0+d2F5bGFuZEludGVncmF0aW9uLT5kaXNwbGF5KCktPmFkZFJlZ2lzdHJ5TGlzdGVu ZXIoJlFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWws IHRoaXMpOworKyAgICBpZiAoIWQtPnJlZ2lzdGVyZWQpIHsKKysgICAgICAgIGQtPndheWxhbmRJ bnRlZ3JhdGlvbi0+ZGlzcGxheSgpLT5hZGRSZWdpc3RyeUxpc3RlbmVyKCZRV2F5bGFuZENsaWVu dEV4dGVuc2lvblByaXZhdGU6OmhhbmRsZVJlZ2lzdHJ5R2xvYmFsLCB0aGlzKTsKKysgICAgICAg IGQtPnJlZ2lzdGVyZWQgPSB0cnVlOworKyAgICB9CisgfQorIAorIFFXYXlsYW5kQ2xpZW50RXh0 ZW5zaW9uOjpRV2F5bGFuZENsaWVudEV4dGVuc2lvbihjb25zdCBpbnQgdmVyKQorQEAgLTg4LDYg KzkxLDEzIEBAIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjpRV2F5bGFuZENsaWVudEV4dGVuc2lv bihjb25zdCBpbnQgdmVyKQorICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMsICJh ZGRSZWdpc3RyeUxpc3RlbmVyIiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworIH0KKyAKKytRV2F5 bGFuZENsaWVudEV4dGVuc2lvbjo6flFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKCkKKyt7CisrICAg IFFfRChRV2F5bGFuZENsaWVudEV4dGVuc2lvbik7CisrICAgIGlmIChkLT5yZWdpc3RlcmVkICYm ICFRQ29yZUFwcGxpY2F0aW9uOjpjbG9zaW5nRG93bigpKQorKyAgICAgICAgZC0+d2F5bGFuZElu dGVncmF0aW9uLT5kaXNwbGF5KCktPnJlbW92ZUxpc3RlbmVyKCZRV2F5bGFuZENsaWVudEV4dGVu c2lvblByaXZhdGU6OmhhbmRsZVJlZ2lzdHJ5R2xvYmFsLCB0aGlzKTsKKyt9CisrCisgUXRXYXls YW5kQ2xpZW50OjpRV2F5bGFuZEludGVncmF0aW9uICpRV2F5bGFuZENsaWVudEV4dGVuc2lvbjo6 aW50ZWdyYXRpb24oKSBjb25zdAorIHsKKyAgICAgUV9EKGNvbnN0IFFXYXlsYW5kQ2xpZW50RXh0 ZW5zaW9uKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxh bmRjbGllbnRleHRlbnNpb24uaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFu ZGNsaWVudGV4dGVuc2lvbi5oCitpbmRleCA5ODI3MmU1Ny4uNWJkMjgzOTggMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uaAor KysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9u LmgKK0BAIC02Myw2ICs2Myw3IEBAIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXls YW5kQ2xpZW50RXh0ZW5zaW9uIDogcHVibGljIFFPYmplY3QKKyAgICAgUV9QUk9QRVJUWShib29s IGFjdGl2ZSBSRUFEIGlzQWN0aXZlIE5PVElGWSBhY3RpdmVDaGFuZ2VkKQorIHB1YmxpYzoKKyAg ICAgUVdheWxhbmRDbGllbnRFeHRlbnNpb24oY29uc3QgaW50IHZlcnNpb24pOworKyAgICB+UVdh eWxhbmRDbGllbnRFeHRlbnNpb24oKTsKKyAKKyAgICAgUXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFu ZEludGVncmF0aW9uICppbnRlZ3JhdGlvbigpIGNvbnN0OworICAgICBpbnQgdmVyc2lvbigpIGNv bnN0OworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNs aWVudGV4dGVuc2lvbl9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRj bGllbnRleHRlbnNpb25fcC5oCitpbmRleCA2OWNjNDZhMC4uOTA5MWVmYmUgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb25fcC5o CisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNp b25fcC5oCitAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CisgICAgIFF0V2F5bGFuZENsaWVudDo6 UVdheWxhbmRJbnRlZ3JhdGlvbiAqd2F5bGFuZEludGVncmF0aW9uID0gbnVsbHB0cjsKKyAgICAg aW50IHZlcnNpb24gPSAtMTsKKyAgICAgYm9vbCBhY3RpdmUgPSBmYWxzZTsKKysgICAgYm9vbCBy ZWdpc3RlcmVkID0gZmFsc2U7CisgfTsKKyAKKyBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9S VCBRV2F5bGFuZENsaWVudEV4dGVuc2lvblRlbXBsYXRlUHJpdmF0ZSA6IHB1YmxpYyBRV2F5bGFu ZENsaWVudEV4dGVuc2lvblByaXZhdGUKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRhdGFkZXZpY2UuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRk YXRhZGV2aWNlLmNwcAoraW5kZXggN2UyZTMzMDguLmUzZTYwZWQ1IDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlLmNwcAorKysrIGIvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlLmNwcAorQEAgLTcyLDYgKzcyLDggQEAgUVdh eWxhbmREYXRhRGV2aWNlOjpRV2F5bGFuZERhdGFEZXZpY2UoUVdheWxhbmREYXRhRGV2aWNlTWFu YWdlciAqbWFuYWdlciwgUVdheWwKKyAKKyBRV2F5bGFuZERhdGFEZXZpY2U6On5RV2F5bGFuZERh dGFEZXZpY2UoKQorIHsKKysgICAgaWYgKHdsX2RhdGFfZGV2aWNlX2dldF92ZXJzaW9uKG9iamVj dCgpKSA+PSBXTF9EQVRBX0RFVklDRV9SRUxFQVNFX1NJTkNFX1ZFUlNJT04pCisrICAgICAgICBy ZWxlYXNlKCk7CisgfQorIAorIFFXYXlsYW5kRGF0YU9mZmVyICpRV2F5bGFuZERhdGFEZXZpY2U6 OnNlbGVjdGlvbk9mZmVyKCkgY29uc3QKK0BAIC0xMTAsNyArMTEyLDcgQEAgUVdheWxhbmREYXRh T2ZmZXIgKlFXYXlsYW5kRGF0YURldmljZTo6ZHJhZ09mZmVyKCkgY29uc3QKKyAgICAgcmV0dXJu IG1fZHJhZ09mZmVyLmRhdGEoKTsKKyB9CisgCistYm9vbCBRV2F5bGFuZERhdGFEZXZpY2U6OnN0 YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVEYXRhLCBRV2F5bGFuZFdpbmRvdyAqaWNvbikKKytib29s IFFXYXlsYW5kRGF0YURldmljZTo6c3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFF0OjpE cm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25zLCBRV2F5bGFuZFdpbmRvdyAqaWNvbikKKyB7Cisg ICAgIGF1dG8gKnNlYXQgPSBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpOworICAgICBh dXRvICpvcmlnaW4gPSBzZWF0LT5wb2ludGVyRm9jdXMoKTsKK0BAIC0xMjMsNyArMTI1LDI4IEBA IGJvb2wgUVdheWxhbmREYXRhRGV2aWNlOjpzdGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwg UVdheWxhbmRXaW5kb3cgKmljb24pCisgICAgIH0KKyAKKyAgICAgbV9kcmFnU291cmNlLnJlc2V0 KG5ldyBRV2F5bGFuZERhdGFTb3VyY2UobV9kaXNwbGF5LT5kbmRTZWxlY3Rpb25IYW5kbGVyKCks IG1pbWVEYXRhKSk7CisrCisrICAgIGlmICh3bF9kYXRhX2RldmljZV9nZXRfdmVyc2lvbihvYmpl Y3QoKSkgPj0gMykKKysgICAgICAgIG1fZHJhZ1NvdXJjZS0+c2V0X2FjdGlvbnMoZHJvcEFjdGlv bnNUb1dsKHN1cHBvcnRlZEFjdGlvbnMpKTsKKysKKyAgICAgY29ubmVjdChtX2RyYWdTb3VyY2Uu ZGF0YSgpLCAmUVdheWxhbmREYXRhU291cmNlOjpjYW5jZWxsZWQsIHRoaXMsICZRV2F5bGFuZERh dGFEZXZpY2U6OmRyYWdTb3VyY2VDYW5jZWxsZWQpOworKyAgICBjb25uZWN0KG1fZHJhZ1NvdXJj ZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6OmRuZFJlc3BvbnNlVXBkYXRlZCwgdGhpcywg W3RoaXNdKGJvb2wgYWNjZXB0ZWQsIFF0OjpEcm9wQWN0aW9uIGFjdGlvbikgeworKyAgICAgICAg ICAgIGF1dG8gZHJhZyA9IHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRp b25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSk7CisrICAgICAgICAgICAg Ly8gaW4gb2xkIHZlcnNpb25zIGRyb3AgYWN0aW9uIGlzIG5vdCBzZXQsIHNvIHdlIGd1ZXNzCisr ICAgICAgICAgICAgaWYgKHdsX2RhdGFfc291cmNlX2dldF92ZXJzaW9uKG1fZHJhZ1NvdXJjZS0+ b2JqZWN0KCkpIDwgMykgeworKyAgICAgICAgICAgICAgICBkcmFnLT5zZXRSZXNwb25zZShhY2Nl cHRlZCk7CisrICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgUVBsYXRmb3Jt RHJvcFF0UmVzcG9uc2UgcmVzcG9uc2UoYWNjZXB0ZWQsIGFjdGlvbik7CisrICAgICAgICAgICAg ICAgIGRyYWctPnNldFJlc3BvbnNlKHJlc3BvbnNlKTsKKysgICAgICAgICAgICB9CisrICAgIH0p OworKyAgICBjb25uZWN0KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6 OmRuZERyb3BwZWQsIHRoaXMsIFtdKGJvb2wgYWNjZXB0ZWQsIFF0OjpEcm9wQWN0aW9uIGFjdGlv bikgeworKyAgICAgICAgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgcmVzcG9uc2UoYWNjZXB0ZWQs IGFjdGlvbik7CisrICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxp Y2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5zZXREcm9wUmVz cG9uc2UocmVzcG9uc2UpOworKyAgICB9KTsKKysgICAgY29ubmVjdChtX2RyYWdTb3VyY2UuZGF0 YSgpLCAmUVdheWxhbmREYXRhU291cmNlOjpmaW5pc2hlZCwgdGhpcywgW10oKSB7CisrICAgICAg ICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxh dGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5maW5pc2hEcmFnKCk7CisrICAgIH0pOworIAor ICAgICBzdGFydF9kcmFnKG1fZHJhZ1NvdXJjZS0+b2JqZWN0KCksIG9yaWdpbi0+d2xTdXJmYWNl KCksIGljb24tPndsU3VyZmFjZSgpLCBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5z ZXJpYWwoKSk7CisgICAgIHJldHVybiB0cnVlOworQEAgLTE1Miw3ICsxNzUsNyBAQCB2b2lkIFFX YXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfZHJvcCgpCisgICAgICAgICBzdXBwb3J0ZWRB Y3Rpb25zID0gZHJhZy0+c3VwcG9ydGVkQWN0aW9ucygpOworICAgICB9IGVsc2UgaWYgKG1fZHJh Z09mZmVyKSB7CisgICAgICAgICBkcmFnRGF0YSA9IG1fZHJhZ09mZmVyLT5taW1lRGF0YSgpOwor LSAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IFF0OjpDb3B5QWN0aW9uIHwgUXQ6Ok1vdmVBY3Rp b24gfCBRdDo6TGlua0FjdGlvbjsKKysgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBtX2RyYWdP ZmZlci0+c3VwcG9ydGVkQWN0aW9ucygpOworICAgICB9IGVsc2UgeworICAgICAgICAgcmV0dXJu OworICAgICB9CitAQCAtMTYyLDcgKzE4NSwxMSBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6 ZGF0YV9kZXZpY2VfZHJvcCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRR3VpQXBwbGljYXRpb246Omtl eWJvYXJkTW9kaWZpZXJzKCkpOworIAorICAgICBpZiAoZHJhZykgeworLSAgICAgICAgc3RhdGlj X2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50 ZWdyYXRpb24oKS0+ZHJhZygpKS0+ZmluaXNoRHJhZyhyZXNwb25zZSk7CisrICAgICAgICBhdXRv IGRyYWcgPSAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZh dGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKTsKKysgICAgICAgIGRyYWctPnNldERy b3BSZXNwb25zZShyZXNwb25zZSk7CisrICAgICAgICBkcmFnLT5maW5pc2hEcmFnKCk7CisrICAg IH0gZWxzZSBpZiAobV9kcmFnT2ZmZXIpIHsKKysgICAgICAgIG1fZHJhZ09mZmVyLT5maW5pc2go KTsKKyAgICAgfQorIH0KKyAKK0BAIC0xODYsNyArMjEzLDcgQEAgdm9pZCBRV2F5bGFuZERhdGFE ZXZpY2U6OmRhdGFfZGV2aWNlX2VudGVyKHVpbnQzMl90IHNlcmlhbCwgd2xfc3VyZmFjZSAqc3Vy ZmFjZSwKKyAgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBkcmFnLT5zdXBwb3J0ZWRBY3Rpb25z KCk7CisgICAgIH0gZWxzZSBpZiAobV9kcmFnT2ZmZXIpIHsKKyAgICAgICAgIGRyYWdEYXRhID0g bV9kcmFnT2ZmZXItPm1pbWVEYXRhKCk7CistICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gUXQ6 OkNvcHlBY3Rpb24gfCBRdDo6TW92ZUFjdGlvbiB8IFF0OjpMaW5rQWN0aW9uOworKyAgICAgICAg c3VwcG9ydGVkQWN0aW9ucyA9IG1fZHJhZ09mZmVyLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAg IH0KKyAKKyAgICAgY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlID0gUVdp bmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlRHJhZyhtX2RyYWdXaW5kb3csIGRyYWdEYXRhLCBt X2RyYWdQb2ludCwgc3VwcG9ydGVkQWN0aW9ucywKK0BAIC0xOTcsMTEgKzIyNCw3IEBAIHZvaWQg UVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9lbnRlcih1aW50MzJfdCBzZXJpYWwsIHds X3N1cmZhY2UgKnN1cmZhY2UsCisgICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4o UUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5z ZXRSZXNwb25zZShyZXNwb25zZSk7CisgICAgIH0KKyAKKy0gICAgaWYgKHJlc3BvbnNlLmlzQWNj ZXB0ZWQoKSkgeworLSAgICAgICAgd2xfZGF0YV9vZmZlcl9hY2NlcHQobV9kcmFnT2ZmZXItPm9i amVjdCgpLCBtX2VudGVyU2VyaWFsLCBtX2RyYWdPZmZlci0+Zmlyc3RGb3JtYXQoKS50b1V0Zjgo KS5jb25zdERhdGEoKSk7CistICAgIH0gZWxzZSB7CistICAgICAgICB3bF9kYXRhX29mZmVyX2Fj Y2VwdChtX2RyYWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG51bGxwdHIpOworLSAg ICB9CisrICAgIHNlbmRSZXNwb25zZShzdXBwb3J0ZWRBY3Rpb25zLCByZXNwb25zZSk7CisgfQor IAorIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9sZWF2ZSgpCitAQCAtMjM1 LDEwICsyNTgsMTAgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX21vdGlv bih1aW50MzJfdCB0aW1lLCB3bF9maXhlZF90IHgsIHdsX2ZpeGUKKyAgICAgICAgIHN1cHBvcnRl ZEFjdGlvbnMgPSBkcmFnLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxzZSB7CisgICAg ICAgICBkcmFnRGF0YSA9IG1fZHJhZ09mZmVyLT5taW1lRGF0YSgpOworLSAgICAgICAgc3VwcG9y dGVkQWN0aW9ucyA9IFF0OjpDb3B5QWN0aW9uIHwgUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6TGlua0Fj dGlvbjsKKysgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBtX2RyYWdPZmZlci0+c3VwcG9ydGVk QWN0aW9ucygpOworICAgICB9CisgCistICAgIFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlIHJlc3Bv bnNlID0gUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlRHJhZyhtX2RyYWdXaW5kb3csIGRy YWdEYXRhLCBtX2RyYWdQb2ludCwgc3VwcG9ydGVkQWN0aW9ucywKKysgICAgY29uc3QgUVBsYXRm b3JtRHJhZ1F0UmVzcG9uc2UgcmVzcG9uc2UgPSBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5k bGVEcmFnKG1fZHJhZ1dpbmRvdywgZHJhZ0RhdGEsIG1fZHJhZ1BvaW50LCBzdXBwb3J0ZWRBY3Rp b25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUUd1aUFwcGxpY2F0aW9uOjptb3VzZUJ1dHRvbnMoKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFHdWlBcHBsaWNhdGlvbjo6a2V5Ym9hcmRNb2RpZmllcnMoKSk7 CisgCitAQCAtMjQ2LDExICsyNjksNyBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9k ZXZpY2VfbW90aW9uKHVpbnQzMl90IHRpbWUsIHdsX2ZpeGVkX3QgeCwgd2xfZml4ZQorICAgICAg ICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBs YXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+c2V0UmVzcG9uc2UocmVzcG9uc2UpOworICAg ICB9CisgCistICAgIGlmIChyZXNwb25zZS5pc0FjY2VwdGVkKCkpIHsKKy0gICAgICAgIHdsX2Rh dGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVyLT5vYmplY3QoKSwgbV9lbnRlclNlcmlhbCwgbV9k cmFnT2ZmZXItPmZpcnN0Rm9ybWF0KCkudG9VdGY4KCkuY29uc3REYXRhKCkpOworLSAgICB9IGVs c2UgeworLSAgICAgICAgd2xfZGF0YV9vZmZlcl9hY2NlcHQobV9kcmFnT2ZmZXItPm9iamVjdCgp LCBtX2VudGVyU2VyaWFsLCBudWxscHRyKTsKKy0gICAgfQorKyAgICBzZW5kUmVzcG9uc2Uoc3Vw cG9ydGVkQWN0aW9ucywgcmVzcG9uc2UpOworIH0KKyAjZW5kaWYgLy8gUVRfQ09ORklHKGRyYWdh bmRkcm9wKQorIAorQEAgLTI3NywxNCArMjk2LDEwIEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNl OjpzZWxlY3Rpb25Tb3VyY2VDYW5jZWxsZWQoKQorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3Ap Cisgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRyYWdTb3VyY2VDYW5jZWxsZWQoKQorIHsKKysg ICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBs YXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+ZmluaXNoRHJhZygpOworICAgICBtX2RyYWdT b3VyY2UucmVzZXQoKTsKKyB9CisgCistdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRyYWdTb3Vy Y2VUYXJnZXRDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlKQorLXsKKy0gICAgc3RhdGlj X2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50 ZWdyYXRpb24oKS0+ZHJhZygpKS0+dXBkYXRlVGFyZ2V0KG1pbWVUeXBlKTsKKy19CistCisgUVBv aW50IFFXYXlsYW5kRGF0YURldmljZTo6Y2FsY3VsYXRlRHJhZ1Bvc2l0aW9uKGludCB4LCBpbnQg eSwgUVdpbmRvdyAqd25kKSBjb25zdAorIHsKKyAgICAgUVBvaW50IHBudCh3bF9maXhlZF90b19p bnQoeCksIHdsX2ZpeGVkX3RvX2ludCh5KSk7CitAQCAtMjk3LDYgKzMxMiwzMyBAQCBRUG9pbnQg UVdheWxhbmREYXRhRGV2aWNlOjpjYWxjdWxhdGVEcmFnUG9zaXRpb24oaW50IHgsIGludCB5LCBR V2luZG93ICp3bmQpIGNvbgorICAgICB9CisgICAgIHJldHVybiBwbnQ7CisgfQorKworK3ZvaWQg UVdheWxhbmREYXRhRGV2aWNlOjpzZW5kUmVzcG9uc2UoUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRl ZEFjdGlvbnMsIGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlICZyZXNwb25zZSkKKyt7Cisr ICAgIGlmIChyZXNwb25zZS5pc0FjY2VwdGVkKCkpIHsKKysgICAgICAgIGlmICh3bF9kYXRhX2Rl dmljZV9nZXRfdmVyc2lvbihvYmplY3QoKSkgPj0gMykKKysgICAgICAgICAgICBtX2RyYWdPZmZl ci0+c2V0X2FjdGlvbnMoZHJvcEFjdGlvbnNUb1dsKHN1cHBvcnRlZEFjdGlvbnMpLCBkcm9wQWN0 aW9uc1RvV2wocmVzcG9uc2UuYWNjZXB0ZWRBY3Rpb24oKSkpOworKworKyAgICAgICAgbV9kcmFn T2ZmZXItPmFjY2VwdChtX2VudGVyU2VyaWFsLCBtX2RyYWdPZmZlci0+Zmlyc3RGb3JtYXQoKSk7 CisrICAgIH0gZWxzZSB7CisrICAgICAgICBtX2RyYWdPZmZlci0+YWNjZXB0KG1fZW50ZXJTZXJp YWwsIFFTdHJpbmcoKSk7CisrICAgIH0KKyt9CisrCisraW50IFFXYXlsYW5kRGF0YURldmljZTo6 ZHJvcEFjdGlvbnNUb1dsKFF0OjpEcm9wQWN0aW9ucyBhY3Rpb25zKQorK3sKKysKKysgICAgaW50 IHdsQWN0aW9ucyA9IFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9OT05FOworKyAg ICBpZiAoYWN0aW9ucyAmIFF0OjpDb3B5QWN0aW9uKQorKyAgICAgICAgd2xBY3Rpb25zIHw9IFdM X0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9DT1BZOworKyAgICBpZiAoYWN0aW9ucyAm IChRdDo6TW92ZUFjdGlvbiB8IFF0OjpUYXJnZXRNb3ZlQWN0aW9uKSkKKysgICAgICAgIHdsQWN0 aW9ucyB8PSBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fTU9WRTsKKysKKysgICAg Ly8gd2F5bGFuZCBkb2VzIG5vdCBzdXBwb3J0IExpbmtBY3Rpb24gYXQgdGhlIHRpbWUgb2Ygd3Jp dGluZworKyAgICByZXR1cm4gd2xBY3Rpb25zOworK30KKysKKysKKyAjZW5kaWYgLy8gUVRfQ09O RklHKGRyYWdhbmRkcm9wKQorIAorIH0KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRhdGFkZXZpY2VfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRk YXRhZGV2aWNlX3AuaAoraW5kZXggMTZjM2FkMjguLjgwMWRjYzJjIDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlX3AuaAorKysrIGIvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlX3AuaAorQEAgLTY0LDYgKzY0LDcgQEAgUVRf UkVRVUlSRV9DT05GSUcod2F5bGFuZF9kYXRhZGV2aWNlKTsKKyBRVF9CRUdJTl9OQU1FU1BBQ0UK KyAKKyBjbGFzcyBRTWltZURhdGE7CisrY2xhc3MgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2U7Cisg Y2xhc3MgUVdpbmRvdzsKKyAKKyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xpZW50IHsKK0BAIC04OSw3 ICs5MCw3IEBAIHB1YmxpYzoKKyAKKyAjaWYgUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorICAgICBR V2F5bGFuZERhdGFPZmZlciAqZHJhZ09mZmVyKCkgY29uc3Q7CistICAgIGJvb2wgc3RhcnREcmFn KFFNaW1lRGF0YSAqbWltZURhdGEsIFFXYXlsYW5kV2luZG93ICppY29uKTsKKysgICAgYm9vbCBz dGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFj dGlvbnMsIFFXYXlsYW5kV2luZG93ICppY29uKTsKKyAgICAgdm9pZCBjYW5jZWxEcmFnKCk7Cisg I2VuZGlmCisgCitAQCAtMTA5LDEzICsxMTAsMTYgQEAgcHJpdmF0ZSBRX1NMT1RTOgorIAorICNp ZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgICAgIHZvaWQgZHJhZ1NvdXJjZUNhbmNlbGxlZCgp OworLSAgICB2b2lkIGRyYWdTb3VyY2VUYXJnZXRDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJm1pbWVU eXBlKTsKKyAjZW5kaWYKKyAKKyBwcml2YXRlOgorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3Ap CisgICAgIFFQb2ludCBjYWxjdWxhdGVEcmFnUG9zaXRpb24oaW50IHgsIGludCB5LCBRV2luZG93 ICp3bmQpIGNvbnN0OworICNlbmRpZgorKyAgICB2b2lkIHNlbmRSZXNwb25zZShRdDo6RHJvcEFj dGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJl c3BvbnNlKTsKKysKKysgICAgc3RhdGljIGludCBkcm9wQWN0aW9uc1RvV2woUXQ6OkRyb3BBY3Rp b25zIGRyb3BBY3Rpb25zKTsKKysKKyAKKyAgICAgUVdheWxhbmREaXNwbGF5ICptX2Rpc3BsYXkg PSBudWxscHRyOworICAgICBRV2F5bGFuZElucHV0RGV2aWNlICptX2lucHV0RGV2aWNlID0gbnVs bHB0cjsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZp Y2VtYW5hZ2VyLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1h bmFnZXIuY3BwCitpbmRleCAzNWQ2NzMwNy4uNmRjNGY3N2YgMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyLmNwcAorKysrIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlci5jcHAKK0BAIC01MCw4ICs1 MCw4IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQg eworIAorLVFXYXlsYW5kRGF0YURldmljZU1hbmFnZXI6OlFXYXlsYW5kRGF0YURldmljZU1hbmFn ZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCB1aW50MzJfdCBpZCkKKy0gICAgOiB3bF9kYXRh X2RldmljZV9tYW5hZ2VyKGRpc3BsYXktPndsX3JlZ2lzdHJ5KCksIGlkLCAxKQorK1FXYXlsYW5k RGF0YURldmljZU1hbmFnZXI6OlFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNw bGF5ICpkaXNwbGF5LCBpbnQgdmVyc2lvbiwgdWludDMyX3QgaWQpCisrICAgIDogd2xfZGF0YV9k ZXZpY2VfbWFuYWdlcihkaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9uLCAz KSkKKyAgICAgLCBtX2Rpc3BsYXkoZGlzcGxheSkKKyB7CisgICAgIC8vIENyZWF0ZSB0cmFuc2Zl ciBkZXZpY2VzIGZvciBhbGwgaW5wdXQgZGV2aWNlcy4KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaCBiL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXJfcC5oCitpbmRleCBiZDA1YzBmYi4uNTEw ZDliZTQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZp Y2VtYW5hZ2VyX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2 aWNlbWFuYWdlcl9wLmgKK0BAIC02OCw3ICs2OCw3IEBAIGNsYXNzIFFXYXlsYW5kSW5wdXREZXZp Y2U7CisgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdheWxhbmREYXRhRGV2aWNlTWFu YWdlciA6IHB1YmxpYyBRdFdheWxhbmQ6OndsX2RhdGFfZGV2aWNlX21hbmFnZXIKKyB7CisgcHVi bGljOgorLSAgICBRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKFFXYXlsYW5kRGlzcGxheSAqZGlz cGxheSwgdWludDMyX3QgaWQpOworKyAgICBRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKFFXYXls YW5kRGlzcGxheSAqZGlzcGxheSwgaW50IHZlcnNpb24sIHVpbnQzMl90IGlkKTsKKyAgICAgflFX YXlsYW5kRGF0YURldmljZU1hbmFnZXIoKSBvdmVycmlkZTsKKyAKKyAgICAgUVdheWxhbmREYXRh RGV2aWNlICpnZXREYXRhRGV2aWNlKFFXYXlsYW5kSW5wdXREZXZpY2UgKmlucHV0RGV2aWNlKTsK K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlci5jcHAg Yi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlci5jcHAKK2luZGV4IDIyOTdl OGExLi5mZTBlYThjOSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k ZGF0YW9mZmVyLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2Zm ZXIuY3BwCitAQCAtODIsNiArODIsMTUgQEAgUU1pbWVEYXRhICpRV2F5bGFuZERhdGFPZmZlcjo6 bWltZURhdGEoKQorICAgICByZXR1cm4gbV9taW1lRGF0YS5kYXRhKCk7CisgfQorIAorK1F0OjpE cm9wQWN0aW9ucyBRV2F5bGFuZERhdGFPZmZlcjo6c3VwcG9ydGVkQWN0aW9ucygpIGNvbnN0Cisr eworKyAgICBpZiAod2xfZGF0YV9vZmZlcl9nZXRfdmVyc2lvbihjb25zdF9jYXN0PDo6d2xfZGF0 YV9vZmZlcio+KG9iamVjdCgpKSkgPCAzKSB7CisrICAgICAgICByZXR1cm4gUXQ6Ok1vdmVBY3Rp b24gfCBRdDo6Q29weUFjdGlvbjsKKysgICAgfQorKworKyAgICByZXR1cm4gbV9zdXBwb3J0ZWRB Y3Rpb25zOworK30KKysKKyB2b2lkIFFXYXlsYW5kRGF0YU9mZmVyOjpzdGFydFJlY2VpdmluZyhj b25zdCBRU3RyaW5nICZtaW1lVHlwZSwgaW50IGZkKQorIHsKKyAgICAgcmVjZWl2ZShtaW1lVHlw ZSwgZmQpOworQEAgLTkzLDYgKzEwMiwyMiBAQCB2b2lkIFFXYXlsYW5kRGF0YU9mZmVyOjpkYXRh X29mZmVyX29mZmVyKGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSkKKyAgICAgbV9taW1lRGF0YS0+ YXBwZW5kRm9ybWF0KG1pbWVfdHlwZSk7CisgfQorIAorK3ZvaWQgUVdheWxhbmREYXRhT2ZmZXI6 OmRhdGFfb2ZmZXJfYWN0aW9uKHVpbnQzMl90IGRuZF9hY3Rpb24pCisreworKyAgICBRX1VOVVNF RChkbmRfYWN0aW9uKTsKKysgICAgLy8gVGhpcyBpcyB0aGUgY29tcG9zaXRvciB0ZWxsaW5nIHRo ZSBkcmFnIHRhcmdldCB3aGF0IGFjdGlvbiBpdCBzaG91bGQgcGVyZm9ybQorKyAgICAvLyBJdCBk b2VzIG5vdCBtYXAgbmljZWx5IGludG8gUXQgZmluYWwgZHJvcCBzZW1hbnRpY3MsIG90aGVyIHRo YW4gcHJldGVuZGluZyB0aGVyZSBpcyBvbmx5IG9uZSBzdXBwb3J0ZWQgYWN0aW9uPworK30KKysK Kyt2b2lkIFFXYXlsYW5kRGF0YU9mZmVyOjpkYXRhX29mZmVyX3NvdXJjZV9hY3Rpb25zKHVpbnQz Ml90IHNvdXJjZV9hY3Rpb25zKQorK3sKKysgICAgbV9zdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkRy b3BBY3Rpb25zKCk7CisrICAgIGlmIChzb3VyY2VfYWN0aW9ucyAmIFdMX0RBVEFfREVWSUNFX01B TkFHRVJfRE5EX0FDVElPTl9NT1ZFKQorKyAgICAgICAgbV9zdXBwb3J0ZWRBY3Rpb25zIHw9IFF0 OjpNb3ZlQWN0aW9uOworKyAgICBpZiAoc291cmNlX2FjdGlvbnMgJiBXTF9EQVRBX0RFVklDRV9N QU5BR0VSX0RORF9BQ1RJT05fQ09QWSkKKysgICAgICAgIG1fc3VwcG9ydGVkQWN0aW9ucyB8PSBR dDo6Q29weUFjdGlvbjsKKyt9CisrCisgUVdheWxhbmRNaW1lRGF0YTo6UVdheWxhbmRNaW1lRGF0 YShRV2F5bGFuZEFic3RyYWN0RGF0YU9mZmVyICpkYXRhT2ZmZXIpCisgICAgIDogbV9kYXRhT2Zm ZXIoZGF0YU9mZmVyKQorIHsKK0BAIC0xNjMsMTcgKzE4OCwxOCBAQCBRVmFyaWFudCBRV2F5bGFu ZE1pbWVEYXRhOjpyZXRyaWV2ZURhdGFfc3lzKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlLCBRVmFy aWFudDo6VAorIAorIGludCBRV2F5bGFuZE1pbWVEYXRhOjpyZWFkRGF0YShpbnQgZmQsIFFCeXRl QXJyYXkgJmRhdGEpIGNvbnN0CisgeworLSAgICBmZF9zZXQgcmVhZHNldDsKKy0gICAgRkRfWkVS TygmcmVhZHNldCk7CistICAgIEZEX1NFVChmZCwgJnJlYWRzZXQpOworLSAgICBzdHJ1Y3QgdGlt ZXZhbCB0aW1lb3V0OworKyAgICBzdHJ1Y3QgcG9sbGZkIHJlYWRzZXQ7CisrICAgIHJlYWRzZXQu ZmQgPSBmZDsKKysgICAgcmVhZHNldC5ldmVudHMgPSBQT0xMSU47CisrICAgIHN0cnVjdCB0aW1l c3BlYyB0aW1lb3V0OworICAgICB0aW1lb3V0LnR2X3NlYyA9IDE7CistICAgIHRpbWVvdXQudHZf dXNlYyA9IDA7CisrICAgIHRpbWVvdXQudHZfbnNlYyA9IDA7CisrCisgCisgICAgIFFfRk9SRVZF UiB7CistICAgICAgICBpbnQgcmVhZHkgPSBzZWxlY3QoRkRfU0VUU0laRSwgJnJlYWRzZXQsIG51 bGxwdHIsIG51bGxwdHIsICZ0aW1lb3V0KTsKKysgICAgICAgIGludCByZWFkeSA9IHF0X3NhZmVf cG9sbCgmcmVhZHNldCwgMSwgJnRpbWVvdXQpOworICAgICAgICAgaWYgKHJlYWR5IDwgMCkgewor LSAgICAgICAgICAgIHFXYXJuaW5nKCkgPDwgIlFXYXlsYW5kRGF0YU9mZmVyOiBzZWxlY3QoKSBm YWlsZWQiOworKyAgICAgICAgICAgIHFXYXJuaW5nKCkgPDwgIlFXYXlsYW5kRGF0YU9mZmVyOiBx dF9zYWZlX3BvbGwoKSBmYWlsZWQiOworICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAg IH0gZWxzZSBpZiAocmVhZHkgPT0gMCkgeworICAgICAgICAgICAgIHFXYXJuaW5nKCJRV2F5bGFu ZERhdGFPZmZlcjogdGltZW91dCByZWFkaW5nIGZyb20gcGlwZSIpOworZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyX3AuaCBiL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyX3AuaAoraW5kZXggOWNmMTQ4M2MuLjZmNjY3Mzk4IDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5oCisr KysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlcl9wLmgKK0BAIC04Miw2 ICs4Miw3IEBAIHB1YmxpYzoKKyAgICAgZXhwbGljaXQgUVdheWxhbmREYXRhT2ZmZXIoUVdheWxh bmREaXNwbGF5ICpkaXNwbGF5LCBzdHJ1Y3QgOjp3bF9kYXRhX29mZmVyICpvZmZlcik7CisgICAg IH5RV2F5bGFuZERhdGFPZmZlcigpIG92ZXJyaWRlOworICAgICBRTWltZURhdGEgKm1pbWVEYXRh KCkgb3ZlcnJpZGU7CisrICAgIFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25zKCkgY29u c3Q7CisgCisgICAgIFFTdHJpbmcgZmlyc3RGb3JtYXQoKSBjb25zdDsKKyAKK0BAIC04OSwxMCAr OTAsMTMgQEAgcHVibGljOgorIAorIHByb3RlY3RlZDoKKyAgICAgdm9pZCBkYXRhX29mZmVyX29m ZmVyKGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSkgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9v ZmZlcl9zb3VyY2VfYWN0aW9ucyh1aW50MzJfdCBzb3VyY2VfYWN0aW9ucykgb3ZlcnJpZGU7Cisr ICAgIHZvaWQgZGF0YV9vZmZlcl9hY3Rpb24odWludDMyX3QgZG5kX2FjdGlvbikgb3ZlcnJpZGU7 CisgCisgcHJpdmF0ZToKKyAgICAgUVdheWxhbmREaXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRy OworICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFuZE1pbWVEYXRhPiBtX21pbWVEYXRhOworKyAg ICBRdDo6RHJvcEFjdGlvbnMgbV9zdXBwb3J0ZWRBY3Rpb25zOworIH07CisgCisgCitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlLmNwcCBiL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZS5jcHAKK2luZGV4IGY0NTEyMmZiLi41 NTk5Y2JkNCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNv dXJjZS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZS5j cHAKK0BAIC0xMDEsNyArMTAxLDMyIEBAIHZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3Nv dXJjZV9zZW5kKGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSwgaW50MzJfdCBmZCkKKyAKKyB2b2lk IFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0YV9zb3VyY2VfdGFyZ2V0KGNvbnN0IFFTdHJpbmcgJm1p bWVfdHlwZSkKKyB7CistICAgIFFfRU1JVCB0YXJnZXRDaGFuZ2VkKG1pbWVfdHlwZSk7CisrICAg IG1fYWNjZXB0ZWQgPSAhbWltZV90eXBlLmlzRW1wdHkoKTsKKysgICAgUV9FTUlUIGRuZFJlc3Bv bnNlVXBkYXRlZChtX2FjY2VwdGVkLCBtX2Ryb3BBY3Rpb24pOworK30KKysKKyt2b2lkIFFXYXls YW5kRGF0YVNvdXJjZTo6ZGF0YV9zb3VyY2VfYWN0aW9uKHVpbnQzMl90IGFjdGlvbikKKyt7Cisr ICAgIFF0OjpEcm9wQWN0aW9uIHF0QWN0aW9uID0gUXQ6Oklnbm9yZUFjdGlvbjsKKysKKysgICAg aWYgKGFjdGlvbiA9PSBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fTU9WRSkKKysg ICAgICAgIHF0QWN0aW9uID0gUXQ6Ok1vdmVBY3Rpb247CisrICAgIGVsc2UgaWYgKGFjdGlvbiA9 PSBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fQ09QWSkKKysgICAgICAgIHF0QWN0 aW9uID0gUXQ6OkNvcHlBY3Rpb247CisrCisrICAgIG1fZHJvcEFjdGlvbiA9IHF0QWN0aW9uOwor KyAgICBRX0VNSVQgZG5kUmVzcG9uc2VVcGRhdGVkKG1fYWNjZXB0ZWQsIG1fZHJvcEFjdGlvbik7 CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV9kbmRfZmluaXNo ZWQoKQorK3sKKysgICAgUV9FTUlUIGZpbmlzaGVkKCk7CisrfQorKworK3ZvaWQgUVdheWxhbmRE YXRhU291cmNlOjpkYXRhX3NvdXJjZV9kbmRfZHJvcF9wZXJmb3JtZWQoKQorK3sKKysKKysgICAg UV9FTUlUIGRuZERyb3BwZWQobV9hY2NlcHRlZCwgbV9kcm9wQWN0aW9uKTsKKyB9CisgCisgfQor ZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmgg Yi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2VfcC5oCitpbmRleCAyNWFm ZmY3OS4uOTZmMDdiYzMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGRhdGFzb3VyY2VfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFz b3VyY2VfcC5oCitAQCAtNzcsMTcgKzc3LDI1IEBAIHB1YmxpYzoKKyAgICAgUU1pbWVEYXRhICpt aW1lRGF0YSgpIGNvbnN0OworIAorIFFfU0lHTkFMUzoKKy0gICAgdm9pZCB0YXJnZXRDaGFuZ2Vk KGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSk7CisgICAgIHZvaWQgY2FuY2VsbGVkKCk7CisrICAg IHZvaWQgZmluaXNoZWQoKTsKKysKKysgICAgdm9pZCBkbmRSZXNwb25zZVVwZGF0ZWQoYm9vbCBh Y2NlcHRlZCwgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uKTsKKysgICAgdm9pZCBkbmREcm9wcGVkKGJv b2wgYWNjZXB0ZWQsIFF0OjpEcm9wQWN0aW9uIGFjdGlvbik7CisgCisgcHJvdGVjdGVkOgorICAg ICB2b2lkIGRhdGFfc291cmNlX2NhbmNlbGxlZCgpIG92ZXJyaWRlOworICAgICB2b2lkIGRhdGFf c291cmNlX3NlbmQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlLCBpbnQzMl90IGZkKSBvdmVycmlk ZTsKKyAgICAgdm9pZCBkYXRhX3NvdXJjZV90YXJnZXQoY29uc3QgUVN0cmluZyAmbWltZV90eXBl KSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRhX3NvdXJjZV9kbmRfZHJvcF9wZXJmb3JtZWQoKSBv dmVycmlkZTsKKysgICAgdm9pZCBkYXRhX3NvdXJjZV9kbmRfZmluaXNoZWQoKSBvdmVycmlkZTsK KysgICAgdm9pZCBkYXRhX3NvdXJjZV9hY3Rpb24odWludDMyX3QgYWN0aW9uKSBvdmVycmlkZTsK KyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFuZERpc3BsYXkgKm1fZGlzcGxheSA9IG51bGxwdHI7 CisgICAgIFFNaW1lRGF0YSAqbV9taW1lX2RhdGEgPSBudWxscHRyOworKyAgICBib29sIG1fYWNj ZXB0ZWQgPSBmYWxzZTsKKysgICAgUXQ6OkRyb3BBY3Rpb24gbV9kcm9wQWN0aW9uID0gUXQ6Okln bm9yZUFjdGlvbjsKKyB9OworIAorIH0KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRpc3BsYXkuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNw bGF5LmNwcAoraW5kZXggZjEwYzFmNzkuLmMwMWUyMzhiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkaXNwbGF5LmNwcAorQEAgLTg1LDEwICs4NSwyMDMgQEAKKyAKKyAjaW5jbHVk ZSA8ZXJybm8uaD4KKyAKKysjaW5jbHVkZSA8dHVwbGU+IC8vIGZvciBzdGQ6OnRpZQorKworK3N0 YXRpYyB2b2lkIGNoZWNrV2F5bGFuZEVycm9yKHN0cnVjdCB3bF9kaXNwbGF5ICpkaXNwbGF5KQor K3sKKysgICAgaW50IGVjb2RlID0gd2xfZGlzcGxheV9nZXRfZXJyb3IoZGlzcGxheSk7CisrICAg IGlmICgoZWNvZGUgPT0gRVBJUEUgfHwgZWNvZGUgPT0gRUNPTk5SRVNFVCkpIHsKKysgICAgICAg IC8vIHNwZWNpYWwgY2FzZSB0aGlzIHRvIHByb3ZpZGUgYSBuaWNlciBlcnJvcgorKyAgICAgICAg cVdhcm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24gYnJva2UuIERpZCB0aGUgV2F5bGFuZCBj b21wb3NpdG9yIGRpZT8iKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIHFXYXJuaW5nKCJUaGUg V2F5bGFuZCBjb25uZWN0aW9uIGV4cGVyaWVuY2VkIGEgZmF0YWwgZXJyb3I6ICVzIiwgc3RyZXJy b3IoZWNvZGUpKTsKKysgICAgfQorKyAgICBfZXhpdCgxKTsKKyt9CisrCisgUVRfQkVHSU5fTkFN RVNQQUNFCisgCisgbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudCB7CisgCisrY2xhc3MgRXZlbnRU aHJlYWQgOiBwdWJsaWMgUVRocmVhZAorK3sKKysgICAgUV9PQkpFQ1QKKytwdWJsaWM6CisrICAg IGVudW0gT3BlcmF0aW5nTW9kZSB7CisrICAgICAgICBFbWl0VG9EaXNwYXRjaCwgLy8gRW1pdCB0 aGUgc2lnbmFsLCBhbGxvdyBkaXNwYXRjaGluZyBpbiBhIGRpZmZlcm50IHRocmVhZC4KKysgICAg ICAgIFNlbGZEaXNwYXRjaCwgLy8gRGlzcGF0Y2ggdGhlIGV2ZW50cyBpbnNpZGUgdGhpcyB0aHJl YWQuCisrICAgIH07CisrCisrICAgIEV2ZW50VGhyZWFkKHN0cnVjdCB3bF9kaXNwbGF5ICogd2ws IHN0cnVjdCB3bF9ldmVudF9xdWV1ZSAqIGV2X3F1ZXVlLAorKyAgICAgICAgICAgICAgICBPcGVy YXRpbmdNb2RlIG1vZGUpCisrICAgICAgICA6IG1fZmQod2xfZGlzcGxheV9nZXRfZmQod2wpKQor KyAgICAgICAgLCBtX3BpcGVmZHsgLTEsIC0xIH0KKysgICAgICAgICwgbV93bGRpc3BsYXkod2wp CisrICAgICAgICAsIG1fd2xldnF1ZXVlKGV2X3F1ZXVlKQorKyAgICAgICAgLCBtX21vZGUobW9k ZSkKKysgICAgICAgICwgbV9yZWFkaW5nKHRydWUpCisrICAgICAgICAsIG1fcXVpdHRpbmcoZmFs c2UpCisrICAgIHsKKysgICAgICAgIHNldE9iamVjdE5hbWUoUVN0cmluZ0xpdGVyYWwoIldheWxh bmRFdmVudFRocmVhZCIpKTsKKysgICAgfQorKworKyAgICB2b2lkIHJlYWRBbmREaXNwYXRjaEV2 ZW50cygpCisrICAgIHsKKysgICAgICAgIC8qCisrICAgICAgICAgKiBEaXNwYXRjaCBwZW5kaW5n IGV2ZW50cyBhbmQgZmx1c2ggdGhlIHJlcXVlc3RzIGF0IGxlYXN0IG9uY2UuIElmIHRoZSBldmVu dCB0aHJlYWQKKysgICAgICAgICAqIGlzIG5vdCByZWFkaW5nLCB0cnkgdG8gY2FsbCBfcHJlcGFy ZV9yZWFkKCkgdG8gYWxsb3cgdGhlIGV2ZW50IHRocmVhZCB0byBwb2xsKCkuCisrICAgICAgICAg KiBJZiB0aGF0IGZhaWxzLCByZS10cnkgZGlzcGF0Y2ggJiBmbHVzaCBhZ2FpbiB1bnRpbCBfcHJl cGFyZV9yZWFkKCkgaXMgc3VjY2Vzc2Z1bC4KKysgICAgICAgICAqCisrICAgICAgICAgKiBUaGlz IGFsbG93IGFueSBjYWxsIHRvIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpIHRvIHN0YXJ0IGV2ZW50 IHRocmVhZCdzIHBvbGxpbmcsCisrICAgICAgICAgKiBub3Qgb25seSB0aGUgb25lIGlzc3VlZCBm cm9tIGV2ZW50IHRocmVhZCdzIHdhaXRGb3JSZWFkaW5nKCksIHdoaWNoIG1lYW5zIGZ1bmN0aW9u cworKyAgICAgICAgICogY2FsbGVkIGZyb20gZGlzcGF0Y2hfcGVuZGluZygpIGNhbiBzYWZlbHkg c3BpbiBhbiBldmVudCBsb29wLgorKyAgICAgICAgICovCisrICAgICAgICBmb3IgKDs7KSB7Cisr ICAgICAgICAgICAgaWYgKGRpc3BhdGNoUXVldWVQZW5kaW5nKCkgPCAwKSB7CisrICAgICAgICAg ICAgICAgIGNoZWNrV2F5bGFuZEVycm9yKG1fd2xkaXNwbGF5KTsKKysgICAgICAgICAgICAgICAg cmV0dXJuOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICB3bF9kaXNwbGF5X2ZsdXNo KG1fd2xkaXNwbGF5KTsKKysKKysgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGNoZWNrIGlmIGV2 ZW50IHRocmVhZCBpcyByZWFkaW5nIGV2ZXJ5IHRpbWUgd2UgZGlzcGF0Y2gKKysgICAgICAgICAg ICAvLyBzb21ldGhpbmcsIGFzIHRoYXQgbWF5IHJlY3Vyc2l2ZWx5IGNhbGwgdGhpcyBmdW5jdGlv bi4KKysgICAgICAgICAgICBpZiAobV9yZWFkaW5nLmxvYWRBY3F1aXJlKCkpCisrICAgICAgICAg ICAgICAgIGJyZWFrOworKworKyAgICAgICAgICAgIGlmIChwcmVwYXJlUmVhZFF1ZXVlKCkgPT0g MCkgeworKyAgICAgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbCgmbV9tdXRleCk7CisrICAgICAg ICAgICAgICAgIG1fcmVhZGluZy5zdG9yZVJlbGVhc2UodHJ1ZSk7CisrICAgICAgICAgICAgICAg IG1fY29uZC53YWtlT25lKCk7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAg IH0KKysgICAgICAgIH0KKysgICAgfQorKworKyAgICB2b2lkIHN0b3AoKQorKyAgICB7CisrICAg ICAgICAvLyBXZSBoYXZlIHRvIGJvdGggd3JpdGUgdG8gdGhlIHBpcGUgYW5kIHNldCB0aGUgZmxh ZywgYXMgdGhlIHRocmVhZCBtYXkgYmUKKysgICAgICAgIC8vIGVpdGhlciBpbiB0aGUgcG9sbCgp IG9yIHdhaXRpbmcgZm9yIF9wcmVwYXJlX3JlYWQoKS4KKysgICAgICAgIGlmIChtX3BpcGVmZFsx XSAhPSAtMSAmJiB3cml0ZShtX3BpcGVmZFsxXSwgIlwwIiwgMSkgPT0gLTEpCisrICAgICAgICAg ICAgcVdhcm5pbmcoIkZhaWxlZCB0byB3cml0ZSB0byB0aGUgcGlwZTogJXMuIiwgc3RyZXJyb3Io ZXJybm8pKTsKKysKKysgICAgICAgIHsKKysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbCgmbV9t dXRleCk7CisrICAgICAgICAgICAgbV9xdWl0dGluZyA9IHRydWU7CisrICAgICAgICAgICAgbV9j b25kLndha2VPbmUoKTsKKysgICAgICAgIH0KKysKKysgICAgICAgIHdhaXQoKTsKKysgICAgfQor KworK1FfU0lHTkFMUzoKKysgICAgdm9pZCBuZWVkUmVhZEFuZERpc3BhdGNoKCk7CisrCisrcHJv dGVjdGVkOgorKyAgICB2b2lkIHJ1bigpIG92ZXJyaWRlCisrICAgIHsKKysgICAgICAgIC8vIHdl IHVzZSB0aGlzIHBpcGUgdG8gbWFrZSB0aGUgbG9vcCBleGl0IG90aGVyd2lzZSBpZiB3ZSBzaW1w bHkgdXNlZCBhIGZsYWcgb24gdGhlIGxvb3AgY29uZGl0aW9uLCBpZiBzdG9wKCkgZ2V0cworKyAg ICAgICAgLy8gY2FsbGVkIHdoaWxlIHBvbGwoKSBpcyBibG9ja2luZyB0aGUgdGhyZWFkIHdpbGwg bmV2ZXIgcXVpdCBzaW5jZSB0aGVyZSBhcmUgbm8gd2F5bGFuZCBtZXNzYWdlcyBjb21pbmcgYW55 bW9yZS4KKysgICAgICAgIHN0cnVjdCBQaXBlCisrICAgICAgICB7CisrICAgICAgICAgICAgUGlw ZShpbnQgKmZkcykKKysgICAgICAgICAgICAgICAgOiBmZHMoZmRzKQorKyAgICAgICAgICAgIHsK KysgICAgICAgICAgICAgICAgaWYgKHF0X3NhZmVfcGlwZShmZHMpICE9IDApCisrICAgICAgICAg ICAgICAgICAgICBxV2FybmluZygiUGlwZSBjcmVhdGlvbiBmYWlsZWQuIFF1aXR0aW5nIG1heSBo YW5nLiIpOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICB+UGlwZSgpCisrICAgICAgICAg ICAgeworKyAgICAgICAgICAgICAgICBpZiAoZmRzWzBdICE9IC0xKSB7CisrICAgICAgICAgICAg ICAgICAgICBjbG9zZShmZHNbMF0pOworKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoZmRzWzFd KTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBp bnQgKmZkczsKKysgICAgICAgIH0gcGlwZShtX3BpcGVmZCk7CisrCisrICAgICAgICAvLyBNYWtl IHRoZSBtYWluIHRocmVhZCBjYWxsIHdsX3ByZXBhcmVfcmVhZCgpLCBkaXNwYXRjaCB0aGUgcGVu ZGluZyBtZXNzYWdlcyBhbmQgZmx1c2ggdGhlCisrICAgICAgICAvLyBvdXRib3VuZCBvbmVzLiBX YWl0IHVudGlsIGl0J3MgZG9uZSBiZWZvcmUgcHJvY2VlZGluZywgdW5sZXNzIHdlJ3JlIHRvbGQg dG8gcXVpdC4KKysgICAgICAgIHdoaWxlICh3YWl0Rm9yUmVhZGluZygpKSB7CisrICAgICAgICAg ICAgcG9sbGZkIGZkc1syXSA9IHsgeyBtX2ZkLCBQT0xMSU4sIDAgfSwgeyBtX3BpcGVmZFswXSwg UE9MTElOLCAwIH0gfTsKKysgICAgICAgICAgICBwb2xsKGZkcywgMiwgLTEpOworKworKyAgICAg ICAgICAgIGlmIChmZHNbMV0ucmV2ZW50cyAmIFBPTExJTikgeworKyAgICAgICAgICAgICAgICAv LyB3ZSBkb24ndCByZWFsbHkgY2FyZSB0byByZWFkIHRoZSBieXRlIHRoYXQgd2FzIHdyaXR0ZW4g aGVyZSBzaW5jZSB3ZSdyZSBjbG9zaW5nIGRvd24KKysgICAgICAgICAgICAgICAgd2xfZGlzcGxh eV9jYW5jZWxfcmVhZChtX3dsZGlzcGxheSk7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAg ICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBpZiAoZmRzWzBdLnJldmVudHMgJiBQT0xMSU4p CisrICAgICAgICAgICAgICAgIHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMobV93bGRpc3BsYXkpOwor KyAgICAgICAgICAgICAgICAvLyBUaGUgcG9sbGwgd2FzIHN1Y2Nlc2Z1bGwgYW5kIHRoZSBldmVu dCB0aHJlYWQgZGlkIHRoZSB3bF9kaXNwbGF5X3JlYWRfZXZlbnRzKCkuIE9uIHRoZSBuZXh0IGl0 ZXJhdGlvbiBvZiB0aGUgbG9vcAorKyAgICAgICAgICAgICAgICAvLyB0aGUgZXZlbnQgc2VudCB0 byB0aGUgbWFpbiB0aHJlYWQgd2lsbCBjYXVzZSBpdCB0byBkaXNwYXRjaCB0aGUgbWVzc2FnZXMg anVzdCByZWFkLCB1bmxlc3MgdGhlIGxvb3AgZXhpdHMgaW4gd2hpY2gKKysgICAgICAgICAgICAg ICAgLy8gY2FzZSB3ZSBkb24ndCBjYXJlIGFueW1vcmUgYWJvdXQgdGhlbS4KKysgICAgICAgICAg ICBlbHNlCisrICAgICAgICAgICAgICAgIHdsX2Rpc3BsYXlfY2FuY2VsX3JlYWQobV93bGRpc3Bs YXkpOworKyAgICAgICAgfQorKyAgICB9CisrCisrcHJpdmF0ZToKKysgICAgYm9vbCB3YWl0Rm9y UmVhZGluZygpCisrICAgIHsKKysgICAgICAgIFFfQVNTRVJUKFFUaHJlYWQ6OmN1cnJlbnRUaHJl YWQoKSA9PSB0aGlzKTsKKysKKysgICAgICAgIG1fcmVhZGluZy5zdG9yZVJlbGVhc2UoZmFsc2Up OworKworKyAgICAgICAgaWYgKG1fbW9kZSA9PSBTZWxmRGlzcGF0Y2gpIHsKKysgICAgICAgICAg ICByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAg ICAgUV9FTUlUIG5lZWRSZWFkQW5kRGlzcGF0Y2goKTsKKysKKysgICAgICAgICAgICBRTXV0ZXhM b2NrZXIgbG9jaygmbV9tdXRleCk7CisrICAgICAgICAgICAgLy8gbV9yZWFkaW5nIG1pZ2h0IGJl IHNldCBmcm9tIG91ciBlbWl0IG9yIHNvbWUgb3RoZXIgaW52b2NhdGlvbiBvZgorKyAgICAgICAg ICAgIC8vIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpLgorKyAgICAgICAgICAgIHdoaWxlICghbV9y ZWFkaW5nLmxvYWRSZWxheGVkKCkgJiYgIW1fcXVpdHRpbmcpCisrICAgICAgICAgICAgICAgIG1f Y29uZC53YWl0KCZtX211dGV4KTsKKysgICAgICAgIH0KKysKKysgICAgICAgIHJldHVybiAhbV9x dWl0dGluZzsKKysgICAgfQorKworKyAgICBpbnQgZGlzcGF0Y2hRdWV1ZVBlbmRpbmcoKQorKyAg ICB7CisrICAgICAgICBpZiAobV93bGV2cXVldWUpCisrICAgICAgICAgICAgcmV0dXJuIHdsX2Rp c3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVuZGluZyhtX3dsZGlzcGxheSwgbV93bGV2cXVldWUpOwor KyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIHJldHVybiB3bF9kaXNwbGF5X2Rpc3BhdGNoX3Bl bmRpbmcobV93bGRpc3BsYXkpOworKyAgICB9CisrCisrICAgIGludCBwcmVwYXJlUmVhZFF1ZXVl KCkKKysgICAgeworKyAgICAgICAgaWYgKG1fd2xldnF1ZXVlKQorKyAgICAgICAgICAgIHJldHVy biB3bF9kaXNwbGF5X3ByZXBhcmVfcmVhZF9xdWV1ZShtX3dsZGlzcGxheSwgbV93bGV2cXVldWUp OworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIHJldHVybiB3bF9kaXNwbGF5X3ByZXBhcmVf cmVhZChtX3dsZGlzcGxheSk7CisrICAgIH0KKysKKysgICAgaW50IG1fZmQ7CisrICAgIGludCBt X3BpcGVmZFsyXTsKKysgICAgd2xfZGlzcGxheSAqbV93bGRpc3BsYXk7CisrICAgIHdsX2V2ZW50 X3F1ZXVlICptX3dsZXZxdWV1ZTsKKysgICAgT3BlcmF0aW5nTW9kZSBtX21vZGU7CisrCisrICAg IC8qIENvbmN1cnJlbmN5IG5vdGUgd2hlbiBvcGVyYXRpbmcgaW4gRW1pdFRvRGlzcGF0Y2ggbW9k ZToKKysgICAgICogbV9yZWFkaW5nIGlzIHNldCB0byBmYWxzZSBpbnNpZGUgZXZlbnQgdGhyZWFk J3Mgd2FpdEZvclJlYWRpbmcoKSwgYW5kIGlzCisrICAgICAqIHNldCB0byB0cnVlIGluc2lkZSBt YWluIHRocmVhZCdzIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpLgorKyAgICAgKiBUaGUgbG9jayBp cyBub3QgdGFrZW4gd2hlbiBzZXR0aW5nIG1fcmVhZGluZyB0byBmYWxzZSwgYXMgdGhlIG1haW4g dGhyZWFkCisrICAgICAqIGlzIG5vdCBhY3RpdmVseSB3YWl0aW5nIGZvciBpdCB0byB0dXJuIGZh bHNlLiBIb3dldmVyLCB0aGUgbG9jayBpcyB0YWtlbgorKyAgICAgKiBpbnNpZGUgcmVhZEFuZERp c3BhdGNoRXZlbnRzKCkgYmVmb3JlIHNldHRpbmcgbV9yZWFkaW5nIHRvIHRydWUsCisrICAgICAq IGFzIHRoZSBldmVudCB0aHJlYWQgaXMgYWN0aXZlbHkgd2FpdGluZyBmb3IgaXQgdW5kZXIgdGhl IHdhaXQgY29uZGl0aW9uLgorKyAgICAgKi8KKysKKysgICAgUUF0b21pY0ludGVnZXI8Ym9vbD4g bV9yZWFkaW5nOworKyAgICBib29sIG1fcXVpdHRpbmc7CisrICAgIFFNdXRleCBtX211dGV4Owor KyAgICBRV2FpdENvbmRpdGlvbiBtX2NvbmQ7CisrfTsKKysKKyBRX0xPR0dJTkdfQ0FURUdPUlko bGNRcGFXYXlsYW5kLCAicXQucXBhLndheWxhbmQiKTsgLy8gZm9yIGdlbmVyYWwgKHVuY2F0ZWdv cml6ZWQpIFdheWxhbmQgcGxhdGZvcm0gbG9nZ2luZworIAorIHN0cnVjdCB3bF9zdXJmYWNlICpR V2F5bGFuZERpc3BsYXk6OmNyZWF0ZVN1cmZhY2Uodm9pZCAqaGFuZGxlKQorQEAgLTE1OCwxNyAr MzUxLDE2IEBAIFFXYXlsYW5kRGlzcGxheTo6UVdheWxhbmREaXNwbGF5KFFXYXlsYW5kSW50ZWdy YXRpb24gKndheWxhbmRJbnRlZ3JhdGlvbikKKyAgICAgaWYgKCFtWGtiQ29udGV4dCkKKyAgICAg ICAgIHFDV2FybmluZyhsY1FwYVdheWxhbmQsICJmYWlsZWQgdG8gY3JlYXRlIHhrYiBjb250ZXh0 Iik7CisgI2VuZGlmCistCistICAgIGZvcmNlUm91bmRUcmlwKCk7CistCistICAgIGlmICghbVdh aXRpbmdTY3JlZW5zLmlzRW1wdHkoKSkgeworLSAgICAgICAgLy8gR2l2ZSB3bF9vdXRwdXQuZG9u ZSBhbmQgenhkZ19vdXRwdXRfdjEuZG9uZSBldmVudHMgYSBjaGFuY2UgdG8gYXJyaXZlCistICAg ICAgICBmb3JjZVJvdW5kVHJpcCgpOworLSAgICB9CisgfQorIAorIFFXYXlsYW5kRGlzcGxheTo6 flFXYXlsYW5kRGlzcGxheSh2b2lkKQorIHsKKysgICAgaWYgKG1fZXZlbnRUaHJlYWQpCisrICAg ICAgICBtX2V2ZW50VGhyZWFkLT5zdG9wKCk7CisrCisrICAgIGlmIChtX2ZyYW1lRXZlbnRRdWV1 ZVRocmVhZCkKKysgICAgICAgIG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkLT5zdG9wKCk7CisrCisg ICAgIGlmIChtU3luY0NhbGxiYWNrKQorICAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShtU3lu Y0NhbGxiYWNrKTsKKyAKK0BAIC0xODcsNiArMzc5LDIxIEBAIFFXYXlsYW5kRGlzcGxheTo6flFX YXlsYW5kRGlzcGxheSh2b2lkKQorICNlbmRpZgorICAgICBpZiAobURpc3BsYXkpCisgICAgICAg ICB3bF9kaXNwbGF5X2Rpc2Nvbm5lY3QobURpc3BsYXkpOworKworKyAgICBpZiAobV9mcmFtZUV2 ZW50UXVldWUpCisrICAgICAgICB3bF9ldmVudF9xdWV1ZV9kZXN0cm95KG1fZnJhbWVFdmVudFF1 ZXVlKTsKKyt9CisrCisrLy8gU3RlcHMgd2hpY2ggaXMgY2FsbGVkIGp1c3QgYWZ0ZXIgY29uc3Ry dWN0b3IuIFRoaXMgc2VwYXJhdGVzIHJlZ2lzdHJ5X2dsb2JhbCgpIG91dCBvZiB0aGUgY29uc3Ry dWN0b3IKKysvLyBzbyB0aGF0IGZhY3RvcnkgZnVuY3Rpb25zIGluIGludGVncmF0aW9uIGNhbiBi ZSBvdmVycmlkZGVuLgorK3ZvaWQgUVdheWxhbmREaXNwbGF5Ojppbml0aWFsaXplKCkKKyt7Cisr ICAgIGZvcmNlUm91bmRUcmlwKCk7CisrCisrICAgIGlmICghbVdhaXRpbmdTY3JlZW5zLmlzRW1w dHkoKSkgeworKyAgICAgICAgLy8gR2l2ZSB3bF9vdXRwdXQuZG9uZSBhbmQgenhkZ19vdXRwdXRf djEuZG9uZSBldmVudHMgYSBjaGFuY2UgdG8gYXJyaXZlCisrICAgICAgICBmb3JjZVJvdW5kVHJp cCgpOworKyAgICB9CisgfQorIAorIHZvaWQgUVdheWxhbmREaXNwbGF5OjplbnN1cmVTY3JlZW4o KQorQEAgLTIwMyw5OCArNDEwLDM3IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjplbnN1cmVTY3Jl ZW4oKQorIAorIHZvaWQgUVdheWxhbmREaXNwbGF5OjpjaGVja0Vycm9yKCkgY29uc3QKKyB7Cist ICAgIGludCBlY29kZSA9IHdsX2Rpc3BsYXlfZ2V0X2Vycm9yKG1EaXNwbGF5KTsKKy0gICAgaWYg KChlY29kZSA9PSBFUElQRSB8fCBlY29kZSA9PSBFQ09OTlJFU0VUKSkgeworLSAgICAgICAgLy8g c3BlY2lhbCBjYXNlIHRoaXMgdG8gcHJvdmlkZSBhIG5pY2VyIGVycm9yCistICAgICAgICBxV2Fy bmluZygiVGhlIFdheWxhbmQgY29ubmVjdGlvbiBicm9rZS4gRGlkIHRoZSBXYXlsYW5kIGNvbXBv c2l0b3IgZGllPyIpOworLSAgICB9IGVsc2UgeworLSAgICAgICAgcVdhcm5pbmcoIlRoZSBXYXls YW5kIGNvbm5lY3Rpb24gZXhwZXJpZW5jZWQgYSBmYXRhbCBlcnJvcjogJXMiLCBzdHJlcnJvcihl Y29kZSkpOworLSAgICB9CistICAgIF9leGl0KDEpOworKyAgICBjaGVja1dheWxhbmRFcnJvciht RGlzcGxheSk7CisgfQorIAorKy8vIENhbGxlZCBpbiBtYWluIHRocmVhZCwgZWl0aGVyIGZyb20g cXVldWVkIHNpZ25hbCBvciBkaXJlY3RseS4KKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6Zmx1c2hS ZXF1ZXN0cygpCisgeworLSAgICBpZiAod2xfZGlzcGxheV9wcmVwYXJlX3JlYWQobURpc3BsYXkp ID09IDApIHsKKy0gICAgICAgIHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMobURpc3BsYXkpOworLSAg ICB9CistCistICAgIGlmICh3bF9kaXNwbGF5X2Rpc3BhdGNoX3BlbmRpbmcobURpc3BsYXkpIDwg MCkKKy0gICAgICAgIGNoZWNrRXJyb3IoKTsKKy0KKy0gICAgeworLSAgICAgICAgUVJlYWRMb2Nr ZXIgbG9ja2VyKCZtX2ZyYW1lUXVldWVMb2NrKTsKKy0gICAgICAgIGZvciAoY29uc3QgRnJhbWVR dWV1ZSAmcSA6IG1FeHRlcm5hbFF1ZXVlcykgeworLSAgICAgICAgICAgIFFNdXRleExvY2tlciBs b2NrZXIocS5tdXRleCk7CistICAgICAgICAgICAgd2hpbGUgKHdsX2Rpc3BsYXlfcHJlcGFyZV9y ZWFkX3F1ZXVlKG1EaXNwbGF5LCBxLnF1ZXVlKSAhPSAwKQorLSAgICAgICAgICAgICAgICB3bF9k aXNwbGF5X2Rpc3BhdGNoX3F1ZXVlX3BlbmRpbmcobURpc3BsYXksIHEucXVldWUpOworLSAgICAg ICAgICAgIHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMobURpc3BsYXkpOworLSAgICAgICAgICAgIHds X2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVuZGluZyhtRGlzcGxheSwgcS5xdWV1ZSk7CistICAg ICAgICB9CistICAgIH0KKy0KKy0gICAgd2xfZGlzcGxheV9mbHVzaChtRGlzcGxheSk7CistfQor LQorLXZvaWQgUVdheWxhbmREaXNwbGF5OjpibG9ja2luZ1JlYWRFdmVudHMoKQorLXsKKy0gICAg aWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2gobURpc3BsYXkpIDwgMCkKKy0gICAgICAgIGNoZWNrRXJy b3IoKTsKKy19CistCistdm9pZCBRV2F5bGFuZERpc3BsYXk6OmRlc3Ryb3lGcmFtZVF1ZXVlKGNv bnN0IFFXYXlsYW5kRGlzcGxheTo6RnJhbWVRdWV1ZSAmcSkKKy17CistICAgIFFXcml0ZUxvY2tl ciBsb2NrZXIoJm1fZnJhbWVRdWV1ZUxvY2spOworLSAgICBhdXRvIGl0ID0gc3RkOjpmaW5kX2lm KG1FeHRlcm5hbFF1ZXVlcy5iZWdpbigpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1F eHRlcm5hbFF1ZXVlcy5lbmQoKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBbJnFdIChj b25zdCBRV2F5bGFuZERpc3BsYXk6OkZyYW1lUXVldWUgJm90aGVyKXsgcmV0dXJuIG90aGVyLnF1 ZXVlID09IHEucXVldWU7IH0pOworLSAgICBRX0FTU0VSVChpdCAhPSBtRXh0ZXJuYWxRdWV1ZXMu ZW5kKCkpOworLSAgICBtRXh0ZXJuYWxRdWV1ZXMuZXJhc2UoaXQpOworLSAgICBpZiAocS5xdWV1 ZSAhPSBudWxscHRyKQorLSAgICAgICAgd2xfZXZlbnRfcXVldWVfZGVzdHJveShxLnF1ZXVlKTsK Ky0gICAgZGVsZXRlIHEubXV0ZXg7CisrICAgIG1fZXZlbnRUaHJlYWQtPnJlYWRBbmREaXNwYXRj aEV2ZW50cygpOworIH0KKyAKKy1RV2F5bGFuZERpc3BsYXk6OkZyYW1lUXVldWUgUVdheWxhbmRE aXNwbGF5OjpjcmVhdGVGcmFtZVF1ZXVlKCkKKysvLyBXZSBoYXZlIHRvIHdhaXQgdW50aWwgd2Ug aGF2ZSBhbiBldmVudERpc3BhdGNoZXIgYmVmb3JlIGNyZWF0aW5nIHRoZSBldmVudFRocmVhZCwK KysvLyBvdGhlcndpc2UgZm9yY2VSb3VuZFRyaXAoKSBtYXkgYmxvY2sgaW5zaWRlIF9ldmVudHNf cmVhZCgpIGJlY2F1c2UgZXZlbnRUaHJlYWQgaXMKKysvLyBwb2xsaW5nLgorK3ZvaWQgUVdheWxh bmREaXNwbGF5Ojppbml0RXZlbnRUaHJlYWQoKQorIHsKKy0gICAgUVdyaXRlTG9ja2VyIGxvY2tl cigmbV9mcmFtZVF1ZXVlTG9jayk7CistICAgIEZyYW1lUXVldWUgcXtjcmVhdGVFdmVudFF1ZXVl KCl9OworLSAgICBtRXh0ZXJuYWxRdWV1ZXMuYXBwZW5kKHEpOworLSAgICByZXR1cm4gcTsKKy19 CisrICAgIG1fZXZlbnRUaHJlYWQucmVzZXQoCisrICAgICAgICAgICAgbmV3IEV2ZW50VGhyZWFk KG1EaXNwbGF5LCAvKiBkZWZhdWx0IHF1ZXVlICovIG51bGxwdHIsIEV2ZW50VGhyZWFkOjpFbWl0 VG9EaXNwYXRjaCkpOworKyAgICBjb25uZWN0KG1fZXZlbnRUaHJlYWQuZ2V0KCksICZFdmVudFRo cmVhZDo6bmVlZFJlYWRBbmREaXNwYXRjaCwgdGhpcywKKysgICAgICAgICAgICAmUVdheWxhbmRE aXNwbGF5OjpmbHVzaFJlcXVlc3RzLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisrICAgIG1fZXZl bnRUaHJlYWQtPnN0YXJ0KCk7CisgCistd2xfZXZlbnRfcXVldWUgKlFXYXlsYW5kRGlzcGxheTo6 Y3JlYXRlRXZlbnRRdWV1ZSgpCisteworLSAgICByZXR1cm4gd2xfZGlzcGxheV9jcmVhdGVfcXVl dWUobURpc3BsYXkpOworKyAgICAvLyB3bF9kaXNwbGF5X2Rpc2Nvbm5lY3QoKSBmcmVlIHRoaXMu CisrICAgIG1fZnJhbWVFdmVudFF1ZXVlID0gd2xfZGlzcGxheV9jcmVhdGVfcXVldWUobURpc3Bs YXkpOworKyAgICBtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZC5yZXNldCgKKysgICAgICAgICAgICBu ZXcgRXZlbnRUaHJlYWQobURpc3BsYXksIG1fZnJhbWVFdmVudFF1ZXVlLCBFdmVudFRocmVhZDo6 U2VsZkRpc3BhdGNoKSk7CisrICAgIG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkLT5zdGFydCgpOwor IH0KKyAKKy12b2lkIFFXYXlsYW5kRGlzcGxheTo6ZGlzcGF0Y2hRdWV1ZVdoaWxlKHdsX2V2ZW50 X3F1ZXVlICpxdWV1ZSwgc3RkOjpmdW5jdGlvbjxib29sICgpPiBjb25kaXRpb24sIGludCB0aW1l b3V0KQorK3ZvaWQgUVdheWxhbmREaXNwbGF5OjpibG9ja2luZ1JlYWRFdmVudHMoKQorIHsKKy0g ICAgaWYgKCFjb25kaXRpb24oKSkKKy0gICAgICAgIHJldHVybjsKKy0KKy0gICAgUUVsYXBzZWRU aW1lciB0aW1lcjsKKy0gICAgdGltZXIuc3RhcnQoKTsKKy0gICAgc3RydWN0IHBvbGxmZCBwRmQg PSBxdF9tYWtlX3BvbGxmZCh3bF9kaXNwbGF5X2dldF9mZChtRGlzcGxheSksIFBPTExJTik7Cist ICAgIHdoaWxlICh0aW1lb3V0ID09IC0xIHx8IHRpbWVyLmVsYXBzZWQoKSA8IHRpbWVvdXQpIHsK Ky0gICAgICAgIHdoaWxlICh3bF9kaXNwbGF5X3ByZXBhcmVfcmVhZF9xdWV1ZShtRGlzcGxheSwg cXVldWUpICE9IDApCistICAgICAgICAgICAgd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5k aW5nKG1EaXNwbGF5LCBxdWV1ZSk7CistCistICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoKG1EaXNw bGF5KTsKKy0KKy0gICAgICAgIGNvbnN0IGludCByZW1haW5pbmcgPSBxTWF4KHRpbWVvdXQgLSB0 aW1lci5lbGFwc2VkKCksIDBsbCk7CistICAgICAgICBjb25zdCBpbnQgcG9sbFRpbWVvdXQgPSB0 aW1lb3V0ID09IC0xID8gLTEgOiByZW1haW5pbmc7CistICAgICAgICBpZiAocXRfcG9sbF9tc2Vj cygmcEZkLCAxLCBwb2xsVGltZW91dCkgPiAwKQorLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfcmVh ZF9ldmVudHMobURpc3BsYXkpOworLSAgICAgICAgZWxzZQorLSAgICAgICAgICAgIHdsX2Rpc3Bs YXlfY2FuY2VsX3JlYWQobURpc3BsYXkpOworLQorLSAgICAgICAgaWYgKHdsX2Rpc3BsYXlfZGlz cGF0Y2hfcXVldWVfcGVuZGluZyhtRGlzcGxheSwgcXVldWUpIDwgMCkKKy0gICAgICAgICAgICBj aGVja0Vycm9yKCk7CistCistICAgICAgICBpZiAoIWNvbmRpdGlvbigpKQorLSAgICAgICAgICAg IGJyZWFrOworLSAgICB9CisrICAgIGlmICh3bF9kaXNwbGF5X2Rpc3BhdGNoKG1EaXNwbGF5KSA8 IDApCisrICAgICAgICBjaGVja1dheWxhbmRFcnJvcihtRGlzcGxheSk7CisgfQorIAorIFFXYXls YW5kU2NyZWVuICpRV2F5bGFuZERpc3BsYXk6OnNjcmVlbkZvck91dHB1dChzdHJ1Y3Qgd2xfb3V0 cHV0ICpvdXRwdXQpIGNvbnN0CitAQCAtMzQ1LDcgKzQ5MSw3IEBAIHZvaWQgUVdheWxhbmREaXNw bGF5OjpyZWdpc3RyeV9nbG9iYWwodWludDMyX3QgaWQsIGNvbnN0IFFTdHJpbmcgJmludGVyZmFj ZSwgdWluCisgICAgIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX291dHB1dCIp KSB7CisgICAgICAgICBtV2FpdGluZ1NjcmVlbnMgPDwgbmV3IFFXYXlsYW5kU2NyZWVuKHRoaXMs IHZlcnNpb24sIGlkKTsKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVy YWwoIndsX2NvbXBvc2l0b3IiKSkgeworLSAgICAgICAgbUNvbXBvc2l0b3JWZXJzaW9uID0gcU1p bigoaW50KXZlcnNpb24sIDMpOworKyAgICAgICAgbUNvbXBvc2l0b3JWZXJzaW9uID0gcU1pbigo aW50KXZlcnNpb24sIDQpOworICAgICAgICAgbUNvbXBvc2l0b3IuaW5pdChyZWdpc3RyeSwgaWQs IG1Db21wb3NpdG9yVmVyc2lvbik7CisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJp bmdMaXRlcmFsKCJ3bF9zaG0iKSkgeworICAgICAgICAgbVNobS5yZXNldChuZXcgUVdheWxhbmRT aG0odGhpcywgdmVyc2lvbiwgaWQpKTsKK0BAIC0zNTQsNyArNTAwLDcgQEAgdm9pZCBRV2F5bGFu ZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2JhbCh1aW50MzJfdCBpZCwgY29uc3QgUVN0cmluZyAmaW50 ZXJmYWNlLCB1aW4KKyAgICAgICAgIG1JbnB1dERldmljZXMuYXBwZW5kKGlucHV0RGV2aWNlKTsK KyAjaWYgUVRfQ09ORklHKHdheWxhbmRfZGF0YWRldmljZSkKKyAgICAgfSBlbHNlIGlmIChpbnRl cmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX2RhdGFfZGV2aWNlX21hbmFnZXIiKSkgeworLSAg ICAgICAgbURuZFNlbGVjdGlvbkhhbmRsZXIucmVzZXQobmV3IFFXYXlsYW5kRGF0YURldmljZU1h bmFnZXIodGhpcywgaWQpKTsKKysgICAgICAgIG1EbmRTZWxlY3Rpb25IYW5kbGVyLnJlc2V0KG5l dyBRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKHRoaXMsIHZlcnNpb24sIGlkKSk7CisgI2VuZGlm CisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJxdF9zdXJmYWNl X2V4dGVuc2lvbiIpKSB7CisgICAgICAgICBtV2luZG93RXh0ZW5zaW9uLnJlc2V0KG5ldyBRdFdh eWxhbmQ6OnF0X3N1cmZhY2VfZXh0ZW5zaW9uKHJlZ2lzdHJ5LCBpZCwgMSkpOworQEAgLTM2OSw2 ICs1MTUsOCBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVnaXN0cnlfZ2xvYmFsKHVpbnQzMl90 IGlkLCBjb25zdCBRU3RyaW5nICZpbnRlcmZhY2UsIHVpbgorICNpZiBRVF9DT05GSUcod2F5bGFu ZF9jbGllbnRfcHJpbWFyeV9zZWxlY3Rpb24pCisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09 IFFTdHJpbmdMaXRlcmFsKCJ6d3BfcHJpbWFyeV9zZWxlY3Rpb25fZGV2aWNlX21hbmFnZXJfdjEi KSkgeworICAgICAgICAgbVByaW1hcnlTZWxlY3Rpb25NYW5hZ2VyLnJlc2V0KG5ldyBRV2F5bGFu ZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjEodGhpcywgaWQsIDEpKTsKKysgICAgICAg IGZvciAoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpY2UgOiBxQXNDb25zdChtSW5wdXRE ZXZpY2VzKSkKKysgICAgICAgICAgICBpbnB1dERldmljZS0+c2V0UHJpbWFyeVNlbGVjdGlvbkRl dmljZShtUHJpbWFyeVNlbGVjdGlvbk1hbmFnZXItPmNyZWF0ZURldmljZShpbnB1dERldmljZSkp OworICNlbmRpZgorICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgi endwX3RleHRfaW5wdXRfbWFuYWdlcl92MiIpICYmICFtQ2xpZW50U2lkZUlucHV0Q29udGV4dFJl cXVlc3RlZCkgeworICAgICAgICAgbVRleHRJbnB1dE1hbmFnZXIucmVzZXQobmV3IFF0V2F5bGFu ZDo6endwX3RleHRfaW5wdXRfbWFuYWdlcl92MihyZWdpc3RyeSwgaWQsIDEpKTsKK0BAIC00Mjcs NiArNTc1LDEzIEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZWdpc3RyeV9nbG9iYWxfcmVtb3Zl KHVpbnQzMl90IGlkKQorICAgICAgICAgICAgICAgICAgICAgaW5wdXREZXZpY2UtPnNldFRleHRJ bnB1dChudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgbVdheWxhbmRJbnRlZ3JhdGlvbi0+cmVj b25maWd1cmVJbnB1dENvbnRleHQoKTsKKyAgICAgICAgICAgICB9CisrI2lmIFFUX0NPTkZJRyh3 YXlsYW5kX2NsaWVudF9wcmltYXJ5X3NlbGVjdGlvbikKKysgICAgICAgICAgICBpZiAoZ2xvYmFs LmludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgiendwX3ByaW1hcnlfc2VsZWN0aW9uX2Rldmlj ZV9tYW5hZ2VyX3YxIikpIHsKKysgICAgICAgICAgICAgICAgbVByaW1hcnlTZWxlY3Rpb25NYW5h Z2VyLnJlc2V0KCk7CisrICAgICAgICAgICAgICAgIGZvciAoUVdheWxhbmRJbnB1dERldmljZSAq aW5wdXREZXZpY2UgOiBxQXNDb25zdChtSW5wdXREZXZpY2VzKSkKKysgICAgICAgICAgICAgICAg ICAgIGlucHV0RGV2aWNlLT5zZXRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlKG51bGxwdHIpOworKyAg ICAgICAgICAgIH0KKysjZW5kaWYKKyAgICAgICAgICAgICBtR2xvYmFscy5yZW1vdmVBdChpKTsK KyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KK0BAIC00NTIsOSArNjA3LDEwIEBAIHZv aWQgUVdheWxhbmREaXNwbGF5OjphZGRSZWdpc3RyeUxpc3RlbmVyKFJlZ2lzdHJ5TGlzdGVuZXIg bGlzdGVuZXIsIHZvaWQgKmRhdGEpCisgCisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlbW92ZUxp c3RlbmVyKFJlZ2lzdHJ5TGlzdGVuZXIgbGlzdGVuZXIsIHZvaWQgKmRhdGEpCisgeworLSAgICBz dGQ6OnJlbW92ZV9pZihtUmVnaXN0cnlMaXN0ZW5lcnMuYmVnaW4oKSwgbVJlZ2lzdHJ5TGlzdGVu ZXJzLmVuZCgpLCBbPV0oTGlzdGVuZXIgbCl7CisrICAgIGF1dG8gaXRlciA9IHN0ZDo6cmVtb3Zl X2lmKG1SZWdpc3RyeUxpc3RlbmVycy5iZWdpbigpLCBtUmVnaXN0cnlMaXN0ZW5lcnMuZW5kKCks IFs9XShMaXN0ZW5lciBsKXsKKyAgICAgICAgIHJldHVybiAobC5saXN0ZW5lciA9PSBsaXN0ZW5l ciAmJiBsLmRhdGEgPT0gZGF0YSk7CisgICAgIH0pOworKyAgICBtUmVnaXN0cnlMaXN0ZW5lcnMu ZXJhc2UoaXRlciwgbVJlZ2lzdHJ5TGlzdGVuZXJzLmVuZCgpKTsKKyB9CisgCisgdWludDMyX3Qg UVdheWxhbmREaXNwbGF5OjpjdXJyZW50VGltZU1pbGxpc2VjKCkKK0BAIC00NjcsNTAgKzYyMyw5 IEBAIHVpbnQzMl90IFFXYXlsYW5kRGlzcGxheTo6Y3VycmVudFRpbWVNaWxsaXNlYygpCisgICAg IHJldHVybiAwOworIH0KKyAKKy1zdGF0aWMgdm9pZAorLXN5bmNfY2FsbGJhY2sodm9pZCAqZGF0 YSwgc3RydWN0IHdsX2NhbGxiYWNrICpjYWxsYmFjaywgdWludDMyX3Qgc2VyaWFsKQorLXsKKy0g ICAgUV9VTlVTRUQoc2VyaWFsKQorLSAgICBib29sICpkb25lID0gc3RhdGljX2Nhc3Q8Ym9vbCAq PihkYXRhKTsKKy0KKy0gICAgKmRvbmUgPSB0cnVlOworLQorLSAgICAvLyBJZiB0aGUgd2xfY2Fs bGJhY2sgZG9uZSBldmVudCBpcyByZWNlaXZlZCBhZnRlciB0aGUgY29uZGl0aW9uIGNoZWNrIGlu IHRoZSB3aGlsZSBsb29wIGluCistICAgIC8vIGZvcmNlUm91bmRUcmlwKCksIGJ1dCBiZWZvcmUg dGhlIGNhbGwgdG8gcHJvY2Vzc0V2ZW50cywgdGhlIGNhbGwgdG8gcHJvY2Vzc0V2ZW50cyBtYXkg YmxvY2sKKy0gICAgLy8gZm9yZXZlciBpZiBubyBtb3JlIGV2ZW50cyBhcmUgcG9zdGVkIChldmVu dGhvdWdoIHRoZSBjYWxsYmFjayBpcyBoYW5kbGVkIGluIHJlc3BvbnNlIHRvIHRoZQorLSAgICAv LyBhYm91dFRvQmxvY2sgc2lnbmFsKS4gSGVuY2UsIHdlIHdha2UgdXAgdGhlIGV2ZW50IGRpc3Bh dGNoZXIgc28gZm9yY2VSb3VuZFRyaXAgbWF5IHJldHVybi4KKy0gICAgLy8gKFFUQlVHLTY0Njk2 KQorLSAgICBpZiAoYXV0byAqZGlzcGF0Y2hlciA9IFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKS0+ ZXZlbnREaXNwYXRjaGVyKCkpCistICAgICAgICBkaXNwYXRjaGVyLT53YWtlVXAoKTsKKy0KKy0g ICAgd2xfY2FsbGJhY2tfZGVzdHJveShjYWxsYmFjayk7CistfQorLQorLXN0YXRpYyBjb25zdCBz dHJ1Y3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIgc3luY19saXN0ZW5lciA9IHsKKy0gICAgc3luY19j YWxsYmFjaworLX07CistCisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmZvcmNlUm91bmRUcmlwKCkK KyB7CistICAgIC8vIHdsX2Rpc3BsYXlfcm91bmR0cmlwKCkgd29ya3Mgb24gdGhlIG1haW4gcXVl dWUgb25seSwKKy0gICAgLy8gYnV0IHdlIHVzZSBhIHNlcGFyYXRlIG9uZSwgc28gYmFzaWNhbGx5 IHJlaW1wbGVtZW50IGl0IGhlcmUKKy0gICAgaW50IHJldCA9IDA7CistICAgIGJvb2wgZG9uZSA9 IGZhbHNlOworLSAgICB3bF9jYWxsYmFjayAqY2FsbGJhY2sgPSB3bF9kaXNwbGF5X3N5bmMobURp c3BsYXkpOworLSAgICB3bF9jYWxsYmFja19hZGRfbGlzdGVuZXIoY2FsbGJhY2ssICZzeW5jX2xp c3RlbmVyLCAmZG9uZSk7CistICAgIGZsdXNoUmVxdWVzdHMoKTsKKy0gICAgaWYgKFFUaHJlYWQ6 OmN1cnJlbnRUaHJlYWQoKS0+ZXZlbnREaXNwYXRjaGVyKCkpIHsKKy0gICAgICAgIHdoaWxlICgh ZG9uZSAmJiByZXQgPj0gMCkgeworLSAgICAgICAgICAgIFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQo KS0+ZXZlbnREaXNwYXRjaGVyKCktPnByb2Nlc3NFdmVudHMoUUV2ZW50TG9vcDo6V2FpdEZvck1v cmVFdmVudHMpOworLSAgICAgICAgICAgIHJldCA9IHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcGVuZGlu ZyhtRGlzcGxheSk7CistICAgICAgICB9CistICAgIH0gZWxzZSB7CistICAgICAgICB3aGlsZSAo IWRvbmUgJiYgcmV0ID49IDApCistICAgICAgICAgICAgcmV0ID0gd2xfZGlzcGxheV9kaXNwYXRj aChtRGlzcGxheSk7CistICAgIH0KKy0KKy0gICAgaWYgKHJldCA9PSAtMSAmJiAhZG9uZSkKKy0g ICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3koY2FsbGJhY2spOworKyAgICAgd2xfZGlzcGxheV9y b3VuZHRyaXAobURpc3BsYXkpOworIH0KKyAKKyBib29sIFFXYXlsYW5kRGlzcGxheTo6c3VwcG9y dHNXaW5kb3dEZWNvcmF0aW9uKCkgY29uc3QKK0BAIC01NzQsMTQgKzY4OSwxMCBAQCB2b2lkIFFX YXlsYW5kRGlzcGxheTo6aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRJbnB1dERl dmljZSAqaW5wdXREZXZpYworICAgICBpZiAobUxhc3RLZXlib2FyZEZvY3VzID09IGtleWJvYXJk Rm9jdXMpCisgICAgICAgICByZXR1cm47CisgCistICAgIGlmIChtV2F5bGFuZEludGVncmF0aW9u LT5tU2hlbGxJbnRlZ3JhdGlvbikgeworLSAgICAgICAgbVdheWxhbmRJbnRlZ3JhdGlvbi0+bVNo ZWxsSW50ZWdyYXRpb24tPmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKGtleWJvYXJkRm9jdXMs IG1MYXN0S2V5Ym9hcmRGb2N1cyk7CistICAgIH0gZWxzZSB7CistICAgICAgICBpZiAoa2V5Ym9h cmRGb2N1cykKKy0gICAgICAgICAgICBoYW5kbGVXaW5kb3dBY3RpdmF0ZWQoa2V5Ym9hcmRGb2N1 cyk7CistICAgICAgICBpZiAobUxhc3RLZXlib2FyZEZvY3VzKQorLSAgICAgICAgICAgIGhhbmRs ZVdpbmRvd0RlYWN0aXZhdGVkKG1MYXN0S2V5Ym9hcmRGb2N1cyk7CistICAgIH0KKysgICAgaWYg KGtleWJvYXJkRm9jdXMpCisrICAgICAgICBoYW5kbGVXaW5kb3dBY3RpdmF0ZWQoa2V5Ym9hcmRG b2N1cyk7CisrICAgIGlmIChtTGFzdEtleWJvYXJkRm9jdXMpCisrICAgICAgICBoYW5kbGVXaW5k b3dEZWFjdGl2YXRlZChtTGFzdEtleWJvYXJkRm9jdXMpOworIAorICAgICBtTGFzdEtleWJvYXJk Rm9jdXMgPSBrZXlib2FyZEZvY3VzOworIH0KK0BAIC02MDAsNiArNzExLDE5IEBAIHZvaWQgUVdh eWxhbmREaXNwbGF5OjpoYW5kbGVXYXlsYW5kU3luYygpCisgICAgIFFXaW5kb3cgKmFjdGl2ZVdp bmRvdyA9IG1BY3RpdmVXaW5kb3dzLmVtcHR5KCkgPyBudWxscHRyIDogbUFjdGl2ZVdpbmRvd3Mu bGFzdCgpLT53aW5kb3coKTsKKyAgICAgaWYgKGFjdGl2ZVdpbmRvdyAhPSBRR3VpQXBwbGljYXRp b246OmZvY3VzV2luZG93KCkpCisgICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5k bGVXaW5kb3dBY3RpdmF0ZWQoYWN0aXZlV2luZG93KTsKKysKKysgICAgaWYgKCFhY3RpdmVXaW5k b3cpIHsKKysgICAgICAgIGlmIChsYXN0SW5wdXREZXZpY2UoKSkgeworKyNpZiBRVF9DT05GSUco Y2xpcGJvYXJkKQorKyAgICAgICAgICAgIGlmIChhdXRvICpkYXRhRGV2aWNlID0gbGFzdElucHV0 RGV2aWNlKCktPmRhdGFEZXZpY2UoKSkKKysgICAgICAgICAgICAgICAgZGF0YURldmljZS0+aW52 YWxpZGF0ZVNlbGVjdGlvbk9mZmVyKCk7CisrI2VuZGlmCisrI2lmIFFUX0NPTkZJRyh3YXlsYW5k X2NsaWVudF9wcmltYXJ5X3NlbGVjdGlvbikKKysgICAgICAgICAgICBpZiAoYXV0byAqZGV2aWNl ID0gbGFzdElucHV0RGV2aWNlKCktPnByaW1hcnlTZWxlY3Rpb25EZXZpY2UoKSkKKysgICAgICAg ICAgICAgICAgZGV2aWNlLT5pbnZhbGlkYXRlU2VsZWN0aW9uT2ZmZXIoKTsKKysjZW5kaWYKKysg ICAgICAgIH0KKysgICAgfQorIH0KKyAKKyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5lciBRV2F5 bGFuZERpc3BsYXk6OnN5bmNDYWxsYmFja0xpc3RlbmVyID0geworQEAgLTYyNiw2ICs3NTAsMTMg QEAgUVdheWxhbmRJbnB1dERldmljZSAqUVdheWxhbmREaXNwbGF5OjpkZWZhdWx0SW5wdXREZXZp Y2UoKSBjb25zdAorICAgICByZXR1cm4gbUlucHV0RGV2aWNlcy5pc0VtcHR5KCkgPyAwIDogbUlu cHV0RGV2aWNlcy5maXJzdCgpOworIH0KKyAKKytib29sIFFXYXlsYW5kRGlzcGxheTo6aXNLZXli b2FyZEF2YWlsYWJsZSgpIGNvbnN0CisreworKyAgICByZXR1cm4gc3RkOjphbnlfb2YoCisrICAg ICAgICAgICAgbUlucHV0RGV2aWNlcy5jb25zdEJlZ2luKCksIG1JbnB1dERldmljZXMuY29uc3RF bmQoKSwKKysgICAgICAgICAgICBbdGhpc10oY29uc3QgUVdheWxhbmRJbnB1dERldmljZSAqZGV2 aWNlKSB7IHJldHVybiBkZXZpY2UtPmtleWJvYXJkKCkgIT0gbnVsbHB0cjsgfSk7CisrfQorKwor ICNpZiBRVF9DT05GSUcoY3Vyc29yKQorIAorIFFXYXlsYW5kQ3Vyc29yICpRV2F5bGFuZERpc3Bs YXk6OndheWxhbmRDdXJzb3IoKQorQEAgLTY1Miw0ICs3ODMsNiBAQCBRV2F5bGFuZEN1cnNvclRo ZW1lICpRV2F5bGFuZERpc3BsYXk6OmxvYWRDdXJzb3JUaGVtZShjb25zdCBRU3RyaW5nICZuYW1l LCBpbnQgcAorIAorIH0gLy8gbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudAorIAorKyNpbmNsdWRl ICJxd2F5bGFuZGRpc3BsYXkubW9jIgorKworIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXlfcC5oIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRkaXNwbGF5X3AuaAoraW5kZXggM2IwOTJiYzguLjQyYmM2NjFkIDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5X3AuaAorKysr IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5X3AuaAorQEAgLTEwOSw2ICsx MDksNyBAQCBjbGFzcyBRV2F5bGFuZFN1cmZhY2U7CisgY2xhc3MgUVdheWxhbmRTaGVsbEludGVn cmF0aW9uOworIGNsYXNzIFFXYXlsYW5kQ3Vyc29yOworIGNsYXNzIFFXYXlsYW5kQ3Vyc29yVGhl bWU7CisrY2xhc3MgRXZlbnRUaHJlYWQ7CisgCisgdHlwZWRlZiB2b2lkICgqUmVnaXN0cnlMaXN0 ZW5lcikodm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3Qgd2xfcmVnaXN0cnkgKnJlZ2lzdHJ5LAorQEAgLTEyMCwxNSArMTIxLDExIEBAIGNsYXNzIFFf V0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kRGlzcGxheSA6IHB1YmxpYyBRT2JqZWN0LCBw dWJsaWMgUXRXYXlsYW5kCisgICAgIFFfT0JKRUNUCisgCisgcHVibGljOgorLSAgICBzdHJ1Y3Qg RnJhbWVRdWV1ZSB7CistICAgICAgICBGcmFtZVF1ZXVlKHdsX2V2ZW50X3F1ZXVlICpxID0gbnVs bHB0cikgOiBxdWV1ZShxKSwgbXV0ZXgobmV3IFFNdXRleCkge30KKy0gICAgICAgIHdsX2V2ZW50 X3F1ZXVlICpxdWV1ZTsKKy0gICAgICAgIFFNdXRleCAqbXV0ZXg7CistICAgIH07CistCisgICAg IFFXYXlsYW5kRGlzcGxheShRV2F5bGFuZEludGVncmF0aW9uICp3YXlsYW5kSW50ZWdyYXRpb24p OworICAgICB+UVdheWxhbmREaXNwbGF5KHZvaWQpIG92ZXJyaWRlOworIAorKyAgICB2b2lkIGlu aXRpYWxpemUoKTsKKysKKyAjaWYgUVRfQ09ORklHKHhrYmNvbW1vbikKKyAgICAgc3RydWN0IHhr Yl9jb250ZXh0ICp4a2JDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbVhrYkNvbnRleHQuZ2V0KCk7 IH0KKyAjZW5kaWYKK0BAIC0yMTAsMTEgKzIwNywxMSBAQCBwdWJsaWM6CisgICAgIHZvaWQgaGFu ZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpY2Up OworICAgICB2b2lkIGhhbmRsZVdpbmRvd0Rlc3Ryb3llZChRV2F5bGFuZFdpbmRvdyAqd2luZG93 KTsKKyAKKy0gICAgd2xfZXZlbnRfcXVldWUgKmNyZWF0ZUV2ZW50UXVldWUoKTsKKy0gICAgRnJh bWVRdWV1ZSBjcmVhdGVGcmFtZVF1ZXVlKCk7CistICAgIHZvaWQgZGVzdHJveUZyYW1lUXVldWUo Y29uc3QgRnJhbWVRdWV1ZSAmcSk7CistICAgIHZvaWQgZGlzcGF0Y2hRdWV1ZVdoaWxlKHdsX2V2 ZW50X3F1ZXVlICpxdWV1ZSwgc3RkOjpmdW5jdGlvbjxib29sKCk+IGNvbmRpdGlvbiwgaW50IHRp bWVvdXQgPSAtMSk7CisrICAgIHdsX2V2ZW50X3F1ZXVlICpmcmFtZUV2ZW50UXVldWUoKSB7IHJl dHVybiBtX2ZyYW1lRXZlbnRRdWV1ZTsgfTsKKysKKysgICAgYm9vbCBpc0tleWJvYXJkQXZhaWxh YmxlKCkgY29uc3Q7CisgCisrICAgIHZvaWQgaW5pdEV2ZW50VGhyZWFkKCk7CisgcHVibGljIHNs b3RzOgorICAgICB2b2lkIGJsb2NraW5nUmVhZEV2ZW50cygpOworICAgICB2b2lkIGZsdXNoUmVx dWVzdHMoKTsKK0BAIC0yMzcsNiArMjM0LDkgQEAgcHJpdmF0ZToKKyAgICAgfTsKKyAKKyAgICAg c3RydWN0IHdsX2Rpc3BsYXkgKm1EaXNwbGF5ID0gbnVsbHB0cjsKKysgICAgUVNjb3BlZFBvaW50 ZXI8RXZlbnRUaHJlYWQ+IG1fZXZlbnRUaHJlYWQ7CisrICAgIHdsX2V2ZW50X3F1ZXVlICptX2Zy YW1lRXZlbnRRdWV1ZSA9IG51bGxwdHI7CisrICAgIFFTY29wZWRQb2ludGVyPEV2ZW50VGhyZWFk PiBtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZDsKKyAgICAgUXRXYXlsYW5kOjp3bF9jb21wb3NpdG9y IG1Db21wb3NpdG9yOworICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFuZFNobT4gbVNobTsKKyAg ICAgUUxpc3Q8UVdheWxhbmRTY3JlZW4gKj4gbVdhaXRpbmdTY3JlZW5zOworQEAgLTI3MywxMSAr MjczLDkgQEAgcHJpdmF0ZToKKyAgICAgUVdheWxhbmRJbnB1dERldmljZSAqbUxhc3RJbnB1dERl dmljZSA9IG51bGxwdHI7CisgICAgIFFQb2ludGVyPFFXYXlsYW5kV2luZG93PiBtTGFzdElucHV0 V2luZG93OworICAgICBRUG9pbnRlcjxRV2F5bGFuZFdpbmRvdz4gbUxhc3RLZXlib2FyZEZvY3Vz OworLSAgICBRVmVjdG9yPFFXYXlsYW5kV2luZG93ICo+IG1BY3RpdmVXaW5kb3dzOworLSAgICBR VmVjdG9yPEZyYW1lUXVldWU+IG1FeHRlcm5hbFF1ZXVlczsKKysgICAgUUxpc3Q8UVdheWxhbmRX aW5kb3cgKj4gbUFjdGl2ZVdpbmRvd3M7CisgICAgIHN0cnVjdCB3bF9jYWxsYmFjayAqbVN5bmND YWxsYmFjayA9IG51bGxwdHI7CisgICAgIHN0YXRpYyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5l ciBzeW5jQ2FsbGJhY2tMaXN0ZW5lcjsKKy0gICAgUVJlYWRXcml0ZUxvY2sgbV9mcmFtZVF1ZXVl TG9jazsKKyAKKyAgICAgYm9vbCBtQ2xpZW50U2lkZUlucHV0Q29udGV4dFJlcXVlc3RlZCA9ICFR UGxhdGZvcm1JbnB1dENvbnRleHRGYWN0b3J5OjpyZXF1ZXN0ZWQoKS5pc051bGwoKTsKKyAKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZC5jcHAgYi9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZC5jcHAKK2luZGV4IDY1MzVhYTE2Li43YzUzZjVmYSAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kLmNwcAorKysrIGIv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmQuY3BwCitAQCAtNjYsNyArNjYsNyBAQCB2 b2lkIFFXYXlsYW5kRHJhZzo6c3RhcnREcmFnKCkKKyB7CisgICAgIFFCYXNpY0RyYWc6OnN0YXJ0 RHJhZygpOworICAgICBRV2F5bGFuZFdpbmRvdyAqaWNvbiA9IHN0YXRpY19jYXN0PFFXYXlsYW5k V2luZG93ICo+KHNoYXBlZFBpeG1hcFdpbmRvdygpLT5oYW5kbGUoKSk7CistICAgIGlmIChtX2Rp c3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5kYXRhRGV2aWNlKCktPnN0YXJ0RHJhZyhkcmFn KCktPm1pbWVEYXRhKCksIGljb24pKSB7CisrICAgIGlmIChtX2Rpc3BsYXktPmN1cnJlbnRJbnB1 dERldmljZSgpLT5kYXRhRGV2aWNlKCktPnN0YXJ0RHJhZyhkcmFnKCktPm1pbWVEYXRhKCksIGRy YWcoKS0+c3VwcG9ydGVkQWN0aW9ucygpLCBpY29uKSkgeworICAgICAgICAgaWNvbi0+YWRkQXR0 YWNoT2Zmc2V0KC1kcmFnKCktPmhvdFNwb3QoKSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICAv LyBDYW5jZWxsaW5nIGltbWVkaWF0ZWx5IGRvZXMgbm90IHdvcmssIHNpbmNlIHRoZSBldmVudCBs b29wIGZvciBRRHJhZzo6ZXhlYyBpcyBzdGFydGVkCitAQCAtODAsNiArODAsOSBAQCB2b2lkIFFX YXlsYW5kRHJhZzo6Y2FuY2VsKCkKKyAgICAgUUJhc2ljRHJhZzo6Y2FuY2VsKCk7CisgCisgICAg IG1fZGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPmRhdGFEZXZpY2UoKS0+Y2FuY2VsRHJh ZygpOworKworKyAgICBpZiAoZHJhZygpKQorKyAgICAgICAgZHJhZygpLT5kZWxldGVMYXRlcigp OworIH0KKyAKKyB2b2lkIFFXYXlsYW5kRHJhZzo6bW92ZShjb25zdCBRUG9pbnQgJmdsb2JhbFBv cywgUXQ6Ok1vdXNlQnV0dG9ucyBiLCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kcykKK0BAIC0x MDMsMzMgKzEwNiw0MSBAQCB2b2lkIFFXYXlsYW5kRHJhZzo6ZW5kRHJhZygpCisgICAgIG1fZGlz cGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPmhhbmRsZUVuZERyYWcoKTsKKyB9CisgCistdm9p ZCBRV2F5bGFuZERyYWc6OnVwZGF0ZVRhcmdldChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSkKKyt2 b2lkIFFXYXlsYW5kRHJhZzo6c2V0UmVzcG9uc2UoYm9vbCBhY2NlcHRlZCkKKyB7CistICAgIHNl dENhbkRyb3AoIW1pbWVUeXBlLmlzRW1wdHkoKSk7CistCistICAgIGlmIChjYW5Ecm9wKCkpIHsK Ky0gICAgICAgIHVwZGF0ZUN1cnNvcihkZWZhdWx0QWN0aW9uKGRyYWcoKS0+c3VwcG9ydGVkQWN0 aW9ucygpLCBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5tb2RpZmllcnMoKSkpOwor LSAgICB9IGVsc2UgeworLSAgICAgICAgdXBkYXRlQ3Vyc29yKFF0OjpJZ25vcmVBY3Rpb24pOwor LSAgICB9CisrICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgZm9yIG9sZCBEYXRhRGV2aWNlcyB3 aGVyZSB0aGUgZHJhZyBhY3Rpb24gaXMgbm90IGNvbW11bmljYXRlZAorKyAgICBRdDo6RHJvcEFj dGlvbiBhY3Rpb24gPSBkZWZhdWx0QWN0aW9uKGRyYWcoKS0+c3VwcG9ydGVkQWN0aW9ucygpLCBt X2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5tb2RpZmllcnMoKSk7CisrICAgIHNldFJl c3BvbnNlKFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlKGFjY2VwdGVkLCBhY3Rpb24pKTsKKyB9Cisg Cistdm9pZCBRV2F5bGFuZERyYWc6OnNldFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJl c3BvbnNlICZyZXNwb25zZSkKKyt2b2lkIFFXYXlsYW5kRHJhZzo6c2V0UmVzcG9uc2UoY29uc3Qg UVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKQorIHsKKyAgICAgc2V0Q2FuRHJvcChy ZXNwb25zZS5pc0FjY2VwdGVkKCkpOworIAorICAgICBpZiAoY2FuRHJvcCgpKSB7CistICAgICAg ICB1cGRhdGVDdXJzb3IoZGVmYXVsdEFjdGlvbihkcmFnKCktPnN1cHBvcnRlZEFjdGlvbnMoKSwg bV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+bW9kaWZpZXJzKCkpKTsKKysgICAgICAg IHVwZGF0ZUN1cnNvcihyZXNwb25zZS5hY2NlcHRlZEFjdGlvbigpKTsKKyAgICAgfSBlbHNlIHsK KyAgICAgICAgIHVwZGF0ZUN1cnNvcihRdDo6SWdub3JlQWN0aW9uKTsKKyAgICAgfQorIH0KKyAK Ky12b2lkIFFXYXlsYW5kRHJhZzo6ZmluaXNoRHJhZyhjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNw b25zZSAmcmVzcG9uc2UpCisrdm9pZCBRV2F5bGFuZERyYWc6OnNldERyb3BSZXNwb25zZShjb25z dCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpCisgeworICAgICBzZXRFeGVjdXRl ZERyb3BBY3Rpb24ocmVzcG9uc2UuYWNjZXB0ZWRBY3Rpb24oKSk7CisrfQorKworK3ZvaWQgUVdh eWxhbmREcmFnOjpmaW5pc2hEcmFnKCkKKyt7CisgICAgIFFLZXlFdmVudCBldmVudChRRXZlbnQ6 OktleVByZXNzLCBRdDo6S2V5X0VzY2FwZSwgUXQ6Ok5vTW9kaWZpZXIpOworICAgICBldmVudEZp bHRlcihzaGFwZWRQaXhtYXBXaW5kb3coKSwgJmV2ZW50KTsKKysKKysgICAgaWYgKGRyYWcoKSkK KysgICAgICAgIGRyYWcoKS0+ZGVsZXRlTGF0ZXIoKTsKKyt9CisrCisrYm9vbCBRV2F5bGFuZERy YWc6Om93bnNEcmFnT2JqZWN0KCkgY29uc3QKKyt7CisrICAgIHJldHVybiB0cnVlOworIH0KKyAK KyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmRfcC5oIGIv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmRfcC5oCitpbmRleCA0NzRmZTJhYi4uNDZm NjI5YWMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZF9wLmgK KysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kX3AuaAorQEAgLTcxLDkgKzcx LDEwIEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmREcmFnKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxh eSk7CisgICAgIH5RV2F5bGFuZERyYWcoKSBvdmVycmlkZTsKKyAKKy0gICAgdm9pZCB1cGRhdGVU YXJnZXQoY29uc3QgUVN0cmluZyAmbWltZVR5cGUpOworLSAgICB2b2lkIHNldFJlc3BvbnNlKGNv bnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlICZyZXNwb25zZSk7CistICAgIHZvaWQgZmluaXNo RHJhZyhjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpOworKyAgICB2b2lk IHNldFJlc3BvbnNlKGJvb2wgYWNjZXB0ZWQpOworKyAgICB2b2lkIHNldFJlc3BvbnNlKGNvbnN0 IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSk7CisrICAgIHZvaWQgc2V0RHJvcFJl c3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSk7CisrICAgIHZv aWQgZmluaXNoRHJhZygpOworIAorIHByb3RlY3RlZDoKKyAgICAgdm9pZCBzdGFydERyYWcoKSBv dmVycmlkZTsKK0BAIC04Miw2ICs4Myw3IEBAIHByb3RlY3RlZDoKKyAgICAgdm9pZCBkcm9wKGNv bnN0IFFQb2ludCAmZ2xvYmFsUG9zLCBRdDo6TW91c2VCdXR0b25zIGIsIFF0OjpLZXlib2FyZE1v ZGlmaWVycyBtb2RzKSBvdmVycmlkZTsKKyAgICAgdm9pZCBlbmREcmFnKCkgb3ZlcnJpZGU7Cisg CisrICAgIGJvb2wgb3duc0RyYWdPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKKyAKKyBwcml2YXRl OgorICAgICBRV2F5bGFuZERpc3BsYXkgKm1fZGlzcGxheSA9IG51bGxwdHI7CitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAgYi9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGlucHV0ZGV2aWNlLmNwcAoraW5kZXggNjEzZmU4NjIuLjRi OTBkZTg0IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnB1dGRl dmljZS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5wdXRkZXZpY2Uu Y3BwCitAQCAtNjg1LDYgKzY4NSwxMSBAQCBwdWJsaWM6CisgCisgdm9pZCBRV2F5bGFuZElucHV0 RGV2aWNlOjpQb2ludGVyOjpwb2ludGVyX2xlYXZlKHVpbnQzMl90IHRpbWUsIHN0cnVjdCB3bF9z dXJmYWNlICpzdXJmYWNlKQorIHsKKysgICAgaW52YWxpZGF0ZUZvY3VzKCk7CisrICAgIG1CdXR0 b25zID0gUXQ6Ok5vQnV0dG9uOworKworKyAgICBtUGFyZW50LT5tVGltZSA9IHRpbWU7CisrCisg ICAgIC8vIFRoZSBldmVudCBtYXkgYXJyaXZlIGFmdGVyIGRlc3Ryb3lpbmcgdGhlIHdpbmRvdywg aW5kaWNhdGVkIGJ5CisgICAgIC8vIGEgbnVsbCBzdXJmYWNlLgorICAgICBpZiAoIXN1cmZhY2Up CitAQCAtNjk2LDExICs3MDEsNiBAQCB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OlBvaW50ZXI6 OnBvaW50ZXJfbGVhdmUodWludDMyX3QgdGltZSwgc3RydWN0IHdsX3N1cmZhYworIAorICAgICBp ZiAoIVFXYXlsYW5kV2luZG93Ojptb3VzZUdyYWIoKSkKKyAgICAgICAgIHNldEZyYW1lRXZlbnQo bmV3IExlYXZlRXZlbnQod2luZG93LCBtU3VyZmFjZVBvcywgbUdsb2JhbFBvcykpOworLQorLSAg ICBpbnZhbGlkYXRlRm9jdXMoKTsKKy0gICAgbUJ1dHRvbnMgPSBRdDo6Tm9CdXR0b247CistCist ICAgIG1QYXJlbnQtPm1UaW1lID0gdGltZTsKKyB9CisgCisgY2xhc3MgTW90aW9uRXZlbnQgOiBw dWJsaWMgUVdheWxhbmRQb2ludGVyRXZlbnQKK0BAIC0xMzAwLDE0ICsxMzAwLDYgQEAgdm9pZCBR V2F5bGFuZElucHV0RGV2aWNlOjpLZXlib2FyZDo6aGFuZGxlRm9jdXNEZXN0cm95ZWQoKQorIHZv aWQgUVdheWxhbmRJbnB1dERldmljZTo6S2V5Ym9hcmQ6OmhhbmRsZUZvY3VzTG9zdCgpCisgewor ICAgICBtRm9jdXMgPSBudWxscHRyOworLSNpZiBRVF9DT05GSUcoY2xpcGJvYXJkKQorLSAgICBp ZiAoYXV0byAqZGF0YURldmljZSA9IG1QYXJlbnQtPmRhdGFEZXZpY2UoKSkKKy0gICAgICAgIGRh dGFEZXZpY2UtPmludmFsaWRhdGVTZWxlY3Rpb25PZmZlcigpOworLSNlbmRpZgorLSNpZiBRVF9D T05GSUcod2F5bGFuZF9jbGllbnRfcHJpbWFyeV9zZWxlY3Rpb24pCistICAgIGlmIChhdXRvICpk ZXZpY2UgPSBtUGFyZW50LT5wcmltYXJ5U2VsZWN0aW9uRGV2aWNlKCkpCistICAgICAgICBkZXZp Y2UtPmludmFsaWRhdGVTZWxlY3Rpb25PZmZlcigpOworLSNlbmRpZgorICAgICBtUGFyZW50LT5t UURpc3BsYXktPmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKG1QYXJlbnQpOworICAgICBtUmVw ZWF0VGltZXIuc3RvcCgpOworIH0KK0BAIC0xMzk2LDYgKzEzODgsNyBAQCB2b2lkIFFXYXlsYW5k SW5wdXREZXZpY2U6OlRvdWNoOjp0b3VjaF9jYW5jZWwoKQorICAgICBpZiAodG91Y2hFeHQpCisg ICAgICAgICB0b3VjaEV4dC0+dG91Y2hDYW5jZWxlZCgpOworIAorKyAgICBtRm9jdXMgPSBudWxs cHRyOworICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVUb3VjaENhbmNlbEV2ZW50 KG51bGxwdHIsIG1QYXJlbnQtPm1Ub3VjaERldmljZSk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbi5jcHAKK2luZGV4IGM1M2NjYjc4Li41NDg2MTYw MCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb24u Y3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uLmNwcAor QEAgLTEyNSw2ICsxMjUsOSBAQCBRV2F5bGFuZEludGVncmF0aW9uOjpRV2F5bGFuZEludGVncmF0 aW9uKCkKKyAjZW5kaWYKKyAKKyAgICAgcmVjb25maWd1cmVJbnB1dENvbnRleHQoKTsKKysKKysg ICAgUVdheWxhbmRXaW5kb3c6OmZpeGVkVG9wbGV2ZWxQb3NpdGlvbnMgPQorKyAgICAgICAgICAg ICFxRW52aXJvbm1lbnRWYXJpYWJsZUlzU2V0KCJRVF9XQVlMQU5EX0RJU0FCTEVfRklYRURfUE9T SVRJT05TIik7CisgfQorIAorIFFXYXlsYW5kSW50ZWdyYXRpb246On5RV2F5bGFuZEludGVncmF0 aW9uKCkKK0BAIC0xOTIsMTQgKzE5NSwxOCBAQCBRQWJzdHJhY3RFdmVudERpc3BhdGNoZXIgKlFX YXlsYW5kSW50ZWdyYXRpb246OmNyZWF0ZUV2ZW50RGlzcGF0Y2hlcigpIGNvbnN0CisgCisgdm9p ZCBRV2F5bGFuZEludGVncmF0aW9uOjppbml0aWFsaXplKCkKKyB7CisrICAgIG1EaXNwbGF5LT5p bml0RXZlbnRUaHJlYWQoKTsKKysKKysgICAgLy8gQ2FsbCBhZnRlciBldmVudERpc3BhdGNoZXIg aXMgZnVsbHkgY29ubmVjdGVkLCBmb3IgUVdheWxhbmREaXNwbGF5Ojpmb3JjZVJvdW5kVHJpcCgp CisrICAgIG1EaXNwbGF5LT5pbml0aWFsaXplKCk7CisrCisrICAgIC8vIEJ1dCB0aGUgYWJvdXRU b0Jsb2NrKCkgYW5kIGF3YWtlKCkgc2hvdWxkIGJlIGNvbm5lY3RlZCBhZnRlciBpbml0aWFsaXpl UGxhdGZvcm0oKS4KKysgICAgLy8gT3RoZXJ3aXNlIHRoZSBjb25uZWN0ZWQgZmx1c2hSZXF1ZXN0 cygpIG1heSBjb25zdW1lcyB1cCBhbGwgZXZlbnRzIGJlZm9yZSBwcm9jZXNzRXZlbnRzIHN0YXJ0 cyB0byB3YWl0LAorKyAgICAvLyBzbyB0aGF0IHByb2Nlc3NFdmVudHMoUUV2ZW50TG9vcDo6V2Fp dEZvck1vcmVFdmVudHMpIG1heSBiZSBibG9ja2VkIGluIHRoZSBmb3JjZVJvdW5kVHJpcCgpLgor ICAgICBRQWJzdHJhY3RFdmVudERpc3BhdGNoZXIgKmRpc3BhdGNoZXIgPSBRR3VpQXBwbGljYXRp b25Qcml2YXRlOjpldmVudERpc3BhdGNoZXI7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QoZGlzcGF0 Y2hlciwgU0lHTkFMKGFib3V0VG9CbG9jaygpKSwgbURpc3BsYXkuZGF0YSgpLCBTTE9UKGZsdXNo UmVxdWVzdHMoKSkpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KGRpc3BhdGNoZXIsIFNJR05BTChh d2FrZSgpKSwgbURpc3BsYXkuZGF0YSgpLCBTTE9UKGZsdXNoUmVxdWVzdHMoKSkpOworIAorLSAg ICBpbnQgZmQgPSB3bF9kaXNwbGF5X2dldF9mZChtRGlzcGxheS0+d2xfZGlzcGxheSgpKTsKKy0g ICAgUVNvY2tldE5vdGlmaWVyICpzbiA9IG5ldyBRU29ja2V0Tm90aWZpZXIoZmQsIFFTb2NrZXRO b3RpZmllcjo6UmVhZCwgbURpc3BsYXkuZGF0YSgpKTsKKy0gICAgUU9iamVjdDo6Y29ubmVjdChz biwgU0lHTkFMKGFjdGl2YXRlZChRU29ja2V0RGVzY3JpcHRvcikpLCBtRGlzcGxheS5kYXRhKCks IFNMT1QoZmx1c2hSZXF1ZXN0cygpKSk7CistCisgICAgIC8vIFF0IGRvZXMgbm90IHN1cHBvcnQg cnVubmluZyB3aXRoIG5vIHNjcmVlbnMKKyAgICAgbURpc3BsYXktPmVuc3VyZVNjcmVlbigpOwor IH0KK0BAIC0yNjIsNiArMjY5LDE0IEBAIFFXYXlsYW5kRGlzcGxheSAqUVdheWxhbmRJbnRlZ3Jh dGlvbjo6ZGlzcGxheSgpIGNvbnN0CisgICAgIHJldHVybiBtRGlzcGxheS5kYXRhKCk7CisgfQor IAorK1F0OjpLZXlib2FyZE1vZGlmaWVycyBRV2F5bGFuZEludGVncmF0aW9uOjpxdWVyeUtleWJv YXJkTW9kaWZpZXJzKCkgY29uc3QKKyt7CisrICAgIGlmIChhdXRvICpzZWF0ID0gbURpc3BsYXkt PmN1cnJlbnRJbnB1dERldmljZSgpKSB7CisrICAgICAgICByZXR1cm4gc2VhdC0+bW9kaWZpZXJz KCk7CisrICAgIH0KKysgICAgcmV0dXJuIFF0OjpOb01vZGlmaWVyOworK30KKysKKyBRTGlzdDxp bnQ+IFFXYXlsYW5kSW50ZWdyYXRpb246OnBvc3NpYmxlS2V5cyhjb25zdCBRS2V5RXZlbnQgKmV2 ZW50KSBjb25zdAorIHsKKyAgICAgaWYgKGF1dG8gKnNlYXQgPSBtRGlzcGxheS0+Y3VycmVudElu cHV0RGV2aWNlKCkpCitAQCAtNDc5LDcgKzQ5NCw3IEBAIHZvaWQgUVdheWxhbmRJbnRlZ3JhdGlv bjo6cmVjb25maWd1cmVJbnB1dENvbnRleHQoKQorICAgICB9CisgI2VuZGlmCisgCistICAgIHFD RGVidWcobGNRcGFXYXlsYW5kKSA8PCAidXNpbmcgaW5wdXQgbWV0aG9kOiIgPDwgaW5wdXRDb250 ZXh0KCktPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCk7CisrICAgIHFDRGVidWcobGNRcGFXYXls YW5kKSA8PCAidXNpbmcgaW5wdXQgbWV0aG9kOiIgPDwgKGlucHV0Q29udGV4dCgpID8gaW5wdXRD b250ZXh0KCktPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkgOiAiPG5vbmU+Iik7CisgfQorIAor IFFXYXlsYW5kU2hlbGxJbnRlZ3JhdGlvbiAqUVdheWxhbmRJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hl bGxJbnRlZ3JhdGlvbihjb25zdCBRU3RyaW5nICZpbnRlZ3JhdGlvbk5hbWUpCitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uX3AuaAoraW5kZXggZmY3MGFlMjUuLjcz YjgwNjU4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3Jh dGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb25f cC5oCitAQCAtMTA3LDYgKzEwNyw4IEBAIHB1YmxpYzoKKyAKKyAgICAgUVdheWxhbmREaXNwbGF5 ICpkaXNwbGF5KCkgY29uc3Q7CisgCisrICAgIFF0OjpLZXlib2FyZE1vZGlmaWVycyBxdWVyeUtl eWJvYXJkTW9kaWZpZXJzKCkgY29uc3Qgb3ZlcnJpZGU7CisrCisgICAgIFFMaXN0PGludD4gcG9z c2libGVLZXlzKGNvbnN0IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0IG92ZXJyaWRlOworIAorICAg ICBRU3RyaW5nTGlzdCB0aGVtZU5hbWVzKCkgY29uc3Qgb3ZlcnJpZGU7CitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRwcmltYXJ5c2VsZWN0aW9udjEuY3BwIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRwcmltYXJ5c2VsZWN0aW9udjEuY3BwCitpbmRleCA4 MzJmOTY3OC4uZWE1MDg3NzEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZHByaW1hcnlzZWxlY3Rpb252MS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYxLmNwcAorQEAgLTU0LDExICs1NCw2IEBAIFFXYXlsYW5k UHJpbWFyeVNlbGVjdGlvbkRldmljZU1hbmFnZXJWMTo6UVdheWxhbmRQcmltYXJ5U2VsZWN0aW9u RGV2aWNlTWFuYWdlclYxCisgICAgIDogendwX3ByaW1hcnlfc2VsZWN0aW9uX2RldmljZV9tYW5h Z2VyX3YxKGRpc3BsYXktPndsX3JlZ2lzdHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIHVpbnQoMSkp KQorICAgICAsIG1fZGlzcGxheShkaXNwbGF5KQorIHsKKy0gICAgLy8gQ3JlYXRlIGRldmljZXMg Zm9yIGFsbCBzZWF0cy4KKy0gICAgLy8gVGhpcyBvbmx5IHdvcmtzIGlmIHdlIGdldCB0aGUgZ2xv YmFsIGJlZm9yZSBhbGwgZGV2aWNlcworLSAgICBjb25zdCBhdXRvIHNlYXRzID0gbV9kaXNwbGF5 LT5pbnB1dERldmljZXMoKTsKKy0gICAgZm9yIChhdXRvICpzZWF0IDogc2VhdHMpCistICAgICAg ICBzZWF0LT5zZXRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlKGNyZWF0ZURldmljZShzZWF0KSk7Cisg fQorIAorIFFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmljZVYxICpRV2F5bGFuZFByaW1hcnlT ZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjE6OmNyZWF0ZURldmljZShRV2F5bGFuZElucHV0RGV2aWNl ICpzZWF0KQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVu LmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuLmNwcAoraW5kZXggNmNi MzM3ZGUuLjU1MzdkYWZkIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRzY3JlZW4uY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbi5j cHAKK0BAIC02MCw3ICs2MCw3IEBAIFFXYXlsYW5kWGRnT3V0cHV0TWFuYWdlclYxOjpRV2F5bGFu ZFhkZ091dHB1dE1hbmFnZXJWMShRV2F5bGFuZERpc3BsYXkqIGRpc3BsYXksCisgfQorIAorIFFX YXlsYW5kU2NyZWVuOjpRV2F5bGFuZFNjcmVlbihRV2F5bGFuZERpc3BsYXkgKndheWxhbmREaXNw bGF5LCBpbnQgdmVyc2lvbiwgdWludDMyX3QgaWQpCistICAgIDogUXRXYXlsYW5kOjp3bF9vdXRw dXQod2F5bGFuZERpc3BsYXktPndsX3JlZ2lzdHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIDIpKQor KyAgICA6IFF0V2F5bGFuZDo6d2xfb3V0cHV0KHdheWxhbmREaXNwbGF5LT53bF9yZWdpc3RyeSgp LCBpZCwgcU1pbih2ZXJzaW9uLCAzKSkKKyAgICAgLCBtX291dHB1dElkKGlkKQorICAgICAsIG1X YXlsYW5kRGlzcGxheSh3YXlsYW5kRGlzcGxheSkKKyAgICAgLCBtT3V0cHV0TmFtZShRU3RyaW5n TGl0ZXJhbCgiU2NyZWVuJTEiKS5hcmcoaWQpKQorQEAgLTcyLDcgKzcyLDcgQEAgUVdheWxhbmRT Y3JlZW46OlFXYXlsYW5kU2NyZWVuKFFXYXlsYW5kRGlzcGxheSAqd2F5bGFuZERpc3BsYXksIGlu dCB2ZXJzaW9uLCB1aW4KKyAgICAgICAgIHFDV2FybmluZyhsY1FwYVdheWxhbmQpIDw8ICJ3bF9v dXRwdXQgZG9uZSBldmVudCBub3Qgc3VwcG9ydGVkIGJ5IGNvbXBvc2l0b3IsIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlFTY3JlZW4gbWF5IG5vdCB3b3JrIGNvcnJlY3Rs eSI7CisgICAgICAgICBtV2F5bGFuZERpc3BsYXktPmZvcmNlUm91bmRUcmlwKCk7IC8vIEdpdmUg dGhlIGNvbXBvc2l0b3IgYSBjaGFuY2UgdG8gc2VuZCBnZW9tZXRyeSBldGMuCistICAgICAgICBt T3V0cHV0RG9uZSA9IHRydWU7IC8vIEZha2UgdGhlIGRvbmUgZXZlbnQKKysgICAgICAgIG1Qcm9j ZXNzZWRFdmVudHMgfD0gT3V0cHV0RG9uZUV2ZW50OyAvLyBGYWtlIHRoZSBkb25lIGV2ZW50Cisg ICAgICAgICBtYXliZUluaXRpYWxpemUoKTsKKyAgICAgfQorIH0KK0BAIC04MSwxNiArODEsMjkg QEAgUVdheWxhbmRTY3JlZW46On5RV2F5bGFuZFNjcmVlbigpCisgeworICAgICBpZiAoenhkZ19v dXRwdXRfdjE6OmlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgIHp4ZGdfb3V0cHV0X3YxOjpkZXN0 cm95KCk7CisrICAgIGlmICh3bF9vdXRwdXQ6OmlzSW5pdGlhbGl6ZWQoKSAmJiB3bF9vdXRwdXRf Z2V0X3ZlcnNpb24od2xfb3V0cHV0OjpvYmplY3QoKSkgPj0gV0xfT1VUUFVUX1JFTEVBU0VfU0lO Q0VfVkVSU0lPTikKKysgICAgICAgIHdsX291dHB1dDo6cmVsZWFzZSgpOworK30KKysKKyt1aW50 IFFXYXlsYW5kU2NyZWVuOjpyZXF1aXJlZEV2ZW50cygpIGNvbnN0CisreworKyAgICB1aW50IHJl dCA9IE91dHB1dERvbmVFdmVudDsKKysKKysgICAgaWYgKG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0 cHV0TWFuYWdlcigpKSB7CisrICAgICAgICByZXQgfD0gWGRnT3V0cHV0TmFtZUV2ZW50OworKwor KyAgICAgICAgaWYgKG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigpLT52ZXJzaW9u KCkgPCAzKQorKyAgICAgICAgICAgIHJldCB8PSBYZGdPdXRwdXREb25lRXZlbnQ7CisrICAgIH0K KysgICAgcmV0dXJuIHJldDsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6bWF5YmVJbml0 aWFsaXplKCkKKyB7CisgICAgIFFfQVNTRVJUKCFtSW5pdGlhbGl6ZWQpOworIAorLSAgICBpZiAo IW1PdXRwdXREb25lKQorLSAgICAgICAgcmV0dXJuOworLQorLSAgICBpZiAobVdheWxhbmREaXNw bGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCkgJiYgIW1YZGdPdXRwdXREb25lKQorKyAgICBjb25zdCB1 aW50IHJlcXVpcmVkRXZlbnRzID0gdGhpcy0+cmVxdWlyZWRFdmVudHMoKTsKKysgICAgaWYgKCht UHJvY2Vzc2VkRXZlbnRzICYgcmVxdWlyZWRFdmVudHMpICE9IHJlcXVpcmVkRXZlbnRzKQorICAg ICAgICAgcmV0dXJuOworIAorICAgICBtSW5pdGlhbGl6ZWQgPSB0cnVlOworQEAgLTI3Niw5ICsy ODksOCBAQCB2b2lkIFFXYXlsYW5kU2NyZWVuOjpvdXRwdXRfc2NhbGUoaW50MzJfdCBmYWN0b3Ip CisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6b3V0cHV0X2RvbmUoKQorIHsKKy0gICAgbU91dHB1 dERvbmUgPSB0cnVlOworLSAgICBpZiAoenhkZ19vdXRwdXRfdjE6OmlzSW5pdGlhbGl6ZWQoKSAm JiBtV2F5bGFuZERpc3BsYXktPnhkZ091dHB1dE1hbmFnZXIoKS0+dmVyc2lvbigpID49IDMpCist ICAgICAgICBtWGRnT3V0cHV0RG9uZSA9IHRydWU7CisrICAgIG1Qcm9jZXNzZWRFdmVudHMgfD0g T3V0cHV0RG9uZUV2ZW50OworKworICAgICBpZiAobUluaXRpYWxpemVkKSB7CisgICAgICAgICB1 cGRhdGVPdXRwdXRQcm9wZXJ0aWVzKCk7CisgICAgICAgICBpZiAoenhkZ19vdXRwdXRfdjE6Omlz SW5pdGlhbGl6ZWQoKSkKK0BAIC0zMzksNyArMzUxLDcgQEAgdm9pZCBRV2F5bGFuZFNjcmVlbjo6 enhkZ19vdXRwdXRfdjFfZG9uZSgpCisgICAgIGlmIChRX1VOTElLRUxZKG1XYXlsYW5kRGlzcGxh eS0+eGRnT3V0cHV0TWFuYWdlcigpLT52ZXJzaW9uKCkgPj0gMykpCisgICAgICAgICBxV2Fybmlu ZyhsY1FwYVdheWxhbmQpIDw8ICJ6eGRnX291dHB1dF92MS5kb25lIHJlY2VpdmVkIG9uIHZlcnNp b24gMyBvciBuZXdlciwgdGhpcyBpcyBtb3N0IGxpa2VseSBhIGJ1ZyBpbiB0aGUgY29tcG9zaXRv ciI7CisgCistICAgIG1YZGdPdXRwdXREb25lID0gdHJ1ZTsKKysgICAgbVByb2Nlc3NlZEV2ZW50 cyB8PSBYZGdPdXRwdXREb25lRXZlbnQ7CisgICAgIGlmIChtSW5pdGlhbGl6ZWQpCisgICAgICAg ICB1cGRhdGVYZGdPdXRwdXRQcm9wZXJ0aWVzKCk7CisgICAgIGVsc2UKK0BAIC0zNDgsNyArMzYw LDExIEBAIHZvaWQgUVdheWxhbmRTY3JlZW46Onp4ZGdfb3V0cHV0X3YxX2RvbmUoKQorIAorIHZv aWQgUVdheWxhbmRTY3JlZW46Onp4ZGdfb3V0cHV0X3YxX25hbWUoY29uc3QgUVN0cmluZyAmbmFt ZSkKKyB7CisrICAgIGlmIChRX1VOTElLRUxZKG1Jbml0aWFsaXplZCkpCisrICAgICAgICBxV2Fy bmluZyhsY1FwYVdheWxhbmQpIDw8ICJ6eGRnX291dHB1dF92MS5uYW1lIHJlY2VpdmVkIGFmdGVy IG91dHB1dCBoYXMgYmVlbiBpbml0aWFsaXplZCwgdGhpcyBpcyBtb3N0IGxpa2VseSBhIGJ1ZyBp biB0aGUgY29tcG9zaXRvciI7CisrCisgICAgIG1PdXRwdXROYW1lID0gbmFtZTsKKysgICAgbVBy b2Nlc3NlZEV2ZW50cyB8PSBYZGdPdXRwdXROYW1lRXZlbnQ7CisgfQorIAorIHZvaWQgUVdheWxh bmRTY3JlZW46OnVwZGF0ZVhkZ091dHB1dFByb3BlcnRpZXMoKQorZGlmZiAtLWdpdCBhL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kc2NyZWVuX3AuaAoraW5kZXggZGYxYzk0ZjIuLjA1MGNmZGMwIDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW5fcC5oCisrKysgYi9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbl9wLmgKK0BAIC0xMTYsNiArMTE2LDEzIEBAIHB1 YmxpYzoKKyAgICAgc3RhdGljIFFXYXlsYW5kU2NyZWVuICpmcm9tV2xPdXRwdXQoOjp3bF9vdXRw dXQgKm91dHB1dCk7CisgCisgcHJpdmF0ZToKKysgICAgZW51bSBFdmVudCA6IHVpbnQgeworKyAg ICAgICAgWGRnT3V0cHV0RG9uZUV2ZW50ID0gMHgxLAorKyAgICAgICAgT3V0cHV0RG9uZUV2ZW50 ID0gMHgyLAorKyAgICAgICAgWGRnT3V0cHV0TmFtZUV2ZW50ID0gMHg0LAorKyAgICB9OworKyAg ICB1aW50IHJlcXVpcmVkRXZlbnRzKCkgY29uc3Q7CisrCisgICAgIHZvaWQgb3V0cHV0X21vZGUo dWludDMyX3QgZmxhZ3MsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHJlZnJlc2gpIG92ZXJy aWRlOworICAgICB2b2lkIG91dHB1dF9nZW9tZXRyeShpbnQzMl90IHgsIGludDMyX3QgeSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsCitA QCAtMTQ4LDggKzE1NSw3IEBAIHByaXZhdGU6CisgICAgIFFTaXplIG1QaHlzaWNhbFNpemU7Cisg ICAgIFFTdHJpbmcgbU91dHB1dE5hbWU7CisgICAgIFF0OjpTY3JlZW5PcmllbnRhdGlvbiBtX29y aWVudGF0aW9uID0gUXQ6OlByaW1hcnlPcmllbnRhdGlvbjsKKy0gICAgYm9vbCBtT3V0cHV0RG9u ZSA9IGZhbHNlOworLSAgICBib29sIG1YZGdPdXRwdXREb25lID0gZmFsc2U7CisrICAgIHVpbnQg bVByb2Nlc3NlZEV2ZW50cyA9IDA7CisgICAgIGJvb2wgbUluaXRpYWxpemVkID0gZmFsc2U7Cisg CisgI2lmIFFUX0NPTkZJRyhjdXJzb3IpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRzaG1iYWNraW5nc3RvcmUuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRzaG1iYWNraW5nc3RvcmUuY3BwCitpbmRleCBkYzdmZjY3MC4uNDFjZmZkZjcgMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAK KysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2htYmFja2luZ3N0b3JlLmNwcAor QEAgLTUyLDYgKzUyLDcgQEAKKyAKKyAjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUv d2F5bGFuZC13YXlsYW5kLWNsaWVudC1wcm90b2NvbC5oPgorIAorKyNpbmNsdWRlIDxmY250bC5o PgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyAKK0BAIC02 MSw2ICs2Miw5IEBACisgIyAgaWZuZGVmIE1GRF9DTE9FWEVDCisgIyAgICBkZWZpbmUgTUZEX0NM T0VYRUMgICAgIDB4MDAwMVUKKyAjICBlbmRpZgorKyMgIGlmbmRlZiBNRkRfQUxMT1dfU0VBTElO RworKyMgICAgZGVmaW5lIE1GRF9BTExPV19TRUFMSU5HIDB4MDAwMlUKKysjICBlbmRpZgorICNl bmRpZgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorQEAgLTc0LDggKzc4LDEwIEBAIFFXYXlsYW5k U2htQnVmZmVyOjpRV2F5bGFuZFNobUJ1ZmZlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksCisg ICAgIGludCBhbGxvYyA9IHN0cmlkZSAqIHNpemUuaGVpZ2h0KCk7CisgICAgIGludCBmZCA9IC0x OworIAorLSNpZmRlZiBTWVNfbWVtZmRfY3JlYXRlCistICAgIGZkID0gc3lzY2FsbChTWVNfbWVt ZmRfY3JlYXRlLCAid2F5bGFuZC1zaG0iLCBNRkRfQ0xPRVhFQyk7CisrI2lmIGRlZmluZWQoU1lT X21lbWZkX2NyZWF0ZSkgJiYgZGVmaW5lZChGX1NFQUxfU0VBTCkKKysgICAgZmQgPSBzeXNjYWxs KFNZU19tZW1mZF9jcmVhdGUsICJ3YXlsYW5kLXNobSIsIE1GRF9DTE9FWEVDIHwgTUZEX0FMTE9X X1NFQUxJTkcpOworKyAgICBpZiAoZmQgPj0gMCkKKysgICAgICAgIGZjbnRsKGZkLCBGX0FERF9T RUFMUywgRl9TRUFMX1NIUklOSyB8IEZfU0VBTF9TRUFMKTsKKyAjZW5kaWYKKyAKKyAgICAgUVNj b3BlZFBvaW50ZXI8UUZpbGU+IGZpbGVQb2ludGVyOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kd2luZG93LmNwcAoraW5kZXggY2I4Mjg1N2EuLmZiMmM1OWRjIDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3cuY3BwCisrKysgYi9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZHdpbmRvdy5jcHAKK0BAIC03Niw3ICs3Niw2IEBAIFFXYXlsYW5kV2lu ZG93ICpRV2F5bGFuZFdpbmRvdzo6bU1vdXNlR3JhYiA9IG51bGxwdHI7CisgUVdheWxhbmRXaW5k b3c6OlFXYXlsYW5kV2luZG93KFFXaW5kb3cgKndpbmRvdywgUVdheWxhbmREaXNwbGF5ICpkaXNw bGF5KQorICAgICA6IFFQbGF0Zm9ybVdpbmRvdyh3aW5kb3cpCisgICAgICwgbURpc3BsYXkoZGlz cGxheSkKKy0gICAgLCBtRnJhbWVRdWV1ZShtRGlzcGxheS0+Y3JlYXRlRnJhbWVRdWV1ZSgpKQor ICAgICAsIG1SZXNpemVBZnRlclN3YXAocUVudmlyb25tZW50VmFyaWFibGVJc1NldCgiUVRfV0FZ TEFORF9SRVNJWkVfQUZURVJfU1dBUCIpKQorIHsKKyAgICAgeworQEAgLTk1LDkgKzk0LDYgQEAg UVdheWxhbmRXaW5kb3c6OlFXYXlsYW5kV2luZG93KFFXaW5kb3cgKndpbmRvdywgUVdheWxhbmRE aXNwbGF5ICpkaXNwbGF5KQorIAorIFFXYXlsYW5kV2luZG93Ojp+UVdheWxhbmRXaW5kb3coKQor IHsKKy0gICAgbURpc3BsYXktPmRlc3Ryb3lGcmFtZVF1ZXVlKG1GcmFtZVF1ZXVlKTsKKy0gICAg bURpc3BsYXktPmhhbmRsZVdpbmRvd0Rlc3Ryb3llZCh0aGlzKTsKKy0KKyAgICAgZGVsZXRlIG1X aW5kb3dEZWNvcmF0aW9uOworIAorICAgICBpZiAobVN1cmZhY2UpCitAQCAtMjQzLDYgKzIzOSw3 IEBAIGJvb2wgUVdheWxhbmRXaW5kb3c6OnNob3VsZENyZWF0ZVN1YlN1cmZhY2UoKSBjb25zdAor IAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlc2V0KCkKKyB7CisrICAgIGNsb3NlQ2hpbGRQb3B1 cHMoKTsKKyAgICAgZGVsZXRlIG1TaGVsbFN1cmZhY2U7CisgICAgIG1TaGVsbFN1cmZhY2UgPSBu dWxscHRyOworICAgICBkZWxldGUgbVN1YlN1cmZhY2VXaW5kb3c7CitAQCAtMjU1LDE3ICsyNTIs MjIgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVzZXQoKQorICAgICAgICAgbVN1cmZhY2UucmVz ZXQoKTsKKyAgICAgfQorIAorLSAgICBpZiAobUZyYW1lQ2FsbGJhY2spIHsKKy0gICAgICAgIHds X2NhbGxiYWNrX2Rlc3Ryb3kobUZyYW1lQ2FsbGJhY2spOworLSAgICAgICAgbUZyYW1lQ2FsbGJh Y2sgPSBudWxscHRyOworLSAgICB9CisrICAgIHsKKysgICAgICAgIFFNdXRleExvY2tlciBsb2Nr KCZtRnJhbWVTeW5jTXV0ZXgpOworKyAgICAgICAgaWYgKG1GcmFtZUNhbGxiYWNrKSB7CisrICAg ICAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShtRnJhbWVDYWxsYmFjayk7CisrICAgICAgICAg ICAgbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOworKyAgICAgICAgfQorIAorLSAgICBtRnJhbWVD YWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CistICAgIG1XYWl0aW5nRm9yRnJhbWVD YWxsYmFjayA9IGZhbHNlOworKyAgICAgICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52 YWxpZGF0ZSgpOworKyAgICAgICAgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7Cisr ICAgIH0KKyAgICAgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9IGZhbHNlOworIAorICAgICBtTWFz ayA9IFFSZWdpb24oKTsKKyAgICAgbVF1ZXVlZEJ1ZmZlciA9IG51bGxwdHI7CisrCisrICAgIG1E aXNwbGF5LT5oYW5kbGVXaW5kb3dEZXN0cm95ZWQodGhpcyk7CisgfQorIAorIFFXYXlsYW5kV2lu ZG93ICpRV2F5bGFuZFdpbmRvdzo6ZnJvbVdsU3VyZmFjZSg6OndsX3N1cmZhY2UgKnN1cmZhY2Up CitAQCAtMzUxLDE5ICszNTMsMjUgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnlf aGVscGVyKGNvbnN0IFFSZWN0ICZyZWN0KQorICAgICB9CisgfQorIAorLXZvaWQgUVdheWxhbmRX aW5kb3c6OnNldEdlb21ldHJ5KGNvbnN0IFFSZWN0ICZyZWN0KQorK3ZvaWQgUVdheWxhbmRXaW5k b3c6OnNldEdlb21ldHJ5KGNvbnN0IFFSZWN0ICZyKQorIHsKKysgICAgYXV0byByZWN0ID0gcjsK KysgICAgaWYgKGZpeGVkVG9wbGV2ZWxQb3NpdGlvbnMgJiYgIVFQbGF0Zm9ybVdpbmRvdzo6cGFy ZW50KCkgJiYgd2luZG93KCktPnR5cGUoKSAhPSBRdDo6UG9wdXAKKysgICAgICAgICYmIHdpbmRv dygpLT50eXBlKCkgIT0gUXQ6OlRvb2xUaXApIHsKKysgICAgICAgIHJlY3QubW92ZVRvKHNjcmVl bigpLT5nZW9tZXRyeSgpLnRvcExlZnQoKSk7CisrICAgIH0KKyAgICAgc2V0R2VvbWV0cnlfaGVs cGVyKHJlY3QpOworIAorICAgICBpZiAod2luZG93KCktPmlzVmlzaWJsZSgpICYmIHJlY3QuaXNW YWxpZCgpKSB7CisgICAgICAgICBpZiAobVdpbmRvd0RlY29yYXRpb24pCisgICAgICAgICAgICAg bVdpbmRvd0RlY29yYXRpb24tPnVwZGF0ZSgpOworIAorLSAgICAgICAgaWYgKG1SZXNpemVBZnRl clN3YXAgJiYgd2luZG93VHlwZSgpID09IEVnbCAmJiBtU2VudEluaXRpYWxSZXNpemUpCisrICAg ICAgICBpZiAobVJlc2l6ZUFmdGVyU3dhcCAmJiB3aW5kb3dUeXBlKCkgPT0gRWdsICYmIG1TZW50 SW5pdGlhbFJlc2l6ZSkgeworKyAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrKCZtUmVzaXpl TG9jayk7CisgICAgICAgICAgICAgbVJlc2l6ZURpcnR5ID0gdHJ1ZTsKKy0gICAgICAgIGVsc2UK KysgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6 aGFuZGxlR2VvbWV0cnlDaGFuZ2Uod2luZG93KCksIGdlb21ldHJ5KCkpOworLQorKyAgICAgICAg fQorICAgICAgICAgbVNlbnRJbml0aWFsUmVzaXplID0gdHJ1ZTsKKyAgICAgfQorICAgICBRUmVj dCBleHBvc2VHZW9tZXRyeShRUG9pbnQoKSwgZ2VvbWV0cnkoKS5zaXplKCkpOworQEAgLTM3NCw3 ICszODIsNyBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZXRHZW9tZXRyeShjb25zdCBRUmVjdCAm cmVjdCkKKyAgICAgICAgIG1TaGVsbFN1cmZhY2UtPnNldFdpbmRvd0dlb21ldHJ5KHdpbmRvd0Nv bnRlbnRHZW9tZXRyeSgpKTsKKyAKKyAgICAgaWYgKGlzT3BhcXVlKCkgJiYgbU1hc2suaXNFbXB0 eSgpKQorLSAgICAgICAgc2V0T3BhcXVlQXJlYShyZWN0KTsKKysgICAgICAgIHNldE9wYXF1ZUFy ZWEoUVJlY3QoUVBvaW50KDAsIDApLCByZWN0LnNpemUoKSkpOworIH0KKyAKKyB2b2lkIFFXYXls YW5kV2luZG93OjpyZXNpemVGcm9tQXBwbHlDb25maWd1cmUoY29uc3QgUVNpemUgJnNpemVXaXRo TWFyZ2lucywgY29uc3QgUVBvaW50ICZvZmZzZXQpCitAQCAtMzk5LDIxICs0MDcsNiBAQCB2b2lk IFFXYXlsYW5kV2luZG93OjpzZW5kRXhwb3NlRXZlbnQoY29uc3QgUVJlY3QgJnJlY3QpCisgICAg IG1MYXN0RXhwb3NlR2VvbWV0cnkgPSByZWN0OworIH0KKyAKKy0KKy1zdGF0aWMgUVZlY3RvcjxR UG9pbnRlcjxRV2F5bGFuZFdpbmRvdz4+IGFjdGl2ZVBvcHVwczsKKy0KKy12b2lkIFFXYXlsYW5k V2luZG93OjpjbG9zZVBvcHVwcyhRV2F5bGFuZFdpbmRvdyAqcGFyZW50KQorLXsKKy0gICAgd2hp bGUgKCFhY3RpdmVQb3B1cHMuaXNFbXB0eSgpKSB7CistICAgICAgICBhdXRvIHBvcHVwID0gYWN0 aXZlUG9wdXBzLnRha2VMYXN0KCk7CistICAgICAgICBpZiAocG9wdXAuaXNOdWxsKCkpCistICAg ICAgICAgICAgY29udGludWU7CistICAgICAgICBpZiAocG9wdXAuZGF0YSgpID09IHBhcmVudCkK Ky0gICAgICAgICAgICByZXR1cm47CistICAgICAgICBwb3B1cC0+cmVzZXQoKTsKKy0gICAgfQor LX0KKy0KKyBRUGxhdGZvcm1TY3JlZW4gKlFXYXlsYW5kV2luZG93OjpjYWxjdWxhdGVTY3JlZW5G cm9tU3VyZmFjZUV2ZW50cygpIGNvbnN0CisgeworICAgICBRUmVhZExvY2tlciBsb2NrKCZtU3Vy ZmFjZUxvY2spOworQEAgLTQzMywxMCArNDI2LDcgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0 VmlzaWJsZShib29sIHZpc2libGUpCisgICAgIGxhc3RWaXNpYmxlID0gdmlzaWJsZTsKKyAKKyAg ICAgaWYgKHZpc2libGUpIHsKKy0gICAgICAgIGlmICh3aW5kb3coKS0+dHlwZSgpID09IFF0OjpQ b3B1cCB8fCB3aW5kb3coKS0+dHlwZSgpID09IFF0OjpUb29sVGlwKQorLSAgICAgICAgICAgIGFj dGl2ZVBvcHVwcyA8PCB0aGlzOworICAgICAgICAgaW5pdFdpbmRvdygpOworLSAgICAgICAgbURp c3BsYXktPmZsdXNoUmVxdWVzdHMoKTsKKyAKKyAgICAgICAgIHNldEdlb21ldHJ5KHdpbmRvd0dl b21ldHJ5KCkpOworICAgICAgICAgLy8gRG9uJ3QgZmx1c2ggdGhlIGV2ZW50cyBoZXJlLCBvciBl bHNlIHRoZSBuZXdseSB2aXNpYmxlIHdpbmRvdyBtYXkgc3RhcnQgZHJhd2luZywgYnV0IHNpbmNl CitAQCAtNDQ0LDcgKzQzNCw2IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldFZpc2libGUoYm9v bCB2aXNpYmxlKQorICAgICAgICAgLy8gUVdheWxhbmRTaG1CYWNraW5nU3RvcmU6OmJlZ2luUGFp bnQoKS4KKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdCgpKTsK Ky0gICAgICAgIGNsb3NlUG9wdXBzKHRoaXMpOworICAgICAgICAgcmVzZXQoKTsKKyAgICAgfQor IH0KK0BAIC01NTYsMTIgKzU0NSwxMiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZW5kUmVjdXJz aXZlRXhwb3NlRXZlbnQoKQorIAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OmF0dGFjaChRV2F5bGFu ZEJ1ZmZlciAqYnVmZmVyLCBpbnQgeCwgaW50IHkpCisgeworLSAgICBRX0FTU0VSVCghYnVmZmVy LT5jb21taXR0ZWQoKSk7CisgICAgIFFSZWFkTG9ja2VyIGxvY2tlcigmbVN1cmZhY2VMb2NrKTsK KyAgICAgaWYgKG1TdXJmYWNlID09IG51bGxwdHIpCisgICAgICAgICByZXR1cm47CisgCisgICAg IGlmIChidWZmZXIpIHsKKysgICAgICAgIFFfQVNTRVJUKCFidWZmZXItPmNvbW1pdHRlZCgpKTsK KyAgICAgICAgIGhhbmRsZVVwZGF0ZSgpOworICAgICAgICAgYnVmZmVyLT5zZXRCdXN5KCk7Cisg CitAQCAtNTgzLDcgKzU3MiwxMSBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpkYW1hZ2UoY29uc3Qg UVJlY3QgJnJlY3QpCisgICAgIGlmIChtU3VyZmFjZSA9PSBudWxscHRyKQorICAgICAgICAgcmV0 dXJuOworIAorLSAgICBtU3VyZmFjZS0+ZGFtYWdlKHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53 aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKysgICAgY29uc3QgaW50IHMgPSBzY2FsZSgpOworKyAg ICBpZiAobURpc3BsYXktPmNvbXBvc2l0b3JWZXJzaW9uKCkgPj0gNCkKKysgICAgICAgIG1TdXJm YWNlLT5kYW1hZ2VfYnVmZmVyKHMgKiByZWN0LngoKSwgcyAqIHJlY3QueSgpLCBzICogcmVjdC53 aWR0aCgpLCBzICogcmVjdC5oZWlnaHQoKSk7CisrICAgIGVsc2UKKysgICAgICAgIG1TdXJmYWNl LT5kYW1hZ2UocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp OworIH0KKyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpzYWZlQ29tbWl0KFFXYXlsYW5kQnVmZmVy ICpidWZmZXIsIGNvbnN0IFFSZWdpb24gJmRhbWFnZSkKK0BAIC02MTksOCArNjEyLDE0IEBAIHZv aWQgUVdheWxhbmRXaW5kb3c6OmNvbW1pdChRV2F5bGFuZEJ1ZmZlciAqYnVmZmVyLCBjb25zdCBR UmVnaW9uICZkYW1hZ2UpCisgICAgICAgICByZXR1cm47CisgCisgICAgIGF0dGFjaE9mZnNldChi dWZmZXIpOworLSAgICBmb3IgKGNvbnN0IFFSZWN0ICZyZWN0OiBkYW1hZ2UpCistICAgICAgICBt U3VyZmFjZS0+ZGFtYWdlKHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0Lmhl aWdodCgpKTsKKysgICAgaWYgKG1EaXNwbGF5LT5jb21wb3NpdG9yVmVyc2lvbigpID49IDQpIHsK KysgICAgICAgIGNvbnN0IGludCBzID0gc2NhbGUoKTsKKysgICAgICAgIGZvciAoY29uc3QgUVJl Y3QgJnJlY3Q6IGRhbWFnZSkKKysgICAgICAgICAgICBtU3VyZmFjZS0+ZGFtYWdlX2J1ZmZlcihz ICogcmVjdC54KCksIHMgKiByZWN0LnkoKSwgcyAqIHJlY3Qud2lkdGgoKSwgcyAqIHJlY3QuaGVp Z2h0KCkpOworKyAgICB9IGVsc2UgeworKyAgICAgICAgZm9yIChjb25zdCBRUmVjdCAmcmVjdDog ZGFtYWdlKQorKyAgICAgICAgICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54KCksIHJlY3QueSgp LCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworKyAgICB9CisgICAgIFFfQVNTRVJUKCFi dWZmZXItPmNvbW1pdHRlZCgpKTsKKyAgICAgYnVmZmVyLT5zZXRDb21taXR0ZWQoKTsKKyAgICAg bVN1cmZhY2UtPmNvbW1pdCgpOworQEAgLTYzNSw0MiArNjM0LDUzIEBAIHZvaWQgUVdheWxhbmRX aW5kb3c6OmNvbW1pdCgpCisgCisgY29uc3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIgUVdheWxhbmRX aW5kb3c6OmNhbGxiYWNrTGlzdGVuZXIgPSB7CisgICAgIFtdKHZvaWQgKmRhdGEsIHdsX2NhbGxi YWNrICpjYWxsYmFjaywgdWludDMyX3QgdGltZSkgeworLSAgICAgICAgUV9VTlVTRUQoY2FsbGJh Y2spOworICAgICAgICAgUV9VTlVTRUQodGltZSk7CisgICAgICAgICBhdXRvICp3aW5kb3cgPSBz dGF0aWNfY2FzdDxRV2F5bGFuZFdpbmRvdyo+KGRhdGEpOworLSAgICAgICAgd2luZG93LT5oYW5k bGVGcmFtZUNhbGxiYWNrKCk7CisrICAgICAgICB3aW5kb3ctPmhhbmRsZUZyYW1lQ2FsbGJhY2so Y2FsbGJhY2spOworICAgICB9CisgfTsKKyAKKy12b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVG cmFtZUNhbGxiYWNrKCkKKyt2b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVGcmFtZUNhbGxiYWNr KHdsX2NhbGxiYWNrKiBjYWxsYmFjaykKKyB7CisrICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1G cmFtZVN5bmNNdXRleCk7CisrICAgIGlmICghbUZyYW1lQ2FsbGJhY2spIHsKKysgICAgICAgIC8v IFRoaXMgbWVhbnMgdGhlIGNhbGxiYWNrIGlzIGFscmVhZHkgdW5zZXQgYnkgUVdheWxhbmRXaW5k b3c6OnJlc2V0LgorKyAgICAgICAgLy8gVGhlIHdsX2NhbGxiYWNrIG9iamVjdCB3aWxsIGJlIGRl c3Ryb3llZCB0aGVyZSB0b28uCisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgUV9BU1NF UlQoY2FsbGJhY2sgPT0gbUZyYW1lQ2FsbGJhY2spOworKyAgICB3bF9jYWxsYmFja19kZXN0cm95 KGNhbGxiYWNrKTsKKysgICAgbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOworKworICAgICBtV2Fp dGluZ0ZvckZyYW1lQ2FsbGJhY2sgPSBmYWxzZTsKKyAgICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2Vk VGltZXIuaW52YWxpZGF0ZSgpOworIAorICAgICAvLyBUaGUgcmVzdCBjYW4gd2FpdCB1bnRpbCB3 ZSBjYW4gcnVuIGl0IG9uIHRoZSBjb3JyZWN0IHRocmVhZAorLSAgICBpZiAoIW1XYWl0aW5nRm9y VXBkYXRlRGVsaXZlcnkpIHsKKy0gICAgICAgIGF1dG8gZG9IYW5kbGVFeHBvc2UgPSBbdGhpc10o KSB7CistICAgICAgICAgICAgYm9vbCB3YXNFeHBvc2VkID0gaXNFeHBvc2VkKCk7CistICAgICAg ICAgICAgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9IGZhbHNlOworLSAgICAgICAgICAgIGlmICgh d2FzRXhwb3NlZCAmJiBpc0V4cG9zZWQoKSkgLy8gRGlkIHNldHRpbmcgbUZyYW1lQ2FsbGJhY2tU aW1lZE91dCBtYWtlIHRoZSB3aW5kb3cgZXhwb3NlZD8KKy0gICAgICAgICAgICAgICAgc2VuZEV4 cG9zZUV2ZW50KFFSZWN0KFFQb2ludCgpLCBnZW9tZXRyeSgpLnNpemUoKSkpOworLSAgICAgICAg ICAgIGlmICh3YXNFeHBvc2VkICYmIGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkpCistICAgICAg ICAgICAgICAgIGRlbGl2ZXJVcGRhdGVSZXF1ZXN0KCk7CistCistICAgICAgICAgICAgbVdhaXRp bmdGb3JVcGRhdGVEZWxpdmVyeSA9IGZhbHNlOworLSAgICAgICAgfTsKKysgICAgYXV0byBkb0hh bmRsZUV4cG9zZSA9IFt0aGlzXSgpIHsKKysgICAgICAgIG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZl cnkuc3RvcmVSZWxlYXNlKGZhbHNlKTsKKysgICAgICAgIGJvb2wgd2FzRXhwb3NlZCA9IGlzRXhw b3NlZCgpOworKyAgICAgICAgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9IGZhbHNlOworKyAgICAg ICAgaWYgKCF3YXNFeHBvc2VkICYmIGlzRXhwb3NlZCgpKSAvLyBEaWQgc2V0dGluZyBtRnJhbWVD YWxsYmFja1RpbWVkT3V0IG1ha2UgdGhlIHdpbmRvdyBleHBvc2VkPworKyAgICAgICAgICAgIHNl bmRFeHBvc2VFdmVudChRUmVjdChRUG9pbnQoKSwgZ2VvbWV0cnkoKS5zaXplKCkpKTsKKysgICAg ICAgIGlmICh3YXNFeHBvc2VkICYmIGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkpCisrICAgICAg ICAgICAgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKTsKKysgICAgfTsKKyAKKysgICAgaWYgKG1XYWl0 aW5nRm9yVXBkYXRlRGVsaXZlcnkudGVzdEFuZFNldEFjcXVpcmUoZmFsc2UsIHRydWUpKSB7Cisg ICAgICAgICAvLyBRdWV1ZWQgY29ubmVjdGlvbiwgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGNhbGwg aGFuZGxlVXBkYXRlKCkgZnJvbSBpbnNpZGUgd2FpdEZvckZyYW1lU3luYygpCisgICAgICAgICAv LyBpbiB0aGUgc2luZ2xlLXRocmVhZGVkIGNhc2UuCistICAgICAgICBtV2FpdGluZ0ZvclVwZGF0 ZURlbGl2ZXJ5ID0gdHJ1ZTsKKyAgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhp cywgZG9IYW5kbGVFeHBvc2UsIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyAgICAgfQorKworKyAg ICBtRnJhbWVTeW5jV2FpdC5ub3RpZnlfYWxsKCk7CisgfQorIAorIGJvb2wgUVdheWxhbmRXaW5k b3c6OndhaXRGb3JGcmFtZVN5bmMoaW50IHRpbWVvdXQpCisgeworLSAgICBRTXV0ZXhMb2NrZXIg bG9ja2VyKG1GcmFtZVF1ZXVlLm11dGV4KTsKKy0gICAgbURpc3BsYXktPmRpc3BhdGNoUXVldWVX aGlsZShtRnJhbWVRdWV1ZS5xdWV1ZSwgWyZdKCkgeyByZXR1cm4gbVdhaXRpbmdGb3JGcmFtZUNh bGxiYWNrOyB9LCB0aW1lb3V0KTsKKysgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3lu Y011dGV4KTsKKysKKysgICAgUURlYWRsaW5lVGltZXIgZGVhZGxpbmUodGltZW91dCk7CisrICAg IHdoaWxlIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgJiYgbUZyYW1lU3luY1dhaXQud2FpdCgm bUZyYW1lU3luY011dGV4LCBkZWFkbGluZSkpIHsgfQorIAorICAgICBpZiAobVdhaXRpbmdGb3JG cmFtZUNhbGxiYWNrKSB7CisgICAgICAgICBxQ0RlYnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9yZSkg PDwgIkRpZG4ndCByZWNlaXZlIGZyYW1lIGNhbGxiYWNrIGluIHRpbWUsIHdpbmRvdyBzaG91bGQg bm93IGJlIGluZXhwb3NlZCI7CitAQCAtODY4LDYgKzg3OCwxNyBAQCBib29sIFFXYXlsYW5kV2lu ZG93OjpjcmVhdGVEZWNvcmF0aW9uKCkKKyAgICAgICAgICAgICBzdWJzdXJmLT5zZXRfcG9zaXRp b24ocG9zLngoKSArIG0ubGVmdCgpLCBwb3MueSgpICsgbS50b3AoKSk7CisgICAgICAgICB9Cisg ICAgICAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoUVBvaW50KCksIGdlb21ldHJ5KCkuc2l6ZSgp KSk7CisrCisrICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSBidWZm ZXIgaXMgcmVjcmVhdGVkLCBidXQgc2luY2UKKysgICAgICAgIC8vIHRoZSBjb250ZW50IHJlY3Qg cmVtYWlucyB0aGUgc2FtZSwgdGhlIHdpZGdldHMgcmVtYWluIHRoZSBzYW1lCisrICAgICAgICAv LyBzaXplIGFuZCBhcmUgbm90IHJlZHJhd24sIGxlYXZpbmcgdGhlIG5ldyBidWZmZXIgZW1wdHku IEFzIGEgc2ltcGxlCisrICAgICAgICAvLyB3b3JrLWFyb3VuZCwgd2UgdHJpZ2dlciBhIGZ1bGwg ZXh0cmEgdXBkYXRlIHdoZW5ldmVyIHRoZSBjbGllbnQtc2lkZQorKyAgICAgICAgLy8gd2luZG93 IGRlY29yYXRpb25zIGFyZSB0b2dnbGVkIHdoaWxlIHRoZSB3aW5kb3cgaXMgc2hvd2luZy4KKysg ICAgICAgIC8vIE5vdGU6IGNyZWF0ZURlY29yYXRpb24oKSBpcyBzb21ldGltZXMgY2FsbGVkIGZy b20gdGhlIHJlbmRlciB0aHJlYWQKKysgICAgICAgIC8vIG9mIFF0IFF1aWNrLiBUaGlzIGlzIGVz c2VudGlhbGx5IHdyb25nIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBjYXVzZSBwcm9ibGVtcywKKysg ICAgICAgIC8vIGJ1dCB1bnRpbCB0aGUgdW5kZXJseWluZyBpc3N1ZSBoYXMgYmVlbiBmaXhlZCwg d2UgaGF2ZSB0byB1c2UgaW52b2tlTWV0aG9kKCkKKysgICAgICAgIC8vIGhlcmUgdG8gYXZvaWQg YXNzZXJ0cy4KKysgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2Qod2luZG93KCksICZR V2luZG93OjpyZXF1ZXN0VXBkYXRlKTsKKyAgICAgfQorIAorICAgICByZXR1cm4gbVdpbmRvd0Rl Y29yYXRpb247CitAQCAtMTAyMyw2ICsxMDQ0LDEzIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6Omhh bmRsZVNjcmVlbnNDaGFuZ2VkKCkKKyAKKyAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFu ZGxlV2luZG93U2NyZWVuQ2hhbmdlZCh3aW5kb3coKSwgbmV3U2NyZWVuLT5RUGxhdGZvcm1TY3Jl ZW46OnNjcmVlbigpKTsKKyAgICAgbUxhc3RSZXBvcnRlZFNjcmVlbiA9IG5ld1NjcmVlbjsKKysg ICAgaWYgKGZpeGVkVG9wbGV2ZWxQb3NpdGlvbnMgJiYgIVFQbGF0Zm9ybVdpbmRvdzo6cGFyZW50 KCkgJiYgd2luZG93KCktPnR5cGUoKSAhPSBRdDo6UG9wdXAKKysgICAgICAgICYmIHdpbmRvdygp LT50eXBlKCkgIT0gUXQ6OlRvb2xUaXAKKysgICAgICAgICYmIGdlb21ldHJ5KCkudG9wTGVmdCgp ICE9IG5ld1NjcmVlbi0+Z2VvbWV0cnkoKS50b3BMZWZ0KCkpIHsKKysgICAgICAgIGF1dG8gZ2Vv bWV0cnkgPSB0aGlzLT5nZW9tZXRyeSgpOworKyAgICAgICAgZ2VvbWV0cnkubW92ZVRvKG5ld1Nj cmVlbi0+Z2VvbWV0cnkoKS50b3BMZWZ0KCkpOworKyAgICAgICAgc2V0R2VvbWV0cnkoZ2VvbWV0 cnkpOworKyAgICB9CisgCisgICAgIGludCBzY2FsZSA9IG5ld1NjcmVlbi0+aXNQbGFjZWhvbGRl cigpID8gMSA6IHN0YXRpY19jYXN0PFFXYXlsYW5kU2NyZWVuICo+KG5ld1NjcmVlbiktPnNjYWxl KCk7CisgICAgIGlmIChzY2FsZSAhPSBtU2NhbGUpIHsKK0BAIC0xMDk0LDEwICsxMTIyLDE4IEBA IGJvb2wgUVdheWxhbmRXaW5kb3c6OnNldE1vdXNlR3JhYkVuYWJsZWQoYm9vbCBncmFiKQorICAg ICByZXR1cm4gdHJ1ZTsKKyB9CisgCisrUXQ6OldpbmRvd1N0YXRlcyBRV2F5bGFuZFdpbmRvdzo6 d2luZG93U3RhdGVzKCkgY29uc3QKKyt7CisrICAgIHJldHVybiBtTGFzdFJlcG9ydGVkV2luZG93 U3RhdGVzOworK30KKysKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVXaW5kb3dTdGF0ZXND aGFuZ2VkKFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGVzKQorIHsKKyAgICAgY3JlYXRlRGVjb3JhdGlv bigpOworLSAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dTdGF0ZUNoYW5n ZWQod2luZG93KCksIHN0YXRlcywgbUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRlcyk7CisrICAgIFF0 OjpXaW5kb3dTdGF0ZXMgc3RhdGVzV2l0aG91dEFjdGl2ZSA9IHN0YXRlcyAmIH5RdDo6V2luZG93 QWN0aXZlOworKyAgICBRdDo6V2luZG93U3RhdGVzIGxhc3RTdGF0ZXNXaXRob3V0QWN0aXZlID0g bUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRlcyAmIH5RdDo6V2luZG93QWN0aXZlOworKyAgICBRV2lu ZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dTdGF0ZUNoYW5nZWQod2luZG93KCksIHN0 YXRlc1dpdGhvdXRBY3RpdmUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsYXN0U3RhdGVzV2l0aG91dEFjdGl2ZSk7CisgICAgIG1MYXN0UmVw b3J0ZWRXaW5kb3dTdGF0ZXMgPSBzdGF0ZXM7CisgfQorIAorQEAgLTExMzksMTkgKzExNzUsMjQg QEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6dGltZXJFdmVudChRVGltZXJFdmVudCAqZXZlbnQpCisg ICAgIGlmIChldmVudC0+dGltZXJJZCgpICE9IG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRp bWVySWQpCisgICAgICAgICByZXR1cm47CisgCistICAgIGJvb2wgY2FsbGJhY2tUaW1lckV4cGly ZWQgPSBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5oYXNFeHBpcmVkKG1GcmFtZUNhbGxiYWNr VGltZW91dCk7CistICAgIGlmICghbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaXNWYWxpZCgp IHx8IGNhbGxiYWNrVGltZXJFeHBpcmVkICkgeworLSAgICAgICAga2lsbFRpbWVyKG1GcmFtZUNh bGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQpOworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2tDaGVj a0ludGVydmFsVGltZXJJZCA9IC0xOworLSAgICB9CistICAgIGlmIChtRnJhbWVDYWxsYmFja0Vs YXBzZWRUaW1lci5pc1ZhbGlkKCkgJiYgY2FsbGJhY2tUaW1lckV4cGlyZWQpIHsKKy0gICAgICAg IG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmludmFsaWRhdGUoKTsKKysgICAgeworKyAgICAg ICAgUU11dGV4TG9ja2VyIGxvY2soJm1GcmFtZVN5bmNNdXRleCk7CisgCistICAgICAgICBxQ0Rl YnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9yZSkgPDwgIkRpZG4ndCByZWNlaXZlIGZyYW1lIGNhbGxi YWNrIGluIHRpbWUsIHdpbmRvdyBzaG91bGQgbm93IGJlIGluZXhwb3NlZCI7CistICAgICAgICBt RnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gdHJ1ZTsKKy0gICAgICAgIG1XYWl0aW5nRm9yVXBkYXRl ID0gZmFsc2U7CistICAgICAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoKSk7CisrICAgICAgICBi b29sIGNhbGxiYWNrVGltZXJFeHBpcmVkID0gbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaGFz RXhwaXJlZChtRnJhbWVDYWxsYmFja1RpbWVvdXQpOworKyAgICAgICAgaWYgKCFtRnJhbWVDYWxs YmFja0VsYXBzZWRUaW1lci5pc1ZhbGlkKCkgfHwgY2FsbGJhY2tUaW1lckV4cGlyZWQgKSB7Cisr ICAgICAgICAgICAga2lsbFRpbWVyKG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQp OworKyAgICAgICAgICAgIG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQgPSAtMTsK KysgICAgICAgIH0KKysgICAgICAgIGlmICghbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaXNW YWxpZCgpIHx8ICFjYWxsYmFja1RpbWVyRXhwaXJlZCkgeworKyAgICAgICAgICAgIHJldHVybjsK KysgICAgICAgIH0KKysgICAgICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmludmFsaWRh dGUoKTsKKyAgICAgfQorKworKyAgICBxQ0RlYnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9yZSkgPDwg IkRpZG4ndCByZWNlaXZlIGZyYW1lIGNhbGxiYWNrIGluIHRpbWUsIHdpbmRvdyBzaG91bGQgbm93 IGJlIGluZXhwb3NlZCI7CisrICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSB0cnVlOworKyAg ICBtV2FpdGluZ0ZvclVwZGF0ZSA9IGZhbHNlOworKyAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3Qo KSk7CisgfQorIAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorQEAgLTEx NjAsOCArMTIwMSwxMSBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXF1ZXN0VXBkYXRlKCkKKyAg ICAgUV9BU1NFUlQoaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSk7IC8vIHNob3VsZCBiZSBzZXQg YnkgUVBBCisgCisgICAgIC8vIElmIHdlIGhhdmUgYSBmcmFtZSBjYWxsYmFjayBhbGwgaXMgZ29v ZCBhbmQgd2lsbCBiZSB0YWtlbiBjYXJlIG9mIHRoZXJlCistICAgIGlmIChtV2FpdGluZ0ZvckZy YW1lQ2FsbGJhY2spCistICAgICAgICByZXR1cm47CisrICAgIHsKKysgICAgICAgIFFNdXRleExv Y2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrICAgICAgICBpZiAobVdhaXRpbmdGb3JG cmFtZUNhbGxiYWNrKQorKyAgICAgICAgICAgIHJldHVybjsKKysgICAgfQorIAorICAgICAvLyBJ ZiB3ZSd2ZSBhbHJlYWR5IGNhbGxlZCBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpLCBidXQgaGF2ZW4n dCBzZWVuIGFueSBhdHRhY2grY29tbWl0L3N3YXAgeWV0CisgICAgIC8vIFRoaXMgaXMgYSBzb21l d2hhdCByZWR1bmRhbnQgYmVoYXZpb3IgYW5kIG1pZ2h0IGluZGljYXRlIGEgYnVnIGluIHRoZSBj YWxsaW5nIGNvZGUsIHNvIGxvZworQEAgLTExNzQsNyArMTIxOCwxMiBAQCB2b2lkIFFXYXlsYW5k V2luZG93OjpyZXF1ZXN0VXBkYXRlKCkKKyAgICAgLy8gc28gdXNlIGludm9rZU1ldGhvZCB0byBk ZWxheSB0aGUgZGVsaXZlcnkgYSBiaXQuCisgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2Qo dGhpcywgW3RoaXNdIHsKKyAgICAgICAgIC8vIFRoaW5ncyBtaWdodCBoYXZlIGNoYW5nZWQgaW4g dGhlIG1lYW50aW1lCistICAgICAgICBpZiAoaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSAmJiAh bVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQorKyAgICAgICAgeworKyAgICAgICAgICAgIFFNdXRl eExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrICAgICAgICAgICAgaWYgKG1XYWl0 aW5nRm9yRnJhbWVDYWxsYmFjaykKKysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAg fQorKyAgICAgICAgaWYgKGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkpCisgICAgICAgICAgICAg ZGVsaXZlclVwZGF0ZVJlcXVlc3QoKTsKKyAgICAgfSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwor IH0KK0BAIC0xMTg1LDE5ICsxMjM0LDE4IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RV cGRhdGUoKQorIHZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZVVwZGF0ZSgpCisgeworICAgICBx Q0RlYnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9yZSkgPDwgImhhbmRsZVVwZGF0ZSIgPDwgUVRocmVh ZDo6Y3VycmVudFRocmVhZCgpOworKworICAgICAvLyBUT0RPOiBTaG91bGQgc3luYyBzdWJzdXJm YWNlcyBhdm9pZCByZXF1ZXN0aW5nIGZyYW1lIGNhbGxiYWNrcz8KKyAgICAgUVJlYWRMb2NrZXIg bG9jaygmbVN1cmZhY2VMb2NrKTsKKyAgICAgaWYgKCFtU3VyZmFjZSkKKyAgICAgICAgIHJldHVy bjsKKyAKKy0gICAgaWYgKG1GcmFtZUNhbGxiYWNrKSB7CistICAgICAgICB3bF9jYWxsYmFja19k ZXN0cm95KG1GcmFtZUNhbGxiYWNrKTsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrID0gbnVsbHB0 cjsKKy0gICAgfQorKyAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOwor KyAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQorKyAgICAgICAgcmV0dXJuOworIAor LSAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKG1GcmFtZVF1ZXVlLm11dGV4KTsKKyAgICAgc3RydWN0 IDo6d2xfc3VyZmFjZSAqd3JhcHBlZFN1cmZhY2UgPSByZWludGVycHJldF9jYXN0PHN0cnVjdCA6 OndsX3N1cmZhY2UgKj4od2xfcHJveHlfY3JlYXRlX3dyYXBwZXIobVN1cmZhY2UtPm9iamVjdCgp KSk7CistICAgIHdsX3Byb3h5X3NldF9xdWV1ZShyZWludGVycHJldF9jYXN0PHdsX3Byb3h5ICo+ KHdyYXBwZWRTdXJmYWNlKSwgbUZyYW1lUXVldWUucXVldWUpOworKyAgICB3bF9wcm94eV9zZXRf cXVldWUocmVpbnRlcnByZXRfY2FzdDx3bF9wcm94eSAqPih3cmFwcGVkU3VyZmFjZSksIG1EaXNw bGF5LT5mcmFtZUV2ZW50UXVldWUoKSk7CisgICAgIG1GcmFtZUNhbGxiYWNrID0gd2xfc3VyZmFj ZV9mcmFtZSh3cmFwcGVkU3VyZmFjZSk7CisgICAgIHdsX3Byb3h5X3dyYXBwZXJfZGVzdHJveSh3 cmFwcGVkU3VyZmFjZSk7CisgICAgIHdsX2NhbGxiYWNrX2FkZF9saXN0ZW5lcihtRnJhbWVDYWxs YmFjaywgJlFXYXlsYW5kV2luZG93OjpjYWxsYmFja0xpc3RlbmVyLCB0aGlzKTsKK0BAIC0xMjA3 LDYgKzEyNTUsOCBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVVcGRhdGUoKQorICAgICAv LyBTdGFydCBhIHRpbWVyIGZvciBoYW5kbGluZyB0aGUgY2FzZSB3aGVuIHRoZSBjb21wb3NpdG9y IHN0b3BzIHNlbmRpbmcgZnJhbWUgY2FsbGJhY2tzLgorICAgICBpZiAobUZyYW1lQ2FsbGJhY2tU aW1lb3V0ID4gMCkgeworICAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCBb dGhpc10geworKyAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRl eCk7CisrCisgICAgICAgICAgICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykgeworICAg ICAgICAgICAgICAgICBpZiAobUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA8IDAp CisgICAgICAgICAgICAgICAgICAgICBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklk ID0gc3RhcnRUaW1lcihtRnJhbWVDYWxsYmFja1RpbWVvdXQpOworQEAgLTEyNjcsNiArMTMxNywy MCBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZXRPcGFxdWVBcmVhKGNvbnN0IFFSZWdpb24gJm9w YXF1ZUFyZWEpCisgICAgIHdsX3JlZ2lvbl9kZXN0cm95KHJlZ2lvbik7CisgfQorIAorK3ZvaWQg UVdheWxhbmRXaW5kb3c6OmFkZENoaWxkUG9wdXAoUVdheWxhbmRXaW5kb3cgKnN1cmZhY2UpIHsK KysgICAgbUNoaWxkUG9wdXBzLmFwcGVuZChzdXJmYWNlKTsKKyt9CisrCisrdm9pZCBRV2F5bGFu ZFdpbmRvdzo6cmVtb3ZlQ2hpbGRQb3B1cChRV2F5bGFuZFdpbmRvdyAqc3VyZmFjZSkgeworKyAg ICBtQ2hpbGRQb3B1cHMucmVtb3ZlQWxsKHN1cmZhY2UpOworK30KKysKKyt2b2lkIFFXYXlsYW5k V2luZG93OjpjbG9zZUNoaWxkUG9wdXBzKCkgeworKyAgICB3aGlsZSAoIW1DaGlsZFBvcHVwcy5p c0VtcHR5KCkpIHsKKysgICAgICAgIGF1dG8gcG9wdXAgPSBtQ2hpbGRQb3B1cHMudGFrZUxhc3Qo KTsKKysgICAgICAgIHBvcHVwLT5yZXNldCgpOworKyAgICB9CisrfQorIH0KKyAKKyBRVF9FTkRf TkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5k b3dfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3dfcC5oCitpbmRleCAw MTMzN2NmZi4uMmYyMTlkOGMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZHdpbmRvd19wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93 X3AuaAorQEAgLTk4LDYgKzk4LDkgQEAgcHVibGljOgorICAgICBRV2F5bGFuZFdpbmRvdyhRV2lu ZG93ICp3aW5kb3csIFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSk7CisgICAgIH5RV2F5bGFuZFdp bmRvdygpIG92ZXJyaWRlOworIAorKyAgICAvLyBLZWVwIFRvcGxldmVscyBwb3NpdGlvbiBvbiB0 aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZWlyIHNjcmVlbgorKyAgICBzdGF0aWMgaW5saW5lIGJv b2wgZml4ZWRUb3BsZXZlbFBvc2l0aW9ucyA9IHRydWU7CisrCisgICAgIHZpcnR1YWwgV2luZG93 VHlwZSB3aW5kb3dUeXBlKCkgY29uc3QgPSAwOworICAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlU2l6 ZSgpOworICAgICBXSWQgd2luSWQoKSBjb25zdCBvdmVycmlkZTsKK0BAIC0xNDgsNiArMTUxLDcg QEAgcHVibGljOgorICAgICB2b2lkIHNldFdpbmRvd1N0YXRlKFF0OjpXaW5kb3dTdGF0ZXMgc3Rh dGVzKSBvdmVycmlkZTsKKyAgICAgdm9pZCBzZXRXaW5kb3dGbGFncyhRdDo6V2luZG93RmxhZ3Mg ZmxhZ3MpIG92ZXJyaWRlOworICAgICB2b2lkIGhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQoUXQ6 OldpbmRvd1N0YXRlcyBzdGF0ZXMpOworKyAgICBRdDo6V2luZG93U3RhdGVzIHdpbmRvd1N0YXRl cygpIGNvbnN0OworIAorICAgICB2b2lkIHJhaXNlKCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgbG93 ZXIoKSBvdmVycmlkZTsKK0BAIC0yMDYsNiArMjEwLDEwIEBAIHB1YmxpYzoKKyAgICAgdm9pZCBo YW5kbGVVcGRhdGUoKTsKKyAgICAgdm9pZCBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpIG92ZXJyaWRl OworIAorKyAgICB2b2lkIGFkZENoaWxkUG9wdXAoUVdheWxhbmRXaW5kb3cqIGNoaWxkKTsKKysg ICAgdm9pZCByZW1vdmVDaGlsZFBvcHVwKFFXYXlsYW5kV2luZG93KiBjaGlsZCk7CisrICAgIHZv aWQgY2xvc2VDaGlsZFBvcHVwcygpOworKworIHB1YmxpYyBzbG90czoKKyAgICAgdm9pZCBhcHBs eUNvbmZpZ3VyZSgpOworIAorQEAgLTIxNSw3ICsyMjMsMTEgQEAgc2lnbmFsczoKKyAKKyBwcm90 ZWN0ZWQ6CisgICAgIFFXYXlsYW5kRGlzcGxheSAqbURpc3BsYXkgPSBudWxscHRyOworKworKyAg ICAvLyBtU3VyZmFjZSBjYW4gYmUgd3JpdHRlbiBieSB0aGUgbWFpbiB0aHJlYWQuIE90aGVyIHRo cmVhZHMgc2hvdWxkIGNsYWltIGEgcmVhZCBsb2NrIGZvciBhY2Nlc3MKKysgICAgbXV0YWJsZSBR UmVhZFdyaXRlTG9jayBtU3VyZmFjZUxvY2s7CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5k U3VyZmFjZT4gbVN1cmZhY2U7CisrCisgICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNlICptU2hlbGxT dXJmYWNlID0gbnVsbHB0cjsKKyAgICAgUVdheWxhbmRTdWJTdXJmYWNlICptU3ViU3VyZmFjZVdp bmRvdyA9IG51bGxwdHI7CisgICAgIFFWZWN0b3I8UVdheWxhbmRTdWJTdXJmYWNlICo+IG1DaGls ZHJlbjsKK0BAIC0yMjUsMTMgKzIzNywxNCBAQCBwcm90ZWN0ZWQ6CisgICAgIFF0OjpNb3VzZUJ1 dHRvbnMgbU1vdXNlUHJlc3NlZEluQ29udGVudEFyZWEgPSBRdDo6Tm9CdXR0b247CisgCisgICAg IFdJZCBtV2luZG93SWQ7CistICAgIGJvb2wgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFs c2U7CisgICAgIGJvb2wgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9IGZhbHNlOyAvLyBXaGV0aGVy IHRoZSBmcmFtZSBjYWxsYmFjayBoYXMgdGltZWQgb3V0CistICAgIGJvb2wgbVdhaXRpbmdGb3JV cGRhdGVEZWxpdmVyeSA9IGZhbHNlOworICAgICBpbnQgbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVy dmFsVGltZXJJZCA9IC0xOworLSAgICBRRWxhcHNlZFRpbWVyIG1GcmFtZUNhbGxiYWNrRWxhcHNl ZFRpbWVyOworLSAgICBzdHJ1Y3QgOjp3bF9jYWxsYmFjayAqbUZyYW1lQ2FsbGJhY2sgPSBudWxs cHRyOworLSAgICBRV2F5bGFuZERpc3BsYXk6OkZyYW1lUXVldWUgbUZyYW1lUXVldWU7CisrICAg IFFBdG9taWNJbnQgbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSA9IGZhbHNlOworKworKyAgICBi b29sIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNlOyAvLyBQcm90ZWN0ZWQgYnkgbUZy YW1lU3luY011dGV4CisrICAgIFFFbGFwc2VkVGltZXIgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGlt ZXI7IC8vIFByb3RlY3RlZCBieSBtRnJhbWVTeW5jTXV0ZXgKKysgICAgc3RydWN0IDo6d2xfY2Fs bGJhY2sgKm1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsgLy8gUHJvdGVjdGVkIGJ5IG1GcmFtZVN5 bmNNdXRleAorKyAgICBRTXV0ZXggbUZyYW1lU3luY011dGV4OworICAgICBRV2FpdENvbmRpdGlv biBtRnJhbWVTeW5jV2FpdDsKKyAKKyAgICAgLy8gVHJ1ZSB3aGVuIHdlIGhhdmUgY2FsbGVkIGRl bGl2ZXJSZXF1ZXN0VXBkYXRlLCBidXQgdGhlIGNsaWVudCBoYXMgbm90IHlldCBhdHRhY2hlZCBh IG5ldyBidWZmZXIKK0BAIC0yNjEsNiArMjc0LDggQEAgcHJvdGVjdGVkOgorICAgICBRV2F5bGFu ZEJ1ZmZlciAqbVF1ZXVlZEJ1ZmZlciA9IG51bGxwdHI7CisgICAgIFFSZWdpb24gbVF1ZXVlZEJ1 ZmZlckRhbWFnZTsKKyAKKysgICAgUUxpc3Q8UVBvaW50ZXI8UVdheWxhbmRXaW5kb3c+PiBtQ2hp bGRQb3B1cHM7CisrCisgcHJpdmF0ZToKKyAgICAgdm9pZCBzZXRHZW9tZXRyeV9oZWxwZXIoY29u c3QgUVJlY3QgJnJlY3QpOworICAgICB2b2lkIGluaXRXaW5kb3coKTsKK0BAIC0yODMsMTIgKzI5 OCwxMCBAQCBwcml2YXRlOgorICAgICBRUmVjdCBtTGFzdEV4cG9zZUdlb21ldHJ5OworIAorICAg ICBzdGF0aWMgY29uc3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIgY2FsbGJhY2tMaXN0ZW5lcjsKKy0g ICAgdm9pZCBoYW5kbGVGcmFtZUNhbGxiYWNrKCk7CisrICAgIHZvaWQgaGFuZGxlRnJhbWVDYWxs YmFjayhzdHJ1Y3QgOjp3bF9jYWxsYmFjayogY2FsbGJhY2spOworIAorICAgICBzdGF0aWMgUVdh eWxhbmRXaW5kb3cgKm1Nb3VzZUdyYWI7CisgCistICAgIG11dGFibGUgUVJlYWRXcml0ZUxvY2sg bVN1cmZhY2VMb2NrOworLQorICAgICBmcmllbmQgY2xhc3MgUVdheWxhbmRTdWJTdXJmYWNlOwor IH07CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlv bi9xd2F5bGFuZHNoZWxsaW50ZWdyYXRpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hl bGxpbnRlZ3JhdGlvbi9xd2F5bGFuZHNoZWxsaW50ZWdyYXRpb25fcC5oCitpbmRleCBjY2FkMDA0 OC4uNGNjOWIzYjggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9zaGVsbGludGVn cmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3NoZWxsaW50ZWdyYXRpb24vcXdheWxhbmRzaGVsbGludGVncmF0aW9uX3AuaAorQEAg LTczLDExICs3MywxMCBAQCBwdWJsaWM6CisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgfQor ICAgICB2aXJ0dWFsIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpjcmVhdGVTaGVsbFN1cmZhY2UoUVdh eWxhbmRXaW5kb3cgKndpbmRvdykgPSAwOworKyAgICAvLyBrZXB0IGZvciBiaW5hcnkgY29tcGF0 IHdpdGggbGF5ZXItc2hlbGwtcXQKKyAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWJvYXJkRm9j dXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZv Y3VzKSB7CistICAgICAgICBpZiAobmV3Rm9jdXMpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5o YW5kbGVXaW5kb3dBY3RpdmF0ZWQobmV3Rm9jdXMpOworLSAgICAgICAgaWYgKG9sZEZvY3VzKQor LSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQob2xkRm9jdXMp OworKyAgICAgICAgUV9VTlVTRUQobmV3Rm9jdXMpOworKyAgICAgICAgUV9VTlVTRUQob2xkRm9j dXMpOworICAgICB9CisgICAgIHZpcnR1YWwgdm9pZCAqbmF0aXZlUmVzb3VyY2VGb3JXaW5kb3co Y29uc3QgUUJ5dGVBcnJheSAmcmVzb3VyY2UsIFFXaW5kb3cgKndpbmRvdykgeworICAgICAgICAg UV9VTlVTRUQocmVzb3VyY2UpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY29tcG9zaXRv ci9jb25maWd1cmUuanNvbiBiL3F0d2F5bGFuZC9zcmMvY29tcG9zaXRvci9jb25maWd1cmUuanNv bgoraW5kZXggYmNmZDUyMTUuLmRhOTVkMDdiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9j b21wb3NpdG9yL2NvbmZpZ3VyZS5qc29uCisrKysgYi9xdHdheWxhbmQvc3JjL2NvbXBvc2l0b3Iv Y29uZmlndXJlLmpzb24KK0BAIC03LDYgKzcsMzEgQEAKKyAgICAgInRlc3REaXIiOiAiLi4vLi4v Y29uZmlnLnRlc3RzIiwKKyAKKyAgICAgImxpYnJhcmllcyI6IHsKKysgICAgICAgICJ3YXlsYW5k LWNsaWVudCI6IHsKKysgICAgICAgICAgICAibGFiZWwiOiAiV2F5bGFuZCBjbGllbnQgbGlicmFy eSIsCisrICAgICAgICAgICAgImhlYWRlcnMiOiAid2F5bGFuZC12ZXJzaW9uLmgiLAorKyAgICAg ICAgICAgICJ0ZXN0IjogeworKyAgICAgICAgICAgICAgICAibWFpbiI6IFsKKysgICAgICAgICAg ICAgICAgICAgICIjaWYgV0FZTEFORF9WRVJTSU9OX01BSk9SIDwgMSIsCisrICAgICAgICAgICAg ICAgICAgICAiIyBlcnJvciBXYXlsYW5kIDEuOC4wIG9yIGhpZ2hlciByZXF1aXJlZCIsCisrICAg ICAgICAgICAgICAgICAgICAiI2VuZGlmIiwKKysgICAgICAgICAgICAgICAgICAgICIjaWYgV0FZ TEFORF9WRVJTSU9OX01BSk9SID09IDEiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgaWYgV0FZ TEFORF9WRVJTSU9OX01JTk9SIDwgOCIsCisrICAgICAgICAgICAgICAgICAgICAiIyAgZXJyb3Ig V2F5bGFuZCAxLjguMCBvciBoaWdoZXIgcmVxdWlyZWQiLAorKyAgICAgICAgICAgICAgICAgICAg IiMgZW5kaWYiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgaWYgV0FZTEFORF9WRVJTSU9OX01J Tk9SID09IDgiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgIGlmIFdBWUxBTkRfVkVSU0lPTl9N SUNSTyA8IDAiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgICBlcnJvciBXYXlsYW5kIDEuOC4w IG9yIGhpZ2hlciByZXF1aXJlZCIsCisrICAgICAgICAgICAgICAgICAgICAiIyAgZW5kaWYiLAor KyAgICAgICAgICAgICAgICAgICAgIiMgZW5kaWYiLAorKyAgICAgICAgICAgICAgICAgICAgIiNl bmRpZiIKKysgICAgICAgICAgICAgICAgIF0KKysgICAgICAgICAgICB9LAorKyAgICAgICAgICAg ICJzb3VyY2VzIjogWworKyAgICAgICAgICAgICAgICB7ICJ0eXBlIjogInBrZ0NvbmZpZyIsICJh cmdzIjogIndheWxhbmQtY2xpZW50IiB9LAorKyAgICAgICAgICAgICAgICAiLWx3YXlsYW5kLWNs aWVudCIKKysgICAgICAgICAgICBdCisrICAgICAgICB9LAorICAgICAgICAgIndheWxhbmQtc2Vy dmVyIjogeworICAgICAgICAgICAgICJsYWJlbCI6ICJ3YXlsYW5kLXNlcnZlciIsCisgICAgICAg ICAgICAgImhlYWRlcnMiOiAid2F5bGFuZC12ZXJzaW9uLmgiLAorQEAgLTE1MSw4ICsxNzYsNyBA QAorICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZiIKKyAgICAgICAgICAgICAgICAgXQorICAg ICAgICAgICAgIH0sCistICAgICAgICAgICAgImxpYnMiOiAiLWxkcm0iLAorLSAgICAgICAgICAg ICJ1c2UiOiAiZWdsIgorKyAgICAgICAgICAgICJ1c2UiOiAiZHJtIGVnbCIKKyAgICAgICAgIH0s CisgICAgICAgICAiZG1hYnVmLWNsaWVudC1idWZmZXIiOiB7CisgICAgICAgICAgICAgImxhYmVs IjogIkxpbnV4IENsaWVudCBkbWEtYnVmIEJ1ZmZlciBTaGFyaW5nIiwKK0BAIC0xNzYsOCArMjAw LDcgQEAKKyAgICAgICAgICAgICAgICAgICAgICJyZXR1cm4gMDsiCisgICAgICAgICAgICAgICAg IF0KKyAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICJsaWJzIjogIi1sZHJtIiwKKy0gICAg ICAgICAgICAidXNlIjogImVnbCIKKysgICAgICAgICAgICAidXNlIjogImRybSBlZ2wiCisgICAg ICAgICB9LAorICAgICAgICAgInZ1bGthbi1zZXJ2ZXItYnVmZmVyIjogeworICAgICAgICAgICAg ICJsYWJlbCI6ICJWdWxrYW4gQnVmZmVyIFNoYXJpbmciLAorQEAgLTE5NSw3ICsyMTgsOCBAQAor ICAgICAgICAgICAgICAgICAgICAgImV4cG9ydEFsbG9jSW5mby5oYW5kbGVUeXBlcyA9IFZLX0VY VEVSTkFMX01FTU9SWV9IQU5ETEVfVFlQRV9PUEFRVUVfRkRfQklUX0tIUjsiLAorICAgICAgICAg ICAgICAgICAgICAgInJldHVybiAwOyIKKyAgICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAg IH0KKysgICAgICAgICAgICB9LAorKyAgICAgICAgICAgICJ1c2UiOiAid2F5bGFuZC1jbGllbnQi CisgICAgICAgICB9CisgICAgIH0sCisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9oYXJk d2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5jcHAg Yi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3 YXlsYW5kZWdsd2luZG93LmNwcAoraW5kZXggNzg4OWY1NzUuLjY0MTQwNjcyIDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9x d2F5bGFuZGVnbHdpbmRvdy5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3Jh dGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuY3BwCitAQCAtNDAsNiAr NDAsNyBAQAorICNpbmNsdWRlICJxd2F5bGFuZGVnbHdpbmRvdy5oIgorIAorICNpbmNsdWRlIDxR dFdheWxhbmRDbGllbnQvcHJpdmF0ZS9xd2F5bGFuZHNjcmVlbl9wLmg+CisrI2luY2x1ZGUgPFF0 V2F5bGFuZENsaWVudC9wcml2YXRlL3F3YXlsYW5kc3VyZmFjZV9wLmg+CisgI2luY2x1ZGUgInF3 YXlsYW5kZ2xjb250ZXh0LmgiCisgCisgI2luY2x1ZGUgPFF0RWdsU3VwcG9ydC9wcml2YXRlL3Fl Z2xjb252ZW5pZW5jZV9wLmg+CitAQCAtMTI0LDYgKzEyNSw3IEBAIHZvaWQgUVdheWxhbmRFZ2xX aW5kb3c6OnVwZGF0ZVN1cmZhY2UoYm9vbCBjcmVhdGUpCisgICAgICAgICB9CisgICAgICAgICBt T2Zmc2V0ID0gUVBvaW50KCk7CisgICAgIH0gZWxzZSB7CisrICAgICAgICBRUmVhZExvY2tlciBs b2NrZXIoJm1TdXJmYWNlTG9jayk7CisgICAgICAgICBpZiAobV93YXlsYW5kRWdsV2luZG93KSB7 CisgICAgICAgICAgICAgaW50IGN1cnJlbnRfd2lkdGgsIGN1cnJlbnRfaGVpZ2h0OworICAgICAg ICAgICAgIHN0YXRpYyBib29sIGRpc2FibGVSZXNpemVDaGVjayA9IHFnZXRlbnYoIlFUX1dBWUxB TkRfRElTQUJMRV9SRVNJWkVDSEVDSyIpLnRvSW50KCk7CitAQCAtMTMxLDE0ICsxMzMsMTYgQEAg dm9pZCBRV2F5bGFuZEVnbFdpbmRvdzo6dXBkYXRlU3VyZmFjZShib29sIGNyZWF0ZSkKKyAgICAg ICAgICAgICBpZiAoIWRpc2FibGVSZXNpemVDaGVjaykgeworICAgICAgICAgICAgICAgICB3bF9l Z2xfd2luZG93X2dldF9hdHRhY2hlZF9zaXplKG1fd2F5bGFuZEVnbFdpbmRvdywgJmN1cnJlbnRf d2lkdGgsICZjdXJyZW50X2hlaWdodCk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGlm IChkaXNhYmxlUmVzaXplQ2hlY2sgfHwgKGN1cnJlbnRfd2lkdGggIT0gc2l6ZVdpdGhNYXJnaW5z LndpZHRoKCkgfHwgY3VycmVudF9oZWlnaHQgIT0gc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKSkg eworKyAgICAgICAgICAgIGlmIChkaXNhYmxlUmVzaXplQ2hlY2sgfHwgKGN1cnJlbnRfd2lkdGgg IT0gc2l6ZVdpdGhNYXJnaW5zLndpZHRoKCkgfHwgY3VycmVudF9oZWlnaHQgIT0gc2l6ZVdpdGhN YXJnaW5zLmhlaWdodCgpKSB8fCBtX3JlcXVlc3RlZFNpemUgIT0gc2l6ZVdpdGhNYXJnaW5zKSB7 CisgICAgICAgICAgICAgICAgIHdsX2VnbF93aW5kb3dfcmVzaXplKG1fd2F5bGFuZEVnbFdpbmRv dywgc2l6ZVdpdGhNYXJnaW5zLndpZHRoKCksIHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSwgbU9m ZnNldC54KCksIG1PZmZzZXQueSgpKTsKKysgICAgICAgICAgICAgICAgbV9yZXF1ZXN0ZWRTaXpl ID0gc2l6ZVdpdGhNYXJnaW5zOworICAgICAgICAgICAgICAgICBtT2Zmc2V0ID0gUVBvaW50KCk7 CisgCisgICAgICAgICAgICAgICAgIG1fcmVzaXplID0gdHJ1ZTsKKyAgICAgICAgICAgICB9Cist ICAgICAgICB9IGVsc2UgaWYgKGNyZWF0ZSAmJiB3bFN1cmZhY2UoKSkgeworLSAgICAgICAgICAg IG1fd2F5bGFuZEVnbFdpbmRvdyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKHdsU3VyZmFjZSgpLCBz aXplV2l0aE1hcmdpbnMud2lkdGgoKSwgc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKTsKKysgICAg ICAgIH0gZWxzZSBpZiAoY3JlYXRlICYmIG1TdXJmYWNlKSB7CisrICAgICAgICAgICAgbV93YXls YW5kRWdsV2luZG93ID0gd2xfZWdsX3dpbmRvd19jcmVhdGUobVN1cmZhY2UtPm9iamVjdCgpLCBz aXplV2l0aE1hcmdpbnMud2lkdGgoKSwgc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKTsKKysgICAg ICAgICAgICBtX3JlcXVlc3RlZFNpemUgPSBzaXplV2l0aE1hcmdpbnM7CisgICAgICAgICB9Cisg CisgICAgICAgICBpZiAoIW1fZWdsU3VyZmFjZSAmJiBtX3dheWxhbmRFZ2xXaW5kb3cgJiYgY3Jl YXRlKSB7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2Ns aWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5oIGIvcXR3YXlsYW5kL3NyYy9oYXJk d2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5oCitp bmRleCA1YjFmNGQ1Ni4uMDA3OWRmZWYgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2hhcmR3 YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmgKKysr KyBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wv cXdheWxhbmRlZ2x3aW5kb3cuaAorQEAgLTg4LDYgKzg4LDcgQEAgcHJpdmF0ZToKKyAgICAgbXV0 YWJsZSBRT3BlbkdMRnJhbWVidWZmZXJPYmplY3QgKm1fY29udGVudEZCTyA9IG51bGxwdHI7Cisg CisgICAgIFFTdXJmYWNlRm9ybWF0IG1fZm9ybWF0OworKyAgICBRU2l6ZSBtX3JlcXVlc3RlZFNp emU7CisgfTsKKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVn cmF0aW9uL2NvbXBvc2l0b3IvbGludXgtZG1hYnVmLXVuc3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmgg Yi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFi dWYtdW5zdGFibGUtdjEvbGludXhkbWFidWYuaAoraW5kZXggNTZhNzEwYzMuLmM2YThiNmM2IDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3Iv bGludXgtZG1hYnVmLXVuc3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmgKKysrKyBiL3F0d2F5bGFuZC9z cmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jb21wb3NpdG9yL2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12 MS9saW51eGRtYWJ1Zi5oCitAQCAtNDEsNiArNDEsOCBAQAorICNpbmNsdWRlIDxRdENvcmUvUVRl eHRTdHJlYW0+CisgI2luY2x1ZGUgPFF0R3VpL1FPcGVuR0xUZXh0dXJlPgorIAorKyNpbmNsdWRl IDxhcnJheT4KKysKKyAjaW5jbHVkZSA8RUdML2VnbC5oPgorICNpbmNsdWRlIDxFR0wvZWdsZXh0 Lmg+CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2Jy YWRpZW50L21haW4uY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRp ZW50L21haW4uY3BwCitpbmRleCBlNzVmZGEzYy4uZmE4ODUxNDMgMTAwNjQ0CistLS0gYS9xdHdh eWxhbmQvc3JjL3BsdWdpbnMvZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAKKysrKyBiL3F0 d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNvcmF0aW9ucy9icmFkaWVudC9tYWluLmNwcAorQEAgLTE2 NCwxMyArMTY0LDEwIEBAIHZvaWQgUVdheWxhbmRCcmFkaWVudERlY29yYXRpb246OnBhaW50KFFQ YWludERldmljZSAqZGV2aWNlKQorICAgICAvLyBXaW5kb3cgaWNvbgorICAgICBRSWNvbiBpY29u ID0gd2F5bGFuZFdpbmRvdygpLT53aW5kb3dJY29uKCk7CisgICAgIGlmICghaWNvbi5pc051bGwo KSkgeworLSAgICAgICAgUVBpeG1hcCBwaXhtYXAgPSBpY29uLnBpeG1hcChRU2l6ZSgxMjgsIDEy OCkpOworLSAgICAgICAgUVBpeG1hcCBzY2FsZWQgPSBwaXhtYXAuc2NhbGVkKDIyLCAyMiwgUXQ6 Oklnbm9yZUFzcGVjdFJhdGlvLCBRdDo6U21vb3RoVHJhbnNmb3JtYXRpb24pOworLQorICAgICAg ICAgUVJlY3RGIGljb25SZWN0KDAsIDAsIDIyLCAyMik7CistICAgICAgICBwLmRyYXdQaXhtYXAo aWNvblJlY3QuYWRqdXN0ZWQobWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0LAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbnMoKS5sZWZ0KCkg KyBCVVRUT05fU1BBQ0lORywgNCksCistICAgICAgICAgICAgICAgICAgICAgc2NhbGVkLCBpY29u UmVjdCk7CisrICAgICAgICBpY29uUmVjdC5hZGp1c3QobWFyZ2lucygpLmxlZnQoKSArIEJVVFRP Tl9TUEFDSU5HLCA0LAorKyAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbnMoKS5sZWZ0KCkg KyBCVVRUT05fU1BBQ0lORywgNCksCisrICAgICAgICBpY29uLnBhaW50KCZwLCBpY29uUmVjdC50 b1JlY3QoKSk7CisgICAgIH0KKyAKKyAgICAgLy8gV2luZG93IHRpdGxlCitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXls YW5keGRncG9wdXB2NS5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlv bi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1LmNwcAoraW5kZXggODVkMjVlM2MuLjYw YmRkNDkxIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NS5jcHAKKysrKyBiL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVw djUuY3BwCitAQCAtNDcsMTggKzQ3LDIxIEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIG5hbWVz cGFjZSBRdFdheWxhbmRDbGllbnQgeworIAorLVFXYXlsYW5kWGRnUG9wdXBWNTo6UVdheWxhbmRY ZGdQb3B1cFY1KHN0cnVjdCA6OnhkZ19wb3B1cF92NSAqcG9wdXAsIFFXYXlsYW5kV2luZG93ICp3 aW5kb3cpCisrUVdheWxhbmRYZGdQb3B1cFY1OjpRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6 eGRnX3BvcHVwX3Y1ICpwb3B1cCwgUVdheWxhbmRXaW5kb3cqIHBhcmVudCwgUVdheWxhbmRXaW5k b3cgKndpbmRvdykKKyAgICAgOiBRV2F5bGFuZFNoZWxsU3VyZmFjZSh3aW5kb3cpCisgICAgICwg UXRXYXlsYW5kOjp4ZGdfcG9wdXBfdjUocG9wdXApCisrICAgICwgbV9wYXJlbnQocGFyZW50KQor ICAgICAsIG1fd2luZG93KHdpbmRvdykKKyB7CisgICAgIGlmICh3aW5kb3ctPmRpc3BsYXkoKS0+ d2luZG93RXh0ZW5zaW9uKCkpCisgICAgICAgICBtX2V4dGVuZGVkV2luZG93ID0gbmV3IFFXYXls YW5kRXh0ZW5kZWRTdXJmYWNlKHdpbmRvdyk7CisrICAgIG1fcGFyZW50LT5hZGRDaGlsZFBvcHVw KG1fd2luZG93KTsKKyB9CisgCisgUVdheWxhbmRYZGdQb3B1cFY1Ojp+UVdheWxhbmRYZGdQb3B1 cFY1KCkKKyB7CisgICAgIHhkZ19wb3B1cF9kZXN0cm95KG9iamVjdCgpKTsKKysgICAgbV9wYXJl bnQtPnJlbW92ZUNoaWxkUG9wdXAobV93aW5kb3cpOworICAgICBkZWxldGUgbV9leHRlbmRlZFdp bmRvdzsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50 ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NV9wLmggYi9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1 cHY1X3AuaAoraW5kZXggNzQ5NGY2YTYuLmQ4NWYxMzBiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5k L3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9w dXB2NV9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hk Zy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjVfcC5oCitAQCAtNzAsNyArNzAsNyBAQCBjbGFz cyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZFhkZ1BvcHVwVjUgOiBwdWJsaWMgUVdh eWxhbmRTaGVsbFN1cmZhY2UKKyB7CisgICAgIFFfT0JKRUNUCisgcHVibGljOgorLSAgICBRV2F5 bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6eGRnX3BvcHVwX3Y1ICpwb3B1cCwgUVdheWxhbmRXaW5k b3cgKndpbmRvdyk7CisrICAgIFFXYXlsYW5kWGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBf djUgKnBvcHVwLCBRV2F5bGFuZFdpbmRvdyogcGFyZW50LCBRV2F5bGFuZFdpbmRvdyAqd2luZG93 KTsKKyAgICAgflFXYXlsYW5kWGRnUG9wdXBWNSgpIG92ZXJyaWRlOworIAorIHByb3RlY3RlZDoK K0BAIC03OCw2ICs3OCw3IEBAIHByb3RlY3RlZDoKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFu ZEV4dGVuZGVkU3VyZmFjZSAqbV9leHRlbmRlZFdpbmRvdyA9IG51bGxwdHI7CisrICAgIFFXYXls YW5kV2luZG93ICptX3BhcmVudCA9IG51bGxwdHI7CisgICAgIFFXYXlsYW5kV2luZG93ICptX3dp bmRvdyA9IG51bGxwdHI7CisgfTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1LmNwcCBi L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5 bGFuZHhkZ3NoZWxsdjUuY3BwCitpbmRleCA3ZTI0MmM0YS4uZGVmODQ1MmEgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdh eWxhbmR4ZGdzaGVsbHY1LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50 ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NS5jcHAKK0BAIC04NCw3ICs4 NCw3IEBAIFFXYXlsYW5kWGRnUG9wdXBWNSAqUVdheWxhbmRYZGdTaGVsbFY1OjpjcmVhdGVYZGdQ b3B1cChRV2F5bGFuZFdpbmRvdyAqd2luZG93LCBRCisgICAgIGludCB4ID0gcG9zaXRpb24ueCgp ICsgcGFyZW50V2luZG93LT5mcmFtZU1hcmdpbnMoKS5sZWZ0KCk7CisgICAgIGludCB5ID0gcG9z aXRpb24ueSgpICsgcGFyZW50V2luZG93LT5mcmFtZU1hcmdpbnMoKS50b3AoKTsKKyAKKy0gICAg YXV0byBwb3B1cCA9IG5ldyBRV2F5bGFuZFhkZ1BvcHVwVjUoZ2V0X3hkZ19wb3B1cCh3aW5kb3ct PndsU3VyZmFjZSgpLCBwYXJlbnRTdXJmYWNlLCBzZWF0LCBtX3BvcHVwU2VyaWFsLCB4LCB5KSwg d2luZG93KTsKKysgICAgYXV0byBwb3B1cCA9IG5ldyBRV2F5bGFuZFhkZ1BvcHVwVjUoZ2V0X3hk Z19wb3B1cCh3aW5kb3ctPndsU3VyZmFjZSgpLCBwYXJlbnRTdXJmYWNlLCBzZWF0LCBtX3BvcHVw U2VyaWFsLCB4LCB5KSwgcGFyZW50V2luZG93LCB3aW5kb3cpOworICAgICBtX3BvcHVwcy5hcHBl bmQod2luZG93KTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChwb3B1cCwgJlFXYXlsYW5kWGRnUG9w dXBWNTo6ZGVzdHJveWVkLCBbdGhpcywgd2luZG93XSgpeworICAgICAgICAgbV9wb3B1cHMucmVt b3ZlT25lKHdpbmRvdyk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNw cCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9x d2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbi5jcHAKK2luZGV4IDRlMjU5NDlmLi5jZmM2MDkz OSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hk Zy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5 bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhk Z3NoZWxsdjVpbnRlZ3JhdGlvbi5jcHAKK0BAIC04NSwxMyArODUsNiBAQCBRV2F5bGFuZFNoZWxs U3VyZmFjZSAqUVdheWxhbmRYZGdTaGVsbFY1SW50ZWdyYXRpb246OmNyZWF0ZVNoZWxsU3VyZmFj ZShRV2F5bGFuZAorICAgICByZXR1cm4gbV94ZGdTaGVsbC0+Y3JlYXRlWGRnU3VyZmFjZSh3aW5k b3cpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kWGRnU2hlbGxWNUludGVncmF0aW9uOjpoYW5kbGVL ZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2lu ZG93ICpvbGRGb2N1cykgeworLSAgICBpZiAobmV3Rm9jdXMgJiYgcW9iamVjdF9jYXN0PFFXYXls YW5kWGRnUG9wdXBWNSAqPihuZXdGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKQorLSAgICAgICAgbV9k aXNwbGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0ZWQobmV3Rm9jdXMpOworLSAgICBpZiAob2xkRm9j dXMgJiYgcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnUG9wdXBWNSAqPihvbGRGb2N1cy0+c2hlbGxT dXJmYWNlKCkpKQorLSAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChv bGRGb2N1cyk7CistfQorLQorIH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXls YW5keGRnc2hlbGx2NWludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9w LmgKK2luZGV4IGNlNmJkYjllLi5hZWQ4ODY3MCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMv cGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVp bnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmgKK0BAIC02 Nyw3ICs2Nyw2IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRYZGdTaGVsbFY1SW50ZWdyYXRpb24o KSB7fQorICAgICBib29sIGluaXRpYWxpemUoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KSBvdmVy cmlkZTsKKyAgICAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5 bGFuZFdpbmRvdyAqd2luZG93KSBvdmVycmlkZTsKKy0gICAgdm9pZCBoYW5kbGVLZXlib2FyZEZv Y3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRG b2N1cykgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxh bmRYZGdTaGVsbFY1PiBtX3hkZ1NoZWxsOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjYuY3Bw IGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3 YXlsYW5keGRnc2hlbGx2Ni5jcHAKK2luZGV4IDhjMzcxNjYxLi4xNTFjNzhlMyAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9x d2F5bGFuZHhkZ3NoZWxsdjYuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxp bnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2LmNwcAorQEAgLTE3NCw2 ICsxNzQsNyBAQCBRV2F5bGFuZFhkZ1N1cmZhY2VWNjo6UG9wdXA6OlBvcHVwKFFXYXlsYW5kWGRn U3VyZmFjZVY2ICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFhkZworICAgICAsIG1feGRnU3VyZmFjZSh4 ZGdTdXJmYWNlKQorICAgICAsIG1fcGFyZW50KHBhcmVudCkKKyB7CisrICAgIG1fcGFyZW50LT53 aW5kb3coKS0+YWRkQ2hpbGRQb3B1cChtX3hkZ1N1cmZhY2UtPndpbmRvdygpKTsKKyB9CisgCisg UVdheWxhbmRYZGdTdXJmYWNlVjY6OlBvcHVwOjp+UG9wdXAoKQorQEAgLTE4MSw2ICsxODIsOCBA QCBRV2F5bGFuZFhkZ1N1cmZhY2VWNjo6UG9wdXA6On5Qb3B1cCgpCisgICAgIGlmIChpc0luaXRp YWxpemVkKCkpCisgICAgICAgICBkZXN0cm95KCk7CisgCisrICAgIG1fcGFyZW50LT53aW5kb3co KS0+cmVtb3ZlQ2hpbGRQb3B1cChtX3hkZ1N1cmZhY2UtPndpbmRvdygpKTsKKysKKyAgICAgaWYg KG1fZ3JhYmJpbmcpIHsKKyAgICAgICAgIGF1dG8gKnNoZWxsID0gbV94ZGdTdXJmYWNlLT5tX3No ZWxsOworICAgICAgICAgUV9BU1NFUlQoc2hlbGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPT0g dGhpcyk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcCBiL3F0d2F5 bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhk Z3NoZWxsdjZpbnRlZ3JhdGlvbi5jcHAKK2luZGV4IDAzMTY0MzE2Li5lOGRhOGJhMSAxMDA2NDQK Ky0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12 Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMv cGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZp bnRlZ3JhdGlvbi5jcHAKK0BAIC02OCwyMCArNjgsNiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAq UVdheWxhbmRYZGdTaGVsbFY2SW50ZWdyYXRpb246OmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFu ZAorICAgICByZXR1cm4gbV94ZGdTaGVsbC0+Z2V0WGRnU3VyZmFjZSh3aW5kb3cpOworIH0KKyAK Ky12b2lkIFFXYXlsYW5kWGRnU2hlbGxWNkludGVncmF0aW9uOjpoYW5kbGVLZXlib2FyZEZvY3Vz Q2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1 cykKKy17CistICAgIGlmIChuZXdGb2N1cykgeworLSAgICAgICAgYXV0byAqeGRnU3VyZmFjZSA9 IHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2VWNiAqPihuZXdGb2N1cy0+c2hlbGxTdXJm YWNlKCkpOworLSAgICAgICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNB Y3RpdmVTdGF0ZSgpKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93QWN0aXZh dGVkKG5ld0ZvY3VzKTsKKy0gICAgfQorLSAgICBpZiAob2xkRm9jdXMgJiYgcW9iamVjdF9jYXN0 PFFXYXlsYW5kWGRnU3VyZmFjZVY2ICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpIHsKKy0g ICAgICAgIGF1dG8gKnhkZ1N1cmZhY2UgPSBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNl VjYgKj4ob2xkRm9jdXMtPnNoZWxsU3VyZmFjZSgpKTsKKy0gICAgICAgIGlmICh4ZGdTdXJmYWNl ICYmICF4ZGdTdXJmYWNlLT5oYW5kbGVzQWN0aXZlU3RhdGUoKSkKKy0gICAgICAgICAgICBtX2Rp c3BsYXktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG9sZEZvY3VzKTsKKy0gICAgfQorLX0KKy0K KyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRl Z3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGct c2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb25fcC5oCitpbmRleCAyNjFmOGNi Yi4uYzFiY2Q1YzYgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRl Z3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb25fcC5oCisr KysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYv cXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb25fcC5oCitAQCAtNjUsNyArNjUsNiBAQCBwdWJs aWM6CisgICAgIFFXYXlsYW5kWGRnU2hlbGxWNkludGVncmF0aW9uKCkge30KKyAgICAgYm9vbCBp bml0aWFsaXplKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CisgICAgIFFXYXls YW5kU2hlbGxTdXJmYWNlICpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaW5kb3cgKndpbmRv dykgb3ZlcnJpZGU7CistICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxh bmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpIG92ZXJyaWRlOwor IAorIHByaXZhdGU6CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kWGRnU2hlbGxWNj4gbV94 ZGdTaGVsbDsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3Jh dGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbC5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbC5jcHAKK2luZGV4 IGYzZTNjMzMwLi5mYTZkNTgwOCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsLmNwcAorKysrIGIvcXR3 YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRn c2hlbGwuY3BwCitAQCAtNjcsMTEgKzY3LDYgQEAgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZl bDo6VG9wbGV2ZWwoUVdheWxhbmRYZGdTdXJmYWNlICp4ZGdTdXJmYWNlKQorIAorIFFXYXlsYW5k WGRnU3VyZmFjZTo6VG9wbGV2ZWw6On5Ub3BsZXZlbCgpCisgeworLSAgICBpZiAobV9hcHBsaWVk LnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpIHsKKy0gICAgICAgIFFXYXlsYW5kV2luZG93ICp3 aW5kb3cgPSBtX3hkZ1N1cmZhY2UtPndpbmRvdygpOworLSAgICAgICAgd2luZG93LT5kaXNwbGF5 KCktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKHdpbmRvdyk7CistICAgIH0KKy0KKyAgICAgLy8g VGhlIHByb3RvY29sIHNwZWMgcmVxdWlyZXMgdGhhdCB0aGUgZGVjb3JhdGlvbiBvYmplY3QgaXMg ZGVsZXRlZCBiZWZvcmUgeGRnX3RvcGxldmVsLgorICAgICBkZWxldGUgbV9kZWNvcmF0aW9uOwor ICAgICBtX2RlY29yYXRpb24gPSBudWxscHRyOworQEAgLTg1LDE2ICs4MCwxNSBAQCB2b2lkIFFX YXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2ZWw6OmFwcGx5Q29uZmlndXJlKCkKKyAgICAgaWYgKCEo bV9hcHBsaWVkLnN0YXRlcyAmIChRdDo6V2luZG93TWF4aW1pemVkfFF0OjpXaW5kb3dGdWxsU2Ny ZWVuKSkpCisgICAgICAgICBtX25vcm1hbFNpemUgPSBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT53 aW5kb3dGcmFtZUdlb21ldHJ5KCkuc2l6ZSgpOworIAorLSAgICBpZiAoKG1fcGVuZGluZy5zdGF0 ZXMgJiBRdDo6V2luZG93QWN0aXZlKSAmJiAhKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93 QWN0aXZlKSkKKysgICAgaWYgKChtX3BlbmRpbmcuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkg JiYgIShtX2FwcGxpZWQuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkKKysgICAgICAgICYmICFt X3hkZ1N1cmZhY2UtPm1fd2luZG93LT5kaXNwbGF5KCktPmlzS2V5Ym9hcmRBdmFpbGFibGUoKSkK KyAgICAgICAgIG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmRpc3BsYXkoKS0+aGFuZGxlV2luZG93 QWN0aXZhdGVkKG1feGRnU3VyZmFjZS0+bV93aW5kb3cpOworIAorLSAgICBpZiAoIShtX3BlbmRp bmcuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgJiYgKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6 V2luZG93QWN0aXZlKSkKKysgICAgaWYgKCEobV9wZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dB Y3RpdmUpICYmIChtX2FwcGxpZWQuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkKKysgICAgICAg ICYmICFtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5kaXNwbGF5KCktPmlzS2V5Ym9hcmRBdmFpbGFi bGUoKSkKKyAgICAgICAgIG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmRpc3BsYXkoKS0+aGFuZGxl V2luZG93RGVhY3RpdmF0ZWQobV94ZGdTdXJmYWNlLT5tX3dpbmRvdyk7CisgCistICAgIC8vIFRP RE86IG5vbmUgb2YgdGhlIG90aGVyIHBsdWdpbnMgc2VuZCBXaW5kb3dBY3RpdmUgZWl0aGVyLCBi dXQgaXMgaXQgb24gcHVycG9zZT8KKy0gICAgUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXNXaXRob3V0 QWN0aXZlID0gbV9wZW5kaW5nLnN0YXRlcyAmIH5RdDo6V2luZG93QWN0aXZlOworLQorLSAgICBt X3hkZ1N1cmZhY2UtPm1fd2luZG93LT5oYW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKHN0YXRlc1dp dGhvdXRBY3RpdmUpOworKyAgICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5oYW5kbGVXaW5kb3dT dGF0ZXNDaGFuZ2VkKG1fcGVuZGluZy5zdGF0ZXMpOworIAorICAgICBpZiAobV9wZW5kaW5nLnNp emUuaXNFbXB0eSgpKSB7CisgICAgICAgICAvLyBBbiBlbXB0eSBzaXplIGluIHRoZSBjb25maWd1 cmUgbWVhbnMgaXQncyB1cCB0byB0aGUgY2xpZW50IHRvIGNob29zZSB0aGUgc2l6ZQorQEAgLTEw NSw4ICs5OSw2IEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6YXBwbHlDb25m aWd1cmUoKQorICAgICAgICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+cmVzaXplRnJvbUFwcGx5 Q29uZmlndXJlKG1fcGVuZGluZy5zaXplKTsKKyAgICAgfQorIAorLSAgICBtX3hkZ1N1cmZhY2Ut PnNldFNpemVIaW50cygpOworLQorICAgICBtX2FwcGxpZWQgPSBtX3BlbmRpbmc7CisgICAgIHFD RGVidWcobGNRcGFXYXlsYW5kKSA8PCAiQXBwbGllZCBwZW5kaW5nIHhkZ190b3BsZXZlbCBjb25m aWd1cmUgZXZlbnQ6IiA8PCBtX2FwcGxpZWQuc2l6ZSA8PCBtX2FwcGxpZWQuc3RhdGVzOworIH0K K0BAIC0yMDMsMTIgKzE5NSwxNyBAQCBRdFdheWxhbmQ6OnhkZ190b3BsZXZlbDo6cmVzaXplX2Vk Z2UgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6Y29udmVydFRvUmVzaQorICAgICAgICAg ICAgICAgICB8ICgoZWRnZXMgJiBRdDo6UmlnaHRFZGdlKSA/IHJlc2l6ZV9lZGdlX3JpZ2h0IDog MCkpOworIH0KKyAKKy1RV2F5bGFuZFhkZ1N1cmZhY2U6OlBvcHVwOjpQb3B1cChRV2F5bGFuZFhk Z1N1cmZhY2UgKnhkZ1N1cmZhY2UsIFFXYXlsYW5kWGRnU3VyZmFjZSAqcGFyZW50LAorK1FXYXls YW5kWGRnU3VyZmFjZTo6UG9wdXA6OlBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFj ZSwgUVdheWxhbmRXaW5kb3cgKnBhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyICpwb3NpdGlvbmVyKQorLSAgICA6IHhkZ19w b3B1cCh4ZGdTdXJmYWNlLT5nZXRfcG9wdXAocGFyZW50LT5vYmplY3QoKSwgcG9zaXRpb25lci0+ b2JqZWN0KCkpKQorLSAgICAsIG1feGRnU3VyZmFjZSh4ZGdTdXJmYWNlKQorKyAgICA6IG1feGRn U3VyZmFjZSh4ZGdTdXJmYWNlKQorKyAgICAsIG1fcGFyZW50WGRnU3VyZmFjZShxb2JqZWN0X2Nh c3Q8UVdheWxhbmRYZGdTdXJmYWNlICo+KHBhcmVudC0+c2hlbGxTdXJmYWNlKCkpKQorICAgICAs IG1fcGFyZW50KHBhcmVudCkKKyB7CisrCisrICAgIGluaXQoeGRnU3VyZmFjZS0+Z2V0X3BvcHVw KG1fcGFyZW50WGRnU3VyZmFjZSA/IG1fcGFyZW50WGRnU3VyZmFjZS0+b2JqZWN0KCkgOiBudWxs cHRyLCBwb3NpdGlvbmVyLT5vYmplY3QoKSkpOworKyAgICBpZiAobV9wYXJlbnQpIHsKKysgICAg ICAgIG1fcGFyZW50LT5hZGRDaGlsZFBvcHVwKG1feGRnU3VyZmFjZS0+d2luZG93KCkpOworKyAg ICB9CisgfQorIAorIFFXYXlsYW5kWGRnU3VyZmFjZTo6UG9wdXA6On5Qb3B1cCgpCitAQCAtMjE2 LDEwICsyMTMsMjQgQEAgUVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1cDo6flBvcHVwKCkKKyAgICAg aWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgIGRlc3Ryb3koKTsKKyAKKysgICAgaWYgKG1f cGFyZW50KSB7CisrICAgICAgICBtX3BhcmVudC0+cmVtb3ZlQ2hpbGRQb3B1cChtX3hkZ1N1cmZh Y2UtPndpbmRvdygpKTsKKysgICAgfQorKworICAgICBpZiAobV9ncmFiYmluZykgeworICAgICAg ICAgYXV0byAqc2hlbGwgPSBtX3hkZ1N1cmZhY2UtPm1fc2hlbGw7CisgICAgICAgICBRX0FTU0VS VChzaGVsbC0+bV90b3Btb3N0R3JhYmJpbmdQb3B1cCA9PSB0aGlzKTsKKy0gICAgICAgIHNoZWxs LT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVwID0gbV9wYXJlbnQtPm1fcG9wdXA7CisrICAgICAgICBz aGVsbC0+bV90b3Btb3N0R3JhYmJpbmdQb3B1cCA9IG1fcGFyZW50WGRnU3VyZmFjZSA/IG1fcGFy ZW50WGRnU3VyZmFjZS0+bV9wb3B1cCA6IG51bGxwdHI7CisrICAgICAgICBtX2dyYWJiaW5nID0g ZmFsc2U7CisrCisrICAgICAgICAvLyBTeW50aGVzaXplIFF0IGVudGVyL2xlYXZlIGV2ZW50cyBm b3IgcG9wdXAKKysgICAgICAgIFFXaW5kb3cgKmxlYXZlID0gbnVsbHB0cjsKKysgICAgICAgIGlm IChtX3hkZ1N1cmZhY2UgJiYgbV94ZGdTdXJmYWNlLT53aW5kb3coKSkKKysgICAgICAgICAgICBs ZWF2ZSA9IG1feGRnU3VyZmFjZS0+d2luZG93KCktPndpbmRvdygpOworKyAgICAgICAgUVdpbmRv d1N5c3RlbUludGVyZmFjZTo6aGFuZGxlTGVhdmVFdmVudChsZWF2ZSk7CisrCisrICAgICAgICBp ZiAoUVdpbmRvdyAqZW50ZXIgPSBRR3VpQXBwbGljYXRpb246OnRvcExldmVsQXQoUUN1cnNvcjo6 cG9zKCkpKQorKyAgICAgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUVudGVy RXZlbnQoZW50ZXIsIGVudGVyLT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6OnBvcygpKSwgUUN1cnNv cjo6cG9zKCkpOworICAgICB9CisgfQorIAorQEAgLTI1Nyw2ICsyNjgsNyBAQCBRV2F5bGFuZFhk Z1N1cmZhY2U6OlFXYXlsYW5kWGRnU3VyZmFjZShRV2F5bGFuZFhkZ1NoZWxsICpzaGVsbCwgOjp4 ZGdfc3VyZmFjZSAqcworICAgICAgICAgICAgICAgICBtX3RvcGxldmVsLT5zZXRfcGFyZW50KHBh cmVudFhkZ1N1cmZhY2UtPm1fdG9wbGV2ZWwtPm9iamVjdCgpKTsKKyAgICAgICAgIH0KKyAgICAg fQorKyAgICBzZXRTaXplSGludHMoKTsKKyB9CisgCisgUVdheWxhbmRYZGdTdXJmYWNlOjp+UVdh eWxhbmRYZGdTdXJmYWNlKCkKK0BAIC00MDAsOCArNDEyLDYgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1 cmZhY2U6OnNldFBvcHVwKFFXYXlsYW5kV2luZG93ICpwYXJlbnQpCisgeworICAgICBRX0FTU0VS VCghbV90b3BsZXZlbCAmJiAhbV9wb3B1cCk7CisgCistICAgIGF1dG8gcGFyZW50WGRnU3VyZmFj ZSA9IHN0YXRpY19jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihwYXJlbnQtPnNoZWxsU3VyZmFj ZSgpKTsKKy0KKyAgICAgYXV0byBwb3NpdGlvbmVyID0gbmV3IFF0V2F5bGFuZDo6eGRnX3Bvc2l0 aW9uZXIobV9zaGVsbC0+Y3JlYXRlX3Bvc2l0aW9uZXIoKSk7CisgICAgIC8vIHNldF9wb3B1cCBl eHBlY3RzIGEgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIHBhcmVudAorICAgICBRUG9pbnQgdHJh bnNpZW50UG9zID0gbV93aW5kb3ctPmdlb21ldHJ5KCkudG9wTGVmdCgpOyAvLyB0aGlzIGlzIGFi c29sdXRlCitAQCAtNDE0LDggKzQyNCw5IEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpzZXRQ b3B1cChRV2F5bGFuZFdpbmRvdyAqcGFyZW50KQorICAgICBwb3NpdGlvbmVyLT5zZXRfYW5jaG9y KFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXI6OmFuY2hvcl90b3BfbGVmdCk7CisgICAgIHBvc2l0 aW9uZXItPnNldF9ncmF2aXR5KFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXI6OmdyYXZpdHlfYm90 dG9tX3JpZ2h0KTsKKyAgICAgcG9zaXRpb25lci0+c2V0X3NpemUobV93aW5kb3ctPmdlb21ldHJ5 KCkud2lkdGgoKSwgbV93aW5kb3ctPmdlb21ldHJ5KCkuaGVpZ2h0KCkpOworLSAgICBtX3BvcHVw ID0gbmV3IFBvcHVwKHRoaXMsIHBhcmVudFhkZ1N1cmZhY2UsIHBvc2l0aW9uZXIpOworKyAgICBt X3BvcHVwID0gbmV3IFBvcHVwKHRoaXMsIHBhcmVudCwgcG9zaXRpb25lcik7CisgICAgIHBvc2l0 aW9uZXItPmRlc3Ryb3koKTsKKysKKyAgICAgZGVsZXRlIHBvc2l0aW9uZXI7CisgfQorIAorQEAg LTQzNyw2ICs0NDgsMjMgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OnNldEdyYWJQb3B1cChR V2F5bGFuZFdpbmRvdyAqcGFyZW50LCBRV2F5bGFuZElucHV0RGV2aWMKKyAgICAgfQorICAgICBz ZXRQb3B1cChwYXJlbnQpOworICAgICBtX3BvcHVwLT5ncmFiKGRldmljZSwgc2VyaWFsKTsKKysK KysgICAgLy8gU3ludGhlc2l6ZSBRdCBlbnRlci9sZWF2ZSBldmVudHMgZm9yIHBvcHVwCisrICAg IGlmICghcGFyZW50KQorKyAgICAgICAgcmV0dXJuOworKyAgICBRV2luZG93ICpjdXJyZW50ID0g UUd1aUFwcGxpY2F0aW9uOjp0b3BMZXZlbEF0KFFDdXJzb3I6OnBvcygpKTsKKysgICAgUVdpbmRv dyAqbGVhdmUgPSBwYXJlbnQtPndpbmRvdygpOworKyAgICBpZiAoY3VycmVudCAhPSBsZWF2ZSkK KysgICAgICAgIHJldHVybjsKKysKKysgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxl TGVhdmVFdmVudChsZWF2ZSk7CisrCisrICAgIFFXaW5kb3cgKmVudGVyID0gbnVsbHB0cjsKKysg ICAgaWYgKG1fcG9wdXAgJiYgbV9wb3B1cC0+bV94ZGdTdXJmYWNlICYmIG1fcG9wdXAtPm1feGRn U3VyZmFjZS0+d2luZG93KCkpCisrICAgICAgICBlbnRlciA9IG1fcG9wdXAtPm1feGRnU3VyZmFj ZS0+d2luZG93KCktPndpbmRvdygpOworKworKyAgICBpZiAoZW50ZXIpCisrICAgICAgICBRV2lu ZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVFbnRlckV2ZW50KGVudGVyLCBlbnRlci0+bWFwRnJv bUdsb2JhbChRQ3Vyc29yOjpwb3MoKSksIFFDdXJzb3I6OnBvcygpKTsKKyB9CisgCisgdm9pZCBR V2F5bGFuZFhkZ1N1cmZhY2U6OnhkZ19zdXJmYWNlX2NvbmZpZ3VyZSh1aW50MzJfdCBzZXJpYWwp CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRn LXNoZWxsL3F3YXlsYW5keGRnc2hlbGxfcC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxfcC5oCitpbmRleCA5Njc4NTIw NS4uNGI1MThmMGEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRl Z3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbF9wLmgKKysrKyBiL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsX3Au aAorQEAgLTEzMSwxNCArMTMxLDE1IEBAIHByaXZhdGU6CisgCisgICAgIGNsYXNzIFBvcHVwIDog cHVibGljIFF0V2F5bGFuZDo6eGRnX3BvcHVwIHsKKyAgICAgcHVibGljOgorLSAgICAgICAgUG9w dXAoUVdheWxhbmRYZGdTdXJmYWNlICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFhkZ1N1cmZhY2UgKnBh cmVudCwgUXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lciAqcG9zaXRpb25lcik7CisrICAgICAgICBQ b3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZhY2UsIFFXYXlsYW5kV2luZG93ICpwYXJl bnQsIFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXIgKnBvc2l0aW9uZXIpOworICAgICAgICAgflBv cHVwKCkgb3ZlcnJpZGU7CisgCisgICAgICAgICB2b2lkIGdyYWIoUVdheWxhbmRJbnB1dERldmlj ZSAqc2VhdCwgdWludCBzZXJpYWwpOworICAgICAgICAgdm9pZCB4ZGdfcG9wdXBfcG9wdXBfZG9u ZSgpIG92ZXJyaWRlOworIAorICAgICAgICAgUVdheWxhbmRYZGdTdXJmYWNlICptX3hkZ1N1cmZh Y2UgPSBudWxscHRyOworLSAgICAgICAgUVdheWxhbmRYZGdTdXJmYWNlICptX3BhcmVudCA9IG51 bGxwdHI7CisrICAgICAgICBRV2F5bGFuZFhkZ1N1cmZhY2UgKm1fcGFyZW50WGRnU3VyZmFjZSA9 IG51bGxwdHI7CisrICAgICAgICBRV2F5bGFuZFdpbmRvdyAqbV9wYXJlbnQgPSBudWxscHRyOwor ICAgICAgICAgYm9vbCBtX2dyYWJiaW5nID0gZmFsc2U7CisgICAgIH07CisgCitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXls YW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxp bnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcAoraW5k ZXggODc2OWQ5NzEuLmRhMGRkNmE3IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5z L3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5j cHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVs bC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb24uY3BwCitAQCAtNjksMjAgKzY5LDYgQEAgUVdh eWxhbmRTaGVsbFN1cmZhY2UgKlFXYXlsYW5kWGRnU2hlbGxJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hl bGxTdXJmYWNlKFFXYXlsYW5kV2kKKyAgICAgcmV0dXJuIG1feGRnU2hlbGwtPmdldFhkZ1N1cmZh Y2Uod2luZG93KTsKKyB9CisgCistdm9pZCBRV2F5bGFuZFhkZ1NoZWxsSW50ZWdyYXRpb246Omhh bmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxh bmRXaW5kb3cgKm9sZEZvY3VzKQorLXsKKy0gICAgaWYgKG5ld0ZvY3VzKSB7CistICAgICAgICBh dXRvICp4ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihuZXdG b2N1cy0+c2hlbGxTdXJmYWNlKCkpOworLSAgICAgICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhkZ1N1 cmZhY2UtPmhhbmRsZXNBY3RpdmVTdGF0ZSgpKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFu ZGxlV2luZG93QWN0aXZhdGVkKG5ld0ZvY3VzKTsKKy0gICAgfQorLSAgICBpZiAob2xkRm9jdXMg JiYgcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihvbGRGb2N1cy0+c2hlbGxTdXJm YWNlKCkpKSB7CistICAgICAgICBhdXRvICp4ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXls YW5kWGRnU3VyZmFjZSAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpOworLSAgICAgICAgaWYg KHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNBY3RpdmVTdGF0ZSgpKQorLSAgICAg ICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQob2xkRm9jdXMpOworLSAg ICB9CistfQorLQorIH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXls YW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hl bGxpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlv bi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uX3AuaAoraW5kZXggYjZjYWE2 YzkuLjJmOTI5Zjk4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50 ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmgKKysrKyBi L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFu ZHhkZ3NoZWxsaW50ZWdyYXRpb25fcC5oCitAQCAtNjUsNyArNjUsNiBAQCBwdWJsaWM6CisgICAg IFFXYXlsYW5kWGRnU2hlbGxJbnRlZ3JhdGlvbigpIHt9CisgICAgIGJvb2wgaW5pdGlhbGl6ZShR V2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOworICAgICBRV2F5bGFuZFNoZWxsU3Vy ZmFjZSAqY3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kV2luZG93ICp3aW5kb3cpIG92ZXJyaWRl OworLSAgICB2b2lkIGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpu ZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSBvdmVycmlkZTsKKyAKKyBwcml2YXRl OgorICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFuZFhkZ1NoZWxsPiBtX3hkZ1NoZWxsOworZGlm ZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1 aWxkZXIuY3BwIGIvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50 YnVpbGRlci5jcHAKK2luZGV4IDUyNmQwZWY0Li5mNTBjY2YzMCAxMDA2NDQKKy0tLSBhL3F0d2F5 bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXIuY3BwCisrKysg Yi9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyLmNw cAorQEAgLTM5LDcgKzM5LDEwIEBACisgCisgI2luY2x1ZGUgInF3YXlsYW5kaW5wdXRtZXRob2Rl dmVudGJ1aWxkZXJfcC5oIgorIAorKyNpbmNsdWRlIDxRQnJ1c2g+CisrI2luY2x1ZGUgPFFHdWlB cHBsaWNhdGlvbj4KKyAjaW5jbHVkZSA8UUlucHV0TWV0aG9kPgorKyNpbmNsdWRlIDxRUGFsZXR0 ZT4KKyAjaW5jbHVkZSA8UVRleHRDaGFyRm9ybWF0PgorIAorICNpZmRlZiBRVF9CVUlMRF9XQVlM QU5EQ09NUE9TSVRPUl9MSUIKK0BAIC04MSwzMiArODQsMzggQEAgdm9pZCBRV2F5bGFuZElucHV0 TWV0aG9kRXZlbnRCdWlsZGVyOjphZGRQcmVlZGl0U3R5bGluZyh1aW50MzJfdCBpbmRleCwgdWlu dDMyX3QKKyAgICAgUVRleHRDaGFyRm9ybWF0IGZvcm1hdDsKKyAKKyAgICAgc3dpdGNoIChzdHls ZSkgeworLSAgICBjYXNlIDA6CistICAgIGNhc2UgMToKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBV VF9WMl9QUkVFRElUX1NUWUxFX05PTkU6CisrICAgICAgICBicmVhazsKKysgICAgY2FzZSBaV1Bf VEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX0RFRkFVTFQ6CisrICAgIGNhc2UgWldQX1RFWFRf SU5QVVRfVjJfUFJFRURJVF9TVFlMRV9VTkRFUkxJTkU6CisgICAgICAgICBmb3JtYXQuc2V0Rm9u dFVuZGVybGluZSh0cnVlKTsKKyAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4 dENoYXJGb3JtYXQ6OlNpbmdsZVVuZGVybGluZSk7CisgICAgICAgICBtX3ByZWVkaXRTdHlsZXMu YXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRl eHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkpOworICAgICAgICAgYnJlYWs7CistICAg IGNhc2UgMjoKKy0gICAgY2FzZSAzOgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVE SVRfU1RZTEVfQUNUSVZFOgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZ TEVfSU5BQ1RJVkU6CisgICAgICAgICBmb3JtYXQuc2V0Rm9udFdlaWdodChRRm9udDo6Qm9sZCk7 CisgICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsKKyAgICAgICAgIGZvcm1h dC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4dENoYXJGb3JtYXQ6OlNpbmdsZVVuZGVybGluZSk7Cisg ICAgICAgICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1 dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkp OworICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgNDoKKy0gICAgICAgIGZvcm1hdC5zZXRGb250 VW5kZXJsaW5lKHRydWUpOworLSAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0 Q2hhckZvcm1hdDo6U2luZ2xlVW5kZXJsaW5lKTsKKy0gICAgICAgIG1fcHJlZWRpdFN0eWxlcy5h cHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4 dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisrICAgIGNhc2UgWldQX1RFWFRfSU5Q VVRfVjJfUFJFRURJVF9TVFlMRV9ISUdITElHSFQ6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRf VjJfUFJFRURJVF9TVFlMRV9TRUxFQ1RJT046CisrICAgICAgICB7CisrICAgICAgICAgICAgZm9y bWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7CisrICAgICAgICAgICAgZm9ybWF0LnNldFVuZGVy bGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2luZ2xlVW5kZXJsaW5lKTsKKysgICAgICAgICAg ICBRUGFsZXR0ZSBwYWxldHRlID0gcUFwcC0+cGFsZXR0ZSgpOworKyAgICAgICAgICAgIGZvcm1h dC5zZXRCYWNrZ3JvdW5kKFFCcnVzaChwYWxldHRlLmNvbG9yKFFQYWxldHRlOjpBY3RpdmUsIFFQ YWxldHRlOjpIaWdobGlnaHQpKSk7CisrICAgICAgICAgICAgZm9ybWF0LnNldEZvcmVncm91bmQo UUJydXNoKHBhbGV0dGUuY29sb3IoUVBhbGV0dGU6OkFjdGl2ZSwgUVBhbGV0dGU6OkhpZ2hsaWdo dGVkVGV4dCkpKTsKKysgICAgICAgICAgICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1l dGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4 LCBsZW5ndGgsIGZvcm1hdCkpOworKyAgICAgICAgfQorICAgICAgICAgYnJlYWs7CistICAgIGNh c2UgNToKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX0lOQ09SUkVD VDoKKyAgICAgICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworICAgICAgICAgZm9y bWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6V2F2ZVVuZGVybGluZSk7Cisg ICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lQ29sb3IoUUNvbG9yKFF0OjpyZWQpKTsKKyAgICAg ICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShR SW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7Cisg ICAgICAgICBicmVhazsKKy0vLyAgICBjYXNlIFF0V2F5bGFuZDo6d2xfdGV4dF9pbnB1dDo6cHJl ZWRpdF9zdHlsZV9zZWxlY3Rpb246CistLy8gICAgY2FzZSBRdFdheWxhbmQ6OndsX3RleHRfaW5w dXQ6OnByZWVkaXRfc3R5bGVfbm9uZToKKyAgICAgZGVmYXVsdDoKKyAgICAgICAgIGJyZWFrOwor ICAgICB9CitAQCAtMTUzLDcgKzE2Miw3IEBAIFFJbnB1dE1ldGhvZEV2ZW50IFFXYXlsYW5kSW5w dXRNZXRob2RFdmVudEJ1aWxkZXI6OmJ1aWxkUHJlZWRpdChjb25zdCBRU3RyaW5nICZ0CisgCisg ICAgIGlmIChtX3ByZWVkaXRDdXJzb3IgPCAwKSB7CisgICAgICAgICBhdHRyaWJ1dGVzLmFwcGVu ZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpDdXJzb3Is IDAsIDAsIFFWYXJpYW50KCkpKTsKKy0gICAgfSBlbHNlIGlmIChtX3ByZWVkaXRDdXJzb3IgPiAw KSB7CisrICAgIH0gZWxzZSB7CisgICAgICAgICBhdHRyaWJ1dGVzLmFwcGVuZChRSW5wdXRNZXRo b2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpDdXJzb3IsIGluZGV4RnJvbVdh eWxhbmQodGV4dCwgbV9wcmVlZGl0Q3Vyc29yKSwgMSwgUVZhcmlhbnQoKSkpOworICAgICB9Cisg CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNw cCBiL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kbWltZWhlbHBlci5jcHAKK2luZGV4IGE1 ZmRkMzRkLi5lMmZlMTkyOCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXls YW5kbWltZWhlbHBlci5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kbWlt ZWhlbHBlci5jcHAKK0BAIC02MCw3ICs2MCw3IEBAIFFCeXRlQXJyYXkgUVdheWxhbmRNaW1lSGVs cGVyOjpnZXRCeXRlQXJyYXkoUU1pbWVEYXRhICptaW1lRGF0YSwgY29uc3QgUVN0cmluZyAmCisg ICAgICAgICAgICAgYnVmLm9wZW4oUUlPRGV2aWNlOjpSZWFkV3JpdGUpOworICAgICAgICAgICAg IFFCeXRlQXJyYXkgZm10ID0gIkJNUCI7CisgICAgICAgICAgICAgaWYgKG1pbWVUeXBlLnN0YXJ0 c1dpdGgoUUxhdGluMVN0cmluZygiaW1hZ2UvIikpKSB7CistICAgICAgICAgICAgICAgIFFCeXRl QXJyYXkgaW1nRm10ID0gbWltZVR5cGUubWlkKDYpLnRvVXBwZXIoKS50b0xhdGluMSgpOworKyAg ICAgICAgICAgICAgICBRQnl0ZUFycmF5IGltZ0ZtdCA9IG1pbWVUeXBlLm1pZCg2KS50b0xvd2Vy KCkudG9MYXRpbjEoKTsKKyAgICAgICAgICAgICAgICAgaWYgKFFJbWFnZVdyaXRlcjo6c3VwcG9y dGVkSW1hZ2VGb3JtYXRzKCkuY29udGFpbnMoaW1nRm10KSkKKyAgICAgICAgICAgICAgICAgICAg IGZtdCA9IGltZ0ZtdDsKKyAgICAgICAgICAgICB9CitAQCAtNzQsNyArNzQsNyBAQCBRQnl0ZUFy cmF5IFFXYXlsYW5kTWltZUhlbHBlcjo6Z2V0Qnl0ZUFycmF5KFFNaW1lRGF0YSAqbWltZURhdGEs IGNvbnN0IFFTdHJpbmcgJgorICAgICAgICAgUUxpc3Q8UVVybD4gdXJscyA9IG1pbWVEYXRhLT51 cmxzKCk7CisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHVybHMuY291bnQoKTsgKytpKSB7 CisgICAgICAgICAgICAgY29udGVudC5hcHBlbmQodXJscy5hdChpKS50b0VuY29kZWQoKSk7Cist ICAgICAgICAgICAgY29udGVudC5hcHBlbmQoJ1xuJyk7CisrICAgICAgICAgICAgY29udGVudC5h cHBlbmQoIlxyXG4iKTsKKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIGNvbnRl bnQgPSBtaW1lRGF0YS0+ZGF0YShtaW1lVHlwZSk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rl c3RzL2F1dG8vY2xpZW50L2RhdGFkZXZpY2V2MS90c3RfZGF0YWRldmljZXYxLmNwcCBiL3F0d2F5 bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9kYXRhZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAK K2luZGV4IDE1NjhiM2I5Li4wNjc0MTBkMCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9h dXRvL2NsaWVudC9kYXRhZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAKKysrKyBiL3F0d2F5 bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9kYXRhZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAK K0BAIC0zNSw3ICszNSw3IEBACisgCisgdXNpbmcgbmFtZXNwYWNlIE1vY2tDb21wb3NpdG9yOwor IAorLWNvbnN0ZXhwciBpbnQgZGF0YURldmljZVZlcnNpb24gPSAxOworK2NvbnN0ZXhwciBpbnQg ZGF0YURldmljZVZlcnNpb24gPSAzOworIAorIGNsYXNzIERhdGFEZXZpY2VDb21wb3NpdG9yIDog cHVibGljIERlZmF1bHRDb21wb3NpdG9yIHsKKyBwdWJsaWM6CitkaWZmIC0tZ2l0IGEvcXR3YXls YW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcCBiL3F0d2F5bGFuZC90 ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUvdHN0X3NlYXR2NS5jcHAKK2luZGV4IDkzMTJjMmU1Li4y ZWEzODJmMSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUv dHN0X3NlYXR2NS5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUv dHN0X3NlYXR2NS5jcHAKK0BAIC03Myw2ICs3Myw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZv aWQgbXVsdGlUb3VjaCgpOworICAgICB2b2lkIG11bHRpVG91Y2hVcEFuZE1vdGlvbkZyYW1lKCk7 CisgICAgIHZvaWQgdGFwQW5kTW92ZUluU2FtZUZyYW1lKCk7CisrICAgIHZvaWQgY2FuY2VsVG91 Y2goKTsKKyB9OworIAorIHZvaWQgdHN0X3NlYXR2NTo6YmluZHNUb1NlYXQoKQorQEAgLTY0Niw1 ICs2NDcsMzQgQEAgdm9pZCB0c3Rfc2VhdHY1Ojp0YXBBbmRNb3ZlSW5TYW1lRnJhbWUoKQorICAg ICBRVFJZX0NPTVBBUkUod2luZG93Lm1fZXZlbnRzLmxhc3QoKS50b3VjaFBvaW50cy5maXJzdCgp LnN0YXRlKCksIFF0OjpUb3VjaFBvaW50U3RhdGU6OlRvdWNoUG9pbnRSZWxlYXNlZCk7CisgfQor IAorK3ZvaWQgdHN0X3NlYXR2NTo6Y2FuY2VsVG91Y2goKQorK3sKKysgICAgVG91Y2hXaW5kb3cg d2luZG93OworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1N1cmZhY2UoKSAmJiB4ZGdT dXJmYWNlKCktPm1fY29tbWl0dGVkQ29uZmlndXJlU2VyaWFsKTsKKysKKysgICAgZXhlYyhbPV0g eworKyAgICAgICAgYXV0byAqdCA9IHRvdWNoKCk7CisrICAgICAgICBhdXRvICpjID0gY2xpZW50 KCk7CisrICAgICAgICB0LT5zZW5kRG93bih4ZGdUb3BsZXZlbCgpLT5zdXJmYWNlKCksIHszMiwg MzJ9LCAxKTsKKysgICAgICAgIHQtPnNlbmRGcmFtZShjKTsKKysgICAgICAgIHQtPnNlbmRDYW5j ZWwoYyk7CisrICAgICAgICB0LT5zZW5kRnJhbWUoYyk7CisrICAgIH0pOworKworKyAgICBRVFJZ X1ZFUklGWSghd2luZG93Lm1fZXZlbnRzLmVtcHR5KCkpOworKyAgICB7CisrICAgICAgICBhdXRv IGUgPSB3aW5kb3cubV9ldmVudHMudGFrZUZpcnN0KCk7CisrICAgICAgICBRQ09NUEFSRShlLnR5 cGUsIFFFdmVudDo6VG91Y2hCZWdpbik7CisrICAgICAgICBRQ09NUEFSRShlLnRvdWNoUG9pbnRT dGF0ZXMsIFF0OjpUb3VjaFBvaW50UHJlc3NlZCk7CisrICAgICAgICBRQ09NUEFSRShlLnRvdWNo UG9pbnRzLmxlbmd0aCgpLCAxKTsKKysgICAgICAgIFFDT01QQVJFKGUudG91Y2hQb2ludHMuZmly c3QoKS5wb3MoKSwgUVBvaW50RigzMi13aW5kb3cuZnJhbWVNYXJnaW5zKCkubGVmdCgpLCAzMi13 aW5kb3cuZnJhbWVNYXJnaW5zKCkudG9wKCkpKTsKKysgICAgfQorKyAgICB7CisrICAgICAgICBh dXRvIGUgPSB3aW5kb3cubV9ldmVudHMudGFrZUZpcnN0KCk7CisrICAgICAgICBRQ09NUEFSRShl LnR5cGUsIFFFdmVudDo6VG91Y2hDYW5jZWwpOworKyAgICAgICAgUUNPTVBBUkUoZS50b3VjaFBv aW50cy5sZW5ndGgoKSwgMCk7CisrICAgIH0KKyt9CisrCisgUUNPTVBPU0lUT1JfVEVTVF9NQUlO KHRzdF9zZWF0djUpCisgI2luY2x1ZGUgInRzdF9zZWF0djUubW9jIgorZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZWNvbXBvc2l0b3IuY3BwIGIvcXR3 YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlY29tcG9zaXRvci5jcHAKK2luZGV4 IDVjNmM4M2JhLi5mYTliNzY2MiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2Ns aWVudC9zaGFyZWQvY29yZWNvbXBvc2l0b3IuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0 by9jbGllbnQvc2hhcmVkL2NvcmVjb21wb3NpdG9yLmNwcAorQEAgLTI3LDYgKzI3LDcgQEAKKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworIAorICNpbmNsdWRlICJjb3JlY29tcG9zaXRvci5oIgorKyNp bmNsdWRlIDx0aHJlYWQ+CisgCisgbmFtZXNwYWNlIE1vY2tDb21wb3NpdG9yIHsKKyAKK2RpZmYg LS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5j cHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAK K2luZGV4IDBkOTg4NTIxLi5kMWEyZTdjYiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9h dXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3Rz L2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuY3BwCitAQCAtNDUxLDYgKzQ1MSwxMyBA QCB2b2lkIFRvdWNoOjpzZW5kRnJhbWUod2xfY2xpZW50ICpjbGllbnQpCisgICAgICAgICBzZW5k X2ZyYW1lKHItPmhhbmRsZSk7CisgfQorIAorK3ZvaWQgVG91Y2g6OnNlbmRDYW5jZWwod2xfY2xp ZW50ICpjbGllbnQpCisreworKyAgICBjb25zdCBhdXRvIHRvdWNoUmVzb3VyY2VzID0gcmVzb3Vy Y2VNYXAoKS52YWx1ZXMoY2xpZW50KTsKKysgICAgZm9yIChhdXRvICpyIDogdG91Y2hSZXNvdXJj ZXMpCisrICAgICAgICBzZW5kX2NhbmNlbChyLT5oYW5kbGUpOworK30KKysKKyB1aW50IEtleWJv YXJkOjpzZW5kRW50ZXIoU3VyZmFjZSAqc3VyZmFjZSkKKyB7CisgICAgIGF1dG8gc2VyaWFsID0g bV9zZWF0LT5tX2NvbXBvc2l0b3ItPm5leHRTZXJpYWwoKTsKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oIGIvcXR3YXlsYW5kL3Rl c3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuaAoraW5kZXggYTFhZjEzN2EuLjIx MGQ4ZGRiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9j b3JlcHJvdG9jb2wuaAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9j b3JlcHJvdG9jb2wuaAorQEAgLTE1OCw3ICsxNTgsNyBAQCBjbGFzcyBXbENvbXBvc2l0b3IgOiBw dWJsaWMgR2xvYmFsLCBwdWJsaWMgUXRXYXlsYW5kU2VydmVyOjp3bF9jb21wb3NpdG9yCisgewor ICAgICBRX09CSkVDVAorIHB1YmxpYzoKKy0gICAgZXhwbGljaXQgV2xDb21wb3NpdG9yKENvcmVD b21wb3NpdG9yICpjb21wb3NpdG9yLCBpbnQgdmVyc2lvbiA9IDMpCisrICAgIGV4cGxpY2l0IFds Q29tcG9zaXRvcihDb3JlQ29tcG9zaXRvciAqY29tcG9zaXRvciwgaW50IHZlcnNpb24gPSA0KQor ICAgICAgICAgOiBRdFdheWxhbmRTZXJ2ZXI6OndsX2NvbXBvc2l0b3IoY29tcG9zaXRvci0+bV9k aXNwbGF5LCB2ZXJzaW9uKQorICAgICAgICAgLCBtX2NvbXBvc2l0b3IoY29tcG9zaXRvcikKKyAg ICAge30KK0BAIC0zNjQsNiArMzY0LDcgQEAgcHVibGljOgorICAgICB1aW50IHNlbmRVcCh3bF9j bGllbnQgKmNsaWVudCwgaW50IGlkKTsKKyAgICAgdm9pZCBzZW5kTW90aW9uKHdsX2NsaWVudCAq Y2xpZW50LCBjb25zdCBRUG9pbnRGICZwb3NpdGlvbiwgaW50IGlkKTsKKyAgICAgdm9pZCBzZW5k RnJhbWUod2xfY2xpZW50ICpjbGllbnQpOworKyAgICB2b2lkIHNlbmRDYW5jZWwod2xfY2xpZW50 ICpjbGllbnQpOworIAorICAgICBTZWF0ICptX3NlYXQgPSBudWxscHRyOworIH07CitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBvc2l0 b3IuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBv c2l0b3IuY3BwCitpbmRleCBhNDE1Y2JmNS4uYjFkM2QwN2QgMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2NrY29tcG9zaXRvci5jcHAKKysrKyBi L3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tjb21wb3NpdG9yLmNw cAorQEAgLTM0Miw3ICszNDIsNyBAQCBDb21wb3NpdG9yOjpDb21wb3NpdG9yKE1vY2tDb21wb3Np dG9yICptb2NrQ29tcG9zaXRvcikKKyAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICAg fQorIAorLSAgICB3bF9nbG9iYWxfY3JlYXRlKG1fZGlzcGxheSwgJndsX2NvbXBvc2l0b3JfaW50 ZXJmYWNlLCAxLCB0aGlzLCBiaW5kQ29tcG9zaXRvcik7CisrICAgIHdsX2dsb2JhbF9jcmVhdGUo bV9kaXNwbGF5LCAmd2xfY29tcG9zaXRvcl9pbnRlcmZhY2UsIDQsIHRoaXMsIGJpbmRDb21wb3Np dG9yKTsKKyAKKyAgICAgbV9kYXRhX2RldmljZV9tYW5hZ2VyLnJlc2V0KG5ldyBEYXRhRGV2aWNl TWFuYWdlcih0aGlzLCBtX2Rpc3BsYXkpKTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVz dHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5jcHAgYi9xdHdheWxhbmQvdGVz dHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5jcHAKK2luZGV4IGU5ZGY1Zjkw Li5jMzI0NmU0YSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFy ZWRfb2xkL21vY2tzdXJmYWNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50 L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuY3BwCitAQCAtMTI1LDYgKzEyNSwxNiBAQCB2b2lkIFN1 cmZhY2U6OnN1cmZhY2VfZGFtYWdlKFJlc291cmNlICpyZXNvdXJjZSwKKyAgICAgUV9VTlVTRUQo aGVpZ2h0KTsKKyB9CisgCisrdm9pZCBTdXJmYWNlOjpzdXJmYWNlX2RhbWFnZV9idWZmZXIoUmVz b3VyY2UgKnJlc291cmNlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyt7Cisr ICAgIFFfVU5VU0VEKHJlc291cmNlKTsKKysgICAgUV9VTlVTRUQoeCk7CisrICAgIFFfVU5VU0VE KHkpOworKyAgICBRX1VOVVNFRCh3aWR0aCk7CisrICAgIFFfVU5VU0VEKGhlaWdodCk7CisrfQor KworIHZvaWQgU3VyZmFjZTo6c3VyZmFjZV9mcmFtZShSZXNvdXJjZSAqcmVzb3VyY2UsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGNhbGxiYWNrKQorIHsKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5o IGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuaAor aW5kZXggOTQ5ZGMyM2QuLmQxNzY4MzdlIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1 dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuaAorKysrIGIvcXR3YXlsYW5kL3Rlc3Rz L2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuaAorQEAgLTY1LDYgKzY1LDggQEAg cHJvdGVjdGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB3bF9yZXNvdXJjZSAq YnVmZmVyLCBpbnQgeCwgaW50IHkpIG92ZXJyaWRlOworICAgICB2b2lkIHN1cmZhY2VfZGFtYWdl KFJlc291cmNlICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHgs IGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpIG92ZXJyaWRlOworKyAg ICB2b2lkIHN1cmZhY2VfZGFtYWdlX2J1ZmZlcihSZXNvdXJjZSAqcmVzb3VyY2UsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdp ZHRoLCBpbnQzMl90IGhlaWdodCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgc3VyZmFjZV9mcmFtZShS ZXNvdXJjZSAqcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjYWxs YmFjaykgb3ZlcnJpZGU7CisgICAgIHZvaWQgc3VyZmFjZV9jb21taXQoUmVzb3VyY2UgKnJlc291 cmNlKSBvdmVycmlkZTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQv c3VyZmFjZS90c3Rfc3VyZmFjZS5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3Vy ZmFjZS90c3Rfc3VyZmFjZS5jcHAKK2luZGV4IDk1ZTRlNjA5Li42MGM2NzJjZSAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcAor KysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3N1cmZhY2UvdHN0X3N1cmZhY2UuY3Bw CitAQCAtMTI5LDYgKzEyOSwxMCBAQCB2b2lkIHRzdF9zdXJmYWNlOjp3YWl0Rm9yRnJhbWVDYWxs YmFja0dsKCkKKyAgICAgLy8gTWFrZSBzdXJlIHdlIGZvbGxvdyBmcmFtZSBjYWxsYmFja3MgZm9y IHNvbWUgZnJhbWVzCisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgKytpKSB7CisgICAgICAg ICB4ZGdQaW5nQW5kV2FpdEZvclBvbmcoKTsgLy8gTWFrZSBzdXJlIHRoaW5ncyBoYXZlIGhhcHBl bmVkIG9uIHRoZSBjbGllbnQKKysgICAgICAgIGlmICghcUVudmlyb25tZW50VmFyaWFibGVJbnRW YWx1ZSgiUVRfV0FZTEFORF9ESVNBQkxFX1dJTkRPV0RFQ09SQVRJT04iKSAmJiBpID09IDApIHsK KysgICAgICAgICAgICBRQ09NUEFSRShidWZmZXJTcHkuY291bnQoKSwgMSk7CisrICAgICAgICAg ICAgYnVmZmVyU3B5LnJlbW92ZUZpcnN0KCk7CisrICAgICAgICB9CisgICAgICAgICBleGVjKFsm XSB7CisgICAgICAgICAgICAgUVZFUklGWShidWZmZXJTcHkuZW1wdHkoKSk7IC8vIE1ha2Ugc3Vy ZSBubyBleHRyYSBidWZmZXJzIGhhdmUgYXJyaXZlZAorICAgICAgICAgICAgIFFWRVJJRlkoIXhk Z1RvcGxldmVsKCktPnN1cmZhY2UoKS0+bV93YWl0aW5nRnJhbWVDYWxsYmFja3MuZW1wdHkoKSk7 CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3hkZ3NoZWxsL3RzdF94 ZGdzaGVsbC5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQveGRnc2hlbGwvdHN0X3hk Z3NoZWxsLmNwcAoraW5kZXggMjI3N2JiYjguLjc0Nzg3NWI0IDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3Rlc3RzL2F1dG8vY2xpZW50L3hkZ3NoZWxsL3RzdF94ZGdzaGVsbC5jcHAKKysrKyBiL3F0 d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC94ZGdzaGVsbC90c3RfeGRnc2hlbGwuY3BwCitAQCAt MzEsNiArMzEsNyBAQAorICNpbmNsdWRlIDxRdEd1aS9RT3BlbkdMV2luZG93PgorICNpbmNsdWRl IDxRdEd1aS9xcGEvcXBsYXRmb3JtbmF0aXZlaW50ZXJmYWNlLmg+CisgI2luY2x1ZGUgPFF0V2F5 bGFuZENsaWVudC9wcml2YXRlL3dheWxhbmQtd2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaD4KKysj aW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvcXdheWxhbmR3aW5kb3dfcC5oPgorIAor IHVzaW5nIG5hbWVzcGFjZSBNb2NrQ29tcG9zaXRvcjsKKyAKK0BAIC00NSw2ICs0Niw3IEBAIHBy aXZhdGUgc2xvdHM6CisgICAgIHZvaWQgY29uZmlndXJlU3RhdGVzKCk7CisgICAgIHZvaWQgcG9w dXAoKTsKKyAgICAgdm9pZCB0b29sdGlwT25Qb3B1cCgpOworKyAgICB2b2lkIHRvb2x0aXBBbmRT aWJsaW5nUG9wdXAoKTsKKyAgICAgdm9pZCBzd2l0Y2hQb3B1cHMoKTsKKyAgICAgdm9pZCBoaWRl UG9wdXBQYXJlbnQoKTsKKyAgICAgdm9pZCBwb25ncygpOworQEAgLTEzOCw2ICsxNDAsNyBAQCB2 b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmlndXJlU2l6ZSgpCisgCisgdm9pZCB0c3RfeGRnc2hlbGw6 OmNvbmZpZ3VyZVN0YXRlcygpCisgeworKyAgICBRVkVSSUZZKHFwdXRlbnYoIlFUX1dBWUxBTkRf RlJBTUVfQ0FMTEJBQ0tfVElNRU9VVCIsICIwIikpOworICAgICBRUmFzdGVyV2luZG93IHdpbmRv dzsKKyAgICAgd2luZG93LnJlc2l6ZSg2NCwgNDgpOworICAgICB3aW5kb3cuc2hvdygpOworQEAg LTE1NCw5ICsxNTcsMTIgQEAgdm9pZCB0c3RfeGRnc2hlbGw6OmNvbmZpZ3VyZVN0YXRlcygpCisg ICAgIC8vIFRvcGxldmVsIHdpbmRvd3MgZG9uJ3Qga25vdyB0aGVpciBwb3NpdGlvbiBvbiB4ZGct c2hlbGwKKyAvLyAgICBRQ09NUEFSRSh3aW5kb3cuZnJhbWVHZW9tZXRyeSgpLnRvcExlZnQoKSwg UVBvaW50KCkpOyAvLyBUT0RPOiB0aGlzIGRvZXNuJ3QgY3VycmVudGx5IHdvcmsgd2hlbiB3aW5k b3cgZGVjb3JhdGlvbnMgYXJlIGVuYWJsZWQKKyAKKy0vLyAgICBRRVhQRUNUX0ZBSUwoIiIsICJj b25maWd1cmUgaGFzIGFscmVhZHkgYmVlbiBhY2tlZCwgd2Ugc2hvdWxkbid0IGhhdmUgdG8gd2Fp dCBmb3IgaXNBY3RpdmUiLCBDb250aW51ZSk7CistLy8gICAgUVZFUklGWSh3aW5kb3cuaXNBY3Rp dmUoKSk7CistICAgIFFUUllfVkVSSUZZKHdpbmRvdy5pc0FjdGl2ZSgpKTsgLy8gSnVzdCBtYWtl IHN1cmUgaXQgZXZlbnR1YWxseSBnZXQncyBzZXQgY29ycmVjdGx5CisrICAgIC8vIHdpbmRvdy53 aW5kb3dzdGF0ZSgpIGlzIGRyaXZlbiBieSBrZXlib2FyZCBmb2N1cywgaG93ZXZlciBmb3IgZGVj b3JhdGlvbnMgd2Ugd2FudCB0byBmb2xsb3cKKysgICAgLy8gWERHU2hlbGwgdGhpcyBpcyBpbnRl cm5hbCB0byBRdFdheWxhbmQgc28gaXQgaXMgcXVlcmllZCBkaXJlY3RseQorKyAgICBhdXRvIHdh eWxhbmRXaW5kb3cgPSBzdGF0aWNfY2FzdDxRdFdheWxhbmRDbGllbnQ6OlFXYXlsYW5kV2luZG93 ICo+KHdpbmRvdy5oYW5kbGUoKSk7CisrICAgIFFfQVNTRVJUKHdheWxhbmRXaW5kb3cpOworKyAg ICBRVFJZX1ZFUklGWSh3YXlsYW5kV2luZG93LT53aW5kb3dTdGF0ZXMoKS50ZXN0RmxhZygKKysg ICAgICAgICAgICBRdDo6V2luZG93QWN0aXZlKSk7IC8vIEp1c3QgbWFrZSBzdXJlIGl0IGV2ZW50 dWFsbHkgZ2V0J3Mgc2V0IGNvcnJlY3RseQorIAorICAgICBjb25zdCBRU2l6ZSBzY3JlZW5TaXpl KDY0MCwgNDgwKTsKKyAgICAgY29uc3QgdWludCBtYXhpbWl6ZWRTZXJpYWwgPSBleGVjKFs9XSB7 CitAQCAtMTg2LDYgKzE5Miw3IEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjpjb25maWd1cmVTdGF0ZXMo KQorICAgICBRQ09NUEFSRSh3aW5kb3cud2luZG93U3RhdGVzKCksIFF0OjpXaW5kb3dOb1N0YXRl KTsKKyAgICAgUUNPTVBBUkUod2luZG93LmZyYW1lR2VvbWV0cnkoKS5zaXplKCksIHdpbmRvd2Vk U2l6ZSk7CisgLy8gICAgUUNPTVBBUkUod2luZG93LmZyYW1lR2VvbWV0cnkoKS50b3BMZWZ0KCks IFFQb2ludCgpKTsgLy8gVE9ETzogdGhpcyBkb2Vzbid0IGN1cnJlbnRseSB3b3JrIHdoZW4gd2lu ZG93IGRlY29yYXRpb25zIGFyZSBlbmFibGVkCisrICAgIFFWRVJJRlkocXVuc2V0ZW52KCJRVF9X QVlMQU5EX0ZSQU1FX0NBTExCQUNLX1RJTUVPVVQiKSk7CisgfQorIAorIHZvaWQgdHN0X3hkZ3No ZWxsOjpwb3B1cCgpCitAQCAtMzQwLDYgKzM0Nyw5MiBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6dG9v bHRpcE9uUG9wdXAoKQorICAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdQb3B1cCgwKSwg bnVsbHB0cik7CisgfQorIAorK3ZvaWQgdHN0X3hkZ3NoZWxsOjp0b29sdGlwQW5kU2libGluZ1Bv cHVwKCkKKyt7CisrICAgIGNsYXNzIFRvb2xUaXAgOiBwdWJsaWMgUVJhc3RlcldpbmRvdyB7Cisr ICAgIHB1YmxpYzoKKysgICAgICAgIGV4cGxpY2l0IFRvb2xUaXAoUVdpbmRvdyAqcGFyZW50KSB7 CisrICAgICAgICAgICAgc2V0VHJhbnNpZW50UGFyZW50KHBhcmVudCk7CisrICAgICAgICAgICAg c2V0RmxhZ3MoUXQ6OlRvb2xUaXApOworKyAgICAgICAgICAgIHJlc2l6ZSgxMDAsIDEwMCk7Cisr ICAgICAgICAgICAgc2hvdygpOworKyAgICAgICAgfQorKyAgICAgICAgdm9pZCBtb3VzZVByZXNz RXZlbnQoUU1vdXNlRXZlbnQgKmV2ZW50KSBvdmVycmlkZSB7CisrICAgICAgICAgICAgUVJhc3Rl cldpbmRvdzo6bW91c2VQcmVzc0V2ZW50KGV2ZW50KTsKKysgICAgICAgICAgICBtX3BvcHVwID0g bmV3IFFSYXN0ZXJXaW5kb3c7CisrICAgICAgICAgICAgbV9wb3B1cC0+c2V0VHJhbnNpZW50UGFy ZW50KHRyYW5zaWVudFBhcmVudCgpKTsKKysgICAgICAgICAgICBtX3BvcHVwLT5zZXRGbGFncyhR dDo6UG9wdXApOworKyAgICAgICAgICAgIG1fcG9wdXAtPnJlc2l6ZSgxMDAsIDEwMCk7CisrICAg ICAgICAgICAgbV9wb3B1cC0+c2hvdygpOworKyAgICAgICAgfQorKworKyAgICAgICAgUVJhc3Rl cldpbmRvdyAqbV9wb3B1cCA9IG51bGxwdHI7CisrICAgIH07CisrCisrICAgIGNsYXNzIFdpbmRv dyA6IHB1YmxpYyBRUmFzdGVyV2luZG93IHsKKysgICAgcHVibGljOgorKyAgICAgICAgdm9pZCBt b3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQgKmV2ZW50KSBvdmVycmlkZSB7CisrICAgICAgICAg ICAgUVJhc3RlcldpbmRvdzo6bW91c2VQcmVzc0V2ZW50KGV2ZW50KTsKKysgICAgICAgICAgICBt X3Rvb2x0aXAgPSBuZXcgVG9vbFRpcCh0aGlzKTsKKysgICAgICAgIH0KKysgICAgICAgIFRvb2xU aXAgKm1fdG9vbHRpcCA9IG51bGxwdHI7CisrICAgIH07CisrCisrICAgIFdpbmRvdyB3aW5kb3c7 CisrICAgIHdpbmRvdy5yZXNpemUoMjAwLCAyMDApOworKyAgICB3aW5kb3cuc2hvdygpOworKwor KyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1RvcGxldmVsKCkpOworKyAgICBleGVjKFs9 XSB7IHhkZ1RvcGxldmVsKCktPnNlbmRDb21wbGV0ZUNvbmZpZ3VyZSgpOyB9KTsKKysgICAgUUNP TVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdUb3BsZXZlbCgpLT5tX3hkZ1N1cmZhY2UtPm1fY29tbWl0 dGVkQ29uZmlndXJlU2VyaWFsKTsKKysKKysgICAgZXhlYyhbPV0geworKyAgICAgICAgYXV0byAq c3VyZmFjZSA9IHhkZ1RvcGxldmVsKCktPnN1cmZhY2UoKTsKKysgICAgICAgIGF1dG8gKnAgPSBw b2ludGVyKCk7CisrICAgICAgICBhdXRvICpjID0gY2xpZW50KCk7CisrICAgICAgICBwLT5zZW5k RW50ZXIoc3VyZmFjZSwgezEwMCwgMTAwfSk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7Cisr ICAgICAgICBwLT5zZW5kQnV0dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9u X3N0YXRlX3ByZXNzZWQpOworKyAgICAgICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xF RlQsIFBvaW50ZXI6OmJ1dHRvbl9zdGF0ZV9yZWxlYXNlZCk7CisrICAgICAgICBwLT5zZW5kRnJh bWUoYyk7CisrICAgICAgICBwLT5zZW5kTGVhdmUoc3VyZmFjZSk7CisrICAgICAgICBwLT5zZW5k RnJhbWUoYyk7CisrICAgIH0pOworKworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1Bv cHVwKCkpOworKyAgICBleGVjKFs9XSB7IHhkZ1BvcHVwKCktPnNlbmRDb21wbGV0ZUNvbmZpZ3Vy ZShRUmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsgfSk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9W RVJJRlkoeGRnUG9wdXAoKS0+bV94ZGdTdXJmYWNlLT5tX2NvbW1pdHRlZENvbmZpZ3VyZVNlcmlh bCk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoIXhkZ1BvcHVwKCktPm1fZ3JhYmJlZCk7 CisrCisrICAgIGV4ZWMoWz1dIHsKKysgICAgICAgIGF1dG8gKnN1cmZhY2UgPSB4ZGdQb3B1cCgp LT5zdXJmYWNlKCk7CisrICAgICAgICBhdXRvICpwID0gcG9pbnRlcigpOworKyAgICAgICAgYXV0 byAqYyA9IGNsaWVudCgpOworKyAgICAgICAgcC0+c2VuZEVudGVyKHN1cmZhY2UsIHsxMDAsIDEw MH0pOworKyAgICAgICAgcC0+c2VuZEZyYW1lKGMpOworKyAgICAgICAgcC0+c2VuZEJ1dHRvbihj bGllbnQoKSwgQlROX0xFRlQsIFBvaW50ZXI6OmJ1dHRvbl9zdGF0ZV9wcmVzc2VkKTsKKysgICAg ICAgIHAtPnNlbmRCdXR0b24oY2xpZW50KCksIEJUTl9MRUZULCBQb2ludGVyOjpidXR0b25fc3Rh dGVfcmVsZWFzZWQpOworKyAgICAgICAgcC0+c2VuZEZyYW1lKGMpOworKyAgICB9KTsKKysKKysg ICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgxKSk7CisrICAgIGV4ZWMoWz1dIHsg eGRnUG9wdXAoMSktPnNlbmRDb21wbGV0ZUNvbmZpZ3VyZShRUmVjdCgxMDAsIDEwMCwgMTAwLCAx MDApKTsgfSk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMSktPm1feGRn U3VyZmFjZS0+bV9jb21taXR0ZWRDb25maWd1cmVTZXJpYWwpOworKyAgICBRQ09NUE9TSVRPUl9U UllfVkVSSUZZKHhkZ1BvcHVwKDEpLT5tX2dyYWJiZWQpOworKworKyAgICAvLyBDbG9zZSB0aGUg bWlkZGxlIHRvb2x0aXAgKGl0IHNob3VsZCBub3QgY2xvc2UgdGhlIHNpYmxpbmcgcG9wdXApCisr ICAgIHdpbmRvdy5tX3Rvb2x0aXAtPmNsb3NlKCk7CisrCisrICAgIFFDT01QT1NJVE9SX1RSWV9D T01QQVJFKHhkZ1BvcHVwKDEpLCBudWxscHRyKTsKKysgICAgLy8gVmVyaWZ5IHRoZSByZW1haW5p bmcgeGRnIHN1cmZhY2UgaXMgYSBncmFiIHBvcHVwLi4KKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZF UklGWSh4ZGdQb3B1cCgwKSk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAo MCktPm1fZ3JhYmJlZCk7CisrCisrICAgIHdpbmRvdy5tX3Rvb2x0aXAtPm1fcG9wdXAtPmNsb3Nl KCk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1BvcHVwKDEpLCBudWxscHRyKTsK KysgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAoMCksIG51bGxwdHIpOworK30K KysKKyAvLyBRVEJVRy02NTY4MAorIHZvaWQgdHN0X3hkZ3NoZWxsOjpzd2l0Y2hQb3B1cHMoKQor IHsKK0BAIC01MDUsNyArNTk4LDcgQEAgdm9pZCB0c3RfeGRnc2hlbGw6Om1pbk1heFNpemUoKQor ICAgICB3aW5kb3cuc2hvdygpOworICAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1RvcGxl dmVsKCkpOworIAorLSAgICBleGVjKFs9XSB7IHhkZ1RvcGxldmVsKCktPnNlbmRDb21wbGV0ZUNv bmZpZ3VyZSgpOyB9KTsKKysgICAgLy8gd2UgZG9uJ3Qgcm91bmR0cmlwIHdpdGggb3VyIGNvbmZp Z3VyYXRpb24gdGhlIGluaXRpYWwgY29tbWl0IHNob3VsZCBiZSBjb3JyZWN0CisgCisgICAgIFFD T01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1RvcGxldmVsKCktPm1fY29tbWl0dGVkLm1pblNpemUs IFFTaXplKDEwMCwgMTAwKSk7CisgICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1RvcGxl dmVsKCktPm1fY29tbWl0dGVkLm1heFNpemUsIFFTaXplKDEwMDAsIDEwMDApKTsKK1N1Ym1vZHVs ZSBxdHdlYmNoYW5uZWwgNjE4NDIyZWUuLmY4OTQ5NjU1OgorZGlmZiAtLWdpdCBhL3F0d2ViY2hh bm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlci5jcHAgYi9xdHdlYmNoYW5u ZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwCitpbmRleCA1MzZlYjVj Li44OThkNzY5IDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRh b2JqZWN0cHVibGlzaGVyLmNwcAorKysrIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3Ft ZXRhb2JqZWN0cHVibGlzaGVyLmNwcAorQEAgLTE4Niw4ICsxODYsNiBAQCBRX0RFQ0xBUkVfVFlQ RUlORk8oT3ZlcmxvYWRSZXNvbHV0aW9uQ2FuZGlkYXRlLCBRX01PVkFCTEVfVFlQRSk7CisgUU1l dGFPYmplY3RQdWJsaXNoZXI6OlFNZXRhT2JqZWN0UHVibGlzaGVyKFFXZWJDaGFubmVsICp3ZWJD aGFubmVsKQorICAgICA6IFFPYmplY3Qod2ViQ2hhbm5lbCkKKyAgICAgLCB3ZWJDaGFubmVsKHdl YkNoYW5uZWwpCistICAgICwgc2lnbmFsSGFuZGxlcih0aGlzKQorLSAgICAsIGNsaWVudElzSWRs ZShmYWxzZSkKKyAgICAgLCBibG9ja1VwZGF0ZXMoZmFsc2UpCisgICAgICwgcHJvcGVydHlVcGRh dGVzSW5pdGlhbGl6ZWQoZmFsc2UpCisgeworQEAgLTMwMSwxNyArMjk5LDE3IEBAIFFKc29uT2Jq ZWN0IFFNZXRhT2JqZWN0UHVibGlzaGVyOjpjbGFzc0luZm9Gb3JPYmplY3QoY29uc3QgUU9iamVj dCAqb2JqZWN0LCBRV2ViCisgICAgIHJldHVybiBkYXRhOworIH0KKyAKKy12b2lkIFFNZXRhT2Jq ZWN0UHVibGlzaGVyOjpzZXRDbGllbnRJc0lkbGUoYm9vbCBpc0lkbGUpCisrdm9pZCBRTWV0YU9i amVjdFB1Ymxpc2hlcjo6c2V0Q2xpZW50SXNJZGxlKGJvb2wgaXNJZGxlLCBRV2ViQ2hhbm5lbEFi c3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisgeworLSAgICBpZiAoY2xpZW50SXNJZGxlID09 IGlzSWRsZSkgeworLSAgICAgICAgcmV0dXJuOworLSAgICB9CistICAgIGNsaWVudElzSWRsZSA9 IGlzSWRsZTsKKy0gICAgaWYgKCFpc0lkbGUgJiYgdGltZXIuaXNBY3RpdmUoKSkgeworLSAgICAg ICAgdGltZXIuc3RvcCgpOworLSAgICB9IGVsc2UgaWYgKGlzSWRsZSAmJiAhdGltZXIuaXNBY3Rp dmUoKSkgeworLSAgICAgICAgdGltZXIuc3RhcnQoUFJPUEVSVFlfVVBEQVRFX0lOVEVSVkFMLCB0 aGlzKTsKKy0gICAgfQorKyAgICB0cmFuc3BvcnRTdGF0ZVt0cmFuc3BvcnRdLmNsaWVudElzSWRs ZSA9IGlzSWRsZTsKKysgICAgaWYgKGlzSWRsZSkKKysgICAgICAgIHNlbmRFbnF1ZXVlZFByb3Bl cnR5VXBkYXRlcyh0cmFuc3BvcnQpOworK30KKysKKytib29sIFFNZXRhT2JqZWN0UHVibGlzaGVy Ojppc0NsaWVudElkbGUoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQor K3sKKysgICAgYXV0byBmb3VuZCA9IHRyYW5zcG9ydFN0YXRlLmZpbmQodHJhbnNwb3J0KTsKKysg ICAgcmV0dXJuIGZvdW5kICE9IHRyYW5zcG9ydFN0YXRlLmVuZCgpICYmIGZvdW5kLnZhbHVlKCku Y2xpZW50SXNJZGxlOworIH0KKyAKKyBRSnNvbk9iamVjdCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6 aW5pdGlhbGl6ZUNsaWVudChRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQp CitAQCAtMzMzLDYgKzMzMSw3IEBAIFFKc29uT2JqZWN0IFFNZXRhT2JqZWN0UHVibGlzaGVyOjpp bml0aWFsaXplQ2xpZW50KFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQKKyAKKyB2b2lkIFFN ZXRhT2JqZWN0UHVibGlzaGVyOjppbml0aWFsaXplUHJvcGVydHlVcGRhdGVzKGNvbnN0IFFPYmpl Y3QgKmNvbnN0IG9iamVjdCwgY29uc3QgUUpzb25PYmplY3QgJm9iamVjdEluZm8pCisgeworKyAg ICBhdXRvICpzaWduYWxIYW5kbGVyID0gc2lnbmFsSGFuZGxlckZvcihvYmplY3QpOworICAgICBm b3JlYWNoIChjb25zdCBRSnNvblZhbHVlICZwcm9wZXJ0eUluZm9WYXIsIG9iamVjdEluZm9bS0VZ X1BST1BFUlRJRVNdLnRvQXJyYXkoKSkgeworICAgICAgICAgY29uc3QgUUpzb25BcnJheSAmcHJv cGVydHlJbmZvID0gcHJvcGVydHlJbmZvVmFyLnRvQXJyYXkoKTsKKyAgICAgICAgIGlmIChwcm9w ZXJ0eUluZm8uc2l6ZSgpIDwgMikgeworQEAgLTM1MywxOSArMzUyLDE5IEBAIHZvaWQgUU1ldGFP YmplY3RQdWJsaXNoZXI6OmluaXRpYWxpemVQcm9wZXJ0eVVwZGF0ZXMoY29uc3QgUU9iamVjdCAq Y29uc3Qgb2JqZWN0CisgCisgICAgICAgICAvLyBPbmx5IGNvbm5lY3QgZm9yIGEgcHJvcGVydHkg dXBkYXRlIG9uY2UKKyAgICAgICAgIGlmIChjb25uZWN0ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkg eworLSAgICAgICAgICAgIHNpZ25hbEhhbmRsZXIuY29ubmVjdFRvKG9iamVjdCwgc2lnbmFsSW5k ZXgpOworKyAgICAgICAgICAgIHNpZ25hbEhhbmRsZXItPmNvbm5lY3RUbyhvYmplY3QsIHNpZ25h bEluZGV4KTsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIGNvbm5lY3RlZFByb3BlcnRpZXMuaW5z ZXJ0KHByb3BlcnR5SW5kZXgpOworICAgICB9CisgCisgICAgIC8vIGFsc28gYWx3YXlzIGNvbm5l Y3QgdG8gZGVzdHJveWVkIHNpZ25hbAorLSAgICBzaWduYWxIYW5kbGVyLmNvbm5lY3RUbyhvYmpl Y3QsIHNfZGVzdHJveWVkU2lnbmFsSW5kZXgpOworKyAgICBzaWduYWxIYW5kbGVyLT5jb25uZWN0 VG8ob2JqZWN0LCBzX2Rlc3Ryb3llZFNpZ25hbEluZGV4KTsKKyB9CisgCisgdm9pZCBRTWV0YU9i amVjdFB1Ymxpc2hlcjo6c2VuZFBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMoKQorIHsKKy0gICAgaWYg KGJsb2NrVXBkYXRlcyB8fCAhY2xpZW50SXNJZGxlIHx8IHBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMu aXNFbXB0eSgpKSB7CisrICAgIGlmIChibG9ja1VwZGF0ZXMpIHsKKyAgICAgICAgIHJldHVybjsK KyAgICAgfQorIAorQEAgLTQxNSwxOCArNDE0LDE5IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNo ZXI6OnNlbmRQZW5kaW5nUHJvcGVydHlVcGRhdGVzKCkKKyAKKyAgICAgLy8gZGF0YSBkb2VzIG5v dCBjb250YWluIHNwZWNpZmljIHVwZGF0ZXMKKyAgICAgaWYgKCFkYXRhLmlzRW1wdHkoKSkgewor LSAgICAgICAgc2V0Q2xpZW50SXNJZGxlKGZhbHNlKTsKKy0KKyAgICAgICAgIG1lc3NhZ2VbS0VZ X0RBVEFdID0gZGF0YTsKKy0gICAgICAgIGJyb2FkY2FzdE1lc3NhZ2UobWVzc2FnZSk7CisrICAg ICAgICBlbnF1ZXVlQnJvYWRjYXN0TWVzc2FnZShtZXNzYWdlKTsKKyAgICAgfQorIAorICAgICAv LyBzZW5kIGV2ZXJ5IHByb3BlcnR5IHVwZGF0ZSB3aGljaCBpcyBub3Qgc3VwcG9zZWQgdG8gYmUg YnJvYWRjYXN0ZWQKKyAgICAgY29uc3QgUUhhc2g8UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9y dCosIFFKc29uQXJyYXk+Ojpjb25zdF9pdGVyYXRvciBzdWVuZCA9IHNwZWNpZmljVXBkYXRlcy5j b25zdEVuZCgpOworICAgICBmb3IgKFFIYXNoPFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQq LCBRSnNvbkFycmF5Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzcGVjaWZpY1VwZGF0ZXMuY29uc3RC ZWdpbigpOyBpdCAhPSBzdWVuZDsgKytpdCkgeworICAgICAgICAgbWVzc2FnZVtLRVlfREFUQV0g PSBpdC52YWx1ZSgpOworLSAgICAgICAgaXQua2V5KCktPnNlbmRNZXNzYWdlKG1lc3NhZ2UpOwor KyAgICAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZSwgaXQua2V5KCkpOworICAgICB9CisrCisr ICAgIGZvciAoYXV0byBzdGF0ZSA9IHRyYW5zcG9ydFN0YXRlLmJlZ2luKCk7IHN0YXRlICE9IHRy YW5zcG9ydFN0YXRlLmVuZCgpOyArK3N0YXRlKQorKyAgICAgICAgc2VuZEVucXVldWVkUHJvcGVy dHlVcGRhdGVzKHN0YXRlLmtleSgpKTsKKyB9CisgCisgUVZhcmlhbnQgUU1ldGFPYmplY3RQdWJs aXNoZXI6Omludm9rZU1ldGhvZChRT2JqZWN0ICpjb25zdCBvYmplY3QsIGNvbnN0IFFNZXRhTWV0 aG9kICZtZXRob2QsCitAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNo ZXI6OnNpZ25hbEVtaXR0ZWQoY29uc3QgUU9iamVjdCAqb2JqZWN0LCBjb25zdCBpbnQgc2lnbmFs CisgICAgICAgICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgICBwZW5kaW5nUHJvcGVydHlVcGRh dGVzW29iamVjdF1bc2lnbmFsSW5kZXhdID0gYXJndW1lbnRzOworLSAgICAgICAgaWYgKGNsaWVu dElzSWRsZSAmJiAhYmxvY2tVcGRhdGVzICYmICF0aW1lci5pc0FjdGl2ZSgpKSB7CisrICAgICAg ICBpZiAoIWJsb2NrVXBkYXRlcyAmJiAhdGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICAgICAg IHRpbWVyLnN0YXJ0KFBST1BFUlRZX1VQREFURV9JTlRFUlZBTCwgdGhpcyk7CisgICAgICAgICB9 CisgICAgIH0KK0BAIC01OTAsNyArNTkwLDcgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6 b2JqZWN0RGVzdHJveWVkKGNvbnN0IFFPYmplY3QgKm9iamVjdCkKKyAgICAgLy8gb25seSByZW1v dmUgZnJvbSBoYW5kbGVyIHdoZW4gd2UgaW5pdGlhbGl6ZWQgdGhlIHByb3BlcnR5IHVwZGF0ZXMK KyAgICAgLy8gY2Y6IGh0dHBzOi8vYnVncmVwb3J0cy5xdC5pby9icm93c2UvUVRCVUctNjAyNTAK KyAgICAgaWYgKHByb3BlcnR5VXBkYXRlc0luaXRpYWxpemVkKSB7CistICAgICAgICBzaWduYWxI YW5kbGVyLnJlbW92ZShvYmplY3QpOworKyAgICAgICAgc2lnbmFsSGFuZGxlckZvcihvYmplY3Qp LT5yZW1vdmUob2JqZWN0KTsKKyAgICAgICAgIHNpZ25hbFRvUHJvcGVydHlNYXAucmVtb3ZlKG9i amVjdCk7CisgICAgIH0KKyAgICAgcGVuZGluZ1Byb3BlcnR5VXBkYXRlcy5yZW1vdmUob2JqZWN0 KTsKK0BAIC04NTIsNiArODUyLDUyIEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmJyb2Fk Y2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UpIGNvbnN0CisgICAgIH0KKyB9 CisgCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6ZW5xdWV1ZUJyb2FkY2FzdE1lc3NhZ2Uo Y29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UpCisreworKyAgICBpZiAod2ViQ2hhbm5lbC0+ZF9m dW5jKCktPnRyYW5zcG9ydHMuaXNFbXB0eSgpKSB7CisrICAgICAgICBxV2FybmluZygiUVdlYkNo YW5uZWwgaXMgbm90IGNvbm5lY3RlZCB0byBhbnkgdHJhbnNwb3J0cywgY2Fubm90IHNlbmQgbWVz c2FnZTogJXMiLAorKyAgICAgICAgICAgICAgICAgUUpzb25Eb2N1bWVudChtZXNzYWdlKS50b0pz b24oKS5jb25zdERhdGEoKSk7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKysgICAgZm9y IChhdXRvICp0cmFuc3BvcnQgOiB3ZWJDaGFubmVsLT5kX2Z1bmMoKS0+dHJhbnNwb3J0cykgewor KyAgICAgICAgYXV0byAmc3RhdGUgPSB0cmFuc3BvcnRTdGF0ZVt0cmFuc3BvcnRdOworKyAgICAg ICAgc3RhdGUucXVldWVkTWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpOworKyAgICB9CisrfQorKwor K3ZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmVucXVldWVNZXNzYWdlKGNvbnN0IFFKc29uT2Jq ZWN0ICZtZXNzYWdlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKKyt7CisrICAgIGF1dG8g JnN0YXRlID0gdHJhbnNwb3J0U3RhdGVbdHJhbnNwb3J0XTsKKysgICAgc3RhdGUucXVldWVkTWVz c2FnZXMuYXBwZW5kKG1lc3NhZ2UpOworK30KKysKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVy OjpzZW5kRW5xdWV1ZWRQcm9wZXJ0eVVwZGF0ZXMoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9y dCAqdHJhbnNwb3J0KQorK3sKKysgICAgYXV0byBmb3VuZCA9IHRyYW5zcG9ydFN0YXRlLmZpbmQo dHJhbnNwb3J0KTsKKysgICAgaWYgKGZvdW5kICE9IHRyYW5zcG9ydFN0YXRlLmVuZCgpICYmIGZv dW5kLnZhbHVlKCkuY2xpZW50SXNJZGxlCisrICAgICAgICAmJiAhZm91bmQudmFsdWUoKS5xdWV1 ZWRNZXNzYWdlcy5pc0VtcHR5KCkpIHsKKysKKysgICAgICAgIC8vIElmIHRoZSBjbGllbnQgaXMg Y29ubmVjdGVkIHdpdGggYW4gaW4tcHJvY2VzcyB0cmFuc3BvcnQsIGl0IGNhbgorKyAgICAgICAg Ly8gaGFwcGVuIHRoYXQgYSBtZXNzYWdlIHRyaWdnZXJzIGEgc3Vic2VxdWVudCBwcm9wZXJ0eSBj aGFuZ2UuIEluCisrICAgICAgICAvLyB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQg dGhlIHF1ZXVlZCBtZXNzYWdlcyBoYXZlIGFscmVhZHkKKysgICAgICAgIC8vIGJlZW4gY2xlYXJl ZDsgb3RoZXJ3aXNlIHRoZSByZWN1cnNpdmUgY2FsbCB3aWxsIHNlbmQgZXZlcnl0aGlnIGFnYWlu LgorKyAgICAgICAgLy8gQ2FzZSBpbiBwb2ludDogVGhlIHFtbHdlYmNoYW5uZWwgdGVzdHMgZmFp bCBpZiB3ZSBkb24ndCBjbGVhciB0aGUKKysgICAgICAgIC8vIHF1ZXVlZCBtZXNzYWdlcyBiZWZv cmUgc2VuZGluZyB0aGVtIG91dC4KKysgICAgICAgIC8vIEZvciB0aGF0IHNhbWUgcmVhc29uIHNl dCB0aGUgY2xpZW50IHRvICJidXN5IiAoYWthIG5vbi1pZGxlKSBqdXN0CisrICAgICAgICAvLyBy aWdodCBiZWZvcmUgc2VuZGluZyBvdXQgdGhlIG1lc3NhZ2VzOyBvdGhlcndpc2UgYSBwb3RlbnRp YWwKKysgICAgICAgIC8vICJJZGxlIiB0eXBlIG1lc3NhZ2Ugd2lsbCBub3QgY29ycmVjdGx5IHJl c3RvcmUgdGhlIElkbGUgc3RhdGUuCisrICAgICAgICBjb25zdCBhdXRvIG1lc3NhZ2VzID0gc3Rk Ojptb3ZlKGZvdW5kLnZhbHVlKCkucXVldWVkTWVzc2FnZXMpOworKyAgICAgICAgUV9BU1NFUlQo Zm91bmQudmFsdWUoKS5xdWV1ZWRNZXNzYWdlcy5pc0VtcHR5KCkpOworKyAgICAgICAgZm91bmQu dmFsdWUoKS5jbGllbnRJc0lkbGUgPSBmYWxzZTsKKysKKysgICAgICAgIGZvciAoY29uc3QgYXV0 byAmbWVzc2FnZSA6IG1lc3NhZ2VzKSB7CisrICAgICAgICAgICAgdHJhbnNwb3J0LT5zZW5kTWVz c2FnZShtZXNzYWdlKTsKKysgICAgICAgIH0KKysgICAgfQorK30KKysKKyB2b2lkIFFNZXRhT2Jq ZWN0UHVibGlzaGVyOjpoYW5kbGVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLCBR V2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisgeworICAgICBpZiAoIXdl YkNoYW5uZWwtPmRfZnVuYygpLT50cmFuc3BvcnRzLmNvbnRhaW5zKHRyYW5zcG9ydCkpIHsKK0BA IC04NjYsNyArOTEyLDcgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aGFuZGxlTWVzc2Fn ZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSwgUVdlYkNoYW5uZWwKKyAKKyAgICAgY29uc3Qg TWVzc2FnZVR5cGUgdHlwZSA9IHRvVHlwZShtZXNzYWdlLnZhbHVlKEtFWV9UWVBFKSk7CisgICAg IGlmICh0eXBlID09IFR5cGVJZGxlKSB7CistICAgICAgICBzZXRDbGllbnRJc0lkbGUodHJ1ZSk7 CisrICAgICAgICBzZXRDbGllbnRJc0lkbGUodHJ1ZSwgdHJhbnNwb3J0KTsKKyAgICAgfSBlbHNl IGlmICh0eXBlID09IFR5cGVJbml0KSB7CisgICAgICAgICBpZiAoIW1lc3NhZ2UuY29udGFpbnMo S0VZX0lEKSkgeworICAgICAgICAgICAgIHFXYXJuaW5nKCJKU09OIG1lc3NhZ2Ugb2JqZWN0IGlz IG1pc3NpbmcgdGhlIGlkIHByb3BlcnR5OiAlcyIsCitAQCAtOTEzLDkgKzk1OSw5IEBAIHZvaWQg UU1ldGFPYmplY3RQdWJsaXNoZXI6OmhhbmRsZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1l c3NhZ2UsIFFXZWJDaGFubmVsCisgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg ICB0cmFuc3BvcnQtPnNlbmRNZXNzYWdlKGNyZWF0ZVJlc3BvbnNlKG1lc3NhZ2UudmFsdWUoS0VZ X0lEKSwgd3JhcFJlc3VsdChyZXN1bHQsIHRyYW5zcG9ydCkpKTsKKyAgICAgICAgIH0gZWxzZSBp ZiAodHlwZSA9PSBUeXBlQ29ubmVjdFRvU2lnbmFsKSB7CistICAgICAgICAgICAgc2lnbmFsSGFu ZGxlci5jb25uZWN0VG8ob2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9TSUdOQUwpLnRvSW50KC0x KSk7CisrICAgICAgICAgICAgc2lnbmFsSGFuZGxlckZvcihvYmplY3QpLT5jb25uZWN0VG8ob2Jq ZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9TSUdOQUwpLnRvSW50KC0xKSk7CisgICAgICAgICB9IGVs c2UgaWYgKHR5cGUgPT0gVHlwZURpc2Nvbm5lY3RGcm9tU2lnbmFsKSB7CistICAgICAgICAgICAg c2lnbmFsSGFuZGxlci5kaXNjb25uZWN0RnJvbShvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJ R05BTCkudG9JbnQoLTEpKTsKKysgICAgICAgICAgICBzaWduYWxIYW5kbGVyRm9yKG9iamVjdCkt PmRpc2Nvbm5lY3RGcm9tKG9iamVjdCwgbWVzc2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgt MSkpOworICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFR5cGVTZXRQcm9wZXJ0eSkgeworICAg ICAgICAgICAgIHNldFByb3BlcnR5KG9iamVjdCwgbWVzc2FnZS52YWx1ZShLRVlfUFJPUEVSVFkp LnRvSW50KC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnZhbHVlKEtFWV9W QUxVRSkpOworQEAgLTkzMSw2ICs5NzcsNyBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpz ZXRCbG9ja1VwZGF0ZXMoYm9vbCBibG9jaykKKyAgICAgYmxvY2tVcGRhdGVzID0gYmxvY2s7Cisg CisgICAgIGlmICghYmxvY2tVcGRhdGVzKSB7CisrICAgICAgICB0aW1lci5zdGFydChQUk9QRVJU WV9VUERBVEVfSU5URVJWQUwsIHRoaXMpOworICAgICAgICAgc2VuZFBlbmRpbmdQcm9wZXJ0eVVw ZGF0ZXMoKTsKKyAgICAgfSBlbHNlIGlmICh0aW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgICB0 aW1lci5zdG9wKCk7CitAQCAtOTQ4LDQgKzk5NSwxNSBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlz aGVyOjp0aW1lckV2ZW50KFFUaW1lckV2ZW50ICpldmVudCkKKyAgICAgfQorIH0KKyAKKytTaWdu YWxIYW5kbGVyPFFNZXRhT2JqZWN0UHVibGlzaGVyPiAqUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNp Z25hbEhhbmRsZXJGb3IoY29uc3QgUU9iamVjdCAqb2JqZWN0KQorK3sKKysgICAgYXV0byB0aHJl YWQgPSBvYmplY3QtPnRocmVhZCgpOworKyAgICBhdXRvIGl0ID0gc2lnbmFsSGFuZGxlcnMuZmlu ZCh0aHJlYWQpOworKyAgICBpZiAoaXQgPT0gc2lnbmFsSGFuZGxlcnMuZW5kKCkpIHsKKysgICAg ICAgIGl0ID0gc2lnbmFsSGFuZGxlcnMuZW1wbGFjZSh0aHJlYWQsIHRoaXMpLmZpcnN0OworKyAg ICAgICAgaXQtPnNlY29uZC5tb3ZlVG9UaHJlYWQodGhyZWFkKTsKKysgICAgfQorKyAgICByZXR1 cm4gJml0LT5zZWNvbmQ7CisrfQorKworIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9x dHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXJfcC5oIGIvcXR3 ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaAoraW5kZXgg YmJkOTg3NS4uNDcxM2VmMSAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5l bC9xbWV0YW9iamVjdHB1Ymxpc2hlcl9wLmgKKysrKyBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hh bm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlcl9wLmgKK0BAIC01OSw2ICs1OSw5IEBACisgI2luY2x1 ZGUgPFFCYXNpY1RpbWVyPgorICNpbmNsdWRlIDxRUG9pbnRlcj4KKyAjaW5jbHVkZSA8UUpzb25P YmplY3Q+CisrI2luY2x1ZGUgPFFRdWV1ZT4KKysKKysjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4K KyAKKyAjaW5jbHVkZSAicXdlYmNoYW5uZWxnbG9iYWwuaCIKKyAKK0BAIC0xMDksMTcgKzExMiwz NiBAQCBwdWJsaWM6CisgICAgICAqLworICAgICB2b2lkIGJyb2FkY2FzdE1lc3NhZ2UoY29uc3Qg UUpzb25PYmplY3QgJm1lc3NhZ2UpIGNvbnN0OworIAorKyAgICAvKioKKysgICAgICogRW5xdWV1 ZSB0aGUgZ2l2ZW4gQHAgbWVzc2FnZSB0byBhbGwga25vd24gdHJhbnNwb3J0cy4KKysgICAgICov CisrICAgIHZvaWQgZW5xdWV1ZUJyb2FkY2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1l c3NhZ2UpOworKworKyAgICAvKioKKysgICAgICogRW5xdWV1ZSB0aGUgZ2l2ZW4gQHAgbWVzc2Fn ZSB0byBAcCB0cmFuc3BvcnQuCisrICAgICAqLworKyAgICB2b2lkIGVucXVldWVNZXNzYWdlKGNv bnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0 cmFuc3BvcnQpOworKworKyAgICAvKioKKysgICAgICogSWYgY2xpZW50IGZvciBnaXZlbiBAcCB0 cmFuc3BvcnQgaXMgaWRsZSwgc2VuZCBxdWV1ZWQgbWVzc2FnZWQgdG8gQHAgdHJhbnNwb3J0IGFu ZCB0aGVuIG1hcmsKKysgICAgICogdGhlIGNsaWVudCBhcyBub3QgaWRsZS4KKysgICAgICovCisr ICAgIHZvaWQgc2VuZEVucXVldWVkUHJvcGVydHlVcGRhdGVzKFFXZWJDaGFubmVsQWJzdHJhY3RU cmFuc3BvcnQgKnRyYW5zcG9ydCk7CisrCisgICAgIC8qKgorICAgICAgKiBTZXJpYWxpemUgdGhl IFFNZXRhT2JqZWN0IG9mIEBwIG9iamVjdCBhbmQgcmV0dXJuIGl0IGluIEpTT04gZm9ybS4KKyAg ICAgICovCisgICAgIFFKc29uT2JqZWN0IGNsYXNzSW5mb0Zvck9iamVjdChjb25zdCBRT2JqZWN0 ICpvYmplY3QsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisgCisg ICAgIC8qKgorLSAgICAgKiBTZXQgdGhlIGNsaWVudCB0byBpZGxlIG9yIGJ1c3ksIGJhc2VkIG9u IHRoZSB2YWx1ZSBvZiBAcCBpc0lkbGUuCistICAgICAqCistICAgICAqIFdoZW4gdGhlIHZhbHVl IGNoYW5nZWQsIHN0YXJ0L3N0b3AgdGhlIHByb3BlcnR5IHVwZGF0ZSB0aW1lciBhY2NvcmRpbmds eS4KKysgICAgICogU2V0IHRoZSBjbGllbnQgdG8gaWRsZSBvciBidXN5IGZvciBhIHNpbmdsZSBA cCB0cmFuc3BvcnQsIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiBAcCBpc0lkbGUuCisrICAgICAqLwor KyAgICB2b2lkIHNldENsaWVudElzSWRsZShib29sIGlzSWRsZSwgUVdlYkNoYW5uZWxBYnN0cmFj dFRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKKysKKysgICAgLyoqCisrICAgICAqIENoZWNrIHRoYXQg Y2xpZW50IGlzIGlkbGUgZm9yIEBwIHRyYW5zcG9ydC4KKyAgICAgICovCistICAgIHZvaWQgc2V0 Q2xpZW50SXNJZGxlKGJvb2wgaXNJZGxlKTsKKysgICAgYm9vbCBpc0NsaWVudElkbGUoUVdlYkNo YW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKKyAKKyAgICAgLyoqCisgICAgICAq IEluaXRpYWxpemUgY2xpZW50cyBieSBzZW5kaW5nIHRoZW0gdGhlIGNsYXNzIGluZm9ybWF0aW9u IG9mIHRoZSByZWdpc3RlcmVkIG9iamVjdHMuCitAQCAtMjcyLDEwICsyOTQsMTggQEAgcHJpdmF0 ZToKKyAgICAgZnJpZW5kIGNsYXNzIFRlc3RXZWJDaGFubmVsOworIAorICAgICBRV2ViQ2hhbm5l bCAqd2ViQ2hhbm5lbDsKKy0gICAgU2lnbmFsSGFuZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4g c2lnbmFsSGFuZGxlcjsKKysgICAgc3RkOjp1bm9yZGVyZWRfbWFwPGNvbnN0IFFUaHJlYWQqLCBT aWduYWxIYW5kbGVyPFFNZXRhT2JqZWN0UHVibGlzaGVyPj4gc2lnbmFsSGFuZGxlcnM7CisrICAg IFNpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQdWJsaXNoZXI+ICpzaWduYWxIYW5kbGVyRm9yKGNv bnN0IFFPYmplY3QgKm9iamVjdCk7CisgCistICAgIC8vIHRydWUgd2hlbiB0aGUgY2xpZW50IGlz IGlkbGUsIGZhbHNlIG90aGVyd2lzZQorLSAgICBib29sIGNsaWVudElzSWRsZTsKKysgICAgc3Ry dWN0IFRyYW5zcG9ydFN0YXRlCisrICAgIHsKKysgICAgICAgIFRyYW5zcG9ydFN0YXRlKCkgOiBj bGllbnRJc0lkbGUoZmFsc2UpIHsgfQorKyAgICAgICAgLy8gdHJ1ZSB3aGVuIHRoZSBjbGllbnQg aXMgaWRsZSwgZmFsc2Ugb3RoZXJ3aXNlCisrICAgICAgICBib29sIGNsaWVudElzSWRsZTsKKysg ICAgICAgIC8vIG1lc3NhZ2VzIHRvIHNlbmQKKysgICAgICAgIFFRdWV1ZTxRSnNvbk9iamVjdD4g cXVldWVkTWVzc2FnZXM7CisrICAgIH07CisrICAgIFFIYXNoPFFXZWJDaGFubmVsQWJzdHJhY3RU cmFuc3BvcnQgKiwgVHJhbnNwb3J0U3RhdGU+IHRyYW5zcG9ydFN0YXRlOworIAorICAgICAvLyB0 cnVlIHdoZW4gbm8gcHJvcGVydHkgdXBkYXRlcyBzaG91bGQgYmUgc2VudCwgZmFsc2Ugb3RoZXJ3 aXNlCisgICAgIGJvb2wgYmxvY2tVcGRhdGVzOworZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC9z cmMvd2ViY2hhbm5lbC9zaWduYWxoYW5kbGVyX3AuaCBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hh bm5lbC9zaWduYWxoYW5kbGVyX3AuaAoraW5kZXggMjdhZmFkYi4uZDc3MzczYyAxMDA2NDQKKy0t LSBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9zaWduYWxoYW5kbGVyX3AuaAorKysrIGIv cXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJfcC5oCitAQCAtNTYsNiAr NTYsNyBAQAorICNpbmNsdWRlIDxRVmVjdG9yPgorICNpbmNsdWRlIDxRTWV0YU1ldGhvZD4KKyAj aW5jbHVkZSA8UURlYnVnPgorKyNpbmNsdWRlIDxRVGhyZWFkPgorIAorIFFUX0JFR0lOX05BTUVT UEFDRQorIAorQEAgLTcxLDYgKzcyLDcgQEAgc3RhdGljIGNvbnN0IGludCBzX2Rlc3Ryb3llZFNp Z25hbEluZGV4ID0gUU9iamVjdDo6c3RhdGljTWV0YU9iamVjdC5pbmRleE9mTWV0aG8KKyB0ZW1w bGF0ZTxjbGFzcyBSZWNlaXZlcj4KKyBjbGFzcyBTaWduYWxIYW5kbGVyIDogcHVibGljIFFPYmpl Y3QKKyB7CisrICAgIFFfRElTQUJMRV9DT1BZKFNpZ25hbEhhbmRsZXIpCisgcHVibGljOgorICAg ICBTaWduYWxIYW5kbGVyKFJlY2VpdmVyICpyZWNlaXZlciwgUU9iamVjdCAqcGFyZW50ID0gMCk7 CisgCitAQCAtMjY4LDYgKzI3MCw3IEBAIGludCBTaWduYWxIYW5kbGVyPFJlY2VpdmVyPjo6cXRf bWV0YWNhbGwoUU1ldGFPYmplY3Q6OkNhbGwgY2FsbCwgaW50IG1ldGhvZElkLCB2CisgICAgIGlm IChjYWxsID09IFFNZXRhT2JqZWN0OjpJbnZva2VNZXRhTWV0aG9kKSB7CisgICAgICAgICBjb25z dCBRT2JqZWN0ICpvYmplY3QgPSBzZW5kZXIoKTsKKyAgICAgICAgIFFfQVNTRVJUKG9iamVjdCk7 CisrICAgICAgICBRX0FTU0VSVChRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkgPT0gb2JqZWN0LT50 aHJlYWQoKSk7CisgICAgICAgICBRX0FTU0VSVChzZW5kZXJTaWduYWxJbmRleCgpID09IG1ldGhv ZElkKTsKKyAgICAgICAgIFFfQVNTRVJUKG1fY29ubmVjdGlvbnNDb3VudGVyLmNvbnRhaW5zKG9i amVjdCkpOworICAgICAgICAgUV9BU1NFUlQobV9jb25uZWN0aW9uc0NvdW50ZXIudmFsdWUob2Jq ZWN0KS5jb250YWlucyhtZXRob2RJZCkpOworZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC90ZXN0 cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5jcHAgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9x bWwvdGVzdHdlYmNoYW5uZWwuY3BwCitpbmRleCA5ODkxNjg3Li4zY2E4MWMyIDEwMDY0NAorLS0t IGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vcW1sL3Rlc3R3ZWJjaGFubmVsLmNwcAorKysrIGIv cXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vcW1sL3Rlc3R3ZWJjaGFubmVsLmNwcAorQEAgLTQ2LDcg KzQ2LDExIEBAIFRlc3RXZWJDaGFubmVsOjp+VGVzdFdlYkNoYW5uZWwoKQorIAorIGJvb2wgVGVz dFdlYkNoYW5uZWw6OmNsaWVudElzSWRsZSgpIGNvbnN0CisgeworLSAgICByZXR1cm4gUVdlYkNo YW5uZWw6OmRfZnVuYygpLT5wdWJsaXNoZXItPmNsaWVudElzSWRsZTsKKysgICAgZm9yIChhdXRv ICp0cmFuc3BvcnQgOiBRV2ViQ2hhbm5lbDo6ZF9mdW5jKCktPnRyYW5zcG9ydHMpIHsKKysgICAg ICAgIGlmIChRV2ViQ2hhbm5lbDo6ZF9mdW5jKCktPnB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKHRy YW5zcG9ydCkpCisrICAgICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgIH0KKysgICAgcmV0dXJu IGZhbHNlOworIH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFu bmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5jcHAgYi9xdHdlYmNoYW5u ZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmNwcAoraW5kZXggMTgxZGE5 ZS4uMzdmOTg5YSAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5u ZWwvdHN0X3dlYmNoYW5uZWwuY3BwCisrKysgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJj aGFubmVsL3RzdF93ZWJjaGFubmVsLmNwcAorQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIFRlc3RX ZWJDaGFubmVsOjp0ZXN0VHJhbnNwb3J0V3JhcE9iamVjdFByb3BlcnRpZXMoKQorICAgICBEdW1t eVRyYW5zcG9ydCAqZHVtbXlUcmFuc3BvcnQgPSBuZXcgRHVtbXlUcmFuc3BvcnQodGhpcyk7Cisg ICAgIGNoYW5uZWwuY29ubmVjdFRvKGR1bW15VHJhbnNwb3J0KTsKKyAgICAgY2hhbm5lbC5kX2Z1 bmMoKS0+cHVibGlzaGVyLT5pbml0aWFsaXplQ2xpZW50KGR1bW15VHJhbnNwb3J0KTsKKy0gICAg Y2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSk7CisrICAg IGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsIGR1bW15 VHJhbnNwb3J0KTsKKyAKKyAgICAgUUNPTVBBUkUoY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVy LT50cmFuc3BvcnRlZFdyYXBwZWRPYmplY3RzLnNpemUoKSwgMCk7CisgCitAQCAtOTQzLDggKzk0 Myw2IEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OnRlc3RJbmZpbml0ZVJlY3Vyc2lvbigpCisgCisg dm9pZCBUZXN0V2ViQ2hhbm5lbDo6dGVzdEFzeW5jT2JqZWN0KCkKKyB7CistICAgIFFTS0lQKCJU aGlzIHRlc3QgaXMgYnJva2VuLiBTZWUgUVRCVUctODA3MjkiKTsKKy0KKyAgICAgUVdlYkNoYW5u ZWwgY2hhbm5lbDsKKyAgICAgY2hhbm5lbC5jb25uZWN0VG8obV9kdW1teVRyYW5zcG9ydCk7Cisg CitAQCAtOTkwLDYgKzk4OCw1MCBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0QXN5bmNPYmpl Y3QoKQorICAgICB0aHJlYWQud2FpdCgpOworIH0KKyAKKyt2b2lkIFRlc3RXZWJDaGFubmVsOjp0 ZXN0UHJvcGVydHlNdWx0aXBsZVRyYW5zcG9ydHMoKQorK3sKKysgICAgRHVtbXlUcmFuc3BvcnQg dHJhbnNwb3J0MTsKKysgICAgRHVtbXlUcmFuc3BvcnQgdHJhbnNwb3J0MjsKKysKKysgICAgUVdl YkNoYW5uZWwgY2hhbm5lbDsKKysgICAgUU1ldGFPYmplY3RQdWJsaXNoZXIgKnB1Ymxpc2hlciA9 IGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlcjsKKysKKysgICAgVGVzdE9iamVjdCB0ZXN0T2Jq OworKyAgICB0ZXN0T2JqLnNldE9iamVjdE5hbWUoInRlc3RPYmplY3QiKTsKKysgICAgY2hhbm5l bC5yZWdpc3Rlck9iamVjdCh0ZXN0T2JqLm9iamVjdE5hbWUoKSwgJnRlc3RPYmopOworKyAgICBj aGFubmVsLmNvbm5lY3RUbygmdHJhbnNwb3J0MSk7CisrICAgIGNoYW5uZWwuY29ubmVjdFRvKCZ0 cmFuc3BvcnQyKTsKKysKKysgICAgdGVzdE9iai5zZXRQcm9wKCJIZWxsbyIpOworKworKyAgICBw dWJsaXNoZXItPmluaXRpYWxpemVDbGllbnQoJnRyYW5zcG9ydDEpOworKyAgICBwdWJsaXNoZXIt PmluaXRpYWxpemVDbGllbnQoJnRyYW5zcG9ydDIpOworKyAgICBwdWJsaXNoZXItPnNldENsaWVu dElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0MSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXND bGllbnRJZGxlKCZ0cmFuc3BvcnQxKSwgdHJ1ZSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+ aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQyKSwgZmFsc2UpOworKyAgICBRVkVSSUZZKHRyYW5zcG9y dDEubWVzc2FnZXNTZW50KCkuaXNFbXB0eSgpKTsKKysgICAgUVZFUklGWSh0cmFuc3BvcnQyLm1l c3NhZ2VzU2VudCgpLmlzRW1wdHkoKSk7CisrCisrICAgIHRlc3RPYmouc2V0UHJvcCgiV29ybGQi KTsKKysgICAgUVRSWV9DT01QQVJFX1dJVEhfVElNRU9VVCh0cmFuc3BvcnQxLm1lc3NhZ2VzU2Vu dCgpLnNpemUoKSwgMXUsIDIwMDApOworKyAgICBRQ09NUEFSRSh0cmFuc3BvcnQyLm1lc3NhZ2Vz U2VudCgpLnNpemUoKSwgMHUpOworKyAgICBwdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVl LCAmdHJhbnNwb3J0Mik7CisrICAgIFFUUllfQ09NUEFSRV9XSVRIX1RJTUVPVVQodHJhbnNwb3J0 Mi5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDF1LCAyMDAwKTsKKysgICAgUUNPTVBBUkUocHVibGlz aGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCBmYWxzZSk7CisrICAgIFFDT01QQVJFKHB1 Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQyKSwgZmFsc2UpOworKworKyAgICB0ZXN0 T2JqLnNldFByb3AoIiEhISIpOworKyAgICBwdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVl LCAmdHJhbnNwb3J0Mik7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0 cmFuc3BvcnQyKSwgdHJ1ZSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxl KCZ0cmFuc3BvcnQxKSwgZmFsc2UpOworKyAgICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRy YW5zcG9ydDIubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAydSwgMjAwMCk7CisrICAgIFFDT01QQVJF KHRyYW5zcG9ydDEubWVzc2FnZXNTZW50KCkuc2l6ZSgpLCAxdSk7CisrICAgIHB1Ymxpc2hlci0+ c2V0Q2xpZW50SXNJZGxlKHRydWUsICZ0cmFuc3BvcnQxKTsKKysgICAgUVRSWV9DT01QQVJFX1dJ VEhfVElNRU9VVCh0cmFuc3BvcnQxLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMnUsIDIwMDApOwor KyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MSksIGZhbHNl KTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCBm YWxzZSk7CisrfQorKworIGNsYXNzIEZ1bmN0aW9uV3JhcHBlciA6IHB1YmxpYyBRT2JqZWN0Cisg eworICAgICBRX09CSkVDVAorQEAgLTEwODIsNyArMTEyNCw3IEBAIHZvaWQgVGVzdFdlYkNoYW5u ZWw6OmJlbmNoSW5pdGlhbGl6ZUNsaWVudHMoKQorIAorICAgICAgICAgcHVibGlzaGVyLT5wcm9w ZXJ0eVVwZGF0ZXNJbml0aWFsaXplZCA9IGZhbHNlOworICAgICAgICAgcHVibGlzaGVyLT5zaWdu YWxUb1Byb3BlcnR5TWFwLmNsZWFyKCk7CistICAgICAgICBwdWJsaXNoZXItPnNpZ25hbEhhbmRs ZXIuY2xlYXIoKTsKKysgICAgICAgIHB1Ymxpc2hlci0+c2lnbmFsSGFuZGxlcnMuY2xlYXIoKTsK KyAgICAgfQorIH0KKyAKK0BAIC0xMTA3LDcgKzExNDksNyBAQCB2b2lkIFRlc3RXZWJDaGFubmVs OjpiZW5jaFByb3BlcnR5VXBkYXRlcygpCisgICAgICAgICAgICAgb2JqLT5jaGFuZ2UoKTsKKyAg ICAgICAgIH0KKyAKKy0gICAgICAgIGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+Y2xpZW50 SXNJZGxlID0gdHJ1ZTsKKysgICAgICAgIGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+c2V0 Q2xpZW50SXNJZGxlKHRydWUsIG1fZHVtbXlUcmFuc3BvcnQpOworICAgICAgICAgY2hhbm5lbC5k X2Z1bmMoKS0+cHVibGlzaGVyLT5zZW5kUGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpOworICAgICB9 CisgfQorZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0 X3dlYmNoYW5uZWwuaCBiL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dl YmNoYW5uZWwuaAoraW5kZXggZWFlMjFmNC4uZGQ0ZTY5MCAxMDA2NDQKKy0tLSBhL3F0d2ViY2hh bm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaAorKysrIGIvcXR3ZWJj aGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oCitAQCAtMzQ4LDYg KzM0OCw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgdGVzdEpzb25Ub1ZhcmlhbnQoKTsK KyAgICAgdm9pZCB0ZXN0SW5maW5pdGVSZWN1cnNpb24oKTsKKyAgICAgdm9pZCB0ZXN0QXN5bmNP YmplY3QoKTsKKysgICAgdm9pZCB0ZXN0UHJvcGVydHlNdWx0aXBsZVRyYW5zcG9ydHMoKTsKKyAg ICAgdm9pZCB0ZXN0RGVsZXRpb25EdXJpbmdNZXRob2RJbnZvY2F0aW9uX2RhdGEoKTsKKyAgICAg dm9pZCB0ZXN0RGVsZXRpb25EdXJpbmdNZXRob2RJbnZvY2F0aW9uKCk7CisgCitTdWJtb2R1bGUg cXR3ZWJlbmdpbmUgZjMyODA1NGQuLi4zOGUwZGY2YyAoY29tbWl0cyBub3QgcHJlc2VudCkKK1N1 Ym1vZHVsZSBxdHdlYnNvY2tldHMgNjU4NTA5NTQuLjYzZmI4ZGExOgorZGlmZiAtLWdpdCBhL3F0 d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0ZGF0YXByb2Nlc3Nvci5jcHAgYi9x dHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRhdGFwcm9jZXNzb3IuY3BwCitp bmRleCAyYWZmZGQ1Li45NWYxMTk0IDEwMDY0NAorLS0tIGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJz b2NrZXRzL3F3ZWJzb2NrZXRkYXRhcHJvY2Vzc29yLmNwcAorKysrIGIvcXR3ZWJzb2NrZXRzL3Ny Yy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRkYXRhcHJvY2Vzc29yLmNwcAorQEAgLTI3Myw2ICsyNzMs NyBAQCB2b2lkIFFXZWJTb2NrZXREYXRhUHJvY2Vzc29yOjpjbGVhcigpCisgICAgIGlmICghbV9w Q29udmVydGVyU3RhdGUpCisgICAgICAgICBtX3BDb252ZXJ0ZXJTdGF0ZSA9IG5ldyBRVGV4dENv ZGVjOjpDb252ZXJ0ZXJTdGF0ZShRVGV4dENvZGVjOjpDb252ZXJ0SW52YWxpZFRvTnVsbCB8Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVGV4dENvZGVjOjpJZ25vcmVIZWFkZXIpOworKyAgICBmcmFtZS5jbGVhcigpOworIH0KKyAK KyAvKiEKK2RpZmYgLS1naXQgYS9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tl dHByb3RvY29sLmNwcCBiL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0cHJv dG9jb2wuY3BwCitpbmRleCBkZjg3YTkzLi5kMDQ2NWYxIDEwMDY0NAorLS0tIGEvcXR3ZWJzb2Nr ZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRwcm90b2NvbC5jcHAKKysrKyBiL3F0d2Vic29j a2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwCitAQCAtMjEwLDcgKzIx MCw3IEBAIHZvaWQgUVdlYlNvY2tldFByb3RvY29sOjptYXNrKGNoYXIgKnBheWxvYWQsIHF1aW50 NjQgc2l6ZSwgcXVpbnQzMiBtYXNraW5nS2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBxdWludDgoKG1hc2tpbmdLZXkgJiAweDAwMDBGRjAwdSkgPj4gOCksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHF1aW50OCgobWFza2luZ0tleSAmIDB4MDAwMDAwRkZ1KSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIH07CistICAgIGludCBpID0gMDsKKysgICAgcXVpbnQ2NCBp ID0gMDsKKyAgICAgd2hpbGUgKHNpemUtLSA+IDApCisgICAgICAgICAqcGF5bG9hZCsrIF49IG1h c2tbaSsrICUgNF07CisgfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvdGVtcGxhdGUgYi9zcmNw a2dzL3F0NS90ZW1wbGF0ZQppbmRleCBkMzgyMWVmYmUzNzguLjZkZGRjZTdmM2U0NiAxMDA2NDQK LS0tIGEvc3JjcGtncy9xdDUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUvdGVtcGxhdGUKQEAg LTIsMTEgKzIsMTEgQEAKICMKICMgcmV2YnVtcCBsaWJxdHhkZyBhZnRlciBidW1waW5nIHBhdGNo IHZlcnNpb24KIHBrZ25hbWU9cXQ1Ci12ZXJzaW9uPTUuMTUuNysyMDIyMTExOQordmVyc2lvbj01 LjE1LjgKK3JldmlzaW9uPTEKK2J1aWxkX3N0eWxlPW1ldGEKICMgY29tbWl0IGY4YzlmYjMwNGJj M2U1M2IzYWEwN2Y5NjJjZDc0ZTkxNjBkZWNjY2MKICMgYmFzZSByZXBvOiBodHRwczovL2ludmVu dC5rZGUub3JnL3F0L3F0L3F0NQotcmV2aXNpb249NgotYnVpbGRfc3R5bGU9bWV0YQogaG9zdG1h a2VkZXBlbmRzPSJjbWFrZSBjbGFuZyBmbGV4IHBlcmwgZ2xpYi1kZXZlbCBwa2ctY29uZmlnCiAg cHl0aG9uIHJlMmMgcnVieSB3aGljaCIKIG1ha2VkZXBlbmRzPSJTREwyLWRldmVsIFZ1bGthbi1I ZWFkZXJzIGFsc2EtbGliLWRldmVsIGRvdWJsZS1jb252ZXJzaW9uLWRldmVsCkBAIC0yOSw4ICsy OSw5IEBAIGhvbWVwYWdlPSJodHRwczovL3F0LmlvLyIKICMgdGFyYmFsbCBpcyBnZW5lcmF0ZWQg d2l0aCBgZ2l0IGFyY2hpdmUtYWxsIHF0NS0kdmVyc2lvbi50YXIuZ3pgCiAjIHRvIGtlZXAgdGhl IHNpemUgc21hbGxlciBxdHdlYmVuZ2luZSwgcXR3ZWJ2aWV3LCBxdGRvY2dhbGxlcnksIHF0YWN0 aXZlcXQgYW5kIHF0cGltCiAjIGNhbiBiZSBtYXJrZWQgd2l0aCB0aGUgZXhwb3J0LWlnbm9yZSBh dHRyaWJ1dGUKLWRpc3RmaWxlcz0iaHR0cHM6Ly92b2lkLmpvaG5ueW5hdG9yLmRldi9kaXN0Zmls ZXMvcXQ1LSR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09OWQ1N2FmNDcxYzc4MDI5YTM2MjI3 NmI3Yzk5MTA4ZWEwMDlmNTExYmI5YmE2ZmY2Y2I4ODRmNmRkZDI1NWU5ZgorI2Rpc3RmaWxlcz0i aHR0cHM6Ly92b2lkLmpvaG5ueW5hdG9yLmRldi9kaXN0ZmlsZXMvcXQ1LSR7dmVyc2lvbn0udGFy Lmd6IgorZGlzdGZpbGVzPSJodHRwczovL2Rvd25sb2FkLnF0LmlvL2FyY2hpdmUvcXQvNS4xNS8k e3ZlcnNpb259L3NpbmdsZS9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLSR7dmVyc2lvbn0u dGFyLnh6IgorY2hlY2tzdW09Nzc2YTkzMDJjMzM2NjcxZjk0MDZhNTNiZDMwYjhlMzZmODI1NzQy YjJlYzQ0YTU3YzA4MjE3YmZmMGZhODZiOQogcHl0aG9uX3ZlcnNpb249MiAjdW52ZXJpZmllZAog cmVwbGFjZXM9InF0NS1kb2M8NS42LjAgcXQ1LXF1aWNrMTw1LjYuMCBxdDUtcXVpY2sxLWRldmVs PDUuNi4wIHF0NS13ZWJraXQ8NS42LjAgcXQ1LXdlYmtpdC1kZXZlbDw1LjYuMAogIHF0NS1lbmdp bmlvPDUuNy4xIHF0NS1lbmdpbmlvLWRldmVsPDUuNy4xIHF0NS1wbHVnaW4tZ3RrPDUuNy4xIHF0 NS1jYW52YXMzZDw1LjEzLjAiCkBAIC0yNTAsNyArMjUxLDYgQEAgZG9fY29uZmlndXJlKCkgewog CSMgb3B0cys9IiAtdiIKIAlvcHRzKz0iIC1za2lwIHF0d2ViZW5naW5lIgogCW9wdHMrPSIgLXNr aXAgcXR3ZWJ2aWV3IgotCW9wdHMrPSIgLXNraXAgcXRkb2NnYWxsZXJ5IgogCW9wdHMrPSIgLXNr aXAgcXRwaW0iCiAJb3B0cys9IiAtc2tpcCBxdHN5c3RlbXMiCiAJb3B0cys9IiAtc2tpcCBxdHNw ZWVjaCIKCkZyb20gZGJkOWY0YjZkOWRjMGU3NGJlMGUyNWI1ZDUwYjJlODQzMmQ0MmRkMCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDcyLzEx NV0gcXRhdjogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3F0YXYvdGVt cGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdGF2L3RlbXBsYXRlIGIvc3JjcGtncy9xdGF2 L3RlbXBsYXRlCmluZGV4IDM0YzMwYjJjMGM3OC4uMmQwMGFkMTA0MzU1IDEwMDY0NAotLS0gYS9z cmNwa2dzL3F0YXYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdGF2L3RlbXBsYXRlCkBAIC0xLDEw ICsxLDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdGF2JwogcGtnbmFtZT1xdGF2CiB2ZXJz aW9uPTEuMTMuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cW1ha2UKIGhv c3RtYWtlZGVwZW5kcz0icXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIgotbWFrZWRlcGVuZHM9ImZm bXBlZy1kZXZlbCBsaWJhc3MtZGV2ZWwgbGlib3BlbmFsLWRldmVsCittYWtlZGVwZW5kcz0iZmZt cGVnNC1kZXZlbCBsaWJhc3MtZGV2ZWwgbGlib3BlbmFsLWRldmVsCiAgbGlidmEtZ2x4LWRldmVs IGxpYlh2LWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKICBxdDUtZGVjbGFyYXRpdmUtZGV2ZWwgcXQ1 LXN2Zy1kZXZlbAogIHF0NS1xdWlja2NvbnRyb2xzIgoKRnJvbSAyOTk5NjAwOWQyMzNjODgzZDhl ZjU2MTEzZGJlY2QyOTk5YTI0MjA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwNzMvMTE1XSBxdG94OiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvcXRveC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXRveC90ZW1w bGF0ZSBiL3NyY3BrZ3MvcXRveC90ZW1wbGF0ZQppbmRleCAxNjAxOWQ3ZWFlYzkuLjVjZWEwYjEx YjY5NyAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdG94L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXRv eC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0b3gnCiBw a2duYW1lPXF0b3gKIHZlcnNpb249MS4xNy42Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWls ZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EVVBEQVRFX0NIRUNLPU9GRgogIC1ER0lU X0RFU0NSSUJFPSR7dmVyc2lvbn0KCkZyb20gM2RjMmQyYTJlN2NiZTg0M2UyODQ1ZjllNGJkNWJl OWE1NGEwMTk3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDc0LzExNV0gcmV0cm9hcmNoOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0K IHNyY3BrZ3MvcmV0cm9hcmNoL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9yZXRyb2FyY2gv dGVtcGxhdGUgYi9zcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZQppbmRleCAyODAxNmFhMDEyOWUu LjIwYTE0MTU5MTNiZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdyZXRyb2FyY2gnCiBwa2duYW1lPXJldHJvYXJjaAogdmVyc2lvbj0xLjE1LjAK LXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNvbmZpZ3VyZQogY29uZmlndXJl X2FyZ3M9Ii0tcHJlZml4PS91c3IgLS1zeXNjb25mZGlyPS9ldGMgLS1lbmFibGUtbmV0d29ya2lu ZwogIC0tZW5hYmxlLXVkZXYgLS1kaXNhYmxlLWJ1aWx0aW5mbGFjIC0tZGlzYWJsZS1idWlsdGlu Z2xzbGFuZwoKRnJvbSA3MGQ1YzVhMjMwYjZkY2Q2YmNhOTIxZGFlY2ExMWUzOTZlY2ExM2Q5IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzUv MTE1XSBzY3JjcHk6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9zY3JjcHkv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc2Ny Y3B5L3RlbXBsYXRlCmluZGV4IGFjMThiYzAzNDE4Yy4uZjM5YTdmNjc4YWIzIDEwMDY0NAotLS0g YS9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NjcmNweScKIHBrZ25hbWU9c2Ny Y3B5CiB2ZXJzaW9uPTIuMS4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1t ZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EY29tcGlsZV9zZXJ2ZXI9ZmFsc2UKICAtRHByZWJ1aWx0 X3NlcnZlcj0vdXNyL3NoYXJlL3NjcmNweS9zY3JjcHktc2VydmVyLXYke3ZlcnNpb259IgoKRnJv bSAwZmJiZjM0ODgyN2YxNDJjYzk2OWEzODQ5YzNlMWQxODlhNTlkMWJmIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzYvMTE1XSBzcGVrLWFs dGVybmF0aXZlOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvc3Blay1h bHRlcm5hdGl2ZS90ZW1wbGF0ZSB8IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRp b25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3Blay1hbHRlcm5h dGl2ZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0ZQppbmRleCBk NjUwODZiOGYwMDguLjA1MjQ2ZjFiOGQwYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9zcGVrLWFsdGVy bmF0aXZlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0ZQpA QCAtMSwxMSArMSwxMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc3Blay1hbHRlcm5hdGl2ZScK IHBrZ25hbWU9c3Blay1hbHRlcm5hdGl2ZQogdmVyc2lvbj0wLjguMi4zCi1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9ImF1 dG9tYWtlIGdldHRleHQtZGV2ZWwgaW50bHRvb2wgbGlidG9vbCBwa2ctY29uZmlnIHd4V2lkZ2V0 cy1jb21tb24iCi1tYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHd4V2lkZ2V0cy1ndGszLWRldmVs IgotZGVwZW5kcz0iZmZtcGVnIgorbWFrZWRlcGVuZHM9ImZmbXBlZzQtZGV2ZWwgd3hXaWRnZXRz LWd0azMtZGV2ZWwiCitkZXBlbmRzPSJmZm1wZWc0Igogc2hvcnRfZGVzYz0iQWNvdXN0aWMgc3Bl Y3RydW0gYW5hbHlzZXIiCiBtYWludGFpbmVyPSJLYXJ0aWsgU2luZ2ggPGthcnRpay55bndhQGdt YWlsLmNvbT4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgoKRnJvbSA2ZDNhZDViNjkxMDY4 YzkyNWQ3NjNiMTBmODgxNmRiNGExMTc5NjA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzcvMTE1XSBzc3I6IHJldmJ1bXAgZm9yIGZmbXBl ZzQtNC40LjMKCi0tLQogc3JjcGtncy9zc3IvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFu Z2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9zc3IvdGVtcGxhdGUgYi9zcmNwa2dzL3Nzci90ZW1wbGF0ZQppbmRleCBiMDU1YjllYzA3NzQu LjM0NDhjYTExMGViMCAxMDA2NDQKLS0tIGEvc3JjcGtncy9zc3IvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9zc3IvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J3NzcicKIHBrZ25hbWU9c3NyCiB2ZXJzaW9uPTAuNC40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9RVDU9T04iCiBob3N0 bWFrZWRlcGVuZHM9InBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZt cGVnLWRldmVsIGdsdS1kZXZlbCBqYWNrLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKK21ha2VkZXBl bmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWc0LWRldmVsIGdsdS1kZXZlbCBqYWNrLWRldmVsIHB1 bHNlYXVkaW8tZGV2ZWwKICBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXgxMWV4dHJhcy1kZXZlbCBsaWJY aW5lcmFtYS1kZXZlbCB2NGwtdXRpbHMtZGV2ZWwiCiBkZXBlbmRzPSJkZXNrdG9wLWZpbGUtdXRp bHMgaGljb2xvci1pY29uLXRoZW1lIgogc2hvcnRfZGVzYz0iU2ltcGxlIFNjcmVlbiBSZWNvcmRl ciBmb3IgcHJvZ3JhbXMgYW5kIGdhbWVzIgoKRnJvbSAyNjU1YWQxNjdhOTMyMTg3ZTkzNGE2M2Mz NmY4N2QyOTE2MGM4Y2IzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwNzgvMTE1XSBzdW1vOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0K IHNyY3BrZ3Mvc3Vtby90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZSBi L3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZQppbmRleCAwZjliOWVjODE1ZjUuLmEzZmUxMzRhYTVhYyAx MDA2NDQKLS0tIGEvc3JjcGtncy9zdW1vL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3Vtby90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3N1bW8nCiBwa2duYW1l PXN1bW8KIHZlcnNpb249MS4xMi4wCi1yZXZpc2lvbj01CityZXZpc2lvbj02CiBidWlsZF9zdHls ZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJsaWJnZGFsLXRvb2xzIHBrZy1jb25maWcgc3dpZyBw eXRob24zLXNldHVwdG9vbHMiCiBtYWtlZGVwZW5kcz0icHl0aG9uMy1kZXZlbCBmZm1wZWctZGV2 ZWwgZm94LWRldmVsIGdsMnBzLWRldmVsIGxpYmdkYWwtZGV2ZWwKCkZyb20gNGYyZTRjNmRjYWU0 MzEyMzU1ODg1ZWYxNDM5NTJjZWFkZWU4OWY1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDc5LzExNV0gc3luZmlnOiByZXZidW1wIGZvciBm Zm1wZWctNi4wIGFuZCBtbHQ3CgotLS0KIHNyY3BrZ3Mvc3luZmlnL3BhdGNoZXMvZmZtcGVnNi5w YXRjaCB8IDcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3Mvc3luZmlnL3Rl bXBsYXRlICAgICAgICAgICAgICB8ICA2ICstLQogMiBmaWxlcyBjaGFuZ2VkLCA3NCBpbnNlcnRp b25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvc3luZmln L3BhdGNoZXMvZmZtcGVnNi5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmlnL3BhdGNo ZXMvZmZtcGVnNi5wYXRjaCBiL3NyY3BrZ3Mvc3luZmlnL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjEwNzgwYjQyNzgyZgotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mvc3luZmlnL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApAQCAt MCwwICsxLDcxIEBACistLS0gYS9zcmMvbW9kdWxlcy9tb2RfbGliYXZjb2RlYy90cmd0X2F2LmNw cAkyMDIyLTEwLTI1IDA5OjE0OjEyLjAwMDAwMDAwMCAtMDQwMAorKysrIGIvc3JjL21vZHVsZXMv bW9kX2xpYmF2Y29kZWMvdHJndF9hdi5jcHAJMjAyMy0wNS0wNSAyMTozNDoxNy44OTkxOTQ1NTkg LTA0MDAKK0BAIC0zOCw2ICs0MSw3IEBACisgZXh0ZXJuICJDIgorIHsKKyAjaWZkZWYgSEFWRV9M SUJBVkZPUk1BVF9BVkZPUk1BVF9ICisrIwlpbmNsdWRlIDxsaWJhdmNvZGVjL2F2Y29kZWMuaD4K KyAjCWluY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2Zm9ybWF0Lmg+CisgI2VsaWYgZGVmaW5lZChIQVZF X0FWRk9STUFUX0gpCisgIwlpbmNsdWRlIDxhdmZvcm1hdC5oPgorQEAgLTE1NSwxMSArMTU2LDEx IEBACisgICAgIH0KKyAKKyAJYm9vbCBvcGVuX3ZpZGVvX3N0cmVhbSgpIHsKKy0JCWlmIChhdmNv ZGVjX29wZW4yKHZpZGVvX2NvbnRleHQsIE5VTEwsIE5VTEwpIDwgMCkgeworKwkJaWYgKGF2Y29k ZWNfb3BlbjIodmlkZW9fY29udGV4dCwgbnVsbHB0ciwgbnVsbHB0cikgPCAwKSB7CisgCQkJc3lu ZmlnOjplcnJvcigiVGFyZ2V0X0xpYkFWQ29kZWM6IGNvdWxkIG5vdCBvcGVuIHZpZGVvIGNvZGVj Iik7CisgCQkJLy8gc2VlbXMgdGhlIGNhbGxpbmcgb2YgYXZjb2RlY19mcmVlX2NvbnRleHQgYWZ0 ZXIgZXJyb3Igd2lsbCBjYXVzZSBjcmFzaAorIAkJCS8vIHNvIGp1c3QgZm9yZ2V0IGFib3V0IHRo aXMgY29udGV4dAorLQkJCXZpZGVvX2NvbnRleHQgPSBOVUxMOworKwkJCXZpZGVvX2NvbnRleHQg PSBudWxscHRyOworIAkJCWNsb3NlKCk7CisgCQkJcmV0dXJuIGZhbHNlOworICAgICAgICAgfQor QEAgLTIzNCwxNSArMjM1LDIxIEBACisgCQljbG9zZSgpOworIAorIAkJaWYgKCFhdl9yZWdpc3Rl cmVkKSB7CisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU4IC8vIEZGTVBFRyA8IDQu MAorIAkJCWF2X3JlZ2lzdGVyX2FsbCgpOworKyNlbmRpZgorIAkJCWF2X3JlZ2lzdGVyZWQgPSB0 cnVlOworIAkJfQorIAorIAkJLy8gZ3Vlc3MgZm9ybWF0CistCQlBVk91dHB1dEZvcm1hdCAqZm9y bWF0ID0gYXZfZ3Vlc3NfZm9ybWF0KE5VTEwsIGZpbGVuYW1lLmNfc3RyKCksIE5VTEwpOworKyNp ZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1OSAvLyBGRk1QRUcgPCA1LjAKKysJCUFWT3V0 cHV0Rm9ybWF0KiBmb3JtYXQgPSBhdl9ndWVzc19mb3JtYXQobnVsbHB0ciwgZmlsZW5hbWUuY19z dHIoKSwgbnVsbHB0cik7CisrI2Vsc2UKKysJCWNvbnN0IEFWT3V0cHV0Rm9ybWF0KiBmb3JtYXQg PSBhdl9ndWVzc19mb3JtYXQobnVsbHB0ciwgZmlsZW5hbWUuY19zdHIoKSwgbnVsbHB0cik7Cisr I2VuZGlmCisgCQlpZiAoIWZvcm1hdCkgeworIAkJCXN5bmZpZzo6d2FybmluZygiVGFyZ2V0X0xp YkFWQ29kZWM6IHVuYWJsZSB0byBndWVzcyB0aGUgb3V0cHV0IGZvcm1hdCwgZGVmYXVsdGluZyB0 byBNUEVHIik7CistCQkJZm9ybWF0ID0gYXZfZ3Vlc3NfZm9ybWF0KCJtcGVnIiwgTlVMTCwgTlVM TCk7CisrCQkJZm9ybWF0ID0gYXZfZ3Vlc3NfZm9ybWF0KCJtcGVnIiwgbnVsbHB0ciwgbnVsbHB0 cik7CisgCQl9CisgCQlpZiAoIWZvcm1hdCkgeworIAkJCXN5bmZpZzo6ZXJyb3IoIlRhcmdldF9M aWJBVkNvZGVjOiB1bmFibGUgdG8gZmluZCAnbXBlZycgb3V0cHV0IGZvcm1hdCIpOworQEAgLTI1 NCw2ICsyNjEsNyBAQAorIAkJY29udGV4dCA9IGF2Zm9ybWF0X2FsbG9jX2NvbnRleHQoKTsKKyAJ CWFzc2VydChjb250ZXh0KTsKKyAJCWNvbnRleHQtPm9mb3JtYXQgPSBmb3JtYXQ7CisrI2lmIExJ QkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU4IC8vIEZGTVBFRyA8IDQuMAorIAkJaWYgKGZpbGVu YW1lLnNpemUoKSArIDEgPiBzaXplb2YoY29udGV4dC0+ZmlsZW5hbWUpKSB7CisgCQkJc3luZmln OjplcnJvcigKKyAJCQkJIlRhcmdldF9MaWJBVkNvZGVjOiBmaWxlbmFtZSB0b28gbG9uZywgbWF4 IGxlbmd0aCBpcyAlZCwgZmlsZW5hbWUgaXMgJyVzJyIsCitAQCAtMjYzLDYgKzI3MSwxNCBAQAor IAkJCXJldHVybiBmYWxzZTsKKyAJCX0KKyAJCW1lbWNweShjb250ZXh0LT5maWxlbmFtZSwgZmls ZW5hbWUuY19zdHIoKSwgZmlsZW5hbWUuc2l6ZSgpICsgMSk7CisrI2Vsc2UKKysJCWNvbnRleHQt PnVybCA9IGF2X3N0cm5kdXAoZmlsZW5hbWUuY19zdHIoKSwgZmlsZW5hbWUuc2l6ZSgpKTsKKysJ CWlmICghY29udGV4dC0+dXJsKSB7CisrCQkJc3luZmlnOjplcnJvcigiVGFyZ2V0X0xpYkFWQ29k ZWM6IGNhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgZmlsZW5hbWUiKTsKKysJCQljbG9zZSgpOwor KwkJCXJldHVybiBmYWxzZTsKKysJCX0KKysjZW5kaWYKKyAKKyAJCXBhY2tldCA9IGF2X3BhY2tl dF9hbGxvYygpOworIAkJYXNzZXJ0KHBhY2tldCk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3N5bmZp Zy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlCmluZGV4IDMwMTA5NTQxZWM0Zi4u NzAzY2ZkN2ViYWM4IDEwMDY0NAotLS0gYS9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQpAQCAtMiwxMSArMiwxMSBAQAogIyBTaG91bGQgYmUga2Vw dCBpbiBzeW5jIHdpdGggJ3N5bmZpZ3N0dWRpbycgYW5kICdFVEwnCiBwa2duYW1lPXN5bmZpZwog dmVyc2lvbj0xLjQuNAotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9Z251LWNv bmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0td2l0aC1ib29zdC1saWJkaXI9JHtYQlBTX0NST1NT X0JBU0V9L3Vzci9saWIiCiBob3N0bWFrZWRlcGVuZHM9ImJvb3N0LWJ1aWxkIEltYWdlTWFnaWNr IHBrZy1jb25maWcgaW50bHRvb2wiCi1tYWtlZGVwZW5kcz0iRVRMIGdldHRleHQtZGV2ZWwgbGli eG1sKystZGV2ZWwgbWx0LWRldmVsIGxpYm1hZ2ljay1kZXZlbAorbWFrZWRlcGVuZHM9IkVUTCBn ZXR0ZXh0LWRldmVsIGxpYnhtbCsrLWRldmVsIG1sdDctZGV2ZWwgbGlibWFnaWNrLWRldmVsCiAg bGlibW5nLWRldmVsIGJvb3N0LWJ1aWxkIGJvb3N0LWRldmVsIGxpYm9wZW5leHItZGV2ZWwgZmZt cGVnLWRldmVsIgogZGVwZW5kcz0iSW1hZ2VNYWdpY2siCiBzaG9ydF9kZXNjPSJDTEkgMkQgdmVj dG9yIGFuZCB0aW1lbGluZS1iYXNlZCBhbmltYXRpb24gc29mdHdhcmUiCkBAIC0yMCw3ICsyMCw3 IEBAIENYWEZMQUdTPSItc3RkPWMrKzExIC1ESEFWRV9MT0NBTEVfSD0xIgogCiBzeW5maWctZGV2 ZWxfcGFja2FnZSgpIHsKIAlkZXBlbmRzPSIke3NvdXJjZXBrZ30+PSR7dmVyc2lvbn1fJHtyZXZp c2lvbn0KLQkgbGlib3BlbmV4ci1kZXZlbCBsaWJ4bWwrKy1kZXZlbCBtbHQtZGV2ZWwiCisJIGxp Ym9wZW5leHItZGV2ZWwgbGlieG1sKystZGV2ZWwgbWx0Ny1kZXZlbCIKIAlzaG9ydF9kZXNjKz0i IC0gZGV2ZWxvcG1lbnQgZmlsZXMiCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZtb3ZlIHVzci9iaW4v c3luZmlnLWNvbmZpZwoKRnJvbSA1NWFkMjU1YzU1M2Y4MTEzNzg4ZjMxMDA5ZmJhYTkzMTUwZjkz ZWEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwODAvMTE1XSB0Z19vd3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy90 Z19vd3QvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3RnX293dC90ZW1wbGF0ZSBiL3NyY3Br Z3MvdGdfb3d0L3RlbXBsYXRlCmluZGV4IDk3ZDE5NWRkYjM0YS4uNTUxNjE0YjI0OTU2IDEwMDY0 NAotLS0gYS9zcmNwa2dzL3RnX293dC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3RnX293dC90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3RnX293dCcKIHBrZ25h bWU9dGdfb3d0CiB2ZXJzaW9uPTAuMC4wLjIwMjMwMTA3Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBfY29tbWl0PTUwOTg3MzBiOWViNjE3M2YwYjUyMDY4ZmUyNTU1YjdjMTAxNTEyM2EKIF9saWJ5 dXZfY29tbWl0PTAwOTUwODQwZDFjOWJjYmIzZWI2ZWJjNWFhYzU3OTNlNzExNjZjOGIKIF9hYnNl aWxfY29tbWl0PThjMGI5NGU3OTNhNjY0OTVlMGIxZjM0YTVlYjI2YmQ3ZGM2NzJkYjAKCkZyb20g YWUwNTY2MzY2MzkyZjAwZmMyMzZmNGI1ZGE0ZjY4Yjc3MTIyMjg5MyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDgxLzExNV0gdGltZzogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3RpbWcvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL3RpbWcvdGVtcGxhdGUgYi9zcmNwa2dzL3RpbWcvdGVtcGxhdGUKaW5kZXggMmEy YWI3NjNkMmZkLi44ZmI0MzI3NTM1ZWYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGltZy90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL3RpbWcvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICd0aW1nJwogcGtnbmFtZT10aW1nCiB2ZXJzaW9uPTEuNC41Ci1yZXZpc2lvbj0x CityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9P UEVOU0xJREVfU1VQUE9SVD1vZmYgLVduby1kZXYiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25m aWcgZ2l0IgoKRnJvbSA5MzczYzk4N2NlMjIwNTE5YzlhZWIxN2FkMGQ4YzRiM2QwYjg2NjExIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODIv MTE1XSB0dmhlYWRlbmQ6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy90 dmhlYWRlbmQvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90dmhlYWRlbmQvdGVtcGxh dGUgYi9zcmNwa2dzL3R2aGVhZGVuZC90ZW1wbGF0ZQppbmRleCBlNmIxNmQ3Y2NmM2IuLjQ2YjUy YjZmYjdmOSAxMDA2NDQKLS0tIGEvc3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy90dmhlYWRlbmQvdGVtcGxhdGUKQEAgLTEsMTQgKzEsMTQgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3R2aGVhZGVuZCcKIHBrZ25hbWU9dHZoZWFkZW5kCiB2ZXJzaW9uPTQuMi44Ci1yZXZp c2lvbj02CityZXZpc2lvbj03CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVf YXJncz0iLS1lbmFibGUtZHZic2NhbiAtLWRpc2FibGUtZmZtcGVnX3N0YXRpYwogLS1kaXNhYmxl LWhkaG9tZXJ1bl9zdGF0aWMgLS1kaXNhYmxlLWJpbnRyYXlfY2FjaGUgLS1kaXNhYmxlLWxpYngy NjRfc3RhdGljCiAtLWRpc2FibGUtbGlieDI2NV9zdGF0aWMgLS1kaXNhYmxlLWxpYnZweF9zdGF0 aWMgLS1kaXNhYmxlLWxpYnRoZW9yYV9zdGF0aWMKIC0tZGlzYWJsZS1saWJ2b3JiaXNfc3RhdGlj IC0tZGlzYWJsZS1saWJmZGthYWNfc3RhdGljIgogaG9zdG1ha2VkZXBlbmRzPSJnZXR0ZXh0IHBr Zy1jb25maWcgcHl0aG9uIGdpdCB3aGljaCIKLW1ha2VkZXBlbmRzPSJhdmFoaS1saWJzLWRldmVs IG9wZW5zc2wtZGV2ZWwgemxpYi1kZXZlbCBsaWJjdXJsLWRldmVsIGZmbXBlZy1kZXZlbCIKK21h a2VkZXBlbmRzPSJhdmFoaS1saWJzLWRldmVsIG9wZW5zc2wtZGV2ZWwgemxpYi1kZXZlbCBsaWJj dXJsLWRldmVsIGZmbXBlZzQtZGV2ZWwiCiBzaG9ydF9kZXNjPSJUViBzdHJlYW1pbmcgc2VydmVy IgogbWFpbnRhaW5lcj0ibGVtbWkgPGxlbW1pQG5lcmQybmVyZC5vcmc+IgogbGljZW5zZT0iR1BM LTMuMC1vbmx5IgoKRnJvbSBjYmQwMzY0MzgxYzRlMmQxM2Y3NzZjZGQ3ZDNhZjk3ZTJjNTA2NTQ0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw ODMvMTE1XSB1bnBhcGVyOiB1cGRhdGUgdG8gNy4wLjAuCgotLS0KIHNyY3BrZ3MvdW5wYXBlci90 ZW1wbGF0ZSB8IDE2ICsrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlv bnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnBhcGVyL3RlbXBs YXRlIGIvc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlCmluZGV4IDM4ZWQ0N2E1ODQwMS4uMWZmOTEw ZTcyMmFmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3VucGFwZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy91bnBhcGVyL3RlbXBsYXRlCkBAIC0xLDEzICsxLDEzIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICd1bnBhcGVyJwogcGtnbmFtZT11bnBhcGVyCi12ZXJzaW9uPTYuMQotcmV2aXNpb249MwotYnVp bGRfc3R5bGU9Z251LWNvbmZpZ3VyZQordmVyc2lvbj03LjAuMAorcmV2aXNpb249MQorYnVpbGRf c3R5bGU9bWVzb24KK2hvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBtZXNvbiBsaWJ4c2x0Igor bWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBweXRob24zLVNwaGlueCIKK3Nob3J0X2Rlc2M9IlBv c3QtcHJvY2Vzc2luZyB0b29sIGZvciBzY2FubmVkIHNoZWV0cyBvZiBwYXBlciIKIG1haW50YWlu ZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCi1ob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWcgbGlieHNsdCIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwiCi1saWNlbnNlPSJH UEwtMiIKK2xpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93d3cu ZmxhbWVleWVzLmV1L3Byb2plY3RzL3VucGFwZXIiCi1zaG9ydF9kZXNjPSJBIHBvc3QtcHJvY2Vz c2luZyB0b29sIGZvciBzY2FubmVkIHNoZWV0cyBvZiBwYXBlciIKIGRpc3RmaWxlcz0iaHR0cHM6 Ly93d3cuZmxhbWVleWVzLmV1L2ZpbGVzLyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIueHoiCi1j aGVja3N1bT0yMzdjODRmNWRhNTQ0YjNmNzcwOTgyN2Y5ZjEyYzM3YzM0NmNkZjAyOWIxMTI4ZmI0 NjMzZjliYWZhNWNiOTMwCitjaGVja3N1bT0yNTc1ZmJiZjI2YzIyNzE5ZDFjYjg4MmI1OTYwMmM5 OTAwYzdmNzQ3MTE4YWMxMzA4ODNmNjM0MTliZTQ2YTgwCgpGcm9tIDQyNzRmYTBmNTc2MTgzYzY3 MDVhNzE5ZDRiOTA2NmRlNDAxMDllYjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIg LTA0MDAKU3ViamVjdDogW1BBVENIIDA4NC8xMTVdIHZiYS1tOiByZXZidW1wIGZvciBmZm1wZWct Ni4wCgotLS0KIHNyY3BrZ3MvdmJhLW0vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZiYS1t L3RlbXBsYXRlIGIvc3JjcGtncy92YmEtbS90ZW1wbGF0ZQppbmRleCA4MDkzNDNmNDY1ZjIuLmUz Zjc3ODVkZTBkMiAxMDA2NDQKLS0tIGEvc3JjcGtncy92YmEtbS90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3ZiYS1tL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogcGtnbmFtZT12YmEtbQogcmV2ZXJ0 cz0xMjkyXzIKIHZlcnNpb249Mi4xLjYKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0 eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURFTkFCTEVfR1RLPVRSVUUgLURFTkFCTEVfRkZN UEVHPVRSVUUgLURFTkFCTEVfTElOSz1UUlVFIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIgog aG9zdG1ha2VkZXBlbmRzPSJnZXR0ZXh0IHBrZy1jb25maWcgdW56aXAgemlwIHlhc20gd3hXaWRn ZXRzLWd0azMtZGV2ZWwiCgpGcm9tIDc1YTZhNmY4YTAzYmIwOGY5OTg2YWIwN2VjNmY1Njc0Y2U1 YmU3NjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BB VENIIDA4NS8xMTVdIHZpY2U6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtn cy92aWNlL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmljZS90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvdmljZS90ZW1wbGF0ZQppbmRleCBmZTlkMzNhODExOTQuLjRiZWFiMmM1ZjllYiAxMDA2 NDQKLS0tIGEvc3JjcGtncy92aWNlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdmljZS90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3ZpY2UnCiBwa2duYW1lPXZp Y2UKIHZlcnNpb249My43LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdu dS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIKIAkkKHZvcHRfZW5hYmxlIHNkbDIgc2RsdWky KQpAQCAtMjYsNyArMjYsNyBAQCBtYWtlZGVwZW5kcz0iCiAJJCh2b3B0X2lmIGd0azMgZ3RrKzMt ZGV2ZWwpCiAJJCh2b3B0X2lmIGd0azMgcHVsc2VhdWRpby1kZXZlbCkKIAkkKHZvcHRfaWYgZ3Rr MyBwYW5nby1kZXZlbCkKLQkkKHZvcHRfaWYgZmZtcGVnIGZmbXBlZy1kZXZlbCkiCisJJCh2b3B0 X2lmIGZmbXBlZyBmZm1wZWc0LWRldmVsKSIKIHNob3J0X2Rlc2M9IkVtdWxhdG9yIGZvciBDNjQs IEMxMjgsIENCTS1JSSwgUEVULCBWSUMyMCwgUGx1czQgYW5kIEMxNiIKIG1haW50YWluZXI9Ik9y cGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVy IgoKRnJvbSAzNzM4YTcyODY5ZmY2Nzg3NjE4MTFjOWM0NjE2NWZkZTBmYTc3OTViIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODYvMTE1XSB3 YXlwaXBlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvd2F5cGlwZS90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvd2F5cGlw ZS90ZW1wbGF0ZQppbmRleCA1YzQxNjE5MDAwNjAuLjFhNDZmZTI3ZjdkOCAxMDA2NDQKLS0tIGEv c3JjcGtncy93YXlwaXBlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3dheXBpcGUnCiBwa2duYW1lPXdh eXBpcGUKIHZlcnNpb249MC44LjQKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PW1lc29uCiAjIGx0byBpcyBvZmYgYmVjYXVzZSBpdCBjYXVzZXMgbGlua2luZyBlcnJvcnMgaW4g YXJtdjZsIGFuZCBhcm12N2wgKGR1ZSB0byBORU9OKQogY29uZmlndXJlX2FyZ3M9Ii1Ed2Vycm9y PWZhbHNlIC1Ed2l0aF9kbWFidWY9ZW5hYmxlZCAtRHdpdGhfbHo0PWVuYWJsZWQKCkZyb20gZjM0 ODU4Nzg5NmZlNmU4MWYwMzdjODY3MTNmZTJiOWZkMjQzMjdmNiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg3LzExNV0gd2YtcmVjb3JkZXI6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUgYi9zcmNwa2dzL3dmLXJl Y29yZGVyL3RlbXBsYXRlCmluZGV4IGUyNzhlYjAwMTYwMC4uNWQwMTRhNWYyOGFmIDEwMDY0NAot LS0gYS9zcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvd2YtcmVjb3Jk ZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd3Zi1yZWNv cmRlcicKIHBrZ25hbWU9d2YtcmVjb3JkZXIKIHZlcnNpb249MC4zLjAKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcg c2Nkb2Mgd2F5bGFuZC1kZXZlbCIKIG1ha2VkZXBlbmRzPSJ3YXlsYW5kLXByb3RvY29scyB3YXls YW5kLWRldmVsIGZmbXBlZy1kZXZlbCB4MjY0LWRldmVsCgpGcm9tIGExY2FkNzQwMjRkN2U3YWRm NmE1ZjNjMTNjNDMwZDA4YTE1ZGYyOWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIg LTA0MDAKU3ViamVjdDogW1BBVENIIDA4OC8xMTVdIHhwcmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy94cHJhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy94cHJhL3Rl bXBsYXRlIGIvc3JjcGtncy94cHJhL3RlbXBsYXRlCmluZGV4IDBhNjNmZGI2Yzc0My4uZDVhY2Mx OTgxYzVmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3hwcmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy94 cHJhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAneHByYScK IHBrZ25hbWU9eHByYQogdmVyc2lvbj00LjQuNgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9cHl0aG9uMy1tb2R1bGUKIG1ha2VfYnVpbGRfYXJncz0iLS13aXRob3V0LWN1ZGFf a2VybmVscyAtLXdpdGhvdXQtY3VkYV9yZWJ1aWxkIgogbWFrZV9pbnN0YWxsX2FyZ3M9IiQodm9w dF93aXRoIGRvY3MpICR7bWFrZV9idWlsZF9hcmdzfSIKCkZyb20gZmRmMjJmNDdkMzhhM2U5MDRh MTlkNWRhMzA2OWRhNmY4ODFkOWM3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAzMSBNYXIgMjAyMyAwOTowNzo0MCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg5LzExNV0gbnYtY29kZWMtaGVhZGVyczogdXBkYXRlIHRv IDEyLjAuMTYuMAoKLS0tCiBzcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUgfCA0ICsr LS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlIGIvc3JjcGtncy9udi1j b2RlYy1oZWFkZXJzL3RlbXBsYXRlCmluZGV4IDNkNDIyYTYxZTQ4OS4uMjUxZTA1N2Y4MjZmIDEw MDY0NAotLS0gYS9zcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnbnYtY29kZWMtaGVhZGVycycKIHBrZ25hbWU9bnYtY29kZWMtaGVhZGVycwotdmVy c2lvbj0xMS4xLjUuMQordmVyc2lvbj0xMi4wLjE2LjAKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxl PWdudS1tYWtlZmlsZQogc2hvcnRfZGVzYz0iRkZtcGVnIHZlcnNpb24gb2YgaGVhZGVycyByZXF1 aXJlZCB0byBpbnRlcmZhY2Ugd2l0aCBOdmlkaWFzIGNvZGVjIEFQSXMiCkBAIC04LDcgKzgsNyBA QCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0i TUlUIgogaG9tZXBhZ2U9Imh0dHA6Ly9naXQudmlkZW9sYW4ub3JnLz9wPWZmbXBlZy9udi1jb2Rl Yy1oZWFkZXJzLmdpdCIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL0ZGbXBlZy9udi1j b2RlYy1oZWFkZXJzL2FyY2hpdmUvbiR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09ZDA5NWZi ZDU2YWE5Mzc3MjQ3MWEzMjNiZTBlYmU2NTUwNGEwZjQzZjA2Yzc2YTMwYjZkMjVkYTc3YjA2YWU5 YworY2hlY2tzdW09MmExNTMzYjY1ZjU1ZjlkYTUyOTU2ZmFmMDYyN2VkM2I3NDg2OGFjMGM3ZjI2 OTk5MGVkZDIxMzY5MTEzYjQ4ZgogCiBwb3N0X2luc3RhbGwoKSB7CiAJc2VkIC1uICc0LDI1cCcg aW5jbHVkZS9mZm52Y29kZWMvbnZFbmNvZGVBUEkuaCA+IExJQ0VOU0UKCkZyb20gYTY2YjAwMjJk YzlkYTY2NWE0ODYwN2NiNjNhYzJhODJkMjk5YzAwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAzMSBNYXIgMjAyMyAw OTowODo0MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDkwLzExNV0gb3BlbmltYWdlZGVub2lzZTog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUgYi9zcmNw a2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUKaW5kZXggZGI1Y2NkYjA1NWNjLi5jYjkwMDQ1 YWZiNjMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL29wZW5pbWFnZWRlbm9pc2UvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdvcGVuaW1hZ2VkZW5vaXNlJwogcGtnbmFtZT1vcGVuaW1hZ2VkZW5v aXNlCiB2ZXJzaW9uPTEuNC4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0ieDg2XzY0 KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImlzcGMgcHl0aG9uMyIKCkZy b20gY2I5ZmEzMTU2MjZhYWE3MGUzNjExN2IyNGM4Y2VkMmVjZjY3YWRjOCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAz IEFwciAyMDIzIDIzOjMxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTEvMTE1XSBzaG90Y3V0 OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc2hvdGN1dC90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3Mvc2hvdGN1dC90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc2hvdGN1dC90ZW1w bGF0ZQppbmRleCA3ZDJhZjdiMDQ3MGIuLmM0MTZjOTA2ZmY3MyAxMDA2NDQKLS0tIGEvc3JjcGtn cy9zaG90Y3V0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2hvdGN1dC90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Nob3RjdXQnCiBwa2duYW1lPXNob3RjdXQK IHZlcnNpb249MjMuMDUuMTQKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNt YWtlCiBjb25maWd1cmVfYXJncz0iLURTSE9UQ1VUX1ZFUlNJT049JHt2ZXJzaW9ufSIKIGhvc3Rt YWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDYtdG9vbHMtZGV2ZWwiCgpGcm9tIDU2MzRhMzI2OTkz ZmMyNTEzMjU5ODljYjU2YzBkMjA5MmM5MTMzZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMyBBcHIgMjAyMyAyMzoz MzozMCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDkyLzExNV0gc2hpYm9rZW4yOiByZXZidW1wIGZv ciBxdDUtNS4xNS44CgotLS0KIHNyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1h Y2hpbmVyeS1ieXBhc3MucGF0Y2ggfCAxICsKIHNyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3Mv c2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlw YXNzLnBhdGNoIGIvc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5 LWJ5cGFzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLmVm Y2YzMjQ5YmQ4OAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMv aW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKQEAgLTAsMCArMSBAQAorLi4vLi4vcHl0 aG9uMy1weXNpZGUyL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NoaWJva2VuMi90 ZW1wbGF0ZSBiL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlCmluZGV4IDA4NGVjYzNiYTFlMS4u MmEyMTk5ODk5N2ViIDEwMDY0NAotLS0gYS9zcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ3NoaWJva2VuMicKIHBrZ25hbWU9c2hpYm9rZW4yCiB2ZXJzaW9uPTUuMTUuNwot cmV2aXNpb249MQorcmV2aXNpb249MgogX3BrZ25hbWU9InB5c2lkZS1zZXR1cC1vcGVuc291cmNl LXNyYy0ke3ZlcnNpb259IgogYnVpbGRfd3Jrc3JjPSJzb3VyY2VzL3NoaWJva2VuMiIKIGJ1aWxk X3N0eWxlPWNtYWtlCgpGcm9tIGQ3M2M0ZDlkYTUzYjcxYTc5ODY1YTI1NjFkMzczZDE4NjRmNzQx NWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IE1vbiwgMyBBcHIgMjAyMyAyMzozMzo1MyAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDkzLzExNV0gcHl0aG9uMy1weXNpZGUyOiB1cGRhdGUgdG8gNS4xNS44CgotLS0KIC4uLi9wYXRj aGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoICAgICAgfCAxNSArKysrKysrKysr KysrKysKIHNyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3RlbXBsYXRlICAgICAgICAgICAgICAgICAg fCAgOSArKysrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgNCBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi9wYXRj aGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRj aCBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1i eXBhc3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NGM0 Mjk1ODQ3NzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi9wYXRj aGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKK1Vz aW5nIHRoaXMgcHJldmVudHMgYW4gZXJyb3IgYXJvdW5kIGxpbmUgMjIwIGJlbG93IGl0LgorIkF0 dHJpYnV0ZUVycm9yOiBtb2R1bGUgJ2ltcG9ydGxpYicgaGFzIG5vIGF0dHJpYnV0ZSAnbWFjaGlu ZXJ5JyIKK1RoZSBvbGQgYmFja3VwIGxvZ2ljIGlzIGluIHBsYWNlIGFuZCBjb21waWxlcyB3aXRo b3V0IGlzc3Vlcy4KKy0tLSBhL3NvdXJjZXMvc2hpYm9rZW4yL2xpYnNoaWJva2VuL2VtYmVkL3Np Z25hdHVyZV9ib290c3RyYXAucHkJMjAyMy0wNC0wMiAyMzowOTozNC42ODg5MTI0MDIgLTA0MDAK KysrKyBiL3NvdXJjZXMvc2hpYm9rZW4yL2xpYnNoaWJva2VuL2VtYmVkL3NpZ25hdHVyZV9ib290 c3RyYXAucHkJMjAyMy0wNC0wMiAyMzoxMDowMy4zOTU1Mjk1ODIgLTA0MDAKK0BAIC0xNzAsOSAr MTcwLDYgQEAKKworICAgICAjICd6aXBzdHJpbmdfc2VxdWVuY2UnIGNvbWVzIGZyb20gc2lnbmF0 dXJlLmNwcAorICAgICB6aXBieXRlcyA9IGJhc2U2NC5iNjRkZWNvZGUoJycuam9pbih6aXBzdHJp bmdfc2VxdWVuY2UpKQorLSAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzBdID49IDM6CistICAgICAg ICB2emlwID0gemlwZmlsZS5aaXBGaWxlKGlvLkJ5dGVzSU8oemlwYnl0ZXMpKQorLSAgICAgICAg cmV0dXJuIHN5cy5tZXRhX3BhdGgsIEVtYmVkZGFibGVaaXBJbXBvcnRlcih2emlwKQorCisgICAg ICMgT2xkIHZlcnNpb24gZm9yIFB5dGhvbiAyLjcsIG9ubHkuCisgICAgIGltcG9ydCBvcwpkaWZm IC0tZ2l0IGEvc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUgYi9zcmNwa2dzL3B5dGhv bjMtcHlzaWRlMi90ZW1wbGF0ZQppbmRleCA1MGU2ZmYyNjBkM2IuLmI1MGU2MmJkMjE1ZCAxMDA2 NDQKLS0tIGEvc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9w eXRob24zLXB5c2lkZTIvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTIgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3B5dGhvbjMtcHlzaWRlMicKIHBrZ25hbWU9cHl0aG9uMy1weXNpZGUyCi12ZXJzaW9u PTUuMTUuNQotcmV2aXNpb249MgordmVyc2lvbj01LjE1LjgKK3JldmlzaW9uPTEKIF9wa2duYW1l PSJweXNpZGUtc2V0dXAtb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufSIKIGJ1aWxkX3dya3NyYz0i c291cmNlcy9weXNpZGUyIgogYnVpbGRfc3R5bGU9Y21ha2UKLWNvbmZpZ3VyZV9hcmdzPSItRFBZ VEhPTl9FWEVDVVRBQkxFPS91c3IvYmluL3B5dGhvbiIKK2NvbmZpZ3VyZV9hcmdzPSItRFBZVEhP Tl9FWEVDVVRBQkxFPS91c3IvYmluL3B5dGhvbiAtRENNQUtFX0JVSUxEX1RZUEU9Tm9uZQorIC1E QlVJTERfVEVTVFM9T0ZGIgogaG9zdG1ha2VkZXBlbmRzPSJjbWFrZSBweXRob24zIHNoaWJva2Vu MiIKIG1ha2VkZXBlbmRzPSJweXRob24zLWRldmVsIGxpYnNoaWJva2VuMi1kZXZlbCBxdDUtZGV2 ZWwKICBxdDUtbXVsdGltZWRpYS1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXBsdWdpbi1teXNx bCBxdDUtcGx1Z2luLW9kYmMKQEAgLTIzLDcgKzI0LDcgQEAgbWFpbnRhaW5lcj0ieW9waXRvIDxw aWVycmUuYm91cmdpbkBmcmVlLmZyPiIKIGxpY2Vuc2U9IkxHUEwtMy4wLW9yLWxhdGVyIgogaG9t ZXBhZ2U9Imh0dHBzOi8vd2lraS5xdC5pby9RdF9mb3JfUHl0aG9uIgogZGlzdGZpbGVzPSJodHRw czovL2Rvd25sb2FkLnF0LmlvL29mZmljaWFsX3JlbGVhc2VzL1F0Rm9yUHl0aG9uL3B5c2lkZTIv UHlTaWRlMi0ke3ZlcnNpb259LXNyYy8ke19wa2duYW1lfS50YXIueHoiCi1jaGVja3N1bT0zOTIw YTRmYjM1MzMwMDI2MGM5YmM0NmZmNzBmMWZiOTc1YzVlN2VmYTIyZTlkNTEyMjI1ODg5MjhjZTE5 YjMzCitjaGVja3N1bT0yMzQzNjMwMmM4ZGViNWI0Y2JjNzY5YjIwNWQwOTYwNGUzOGJhODNiNDA3 MDhlZmNjYjdiZDhjOWFmNmY2YjVkCiAKIGJ1aWxkX29wdGlvbnM9IndlYmVuZ2luZSIKIGRlc2Nf b3B0aW9uX3dlYmVuZ2luZT0iQnVpbGQgUXQ1IFdlYkVuZ2luZSBiaW5kaW5ncyIKCkZyb20gODE5 MGIxZTVhZDEwOTg5ZmIxNmUzMDAwODkxMDU0ZGZmZGViZDE4YSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCA0IEFwciAy MDIzIDExOjE0OjM1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTQvMTE1XSBrb25xdWVyb3I6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9rb25xdWVyb3IvdGVtcGxhdGUgfCA0 ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9rb25xdWVyb3IvdGVtcGxhdGUgYi9zcmNwa2dzL2tvbnF1ZXJv ci90ZW1wbGF0ZQppbmRleCBkOGQwZTczYTc4YWIuLmM1YmRiYTYwMWQzYyAxMDA2NDQKLS0tIGEv c3JjcGtncy9rb25xdWVyb3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9rb25xdWVyb3IvdGVtcGxh dGUKQEAgLTEsMTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2tvbnF1ZXJvcicKIHBr Z25hbWU9a29ucXVlcm9yCiB2ZXJzaW9uPTIzLjA0LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURERVNLVE9QVE9KU09OX0VYRUNV VEFCTEU9L3Vzci9iaW4vZGVza3RvcHRvanNvbiIKIGhvc3RtYWtlZGVwZW5kcz0iZXh0cmEtY21h a2UtbW9kdWxlcyBweXRob24zIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSBrZG9jdG9vbHMKLWtj b3JlYWRkb25zIGtjb25maWcgZ2V0dGV4dCIKKyBrY29yZWFkZG9ucyBrY29uZmlnIGdldHRleHQi CiBtYWtlZGVwZW5kcz0icXQ1LWRldmVsIHF0NS13ZWJlbmdpbmUtZGV2ZWwgcXQ1LWRlY2xhcmF0 aXZlLWRldmVsCiAgcXQ1LXdlYmNoYW5uZWwtZGV2ZWwgcXQ1LWxvY2F0aW9uLWRldmVsIGtjbXV0 aWxzLWRldmVsIGtkZWxpYnM0c3VwcG9ydC1kZXZlbAogIGthcmNoaXZlLWRldmVsIGtodG1sLWRl dmVsIGtkZXN1LWRldmVsIGthY3Rpdml0aWVzNS1kZXZlbCIKCkZyb20gZTU1NmJmNWU3OGI2MTI5 NmJhNGY1NDYwNTcwNTMzNzBiNTNmMzEyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCA0IEFwciAyMDIzIDExOjE0OjU4 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTUvMTE1XSBxdDUtc3BlZWNoOiByZXZidW1wIGZvciBx dDUtNS4xNS44CgotLS0KIHNyY3BrZ3MvcXQ1LXNwZWVjaC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvcXQ1LXNwZWVjaC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1LXNwZWVjaC90ZW1wbGF0ZQpp bmRleCAzZWNkMTBkNTA2NTAuLjJkN2Q0ZDRkMjQ1MyAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUt c3BlZWNoL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1LXNwZWVjaC90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NS1zcGVlY2gnCiBwa2duYW1lPXF0NS1z cGVlY2gKIHZlcnNpb249NS4xNS43Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBfY29tbWl0PWQz MmY0YTQ3OWQzOGExMWY1NDc1OTgwMDRiOTc1ZjQzNTY0MjRhMTYKIGJ1aWxkX3N0eWxlPXFtYWtl CiBjb25maWd1cmVfYXJncz0iLS0gLWZsaXRlIC1mbGl0ZS1hbHNhIC1zcGVlY2hkIgoKRnJvbSBi YTA5M2M4NzQ2NWFiODAwZWMzOGE5NzZkZTY5MWFkN2RmMmM4Y2MxIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgQXBy IDIwMjMgMTg6Mzg6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5Ni8xMTVdIHF0NS1zdHlsZXBs dWdpbnM6IHJldmJ1bXAgZm9yIHF0NS01LjE1LjgKCi0tLQogc3JjcGtncy9xdDUtc3R5bGVwbHVn aW5zL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRl IGIvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlCmluZGV4IDk2ZWQ5N2QxMmNkMi4u MzBkOTM2NjBhMmE0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1LXN0eWxlcGx1Z2lucycKIHBrZ25hbWU9cXQ1LXN0 eWxlcGx1Z2lucwogdmVyc2lvbj01LjAuMAotcmV2aXNpb249MjAKK3JldmlzaW9uPTIxCiBfZ2l0 cmV2PTMzNWRiZWNlMTAzZTJjYmY2YzdjZjgxOWFiNjY3MmMyOTU2YjE3YjMKIGJ1aWxkX3N0eWxl PXFtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFt YWtlIgoKRnJvbSBiOWIyMDMwOTVkZTg0MDMzNzNlZDIxYzc3OWJmYjhkODYzZjIwZjhmIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBTdW4sIDcgTWF5IDIwMjMgMjA6MTQ6MTQgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5Ny8xMTVd IG1sdDc6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtbGliYXYvdGVt cGxhdGUgfCAyICstCiBzcmNwa2dzL21sdDcvdGVtcGxhdGUgICAgICB8IDIgKy0KIDIgZmlsZXMg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKaW5k ZXggMDRjMzliZmYxNDg5Li44YzcyZmMzZTk3ZWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LWxp YmF2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LWxpYmF2JwogcGtnbmFtZT1nc3QtbGliYXYK IHZlcnNpb249MS4yMi4yCi1yZXZpc2lvbj0yCityZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXNv bgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHlhc20iCiBtYWtlZGVwZW5kcz0ib3JjLWRl dmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsIGZmbXBlZy1kZXZlbCIKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvbWx0Ny90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWx0Ny90ZW1wbGF0ZQppbmRleCA5ZmI3ZjYw ZDY5MmUuLmNjYTBlYjY4Y2ZjMyAxMDA2NDQKLS0tIGEvc3JjcGtncy9tbHQ3L3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvbWx0Ny90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ21sdDcnCiBwa2duYW1lPW1sdDcKIHZlcnNpb249Ny4xNC4wCi1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EU1dJR19QWVRI T049T04iCiBob3N0bWFrZWRlcGVuZHM9ImRveHlnZW4gcGtnLWNvbmZpZyBsYWRzcGEtc2RrIHN3 aWcgcHl0aG9uMyB3aGljaAoKRnJvbSBjZDc1OThhM2E2ZWJlMGZkZmJhY2QwNTVkNTUwZDhiMDc0 MjZlYzM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBTdW4sIDcgTWF5IDIwMjMgMjA6MTU6MDMgLTA0MDAKU3ViamVjdDogW1BB VENIIDA5OC8xMTVdIHF0Ni13ZWJlbmdpbmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlIHwgMSArCiAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKykKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdGVtcGxhdGUg Yi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdGVtcGxhdGUKaW5kZXggZjk0OGRjOTE5YTE1Li40Mzc3 OGI1NjhkM2YgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdGVtcGxhdGUKQEAgLTE0NSw2ICsxNDUsNyBAQCBwcmVf aW5zdGFsbCgpIHsKIH0KIAogcG9zdF9pbnN0YWxsKCkgeworCXZsaWNlbnNlIExJQ0VOU0VTL0JT RC0zLUNsYXVzZS50eHQKIAlsb2NhbCBfZmlsZQogCWZpbmQgIiR7REVTVERJUn0iL3Vzci9saWIv cXQ2L2V4YW1wbGVzIFwKIAkJLXBhdGggJyovbGliL3F0Ni8qKi9saWIvcXQ2LyonIC10eXBlIGYg fAoKRnJvbSAzM2Q2OGU4MDNhZDcwZWVmNjA1YmRlZjA2YWE1OTBiNmE2Y2NjYzUzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBU aHUsIDExIE1heSAyMDIzIDE0OjA1OjE0IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTkvMTE1XSBv cGVubXc6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9vcGVubXcvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5tdy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3Blbm13L3Rl bXBsYXRlCmluZGV4IGUzNzcxYzdhYWYxYS4uM2NiZjIwYjA2NTc3IDEwMDY0NAotLS0gYS9zcmNw a2dzL29wZW5tdy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5tdy90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5tdycKIHBrZ25hbWU9b3Blbm13CiB2 ZXJzaW9uPTAuNDcuMAotcmV2aXNpb249NQorcmV2aXNpb249NgogYnVpbGRfc3R5bGU9Y21ha2UK IF9yZWNhc3RfY29tbWl0PWU3NWFkZjg2ZjkxZWIzMDgyMjIwMDg1ZTQyZGRhNjI2NzlmOWEzZWEK IF9idWxsZXRfdGFnPTMuMTcKCkZyb20gZWI2MzVhOWVjMDk5MDdmMGRkNGFjMTk1OTA2YzM2NTFh NTE3ZWZkYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogU3VuLCAyMSBNYXkgMjAyMyAxMjo0NDoxMSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMTAwLzExNV0gZWxlY3Ryb24yNDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQv dGVtcGxhdGUgYi9zcmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUKaW5kZXggYmRhYTU2YWRjOGE2 Li5mZjNkNWUzZWYzODEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24yNC90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdlbGVjdHJvbjI0JwogcGtnbmFtZT1lbGVjdHJvbjI0CiB2ZXJzaW9uPTI0 LjMuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogX25vZGV2ZXI9MTguMTQuMAogX2Nocm9taXVt dmVyPTExMi4wLjU2MTUuMTY1CiBhcmNocz0ieDg2XzY0KiBhYXJjaDY0KiIKCkZyb20gZjM2YzQ3 MmI3YmEwZmY2NDUzYzUwYzhkMzFmYmE5MTViN2ZkODZhZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU2F0LCAzIEp1biAyMDIz IDA4OjIwOjIyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDEvMTE1XSBndGs0OiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3RrNC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZ3RrNC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZQppbmRleCBiMzE4YjdiYWUx ZGQuLmUzYmRlNGE1MGU1NCAxMDA2NDQKLS0tIGEvc3JjcGtncy9ndGs0L3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ2d0azQnCiBwa2duYW1lPWd0azQKIHZlcnNpb249NC4xMC40Ci1yZXZpc2lvbj0xCityZXZp c2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVscGVyPSJnaXIiCiBjb25maWd1cmVf YXJncz0iLURtYW4tcGFnZXM9dHJ1ZSAtRGd0a19kb2M9dHJ1ZSAtRGJ1aWxkLXRlc3RzPWZhbHNl CgpGcm9tIDVkYjc1ZTY0NDJiNTY5MjU4MDUxOGFjN2M1NzAwM2FhNTY0ZTUwYTAgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1 biwgNCBKdW4gMjAyMyAxMToyNTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTAyLzExNV0gZWxl Y3Ryb24xOTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2VsZWN0cm9uMTkv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUgYi9zcmNwa2dz L2VsZWN0cm9uMTkvdGVtcGxhdGUKaW5kZXggMzJjZTMwMWU3MzBjLi5hYjdmMzA4ZjVlOGEgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2VsZWN0 cm9uMTkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdlbGVj dHJvbjE5JwogcGtnbmFtZT1lbGVjdHJvbjE5CiB2ZXJzaW9uPTE5LjAuOAotcmV2aXNpb249Mwor cmV2aXNpb249NAogX25vZGV2ZXI9MTYuMTQuMgogX2Nocm9taXVtdmVyPTEwMi4wLjUwMDUuMTI1 CiBhcmNocz0ieDg2XzY0KiBhYXJjaDY0KiBwcGM2NGxlKiIKCkZyb20gMjAwNTgzMjk0ZDQ0ZDUx NWI4ZTQ2YWYzNDg4MjAzMmM1YWM5NzFhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA0IEp1biAyMDIzIDExOjI4OjI2 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDMvMTE1XSBzaXJpbDogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL3NpcmlsL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zaXJp bC90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUKaW5kZXggODQzMzJmNzlkMDYwLi42 Mjc1MGRkMjQ3NTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9zaXJpbC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J3NpcmlsJwogcGtnbmFtZT1zaXJpbAogdmVyc2lvbj0wLjkuMTIKLXJldmlzaW9uPTEwCityZXZp c2lvbj0xMQogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIGludGx0b29sIGF1dG9jb25mIGF1dG9tYWtlIGdldHRleHQtZGV2ZWwiCiBtYWtlZGVw ZW5kcz0iZmZ0dy1kZXZlbCBsaWJjb25maWctZGV2ZWwgbGlib3BlbmN2LWRldmVsIGxpYmZmbXMy LWRldmVsCgpGcm9tIDMxNjM3YTFiODljMjBlZGMyOGFjMWQzNDI1ZDA0MDdmMzc5MTgyYjcgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFNhdCwgMTAgSnVuIDIwMjMgMDA6NDA6MzkgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwNC8x MTVdIGZyZWVjYWQ6IHJldmJ1bXAgZm9yIHF0NS13ZWJlbmdpbmUtNS4xNS4xMwoKLS0tCiBzcmNw a2dzL2ZyZWVjYWQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUg Yi9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUKaW5kZXggYTRhM2Y1Zjc2YjI5Li44NjA4ZDE2NzBj ODcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZnJlZWNhZC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Zy ZWVjYWQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmcmVl Y2FkJwogcGtnbmFtZT1mcmVlY2FkCiB2ZXJzaW9uPTAuMjAuMgotcmV2aXNpb249NQorcmV2aXNp b249NgogYnVpbGRfc3R5bGU9Y21ha2UKIAogX2luc3RfcHJlZml4PS91c3IvbGliLyR7cGtnbmFt ZX0KCkZyb20gNjIxYjZjZGNjM2RiMzgxZTc0MTczYjNjYWIwNWZiNzgxZDBjYWJlNiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog U2F0LCAxMCBKdW4gMjAyMyAwMDo1NzowOSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTA1LzExNV0g cXQ2LW11bHRpbWVkaWE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9xdDYt bXVsdGltZWRpYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVt cGxhdGUgYi9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlCmluZGV4IGE2ODMyZmRkNjli Zi4uYzlmZmFjOTE0YWI4IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDYtbXVsdGltZWRpYScKIHBrZ25hbWU9cXQ2LW11bHRp bWVkaWEKIHZlcnNpb249Ni41LjAKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxl PWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURRVF9GRUFUVVJFX2dzdHJlYW1lcj1PTiIKIGhvc3Rt YWtlZGVwZW5kcz0icGVybCBxdDYtZGVjbGFyYXRpdmUtaG9zdC10b29scyBwa2ctY29uZmlnIHF0 Ni1zaGFkZXJ0b29scyIKCkZyb20gZDI2NjVlNDg2ZGE4ZjBhMGNiMDk5MTQ5ZDE4M2M5ZjZkMWRj MThkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogVGh1LCAyMiBKdW4gMjAyMyAxMDoyNTowMiAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMTA2LzExNV0ga2RlbmxpdmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9rZGVubGl2ZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2RlbmxpdmUvdGVtcGxhdGUg Yi9zcmNwa2dzL2tkZW5saXZlL3RlbXBsYXRlCmluZGV4IDg5YzBkY2ZiODU3Ny4uNzU0OTViM2Ez NTg2IDEwMDY0NAotLS0gYS9zcmNwa2dzL2tkZW5saXZlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv a2RlbmxpdmUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdr ZGVubGl2ZScKIHBrZ25hbWU9a2RlbmxpdmUKIHZlcnNpb249MjMuMDQuMgotcmV2aXNpb249Mgor cmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0iCiAgZXh0cmEt Y21ha2UtbW9kdWxlcyBrY29uZmlnIGtjb3JlYWRkb25zIGtkb2N0b29scyBwa2ctY29uZmlnIHB5 dGhvbjMKCkZyb20gYzhiZjc1MmY4MTg0M2VkNmE2NDkzMTQ2MzIyZjMwYWE0NmE5OGI0NyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCA0IEp1bCAyMDIzIDA5OjE4OjIzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDcvMTE1 XSBnbWljOiByZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0tLQogc3JjcGtncy9nbWljL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nbWljL3RlbXBsYXRlIGIvc3JjcGtncy9nbWljL3RlbXBs YXRlCmluZGV4IDBiYjQwMzRkNWNjOC4uODA4OTUzZTliNTQzIDEwMDY0NAotLS0gYS9zcmNwa2dz L2dtaWMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nbWljL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ21pYycKIHBrZ25hbWU9Z21pYwogdmVyc2lvbj0zLjEu NgotcmV2aXNpb249NAorcmV2aXNpb249NQogX3phcnRfaGFzaD0zNGViZjZjY2UwYmFmYjk4YWJl NTdjZWM4M2M0YTAyY2QxYWJlY2EwCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jrc3JjPSJz cmMiCgpGcm9tIDY5ZDJjYTk1MGNkYzhmZjlhYTJhZWVjNzMxMzkxNDY4YjhiZDRlMTkgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgNCBKdWwgMjAyMyAwOToyOTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTA4LzExNV0g c3luZmlnc3R1ZGlvOiByZXZidW1wIGZvciBzeW5maWcgbWx0NwoKLS0tCiBzcmNwa2dzL3N5bmZp Z3N0dWRpby90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRl IGIvc3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxhdGUKaW5kZXggYWYxYzVhMjk2ZWYwLi4wOWU0 NDJkYTlhNjggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogIyBTaG91bGQg YmUga2VwdCBpbiBzeW5jIHdpdGggJ3N5bmZpZycgYW5kICdFVEwnCiBwa2duYW1lPXN5bmZpZ3N0 dWRpbwogdmVyc2lvbj0xLjQuNAotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9 Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS11cGRhdGUtbWltZWRiIgog aG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGludGx0b29sIGdldHRleHQgc3luZmlnIgoKRnJv bSBhZWY3YzRiOTU2N2M4ODU1YmI1MTVlNzkxZmYxMmI2MjllZGJlY2E5IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQg SnVsIDIwMjMgMTA6MTk6MTcgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwOS8xMTVdIG9wZW5pbWFn ZWlvOiByZXZidW1wIGZvciBmZm1wZWc2LjAKCi0tLQogc3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUgYi9zcmNwa2dzL29w ZW5pbWFnZWlvL3RlbXBsYXRlCmluZGV4IDBlOWUyMmU5Njg1ZC4uZTc0YThkYmQ2ODNlIDEwMDY0 NAotLS0gYS9zcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3Blbmlt YWdlaW8vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVu aW1hZ2VpbycKIHBrZ25hbWU9b3BlbmltYWdlaW8KIHZlcnNpb249Mi40LjkuMAotcmV2aXNpb249 NQorcmV2aXNpb249NgogYnVpbGRfc3R5bGU9Y21ha2UKIGJ1aWxkX2hlbHBlcj1xZW11CiBjb25m aWd1cmVfYXJncz0iLURVU0VfUVQ9MCAtRFVTRV9QWVRIT049MCAtRE9JSU9fQlVJTERfVEVTVFM9 MAoKRnJvbSAwNzQzYzM3ZjhkNDI3NTVmMDdlODE4YzNiMTE1Y2JiMGQ4ZmZkNDY5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBU dWUsIDQgSnVsIDIwMjMgMTE6MTc6MzcgLTA0MDAKU3ViamVjdDogW1BBVENIIDExMC8xMTVdIERF TEVURTogaW50ZWxfcGFja2FnZXMKCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyICsKIHNyY3BrZ3MvaW50ZWwtZ21tbGliL3RlbXBsYXRlICAg ICAgICAgICAgICAgICB8ICAgNiArLQogLi4ubW1vbi1FbmFibGUtTU1DLWluLWZyZWUta2VybmVs LWJ1aWxkLnBhdGNoIHwgMTI1ICsrKysrKysrKysrKysrKysrKwogc3JjcGtncy9pbnRlbC1tZWRp YS1kcml2ZXIvdGVtcGxhdGUgICAgICAgICAgIHwgICA2ICstCiBzcmNwa2dzL2ludGVsLW1lZGlh LXNkay9wYXRjaGVzL211c2wucGF0Y2ggICAgfCAgMTQgKysKIHNyY3BrZ3MvaW50ZWwtbWVkaWEt c2RrL3RlbXBsYXRlICAgICAgICAgICAgICB8ICAzNyArKysrKysKIHNyY3BrZ3MvaW50ZWwtbWVk aWEtc2RrL3VwZGF0ZSAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL29uZXZwbC1kZXZl bCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9vbmV2cGwtaW50ZWwt Z3B1LWRldmVsICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3Mvb25ldnBsLWludGVsLWdw dS90ZW1wbGF0ZSAgICAgICAgICAgICB8ICAyNyArKysrCiBzcmNwa2dzL29uZXZwbC90ZW1wbGF0 ZSAgICAgICAgICAgICAgICAgICAgICAgfCAgMzQgKysrKysKIDExIGZpbGVzIGNoYW5nZWQsIDI0 OCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvaW50ZWwtbWVkaWEtZHJpdmVyL3BhdGNoZXMvMDAwMS1NZWRpYS1Db21tb24tRW5hYmxlLU1N Qy1pbi1mcmVlLWtlcm5lbC1idWlsZC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv aW50ZWwtbWVkaWEtc2RrL3BhdGNoZXMvbXVzbC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvaW50ZWwtbWVkaWEtc2RrL3RlbXBsYXRlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9pbnRlbC1tZWRpYS1zZGsvdXBkYXRlCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9vbmV2 cGwtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL29uZXZwbC1pbnRlbC1ncHUtZGV2 ZWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL29uZXZwbC1pbnRlbC1ncHUvdGVtcGxhdGUK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL29uZXZwbC90ZW1wbGF0ZQoKZGlmZiAtLWdpdCBh L2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IGQ0ZGQwNGE2YWIzYi4uNjllZDcy OTI3ODI2IDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAg LTQzMjcsNSArNDMyNyw3IEBAIGxpYmdzb2Fwc3NsKystMi44LjEyNC5zbyBnc29hcC0yLjguMTI0 XzEKIGxpYmp4bC5zby4wLjggbGlianhsLTAuOC4yXzEKIGxpYmp4bF9kZWMuc28uMC44IGxpYmp4 bC0wLjguMl8xCiBsaWJqeGxfdGhyZWFkcy5zby4wLjggbGlianhsLTAuOC4yXzEKK2xpYm1meC5z by4xIGxpYm1meC0yMi42LjRfMQorbGlidnBsLnNvLjIgb25ldnBsLTIwMjMuMS4yXzEKIGxpYnRl eHQtZW5naW5lLTAuMS5zby4wIHRleHQtZW5naW5lLTAuMS4xXzEKIGxpYnZtYWYuc28uMSB2bWFm LTIuMy4xXzEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW50ZWwtZ21tbGliL3RlbXBsYXRlIGIvc3Jj cGtncy9pbnRlbC1nbW1saWIvdGVtcGxhdGUKaW5kZXggMDRlNDA3YjFkZTRkLi4yNjA1MjI2MTUy ZTUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaW50ZWwtZ21tbGliL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvaW50ZWwtZ21tbGliL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnaW50ZWwtZ21tbGliJwogcGtnbmFtZT1pbnRlbC1nbW1saWIKLXZlcnNpb249MjIuMi4w Cit2ZXJzaW9uPTIyLjMuMwogcmV2aXNpb249MQogYXJjaHM9Imk2ODYqIHg4Nl82NCoiCiBidWls ZF9zdHlsZT1jbWFrZQpAQCAtMTQsMTEgKzE0LDExIEBAIGJ1aWxkX3N0eWxlPWNtYWtlCiAjIGNv bXBpbGVycyBmbGFnIGluIHVzZS4KIGNvbmZpZ3VyZV9hcmdzPSItV25vLWRldiIKIHNob3J0X2Rl c2M9IkludGVsIEdyYXBoaWNzIE1lbW9yeSBNYW5hZ2VtZW50IExpYnJhcnkiCi1tYWludGFpbmVy PSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgorbWFpbnRhaW5lcj0iU3RlZmFubyBS YWduaSA8c3QzcjRnQHByb3Rvbm1haWwuY29tPiIKIGxpY2Vuc2U9Ik1JVCIKIGhvbWVwYWdlPSJo dHRwczovL2dpdGh1Yi5jb20vaW50ZWwvZ21tbGliIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1 Yi5jb20vaW50ZWwvZ21tbGliL2FyY2hpdmUvaW50ZWwtZ21tbGliLSR7dmVyc2lvbn0udGFyLmd6 IgotY2hlY2tzdW09MGIyMjUzODk0YzZmYzg0NTViNmQ3YzVlODdlNjUwNGE3NmQ2ZjYwZWExOTJl MTQ0NWMyZjkzMTY0YmY1MjljMAorY2hlY2tzdW09ODY2NTFiZDI4MDNjOWYwYWZkODI0NzFiZWM3 ODRlNjVkMmI0MThkZWUzMTVhMDUzZDIyMjE1ZWIyYTY3OWJlNwogCiBsaWIzMmRpc2FibGVkPXll cwogCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ludGVsLW1lZGlhLWRyaXZlci9wYXRjaGVzLzAwMDEt TWVkaWEtQ29tbW9uLUVuYWJsZS1NTUMtaW4tZnJlZS1rZXJuZWwtYnVpbGQucGF0Y2ggYi9zcmNw a2dzL2ludGVsLW1lZGlhLWRyaXZlci9wYXRjaGVzLzAwMDEtTWVkaWEtQ29tbW9uLUVuYWJsZS1N TUMtaW4tZnJlZS1rZXJuZWwtYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi41MjVmYjY4ODcyMmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2lu dGVsLW1lZGlhLWRyaXZlci9wYXRjaGVzLzAwMDEtTWVkaWEtQ29tbW9uLUVuYWJsZS1NTUMtaW4t ZnJlZS1rZXJuZWwtYnVpbGQucGF0Y2gKQEAgLTAsMCArMSwxMjUgQEAKK0Zyb20gZTY4ZmVhYjdk YjAzNjgzOGQ5NTIxYmEzYjlmMDA3MTdjMzdjMDI0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IEpheVlhbmcgPGpheS55YW5nQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMjEgTWFyIDIw MjMgMTc6MTc6NTUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gW01lZGlhIENvbW1vbl0gRW5hYmxl IE1NQyBpbiBmcmVlIGtlcm5lbCBidWlsZAorCitBZGQgbW1jIGJ1aWxkIGRlZmluaXRpb24gaW4g ZnJlZSBrZXJuZWwgYnVpbGQKKy0tLQorIG1lZGlhX2RyaXZlci9hZ25vc3RpYy9nZW45L2NvZGVj L2hhbC9tZWRpYV9zcmNzLmNtYWtlICAgICAgICAgIHwgMiArLQorIG1lZGlhX2RyaXZlci9jbWFr ZS9saW51eC9tZWRpYV9mZWF0dXJlX2ZsYWdzX2xpbnV4LmNtYWtlICAgICAgIHwgMyArLS0KKyAu Li4vbWVkaWFfaW50ZXJmYWNlc19tOV9ieHQvbWVkaWFfaW50ZXJmYWNlc19nOV9ieHQuY3BwICAg ICAgICB8IDIgKy0KKyAuLi4vbWVkaWFfaW50ZXJmYWNlc19tOV9jZmwvbWVkaWFfaW50ZXJmYWNl c19nOV9jZmwuY3BwICAgICAgICB8IDIgKy0KKyAuLi4vbWVkaWFfaW50ZXJmYWNlc19tOV9nbGsv bWVkaWFfaW50ZXJmYWNlc19nOV9nbGsuY3BwICAgICAgICB8IDIgKy0KKyAuLi4vbWVkaWFfaW50 ZXJmYWNlc19tOV9rYmwvbWVkaWFfaW50ZXJmYWNlc19nOV9rYmwuY3BwICAgICAgICB8IDIgKy0K KyAuLi4vbWVkaWFfaW50ZXJmYWNlc19tOV9za2wvbWVkaWFfaW50ZXJmYWNlc19nOV9za2wuY3Bw ICAgICAgICB8IDIgKy0KKyA3IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgOCBkZWxl dGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21lZGlhX2RyaXZlci9hZ25vc3RpYy9nZW45L2NvZGVj L2hhbC9tZWRpYV9zcmNzLmNtYWtlIGIvbWVkaWFfZHJpdmVyL2Fnbm9zdGljL2dlbjkvY29kZWMv aGFsL21lZGlhX3NyY3MuY21ha2UKK2luZGV4IDhiYjM2YmFmZS4uNzg5MDJhMjJkIDEwMDY0NAor LS0tIGEvbWVkaWFfZHJpdmVyL2Fnbm9zdGljL2dlbjkvY29kZWMvaGFsL21lZGlhX3NyY3MuY21h a2UKKysrKyBiL21lZGlhX2RyaXZlci9hZ25vc3RpYy9nZW45L2NvZGVjL2hhbC9tZWRpYV9zcmNz LmNtYWtlCitAQCAtMjcsNyArMjcsNyBAQCBzZXQoVE1QXzFfSEVBREVSU18KKyAgICAgJHtDTUFL RV9DVVJSRU5UX0xJU1RfRElSfS9jb2RlY2hhbF9od19nOV9YLmgKKyApCisgCistaWYoJHtNTUNf U3VwcG9ydGVkfSBTVFJFUVVBTCAieWVzIikKKytpZigke01NQ19TdXBwb3J0ZWR9IFNUUkVRVUFM ICJ5ZXMiIEFORCBFTkFCTEVfTk9ORlJFRV9LRVJORUxTIEFORCBFTkFCTEVfS0VSTkVMUykKKyAg ICAgc2V0KFRNUF8xX1NPVVJDRVNfCisgICAgICAgICAke1RNUF8xX1NPVVJDRVNffQorICAgICAg ICAgJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9jb2RlY2hhbF9tZW1kZWNvbXBfZzkuY3BwCitk aWZmIC0tZ2l0IGEvbWVkaWFfZHJpdmVyL2NtYWtlL2xpbnV4L21lZGlhX2ZlYXR1cmVfZmxhZ3Nf bGludXguY21ha2UgYi9tZWRpYV9kcml2ZXIvY21ha2UvbGludXgvbWVkaWFfZmVhdHVyZV9mbGFn c19saW51eC5jbWFrZQoraW5kZXggZGUwY2E4NTNmLi44MTIxZWE2MGMgMTAwNjQ0CistLS0gYS9t ZWRpYV9kcml2ZXIvY21ha2UvbGludXgvbWVkaWFfZmVhdHVyZV9mbGFnc19saW51eC5jbWFrZQor KysrIGIvbWVkaWFfZHJpdmVyL2NtYWtlL2xpbnV4L21lZGlhX2ZlYXR1cmVfZmxhZ3NfbGludXgu Y21ha2UKK0BAIC0zNSw3ICszNSw2IEBAIGlmKE5PVCBFTkFCTEVfS0VSTkVMUyBPUiBOT1QgRU5B QkxFX05PTkZSRUVfS0VSTkVMUykKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChIRVZDX0VuY29k ZV9WTUVfU3VwcG9ydGVkICJubyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoTVBFRzJfRW5j b2RlX1ZNRV9TdXBwb3J0ZWQgIm5vIikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChDTVJUX0hF VkNfRU5DX0ZFSV9TdXBwb3J0ZWQgIm5vIikKKy0gICAgYnNfc2V0X2lmX3VuZGVmaW5lZChNTUNf U3VwcG9ydGVkICJubyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoVkMxX0RlY29kZV9TdXBw b3J0ZWQgIm5vIikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChEZWNvZGVfUHJvY2Vzc2luZ19T dXBwb3J0ZWQgIm5vIikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChLZXJuZWxfQXV0b19EZW5v aXNlX1N1cHBvcnRlZCAibm8iKQorQEAgLTQ2LDcgKzQ1LDYgQEAgZWxzZSgpCisgICAgIGJzX3Nl dF9pZl91bmRlZmluZWQoSEVWQ19FbmNvZGVfVk1FX1N1cHBvcnRlZCAiJHtFbmNvZGVfVk1FX1N1 cHBvcnRlZH0iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKE1QRUcyX0VuY29kZV9WTUVfU3Vw cG9ydGVkICIke0VuY29kZV9WTUVfU3VwcG9ydGVkfSIpCisgICAgIGJzX3NldF9pZl91bmRlZmlu ZWQoQ01SVF9IRVZDX0VOQ19GRUlfU3VwcG9ydGVkICJ5ZXMiKQorLSAgICBic19zZXRfaWZfdW5k ZWZpbmVkKE1NQ19TdXBwb3J0ZWQgInllcyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoVkMx X0RlY29kZV9TdXBwb3J0ZWQgInllcyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoRGVjb2Rl X1Byb2Nlc3NpbmdfU3VwcG9ydGVkICJ5ZXMiKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKEtl cm5lbF9BdXRvX0Rlbm9pc2VfU3VwcG9ydGVkICJ5ZXMiKQorQEAgLTY0LDYgKzYyLDcgQEAgYnNf c2V0X2lmX3VuZGVmaW5lZChWUDlfRGVjb2RlX1N1cHBvcnRlZCAieWVzIikKKyBic19zZXRfaWZf dW5kZWZpbmVkKFZQX1NGQ19TdXBwb3J0ZWQgInllcyIpCisgYnNfc2V0X2lmX3VuZGVmaW5lZChD b21tb25fRW5jb2RlX1N1cHBvcnRlZCAieWVzIikKKyBic19zZXRfaWZfdW5kZWZpbmVkKE1lZGlh X1NjYWxhYmlsaXR5X1N1cHBvcnRlZCAieWVzIikKKytic19zZXRfaWZfdW5kZWZpbmVkKE1NQ19T dXBwb3J0ZWQgInllcyIpCisgCisgIyBmZWF0dXJlcyBjb250cm9sbGVkIGJ5IGdsb2JhbCBmbGFn IEVuY29kZV9WREVuY19TdXBwb3J0ZWQKKyBic19zZXRfaWZfdW5kZWZpbmVkKEFWQ19FbmNvZGVf VkRFbmNfU3VwcG9ydGVkICIke0VuY29kZV9WREVuY19TdXBwb3J0ZWR9IikKK2RpZmYgLS1naXQg YS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfYnh0L21l ZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNwcCBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2Uv bWVkaWFfaW50ZXJmYWNlc19tOV9ieHQvbWVkaWFfaW50ZXJmYWNlc19nOV9ieHQuY3BwCitpbmRl eCAzZjMwNmVlMmEuLjhlNGMwZjUzMiAxMDA2NDQKKy0tLSBhL21lZGlhX2RyaXZlci9tZWRpYV9p bnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9ieHQvbWVkaWFfaW50ZXJmYWNlc19nOV9ieHQu Y3BwCisrKysgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNf bTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNwcAorQEAgLTEzNSw3ICsxMzUsNyBAQCBN T1NfU1RBVFVTIE1od0ludGVyZmFjZXNHOUJ4dDo6SW5pdGlhbGl6ZSgKKyAKKyAgICAgcmV0dXJu IE1PU19TVEFUVVNfU1VDQ0VTUzsKKyB9CistI2lmZGVmIF9NTUNfU1VQUE9SVEVECisrI2lmIGRl ZmluZWQoX01NQ19TVVBQT1JURUQpICYmIGRlZmluZWQoRU5BQkxFX0tFUk5FTFMpICYmICFkZWZp bmVkKF9GVUxMX09QRU5fU09VUkNFKQorIHN0YXRpYyBib29sIGJ4dFJlZ2lzdGVyZWRNbWQgPQor ICAgICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1tZERldmljZT46OgorICAgICBSZWdpc3RlcjxN bWREZXZpY2VHOUJ4dD4oKHVpbnQzMl90KUlHRlhfQlJPWFRPTik7CitkaWZmIC0tZ2l0IGEvbWVk aWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2NmbC9tZWRpYV9p bnRlcmZhY2VzX2c5X2NmbC5jcHAgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlh X2ludGVyZmFjZXNfbTlfY2ZsL21lZGlhX2ludGVyZmFjZXNfZzlfY2ZsLmNwcAoraW5kZXggYjhm YTFlZWMwLi44NGUwZmFkMWQgMTAwNjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJm YWNlL21lZGlhX2ludGVyZmFjZXNfbTlfY2ZsL21lZGlhX2ludGVyZmFjZXNfZzlfY2ZsLmNwcAor KysrIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2Nm bC9tZWRpYV9pbnRlcmZhY2VzX2c5X2NmbC5jcHAKK0BAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBi b29sIGNmbFJlZ2lzdGVyZWRNaHcgPQorICAgICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1od0lu dGVyZmFjZXM+OjoKKyAgICAgUmVnaXN0ZXI8TWh3SW50ZXJmYWNlc0c5S2JsPigodWludDMyX3Qp SUdGWF9DT0ZGRUVMQUtFKTsKKyAKKy0jaWZkZWYgX01NQ19TVVBQT1JURUQKKysjaWYgZGVmaW5l ZChfTU1DX1NVUFBPUlRFRCkgJiYgZGVmaW5lZChFTkFCTEVfS0VSTkVMUykgJiYgIWRlZmluZWQo X0ZVTExfT1BFTl9TT1VSQ0UpCisgc3RhdGljIGJvb2wgY2ZsUmVnaXN0ZXJlZE1tZCA9CisgICAg IE1lZGlhRmFjdG9yeTx1aW50MzJfdCwgTW1kRGV2aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1tZERl dmljZUc5S2JsPigodWludDMyX3QpSUdGWF9DT0ZGRUVMQUtFKTsKK2RpZmYgLS1naXQgYS9tZWRp YV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfZ2xrL21lZGlhX2lu dGVyZmFjZXNfZzlfZ2xrLmNwcCBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFf aW50ZXJmYWNlc19tOV9nbGsvbWVkaWFfaW50ZXJmYWNlc19nOV9nbGsuY3BwCitpbmRleCBkZTgx ZTYwOTEuLjI2MzhjYjNhNiAxMDA2NDQKKy0tLSBhL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZh Y2UvbWVkaWFfaW50ZXJmYWNlc19tOV9nbGsvbWVkaWFfaW50ZXJmYWNlc19nOV9nbGsuY3BwCisr KysgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfZ2xr L21lZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNwcAorQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIGJv b2wgZ2xrUmVnaXN0ZXJlZE1odyA9CisgICAgIE1lZGlhRmFjdG9yeTx1aW50MzJfdCwgTWh3SW50 ZXJmYWNlcz46OgorICAgICBSZWdpc3RlcjxNaHdJbnRlcmZhY2VzRzlLYmw+KCh1aW50MzJfdClJ R0ZYX0dFTUlOSUxBS0UpOworIAorLSNpZmRlZiBfTU1DX1NVUFBPUlRFRAorKyNpZiBkZWZpbmVk KF9NTUNfU1VQUE9SVEVEKSAmJiBkZWZpbmVkKEVOQUJMRV9LRVJORUxTKSAmJiAhZGVmaW5lZChf RlVMTF9PUEVOX1NPVVJDRSkKKyBzdGF0aWMgYm9vbCBnbGtSZWdpc3RlcmVkTW1kID0KKyAgICAg TWVkaWFGYWN0b3J5PHVpbnQzMl90LCBNbWREZXZpY2U+OjoKKyAgICAgUmVnaXN0ZXI8TW1kRGV2 aWNlRzlLYmw+KCh1aW50MzJfdClJR0ZYX0dFTUlOSUxBS0UpOworZGlmZiAtLWdpdCBhL21lZGlh X2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9rYmwvbWVkaWFfaW50 ZXJmYWNlc19nOV9rYmwuY3BwIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9p bnRlcmZhY2VzX205X2tibC9tZWRpYV9pbnRlcmZhY2VzX2c5X2tibC5jcHAKK2luZGV4IDk5ZDc4 NjE4NS4uNGU5YzZlN2YxIDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFj ZS9tZWRpYV9pbnRlcmZhY2VzX205X2tibC9tZWRpYV9pbnRlcmZhY2VzX2c5X2tibC5jcHAKKysr KyBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9rYmwv bWVkaWFfaW50ZXJmYWNlc19nOV9rYmwuY3BwCitAQCAtMTMxLDcgKzEzMSw3IEBAIE1PU19TVEFU VVMgTWh3SW50ZXJmYWNlc0c5S2JsOjpJbml0aWFsaXplKAorIAorICAgICByZXR1cm4gTU9TX1NU QVRVU19TVUNDRVNTOworIH0KKy0jaWZkZWYgX01NQ19TVVBQT1JURUQKKysjaWYgZGVmaW5lZChf TU1DX1NVUFBPUlRFRCkgJiYgZGVmaW5lZChFTkFCTEVfS0VSTkVMUykgJiYgIWRlZmluZWQoX0ZV TExfT1BFTl9TT1VSQ0UpCisgc3RhdGljIGJvb2wga2JsUmVnaXN0ZXJlZE1tZCA9CisgICAgIE1l ZGlhRmFjdG9yeTx1aW50MzJfdCwgTW1kRGV2aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1tZERldmlj ZUc5S2JsPigodWludDMyX3QpSUdGWF9LQUJZTEFLRSk7CitkaWZmIC0tZ2l0IGEvbWVkaWFfZHJp dmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X3NrbC9tZWRpYV9pbnRlcmZh Y2VzX2c5X3NrbC5jcHAgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVy ZmFjZXNfbTlfc2tsL21lZGlhX2ludGVyZmFjZXNfZzlfc2tsLmNwcAoraW5kZXggZTI1MjBlZGY3 Li40YjAwMTJjNjQgMTAwNjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21l ZGlhX2ludGVyZmFjZXNfbTlfc2tsL21lZGlhX2ludGVyZmFjZXNfZzlfc2tsLmNwcAorKysrIGIv bWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X3NrbC9tZWRp YV9pbnRlcmZhY2VzX2c5X3NrbC5jcHAKK0BAIC0xMzksNyArMTM5LDcgQEAgTU9TX1NUQVRVUyBN aHdJbnRlcmZhY2VzRzlTa2w6OkluaXRpYWxpemUoCisgCisgICAgIHJldHVybiBNT1NfU1RBVFVT X1NVQ0NFU1M7CisgfQorLSNpZmRlZiBfTU1DX1NVUFBPUlRFRAorKyNpZiBkZWZpbmVkKF9NTUNf U1VQUE9SVEVEKSAmJiBkZWZpbmVkKEVOQUJMRV9LRVJORUxTKSAmJiAhZGVmaW5lZChfRlVMTF9P UEVOX1NPVVJDRSkKKyBzdGF0aWMgYm9vbCBza2xSZWdpc3RlcmVkTW1kID0KKyAgICAgTWVkaWFG YWN0b3J5PHVpbnQzMl90LCBNbWREZXZpY2U+OjoKKyAgICAgUmVnaXN0ZXI8TW1kRGV2aWNlRzlT a2w+KCh1aW50MzJfdClJR0ZYX1NLWUxBS0UpOworLS0gCisyLjQwLjAKKwpkaWZmIC0tZ2l0IGEv c3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2ludGVsLW1lZGlh LWRyaXZlci90ZW1wbGF0ZQppbmRleCBhNWJhYjA2YWM5NDcuLjE3MzViOTBjNjVjZSAxMDA2NDQK LS0tIGEvc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9p bnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdpbnRlbC1tZWRpYS1kcml2ZXInCiBwa2duYW1lPWludGVsLW1lZGlhLWRyaXZlcgot dmVyc2lvbj0yMi41LjMKK3ZlcnNpb249MjIuNi40CiByZXZpc2lvbj0xCiBhcmNocz0ieDg2XzY0 KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCkBAIC04LDExICs4LDExIEBAIGNvbmZpZ3VyZV9hcmdzPSIt V25vLWRldiAtREVOQUJMRV9OT05GUkVFX0tFUk5FTFM9JCh2b3B0X2lmIG5vbmZyZWUgT04gT0ZG KSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJsaWJ2YS1kZXZl bCBsaWJYMTEtZGV2ZWwgaW50ZWwtZ21tbGliLWRldmVsIGxpYnBjaWFjY2Vzcy1kZXZlbCIKIHNo b3J0X2Rlc2M9IkludGVsIE1lZGlhIERyaXZlciBmb3IgVkFBUEkgKEJyb2Fkd2VsbCspIgotbWFp bnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKK21haW50YWluZXI9IlN0 ZWZhbm8gUmFnbmkgPHN0M3I0Z0Bwcm90b25tYWlsLmNvbT4iCiBsaWNlbnNlPSJNSVQsIEJTRC0z LUNsYXVzZSIKIGhvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVy IgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVyL2FyY2hp dmUvaW50ZWwtbWVkaWEtJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT02NTY1MmIzNjVkNDhi ZTNjOWYwYjNjNTYxNTAyOTUyYjkyZWU1ZmNjNTg3NTIwYjg4ZDBkNzUyY2YyYTZhM2I1CitjaGVj a3N1bT0wYzA0YjlkNzRiOTJkZTQxZmQ0MDliNjI5MTNjZTRhZmQ3OTkyMzZjMGI2YmMxOTgzYTQ5 Njk5MDc2NGU1ZDkwCiAKIGJ1aWxkX29wdGlvbnM9Im5vbmZyZWUiCiBkZXNjX29wdGlvbl9ub25m cmVlPSJFbmFibGUgbm9uZnJlZSBrZXJuZWxzIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1t ZWRpYS1zZGsvcGF0Y2hlcy9tdXNsLnBhdGNoIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvcGF0 Y2hlcy9tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u NGFlNzA5MjRiNzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsv cGF0Y2hlcy9tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMTQgQEAKKy0tLSBhL3Rvb2xzL3RyYWNlci90 cmFjZXIvdHJhY2VyX2xpbnV4LmNwcAkyMDIyLTExLTE4IDAzOjAyOjU5LjAwMDAwMDAwMCAtMDUw MAorKysrIGIvdG9vbHMvdHJhY2VyL3RyYWNlci90cmFjZXJfbGludXguY3BwCTIwMjItMTItMTgg MDE6NDQ6NTEuMzQxNTQyNTcyIC0wNTAwCitAQCAtMzIsNiArMzIsMTEgQEAKKyAjaW5jbHVkZSA8 ZGxmY24uaD4KKyAjaW5jbHVkZSAidHJhY2VyLmgiCisKKysjaWZuZGVmIFJUTERfREVFUEJJTkQK KysvLyBtdXNsIG5laXRoZXIgZGVmaW5lcyBub3IgY2FuIHVzZSBSVExEX0RFRVBCSU5ECisrI2Rl ZmluZSBSVExEX0RFRVBCSU5EIDAKKysjZW5kaWYKKysKKyAjaWYgZGVmaW5lZChfX2kzODZfXykK KyAgICAgI2RlZmluZSBMSUJNRlhIVyAibGlibWZ4aHczMi5zby4xIgorICNlbGlmIGRlZmluZWQo X194ODZfNjRfXykKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW50ZWwtbWVkaWEtc2RrL3RlbXBsYXRl IGIvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi43YWVhYjUxODAyZjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL2ludGVsLW1lZGlhLXNkay90ZW1wbGF0ZQpAQCAtMCwwICsxLDM3IEBACisjIFRlbXBsYXRl IGZpbGUgZm9yICdpbnRlbC1tZWRpYS1zZGsnCitwa2duYW1lPWludGVsLW1lZGlhLXNkawordmVy c2lvbj0yMi42LjQKK3JldmlzaW9uPTEKK2FyY2hzPSJ4ODZfNjQqIgorYnVpbGRfc3R5bGU9Y21h a2UKK2NvbmZpZ3VyZV9hcmdzPSItV25vLWRldiAtREJVSUxEX1NBTVBMRVM9T0ZGIC1EQlVJTERf VEVTVFM9T04iCitob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCittYWtlZGVwZW5kcz0ibGli dmEtZGV2ZWwgbGliZHJtLWRldmVsIGludGVsLWdtbWxpYi1kZXZlbCIKK3Nob3J0X2Rlc2M9Iklu dGVsIE1lZGlhIFNESyIKK21haW50YWluZXI9IlN0ZWZhbm8gUmFnbmkgPHN0M3I0Z0Bwcm90b25t YWlsLmNvbT4iCitsaWNlbnNlPSJNSVQsIEJTRC0zLUNsYXVzZSIKK2hvbWVwYWdlPSJodHRwczov L2dpdGh1Yi5jb20vSW50ZWwtTWVkaWEtU0RLL01lZGlhU0RLIgorZGlzdGZpbGVzPSJodHRwczov L2dpdGh1Yi5jb20vSW50ZWwtTWVkaWEtU0RLL01lZGlhU0RLL2FyY2hpdmUvcmVmcy90YWdzL2lu dGVsLW1lZGlhc2RrLSR7dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09MTk3YWNkMDU2ZjgxZTlm ZjFjMjcwNjhkNTBlOGM4NGMyMDE0ZDk0YzdhYzE3Y2FkNjlkNWMyZDYxZTQ0NWZkMworCitwb3N0 X2luc3RhbGwoKSB7CisJdmxpY2Vuc2UgTElDRU5TRQorfQorCitsaWJtZnhfcGFja2FnZSgpIHsK KwlkZXBlbmRzPSIke21ha2VkZXBlbmRzfSAke3NvdXJjZXBrZ30tJHt2ZXJzaW9ufV8ke3Jldmlz aW9ufSIKKwlzaG9ydF9kZXNjPSJJbnRlbCBNZWRpYVNESyBtZnggbGliIgorCXBrZ19pbnN0YWxs KCkgeworCQl2bW92ZSB1c3IvbGliL21meAorCQl2bW92ZSAidXNyL2xpYi9saWJtZngqLnNvKiIK Kwl9Cit9CisKK2xpYm1meC1kZXZlbF9wYWNrYWdlKCkgeworCWRlcGVuZHM9IiR7bWFrZWRlcGVu ZHN9ICR7c291cmNlcGtnfS0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXNob3J0X2Rlc2MrPSIg LSBkZXZlbG9wbWVudCBmaWxlcyIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2luY2x1 ZGUKKwkJdm1vdmUgdXNyL2xpYi9wa2djb25maWcKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmNwa2dz L2ludGVsLW1lZGlhLXNkay91cGRhdGUgYi9zcmNwa2dzL2ludGVsLW1lZGlhLXNkay91cGRhdGUK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40MzRhMmJjNjdmN2EKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ludGVsLW1lZGlhLXNkay91cGRhdGUKQEAgLTAsMCAr MSBAQAorcGtnbmFtZT1pbnRlbC1tZWRpYQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbmV2cGwtZGV2 ZWwgYi9zcmNwa2dzL29uZXZwbC1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAw MDAwMDAwMDAuLmUyMzA2NTAwYjQ4NwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mvb25ldnBs LWRldmVsCkBAIC0wLDAgKzEgQEAKK29uZXZwbApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS1kZXZlbCBiL3NyY3BrZ3Mvb25l dnBsLWludGVsLWdwdS1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAw MDAuLjQ3OTIwY2VlY2Y5MQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mvb25ldnBsLWludGVs LWdwdS1kZXZlbApAQCAtMCwwICsxIEBACitvbmV2cGwtaW50ZWwtZ3B1ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1L3RlbXBs YXRlIGIvc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1L3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjE0YWNiNzI4YTU0Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1L3RlbXBsYXRlCkBAIC0wLDAgKzEsMjcgQEAKKyMgVGVt cGxhdGUgZmlsZSBmb3IgJ29uZXZwbC1pbnRlbC1ncHUnCitwa2duYW1lPW9uZXZwbC1pbnRlbC1n cHUKK3ZlcnNpb249MjIuNi40CityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0 eWxlPWNtYWtlCitjb25maWd1cmVfYXJncz0iLVduby1kZXYgLURDTUFLRV9CVUlMRF9UWVBFPVJl bGVhc2UiCitob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHBrZy1jb25maWciCittYWtlZGVwZW5kcz0i bGliZHJtLWRldmVsIGxpYnZhLWRldmVsIG9uZXZwbC1kZXZlbCIKK3Nob3J0X2Rlc2M9IlJ1bnRp bWUgaW1wbGVtZW50YXRpb24gb2Ygb25lVlBMIEFQSSBmb3IgSW50ZWwgR2VuIEdQVXMiCittYWlu dGFpbmVyPSJ6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPiIKK2xpY2Vuc2U9Ik1JVCIKK2hvbWVw YWdlPSJodHRwczovL2dpdGh1Yi5jb20vb25lYXBpLXNyYy9vbmVWUEwtaW50ZWwtZ3B1IgorY2hh bmdlbG9nPSJodHRwczovL2dpdGh1Yi5jb20vb25lYXBpLXNyYy9vbmVWUEwtaW50ZWwtZ3B1L2Js b2IvbWFpbi9DSEFOR0VMT0cubWQiCitkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9vbmVh cGktc3JjL29uZVZQTC1pbnRlbC1ncHUvYXJjaGl2ZS9yZWZzL3RhZ3MvaW50ZWwtb25ldnBsLSR7 dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09NzRiMDk3OWRjYjJhZjFiN2M2OGVkYjhjYmNiMDJk NTM5ZGU1MTEwOTBiMTJmYWM1MDY1MmNiYWNkNzA3YzRlNgorCitwb3N0X2luc3RhbGwoKSB7CisJ dmxpY2Vuc2UgTElDRU5TRQorfQorCitvbmV2cGwtaW50ZWwtZ3B1LWRldmVsX3BhY2thZ2UoKSB7 CisJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgorCXBrZ19pbnN0YWxsKCkgewor CQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCX0KK30KZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb25l dnBsL3RlbXBsYXRlIGIvc3JjcGtncy9vbmV2cGwvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NWM3YzJkYTg1Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL29uZXZwbC90ZW1wbGF0ZQpAQCAtMCwwICsxLDM0IEBACisjIFRlbXBsYXRlIGZpbGUg Zm9yICdvbmV2cGwnCitwa2duYW1lPW9uZXZwbAordmVyc2lvbj0yMDIzLjEuMgorcmV2aXNpb249 MQorYXJjaHM9Ing4Nl82NCoiCitidWlsZF9zdHlsZT1jbWFrZQorY29uZmlndXJlX2FyZ3M9Igor CS1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIC1Xbm8tZGV2CisJLURCVUlMRF9QWVRIT05fQklO RElORzpCT09MPSdPRkYnCisJLURCVUlMRF9FWEFNUExFUzpCT09MPSdPRkYnCisJLURCVUlMRF9U RVNUUzpCT09MPSdPTicKKwktRElOU1RBTExfRVhBTVBMRV9DT0RFOkJPT0w9J09GRiciCitob3N0 bWFrZWRlcGVuZHM9ImNtYWtlIGxpYlgxMSBweXRob24gd2F5bGFuZC1wcm90b2NvbHMgcGtnLWNv bmZpZyIKK21ha2VkZXBlbmRzPSJsaWJ2YS1kZXZlbCBsaWJYMTEtZGV2ZWwgd2F5bGFuZC1kZXZl bCIKK3Nob3J0X2Rlc2M9IkludGVsIG9uZUFQSSBWaWRlbyBQcm9jZXNzaW5nIGxpYnJhcnkiCitt YWludGFpbmVyPSJ6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPiIKK2xpY2Vuc2U9Ik1JVCIKK2hv bWVwYWdlPSJodHRwczovL3d3dy5pbnRlbC5jb20vY29udGVudC93d3cvdXMvZW4vZGV2ZWxvcGVy L3Rvb2xzL29uZWFwaS9vbmV2cGwuaHRtbCIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29t L29uZWFwaS1zcmMvb25lVlBML2FyY2hpdmUvdiR7dmVyc2lvbn0vJHtwa2duYW1lfS0ke3ZlcnNp b259LnRhci5neiIKK2NoZWNrc3VtPWIyMjYxY2NhMTc0Y2UxODE1ZjNkNDdjNjQ3OTIxYWIxN2Y2 ODI2N2M2OWMxZTI0NDRmZjI3YWFiN2QxOTljYmIKKworcG9zdF9pbnN0YWxsKCkgeworCXZsaWNl bnNlIExJQ0VOU0UKK30KKworb25ldnBsLWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iJHtt YWtlZGVwZW5kc30gJHtzb3VyY2Vwa2d9LSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJc2hvcnRf ZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1 c3IvaW5jbHVkZQorCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCQl2bW92ZSAidXNyL2xpYi8q LnNvIgorCX0KK30KCkZyb20gMTUwNmFkYzcwMGE0MjgxOWJmOWE1NWIxNDBlYmZmMGJhOTQ2MGVk NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogU2F0LCA4IEp1bCAyMDIzIDIwOjIwOjU5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAx MTEvMTE1XSB0cmFja2VyLW1pbmVyczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNw a2dzL3RyYWNrZXItbWluZXJzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90cmFja2VyLW1p bmVycy90ZW1wbGF0ZSBiL3NyY3BrZ3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUKaW5kZXggYTZl NWFhNTc3NzAyLi5hYTBmNDQzOTI3Y2QgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdHJhY2tlci1taW5l cnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90cmFja2VyLW1pbmVycy90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3RyYWNrZXItbWluZXJzJwogcGtnbmFtZT10 cmFja2VyLW1pbmVycwogdmVyc2lvbj0zLjUuMAotcmV2aXNpb249NAorcmV2aXNpb249NQogYnVp bGRfc3R5bGU9bWVzb24KIGJ1aWxkX2hlbHBlcj1xZW11CiAjIG1pc3NpbmcgbGliZ3JzcyBmb3Ig bWluZXJfcnNzCgpGcm9tIGY5Mjc1ZjBkYmJkOGQxMzJlNGQ3MmQ5MmM1NDNkMTRjYjYzZTkzMjcg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgOCBKdWwgMjAyMyAyMDoyMToyMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTEy LzExNV0gbXBkOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbXBkL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tcGQvdGVtcGxhdGUgYi9zcmNwa2dzL21wZC90ZW1wbGF0 ZQppbmRleCA5ZjA1OGI2MmRmMmYuLjBkYzQ3ZGQyYTNlOCAxMDA2NDQKLS0tIGEvc3JjcGtncy9t cGQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tcGQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdtcGQnCiBwa2duYW1lPW1wZAogdmVyc2lvbj0wLjIzLjEzCi1y ZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9 Ii1Eb3B1cz1lbmFibGVkIC1EbWlrbW9kPWVuYWJsZWQgLURuZWlnaGJvcj10cnVlCiAgLURzb3Vu ZGNsb3VkPWVuYWJsZWQgLURwaXBlPXRydWUgLUR0d29sYW1lPWVuYWJsZWQgLURiemlwMj1lbmFi bGVkCgpGcm9tIDFlYjFkYzkwYzkxOTM0ODE1OWVmNGU5MDA5ZGE1MGY1YWQ0Yzg3YTYgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFNhdCwgOCBKdWwgMjAyMyAyMDoyNzoxNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTEzLzExNV0g bG1zOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbG1zL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9sbXMvdGVtcGxhdGUgYi9zcmNwa2dzL2xtcy90ZW1wbGF0ZQppbmRl eCBkMjBhZTFlYzFmYzguLjY5MWFkNzNhODQwYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9sbXMvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9sbXMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdsbXMnCiBwa2duYW1lPWxtcwogdmVyc2lvbj0zLjQwLjAKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWciCiBtYWtlZGVwZW5kcz0id3QtZGV2ZWwgZmZtcGVnLWRldmVsIGJvb3N0LWRldmVsIGxp YmNvbmZpZysrLWRldmVsIHRhZ2xpYi1kZXZlbCBwYW0tZGV2ZWwgbGliZ3JhcGhpY3NtYWdpY2st ZGV2ZWwgZ3Rlc3QtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbCIKCkZyb20gNTNjYjk4ZGE4MWYzYjIy ZGI2ZGQyNGJlMGFjZGVjZjYwYmE2Zjk1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAxNyBKdWwgMjAyMyAxNTozNzo0 NCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTE0LzExNV0gbWl4eHg6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9taXh4eC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWl4 eHgvdGVtcGxhdGUgYi9zcmNwa2dzL21peHh4L3RlbXBsYXRlCmluZGV4IDRiOWVhMDBkM2ZiMy4u YTg2MWQxMWE0ODcyIDEwMDY0NAotLS0gYS9zcmNwa2dzL21peHh4L3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvbWl4eHgvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdtaXh4eCcKIHBrZ25hbWU9bWl4eHgKIHZlcnNpb249Mi4zLjMKLXJldmlzaW9uPTIKK3Jldmlz aW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURDTUFLRV9CVUlMRF9U WVBFPVJlbGVhc2UiCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMgcGtnLWNv bmZpZyBwcm90b2J1ZiBxdDUtaG9zdC10b29scyBxdDUtZGV2ZWwiCgpGcm9tIDg4NWYwZmUxMjNm MDZiZjEwMDQwYjg5YmQ4MzYyMDVmYmE2ZGYyZjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTcgSnVsIDIwMjMgMTU6 Mzg6MTQgLTA0MDAKU3ViamVjdDogW1BBVENIIDExNS8xMTVdIHRlbGVncmFtLWRlc2t0b3A6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlIGIvc3JjcGtn cy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlCmluZGV4IDlkYjlmODBjMWE1My4uY2M1Y2RhNTMx Mjg1IDEwMDY0NAotLS0gYS9zcmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUKKysrIGIv c3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAndGVsZWdyYW0tZGVza3RvcCcKIHBrZ25hbWU9dGVsZWdyYW0tZGVza3Rv cAogdmVyc2lvbj00LjguMQotcmV2aXNpb249NAorcmV2aXNpb249NQogYnVpbGRfc3R5bGU9Y21h a2UKIGJ1aWxkX2hlbHBlcj0icWVtdSIKIGNvbmZpZ3VyZV9hcmdzPSItRFRERVNLVE9QX0FQSV9J RD0yMDkyMzUK --===============8154267153615280988==--